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 B5B42C54E58 for ; Tue, 12 Mar 2024 06:04:30 +0000 (UTC) Received: from localhost ([::1] helo=lists1p.gnu.org) by lists.gnu.org with esmtp (Exim 4.90_1) (envelope-from ) id 1rjvEa-0002Yb-5j; Tue, 12 Mar 2024 02:03:32 -0400 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 1rjvEY-0002YM-PU for qemu-devel@nongnu.org; Tue, 12 Mar 2024 02:03:30 -0400 Received: from mail-wr1-x42f.google.com ([2a00:1450:4864:20::42f]) by eggs.gnu.org with esmtps (TLS1.2:ECDHE_RSA_AES_128_GCM_SHA256:128) (Exim 4.90_1) (envelope-from ) id 1rjvEV-00025G-Nj for qemu-devel@nongnu.org; Tue, 12 Mar 2024 02:03:30 -0400 Received: by mail-wr1-x42f.google.com with SMTP id ffacd0b85a97d-33ddd1624beso3028167f8f.1 for ; Mon, 11 Mar 2024 23:03:27 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=linaro.org; s=google; t=1710223406; x=1710828206; 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=la5uahgYfpAIoBSwMJ/aKkV37H7BMNQlyAKDOiRG7BQ=; b=n5jHuG/mraPUOPl9M+Y0fSe2lOUTctN2saY9S6rmdA3amHCdMEM9pOBPPnVuq5LDIW 52SmenUSFaDjblyTbxlkH1PkBqiP5YKb5cE0tcnTxw9108bRYO2MC3r9S5i7p+SCEiSA n3/ePam/8/a5bGS9Yb0J7eJLBPEgaatvPARkQGcmqFoC58AU34qG1Dh4dPwwE0kXF26/ mxXea4T2K8Uv7e7KeEknvTe5NAzhnivelDMhKTDtqkaR+ce4I218RXOQv5yhzeeF4fv+ vJnIxTUNWSrAYDVbCviXPddOm5BqfHO9/+8b24cmpXryqUXUo2GO8fdd8zWALKZmPGXn 1Qcw== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20230601; t=1710223406; x=1710828206; 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=la5uahgYfpAIoBSwMJ/aKkV37H7BMNQlyAKDOiRG7BQ=; b=hmfJIdWsKkZVRqrwv/V/v/HnsCGD6Yewd2pkzrRJcMwpLp/3UYvae4OSqjYBS1t1G1 8WhtyzKic973ZecCiAERU2oor1CCfX9Fpgj+XdFkOYkLRCzbX5DBZvbpr/oRrAjX4jvX 0glgIfc8jgeQlqxqLNN+1kkRjIMMn58SvZ1z4y9DNn87PybQeDqJG+Nfdb8HzIOyWMNa FIpFfHUZ0VAoKj3qPTV582aFeD05eLxclgFp2hkA9QHm4fWC7+s3QVvt1syY3nXbLblw +n3rreEh2bcLGj3bZTG3NTmZ/C/q7Mijw9FQCR5uuAzOViYPv24Q+SuQngoyQ1Z6JBpH 3NaA== X-Gm-Message-State: AOJu0YzMBp6lN3nKFKgo8kBcVSd9TiZ0oGv8ynaNFHuvqEu3kC65d1LI 4ABOsSiJZlCyUlwV9hAhVe169kn+e8Ed/+DCPiv88A+9cCSuFd4JgfxzgdCFKDs= X-Google-Smtp-Source: AGHT+IF5FLlUOCjrcfKu2P07AcUZTgYZYeN/mYtETJGC0jOCML5raNsoXW3qywhIBsRNbnmbAO31jg== X-Received: by 2002:adf:cf07:0:b0:33d:82d3:42ff with SMTP id o7-20020adfcf07000000b0033d82d342ffmr7028976wrj.21.1710223405831; Mon, 11 Mar 2024 23:03:25 -0700 (PDT) Received: from [192.168.1.24] ([102.35.208.160]) by smtp.gmail.com with ESMTPSA id c11-20020adfe70b000000b0033e41e1ad93sm8112889wrm.57.2024.03.11.23.03.23 (version=TLS1_3 cipher=TLS_AES_128_GCM_SHA256 bits=128/128); Mon, 11 Mar 2024 23:03:25 -0700 (PDT) Message-ID: Date: Tue, 12 Mar 2024 10:03:21 +0400 MIME-Version: 1.0 User-Agent: Mozilla Thunderbird Subject: Re: [PATCH 4/5] plugins: conditional callbacks Content-Language: en-US To: =?UTF-8?Q?Alex_Benn=C3=A9e?= Cc: qemu-devel@nongnu.org, Mahmoud Mandour , Paolo Bonzini , Alexandre Iooss , Richard Henderson References: <20240229055359.972151-1-pierrick.bouvier@linaro.org> <20240229055359.972151-5-pierrick.bouvier@linaro.org> <87bk7lqdw0.fsf@draig.linaro.org> From: Pierrick Bouvier In-Reply-To: <87bk7lqdw0.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::42f; envelope-from=pierrick.bouvier@linaro.org; helo=mail-wr1-x42f.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 T24gMy8xMS8yNCAxNDowOCwgQWxleCBCZW5uw6llIHdyb3RlOg0KPiBQaWVycmljayBCb3V2 aWVyIDxwaWVycmljay5ib3V2aWVyQGxpbmFyby5vcmc+IHdyaXRlczoNCj4gDQo+PiBFeHRl bmQgcGx1Z2lucyBBUEkgdG8gc3VwcG9ydCBjYWxsYmFjayBjYWxsZWQgd2l0aCBhIGdpdmVu IGNyaXRlcmlhDQo+PiAoZXZhbHVhdGVkIGlubGluZSkuDQo+Pg0KPj4gQWRkZWQgZnVuY3Rp b25zOg0KPj4gLSBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X3RiX2V4ZWNfY29uZF9jYg0K Pj4gLSBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X2luc25fZXhlY19jb25kX2NiDQo+Pg0K Pj4gVGhleSBleHBlY3QgYXMgcGFyYW1ldGVyIGEgY29uZGl0aW9uLCBhIHFlbXVfcGx1Z2lu X3U2NF90IChvcDEpIGFuZCBhbg0KPj4gaW1tZWRpYXRlIChvcDIpLiBDYWxsYmFjayBpcyBj YWxsZWQgaWYgb3AxIHxjb25kfCBvcDIgaXMgdHJ1ZS4NCj4+DQo+PiBTaWduZWQtb2ZmLWJ5 OiBQaWVycmljayBCb3V2aWVyIDxwaWVycmljay5ib3V2aWVyQGxpbmFyby5vcmc+DQo+PiAt LS0NCj4+ICAgaW5jbHVkZS9xZW11L3BsdWdpbi5oICAgICAgICB8ICAgNyArKw0KPj4gICBp bmNsdWRlL3FlbXUvcWVtdS1wbHVnaW4uaCAgIHwgIDc2ICsrKysrKysrKysrKysrKw0KPj4g ICBwbHVnaW5zL3BsdWdpbi5oICAgICAgICAgICAgIHwgICA4ICsrDQo+PiAgIGFjY2VsL3Rj Zy9wbHVnaW4tZ2VuLmMgICAgICAgfCAxNzQgKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0NCj4+ICAgcGx1Z2lucy9hcGkuYyAgICAgICAgICAgICAgICB8ICA1MSArKysr KysrKysrDQo+PiAgIHBsdWdpbnMvY29yZS5jICAgICAgICAgICAgICAgfCAgMTkgKysrKw0K Pj4gICBwbHVnaW5zL3FlbXUtcGx1Z2lucy5zeW1ib2xzIHwgICAyICsNCj4+ICAgNyBmaWxl cyBjaGFuZ2VkLCAzMzQgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkNCj4+DQo+PiBk aWZmIC0tZ2l0IGEvaW5jbHVkZS9xZW11L3BsdWdpbi5oIGIvaW5jbHVkZS9xZW11L3BsdWdp bi5oDQo+PiBpbmRleCBkOTJkNjQ3NDRlNi4uMDU2MTAyYjIzNjEgMTAwNjQ0DQo+PiAtLS0g YS9pbmNsdWRlL3FlbXUvcGx1Z2luLmgNCj4+ICsrKyBiL2luY2x1ZGUvcWVtdS9wbHVnaW4u aA0KPj4gQEAgLTc0LDYgKzc0LDggQEAgZW51bSBwbHVnaW5fZHluX2NiX3R5cGUgew0KPj4g ICBlbnVtIHBsdWdpbl9keW5fY2Jfc3VidHlwZSB7DQo+PiAgICAgICBQTFVHSU5fQ0JfUkVH VUxBUiwNCj4+ICAgICAgIFBMVUdJTl9DQl9SRUdVTEFSX1IsDQo+PiArICAgIFBMVUdJTl9D Ql9DT05ELA0KPj4gKyAgICBQTFVHSU5fQ0JfQ09ORF9SLA0KPj4gICAgICAgUExVR0lOX0NC X0lOTElORV9BRERfVTY0LA0KPj4gICAgICAgUExVR0lOX0NCX0lOTElORV9TVE9SRV9VNjQs DQo+PiAgICAgICBQTFVHSU5fTl9DQl9TVUJUWVBFUywNCj4+IEBAIC05Nyw2ICs5OSwxMSBA QCBzdHJ1Y3QgcWVtdV9wbHVnaW5fZHluX2NiIHsNCj4+ICAgICAgICAgICAgICAgZW51bSBx ZW11X3BsdWdpbl9vcCBvcDsNCj4+ICAgICAgICAgICAgICAgdWludDY0X3QgaW1tOw0KPj4g ICAgICAgICAgIH0gaW5saW5lX2luc247DQo+PiArICAgICAgICBzdHJ1Y3Qgew0KPj4gKyAg ICAgICAgICAgIHFlbXVfcGx1Z2luX3U2NCBlbnRyeTsNCj4+ICsgICAgICAgICAgICBlbnVt IHFlbXVfcGx1Z2luX2NvbmQgY29uZDsNCj4+ICsgICAgICAgICAgICB1aW50NjRfdCBpbW07 DQo+PiArICAgICAgICB9IGNvbmRfY2I7DQo+PiAgICAgICB9Ow0KPj4gICB9Ow0KPj4gICAN Cj4+IGRpZmYgLS1naXQgYS9pbmNsdWRlL3FlbXUvcWVtdS1wbHVnaW4uaCBiL2luY2x1ZGUv cWVtdS9xZW11LXBsdWdpbi5oDQo+PiBpbmRleCBjNWNhYzg5N2EwYi4uMzM3ZGUyNWVjZTcg MTAwNjQ0DQo+PiAtLS0gYS9pbmNsdWRlL3FlbXUvcWVtdS1wbHVnaW4uaA0KPj4gKysrIGIv aW5jbHVkZS9xZW11L3FlbXUtcGx1Z2luLmgNCj4+IEBAIC0yNjIsNiArMjYyLDI5IEBAIGVu dW0gcWVtdV9wbHVnaW5fbWVtX3J3IHsNCj4+ICAgICAgIFFFTVVfUExVR0lOX01FTV9SVywN Cj4+ICAgfTsNCj4+ICAgDQo+PiArLyoqDQo+PiArICogZW51bSBxZW11X3BsdWdpbl9jb25k IC0gY29uZGl0aW9uIHRvIGVuYWJsZSBjYWxsYmFjaw0KPj4gKyAqDQo+PiArICogQFFFTVVf UExVR0lOX0NPTkRfTkVWRVI6IGZhbHNlDQo+PiArICogQFFFTVVfUExVR0lOX0NPTkRfQUxX QVlTOiB0cnVlDQo+PiArICogQFFFTVVfUExVR0lOX0NPTkRfRVE6IGlzIGVxdWFsPw0KPj4g KyAqIEBRRU1VX1BMVUdJTl9DT05EX05FOiBpcyBub3QgZXF1YWw/DQo+PiArICogQFFFTVVf UExVR0lOX0NPTkRfTFQ6IGlzIGxlc3MgdGhhbj8NCj4+ICsgKiBAUUVNVV9QTFVHSU5fQ09O RF9MRTogaXMgbGVzcyB0aGFuIG9yIGVxdWFsPw0KPj4gKyAqIEBRRU1VX1BMVUdJTl9DT05E X0dUOiBpcyBncmVhdGVyIHRoYW4/DQo+PiArICogQFFFTVVfUExVR0lOX0NPTkRfR0U6IGlz IGdyZWF0ZXIgdGhhbiBvciBlcXVhbD8NCj4+ICsgKi8NCj4+ICtlbnVtIHFlbXVfcGx1Z2lu X2NvbmQgew0KPj4gKyAgICBRRU1VX1BMVUdJTl9DT05EX05FVkVSLA0KPj4gKyAgICBRRU1V X1BMVUdJTl9DT05EX0FMV0FZUywNCj4+ICsgICAgUUVNVV9QTFVHSU5fQ09ORF9FUSwNCj4+ ICsgICAgUUVNVV9QTFVHSU5fQ09ORF9ORSwNCj4+ICsgICAgUUVNVV9QTFVHSU5fQ09ORF9M VCwNCj4+ICsgICAgUUVNVV9QTFVHSU5fQ09ORF9MRSwNCj4+ICsgICAgUUVNVV9QTFVHSU5f Q09ORF9HVCwNCj4+ICsgICAgUUVNVV9QTFVHSU5fQ09ORF9HRSwNCj4+ICt9Ow0KPj4gKw0K Pj4gICAvKioNCj4+ICAgICogdHlwZWRlZiBxZW11X3BsdWdpbl92Y3B1X3RiX3RyYW5zX2Ni X3QgLSB0cmFuc2xhdGlvbiBjYWxsYmFjaw0KPj4gICAgKiBAaWQ6IHVuaXF1ZSBwbHVnaW4g aWQNCj4+IEBAIC0zMDEsNiArMzI0LDMyIEBAIHZvaWQgcWVtdV9wbHVnaW5fcmVnaXN0ZXJf dmNwdV90Yl9leGVjX2NiKHN0cnVjdCBxZW11X3BsdWdpbl90YiAqdGIsDQo+PiAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcWVtdV9wbHVnaW5f Y2JfZmxhZ3MgZmxhZ3MsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHZvaWQgKnVzZXJkYXRhKTsNCj4+ICAgDQo+PiArLyoqDQo+PiArICogcWVt dV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV90Yl9leGVjX2NvbmRfY2IoKSAtIHJlZ2lzdGVyIGNv bmRpdGlvbmFsIGNhbGxiYWNrDQo+PiArICogQHRiOiB0aGUgb3BhcXVlIHFlbXVfcGx1Z2lu X3RiIGhhbmRsZSBmb3IgdGhlIHRyYW5zbGF0aW9uDQo+PiArICogQGNiOiBjYWxsYmFjayBm dW5jdGlvbg0KPj4gKyAqIEBjb25kOiBjb25kaXRpb24gdG8gZW5hYmxlIGNhbGxiYWNrDQo+ PiArICogQGVudHJ5OiBmaXJzdCBvcGVyYW5kIGZvciBjb25kaXRpb24NCj4+ICsgKiBAaW1t OiBzZWNvbmQgb3BlcmFuZCBmb3IgY29uZGl0aW9uDQo+PiArICogQGZsYWdzOiBkb2VzIHRo ZSBwbHVnaW4gcmVhZCBvciB3cml0ZSB0aGUgQ1BVJ3MgcmVnaXN0ZXJzPw0KPj4gKyAqIEB1 c2VyZGF0YTogYW55IHBsdWdpbiBkYXRhIHRvIHBhc3MgdG8gdGhlIEBjYj8NCj4+ICsgKg0K Pj4gKyAqIFRoZSBAY2IgZnVuY3Rpb24gaXMgY2FsbGVkIHdoZW4gYSB0cmFuc2xhdGVkIHVu aXQgZXhlY3V0ZXMgaWYNCj4+ICsgKiBlbnRyeSBAY29uZCBpbW0gaXMgdHJ1ZS4NCj4+ICsg KiBJZiBjb25kaXRpb24gaXMgUUVNVV9QTFVHSU5fQ09ORF9BTFdBWVMsIGNvbmRpdGlvbiBp cyBuZXZlciBpbnRlcnByZXRlZCBhbmQNCj4+ICsgKiB0aGlzIGZ1bmN0aW9uIGlzIGVxdWl2 YWxlbnQgdG8gcWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV90Yl9leGVjX2NiLg0KPj4gKyAq IElmIGNvbmRpdGlvbiBRRU1VX1BMVUdJTl9DT05EX05FVkVSLCBjb25kaXRpb24gaXMgbmV2 ZXIgaW50ZXJwcmV0ZWQgYW5kDQo+PiArICogY2FsbGJhY2sgaXMgbmV2ZXIgaW5zdGFsbGVk Lg0KPj4gKyAqLw0KPj4gK1FFTVVfUExVR0lOX0FQSQ0KPj4gK3ZvaWQgcWVtdV9wbHVnaW5f cmVnaXN0ZXJfdmNwdV90Yl9leGVjX2NvbmRfY2Ioc3RydWN0IHFlbXVfcGx1Z2luX3RiICp0 YiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHFlbXVfcGx1Z2luX3ZjcHVfdWRhdGFfY2JfdCBjYiwNCj4+ICsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0gcWVtdV9wbHVnaW5fY2JfZmxh Z3MgZmxhZ3MsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBlbnVtIHFlbXVfcGx1Z2luX2NvbmQgY29uZCwNCj4+ICsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHFlbXVfcGx1Z2luX3U2NCBlbnRy eSwNCj4gDQo+IElzIHRoaXMgYSBmaXhlZCBlbnRyeSBvciBwYXJ0IG9mIGEgc2NvcmVib2Fy ZD8NCj4gDQoNCmVudHJ5IGlzIGFuIGVudHJ5IG9mIHNjb3JlYm9hcmQgKGF1dG9tYXRpY2Fs bHkgYXNzb2NpYXRlZCB0byBlYWNoIHZjcHUgDQp1c2luZyB2Y3B1X2luZGV4KSBhbmQgY2Fu IGJlIG1vZGlmaWVkIGJ5IGFueSBvdGhlciBpbmxpbmUgb3AsIG9yIA0KY2FsbGJhY2suIEBp bW0gKG5leHQgcGFyYW1ldGVyKSBpcyBmaXhlZCB5ZXMuDQoNCmNhbGxiYWNrIHdpbGwgYmUg Y2FsbGVkIG9ubHkgaWYgZW50cnkgPGNvbmQ+IGltbSB0cnVlLg0KdGVzdHMvcGx1Z2luL2lu bGluZS5jIGhhcyB0ZXN0cyBmb3IgdGhpcywgYW5kIHN0b3JlIG9wZXJhdGlvbi4NCg0KPiBJ J20gdHJ5aW5nIHRvIHdyaXRlIGEgY29udHJvbCBmbG93IHBsdWdpbiB3aXRoIGEgc3RydWN0 dXJlIGxpa2U6DQo+IA0KPiAgICAvKiBXZSB1c2UgdGhpcyB0byB0cmFjayB0aGUgY3VycmVu dCBleGVjdXRpb24gc3RhdGUgKi8NCj4gICAgdHlwZWRlZiBzdHJ1Y3Qgew0KPiAgICAgICAg LyogYWRkcmVzcyBvZiBzdGFydCBvZiBibG9jayAqLw0KPiAgICAgICAgdWludDY0X3QgYmxv Y2tfc3RhcnQ7DQo+ICAgICAgICAvKiBhZGRyZXNzIG9mIGVuZCBvZiBibG9jayAqLw0KPiAg ICAgICAgdWludDY0X3QgYmxvY2tfZW5kOw0KPiAgICAgICAgLyogYWRkcmVzcyBvZiBsYXN0 IGV4ZWN1dGVkIFBDICovDQo+ICAgICAgICB1aW50NjRfdCBsYXN0X3BjOw0KPiAgICB9IFZD UFVTY29yZUJvYXJkOw0KPiANCg0KU2VlbXMgb2suDQoNCj4gQW5kIEkgd2FudCB0byBjaGVj ayB0byBzZWUgaWYgbGFzdF9wYyAoc2V0IGJ5IFNUT1JFX1U2NCBmb3IgZWFjaCBpbnNuKSA9 PSBibG9ja19lbmQNCj4gKHNldCBhdCBzdGFydCBvZiBUQiB3aXRoIHdoYXQgd2Uga25vdyku DQo+IA0KPiBJcyB0aGlzIHNvbWV0aGluZyBJIG5lZWQgdG8gZ2V0IHdpdGg6DQo+IA0KPiAg ICAgbGFzdF9wYyA9IHFlbXVfcGx1Z2luX3Njb3JlYm9hcmRfdTY0X2luX3N0cnVjdChzdGF0 ZSwgVkNQVVNjb3JlQm9hcmQsIGxhc3RfcGMpOw0KPiANCg0KWWVzLg0KDQo+ID8NCj4gDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1aW50 NjRfdCBpbW0sDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB2b2lkICp1c2VyZGF0YSk7DQo+PiArDQo+PiAgIC8qKg0KPj4gICAgKiBlbnVt IHFlbXVfcGx1Z2luX29wIC0gZGVzY3JpYmVzIGFuIGlubGluZSBvcA0KPj4gICAgKg0KPj4g QEAgLTM0NCw2ICszOTMsMzMgQEAgdm9pZCBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X2lu c25fZXhlY19jYihzdHJ1Y3QgcWVtdV9wbHVnaW5faW5zbiAqaW5zbiwNCj4+ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHFlbXVfcGx1Z2lu X2NiX2ZsYWdzIGZsYWdzLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHZvaWQgKnVzZXJkYXRhKTsNCj4+ICAgDQo+PiArLyoqDQo+PiArICog cWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV9pbnNuX2V4ZWNfY29uZF9jYigpIC0gY29uZGl0 aW9uYWwgaW5zbiBleGVjdXRpb24gY2INCj4+ICsgKiBAaW5zbjogdGhlIG9wYXF1ZSBxZW11 X3BsdWdpbl9pbnNuIGhhbmRsZSBmb3IgYW4gaW5zdHJ1Y3Rpb24NCj4+ICsgKiBAY2I6IGNh bGxiYWNrIGZ1bmN0aW9uDQo+PiArICogQGZsYWdzOiBkb2VzIHRoZSBwbHVnaW4gcmVhZCBv ciB3cml0ZSB0aGUgQ1BVJ3MgcmVnaXN0ZXJzPw0KPj4gKyAqIEBjb25kOiBjb25kaXRpb24g dG8gZW5hYmxlIGNhbGxiYWNrDQo+PiArICogQGVudHJ5OiBmaXJzdCBvcGVyYW5kIGZvciBj b25kaXRpb24NCj4+ICsgKiBAaW1tOiBzZWNvbmQgb3BlcmFuZCBmb3IgY29uZGl0aW9uDQo+ PiArICogQHVzZXJkYXRhOiBhbnkgcGx1Z2luIGRhdGEgdG8gcGFzcyB0byB0aGUgQGNiPw0K Pj4gKyAqDQo+PiArICogVGhlIEBjYiBmdW5jdGlvbiBpcyBjYWxsZWQgd2hlbiBhbiBpbnN0 cnVjdGlvbiBleGVjdXRlcyBpZg0KPj4gKyAqIGVudHJ5IEBjb25kIGltbSBpcyB0cnVlLg0K Pj4gKyAqIElmIGNvbmRpdGlvbiBpcyBRRU1VX1BMVUdJTl9DT05EX0FMV0FZUywgY29uZGl0 aW9uIGlzIG5ldmVyIGludGVycHJldGVkIGFuZA0KPj4gKyAqIHRoaXMgZnVuY3Rpb24gaXMg ZXF1aXZhbGVudCB0byBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X2luc25fZXhlY19jYi4N Cj4+ICsgKiBJZiBjb25kaXRpb24gUUVNVV9QTFVHSU5fQ09ORF9ORVZFUiwgY29uZGl0aW9u IGlzIG5ldmVyIGludGVycHJldGVkIGFuZA0KPj4gKyAqIGNhbGxiYWNrIGlzIG5ldmVyIGlu c3RhbGxlZC4NCj4+ICsgKi8NCj4+ICtRRU1VX1BMVUdJTl9BUEkNCj4+ICt2b2lkIHFlbXVf cGx1Z2luX3JlZ2lzdGVyX3ZjcHVfaW5zbl9leGVjX2NvbmRfY2IoDQo+PiArICAgIHN0cnVj dCBxZW11X3BsdWdpbl9pbnNuICppbnNuLA0KPj4gKyAgICBxZW11X3BsdWdpbl92Y3B1X3Vk YXRhX2NiX3QgY2IsDQo+PiArICAgIGVudW0gcWVtdV9wbHVnaW5fY2JfZmxhZ3MgZmxhZ3Ms DQo+PiArICAgIGVudW0gcWVtdV9wbHVnaW5fY29uZCBjb25kLA0KPj4gKyAgICBxZW11X3Bs dWdpbl91NjQgZW50cnksDQo+PiArICAgIHVpbnQ2NF90IGltbSwNCj4+ICsgICAgdm9pZCAq dXNlcmRhdGEpOw0KPj4gKw0KPj4gICAvKioNCj4+ICAgICogcWVtdV9wbHVnaW5fcmVnaXN0 ZXJfdmNwdV9pbnNuX2V4ZWNfaW5saW5lX3Blcl92Y3B1KCkgLSBpbnNuIGV4ZWMgaW5saW5l IG9wDQo+PiAgICAqIEBpbnNuOiB0aGUgb3BhcXVlIHFlbXVfcGx1Z2luX2luc24gaGFuZGxl IGZvciBhbiBpbnN0cnVjdGlvbg0KPj4gZGlmZiAtLWdpdCBhL3BsdWdpbnMvcGx1Z2luLmgg Yi9wbHVnaW5zL3BsdWdpbi5oDQo+PiBpbmRleCA2OTZiMWZhMzhiMC4uMTE4Y2M5OWJiMmEg MTAwNjQ0DQo+PiAtLS0gYS9wbHVnaW5zL3BsdWdpbi5oDQo+PiArKysgYi9wbHVnaW5zL3Bs dWdpbi5oDQo+PiBAQCAtOTQsNiArOTQsMTQgQEAgcGx1Z2luX3JlZ2lzdGVyX2R5bl9jYl9f dWRhdGEoR0FycmF5ICoqYXJyLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBxZW11X3BsdWdpbl92Y3B1X3VkYXRhX2NiX3QgY2IsDQo+PiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGVudW0gcWVtdV9wbHVnaW5fY2JfZmxhZ3MgZmxhZ3MsIHZvaWQg KnVkYXRhKTsNCj4+ICAgDQo+PiArdm9pZA0KPj4gK3BsdWdpbl9yZWdpc3Rlcl9keW5fY29u ZF9jYl9fdWRhdGEoR0FycmF5ICoqYXJyLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgcWVtdV9wbHVnaW5fdmNwdV91ZGF0YV9jYl90IGNiLA0KPj4gKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBxZW11X3BsdWdpbl9jYl9mbGFn cyBmbGFncywNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVudW0g cWVtdV9wbHVnaW5fY29uZCBjb25kLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgcWVtdV9wbHVnaW5fdTY0IGVudHJ5LA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdWludDY0X3QgaW1tLA0KPj4gKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdm9pZCAqdWRhdGEpOw0KPj4gICANCj4+ICAgdm9pZCBwbHVn aW5fcmVnaXN0ZXJfdmNwdV9tZW1fY2IoR0FycmF5ICoqYXJyLA0KPj4gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB2b2lkICpjYiwNCj4+IGRpZmYgLS1naXQgYS9hY2Nl bC90Y2cvcGx1Z2luLWdlbi5jIGIvYWNjZWwvdGNnL3BsdWdpbi1nZW4uYw0KPj4gaW5kZXgg MDJjODk0MTA2ZTIuLjE1NzYyYTI2NDM5IDEwMDY0NA0KPj4gLS0tIGEvYWNjZWwvdGNnL3Bs dWdpbi1nZW4uYw0KPj4gKysrIGIvYWNjZWwvdGNnL3BsdWdpbi1nZW4uYw0KPj4gQEAgLTQ2 LDYgKzQ2LDcgQEANCj4+ICAgI2luY2x1ZGUgInFlbXUvcGx1Z2luLmgiDQo+PiAgICNpbmNs dWRlICJjcHUuaCINCj4+ICAgI2luY2x1ZGUgInRjZy90Y2cuaCINCj4+ICsjaW5jbHVkZSAi dGNnL3RjZy1jb25kLmgiDQo+PiAgICNpbmNsdWRlICJ0Y2cvdGNnLWludGVybmFsLmgiDQo+ PiAgICNpbmNsdWRlICJ0Y2cvdGNnLW9wLmgiDQo+PiAgICNpbmNsdWRlICJ0Y2cvdGNnLXRl bXAtaW50ZXJuYWwuaCINCj4+IEBAIC04Miw2ICs4Myw4IEBAIGVudW0gcGx1Z2luX2dlbl9m cm9tIHsNCj4+ICAgZW51bSBwbHVnaW5fZ2VuX2NiIHsNCj4+ICAgICAgIFBMVUdJTl9HRU5f Q0JfVURBVEEsDQo+PiAgICAgICBQTFVHSU5fR0VOX0NCX1VEQVRBX1IsDQo+PiArICAgIFBM VUdJTl9HRU5fQ0JfQ09ORF9VREFUQSwNCj4+ICsgICAgUExVR0lOX0dFTl9DQl9DT05EX1VE QVRBX1IsDQo+PiAgICAgICBQTFVHSU5fR0VOX0NCX0lOTElORV9BRERfVTY0LA0KPj4gICAg ICAgUExVR0lOX0dFTl9DQl9JTkxJTkVfU1RPUkVfVTY0LA0KPj4gICAgICAgUExVR0lOX0dF Tl9DQl9NRU0sDQo+PiBAQCAtMTE5LDE2ICsxMjIsNTggQEAgc3RhdGljIHZvaWQgZ2VuX2Vt cHR5X3VkYXRhX2NiKHZvaWQgKCpnZW5faGVscGVyKShUQ0d2X2kzMiwgVENHdl9wdHIpKQ0K Pj4gICAgICAgdGNnX3RlbXBfZnJlZV9pMzIoY3B1X2luZGV4KTsNCj4+ICAgfQ0KPj4gICAN Cj4+ICtzdGF0aWMgdm9pZCBnZW5fZW1wdHlfY29uZF91ZGF0YV9jYih2b2lkICgqZ2VuX2hl bHBlcikoVENHdl9pMzIsIFRDR3ZfcHRyKSkNCj4+ICt7DQo+PiArICAgIFRDR3ZfaTMyIGNw dV9pbmRleCA9IHRjZ190ZW1wX2ViYl9uZXdfaTMyKCk7DQo+PiArICAgIFRDR3ZfaTMyIGNw dV9vZmZzZXQgPSB0Y2dfdGVtcF9lYmJfbmV3X2kzMigpOw0KPj4gKyAgICBUQ0d2X3B0ciBj cHVfaW5kZXhfYXNfcHRyID0gdGNnX3RlbXBfZWJiX25ld19wdHIoKTsNCj4+ICsgICAgVENH dl9pNjQgdmFsID0gdGNnX3RlbXBfZWJiX25ld19pNjQoKTsNCj4+ICsgICAgVENHdl9wdHIg cHRyID0gdGNnX3RlbXBfZWJiX25ld19wdHIoKTsNCj4+ICsgICAgVENHdl9wdHIgdWRhdGEg PSB0Y2dfdGVtcF9lYmJfbmV3X3B0cigpOw0KPj4gKyAgICBUQ0dMYWJlbCAqYWZ0ZXJfY2Ig PSBnZW5fbmV3X2xhYmVsKCk7DQo+PiArDQo+PiArICAgIHRjZ19nZW5fbW92aV9wdHIodWRh dGEsIDApOw0KPj4gKyAgICB0Y2dfZ2VuX2xkX2kzMihjcHVfaW5kZXgsIHRjZ19lbnYsDQo+ PiArICAgICAgICAgICAgICAgICAgIC1vZmZzZXRvZihBcmNoQ1BVLCBlbnYpICsgb2Zmc2V0 b2YoQ1BVU3RhdGUsIGNwdV9pbmRleCkpOw0KPj4gKyAgICAvKiBzZWNvbmQgb3BlcmFuZCB3 aWxsIGJlIHJlcGxhY2VkIGJ5IGltbWVkaWF0ZSB2YWx1ZSAqLw0KPj4gKyAgICB0Y2dfZ2Vu X211bF9pMzIoY3B1X29mZnNldCwgY3B1X2luZGV4LCBjcHVfaW5kZXgpOw0KPj4gKyAgICB0 Y2dfZ2VuX2V4dF9pMzJfcHRyKGNwdV9pbmRleF9hc19wdHIsIGNwdV9vZmZzZXQpOw0KPj4g KyAgICB0Y2dfZ2VuX21vdmlfcHRyKHB0ciwgMCk7DQo+PiArICAgIHRjZ19nZW5fYWRkX3B0 cihwdHIsIHB0ciwgY3B1X2luZGV4X2FzX3B0cik7DQo+PiArICAgIHRjZ19nZW5fbGRfaTY0 KHZhbCwgcHRyLCAwKTsNCj4+ICsNCj4+ICsgICAgdGNnX2dlbl9icmNvbmRpX2k2NChUQ0df Q09ORF9FUSwgdmFsLCAwLCBhZnRlcl9jYik7DQo+PiArICAgIGdlbl9oZWxwZXIoY3B1X2lu ZGV4LCB1ZGF0YSk7DQo+PiArICAgIGdlbl9zZXRfbGFiZWwoYWZ0ZXJfY2IpOw0KPj4gKw0K Pj4gKyAgICB0Y2dfdGVtcF9mcmVlX3B0cih1ZGF0YSk7DQo+PiArICAgIHRjZ190ZW1wX2Zy ZWVfcHRyKHB0cik7DQo+PiArICAgIHRjZ190ZW1wX2ZyZWVfaTY0KHZhbCk7DQo+PiArICAg IHRjZ190ZW1wX2ZyZWVfcHRyKGNwdV9pbmRleF9hc19wdHIpOw0KPj4gKyAgICB0Y2dfdGVt cF9mcmVlX2kzMihjcHVfb2Zmc2V0KTsNCj4+ICsgICAgdGNnX3RlbXBfZnJlZV9pMzIoY3B1 X2luZGV4KTsNCj4+ICt9DQo+PiArDQo+PiAgIHN0YXRpYyB2b2lkIGdlbl9lbXB0eV91ZGF0 YV9jYl9ub193Zyh2b2lkKQ0KPj4gICB7DQo+PiAgICAgICBnZW5fZW1wdHlfdWRhdGFfY2Io Z2VuX2hlbHBlcl9wbHVnaW5fdmNwdV91ZGF0YV9jYl9ub193Zyk7DQo+PiAgIH0NCj4+ICAg DQo+PiArc3RhdGljIHZvaWQgZ2VuX2VtcHR5X2NvbmRfdWRhdGFfY2Jfbm9fd2codm9pZCkN Cj4+ICt7DQo+PiArICAgIGdlbl9lbXB0eV9jb25kX3VkYXRhX2NiKGdlbl9oZWxwZXJfcGx1 Z2luX3ZjcHVfdWRhdGFfY2Jfbm9fd2cpOw0KPj4gK30NCj4+ICsNCj4+ICAgc3RhdGljIHZv aWQgZ2VuX2VtcHR5X3VkYXRhX2NiX25vX3J3Zyh2b2lkKQ0KPj4gICB7DQo+PiAgICAgICBn ZW5fZW1wdHlfdWRhdGFfY2IoZ2VuX2hlbHBlcl9wbHVnaW5fdmNwdV91ZGF0YV9jYl9ub19y d2cpOw0KPj4gICB9DQo+PiAgIA0KPj4gK3N0YXRpYyB2b2lkIGdlbl9lbXB0eV9jb25kX3Vk YXRhX2NiX25vX3J3Zyh2b2lkKQ0KPj4gK3sNCj4+ICsgICAgZ2VuX2VtcHR5X2NvbmRfdWRh dGFfY2IoZ2VuX2hlbHBlcl9wbHVnaW5fdmNwdV91ZGF0YV9jYl9ub19yd2cpOw0KPj4gK30N Cj4+ICsNCj4+ICAgc3RhdGljIHZvaWQgZ2VuX2VtcHR5X2lubGluZV9jYl9hZGRfdTY0KHZv aWQpDQo+PiAgIHsNCj4+ICAgICAgIFRDR3ZfaTMyIGNwdV9pbmRleCA9IHRjZ190ZW1wX2Vi Yl9uZXdfaTMyKCk7DQo+PiBAQCAtMjQ4LDYgKzI5MywxMCBAQCBzdGF0aWMgdm9pZCBwbHVn aW5fZ2VuX2VtcHR5X2NhbGxiYWNrKGVudW0gcGx1Z2luX2dlbl9mcm9tIGZyb20pDQo+PiAg ICAgICAgICAgICAgICAgICAgICAgZ2VuX2VtcHR5X2lubGluZV9jYl9zdG9yZV91NjQpOw0K Pj4gICAgICAgICAgIGdlbl93cmFwcGVkKGZyb20sIFBMVUdJTl9HRU5fQ0JfVURBVEEsIGdl bl9lbXB0eV91ZGF0YV9jYl9ub19yd2cpOw0KPj4gICAgICAgICAgIGdlbl93cmFwcGVkKGZy b20sIFBMVUdJTl9HRU5fQ0JfVURBVEFfUiwgZ2VuX2VtcHR5X3VkYXRhX2NiX25vX3dnKTsN Cj4+ICsgICAgICAgIGdlbl93cmFwcGVkKGZyb20sIFBMVUdJTl9HRU5fQ0JfQ09ORF9VREFU QSwNCj4+ICsgICAgICAgICAgICAgICAgICAgIGdlbl9lbXB0eV9jb25kX3VkYXRhX2NiX25v X3J3Zyk7DQo+PiArICAgICAgICBnZW5fd3JhcHBlZChmcm9tLCBQTFVHSU5fR0VOX0NCX0NP TkRfVURBVEFfUiwNCj4+ICsgICAgICAgICAgICAgICAgICAgIGdlbl9lbXB0eV9jb25kX3Vk YXRhX2NiX25vX3dnKTsNCj4+ICAgICAgICAgICBicmVhazsNCj4+ICAgICAgIGRlZmF1bHQ6 DQo+PiAgICAgICAgICAgZ19hc3NlcnRfbm90X3JlYWNoZWQoKTsNCj4+IEBAIC00NTYsNiAr NTA1LDI5IEBAIHN0YXRpYyBUQ0dPcCAqY29weV9jYWxsKFRDR09wICoqYmVnaW5fb3AsIFRD R09wICpvcCwgdm9pZCAqZnVuYywgaW50ICpjYl9pZHgpDQo+PiAgICAgICByZXR1cm4gb3A7 DQo+PiAgIH0NCj4+ICAgDQo+PiArc3RhdGljIFRDR09wICpjb3B5X2JyY29uZGlfaTY0KFRD R09wICoqYmVnaW5fb3AsIFRDR09wICpvcCwgVENHQ29uZCBjb25kLA0KPj4gKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBpbW0pDQo+PiArew0KPj4gKyAgICBp ZiAoVENHX1RBUkdFVF9SRUdfQklUUyA9PSAzMikgew0KPj4gKyAgICAgICAgb3AgPSBjb3B5 X29wKGJlZ2luX29wLCBvcCwgSU5ERVhfb3BfYnJjb25kMl9pMzIpOw0KPj4gKyAgICAgICAg LyogbG93KGFyZzEpLCBoaWdoKGFyZzEpLCAzMihhcmcyKSwgMzIoYXJnMiA+PiAzMiksIGNv bmQsIGxhYmVsICovDQo+PiArICAgICAgICBvcC0+YXJnc1syXSA9IHRjZ3ZfaTMyX2FyZyh0 Y2dfY29uc3RhbnRfaTMyKGltbSkpOw0KPj4gKyAgICAgICAgb3AtPmFyZ3NbM10gPSB0Y2d2 X2kzMl9hcmcodGNnX2NvbnN0YW50X2kzMihpbW0gPj4gMzIpKTsNCj4+ICsgICAgICAgIG9w LT5hcmdzWzRdID0gY29uZDsNCj4+ICsgICAgfSBlbHNlIHsNCj4+ICsgICAgICAgIG9wID0g Y29weV9vcChiZWdpbl9vcCwgb3AsIElOREVYX29wX2JyY29uZF9pNjQpOw0KPj4gKyAgICAg ICAgLyogYXJnMSwgYXJnMiwgY29uZCwgbGFiZWwgKi8NCj4+ICsgICAgICAgIG9wLT5hcmdz WzFdID0gdGNndl9pNjRfYXJnKHRjZ19jb25zdGFudF9pNjQoaW1tKSk7DQo+PiArICAgICAg ICBvcC0+YXJnc1syXSA9IGNvbmQ7DQo+PiArICAgIH0NCj4+ICsgICAgcmV0dXJuIG9wOw0K Pj4gK30NCj4+ICsNCj4+ICtzdGF0aWMgVENHT3AgKmNvcHlfc2V0X2xhYmVsKFRDR09wICoq YmVnaW5fb3AsIFRDR09wICpvcCkNCj4+ICt7DQo+PiArICAgIHJldHVybiBjb3B5X29wKGJl Z2luX29wLCBvcCwgSU5ERVhfb3Bfc2V0X2xhYmVsKTsNCj4+ICt9DQo+PiArDQo+PiAgIC8q DQo+PiAgICAqIFdoZW4gd2UgYXBwZW5kL3JlcGxhY2Ugb3BzIGhlcmUgd2UgYXJlIHNlbnNp dGl2ZSB0byBjaGFuZ2luZyBwYXR0ZXJucyBvZg0KPj4gICAgKiBUQ0dPcHMgZ2VuZXJhdGVk IGJ5IHRoZSB0Y2dfZ2VuX0ZPTyBjYWxscyB3aGVuIHdlIGdlbmVyYXRlZCB0aGUNCj4+IEBA IC00ODIsNiArNTU0LDUwIEBAIHN0YXRpYyBUQ0dPcCAqYXBwZW5kX3VkYXRhX2NiKGNvbnN0 IHN0cnVjdCBxZW11X3BsdWdpbl9keW5fY2IgKmNiLA0KPj4gICAgICAgcmV0dXJuIG9wOw0K Pj4gICB9DQo+PiAgIA0KPj4gK3N0YXRpYyBUQ0dDb25kIHBsdWdpbl9jb25kX3RvX3RjZ2Nv bmQoZW51bSBxZW11X3BsdWdpbl9jb25kIGNvbmQpDQo+PiArew0KPj4gKyAgICBzd2l0Y2gg KGNvbmQpIHsNCj4+ICsgICAgY2FzZSBRRU1VX1BMVUdJTl9DT05EX0VROg0KPj4gKyAgICAg ICAgcmV0dXJuIFRDR19DT05EX0VROw0KPj4gKyAgICBjYXNlIFFFTVVfUExVR0lOX0NPTkRf TkU6DQo+PiArICAgICAgICByZXR1cm4gVENHX0NPTkRfTkU7DQo+PiArICAgIGNhc2UgUUVN VV9QTFVHSU5fQ09ORF9MVDoNCj4+ICsgICAgICAgIHJldHVybiBUQ0dfQ09ORF9MVFU7DQo+ PiArICAgIGNhc2UgUUVNVV9QTFVHSU5fQ09ORF9MRToNCj4+ICsgICAgICAgIHJldHVybiBU Q0dfQ09ORF9MRVU7DQo+PiArICAgIGNhc2UgUUVNVV9QTFVHSU5fQ09ORF9HVDoNCj4+ICsg ICAgICAgIHJldHVybiBUQ0dfQ09ORF9HVFU7DQo+PiArICAgIGNhc2UgUUVNVV9QTFVHSU5f Q09ORF9HRToNCj4+ICsgICAgICAgIHJldHVybiBUQ0dfQ09ORF9HRVU7DQo+PiArICAgIGRl ZmF1bHQ6DQo+PiArICAgICAgICAvKiBBTFdBWVMgYW5kIE5FVkVSIGNvbmRpdGlvbnMgc2hv dWxkIG5ldmVyIHJlYWNoICovDQo+PiArICAgICAgICBnX2Fzc2VydF9ub3RfcmVhY2hlZCgp Ow0KPj4gKyAgICB9DQo+PiArfQ0KPj4gKw0KPj4gK3N0YXRpYyBUQ0dPcCAqYXBwZW5kX2Nv bmRfdWRhdGFfY2IoY29uc3Qgc3RydWN0IHFlbXVfcGx1Z2luX2R5bl9jYiAqY2IsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dPcCAqYmVnaW5fb3AsIFRD R09wICpvcCwgaW50ICpjYl9pZHgpDQo+PiArew0KPj4gKyAgICBjaGFyICpwdHIgPSBjYi0+ Y29uZF9jYi5lbnRyeS5zY29yZS0+ZGF0YS0+ZGF0YTsNCj4+ICsgICAgc2l6ZV90IGVsZW1f c2l6ZSA9IGdfYXJyYXlfZ2V0X2VsZW1lbnRfc2l6ZSgNCj4+ICsgICAgICAgIGNiLT5jb25k X2NiLmVudHJ5LnNjb3JlLT5kYXRhKTsNCj4+ICsgICAgc2l6ZV90IG9mZnNldCA9IGNiLT5j b25kX2NiLmVudHJ5Lm9mZnNldDsNCj4+ICsgICAgLyogQ29uZGl0aW9uIHNob3VsZCBiZSBu ZWdhdGVkLCBhcyBjYWxsaW5nIHRoZSBjYiBpcyB0aGUgImVsc2UiIHBhdGggKi8NCj4+ICsg ICAgVENHQ29uZCBjb25kID0gdGNnX2ludmVydF9jb25kKHBsdWdpbl9jb25kX3RvX3RjZ2Nv bmQoY2ItPmNvbmRfY2IuY29uZCkpOw0KPj4gKw0KPj4gKyAgICBvcCA9IGNvcHlfY29uc3Rf cHRyKCZiZWdpbl9vcCwgb3AsIHB0cik7DQo+PiArICAgIG9wID0gY29weV9sZF9pMzIoJmJl Z2luX29wLCBvcCk7DQo+PiArICAgIG9wID0gY29weV9tdWxfaTMyKCZiZWdpbl9vcCwgb3As IGVsZW1fc2l6ZSk7DQo+PiArICAgIG9wID0gY29weV9leHRfaTMyX3B0cigmYmVnaW5fb3As IG9wKTsNCj4+ICsgICAgb3AgPSBjb3B5X2NvbnN0X3B0cigmYmVnaW5fb3AsIG9wLCBwdHIg KyBvZmZzZXQpOw0KPj4gKyAgICBvcCA9IGNvcHlfYWRkX3B0cigmYmVnaW5fb3AsIG9wKTsN Cj4+ICsgICAgb3AgPSBjb3B5X2xkX2k2NCgmYmVnaW5fb3AsIG9wKTsNCj4+ICsgICAgb3Ag PSBjb3B5X2JyY29uZGlfaTY0KCZiZWdpbl9vcCwgb3AsIGNvbmQsIGNiLT5jb25kX2NiLmlt bSk7DQo+PiArICAgIG9wID0gY29weV9jYWxsKCZiZWdpbl9vcCwgb3AsIGNiLT5mLnZjcHVf dWRhdGEsIGNiX2lkeCk7DQo+PiArICAgIG9wID0gY29weV9zZXRfbGFiZWwoJmJlZ2luX29w LCBvcCk7DQo+PiArICAgIHJldHVybiBvcDsNCj4+ICt9DQo+PiArDQo+PiAgIHN0YXRpYyBU Q0dPcCAqYXBwZW5kX2lubGluZV9jYl9hZGRfdTY0KGNvbnN0IHN0cnVjdCBxZW11X3BsdWdp bl9keW5fY2IgKmNiLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBUQ0dPcCAqYmVnaW5fb3AsIFRDR09wICpvcCwNCj4+ICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgaW50ICp1bnVzZWQpDQo+PiBAQCAtNjAxLDYgKzcx NywxMiBAQCBpbmplY3RfdWRhdGFfY2IoY29uc3QgR0FycmF5ICpjYnMsIFRDR09wICpiZWdp bl9vcCkNCj4+ICAgICAgIGluamVjdF9jYl90eXBlKGNicywgYmVnaW5fb3AsIGFwcGVuZF91 ZGF0YV9jYiwgb3Bfb2spOw0KPj4gICB9DQo+PiAgIA0KPj4gK3N0YXRpYyB2b2lkDQo+PiAr aW5qZWN0X2NvbmRfdWRhdGFfY2IoY29uc3QgR0FycmF5ICpjYnMsIFRDR09wICpiZWdpbl9v cCkNCj4+ICt7DQo+PiArICAgIGluamVjdF9jYl90eXBlKGNicywgYmVnaW5fb3AsIGFwcGVu ZF9jb25kX3VkYXRhX2NiLCBvcF9vayk7DQo+PiArfQ0KPj4gKw0KPj4gICBzdGF0aWMgdm9p ZA0KPj4gICBpbmplY3RfaW5saW5lX2NiX2FkZF91NjQoY29uc3QgR0FycmF5ICpjYnMsIFRD R09wICpiZWdpbl9vcCwgb3Bfb2tfZm4gb2spDQo+PiAgIHsNCj4+IEBAIC02NTQsNyArNzc2 LDcgQEAgc3RhdGljIHZvaWQgaW5qZWN0X21lbV9lbmFibGVfaGVscGVyKHN0cnVjdCBxZW11 X3BsdWdpbl90YiAqcHRiLA0KPj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RydWN0IHFlbXVfcGx1Z2luX2luc24gKnBsdWdpbl9pbnNuLA0KPj4gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHT3AgKmJlZ2luX29wKQ0KPj4g ICB7DQo+PiAtICAgIEdBcnJheSAqY2JzWzNdOw0KPj4gKyAgICBHQXJyYXkgKmNic1s0XTsN Cj4+ICAgICAgIEdBcnJheSAqYXJyOw0KPj4gICAgICAgc2l6ZV90IG5fY2JzLCBpOw0KPj4g ICANCj4+IEBAIC02NjIsNiArNzg0LDcgQEAgc3RhdGljIHZvaWQgaW5qZWN0X21lbV9lbmFi bGVfaGVscGVyKHN0cnVjdCBxZW11X3BsdWdpbl90YiAqcHRiLA0KPj4gICAgICAgY2JzWzBd ID0gcGx1Z2luX2luc24tPmNic1tQTFVHSU5fQ0JfTUVNXVtQTFVHSU5fQ0JfSU5MSU5FX0FE RF9VNjRdOw0KPj4gICAgICAgY2JzWzFdID0gcGx1Z2luX2luc24tPmNic1tQTFVHSU5fQ0Jf TUVNXVtQTFVHSU5fQ0JfSU5MSU5FX1NUT1JFX1U2NF07DQo+PiAgICAgICBjYnNbMl0gPSBw bHVnaW5faW5zbi0+Y2JzW1BMVUdJTl9DQl9NRU1dW1BMVUdJTl9DQl9SRUdVTEFSXTsNCj4+ ICsgICAgY2JzWzNdID0gcGx1Z2luX2luc24tPmNic1tQTFVHSU5fQ0JfTUVNXVtQTFVHSU5f Q0JfQ09ORF07DQo+PiAgIA0KPj4gICAgICAgbl9jYnMgPSAwOw0KPj4gICAgICAgZm9yIChp ID0gMDsgaSA8IEFSUkFZX1NJWkUoY2JzKTsgaSsrKSB7DQo+PiBAQCAtNzI3LDYgKzg1MCwx OCBAQCBzdGF0aWMgdm9pZCBwbHVnaW5fZ2VuX3RiX3VkYXRhX3IoY29uc3Qgc3RydWN0IHFl bXVfcGx1Z2luX3RiICpwdGIsDQo+PiAgICAgICBpbmplY3RfdWRhdGFfY2IocHRiLT5jYnNb UExVR0lOX0NCX1JFR1VMQVJfUl0sIGJlZ2luX29wKTsNCj4+ICAgfQ0KPj4gICANCj4+ICtz dGF0aWMgdm9pZCBwbHVnaW5fZ2VuX3RiX2NvbmRfdWRhdGEoY29uc3Qgc3RydWN0IHFlbXVf cGx1Z2luX3RiICpwdGIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFRDR09wICpiZWdpbl9vcCkNCj4+ICt7DQo+PiArICAgIGluamVjdF9jb25kX3VkYXRh X2NiKHB0Yi0+Y2JzW1BMVUdJTl9DQl9DT05EXSwgYmVnaW5fb3ApOw0KPj4gK30NCj4+ICsN Cj4+ICtzdGF0aWMgdm9pZCBwbHVnaW5fZ2VuX3RiX2NvbmRfdWRhdGFfcihjb25zdCBzdHJ1 Y3QgcWVtdV9wbHVnaW5fdGIgKnB0YiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBUQ0dPcCAqYmVnaW5fb3ApDQo+PiArew0KPj4gKyAgICBpbmplY3Rf Y29uZF91ZGF0YV9jYihwdGItPmNic1tQTFVHSU5fQ0JfQ09ORF9SXSwgYmVnaW5fb3ApOw0K Pj4gK30NCj4+ICsNCj4+ICAgc3RhdGljIHZvaWQgcGx1Z2luX2dlbl90Yl9pbmxpbmVfYWRk X3U2NChjb25zdCBzdHJ1Y3QgcWVtdV9wbHVnaW5fdGIgKnB0YiwNCj4+ICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dPcCAqYmVnaW5fb3ApDQo+PiAg IHsNCj4+IEBAIC03NDUsNyArODgwLDYgQEAgc3RhdGljIHZvaWQgcGx1Z2luX2dlbl9pbnNu X3VkYXRhKGNvbnN0IHN0cnVjdCBxZW11X3BsdWdpbl90YiAqcHRiLA0KPj4gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHT3AgKmJlZ2luX29wLCBpbnQgaW5zbl9p ZHgpDQo+PiAgIHsNCj4+ICAgICAgIHN0cnVjdCBxZW11X3BsdWdpbl9pbnNuICppbnNuID0g Z19wdHJfYXJyYXlfaW5kZXgocHRiLT5pbnNucywgaW5zbl9pZHgpOw0KPj4gLQ0KPj4gICAg ICAgaW5qZWN0X3VkYXRhX2NiKGluc24tPmNic1tQTFVHSU5fQ0JfSU5TTl1bUExVR0lOX0NC X1JFR1VMQVJdLCBiZWdpbl9vcCk7DQo+PiAgIH0NCj4+ICAgDQo+PiBAQCAtNzUzLDEwICs4 ODcsMjMgQEAgc3RhdGljIHZvaWQgcGx1Z2luX2dlbl9pbnNuX3VkYXRhX3IoY29uc3Qgc3Ry dWN0IHFlbXVfcGx1Z2luX3RiICpwdGIsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFRDR09wICpiZWdpbl9vcCwgaW50IGluc25faWR4KQ0KPj4gICB7DQo+ PiAgICAgICBzdHJ1Y3QgcWVtdV9wbHVnaW5faW5zbiAqaW5zbiA9IGdfcHRyX2FycmF5X2lu ZGV4KHB0Yi0+aW5zbnMsIGluc25faWR4KTsNCj4+IC0NCj4+ICAgICAgIGluamVjdF91ZGF0 YV9jYihpbnNuLT5jYnNbUExVR0lOX0NCX0lOU05dW1BMVUdJTl9DQl9SRUdVTEFSX1JdLCBi ZWdpbl9vcCk7DQo+PiAgIH0NCj4+ICAgDQo+PiArc3RhdGljIHZvaWQgcGx1Z2luX2dlbl9p bnNuX2NvbmRfdWRhdGEoY29uc3Qgc3RydWN0IHFlbXVfcGx1Z2luX3RiICpwdGIsDQo+PiAr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVENHT3AgKmJlZ2luX29w LCBpbnQgaW5zbl9pZHgpDQo+PiArew0KPj4gKyAgICBzdHJ1Y3QgcWVtdV9wbHVnaW5faW5z biAqaW5zbiA9IGdfcHRyX2FycmF5X2luZGV4KHB0Yi0+aW5zbnMsIGluc25faWR4KTsNCj4+ ICsgICAgaW5qZWN0X2NvbmRfdWRhdGFfY2IoaW5zbi0+Y2JzW1BMVUdJTl9DQl9JTlNOXVtQ TFVHSU5fQ0JfQ09ORF0sIGJlZ2luX29wKTsNCj4+ICt9DQo+PiArDQo+PiArc3RhdGljIHZv aWQgcGx1Z2luX2dlbl9pbnNuX2NvbmRfdWRhdGFfcihjb25zdCBzdHJ1Y3QgcWVtdV9wbHVn aW5fdGIgKnB0YiwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBU Q0dPcCAqYmVnaW5fb3AsIGludCBpbnNuX2lkeCkNCj4+ICt7DQo+PiArICAgIHN0cnVjdCBx ZW11X3BsdWdpbl9pbnNuICppbnNuID0gZ19wdHJfYXJyYXlfaW5kZXgocHRiLT5pbnNucywg aW5zbl9pZHgpOw0KPj4gKyAgICBpbmplY3RfY29uZF91ZGF0YV9jYihpbnNuLT5jYnNbUExV R0lOX0NCX0lOU05dW1BMVUdJTl9DQl9DT05EX1JdLCBiZWdpbl9vcCk7DQo+PiArfQ0KPj4g Kw0KPj4gICBzdGF0aWMgdm9pZCBwbHVnaW5fZ2VuX2luc25faW5saW5lX2FkZF91NjQoY29u c3Qgc3RydWN0IHFlbXVfcGx1Z2luX3RiICpwdGIsDQo+PiAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBUQ0dPcCAqYmVnaW5fb3AsIGludCBpbnNuX2lk eCkNCj4+ICAgew0KPj4gQEAgLTg0Myw2ICs5OTAsMTUgQEAgc3RhdGljIHZvaWQgcHJfb3Bz KHZvaWQpDQo+PiAgICAgICAgICAgICAgIGNhc2UgUExVR0lOX0dFTl9DQl9VREFUQToNCj4+ ICAgICAgICAgICAgICAgICAgIHR5cGUgPSAidWRhdGEiOw0KPj4gICAgICAgICAgICAgICAg ICAgYnJlYWs7DQo+PiArICAgICAgICAgICAgY2FzZSBQTFVHSU5fR0VOX0NCX1VEQVRBX1I6 DQo+PiArICAgICAgICAgICAgICAgIHR5cGUgPSAidWRhdGEgKHJlYWQpIjsNCj4+ICsgICAg ICAgICAgICAgICAgYnJlYWs7DQo+PiArICAgICAgICAgICAgY2FzZSBQTFVHSU5fR0VOX0NC X0NPTkRfVURBVEE6DQo+PiArICAgICAgICAgICAgICAgIHR5cGUgPSAiY29uZCB1ZGF0YSI7 DQo+PiArICAgICAgICAgICAgICAgIGJyZWFrOw0KPj4gKyAgICAgICAgICAgIGNhc2UgUExV R0lOX0dFTl9DQl9DT05EX1VEQVRBX1I6DQo+PiArICAgICAgICAgICAgICAgIHR5cGUgPSAi Y29uZCB1ZGF0YSAocmVhZCkiOw0KPj4gKyAgICAgICAgICAgICAgICBicmVhazsNCj4+ICAg ICAgICAgICAgICAgY2FzZSBQTFVHSU5fR0VOX0NCX0lOTElORV9BRERfVTY0Og0KPj4gICAg ICAgICAgICAgICAgICAgdHlwZSA9ICJpbmxpbmUgYWRkIHU2NCI7DQo+PiAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4+IEBAIC04OTcsNiArMTA1MywxMiBAQCBzdGF0aWMgdm9pZCBw bHVnaW5fZ2VuX2luamVjdChzdHJ1Y3QgcWVtdV9wbHVnaW5fdGIgKnBsdWdpbl90YikNCj4+ ICAgICAgICAgICAgICAgICAgIGNhc2UgUExVR0lOX0dFTl9DQl9VREFUQV9SOg0KPj4gICAg ICAgICAgICAgICAgICAgICAgIHBsdWdpbl9nZW5fdGJfdWRhdGFfcihwbHVnaW5fdGIsIG9w KTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgICAgICAg ICAgY2FzZSBQTFVHSU5fR0VOX0NCX0NPTkRfVURBVEE6DQo+PiArICAgICAgICAgICAgICAg ICAgICBwbHVnaW5fZ2VuX3RiX2NvbmRfdWRhdGEocGx1Z2luX3RiLCBvcCk7DQo+PiArICAg ICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICsgICAgICAgICAgICAgICAgY2FzZSBQTFVH SU5fR0VOX0NCX0NPTkRfVURBVEFfUjoNCj4+ICsgICAgICAgICAgICAgICAgICAgIHBsdWdp bl9nZW5fdGJfY29uZF91ZGF0YV9yKHBsdWdpbl90Yiwgb3ApOw0KPj4gKyAgICAgICAgICAg ICAgICAgICAgYnJlYWs7DQo+PiAgICAgICAgICAgICAgICAgICBjYXNlIFBMVUdJTl9HRU5f Q0JfSU5MSU5FX0FERF9VNjQ6DQo+PiAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luX2dl bl90Yl9pbmxpbmVfYWRkX3U2NChwbHVnaW5fdGIsIG9wKTsNCj4+ICAgICAgICAgICAgICAg ICAgICAgICBicmVhazsNCj4+IEBAIC05MTksNiArMTA4MSwxMiBAQCBzdGF0aWMgdm9pZCBw bHVnaW5fZ2VuX2luamVjdChzdHJ1Y3QgcWVtdV9wbHVnaW5fdGIgKnBsdWdpbl90YikNCj4+ ICAgICAgICAgICAgICAgICAgIGNhc2UgUExVR0lOX0dFTl9DQl9VREFUQV9SOg0KPj4gICAg ICAgICAgICAgICAgICAgICAgIHBsdWdpbl9nZW5faW5zbl91ZGF0YV9yKHBsdWdpbl90Yiwg b3AsIGluc25faWR4KTsNCj4+ICAgICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICsg ICAgICAgICAgICAgICAgY2FzZSBQTFVHSU5fR0VOX0NCX0NPTkRfVURBVEE6DQo+PiArICAg ICAgICAgICAgICAgICAgICBwbHVnaW5fZ2VuX2luc25fY29uZF91ZGF0YShwbHVnaW5fdGIs IG9wLCBpbnNuX2lkeCk7DQo+PiArICAgICAgICAgICAgICAgICAgICBicmVhazsNCj4+ICsg ICAgICAgICAgICAgICAgY2FzZSBQTFVHSU5fR0VOX0NCX0NPTkRfVURBVEFfUjoNCj4+ICsg ICAgICAgICAgICAgICAgICAgIHBsdWdpbl9nZW5faW5zbl9jb25kX3VkYXRhX3IocGx1Z2lu X3RiLCBvcCwgaW5zbl9pZHgpOw0KPj4gKyAgICAgICAgICAgICAgICAgICAgYnJlYWs7DQo+ PiAgICAgICAgICAgICAgICAgICBjYXNlIFBMVUdJTl9HRU5fQ0JfSU5MSU5FX0FERF9VNjQ6 DQo+PiAgICAgICAgICAgICAgICAgICAgICAgcGx1Z2luX2dlbl9pbnNuX2lubGluZV9hZGRf dTY0KHBsdWdpbl90Yiwgb3AsIGluc25faWR4KTsNCj4+ICAgICAgICAgICAgICAgICAgICAg ICBicmVhazsNCj4+IGRpZmYgLS1naXQgYS9wbHVnaW5zL2FwaS5jIGIvcGx1Z2lucy9hcGku Yw0KPj4gaW5kZXggNGEwMzNjMTZmODMuLmYyNGQ2OGQ3YTY4IDEwMDY0NA0KPj4gLS0tIGEv cGx1Z2lucy9hcGkuYw0KPj4gKysrIGIvcGx1Z2lucy9hcGkuYw0KPj4gQEAgLTExMyw2ICsx MTMsMzEgQEAgdm9pZCBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X3RiX2V4ZWNfY2Ioc3Ry dWN0IHFlbXVfcGx1Z2luX3RiICp0YiwNCj4+ICAgICAgIH0NCj4+ICAgfQ0KPj4gICANCj4+ ICt2b2lkIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfdGJfZXhlY19jb25kX2NiKHN0cnVj dCBxZW11X3BsdWdpbl90YiAqdGIsDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBxZW11X3BsdWdpbl92Y3B1X3VkYXRhX2NiX3QgY2IsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVt IHFlbXVfcGx1Z2luX2NiX2ZsYWdzIGZsYWdzLA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgZW51bSBxZW11X3BsdWdpbl9jb25kIGNvbmQs DQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBx ZW11X3BsdWdpbl91NjQgZW50cnksDQo+PiArICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBpbW0sDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2b2lkICp1ZGF0YSkNCj4+ICt7DQo+ PiArICAgIGlmIChjb25kID09IFFFTVVfUExVR0lOX0NPTkRfTkVWRVIgfHwgdGItPm1lbV9v bmx5KSB7DQo+PiArICAgICAgICByZXR1cm47DQo+PiArICAgIH0NCj4+ICsgICAgaWYgKGNv bmQgPT0gUUVNVV9QTFVHSU5fQ09ORF9BTFdBWVMpIHsNCj4+ICsgICAgICAgIHFlbXVfcGx1 Z2luX3JlZ2lzdGVyX3ZjcHVfdGJfZXhlY19jYih0YiwgY2IsIGZsYWdzLCB1ZGF0YSk7DQo+ PiArICAgICAgICByZXR1cm47DQo+PiArICAgIH0NCj4+ICsgICAgaW50IGluZGV4ID0gZmxh Z3MgPT0gUUVNVV9QTFVHSU5fQ0JfUl9SRUdTIHx8DQo+PiArICAgICAgICAgICAgICAgIGZs YWdzID09IFFFTVVfUExVR0lOX0NCX1JXX1JFR1MgPw0KPj4gKyAgICAgICAgICAgICAgICBQ TFVHSU5fQ0JfQ09ORF9SIDogUExVR0lOX0NCX0NPTkQ7DQo+PiArDQo+PiArICAgIHBsdWdp bl9yZWdpc3Rlcl9keW5fY29uZF9jYl9fdWRhdGEoJnRiLT5jYnNbaW5kZXhdLA0KPj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNiLCBmbGFncywNCj4+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25kLCBlbnRyeSwgaW1t LA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVkYXRhKTsN Cj4+ICt9DQo+PiArDQo+PiAgIHZvaWQgcWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV90Yl9l eGVjX2lubGluZV9wZXJfdmNwdSgNCj4+ICAgICAgIHN0cnVjdCBxZW11X3BsdWdpbl90YiAq dGIsDQo+PiAgICAgICBlbnVtIHFlbXVfcGx1Z2luX29wIG9wLA0KPj4gQEAgLTE0MSw2ICsx NjYsMzIgQEAgdm9pZCBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X2luc25fZXhlY19jYihz dHJ1Y3QgcWVtdV9wbHVnaW5faW5zbiAqaW5zbiwNCj4+ICAgICAgIH0NCj4+ICAgfQ0KPj4g ICANCj4+ICt2b2lkIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfaW5zbl9leGVjX2NvbmRf Y2IoDQo+PiArICAgIHN0cnVjdCBxZW11X3BsdWdpbl9pbnNuICppbnNuLA0KPj4gKyAgICBx ZW11X3BsdWdpbl92Y3B1X3VkYXRhX2NiX3QgY2IsDQo+PiArICAgIGVudW0gcWVtdV9wbHVn aW5fY2JfZmxhZ3MgZmxhZ3MsDQo+PiArICAgIGVudW0gcWVtdV9wbHVnaW5fY29uZCBjb25k LA0KPj4gKyAgICBxZW11X3BsdWdpbl91NjQgZW50cnksDQo+PiArICAgIHVpbnQ2NF90IGlt bSwNCj4+ICsgICAgdm9pZCAqdWRhdGEpDQo+PiArew0KPj4gKyAgICBpZiAoY29uZCA9PSBR RU1VX1BMVUdJTl9DT05EX05FVkVSIHx8IGluc24tPm1lbV9vbmx5KSB7DQo+PiArICAgICAg ICByZXR1cm47DQo+PiArICAgIH0NCj4+ICsgICAgaWYgKGNvbmQgPT0gUUVNVV9QTFVHSU5f Q09ORF9BTFdBWVMpIHsNCj4+ICsgICAgICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVf aW5zbl9leGVjX2NiKGluc24sIGNiLCBmbGFncywgdWRhdGEpOw0KPj4gKyAgICAgICAgcmV0 dXJuOw0KPj4gKyAgICB9DQo+PiArICAgIGludCBpbmRleCA9IGZsYWdzID09IFFFTVVfUExV R0lOX0NCX1JfUkVHUyB8fA0KPj4gKyAgICAgICAgICAgICAgICBmbGFncyA9PSBRRU1VX1BM VUdJTl9DQl9SV19SRUdTID8NCj4+ICsgICAgICAgICAgICAgICAgUExVR0lOX0NCX0NPTkRf UiA6IFBMVUdJTl9DQl9DT05EOw0KPj4gKw0KPj4gKyAgICBwbHVnaW5fcmVnaXN0ZXJfZHlu X2NvbmRfY2JfX3VkYXRhKCZpbnNuLT5jYnNbUExVR0lOX0NCX0lOU05dW2luZGV4XSwNCj4+ ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYiwgZmxhZ3MsDQo+ PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uZCwgZW50cnks IGltbSwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZGF0 YSk7DQo+PiArfQ0KPj4gKw0KPj4gICB2b2lkIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVf aW5zbl9leGVjX2lubGluZV9wZXJfdmNwdSgNCj4+ICAgICAgIHN0cnVjdCBxZW11X3BsdWdp bl9pbnNuICppbnNuLA0KPj4gICAgICAgZW51bSBxZW11X3BsdWdpbl9vcCBvcCwNCj4+IGRp ZmYgLS1naXQgYS9wbHVnaW5zL2NvcmUuYyBiL3BsdWdpbnMvY29yZS5jDQo+PiBpbmRleCAx MWY3MjU5NDIyOS4uODJkNWYxNzQzOGUgMTAwNjQ0DQo+PiAtLS0gYS9wbHVnaW5zL2NvcmUu Yw0KPj4gKysrIGIvcGx1Z2lucy9jb3JlLmMNCj4+IEBAIC0zNDcsNiArMzQ3LDI1IEBAIHZv aWQgcGx1Z2luX3JlZ2lzdGVyX2R5bl9jYl9fdWRhdGEoR0FycmF5ICoqYXJyLA0KPj4gICAg ICAgZHluX2NiLT50eXBlID0gUExVR0lOX0NCX1JFR1VMQVI7DQo+PiAgIH0NCj4+ICAgDQo+ PiArdm9pZCBwbHVnaW5fcmVnaXN0ZXJfZHluX2NvbmRfY2JfX3VkYXRhKEdBcnJheSAqKmFy ciwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcWVtdV9w bHVnaW5fdmNwdV91ZGF0YV9jYl90IGNiLA0KPj4gKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBlbnVtIHFlbXVfcGx1Z2luX2NiX2ZsYWdzIGZsYWdzLA0KPj4g KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbnVtIHFlbXVfcGx1 Z2luX2NvbmQgY29uZCwNCj4+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcWVtdV9wbHVnaW5fdTY0IGVudHJ5LA0KPj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICB1aW50NjRfdCBpbW0sDQo+PiArICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnVkYXRhKQ0KPj4gK3sNCj4+ICsgICAg c3RydWN0IHFlbXVfcGx1Z2luX2R5bl9jYiAqZHluX2NiID0gcGx1Z2luX2dldF9keW5fY2Io YXJyKTsNCj4+ICsNCj4+ICsgICAgZHluX2NiLT51c2VycCA9IHVkYXRhOw0KPj4gKyAgICAv KiBOb3RlIGZsYWdzIGFyZSBkaXNjYXJkZWQgYXMgdW51c2VkLiAqLw0KPj4gKyAgICBkeW5f Y2ItPmYudmNwdV91ZGF0YSA9IGNiOw0KPj4gKyAgICBkeW5fY2ItPnR5cGUgPSBQTFVHSU5f Q0JfQ09ORDsNCj4+ICsgICAgZHluX2NiLT5jb25kX2NiLmNvbmQgPSBjb25kOw0KPj4gKyAg ICBkeW5fY2ItPmNvbmRfY2IuZW50cnkgPSBlbnRyeTsNCj4+ICsgICAgZHluX2NiLT5jb25k X2NiLmltbSA9IGltbTsNCj4+ICt9DQo+PiArDQo+PiAgIHZvaWQgcGx1Z2luX3JlZ2lzdGVy X3ZjcHVfbWVtX2NiKEdBcnJheSAqKmFyciwNCj4+ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgdm9pZCAqY2IsDQo+PiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGVudW0gcWVtdV9wbHVnaW5fY2JfZmxhZ3MgZmxhZ3MsDQo+PiBkaWZmIC0tZ2l0 IGEvcGx1Z2lucy9xZW11LXBsdWdpbnMuc3ltYm9scyBiL3BsdWdpbnMvcWVtdS1wbHVnaW5z LnN5bWJvbHMNCj4+IGluZGV4IGE5ZmFjMDU2YzdmLi5hYTBhNzdhMzE5ZiAxMDA2NDQNCj4+ IC0tLSBhL3BsdWdpbnMvcWVtdS1wbHVnaW5zLnN5bWJvbHMNCj4+ICsrKyBiL3BsdWdpbnMv cWVtdS1wbHVnaW5zLnN5bWJvbHMNCj4+IEBAIC0yNyw2ICsyNyw3IEBADQo+PiAgICAgcWVt dV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV9pZGxlX2NiOw0KPj4gICAgIHFlbXVfcGx1Z2luX3Jl Z2lzdGVyX3ZjcHVfaW5pdF9jYjsNCj4+ICAgICBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1 X2luc25fZXhlY19jYjsNCj4+ICsgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfaW5zbl9l eGVjX2NvbmRfY2I7DQo+PiAgICAgcWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV9pbnNuX2V4 ZWNfaW5saW5lX3Blcl92Y3B1Ow0KPj4gICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVf bWVtX2NiOw0KPj4gICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3ZjcHVfbWVtX2lubGluZV9w ZXJfdmNwdTsNCj4+IEBAIC0zNCw2ICszNSw3IEBADQo+PiAgICAgcWVtdV9wbHVnaW5fcmVn aXN0ZXJfdmNwdV9zeXNjYWxsX2NiOw0KPj4gICAgIHFlbXVfcGx1Z2luX3JlZ2lzdGVyX3Zj cHVfc3lzY2FsbF9yZXRfY2I7DQo+PiAgICAgcWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV90 Yl9leGVjX2NiOw0KPj4gKyAgcWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV90Yl9leGVjX2Nv bmRfY2I7DQo+PiAgICAgcWVtdV9wbHVnaW5fcmVnaXN0ZXJfdmNwdV90Yl9leGVjX2lubGlu ZV9wZXJfdmNwdTsNCj4+ICAgICBxZW11X3BsdWdpbl9yZWdpc3Rlcl92Y3B1X3RiX3RyYW5z X2NiOw0KPj4gICAgIHFlbXVfcGx1Z2luX3Jlc2V0Ow0KPiANCg==