Received: by 2002:a05:6a10:1a4d:0:0:0:0 with SMTP id nk13csp225225pxb; Mon, 7 Feb 2022 09:49:38 -0800 (PST) X-Google-Smtp-Source: ABdhPJwKU6EhQJmGx+gYdtXyz+1dpI6ISunssfS1SUn6IM1HluUCoj0jg0GIbrTgWOE7SYBtrRdn X-Received: by 2002:a17:902:b213:: with SMTP id t19mr711703plr.100.1644256177625; Mon, 07 Feb 2022 09:49:37 -0800 (PST) ARC-Seal: i=1; a=rsa-sha256; t=1644256177; cv=none; d=google.com; s=arc-20160816; b=JdKQLelLZ8/jN5DmX2f+yYviESPqlW1msP8pDlozUw9DT+CmRmKTu4u03ecT8xtlfj 3F9wNu/4dbHQlG51OuU4qQYYnrHpnx7av7FrRM6yzC7kuy5XDZjHisU+bs8SEQIOfHXN TTW0p768vZuv8UVSfBnAucpaDT2qLjvLUHx3oHjPn/f28KZCfYqNexFC2Al7DVszdMwb LlW2ZGba4+rw01fW1AvA6kPnxECdRIDbnjxCKAAK25fQ49HRS9aM2F5EaYWemhHjV52A fG7e/WCfpmn33fzjL58tGC0y+WTbUln/uxLPI4MclW2KJnmRfW2mAnC/sw3ut2UjBfKG uL5Q== ARC-Message-Signature: i=1; a=rsa-sha256; c=relaxed/relaxed; d=google.com; s=arc-20160816; h=list-id:precedence:in-reply-to:from:references:cc:to :content-language:subject:user-agent:mime-version:date:message-id :dkim-signature:dkim-signature; bh=jAmdhYn4qRnVqO9he8OR/gn/MPchVnsAl8uvrPICaDg=; b=RlHSIY9Lr5Oyn7lh3R99yDsweeSGtxXvCPjBMjiMs9exQVOrsus6KttPbFwraII1OY dOlpwvqR6C3eTrSaMXlWxoNHKoEmnXlmGYS0crDl9tCafdycSL/DbtJICcJA1GDRFJpj w9JvFKbjWHW/yvRKenRqylbnqfPTjg4blnlgmvrX8ZiSeAJKtAhk7/QnhlhdWYXztImo TToYC+Lw72q88tUEeuA+NH/iMxeXLbt7p6uoQ5y47+KYjDJKnkF4VzPNbyL/Ob1mylCy tKoiwwf4JwKtAt8yfMI/o7jYc0AJ5cXQIjtaFBfa51PzWLV7pXCGn2oqo/sdIva81F4L wlPw== ARC-Authentication-Results: i=1; mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=jxYJmnPC; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=J6jfDbYY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Return-Path: Received: from out1.vger.email (out1.vger.email. [2620:137:e000::1:20]) by mx.google.com with ESMTP id v9si11422053pfu.239.2022.02.07.09.49.26; Mon, 07 Feb 2022 09:49:37 -0800 (PST) Received-SPF: pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) client-ip=2620:137:e000::1:20; Authentication-Results: mx.google.com; dkim=pass header.i=@suse.de header.s=susede2_rsa header.b=jxYJmnPC; dkim=neutral (no key) header.i=@suse.de header.s=susede2_ed25519 header.b=J6jfDbYY; spf=pass (google.com: domain of linux-kernel-owner@vger.kernel.org designates 2620:137:e000::1:20 as permitted sender) smtp.mailfrom=linux-kernel-owner@vger.kernel.org; dmarc=pass (p=NONE sp=NONE dis=NONE) header.from=suse.de Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1349133AbiBCJ3L (ORCPT + 99 others); Thu, 3 Feb 2022 04:29:11 -0500 Received: from smtp-out1.suse.de ([195.135.220.28]:48510 "EHLO smtp-out1.suse.de" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S232084AbiBCJ3J (ORCPT ); Thu, 3 Feb 2022 04:29:09 -0500 Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by smtp-out1.suse.de (Postfix) with ESMTPS id 34F5021110; Thu, 3 Feb 2022 09:29:08 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1643880548; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=jAmdhYn4qRnVqO9he8OR/gn/MPchVnsAl8uvrPICaDg=; b=jxYJmnPCWurS13KB0aqpdFtJCi6cPJKqXSKZilMLmo8Jp3Jmf4wCcd6OkbdVlNjLphlHmM MX+C1o8plCzrpLVfdDuaEWK0P3/2TcoWLD0PNnbnemvJcnb5PIglBc/B3JtCldFGfqpwQh wC6L//YEKFeVmG33XsO9D9Sg6z6iWII= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1643880548; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=jAmdhYn4qRnVqO9he8OR/gn/MPchVnsAl8uvrPICaDg=; b=J6jfDbYYuEGuXjSwU94kPwGJGnNGFvJkgnTSx2/YgmWX+d72MgvHk27oBkf2C5X8pam8N7 F2U1wf95MbsBJcDg== Received: from imap2.suse-dmz.suse.de (imap2.suse-dmz.suse.de [192.168.254.74]) (using TLSv1.3 with cipher TLS_AES_256_GCM_SHA384 (256/256 bits) key-exchange X25519 server-signature ECDSA (P-521) server-digest SHA512) (No client certificate requested) by imap2.suse-dmz.suse.de (Postfix) with ESMTPS id BCAE013B7D; Thu, 3 Feb 2022 09:29:07 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id Uz30LGOg+2EgOQAAMHmgww (envelope-from ); Thu, 03 Feb 2022 09:29:07 +0000 Message-ID: Date: Thu, 3 Feb 2022 10:29:06 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:91.0) Gecko/20100101 Thunderbird/91.5.0 Subject: Re: [PATCH v3] dma-buf-map: Rename to iosys-map Content-Language: en-US To: Lucas De Marchi , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: Jonathan Corbet , airlied@linux.ie, daniel.vetter@ffwll.ch, linux-doc@vger.kernel.org, christian.koenig@amd.com, srinivas.kandagatla@linaro.org, gregkh@linuxfoundation.org, nouveau@lists.freedesktop.org, linux-media@vger.kernel.org References: <20220203085614.3896538-1-lucas.demarchi@intel.com> From: Thomas Zimmermann In-Reply-To: <20220203085614.3896538-1-lucas.demarchi@intel.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------k3GVKzuYPtmfWE6Hjgc2zqb5" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------k3GVKzuYPtmfWE6Hjgc2zqb5 Content-Type: multipart/mixed; boundary="------------ZShDiq2ac0S4TDwrtjg5JCan"; protected-headers="v1" From: Thomas Zimmermann To: Lucas De Marchi , linux-kernel@vger.kernel.org, dri-devel@lists.freedesktop.org, intel-gfx@lists.freedesktop.org Cc: Jonathan Corbet , airlied@linux.ie, daniel.vetter@ffwll.ch, linux-doc@vger.kernel.org, christian.koenig@amd.com, srinivas.kandagatla@linaro.org, gregkh@linuxfoundation.org, nouveau@lists.freedesktop.org, linux-media@vger.kernel.org Message-ID: Subject: Re: [PATCH v3] dma-buf-map: Rename to iosys-map References: <20220203085614.3896538-1-lucas.demarchi@intel.com> In-Reply-To: <20220203085614.3896538-1-lucas.demarchi@intel.com> --------------ZShDiq2ac0S4TDwrtjg5JCan Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMDMuMDIuMjIgdW0gMDk6NTYgc2NocmllYiBMdWNhcyBEZSBNYXJjaGk6DQpb Li4uXQ0KPiANCj4gZGlmZiAtLWdpdCBhL0RvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9kZXZp Y2UtaW8ucnN0IGIvRG9jdW1lbnRhdGlvbi9kcml2ZXItYXBpL2RldmljZS1pby5yc3QNCj4g aW5kZXggZTlmMDRiMTgxNWQxLi5mOWRlZGU4NjM5YzcgMTAwNjQ0DQo+IC0tLSBhL0RvY3Vt ZW50YXRpb24vZHJpdmVyLWFwaS9kZXZpY2UtaW8ucnN0DQo+ICsrKyBiL0RvY3VtZW50YXRp b24vZHJpdmVyLWFwaS9kZXZpY2UtaW8ucnN0DQo+IEBAIC01MDIsNiArNTAyLDE1IEBAIHBj aW1faW9tYXAoKQ0KPiAgIE5vdCB1c2luZyB0aGVzZSB3cmFwcGVycyBtYXkgbWFrZSBkcml2 ZXJzIHVudXNhYmxlIG9uIGNlcnRhaW4gcGxhdGZvcm1zIHdpdGgNCj4gICBzdHJpY3RlciBy dWxlcyBmb3IgbWFwcGluZyBJL08gbWVtb3J5Lg0KPiAgIA0KPiArU3lzdGVtL0lPIG1lbW9y eSBhYnN0cmFjdGlvbg0KDQoiR2VuZXJhbGl6aW5nIEFjY2VzcyB0byBTeXN0ZW0gYW5kIEkv TyBNZW1vcnkiDQoNCldpdGggdGhlIGhlYWRsaW5lIGNoYW5nZWQsIHBsZWFzZSBhZGQgbXkN Cg0KQWNrZWQtYnk6IFRob21hcyBaaW1tZXJtYW5uIDx0emltbWVybWFubkBzdXNlLmRlPg0K DQpUZWNobmljYWxseSwgdGhpcyBwYXRjaCBiZWxvbmdzIGludG8gZHJtLW1pc2MtbmV4dCwg YnV0IHlvdSBoYXZlIGEgDQpsYXJnZXIgdXNlIGNhc2UgZm9yIGk5MTUuIFRoZSBwYXRjaHNl dCB3b3VsZCBiZXN0IGdvIHRocm91Z2ggDQpkcm0taW50ZWwtbmV4dCwgSSBndWVzcy4NCg0K QmVzdCByZWdhcmRzDQpUaG9tYXMNCg0KPiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQ0KPiArDQo+ICsuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9saW51eC9pb3N5cy1tYXAuaA0K PiArICAgOmRvYzogb3ZlcnZpZXcNCj4gKw0KPiArLi4ga2VybmVsLWRvYzo6IGluY2x1ZGUv bGludXgvaW9zeXMtbWFwLmgNCj4gKyAgIDppbnRlcm5hbDoNCj4gKw0KPiAgIFB1YmxpYyBG dW5jdGlvbnMgUHJvdmlkZWQNCj4gICA9PT09PT09PT09PT09PT09PT09PT09PT09DQo+ICAg DQo+IGRpZmYgLS1naXQgYS9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZG1hLWJ1Zi5yc3Qg Yi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkvZG1hLWJ1Zi5yc3QNCj4gaW5kZXggMmNkN2Ri ODJkOWZlLi41NTAwNjY3ODM5NGEgMTAwNjQ0DQo+IC0tLSBhL0RvY3VtZW50YXRpb24vZHJp dmVyLWFwaS9kbWEtYnVmLnJzdA0KPiArKysgYi9Eb2N1bWVudGF0aW9uL2RyaXZlci1hcGkv ZG1hLWJ1Zi5yc3QNCj4gQEAgLTEyOCwxNSArMTI4LDYgQEAgS2VybmVsIEZ1bmN0aW9ucyBh bmQgU3RydWN0dXJlcyBSZWZlcmVuY2UNCj4gICAuLiBrZXJuZWwtZG9jOjogaW5jbHVkZS9s aW51eC9kbWEtYnVmLmgNCj4gICAgICA6aW50ZXJuYWw6DQo+ICAgDQo+IC1CdWZmZXIgTWFw cGluZyBIZWxwZXJzDQo+IC1+fn5+fn5+fn5+fn5+fn5+fn5+fn5+DQo+IC0NCj4gLS4uIGtl cm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L2RtYS1idWYtbWFwLmgNCj4gLSAgIDpkb2M6IG92 ZXJ2aWV3DQo+IC0NCj4gLS4uIGtlcm5lbC1kb2M6OiBpbmNsdWRlL2xpbnV4L2RtYS1idWYt bWFwLmgNCj4gLSAgIDppbnRlcm5hbDoNCj4gLQ0KPiAgIFJlc2VydmF0aW9uIE9iamVjdHMN Cj4gICAtLS0tLS0tLS0tLS0tLS0tLS0tDQo+ICAgDQo+IGRpZmYgLS1naXQgYS9Eb2N1bWVu dGF0aW9uL2dwdS90b2RvLnJzdCBiL0RvY3VtZW50YXRpb24vZ3B1L3RvZG8ucnN0DQo+IGlu ZGV4IDFiMjM3MmVmNDEzMS4uZWU4NDI2MDZlODgzIDEwMDY0NA0KPiAtLS0gYS9Eb2N1bWVu dGF0aW9uL2dwdS90b2RvLnJzdA0KPiArKysgYi9Eb2N1bWVudGF0aW9uL2dwdS90b2RvLnJz dA0KPiBAQCAtMjIyLDcgKzIyMiw3IEBAIENvbnZlcnQgZHJpdmVycyB0byB1c2UgZHJtX2Zi ZGV2X2dlbmVyaWNfc2V0dXAoKQ0KPiAgIE1vc3QgZHJpdmVycyBjYW4gdXNlIGRybV9mYmRl dl9nZW5lcmljX3NldHVwKCkuIERyaXZlciBoYXZlIHRvIGltcGxlbWVudA0KPiAgIGF0b21p YyBtb2Rlc2V0dGluZyBhbmQgR0VNIHZtYXAgc3VwcG9ydC4gSGlzdG9yaWNhbGx5LCBnZW5l cmljIGZiZGV2IGVtdWxhdGlvbg0KPiAgIGV4cGVjdGVkIHRoZSBmcmFtZWJ1ZmZlciBpbiBz eXN0ZW0gbWVtb3J5IG9yIHN5c3RlbS1saWtlIG1lbW9yeS4gQnkgZW1wbG95aW5nDQo+IC1z dHJ1Y3QgZG1hX2J1Zl9tYXAsIGRyaXZlcnMgd2l0aCBmcmFtYnVmZmVycyBpbiBJL08gbWVt b3J5IGNhbiBiZSBzdXBwb3J0ZWQNCj4gK3N0cnVjdCBpb3N5c19tYXAsIGRyaXZlcnMgd2l0 aCBmcmFtYnVmZmVycyBpbiBJL08gbWVtb3J5IGNhbiBiZSBzdXBwb3J0ZWQNCj4gICBhcyB3 ZWxsLg0KPiAgIA0KPiAgIENvbnRhY3Q6IE1haW50YWluZXIgb2YgdGhlIGRyaXZlciB5b3Ug cGxhbiB0byBjb252ZXJ0DQo+IEBAIC0yMzQsNyArMjM0LDcgQEAgUmVpbXBsZW1lbnQgZnVu Y3Rpb25zIGluIGRybV9mYmRldl9mYl9vcHMgd2l0aG91dCBmYmRldg0KPiAgIA0KPiAgIEEg bnVtYmVyIG9mIGNhbGxiYWNrIGZ1bmN0aW9ucyBpbiBkcm1fZmJkZXZfZmJfb3BzIGNvdWxk IGJlbmVmaXQgZnJvbQ0KPiAgIGJlaW5nIHJld3JpdHRlbiB3aXRob3V0IGRlcGVuZGVuY2ll cyBvbiB0aGUgZmJkZXYgbW9kdWxlLiBTb21lIG9mIHRoZQ0KPiAtaGVscGVycyBjb3VsZCBm dXJ0aGVyIGJlbmVmaXQgZnJvbSB1c2luZyBzdHJ1Y3QgZG1hX2J1Zl9tYXAgaW5zdGVhZCBv Zg0KPiAraGVscGVycyBjb3VsZCBmdXJ0aGVyIGJlbmVmaXQgZnJvbSB1c2luZyBzdHJ1Y3Qg aW9zeXNfbWFwIGluc3RlYWQgb2YNCj4gICByYXcgcG9pbnRlcnMuDQo+ICAgDQo+ICAgQ29u dGFjdDogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+LCBEYW5pZWwg VmV0dGVyDQo+IEBAIC00MzQsMTkgKzQzNCwxOSBAQCBDb250YWN0OiBFbWlsIFZlbGlrb3Ys IHJlc3BlY3RpdmUgZHJpdmVyIG1haW50YWluZXJzDQo+ICAgDQo+ICAgTGV2ZWw6IEludGVy bWVkaWF0ZQ0KPiAgIA0KPiAtVXNlIHN0cnVjdCBkbWFfYnVmX21hcCB0aHJvdWdob3V0IGNv ZGViYXNlDQo+IC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0N Cj4gK1VzZSBzdHJ1Y3QgaW9zeXNfbWFwIHRocm91Z2hvdXQgY29kZWJhc2UNCj4gKy0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCj4gICANCj4gLVBvaW50ZXJz IHRvIHNoYXJlZCBkZXZpY2UgbWVtb3J5IGFyZSBzdG9yZWQgaW4gc3RydWN0IGRtYV9idWZf bWFwLiBFYWNoDQo+ICtQb2ludGVycyB0byBzaGFyZWQgZGV2aWNlIG1lbW9yeSBhcmUgc3Rv cmVkIGluIHN0cnVjdCBpb3N5c19tYXAuIEVhY2gNCj4gICBpbnN0YW5jZSBrbm93cyB3aGV0 aGVyIGl0IHJlZmVycyB0byBzeXN0ZW0gb3IgSS9PIG1lbW9yeS4gTW9zdCBvZiB0aGUgRFJN LXdpZGUNCj4gLWludGVyZmFjZSBoYXZlIGJlZW4gY29udmVydGVkIHRvIHVzZSBzdHJ1Y3Qg ZG1hX2J1Zl9tYXAsIGJ1dCBpbXBsZW1lbnRhdGlvbnMNCj4gK2ludGVyZmFjZSBoYXZlIGJl ZW4gY29udmVydGVkIHRvIHVzZSBzdHJ1Y3QgaW9zeXNfbWFwLCBidXQgaW1wbGVtZW50YXRp b25zDQo+ICAgb2Z0ZW4gc3RpbGwgdXNlIHJhdyBwb2ludGVycy4NCj4gICANCj4gLVRoZSB0 YXNrIGlzIHRvIHVzZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAgd2hlcmUgaXQgbWFrZXMgc2Vuc2Uu DQo+ICtUaGUgdGFzayBpcyB0byB1c2Ugc3RydWN0IGlvc3lzX21hcCB3aGVyZSBpdCBtYWtl cyBzZW5zZS4NCj4gICANCj4gLSogTWVtb3J5IG1hbmFnZXJzIHNob3VsZCB1c2Ugc3RydWN0 IGRtYV9idWZfbWFwIGZvciBkbWEtYnVmLWltcG9ydGVkIGJ1ZmZlcnMuDQo+IC0qIFRUTSBt aWdodCBiZW5lZml0IGZyb20gdXNpbmcgc3RydWN0IGRtYV9idWZfbWFwIGludGVybmFsbHku DQo+IC0qIEZyYW1lYnVmZmVyIGNvcHlpbmcgYW5kIGJsaXR0aW5nIGhlbHBlcnMgc2hvdWxk IG9wZXJhdGUgb24gc3RydWN0IGRtYV9idWZfbWFwLg0KPiArKiBNZW1vcnkgbWFuYWdlcnMg c2hvdWxkIHVzZSBzdHJ1Y3QgaW9zeXNfbWFwIGZvciBkbWEtYnVmLWltcG9ydGVkIGJ1ZmZl cnMuDQo+ICsqIFRUTSBtaWdodCBiZW5lZml0IGZyb20gdXNpbmcgc3RydWN0IGlvc3lzX21h cCBpbnRlcm5hbGx5Lg0KPiArKiBGcmFtZWJ1ZmZlciBjb3B5aW5nIGFuZCBibGl0dGluZyBo ZWxwZXJzIHNob3VsZCBvcGVyYXRlIG9uIHN0cnVjdCBpb3N5c19tYXAuDQo+ICAgDQo+ICAg Q29udGFjdDogVGhvbWFzIFppbW1lcm1hbm4gPHR6aW1tZXJtYW5uQHN1c2UuZGU+LCBDaHJp c3RpYW4gS8O2bmlnLCBEYW5pZWwgVmV0dGVyDQo+ICAgDQo+IGRpZmYgLS1naXQgYS9NQUlO VEFJTkVSUyBiL01BSU5UQUlORVJTDQo+IGluZGV4IDBkOTE0NzAyOTUwZi4uNDVjOTdlNzFj OGMxIDEwMDY0NA0KPiAtLS0gYS9NQUlOVEFJTkVSUw0KPiArKysgYi9NQUlOVEFJTkVSUw0K PiBAQCAtNTY3NSw3ICs1Njc1LDcgQEAgVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRlc2t0 b3Aub3JnL2RybS9kcm0tbWlzYw0KPiAgIEY6CURvY3VtZW50YXRpb24vZHJpdmVyLWFwaS9k bWEtYnVmLnJzdA0KPiAgIEY6CWRyaXZlcnMvZG1hLWJ1Zi8NCj4gICBGOglpbmNsdWRlL2xp bnV4LypmZW5jZS5oDQo+IC1GOglpbmNsdWRlL2xpbnV4L2RtYS1idWYqDQo+ICtGOglpbmNs dWRlL2xpbnV4L2RtYS1idWYuaA0KPiAgIEY6CWluY2x1ZGUvbGludXgvZG1hLXJlc3YuaA0K PiAgIEs6CVxiZG1hXyg/OmJ1ZnxmZW5jZXxyZXN2KVxiDQo+ICAgDQo+IEBAIC05OTc3LDYg Kzk5NzcsMTMgQEAgRjoJaW5jbHVkZS9saW51eC9pb3ZhLmgNCj4gICBGOglpbmNsdWRlL2xp bnV4L29mX2lvbW11LmgNCj4gICBGOglpbmNsdWRlL3VhcGkvbGludXgvaW9tbXUuaA0KPiAg IA0KPiArSU9TWVMtTUFQIEhFTFBFUlMNCj4gK006CVRob21hcyBaaW1tZXJtYW5uIDx0emlt bWVybWFubkBzdXNlLmRlPg0KPiArTDoJZHJpLWRldmVsQGxpc3RzLmZyZWVkZXNrdG9wLm9y Zw0KPiArUzoJTWFpbnRhaW5lZA0KPiArVDoJZ2l0IGdpdDovL2Fub25naXQuZnJlZWRlc2t0 b3Aub3JnL2RybS9kcm0tbWlzYw0KPiArRjoJaW5jbHVkZS9saW51eC9pb3N5cy1tYXAuaA0K PiArDQo+ICAgSU9fVVJJTkcNCj4gICBNOglKZW5zIEF4Ym9lIDxheGJvZUBrZXJuZWwuZGs+ DQo+ICAgUjoJUGF2ZWwgQmVndW5rb3YgPGFzbWwuc2lsZW5jZUBnbWFpbC5jb20+DQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2RtYS1idWYvZG1hLWJ1Zi5jIGIvZHJpdmVycy9kbWEtYnVm L2RtYS1idWYuYw0KPiBpbmRleCA2MDJiMTJkNzQ3MGQuLmRmMjMyMzliMDRmYyAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9kbWEtYnVmL2RtYS1idWYuYw0KPiArKysgYi9kcml2ZXJzL2Rt YS1idWYvZG1hLWJ1Zi5jDQo+IEBAIC0xMDQ3LDggKzEwNDcsOCBAQCBFWFBPUlRfU1lNQk9M X05TX0dQTChkbWFfYnVmX21vdmVfbm90aWZ5LCBETUFfQlVGKTsNCj4gICAgKg0KPiAgICAq ICAgSW50ZXJmYWNlczo6DQo+ICAgICoNCj4gLSAqICAgICAgdm9pZCBcKmRtYV9idWZfdm1h cChzdHJ1Y3QgZG1hX2J1ZiBcKmRtYWJ1Ziwgc3RydWN0IGRtYV9idWZfbWFwIFwqbWFwKQ0K PiAtICogICAgICB2b2lkIGRtYV9idWZfdnVubWFwKHN0cnVjdCBkbWFfYnVmIFwqZG1hYnVm LCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgXCptYXApDQo+ICsgKiAgICAgIHZvaWQgXCpkbWFfYnVm X3ZtYXAoc3RydWN0IGRtYV9idWYgXCpkbWFidWYsIHN0cnVjdCBpb3N5c19tYXAgXCptYXAp DQo+ICsgKiAgICAgIHZvaWQgZG1hX2J1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgXCpkbWFi dWYsIHN0cnVjdCBpb3N5c19tYXAgXCptYXApDQo+ICAgICoNCj4gICAgKiAgIFRoZSB2bWFw IGNhbGwgY2FuIGZhaWwgaWYgdGhlcmUgaXMgbm8gdm1hcCBzdXBwb3J0IGluIHRoZSBleHBv cnRlciwgb3IgaWYNCj4gICAgKiAgIGl0IHJ1bnMgb3V0IG9mIHZtYWxsb2Mgc3BhY2UuIE5v dGUgdGhhdCB0aGUgZG1hLWJ1ZiBsYXllciBrZWVwcyBhIHJlZmVyZW5jZQ0KPiBAQCAtMTI2 MCwxMiArMTI2MCwxMiBAQCBFWFBPUlRfU1lNQk9MX05TX0dQTChkbWFfYnVmX21tYXAsIERN QV9CVUYpOw0KPiAgICAqDQo+ICAgICogUmV0dXJucyAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVn YXRpdmUgZXJybm8gY29kZSBvdGhlcndpc2UuDQo+ICAgICovDQo+IC1pbnQgZG1hX2J1Zl92 bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0K PiAraW50IGRtYV9idWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgaW9z eXNfbWFwICptYXApDQo+ICAgew0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBwdHI7DQo+ICsJ c3RydWN0IGlvc3lzX21hcCBwdHI7DQo+ICAgCWludCByZXQgPSAwOw0KPiAgIA0KPiAtCWRt YV9idWZfbWFwX2NsZWFyKG1hcCk7DQo+ICsJaW9zeXNfbWFwX2NsZWFyKG1hcCk7DQo+ICAg DQo+ICAgCWlmIChXQVJOX09OKCFkbWFidWYpKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+ IEBAIC0xMjc2LDEyICsxMjc2LDEyIEBAIGludCBkbWFfYnVmX3ZtYXAoc3RydWN0IGRtYV9i dWYgKmRtYWJ1Ziwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICAgCW11dGV4X2xvY2so JmRtYWJ1Zi0+bG9jayk7DQo+ICAgCWlmIChkbWFidWYtPnZtYXBwaW5nX2NvdW50ZXIpIHsN Cj4gICAJCWRtYWJ1Zi0+dm1hcHBpbmdfY291bnRlcisrOw0KPiAtCQlCVUdfT04oZG1hX2J1 Zl9tYXBfaXNfbnVsbCgmZG1hYnVmLT52bWFwX3B0cikpOw0KPiArCQlCVUdfT04oaW9zeXNf bWFwX2lzX251bGwoJmRtYWJ1Zi0+dm1hcF9wdHIpKTsNCj4gICAJCSptYXAgPSBkbWFidWYt PnZtYXBfcHRyOw0KPiAgIAkJZ290byBvdXRfdW5sb2NrOw0KPiAgIAl9DQo+ICAgDQo+IC0J QlVHX09OKGRtYV9idWZfbWFwX2lzX3NldCgmZG1hYnVmLT52bWFwX3B0cikpOw0KPiArCUJV R19PTihpb3N5c19tYXBfaXNfc2V0KCZkbWFidWYtPnZtYXBfcHRyKSk7DQo+ICAgDQo+ICAg CXJldCA9IGRtYWJ1Zi0+b3BzLT52bWFwKGRtYWJ1ZiwgJnB0cik7DQo+ICAgCWlmIChXQVJO X09OX09OQ0UocmV0KSkNCj4gQEAgLTEzMDMsMjAgKzEzMDMsMjAgQEAgRVhQT1JUX1NZTUJP TF9OU19HUEwoZG1hX2J1Zl92bWFwLCBETUFfQlVGKTsNCj4gICAgKiBAZG1hYnVmOglbaW5d CWJ1ZmZlciB0byB2dW5tYXANCj4gICAgKiBAbWFwOglbaW5dCXZtYXAgcG9pbnRlciB0byB2 dW5tYXANCj4gICAgKi8NCj4gLXZvaWQgZG1hX2J1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYg KmRtYWJ1Ziwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICt2b2lkIGRtYV9idWZfdnVu bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4g ICB7DQo+ICAgCWlmIChXQVJOX09OKCFkbWFidWYpKQ0KPiAgIAkJcmV0dXJuOw0KPiAgIA0K PiAtCUJVR19PTihkbWFfYnVmX21hcF9pc19udWxsKCZkbWFidWYtPnZtYXBfcHRyKSk7DQo+ ICsJQlVHX09OKGlvc3lzX21hcF9pc19udWxsKCZkbWFidWYtPnZtYXBfcHRyKSk7DQo+ICAg CUJVR19PTihkbWFidWYtPnZtYXBwaW5nX2NvdW50ZXIgPT0gMCk7DQo+IC0JQlVHX09OKCFk bWFfYnVmX21hcF9pc19lcXVhbCgmZG1hYnVmLT52bWFwX3B0ciwgbWFwKSk7DQo+ICsJQlVH X09OKCFpb3N5c19tYXBfaXNfZXF1YWwoJmRtYWJ1Zi0+dm1hcF9wdHIsIG1hcCkpOw0KPiAg IA0KPiAgIAltdXRleF9sb2NrKCZkbWFidWYtPmxvY2spOw0KPiAgIAlpZiAoLS1kbWFidWYt PnZtYXBwaW5nX2NvdW50ZXIgPT0gMCkgew0KPiAgIAkJaWYgKGRtYWJ1Zi0+b3BzLT52dW5t YXApDQo+ICAgCQkJZG1hYnVmLT5vcHMtPnZ1bm1hcChkbWFidWYsIG1hcCk7DQo+IC0JCWRt YV9idWZfbWFwX2NsZWFyKCZkbWFidWYtPnZtYXBfcHRyKTsNCj4gKwkJaW9zeXNfbWFwX2Ns ZWFyKCZkbWFidWYtPnZtYXBfcHRyKTsNCj4gICAJfQ0KPiAgIAltdXRleF91bmxvY2soJmRt YWJ1Zi0+bG9jayk7DQo+ICAgfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9kbWEtYnVmL2hl YXBzL2NtYV9oZWFwLmMgYi9kcml2ZXJzL2RtYS1idWYvaGVhcHMvY21hX2hlYXAuYw0KPiBp bmRleCAwYzA1Yjc5ODcwZjkuLjA3YWNlM2NjYjI2NiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9kbWEtYnVmL2hlYXBzL2NtYV9oZWFwLmMNCj4gKysrIGIvZHJpdmVycy9kbWEtYnVmL2hl YXBzL2NtYV9oZWFwLmMNCj4gQEAgLTIwMCw3ICsyMDAsNyBAQCBzdGF0aWMgdm9pZCAqY21h X2hlYXBfZG9fdm1hcChzdHJ1Y3QgY21hX2hlYXBfYnVmZmVyICpidWZmZXIpDQo+ICAgCXJl dHVybiB2YWRkcjsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgaW50IGNtYV9oZWFwX3ZtYXAo c3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtz dGF0aWMgaW50IGNtYV9oZWFwX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0 IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IGNtYV9oZWFwX2J1ZmZlciAq YnVmZmVyID0gZG1hYnVmLT5wcml2Ow0KPiAgIAl2b2lkICp2YWRkcjsNCj4gQEAgLTIwOSw3 ICsyMDksNyBAQCBzdGF0aWMgaW50IGNtYV9oZWFwX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRt YWJ1Ziwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICAgCW11dGV4X2xvY2soJmJ1ZmZl ci0+bG9jayk7DQo+ICAgCWlmIChidWZmZXItPnZtYXBfY250KSB7DQo+ICAgCQlidWZmZXIt PnZtYXBfY250Kys7DQo+IC0JCWRtYV9idWZfbWFwX3NldF92YWRkcihtYXAsIGJ1ZmZlci0+ dmFkZHIpOw0KPiArCQlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwgYnVmZmVyLT52YWRkcik7 DQo+ICAgCQlnb3RvIG91dDsNCj4gICAJfQ0KPiAgIA0KPiBAQCAtMjIwLDE0ICsyMjAsMTQg QEAgc3RhdGljIGludCBjbWFfaGVhcF92bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0 cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAgIAl9DQo+ICAgCWJ1ZmZlci0+dmFkZHIgPSB2 YWRkcjsNCj4gICAJYnVmZmVyLT52bWFwX2NudCsrOw0KPiAtCWRtYV9idWZfbWFwX3NldF92 YWRkcihtYXAsIGJ1ZmZlci0+dmFkZHIpOw0KPiArCWlvc3lzX21hcF9zZXRfdmFkZHIobWFw LCBidWZmZXItPnZhZGRyKTsNCj4gICBvdXQ6DQo+ICAgCW11dGV4X3VubG9jaygmYnVmZmVy LT5sb2NrKTsNCj4gICANCj4gICAJcmV0dXJuIHJldDsNCj4gICB9DQo+ICAgDQo+IC1zdGF0 aWMgdm9pZCBjbWFfaGVhcF92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0 IGRtYV9idWZfbWFwICptYXApDQo+ICtzdGF0aWMgdm9pZCBjbWFfaGVhcF92dW5tYXAoc3Ry dWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4g ICAJc3RydWN0IGNtYV9oZWFwX2J1ZmZlciAqYnVmZmVyID0gZG1hYnVmLT5wcml2Ow0KPiAg IA0KPiBAQCAtMjM3LDcgKzIzNyw3IEBAIHN0YXRpYyB2b2lkIGNtYV9oZWFwX3Z1bm1hcChz dHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gICAJ CWJ1ZmZlci0+dmFkZHIgPSBOVUxMOw0KPiAgIAl9DQo+ICAgCW11dGV4X3VubG9jaygmYnVm ZmVyLT5sb2NrKTsNCj4gLQlkbWFfYnVmX21hcF9jbGVhcihtYXApOw0KPiArCWlvc3lzX21h cF9jbGVhcihtYXApOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBjbWFfaGVhcF9k bWFfYnVmX3JlbGVhc2Uoc3RydWN0IGRtYV9idWYgKmRtYWJ1ZikNCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jIGIvZHJpdmVycy9kbWEtYnVm L2hlYXBzL3N5c3RlbV9oZWFwLmMNCj4gaW5kZXggYWI3ZmQ4OTZkMmM0Li5mY2Y4MzZiYTlj MWYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5j DQo+ICsrKyBiL2RyaXZlcnMvZG1hLWJ1Zi9oZWFwcy9zeXN0ZW1faGVhcC5jDQo+IEBAIC0y NDEsNyArMjQxLDcgQEAgc3RhdGljIHZvaWQgKnN5c3RlbV9oZWFwX2RvX3ZtYXAoc3RydWN0 IHN5c3RlbV9oZWFwX2J1ZmZlciAqYnVmZmVyKQ0KPiAgIAlyZXR1cm4gdmFkZHI7DQo+ICAg fQ0KPiAgIA0KPiAtc3RhdGljIGludCBzeXN0ZW1faGVhcF92bWFwKHN0cnVjdCBkbWFfYnVm ICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArc3RhdGljIGludCBzeXN0 ZW1faGVhcF92bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBpb3N5c19tYXAg Km1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCBzeXN0ZW1faGVhcF9idWZmZXIgKmJ1ZmZlciA9 IGRtYWJ1Zi0+cHJpdjsNCj4gICAJdm9pZCAqdmFkZHI7DQo+IEBAIC0yNTAsNyArMjUwLDcg QEAgc3RhdGljIGludCBzeXN0ZW1faGVhcF92bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYs IHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAgIAltdXRleF9sb2NrKCZidWZmZXItPmxv Y2spOw0KPiAgIAlpZiAoYnVmZmVyLT52bWFwX2NudCkgew0KPiAgIAkJYnVmZmVyLT52bWFw X2NudCsrOw0KPiAtCQlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCBidWZmZXItPnZhZGRy KTsNCj4gKwkJaW9zeXNfbWFwX3NldF92YWRkcihtYXAsIGJ1ZmZlci0+dmFkZHIpOw0KPiAg IAkJZ290byBvdXQ7DQo+ICAgCX0NCj4gICANCj4gQEAgLTI2MiwxNCArMjYyLDE0IEBAIHN0 YXRpYyBpbnQgc3lzdGVtX2hlYXBfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1 Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gICANCj4gICAJYnVmZmVyLT52YWRkciA9IHZhZGRy Ow0KPiAgIAlidWZmZXItPnZtYXBfY250Kys7DQo+IC0JZG1hX2J1Zl9tYXBfc2V0X3ZhZGRy KG1hcCwgYnVmZmVyLT52YWRkcik7DQo+ICsJaW9zeXNfbWFwX3NldF92YWRkcihtYXAsIGJ1 ZmZlci0+dmFkZHIpOw0KPiAgIG91dDoNCj4gICAJbXV0ZXhfdW5sb2NrKCZidWZmZXItPmxv Y2spOw0KPiAgIA0KPiAgIAlyZXR1cm4gcmV0Ow0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2 b2lkIHN5c3RlbV9oZWFwX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3Qg ZG1hX2J1Zl9tYXAgKm1hcCkNCj4gK3N0YXRpYyB2b2lkIHN5c3RlbV9oZWFwX3Z1bm1hcChz dHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0K PiAgIAlzdHJ1Y3Qgc3lzdGVtX2hlYXBfYnVmZmVyICpidWZmZXIgPSBkbWFidWYtPnByaXY7 DQo+ICAgDQo+IEBAIC0yNzksNyArMjc5LDcgQEAgc3RhdGljIHZvaWQgc3lzdGVtX2hlYXBf dnVubWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFw KQ0KPiAgIAkJYnVmZmVyLT52YWRkciA9IE5VTEw7DQo+ICAgCX0NCj4gICAJbXV0ZXhfdW5s b2NrKCZidWZmZXItPmxvY2spOw0KPiAtCWRtYV9idWZfbWFwX2NsZWFyKG1hcCk7DQo+ICsJ aW9zeXNfbWFwX2NsZWFyKG1hcCk7DQo+ICAgfQ0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkIHN5 c3RlbV9oZWFwX2RtYV9idWZfcmVsZWFzZShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmKQ0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmggYi9kcml2ZXJzL2dw dS9kcm0vYXN0L2FzdF9kcnYuaA0KPiBpbmRleCAwMGJmYTQxZmY3Y2IuLjljOGQ1NmIwYTQx YiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfZHJ2LmgNCj4gQEAgLTEwNyw3ICsxMDcsNyBA QCBzdHJ1Y3QgYXN0X2N1cnNvcl9wbGFuZSB7DQo+ICAgDQo+ICAgCXN0cnVjdCB7DQo+ICAg CQlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvOw0KPiAtCQlzdHJ1Y3QgZG1hX2J1 Zl9tYXAgbWFwOw0KPiArCQlzdHJ1Y3QgaW9zeXNfbWFwIG1hcDsNCj4gICAJCXU2NCBvZmY7 DQo+ICAgCX0gaHdjW0FTVF9ERUZBVUxUX0hXQ19OVU1dOw0KPiAgIA0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jIGIvZHJpdmVycy9ncHUvZHJtL2Fz dC9hc3RfbW9kZS5jDQo+IGluZGV4IDZmYTgwNDJhMGRmZC4uMjc1OWU5NzdkOTVkIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vYXN0L2FzdF9tb2RlLmMNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2FzdC9hc3RfbW9kZS5jDQo+IEBAIC04MDQsMTEgKzgwNCwxMSBAQCBh c3RfY3Vyc29yX3BsYW5lX2hlbHBlcl9hdG9taWNfdXBkYXRlKHN0cnVjdCBkcm1fcGxhbmUg KnBsYW5lLA0KPiAgIAlzdHJ1Y3QgZHJtX3NoYWRvd19wbGFuZV9zdGF0ZSAqc2hhZG93X3Bs YW5lX3N0YXRlID0gdG9fZHJtX3NoYWRvd19wbGFuZV9zdGF0ZShuZXdfc3RhdGUpOw0KPiAg IAlzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiA9IG5ld19zdGF0ZS0+ZmI7DQo+ICAgCXN0 cnVjdCBhc3RfcHJpdmF0ZSAqYXN0ID0gdG9fYXN0X3ByaXZhdGUocGxhbmUtPmRldik7DQo+ IC0Jc3RydWN0IGRtYV9idWZfbWFwIGRzdF9tYXAgPQ0KPiArCXN0cnVjdCBpb3N5c19tYXAg ZHN0X21hcCA9DQo+ICAgCQlhc3RfY3Vyc29yX3BsYW5lLT5od2NbYXN0X2N1cnNvcl9wbGFu ZS0+bmV4dF9od2NfaW5kZXhdLm1hcDsNCj4gICAJdTY0IGRzdF9vZmYgPQ0KPiAgIAkJYXN0 X2N1cnNvcl9wbGFuZS0+aHdjW2FzdF9jdXJzb3JfcGxhbmUtPm5leHRfaHdjX2luZGV4XS5v ZmY7DQo+IC0Jc3RydWN0IGRtYV9idWZfbWFwIHNyY19tYXAgPSBzaGFkb3dfcGxhbmVfc3Rh dGUtPmRhdGFbMF07DQo+ICsJc3RydWN0IGlvc3lzX21hcCBzcmNfbWFwID0gc2hhZG93X3Bs YW5lX3N0YXRlLT5kYXRhWzBdOw0KPiAgIAl1bnNpZ25lZCBpbnQgb2Zmc2V0X3gsIG9mZnNl dF95Ow0KPiAgIAl1MTYgeCwgeTsNCj4gICAJdTggeF9vZmZzZXQsIHlfb2Zmc2V0Ow0KPiBA QCAtODg2LDcgKzg4Niw3IEBAIHN0YXRpYyB2b2lkIGFzdF9jdXJzb3JfcGxhbmVfZGVzdHJv eShzdHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSkNCj4gICAJc3RydWN0IGFzdF9jdXJzb3JfcGxh bmUgKmFzdF9jdXJzb3JfcGxhbmUgPSB0b19hc3RfY3Vyc29yX3BsYW5lKHBsYW5lKTsNCj4g ICAJc2l6ZV90IGk7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87DQo+ IC0Jc3RydWN0IGRtYV9idWZfbWFwIG1hcDsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcDsN Cj4gICANCj4gICAJZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJWkUoYXN0X2N1cnNvcl9wbGFu ZS0+aHdjKTsgKytpKSB7DQo+ICAgCQlnYm8gPSBhc3RfY3Vyc29yX3BsYW5lLT5od2NbaV0u Z2JvOw0KPiBAQCAtOTEzLDcgKzkxMyw3IEBAIHN0YXRpYyBpbnQgYXN0X2N1cnNvcl9wbGFu ZV9pbml0KHN0cnVjdCBhc3RfcHJpdmF0ZSAqYXN0KQ0KPiAgIAlzdHJ1Y3QgZHJtX3BsYW5l ICpjdXJzb3JfcGxhbmUgPSAmYXN0X2N1cnNvcl9wbGFuZS0+YmFzZTsNCj4gICAJc2l6ZV90 IHNpemUsIGk7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm87DQo+IC0J c3RydWN0IGRtYV9idWZfbWFwIG1hcDsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcDsNCj4g ICAJaW50IHJldDsNCj4gICAJczY0IG9mZjsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fY2FjaGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2FjaGUuYw0K PiBpbmRleCBmMTlkOWFjYmU5NTkuLjRiYjA5M2NjZjFiOCAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9jYWNoZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Y2FjaGUuYw0KPiBAQCAtMjgsMTAgKzI4LDEwIEBADQo+ICAgICogQXV0aG9yczogVGhvbWFz IEhlbGxzdHLDtm0gPHRob21hcy1hdC10dW5nc3RlbmdyYXBoaWNzLWRvdC1jb20+DQo+ICAg ICovDQo+ICAgDQo+IC0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4NCj4gKyNpbmNs dWRlIDxsaW51eC9jY19wbGF0Zm9ybS5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9leHBvcnQu aD4NCj4gICAjaW5jbHVkZSA8bGludXgvaGlnaG1lbS5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4 L2NjX3BsYXRmb3JtLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+ICAg I2luY2x1ZGUgPHhlbi94ZW4uaD4NCj4gICANCj4gICAjaW5jbHVkZSA8ZHJtL2RybV9jYWNo ZS5oPg0KPiBAQCAtMjE0LDE0ICsyMTQsMTQgQEAgYm9vbCBkcm1fbmVlZF9zd2lvdGxiKGlu dCBkbWFfYml0cykNCj4gICB9DQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fbmVlZF9zd2lvdGxi KTsNCj4gICANCj4gLXN0YXRpYyB2b2lkIG1lbWNweV9mYWxsYmFjayhzdHJ1Y3QgZG1hX2J1 Zl9tYXAgKmRzdCwNCj4gLQkJCSAgICBjb25zdCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKnNyYywN Cj4gK3N0YXRpYyB2b2lkIG1lbWNweV9mYWxsYmFjayhzdHJ1Y3QgaW9zeXNfbWFwICpkc3Qs DQo+ICsJCQkgICAgY29uc3Qgc3RydWN0IGlvc3lzX21hcCAqc3JjLA0KPiAgIAkJCSAgICB1 bnNpZ25lZCBsb25nIGxlbikNCj4gICB7DQo+ICAgCWlmICghZHN0LT5pc19pb21lbSAmJiAh c3JjLT5pc19pb21lbSkgew0KPiAgIAkJbWVtY3B5KGRzdC0+dmFkZHIsIHNyYy0+dmFkZHIs IGxlbik7DQo+ICAgCX0gZWxzZSBpZiAoIXNyYy0+aXNfaW9tZW0pIHsNCj4gLQkJZG1hX2J1 Zl9tYXBfbWVtY3B5X3RvKGRzdCwgc3JjLT52YWRkciwgbGVuKTsNCj4gKwkJaW9zeXNfbWFw X21lbWNweV90byhkc3QsIHNyYy0+dmFkZHIsIGxlbik7DQo+ICAgCX0gZWxzZSBpZiAoIWRz dC0+aXNfaW9tZW0pIHsNCj4gICAJCW1lbWNweV9mcm9taW8oZHN0LT52YWRkciwgc3JjLT52 YWRkcl9pb21lbSwgbGVuKTsNCj4gICAJfSBlbHNlIHsNCj4gQEAgLTMwNSw4ICszMDUsOCBA QCBzdGF0aWMgdm9pZCBfX2RybV9tZW1jcHlfZnJvbV93Yyh2b2lkICpkc3QsIGNvbnN0IHZv aWQgKnNyYywgdW5zaWduZWQgbG9uZyBsZW4pDQo+ICAgICogVHJpZXMgYW4gYXJjaCBvcHRp bWl6ZWQgbWVtY3B5IGZvciBwcmVmZXRjaGluZyByZWFkaW5nIG91dCBvZiBhIFdDIHJlZ2lv biwNCj4gICAgKiBhbmQgaWYgbm8gc3VjaCBiZWFzdCBpcyBhdmFpbGFibGUsIGZhbGxzIGJh Y2sgdG8gYSBub3JtYWwgbWVtY3B5Lg0KPiAgICAqLw0KPiAtdm9pZCBkcm1fbWVtY3B5X2Zy b21fd2Moc3RydWN0IGRtYV9idWZfbWFwICpkc3QsDQo+IC0JCQljb25zdCBzdHJ1Y3QgZG1h X2J1Zl9tYXAgKnNyYywNCj4gK3ZvaWQgZHJtX21lbWNweV9mcm9tX3djKHN0cnVjdCBpb3N5 c19tYXAgKmRzdCwNCj4gKwkJCWNvbnN0IHN0cnVjdCBpb3N5c19tYXAgKnNyYywNCj4gICAJ CQl1bnNpZ25lZCBsb25nIGxlbikNCj4gICB7DQo+ICAgCWlmIChXQVJOX09OKGluX2ludGVy cnVwdCgpKSkgew0KPiBAQCAtMzQzLDggKzM0Myw4IEBAIHZvaWQgZHJtX21lbWNweV9pbml0 X2Vhcmx5KHZvaWQpDQo+ICAgCQlzdGF0aWNfYnJhbmNoX2VuYWJsZSgmaGFzX21vdm50ZHFh KTsNCj4gICB9DQo+ICAgI2Vsc2UNCj4gLXZvaWQgZHJtX21lbWNweV9mcm9tX3djKHN0cnVj dCBkbWFfYnVmX21hcCAqZHN0LA0KPiAtCQkJY29uc3Qgc3RydWN0IGRtYV9idWZfbWFwICpz cmMsDQo+ICt2b2lkIGRybV9tZW1jcHlfZnJvbV93YyhzdHJ1Y3QgaW9zeXNfbWFwICpkc3Qs DQo+ICsJCQljb25zdCBzdHJ1Y3QgaW9zeXNfbWFwICpzcmMsDQo+ICAgCQkJdW5zaWduZWQg bG9uZyBsZW4pDQo+ICAgew0KPiAgIAlXQVJOX09OKGluX2ludGVycnVwdCgpKTsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2NsaWVudC5jDQo+IGluZGV4IGNlNDVlMzgwZjRhMi4uYWYzYjczOTViZjY5IDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2NsaWVudC5jDQo+ICsrKyBiL2Ry aXZlcnMvZ3B1L2RybS9kcm1fY2xpZW50LmMNCj4gQEAgLTMsNyArMyw3IEBADQo+ICAgICog Q29weXJpZ2h0IDIwMTggTm9yYWxmIFRyw7hubmVzDQo+ICAgICovDQo+ICAgDQo+IC0jaW5j bHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pb3N5cy1t YXAuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvbGlzdC5oPg0KPiAgICNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gQEAgLTMwOSw5 ICszMDksMTAgQEAgZHJtX2NsaWVudF9idWZmZXJfY3JlYXRlKHN0cnVjdCBkcm1fY2xpZW50 X2RldiAqY2xpZW50LCB1MzIgd2lkdGgsIHUzMiBoZWlnaHQsIHUNCj4gICAgKgkwIG9uIHN1 Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJybm8gY29kZSBvdGhlcndpc2UuDQo+ICAgICovDQo+ ICAgaW50DQo+IC1kcm1fY2xpZW50X2J1ZmZlcl92bWFwKHN0cnVjdCBkcm1fY2xpZW50X2J1 ZmZlciAqYnVmZmVyLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcF9jb3B5KQ0KPiArZHJtX2Ns aWVudF9idWZmZXJfdm1hcChzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlciwNCj4g KwkJICAgICAgIHN0cnVjdCBpb3N5c19tYXAgKm1hcF9jb3B5KQ0KPiAgIHsNCj4gLQlzdHJ1 Y3QgZG1hX2J1Zl9tYXAgKm1hcCA9ICZidWZmZXItPm1hcDsNCj4gKwlzdHJ1Y3QgaW9zeXNf bWFwICptYXAgPSAmYnVmZmVyLT5tYXA7DQo+ICAgCWludCByZXQ7DQo+ICAgDQo+ICAgCS8q DQo+IEBAIC0zNDIsNyArMzQzLDcgQEAgRVhQT1JUX1NZTUJPTChkcm1fY2xpZW50X2J1ZmZl cl92bWFwKTsNCj4gICAgKi8NCj4gICB2b2lkIGRybV9jbGllbnRfYnVmZmVyX3Z1bm1hcChz dHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1ZmZlcikNCj4gICB7DQo+IC0Jc3RydWN0IGRt YV9idWZfbWFwICptYXAgPSAmYnVmZmVyLT5tYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCAq bWFwID0gJmJ1ZmZlci0+bWFwOw0KPiAgIA0KPiAgIAlkcm1fZ2VtX3Z1bm1hcChidWZmZXIt PmdlbSwgbWFwKTsNCj4gICB9DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJt X2ZiX2hlbHBlci5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9mYl9oZWxwZXIuYw0KPiBpbmRl eCA4MDVjNWE2NjY0OTAuLjcwOWQxZWIzMTg5OSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2RybV9mYl9oZWxwZXIuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2Zi X2hlbHBlci5jDQo+IEBAIC0zNzMsNyArMzczLDcgQEAgc3RhdGljIHZvaWQgZHJtX2ZiX2hl bHBlcl9yZXN1bWVfd29ya2VyKHN0cnVjdCB3b3JrX3N0cnVjdCAqd29yaykNCj4gICANCj4g ICBzdGF0aWMgdm9pZCBkcm1fZmJfaGVscGVyX2RhbWFnZV9ibGl0X3JlYWwoc3RydWN0IGRy bV9mYl9oZWxwZXIgKmZiX2hlbHBlciwNCj4gICAJCQkJCSAgIHN0cnVjdCBkcm1fY2xpcF9y ZWN0ICpjbGlwLA0KPiAtCQkJCQkgICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKmRzdCkNCj4gKwkJ CQkJICAgc3RydWN0IGlvc3lzX21hcCAqZHN0KQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIgPSBmYl9oZWxwZXItPmZiOw0KPiAgIAl1bnNpZ25lZCBpbnQgY3Bw ID0gZmItPmZvcm1hdC0+Y3BwWzBdOw0KPiBAQCAtMzgyLDExICszODIsMTEgQEAgc3RhdGlj IHZvaWQgZHJtX2ZiX2hlbHBlcl9kYW1hZ2VfYmxpdF9yZWFsKHN0cnVjdCBkcm1fZmJfaGVs cGVyICpmYl9oZWxwZXIsDQo+ICAgCXNpemVfdCBsZW4gPSAoY2xpcC0+eDIgLSBjbGlwLT54 MSkgKiBjcHA7DQo+ICAgCXVuc2lnbmVkIGludCB5Ow0KPiAgIA0KPiAtCWRtYV9idWZfbWFw X2luY3IoZHN0LCBvZmZzZXQpOyAvKiBnbyB0byBmaXJzdCBwaXhlbCB3aXRoaW4gY2xpcCBy ZWN0ICovDQo+ICsJaW9zeXNfbWFwX2luY3IoZHN0LCBvZmZzZXQpOyAvKiBnbyB0byBmaXJz dCBwaXhlbCB3aXRoaW4gY2xpcCByZWN0ICovDQo+ICAgDQo+ICAgCWZvciAoeSA9IGNsaXAt PnkxOyB5IDwgY2xpcC0+eTI7IHkrKykgew0KPiAtCQlkbWFfYnVmX21hcF9tZW1jcHlfdG8o ZHN0LCBzcmMsIGxlbik7DQo+IC0JCWRtYV9idWZfbWFwX2luY3IoZHN0LCBmYi0+cGl0Y2hl c1swXSk7DQo+ICsJCWlvc3lzX21hcF9tZW1jcHlfdG8oZHN0LCBzcmMsIGxlbik7DQo+ICsJ CWlvc3lzX21hcF9pbmNyKGRzdCwgZmItPnBpdGNoZXNbMF0pOw0KPiAgIAkJc3JjICs9IGZi LT5waXRjaGVzWzBdOw0KPiAgIAl9DQo+ICAgfQ0KPiBAQCAtMzk1LDcgKzM5NSw3IEBAIHN0 YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9kYW1hZ2VfYmxpdChzdHJ1Y3QgZHJtX2ZiX2hlbHBl ciAqZmJfaGVscGVyLA0KPiAgIAkJCQkgICAgIHN0cnVjdCBkcm1fY2xpcF9yZWN0ICpjbGlw KQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIgPSBmYl9o ZWxwZXItPmJ1ZmZlcjsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwLCBkc3Q7DQo+ICsJ c3RydWN0IGlvc3lzX21hcCBtYXAsIGRzdDsNCj4gICAJaW50IHJldDsNCj4gICANCj4gICAJ LyoNCj4gQEAgLTIzMTYsNyArMjMxNiw3IEBAIHN0YXRpYyBpbnQgZHJtX2ZiX2hlbHBlcl9n ZW5lcmljX3Byb2JlKHN0cnVjdCBkcm1fZmJfaGVscGVyICpmYl9oZWxwZXIsDQo+ICAgCXN0 cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiOw0KPiAgIAlzdHJ1Y3QgZmJfaW5mbyAqZmJpOw0K PiAgIAl1MzIgZm9ybWF0Ow0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7DQo+ICsJc3Ry dWN0IGlvc3lzX21hcCBtYXA7DQo+ICAgCWludCByZXQ7DQo+ICAgDQo+ICAgCWRybV9kYmdf a21zKGRldiwgInN1cmZhY2Ugd2lkdGgoJWQpLCBoZWlnaHQoJWQpIGFuZCBicHAoJWQpXG4i LA0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW0uYyBiL2RyaXZlcnMv Z3B1L2RybS9kcm1fZ2VtLmMNCj4gaW5kZXggNGRjZGVjNjQ4N2JiLi44YzdiMjRmNGIwZTQg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtLmMNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL2RybV9nZW0uYw0KPiBAQCAtMzYsNyArMzYsNyBAQA0KPiAgICNpbmNs dWRlIDxsaW51eC9wYWdlbWFwLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3NobWVtX2ZzLmg+ DQo+ICAgI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9k bWEtYnVmLW1hcC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAgICNp bmNsdWRlIDxsaW51eC9tZW1fZW5jcnlwdC5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9wYWdl dmVjLmg+DQo+ICAgDQo+IEBAIC0xMTY1LDcgKzExNjUsNyBAQCB2b2lkIGRybV9nZW1fdW5w aW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopDQo+ICAgCQlvYmotPmZ1bmNzLT51bnBp bihvYmopOw0KPiAgIH0NCj4gICANCj4gLWludCBkcm1fZ2VtX3ZtYXAoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAraW50IGRybV9n ZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGlvc3lzX21hcCAq bWFwKQ0KPiAgIHsNCj4gICAJaW50IHJldDsNCj4gICANCj4gQEAgLTExNzUsMjMgKzExNzUs MjMgQEAgaW50IGRybV9nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3Ry dWN0IGRtYV9idWZfbWFwICptYXApDQo+ICAgCXJldCA9IG9iai0+ZnVuY3MtPnZtYXAob2Jq LCBtYXApOw0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJcmV0dXJuIHJldDsNCj4gLQllbHNlIGlm IChkbWFfYnVmX21hcF9pc19udWxsKG1hcCkpDQo+ICsJZWxzZSBpZiAoaW9zeXNfbWFwX2lz X251bGwobWFwKSkNCj4gICAJCXJldHVybiAtRU5PTUVNOw0KPiAgIA0KPiAgIAlyZXR1cm4g MDsNCj4gICB9DQo+ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3ZtYXApOw0KPiAgIA0KPiAt dm9pZCBkcm1fZ2VtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0 IGRtYV9idWZfbWFwICptYXApDQo+ICt2b2lkIGRybV9nZW1fdnVubWFwKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAtCWlm IChkbWFfYnVmX21hcF9pc19udWxsKG1hcCkpDQo+ICsJaWYgKGlvc3lzX21hcF9pc19udWxs KG1hcCkpDQo+ICAgCQlyZXR1cm47DQo+ICAgDQo+ICAgCWlmIChvYmotPmZ1bmNzLT52dW5t YXApDQo+ICAgCQlvYmotPmZ1bmNzLT52dW5tYXAob2JqLCBtYXApOw0KPiAgIA0KPiAgIAkv KiBBbHdheXMgc2V0IHRoZSBtYXBwaW5nIHRvIE5VTEwuIENhbGxlcnMgbWF5IHJlbHkgb24g dGhpcy4gKi8NCj4gLQlkbWFfYnVmX21hcF9jbGVhcihtYXApOw0KPiArCWlvc3lzX21hcF9j bGVhcihtYXApOw0KPiAgIH0NCj4gICBFWFBPUlRfU1lNQk9MKGRybV9nZW1fdnVubWFwKTsN Cj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2NtYV9oZWxw ZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuYw0KPiBpbmRleCBj ZWZkMGNiZjlkZWIuLjg4YzQzMmE3Y2IzYyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL2RybV9nZW1fY21hX2hlbHBlci5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f Z2VtX2NtYV9oZWxwZXIuYw0KPiBAQCAtMjA5LDcgKzIwOSw3IEBAIGRybV9nZW1fY21hX2Ny ZWF0ZV93aXRoX2hhbmRsZShzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGVfcHJpdiwNCj4gICB2b2lk IGRybV9nZW1fY21hX2ZyZWUoc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iaikN Cj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiA9ICZjbWFfb2Jq LT5iYXNlOw0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXAgPSBETUFfQlVGX01BUF9JTklU X1ZBRERSKGNtYV9vYmotPnZhZGRyKTsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcCA9IElP U1lTX01BUF9JTklUX1ZBRERSKGNtYV9vYmotPnZhZGRyKTsNCj4gICANCj4gICAJaWYgKGdl bV9vYmotPmltcG9ydF9hdHRhY2gpIHsNCj4gICAJCWlmIChjbWFfb2JqLT52YWRkcikNCj4g QEAgLTQ4MCw5ICs0ODAsMTAgQEAgRVhQT1JUX1NZTUJPTF9HUEwoZHJtX2dlbV9jbWFfcHJp bWVfaW1wb3J0X3NnX3RhYmxlKTsNCj4gICAgKiBSZXR1cm5zOg0KPiAgICAqIDAgb24gc3Vj Y2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJvciBjb2RlIG90aGVyd2lzZS4NCj4gICAgKi8NCj4g LWludCBkcm1fZ2VtX2NtYV92bWFwKHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9v YmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAraW50IGRybV9nZW1fY21hX3ZtYXAo c3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iaiwNCj4gKwkJICAgICBzdHJ1Y3Qg aW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAtCWRtYV9idWZfbWFwX3NldF92YWRkcihtYXAs IGNtYV9vYmotPnZhZGRyKTsNCj4gKwlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwgY21hX29i ai0+dmFkZHIpOw0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+IEBAIC01NTcsNyAr NTU4LDcgQEAgZHJtX2dlbV9jbWFfcHJpbWVfaW1wb3J0X3NnX3RhYmxlX3ZtYXAoc3RydWN0 IGRybV9kZXZpY2UgKmRldiwNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX2NtYV9vYmpl Y3QgKmNtYV9vYmo7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqOw0KPiAtCXN0 cnVjdCBkbWFfYnVmX21hcCBtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBtYXA7DQo+ICAg CWludCByZXQ7DQo+ICAgDQo+ICAgCXJldCA9IGRtYV9idWZfdm1hcChhdHRhY2gtPmRtYWJ1 ZiwgJm1hcCk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFt ZWJ1ZmZlcl9oZWxwZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX2ZyYW1lYnVmZmVy X2hlbHBlci5jDQo+IGluZGV4IDc0NmZkOGM3Mzg0NS4uZjQ2MTk4MDNhY2QwIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuYw0K PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuYw0K PiBAQCAtMzIxLDcgKzMyMSw3IEBAIEVYUE9SVF9TWU1CT0xfR1BMKGRybV9nZW1fZmJfY3Jl YXRlX3dpdGhfZGlydHkpOw0KPiAgICAqIEBkYXRhOiByZXR1cm5zIHRoZSBkYXRhIGFkZHJl c3MgZm9yIGVhY2ggQk8sIGNhbiBiZSBOVUxMDQo+ICAgICoNCj4gICAgKiBUaGlzIGZ1bmN0 aW9uIG1hcHMgYWxsIGJ1ZmZlciBvYmplY3RzIG9mIHRoZSBnaXZlbiBmcmFtZWJ1ZmZlciBp bnRvDQo+IC0gKiBrZXJuZWwgYWRkcmVzcyBzcGFjZSBhbmQgc3RvcmVzIHRoZW0gaW4gc3Ry dWN0IGRtYV9idWZfbWFwLiBJZiB0aGUNCj4gKyAqIGtlcm5lbCBhZGRyZXNzIHNwYWNlIGFu ZCBzdG9yZXMgdGhlbSBpbiBzdHJ1Y3QgaW9zeXNfbWFwLiBJZiB0aGUNCj4gICAgKiBtYXBw aW5nIG9wZXJhdGlvbiBmYWlscyBmb3Igb25lIG9mIHRoZSBCT3MsIHRoZSBmdW5jdGlvbiB1 bm1hcHMgdGhlDQo+ICAgICogYWxyZWFkeSBlc3RhYmxpc2hlZCBtYXBwaW5ncyBhdXRvbWF0 aWNhbGx5Lg0KPiAgICAqDQo+IEBAIC0zMzUsOCArMzM1LDggQEAgRVhQT1JUX1NZTUJPTF9H UEwoZHJtX2dlbV9mYl9jcmVhdGVfd2l0aF9kaXJ0eSk7DQo+ICAgICogMCBvbiBzdWNjZXNz LCBvciBhIG5lZ2F0aXZlIGVycm5vIGNvZGUgb3RoZXJ3aXNlLg0KPiAgICAqLw0KPiAgIGlu dCBkcm1fZ2VtX2ZiX3ZtYXAoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsDQo+IC0JCSAg ICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwW3N0YXRpYyBEUk1fRk9STUFUX01BWF9QTEFORVNd LA0KPiAtCQkgICAgc3RydWN0IGRtYV9idWZfbWFwIGRhdGFbRFJNX0ZPUk1BVF9NQVhfUExB TkVTXSkNCj4gKwkJICAgIHN0cnVjdCBpb3N5c19tYXAgbWFwW3N0YXRpYyBEUk1fRk9STUFU X01BWF9QTEFORVNdLA0KPiArCQkgICAgc3RydWN0IGlvc3lzX21hcCBkYXRhW0RSTV9GT1JN QVRfTUFYX1BMQU5FU10pDQo+ICAgew0KPiAgIAlzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i ajsNCj4gICAJdW5zaWduZWQgaW50IGk7DQo+IEBAIC0zNDUsNyArMzQ1LDcgQEAgaW50IGRy bV9nZW1fZmJfdm1hcChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwNCj4gICAJZm9yIChp ID0gMDsgaSA8IERSTV9GT1JNQVRfTUFYX1BMQU5FUzsgKytpKSB7DQo+ICAgCQlvYmogPSBk cm1fZ2VtX2ZiX2dldF9vYmooZmIsIGkpOw0KPiAgIAkJaWYgKCFvYmopIHsNCj4gLQkJCWRt YV9idWZfbWFwX2NsZWFyKCZtYXBbaV0pOw0KPiArCQkJaW9zeXNfbWFwX2NsZWFyKCZtYXBb aV0pOw0KPiAgIAkJCWNvbnRpbnVlOw0KPiAgIAkJfQ0KPiAgIAkJcmV0ID0gZHJtX2dlbV92 bWFwKG9iaiwgJm1hcFtpXSk7DQo+IEBAIC0zNTYsOSArMzU2LDkgQEAgaW50IGRybV9nZW1f ZmJfdm1hcChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwNCj4gICAJaWYgKGRhdGEpIHsN Cj4gICAJCWZvciAoaSA9IDA7IGkgPCBEUk1fRk9STUFUX01BWF9QTEFORVM7ICsraSkgew0K PiAgIAkJCW1lbWNweSgmZGF0YVtpXSwgJm1hcFtpXSwgc2l6ZW9mKGRhdGFbaV0pKTsNCj4g LQkJCWlmIChkbWFfYnVmX21hcF9pc19udWxsKCZkYXRhW2ldKSkNCj4gKwkJCWlmIChpb3N5 c19tYXBfaXNfbnVsbCgmZGF0YVtpXSkpDQo+ICAgCQkJCWNvbnRpbnVlOw0KPiAtCQkJZG1h X2J1Zl9tYXBfaW5jcigmZGF0YVtpXSwgZmItPm9mZnNldHNbaV0pOw0KPiArCQkJaW9zeXNf bWFwX2luY3IoJmRhdGFbaV0sIGZiLT5vZmZzZXRzW2ldKTsNCj4gICAJCX0NCj4gICAJfQ0K PiAgIA0KPiBAQCAtMzg2LDcgKzM4Niw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9mYl92 bWFwKTsNCj4gICAgKiBTZWUgZHJtX2dlbV9mYl92bWFwKCkgZm9yIG1vcmUgaW5mb3JtYXRp b24uDQo+ICAgICovDQo+ICAgdm9pZCBkcm1fZ2VtX2ZiX3Z1bm1hcChzdHJ1Y3QgZHJtX2Zy YW1lYnVmZmVyICpmYiwNCj4gLQkJICAgICAgIHN0cnVjdCBkbWFfYnVmX21hcCBtYXBbc3Rh dGljIERSTV9GT1JNQVRfTUFYX1BMQU5FU10pDQo+ICsJCSAgICAgICBzdHJ1Y3QgaW9zeXNf bWFwIG1hcFtzdGF0aWMgRFJNX0ZPUk1BVF9NQVhfUExBTkVTXSkNCj4gICB7DQo+ICAgCXVu c2lnbmVkIGludCBpID0gRFJNX0ZPUk1BVF9NQVhfUExBTkVTOw0KPiAgIAlzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iajsNCj4gQEAgLTM5Niw3ICszOTYsNyBAQCB2b2lkIGRybV9nZW1f ZmJfdnVubWFwKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLA0KPiAgIAkJb2JqID0gZHJt X2dlbV9mYl9nZXRfb2JqKGZiLCBpKTsNCj4gICAJCWlmICghb2JqKQ0KPiAgIAkJCWNvbnRp bnVlOw0KPiAtCQlpZiAoZG1hX2J1Zl9tYXBfaXNfbnVsbCgmbWFwW2ldKSkNCj4gKwkJaWYg KGlvc3lzX21hcF9pc19udWxsKCZtYXBbaV0pKQ0KPiAgIAkJCWNvbnRpbnVlOw0KPiAgIAkJ ZHJtX2dlbV92dW5tYXAob2JqLCAmbWFwW2ldKTsNCj4gICAJfQ0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuYw0KPiBpbmRleCA2MjE5MjQxMTZlYjQuLjNlNzM4 YWVhMjY2NCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1f aGVscGVyLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1fc2htZW1faGVscGVy LmMNCj4gQEAgLTI4NiwxMyArMjg2LDE0IEBAIHZvaWQgZHJtX2dlbV9zaG1lbV91bnBpbihz dHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKQ0KPiAgIH0NCj4gICBFWFBPUlRf U1lNQk9MKGRybV9nZW1fc2htZW1fdW5waW4pOw0KPiAgIA0KPiAtc3RhdGljIGludCBkcm1f Z2VtX3NobWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2ht ZW0sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArc3RhdGljIGludCBkcm1fZ2VtX3No bWVtX3ZtYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sDQo+ ICsJCQkJICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaiA9ICZzaG1lbS0+YmFzZTsNCj4gICAJaW50IHJldCA9IDA7 DQo+ICAgDQo+ICAgCWlmIChzaG1lbS0+dm1hcF91c2VfY291bnQrKyA+IDApIHsNCj4gLQkJ ZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgc2htZW0tPnZhZGRyKTsNCj4gKwkJaW9zeXNf bWFwX3NldF92YWRkcihtYXAsIHNobWVtLT52YWRkcik7DQo+ICAgCQlyZXR1cm4gMDsNCj4g ICAJfQ0KPiAgIA0KPiBAQCAtMzE5LDcgKzMyMCw3IEBAIHN0YXRpYyBpbnQgZHJtX2dlbV9z aG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBz dHJ1Y3QNCj4gICAJCWlmICghc2htZW0tPnZhZGRyKQ0KPiAgIAkJCXJldCA9IC1FTk9NRU07 DQo+ICAgCQllbHNlDQo+IC0JCQlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCBzaG1lbS0+ dmFkZHIpOw0KPiArCQkJaW9zeXNfbWFwX3NldF92YWRkcihtYXAsIHNobWVtLT52YWRkcik7 DQo+ICAgCX0NCj4gICANCj4gICAJaWYgKHJldCkgew0KPiBAQCAtMzUzLDcgKzM1NCw4IEBA IHN0YXRpYyBpbnQgZHJtX2dlbV9zaG1lbV92bWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9z aG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QNCj4gICAgKiBSZXR1cm5zOg0KPiAgICAqIDAg b24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4NCj4gICAg Ki8NCj4gLWludCBkcm1fZ2VtX3NobWVtX3ZtYXAoc3RydWN0IGRybV9nZW1fc2htZW1fb2Jq ZWN0ICpzaG1lbSwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtpbnQgZHJtX2dlbV9z aG1lbV92bWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sDQo+ICsJCSAg ICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlpbnQgcmV0Ow0KPiAg IA0KPiBAQCAtMzY4LDcgKzM3MCw3IEBAIGludCBkcm1fZ2VtX3NobWVtX3ZtYXAoc3RydWN0 IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwgc3RydWN0IGRtYV9idWZfbWFwICptDQo+ ICAgRVhQT1JUX1NZTUJPTChkcm1fZ2VtX3NobWVtX3ZtYXApOw0KPiAgIA0KPiAgIHN0YXRp YyB2b2lkIGRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV9zaG1l bV9vYmplY3QgKnNobWVtLA0KPiAtCQkJCQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4g KwkJCQkJc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmogPSAmc2htZW0tPmJhc2U7DQo+ICAgDQo+IEBAIC00MDAsNyArNDAy LDggQEAgc3RhdGljIHZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXBfbG9ja2VkKHN0cnVjdCBk cm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sDQo+ICAgICogVGhpcyBmdW5jdGlvbiBoaWRl cyB0aGUgZGlmZmVyZW5jZXMgYmV0d2VlbiBkbWEtYnVmIGltcG9ydGVkIGFuZCBuYXRpdmVs eQ0KPiAgICAqIGFsbG9jYXRlZCBvYmplY3RzLg0KPiAgICAqLw0KPiAtdm9pZCBkcm1fZ2Vt X3NobWVtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1 Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gK3ZvaWQgZHJtX2dlbV9zaG1lbV92dW5tYXAoc3Ry dWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwNCj4gKwkJCSAgc3RydWN0IGlvc3lz X21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJbXV0ZXhfbG9jaygmc2htZW0tPnZtYXBfbG9jayk7 DQo+ICAgCWRybV9nZW1fc2htZW1fdnVubWFwX2xvY2tlZChzaG1lbSwgbWFwKTsNCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3R0bV9oZWxwZXIuYyBiL2RyaXZl cnMvZ3B1L2RybS9kcm1fZ2VtX3R0bV9oZWxwZXIuYw0KPiBpbmRleCBlY2YzZDJhNTRhOTgu LmQ1OTYyYTM0YzAxZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2RybV9nZW1f dHRtX2hlbHBlci5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3R0bV9oZWxw ZXIuYw0KPiBAQCAtNjEsNyArNjEsNyBAQCBFWFBPUlRfU1lNQk9MKGRybV9nZW1fdHRtX3By aW50X2luZm8pOw0KPiAgICAqIDAgb24gc3VjY2Vzcywgb3IgYSBuZWdhdGl2ZSBlcnJubyBj b2RlIG90aGVyd2lzZS4NCj4gICAgKi8NCj4gICBpbnQgZHJtX2dlbV90dG1fdm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwNCj4gLQkJICAgICBzdHJ1Y3QgZG1hX2J1Zl9tYXAg Km1hcCkNCj4gKwkJICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvID0gZHJtX2dlbV90dG1fb2ZfZ2VtKGdlbSk7 DQo+ICAgDQo+IEBAIC03OCw3ICs3OCw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dlbV90dG1f dm1hcCk7DQo+ICAgICogJmRybV9nZW1fb2JqZWN0X2Z1bmNzLnZtYXAgY2FsbGJhY2suDQo+ ICAgICovDQo+ICAgdm9pZCBkcm1fZ2VtX3R0bV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2Jq ZWN0ICpnZW0sDQo+IC0JCQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gKwkJCXN0cnVj dCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCB0dG1fYnVmZmVyX29iamVj dCAqYm8gPSBkcm1fZ2VtX3R0bV9vZl9nZW0oZ2VtKTsNCj4gICANCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMgYi9kcml2ZXJzL2dwdS9k cm0vZHJtX2dlbV92cmFtX2hlbHBlci5jDQo+IGluZGV4IDNmMDAxOTIyMTVkMS4uZGM3Zjkz OGJmZmYyIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2dlbV92cmFtX2hl bHBlci5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmMN Cj4gQEAgLTEsNiArMSw2IEBADQo+ICAgLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjAtb3ItbGF0ZXINCj4gICANCj4gLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAgICNpbmNsdWRlIDxsaW51 eC9tb2R1bGUuaD4NCj4gICANCj4gICAjaW5jbHVkZSA8ZHJtL2RybV9kZWJ1Z2ZzLmg+DQo+ IEBAIC0xMTYsNyArMTE2LDcgQEAgc3RhdGljIHZvaWQgZHJtX2dlbV92cmFtX2NsZWFudXAo c3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibykNCj4gICAJICovDQo+ICAgDQo+ICAg CVdBUk5fT04oZ2JvLT52bWFwX3VzZV9jb3VudCk7DQo+IC0JV0FSTl9PTihkbWFfYnVmX21h cF9pc19zZXQoJmdiby0+bWFwKSk7DQo+ICsJV0FSTl9PTihpb3N5c19tYXBfaXNfc2V0KCZn Ym8tPm1hcCkpOw0KPiAgIA0KPiAgIAlkcm1fZ2VtX29iamVjdF9yZWxlYXNlKCZnYm8tPmJv LmJhc2UpOw0KPiAgIH0NCj4gQEAgLTM2NSw3ICszNjUsNyBAQCBpbnQgZHJtX2dlbV92cmFt X3VucGluKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pDQo+ICAgRVhQT1JUX1NZ TUJPTChkcm1fZ2VtX3ZyYW1fdW5waW4pOw0KPiAgIA0KPiAgIHN0YXRpYyBpbnQgZHJtX2dl bV92cmFtX2ttYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sDQo+ IC0JCQkJICAgIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArCQkJCSAgICBzdHJ1Y3Qg aW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlpbnQgcmV0Ow0KPiAgIA0KPiBAQCAtMzc3 LDcgKzM3Nyw3IEBAIHN0YXRpYyBpbnQgZHJtX2dlbV92cmFtX2ttYXBfbG9ja2VkKHN0cnVj dCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sDQo+ICAgCSAqIHBhZ2UgbWFwcGluZyBtaWdo dCBzdGlsbCBiZSBhcm91bmQuIE9ubHkgdm1hcCBpZiB0aGUgdGhlcmUncw0KPiAgIAkgKiBu byBtYXBwaW5nIHByZXNlbnQuDQo+ICAgCSAqLw0KPiAtCWlmIChkbWFfYnVmX21hcF9pc19u dWxsKCZnYm8tPm1hcCkpIHsNCj4gKwlpZiAoaW9zeXNfbWFwX2lzX251bGwoJmdiby0+bWFw KSkgew0KPiAgIAkJcmV0ID0gdHRtX2JvX3ZtYXAoJmdiby0+Ym8sICZnYm8tPm1hcCk7DQo+ ICAgCQlpZiAocmV0KQ0KPiAgIAkJCXJldHVybiByZXQ7DQo+IEBAIC0zOTEsMTQgKzM5MSwx NCBAQCBzdGF0aWMgaW50IGRybV9nZW1fdnJhbV9rbWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dl bV92cmFtX29iamVjdCAqZ2JvLA0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCBkcm1f Z2VtX3ZyYW1fa3VubWFwX2xvY2tlZChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2Jv LA0KPiAtCQkJCSAgICAgICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gKwkJCQkgICAg ICAgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9kZXZp Y2UgKmRldiA9IGdiby0+Ym8uYmFzZS5kZXY7DQo+ICAgDQo+ICAgCWlmIChkcm1fV0FSTl9P Tl9PTkNFKGRldiwgIWdiby0+dm1hcF91c2VfY291bnQpKQ0KPiAgIAkJcmV0dXJuOw0KPiAg IA0KPiAtCWlmIChkcm1fV0FSTl9PTl9PTkNFKGRldiwgIWRtYV9idWZfbWFwX2lzX2VxdWFs KCZnYm8tPm1hcCwgbWFwKSkpDQo+ICsJaWYgKGRybV9XQVJOX09OX09OQ0UoZGV2LCAhaW9z eXNfbWFwX2lzX2VxdWFsKCZnYm8tPm1hcCwgbWFwKSkpDQo+ICAgCQlyZXR1cm47IC8qIEJV RzogbWFwIG5vdCBtYXBwZWQgZnJvbSB0aGlzIEJPICovDQo+ICAgDQo+ICAgCWlmICgtLWdi by0+dm1hcF91c2VfY291bnQgPiAwKQ0KPiBAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyB2 b2lkIGRybV9nZW1fdnJhbV9rdW5tYXBfbG9ja2VkKHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2Jq ZWN0ICpnYm8sDQo+ICAgICogUmV0dXJuczoNCj4gICAgKiAwIG9uIHN1Y2Nlc3MsIG9yIGEg bmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2UuDQo+ICAgICovDQo+IC1pbnQgZHJtX2dl bV92cmFtX3ZtYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywgc3RydWN0IGRt YV9idWZfbWFwICptYXApDQo+ICtpbnQgZHJtX2dlbV92cmFtX3ZtYXAoc3RydWN0IGRybV9n ZW1fdnJhbV9vYmplY3QgKmdibywgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4g ICAJaW50IHJldDsNCj4gICANCj4gQEAgLTQ2Myw3ICs0NjMsOCBAQCBFWFBPUlRfU1lNQk9M KGRybV9nZW1fdnJhbV92bWFwKTsNCj4gICAgKiBBIGNhbGwgdG8gZHJtX2dlbV92cmFtX3Z1 bm1hcCgpIHVubWFwcyBhbmQgdW5waW5zIGEgR0VNIFZSQU0gYnVmZmVyLiBTZWUNCj4gICAg KiB0aGUgZG9jdW1lbnRhdGlvbiBmb3IgZHJtX2dlbV92cmFtX3ZtYXAoKSBmb3IgbW9yZSBp bmZvcm1hdGlvbi4NCj4gICAgKi8NCj4gLXZvaWQgZHJtX2dlbV92cmFtX3Z1bm1hcChzdHJ1 Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkN Cj4gK3ZvaWQgZHJtX2dlbV92cmFtX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCAqZ2JvLA0KPiArCQkJIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCWlu dCByZXQ7DQo+ICAgDQo+IEBAIC01NjcsNyArNTY4LDcgQEAgc3RhdGljIHZvaWQgZHJtX2dl bV92cmFtX2JvX2RyaXZlcl9tb3ZlX25vdGlmeShzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCAqZ2JvKQ0KPiAgIAkJcmV0dXJuOw0KPiAgIA0KPiAgIAl0dG1fYm9fdnVubWFwKGJvLCAm Z2JvLT5tYXApOw0KPiAtCWRtYV9idWZfbWFwX2NsZWFyKCZnYm8tPm1hcCk7IC8qIGV4cGxp Y2l0bHkgY2xlYXIgbWFwcGluZyBmb3IgbmV4dCB2bWFwIGNhbGwgKi8NCj4gKwlpb3N5c19t YXBfY2xlYXIoJmdiby0+bWFwKTsgLyogZXhwbGljaXRseSBjbGVhciBtYXBwaW5nIGZvciBu ZXh0IHZtYXAgY2FsbCAqLw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgaW50IGRybV9nZW1f dnJhbV9ib19kcml2ZXJfbW92ZShzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAqZ2JvLA0K PiBAQCAtODAyLDcgKzgwMyw4IEBAIHN0YXRpYyB2b2lkIGRybV9nZW1fdnJhbV9vYmplY3Rf dW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0pDQo+ICAgICogUmV0dXJuczoNCj4g ICAgKiAwIG9uIHN1Y2Nlc3MsIG9yIGEgbmVnYXRpdmUgZXJyb3IgY29kZSBvdGhlcndpc2Uu DQo+ICAgICovDQo+IC1zdGF0aWMgaW50IGRybV9nZW1fdnJhbV9vYmplY3Rfdm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtz dGF0aWMgaW50IGRybV9nZW1fdnJhbV9vYmplY3Rfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmpl Y3QgKmdlbSwNCj4gKwkJCQkgICAgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4g ICAJc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibyA9IGRybV9nZW1fdnJhbV9vZl9n ZW0oZ2VtKTsNCj4gICANCj4gQEAgLTgxNSw3ICs4MTcsOCBAQCBzdGF0aWMgaW50IGRybV9n ZW1fdnJhbV9vYmplY3Rfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwgc3RydWN0 IGRtYV9idWZfbQ0KPiAgICAqIEBnZW06IFRoZSBHRU0gb2JqZWN0IHRvIHVubWFwDQo+ICAg ICogQG1hcDogS2VybmVsIHZpcnR1YWwgYWRkcmVzcyB3aGVyZSB0aGUgVlJBTSBHRU0gb2Jq ZWN0IHdhcyBtYXBwZWQNCj4gICAgKi8NCj4gLXN0YXRpYyB2b2lkIGRybV9nZW1fdnJhbV9v YmplY3RfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtLCBzdHJ1Y3QgZG1hX2J1 Zl9tYXAgKm1hcCkNCj4gK3N0YXRpYyB2b2lkIGRybV9nZW1fdnJhbV9vYmplY3RfdnVubWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtLA0KPiArCQkJCSAgICAgICBzdHJ1Y3QgaW9z eXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVjdCAq Z2JvID0gZHJtX2dlbV92cmFtX29mX2dlbShnZW0pOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oIGIvZHJpdmVycy9ncHUvZHJtL2RybV9p bnRlcm5hbC5oDQo+IGluZGV4IDE3ZjM1NDhjOGVkMi4uMWZiYmMxOWYxYWMwIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZHJtX2ludGVybmFsLmgNCj4gKysrIGIvZHJpdmVy cy9ncHUvZHJtL2RybV9pbnRlcm5hbC5oDQo+IEBAIC0zMyw3ICszMyw3IEBADQo+ICAgDQo+ ICAgc3RydWN0IGRlbnRyeTsNCj4gICBzdHJ1Y3QgZG1hX2J1ZjsNCj4gLXN0cnVjdCBkbWFf YnVmX21hcDsNCj4gK3N0cnVjdCBpb3N5c19tYXA7DQo+ICAgc3RydWN0IGRybV9jb25uZWN0 b3I7DQo+ICAgc3RydWN0IGRybV9jcnRjOw0KPiAgIHN0cnVjdCBkcm1fZnJhbWVidWZmZXI7 DQo+IEBAIC0xNzQsOCArMTc0LDggQEAgdm9pZCBkcm1fZ2VtX3ByaW50X2luZm8oc3RydWN0 IGRybV9wcmludGVyICpwLCB1bnNpZ25lZCBpbnQgaW5kZW50LA0KPiAgIA0KPiAgIGludCBk cm1fZ2VtX3BpbihzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7DQo+ICAgdm9pZCBkcm1f Z2VtX3VucGluKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKTsNCj4gLWludCBkcm1fZ2Vt X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAq bWFwKTsNCj4gLXZvaWQgZHJtX2dlbV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsNCj4gK2ludCBkcm1fZ2VtX3ZtYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICt2 b2lkIGRybV9nZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3Qg aW9zeXNfbWFwICptYXApOw0KPiAgIA0KPiAgIGludCBkcm1fZ2VtX2R1bWJfZGVzdHJveShz dHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsIHN0cnVjdCBkcm1fZGV2aWNlICpkZXYsDQo+ICAgCQkJ IHUzMiBoYW5kbGUpOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2RybV9taXBp X2RiaS5jIGIvZHJpdmVycy9ncHUvZHJtL2RybV9taXBpX2RiaS5jDQo+IGluZGV4IDAzMjdk NTk1ZTAyOC4uOTMxNGYyZWFkNzlmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v ZHJtX21pcGlfZGJpLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2RybV9taXBpX2RiaS5j DQo+IEBAIC0yMDEsOCArMjAxLDggQEAgaW50IG1pcGlfZGJpX2J1Zl9jb3B5KHZvaWQgKmRz dCwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsDQo+ICAgCQkgICAgICBzdHJ1Y3QgZHJt X3JlY3QgKmNsaXAsIGJvb2wgc3dhcCkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29i amVjdCAqZ2VtID0gZHJtX2dlbV9mYl9nZXRfb2JqKGZiLCAwKTsNCj4gLQlzdHJ1Y3QgZG1h X2J1Zl9tYXAgbWFwW0RSTV9GT1JNQVRfTUFYX1BMQU5FU107DQo+IC0Jc3RydWN0IGRtYV9i dWZfbWFwIGRhdGFbRFJNX0ZPUk1BVF9NQVhfUExBTkVTXTsNCj4gKwlzdHJ1Y3QgaW9zeXNf bWFwIG1hcFtEUk1fRk9STUFUX01BWF9QTEFORVNdOw0KPiArCXN0cnVjdCBpb3N5c19tYXAg ZGF0YVtEUk1fRk9STUFUX01BWF9QTEFORVNdOw0KPiAgIAl2b2lkICpzcmM7DQo+ICAgCWlu dCByZXQ7DQo+ICAgDQo+IEBAIC0yNTgsOCArMjU4LDggQEAgc3RhdGljIHZvaWQgbWlwaV9k Ymlfc2V0X3dpbmRvd19hZGRyZXNzKHN0cnVjdCBtaXBpX2RiaV9kZXYgKmRiaWRldiwNCj4g ICANCj4gICBzdGF0aWMgdm9pZCBtaXBpX2RiaV9mYl9kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1l YnVmZmVyICpmYiwgc3RydWN0IGRybV9yZWN0ICpyZWN0KQ0KPiAgIHsNCj4gLQlzdHJ1Y3Qg ZG1hX2J1Zl9tYXAgbWFwW0RSTV9GT1JNQVRfTUFYX1BMQU5FU107DQo+IC0Jc3RydWN0IGRt YV9idWZfbWFwIGRhdGFbRFJNX0ZPUk1BVF9NQVhfUExBTkVTXTsNCj4gKwlzdHJ1Y3QgaW9z eXNfbWFwIG1hcFtEUk1fRk9STUFUX01BWF9QTEFORVNdOw0KPiArCXN0cnVjdCBpb3N5c19t YXAgZGF0YVtEUk1fRk9STUFUX01BWF9QTEFORVNdOw0KPiAgIAlzdHJ1Y3QgbWlwaV9kYmlf ZGV2ICpkYmlkZXYgPSBkcm1fdG9fbWlwaV9kYmlfZGV2KGZiLT5kZXYpOw0KPiAgIAl1bnNp Z25lZCBpbnQgaGVpZ2h0ID0gcmVjdC0+eTIgLSByZWN0LT55MTsNCj4gICAJdW5zaWduZWQg aW50IHdpZHRoID0gcmVjdC0+eDIgLSByZWN0LT54MTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9kcm1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1fcHJpbWUuYw0K PiBpbmRleCBjNzczZDNkZmIxYWIuLmUzZjA5ZjE4MTEwYyAxMDA2NDQNCj4gLS0tIGEvZHJp dmVycy9ncHUvZHJtL2RybV9wcmltZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9kcm1f cHJpbWUuYw0KPiBAQCAtNjc0LDcgKzY3NCw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dlbV91 bm1hcF9kbWFfYnVmKTsNCj4gICAgKg0KPiAgICAqIFJldHVybnMgMCBvbiBzdWNjZXNzIG9y IGEgbmVnYXRpdmUgZXJybm8gY29kZSBvdGhlcndpc2UuDQo+ICAgICovDQo+IC1pbnQgZHJt X2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Ziwgc3RydWN0IGRtYV9i dWZfbWFwICptYXApDQo+ICtpbnQgZHJtX2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1 ZiAqZG1hX2J1Ziwgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0 IGRybV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmLT5wcml2Ow0KPiAgIA0KPiBAQCAtNjkw LDcgKzY5MCw3IEBAIEVYUE9SVF9TWU1CT0woZHJtX2dlbV9kbWFidWZfdm1hcCk7DQo+ICAg ICogUmVsZWFzZXMgYSBrZXJuZWwgdmlydHVhbCBtYXBwaW5nLiBUaGlzIGNhbiBiZSB1c2Vk IGFzIHRoZQ0KPiAgICAqICZkbWFfYnVmX29wcy52dW5tYXAgY2FsbGJhY2suIENhbGxzIGlu dG8gJmRybV9nZW1fb2JqZWN0X2Z1bmNzLnZ1bm1hcCBmb3IgZGV2aWNlIHNwZWNpZmljIGhh bmRsaW5nLg0KPiAgICAqLw0KPiAtdm9pZCBkcm1fZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0 IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArdm9pZCBk cm1fZ2VtX2RtYWJ1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCBp b3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq ID0gZG1hX2J1Zi0+cHJpdjsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2Ry bS9ldG5hdml2L2V0bmF2aXZfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5h dml2X2Rydi5oDQo+IGluZGV4IDA0OWFlODdkZTliZS4uZjMyZjQ3NzFkYWRhIDEwMDY0NA0K PiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vZXRuYXZpdi9ldG5hdml2X2Rydi5oDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZHJ2LmgNCj4gQEAgLTQ5LDcgKzQ5 LDcgQEAgaW50IGV0bmF2aXZfaW9jdGxfZ2VtX3N1Ym1pdChzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LCB2b2lkICpkYXRhLA0KPiAgIA0KPiAgIGludCBldG5hdml2X2dlbV9tbWFwX29mZnNl dChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgdTY0ICpvZmZzZXQpOw0KPiAgIHN0cnVj dCBzZ190YWJsZSAqZXRuYXZpdl9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1f Z2VtX29iamVjdCAqb2JqKTsNCj4gLWludCBldG5hdml2X2dlbV9wcmltZV92bWFwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7DQo+ICtp bnQgZXRuYXZpdl9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwg c3RydWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmV0 bmF2aXZfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2 LA0KPiAgIAlzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsIHN0cnVjdCBzZ190 YWJsZSAqc2cpOw0KPiAgIGludCBldG5hdml2X2dlbV9wcmltZV9waW4oc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmopOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2V0bmF2 aXYvZXRuYXZpdl9nZW1fcHJpbWUuYyBiL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2 aXZfZ2VtX3ByaW1lLmMNCj4gaW5kZXggNjc4OGVhODQ5MGQxLi4zZmEyZGExNDk2MzkgMTAw NjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9ldG5hdml2L2V0bmF2aXZfZ2VtX3ByaW1l LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2V0bmF2aXYvZXRuYXZpdl9nZW1fcHJpbWUu Yw0KPiBAQCAtMjUsMTQgKzI1LDE0IEBAIHN0cnVjdCBzZ190YWJsZSAqZXRuYXZpdl9nZW1f cHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqKQ0KPiAgIAly ZXR1cm4gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCBldG5hdml2X29iai0+cGFn ZXMsIG5wYWdlcyk7DQo+ICAgfQ0KPiAgIA0KPiAtaW50IGV0bmF2aXZfZ2VtX3ByaW1lX3Zt YXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFw KQ0KPiAraW50IGV0bmF2aXZfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmosIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXZvaWQgKnZhZGRy Ow0KPiAgIA0KPiAgIAl2YWRkciA9IGV0bmF2aXZfZ2VtX3ZtYXAob2JqKTsNCj4gICAJaWYg KCF2YWRkcikNCj4gICAJCXJldHVybiAtRU5PTUVNOw0KPiAtCWRtYV9idWZfbWFwX3NldF92 YWRkcihtYXAsIHZhZGRyKTsNCj4gKwlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIp Ow0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+IEBAIC02Miw3ICs2Miw3IEBAIHZv aWQgZXRuYXZpdl9nZW1fcHJpbWVfdW5waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmop DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgZXRuYXZpdl9nZW1fcHJpbWVfcmVsZWFzZShzdHJ1 Y3QgZXRuYXZpdl9nZW1fb2JqZWN0ICpldG5hdml2X29iaikNCj4gICB7DQo+IC0Jc3RydWN0 IGRtYV9idWZfbWFwIG1hcCA9IERNQV9CVUZfTUFQX0lOSVRfVkFERFIoZXRuYXZpdl9vYmot PnZhZGRyKTsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcCA9IElPU1lTX01BUF9JTklUX1ZB RERSKGV0bmF2aXZfb2JqLT52YWRkcik7DQo+ICAgDQo+ICAgCWlmIChldG5hdml2X29iai0+ dmFkZHIpDQo+ICAgCQlkbWFfYnVmX3Z1bm1hcChldG5hdml2X29iai0+YmFzZS5pbXBvcnRf YXR0YWNoLT5kbWFidWYsICZtYXApOw0KPiBAQCAtNzcsNyArNzcsNyBAQCBzdGF0aWMgdm9p ZCBldG5hdml2X2dlbV9wcmltZV9yZWxlYXNlKHN0cnVjdCBldG5hdml2X2dlbV9vYmplY3Qg KmV0bmF2aXZfb2JqKQ0KPiAgIA0KPiAgIHN0YXRpYyB2b2lkICpldG5hdml2X2dlbV9wcmlt ZV92bWFwX2ltcGwoc3RydWN0IGV0bmF2aXZfZ2VtX29iamVjdCAqZXRuYXZpdl9vYmopDQo+ ICAgew0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21h cCBtYXA7DQo+ICAgCWludCByZXQ7DQo+ICAgDQo+ICAgCWxvY2tkZXBfYXNzZXJ0X2hlbGQo JmV0bmF2aXZfb2JqLT5sb2NrKTsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9n dWQvZ3VkX3BpcGUuYyBiL2RyaXZlcnMvZ3B1L2RybS9ndWQvZ3VkX3BpcGUuYw0KPiBpbmRl eCBhMTUwYTVhNGI1ZDQuLjQ4NzNmOTc5OWY0MSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL2d1ZC9ndWRfcGlwZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9ndWQvZ3Vk X3BpcGUuYw0KPiBAQCAtMTUyLDggKzE1Miw4IEBAIHN0YXRpYyBpbnQgZ3VkX3ByZXBfZmx1 c2goc3RydWN0IGd1ZF9kZXZpY2UgKmdkcm0sIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZi LA0KPiAgIHsNCj4gICAJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqaW1wb3J0X2F0dGFj aCA9IGZiLT5vYmpbMF0tPmltcG9ydF9hdHRhY2g7DQo+ICAgCXU4IGNvbXByZXNzaW9uID0g Z2RybS0+Y29tcHJlc3Npb247DQo+IC0Jc3RydWN0IGRtYV9idWZfbWFwIG1hcFtEUk1fRk9S TUFUX01BWF9QTEFORVNdOw0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXBfZGF0YVtEUk1f Rk9STUFUX01BWF9QTEFORVNdOw0KPiArCXN0cnVjdCBpb3N5c19tYXAgbWFwW0RSTV9GT1JN QVRfTUFYX1BMQU5FU107DQo+ICsJc3RydWN0IGlvc3lzX21hcCBtYXBfZGF0YVtEUk1fRk9S TUFUX01BWF9QTEFORVNdOw0KPiAgIAl2b2lkICp2YWRkciwgKmJ1ZjsNCj4gICAJc2l6ZV90 IHBpdGNoLCBsZW47DQo+ICAgCWludCByZXQgPSAwOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVy cy9ncHUvZHJtL2h5cGVydi9oeXBlcnZfZHJtX21vZGVzZXQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9oeXBlcnYvaHlwZXJ2X2RybV9tb2Rlc2V0LmMNCj4gaW5kZXggOTNmNTFlNzBhOTUxLi5l ODJiODE1ZjgzYTYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9oeXBlcnYvaHlw ZXJ2X2RybV9tb2Rlc2V0LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2h5cGVydi9oeXBl cnZfZHJtX21vZGVzZXQuYw0KPiBAQCAtMTksNyArMTksNyBAQA0KPiAgICNpbmNsdWRlICJo eXBlcnZfZHJtLmgiDQo+ICAgDQo+ICAgc3RhdGljIGludCBoeXBlcnZfYmxpdF90b192cmFt X3JlY3Qoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsDQo+IC0JCQkJICAgIGNvbnN0IHN0 cnVjdCBkbWFfYnVmX21hcCAqbWFwLA0KPiArCQkJCSAgICBjb25zdCBzdHJ1Y3QgaW9zeXNf bWFwICptYXAsDQo+ICAgCQkJCSAgICBzdHJ1Y3QgZHJtX3JlY3QgKnJlY3QpDQo+ICAgew0K PiAgIAlzdHJ1Y3QgaHlwZXJ2X2RybV9kZXZpY2UgKmh2ID0gdG9faHYoZmItPmRldik7DQo+ IEBAIC0zOCw3ICszOCw4IEBAIHN0YXRpYyBpbnQgaHlwZXJ2X2JsaXRfdG9fdnJhbV9yZWN0 KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ ICAgDQo+IC1zdGF0aWMgaW50IGh5cGVydl9ibGl0X3RvX3ZyYW1fZnVsbHNjcmVlbihzdHJ1 Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgY29uc3Qgc3RydWN0IGRtYV9idWZfbWFwICptYXAp DQo+ICtzdGF0aWMgaW50IGh5cGVydl9ibGl0X3RvX3ZyYW1fZnVsbHNjcmVlbihzdHJ1Y3Qg ZHJtX2ZyYW1lYnVmZmVyICpmYiwNCj4gKwkJCQkJICBjb25zdCBzdHJ1Y3QgaW9zeXNfbWFw ICptYXApDQo+ICAgew0KPiAgIAlzdHJ1Y3QgZHJtX3JlY3QgZnVsbHNjcmVlbiA9IHsNCj4g ICAJCS54MSA9IDAsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v aTkxNV9nZW1fZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1f ZG1hYnVmLmMNCj4gaW5kZXggMWI1MjYwMzlhNjBkLi4xNGZkYjA3OTZjNTIgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9pOTE1X2dlbV9kbWFidWYuYw0KPiAr KysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0vaTkxNV9nZW1fZG1hYnVmLmMNCj4gQEAg LTc0LDcgKzc0LDggQEAgc3RhdGljIHZvaWQgaTkxNV9nZW1fdW5tYXBfZG1hX2J1ZihzdHJ1 Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2htZW50LA0KPiAgIAlrZnJlZShzZyk7DQo+ ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBpOTE1X2dlbV9kbWFidWZfdm1hcChzdHJ1Y3Qg ZG1hX2J1ZiAqZG1hX2J1Ziwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtzdGF0aWMg aW50IGk5MTVfZ2VtX2RtYWJ1Zl92bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLA0KPiAr CQkJCXN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1faTkx NV9nZW1fb2JqZWN0ICpvYmogPSBkbWFfYnVmX3RvX29iaihkbWFfYnVmKTsNCj4gICAJdm9p ZCAqdmFkZHI7DQo+IEBAIC04MywxMiArODQsMTMgQEAgc3RhdGljIGludCBpOTE1X2dlbV9k bWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Ziwgc3RydWN0IGRtYV9idWZfbWFw ICptYXANCj4gICAJaWYgKElTX0VSUih2YWRkcikpDQo+ICAgCQlyZXR1cm4gUFRSX0VSUih2 YWRkcik7DQo+ICAgDQo+IC0JZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOw0K PiArCWlvc3lzX21hcF9zZXRfdmFkZHIobWFwLCB2YWRkcik7DQo+ICAgDQo+ICAgCXJldHVy biAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIGk5MTVfZ2VtX2RtYWJ1Zl92dW5t YXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0K PiArc3RhdGljIHZvaWQgaTkxNV9nZW1fZG1hYnVmX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hX2J1ZiwNCj4gKwkJCQkgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAg IAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqID0gZG1hX2J1Zl90b19vYmooZG1h X2J1Zik7DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v c2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jIGIvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2Vt L3NlbGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYw0KPiBpbmRleCAzY2M3NGIwZmVkMDYuLmIw NzFhNThkZDZkYSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2k5MTUvZ2VtL3Nl bGZ0ZXN0cy9pOTE1X2dlbV9kbWFidWYuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL2k5MTVfZ2VtX2RtYWJ1Zi5jDQo+IEBAIC0yNjYsNyArMjY2LDcg QEAgc3RhdGljIGludCBpZ3RfZG1hYnVmX2ltcG9ydCh2b2lkICphcmcpDQo+ICAgCXN0cnVj dCBkcm1faTkxNV9nZW1fb2JqZWN0ICpvYmo7DQo+ICAgCXN0cnVjdCBkbWFfYnVmICpkbWFi dWY7DQo+ICAgCXZvaWQgKm9ial9tYXAsICpkbWFfbWFwOw0KPiAtCXN0cnVjdCBkbWFfYnVm X21hcCBtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBtYXA7DQo+ICAgCXUzMiBwYXR0ZXJu W10gPSB7IDAsIDB4YWEsIDB4Y2MsIDB4NTUsIDB4ZmYgfTsNCj4gICAJaW50IGVyciwgaTsN Cj4gICANCj4gQEAgLTM0OSw3ICszNDksNyBAQCBzdGF0aWMgaW50IGlndF9kbWFidWZfaW1w b3J0X293bmVyc2hpcCh2b2lkICphcmcpDQo+ICAgCXN0cnVjdCBkcm1faTkxNV9wcml2YXRl ICppOTE1ID0gYXJnOw0KPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfZ2VtX29iamVjdCAqb2JqOw0K PiAgIAlzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmOw0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBt YXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBtYXA7DQo+ICAgCXZvaWQgKnB0cjsNCj4gICAJ aW50IGVycjsNCj4gICANCj4gQEAgLTQwMCw3ICs0MDAsNyBAQCBzdGF0aWMgaW50IGlndF9k bWFidWZfZXhwb3J0X3ZtYXAodm9pZCAqYXJnKQ0KPiAgIAlzdHJ1Y3QgZHJtX2k5MTVfcHJp dmF0ZSAqaTkxNSA9IGFyZzsNCj4gICAJc3RydWN0IGRybV9pOTE1X2dlbV9vYmplY3QgKm9i ajsNCj4gICAJc3RydWN0IGRtYV9idWYgKmRtYWJ1ZjsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9t YXAgbWFwOw0KPiArCXN0cnVjdCBpb3N5c19tYXAgbWFwOw0KPiAgIAl2b2lkICpwdHI7DQo+ ICAgCWludCBlcnI7DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vaTkx NS9nZW0vc2VsZnRlc3RzL21vY2tfZG1hYnVmLmMgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9n ZW0vc2VsZnRlc3RzL21vY2tfZG1hYnVmLmMNCj4gaW5kZXggMjg1NWQxMWM3YTUxLi5iMmE1 ODgyYjhmODEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9pOTE1L2dlbS9zZWxm dGVzdHMvbW9ja19kbWFidWYuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vaTkxNS9nZW0v c2VsZnRlc3RzL21vY2tfZG1hYnVmLmMNCj4gQEAgLTYxLDcgKzYxLDcgQEAgc3RhdGljIHZv aWQgbW9ja19kbWFidWZfcmVsZWFzZShzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1ZikNCj4gICAJ a2ZyZWUobW9jayk7DQo+ICAgfQ0KPiAgIA0KPiAtc3RhdGljIGludCBtb2NrX2RtYWJ1Zl92 bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkN Cj4gK3N0YXRpYyBpbnQgbW9ja19kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1 Ziwgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IG1vY2tfZG1h YnVmICptb2NrID0gdG9fbW9jayhkbWFfYnVmKTsNCj4gICAJdm9pZCAqdmFkZHI7DQo+IEBA IC02OSwxMiArNjksMTIgQEAgc3RhdGljIGludCBtb2NrX2RtYWJ1Zl92bWFwKHN0cnVjdCBk bWFfYnVmICpkbWFfYnVmLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gICAJdmFkZHIg PSB2bV9tYXBfcmFtKG1vY2stPnBhZ2VzLCBtb2NrLT5ucGFnZXMsIDApOw0KPiAgIAlpZiAo IXZhZGRyKQ0KPiAgIAkJcmV0dXJuIC1FTk9NRU07DQo+IC0JZG1hX2J1Zl9tYXBfc2V0X3Zh ZGRyKG1hcCwgdmFkZHIpOw0KPiArCWlvc3lzX21hcF9zZXRfdmFkZHIobWFwLCB2YWRkcik7 DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyB2b2lkIG1v Y2tfZG1hYnVmX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Ziwgc3RydWN0IGRtYV9i dWZfbWFwICptYXApDQo+ICtzdGF0aWMgdm9pZCBtb2NrX2RtYWJ1Zl92dW5tYXAoc3RydWN0 IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAg CXN0cnVjdCBtb2NrX2RtYWJ1ZiAqbW9jayA9IHRvX21vY2soZG1hX2J1Zik7DQo+ICAgDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5jIGIvZHJpdmVy cy9ncHUvZHJtL2xpbWEvbGltYV9nZW0uYw0KPiBpbmRleCBmOWE5MTk4ZWYxOTguLmQwYzJi MTQyMmIzYiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9nZW0u Yw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbGltYS9saW1hX2dlbS5jDQo+IEBAIC0yLDYg KzIsNyBAQA0KPiAgIC8qIENvcHlyaWdodCAyMDE3LTIwMTkgUWlhbmcgWXUgPHl1cTgyNUBn bWFpbC5jb20+ICovDQo+ICAgDQo+ICAgI2luY2x1ZGUgPGxpbnV4L21tLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3N5bmNfZmls ZS5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9wYWdlbWFwLmg+DQo+ICAgI2luY2x1ZGUgPGxp bnV4L3NobWVtX2ZzLmg+DQo+IEBAIC0xODIsNyArMTgzLDcgQEAgc3RhdGljIGludCBsaW1h X2dlbV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmopDQo+ICAgCXJldHVybiBkcm1f Z2VtX3NobWVtX3BpbigmYm8tPmJhc2UpOw0KPiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQg bGltYV9nZW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9i dWZfbWFwICptYXApDQo+ICtzdGF0aWMgaW50IGxpbWFfZ2VtX3ZtYXAoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0 cnVjdCBsaW1hX2JvICpibyA9IHRvX2xpbWFfYm8ob2JqKTsNCj4gICANCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYyBiL2RyaXZlcnMvZ3B1L2Ry bS9saW1hL2xpbWFfc2NoZWQuYw0KPiBpbmRleCA1NjEyZDczZjIzOGYuLjM5MGM5NjlmNzRh ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL2xpbWEvbGltYV9zY2hlZC5jDQo+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9saW1hL2xpbWFfc2NoZWQuYw0KPiBAQCAtMSw3ICsx LDcgQEANCj4gICAvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCBPUiBNSVQN Cj4gICAvKiBDb3B5cmlnaHQgMjAxNy0yMDE5IFFpYW5nIFl1IDx5dXE4MjVAZ21haWwuY29t PiAqLw0KPiAgIA0KPiAtI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+DQo+ICsjaW5j bHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L2t0aHJlYWQu aD4NCj4gICAjaW5jbHVkZSA8bGludXgvc2xhYi5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC92 bWFsbG9jLmg+DQo+IEBAIC0yODQsNyArMjg0LDcgQEAgc3RhdGljIHZvaWQgbGltYV9zY2hl ZF9idWlsZF9lcnJvcl90YXNrX2xpc3Qoc3RydWN0IGxpbWFfc2NoZWRfdGFzayAqdGFzaykN Cj4gICAJc3RydWN0IGxpbWFfZHVtcF9jaHVua19idWZmZXIgKmJ1ZmZlcl9jaHVuazsNCj4g ICAJdTMyIHNpemUsIHRhc2tfc2l6ZSwgbWVtX3NpemU7DQo+ICAgCWludCBpOw0KPiAtCXN0 cnVjdCBkbWFfYnVmX21hcCBtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBtYXA7DQo+ICAg CWludCByZXQ7DQo+ICAgDQo+ICAgCW11dGV4X2xvY2soJmRldi0+ZXJyb3JfdGFza19saXN0 X2xvY2spOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19k cm1fZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRrX2RybV9nZW0uYw0KPiBp bmRleCBkMDU0NDk2MmNmYzEuLjEzOWQ3NzI0YzZkMCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZ2VtLmMNCj4gKysrIGIvZHJpdmVycy9ncHUv ZHJtL21lZGlhdGVrL210a19kcm1fZ2VtLmMNCj4gQEAgLTIyMCw3ICsyMjAsNyBAQCBzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm10a19nZW1fcHJpbWVfaW1wb3J0X3NnX3RhYmxlKHN0cnVj dCBkcm1fZGV2aWNlICpkZXYsDQo+ICAgCXJldHVybiAmbXRrX2dlbS0+YmFzZTsNCj4gICB9 DQo+ICAgDQo+IC1pbnQgbXRrX2RybV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtpbnQgbXRrX2RybV9n ZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGlvc3lz X21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IG10a19kcm1fZ2VtX29iaiAqbXRrX2dl bSA9IHRvX210a19nZW1fb2JqKG9iaik7DQo+ICAgCXN0cnVjdCBzZ190YWJsZSAqc2d0ID0g TlVMTDsNCj4gQEAgLTI0NywxMiArMjQ3LDEzIEBAIGludCBtdGtfZHJtX2dlbV9wcmltZV92 bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1h cCkNCj4gICANCj4gICBvdXQ6DQo+ICAgCWtmcmVlKHNndCk7DQo+IC0JZG1hX2J1Zl9tYXBf c2V0X3ZhZGRyKG1hcCwgbXRrX2dlbS0+a3ZhZGRyKTsNCj4gKwlpb3N5c19tYXBfc2V0X3Zh ZGRyKG1hcCwgbXRrX2dlbS0+a3ZhZGRyKTsNCj4gICANCj4gICAJcmV0dXJuIDA7DQo+ICAg fQ0KPiAgIA0KPiAtdm9pZCBtdGtfZHJtX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9n ZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArdm9pZCBtdGtf ZHJtX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosDQo+ICsJ CQkgICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlzdHJ1Y3QgbXRr X2RybV9nZW1fb2JqICptdGtfZ2VtID0gdG9fbXRrX2dlbV9vYmoob2JqKTsNCj4gICAJdm9p ZCAqdmFkZHIgPSBtYXAtPnZhZGRyOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21lZGlhdGVrL210a19kcm1fZ2VtLmggYi9kcml2ZXJzL2dwdS9kcm0vbWVkaWF0ZWsvbXRr X2RybV9nZW0uaA0KPiBpbmRleCA5YTM1OWEwNmNiNzMuLjc4ZjIzYjA3YTAyZSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZ2VtLmgNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL21lZGlhdGVrL210a19kcm1fZ2VtLmgNCj4gQEAgLTQyLDcg KzQyLDggQEAgaW50IG10a19kcm1fZ2VtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAq ZmlsZV9wcml2LCBzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiAgIHN0cnVjdCBzZ190YWJs ZSAqbXRrX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmopOw0KPiAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqbXRrX2dlbV9wcmltZV9pbXBvcnRf c2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4gICAJCQlzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICphdHRhY2gsIHN0cnVjdCBzZ190YWJsZSAqc2cpOw0KPiAtaW50IG10 a19kcm1fZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVj dCBkbWFfYnVmX21hcCAqbWFwKTsNCj4gLXZvaWQgbXRrX2RybV9nZW1fcHJpbWVfdnVubWFw KHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7 DQo+ICtpbnQgbXRrX2RybV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3Qg Km9iaiwgc3RydWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gK3ZvaWQgbXRrX2RybV9nZW1fcHJp bWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLA0KPiArCQkJICAgICAgc3Ry dWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gICANCj4gICAjZW5kaWYNCj4gZGlmZiAtLWdpdCBh L2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9kZS5jIGIvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMNCj4gaW5kZXggY2Q5YmExM2FkNWZjLi42ZTE4 ZDNiYmQ3MjAgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcy MDBfbW9kZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfbW9k ZS5jDQo+IEBAIC05LDcgKzksNyBAQA0KPiAgICAqLw0KPiAgIA0KPiAgICNpbmNsdWRlIDxs aW51eC9kZWxheS5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+DQo+ICsj aW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+ICAgDQo+ICAgI2luY2x1ZGUgPGRybS9k cm1fYXRvbWljX2hlbHBlci5oPg0KPiAgICNpbmNsdWRlIDxkcm0vZHJtX2F0b21pY19zdGF0 ZV9oZWxwZXIuaD4NCj4gQEAgLTg0OCw3ICs4NDgsNyBAQCBtZ2FnMjAwX3NpbXBsZV9kaXNw bGF5X3BpcGVfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX3NpbXBsZV9kaXNwbGF5X3BpcGUgKnBp cGUsDQo+ICAgDQo+ICAgc3RhdGljIHZvaWQNCj4gICBtZ2FnMjAwX2hhbmRsZV9kYW1hZ2Uo c3RydWN0IG1nYV9kZXZpY2UgKm1kZXYsIHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLA0K PiAtCQkgICAgICBzdHJ1Y3QgZHJtX3JlY3QgKmNsaXAsIGNvbnN0IHN0cnVjdCBkbWFfYnVm X21hcCAqbWFwKQ0KPiArCQkgICAgICBzdHJ1Y3QgZHJtX3JlY3QgKmNsaXAsIGNvbnN0IHN0 cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXZvaWQgX19pb21lbSAqZHN0ID0g bWRldi0+dnJhbTsNCj4gICAJdm9pZCAqdm1hcCA9IG1hcC0+dmFkZHI7IC8qIFRPRE86IFVz ZSBtYXBwaW5nIGFic3RyYWN0aW9uIHByb3Blcmx5ICovDQo+IGRpZmYgLS1naXQgYS9kcml2 ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tc20vbXNtX2Ry di5oDQo+IGluZGV4IGViOTg0ZDkyNWY0ZC4uYzcwODY4YTNhYzUzIDEwMDY0NA0KPiAtLS0g YS9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9kcnYuaA0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0vbXNtL21zbV9kcnYuaA0KPiBAQCAtMzA2LDggKzMwNiw4IEBAIHZvaWQgbXNtX2dlbV9z aHJpbmtlcl9pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOw0KPiAgIHZvaWQgbXNtX2dl bV9zaHJpbmtlcl9jbGVhbnVwKHN0cnVjdCBkcm1fZGV2aWNlICpkZXYpOw0KPiAgIA0KPiAg IHN0cnVjdCBzZ190YWJsZSAqbXNtX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmopOw0KPiAtaW50IG1zbV9nZW1fcHJpbWVfdm1hcChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOw0KPiAtdm9p ZCBtc21fZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3Ry dWN0IGRtYV9idWZfbWFwICptYXApOw0KPiAraW50IG1zbV9nZW1fcHJpbWVfdm1hcChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gK3Zv aWQgbXNtX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0 cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICAgc3RydWN0IGRybV9nZW1fb2JqZWN0ICptc21f Z2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZGV2LA0KPiAg IAkJc3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLCBzdHJ1Y3Qgc2dfdGFibGUg KnNnKTsNCj4gICBpbnQgbXNtX2dlbV9wcmltZV9waW4oc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmopOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21zbS9tc21fZ2VtX3By aW1lLmMgYi9kcml2ZXJzL2dwdS9kcm0vbXNtL21zbV9nZW1fcHJpbWUuYw0KPiBpbmRleCBm Yzk0ZTA2MWQ2YTcuLmU4ZjFiN2EyY2E5YyAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUv ZHJtL21zbS9tc21fZ2VtX3ByaW1lLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL21zbS9t c21fZ2VtX3ByaW1lLmMNCj4gQEAgLTIyLDE5ICsyMiwxOSBAQCBzdHJ1Y3Qgc2dfdGFibGUg Km1zbV9nZW1fcHJpbWVfZ2V0X3NnX3RhYmxlKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq KQ0KPiAgIAlyZXR1cm4gZHJtX3ByaW1lX3BhZ2VzX3RvX3NnKG9iai0+ZGV2LCBtc21fb2Jq LT5wYWdlcywgbnBhZ2VzKTsNCj4gICB9DQo+ICAgDQo+IC1pbnQgbXNtX2dlbV9wcmltZV92 bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1h cCkNCj4gK2ludCBtc21fZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpv YmosIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXZvaWQgKnZhZGRyOw0K PiAgIA0KPiAgIAl2YWRkciA9IG1zbV9nZW1fZ2V0X3ZhZGRyKG9iaik7DQo+ICAgCWlmIChJ U19FUlIodmFkZHIpKQ0KPiAgIAkJcmV0dXJuIFBUUl9FUlIodmFkZHIpOw0KPiAtCWRtYV9i dWZfbWFwX3NldF92YWRkcihtYXAsIHZhZGRyKTsNCj4gKwlpb3N5c19tYXBfc2V0X3ZhZGRy KG1hcCwgdmFkZHIpOw0KPiAgIA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+IC12 b2lkIG1zbV9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBz dHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gK3ZvaWQgbXNtX2dlbV9wcmltZV92dW5tYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4g ICB7DQo+ICAgCW1zbV9nZW1fcHV0X3ZhZGRyKG9iaik7DQo+ICAgfQ0KPiBkaWZmIC0tZ2l0 IGEvZHJpdmVycy9ncHUvZHJtL3BhbmZyb3N0L3BhbmZyb3N0X3BlcmZjbnQuYyBiL2RyaXZl cnMvZ3B1L2RybS9wYW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmMNCj4gaW5kZXggMWQzNmRm NWFmOThkLi5iYzBkZjkzZjdmMjEgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9w YW5mcm9zdC9wYW5mcm9zdF9wZXJmY250LmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3Bh bmZyb3N0L3BhbmZyb3N0X3BlcmZjbnQuYw0KPiBAQCAtMSwxNiArMSwxNyBAQA0KPiAgIC8v IFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+ICAgLyogQ29weXJpZ2h0IDIw MTkgQ29sbGFib3JhIEx0ZCAqLw0KPiAgIA0KPiAtI2luY2x1ZGUgPGRybS9kcm1fZmlsZS5o Pg0KPiAtI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3NobWVtX2hlbHBlci5oPg0KPiAtI2luY2x1 ZGUgPGRybS9wYW5mcm9zdF9kcm0uaD4NCj4gICAjaW5jbHVkZSA8bGludXgvY29tcGxldGlv bi5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+DQo+ICAgI2luY2x1ZGUg PGxpbnV4L2lvcG9sbC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAg ICNpbmNsdWRlIDxsaW51eC9wbV9ydW50aW1lLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3Ns YWIuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvdWFjY2Vzcy5oPg0KPiAgIA0KPiArI2luY2x1 ZGUgPGRybS9kcm1fZmlsZS5oPg0KPiArI2luY2x1ZGUgPGRybS9kcm1fZ2VtX3NobWVtX2hl bHBlci5oPg0KPiArI2luY2x1ZGUgPGRybS9wYW5mcm9zdF9kcm0uaD4NCj4gKw0KPiAgICNp bmNsdWRlICJwYW5mcm9zdF9kZXZpY2UuaCINCj4gICAjaW5jbHVkZSAicGFuZnJvc3RfZmVh dHVyZXMuaCINCj4gICAjaW5jbHVkZSAicGFuZnJvc3RfZ2VtLmgiDQo+IEBAIC03Myw3ICs3 NCw3IEBAIHN0YXRpYyBpbnQgcGFuZnJvc3RfcGVyZmNudF9lbmFibGVfbG9ja2VkKHN0cnVj dCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2LA0KPiAgIHsNCj4gICAJc3RydWN0IHBhbmZyb3N0 X2ZpbGVfcHJpdiAqdXNlciA9IGZpbGVfcHJpdi0+ZHJpdmVyX3ByaXY7DQo+ICAgCXN0cnVj dCBwYW5mcm9zdF9wZXJmY250ICpwZXJmY250ID0gcGZkZXYtPnBlcmZjbnQ7DQo+IC0Jc3Ry dWN0IGRtYV9idWZfbWFwIG1hcDsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcDsNCj4gICAJ c3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpibzsNCj4gICAJdTMyIGNmZywgYXM7DQo+ ICAgCWludCByZXQ7DQo+IEBAIC0xODEsNyArMTgyLDcgQEAgc3RhdGljIGludCBwYW5mcm9z dF9wZXJmY250X2Rpc2FibGVfbG9ja2VkKHN0cnVjdCBwYW5mcm9zdF9kZXZpY2UgKnBmZGV2 LA0KPiAgIHsNCj4gICAJc3RydWN0IHBhbmZyb3N0X2ZpbGVfcHJpdiAqdXNlciA9IGZpbGVf cHJpdi0+ZHJpdmVyX3ByaXY7DQo+ICAgCXN0cnVjdCBwYW5mcm9zdF9wZXJmY250ICpwZXJm Y250ID0gcGZkZXYtPnBlcmZjbnQ7DQo+IC0Jc3RydWN0IGRtYV9idWZfbWFwIG1hcCA9IERN QV9CVUZfTUFQX0lOSVRfVkFERFIocGVyZmNudC0+YnVmKTsNCj4gKwlzdHJ1Y3QgaW9zeXNf bWFwIG1hcCA9IElPU1lTX01BUF9JTklUX1ZBRERSKHBlcmZjbnQtPmJ1Zik7DQo+ICAgDQo+ ICAgCWlmICh1c2VyICE9IHBlcmZjbnQtPnVzZXIpDQo+ICAgCQlyZXR1cm4gLUVJTlZBTDsN Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rpc3BsYXkuYyBiL2Ry aXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rpc3BsYXkuYw0KPiBpbmRleCA5ZTBhMWU4MzYwMTEu LjlhOWMyOWIxZDNlMSAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf ZGlzcGxheS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX2Rpc3BsYXkuYw0K PiBAQCAtMjUsNyArMjUsNyBAQA0KPiAgIA0KPiAgICNpbmNsdWRlIDxsaW51eC9jcmMzMi5o Pg0KPiAgICNpbmNsdWRlIDxsaW51eC9kZWxheS5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L2Rt YS1idWYtbWFwLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+ICAgDQo+ ICAgI2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+DQo+ICAgI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljLmg+DQo+IEBAIC01NjYsOCArNTY2LDggQEAgc3RhdGljIHN0cnVjdCBxeGxfYm8gKnF4 bF9jcmVhdGVfY3Vyc29yKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LA0KPiAgIHsNCj4gICAJ c3RhdGljIGNvbnN0IHUzMiBzaXplID0gNjQgKiA2NCAqIDQ7DQo+ICAgCXN0cnVjdCBxeGxf Ym8gKmN1cnNvcl9ibzsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgY3Vyc29yX21hcDsNCj4g LQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgdXNlcl9tYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBj dXJzb3JfbWFwOw0KPiArCXN0cnVjdCBpb3N5c19tYXAgdXNlcl9tYXA7DQo+ICAgCXN0cnVj dCBxeGxfY3Vyc29yIGN1cnNvcjsNCj4gICAJaW50IHJldDsNCj4gICANCj4gQEAgLTExODMs NyArMTE4Myw3IEBAIGludCBxeGxfY3JlYXRlX21vbml0b3JzX29iamVjdChzdHJ1Y3QgcXhs X2RldmljZSAqcWRldikNCj4gICB7DQo+ICAgCWludCByZXQ7DQo+ICAgCXN0cnVjdCBkcm1f Z2VtX29iamVjdCAqZ29iajsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwOw0KPiArCXN0 cnVjdCBpb3N5c19tYXAgbWFwOw0KPiAgIAlpbnQgbW9uaXRvcnNfY29uZmlnX3NpemUgPSBz aXplb2Yoc3RydWN0IHF4bF9tb25pdG9yc19jb25maWcpICsNCj4gICAJCXF4bF9udW1fY3J0 YyAqIHNpemVvZihzdHJ1Y3QgcXhsX2hlYWQpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL3F4bC9xeGxfZHJhdy5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxf ZHJhdy5jDQo+IGluZGV4IDdkMjc4OTFlODdmYS4uYTkzZGU5ZTE5NzdhIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcmF3LmMNCj4gKysrIGIvZHJpdmVycy9n cHUvZHJtL3F4bC9xeGxfZHJhdy5jDQo+IEBAIC0yMCw3ICsyMCw3IEBADQo+ICAgICogQ09O TkVDVElPTiBXSVRIIFRIRSBTT0ZUV0FSRSBPUiBUSEUgVVNFIE9SIE9USEVSIERFQUxJTkdT IElOIFRIRSBTT0ZUV0FSRS4NCj4gICAgKi8NCj4gICANCj4gLSNpbmNsdWRlIDxsaW51eC9k bWEtYnVmLW1hcC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAgIA0K PiAgICNpbmNsdWRlIDxkcm0vZHJtX2ZvdXJjYy5oPg0KPiAgIA0KPiBAQCAtNDQsNyArNDQs NyBAQCBzdGF0aWMgc3RydWN0IHF4bF9yZWN0ICpkcmF3YWJsZV9zZXRfY2xpcHBpbmcoc3Ry dWN0IHF4bF9kZXZpY2UgKnFkZXYsDQo+ICAgCQkJCQkgICAgICB1bnNpZ25lZCBpbnQgbnVt X2NsaXBzLA0KPiAgIAkJCQkJICAgICAgc3RydWN0IHF4bF9ibyAqY2xpcHNfYm8pDQo+ICAg ew0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBt YXA7DQo+ICAgCXN0cnVjdCBxeGxfY2xpcF9yZWN0cyAqZGV2X2NsaXBzOw0KPiAgIAlpbnQg cmV0Ow0KPiAgIA0KPiBAQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQgcXhsX2RyYXdfZGlydHlf ZmIoc3RydWN0IHF4bF9kZXZpY2UgKnFkZXYsDQo+ICAgCWludCBzdHJpZGUgPSBmYi0+cGl0 Y2hlc1swXTsNCj4gICAJLyogZGVwdGggaXMgbm90IGFjdHVhbGx5IGludGVyZXN0aW5nLCB3 ZSBkb24ndCBtYXNrIHdpdGggaXQgKi8NCj4gICAJaW50IGRlcHRoID0gZmItPmZvcm1hdC0+ Y3BwWzBdICogODsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgc3VyZmFjZV9tYXA7DQo+ICsJ c3RydWN0IGlvc3lzX21hcCBzdXJmYWNlX21hcDsNCj4gICAJdWludDhfdCAqc3VyZmFjZV9i YXNlOw0KPiAgIAlzdHJ1Y3QgcXhsX3JlbGVhc2UgKnJlbGVhc2U7DQo+ICAgCXN0cnVjdCBx eGxfYm8gKmNsaXBzX2JvOw0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3F4bC9x eGxfZHJ2LmggYi9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9kcnYuaA0KPiBpbmRleCAyOTY0 MWNlYWFiN2QuLjQ3YzE2OTY3MzA4OCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L3F4bC9xeGxfZHJ2LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfZHJ2LmgN Cj4gQEAgLTMwLDcgKzMwLDcgQEANCj4gICAgKiBEZWZpbml0aW9ucyB0YWtlbiBmcm9tIHNw aWNlLXByb3RvY29sLCBwbHVzIGtlcm5lbCBkcml2ZXIgc3BlY2lmaWMgYml0cy4NCj4gICAg Ki8NCj4gICANCj4gLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPg0KPiArI2luY2x1 ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2Uu aD4NCj4gICAjaW5jbHVkZSA8bGludXgvZmlybXdhcmUuaD4NCj4gICAjaW5jbHVkZSA8bGlu dXgvcGxhdGZvcm1fZGV2aWNlLmg+DQo+IEBAIC01MCw3ICs1MCw3IEBADQo+ICAgDQo+ICAg I2luY2x1ZGUgInF4bF9kZXYuaCINCj4gICANCj4gLXN0cnVjdCBkbWFfYnVmX21hcDsNCj4g K3N0cnVjdCBpb3N5c19tYXA7DQo+ICAgDQo+ICAgI2RlZmluZSBEUklWRVJfQVVUSE9SCQki RGF2ZSBBaXJsaWUiDQo+ICAgDQo+IEBAIC04MCw3ICs4MCw3IEBAIHN0cnVjdCBxeGxfYm8g ew0KPiAgIAkvKiBQcm90ZWN0ZWQgYnkgdGJvLnJlc2VydmVkICovDQo+ICAgCXN0cnVjdCB0 dG1fcGxhY2UJCXBsYWNlbWVudHNbM107DQo+ICAgCXN0cnVjdCB0dG1fcGxhY2VtZW50CQlw bGFjZW1lbnQ7DQo+IC0Jc3RydWN0IGRtYV9idWZfbWFwCQltYXA7DQo+ICsJc3RydWN0IGlv c3lzX21hcAkJbWFwOw0KPiAgIAl2b2lkCQkJCSprcHRyOw0KPiAgIAl1bnNpZ25lZCBpbnQg ICAgICAgICAgICAgICAgICAgIG1hcF9jb3VudDsNCj4gICAJaW50ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB0eXBlOw0KPiBAQCAtNDI3LDkgKzQyNyw5IEBAIHN0cnVjdCBzZ190 YWJsZSAqcXhsX2dlbV9wcmltZV9nZXRfc2dfdGFibGUoc3RydWN0IGRybV9nZW1fb2JqZWN0 ICpvYmopOw0KPiAgIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqcXhsX2dlbV9wcmltZV9pbXBv cnRfc2dfdGFibGUoDQo+ICAgCXN0cnVjdCBkcm1fZGV2aWNlICpkZXYsIHN0cnVjdCBkbWFf YnVmX2F0dGFjaG1lbnQgKmF0dGFjaCwNCj4gICAJc3RydWN0IHNnX3RhYmxlICpzZ3QpOw0K PiAtaW50IHF4bF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwg c3RydWN0IGRtYV9idWZfbWFwICptYXApOw0KPiAraW50IHF4bF9nZW1fcHJpbWVfdm1hcChz dHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGlvc3lzX21hcCAqbWFwKTsNCj4g ICB2b2lkIHF4bF9nZW1fcHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2Jq LA0KPiAtCQkJICBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7DQo+ICsJCQkgIHN0cnVjdCBp b3N5c19tYXAgKm1hcCk7DQo+ICAgDQo+ICAgLyogcXhsX2lycS5jICovDQo+ICAgaW50IHF4 bF9pcnFfaW5pdChzdHJ1Y3QgcXhsX2RldmljZSAqcWRldik7DQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuYyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwv cXhsX29iamVjdC5jDQo+IGluZGV4IGZiYjM2ZTNlODU2NC4uYjQyYTY1N2U0YzJmIDEwMDY0 NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuYw0KPiArKysgYi9k cml2ZXJzL2dwdS9kcm0vcXhsL3F4bF9vYmplY3QuYw0KPiBAQCAtMjMsNyArMjMsNyBAQA0K PiAgICAqICAgICAgICAgIEFsb24gTGV2eQ0KPiAgICAqLw0KPiAgIA0KPiAtI2luY2x1ZGUg PGxpbnV4L2RtYS1idWYtbWFwLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+ DQo+ICAgI2luY2x1ZGUgPGxpbnV4L2lvLW1hcHBpbmcuaD4NCj4gICANCj4gICAjaW5jbHVk ZSAicXhsX2Rydi5oIg0KPiBAQCAtMTU4LDcgKzE1OCw3IEBAIGludCBxeGxfYm9fY3JlYXRl KHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LCB1bnNpZ25lZCBsb25nIHNpemUsDQo+ICAgCXJl dHVybiAwOw0KPiAgIH0NCj4gICANCj4gLWludCBxeGxfYm9fdm1hcF9sb2NrZWQoc3RydWN0 IHF4bF9ibyAqYm8sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAraW50IHF4bF9ib192 bWFwX2xvY2tlZChzdHJ1Y3QgcXhsX2JvICpibywgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0K PiAgIHsNCj4gICAJaW50IHI7DQo+ICAgDQo+IEBAIC0xODQsNyArMTg0LDcgQEAgaW50IHF4 bF9ib192bWFwX2xvY2tlZChzdHJ1Y3QgcXhsX2JvICpibywgc3RydWN0IGRtYV9idWZfbWFw ICptYXApDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLWludCBxeGxfYm9fdm1h cChzdHJ1Y3QgcXhsX2JvICpibywgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtpbnQg cXhsX2JvX3ZtYXAoc3RydWN0IHF4bF9ibyAqYm8sIHN0cnVjdCBpb3N5c19tYXAgKm1hcCkN Cj4gICB7DQo+ICAgCWludCByOw0KPiAgIA0KPiBAQCAtMjEwLDcgKzIxMCw3IEBAIHZvaWQg KnF4bF9ib19rbWFwX2F0b21pY19wYWdlKHN0cnVjdCBxeGxfZGV2aWNlICpxZGV2LA0KPiAg IAl2b2lkICpycHRyOw0KPiAgIAlpbnQgcmV0Ow0KPiAgIAlzdHJ1Y3QgaW9fbWFwcGluZyAq bWFwOw0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBib19tYXA7DQo+ICsJc3RydWN0IGlvc3lz X21hcCBib19tYXA7DQo+ICAgDQo+ICAgCWlmIChiby0+dGJvLnJlc291cmNlLT5tZW1fdHlw ZSA9PSBUVE1fUExfVlJBTSkNCj4gICAJCW1hcCA9IHFkZXYtPnZyYW1fbWFwcGluZzsNCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5oIGIvZHJpdmVy cy9ncHUvZHJtL3F4bC9xeGxfb2JqZWN0LmgNCj4gaW5kZXggY2VlNGI1MmI3NWRkLi41MzM5 MmNiOTBlZWMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVj dC5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9xeGwvcXhsX29iamVjdC5oDQo+IEBAIC01 OSw4ICs1OSw4IEBAIGV4dGVybiBpbnQgcXhsX2JvX2NyZWF0ZShzdHJ1Y3QgcXhsX2Rldmlj ZSAqcWRldiwNCj4gICAJCQkgdTMyIHByaW9yaXR5LA0KPiAgIAkJCSBzdHJ1Y3QgcXhsX3N1 cmZhY2UgKnN1cmYsDQo+ICAgCQkJIHN0cnVjdCBxeGxfYm8gKipib19wdHIpOw0KPiAtaW50 IHF4bF9ib192bWFwKHN0cnVjdCBxeGxfYm8gKmJvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1h cCk7DQo+IC1pbnQgcXhsX2JvX3ZtYXBfbG9ja2VkKHN0cnVjdCBxeGxfYm8gKmJvLCBzdHJ1 Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7DQo+ICtpbnQgcXhsX2JvX3ZtYXAoc3RydWN0IHF4bF9i byAqYm8sIHN0cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICtpbnQgcXhsX2JvX3ZtYXBfbG9j a2VkKHN0cnVjdCBxeGxfYm8gKmJvLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApOw0KPiAgIGlu dCBxeGxfYm9fdnVubWFwKHN0cnVjdCBxeGxfYm8gKmJvKTsNCj4gICB2b2lkIHF4bF9ib192 dW5tYXBfbG9ja2VkKHN0cnVjdCBxeGxfYm8gKmJvKTsNCj4gICB2b2lkICpxeGxfYm9fa21h cF9hdG9taWNfcGFnZShzdHJ1Y3QgcXhsX2RldmljZSAqcWRldiwgc3RydWN0IHF4bF9ibyAq Ym8sIGludCBwYWdlX29mZnNldCk7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v cXhsL3F4bF9wcmltZS5jIGIvZHJpdmVycy9ncHUvZHJtL3F4bC9xeGxfcHJpbWUuYw0KPiBp bmRleCA0YTEwY2IwYTQxM2IuLjE0MmQwMTQxNWFjYiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVy cy9ncHUvZHJtL3F4bC9xeGxfcHJpbWUuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcXhs L3F4bF9wcmltZS5jDQo+IEBAIC01NCw3ICs1NCw3IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVj dCAqcXhsX2dlbV9wcmltZV9pbXBvcnRfc2dfdGFibGUoDQo+ICAgCXJldHVybiBFUlJfUFRS KC1FTk9TWVMpOw0KPiAgIH0NCj4gICANCj4gLWludCBxeGxfZ2VtX3ByaW1lX3ZtYXAoc3Ry dWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAr aW50IHF4bF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3Ry dWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IHF4bF9ibyAqYm8gPSBn ZW1fdG9fcXhsX2JvKG9iaik7DQo+ICAgCWludCByZXQ7DQo+IEBAIC02Nyw3ICs2Nyw3IEBA IGludCBxeGxfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0 cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAgIH0NCj4gICANCj4gICB2b2lkIHF4bF9nZW1f cHJpbWVfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLA0KPiAtCQkJICBzdHJ1 Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gKwkJCSAgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0K PiAgIHsNCj4gICAJc3RydWN0IHF4bF9ibyAqYm8gPSBnZW1fdG9fcXhsX2JvKG9iaik7DQo+ ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3JhZGVvbl9nZW0u YyBiL2RyaXZlcnMvZ3B1L2RybS9yYWRlb24vcmFkZW9uX2dlbS5jDQo+IGluZGV4IGEzNmE0 ZjJjNzZiMC4uZjU2MzI4NGE3ZmFjIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v cmFkZW9uL3JhZGVvbl9nZW0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcmFkZW9uL3Jh ZGVvbl9nZW0uYw0KPiBAQCAtMjYsNiArMjYsNyBAQA0KPiAgICAqICAgICAgICAgIEplcm9t ZSBHbGlzc2UNCj4gICAgKi8NCj4gICANCj4gKyNpbmNsdWRlIDxsaW51eC9pb3N5cy1tYXAu aD4NCj4gICAjaW5jbHVkZSA8bGludXgvcGNpLmg+DQo+ICAgDQo+ICAgI2luY2x1ZGUgPGRy bS9kcm1fZGV2aWNlLmg+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9ja2No aXAvcm9ja2NoaXBfZHJtX2dlbS5jIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tj aGlwX2RybV9nZW0uYw0KPiBpbmRleCA2M2ViNzNiNjI0YWEuLjk4NTU4NDE0N2RhMSAxMDA2 NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9nZW0u Yw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5j DQo+IEBAIC01MTAsNyArNTEwLDcgQEAgcm9ja2NoaXBfZ2VtX3ByaW1lX2ltcG9ydF9zZ190 YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAqZHJtLA0KPiAgIAlyZXR1cm4gRVJSX1BUUihyZXQp Ow0KPiAgIH0NCj4gICANCj4gLWludCByb2NrY2hpcF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtpbnQg cm9ja2NoaXBfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0 cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCByb2NrY2hpcF9nZW1f b2JqZWN0ICpya19vYmogPSB0b19yb2NrY2hpcF9vYmoob2JqKTsNCj4gICANCj4gQEAgLTUx OSwxOCArNTE5LDE5IEBAIGludCByb2NrY2hpcF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJt X2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICAgCQkJCSAg cGdwcm90X3dyaXRlY29tYmluZShQQUdFX0tFUk5FTCkpOw0KPiAgIAkJaWYgKCF2YWRkcikN Cj4gICAJCQlyZXR1cm4gLUVOT01FTTsNCj4gLQkJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1h cCwgdmFkZHIpOw0KPiArCQlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOw0KPiAg IAkJcmV0dXJuIDA7DQo+ICAgCX0NCj4gICANCj4gICAJaWYgKHJrX29iai0+ZG1hX2F0dHJz ICYgRE1BX0FUVFJfTk9fS0VSTkVMX01BUFBJTkcpDQo+ICAgCQlyZXR1cm4gLUVOT01FTTsN Cj4gLQlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCBya19vYmotPmt2YWRkcik7DQo+ICsJ aW9zeXNfbWFwX3NldF92YWRkcihtYXAsIHJrX29iai0+a3ZhZGRyKTsNCj4gICANCj4gICAJ cmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0KPiAtdm9pZCByb2NrY2hpcF9nZW1fcHJpbWVfdnVu bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1h cCkNCj4gK3ZvaWQgcm9ja2NoaXBfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9v YmplY3QgKm9iaiwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAg ew0KPiAgIAlzdHJ1Y3Qgcm9ja2NoaXBfZ2VtX29iamVjdCAqcmtfb2JqID0gdG9fcm9ja2No aXBfb2JqKG9iaik7DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vcm9j a2NoaXAvcm9ja2NoaXBfZHJtX2dlbS5oIGIvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3Jv Y2tjaGlwX2RybV9nZW0uaA0KPiBpbmRleCA0N2MxODYxZWVjZTAuLjcyZjU5YWM2ZDI1OCAx MDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3JvY2tjaGlwL3JvY2tjaGlwX2RybV9n ZW0uaA0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vcm9ja2NoaXAvcm9ja2NoaXBfZHJtX2dl bS5oDQo+IEBAIC0zMSw4ICszMSw5IEBAIHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqDQo+ICAg cm9ja2NoaXBfZ2VtX3ByaW1lX2ltcG9ydF9zZ190YWJsZShzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2LA0KPiAgIAkJCQkgICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2htZW50ICphdHRhY2gsDQo+ ICAgCQkJCSAgIHN0cnVjdCBzZ190YWJsZSAqc2cpOw0KPiAtaW50IHJvY2tjaGlwX2dlbV9w cmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqb2JqLCBzdHJ1Y3QgZG1hX2J1Zl9t YXAgKm1hcCk7DQo+IC12b2lkIHJvY2tjaGlwX2dlbV9wcmltZV92dW5tYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsNCj4gK2ludCBy b2NrY2hpcF9nZW1fcHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3Ry dWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gK3ZvaWQgcm9ja2NoaXBfZ2VtX3ByaW1lX3Z1bm1h cChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwNCj4gKwkJCSAgICAgICBzdHJ1Y3QgaW9z eXNfbWFwICptYXApOw0KPiAgIA0KPiAgIHN0cnVjdCByb2NrY2hpcF9nZW1fb2JqZWN0ICoN Cj4gICAJcm9ja2NoaXBfZ2VtX2NyZWF0ZV9vYmplY3Qoc3RydWN0IGRybV9kZXZpY2UgKmRy bSwgdW5zaWduZWQgaW50IHNpemUsDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0v dGVncmEvZ2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMNCj4gaW5kZXggZDM4 ZmQ3ZTEyYjU3Li5lZjIwODM4NDY2NWUgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS90ZWdyYS9nZW0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGVncmEvZ2VtLmMNCj4g QEAgLTEzNSw3ICsxMzUsNyBAQCBzdGF0aWMgdm9pZCB0ZWdyYV9ib191bnBpbihzdHJ1Y3Qg ZGV2aWNlICpkZXYsIHN0cnVjdCBzZ190YWJsZSAqc2d0KQ0KPiAgIHN0YXRpYyB2b2lkICp0 ZWdyYV9ib19tbWFwKHN0cnVjdCBob3N0MXhfYm8gKmJvKQ0KPiAgIHsNCj4gICAJc3RydWN0 IHRlZ3JhX2JvICpvYmogPSBob3N0MXhfdG9fdGVncmFfYm8oYm8pOw0KPiAtCXN0cnVjdCBk bWFfYnVmX21hcCBtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBtYXA7DQo+ICAgCWludCBy ZXQ7DQo+ICAgDQo+ICAgCWlmIChvYmotPnZhZGRyKSB7DQo+IEBAIC0xNTIsNyArMTUyLDcg QEAgc3RhdGljIHZvaWQgKnRlZ3JhX2JvX21tYXAoc3RydWN0IGhvc3QxeF9ibyAqYm8pDQo+ ICAgc3RhdGljIHZvaWQgdGVncmFfYm9fbXVubWFwKHN0cnVjdCBob3N0MXhfYm8gKmJvLCB2 b2lkICphZGRyKQ0KPiAgIHsNCj4gICAJc3RydWN0IHRlZ3JhX2JvICpvYmogPSBob3N0MXhf dG9fdGVncmFfYm8oYm8pOw0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXAgPSBETUFfQlVG X01BUF9JTklUX1ZBRERSKGFkZHIpOw0KPiArCXN0cnVjdCBpb3N5c19tYXAgbWFwID0gSU9T WVNfTUFQX0lOSVRfVkFERFIoYWRkcik7DQo+ICAgDQo+ICAgCWlmIChvYmotPnZhZGRyKQ0K PiAgIAkJcmV0dXJuOw0KPiBAQCAtNjUwLDE3ICs2NTAsMTcgQEAgc3RhdGljIGludCB0ZWdy YV9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZG1hX2J1ZiAqYnVmLCBzdHJ1Y3Qgdm1fYXJlYV9z dHJ1Y3QgKnZtYSkNCj4gICAJcmV0dXJuIF9fdGVncmFfZ2VtX21tYXAoZ2VtLCB2bWEpOw0K PiAgIH0NCj4gICANCj4gLXN0YXRpYyBpbnQgdGVncmFfZ2VtX3ByaW1lX3ZtYXAoc3RydWN0 IGRtYV9idWYgKmJ1Ziwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtzdGF0aWMgaW50 IHRlZ3JhX2dlbV9wcmltZV92bWFwKHN0cnVjdCBkbWFfYnVmICpidWYsIHN0cnVjdCBpb3N5 c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtID0g YnVmLT5wcml2Ow0KPiAgIAlzdHJ1Y3QgdGVncmFfYm8gKmJvID0gdG9fdGVncmFfYm8oZ2Vt KTsNCj4gICANCj4gLQlkbWFfYnVmX21hcF9zZXRfdmFkZHIobWFwLCBiby0+dmFkZHIpOw0K PiArCWlvc3lzX21hcF9zZXRfdmFkZHIobWFwLCBiby0+dmFkZHIpOw0KPiAgIA0KPiAgIAly ZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMgdm9pZCB0ZWdyYV9nZW1fcHJpbWVf dnVubWFwKHN0cnVjdCBkbWFfYnVmICpidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0K PiArc3RhdGljIHZvaWQgdGVncmFfZ2VtX3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZG1hX2J1ZiAq YnVmLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIH0NCj4gICANCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy5jIGIvZHJpdmVycy9ncHUv ZHJtL3RpbnkvY2lycnVzLmMNCj4gaW5kZXggZWNmMjQ3NWQwZjE2Li5jOGU3OTE4NDA4NjIg MTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS90aW55L2NpcnJ1cy5jDQo+IEBAIC0xNiw3ICsxNiw3IEBADQo+ ICAgICogQ29weXJpZ2h0IDE5OTktMjAwMSBKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5j b20+DQo+ICAgICovDQo+ICAgDQo+IC0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4N Cj4gKyNpbmNsdWRlIDxsaW51eC9pb3N5cy1tYXAuaD4NCj4gICAjaW5jbHVkZSA8bGludXgv bW9kdWxlLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L3BjaS5oPg0KPiAgIA0KPiBAQCAtMzEz LDcgKzMxMyw4IEBAIHN0YXRpYyBpbnQgY2lycnVzX21vZGVfc2V0KHN0cnVjdCBjaXJydXNf ZGV2aWNlICpjaXJydXMsDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0YXRp YyBpbnQgY2lycnVzX2ZiX2JsaXRfcmVjdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwg Y29uc3Qgc3RydWN0IGRtYV9idWZfbWFwICptYXAsDQo+ICtzdGF0aWMgaW50IGNpcnJ1c19m Yl9ibGl0X3JlY3Qoc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsDQo+ICsJCQkgICAgICAg Y29uc3Qgc3RydWN0IGlvc3lzX21hcCAqbWFwLA0KPiAgIAkJCSAgICAgICBzdHJ1Y3QgZHJt X3JlY3QgKnJlY3QpDQo+ICAgew0KPiAgIAlzdHJ1Y3QgY2lycnVzX2RldmljZSAqY2lycnVz ID0gdG9fY2lycnVzKGZiLT5kZXYpOw0KPiBAQCAtMzQ1LDcgKzM0Niw4IEBAIHN0YXRpYyBp bnQgY2lycnVzX2ZiX2JsaXRfcmVjdChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwgY29u c3Qgc3RydWN0IGRtYV9idWZfDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gLXN0 YXRpYyBpbnQgY2lycnVzX2ZiX2JsaXRfZnVsbHNjcmVlbihzdHJ1Y3QgZHJtX2ZyYW1lYnVm ZmVyICpmYiwgY29uc3Qgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtzdGF0aWMgaW50 IGNpcnJ1c19mYl9ibGl0X2Z1bGxzY3JlZW4oc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIs DQo+ICsJCQkJICAgICBjb25zdCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAg IAlzdHJ1Y3QgZHJtX3JlY3QgZnVsbHNjcmVlbiA9IHsNCj4gICAJCS54MSA9IDAsDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdGlueS9nbTEydTMyMC5jIGIvZHJpdmVycy9n cHUvZHJtL3RpbnkvZ20xMnUzMjAuYw0KPiBpbmRleCA2YmMwYzI5ODczOWMuLjY0OGU1ODVk NDBhOCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3RpbnkvZ20xMnUzMjAuYw0K PiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdGlueS9nbTEydTMyMC5jDQo+IEBAIC05NSw3ICs5 NSw3IEBAIHN0cnVjdCBnbTEydTMyMF9kZXZpY2Ugew0KPiAgIAkJc3RydWN0IGRybV9yZWN0 ICAgICAgICAgIHJlY3Q7DQo+ICAgCQlpbnQgZnJhbWU7DQo+ICAgCQlpbnQgZHJhd19zdGF0 dXNfdGltZW91dDsNCj4gLQkJc3RydWN0IGRtYV9idWZfbWFwIHNyY19tYXA7DQo+ICsJCXN0 cnVjdCBpb3N5c19tYXAgc3JjX21hcDsNCj4gICAJfSBmYl91cGRhdGU7DQo+ICAgfTsNCj4g ICANCj4gQEAgLTM5NSw3ICszOTUsOCBAQCBzdGF0aWMgdm9pZCBnbTEydTMyMF9mYl91cGRh dGVfd29yayhzdHJ1Y3Qgd29ya19zdHJ1Y3QgKndvcmspDQo+ICAgCQlHTTEyVTMyMF9FUlIo IkZyYW1lIHVwZGF0ZSBlcnJvcjogJWRcbiIsIHJldCk7DQo+ICAgfQ0KPiAgIA0KPiAtc3Rh dGljIHZvaWQgZ20xMnUzMjBfZmJfbWFya19kaXJ0eShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwgY29uc3Qgc3RydWN0IGRtYV9idWZfbWFwICptYXAsDQo+ICtzdGF0aWMgdm9pZCBn bTEydTMyMF9mYl9tYXJrX2RpcnR5KHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLA0KPiAr CQkJCSAgIGNvbnN0IHN0cnVjdCBpb3N5c19tYXAgKm1hcCwNCj4gICAJCQkJICAgc3RydWN0 IGRybV9yZWN0ICpkaXJ0eSkNCj4gICB7DQo+ICAgCXN0cnVjdCBnbTEydTMyMF9kZXZpY2Ug KmdtMTJ1MzIwID0gdG9fZ20xMnUzMjAoZmItPmRldik7DQo+IEBAIC00MzgsNyArNDM5LDcg QEAgc3RhdGljIHZvaWQgZ20xMnUzMjBfc3RvcF9mYl91cGRhdGUoc3RydWN0IGdtMTJ1MzIw X2RldmljZSAqZ20xMnUzMjApDQo+ICAgCW11dGV4X2xvY2soJmdtMTJ1MzIwLT5mYl91cGRh dGUubG9jayk7DQo+ICAgCW9sZF9mYiA9IGdtMTJ1MzIwLT5mYl91cGRhdGUuZmI7DQo+ICAg CWdtMTJ1MzIwLT5mYl91cGRhdGUuZmIgPSBOVUxMOw0KPiAtCWRtYV9idWZfbWFwX2NsZWFy KCZnbTEydTMyMC0+ZmJfdXBkYXRlLnNyY19tYXApOw0KPiArCWlvc3lzX21hcF9jbGVhcigm Z20xMnUzMjAtPmZiX3VwZGF0ZS5zcmNfbWFwKTsNCj4gICAJbXV0ZXhfdW5sb2NrKCZnbTEy dTMyMC0+ZmJfdXBkYXRlLmxvY2spOw0KPiAgIA0KPiAgIAlkcm1fZnJhbWVidWZmZXJfcHV0 KG9sZF9mYik7DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191 dGlsLmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9ib191dGlsLmMNCj4gaW5kZXggNTQ0 YTg0ZmE2NTg5Li4yYjhjYWExZWZhYTMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2Ry bS90dG0vdHRtX2JvX3V0aWwuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9i b191dGlsLmMNCj4gQEAgLTMzLDcgKzMzLDcgQEANCj4gICAjaW5jbHVkZSA8ZHJtL3R0bS90 dG1fcGxhY2VtZW50Lmg+DQo+ICAgI2luY2x1ZGUgPGRybS9kcm1fY2FjaGUuaD4NCj4gICAj aW5jbHVkZSA8ZHJtL2RybV92bWFfbWFuYWdlci5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4L2Rt YS1idWYtbWFwLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+ICAgI2lu Y2x1ZGUgPGxpbnV4L2lvLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L2hpZ2htZW0uaD4NCj4g ICAjaW5jbHVkZSA8bGludXgvd2FpdC5oPg0KPiBAQCAtOTMsNyArOTMsNyBAQCB2b2lkIHR0 bV9tb3ZlX21lbWNweShib29sIGNsZWFyLA0KPiAgIHsNCj4gICAJY29uc3Qgc3RydWN0IHR0 bV9rbWFwX2l0ZXJfb3BzICpkc3Rfb3BzID0gZHN0X2l0ZXItPm9wczsNCj4gICAJY29uc3Qg c3RydWN0IHR0bV9rbWFwX2l0ZXJfb3BzICpzcmNfb3BzID0gc3JjX2l0ZXItPm9wczsNCj4g LQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgc3JjX21hcCwgZHN0X21hcDsNCj4gKwlzdHJ1Y3QgaW9z eXNfbWFwIHNyY19tYXAsIGRzdF9tYXA7DQo+ICAgCXBnb2ZmX3QgaTsNCj4gICANCj4gICAJ LyogU2luZ2xlIFRUTSBtb3ZlLiBOT1AgKi8NCj4gQEAgLTM5MCw3ICszOTAsNyBAQCB2b2lk IHR0bV9ib19rdW5tYXAoc3RydWN0IHR0bV9ib19rbWFwX29iaiAqbWFwKQ0KPiAgIH0NCj4g ICBFWFBPUlRfU1lNQk9MKHR0bV9ib19rdW5tYXApOw0KPiAgIA0KPiAtaW50IHR0bV9ib192 bWFwKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0cnVjdCBkbWFfYnVmX21hcCAq bWFwKQ0KPiAraW50IHR0bV9ib192bWFwKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8s IHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCB0dG1fcmVzb3Vy Y2UgKm1lbSA9IGJvLT5yZXNvdXJjZTsNCj4gICAJaW50IHJldDsNCj4gQEAgLTQxOCw3ICs0 MTgsNyBAQCBpbnQgdHRtX2JvX3ZtYXAoc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywg c3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICAgCQlpZiAoIXZhZGRyX2lvbWVtKQ0KPiAg IAkJCXJldHVybiAtRU5PTUVNOw0KPiAgIA0KPiAtCQlkbWFfYnVmX21hcF9zZXRfdmFkZHJf aW9tZW0obWFwLCB2YWRkcl9pb21lbSk7DQo+ICsJCWlvc3lzX21hcF9zZXRfdmFkZHJfaW9t ZW0obWFwLCB2YWRkcl9pb21lbSk7DQo+ICAgDQo+ICAgCX0gZWxzZSB7DQo+ICAgCQlzdHJ1 Y3QgdHRtX29wZXJhdGlvbl9jdHggY3R4ID0gew0KPiBAQCAtNDQyLDI1ICs0NDIsMjUgQEAg aW50IHR0bV9ib192bWFwKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0cnVjdCBk bWFfYnVmX21hcCAqbWFwKQ0KPiAgIAkJaWYgKCF2YWRkcikNCj4gICAJCQlyZXR1cm4gLUVO T01FTTsNCj4gICANCj4gLQkJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOw0K PiArCQlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOw0KPiAgIAl9DQo+ICAgDQo+ ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICBFWFBPUlRfU1lNQk9MKHR0bV9ib192bWFwKTsN Cj4gICANCj4gLXZvaWQgdHRtX2JvX3Z1bm1hcChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg KmJvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gK3ZvaWQgdHRtX2JvX3Z1bm1hcChz dHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ ICAgew0KPiAgIAlzdHJ1Y3QgdHRtX3Jlc291cmNlICptZW0gPSBiby0+cmVzb3VyY2U7DQo+ ICAgDQo+IC0JaWYgKGRtYV9idWZfbWFwX2lzX251bGwobWFwKSkNCj4gKwlpZiAoaW9zeXNf bWFwX2lzX251bGwobWFwKSkNCj4gICAJCXJldHVybjsNCj4gICANCj4gICAJaWYgKCFtYXAt PmlzX2lvbWVtKQ0KPiAgIAkJdnVubWFwKG1hcC0+dmFkZHIpOw0KPiAgIAllbHNlIGlmICgh bWVtLT5idXMuYWRkcikNCj4gICAJCWlvdW5tYXAobWFwLT52YWRkcl9pb21lbSk7DQo+IC0J ZG1hX2J1Zl9tYXBfY2xlYXIobWFwKTsNCj4gKwlpb3N5c19tYXBfY2xlYXIobWFwKTsNCj4g ICANCj4gICAJdHRtX21lbV9pb19mcmVlKGJvLT5iZGV2LCBiby0+cmVzb3VyY2UpOw0KPiAg IH0NCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3Jlc291cmNlLmMg Yi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV9yZXNvdXJjZS5jDQo+IGluZGV4IDY4MzQ0Yzkw NTQ5Yi4uZWVkZGEzNzYxNTA2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdHRt L3R0bV9yZXNvdXJjZS5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90dG0vdHRtX3Jlc291 cmNlLmMNCj4gQEAgLTIyLDcgKzIyLDcgQEANCj4gICAgKiBBdXRob3JzOiBDaHJpc3RpYW4g S8O2bmlnDQo+ICAgICovDQo+ICAgDQo+IC0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAu aD4NCj4gKyNpbmNsdWRlIDxsaW51eC9pb3N5cy1tYXAuaD4NCj4gICAjaW5jbHVkZSA8bGlu dXgvaW8tbWFwcGluZy5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9zY2F0dGVybGlzdC5oPg0K PiAgIA0KPiBAQCAtMjQ0LDcgKzI0NCw3IEBAIHZvaWQgdHRtX3Jlc291cmNlX21hbmFnZXJf ZGVidWcoc3RydWN0IHR0bV9yZXNvdXJjZV9tYW5hZ2VyICptYW4sDQo+ICAgRVhQT1JUX1NZ TUJPTCh0dG1fcmVzb3VyY2VfbWFuYWdlcl9kZWJ1Zyk7DQo+ICAgDQo+ICAgc3RhdGljIHZv aWQgdHRtX2ttYXBfaXRlcl9pb21hcF9tYXBfbG9jYWwoc3RydWN0IHR0bV9rbWFwX2l0ZXIg Kml0ZXIsDQo+IC0JCQkJCSAgc3RydWN0IGRtYV9idWZfbWFwICpkbWFwLA0KPiArCQkJCQkg IHN0cnVjdCBpb3N5c19tYXAgKmRtYXAsDQo+ICAgCQkJCQkgIHBnb2ZmX3QgaSkNCj4gICB7 DQo+ICAgCXN0cnVjdCB0dG1fa21hcF9pdGVyX2lvbWFwICppdGVyX2lvID0NCj4gQEAgLTI3 MSwxMSArMjcxLDExIEBAIHN0YXRpYyB2b2lkIHR0bV9rbWFwX2l0ZXJfaW9tYXBfbWFwX2xv Y2FsKHN0cnVjdCB0dG1fa21hcF9pdGVyICppdGVyLA0KPiAgIAlhZGRyID0gaW9fbWFwcGlu Z19tYXBfbG9jYWxfd2MoaXRlcl9pby0+aW9tYXAsIGl0ZXJfaW8tPmNhY2hlLm9mZnMgKw0K PiAgIAkJCQkgICAgICAgKCgocmVzb3VyY2Vfc2l6ZV90KWkgLSBpdGVyX2lvLT5jYWNoZS5p KQ0KPiAgIAkJCQkJPDwgUEFHRV9TSElGVCkpOw0KPiAtCWRtYV9idWZfbWFwX3NldF92YWRk cl9pb21lbShkbWFwLCBhZGRyKTsNCj4gKwlpb3N5c19tYXBfc2V0X3ZhZGRyX2lvbWVtKGRt YXAsIGFkZHIpOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCB0dG1fa21hcF9pdGVy X2lvbWFwX3VubWFwX2xvY2FsKHN0cnVjdCB0dG1fa21hcF9pdGVyICppdGVyLA0KPiAtCQkJ CQkgICAgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICsJCQkJCSAgICBzdHJ1Y3QgaW9z eXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlpb19tYXBwaW5nX3VubWFwX2xvY2FsKG1hcC0+ dmFkZHJfaW9tZW0pOw0KPiAgIH0NCj4gQEAgLTMyNiwxNCArMzI2LDE0IEBAIEVYUE9SVF9T WU1CT0wodHRtX2ttYXBfaXRlcl9pb21hcF9pbml0KTsNCj4gICAgKi8NCj4gICANCj4gICBz dGF0aWMgdm9pZCB0dG1fa21hcF9pdGVyX2xpbmVhcl9pb19tYXBfbG9jYWwoc3RydWN0IHR0 bV9rbWFwX2l0ZXIgKml0ZXIsDQo+IC0JCQkJCSAgICAgIHN0cnVjdCBkbWFfYnVmX21hcCAq ZG1hcCwNCj4gKwkJCQkJICAgICAgc3RydWN0IGlvc3lzX21hcCAqZG1hcCwNCj4gICAJCQkJ CSAgICAgIHBnb2ZmX3QgaSkNCj4gICB7DQo+ICAgCXN0cnVjdCB0dG1fa21hcF9pdGVyX2xp bmVhcl9pbyAqaXRlcl9pbyA9DQo+ICAgCQljb250YWluZXJfb2YoaXRlciwgdHlwZW9mKCpp dGVyX2lvKSwgYmFzZSk7DQo+ICAgDQo+ICAgCSpkbWFwID0gaXRlcl9pby0+ZG1hcDsNCj4g LQlkbWFfYnVmX21hcF9pbmNyKGRtYXAsIGkgKiBQQUdFX1NJWkUpOw0KPiArCWlvc3lzX21h cF9pbmNyKGRtYXAsIGkgKiBQQUdFX1NJWkUpOw0KPiAgIH0NCj4gICANCj4gICBzdGF0aWMg Y29uc3Qgc3RydWN0IHR0bV9rbWFwX2l0ZXJfb3BzIHR0bV9rbWFwX2l0ZXJfbGluZWFyX2lv X29wcyA9IHsNCj4gQEAgLTM2OSw3ICszNjksNyBAQCB0dG1fa21hcF9pdGVyX2xpbmVhcl9p b19pbml0KHN0cnVjdCB0dG1fa21hcF9pdGVyX2xpbmVhcl9pbyAqaXRlcl9pbywNCj4gICAJ fQ0KPiAgIA0KPiAgIAlpZiAobWVtLT5idXMuYWRkcikgew0KPiAtCQlkbWFfYnVmX21hcF9z ZXRfdmFkZHIoJml0ZXJfaW8tPmRtYXAsIG1lbS0+YnVzLmFkZHIpOw0KPiArCQlpb3N5c19t YXBfc2V0X3ZhZGRyKCZpdGVyX2lvLT5kbWFwLCBtZW0tPmJ1cy5hZGRyKTsNCj4gICAJCWl0 ZXJfaW8tPm5lZWRzX3VubWFwID0gZmFsc2U7DQo+ICAgCX0gZWxzZSB7DQo+ICAgCQlzaXpl X3QgYnVzX3NpemUgPSAoc2l6ZV90KW1lbS0+bnVtX3BhZ2VzIDw8IFBBR0VfU0hJRlQ7DQo+ IEBAIC0zNzcsMjMgKzM3NywyMyBAQCB0dG1fa21hcF9pdGVyX2xpbmVhcl9pb19pbml0KHN0 cnVjdCB0dG1fa21hcF9pdGVyX2xpbmVhcl9pbyAqaXRlcl9pbywNCj4gICAJCWl0ZXJfaW8t Pm5lZWRzX3VubWFwID0gdHJ1ZTsNCj4gICAJCW1lbXNldCgmaXRlcl9pby0+ZG1hcCwgMCwg c2l6ZW9mKGl0ZXJfaW8tPmRtYXApKTsNCj4gICAJCWlmIChtZW0tPmJ1cy5jYWNoaW5nID09 IHR0bV93cml0ZV9jb21iaW5lZCkNCj4gLQkJCWRtYV9idWZfbWFwX3NldF92YWRkcl9pb21l bSgmaXRlcl9pby0+ZG1hcCwNCj4gKwkJCWlvc3lzX21hcF9zZXRfdmFkZHJfaW9tZW0oJml0 ZXJfaW8tPmRtYXAsDQo+ICAgCQkJCQkJICAgIGlvcmVtYXBfd2MobWVtLT5idXMub2Zmc2V0 LA0KPiAgIAkJCQkJCQkgICAgICAgYnVzX3NpemUpKTsNCj4gICAJCWVsc2UgaWYgKG1lbS0+ YnVzLmNhY2hpbmcgPT0gdHRtX2NhY2hlZCkNCj4gLQkJCWRtYV9idWZfbWFwX3NldF92YWRk cigmaXRlcl9pby0+ZG1hcCwNCj4gKwkJCWlvc3lzX21hcF9zZXRfdmFkZHIoJml0ZXJfaW8t PmRtYXAsDQo+ICAgCQkJCQkgICAgICBtZW1yZW1hcChtZW0tPmJ1cy5vZmZzZXQsIGJ1c19z aXplLA0KPiAgIAkJCQkJCSAgICAgICBNRU1SRU1BUF9XQiB8DQo+ICAgCQkJCQkJICAgICAg IE1FTVJFTUFQX1dUIHwNCj4gICAJCQkJCQkgICAgICAgTUVNUkVNQVBfV0MpKTsNCj4gICAN Cj4gICAJCS8qIElmIHVuY2FjaGVkIHJlcXVlc3RlZCBvciBpZiBtYXBwaW5nIGNhY2hlZCBv ciB3YyBmYWlsZWQgKi8NCj4gLQkJaWYgKGRtYV9idWZfbWFwX2lzX251bGwoJml0ZXJfaW8t PmRtYXApKQ0KPiAtCQkJZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyX2lvbWVtKCZpdGVyX2lvLT5k bWFwLA0KPiArCQlpZiAoaW9zeXNfbWFwX2lzX251bGwoJml0ZXJfaW8tPmRtYXApKQ0KPiAr CQkJaW9zeXNfbWFwX3NldF92YWRkcl9pb21lbSgmaXRlcl9pby0+ZG1hcCwNCj4gICAJCQkJ CQkgICAgaW9yZW1hcChtZW0tPmJ1cy5vZmZzZXQsDQo+ICAgCQkJCQkJCSAgICBidXNfc2l6 ZSkpOw0KPiAgIA0KPiAtCQlpZiAoZG1hX2J1Zl9tYXBfaXNfbnVsbCgmaXRlcl9pby0+ZG1h cCkpIHsNCj4gKwkJaWYgKGlvc3lzX21hcF9pc19udWxsKCZpdGVyX2lvLT5kbWFwKSkgew0K PiAgIAkJCXJldCA9IC1FTk9NRU07DQo+ICAgCQkJZ290byBvdXRfaW9fZnJlZTsNCj4gICAJ CX0NCj4gQEAgLTQyMiw3ICs0MjIsNyBAQCB0dG1fa21hcF9pdGVyX2xpbmVhcl9pb19maW5p KHN0cnVjdCB0dG1fa21hcF9pdGVyX2xpbmVhcl9pbyAqaXRlcl9pbywNCj4gICAJCQkgICAg IHN0cnVjdCB0dG1fZGV2aWNlICpiZGV2LA0KPiAgIAkJCSAgICAgc3RydWN0IHR0bV9yZXNv dXJjZSAqbWVtKQ0KPiAgIHsNCj4gLQlpZiAoaXRlcl9pby0+bmVlZHNfdW5tYXAgJiYgZG1h X2J1Zl9tYXBfaXNfc2V0KCZpdGVyX2lvLT5kbWFwKSkgew0KPiArCWlmIChpdGVyX2lvLT5u ZWVkc191bm1hcCAmJiBpb3N5c19tYXBfaXNfc2V0KCZpdGVyX2lvLT5kbWFwKSkgew0KPiAg IAkJaWYgKGl0ZXJfaW8tPmRtYXAuaXNfaW9tZW0pDQo+ICAgCQkJaW91bm1hcChpdGVyX2lv LT5kbWFwLnZhZGRyX2lvbWVtKTsNCj4gICAJCWVsc2UNCj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS90dG0vdHRtX3R0LmMgYi9kcml2ZXJzL2dwdS9kcm0vdHRtL3R0bV90dC5j DQo+IGluZGV4IDc5Yzg3MGEzYmVmOC4uZWY2MzQzYjc4ZDcxIDEwMDY0NA0KPiAtLS0gYS9k cml2ZXJzL2dwdS9kcm0vdHRtL3R0bV90dC5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS90 dG0vdHRtX3R0LmMNCj4gQEAgLTQwNiwxOCArNDA2LDE4IEBAIHZvaWQgdHRtX3R0X21ncl9p bml0KHVuc2lnbmVkIGxvbmcgbnVtX3BhZ2VzLCB1bnNpZ25lZCBsb25nIG51bV9kbWEzMl9w YWdlcykNCj4gICB9DQo+ICAgDQo+ICAgc3RhdGljIHZvaWQgdHRtX2ttYXBfaXRlcl90dF9t YXBfbG9jYWwoc3RydWN0IHR0bV9rbWFwX2l0ZXIgKml0ZXIsDQo+IC0JCQkJICAgICAgIHN0 cnVjdCBkbWFfYnVmX21hcCAqZG1hcCwNCj4gKwkJCQkgICAgICAgc3RydWN0IGlvc3lzX21h cCAqZG1hcCwNCj4gICAJCQkJICAgICAgIHBnb2ZmX3QgaSkNCj4gICB7DQo+ICAgCXN0cnVj dCB0dG1fa21hcF9pdGVyX3R0ICppdGVyX3R0ID0NCj4gICAJCWNvbnRhaW5lcl9vZihpdGVy LCB0eXBlb2YoKml0ZXJfdHQpLCBiYXNlKTsNCj4gICANCj4gLQlkbWFfYnVmX21hcF9zZXRf dmFkZHIoZG1hcCwga21hcF9sb2NhbF9wYWdlX3Byb3QoaXRlcl90dC0+dHQtPnBhZ2VzW2ld LA0KPiArCWlvc3lzX21hcF9zZXRfdmFkZHIoZG1hcCwga21hcF9sb2NhbF9wYWdlX3Byb3Qo aXRlcl90dC0+dHQtPnBhZ2VzW2ldLA0KPiAgIAkJCQkJCQkgaXRlcl90dC0+cHJvdCkpOw0K PiAgIH0NCj4gICANCj4gICBzdGF0aWMgdm9pZCB0dG1fa21hcF9pdGVyX3R0X3VubWFwX2xv Y2FsKHN0cnVjdCB0dG1fa21hcF9pdGVyICppdGVyLA0KPiAtCQkJCQkgc3RydWN0IGRtYV9i dWZfbWFwICptYXApDQo+ICsJCQkJCSBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0K PiAgIAlrdW5tYXBfbG9jYWwobWFwLT52YWRkcik7DQo+ICAgfQ0KPiBkaWZmIC0tZ2l0IGEv ZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9kZXNldC5jIGIvZHJpdmVycy9ncHUvZHJtL3Vk bC91ZGxfbW9kZXNldC5jDQo+IGluZGV4IDMyMjMyMjI4ZGFlOS4uZTY3YzQwYTQ4ZmI0IDEw MDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vdWRsL3VkbF9tb2Rlc2V0LmMNCj4gKysr IGIvZHJpdmVycy9ncHUvZHJtL3VkbC91ZGxfbW9kZXNldC5jDQo+IEBAIC0yNjQsNyArMjY0 LDggQEAgc3RhdGljIGludCB1ZGxfYWxpZ25lZF9kYW1hZ2VfY2xpcChzdHJ1Y3QgZHJtX3Jl Y3QgKmNsaXAsIGludCB4LCBpbnQgeSwNCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiAgIA0K PiAtc3RhdGljIGludCB1ZGxfaGFuZGxlX2RhbWFnZShzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiwgY29uc3Qgc3RydWN0IGRtYV9idWZfbWFwICptYXAsDQo+ICtzdGF0aWMgaW50IHVk bF9oYW5kbGVfZGFtYWdlKHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiLA0KPiArCQkJICAg ICBjb25zdCBzdHJ1Y3QgaW9zeXNfbWFwICptYXAsDQo+ICAgCQkJICAgICBpbnQgeCwgaW50 IHksIGludCB3aWR0aCwgaW50IGhlaWdodCkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSBmYi0+ZGV2Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3Zi b3h2aWRlby92Ym94X21vZGUuYyBiL2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF9t b2RlLmMNCj4gaW5kZXggNDIyN2E5MTViMDZhLi40MDE3YjBhNjIxZmMgMTAwNjQ0DQo+IC0t LSBhL2RyaXZlcnMvZ3B1L2RybS92Ym94dmlkZW8vdmJveF9tb2RlLmMNCj4gKysrIGIvZHJp dmVycy9ncHUvZHJtL3Zib3h2aWRlby92Ym94X21vZGUuYw0KPiBAQCAtMTAsNyArMTAsNyBA QA0KPiAgICAqICAgICAgICAgIEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+ DQo+ICAgICovDQo+ICAgDQo+IC0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4NCj4g KyNpbmNsdWRlIDxsaW51eC9pb3N5cy1tYXAuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvZXhw b3J0Lmg+DQo+ICAgDQo+ICAgI2luY2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+IEBAIC0z OTgsNyArMzk4LDcgQEAgc3RhdGljIHZvaWQgdmJveF9jdXJzb3JfYXRvbWljX3VwZGF0ZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4gICAJdTMyIGhlaWdodCA9IG5ld19zdGF0ZS0+ Y3J0Y19oOw0KPiAgIAlzdHJ1Y3QgZHJtX3NoYWRvd19wbGFuZV9zdGF0ZSAqc2hhZG93X3Bs YW5lX3N0YXRlID0NCj4gICAJCXRvX2RybV9zaGFkb3dfcGxhbmVfc3RhdGUobmV3X3N0YXRl KTsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwID0gc2hhZG93X3BsYW5lX3N0YXRlLT5k YXRhWzBdOw0KPiArCXN0cnVjdCBpb3N5c19tYXAgbWFwID0gc2hhZG93X3BsYW5lX3N0YXRl LT5kYXRhWzBdOw0KPiAgIAl1OCAqc3JjID0gbWFwLnZhZGRyOyAvKiBUT0RPOiBVc2UgbWFw cGluZyBhYnN0cmFjdGlvbiBwcm9wZXJseSAqLw0KPiAgIAlzaXplX3QgZGF0YV9zaXplLCBt YXNrX3NpemU7DQo+ICAgCXUzMiBmbGFnczsNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1 L2RybS92a21zL3ZrbXNfY29tcG9zZXIuYyBiL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNf Y29tcG9zZXIuYw0KPiBpbmRleCA5ZTgyMDRiZTlhMTQuLmM2YTEwMzZiZjJlYSAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19jb21wb3Nlci5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfY29tcG9zZXIuYw0KPiBAQCAtMTU3LDcgKzE1 Nyw3IEBAIHN0YXRpYyB2b2lkIGNvbXBvc2VfcGxhbmUoc3RydWN0IHZrbXNfY29tcG9zZXIg KnByaW1hcnlfY29tcG9zZXIsDQo+ICAgCXZvaWQgKnZhZGRyOw0KPiAgIAl2b2lkICgqcGl4 ZWxfYmxlbmQpKGNvbnN0IHU4ICpwX3NyYywgdTggKnBfZHN0KTsNCj4gICANCj4gLQlpZiAo V0FSTl9PTihkbWFfYnVmX21hcF9pc19udWxsKCZwcmltYXJ5X2NvbXBvc2VyLT5tYXBbMF0p KSkNCj4gKwlpZiAoV0FSTl9PTihpb3N5c19tYXBfaXNfbnVsbCgmcHJpbWFyeV9jb21wb3Nl ci0+bWFwWzBdKSkpDQo+ICAgCQlyZXR1cm47DQo+ICAgDQo+ICAgCXZhZGRyID0gcGxhbmVf Y29tcG9zZXItPm1hcFswXS52YWRkcjsNCj4gQEAgLTE4Nyw3ICsxODcsNyBAQCBzdGF0aWMg aW50IGNvbXBvc2VfYWN0aXZlX3BsYW5lcyh2b2lkICoqdmFkZHJfb3V0LA0KPiAgIAkJfQ0K PiAgIAl9DQo+ICAgDQo+IC0JaWYgKFdBUk5fT04oZG1hX2J1Zl9tYXBfaXNfbnVsbCgmcHJp bWFyeV9jb21wb3Nlci0+bWFwWzBdKSkpDQo+ICsJaWYgKFdBUk5fT04oaW9zeXNfbWFwX2lz X251bGwoJnByaW1hcnlfY29tcG9zZXItPm1hcFswXSkpKQ0KPiAgIAkJcmV0dXJuIC1FSU5W QUw7DQo+ICAgDQo+ICAgCXZhZGRyID0gcHJpbWFyeV9jb21wb3Nlci0+bWFwWzBdLnZhZGRy Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaCBiL2Ry aXZlcnMvZ3B1L2RybS92a21zL3ZrbXNfZHJ2LmgNCj4gaW5kZXggOTQ5NmZkYzkwMGI4Li45 MWU2M2IxMmY2MGYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3ZrbXNf ZHJ2LmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc19kcnYuaA0KPiBAQCAt MjMsMTQgKzIzLDE0IEBADQo+ICAgI2RlZmluZSBOVU1fT1ZFUkxBWV9QTEFORVMgOA0KPiAg IA0KPiAgIHN0cnVjdCB2a21zX3dyaXRlYmFja19qb2Igew0KPiAtCXN0cnVjdCBkbWFfYnVm X21hcCBtYXBbRFJNX0ZPUk1BVF9NQVhfUExBTkVTXTsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9t YXAgZGF0YVtEUk1fRk9STUFUX01BWF9QTEFORVNdOw0KPiArCXN0cnVjdCBpb3N5c19tYXAg bWFwW0RSTV9GT1JNQVRfTUFYX1BMQU5FU107DQo+ICsJc3RydWN0IGlvc3lzX21hcCBkYXRh W0RSTV9GT1JNQVRfTUFYX1BMQU5FU107DQo+ICAgfTsNCj4gICANCj4gICBzdHJ1Y3Qgdmtt c19jb21wb3NlciB7DQo+ICAgCXN0cnVjdCBkcm1fZnJhbWVidWZmZXIgZmI7DQo+ICAgCXN0 cnVjdCBkcm1fcmVjdCBzcmMsIGRzdDsNCj4gLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwWzRd Ow0KPiArCXN0cnVjdCBpb3N5c19tYXAgbWFwWzRdOw0KPiAgIAl1bnNpZ25lZCBpbnQgb2Zm c2V0Ow0KPiAgIAl1bnNpZ25lZCBpbnQgcGl0Y2g7DQo+ICAgCXVuc2lnbmVkIGludCBjcHA7 DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMgYi9k cml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMNCj4gaW5kZXggMzI0MDllMTUyNDRi Li5kOGViNjc0YjQ5YTYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS92a21zL3Zr bXNfcGxhbmUuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3BsYW5lLmMN Cj4gQEAgLTEsNiArMSw2IEBADQo+ICAgLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQ TC0yLjArDQo+ICAgDQo+IC0jaW5jbHVkZSA8bGludXgvZG1hLWJ1Zi1tYXAuaD4NCj4gKyNp bmNsdWRlIDxsaW51eC9pb3N5cy1tYXAuaD4NCj4gICANCj4gICAjaW5jbHVkZSA8ZHJtL2Ry bV9hdG9taWMuaD4NCj4gICAjaW5jbHVkZSA8ZHJtL2RybV9hdG9taWNfaGVscGVyLmg+DQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21zX3dyaXRlYmFjay5jIGIv ZHJpdmVycy9ncHUvZHJtL3ZrbXMvdmttc193cml0ZWJhY2suYw0KPiBpbmRleCA4Njk0MjI3 ZjU1NWYuLmFmMTYwNGRmYmJhZiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL3Zr bXMvdmttc193cml0ZWJhY2suYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vdmttcy92a21z X3dyaXRlYmFjay5jDQo+IEBAIC0xLDYgKzEsNiBAQA0KPiAgIC8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wKw0KPiAgIA0KPiAtI2luY2x1ZGUgPGxpbnV4L2RtYS1idWYt bWFwLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+DQo+ICAgDQo+ICAgI2lu Y2x1ZGUgPGRybS9kcm1fYXRvbWljLmg+DQo+ICAgI2luY2x1ZGUgPGRybS9kcm1fZm91cmNj Lmg+DQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRf Z2VtLmMgYi9kcml2ZXJzL2dwdS9kcm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMNCj4gaW5k ZXggZGQzNThiYTJiZjhlLi41YTViZjRlNWI3MTcgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMv Z3B1L2RybS94ZW4veGVuX2RybV9mcm9udF9nZW0uYw0KPiArKysgYi9kcml2ZXJzL2dwdS9k cm0veGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmMNCj4gQEAgLTI4MCw3ICsyODAsOCBAQCB4ZW5f ZHJtX2Zyb250X2dlbV9pbXBvcnRfc2dfdGFibGUoc3RydWN0IGRybV9kZXZpY2UgKmRldiwN Cj4gICAJcmV0dXJuICZ4ZW5fb2JqLT5iYXNlOw0KPiAgIH0NCj4gICANCj4gLWludCB4ZW5f ZHJtX2Zyb250X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29i aiwgc3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtpbnQgeGVuX2RybV9mcm9udF9nZW1f cHJpbWVfdm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosDQo+ICsJCQkJIHN0 cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gICB7DQo+ICAgCXN0cnVjdCB4ZW5fZ2VtX29iamVj dCAqeGVuX29iaiA9IHRvX3hlbl9nZW1fb2JqKGdlbV9vYmopOw0KPiAgIAl2b2lkICp2YWRk cjsNCj4gQEAgLTI5MywxMyArMjk0LDEzIEBAIGludCB4ZW5fZHJtX2Zyb250X2dlbV9wcmlt ZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiwgc3RydWN0IGRtYV9idWZf DQo+ICAgCQkgICAgIFZNX01BUCwgUEFHRV9LRVJORUwpOw0KPiAgIAlpZiAoIXZhZGRyKQ0K PiAgIAkJcmV0dXJuIC1FTk9NRU07DQo+IC0JZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwg dmFkZHIpOw0KPiArCWlvc3lzX21hcF9zZXRfdmFkZHIobWFwLCB2YWRkcik7DQo+ICAgDQo+ ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gICANCj4gICB2b2lkIHhlbl9kcm1fZnJvbnRfZ2Vt X3ByaW1lX3Z1bm1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmosDQo+IC0JCQkJ ICAgIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArCQkJCSAgICBzdHJ1Y3QgaW9zeXNf bWFwICptYXApDQo+ICAgew0KPiAgIAl2dW5tYXAobWFwLT52YWRkcik7DQo+ICAgfQ0KPiBk aWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5oIGIv ZHJpdmVycy9ncHUvZHJtL3hlbi94ZW5fZHJtX2Zyb250X2dlbS5oDQo+IGluZGV4IGVhZWE0 NzBmNzAwMS4uYTcxOGExZjM4MmEzIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0v eGVuL3hlbl9kcm1fZnJvbnRfZ2VtLmgNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL3hlbi94 ZW5fZHJtX2Zyb250X2dlbS5oDQo+IEBAIC0xMiw3ICsxMiw3IEBADQo+ICAgI2RlZmluZSBf X1hFTl9EUk1fRlJPTlRfR0VNX0gNCj4gICANCj4gICBzdHJ1Y3QgZG1hX2J1Zl9hdHRhY2ht ZW50Ow0KPiAtc3RydWN0IGRtYV9idWZfbWFwOw0KPiArc3RydWN0IGlvc3lzX21hcDsNCj4g ICBzdHJ1Y3QgZHJtX2RldmljZTsNCj4gICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Q7DQo+ICAg c3RydWN0IHNnX3RhYmxlOw0KPiBAQCAtMzIsOSArMzIsOSBAQCBzdHJ1Y3QgcGFnZSAqKnhl bl9kcm1fZnJvbnRfZ2VtX2dldF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaik7 DQo+ICAgdm9pZCB4ZW5fZHJtX2Zyb250X2dlbV9mcmVlX29iamVjdF91bmxvY2tlZChzdHJ1 Y3QgZHJtX2dlbV9vYmplY3QgKmdlbV9vYmopOw0KPiAgIA0KPiAgIGludCB4ZW5fZHJtX2Zy b250X2dlbV9wcmltZV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiwNCj4g LQkJCQkgc3RydWN0IGRtYV9idWZfbWFwICptYXApOw0KPiArCQkJCSBzdHJ1Y3QgaW9zeXNf bWFwICptYXApOw0KPiAgIA0KPiAgIHZvaWQgeGVuX2RybV9mcm9udF9nZW1fcHJpbWVfdnVu bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2VtX29iaiwNCj4gLQkJCQkgICAgc3RydWN0 IGRtYV9idWZfbWFwICptYXApOw0KPiArCQkJCSAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXAp Ow0KPiAgIA0KPiAgICNlbmRpZiAvKiBfX1hFTl9EUk1fRlJPTlRfR0VNX0ggKi8NCj4gZGlm ZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItZG1h LWNvbnRpZy5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVmMi1k bWEtY29udGlnLmMNCj4gaW5kZXggNTU2ZTQyYmE2NmU1Li5mMjc0ZjQ4YWVmZWIgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItZG1h LWNvbnRpZy5jDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRl b2J1ZjItZG1hLWNvbnRpZy5jDQo+IEBAIC05OSw3ICs5OSw3IEBAIHN0YXRpYyB2b2lkICp2 YjJfZGNfdmFkZHIoc3RydWN0IHZiMl9idWZmZXIgKnZiLCB2b2lkICpidWZfcHJpdikNCj4g ICAJCXJldHVybiBidWYtPnZhZGRyOw0KPiAgIA0KPiAgIAlpZiAoYnVmLT5kYl9hdHRhY2gp IHsNCj4gLQkJc3RydWN0IGRtYV9idWZfbWFwIG1hcDsNCj4gKwkJc3RydWN0IGlvc3lzX21h cCBtYXA7DQo+ICAgDQo+ICAgCQlpZiAoIWRtYV9idWZfdm1hcChidWYtPmRiX2F0dGFjaC0+ ZG1hYnVmLCAmbWFwKSkNCj4gICAJCQlidWYtPnZhZGRyID0gbWFwLnZhZGRyOw0KPiBAQCAt NDQ2LDcgKzQ0Niw3IEBAIHZiMl9kY19kbWFidWZfb3BzX2VuZF9jcHVfYWNjZXNzKHN0cnVj dCBkbWFfYnVmICpkYnVmLA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+IC1zdGF0 aWMgaW50IHZiMl9kY19kbWFidWZfb3BzX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRidWYsIHN0 cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArc3RhdGljIGludCB2YjJfZGNfZG1hYnVmX29w c192bWFwKHN0cnVjdCBkbWFfYnVmICpkYnVmLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ ICAgew0KPiAgIAlzdHJ1Y3QgdmIyX2RjX2J1ZiAqYnVmOw0KPiAgIAl2b2lkICp2YWRkcjsN Cj4gQEAgLTQ1Niw3ICs0NTYsNyBAQCBzdGF0aWMgaW50IHZiMl9kY19kbWFidWZfb3BzX3Zt YXAoc3RydWN0IGRtYV9idWYgKmRidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiAg IAlpZiAoIXZhZGRyKQ0KPiAgIAkJcmV0dXJuIC1FSU5WQUw7DQo+ICAgDQo+IC0JZG1hX2J1 Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgdmFkZHIpOw0KPiArCWlvc3lzX21hcF9zZXRfdmFkZHIo bWFwLCB2YWRkcik7DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gQEAgLTczNyw3 ICs3MzcsNyBAQCBzdGF0aWMgdm9pZCB2YjJfZGNfdW5tYXBfZG1hYnVmKHZvaWQgKm1lbV9w cml2KQ0KPiAgIHsNCj4gICAJc3RydWN0IHZiMl9kY19idWYgKmJ1ZiA9IG1lbV9wcml2Ow0K PiAgIAlzdHJ1Y3Qgc2dfdGFibGUgKnNndCA9IGJ1Zi0+ZG1hX3NndDsNCj4gLQlzdHJ1Y3Qg ZG1hX2J1Zl9tYXAgbWFwID0gRE1BX0JVRl9NQVBfSU5JVF9WQUREUihidWYtPnZhZGRyKTsN Cj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcCA9IElPU1lTX01BUF9JTklUX1ZBRERSKGJ1Zi0+ dmFkZHIpOw0KPiAgIA0KPiAgIAlpZiAoV0FSTl9PTighYnVmLT5kYl9hdHRhY2gpKSB7DQo+ ICAgCQlwcl9lcnIoInRyeWluZyB0byB1bnBpbiBhIG5vdCBhdHRhY2hlZCBidWZmZXJcbiIp Ow0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVv YnVmMi1kbWEtc2cuYyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1 ZjItZG1hLXNnLmMNCj4gaW5kZXggOTBhY2FmZDlhMjkwLi5mOGEyMWM1NjBhZDIgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItZG1h LXNnLmMNCj4gKysrIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVm Mi1kbWEtc2cuYw0KPiBAQCAtMzAzLDcgKzMwMyw3IEBAIHN0YXRpYyB2b2lkIHZiMl9kbWFf c2dfcHV0X3VzZXJwdHIodm9pZCAqYnVmX3ByaXYpDQo+ICAgc3RhdGljIHZvaWQgKnZiMl9k bWFfc2dfdmFkZHIoc3RydWN0IHZiMl9idWZmZXIgKnZiLCB2b2lkICpidWZfcHJpdikNCj4g ICB7DQo+ICAgCXN0cnVjdCB2YjJfZG1hX3NnX2J1ZiAqYnVmID0gYnVmX3ByaXY7DQo+IC0J c3RydWN0IGRtYV9idWZfbWFwIG1hcDsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcDsNCj4g ICAJaW50IHJldDsNCj4gICANCj4gICAJQlVHX09OKCFidWYpOw0KPiBAQCAtNDkyLDExICs0 OTIsMTIgQEAgdmIyX2RtYV9zZ19kbWFidWZfb3BzX2VuZF9jcHVfYWNjZXNzKHN0cnVjdCBk bWFfYnVmICpkYnVmLA0KPiAgIAlyZXR1cm4gMDsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMg aW50IHZiMl9kbWFfc2dfZG1hYnVmX29wc192bWFwKHN0cnVjdCBkbWFfYnVmICpkYnVmLCBz dHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gK3N0YXRpYyBpbnQgdmIyX2RtYV9zZ19kbWFi dWZfb3BzX3ZtYXAoc3RydWN0IGRtYV9idWYgKmRidWYsDQo+ICsJCQkJICAgICAgc3RydWN0 IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IHZiMl9kbWFfc2dfYnVmICpi dWYgPSBkYnVmLT5wcml2Ow0KPiAgIA0KPiAtCWRtYV9idWZfbWFwX3NldF92YWRkcihtYXAs IGJ1Zi0+dmFkZHIpOw0KPiArCWlvc3lzX21hcF9zZXRfdmFkZHIobWFwLCBidWYtPnZhZGRy KTsNCj4gICANCj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiBAQCAtNTgxLDcgKzU4Miw3IEBA IHN0YXRpYyB2b2lkIHZiMl9kbWFfc2dfdW5tYXBfZG1hYnVmKHZvaWQgKm1lbV9wcml2KQ0K PiAgIHsNCj4gICAJc3RydWN0IHZiMl9kbWFfc2dfYnVmICpidWYgPSBtZW1fcHJpdjsNCj4g ICAJc3RydWN0IHNnX3RhYmxlICpzZ3QgPSBidWYtPmRtYV9zZ3Q7DQo+IC0Jc3RydWN0IGRt YV9idWZfbWFwIG1hcCA9IERNQV9CVUZfTUFQX0lOSVRfVkFERFIoYnVmLT52YWRkcik7DQo+ ICsJc3RydWN0IGlvc3lzX21hcCBtYXAgPSBJT1NZU19NQVBfSU5JVF9WQUREUihidWYtPnZh ZGRyKTsNCj4gICANCj4gICAJaWYgKFdBUk5fT04oIWJ1Zi0+ZGJfYXR0YWNoKSkgew0KPiAg IAkJcHJfZXJyKCJ0cnlpbmcgdG8gdW5waW4gYSBub3QgYXR0YWNoZWQgYnVmZmVyXG4iKTsN Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1 ZjItdm1hbGxvYy5jIGIvZHJpdmVycy9tZWRpYS9jb21tb24vdmlkZW9idWYyL3ZpZGVvYnVm Mi12bWFsbG9jLmMNCj4gaW5kZXggMGJiZmVhNjY1NTRmLi45NDgxNTJmMTU5NmIgMTAwNjQ0 DQo+IC0tLSBhL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1ZjItdm1h bGxvYy5jDQo+ICsrKyBiL2RyaXZlcnMvbWVkaWEvY29tbW9uL3ZpZGVvYnVmMi92aWRlb2J1 ZjItdm1hbGxvYy5jDQo+IEBAIC0zMTIsMTEgKzMxMiwxMiBAQCBzdGF0aWMgdm9pZCB2YjJf dm1hbGxvY19kbWFidWZfb3BzX3JlbGVhc2Uoc3RydWN0IGRtYV9idWYgKmRidWYpDQo+ICAg CXZiMl92bWFsbG9jX3B1dChkYnVmLT5wcml2KTsNCj4gICB9DQo+ICAgDQo+IC1zdGF0aWMg aW50IHZiMl92bWFsbG9jX2RtYWJ1Zl9vcHNfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZGJ1Ziwg c3RydWN0IGRtYV9idWZfbWFwICptYXApDQo+ICtzdGF0aWMgaW50IHZiMl92bWFsbG9jX2Rt YWJ1Zl9vcHNfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZGJ1ZiwNCj4gKwkJCQkgICAgICAgc3Ry dWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IHZiMl92bWFsbG9jX2J1 ZiAqYnVmID0gZGJ1Zi0+cHJpdjsNCj4gICANCj4gLQlkbWFfYnVmX21hcF9zZXRfdmFkZHIo bWFwLCBidWYtPnZhZGRyKTsNCj4gKwlpb3N5c19tYXBfc2V0X3ZhZGRyKG1hcCwgYnVmLT52 YWRkcik7DQo+ICAgDQo+ICAgCXJldHVybiAwOw0KPiAgIH0NCj4gQEAgLTM3Miw3ICszNzMs NyBAQCBzdGF0aWMgc3RydWN0IGRtYV9idWYgKnZiMl92bWFsbG9jX2dldF9kbWFidWYoc3Ry dWN0IHZiMl9idWZmZXIgKnZiLA0KPiAgIHN0YXRpYyBpbnQgdmIyX3ZtYWxsb2NfbWFwX2Rt YWJ1Zih2b2lkICptZW1fcHJpdikNCj4gICB7DQo+ICAgCXN0cnVjdCB2YjJfdm1hbGxvY19i dWYgKmJ1ZiA9IG1lbV9wcml2Ow0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7DQo+ICsJ c3RydWN0IGlvc3lzX21hcCBtYXA7DQo+ICAgCWludCByZXQ7DQo+ICAgDQo+ICAgCXJldCA9 IGRtYV9idWZfdm1hcChidWYtPmRidWYsICZtYXApOw0KPiBAQCAtMzg2LDcgKzM4Nyw3IEBA IHN0YXRpYyBpbnQgdmIyX3ZtYWxsb2NfbWFwX2RtYWJ1Zih2b2lkICptZW1fcHJpdikNCj4g ICBzdGF0aWMgdm9pZCB2YjJfdm1hbGxvY191bm1hcF9kbWFidWYodm9pZCAqbWVtX3ByaXYp DQo+ICAgew0KPiAgIAlzdHJ1Y3QgdmIyX3ZtYWxsb2NfYnVmICpidWYgPSBtZW1fcHJpdjsN Cj4gLQlzdHJ1Y3QgZG1hX2J1Zl9tYXAgbWFwID0gRE1BX0JVRl9NQVBfSU5JVF9WQUREUihi dWYtPnZhZGRyKTsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcCA9IElPU1lTX01BUF9JTklU X1ZBRERSKGJ1Zi0+dmFkZHIpOw0KPiAgIA0KPiAgIAlkbWFfYnVmX3Z1bm1hcChidWYtPmRi dWYsICZtYXApOw0KPiAgIAlidWYtPnZhZGRyID0gTlVMTDsNCj4gQEAgLTM5NSw3ICszOTYs NyBAQCBzdGF0aWMgdm9pZCB2YjJfdm1hbGxvY191bm1hcF9kbWFidWYodm9pZCAqbWVtX3By aXYpDQo+ICAgc3RhdGljIHZvaWQgdmIyX3ZtYWxsb2NfZGV0YWNoX2RtYWJ1Zih2b2lkICpt ZW1fcHJpdikNCj4gICB7DQo+ICAgCXN0cnVjdCB2YjJfdm1hbGxvY19idWYgKmJ1ZiA9IG1l bV9wcml2Ow0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXAgPSBETUFfQlVGX01BUF9JTklU X1ZBRERSKGJ1Zi0+dmFkZHIpOw0KPiArCXN0cnVjdCBpb3N5c19tYXAgbWFwID0gSU9TWVNf TUFQX0lOSVRfVkFERFIoYnVmLT52YWRkcik7DQo+ICAgDQo+ICAgCWlmIChidWYtPnZhZGRy KQ0KPiAgIAkJZG1hX2J1Zl92dW5tYXAoYnVmLT5kYnVmLCAmbWFwKTsNCj4gZGlmZiAtLWdp dCBhL2RyaXZlcnMvbWlzYy9mYXN0cnBjLmMgYi9kcml2ZXJzL21pc2MvZmFzdHJwYy5jDQo+ IGluZGV4IDRjY2JmNDNlNmJmYS4uNWMwNTAzNjU1MjEyIDEwMDY0NA0KPiAtLS0gYS9kcml2 ZXJzL21pc2MvZmFzdHJwYy5jDQo+ICsrKyBiL2RyaXZlcnMvbWlzYy9mYXN0cnBjLmMNCj4g QEAgLTU4NywxMSArNTg3LDExIEBAIHN0YXRpYyB2b2lkIGZhc3RycGNfZG1hX2J1Zl9kZXRh dGNoKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsDQo+ICAgCWtmcmVlKGEpOw0KPiAgIH0NCj4g ICANCj4gLXN0YXRpYyBpbnQgZmFzdHJwY192bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFidWYs IHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArc3RhdGljIGludCBmYXN0cnBjX3ZtYXAo c3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsN Cj4gICAJc3RydWN0IGZhc3RycGNfYnVmICpidWYgPSBkbWFidWYtPnByaXY7DQo+ICAgDQo+ IC0JZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyKG1hcCwgYnVmLT52aXJ0KTsNCj4gKwlpb3N5c19t YXBfc2V0X3ZhZGRyKG1hcCwgYnVmLT52aXJ0KTsNCj4gICANCj4gICAJcmV0dXJuIDA7DQo+ ICAgfQ0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2NhY2hlLmggYi9pbmNsdWRl L2RybS9kcm1fY2FjaGUuaA0KPiBpbmRleCBjYzlkZTE2MzJkZDMuLjIyZGViMjE2YjU5YyAx MDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NhY2hlLmgNCj4gKysrIGIvaW5jbHVk ZS9kcm0vZHJtX2NhY2hlLmgNCj4gQEAgLTM1LDcgKzM1LDcgQEANCj4gICANCj4gICAjaW5j bHVkZSA8bGludXgvc2NhdHRlcmxpc3QuaD4NCj4gICANCj4gLXN0cnVjdCBkbWFfYnVmX21h cDsNCj4gK3N0cnVjdCBpb3N5c19tYXA7DQo+ICAgDQo+ICAgdm9pZCBkcm1fY2xmbHVzaF9w YWdlcyhzdHJ1Y3QgcGFnZSAqcGFnZXNbXSwgdW5zaWduZWQgbG9uZyBudW1fcGFnZXMpOw0K PiAgIHZvaWQgZHJtX2NsZmx1c2hfc2coc3RydWN0IHNnX3RhYmxlICpzdCk7DQo+IEBAIC03 NCw3ICs3NCw3IEBAIHN0YXRpYyBpbmxpbmUgYm9vbCBkcm1fYXJjaF9jYW5fd2NfbWVtb3J5 KHZvaWQpDQo+ICAgDQo+ICAgdm9pZCBkcm1fbWVtY3B5X2luaXRfZWFybHkodm9pZCk7DQo+ ICAgDQo+IC12b2lkIGRybV9tZW1jcHlfZnJvbV93YyhzdHJ1Y3QgZG1hX2J1Zl9tYXAgKmRz dCwNCj4gLQkJCWNvbnN0IHN0cnVjdCBkbWFfYnVmX21hcCAqc3JjLA0KPiArdm9pZCBkcm1f bWVtY3B5X2Zyb21fd2Moc3RydWN0IGlvc3lzX21hcCAqZHN0LA0KPiArCQkJY29uc3Qgc3Ry dWN0IGlvc3lzX21hcCAqc3JjLA0KPiAgIAkJCXVuc2lnbmVkIGxvbmcgbGVuKTsNCj4gICAj ZW5kaWYNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9jbGllbnQuaCBiL2luY2x1 ZGUvZHJtL2RybV9jbGllbnQuaA0KPiBpbmRleCBmMDdmMmZiMDJlNzUuLjRmYzgwMThlZGRk YSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2NsaWVudC5oDQo+ICsrKyBiL2lu Y2x1ZGUvZHJtL2RybV9jbGllbnQuaA0KPiBAQCAtMyw3ICszLDcgQEANCj4gICAjaWZuZGVm IF9EUk1fQ0xJRU5UX0hfDQo+ICAgI2RlZmluZSBfRFJNX0NMSUVOVF9IXw0KPiAgIA0KPiAt I2luY2x1ZGUgPGxpbnV4L2RtYS1idWYtbWFwLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9z eXMtbWFwLmg+DQo+ICAgI2luY2x1ZGUgPGxpbnV4L2xvY2tkZXAuaD4NCj4gICAjaW5jbHVk ZSA8bGludXgvbXV0ZXguaD4NCj4gICAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4NCj4gQEAg LTE0NCw3ICsxNDQsNyBAQCBzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgew0KPiAgIAkvKioN Cj4gICAJICogQG1hcDogVmlydHVhbCBhZGRyZXNzIGZvciB0aGUgYnVmZmVyDQo+ICAgCSAq Lw0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBt YXA7DQo+ICAgDQo+ICAgCS8qKg0KPiAgIAkgKiBAZmI6IERSTSBmcmFtZWJ1ZmZlcg0KPiBA QCAtMTU2LDcgKzE1Niw4IEBAIHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqDQo+ICAgZHJt X2NsaWVudF9mcmFtZWJ1ZmZlcl9jcmVhdGUoc3RydWN0IGRybV9jbGllbnRfZGV2ICpjbGll bnQsIHUzMiB3aWR0aCwgdTMyIGhlaWdodCwgdTMyIGZvcm1hdCk7DQo+ICAgdm9pZCBkcm1f Y2xpZW50X2ZyYW1lYnVmZmVyX2RlbGV0ZShzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1 ZmZlcik7DQo+ICAgaW50IGRybV9jbGllbnRfZnJhbWVidWZmZXJfZmx1c2goc3RydWN0IGRy bV9jbGllbnRfYnVmZmVyICpidWZmZXIsIHN0cnVjdCBkcm1fcmVjdCAqcmVjdCk7DQo+IC1p bnQgZHJtX2NsaWVudF9idWZmZXJfdm1hcChzdHJ1Y3QgZHJtX2NsaWVudF9idWZmZXIgKmJ1 ZmZlciwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOw0KPiAraW50IGRybV9jbGllbnRfYnVm ZmVyX3ZtYXAoc3RydWN0IGRybV9jbGllbnRfYnVmZmVyICpidWZmZXIsDQo+ICsJCQkgICBz dHJ1Y3QgaW9zeXNfbWFwICptYXApOw0KPiAgIHZvaWQgZHJtX2NsaWVudF9idWZmZXJfdnVu bWFwKHN0cnVjdCBkcm1fY2xpZW50X2J1ZmZlciAqYnVmZmVyKTsNCj4gICANCj4gICBpbnQg ZHJtX2NsaWVudF9tb2Rlc2V0X2NyZWF0ZShzdHJ1Y3QgZHJtX2NsaWVudF9kZXYgKmNsaWVu dCk7DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS9kcm1fZ2VtLmggYi9pbmNsdWRlL2Ry bS9kcm1fZ2VtLmgNCj4gaW5kZXggMzVlN2Y0NGMyYTc1Li5lMjk0MWNlZTE0YjYgMTAwNjQ0 DQo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9nZW0uaA0KPiArKysgYi9pbmNsdWRlL2RybS9k cm1fZ2VtLmgNCj4gQEAgLTM5LDcgKzM5LDcgQEANCj4gICANCj4gICAjaW5jbHVkZSA8ZHJt L2RybV92bWFfbWFuYWdlci5oPg0KPiAgIA0KPiAtc3RydWN0IGRtYV9idWZfbWFwOw0KPiAr c3RydWN0IGlvc3lzX21hcDsNCj4gICBzdHJ1Y3QgZHJtX2dlbV9vYmplY3Q7DQo+ICAgDQo+ ICAgLyoqDQo+IEBAIC0xMzksNyArMTM5LDcgQEAgc3RydWN0IGRybV9nZW1fb2JqZWN0X2Z1 bmNzIHsNCj4gICAJICoNCj4gICAJICogVGhpcyBjYWxsYmFjayBpcyBvcHRpb25hbC4NCj4g ICAJICovDQo+IC0JaW50ICgqdm1hcCkoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0 cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsNCj4gKwlpbnQgKCp2bWFwKShzdHJ1Y3QgZHJtX2dl bV9vYmplY3QgKm9iaiwgc3RydWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gICANCj4gICAJLyoq DQo+ICAgCSAqIEB2dW5tYXA6DQo+IEBAIC0xNDksNyArMTQ5LDcgQEAgc3RydWN0IGRybV9n ZW1fb2JqZWN0X2Z1bmNzIHsNCj4gICAJICoNCj4gICAJICogVGhpcyBjYWxsYmFjayBpcyBv cHRpb25hbC4NCj4gICAJICovDQo+IC0Jdm9pZCAoKnZ1bm1hcCkoc3RydWN0IGRybV9nZW1f b2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsNCj4gKwl2b2lkICgqdnVu bWFwKShzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9iaiwgc3RydWN0IGlvc3lzX21hcCAqbWFw KTsNCj4gICANCj4gICAJLyoqDQo+ICAgCSAqIEBtbWFwOg0KPiBkaWZmIC0tZ2l0IGEvaW5j bHVkZS9kcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZ2Vt X2F0b21pY19oZWxwZXIuaA0KPiBpbmRleCAwYjFlMmRkMmFjM2YuLjZlMzMxOWU5MDAxYSAx MDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9kcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmgNCj4g KysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV9hdG9taWNfaGVscGVyLmgNCj4gQEAgLTMsNyAr Myw3IEBADQo+ICAgI2lmbmRlZiBfX0RSTV9HRU1fQVRPTUlDX0hFTFBFUl9IX18NCj4gICAj ZGVmaW5lIF9fRFJNX0dFTV9BVE9NSUNfSEVMUEVSX0hfXw0KPiAgIA0KPiAtI2luY2x1ZGUg PGxpbnV4L2RtYS1idWYtbWFwLmg+DQo+ICsjaW5jbHVkZSA8bGludXgvaW9zeXMtbWFwLmg+ DQo+ICAgDQo+ICAgI2luY2x1ZGUgPGRybS9kcm1fZm91cmNjLmg+DQo+ICAgI2luY2x1ZGUg PGRybS9kcm1fcGxhbmUuaD4NCj4gQEAgLTU5LDcgKzU5LDcgQEAgc3RydWN0IGRybV9zaGFk b3dfcGxhbmVfc3RhdGUgew0KPiAgIAkgKiBUaGUgbWVtb3J5IG1hcHBpbmdzIHN0b3JlZCBp biBtYXAgc2hvdWxkIGJlIGVzdGFibGlzaGVkIGluIHRoZSBwbGFuZSdzDQo+ICAgCSAqIHBy ZXBhcmVfZmIgY2FsbGJhY2sgYW5kIHJlbW92ZWQgaW4gdGhlIGNsZWFudXBfZmIgY2FsbGJh Y2suDQo+ICAgCSAqLw0KPiAtCXN0cnVjdCBkbWFfYnVmX21hcCBtYXBbRFJNX0ZPUk1BVF9N QVhfUExBTkVTXTsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIG1hcFtEUk1fRk9STUFUX01BWF9Q TEFORVNdOw0KPiAgIA0KPiAgIAkvKioNCj4gICAJICogQGRhdGE6IEFkZHJlc3Mgb2YgZWFj aCBmcmFtZWJ1ZmZlciBCTydzIGRhdGENCj4gQEAgLTY3LDcgKzY3LDcgQEAgc3RydWN0IGRy bV9zaGFkb3dfcGxhbmVfc3RhdGUgew0KPiAgIAkgKiBUaGUgYWRkcmVzcyBvZiB0aGUgZGF0 YSBzdG9yZWQgaW4gZWFjaCBtYXBwaW5nLiBUaGlzIGlzIGRpZmZlcmVudA0KPiAgIAkgKiBm b3IgZnJhbWVidWZmZXJzIHdpdGggbm9uLXplcm8gb2Zmc2V0IGZpZWxkcy4NCj4gICAJICov DQo+IC0Jc3RydWN0IGRtYV9idWZfbWFwIGRhdGFbRFJNX0ZPUk1BVF9NQVhfUExBTkVTXTsN Cj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIGRhdGFbRFJNX0ZPUk1BVF9NQVhfUExBTkVTXTsNCj4g ICB9Ow0KPiAgIA0KPiAgIC8qKg0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dl bV9jbWFfaGVscGVyLmggYi9pbmNsdWRlL2RybS9kcm1fZ2VtX2NtYV9oZWxwZXIuaA0KPiBp bmRleCBhZGI1MDdhOWRiZjAuLmZiZGE0Y2U1ZDVmYiAxMDA2NDQNCj4gLS0tIGEvaW5jbHVk ZS9kcm0vZHJtX2dlbV9jbWFfaGVscGVyLmgNCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dl bV9jbWFfaGVscGVyLmgNCj4gQEAgLTM4LDcgKzM4LDggQEAgdm9pZCBkcm1fZ2VtX2NtYV9m cmVlKHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmopOw0KPiAgIHZvaWQgZHJt X2dlbV9jbWFfcHJpbnRfaW5mbyhjb25zdCBzdHJ1Y3QgZHJtX2dlbV9jbWFfb2JqZWN0ICpj bWFfb2JqLA0KPiAgIAkJCSAgICBzdHJ1Y3QgZHJtX3ByaW50ZXIgKnAsIHVuc2lnbmVkIGlu dCBpbmRlbnQpOw0KPiAgIHN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9jbWFfZ2V0X3NnX3Rh YmxlKHN0cnVjdCBkcm1fZ2VtX2NtYV9vYmplY3QgKmNtYV9vYmopOw0KPiAtaW50IGRybV9n ZW1fY21hX3ZtYXAoc3RydWN0IGRybV9nZW1fY21hX29iamVjdCAqY21hX29iaiwgc3RydWN0 IGRtYV9idWZfbWFwICptYXApOw0KPiAraW50IGRybV9nZW1fY21hX3ZtYXAoc3RydWN0IGRy bV9nZW1fY21hX29iamVjdCAqY21hX29iaiwNCj4gKwkJICAgICBzdHJ1Y3QgaW9zeXNfbWFw ICptYXApOw0KPiAgIGludCBkcm1fZ2VtX2NtYV9tbWFwKHN0cnVjdCBkcm1fZ2VtX2NtYV9v YmplY3QgKmNtYV9vYmosIHN0cnVjdCB2bV9hcmVhX3N0cnVjdCAqdm1hKTsNCj4gICANCj4g ICBleHRlcm4gY29uc3Qgc3RydWN0IHZtX29wZXJhdGlvbnNfc3RydWN0IGRybV9nZW1fY21h X3ZtX29wczsNCj4gQEAgLTEwNiw3ICsxMDcsOCBAQCBzdGF0aWMgaW5saW5lIHN0cnVjdCBz Z190YWJsZSAqZHJtX2dlbV9jbWFfb2JqZWN0X2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dl bV9vYg0KPiAgICAqIFJldHVybnM6DQo+ICAgICogMCBvbiBzdWNjZXNzIG9yIGEgbmVnYXRp dmUgZXJyb3IgY29kZSBvbiBmYWlsdXJlLg0KPiAgICAqLw0KPiAtc3RhdGljIGlubGluZSBp bnQgZHJtX2dlbV9jbWFfb2JqZWN0X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmos IHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0KPiArc3RhdGljIGlubGluZSBpbnQgZHJtX2dl bV9jbWFfb2JqZWN0X3ZtYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosDQo+ICsJCQkJ CSAgc3RydWN0IGlvc3lzX21hcCAqbWFwKQ0KPiAgIHsNCj4gICAJc3RydWN0IGRybV9nZW1f Y21hX29iamVjdCAqY21hX29iaiA9IHRvX2RybV9nZW1fY21hX29iaihvYmopOw0KPiAgIA0K PiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIu aCBiL2luY2x1ZGUvZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmgNCj4gaW5kZXgg OTA1NzI3NzE5ZWFkLi4xMDkxZTRmYTA4Y2IgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvZHJt L2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmgNCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJt X2dlbV9mcmFtZWJ1ZmZlcl9oZWxwZXIuaA0KPiBAQCAtMiw3ICsyLDcgQEANCj4gICAjZGVm aW5lIF9fRFJNX0dFTV9GQl9IRUxQRVJfSF9fDQo+ICAgDQo+ICAgI2luY2x1ZGUgPGxpbnV4 L2RtYS1idWYuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPg0KPiArI2lu Y2x1ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAgIA0KPiAgICNpbmNsdWRlIDxkcm0vZHJt X2ZvdXJjYy5oPg0KPiAgIA0KPiBAQCAtNDAsMTAgKzQwLDEwIEBAIGRybV9nZW1fZmJfY3Jl YXRlX3dpdGhfZGlydHkoc3RydWN0IGRybV9kZXZpY2UgKmRldiwgc3RydWN0IGRybV9maWxl ICpmaWxlLA0KPiAgIAkJCSAgICAgY29uc3Qgc3RydWN0IGRybV9tb2RlX2ZiX2NtZDIgKm1v ZGVfY21kKTsNCj4gICANCj4gICBpbnQgZHJtX2dlbV9mYl92bWFwKHN0cnVjdCBkcm1fZnJh bWVidWZmZXIgKmZiLA0KPiAtCQkgICAgc3RydWN0IGRtYV9idWZfbWFwIG1hcFtzdGF0aWMg RFJNX0ZPUk1BVF9NQVhfUExBTkVTXSwNCj4gLQkJICAgIHN0cnVjdCBkbWFfYnVmX21hcCBk YXRhW0RSTV9GT1JNQVRfTUFYX1BMQU5FU10pOw0KPiArCQkgICAgc3RydWN0IGlvc3lzX21h cCBtYXBbc3RhdGljIERSTV9GT1JNQVRfTUFYX1BMQU5FU10sDQo+ICsJCSAgICBzdHJ1Y3Qg aW9zeXNfbWFwIGRhdGFbRFJNX0ZPUk1BVF9NQVhfUExBTkVTXSk7DQo+ICAgdm9pZCBkcm1f Z2VtX2ZiX3Z1bm1hcChzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVyICpmYiwNCj4gLQkJICAgICAg IHN0cnVjdCBkbWFfYnVmX21hcCBtYXBbc3RhdGljIERSTV9GT1JNQVRfTUFYX1BMQU5FU10p Ow0KPiArCQkgICAgICAgc3RydWN0IGlvc3lzX21hcCBtYXBbc3RhdGljIERSTV9GT1JNQVRf TUFYX1BMQU5FU10pOw0KPiAgIGludCBkcm1fZ2VtX2ZiX2JlZ2luX2NwdV9hY2Nlc3Moc3Ry dWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7 DQo+ICAgdm9pZCBkcm1fZ2VtX2ZiX2VuZF9jcHVfYWNjZXNzKHN0cnVjdCBkcm1fZnJhbWVi dWZmZXIgKmZiLCBlbnVtIGRtYV9kYXRhX2RpcmVjdGlvbiBkaXIpOw0KPiAgIA0KPiBkaWZm IC0tZ2l0IGEvaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaCBiL2luY2x1ZGUv ZHJtL2RybV9nZW1fc2htZW1faGVscGVyLmgNCj4gaW5kZXggMzExZDY2YzljZjRiLi42ODM0 N2I2M2ZjNzEgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvZHJtL2RybV9nZW1fc2htZW1faGVs cGVyLmgNCj4gKysrIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV9zaG1lbV9oZWxwZXIuaA0KPiBA QCAtMTEzLDggKzExMywxMCBAQCBpbnQgZHJtX2dlbV9zaG1lbV9nZXRfcGFnZXMoc3RydWN0 IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSk7DQo+ICAgdm9pZCBkcm1fZ2VtX3NobWVt X3B1dF9wYWdlcyhzdHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtKTsNCj4gICBp bnQgZHJtX2dlbV9zaG1lbV9waW4oc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1l bSk7DQo+ICAgdm9pZCBkcm1fZ2VtX3NobWVtX3VucGluKHN0cnVjdCBkcm1fZ2VtX3NobWVt X29iamVjdCAqc2htZW0pOw0KPiAtaW50IGRybV9nZW1fc2htZW1fdm1hcChzdHJ1Y3QgZHJt X2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7DQo+ IC12b2lkIGRybV9nZW1fc2htZW1fdnVubWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVj dCAqc2htZW0sIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsNCj4gK2ludCBkcm1fZ2VtX3No bWVtX3ZtYXAoc3RydWN0IGRybV9nZW1fc2htZW1fb2JqZWN0ICpzaG1lbSwNCj4gKwkJICAg ICAgIHN0cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICt2b2lkIGRybV9nZW1fc2htZW1fdnVu bWFwKHN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0sDQo+ICsJCQkgIHN0cnVj dCBpb3N5c19tYXAgKm1hcCk7DQo+ICAgaW50IGRybV9nZW1fc2htZW1fbW1hcChzdHJ1Y3Qg ZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3QgKnZt YSk7DQo+ICAgDQo+ICAgaW50IGRybV9nZW1fc2htZW1fbWFkdmlzZShzdHJ1Y3QgZHJtX2dl bV9zaG1lbV9vYmplY3QgKnNobWVtLCBpbnQgbWFkdik7DQo+IEBAIC0yMjYsNyArMjI4LDgg QEAgc3RhdGljIGlubGluZSBzdHJ1Y3Qgc2dfdGFibGUgKmRybV9nZW1fc2htZW1fb2JqZWN0 X2dldF9zZ190YWJsZShzdHJ1Y3QgZHJtX2dlbV8NCj4gICAgKiBSZXR1cm5zOg0KPiAgICAq IDAgb24gc3VjY2VzcyBvciBhIG5lZ2F0aXZlIGVycm9yIGNvZGUgb24gZmFpbHVyZS4NCj4g ICAgKi8NCj4gLXN0YXRpYyBpbmxpbmUgaW50IGRybV9nZW1fc2htZW1fb2JqZWN0X3ZtYXAo c3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKQ0K PiArc3RhdGljIGlubGluZSBpbnQgZHJtX2dlbV9zaG1lbV9vYmplY3Rfdm1hcChzdHJ1Y3Qg ZHJtX2dlbV9vYmplY3QgKm9iaiwNCj4gKwkJCQkJICAgIHN0cnVjdCBpb3N5c19tYXAgKm1h cCkNCj4gICB7DQo+ICAgCXN0cnVjdCBkcm1fZ2VtX3NobWVtX29iamVjdCAqc2htZW0gPSB0 b19kcm1fZ2VtX3NobWVtX29iaihvYmopOw0KPiAgIA0KPiBAQCAtMjQxLDcgKzI0NCw4IEBA IHN0YXRpYyBpbmxpbmUgaW50IGRybV9nZW1fc2htZW1fb2JqZWN0X3ZtYXAoc3RydWN0IGRy bV9nZW1fb2JqZWN0ICpvYmosIHN0cnVjdCBkDQo+ICAgICogVGhpcyBmdW5jdGlvbiB3cmFw cyBkcm1fZ2VtX3NobWVtX3Z1bm1hcCgpLiBEcml2ZXJzIHRoYXQgZW1wbG95IHRoZSBzaG1l bSBoZWxwZXJzIHNob3VsZA0KPiAgICAqIHVzZSBpdCBhcyB0aGVpciAmZHJtX2dlbV9vYmpl Y3RfZnVuY3MudnVubWFwIGhhbmRsZXIuDQo+ICAgICovDQo+IC1zdGF0aWMgaW5saW5lIHZv aWQgZHJtX2dlbV9zaG1lbV9vYmplY3RfdnVubWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAq b2JqLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkNCj4gK3N0YXRpYyBpbmxpbmUgdm9pZCBk cm1fZ2VtX3NobWVtX29iamVjdF92dW5tYXAoc3RydWN0IGRybV9nZW1fb2JqZWN0ICpvYmos DQo+ICsJCQkJCSAgICAgICBzdHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICAgew0KPiAgIAlz dHJ1Y3QgZHJtX2dlbV9zaG1lbV9vYmplY3QgKnNobWVtID0gdG9fZHJtX2dlbV9zaG1lbV9v Ymoob2JqKTsNCj4gICANCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUvZHJtL2RybV9nZW1fdHRt X2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV90dG1faGVscGVyLmgNCj4gaW5kZXgg NzgwNDBmNmNjNmYzLi40YzAwM2I0ZjE3M2UgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvZHJt L2RybV9nZW1fdHRtX2hlbHBlci5oDQo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9nZW1fdHRt X2hlbHBlci5oDQo+IEBAIC0xMCw3ICsxMCw3IEBADQo+ICAgI2luY2x1ZGUgPGRybS90dG0v dHRtX2JvX2FwaS5oPg0KPiAgICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9ib19kcml2ZXIuaD4N Cj4gICANCj4gLXN0cnVjdCBkbWFfYnVmX21hcDsNCj4gK3N0cnVjdCBpb3N5c19tYXA7DQo+ ICAgDQo+ICAgI2RlZmluZSBkcm1fZ2VtX3R0bV9vZl9nZW0oZ2VtX29iaikgXA0KPiAgIAlj b250YWluZXJfb2YoZ2VtX29iaiwgc3RydWN0IHR0bV9idWZmZXJfb2JqZWN0LCBiYXNlKQ0K PiBAQCAtMTgsOSArMTgsOSBAQCBzdHJ1Y3QgZG1hX2J1Zl9tYXA7DQo+ICAgdm9pZCBkcm1f Z2VtX3R0bV9wcmludF9pbmZvKHN0cnVjdCBkcm1fcHJpbnRlciAqcCwgdW5zaWduZWQgaW50 IGluZGVudCwNCj4gICAJCQkgICAgY29uc3Qgc3RydWN0IGRybV9nZW1fb2JqZWN0ICpnZW0p Ow0KPiAgIGludCBkcm1fZ2VtX3R0bV92bWFwKHN0cnVjdCBkcm1fZ2VtX29iamVjdCAqZ2Vt LA0KPiAtCQkgICAgIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsNCj4gKwkJICAgICBzdHJ1 Y3QgaW9zeXNfbWFwICptYXApOw0KPiAgIHZvaWQgZHJtX2dlbV90dG1fdnVubWFwKHN0cnVj dCBkcm1fZ2VtX29iamVjdCAqZ2VtLA0KPiAtCQkJc3RydWN0IGRtYV9idWZfbWFwICptYXAp Ow0KPiArCQkJc3RydWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gICBpbnQgZHJtX2dlbV90dG1f bW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKmdlbSwNCj4gICAJCSAgICAgc3RydWN0IHZt X2FyZWFfc3RydWN0ICp2bWEpOw0KPiAgIA0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9kcm0v ZHJtX2dlbV92cmFtX2hlbHBlci5oIGIvaW5jbHVkZS9kcm0vZHJtX2dlbV92cmFtX2hlbHBl ci5oDQo+IGluZGV4IGI0Y2UyN2E3Mjc3My4uYzA4M2ExZDcxY2Y0IDEwMDY0NA0KPiAtLS0g YS9pbmNsdWRlL2RybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmgNCj4gKysrIGIvaW5jbHVkZS9k cm0vZHJtX2dlbV92cmFtX2hlbHBlci5oDQo+IEBAIC0xMiw3ICsxMiw3IEBADQo+ICAgI2lu Y2x1ZGUgPGRybS90dG0vdHRtX2JvX2RyaXZlci5oPg0KPiAgIA0KPiAgICNpbmNsdWRlIDxs aW51eC9jb250YWluZXJfb2YuaD4NCj4gLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAgIA0KPiAgIHN0cnVjdCBk cm1fbW9kZV9jcmVhdGVfZHVtYjsNCj4gICBzdHJ1Y3QgZHJtX3BsYW5lOw0KPiBAQCAtNTEs NyArNTEsNyBAQCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Q7DQo+ICAgICovDQo+ICAgc3RydWN0 IGRybV9nZW1fdnJhbV9vYmplY3Qgew0KPiAgIAlzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Qg Ym87DQo+IC0Jc3RydWN0IGRtYV9idWZfbWFwIG1hcDsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFw IG1hcDsNCj4gICANCj4gICAJLyoqDQo+ICAgCSAqIEB2bWFwX3VzZV9jb3VudDoNCj4gQEAg LTk3LDggKzk3LDkgQEAgdm9pZCBkcm1fZ2VtX3ZyYW1fcHV0KHN0cnVjdCBkcm1fZ2VtX3Zy YW1fb2JqZWN0ICpnYm8pOw0KPiAgIHM2NCBkcm1fZ2VtX3ZyYW1fb2Zmc2V0KHN0cnVjdCBk cm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8pOw0KPiAgIGludCBkcm1fZ2VtX3ZyYW1fcGluKHN0 cnVjdCBkcm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sIHVuc2lnbmVkIGxvbmcgcGxfZmxhZyk7 DQo+ICAgaW50IGRybV9nZW1fdnJhbV91bnBpbihzdHJ1Y3QgZHJtX2dlbV92cmFtX29iamVj dCAqZ2JvKTsNCj4gLWludCBkcm1fZ2VtX3ZyYW1fdm1hcChzdHJ1Y3QgZHJtX2dlbV92cmFt X29iamVjdCAqZ2JvLCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7DQo+IC12b2lkIGRybV9n ZW1fdnJhbV92dW5tYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdibywgc3RydWN0 IGRtYV9idWZfbWFwICptYXApOw0KPiAraW50IGRybV9nZW1fdnJhbV92bWFwKHN0cnVjdCBk cm1fZ2VtX3ZyYW1fb2JqZWN0ICpnYm8sIHN0cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICt2 b2lkIGRybV9nZW1fdnJhbV92dW5tYXAoc3RydWN0IGRybV9nZW1fdnJhbV9vYmplY3QgKmdi bywNCj4gKwkJCSBzdHJ1Y3QgaW9zeXNfbWFwICptYXApOw0KPiAgIA0KPiAgIGludCBkcm1f Z2VtX3ZyYW1fZmlsbF9jcmVhdGVfZHVtYihzdHJ1Y3QgZHJtX2ZpbGUgKmZpbGUsDQo+ICAg CQkJCSAgc3RydWN0IGRybV9kZXZpY2UgKmRldiwNCj4gZGlmZiAtLWdpdCBhL2luY2x1ZGUv ZHJtL2RybV9wcmltZS5oIGIvaW5jbHVkZS9kcm0vZHJtX3ByaW1lLmgNCj4gaW5kZXggNTRm MmM1ODMwNWQyLi4yYTFkMDFlNWI1NmIgMTAwNjQ0DQo+IC0tLSBhL2luY2x1ZGUvZHJtL2Ry bV9wcmltZS5oDQo+ICsrKyBiL2luY2x1ZGUvZHJtL2RybV9wcmltZS5oDQo+IEBAIC01NCw3 ICs1NCw3IEBAIHN0cnVjdCBkZXZpY2U7DQo+ICAgc3RydWN0IGRtYV9idWZfZXhwb3J0X2lu Zm87DQo+ICAgc3RydWN0IGRtYV9idWY7DQo+ICAgc3RydWN0IGRtYV9idWZfYXR0YWNobWVu dDsNCj4gLXN0cnVjdCBkbWFfYnVmX21hcDsNCj4gK3N0cnVjdCBpb3N5c19tYXA7DQo+ICAg DQo+ICAgZW51bSBkbWFfZGF0YV9kaXJlY3Rpb247DQo+ICAgDQo+IEBAIC04Myw4ICs4Myw4 IEBAIHN0cnVjdCBzZ190YWJsZSAqZHJtX2dlbV9tYXBfZG1hX2J1ZihzdHJ1Y3QgZG1hX2J1 Zl9hdHRhY2htZW50ICphdHRhY2gsDQo+ICAgdm9pZCBkcm1fZ2VtX3VubWFwX2RtYV9idWYo c3RydWN0IGRtYV9idWZfYXR0YWNobWVudCAqYXR0YWNoLA0KPiAgIAkJCSAgIHN0cnVjdCBz Z190YWJsZSAqc2d0LA0KPiAgIAkJCSAgIGVudW0gZG1hX2RhdGFfZGlyZWN0aW9uIGRpcik7 DQo+IC1pbnQgZHJtX2dlbV9kbWFidWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAqZG1hX2J1Ziwg c3RydWN0IGRtYV9idWZfbWFwICptYXApOw0KPiAtdm9pZCBkcm1fZ2VtX2RtYWJ1Zl92dW5t YXAoc3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsN Cj4gK2ludCBkcm1fZ2VtX2RtYWJ1Zl92bWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBz dHJ1Y3QgaW9zeXNfbWFwICptYXApOw0KPiArdm9pZCBkcm1fZ2VtX2RtYWJ1Zl92dW5tYXAo c3RydWN0IGRtYV9idWYgKmRtYV9idWYsIHN0cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICAg DQo+ICAgaW50IGRybV9nZW1fcHJpbWVfbW1hcChzdHJ1Y3QgZHJtX2dlbV9vYmplY3QgKm9i aiwgc3RydWN0IHZtX2FyZWFfc3RydWN0ICp2bWEpOw0KPiAgIGludCBkcm1fZ2VtX2RtYWJ1 Zl9tbWFwKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLCBzdHJ1Y3Qgdm1fYXJlYV9zdHJ1Y3Qg KnZtYSk7DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oIGIv aW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGkuaA0KPiBpbmRleCBjMTdiMmRmOTE3OGIuLjE1 NWIxOWVlMTJmYiAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9ib19hcGku aA0KPiArKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX2JvX2FwaS5oDQo+IEBAIC00Nyw3ICs0 Nyw3IEBAIHN0cnVjdCB0dG1fZ2xvYmFsOw0KPiAgIA0KPiAgIHN0cnVjdCB0dG1fZGV2aWNl Ow0KPiAgIA0KPiAtc3RydWN0IGRtYV9idWZfbWFwOw0KPiArc3RydWN0IGlvc3lzX21hcDsN Cj4gICANCj4gICBzdHJ1Y3QgZHJtX21tX25vZGU7DQo+ICAgDQo+IEBAIC00ODEsMTcgKzQ4 MSwxNyBAQCB2b2lkIHR0bV9ib19rdW5tYXAoc3RydWN0IHR0bV9ib19rbWFwX29iaiAqbWFw KTsNCj4gICAgKiB0dG1fYm9fdm1hcA0KPiAgICAqDQo+ICAgICogQGJvOiBUaGUgYnVmZmVy IG9iamVjdC4NCj4gLSAqIEBtYXA6IHBvaW50ZXIgdG8gYSBzdHJ1Y3QgZG1hX2J1Zl9tYXAg cmVwcmVzZW50aW5nIHRoZSBtYXAuDQo+ICsgKiBAbWFwOiBwb2ludGVyIHRvIGEgc3RydWN0 IGlvc3lzX21hcCByZXByZXNlbnRpbmcgdGhlIG1hcC4NCj4gICAgKg0KPiAgICAqIFNldHMg dXAgYSBrZXJuZWwgdmlydHVhbCBtYXBwaW5nLCB1c2luZyBpb3JlbWFwIG9yIHZtYXAgdG8g dGhlDQo+ICAgICogZGF0YSBpbiB0aGUgYnVmZmVyIG9iamVjdC4gVGhlIHBhcmFtZXRlciBA bWFwIHJldHVybnMgdGhlIHZpcnR1YWwNCj4gLSAqIGFkZHJlc3MgYXMgc3RydWN0IGRtYV9i dWZfbWFwLiBVbm1hcCB0aGUgYnVmZmVyIHdpdGggdHRtX2JvX3Z1bm1hcCgpLg0KPiArICog YWRkcmVzcyBhcyBzdHJ1Y3QgaW9zeXNfbWFwLiBVbm1hcCB0aGUgYnVmZmVyIHdpdGggdHRt X2JvX3Z1bm1hcCgpLg0KPiAgICAqDQo+ICAgICogUmV0dXJucw0KPiAgICAqIC1FTk9NRU06 IE91dCBvZiBtZW1vcnkuDQo+ICAgICogLUVJTlZBTDogSW52YWxpZCByYW5nZS4NCj4gICAg Ki8NCj4gLWludCB0dG1fYm9fdm1hcChzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3QgKmJvLCBz dHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCk7DQo+ICtpbnQgdHRtX2JvX3ZtYXAoc3RydWN0IHR0 bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IGlvc3lzX21hcCAqbWFwKTsNCj4gICANCj4g ICAvKioNCj4gICAgKiB0dG1fYm9fdnVubWFwDQo+IEBAIC01MDEsNyArNTAxLDcgQEAgaW50 IHR0bV9ib192bWFwKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8sIHN0cnVjdCBkbWFf YnVmX21hcCAqbWFwKTsNCj4gICAgKg0KPiAgICAqIFVubWFwcyBhIGtlcm5lbCBtYXAgc2V0 IHVwIGJ5IHR0bV9ib192bWFwKCkuDQo+ICAgICovDQo+IC12b2lkIHR0bV9ib192dW5tYXAo c3RydWN0IHR0bV9idWZmZXJfb2JqZWN0ICpibywgc3RydWN0IGRtYV9idWZfbWFwICptYXAp Ow0KPiArdm9pZCB0dG1fYm9fdnVubWFwKHN0cnVjdCB0dG1fYnVmZmVyX29iamVjdCAqYm8s IHN0cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICAgDQo+ICAgLyoqDQo+ICAgICogdHRtX2Jv X21tYXBfb2JqIC0gbW1hcCBtZW1vcnkgYmFja2VkIGJ5IGEgdHRtIGJ1ZmZlciBvYmplY3Qu DQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2RybS90dG0vdHRtX2ttYXBfaXRlci5oIGIvaW5j bHVkZS9kcm0vdHRtL3R0bV9rbWFwX2l0ZXIuaA0KPiBpbmRleCA4YmIwMGZkMzlkNmMuLmNj NWMwOWEyMTFiNCAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9kcm0vdHRtL3R0bV9rbWFwX2l0 ZXIuaA0KPiArKysgYi9pbmNsdWRlL2RybS90dG0vdHRtX2ttYXBfaXRlci5oDQo+IEBAIC04 LDcgKzgsNyBAQA0KPiAgICNpbmNsdWRlIDxsaW51eC90eXBlcy5oPg0KPiAgIA0KPiAgIHN0 cnVjdCB0dG1fa21hcF9pdGVyOw0KPiAtc3RydWN0IGRtYV9idWZfbWFwOw0KPiArc3RydWN0 IGlvc3lzX21hcDsNCj4gICANCj4gICAvKioNCj4gICAgKiBzdHJ1Y3QgdHRtX2ttYXBfaXRl cl9vcHMgLSBPcHMgc3RydWN0dXJlIGZvciBhIHN0cnVjdA0KPiBAQCAtMjQsMjIgKzI0LDIy IEBAIHN0cnVjdCB0dG1fa21hcF9pdGVyX29wcyB7DQo+ICAgCSAqIGttYXBfbG9jYWwgc2Vt YW50aWNzLg0KPiAgIAkgKiBAcmVzX2l0ZXI6IFBvaW50ZXIgdG8gdGhlIHN0cnVjdCB0dG1f a21hcF9pdGVyIHJlcHJlc2VudGluZw0KPiAgIAkgKiB0aGUgcmVzb3VyY2UuDQo+IC0JICog QGRtYXA6IFRoZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAgaG9sZGluZyB0aGUgdmlydHVhbCBhZGRy ZXNzIGFmdGVyDQo+ICsJICogQGRtYXA6IFRoZSBzdHJ1Y3QgaW9zeXNfbWFwIGhvbGRpbmcg dGhlIHZpcnR1YWwgYWRkcmVzcyBhZnRlcg0KPiAgIAkgKiB0aGUgb3BlcmF0aW9uLg0KPiAg IAkgKiBAaTogVGhlIGxvY2F0aW9uIHdpdGhpbiB0aGUgcmVzb3VyY2UgdG8gbWFwLiBQQUdF X1NJWkUgZ3JhbnVsYXJpdHkuDQo+ICAgCSAqLw0KPiAgIAl2b2lkICgqbWFwX2xvY2FsKShz dHJ1Y3QgdHRtX2ttYXBfaXRlciAqcmVzX2l0ZXIsDQo+IC0JCQkgIHN0cnVjdCBkbWFfYnVm X21hcCAqZG1hcCwgcGdvZmZfdCBpKTsNCj4gKwkJCSAgc3RydWN0IGlvc3lzX21hcCAqZG1h cCwgcGdvZmZfdCBpKTsNCj4gICAJLyoqDQo+ICAgCSAqIHVubWFwX2xvY2FsKCkgLSBVbm1h cCBhIFBBR0VfU0laRSBwYXJ0IG9mIHRoZSByZXNvdXJjZSBwcmV2aW91c2x5DQo+ICAgCSAq IG1hcHBlZCB1c2luZyBrbWFwX2xvY2FsLg0KPiAgIAkgKiBAcmVzX2l0ZXI6IFBvaW50ZXIg dG8gdGhlIHN0cnVjdCB0dG1fa21hcF9pdGVyIHJlcHJlc2VudGluZw0KPiAgIAkgKiB0aGUg cmVzb3VyY2UuDQo+IC0JICogQGRtYXA6IFRoZSBzdHJ1Y3QgZG1hX2J1Zl9tYXAgaG9sZGlu ZyB0aGUgdmlydHVhbCBhZGRyZXNzIGFmdGVyDQo+ICsJICogQGRtYXA6IFRoZSBzdHJ1Y3Qg aW9zeXNfbWFwIGhvbGRpbmcgdGhlIHZpcnR1YWwgYWRkcmVzcyBhZnRlcg0KPiAgIAkgKiB0 aGUgb3BlcmF0aW9uLg0KPiAgIAkgKi8NCj4gICAJdm9pZCAoKnVubWFwX2xvY2FsKShzdHJ1 Y3QgdHRtX2ttYXBfaXRlciAqcmVzX2l0ZXIsDQo+IC0JCQkgICAgc3RydWN0IGRtYV9idWZf bWFwICpkbWFwKTsNCj4gKwkJCSAgICBzdHJ1Y3QgaW9zeXNfbWFwICpkbWFwKTsNCj4gICAJ Ym9vbCBtYXBzX3R0Ow0KPiAgIH07DQo+ICAgDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2Ry bS90dG0vdHRtX3Jlc291cmNlLmggYi9pbmNsdWRlL2RybS90dG0vdHRtX3Jlc291cmNlLmgN Cj4gaW5kZXggNjllZWE5ZDYzOTliLi40ZmQ3MjdiNTJkYTEgMTAwNjQ0DQo+IC0tLSBhL2lu Y2x1ZGUvZHJtL3R0bS90dG1fcmVzb3VyY2UuaA0KPiArKysgYi9pbmNsdWRlL2RybS90dG0v dHRtX3Jlc291cmNlLmgNCj4gQEAgLTI3LDcgKzI3LDcgQEANCj4gICANCj4gICAjaW5jbHVk ZSA8bGludXgvdHlwZXMuaD4NCj4gICAjaW5jbHVkZSA8bGludXgvbXV0ZXguaD4NCj4gLSNp bmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L2lvc3lz LW1hcC5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9kbWEtZmVuY2UuaD4NCj4gICAjaW5jbHVk ZSA8ZHJtL2RybV9wcmludC5oPg0KPiAgICNpbmNsdWRlIDxkcm0vdHRtL3R0bV9jYWNoaW5n Lmg+DQo+IEBAIC00MSw3ICs0MSw3IEBAIHN0cnVjdCB0dG1fcmVzb3VyY2U7DQo+ICAgc3Ry dWN0IHR0bV9wbGFjZTsNCj4gICBzdHJ1Y3QgdHRtX2J1ZmZlcl9vYmplY3Q7DQo+ICAgc3Ry dWN0IHR0bV9wbGFjZW1lbnQ7DQo+IC1zdHJ1Y3QgZG1hX2J1Zl9tYXA7DQo+ICtzdHJ1Y3Qg aW9zeXNfbWFwOw0KPiAgIHN0cnVjdCBpb19tYXBwaW5nOw0KPiAgIHN0cnVjdCBzZ190YWJs ZTsNCj4gICBzdHJ1Y3Qgc2NhdHRlcmxpc3Q7DQo+IEBAIC0yMTAsNyArMjEwLDcgQEAgc3Ry dWN0IHR0bV9rbWFwX2l0ZXJfaW9tYXAgew0KPiAgICAqLw0KPiAgIHN0cnVjdCB0dG1fa21h cF9pdGVyX2xpbmVhcl9pbyB7DQo+ICAgCXN0cnVjdCB0dG1fa21hcF9pdGVyIGJhc2U7DQo+ IC0Jc3RydWN0IGRtYV9idWZfbWFwIGRtYXA7DQo+ICsJc3RydWN0IGlvc3lzX21hcCBkbWFw Ow0KPiAgIAlib29sIG5lZWRzX3VubWFwOw0KPiAgIH07DQo+ICAgDQo+IGRpZmYgLS1naXQg YS9pbmNsdWRlL2xpbnV4L2RtYS1idWYtbWFwLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYt bWFwLmgNCj4gZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDE5ZmEwYjVhZTVl Yy4uMDAwMDAwMDAwMDAwDQo+IC0tLSBhL2luY2x1ZGUvbGludXgvZG1hLWJ1Zi1tYXAuaA0K PiArKysgL2Rldi9udWxsDQo+IEBAIC0xLDI2NiArMCwwIEBADQo+IC0vKiBTUERYLUxpY2Vu c2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5ICovDQo+IC0vKg0KPiAtICogUG9pbnRlciB0 byBkbWEtYnVmLW1hcHBlZCBtZW1vcnksIHBsdXMgaGVscGVycy4NCj4gLSAqLw0KPiAtDQo+ IC0jaWZuZGVmIF9fRE1BX0JVRl9NQVBfSF9fDQo+IC0jZGVmaW5lIF9fRE1BX0JVRl9NQVBf SF9fDQo+IC0NCj4gLSNpbmNsdWRlIDxsaW51eC9pby5oPg0KPiAtI2luY2x1ZGUgPGxpbnV4 L3N0cmluZy5oPg0KPiAtDQo+IC0vKioNCj4gLSAqIERPQzogb3ZlcnZpZXcNCj4gLSAqDQo+ IC0gKiBDYWxsaW5nIGRtYS1idWYncyB2bWFwIG9wZXJhdGlvbiByZXR1cm5zIGEgcG9pbnRl ciB0byB0aGUgYnVmZmVyJ3MgbWVtb3J5Lg0KPiAtICogRGVwZW5kaW5nIG9uIHRoZSBsb2Nh dGlvbiBvZiB0aGUgYnVmZmVyLCB1c2VycyBtYXkgaGF2ZSB0byBhY2Nlc3MgaXQgd2l0aA0K PiAtICogSS9PIG9wZXJhdGlvbnMgb3IgbWVtb3J5IGxvYWQvc3RvcmUgb3BlcmF0aW9ucy4g Rm9yIGV4YW1wbGUsIGNvcHlpbmcgdG8NCj4gLSAqIHN5c3RlbSBtZW1vcnkgY291bGQgYmUg ZG9uZSB3aXRoIG1lbWNweSgpLCBjb3B5aW5nIHRvIEkvTyBtZW1vcnkgd291bGQgYmUNCj4g LSAqIGRvbmUgd2l0aCBtZW1jcHlfdG9pbygpLg0KPiAtICoNCj4gLSAqIC4uIGNvZGUtYmxv Y2s6OiBjDQo+IC0gKg0KPiAtICoJdm9pZCAqdmFkZHIgPSAuLi47IC8vIHBvaW50ZXIgdG8g c3lzdGVtIG1lbW9yeQ0KPiAtICoJbWVtY3B5KHZhZGRyLCBzcmMsIGxlbik7DQo+IC0gKg0K PiAtICoJdm9pZCAqdmFkZHJfaW9tZW0gPSAuLi47IC8vIHBvaW50ZXIgdG8gSS9PIG1lbW9y eQ0KPiAtICoJbWVtY3B5X3RvaW8odmFkZHIsIF9pb21lbSwgc3JjLCBsZW4pOw0KPiAtICoN Cj4gLSAqIFdoZW4gdXNpbmcgZG1hLWJ1ZidzIHZtYXAgb3BlcmF0aW9uLCB0aGUgcmV0dXJu ZWQgcG9pbnRlciBpcyBlbmNvZGVkIGFzDQo+IC0gKiA6Yzp0eXBlOmBzdHJ1Y3QgZG1hX2J1 Zl9tYXAgPGRtYV9idWZfbWFwPmAuDQo+IC0gKiA6Yzp0eXBlOmBzdHJ1Y3QgZG1hX2J1Zl9t YXAgPGRtYV9idWZfbWFwPmAgc3RvcmVzIHRoZSBidWZmZXIncyBhZGRyZXNzIGluDQo+IC0g KiBzeXN0ZW0gb3IgSS9PIG1lbW9yeSBhbmQgYSBmbGFnIHRoYXQgc2lnbmFscyB0aGUgcmVx dWlyZWQgbWV0aG9kIG9mDQo+IC0gKiBhY2Nlc3NpbmcgdGhlIGJ1ZmZlci4gVXNlIHRoZSBy ZXR1cm5lZCBpbnN0YW5jZSBhbmQgdGhlIGhlbHBlciBmdW5jdGlvbnMNCj4gLSAqIHRvIGFj Y2VzcyB0aGUgYnVmZmVyJ3MgbWVtb3J5IGluIHRoZSBjb3JyZWN0IHdheS4NCj4gLSAqDQo+ IC0gKiBUaGUgdHlwZSA6Yzp0eXBlOmBzdHJ1Y3QgZG1hX2J1Zl9tYXAgPGRtYV9idWZfbWFw PmAgYW5kIGl0cyBoZWxwZXJzIGFyZQ0KPiAtICogYWN0dWFsbHkgaW5kZXBlbmRlbnQgZnJv bSB0aGUgZG1hLWJ1ZiBpbmZyYXN0cnVjdHVyZS4gV2hlbiBzaGFyaW5nIGJ1ZmZlcnMNCj4g LSAqIGFtb25nIGRldmljZXMsIGRyaXZlcnMgaGF2ZSB0byBrbm93IHRoZSBsb2NhdGlvbiBv ZiB0aGUgbWVtb3J5IHRvIGFjY2Vzcw0KPiAtICogdGhlIGJ1ZmZlcnMgaW4gYSBzYWZlIHdh eS4gOmM6dHlwZTpgc3RydWN0IGRtYV9idWZfbWFwIDxkbWFfYnVmX21hcD5gDQo+IC0gKiBz b2x2ZXMgdGhpcyBwcm9ibGVtIGZvciBkbWEtYnVmIGFuZCBpdHMgdXNlcnMuIElmIG90aGVy IGRyaXZlcnMgb3INCj4gLSAqIHN1Yi1zeXN0ZW1zIHJlcXVpcmUgc2ltaWxhciBmdW5jdGlv bmFsaXR5LCB0aGUgdHlwZSBjb3VsZCBiZSBnZW5lcmFsaXplZA0KPiAtICogYW5kIG1vdmVk IHRvIGEgbW9yZSBwcm9taW5lbnQgaGVhZGVyIGZpbGUuDQo+IC0gKg0KPiAtICogT3Blbi1j b2RpbmcgYWNjZXNzIHRvIDpjOnR5cGU6YHN0cnVjdCBkbWFfYnVmX21hcCA8ZG1hX2J1Zl9t YXA+YCBpcw0KPiAtICogY29uc2lkZXJlZCBiYWQgc3R5bGUuIFJhdGhlciB0aGVuIGFjY2Vz c2luZyBpdHMgZmllbGRzIGRpcmVjdGx5LCB1c2Ugb25lDQo+IC0gKiBvZiB0aGUgcHJvdmlk ZWQgaGVscGVyIGZ1bmN0aW9ucywgb3IgaW1wbGVtZW50IHlvdXIgb3duLiBGb3IgZXhhbXBs ZSwNCj4gLSAqIGluc3RhbmNlcyBvZiA6Yzp0eXBlOmBzdHJ1Y3QgZG1hX2J1Zl9tYXAgPGRt YV9idWZfbWFwPmAgY2FuIGJlIGluaXRpYWxpemVkDQo+IC0gKiBzdGF0aWNhbGx5IHdpdGgg RE1BX0JVRl9NQVBfSU5JVF9WQUREUigpLCBvciBhdCBydW50aW1lIHdpdGgNCj4gLSAqIGRt YV9idWZfbWFwX3NldF92YWRkcigpLiBUaGVzZSBoZWxwZXJzIHdpbGwgc2V0IGFuIGFkZHJl c3MgaW4gc3lzdGVtIG1lbW9yeS4NCj4gLSAqDQo+IC0gKiAuLiBjb2RlLWJsb2NrOjogYw0K PiAtICoNCj4gLSAqCXN0cnVjdCBkbWFfYnVmX21hcCBtYXAgPSBETUFfQlVGX01BUF9JTklU X1ZBRERSKDB4ZGVhZGJlYWYpOw0KPiAtICoNCj4gLSAqCWRtYV9idWZfbWFwX3NldF92YWRk cigmbWFwLCAweGRlYWRiZWFmKTsNCj4gLSAqDQo+IC0gKiBUbyBzZXQgYW4gYWRkcmVzcyBp biBJL08gbWVtb3J5LCB1c2UgZG1hX2J1Zl9tYXBfc2V0X3ZhZGRyX2lvbWVtKCkuDQo+IC0g Kg0KPiAtICogLi4gY29kZS1ibG9jazo6IGMNCj4gLSAqDQo+IC0gKglkbWFfYnVmX21hcF9z ZXRfdmFkZHJfaW9tZW0oJm1hcCwgMHhkZWFkYmVhZik7DQo+IC0gKg0KPiAtICogSW5zdGFu Y2VzIG9mIHN0cnVjdCBkbWFfYnVmX21hcCBkbyBub3QgaGF2ZSB0byBiZSBjbGVhbmVkIHVw LCBidXQNCj4gLSAqIGNhbiBiZSBjbGVhcmVkIHRvIE5VTEwgd2l0aCBkbWFfYnVmX21hcF9j bGVhcigpLiBDbGVhcmVkIG1hcHBpbmdzDQo+IC0gKiBhbHdheXMgcmVmZXIgdG8gc3lzdGVt IG1lbW9yeS4NCj4gLSAqDQo+IC0gKiAuLiBjb2RlLWJsb2NrOjogYw0KPiAtICoNCj4gLSAq CWRtYV9idWZfbWFwX2NsZWFyKCZtYXApOw0KPiAtICoNCj4gLSAqIFRlc3QgaWYgYSBtYXBw aW5nIGlzIHZhbGlkIHdpdGggZWl0aGVyIGRtYV9idWZfbWFwX2lzX3NldCgpIG9yDQo+IC0g KiBkbWFfYnVmX21hcF9pc19udWxsKCkuDQo+IC0gKg0KPiAtICogLi4gY29kZS1ibG9jazo6 IGMNCj4gLSAqDQo+IC0gKglpZiAoZG1hX2J1Zl9tYXBfaXNfc2V0KCZtYXApICE9IGRtYV9i dWZfbWFwX2lzX251bGwoJm1hcCkpDQo+IC0gKgkJLy8gYWx3YXlzIHRydWUNCj4gLSAqDQo+ IC0gKiBJbnN0YW5jZXMgb2YgOmM6dHlwZTpgc3RydWN0IGRtYV9idWZfbWFwIDxkbWFfYnVm X21hcD5gIGNhbiBiZSBjb21wYXJlZA0KPiAtICogZm9yIGVxdWFsaXR5IHdpdGggZG1hX2J1 Zl9tYXBfaXNfZXF1YWwoKS4gTWFwcGluZ3MgdGhlIHBvaW50IHRvIGRpZmZlcmVudA0KPiAt ICogbWVtb3J5IHNwYWNlcywgc3lzdGVtIG9yIEkvTywgYXJlIG5ldmVyIGVxdWFsLiBUaGF0 J3MgZXZlbiB0cnVlIGlmIGJvdGgNCj4gLSAqIHNwYWNlcyBhcmUgbG9jYXRlZCBpbiB0aGUg c2FtZSBhZGRyZXNzIHNwYWNlLCBib3RoIG1hcHBpbmdzIGNvbnRhaW4gdGhlDQo+IC0gKiBz YW1lIGFkZHJlc3MgdmFsdWUsIG9yIGJvdGggbWFwcGluZ3MgcmVmZXIgdG8gTlVMTC4NCj4g LSAqDQo+IC0gKiAuLiBjb2RlLWJsb2NrOjogYw0KPiAtICoNCj4gLSAqCXN0cnVjdCBkbWFf YnVmX21hcCBzeXNfbWFwOyAvLyByZWZlcnMgdG8gc3lzdGVtIG1lbW9yeQ0KPiAtICoJc3Ry dWN0IGRtYV9idWZfbWFwIGlvX21hcDsgLy8gcmVmZXJzIHRvIEkvTyBtZW1vcnkNCj4gLSAq DQo+IC0gKglpZiAoZG1hX2J1Zl9tYXBfaXNfZXF1YWwoJnN5c19tYXAsICZpb19tYXApKQ0K PiAtICoJCS8vIGFsd2F5cyBmYWxzZQ0KPiAtICoNCj4gLSAqIEEgc2V0IHVwIGluc3RhbmNl IG9mIHN0cnVjdCBkbWFfYnVmX21hcCBjYW4gYmUgdXNlZCB0byBhY2Nlc3Mgb3IgbWFuaXB1 bGF0ZQ0KPiAtICogdGhlIGJ1ZmZlciBtZW1vcnkuIERlcGVuZGluZyBvbiB0aGUgbG9jYXRp b24gb2YgdGhlIG1lbW9yeSwgdGhlIHByb3ZpZGVkDQo+IC0gKiBoZWxwZXJzIHdpbGwgcGlj ayB0aGUgY29ycmVjdCBvcGVyYXRpb25zLiBEYXRhIGNhbiBiZSBjb3BpZWQgaW50byB0aGUg bWVtb3J5DQo+IC0gKiB3aXRoIGRtYV9idWZfbWFwX21lbWNweV90bygpLiBUaGUgYWRkcmVz cyBjYW4gYmUgbWFuaXB1bGF0ZWQgd2l0aA0KPiAtICogZG1hX2J1Zl9tYXBfaW5jcigpLg0K PiAtICoNCj4gLSAqIC4uIGNvZGUtYmxvY2s6OiBjDQo+IC0gKg0KPiAtICoJY29uc3Qgdm9p ZCAqc3JjID0gLi4uOyAvLyBzb3VyY2UgYnVmZmVyDQo+IC0gKglzaXplX3QgbGVuID0gLi4u OyAvLyBsZW5ndGggb2Ygc3JjDQo+IC0gKg0KPiAtICoJZG1hX2J1Zl9tYXBfbWVtY3B5X3Rv KCZtYXAsIHNyYywgbGVuKTsNCj4gLSAqCWRtYV9idWZfbWFwX2luY3IoJm1hcCwgbGVuKTsg Ly8gZ28gdG8gZmlyc3QgYnl0ZSBhZnRlciB0aGUgbWVtY3B5DQo+IC0gKi8NCj4gLQ0KPiAt LyoqDQo+IC0gKiBzdHJ1Y3QgZG1hX2J1Zl9tYXAgLSBQb2ludGVyIHRvIHZtYXAnZWQgZG1h LWJ1ZiBtZW1vcnkuDQo+IC0gKiBAdmFkZHJfaW9tZW06CVRoZSBidWZmZXIncyBhZGRyZXNz IGlmIGluIEkvTyBtZW1vcnkNCj4gLSAqIEB2YWRkcjoJCVRoZSBidWZmZXIncyBhZGRyZXNz IGlmIGluIHN5c3RlbSBtZW1vcnkNCj4gLSAqIEBpc19pb21lbToJCVRydWUgaWYgdGhlIGRt YS1idWYgbWVtb3J5IGlzIGxvY2F0ZWQgaW4gSS9PDQo+IC0gKgkJCW1lbW9yeSwgb3IgZmFs c2Ugb3RoZXJ3aXNlLg0KPiAtICovDQo+IC1zdHJ1Y3QgZG1hX2J1Zl9tYXAgew0KPiAtCXVu aW9uIHsNCj4gLQkJdm9pZCBfX2lvbWVtICp2YWRkcl9pb21lbTsNCj4gLQkJdm9pZCAqdmFk ZHI7DQo+IC0JfTsNCj4gLQlib29sIGlzX2lvbWVtOw0KPiAtfTsNCj4gLQ0KPiAtLyoqDQo+ IC0gKiBETUFfQlVGX01BUF9JTklUX1ZBRERSIC0gSW5pdGlhbGl6ZXMgc3RydWN0IGRtYV9i dWZfbWFwIHRvIGFuIGFkZHJlc3MgaW4gc3lzdGVtIG1lbW9yeQ0KPiAtICogQHZhZGRyXzoJ QSBzeXN0ZW0tbWVtb3J5IGFkZHJlc3MNCj4gLSAqLw0KPiAtI2RlZmluZSBETUFfQlVGX01B UF9JTklUX1ZBRERSKHZhZGRyXykgXA0KPiAtCXsgXA0KPiAtCQkudmFkZHIgPSAodmFkZHJf KSwgXA0KPiAtCQkuaXNfaW9tZW0gPSBmYWxzZSwgXA0KPiAtCX0NCj4gLQ0KPiAtLyoqDQo+ IC0gKiBkbWFfYnVmX21hcF9zZXRfdmFkZHIgLSBTZXRzIGEgZG1hLWJ1ZiBtYXBwaW5nIHN0 cnVjdHVyZSB0byBhbiBhZGRyZXNzIGluIHN5c3RlbSBtZW1vcnkNCj4gLSAqIEBtYXA6CVRo ZSBkbWEtYnVmIG1hcHBpbmcgc3RydWN0dXJlDQo+IC0gKiBAdmFkZHI6CUEgc3lzdGVtLW1l bW9yeSBhZGRyZXNzDQo+IC0gKg0KPiAtICogU2V0cyB0aGUgYWRkcmVzcyBhbmQgY2xlYXJz IHRoZSBJL08tbWVtb3J5IGZsYWcuDQo+IC0gKi8NCj4gLXN0YXRpYyBpbmxpbmUgdm9pZCBk bWFfYnVmX21hcF9zZXRfdmFkZHIoc3RydWN0IGRtYV9idWZfbWFwICptYXAsIHZvaWQgKnZh ZGRyKQ0KPiAtew0KPiAtCW1hcC0+dmFkZHIgPSB2YWRkcjsNCj4gLQltYXAtPmlzX2lvbWVt ID0gZmFsc2U7DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICogZG1hX2J1Zl9tYXBfc2V0X3Zh ZGRyX2lvbWVtIC0gU2V0cyBhIGRtYS1idWYgbWFwcGluZyBzdHJ1Y3R1cmUgdG8gYW4gYWRk cmVzcyBpbiBJL08gbWVtb3J5DQo+IC0gKiBAbWFwOgkJVGhlIGRtYS1idWYgbWFwcGluZyBz dHJ1Y3R1cmUNCj4gLSAqIEB2YWRkcl9pb21lbToJQW4gSS9PLW1lbW9yeSBhZGRyZXNzDQo+ IC0gKg0KPiAtICogU2V0cyB0aGUgYWRkcmVzcyBhbmQgdGhlIEkvTy1tZW1vcnkgZmxhZy4N Cj4gLSAqLw0KPiAtc3RhdGljIGlubGluZSB2b2lkIGRtYV9idWZfbWFwX3NldF92YWRkcl9p b21lbShzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCwNCj4gLQkJCQkJICAgICAgIHZvaWQgX19p b21lbSAqdmFkZHJfaW9tZW0pDQo+IC17DQo+IC0JbWFwLT52YWRkcl9pb21lbSA9IHZhZGRy X2lvbWVtOw0KPiAtCW1hcC0+aXNfaW9tZW0gPSB0cnVlOw0KPiAtfQ0KPiAtDQo+IC0vKioN Cj4gLSAqIGRtYV9idWZfbWFwX2lzX2VxdWFsIC0gQ29tcGFyZXMgdHdvIGRtYS1idWYgbWFw cGluZyBzdHJ1Y3R1cmVzIGZvciBlcXVhbGl0eQ0KPiAtICogQGxoczoJVGhlIGRtYS1idWYg bWFwcGluZyBzdHJ1Y3R1cmUNCj4gLSAqIEByaHM6CUEgZG1hLWJ1ZiBtYXBwaW5nIHN0cnVj dHVyZSB0byBjb21wYXJlIHdpdGgNCj4gLSAqDQo+IC0gKiBUd28gZG1hLWJ1ZiBtYXBwaW5n IHN0cnVjdHVyZXMgYXJlIGVxdWFsIGlmIHRoZXkgYm90aCByZWZlciB0byB0aGUgc2FtZSB0 eXBlIG9mIG1lbW9yeQ0KPiAtICogYW5kIHRvIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRo YXQgbWVtb3J5Lg0KPiAtICoNCj4gLSAqIFJldHVybnM6DQo+IC0gKiBUcnVlIGlzIGJvdGgg c3RydWN0dXJlcyBhcmUgZXF1YWwsIG9yIGZhbHNlIG90aGVyd2lzZS4NCj4gLSAqLw0KPiAt c3RhdGljIGlubGluZSBib29sIGRtYV9idWZfbWFwX2lzX2VxdWFsKGNvbnN0IHN0cnVjdCBk bWFfYnVmX21hcCAqbGhzLA0KPiAtCQkJCQljb25zdCBzdHJ1Y3QgZG1hX2J1Zl9tYXAgKnJo cykNCj4gLXsNCj4gLQlpZiAobGhzLT5pc19pb21lbSAhPSByaHMtPmlzX2lvbWVtKQ0KPiAt CQlyZXR1cm4gZmFsc2U7DQo+IC0JZWxzZSBpZiAobGhzLT5pc19pb21lbSkNCj4gLQkJcmV0 dXJuIGxocy0+dmFkZHJfaW9tZW0gPT0gcmhzLT52YWRkcl9pb21lbTsNCj4gLQllbHNlDQo+ IC0JCXJldHVybiBsaHMtPnZhZGRyID09IHJocy0+dmFkZHI7DQo+IC19DQo+IC0NCj4gLS8q Kg0KPiAtICogZG1hX2J1Zl9tYXBfaXNfbnVsbCAtIFRlc3RzIGZvciBhIGRtYS1idWYgbWFw cGluZyB0byBiZSBOVUxMDQo+IC0gKiBAbWFwOglUaGUgZG1hLWJ1ZiBtYXBwaW5nIHN0cnVj dHVyZQ0KPiAtICoNCj4gLSAqIERlcGVuZGluZyBvbiB0aGUgc3RhdGUgb2Ygc3RydWN0IGRt YV9idWZfbWFwLmlzX2lvbWVtLCB0ZXN0cyBpZiB0aGUNCj4gLSAqIG1hcHBpbmcgaXMgTlVM TC4NCj4gLSAqDQo+IC0gKiBSZXR1cm5zOg0KPiAtICogVHJ1ZSBpZiB0aGUgbWFwcGluZyBp cyBOVUxMLCBvciBmYWxzZSBvdGhlcndpc2UuDQo+IC0gKi8NCj4gLXN0YXRpYyBpbmxpbmUg Ym9vbCBkbWFfYnVmX21hcF9pc19udWxsKGNvbnN0IHN0cnVjdCBkbWFfYnVmX21hcCAqbWFw KQ0KPiAtew0KPiAtCWlmIChtYXAtPmlzX2lvbWVtKQ0KPiAtCQlyZXR1cm4gIW1hcC0+dmFk ZHJfaW9tZW07DQo+IC0JcmV0dXJuICFtYXAtPnZhZGRyOw0KPiAtfQ0KPiAtDQo+IC0vKioN Cj4gLSAqIGRtYV9idWZfbWFwX2lzX3NldCAtIFRlc3RzIGlzIHRoZSBkbWEtYnVmIG1hcHBp bmcgaGFzIGJlZW4gc2V0DQo+IC0gKiBAbWFwOglUaGUgZG1hLWJ1ZiBtYXBwaW5nIHN0cnVj dHVyZQ0KPiAtICoNCj4gLSAqIERlcGVuZGluZyBvbiB0aGUgc3RhdGUgb2Ygc3RydWN0IGRt YV9idWZfbWFwLmlzX2lvbWVtLCB0ZXN0cyBpZiB0aGUNCj4gLSAqIG1hcHBpbmcgaGFzIGJl ZW4gc2V0Lg0KPiAtICoNCj4gLSAqIFJldHVybnM6DQo+IC0gKiBUcnVlIGlmIHRoZSBtYXBw aW5nIGlzIGJlZW4gc2V0LCBvciBmYWxzZSBvdGhlcndpc2UuDQo+IC0gKi8NCj4gLXN0YXRp YyBpbmxpbmUgYm9vbCBkbWFfYnVmX21hcF9pc19zZXQoY29uc3Qgc3RydWN0IGRtYV9idWZf bWFwICptYXApDQo+IC17DQo+IC0JcmV0dXJuICFkbWFfYnVmX21hcF9pc19udWxsKG1hcCk7 DQo+IC19DQo+IC0NCj4gLS8qKg0KPiAtICogZG1hX2J1Zl9tYXBfY2xlYXIgLSBDbGVhcnMg YSBkbWEtYnVmIG1hcHBpbmcgc3RydWN0dXJlDQo+IC0gKiBAbWFwOglUaGUgZG1hLWJ1ZiBt YXBwaW5nIHN0cnVjdHVyZQ0KPiAtICoNCj4gLSAqIENsZWFycyBhbGwgZmllbGRzIHRvIHpl cm87IGluY2x1ZGluZyBzdHJ1Y3QgZG1hX2J1Zl9tYXAuaXNfaW9tZW0uIFNvDQo+IC0gKiBt YXBwaW5nIHN0cnVjdHVyZXMgdGhhdCB3ZXJlIHNldCB0byBwb2ludCB0byBJL08gbWVtb3J5 IGFyZSByZXNldCBmb3INCj4gLSAqIHN5c3RlbSBtZW1vcnkuIFBvaW50ZXJzIGFyZSBjbGVh cmVkIHRvIE5VTEwuIFRoaXMgaXMgdGhlIGRlZmF1bHQuDQo+IC0gKi8NCj4gLXN0YXRpYyBp bmxpbmUgdm9pZCBkbWFfYnVmX21hcF9jbGVhcihzdHJ1Y3QgZG1hX2J1Zl9tYXAgKm1hcCkN Cj4gLXsNCj4gLQlpZiAobWFwLT5pc19pb21lbSkgew0KPiAtCQltYXAtPnZhZGRyX2lvbWVt ID0gTlVMTDsNCj4gLQkJbWFwLT5pc19pb21lbSA9IGZhbHNlOw0KPiAtCX0gZWxzZSB7DQo+ IC0JCW1hcC0+dmFkZHIgPSBOVUxMOw0KPiAtCX0NCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0g KiBkbWFfYnVmX21hcF9tZW1jcHlfdG8gLSBNZW1jcHkgaW50byBkbWEtYnVmIG1hcHBpbmcN Cj4gLSAqIEBkc3Q6CVRoZSBkbWEtYnVmIG1hcHBpbmcgc3RydWN0dXJlDQo+IC0gKiBAc3Jj OglUaGUgc291cmNlIGJ1ZmZlcg0KPiAtICogQGxlbjoJVGhlIG51bWJlciBvZiBieXRlIGlu IHNyYw0KPiAtICoNCj4gLSAqIENvcGllcyBkYXRhIGludG8gYSBkbWEtYnVmIG1hcHBpbmcu IFRoZSBzb3VyY2UgYnVmZmVyIGlzIGluIHN5c3RlbQ0KPiAtICogbWVtb3J5LiBEZXBlbmRp bmcgb24gdGhlIGJ1ZmZlcidzIGxvY2F0aW9uLCB0aGUgaGVscGVyIHBpY2tzIHRoZSBjb3Jy ZWN0DQo+IC0gKiBtZXRob2Qgb2YgYWNjZXNzaW5nIHRoZSBtZW1vcnkuDQo+IC0gKi8NCj4g LXN0YXRpYyBpbmxpbmUgdm9pZCBkbWFfYnVmX21hcF9tZW1jcHlfdG8oc3RydWN0IGRtYV9i dWZfbWFwICpkc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IGxlbikNCj4gLXsNCj4gLQlp ZiAoZHN0LT5pc19pb21lbSkNCj4gLQkJbWVtY3B5X3RvaW8oZHN0LT52YWRkcl9pb21lbSwg c3JjLCBsZW4pOw0KPiAtCWVsc2UNCj4gLQkJbWVtY3B5KGRzdC0+dmFkZHIsIHNyYywgbGVu KTsNCj4gLX0NCj4gLQ0KPiAtLyoqDQo+IC0gKiBkbWFfYnVmX21hcF9pbmNyIC0gSW5jcmVt ZW50cyB0aGUgYWRkcmVzcyBzdG9yZWQgaW4gYSBkbWEtYnVmIG1hcHBpbmcNCj4gLSAqIEBt YXA6CVRoZSBkbWEtYnVmIG1hcHBpbmcgc3RydWN0dXJlDQo+IC0gKiBAaW5jcjoJVGhlIG51 bWJlciBvZiBieXRlcyB0byBpbmNyZW1lbnQNCj4gLSAqDQo+IC0gKiBJbmNyZW1lbnRzIHRo ZSBhZGRyZXNzIHN0b3JlZCBpbiBhIGRtYS1idWYgbWFwcGluZy4gRGVwZW5kaW5nIG9uIHRo ZQ0KPiAtICogYnVmZmVyJ3MgbG9jYXRpb24sIHRoZSBjb3JyZWN0IHZhbHVlIHdpbGwgYmUg dXBkYXRlZC4NCj4gLSAqLw0KPiAtc3RhdGljIGlubGluZSB2b2lkIGRtYV9idWZfbWFwX2lu Y3Ioc3RydWN0IGRtYV9idWZfbWFwICptYXAsIHNpemVfdCBpbmNyKQ0KPiAtew0KPiAtCWlm IChtYXAtPmlzX2lvbWVtKQ0KPiAtCQltYXAtPnZhZGRyX2lvbWVtICs9IGluY3I7DQo+IC0J ZWxzZQ0KPiAtCQltYXAtPnZhZGRyICs9IGluY3I7DQo+IC19DQo+IC0NCj4gLSNlbmRpZiAv KiBfX0RNQV9CVUZfTUFQX0hfXyAqLw0KPiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9saW51eC9k bWEtYnVmLmggYi9pbmNsdWRlL2xpbnV4L2RtYS1idWYuaA0KPiBpbmRleCA3YWI1MDA3NmU3 YTYuLjIwOTc3NjBlOGU5NSAxMDA2NDQNCj4gLS0tIGEvaW5jbHVkZS9saW51eC9kbWEtYnVm LmgNCj4gKysrIGIvaW5jbHVkZS9saW51eC9kbWEtYnVmLmgNCj4gQEAgLTEzLDcgKzEzLDcg QEANCj4gICAjaWZuZGVmIF9fRE1BX0JVRl9IX18NCj4gICAjZGVmaW5lIF9fRE1BX0JVRl9I X18NCj4gICANCj4gLSNpbmNsdWRlIDxsaW51eC9kbWEtYnVmLW1hcC5oPg0KPiArI2luY2x1 ZGUgPGxpbnV4L2lvc3lzLW1hcC5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9maWxlLmg+DQo+ ICAgI2luY2x1ZGUgPGxpbnV4L2Vyci5oPg0KPiAgICNpbmNsdWRlIDxsaW51eC9zY2F0dGVy bGlzdC5oPg0KPiBAQCAtMjgzLDggKzI4Myw4IEBAIHN0cnVjdCBkbWFfYnVmX29wcyB7DQo+ ICAgCSAqLw0KPiAgIAlpbnQgKCptbWFwKShzdHJ1Y3QgZG1hX2J1ZiAqLCBzdHJ1Y3Qgdm1f YXJlYV9zdHJ1Y3QgKnZtYSk7DQo+ICAgDQo+IC0JaW50ICgqdm1hcCkoc3RydWN0IGRtYV9i dWYgKmRtYWJ1Ziwgc3RydWN0IGRtYV9idWZfbWFwICptYXApOw0KPiAtCXZvaWQgKCp2dW5t YXApKHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsN Cj4gKwlpbnQgKCp2bWFwKShzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgaW9zeXNf bWFwICptYXApOw0KPiArCXZvaWQgKCp2dW5tYXApKHN0cnVjdCBkbWFfYnVmICpkbWFidWYs IHN0cnVjdCBpb3N5c19tYXAgKm1hcCk7DQo+ICAgfTsNCj4gICANCj4gICAvKioNCj4gQEAg LTM0Nyw3ICszNDcsNyBAQCBzdHJ1Y3QgZG1hX2J1ZiB7DQo+ICAgCSAqIEB2bWFwX3B0cjoN Cj4gICAJICogVGhlIGN1cnJlbnQgdm1hcCBwdHIgaWYgQHZtYXBwaW5nX2NvdW50ZXIgPiAw LiBQcm90ZWN0ZWQgYnkgQGxvY2suDQo+ICAgCSAqLw0KPiAtCXN0cnVjdCBkbWFfYnVmX21h cCB2bWFwX3B0cjsNCj4gKwlzdHJ1Y3QgaW9zeXNfbWFwIHZtYXBfcHRyOw0KPiAgIA0KPiAg IAkvKioNCj4gICAJICogQGV4cF9uYW1lOg0KPiBAQCAtNjI4LDYgKzYyOCw2IEBAIGludCBk bWFfYnVmX2VuZF9jcHVfYWNjZXNzKHN0cnVjdCBkbWFfYnVmICpkbWFfYnVmLA0KPiAgIA0K PiAgIGludCBkbWFfYnVmX21tYXAoc3RydWN0IGRtYV9idWYgKiwgc3RydWN0IHZtX2FyZWFf c3RydWN0ICosDQo+ICAgCQkgdW5zaWduZWQgbG9uZyk7DQo+IC1pbnQgZG1hX2J1Zl92bWFw KHN0cnVjdCBkbWFfYnVmICpkbWFidWYsIHN0cnVjdCBkbWFfYnVmX21hcCAqbWFwKTsNCj4g LXZvaWQgZG1hX2J1Zl92dW5tYXAoc3RydWN0IGRtYV9idWYgKmRtYWJ1Ziwgc3RydWN0IGRt YV9idWZfbWFwICptYXApOw0KPiAraW50IGRtYV9idWZfdm1hcChzdHJ1Y3QgZG1hX2J1ZiAq ZG1hYnVmLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApOw0KPiArdm9pZCBkbWFfYnVmX3Z1bm1h cChzdHJ1Y3QgZG1hX2J1ZiAqZG1hYnVmLCBzdHJ1Y3QgaW9zeXNfbWFwICptYXApOw0KPiAg ICNlbmRpZiAvKiBfX0RNQV9CVUZfSF9fICovDQo+IGRpZmYgLS1naXQgYS9pbmNsdWRlL2xp bnV4L2lvc3lzLW1hcC5oIGIvaW5jbHVkZS9saW51eC9pb3N5cy1tYXAuaA0KPiBuZXcgZmls ZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLmY0MTg2ZjkxY2FhNg0KPiAt LS0gL2Rldi9udWxsDQo+ICsrKyBiL2luY2x1ZGUvbGludXgvaW9zeXMtbWFwLmgNCj4gQEAg LTAsMCArMSwyNTcgQEANCj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4w LW9ubHkgKi8NCj4gKy8qDQo+ICsgKiBQb2ludGVyIGFic3RyYWN0aW9uIGZvciBJTy9zeXN0 ZW0gbWVtb3J5DQo+ICsgKi8NCj4gKw0KPiArI2lmbmRlZiBfX0lPU1lTX01BUF9IX18NCj4g KyNkZWZpbmUgX19JT1NZU19NQVBfSF9fDQo+ICsNCj4gKyNpbmNsdWRlIDxsaW51eC9pby5o Pg0KPiArI2luY2x1ZGUgPGxpbnV4L3N0cmluZy5oPg0KPiArDQo+ICsvKioNCj4gKyAqIERP Qzogb3ZlcnZpZXcNCj4gKyAqDQo+ICsgKiBXaGVuIGFjY2Vzc2luZyBhIG1lbW9yeSByZWdp b24sIGRlcGVuZGluZyBvbiBpdHMgbG9jYXRpb24sIHVzZXJzIG1heSBoYXZlIHRvDQo+ICsg KiBhY2Nlc3MgaXQgd2l0aCBJL08gb3BlcmF0aW9ucyBvciBtZW1vcnkgbG9hZC9zdG9yZSBv cGVyYXRpb25zLiBGb3IgZXhhbXBsZSwNCj4gKyAqIGNvcHlpbmcgdG8gc3lzdGVtIG1lbW9y eSBjb3VsZCBiZSBkb25lIHdpdGggbWVtY3B5KCksIGNvcHlpbmcgdG8gSS9PIG1lbW9yeQ0K PiArICogd291bGQgYmUgZG9uZSB3aXRoIG1lbWNweV90b2lvKCkuDQo+ICsgKg0KPiArICog Li4gY29kZS1ibG9jazo6IGMNCj4gKyAqDQo+ICsgKgl2b2lkICp2YWRkciA9IC4uLjsgLy8g cG9pbnRlciB0byBzeXN0ZW0gbWVtb3J5DQo+ICsgKgltZW1jcHkodmFkZHIsIHNyYywgbGVu KTsNCj4gKyAqDQo+ICsgKgl2b2lkICp2YWRkcl9pb21lbSA9IC4uLjsgLy8gcG9pbnRlciB0 byBJL08gbWVtb3J5DQo+ICsgKgltZW1jcHlfdG9pbyh2YWRkciwgX2lvbWVtLCBzcmMsIGxl bik7DQo+ICsgKg0KPiArICogVGhlIHVzZXIgb2Ygc3VjaCBwb2ludGVyIG1heSBub3QgaGF2 ZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgbWFwcGluZyBvZiB0aGF0DQo+ICsgKiByZWdpb24g b3IgbWF5IHdhbnQgdG8gaGF2ZSBhIHNpbmdsZSBjb2RlIHBhdGggdG8gaGFuZGxlIG9wZXJh dGlvbnMgb24gdGhhdA0KPiArICogYnVmZmVyLCByZWdhcmRsZXNzIGlmIGl0J3MgbG9jYXRl ZCBpbiBzeXN0ZW0gb3IgSU8gbWVtb3J5LiBUaGUgdHlwZQ0KPiArICogOmM6dHlwZTpgc3Ry dWN0IGlvc3lzX21hcCA8aW9zeXNfbWFwPmAgYW5kIGl0cyBoZWxwZXJzIGFic3RyYWN0IHRo YXQgc28gdGhlDQo+ICsgKiBidWZmZXIgY2FuIGJlIHBhc3NlZCBhcm91bmQgdG8gb3RoZXIg ZHJpdmVycyBvciBoYXZlIHNlcGFyYXRlIGR1dGllcyBpbnNpZGUNCj4gKyAqIHRoZSBzYW1l IGRyaXZlciBmb3IgYWxsb2NhdGlvbiwgcmVhZCBhbmQgd3JpdGUgb3BlcmF0aW9ucy4NCj4g KyAqDQo+ICsgKiBPcGVuLWNvZGluZyBhY2Nlc3MgdG8gOmM6dHlwZTpgc3RydWN0IGlvc3lz X21hcCA8aW9zeXNfbWFwPmAgaXMgY29uc2lkZXJlZA0KPiArICogYmFkIHN0eWxlLiBSYXRo ZXIgdGhlbiBhY2Nlc3NpbmcgaXRzIGZpZWxkcyBkaXJlY3RseSwgdXNlIG9uZSBvZiB0aGUg cHJvdmlkZWQNCj4gKyAqIGhlbHBlciBmdW5jdGlvbnMsIG9yIGltcGxlbWVudCB5b3VyIG93 bi4gRm9yIGV4YW1wbGUsIGluc3RhbmNlcyBvZg0KPiArICogOmM6dHlwZTpgc3RydWN0IGlv c3lzX21hcCA8aW9zeXNfbWFwPmAgY2FuIGJlIGluaXRpYWxpemVkIHN0YXRpY2FsbHkgd2l0 aA0KPiArICogSU9TWVNfTUFQX0lOSVRfVkFERFIoKSwgb3IgYXQgcnVudGltZSB3aXRoIGlv c3lzX21hcF9zZXRfdmFkZHIoKS4gVGhlc2UNCj4gKyAqIGhlbHBlcnMgd2lsbCBzZXQgYW4g YWRkcmVzcyBpbiBzeXN0ZW0gbWVtb3J5Lg0KPiArICoNCj4gKyAqIC4uIGNvZGUtYmxvY2s6 OiBjDQo+ICsgKg0KPiArICoJc3RydWN0IGlvc3lzX21hcCBtYXAgPSBJT1NZU19NQVBfSU5J VF9WQUREUigweGRlYWRiZWFmKTsNCj4gKyAqDQo+ICsgKglpb3N5c19tYXBfc2V0X3ZhZGRy KCZtYXAsIDB4ZGVhZGJlYWYpOw0KPiArICoNCj4gKyAqIFRvIHNldCBhbiBhZGRyZXNzIGlu IEkvTyBtZW1vcnksIHVzZSBpb3N5c19tYXBfc2V0X3ZhZGRyX2lvbWVtKCkuDQo+ICsgKg0K PiArICogLi4gY29kZS1ibG9jazo6IGMNCj4gKyAqDQo+ICsgKglpb3N5c19tYXBfc2V0X3Zh ZGRyX2lvbWVtKCZtYXAsIDB4ZGVhZGJlYWYpOw0KPiArICoNCj4gKyAqIEluc3RhbmNlcyBv ZiBzdHJ1Y3QgaW9zeXNfbWFwIGRvIG5vdCBoYXZlIHRvIGJlIGNsZWFuZWQgdXAsIGJ1dA0K PiArICogY2FuIGJlIGNsZWFyZWQgdG8gTlVMTCB3aXRoIGlvc3lzX21hcF9jbGVhcigpLiBD bGVhcmVkIG1hcHBpbmdzDQo+ICsgKiBhbHdheXMgcmVmZXIgdG8gc3lzdGVtIG1lbW9yeS4N Cj4gKyAqDQo+ICsgKiAuLiBjb2RlLWJsb2NrOjogYw0KPiArICoNCj4gKyAqCWlvc3lzX21h cF9jbGVhcigmbWFwKTsNCj4gKyAqDQo+ICsgKiBUZXN0IGlmIGEgbWFwcGluZyBpcyB2YWxp ZCB3aXRoIGVpdGhlciBpb3N5c19tYXBfaXNfc2V0KCkgb3INCj4gKyAqIGlvc3lzX21hcF9p c19udWxsKCkuDQo+ICsgKg0KPiArICogLi4gY29kZS1ibG9jazo6IGMNCj4gKyAqDQo+ICsg KglpZiAoaW9zeXNfbWFwX2lzX3NldCgmbWFwKSAhPSBpb3N5c19tYXBfaXNfbnVsbCgmbWFw KSkNCj4gKyAqCQkvLyBhbHdheXMgdHJ1ZQ0KPiArICoNCj4gKyAqIEluc3RhbmNlcyBvZiA6 Yzp0eXBlOmBzdHJ1Y3QgaW9zeXNfbWFwIDxpb3N5c19tYXA+YCBjYW4gYmUgY29tcGFyZWQg Zm9yDQo+ICsgKiBlcXVhbGl0eSB3aXRoIGlvc3lzX21hcF9pc19lcXVhbCgpLiBNYXBwaW5n cyB0aGF0IHBvaW50IHRvIGRpZmZlcmVudCBtZW1vcnkNCj4gKyAqIHNwYWNlcywgc3lzdGVt IG9yIEkvTywgYXJlIG5ldmVyIGVxdWFsLiBUaGF0J3MgZXZlbiB0cnVlIGlmIGJvdGggc3Bh Y2VzIGFyZQ0KPiArICogbG9jYXRlZCBpbiB0aGUgc2FtZSBhZGRyZXNzIHNwYWNlLCBib3Ro IG1hcHBpbmdzIGNvbnRhaW4gdGhlIHNhbWUgYWRkcmVzcw0KPiArICogdmFsdWUsIG9yIGJv dGggbWFwcGluZ3MgcmVmZXIgdG8gTlVMTC4NCj4gKyAqDQo+ICsgKiAuLiBjb2RlLWJsb2Nr OjogYw0KPiArICoNCj4gKyAqCXN0cnVjdCBpb3N5c19tYXAgc3lzX21hcDsgLy8gcmVmZXJz IHRvIHN5c3RlbSBtZW1vcnkNCj4gKyAqCXN0cnVjdCBpb3N5c19tYXAgaW9fbWFwOyAvLyBy ZWZlcnMgdG8gSS9PIG1lbW9yeQ0KPiArICoNCj4gKyAqCWlmIChpb3N5c19tYXBfaXNfZXF1 YWwoJnN5c19tYXAsICZpb19tYXApKQ0KPiArICoJCS8vIGFsd2F5cyBmYWxzZQ0KPiArICoN Cj4gKyAqIEEgc2V0IHVwIGluc3RhbmNlIG9mIHN0cnVjdCBpb3N5c19tYXAgY2FuIGJlIHVz ZWQgdG8gYWNjZXNzIG9yIG1hbmlwdWxhdGUgdGhlDQo+ICsgKiBidWZmZXIgbWVtb3J5LiBE ZXBlbmRpbmcgb24gdGhlIGxvY2F0aW9uIG9mIHRoZSBtZW1vcnksIHRoZSBwcm92aWRlZCBo ZWxwZXJzDQo+ICsgKiB3aWxsIHBpY2sgdGhlIGNvcnJlY3Qgb3BlcmF0aW9ucy4gRGF0YSBj YW4gYmUgY29waWVkIGludG8gdGhlIG1lbW9yeSB3aXRoDQo+ICsgKiBpb3N5c19tYXBfbWVt Y3B5X3RvKCkuIFRoZSBhZGRyZXNzIGNhbiBiZSBtYW5pcHVsYXRlZCB3aXRoIGlvc3lzX21h cF9pbmNyKCkuDQo+ICsgKg0KPiArICogLi4gY29kZS1ibG9jazo6IGMNCj4gKyAqDQo+ICsg Kgljb25zdCB2b2lkICpzcmMgPSAuLi47IC8vIHNvdXJjZSBidWZmZXINCj4gKyAqCXNpemVf dCBsZW4gPSAuLi47IC8vIGxlbmd0aCBvZiBzcmMNCj4gKyAqDQo+ICsgKglpb3N5c19tYXBf bWVtY3B5X3RvKCZtYXAsIHNyYywgbGVuKTsNCj4gKyAqCWlvc3lzX21hcF9pbmNyKCZtYXAs IGxlbik7IC8vIGdvIHRvIGZpcnN0IGJ5dGUgYWZ0ZXIgdGhlIG1lbWNweQ0KPiArICovDQo+ ICsNCj4gKy8qKg0KPiArICogc3RydWN0IGlvc3lzX21hcCAtIFBvaW50ZXIgdG8gSU8vc3lz dGVtIG1lbW9yeQ0KPiArICogQHZhZGRyX2lvbWVtOglUaGUgYnVmZmVyJ3MgYWRkcmVzcyBp ZiBpbiBJL08gbWVtb3J5DQo+ICsgKiBAdmFkZHI6CQlUaGUgYnVmZmVyJ3MgYWRkcmVzcyBp ZiBpbiBzeXN0ZW0gbWVtb3J5DQo+ICsgKiBAaXNfaW9tZW06CQlUcnVlIGlmIHRoZSBidWZm ZXIgaXMgbG9jYXRlZCBpbiBJL08gbWVtb3J5LCBvciBmYWxzZQ0KPiArICoJCQlvdGhlcndp c2UuDQo+ICsgKi8NCj4gK3N0cnVjdCBpb3N5c19tYXAgew0KPiArCXVuaW9uIHsNCj4gKwkJ dm9pZCBfX2lvbWVtICp2YWRkcl9pb21lbTsNCj4gKwkJdm9pZCAqdmFkZHI7DQo+ICsJfTsN Cj4gKwlib29sIGlzX2lvbWVtOw0KPiArfTsNCj4gKw0KPiArLyoqDQo+ICsgKiBJT1NZU19N QVBfSU5JVF9WQUREUiAtIEluaXRpYWxpemVzIHN0cnVjdCBpb3N5c19tYXAgdG8gYW4gYWRk cmVzcyBpbiBzeXN0ZW0gbWVtb3J5DQo+ICsgKiBAdmFkZHJfOglBIHN5c3RlbS1tZW1vcnkg YWRkcmVzcw0KPiArICovDQo+ICsjZGVmaW5lIElPU1lTX01BUF9JTklUX1ZBRERSKHZhZGRy XykJXA0KPiArCXsJCQkJXA0KPiArCQkudmFkZHIgPSAodmFkZHJfKSwJXA0KPiArCQkuaXNf aW9tZW0gPSBmYWxzZSwJXA0KPiArCX0NCj4gKw0KPiArLyoqDQo+ICsgKiBpb3N5c19tYXBf c2V0X3ZhZGRyIC0gU2V0cyBhIGlvc3lzIG1hcHBpbmcgc3RydWN0dXJlIHRvIGFuIGFkZHJl c3MgaW4gc3lzdGVtIG1lbW9yeQ0KPiArICogQG1hcDoJVGhlIGlvc3lzX21hcCBzdHJ1Y3R1 cmUNCj4gKyAqIEB2YWRkcjoJQSBzeXN0ZW0tbWVtb3J5IGFkZHJlc3MNCj4gKyAqDQo+ICsg KiBTZXRzIHRoZSBhZGRyZXNzIGFuZCBjbGVhcnMgdGhlIEkvTy1tZW1vcnkgZmxhZy4NCj4g KyAqLw0KPiArc3RhdGljIGlubGluZSB2b2lkIGlvc3lzX21hcF9zZXRfdmFkZHIoc3RydWN0 IGlvc3lzX21hcCAqbWFwLCB2b2lkICp2YWRkcikNCj4gK3sNCj4gKwltYXAtPnZhZGRyID0g dmFkZHI7DQo+ICsJbWFwLT5pc19pb21lbSA9IGZhbHNlOw0KPiArfQ0KPiArDQo+ICsvKioN Cj4gKyAqIGlvc3lzX21hcF9zZXRfdmFkZHJfaW9tZW0gLSBTZXRzIGEgaW9zeXMgbWFwcGlu ZyBzdHJ1Y3R1cmUgdG8gYW4gYWRkcmVzcyBpbiBJL08gbWVtb3J5DQo+ICsgKiBAbWFwOgkJ VGhlIGlvc3lzX21hcCBzdHJ1Y3R1cmUNCj4gKyAqIEB2YWRkcl9pb21lbToJQW4gSS9PLW1l bW9yeSBhZGRyZXNzDQo+ICsgKg0KPiArICogU2V0cyB0aGUgYWRkcmVzcyBhbmQgdGhlIEkv Ty1tZW1vcnkgZmxhZy4NCj4gKyAqLw0KPiArc3RhdGljIGlubGluZSB2b2lkIGlvc3lzX21h cF9zZXRfdmFkZHJfaW9tZW0oc3RydWN0IGlvc3lzX21hcCAqbWFwLA0KPiArCQkJCQkgICAg IHZvaWQgX19pb21lbSAqdmFkZHJfaW9tZW0pDQo+ICt7DQo+ICsJbWFwLT52YWRkcl9pb21l bSA9IHZhZGRyX2lvbWVtOw0KPiArCW1hcC0+aXNfaW9tZW0gPSB0cnVlOw0KPiArfQ0KPiAr DQo+ICsvKioNCj4gKyAqIGlvc3lzX21hcF9pc19lcXVhbCAtIENvbXBhcmVzIHR3byBpb3N5 cyBtYXBwaW5nIHN0cnVjdHVyZXMgZm9yIGVxdWFsaXR5DQo+ICsgKiBAbGhzOglUaGUgaW9z eXNfbWFwIHN0cnVjdHVyZQ0KPiArICogQHJoczoJQSBpb3N5c19tYXAgc3RydWN0dXJlIHRv IGNvbXBhcmUgd2l0aA0KPiArICoNCj4gKyAqIFR3byBpb3N5cyBtYXBwaW5nIHN0cnVjdHVy ZXMgYXJlIGVxdWFsIGlmIHRoZXkgYm90aCByZWZlciB0byB0aGUgc2FtZSB0eXBlIG9mIG1l bW9yeQ0KPiArICogYW5kIHRvIHRoZSBzYW1lIGFkZHJlc3Mgd2l0aGluIHRoYXQgbWVtb3J5 Lg0KPiArICoNCj4gKyAqIFJldHVybnM6DQo+ICsgKiBUcnVlIGlzIGJvdGggc3RydWN0dXJl cyBhcmUgZXF1YWwsIG9yIGZhbHNlIG90aGVyd2lzZS4NCj4gKyAqLw0KPiArc3RhdGljIGlu bGluZSBib29sIGlvc3lzX21hcF9pc19lcXVhbChjb25zdCBzdHJ1Y3QgaW9zeXNfbWFwICps aHMsDQo+ICsJCQkJICAgICAgY29uc3Qgc3RydWN0IGlvc3lzX21hcCAqcmhzKQ0KPiArew0K PiArCWlmIChsaHMtPmlzX2lvbWVtICE9IHJocy0+aXNfaW9tZW0pDQo+ICsJCXJldHVybiBm YWxzZTsNCj4gKwllbHNlIGlmIChsaHMtPmlzX2lvbWVtKQ0KPiArCQlyZXR1cm4gbGhzLT52 YWRkcl9pb21lbSA9PSByaHMtPnZhZGRyX2lvbWVtOw0KPiArCWVsc2UNCj4gKwkJcmV0dXJu IGxocy0+dmFkZHIgPT0gcmhzLT52YWRkcjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiBp b3N5c19tYXBfaXNfbnVsbCAtIFRlc3RzIGZvciBhIGlvc3lzIG1hcHBpbmcgdG8gYmUgTlVM TA0KPiArICogQG1hcDoJVGhlIGlvc3lzX21hcCBzdHJ1Y3R1cmUNCj4gKyAqDQo+ICsgKiBE ZXBlbmRpbmcgb24gdGhlIHN0YXRlIG9mIHN0cnVjdCBpb3N5c19tYXAuaXNfaW9tZW0sIHRl c3RzIGlmIHRoZQ0KPiArICogbWFwcGluZyBpcyBOVUxMLg0KPiArICoNCj4gKyAqIFJldHVy bnM6DQo+ICsgKiBUcnVlIGlmIHRoZSBtYXBwaW5nIGlzIE5VTEwsIG9yIGZhbHNlIG90aGVy d2lzZS4NCj4gKyAqLw0KPiArc3RhdGljIGlubGluZSBib29sIGlvc3lzX21hcF9pc19udWxs KGNvbnN0IHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gK3sNCj4gKwlpZiAobWFwLT5pc19p b21lbSkNCj4gKwkJcmV0dXJuICFtYXAtPnZhZGRyX2lvbWVtOw0KPiArCXJldHVybiAhbWFw LT52YWRkcjsNCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiBpb3N5c19tYXBfaXNfc2V0IC0g VGVzdHMgaWYgdGhlIGlvc3lzIG1hcHBpbmcgaGFzIGJlZW4gc2V0DQo+ICsgKiBAbWFwOglU aGUgaW9zeXNfbWFwIHN0cnVjdHVyZQ0KPiArICoNCj4gKyAqIERlcGVuZGluZyBvbiB0aGUg c3RhdGUgb2Ygc3RydWN0IGlvc3lzX21hcC5pc19pb21lbSwgdGVzdHMgaWYgdGhlDQo+ICsg KiBtYXBwaW5nIGhhcyBiZWVuIHNldC4NCj4gKyAqDQo+ICsgKiBSZXR1cm5zOg0KPiArICog VHJ1ZSBpZiB0aGUgbWFwcGluZyBpcyBiZWVuIHNldCwgb3IgZmFsc2Ugb3RoZXJ3aXNlLg0K PiArICovDQo+ICtzdGF0aWMgaW5saW5lIGJvb2wgaW9zeXNfbWFwX2lzX3NldChjb25zdCBz dHJ1Y3QgaW9zeXNfbWFwICptYXApDQo+ICt7DQo+ICsJcmV0dXJuICFpb3N5c19tYXBfaXNf bnVsbChtYXApOw0KPiArfQ0KPiArDQo+ICsvKioNCj4gKyAqIGlvc3lzX21hcF9jbGVhciAt IENsZWFycyBhIGlvc3lzIG1hcHBpbmcgc3RydWN0dXJlDQo+ICsgKiBAbWFwOglUaGUgaW9z eXNfbWFwIHN0cnVjdHVyZQ0KPiArICoNCj4gKyAqIENsZWFycyBhbGwgZmllbGRzIHRvIHpl cm8sIGluY2x1ZGluZyBzdHJ1Y3QgaW9zeXNfbWFwLmlzX2lvbWVtLCBzbw0KPiArICogbWFw cGluZyBzdHJ1Y3R1cmVzIHRoYXQgd2VyZSBzZXQgdG8gcG9pbnQgdG8gSS9PIG1lbW9yeSBh cmUgcmVzZXQgZm9yDQo+ICsgKiBzeXN0ZW0gbWVtb3J5LiBQb2ludGVycyBhcmUgY2xlYXJl ZCB0byBOVUxMLiBUaGlzIGlzIHRoZSBkZWZhdWx0Lg0KPiArICovDQo+ICtzdGF0aWMgaW5s aW5lIHZvaWQgaW9zeXNfbWFwX2NsZWFyKHN0cnVjdCBpb3N5c19tYXAgKm1hcCkNCj4gK3sN Cj4gKwlpZiAobWFwLT5pc19pb21lbSkgew0KPiArCQltYXAtPnZhZGRyX2lvbWVtID0gTlVM TDsNCj4gKwkJbWFwLT5pc19pb21lbSA9IGZhbHNlOw0KPiArCX0gZWxzZSB7DQo+ICsJCW1h cC0+dmFkZHIgPSBOVUxMOw0KPiArCX0NCj4gK30NCj4gKw0KPiArLyoqDQo+ICsgKiBpb3N5 c19tYXBfbWVtY3B5X3RvIC0gTWVtY3B5IGludG8gaW9zeXMgbWFwcGluZw0KPiArICogQGRz dDoJVGhlIGlvc3lzX21hcCBzdHJ1Y3R1cmUNCj4gKyAqIEBzcmM6CVRoZSBzb3VyY2UgYnVm ZmVyDQo+ICsgKiBAbGVuOglUaGUgbnVtYmVyIG9mIGJ5dGUgaW4gc3JjDQo+ICsgKg0KPiAr ICogQ29waWVzIGRhdGEgaW50byBhIGlvc3lzIG1hcHBpbmcuIFRoZSBzb3VyY2UgYnVmZmVy IGlzIGluIHN5c3RlbQ0KPiArICogbWVtb3J5LiBEZXBlbmRpbmcgb24gdGhlIGJ1ZmZlcidz IGxvY2F0aW9uLCB0aGUgaGVscGVyIHBpY2tzIHRoZSBjb3JyZWN0DQo+ICsgKiBtZXRob2Qg b2YgYWNjZXNzaW5nIHRoZSBtZW1vcnkuDQo+ICsgKi8NCj4gK3N0YXRpYyBpbmxpbmUgdm9p ZCBpb3N5c19tYXBfbWVtY3B5X3RvKHN0cnVjdCBpb3N5c19tYXAgKmRzdCwgY29uc3Qgdm9p ZCAqc3JjLA0KPiArCQkJCSAgICAgICBzaXplX3QgbGVuKQ0KPiArew0KPiArCWlmIChkc3Qt PmlzX2lvbWVtKQ0KPiArCQltZW1jcHlfdG9pbyhkc3QtPnZhZGRyX2lvbWVtLCBzcmMsIGxl bik7DQo+ICsJZWxzZQ0KPiArCQltZW1jcHkoZHN0LT52YWRkciwgc3JjLCBsZW4pOw0KPiAr fQ0KPiArDQo+ICsvKioNCj4gKyAqIGlvc3lzX21hcF9pbmNyIC0gSW5jcmVtZW50cyB0aGUg YWRkcmVzcyBzdG9yZWQgaW4gYSBpb3N5cyBtYXBwaW5nDQo+ICsgKiBAbWFwOglUaGUgaW9z eXNfbWFwIHN0cnVjdHVyZQ0KPiArICogQGluY3I6CVRoZSBudW1iZXIgb2YgYnl0ZXMgdG8g aW5jcmVtZW50DQo+ICsgKg0KPiArICogSW5jcmVtZW50cyB0aGUgYWRkcmVzcyBzdG9yZWQg aW4gYSBpb3N5cyBtYXBwaW5nLiBEZXBlbmRpbmcgb24gdGhlDQo+ICsgKiBidWZmZXIncyBs b2NhdGlvbiwgdGhlIGNvcnJlY3QgdmFsdWUgd2lsbCBiZSB1cGRhdGVkLg0KPiArICovDQo+ ICtzdGF0aWMgaW5saW5lIHZvaWQgaW9zeXNfbWFwX2luY3Ioc3RydWN0IGlvc3lzX21hcCAq bWFwLCBzaXplX3QgaW5jcikNCj4gK3sNCj4gKwlpZiAobWFwLT5pc19pb21lbSkNCj4gKwkJ bWFwLT52YWRkcl9pb21lbSArPSBpbmNyOw0KPiArCWVsc2UNCj4gKwkJbWFwLT52YWRkciAr PSBpbmNyOw0KPiArfQ0KPiArDQo+ICsjZW5kaWYgLyogX19JT1NZU19NQVBfSF9fICovDQoN Ci0tIA0KVGhvbWFzIFppbW1lcm1hbm4NCkdyYXBoaWNzIERyaXZlciBEZXZlbG9wZXINClNV U0UgU29mdHdhcmUgU29sdXRpb25zIEdlcm1hbnkgR21iSA0KTWF4ZmVsZHN0ci4gNSwgOTA0 MDkgTsO8cm5iZXJnLCBHZXJtYW55DQooSFJCIDM2ODA5LCBBRyBOw7xybmJlcmcpDQpHZXNj aMOkZnRzZsO8aHJlcjogSXZvIFRvdGV2DQo= --------------ZShDiq2ac0S4TDwrtjg5JCan-- --------------k3GVKzuYPtmfWE6Hjgc2zqb5 Content-Type: application/pgp-signature; name="OpenPGP_signature.asc" Content-Description: OpenPGP digital signature Content-Disposition: attachment; filename="OpenPGP_signature" -----BEGIN PGP SIGNATURE----- wsF5BAABCAAjFiEExndm/fpuMUdwYFFolh/E3EQov+AFAmH7oGIFAwAAAAAACgkQlh/E3EQov+CQ hg/+KpLrswH5lgi+M86D17u2ZghLZ6nIoGuCSUvtAuw7zZ+BciJbTamKSTfA3rbiNA0zRdfPtwhv mDxK6RE1GlGYaUrxDVdqOv01oE+IgThYJrxlFxUgUhSBlS85fGbDVKjFvwvIjjFJLqzs775LumQx RIL82UaDMGPlvrHlCvA+pq2ZJmvZhFoqhf+lgGbudPf+14tD3LDdpIaeC6tFT7BzCVyv1VBddPPt IiC1/GOzZvbVKr11vvxfIgMLIeVB70cMy0ZY1nz8e0OgqpcKU/A7Ml4jhj+8JQOj2g/dZSkMXfYS /lj2cVwwjeetmVQNOYepQK7eRhfSjPvbTj8er1xZYvWgvP+lrnjPhHYPujw0c+lW+EI7nPdlVuuP DGtZcV6YOzlOhaz7FOCNeLVRaiFOfWuhZ9wOM7Nmy7KHrSTqdFMr7ydJKXvuhTIFWz9WVRXIjiph jxx90AIlDKVrES+ZAx9gICmsmUPRs82/oqlS6F1u0nFExMFwnUKsAC3+Yc1orkRg9wmQdsHoacRA OhRulrePpNcJGszOmatFbWt9Y7GwRBbVo8p+tFJyE3yZS3fDcWsOiGL0KVP62B4yqyfW74Adv18V NbHKXWe+9AnQEXyk9cV6ZFPOKiOLDtxzYt54oj1CPF7IF7oNFWcUF3KNr7qb1SFB4VOcWX01eOc9 Xp4= =tELo -----END PGP SIGNATURE----- --------------k3GVKzuYPtmfWE6Hjgc2zqb5--