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 6B09D3858C83 for ; Fri, 19 Aug 2022 14:11:15 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org 6B09D3858C83 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: bizesmtp68t1660918266te6gy6b1 Received: from TABLET-POE6JQHH ( [36.36.107.177]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 19 Aug 2022 22:11:05 +0800 (CST) X-QQ-SSF: 01400000002000C0I000B00A0000000 X-QQ-FEAT: ERSZEewZJumeVBLKjk0WXFgrFOQpNjtEGnbIz+dWeNw/sCChfdA3zITfur7ZC TReoki8ZOCm6gOYdye/NL45c2Y3N1dhJBgFG20U7gWzJvZZNSZloYyq9wwiezXjMBiXs+mF iXHuIBpq71m88CCzoaMe8WdXR8Jz0hOIFucbYDNFX0LKHS2kst/jj4ynTUnekwVmTuLpuo+ HIf+ZbG5RXHbXYcPyMLtuqEUJNGn/3ORCKUfBYuv+egVAYbggrkuzZ7JUECwOkxhKsRMIK7 4NvdSRiR0Crr6LRrN0DFBt7/jmSO3tTHYLqf2PN5jhLyiXi/3bNROru/h/P36RSZ6H3NXxL 8zEFGTgOCt+YnzjicRxQJd41XAUTNMVW2aKTJyawk9hTo7yBIKsWqfUbKhDrWRkS6zf1PYo 6fG5b2A5Um8v8m6yZ0RhJGC2DD275FXRuF6wUsWhfzo= X-QQ-GoodBg: 2 Date: Fri, 19 Aug 2022 22:10:59 +0800 From: =?UTF-8?B?6ZKf5bGF5ZOy?= To: richard.sandiford Cc: gcc-patches , rguenther , 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>, , , , , X-Priority: 3 X-GUID: 005F5125-8739-47DF-B6DF-93A98270A3EF X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <9DE60ADF37F8F806+202208192210589973275@rivai.ai> X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-13.1 required=5.0 tests=BAYES_00, GIT_PATCH_0, HTML_MESSAGE, KAM_DMARC_STATUS, 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="UTF-8" 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: Fri, 19 Aug 2022 14:11:20 -0000 QXMgeW91IG1lbnRpb25lZC4gRm9yIHBvbHlfdWludDE2ICgxLCAxKSwgdGhlIHBhdHRlcm4gc2hv dWxkIGJlOg0Kc2hhcGU6IG5lbHRzX3Blcl9wYXR0ZXJuID09IDIsIG5wYXR0ZXJucyA9PSAxDQog ZWxlbWVudHM6IGEsIGJbLCBiLCBiLCBiLCBiLCAuLi5dDQoNCkkgdHJpZWQgdG8gcHJpbnQgb3V0 IHRoZSBydHggdGhhdCB0ZXN0cyBjcmVhdGUgdG8gdGVzdDoNCg0Kc3RhdGljIHZvaWQNCnRlc3Rf dmVjdG9yX3N1YnJlZ3NfZm9yZV9iYWNrIChtYWNoaW5lX21vZGUgaW5uZXJfbW9kZSkNCnsNCiAg cG9seV91aW50NjQgbnVuaXRzID0gR0VUX01PREVfTlVOSVRTIChpbm5lcl9tb2RlKTsNCiAgdW5z aWduZWQgaW50IG1pbl9udW5pdHMgPSBjb25zdGFudF9sb3dlcl9ib3VuZCAobnVuaXRzKTsNCiAg c2NhbGFyX21vZGUgaW50X21vZGUgPSBHRVRfTU9ERV9JTk5FUiAoaW5uZXJfbW9kZSk7DQogIHVu c2lnbmVkIGludCBjb3VudCA9IGdjZCAobWluX251bml0cywgNCk7DQoNCiAgcnR4X3ZlY3Rvcl9i dWlsZGVyIGJ1aWxkZXIgKGlubmVyX21vZGUsIGNvdW50LCAyKTsNCiAgZm9yICh1bnNpZ25lZCBp bnQgaSA9IDA7IGkgPCBjb3VudDsgKytpKQ0KICAgIGJ1aWxkZXIucXVpY2tfcHVzaCAoZ2VuX2lu dF9tb2RlIChpLCBpbnRfbW9kZSkpOw0KICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8IGNv dW50OyArK2kpDQogICAgYnVpbGRlci5xdWlja19wdXNoIChnZW5faW50X21vZGUgKC0oaW50KSBp LCBpbnRfbW9kZSkpOw0KICBydHggeCA9IGJ1aWxkZXIuYnVpbGQgKCk7DQoNCiAgdGVzdF92ZWN0 b3Jfc3VicmVnc19tb2RlcyAoeCk7DQogIHByaW50X3J0bF9zaW5nbGUoc3Rkb3V0LHgpOw0KICBp ZiAoIW51bml0cy5pc19jb25zdGFudCAoKSkNCiAgICB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX21vZGVz ICh4LCBudW5pdHMgLSBtaW5fbnVuaXRzLCBjb3VudCk7DQp9DQoNCnRoZSB4IHZhbHVlOg0KKGNv bnN0X3ZlY3RvcjpWTngxREkgcmVwZWF0IFsNCiAgICAgICAgKGNvbnN0X2ludCAwIFswXSkNCiAg ICBdKQ0KDQpJdCBzZWVtcyB0aGF0IGl0IGRvZXNuJ3QgbWF0Y2ggdGhlIHBhdHRlcm4geW91IHNh aWQuIEFtIEkgdW5kZXJzdGFuZGluZyBjb3JyZWN0bHk/IEFuZCB3b3VsZCB5b3UgbWluZCB0YWtp bmcgYSBsb29rIGF0IHRoZSBjb2RlcyB3aGljaCBnZW5lcmF0ZSB4Og0KDQpzdGF0aWMgdm9pZA0K dGVzdF92ZWN0b3Jfc3VicmVnc19mb3JlX2JhY2sgKG1hY2hpbmVfbW9kZSBpbm5lcl9tb2RlKQ0K ew0KICBwb2x5X3VpbnQ2NCBudW5pdHMgPSBHRVRfTU9ERV9OVU5JVFMgKGlubmVyX21vZGUpOw0K ICB1bnNpZ25lZCBpbnQgbWluX251bml0cyA9IGNvbnN0YW50X2xvd2VyX2JvdW5kIChudW5pdHMp Ow0KICBzY2FsYXJfbW9kZSBpbnRfbW9kZSA9IEdFVF9NT0RFX0lOTkVSIChpbm5lcl9tb2RlKTsN CiAgdW5zaWduZWQgaW50IGNvdW50ID0gZ2NkIChtaW5fbnVuaXRzLCA0KTsNCg0KICBydHhfdmVj dG9yX2J1aWxkZXIgYnVpbGRlciAoaW5uZXJfbW9kZSwgY291bnQsIDIpOw0KICBmb3IgKHVuc2ln bmVkIGludCBpID0gMDsgaSA8IGNvdW50OyArK2kpDQogICAgYnVpbGRlci5xdWlja19wdXNoIChn ZW5faW50X21vZGUgKGksIGludF9tb2RlKSk7DQogIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBp IDwgY291bnQ7ICsraSkNCiAgICBidWlsZGVyLnF1aWNrX3B1c2ggKGdlbl9pbnRfbW9kZSAoLShp bnQpIGksIGludF9tb2RlKSk7DQogIHJ0eCB4ID0gYnVpbGRlci5idWlsZCAoKTsNCg0KVGhlIG51 bml0cyAgPSAoMSwxKSwgbWluX251bml0cyA9IDEsIGNvdW50ID0gMS4gIEkgcHJpbnQgb3V0IHRo ZXNlIHZhcmlhYmxlIHZhbHVlIG1heSBoZWxwZnVsIGZvciB5b3UgdG8gY2hlY2suIFRoYW5rcyEN Cg0KDQoNCg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206IFJpY2hhcmQgU2FuZGlmb3Jk DQpEYXRlOiAyMDIyLTA4LTE5IDIwOjUyDQpUbzoganV6aGUuemhvbmdcQHJpdmFpLmFpDQpDQzog Z2NjLXBhdGNoZXM7IHJndWVudGhlcjsga2l0by5jaGVuZw0KU3ViamVjdDogUmU6IFtQQVRDSF0g bWlkZGxlLWVuZDogc2tpcHAgc3RlcHBlZCB2ZWN0b3IgdGVzdCBvZiBwb2x5X2ludCAoMSwgMSkg YW5kIGFsbG93IHRoZSBtYWNoaW5lX21vZGUgZGVmaW5pdGlvbiB3aXRoIHBvbHlfdWludDE2ICgx LCAxKQ0KImp1emhlLnpob25nQHJpdmFpLmFpIiA8anV6aGUuemhvbmdAcml2YWkuYWk+IHdyaXRl czoNCj4+IEFoLCByaWdodCwgc29ycnkgZm9yIHRoZSBib2d1cyBzdWdnZXN0aW9uLg0KPj4gSW4g dGhhdCBjYXNlLCB3aGF0IHNwZWNpZmljYWxseSBnb2VzIHdyb25nPyAgV2hpY2ggdGVzdCBpbg0K Pj4gdGVzdF92ZWN0b3Jfc3VicmVnc19tb2RlcyBmYWlscywgYW5kIHdoYXQgZG9lcyB0aGUgSUNF IGxvb2sgbGlrZT8NCj4NCj4gQmVjYXVzZSBtYXlfYmUgKG51bml0cywgMSkgcmV0dXJuIHRydWUu IEZvciBudW5pdHMgPSAoMSwxKSwgaXQgd2lsbCBleGVjdXRlIHRlc3RfdmVjdG9yX3N1YnJlZ3Nf bW9kZXMuDQo+IFRoZSBmYWlsIElDRToNCj4gLi4vLi4vLi4vcmlzY3YtZ2NjL2djYy9zaW1wbGlm eS1ydHguY2M6ODM5NjogdGVzdF92ZWN0b3Jfc3VicmVnc19tb2RlczogRkFJTDogQVNTRVJUX1JU WF9FUSAoZXhwZWN0ZWQsIHNpbXBsaWZ5X3N1YnJlZyAoUUltb2RlLCB4LCBpbm5lcl9tb2RlLCBi eXRlKSkNCj4gICBleHBlY3RlZDogKG5pbCkNCj4NCj4gICBhY3R1YWw6IChjb25zdF9pbnQgMCBb MF0pDQo+IGNjMTogaW50ZXJuYWwgY29tcGlsZXIgZXJyb3I6IGluIGFzc2VydF9ydHhfZXFfYXQs IGF0IHNlbGZ0ZXN0LXJ0bC5jYzo1Nw0KPiAweDEzMDRlZTEgc2VsZnRlc3Q6OmFzc2VydF9ydHhf ZXFfYXQoc2VsZnRlc3Q6OmxvY2F0aW9uIGNvbnN0JiwgY2hhciBjb25zdCosIHJ0eF9kZWYqLCBy dHhfZGVmKikNCj4gICAgICAgICAuLi8uLi8uLi9yaXNjdi1nY2MvZ2NjL3NlbGZ0ZXN0LXJ0bC5j Yzo1Nw0KPiAweDEzMzI1MDQgdGVzdF92ZWN0b3Jfc3VicmVnc19tb2Rlcw0KPiAgICAgICAgIC4u Ly4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2ltcGxpZnktcnR4LmNjOjgzOTUNCj4gMHgxMzMyOTg4IHRl c3RfdmVjdG9yX3N1YnJlZ3NfZm9yZV9iYWNrDQo+ICAgICAgICAgLi4vLi4vLi4vcmlzY3YtZ2Nj L2djYy9zaW1wbGlmeS1ydHguY2M6ODQ0Mg0KPiAweDEzMzJhZTcgdGVzdF92ZWN0b3Jfc3VicmVn cw0KPiAgICAgICAgIC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2ltcGxpZnktcnR4LmNjOjg0NjcN Cj4gMHgxMzMyYzU3IHRlc3RfdmVjdG9yX29wcw0KPiAgICAgICAgIC4uLy4uLy4uL3Jpc2N2LWdj Yy9nY2Mvc2ltcGxpZnktcnR4LmNjOjg0ODcNCj4gMHgxMzMyYzdiIHNlbGZ0ZXN0OjpzaW1wbGlm eV9ydHhfY2NfdGVzdHMoKQ0KPiAgICAgICAgIC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2ltcGxp ZnktcnR4LmNjOjg1NDcNCj4gMHgyMTMxOGZhIHNlbGZ0ZXN0OjpydW5fdGVzdHMoKQ0KPiAgICAg ICAgIC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc2VsZnRlc3QtcnVuLXRlc3RzLmNjOjExNQ0KPiAw eDEzNjJhNzYgdG9wbGV2OjpydW5fc2VsZl90ZXN0cygpDQo+ICAgICAgICAgLi4vLi4vLi4vcmlz Y3YtZ2NjL2djYy90b3BsZXYuY2M6MjIwNQ0KPg0KPiBJIGFuYWx5emVkIHRoZSBjb2RlczoNCj4g SW4gdGVzdF92ZWN0b3Jfc3VicmVnc19mb3JlX2JhY2ssIHdoZW4gbnVuaXRzID0gKDEsMSkuIFRo ZSBleHBlY3RlZCA9IE5VTExfUlRYIGFuZCBzaW1wbGlmeV9zdWJyZWcgKFFJbW9kZSwgeCwgaW5u ZXJfbW9kZSwgYnl0ZSkgPSBjb25zdF9pbnQgMC4NCj4gU28gdGhlIGFzc2VydGlvbiBmYWlscy4N CiANCkhtbSwgb2ssIHNvIHRoZSBzdWJyZWcgb3BlcmF0aW9uIGlzIHVuZXhwZWN0ZWQgc3VjY2Vl ZGluZy4NCiANCj4gVGhpcyBpcyB0aGUgdGVzdCBmb3Igc3RlcHBlZCB2ZWN0b3IgdXNpbmcgMiBl bGVtZW50IHBlciBwYXR0ZXJuLiAgRm9yIHBvbHlfdWludDE2ICgxLDEpLCBpdCdzIHRydWUgaXQg aXMgcG9zc2libGUgb25seSBoYXMgMSBlbGVtZW50LiANCiANClRoZSBzdGVwcGVkIGNhc2UgaXMg MyBlbGVtZW50cyBwZXIgcGF0dGVybiByYXRoZXIgdGhhbiAyLiAgSW4gYSBzdGVwcGVkDQpwYXR0 ZXJuOiBhLCBiLCBiK24gYXJlIHJlcHJlc2VudGVkIGV4cGxpY2l0bHksIHRoZW4gdGhlIHJlc3Qg YXJlDQppbXBsaWNpdGx5IGIrbioyLCBiK24qMywgZXRjLg0KIA0KVGhlIGNhc2UgYmVpbmcgaGFu ZGxlZCBieSB0aGlzIGNvZGUgaXMgaW5zdGVhZCB0aGUgMi1lbGVtZW50IGNhc2U6DQphLCBiIGFy ZSByZXByZXNlbnRlZCBleHBsaWNpdGx5LCB0aGVuIHRoZSByZXN0IGFyZSBpbXBsaWNpdGx5IGFs bCBiLg0KIA0KV2h5IGlzICgxLDEpIGRpZmZlcmVudCB0aG91Z2g/ICBUaGUgdGVzdCBpcyBjb25z dHJ1Y3Rpbmc6DQogDQogIG51bml0czogMSArIDF4DQogIHNoYXBlOiBuZWx0c19wZXJfcGF0dGVy biA9PSAyLCBucGF0dGVybnMgPT0gMQ0KICBlbGVtZW50czogYSwgYlssIGIsIGIsIGIsIGIsIC4u Ll0NCiANCkl0IHRoZW4gdGVzdHMgc3VicmVncyBzdGFydGluZyBhdCAwICsgMXggKHNvIHN0YXJ0 aW5nIGF0IHRoZSBmaXJzdCBiKS4NCkJ1dCBmb3IgKDIsMikgd2Ugc2hvdWxkIGhhdmU6DQogDQog IG51bml0czogMiArIDJ4DQogIHNoYXBlOiBuZWx0c19wZXJfcGF0dGVybiA9PSAyLCBucGF0dGVy bnMgPT0gMg0KICBlbGVtZW50czogYTEsIGEyLCBiMSwgYjJbLCBiMSwgYjIsIGIxLCBiMiwgLi4u XQ0KIA0KYW5kIHdlIHNob3VsZCB0ZXN0IHN1YnJlZ3Mgc3RhcnRpbmcgYXQgMCArIDJ4IChzbyBz dGFydGluZyBhdCB0aGUNCmZpcnN0IGIxKS4gIFRoZSB0d28gY2FzZXMgc2hvdWxkIGJlIHZlcnkg c2ltaWxhciwgaXQncyBqdXN0IHRoYXQgdGhlDQooMiwyKSBjYXNlIGRvdWJsZXMgdGhlIG51bWJl ciBvZiBwYXR0ZXJucy4NCiANCj4gSSB0aGluayBpdCBtYWtlcyBzZW5zZSB0byBmYWlsIHRoZSB0 ZXN0LiBIb3dldmVyIGZvciBwb2x5ICgxLDEpIG1hY2hpbmUgbW9kZSwgY2FuIHdlIGhhdmUgdGhl IGNoYW5jZSB0aGF0IHNvbWUgdGFyZ2V0IGRlZmluZSB0aGlzDQo+IGtpbmQgb2YgbWFjaGluZSBt b2RlIG9ubHkgdXNlZCBmb3IgaW50cmluc2ljcz8gIEkgYWxyZWFkeSBkZXZlbG9wZWQgZnVsbCBS VlYgc3VwcG9ydCBpbiBHQ0MgKGluY2x1ZGluZyBpbnRyaW5zYyBhbmQgYXV0by12ZWN0b3JpemF0 aW9uKS4NCj4gSSBvbmx5IGVuYWJsZSBhdXRvLXZlY3Rvcml6YXRpb24gd2l0aCBtb2RlIGxhcmdl ciB0aGFuICgyLDIpIGFuZCB0ZXN0IGl0IGZ1bGx5Lg0KPiBGcm9tIG15IGV4cGVyaWVuY2UsIGl0 IHNlZW1zIHRoZSBzdGVwcGVkIHZlY3RvciBvbmx5IGNyZWF0ZWQgZHVyaW5nIFZMQSBhdXRvLXZl Y3Rvcml6YXRpb24uIEFuZCBJIHRoaW5rIG9ubHkgYWxsb3cgcG9seSAoMSwxKW1vZGUgdXNlZCBp biBpbnRyaW5zaWNzIHdpbGwNCj4gbm90IGNyZWF0ZSBpc3N1ZXMuIEFtIEkgdW5kZXJzdGFuZGlu ZyB3cm9uZyDvvJ9GZWVsIGZyZWUgdG8gY29ycmVjdCBtZS4gVGhhbmtzIH4NCiANCkZvbGxvd2lu ZyBvbiBmcm9tIHdoYXQgSSBzYWlkIGFib3ZlLCBpdCBkb2Vzbid0IGxvb2sgbGlrZSB0aGlzIHBh cnRpY3VsYXINCmNhc2UgaXMgcmVsYXRlZCB0byBzdGVwcGVkIHZlY3RvcnMuDQogDQooMSwxKSBz aG91bGRuJ3QgKG5lZWQgdG8pIGJlIGEgc3BlY2lhbCBjYXNlIHRob3VnaC4gIEFueSBwb3RlbnRp dGFsDQpwcm9ibGVtcyB0aGF0IHdvdWxkIG9jY3VyIGZvciAoMSwxKSB3aXRoIG5wYXR0ZXJucz09 MSB3b3VsZCBhbHNvIG9jY3VyDQpmb3IgKG4sbikgd2l0aCBucGF0dGVybnM9PW4uICBFLmcuIGlm IHN0ZXBwZWQgdmVjdG9ycyBhcmUgcHJvYmxlbWF0aWMNCmZvciAoMSwxKSB0aGVuIGFuIGludGVy bGVhdmluZyBvZiAyIHN0ZXBwZWQgdmVjdG9ycyAoaS5lLiBucGF0dGVybnM9PTIpDQp3b3VsZCBi ZSBwcm9ibGVtYXRpYyBmb3IgKDIsMikuDQogDQpTbyB5ZWFoLCBwcmV2ZW50aW5nIGEgbW9kZSBi ZWluZyB1c2VkIGZvciBhdXRvdmVjdG9yaXNhdGlvbiB3b3VsZCBhbGxvdw0KdGhlIHRhcmdldCB0 byBoYXZlIGEgYml0IG1vcmUgY29udHJvbCBvdmVyIHdoaWNoIGNvbnN0YW50cyBhcmUgYWN0dWFs bHkNCmdlbmVyYXRlZC4gIEJ1dCBpdCBzaG91bGRuJ3QgYmUgbmVjZXNzYXJ5IHRvIGRvIHRoYXQg Zm9yIGNvcnJlY3RuZXNzLg0KIA0KVGhhbmtzLA0KUmljaGFyZA0KIA0KPiBqdXpoZS56aG9uZ0By aXZhaS5haQ0KPiAgDQo+IEZyb206IFJpY2hhcmQgU2FuZGlmb3JkDQo+IERhdGU6IDIwMjItMDgt MTkgMTc6MzUNCj4gVG86IGp1emhlLnpob25nXEByaXZhaS5haQ0KPiBDQzogcmd1ZW50aGVyOyBn Y2MtcGF0Y2hlczsga2l0by5jaGVuZw0KPiBTdWJqZWN0OiBSZTogW1BBVENIXSBtaWRkbGUtZW5k OiBza2lwcCBzdGVwcGVkIHZlY3RvciB0ZXN0IG9mIHBvbHlfaW50ICgxLCAxKSBhbmQgYWxsb3cg dGhlIG1hY2hpbmVfbW9kZSBkZWZpbml0aW9uIHdpdGggcG9seV91aW50MTYgKDEsIDEpDQo+ICJq dXpoZS56aG9uZ0ByaXZhaS5haSIgPGp1emhlLnpob25nQHJpdmFpLmFpPiB3cml0ZXM6DQo+PiBI aSwgUmljaGFyZC4gSSB0cmllZCB0aGUgY29kZXM6DQo+PiBpZiAoIW51bml0cy5pc19jb25zdGFu dCAoKSAmJiBtYXliZV9ndCAobnVuaXRzLCAxKSkgDQo+PiB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX21v ZGVzICh4LCBudW5pdHMgLSBtaW5fbnVuaXRzLCBjb3VudCk7DQo+Pg0KPj4gSXQgc3RpbGwgZmFp bGVkLiBGb3IgbnVuaXRzID0gKDEsMSkgLCBtYXliZV9ndCAobnVuaXRzLCAxKSByZXR1cm4gdHJ1 ZSB2YWx1ZS4NCj4gIA0KPiBBaCwgcmlnaHQsIHNvcnJ5IGZvciB0aGUgYm9ndXMgc3VnZ2VzdGlv bi4NCj4gIA0KPiBJbiB0aGF0IGNhc2UsIHdoYXQgc3BlY2lmaWNhbGx5IGdvZXMgd3Jvbmc/ICBX aGljaCB0ZXN0IGluDQo+IHRlc3RfdmVjdG9yX3N1YnJlZ3NfbW9kZXMgZmFpbHMsIGFuZCB3aGF0 IGRvZXMgdGhlIElDRSBsb29rIGxpa2U/DQo+ICANCj4gVGhhbmtzLA0KPiBSaWNoYXJkDQo+ICAN Cj4+IEJ1dCBJIHRyaWVkOg0KPj4gaWYgKCFudW5pdHMuaXNfY29uc3RhbnQgKCkgJiYga25vd25f Z3QgKG51bml0cywgMSkpIA0KPj4gdGVzdF92ZWN0b3Jfc3VicmVnc19tb2RlcyAoeCwgbnVuaXRz IC0gbWluX251bml0cywgY291bnQpOw0KPj4gSXQgcGFzcy4gQnV0IGl0IHJlcG9ydCBhIHdhcm5p bmc6ICJ3YXJuaW5nOiBjb21wYXJpc29uIGJldHdlZW4gc2lnbmVkIGFuZCB1bnNpZ25lZCBpbnRl Z2VyIGV4cHJlc3Npb25zIFstV3NpZ24tY29tcGFyZV0iIGR1cmluZyB0aGUgY29tcGlsYXRpb24u DQo+Pg0KPj4gRmluYWxseSwgSSB0cmllZDoNCj4+IGlmICghbnVuaXRzLmlzX2NvbnN0YW50ICgp ICYmIGtub3duX2d0IChHRVRfTU9ERV9OVU5JVFMgKGlubmVyX21vZGUpLCAxKSkgDQo+PiB0ZXN0 X3ZlY3Rvcl9zdWJyZWdzX21vZGVzICh4LCBudW5pdHMgLSBtaW5fbnVuaXRzLCBjb3VudCk7DQo+ PiBJdCBwYXNzZWQgd2l0aCBubyB3YXJuaW5nLg0KPj4NCj4+IElzICdrbm93bl9ndCAoR0VUX01P REVfTlVOSVRTIChpbm5lcl9tb2RlKSwgMSknIGEgZ29vZCBzb2x1dGlvbiBmb3IgdGhpcz8NCj4+ IFRoYW5rcyENCj4+DQo+Pg0KPj4ganV6aGUuemhvbmdAcml2YWkuYWkNCj4+ICANCj4+IEZyb206 IFJpY2hhcmQgU2FuZGlmb3JkDQo+PiBEYXRlOiAyMDIyLTA4LTE5IDE2OjAzDQo+PiBUbzoganV6 aGUuemhvbmcNCj4+IENDOiBnY2MtcGF0Y2hlczsgcmd1ZW50aGVyOyBraXRvLmNoZW5nDQo+PiBT dWJqZWN0OiBSZTogW1BBVENIXSBtaWRkbGUtZW5kOiBza2lwcCBzdGVwcGVkIHZlY3RvciB0ZXN0 IG9mIHBvbHlfaW50ICgxLCAxKSBhbmQgYWxsb3cgdGhlIG1hY2hpbmVfbW9kZSBkZWZpbml0aW9u IHdpdGggcG9seV91aW50MTYgKDEsIDEpDQo+PiBqdXpoZS56aG9uZ0ByaXZhaS5haSB3cml0ZXM6 DQo+Pj4gRnJvbTogemhvbmdqdXpoZSA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+Pj4NCj4+PiBI ZWxsby4gVGhpcyBwYXRjaCBpcyBwcmVwYXJpbmcgZm9yIGZvbGxvd2luZyBSVlYgc3VwcG9ydC4N Cj4+Pg0KPj4+IEJvdGggQVJNIFNWRSBhbmQgUlZWIChSSVNDLVYgJ1YnIEV4dGVuc2lvbikgc3Vw cG9ydCBsZW5ndGgtYWdub3N0aWMgdmVjdG9yLg0KPj4+IFRoZSBtaW5pbXVtIHZlY3RvciBsZW5n dGggb2YgQVJNIFNWRSBpcyAxMjgtYml0IGFuZCB0aGUgcnVudGltZSBpbnZhcmlhbnQgb2YgQVJN IFNWRSBpcyBhbHdheXMgMTI4LWJpdCBibG9ja3MuDQo+Pj4gSG93ZXZlciwgdGhlIG1pbmltdW0g dmVjdG9yIGxlbmd0aCBvZiBSVlYgY2FuIGJlIDMyYml0IGluICdadmUzMionIHN1Yi1leHRlbnNp b24gYW5kIDY0Yml0IGluICdadmUqJyBzdWItZXh0ZW5zaW9uLg0KPj4+DQo+Pj4gU28gSSBkZWZp bmUgdGhlIG1hY2hpbmVfbW9kZSBhcyBmb2xsb3dzOg0KPj4+IFZFQ1RPUl9NT0RFX1dJVEhfUFJF RklYIChWTngsIElOVCwgREksIDEsIDApOw0KPj4+IEFESlVTVF9OVU5JVFMgKE1PREUsIHJpc2N2 X3ZlY3Rvcl9jaHVua3MpOw0KPj4+IFRoZSByaXNjdl92ZWN0b3JfY2h1bmtzID0gcG9seV91aW50 MTYgKDEsIDEpDQo+Pj4NCj4+PiBUaGUgY29tcGlsYXRpb24gaXMgZmFpbGVkIGZvciB0aGUgc3Rl cHBlZCB2ZWN0b3IgdGVzdDoNCj4+PiAoY29uc3RfdmVjdG9yOlZOeDFESSByZXBlYXQgWw0KPj4+ ICAgICAgICAgKGNvbnN0X2ludCA4IFsweDhdKQ0KPj4+ICAgICAgICAgKGNvbnN0X2ludCA3IFsw eDddKQ0KPj4+ICAgICBdKQ0KPj4+DQo+Pj4gSSB1bmRlcnN0YW5kIGZvciBzdGVwcGVkIHZlY3Rv ciBzaG91bGQgYWx3YXlzIGhhdmUgYWxlYXN0IDIgZWxlbWVudHMgYW5kIHN0ZXBwZWQgdmVjdG9y IGluaXRpYWxpemF0aW9uIGlzIGNvbW1vbg0KPj4+IGZvciBWTEEgKHZlY3Rvci1sZW5ndGhlIGFn bm9zdGljKSBhdXRvLXZlY3Rvcml6YXRpb24uIEl0IG1ha2VzIHNlbnNlIHRoYXQgcmVwb3J0IGZh aWwgZm9yIHN0ZXBwZWQgdmVjdG9yIG9mIHBvbHlfdWludDE2ICgxLCAxKS4NCj4+Pg0KPj4+IG1h Y2hpbmUgbW9kZSB3aXRoIG51bml0cyA9IHBvbHlfdWludDE2ICgxLCAxKSBuZWVkcyB0byBpbXBs ZW1lbnRlZCBpbiBpbnRyaW5zaWNzLiBBbmQgSSB3b3VsZCBsaWtlIHRvIGVuYWJsZSBSVlYgYXV0 by12ZWN0b3JpemF0aW9uDQo+Pj4gd2l0aCB2ZWN0b3IgbW9kZSBvbmx5IG51bml0cyBpcyBsYXJn ZXIgdGhhbiBwb2x5X3VpbnQxNiAoMiwgMikgaW4gUklTQy1WIGJhY2tlbmQuIEkgdGhpbmsgaXQg d2lsbCBub3QgY3JlYXRlIGlzc3VlIGlmIHdlIGRlZmluZQ0KPj4+IHZlY3RvciBtb2RlIHdpdGgg bnVuaXRzID0gcG9seV91aW50MTYgKDEsIDEpLiBGZWVsIGZyZWUgdG8gY29ycmVjdCBtZSBvciBv ZmZlciBtZSBzb21lIG90aGVyIGJldHRlciBzb2x1dGlvbnMuIFRoYW5rcyENCj4+Pg0KPj4+ICAg DQo+Pj4NCj4+PiBnY2MvQ2hhbmdlTG9nOg0KPj4+DQo+Pj4gICAgICAgICAqIHNpbXBsaWZ5LXJ0 eC5jYyAodGVzdF92ZWN0b3Jfc3VicmVnc19mb3JlX2JhY2spOiBza2lwIHRlc3QgZm9yIHBvbHlf dWludDE2ICgxLCAxKS4NCj4+Pg0KPj4+IC0tLQ0KPj4+ICBnY2Mvc2ltcGxpZnktcnR4LmNjIHwg MiArLQ0KPj4+ICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkN Cj4+Pg0KPj4+IGRpZmYgLS1naXQgYS9nY2Mvc2ltcGxpZnktcnR4LmNjIGIvZ2NjL3NpbXBsaWZ5 LXJ0eC5jYw0KPj4+IGluZGV4IDdkMDliZjcxMDNkLi42MWUwZGZhMDBkMCAxMDA2NDQNCj4+PiAt LS0gYS9nY2Mvc2ltcGxpZnktcnR4LmNjDQo+Pj4gKysrIGIvZ2NjL3NpbXBsaWZ5LXJ0eC5jYw0K Pj4+IEBAIC04NDM4LDcgKzg0MzgsNyBAQCB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX2ZvcmVfYmFjayAo bWFjaGluZV9tb2RlIGlubmVyX21vZGUpDQo+Pj4gICAgcnR4IHggPSBidWlsZGVyLmJ1aWxkICgp Ow0KPj4+ICANCj4+PiAgICB0ZXN0X3ZlY3Rvcl9zdWJyZWdzX21vZGVzICh4KTsNCj4+PiAtICBp ZiAoIW51bml0cy5pc19jb25zdGFudCAoKSkNCj4+PiArICBpZiAoIW51bml0cy5pc19jb25zdGFu dCAoKSAmJiBrbm93bl9uZSAobnVuaXRzLCBwb2x5X3VpbnQxNiAoMSwgMSkpKQ0KPj4+ICAgICAg dGVzdF92ZWN0b3Jfc3VicmVnc19tb2RlcyAoeCwgbnVuaXRzIC0gbWluX251bml0cywgY291bnQp Ow0KPj4gIA0KPj4gSSB0aGluayBpbnN0ZWFkIHdlIHNob3VsZCB1c2UgbWF5YmVfZ3QgKG51bml0 cywgMSksIG9uIHRoZSBiYXNpcyB0aGF0DQo+PiB0aGUgZm9yZV9iYWNrIHRlc3RzIHJlcXVpcmUg dmVjdG9ycyB0aGF0IGhhdmUgYSBtaW5pbXVtIG9mIDIgZWxlbWVudHMuDQo+PiBTb21ldGhpbmcg bGlrZSBwb2x5X3VpbnQxNiAoMSwgMikgd291bGQgaGF2ZSB0aGUgc2FtZSBwcm9ibGVtIGFzDQo+ PiBwb2x5X3VpbnQxNiAoMSwgMSkuICAoezEsIDJ9IGlzIGFuIHVubGlrZWx5IHZhbHVlLCBidXQg aXQncyBPSyBpbg0KPj4gcHJpbmNpcGxlLikNCj4+ICANCj4+IFRoaXMgY29ycmVzcG9uZHMgdG8g dGhlIG1pbmltdW0gb2YgMyBlbGVtZW50cyBmb3IgdGhlIHN0ZXBwZWQgdGVzdHM6DQo+PiAgDQo+ PiAgIGlmIChHRVRfTU9ERV9DTEFTUyAobW9kZSkgPT0gTU9ERV9WRUNUT1JfSU5UDQo+PiAgICAg ICAmJiBtYXliZV9ndCAoR0VUX01PREVfTlVOSVRTIChtb2RlKSwgMikpDQo+PiAgICAgew0KPj4g ICAgICAgdGVzdF92ZWN0b3Jfb3BzX3NlcmllcyAobW9kZSwgc2NhbGFyX3JlZyk7DQo+PiAgICAg ICB0ZXN0X3ZlY3Rvcl9zdWJyZWdzIChtb2RlKTsNCj4+ICAgICB9DQo+PiAgDQo+PiBUaGFua3Ms DQo+PiBSaWNoYXJkDQo+PiAgDQo+ICANCiANCg==