From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by sourceware.org (Postfix) with ESMTPS id 479D13858D37 for ; Thu, 20 Apr 2023 09:19:18 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 479D13858D37 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: bizesmtp75t1681982350tsuj0bx1 Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 20 Apr 2023 17:19:09 +0800 (CST) X-QQ-SSF: 01400000000000F0P000000A0000000 X-QQ-FEAT: ERSZEewZJukM89h3TtHgjEFNDUIdqx6h7wYZUUiCCGM5zbzWK7TWH6qLAMvNF XGVMAA5ViJ3E2BRXEoBU2gEjEcQTpdMwugdPMrMyO8s1cc4qn6ng483AGmio/hglCP6VIfX +g9S3VLFHGnFfl9+kRC06i8exNCwsZ9tsfCtGYHpOO4EWhCOqTPWW255FlX1VLkl82wXz0s zGsMrFqLOnGzdpOZ3n+bN7c69alErgyjwOW7ZbZvTt072M+IlTepRV+tkIMSynOQs+hvzXX BWlKUga/uFVjJZXimvBgupRo8XAfVLnCSoN1A3m15n2NcDXYJG3CY0Nzi+PS7zdD78FCatW LHKgWF4chighkIiKdaBqWEKVKaW3P/SN/qBRT+duzmpp7fee78ZXCVw/R8SqeaISence3+8 w5WLcSAHmfAAX46hMmhig5Xfp0pwJp3TwC0325cxLCw= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 12665125140025538155 Date: Thu, 20 Apr 2023 17:19:09 +0800 From: "juzhe.zhong@rivai.ai" To: richard.sandiford Cc: gcc-patches , rguenther , jeffreyalaw Subject: Re: Re: [PATCH] VECT: Add WHILE_LEN pattern for decrement IV support for auto-vectorization References: <20230407014741.139387-1-juzhe.zhong@rivai.ai>, <5B48D6D344CE6158+202304200553419571591@rivai.ai>, , <0AAC8392021A279F+2023042016574579562748@rivai.ai>, X-Priority: 3 X-GUID: EFEA9D4C-0832-4C05-85EB-D146A8EB5E70 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart001246622310_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-8.3 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_SORBS_WEB,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,T_SPF_HELO_TEMPERROR autolearn=ham autolearn_force=no version=3.4.6 X-Spam-Checker-Version: SpamAssassin 3.4.6 (2021-04-09) on server2.sourceware.org List-Id: This is a multi-part message in MIME format. ------=_001_NextPart001246622310_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 T0suIFRoYW5rcyBSaWNoYXJkLg0KU28gbGV0IG1lIGNvbmNsdWRlOg0KMS4g Q29tbXVuaXR5IGFncmVlIHRoYXQgSSBzaG91bGQgc3VwcG9ydCB2YXJpYWJs ZSBJViBpbiB0aGUgbWlkZGxlLWVuZC4NCjIuIFdlIGNhbiBrZWVwIFdISUxF X0xFTiBwYXR0ZXJuIHdoZW4gIm5vdCBvbmx5IGZpbmFsIGl0ZXJhdGlvbiBp cyBwYXJ0aWFsIi4NCiAgICBBbmQgSSBzaG91bGQgZGVzY3JpYmUgaXQgbW9y ZSBjbGVhcmx5IGluIHRoZSBkb2MuDQoNCkkgc2hvdWxkIGRvIHRoZXNlIDIg dGhpbmdzIGluIHRoZSBsYXRlciB1cGRhdGUgcGF0Y2guDQpJcyB0aGF0IHJp Z2h0PyBGZWVsIGZyZWUgdG8gY29ycmVjdCBtZS4NCg0KVGhhbmtzLg0KDQoN Cmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBSaWNoYXJkIFNhbmRp Zm9yZA0KRGF0ZTogMjAyMy0wNC0yMCAxNzoxMQ0KVG86IGp1emhlLnpob25n XEByaXZhaS5haQ0KQ0M6IGdjYy1wYXRjaGVzOyByZ3VlbnRoZXI7IGplZmZy ZXlhbGF3DQpTdWJqZWN0OiBSZTogW1BBVENIXSBWRUNUOiBBZGQgV0hJTEVf TEVOIHBhdHRlcm4gZm9yIGRlY3JlbWVudCBJViBzdXBwb3J0IGZvciBhdXRv LXZlY3Rvcml6YXRpb24NCiJqdXpoZS56aG9uZ0ByaXZhaS5haSIgPGp1emhl Lnpob25nQHJpdmFpLmFpPiB3cml0ZXM6DQo+IFRoYW5rcyBSaWNoYXJkIHJl bWluZGluZyBtZS4gSSBvcmlnaW5hbGx5IHRoaW5rIGNvbW11bml0eSBkb2Vz IG5vdCBhbGxvdyBtZSBzdXBwb3J0IHZhcmlhYmxlIGFtb3VudCBJViBhbmQg bGV0IG1lIGRvIHRoaXMgaW4gUklTQy1WIGJhY2tlbmQuDQogDQpObywgSSB0 aGluayB0aGF0IHBhcnQgc2hvdWxkIGFuZCBuZWVkcyB0byBiZSBkb25lIGlu IHRoZSBtaWRkbGUtZW5kLA0Kc2luY2UgaWYgdGhlIGluaXRpYWwgSVZzIGFy ZSBpbmNvcnJlY3QsIGl0J3MgdmVyeSBkaWZmaWN1bHQgdG8gZml4DQp0aGVt IHVwIGxhdGVyLg0KIA0KQnV0IHdpdGggdGhlIHBhdGNoIGFzIG9yaWdpbmFs bHkgcHJlc2VudGVkLCBXSElMRV9MRU4gd2FzIGp1c3QgYQ0Kc2ltcGxlIG1p bmltdW0gb3BlcmF0aW9uLCB3aXRoIG9ubHkgdGhlIGZpbmFsIGl0ZXJhdGlv biBiZWluZyBwYXJ0aWFsLg0KSXQgZGlkbid0IG1ha2Ugc2Vuc2UgSU1PIGZv ciB0aGF0IHRvIGJlIGl0cyBvd24gSUZOLiAgSXQgd2FzIG9ubHkgbGF0ZXIN CnRoYXQgeW91IHNhaWQgdGhhdCBub24tZmluYWwgaXRlcmF0aW9ucyBtaWdo dCBiZSBwYXJ0aWFsIHRvby4NCiANCkFuZCB0aGVyZSB3YXMgcHVzaGJhY2sg YWdhaW5zdCBXSElMRV9MRU4gaGF2aW5nIGFuIGVmZmVjdCBvbiBnbG9iYWwN CnN0YXRlLCByYXRoZXIgdGhhbiBiZWluZyBhIHNpbXBsZSAiaG93IG1hbnkg ZWxlbWVudHMgc2hvdWxkIEkgcHJvY2Vzcz8iDQpjYWxjdWxhdGlvbi4gIFRo YXQgbGFzdCBiaXQgLS0gdGhlIGdsb2JhbCBlZmZlY3Qgb2YgVlNFVFZMIC0t IHdhcyB0aGUgYml0DQp0aGF0IG5lZWRlZCB0byBiZSBrZXB0IGxvY2FsIHRv IHRoZSBSSVNDLVYgYmFja2VuZC4NCiANClRoYW5rcywNClJpY2hhcmQNCiAN Cj4gSXQgc2VlbXMgdGhhdCBJIGNhbiBkbyB0aGF0IGluIG1pZGRsZS1lbmQu IFRoYW5rIHlvdSBzbyBtdWNoLiBJIHdpbGwgdXBkYXRlIHRoZSBwYXRjaC4g UmVhbGx5IGFwcHJlY2lhdGUgaXQhDQo+DQo+DQo+DQo+IGp1emhlLnpob25n QHJpdmFpLmFpDQo+ICANCj4gRnJvbTogUmljaGFyZCBTYW5kaWZvcmQNCj4g RGF0ZTogMjAyMy0wNC0yMCAxNjo1Mg0KPiBUbzog6ZKf5bGF5ZOyDQo+IEND OiBnY2MtcGF0Y2hlczsgcmd1ZW50aGVyOyBKZWZmIExhdw0KPiBTdWJqZWN0 OiBSZTogW1BBVENIXSBWRUNUOiBBZGQgV0hJTEVfTEVOIHBhdHRlcm4gZm9y IGRlY3JlbWVudCBJViBzdXBwb3J0IGZvciBhdXRvLXZlY3Rvcml6YXRpb24N Cj4g6ZKf5bGF5ZOyIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4gd3JpdGVzOg0K Pj4gSGksIFJpY2hhcmRzLg0KPj4gU2luY2UgR0NDIDE0IGlzIG9wZW4gYW5k IHRoaXMgcGF0Y2ggaGFzIGJlZW4gYm9vc3RyYXBlZCAmJiB0ZXN0ZWQgb24g WDg2Lg0KPj4gSXMgdGhpcyBwYXRjaCBzdXBwb3J0aW5nIHZhcmlhYmxlIElW IE9LIGZvciB0aGUgdHJ1bmsgPw0KPiAgDQo+IERvZXNuJ3QgdGhlIHBhdGNo IG5lZWQgdXBkYXRpbmcgYmFzZWQgb24gdGhlIHByZXZpb3VzIGRpc2N1c3Np b24/DQo+IEkgdGhvdWdodCB0aGUgb3V0Y29tZSB3YXMgdGhhdCBXSElMRV9M RU4gaXNuJ3QgYSBzaW1wbGUgTUlOIG9wZXJhdGlvbg0KPiAoY29udHJhcnkg dG8gdGhlIGRvY3VtZW50YXRpb24gaW4gdGhlIHBhdGNoKSBhbmQgdGhhdCBw b2ludGVyIElWcw0KPiB3b3VsZCBhbHNvIG5lZWQgdG8gYmUgdXBkYXRlZCBi eSBhIHZhcmlhYmxlIGFtb3VudCwgZ2l2ZW4gdGhhdCBldmVuDQo+IG5vbi1m aW5hbCBpdGVyYXRpb25zIG1pZ2h0IHByb2Nlc3MgZmV3ZXIgdGhhbiBWRiBl bGVtZW50cy4NCj4gIA0KPiBUaGFua3MsDQo+IFJpY2hhcmQNCj4gIA0KPj4g anV6aGUuemhvbmdAcml2YWkuYWkNCj4+ICANCj4+IEZyb206IGp1emhlLnpo b25nDQo+PiBEYXRlOiAyMDIzLTA0LTA3IDA5OjQ3DQo+PiBUbzogZ2NjLXBh dGNoZXMNCj4+IENDOiByaWNoYXJkLnNhbmRpZm9yZDsgcmd1ZW50aGVyOyBq ZWZmcmV5YWxhdzsgSnV6aGUtWmhvbmcNCj4+IFN1YmplY3Q6IFtQQVRDSF0g VkVDVDogQWRkIFdISUxFX0xFTiBwYXR0ZXJuIGZvciBkZWNyZW1lbnQgSVYg c3VwcG9ydCBmb3IgYXV0by12ZWN0b3JpemF0aW9uDQo+PiBGcm9tOiBKdXpo ZS1aaG9uZyA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+PiAgDQo+PiBUaGlz IHBhdGNoIGlzIHRvIGFkZCBXSElMRV9MRU4gcGF0dGVybi4NCj4+IEl0J3Mg aW5zcGlyZWQgYnkgUlZWIElTQSBzaW1wbGUgInZ2YWRkaW50MzIucyIgZXhh bXBsZToNCj4+IGh0dHBzOi8vZ2l0aHViLmNvbS9yaXNjdi9yaXNjdi12LXNw ZWMvYmxvYi9tYXN0ZXIvZXhhbXBsZS92dmFkZGludDMyLnMNCj4+ICANCj4+ IE1vcmUgZGV0YWlscyBhcmUgaW4gInZlY3Rfc2V0X2xvb3BfY29udHJvbHNf Ynlfd2hpbGVfbGVuIiBpbXBsZW1lbnRhdGlvbg0KPj4gYW5kIGNvbW1lbnRz Lg0KPj4gIA0KPj4gQ29uc2lkZXIgc3VjaCBmb2xsb3dpbmcgY2FzZToNCj4+ ICNkZWZpbmUgTiAxNg0KPj4gaW50IHNyY1tOXTsNCj4+IGludCBkZXN0W05d Ow0KPj4gIA0KPj4gdm9pZA0KPj4gZm9vIChpbnQgbikNCj4+IHsNCj4+ICAg Zm9yIChpbnQgaSA9IDA7IGkgPCBuOyBpKyspDQo+PiAgICAgZGVzdFtpXSA9 IHNyY1tpXTsNCj4+IH0NCj4+ICANCj4+IC1tYXJjaD1ydjY0Z2N2IC1PMyAt LXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSAtZm5v LXZlY3QtY29zdC1tb2RlbCAtZm5vLXRyZWUtbG9vcC1kaXN0cmlidXRlLXBh dHRlcm5zOg0KPj4gIA0KPj4gZm9vOiAgICAgICAgDQo+PiAgICAgICAgIGJs ZSAgICAgYTAsemVybywuTDENCj4+ICAgICAgICAgbHVpICAgICBhNCwlaGko LkxBTkNIT1IwKQ0KPj4gICAgICAgICBhZGRpICAgIGE0LGE0LCVsbyguTEFO Q0hPUjApDQo+PiAgICAgICAgIGFkZGkgICAgYTMsYTQsNjQNCj4+ICAgICAg ICAgY3NyciAgICBhMix2bGVuYg0KPj4gLkwzOg0KPj4gICAgICAgICB2c2V0 dmxpIGE1LGEwLGUzMixtMSx0YSxtYQ0KPj4gICAgICAgICB2bGUzMi52IHYx LDAoYTQpDQo+PiAgICAgICAgIHN1YiAgICAgYTAsYTAsYTUNCj4+ICAgICAg ICAgdnNlMzIudiB2MSwwKGEzKQ0KPj4gICAgICAgICBhZGQgICAgIGE0LGE0 LGEyDQo+PiAgICAgICAgIGFkZCAgICAgYTMsYTMsYTINCj4+ICAgICAgICAg Ym5lICAgICBhMCx6ZXJvLC5MMw0KPj4gLkwxOg0KPj4gICAgICAgICByZXQN Cj4+ICANCj4+IGdjYy9DaGFuZ2VMb2c6DQo+PiAgDQo+PiAgICAgICAgICog ZG9jL21kLnRleGk6IEFkZCBXSElMRV9MRU4gc3VwcG9ydC4NCj4+ICAgICAg ICAgKiBpbnRlcm5hbC1mbi5jYyAod2hpbGVfbGVuX2RpcmVjdCk6IERpdHRv Lg0KPj4gICAgICAgICAoZXhwYW5kX3doaWxlX2xlbl9vcHRhYl9mbik6IERp dHRvLg0KPj4gICAgICAgICAoZGlyZWN0X3doaWxlX2xlbl9vcHRhYl9zdXBw b3J0ZWRfcCk6IERpdHRvLg0KPj4gICAgICAgICAqIGludGVybmFsLWZuLmRl ZiAoV0hJTEVfTEVOKTogRGl0dG8uDQo+PiAgICAgICAgICogb3B0YWJzLmRl ZiAoT1BUQUJfRCk6IERpdHRvLg0KPj4gICAgICAgICAqIHRyZWUtc3NhLWxv b3AtbWFuaXAuY2MgKGNyZWF0ZV9pdik6IERpdHRvLg0KPj4gICAgICAgICAq IHRyZWUtc3NhLWxvb3AtbWFuaXAuaCAoY3JlYXRlX2l2KTogRGl0dG8uDQo+ PiAgICAgICAgICogdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2MgKHZlY3Rfc2V0 X2xvb3BfY29udHJvbHNfYnlfd2hpbGVfbGVuKTogRGl0dG8uDQo+PiAgICAg ICAgICh2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMp OiBEaXR0by4NCj4+ICAgICAgICAgKiB0cmVlLXZlY3QtbG9vcC5jYyAodmVj dF9nZXRfbG9vcF9sZW4pOiBEaXR0by4NCj4+ICAgICAgICAgKiB0cmVlLXZl Y3Qtc3RtdHMuY2MgKHZlY3Rvcml6YWJsZV9zdG9yZSk6IERpdHRvLg0KPj4g ICAgICAgICAodmVjdG9yaXphYmxlX2xvYWQpOiBEaXR0by4NCj4+ICAgICAg ICAgKiB0cmVlLXZlY3Rvcml6ZXIuaCAodmVjdF9nZXRfbG9vcF9sZW4pOiBE aXR0by4NCj4+ICANCj4+IC0tLQ0KPj4gZ2NjL2RvYy9tZC50ZXhpICAgICAg ICAgICAgIHwgIDE0ICsrKw0KPj4gZ2NjL2ludGVybmFsLWZuLmNjICAgICAg ICAgIHwgIDI5ICsrKysrKw0KPj4gZ2NjL2ludGVybmFsLWZuLmRlZiAgICAg ICAgIHwgICAxICsNCj4+IGdjYy9vcHRhYnMuZGVmICAgICAgICAgICAgICB8 ICAgMSArDQo+PiBnY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5jYyAgfCAgIDQg Ky0NCj4+IGdjYy90cmVlLXNzYS1sb29wLW1hbmlwLmggICB8ICAgMiArLQ0K Pj4gZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjIHwgMTg2ICsrKysrKysr KysrKysrKysrKysrKysrKysrKysrKysrKystLQ0KPj4gZ2NjL3RyZWUtdmVj dC1sb29wLmNjICAgICAgIHwgIDM1ICsrKysrLS0NCj4+IGdjYy90cmVlLXZl Y3Qtc3RtdHMuY2MgICAgICB8ICAgOSArLQ0KPj4gZ2NjL3RyZWUtdmVjdG9y aXplci5oICAgICAgIHwgICA0ICstDQo+PiAxMCBmaWxlcyBjaGFuZ2VkLCAy NjQgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pDQo+PiAgDQo+PiBk aWZmIC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhpIGIvZ2NjL2RvYy9tZC50ZXhp DQo+PiBpbmRleCA4ZTMxMTM1OTlmZC4uNzIxNzhhYjAxNGMgMTAwNjQ0DQo+ PiAtLS0gYS9nY2MvZG9jL21kLnRleGkNCj4+ICsrKyBiL2djYy9kb2MvbWQu dGV4aQ0KPj4gQEAgLTQ5NjUsNiArNDk2NSwyMCBAQCBmb3IgKGkgPSAxOyBp IDwgb3BlcmFuZDM7IGkrKykNCj4+ICAgIG9wZXJhbmQwW2ldID0gb3BlcmFu ZDBbaSAtIDFdICYmIChvcGVyYW5kMSArIGkgPCBvcGVyYW5kMik7DQo+PiBA ZW5kIHNtYWxsZXhhbXBsZQ0KPj4gK0BjaW5kZXggQGNvZGV7d2hpbGVfbGVu QHZhcnttfUB2YXJ7bn19IGluc3RydWN0aW9uIHBhdHRlcm4NCj4+ICtAaXRl bSBAY29kZXt3aGlsZV9sZW5AdmFye219QHZhcntufX0NCj4+ICtTZXQgb3Bl cmFuZCAwIHRvIHRoZSBudW1iZXIgb2YgYWN0aXZlIGVsZW1lbnRzIGluIHZl Y3RvciB3aWxsIGJlIHVwZGF0ZWQgdmFsdWUuDQo+PiArb3BlcmFuZCAxIGlz IHRoZSB0b3RhbCBlbGVtZW50cyBuZWVkIHRvIGJlIHVwZGF0ZWQgdmFsdWUu DQo+PiArb3BlcmFuZCAyIGlzIHRoZSB2ZWN0b3JpemF0aW9uIGZhY3Rvci4N Cj4+ICtUaGUgb3BlcmF0aW9uIGlzIGVxdWl2YWxlbnQgdG86DQo+PiArDQo+ PiArQHNtYWxsZXhhbXBsZQ0KPj4gK29wZXJhbmQwID0gTUlOIChvcGVyYW5k MSwgb3BlcmFuZDIpOw0KPj4gK29wZXJhbmQyIGNhbiBiZSBjb25zdF9wb2x5 X2ludCBvciBwb2x5X2ludCByZWxhdGVkIHRvIHZlY3RvciBtb2RlIHNpemUu DQo+PiArU29tZSB0YXJnZXQgbGlrZSBSSVNDLVYgaGFzIGEgc3RhbmRhbG9u ZSBpbnN0cnVjdGlvbiB0byBnZXQgTUlOIChuLCBNT0RFIFNJWkUpIHNvDQo+ PiArdGhhdCB3ZSBjYW4gcmVkdWNlIGEgdXNlIG9mIGdlbmVyYWwgcHVycG9z ZSByZWdpc3Rlci4NCj4+ICtAZW5kIHNtYWxsZXhhbXBsZQ0KPj4gKw0KPj4g QGNpbmRleCBAY29kZXtjaGVja19yYXdfcHRyc0B2YXJ7bX19IGluc3RydWN0 aW9uIHBhdHRlcm4NCj4+IEBpdGVtIEBzYW1we2NoZWNrX3Jhd19wdHJzQHZh cnttfX0NCj4+IENoZWNrIHdoZXRoZXIsIGdpdmVuIHR3byBwb2ludGVycyBA dmFye2F9IGFuZCBAdmFye2J9IGFuZCBhIGxlbmd0aCBAdmFye2xlbn0sDQo+ PiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmNjIGIvZ2NjL2ludGVy bmFsLWZuLmNjDQo+PiBpbmRleCA2ZTgxZGMwNWUwZS4uNWY0NGRlZjkwZDMg MTAwNjQ0DQo+PiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MNCj4+ICsrKyBi L2djYy9pbnRlcm5hbC1mbi5jYw0KPj4gQEAgLTEyNyw2ICsxMjcsNyBAQCBp bml0X2ludGVybmFsX2ZucyAoKQ0KPj4gI2RlZmluZSBjb25kX2JpbmFyeV9k aXJlY3QgeyAxLCAxLCB0cnVlIH0NCj4+ICNkZWZpbmUgY29uZF90ZXJuYXJ5 X2RpcmVjdCB7IDEsIDEsIHRydWUgfQ0KPj4gI2RlZmluZSB3aGlsZV9kaXJl Y3QgeyAwLCAyLCBmYWxzZSB9DQo+PiArI2RlZmluZSB3aGlsZV9sZW5fZGly ZWN0IHsgMCwgMCwgZmFsc2UgfQ0KPj4gI2RlZmluZSBmb2xkX2V4dHJhY3Rf ZGlyZWN0IHsgMiwgMiwgZmFsc2UgfQ0KPj4gI2RlZmluZSBmb2xkX2xlZnRf ZGlyZWN0IHsgMSwgMSwgZmFsc2UgfQ0KPj4gI2RlZmluZSBtYXNrX2ZvbGRf bGVmdF9kaXJlY3QgeyAxLCAxLCBmYWxzZSB9DQo+PiBAQCAtMzcwMiw2ICsz NzAzLDMzIEBAIGV4cGFuZF93aGlsZV9vcHRhYl9mbiAoaW50ZXJuYWxfZm4s IGdjYWxsICpzdG10LCBjb252ZXJ0X29wdGFiIG9wdGFiKQ0KPj4gICAgICBl bWl0X21vdmVfaW5zbiAobGhzX3J0eCwgb3BzWzBdLnZhbHVlKTsNCj4+IH0N Cj4+ICsvKiBFeHBhbmQgV0hJTEVfTEVOIGNhbGwgU1RNVCB1c2luZyBvcHRh YiBPUFRBQi4gICovDQo+PiArc3RhdGljIHZvaWQNCj4+ICtleHBhbmRfd2hp bGVfbGVuX29wdGFiX2ZuIChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNv bnZlcnRfb3B0YWIgb3B0YWIpDQo+PiArew0KPj4gKyAgZXhwYW5kX29wZXJh bmQgb3BzWzNdOw0KPj4gKyAgdHJlZSByaHNfdHlwZVsyXTsNCj4+ICsNCj4+ ICsgIHRyZWUgbGhzID0gZ2ltcGxlX2NhbGxfbGhzIChzdG10KTsNCj4+ICsg IHRyZWUgbGhzX3R5cGUgPSBUUkVFX1RZUEUgKGxocyk7DQo+PiArICBydHgg bGhzX3J0eCA9IGV4cGFuZF9leHByIChsaHMsIE5VTExfUlRYLCBWT0lEbW9k ZSwgRVhQQU5EX1dSSVRFKTsNCj4+ICsgIGNyZWF0ZV9vdXRwdXRfb3BlcmFu ZCAoJm9wc1swXSwgbGhzX3J0eCwgVFlQRV9NT0RFIChsaHNfdHlwZSkpOw0K Pj4gKw0KPj4gKyAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBnaW1w bGVfY2FsbF9udW1fYXJncyAoc3RtdCk7ICsraSkNCj4+ICsgICAgew0KPj4g KyAgICAgIHRyZWUgcmhzID0gZ2ltcGxlX2NhbGxfYXJnIChzdG10LCBpKTsN Cj4+ICsgICAgICByaHNfdHlwZVtpXSA9IFRSRUVfVFlQRSAocmhzKTsNCj4+ ICsgICAgICBydHggcmhzX3J0eCA9IGV4cGFuZF9ub3JtYWwgKHJocyk7DQo+ PiArICAgICAgY3JlYXRlX2lucHV0X29wZXJhbmQgKCZvcHNbaSArIDFdLCBy aHNfcnR4LCBUWVBFX01PREUgKHJoc190eXBlW2ldKSk7DQo+PiArICAgIH0N Cj4+ICsNCj4+ICsgIGluc25fY29kZSBpY29kZSA9IGRpcmVjdF9vcHRhYl9o YW5kbGVyIChvcHRhYiwgVFlQRV9NT0RFIChyaHNfdHlwZVswXSkpOw0KPj4g Kw0KPj4gKyAgZXhwYW5kX2luc24gKGljb2RlLCAzLCBvcHMpOw0KPj4gKyAg aWYgKCFydHhfZXF1YWxfcCAobGhzX3J0eCwgb3BzWzBdLnZhbHVlKSkNCj4+ ICsgICAgZW1pdF9tb3ZlX2luc24gKGxoc19ydHgsIG9wc1swXS52YWx1ZSk7 DQo+PiArfQ0KPj4gKw0KPj4gLyogRXhwYW5kIGEgY2FsbCB0byBhIGNvbnZl cnQtbGlrZSBvcHRhYiB1c2luZyB0aGUgb3BlcmFuZHMgaW4gU1RNVC4NCj4+ ICAgICBGTiBoYXMgYSBzaW5nbGUgb3V0cHV0IG9wZXJhbmQgYW5kIE5BUkdT IGlucHV0IG9wZXJhbmRzLiAgKi8NCj4+IEBAIC0zODQzLDYgKzM4NzEsNyBA QCBtdWx0aV92ZWN0b3Jfb3B0YWJfc3VwcG9ydGVkX3AgKGNvbnZlcnRfb3B0 YWIgb3B0YWIsIHRyZWVfcGFpciB0eXBlcywNCj4+ICNkZWZpbmUgZGlyZWN0 X3NjYXR0ZXJfc3RvcmVfb3B0YWJfc3VwcG9ydGVkX3AgY29udmVydF9vcHRh Yl9zdXBwb3J0ZWRfcA0KPj4gI2RlZmluZSBkaXJlY3RfbGVuX3N0b3JlX29w dGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPj4g I2RlZmluZSBkaXJlY3Rfd2hpbGVfb3B0YWJfc3VwcG9ydGVkX3AgY29udmVy dF9vcHRhYl9zdXBwb3J0ZWRfcA0KPj4gKyNkZWZpbmUgZGlyZWN0X3doaWxl X2xlbl9vcHRhYl9zdXBwb3J0ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVk X3ANCj4+ICNkZWZpbmUgZGlyZWN0X2ZvbGRfZXh0cmFjdF9vcHRhYl9zdXBw b3J0ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVkX3ANCj4+ICNkZWZpbmUg ZGlyZWN0X2ZvbGRfbGVmdF9vcHRhYl9zdXBwb3J0ZWRfcCBkaXJlY3Rfb3B0 YWJfc3VwcG9ydGVkX3ANCj4+ICNkZWZpbmUgZGlyZWN0X21hc2tfZm9sZF9s ZWZ0X29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRf cA0KPj4gZGlmZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5kZWYgYi9nY2Mv aW50ZXJuYWwtZm4uZGVmDQo+PiBpbmRleCA3ZmU3NDJjMmFlNy4uM2E5MzNh YmZmNWQgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ PiArKysgYi9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+PiBAQCAtMTUzLDYgKzE1 Myw3IEBAIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoVkVDX1NFVCwgMCwgdmVj X3NldCwgdmVjX3NldCkNCj4+IERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoTEVO X1NUT1JFLCAwLCBsZW5fc3RvcmUsIGxlbl9zdG9yZSkNCj4+IERFRl9JTlRF Uk5BTF9PUFRBQl9GTiAoV0hJTEVfVUxULCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9U SFJPVywgd2hpbGVfdWx0LCB3aGlsZSkNCj4+ICtERUZfSU5URVJOQUxfT1BU QUJfRk4gKFdISUxFX0xFTiwgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csIHdo aWxlX2xlbiwgd2hpbGVfbGVuKQ0KPj4gREVGX0lOVEVSTkFMX09QVEFCX0ZO IChDSEVDS19SQVdfUFRSUywgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csDQo+ PiAgICAgICAgY2hlY2tfcmF3X3B0cnMsIGNoZWNrX3B0cnMpDQo+PiBERUZf SU5URVJOQUxfT1BUQUJfRk4gKENIRUNLX1dBUl9QVFJTLCBFQ0ZfQ09OU1Qg fCBFQ0ZfTk9USFJPVywNCj4+IGRpZmYgLS1naXQgYS9nY2Mvb3B0YWJzLmRl ZiBiL2djYy9vcHRhYnMuZGVmDQo+PiBpbmRleCA2OTVmNTkxMWIzMC4uZjU5 MzhiZDJjMjQgMTAwNjQ0DQo+PiAtLS0gYS9nY2Mvb3B0YWJzLmRlZg0KPj4g KysrIGIvZ2NjL29wdGFicy5kZWYNCj4+IEBAIC00NzYsMyArNDc2LDQgQEAg T1BUQUJfREMgKHZlY19zZXJpZXNfb3B0YWIsICJ2ZWNfc2VyaWVzJGEiLCBW RUNfU0VSSUVTKQ0KPj4gT1BUQUJfRCAodmVjX3NobF9pbnNlcnRfb3B0YWIs ICJ2ZWNfc2hsX2luc2VydF8kYSIpDQo+PiBPUFRBQl9EIChsZW5fbG9hZF9v cHRhYiwgImxlbl9sb2FkXyRhIikNCj4+IE9QVEFCX0QgKGxlbl9zdG9yZV9v cHRhYiwgImxlbl9zdG9yZV8kYSIpDQo+PiArT1BUQUJfRCAod2hpbGVfbGVu X29wdGFiLCAid2hpbGVfbGVuJGEiKQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90 cmVlLXNzYS1sb29wLW1hbmlwLmNjIGIvZ2NjL3RyZWUtc3NhLWxvb3AtbWFu aXAuY2MNCj4+IGluZGV4IDA5YWNjMWM5NGNjLi5jZGJmMjgwZTI0OSAxMDA2 NDQNCj4+IC0tLSBhL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmNjDQo+PiAr KysgYi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5jYw0KPj4gQEAgLTU5LDE0 ICs1OSwxNCBAQCBzdGF0aWMgYml0bWFwX29ic3RhY2sgbG9vcF9yZW5hbWVy X29ic3RhY2s7DQo+PiB2b2lkDQo+PiBjcmVhdGVfaXYgKHRyZWUgYmFzZSwg dHJlZSBzdGVwLCB0cmVlIHZhciwgY2xhc3MgbG9vcCAqbG9vcCwNCj4+ICAg IGdpbXBsZV9zdG10X2l0ZXJhdG9yICppbmNyX3BvcywgYm9vbCBhZnRlciwN Cj4+IC0gICAgdHJlZSAqdmFyX2JlZm9yZSwgdHJlZSAqdmFyX2FmdGVyKQ0K Pj4gKyAgICB0cmVlICp2YXJfYmVmb3JlLCB0cmVlICp2YXJfYWZ0ZXIsIGVu dW0gdHJlZV9jb2RlIGNvZGUpDQo+PiB7DQo+PiAgICBnYXNzaWduICpzdG10 Ow0KPj4gICAgZ3BoaSAqcGhpOw0KPj4gICAgdHJlZSBpbml0aWFsLCBzdGVw MTsNCj4+ICAgIGdpbXBsZV9zZXEgc3RtdHM7DQo+PiAgICB0cmVlIHZiLCB2 YTsNCj4+IC0gIGVudW0gdHJlZV9jb2RlIGluY3Jfb3AgPSBQTFVTX0VYUFI7 DQo+PiArICBlbnVtIHRyZWVfY29kZSBpbmNyX29wID0gY29kZTsNCj4+ICAg IGVkZ2UgcGUgPSBsb29wX3ByZWhlYWRlcl9lZGdlIChsb29wKTsNCj4+ICAg IGlmICh2YXIgIT0gTlVMTF9UUkVFKQ0KPj4gZGlmZiAtLWdpdCBhL2djYy90 cmVlLXNzYS1sb29wLW1hbmlwLmggYi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5p cC5oDQo+PiBpbmRleCBkNDkyNzNhMzk4Ny4uZGE3NTUzMjBhM2EgMTAwNjQ0 DQo+PiAtLS0gYS9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5oDQo+PiArKysg Yi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5oDQo+PiBAQCAtMjMsNyArMjMs NyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAg SWYgbm90IHNlZQ0KPj4gdHlwZWRlZiB2b2lkICgqdHJhbnNmb3JtX2NhbGxi YWNrKShjbGFzcyBsb29wICosIHZvaWQgKik7DQo+PiBleHRlcm4gdm9pZCBj cmVhdGVfaXYgKHRyZWUsIHRyZWUsIHRyZWUsIGNsYXNzIGxvb3AgKiwgZ2lt cGxlX3N0bXRfaXRlcmF0b3IgKiwNCj4+IC0gICAgICAgIGJvb2wsIHRyZWUg KiwgdHJlZSAqKTsNCj4+ICsgICAgICAgIGJvb2wsIHRyZWUgKiwgdHJlZSAq LCBlbnVtIHRyZWVfY29kZSA9IFBMVVNfRVhQUik7DQo+PiBleHRlcm4gdm9p ZCByZXdyaXRlX2ludG9fbG9vcF9jbG9zZWRfc3NhIChiaXRtYXAsIHVuc2ln bmVkKTsNCj4+IGV4dGVybiB2b2lkIHZlcmlmeV9sb29wX2Nsb3NlZF9zc2Eg KGJvb2wsIGNsYXNzIGxvb3AgKiA9IE5VTEwpOw0KPj4gZGlmZiAtLWdpdCBh L2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYyBiL2djYy90cmVlLXZlY3Qt bG9vcC1tYW5pcC5jYw0KPj4gaW5kZXggZjYwZmE1MGU4ZjQuLmYzY2Q2YzUx ZDJlIDEwMDY0NA0KPj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlw LmNjDQo+PiArKysgYi9nY2MvdHJlZS12ZWN0LWxvb3AtbWFuaXAuY2MNCj4+ IEBAIC02ODIsNiArNjgyLDE3MyBAQCB2ZWN0X3NldF9sb29wX2NvbnRyb2xz X2RpcmVjdGx5IChjbGFzcyBsb29wICpsb29wLCBsb29wX3ZlY19pbmZvIGxv b3BfdmluZm8sDQo+PiAgICByZXR1cm4gbmV4dF9jdHJsOw0KPj4gfQ0KPj4g Ky8qIEhlbHBlciBmb3IgdmVjdF9zZXRfbG9vcF9jb25kaXRpb25fcGFydGlh bF92ZWN0b3JzLiAgR2VuZXJhdGUgZGVmaW5pdGlvbnMNCj4+ICsgICBmb3Ig YWxsIHRoZSByZ3JvdXAgY29udHJvbHMgaW4gUkdDIGFuZCByZXR1cm4gYSBj b250cm9sIHRoYXQgaXMgbm9uemVybw0KPj4gKyAgIHdoZW4gdGhlIGxvb3Ag bmVlZHMgdG8gaXRlcmF0ZS4gIEFkZCBhbnkgbmV3IHByZWhlYWRlciBzdGF0 ZW1lbnRzIHRvDQo+PiArICAgUFJFSEVBREVSX1NFUS4gIFVzZSBMT09QX0NP TkRfR1NJIHRvIGluc2VydCBjb2RlIGJlZm9yZSB0aGUgZXhpdCBnY29uZC4N Cj4+ICsNCj4+ICsgICBSR0MgYmVsb25ncyB0byBsb29wIExPT1AuICBUaGUg bG9vcCBvcmlnaW5hbGx5IGl0ZXJhdGVkIE5JVEVSUw0KPj4gKyAgIHRpbWVz IGFuZCBoYXMgYmVlbiB2ZWN0b3JpemVkIGFjY29yZGluZyB0byBMT09QX1ZJ TkZPLg0KPj4gKw0KPj4gKyAgIFVubGlrZSB2ZWN0X3NldF9sb29wX2NvbnRy b2xzX2RpcmVjdGx5IHdoaWNoIGlzIGl0ZXJhdGluZyBmcm9tIDAtYmFzZWQg SVYNCj4+ICsgICB0byBURVNUX0xJTUlUIC0gYmlhcy4NCj4+ICsNCj4+ICsg ICBJbiB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3doaWxlX2xlbiwgd2Ug YXJlIGl0ZXJhdGluZyBmcm9tIHN0YXJ0IGF0DQo+PiArICAgSVYgPSBURVNU X0xJTUlUIC0gYmlhcyBhbmQga2VlcCBzdWJ0cmFjdCBJViBieSB0aGUgbGVu Z3RoIGNhbGN1bGF0ZWQgYnkNCj4+ICsgICBJRk5fV0hJTEVfTEVOIHBhdHRl cm4uDQo+PiArDQo+PiArICAgTm90ZTogdGhlIGNvc3Qgb2YgdGhlIGNvZGUg Z2VuZXJhdGVkIGJ5IHRoaXMgZnVuY3Rpb24gaXMgbW9kZWxlZA0KPj4gKyAg IGJ5IHZlY3RfZXN0aW1hdGVfbWluX3Byb2ZpdGFibGVfaXRlcnMsIHNvIGNo YW5nZXMgaGVyZSBtYXkgbmVlZA0KPj4gKyAgIGNvcnJlc3BvbmRpbmcgY2hh bmdlcyB0aGVyZS4NCj4+ICsNCj4+ICsgICAxLiBTaW5nbGUgcmdyb3VwLCB0 aGUgR2ltcGxlIElSIHNob3VsZCBiZToNCj4+ICsNCj4+ICsgPGJiIDM+DQo+ PiArIF8xOSA9ICh1bnNpZ25lZCBsb25nKSBuXzUoRCk7DQo+PiArIC4uLg0K Pj4gKw0KPj4gKyA8YmIgND46DQo+PiArIC4uLg0KPj4gKyAjIGl2dG1wXzIw ID0gUEhJIDxpdnRtcF8yMSg0KSwgXzE5KDMpPg0KPj4gKyAuLi4NCj4+ICsg XzIyID0gLldISUxFX0xFTiAoaXZ0bXBfMjAsIHZmKTsNCj4+ICsgLi4uDQo+ PiArIHZlY3RvciBzdGF0ZW1lbnQgKHVzZSBfMjIpOw0KPj4gKyAuLi4NCj4+ ICsgaXZ0bXBfMjEgPSBpdnRtcF8yMCAtIF8yMjsNCj4+ICsgLi4uDQo+PiAr IGlmIChpdnRtcF8yMSAhPSAwKQ0KPj4gKyAgIGdvdG8gPGJiIDQ+OyBbNzUu MDAlXQ0KPj4gKyBlbHNlDQo+PiArICAgZ290byA8YmIgNT47IFsyNS4wMCVd DQo+PiArDQo+PiArIDxiYiA1Pg0KPj4gKyByZXR1cm47DQo+PiArDQo+PiAr ICAgTm90ZTogSUZOX1dISUxFX0xFTiB3aWxsIGd1YXJhbnRlZSAiaXZ0bXBf MjEgPSBpdnRtcF8yMCAtIF8yMiIgbmV2ZXINCj4+ICsgICB1bmRlcmZsb3cg MC4NCj4+ICsNCj4+ICsgICAyLiBNdWx0aXBsZSByZ3JvdXAsIHRoZSBHaW1w bGUgSVIgc2hvdWxkIGJlOg0KPj4gKw0KPj4gKyA8YmIgMz4NCj4+ICsgXzcw ID0gKHVuc2lnbmVkIGxvbmcpIGJuZC43XzUyOw0KPj4gKyBfNzEgPSBfNzAg KiAyOw0KPj4gKyBfNzIgPSBNQVhfRVhQUiA8XzcxLCA0PjsNCj4+ICsgXzcz ID0gXzcyICsgMTg0NDY3NDQwNzM3MDk1NTE2MTI7DQo+PiArIC4uLg0KPj4g Kw0KPj4gKyA8YmIgND46DQo+PiArIC4uLg0KPj4gKyAjIGl2dG1wXzc0ID0g UEhJIDxpdnRtcF83NSg2KSwgXzczKDEyKT4NCj4+ICsgIyBpdnRtcF83NyA9 IFBISSA8aXZ0bXBfNzgoNiksIF83MSgxMik+DQo+PiArIF83NiA9IC5XSElM RV9MRU4gKGl2dG1wXzc0LCB2ZiAqIG5pdGVtc19wZXJfY3RybCk7DQo+PiAr IF83OSA9IC5XSElMRV9MRU4gKGl2dG1wXzc3LCB2ZiAqIG5pdGVtc19wZXJf Y3RybCk7DQo+PiArIC4uLg0KPj4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2Ug Xzc5KTsNCj4+ICsgLi4uDQo+PiArIHZlY3RvciBzdGF0ZW1lbnQgKHVzZSBf NzYpOw0KPj4gKyAuLi4NCj4+ICsgXzY1ID0gXzc5IC8gMjsNCj4+ICsgdmVj dG9yIHN0YXRlbWVudCAodXNlIF82NSk7DQo+PiArIC4uLg0KPj4gKyBfNjgg PSBfNzYgLyAyOw0KPj4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2UgXzY4KTsN Cj4+ICsgLi4uDQo+PiArIGl2dG1wXzc4ID0gaXZ0bXBfNzcgLSBfNzk7DQo+ PiArIGl2dG1wXzc1ID0gaXZ0bXBfNzQgLSBfNzY7DQo+PiArIC4uLg0KPj4g KyBpZiAoaXZ0bXBfNzggIT0gMCkNCj4+ICsgICBnb3RvIDxiYiA0PjsgWzc1 LjAwJV0NCj4+ICsgZWxzZQ0KPj4gKyAgIGdvdG8gPGJiIDU+OyBbMjUuMDAl XQ0KPj4gKw0KPj4gKyA8YmIgNT4NCj4+ICsgcmV0dXJuOw0KPj4gKw0KPj4g KyovDQo+PiArDQo+PiArc3RhdGljIHRyZWUNCj4+ICt2ZWN0X3NldF9sb29w X2NvbnRyb2xzX2J5X3doaWxlX2xlbiAoY2xhc3MgbG9vcCAqbG9vcCwgbG9v cF92ZWNfaW5mbyBsb29wX3ZpbmZvLA0KPj4gKyAgICAgIGdpbXBsZV9zZXEg KnByZWhlYWRlcl9zZXEsDQo+PiArICAgICAgZ2ltcGxlX3NlcSAqaGVhZGVy X3NlcSwNCj4+ICsgICAgICByZ3JvdXBfY29udHJvbHMgKnJnYywgdHJlZSBu aXRlcnMpDQo+PiArew0KPj4gKyAgdHJlZSBjb21wYXJlX3R5cGUgPSBMT09Q X1ZJTkZPX1JHUk9VUF9DT01QQVJFX1RZUEUgKGxvb3BfdmluZm8pOw0KPj4g KyAgdHJlZSBpdl90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQRSAo bG9vcF92aW5mbyk7DQo+PiArICAvKiBXZSBhcmUgbm90IGFsbG93aW5nIG1h c2tlZCBhcHByb2FjaCBpbiBXSElMRV9MRU4uICAqLw0KPj4gKyAgZ2NjX2Fz c2VydCAoIUxPT1BfVklORk9fRlVMTFlfTUFTS0VEX1AgKGxvb3BfdmluZm8p KTsNCj4+ICsNCj4+ICsgIHRyZWUgY3RybF90eXBlID0gcmdjLT50eXBlOw0K Pj4gKyAgdW5zaWduZWQgaW50IG5pdGVtc19wZXJfaXRlciA9IHJnYy0+bWF4 X25zY2FsYXJzX3Blcl9pdGVyICogcmdjLT5mYWN0b3I7DQo+PiArICBwb2x5 X3VpbnQ2NCBuaXRlbXNfcGVyX2N0cmwgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJU UyAoY3RybF90eXBlKSAqIHJnYy0+ZmFjdG9yOw0KPj4gKyAgcG9seV91aW50 NjQgdmYgPSBMT09QX1ZJTkZPX1ZFQ1RfRkFDVE9SIChsb29wX3ZpbmZvKTsN Cj4+ICsNCj4+ICsgIC8qIENhbGN1bGF0ZSB0aGUgbWF4aW11bSBudW1iZXIg b2YgaXRlbSB2YWx1ZXMgdGhhdCB0aGUgcmdyb3VwDQo+PiArICAgICBoYW5k bGVzIGluIHRvdGFsLCB0aGUgbnVtYmVyIHRoYXQgaXQgaGFuZGxlcyBmb3Ig ZWFjaCBpdGVyYXRpb24NCj4+ICsgICAgIG9mIHRoZSB2ZWN0b3IgbG9vcC4g ICovDQo+PiArICB0cmVlIG5pdGVtc190b3RhbCA9IG5pdGVyczsNCj4+ICsg IGlmIChuaXRlbXNfcGVyX2l0ZXIgIT0gMSkNCj4+ICsgICAgew0KPj4gKyAg ICAgIC8qIFdlIGNoZWNrZWQgYmVmb3JlIHNldHRpbmcgTE9PUF9WSU5GT19V U0lOR19QQVJUSUFMX1ZFQ1RPUlNfUCB0aGF0DQo+PiArIHRoZXNlIG11bHRp cGxpY2F0aW9ucyBkb24ndCBvdmVyZmxvdy4gICovDQo+PiArICAgICAgdHJl ZSBjb21wYXJlX2ZhY3RvciA9IGJ1aWxkX2ludF9jc3QgKGNvbXBhcmVfdHlw ZSwgbml0ZW1zX3Blcl9pdGVyKTsNCj4+ICsgICAgICBuaXRlbXNfdG90YWwg PSBnaW1wbGVfYnVpbGQgKHByZWhlYWRlcl9zZXEsIE1VTFRfRVhQUiwgY29t cGFyZV90eXBlLA0KPj4gKyAgICBuaXRlbXNfdG90YWwsIGNvbXBhcmVfZmFj dG9yKTsNCj4+ICsgICAgfQ0KPj4gKw0KPj4gKyAgLyogQ29udmVydCB0aGUg Y29tcGFyaXNvbiB2YWx1ZSB0byB0aGUgSVYgdHlwZSAoZWl0aGVyIGEgbm8t b3Agb3INCj4+ICsgICAgIGEgcHJvbW90aW9uKS4gICovDQo+PiArICBuaXRl bXNfdG90YWwgPSBnaW1wbGVfY29udmVydCAocHJlaGVhZGVyX3NlcSwgaXZf dHlwZSwgbml0ZW1zX3RvdGFsKTsNCj4+ICsNCj4+ICsgIC8qIENyZWF0ZSBh biBpbmR1Y3Rpb24gdmFyaWFibGUgdGhhdCBjb3VudHMgdGhlIG51bWJlciBv ZiBpdGVtcw0KPj4gKyAgICAgcHJvY2Vzc2VkLiAgKi8NCj4+ICsgIHRyZWUg aW5kZXhfYmVmb3JlX2luY3IsIGluZGV4X2FmdGVyX2luY3I7DQo+PiArICBn aW1wbGVfc3RtdF9pdGVyYXRvciBpbmNyX2dzaTsNCj4+ICsgIGJvb2wgaW5z ZXJ0X2FmdGVyOw0KPj4gKyAgc3RhbmRhcmRfaXZfaW5jcmVtZW50X3Bvc2l0 aW9uIChsb29wLCAmaW5jcl9nc2ksICZpbnNlcnRfYWZ0ZXIpOw0KPj4gKw0K Pj4gKyAgLyogVGVzdCB0aGUgZGVjcmVtZW50ZWQgSVYsIHdoaWNoIHdpbGwg bmV2ZXIgdW5kZXJmbG93IDAgc2luY2Ugd2UgaGF2ZQ0KPj4gKyAgICAgSUZO X1dISUxFX0xFTiB0byBndXJhbnRlZSB0aGF0LiAgKi8NCj4+ICsgIHRyZWUg dGVzdF9saW1pdCA9IG5pdGVtc190b3RhbDsNCj4+ICsNCj4+ICsgIC8qIFBy b3ZpZGUgYSBkZWZpbml0aW9uIG9mIGVhY2ggY29udHJvbCBpbiB0aGUgZ3Jv dXAuICAqLw0KPj4gKyAgdHJlZSBjdHJsOw0KPj4gKyAgdW5zaWduZWQgaW50 IGk7DQo+PiArICBGT1JfRUFDSF9WRUNfRUxUX1JFVkVSU0UgKHJnYy0+Y29u dHJvbHMsIGksIGN0cmwpDQo+PiArICAgIHsNCj4+ICsgICAgICAvKiBQcmV2 aW91cyBjb250cm9scyB3aWxsIGNvdmVyIEJJQVMgaXRlbXMuICBUaGlzIGNv bnRyb2wgY292ZXJzIHRoZQ0KPj4gKyBuZXh0IGJhdGNoLiAgKi8NCj4+ICsg ICAgICBwb2x5X3VpbnQ2NCBiaWFzID0gbml0ZW1zX3Blcl9jdHJsICogaTsN Cj4+ICsgICAgICB0cmVlIGJpYXNfdHJlZSA9IGJ1aWxkX2ludF9jc3QgKGl2 X3R5cGUsIGJpYXMpOw0KPj4gKw0KPj4gKyAgICAgIC8qIFJhdGhlciB0aGFu IGhhdmUgYSBuZXcgSVYgdGhhdCBzdGFydHMgYXQgVEVTVF9MSU1JVCBhbmQg Z29lcyBkb3duIHRvDQo+PiArIEJJQVMsIHByZWZlciB0byB1c2UgdGhlIHNh bWUgVEVTVF9MSU1JVCAtIEJJQVMgYmFzZWQgSVYgZm9yIGVhY2gNCj4+ICsg Y29udHJvbCBhbmQgYWRqdXN0IHRoZSBib3VuZCBkb3duIGJ5IEJJQVMuICAq Lw0KPj4gKyAgICAgIHRyZWUgdGhpc190ZXN0X2xpbWl0ID0gdGVzdF9saW1p dDsNCj4+ICsgICAgICBpZiAoaSAhPSAwKQ0KPj4gKyB7DQo+PiArICAgdGhp c190ZXN0X2xpbWl0ID0gZ2ltcGxlX2J1aWxkIChwcmVoZWFkZXJfc2VxLCBN QVhfRVhQUiwgaXZfdHlwZSwNCj4+ICsgICB0aGlzX3Rlc3RfbGltaXQsIGJp YXNfdHJlZSk7DQo+PiArICAgdGhpc190ZXN0X2xpbWl0ID0gZ2ltcGxlX2J1 aWxkIChwcmVoZWFkZXJfc2VxLCBNSU5VU19FWFBSLCBpdl90eXBlLA0KPj4g KyAgIHRoaXNfdGVzdF9saW1pdCwgYmlhc190cmVlKTsNCj4+ICsgfQ0KPj4g Kw0KPj4gKyAgICAgIC8qIENyZWF0ZSBkZWNyZW1lbnQgSVYuICAqLw0KPj4g KyAgICAgIGNyZWF0ZV9pdiAodGhpc190ZXN0X2xpbWl0LCBjdHJsLCBOVUxM X1RSRUUsIGxvb3AsICZpbmNyX2dzaSwNCj4+ICsgaW5zZXJ0X2FmdGVyLCAm aW5kZXhfYmVmb3JlX2luY3IsICZpbmRleF9hZnRlcl9pbmNyLA0KPj4gKyBN SU5VU19FWFBSKTsNCj4+ICsNCj4+ICsgICAgICBwb2x5X3VpbnQ2NCBmaW5h bF92ZiA9IHZmICogbml0ZW1zX3Blcl9pdGVyOw0KPj4gKyAgICAgIHRyZWUg dmZfc3RlcCA9IGJ1aWxkX2ludF9jc3QgKGl2X3R5cGUsIGZpbmFsX3ZmKTsN Cj4+ICsgICAgICB0cmVlIHJlc19sZW4gPSBnaW1wbGVfYnVpbGQgKGhlYWRl cl9zZXEsIElGTl9XSElMRV9MRU4sIGl2X3R5cGUsDQo+PiArICAgIGluZGV4 X2JlZm9yZV9pbmNyLCB2Zl9zdGVwKTsNCj4+ICsgICAgICBnYXNzaWduICph c3NpZ24gPSBnaW1wbGVfYnVpbGRfYXNzaWduIChjdHJsLCByZXNfbGVuKTsN Cj4+ICsgICAgICBnaW1wbGVfc2VxX2FkZF9zdG10IChoZWFkZXJfc2VxLCBh c3NpZ24pOw0KPj4gKyAgICB9DQo+PiArDQo+PiArICByZXR1cm4gaW5kZXhf YWZ0ZXJfaW5jcjsNCj4+ICt9DQo+PiArDQo+PiAvKiBTZXQgdXAgdGhlIGl0 ZXJhdGlvbiBjb25kaXRpb24gYW5kIHJncm91cCBjb250cm9scyBmb3IgTE9P UCwgZ2l2ZW4NCj4+ICAgICB0aGF0IExPT1BfVklORk9fVVNJTkdfUEFSVElB TF9WRUNUT1JTX1AgaXMgdHJ1ZSBmb3IgdGhlIHZlY3Rvcml6ZWQNCj4+ICAg ICBsb29wLiAgTE9PUF9WSU5GTyBkZXNjcmliZXMgdGhlIHZlY3Rvcml6YXRp b24gb2YgTE9PUC4gIE5JVEVSUyBpcw0KPj4gQEAgLTcwMyw2ICs4NzAsNyBA QCB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMgKGNs YXNzIGxvb3AgKmxvb3AsDQo+PiAgICBib29sIHVzZV9tYXNrc19wID0gTE9P UF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9vcF92aW5mbyk7DQo+PiAgICB0 cmVlIGNvbXBhcmVfdHlwZSA9IExPT1BfVklORk9fUkdST1VQX0NPTVBBUkVf VFlQRSAobG9vcF92aW5mbyk7DQo+PiArICB0cmVlIGl2X3R5cGUgPSBMT09Q X1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29wX3ZpbmZvKTsNCj4+ICAgIHVu c2lnbmVkIGludCBjb21wYXJlX3ByZWNpc2lvbiA9IFRZUEVfUFJFQ0lTSU9O IChjb21wYXJlX3R5cGUpOw0KPj4gICAgdHJlZSBvcmlnX25pdGVycyA9IG5p dGVyczsNCj4+IEBAIC03NTcsMTIgKzkyNSwxOCBAQCB2ZWN0X3NldF9sb29w X2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMgKGNsYXNzIGxvb3AgKmxvb3As DQo+PiBib29sIG1pZ2h0X3dyYXBfcCA9IHZlY3Rfcmdyb3VwX2l2X21pZ2h0 X3dyYXBfcCAobG9vcF92aW5mbywgcmdjKTsNCj4+IC8qIFNldCB1cCBhbGwg Y29udHJvbHMgZm9yIHRoaXMgZ3JvdXAuICAqLw0KPj4gLSB0ZXN0X2N0cmwg PSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IChsb29wLCBsb29w X3ZpbmZvLA0KPj4gLSAgICAgICZwcmVoZWFkZXJfc2VxLA0KPj4gLSAgICAg ICZoZWFkZXJfc2VxLA0KPj4gLSAgICAgIGxvb3BfY29uZF9nc2ksIHJnYywN Cj4+IC0gICAgICBuaXRlcnMsIG5pdGVyc19za2lwLA0KPj4gLSAgICAgIG1p Z2h0X3dyYXBfcCk7DQo+PiArIGlmIChkaXJlY3RfaW50ZXJuYWxfZm5fc3Vw cG9ydGVkX3AgKElGTl9XSElMRV9MRU4sIGl2X3R5cGUsDQo+PiArICAgICBP UFRJTUlaRV9GT1JfU1BFRUQpKQ0KPj4gKyAgIHRlc3RfY3RybA0KPj4gKyAg ICAgPSB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3doaWxlX2xlbiAobG9v cCwgbG9vcF92aW5mbywNCj4+ICsgICAgJnByZWhlYWRlcl9zZXEsICZoZWFk ZXJfc2VxLA0KPj4gKyAgICByZ2MsIG5pdGVycyk7DQo+PiArIGVsc2UNCj4+ ICsgICB0ZXN0X2N0cmwNCj4+ICsgICAgID0gdmVjdF9zZXRfbG9vcF9jb250 cm9sc19kaXJlY3RseSAobG9vcCwgbG9vcF92aW5mbywgJnByZWhlYWRlcl9z ZXEsDQo+PiArICAgICAgICAmaGVhZGVyX3NlcSwgbG9vcF9jb25kX2dzaSwg cmdjLA0KPj4gKyAgICAgICAgbml0ZXJzLCBuaXRlcnNfc2tpcCwNCj4+ICsg ICAgICAgIG1pZ2h0X3dyYXBfcCk7DQo+PiAgICAgICAgfQ0KPj4gICAgLyog RW1pdCBhbGwgYWNjdW11bGF0ZWQgc3RhdGVtZW50cy4gICovDQo+PiBkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLmNjIGIvZ2NjL3RyZWUtdmVj dC1sb29wLmNjDQo+PiBpbmRleCAxYmE5ZjE4ZDczZS4uNWJmZmQ5YTYzMjIg MTAwNjQ0DQo+PiAtLS0gYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4+ICsr KyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPj4gQEAgLTEwMzYwLDEyICsx MDM2MCwxNCBAQCB2ZWN0X3JlY29yZF9sb29wX2xlbiAobG9vcF92ZWNfaW5m byBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPj4gICAgIHJn cm91cCB0aGF0IG9wZXJhdGVzIG9uIE5WRUNUT1JTIHZlY3RvcnMsIHdoZXJl IDAgPD0gSU5ERVggPCBOVkVDVE9SUy4gICovDQo+PiB0cmVlDQo+PiAtdmVj dF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVj X2xvb3BfbGVucyAqbGVucywNCj4+IC0gICAgdW5zaWduZWQgaW50IG52ZWN0 b3JzLCB1bnNpZ25lZCBpbnQgaW5kZXgpDQo+PiArdmVjdF9nZXRfbG9vcF9s ZW4gKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGxvb3BfdmVjX2luZm8g bG9vcF92aW5mbywNCj4+ICsgICAgdmVjX2xvb3BfbGVucyAqbGVucywgdW5z aWduZWQgaW50IG52ZWN0b3JzLCB0cmVlIHZlY3R5cGUsDQo+PiArICAgIHVu c2lnbmVkIGludCBpbmRleCkNCj4+IHsNCj4+ICAgIHJncm91cF9jb250cm9s cyAqcmdsID0gJigqbGVucylbbnZlY3RvcnMgLSAxXTsNCj4+IC0gIGJvb2wg dXNlX2JpYXNfYWRqdXN0ZWRfbGVuID0NCj4+IC0gICAgTE9PUF9WSU5GT19Q QVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbykgIT0gMDsNCj4+ ICsgIGJvb2wgdXNlX2JpYXNfYWRqdXN0ZWRfbGVuDQo+PiArICAgID0gTE9P UF9WSU5GT19QQVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92aW5mbykg IT0gMDsNCj4+ICsgIHRyZWUgaXZfdHlwZSA9IExPT1BfVklORk9fUkdST1VQ X0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KPj4gICAgLyogUG9wdWxhdGUgdGhl IHJncm91cCdzIGxlbiBhcnJheSwgaWYgdGhpcyBpcyB0aGUgZmlyc3QgdGlt ZSB3ZSd2ZQ0KPj4gICAgICAgdXNlZCBpdC4gICovDQo+PiBAQCAtMTAzODYs OCArMTAzODgsOCBAQCB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92ZWNfaW5m byBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0KPj4gICBpZiAo dXNlX2JpYXNfYWRqdXN0ZWRfbGVuKQ0KPj4gICAgIHsNCj4+ICAgICAgIGdj Y19hc3NlcnQgKGkgPT0gMCk7DQo+PiAtICAgICAgIHRyZWUgYWRqdXN0ZWRf bGVuID0NCj4+IC0gbWFrZV90ZW1wX3NzYV9uYW1lIChsZW5fdHlwZSwgTlVM TCwgImFkanVzdGVkX2xvb3BfbGVuIik7DQo+PiArICAgICAgIHRyZWUgYWRq dXN0ZWRfbGVuDQo+PiArID0gbWFrZV90ZW1wX3NzYV9uYW1lIChsZW5fdHlw ZSwgTlVMTCwgImFkanVzdGVkX2xvb3BfbGVuIik7DQo+PiAgICAgICBTU0Ff TkFNRV9ERUZfU1RNVCAoYWRqdXN0ZWRfbGVuKSA9IGdpbXBsZV9idWlsZF9u b3AgKCk7DQo+PiAgICAgICByZ2wtPmJpYXNfYWRqdXN0ZWRfY3RybCA9IGFk anVzdGVkX2xlbjsNCj4+ICAgICB9DQo+PiBAQCAtMTAzOTYsNiArMTAzOTgs MjcgQEAgdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92 aW5mbywgdmVjX2xvb3BfbGVucyAqbGVucywNCj4+ICAgIGlmICh1c2VfYmlh c19hZGp1c3RlZF9sZW4pDQo+PiAgICAgIHJldHVybiByZ2wtPmJpYXNfYWRq dXN0ZWRfY3RybDsNCj4+ICsgIGVsc2UgaWYgKGRpcmVjdF9pbnRlcm5hbF9m bl9zdXBwb3J0ZWRfcCAoSUZOX1dISUxFX0xFTiwgaXZfdHlwZSwNCj4+ICsg ICAgT1BUSU1JWkVfRk9SX1NQRUVEKSkNCj4+ICsgICAgew0KPj4gKyAgICAg IHRyZWUgbG9vcF9sZW4gPSByZ2wtPmNvbnRyb2xzW2luZGV4XTsNCj4+ICsg ICAgICBwb2x5X2ludDY0IG51bml0czEgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJU UyAocmdsLT50eXBlKTsNCj4+ICsgICAgICBwb2x5X2ludDY0IG51bml0czIg PSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAodmVjdHlwZSk7DQo+PiArICAgICAg aWYgKG1heWJlX25lIChudW5pdHMxLCBudW5pdHMyKSkNCj4+ICsgew0KPj4g KyAgIC8qIEEgbG9vcCBsZW4gZm9yIGRhdGEgdHlwZSBYIGNhbiBiZSByZXVz ZWQgZm9yIGRhdGEgdHlwZSBZDQo+PiArICAgICAgaWYgWCBoYXMgTiB0aW1l cyBtb3JlIGVsZW1lbnRzIHRoYW4gWSBhbmQgaWYgWSdzIGVsZW1lbnRzDQo+ PiArICAgICAgYXJlIE4gdGltZXMgYmlnZ2VyIHRoYW4gWCdzLiAgKi8NCj4+ ICsgICBnY2NfYXNzZXJ0IChtdWx0aXBsZV9wIChudW5pdHMxLCBudW5pdHMy KSk7DQo+PiArICAgdW5zaWduZWQgaW50IGZhY3RvciA9IGV4YWN0X2RpdiAo bnVuaXRzMSwgbnVuaXRzMikudG9fY29uc3RhbnQgKCk7DQo+PiArICAgZ2lt cGxlX3NlcSBzZXEgPSBOVUxMOw0KPj4gKyAgIGxvb3BfbGVuID0gZ2ltcGxl X2J1aWxkICgmc2VxLCBSRElWX0VYUFIsIGl2X3R5cGUsIGxvb3BfbGVuLA0K Pj4gKyAgICBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBmYWN0b3IpKTsNCj4+ ICsgICBpZiAoc2VxKQ0KPj4gKyAgICAgZ3NpX2luc2VydF9zZXFfYmVmb3Jl IChnc2ksIHNlcSwgR1NJX1NBTUVfU1RNVCk7DQo+PiArIH0NCj4+ICsgICAg ICByZXR1cm4gbG9vcF9sZW47DQo+PiArICAgIH0NCj4+ICAgIGVsc2UNCj4+ ICAgICAgcmV0dXJuIHJnbC0+Y29udHJvbHNbaW5kZXhdOw0KPj4gfQ0KPj4g ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgYi9nY2MvdHJl ZS12ZWN0LXN0bXRzLmNjDQo+PiBpbmRleCBlZmEyZDBkYWE1Mi4uNzA4Yzhh MWQ4MDYgMTAwNjQ0DQo+PiAtLS0gYS9nY2MvdHJlZS12ZWN0LXN0bXRzLmNj DQo+PiArKysgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+PiBAQCAtODY1 Myw4ICs4NjUzLDkgQEAgdmVjdG9yaXphYmxlX3N0b3JlICh2ZWNfaW5mbyAq dmluZm8sDQo+PiAgICAgICBlbHNlIGlmIChsb29wX2xlbnMpDQo+PiB7DQo+ PiAgIHRyZWUgZmluYWxfbGVuDQo+PiAtICAgICA9IHZlY3RfZ2V0X2xvb3Bf bGVuIChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+PiAtIHZlY19udW0gKiBu Y29waWVzLCB2ZWNfbnVtICogaiArIGkpOw0KPj4gKyAgICAgPSB2ZWN0X2dl dF9sb29wX2xlbiAoZ3NpLCBsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+PiAr IHZlY19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPj4gKyB2ZWNfbnVtICog aiArIGkpOw0KPj4gICB0cmVlIHB0ciA9IGJ1aWxkX2ludF9jc3QgKHJlZl90 eXBlLCBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0KPj4gICBtYWNoaW5lX21v ZGUgdm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KPj4gICBvcHRfbWFj aGluZV9tb2RlIG5ld19vdm1vZGUNCj4+IEBAIC0xMDAwOSw4ICsxMDAxMCw4 IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNfaW5mbyAqdmluZm8sDQo+PiAg ICAgZWxzZSBpZiAobG9vcF9sZW5zICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAh PSBWTUFUX0lOVkFSSUFOVCkNCj4+ICAgICAgIHsNCj4+IHRyZWUgZmluYWxf bGVuDQo+PiAtICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92aW5mbywg bG9vcF9sZW5zLA0KPj4gLSAgICAgICAgdmVjX251bSAqIG5jb3BpZXMsDQo+ PiArICAgPSB2ZWN0X2dldF9sb29wX2xlbiAoZ3NpLCBsb29wX3ZpbmZvLCBs b29wX2xlbnMsDQo+PiArICAgICAgICB2ZWNfbnVtICogbmNvcGllcywgdmVj dHlwZSwNCj4+ICAgICAgICB2ZWNfbnVtICogaiArIGkpOw0KPj4gdHJlZSBw dHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwNCj4+ICAgYWxpZ24gKiBC SVRTX1BFUl9VTklUKTsNCj4+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0 b3JpemVyLmggYi9nY2MvdHJlZS12ZWN0b3JpemVyLmgNCj4+IGluZGV4IDlj ZjJmYjIzZmUzLi5lNWNmMzhjYWY0YiAxMDA2NDQNCj4+IC0tLSBhL2djYy90 cmVlLXZlY3Rvcml6ZXIuaA0KPj4gKysrIGIvZ2NjL3RyZWUtdmVjdG9yaXpl ci5oDQo+PiBAQCAtMjI5Myw4ICsyMjkzLDggQEAgZXh0ZXJuIHRyZWUgdmVj dF9nZXRfbG9vcF9tYXNrIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqLCB2ZWNf bG9vcF9tYXNrcyAqLA0KPj4gdW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25l ZCBpbnQpOw0KPj4gZXh0ZXJuIHZvaWQgdmVjdF9yZWNvcmRfbG9vcF9sZW4g KGxvb3BfdmVjX2luZm8sIHZlY19sb29wX2xlbnMgKiwgdW5zaWduZWQgaW50 LA0KPj4gICB0cmVlLCB1bnNpZ25lZCBpbnQpOw0KPj4gLWV4dGVybiB0cmVl IHZlY3RfZ2V0X2xvb3BfbGVuIChsb29wX3ZlY19pbmZvLCB2ZWNfbG9vcF9s ZW5zICosIHVuc2lnbmVkIGludCwNCj4+IC0gICAgICAgIHVuc2lnbmVkIGlu dCk7DQo+PiArZXh0ZXJuIHRyZWUgdmVjdF9nZXRfbG9vcF9sZW4gKGdpbXBs ZV9zdG10X2l0ZXJhdG9yICosIGxvb3BfdmVjX2luZm8sDQo+PiArICAgICAg ICB2ZWNfbG9vcF9sZW5zICosIHVuc2lnbmVkIGludCwgdHJlZSwgdW5zaWdu ZWQgaW50KTsNCj4+IGV4dGVybiBnaW1wbGVfc2VxIHZlY3RfZ2VuX2xlbiAo dHJlZSwgdHJlZSwgdHJlZSwgdHJlZSk7DQo+PiBleHRlcm4gc3RtdF92ZWNf aW5mbyBpbmZvX2Zvcl9yZWR1Y3Rpb24gKHZlY19pbmZvICosIHN0bXRfdmVj X2luZm8pOw0KPj4gZXh0ZXJuIGJvb2wgcmVkdWN0aW9uX2ZuX2Zvcl9zY2Fs YXJfY29kZSAoY29kZV9oZWxwZXIsIGludGVybmFsX2ZuICopOw0KPiAgDQog DQo= ------=_001_NextPart001246622310_=------