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 vger.kernel.org (vger.kernel.org [23.128.96.18]) by smtp.lore.kernel.org (Postfix) with ESMTP id 790B2C05027 for ; Fri, 17 Feb 2023 09:20:50 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S230029AbjBQJUt (ORCPT ); Fri, 17 Feb 2023 04:20:49 -0500 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:49848 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229513AbjBQJUr (ORCPT ); Fri, 17 Feb 2023 04:20:47 -0500 Received: from smtp-out2.suse.de (smtp-out2.suse.de [195.135.220.29]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 1C99A2D78 for ; Fri, 17 Feb 2023 01:20:41 -0800 (PST) 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 BCB871FDB3; Fri, 17 Feb 2023 09:20:39 +0000 (UTC) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_rsa; t=1676625639; 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=utdqmWYg7nYdFmwSgloG05qexd0tx+cQwn/fmxf4XqU=; b=Zhcdi7aIDNpB8kJcfWfFAT0F/YGJUXE1fVCETD3+YDWKLt4QUSAWQju3TDSku+IkjEp6C/ QXr7egfKl+qrxUv8fPs3haCgm9rcv3UGya7U65lIRQdj47vuTGdf5/oJWDFjSXl1gu+i4r RwWki6SHnNyPO3DHsnJFkQL0WdtbAfE= DKIM-Signature: v=1; a=ed25519-sha256; c=relaxed/relaxed; d=suse.de; s=susede2_ed25519; t=1676625639; 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=utdqmWYg7nYdFmwSgloG05qexd0tx+cQwn/fmxf4XqU=; b=fncJ8iky1NSyTfAsROPf1gONRA/UghtBgKDjOuqGXlJjq2xEoIqLD7dZ8S/tAhOJ8ThRr1 rAogwHvGZ4hM/MDg== 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 64EA8138E3; Fri, 17 Feb 2023 09:20:39 +0000 (UTC) Received: from dovecot-director2.suse.de ([192.168.254.65]) by imap2.suse-dmz.suse.de with ESMTPSA id x/y0F+dG72OpEgAAMHmgww (envelope-from ); Fri, 17 Feb 2023 09:20:39 +0000 Message-ID: <8f9a31fb-edb6-db16-414b-63cc574ce19c@suse.de> Date: Fri, 17 Feb 2023 10:20:38 +0100 MIME-Version: 1.0 User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:102.0) Gecko/20100101 Thunderbird/102.6.1 Subject: Re: [PATCH v2] drm: add kms driver for loongson display controller Content-Language: en-US To: Sui jingfeng , suijingfeng <15330273260@189.cn>, Maarten Lankhorst , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org References: <20230205161724.488421-1-15330273260@189.cn> <1b9df663-5dbc-d7f2-a1d6-41594983f1f0@suse.de> <423287b6-a25e-299a-bb35-783507dcbf16@loongson.cn> From: Thomas Zimmermann In-Reply-To: <423287b6-a25e-299a-bb35-783507dcbf16@loongson.cn> Content-Type: multipart/signed; micalg=pgp-sha256; protocol="application/pgp-signature"; boundary="------------O8tJZ7PsBqgGb5SDfhAIODj1" Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org This is an OpenPGP/MIME signed message (RFC 4880 and 3156) --------------O8tJZ7PsBqgGb5SDfhAIODj1 Content-Type: multipart/mixed; boundary="------------O0K4Xb8cp0T1Koy4mV8AuXNv"; protected-headers="v1" From: Thomas Zimmermann To: Sui jingfeng , suijingfeng <15330273260@189.cn>, Maarten Lankhorst , Maxime Ripard , David Airlie , Daniel Vetter Cc: dri-devel@lists.freedesktop.org, linux-kernel@vger.kernel.org Message-ID: <8f9a31fb-edb6-db16-414b-63cc574ce19c@suse.de> Subject: Re: [PATCH v2] drm: add kms driver for loongson display controller References: <20230205161724.488421-1-15330273260@189.cn> <1b9df663-5dbc-d7f2-a1d6-41594983f1f0@suse.de> <423287b6-a25e-299a-bb35-783507dcbf16@loongson.cn> In-Reply-To: <423287b6-a25e-299a-bb35-783507dcbf16@loongson.cn> --------------O0K4Xb8cp0T1Koy4mV8AuXNv Content-Type: text/plain; charset=UTF-8; format=flowed Content-Transfer-Encoding: base64 SGkNCg0KQW0gMTMuMDIuMjMgdW0gMDU6MjQgc2NocmllYiBTdWkgamluZ2Zlbmc6DQpbLi4u XQ0KPiANCj4+IEhlcmUncyB3aGVyZSB3ZSBzZWxlY3QgdGhlIGNoaXA6DQo+Pg0KPj4NCj4+ IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29tL2xpbnV4L2xhdGVzdC9zb3VyY2UvZHJpdmVy cy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9kcnYuYyNMMjI3DQo+Pg0KPj4gVGhlcmUncyBh IHNvdXJjZSBmaWxlIGZvciBlYWNoIGNoaXAgYW5kIHRoZSBjb21tb24gc291cmNlIGNvZGUg aXMgaW4NCj4+DQo+IEkgd2lsbCBmb2xsb3cgdGhpcyBtZXRob2QgYXQgbmV4dCB2ZXJzaW9u LCBidXQgb3VyIGhhcmR3YXJlIGFuZCBiaW9zIA0KPiBlbmdpbmVlcnMgaXMgdWdseSwgdGhl eSBvZnRlbiBtYWRlIHRoZSBjaGlwIGluZGlzdGluZ3Vpc2hhYmxlLg0KPiANCj4gbHM3YTEw MDAgYW5kIGxzMmsxMDAwIGhhdmUgdGhlIHNhbWUgcGNpIGRldmljZcKgIGlkLCBsczdhMjAw MCBhbmQgDQo+IGxzMmsyMDAwIGhhdmUgdGhlIHNhbWUgcGNpIGRldmljZSBpZCwNCj4gDQo+ IGV2ZW4gdGhlIHJldmlzaW9uIGlkIGlzIHNhbWUuIEkgaGF2ZSBubyBjaG9pY2UgYnV0IHRv IHJlbHkgb24gRFQgb3IgDQoNClJlbHlpbmcgb24gRFQgaXMgbm90IGEgcHJvYmxlbS4gTWFu eSBkcml2ZXJzIGRvIHRoYXQuDQoNCj4ga2VybmVsIGNtZCBwYXNzaW5nIHBhcmFtZXRlcnMu DQoNCkl0J3MgYWxzbyBvayB0byB0byByZWFkIHZlcnNpb24gaW5mb3JtYXRpb24gZnJvbSBh IHN0YXR1cyByZWdpc3Rlci4gSWYgDQp5b3UgcmVhbGx5IGhhdmUgbW9kZWxzIHRoYXQgY2Fu bm90IGJlIGRldGVjdCwgdGhhdCdzIG1vcmUgb2YgYSBwcm9ibGVtLg0KDQo+IA0KPiBtYW55 IHJldmlld2VycyBhbmQgbWFpbnRhaW5lciBzZWVtIG5vdCBoYXBweSBhYm91dCB0aGlzLg0K DQpCeSBtYWludGFpbmVycywgeW91IG1lYW4gbWFpbnRhaW5lcnMgaW4gb3RoZXIgcGFydHMg b2YgdGhlIExpbnV4IGtlcm5lbD8gDQpEaWQgdGhleSBvZmZlciBhIHNvbHV0aW9uIG9uIGhv dyB0byBkZWFsIHdpdGggdGhpcyBzaXR1YXRpb24/DQpEbyB5b3UgaGF2ZSBhIGxpbmsgdG8g c3VjaGEgZGlzY3Vzc2lvbj8NCg0KPiANCj4+IGh0dHBzOi8vZWxpeGlyLmJvb3RsaW4uY29t L2xpbnV4L2xhdGVzdC9zb3VyY2UvZHJpdmVycy9ncHUvZHJtL21nYWcyMDAvbWdhZzIwMF9t b2RlLmMNCj4+DQo+Pg0KPj4+ICvCoMKgwqAgLnJlc2V0ID0gbHNkY19jcnRjX3Jlc2V0LA0K Pj4+ICvCoMKgwqAgLmRlc3Ryb3kgPSBkcm1fY3J0Y19jbGVhbnVwLA0KPj4+ICvCoMKgwqAg LnNldF9jb25maWcgPSBkcm1fYXRvbWljX2hlbHBlcl9zZXRfY29uZmlnLA0KPj4+ICvCoMKg wqAgLnBhZ2VfZmxpcCA9IGRybV9hdG9taWNfaGVscGVyX3BhZ2VfZmxpcCwNCj4+PiArwqDC oMKgIC5hdG9taWNfZHVwbGljYXRlX3N0YXRlID0gbHNkY19jcnRjX2F0b21pY19kdXBsaWNh dGVfc3RhdGUsDQo+Pj4gK8KgwqDCoCAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBsc2RjX2Ny dGNfYXRvbWljX2Rlc3Ryb3lfc3RhdGUsDQo+Pj4gK8KgwqDCoCAuZ2V0X3ZibGFua19jb3Vu dGVyID0gbHNkY19nZXRfdmJsYW5rX2NvdW50ZXIsDQo+Pj4gK8KgwqDCoCAuZW5hYmxlX3Zi bGFuayA9IGxzZGNfY3J0Y19lbmFibGVfdmJsYW5rLA0KPj4+ICvCoMKgwqAgLmRpc2FibGVf dmJsYW5rID0gbHNkY19jcnRjX2Rpc2FibGVfdmJsYW5rLA0KPj4+ICvCoMKgwqAgLmdldF92 YmxhbmtfdGltZXN0YW1wID0gDQo+Pj4gZHJtX2NydGNfdmJsYW5rX2hlbHBlcl9nZXRfdmJs YW5rX3RpbWVzdGFtcCwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBlbnVtIGRybV9t b2RlX3N0YXR1cw0KPj4+ICtsc2RjX2NydGNfbW9kZV92YWxpZChzdHJ1Y3QgZHJtX2NydGMg KmNydGMsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgZHJt X2Rpc3BsYXlfbW9kZSAqbW9kZSkNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9k ZXZpY2UgKmRkZXYgPSBjcnRjLT5kZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZp Y2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxz ZGNfZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsNCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAo bW9kZS0+aGRpc3BsYXkgPiBkZXNjcC0+bWF4X3dpZHRoKQ0KPj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gTU9ERV9CQURfSFZBTFVFOw0KPj4+ICvCoMKgwqAgaWYgKG1vZGUtPnZkaXNw bGF5ID4gZGVzY3AtPm1heF9oZWlnaHQpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBN T0RFX0JBRF9WVkFMVUU7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKG1vZGUtPmNsb2NrID4g ZGVzY3AtPm1heF9waXhlbF9jbGspIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2RiZyhk ZGV2LCAibW9kZSAlZHglZCwgcGl4ZWwgY2xvY2s9JWQgaXMgdG9vIGhpZ2hcbiIsDQo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbW9kZS0+aGRpc3BsYXksIG1vZGUtPnZkaXNwbGF5 LCBtb2RlLT5jbG9jayk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBNT0RFX0NMT0NL X0hJR0g7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKChtb2RlLT5o ZGlzcGxheSAqIDQpICUgZGVzY3AtPnBpdGNoX2FsaWduKSB7DQo+Pj4gK8KgwqDCoMKgwqDC oMKgIGRybV9kYmcoZGRldiwgInN0cmlkZSBpcyByZXF1aXJlIHRvIG5vdCAldSBieXRlcyBh bGlnbmVkXG4iLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRlc2NwLT5waXRjaF9h bGlnbik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBNT0RFX0JBRDsNCj4+PiArwqDC oMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gTU9ERV9PSzsNCj4+PiArfQ0KPj4+ ICsNCj4+PiArc3RhdGljIGludCBsc2RjX3BpeHBsbF9hdG9taWNfY2hlY2soc3RydWN0IGRy bV9jcnRjICpjcnRjLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgZHJtX2NydGNfc3RhdGUgKnN0YXRlKQ0KPj4+ICt7DQo+Pj4gK8KgwqDC oCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSBjcnRjX3RvX2Rpc3BsYXlf cGlwZShjcnRjKTsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX3BsbCAqcGl4cGxsID0gJmRp c3BpcGUtPnBpeHBsbDsNCj4+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9m dW5jcyAqcGZ1bmNzID0gcGl4cGxsLT5mdW5jczsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2NydGNfc3RhdGUgKnByaXZfc3RhdGUgPSB0b19sc2RjX2NydGNfc3RhdGUoc3RhdGUpOw0K Pj4+ICvCoMKgwqAgYm9vbCByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0ID0gcGZ1bmNz LT5jb21wdXRlKHBpeHBsbCwgc3RhdGUtPm1vZGUuY2xvY2ssIA0KPj4+ICZwcml2X3N0YXRl LT5wcGFybXMpOw0KPj4+ICvCoMKgwqAgaWYgKHJldCkNCj4+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIDA7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX3dhcm4oY3J0Yy0+ZGV2LCAiZmFp bGVkIGZpbmQgUExMIHBhcmFtZXRlcnMgZm9yICV1XG4iLCANCj4+PiBzdGF0ZS0+bW9kZS5j bG9jayk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuIC1FSU5WQUw7DQo+Pj4gK30NCj4+ PiArDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19jcnRjX2hlbHBlcl9hdG9taWNfY2hlY2soc3Ry dWN0IGRybV9jcnRjICpjcnRjLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4+PiArew0K Pj4+ICvCoMKgwqAgc3RydWN0IGRybV9jcnRjX3N0YXRlICpjcnRjX3N0YXRlID0gDQo+Pj4g ZHJtX2F0b21pY19nZXRfbmV3X2NydGNfc3RhdGUoc3RhdGUsIGNydGMpOw0KPj4+ICsNCj4+ PiArwqDCoMKgIGlmICghY3J0Y19zdGF0ZS0+ZW5hYmxlKQ0KPj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gMDsgLyogbm8gbW9kZSBjaGVja3MgaWYgQ1JUQyBpcyBiZWluZyBkaXNhYmxl ZCAqLw0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBsc2RjX3BpeHBsbF9hdG9taWNfY2hl Y2soY3J0YywgY3J0Y19zdGF0ZSk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyB2b2lk IGxzZGNfdXBkYXRlX3BpeGNsayhzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUs DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbHNk Y19jcnRjX3N0YXRlICpwcml2X3N0YXRlKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3Qg bHNkY19wbGwgKnBpeHBsbCA9ICZkaXNwaXBlLT5waXhwbGw7DQo+Pj4gK8KgwqDCoCBjb25z dCBzdHJ1Y3QgbHNkY19waXhwbGxfZnVuY3MgKmNsa2Z1bmMgPSBwaXhwbGwtPmZ1bmNzOw0K Pj4+ICsNCj4+PiArwqDCoMKgIGNsa2Z1bmMtPnVwZGF0ZShwaXhwbGwsICZwcml2X3N0YXRl LT5wcGFybXMpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBsc2RjX2NydGNf aGVscGVyX21vZGVfc2V0X25vZmIoc3RydWN0IGRybV9jcnRjICpjcnRjKQ0KPj4+ICt7DQo+ Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGNydGMtPmRldjsNCj4+PiAr wqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4g K8KgwqDCoCBzdHJ1Y3QgZHJtX2Rpc3BsYXlfbW9kZSAqbW9kZSA9ICZjcnRjLT5zdGF0ZS0+ bW9kZTsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9 IGNydGNfdG9fZGlzcGxheV9waXBlKGNydGMpOw0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNf Y3J0Y19zdGF0ZSAqcHJpdl9zdGF0ZSA9IA0KPj4+IHRvX2xzZGNfY3J0Y19zdGF0ZShjcnRj LT5zdGF0ZSk7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXggPSBkaXNwaXBlLT5p bmRleDsNCj4+PiArwqDCoMKgIHUzMiBoX3N5bmMsIHZfc3luYywgaF92YWwsIHZfdmFsOw0K Pj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiAyNjoxNiB0b3Rh bCBwaXhlbHMsIDEwOjAgdmlzaWFibGUgcGl4ZWxzLCBpbiBob3Jpem9udGFsICovDQo+Pj4g K8KgwqDCoCBoX3ZhbCA9IChtb2RlLT5jcnRjX2h0b3RhbCA8PCAxNikgfCBtb2RlLT5jcnRj X2hkaXNwbGF5Ow0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIDI2OjE2IHRvdGFsIHBpeGVscywg MTA6MCB2aXNpYWJsZSBwaXhlbHMsIGluIHZlcnRpY2FsICovDQo+Pj4gK8KgwqDCoCB2X3Zh bCA9IChtb2RlLT5jcnRjX3Z0b3RhbCA8PCAxNikgfCBtb2RlLT5jcnRjX3ZkaXNwbGF5Ow0K Pj4+ICvCoMKgwqAgLyogMjY6MTYgaHN5bmMgZW5kLCAxMDowIGhzeW5jIHN0YXJ0LCBiaXQg MzAgaXMgaHN5bmMgZW5hYmxlICovDQo+Pj4gK8KgwqDCoCBoX3N5bmMgPSAobW9kZS0+Y3J0 Y19oc3luY19lbmQgPDwgMTYpIHwgbW9kZS0+Y3J0Y19oc3luY19zdGFydCB8IA0KPj4+IENG R19IU1lOQ19FTjsNCj4+PiArwqDCoMKgIGlmIChtb2RlLT5mbGFncyAmIERSTV9NT0RFX0ZM QUdfTkhTWU5DKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCBoX3N5bmMgfD0gQ0ZHX0hTWU5DX0lO VjsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiAyNjoxNiB2c3luYyBlbmQsIDEwOjAgdnN5bmMg c3RhcnQsIGJpdCAzMCBpcyB2c3luYyBlbmFibGUgKi8NCj4+PiArwqDCoMKgIHZfc3luYyA9 IChtb2RlLT5jcnRjX3ZzeW5jX2VuZCA8PCAxNikgfCBtb2RlLT5jcnRjX3ZzeW5jX3N0YXJ0 IHwgDQo+Pj4gQ0ZHX1ZTWU5DX0VOOw0KPj4+ICvCoMKgwqAgaWYgKG1vZGUtPmZsYWdzICYg RFJNX01PREVfRkxBR19OVlNZTkMpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZfc3luYyB8PSBD RkdfVlNZTkNfSU5WOw0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKSB7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1JUQzBfSERJU1BM QVlfUkVHLCBoX3ZhbCk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYs IExTRENfQ1JUQzBfVkRJU1BMQVlfUkVHLCB2X3ZhbCk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1JUQzBfSFNZTkNfUkVHLCBoX3N5bmMpOw0KPj4+ ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMwX1ZTWU5DX1JF Rywgdl9zeW5jKTsNCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IGxzZGNfcnJl ZzMyKGxkZXYsIExTRENfQ1JUQzBfQ0ZHX1JFRyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZh bCA9ICh2YWwgJiB+TFNEQ19ETUFfU1RFUF9NQVNLKSB8IExTRENfRE1BX1NURVBfMjU2X0JZ VEVTOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NSVEMw X0NGR19SRUcsIHZhbCk7DQo+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKGluZGV4ID09IDEpIHsN Cj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DUlRDMV9IRElT UExBWV9SRUcsIGhfdmFsKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRl diwgTFNEQ19DUlRDMV9WRElTUExBWV9SRUcsIHZfdmFsKTsNCj4+PiArwqDCoMKgwqDCoMKg wqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DUlRDMV9IU1lOQ19SRUcsIGhfc3luYyk7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1JUQzFfVlNZTkNf UkVHLCB2X3N5bmMpOw0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gbHNkY19y cmVnMzIobGRldiwgTFNEQ19DUlRDMV9DRkdfUkVHKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAg dmFsID0gKHZhbCAmIH5MU0RDX0RNQV9TVEVQX01BU0spIHwgTFNEQ19ETUFfU1RFUF8yNTZf QllURVM7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1JU QzFfQ0ZHX1JFRywgdmFsKTsNCj4+PiArwqDCoMKgIH0NCj4+DQo+PiBTYW1lIGhlcmUgYXMg d2l0aCB2Ymxhbms6IGhhdmUgb25lIGhlbHBlciBmb3IgZWFjaCBpbmRleCBhbmQgdXNlIA0K Pj4gZGlmZmVyZW50IF9mdW5jcyBzdHJ1Y3R1cmVzIGZvciBlYWNoIHBpcGVsaW5lLg0KPj4N Cj4gV2VsbCwgSSB3aWxsIHJldmlzZSBsc2RjIGRyaXZlciB3aXRoIHRoaXMgaWRlYSBpbiBt aW5kLg0KPj4+ICsNCj4+PiArwqDCoMKgIGRybV9kYmcoZGRldiwgIiVzIG1vZGVzZXQ6ICV1 eCV1XG4iLA0KPj4+ICvCoMKgwqDCoMKgwqDCoCBjcnRjLT5uYW1lLCBtb2RlLT5oZGlzcGxh eSwgbW9kZS0+dmRpc3BsYXkpOw0KPj4+ICsNCj4+PiArwqDCoMKgIGxzZGNfdXBkYXRlX3Bp eGNsayhkaXNwaXBlLCBwcml2X3N0YXRlKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGlj IHZvaWQgbHNkY19lbmFibGVfZGlzcGxheShzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYsIHVu c2lnbmVkIA0KPj4+IGludCBpbmRleCkNCj4+PiArew0KPj4+ICvCoMKgwqAgdTMyIHZhbDsN Cj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoaW5kZXggPT0gMCkgew0KPj4+ICvCoMKgwqDCoMKg wqDCoCB2YWwgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMwX0NGR19SRUcpOw0KPj4+ ICvCoMKgwqDCoMKgwqDCoCB2YWwgfD0gQ0ZHX09VVFBVVF9FTjsNCj4+PiArwqDCoMKgwqDC oMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHLCB2YWwpOw0KPj4+ ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvC oMKgwqAgaWYgKGluZGV4ID09IDEpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gbHNk Y19ycmVnMzIobGRldiwgTFNEQ19DUlRDMV9DRkdfUkVHKTsNCj4+PiArwqDCoMKgwqDCoMKg wqAgdmFsIHw9IENGR19PVVRQVVRfRU47DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3Jl ZzMyKGxkZXYsIExTRENfQ1JUQzFfQ0ZHX1JFRywgdmFsKTsNCj4+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMg dm9pZCBsc2RjX2Rpc2FibGVfZGlzcGxheShzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYsIHVu c2lnbmVkIA0KPj4+IGludCBpbmRleCkNCj4+PiArew0KPj4+ICvCoMKgwqAgdTMyIHZhbDsN Cj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoaW5kZXggPT0gMCkgew0KPj4+ICvCoMKgwqDCoMKg wqDCoCB2YWwgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMwX0NGR19SRUcpOw0KPj4+ ICvCoMKgwqDCoMKgwqDCoCB2YWwgJj0gfkNGR19PVVRQVVRfRU47DQo+Pj4gK8KgwqDCoMKg wqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1JUQzBfQ0ZHX1JFRywgdmFsKTsNCj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiAr wqDCoMKgIGlmIChpbmRleCA9PSAxKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IGxz ZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzFfQ0ZHX1JFRyk7DQo+Pj4gK8KgwqDCoMKgwqDC oMKgIHZhbCAmPSB+Q0ZHX09VVFBVVF9FTjsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193 cmVnMzIobGRldiwgTFNEQ19DUlRDMV9DRkdfUkVHLCB2YWwpOw0KPj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm47DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRp YyB2b2lkIGxzZGNfY3J0Y19oZWxwZXJfYXRvbWljX2VuYWJsZShzdHJ1Y3QgZHJtX2NydGMg KmNydGMsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4+PiArew0KPj4+ICvCoMKg wqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBjcnRjLT5kZXY7DQo+Pj4gK8KgwqDCoCBz dHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICsNCj4+PiAr wqDCoMKgIGRybV9jcnRjX3ZibGFua19vbihjcnRjKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBs c2RjX2VuYWJsZV9kaXNwbGF5KGxkZXYsIGRybV9jcnRjX2luZGV4KGNydGMpKTsNCj4+PiAr DQo+Pj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICIlczogZW5hYmxlZFxuIiwgY3J0Yy0+bmFt ZSk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfY3J0Y19oZWxwZXJf YXRvbWljX2Rpc2FibGUoc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWlj X3N0YXRlICpzdGF0ZSkNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2Ug KmRkZXYgPSBjcnRjLT5kZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxk ZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICsNCj4+PiArwqDCoMKgIGxzZGNfZGlzYWJsZV9k aXNwbGF5KGxkZXYsIGRybV9jcnRjX2luZGV4KGNydGMpKTsNCj4+PiArDQo+Pj4gK8KgwqDC oCBkcm1fY3J0Y193YWl0X29uZV92YmxhbmsoY3J0Yyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAg ZHJtX2NydGNfdmJsYW5rX29mZihjcnRjKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fZGJn KGRkZXYsICIlczogZGlzYWJsZWRcbiIsIGNydGMtPm5hbWUpOw0KPj4+ICt9DQo+Pj4gKw0K Pj4+ICtzdGF0aWMgdm9pZCBsc2RjX2NydGNfYXRvbWljX2ZsdXNoKHN0cnVjdCBkcm1fY3J0 YyAqY3J0YywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0 cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkNCj4+PiArew0KPj4+ICvCoMKgwqAgc3Bp bl9sb2NrX2lycSgmY3J0Yy0+ZGV2LT5ldmVudF9sb2NrKTsNCj4+PiArwqDCoMKgIGlmIChj cnRjLT5zdGF0ZS0+ZXZlbnQpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGRybV9jcnRj X3ZibGFua19nZXQoY3J0YykgPT0gMCkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk cm1fY3J0Y19hcm1fdmJsYW5rX2V2ZW50KGNydGMsIGNydGMtPnN0YXRlLT5ldmVudCk7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBk cm1fY3J0Y19zZW5kX3ZibGFua19ldmVudChjcnRjLCBjcnRjLT5zdGF0ZS0+ZXZlbnQpOw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBjcnRjLT5zdGF0ZS0+ZXZlbnQgPSBOVUxMOw0KPj4+ICvC oMKgwqAgfQ0KPj4+ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxKCZjcnRjLT5kZXYtPmV2ZW50 X2xvY2spOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgYm9vbCBsc2RjX2NydGNfZ2V0 X3NjYW5vdXRfcG9zaXRpb24oc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBib29sIGluX3ZibGFua19p cnEsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGludCAqdnBvcywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqAgaW50ICpocG9zLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBrdGltZV90ICpzdGltZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAga3RpbWVfdCAqZXRpbWUsDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGNvbnN0IHN0cnVj dCBkcm1fZGlzcGxheV9tb2RlICptb2RlKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2RldmljZSAqZGRldiA9IGNydGMtPmRldjsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBp bnQgaW5kZXggPSBkcm1fY3J0Y19pbmRleChjcnRjKTsNCj4+PiArwqDCoMKgIGludCBsaW5l LCB2c3csIHZicCwgdmFjdGl2ZV9zdGFydCwgdmFjdGl2ZV9lbmQsIHZmcF9lbmQ7DQo+Pj4g K8KgwqDCoCB1MzIgdmFsID0gMDsNCj4+PiArDQo+Pj4gK8KgwqDCoCB2c3cgPSBtb2RlLT5j cnRjX3ZzeW5jX2VuZCAtIG1vZGUtPmNydGNfdnN5bmNfc3RhcnQ7DQo+Pj4gK8KgwqDCoCB2 YnAgPSBtb2RlLT5jcnRjX3Z0b3RhbCAtIG1vZGUtPmNydGNfdnN5bmNfZW5kOw0KPj4+ICsN Cj4+PiArwqDCoMKgIHZhY3RpdmVfc3RhcnQgPSB2c3cgKyB2YnAgKyAxOw0KPj4+ICsNCj4+ PiArwqDCoMKgIHZhY3RpdmVfZW5kID0gdmFjdGl2ZV9zdGFydCArIG1vZGUtPmNydGNfdmRp c3BsYXk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyogbGFzdCBzY2FuIGxpbmUgYmVmb3JlIFZT WU5DICovDQo+Pj4gK8KgwqDCoCB2ZnBfZW5kID0gbW9kZS0+Y3J0Y192dG90YWw7DQo+Pj4g Kw0KPj4+ICvCoMKgwqAgaWYgKHN0aW1lKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCAqc3RpbWUg PSBrdGltZV9nZXQoKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoaW5kZXggPT0gMCkNCj4+ PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9T Q0FOX1BPU19SRUcpOw0KPj4+ICvCoMKgwqAgZWxzZSBpZiAoaW5kZXggPT0gMSkNCj4+PiAr wqDCoMKgwqDCoMKgwqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMV9TQ0FO X1BPU19SRUcpOw0KPj4+ICsNCj4+PiArwqDCoMKgIGxpbmUgPSAodmFsICYgMHhmZmZmKTsN Cj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAobGluZSA8IHZhY3RpdmVfc3RhcnQpDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIGxpbmUgLT0gdmFjdGl2ZV9zdGFydDsNCj4+PiArwqDCoMKgIGVsc2Ug aWYgKGxpbmUgPiB2YWN0aXZlX2VuZCkNCj4+PiArwqDCoMKgwqDCoMKgwqAgbGluZSA9IGxp bmUgLSB2ZnBfZW5kIC0gdmFjdGl2ZV9zdGFydDsNCj4+PiArwqDCoMKgIGVsc2UNCj4+PiAr wqDCoMKgwqDCoMKgwqAgbGluZSAtPSB2YWN0aXZlX3N0YXJ0Ow0KPj4+ICsNCj4+PiArwqDC oMKgICp2cG9zID0gbGluZTsNCj4+PiArwqDCoMKgICpocG9zID0gdmFsID4+IDE2Ow0KPj4+ ICsNCj4+PiArwqDCoMKgIGlmIChldGltZSkNCj4+PiArwqDCoMKgwqDCoMKgwqAgKmV0aW1l ID0ga3RpbWVfZ2V0KCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuIHRydWU7DQo+Pj4g K30NCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2NydGNfaGVscGVyX2Z1 bmNzIGxzZGNfY3J0Y19oZWxwZXJfZnVuY3MgPSB7DQo+Pj4gK8KgwqDCoCAubW9kZV92YWxp ZCA9IGxzZGNfY3J0Y19tb2RlX3ZhbGlkLA0KPj4+ICvCoMKgwqAgLm1vZGVfc2V0X25vZmIg PSBsc2RjX2NydGNfaGVscGVyX21vZGVfc2V0X25vZmIsDQo+Pj4gK8KgwqDCoCAuYXRvbWlj X2VuYWJsZSA9IGxzZGNfY3J0Y19oZWxwZXJfYXRvbWljX2VuYWJsZSwNCj4+PiArwqDCoMKg IC5hdG9taWNfZGlzYWJsZSA9IGxzZGNfY3J0Y19oZWxwZXJfYXRvbWljX2Rpc2FibGUsDQo+ Pj4gK8KgwqDCoCAuYXRvbWljX2NoZWNrID0gbHNkY19jcnRjX2hlbHBlcl9hdG9taWNfY2hl Y2ssDQo+Pj4gK8KgwqDCoCAuYXRvbWljX2ZsdXNoID0gbHNkY19jcnRjX2F0b21pY19mbHVz aCwNCj4+PiArwqDCoMKgIC5nZXRfc2Nhbm91dF9wb3NpdGlvbiA9IGxzZGNfY3J0Y19nZXRf c2Nhbm91dF9wb3NpdGlvbiwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK2ludCBsc2RjX2NydGNf aW5pdChzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCB1 bnNpZ25lZCBpbnQgaW5kZXgsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBk cm1fcGxhbmUgKnByaW1hcnksDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBk cm1fcGxhbmUgKmN1cnNvcikNCj4+PiArew0KPj4+ICvCoMKgwqAgaW50IHJldDsNCj4+PiAr DQo+Pj4gK8KgwqDCoCByZXQgPSBkcm1fY3J0Y19pbml0X3dpdGhfcGxhbmVzKGRkZXYsIGNy dGMsIHByaW1hcnksIGN1cnNvciwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgJmxzZGNfY3J0Y19mdW5jcywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgIkNSVEMtJWQiLCBpbmRleCk7DQo+Pj4gKw0KPj4+ICvC oMKgwqAgaWYgKHJldCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKGRkZXYsICJj cnRjIGluaXQgd2l0aCBwbGFuZXMgZmFpbGVkOiAlZFxuIiwgcmV0KTsNCj4+PiArwqDCoMKg wqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDC oCBkcm1fY3J0Y19oZWxwZXJfYWRkKGNydGMsICZsc2RjX2NydGNfaGVscGVyX2Z1bmNzKTsN Cj4+PiArDQo+Pj4gK8KgwqDCoCByZXQgPSBkcm1fbW9kZV9jcnRjX3NldF9nYW1tYV9zaXpl KGNydGMsIDI1Nik7DQo+Pj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4+ICvCoMKgwqDCoMKgwqDC oCBkcm1fd2FybihkZGV2LCAic2V0IHRoZSBnYW1tYSB0YWJsZSBzaXplIGZhaWxlZFxuIik7 DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX2NydGNfZW5hYmxlX2NvbG9yX21nbXQoY3J0Yywg MCwgZmFsc2UsIDI1Nik7DQo+Pg0KPj4gTWF5YmUgbGVhdmUgdGhpcyBvdXQgZm9yIG5vdy4g WW91IG5lZWQgdG8gaGFuZGxlIHRoZSBwcm9wZXJ0eSBpbiB5b3VyIA0KPj4gZHJpdmVyLiBJ IGRvbid0IHNlZSBjb2RlIGZvciB0aGF0Lg0KPj4NCj4+IENvbG9yIG1hbmFnZW1lbnQgc2hv dWxkIHByb2JhYmx5IGdvIGludG8gYSBzZXBhcmF0ZSBwYXRjaC4NCj4+DQo+IE9rLCBJJ20g YWdyZWUgdG8gbGVhdmUgZ2FtbWEgc3VwcG9ydCB0byBhIHNlcGFyYXRlIHBhdGNoDQo+Pj4g Kw0KPj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+Pj4gK30NCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2xzZGMvbHNkY19kZWJ1Z2ZzLmMgDQo+Pj4gYi9kcml2ZXJzL2dwdS9k cm0vbHNkYy9sc2RjX2RlYnVnZnMuYw0KPj4+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+Pj4g aW5kZXggMDAwMDAwMDAwMDAwLi4xNzZhZTRlMTFkMWMNCj4+PiAtLS0gL2Rldi9udWxsDQo+ Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19kZWJ1Z2ZzLmMNCj4+PiBAQCAt MCwwICsxLDE5MSBAQA0KPj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIu MCsNCj4+PiArDQo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2RlYnVnZnMuaD4NCj4+PiArI2lu Y2x1ZGUgPGRybS9kcm1fbWFuYWdlZC5oPg0KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1f dnJhbV9oZWxwZXIuaD4NCj4+PiArI2luY2x1ZGUgImxzZGNfZHJ2LmgiDQo+Pj4gKyNpbmNs dWRlICJsc2RjX3JlZ3MuaCINCj4+PiArI2luY2x1ZGUgImxzZGNfcGxsLmgiDQo+Pj4gKw0K Pj4+ICsjaWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19zaG93 X2Nsb2NrKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqYXJnKQ0KPj4+ICt7DQo+Pj4gK8Kg wqDCoCBzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IChzdHJ1Y3QgZHJtX2luZm9fbm9k ZSAqKW0tPnByaXZhdGU7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9 IG5vZGUtPm1pbm9yLT5kZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGM7 DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX2Zvcl9lYWNoX2NydGMoY3J0YywgZGRldikgew0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKnBpcGUgPSBj cnRjX3RvX2Rpc3BsYXlfcGlwZShjcnRjKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0 IGxzZGNfcGxsICpwaXhwbGwgPSAmcGlwZS0+cGl4cGxsOw0KPj4+ICvCoMKgwqDCoMKgwqDC oCBjb25zdCBzdHJ1Y3QgbHNkY19waXhwbGxfZnVuY3MgKmZ1bmNzID0gcGl4cGxsLT5mdW5j czsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9kaXNwbGF5X21vZGUgKmFkaiA9 ICZjcnRjLT5zdGF0ZS0+bW9kZTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNf cGxsX3Bhcm1zIHBhcm1zOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgb3V0 X2toejsNCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIG91dF9raHogPSBmdW5jcy0+Z2V0 X2Nsb2NrX3JhdGUocGl4cGxsLCAmcGFybXMpOw0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKg wqAgc2VxX3ByaW50ZihtLCAiRGlzcGxheSBwaXBlICV1OiAlZHglZFxuIiwNCj4+PiArwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwaXBlLT5pbmRleCwgYWRqLT5oZGlzcGxheSwg YWRqLT52ZGlzcGxheSk7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJpbnRm KG0sICJGcmVxdWVuY3kgYWN0dWFsbHkgb3V0cHV0OiAldSBrSHpcbiIsIG91dF9raHopOw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJpbnRmKG0sICJQaXhlbCBjbG9jayByZXF1aXJl ZDogJWQga0h6XG4iLCBhZGotPmNsb2NrKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc2VxX3By aW50ZihtLCAiZGlmZjogJWQga0h6XG4iLCBhZGotPmNsb2NrKTsNCj4+PiArDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIHNlcV9wcmludGYobSwgImRpdl9yZWY9JXUsIGxvb3BjPSV1LCBkaXZf b3V0PSV1XG4iLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBhcm1zLmRp dl9yZWYsIHBhcm1zLmxvb3BjLCBwYXJtcy5kaXZfb3V0KTsNCj4+PiArDQo+Pj4gK8KgwqDC oMKgwqDCoMKgIHNlcV9wcmludGYobSwgImhzeW5jX3N0YXJ0PSVkLCBoc3luY19lbmQ9JWQs IGh0b3RhbD0lZFxuIiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBhZGot PmhzeW5jX3N0YXJ0LCBhZGotPmhzeW5jX2VuZCwgYWRqLT5odG90YWwpOw0KPj4+ICvCoMKg wqDCoMKgwqDCoCBzZXFfcHJpbnRmKG0sICJ2c3luY19zdGFydD0lZCwgdnN5bmNfZW5kPSVk LCB2dG90YWw9JWRcblxuIiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBh ZGotPnZzeW5jX3N0YXJ0LCBhZGotPnZzeW5jX2VuZCwgYWRqLT52dG90YWwpOw0KPj4+ICvC oMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0K Pj4+ICtzdGF0aWMgaW50IGxzZGNfc2hvd19tbShzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQg KmFyZykNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUg PSAoc3RydWN0IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOw0KPj4+ICvCoMKgwqAgc3Ry dWN0IGRybV9kZXZpY2UgKmRkZXYgPSBub2RlLT5taW5vci0+ZGV2Ow0KPj4+ICvCoMKgwqAg c3RydWN0IGRybV9wcmludGVyIHAgPSBkcm1fc2VxX2ZpbGVfcHJpbnRlcihtKTsNCj4+PiAr DQo+Pj4gKyBkcm1fbW1fcHJpbnQoJmRkZXYtPnZtYV9vZmZzZXRfbWFuYWdlci0+dm1fYWRk cl9zcGFjZV9tbSwgJnApOw0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiAwOw0KPj4+ICt9 DQo+Pj4gKw0KPj4+ICsjZGVmaW5lIFJFR0RFRihyZWcpIHsgX19zdHJpbmdpZnlfMShMU0RD XyMjcmVnIyNfUkVHKSwgDQo+Pj4gTFNEQ18jI3JlZyMjX1JFRyB9DQo+Pj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3Qgew0KPj4+ICvCoMKgwqAgY29uc3QgY2hhciAqbmFtZTsNCj4+PiArwqDC oMKgIHUzMiByZWdfb2Zmc2V0Ow0KPj4+ICt9IGxzZGNfcmVnc19hcnJheVtdID0gew0KPj4+ ICvCoMKgwqAgUkVHREVGKENVUlNPUjBfQ0ZHKSwNCj4+PiArwqDCoMKgIFJFR0RFRihDVVJT T1IwX0FERFJfTE8pLA0KPj4+ICvCoMKgwqAgUkVHREVGKENVUlNPUjBfQUREUl9ISSksDQo+ Pj4gK8KgwqDCoCBSRUdERUYoQ1VSU09SMF9QT1NJVElPTiksDQo+Pj4gK8KgwqDCoCBSRUdE RUYoQ1VSU09SMF9CR19DT0xPUiksDQo+Pj4gK8KgwqDCoCBSRUdERUYoQ1VSU09SMF9GR19D T0xPUiksDQo+Pj4gK8KgwqDCoCBSRUdERUYoSU5UKSwNCj4+PiArwqDCoMKgIFJFR0RFRihD UlRDMF9DRkcpLA0KPj4+ICvCoMKgwqAgUkVHREVGKENSVEMwX1NUUklERSksDQo+Pj4gK8Kg wqDCoCBSRUdERUYoQ1JUQzBfRkJfT1JJR0lOKSwNCj4+PiArwqDCoMKgIFJFR0RFRihDUlRD MF9IRElTUExBWSksDQo+Pj4gK8KgwqDCoCBSRUdERUYoQ1JUQzBfSFNZTkMpLA0KPj4+ICvC oMKgwqAgUkVHREVGKENSVEMwX1ZESVNQTEFZKSwNCj4+PiArwqDCoMKgIFJFR0RFRihDUlRD MF9WU1lOQyksDQo+Pj4gK8KgwqDCoCBSRUdERUYoQ1JUQzBfR0FNTUFfSU5ERVgpLA0KPj4+ ICvCoMKgwqAgUkVHREVGKENSVEMwX0dBTU1BX0RBVEEpLA0KPj4+ICvCoMKgwqAgUkVHREVG KENSVEMxX0NGRyksDQo+Pj4gK8KgwqDCoCBSRUdERUYoQ1JUQzFfU1RSSURFKSwNCj4+PiAr wqDCoMKgIFJFR0RFRihDUlRDMV9GQl9PUklHSU4pLA0KPj4+ICvCoMKgwqAgUkVHREVGKENS VEMxX0hESVNQTEFZKSwNCj4+PiArwqDCoMKgIFJFR0RFRihDUlRDMV9IU1lOQyksDQo+Pj4g K8KgwqDCoCBSRUdERUYoQ1JUQzFfVkRJU1BMQVkpLA0KPj4+ICvCoMKgwqAgUkVHREVGKENS VEMxX1ZTWU5DKSwNCj4+PiArwqDCoMKgIFJFR0RFRihDUlRDMV9HQU1NQV9JTkRFWCksDQo+ Pj4gK8KgwqDCoCBSRUdERUYoQ1JUQzFfR0FNTUFfREFUQSksDQo+Pj4gK307DQo+Pj4gKw0K Pj4+ICtzdGF0aWMgaW50IGxzZGNfc2hvd19yZWdzKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9p ZCAqYXJnKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9k ZSA9IChzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqKW0tPnByaXZhdGU7DQo+Pj4gK8KgwqDCoCBz dHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IG5vZGUtPm1pbm9yLT5kZXY7DQo+Pj4gK8KgwqDC oCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICvCoMKg wqAgaW50IGk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IEFSUkFZX1NJ WkUobHNkY19yZWdzX2FycmF5KTsgaSsrKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHUzMiBv ZmZzZXQgPSBsc2RjX3JlZ3NfYXJyYXlbaV0ucmVnX29mZnNldDsNCj4+PiArwqDCoMKgwqDC oMKgwqAgY29uc3QgY2hhciAqbmFtZSA9IGxzZGNfcmVnc19hcnJheVtpXS5uYW1lOw0KPj4+ ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50ZihtLCAiJXMgKDB4JTA0eCk6IDB4 JTA4eFxuIiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuYW1lLCBvZmZz ZXQsIGxzZGNfcnJlZzMyKGxkZXYsIG9mZnNldCkpOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsN Cj4+PiArwqDCoMKgIHJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50 IGxzZGNfc2hvd192YmxhbmtfY291bnRlcihzdHJ1Y3Qgc2VxX2ZpbGUgKm0sIHZvaWQgKmFy ZykNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9pbmZvX25vZGUgKm5vZGUgPSAo c3RydWN0IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOw0KPj4+ICvCoMKgwqAgc3RydWN0 IGRybV9kZXZpY2UgKmRkZXYgPSBub2RlLT5taW5vci0+ZGV2Ow0KPj4+ICvCoMKgwqAgc3Ry dWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+PiArDQo+Pj4gK8Kg wqDCoCBzZXFfcHJpbnRmKG0sICJDUlRDLTAgdmJsYW5rIGNvdW50ZXI6ICUwOHVcbiIsDQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIGxzZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzBf VlNZTkNfQ09VTlRFUl9SRUcpKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBzZXFfcHJpbnRmKG0s ICJDUlRDLTEgdmJsYW5rIGNvdW50ZXI6ICUwOHVcbiIsDQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgIGxzZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzFfVlNZTkNfQ09VTlRFUl9SRUcp KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+PiAr c3RhdGljIGludCBsc2RjX3Nob3dfc2Nhbl9wb3NpdGlvbihzdHJ1Y3Qgc2VxX2ZpbGUgKm0s IHZvaWQgKmFyZykNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9pbmZvX25vZGUg Km5vZGUgPSAoc3RydWN0IGRybV9pbmZvX25vZGUgKiltLT5wcml2YXRlOw0KPj4+ICvCoMKg wqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBub2RlLT5taW5vci0+ZGV2Ow0KPj4+ICvC oMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+PiAr wqDCoMKgIHUzMiB2YWwwID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9TQ0FOX1BP U19SRUcpOw0KPj4+ICvCoMKgwqAgdTMyIHZhbDEgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RD X0NSVEMxX1NDQU5fUE9TX1JFRyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgc2VxX3ByaW50Ziht LCAiQ1JUQy0wOiB4OiAlMDh1LCB5OiAlMDh1XG4iLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoCB2YWwwID4+IDE2LCB2YWwwICYgMHhGRkZGKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBz ZXFfcHJpbnRmKG0sICJDUlRDLTE6IHg6ICUwOHUsIHk6ICUwOHVcbiIsDQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgIHZhbDEgPj4gMTYsIHZhbDEgJiAweEZGRkYpOw0KPj4+ICsNCj4+ PiArwqDCoMKgIHJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGxz ZGNfc2hvd19mYl9hZGRyKHN0cnVjdCBzZXFfZmlsZSAqbSwgdm9pZCAqYXJnKQ0KPj4+ICt7 DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2luZm9fbm9kZSAqbm9kZSA9IChzdHJ1Y3QgZHJt X2luZm9fbm9kZSAqKW0tPnByaXZhdGU7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Rldmlj ZSAqZGRldiA9IG5vZGUtPm1pbm9yLT5kZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19k ZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICvCoMKgwqAgdTMyIGxvLCBoaTsN Cj4+PiArwqDCoMKgIHUzMiB2YWw7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgdmFsID0gbHNkY19y cmVnMzIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHKTsNCj4+PiArwqDCoMKgIGlmICh2YWwg JiBDRkdfRkJfSU5fVVNJTkcpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbG8gPSBsc2RjX3Jy ZWczMihsZGV2LCBMU0RDX0NSVEMwX0ZCMV9MT19BRERSX1JFRyk7DQo+Pj4gK8KgwqDCoMKg wqDCoMKgIGhpID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9GQjFfSElfQUREUl9S RUcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBzZXFfcHJpbnRmKG0sICJDUlRDLTAgdXNpbmcg ZmIxOiAweCV4OiV4XG4iLCBoaSwgbG8pOw0KPj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+PiAr wqDCoMKgwqDCoMKgwqAgbG8gPSBsc2RjX3JyZWczMihsZGV2LCBMU0RDX0NSVEMwX0ZCMF9M T19BRERSX1JFRyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGhpID0gbHNkY19ycmVnMzIobGRl diwgTFNEQ19DUlRDMF9GQjBfSElfQUREUl9SRUcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBz ZXFfcHJpbnRmKG0sICJDUlRDLTAgdXNpbmcgZmIwOiAweCV4OiV4XG4iLCBoaSwgbG8pOw0K Pj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxk ZXYsIExTRENfQ1JUQzFfQ0ZHX1JFRyk7DQo+Pj4gK8KgwqDCoCBpZiAodmFsICYgQ0ZHX0ZC X0lOX1VTSU5HKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxvID0gbHNkY19ycmVnMzIobGRl diwgTFNEQ19DUlRDMV9GQjFfTE9fQUREUl9SRUcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBo aSA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzFfRkIxX0hJX0FERFJfUkVHKTsNCj4+ PiArwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50ZihtLCAiQ1JUQy0xIHVzaW5nIGZiMTogMHgl eDoleFxuIiwgaGksIGxvKTsNCj4+PiArwqDCoMKgIH0gZWxzZSB7DQo+Pj4gK8KgwqDCoMKg wqDCoMKgIGxvID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMV9GQjBfTE9fQUREUl9S RUcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBoaSA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENf Q1JUQzFfRkIwX0hJX0FERFJfUkVHKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc2VxX3ByaW50 ZihtLCAiQ1JUQy0xIHVzaW5nIGZiMDogMHgleDoleFxuIiwgaGksIGxvKTsNCj4+PiArwqDC oMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+ PiArc3RhdGljIHN0cnVjdCBkcm1faW5mb19saXN0IGxzZGNfZGVidWdmc19saXN0W10gPSB7 DQo+Pj4gK8KgwqDCoCB7ICJjbG9ja3MiLMKgwqAgbHNkY19zaG93X2Nsb2NrLCAwIH0sDQo+ Pj4gK8KgwqDCoCB7ICJtbSIswqDCoMKgwqDCoMKgIGxzZGNfc2hvd19tbSwgMCwgTlVMTCB9 LA0KPj4+ICvCoMKgwqAgeyAicmVncyIswqDCoMKgwqAgbHNkY19zaG93X3JlZ3MsIDAgfSwN Cj4+PiArwqDCoMKgIHsgInZibGFua3MiLMKgIGxzZGNfc2hvd192YmxhbmtfY291bnRlciwg MCwgTlVMTCB9LA0KPj4+ICvCoMKgwqAgeyAic2Nhbl9wb3MiLCBsc2RjX3Nob3dfc2Nhbl9w b3NpdGlvbiwgMCwgTlVMTCB9LA0KPj4+ICvCoMKgwqAgeyAiZmJfYWRkciIswqAgbHNkY19z aG93X2ZiX2FkZHIsIDAsIE5VTEwgfSwNCj4+PiArfTsNCj4+PiArDQo+Pj4gKyNlbmRpZg0K Pj4+ICsNCj4+PiArdm9pZCBsc2RjX2RlYnVnZnNfaW5pdChzdHJ1Y3QgZHJtX21pbm9yICpt aW5vcikNCj4+PiArew0KPj4+ICsjaWZkZWYgQ09ORklHX0RFQlVHX0ZTDQo+Pj4gK8KgwqDC oCBkcm1fZGVidWdmc19jcmVhdGVfZmlsZXMobHNkY19kZWJ1Z2ZzX2xpc3QsDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEFSUkFZX1NJWkUobHNkY19kZWJ1Z2Zz X2xpc3QpLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtaW5vci0+ ZGVidWdmc19yb290LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBt aW5vcik7DQo+Pj4gKyNlbmRpZg0KPj4+ICt9DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMv Z3B1L2RybS9sc2RjL2xzZGNfZHJ2LmMgDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9s c2RjX2Rydi5jDQo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+PiBpbmRleCAwMDAwMDAw MDAwMDAuLjNiZDQ1N2U2ZTk4MA0KPj4+IC0tLSAvZGV2L251bGwNCj4+PiArKysgYi9kcml2 ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2Rydi5jDQo+Pj4gQEAgLTAsMCArMSw2MzUgQEANCj4+ PiArLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArDQo+Pj4gKy8qDQo+Pj4g KyAqIEtNUyBkcml2ZXIgZm9yIExvb25nc29uIGRpc3BsYXkgY29udHJvbGxlcg0KPj4+ICsg KiBDb3B5cmlnaHQgKEMpIDIwMjIgTG9vbmdzb24gQ29ycG9yYXRpb24NCj4+PiArICoNCj4+ PiArICogQXV0aG9yczoNCj4+PiArICrCoMKgwqDCoMKgIExpIFlpIDxsaXlpQGxvb25nc29u LmNuPg0KPj4+ICsgKsKgwqDCoMKgwqAgTGkgQ2hlbnlhbmcgPGxpY2hlbnlhbmdAbG9vbmdz b24uY24+DQo+Pj4gKyAqwqDCoMKgwqDCoCBTdWkgSmluZ2ZlbmcgPHN1aWppbmdmZW5nQGxv b25nc29uLmNuPg0KPj4+ICsgKi8NCj4+PiArDQo+Pj4gKyNpbmNsdWRlIDxsaW51eC9tb2R1 bGUuaD4NCj4+PiArI2luY2x1ZGUgPGxpbnV4L3BjaS5oPg0KPj4+ICsjaW5jbHVkZSA8bGlu dXgvb2ZfYWRkcmVzcy5oPg0KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9hcGVydHVyZS5oPg0K Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV92YmxhbmsuaD4NCj4+PiArI2luY2x1ZGUgPGRybS9k cm1fZmJfaGVscGVyLmg+DQo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2dlbV92cmFtX2hlbHBl ci5oPg0KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9nZW1fZnJhbWVidWZmZXJfaGVscGVyLmg+ DQo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX21vZGVzZXRfaGVscGVyLmg+DQo+Pj4gKyNpbmNs dWRlIDxkcm0vZHJtX2F0b21pY19oZWxwZXIuaD4NCj4+PiArI2luY2x1ZGUgPGRybS9kcm1f cHJvYmVfaGVscGVyLmg+DQo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2ZiZGV2X2dlbmVyaWMu aD4NCj4+PiArI2luY2x1ZGUgImxzZGNfZHJ2LmgiDQo+Pg0KPj4gQWxwaGViZXRpY2FsIG9y ZGVyLg0KPiBJIHdpbGwgZml4IHRoaXMgcHJvYmxlbSBhdCBuZXh0IHZlcnNpb24NCj4+DQo+ Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGxzZGNfY2hpcCA9IC0xOw0KPj4+ICtNT0RVTEVfUEFS TV9ERVNDKGNoaXAsICJvdmVycmlkZSBjaGlwIGlkICgtMSA9IHByb2JlZCBieSBkcml2ZXIi KTsNCj4+PiArbW9kdWxlX3BhcmFtX25hbWVkKGNoaXAsIGxzZGNfY2hpcCwgaW50LCAwNjQ0 KTsNCj4+DQo+PiBUaGF0J3MgYSBkZXZlbG9wbWVudCBvcHRpb24uIEJldHRlciBub3QgYWRk IGl0IHRvIHRoZSBwdWJsaXNoZWQgZHJpdmVyLg0KPiANCj4gV2l0aG91dCB0aGlzLMKgIGNv bXBpbGUgd2l0aCBXPTEgZ2VuZXJhdGUgd2FybmluZ3MuwqAgYW5kIHJlbW92aW5nIGNoaXAg DQo+IGRlc2NyaXB0aW9ucyBmb3IgTG9vbmdzb24gU29DDQo+IA0KPiBpcyBub3Qgd2FudGVk IGVpdGhlci7CoCB0aGlzwqAgb3B0aW9uIGNhbiBiZSByZW1vdmVkwqAgaWYgRFQgc3VwcG9y dCBpcyANCj4gdXBzdHJlYW0gaW4gdGhlIGZ1dHVyZS4NCg0KSSdkIHN0cm9uZ2x5IHByZWZl ciB0byByZWx5IG9uIERUIGZvciB0aGlzLiBCZWNhdXNlIHRoaXMgc2V0dGluZyBpcyANCm5v dGhpbmcgdGhhdCB3ZSB3YW50IHVzZXJzIHRvIG1vZGlmeS4NCg0KPiANCj4gSXQgYWxsb3cg dXMgdG8gZGV2ZWxvcGluZyBkcml2ZXIgYmVmb3JlIERUIG9yIEFDUEkgc3VwcG9ydCBpcyBy ZWFkeS4gDQo+IE90aGVyd2lzZSB3ZSBoYXZlIG5vIHdheSBkZXZlbG9waW5nDQo+IA0KPiBk cml2ZXJzIGZvciBsb29uZ3NvbiBTb0MgYmVmb3JlaGFuZC4NCg0KSSB1bmRlcnN0YW5kLCBJ IGp1c3QgZG9uJ3QgdGhpbmsgdGhhdCB0aGUgcGFyYW1ldGVyIHNob3VsZCBiZSBpbiB0aGUg DQpvZmZpY2lhbCBMaW51eCBrZXJuZWwuIEl0J3MgYW4gb3B0aW9uIGZvciB5b3VyIGludGVy bmFsIGRldmVsb3BtZW50IHRlYW0uDQoNCkl0IGRvZXMgbm90IG1ha2Ugc2Vuc2UgdG8gbWVy Z2UgdGhlIERSTSBkcml2ZXIgYmVmb3JlIHRoZSBEVCBvciBBQ1BJIA0Kc3VwcG9ydCBpcyBy ZWFkeS4NCg0KPiANCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIGxzN2ExMDAwIGFuZCBsczdh MjAwMCBpcyBub3Qgb25seSB1c2VkIHdpdGggbG9vbmdzb24gZGVza3RvcCANCj4+PiBjbGFz cyBDUFUNCj4+PiArICogYnV0IGFsc28gbG9vbmdzb24gc2VydmVyIGNsYXNzIENQVXMgKExT M0M1MDAwQDIuMkdIeiAxNiBjb3JlKS4gDQo+Pj4gTG9vbmdzb24NCj4+PiArICogc2VydmVy IHByb2R1Y3RzIGdlbmVyYWxseSBkb24ndCBoYXMgYSBkZWRpY2F0ZWQgdnJhbSBtb3VudGVk IGZvciANCj4+PiBjb3N0DQo+Pj4gKyAqIHJlYXNvbiwgaXQgd2lsbCB1c2UgYXNwZWVkIGJt YyBhcyBpdHMgZGlzcGxheSBvbiBpdHMgZmluYWwgYW5kIA0KPj4+IGZvcm1hbA0KPj4+ICsg KiBwcm9kdWN0LiBsc2RjLmhhc192cmFtPTAgaXMgbWFpbmx5IGJlIHVzZSBpbiBkZXZlbG9w aW5nIHBoYXNlIG9mIHRoZQ0KPj4+ICsgKiBwcm9kdWN0LiBXaGVuIGEgYm9hcmQgZG9uJ3Qg aGFzIGEgZGVkaWNhdGVkIHZyYW0gbW91bnRlZCwgd2UgY2FuIHB1dA0KPj4+ICsgKiB0aGUg ZnJhbWVidWZmZXIgb24gc3lzdGVtIFJBTS4NCj4+PiArICovDQo+Pj4gK3N0YXRpYyBpbnQg bHNkY19oYXNfdnJhbSA9IC0xOw0KPj4+ICtNT0RVTEVfUEFSTV9ERVNDKGhhc192cmFtLCAi aGFzIG9uLWJvYXJkIGdwdSBtZW1vcnkgaW4gcmVhbGl0eSAoMCA9IA0KPj4+IG5vLCAtMSA9 IGRlZmF1bHQiKTsNCj4+PiArbW9kdWxlX3BhcmFtX25hbWVkKGhhc192cmFtLCBsc2RjX2hh c192cmFtLCBpbnQsIDA2NDQpOw0KPj4NCj4+IFNhbWUgaGVyZS4gVGhhdCdzIGZvciBkZXZl bG9wbWVudC4NCj4gDQo+IEVyciwgd2UgdHJ1bHkgdmVyeSBuZWVkIHRoaXMgZmVhdHVyZSwN Cj4gDQo+IDEpIEFTUEVFRCBCTUMgY2FyZCBpcyByZW1vdmFibGUsIGl0IGNhbiBiZSB1bnBs dWcgZnJvbSB0aGUgbW90aGVyIGJvYXJkIA0KPiBvZiBMb29uZ3NvbiBTZXJ2ZXIuDQo+IA0K PiBsZWF2aW5nIHRoaXMgb3B0aW9uIHRoZXJlLCB3ZSBzdGlsbCBoYXZlIGNoYW5nZSBlbnRl ciBYIHNlcnZlciBncmFwaGljIA0KPiBlbnZpcm9ubWVudC4NCg0KV2h5IGRvbid0IHlvdSBk ZXRlY3QgdGhlIHByZXNlbmNlIG9mIHRoZSBCTUMgY2FyZCBhdCBydW50aW1lLg0KDQo+IA0K PiANCj4gMikgV2UgbmVlZCBkZXZlbG9waW5nIGRyaXZlcnMgZm9yIGxvb25nc29uIFNvQyBv biBsb29uZ3NvbiBQQyBwbGF0Zm9ybSwgDQo+IHdlIG1heSBkZWxpYmVyYXRlbHkgZG9uJ3QN Cj4gDQo+IHVzZSBvbi1ib2FyZCB2cmFtLiB0aGVyZSBhIG5lZWQgdG8gbGV0IFRUTSBtYW5h Z2UgY2FjaGVkIHJlc2VydmVkIFJBTSwgDQo+IGJlY2F1c2Ugc3VjaCBkZXZpY2UgZG9uJ3QN Cj4gDQo+IGhhdmUgdnJhbS4gV2UgaGF2ZSBhY2hpZXZlIHRoaXMgZ29hbCBvbiBsczJrMjAw MCBTb0MuDQo+IA0KPiBPdGhlcndpc2Ugd2UgaGF2ZSB0byB3cml0ZSB0d28gcGllY2Ugb2Yg ZHJpdmVyLCBvbmUgaXMgRE1BIGhlbHBlciBiYXNlLCANCj4gdGhlIG90aGVyIGlzIFRUTSBi YXNlZCwNCj4gDQo+IHdlIGRvaW5nIHNvIGF0IGRvd25zdHJlYW0ga2VybmVsLg0KDQpJIGRv bid0IHVuZGVyc3RhbmQuIFlvdSBjYW4gc3RpbGwgaGF2ZSBhbiBpbnRlcm5hbCBwYXRjaCB0 aGF0IHByb3ZpZGVzIA0KdGhpcyBvcHRpb24gdG8geW91ciBkZXZlbG9wbWVudCB0ZWFtLg0K DQpUaGUgcHJvYmxlbSB3aXRoIG1vZHVsZSBvcHRpb25zIGlzIHRoYXQgdGhleSBhcmUgaGFy ZCB0byByZW1vdmUuIFVzZXJzIA0Kc3RhcnQgcmVseWluZyBvbiB0aGVtIGFuZCBjb21wbGFp biB3aGVuIHlvdSByZW1vdmUgdGhlbS4gVGhhdCBoYXBwZW5zIA0KZXZlbiBpZiB5b3UgcHJv dmlkZSBhIGJldHRlciBzb2x1dGlvbi4gQW5kIHNvbWUgb3B0aW9ucywgc3VjaCBhcyB0aGUg DQpjaGlwIHNldHRpbmcsIGNhbiBwb3NzaWJseSBkYW1hZ2UgdGhlIHVzZXIncyBoYXJkd2Fy ZS4gU28gaXQncyBiZXN0IHRvIA0Kbm90IHByb3ZpZGUgb3B0aW9ucyBpbiB0aGUgZmlyc3Qg cGxhY2UuDQoNCj4gDQo+Pg0KPj4+ICsNCj4+PiArI2RlZmluZSBEUklWRVJfQVVUSE9SwqDC oMKgwqDCoMKgwqAgIlN1aSBKaW5nZmVuZyA8c3VpamluZ2ZlbmdAbG9vbmdzb24uY24+Ig0K Pj4+ICsjZGVmaW5lIERSSVZFUl9OQU1FwqDCoMKgwqDCoMKgwqAgImxzZGMiDQo+Pj4gKyNk ZWZpbmUgRFJJVkVSX0RFU0PCoMKgwqDCoMKgwqDCoCAiZHJtIGRyaXZlciBmb3IgbG9vbmdz b24ncyBkaXNwbGF5IA0KPj4+IGNvbnRyb2xsZXIiDQo+Pj4gKyNkZWZpbmUgRFJJVkVSX0RB VEXCoMKgwqDCoMKgwqDCoCAiMjAyMjA3MDEiDQo+Pj4gKyNkZWZpbmUgRFJJVkVSX01BSk9S wqDCoMKgwqDCoMKgwqAgMQ0KPj4+ICsjZGVmaW5lIERSSVZFUl9NSU5PUsKgwqDCoMKgwqDC oMKgIDANCj4+PiArI2RlZmluZSBEUklWRVJfUEFUQ0hMRVZFTMKgwqDCoCAwDQo+Pj4gKw0K Pj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyBkY19pbl9sczJrMDUwMCA9IHsN Cj4+DQo+PiBUaG9zZSBkZXNjcmlwdGlvbiBzdHJ1Y3RzIGFyZSBhIHR3by1lZGdlZCBzd29y ZCBJTUhPLg0KPj4NCj4+PiArwqDCoMKgIC5jaGlwID0gQ0hJUF9MUzJLMDUwMCwNCj4+PiAr wqDCoMKgIC5udW1fb2ZfY3J0YyA9IExTRENfTlVNX0NSVEMsDQo+Pj4gK8KgwqDCoCAubWF4 X3BpeGVsX2NsayA9IDIwMDAwMCwNCj4+PiArwqDCoMKgIC5tYXhfd2lkdGggPSAyMDQ4LA0K Pj4+ICvCoMKgwqAgLm1heF9oZWlnaHQgPSAyMDQ4LA0KPj4+ICvCoMKgwqAgLmh3X2N1cnNv cl93ID0gMzIsDQo+Pj4gK8KgwqDCoCAuaHdfY3Vyc29yX2ggPSAzMiwNCj4+PiArwqDCoMKg IC5waXRjaF9hbGlnbiA9IDI1NiwNCj4+PiArwqDCoMKgIC5tY19iaXRzID0gNDAsDQo+Pg0K Pj4gVGhlc2UgYXJlIGRldmljZSBjb25zdGFudHMgYXJlIHByb2JhYmx5IGZpbmUuDQo+Pg0K Pj4+ICvCoMKgwqAgLm51bV9vZl9od19jdXJzb3IgPSAxLA0KPj4+ICvCoMKgwqAgLmhhc192 YmxhbmtfY291bnRlciA9IGZhbHNlLA0KPj4+ICvCoMKgwqAgLmhhc19idWlsdGluX2kyYyA9 IGZhbHNlLA0KPj4+ICvCoMKgwqAgLmhhc192cmFtID0gZmFsc2UsDQo+Pj4gK8KgwqDCoCAu aGFzX2hwZF9yZWcgPSBmYWxzZSwNCj4+PiArwqDCoMKgIC5pc19zb2MgPSB0cnVlLA0KPj4N Cj4+IEJ1dCBmcm9tIGEgcXVpY2sgbG9vayB0aHJvdWdoIHRoZSBjb2RlLCB0aGVzZSBzZXR0 aW5ncyBhZmZlY3QgY29udHJvbCANCj4+IGZsb3cgYW5kL29yIG1vZGVzZXR0aW5nIHBpcGVs aW5lcy4gVGhleSBhcmUgb2Z0ZW4gYmV0dGVyIGltcGxlbWVudGVkIA0KPj4gYnkgZGVkaWNh dGVkIGhlbHBlcnMgYXMgb3V0bGluZWQgaW4gbXkgY29tbWVudHMgYWJvdXQgdmJsYW5rIGFu ZCBtZ2FnMjAwLg0KPiANCj4gT2ssIG1nYWcyMDAgaXMgZm9yIHNlcnZlciBtYWlubHksIGl0 cyB2YXJpYW50IGFyZSBub3Qgc28gZGlmZmVyZW50IGFzIA0KPiBsb29uZ3NvbiBkb2VzLA0K PiANCj4gYXQgbGVhc3QgdGhleSBhbGwgaGF2ZSB2cmFtLMKgIHdlIGhhdmUgdG8gcHV0IG1v cmUgYXR0ZW50aW9uIHRvIHR1cm4gZHJtIA0KPiBtZW1vcnkgbWFuYWdlci4NCj4gDQo+IEkg d2lsbCBmb2xsb3dpbmcgeW91ciBhZHZpY2UgYnkgaW50cm9kdWNpbmcgbW9yZSBoZWxwZXJz IGF0IG5leHQgdmVyc2lvbi4NCj4gDQo+Pg0KPj4NCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjIGRjX2luX2xzMmsxMDAwID0gew0KPj4+ICvC oMKgwqAgLmNoaXAgPSBDSElQX0xTMksxMDAwLA0KPj4+ICvCoMKgwqAgLm51bV9vZl9jcnRj ID0gTFNEQ19OVU1fQ1JUQywNCj4+PiArwqDCoMKgIC5tYXhfcGl4ZWxfY2xrID0gMjAwMDAw LA0KPj4+ICvCoMKgwqAgLm1heF93aWR0aCA9IDIwNDgsDQo+Pj4gK8KgwqDCoCAubWF4X2hl aWdodCA9IDIwNDgsDQo+Pj4gK8KgwqDCoCAubnVtX29mX2h3X2N1cnNvciA9IDEsDQo+Pj4g K8KgwqDCoCAuaHdfY3Vyc29yX3cgPSAzMiwNCj4+PiArwqDCoMKgIC5od19jdXJzb3JfaCA9 IDMyLA0KPj4+ICvCoMKgwqAgLnBpdGNoX2FsaWduID0gMjU2LA0KPj4+ICvCoMKgwqAgLm1j X2JpdHMgPSA0MCwNCj4+PiArwqDCoMKgIC5oYXNfdmJsYW5rX2NvdW50ZXIgPSBmYWxzZSwN Cj4+PiArwqDCoMKgIC5oYXNfYnVpbHRpbl9pMmMgPSBmYWxzZSwNCj4+PiArwqDCoMKgIC5o YXNfdnJhbSA9IGZhbHNlLA0KPj4+ICvCoMKgwqAgLmhhc19ocGRfcmVnID0gZmFsc2UsDQo+ Pj4gK8KgwqDCoCAuaXNfc29jID0gdHJ1ZSwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRp YyBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjIGRjX2luX2xzMmsyMDAwID0gew0KPj4+ICvCoMKg wqAgLmNoaXAgPSBDSElQX0xTMksyMDAwLA0KPj4+ICvCoMKgwqAgLm51bV9vZl9jcnRjID0g TFNEQ19OVU1fQ1JUQywNCj4+PiArwqDCoMKgIC5tYXhfcGl4ZWxfY2xrID0gMzUwMDAwLA0K Pj4+ICvCoMKgwqAgLm1heF93aWR0aCA9IDQwOTYsDQo+Pj4gK8KgwqDCoCAubWF4X2hlaWdo dCA9IDQwOTYsDQo+Pj4gK8KgwqDCoCAubnVtX29mX2h3X2N1cnNvciA9IDIsDQo+Pj4gK8Kg wqDCoCAuaHdfY3Vyc29yX3cgPSA2NCwNCj4+PiArwqDCoMKgIC5od19jdXJzb3JfaCA9IDY0 LA0KPj4+ICvCoMKgwqAgLnBpdGNoX2FsaWduID0gMjU2LA0KPj4+ICvCoMKgwqAgLm1jX2Jp dHMgPSA0MCwNCj4+PiArwqDCoMKgIC5oYXNfdmJsYW5rX2NvdW50ZXIgPSB0cnVlLA0KPj4+ ICvCoMKgwqAgLmhhc19idWlsdGluX2kyYyA9IHRydWUsDQo+Pj4gK8KgwqDCoCAuaGFzX3Zy YW0gPSBmYWxzZSwNCj4+PiArwqDCoMKgIC5oYXNfaHBkX3JlZyA9IHRydWUsDQo+Pj4gK8Kg wqDCoCAuaXNfc29jID0gdHJ1ZSwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25z dCBzdHJ1Y3QgbHNkY19kZXNjIGRjX2luX2xzN2ExMDAwID0gew0KPj4+ICvCoMKgwqAgLmNo aXAgPSBDSElQX0xTN0ExMDAwLA0KPj4+ICvCoMKgwqAgLm51bV9vZl9jcnRjID0gTFNEQ19O VU1fQ1JUQywNCj4+PiArwqDCoMKgIC5tYXhfcGl4ZWxfY2xrID0gMjAwMDAwLA0KPj4+ICvC oMKgwqAgLm1heF93aWR0aCA9IDIwNDgsDQo+Pj4gK8KgwqDCoCAubWF4X2hlaWdodCA9IDIw NDgsDQo+Pj4gK8KgwqDCoCAubnVtX29mX2h3X2N1cnNvciA9IDEsDQo+Pj4gK8KgwqDCoCAu aHdfY3Vyc29yX3cgPSAzMiwNCj4+PiArwqDCoMKgIC5od19jdXJzb3JfaCA9IDMyLA0KPj4+ ICvCoMKgwqAgLnBpdGNoX2FsaWduID0gMjU2LA0KPj4+ICvCoMKgwqAgLm1jX2JpdHMgPSA0 MCwNCj4+PiArwqDCoMKgIC5oYXNfdmJsYW5rX2NvdW50ZXIgPSBmYWxzZSwNCj4+PiArwqDC oMKgIC5oYXNfYnVpbHRpbl9pMmMgPSB0cnVlLA0KPj4+ICvCoMKgwqAgLmhhc192cmFtID0g dHJ1ZSwNCj4+PiArwqDCoMKgIC5oYXNfaHBkX3JlZyA9IGZhbHNlLA0KPj4+ICvCoMKgwqAg LmlzX3NvYyA9IGZhbHNlLA0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBsc2RjX2Rlc2MgZGNfaW5fbHM3YTIwMDAgPSB7DQo+Pj4gK8KgwqDCoCAuY2hpcCA9 IENISVBfTFM3QTIwMDAsDQo+Pj4gK8KgwqDCoCAubnVtX29mX2NydGMgPSBMU0RDX05VTV9D UlRDLA0KPj4+ICvCoMKgwqAgLm1heF9waXhlbF9jbGsgPSAzNTAwMDAsDQo+Pj4gK8KgwqDC oCAubWF4X3dpZHRoID0gNDA5NiwNCj4+PiArwqDCoMKgIC5tYXhfaGVpZ2h0ID0gNDA5NiwN Cj4+PiArwqDCoMKgIC5udW1fb2ZfaHdfY3Vyc29yID0gMiwNCj4+PiArwqDCoMKgIC5od19j dXJzb3JfdyA9IDY0LA0KPj4+ICvCoMKgwqAgLmh3X2N1cnNvcl9oID0gNjQsDQo+Pj4gK8Kg wqDCoCAucGl0Y2hfYWxpZ24gPSAyNTYsDQo+Pj4gK8KgwqDCoCAubWNfYml0cyA9IDQwLCAv KiBzdXBwb3J0IDQ4LCBidXQgdXNlIDQwIGZvciBiYWNrd2FyZCANCj4+PiBjb21wYXRpYmls aXR5ICovDQo+Pj4gK8KgwqDCoCAuaGFzX3ZibGFua19jb3VudGVyID0gdHJ1ZSwNCj4+PiAr wqDCoMKgIC5oYXNfYnVpbHRpbl9pMmMgPSB0cnVlLA0KPj4+ICvCoMKgwqAgLmhhc192cmFt ID0gdHJ1ZSwNCj4+PiArwqDCoMKgIC5oYXNfaHBkX3JlZyA9IHRydWUsDQo+Pj4gK8KgwqDC oCAuaXNfc29jID0gZmFsc2UsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGxz ZGNfZ2VtX2R1bWJfY3JlYXRlKHN0cnVjdCBkcm1fZmlsZSAqZmlsZSwNCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LA0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9tb2RlX2NyZWF0 ZV9kdW1iICphcmdzKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2Ug KmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNf ZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4g ZHJtX2dlbV92cmFtX2ZpbGxfY3JlYXRlX2R1bWIoZmlsZSwgZGRldiwgMCwgDQo+Pj4gZGVz Y3AtPnBpdGNoX2FsaWduLCBhcmdzKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArREVGSU5FX0RS TV9HRU1fRk9QUyhsc2RjX2dlbV9mb3BzKTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2RyaXZlciBsc2RjX2RybV9kcml2ZXIgPSB7DQo+Pj4gK8KgwqDCoCAuZHJp dmVyX2ZlYXR1cmVzID0gRFJJVkVSX01PREVTRVQgfCBEUklWRVJfR0VNIHwgRFJJVkVSX0FU T01JQywNCj4+PiArwqDCoMKgIC5mb3BzID0gJmxzZGNfZ2VtX2ZvcHMsDQo+Pj4gKw0KPj4+ ICvCoMKgwqAgLm5hbWUgPSBEUklWRVJfTkFNRSwNCj4+PiArwqDCoMKgIC5kZXNjID0gRFJJ VkVSX0RFU0MsDQo+Pj4gK8KgwqDCoCAuZGF0ZSA9IERSSVZFUl9EQVRFLA0KPj4+ICvCoMKg wqAgLm1ham9yID0gRFJJVkVSX01BSk9SLA0KPj4+ICvCoMKgwqAgLm1pbm9yID0gRFJJVkVS X01JTk9SLA0KPj4+ICvCoMKgwqAgLnBhdGNobGV2ZWwgPSBEUklWRVJfUEFUQ0hMRVZFTCwN Cj4+PiArDQo+Pj4gK8KgwqDCoCAuZGVidWdmc19pbml0ID0gbHNkY19kZWJ1Z2ZzX2luaXQs DQo+Pj4gK8KgwqDCoCAuZHVtYl9jcmVhdGUgPSBsc2RjX2dlbV9kdW1iX2NyZWF0ZSwNCj4+ PiArwqDCoMKgIC5kdW1iX21hcF9vZmZzZXQgPSBkcm1fZ2VtX3R0bV9kdW1iX21hcF9vZmZz ZXQsDQo+Pj4gK8KgwqDCoCAuZ2VtX3ByaW1lX21tYXAgPSBkcm1fZ2VtX3ByaW1lX21tYXAs DQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9tb2RlX2Nv bmZpZ19mdW5jcyBsc2RjX21vZGVfY29uZmlnX2Z1bmNzID0gew0KPj4+ICvCoMKgwqAgLmZi X2NyZWF0ZSA9IGRybV9nZW1fZmJfY3JlYXRlLA0KPj4+ICvCoMKgwqAgLm91dHB1dF9wb2xs X2NoYW5nZWQgPSBkcm1fZmJfaGVscGVyX291dHB1dF9wb2xsX2NoYW5nZWQsDQo+Pj4gK8Kg wqDCoCAuYXRvbWljX2NoZWNrID0gZHJtX2F0b21pY19oZWxwZXJfY2hlY2ssDQo+Pj4gK8Kg wqDCoCAuYXRvbWljX2NvbW1pdCA9IGRybV9hdG9taWNfaGVscGVyX2NvbW1pdCwNCj4+PiAr wqDCoMKgIC5tb2RlX3ZhbGlkID0gZHJtX3ZyYW1faGVscGVyX21vZGVfdmFsaWQsDQo+Pj4g K307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGxzZGNfbW9kZXNldF9pbml0KHN0cnVjdCBs c2RjX2RldmljZSAqbGRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3ApDQo+Pj4gK3sNCj4+PiArwqDCoMKg IHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+Pj4gK8KgwqDCoCB1 bnNpZ25lZCBpbnQgbnVtX2NydGMgPSBkZXNjcC0+bnVtX29mX2NydGM7DQo+Pj4gK8KgwqDC oCB1bnNpZ25lZCBpbnQgaTsNCj4+PiArwqDCoMKgIGludCByZXQ7DQo+Pj4gKw0KPj4+ICvC oMKgwqAgZm9yIChpID0gMDsgaSA8IG51bV9jcnRjOyBpKyspIHsNCj4+PiArwqDCoMKgwqDC oMKgwqAgcmV0ID0gbHNkY19jcmVhdGVfb3V0cHV0KGxkZXYsIGkpOw0KPj4+ICvCoMKgwqDC oMKgwqDCoCBpZiAocmV0KQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBy ZXQ7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8 IG51bV9jcnRjOyBpKyspIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfZGlz cGxheV9waXBlICpkaXNwaXBlID0gJmxkZXYtPmRpc3BpcGVbaV07DQo+Pj4gK8KgwqDCoMKg wqDCoMKgIHN0cnVjdCBsc2RjX3BsbCAqcGl4cGxsID0gJmRpc3BpcGUtPnBpeHBsbDsNCj4+ PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSA9ICZkaXNwaXBl LT5wcmltYXJ5Ow0KPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX3BsYW5lICpjdXJz b3IgPSAmZGlzcGlwZS0+Y3Vyc29yOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJt X2NydGMgKmNydGMgPSAmZGlzcGlwZS0+Y3J0YzsNCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDC oMKgIGRpc3BpcGUtPmluZGV4ID0gaTsNCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dCA9IGxzZGNfcGl4cGxsX2luaXQocGl4cGxsLCBkZGV2LCBpKTsNCj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKHJldCkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0 Ow0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0ID0gbHNkY19wbGFuZV9pbml0KGxk ZXYsIHByaW1hcnksIERSTV9QTEFORV9UWVBFX1BSSU1BUlksIA0KPj4+IGkpOw0KPj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBsc2RjX3BsYW5l X2luaXQobGRldiwgY3Vyc29yLCBEUk1fUExBTkVfVFlQRV9DVVJTT1IsIGkpOw0KPj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJl dHVybiByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCAvKg0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgICogSW5pdGlhbCBhbGwgb2YgdGhlIENSVEMgYXZhaWxhYmxlLCBpbiB0aGlz IHdheSB0aGUgbG9naWNhbA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgICogY3J0YyBpbmRleCBp cyBlcXVhbCB0byB0aGUgaGFyZHdhcmUgY3J0YyBpbmRleC4NCj4+PiArwqDCoMKgwqDCoMKg wqDCoCAqDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqAgKiBkaXNwbGF5IHBpcGUgMCA9IGNydGMw ICsgZHZvMCArIGVuY29kZXIwICsgY29ubmVjdG9yMA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg ICogZGlzcGxheSBwaXBlIDEgPSBjcnRjMSArIGR2bzEgKyBlbmNvZGVyMSArIGNvbm5lY3Rv cjENCj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXQg PSBsc2RjX2NydGNfaW5pdChkZGV2LCBjcnRjLCBpLCBwcmltYXJ5LCBjdXJzb3IpOw0KPj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAocmV0KQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1faW5mbyhkZGV2 LCAiZGlzcGxheSBwaXBlICV1IGluaXRpYWxpemVkXG4iLCBpKTsNCj4+PiArwqDCoMKgIH0N Cj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fbW9kZV9jb25maWdfcmVzZXQoZGRldik7DQo+Pj4g Kw0KPj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBp bnQgbHNkY19tb2RlX2NvbmZpZ19pbml0KHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LA0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19k ZXNjICpkZXNjcCkNCj4+PiArew0KPj4+ICvCoMKgwqAgaW50IHJldDsNCj4+PiArDQo+Pj4g K8KgwqDCoCByZXQgPSBkcm1tX21vZGVfY29uZmlnX2luaXQoZGRldik7DQo+Pj4gK8KgwqDC oCBpZiAocmV0KQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gcmV0Ow0KPj4+ICsNCj4+ PiArwqDCoMKgIGRkZXYtPm1vZGVfY29uZmlnLmZ1bmNzID0gJmxzZGNfbW9kZV9jb25maWdf ZnVuY3M7DQo+Pj4gK8KgwqDCoCBkZGV2LT5tb2RlX2NvbmZpZy5taW5fd2lkdGggPSAxOw0K Pj4+ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcubWluX2hlaWdodCA9IDE7DQo+Pj4gK8Kg wqDCoCBkZGV2LT5tb2RlX2NvbmZpZy5tYXhfd2lkdGggPSBkZXNjcC0+bWF4X3dpZHRoICog TFNEQ19OVU1fQ1JUQzsNCj4+PiArwqDCoMKgIGRkZXYtPm1vZGVfY29uZmlnLm1heF9oZWln aHQgPSBkZXNjcC0+bWF4X2hlaWdodCAqIExTRENfTlVNX0NSVEM7DQo+Pj4gK8KgwqDCoCBk ZGV2LT5tb2RlX2NvbmZpZy5wcmVmZXJyZWRfZGVwdGggPSAyNDsNCj4+PiArwqDCoMKgIGRk ZXYtPm1vZGVfY29uZmlnLnByZWZlcl9zaGFkb3cgPSBkZXNjcC0+aGFzX3ZyYW07DQo+Pj4g Kw0KPj4+ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcuY3Vyc29yX3dpZHRoID0gZGVzY3At Pmh3X2N1cnNvcl9oOw0KPj4+ICvCoMKgwqAgZGRldi0+bW9kZV9jb25maWcuY3Vyc29yX2hl aWdodCA9IGRlc2NwLT5od19jdXJzb3JfaDsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBtYXhf dmJsYW5rX2NvdW50IGlzIHNldCBvbiBlYWNoIENSVEMgKi8NCj4+PiArwqDCoMKgIGRkZXYt Pm1heF92YmxhbmtfY291bnQgPSAweGZmZmZmZmZmOw0KPj4+ICsNCj4+PiArwqDCoMKgIHJl dHVybiByZXQ7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIGxzZGNfZGV0ZWN0 X2NoaXAgLSBhIGZ1bmN0aW9uIHRvIHRlbGwgbHNkYyB2YXJpYW50IGFwYXJ0Lg0KPj4+ICsg Ki8NCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKg0KPj4+ICtsc2RjX2Rl dGVjdF9jaGlwKHN0cnVjdCBwY2lfZGV2ICpwZGV2LCBjb25zdCBzdHJ1Y3QgcGNpX2Rldmlj ZV9pZCAqZW50KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCAvKg0KPj4+ICvCoMKgwqDCoCAqIFBy b3ZpZGUgYSB3YXkgdG8gZmFsc2UgdGhlIGRyaXZlciBydW5uaW5nIG9uIG5ldyBtb2RlbA0K Pj4+ICvCoMKgwqDCoCAqIGJlZm9yZSB3ZSBoYXZlIGEgcHJvcGVyIHdheSB0byB0ZWxsIHRo ZW0gYXBhcnQNCj4+PiArwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIGlmIChsc2RjX2NoaXAg PT0gQ0hJUF9MUzJLMjAwMCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfaW5mbygmcGRl di0+ZGV2LCAiT3ZlcnJpZGUgYXMgTFMySzIwMDBcbiIpOw0KPj4+ICvCoMKgwqDCoMKgwqDC oCByZXR1cm4gJmRjX2luX2xzMmsyMDAwOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiAr wqDCoMKgIGlmIChsc2RjX2NoaXAgPT0gQ0hJUF9MUzJLMTAwMCkgew0KPj4+ICvCoMKgwqDC oMKgwqDCoCBkZXZfaW5mbygmcGRldi0+ZGV2LCAiT3ZlcnJpZGUgYXMgTFMySzEwMDBcbiIp Ow0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gJmRjX2luX2xzMmsxMDAwOw0KPj4+ICvC oMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChsc2RjX2NoaXAgPT0gQ0hJUF9MUzJL MDUwMCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkZXZfaW5mbygmcGRldi0+ZGV2LCAiT3Zl cnJpZGUgYXMgTFMySzA1MDBcbiIpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gJmRj X2luX2xzMmswNTAwOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChl bnQpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfZGVzYyAqZGNfZGVzY3A7 DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkY19kZXNjcCA9IChzdHJ1Y3QgbHNkY19k ZXNjICopZW50LT5kcml2ZXJfZGF0YTsNCj4+DQo+PiBJcyB0aGF0IGxlZ2FsPyBkcml2ZXJf ZGF0YSBpcyBvZiBrZXJuZWxfdWxvbmdfdC4gTWF5YmUgc3RvcmUgdGhlIENISVBfIA0KPj4g Y29uc3RhbnQgaGVyZSBhbmQgdGhlbiBsb29rdXAgdGhlIGxzZGNfZGVzYy4NCj4+DQo+IEl0 IHdvcmtzIGluIHByYWN0aWNlIGJ1dCBpdCBzZWVtcyBkYW5nZXJvdXMgZG9pbmcgc28swqAg SSB3aWxsIHVzaW5nIA0KPiBDSElQXyBMUzdBWFhYWCBhbmQgQ0hJUF9MUzJLWFhYWCBhdCBu ZXcgdmVyc2lvbi4NCj4gDQo+IGkgZG9uJ3Qgbm90aWNlIGl0IGJlZm9yZSwgdGhhbmsgeW91 Lg0KPiANCj4+DQo+PiBodHRwczovL2VsaXhpci5ib290bGluLmNvbS9saW51eC9sYXRlc3Qv c291cmNlL2luY2x1ZGUvbGludXgvbW9kX2RldmljZXRhYmxlLmgjTDM2DQo+Pg0KPj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAoZGNfZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMTAwMCkNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZXZfaW5mbygmcGRldi0+ZGV2LCAiTFM3QTEw MDAgRm91bmQgcmV2aXNpb246ICV1XG4iLCANCj4+PiBwZGV2LT5yZXZpc2lvbik7DQo+Pj4g K8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGRjX2Rlc2NwLT5jaGlwID09IENISVBfTFM3QTIw MDApDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGV2X2luZm8oJnBkZXYtPmRldiwg IkxTN0EyMDAwIEZvdW5kIHJldmlzb246ICV1XG4iLCANCj4+PiBwZGV2LT5yZXZpc2lvbik7 DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gZGNfZGVzY3A7DQo+Pj4gK8Kg wqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZGV2X2VycigmcGRldi0+ZGV2LCAiTm90IGtu b3duIGRldmljZVxuIik7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuIE5VTEw7DQo+Pj4g K30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfZGVkaWNhdGVkX3ZyYW0oc3Ry dWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3ApDQo+Pj4gK3sNCj4+ PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+Pj4g K8KgwqDCoCBzdHJ1Y3QgcGNpX2RldiAqZ3B1Ow0KPj4+ICvCoMKgwqAgcmVzb3VyY2Vfc2l6 ZV90IGJhc2UsIHNpemU7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyoNCj4+PiArwqDCoMKgwqAg KiBUaGUgR1BVIGFuZCBkaXNwbGF5IGNvbnRyb2xsZXIgaW4gTFM3QTEwMDAvTFM3QTIwMDAg YXJlIA0KPj4+IHNlcGFyYXRlZA0KPj4+ICvCoMKgwqDCoCAqIFBDSUUgZGV2aWNlcywgdGhl eSBhcmUgdHdvIGRldmljZXMgbm90IG9uZS4gVGhlIERDIGlzIGEgcGNpIA0KPj4+IGRldmlj ZSwNCj4+PiArwqDCoMKgwqAgKiBidXQgaXQgZG9uJ3QgaGF2ZSBhIGRlZGljYXRlIFZSQU0g YmFyLCB0aGUgQklPUyBlbmdpbmVlciANCj4+PiBjaG9vc2UgdG8NCj4+PiArwqDCoMKgwqAg KiBhc3NpZ24gdGhlIFZSQU0gdG8gdGhlIGdwdSBkZXZpY2UuIFNhZGx5LCBhZnRlciB5ZWFy cyANCj4+PiBhcHBsaWNhdGlvbiwNCj4+PiArwqDCoMKgwqAgKiB0aGlzIGRlY2lzaW9uIGZv cm0gYXMgYSBjb252ZW50aW9uIGZvciBsb29uZ3NvbiBpbnRlZ3JhdGUgDQo+Pj4gZ3JhcGhp Y3MuDQo+Pj4gK8KgwqDCoMKgICogRm9yIExTN0ExMDAwIGFuZCBMUzdBMjAwMCwgYmFyIDIg b2YgR1BVIGRldmljZSBjb250YWluIHRoZSBWUkFNLA0KPj4+ICvCoMKgwqDCoCAqIGJvdGgg dGhlIEdQVSBhbmQgdGhlIERDIGNhbiBtYWtlIHVzZSBvZiB0aGUgVlJBTSBkZXBlbmQgb24g DQo+Pj4gaG93IERSTQ0KPj4+ICvCoMKgwqDCoCAqIGRldmljZSBkcml2ZXIgaXMgd3JpdHRl bi4gVGhlcmVmb3JlLCB3ZSBoYXZlIHRvIGRvIHNvbWUgDQo+Pj4gdHJpY2tzIGhlcmUuDQo+ Pj4gK8KgwqDCoMKgICovDQo+Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9M UzdBMTAwMCkNCj4+PiArwqDCoMKgwqDCoMKgwqAgZ3B1ID0gcGNpX2dldF9kZXZpY2UoUENJ X1ZFTkRPUl9JRF9MT09OR1NPTiwgMHg3QTE1LCBOVUxMKTsNCj4+PiArwqDCoMKgIGVsc2Ug aWYgKGRlc2NwLT5jaGlwID09IENISVBfTFM3QTIwMDApDQo+Pj4gK8KgwqDCoMKgwqDCoMKg IGdwdSA9IHBjaV9nZXRfZGV2aWNlKFBDSV9WRU5ET1JfSURfTE9PTkdTT04sIDB4N0EyNSwg TlVMTCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKCFncHUpIHsNCj4+PiArwqDCoMKgwqDC oMKgwqAgZHJtX3dhcm4oZGRldiwgIk5vIEdQVSBkZXZpY2UgZm91bmRcbiIpOw0KPj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gLUVOT0RFVjsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+ Pj4gK8KgwqDCoCBiYXNlID0gcGNpX3Jlc291cmNlX3N0YXJ0KGdwdSwgMik7DQo+Pj4gK8Kg wqDCoCBzaXplID0gcGNpX3Jlc291cmNlX2xlbihncHUsIDIpOw0KPj4+ICsNCj4+PiArwqDC oMKgIGxkZXYtPnZyYW1fYmFzZSA9IGJhc2U7DQo+Pj4gK8KgwqDCoCBsZGV2LT52cmFtX3Np emUgPSBzaXplOw0KPj4+ICsNCj4+PiArwqDCoMKgIGRybV9pbmZvKGRkZXYsICJkZWRpY2F0 ZWQgdnJhbSBzdGFydDogMHglbGx4LCBzaXplOiAldU1CXG4iLA0KPj4+ICvCoMKgwqDCoMKg wqDCoMKgICh1NjQpYmFzZSwgKHUzMikoc2l6ZSA+PiAyMCkpOw0KPj4+ICsNCj4+PiArwqDC oMKgIHJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKiBMb29uZ3Nv biBkaXNwbGF5IGNvbnRyb2xsZXIgaXMgbm90IGVxdWlwcGVkIHdpdGggSU9NTVUuDQo+Pj4g KyAqIEluIG9yZGVyIHRvIG1ha2UgdGhpcyBkcml2ZXIgd29yayB3aXRoIExvb25nc29uIFNv QywNCj4+PiArICogeW91IG5lZWQgdG8gZWl0aGVyIGNhcnZlb3V0IHBhcnQgUkFNIGFzIFZS QU0gb3IgcmVzZXJ2ZQ0KPj4+ICsgKiBwYXJ0IHN5c3RlbSByYW0gYXMgdnJhbS4gUGFzcyB0 aGUgc3RhcnQgYWRkcmVzcyBhbmQgc2l6ZQ0KPj4+ICsgKiB2aWEgRFQgb3IgQUNQSS4NCj4+ PiArICovDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19vZl9nZXRfcmVzZXJ2ZWRfcmFtKHN0cnVj dCBsc2RjX2RldmljZSAqbGRldikNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9k ZXZpY2UgKmRkZXYgPSAmbGRldi0+YmFzZTsNCj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcg c2l6ZSA9IDA7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZGV2aWNlX25vZGUgKm5vZGU7DQo+Pj4g K8KgwqDCoCBzdHJ1Y3QgcmVzb3VyY2UgcjsNCj4+PiArwqDCoMKgIGludCByZXQ7DQo+Pj4g Kw0KPj4+ICvCoMKgwqAgbm9kZSA9IG9mX3BhcnNlX3BoYW5kbGUoZGRldi0+ZGV2LT5vZl9u b2RlLCAibWVtb3J5LXJlZ2lvbiIsIDApOw0KPj4+ICvCoMKgwqAgaWYgKCFub2RlKSB7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIoZGRldiwgIk5vIG1lbW9yeS1yZWdpb24gcHJv cGVydHkgb3Igbm8gRFQsIGFib3J0XG4iKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJu IC1FTk9FTlQ7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0ID0gb2Zf YWRkcmVzc190b19yZXNvdXJjZShub2RlLCAwLCAmcik7DQo+Pj4gK8KgwqDCoCBvZl9ub2Rl X3B1dChub2RlKTsNCj4+PiArwqDCoMKgIGlmIChyZXQpDQo+Pj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybiByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgc2l6ZSA9IHIuZW5kIC0gci5zdGFy dCArIDE7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgbGRldi0+dnJhbV9iYXNlID0gci5zdGFydDsN Cj4+PiArwqDCoMKgIGxkZXYtPnZyYW1fc2l6ZSA9IHNpemU7DQo+Pj4gKw0KPj4+ICvCoMKg wqAgZHJtX2luZm8oZGRldiwgInVzaW5nIFZSQU0gY2FydmVvdXQ6ICVseEAlcGFcbiIsIHNp emUsICZyLnN0YXJ0KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiArfQ0K Pj4+ICsNCj4+PiArc3RhdGljIGludA0KPj4+ICtsc2RjX3JlbW92ZV9jb25mbGljdGluZ19m cmFtZWJ1ZmZlcnMoY29uc3Qgc3RydWN0IGRybV9kcml2ZXIgKnBkcml2ZXIsDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmVzb3VyY2Vfc2l6ZV90 IGJhc2UsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg cmVzb3VyY2Vfc2l6ZV90IHNpemUpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHJldHVybiBkcm1f YXBlcnR1cmVfcmVtb3ZlX2NvbmZsaWN0aW5nX2ZyYW1lYnVmZmVycyhiYXNlLA0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzaXplLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBmYWxzZSwNCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcGRy aXZlcik7DQo+Pj4gK30NCj4+DQo+PiBObyBuZWVkIHRvIHdyYXAgdGhpcyBzaW5nbGUgZnVu Y3Rpb24uDQo+IA0KPiBPaywgTG9vbmdzb24gdXBzdHJlYW0ga2VybmVsIHN1cHBvcnQgZWZp ZmIgYW5kIGl0IGJhY2tpbmcgbWVtb3J5IGlzIA0KPiBsb2NhdGVkIGF0IHRoaXMgcmFuZ2Uu DQo+IA0KPiB3ZSBtdXN0IHByb3Blcmx5IHJlbW92ZSBpdCwgb3RoZXJ3aXNlIHRoZXkgd2ls bCBoYXZlIHR3byBmYiANCj4gbm9kZSgvZGV2L2ZiMCBhbmQgL2Rldi9mYjEpDQoNClJpZ2h0 LCBidXQgeW91IGNhbiBjYWxsIGRybV9hcGVydHVyZV9yZW1vdmVfY29uZmxpY3RpbmdfZnJh bWVidWZmZXJzKCkgDQpkaXJlY3RseS4NCg0KQmVzdCBwcmFjdGljZSBpcyB0byBkZXRlY3Qg eW91ciBkZXZpY2UncyB2aWRlby1tZW1vcnkgcmFuZ2UgYW5kIGNsZWFyIA0KdXNlIGl0IGFz IGJhc2UgYW5kIHNpemUgdmFsdWVzLiBJbiBjYXNlcyB3aGVyZSB5b3UgZG9uJ3Qga25vdywg DQpkcm1fYXBlcnR1cmVfcmVtb3ZlX2ZyYW1lYnVmZmVycygpIHJlbW92ZSBhbGwgY29uZmxp Y3RpbmcgZHJpdmVycy4NCg0KPiANCj4+DQo+Pj4gKw0KPj4+ICtzdGF0aWMgc3RydWN0IGxz ZGNfZGV2aWNlICoNCj4+PiArbHNkY19jcmVhdGVfZGV2aWNlKHN0cnVjdCBwY2lfZGV2ICpw ZGV2LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgcGNpX2Rldmlj ZV9pZCAqZW50LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb25zdCBzdHJ1Y3QgZHJt X2RyaXZlciAqZHJ2KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2Ug KmxkZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldjsNCj4+PiArwqDC oMKgIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2NwOw0KPj4+ICvCoMKgwqAgaW50IHJl dDsNCj4+PiArDQo+Pj4gK8KgwqDCoCBsZGV2ID0gZGV2bV9kcm1fZGV2X2FsbG9jKCZwZGV2 LT5kZXYsIGRydiwgc3RydWN0IGxzZGNfZGV2aWNlLCANCj4+PiBiYXNlKTsNCj4+PiArwqDC oMKgIGlmIChJU19FUlIobGRldikpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBsZGV2 Ow0KPj4+ICsNCj4+PiArwqDCoMKgIGRkZXYgPSAmbGRldi0+YmFzZTsNCj4+PiArDQo+Pj4g K8KgwqDCoCBwY2lfc2V0X2RydmRhdGEocGRldiwgZGRldik7DQo+Pj4gKw0KPj4+ICvCoMKg wqAgZGVzY3AgPSBsc2RjX2RldGVjdF9jaGlwKHBkZXYsIGVudCk7DQo+Pj4gK8KgwqDCoCBp ZiAoIWRlc2NwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gTlVMTDsNCj4+PiArDQo+ Pj4gK8KgwqDCoCBsZGV2LT5kZXNjcCA9IGRlc2NwOw0KPj4+ICsNCj4+PiArwqDCoMKgIHNw aW5fbG9ja19pbml0KCZsZGV2LT5yZWdsb2NrKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBC QVIgMCB0aGUgREMgZGV2aWNlIGNvbnRhaW5zIHJlZ2lzdGVycyAqLw0KPj4+ICvCoMKgwqAg bGRldi0+cmVnX2Jhc2UgPSBwY2ltX2lvbWFwKHBkZXYsIDAsIDApOw0KPj4+ICvCoMKgwqAg aWYgKCFsZGV2LT5yZWdfYmFzZSkNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9Q VFIoLUVJTyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKGRlc2NwLT5oYXNfdnJhbSAmJiBs c2RjX2hhc192cmFtKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXQgPSBsc2RjX2dldF9kZWRp Y2F0ZWRfdnJhbShsZGV2LCBkZXNjcCk7DQo+Pj4gK8KgwqDCoCBlbHNlDQo+Pj4gK8KgwqDC oMKgwqDCoMKgIHJldCA9IGxzZGNfb2ZfZ2V0X3Jlc2VydmVkX3JhbShsZGV2KTsNCj4+PiAr DQo+Pj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIo ZGRldiwgIkluaXQgVlJBTSBmYWlsZWQ6ICVkXG4iLCByZXQpOw0KPj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gRVJSX1BUUihyZXQpOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiAr wqDCoMKgIHJldCA9IGxzZGNfcmVtb3ZlX2NvbmZsaWN0aW5nX2ZyYW1lYnVmZmVycyhkcnYs DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgbGRldi0+dnJhbV9iYXNlLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxkZXYtPnZyYW1fc2l6ZSk7DQo+Pj4gK8Kg wqDCoCBpZiAocmV0KSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIoZGRldiwgInJl bW92ZSBmaXJtd2FyZSBmcmFtZWJ1ZmZlcnMgZmFpbGVkOiAlZFxuIiwgDQo+Pj4gcmV0KTsN Cj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4+PiArwqDCoMKg IH0NCj4+PiArDQo+Pj4gK8KgwqDCoCByZXQgPSBkcm1tX3ZyYW1faGVscGVyX2luaXQoZGRl diwgbGRldi0+dnJhbV9iYXNlLCANCj4+PiBsZGV2LT52cmFtX3NpemUpOw0KPj4NCj4+IFVz aW5nIEdFTSBWUkFNIGhlbHBlcnMgY291bGQgYmVjb21lIGEgcHJvYmxlbSBhbmQgSSdkIGFk dmlzZSBhZ2FpbnN0IA0KPj4gdGhlbS4NCj4+DQo+IEVyciwgSSdtIG5vdCB3YW50IHRvIGFn cmVlIHRoaXMuLi4NCj4+IEZpcnN0IG9mIGFsbCwgaG93IG11Y2ggdmlkZW8gbWVtb3J5IGlz IHRoZXJlPyBWUkFNIGhlbHBlcnMgbmVlZCBhdCANCj4+IGxlYXN0IDMgdGltZXMgdGhlIG1h eGltdW0gY29uc3VtcHRpb24gdG8gYmUgcmVsaWFibGUuU28gaWYgeW91IGhhdmUgYSANCj4+ IEZ1bGxIRCBkaXNwbGF5IHRoYXQgY29uc3VtZXMgfjggTWliLCB5b3UnZCBuZWVkIDI0IE1p QiBvZiBWUkFNLiANCj4+IEhhcmR3YXJlIGN1cnNvcnMgY2FuIGZ1cnRoZXIgaW50ZXJmZXJl Lg0KPiANCj4gUGFydCBvZiBsczNhNTAwMC9sczNhNDAwMCtsczdhMTAwMCBtYWNoaW5lIGhh dmUgNjRNQiwgYW5vdGhlciBwYXJ0IG9mIA0KPiBsczNhNTAwMC9sczNhNDAwMCtsczdhMTAw MCBoYXZlIDEyOCBNQi4NCj4gDQo+IEZvciBsczdhMTAwMCgxMDgwcCkgdGhlIG1heGltdW3C oCB1c2FnZSBhY3R1YWxseSBpcyB0d28gDQo+IGZyYW1lYnVmZmVyKDE5MjB4MTA4MHg0eDIp wqAgKyB0d28gY3Vyc29yICg2NHg2NHg0eCAyKSArIG9uZSBmYmNvbiANCj4gKDE5MjB4MTA4 MHg0KSBhbmQgTFM3QTIwMDAgYm9hcmQgaGFzIGF0IGxlYXNlIDI1Nk1CIFZSQU0uDQo+IA0K PiBUaGVyZWZvcmUgSSBjYW4gZ3VhcmFudGVlIHRoYXQgd2UgaGF2ZSBhdCBsZWFzdCA2NE1C IFZSQU0sZW5vdWdoIGZvciANCj4gZG91YmxlIHNjcmVlbigxOTIweDEwODApICsgZG91Ymxl IGN1cnNvci4NCg0KT2ssIHNvdW5kcyBnb29kLiBJIGV4cGVjdGVkIHNvbWUgbG93LWVuZCBk ZXZpY2VzLCBidXQgNjQgTWlCIHNob3VsZCBiZSBmaW5lLg0KDQpJIHN0aWxsIHdhbnQgdG8g cmVtb3ZlIHRob3NlIFZSQU0gaGVscGVycyBpbiB0aGUgbG9uZyB0ZXJtLiBNeSANCnN1Z2dl c3Rpb24gaXMgdGhhdCB5b3Ugc2ltcGx5IHJlaW1wbGVtZW50IHRoZSBjb2RlIGluIA0KZHJt X2dlbV92cmFtX2hlbHBlci5jIGluIHlvdXIgZHJpdmVyLiBJdCdzIG5vdCB0aGF0IG11Y2gg YW5kIHlvdSBjYW4gDQpwcm9iYWJseSBkdXBsaWNhdGUgbW9zdCBvZiBpdC4gUGxlYXNlIG5h bWUgZXZlcnl0aGluZyBhY2NvcmRpbmcgdG8geW91ciANCmRyaXZlcidzIGNvbnZlbnRpb24u DQoNCllvdSBzaG91bGQgZW5kIHVwIHdpdGggYSBzZWxmLWNvbnRhaW5lZCBtZW1vcnkgbWFu YWdlciBiYXNlZCBvbiBUVE0sIA0Kd2hpY2ggeW91IGNhbiBhZGFwdCB0byB5b3VyIGhhcmR3 YXJlJ3MgbmVlZHMuDQoNCj4gDQo+IEkgZ3Vlc3MgeW91IG1lYW5zIHRoYXQgdGhlcmUgYXJl IHNvbWUgZGV2aWNlKGFzcGVlZCBibWMpIHdpdGggbGltaXRlZCANCj4gVlJBTSBzaXplLCBi dXQgaXQgaXMgbW9yZSBhIHByb2JsZW0NCj4gDQo+IG9mIHRoZSBkZXZpY2UgaXRzZWxmKEl0 IGlzIG5vdCB2cmFtIGhlbHBlcidzIGZhdWx0KS7CoCBFYXJseSB2ZXJzaW9uIG9mIA0KPiBh c3QgZHJpdmVyIHdvdWxkIGV2aWN0IGZiY29uIHRvIHN5c3RlbSBSQU0NCj4gDQo+IHRvIHNh dmUgVlJBTSB1c2FnZSwgd291bGQgdGhpcyBpZGVhIGJlIGEgc29sdXRpb24gZm9yIHRoZSBk ZXZpY2Ugd2l0aCANCj4gbGltaXRlZCB2cmFtIGNhcGFjaXR5IHRvZGF5Pw0KPiANCj4gDQo+ PiBWUkFNIGhlbHBlcnMgYWxzbyBkb24ndCBzdXBwb3J0IGJ1ZmZlciBzaGFyaW5nIHdpdGgg b3RoZXIgZGV2aWNlcy4gDQo+PiBUaGF0J3MgYSBwcm9ibGVtIGZvciBzb21lIGNvbXBvc2l0 b3JzLg0KPj4NCj4+IEZvciB0aG9zZSByZWFzb25zLCBWUkFNIGhlbHBlcnMgYXJlIGRlcHJl Y2F0ZWQuIEknZCByYXRoZXIgcmVtb3ZlIHRoZW0gDQo+PiBlbnRpcmVseS4gDQo+IA0KPiBJ dHMgbm90IHRoYXQgYmFkLCBWUkFNIGhlbHBlcnMgaXMgZ29vZCBlbm91Z2ggZm9yIG91ciBj YXNlIGFzIGEgZmlyc3QgDQo+IHN0ZXAuwqAgT3VyIGNvbGxlYWd1ZSBhbmQgY3VzdG9tZXJz IG1haW5seQ0KPiANCj4gdXNpbmcgTUFURSBhbmQgWEZDRcKgIHVuZGVyIFggc2VydmVyIGdy YXBoaWMgZW52aXJvbm1lbnQswqAgdGhleSBuZWVkIA0KPiBiYXNpYyAyRCBncmFwaGljcyBl bnZpcm9ubWVudCBtb3N0Lg0KPiANCj4gV2UgaGF2ZSB0ZXN0ZWQgb3VyIGRyaXZlciBhZ2Fp bnN0IG1hY3JvIGFuZCB4ZndtNCwgaXQgYWN0dWFsbHkgd29ya3MgDQo+IHZlcnkgd2VsbC4g SW5kaXZpZHVhbCBjb21wb3NpdG9yIG1heQ0KPiANCj4gaGF2ZSBhIGZldyBwcm9ibGVtcywg YnV0IGl0IGlzbid0IGEgdGhpbmcgZm9yIG91ciBjYXNlIGN1cnJlbnRseS4gQ2FuIHdlIA0K PiBzb2x2ZSB0aG9zZSBwcm9ibGVtIGJ5IG90aGVyIG1lYW5zPw0KPiANCj4gV2UgY291bGQg Z2l2ZSB1cCBjcm9zcyBkZXZpY2UgYnVmZmVyIHNoYXJpbmcgc3VwcG9ydCBmb3IgY2hhc2lu ZyAyRCANCj4gZ3JhcGhpYyBwZXJmb3JtYW5jZSAsIHdlIGludGVuZCB0bw0KPiANCj4gaW50 cm9kdWNpbmcgYnVmZmVyIHNoYXJpbmcgd2l0aCB0aGUgaGVscCBvZiB0aGUgR1BVIHdpdGgg YW5vdGhlciBwYXRjaCANCj4gaW4gdGhlIGZ1dHVyZS4gV2UgcG9zc2libHkgY291bGQNCj4g DQo+IHN3aXRjaCB0byB0dG0tYmFzZWQgS01TIGRyaXZlciB1bmRlciB5b3VyIGd1aWRpbmcg dGhlbi4gRm9yIGxzN2ExMDAwLMKgIEkgDQo+IGltYWdpbmUgdG8gbWVyZ2UgbHNkYyB3aXRo IGV2bmF2aXYNCj4gDQo+IGludG8gYSBzaW5nbGUgZHJtIGRyaXZlci5NYXkgSSBzdWdnZXN0 IHRvIHBvc3Rwb25lIHRoZSBkZWNpc2lvbiBvZiANCj4gcmVtb3ZpbmcgVlJBTSBoZWxwZXJz LCBpdHMgcGVyZm9ybWFuY2UNCj4gDQo+IGlzIGJldHRlciB0aGFuIHNobWVtIGhlbHBlciBh bmQgaGF2ZSBiZXR0ZXIgc3VwcG9ydCBmb3IgZG91YmxlIHNjcmVlbi4NCg0KQXMgSSBvdXRs aW5lZCwgcGxlYXNlIGR1cGxpY2F0ZSB0aGUgVlJBTSBoZWxwZXJzIGluIHlvdSBkcml2ZXIg YW5kIGFkYXB0IA0KaXQgdG8geW91ciBuZWVkcy4gIEkgcmVhbGx5IGp1c3Qgd2FudCB0byBh dm9pZCBtb3JlIHVzZXJzIG9mIHRoZSBWUkFNIA0KaGVscGVycy4gQnVpbGRpbmcgeW91ciBk cml2ZXIgdXBvbiBUVE0gaXMgcGVyZmVjdGx5IGZpbmUuDQoNClNpbmNlIHlvdSBoYXZlIGRl dmljZXMgd2l0aCBWUkFNIGFuZCBkZXZpY2VzIHdpdGhvdXQgVlJBTSwgeW91IHNob3VsZCBi ZSANCmFibGUgdG8gaGFuZGxlIGJvdGggY2FzZXMgd2l0aCBUVE0uIFRUTSBpcyBmbGV4aWJs ZSBlbm91Z2guIFlvdSBqdXN0IA0KbmVlZCB0byBjb25maWd1cmUgaXQgaW4gdGhlIHJpZ2h0 IHdheS4NCg0KRm9yIGZiY29uLCB1c2luZyBkcm1fZmJkZXZfZ2VuZXJpY19zZXR1cCgpIHNo b3VsZCBiZSBmaW5lIGZvciBub3cuIElmIA0KeW91IGltcGxlbWVudCB5b3VyIG93biBUVE0t YmFzZWQgbWVtb3J5IG1hbmFnZXIsIHlvdSB3aWxsIGFsc28gaGF2ZSB0aGUgDQpwb3NpYmls aXR5IG9mIGltcGxlbWVudGluZyBhIGZhc3RlciBjb25zb2xlLiBUaGF0J3MgbWF5YmUgc29t ZXRoaW5nIGZvciANCmEgbGF0ZXIgcGF0Y2guDQoNCj4gDQo+IA0KPj4gQXMgYSBiZXR0ZXIg YWx0ZXJuYXRpdmUgZm9yIHRoZSBEQywgeW91IGNvdWxkIHVzZSBHRU0gU0hNRU0gaGVscGVy cy4gDQo+PiBTZWUgbWdhZzIwMCBvciBhc3QgZm9yIGhvdyB0byBkbyB0aGF0Lg0KPiANCj4g V2UgaGF2ZSB0d28gZGlzcGxheSBwaXBlIHRodXMgc3VwcG9ydCBkb3VibGUgc2NyZWVuLCB0 aGVyZWZvcmUgd2UgaGF2ZSANCj4gdHdvIGZyYW1lYnVmZmVyIEJPIGFuZMKgIHR3byBjdXJz b3IgQk8sDQo+IA0KPiB3ZcKgIG5lZWQgdG8gdGFrZSBjbG9uZSBzY3JlZW4sIGV4dGVuZCBz Y3JlZW4gYW5kIHJvdGF0ZSBhbmQgcmVzaXplIGNhc2UgDQo+IGludG8gY29uc2lkZXJhdGlv biwgb24gY2xvbmUgc2NyZWVuIGNhc2UNCj4gDQo+IHRoZSB0d28gQ1JUQyBzaG91bGQgc2Nh bm91dCBmcm9tIHRoZSBzYW1lIGFkZHJlc3MsIHdoaWxlIG9uIGV4dGVuZCANCj4gc2NyZWVu IGNhc2UsIHRoZSBmcmFtZSBidWZmZXIgaXRzZWxmIGlzIGdyYW50DQo+IA0KPiBvbmUgYnVm ZmVyIGlmIHVzaW5nIG1vZGVzZXR0aW5nIGRyaXZlciwgYnV0IHdlIGhhdmUgdHdvIHByaW1h cnkgcGxhbmUgDQo+IHRodXMgdHdvIGZiIG9mZnNldC4gQXJyYW5nZSBWUkFNIGJvIG9mZnNl dA0KPiANCj4gZm9yIDQgZGlmZmVyZW50IGRybSBCTyBvYmplY3QgbWFudWFsbHkgaXMgbGl0 dGxlIGJpdCBoYWNrIGFuZCANCj4gY3VtYmVyc29tZS7CoCBJIGhhdmUgYWxyZWFkeSBmaW5p c2ggdGhlIGRldmVsb3BpbmcNCj4gDQo+IHdvcmsgb2Ygc2htZW0gaGVscGVyIHN1cHBvcnQs IHNlZTogDQo+IGh0dHBzOi8vZ2l0aHViLmNvbS9sb29uZ3Nvbi1nZngvZHJtLXRpcC9jb21w YXJlL2RybS10aXAuLi5zaG1lbQ0KPiANCj4gQnV0IGl0IGlzIE5PVCBhcyBnb29kIGFzIFZS QU0gaGVscGVyIGluIHRoZSBwZXJzcGVjdGl2ZSBvZiBwZXJmb3JtYW5jZS4gDQo+IEkgdGhp bmsgY29weSBmcm9tIHRoZSBzaGFkb3cgdG8gdGhlDQo+IA0KPiBmcm9udCBmcmFtZSBidWZm ZXIgc2hvdWxkIGJlIGRvbmUgYXQgdXNlciBzcGFjZSwgdGhpcyBjYW4gc2F2ZSB0aGUgDQo+ IG92ZXJoZWFkIG9mIHJlcG9ydGluZyBkYW1hZ2UgcmVjdGFuZ2xlIHdoZW5ldmVyDQo+IA0K PiBoYXZlIGEgZGFtYWdlLg0KPiANCj4gDQo+Pg0KPj4gVGhlIGNvbW1lbnRzIG1lbnRpb24g dGhhdCB0aGVyZSdzIGFsc28gYSBHUFUuIERvZXMgdGhlIEdQVSB1c2UgVlJBTT8gDQo+PiBP ciBkbyBHUFUgYW5kIERDIHNoYXJlIG1lbW9yeSByYW5nZXM/DQo+Pg0KPiBMUzdBMjAwMCBp bnRlZ3JhdGUgTG9vbmdzb24gc2VsZi1tYWRlIEdQVSwgZHJpdmVyIGlzIGRldmVsb3BlZCBi eSBteSANCj4gY29sbGVhZ3VlcywgaXQgYWxyZWFkeSB3b3JrcyBidXQgbXkgbWF0dXJlDQo+ IA0KPiB0byB1cHN0cmVhbSB5ZXQuwqAgTFM3QTEwMDAgaGF2ZSBhIFZJVkFOVEUgR0MxMDAw IHY1MDM3ICgyMDEyMDYxNyBldGMpLCBhIA0KPiB0ZW4geWVhcnMgYWdvIHJlbmRlci1vbmx5 IEdQVS4NCj4gDQo+IHRoZSBWUkFNIGlzIGNvbm5lY3RlZCB3aXRoIHRoZSBsczdhMTAwMCBi cmlkZ2UgY2hpcCwgdGhlIG1lbW9yeSANCj4gY29udHJvbGxlciBpcyBhbHNvIGluIGxzN2Ex MDAwIGJyaWRnZSBjaGlwIGl0c2VsZi4NCj4gDQo+IEFUSSBjYWxsIHRoaXMgdHlwZSB2cmFt IGFzIHNpZGVwb3J0LMKgIG15IGNvbXBhbnkgY2FsbCBpdCBhcyBHTUVNLCBJIA0KPiB0aGlu ayB0aGV5IGFyZSBzaW1pbGFyLg0KPiANCj4gZXRuYXZpdiBkb24ndCB1c2UgVlJBTSBjdXJy ZW50bHksIGFsbCBCT3Mgb2YgZXRuYXZpdiBpcyBpbiBzeXN0ZW0gcmFtLg0KPiANCj4gSSB0 aGlua8KgIG1lcmdlIGV0bmF2aXYgYW5kIGxzZGMgaW50byBhIHNpbmdsZSBkcm0gZHJpdmVy IHdvdWxkIGJlIGEgDQo+IHNvbHV0aW9uLCB3aGF0IGRvIHlvdSB0aGluaz8NCg0KSSBkb24n dCB0aGluayBldG5hdml2IGRldmVsb3BlcnMgd291bGQgbGlrZSBzdWNoIG1lcmdlcnMuICBX ZSB1c3VhbGx5IA0Ka2VlcCBlYWNoIGRyaXZlciBzZXBhcmF0ZSBmcm9tIG90aGVycyBhbmQg aWYgd2UgaGF2ZSBtdWx0aXBsZSBkcml2ZXJzIA0Kd2l0aCBzaW1pbGFyIGNvZGUsIHdlIHRy eSB0byBidWlsZCBhIGhlbHBlciBsaWJyYXJ5IHRoYXQgY292ZXJzIGFsbCBvZiANCnRoZW0u ICBEcml2ZXJzIGNhbiBzZWxlY3QgZnJvbSB0aGUgaGVscGVycyB3aGF0IHRoZXkgbmVlZC4N Cg0KPiANCj4gDQo+IE9uIGRvd25zdHJlYW0gZW52aXJvbm1lbnQsIHdlIGhhY2tpbmcgbWFr ZSB0dG0tYmFzZWQgbHNkYyB3b3JrIHdpdGggDQo+IGV0bmF2aXYsIGJ5IGNvcHlpbmcoc3cg cmVzb2x2ZSkNCj4gDQo+IHRoZSByZW5kZXJlZCBidWZmZXIgdG8gdnJhbSBiYWNrZWQgZnJh bWVidWZmZXIsIGdsbWFyazIgZ2V0IDIyMCBwb2ludCwgDQoNCg0KPiBxdWFrZTMgYXJlbmEg Y2FuIHBsYXkswqAgaGFoYSA6KQ0KDQpUaGF0J3MgdGhlIGltcG9ydGFudCB1c2UgY2FzZS4g OkQNCg0KPiANCj4gSXQgaXMgYWNoaWV2ZWQgYnkgZGV2ZWxvcGluZyB4Zjg2LXZpZGVvLWxv b25nc29uIHdoaWNoIHVzaW5nIGV0bmF2aXYgdG8gDQo+IHNoYXJlIGJ1ZmZlciBiZXR3ZWVu IHhzZXJ2ZXIgYW5kIGdsbWFyazIsDQo+IA0KPiBsc2RjKG9yIGRvd25zdHJlYW0gbG9vbmdz b24tZHJtKSBpcyBvbmx5IG5lZWQgdG8gaW1wbGVtZW50IGEgDQo+IHNlbGYtc2hhcmluZyBm b3IgdXNlcnNwYWNlIHByb2Nlc3MgLg0KPiANCj4gc2VlIGh0dHBzOi8vZ2l0aHViLmNvbS9s b29uZ3Nvbi1nZngveGY4Ni12aWRlby1sb29uZ3Nvbi4gVGhlIHNoYXJlZCANCj4gcmVuZGVy aW5nIGJ1ZmZlciBpcyBjb3B5DQo+IA0KPiB0byBmcm9udCBidWZmZXIgd2l0aCBsb29uZ3Nv biBMU1ggYW5kIExBU1goMjU2LWJpdCkgU0lNRCBvcHRpbWl6YXRpb24uIA0KPiBSZXBvcnQg ZGlydHkgdG8ga2VybmVsIHNwYWNlIGlzIG5vdCBuZWVkLg0KPiANCj4gd2UgY2FuIGV2ZW4g bGV0IHN1cHBlcnRpbGVkIGJ1ZmZlciByZW5kZXJlZCBieSBldG5hdml2IGdldCBleHBvcnRl ZCwgDQo+IHhmODYtdmlkZW8tbG9vbmdzb24gZ2V0IHRoZSBmZCBhbmQgcHJpbWUNCj4gDQo+ IGl0IHRvIGhhbmRsZSwgdGhlbiB3ZSBhcmUgdXNpbmcgQ1BVIHRvIGRvIHRoZSByZXNvbHZl IHdvcmsgd2hpY2ggDQo+IGRpcmVjdGx5IHJlc29sdmUgdG8gdGhlIGZyb250IGZyYW1lYnVm ZmVyLsKgIE5vIGRhbWFnZQ0KPiANCj4gcmVjdGFuZ2xlIHJlcG9ydGluZyBpcyBuZWVkLg0K PiANCj4gDQo+IEhlbmNlLCB0aGUgMkQgcGVyZm9ybWFuY2Ugb2YgZ3JhcGhpY3MgaXMgdGhl IG1vcmUgaW1wb3J0YW50LsKgIEdFTSBTSE1FTSANCj4gaGVscGVycyBpcyBub3QgYmV0dGVy IHRoYW4gdnJhbSBoZWxwZXJzDQo+IA0KPiBpbiB0aGUgcGVyc3BlY3RpdmUgb2YgcGVyZm9y bWFuY2UuDQo+IA0KPj4+ICvCoMKgwqAgaWYgKHJldCkgew0KPj4+ICvCoMKgwqDCoMKgwqDC oCBkcm1fZXJyKGRkZXYsICJ2cmFtIGhlbHBlciBpbml0IGZhaWxlZDogJWRcbiIsIHJldCk7 DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsN Cj4+PiArwqDCoMKgIHJldCA9IGxzZGNfbW9kZV9jb25maWdfaW5pdChkZGV2LCBkZXNjcCk7 DQo+Pj4gK8KgwqDCoCBpZiAocmV0KSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9kYmco ZGRldiwgIiVzOiAlZFxuIiwgX19mdW5jX18sIHJldCk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IGdvdG8gZXJyOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIHJldCA9IGxz ZGNfbW9kZXNldF9pbml0KGxkZXYsIGRlc2NwKTsNCj4+PiArwqDCoMKgIGlmIChyZXQpDQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGdvdG8gZXJyOw0KPj4+ICsNCj4+PiArwqDCoMKgIHJldCA9 IGRybV92YmxhbmtfaW5pdChkZGV2LCBkZXNjcC0+bnVtX29mX2NydGMpOw0KPj4+ICvCoMKg wqAgaWYgKHJldCkNCj4+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7DQo+Pj4gKw0KPj4+ ICvCoMKgwqAgcmV0ID0gcmVxdWVzdF90aHJlYWRlZF9pcnEocGRldi0+aXJxLA0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgbHNkY19nZXRfaXJxX2hhbmRs ZXIobGRldiksDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBs c2RjX2lycV90aHJlYWRfaGFuZGxlciwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIElSUUZfT05FU0hPVCwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIGRldl9uYW1lKGRkZXYtPmRldiksDQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZGV2KTsNCj4+PiArwqDCoMKgIGlmIChyZXQp IHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VycihkZGV2LCAiRmFpbGVkIHRvIHJlZ2lz dGVyIGxzZGMgaW50ZXJydXB0XG4iKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZ290byBlcnI7 DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX2ttc19oZWxwZXJfcG9s bF9pbml0KGRkZXYpOw0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBsZGV2Ow0KPj4+ICsN Cj4+PiArZXJyOg0KPj4+ICvCoMKgwqAgcmV0dXJuIEVSUl9QVFIocmV0KTsNCj4+PiArfQ0K Pj4+ICsNCj4+PiArc3RhdGljIGludCBsc2RjX3BjaV9wcm9iZShzdHJ1Y3QgcGNpX2RldiAq cGRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IHBj aV9kZXZpY2VfaWQgKmVudCkNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZp Y2UgKmRkZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXY7DQo+Pj4g K8KgwqDCoCBpbnQgcmV0Ow0KPj4+ICsNCj4+PiArwqDCoMKgIHJldCA9IHBjaW1fZW5hYmxl X2RldmljZShwZGV2KTsNCj4+PiArwqDCoMKgIGlmIChyZXQpDQo+Pj4gK8KgwqDCoMKgwqDC oMKgIHJldHVybiByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcGNpX3NldF9tYXN0ZXIocGRl dik7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0ID0gZG1hX3NldF9tYXNrX2FuZF9jb2hlcmVu dCgmcGRldi0+ZGV2LCBETUFfQklUX01BU0soNDApKTsNCj4+PiArwqDCoMKgIGlmIChyZXQp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAg bGRldiA9IGxzZGNfY3JlYXRlX2RldmljZShwZGV2LCBlbnQsICZsc2RjX2RybV9kcml2ZXIp Ow0KPj4+ICvCoMKgwqAgaWYgKElTX0VSUihsZGV2KSkNCj4+PiArwqDCoMKgwqDCoMKgwqAg cmV0dXJuIFBUUl9FUlIobGRldik7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZGRldiA9ICZsZGV2 LT5iYXNlOw0KPj4+ICsNCj4+PiArwqDCoMKgIHJldCA9IGRybV9kZXZfcmVnaXN0ZXIoZGRl diwgMCk7DQo+Pj4gK8KgwqDCoCBpZiAocmV0KQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1 cm4gcmV0Ow0KPj4+ICsNCj4+PiArwqDCoMKgIGRybV9mYmRldl9nZW5lcmljX3NldHVwKGRk ZXYsIDMyKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsN Cj4+PiArc3RhdGljIHZvaWQgbHNkY19wY2lfcmVtb3ZlKHN0cnVjdCBwY2lfZGV2ICpwZGV2 KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IHBjaV9n ZXRfZHJ2ZGF0YShwZGV2KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fZGV2X3VucmVnaXN0 ZXIoZGRldik7DQo+Pj4gK8KgwqDCoCBkcm1fYXRvbWljX2hlbHBlcl9zaHV0ZG93bihkZGV2 KTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBsc2RjX2RybV9mcmVlemUoc3Ry dWN0IGRybV9kZXZpY2UgKmRkZXYpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIGludCBlcnJvcjsN Cj4+PiArDQo+Pj4gK8KgwqDCoCBlcnJvciA9IGRybV9tb2RlX2NvbmZpZ19oZWxwZXJfc3Vz cGVuZChkZGV2KTsNCj4+PiArwqDCoMKgIGlmIChlcnJvcikNCj4+PiArwqDCoMKgwqDCoMKg wqAgcmV0dXJuIGVycm9yOw0KPj4+ICsNCj4+PiArwqDCoMKgIHBjaV9zYXZlX3N0YXRlKHRv X3BjaV9kZXYoZGRldi0+ZGV2KSk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuIDA7DQo+ Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19kcm1fcmVzdW1lKHN0cnVjdCBk ZXZpY2UgKmRldikNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IHBjaV9kZXYgKnBkZXYg PSB0b19wY2lfZGV2KGRldik7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRl diA9IHBjaV9nZXRfZHJ2ZGF0YShwZGV2KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4g ZHJtX21vZGVfY29uZmlnX2hlbHBlcl9yZXN1bWUoZGRldik7DQo+Pj4gK30NCj4+PiArDQo+ Pj4gK3N0YXRpYyBpbnQgbHNkY19wbV9mcmVlemUoc3RydWN0IGRldmljZSAqZGV2KQ0KPj4+ ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgcGNpX2RldiAqcGRldiA9IHRvX3BjaV9kZXYoZGV2 KTsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gcGNpX2dldF9kcnZk YXRhKHBkZXYpOw0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBsc2RjX2RybV9mcmVlemUo ZGRldik7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19wbV90aGF3KHN0 cnVjdCBkZXZpY2UgKmRldikNCj4+PiArew0KPj4+ICvCoMKgwqAgcmV0dXJuIGxzZGNfZHJt X3Jlc3VtZShkZXYpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGxzZGNfcG1f c3VzcGVuZChzdHJ1Y3QgZGV2aWNlICpkZXYpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVj dCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNpX2RldihkZXYpOw0KPj4+ICvCoMKgwqAgaW50IGVy cm9yOw0KPj4+ICsNCj4+PiArwqDCoMKgIGVycm9yID0gbHNkY19wbV9mcmVlemUoZGV2KTsN Cj4+PiArwqDCoMKgIGlmIChlcnJvcikNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGVy cm9yOw0KPj4+ICsNCj4+PiArwqDCoMKgIHBjaV9zYXZlX3N0YXRlKHBkZXYpOw0KPj4+ICvC oMKgwqAgLyogU2h1dCBkb3duIHRoZSBkZXZpY2UgKi8NCj4+PiArwqDCoMKgIHBjaV9kaXNh YmxlX2RldmljZShwZGV2KTsNCj4+PiArwqDCoMKgIHBjaV9zZXRfcG93ZXJfc3RhdGUocGRl diwgUENJX0QzaG90KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiArfQ0K Pj4+ICsNCj4+PiArc3RhdGljIGludCBsc2RjX3BtX3Jlc3VtZShzdHJ1Y3QgZGV2aWNlICpk ZXYpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gdG9fcGNp X2RldihkZXYpOw0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChwY2ltX2VuYWJsZV9kZXZpY2Uo cGRldikpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRUlPOw0KPj4+ICsNCj4+PiAr wqDCoMKgIHBjaV9zZXRfcG93ZXJfc3RhdGUocGRldiwgUENJX0QwKTsNCj4+PiArDQo+Pj4g K8KgwqDCoCBwY2lfcmVzdG9yZV9zdGF0ZShwZGV2KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBy ZXR1cm4gbHNkY19wbV90aGF3KGRldik7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgZGV2X3BtX29wcyBsc2RjX3BtX29wcyA9IHsNCj4+PiArwqDCoMKgIC5z dXNwZW5kID0gbHNkY19wbV9zdXNwZW5kLA0KPj4+ICvCoMKgwqAgLnJlc3VtZSA9IGxzZGNf cG1fcmVzdW1lLA0KPj4+ICvCoMKgwqAgLmZyZWV6ZSA9IGxzZGNfcG1fZnJlZXplLA0KPj4+ ICvCoMKgwqAgLnRoYXcgPSBsc2RjX3BtX3RoYXcsDQo+Pj4gK8KgwqDCoCAucG93ZXJvZmYg PSBsc2RjX3BtX2ZyZWV6ZSwNCj4+PiArwqDCoMKgIC5yZXN0b3JlID0gbHNkY19wbV9yZXN1 bWUsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9kZXZp Y2VfaWQgbHNkY19wY2lpZF9saXN0W10gPSB7DQo+Pj4gK8KgwqDCoCB7UENJX1ZFTkRPUl9J RF9MT09OR1NPTiwgMHg3YTA2LCBQQ0lfQU5ZX0lELCBQQ0lfQU5ZX0lELCAwLCAwLA0KPj4+ ICvCoMKgwqDCoCAoa2VybmVsX3Vsb25nX3QpJmRjX2luX2xzN2ExMDAwfSwNCj4+PiArwqDC oMKgIHtQQ0lfVkVORE9SX0lEX0xPT05HU09OLCAweDdhMzYsIFBDSV9BTllfSUQsIFBDSV9B TllfSUQsIDAsIDAsDQo+Pj4gK8KgwqDCoMKgIChrZXJuZWxfdWxvbmdfdCkmZGNfaW5fbHM3 YTIwMDB9LA0KPj4+ICvCoMKgwqAgezAsIDAsIDAsIDAsIDAsIDAsIDB9DQo+Pj4gK307DQo+ Pj4gKw0KPj4+ICtzdGF0aWMgc3RydWN0IHBjaV9kcml2ZXIgbHNkY19wY2lfZHJpdmVyID0g ew0KPj4+ICvCoMKgwqAgLm5hbWUgPSBEUklWRVJfTkFNRSwNCj4+PiArwqDCoMKgIC5pZF90 YWJsZSA9IGxzZGNfcGNpaWRfbGlzdCwNCj4+PiArwqDCoMKgIC5wcm9iZSA9IGxzZGNfcGNp X3Byb2JlLA0KPj4+ICvCoMKgwqAgLnJlbW92ZSA9IGxzZGNfcGNpX3JlbW92ZSwNCj4+PiAr wqDCoMKgIC5kcml2ZXIucG0gPSAmbHNkY19wbV9vcHMsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ ICtzdGF0aWMgaW50IF9faW5pdCBsc2RjX21vZHVsZV9pbml0KHZvaWQpDQo+Pj4gK3sNCj4+ PiArwqDCoMKgIHN0cnVjdCBwY2lfZGV2ICpwZGV2ID0gTlVMTDsNCj4+PiArDQo+Pj4gK8Kg wqDCoCBpZiAoZHJtX2Zpcm13YXJlX2RyaXZlcnNfb25seSgpKQ0KPj4+ICvCoMKgwqDCoMKg wqDCoCByZXR1cm4gLUVJTlZBTDsNCj4+DQo+PiDCoCByZXR1cm4gLUVOT0RFVjsNCj4gDQo+ IE9LLCBubyBwcm9ibGVtLCBJIHdpbGwgZml4IGl0IGF0IG5ldyB2ZXJzaW9uLiBJIHJlbWVt YmVyIGkgYWxyZWFkeSBmaXggDQo+IHRoaXMsIHNvcnJ5Lg0KPiANCj4+DQo+Pj4gKw0KPj4+ ICvCoMKgwqAgd2hpbGUgKChwZGV2ID0gcGNpX2dldF9jbGFzcyhQQ0lfQ0xBU1NfRElTUExB WV9WR0EgPDwgOCwgcGRldikpKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIC8qDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqAgKiBNdWx0aXBsZSB2aWRlbyBjYXJkIHdvcmthcm91bmQ6IGxzZGMg d2lsbCBhbHdheXMgYmUNCj4+PiArwqDCoMKgwqDCoMKgwqDCoCAqIHNlbGVjdGVkIGFzIHRo ZSBkZWZhdWx0IGJvb3QgZGV2aWNlIGJ5IHZnYWFyYiBzdWJzeXN0ZW0uDQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHBkZXYtPnZlbmRvciAh PSBQQ0lfVkVORE9SX0lEX0xPT05HU09OKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcHJfaW5mbygiRGlzY3JldGUgZ3JhcGhpYyBjYXJkIGRldGVjdGVkLCBhYm9ydFxuIik7 DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+Pj4gK8KgwqDCoMKg wqDCoMKgIH0NCj4+PiArwqDCoMKgIH0NCj4+DQo+PiBJIGRvbid0IHVuZGVyc3RhbmQgdGhp cyBjb2RlLiBZb3UgYXJlIG5vdCByZWdpc3RlcmluZyB5b3VyIGRyaXZlciBpZiANCj4+IHRo ZXJlJ3MgYW5vdGhlciBncmFwaGljcyBjYXJkPw0KPj4NCj4gWWVzLCB3ZSBkbyBub3Qgd2Fu dCB0byByZWdpc3RlcmluZyB0aGlzIGRyaXZlciBpZiB0aGVyZSdzIGRpc2NyZXRlIA0KPiBn cmFwaGljcyBjYXJkIG9yIEJNQyBpbiB0aGUgc3lzdGVtLg0KPiANCj4gDQo+IGZvciBleGFt cGxlOg0KDQpJIHJlYWQgdGhyb3VnaCB0aGUgZXhhbXBsZXMsIGJ1dCBzdGlsbCBmaW5kIGl0 IHN0cmFuZ2UuIE5vIG90aGVyIGRyaXZlciANCmRvZXMgdGhpcy4gTWF5YmUga2VlcCB0aGUg Y29kZSBmb3Igbm93LCBidXQgSSdkIGxpa2UgdG8gaGVhciB0aGUgb3BpbmlvbiANCm9mIG90 aGVyIERSTSBkZXZlbG9wZXJzIG9uIHRoaXMuIEknZCBleHBlY3QgdGhhdCB0aGVyZSdzIGEg YmV0dGVyIA0Kc29sdXRpb24gdG8gdGhpcy4NCg0KPiANCj4gMSnCoCBMb29uZ3NvbiBkZXNr dG9wIGNvbXB1dGVyKGxzM2E1MDAwICsgbHM3YTIwMDAgd2l0aCBhbWRncHUgcng1ODAgDQo+ IG1vdW50ZWQpDQo+IA0KPiBPbiBzdWNoIGEgY29uZmlndXJhdGlvbiwgbG9vbmdzb24gZGlz cGxheSBjb250cm9sbGVyIGFuZCByeDU4MCBjby1leGlzdCANCj4gaW4gdGhlIHN5c3RlbS4N Cj4gDQo+IEFzIGRpc2NyZXRlIEdQVSBpcyBtb3JlIHBvd2VyZnVsLCBpdCBzZWVtcyB0aGF0 IHRoZXJlIG5vIG5lZWQgdG8gdXNpbmcgDQo+IExTREMgZHJpdmVyIGFueW1vcmUuDQo+IA0K PiBUaGUgdXNlciBpcyBtb3N0IGxpa2VseSB3YW50IHRvIHVzaW5nIHRoZcKgIHJ4NTgwIGFz IHByaW1hcnkgR1BVIGFuZCANCj4gVXNpbmcgcng1ODAgYWxvbmUgaXMgZW5vdWdoIGZvciB1 c2VyIGluIHN1Y2ggYcKgIGNhc2UuDQo+IA0KPiBJdCBpcyBpbnRyb2R1Y2UgdW5uZWNlc3Nh cnkgcHJvYmxlbXMgYW5kIGNvbmZ1c2lvbiBJZiB3ZSBsZWF2ZSBsc2RjIA0KPiBkcml2ZXIg bGl2ZSBvbiB0aGUgc3lzdGVtIHRvZ2V0aGVyIHdpdGggYW1kZ3B1L2F0aSBkcm0gZHJpdmVy Lg0KPiANCj4gDQo+IEkgaGF2ZSBqdXN0IHRlc3RlZMKgIHRoZSBjYXNlIHdoaWNoIGxlYXZl IGxzZGMgZHJpdmVyIGxpdmUgb24gdGhlIHN5c3RlbSANCj4gdG9nZXRoZXIgd2l0aCByYWRl b24gZHJtIGRyaXZlci4NCj4gDQo+IHRoZSBtb25pdG9yIGNvbm5lY3RlZCB3aXRoIGxzZGMg aXMgYmxhY2ssIG5vdCB3b3JraW5nIGFzIGEgb3V0cHV0IHNsYXZlLg0KPiANCj4gDQo+IDIp wqAgTG9vbmdzb24gbHMzYzUwMDAgc2VydmVyIHdpdGggYXNwZWVkIDI0MDAvMjUwMDAgQk1D IGNhcmQgbW91bnRlZC4NCj4gDQo+IFRoZSBCTUMgcHJvdmlkZSByZW1vdGUgYWNjZXNzIGFu ZCBjb250cm9sIGJlc2lkZXMgdGhlIGdyYXBoaWNzLCB1c2UgaXQgDQo+IGFsb25lIGlzIGVu b3VnaCwgd2UgaGF2ZSBzb2x2ZQ0KPiANCj4gNCB+IDUgYnVncyBvbiBvdXIgcHJvZHVjdCBz aWRlLsKgIHdlIGRvbid0IHdhbnQgbWFrZSBhIG1lc3MuDQo+IA0KPiBvdXIgdGVzdGVyIGdl dCBjb25mdXNlZCwgdGhhbiBmaW5kIGEgYW1kZ3B1IGFuZCBwbHVnIGluLCB0aGVuIGhlIGdl dCANCj4gdGhyZWUgdmlkZW8gY28tZXhpc3QgaW4gdGhlIHNpc3RlbS4NCj4gDQo+IGxzZGMs IGFzdCBhbmQgYW1kZ3B1LCB0aGVyZSAvZGV2L2RyaS9jYXJkMCwgL2Rldi9kcmkvY2FyMSBh bmQgDQo+IC9kZXYvZHJpL2NhcmQyLg0KPiANCj4gaWYgaSBicmluZyBldG5hdml2IHVwLCB0 aGVuIGkgY2FuIGdldCBmb3VyLg0KPiANCj4gDQo+PiBCZXN0IHJlZ2FyZHMNCj4+IFRob21h cw0KPj4NCj4gVGhpbmtzIHlvdXIgdmFsdWFibGUgYWR2aWNlIGFuZCBndWlkaW5nLCB3ZSB3 aWxsIHRha2UgdGltZSB0byBmaXggYWxsIA0KPiB0aGUgcHJvYmxlbXMgeW91ciBtZW50aW9u ZWQsDQoNCk5vIHByb2JsZW0uIEkgdGhpbmsgSSBtZW50aW9uZWQgdGhhdCBpdCB3b3VsZG4n dCBtYWtlIHNlbnNlIHRvIG1lcmdlIHRoZSANCkRSTSBkcml2ZXIgYmVmb3JlIEFDUEkgYW5k L29yIERUIGFyZSByZWFkeS4gU28gd2UgaGF2ZSB0aW1lIHRvIGdldCB0aGUgDQpkcml2ZXIg aW50byBnb29kIHNoYXBlLg0KDQpCZXN0IHJlZ2FyZHMNClRob21hcw0KDQo+IA0KPiBhbmQg cHJlcGFyZSBuZXh0IHZlcnNpb24uDQo+IA0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBw Y2lfcmVnaXN0ZXJfZHJpdmVyKCZsc2RjX3BjaV9kcml2ZXIpOw0KPj4+ICt9DQo+Pj4gK21v ZHVsZV9pbml0KGxzZGNfbW9kdWxlX2luaXQpOw0KPj4+ICsNCj4+PiArc3RhdGljIHZvaWQg X19leGl0IGxzZGNfbW9kdWxlX2V4aXQodm9pZCkNCj4+PiArew0KPj4+ICvCoMKgwqAgcGNp X3VucmVnaXN0ZXJfZHJpdmVyKCZsc2RjX3BjaV9kcml2ZXIpOw0KPj4+ICt9DQo+Pj4gK21v ZHVsZV9leGl0KGxzZGNfbW9kdWxlX2V4aXQpOw0KPj4+ICsNCj4+PiArTU9EVUxFX0RFVklD RV9UQUJMRShwY2ksIGxzZGNfcGNpaWRfbGlzdCk7DQo+Pj4gK01PRFVMRV9BVVRIT1IoRFJJ VkVSX0FVVEhPUik7DQo+Pj4gK01PRFVMRV9ERVNDUklQVElPTihEUklWRVJfREVTQyk7DQo+ Pj4gK01PRFVMRV9MSUNFTlNFKCJHUEwiKTsNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9n cHUvZHJtL2xzZGMvbHNkY19kcnYuaCANCj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xz ZGNfZHJ2LmgNCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uZDY3ZGFlMDQxNGNhDQo+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9sc2RjL2xzZGNfZHJ2LmgNCj4+PiBAQCAtMCwwICsxLDI3NCBAQA0KPj4+ ICsvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCAqLw0KPj4+ICsvKg0KPj4+ ICsgKiBLTVMgZHJpdmVyIGZvciBMb29uZ3NvbiBkaXNwbGF5IGNvbnRyb2xsZXINCj4+PiAr ICogQ29weXJpZ2h0IChDKSAyMDIyIExvb25nc29uIENvcnBvcmF0aW9uDQo+Pj4gKyAqDQo+ Pj4gKyAqIEF1dGhvcnM6DQo+Pj4gKyAqwqDCoMKgwqDCoCBMaSBZaSA8bGl5aUBsb29uZ3Nv bi5jbj4NCj4+PiArICrCoMKgwqDCoMKgIExpIENoZW55YW5nIDxsaWNoZW55YW5nQGxvb25n c29uLmNuPg0KPj4+ICsgKsKgwqDCoMKgwqAgU3VpIEppbmdmZW5nIDxzdWlqaW5nZmVuZ0Bs b29uZ3Nvbi5jbj4NCj4+PiArICovDQo+Pj4gKw0KPj4+ICsjaWZuZGVmIF9fTFNEQ19EUlZf SF9fDQo+Pj4gKyNkZWZpbmUgX19MU0RDX0RSVl9IX18NCj4+PiArDQo+Pj4gKyNpbmNsdWRl IDxsaW51eC9pMmMuaD4NCj4+PiArI2luY2x1ZGUgPGxpbnV4L2kyYy1hbGdvLWJpdC5oPg0K Pj4+ICsNCj4+PiArI2luY2x1ZGUgPGRybS9kcm1fcHJpbnQuaD4NCj4+PiArI2luY2x1ZGUg PGRybS9kcm1fZGV2aWNlLmg+DQo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2NydGMuaD4NCj4+ PiArI2luY2x1ZGUgPGRybS9kcm1fcGxhbmUuaD4NCj4+PiArI2luY2x1ZGUgPGRybS9kcm1f Y29ubmVjdG9yLmg+DQo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2VuY29kZXIuaD4NCj4+PiAr I2luY2x1ZGUgPGRybS9kcm1fZHJ2Lmg+DQo+Pj4gKyNpbmNsdWRlIDxkcm0vZHJtX2F0b21p Yy5oPg0KPj4+ICsNCj4+PiArI2luY2x1ZGUgImxzZGNfcmVncy5oIg0KPj4+ICsjaW5jbHVk ZSAibHNkY19wbGwuaCINCj4+PiArDQo+Pj4gKyNkZWZpbmUgTFNEQ19OVU1fQ1JUQ8KgwqDC oMKgwqDCoMKgwqDCoMKgIDINCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIFRoZSBkaXNwbGF5 IGNvbnRyb2xsZXIgaW4gTFM3QTIwMDAgaW50ZWdyYXRlIHRocmVlIGxvb25nc29uIA0KPj4+ IHNlbGYtbWFkZQ0KPj4+ICsgKiBlbmNvZGVyLiBEaXNwbGF5IHBpcGUgMCBoYXMgYSB0cmFu c3BhcmVudCBWR0EgZW5jb2RlciBhbmQgYSBIRE1JIA0KPj4+IHBoeSwNCj4+PiArICogdGhl eSBhcmUgcGFyYWxsZWwuIERpc3BsYXkgcGlwZSAxIGhhcyBvbmx5IG9uZSBIRE1JIHBoeS4N Cj4+PiArICrCoMKgwqDCoMKgwqAgX19fX19fX19fX19fX19fX19fX19fXyBfX19fX19fX19f X19fDQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0t LSvCoCB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfA0KPj4+ICsgKsKgwqDCoMKgwqAg fCBDUlRDMCAtKy0tPiB8IFZHQSB8wqAgLS0tLT4gVkdBIENvbm5lY3RvciAtLS0+IHwgVkdB IA0KPj4+IE1vbml0b3IgfDwtLS0rDQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKg wqAgfMKgwqDCoCArLS0tLS0rwqAgfCB8X19fX19fX19fX19fX3zCoMKgwqAgfA0KPj4+ICsg KsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg fCBfX19fX19fX19fX19fX8KgwqDCoCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqAgfMKgwqDCoCArLS0tLS0tKyB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqAgKy0tPiB8IEhETUkg fCAtLS0tPiBIRE1JIENvbm5lY3RvciAtLT4gfCBIRE1JIA0KPj4+IE1vbml0b3IgfDwtLSsN Cj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0tLSsg fCB8X19fX19fX19fX19fX198wqDCoCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCArLS0tLS0tKyANCj4+PiB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIHwNCj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwg aTJjNiB8IA0KPj4+IDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tKw0KPj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKy0tLS0t LSvCoCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwNCj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqAgREMgaW4gTFM3 QTIwMDDCoMKgwqAgfA0KPj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCArLS0tLS0tK8KgIHwNCj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHwgaTJjNyB8IDwtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLSsNCj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0t LS0rwqAgfCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHwgX19fX19ffF9fX19fX18NCj4+PiArICrCoMKgwqDCoMKg IHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0tLS0rwqAgfCB8wqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgfA0KPj4+ICsgKsKgwqDCoMKgwqAgfCBDUlRDMSAtLS0+IHwgSERNSSB8 wqAgLS0tLT4gSERNSSBDb25uZWN0b3IgLS0tPiB8IEhETUkgDQo+Pj4gTW9uaXRvciB8DQo+ Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0tK8KgIHwg fF9fX19fX19fX19fX19ffA0KPj4+ICsgKsKgwqDCoMKgwqAgfF9fX19fX19fX19fX19fX19f X19fX198DQo+Pj4gKyAqDQo+Pj4gKyAqDQo+Pj4gKyAqIFRoZSBkaXNwbGF5IGNvbnRyb2xs ZXIgaW4gTFM3QTEwMDAgaW50ZWdyYXRlIHR3by13YXkgRFZPLCBleHRlcm5hbA0KPj4+ICsg KiBlbmNvZGVyIGlzIHJlcXVpcmVkIGV4Y2VwdCB1c2UgZGlyZWN0bHkgd2l0aCBkcGkocmdi ODg4KSBwYW5lbC4NCj4+PiArICogX19fX19fX19fX19fX19fX19fXyBfX19fX19fX18NCj4+ PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS18IHzCoMKg wqDCoMKgwqDCoMKgIHwNCj4+PiArICrCoMKgwqDCoMKgIHzCoCBDUlRDMCAtLT4gfCBEVk8w IC0tLS0+IEVuY29kZXIwIC0tLT4gQ29ubmVjdG9yMCAtLS0+IHwgDQo+Pj4gRGlzcGxheSB8 DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqAgX8KgwqAgX8KgwqDCoMKgIC0tLS0tLS18wqDCoMKg wqDCoMKgwqAgXsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeIHxfX19fX19fX198DQo+Pj4g KyAqwqDCoMKgwqDCoCB8IHwgfCB8IHzCoMKgwqAgLS0tLS0tLXzCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+PiArICrCoMKgwqDCoMKgIHwgfF98IHxf fMKgwqDCoCB8IGkyYzYgPC0tLS0tLS0tKy0tLS0tLS0tLS0tLS0rDQo+Pj4gKyAqwqDCoMKg wqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tfA0KPj4+ICsgKsKgwqDCoMKg wqAgfMKgIF/CoMKgIF/CoMKgwqDCoCAtLS0tLS0tfA0KPj4+ICsgKsKgwqDCoMKgwqAgfCB8 IHwgfCB8wqDCoMKgIHwgaTJjNyA8LS0tLS0tLS0rLS0tLS0tLS0tLS0tLSsNCj4+PiArICrC oMKgwqDCoMKgIHwgfF98IHxffMKgwqDCoCAtLS0tLS0tfMKgwqDCoMKgwqDCoMKgIHwgfMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBfX19fX19fX18NCj4+PiArICrCoMKgwqDCoMKgIHzC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIC0tLS0tLS18wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCB8IHzCoMKgwqDCoMKgwqDCoMKgIHwNCj4+PiArICrCoMKgwqDC oMKgIHzCoCBDUlRDMSAtLT4gfCBEVk8xIC0tLS0+IEVuY29kZXIxIC0tLT4gQ29ubmVjdG9y MSAtLS0+IHwgDQo+Pj4gUGFuZWzCoCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAtLS0tLS0tfCB8X19fX19fX19ffA0KPj4+ICsgKsKgwqDCoMKgwqAg fF9fX19fX19fX19fX19fX19fX198DQo+Pj4gKyAqDQo+Pj4gKyAqDQo+Pj4gKyAqIFRoZSBk aXNwbGF5IGNvbnRyb2xsZXIgaW4gTFMySzEwMDAuDQo+Pj4gKyAqIF9fX19fX19fX19fX19f X19fX18gX19fX19fX19fDQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAtLS0tLS0tfCB8wqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8 wqAgQ1JUQzAgLS0+IHwgRFZPMCAtLS0tPiBFbmNvZGVyMCAtLS0+IENvbm5lY3RvcjAgLS0t PiB8IA0KPj4+IERpc3BsYXkgfA0KPj4+ICsgKsKgwqDCoMKgwqAgfMKgIF/CoMKgIF/CoMKg wqDCoCAtLS0tLS0tfMKgwqDCoMKgwqDCoMKgIF7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBeIHxfX19fX19fX198DQo+Pj4gKyAqwqDCoMKgwqDCoCB8IHwgfCB8IHzCoMKgwqDCoMKg wqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IHwNCj4+PiArICrCoMKgwqDCoMKgIHwgfF98IHxffMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzC oMKgwqDCoCArLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDCoCB8DQo+Pj4gKyAqwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDwtLS0tPnwgaTJjMCB8 PC0tLS0tLS0tLSsNCj4+PiArICrCoMKgwqDCoMKgIHzCoCBEQyBpbiBMUzJLMTAwMMKgwqAg fMKgwqDCoMKgICstLS0tLS0rDQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqAgX8KgwqAgX8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgICstLS0tLS0rDQo+Pj4gKyAqwqDCoMKgwqDC oCB8IHwgfCB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoCA8LS0tLT58IGkyYzEgfC0tLS0tLS0t LS0rDQo+Pj4gKyAqwqDCoMKgwqDCoCB8IHxffCB8X3zCoMKgwqDCoMKgwqDCoMKgwqDCoCB8 wqDCoMKgwqAgKy0tLS0tLSsgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgX19fX19fX19fDQo+ Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tfMKgwqDC oMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IHzCoMKgwqDCoMKgwqDC oMKgIHwNCj4+PiArICrCoMKgwqDCoMKgIHzCoCBDUlRDMSAtLT4gfCBEVk8xIC0tLS0+IEVu Y29kZXIxIC0tLT4gQ29ubmVjdG9yMSAtLS0+IHwgDQo+Pj4gUGFuZWzCoCB8DQo+Pj4gKyAq wqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tfCB8X19fX19fX19f fA0KPj4+ICsgKsKgwqDCoMKgwqAgfF9fX19fX19fX19fX19fX19fX198DQo+Pj4gKyAqDQo+ Pj4gKyAqDQo+Pj4gKyAqIFRoZSBkaXNwbGF5IGNvbnRyb2xsZXIgaW4gTFMySzA1MDAsIExT MkswNTAwIGhhcyBhIGJ1aWx0LWluIA0KPj4+IHRyYW5zcGFyZW50DQo+Pj4gKyAqIFZHQSBl bmNvZGVyIHdoaWNoIGlzIGNvbm5lY3RlZCB0byBkaXNwbGF5IHBpcGUgMShDUlRDMSkuDQo+ Pj4gKyAqIF9fX19fX19fX19fX19fX19fX18gX19fX19fX19fDQo+Pj4gKyAqwqDCoMKgwqDC oCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAtLS0tLS0tfCB8wqDCoMKgwqDCoMKgwqDCoCB8 DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqAgQ1JUQzAgLS0+IHwgRFZPMCAtLS0tPiBFbmNvZGVy MCAtLS0+IENvbm5lY3RvcjAgLS0tPiB8IA0KPj4+IERpc3BsYXkgfA0KPj4+ICsgKsKgwqDC oMKgwqAgfMKgIF/CoMKgIF/CoMKgwqDCoCAtLS0tLS0tfMKgwqDCoMKgwqDCoMKgIF7CoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBeIHxfX19fX19fX198DQo+Pj4gKyAqwqDCoMKgwqDC oCB8IHwgfCB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqAgfMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+PiArICrCoMKgwqDCoMKgIHwgfF98IHxffMKg wqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoCArLS0tLS0tK8KgwqDCoMKgwqDCoMKgwqDC oCB8DQo+Pj4gKyAqwqDCoMKgwqDCoCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIDwtLS0tPnwgaTJjNCB8PC0tLS0tLS0tLSsNCj4+PiArICrCoMKgwqDCoMKgIHzC oCBEQyBpbiBMUzJLMDUwMMKgwqAgfMKgwqDCoMKgICstLS0tLS0rDQo+Pj4gKyAqwqDCoMKg wqDCoCB8wqAgX8KgwqAgX8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDCoMKgICstLS0t LS0rDQo+Pj4gKyAqwqDCoMKgwqDCoCB8IHwgfCB8IHzCoMKgwqDCoMKgwqDCoMKgwqDCoCA8 LS0tLT58IGkyYzUgfC0tLS0tLS0tLS0tLS0tLS0tLS0rDQo+Pj4gKyAqwqDCoMKgwqDCoCB8 IHxffCB8X3zCoMKgwqDCoMKgwqDCoMKgwqDCoCB8wqDCoMKgwqAgKy0tLS0tLSsgX19fX19f fF9fX19fXw0KPj4+ICsgKsKgwqDCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgICstLS0t LSsgfCB8wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+PiArICrCoMKgwqDCoMKgIHwg Q1JUQzEgLS0+IHwgVkdBIHwgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tPiB8IFZHQSBNb25p dG9yIHwNCj4+PiArICrCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKgwqDCoCArLS0tLS0r IHwgfF9fX19fX19fX19fX198DQo+Pj4gKyAqwqDCoMKgwqDCoCB8X19fX19fX19fX19fX19f X19fX3wNCj4+PiArICoNCj4+PiArICogTFM3QTEwMDAgYW5kIExTN0EyMDAwIGFyZSBicmlk Z2UgY2hpcHMsIGhhcyBkZWRpY2F0ZWQgVmlkZW8gUkFNLg0KPj4+ICsgKiB3aGlsZSBMUzJL MjAwMC9MUzJLMTAwMC9MUzJLMDUwMCBhcmUgU29DLCB0aGV5IGRvbid0IGhhdmUgZGVkaWFj YXRlZA0KPj4+ICsgKiBWaWRlbyBSQU0uIFRoZSBkYyBpbiBMUzJLMjAwMCBpcyBiYXNpY2x5 IHNhbWUgd2l0aCB0aGUgZGMgaW4gDQo+Pj4gTFM3QTEwMDANCj4+PiArICogZXhjZXB0IHRo YXQgTFMySzIwMDAgZG9uJ3QgaGF2ZSBhIHZpZGVvIFJBTSBhbmQgaGF2ZSBvbmx5IG9uZSAN Cj4+PiBidWlsdC1pbg0KPj4+ICsgKiBoZG1pIGVuY29kZXIuDQo+Pj4gKyAqDQo+Pj4gKyAq IFRoZXJlIGlzIG9ubHkgYSAxOjEgbWFwcGluZyBvZiBlbmNvZGVycyBhbmQgY29ubmVjdG9y cyBmb3IgdGhlIERDLA0KPj4+ICsgKiBlYWNoIENSVEMgaGF2ZSB0d28gRkIgYWRkcmVzcyBy ZWdpc3RlcnMuDQo+Pj4gKyAqLw0KPj4+ICsNCj4+PiArZW51bSBsb29uZ3Nvbl9jaGlwX2Zh bWlseSB7DQo+Pj4gK8KgwqDCoCBDSElQX1VOS05PV04gPSAwLA0KPj4+ICvCoMKgwqAgQ0hJ UF9MUzdBMTAwMCA9IDEswqAgLyogTm9ydGggYnJpZGdlIG9mIA0KPj4+IExTM0EzMDAwL0xT M0E0MDAwL0xTM0E1MDAwICovDQo+Pj4gK8KgwqDCoCBDSElQX0xTN0EyMDAwID0gMizCoCAv KiBVcGRhdGUgdmVyc2lvbiBvZiBMUzdBMTAwMCwgd2l0aCBidWlsdC1pbiANCj4+PiBIRE1J IGVuY29kZXIgKi8NCj4+PiArwqDCoMKgIENISVBfTFMySzA1MDAgPSAzLMKgIC8qIFJlZHVj ZWQgdmVyc2lvbiBvZiBMUzJLMTAwMCwgc2luZ2xlIGNvcmUgKi8NCj4+PiArwqDCoMKgIENI SVBfTFMySzEwMDAgPSA0LMKgIC8qIDItQ29yZSBNaXBzNjRyMi9MQTI2NCBTb0MsIDY0LWJp dCwgMS4wIA0KPj4+IEdoeiAqLw0KPj4+ICvCoMKgwqAgQ0hJUF9MUzJLMjAwMCA9IDUswqAg LyogMi1Db3JlIDY0LWJpdCBMQTM2NCBTb0MsIDEuMiB+IDEuNSBHaHogKi8NCj4+PiArwqDC oMKgIENISVBfTEFTVCwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0cnVjdCBsc2RjX2Rlc2Mg ew0KPj4+ICvCoMKgwqAgZW51bSBsb29uZ3Nvbl9jaGlwX2ZhbWlseSBjaGlwOw0KPj4+ICvC oMKgwqAgdTMyIG51bV9vZl9jcnRjOw0KPj4+ICvCoMKgwqAgdTMyIG1heF9waXhlbF9jbGs7 DQo+Pj4gK8KgwqDCoCB1MzIgbWF4X3dpZHRoOw0KPj4+ICvCoMKgwqAgdTMyIG1heF9oZWln aHQ7DQo+Pj4gK8KgwqDCoCB1MzIgbnVtX29mX2h3X2N1cnNvcjsNCj4+PiArwqDCoMKgIHUz MiBod19jdXJzb3JfdzsNCj4+PiArwqDCoMKgIHUzMiBod19jdXJzb3JfaDsNCj4+PiArwqDC oMKgIHUzMiBwaXRjaF9hbGlnbjvCoCAvKiBETUEgYWxpZ25tZW50IGNvbnN0cmFpbnQgKi8N Cj4+PiArwqDCoMKgIHU2NCBtY19iaXRzO8KgwqDCoMKgwqAgLyogcGh5c2ljYWwgYWRkcmVz cyBidXMgYml0IHdpZHRoICovDQo+Pj4gK8KgwqDCoCBib29sIGhhc192YmxhbmtfY291bnRl cjsNCj4+PiArwqDCoMKgIGJvb2wgaGFzX2J1aWx0aW5faTJjOw0KPj4+ICvCoMKgwqAgYm9v bCBoYXNfdnJhbTsNCj4+PiArwqDCoMKgIGJvb2wgaGFzX2hwZF9yZWc7DQo+Pj4gK8KgwqDC oCBib29sIGlzX3NvYzsNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0cnVjdCBsc2RjX2kyYyB7 DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgaTJjX2FkYXB0ZXIgYWRhcHRlcjsNCj4+PiArwqDCoMKg IHN0cnVjdCBpMmNfYWxnb19iaXRfZGF0YSBiaXQ7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X2RldmljZSAqZGRldjsNCj4+PiArwqDCoMKgIHZvaWQgX19pb21lbSAqcmVnX2Jhc2U7DQo+ Pj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKmRpcl9yZWc7DQo+Pj4gK8KgwqDCoCB2b2lkIF9f aW9tZW0gKmRhdF9yZWc7DQo+Pj4gK8KgwqDCoCAvKiBwaW4gYml0IG1hc2sgKi8NCj4+PiAr wqDCoMKgIHU4IHNkYTsNCj4+PiArwqDCoMKgIHU4IHNjbDsNCj4+PiArfTsNCj4+PiArDQo+ Pj4gKy8qDQo+Pj4gKyAqIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAtIEFic3RyYWN0aW9u IG9mIGhhcmR3YXJlIGRpc3BsYXkgcGlwZWxpbmUuDQo+Pj4gKyAqIEBjcnRjOiBDUlRDIGNv bnRyb2wgc3RydWN0dXJlDQo+Pj4gKyAqIEBwcmltYXJ5OiBmcmFtZWJ1ZmZlciBwbGFuZSBj b250cm9sIHN0cnVjdHVyZQ0KPj4+ICsgKiBAY3Vyc29yOiBjdXJzb3IgcGxhbmUgY29udHJv bCBzdHJ1Y3R1cmUNCj4+PiArICogQG91dHB1dDogb3V0cHV0IGNvbnRyb2wgc3RydWN0dXJl IG9mIHRoaXMgZGlzcGxheSBwaXBlIGJpbmQNCj4+PiArICogQHBpeHBsbDogcGl4ZWwgcGxs IGNvbnRyb2wgc3RydWN0dXJlDQo+Pj4gKyAqIEBpbmRleDogdGhlIGluZGV4IGNvcnJlc3Bv bmRpbmcgdG8gdGhlIGhhcmR3YXJlIGRpc3BsYXkgcGlwZQ0KPj4+ICsgKi8NCj4+PiArc3Ry dWN0IGxzZGNfZGlzcGxheV9waXBlIHsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0YyBj cnRjOw0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9wbGFuZSBwcmltYXJ5Ow0KPj4+ICvCoMKg wqAgc3RydWN0IGRybV9wbGFuZSBjdXJzb3I7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Vu Y29kZXIgZW5jb2RlcjsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY29ubmVjdG9yIGNvbm5l Y3RvcjsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX3BsbCBwaXhwbGw7DQo+Pj4gK8KgwqDC oCBzdHJ1Y3QgbHNkY19pMmMgKmxpMmM7DQo+Pj4gK8KgwqDCoCBpbnQgaW5kZXg7DQo+Pj4g K307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlw ZSAqDQo+Pj4gK2NydGNfdG9fZGlzcGxheV9waXBlKHN0cnVjdCBkcm1fY3J0YyAqY3J0YykN Cj4+PiArew0KPj4+ICvCoMKgwqAgcmV0dXJuIGNvbnRhaW5lcl9vZihjcnRjLCBzdHJ1Y3Qg bHNkY19kaXNwbGF5X3BpcGUsIGNydGMpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMg aW5saW5lIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqDQo+Pj4gK2N1cnNvcl90b19kaXNw bGF5X3BpcGUoc3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKQ0KPj4+ICt7DQo+Pj4gK8KgwqDC oCByZXR1cm4gY29udGFpbmVyX29mKGN1cnNvciwgc3RydWN0IGxzZGNfZGlzcGxheV9waXBl LCBjdXJzb3IpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBs c2RjX2Rpc3BsYXlfcGlwZSAqDQo+Pj4gK2Nvbm5lY3Rvcl90b19kaXNwbGF5X3BpcGUoc3Ry dWN0IGRybV9jb25uZWN0b3IgKmNvbm4pDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHJldHVybiBj b250YWluZXJfb2YoY29ubiwgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlLCBjb25uZWN0b3Ip Ow0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW5saW5lIHN0cnVjdCBsc2RjX2Rpc3Bs YXlfcGlwZSAqDQo+Pj4gK2VuY29kZXJfdG9fZGlzcGxheV9waXBlKHN0cnVjdCBkcm1fZW5j b2RlciAqZW5jKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCByZXR1cm4gY29udGFpbmVyX29mKGVu Yywgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlLCBlbmNvZGVyKTsNCj4+PiArfQ0KPj4+ICsN Cj4+PiArc3RydWN0IGxzZGNfY3J0Y19zdGF0ZSB7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgYmFzZTsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBw cGFybXM7DQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdHJ1Y3QgbHNkY19kZXZpY2Ugew0KPj4+ ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgYmFzZTsNCj4+PiArDQo+Pj4gK8KgwqDCoCAv KiBAcmVnbG9jazogcHJvdGVjdHMgY29uY3VycmVudCByZWdpc3RlciBhY2Nlc3MgKi8NCj4+ PiArwqDCoMKgIHNwaW5sb2NrX3QgcmVnbG9jazsNCj4+PiArwqDCoMKgIHZvaWQgX19pb21l bSAqcmVnX2Jhc2U7DQo+Pj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKnZyYW07DQo+Pj4gK8Kg wqDCoCByZXNvdXJjZV9zaXplX3QgdnJhbV9iYXNlOw0KPj4+ICvCoMKgwqAgcmVzb3VyY2Vf c2l6ZV90IHZyYW1fc2l6ZTsNCj4+PiArwqDCoMKgIHU2NCBtY19tYXNrOw0KPj4+ICsNCj4+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSBkaXNwaXBlW0xTRENfTlVNX0NS VENdOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIEBudW1fb3V0cHV0OiBjb3VudCB0aGUgbnVt YmVyIG9mIGFjdGl2ZSBkaXNwbGF5IHBpcGUgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIGlu dCBudW1fb3V0cHV0Ow0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIEBkZXNjcDogZmVhdHVyZXMg ZGVzY3JpcHRpb24gb2YgdGhlIERDIHZhcmlhbnQgKi8NCj4+PiArwqDCoMKgIGNvbnN0IHN0 cnVjdCBsc2RjX2Rlc2MgKmRlc2NwOw0KPj4+ICsNCj4+PiArwqDCoMKgIHUzMiBpcnFfc3Rh dHVzOw0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArc3RhdGljIGlubGluZSBzdHJ1Y3QgbHNkY19k ZXZpY2UgKg0KPj4+ICt0b19sc2RjKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2KQ0KPj4+ICt7 DQo+Pj4gK8KgwqDCoCByZXR1cm4gY29udGFpbmVyX29mKGRkZXYsIHN0cnVjdCBsc2RjX2Rl dmljZSwgYmFzZSk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbmxpbmUgc3RydWN0 IGxzZGNfY3J0Y19zdGF0ZSAqDQo+Pj4gK3RvX2xzZGNfY3J0Y19zdGF0ZShzdHJ1Y3QgZHJt X2NydGNfc3RhdGUgKmJhc2UpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHJldHVybiBjb250YWlu ZXJfb2YoYmFzZSwgc3RydWN0IGxzZGNfY3J0Y19zdGF0ZSwgYmFzZSk7DQo+Pj4gK30NCj4+ PiArDQo+Pj4gK3ZvaWQgbHNkY19kZWJ1Z2ZzX2luaXQoc3RydWN0IGRybV9taW5vciAqbWlu b3IpOw0KPj4+ICsNCj4+PiAraW50IGxzZGNfY3J0Y19pbml0KHN0cnVjdCBkcm1fZGV2aWNl ICpkZGV2LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNy dGMsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCwNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqcHJpbWFyeSwNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqY3Vyc29yKTsNCj4+ PiArDQo+Pj4gK2ludCBsc2RjX3BsYW5lX2luaXQoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2 LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGVudW0gZHJtX3BsYW5lX3R5cGUgdHlw ZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXgpOw0K Pj4+ICsNCj4+PiAraW50IGxzZGNfY3JlYXRlX291dHB1dChzdHJ1Y3QgbHNkY19kZXZpY2Ug KmxkZXYsIHVuc2lnbmVkIGludCBpbmRleCk7DQo+Pj4gKw0KPj4+ICtzdHJ1Y3QgbHNkY19p MmMgKmxzZGNfY3JlYXRlX2kyY19jaGFuKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LA0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdm9pZCAqYmFz ZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVu c2lnbmVkIGludCBpbmRleCk7DQo+Pj4gKw0KPj4+ICtzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmxz ZGNfZ2V0X2kyY19hZGFwdGVyKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwgDQo+Pj4gaW50 IGluZGV4KTsNCj4+PiArDQo+Pj4gK2lycXJldHVybl90IGxzZGNfaXJxX3RocmVhZF9oYW5k bGVyKGludCBpcnEsIHZvaWQgKmFyZyk7DQo+Pj4gK2lycV9oYW5kbGVyX3QgbHNkY19nZXRf aXJxX2hhbmRsZXIoc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2KTsNCj4+PiArDQo+Pj4gK3Uz MiBsc2RjX3JyZWczMihzdHJ1Y3QgbHNkY19kZXZpY2UgKiBjb25zdCBsZGV2LCB1MzIgb2Zm c2V0KTsNCj4+PiArdm9pZCBsc2RjX3dyZWczMihzdHJ1Y3QgbHNkY19kZXZpY2UgKiBjb25z dCBsZGV2LCB1MzIgb2Zmc2V0LCB1MzIgdmFsKTsNCj4+PiArDQo+Pj4gKyNlbmRpZg0KPj4+ IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2kyYy5jIA0KPj4+IGIv ZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19pMmMuYw0KPj4+IG5ldyBmaWxlIG1vZGUgMTAw NjQ0DQo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5iMzgwMDk4NDA5Y2ENCj4+PiAtLS0gL2Rl di9udWxsDQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19pMmMuYw0KPj4+ IEBAIC0wLDAgKzEsMjAxIEBADQo+Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBH UEwtMi4wDQo+Pj4gKw0KPj4+ICsjaW5jbHVkZSA8bGludXgvaTJjLmg+DQo+Pj4gKyNpbmNs dWRlIDxkcm0vZHJtX21hbmFnZWQuaD4NCj4+PiArI2luY2x1ZGUgImxzZGNfZHJ2LmgiDQo+ Pj4gKyNpbmNsdWRlICJsc2RjX3JlZ3MuaCINCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIGxz N2FfZ3Bpb19pMmNfc2V0IC0gc2V0IHRoZSBzdGF0ZSBvZiBhIGdwaW8gcGluIGluZGljYXRl ZCBieSBtYXNrDQo+Pj4gKyAqIEBtYXNrOiBncGlvIHBpbiBtYXNrDQo+Pj4gKyAqIEBzdGF0 ZTogIjAiIGZvciBsb3csICIxIiBmb3IgaGlnaA0KPj4+ICsgKi8NCj4+PiArc3RhdGljIHZv aWQgbHM3YV9ncGlvX2kyY19zZXQoc3RydWN0IGxzZGNfaTJjICogY29uc3QgbGkyYywgaW50 IA0KPj4+IG1hc2ssIGludCBzdGF0ZSkNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGxz ZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhsaTJjLT5kZGV2KTsNCj4+PiArwqDCoMKgIHVu c2lnbmVkIGxvbmcgZmxhZ3M7DQo+Pj4gK8KgwqDCoCB1OCB2YWw7DQo+Pj4gKw0KPj4+ICvC oMKgwqAgc3Bpbl9sb2NrX2lycXNhdmUoJmxkZXYtPnJlZ2xvY2ssIGZsYWdzKTsNCj4+PiAr DQo+Pj4gK8KgwqDCoCBpZiAoc3RhdGUpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgLyoNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoCAqIFNldHRpbmcgdGhpcyBwaW4gYXMgaW5wdXQgZGlyZWN0 bHksIHdyaXRlIDEgZm9yIElucHV0Lg0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgICogVGhlIGV4 dGVybmFsIHB1bGwtdXAgcmVzaXN0b3Igd2lsbCBwdWxsIHRoZSBsZXZlbCB1cA0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IHJlYWRiKGxp MmMtPmRpcl9yZWcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgfD0gbWFzazsNCj4+PiAr wqDCoMKgwqDCoMKgwqAgd3JpdGViKHZhbCwgbGkyYy0+ZGlyX3JlZyk7DQo+Pj4gK8KgwqDC oCB9IGVsc2Ugew0KPj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBGaXJzdCBzZXQgdGhpcyBwaW4g YXMgb3V0cHV0LCB3cml0ZSAwIGZvciBPdXRwdXQgKi8NCj4+PiArwqDCoMKgwqDCoMKgwqAg dmFsID0gcmVhZGIobGkyYy0+ZGlyX3JlZyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCAm PSB+bWFzazsNCj4+PiArwqDCoMKgwqDCoMKgwqAgd3JpdGViKHZhbCwgbGkyYy0+ZGlyX3Jl Zyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCAvKiBUaGVuLCBtYWtlIHRoaXMgcGlu IG91dHB1dCAwICovDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IHJlYWRiKGxpMmMtPmRh dF9yZWcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgJj0gfm1hc2s7DQo+Pj4gK8KgwqDC oMKgwqDCoMKgIHdyaXRlYih2YWwsIGxpMmMtPmRhdF9yZWcpOw0KPj4+ICvCoMKgwqAgfQ0K Pj4+ICsNCj4+PiArwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3RvcmUoJmxkZXYtPnJlZ2xv Y2ssIGZsYWdzKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArLyoNCj4+PiArICogbHM3YV9ncGlv X2kyY19nZXQgLSByZWFkIHZhbHVlIGJhY2sgZnJvbSB0aGUgZ3BpbyBwaW4gaW5kaWNhdGVk IA0KPj4+IGJ5IG1hc2sNCj4+PiArICogQG1hc2s6IGdwaW8gcGluIG1hc2sNCj4+PiArICog cmV0dXJuICIwIiBmb3IgbG93LCAiMSIgZm9yIGhpZ2gNCj4+PiArICovDQo+Pj4gK3N0YXRp YyBpbnQgbHM3YV9ncGlvX2kyY19nZXQoc3RydWN0IGxzZGNfaTJjICogY29uc3QgbGkyYywg aW50IG1hc2spDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRl diA9IHRvX2xzZGMobGkyYy0+ZGRldik7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb25nIGZs YWdzOw0KPj4+ICvCoMKgwqAgdTggdmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIHNwaW5fbG9j a19pcnFzYXZlKCZsZGV2LT5yZWdsb2NrLCBmbGFncyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAg LyogRmlyc3Qgc2V0IHRoaXMgcGluIGFzIGlucHV0ICovDQo+Pj4gK8KgwqDCoCB2YWwgPSBy ZWFkYihsaTJjLT5kaXJfcmVnKTsNCj4+PiArwqDCoMKgIHZhbCB8PSBtYXNrOw0KPj4+ICvC oMKgwqAgd3JpdGViKHZhbCwgbGkyYy0+ZGlyX3JlZyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAg LyogVGhlbiBnZXQgbGV2ZWwgc3RhdGUgZnJvbSB0aGlzIHBpbiAqLw0KPj4+ICvCoMKgwqAg dmFsID0gcmVhZGIobGkyYy0+ZGF0X3JlZyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgc3Bpbl91 bmxvY2tfaXJxcmVzdG9yZSgmbGRldi0+cmVnbG9jaywgZmxhZ3MpOw0KPj4+ICsNCj4+PiAr wqDCoMKgIHJldHVybiAodmFsICYgbWFzaykgPyAxIDogMDsNCj4+PiArfQ0KPj4+ICsNCj4+ PiArc3RhdGljIHZvaWQgbHM3YV9pMmNfc2V0X3NkYSh2b2lkICppMmMsIGludCBzdGF0ZSkN Cj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfaTJjICogY29uc3QgbGkyYyA9IChz dHJ1Y3QgbHNkY19pMmMgKilpMmM7DQo+Pj4gK8KgwqDCoCAvKiBzZXQgc3RhdGUgb24gdGhl IGxpMmMtPnNkYSBwaW4gKi8NCj4+PiArwqDCoMKgIHJldHVybiBsczdhX2dwaW9faTJjX3Nl dChsaTJjLCBsaTJjLT5zZGEsIHN0YXRlKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGlj IHZvaWQgbHM3YV9pMmNfc2V0X3NjbCh2b2lkICppMmMsIGludCBzdGF0ZSkNCj4+PiArew0K Pj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfaTJjICogY29uc3QgbGkyYyA9IChzdHJ1Y3QgbHNk Y19pMmMgKilpMmM7DQo+Pj4gK8KgwqDCoCAvKiBzZXQgc3RhdGUgb24gdGhlIGxpMmMtPnNj bCBwaW4gKi8NCj4+PiArwqDCoMKgIHJldHVybiBsczdhX2dwaW9faTJjX3NldChsaTJjLCBs aTJjLT5zY2wsIHN0YXRlKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBsczdh X2kyY19nZXRfc2RhKHZvaWQgKmkyYykNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGxz ZGNfaTJjICogY29uc3QgbGkyYyA9IChzdHJ1Y3QgbHNkY19pMmMgKilpMmM7DQo+Pj4gK8Kg wqDCoCAvKiByZWFkIHZhbHVlIGZyb20gdGhlIGxpMmMtPnNkYSBwaW4gKi8NCj4+PiArwqDC oMKgIHJldHVybiBsczdhX2dwaW9faTJjX2dldChsaTJjLCBsaTJjLT5zZGEpOw0KPj4+ICt9 DQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGxzN2FfaTJjX2dldF9zY2wodm9pZCAqaTJjKQ0K Pj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19pMmMgKiBjb25zdCBsaTJjID0gKHN0 cnVjdCBsc2RjX2kyYyAqKWkyYzsNCj4+PiArwqDCoMKgIC8qIHJlYWQgdGhlIHZhbHVlIGZy b20gdGhlIGxpMmMtPnNjbCBwaW4gKi8NCj4+PiArwqDCoMKgIHJldHVybiBsczdhX2dwaW9f aTJjX2dldChsaTJjLCBsaTJjLT5zY2wpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMg dm9pZCBsc2RjX2Rlc3Ryb3lfaTJjKHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2LCB2b2lkICpk YXRhKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19pMmMgKmxpMmMgPSAoc3Ry dWN0IGxzZGNfaTJjICopZGF0YTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAobGkyYykgew0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBpMmNfZGVsX2FkYXB0ZXIoJmxpMmMtPmFkYXB0ZXIpOw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBrZnJlZShsaTJjKTsNCj4+PiArwqDCoMKgIH0NCj4+PiAr fQ0KPj4+ICsNCj4+PiArLyoNCj4+PiArICogVGhlIERDIGluIGxzN2ExMDAwL2xzN2EyMDAw IGhhdmUgYnVpbHRpbiBncGlvIGhhcmR3YXJlDQo+Pj4gKyAqDQo+Pj4gKyAqIEBiYXNlOiBn cGlvIHJlZyBiYXNlDQo+Pj4gKyAqIEBpbmRleDogb3V0cHV0IGNoYW5uZWwgaW5kZXgsIDAg Zm9yIERWTzAsIDEgZm9yIERWTzENCj4+PiArICovDQo+Pj4gK3N0cnVjdCBsc2RjX2kyYyAq bHNkY19jcmVhdGVfaTJjX2NoYW4oc3RydWN0IGRybV9kZXZpY2UgKmRkZXYsDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB2b2lkICpiYXNlLA0K Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWdu ZWQgaW50IGluZGV4KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgaTJjX2FkYXB0ZXIg KmFkYXB0ZXI7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19pMmMgKmxpMmM7DQo+Pj4gK8Kg wqDCoCBpbnQgcmV0Ow0KPj4+ICsNCj4+PiArwqDCoMKgIGxpMmMgPSBremFsbG9jKHNpemVv ZigqbGkyYyksIEdGUF9LRVJORUwpOw0KPj4+ICvCoMKgwqAgaWYgKCFsaTJjKQ0KPj4+ICvC oMKgwqDCoMKgwqDCoCByZXR1cm4gRVJSX1BUUigtRU5PTUVNKTsNCj4+PiArDQo+Pj4gK8Kg wqDCoCBpZiAoaW5kZXggPT0gMCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsaTJjLT5zZGEg PSAweDAxO8KgIC8qIHBpbiAwICovDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxpMmMtPnNjbCA9 IDB4MDI7wqAgLyogcGluIDEgKi8NCj4+PiArwqDCoMKgIH0gZWxzZSBpZiAoaW5kZXggPT0g MSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsaTJjLT5zZGEgPSAweDA0O8KgIC8qIHBpbiAy ICovDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxpMmMtPnNjbCA9IDB4MDg7wqAgLyogcGluIDMg Ki8NCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBsaTJjLT5yZWdfYmFzZSA9 IGJhc2U7DQo+Pj4gK8KgwqDCoCBsaTJjLT5kZGV2ID0gZGRldjsNCj4+PiArwqDCoMKgIGxp MmMtPmRpcl9yZWcgPSBsaTJjLT5yZWdfYmFzZSArIExTN0FfRENfR1BJT19ESVJfUkVHOw0K Pj4+ICvCoMKgwqAgbGkyYy0+ZGF0X3JlZyA9IGxpMmMtPnJlZ19iYXNlICsgTFM3QV9EQ19H UElPX0RBVF9SRUc7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgbGkyYy0+Yml0LnNldHNkYSA9IGxz N2FfaTJjX3NldF9zZGE7DQo+Pj4gK8KgwqDCoCBsaTJjLT5iaXQuc2V0c2NsID0gbHM3YV9p MmNfc2V0X3NjbDsNCj4+PiArwqDCoMKgIGxpMmMtPmJpdC5nZXRzZGEgPSBsczdhX2kyY19n ZXRfc2RhOw0KPj4+ICvCoMKgwqAgbGkyYy0+Yml0LmdldHNjbCA9IGxzN2FfaTJjX2dldF9z Y2w7DQo+Pj4gK8KgwqDCoCBsaTJjLT5iaXQudWRlbGF5ID0gNTsNCj4+PiArwqDCoMKgIGxp MmMtPmJpdC50aW1lb3V0ID0gdXNlY3NfdG9famlmZmllcygyMjAwKTsNCj4+PiArwqDCoMKg IGxpMmMtPmJpdC5kYXRhID0gbGkyYzsNCj4+PiArDQo+Pj4gK8KgwqDCoCBhZGFwdGVyID0g JmxpMmMtPmFkYXB0ZXI7DQo+Pj4gK8KgwqDCoCBhZGFwdGVyLT5hbGdvX2RhdGEgPSAmbGky Yy0+Yml0Ow0KPj4+ICvCoMKgwqAgYWRhcHRlci0+b3duZXIgPSBUSElTX01PRFVMRTsNCj4+ PiArwqDCoMKgIGFkYXB0ZXItPmNsYXNzID0gSTJDX0NMQVNTX0REQzsNCj4+PiArwqDCoMKg IGFkYXB0ZXItPmRldi5wYXJlbnQgPSBkZGV2LT5kZXY7DQo+Pj4gK8KgwqDCoCBhZGFwdGVy LT5uciA9IC0xOw0KPj4+ICsNCj4+PiArwqDCoMKgIHNucHJpbnRmKGFkYXB0ZXItPm5hbWUs IHNpemVvZihhZGFwdGVyLT5uYW1lKSwgImxzZGMtaTJjJXUiLCANCj4+PiBpbmRleCk7DQo+ Pj4gKw0KPj4+ICvCoMKgwqAgaTJjX3NldF9hZGFwZGF0YShhZGFwdGVyLCBsaTJjKTsNCj4+ PiArDQo+Pj4gK8KgwqDCoCByZXQgPSBpMmNfYml0X2FkZF9idXMoYWRhcHRlcik7DQo+Pj4g K8KgwqDCoCBpZiAocmV0KSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGtmcmVlKGxpMmMpOw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gRVJSX1BUUihyZXQpOw0KPj4+ICvCoMKgwqAg fQ0KPj4+ICsNCj4+PiArwqDCoMKgIHJldCA9IGRybW1fYWRkX2FjdGlvbl9vcl9yZXNldChk ZGV2LCBsc2RjX2Rlc3Ryb3lfaTJjLCBsaTJjKTsNCj4+PiArwqDCoMKgIGlmIChyZXQpDQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBOVUxMOw0KPj4+ICsNCj4+PiArwqDCoMKgIGRy bV9pbmZvKGRkZXYsICIlcyhzZGE9JXUsIHNjbD0ldSkgY3JlYXRlZCBmb3IgY29ubmVjdG9y LSV1XG4iLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgIGFkYXB0ZXItPm5hbWUsIGxpMmMtPnNk YSwgbGkyYy0+c2NsLCBpbmRleCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuIGxpMmM7 DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfaTJjX2lkKHN0cnVj dCBsc2RjX2RldmljZSAqbGRldiwgaW50IGluZGV4KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBj b25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCA9IGxkZXYtPmRlc2NwOw0KPj4+ICsNCj4+ PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTMksxMDAwKQ0KPj4+ICvCoMKg wqDCoMKgwqDCoCByZXR1cm4gaW5kZXg7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKGRlc2Nw LT5jaGlwID09IENISVBfTFMySzA1MDApDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBp bmRleCArIDI7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuIGluZGV4Ow0KPj4+ICt9DQo+ Pj4gKw0KPj4+ICtzdHJ1Y3QgaTJjX2FkYXB0ZXIgKmxzZGNfZ2V0X2kyY19hZGFwdGVyKHN0 cnVjdCBsc2RjX2RldmljZSAqbGRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBpbnQgaW5kZXgpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIGNvbnN0 IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2NwID0gbGRldi0+ZGVzY3A7DQo+Pj4gK8KgwqDCoCBz dHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSAmbGRldi0+ZGlzcGlwZVtpbmRl eF07DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKGRlc2NwLT5oYXNfYnVpbHRpbl9pMmMpIHsN Cj4+PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzZGNfaTJjICpsaTJjID0gZGlzcGlwZS0+ bGkyYzsNCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChsaTJjKQ0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAmbGkyYy0+YWRhcHRlcjsNCj4+PiArwqDCoMKg IH0NCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gaTJjX2dldF9hZGFwdGVyKGxzZGNfZ2V0 X2kyY19pZChsZGV2LCBpbmRleCkpOw0KPj4+ICt9DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZl cnMvZ3B1L2RybS9sc2RjL2xzZGNfaXJxLmMgDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNk Yy9sc2RjX2lycS5jDQo+Pj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4+PiBpbmRleCAwMDAw MDAwMDAwMDAuLjcxYzg1ZjA5YmI2Zg0KPj4+IC0tLSAvZGV2L251bGwNCj4+PiArKysgYi9k cml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX2lycS5jDQo+Pj4gQEAgLTAsMCArMSw4NiBAQA0K Pj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0KPj4+ICsNCj4+PiAr I2luY2x1ZGUgPGRybS9kcm1fdmJsYW5rLmg+DQo+Pj4gKyNpbmNsdWRlICJsc2RjX2Rydi5o Ig0KPj4+ICsjaW5jbHVkZSAibHNkY19yZWdzLmgiDQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsg KiBGb3IgdGhlIERDIGluIGxzN2EyMDAwLCBjbGVhcmluZyBpbnRlcnJ1cHQgc3RhdHVzIGlz IGFjaGlldmVkIGJ5DQo+Pj4gKyAqIHdyaXRlICIxIiB0byBMU0RDX0lOVF9SRUcsIEZvciB0 aGUgREMgaW4gbHM3YTEwMDAsIGxzMmsxMDAwIGFuZA0KPj4+ICsgKiBsczJrMDUwMCwgY2xl YXJpbmcgaW50ZXJydXB0IHN0YXR1cyBpcyBhY2hpZXZlZCBieSB3cml0ZSAiMCIgdG8NCj4+ PiArICogTFNEQ19JTlRfUkVHLiBUd28gZGlmZmVyZW50IGhhcmR3YXJlIGVuZ2luZWVyIG9m IExvb25nc29uIG1vZGlmeQ0KPj4+ICsgKiBpdCBhcyB0aGVpciB3aWxsLg0KPj4+ICsgKi8N Cj4+PiArDQo+Pj4gKy8qIEZvciB0aGUgREMgaW4gbHM3YTIwMDAgKi8NCj4+PiArc3RhdGlj IGlycXJldHVybl90IGxzZGNfaXJxX2hhbmRsZXIoaW50IGlycSwgdm9pZCAqYXJnKQ0KPj4+ ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGFyZzsNCj4+PiAr wqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4g K8KgwqDCoCB1MzIgdmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIFJlYWQgdGhlIGludGVy cnVwdCBzdGF0dXMgKi8NCj4+PiArwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExT RENfSU5UX1JFRyk7DQo+Pj4gK8KgwqDCoCBpZiAoKHZhbCAmIElOVF9TVEFUVVNfTUFTSykg PT0gMCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fd2FybihkZGV2LCAibm8gaW50ZXJy dXB0IG9jY3Vyc1xuIik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBJUlFfTk9ORTsN Cj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBsZGV2LT5pcnFfc3RhdHVzID0g dmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIHdyaXRlICIxIiB0byBjbGVhciB0aGUgaW50 ZXJydXB0IHN0YXR1cyAqLw0KPj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19J TlRfUkVHLCB2YWwpOw0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBJUlFfV0FLRV9USFJF QUQ7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qIEZvciB0aGUgREMgaW4gbHM3YTEwMDAsIGxz MmsxMDAwIGFuZCBsczJrMDUwMCAqLw0KPj4+ICtzdGF0aWMgaXJxcmV0dXJuX3QgbHNkY19p cnFfaGFuZGxlcl9sZWdhY3koaW50IGlycSwgdm9pZCAqYXJnKQ0KPj4+ICt7DQo+Pj4gK8Kg wqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGFyZzsNCj4+PiArwqDCoMKgIHN0cnVj dCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4gK8KgwqDCoCB1MzIg dmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIFJlYWQgdGhlIGludGVycnVwdCBzdGF0dXMg Ki8NCj4+PiArwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfSU5UX1JFRyk7 DQo+Pj4gK8KgwqDCoCBpZiAoKHZhbCAmIElOVF9TVEFUVVNfTUFTSykgPT0gMCkgew0KPj4+ ICvCoMKgwqDCoMKgwqDCoCBkcm1fd2FybihkZGV2LCAibm8gaW50ZXJydXB0IG9jY3Vyc1xu Iik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBJUlFfTk9ORTsNCj4+PiArwqDCoMKg IH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBsZGV2LT5pcnFfc3RhdHVzID0gdmFsOw0KPj4+ICsN Cj4+PiArwqDCoMKgIC8qIHdyaXRlICIwIiB0byBjbGVhciB0aGUgaW50ZXJydXB0IHN0YXR1 cyAqLw0KPj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19JTlRfUkVHLCB2YWwg JiB+SU5UX1NUQVRVU19NQVNLKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gSVJRX1dB S0VfVEhSRUFEOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtpcnFfaGFuZGxlcl90IGxzZGNfZ2V0 X2lycV9oYW5kbGVyKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldikNCj4+PiArew0KPj4+ICvC oMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsNCj4+ PiArDQo+Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMjAwMCkNCj4+ PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGxzZGNfaXJxX2hhbmRsZXI7DQo+Pj4gKw0KPj4+ ICvCoMKgwqAgcmV0dXJuIGxzZGNfaXJxX2hhbmRsZXJfbGVnYWN5Ow0KPj4+ICt9DQo+Pj4g Kw0KPj4+ICtpcnFyZXR1cm5fdCBsc2RjX2lycV90aHJlYWRfaGFuZGxlcihpbnQgaXJxLCB2 b2lkICphcmcpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2 ID0gYXJnOw0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNk YyhkZGV2KTsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YzsNCj4+PiArDQo+ Pj4gK8KgwqDCoCBpZiAobGRldi0+aXJxX3N0YXR1cyAmIElOVF9DUlRDMF9WU1lOQykgew0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBjcnRjID0gZHJtX2NydGNfZnJvbV9pbmRleChkZGV2LCAw KTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2NydGNfaGFuZGxlX3ZibGFuayhjcnRjKTsN Cj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAobGRldi0+aXJxX3N0YXR1 cyAmIElOVF9DUlRDMV9WU1lOQykgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBjcnRjID0gZHJt X2NydGNfZnJvbV9pbmRleChkZGV2LCAxKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2Ny dGNfaGFuZGxlX3ZibGFuayhjcnRjKTsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8Kg wqDCoCByZXR1cm4gSVJRX0hBTkRMRUQ7DQo+Pj4gK30NCj4+PiBkaWZmIC0tZ2l0IGEvZHJp dmVycy9ncHUvZHJtL2xzZGMvbHNkY19vdXRwdXQuYyANCj4+PiBiL2RyaXZlcnMvZ3B1L2Ry bS9sc2RjL2xzZGNfb3V0cHV0LmMNCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGlu ZGV4IDAwMDAwMDAwMDAwMC4uZDRiYzc2NjZkOWVhDQo+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfb3V0cHV0LmMNCj4+PiBAQCAtMCww ICsxLDQ1MiBAQA0KPj4+ICsvLyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMA0K Pj4+ICsNCj4+PiArI2luY2x1ZGUgPGRybS9kcm1fZWRpZC5oPg0KPj4+ICsjaW5jbHVkZSA8 ZHJtL2RybV9wcm9iZV9oZWxwZXIuaD4NCj4+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRvbWlj X2hlbHBlci5oPg0KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9jb25uZWN0b3IuaD4NCj4+PiAr I2luY2x1ZGUgImxzZGNfZHJ2LmgiDQo+Pj4gKw0KPj4+ICtzdGF0aWMgaW50IGxzZGNfZ2V0 X21vZGVzKHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IpDQo+Pj4gK3sNCj4+PiAr wqDCoMKgIHVuc2lnbmVkIGludCBudW0gPSAwOw0KPj4+ICvCoMKgwqAgc3RydWN0IGVkaWQg KmVkaWQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKGNvbm5lY3Rvci0+ZGRjKSB7DQo+Pj4g K8KgwqDCoMKgwqDCoMKgIGVkaWQgPSBkcm1fZ2V0X2VkaWQoY29ubmVjdG9yLCBjb25uZWN0 b3ItPmRkYyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChlZGlkKSB7DQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqAgZHJtX2Nvbm5lY3Rvcl91cGRhdGVfZWRpZF9wcm9wZXJ0eShj b25uZWN0b3IsIGVkaWQpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIG51bSA9IGRy bV9hZGRfZWRpZF9tb2Rlcyhjb25uZWN0b3IsIGVkaWQpOw0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGtmcmVlKGVkaWQpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gKw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4gbnVtOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsN Cj4+PiArwqDCoMKgIG51bSA9IGRybV9hZGRfbW9kZXNfbm9lZGlkKGNvbm5lY3RvciwgMTky MCwgMTIwMCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX3NldF9wcmVmZXJyZWRfbW9kZShj b25uZWN0b3IsIDEwMjQsIDc2OCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuIG51bTsN Cj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMN Cj4+PiArbHNkY191bmtub3duX2Nvbm5lY3Rvcl9kZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0 b3IgKmNvbm5lY3RvciwgYm9vbCANCj4+PiBmb3JjZSkNCj4+PiArew0KPj4+ICvCoMKgwqAg c3RydWN0IGkyY19hZGFwdGVyICpkZGMgPSBjb25uZWN0b3ItPmRkYzsNCj4+PiArDQo+Pj4g K8KgwqDCoCBpZiAoZGRjKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkcm1fcHJvYmVf ZGRjKGRkYykpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGNvbm5lY3Rv cl9zdGF0dXNfY29ubmVjdGVkOw0KPj4+ICvCoMKgwqAgfSBlbHNlIHsNCj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKGNvbm5lY3Rvci0+Y29ubmVjdG9yX3R5cGUgPT0gRFJNX01PREVfQ09O TkVDVE9SX0RQSSkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29ubmVj dG9yX3N0YXR1c19jb25uZWN0ZWQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAo Y29ubmVjdG9yLT5jb25uZWN0b3JfdHlwZSA9PSBEUk1fTU9ERV9DT05ORUNUT1JfVklSVFVB TCkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29ubmVjdG9yX3N0YXR1 c19jb25uZWN0ZWQ7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJu IGNvbm5lY3Rvcl9zdGF0dXNfdW5rbm93bjsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGlj IGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0dXMNCj4+PiArbHNkY19oZG1pX2Nvbm5lY3Rvcl9k ZXRlY3Qoc3RydWN0IGRybV9jb25uZWN0b3IgKmNvbm5lY3RvciwgYm9vbCBmb3JjZSkNCj4+ PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBlICpwaXBlID0gDQo+ Pj4gY29ubmVjdG9yX3RvX2Rpc3BsYXlfcGlwZShjb25uZWN0b3IpOw0KPj4+ICvCoMKgwqAg c3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhjb25uZWN0b3ItPmRldik7DQo+ Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIHZhbCA9IGxzZGNfcnJl ZzMyKGxkZXYsIExTRENfSERNSV9IUERfU1RBVFVTX1JFRyk7DQo+Pj4gKw0KPj4+ICvCoMKg wqAgaWYgKHBpcGUtPmluZGV4ID09IDApIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHZh bCAmIEhETUkwX0hQRF9GTEFHKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVy biBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+ Pj4gK8KgwqDCoCBpZiAocGlwZS0+aW5kZXggPT0gMSkgew0KPj4+ICvCoMKgwqDCoMKgwqDC oCBpZiAodmFsICYgSERNSTFfSFBEX0ZMQUcpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVkOw0KPj4+ICvCoMKgwqAgfQ0K Pj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3Rl ZDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGVudW0gZHJtX2Nvbm5lY3Rvcl9zdGF0 dXMNCj4+PiArbHNkY19oZG1pX3ZnYV9jb25uZWN0b3JfZGV0ZWN0KHN0cnVjdCBkcm1fY29u bmVjdG9yICpjb25uZWN0b3IsIGJvb2wgDQo+Pj4gZm9yY2UpDQo+Pj4gK3sNCj4+PiArwqDC oMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqcGlwZSA9IA0KPj4+IGNvbm5lY3Rvcl90 b19kaXNwbGF5X3BpcGUoY29ubmVjdG9yKTsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2 aWNlICpkZGV2ID0gY29ubmVjdG9yLT5kZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19k ZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICvCoMKgwqAgc3RydWN0IGkyY19h ZGFwdGVyICpkZGM7DQo+Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+ICsNCj4+PiArwqDCoMKg IHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfSERNSV9IUERfU1RBVFVTX1JFRyk7DQo+ Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKHBpcGUtPmluZGV4ID09IDEpIHsNCj4+PiArwqDCoMKg wqDCoMKgwqAgaWYgKHZhbCAmIEhETUkxX0hQRF9GTEFHKQ0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Nvbm5lY3RlZDsNCj4+PiArDQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiBjb25uZWN0b3Jfc3RhdHVzX2Rpc2Nvbm5lY3Rl ZDsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAocGlwZS0+aW5kZXgg PT0gMCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAodmFsICYgSERNSTBfSFBEX0ZMQUcp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNf Y29ubmVjdGVkOw0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZGRjID0gY29ubmVjdG9y LT5kZGM7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChkZGMpIHsNCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBpZiAoZHJtX3Byb2JlX2RkYyhkZGMpKQ0KPj4+ICvCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIGNvbm5lY3Rvcl9zdGF0dXNfY29ubmVjdGVk Ow0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gY29ubmVjdG9y X3N0YXR1c19kaXNjb25uZWN0ZWQ7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+PiArwqDC oMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gY29ubmVjdG9yX3N0YXR1c191bmtu b3duOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgc3RydWN0IGRybV9lbmNvZGVyICoN Cj4+PiArbHNkY19jb25uZWN0b3JfZ2V0X2Jlc3RfZW5jb2RlcihzdHJ1Y3QgZHJtX2Nvbm5l Y3RvciAqY29ubmVjdG9yLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg c3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0YXRlKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBz dHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKnBpcGUgPSANCj4+PiBjb25uZWN0b3JfdG9fZGlz cGxheV9waXBlKGNvbm5lY3Rvcik7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0dXJuICZwaXBl LT5lbmNvZGVyOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRy bV9jb25uZWN0b3JfaGVscGVyX2Z1bmNzIA0KPj4+IGxzZGNfY29ubmVjdG9yX2hlbHBlcnMg PSB7DQo+Pj4gK8KgwqDCoCAuYXRvbWljX2Jlc3RfZW5jb2RlciA9IGxzZGNfY29ubmVjdG9y X2dldF9iZXN0X2VuY29kZXIsDQo+Pj4gK8KgwqDCoCAuZ2V0X21vZGVzID0gbHNkY19nZXRf bW9kZXMsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IGRybV9j b25uZWN0b3JfZnVuY3MgbHNkY191bmtub3duX2Nvbm5lY3Rvcl9mdW5jcyANCj4+PiA9IHsN Cj4+PiArwqDCoMKgIC5kZXRlY3QgPSBsc2RjX3Vua25vd25fY29ubmVjdG9yX2RldGVjdCwN Cj4+PiArwqDCoMKgIC5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9iZV9zaW5nbGVfY29u bmVjdG9yX21vZGVzLA0KPj4+ICvCoMKgwqAgLmRlc3Ryb3kgPSBkcm1fY29ubmVjdG9yX2Ns ZWFudXAsDQo+Pj4gK8KgwqDCoCAucmVzZXQgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfcmVzZXQsDQo+Pj4gK8KgwqDCoCAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0ZSA9IA0KPj4+ IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3RhdGUsDQo+Pj4gK8Kg wqDCoCAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0 b3JfZGVzdHJveV9zdGF0ZSwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0YXRpYyBjb25zdCBz dHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyANCj4+PiBsc2RjX2hkbWlfdmdhX2Nvbm5lY3Rv cl9mdW5jcyA9IHsNCj4+PiArwqDCoMKgIC5kZXRlY3QgPSBsc2RjX2hkbWlfdmdhX2Nvbm5l Y3Rvcl9kZXRlY3QsDQo+Pj4gK8KgwqDCoCAuZmlsbF9tb2RlcyA9IGRybV9oZWxwZXJfcHJv YmVfc2luZ2xlX2Nvbm5lY3Rvcl9tb2RlcywNCj4+PiArwqDCoMKgIC5kZXN0cm95ID0gZHJt X2Nvbm5lY3Rvcl9jbGVhbnVwLA0KPj4+ICvCoMKgwqAgLnJlc2V0ID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX3Jlc2V0LA0KPj4+ICvCoMKgwqAgLmF0b21pY19kdXBsaWNhdGVf c3RhdGUgPSANCj4+PiBkcm1fYXRvbWljX2hlbHBlcl9jb25uZWN0b3JfZHVwbGljYXRlX3N0 YXRlLA0KPj4+ICvCoMKgwqAgLmF0b21pY19kZXN0cm95X3N0YXRlID0gZHJtX2F0b21pY19o ZWxwZXJfY29ubmVjdG9yX2Rlc3Ryb3lfc3RhdGUsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGRybV9jb25uZWN0b3JfZnVuY3MgbHNkY19oZG1pX2Nvbm5l Y3Rvcl9mdW5jcyA9IHsNCj4+PiArwqDCoMKgIC5kZXRlY3QgPSBsc2RjX2hkbWlfY29ubmVj dG9yX2RldGVjdCwNCj4+PiArwqDCoMKgIC5maWxsX21vZGVzID0gZHJtX2hlbHBlcl9wcm9i ZV9zaW5nbGVfY29ubmVjdG9yX21vZGVzLA0KPj4+ICvCoMKgwqAgLmRlc3Ryb3kgPSBkcm1f Y29ubmVjdG9yX2NsZWFudXAsDQo+Pj4gK8KgwqDCoCAucmVzZXQgPSBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfcmVzZXQsDQo+Pj4gK8KgwqDCoCAuYXRvbWljX2R1cGxpY2F0ZV9z dGF0ZSA9IA0KPj4+IGRybV9hdG9taWNfaGVscGVyX2Nvbm5lY3Rvcl9kdXBsaWNhdGVfc3Rh dGUsDQo+Pj4gK8KgwqDCoCAuYXRvbWljX2Rlc3Ryb3lfc3RhdGUgPSBkcm1fYXRvbWljX2hl bHBlcl9jb25uZWN0b3JfZGVzdHJveV9zdGF0ZSwNCj4+PiArfTsNCj4+PiArDQo+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2Nvbm5lY3Rvcl9mdW5jcyAqDQo+Pj4gK2xzZGNfZ2V0 X2Nvbm5lY3Rvcl9mdW5jKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwgdW5zaWduZWQgaW50 IGluZGV4KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpk ZXNjcCA9IGxkZXYtPmRlc2NwOw0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hp cCA9PSBDSElQX0xTN0EyMDAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9 PSAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiAmbHNkY19oZG1pX3Zn YV9jb25uZWN0b3JfZnVuY3M7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoaW5k ZXggPT0gMSkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gJmxzZGNfaGRt aV9jb25uZWN0b3JfZnVuY3M7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAg cmV0dXJuICZsc2RjX3Vua25vd25fY29ubmVjdG9yX2Z1bmNzOw0KPj4+ICt9DQo+Pj4gKw0K Pj4+ICsvKg0KPj4+ICsgKiB3ZSBwcm92aWRlIGEgZGVmYXVsdCBzdXBwb3J0IGJlZm9yZSBE VC9WQklPUyBpcyBzdXBwb3J0ZWQNCj4+PiArICovDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19n ZXRfZW5jb2Rlcl90eXBlKHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiwNCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4KQ0KPj4+ICt7 DQo+Pj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3QgbHNkY19kZXNjICpkZXNjcCA9IGxkZXYtPmRl c2NwOw0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0Ey MDAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBEUk1fTU9ERV9FTkNPREVSX0RBQzsNCj4+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDEpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgcmV0dXJuIERSTV9NT0RFX0VOQ09ERVJfVE1EUzsNCj4+PiArwqDCoMKgIH0NCj4+ PiArDQo+Pj4gK8KgwqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMTAwMCB8fCBk ZXNjcC0+Y2hpcCA9PSBDSElQX0xTMksxMDAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlm IChpbmRleCA9PSAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBEUk1f TU9ERV9FTkNPREVSX0RQSTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDEp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0VOQ09ERVJf RFBJOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hp cCA9PSBDSElQX0xTMkswNTAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9 PSAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBEUk1fTU9ERV9FTkNP REVSX0RQSTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDEpDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0VOQ09ERVJfREFDOw0KPj4+ ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBEUk1fTU9ERV9FTkNPREVS X05PTkU7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIHByb3ZpZGUgYSBkZWZh dWx0IGJlZm9yZSBEVC9WQklPUyBzdXBwb3J0IGlzIHVwc3RyZWFtZWQNCj4+PiArICovDQo+ Pj4gK3N0YXRpYyBpbnQgbHNkY19nZXRfY29ubmVjdG9yX3R5cGUoc3RydWN0IGxzZGNfZGV2 aWNlICpsZGV2LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg dW5zaWduZWQgaW50IGluZGV4KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBjb25zdCBzdHJ1Y3Qg bHNkY19kZXNjICpkZXNjcCA9IGxkZXYtPmRlc2NwOw0KPj4+ICsNCj4+PiArwqDCoMKgIGlm IChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0EyMDAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IGlmIChpbmRleCA9PSAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHJldHVybiBE Uk1fTU9ERV9DT05ORUNUT1JfVkdBOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoaW5kZXgg PT0gMSkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCByZXR1cm4gRFJNX01PREVfQ09O TkVDVE9SX0hETUlBOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChk ZXNjcC0+Y2hpcCA9PSBDSElQX0xTN0ExMDAwIHx8IGRlc2NwLT5jaGlwID09IENISVBfTFMy SzEwMDApIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDApDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIERSTV9NT0RFX0NPTk5FQ1RPUl9EUEk7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAxKQ0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiBEUk1fTU9ERV9DT05ORUNUT1JfRFBJOw0KPj4+ICvCoMKgwqAg fQ0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTMkswNTAw KSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHJldHVybiBEUk1fTU9ERV9DT05ORUNUT1JfRFBJOw0KPj4+ICvC oMKgwqDCoMKgwqDCoCBpZiAoaW5kZXggPT0gMSkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCByZXR1cm4gRFJNX01PREVfQ09OTkVDVE9SX1ZHQTsNCj4+PiArwqDCoMKgIH0NCj4+ PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gRFJNX01PREVfQ09OTkVDVE9SX1Vua25vd247DQo+ Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfaGRtaV9kaXNhYmxlKHN0cnVj dCBkcm1fZW5jb2RlciAqZW5jb2RlcikNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGxz ZGNfZGlzcGxheV9waXBlICpkaXNwaXBlID0gDQo+Pj4gZW5jb2Rlcl90b19kaXNwbGF5X3Bp cGUoZW5jb2Rlcik7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGVu Y29kZXItPmRldjsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRv X2xzZGMoZGRldik7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXggPSBkaXNwaXBl LT5pbmRleDsNCj4+PiArwqDCoMKgIHUzMiB2YWw7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYg KGluZGV4ID09IDApDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxk ZXYsIExTRENfSERNSTBfUEhZX0NUUkxfUkVHKTsNCj4+PiArwqDCoMKgIGVsc2UgaWYgKGlu ZGV4ID09IDEpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYs IExTRENfSERNSTFfUEhZX0NUUkxfUkVHKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCB2YWwgJj0g fkhETUlfUEhZX0VOOw0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+ ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkwX1BIWV9DVFJM X1JFRywgdmFsKTsNCj4+PiArwqDCoMKgIGVsc2UgaWYgKGluZGV4ID09IDEpDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfSERNSTFfUEhZX0NUUkxfUkVH LCB2YWwpOw0KPj4+ICsNCj4+PiArwqDCoMKgIGRybV9kYmcoZGRldiwgIkhETUktJXUgZGlz YWJsZWRcbiIsIGluZGV4KTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIHZvaWQgbHNk Y19oZG1pX2VuYWJsZShzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIpDQo+Pj4gK3sNCj4+ PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gZW5jb2Rlci0+ZGV2Ow0KPj4+ ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhkZGV2KTsNCj4+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2Rpc3BsYXlfcGlwZSAqZGlzcGlwZSA9IA0KPj4+IGVu Y29kZXJfdG9fZGlzcGxheV9waXBlKGVuY29kZXIpOw0KPj4+ICvCoMKgwqAgdW5zaWduZWQg aW50IGluZGV4ID0gZGlzcGlwZS0+aW5kZXg7DQo+Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+ ICsNCj4+PiArwqDCoMKgIC8qIHdlIGFyZSB1c2luZyBzb2Z0d2FyZSBncGlvIGVtdWxhdGVk IGkyYyAqLw0KPj4+ICvCoMKgwqAgdmFsID0gSERNSV9DVExfUEVSSU9EX01PREUgfCBIRE1J X0FVRElPX0VOIHwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfUEFDS0VUX0VOIHwg SERNSV9JTlRFUkZBQ0VfRU47DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKGluZGV4ID09IDAp IHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgLyogRW5hYmxlIEhETUktMCAqLw0KPj4+ICvCoMKg wqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkwX0NUUkxfUkVHLCB2YWwp Ow0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19I RE1JMF9aT05FX1JFRywgMHgwMDQwMDA0MCk7DQo+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKGlu ZGV4ID09IDEpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgLyogRW5hYmxlIEhETUktMSAqLw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkxX0NUUkxf UkVHLCB2YWwpOw0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRl diwgTFNEQ19IRE1JMV9aT05FX1JFRywgMHgwMDQwMDA0MCk7DQo+Pj4gK8KgwqDCoCB9DQo+ Pj4gKw0KPj4+ICvCoMKgwqAgdmFsID0gSERNSV9QSFlfVEVSTV9TVEFUVVMgfA0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqAgSERNSV9QSFlfVEVSTV9ERVRfRU4gfA0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqAgSERNSV9QSFlfVEVSTV9IX0VOIHwNCj4+PiArwqDCoMKgwqDCoMKgwqDC oMKgIEhETUlfUEhZX1RFUk1fTF9FTiB8DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBIRE1J X1BIWV9SRVNFVF9OIHwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgIEhETUlfUEhZX0VOOw0K Pj4+ICsNCj4+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDC oCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkwX1BIWV9DVFJMX1JFRywgdmFsKTsNCj4+ PiArwqDCoMKgIGVsc2UgaWYgKGluZGV4ID09IDEpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxz ZGNfd3JlZzMyKGxkZXYsIExTRENfSERNSTFfUEhZX0NUUkxfUkVHLCB2YWwpOw0KPj4+ICsN Cj4+PiArwqDCoMKgIGRybV9kYmcoZGRldiwgIkhETUktJXUgZW5hYmxlZFxuIiwgaW5kZXgp Ow0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKsKgIEZvdXQgPSBNICogRmluDQo+ Pj4gKyAqDQo+Pj4gKyAqwqAgTSA9ICg0ICogTEYpIC8gKElERiAqIE9ERikNCj4+PiArICoN Cj4+PiArICrCoCBMb29uZ3NvbiBIRE1JIHJlcXVpcmUgTSA9IDEwDQo+Pj4gKyAqLw0KPj4+ ICtzdGF0aWMgdm9pZCBsc2RjX2hkbWlfcGh5X3BsbF9jb25maWcoc3RydWN0IGxzZGNfZGV2 aWNlICpsZGV2LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGludCBpbmRleCwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBpbnQgY2xvY2spDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2 aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+Pj4gK8KgwqDCoCBpbnQgY291bnQgPSAwOw0K Pj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBkaXNhYmxlIHBo eSBwbGwgKi8NCj4+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKQ0KPj4+ICvCoMKgwqDCoMKg wqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkwX1BIWV9QTExfUkVHLCAweDApOw0K Pj4+ICvCoMKgwqAgZWxzZSBpZiAoaW5kZXggPT0gMSkNCj4+PiArwqDCoMKgwqDCoMKgwqAg bHNkY193cmVnMzIobGRldiwgTFNEQ19IRE1JMV9QSFlfUExMX1JFRywgMHgwKTsNCj4+PiAr DQo+Pj4gK8KgwqDCoCAvKg0KPj4+ICvCoMKgwqDCoCAqIDEwID0gKDQgKiA0MCkgLyAoOCAq IDIpDQo+Pj4gK8KgwqDCoMKgICovDQo+Pj4gK8KgwqDCoCB2YWwgPSAoOCA8PCBIRE1JX1BM TF9JREZfU0hJRlQpIHwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgICg0MCA8PCBIRE1JX1BM TF9MRl9TSElGVCkgfA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKDEgPDwgSERNSV9QTExf T0RGX1NISUZUKSB8DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoCBIRE1JX1BMTF9FTkFCTEU7 DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX2RiZyhkZGV2LCAiSERNSS0ldSBjbG9jazogJWRc biIsIGluZGV4LCBjbG9jayk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKGluZGV4ID09IDAp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfSERNSTBfUEhZ X1BMTF9SRUcsIHZhbCk7DQo+Pj4gK8KgwqDCoCBlbHNlIGlmIChpbmRleCA9PSAxKQ0KPj4+ ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hETUkxX1BIWV9QTExf UkVHLCB2YWwpOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIHdhaXQgaGRtaSBwaHkgcGxsIGxv Y2sgKi8NCj4+PiArwqDCoMKgIGRvIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4 ID09IDApDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsID0gbHNkY19ycmVnMzIo bGRldiwgTFNEQ19IRE1JMF9QSFlfUExMX1JFRyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGVs c2UgaWYgKGluZGV4ID09IDEpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdmFsID0g bHNkY19ycmVnMzIobGRldiwgTFNEQ19IRE1JMV9QSFlfUExMX1JFRyk7DQo+Pj4gKw0KPj4+ ICvCoMKgwqDCoMKgwqDCoCArK2NvdW50Ow0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAg aWYgKHZhbCAmIEhETUlfUExMX0xPQ0tFRCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIGRybV9kYmcoZGRldiwgIlNldHRpbmcgSERNSS0ldSBQTEwgc3VjY2Vzcyh0YWtlICVk IA0KPj4+IGN5Y2xlcylcbiIsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBpbmRleCwgY291bnQpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGJyZWFrOw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gK8KgwqDCoCB9IHdoaWxlIChjb3VudCA8IDEw MDApOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBsc2RjX2hkbWlfYXRvbWlj X21vZGVfc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAqZW5jb2RlciwNCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fY3J0Y19zdGF0 ZSAqY3J0Y19zdGF0ZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHN0cnVjdCBkcm1fY29ubmVjdG9yX3N0YXRlICpjb25uX3N0YXRlKQ0KPj4+ ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IGVuY29kZXItPmRl djsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRl dik7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSAN Cj4+PiBlbmNvZGVyX3RvX2Rpc3BsYXlfcGlwZShlbmNvZGVyKTsNCj4+PiArwqDCoMKgIHVu c2lnbmVkIGludCBpbmRleCA9IGRpc3BpcGUtPmluZGV4Ow0KPj4+ICvCoMKgwqAgc3RydWN0 IGRybV9kaXNwbGF5X21vZGUgKm1vZGUgPSAmY3J0Y19zdGF0ZS0+bW9kZTsNCj4+PiArDQo+ Pj4gK8KgwqDCoCBsc2RjX2hkbWlfcGh5X3BsbF9jb25maWcobGRldiwgaW5kZXgsIG1vZGUt PmNsb2NrKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICJIRE1JLSV1IG1v ZGVzZXRcbiIsIGluZGV4KTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGNvbnN0IHN0 cnVjdCBkcm1fZW5jb2Rlcl9oZWxwZXJfZnVuY3MgbHNkY19oZG1pX2hlbHBlcl9mdW5jcyA9 IHsNCj4+PiArwqDCoMKgIC5kaXNhYmxlID0gbHNkY19oZG1pX2Rpc2FibGUsDQo+Pj4gK8Kg wqDCoCAuZW5hYmxlID0gbHNkY19oZG1pX2VuYWJsZSwNCj4+PiArwqDCoMKgIC5hdG9taWNf bW9kZV9zZXQgPSBsc2RjX2hkbWlfYXRvbWljX21vZGVfc2V0LA0KPj4+ICt9Ow0KPj4+ICsN Cj4+PiArc3RhdGljIHZvaWQgbHNkY19oZG1pX3Jlc2V0KHN0cnVjdCBkcm1fZW5jb2RlciAq ZW5jb2RlcikNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYg PSBlbmNvZGVyLT5kZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYg PSB0b19sc2RjKGRkZXYpOw0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGlzcGxheV9waXBl ICpkaXNwaXBlID0gDQo+Pj4gZW5jb2Rlcl90b19kaXNwbGF5X3BpcGUoZW5jb2Rlcik7DQo+ Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgaW5kZXggPSBkaXNwaXBlLT5pbmRleDsNCj4+PiAr wqDCoMKgIHUzMiB2YWwgPSBIRE1JX0NUTF9QRVJJT0RfTU9ERSB8IEhETUlfQVVESU9fRU4g fA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgSERNSV9QQUNLRVRfRU4gfCBIRE1JX0lOVEVS RkFDRV9FTjsNCj4+PiArDQo+Pj4gK8KgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0hE TUkwX0NUUkxfUkVHLCB2YWwpOw0KPj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNE Q19IRE1JMV9DVFJMX1JFRywgdmFsKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fZGJnKGRk ZXYsICJIRE1JLSV1IFJlc2V0XG4iLCBpbmRleCk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0 YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX2VuY29kZXJfZnVuY3MgbHNkY19lbmNvZGVyX2Z1bmNz ID0gew0KPj4+ICvCoMKgwqAgLnJlc2V0ID0gbHNkY19oZG1pX3Jlc2V0LA0KPj4+ICvCoMKg wqAgLmRlc3Ryb3kgPSBkcm1fZW5jb2Rlcl9jbGVhbnVwLA0KPj4+ICt9Ow0KPj4+ICsNCj4+ PiAraW50IGxzZGNfY3JlYXRlX291dHB1dChzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYsIHVu c2lnbmVkIGludCBpbmRleCkNCj4+PiArew0KPj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxz ZGNfZGVzYyAqZGVzY3AgPSBsZGV2LT5kZXNjcDsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1f ZGV2aWNlICpkZGV2ID0gJmxkZXYtPmJhc2U7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19k aXNwbGF5X3BpcGUgKmRpc3BpcGUgPSAmbGRldi0+ZGlzcGlwZVtpbmRleF07DQo+Pj4gK8Kg wqDCoCBzdHJ1Y3QgZHJtX2VuY29kZXIgKmVuY29kZXIgPSAmZGlzcGlwZS0+ZW5jb2RlcjsN Cj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fY29ubmVjdG9yICpjb25uZWN0b3IgPSAmZGlzcGlw ZS0+Y29ubmVjdG9yOw0KPj4+ICvCoMKgwqAgc3RydWN0IGkyY19hZGFwdGVyICpkZGMgPSBO VUxMOw0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfaTJjICpsaTJjOw0KPj4+ICvCoMKgwqAg aW50IHJldDsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXQgPSBkcm1fZW5jb2Rlcl9pbml0KGRk ZXYsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBlbmNvZGVy LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgJmxzZGNfZW5j b2Rlcl9mdW5jcywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg IGxzZGNfZ2V0X2VuY29kZXJfdHlwZShsZGV2LCBpbmRleCksDQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAiZW5jb2Rlci0ldSIsDQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpbmRleCk7DQo+Pj4gK8KgwqDCoCBpZiAo cmV0KSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIoZGRldiwgIkZhaWxlZCB0byBp bml0IGVuY29kZXI6ICVkXG4iLCByZXQpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm4g cmV0Ow0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIGVuY29kZXItPnBvc3Np YmxlX2NydGNzID0gQklUKGluZGV4KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoZGVzY3At PmNoaXAgPT0gQ0hJUF9MUzdBMjAwMCkNCj4+PiArwqDCoMKgwqDCoMKgwqAgZHJtX2VuY29k ZXJfaGVscGVyX2FkZChlbmNvZGVyLCAmbHNkY19oZG1pX2hlbHBlcl9mdW5jcyk7DQo+Pj4g Kw0KPj4+ICvCoMKgwqAgaWYgKGRlc2NwLT5oYXNfYnVpbHRpbl9pMmMpIHsNCj4+PiArwqDC oMKgwqDCoMKgwqAgbGkyYyA9IGxzZGNfY3JlYXRlX2kyY19jaGFuKGRkZXYsIGxkZXYtPnJl Z19iYXNlLCBpbmRleCk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChJU19FUlIobGkyYykp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcmV0dXJuIFBUUl9FUlIobGkyYyk7DQo+ Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkaXNwaXBlLT5saTJjID0gbGkyYzsNCj4+PiAr DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRkYyA9ICZsaTJjLT5hZGFwdGVyOw0KPj4+ICvCoMKg wqAgfSBlbHNlIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZGRjID0gbHNkY19nZXRfaTJjX2Fk YXB0ZXIobGRldiwgaW5kZXgpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAoSVNfRVJSKGRk YykpIHsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKGRkZXYsICJFcnJv ciBnZXQgZGRjIGZvciBvdXRwdXQtJXVcbiIsIGluZGV4KTsNCj4+PiArwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCByZXR1cm4gUFRSX0VSUihkZGMpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB9 DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0ID0gZHJtX2Nvbm5lY3Rv cl9pbml0X3dpdGhfZGRjKGRkZXYsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBjb25uZWN0b3IsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBsc2RjX2dldF9jb25uZWN0b3JfZnVuYyhsZGV2LCBp bmRleCksDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBsc2RjX2dldF9jb25uZWN0b3JfdHlwZShsZGV2LCBpbmRleCksDQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkZGMpOw0KPj4+ICvCoMKgwqAg aWYgKHJldCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKGRkZXYsICJJbml0IGNv bm5lY3Rvci0lZCBmYWlsZWRcbiIsIGluZGV4KTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0 dXJuIHJldDsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fY29ubmVj dG9yX2hlbHBlcl9hZGQoY29ubmVjdG9yLCAmbHNkY19jb25uZWN0b3JfaGVscGVycyk7DQo+ Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX2Nvbm5lY3Rvcl9hdHRhY2hfZW5jb2Rlcihjb25uZWN0 b3IsIGVuY29kZXIpOw0KPj4+ICsNCj4+PiArwqDCoMKgIGNvbm5lY3Rvci0+cG9sbGVkID0g RFJNX0NPTk5FQ1RPUl9QT0xMX0NPTk5FQ1QgfA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgRFJNX0NPTk5FQ1RPUl9QT0xMX0RJU0NPTk5FQ1Q7DQo+Pj4gKw0KPj4+ ICvCoMKgwqAgY29ubmVjdG9yLT5pbnRlcmxhY2VfYWxsb3dlZCA9IDA7DQo+Pj4gK8KgwqDC oCBjb25uZWN0b3ItPmRvdWJsZXNjYW5fYWxsb3dlZCA9IDA7DQo+Pj4gKw0KPj4+ICvCoMKg wqAgbGRldi0+bnVtX291dHB1dCsrOw0KPj4+ICsNCj4+PiArwqDCoMKgIGRybV9pbmZvKGRk ZXYsICJvdXRwdXQtJXUgaW5pdGlhbGl6ZWRcbiIsIGluZGV4KTsNCj4+PiArDQo+Pj4gK8Kg wqDCoCByZXR1cm4gMDsNCj4+PiArfQ0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9k cm0vbHNkYy9sc2RjX3BsYW5lLmMgDQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2Rj X3BsYW5lLmMNCj4+PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAw MDAwMC4uMGY3NzljOTdkNTNiDQo+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ICsrKyBiL2RyaXZl cnMvZ3B1L2RybS9sc2RjL2xzZGNfcGxhbmUuYw0KPj4+IEBAIC0wLDAgKzEsNDQzIEBADQo+ Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wDQo+Pj4gKw0KPj4+ICsj aW5jbHVkZSA8ZHJtL2RybV9hdG9taWMuaD4NCj4+PiArI2luY2x1ZGUgPGRybS9kcm1fYXRv bWljX2hlbHBlci5oPg0KPj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9mcmFtZWJ1ZmZlci5oPg0K Pj4+ICsjaW5jbHVkZSA8ZHJtL2RybV9wbGFuZV9oZWxwZXIuaD4NCj4+PiArI2luY2x1ZGUg PGRybS9kcm1fZ2VtX3ZyYW1faGVscGVyLmg+DQo+Pj4gKyNpbmNsdWRlICJsc2RjX2Rydi5o Ig0KPj4+ICsjaW5jbHVkZSAibHNkY19yZWdzLmgiDQo+Pj4gKyNpbmNsdWRlICJsc2RjX3Bs bC5oIg0KPj4+ICsNCj4+PiArc3RhdGljIGNvbnN0IHUzMiBsc2RjX3ByaW1hcnlfZm9ybWF0 c1tdID0gew0KPj4+ICvCoMKgwqAgRFJNX0ZPUk1BVF9YUkdCODg4OCwNCj4+PiArwqDCoMKg IERSTV9GT1JNQVRfQVJHQjg4ODgsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29u c3QgdTMyIGxzZGNfY3Vyc29yX2Zvcm1hdHNbXSA9IHsNCj4+PiArwqDCoMKgIERSTV9GT1JN QVRfQVJHQjg4ODgsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29uc3QgdTY0IGxz ZGNfZmJfZm9ybWF0X21vZGlmaWVyc1tdID0gew0KPj4+ICvCoMKgwqAgRFJNX0ZPUk1BVF9N T0RfTElORUFSLA0KPj4+ICvCoMKgwqAgRFJNX0ZPUk1BVF9NT0RfSU5WQUxJRA0KPj4+ICt9 Ow0KPj4+ICsNCj4+PiArc3RhdGljIHZvaWQgbHNkY191cGRhdGVfZmJfZm9ybWF0KHN0cnVj dCBsc2RjX2RldmljZSAqbGRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgY29uc3Qgc3RydWN0IGRybV9mb3JtYXRfaW5mbyAqZm10X2lu Zm8pDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCA9IGRybV9jcnRj X2luZGV4KGNydGMpOw0KPj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+PiArwqDCoMKgIHUzMiBm bXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgc3dpdGNoIChmbXRfaW5mby0+Zm9ybWF0KSB7DQo+ Pj4gK8KgwqDCoCBjYXNlIERSTV9GT1JNQVRfWFJHQjg4ODg6DQo+Pj4gK8KgwqDCoMKgwqDC oMKgIGZtdCA9IExTRENfUEZfWFJHQjg4ODg7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFr Ow0KPj4+ICvCoMKgwqAgY2FzZSBEUk1fRk9STUFUX0FSR0I4ODg4Og0KPj4+ICvCoMKgwqDC oMKgwqDCoCBmbXQgPSBMU0RDX1BGX1hSR0I4ODg4Ow0KPj4+ICvCoMKgwqDCoMKgwqDCoCBi cmVhazsNCj4+PiArwqDCoMKgIGRlZmF1bHQ6DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGZtdCA9 IExTRENfUEZfWFJHQjg4ODg7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+ICvC oMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChpbmRleCA9PSAwKSB7DQo+Pj4gK8Kg wqDCoMKgwqDCoMKgIHZhbCA9IGxzZGNfcnJlZzMyKGxkZXYsIExTRENfQ1JUQzBfQ0ZHX1JF Ryk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9ICh2YWwgJiB+Q0ZHX1BJWF9GTVRfTUFT SykgfCBmbXQ7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENf Q1JUQzBfQ0ZHX1JFRywgdmFsKTsNCj4+PiArwqDCoMKgIH0gZWxzZSBpZiAoaW5kZXggPT0g MSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgPSBsc2RjX3JyZWczMihsZGV2LCBMU0RD X0NSVEMxX0NGR19SRUcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgPSAodmFsICYgfkNG R19QSVhfRk1UX01BU0spIHwgZm10Ow0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWcz MihsZGV2LCBMU0RDX0NSVEMxX0NGR19SRUcsIHZhbCk7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4g K30NCj4+PiArDQo+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfdXBkYXRlX2ZiX3N0YXJ0X2FkZHIo c3RydWN0IGxzZGNfZGV2aWNlICpsZGV2LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9jcnRjICpjcnRjLA0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdTY0IHBhZGRyKQ0KPj4+ ICt7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9ICZsZGV2LT5iYXNl Ow0KPj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGluZGV4ID0gZHJtX2NydGNfaW5kZXgoY3J0 Yyk7DQo+Pj4gK8KgwqDCoCB1MzIgbG9fYWRkcl9yZWc7DQo+Pj4gK8KgwqDCoCB1MzIgaGlf YWRkcl9yZWc7DQo+Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8q DQo+Pj4gK8KgwqDCoMKgICogRmluZCB3aGljaCBmcmFtZWJ1ZmZlciBhZGRyZXNzIHJlZ2lz dGVyIHNob3VsZCB1cGRhdGUuDQo+Pj4gK8KgwqDCoMKgICogaWYgRkJfQUREUjBfUkVHIGlz IGluIHVzaW5nLCB3ZSB3cml0ZSB0aGUgYWRkcmVzcyB0byANCj4+PiBGQl9BRERSMF9SRUcs DQo+Pj4gK8KgwqDCoMKgICogaWYgRkJfQUREUjFfUkVHIGlzIGluIHVzaW5nLCB3ZSB3cml0 ZSB0aGUgYWRkcmVzcyB0byANCj4+PiBGQl9BRERSMV9SRUcNCj4+PiArwqDCoMKgwqAgKiBm b3IgZWFjaCBDUlRDLCB0aGUgc3dpdGNoIHVzaW5nIG9uZSBmYiByZWdpc3RlciB0byBhbm90 aGVyIGlzDQo+Pj4gK8KgwqDCoMKgICogdHJpZ2dlciBieSB0cmlnZ2VyZWQgYnkgc2V0IENG R19QQUdFX0ZMSVAgYml0IG9mIA0KPj4+IExTRENfQ1JUQ3hfQ0ZHX1JFRw0KPj4+ICvCoMKg wqDCoCAqLw0KPj4+ICvCoMKgwqAgaWYgKGluZGV4ID09IDApIHsNCj4+PiArwqDCoMKgwqDC oMKgwqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRDMF9DRkdfUkVHKTsNCj4+ PiArwqDCoMKgwqDCoMKgwqAgaWYgKHZhbCAmIENGR19GQl9JTl9VU0lORykgew0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvX2FkZHJfcmVnID0gTFNEQ19DUlRDMF9GQjFfTE9f QUREUl9SRUc7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlfYWRkcl9yZWcgPSBM U0RDX0NSVEMwX0ZCMV9ISV9BRERSX1JFRzsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBkcm1fZGJnKGRkZXYsICJDdXJyZW50bHksIEZCMSBpcyBpbiB1c2luZyBieSBDUlRDLTBc biIpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugew0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIGxvX2FkZHJfcmVnID0gTFNEQ19DUlRDMF9GQjBfTE9fQUREUl9SRUc7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlfYWRkcl9yZWcgPSBMU0RDX0NSVEMwX0ZC MF9ISV9BRERSX1JFRzsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBkcm1fZGJnKGRk ZXYsICJDdXJyZW50bHksIEZCMCBpcyBpbiB1c2luZyBieSBDUlRDLTBcbiIpOw0KPj4+ICvC oMKgwqDCoMKgwqDCoCB9DQo+Pj4gK8KgwqDCoCB9IGVsc2UgaWYgKGluZGV4ID09IDEpIHsN Cj4+PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gbHNkY19ycmVnMzIobGRldiwgTFNEQ19DUlRD MV9DRkdfUkVHKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgaWYgKHZhbCAmIENGR19GQl9JTl9V U0lORykgew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvX2FkZHJfcmVnID0gTFNE Q19DUlRDMV9GQjFfTE9fQUREUl9SRUc7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAg aGlfYWRkcl9yZWcgPSBMU0RDX0NSVEMxX0ZCMV9ISV9BRERSX1JFRzsNCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBkcm1fZGJnKGRkZXYsICJDdXJyZW50bHksIEZCMSBpcyBpbiB1 c2luZyBieSBDUlRDLTFcbiIpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB9IGVsc2Ugew0KPj4+ ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxvX2FkZHJfcmVnID0gTFNEQ19DUlRDMV9GQjBf TE9fQUREUl9SRUc7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgaGlfYWRkcl9yZWcg PSBMU0RDX0NSVEMxX0ZCMF9ISV9BRERSX1JFRzsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBkcm1fZGJnKGRkZXYsICJDdXJyZW50bHksIEZCMCBpcyBpbiB1c2luZyBieSBDUlRD LTFcbiIpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB9DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0K Pj4+ICvCoMKgwqAgLyogNDAtYml0IHdpZHRoIHBoeXNpY2FsIGFkZHJlc3MgYnVzICovDQo+ Pj4gK8KgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBsb19hZGRyX3JlZywgcGFkZHIpOw0KPj4+ ICvCoMKgwqAgbHNkY193cmVnMzIobGRldiwgaGlfYWRkcl9yZWcsIChwYWRkciA+PiAzMikg JiAweEZGKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fZGJnKGRkZXYsICJDUlRDLSV1IHNj YW50b3V0IGZyb20gMHglbGx4XG4iLCBpbmRleCwgcGFkZHIpOw0KPj4+ICt9DQo+Pj4gKw0K Pj4+ICtzdGF0aWMgdW5zaWduZWQgaW50IGxzZGNfZ2V0X2ZiX29mZnNldChzdHJ1Y3QgZHJt X2ZyYW1lYnVmZmVyICpmYiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZV9zdGF0ZSAqc3RhdGUsDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGlu dCBwbGFuZSkNCj4+PiArew0KPj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IG9mZnNldCA9IGZi LT5vZmZzZXRzW3BsYW5lXTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBvZmZzZXQgKz0gZmItPmZv cm1hdC0+Y3BwW3BsYW5lXSAqIChzdGF0ZS0+c3JjX3ggPj4gMTYpOw0KPj4+ICvCoMKgwqAg b2Zmc2V0ICs9IGZiLT5waXRjaGVzW3BsYW5lXSAqIChzdGF0ZS0+c3JjX3kgPj4gMTYpOw0K Pj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBvZmZzZXQ7DQo+Pj4gK30NCj4+PiArDQo+Pj4g K3N0YXRpYyBzNjQgbHNkY19nZXRfdnJhbV9ib19vZmZzZXQoc3RydWN0IGRybV9mcmFtZWJ1 ZmZlciAqZmIpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZ2VtX3ZyYW1fb2Jq ZWN0ICpnYm87DQo+Pj4gK8KgwqDCoCBzNjQgZ3B1X2FkZHI7DQo+Pj4gKw0KPj4+ICvCoMKg wqAgZ2JvID0gZHJtX2dlbV92cmFtX29mX2dlbShmYi0+b2JqWzBdKTsNCj4+PiArwqDCoMKg IGdwdV9hZGRyID0gZHJtX2dlbV92cmFtX29mZnNldChnYm8pOw0KPj4+ICsNCj4+PiArwqDC oMKgIHJldHVybiBncHVfYWRkcjsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIGludCBs c2RjX3ByaW1hcnlfcGxhbmVfYXRvbWljX2NoZWNrKHN0cnVjdCBkcm1fcGxhbmUgKnBsYW5l LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBz dHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0 cnVjdCBkcm1fcGxhbmVfc3RhdGUgKnBsYW5lX3N0YXRlID0gDQo+Pj4gZHJtX2F0b21pY19n ZXRfbmV3X3BsYW5lX3N0YXRlKHN0YXRlLCBwbGFuZSk7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2NydGMgKmNydGMgPSBwbGFuZV9zdGF0ZS0+Y3J0YzsNCj4+PiArwqDCoMKgIHN0cnVj dCBkcm1fY3J0Y19zdGF0ZSAqY3J0Y19zdGF0ZSA9IA0KPj4+IGRybV9hdG9taWNfZ2V0X25l d19jcnRjX3N0YXRlKHN0YXRlLCBjcnRjKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoIWNy dGMpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+ICsNCj4+PiArwqDCoMKg IHJldHVybiBkcm1fYXRvbWljX2hlbHBlcl9jaGVja19wbGFuZV9zdGF0ZShwbGFuZV9zdGF0 ZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBjcnRjX3N0YXRlLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPj4+ICvC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIERS TV9QTEFORV9OT19TQ0FMSU5HLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZhbHNlLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHRydWUpOw0KPj4+ICt9DQo+ Pj4gKw0KPj4+ICtzdGF0aWMgdm9pZCBsc2RjX3VwZGF0ZV9mYl9zdHJpZGUoc3RydWN0IGxz ZGNfZGV2aWNlICpsZGV2LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBkcm1fY3J0YyAqY3J0YywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCB1bnNpZ25lZCBpbnQgc3RyaWRlKQ0KPj4+ICt7DQo+Pj4gK8KgwqDC oCB1bnNpZ25lZCBpbnQgaW5kZXggPSBkcm1fY3J0Y19pbmRleChjcnRjKTsNCj4+PiArDQo+ Pj4gK8KgwqDCoCBpZiAoaW5kZXggPT0gMCkNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193 cmVnMzIobGRldiwgTFNEQ19DUlRDMF9TVFJJREVfUkVHLCBzdHJpZGUpOw0KPj4+ICvCoMKg wqAgZWxzZSBpZiAoaW5kZXggPT0gMSkNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVn MzIobGRldiwgTFNEQ19DUlRDMV9TVFJJREVfUkVHLCBzdHJpZGUpOw0KPj4+ICsNCj4+PiAr wqDCoMKgIGRybV9kYmcoY3J0Yy0+ZGV2LCAidXBkYXRlIHN0cmlkZSB0byAldVxuIiwgc3Ry aWRlKTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIHZvaWQgbHNkY19wcmltYXJ5X3Bs YW5lX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJt X2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2RldmljZSAqbGRldiA9IHRvX2xzZGMocGxhbmUtPmRldik7DQo+Pj4gK8KgwqDCoCBzdHJ1 Y3QgZHJtX3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPSANCj4+PiBkcm1fYXRvbWlj X2dldF9uZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsNCj4+PiArwqDCoMKgIHN0cnVj dCBkcm1fY3J0YyAqY3J0YyA9IG5ld19wbGFuZV9zdGF0ZS0+Y3J0YzsNCj4+PiArwqDCoMKg IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKmZiID0gbmV3X3BsYW5lX3N0YXRlLT5mYjsNCj4+ PiArwqDCoMKgIHUzMiBmYl9vZmZzZXQgPSBsc2RjX2dldF9mYl9vZmZzZXQoZmIsIG5ld19w bGFuZV9zdGF0ZSwgMCk7DQo+Pj4gK8KgwqDCoCBkbWFfYWRkcl90IGZiX2FkZHI7DQo+Pj4g K8KgwqDCoCBzNjQgZ3B1X2FkZHI7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZ3B1X2FkZHIgPSBs c2RjX2dldF92cmFtX2JvX29mZnNldChmYik7DQo+Pj4gK8KgwqDCoCBpZiAoZ3B1X2FkZHIg PCAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCByZXR1cm47DQo+Pj4gKw0KPj4+ICvCoMKgwqAg ZmJfYWRkciA9IGxkZXYtPnZyYW1fYmFzZSArIGdwdV9hZGRyICsgZmJfb2Zmc2V0Ow0KPj4+ ICsNCj4+PiArwqDCoMKgIGxzZGNfdXBkYXRlX2ZiX3N0YXJ0X2FkZHIobGRldiwgY3J0Yywg ZmJfYWRkcik7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgbHNkY191cGRhdGVfZmJfc3RyaWRlKGxk ZXYsIGNydGMsIGZiLT5waXRjaGVzWzBdKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBsc2RjX3Vw ZGF0ZV9mYl9mb3JtYXQobGRldiwgY3J0YywgZmItPmZvcm1hdCk7DQo+Pj4gK30NCj4+PiAr DQo+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfcHJpbWFyeV9wbGFuZV9hdG9taWNfZGlzYWJsZShz dHJ1Y3QgZHJtX3BsYW5lICpwbGFuZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9hdG9taWNfc3RhdGUgKnN0 YXRlKQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBkcm1fZGJnKHBsYW5lLT5kZXYsICIlcyBkaXNh YmxlZFxuIiwgcGxhbmUtPm5hbWUpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29u c3Qgc3RydWN0IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgDQo+Pj4gbHNkY19wcmltYXJ5X3Bs YW5lX2hlbHBlcnMgPSB7DQo+Pj4gK8KgwqDCoCAucHJlcGFyZV9mYiA9IGRybV9nZW1fdnJh bV9wbGFuZV9oZWxwZXJfcHJlcGFyZV9mYiwNCj4+PiArwqDCoMKgIC5jbGVhbnVwX2ZiID0g ZHJtX2dlbV92cmFtX3BsYW5lX2hlbHBlcl9jbGVhbnVwX2ZiLA0KPj4+ICvCoMKgwqAgLmF0 b21pY19jaGVjayA9IGxzZGNfcHJpbWFyeV9wbGFuZV9hdG9taWNfY2hlY2ssDQo+Pj4gK8Kg wqDCoCAuYXRvbWljX3VwZGF0ZSA9IGxzZGNfcHJpbWFyeV9wbGFuZV9hdG9taWNfdXBkYXRl LA0KPj4+ICvCoMKgwqAgLmF0b21pY19kaXNhYmxlID0gbHNkY19wcmltYXJ5X3BsYW5lX2F0 b21pY19kaXNhYmxlLA0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArc3RhdGljIGludCBsc2RjX2N1 cnNvcl9hdG9taWNfY2hlY2soc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+Pj4gK8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0 YXRlICpzdGF0ZSkNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9wbGFuZV9zdGF0 ZSAqbmV3X3BsYW5lX3N0YXRlID0gDQo+Pj4gZHJtX2F0b21pY19nZXRfbmV3X3BsYW5lX3N0 YXRlKHN0YXRlLCBwbGFuZSk7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2ZyYW1lYnVmZmVy ICpmYiA9IG5ld19wbGFuZV9zdGF0ZS0+ZmI7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJtX2Ny dGMgKmNydGMgPSBuZXdfcGxhbmVfc3RhdGUtPmNydGM7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3Qg ZHJtX2NydGNfc3RhdGUgKmNydGNfc3RhdGU7DQo+Pj4gK8KgwqDCoCBpbnQgcmV0Ow0KPj4+ ICsNCj4+PiArwqDCoMKgIC8qIG5vIG5lZWQgZm9yIGZ1cnRoZXIgY2hlY2tzIGlmIHRoZSBw bGFuZSBpcyBiZWluZyBkaXNhYmxlZCAqLw0KPj4+ICvCoMKgwqAgaWYgKCFjcnRjIHx8ICFm YikNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIDA7DQo+Pj4gKw0KPj4+ICvCoMKgwqAg aWYgKCFuZXdfcGxhbmVfc3RhdGUtPnZpc2libGUpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJl dHVybiAwOw0KPj4+ICsNCj4+PiArwqDCoMKgIGNydGNfc3RhdGUgPSBkcm1fYXRvbWljX2dl dF9uZXdfY3J0Y19zdGF0ZShzdGF0ZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBuZXdfcGxhbmVfc3RhdGUtPmNydGMpOw0K Pj4+ICsNCj4+PiArwqDCoMKgIHJldCA9IGRybV9hdG9taWNfaGVscGVyX2NoZWNrX3BsYW5l X3N0YXRlKG5ld19wbGFuZV9zdGF0ZSwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY3J0Y19zdGF0ZSwNCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgRFJNX1BMQU5FX05P X1NDQUxJTkcsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIERSTV9QTEFORV9OT19TQ0FMSU5HLA0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlLA0KPj4+ICvCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0cnVlKTsN Cj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gcmV0Ow0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsv Kg0KPj4+ICsgKiBUaGVyZSBpcyBvbmx5IG9uZSBoYXJkd2FyZSBjdXJzb3IgaW4gbHM3YTEw MDAsIGxzMmsxMDAwIGFuZCANCj4+PiBsczJrMDUwMC4NCj4+PiArICogd2UgbWFkZSBpdCBz aGFyZWQgYnkgdGhlIHR3byBDUlRDLCB3aGljaCBjYW4gc2F0aXNmeSBwZW9wbGVzIHdobyB1 c2UNCj4+PiArICogZG91YmxlIHNjcmVlbiBleHRlbmQgbW9kZSBvbmx5LiBPbiBjbG9uZSBz Y3JlZW4gdXNhZ2UgY2FzZSwgdGhlIA0KPj4+IGN1cnNvcg0KPj4+ICsgKiBvbiBkaXNwbGF5 IHBpcGUgMSB3aWxsIG5vdCBiZSBhYmxlIHRvIGRpc3BsYXkuDQo+Pj4gKyAqDQo+Pj4gKyAq IFVwZGF0ZSBsb2NhdGlvbiBvZiB0aGUgY3Vyc29yLCBhdHRhY2ggaXQgdG8gQ1JUQzAgb3Ig Q1JUQzEgb24gdGhlIA0KPj4+IHJ1bnRpbWUuDQo+Pj4gKyAqLw0KPj4+ICtzdGF0aWMgdm9p ZCBsc2RjX2N1cnNvcl91cGRhdGVfbG9jYXRpb25fcXVpcmtzKHN0cnVjdCBsc2RjX2Rldmlj ZSANCj4+PiAqbGRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2NydGMgKmNydGMpDQo+Pj4gK3sNCj4+ PiArwqDCoMKgIHUzMiB2YWwgPSBDVVJTT1JfRk9STUFUX0FSR0I4ODg4Ow0KPj4+ICsNCj4+ PiArwqDCoMKgIC8qDQo+Pj4gK8KgwqDCoMKgICogSWYgYml0IDQgb2YgTFNEQ19DVVJTT1Iw X0NGR19SRUcgaXMgMSwgdGhlbiB0aGUgY3Vyc29yIHdpbGwgYmUNCj4+PiArwqDCoMKgwqAg KiBsb2NhdGUgYXQgQ1JUQy0xLCBpZiBiaXQgNCBvZiBMU0RDX0NVUlNPUjBfQ0ZHX1JFRyBp cyAwLCB0aGVuDQo+Pj4gK8KgwqDCoMKgICogdGhlIGN1cnNvciB3aWxsIGJlIGxvY2F0ZSBh dCBDUlRDLTAuIFRoZSBjdXJzb3IgaXMgYWx3YXkgb24gdGhlDQo+Pj4gK8KgwqDCoMKgICog dG9wIG9mIHRoZSBwcmltYXJ5LiBDb21wb3NpdGluZyB0aGUgcHJpbWFyeSBwbGFuZSBhbmQg Y3Vyc29yDQo+Pj4gK8KgwqDCoMKgICogcGxhbmUgaXMgYXV0b21hdGljYWxseSBkb25lIGJ5 IGhhcmR3YXJlLg0KPj4+ICvCoMKgwqDCoCAqLw0KPj4+ICvCoMKgwqAgaWYgKGRybV9jcnRj X2luZGV4KGNydGMpKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgfD0gQ1VSU09SX0xPQ0FU SU9OOw0KPj4+ICsNCj4+PiArwqDCoMKgIGxzZGNfd3JlZzMyKGxkZXYsIExTRENfQ1VSU09S MF9DRkdfUkVHLCB2YWwpOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKiB1cGRhdGUgdGhlIHBv c2l0aW9uIG9mIHRoZSBjdXJzb3IgKi8NCj4+PiArc3RhdGljIHZvaWQgbHNkY19jdXJzb3Jf dXBkYXRlX3Bvc2l0aW9uX3F1aXJrcyhzdHJ1Y3QgbHNkY19kZXZpY2UgDQo+Pj4gKmxkZXYs DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgaW50IHgsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgaW50IHkpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIGlmICh4IDwg MCkNCj4+PiArwqDCoMKgwqDCoMKgwqAgeCA9IDA7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYg KHkgPCAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoCB5ID0gMDsNCj4+PiArDQo+Pj4gK8KgwqDC oCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NVUlNPUjBfUE9TSVRJT05fUkVHLCAoeSA8PCAx NikgfCB4KTsNCj4+PiArfQ0KPj4+ICsNCj4+PiArc3RhdGljIHZvaWQgbHNkY19jdXJzb3Jf YXRvbWljX3VwZGF0ZV9xdWlya3Moc3RydWN0IGRybV9wbGFuZSAqcGxhbmUsDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3Qg ZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4gK3sNCj4+PiArwqDCoMKgIHN0cnVjdCBk cm1fZGV2aWNlICpkZGV2ID0gcGxhbmUtPmRldjsNCj4+PiArwqDCoMKgIHN0cnVjdCBsc2Rj X2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgZHJt X3BsYW5lX3N0YXRlICpuZXdfcGxhbmVfc3RhdGUgPSANCj4+PiBkcm1fYXRvbWljX2dldF9u ZXdfcGxhbmVfc3RhdGUoc3RhdGUsIHBsYW5lKTsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1f cGxhbmVfc3RhdGUgKm9sZF9wbGFuZV9zdGF0ZSA9IA0KPj4+IGRybV9hdG9taWNfZ2V0X29s ZF9wbGFuZV9zdGF0ZShzdGF0ZSwgcGxhbmUpOw0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9m cmFtZWJ1ZmZlciAqbmV3X2ZiID0gbmV3X3BsYW5lX3N0YXRlLT5mYjsNCj4+PiArwqDCoMKg IHN0cnVjdCBkcm1fZnJhbWVidWZmZXIgKm9sZF9mYiA9IG9sZF9wbGFuZV9zdGF0ZS0+ZmI7 DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKG5ld19mYiAhPSBvbGRfZmIpIHsNCj4+PiArwqDC oMKgwqDCoMKgwqAgczY0IG9mZnNldCA9IGxzZGNfZ2V0X3ZyYW1fYm9fb2Zmc2V0KG5ld19m Yik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHU2NCBjdXJzb3JfYWRkciA9IGxkZXYtPnZyYW1f YmFzZSArIG9mZnNldDsNCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9kYmdfa21z KGRkZXYsICIlcyBvZmZzZXQ6ICVsbHhcbiIsIHBsYW5lLT5uYW1lLCBvZmZzZXQpOw0KPj4+ ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1Iw X0FERFJfTE9fUkVHLCBjdXJzb3JfYWRkcik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGxzZGNf d3JlZzMyKGxkZXYsIExTRENfQ1VSU09SMF9BRERSX0hJX1JFRywgKGN1cnNvcl9hZGRyID4+ IA0KPj4+IDMyKSAmIDB4RkYpOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKg IGxzZGNfY3Vyc29yX3VwZGF0ZV9wb3NpdGlvbl9xdWlya3MobGRldiwgDQo+Pj4gbmV3X3Bs YW5lX3N0YXRlLT5jcnRjX3gsIG5ld19wbGFuZV9zdGF0ZS0+Y3J0Y195KTsNCj4+PiArDQo+ Pj4gK8KgwqDCoCBsc2RjX2N1cnNvcl91cGRhdGVfbG9jYXRpb25fcXVpcmtzKGxkZXYsIG5l d19wbGFuZV9zdGF0ZS0+Y3J0Yyk7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qIHVwZGF0ZSB0 aGUgZm9ybWF0LCBzaXplIGFuZCBsb2NhdGlvbiBvZiB0aGUgY3Vyc29yICovDQo+Pj4gK3N0 YXRpYyB2b2lkIGxzZGNfY3Vyc29yX2F0b21pY191cGRhdGUoc3RydWN0IGRybV9wbGFuZSAq cGxhbmUsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4gK3sNCj4+PiArwqDCoMKg IHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gcGxhbmUtPmRldjsNCj4+PiArwqDCoMKgIHN0 cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+Pj4gK8KgwqDCoCBz dHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSBjdXJzb3JfdG9fZGlzcGxheV9w aXBlKHBsYW5lKTsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fcGxhbmVfc3RhdGUgKm5ld19w bGFuZV9zdGF0ZSA9IA0KPj4+IGRybV9hdG9taWNfZ2V0X25ld19wbGFuZV9zdGF0ZShzdGF0 ZSwgcGxhbmUpOw0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9mcmFtZWJ1ZmZlciAqbmV3X2Zi ID0gbmV3X3BsYW5lX3N0YXRlLT5mYjsNCj4+PiArwqDCoMKgIGludCB4ID0gbmV3X3BsYW5l X3N0YXRlLT5jcnRjX3g7DQo+Pj4gK8KgwqDCoCBpbnQgeSA9IG5ld19wbGFuZV9zdGF0ZS0+ Y3J0Y195Ow0KPj4+ICvCoMKgwqAgdTMyIGNvbmYgPSBDVVJTT1JfRk9STUFUX0FSR0I4ODg4 IHwgQ1VSU09SX1NJWkVfNjRYNjQ7DQo+Pj4gK8KgwqDCoCB1NjQgY3Vyc29yX2FkZHIgPSBs ZGV2LT52cmFtX2Jhc2UgKyANCj4+PiBsc2RjX2dldF92cmFtX2JvX29mZnNldChuZXdfZmIp Ow0KPj4+ICsNCj4+PiArwqDCoMKgIGlmICh4IDwgMCkNCj4+PiArwqDCoMKgwqDCoMKgwqAg eCA9IDA7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKHkgPCAwKQ0KPj4+ICvCoMKgwqDCoMKg wqDCoCB5ID0gMDsNCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoZGlzcGlwZS0+aW5kZXggPT0g MCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2LCBMU0RDX0NVUlNP UjBfQUREUl9ISV9SRUcsIChjdXJzb3JfYWRkciA+PiANCj4+PiAzMikgJiAweEZGKTsNCj4+ PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IwX0FERFJf TE9fUkVHLCBjdXJzb3JfYWRkcik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIC8qIEF0dGFjaCBD dXJzb3ItMCB0byBDUlRDLTAgKi8NCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIo bGRldiwgTFNEQ19DVVJTT1IwX0NGR19SRUcsIGNvbmYgJiANCj4+PiB+Q1VSU09SX0xPQ0FU SU9OKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJT T1IwX1BPU0lUSU9OX1JFRywgKHkgPDwgMTYpIHwgeCk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IHJldHVybjsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoZGlzcGlw ZS0+aW5kZXggPT0gMSkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2 LCBMU0RDX0NVUlNPUjFfQUREUl9ISV9SRUcsIChjdXJzb3JfYWRkciA+PiANCj4+PiAzMikg JiAweEZGKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwgTFNEQ19D VVJTT1IxX0FERFJfTE9fUkVHLCBjdXJzb3JfYWRkcik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IC8qIEF0dGFjaCBDdXJzb3ItMSB0byBDUlRDLTEgKi8NCj4+PiArwqDCoMKgwqDCoMKgwqAg bHNkY193cmVnMzIobGRldiwgTFNEQ19DVVJTT1IxX0NGR19SRUcsIGNvbmYgfCANCj4+PiBD VVJTT1JfTE9DQVRJT04pOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsc2RjX3dyZWczMihsZGV2 LCBMU0RDX0NVUlNPUjFfUE9TSVRJT05fUkVHLCAoeSA8PCAxNikgfCB4KTsNCj4+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICt9DQo+Pj4gKw0KPj4+ ICtzdGF0aWMgdm9pZCBsc2RjX2N1cnNvcl9hdG9taWNfZGlzYWJsZV9xdWlya3Moc3RydWN0 IGRybV9wbGFuZSAqcGxhbmUsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBkcm1fYXRvbWljX3N0YXRlICpzdGF0ZSkN Cj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGRybV9kZXZpY2UgKmRkZXYgPSBwbGFuZS0+ ZGV2Ow0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2ID0gdG9fbHNkYyhk ZGV2KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBTZXQgdGhlIGZvcm1hdCB0byAwIGFjdHVh bGx5IGRpc3BsYXkgdGhlIGN1cnNvciAqLw0KPj4+ICvCoMKgwqAgbHNkY193cmVnMzIobGRl diwgTFNEQ19DVVJTT1IwX0NGR19SRUcsIDApOw0KPj4+ICsNCj4+PiArwqDCoMKgIGRybV9k YmcoZGRldiwgIiVzIGRpc2FibGVkXG4iLCBwbGFuZS0+bmFtZSk7DQo+Pj4gK30NCj4+PiAr DQo+Pj4gK3N0YXRpYyB2b2lkIGxzZGNfY3Vyc29yX2F0b21pY19kaXNhYmxlKHN0cnVjdCBk cm1fcGxhbmUgKnBsYW5lLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2F0b21pY19zdGF0ZSAqc3RhdGUpDQo+Pj4gK3sN Cj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gcGxhbmUtPmRldjsNCj4+ PiArwqDCoMKgIHN0cnVjdCBsc2RjX2RldmljZSAqbGRldiA9IHRvX2xzZGMoZGRldik7DQo+ Pj4gK8KgwqDCoCBzdHJ1Y3QgbHNkY19kaXNwbGF5X3BpcGUgKmRpc3BpcGUgPSBjdXJzb3Jf dG9fZGlzcGxheV9waXBlKHBsYW5lKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBpZiAoZGlzcGlw ZS0+aW5kZXggPT0gMCkNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwg TFNEQ19DVVJTT1IwX0NGR19SRUcsIDApOw0KPj4+ICvCoMKgwqAgZWxzZSBpZiAoZGlzcGlw ZS0+aW5kZXggPT0gMSkNCj4+PiArwqDCoMKgwqDCoMKgwqAgbHNkY193cmVnMzIobGRldiwg TFNEQ19DVVJTT1IxX0NGR19SRUcsIDApOw0KPj4+ICsNCj4+PiArwqDCoMKgIGRybV9kYmco ZGRldiwgIiVzIGRpc2FibGVkXG4iLCBwbGFuZS0+bmFtZSk7DQo+Pj4gK30NCj4+PiArDQo+ Pj4gK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZHJtX3BsYW5lX2hlbHBlcl9mdW5jcyBsc2RjX2N1 cnNvcl9oZWxwZXJzX3F1aXJrIA0KPj4+ID0gew0KPj4+ICvCoMKgwqAgLnByZXBhcmVfZmIg PSBkcm1fZ2VtX3ZyYW1fcGxhbmVfaGVscGVyX3ByZXBhcmVfZmIsDQo+Pj4gK8KgwqDCoCAu Y2xlYW51cF9mYiA9IGRybV9nZW1fdnJhbV9wbGFuZV9oZWxwZXJfY2xlYW51cF9mYiwNCj4+ PiArwqDCoMKgIC5hdG9taWNfY2hlY2sgPSBsc2RjX2N1cnNvcl9hdG9taWNfY2hlY2ssDQo+ Pj4gK8KgwqDCoCAuYXRvbWljX3VwZGF0ZSA9IGxzZGNfY3Vyc29yX2F0b21pY191cGRhdGVf cXVpcmtzLA0KPj4+ICvCoMKgwqAgLmF0b21pY19kaXNhYmxlID0gbHNkY19jdXJzb3JfYXRv bWljX2Rpc2FibGVfcXVpcmtzLA0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArc3RhdGljIGNvbnN0 IHN0cnVjdCBkcm1fcGxhbmVfaGVscGVyX2Z1bmNzIGxzZGNfY3Vyc29yX3BsYW5lX2hlbHBl cnMgDQo+Pj4gPSB7DQo+Pj4gK8KgwqDCoCAucHJlcGFyZV9mYiA9IGRybV9nZW1fdnJhbV9w bGFuZV9oZWxwZXJfcHJlcGFyZV9mYiwNCj4+PiArwqDCoMKgIC5jbGVhbnVwX2ZiID0gZHJt X2dlbV92cmFtX3BsYW5lX2hlbHBlcl9jbGVhbnVwX2ZiLA0KPj4+ICvCoMKgwqAgLmF0b21p Y19jaGVjayA9IGxzZGNfY3Vyc29yX2F0b21pY19jaGVjaywNCj4+PiArwqDCoMKgIC5hdG9t aWNfdXBkYXRlID0gbHNkY19jdXJzb3JfYXRvbWljX3VwZGF0ZSwNCj4+PiArwqDCoMKgIC5h dG9taWNfZGlzYWJsZSA9IGxzZGNfY3Vyc29yX2F0b21pY19kaXNhYmxlLA0KPj4+ICt9Ow0K Pj4+ICsNCj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBkcm1fcGxhbmVfZnVuY3MgbHNkY19w bGFuZV9mdW5jcyA9IHsNCj4+PiArwqDCoMKgIC51cGRhdGVfcGxhbmUgPSBkcm1fYXRvbWlj X2hlbHBlcl91cGRhdGVfcGxhbmUsDQo+Pj4gK8KgwqDCoCAuZGlzYWJsZV9wbGFuZSA9IGRy bV9hdG9taWNfaGVscGVyX2Rpc2FibGVfcGxhbmUsDQo+Pj4gK8KgwqDCoCAuZGVzdHJveSA9 IGRybV9wbGFuZV9jbGVhbnVwLA0KPj4+ICvCoMKgwqAgLnJlc2V0ID0gZHJtX2F0b21pY19o ZWxwZXJfcGxhbmVfcmVzZXQsDQo+Pj4gK8KgwqDCoCAuYXRvbWljX2R1cGxpY2F0ZV9zdGF0 ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2R1cGxpY2F0ZV9zdGF0ZSwNCj4+PiArwqDC oMKgIC5hdG9taWNfZGVzdHJveV9zdGF0ZSA9IGRybV9hdG9taWNfaGVscGVyX3BsYW5lX2Rl c3Ryb3lfc3RhdGUsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0 IGRybV9wbGFuZV9oZWxwZXJfZnVuY3MgKg0KPj4+ICtsc2RjX2dldF9jdXJzb3JfaGVscGVy X2Z1bmNzKGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2MgKmRlc2NwKQ0KPj4+ICt7DQo+Pj4gK8Kg wqDCoCBpZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMjAwMCkNCj4+PiArwqDCoMKgwqDC oMKgwqAgcmV0dXJuICZsc2RjX2N1cnNvcl9wbGFuZV9oZWxwZXJzOw0KPj4+ICsNCj4+PiAr wqDCoMKgIHJldHVybiAmbHNkY19jdXJzb3JfaGVscGVyc19xdWlyazsNCj4+PiArfQ0KPj4+ ICsNCj4+PiAraW50IGxzZGNfcGxhbmVfaW5pdChzdHJ1Y3QgbHNkY19kZXZpY2UgKmxkZXYs DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgc3RydWN0IGRybV9wbGFuZSAqcGxhbmUs DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZW51bSBkcm1fcGxhbmVfdHlwZSB0eXBl LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCkNCj4+ PiArew0KPj4+ICvCoMKgwqAgY29uc3Qgc3RydWN0IGxzZGNfZGVzYyAqZGVzY3AgPSBsZGV2 LT5kZXNjcDsNCj4+PiArwqDCoMKgIHN0cnVjdCBkcm1fZGV2aWNlICpkZGV2ID0gJmxkZXYt PmJhc2U7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgZm9ybWF0X2NvdW50Ow0KPj4+ICvC oMKgwqAgY29uc3QgdTMyICpmb3JtYXRzOw0KPj4+ICvCoMKgwqAgY29uc3QgY2hhciAqbmFt ZTsNCj4+PiArwqDCoMKgIGludCByZXQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgc3dpdGNoICh0 eXBlKSB7DQo+Pj4gK8KgwqDCoCBjYXNlIERSTV9QTEFORV9UWVBFX1BSSU1BUlk6DQo+Pj4g K8KgwqDCoMKgwqDCoMKgIGZvcm1hdHMgPSBsc2RjX3ByaW1hcnlfZm9ybWF0czsNCj4+PiAr wqDCoMKgwqDCoMKgwqAgZm9ybWF0X2NvdW50ID0gQVJSQVlfU0laRShsc2RjX3ByaW1hcnlf Zm9ybWF0cyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIG5hbWUgPSAicHJpbWFyeS0ldSI7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+ICvCoMKgwqAgY2FzZSBEUk1fUExBTkVf VFlQRV9DVVJTT1I6DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGZvcm1hdHMgPSBsc2RjX2N1cnNv cl9mb3JtYXRzOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBmb3JtYXRfY291bnQgPSBBUlJBWV9T SVpFKGxzZGNfY3Vyc29yX2Zvcm1hdHMpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBuYW1lID0g ImN1cnNvci0ldSI7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+ICvCoMKgwqAg Y2FzZSBEUk1fUExBTkVfVFlQRV9PVkVSTEFZOg0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1f ZXJyKGRkZXYsICJvdmVybGF5IHBsYW5lIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOw0KPj4+ICvC oMKgwqDCoMKgwqDCoCBicmVhazsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDC oCByZXQgPSBkcm1fdW5pdmVyc2FsX3BsYW5lX2luaXQoZGRldiwgcGxhbmUsIDEgPDwgaW5k ZXgsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg ICZsc2RjX3BsYW5lX2Z1bmNzLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBmb3JtYXRzLCBmb3JtYXRfY291bnQsDQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGxzZGNfZmJfZm9ybWF0X21v ZGlmaWVycywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdHlwZSwgbmFtZSwgaW5kZXgpOw0KPj4+ICvCoMKgwqAgaWYgKHJldCkgew0KPj4+ ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKGRkZXYsICIlcyBmYWlsZWQ6ICVkXG4iLCBfX2Z1 bmNfXywgcmV0KTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHJldDsNCj4+PiArwqDC oMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCBzd2l0Y2ggKHR5cGUpIHsNCj4+PiArwqDCoMKg IGNhc2UgRFJNX1BMQU5FX1RZUEVfUFJJTUFSWToNCj4+PiArwqDCoMKgwqDCoMKgwqAgZHJt X3BsYW5lX2hlbHBlcl9hZGQocGxhbmUsICZsc2RjX3ByaW1hcnlfcGxhbmVfaGVscGVycyk7 DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+ICvCoMKgwqAgY2FzZSBEUk1fUExB TkVfVFlQRV9DVVJTT1I6DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9wbGFuZV9oZWxwZXJf YWRkKHBsYW5lLCANCj4+PiBsc2RjX2dldF9jdXJzb3JfaGVscGVyX2Z1bmNzKGRlc2NwKSk7 DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGJyZWFrOw0KPj4+ICvCoMKgwqAgY2FzZSBEUk1fUExB TkVfVFlQRV9PVkVSTEFZOg0KPj4+ICvCoMKgwqDCoMKgwqDCoCBkcm1fZXJyKGRkZXYsICJv dmVybGF5IHBsYW5lIGlzIG5vdCBzdXBwb3J0ZWRcbiIpOw0KPj4+ICvCoMKgwqDCoMKgwqDC oCBicmVhazsNCj4+PiArwqDCoMKgIH0NCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsN Cj4+PiArfQ0KPj4+IGRpZmYgLS1naXQgYS9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3Bs bC5jIA0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19wbGwuYw0KPj4+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi42ZWQ3NDk4OWE2ZjUN Cj4+PiAtLS0gL2Rldi9udWxsDQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNk Y19wbGwuYw0KPj4+IEBAIC0wLDAgKzEsNTY5IEBADQo+Pj4gKy8vIFNQRFgtTGljZW5zZS1J ZGVudGlmaWVyOiBHUEwtMi4wDQo+Pj4gKw0KPj4+ICsjaW5jbHVkZSAibHNkY19kcnYuaCIN Cj4+PiArI2luY2x1ZGUgImxzZGNfcmVncy5oIg0KPj4+ICsjaW5jbHVkZSAibHNkY19wbGwu aCINCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIFRoZSBzdHJ1Y3R1cmUgb2YgdGhlIHBpeGVs IFBMTCByZWdpc3RlciBpcyBldm9sdmVkIHdpdGggdGltZXMuDQo+Pj4gKyAqIEFsbCBsb29u Z3NvbidzIGNwdSBpcyBsaXR0bGUgZW5kaWFuLg0KPj4+ICsgKi8NCj4+PiArDQo+Pj4gKy8q IHU2NCAqLw0KPj4+ICtzdHJ1Y3QgbHM3YTEwMDBfcGl4cGxsX2JpdG1hcCB7DQo+Pj4gK8Kg wqDCoCAvKiBCeXRlIDAgfiBCeXRlIDMgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIGRpdl9v dXTCoMKgwqDCoMKgIDogNzvCoMKgIC8qwqAgMCA6IDbCoMKgwqDCoCBvdXRwdXQgY2xvY2sg ZGl2aWRlcsKgICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBfXzHCoMKgwqDCoMKgwqDCoMKg wqAgOiAxNDvCoCAvKsKgIDcgOiAyMMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb29wY8KgwqDC oMKgwqDCoMKgIDogOTvCoMKgIC8qIDIxIDogMjnCoMKgwqAgY2xvY2sgbXVsdGlwbGllcsKg wqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIF9fMsKgwqDCoMKgwqDCoMKgwqDC oCA6IDI7wqDCoCAvKiAzMCA6IDMxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBCeXRlIDQgfiBC eXRlIDcgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIGRpdl9yZWbCoMKgwqDCoMKgIDogNzvC oMKgIC8qwqAgMCA6IDbCoMKgwqDCoCBpbnB1dCBjbG9jayBkaXZpZGVywqDCoCAqLw0KPj4+ ICvCoMKgwqAgdW5zaWduZWQgbG9ja2VkwqDCoMKgwqDCoMKgIDogMTvCoMKgIC8qwqAgN8Kg wqDCoMKgwqDCoMKgwqAgUExMIGxvY2tlZCBzdGF0dXPCoMKgwqDCoCAqLw0KPj4+ICvCoMKg wqAgdW5zaWduZWQgc2VsX291dMKgwqDCoMKgwqAgOiAxO8KgwqAgLyrCoCA4wqDCoMKgwqDC oMKgwqDCoCBvdXRwdXQgY2xrIHNlbGVjdG9ywqDCoCAqLw0KPj4+ICvCoMKgwqAgdW5zaWdu ZWQgX18zwqDCoMKgwqDCoMKgwqDCoMKgIDogMjvCoMKgIC8qwqAgOSA6IDEwIHJlc2VydmVk wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIHNl dF9wYXJhbcKgwqDCoCA6IDE7wqDCoCAvKsKgIDExwqDCoMKgwqDCoMKgwqAgdHJpZ2dlciB0 aGUgdXBkYXRlwqDCoMKgICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBieXBhc3PCoMKgwqDC oMKgwqAgOiAxO8KgwqAgLyogMTLCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBwb3dl cmRvd27CoMKgwqAgOiAxO8KgwqAgLyogMTPCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25l ZCBfXzTCoMKgwqDCoMKgwqDCoMKgwqAgOiAxODvCoCAvKsKgIDE0IDogMzHCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+PiArfTsNCj4+ PiArDQo+Pj4gKy8qIHUxMjggKi8NCj4+PiArc3RydWN0IGxzMmsxMDAwX3BpeHBsbF9iaXRt YXAgew0KPj4+ICvCoMKgwqAgLyogQnl0ZSAwIH4gQnl0ZSAzICovDQo+Pj4gK8KgwqDCoCB1 bnNpZ25lZCBzZWxfb3V0wqDCoMKgwqDCoCA6wqAgMTvCoCAvKsKgIDDCoMKgwqDCoMKgIHNl bGVjdCB0aGlzIFBMTMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+ICvCoMKgwqAgdW5zaWdu ZWQgX18xwqDCoMKgwqDCoMKgwqDCoMKgIDrCoCAxO8KgIC8qIDHCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+PiAr wqDCoMKgIHVuc2lnbmVkIHN3X2Fkal9lbsKgwqDCoCA6wqAgMTvCoCAvKsKgIDLCoMKgwqDC oMKgIGFsbG93IHNvZnR3YXJlIGFkanVzdMKgwqDCoCAqLw0KPj4+ICvCoMKgwqAgdW5zaWdu ZWQgYnlwYXNzwqDCoMKgwqDCoMKgIDrCoCAxO8KgIC8qwqAgM8KgwqDCoMKgwqAgYnlwYXNz IEwxIFBMTMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVk IF9fMsKgwqDCoMKgwqDCoMKgwqDCoCA6wqAgMzvCoCAvKiA0OjbCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+ICvCoMKg wqAgdW5zaWduZWQgbG9ja19lbsKgwqDCoMKgwqAgOsKgIDE7wqAgLyrCoCA3wqDCoMKgwqDC oCBlbmFibGUgbG9jayBMMSBQTEzCoMKgwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIHVuc2ln bmVkIF9fM8KgwqDCoMKgwqDCoMKgwqDCoCA6wqAgMjvCoCAvKiA4OjnCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+ICvC oMKgwqAgdW5zaWduZWQgbG9ja19jaGVja8KgwqAgOsKgIDI7wqAgLyogMTA6MTHCoMKgIHBy ZWNpc2lvbiBjaGVja8KgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+ICvCoMKgwqAgdW5zaWdu ZWQgX180wqDCoMKgwqDCoMKgwqDCoMKgIDrCoCA0O8KgIC8qIDEyOjE1wqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gKw0K Pj4+ICvCoMKgwqAgdW5zaWduZWQgbG9ja2VkwqDCoMKgwqDCoMKgIDrCoCAxO8KgIC8qIDE2 wqDCoMKgwqDCoCBQTEwgbG9ja2VkIGZsYWcgYml0wqDCoMKgwqDCoCAqLw0KPj4+ICvCoMKg wqAgdW5zaWduZWQgX181wqDCoMKgwqDCoMKgwqDCoMKgIDrCoCAyO8KgIC8qIDE3OjE4wqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICov DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBwb3dlcmRvd27CoMKgwqAgOsKgIDE7wqAgLyogMTnC oMKgwqDCoMKgIHBvd2VyZG93biB0aGUgcGxsIGlmIHNldCAqLw0KPj4+ICvCoMKgwqAgdW5z aWduZWQgX182wqDCoMKgwqDCoMKgwqDCoMKgIDrCoCA2O8KgIC8qIDIwOjI1wqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4g K8KgwqDCoCB1bnNpZ25lZCBkaXZfcmVmwqDCoMKgwqDCoCA6wqAgNjvCoCAvKiAyNjozMcKg wqAgTDEgUHJlc2NhbGVywqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gKw0KPj4+ ICvCoMKgwqAgLyogQnl0ZSA0IH4gQnl0ZSA3ICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBs b29wY8KgwqDCoMKgwqDCoMKgIDogMTA7wqAgLyogMzI6NDHCoMKgIENsb2NrIE11bHRpcGxp ZXLCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBsMV9kaXbCoMKg wqDCoMKgwqAgOsKgIDY7wqAgLyogNDI6NDfCoMKgIG5vdCB1c2VkwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIF9fN8KgwqDCoMKg wqDCoMKgwqDCoCA6IDE2O8KgIC8qIDQ4OjYzwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgICovDQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyog Qnl0ZSA4IH4gQnl0ZSAxNSAqLw0KPj4+ICvCoMKgwqAgdW5zaWduZWQgZGl2X291dMKgwqDC oMKgwqAgOsKgIDY7wqAgLyogMCA6IDXCoMKgIG91dHB1dCBjbG9jayBkaXZpZGVywqDCoMKg wqAgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIF9fOMKgwqDCoMKgwqDCoMKgwqDCoCA6IDI2 O8KgIC8qIDYgOiAzMcKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIF9fOcKgwqDCoMKgwqDCoMKg wqDCoCA6IDMyO8KgIC8qIDcwOiAxMjfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArLyogdTMyICov DQo+Pj4gK3N0cnVjdCBsczJrMDUwMF9waXhwbGxfYml0bWFwIHsNCj4+PiArwqDCoMKgIC8q IEJ5dGUgMCB+IEJ5dGUgMSAqLw0KPj4+ICvCoMKgwqAgdW5zaWduZWQgc2VsX291dMKgwqDC oMKgwqAgOiAxOw0KPj4+ICvCoMKgwqAgdW5zaWduZWQgX18xwqDCoMKgwqDCoMKgwqDCoMKg IDogMjsNCj4+PiArwqDCoMKgIHVuc2lnbmVkIHN3X2Fkal9lbsKgwqDCoCA6IDE7wqDCoCAv KiBhbGxvdyBzb2Z0d2FyZSANCj4+PiBhZGp1c3TCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCAqLw0KPj4+ICvCoMKgwqAgdW5zaWduZWQgYnlwYXNzwqDCoMKgwqDCoMKgIDogMTvCoMKg IC8qIGJ5cGFzcyBMMSANCj4+PiBQTEzCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgKi8NCj4+PiArwqDCoMKgIHVuc2lnbmVkIHBvd2VyZG93bsKgwqDCoCA6 IDE7wqDCoCAvKiB3cml0ZSAxIHRvIHBvd2VyZG93biB0aGUgDQo+Pj4gUExMwqDCoMKgwqDC oMKgICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBfXzLCoMKgwqDCoMKgwqDCoMKgwqAgOiAx Ow0KPj4+ICvCoMKgwqAgdW5zaWduZWQgbG9ja2VkwqDCoMKgwqDCoMKgIDogMTvCoMKgIC8q wqAgN8KgwqDCoMKgIElzIEwxIFBMTCBsb2NrZWQsIHJlYWQgDQo+Pj4gb25seSAqLw0KPj4+ ICvCoMKgwqAgdW5zaWduZWQgZGl2X3JlZsKgwqDCoMKgwqAgOiA2O8KgwqAgLyrCoCA4OjEz wqAgcmVmIGNsb2NrIA0KPj4+IGRpdmlkZXLCoMKgwqDCoMKgwqDCoMKgwqDCoCAqLw0KPj4+ ICvCoMKgwqAgdW5zaWduZWQgX18zwqDCoMKgwqDCoMKgwqDCoMKgIDogMjvCoMKgIC8qIA0K Pj4+IDE0OjE1wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqLw0KPj4+ICvCoMKgwqAgLyogQnl0ZSAyIH4gQnl0ZSAzICovDQo+ Pj4gK8KgwqDCoCB1bnNpZ25lZCBsb29wY8KgwqDCoMKgwqDCoMKgIDogODvCoMKgIC8qIDE2 OjIzwqDCoCBDbG9jayANCj4+PiBNdWx0aXBsaWVywqDCoMKgwqDCoMKgwqDCoMKgwqAgKi8N Cj4+PiArwqDCoMKgIHVuc2lnbmVkIGRpdl9vdXTCoMKgwqDCoMKgIDogNjvCoMKgIC8qIDI0 OjI5wqDCoCBvdXRwdXQgY2xvY2sgDQo+Pj4gZGl2aWRlcsKgwqDCoMKgwqDCoCAqLw0KPj4+ ICvCoMKgwqAgdW5zaWduZWQgX180wqDCoMKgwqDCoMKgwqDCoMKgIDogMjvCoMKgIC8qIA0K Pj4+IDMwOjMxwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCAqLw0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArdW5pb24gbHNkY19waXhw bGxfYml0bWFwIHsNCj4+PiArwqDCoMKgIHN0cnVjdCBsczdhMTAwMF9waXhwbGxfYml0bWFw IGxzN2ExMDAwOw0KPj4+ICvCoMKgwqAgc3RydWN0IGxzMmsxMDAwX3BpeHBsbF9iaXRtYXAg bHMyazEwMDA7DQo+Pj4gK8KgwqDCoCBzdHJ1Y3QgbHMyazA1MDBfcGl4cGxsX2JpdG1hcCBs czJrMDUwMDsNCj4+PiArDQo+Pj4gK8KgwqDCoCB1MzIgZHdvcmRbNF07DQo+Pj4gK307DQo+ Pj4gKw0KPj4+ICtzdHJ1Y3QgcGl4Y2xrX3RvX3BsbF9wYXJtIHsNCj4+PiArwqDCoMKgIC8q IGtIeiAqLw0KPj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGNsb2NrOw0KPj4+ICsNCj4+PiAr wqDCoMKgIHVuc2lnbmVkIHNob3J0IHdpZHRoOw0KPj4+ICvCoMKgwqAgdW5zaWduZWQgc2hv cnQgaGVpZ2h0Ow0KPj4+ICvCoMKgwqAgdW5zaWduZWQgc2hvcnQgdnJlZnJlc2g7DQo+Pj4g Kw0KPj4+ICvCoMKgwqAgLyogU3RvcmVzIHBhcmFtZXRlcnMgZm9yIHByb2dyYW1taW5nIHRo ZSBIYXJkd2FyZSBQTExzICovDQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBzaG9ydCBkaXZfb3V0 Ow0KPj4+ICvCoMKgwqAgdW5zaWduZWQgc2hvcnQgbG9vcGM7DQo+Pj4gK8KgwqDCoCB1bnNp Z25lZCBzaG9ydCBkaXZfcmVmOw0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArLyoNCj4+PiArICog UGl4ZWwgY2xvY2sgdG8gUExMIHBhcmFtZXRlcnMgdHJhbnNsYXRpb24gdGFibGUuDQo+Pj4g KyAqIFNtYWxsIHN0YXRpYyBjYWNoZWQgdmFsdWUgdG8gc3BlZWQgdXAgUExMIHBhcmFtZXRl cnMgY2FsY3VsYXRpb24uDQo+Pj4gKyAqLw0KPj4+ICtzdGF0aWMgY29uc3Qgc3RydWN0IHBp eGNsa190b19wbGxfcGFybSBwbGxfcGFyYW1fdGFibGVbXSA9IHsNCj4+PiArwqDCoMKgIHsx NDg1MDAsIDE5MjAsIDEwODAsIDYwLCAxMSwgNDkswqAgM30swqDCoCAvKiAxOTIweDEwODBA NjBIeiAqLw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIDE5MjB4MTA4MEA1MEh6ICovDQo+Pj4gK8KgwqDCoCB7MTc0NTAwLCAxOTIw LCAxMDgwLCA3NSwgMTcsIDg5LMKgIDN9LMKgwqAgLyogMTkyMHgxMDgwQDc1SHogKi8NCj4+ PiArwqDCoMKgIHsxODEyNTAsIDI1NjAsIDEwODAsIDc1LMKgIDgsIDU4LMKgIDR9LMKgwqAg LyogMjU2MHgxMDgwQDc1SHogKi8NCj4+PiArwqDCoMKgIHsxNDYyNTAsIDE2ODAsIDEwNTAs IDYwLCAxNiwgMTE3LCA1fSzCoMKgIC8qIDE2ODB4MTA1MEA2MEh6ICovDQo+Pj4gK8KgwqDC oCB7MTM1MDAwLCAxMjgwLCAxMDI0LCA3NSwgMTAsIDU0LMKgIDR9LMKgwqAgLyogMTI4MHgx MDI0QDc1SHogKi8NCj4+PiArDQo+Pj4gK8KgwqDCoCB7MTA4MDAwLCAxNjAwLCA5MDAswqAg NjAsIDE1LCA4MSzCoCA1fSzCoMKgIC8qIDE2MDB4OTAwQDYwSHogKi8NCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAxMjgweDEwMjRA NjBIeiAqLw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgIC8qIDEyODB4OTYwQDYwSHogKi8NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiAxMTUyeDg2NEA3NUh6ICovDQo+Pj4gKw0K Pj4+ICvCoMKgwqAgezEwNjUwMCwgMTQ0MCwgOTAwLMKgIDYwLCAxOSwgODEswqAgNH0swqDC oCAvKiAxNDQweDkwMEA2MEh6ICovDQo+Pj4gK8KgwqDCoCB7ODg3NTAswqAgMTQ0MCwgOTAw LMKgIDYwLCAxNiwgNzEswqAgNX0swqDCoCAvKiAxNDQweDkwMEA2MEh6ICovDQo+Pj4gK8Kg wqDCoCB7ODM1MDAswqAgMTI4MCwgODAwLMKgIDYwLCAxNywgNzEswqAgNX0swqDCoCAvKiAx MjgweDgwMEA2MEh6ICovDQo+Pj4gK8KgwqDCoCB7NzEwMDAswqAgMTI4MCwgODAwLMKgIDYw LCAyMCwgNzEswqAgNX0swqDCoCAvKiAxMjgweDgwMEA2MEh6ICovDQo+Pj4gKw0KPj4+ICvC oMKgwqAgezc0MjUwLMKgIDEyODAsIDcyMCzCoCA2MCwgMjIsIDQ5LMKgIDN9LMKgwqAgLyog MTI4MHg3MjBANjBIeiAqLw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIC8qIDEyODB4NzIwQDUwSHogKi8NCj4+PiArDQo+Pj4gK8KgwqDC oCB7Nzg3NTAswqAgMTAyNCwgNzY4LMKgIDc1LCAxNiwgNjMswqAgNX0swqDCoCAvKiAxMDI0 eDc2OEA3NUh6ICovDQo+Pj4gK8KgwqDCoCB7NzUwMDAswqAgMTAyNCwgNzY4LMKgIDcwLCAy OSwgODcswqAgNH0swqDCoCAvKiAxMDI0eDc2OEA3MEh6ICovDQo+Pj4gK8KgwqDCoCB7NjUw MDAswqAgMTAyNCwgNzY4LMKgIDYwLCAyMCwgMzkswqAgM30swqDCoCAvKiAxMDI0eDc2OEA2 MEh6ICovDQo+Pj4gKw0KPj4+ICvCoMKgwqAgezUxMjAwLMKgIDEwMjQsIDYwMCzCoCA2MCwg MjUsIDY0LMKgIDV9LMKgwqAgLyogMTAyNHg2MDBANjBIeiAqLw0KPj4+ICsNCj4+PiArwqDC oMKgIHs1NzI4NCzCoCA4MzIswqAgNjI0LMKgIDc1LCAyNCwgNTUswqAgNH0swqDCoCAvKiA4 MzJ4NjI0QDc1SHogKi8NCj4+PiArwqDCoMKgIHs0OTUwMCzCoCA4MDAswqAgNjAwLMKgIDc1 LCA0MCwgOTkswqAgNX0swqDCoCAvKiA4MDB4NjAwQDc1SHogKi8NCj4+PiArwqDCoMKgIHs1 MDAwMCzCoCA4MDAswqAgNjAwLMKgIDcyLCA0NCwgODgswqAgNH0swqDCoCAvKiA4MDB4NjAw QDcySHogKi8NCj4+PiArwqDCoMKgIHs0MDAwMCzCoCA4MDAswqAgNjAwLMKgIDYwLCAzMCwg MzYswqAgM30swqDCoCAvKiA4MDB4NjAwQDYwSHogKi8NCj4+PiArwqDCoMKgIHszNjAwMCzC oCA4MDAswqAgNjAwLMKgIDU2LCA1MCwgNzIswqAgNH0swqDCoCAvKiA4MDB4NjAwQDU2SHog Ki8NCj4+PiArwqDCoMKgIHszMTUwMCzCoCA2NDAswqAgNDgwLMKgIDc1LCA0MCwgNjMswqAg NX0swqDCoCAvKiA2NDB4NDgwQDc1SHogKi8NCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiA2NDB4NDgwQDczSHogKi8NCj4+PiArDQo+ Pj4gK8KgwqDCoCB7MzAyNDAswqAgNjQwLMKgIDQ4MCzCoCA2NywgNjIsIDc1LMKgIDR9LMKg wqAgLyogNjQweDQ4MEA2N0h6ICovDQo+Pj4gK8KgwqDCoCB7MjcwMDAswqAgNzIwLMKgIDU3 NizCoCA1MCwgNTAsIDU0LMKgIDR9LMKgwqAgLyogNzIweDU3NkA2MEh6ICovDQo+Pj4gK8Kg wqDCoCB7MjUxNzUswqAgNjQwLMKgIDQ4MCzCoCA2MCwgODUsIDEwNywgNX0swqDCoCAvKiA2 NDB4NDgwQDYwSHogKi8NCj4+PiArwqDCoMKgIHsyNTIwMCzCoCA2NDAswqAgNDgwLMKgIDYw LCA1MCwgNjMswqAgNX0swqDCoCAvKiA2NDB4NDgwQDYwSHogKi8NCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAvKiA3MjB4NDgwQDYwSHog Ki8NCj4+PiArfTsNCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIGxzZGNfcGl4cGxsX3NldHVw IC0gaW9yZW1hcCB0aGUgZGV2aWNlIGRlcGVuZGVudCBQTEwgcmVnaXN0ZXJzDQo+Pj4gKyAq DQo+Pj4gKyAqIEB0aGlzOiBwb2ludCB0byB0aGUgb2JqZWN0IHdoZXJlIHRoaXMgZnVuY3Rp b24gaXMgY2FsbGVkIGZyb20NCj4+PiArICovDQo+Pj4gK3N0YXRpYyBpbnQgbHNkY19waXhw bGxfc2V0dXAoc3RydWN0IGxzZGNfcGxsICogY29uc3QgdGhpcykNCj4+PiArew0KPj4+ICvC oMKgwqAgdGhpcy0+bW1pbyA9IGlvcmVtYXAodGhpcy0+cmVnX2Jhc2UsIHRoaXMtPnJlZ19z aXplKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+ PiArLyoNCj4+PiArICogRmluZCBhIHNldCBvZiBwbGwgcGFyYW1ldGVycyAodG8gZ2VuZXJh dGUgcGl4ZWwgY2xvY2spIGZyb20gYSBzdGF0aWMNCj4+PiArICogbG9jYWwgdGFibGUsIHdo aWNoIGF2b2lkIHRvIGNvbXB1dGUgdGhlIHBsbCBwYXJhbWV0ZXIgZWFjaHRpbWUgYQ0KPj4+ ICsgKiBtb2Rlc2V0IGlzIHRyaWdnZXJlZC4NCj4+PiArICoNCj4+PiArICogQHRoaXM6IHBv aW50IHRvIHRoZSBvYmplY3Qgd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQgZnJvbQ0K Pj4+ICsgKiBAY2xvY2s6IHRoZSBkZXNpcmVkIG91dHB1dCBwaXhlbCBjbG9jaywgdGhlIHVu aXQgaXMga0h6DQo+Pj4gKyAqIEBwb3V0OiBwb2ludCB0byB3aGVyZSB0aGUgcGFyYW1ldGVy cyB0byBzdG9yZSBpZiBmb3VuZA0KPj4+ICsgKg0KPj4+ICsgKsKgIFJldHVybiB0cnVlIGlm IGhpdCwgb3RoZXJ3aXNlIHJldHVybiBmYWxzZS4NCj4+PiArICovDQo+Pj4gK3N0YXRpYyBi b29sIGxzZGNfcGl4cGxsX2ZpbmQoc3RydWN0IGxzZGNfcGxsICogY29uc3QgdGhpcywNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGNsb2Nr LA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbHNkY19w bGxfcGFybXMgKiBjb25zdCBwb3V0KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBp bnQgbnVtID0gQVJSQVlfU0laRShwbGxfcGFyYW1fdGFibGUpOw0KPj4+ICvCoMKgwqAgdW5z aWduZWQgaW50IGk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZm9yIChpID0gMDsgaSA8IG51bTsg aSsrKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChjbG9jayAhPSBwbGxfcGFyYW1fdGFi bGVbaV0uY2xvY2spDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+ Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBwb3V0LT5kaXZfcmVmID0gcGxsX3BhcmFtX3Rh YmxlW2ldLmRpdl9yZWY7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHBvdXQtPmxvb3BjwqDCoCA9 IHBsbF9wYXJhbV90YWJsZVtpXS5sb29wYzsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcG91dC0+ ZGl2X291dCA9IHBsbF9wYXJhbV90YWJsZVtpXS5kaXZfb3V0Ow0KPj4+ICsNCj4+PiArwqDC oMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7DQo+Pj4gK8KgwqDCoCB9DQo+Pj4gKw0KPj4+ICvC oMKgwqAgZHJtX2RiZyh0aGlzLT5kZGV2LCAicGl4ZWwgY2xvY2sgJXU6IG1pc3NcbiIsIGNs b2NrKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4gZmFsc2U7DQo+Pj4gK30NCj4+PiAr DQo+Pj4gKy8qDQo+Pj4gKyAqIEZpbmQgYSBzZXQgb2YgcGxsIHBhcmFtZXRlcnMgd2hpY2gg aGF2ZSBtaW5pbWFsIGRpZmZlcmVuY2Ugd2l0aCANCj4+PiB0aGUgZGVzaXJlZA0KPj4+ICsg KiBwaXhlbCBjbG9jayBmcmVxdWVuY3kuIEl0IGRvZXMgdGhhdCBieSBjb21wdXRpbmcgYWxs IG9mIHRoZSBwb3NzaWJsZQ0KPj4+ICsgKiBjb21iaW5hdGlvbi4gQ29tcHV0ZSB0aGUgZGlm ZiBhbmQgZmluZCB0aGUgY29tYmluYXRpb24gd2l0aCANCj4+PiBtaW5pbWFsIGRpZmYuDQo+ Pj4gKyAqDQo+Pj4gKyAqwqAgY2xvY2tfb3V0ID0gcmVmY2xrIC8gZGl2X3JlZiAqIGxvb3Bj IC8gZGl2X291dA0KPj4+ICsgKg0KPj4+ICsgKsKgIHJlZmNsayBpcyBkZXRlcm1pbmVkIGJ5 IHRoZSBvc2NpbGxhdG9yIG1vdW50ZWQgYm9hcmQoSGVyZSBpcyANCj4+PiAxMDBNSHogaW4N Cj4+PiArICrCoCBhbG1vc3QgYWxsIGNhc2UpDQo+Pj4gKyAqDQo+Pj4gKyAqIEB0aGlzOiBw b2ludCB0byB0aGUgb2JqZWN0IGZyb20gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQN Cj4+PiArICogQGNsb2NrX2toejogdGhlIGRlc2lyZWQgb3V0cHV0IHBpeGVsIGNsb2NrLCB0 aGUgdW5pdCBpcyBrSHoNCj4+PiArICogQHBvdXQ6IHBvaW50IHRvIHRoZSBvdXQgc3RydWN0 IG9mIGxzZGNfcGxsX3Bhcm1zDQo+Pj4gKyAqDQo+Pj4gKyAqwqAgUmV0dXJuIHRydWUgaWYg YSBwYXJhbWV0ZXIgaXMgZm91bmQsIG90aGVyd2lzZSByZXR1cm4gZmFsc2UNCj4+PiArICov DQo+Pj4gK3N0YXRpYyBib29sIGxzZGNfcGl4cGxsX2NvbXB1dGUoc3RydWN0IGxzZGNfcGxs ICogY29uc3QgdGhpcywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVu c2lnbmVkIGludCBjbG9ja19raHosDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgKnBvdXQpDQo+Pj4gK3sNCj4+PiArwqDCoMKg IHVuc2lnbmVkIGludCByZWZjbGsgPSB0aGlzLT5yZWZfY2xvY2s7DQo+Pj4gK8KgwqDCoCBj b25zdCB1bnNpZ25lZCBpbnQgdG9sZXJhbmNlID0gMTAwMDsNCj4+PiArwqDCoMKgIHVuc2ln bmVkIGludCBtaW4gPSB0b2xlcmFuY2U7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgZGl2 X291dCwgbG9vcGMsIGRpdl9yZWY7DQo+Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgY29tcHV0 ZWQ7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgaWYgKGxzZGNfcGl4cGxsX2ZpbmQodGhpcywgY2xv Y2tfa2h6LCBwb3V0KSkNCj4+PiArwqDCoMKgwqDCoMKgwqAgcmV0dXJuIHRydWU7DQo+Pj4g Kw0KPj4+ICvCoMKgwqAgZm9yIChkaXZfb3V0ID0gNjsgZGl2X291dCA8IDY0OyBkaXZfb3V0 KyspIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZm9yIChkaXZfcmVmID0gMzsgZGl2X3JlZiA8 IDY7IGRpdl9yZWYrKykgew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGZvciAobG9v cGMgPSA2OyBsb29wYyA8IDE2MTsgbG9vcGMrKykgew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaW50IGRpZmY7DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgaWYgKGxvb3BjIDwgMTIgKiBkaXZfcmVmKQ0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBjb250aW51ZTsNCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChsb29wYyA+IDMyICogZGl2X3JlZikNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29udGludWU7DQo+ Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgY29tcHV0ZWQgPSBy ZWZjbGsgKiBsb29wYyAvIGRpdl9yZWYgLyBkaXZfb3V0Ow0KPj4+ICsNCj4+PiArwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIGlmIChjbG9ja19raHogPiBjb21wdXRlZCkNCj4+ PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgZGlmZiA9IGNsb2Nr X2toeiAtIGNvbXB1dGVkOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg ZWxzZSBpZiAoY2xvY2tfa2h6IDwgY29tcHV0ZWQpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIGRpZmYgPSBjb21wdXRlZCAtIGNsb2NrX2toejsNCj4+ PiArDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAoZGlmZiA8IG1p bikgew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBtaW4g PSBkaWZmOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBw b3V0LT5kaXZfcmVmID0gZGl2X3JlZjsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgcG91dC0+ZGl2X291dCA9IGRpdl9vdXQ7DQo+Pj4gK8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmxvb3BjID0gbG9vcGM7DQo+ Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBpZiAo ZGlmZiA9PSAwKQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHJldHVybiB0cnVlOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgfQ0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIH0NCj4+PiArwqDCoMKgwqDC oMKgwqAgfQ0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiBtaW4g PCB0b2xlcmFuY2U7DQo+Pj4gK30NCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIFVwZGF0ZSB0 aGUgcGxsIHBhcmFtZXRlcnMgdG8gaGFyZHdhcmUsIHRhcmdldCB0byB0aGUgcGl4cGxsIGlu IA0KPj4+IGxzN2ExMDAwDQo+Pj4gKyAqDQo+Pj4gKyAqIEB0aGlzOiBwb2ludCB0byB0aGUg b2JqZWN0IGZyb20gd2hpY2ggdGhpcyBmdW5jdGlvbiBpcyBjYWxsZWQNCj4+PiArICogQHBp bjogcG9pbnQgdG8gdGhlIHN0cnVjdCBvZiBsc2RjX3BsbF9wYXJtcyBwYXNzZWQgaW4NCj4+ PiArICoNCj4+PiArICogcmV0dXJuIDAgaWYgc3VjY2Vzc2Z1bC4NCj4+PiArICovDQo+Pj4g K3N0YXRpYyBpbnQgbHM3YTEwMDBfcGl4cGxsX3BhcmFtX3VwZGF0ZShzdHJ1Y3QgbHNkY19w bGwgKiBjb25zdCB0aGlzLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgY29uc3QgKnBpbikNCj4+PiArew0KPj4+ ICvCoMKgwqAgdm9pZCBfX2lvbWVtICpyZWcgPSB0aGlzLT5tbWlvOw0KPj4+ICvCoMKgwqAg dW5zaWduZWQgaW50IGNvdW50ZXIgPSAwOw0KPj4+ICvCoMKgwqAgYm9vbCBsb2NrZWQ7DQo+ Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIEJ5cGFzcyB0aGUg c29mdHdhcmUgY29uZmlndXJlZCBQTEwsIHVzaW5nIHJlZmNsayBkaXJlY3RseSAqLw0KPj4+ ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnICsgMHg0KTsNCj4+PiArwqDCoMKgIHZhbCAmPSB+ KDEgPDwgOCk7DQo+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcgKyAweDQpOw0KPj4+ICsN Cj4+PiArwqDCoMKgIC8qIFBvd2VyZG93biB0aGUgUExMICovDQo+Pj4gK8KgwqDCoCB2YWwg PSByZWFkbChyZWcgKyAweDQpOw0KPj4+ICvCoMKgwqAgdmFsIHw9ICgxIDw8IDEzKTsNCj4+ PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyArIDB4NCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAg LyogQ2xlYXIgdGhlIHBsbCBwYXJhbWV0ZXJzICovDQo+Pj4gK8KgwqDCoCB2YWwgPSByZWFk bChyZWcgKyAweDQpOw0KPj4+ICvCoMKgwqAgdmFsICY9IH4oMSA8PCAxMSk7DQo+Pj4gK8Kg wqDCoCB3cml0ZWwodmFsLCByZWcgKyAweDQpOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIGNs ZWFyIG9sZCB2YWx1ZSAmIGNvbmZpZyBuZXcgdmFsdWUgKi8NCj4+PiArwqDCoMKgIHZhbCA9 IHJlYWRsKHJlZyArIDB4MDQpOw0KPj4+ICvCoMKgwqAgdmFsICY9IH4weDdGOw0KPj4+ICvC oMKgwqAgdmFsIHw9IHBpbi0+ZGl2X3JlZjvCoMKgwqDCoMKgwqDCoCAvKiBkaXZfcmVmICov DQo+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcgKyAweDQpOw0KPj4+ICsNCj4+PiArwqDC oMKgIHZhbCA9IHJlYWRsKHJlZyk7DQo+Pj4gK8KgwqDCoCB2YWwgJj0gfjB4N2Y7DQo+Pj4g K8KgwqDCoCB2YWwgfD0gcGluLT5kaXZfb3V0O8KgwqDCoMKgwqDCoMKgIC8qIGRpdl9vdXQg Ki8NCj4+PiArDQo+Pj4gK8KgwqDCoCB2YWwgJj0gfigweDFmZiA8PCAyMSk7DQo+Pj4gK8Kg wqDCoCB2YWwgfD0gcGluLT5sb29wYyA8PCAyMTvCoMKgwqAgLyogbG9vcGMgKi8NCj4+PiAr wqDCoMKgIHdyaXRlbCh2YWwsIHJlZyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyogU2V0IHRo ZSBwbGwgdGhlIHBhcmFtZXRlcnMgKi8NCj4+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyAr IDB4NCk7DQo+Pj4gK8KgwqDCoCB2YWwgfD0gKDEgPDwgMTEpOw0KPj4+ICvCoMKgwqAgd3Jp dGVsKHZhbCwgcmVnICsgMHg0KTsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBQb3dlcnVwIHRo ZSBQTEwgKi8NCj4+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyArIDB4NCk7DQo+Pj4gK8Kg wqDCoCB2YWwgJj0gfigxIDw8IDEzKTsNCj4+PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyAr IDB4NCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyogV2FpdCB0aGUgUExMIGxvY2sgKi8NCj4+ PiArwqDCoMKgIGRvIHsNCj4+PiArwqDCoMKgwqDCoMKgwqAgdmFsID0gcmVhZGwocmVnICsg MHg0KTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgbG9ja2VkID0gdmFsICYgMHg4MDsNCj4+PiAr wqDCoMKgwqDCoMKgwqAgY291bnRlcisrOw0KPj4+ICvCoMKgwqAgfSB3aGlsZSAoIWxvY2tl ZCAmJiAoY291bnRlciA8IDIwMDApKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1fZGJnKHRo aXMtPmRkZXYsICIldSBsb29wIHdhaXRlZFxuIiwgY291bnRlcik7DQo+Pj4gKw0KPj4+ICvC oMKgwqAgLyogU3dpdGNoIHRvIHRoZSBzb2Z0d2FyZSBjb25maWd1cmVkIHBsbCAqLw0KPj4+ ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnICsgMHg0KTsNCj4+PiArwqDCoMKgIHZhbCB8PSAo MVVMIDw8IDgpOw0KPj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnICsgMHg0KTsNCj4+PiAr DQo+Pj4gK8KgwqDCoCByZXR1cm4gMDsNCj4+PiArfQ0KPj4+ICsNCj4+PiArLyoNCj4+PiAr ICogVXBkYXRlIHRoZSBwbGwgcGFyYW1ldGVycyB0byBoYXJkd2FyZSwgdGFyZ2V0IHRvIHRo ZSBwaXhwbGwgaW4gDQo+Pj4gbHMyazEwMDANCj4+PiArICoNCj4+PiArICogQHRoaXM6IHBv aW50IHRvIHRoZSBvYmplY3QgZnJvbSB3aGljaCB0aGlzIGZ1bmN0aW9uIGlzIGNhbGxlZA0K Pj4+ICsgKiBAcGluOiBwb2ludCB0byB0aGUgc3RydWN0IG9mIGxzZGNfcGxsX3Bhcm1zIHBh c3NlZCBpbg0KPj4+ICsgKg0KPj4+ICsgKiByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLg0KPj4+ ICsgKi8NCj4+PiArc3RhdGljIGludCBsczJrMTAwMF9waXhwbGxfcGFyYW1fdXBkYXRlKHN0 cnVjdCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBjb25zdCAqcGluKQ0K Pj4+ICt7DQo+Pj4gK8KgwqDCoCB2b2lkIF9faW9tZW0gKnJlZyA9IHRoaXMtPm1taW87DQo+ Pj4gK8KgwqDCoCB1bnNpZ25lZCBpbnQgY291bnRlciA9IDA7DQo+Pj4gK8KgwqDCoCBib29s IGxvY2tlZCA9IGZhbHNlOw0KPj4+ICvCoMKgwqAgdTMyIHZhbDsNCj4+PiArDQo+Pj4gK8Kg wqDCoCB2YWwgPSByZWFkbChyZWcpOw0KPj4+ICvCoMKgwqAgLyogQnlwYXNzIHRoZSBzb2Z0 d2FyZSBjb25maWd1cmVkIFBMTCwgdXNpbmcgcmVmY2xrIGRpcmVjdGx5ICovDQo+Pj4gK8Kg wqDCoCB2YWwgJj0gfigxIDw8IDApOw0KPj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnKTsN Cj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBQb3dlcmRvd24gdGhlIFBMTCAqLw0KPj4+ICvCoMKg wqAgdmFsIHw9ICgxIDw8IDE5KTsNCj4+PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyk7DQo+ Pj4gKw0KPj4+ICvCoMKgwqAgLyogQWxsb3cgdGhlIHNvZnR3YXJlIGNvbmZpZ3VyYXRpb24g Ki8NCj4+PiArwqDCoMKgIHZhbCAmPSB+KDEgPDwgMik7DQo+Pj4gK8KgwqDCoCB3cml0ZWwo dmFsLCByZWcpOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIGFsbG93IEwxIFBMTCBsb2NrICov DQo+Pj4gK8KgwqDCoCB2YWwgPSAoMUwgPDwgNykgfCAoM0wgPDwgMTApOw0KPj4+ICvCoMKg wqAgd3JpdGVsKHZhbCwgcmVnKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBjbGVhciBkaXZf cmVmIGJpdCBmaWVsZCAqLw0KPj4+ICvCoMKgwqAgdmFsICY9IH4oMHgzZiA8PCAyNik7DQo+ Pj4gK8KgwqDCoCAvKiBzZXQgZGl2X3JlZiBiaXQgZmllbGQgKi8NCj4+PiArwqDCoMKgIHZh bCB8PSBwaW4tPmRpdl9yZWYgPDwgMjY7DQo+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcp Ow0KPj4+ICsNCj4+PiArwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyArIDQpOw0KPj4+ICvCoMKg wqAgLyogY2xlYXIgbG9vcGMgYml0IGZpZWxkICovDQo+Pj4gK8KgwqDCoCB2YWwgJj0gfjB4 MGZmZjsNCj4+PiArwqDCoMKgIC8qIHNldCBsb29wYyBiaXQgZmllbGQgKi8NCj4+PiArwqDC oMKgIHZhbCB8PSBwaW4tPmxvb3BjOw0KPj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnICsg NCk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyogc2V0IGRpdl9vdXQgKi8NCj4+PiArwqDCoMKg IHdyaXRlbChwaW4tPmRpdl9vdXQsIHJlZyArIDgpOw0KPj4+ICsNCj4+PiArwqDCoMKgIHZh bCA9IHJlYWRsKHJlZyk7DQo+Pj4gK8KgwqDCoCAvKiB1c2UgdGhpcyBwYXJtcyBjb25maWd1 cmVkIGp1c3Qgbm93ICovDQo+Pj4gK8KgwqDCoCB2YWwgfD0gKDEgPDwgMik7DQo+Pj4gK8Kg wqDCoCAvKiBwb3dlcnVwIHRoZSBQTEwgKi8NCj4+PiArwqDCoMKgIHZhbCAmPSB+KDEgPDwg MTkpOw0KPj4+ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnKTsNCj4+PiArDQo+Pj4gK8KgwqDC oCAvKiB3YWl0IHBsbCBzZXR1cCBhbmQgbG9ja2VkICovDQo+Pj4gK8KgwqDCoCBkbyB7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIHZhbCA9IHJlYWRsKHJlZyk7DQo+Pj4gK8KgwqDCoMKgwqDC oMKgIGxvY2tlZCA9IHZhbCAmIDB4MTAwMDA7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGNvdW50 ZXIrKzsNCj4+PiArwqDCoMKgIH0gd2hpbGUgKCFsb2NrZWQgJiYgKGNvdW50ZXIgPCAyMDAw KSk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgZHJtX2RiZyh0aGlzLT5kZGV2LCAiJXUgbG9vcCB3 YWl0ZWRcbiIsIGNvdW50ZXIpOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIFN3aXRjaCB0byBz b2Z0d2FyZSBjb25maWd1cmVkIFBMTCBpbnN0ZWFkIG9mIHJlZmNsayAqLw0KPj4+ICvCoMKg wqAgdmFsIHw9IDE7DQo+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcpOw0KPj4+ICsNCj4+ PiArwqDCoMKgIHJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKiBV cGRhdGUgdGhlIHBsbCBwYXJhbWV0ZXJzIHRvIGhhcmR3YXJlLCB0YXJnZXQgdG8gdGhlIHBp eHBsbCBpbiANCj4+PiBsczJrMDUwMA0KPj4+ICsgKg0KPj4+ICsgKiBAdGhpczogcG9pbnQg dG8gdGhlIG9iamVjdCB3aGljaCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24NCj4+PiArICogQHBh cmFtOiBwb2ludGVyIHRvIHdoZXJlIHRoZSBwYXJhbWV0ZXJzIHBhc3NlZCBpbg0KPj4+ICsg Kg0KPj4+ICsgKiByZXR1cm4gMCBpZiBzdWNjZXNzZnVsLg0KPj4+ICsgKi8NCj4+PiArc3Rh dGljIGludCBsczJrMDUwMF9waXhwbGxfcGFyYW1fdXBkYXRlKHN0cnVjdCBsc2RjX3BsbCAq IGNvbnN0IHRoaXMsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBjb25zdCAqcGFyYW0pDQo+Pj4gK3sNCj4+PiAr wqDCoMKgIHZvaWQgX19pb21lbSAqcmVnID0gdGhpcy0+bW1pbzsNCj4+PiArwqDCoMKgIHVu c2lnbmVkIGludCBjb3VudGVyID0gMDsNCj4+PiArwqDCoMKgIGJvb2wgbG9ja2VkID0gZmFs c2U7DQo+Pj4gK8KgwqDCoCB1MzIgdmFsOw0KPj4+ICsNCj4+PiArwqDCoMKgIC8qIEJ5cGFz cyB0aGUgc29mdHdhcmUgY29uZmlndXJlZCBQTEwsIHVzaW5nIHJlZmNsayBkaXJlY3RseSAq Lw0KPj4+ICvCoMKgwqAgdmFsID0gcmVhZGwocmVnKTsNCj4+PiArwqDCoMKgIHZhbCAmPSB+ KDEgPDwgMCk7DQo+Pj4gK8KgwqDCoCB3cml0ZWwodmFsLCByZWcpOw0KPj4+ICsNCj4+PiAr wqDCoMKgIC8qIFBvd2VyZG93biB0aGUgUExMICovDQo+Pj4gK8KgwqDCoCB2YWwgPSByZWFk bChyZWcpOw0KPj4+ICvCoMKgwqAgdmFsIHw9ICgxIDw8IDUpOw0KPj4+ICvCoMKgwqAgd3Jp dGVsKHZhbCwgcmVnKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBBbGxvdyB0aGUgc29mdHdh cmUgY29uZmlndXJhdGlvbiAqLw0KPj4+ICvCoMKgwqAgdmFsIHw9ICgxIDw8IDMpOw0KPj4+ ICvCoMKgwqAgd3JpdGVsKHZhbCwgcmVnKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBVcGRh dGUgdGhlIHBsbCBwYXJhbXMgKi8NCj4+PiArwqDCoMKgIHZhbCA9IChwYXJhbS0+ZGl2X291 dCA8PCAyNCkgfA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKHBhcmFtLT5sb29wYyA8PCAx NikgfA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqAgKHBhcmFtLT5kaXZfcmVmIDw8IDgpOw0K Pj4+ICsNCj4+PiArwqDCoMKgIHdyaXRlbCh2YWwsIHJlZyk7DQo+Pj4gKw0KPj4+ICvCoMKg wqAgLyogUG93ZXJ1cCB0aGUgUExMICovDQo+Pj4gK8KgwqDCoCB2YWwgPSByZWFkbChyZWcp Ow0KPj4+ICvCoMKgwqAgdmFsICY9IH4oMSA8PCA1KTsNCj4+PiArwqDCoMKgIHdyaXRlbCh2 YWwsIHJlZyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgLyogd2FpdCBwbGwgc2V0dXAgYW5kIGxv Y2tlZCAqLw0KPj4+ICvCoMKgwqAgZG8gew0KPj4+ICvCoMKgwqDCoMKgwqDCoCB2YWwgPSBy ZWFkbChyZWcpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBsb2NrZWQgPSB2YWwgJiAweDgwOw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCBjb3VudGVyKys7DQo+Pj4gK8KgwqDCoCB9IHdoaWxlICgh bG9ja2VkICYmIChjb3VudGVyIDwgMTAwMDApKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCBkcm1f ZGJnKHRoaXMtPmRkZXYsICIldSBsb29wIHdhaXRlZFxuIiwgY291bnRlcik7DQo+Pj4gKw0K Pj4+ICvCoMKgwqAgLyogU3dpdGNoIHRvIHNvZnR3YXJlIGNvbmZpZ3VyZWQgUExMIGluc3Rl YWQgb2YgcmVmY2xrICovDQo+Pj4gK8KgwqDCoCB3cml0ZWwoKHZhbCB8IDEpLCByZWcpOw0K Pj4+ICsNCj4+PiArwqDCoMKgIHJldHVybiAwOw0KPj4+ICt9DQo+Pj4gKw0KPj4+ICtzdGF0 aWMgdW5zaWduZWQgaW50IGxzZGNfZ2V0X2Nsb2NrX3JhdGUoc3RydWN0IGxzZGNfcGxsICog Y29uc3QgdGhpcywNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgc3RydWN0IGxzZGNfcGxsX3Bhcm1zICpwb3V0KQ0KPj4+ICt7DQo+Pj4gK8KgwqDCoCBz dHJ1Y3QgZHJtX2RldmljZSAqZGRldiA9IHRoaXMtPmRkZXY7DQo+Pj4gK8KgwqDCoCBzdHJ1 Y3QgbHNkY19kZXZpY2UgKmxkZXYgPSB0b19sc2RjKGRkZXYpOw0KPj4+ICvCoMKgwqAgY29u c3Qgc3RydWN0IGxzZGNfZGVzYyAqIGNvbnN0IGRlc2NwID0gbGRldi0+ZGVzY3A7DQo+Pj4g K8KgwqDCoCB1bnNpZ25lZCBpbnQgb3V0Ow0KPj4+ICvCoMKgwqAgdW5pb24gbHNkY19waXhw bGxfYml0bWFwIHBhcm1zOw0KPj4+ICsNCj4+PiArwqDCoMKgIGlmIChkZXNjcC0+Y2hpcCA9 PSBDSElQX0xTN0ExMDAwIHx8IGRlc2NwLT5jaGlwID09IENISVBfTFM3QTIwMDApIHsNCj4+ PiArwqDCoMKgwqDCoMKgwqAgc3RydWN0IGxzN2ExMDAwX3BpeHBsbF9iaXRtYXAgKm9iaiA9 ICZwYXJtcy5sczdhMTAwMDsNCj4+PiArDQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHBhcm1zLmR3 b3JkWzBdID0gcmVhZGwodGhpcy0+bW1pbyk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHBhcm1z LmR3b3JkWzFdID0gcmVhZGwodGhpcy0+bW1pbyArIDQpOw0KPj4+ICvCoMKgwqDCoMKgwqDC oCBvdXQgPSB0aGlzLT5yZWZfY2xvY2sgLyBvYmotPmRpdl9yZWYgKiBvYmotPmxvb3BjIC8g DQo+Pj4gb2JqLT5kaXZfb3V0Ow0KPj4+ICvCoMKgwqDCoMKgwqDCoCBpZiAocG91dCkgew0K Pj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmRpdl9yZWYgPSBvYmotPmRpdl9y ZWY7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG91dC0+bG9vcGMgPSBvYmotPmxv b3BjOw0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHBvdXQtPmRpdl9vdXQgPSBvYmot PmRpdl9vdXQ7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIH0NCj4+PiArwqDCoMKgIH0gZWxzZSBp ZiAoZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzJLMTAwMCkgew0KPj4+ICvCoMKgwqDCoMKgwqDC oCBzdHJ1Y3QgbHMyazEwMDBfcGl4cGxsX2JpdG1hcCAqb2JqID0gJnBhcm1zLmxzMmsxMDAw Ow0KPj4+ICsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcGFybXMuZHdvcmRbMF0gPSByZWFkbCh0 aGlzLT5tbWlvKTsNCj4+PiArwqDCoMKgwqDCoMKgwqAgcGFybXMuZHdvcmRbMV0gPSByZWFk bCh0aGlzLT5tbWlvICsgNCk7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHBhcm1zLmR3b3JkWzJd ID0gcmVhZGwodGhpcy0+bW1pbyArIDgpOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBwYXJtcy5k d29yZFszXSA9IHJlYWRsKHRoaXMtPm1taW8gKyAxMik7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IG91dCA9IHRoaXMtPnJlZl9jbG9jayAvIG9iai0+ZGl2X3JlZiAqIG9iai0+bG9vcGMgLyAN Cj4+PiBvYmotPmRpdl9vdXQ7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGlmIChwb3V0KSB7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG91dC0+ZGl2X3JlZiA9IG9iai0+ZGl2X3Jl ZjsNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBwb3V0LT5sb29wYyA9IG9iai0+bG9v cGM7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgcG91dC0+ZGl2X291dCA9IG9iai0+ ZGl2X291dDsNCj4+PiArwqDCoMKgwqDCoMKgwqAgfQ0KPj4+ICvCoMKgwqAgfSBlbHNlIGlm IChkZXNjcC0+Y2hpcCA9PSBDSElQX0xTMkswNTAwKSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg IHN0cnVjdCBsczJrMDUwMF9waXhwbGxfYml0bWFwICpvYmogPSAmcGFybXMubHMyazA1MDA7 DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBwYXJtcy5kd29yZFswXSA9IHJlYWRsKHRo aXMtPm1taW8pOw0KPj4+ICvCoMKgwqDCoMKgwqDCoCBvdXQgPSB0aGlzLT5yZWZfY2xvY2sg LyBvYmotPmRpdl9yZWYgKiBvYmotPmxvb3BjIC8gDQo+Pj4gb2JqLT5kaXZfb3V0Ow0KPj4+ ICvCoMKgwqDCoMKgwqDCoCBpZiAocG91dCkgew0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgIHBvdXQtPmRpdl9yZWYgPSBvYmotPmRpdl9yZWY7DQo+Pj4gK8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgcG91dC0+bG9vcGMgPSBvYmotPmxvb3BjOw0KPj4+ICvCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIHBvdXQtPmRpdl9vdXQgPSBvYmotPmRpdl9vdXQ7DQo+Pj4gK8KgwqDCoMKg wqDCoMKgIH0NCj4+PiArwqDCoMKgIH0gZWxzZSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRy bV9lcnIoZGRldiwgInVua25vd24gY2hpcCwgdGhlIGRyaXZlciBuZWVkIHVwZGF0ZVxuIik7 DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAwOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ICsN Cj4+PiArwqDCoMKgIHJldHVybiBvdXQ7DQo+Pj4gK30NCj4+PiArDQo+Pj4gK3N0YXRpYyBj b25zdCBzdHJ1Y3QgbHNkY19waXhwbGxfZnVuY3MgbHM3YTEwMDBfcGl4cGxsX2Z1bmNzID0g ew0KPj4+ICvCoMKgwqAgLnNldHVwID0gbHNkY19waXhwbGxfc2V0dXAsDQo+Pj4gK8KgwqDC oCAuY29tcHV0ZSA9IGxzZGNfcGl4cGxsX2NvbXB1dGUsDQo+Pj4gK8KgwqDCoCAudXBkYXRl ID0gbHM3YTEwMDBfcGl4cGxsX3BhcmFtX3VwZGF0ZSwNCj4+PiArwqDCoMKgIC5nZXRfY2xv Y2tfcmF0ZSA9IGxzZGNfZ2V0X2Nsb2NrX3JhdGUsDQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtz dGF0aWMgY29uc3Qgc3RydWN0IGxzZGNfcGl4cGxsX2Z1bmNzIGxzMmsxMDAwX3BpeHBsbF9m dW5jcyA9IHsNCj4+PiArwqDCoMKgIC5zZXR1cCA9IGxzZGNfcGl4cGxsX3NldHVwLA0KPj4+ ICvCoMKgwqAgLmNvbXB1dGUgPSBsc2RjX3BpeHBsbF9jb21wdXRlLA0KPj4+ICvCoMKgwqAg LnVwZGF0ZSA9IGxzMmsxMDAwX3BpeHBsbF9wYXJhbV91cGRhdGUsDQo+Pj4gK8KgwqDCoCAu Z2V0X2Nsb2NrX3JhdGUgPSBsc2RjX2dldF9jbG9ja19yYXRlLA0KPj4+ICt9Ow0KPj4+ICsN Cj4+PiArc3RhdGljIGNvbnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyBsczJrMDUwMF9w aXhwbGxfZnVuY3MgPSB7DQo+Pj4gK8KgwqDCoCAuc2V0dXAgPSBsc2RjX3BpeHBsbF9zZXR1 cCwNCj4+PiArwqDCoMKgIC5jb21wdXRlID0gbHNkY19waXhwbGxfY29tcHV0ZSwNCj4+PiAr wqDCoMKgIC51cGRhdGUgPSBsczJrMDUwMF9waXhwbGxfcGFyYW1fdXBkYXRlLA0KPj4+ICvC oMKgwqAgLmdldF9jbG9ja19yYXRlID0gbHNkY19nZXRfY2xvY2tfcmF0ZSwNCj4+PiArfTsN Cj4+PiArDQo+Pj4gK2ludCBsc2RjX3BpeHBsbF9pbml0KHN0cnVjdCBsc2RjX3BsbCAqIGNv bnN0IHRoaXMsDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2Rl dmljZSAqZGRldiwNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGlu dCBpbmRleCkNCj4+PiArew0KPj4+ICvCoMKgwqAgc3RydWN0IGxzZGNfZGV2aWNlICpsZGV2 ID0gdG9fbHNkYyhkZGV2KTsNCj4+PiArwqDCoMKgIGNvbnN0IHN0cnVjdCBsc2RjX2Rlc2Mg KmRlc2NwID0gbGRldi0+ZGVzY3A7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgdGhpcy0+ZGRldiA9 IGRkZXY7DQo+Pj4gK8KgwqDCoCB0aGlzLT5pbmRleCA9IGluZGV4Ow0KPj4+ICvCoMKgwqAg dGhpcy0+cmVmX2Nsb2NrID0gTFNEQ19QTExfUkVGX0NMSzsNCj4+PiArDQo+Pj4gK8KgwqDC oCAvKiBMUzdBMTAwMCBhbmQgTFM3QTIwMDAncyBwaXhwbGwgc2V0dGluZyByZWdpc3RlcnMg aXMgc2FtZSAqLw0KPj4+ICvCoMKgwqAgaWYgKGRlc2NwLT5jaGlwID09IENISVBfTFM3QTIw MDAgfHwgZGVzY3AtPmNoaXAgPT0gQ0hJUF9MUzdBMTAwMCkgew0KPj4+ICvCoMKgwqDCoMKg wqDCoCBpZiAoaW5kZXggPT0gMCkNCj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aGlz LT5yZWdfYmFzZSA9IExTN0ExMDAwX0NGR19SRUdfQkFTRSArIA0KPj4+IExTN0ExMDAwX1BJ WF9QTEwwX1JFRzsNCj4+PiArwqDCoMKgwqDCoMKgwqAgZWxzZSBpZiAoaW5kZXggPT0gMSkN Cj4+PiArwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB0aGlzLT5yZWdfYmFzZSA9IExTN0ExMDAw X0NGR19SRUdfQkFTRSArIA0KPj4+IExTN0ExMDAwX1BJWF9QTEwxX1JFRzsNCj4+PiArwqDC oMKgwqDCoMKgwqAgdGhpcy0+cmVnX3NpemUgPSA4Ow0KPj4+ICvCoMKgwqDCoMKgwqDCoCB0 aGlzLT5mdW5jcyA9ICZsczdhMTAwMF9waXhwbGxfZnVuY3M7DQo+Pj4gK8KgwqDCoCB9IGVs c2UgaWYgKGRlc2NwLT5jaGlwID09IENISVBfTFMySzEwMDApIHsNCj4+PiArwqDCoMKgwqDC oMKgwqAgaWYgKGluZGV4ID09IDApDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGhp cy0+cmVnX2Jhc2UgPSBMUzJLMTAwMF9DRkdfUkVHX0JBU0UgKyANCj4+PiBMUzJLMTAwMF9Q SVhfUExMMF9SRUc7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGluZGV4ID09IDEp DQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGhpcy0+cmVnX2Jhc2UgPSBMUzJLMTAw MF9DRkdfUkVHX0JBU0UgKyANCj4+PiBMUzJLMTAwMF9QSVhfUExMMV9SRUc7DQo+Pj4gKw0K Pj4+ICvCoMKgwqDCoMKgwqDCoCB0aGlzLT5yZWdfc2l6ZSA9IDE2Ow0KPj4+ICvCoMKgwqDC oMKgwqDCoCB0aGlzLT5mdW5jcyA9ICZsczJrMTAwMF9waXhwbGxfZnVuY3M7DQo+Pj4gK8Kg wqDCoCB9IGVsc2UgaWYgKGRlc2NwLT5jaGlwID09IENISVBfTFMySzA1MDApIHsNCj4+PiAr wqDCoMKgwqDCoMKgwqAgaWYgKGluZGV4ID09IDApDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDC oMKgwqAgdGhpcy0+cmVnX2Jhc2UgPSBMUzJLMDUwMF9DRkdfUkVHX0JBU0UgKyANCj4+PiBM UzJLMDUwMF9QSVhfUExMMF9SRUc7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGVsc2UgaWYgKGlu ZGV4ID09IDEpDQo+Pj4gK8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgdGhpcy0+cmVnX2Jhc2Ug PSBMUzJLMDUwMF9DRkdfUkVHX0JBU0UgKyANCj4+PiBMUzJLMDUwMF9QSVhfUExMMV9SRUc7 DQo+Pj4gKw0KPj4+ICvCoMKgwqDCoMKgwqDCoCB0aGlzLT5yZWdfc2l6ZSA9IDQ7DQo+Pj4g K8KgwqDCoMKgwqDCoMKgIHRoaXMtPmZ1bmNzID0gJmxzMmswNTAwX3BpeHBsbF9mdW5jczsN Cj4+PiArwqDCoMKgIH0gZWxzZSB7DQo+Pj4gK8KgwqDCoMKgwqDCoMKgIGRybV9lcnIodGhp cy0+ZGRldiwgInVua25vd24gY2hpcCwgdGhlIGRyaXZlciBuZWVkIHVwZGF0ZVxuIik7DQo+ Pj4gK8KgwqDCoMKgwqDCoMKgIHJldHVybiAtRU5PRU5UOw0KPj4+ICvCoMKgwqAgfQ0KPj4+ ICsNCj4+PiArwqDCoMKgIHJldHVybiB0aGlzLT5mdW5jcy0+c2V0dXAodGhpcyk7DQo+Pj4g K30NCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19wbGwuaCAN Cj4+PiBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcGxsLmgNCj4+PiBuZXcgZmlsZSBt b2RlIDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uNTM4NzM5ZjQ2MWYyDQo+Pj4g LS0tIC9kZXYvbnVsbA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNfcGxs LmgNCj4+PiBAQCAtMCwwICsxLDc4IEBADQo+Pj4gKy8qIFNQRFgtTGljZW5zZS1JZGVudGlm aWVyOiBHUEwtMi4wICovDQo+Pj4gKw0KPj4+ICsjaWZuZGVmIF9fTFNEQ19QTExfSF9fDQo+ Pj4gKyNkZWZpbmUgX19MU0RDX1BMTF9IX18NCj4+PiArDQo+Pj4gKyNpbmNsdWRlIDxkcm0v ZHJtX2RldmljZS5oPg0KPj4+ICsNCj4+PiArLyoNCj4+PiArICogTG9vbmdzb24gUGl4ZWwg UExMIGhhcmR3YXJlIHN0cnVjdHVyZQ0KPj4+ICsgKg0KPj4+ICsgKiByZWZjbGs6IHJlZmVy ZW5jZSBmcmVxdWVuY3ksIDEwMCBNSHogZnJvbSBleHRlcm5hbCBvc2NpbGxhdG9yDQo+Pj4g KyAqIG91dGNsazogb3V0cHV0IGZyZXF1ZW5jeSBkZXNpcmVkLg0KPj4+ICsgKg0KPj4+ICsg Kg0KPj4+ICsgKsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgTDHCoMKgwqDCoMKgwqAg RnJlZsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBGdmNvwqDC oMKgwqAgTDINCj4+PiArICogcmVmY2xrwqDCoCArLS0tLS0tLS0tLS0rwqDCoMKgwqDCoCAr LS0tLS0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0tKyBvdXRjbGsNCj4+PiArICogLS0tKy0t LT4gfCBQcmVzY2FsZXIgfCAtLS0+IHwgQ2xvY2sgTXVsdGlwbGllciB8IC0tLT4gfCBkaXZp ZGVyIHwgDQo+Pj4gLS0tLS0tLS0+DQo+Pj4gKyAqwqDCoMKgIHzCoMKgwqDCoCArLS0tLS0t LS0tLS0rwqDCoMKgwqDCoCArLS0tLS0tLS0tLS0tLS0tLS0tKyArLS0tLS0tLS0tK8KgwqDC oMKgIF4NCj4+PiArICrCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIF7CoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgXiBewqDCoMKgwqDCoMKgwqDCoMKg IHwNCj4+PiArICrCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCB8wqDCoMKgwqDCoMKgwqDCoMKgIHwN Cj4+PiArICrCoMKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgIHzCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCB8wqDCoMKgwqDCoMKgwqDCoMKgIHwNCj4+ PiArICrCoMKgwqAgfMKgwqDCoMKgwqDCoMKgIGRpdl9yZWbCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBsb29wYyBkaXZfb3V0wqDCoMKgwqDCoMKgIHwNCj4+PiArICogfCB8 DQo+Pj4gKyAqwqDCoMKgICstLS0gc2VsX291dCAoYnlwYXNzIGFib3ZlIHNvZnR3YXJlIGNv bmZpZ3VyYWJsZSBjbG9jayBpZiBzZXQpIA0KPj4+IC0tLS0rDQo+Pj4gKyAqDQo+Pj4gKyAq wqAgc2VsX291dDogUExMIGNsb2NrIG91dHB1dCBzZWxlY3RvciAoZm9yIGRlYnVnIHB1cnBv c2Ugb25seSkuDQo+Pj4gKyAqDQo+Pj4gKyAqwqAgSWYgc2VsX291dCA9PSAxLCBpdCB3aWxs IHRha2UgcmVmY2xrIGFzIG91dHB1dCBkaXJlY3RseSwNCj4+PiArICrCoCB0aGUgTDEgUHJl c2NhbGVyIGFuZCB0aGUgb3V0IGRpdmlkZXIgd2lsbCBiZSBieXBhc3NlZC4NCj4+PiArICoN Cj4+PiArICrCoCBJZiBzZWxfb3V0ID09IDAsIHRoZW4gb3V0Y2xrID0gcmVmY2xrIC8gZGl2 X3JlZiAqIGxvb3BjIC8gZGl2X291dDsNCj4+PiArICoNCj4+PiArICogUExMIHdvcmtpbmcg cmVxdWlyZW1lbnRzOg0KPj4+ICsgKg0KPj4+ICsgKsKgIDEpIDIwIE1IeiA8PSByZWZjbGsg LyBkaXZfcmVmIDw9IDQwTWh6DQo+Pj4gKyAqwqAgMikgMS4yIEdIeiA8PSByZWZjbGsgL2Rp dl9vdXQgKiBsb29wYyA8PSAzLjIgR2h6DQo+Pj4gKyAqLw0KPj4+ICsNCj4+PiArc3RydWN0 IGxzZGNfcGxsX3Bhcm1zIHsNCj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCBkaXZfcmVmOw0K Pj4+ICvCoMKgwqAgdW5zaWduZWQgaW50IGxvb3BjOw0KPj4+ICvCoMKgwqAgdW5zaWduZWQg aW50IGRpdl9vdXQ7DQo+Pj4gK307DQo+Pj4gKw0KPj4+ICtzdHJ1Y3QgbHNkY19wbGw7DQo+ Pj4gKw0KPj4+ICtzdHJ1Y3QgbHNkY19waXhwbGxfZnVuY3Mgew0KPj4+ICvCoMKgwqAgaW50 ICgqc2V0dXApKHN0cnVjdCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMpOw0KPj4+ICvCoMKgwqAg Ym9vbCAoKmNvbXB1dGUpKHN0cnVjdCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMsDQo+Pj4gK8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqAgdW5zaWduZWQgaW50IGNsb2NrLA0KPj4+ICvCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyAqcG91dCk7DQo+Pj4gK8Kg wqDCoCBpbnQgKCp1cGRhdGUpKHN0cnVjdCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMsDQo+Pj4g K8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIHN0cnVjdCBsc2RjX3BsbF9wYXJtcyBjb25z dCAqcGluKTsNCj4+PiArwqDCoMKgIHVuc2lnbmVkIGludCAoKmdldF9jbG9ja19yYXRlKShz dHJ1Y3QgbHNkY19wbGwgKiBjb25zdCB0aGlzLA0KPj4+ICvCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBzdHJ1Y3QgbHNkY19wbGxfcGFybXMgKnBvdXQp Ow0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArc3RydWN0IGxzZGNfcGxsIHsNCj4+PiArwqDCoMKg IGNvbnN0IHN0cnVjdCBsc2RjX3BpeHBsbF9mdW5jcyAqZnVuY3M7DQo+Pj4gK8KgwqDCoCBz dHJ1Y3QgZHJtX2RldmljZSAqZGRldjsNCj4+PiArwqDCoMKgIHZvaWQgX19pb21lbSAqbW1p bzsNCj4+PiArDQo+Pj4gK8KgwqDCoCAvKiBQTEwgcmVnaXN0ZXIgb2Zmc2V0ICovDQo+Pj4g K8KgwqDCoCB1MzIgcmVnX2Jhc2U7DQo+Pj4gK8KgwqDCoCAvKiBQTEwgcmVnaXN0ZXIgc2l6 ZSBpbiBieXRlcyAqLw0KPj4+ICvCoMKgwqAgdTMyIHJlZ19zaXplOw0KPj4+ICsNCj4+PiAr wqDCoMKgIC8qIDEwMDAwMGtIeiwgZml4ZWQgb24gYWxsIGJvYXJkIGZvdW5kICovDQo+Pj4g K8KgwqDCoCB1bnNpZ25lZCBpbnQgcmVmX2Nsb2NrOw0KPj4+ICsNCj4+PiArwqDCoMKgIHVu c2lnbmVkIGludCBpbmRleDsNCj4+PiArfTsNCj4+PiArDQo+Pj4gK2ludCBsc2RjX3BpeHBs bF9pbml0KHN0cnVjdCBsc2RjX3BsbCAqIGNvbnN0IHRoaXMsDQo+Pj4gK8KgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBzdHJ1Y3QgZHJtX2RldmljZSAqZGRldiwNCj4+PiArwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIHVuc2lnbmVkIGludCBpbmRleCk7DQo+Pj4gKw0KPj4+ICsjZW5k aWYNCj4+PiBkaWZmIC0tZ2l0IGEvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19yZWdzLmMg DQo+Pj4gYi9kcml2ZXJzL2dwdS9kcm0vbHNkYy9sc2RjX3JlZ3MuYw0KPj4+IG5ldyBmaWxl IG1vZGUgMTAwNjQ0DQo+Pj4gaW5kZXggMDAwMDAwMDAwMDAwLi5jNzk1MGM0Mzk2OGYNCj4+ PiAtLS0gL2Rldi9udWxsDQo+Pj4gKysrIGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19y ZWdzLmMNCj4+PiBAQCAtMCwwICsxLDI5IEBADQo+Pj4gKy8vIFNQRFgtTGljZW5zZS1JZGVu dGlmaWVyOiBHUEwtMi4wDQo+Pj4gKw0KPj4+ICsjaW5jbHVkZSAibHNkY19kcnYuaCINCj4+ PiArI2luY2x1ZGUgImxzZGNfcmVncy5oIg0KPj4+ICsNCj4+PiArdTMyIGxzZGNfcnJlZzMy KHN0cnVjdCBsc2RjX2RldmljZSAqIGNvbnN0IGxkZXYsIHUzMiBvZmZzZXQpDQo+Pj4gK3sN Cj4+PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+Pj4gK8KgwqDCoCB1MzIgcmV0 Ow0KPj4+ICsNCj4+PiArwqDCoMKgIHNwaW5fbG9ja19pcnFzYXZlKCZsZGV2LT5yZWdsb2Nr LCBmbGFncyk7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgcmV0ID0gcmVhZGwobGRldi0+cmVnX2Jh c2UgKyBvZmZzZXQpOw0KPj4+ICsNCj4+PiArwqDCoMKgIHNwaW5fdW5sb2NrX2lycXJlc3Rv cmUoJmxkZXYtPnJlZ2xvY2ssIGZsYWdzKTsNCj4+PiArDQo+Pj4gK8KgwqDCoCByZXR1cm4g cmV0Ow0KPj4+ICt9DQo+Pj4gKw0KPj4+ICt2b2lkIGxzZGNfd3JlZzMyKHN0cnVjdCBsc2Rj X2RldmljZSAqIGNvbnN0IGxkZXYsIHUzMiBvZmZzZXQsIHUzMiB2YWwpDQo+Pj4gK3sNCj4+ PiArwqDCoMKgIHVuc2lnbmVkIGxvbmcgZmxhZ3M7DQo+Pj4gKw0KPj4+ICvCoMKgwqAgc3Bp bl9sb2NrX2lycXNhdmUoJmxkZXYtPnJlZ2xvY2ssIGZsYWdzKTsNCj4+PiArDQo+Pj4gK8Kg wqDCoCB3cml0ZWwodmFsLCBsZGV2LT5yZWdfYmFzZSArIG9mZnNldCk7DQo+Pj4gKw0KPj4+ ICvCoMKgwqAgc3Bpbl91bmxvY2tfaXJxcmVzdG9yZSgmbGRldi0+cmVnbG9jaywgZmxhZ3Mp Ow0KPj4+ICt9DQo+Pj4gZGlmZiAtLWdpdCBhL2RyaXZlcnMvZ3B1L2RybS9sc2RjL2xzZGNf cmVncy5oIA0KPj4+IGIvZHJpdmVycy9ncHUvZHJtL2xzZGMvbHNkY19yZWdzLmgNCj4+PiBu ZXcgZmlsZSBtb2RlIDEwMDY0NA0KPj4+IGluZGV4IDAwMDAwMDAwMDAwMC4uODI4OTU2NjMz MTM3DQo+Pj4gLS0tIC9kZXYvbnVsbA0KPj4+ICsrKyBiL2RyaXZlcnMvZ3B1L2RybS9sc2Rj L2xzZGNfcmVncy5oDQo+Pj4gQEAgLTAsMCArMSwyOTYgQEANCj4+PiArLyogU1BEWC1MaWNl bnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgKi8NCj4+PiArDQo+Pj4gKyNpZm5kZWYgX19MU0RD X1JFR1NfSF9fDQo+Pj4gKyNkZWZpbmUgX19MU0RDX1JFR1NfSF9fDQo+Pj4gKw0KPj4+ICsj aW5jbHVkZSA8bGludXgvYml0b3BzLmg+DQo+Pj4gKyNpbmNsdWRlIDxsaW51eC90eXBlcy5o Pg0KPj4+ICsNCj4+PiArLyoNCj4+PiArICogUElYRUwgUExMIFJlZmVyZW5jZSBjbG9jaw0K Pj4+ICsgKi8NCj4+PiArI2RlZmluZSBMU0RDX1BMTF9SRUZfQ0xLwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDEwMDAwMMKgwqDCoMKgwqDCoMKgwqDCoMKgIC8qIGtIeiAqLw0K Pj4+ICsNCj4+PiArLyoNCj4+PiArICogVGhvc2UgUExMIHJlZ2lzdGVycyBhcmUgbm90IGxv Y2F0ZWQgYXQgREMgcmVnIGJhciBzcGFjZSwNCj4+PiArICogdGhlcmUgYXJlIHJlbGF0aXZl IHRvIExTWFhYWFhfQ0ZHX1JFR19CQVNFLg0KPj4+ICsgKiBYWFhYWCA9IDdBMTAwMCwgMksx MDAwLCAySzA1MDANCj4+PiArICovDQo+Pj4gKw0KPj4+ICsvKiBMUzJLMTAwMCAqLw0KPj4+ ICsjZGVmaW5lIExTMksxMDAwX1BJWF9QTEwwX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgIDB4 MDRCMA0KPj4+ICsjZGVmaW5lIExTMksxMDAwX1BJWF9QTEwxX1JFR8KgwqDCoMKgwqDCoMKg wqDCoMKgIDB4MDRDMA0KPj4+ICsjZGVmaW5lIExTMksxMDAwX0NGR19SRUdfQkFTRcKgwqDC oMKgwqDCoMKgwqDCoMKgIDB4MWZlMTAwMDANCj4+PiArDQo+Pj4gKy8qIExTN0ExMDAwIGFu ZCBMUzJLMjAwMCAqLw0KPj4+ICsjZGVmaW5lIExTN0ExMDAwX1BJWF9QTEwwX1JFR8KgwqDC oMKgwqDCoMKgwqDCoMKgIDB4MDRCMA0KPj4+ICsjZGVmaW5lIExTN0ExMDAwX1BJWF9QTEwx X1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MDRDMA0KPj4+ICsjZGVmaW5lIExTN0ExMDAw X0NGR19SRUdfQkFTRcKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTAwMTAwMDANCj4+PiArDQo+ Pj4gKy8qIExTMkswNTAwICovDQo+Pj4gKyNkZWZpbmUgTFMySzA1MDBfUElYX1BMTDBfUkVH wqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwNDE4DQo+Pj4gKyNkZWZpbmUgTFMySzA1MDBfUElY X1BMTDFfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgwNDIwDQo+Pj4gKyNkZWZpbmUgTFMy SzA1MDBfQ0ZHX1JFR19CQVNFwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxZmUxMDAwMA0KPj4+ ICsNCj4+PiArLyoNCj4+PiArICrCoCBDUlRDIENGRyBSRUcNCj4+PiArICovDQo+Pj4gKyNk ZWZpbmUgQ0ZHX1BJWF9GTVRfTUFTS8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBH RU5NQVNLKDIsIDApDQo+Pj4gKw0KPj4+ICtlbnVtIGxzZGNfcGl4ZWxfZm9ybWF0IHsNCj4+ PiArwqDCoMKgIExTRENfUEZfTk9ORSA9IDAsDQo+Pj4gK8KgwqDCoCBMU0RDX1BGX0FSR0I0 NDQ0ID0gMSzCoCAvKiBBUkdCIEE6NCBiaXRzIFIvRy9COiA0IGJpdHMgZWFjaCBbMTYgDQo+ Pj4gYml0c10gKi8NCj4+PiArwqDCoMKgIExTRENfUEZfQVJHQjE1NTUgPSAyLMKgIC8qIEFS R0IgQToxIGJpdCBSR0I6MTUgYml0cyBbMTYgYml0c10gKi8NCj4+PiArwqDCoMKgIExTRENf UEZfUkdCNTY1ID0gMyzCoMKgwqAgLyogUkdCIFsxNiBiaXRzXSAqLw0KPj4+ICvCoMKgwqAg TFNEQ19QRl9YUkdCODg4OCA9IDQswqAgLyogWFJHQiBbMzIgYml0c10gKi8NCj4+PiArwqDC oMKgIExTRENfUEZfUkdCQTg4ODggPSA1LMKgIC8qIEFSR0IgWzMyIGJpdHNdICovDQo+Pj4g K307DQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKiBFYWNoIGNydGMgaGFzIHR3byBzZXQgZmIg YWRkcmVzcyByZWdpc3RlcnMgdXNhYmxlLCANCj4+PiBDRkdfRkJfSU5fVVNJTkcgb2YNCj4+ PiArICogTFNEQ19DUlRDeF9DRkdfUkVHIHNwZWNpZnkgd2hpY2ggZmIgYWRkcmVzcyByZWdp c3RlciBpcyBjdXJyZW50bHkNCj4+PiArICogaW4gdXNpbmcgYnkgdGhlIENSVEMuIENGR19Q QUdFX0ZMSVAgb2YgTFNEQ19DUlRDeF9DRkdfUkVHIGlzIHVzZWQgdG8NCj4+PiArICogdHJp Z2dlciB0aGUgc3dpdGNoIHdoaWNoIHdpbGwgYmUgZmluaXNoZWQgYXQgdGhlIHZlcnkgdmJs YW5rLiBJZiB5b3UNCj4+PiArICogd2FudCBpdCBzd2l0Y2ggdG8gYW5vdGhlciBhZ2Fpbiwg eW91IG11c3Qgc2V0IENGR19QQUdFX0ZMSVAgYWdhaW4uDQo+Pj4gKyAqLw0KPj4+ICsjZGVm aW5lIENGR19QQUdFX0ZMSVDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg QklUKDcpDQo+Pj4gKyNkZWZpbmUgQ0ZHX09VVFBVVF9FTsKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCBCSVQoOCkNCj4+PiArLyogQ1JUQzAgY2xvbmUgZnJvbSBDUlRD MSBvciBDUlRDMSBjbG9uZSBmcm9tIENSVEMwIHVzaW5nIGhhcmR3YXJlIA0KPj4+IGxvZ2lj ICovDQo+Pj4gKyNkZWZpbmUgQ0ZHX1BBTkVMX1NXSVRDSMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBCSVQoOSkNCj4+PiArLyogSW5kaWNhdGUgd2l0Y2ggZmIgYWRkciByZWcg aXMgaW4gdXNpbmcsIGN1cnJlbnRseSAqLw0KPj4+ICsjZGVmaW5lIENGR19GQl9JTl9VU0lO R8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxMSkNCj4+PiArI2RlZmlu ZSBDRkdfR0FNTUFfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBC SVQoMTIpDQo+Pj4gKw0KPj4+ICsvKiBDUlRDIGdldCBzb2Z0IHJlc2V0IGlmIHZvbHRhZ2Ug bGV2ZWwgY2hhbmdlIGZyb20gMSAtPiAwICovDQo+Pj4gKyNkZWZpbmUgQ0ZHX1JFU0VUX07C oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgyMCkNCj4+PiAr DQo+Pj4gKyNkZWZpbmUgQ0ZHX0hTWU5DX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgQklUKDMwKQ0KPj4+ICsjZGVmaW5lIENGR19IU1lOQ19JTlbCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDMxKQ0KPj4+ICsjZGVmaW5lIENG R19WU1lOQ19FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgz MCkNCj4+PiArI2RlZmluZSBDRkdfVlNZTkNfSU5WwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgIEJJVCgzMSkNCj4+PiArDQo+Pj4gKy8qIFRIRSBETUEgc3RlcCBvZiB0 aGUgREMgaW4gTFM3QTIwMDAgaXMgY29uZmlndXJhYmxlICovDQo+Pj4gKyNkZWZpbmUgTFNE Q19ETUFfU1RFUF9NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOTUFTSygxNywg MTYpDQo+Pj4gK2VudW0gbHNkY19kbWFfc3RlcHNfc3VwcG9ydGVkIHsNCj4+PiArwqDCoMKg IExTRENfRE1BX1NURVBfMjU2X0JZVEVTID0gMCwNCj4+PiArwqDCoMKgIExTRENfRE1BX1NU RVBfMTI4X0JZVEVTID0gMSwNCj4+PiArwqDCoMKgIExTRENfRE1BX1NURVBfNjRfQllURVMg PSAyLA0KPj4+ICvCoMKgwqAgTFNEQ19ETUFfU1RFUF8zMl9CWVRFUyA9IDMsDQo+Pj4gK307 DQo+Pj4gKw0KPj4+ICsvKioqKioqKiogQ1JUQzAgJiBEVk8wICoqKioqKioqLw0KPj4+ICsj ZGVmaW5lIExTRENfQ1JUQzBfQ0ZHX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4 MTI0MA0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfRkIwX0xPX0FERFJfUkVHwqDCoMKgwqDC oCAweDEyNjANCj4+PiArI2RlZmluZSBMU0RDX0NSVEMwX0ZCMF9ISV9BRERSX1JFR8KgwqDC oMKgwqAgMHgxNUEwDQo+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9GQjFfTE9fQUREUl9SRUfC oMKgwqDCoMKgIDB4MTU4MA0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfRkIxX0hJX0FERFJf UkVHwqDCoMKgwqDCoCAweDE1QzANCj4+PiArI2RlZmluZSBMU0RDX0NSVEMwX1NUUklERV9S RUfCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDEyODANCj4+PiArI2RlZmluZSBMU0RDX0NSVEMw X0ZCX09SSUdJTl9SRUfCoMKgwqDCoMKgwqDCoCAweDEzMDANCj4+PiArI2RlZmluZSBMU0RD X0NSVEMwX0hESVNQTEFZX1JFR8KgwqDCoMKgwqDCoMKgwqAgMHgxNDAwDQo+Pj4gKyNkZWZp bmUgTFNEQ19DUlRDMF9IU1lOQ19SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTQyMA0K Pj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfVkRJU1BMQVlfUkVHwqDCoMKgwqDCoMKgwqDCoCAw eDE0ODANCj4+PiArI2RlZmluZSBMU0RDX0NSVEMwX1ZTWU5DX1JFR8KgwqDCoMKgwqDCoMKg wqDCoMKgwqAgMHgxNEEwDQo+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9HQU1NQV9JTkRFWF9S RUfCoMKgwqDCoMKgIDB4MTRFMA0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfR0FNTUFfREFU QV9SRUfCoMKgwqDCoMKgwqAgMHgxNTAwDQo+Pj4gKw0KPj4+ICsvKioqKioqKiogQ1RSQzEg JiBEVk8xICoqKioqKioqLw0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzFfQ0ZHX1JFR8KgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIDB4MTI1MA0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzFf RkIwX0xPX0FERFJfUkVHwqDCoMKgwqDCoCAweDEyNzANCj4+PiArI2RlZmluZSBMU0RDX0NS VEMxX0ZCMF9ISV9BRERSX1JFR8KgwqDCoMKgwqAgMHgxNUIwDQo+Pj4gKyNkZWZpbmUgTFNE Q19DUlRDMV9GQjFfTE9fQUREUl9SRUfCoMKgwqDCoMKgIDB4MTU5MA0KPj4+ICsjZGVmaW5l IExTRENfQ1JUQzFfRkIxX0hJX0FERFJfUkVHwqDCoMKgwqDCoCAweDE1RDANCj4+PiArI2Rl ZmluZSBMU0RDX0NSVEMxX1NUUklERV9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoCAweDEyOTAN Cj4+PiArI2RlZmluZSBMU0RDX0NSVEMxX0ZCX09SSUdJTl9SRUfCoMKgwqDCoMKgwqDCoCAw eDEzMTANCj4+PiArI2RlZmluZSBMU0RDX0NSVEMxX0hESVNQTEFZX1JFR8KgwqDCoMKgwqDC oMKgwqAgMHgxNDEwDQo+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9IU1lOQ19SRUfCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDB4MTQzMA0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzFfVkRJU1BM QVlfUkVHwqDCoMKgwqDCoMKgwqDCoCAweDE0OTANCj4+PiArI2RlZmluZSBMU0RDX0NSVEMx X1ZTWU5DX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNEIwDQo+Pj4gKyNkZWZpbmUg TFNEQ19DUlRDMV9HQU1NQV9JTkRFWF9SRUfCoMKgwqDCoMKgIDB4MTRGMA0KPj4+ICsjZGVm aW5lIExTRENfQ1JUQzFfR0FNTUFfREFUQV9SRUfCoMKgwqDCoMKgwqAgMHgxNTEwDQo+Pj4g Kw0KPj4+ICsvKg0KPj4+ICsgKiBMUzdBMjAwMCBoYXMgdGhlIGhhcmR3YXJlIHdoaWNoIHJl Y29yZCB0aGUgc2NhbiBwb3NpdGlvbiBvZiB0aGUgQ1JUQw0KPj4+ICsgKiBbMzE6MTZdIDog Y3VycmVudCBYIHBvc2l0aW9uLCBbMTU6MF0gOiBjdXJyZW50IFkgcG9zaXRpb24NCj4+PiAr ICovDQo+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMF9TQ0FOX1BPU19SRUfCoMKgwqDCoMKgwqDC oMKgIDB4MTRDMA0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzFfU0NBTl9QT1NfUkVHwqDCoMKg wqDCoMKgwqDCoCAweDE0RDANCj4+PiArDQo+Pj4gKy8qDQo+Pj4gKyAqIExTN0EyMDAwIGhh cyB0aGUgaGFyZHdhcmUgd2hpY2ggY291bnQgdGhlIG51bWJlciBvZiB2YmxhbmsgZ2VuZXJh dGVkDQo+Pj4gKyAqLw0KPj4+ICsjZGVmaW5lIExTRENfQ1JUQzBfVlNZTkNfQ09VTlRFUl9S RUfCoMKgwqAgMHgxQTAwDQo+Pj4gKyNkZWZpbmUgTFNEQ19DUlRDMV9WU1lOQ19DT1VOVEVS X1JFR8KgwqDCoCAweDFBMTANCj4+PiArDQo+Pj4gKy8qIEluIGFsbCwgTFNEQ19DUlRDMV9Y WFhfUkVHIC0gTFNEQ19DUlRDMF9YWFhfUkVHID0gMHgxMCAqLw0KPj4+ICsNCj4+PiArLyoN Cj4+PiArICogVGhlcmUgaXMgb25seSBvbmUgaGFyZHdhcmUgY3Vyc29yIHVuaXQgaW4gbHM3 YTEwMDAsIGxzMmsxMDAwIGFuZCANCj4+PiBsczJrMDUwMC4NCj4+PiArICogd2VsbCwgbHM3 YTIwMDAgaGFzIHR3byBoYXJkd2FyZSBjdXJzb3IgdW5pdC4NCj4+PiArICovDQo+Pj4gKyNk ZWZpbmUgQ1VSU09SX0ZPUk1BVF9NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VO TUFTSygxLCAwKQ0KPj4+ICtlbnVtIGxzZGNfY3Vyc29yX2Zvcm1hdCB7DQo+Pj4gK8KgwqDC oCBDVVJTT1JfRk9STUFUX0RJU0FCTEUgPSAwLA0KPj4+ICvCoMKgwqAgQ1VSU09SX0ZPUk1B VF9NT05PQ0hST01FID0gMSwNCj4+PiArwqDCoMKgIENVUlNPUl9GT1JNQVRfQVJHQjg4ODgg PSAyLA0KPj4+ICt9Ow0KPj4+ICsNCj4+PiArI2RlZmluZSBDVVJTT1JfU0laRV82NFg2NMKg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDIpDQo+Pj4gKyNkZWZpbmUgQ1VSU09S X0xPQ0FUSU9OwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDQpDQo+Pj4g Kw0KPj4+ICsjZGVmaW5lIExTRENfQ1VSU09SMF9DRkdfUkVHwqDCoMKgwqDCoMKgwqDCoMKg wqDCoCAweDE1MjANCj4+PiArI2RlZmluZSBMU0RDX0NVUlNPUjBfQUREUl9MT19SRUfCoMKg wqDCoMKgwqDCoCAweDE1MzANCj4+PiArI2RlZmluZSBMU0RDX0NVUlNPUjBfQUREUl9ISV9S RUfCoMKgwqDCoMKgwqDCoCAweDE1ZTANCj4+PiArI2RlZmluZSBMU0RDX0NVUlNPUjBfUE9T SVRJT05fUkVHwqDCoMKgwqDCoMKgIDB4MTU0MA0KPj4+ICsjZGVmaW5lIExTRENfQ1VSU09S MF9CR19DT0xPUl9SRUfCoMKgwqDCoMKgwqAgMHgxNTUwwqAgLyogYmFja2dyb3VuZCBjb2xv ciAqLw0KPj4+ICsjZGVmaW5lIExTRENfQ1VSU09SMF9GR19DT0xPUl9SRUfCoMKgwqDCoMKg wqAgMHgxNTYwwqAgLyogZm9yZWdyb3VuZCBjb2xvciAqLw0KPj4+ICsNCj4+PiArI2RlZmlu ZSBMU0RDX0NVUlNPUjFfQ0ZHX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNjcwDQo+ Pj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IxX0FERFJfTE9fUkVHwqDCoMKgwqDCoMKgwqAgMHgx NjgwDQo+Pj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IxX0FERFJfSElfUkVHwqDCoMKgwqDCoMKg wqAgMHgxNmUwDQo+Pj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IxX1BPU0lUSU9OX1JFR8KgwqDC oMKgwqDCoCAweDE2OTDCoCAvKiBbMzE6MTZdIFksIFsxNTowXSANCj4+PiBYICovDQo+Pj4g KyNkZWZpbmUgTFNEQ19DVVJTT1IxX0JHX0NPTE9SX1JFR8KgwqDCoMKgwqDCoCAweDE2QTDC oCAvKiBiYWNrZ3JvdW5kIGNvbG9yICovDQo+Pj4gKyNkZWZpbmUgTFNEQ19DVVJTT1IxX0ZH X0NPTE9SX1JFR8KgwqDCoMKgwqDCoCAweDE2QjDCoCAvKiBmb3JlZ3JvdW5kIGNvbG9yICov DQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKiBEQyBJbnRlcnJ1cHQgQ29udHJvbCBSZWdpc3Rl ciwgMzJiaXQsIEFkZHJlc3MgT2Zmc2V0OiAxNTcwDQo+Pj4gKyAqDQo+Pj4gKyAqIEJpdHMg MTU6MCBpbmlkaWNhdGUgdGhlIGludGVycnVwdCBzdGF0dXMNCj4+PiArICogQml0cyAzMTox NiBjb250cm9sIGVuYWJsZSBpbnRlcnJ1cHRzIGNvcnJlc3BvbmRpbmcgdG8gYml0IDE1OjAg b3IgDQo+Pj4gbm90DQo+Pj4gKyAqIFdyaXRlIDEgdG8gZW5hYmxlLCB3cml0ZSAwIHRvIGRp c2FibGUNCj4+PiArICoNCj4+PiArICogUkY6IFJlYWQgRmluaXNoZWQNCj4+PiArICogSURC VTogSW50ZXJuYWwgRGF0YSBCdWZmZXIgVW5kZXJmbG93DQo+Pj4gKyAqIElEQkZVOiBJbnRl cm5hbCBEYXRhIEJ1ZmZlciBGYXRhbCBVbmRlcmZsb3cNCj4+PiArICogQ0JSRjogQ3Vyc29y IEJ1ZmZlciBSZWFkIEZpbmlzaGVkIEZsYWcsIG5vIHVzZS4NCj4+PiArICoNCj4+PiArICog DQo+Pj4gKy0tLS0tLS0rLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0t LS0tLSstLS0tLS0tLSstLS0tLS0tKw0KPj4+ICsgKiB8IDMxOjI3IHzCoMKgwqDCoMKgwqDC oMKgIDI2OjE2wqDCoMKgwqDCoMKgwqDCoMKgwqDCoCB8IDE1OjExIHzCoMKgIDEwwqDCoCB8 wqDCoCA5IHzCoMKgIDjCoMKgIHwNCj4+PiArICogDQo+Pj4gKy0tLS0tLS0rLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tKw0K Pj4+ICsgKiB8wqAgTi9BwqAgfCBJbnRlcnJ1cHQgRW5hYmxlIENvbnRyb2wgfMKgIE4vQcKg IHwgSURCRlUwIHwgSURCRlUxIHwgDQo+Pj4gSURCVTAgfA0KPj4+ICsgKiANCj4+PiArLS0t LS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tKy0tLS0tLS0tKy0tLS0t LS0tKy0tLS0tLS0rDQo+Pj4gKyAqDQo+Pj4gKyAqICstLS0tLS0tKy0tLS0tKy0tLS0tKy0t LS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSstLS0tLS0tLSsNCj4+PiArICogfMKg wqAgN8KgwqAgfMKgIDbCoCB8wqAgNcKgIHzCoCA0wqDCoCB8wqDCoCAzwqDCoMKgIHzCoMKg IDLCoMKgwqAgfMKgwqAgMcKgwqDCoCB8IDDCoMKgwqAgfA0KPj4+ICsgKiArLS0tLS0tLSst LS0tLSstLS0tLSstLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0rLS0tLS0tLS0r DQo+Pj4gKyAqIHwgSURCVTEgfCBSRjAgfCBSRjEgfCBDUlJGIHwgSFNZTkMwIHwgVlNZTkMw IHwgSFNZTkMxIHwgVlNZTkMxIHwNCj4+PiArICogKy0tLS0tLS0rLS0tLS0rLS0tLS0rLS0t LS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKy0tLS0tLS0tKw0KPj4+ICsgKi8NCj4+ PiArDQo+Pj4gKyNkZWZpbmUgTFNEQ19JTlRfUkVHwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgMHgxNTcwDQo+Pj4gKw0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMF9W U1lOQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgyKQ0KPj4+ICsjZGVm aW5lIElOVF9DUlRDMF9IU1lOQ8KgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJ VCgzKQ0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMF9SRsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEJJVCg2KQ0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMF9JREJVwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoOCkNCj4+PiArI2RlZmluZSBJ TlRfQ1JUQzBfSURCRlXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMTAp DQo+Pj4gKw0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMV9WU1lOQ8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMV9IU1lOQ8Kg wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxKQ0KPj4+ICsjZGVmaW5lIElO VF9DUlRDMV9SRsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg1 KQ0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMV9JREJVwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCBCSVQoNykNCj4+PiArI2RlZmluZSBJTlRfQ1JUQzFfSURCRlXCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoOSkNCj4+PiArDQo+Pj4gKyNkZWZpbmUg SU5UX0NSVEMwX1ZTX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDE4 KQ0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMF9IU19FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJJVCgxOSkNCj4+PiArI2RlZmluZSBJTlRfQ1JUQzBfUkZfRU7CoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMjIpDQo+Pj4gKyNkZWZpbmUgSU5UX0NS VEMwX0lEQlVfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgyNCkNCj4+PiAr I2RlZmluZSBJTlRfQ1JUQzBfSURCRlVfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBC SVQoMjYpDQo+Pj4gKw0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMV9WU19FTsKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxNikNCj4+PiArI2RlZmluZSBJTlRfQ1JUQzFf SFNfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMTcpDQo+Pj4gKyNk ZWZpbmUgSU5UX0NSVEMxX1JGX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg QklUKDIxKQ0KPj4+ICsjZGVmaW5lIElOVF9DUlRDMV9JREJVX0VOwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoCBCSVQoMjMpDQo+Pj4gKyNkZWZpbmUgSU5UX0NSVEMxX0lEQkZVX0VO wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDI1KQ0KPj4+ICsNCj4+PiArI2RlZmlu ZSBJTlRfU1RBVFVTX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5N QVNLKDE1LCAwKQ0KPj4+ICsNCj4+PiArLyoNCj4+PiArICogTFM3QTEwMDAvTFM3QTIwMDAg aGF2ZSA0IGdwaW9zIHdoaWNoIGFyZSB1c2VkIHRvIGVtdWxhdGVkIEkyQy4NCj4+PiArICog VGhleSBhcmUgdW5kZXIgY29udHJvbCBvZiB0aGUgTFM3QV9EQ19HUElPX0RBVF9SRUcgYW5k IA0KPj4+IExTN0FfRENfR1BJT19ESVJfUkVHDQo+Pj4gKyAqIHJlZ2lzdGVyLCBUaG9zZSBH UElPcyBoYXMgbm8gcmVsYXRpb25zaGlwIHdodGggdGhlIEdQSU8gaGFyZHdhcmUgDQo+Pj4g b24gdGhlDQo+Pj4gKyAqIGJyaWRnZSBjaGlwIGl0c2VsZi4gVGhvc2Ugb2Zmc2V0cyBhcmUg cmVsYXRpdmUgdG8gREMgcmVnaXN0ZXIgDQo+Pj4gYmFzZSBhZGRyZXNzDQo+Pj4gKyAqDQo+ Pj4gKyAqIExTMmsxMDAwIGFuZCBMUzJLMDUwMCBkb24ndCBoYXZlIHRob3NlIHJlZ2lzdGVy cywgdGhleSB1c2UgDQo+Pj4gaGFyZHdhcmUgaTJjDQo+Pj4gKyAqIG9yIGdlbmVyYWwgR1BJ TyBlbXVsYXRlZCBpMmMgZnJvbSBsaW51eCBpMmMgc3Vic3lzdGVtLg0KPj4+ICsgKg0KPj4+ ICsgKiBHUElPIGRhdGEgcmVnaXN0ZXIsIGFkZHJlc3Mgb2Zmc2V0OiAweDE2NTANCj4+PiAr ICrCoMKgICstLS0tLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rLS0tLS0tLS0tLS0rDQo+Pj4g KyAqwqDCoCB8IDcgfCA2IHwgNSB8IDQgfMKgIDPCoCB8wqAgMsKgIHzCoCAxwqAgfMKgIDDC oCB8DQo+Pj4gKyAqwqDCoCArLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKy0tLS0tLS0t LS0tKw0KPj4+ICsgKsKgwqAgfMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfMKgwqDC oCBEVk8xwqDCoCB8wqDCoMKgIERWTzDCoMKgIHwNCj4+PiArICrCoMKgICvCoMKgwqDCoMKg IE4vQcKgwqDCoMKgwqAgKy0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tKw0KPj4+ICsgKsKgwqAg fMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgfCBTQ0wgfCBTREEgfCBTQ0wgfCBTREEg fA0KPj4+ICsgKsKgwqAgKy0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLSstLS0tLS0tLS0t LSsNCj4+PiArICovDQo+Pj4gKyNkZWZpbmUgTFM3QV9EQ19HUElPX0RBVF9SRUfCoMKgwqDC oMKgwqDCoMKgwqDCoMKgIDB4MTY1MA0KPj4+ICsNCj4+PiArLyoNCj4+PiArICrCoCBHUElP IElucHV0L091dHB1dCBkaXJlY3Rpb24gY29udHJvbCByZWdpc3RlciwgYWRkcmVzcyBvZmZz ZXQ6IA0KPj4+IDB4MTY2MA0KPj4+ICsgKi8NCj4+PiArI2RlZmluZSBMUzdBX0RDX0dQSU9f RElSX1JFR8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgMHgxNjYwDQo+Pj4gKw0KPj4+ICsvKg0K Pj4+ICsgKsKgIExTN0EyMDAwIGhhcyB0d28gYnVpbHQtaW4gSERNSSBFbmNvZGVyIGFuZCBv bmUgVkdBIGVuY29kZXINCj4+PiArICovDQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKiBOdW1i ZXIgb2YgY29udGludW91cyBwYWNrZXRzIG1heSBiZSBwcmVzZW50DQo+Pj4gKyAqIGluIEhE TUkgaGJsYW5rIGFuZCB2Ymxhbmsgem9uZSwgc2hvdWxkID49IDQ4DQo+Pj4gKyAqLw0KPj4+ ICsjZGVmaW5lIExTRENfSERNSTBfWk9ORV9SRUfCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAg MHgxNzAwDQo+Pj4gKyNkZWZpbmUgTFNEQ19IRE1JMV9aT05FX1JFR8KgwqDCoMKgwqDCoMKg wqDCoMKgwqDCoCAweDE3MTANCj4+PiArDQo+Pj4gKyNkZWZpbmUgSERNSV9JTlRFUkZBQ0Vf RU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4+ICsjZGVmaW5lIEhE TUlfUEFDS0VUX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMSkN Cj4+PiArI2RlZmluZSBIRE1JX0FVRElPX0VOwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgIEJJVCgyKQ0KPj4+ICsjZGVmaW5lIEhETUlfVklERU9fUFJFQU1CTEVfTUFT S8KgwqDCoMKgwqDCoMKgIEdFTk1BU0soNywgNCkNCj4+PiArI2RlZmluZSBIRE1JX0hXX0ky Q19FTsKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDgpDQo+Pj4gKyNk ZWZpbmUgSERNSV9DVExfUEVSSU9EX01PREXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCg5 KQ0KPj4+ICsjZGVmaW5lIExTRENfSERNSTBfQ1RSTF9SRUfCoMKgwqDCoMKgwqDCoMKgwqDC oMKgwqAgMHgxNzIwDQo+Pj4gKyNkZWZpbmUgTFNEQ19IRE1JMV9DVFJMX1JFR8KgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoCAweDE3MzANCj4+PiArDQo+Pj4gKyNkZWZpbmUgSERNSV9QSFlf RU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgwKQ0KPj4+ ICsjZGVmaW5lIEhETUlfUEhZX1JFU0VUX07CoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKg wqAgQklUKDEpDQo+Pj4gKyNkZWZpbmUgSERNSV9QSFlfVEVSTV9MX0VOwqDCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqAgQklUKDgpDQo+Pj4gKyNkZWZpbmUgSERNSV9QSFlfVEVSTV9IX0VO wqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDkpDQo+Pj4gKyNkZWZpbmUgSERNSV9Q SFlfVEVSTV9ERVRfRU7CoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxMCkNCj4+PiArI2Rl ZmluZSBIRE1JX1BIWV9URVJNX1NUQVRVU8KgwqDCoMKgwqDCoMKgwqDCoMKgwqAgQklUKDEx KQ0KPj4+ICsjZGVmaW5lIExTRENfSERNSTBfUEhZX0NUUkxfUkVHwqDCoMKgwqDCoMKgwqDC oCAweDE4MDANCj4+PiArI2RlZmluZSBMU0RDX0hETUkxX1BIWV9DVFJMX1JFR8KgwqDCoMKg wqDCoMKgwqAgMHgxODEwDQo+Pj4gKw0KPj4+ICsvKg0KPj4+ICsgKsKgIElERjogSW5wdXQg RGl2aXNpb24gRmFjdG9yDQo+Pj4gKyAqwqAgT0RGOiBPdXRwdXQgRGl2aXNpb24gRmFjdG9y DQo+Pj4gKyAqwqDCoCBMRjogTG9vcCBGYWN0b3INCj4+PiArICrCoMKgwqAgTTogUmVxdWly ZWQgTXVsdA0KPj4+ICsgKg0KPj4+ICsgKsKgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsNCj4+PiArICrCoCB8wqDCoMKgwqAg RmluIChrSFopwqDCoMKgwqAgfCBNwqAgfCBJREYgfCBMRiB8IE9ERiB8wqDCoCBGb3V0KE1o einCoCB8DQo+Pj4gKyAqwqAgfC0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSstLS0tLSstLS0t Ky0tLS0tKy0tLS0tLS0tLS0tLS0tfA0KPj4+ICsgKsKgIHzCoCAxNzAwMDAgfiAzNDAwMDDC oCB8IDEwIHwgMTbCoCB8IDQwIHzCoCAxwqAgfCAxNzAwIH4gMzQwMMKgIHwNCj4+PiArICrC oCB8wqDCoCA4NTAwMCB+IDE3MDAwMMKgIHwgMTAgfMKgIDjCoCB8IDQwIHzCoCAywqAgfMKg IDg1MCB+IDE3MDDCoCB8DQo+Pj4gKyAqwqAgfMKgwqAgNDI1MDAgfsKgIDg1MDAwwqAgfCAx MCB8wqAgNMKgIHwgNDAgfMKgIDTCoCB8wqAgNDI1IH4gODUwwqDCoCB8DQo+Pj4gKyAqwqAg fMKgwqAgMjEyNTAgfsKgIDQyNTAwwqAgfCAxMCB8wqAgMsKgIHwgNDAgfMKgIDjCoCB8IDIx Mi41IH4gNDI1wqAgfA0KPj4+ICsgKsKgIHzCoMKgIDIwMDAwIH7CoCAyMTI1MMKgIHwgMTAg fMKgIDHCoCB8IDQwIHwgMTbCoCB8wqAgMjAwIH4gMjEyLjUgfA0KPj4+ICsgKsKgICstLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsN Cj4+PiArICovDQo+Pj4gKyNkZWZpbmUgTFNEQ19IRE1JMF9QSFlfUExMX1JFR8KgwqDCoMKg wqDCoMKgwqDCoCAweDE4MjANCj4+PiArI2RlZmluZSBMU0RDX0hETUkxX1BIWV9QTExfUkVH wqDCoMKgwqDCoMKgwqDCoMKgIDB4MTgzMA0KPj4+ICsNCj4+PiArI2RlZmluZSBIRE1JX1BM TF9FTkFCTEXCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBCSVQoMCkNCj4+PiAr I2RlZmluZSBIRE1JX1BMTF9MT0NLRUTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDC oCBCSVQoMTYpDQo+Pj4gKyNkZWZpbmUgSERNSV9QTExfQllQQVNTwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQklUKDE3KQ0KPj4+ICsNCj4+PiArI2RlZmluZSBIRE1JX1BM TF9JREZfU0hJRlTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxDQo+Pj4gKyNkZWZpbmUg SERNSV9QTExfSURGX01BU0vCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEdFTk1BU0so NSwgMSkNCj4+PiArI2RlZmluZSBIRE1JX1BMTF9MRl9TSElGVMKgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqAgNg0KPj4+ICsjZGVmaW5lIEhETUlfUExMX0xGX01BU0vCoMKgwqDCoMKg wqDCoMKgwqDCoMKgwqDCoMKgwqAgR0VOTUFTSygxMiwgNikNCj4+PiArI2RlZmluZSBIRE1J X1BMTF9PREZfU0hJRlTCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCAxMw0KPj4+ICsjZGVm aW5lIEhETUlfUExMX09ERl9NQVNLwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoCBHRU5N QVNLKDE1LCAxMykNCj4+PiArDQo+Pj4gKy8qIExTN0EyMDAwIGhhdmUgaHBkIHN1cHBvcnQg Ki8NCj4+PiArI2RlZmluZSBMU0RDX0hETUlfSFBEX1NUQVRVU19SRUfCoMKgwqDCoMKgwqDC oCAweDFCQTANCj4+PiArI2RlZmluZSBIRE1JMF9IUERfRkxBR8KgwqDCoMKgwqDCoMKgwqDC oMKgwqDCoMKgwqDCoMKgwqAgQklUKDApDQo+Pj4gKyNkZWZpbmUgSERNSTFfSFBEX0ZMQUfC oMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgwqDCoMKgIEJJVCgxKQ0KPj4+ICsNCj4+PiAr I2VuZGlmDQo+Pg0KPiANCg0KLS0gDQpUaG9tYXMgWmltbWVybWFubg0KR3JhcGhpY3MgRHJp dmVyIERldmVsb3Blcg0KU1VTRSBTb2Z0d2FyZSBTb2x1dGlvbnMgR2VybWFueSBHbWJIDQpN YXhmZWxkc3RyLiA1LCA5MDQwOSBOw7xybmJlcmcsIEdlcm1hbnkNCihIUkIgMzY4MDksIEFH IE7DvHJuYmVyZykNCkdlc2Now6RmdHNmw7xocmVyOiBJdm8gVG90ZXYNCg== --------------O0K4Xb8cp0T1Koy4mV8AuXNv-- --------------O8tJZ7PsBqgGb5SDfhAIODj1 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+AFAmPvRucFAwAAAAAACgkQlh/E3EQov+Bu 9w/+PK4tGGZ6LjGpzV/CxaTug5XH3dPYwjQ3sPZjGIzmVDvCBRb12HBYQJWfuEEitT1XcrVwUffc JW13b+YyNk4qd3glmZQghxEFraK1fSCF+oSnYrykiUwrtCXqyU5Zj5sxWQNFdWWWvzpE0eEYSb4s FJXiv18oS4z4QKGLYBgSZYHGhoobba/Rq9KbDpRiunnw2j/VkFgBImi3Og0y01euxdpR2MQDrq2z AryIMYFFhYxF1Om3gEwQa58DXz4sRb5U7QF09aWj1wQsL0klZKI6prHV1e0iho9nEDZtA0+P+L0F WXCa9W3ZH2Gw0+4VC8AKNFV0yA8SKYmM2LuJXIqICBCGLtfZI/oj+m9H9lKsg04wP/GmoJFqUi/q 0tT2w3f3nDdQs4wBBVL9rf4Az78UWnWJMjHE0rgs3K3AiLI0YhtVBM344ULF8n/8vrjqrc+6wbg8 CV7Jp637qjAxXLzZxJ2Lk/v1PB/ZOsR+VovrKX/qnyahOd7nlUnhHsOqRWKHEpG6O9fbUQl5urzv WhfLrDVrJPKOm9HpHqCetjO/u7qxDyiFJb7ZPsy/Gg8kutPY9ugsWywPgshNBXpQXf+Pf0cN8J8O QY1N09H2EMBHKvojODOmBTEcCqjQSPxJmJxQ8r4NM5h66sm3ihuH6ltNKa8FvIVVT7rHdxyYJClj XFU= =RGfZ -----END PGP SIGNATURE----- --------------O8tJZ7PsBqgGb5SDfhAIODj1--