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 04238CDB482 for ; Fri, 13 Oct 2023 02:27:24 +0000 (UTC) Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S229515AbjJMC1W (ORCPT ); Thu, 12 Oct 2023 22:27:22 -0400 Received: from lindbergh.monkeyblade.net ([23.128.96.19]:44346 "EHLO lindbergh.monkeyblade.net" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S229461AbjJMC1V (ORCPT ); Thu, 12 Oct 2023 22:27:21 -0400 Received: from rtits2.realtek.com.tw (rtits2.realtek.com [211.75.126.72]) by lindbergh.monkeyblade.net (Postfix) with ESMTPS id 8542495; Thu, 12 Oct 2023 19:27:16 -0700 (PDT) X-SpamFilter-By: ArmorX SpamTrap 5.78 with qID 39D2RAdP42128333, This message is accepted by code: ctloc85258 Received: from mail.realtek.com (rtexh36505.realtek.com.tw[172.21.6.25]) by rtits2.realtek.com.tw (8.15.2/2.92/5.92) with ESMTPS id 39D2RAdP42128333 (version=TLSv1.2 cipher=ECDHE-RSA-AES256-GCM-SHA384 bits=256 verify=OK); Fri, 13 Oct 2023 10:27:10 +0800 Received: from RTEXDAG01.realtek.com.tw (172.21.6.100) by RTEXH36505.realtek.com.tw (172.21.6.25) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.32; Fri, 13 Oct 2023 10:27:08 +0800 Received: from RTEXMBS01.realtek.com.tw (172.21.6.94) by RTEXDAG01.realtek.com.tw (172.21.6.100) with Microsoft SMTP Server (version=TLS1_2, cipher=TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256) id 15.1.2375.7; Fri, 13 Oct 2023 10:27:08 +0800 Received: from RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b]) by RTEXMBS01.realtek.com.tw ([fe80::9cb8:8d5:b6b3:213b%5]) with mapi id 15.01.2375.007; Fri, 13 Oct 2023 10:27:08 +0800 From: Ricky WU To: Ulf Hansson CC: "tommyhebb@gmail.com" , "linux-mmc@vger.kernel.org" , "linux-kernel@vger.kernel.org" Subject: RE: [PATCH v3] mmc: rtsx: improve performance for multi block rw Thread-Topic: [PATCH v3] mmc: rtsx: improve performance for multi block rw Thread-Index: AQHX9mTncx2NNhc4Hk2xCW7FootmX6w8X/iAgAN+/CD//4BBAIAB2EewgAY9WACAAfsEAIA+RCiAgATnqGCAAA5YAIO7cd/ggAGUdwCAAVcUMA== Date: Fri, 13 Oct 2023 02:27:08 +0000 Message-ID: <5752164983174ca68a669c241e7ef436@realtek.com> References: <8e61aed5f64e434abc1d7b6f81859c8a@realtek.com> In-Reply-To: Accept-Language: zh-TW, en-US Content-Language: zh-TW x-originating-ip: [172.22.81.100] x-kse-serverinfo: RTEXDAG01.realtek.com.tw, 9 x-kse-antispam-interceptor-info: fallback x-kse-antivirus-interceptor-info: fallback Content-Type: text/plain; charset="utf-8" Content-Transfer-Encoding: base64 MIME-Version: 1.0 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-ServerInfo: RTEXH36505.realtek.com.tw, 9 X-KSE-AntiSpam-Interceptor-Info: fallback X-KSE-Antivirus-Interceptor-Info: fallback X-KSE-AntiSpam-Interceptor-Info: fallback Precedence: bulk List-ID: X-Mailing-List: linux-kernel@vger.kernel.org PiBPbiBXZWQsIDExIE9jdCAyMDIzIGF0IDA3OjM2LCBSaWNreSBXVSA8cmlja3lfd3VAcmVhbHRl ay5jb20+IHdyb3RlOg0KPiA+DQo+ID4gSGkgVWxmIEhhbnNzb24sDQo+ID4NCj4gPiBDYW4gSSBr bm93IHdoYXQgaXMgdGhpcyBwYXRjaCBzdGF0dXMgb3IgaGFzIHNvbWUgY29uY2VybiBvbiB0aGlz IHBhdGNoPw0KPiANCj4gRGlkbid0IHlvdSByZWFkIG15IGVhcmxpZXIgcmVwbGllcz8NCj4gDQoN CkFyZSB5b3UgdGFsa2luZyBhYm91dCBCRlEgZm9yIHRlc3Rpbmcgc3BlZWQ/IA0KQmVjYXVzZSB3 ZSB0ZXN0ZWQgdGhlIFJlYWQvV3JpdGUgc3BlZWQgYXJlIGJldHRlciB0aGFuIGJlZm9yZSBhbmQg b3VyIGN1c3RvbWVyIHRoYXQgdXNlcyBvdXIgcmVhZGVyIG9uIHRoZWlyIHByb2R1Y3QgYWxzbyB0 ZXN0ZWQgdGhlIFJlYWQvV3JpdGUgc3BlZWQsIHRoZXkgd2FudCB1cyB0byBwdXNoIHRoaXMgcGF0 Y2ggb24gDQoNCg0KPiBLaW5kIHJlZ2FyZHMNCj4gVWZmZQ0KPiANCj4gPg0KPiA+IFJpY2t5DQo+ ID4gPiAtLS0tLU9yaWdpbmFsIE1lc3NhZ2UtLS0tLQ0KPiA+ID4gRnJvbTogVWxmIEhhbnNzb24g PHVsZi5oYW5zc29uQGxpbmFyby5vcmc+DQo+ID4gPiBTZW50OiBUaHVyc2RheSwgRmVicnVhcnkg MTAsIDIwMjIgMTA6NTcgUE0NCj4gPiA+IFRvOiBSaWNreSBXVSA8cmlja3lfd3VAcmVhbHRlay5j b20+DQo+ID4gPiBDYzogdG9tbXloZWJiQGdtYWlsLmNvbTsgbGludXgtbW1jQHZnZXIua2VybmVs Lm9yZzsNCj4gPiA+IGxpbnV4LWtlcm5lbEB2Z2VyLmtlcm5lbC5vcmcNCj4gPiA+IFN1YmplY3Q6 IFJlOiBbUEFUQ0ggdjNdIG1tYzogcnRzeDogaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3IgbXVsdGkg YmxvY2sgcncNCj4gPiA+DQo+ID4gPiBPbiBUaHUsIDEwIEZlYiAyMDIyIGF0IDA3OjQzLCBSaWNr eSBXVSA8cmlja3lfd3VAcmVhbHRlay5jb20+IHdyb3RlOg0KPiA+ID4gPg0KPiA+ID4gPg0KPiA+ ID4gPg0KPiA+ID4gPiA+IC0tLS0tT3JpZ2luYWwgTWVzc2FnZS0tLS0tDQo+ID4gPiA+ID4gRnJv bTogVWxmIEhhbnNzb24gPHVsZi5oYW5zc29uQGxpbmFyby5vcmc+DQo+ID4gPiA+ID4gU2VudDog TW9uZGF5LCBGZWJydWFyeSA3LCAyMDIyIDc6MTEgUE0NCj4gPiA+ID4gPiBUbzogUmlja3kgV1Ug PHJpY2t5X3d1QHJlYWx0ZWsuY29tPg0KPiA+ID4gPiA+IENjOiB0b21teWhlYmJAZ21haWwuY29t OyBsaW51eC1tbWNAdmdlci5rZXJuZWwub3JnOw0KPiA+ID4gPiA+IGxpbnV4LWtlcm5lbEB2Z2Vy Lmtlcm5lbC5vcmcNCj4gPiA+ID4gPiBTdWJqZWN0OiBSZTogW1BBVENIIHYzXSBtbWM6IHJ0c3g6 IGltcHJvdmUgcGVyZm9ybWFuY2UgZm9yIG11bHRpDQo+ID4gPiA+ID4gYmxvY2sgcncNCj4gPiA+ ID4gPg0KPiA+ID4gPiA+IFsuLi5dDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gPiA+ID4gRG8geW91IGhhdmUgYW55IHN1Z2dlc3Rpb24gZm9yIHRlc3Rpbmcg cmFuZG9tIEkvTyBCdXQgd2UNCj4gPiA+ID4gPiA+ID4gPiA+ID4gdGhpbmsgcmFuZG9tIEkvTyB3 aWxsIG5vdCBjaGFuZ2UgbXVjaA0KPiA+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiA+ IEkgd291bGQgcHJvYmFibHkgbG9vayBpbnRvIHVzaW5nIGZpbywNCj4gPiA+ID4gPiA+ID4gPiA+ IGh0dHBzOi8vZmlvLnJlYWR0aGVkb2NzLmlvL2VuL2xhdGVzdC8NCj4gPiA+ID4gPiA+ID4gPiA+ DQo+ID4gPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gPiBGaWxsZWQgcmFuZG9tIEkvTyBkYXRh DQo+ID4gPiA+ID4gPiA+ID4gQmVmb3JlIHRoZSBwYXRjaDoNCj4gPiA+ID4gPiA+ID4gPiBDTUQg KFJhbmRyZWFkKToNCj4gPiA+ID4gPiA+ID4gPiBzdWRvIGZpbyAtZmlsZW5hbWU9L2Rldi9tbWNi bGswIC1kaXJlY3Q9MSAtbnVtam9icz0xIC10aHJlYWQNCj4gPiA+ID4gPiA+ID4gPiAtZ3JvdXBf cmVwb3J0aW5nIC1pb2VuZ2luZT1wc3luYyAtaW9kZXB0aD0xIC1zaXplPTFHDQo+ID4gPiA+ID4g PiA+ID4gLW5hbWU9bXl0ZXN0IC1icz0xTSAtcnc9cmFuZHJlYWQNCj4gPiA+ID4gPiA+ID4NCj4g PiA+ID4gPiA+ID4gVGhhbmtzIGZvciBydW5uaW5nIHRoZSB0ZXN0cyEgT3ZlcmFsbCwgSSB3b3Vs ZCBub3QgZXhwZWN0IGFuDQo+ID4gPiA+ID4gPiA+IGltcGFjdCBvbiB0aGUgdGhyb3VnaHB1dCB3 aGVuIHVzaW5nIGEgYmlnIGJsb2Nrc2l6ZSBsaWtlIDFNLg0KPiA+ID4gPiA+ID4gPiBUaGlzIGlz IGFsc28gcHJldHR5IGNsZWFyIGZyb20gdGhlIHJlc3VsdCB5b3UgaGF2ZSBwcm92aWRlZC4NCj4g PiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ID4gSG93ZXZlciwgZXNwZWNpYWxseSBmb3IgcmFuZG9t IHdyaXRlcyBhbmQgcmVhZHMsIHdlIHdhbnQgdG8gdHJ5DQo+ID4gPiA+ID4gPiA+IHdpdGggc21h bGxlciBibG9ja3NpemVzLiBMaWtlIDhrIG9yIDE2aywgd291bGQgeW91IG1pbmQgcnVubmluZw0K PiA+ID4gPiA+ID4gPiBhbm90aGVyIHJvdW5kIG9mIHRlc3RzIHRvIHNlZSBob3cgdGhhdCB3b3Jr cyBvdXQ/DQo+ID4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gRmlsbGVkIHJh bmRvbSBJL08gZGF0YSg4ay8xNmspDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBIaSBSaWNreSwNCj4g PiA+ID4gPg0KPiA+ID4gPiA+IEFwb2xvZ2l6ZSBmb3IgdGhlIGRlbGF5ISBUaGFua3MgZm9yIHJ1 bm5pbmcgdGhlIHRlc3RzLiBMZXQgbWUNCj4gPiA+ID4gPiBjb21tZW50IG9uIHRoZW0gYmVsb3cu DQo+ID4gPiA+ID4NCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiBCZWZvcmUocmFuZHJlYWQpDQo+ ID4gPiA+ID4gPiA4azoNCj4gPiA+ID4gPiA+IENtZDogc3VkbyBmaW8gLWZpbGVuYW1lPS9kZXYv bW1jYmxrMCAtZGlyZWN0PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4gPiA+ID4gPiAtZ3JvdXBf cmVwb3J0aW5nIC1pb2VuZ2luZT1wc3luYyAtaW9kZXB0aD0xIC1zaXplPTFHIC1uYW1lPW15dGVz dA0KPiA+ID4gPiA+ID4gLWJzPThrIC1ydz1yYW5kcmVhZA0KPiA+ID4gPiA+ID4gbXl0ZXN0OiAo Zz0wKTogcnc9cmFuZHJlYWQsIGJzPShSKSA4MTkyQi04MTkyQiwgKFcpIDgxOTJCLTgxOTJCLA0K PiA+ID4gPiA+ID4gKFQpIDgxOTJCLTgxOTJCLCBpb2VuZ2luZT1wc3luYywgaW9kZXB0aD0xDQo+ ID4gPiA+ID4gPiByZXN1bHQ6DQo+ID4gPiA+ID4gPiBSdW4gc3RhdHVzIGdyb3VwIDAgKGFsbCBq b2JzKToNCj4gPiA+ID4gPiA+ICAgIFJFQUQ6IGJ3PTE2LjVNaUIvcyAoMTcuM01CL3MpLCAxNi41 TWlCL3MtMTYuNU1pQi9zDQo+ID4gPiA+ID4gPiAoMTcuM01CL3MtMTcuM01CL3MpLCBpbz0xMDI0 TWlCICgxMDc0TUIpLA0KPiBydW49NjIwMTktNjIwMTltc2VjDQo+ID4gPiBEaXNrDQo+ID4gPiA+ ID4gc3RhdHMgKHJlYWQvd3JpdGUpOg0KPiA+ID4gPiA+ID4gICBtbWNibGswOiBpb3M9MTMwNzU3 LzAsIG1lcmdlPTAvMCwgdGlja3M9NTc3NTEvMCwNCj4gaW5fcXVldWU9NTc3NTEsDQo+ID4gPiA+ ID4gPiB1dGlsPTk5Ljg5JQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IDE2azoNCj4gPiA+ID4g PiA+IENtZDogc3VkbyBmaW8gLWZpbGVuYW1lPS9kZXYvbW1jYmxrMCAtZGlyZWN0PTEgLW51bWpv YnM9MSAtdGhyZWFkDQo+ID4gPiA+ID4gPiAtZ3JvdXBfcmVwb3J0aW5nIC1pb2VuZ2luZT1wc3lu YyAtaW9kZXB0aD0xIC1zaXplPTFHIC1uYW1lPW15dGVzdA0KPiA+ID4gPiA+ID4gLWJzPTE2ayAt cnc9cmFuZHJlYWQNCj4gPiA+ID4gPiA+IG15dGVzdDogKGc9MCk6IHJ3PXJhbmRyZWFkLCBicz0o UikgMTYuMEtpQi0xNi4wS2lCLCAoVykNCj4gPiA+ID4gPiA+IDE2LjBLaUItMTYuMEtpQiwgKFQp IDE2LjBLaUItMTYuMEtpQiwgaW9lbmdpbmU9cHN5bmMsIGlvZGVwdGg9MQ0KPiA+ID4gPiA+ID4g cmVzdWx0Og0KPiA+ID4gPiA+ID4gUnVuIHN0YXR1cyBncm91cCAwIChhbGwgam9icyk6DQo+ID4g PiA+ID4gPiAgICBSRUFEOiBidz0yMy4zTWlCL3MgKDI0LjRNQi9zKSwgMjMuM01pQi9zLTIzLjNN aUIvcw0KPiA+ID4gPiA+ID4gKDI0LjRNQi9zLTI0LjRNQi9zKSwgaW89MTAyNE1pQiAoMTA3NE1C KSwNCj4gcnVuPTQ0MDM0LTQ0MDM0bXNlYw0KPiA+ID4gRGlzaw0KPiA+ID4gPiA+IHN0YXRzIChy ZWFkL3dyaXRlKToNCj4gPiA+ID4gPiA+ICAgbW1jYmxrMDogaW9zPTY1MzMzLzAsIG1lcmdlPTAv MCwgdGlja3M9Mzk0MjAvMCwNCj4gaW5fcXVldWU9Mzk0MjAsDQo+ID4gPiA+ID4gPiB1dGlsPTk5 Ljg0JQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEJlZm9yZShyYW5kcndyaXRlKQ0KPiA+ID4g PiA+ID4gOGs6DQo+ID4gPiA+ID4gPiBDbWQ6IHN1ZG8gZmlvIC1maWxlbmFtZT0vZGV2L21tY2Js azAgLWRpcmVjdD0xIC1udW1qb2JzPTEgLXRocmVhZA0KPiA+ID4gPiA+ID4gLWdyb3VwX3JlcG9y dGluZyAtaW9lbmdpbmU9cHN5bmMgLWlvZGVwdGg9MSAtc2l6ZT0xMDBNDQo+ID4gPiA+ID4gPiAt bmFtZT1teXRlc3QgLWJzPThrIC1ydz1yYW5kd3JpdGUNCj4gPiA+ID4gPiA+IG15dGVzdDogKGc9 MCk6IHJ3PXJhbmR3cml0ZSwgYnM9KFIpIDgxOTJCLTgxOTJCLCAoVykgODE5MkItODE5MkIsDQo+ ID4gPiA+ID4gPiAoVCkgODE5MkItODE5MkIsIGlvZW5naW5lPXBzeW5jLCBpb2RlcHRoPTENCj4g PiA+ID4gPiA+IHJlc3VsdDoNCj4gPiA+ID4gPiA+IFJ1biBzdGF0dXMgZ3JvdXAgMCAoYWxsIGpv YnMpOg0KPiA+ID4gPiA+ID4gICBXUklURTogYnc9NDA2MEtpQi9zICg0MTU4a0IvcyksIDQwNjBL aUIvcy00MDYwS2lCL3MNCj4gPiA+ID4gPiA+ICg0MTU4a0Ivcy00MTU4a0IvcyksIGlvPTEwME1p QiAoMTA1TUIpLCBydW49MjUyMjAtMjUyMjBtc2VjDQo+IERpc2sNCj4gPiA+ID4gPiA+IHN0YXRz DQo+ID4gPiA+ID4gKHJlYWQvd3JpdGUpOg0KPiA+ID4gPiA+ID4gICBtbWNibGswOiBpb3M9NTEv MTI3NTksIG1lcmdlPTAvMCwgdGlja3M9ODAvMjQxNTQsDQo+ID4gPiA+ID4gPiBpbl9xdWV1ZT0y NDIzNCwgdXRpbD05OS45MCUNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPiAxNms6DQo+ID4gPiA+ ID4gPiBDbWQ6IHN1ZG8gZmlvIC1maWxlbmFtZT0vZGV2L21tY2JsazAgLWRpcmVjdD0xIC1udW1q b2JzPTEgLXRocmVhZA0KPiA+ID4gPiA+ID4gLWdyb3VwX3JlcG9ydGluZyAtaW9lbmdpbmU9cHN5 bmMgLWlvZGVwdGg9MSAtc2l6ZT0xMDBNDQo+ID4gPiA+ID4gPiAtbmFtZT1teXRlc3QgLWJzPTE2 ayAtcnc9cmFuZHdyaXRlDQo+ID4gPiA+ID4gPiBteXRlc3Q6IChnPTApOiBydz1yYW5kd3JpdGUs IGJzPShSKSAxNi4wS2lCLTE2LjBLaUIsIChXKQ0KPiA+ID4gPiA+ID4gMTYuMEtpQi0xNi4wS2lC LCAoVCkgMTYuMEtpQi0xNi4wS2lCLCBpb2VuZ2luZT1wc3luYywgaW9kZXB0aD0xDQo+ID4gPiA+ ID4gPiByZXN1bHQ6DQo+ID4gPiA+ID4gPiBSdW4gc3RhdHVzIGdyb3VwIDAgKGFsbCBqb2JzKToN Cj4gPiA+ID4gPiA+ICAgV1JJVEU6IGJ3PTcyMDFLaUIvcyAoNzM3M2tCL3MpLCA3MjAxS2lCL3Mt NzIwMUtpQi9zDQo+ID4gPiA+ID4gPiAoNzM3M2tCL3MtNzM3M2tCL3MpLCBpbz0xMDBNaUIgKDEw NU1CKSwgcnVuPTE0MjIxLTE0MjIxbXNlYw0KPiBEaXNrDQo+ID4gPiA+ID4gPiBzdGF0cw0KPiA+ ID4gPiA+IChyZWFkL3dyaXRlKToNCj4gPiA+ID4gPiA+ICAgbW1jYmxrMDogaW9zPTUxLzYzNjcs IG1lcmdlPTAvMCwgdGlja3M9ODIvMTM2NDcsDQo+IGluX3F1ZXVlPTEzNzI4LA0KPiA+ID4gPiA+ ID4gdXRpbD05OS44MSUNCj4gPiA+ID4gPiA+DQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4gQWZ0 ZXIocmFuZHJlYWQpDQo+ID4gPiA+ID4gPiA4azoNCj4gPiA+ID4gPiA+IENtZDogc3VkbyBmaW8g LWZpbGVuYW1lPS9kZXYvbW1jYmxrMCAtZGlyZWN0PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4g PiA+ID4gPiAtZ3JvdXBfcmVwb3J0aW5nIC1pb2VuZ2luZT1wc3luYyAtaW9kZXB0aD0xIC1zaXpl PTFHIC1uYW1lPW15dGVzdA0KPiA+ID4gPiA+ID4gLWJzPThrIC1ydz1yYW5kcmVhZA0KPiA+ID4g PiA+ID4gbXl0ZXN0OiAoZz0wKTogcnc9cmFuZHJlYWQsIGJzPShSKSA4MTkyQi04MTkyQiwgKFcp IDgxOTJCLTgxOTJCLA0KPiA+ID4gPiA+ID4gKFQpIDgxOTJCLTgxOTJCLCBpb2VuZ2luZT1wc3lu YywgaW9kZXB0aD0xDQo+ID4gPiA+ID4gPiByZXN1bHQ6DQo+ID4gPiA+ID4gPiBSdW4gc3RhdHVz IGdyb3VwIDAgKGFsbCBqb2JzKToNCj4gPiA+ID4gPiA+ICAgIFJFQUQ6IGJ3PTEyLjRNaUIvcyAo MTMuME1CL3MpLCAxMi40TWlCL3MtMTIuNE1pQi9zDQo+ID4gPiA+ID4gPiAoMTMuME1CL3MtMTMu ME1CL3MpLCBpbz0xMDI0TWlCICgxMDc0TUIpLA0KPiBydW49ODIzOTctODIzOTdtc2VjDQo+ID4g PiBEaXNrDQo+ID4gPiA+ID4gc3RhdHMgKHJlYWQvd3JpdGUpOg0KPiA+ID4gPiA+ID4gICBtbWNi bGswOiBpb3M9MTMwNjQwLzAsIG1lcmdlPTAvMCwgdGlja3M9NzQxMjUvMCwNCj4gaW5fcXVldWU9 NzQxMjUsDQo+ID4gPiA+ID4gPiB1dGlsPTk5Ljk0JQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+ IDE2azoNCj4gPiA+ID4gPiA+IENtZDogc3VkbyBmaW8gLWZpbGVuYW1lPS9kZXYvbW1jYmxrMCAt ZGlyZWN0PTEgLW51bWpvYnM9MSAtdGhyZWFkDQo+ID4gPiA+ID4gPiAtZ3JvdXBfcmVwb3J0aW5n IC1pb2VuZ2luZT1wc3luYyAtaW9kZXB0aD0xIC1zaXplPTFHIC1uYW1lPW15dGVzdA0KPiA+ID4g PiA+ID4gLWJzPTE2ayAtcnc9cmFuZHJlYWQNCj4gPiA+ID4gPiA+IG15dGVzdDogKGc9MCk6IHJ3 PXJhbmRyZWFkLCBicz0oUikgMTYuMEtpQi0xNi4wS2lCLCAoVykNCj4gPiA+ID4gPiA+IDE2LjBL aUItMTYuMEtpQiwgKFQpIDE2LjBLaUItMTYuMEtpQiwgaW9lbmdpbmU9cHN5bmMsIGlvZGVwdGg9 MQ0KPiA+ID4gPiA+ID4gcmVzdWx0Og0KPiA+ID4gPiA+ID4gUnVuIHN0YXR1cyBncm91cCAwIChh bGwgam9icyk6DQo+ID4gPiA+ID4gPiAgICBSRUFEOiBidz0yMC4wTWlCL3MgKDIxLjBNQi9zKSwg MjAuME1pQi9zLTIwLjBNaUIvcw0KPiA+ID4gPiA+ID4gKDIxLjBNQi9zLTIxLjBNQi9zKSwgaW89 MTAyNE1pQiAoMTA3NE1CKSwNCj4gcnVuPTUxMDc2LTUxMDc2bXNlYw0KPiA+ID4gRGlzaw0KPiA+ ID4gPiA+IHN0YXRzIChyZWFkL3dyaXRlKToNCj4gPiA+ID4gPiA+ICAgbW1jYmxrMDogaW9zPTY1 MjgyLzAsIG1lcmdlPTAvMCwgdGlja3M9NDYyNTUvMCwNCj4gaW5fcXVldWU9NDYyNTQsDQo+ID4g PiA+ID4gPiB1dGlsPTk5Ljg3JQ0KPiA+ID4gPiA+ID4NCj4gPiA+ID4gPiA+IEFmdGVyKHJhbmR3 cml0ZSkNCj4gPiA+ID4gPiA+IDhrOg0KPiA+ID4gPiA+ID4gQ21kOiBzdWRvIGZpbyAtZmlsZW5h bWU9L2Rldi9tbWNibGswIC1kaXJlY3Q9MSAtbnVtam9icz0xIC10aHJlYWQNCj4gPiA+ID4gPiA+ IC1ncm91cF9yZXBvcnRpbmcgLWlvZW5naW5lPXBzeW5jIC1pb2RlcHRoPTEgLXNpemU9MTAwTQ0K PiA+ID4gPiA+ID4gLW5hbWU9bXl0ZXN0IC1icz04ayAtcnc9cmFuZHdyaXRlDQo+ID4gPiA+ID4g PiBteXRlc3Q6IChnPTApOiBydz1yYW5kd3JpdGUsIGJzPShSKSA4MTkyQi04MTkyQiwgKFcpIDgx OTJCLTgxOTJCLA0KPiA+ID4gPiA+ID4gKFQpIDgxOTJCLTgxOTJCLCBpb2VuZ2luZT1wc3luYywg aW9kZXB0aD0xDQo+ID4gPiA+ID4gPiByZXN1bHQ6DQo+ID4gPiA+ID4gPiBSdW4gc3RhdHVzIGdy b3VwIDAgKGFsbCBqb2JzKToNCj4gPiA+ID4gPiA+ICAgV1JJVEU6IGJ3PTQyMTVLaUIvcyAoNDMx N2tCL3MpLCA0MjE1S2lCL3MtNDIxNUtpQi9zDQo+ID4gPiA+ID4gPiAoNDMxN2tCL3MtNDMxN2tC L3MpLCBpbz0xMDBNaUIgKDEwNU1CKSwgcnVuPTI0MjkyLTI0MjkybXNlYw0KPiBEaXNrDQo+ID4g PiA+ID4gPiBzdGF0cw0KPiA+ID4gPiA+IChyZWFkL3dyaXRlKToNCj4gPiA+ID4gPiA+ICAgbW1j YmxrMDogaW9zPTUyLzEyNzE3LCBtZXJnZT0wLzAsIHRpY2tzPTg2LzIzMTgyLA0KPiA+ID4gPiA+ ID4gaW5fcXVldWU9MjMyNjcsIHV0aWw9OTkuOTIlDQo+ID4gPiA+ID4gPg0KPiA+ID4gPiA+ID4g MTZrOg0KPiA+ID4gPiA+ID4gQ21kOiBzdWRvIGZpbyAtZmlsZW5hbWU9L2Rldi9tbWNibGswIC1k aXJlY3Q9MSAtbnVtam9icz0xIC10aHJlYWQNCj4gPiA+ID4gPiA+IC1ncm91cF9yZXBvcnRpbmcg LWlvZW5naW5lPXBzeW5jIC1pb2RlcHRoPTEgLXNpemU9MTAwTQ0KPiA+ID4gPiA+ID4gLW5hbWU9 bXl0ZXN0IC1icz0xNmsgLXJ3PXJhbmR3cml0ZQ0KPiA+ID4gPiA+ID4gbXl0ZXN0OiAoZz0wKTog cnc9cmFuZHdyaXRlLCBicz0oUikgMTYuMEtpQi0xNi4wS2lCLCAoVykNCj4gPiA+ID4gPiA+IDE2 LjBLaUItMTYuMEtpQiwgKFQpIDE2LjBLaUItMTYuMEtpQiwgaW9lbmdpbmU9cHN5bmMsIGlvZGVw dGg9MQ0KPiA+ID4gPiA+ID4gcmVzdWx0Og0KPiA+ID4gPiA+ID4gUnVuIHN0YXR1cyBncm91cCAw IChhbGwgam9icyk6DQo+ID4gPiA+ID4gPiAgIFdSSVRFOiBidz02NDk5S2lCL3MgKDY2NTVrQi9z KSwgNjQ5OUtpQi9zLTY0OTlLaUIvcw0KPiA+ID4gPiA+ID4gKDY2NTVrQi9zLTY2NTVrQi9zKSwg aW89MTAwTWlCICgxMDVNQiksIHJ1bj0xNTc1Ni0xNTc1Nm1zZWMNCj4gRGlzaw0KPiA+ID4gPiA+ ID4gc3RhdHMNCj4gPiA+ID4gPiAocmVhZC93cml0ZSk6DQo+ID4gPiA+ID4gPiAgIG1tY2JsazA6 IGlvcz01MS82MzQ3LCBtZXJnZT0wLzAsIHRpY2tzPTg0LzE1MTIwLA0KPiBpbl9xdWV1ZT0xNTIw NCwNCj4gPiA+ID4gPiA+IHV0aWw9OTkuODAlDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBJdCBsb29r cyBsaWtlIHRoZSByYW5kLXJlYWQgdGVzdHMgYWJvdmUgYXJlIGRlZ3JhZGluZyB3aXRoIHRoZSBu ZXcNCj4gPiA+ID4gPiBjaGFuZ2VzLCB3aGlsZSByYW5kLXdyaXRlcyBhcmUgYm90aCBpbXByb3Zp bmcgYW5kIGRlZ3JhZGluZy4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IFRvIHN1bW1hcml6ZSBteSB2 aWV3IGZyb20gYWxsIHRoZSB0ZXN0cyB5b3UgaGF2ZSBkb25lIGF0IHRoaXMgcG9pbnQNCj4gPiA+ ID4gPiAodGhhbmtzIGEgbG90KTsgaXQgbG9va3MgbGlrZSB0aGUgYmxvY2sgSS9PIG1lcmdpbmcg aXNuJ3QgcmVhbGx5DQo+ID4gPiA+ID4gaGFwcGVuaW5nIGF0IGNvbW1vbiBibG9ja2xheWVyLCBh dCBsZWFzdCB0byB0aGF0IGV4dGVudCB0aGF0IHdvdWxkDQo+ID4gPiA+ID4gYmVuZWZpdCB1cy4g Q2xlYXJseSB5b3UgaGF2ZSBzaG93biB0aGF0IGJ5IHRoZSBzdWdnZXN0ZWQgY2hhbmdlIGluDQo+ ID4gPiA+ID4gdGhlIG1tYyBob3N0IGRyaXZlciwgYnkgZGV0ZWN0aW5nIHdoZXRoZXIgdGhlICJu ZXh0IiByZXF1ZXN0IGlzDQo+ID4gPiA+ID4gc2VxdWVudGlhbCB0byB0aGUgcHJldmlvdXMgb25l LCB3aGljaCBhbGxvd3MgdXMgdG8gc2tpcCBhDQo+ID4gPiA+ID4gQ01EMTIgYW5kIG1pbmltaXpl IHNvbWUgY29tbWFuZCBvdmVyaGVhZC4NCj4gPiA+ID4gPg0KPiA+ID4gPiA+IEhvd2V2ZXIsIGFj Y29yZGluZyB0byB0aGUgbGF0ZXN0IHRlc3RzIGFib3ZlLCB5b3UgaGF2ZSBhbHNvIHByb3ZlZA0K PiA+ID4gPiA+IHRoYXQgdGhlIGNoYW5nZXMgaW4gdGhlIG1tYyBob3N0IGRyaXZlciBkb2Vzbid0 IGNvbWUgd2l0aG91dCBhIGNvc3QuDQo+ID4gPiA+ID4gSW4gcGFydGljdWxhciwgc21hbGwgcmFu ZG9tLXJlYWRzIHdvdWxkIGRlZ3JhZGUgaW4gcGVyZm9ybWFuY2UgZnJvbQ0KPiA+ID4gPiA+IHRo ZXNlIGNoYW5nZXMuDQo+ID4gPiA+ID4NCj4gPiA+ID4gPiBUaGF0IHNhaWQsIGl0IGxvb2tzIHRv IG1lIHRoYXQgcmF0aGVyIHRoYW4gdHJ5aW5nIHRvIGltcHJvdmUgdGhpbmdzDQo+ID4gPiA+ID4g Zm9yIG9uZSBzcGVjaWZpYyBtbWMgaG9zdCBkcml2ZXIsIGl0IHdvdWxkIGJlIGJldHRlciB0byBs b29rIGF0IHRoaXMNCj4gPiA+ID4gPiBmcm9tIHRoZSBnZW5lcmljIGJsb2NrIGxheWVyIHBvaW50 IG9mIHZpZXcgLSBhbmQgaW52ZXN0aWdhdGUgd2h5DQo+ID4gPiA+ID4gc2VxdWVudGlhbCByZWFk cy93cml0ZXMgYXJlbid0IGdldHRpbmcgbWVyZ2VkIG9mdGVuIGVub3VnaCBmb3IgdGhlDQo+ID4g PiA+ID4gTU1DL1NEIGNhc2UuIElmIHdlIGNhbiBmaXggdGhlIHByb2JsZW0gdGhlcmUsIGFsbCBt bWMgaG9zdCBkcml2ZXJzDQo+IHdvdWxkDQo+ID4gPiBiZW5lZml0IEkgYXNzdW1lLg0KPiA+ID4g PiA+DQo+ID4gPiA+DQo+ID4gPiA+IFNvIHlvdSBhcmUgdGhpbmtpbmcgYWJvdXQgaG93IHRvIHBh dGNoIHRoaXMgaW4gTU1DL1NEPw0KPiA+ID4gPiBJIGRvbid0IGtub3cgaWYgdGhpcyBtZXRob2Qg aXMgY29tcGF0aWJsZSB3aXRoIG90aGVyIE1NQyBIb3N0cz8gT3INCj4gPiA+ID4gdGhleSBuZWVk IHRvIHBhdGNoIG90aGVyIGNvZGUgb24gdGhlaXIgaG9zdCBkcml2ZXINCj4gPiA+DQo+ID4gPiBJ IHdvdWxkIG5vdCBsaW1pdCB0aGlzIHRvIHRoZSBjb3JlIGxheWVyIG9mIE1NQy9TRC4gVGhlIHBv aW50IEkgd2FzIHRyeWluZyB0bw0KPiA+ID4gbWFrZSB3YXMgdGhhdCBpdCBkb2Vzbid0IGxvb2sg bGlrZSB0aGUgZ2VuZXJpYyBibG9jayBsYXllciBpcyBtZXJnaW5nIHRoZQ0KPiA+ID4gc2VxdWVu dGlhbCBJL08gcmVxdWVzdHMgaW4gdGhlIG1vc3QgZWZmaWNpZW50IHdheSwgYXQgbGVhc3QgZm9y IHRoZSBlTU1DL1NEDQo+ID4gPiBkZXZpY2VzLiBXaHkgdGhpcyBpcyB0aGUgY2FzZSwgSSBjYW4n dCB0ZWxsLiBJdCBsb29rcyBsaWtlIHdlIG5lZWQgdG8gZG8gc29tZQ0KPiBtb3JlDQo+ID4gPiBp bi1kZXB0aCBhbmFseXNpcyB0byB1bmRlcnN0YW5kIHdoeSBtZXJnaW5nIGlzbid0IGVmZmljaWVu dCBmb3IgdXMuDQo+ID4gPg0KPiA+ID4gPg0KPiA+ID4gPiA+IEJUVywgaGF2ZSB5b3UgdHJpZWQg d2l0aCBkaWZmZXJlbnQgSS9PIHNjaGVkdWxlcnM/IElmIHlvdSBoYXZlbid0DQo+ID4gPiA+ID4g dHJpZWQgQkZRLCBJIHN1Z2dlc3QgeW91IGRvIGFzIGl0J3MgYSBnb29kIGZpdCBmb3IgTU1DL1NE Lg0KPiA+ID4gPiA+DQo+ID4gPiA+DQo+ID4gPiA+IEkgZG9u4oCZdCBrbm93IHdoYXQgaXMgZGlm ZmVyZW50IEkvTyBzY2hlZHVsZXJzIG1lYW5zPw0KPiA+ID4NCj4gPiA+IFdoYXQgSS9PIHNjaGVk dWxlciBkaWQgeW91IHVzZSB3aGVuIHJ1bm5pbmcgdGhlIHRlc3Q/DQo+ID4gPg0KPiA+ID4gRm9y IE1NQy9TRCB0aGUgb25seSBvbmUgdGhhdCBtYWtlcyBzZW5zZSB0byB1c2UgaXMgQkZRLCBob3dl dmVyIHRoYXQNCj4gbmVlZHMNCj4gPiA+IHRvIGJlIGNvbmZpZ3VyZWQgdmlhIHN5c2ZzIGFmdGVy IGJvb3QuIFRoZXJlIGlzIG5vIHdheSwgY3VycmVudGx5LCB0byBtYWtlIGl0DQo+IHRoZQ0KPiA+ ID4gZGVmYXVsdCwgSSB0aGluay4gWW91IG1heSBsb29rIGF0IERvY3VtZW50YXRpb24vYmxvY2sv YmZxLWlvc2NoZWQucnN0LCBpZg0KPiB5b3UNCj4gPiA+IGFyZSBtb3JlIGludGVyZXN0ZWQuDQo+ ID4gPg0KPiA+ID4gS2luZCByZWdhcmRzDQo+ID4gPiBVZmZlDQo+ID4gPiAtLS0tLS1QbGVhc2Ug Y29uc2lkZXIgdGhlIGVudmlyb25tZW50IGJlZm9yZSBwcmludGluZyB0aGlzIGUtbWFpbC4NCj4g Pg0K