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 mail.kernel.org (mail.kernel.org [198.145.29.99]) by smtp.lore.kernel.org (Postfix) with ESMTP id 5C73AC433EF for ; Wed, 20 Oct 2021 09:04:00 +0000 (UTC) Received: from smtp4.osuosl.org (smtp4.osuosl.org [140.211.166.137]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by mail.kernel.org (Postfix) with ESMTPS id 0627861354 for ; Wed, 20 Oct 2021 09:03:59 +0000 (UTC) DMARC-Filter: OpenDMARC Filter v1.4.1 mail.kernel.org 0627861354 Authentication-Results: mail.kernel.org; dmarc=fail (p=none dis=none) header.from=redhat.com Authentication-Results: mail.kernel.org; spf=pass smtp.mailfrom=lists.linux-foundation.org Received: from localhost (localhost [127.0.0.1]) by smtp4.osuosl.org (Postfix) with ESMTP id C2FE2405EC; Wed, 20 Oct 2021 09:03:59 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Received: from smtp4.osuosl.org ([127.0.0.1]) by localhost (smtp4.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id FOVhI8yMxiKB; Wed, 20 Oct 2021 09:03:58 +0000 (UTC) Received: from lists.linuxfoundation.org (lf-lists.osuosl.org [IPv6:2605:bc80:3010:104::8cd3:938]) by smtp4.osuosl.org (Postfix) with ESMTPS id 8C5F240336; Wed, 20 Oct 2021 09:03:57 +0000 (UTC) Received: from lf-lists.osuosl.org (localhost [127.0.0.1]) by lists.linuxfoundation.org (Postfix) with ESMTP id 54723C000F; Wed, 20 Oct 2021 09:03:57 +0000 (UTC) Received: from smtp3.osuosl.org (smtp3.osuosl.org [140.211.166.136]) by lists.linuxfoundation.org (Postfix) with ESMTP id 5CEF5C000D for ; Wed, 20 Oct 2021 09:03:56 +0000 (UTC) Received: from localhost (localhost [127.0.0.1]) by smtp3.osuosl.org (Postfix) with ESMTP id 534076072D for ; Wed, 20 Oct 2021 09:03:56 +0000 (UTC) X-Virus-Scanned: amavisd-new at osuosl.org Authentication-Results: smtp3.osuosl.org (amavisd-new); dkim=pass (1024-bit key) header.d=redhat.com Received: from smtp3.osuosl.org ([127.0.0.1]) by localhost (smtp3.osuosl.org [127.0.0.1]) (amavisd-new, port 10024) with ESMTP id WFbA9OPsnjjO for ; Wed, 20 Oct 2021 09:03:54 +0000 (UTC) X-Greylist: domain auto-whitelisted by SQLgrey-1.8.0 Received: from us-smtp-delivery-124.mimecast.com (us-smtp-delivery-124.mimecast.com [216.205.24.124]) by smtp3.osuosl.org (Postfix) with ESMTPS id 2413160602 for ; Wed, 20 Oct 2021 09:03:53 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=redhat.com; s=mimecast20190719; t=1634720632; h=from:from:reply-to:subject:subject:date:date:message-id:message-id: to:to:cc:cc:mime-version:mime-version:content-type:content-type: content-transfer-encoding:content-transfer-encoding: in-reply-to:in-reply-to:references:references; bh=uPa+G+EcOKIk+DnST/Z0qBrDiuCIB9AbvSS2mQg806c=; b=AEO2I+JfKuWL66axt3P+yejOpB4/KII1z2kSNae9nk5UxGNfKmcvoK2DRJFyCZP2KHHW5o 0W4pWBsSRMXra3rUjHkjicDuM4vBcEoRTA6TsHKsg4uYYWLzWwC/85/kAIxvIwzBKRXf3t xQT2II6v1lY4FmzuFIZlz9BP10cS4qU= Received: from mail-lj1-f200.google.com (mail-lj1-f200.google.com [209.85.208.200]) (Using TLS) by relay.mimecast.com with ESMTP id us-mta-561-GSsnxPy7OCuF4yvf50RUkQ-1; Wed, 20 Oct 2021 05:03:51 -0400 X-MC-Unique: GSsnxPy7OCuF4yvf50RUkQ-1 Received: by mail-lj1-f200.google.com with SMTP id v13-20020a2e2f0d000000b0021126b5cca2so1526843ljv.19 for ; Wed, 20 Oct 2021 02:03:51 -0700 (PDT) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20210112; h=x-gm-message-state:mime-version:references:in-reply-to:from:date :message-id:subject:to:cc:content-transfer-encoding; bh=uPa+G+EcOKIk+DnST/Z0qBrDiuCIB9AbvSS2mQg806c=; b=DcEFhSYDR03QKFTuMJ1CLm8K3BfCnsFvUOxIr3gHliQ5gNPFFqR+qr4EIJWIGjIGFP bf4CaDySEubyN6b6M1A7PAIFmsHSxoUa6gtWkR6T8kG7uisCtJyFAeLeYd+ixgjbYvXL GgWuVnh8rbT0Lj8ALx2q5JGGMZWeNmXS0hP84MDq/e4HkCfZafFbTk2snkd0peq66qo3 ydCUc613Jr1uuwmDPV0fLMUvNhyiBGQSarub1FuDOfZXwLfshXuXzB6kCgrmuHOQ1Xhx xeyx8cyW5W9aqHChWFvLyl2Y3kueiFnoPBSxYSU8DD/c0KSGqsFWOqTWrdm0fFiMD3Tf jfHQ== X-Gm-Message-State: AOAM530zF+PefmQjwsbE7rkyisKjCFsTxax97eNYgDDR0HDEDjQFLN14 7mjEl318yDHVHtLMOxWnEkXz8fsHz2KzkiuQTKVFP9oQo3QpcXA+ez0Glj4Y/IFqNh8ngAmDfiB /kd2t8opmyRlKqZyQ9Lz5WOO/ZXZV/mo+nzTx7UovBMYprTNrAF0/ebTq6g== X-Received: by 2002:a2e:5c8:: with SMTP id 191mr12527979ljf.107.1634720629693; Wed, 20 Oct 2021 02:03:49 -0700 (PDT) X-Google-Smtp-Source: ABdhPJwedZdGsGbXWESIB+xX4h2of3eqda0QX5D9OOTiMzR7h2kuAF684R7K1Asz8xC6AvaS2cysF6R0SOapXBqdUOU= X-Received: by 2002:a2e:5c8:: with SMTP id 191mr12527937ljf.107.1634720629259; Wed, 20 Oct 2021 02:03:49 -0700 (PDT) MIME-Version: 1.0 References: <20211001070603.307037-1-eperezma@redhat.com> <20211001070603.307037-21-eperezma@redhat.com> In-Reply-To: From: Jason Wang Date: Wed, 20 Oct 2021 17:03:38 +0800 Message-ID: Subject: Re: [RFC PATCH v4 20/20] vdpa: Add custom IOTLB translations to SVQ To: Eugenio Perez Martin Authentication-Results: relay.mimecast.com; auth=pass smtp.auth=CUSA124A263 smtp.mailfrom=jasowang@redhat.com X-Mimecast-Spam-Score: 0 X-Mimecast-Originator: redhat.com Cc: Parav Pandit , Markus Armbruster , "Michael S. Tsirkin" , qemu-level , virtualization , Harpreet Singh Anand , Xiao W Wang , Stefan Hajnoczi , Eli Cohen , Eric Blake , Michael Lilja X-BeenThere: virtualization@lists.linux-foundation.org X-Mailman-Version: 2.1.15 Precedence: list List-Id: Linux virtualization List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 Errors-To: virtualization-bounces@lists.linux-foundation.org Sender: "Virtualization" T24gV2VkLCBPY3QgMjAsIDIwMjEgYXQgMjo1MiBQTSBFdWdlbmlvIFBlcmV6IE1hcnRpbgo8ZXBl cmV6bWFAcmVkaGF0LmNvbT4gd3JvdGU6Cj4KPiBPbiBXZWQsIE9jdCAyMCwgMjAyMSBhdCA0OjA3 IEFNIEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4KPiA+IE9uIFdl ZCwgT2N0IDIwLCAyMDIxIGF0IDEwOjAyIEFNIEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5j b20+IHdyb3RlOgo+ID4gPgo+ID4gPiBPbiBUdWUsIE9jdCAxOSwgMjAyMSBhdCA2OjI5IFBNIEV1 Z2VuaW8gUGVyZXogTWFydGluCj4gPiA+IDxlcGVyZXptYUByZWRoYXQuY29tPiB3cm90ZToKPiA+ ID4gPgo+ID4gPiA+IE9uIFR1ZSwgT2N0IDE5LCAyMDIxIGF0IDExOjI1IEFNIEphc29uIFdhbmcg PGphc293YW5nQHJlZGhhdC5jb20+IHdyb3RlOgo+ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4g PiDlnKggMjAyMS8xMC8xIOS4i+WNiDM6MDYsIEV1Z2VuaW8gUMOpcmV6IOWGmemBkzoKPiA+ID4g PiA+ID4gVXNlIHRyYW5zbGF0aW9ucyBhZGRlZCBpbiBWaG9zdElPVkFUcmVlIGluIFNWUS4KPiA+ ID4gPiA+ID4KPiA+ID4gPiA+ID4gTm93IGV2ZXJ5IGVsZW1lbnQgbmVlZHMgdG8gc3RvcmUgdGhl IHByZXZpb3VzIGFkZHJlc3MgYWxzbywgc28gVmlydFF1ZXVlCj4gPiA+ID4gPiA+IGNhbiBjb25z dW1lIHRoZSBlbGVtZW50cyBwcm9wZXJseS4gVGhpcyBhZGRzIGEgbGl0dGxlIG92ZXJoZWFkIHBl ciBWUQo+ID4gPiA+ID4gPiBlbGVtZW50LCBoYXZpbmcgdG8gYWxsb2NhdGUgbW9yZSBtZW1vcnkg dG8gc3Rhc2ggdGhlbS4gQXMgYSBwb3NzaWJsZQo+ID4gPiA+ID4gPiBvcHRpbWl6YXRpb24sIHRo aXMgYWxsb2NhdGlvbiBjb3VsZCBiZSBhdm9pZGVkIGlmIHRoZSBkZXNjcmlwdG9yIGlzIG5vdAo+ ID4gPiA+ID4gPiBhIGNoYWluIGJ1dCBhIHNpbmdsZSBvbmUsIGJ1dCB0aGlzIGlzIGxlZnQgdW5k b25lLgo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBUT0RPOiBpb3ZhIHJhbmdlIHNob3VsZCBiZSBx dWVyaWVkIGJlZm9yZSwgYW5kIGFkZCBsb2dpYyB0byBmYWlsIHdoZW4KPiA+ID4gPiA+ID4gR1BB IGlzIG91dHNpZGUgb2YgaXRzIHJhbmdlIGFuZCBtZW1vcnkgbGlzdGVuZXIgb3Igc3ZxIGFkZCBp dC4KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gU2lnbmVkLW9mZi1ieTogRXVnZW5pbyBQw6lyZXog PGVwZXJlem1hQHJlZGhhdC5jb20+Cj4gPiA+ID4gPiA+IC0tLQo+ID4gPiA+ID4gPiAgIGh3L3Zp cnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmggfCAgIDQgKy0KPiA+ID4gPiA+ID4gICBody92 aXJ0aW8vdmhvc3Qtc2hhZG93LXZpcnRxdWV1ZS5jIHwgMTMwICsrKysrKysrKysrKysrKysrKysr KysrKy0tLS0tCj4gPiA+ID4gPiA+ICAgaHcvdmlydGlvL3Zob3N0LXZkcGEuYyAgICAgICAgICAg ICB8ICA0MCArKysrKysrKy0KPiA+ID4gPiA+ID4gICBody92aXJ0aW8vdHJhY2UtZXZlbnRzICAg ICAgICAgICAgIHwgICAxICsKPiA+ID4gPiA+ID4gICA0IGZpbGVzIGNoYW5nZWQsIDE1MiBpbnNl cnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gZGlmZiAt LWdpdCBhL2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmlydHF1ZXVlLmggYi9ody92aXJ0aW8vdmhv c3Qtc2hhZG93LXZpcnRxdWV1ZS5oCj4gPiA+ID4gPiA+IGluZGV4IGI3YmFhNDI0YTcuLmEwZTZi NTI2N2EgMTAwNjQ0Cj4gPiA+ID4gPiA+IC0tLSBhL2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmly dHF1ZXVlLmgKPiA+ID4gPiA+ID4gKysrIGIvaHcvdmlydGlvL3Zob3N0LXNoYWRvdy12aXJ0cXVl dWUuaAo+ID4gPiA+ID4gPiBAQCAtMTEsNiArMTEsNyBAQAo+ID4gPiA+ID4gPiAgICNkZWZpbmUg VkhPU1RfU0hBRE9XX1ZJUlRRVUVVRV9ICj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgI2luY2x1 ZGUgImh3L3ZpcnRpby92aG9zdC5oIgo+ID4gPiA+ID4gPiArI2luY2x1ZGUgImh3L3ZpcnRpby92 aG9zdC1pb3ZhLXRyZWUuaCIKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICB0eXBlZGVmIHN0cnVj dCBWaG9zdFNoYWRvd1ZpcnRxdWV1ZSBWaG9zdFNoYWRvd1ZpcnRxdWV1ZTsKPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gQEAgLTI4LDcgKzI5LDggQEAgYm9vbCB2aG9zdF9zdnFfc3RhcnQoc3RydWN0 IHZob3N0X2RldiAqZGV2LCB1bnNpZ25lZCBpZHgsCj4gPiA+ID4gPiA+ICAgdm9pZCB2aG9zdF9z dnFfc3RvcChzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsIHVuc2lnbmVkIGlkeCwKPiA+ID4gPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgIFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEpOwo+ID4gPiA+ ID4gPgo+ID4gPiA+ID4gPiAtVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnZob3N0X3N2cV9uZXcoc3Ry dWN0IHZob3N0X2RldiAqZGV2LCBpbnQgaWR4KTsKPiA+ID4gPiA+ID4gK1Zob3N0U2hhZG93Vmly dHF1ZXVlICp2aG9zdF9zdnFfbmV3KHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgaW50IGlkeCwKPiA+ ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZob3N0SU9WQVRy ZWUgKmlvdmFfbWFwKTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICB2b2lkIHZob3N0X3N2cV9m cmVlKFZob3N0U2hhZG93VmlydHF1ZXVlICp2cSk7Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IGRp ZmYgLS1naXQgYS9ody92aXJ0aW8vdmhvc3Qtc2hhZG93LXZpcnRxdWV1ZS5jIGIvaHcvdmlydGlv L3Zob3N0LXNoYWRvdy12aXJ0cXVldWUuYwo+ID4gPiA+ID4gPiBpbmRleCAyZmQwYmFiNzVkLi45 ZGI1Mzg1NDdlIDEwMDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9ody92aXJ0aW8vdmhvc3Qtc2hhZG93 LXZpcnRxdWV1ZS5jCj4gPiA+ID4gPiA+ICsrKyBiL2h3L3ZpcnRpby92aG9zdC1zaGFkb3ctdmly dHF1ZXVlLmMKPiA+ID4gPiA+ID4gQEAgLTExLDEyICsxMSwxOSBAQAo+ID4gPiA+ID4gPiAgICNp bmNsdWRlICJody92aXJ0aW8vdmhvc3Qtc2hhZG93LXZpcnRxdWV1ZS5oIgo+ID4gPiA+ID4gPiAg ICNpbmNsdWRlICJody92aXJ0aW8vdmhvc3QuaCIKPiA+ID4gPiA+ID4gICAjaW5jbHVkZSAiaHcv dmlydGlvL3ZpcnRpby1hY2Nlc3MuaCIKPiA+ID4gPiA+ID4gKyNpbmNsdWRlICJody92aXJ0aW8v dmhvc3QtaW92YS10cmVlLmgiCj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgI2luY2x1ZGUgInN0 YW5kYXJkLWhlYWRlcnMvbGludXgvdmhvc3RfdHlwZXMuaCIKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gICAjaW5jbHVkZSAicWVtdS9lcnJvci1yZXBvcnQuaCIKPiA+ID4gPiA+ID4gICAjaW5jbHVk ZSAicWVtdS9tYWluLWxvb3AuaCIKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gK3R5cGVkZWYgc3Ry dWN0IFNWUUVsZW1lbnQgewo+ID4gPiA+ID4gPiArICAgIFZpcnRRdWV1ZUVsZW1lbnQgZWxlbTsK PiA+ID4gPiA+ID4gKyAgICB2b2lkICoqaW5fc2dfc3Rhc2g7Cj4gPiA+ID4gPiA+ICsgICAgdm9p ZCAqKm91dF9zZ19zdGFzaDsKPiA+ID4gPiA+ID4gK30gU1ZRRWxlbWVudDsKPiA+ID4gPiA+ID4g Kwo+ID4gPiA+ID4gPiAgIC8qIFNoYWRvdyB2aXJ0cXVldWUgdG8gcmVsYXkgbm90aWZpY2F0aW9u cyAqLwo+ID4gPiA+ID4gPiAgIHR5cGVkZWYgc3RydWN0IFZob3N0U2hhZG93VmlydHF1ZXVlIHsK PiA+ID4gPiA+ID4gICAgICAgLyogU2hhZG93IHZyaW5nICovCj4gPiA+ID4gPiA+IEBAIC00Niw4 ICs1MywxMSBAQCB0eXBlZGVmIHN0cnVjdCBWaG9zdFNoYWRvd1ZpcnRxdWV1ZSB7Cj4gPiA+ID4g PiA+ICAgICAgIC8qIFZpcnRpbyBkZXZpY2UgKi8KPiA+ID4gPiA+ID4gICAgICAgVmlydElPRGV2 aWNlICp2ZGV2Owo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiArICAgIC8qIElPVkEgbWFwcGluZyBp ZiB1c2VkICovCj4gPiA+ID4gPiA+ICsgICAgVmhvc3RJT1ZBVHJlZSAqaW92YV9tYXA7Cj4gPiA+ ID4gPiA+ICsKPiA+ID4gPiA+ID4gICAgICAgLyogTWFwIGZvciByZXR1cm5pbmcgZ3Vlc3QncyBk ZXNjcmlwdG9ycyAqLwo+ID4gPiA+ID4gPiAtICAgIFZpcnRRdWV1ZUVsZW1lbnQgKipyaW5nX2lk X21hcHM7Cj4gPiA+ID4gPiA+ICsgICAgU1ZRRWxlbWVudCAqKnJpbmdfaWRfbWFwczsKPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gICAgICAgLyogTmV4dCBoZWFkIHRvIGV4cG9zZSB0byBkZXZpY2Ug Ki8KPiA+ID4gPiA+ID4gICAgICAgdWludDE2X3QgYXZhaWxfaWR4X3NoYWRvdzsKPiA+ID4gPiA+ ID4gQEAgLTc5LDEzICs4OSw2IEBAIGJvb2wgdmhvc3Rfc3ZxX3ZhbGlkX2RldmljZV9mZWF0dXJl cyh1aW50NjRfdCAqZGV2X2ZlYXR1cmVzKQo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGNvbnRp bnVlOwo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgICAgICAgY2FzZSBWSVJUSU9fRl9BQ0NF U1NfUExBVEZPUk06Cj4gPiA+ID4gPiA+IC0gICAgICAgICAgICAvKiBTVlEgbmVlZHMgdGhpcyBm ZWF0dXJlIGRpc2FibGVkLiBDYW4ndCBjb250aW51ZSAqLwo+ID4gPiA+ID4gPiAtICAgICAgICAg ICAgaWYgKCpkZXZfZmVhdHVyZXMgJiBCSVRfVUxMKGIpKSB7Cj4gPiA+ID4gPiA+IC0gICAgICAg ICAgICAgICAgY2xlYXJfYml0KGIsIGRldl9mZWF0dXJlcyk7Cj4gPiA+ID4gPiA+IC0gICAgICAg ICAgICAgICAgciA9IGZhbHNlOwo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgfQo+ID4gPiA+ID4g PiAtICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4gPiA+IC0KPiA+ID4gPiA+ID4gICAgICAgICAg IGNhc2UgVklSVElPX0ZfVkVSU0lPTl8xOgo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIC8qIFNW USBuZWVkcyB0aGlzIGZlYXR1cmUsIHNvIGNhbid0IGNvbnRpbnVlICovCj4gPiA+ID4gPiA+ICAg ICAgICAgICAgICAgaWYgKCEoKmRldl9mZWF0dXJlcyAmIEJJVF9VTEwoYikpKSB7Cj4gPiA+ID4g PiA+IEBAIC0xMjYsNiArMTI5LDY0IEBAIHN0YXRpYyB2b2lkIHZob3N0X3N2cV9zZXRfbm90aWZp Y2F0aW9uKFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEsIGJvb2wgZW5hYmxlKQo+ID4gPiA+ID4g PiAgICAgICB9Cj4gPiA+ID4gPiA+ICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiArc3RhdGlj IHZvaWQgdmhvc3Rfc3ZxX3N0YXNoX2FkZHIodm9pZCAqKipzdGFzaCwgY29uc3Qgc3RydWN0IGlv dmVjICppb3YsCj4gPiA+ID4gPiA+ICsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aXplX3QgbnVtKQo+ID4gPiA+ID4gPiArewo+ID4gPiA+ID4gPiArICAgIHNpemVfdCBpOwo+ID4g PiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgaWYgKG51bSA9PSAwKSB7Cj4gPiA+ID4gPiA+ICsg ICAgICAgIHJldHVybjsKPiA+ID4gPiA+ID4gKyAgICB9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ ID4gKyAgICAqc3Rhc2ggPSBnX25ldyh2b2lkICosIG51bSk7Cj4gPiA+ID4gPiA+ICsgICAgZm9y IChpID0gMDsgaSA8IG51bTsgKytpKSB7Cj4gPiA+ID4gPiA+ICsgICAgICAgICgqc3Rhc2gpW2ld ID0gaW92W2ldLmlvdl9iYXNlOwo+ID4gPiA+ID4gPiArICAgIH0KPiA+ID4gPiA+ID4gK30KPiA+ ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArc3RhdGljIHZvaWQgdmhvc3Rfc3ZxX3Vuc3Rhc2hfYWRk cih2b2lkICoqc3Rhc2gsIHN0cnVjdCBpb3ZlYyAqaW92LCBzaXplX3QgbnVtKQo+ID4gPiA+ID4g PiArewo+ID4gPiA+ID4gPiArICAgIHNpemVfdCBpOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ ICsgICAgaWYgKG51bSA9PSAwKSB7Cj4gPiA+ID4gPiA+ICsgICAgICAgIHJldHVybjsKPiA+ID4g PiA+ID4gKyAgICB9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICBmb3IgKGkgPSAwOyBp IDwgbnVtOyArK2kpIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgaW92W2ldLmlvdl9iYXNlID0gc3Rh c2hbaV07Cj4gPiA+ID4gPiA+ICsgICAgfQo+ID4gPiA+ID4gPiArICAgIGdfZnJlZShzdGFzaCk7 Cj4gPiA+ID4gPiA+ICt9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gK3N0YXRpYyB2b2lkIHZo b3N0X3N2cV90cmFuc2xhdGVfYWRkcihjb25zdCBWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqc3ZxLAo+ ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCBp b3ZlYyAqaW92ZWMsIHNpemVfdCBudW0pCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ID4gPiA+ICsgICAg c2l6ZV90IGk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICBmb3IgKGkgPSAwOyBpIDwg bnVtOyArK2kpIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgVmhvc3RETUFNYXAgbmVlZGxlID0gewo+ ID4gPiA+ID4gPiArICAgICAgICAgICAgLnRyYW5zbGF0ZWRfYWRkciA9IGlvdmVjW2ldLmlvdl9i YXNlLAo+ID4gPiA+ID4gPiArICAgICAgICAgICAgLnNpemUgPSBpb3ZlY1tpXS5pb3ZfbGVuLAo+ ID4gPiA+ID4gPiArICAgICAgICB9Owo+ID4gPiA+ID4gPiArICAgICAgICBzaXplX3Qgb2ZmOwo+ ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgICAgIGNvbnN0IFZob3N0RE1BTWFwICptYXAg PSB2aG9zdF9pb3ZhX3RyZWVfZmluZF9pb3ZhKHN2cS0+aW92YV9tYXAsCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICZuZWVkbGUpOwo+ID4gPiA+ID4KPiA+ID4gPiA+Cj4gPiA+ID4gPiBJcyBpdCBwb3NzaWJsZSB0 aGF0IHdlIGVuZCB1cCB3aXRoIG1vcmUgdGhhbiBvbmUgbWFwcyBoZXJlPwo+ID4gPiA+ID4KPiA+ ID4gPgo+ID4gPiA+IEFjdHVhbGx5IGl0IGlzIHBvc3NpYmxlLCBzaW5jZSB0aGVyZSBpcyBubyBn dWFyYW50ZWUgdGhhdCBvbmUKPiA+ID4gPiBkZXNjcmlwdG9yIChvciBpbmRpcmVjdCBkZXNjcmlw dG9yKSBtYXBzIGV4YWN0bHkgdG8gb25lIGlvdi4gSXQgY291bGQKPiA+ID4gPiBtYXAgdG8gbWFu eSBpZiBxZW11IHZhZGRyIGlzIG5vdCBjb250aWd1b3VzIGJ1dCBHUEEgKyBzaXplIGlzLiBUaGlz IGlzCj4gPiA+ID4gc29tZXRoaW5nIHRoYXQgbXVzdCBiZSBmaXhlZCBmb3IgdGhlIG5leHQgcmV2 aXNpb24sIHNvIHRoYW5rcyBmb3IKPiA+ID4gPiBwb2ludGluZyBpdCBvdXQhCj4gPiA+ID4KPiA+ ID4gPiBUYWtpbmcgdGhhdCBpbnRvIGFjY291bnQsIHRoZSBjb25kaXRpb24gdGhhdCBzdnEgdnJp bmcgYXZhaWxfaWR4IC0KPiA+ID4gPiB1c2VkX2lkeCB3YXMgYWx3YXlzIGxlc3Mgb3IgZXF1YWwg dGhhbiBndWVzdCdzIHZyaW5nIGF2YWlsX2lkeCAtCj4gPiA+ID4gdXNlZF9pZHggaXMgbm90IHRy dWUgYW55bW9yZS4gQ2hlY2tpbmcgZm9yIHRoYXQgYmVmb3JlIGFkZGluZyBidWZmZXJzCj4gPiA+ ID4gdG8gU1ZRIGlzIHRoZSBlYXN5IHBhcnQsIGJ1dCBob3cgY291bGQgd2UgcmVjb3ZlciBpbiB0 aGF0IGNhc2U/Cj4gPiA+ID4KPiA+ID4gPiBJIHRoaW5rIHRoYXQgdGhlIGVhc3kgc29sdXRpb24g aXMgdG8gY2hlY2sgZm9yIG1vcmUgYXZhaWxhYmxlIGJ1ZmZlcnMKPiA+ID4gPiB1bmNvbmRpdGlv bmFsbHkgYXQgdGhlIGVuZCBvZiB2aG9zdF9zdnFfaGFuZGxlX2NhbGwsIHdoaWNoIGhhbmRsZXMg dGhlCj4gPiA+ID4gU1ZRIHVzZWQgYW5kIGlzIHN1cHBvc2VkIHRvIG1ha2UgbW9yZSByb29tIGZv ciBhdmFpbGFibGUgYnVmZmVycy4gU28KPiA+ID4gPiB2aG9zdF9oYW5kbGVfZ3Vlc3Rfa2ljayB3 b3VsZCBub3QgY2hlY2sgaWYgZXZlbnRmZCBpcyBzZXQgb3Igbm90Cj4gPiA+ID4gYW55bW9yZS4K PiA+ID4gPgo+ID4gPiA+IFdvdWxkIHRoYXQgbWFrZSBzZW5zZT8KPiA+ID4KPiA+ID4gWWVzLCBJ IHRoaW5rIGl0IHNob3VsZCB3b3JrLgo+ID4KPiA+IEJ0dywgSSB3b25kZXIgaG93IHRvIGhhbmRs ZSBpbmRpcmVjdCBkZXNjcmlwdG9ycy4gU1ZRIGRvZXNuJ3QgdXNlCj4gPiBpbmRpcmVjdCBkZXNj cmlwdG9ycyBmb3Igbm93LCBidXQgaXQgbG9va3MgbGlrZSBhIG11c3Qgb3RoZXJ3aXNlIHdlCj4g PiBtYXkgZW5kIHVwIFNWUSBpcyBmdWxsIGJlZm9yZSBWUS4KPiA+Cj4KPiBXZSBjYW4gZ2V0IHRv IHRoYXQgc2l0dWF0aW9uIHdpdGhvdXQgaW5kaXJlY3QgdG9vLCBpZiBhIHNpbmdsZQo+IGRlc2Ny aXB0b3IgbWFwcyB0byBtb3JlIHRoYW4gb25lIHNnIGJ1ZmZlci4gVGhlIG5leHQgcmV2aXNpb24g aXMgZ29pbmcKPiB0byBjb250cm9sIHRoYXQgdG9vLgo+Cj4gPiBJdCBsb29rcyB0byBtZSBhbiBl YXN5IHdheSBpcyB0byBhbHdheXMgdXNlIGluZGlyZWN0IGRlc2NyaXB0b3JzIGlmICNzZyA+PSAy Pwo+ID4KPgo+IEkgd2lsbCB1c2UgdGhhdCwgYnV0IHRoYXQgZG9lcyBub3Qgc29sdmUgdGhlIGNh c2Ugd2hlcmUgYSBkZXNjcmlwdG9yCj4gbWFwcyB0byA+IDEgZGlmZmVyZW50IGJ1ZmZlcnMgaW4g cWVtdSB2YWRkci4KClJpZ2h0LCBzbyB3ZSBuZWVkIHRvIGRlYWwgd2l0aCB0aGUgY2FzZSB3aGVu IFNWUSBpcyBvdXQgb2Ygc3BhY2UuCgoKPiBTbyBJIHRoaW5rIHRoYXQgc29tZQo+IGNoZWNrIGFm dGVyIG1hcmtpbmcgZGVzY3JpcHRvcnMgYXMgdXNlZCBpcyBhIG11c3Qgc29tZWhvdy4KCkkgdGhv dWdodCBpdCBzaG91bGQgYmUgYmVmb3JlIHByb2Nlc3NpbmcgdGhlIGF2YWlsYWJsZSBidWZmZXI/ IEl0J3MKdGhlIGd1ZXN0IGRyaXZlciB0aGF0IG1ha2Ugc3VyZSB0aGVyZSdzIHN1ZmZpY2llbnQg c3BhY2UgZm9yIHVzZWQKcmluZz8KClRoYW5rcwoKPgo+Cj4gPiBUaGFua3MKPiA+Cj4gPiA+Cj4g PiA+IFRoYW5rcwo+ID4gPgo+ID4gPiA+Cj4gPiA+ID4gVGhhbmtzIQo+ID4gPiA+Cj4gPiA+ID4g Pgo+ID4gPiA+ID4gPiArICAgICAgICAvKgo+ID4gPiA+ID4gPiArICAgICAgICAgKiBNYXAgY2Fu bm90IGJlIE5VTEwgc2luY2UgaW92YSBtYXAgY29udGFpbnMgYWxsIGd1ZXN0IHNwYWNlIGFuZAo+ ID4gPiA+ID4gPiArICAgICAgICAgKiBxZW11IGFscmVhZHkgaGFzIGEgcGh5c2ljYWwgYWRkcmVz cyBtYXBwZWQKPiA+ID4gPiA+ID4gKyAgICAgICAgICovCj4gPiA+ID4gPiA+ICsgICAgICAgIGFz c2VydChtYXApOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgICAgIC8qCj4gPiA+ID4g PiA+ICsgICAgICAgICAqIE1hcC0+aW92YSBjaHVuayBzaXplIGlzIGlnbm9yZWQuIFdoYXQgdG8g ZG8gaWYgZGVzY3JpcHRvcgo+ID4gPiA+ID4gPiArICAgICAgICAgKiAoYWRkciwgc2l6ZSkgZG9l cyBub3QgZml0IGlzIGRlbGVnYXRlZCB0byB0aGUgZGV2aWNlLgo+ID4gPiA+ID4gPiArICAgICAg ICAgKi8KPiA+ID4gPiA+ID4gKyAgICAgICAgb2ZmID0gbmVlZGxlLnRyYW5zbGF0ZWRfYWRkciAt IG1hcC0+dHJhbnNsYXRlZF9hZGRyOwo+ID4gPiA+ID4gPiArICAgICAgICBpb3ZlY1tpXS5pb3Zf YmFzZSA9ICh2b2lkICopKG1hcC0+aW92YSArIG9mZik7Cj4gPiA+ID4gPiA+ICsgICAgfQo+ID4g PiA+ID4gPiArfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICAgc3RhdGljIHZvaWQgdmhvc3Rf dnJpbmdfd3JpdGVfZGVzY3MoVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSwKPiA+ID4gPiA+ID4g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgaW92ZWMg KmlvdmVjLAo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHNpemVfdCBudW0sIGJvb2wgbW9yZV9kZXNjcywgYm9vbCB3cml0ZSkKPiA+ID4gPiA+ID4gQEAg LTE1Niw4ICsyMTcsOSBAQCBzdGF0aWMgdm9pZCB2aG9zdF92cmluZ193cml0ZV9kZXNjcyhWaG9z dFNoYWRvd1ZpcnRxdWV1ZSAqc3ZxLAo+ID4gPiA+ID4gPiAgIH0KPiA+ID4gPiA+ID4KPiA+ID4g PiA+ID4gICBzdGF0aWMgdW5zaWduZWQgdmhvc3Rfc3ZxX2FkZF9zcGxpdChWaG9zdFNoYWRvd1Zp cnRxdWV1ZSAqc3ZxLAo+ID4gPiA+ID4gPiAtICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSkKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFNWUUVsZW1lbnQgKnN2cV9lbGVtKQo+ID4gPiA+ID4gPiAg IHsKPiA+ID4gPiA+ID4gKyAgICBWaXJ0UXVldWVFbGVtZW50ICplbGVtID0gJnN2cV9lbGVtLT5l bGVtOwo+ID4gPiA+ID4gPiAgICAgICBpbnQgaGVhZDsKPiA+ID4gPiA+ID4gICAgICAgdW5zaWdu ZWQgYXZhaWxfaWR4Owo+ID4gPiA+ID4gPiAgICAgICB2cmluZ19hdmFpbF90ICphdmFpbCA9IHN2 cS0+dnJpbmcuYXZhaWw7Cj4gPiA+ID4gPiA+IEBAIC0xNjcsNiArMjI5LDEyIEBAIHN0YXRpYyB1 bnNpZ25lZCB2aG9zdF9zdnFfYWRkX3NwbGl0KFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEsCj4g PiA+ID4gPiA+ICAgICAgIC8qIFdlIG5lZWQgc29tZSBkZXNjcmlwdG9ycyBoZXJlICovCj4gPiA+ ID4gPiA+ICAgICAgIGFzc2VydChlbGVtLT5vdXRfbnVtIHx8IGVsZW0tPmluX251bSk7Cj4gPiA+ ID4gPiA+Cj4gPiA+ID4gPiA+ICsgICAgdmhvc3Rfc3ZxX3N0YXNoX2FkZHIoJnN2cV9lbGVtLT5p bl9zZ19zdGFzaCwgZWxlbS0+aW5fc2csIGVsZW0tPmluX251bSk7Cj4gPiA+ID4gPiA+ICsgICAg dmhvc3Rfc3ZxX3N0YXNoX2FkZHIoJnN2cV9lbGVtLT5vdXRfc2dfc3Rhc2gsIGVsZW0tPm91dF9z ZywgZWxlbS0+b3V0X251bSk7Cj4gPiA+ID4gPgo+ID4gPiA+ID4KPiA+ID4gPiA+IEkgd29uZGVy IGlmIHdlIGNhbiBzb2x2ZSB0aGUgdHJpY2sgbGlrZSBzdGFzaCBhbmQgdW5zdGFzaCB3aXRoIGEK PiA+ID4gPiA+IGRlZGljYXRlZCBzZ3MgaW4gc3ZxX2VsZW0sIGluc3RlYWQgb2YgcmV1c2luZyB0 aGUgZWxlbS4KPiA+ID4gPiA+Cj4gPiA+ID4KPiA+ID4gPiBBY3R1YWxseSB5ZXMsIGl0IHdvdWxk IGJlIHdheSBzaW1wbGVyIHRvIHVzZSBhIG5ldyBzZ3MgYXJyYXkgaW4KPiA+ID4gPiBzdnFfZWxl bS4gSSB3aWxsIGNoYW5nZSB0aGF0Lgo+ID4gPiA+Cj4gPiA+ID4gVGhhbmtzIQo+ID4gPiA+Cj4g PiA+ID4gPiBUaGFua3MKPiA+ID4gPiA+Cj4gPiA+ID4gPgo+ID4gPiA+ID4gPiArCj4gPiA+ID4g PiA+ICsgICAgdmhvc3Rfc3ZxX3RyYW5zbGF0ZV9hZGRyKHN2cSwgZWxlbS0+aW5fc2csIGVsZW0t PmluX251bSk7Cj4gPiA+ID4gPiA+ICsgICAgdmhvc3Rfc3ZxX3RyYW5zbGF0ZV9hZGRyKHN2cSwg ZWxlbS0+b3V0X3NnLCBlbGVtLT5vdXRfbnVtKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAg ICAgICB2aG9zdF92cmluZ193cml0ZV9kZXNjcyhzdnEsIGVsZW0tPm91dF9zZywgZWxlbS0+b3V0 X251bSwKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZWxlbS0+aW5f bnVtID4gMCwgZmFsc2UpOwo+ID4gPiA+ID4gPiAgICAgICB2aG9zdF92cmluZ193cml0ZV9kZXNj cyhzdnEsIGVsZW0tPmluX3NnLCBlbGVtLT5pbl9udW0sIGZhbHNlLCB0cnVlKTsKPiA+ID4gPiA+ ID4gQEAgLTE4Nyw3ICsyNTUsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmhvc3Rfc3ZxX2FkZF9zcGxp dChWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqc3ZxLAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgIH0K PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gLXN0YXRpYyB2b2lkIHZob3N0X3N2cV9hZGQoVmhvc3RT aGFkb3dWaXJ0cXVldWUgKnN2cSwgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSkKPiA+ID4gPiA+ID4g K3N0YXRpYyB2b2lkIHZob3N0X3N2cV9hZGQoVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSwgU1ZR RWxlbWVudCAqZWxlbSkKPiA+ID4gPiA+ID4gICB7Cj4gPiA+ID4gPiA+ICAgICAgIHVuc2lnbmVk IHFlbXVfaGVhZCA9IHZob3N0X3N2cV9hZGRfc3BsaXQoc3ZxLCBlbGVtKTsKPiA+ID4gPiA+ID4K PiA+ID4gPiA+ID4gQEAgLTIyMSw3ICsyODksNyBAQCBzdGF0aWMgdm9pZCB2aG9zdF9oYW5kbGVf Z3Vlc3Rfa2ljayhFdmVudE5vdGlmaWVyICpuKQo+ID4gPiA+ID4gPiAgICAgICAgICAgfQo+ID4g PiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKPiA+ID4gPiA+ID4g LSAgICAgICAgICAgIFZpcnRRdWV1ZUVsZW1lbnQgKmVsZW0gPSB2aXJ0cXVldWVfcG9wKHN2cS0+ dnEsIHNpemVvZigqZWxlbSkpOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgU1ZRRWxlbWVudCAq ZWxlbSA9IHZpcnRxdWV1ZV9wb3Aoc3ZxLT52cSwgc2l6ZW9mKCplbGVtKSk7Cj4gPiA+ID4gPiA+ ICAgICAgICAgICAgICAgaWYgKCFlbGVtKSB7Cj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAg IGJyZWFrOwo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIH0KPiA+ID4gPiA+ID4gQEAgLTI0Nyw3 ICszMTUsNyBAQCBzdGF0aWMgYm9vbCB2aG9zdF9zdnFfbW9yZV91c2VkKFZob3N0U2hhZG93Vmly dHF1ZXVlICpzdnEpCj4gPiA+ID4gPiA+ICAgICAgIHJldHVybiBzdnEtPnVzZWRfaWR4ICE9IHN2 cS0+c2hhZG93X3VzZWRfaWR4Owo+ID4gPiA+ID4gPiAgIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ ID4gLXN0YXRpYyBWaXJ0UXVldWVFbGVtZW50ICp2aG9zdF9zdnFfZ2V0X2J1ZihWaG9zdFNoYWRv d1ZpcnRxdWV1ZSAqc3ZxKQo+ID4gPiA+ID4gPiArc3RhdGljIFNWUUVsZW1lbnQgKnZob3N0X3N2 cV9nZXRfYnVmKFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEpCj4gPiA+ID4gPiA+ICAgewo+ID4g PiA+ID4gPiAgICAgICB2cmluZ19kZXNjX3QgKmRlc2NzID0gc3ZxLT52cmluZy5kZXNjOwo+ID4g PiA+ID4gPiAgICAgICBjb25zdCB2cmluZ191c2VkX3QgKnVzZWQgPSBzdnEtPnZyaW5nLnVzZWQ7 Cj4gPiA+ID4gPiA+IEBAIC0yNzksNyArMzQ3LDcgQEAgc3RhdGljIFZpcnRRdWV1ZUVsZW1lbnQg KnZob3N0X3N2cV9nZXRfYnVmKFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEpCj4gPiA+ID4gPiA+ ICAgICAgIGRlc2NzW3VzZWRfZWxlbS5pZF0ubmV4dCA9IHN2cS0+ZnJlZV9oZWFkOwo+ID4gPiA+ ID4gPiAgICAgICBzdnEtPmZyZWVfaGVhZCA9IHVzZWRfZWxlbS5pZDsKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gLSAgICBzdnEtPnJpbmdfaWRfbWFwc1t1c2VkX2VsZW0uaWRdLT5sZW4gPSB1c2Vk X2VsZW0ubGVuOwo+ID4gPiA+ID4gPiArICAgIHN2cS0+cmluZ19pZF9tYXBzW3VzZWRfZWxlbS5p ZF0tPmVsZW0ubGVuID0gdXNlZF9lbGVtLmxlbjsKPiA+ID4gPiA+ID4gICAgICAgcmV0dXJuIGdf c3RlYWxfcG9pbnRlcigmc3ZxLT5yaW5nX2lkX21hcHNbdXNlZF9lbGVtLmlkXSk7Cj4gPiA+ID4g PiA+ICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiBAQCAtMjk2LDEyICszNjQsMTkgQEAgc3Rh dGljIHZvaWQgdmhvc3Rfc3ZxX2hhbmRsZV9jYWxsX25vX3Rlc3QoRXZlbnROb3RpZmllciAqbikK PiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAgICAgICAgIHZob3N0X3N2cV9zZXRfbm90aWZpY2F0 aW9uKHN2cSwgZmFsc2UpOwo+ID4gPiA+ID4gPiAgICAgICAgICAgd2hpbGUgKHRydWUpIHsKPiA+ ID4gPiA+ID4gLSAgICAgICAgICAgIGdfYXV0b2ZyZWUgVmlydFF1ZXVlRWxlbWVudCAqZWxlbSA9 IHZob3N0X3N2cV9nZXRfYnVmKHN2cSk7Cj4gPiA+ID4gPiA+IC0gICAgICAgICAgICBpZiAoIWVs ZW0pIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGdfYXV0b2ZyZWUgU1ZRRWxlbWVudCAqc3Zx X2VsZW0gPSB2aG9zdF9zdnFfZ2V0X2J1ZihzdnEpOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAg VmlydFF1ZXVlRWxlbWVudCAqZWxlbTsKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgIGlmICghc3Zx X2VsZW0pIHsKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgYnJlYWs7Cj4gPiA+ID4gPiA+ ICAgICAgICAgICAgICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgIGFz c2VydChpIDwgc3ZxLT52cmluZy5udW0pOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgZWxlbSA9 ICZzdnFfZWxlbS0+ZWxlbTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICAgICAg dmhvc3Rfc3ZxX3Vuc3Rhc2hfYWRkcihzdnFfZWxlbS0+aW5fc2dfc3Rhc2gsIGVsZW0tPmluX3Nn LAo+ID4gPiA+ID4gPiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLT5p bl9udW0pOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgdmhvc3Rfc3ZxX3Vuc3Rhc2hfYWRkcihz dnFfZWxlbS0+b3V0X3NnX3N0YXNoLCBlbGVtLT5vdXRfc2csCj4gPiA+ID4gPiA+ICsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsZW0tPm91dF9udW0pOwo+ID4gPiA+ID4gPiAg ICAgICAgICAgICAgIHZpcnRxdWV1ZV9maWxsKHZxLCBlbGVtLCBlbGVtLT5sZW4sIGkrKyk7Cj4g PiA+ID4gPiA+ICAgICAgICAgICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+IEBAIC00NTEsMTQg KzUyNiwyNCBAQCB2b2lkIHZob3N0X3N2cV9zdG9wKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgdW5z aWduZWQgaWR4LAo+ID4gPiA+ID4gPiAgICAgICBldmVudF9ub3RpZmllcl9zZXRfaGFuZGxlcigm c3ZxLT5ob3N0X25vdGlmaWVyLCBOVUxMKTsKPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gICAgICAg Zm9yIChpID0gMDsgaSA8IHN2cS0+dnJpbmcubnVtOyArK2kpIHsKPiA+ID4gPiA+ID4gLSAgICAg ICAgZ19hdXRvZnJlZSBWaXJ0UXVldWVFbGVtZW50ICplbGVtID0gc3ZxLT5yaW5nX2lkX21hcHNb aV07Cj4gPiA+ID4gPiA+ICsgICAgICAgIGdfYXV0b2ZyZWUgU1ZRRWxlbWVudCAqc3ZxX2VsZW0g PSBzdnEtPnJpbmdfaWRfbWFwc1tpXTsKPiA+ID4gPiA+ID4gKyAgICAgICAgVmlydFF1ZXVlRWxl bWVudCAqZWxlbTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiArICAgICAgICBpZiAoIXN2cV9l bGVtKSB7Cj4gPiA+ID4gPiA+ICsgICAgICAgICAgICBjb250aW51ZTsKPiA+ID4gPiA+ID4gKyAg ICAgICAgfQo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgICAgIGVsZW0gPSAmc3ZxX2Vs ZW0tPmVsZW07Cj4gPiA+ID4gPiA+ICsgICAgICAgIHZob3N0X3N2cV91bnN0YXNoX2FkZHIoc3Zx X2VsZW0tPmluX3NnX3N0YXNoLCBlbGVtLT5pbl9zZywKPiA+ID4gPiA+ID4gKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBlbGVtLT5pbl9udW0pOwo+ID4gPiA+ID4gPiArICAgICAgICB2 aG9zdF9zdnFfdW5zdGFzaF9hZGRyKHN2cV9lbGVtLT5vdXRfc2dfc3Rhc2gsIGVsZW0tPm91dF9z ZywKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlbGVtLT5vdXRf bnVtKTsKPiA+ID4gPiA+ID4gKwo+ID4gPiA+ID4gPiAgICAgICAgICAgLyoKPiA+ID4gPiA+ID4g ICAgICAgICAgICAqIEFsdGhvdWdoIHRoZSBkb2Mgc2F5cyB3ZSBtdXN0IHVucG9wIGluIG9yZGVy LCBpdCdzIG9rIHRvIHVucG9wCj4gPiA+ID4gPiA+ICAgICAgICAgICAgKiBldmVyeXRoaW5nLgo+ ID4gPiA+ID4gPiAgICAgICAgICAgICovCj4gPiA+ID4gPiA+IC0gICAgICAgIGlmIChlbGVtKSB7 Cj4gPiA+ID4gPiA+IC0gICAgICAgICAgICB2aXJ0cXVldWVfdW5wb3Aoc3ZxLT52cSwgZWxlbSwg ZWxlbS0+bGVuKTsKPiA+ID4gPiA+ID4gLSAgICAgICAgfQo+ID4gPiA+ID4gPiArICAgICAgICB2 aXJ0cXVldWVfdW5wb3Aoc3ZxLT52cSwgZWxlbSwgZWxlbS0+bGVuKTsKPiA+ID4gPiA+ID4gICAg ICAgfQo+ID4gPiA+ID4gPiAgIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gQEAgLTQ2Niw3ICs1 NTEsOCBAQCB2b2lkIHZob3N0X3N2cV9zdG9wKHN0cnVjdCB2aG9zdF9kZXYgKmRldiwgdW5zaWdu ZWQgaWR4LAo+ID4gPiA+ID4gPiAgICAqIENyZWF0ZXMgdmhvc3Qgc2hhZG93IHZpcnRxdWV1ZSwg YW5kIGluc3RydWN0IHZob3N0IGRldmljZSB0byB1c2UgdGhlIHNoYWRvdwo+ID4gPiA+ID4gPiAg ICAqIG1ldGhvZHMgYW5kIGZpbGUgZGVzY3JpcHRvcnMuCj4gPiA+ID4gPiA+ICAgICovCj4gPiA+ ID4gPiA+IC1WaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqdmhvc3Rfc3ZxX25ldyhzdHJ1Y3Qgdmhvc3Rf ZGV2ICpkZXYsIGludCBpZHgpCj4gPiA+ID4gPiA+ICtWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqdmhv c3Rfc3ZxX25ldyhzdHJ1Y3Qgdmhvc3RfZGV2ICpkZXYsIGludCBpZHgsCj4gPiA+ID4gPiA+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBWaG9zdElPVkFUcmVlICppb3ZhX21h cCkKPiA+ID4gPiA+ID4gICB7Cj4gPiA+ID4gPiA+ICAgICAgIGludCB2cV9pZHggPSBkZXYtPnZx X2luZGV4ICsgaWR4Owo+ID4gPiA+ID4gPiAgICAgICB1bnNpZ25lZCBudW0gPSB2aXJ0aW9fcXVl dWVfZ2V0X251bShkZXYtPnZkZXYsIHZxX2lkeCk7Cj4gPiA+ID4gPiA+IEBAIC01MDAsMTEgKzU4 NiwxMyBAQCBWaG9zdFNoYWRvd1ZpcnRxdWV1ZSAqdmhvc3Rfc3ZxX25ldyhzdHJ1Y3Qgdmhvc3Rf ZGV2ICpkZXYsIGludCBpZHgpCj4gPiA+ID4gPiA+ICAgICAgIG1lbXNldChzdnEtPnZyaW5nLmRl c2MsIDAsIGRyaXZlcl9zaXplKTsKPiA+ID4gPiA+ID4gICAgICAgc3ZxLT52cmluZy51c2VkID0g cWVtdV9tZW1hbGlnbihxZW11X3JlYWxfaG9zdF9wYWdlX3NpemUsIGRldmljZV9zaXplKTsKPiA+ ID4gPiA+ID4gICAgICAgbWVtc2V0KHN2cS0+dnJpbmcudXNlZCwgMCwgZGV2aWNlX3NpemUpOwo+ ID4gPiA+ID4gPiArICAgIHN2cS0+aW92YV9tYXAgPSBpb3ZhX21hcDsKPiA+ID4gPiA+ID4gKwo+ ID4gPiA+ID4gPiAgICAgICBmb3IgKGkgPSAwOyBpIDwgbnVtIC0gMTsgaSsrKSB7Cj4gPiA+ID4g PiA+ICAgICAgICAgICBzdnEtPnZyaW5nLmRlc2NbaV0ubmV4dCA9IGNwdV90b19sZTE2KGkgKyAx KTsKPiA+ID4gPiA+ID4gICAgICAgfQo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAtICAgIHN2cS0+ cmluZ19pZF9tYXBzID0gZ19uZXcwKFZpcnRRdWV1ZUVsZW1lbnQgKiwgbnVtKTsKPiA+ID4gPiA+ ID4gKyAgICBzdnEtPnJpbmdfaWRfbWFwcyA9IGdfbmV3MChTVlFFbGVtZW50ICosIG51bSk7Cj4g PiA+ID4gPiA+ICAgICAgIGV2ZW50X25vdGlmaWVyX3NldF9oYW5kbGVyKCZzdnEtPmNhbGxfbm90 aWZpZXIsCj4gPiA+ID4gPiA+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZob3N0 X3N2cV9oYW5kbGVfY2FsbCk7Cj4gPiA+ID4gPiA+ICAgICAgIHJldHVybiBnX3N0ZWFsX3BvaW50 ZXIoJnN2cSk7Cj4gPiA+ID4gPiA+IGRpZmYgLS1naXQgYS9ody92aXJ0aW8vdmhvc3QtdmRwYS5j IGIvaHcvdmlydGlvL3Zob3N0LXZkcGEuYwo+ID4gPiA+ID4gPiBpbmRleCBhOWM2ODBiNDg3Li5m NWExMmZlZTlkIDEwMDY0NAo+ID4gPiA+ID4gPiAtLS0gYS9ody92aXJ0aW8vdmhvc3QtdmRwYS5j Cj4gPiA+ID4gPiA+ICsrKyBiL2h3L3ZpcnRpby92aG9zdC12ZHBhLmMKPiA+ID4gPiA+ID4gQEAg LTE3Niw2ICsxNzYsMTggQEAgc3RhdGljIHZvaWQgdmhvc3RfdmRwYV9saXN0ZW5lcl9yZWdpb25f YWRkKE1lbW9yeUxpc3RlbmVyICpsaXN0ZW5lciwKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGRyLCBzZWN0aW9uLT5yZWFkb25seSk7Cj4g PiA+ID4gPiA+Cj4gPiA+ID4gPiA+ICAgICAgIGxsc2l6ZSA9IGludDEyOF9zdWIobGxlbmQsIGlu dDEyOF9tYWtlNjQoaW92YSkpOwo+ID4gPiA+ID4gPiArICAgIGlmICh2LT5zaGFkb3dfdnFzX2Vu YWJsZWQpIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgVmhvc3RETUFNYXAgbWVtX3JlZ2lvbiA9IHsK PiA+ID4gPiA+ID4gKyAgICAgICAgICAgIC50cmFuc2xhdGVkX2FkZHIgPSB2YWRkciwKPiA+ID4g PiA+ID4gKyAgICAgICAgICAgIC5zaXplID0gaW50MTI4X2dldDY0KGxsc2l6ZSkgLSAxLAo+ID4g PiA+ID4gPiArICAgICAgICAgICAgLnBlcm0gPSBJT01NVV9BQ0NFU1NfRkxBRyh0cnVlLCBzZWN0 aW9uLT5yZWFkb25seSksCj4gPiA+ID4gPiA+ICsgICAgICAgIH07Cj4gPiA+ID4gPiA+ICsKPiA+ ID4gPiA+ID4gKyAgICAgICAgaW50IHIgPSB2aG9zdF9pb3ZhX3RyZWVfYWxsb2Modi0+aW92YV9t YXAsICZtZW1fcmVnaW9uKTsKPiA+ID4gPiA+ID4gKyAgICAgICAgYXNzZXJ0KHIgPT0gVkhPU1Rf RE1BX01BUF9PSyk7Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICAgICAgaW92YSA9IG1l bV9yZWdpb24uaW92YTsKPiA+ID4gPiA+ID4gKyAgICB9Cj4gPiA+ID4gPiA+Cj4gPiA+ID4gPiA+ ICAgICAgIHJldCA9IHZob3N0X3ZkcGFfZG1hX21hcCh2LCBpb3ZhLCBpbnQxMjhfZ2V0NjQobGxz aXplKSwKPiA+ID4gPiA+ID4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZhZGRyLCBz ZWN0aW9uLT5yZWFkb25seSk7Cj4gPiA+ID4gPiA+IEBAIC03NTQsNiArNzY2LDIzIEBAIHN0YXRp YyBib29sICB2aG9zdF92ZHBhX2ZvcmNlX2lvbW11KHN0cnVjdCB2aG9zdF9kZXYgKmRldikKPiA+ ID4gPiA+ID4gICAgICAgcmV0dXJuIHRydWU7Cj4gPiA+ID4gPiA+ICAgfQo+ID4gPiA+ID4gPgo+ ID4gPiA+ID4gPiArc3RhdGljIGludCB2aG9zdF92ZHBhX2dldF9pb3ZhX3JhbmdlKHN0cnVjdCB2 aG9zdF9kZXYgKmRldiwKPiA+ID4gPiA+ID4gKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBod2FkZHIgKmZpcnN0LCBod2FkZHIgKmxhc3QpCj4gPiA+ID4gPiA+ICt7Cj4gPiA+ ID4gPiA+ICsgICAgaW50IHJldDsKPiA+ID4gPiA+ID4gKyAgICBzdHJ1Y3Qgdmhvc3RfdmRwYV9p b3ZhX3JhbmdlIHJhbmdlOwo+ID4gPiA+ID4gPiArCj4gPiA+ID4gPiA+ICsgICAgcmV0ID0gdmhv c3RfdmRwYV9jYWxsKGRldiwgVkhPU1RfVkRQQV9HRVRfSU9WQV9SQU5HRSwgJnJhbmdlKTsKPiA+ ID4gPiA+ID4gKyAgICBpZiAocmV0ICE9IDApIHsKPiA+ID4gPiA+ID4gKyAgICAgICAgcmV0dXJu IHJldDsKPiA+ID4gPiA+ID4gKyAgICB9Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gKyAgICAq Zmlyc3QgPSByYW5nZS5maXJzdDsKPiA+ID4gPiA+ID4gKyAgICAqbGFzdCA9IHJhbmdlLmxhc3Q7 Cj4gPiA+ID4gPiA+ICsgICAgdHJhY2Vfdmhvc3RfdmRwYV9nZXRfaW92YV9yYW5nZShkZXYsICpm aXJzdCwgKmxhc3QpOwo+ID4gPiA+ID4gPiArICAgIHJldHVybiByZXQ7Cj4gPiA+ID4gPiA+ICt9 Cj4gPiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gICAvKioKPiA+ID4gPiA+ID4gICAgKiBNYXBzIFFF TVUgdmFkZHIgbWVtb3J5IHRvIGRldmljZSBpbiBhIHN1aXRhYmxlIHdheSBmb3Igc2hhZG93IHZp cnRxdWV1ZToKPiA+ID4gPiA+ID4gICAgKiAtIEl0IGFsd2F5cyByZWZlcmVuY2UgcWVtdSBtZW1v cnkgYWRkcmVzcywgbm90IGd1ZXN0J3MgbWVtb3J5Lgo+ID4gPiA+ID4gPiBAQCAtODgxLDYgKzkx MCw3IEBAIHN0YXRpYyBib29sIHZob3N0X3ZkcGFfc3ZxX3N0YXJ0X3ZxKHN0cnVjdCB2aG9zdF9k ZXYgKmRldiwgdW5zaWduZWQgaWR4KQo+ID4gPiA+ID4gPiAgIHN0YXRpYyB1bnNpZ25lZCB2aG9z dF92ZHBhX2VuYWJsZV9zdnEoc3RydWN0IHZob3N0X3ZkcGEgKnYsIGJvb2wgZW5hYmxlKQo+ID4g PiA+ID4gPiAgIHsKPiA+ID4gPiA+ID4gICAgICAgc3RydWN0IHZob3N0X2RldiAqaGRldiA9IHYt PmRldjsKPiA+ID4gPiA+ID4gKyAgICBod2FkZHIgaW92YV9maXJzdCwgaW92YV9sYXN0Owo+ID4g PiA+ID4gPiAgICAgICB1bnNpZ25lZCBuOwo+ID4gPiA+ID4gPiAgICAgICBpbnQgcjsKPiA+ID4g PiA+ID4KPiA+ID4gPiA+ID4gQEAgLTg5NCw3ICs5MjQsNyBAQCBzdGF0aWMgdW5zaWduZWQgdmhv c3RfdmRwYV9lbmFibGVfc3ZxKHN0cnVjdCB2aG9zdF92ZHBhICp2LCBib29sIGVuYWJsZSkKPiA+ ID4gPiA+ID4gICAgICAgICAgIC8qIEFsbG9jYXRlIHJlc291cmNlcyAqLwo+ID4gPiA+ID4gPiAg ICAgICAgICAgYXNzZXJ0KHYtPnNoYWRvd192cXMtPmxlbiA9PSAwKTsKPiA+ID4gPiA+ID4gICAg ICAgICAgIGZvciAobiA9IDA7IG4gPCBoZGV2LT5udnFzOyArK24pIHsKPiA+ID4gPiA+ID4gLSAg ICAgICAgICAgIFZob3N0U2hhZG93VmlydHF1ZXVlICpzdnEgPSB2aG9zdF9zdnFfbmV3KGhkZXYs IG4pOwo+ID4gPiA+ID4gPiArICAgICAgICAgICAgVmhvc3RTaGFkb3dWaXJ0cXVldWUgKnN2cSA9 IHZob3N0X3N2cV9uZXcoaGRldiwgbiwgdi0+aW92YV9tYXApOwo+ID4gPiA+ID4gPiAgICAgICAg ICAgICAgIGlmICh1bmxpa2VseSghc3ZxKSkgewo+ID4gPiA+ID4gPiAgICAgICAgICAgICAgICAg ICBnX3B0cl9hcnJheV9zZXRfc2l6ZSh2LT5zaGFkb3dfdnFzLCAwKTsKPiA+ID4gPiA+ID4gICAg ICAgICAgICAgICAgICAgcmV0dXJuIDA7Cj4gPiA+ID4gPiA+IEBAIC05MDMsNiArOTMzLDggQEAg c3RhdGljIHVuc2lnbmVkIHZob3N0X3ZkcGFfZW5hYmxlX3N2cShzdHJ1Y3Qgdmhvc3RfdmRwYSAq diwgYm9vbCBlbmFibGUpCj4gPiA+ID4gPiA+ICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ICAgICAg IH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4gKyAgICByID0gdmhvc3RfdmRwYV9nZXRfaW92YV9y YW5nZShoZGV2LCAmaW92YV9maXJzdCwgJmlvdmFfbGFzdCk7Cj4gPiA+ID4gPiA+ICsgICAgYXNz ZXJ0KHIgPT0gMCk7Cj4gPiA+ID4gPiA+ICAgICAgIHIgPSB2aG9zdF92ZHBhX3ZyaW5nX3BhdXNl KGhkZXYpOwo+ID4gPiA+ID4gPiAgICAgICBhc3NlcnQociA9PSAwKTsKPiA+ID4gPiA+ID4KPiA+ ID4gPiA+ID4gQEAgLTkxMyw2ICs5NDUsMTIgQEAgc3RhdGljIHVuc2lnbmVkIHZob3N0X3ZkcGFf ZW5hYmxlX3N2cShzdHJ1Y3Qgdmhvc3RfdmRwYSAqdiwgYm9vbCBlbmFibGUpCj4gPiA+ID4gPiA+ ICAgICAgICAgICB9Cj4gPiA+ID4gPiA+ICAgICAgIH0KPiA+ID4gPiA+ID4KPiA+ID4gPiA+ID4g KyAgICBtZW1vcnlfbGlzdGVuZXJfdW5yZWdpc3Rlcigmdi0+bGlzdGVuZXIpOwo+ID4gPiA+ID4g PiArICAgIGlmICh2aG9zdF92ZHBhX2RtYV91bm1hcCh2LCBpb3ZhX2ZpcnN0LAo+ID4gPiA+ID4g PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoaW92YV9sYXN0IC0gaW92YV9maXJzdCkg JiBUQVJHRVRfUEFHRV9NQVNLKSkgewo+ID4gPiA+ID4gPiArICAgICAgICBlcnJvcl9yZXBvcnQo IkZhaWwgdG8gaW52YWxpZGF0ZSBkZXZpY2UgaW90bGIiKTsKPiA+ID4gPiA+ID4gKyAgICB9Cj4g PiA+ID4gPiA+ICsKPiA+ID4gPiA+ID4gICAgICAgLyogUmVzZXQgZGV2aWNlIHNvIGl0IGNhbiBi ZSBjb25maWd1cmVkICovCj4gPiA+ID4gPiA+ICAgICAgIHIgPSB2aG9zdF92ZHBhX2Rldl9zdGFy dChoZGV2LCBmYWxzZSk7Cj4gPiA+ID4gPiA+ICAgICAgIGFzc2VydChyID09IDApOwo+ID4gPiA+ ID4gPiBkaWZmIC0tZ2l0IGEvaHcvdmlydGlvL3RyYWNlLWV2ZW50cyBiL2h3L3ZpcnRpby90cmFj ZS1ldmVudHMKPiA+ID4gPiA+ID4gaW5kZXggOGVkMTllOWQwYy4uNjUwZTUyMWUzNSAxMDA2NDQK PiA+ID4gPiA+ID4gLS0tIGEvaHcvdmlydGlvL3RyYWNlLWV2ZW50cwo+ID4gPiA+ID4gPiArKysg Yi9ody92aXJ0aW8vdHJhY2UtZXZlbnRzCj4gPiA+ID4gPiA+IEBAIC01Miw2ICs1Miw3IEBAIHZo b3N0X3ZkcGFfc2V0X3ZyaW5nX2NhbGwodm9pZCAqZGV2LCB1bnNpZ25lZCBpbnQgaW5kZXgsIGlu dCBmZCkgImRldjogJXAgaW5kZXg6Cj4gPiA+ID4gPiA+ICAgdmhvc3RfdmRwYV9nZXRfZmVhdHVy ZXModm9pZCAqZGV2LCB1aW50NjRfdCBmZWF0dXJlcykgImRldjogJXAgZmVhdHVyZXM6IDB4JSJQ Ukl4NjQKPiA+ID4gPiA+ID4gICB2aG9zdF92ZHBhX3NldF9vd25lcih2b2lkICpkZXYpICJkZXY6 ICVwIgo+ID4gPiA+ID4gPiAgIHZob3N0X3ZkcGFfdnFfZ2V0X2FkZHIodm9pZCAqZGV2LCB2b2lk ICp2cSwgdWludDY0X3QgZGVzY191c2VyX2FkZHIsIHVpbnQ2NF90IGF2YWlsX3VzZXJfYWRkciwg dWludDY0X3QgdXNlZF91c2VyX2FkZHIpICJkZXY6ICVwIHZxOiAlcCBkZXNjX3VzZXJfYWRkcjog MHglIlBSSXg2NCIgYXZhaWxfdXNlcl9hZGRyOiAweCUiUFJJeDY0IiB1c2VkX3VzZXJfYWRkcjog MHglIlBSSXg2NAo+ID4gPiA+ID4gPiArdmhvc3RfdmRwYV9nZXRfaW92YV9yYW5nZSh2b2lkICpk ZXYsIHVpbnQ2NF90IGZpcnN0LCB1aW50NjRfdCBsYXN0KSAiZGV2OiAlcCBmaXJzdDogMHglIlBS SXg2NCIgbGFzdDogMHglIlBSSXg2NAo+ID4gPiA+ID4gPgo+ID4gPiA+ID4gPiAgICMgdmlydGlv LmMKPiA+ID4gPiA+ID4gICB2aXJ0cXVldWVfYWxsb2NfZWxlbWVudCh2b2lkICplbGVtLCBzaXpl X3Qgc3osIHVuc2lnbmVkIGluX251bSwgdW5zaWduZWQgb3V0X251bSkgImVsZW0gJXAgc2l6ZSAl emQgaW5fbnVtICV1IG91dF9udW0gJXUiCj4gPiA+ID4gPgo+ID4gPiA+Cj4gPgo+CgpfX19fX19f X19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fX19fXwpWaXJ0dWFsaXphdGlvbiBt YWlsaW5nIGxpc3QKVmlydHVhbGl6YXRpb25AbGlzdHMubGludXgtZm91bmRhdGlvbi5vcmcKaHR0 cHM6Ly9saXN0cy5saW51eGZvdW5kYXRpb24ub3JnL21haWxtYW4vbGlzdGluZm8vdmlydHVhbGl6 YXRpb24=