From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgau2.qq.com (smtpbgau2.qq.com [54.206.34.216]) by sourceware.org (Postfix) with ESMTPS id 9DFA63858C20 for ; Mon, 22 Aug 2022 08:46:02 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 9DFA63858C20 Authentication-Results: sourceware.org; dmarc=none (p=none dis=none) header.from=rivai.ai Authentication-Results: sourceware.org; spf=pass smtp.mailfrom=rivai.ai X-QQ-mid: bizesmtp72t1661157953t9pnr2ac Received: from LAPTOP-EPITNQBU ( [58.60.1.3]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 22 Aug 2022 16:45:52 +0800 (CST) X-QQ-SSF: 00400000002000C0I000B00A0000000 X-QQ-FEAT: UJd4nZbM1Cd/yYPYa4zUvtj34WOr3Ax7QwSjBZ9jadHh315EypFyUAqKmAvmv E2uhAlWBlnABtQc+EGCySGqk9i8OmM5wrvufbNUBxnrhxpp58/KXaV69on73g+UcpchliSc zmY+L+7noYhz+GlaFHrCv3eG/eaS+t96bozh3jDcyFXrMAOTOaLLzvivAaRXB4UA5jRa/fN BoNl1zEEMi/tH+TDyUNYQduXitd4YC3HWgqVI5kozqNJ/PNqZlNKAuWm9JkDbmMfx9khNCy PVcriag5s6utDw8LmkIrqDzDRgOH5t8OQhKPrIodFqft2h6zZFD0W6gnxsocyZxfPGlk+X8 Ttkn0noZ/CmeKY5mLvmwDfg7k1snSctD7MJoHBgoxcBW+x708+K/5WeWQU359Z/Fm0SMMMA 0QigLuCBz4z1wlLf9MjTb1ZWEkC7CBaW X-QQ-GoodBg: 2 Date: Mon, 22 Aug 2022 16:45:52 +0800 From: "juzhe.zhong@rivai.ai" To: richard.sandiford Cc: rguenther , gcc-patches , kito.cheng Subject: Re: Re: [PATCH] middle-end: skipp stepped vector test of poly_int (1, 1) and allow the machine_mode definition with poly_uint16 (1, 1) References: <20220818104608.259204-1-juzhe.zhong@rivai.ai>, , , , , , <8A43FD564C1D55FA+202208200923041010290@rivai.ai>, X-Priority: 3 X-GUID: E59555EB-6E25-411D-BC10-59BA19357509 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <787DDEDE66AD1087+202208221645522274775@rivai.ai> X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00, BODY_8BITS, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, MIME_CHARSET_FARAWAY, RCVD_IN_BARRACUDACENTRAL, RCVD_IN_DNSWL_NONE, RCVD_IN_MSPIKE_H2, SPF_HELO_PASS, SPF_PASS, TXREP, T_KAM_HTML_FONT_INVALID, T_SCC_BODY_TEXT_LINE, WEIRD_PORT autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 X-Content-Filtered-By: Mailman/MimeDel 2.1.29 X-BeenThere: gcc-patches@gcc.gnu.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: Gcc-patches mailing list List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Mon, 22 Aug 2022 08:46:10 -0000 VGhhbmtzIGZvciB5b3VyIHJlcGx5LiBZb3VyIHN1Z2dlc3Rpb24gIi0xIC0gKGludCkgaSIgaXMg YmV0dGVyLg0KDQpDYW4gSSBzZW5kIGFub3RoZXIgcGF0Y2ggdGhhdCBjaGFuZ2VzICJidWlsZGVy LnF1aWNrX3B1c2ggKGdlbl9pbnRfbW9kZSAoLShpbnQpIGksIGludF9tb2RlKSk7Ig0KaW50byCh sGJ1aWxkZXIucXVpY2tfcHVzaCAoZ2VuX2ludF9tb2RlICgtMSAtIChpbnQpIGksIGludF9tb2Rl KSk7IiB0aGVuIHlvdSBtZXJnZSBpdCBmb3IgbWU/DQoNCk9yIHlvdSBjaGFuZ2UgaXQgeW91cnNl bGY/DQogDQpUaGFuayB5b3Ugc28gbXVjaC4NCg0KDQoNCg0KanV6aGUuemhvbmdAcml2YWkuYWkN CiANCkZyb206IFJpY2hhcmQgU2FuZGlmb3JkDQpEYXRlOiAyMDIyLTA4LTIyIDE2OjMxDQpUbzog 1tO+09XcDQpDQzogcmd1ZW50aGVyOyBnY2MtcGF0Y2hlczsga2l0by5jaGVuZw0KU3ViamVjdDog UmU6IFtQQVRDSF0gbWlkZGxlLWVuZDogc2tpcHAgc3RlcHBlZCB2ZWN0b3IgdGVzdCBvZiBwb2x5 X2ludCAoMSwgMSkgYW5kIGFsbG93IHRoZSBtYWNoaW5lX21vZGUgZGVmaW5pdGlvbiB3aXRoIHBv bHlfdWludDE2ICgxLCAxKQ0K1tO+09XcIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4gd3JpdGVzOg0K PiBBZnRlciBkZWVwIGFuYWx5c2lzIGFuZCBzZXZlcmFsIHRyaWVzLiBJIGhhdmUgbWFkZSBhIGFu YWx5c2lzIGFuZCBjb25jbHVzaW9uIGFzIGZvbGxvd3MuDQo+IEkgcmVhbGx5IGFwcHJlY2lhdGUg aWYgeW91IGNvdWxkIHNwZW5kIHNvbWUgdGltZSB0YWtlIGEgbG9vayBhdCB0aGUgZm9sbG93aW5n IGFuYWx5c2lzIHRoYXQgSSBtYWRlOg0KPg0KPiBBY2NvcmRpbmcgdG8gdGhlIGNvZGVzIGluIHRl c3RfdmVjdG9yX3N1YnJlZ3NfZm9yZV9iYWNrOg0KPg0KPiB+fn4NCj4gIHBvbHlfdWludDY0IG51 bml0cyA9IEdFVF9NT0RFX05VTklUUyAoaW5uZXJfbW9kZSk7DQo+ICAgdW5zaWduZWQgaW50IG1p bl9udW5pdHMgPSBjb25zdGFudF9sb3dlcl9ib3VuZCAobnVuaXRzKTsNCj4gICBzY2FsYXJfbW9k ZSBpbnRfbW9kZSA9IEdFVF9NT0RFX0lOTkVSIChpbm5lcl9tb2RlKTsNCj4gICB1bnNpZ25lZCBp bnQgY291bnQgPSBnY2QgKG1pbl9udW5pdHMsIDQpOw0KPg0KPiAgIHJ0eF92ZWN0b3JfYnVpbGRl ciBidWlsZGVyIChpbm5lcl9tb2RlLCBjb3VudCwgMik7DQo+ICAgZm9yICh1bnNpZ25lZCBpbnQg aSA9IDA7IGkgPCBjb3VudDsgKytpKQ0KPiAgICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50 X21vZGUgKGksIGludF9tb2RlKSk7DQo+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBj b3VudDsgKytpKQ0KPiAgICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKC0oaW50 KSBpLCBpbnRfbW9kZSkpOw0KPiAgIHJ0eCB4ID0gYnVpbGRlci5idWlsZCAoKTsNCj4gfn5+fg0K Pg0KPiBBbmFseXplIHRoZSBjb2RlcyBhbmQgdHJpZWQgc2V2ZXJhbCBwYXR0ZXJuczoNCj4NCj4g Rm9yIHBvbHlfdWludDE2ICgyLDIpOg0KPiB4ID0gKGNvbnN0X3ZlY3RvcjpWTngxREkgWw0KPiAg ICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+ICAgICAgICAgKGNvbnN0X2ludCAxIFsweDFdKQ0K PiAgICAgICAgIHJlcGVhdCBbDQo+ICAgICAgICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+ICAg ICAgICAgICAgIChjb25zdF9pbnQgLTEgWzB4ZmZmZmZmZmZmZmZmZmZmZl0pDQo+ICAgICAgICAg XQ0KPiAgICAgXSkNCj4NCj4gRm9yIHBvbHlfdWludDE2ICg0LDQpOg0KPiB4ID0gKGNvbnN0X3Zl Y3RvcjpWTngxREkgWw0KPiAgICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+ICAgICAgICAgKGNv bnN0X2ludCAxIFsweDFdKQ0KPiAgICAgICAgIChjb25zdF9pbnQgMiBbMHgyXSkNCj4gICAgICAg ICAoY29uc3RfaW50IDMgWzB4M10pDQo+ICAgICAgICAgcmVwZWF0IFsNCj4gICAgICAgICAgICAg KGNvbnN0X2ludCAwIFswXSkNCj4gICAgICAgICAgICAgKGNvbnN0X2ludCAtMSBbMHhmZmZmZmZm ZmZmZmZmZmZmXSkNCj4gICAgICAgICAgICAgKGNvbnN0X2ludCAtMiBbMHhmZmZmZmZmZmZmZmZm ZmZlXSkNCj4gICAgICAgICAgICAgKGNvbnN0X2ludCAtMyBbMHhmZmZmZmZmZmZmZmZmZmZkXSkN Cj4gICAgICAgICBdDQo+ICAgICBdKQ0KPg0KPiBTbywgSSB0aGluayBJIGNhbiBjb25jbHVkZSB0 aGUgcGF0dGVybiBydWxlIGFzIGZvbGxvd3M6DQo+DQo+IHBvbHlfdWludDE2IChuLG4pOg0KPiB4 ID0gKGNvbnN0X3ZlY3RvcjpWTngxREkgWw0KPiAgICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+ ICAgICAgICAgKGNvbnN0X2ludCAxIFsweDFdKQ0KPiAgICAgICAgIChjb25zdF9pbnQgMiBbMHgy XSkNCj4gICAgICAgICAoY29uc3RfaW50IDMgWzB4M10pDQo+ICAgICAgICAgLi4uLi4uLi4uLi4u Li4uLi4uDQo+ICAgICAgICAgKGNvbnN0X2ludCBuIFtoZXgobildKQ0KPiAgICAgICAgIHJlcGVh dCBbDQo+ICAgICAgICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+ICAgICAgICAgICAgIChjb25z dF9pbnQgLTEgWzB4ZmZmZmZmZmZmZmZmZmZmZl0pDQo+ICAgICAgICAgICAgIChjb25zdF9pbnQg LTIgWzB4ZmZmZmZmZmZmZmZmZmZmZV0pDQo+ICAgICAgICAgICAgIChjb25zdF9pbnQgLTMgWzB4 ZmZmZmZmZmZmZmZmZmZmZF0pDQo+ICAgICAgICAgICAgIC4uLi4uLi4uLg0KPiAgICAgICAgICAg ICAgKGNvbnN0X2ludCAtbiBbaGV4KC1uKV0pDQo+ICAgICAgICAgXQ0KPiAgICAgXSkNCj4gQW0g SSB1bmRlcnN0YW5kaW5nIHJpZ2h0Pw0KPg0KPiBMZXQncyBmaXJzdCB0YWtlIGEgbG9vayBhdCB0 aGUgY29kZXMgeW91IHdyaXRlOg0KPg0KPiBydHhfdmVjdG9yX2J1aWxkZXIgYnVpbGRlciAoaW5u ZXJfbW9kZSwgY291bnQsIDIpOw0KPiAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291 bnQ7ICsraSkNCj4gICAgIGJ1aWxkZXIucXVpY2tfcHVzaCAoZ2VuX2ludF9tb2RlIChpLCBpbnRf bW9kZSkpOw0KPiAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCj4g ICAgIGJ1aWxkZXIucXVpY2tfcHVzaCAoZ2VuX2ludF9tb2RlICgtKGludCkgaSwgaW50X21vZGUp KTsNCj4gICBydHggeCA9IGJ1aWxkZXIuYnVpbGQgKCk7DQo+DQo+IFNvIGZvciBwb2x5X3VpbnQg KDEsMSk6DQo+IElkZWFsbHkgYWNjb3JkaW5nIHRvIHRoZSBjb2RlcywgeW91IHdhbnQgdG8gZ2Vu ZXJhdGUgdGhlIHBhdHRlcm4gbGlrZSB0aGlzOg0KPiB4ID0gKGNvbnN0X3ZlY3RvcjpWTngxREkg Ww0KPiAgICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+ICAgICAgICAgcmVwZWF0IFsNCj4gICAg ICAgICAgICAgKGNvbnN0X2ludCAwIFswXSkNCj4gICAgICAgICBdDQo+ICAgICBdKQ0KIA0KQWgs IHJpZ2h0LCB0aGUgdHdvIHN1YnNlcXVlbmNlcyBhcmUgc3VwcG9zZWQgdG8gYmUgZGlmZmVyZW50 Lg0KIA0KPiBJbiB5b3VyIGNvZGVzLCB3aGVuIGNvdW50ID0gMSBmb3IgcG9seV91aW50MTYgKDEs MSkuIEFuZCBpIDwgY291bnQgaXRlcmF0aW9uIG1ha2UgaSBhbHdheXMgaXMgMC4NCj4gSW4gdGhp cyBjYXNlLCBpID0gLWkgPSAwLg0KPg0KPiBTbyB3ZSB3aWxsIGVuZCB1cCB3aXRoIHRoZSBmaXJz dCB2YWx1ZSA9IDAsIGFuZCByZXBlYXQgdmFsdWUgaXMgYWxzbyAwLCBpbiAicnR4IHggPSBidWls ZGVyLmJ1aWxkICgpOyIuDQo+IEJlY2F1c2UgR0NDIHRoaW5rcyBhbGwgdGhlIHZhbHVlIGFyZSAw LCBzbyB0aGUgcGF0dGVybiBpcyBjaGFuZ2VkIGFzIGZvbGxvd3Mgd2hpY2ggaXMgbm90IGEgc3Rl cHBlZCB2ZWN0b3I6DQo+DQo+IHggPSAoY29uc3RfdmVjdG9yOlZOeDFESSByZXBlYXQgWw0KPiAg ICAgICAgIChjb25zdF9pbnQgMCBbMF0pDQo+ICAgICBdKQ0KPg0KPiBUaGlzIGlzIGEgY29uc3Rf dmVjdG9yIGR1cGxpY2F0ZSB2ZWN0b3IuDQo+IFRoaXMgaXMgbm90IHRoZSBjb3JyZWN0IHBhdHRl cm4geW91IHdhbnQgc28gaXQgZmFpbHMgaW4gdGhlIGZvbGxvd2luZyBjaGVjay4NCj4NCj4gSSB0 aGluayB0aGUgdGVzdCBwYXR0ZXJuIGdlbmVyYXRvciBnb2VzIHdyb25nIGluIHBvbHlfdWludDE2 ICgxLDEpIHdoaWNoIGlzIHRoZSBvbmx5IGNvcm5lciBjYXNlIHdpbGwgZ28gd3JvbmcuDQo+DQo+ IFRvIGZpeCB0aGlzLCB3ZSBzaG91bGQgYWRqdXN0IHRlc3QgcGF0dGVybiBnZW5lcmF0b3IgdG8g c3BlY2lmaWNhbGx5IHBvbHlfdWludDE2ICgxLDEpLiBXZSBzaG91bGQgbWFrZSBmaXJzdCB2YWx1 ZQ0KPiBhbmQgcmVwZWF0IHZhbHVlIGRpZmZlcmVudC4gSSB0cmllZCAyIHNvbHV0aW9uIGFuZCB0 aGV5IGJvdGggcGFzcyBmb3IgcG9seV91aW50MTYgKDEsMSk6DQo+DQo+ID09PT09PT09PT09PT09 PT0NCj4gT3JpZ2luYWwgY29kZXM6DQo+IHJ0eF92ZWN0b3JfYnVpbGRlciBidWlsZGVyIChpbm5l cl9tb2RlLCBjb3VudCwgMik7DQo+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3Vu dDsgKytpKQ0KPiAgICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKGksIGludF9t b2RlKSk7DQo+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQ0KPiAg ICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKC0oaW50KSBpLCBpbnRfbW9kZSkp Ow0KPiA9PT09PT09PT09PT09PT09DQo+DQo+ID09PT09PT09PT09PT09PT0NCj4gMXN0IHNvbHV0 aW9uOg0KPiBydHhfdmVjdG9yX2J1aWxkZXIgYnVpbGRlciAoaW5uZXJfbW9kZSwgY291bnQsIDIp Ow0KPiAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgY291bnQ7ICsraSkNCj4gICAgIGJ1 aWxkZXIucXVpY2tfcHVzaCAoZ2VuX2ludF9tb2RlIChjb3VudCA9PSAxID8gMSA6IGksIGludF9t b2RlKSk7DQo+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQ0KPiAg ICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKC0oaW50KSBpLCBpbnRfbW9kZSkp Ow0KPg0KPiB4ID0gKGNvbnN0X3ZlY3RvcjpWTngxREkgWw0KPiAgICAgICAgIChjb25zdF9pbnQg MCBbMF0pDQo+ICAgICAgICAgcmVwZWF0IFsNCj4gICAgICAgICAgICAgKGNvbnN0X2ludCAxIFsw eDFdKQ0KPiAgICAgICAgIF0NCj4gICAgIF0pDQo+ID09PT09PT09PT09PT09PT0NCj4NCj4gPT09 PT09PT09PT09PT09PQ0KPiAybmQgc29sdXRpb246DQo+IHJ0eF92ZWN0b3JfYnVpbGRlciBidWls ZGVyIChpbm5lcl9tb2RlLCBjb3VudCwgMik7DQo+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7 IGkgPCBjb3VudDsgKytpKQ0KPiAgICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUg KGksIGludF9tb2RlKSk7DQo+ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBjb3VudDsg KytpKQ0KPiAgICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKGNvdW50ID09IDEg PyAtMSA6IC0oaW50KSBpLCBpbnRfbW9kZSkpOw0KIA0KSSBkb24ndCB0aGluayB3ZSBuZWVkIHRv IHNpbmdsZSBvdXQgY291bnQgPT0gMS4gIEl0IHNob3VsZCBiZSBPSyB0byB1c2UNCi0xIC0gKGlu dCkgaSB1bmNvbmRpdGlvbmFsbHkuDQogDQpUaGFua3MsDQpSaWNoYXJkDQogDQo+IHg9IA0KPiAo Y29uc3RfdmVjdG9yOlZOeDFESSBbDQo+ICAgICAgICAgKGNvbnN0X2ludCAwIFswXSkNCj4gICAg ICAgICByZXBlYXQgWw0KPiAgICAgICAgICAgICAoY29uc3RfaW50IC0xIFsweGZmZmZmZmZmZmZm ZmZmZmZdKQ0KPiAgICAgICAgIF0NCj4gICAgIF0pDQo+ID09PT09PT09PT09PT09PT0NCj4NCj4g RG8geW91IGFncmVlIHdpdGggdGhlc2Ugc29sdXRpb24/IE9yIHlvdSBjb3VsZCBvZmZlciBhIGJl dHRlciBzb2x1dGlvbiB0byBmaXggdGhpcz8gVGhhbmsgeW91IHNvIG11Y2guDQo+DQo+DQo+IGp1 emhlLnpob25nQHJpdmFpLmFpDQo+ICANCj4gRnJvbTogUmljaGFyZCBTYW5kaWZvcmQNCj4gRGF0 ZTogMjAyMi0wOC0xOSAyMDo1Mg0KPiBUbzoganV6aGUuemhvbmdcQHJpdmFpLmFpDQo+IENDOiBn Y2MtcGF0Y2hlczsgcmd1ZW50aGVyOyBraXRvLmNoZW5nDQo+IFN1YmplY3Q6IFJlOiBbUEFUQ0hd IG1pZGRsZS1lbmQ6IHNraXBwIHN0ZXBwZWQgdmVjdG9yIHRlc3Qgb2YgcG9seV9pbnQgKDEsIDEp IGFuZCBhbGxvdyB0aGUgbWFjaGluZV9tb2RlIGRlZmluaXRpb24gd2l0aCBwb2x5X3VpbnQxNiAo MSwgMSkNCj4gImp1emhlLnpob25nQHJpdmFpLmFpIiA8anV6aGUuemhvbmdAcml2YWkuYWk+IHdy aXRlczoNCj4+PiBBaCwgcmlnaHQsIHNvcnJ5IGZvciB0aGUgYm9ndXMgc3VnZ2VzdGlvbi4NCj4+ PiBJbiB0aGF0IGNhc2UsIHdoYXQgc3BlY2lmaWNhbGx5IGdvZXMgd3Jvbmc/ICBXaGljaCB0ZXN0 IGluDQo+Pj4gdGVzdF92ZWN0b3Jfc3VicmVnc19tb2RlcyBmYWlscywgYW5kIHdoYXQgZG9lcyB0 aGUgSUNFIGxvb2sgbGlrZT8NCj4+DQo+PiBCZWNhdXNlIG1heV9iZSAobnVuaXRzLCAxKSByZXR1 cm4gdHJ1ZS4gRm9yIG51bml0cyA9ICgxLDEpLCBpdCB3aWxsIGV4ZWN1dGUgdGVzdF92ZWN0b3Jf c3VicmVnc19tb2Rlcy4NCj4+IFRoZSBmYWlsIElDRToNCj4+IC4uLy4uLy4uL3Jpc2N2LWdjYy9n Y2Mvc2ltcGxpZnktcnR4LmNjOjgzOTY6IHRlc3RfdmVjdG9yX3N1YnJlZ3NfbW9kZXM6IEZBSUw6 IEFTU0VSVF9SVFhfRVEgKGV4cGVjdGVkLCBzaW1wbGlmeV9zdWJyZWcgKFFJbW9kZSwgeCwgaW5u ZXJfbW9kZSwgYnl0ZSkpDQo+PiAgIGV4cGVjdGVkOiAobmlsKQ0KPj4NCj4+ICAgYWN0dWFsOiAo Y29uc3RfaW50IDAgWzBdKQ0KPj4gY2MxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gYXNz ZXJ0X3J0eF9lcV9hdCwgYXQgc2VsZnRlc3QtcnRsLmNjOjU3DQo+PiAweDEzMDRlZTEgc2VsZnRl c3Q6OmFzc2VydF9ydHhfZXFfYXQoc2VsZnRlc3Q6OmxvY2F0aW9uIGNvbnN0JiwgY2hhciBjb25z dCosIHJ0eF9kZWYqLCBydHhfZGVmKikNCj4+ICAgICAgICAgLi4vLi4vLi4vcmlzY3YtZ2NjL2dj Yy9zZWxmdGVzdC1ydGwuY2M6NTcNCj4+IDB4MTMzMjUwNCB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX21v ZGVzDQo+PiAgICAgICAgIC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2ltcGxpZnktcnR4LmNjOjgz OTUNCj4+IDB4MTMzMjk4OCB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX2ZvcmVfYmFjaw0KPj4gICAgICAg ICAuLi8uLi8uLi9yaXNjdi1nY2MvZ2NjL3NpbXBsaWZ5LXJ0eC5jYzo4NDQyDQo+PiAweDEzMzJh ZTcgdGVzdF92ZWN0b3Jfc3VicmVncw0KPj4gICAgICAgICAuLi8uLi8uLi9yaXNjdi1nY2MvZ2Nj L3NpbXBsaWZ5LXJ0eC5jYzo4NDY3DQo+PiAweDEzMzJjNTcgdGVzdF92ZWN0b3Jfb3BzDQo+PiAg ICAgICAgIC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2ltcGxpZnktcnR4LmNjOjg0ODcNCj4+IDB4 MTMzMmM3YiBzZWxmdGVzdDo6c2ltcGxpZnlfcnR4X2NjX3Rlc3RzKCkNCj4+ICAgICAgICAgLi4v Li4vLi4vcmlzY3YtZ2NjL2djYy9zaW1wbGlmeS1ydHguY2M6ODU0Nw0KPj4gMHgyMTMxOGZhIHNl bGZ0ZXN0OjpydW5fdGVzdHMoKQ0KPj4gICAgICAgICAuLi8uLi8uLi9yaXNjdi1nY2MvZ2NjL3Nl bGZ0ZXN0LXJ1bi10ZXN0cy5jYzoxMTUNCj4+IDB4MTM2MmE3NiB0b3BsZXY6OnJ1bl9zZWxmX3Rl c3RzKCkNCj4+ICAgICAgICAgLi4vLi4vLi4vcmlzY3YtZ2NjL2djYy90b3BsZXYuY2M6MjIwNQ0K Pj4NCj4+IEkgYW5hbHl6ZWQgdGhlIGNvZGVzOg0KPj4gSW4gdGVzdF92ZWN0b3Jfc3VicmVnc19m b3JlX2JhY2ssIHdoZW4gbnVuaXRzID0gKDEsMSkuIFRoZSBleHBlY3RlZCA9IE5VTExfUlRYIGFu ZCBzaW1wbGlmeV9zdWJyZWcgKFFJbW9kZSwgeCwgaW5uZXJfbW9kZSwgYnl0ZSkgPSBjb25zdF9p bnQgMC4NCj4+IFNvIHRoZSBhc3NlcnRpb24gZmFpbHMuDQo+ICANCj4gSG1tLCBvaywgc28gdGhl IHN1YnJlZyBvcGVyYXRpb24gaXMgdW5leHBlY3RlZCBzdWNjZWVkaW5nLg0KPiAgDQo+PiBUaGlz IGlzIHRoZSB0ZXN0IGZvciBzdGVwcGVkIHZlY3RvciB1c2luZyAyIGVsZW1lbnQgcGVyIHBhdHRl cm4uICBGb3IgcG9seV91aW50MTYgKDEsMSksIGl0J3MgdHJ1ZSBpdCBpcyBwb3NzaWJsZSBvbmx5 IGhhcyAxIGVsZW1lbnQuIA0KPiAgDQo+IFRoZSBzdGVwcGVkIGNhc2UgaXMgMyBlbGVtZW50cyBw ZXIgcGF0dGVybiByYXRoZXIgdGhhbiAyLiAgSW4gYSBzdGVwcGVkDQo+IHBhdHRlcm46IGEsIGIs IGIrbiBhcmUgcmVwcmVzZW50ZWQgZXhwbGljaXRseSwgdGhlbiB0aGUgcmVzdCBhcmUNCj4gaW1w bGljaXRseSBiK24qMiwgYituKjMsIGV0Yy4NCj4gIA0KPiBUaGUgY2FzZSBiZWluZyBoYW5kbGVk IGJ5IHRoaXMgY29kZSBpcyBpbnN0ZWFkIHRoZSAyLWVsZW1lbnQgY2FzZToNCj4gYSwgYiBhcmUg cmVwcmVzZW50ZWQgZXhwbGljaXRseSwgdGhlbiB0aGUgcmVzdCBhcmUgaW1wbGljaXRseSBhbGwg Yi4NCj4gIA0KPiBXaHkgaXMgKDEsMSkgZGlmZmVyZW50IHRob3VnaD8gIFRoZSB0ZXN0IGlzIGNv bnN0cnVjdGluZzoNCj4gIA0KPiAgIG51bml0czogMSArIDF4DQo+ICAgc2hhcGU6IG5lbHRzX3Bl cl9wYXR0ZXJuID09IDIsIG5wYXR0ZXJucyA9PSAxDQo+ICAgZWxlbWVudHM6IGEsIGJbLCBiLCBi LCBiLCBiLCAuLi5dDQo+ICANCj4gSXQgdGhlbiB0ZXN0cyBzdWJyZWdzIHN0YXJ0aW5nIGF0IDAg KyAxeCAoc28gc3RhcnRpbmcgYXQgdGhlIGZpcnN0IGIpLg0KPiBCdXQgZm9yICgyLDIpIHdlIHNo b3VsZCBoYXZlOg0KPiAgDQo+ICAgbnVuaXRzOiAyICsgMngNCj4gICBzaGFwZTogbmVsdHNfcGVy X3BhdHRlcm4gPT0gMiwgbnBhdHRlcm5zID09IDINCj4gICBlbGVtZW50czogYTEsIGEyLCBiMSwg YjJbLCBiMSwgYjIsIGIxLCBiMiwgLi4uXQ0KPiAgDQo+IGFuZCB3ZSBzaG91bGQgdGVzdCBzdWJy ZWdzIHN0YXJ0aW5nIGF0IDAgKyAyeCAoc28gc3RhcnRpbmcgYXQgdGhlDQo+IGZpcnN0IGIxKS4g IFRoZSB0d28gY2FzZXMgc2hvdWxkIGJlIHZlcnkgc2ltaWxhciwgaXQncyBqdXN0IHRoYXQgdGhl DQo+ICgyLDIpIGNhc2UgZG91YmxlcyB0aGUgbnVtYmVyIG9mIHBhdHRlcm5zLg0KPiAgDQo+PiBJ IHRoaW5rIGl0IG1ha2VzIHNlbnNlIHRvIGZhaWwgdGhlIHRlc3QuIEhvd2V2ZXIgZm9yIHBvbHkg KDEsMSkgbWFjaGluZSBtb2RlLCBjYW4gd2UgaGF2ZSB0aGUgY2hhbmNlIHRoYXQgc29tZSB0YXJn ZXQgZGVmaW5lIHRoaXMNCj4+IGtpbmQgb2YgbWFjaGluZSBtb2RlIG9ubHkgdXNlZCBmb3IgaW50 cmluc2ljcz8gIEkgYWxyZWFkeSBkZXZlbG9wZWQgZnVsbCBSVlYgc3VwcG9ydCBpbiBHQ0MgKGlu Y2x1ZGluZyBpbnRyaW5zYyBhbmQgYXV0by12ZWN0b3JpemF0aW9uKS4NCj4+IEkgb25seSBlbmFi bGUgYXV0by12ZWN0b3JpemF0aW9uIHdpdGggbW9kZSBsYXJnZXIgdGhhbiAoMiwyKSBhbmQgdGVz dCBpdCBmdWxseS4NCj4+IEZyb20gbXkgZXhwZXJpZW5jZSwgaXQgc2VlbXMgdGhlIHN0ZXBwZWQg dmVjdG9yIG9ubHkgY3JlYXRlZCBkdXJpbmcgVkxBIGF1dG8tdmVjdG9yaXphdGlvbi4gQW5kIEkg dGhpbmsgb25seSBhbGxvdyBwb2x5ICgxLDEpbW9kZSB1c2VkIGluIGludHJpbnNpY3Mgd2lsbA0K Pj4gbm90IGNyZWF0ZSBpc3N1ZXMuIEFtIEkgdW5kZXJzdGFuZGluZyB3cm9uZyCjv0ZlZWwgZnJl ZSB0byBjb3JyZWN0IG1lLiBUaGFua3Mgfg0KPiAgDQo+IEZvbGxvd2luZyBvbiBmcm9tIHdoYXQg SSBzYWlkIGFib3ZlLCBpdCBkb2Vzbid0IGxvb2sgbGlrZSB0aGlzIHBhcnRpY3VsYXINCj4gY2Fz ZSBpcyByZWxhdGVkIHRvIHN0ZXBwZWQgdmVjdG9ycy4NCj4gIA0KPiAoMSwxKSBzaG91bGRuJ3Qg KG5lZWQgdG8pIGJlIGEgc3BlY2lhbCBjYXNlIHRob3VnaC4gIEFueSBwb3RlbnRpdGFsDQo+IHBy b2JsZW1zIHRoYXQgd291bGQgb2NjdXIgZm9yICgxLDEpIHdpdGggbnBhdHRlcm5zPT0xIHdvdWxk IGFsc28gb2NjdXINCj4gZm9yIChuLG4pIHdpdGggbnBhdHRlcm5zPT1uLiAgRS5nLiBpZiBzdGVw cGVkIHZlY3RvcnMgYXJlIHByb2JsZW1hdGljDQo+IGZvciAoMSwxKSB0aGVuIGFuIGludGVybGVh dmluZyBvZiAyIHN0ZXBwZWQgdmVjdG9ycyAoaS5lLiBucGF0dGVybnM9PTIpDQo+IHdvdWxkIGJl IHByb2JsZW1hdGljIGZvciAoMiwyKS4NCj4gIA0KPiBTbyB5ZWFoLCBwcmV2ZW50aW5nIGEgbW9k ZSBiZWluZyB1c2VkIGZvciBhdXRvdmVjdG9yaXNhdGlvbiB3b3VsZCBhbGxvdw0KPiB0aGUgdGFy Z2V0IHRvIGhhdmUgYSBiaXQgbW9yZSBjb250cm9sIG92ZXIgd2hpY2ggY29uc3RhbnRzIGFyZSBh Y3R1YWxseQ0KPiBnZW5lcmF0ZWQuICBCdXQgaXQgc2hvdWxkbid0IGJlIG5lY2Vzc2FyeSB0byBk byB0aGF0IGZvciBjb3JyZWN0bmVzcy4NCj4gIA0KPiBUaGFua3MsDQo+IFJpY2hhcmQNCj4gIA0K Pj4ganV6aGUuemhvbmdAcml2YWkuYWkNCj4+ICANCj4+IEZyb206IFJpY2hhcmQgU2FuZGlmb3Jk DQo+PiBEYXRlOiAyMDIyLTA4LTE5IDE3OjM1DQo+PiBUbzoganV6aGUuemhvbmdcQHJpdmFpLmFp DQo+PiBDQzogcmd1ZW50aGVyOyBnY2MtcGF0Y2hlczsga2l0by5jaGVuZw0KPj4gU3ViamVjdDog UmU6IFtQQVRDSF0gbWlkZGxlLWVuZDogc2tpcHAgc3RlcHBlZCB2ZWN0b3IgdGVzdCBvZiBwb2x5 X2ludCAoMSwgMSkgYW5kIGFsbG93IHRoZSBtYWNoaW5lX21vZGUgZGVmaW5pdGlvbiB3aXRoIHBv bHlfdWludDE2ICgxLCAxKQ0KPj4gImp1emhlLnpob25nQHJpdmFpLmFpIiA8anV6aGUuemhvbmdA cml2YWkuYWk+IHdyaXRlczoNCj4+PiBIaSwgUmljaGFyZC4gSSB0cmllZCB0aGUgY29kZXM6DQo+ Pj4gaWYgKCFudW5pdHMuaXNfY29uc3RhbnQgKCkgJiYgbWF5YmVfZ3QgKG51bml0cywgMSkpIA0K Pj4+IHRlc3RfdmVjdG9yX3N1YnJlZ3NfbW9kZXMgKHgsIG51bml0cyAtIG1pbl9udW5pdHMsIGNv dW50KTsNCj4+Pg0KPj4+IEl0IHN0aWxsIGZhaWxlZC4gRm9yIG51bml0cyA9ICgxLDEpICwgbWF5 YmVfZ3QgKG51bml0cywgMSkgcmV0dXJuIHRydWUgdmFsdWUuDQo+PiAgDQo+PiBBaCwgcmlnaHQs IHNvcnJ5IGZvciB0aGUgYm9ndXMgc3VnZ2VzdGlvbi4NCj4+ICANCj4+IEluIHRoYXQgY2FzZSwg d2hhdCBzcGVjaWZpY2FsbHkgZ29lcyB3cm9uZz8gIFdoaWNoIHRlc3QgaW4NCj4+IHRlc3RfdmVj dG9yX3N1YnJlZ3NfbW9kZXMgZmFpbHMsIGFuZCB3aGF0IGRvZXMgdGhlIElDRSBsb29rIGxpa2U/ DQo+PiAgDQo+PiBUaGFua3MsDQo+PiBSaWNoYXJkDQo+PiAgDQo+Pj4gQnV0IEkgdHJpZWQ6DQo+ Pj4gaWYgKCFudW5pdHMuaXNfY29uc3RhbnQgKCkgJiYga25vd25fZ3QgKG51bml0cywgMSkpIA0K Pj4+IHRlc3RfdmVjdG9yX3N1YnJlZ3NfbW9kZXMgKHgsIG51bml0cyAtIG1pbl9udW5pdHMsIGNv dW50KTsNCj4+PiBJdCBwYXNzLiBCdXQgaXQgcmVwb3J0IGEgd2FybmluZzogIndhcm5pbmc6IGNv bXBhcmlzb24gYmV0d2VlbiBzaWduZWQgYW5kIHVuc2lnbmVkIGludGVnZXIgZXhwcmVzc2lvbnMg Wy1Xc2lnbi1jb21wYXJlXSIgZHVyaW5nIHRoZSBjb21waWxhdGlvbi4NCj4+Pg0KPj4+IEZpbmFs bHksIEkgdHJpZWQ6DQo+Pj4gaWYgKCFudW5pdHMuaXNfY29uc3RhbnQgKCkgJiYga25vd25fZ3Qg KEdFVF9NT0RFX05VTklUUyAoaW5uZXJfbW9kZSksIDEpKSANCj4+PiB0ZXN0X3ZlY3Rvcl9zdWJy ZWdzX21vZGVzICh4LCBudW5pdHMgLSBtaW5fbnVuaXRzLCBjb3VudCk7DQo+Pj4gSXQgcGFzc2Vk IHdpdGggbm8gd2FybmluZy4NCj4+Pg0KPj4+IElzICdrbm93bl9ndCAoR0VUX01PREVfTlVOSVRT IChpbm5lcl9tb2RlKSwgMSknIGEgZ29vZCBzb2x1dGlvbiBmb3IgdGhpcz8NCj4+PiBUaGFua3Mh DQo+Pj4NCj4+Pg0KPj4+IGp1emhlLnpob25nQHJpdmFpLmFpDQo+Pj4gIA0KPj4+IEZyb206IFJp Y2hhcmQgU2FuZGlmb3JkDQo+Pj4gRGF0ZTogMjAyMi0wOC0xOSAxNjowMw0KPj4+IFRvOiBqdXpo ZS56aG9uZw0KPj4+IENDOiBnY2MtcGF0Y2hlczsgcmd1ZW50aGVyOyBraXRvLmNoZW5nDQo+Pj4g U3ViamVjdDogUmU6IFtQQVRDSF0gbWlkZGxlLWVuZDogc2tpcHAgc3RlcHBlZCB2ZWN0b3IgdGVz dCBvZiBwb2x5X2ludCAoMSwgMSkgYW5kIGFsbG93IHRoZSBtYWNoaW5lX21vZGUgZGVmaW5pdGlv biB3aXRoIHBvbHlfdWludDE2ICgxLCAxKQ0KPj4+IGp1emhlLnpob25nQHJpdmFpLmFpIHdyaXRl czoNCj4+Pj4gRnJvbTogemhvbmdqdXpoZSA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+Pj4+DQo+ Pj4+IEhlbGxvLiBUaGlzIHBhdGNoIGlzIHByZXBhcmluZyBmb3IgZm9sbG93aW5nIFJWViBzdXBw b3J0Lg0KPj4+Pg0KPj4+PiBCb3RoIEFSTSBTVkUgYW5kIFJWViAoUklTQy1WICdWJyBFeHRlbnNp b24pIHN1cHBvcnQgbGVuZ3RoLWFnbm9zdGljIHZlY3Rvci4NCj4+Pj4gVGhlIG1pbmltdW0gdmVj dG9yIGxlbmd0aCBvZiBBUk0gU1ZFIGlzIDEyOC1iaXQgYW5kIHRoZSBydW50aW1lIGludmFyaWFu dCBvZiBBUk0gU1ZFIGlzIGFsd2F5cyAxMjgtYml0IGJsb2Nrcy4NCj4+Pj4gSG93ZXZlciwgdGhl IG1pbmltdW0gdmVjdG9yIGxlbmd0aCBvZiBSVlYgY2FuIGJlIDMyYml0IGluICdadmUzMionIHN1 Yi1leHRlbnNpb24gYW5kIDY0Yml0IGluICdadmUqJyBzdWItZXh0ZW5zaW9uLg0KPj4+Pg0KPj4+ PiBTbyBJIGRlZmluZSB0aGUgbWFjaGluZV9tb2RlIGFzIGZvbGxvd3M6DQo+Pj4+IFZFQ1RPUl9N T0RFX1dJVEhfUFJFRklYIChWTngsIElOVCwgREksIDEsIDApOw0KPj4+PiBBREpVU1RfTlVOSVRT IChNT0RFLCByaXNjdl92ZWN0b3JfY2h1bmtzKTsNCj4+Pj4gVGhlIHJpc2N2X3ZlY3Rvcl9jaHVu a3MgPSBwb2x5X3VpbnQxNiAoMSwgMSkNCj4+Pj4NCj4+Pj4gVGhlIGNvbXBpbGF0aW9uIGlzIGZh aWxlZCBmb3IgdGhlIHN0ZXBwZWQgdmVjdG9yIHRlc3Q6DQo+Pj4+IChjb25zdF92ZWN0b3I6Vk54 MURJIHJlcGVhdCBbDQo+Pj4+ICAgICAgICAgKGNvbnN0X2ludCA4IFsweDhdKQ0KPj4+PiAgICAg ICAgIChjb25zdF9pbnQgNyBbMHg3XSkNCj4+Pj4gICAgIF0pDQo+Pj4+DQo+Pj4+IEkgdW5kZXJz dGFuZCBmb3Igc3RlcHBlZCB2ZWN0b3Igc2hvdWxkIGFsd2F5cyBoYXZlIGFsZWFzdCAyIGVsZW1l bnRzIGFuZCBzdGVwcGVkIHZlY3RvciBpbml0aWFsaXphdGlvbiBpcyBjb21tb24NCj4+Pj4gZm9y IFZMQSAodmVjdG9yLWxlbmd0aGUgYWdub3N0aWMpIGF1dG8tdmVjdG9yaXphdGlvbi4gSXQgbWFr ZXMgc2Vuc2UgdGhhdCByZXBvcnQgZmFpbCBmb3Igc3RlcHBlZCB2ZWN0b3Igb2YgcG9seV91aW50 MTYgKDEsIDEpLg0KPj4+Pg0KPj4+PiBtYWNoaW5lIG1vZGUgd2l0aCBudW5pdHMgPSBwb2x5X3Vp bnQxNiAoMSwgMSkgbmVlZHMgdG8gaW1wbGVtZW50ZWQgaW4gaW50cmluc2ljcy4gQW5kIEkgd291 bGQgbGlrZSB0byBlbmFibGUgUlZWIGF1dG8tdmVjdG9yaXphdGlvbg0KPj4+PiB3aXRoIHZlY3Rv ciBtb2RlIG9ubHkgbnVuaXRzIGlzIGxhcmdlciB0aGFuIHBvbHlfdWludDE2ICgyLCAyKSBpbiBS SVNDLVYgYmFja2VuZC4gSSB0aGluayBpdCB3aWxsIG5vdCBjcmVhdGUgaXNzdWUgaWYgd2UgZGVm aW5lDQo+Pj4+IHZlY3RvciBtb2RlIHdpdGggbnVuaXRzID0gcG9seV91aW50MTYgKDEsIDEpLiBG ZWVsIGZyZWUgdG8gY29ycmVjdCBtZSBvciBvZmZlciBtZSBzb21lIG90aGVyIGJldHRlciBzb2x1 dGlvbnMuIFRoYW5rcyENCj4+Pj4NCj4+Pj4gICANCj4+Pj4NCj4+Pj4gZ2NjL0NoYW5nZUxvZzoN Cj4+Pj4NCj4+Pj4gICAgICAgICAqIHNpbXBsaWZ5LXJ0eC5jYyAodGVzdF92ZWN0b3Jfc3VicmVn c19mb3JlX2JhY2spOiBza2lwIHRlc3QgZm9yIHBvbHlfdWludDE2ICgxLCAxKS4NCj4+Pj4NCj4+ Pj4gLS0tDQo+Pj4+ICBnY2Mvc2ltcGxpZnktcnR4LmNjIHwgMiArLQ0KPj4+PiAgMSBmaWxlIGNo YW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pDQo+Pj4+DQo+Pj4+IGRpZmYgLS1n aXQgYS9nY2Mvc2ltcGxpZnktcnR4LmNjIGIvZ2NjL3NpbXBsaWZ5LXJ0eC5jYw0KPj4+PiBpbmRl eCA3ZDA5YmY3MTAzZC4uNjFlMGRmYTAwZDAgMTAwNjQ0DQo+Pj4+IC0tLSBhL2djYy9zaW1wbGlm eS1ydHguY2MNCj4+Pj4gKysrIGIvZ2NjL3NpbXBsaWZ5LXJ0eC5jYw0KPj4+PiBAQCAtODQzOCw3 ICs4NDM4LDcgQEAgdGVzdF92ZWN0b3Jfc3VicmVnc19mb3JlX2JhY2sgKG1hY2hpbmVfbW9kZSBp bm5lcl9tb2RlKQ0KPj4+PiAgICBydHggeCA9IGJ1aWxkZXIuYnVpbGQgKCk7DQo+Pj4+ICANCj4+ Pj4gICAgdGVzdF92ZWN0b3Jfc3VicmVnc19tb2RlcyAoeCk7DQo+Pj4+IC0gIGlmICghbnVuaXRz LmlzX2NvbnN0YW50ICgpKQ0KPj4+PiArICBpZiAoIW51bml0cy5pc19jb25zdGFudCAoKSAmJiBr bm93bl9uZSAobnVuaXRzLCBwb2x5X3VpbnQxNiAoMSwgMSkpKQ0KPj4+PiAgICAgIHRlc3RfdmVj dG9yX3N1YnJlZ3NfbW9kZXMgKHgsIG51bml0cyAtIG1pbl9udW5pdHMsIGNvdW50KTsNCj4+PiAg DQo+Pj4gSSB0aGluayBpbnN0ZWFkIHdlIHNob3VsZCB1c2UgbWF5YmVfZ3QgKG51bml0cywgMSks IG9uIHRoZSBiYXNpcyB0aGF0DQo+Pj4gdGhlIGZvcmVfYmFjayB0ZXN0cyByZXF1aXJlIHZlY3Rv cnMgdGhhdCBoYXZlIGEgbWluaW11bSBvZiAyIGVsZW1lbnRzLg0KPj4+IFNvbWV0aGluZyBsaWtl IHBvbHlfdWludDE2ICgxLCAyKSB3b3VsZCBoYXZlIHRoZSBzYW1lIHByb2JsZW0gYXMNCj4+PiBw b2x5X3VpbnQxNiAoMSwgMSkuICAoezEsIDJ9IGlzIGFuIHVubGlrZWx5IHZhbHVlLCBidXQgaXQn cyBPSyBpbg0KPj4+IHByaW5jaXBsZS4pDQo+Pj4gIA0KPj4+IFRoaXMgY29ycmVzcG9uZHMgdG8g dGhlIG1pbmltdW0gb2YgMyBlbGVtZW50cyBmb3IgdGhlIHN0ZXBwZWQgdGVzdHM6DQo+Pj4gIA0K Pj4+ICAgaWYgKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9JTlQNCj4+PiAg ICAgICAmJiBtYXliZV9ndCAoR0VUX01PREVfTlVOSVRTIChtb2RlKSwgMikpDQo+Pj4gICAgIHsN Cj4+PiAgICAgICB0ZXN0X3ZlY3Rvcl9vcHNfc2VyaWVzIChtb2RlLCBzY2FsYXJfcmVnKTsNCj4+ PiAgICAgICB0ZXN0X3ZlY3Rvcl9zdWJyZWdzIChtb2RlKTsNCj4+PiAgICAgfQ0KPj4+ICANCj4+ PiBUaGFua3MsDQo+Pj4gUmljaGFyZA0KPj4+ICANCj4+ICANCj4gIA0KIA0K