From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.4.0 (2014-02-07) on aws-us-west-2-korg-lkml-1.web.codeaurora.org Received: from gabe.freedesktop.org (gabe.freedesktop.org [131.252.210.177]) (using TLSv1.2 with cipher ECDHE-RSA-AES256-GCM-SHA384 (256/256 bits)) (No client certificate requested) by smtp.lore.kernel.org (Postfix) with ESMTPS id 330A9EB64D9 for ; Thu, 15 Jun 2023 14:24:44 +0000 (UTC) Received: from gabe.freedesktop.org (localhost [127.0.0.1]) by gabe.freedesktop.org (Postfix) with ESMTP id 8A33010E502; Thu, 15 Jun 2023 14:24:43 +0000 (UTC) Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by gabe.freedesktop.org (Postfix) with ESMTPS id 9459D10E502 for ; Thu, 15 Jun 2023 14:24:41 +0000 (UTC) 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-out2.suse.de (Postfix) with ESMTPS id 25FB11FE0D; Thu, 15 Jun 2023 14:24:40 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1686839080; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=eLXAkn9dtlD6rd9fGaH3nF/zNCAfac/y0Lech1lJ/mU=; b=SDTl0c3SWPviBVvDj0LkmBH5TOWLggcjM+Jfy/4aZD4W0JwVlr57dl6R8cE0I6Hv3Oo2pm yee8eU4MjDjcTbf2rvIh87595Ma0IreO/9yZufbH9dTh9kilURrmwrBqyKuPORsq+7OyQT v66fnF+PxviFN+JGEFyeGYxCWUKwaUE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1686839080; h=from:from:reply-to:date:date:message-id:message-id:to:to:cc: mime-version:mime-version:content-type:content-type: in-reply-to:in-reply-to:references:references; bh=eLXAkn9dtlD6rd9fGaH3nF/zNCAfac/y0Lech1lJ/mU=; b=/VkAi/X9iJhR+uOejbddwdHixg8Dpo5xOWwy1fwgjF31VHszRs8g1bEIILP5dL5B8Fjhe5 KNA+5643XYAw8kCg== 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 E67E413A32; Thu, 15 Jun 2023 14:24:39 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id BLlBNycfi2QjcwAAMHmgww (envelope-from ); Thu, 15 Jun 2023 14:24:39 +0000 Message-ID: Date: Thu, 15 Jun 2023 16:24:39 +0200 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.11.2 Subject: Re: [PATCH v2 4/4] drm/mgag200: Use DMA to copy the framebuffer to the VRAM Content-Language: en-US To: Jocelyn Falempe , dri-devel@lists.freedesktop.org, airlied@redhat.com, javierm@redhat.com, lyude@redhat.com References: <20230531092110.140564-1-jfalempe@redhat.com> <20230531092110.140564-5-jfalempe@redhat.com> From: Thomas Zimmermann In-Reply-To: <20230531092110.140564-5-jfalempe@redhat.com> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------TmQBa7Nep3QYTv1ZJo2YruWx" X-BeenThere: dri-devel@lists.freedesktop.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Direct Rendering Infrastructure - Development List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , Errors-To: dri-devel-bounces@lists.freedesktop.org Sender: "dri-devel" This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------TmQBa7Nep3QYTv1ZJo2YruWx Content-Type: multipart/mixed; boundary="------------9Qho0vVB5MgKhctfWEWWV9Vn"; protected-headers="v1" From: Thomas Zimmermann To: Jocelyn Falempe , dri-devel@lists.freedesktop.org, airlied@redhat.com, javierm@redhat.com, lyude@redhat.com Message-ID: Subject: Re: [PATCH v2 4/4] drm/mgag200: Use DMA to copy the framebuffer to the VRAM References: <20230531092110.140564-1-jfalempe@redhat.com> <20230531092110.140564-5-jfalempe@redhat.com> In-Reply-To: <20230531092110.140564-5-jfalempe@redhat.com> --------------9Qho0vVB5MgKhctfWEWWV9Vn Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkgSm9jZWx5bg0KDQpBbSAzMS4wNS4yMyB1bSAxMToyMSBzY2hyaWViIEpvY2VseW4gRmFs ZW1wZToNCj4gRXZlbiBpZiB0aGUgdHJhbnNmZXIgaXMgbm90IGZhc3RlciwgaXQgYnJpbmdz IHNpZ25pZmljYW50DQo+IGltcHJvdmVtZW50IGluIGxhdGVuY2llcyBhbmQgQ1BVIHVzYWdl Lg0KPiANCj4gQ1BVIHVzYWdlIGRyb3BzIGZyb20gMTAwJSBvZiBvbmUgY29yZSB0byAzJSB3 aGVuIGNvbnRpbnVvdXNseQ0KPiByZWZyZXNoaW5nIHRoZSBzY3JlZW4uDQoNCkkgdHJpZWQg eW91ciBwYXRjaHNldCBvbiBhIEhQIFByb2xpYW50IHNlcnZlciB3aXRoIGEgRzIwMEVILiBJ IGNhbiBzZWUgDQp0aGF0IHRoZSBDUFUgdXNhZ2UgZ29lcyBkb3duLCBidXQgdGhlIHRpbWUg dW50aWwgdGhlIHNjcmVlbiB1cGRhdGUgDQpyZWFjaGVzIHRoZSBoYXJkd2FyZSdzIHZpZGVv IG1lbW9yeSBoYXMgaW5jcmVhc2VkIHNpZ25pZmljYW50bHkuDQoNCkFueSBkaXNwbGF5IHVw ZGF0ZSB0aGF0IGlzIG1vcmUgdGhhbiBqdXN0IG1vdmluZyB0aGUgbW91c2UgcmVzdWx0cyBp biANCnRlYXJpbmcuIEkgY2FuIHNlZSBob3cgdGhlIGluZGl2aWRpYWwgc2NhbmxpbmVzIGFy ZSB1cGRhdGVkIGZyb20gdG9wIHRvIA0KYm90dG9tLiBUaGF0IHRha2VzIH4xIHNlYyBwZXIg ZnVsbCBmcmFtZS4gU28gdGhpcyBwYXRjaCByZW5kZXJzIHRoZSANCmRpc3BsYXkgZnJvbSBz bG93IHRvIGJhcmVseSB1c2FibGUuDQoNCkJlc3QgcmVnYXJkcw0KVGhvbWFzDQoNCj4gDQo+ IFRoZSBwcmltYXJ5IERNQSBpcyB1c2VkIHRvIHNlbmQgY29tbWFuZHMgKHJlZ2lzdGVyIHdy aXRlKSwgYW5kDQo+IHRoZSBzZWNvbmRhcnkgRE1BIHRvIHNlbmQgdGhlIHBpeGVsIGRhdGEu DQo+IEl0IHVzZXMgdGhlIElMT0FEIGNvbW1hbmQgKGNoYXB0ZXIgNC41LjcgaW4gRzIwMCBz cGVjaWZpY2F0aW9uKSwNCj4gd2hpY2ggYWxsb3dzIHRvIGxvYWQgYW4gaW1hZ2UsIG9yIGEg cGFydCBvZiBhbiBpbWFnZSBmcm9tIHN5c3RlbQ0KPiBtZW1vcnkgdG8gVlJBTS4NCj4gVGhl IGxhc3QgY29tbWFuZCBzZW50LCBpcyBhIHNvZnRyYXAgY29tbWFuZCwgd2hpY2ggdHJpZ2dl cnMgYW4gSVJRDQo+IHdoZW4gdGhlIERNQSB0cmFuc2ZlciBpcyBjb21wbGV0ZS4NCj4gRm9y IDE2Yml0cyBhbmQgMjRiaXRzIHBpeGVsIHdpZHRoLCBlYWNoIGxpbmUgaXMgcGFkZGVkIHRv IG1ha2Ugc3VyZSwNCj4gdGhlIERNQSB0cmFuc2ZlciBpcyBhIG11bHRpcGxlIG9mIDMyYml0 cy4gVGhlIHBhZGRlZCBieXRlcyB3b24ndCBiZQ0KPiBkcmF3biBvbiB0aGUgc2NyZWVuLCBz byB0aGV5IGRvbid0IG5lZWQgdG8gYmUgaW5pdGlhbGl6ZWQuDQo+IA0KPiBTaWduZWQtb2Zm LWJ5OiBKb2NlbHluIEZhbGVtcGUgPGpmYWxlbXBlQHJlZGhhdC5jb20+DQo+IC0tLQ0KPiAg IGRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL01ha2VmaWxlICAgICAgICAgIHwgICAzICstDQo+ ICAgZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kbWEuYyAgICAgfCAyMzcgKysr KysrKysrKysrKysrKysrKysrKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcy MDBfZHJ2LmMgICAgIHwgICA0ICstDQo+ICAgZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdh ZzIwMF9kcnYuaCAgICAgfCAgMjkgKysrDQo+ICAgZHJpdmVycy9ncHUvZHJtL21nYWcyMDAv bWdhZzIwMF9nMjAwLmMgICAgfCAgIDQgKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS9tZ2FnMjAw L21nYWcyMDBfZzIwMGVoLmMgIHwgICA0ICsNCj4gICBkcml2ZXJzL2dwdS9kcm0vbWdhZzIw MC9tZ2FnMjAwX2cyMDBlaDMuYyB8ICAgNCArDQo+ICAgZHJpdmVycy9ncHUvZHJtL21nYWcy MDAvbWdhZzIwMF9nMjAwZXIuYyAgfCAgIDQgKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS9tZ2Fn MjAwL21nYWcyMDBfZzIwMGV2LmMgIHwgICA0ICsNCj4gICBkcml2ZXJzL2dwdS9kcm0vbWdh ZzIwMC9tZ2FnMjAwX2cyMDBldzMuYyB8ICAgNCArDQo+ICAgZHJpdmVycy9ncHUvZHJtL21n YWcyMDAvbWdhZzIwMF9nMjAwc2UuYyAgfCAgIDQgKw0KPiAgIGRyaXZlcnMvZ3B1L2RybS9t Z2FnMjAwL21nYWcyMDBfZzIwMHdiLmMgIHwgICA0ICsNCj4gICBkcml2ZXJzL2dwdS9kcm0v bWdhZzIwMC9tZ2FnMjAwX21vZGUuYyAgICB8ICAxNSArLQ0KPiAgIGRyaXZlcnMvZ3B1L2Ry bS9tZ2FnMjAwL21nYWcyMDBfcmVnLmggICAgIHwgIDI1ICsrKw0KPiAgIDE0IGZpbGVzIGNo YW5nZWQsIDMzMyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkNCj4gICBjcmVhdGUg bW9kZSAxMDA2NDQgZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kbWEuYw0KPiAN Cj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL01ha2VmaWxlIGIvZHJp dmVycy9ncHUvZHJtL21nYWcyMDAvTWFrZWZpbGUNCj4gaW5kZXggMTgyZTIyNGM0NjBkLi45 NmUyM2RjNTU3MmMgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL01h a2VmaWxlDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL01ha2VmaWxlDQo+IEBA IC0xMSw2ICsxMSw3IEBAIG1nYWcyMDAteSA6PSBcDQo+ICAgCW1nYWcyMDBfZzIwMHNlLm8g XA0KPiAgIAltZ2FnMjAwX2cyMDB3Yi5vIFwNCj4gICAJbWdhZzIwMF9pMmMubyBcDQo+IC0J bWdhZzIwMF9tb2RlLm8NCj4gKwltZ2FnMjAwX21vZGUubyBcDQo+ICsJbWdhZzIwMF9kbWEu bw0KPiAgIA0KPiAgIG9iai0kKENPTkZJR19EUk1fTUdBRzIwMCkgKz0gbWdhZzIwMC5vDQo+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2RtYS5jIGIv ZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kbWEuYw0KPiBuZXcgZmlsZSBtb2Rl IDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMDAuLjdlOWI1OWVmMDhkOQ0KPiAtLS0gL2Rl di9udWxsDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZG1hLmMN Cj4gQEAgLTAsMCArMSwyMzcgQEANCj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wLW9ubHkNCj4gKy8qDQo+ICsgKiBDb3B5cmlnaHQgMjAyMyBSZWQgSGF0DQo+ICsg Kg0KPiArICogQXV0aG9yczogSm9jZWx5biBGYWxlbXBlDQo+ICsgKg0KPiArICovDQo+ICsN Cj4gKyNpbmNsdWRlIDxsaW51eC9kbWEtbWFwcGluZy5oPg0KPiArI2luY2x1ZGUgPGxpbnV4 L2lvc3lzLW1hcC5oPg0KPiArI2luY2x1ZGUgPGxpbnV4L3dhaXQuaD4NCj4gKw0KPiArI2lu Y2x1ZGUgPGRybS9kcm1fZnJhbWVidWZmZXIuaD4NCj4gKw0KPiArI2luY2x1ZGUgIm1nYWcy MDBfZHJ2LmgiDQo+ICsjaW5jbHVkZSAibWdhZzIwMF9yZWcuaCINCj4gKw0KPiArLyogTWF4 aW11bSBudW1iZXIgb2YgY29tbWFuZCBibG9jayBmb3Igb25lIERNQSB0cmFuc2Zlcg0KPiAr ICogaWxvYWQgc2hvdWxkIG9ubHkgdXNlIDQgYmxvY2tzDQo+ICsgKi8NCj4gKyNkZWZpbmUg TUdBX01BWF9DTUQJCTUwDQo+ICsNCj4gKyNkZWZpbmUgTUdBX0RNQV9TSVpFCQkoNCAqIDEw MjQgKiAxMDI0KQ0KPiArI2RlZmluZSBNR0FfTUlOX0RNQV9TSVpFCSg2NCAqIDEwMjQpDQo+ ICsNCj4gKy8qDQo+ICsgKiBBbGxvY2F0ZSBjb2hlcmVudCBidWZmZXJzIGZvciBETUEgdHJh bnNmZXIuDQo+ICsgKiBXZSBuZWVkIHR3byBidWZmZXJzLCBvbmUgZm9yIHRoZSBjb21tYW5k cywgYW5kIG9uZSBmb3IgdGhlIGRhdGEuDQo+ICsgKi8NCj4gK2ludCBtZ2FnMjAwX2RtYV9p bml0KHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2KQ0KPiArew0KPiArCXN0cnVjdCBkcm1fZGV2 aWNlICpkZXYgPSAmbWRldi0+YmFzZTsNCj4gKwlzdHJ1Y3QgbWdhX2RtYSAqZG1hID0gJm1k ZXYtPmRtYTsNCj4gKwlpbnQgc2l6ZTsNCj4gKwkvKiBBbGxvY2F0ZSB0aGUgY29tbWFuZCBi dWZmZXIgKi8NCj4gKwlkbWEtPmNtZCA9IGRtYW1fYWxsb2NfY29oZXJlbnQoZGV2LT5kZXYs IE1HQV9NQVhfQ01EICogc2l6ZW9mKCpkbWEtPmNtZCksDQo+ICsJCQkJCSZkbWEtPmNtZF9o YW5kbGUsIEdGUF9LRVJORUwpOw0KPiArDQo+ICsJaWYgKCFkbWEtPmNtZCkgew0KPiArCQlk cm1fZXJyKGRldiwgIkRNQSBjb21tYW5kIGJ1ZmZlciBhbGxvY2F0aW9uIGZhaWxlZFxuIik7 DQo+ICsJCXJldHVybiAtRU5PTUVNOw0KPiArCX0NCj4gKw0KPiArCWZvciAoc2l6ZSA9IE1H QV9ETUFfU0laRTsgc2l6ZSA+PSBNR0FfTUlOX0RNQV9TSVpFOyBzaXplID0gc2l6ZSA+PiAx KSB7DQo+ICsJCWRtYS0+YnVmID0gZG1hbV9hbGxvY19jb2hlcmVudChkZXYtPmRldiwgc2l6 ZSwgJmRtYS0+aGFuZGxlLCBHRlBfS0VSTkVMKTsNCj4gKwkJaWYgKGRtYS0+YnVmKQ0KPiAr CQkJYnJlYWs7DQo+ICsJfQ0KPiArCWlmICghZG1hLT5idWYpIHsNCj4gKwkJZHJtX2Vycihk ZXYsICJETUEgZGF0YSBidWZmZXIgYWxsb2NhdGlvbiBmYWlsZWRcbiIpOw0KPiArCQlyZXR1 cm4gLUVOT01FTTsNCj4gKwl9DQo+ICsJZG1hLT5zaXplID0gc2l6ZTsNCj4gKwlkcm1faW5m byhkZXYsICJVc2luZyBETUEgd2l0aCBhICVkayBkYXRhIGJ1ZmZlclxuIiwgc2l6ZSAvIDEw MjQpOw0KPiArDQo+ICsJaW5pdF93YWl0cXVldWVfaGVhZCgmZG1hLT53YWl0cSk7DQo+ICsJ cmV0dXJuIDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBNYXRyb3ggdXNlcyBhIGNvbW1h bmQgYmxvY2sgdG8gcHJvZ3JhbSB0aGUgaGFyZHdhcmUgdGhyb3VnaCBETUEuDQo+ICsgKiBF YWNoIGNvbW1hbmQgaXMgYSByZWdpc3RlciB3cml0ZSwgYW5kIGVhY2ggYmxvY2sgY29udGFp bnMgNCBjb21tYW5kcw0KPiArICogcGFja2VkIGluIDUgZHdvcmRzKHUzMikuDQo+ICsgKiBG aXJzdCBkd29yZCBpcyB0aGUgNCByZWdpc3RlciBpbmRleCAoOGJpdCkgdG8gd3JpdGUgZm9y IHRoZSA0IGNvbW1hbmRzLA0KPiArICogZm9sbG93ZWQgYnkgdGhlIGZvdXIgdmFsdWVzIHRv IGJlIHdyaXR0ZW4uDQo+ICsgKi8NCj4gK3N0YXRpYyB2b2lkIG1nYWcyMDBfZG1hX2FkZF9i bG9jayhzdHJ1Y3QgbWdhX2RldmljZSAqbWRldiwNCj4gKwkJCSAgIHUzMiByZWcwLCB1MzIg dmFsMCwNCj4gKwkJCSAgIHUzMiByZWcxLCB1MzIgdmFsMSwNCj4gKwkJCSAgIHUzMiByZWcy LCB1MzIgdmFsMiwNCj4gKwkJCSAgIHUzMiByZWczLCB1MzIgdmFsMykNCj4gK3sNCj4gKwlp ZiAobWRldi0+ZG1hLmNtZF9pZHggPj0gTUdBX01BWF9DTUQpIHsNCj4gKwkJcHJfZXJyKCJt Z2FnMjAwOiBleGNlZWRpbmcgdGhlIERNQSBjb21tYW5kIGJ1ZmZlciBzaXplXG4iKTsNCj4g KwkJcmV0dXJuOw0KPiArCX0NCj4gKw0KPiArCW1kZXYtPmRtYS5jbWRbbWRldi0+ZG1hLmNt ZF9pZHhdID0gKHN0cnVjdCBtZ2FfY21kX2Jsb2NrKSB7DQo+ICsJCS5jbWQgPSBETUFSRUco cmVnMCkgfCBETUFSRUcocmVnMSkgPDwgOCB8IERNQVJFRyhyZWcyKSA8PCAxNiB8IERNQVJF RyhyZWczKSA8PCAyNCwNCj4gKwkJLnYwID0gdmFsMCwNCj4gKwkJLnYxID0gdmFsMSwNCj4g KwkJLnYyID0gdmFsMiwNCj4gKwkJLnYzID0gdmFsM307DQo+ICsJbWRldi0+ZG1hLmNtZF9p ZHgrKzsNCj4gK30NCj4gKw0KPiArc3RhdGljIHZvaWQgbWdhZzIwMF9kbWFfcnVuX2NtZChz dHJ1Y3QgbWdhX2RldmljZSAqbWRldikNCj4gK3sNCj4gKwlzdHJ1Y3QgZHJtX2RldmljZSAq ZGV2ID0gJm1kZXYtPmJhc2U7DQo+ICsJdTMyIHByaW1lbmQ7DQo+ICsNCj4gKwkvKiBBZGQg YSBsYXN0IGJsb2NrIHRvIHRyaWdnZXIgdGhlIHNvZnRyYXAgaW50ZXJydXB0ICovDQo+ICsJ bWdhZzIwMF9kbWFfYWRkX2Jsb2NrKG1kZXYsDQo+ICsJCQlNR0FSRUdfRE1BUEFELCAwLA0K PiArCQkJTUdBUkVHX0RNQVBBRCwgMCwNCj4gKwkJCU1HQVJFR19ETUFQQUQsIDAsDQo+ICsJ CQlNR0FSRUdfU09GVFJBUCwgMCk7DQo+ICsNCj4gKwlwcmltZW5kID0gbWRldi0+ZG1hLmNt ZF9oYW5kbGUgKyBtZGV2LT5kbWEuY21kX2lkeCAqIHNpemVvZihzdHJ1Y3QgbWdhX2NtZF9i bG9jayk7DQo+ICsNCj4gKwkvLyBVc2UgcHJpbWFyeSBETUEgdG8gc2VuZCB0aGUgY29tbWFu ZHMNCj4gKwlXUkVHMzIoTUdBUkVHX1BSSU1BRERSLCAodTMyKSBtZGV2LT5kbWEuY21kX2hh bmRsZSk7DQo+ICsJbWRldi0+ZG1hLmluX3VzZSA9IDE7DQo+ICsJV1JFRzMyKE1HQVJFR19Q UklNRU5ELCBwcmltZW5kKTsNCj4gKw0KPiArCXdhaXRfZXZlbnRfdGltZW91dChtZGV2LT5k bWEud2FpdHEsIG1kZXYtPmRtYS5pbl91c2UgPT0gMCwgSFopOw0KPiArDQo+ICsJaWYgKG1k ZXYtPmRtYS5pbl91c2UpIHsNCj4gKwkJZHJtX2VycihkZXYsICJETUEgdHJhbnNmZXIgdGlt ZWQgb3V0XG4iKTsNCj4gKwkJLyogc29tZXRoaW5nIGdvZXMgd3JvbmcsIHJlc2V0IHRoZSBE TUEgZW5naW5lICovDQo+ICsJCVdSRUc4KE1HQVJFR19PUE1PREUsIE1HQU9QTV9ETUFfQkxJ VCk7DQo+ICsJCW1kZXYtPmRtYS5pbl91c2UgPSAwOw0KPiArCX0NCj4gKw0KPiArCS8qIHJl c2V0IGNvbW1hbmQgaW5kZXggdG8gc3RhcnQgYSBuZXcgc2VxdWVuY2UgKi8NCj4gKwltZGV2 LT5kbWEuY21kX2lkeCA9IDA7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBJTE9BRCBhbGxv d3MgdG8gbG9hZCBhbiBpbWFnZSBmcm9tIHN5c3RlbSBtZW1vcnkgdG8gdGhlIFZSQU0sIGFu ZCB3aXRoIEZYQk5EUlksIFlEU1QgYW5kIFlEU1RMRU4sDQo+ICsgKiB5b3UgY2FuIHRyYW5z ZmVyIGEgcmVjdGFuZ2xlLCBzbyBpdCdzIHBlcmZlY3Qgd2hlbiB1c2VkIHdpdGggYSBkYW1h Z2UgY2xpcC4NCj4gKyAqLw0KPiArc3RhdGljIHZvaWQgbWdhZzIwMF9pbG9hZF9jbWQoc3Ry dWN0IG1nYV9kZXZpY2UgKm1kZXYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVp Z2h0LA0KPiArCQkJICAgICAgaW50IHdpZHRoX3BhZGRlZCwgaW50IGNwcCkNCj4gK3sNCj4g KwlpbnQgc2l6ZSA9IHdpZHRoX3BhZGRlZCAqIGhlaWdodDsNCj4gKwl1MzIgaWxvYWQ7DQo+ ICsNCj4gKwlpbG9hZCA9IE1HQURXR19JTE9BRCB8IE1HQURXR19TR05aRVJPIHwgTUdBRFdH X1NISUZUWkVSTyB8IE1HQURXR19SRVBMQUNFIHwgTUdBRFdHX0NMSVBESVMNCj4gKwkJfCBN R0FEV0dfQkZDT0w7DQo+ICsNCj4gKwltZ2FnMjAwX2RtYV9hZGRfYmxvY2sobWRldiwNCj4g KwkJTUdBUkVHX0RXR0NUTCwgaWxvYWQsDQo+ICsJCU1HQVJFR19GWEJORFJZLCAoKCh4ICsg d2lkdGggLSAxKSA8PCAxNikgfCB4KSwNCj4gKwkJTUdBUkVHX0FSMCwgKHdpZHRoX3BhZGRl ZCAvIGNwcCkgLSAxLA0KPiArCQlNR0FSRUdfQVIzLCAwKTsNCj4gKw0KPiArCW1nYWcyMDBf ZG1hX2FkZF9ibG9jayhtZGV2LA0KPiArCQlNR0FSRUdfQVI1LCAwLA0KPiArCQlNR0FSRUdf WURTVCwgeSwNCj4gKwkJTUdBUkVHX0RNQVBBRCwgMCwNCj4gKwkJTUdBUkVHX0RNQVBBRCwg MCk7DQo+ICsNCj4gKwltZ2FnMjAwX2RtYV9hZGRfYmxvY2sobWRldiwNCj4gKwkJTUdBUkVH X0RNQVBBRCwgMCwNCj4gKwkJTUdBUkVHX0xFTiB8IE1HQVJFR19FWEVDLCBoZWlnaHQsDQo+ ICsJCU1HQVJFR19TRUNBRERSLCBtZGV2LT5kbWEuaGFuZGxlIHwgMSwNCj4gKwkJLyogV3Jp dGluZyBTRUNFTkQgc2hvdWxkIGFsd2F5cyBiZSB0aGUgbGFzdCBjb21tYW5kIG9mIGEgYmxv Y2sgKi8NCj4gKwkJTUdBUkVHX1NFQ0VORCwgbWRldi0+ZG1hLmhhbmRsZSArIHNpemUpOw0K PiArfQ0KPiArDQo+ICtzdGF0aWMgdm9pZCBtZ2FnMjAwX2RtYV9jb3B5KHN0cnVjdCBtZ2Ff ZGV2aWNlICptZGV2LCBjb25zdCB2b2lkICpzcmMsIHUzMiBwaXRjaCwNCj4gKwkJCQlzdHJ1 Y3QgZHJtX3JlY3QgKmNsaXAsIGludCBjcHApDQo+ICt7DQo+ICsJaW50IGk7DQo+ICsJaW50 IHdpZHRoID0gZHJtX3JlY3Rfd2lkdGgoY2xpcCk7DQo+ICsJaW50IGhlaWdodCA9IGRybV9y ZWN0X2hlaWdodChjbGlwKTsNCj4gKw0KPiArCS8qIHBhZCBlYWNoIGxpbmUgdG8gMzJiaXRz IGJvdW5kYXJpZXMgc2VlIHNlY3Rpb24gNC41Ljcgb2YgRzIwMCBTcGVjaWZpY2F0aW9uICov DQo+ICsJaW50IHdpZHRoX3BhZGRlZCA9IHJvdW5kX3VwKHdpZHRoICogY3BwLCA0KTsNCj4g Kw0KPiArCWZvciAoaSA9IDA7IGkgPCBoZWlnaHQ7IGkrKykNCj4gKwkJbWVtY3B5KG1kZXYt PmRtYS5idWYgKyB3aWR0aF9wYWRkZWQgKiBpLA0KPiArCQkgICAgICAgc3JjICsgKCgoY2xp cC0+eTEgKyBpKSAqIHBpdGNoKSArIGNsaXAtPngxICogY3BwKSwNCj4gKwkJICAgICAgIHdp ZHRoICogY3BwKTsNCj4gKw0KPiArCW1nYWcyMDBfaWxvYWRfY21kKG1kZXYsIGNsaXAtPngx LCBjbGlwLT55MSwgd2lkdGgsIGhlaWdodCwgd2lkdGhfcGFkZGVkLCBjcHApOw0KPiArCW1n YWcyMDBfZG1hX3J1bl9jbWQobWRldik7DQo+ICt9DQo+ICsNCj4gKy8qDQo+ICsgKiBJZiB0 aGUgRE1BIGNvaGVyZW50IGJ1ZmZlciBpcyBzbWFsbGVyIHRoYW4gZGFtYWdlIHJlY3Rhbmds ZSwgd2UgbmVlZCB0bw0KPiArICogc3BsaXQgaXQgaW50byBtdWx0aXBsZSBETUEgdHJhbnNm ZXJzLg0KPiArICovDQo+ICt2b2lkIG1nYWcyMDBfZG1hX2RhbWFnZShzdHJ1Y3QgbWdhX2Rl dmljZSAqbWRldiwgY29uc3Qgc3RydWN0IGlvc3lzX21hcCAqdm1hcCwNCj4gKwkJCXN0cnVj dCBkcm1fZnJhbWVidWZmZXIgKmZiLCBzdHJ1Y3QgZHJtX3JlY3QgKmNsaXApDQo+ICt7DQo+ ICsJdTMyIHBpdGNoID0gZmItPnBpdGNoZXNbMF07DQo+ICsJY29uc3Qgdm9pZCAqc3JjID0g dm1hcFswXS52YWRkcjsNCj4gKwlzdHJ1Y3QgZHJtX3JlY3Qgc3ViY2xpcDsNCj4gKwlpbnQg eTE7DQo+ICsJaW50IGxpbmVzOw0KPiArCWludCBjcHAgPSBmYi0+Zm9ybWF0LT5jcHBbMF07 DQo+ICsNCj4gKwkvKiBOdW1iZXIgb2YgbGluZXMgdGhhdCBmaXQgaW4gb25lIERNQSBidWZm ZXIgKi8NCj4gKwlsaW5lcyA9IG1pbihkcm1fcmVjdF9oZWlnaHQoY2xpcCksIChpbnQpIG1k ZXYtPmRtYS5zaXplIC8gKGRybV9yZWN0X3dpZHRoKGNsaXApICogY3BwKSk7DQo+ICsNCj4g KwlzdWJjbGlwLngxID0gY2xpcC0+eDE7DQo+ICsJc3ViY2xpcC54MiA9IGNsaXAtPngyOw0K PiArDQo+ICsJZm9yICh5MSA9IGNsaXAtPnkxOyB5MSA8IGNsaXAtPnkyOyB5MSArPSBsaW5l cykgew0KPiArCQlzdWJjbGlwLnkxID0geTE7DQo+ICsJCXN1YmNsaXAueTIgPSBtaW4oY2xp cC0+eTIsIHkxICsgbGluZXMpOw0KPiArCQltZ2FnMjAwX2RtYV9jb3B5KG1kZXYsIHNyYywg cGl0Y2gsICZzdWJjbGlwLCBjcHApOw0KPiArCX0NCj4gK30NCj4gKw0KPiArLyoNCj4gKyAq IFNldHVwIHRoZSBkcmF3aW5nIGVuZ2luZSAoRFdHKSByZWdpc3RlcnMNCj4gKyAqIENvbG9y IGZvcm1hdCwgZnJhbWVidWZmZXIgd2lkdGgsIC4uLg0KPiArICogVGhpcyBtdXN0IGJlIGRv bmUgYmVmb3JlIHVzaW5nIGFueSBEV0dDVEwgY29tbWFuZA0KPiArICovDQo+ICt2b2lkIG1n YWcyMDBfZG1hX2R3Z19zZXR1cChzdHJ1Y3QgbWdhX2RldmljZSAqbWRldiwgc3RydWN0IGRy bV9mcmFtZWJ1ZmZlciAqZmIpDQo+ICt7DQo+ICsJdTMyIG1hY2Nlc3M7DQo+ICsNCj4gKwlk cm1fZGJnKCZtZGV2LT5iYXNlLCAiU2V0dXAgRFdHIHdpdGggJWR4JWQgJXA0Y2NcbiIsDQo+ ICsJCWZiLT53aWR0aCwgZmItPmhlaWdodCwgJmZiLT5mb3JtYXQtPmZvcm1hdCk7DQo+ICsN Cj4gKwlzd2l0Y2ggKGZiLT5mb3JtYXQtPmZvcm1hdCkgew0KPiArCWNhc2UgRFJNX0ZPUk1B VF9SR0I1NjU6DQo+ICsJCW1hY2Nlc3MgPSBNR0FNQUNfUFcxNjsNCj4gKwkJYnJlYWs7DQo+ ICsJY2FzZSBEUk1fRk9STUFUX1JHQjg4ODoNCj4gKwkJbWFjY2VzcyA9IE1HQU1BQ19QVzI0 Ow0KPiArCQlicmVhazsNCj4gKwljYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6DQo+ICsJCW1h Y2Nlc3MgPSBNR0FNQUNfUFczMjsNCj4gKwkJYnJlYWs7DQo+ICsJfQ0KPiArCVdSRUczMihN R0FSRUdfTUFDQ0VTUywgbWFjY2Vzcyk7DQo+ICsNCj4gKwkvKiBGcmFtZWJ1ZmZlciB3aWR0 aCBpbiBwaXhlbCAqLw0KPiArCVdSRUczMihNR0FSRUdfUElUQ0gsIGZiLT53aWR0aCk7DQo+ ICsNCj4gKwkvKiBTYW5lIGRlZmF1bHQgdmFsdWUgZm9yIHRoZSBkcmF3aW5nIGVuZ2luZSBy ZWdpc3RlcnMgKi8NCj4gKwlXUkVHMzIoTUdBUkVHX0RTVE9SRywgMCk7DQo+ICsJV1JFRzMy KE1HQVJFR19ZRFNUT1JHLCAwKTsNCj4gKwlXUkVHMzIoTUdBUkVHX1NSQ09SRywgMCk7DQo+ ICsJV1JFRzMyKE1HQVJFR19DWEJORFJZLCAweDBGRkYwMDAwKTsNCj4gKwlXUkVHMzIoTUdB UkVHX1lUT1AsIDApOw0KPiArCVdSRUczMihNR0FSRUdfWUJPVCwgMHgwMEZGRkZGRik7DQo+ ICsNCj4gKwkvKiBBY3RpdmF0ZSBibGl0IG1vZGUgRE1BLCBvbmx5IHdyaXRlIHRoZSBsb3cg cGFydCBvZiB0aGUgcmVnaXN0ZXIgKi8NCj4gKwlXUkVHOChNR0FSRUdfT1BNT0RFLCBNR0FP UE1fRE1BX0JMSVQpOw0KPiArfQ0KPiArDQo+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5jIGIvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdh ZzIwMF9kcnYuYw0KPiBpbmRleCBhNTg1MWRjYzZiZGQuLjA3ZjM0ZTRkZjFiMCAxMDA2NDQN Cj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuYw0KPiArKysg Yi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2Rydi5jDQo+IEBAIC0xMTksNiAr MTE5LDggQEAgc3RhdGljIGlycXJldHVybl90IG1nYWcyMDBfZHJpdmVyX2lycV9oYW5kbGVy KGludCBpcnEsIHZvaWQgKmFyZykNCj4gICANCj4gICAJaWYgKHN0YXR1cyAmIE1HQUlSUV9T T0ZUUkFQKSB7DQo+ICAgCQlXUkVHMzIoTUdBUkVHX0lDTEVBUiwgTUdBSVJRX1NPRlRSQVAp Ow0KPiArCQltZGV2LT5kbWEuaW5fdXNlID0gMDsNCj4gKwkJd2FrZV91cCgmbWRldi0+ZG1h LndhaXRxKTsNCj4gICAJCXJldHVybiBJUlFfSEFORExFRDsNCj4gICAJfQ0KPiAgIAlyZXR1 cm4gSVJRX05PTkU7DQo+IEBAIC0xODcsNyArMTg5LDcgQEAgaW50IG1nYWcyMDBfZGV2aWNl X3ByZWluaXQoc3RydWN0IG1nYV9kZXZpY2UgKm1kZXYpDQo+ICAgCQkJICAgICAgIElSUUZf U0hBUkVELCAibWdhZzIwMF9pcnEiLCBtZGV2KTsNCj4gICAJaWYgKHJldCA8IDApIHsNCj4g ICAJCWRybV9lcnIoZGV2LCAiZGV2bV9yZXF1ZXN0X2lycShWUkFNKSBmYWlsZWQgJWRcbiIs IHJldCk7DQo+IC0JCXJldHVybiAtRU5YSU87DQo+ICsJCXJldHVybiByZXQ7DQo+ICAgCX0N Cj4gICAJcmV0dXJuIDA7DQo+ICAgfQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF9kcnYuaCBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcy MDBfZHJ2LmgNCj4gaW5kZXggOWU2MDRkYmI4ZTQ0Li5hZjY5ZjYxYTExYjcgMTAwNjQ0DQo+ IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZHJ2LmgNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuaA0KPiBAQCAtMjc3LDYgKzI3 NywyNyBAQCBzdHJ1Y3QgbWdhZzIwMF9kZXZpY2VfZnVuY3Mgew0KPiAgIAl2b2lkICgqcGl4 cGxsY19hdG9taWNfdXBkYXRlKShzdHJ1Y3QgZHJtX2NydGMgKmNydGMsIHN0cnVjdCBkcm1f YXRvbWljX3N0YXRlICpvbGRfc3RhdGUpOw0KPiAgIH07DQo+ICAgDQo+ICtzdHJ1Y3QgbWdh X2NtZF9ibG9jayB7DQo+ICsJdTMyIGNtZDsNCj4gKwl1MzIgdjA7DQo+ICsJdTMyIHYxOw0K PiArCXUzMiB2MjsNCj4gKwl1MzIgdjM7DQo+ICt9IF9fcGFja2VkOw0KPiArDQo+ICtzdHJ1 Y3QgbWdhX2RtYSB7DQo+ICsJdm9pZCAqYnVmOw0KPiArCXNpemVfdCBzaXplOw0KPiArCWRt YV9hZGRyX3QgaGFuZGxlOw0KPiArDQo+ICsJc3RydWN0IG1nYV9jbWRfYmxvY2sgKmNtZDsN Cj4gKwlpbnQgY21kX2lkeDsNCj4gKwlkbWFfYWRkcl90IGNtZF9oYW5kbGU7DQo+ICsNCj4g Kwl3YWl0X3F1ZXVlX2hlYWRfdCB3YWl0cTsNCj4gKwlpbnQgaW5fdXNlOw0KPiArfTsNCj4g Kw0KPiAgIHN0cnVjdCBtZ2FfZGV2aWNlIHsNCj4gICAJc3RydWN0IGRybV9kZXZpY2UgYmFz ZTsNCj4gICANCj4gQEAgLTI5MSw2ICszMTIsOCBAQCBzdHJ1Y3QgbWdhX2RldmljZSB7DQo+ ICAgCXZvaWQgX19pb21lbQkJCSp2cmFtOw0KPiAgIAlyZXNvdXJjZV9zaXplX3QJCQl2cmFt X2F2YWlsYWJsZTsNCj4gICANCj4gKwlzdHJ1Y3QgbWdhX2RtYSBkbWE7DQo+ICsNCj4gICAJ c3RydWN0IGRybV9wbGFuZSBwcmltYXJ5X3BsYW5lOw0KPiAgIAlzdHJ1Y3QgZHJtX2NydGMg Y3J0YzsNCj4gICAJc3RydWN0IGRybV9lbmNvZGVyIGVuY29kZXI7DQo+IEBAIC00NDMsNCAr NDY2LDEwIEBAIHZvaWQgbWdhZzIwMF9ibWNfZW5hYmxlX3ZpZHJzdChzdHJ1Y3QgbWdhX2Rl dmljZSAqbWRldik7DQo+ICAgCQkJCS8qIG1nYWcyMDBfaTJjLmMgKi8NCj4gICBpbnQgbWdh ZzIwMF9pMmNfaW5pdChzdHJ1Y3QgbWdhX2RldmljZSAqbWRldiwgc3RydWN0IG1nYV9pMmNf Y2hhbiAqaTJjKTsNCj4gICANCj4gKy8qIG1nYWcyMDBfZG1hLmMgKi8NCj4gK2ludCBtZ2Fn MjAwX2RtYV9pbml0KHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2KTsNCj4gK3ZvaWQgbWdhZzIw MF9kbWFfZGFtYWdlKHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2LCBjb25zdCBzdHJ1Y3QgaW9z eXNfbWFwICp2bWFwLA0KPiArCQkJc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIsIHN0cnVj dCBkcm1fcmVjdCAqY2xpcCk7DQo+ICt2b2lkIG1nYWcyMDBfZG1hX2R3Z19zZXR1cChzdHJ1 Y3QgbWdhX2RldmljZSAqbWRldiwgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqZmIpOw0KPiAr DQo+ICAgI2VuZGlmCQkJCS8qIF9fTUdBRzIwMF9EUlZfSF9fICovDQo+IGRpZmYgLS1naXQg YS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDAuYyBiL2RyaXZlcnMvZ3B1 L2RybS9tZ2FnMjAwL21nYWcyMDBfZzIwMC5jDQo+IGluZGV4IGJmNWQ3ZmU1MjVhMy4uNGU5 NzI1MTg3MzNhIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2Fn MjAwX2cyMDAuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cy MDAuYw0KPiBAQCAtNDI0LDYgKzQyNCwxMCBAQCBzdHJ1Y3QgbWdhX2RldmljZSAqbWdhZzIw MF9nMjAwX2RldmljZV9jcmVhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnVj dA0KPiAgIA0KPiAgIAltZ2FnMjAwX2cyMDBfaW5pdF9yZWZjbGsoZzIwMCk7DQo+ICAgDQo+ ICsJcmV0ID0gbWdhZzIwMF9kbWFfaW5pdChtZGV2KTsNCj4gKwlpZiAocmV0KQ0KPiArCQly ZXR1cm4gRVJSX1BUUihyZXQpOw0KPiArDQo+ICAgCXJldCA9IG1nYWcyMDBfZGV2aWNlX2lu aXQobWRldiwgJm1nYWcyMDBfZzIwMF9kZXZpY2VfaW5mbywNCj4gICAJCQkJICAmbWdhZzIw MF9nMjAwX2RldmljZV9mdW5jcyk7DQo+ICAgCWlmIChyZXQpDQo+IGRpZmYgLS1naXQgYS9k cml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDBlaC5jIGIvZHJpdmVycy9ncHUv ZHJtL21nYWcyMDAvbWdhZzIwMF9nMjAwZWguYw0KPiBpbmRleCBmYWQ2MjQ1M2E5MWQuLjY2 MjhiODkxMTE4ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdh ZzIwMF9nMjAwZWguYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAw X2cyMDBlaC5jDQo+IEBAIC0yOTYsNiArMjk2LDEwIEBAIHN0cnVjdCBtZ2FfZGV2aWNlICpt Z2FnMjAwX2cyMDBlaF9kZXZpY2VfY3JlYXRlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25z dCBzdHJ1DQo+ICAgCWlmIChyZXQpDQo+ICAgCQlyZXR1cm4gRVJSX1BUUihyZXQpOw0KPiAg IA0KPiArCXJldCA9IG1nYWcyMDBfZG1hX2luaXQobWRldik7DQo+ICsJaWYgKHJldCkNCj4g KwkJcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4gKw0KPiAgIAlyZXQgPSBtZ2FnMjAwX2Rldmlj ZV9pbml0KG1kZXYsICZtZ2FnMjAwX2cyMDBlaF9kZXZpY2VfaW5mbywNCj4gICAJCQkJICAm bWdhZzIwMF9nMjAwZWhfZGV2aWNlX2Z1bmNzKTsNCj4gICAJaWYgKHJldCkNCj4gZGlmZiAt LWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZzIwMGVoMy5jIGIvZHJp dmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9nMjAwZWgzLmMNCj4gaW5kZXggMGY3ZDgx MTJjZDQ5Li4zNTIxOWZiZTM2NGYgMTAwNjQ0DQo+IC0tLSBhL2RyaXZlcnMvZ3B1L2RybS9t Z2FnMjAwL21nYWcyMDBfZzIwMGVoMy5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2Fn MjAwL21nYWcyMDBfZzIwMGVoMy5jDQo+IEBAIC0yMDEsNiArMjAxLDEwIEBAIHN0cnVjdCBt Z2FfZGV2aWNlICptZ2FnMjAwX2cyMDBlaDNfZGV2aWNlX2NyZWF0ZShzdHJ1Y3QgcGNpX2Rl diAqcGRldiwNCj4gICAJaWYgKHJldCkNCj4gICAJCXJldHVybiBFUlJfUFRSKHJldCk7DQo+ ICAgDQo+ICsJcmV0ID0gbWdhZzIwMF9kbWFfaW5pdChtZGV2KTsNCj4gKwlpZiAocmV0KQ0K PiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOw0KPiArDQo+ICAgCXJldCA9IG1nYWcyMDBfZGV2 aWNlX2luaXQobWRldiwgJm1nYWcyMDBfZzIwMGVoM19kZXZpY2VfaW5mbywNCj4gICAJCQkJ ICAmbWdhZzIwMF9nMjAwZWgzX2RldmljZV9mdW5jcyk7DQo+ICAgCWlmIChyZXQpDQo+IGRp ZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDBlci5jIGIv ZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9nMjAwZXIuYw0KPiBpbmRleCBiY2Uy NjdlMGY3ZGUuLmZjNmRmMmZmZDk5ZCAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF9nMjAwZXIuYw0KPiArKysgYi9kcml2ZXJzL2dwdS9kcm0vbWdh ZzIwMC9tZ2FnMjAwX2cyMDBlci5jDQo+IEBAIC0zMzAsNiArMzMwLDEwIEBAIHN0cnVjdCBt Z2FfZGV2aWNlICptZ2FnMjAwX2cyMDBlcl9kZXZpY2VfY3JlYXRlKHN0cnVjdCBwY2lfZGV2 ICpwZGV2LCBjb25zdCBzdHJ1DQo+ICAgCWlmIChyZXQpDQo+ICAgCQlyZXR1cm4gRVJSX1BU UihyZXQpOw0KPiAgIA0KPiArCXJldCA9IG1nYWcyMDBfZG1hX2luaXQobWRldik7DQo+ICsJ aWYgKHJldCkNCj4gKwkJcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4gKw0KPiAgIAlyZXQgPSBt Z2FnMjAwX2RldmljZV9pbml0KG1kZXYsICZtZ2FnMjAwX2cyMDBlcl9kZXZpY2VfaW5mbywN Cj4gICAJCQkJICAmbWdhZzIwMF9nMjAwZXJfZGV2aWNlX2Z1bmNzKTsNCj4gICAJaWYgKHJl dCkNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZzIw MGV2LmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDBldi5jDQo+IGlu ZGV4IGFjOTU3ZjQyYWJlMS4uMTkwYzM1OGFiYTdlIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJz L2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDBldi5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1 L2RybS9tZ2FnMjAwL21nYWcyMDBfZzIwMGV2LmMNCj4gQEAgLTMzNSw2ICszMzUsMTAgQEAg c3RydWN0IG1nYV9kZXZpY2UgKm1nYWcyMDBfZzIwMGV2X2RldmljZV9jcmVhdGUoc3RydWN0 IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnUNCj4gICAJaWYgKHJldCkNCj4gICAJCXJldHVy biBFUlJfUFRSKHJldCk7DQo+ICAgDQo+ICsJcmV0ID0gbWdhZzIwMF9kbWFfaW5pdChtZGV2 KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOw0KPiArDQo+ICAg CXJldCA9IG1nYWcyMDBfZGV2aWNlX2luaXQobWRldiwgJm1nYWcyMDBfZzIwMGV2X2Rldmlj ZV9pbmZvLA0KPiAgIAkJCQkgICZtZ2FnMjAwX2cyMDBldl9kZXZpY2VfZnVuY3MpOw0KPiAg IAlpZiAocmV0KQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdh ZzIwMF9nMjAwZXczLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDBl dzMuYw0KPiBpbmRleCAxNzA5MzQ0MTRkN2QuLjVkZTdjY2JjNTc1YyAxMDA2NDQNCj4gLS0t IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9nMjAwZXczLmMNCj4gKysrIGIv ZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9nMjAwZXczLmMNCj4gQEAgLTIyMSw2 ICsyMjEsMTAgQEAgc3RydWN0IG1nYV9kZXZpY2UgKm1nYWcyMDBfZzIwMGV3M19kZXZpY2Vf Y3JlYXRlKHN0cnVjdCBwY2lfZGV2ICpwZGV2LA0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJcmV0 dXJuIEVSUl9QVFIocmV0KTsNCj4gICANCj4gKwlyZXQgPSBtZ2FnMjAwX2RtYV9pbml0KG1k ZXYpOw0KPiArCWlmIChyZXQpDQo+ICsJCXJldHVybiBFUlJfUFRSKHJldCk7DQo+ICsNCj4g ICAJcmV0ID0gbWdhZzIwMF9kZXZpY2VfaW5pdChtZGV2LCAmbWdhZzIwMF9nMjAwZXczX2Rl dmljZV9pbmZvLA0KPiAgIAkJCQkgICZtZ2FnMjAwX2cyMDBldzNfZGV2aWNlX2Z1bmNzKTsN Cj4gICAJaWYgKHJldCkNCj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAw L21nYWcyMDBfZzIwMHNlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cy MDBzZS5jDQo+IGluZGV4IGJkNmU1NzNjOWExYS4uM2VkYjkzMDU5OGRkIDEwMDY0NA0KPiAt LS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDBzZS5jDQo+ICsrKyBi L2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZzIwMHNlLmMNCj4gQEAgLTUwNiw2 ICs1MDYsMTAgQEAgc3RydWN0IG1nYV9kZXZpY2UgKm1nYWcyMDBfZzIwMHNlX2RldmljZV9j cmVhdGUoc3RydWN0IHBjaV9kZXYgKnBkZXYsIGNvbnN0IHN0cnUNCj4gICAJaWYgKHJldCkN Cj4gICAJCXJldHVybiBFUlJfUFRSKHJldCk7DQo+ICAgDQo+ICsJcmV0ID0gbWdhZzIwMF9k bWFfaW5pdChtZGV2KTsNCj4gKwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gRVJSX1BUUihyZXQp Ow0KPiArDQo+ICAgCXJldCA9IG1nYWcyMDBfZzIwMHNlX2luaXRfdW5pcXVlX3Jldl9pZChn MjAwc2UpOw0KPiAgIAlpZiAocmV0KQ0KPiAgIAkJcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4g ZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfZzIwMHdiLmMg Yi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDB3Yi5jDQo+IGluZGV4IDli YWE3MjdhYzZmOS4uNmU3MzFkYTg5YTVmIDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9k cm0vbWdhZzIwMC9tZ2FnMjAwX2cyMDB3Yi5jDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9t Z2FnMjAwL21nYWcyMDBfZzIwMHdiLmMNCj4gQEAgLTM0NSw2ICszNDUsMTAgQEAgc3RydWN0 IG1nYV9kZXZpY2UgKm1nYWcyMDBfZzIwMHdiX2RldmljZV9jcmVhdGUoc3RydWN0IHBjaV9k ZXYgKnBkZXYsIGNvbnN0IHN0cnUNCj4gICAJaWYgKHJldCkNCj4gICAJCXJldHVybiBFUlJf UFRSKHJldCk7DQo+ICAgDQo+ICsJcmV0ID0gbWdhZzIwMF9kbWFfaW5pdChtZGV2KTsNCj4g KwlpZiAocmV0KQ0KPiArCQlyZXR1cm4gRVJSX1BUUihyZXQpOw0KPiArDQo+ICAgCXJldCA9 IG1nYWcyMDBfZGV2aWNlX2luaXQobWRldiwgJm1nYWcyMDBfZzIwMHdiX2RldmljZV9pbmZv LA0KPiAgIAkJCQkgICZtZ2FnMjAwX2cyMDB3Yl9kZXZpY2VfZnVuY3MpOw0KPiAgIAlpZiAo cmV0KQ0KPiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9t b2RlLmMgYi9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX21vZGUuYw0KPiBpbmRl eCA3ZDhjNjUzNzJhYzQuLmFkZmM2MTQyOGRmNiAxMDA2NDQNCj4gLS0tIGEvZHJpdmVycy9n cHUvZHJtL21nYWcyMDAvbWdhZzIwMF9tb2RlLmMNCj4gKysrIGIvZHJpdmVycy9ncHUvZHJt L21nYWcyMDAvbWdhZzIwMF9tb2RlLmMNCj4gQEAgLTM5OCwxNSArMzk4LDYgQEAgc3RhdGlj IHZvaWQgbWdhZzIwMF9kaXNhYmxlX2Rpc3BsYXkoc3RydWN0IG1nYV9kZXZpY2UgKm1kZXYp DQo+ICAgCVdSRUdfRUNSVCgweDAxLCBjcnRjZXh0MSk7DQo+ICAgfQ0KPiAgIA0KPiAtc3Rh dGljIHZvaWQgbWdhZzIwMF9oYW5kbGVfZGFtYWdlKHN0cnVjdCBtZ2FfZGV2aWNlICptZGV2 LCBjb25zdCBzdHJ1Y3QgaW9zeXNfbWFwICp2bWFwLA0KPiAtCQkJCSAgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqZmIsIHN0cnVjdCBkcm1fcmVjdCAqY2xpcCkNCj4gLXsNCj4gLQlzdHJ1 Y3QgaW9zeXNfbWFwIGRzdCA9IElPU1lTX01BUF9JTklUX1ZBRERSX0lPTUVNKG1kZXYtPnZy YW0pOw0KPiAtDQo+IC0JaW9zeXNfbWFwX2luY3IoJmRzdCwgZHJtX2ZiX2NsaXBfb2Zmc2V0 KGZiLT5waXRjaGVzWzBdLCBmYi0+Zm9ybWF0LCBjbGlwKSk7DQo+IC0JZHJtX2ZiX21lbWNw eSgmZHN0LCBmYi0+cGl0Y2hlcywgdm1hcCwgZmIsIGNsaXApOw0KPiAtfQ0KPiAtDQo+ICAg LyoNCj4gICAgKiBQcmltYXJ5IHBsYW5lDQo+ICAgICovDQo+IEBAIC00NzUsOSArNDY2LDEz IEBAIHZvaWQgbWdhZzIwMF9wcmltYXJ5X3BsYW5lX2hlbHBlcl9hdG9taWNfdXBkYXRlKHN0 cnVjdCBkcm1fcGxhbmUgKnBsYW5lLA0KPiAgIAlpZiAoIWZiKQ0KPiAgIAkJcmV0dXJuOw0K PiAgIA0KPiArCWlmICghb2xkX3BsYW5lX3N0YXRlLT5mYiB8fCBmYi0+Zm9ybWF0ICE9IG9s ZF9wbGFuZV9zdGF0ZS0+ZmItPmZvcm1hdA0KPiArCSAgICB8fCBmYi0+d2lkdGggIT0gb2xk X3BsYW5lX3N0YXRlLT5mYi0+d2lkdGgpDQo+ICsJCW1nYWcyMDBfZG1hX2R3Z19zZXR1cCht ZGV2LCBmYik7DQo+ICsNCj4gICAJZHJtX2F0b21pY19oZWxwZXJfZGFtYWdlX2l0ZXJfaW5p dCgmaXRlciwgb2xkX3BsYW5lX3N0YXRlLCBwbGFuZV9zdGF0ZSk7DQo+ICAgCWRybV9hdG9t aWNfZm9yX2VhY2hfcGxhbmVfZGFtYWdlKCZpdGVyLCAmZGFtYWdlKSB7DQo+IC0JCW1nYWcy MDBfaGFuZGxlX2RhbWFnZShtZGV2LCBzaGFkb3dfcGxhbmVfc3RhdGUtPmRhdGEsIGZiLCAm ZGFtYWdlKTsNCj4gKwkJbWdhZzIwMF9kbWFfZGFtYWdlKG1kZXYsIHNoYWRvd19wbGFuZV9z dGF0ZS0+ZGF0YSwgZmIsICZkYW1hZ2UpOw0KPiAgIAl9DQo+ICAgDQo+ICAgCS8qIEFsd2F5 cyBzY2Fub3V0IGltYWdlIGF0IFZSQU0gb2Zmc2V0IDAgKi8NCj4gZGlmZiAtLWdpdCBhL2Ry aXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfcmVnLmggYi9kcml2ZXJzL2dwdS9kcm0v bWdhZzIwMC9tZ2FnMjAwX3JlZy5oDQo+IGluZGV4IDc0OGM4ZTE4ZTkzOC4uMjU2YWM5MmRh ZTU2IDEwMDY0NA0KPiAtLS0gYS9kcml2ZXJzL2dwdS9kcm0vbWdhZzIwMC9tZ2FnMjAwX3Jl Zy5oDQo+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9tZ2FnMjAwL21nYWcyMDBfcmVnLmgNCj4g QEAgLTExNiw2ICsxMTYsOSBAQA0KPiAgIA0KPiAgICNkZWZpbmUJTUdBUkVHX09QTU9ERQkJ MHgxZTU0DQo+ICAgDQo+ICsjZGVmaW5lIE1HQVJFR19QUklNQUREUgkJMHgxZTU4DQo+ICsj ZGVmaW5lIE1HQVJFR19QUklNRU5ECQkweDFlNWMNCj4gKw0KPiAgIC8qIFdhcnAgUmVnaXN0 ZXJzICovDQo+ICAgI2RlZmluZSBNR0FSRUdfV0lBRERSICAgICAgICAgICAweDFkYzANCj4g ICAjZGVmaW5lIE1HQVJFR19XSUFERFIyICAgICAgICAgIDB4MWRkOA0KPiBAQCAtMjAwLDYg KzIwMyw4IEBADQo+ICAgDQo+ICAgLyogU2VlIHRhYmxlIG9uIDQtNDMgZm9yIGJvcCBBTFUg b3BlcmF0aW9ucyAqLw0KPiAgIA0KPiArI2RlZmluZSBNR0FEV0dfUkVQTEFDRQkoMHhDIDw8 IDE2KQ0KPiArDQo+ICAgLyogU2VlIHRhYmxlIG9uIDQtNDQgZm9yIHRyYW5zbHVjaWRpdHkg bWFza3MgKi8NCj4gICANCj4gICAjZGVmaW5lIE1HQURXR19CTU9OT0xFRgkJKCAweDAwIDw8 IDI1ICkNCj4gQEAgLTIxOCw2ICsyMjMsOCBAQA0KPiAgIA0KPiAgICNkZWZpbmUgTUdBRFdH X1BBVFRFUk4JCSggMHgwMSA8PCAyOSApDQo+ICAgI2RlZmluZSBNR0FEV0dfVFJBTlNDCQko IDB4MDEgPDwgMzAgKQ0KPiArI2RlZmluZSBNR0FEV0dfQ0xJUERJUwkJKCAweDAxIDw8IDMx ICkNCj4gKw0KPiAgICNkZWZpbmUgTUdBUkVHX01JU0NfV1JJVEUJMHgzYzINCj4gICAjZGVm aW5lIE1HQVJFR19NSVNDX1JFQUQJMHgzY2MNCj4gICAjZGVmaW5lIE1HQVJFR19NRU1fTUlT Q19XUklURSAgICAgICAweDFmYzINCj4gQEAgLTYwNSw2ICs2MTIsOSBAQA0KPiAgICMgICAg ZGVmaW5lIE1HQV9UQzJfU0VMRUNUX1RNVTEgICAgICAgICAgICAgICAgICgweDgwMDAwMDAw KQ0KPiAgICNkZWZpbmUgTUdBUkVHX1RFWFRSQU5TCQkweDJjMzQNCj4gICAjZGVmaW5lIE1H QVJFR19URVhUUkFOU0hJR0gJMHgyYzM4DQo+ICsjZGVmaW5lIE1HQVJFR19TRUNBRERSCQkw eDJjNDANCj4gKyNkZWZpbmUgTUdBUkVHX1NFQ0VORAkJMHgyYzQ0DQo+ICsjZGVmaW5lIE1H QVJFR19TT0ZUUkFQCQkweDJjNDgNCj4gICAjZGVmaW5lIE1HQVJFR19URVhGSUxURVIJMHgy YzU4DQo+ICAgIyAgICBkZWZpbmUgTUdBX01JTl9OUlNUICAgICAgICAgICAgICAgICAgICAg ICAgKDB4MDAwMDAwMDApDQo+ICAgIyAgICBkZWZpbmUgTUdBX01JTl9CSUxJTiAgICAgICAg ICAgICAgICAgICAgICAgKDB4MDAwMDAwMDIpDQo+IEBAIC02OTEsNCArNzAxLDE5IEBADQo+ ICAgI2RlZmluZSBNR0FfQUdQMlhQTExfRU5BQkxFCQkweDENCj4gICAjZGVmaW5lIE1HQV9B R1AyWFBMTF9ESVNBQkxFCQkweDANCj4gICANCj4gKw0KPiArI2RlZmluZSBEV0dSRUcwCQkw eDFjMDANCj4gKyNkZWZpbmUgRFdHUkVHMF9FTkQJMHgxZGZmDQo+ICsjZGVmaW5lIERXR1JF RzEJCTB4MmMwMA0KPiArI2RlZmluZSBEV0dSRUcxX0VORAkweDJkZmYNCj4gKw0KPiArLyog VGhlc2UgbWFjcm9zIGNvbnZlcnQgcmVnaXN0ZXIgYWRkcmVzcyB0byB0aGUgOCBiaXQgY29t bWFuZCBpbmRleCB1c2VkIHdpdGggRE1BDQo+ICsgKiBJdCByZW1hcHMgMHgxYzAwLTB4MWRm ZiB0byAweDAwLTB4N2YgKFJFRzApDQo+ICsgKiBhbmQgMHgyYzAwLTB4MmRmZiB0byAweDgw LTB4ZmYgKFJFRzEpDQo+ICsgKi8NCj4gKyNkZWZpbmUgSVNSRUcwKHIpCShyID49IERXR1JF RzAgJiYgciA8PSBEV0dSRUcwX0VORCkNCj4gKyNkZWZpbmUgRE1BUkVHMChyKQkoKHU4KSgo ciAtIERXR1JFRzApID4+IDIpKQ0KPiArI2RlZmluZSBETUFSRUcxKHIpCSgodTgpKCgociAt IERXR1JFRzEpID4+IDIpIHwgMHg4MCkpDQo+ICsjZGVmaW5lIERNQVJFRyhyKQkoSVNSRUcw KChyKSkgPyBETUFSRUcwKChyKSkgOiBETUFSRUcxKChyKSkpDQo+ICsNCj4gICAjZW5kaWYN Cg0KLS0gDQpUaG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJpdmVyIERldmVsb3Blcg0K U1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpGcmFua2Vuc3RyYXNzZSAx NDYsIDkwNDYxIE51ZXJuYmVyZywgR2VybWFueQ0KR0Y6IEl2byBUb3RldiwgQW5kcmV3IE15 ZXJzLCBBbmRyZXcgTWNEb25hbGQsIEJvdWRpZW4gTW9lcm1hbg0KSFJCIDM2ODA5IChBRyBO dWVybmJlcmcpDQo= --------------9Qho0vVB5MgKhctfWEWWV9Vn-- --------------TmQBa7Nep3QYTv1ZJo2YruWx 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+AFAmSLHycFAwAAAAAACgkQlh/E3EQov+AB EBAAryGCmJF4k4MjZttwSqigppi6++Lk98otn58KgLv8Ik5Z9QEVKCY3a1+V+9rw/+LgFFCIKzWG aeiuMljGZkgYCmkNnuKqBusyipS4CA89Hbe2fFZM8e9fUPcA/qm0MFQBO8X60PSOEXrnX6Y9RLTP U8znKldv3OwIIo1JoNZPTzOis+5K5his5J55GMRiEvujbtLTuqjdQ1XmGQmm7c8VvOFvSJlOdpBQ kL8SffCHQtjP6nVfrPjJkZRLOH8V09ilRvUDfuCVrRgP2HrCx9X35e8mox2Tq0qSGXI1Wj7gcUmh wZsxLJxeywaUlfMRpg7297c1/eXQIFH/a0gqESw9Ee0+WnQ5Fg9AUnKbR+d/4M3ON/lNfvZCyOOl LoktWH4C0gTe3vlUyM4CR1bVDWV4VSpSqmZCcO856D8Dj8IvLaE7qL6tpe7J2UCxWV/ZJ0jbscJ9 WgdnF/Xi3F4F+q5Ws7H8nTgbY696WvDXx3WOqLJkCOEfvBkNvVnNxTUR/5fnD5oF93PgxsSAjWot KhEGL0433Xp72WNyZE7B2eczdtDj4PyUmWWZrP4wrjqTT+WTYupT/pe8c1jiNNu5Kjsq0YJ7QMW4 vpa6mAxTJZ0ujVrH6CEVEUWvq5x+t0Ih6ne4w8HwRyr9dc/F/0Kh33XK6BbC74gp9FlkqJAcM1xs 7jw= =gegY -----END PGP SIGNATURE----- --------------TmQBa7Nep3QYTv1ZJo2YruWx--