From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast1.qq.com (smtpbguseast1.qq.com [54.204.34.129]) by sourceware.org (Postfix) with ESMTPS id BCC4A3858D28 for ; Wed, 12 Apr 2023 08:00:53 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org BCC4A3858D28 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: bizesmtp89t1681286447t9vg18ah Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 12 Apr 2023 16:00:46 +0800 (CST) X-QQ-SSF: 01400000000000F0O000000A0000000 X-QQ-FEAT: 7YFKcddXagg45gFhpdM91BzlLwzsVXVImOS+Vr1CMFPNWiV7mFRMH+h9xMKgU ICduQ51glGRc4BgekKsEodDG2QfJ5ivpN/OEhJ7QvBdIf9fYNgfZk5ZL5+OHQLA2fI4507u 76hIHXv4Ank96wrIAW7i2fxsDdnvfNXqLzUYAYxdUPH1tyS5JfeGfSCkhVA9GuQ/rShm7wj Sr+kRurx3cEpqqeDnHbZePZmnYJoGizZ34U9v5K7+mCd6rOeFgMr6sIsRsHMtYtWEfuPoFZ Svmr7KMCT5ksKcJY60b4B/GbUFqKWgrCMlyT+tYXUNdowvym6sk4jLVtjnc0PBCg9j7DQfH V8c/3v9Jz8EyJlmdOJ7IK53jaKwXr1bR2a3d5hVou0V76Ahfl6NbnM2aQajDBM8mWP5QBdW U4RRF7nT74kWuCHE+U+42NOvkhifGSAsL6yGF67Fp3M= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 7700873481228169901 Date: Wed, 12 Apr 2023 16:00:46 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther , richard.sandiford Cc: gcc-patches , 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>, <63723855B0BF2130+2023041120125573846623@rivai.ai>, , X-Priority: 3 X-GUID: 8B4CE01F-DD37-4379-8CC6-126D4366224B X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <139DA38AFC9CA5B5+2023041216004591287739@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart873466225285_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-9.9 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_SORBS_WEB,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID 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_NextPart873466225285_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 VGhhbmsgeW91IHZlcnkgbXVjaCBmb3IgcmVwbHkuDQoNCldISUxFX0xFTiBp cyB0aGUgcGF0dGVybiB0aGF0IGNhbGN1bGF0ZXMgdGhlIG51bWJlciBvZiB0 aGUgZWxlbWVudHMgb2YgdGhlIHZlY3RvciB3aWxsIGJlIHVwZGF0ZWQgaW4g ZWFjaCBpdGVyYXRpb24uDQpGb3IgUlZWLCB3ZSB1c2UgdnNldHZsIGluc3Ry dWN0aW9uIHRvIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9mIHRoZSBlbGVtZW50 cyBvZiB0aGUgdmVjdG9yLg0KDQpXSElMRV9VTFQgY2FuIG5vdCB3b3JrIGZv ciBSVlYgc2luY2UgV0hJTEVfVUxUIGlzIGdlbmVyYXRpbmcgbWFzayB0byBw cmVkaWNhdGUgdmVjdG9yIG9wZXJhdGlvbiwgYnV0IFJWViBkbyBub3QNCnVz ZSBtYXNrIHRvIGRvIHRoZSBsb29wIHN0cmlwIG1pbmluZyAoUlZWIG9ubHkg dXNlIG1hc2sgZm9yIGNvbnRyb2wgZmxvdyBpbnNpZGUgdGhlIGxvb3ApLg0K DQpIZXJlIGlzIHRoZSBleGFtcGxlIFdISUxFX1VMVCB3b3JraW5nIGluIEFS TSBTVkU6DQpodHRwczovL2dvZGJvbHQub3JnL3ovaktzVDhFMWhQIA0KDQpU aGUgZmlyc3QgZXhhbXBsZSBpczoNCnZvaWQgZm9vIChpbnQzMl90ICogX19y ZXN0cmljdCBhLCBpbnQzMl90ICogX19yZXN0cmljdCBiLCBpbnQgbikNCnsN CiAgICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCiAgICAgIGFbaV0g PSBhW2ldICsgYltpXTsNCn0NCg0KQVJNIFNWRToNCmZvbzoNCiAgICAgICAg Y21wICAgICB3MiwgMA0KICAgICAgICBibGUgICAgIC5MMQ0KICAgICAgICBt b3YgICAgIHgzLCAwDQogICAgICAgIGNudHcgICAgeDQNCiAgICAgICAgd2hp bGVsbyBwMC5zLCB3enIsIHcyDQouTDM6DQogICAgICAgIGxkMXcgICAgejEu cywgcDAveiwgW3gwLCB4MywgbHNsIDJdDQogICAgICAgIGxkMXcgICAgejAu cywgcDAveiwgW3gxLCB4MywgbHNsIDJdDQogICAgICAgIGFkZCAgICAgejAu cywgejAucywgejEucw0KICAgICAgICBzdDF3ICAgIHowLnMsIHAwLCBbeDAs IHgzLCBsc2wgMl0NCiAgICAgICAgYWRkICAgICB4MywgeDMsIHg0DQogICAg ICAgIHdoaWxlbG8gcDAucywgdzMsIHcyDQogICAgICAgIGIuYW55ICAgLkwz DQouTDE6DQogICAgICAgIHJldA0KDQpIZXJlLCB3aGlsZWxvIHdpbGwgZ2Vu ZXJhdGUgdGhlIG1hc2sgYWNjb3JkaW5nIHRvIHczIHRvIHcyLg0KU28gZm9y IGV4YW1wbGUsIGlmIHczID0gMCwgYW5kIHcyID0gMyAoU3VwcG9zZSBtYWNo aW5lIHZlY3RvciBsZW5ndGggPiAzKS4NClRoZW4gaXQgd2lsbCBnZW5lcmF0 ZSBhIG1hc2sgd2l0aCAwYjExMSBtYXNrIHRvIHByZWRpY2F0ZSBsb2FkcyBh bmQgc3RvcmVzLg0KDQpGb3IgUlZWLCB3ZSBjYW4ndCBkbyB0aGF0IHNpbmNl IFJWViBkb2Vzbid0IGhhdmUgd2hpbGVsbyBpbnN0cnVjdGlvbnMgdG8gZ2Vu ZXJhdGUgcHJlZGljYXRlIG1hc2suDQpBbHNvLCB3ZSBjYW4ndCB1c2UgbWFz ayBhcyB0aGUgcHJlZGljYXRlIHRvIGRvIGxvb3Agc3RyaXAgbWluaW5nIHNp bmNlIFJWViBvbmx5IGhhcyAxIHNpbmdsZSBtYXNrIA0KdG8gaGFuZGxlIGZs b3cgY29udHJvbCAgaW5zaWRlIHRoZSBsb29wLg0KDQpJbnN0ZWFkLCB3ZSB1 c2UgdnNldHZsIHRvIGRvIHRoZSBzdHJpcCBtaW5pbmcsIHNvIGJhc2Ugb24g dGhpcywgdGhlIHNhbWUgQyBjb2RlLCBSVlYgaWRlYWwgYXNtIGFjY29yZGlu ZyBSVlYgSVNBIHNob3VsZCBiZToNCg0KcHJlaGVhZGVyOg0KYTAgPSBuICh0 aGUgdG90YWwgbnVtYmVyIG9mIHRoZSBzY2FsYXIgc2hvdWxkIGJlIGNhbGN1 bGF0ZWQpLg0KIC4uLi4uDQouTDM6DQogICAgICAgIHZzZXR2bGkgYTUsYTAs ZTMyLG0xLHRhLG1hICAgID09PT0+IFdISUxFX0xFTiBwYXR0ZXJuIGdlbmVy YXRlIHRoaXMgaW5zdHJ1Y3Rpb24sIGNhbGN1bGF0ZSB0aGUgbnVtYmVyIG9m IHRoZSBlbGVtZW50cyBzaG91bGQgYmUgdXBkYXRlZA0KICAgICAgICB2bGUz Mi52IHYxLDAoYTQpDQogICAgICAgIHN1YiAgICAgYTAsYTAsYTUgICAgICA9 PT09PT09PT09PT0+IERlY3JlbWVudCB0aGUgaW5kdWN0aW9uIHZhcmlhYmxl IGJ5IHRoZSBhNSAoZ2VuZXJhdGVkIGJ5IFdISUxFX0xFTikNCiAgICAgICAg Li4uLiAgIA0KDQogICAgICAgIHZhZGQudnYuLi4uDQogICAgICAgIHZzZTMy LnYgdjEsMChhMykNCiAgICAgICAgYWRkICAgICBhNCxhNCxhMg0KICAgICAg ICBhZGQgICAgIGEzLGEzLGEyDQogICAgICAgIGJuZSAgICAgYTAsemVybywu TDMNCi5MMToNCiAgICAgICAgcmV0DQoNClNvIHlvdSB3aWxsIHNlZSwgaWYg biA9IDMgbGlrZSBJIHNhaWQgZm9yIEFSTSBTVkUgKFN1cHBvc2UgbWFjaGlu ZSB2ZWN0b3IgbGVuZ3RoID4gMyksIHRoZW4gdnNldHZsaSBhNSxhMCxlMzIs bTEsdGEsbWEgd2lsbA0KZ2VuZXJhdGUgYTUgPSAzLCB0aGVuIHRoZSB2bGUz Mi52L3ZhZGQudnYvdnNlMzIudiBhcmUgYWxsIGRvaW5nIHRoZSBvcGVyYXRp b24gb25seSBvbiB0aGUgZWxlbWVudCAwLCAgZWxlbWVudCAxLCBlbGVtZW50 IDIuDQoNCkJlc2lkZXMsIFdISUxFX0xFTiBpcyBkZWZpbmVkIHRvIG1ha2Ug c3VyZSB0byBiZSBuZXZlciBvdmVyZmxvdyB0aGUgaW5wdXQgb3BlcmFuZCB3 aGljaCBpcyAiYTAiLg0KVGhhdCBtZWFucyAgc3ViICAgICBhMCxhMCxhNSB3 aWxsIG1ha2UgYTAgbmV2ZXIgdW5kZXJmbG93IDAuDQoNCkkgaGF2ZSB0cmll ZCB0byByZXR1cm4gUG1vZGUgaW4gVEFSR0VUX1ZFQ1RPUklaRV9HRVRfTUFT S19NT0RFIA0KdGFyZ2V0IGhvb2sgYW5kIHRoZW4gdXNlIFdISUxFX1VMVC4g DQoNCkJ1dCB0aGVyZSBhcmUgMiBpc3N1ZXM6DQpPbmUgaXMgdGhhdCBjdXJy ZW50IEdDQyBpcyBkb2luZyB0aGUgZmxvdyBmcm9tIDAtYmFzZWQgdW50aWwg dGhlIFRFU1RfTElNSVQuIFdoZXJhcyB0aGUgb3B0aW1hbCBmbG93IG9mIFJW ViBJIHNob3dlZCBhYm92ZQ0KaXMgZnJvbSAibiIga2VlcCBkZWNyZWFzaW5n IG4gdW50aWwgMC4gIFRyeWluZyB0byBmaXQgdGhlIGN1cnJlbnQgZmxvdyBv ZiBHQ0MsIFJWViBuZWVkcyBtb3JlIGluc3RydWN0aW9ucyB0byBkbyB0aGUg bG9vcCBzdHJpcCBtaW5pbmcuDQoNClNlY29uZCBpcyB0aGF0IGlmIHdlIHJl dHVybiBhIFBtb2RlIGluIFRBUkdFVF9WRUNUT1JJWkVfR0VUX01BU0tfTU9E RSANCndoaWNoIG5vdCBvbmx5IHNwZWNpZnkgdGhlIGRlc3QgbW9kZSBmb3Ig V0hJTEVfVUxUIGJ1dCBhbHNvIHRoZSBtYXNrIG1vZGUgb2YgZmxvdyBjb250 cm9sLg0KSWYgd2UgcmV0dXJuIFBtb2RlIHdoaWNoIGlzIHVzZWQgYXMgdGhl IGxlbmd0aCBmb3IgUlZWLiBXZSBjYW4ndCB1c2UgbWFzayBtb2RlIGxpa2Ug Vk54MkJJIG1vZGUgdG8gZG8gdGhlIGZsb3cgY29udHJvbCBwcmVkaWNhdGUu DQpUaGlzIGFub3RoZXIgZXhhbXBsZToNCnZvaWQgZm9vMiAoaW50MzJfdCAq IF9fcmVzdHJpY3QgYSwgaW50MzJfdCAqIF9fcmVzdHJpY3QgYiwgaW50MzJf dCAqIHJlc3RyaWN0IGNvbmQsIGludCBuKQ0Kew0KICAgIGZvciAoaW50IGkg PSAwOyBpIDwgbjsgaSsrKQ0KICAgICAgaWYgKGNvbmRbaV0pDQogICAgICAg IGFbaV0gPSBhW2ldICsgYltpXTsNCn0NCg0KQVJNIFNWRToNCiAgICAgICAg bGQxdyAgICB6MC5zLCBwMC96LCBbeDIsIHg0LCBsc2wgMl0NCiAgICAgICAg Y21wbmUgICBwMC5zLCBwMC96LCB6MC5zLCAjMA0KICAgICAgICBsZDF3ICAg IHowLnMsIHAwL3osIFt4MCwgeDQsIGxzbCAyXQ0KICAgICAgICBsZDF3ICAg IHoxLnMsIHAwL3osIFt4MSwgeDQsIGxzbCAyXQ0KICAgICAgICBhZGQgICAg IHowLnMsIHowLnMsIHoxLnMNCiAgICAgICAgc3QxdyAgICB6MC5zLCBwMCwg W3gwLCB4NCwgbHNsIDJdDQogICAgICAgIGFkZCAgICAgeDQsIHg0LCB4NQ0K ICAgICAgICB3aGlsZWxvIHAwLnMsIHc0LCB3Mw0KICAgICAgICBiLmFueSAg IC5MOA0KDQpIZXJlIHdlIGNhbiBzZWUgQVJNIHVzZSBtYXNrIG1vZGUgZm9y IGJvdGggbG9vcCBzdHJpcCBtaW5uaW5nIGFuZCBmbG93IGNvbnRyb2wuDQoN CldoZXJhcywgUlZWIHVzZSBsZW5ndGggZ2VuZXJhdGVkIGJ5IHZzZXR2bCAo V0hJTEVfTEVOKSB0byBkbyB0aGUgbG9vcCBzdHJpcCBtaW5uaW5nIGFuZCBt YXNrIGdlbmVyYXRlZCBieSBjb21wYXJpc29uIHRvIGRvIHRoZSBmbG93IGNv bnRyb2wuDQoNClNvIHRoZSBBU00gZ2VuZXJhdGVkIGJ5IG15IGRvd25zdHJl YW0gTExWTS9HQ0M6DQouTDM6DQogICAgICAgIHZzZXR2bGkgYTYsYTMsZTMy LG0xLHRhLG11ICAgPT09PT09PT09PT4gZ2VuZXJhdGUgbGVuZ3RoIHRvIHBy ZWRpY2F0ZSBSVlYgb3BlcmF0aW9uLiANCiAgICAgICAgdmxlMzIudiB2MCwo YTIpDQogICAgICAgIHN1YiAgICAgYTMsYTMsYTYgICAgICA9PT09PT09PT09 PiBkZWNyZWFzZSB0aGUgaW5kdWN0aW9uIHZhcmlhYmxlIHVudGlsIDAuDQog ICAgICAgIHZtc25lLnZpICAgICAgICB2MCx2MCwwICAgPT09PT09PT09PT4g Z2VuZXJhdGUgbWFzayB0byBwcmVkaWNhdGUgUlZWIG9wZXJhdGlvbi4gDQog ICAgICAgIHZsZTMyLnYgdjI0LChhMCksdjAudCAgID09PT09PT09PT09PiBo ZXJlIHVzaW5nIHYwLnQgaXMgdGhlIG9ubHkgbWFzayByZWdpc3RlciB0byBw cmVkaWNhdGUgUlZWIG9wZXJhdGlvbg0KICAgICAgICB2bGUzMi52IHYyNSwo YTEpLHYwLnQNCiAgICAgICAgdmFkZC52diB2MjQsdjI0LHYyNQ0KICAgICAg ICB2c2UzMi52IHYyNCwoYTApLHYwLnQNCiAgICAgICAgYWRkICAgICBhMixh MixhNA0KICAgICAgICBhZGQgICAgIGEwLGEwLGE0DQogICAgICAgIGFkZCAg ICAgYTEsYTEsYTQNCiAgICAgICAgYm5lICAgICBhMyx6ZXJvLC5MMw0KLkwx Og0KICAgICAgICByZXQNCg0KDQpUaGlzIGlzIHRoZSBob3cgUlZWIHdvcmtz Lg0KRmVlbCBmcmVlIHRvIGNvbW1lbnQgaWYgeW91IGhhdmUgYW55IHF1ZXN0 aW9ucy4NCg0KVGhhbmtzLg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQog DQpGcm9tOiBSaWNoYXJkIEJpZW5lcg0KRGF0ZTogMjAyMy0wNC0xMiAxNTow MA0KVG86IFJpY2hhcmQgU2FuZGlmb3JkDQpDQzoganV6aGUuemhvbmdAcml2 YWkuYWk7IGdjYy1wYXRjaGVzOyBqZWZmcmV5YWxhdw0KU3ViamVjdDogUmU6 IFtQQVRDSF0gVkVDVDogQWRkIFdISUxFX0xFTiBwYXR0ZXJuIGZvciBkZWNy ZW1lbnQgSVYgc3VwcG9ydCBmb3IgYXV0by12ZWN0b3JpemF0aW9uDQpPbiBU dWUsIDExIEFwciAyMDIzLCBSaWNoYXJkIFNhbmRpZm9yZCB3cm90ZToNCiAN Cj4gImp1emhlLnpob25nQHJpdmFpLmFpIiA8anV6aGUuemhvbmdAcml2YWku YWk+IHdyaXRlczoNCj4gPiBIaSwgUmljaGFyZHMuIA0KPiA+IEtpbmRseSBQ aW5nIHRoaXMgcGF0Y2guIA0KPiA+IFRoaXMgaXMgdGhlIG1vc3QgaW1wb3J0 YW50IHBhdGNoIGZvciBSVlYgYXV0by12ZWN0b3JpemF0aW9uIHN1cHBvcnQu DQo+ID4gQm9vdHN0cmFwZWQgb24gWDg2IGhhcyBwYXNzZWQuDQo+IA0KPiBD YW4gaXQgd2FpdCBmb3IgR0NDIDE0PyAgSXQgZG9lc24ndCBzZWVtIGxpa2Ug c3RhZ2UgNCBtYXRlcmlhbC4NCj4gDQo+IEFsc28sIHBpbmdpbmcgYWZ0ZXIg NSBkYXlzIHNlZW1zIGEgYml0IHNvb24uICBJdCdzIGJlZW4gYSA0LWRheQ0K PiBob2xpZGF5IHdlZWtlbmQgZm9yIG11Y2ggb2YgRXVyb3BlLg0KIA0KQWxz byBjYW4geW91IGV4cGxhaW4gd2h5IHVzaW5nIFdISUxFX1VMVCBpcyBub3Qg cG9zc2libGU/ICAoSSd2ZQ0Kc3VjY2Vzc2Z1bGx5IC0gdG8gc29tZSBleHRl bnQgLSBkb25lIHRoYXQgZm9yIEFWWDUxMiBmb3IgZXhhbXBsZSkNCiANClRo ZSBwYXRjaCBsYWNrcyB0aGUgZGVzY3JpcHRpb24gb2Ygd2hhdCBXSElMRV9M RU4gYWN0dWFsbHkgaXMuDQogDQpSaWNoYXJkLg0KIA0KPiBUaGFua3MsDQo+ IFJpY2hhcmQNCj4gDQo+ID4gRmVlbCBmcmVlIHRvIGNvbW1lbnRzLg0KPiA+ DQo+ID4gVGhhbmtzLg0KPiA+DQo+ID4NCj4gPiBqdXpoZS56aG9uZ0ByaXZh aS5haQ0KPiA+ICANCj4gPiBGcm9tOiBqdXpoZS56aG9uZw0KPiA+IERhdGU6 IDIwMjMtMDQtMDcgMDk6NDcNCj4gPiBUbzogZ2NjLXBhdGNoZXMNCj4gPiBD QzogcmljaGFyZC5zYW5kaWZvcmQ7IHJndWVudGhlcjsgamVmZnJleWFsYXc7 IEp1emhlLVpob25nDQo+ID4gU3ViamVjdDogW1BBVENIXSBWRUNUOiBBZGQg V0hJTEVfTEVOIHBhdHRlcm4gZm9yIGRlY3JlbWVudCBJViBzdXBwb3J0IGZv ciBhdXRvLXZlY3Rvcml6YXRpb24NCj4gPiBGcm9tOiBKdXpoZS1aaG9uZyA8 anV6aGUuemhvbmdAcml2YWkuYWk+DQo+ID4gIA0KPiA+IFRoaXMgcGF0Y2gg aXMgdG8gYWRkIFdISUxFX0xFTiBwYXR0ZXJuLg0KPiA+IEl0J3MgaW5zcGly ZWQgYnkgUlZWIElTQSBzaW1wbGUgInZ2YWRkaW50MzIucyIgZXhhbXBsZToN Cj4gPiBodHRwczovL2dpdGh1Yi5jb20vcmlzY3YvcmlzY3Ytdi1zcGVjL2Js b2IvbWFzdGVyL2V4YW1wbGUvdnZhZGRpbnQzMi5zDQo+ID4gIA0KPiA+IE1v cmUgZGV0YWlscyBhcmUgaW4gInZlY3Rfc2V0X2xvb3BfY29udHJvbHNfYnlf d2hpbGVfbGVuIiBpbXBsZW1lbnRhdGlvbg0KPiA+IGFuZCBjb21tZW50cy4N Cj4gPiAgDQo+ID4gQ29uc2lkZXIgc3VjaCBmb2xsb3dpbmcgY2FzZToNCj4g PiAjZGVmaW5lIE4gMTYNCj4gPiBpbnQgc3JjW05dOw0KPiA+IGludCBkZXN0 W05dOw0KPiA+ICANCj4gPiB2b2lkDQo+ID4gZm9vIChpbnQgbikNCj4gPiB7 DQo+ID4gICBmb3IgKGludCBpID0gMDsgaSA8IG47IGkrKykNCj4gPiAgICAg ZGVzdFtpXSA9IHNyY1tpXTsNCj4gPiB9DQo+ID4gIA0KPiA+IC1tYXJjaD1y djY0Z2N2IC1PMyAtLXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1z Y2FsYWJsZSAtZm5vLXZlY3QtY29zdC1tb2RlbCAtZm5vLXRyZWUtbG9vcC1k aXN0cmlidXRlLXBhdHRlcm5zOg0KPiA+ICANCj4gPiBmb286ICAgICAgICAN Cj4gPiAgICAgICAgIGJsZSAgICAgYTAsemVybywuTDENCj4gPiAgICAgICAg IGx1aSAgICAgYTQsJWhpKC5MQU5DSE9SMCkNCj4gPiAgICAgICAgIGFkZGkg ICAgYTQsYTQsJWxvKC5MQU5DSE9SMCkNCj4gPiAgICAgICAgIGFkZGkgICAg YTMsYTQsNjQNCj4gPiAgICAgICAgIGNzcnIgICAgYTIsdmxlbmINCj4gPiAu TDM6DQo+ID4gICAgICAgICB2c2V0dmxpIGE1LGEwLGUzMixtMSx0YSxtYQ0K PiA+ICAgICAgICAgdmxlMzIudiB2MSwwKGE0KQ0KPiA+ICAgICAgICAgc3Vi ICAgICBhMCxhMCxhNQ0KPiA+ICAgICAgICAgdnNlMzIudiB2MSwwKGEzKQ0K PiA+ICAgICAgICAgYWRkICAgICBhNCxhNCxhMg0KPiA+ICAgICAgICAgYWRk ICAgICBhMyxhMyxhMg0KPiA+ICAgICAgICAgYm5lICAgICBhMCx6ZXJvLC5M Mw0KPiA+IC5MMToNCj4gPiAgICAgICAgIHJldA0KPiA+ICANCj4gPiBnY2Mv Q2hhbmdlTG9nOg0KPiA+ICANCj4gPiAgICAgICAgICogZG9jL21kLnRleGk6 IEFkZCBXSElMRV9MRU4gc3VwcG9ydC4NCj4gPiAgICAgICAgICogaW50ZXJu YWwtZm4uY2MgKHdoaWxlX2xlbl9kaXJlY3QpOiBEaXR0by4NCj4gPiAgICAg ICAgIChleHBhbmRfd2hpbGVfbGVuX29wdGFiX2ZuKTogRGl0dG8uDQo+ID4g ICAgICAgICAoZGlyZWN0X3doaWxlX2xlbl9vcHRhYl9zdXBwb3J0ZWRfcCk6 IERpdHRvLg0KPiA+ICAgICAgICAgKiBpbnRlcm5hbC1mbi5kZWYgKFdISUxF X0xFTik6IERpdHRvLg0KPiA+ICAgICAgICAgKiBvcHRhYnMuZGVmIChPUFRB Ql9EKTogRGl0dG8uDQo+ID4gICAgICAgICAqIHRyZWUtc3NhLWxvb3AtbWFu aXAuY2MgKGNyZWF0ZV9pdik6IERpdHRvLg0KPiA+ICAgICAgICAgKiB0cmVl LXNzYS1sb29wLW1hbmlwLmggKGNyZWF0ZV9pdik6IERpdHRvLg0KPiA+ICAg ICAgICAgKiB0cmVlLXZlY3QtbG9vcC1tYW5pcC5jYyAodmVjdF9zZXRfbG9v cF9jb250cm9sc19ieV93aGlsZV9sZW4pOiBEaXR0by4NCj4gPiAgICAgICAg ICh2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMpOiBE aXR0by4NCj4gPiAgICAgICAgICogdHJlZS12ZWN0LWxvb3AuY2MgKHZlY3Rf Z2V0X2xvb3BfbGVuKTogRGl0dG8uDQo+ID4gICAgICAgICAqIHRyZWUtdmVj dC1zdG10cy5jYyAodmVjdG9yaXphYmxlX3N0b3JlKTogRGl0dG8uDQo+ID4g ICAgICAgICAodmVjdG9yaXphYmxlX2xvYWQpOiBEaXR0by4NCj4gPiAgICAg ICAgICogdHJlZS12ZWN0b3JpemVyLmggKHZlY3RfZ2V0X2xvb3BfbGVuKTog RGl0dG8uDQo+ID4gIA0KPiA+IC0tLQ0KPiA+IGdjYy9kb2MvbWQudGV4aSAg ICAgICAgICAgICB8ICAxNCArKysNCj4gPiBnY2MvaW50ZXJuYWwtZm4uY2Mg ICAgICAgICAgfCAgMjkgKysrKysrDQo+ID4gZ2NjL2ludGVybmFsLWZuLmRl ZiAgICAgICAgIHwgICAxICsNCj4gPiBnY2Mvb3B0YWJzLmRlZiAgICAgICAg ICAgICAgfCAgIDEgKw0KPiA+IGdjYy90cmVlLXNzYS1sb29wLW1hbmlwLmNj ICB8ICAgNCArLQ0KPiA+IGdjYy90cmVlLXNzYS1sb29wLW1hbmlwLmggICB8 ICAgMiArLQ0KPiA+IGdjYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYyB8IDE4 NiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0NCj4gPiBn Y2MvdHJlZS12ZWN0LWxvb3AuY2MgICAgICAgfCAgMzUgKysrKystLQ0KPiA+ IGdjYy90cmVlLXZlY3Qtc3RtdHMuY2MgICAgICB8ICAgOSArLQ0KPiA+IGdj Yy90cmVlLXZlY3Rvcml6ZXIuaCAgICAgICB8ICAgNCArLQ0KPiA+IDEwIGZp bGVzIGNoYW5nZWQsIDI2NCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMo LSkNCj4gPiAgDQo+ID4gZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4aSBi L2djYy9kb2MvbWQudGV4aQ0KPiA+IGluZGV4IDhlMzExMzU5OWZkLi43MjE3 OGFiMDE0YyAxMDA2NDQNCj4gPiAtLS0gYS9nY2MvZG9jL21kLnRleGkNCj4g PiArKysgYi9nY2MvZG9jL21kLnRleGkNCj4gPiBAQCAtNDk2NSw2ICs0OTY1 LDIwIEBAIGZvciAoaSA9IDE7IGkgPCBvcGVyYW5kMzsgaSsrKQ0KPiA+ICAg IG9wZXJhbmQwW2ldID0gb3BlcmFuZDBbaSAtIDFdICYmIChvcGVyYW5kMSAr IGkgPCBvcGVyYW5kMik7DQo+ID4gQGVuZCBzbWFsbGV4YW1wbGUNCj4gPiAr QGNpbmRleCBAY29kZXt3aGlsZV9sZW5AdmFye219QHZhcntufX0gaW5zdHJ1 Y3Rpb24gcGF0dGVybg0KPiA+ICtAaXRlbSBAY29kZXt3aGlsZV9sZW5AdmFy e219QHZhcntufX0NCj4gPiArU2V0IG9wZXJhbmQgMCB0byB0aGUgbnVtYmVy IG9mIGFjdGl2ZSBlbGVtZW50cyBpbiB2ZWN0b3Igd2lsbCBiZSB1cGRhdGVk IHZhbHVlLg0KPiA+ICtvcGVyYW5kIDEgaXMgdGhlIHRvdGFsIGVsZW1lbnRz IG5lZWQgdG8gYmUgdXBkYXRlZCB2YWx1ZS4NCj4gPiArb3BlcmFuZCAyIGlz IHRoZSB2ZWN0b3JpemF0aW9uIGZhY3Rvci4NCj4gPiArVGhlIG9wZXJhdGlv biBpcyBlcXVpdmFsZW50IHRvOg0KPiA+ICsNCj4gPiArQHNtYWxsZXhhbXBs ZQ0KPiA+ICtvcGVyYW5kMCA9IE1JTiAob3BlcmFuZDEsIG9wZXJhbmQyKTsN Cj4gPiArb3BlcmFuZDIgY2FuIGJlIGNvbnN0X3BvbHlfaW50IG9yIHBvbHlf aW50IHJlbGF0ZWQgdG8gdmVjdG9yIG1vZGUgc2l6ZS4NCj4gPiArU29tZSB0 YXJnZXQgbGlrZSBSSVNDLVYgaGFzIGEgc3RhbmRhbG9uZSBpbnN0cnVjdGlv biB0byBnZXQgTUlOIChuLCBNT0RFIFNJWkUpIHNvDQo+ID4gK3RoYXQgd2Ug Y2FuIHJlZHVjZSBhIHVzZSBvZiBnZW5lcmFsIHB1cnBvc2UgcmVnaXN0ZXIu DQo+ID4gK0BlbmQgc21hbGxleGFtcGxlDQo+ID4gKw0KPiA+IEBjaW5kZXgg QGNvZGV7Y2hlY2tfcmF3X3B0cnNAdmFye219fSBpbnN0cnVjdGlvbiBwYXR0 ZXJuDQo+ID4gQGl0ZW0gQHNhbXB7Y2hlY2tfcmF3X3B0cnNAdmFye219fQ0K PiA+IENoZWNrIHdoZXRoZXIsIGdpdmVuIHR3byBwb2ludGVycyBAdmFye2F9 IGFuZCBAdmFye2J9IGFuZCBhIGxlbmd0aCBAdmFye2xlbn0sDQo+ID4gZGlm ZiAtLWdpdCBhL2djYy9pbnRlcm5hbC1mbi5jYyBiL2djYy9pbnRlcm5hbC1m bi5jYw0KPiA+IGluZGV4IDZlODFkYzA1ZTBlLi41ZjQ0ZGVmOTBkMyAxMDA2 NDQNCj4gPiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MNCj4gPiArKysgYi9n Y2MvaW50ZXJuYWwtZm4uY2MNCj4gPiBAQCAtMTI3LDYgKzEyNyw3IEBAIGlu aXRfaW50ZXJuYWxfZm5zICgpDQo+ID4gI2RlZmluZSBjb25kX2JpbmFyeV9k aXJlY3QgeyAxLCAxLCB0cnVlIH0NCj4gPiAjZGVmaW5lIGNvbmRfdGVybmFy eV9kaXJlY3QgeyAxLCAxLCB0cnVlIH0NCj4gPiAjZGVmaW5lIHdoaWxlX2Rp cmVjdCB7IDAsIDIsIGZhbHNlIH0NCj4gPiArI2RlZmluZSB3aGlsZV9sZW5f ZGlyZWN0IHsgMCwgMCwgZmFsc2UgfQ0KPiA+ICNkZWZpbmUgZm9sZF9leHRy YWN0X2RpcmVjdCB7IDIsIDIsIGZhbHNlIH0NCj4gPiAjZGVmaW5lIGZvbGRf bGVmdF9kaXJlY3QgeyAxLCAxLCBmYWxzZSB9DQo+ID4gI2RlZmluZSBtYXNr X2ZvbGRfbGVmdF9kaXJlY3QgeyAxLCAxLCBmYWxzZSB9DQo+ID4gQEAgLTM3 MDIsNiArMzcwMywzMyBAQCBleHBhbmRfd2hpbGVfb3B0YWJfZm4gKGludGVy bmFsX2ZuLCBnY2FsbCAqc3RtdCwgY29udmVydF9vcHRhYiBvcHRhYikNCj4g PiAgICAgIGVtaXRfbW92ZV9pbnNuIChsaHNfcnR4LCBvcHNbMF0udmFsdWUp Ow0KPiA+IH0NCj4gPiArLyogRXhwYW5kIFdISUxFX0xFTiBjYWxsIFNUTVQg dXNpbmcgb3B0YWIgT1BUQUIuICAqLw0KPiA+ICtzdGF0aWMgdm9pZA0KPiA+ ICtleHBhbmRfd2hpbGVfbGVuX29wdGFiX2ZuIChpbnRlcm5hbF9mbiwgZ2Nh bGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQo+ID4gK3sNCj4gPiAr ICBleHBhbmRfb3BlcmFuZCBvcHNbM107DQo+ID4gKyAgdHJlZSByaHNfdHlw ZVsyXTsNCj4gPiArDQo+ID4gKyAgdHJlZSBsaHMgPSBnaW1wbGVfY2FsbF9s aHMgKHN0bXQpOw0KPiA+ICsgIHRyZWUgbGhzX3R5cGUgPSBUUkVFX1RZUEUg KGxocyk7DQo+ID4gKyAgcnR4IGxoc19ydHggPSBleHBhbmRfZXhwciAobGhz LCBOVUxMX1JUWCwgVk9JRG1vZGUsIEVYUEFORF9XUklURSk7DQo+ID4gKyAg Y3JlYXRlX291dHB1dF9vcGVyYW5kICgmb3BzWzBdLCBsaHNfcnR4LCBUWVBF X01PREUgKGxoc190eXBlKSk7DQo+ID4gKw0KPiA+ICsgIGZvciAodW5zaWdu ZWQgaW50IGkgPSAwOyBpIDwgZ2ltcGxlX2NhbGxfbnVtX2FyZ3MgKHN0bXQp OyArK2kpDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIHRyZWUgcmhzID0gZ2lt cGxlX2NhbGxfYXJnIChzdG10LCBpKTsNCj4gPiArICAgICAgcmhzX3R5cGVb aV0gPSBUUkVFX1RZUEUgKHJocyk7DQo+ID4gKyAgICAgIHJ0eCByaHNfcnR4 ID0gZXhwYW5kX25vcm1hbCAocmhzKTsNCj4gPiArICAgICAgY3JlYXRlX2lu cHV0X29wZXJhbmQgKCZvcHNbaSArIDFdLCByaHNfcnR4LCBUWVBFX01PREUg KHJoc190eXBlW2ldKSk7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIGlu c25fY29kZSBpY29kZSA9IGRpcmVjdF9vcHRhYl9oYW5kbGVyIChvcHRhYiwg VFlQRV9NT0RFIChyaHNfdHlwZVswXSkpOw0KPiA+ICsNCj4gPiArICBleHBh bmRfaW5zbiAoaWNvZGUsIDMsIG9wcyk7DQo+ID4gKyAgaWYgKCFydHhfZXF1 YWxfcCAobGhzX3J0eCwgb3BzWzBdLnZhbHVlKSkNCj4gPiArICAgIGVtaXRf bW92ZV9pbnNuIChsaHNfcnR4LCBvcHNbMF0udmFsdWUpOw0KPiA+ICt9DQo+ ID4gKw0KPiA+IC8qIEV4cGFuZCBhIGNhbGwgdG8gYSBjb252ZXJ0LWxpa2Ug b3B0YWIgdXNpbmcgdGhlIG9wZXJhbmRzIGluIFNUTVQuDQo+ID4gICAgIEZO IGhhcyBhIHNpbmdsZSBvdXRwdXQgb3BlcmFuZCBhbmQgTkFSR1MgaW5wdXQg b3BlcmFuZHMuICAqLw0KPiA+IEBAIC0zODQzLDYgKzM4NzEsNyBAQCBtdWx0 aV92ZWN0b3Jfb3B0YWJfc3VwcG9ydGVkX3AgKGNvbnZlcnRfb3B0YWIgb3B0 YWIsIHRyZWVfcGFpciB0eXBlcywNCj4gPiAjZGVmaW5lIGRpcmVjdF9zY2F0 dGVyX3N0b3JlX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0YWJfc3Vw cG9ydGVkX3ANCj4gPiAjZGVmaW5lIGRpcmVjdF9sZW5fc3RvcmVfb3B0YWJf c3VwcG9ydGVkX3AgZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9wDQo+ID4gI2Rl ZmluZSBkaXJlY3Rfd2hpbGVfb3B0YWJfc3VwcG9ydGVkX3AgY29udmVydF9v cHRhYl9zdXBwb3J0ZWRfcA0KPiA+ICsjZGVmaW5lIGRpcmVjdF93aGlsZV9s ZW5fb3B0YWJfc3VwcG9ydGVkX3AgZGlyZWN0X29wdGFiX3N1cHBvcnRlZF9w DQo+ID4gI2RlZmluZSBkaXJlY3RfZm9sZF9leHRyYWN0X29wdGFiX3N1cHBv cnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiA+ICNkZWZpbmUg ZGlyZWN0X2ZvbGRfbGVmdF9vcHRhYl9zdXBwb3J0ZWRfcCBkaXJlY3Rfb3B0 YWJfc3VwcG9ydGVkX3ANCj4gPiAjZGVmaW5lIGRpcmVjdF9tYXNrX2ZvbGRf bGVmdF9vcHRhYl9zdXBwb3J0ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVk X3ANCj4gPiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2dj Yy9pbnRlcm5hbC1mbi5kZWYNCj4gPiBpbmRleCA3ZmU3NDJjMmFlNy4uM2E5 MzNhYmZmNWQgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL2ludGVybmFsLWZuLmRl Zg0KPiA+ICsrKyBiL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gPiBAQCAtMTUz LDYgKzE1Myw3IEBAIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAoVkVDX1NFVCwg MCwgdmVjX3NldCwgdmVjX3NldCkNCj4gPiBERUZfSU5URVJOQUxfT1BUQUJf Rk4gKExFTl9TVE9SRSwgMCwgbGVuX3N0b3JlLCBsZW5fc3RvcmUpDQo+ID4g REVGX0lOVEVSTkFMX09QVEFCX0ZOIChXSElMRV9VTFQsIEVDRl9DT05TVCB8 IEVDRl9OT1RIUk9XLCB3aGlsZV91bHQsIHdoaWxlKQ0KPiA+ICtERUZfSU5U RVJOQUxfT1BUQUJfRk4gKFdISUxFX0xFTiwgRUNGX0NPTlNUIHwgRUNGX05P VEhST1csIHdoaWxlX2xlbiwgd2hpbGVfbGVuKQ0KPiA+IERFRl9JTlRFUk5B TF9PUFRBQl9GTiAoQ0hFQ0tfUkFXX1BUUlMsIEVDRl9DT05TVCB8IEVDRl9O T1RIUk9XLA0KPiA+ICAgICAgICBjaGVja19yYXdfcHRycywgY2hlY2tfcHRy cykNCj4gPiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKENIRUNLX1dBUl9QVFJT LCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9USFJPVywNCj4gPiBkaWZmIC0tZ2l0IGEv Z2NjL29wdGFicy5kZWYgYi9nY2Mvb3B0YWJzLmRlZg0KPiA+IGluZGV4IDY5 NWY1OTExYjMwLi5mNTkzOGJkMmMyNCAxMDA2NDQNCj4gPiAtLS0gYS9nY2Mv b3B0YWJzLmRlZg0KPiA+ICsrKyBiL2djYy9vcHRhYnMuZGVmDQo+ID4gQEAg LTQ3NiwzICs0NzYsNCBAQCBPUFRBQl9EQyAodmVjX3Nlcmllc19vcHRhYiwg InZlY19zZXJpZXMkYSIsIFZFQ19TRVJJRVMpDQo+ID4gT1BUQUJfRCAodmVj X3NobF9pbnNlcnRfb3B0YWIsICJ2ZWNfc2hsX2luc2VydF8kYSIpDQo+ID4g T1BUQUJfRCAobGVuX2xvYWRfb3B0YWIsICJsZW5fbG9hZF8kYSIpDQo+ID4g T1BUQUJfRCAobGVuX3N0b3JlX29wdGFiLCAibGVuX3N0b3JlXyRhIikNCj4g PiArT1BUQUJfRCAod2hpbGVfbGVuX29wdGFiLCAid2hpbGVfbGVuJGEiKQ0K PiA+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5jYyBi L2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmNjDQo+ID4gaW5kZXggMDlhY2Mx Yzk0Y2MuLmNkYmYyODBlMjQ5IDEwMDY0NA0KPiA+IC0tLSBhL2djYy90cmVl LXNzYS1sb29wLW1hbmlwLmNjDQo+ID4gKysrIGIvZ2NjL3RyZWUtc3NhLWxv b3AtbWFuaXAuY2MNCj4gPiBAQCAtNTksMTQgKzU5LDE0IEBAIHN0YXRpYyBi aXRtYXBfb2JzdGFjayBsb29wX3JlbmFtZXJfb2JzdGFjazsNCj4gPiB2b2lk DQo+ID4gY3JlYXRlX2l2ICh0cmVlIGJhc2UsIHRyZWUgc3RlcCwgdHJlZSB2 YXIsIGNsYXNzIGxvb3AgKmxvb3AsDQo+ID4gICAgZ2ltcGxlX3N0bXRfaXRl cmF0b3IgKmluY3JfcG9zLCBib29sIGFmdGVyLA0KPiA+IC0gICAgdHJlZSAq dmFyX2JlZm9yZSwgdHJlZSAqdmFyX2FmdGVyKQ0KPiA+ICsgICAgdHJlZSAq dmFyX2JlZm9yZSwgdHJlZSAqdmFyX2FmdGVyLCBlbnVtIHRyZWVfY29kZSBj b2RlKQ0KPiA+IHsNCj4gPiAgICBnYXNzaWduICpzdG10Ow0KPiA+ICAgIGdw aGkgKnBoaTsNCj4gPiAgICB0cmVlIGluaXRpYWwsIHN0ZXAxOw0KPiA+ICAg IGdpbXBsZV9zZXEgc3RtdHM7DQo+ID4gICAgdHJlZSB2YiwgdmE7DQo+ID4g LSAgZW51bSB0cmVlX2NvZGUgaW5jcl9vcCA9IFBMVVNfRVhQUjsNCj4gPiAr ICBlbnVtIHRyZWVfY29kZSBpbmNyX29wID0gY29kZTsNCj4gPiAgICBlZGdl IHBlID0gbG9vcF9wcmVoZWFkZXJfZWRnZSAobG9vcCk7DQo+ID4gICAgaWYg KHZhciAhPSBOVUxMX1RSRUUpDQo+ID4gZGlmZiAtLWdpdCBhL2djYy90cmVl LXNzYS1sb29wLW1hbmlwLmggYi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5o DQo+ID4gaW5kZXggZDQ5MjczYTM5ODcuLmRhNzU1MzIwYTNhIDEwMDY0NA0K PiA+IC0tLSBhL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gPiArKysg Yi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5oDQo+ID4gQEAgLTIzLDcgKzIz LDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4g IElmIG5vdCBzZWUNCj4gPiB0eXBlZGVmIHZvaWQgKCp0cmFuc2Zvcm1fY2Fs bGJhY2spKGNsYXNzIGxvb3AgKiwgdm9pZCAqKTsNCj4gPiBleHRlcm4gdm9p ZCBjcmVhdGVfaXYgKHRyZWUsIHRyZWUsIHRyZWUsIGNsYXNzIGxvb3AgKiwg Z2ltcGxlX3N0bXRfaXRlcmF0b3IgKiwNCj4gPiAtICAgICAgICBib29sLCB0 cmVlICosIHRyZWUgKik7DQo+ID4gKyAgICAgICAgYm9vbCwgdHJlZSAqLCB0 cmVlICosIGVudW0gdHJlZV9jb2RlID0gUExVU19FWFBSKTsNCj4gPiBleHRl cm4gdm9pZCByZXdyaXRlX2ludG9fbG9vcF9jbG9zZWRfc3NhIChiaXRtYXAs IHVuc2lnbmVkKTsNCj4gPiBleHRlcm4gdm9pZCB2ZXJpZnlfbG9vcF9jbG9z ZWRfc3NhIChib29sLCBjbGFzcyBsb29wICogPSBOVUxMKTsNCj4gPiBkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjIGIvZ2NjL3Ry ZWUtdmVjdC1sb29wLW1hbmlwLmNjDQo+ID4gaW5kZXggZjYwZmE1MGU4ZjQu LmYzY2Q2YzUxZDJlIDEwMDY0NA0KPiA+IC0tLSBhL2djYy90cmVlLXZlY3Qt bG9vcC1tYW5pcC5jYw0KPiA+ICsrKyBiL2djYy90cmVlLXZlY3QtbG9vcC1t YW5pcC5jYw0KPiA+IEBAIC02ODIsNiArNjgyLDE3MyBAQCB2ZWN0X3NldF9s b29wX2NvbnRyb2xzX2RpcmVjdGx5IChjbGFzcyBsb29wICpsb29wLCBsb29w X3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ID4gICAgcmV0dXJuIG5leHRfY3Ry bDsNCj4gPiB9DQo+ID4gKy8qIEhlbHBlciBmb3IgdmVjdF9zZXRfbG9vcF9j b25kaXRpb25fcGFydGlhbF92ZWN0b3JzLiAgR2VuZXJhdGUgZGVmaW5pdGlv bnMNCj4gPiArICAgZm9yIGFsbCB0aGUgcmdyb3VwIGNvbnRyb2xzIGluIFJH QyBhbmQgcmV0dXJuIGEgY29udHJvbCB0aGF0IGlzIG5vbnplcm8NCj4gPiAr ICAgd2hlbiB0aGUgbG9vcCBuZWVkcyB0byBpdGVyYXRlLiAgQWRkIGFueSBu ZXcgcHJlaGVhZGVyIHN0YXRlbWVudHMgdG8NCj4gPiArICAgUFJFSEVBREVS X1NFUS4gIFVzZSBMT09QX0NPTkRfR1NJIHRvIGluc2VydCBjb2RlIGJlZm9y ZSB0aGUgZXhpdCBnY29uZC4NCj4gPiArDQo+ID4gKyAgIFJHQyBiZWxvbmdz IHRvIGxvb3AgTE9PUC4gIFRoZSBsb29wIG9yaWdpbmFsbHkgaXRlcmF0ZWQg TklURVJTDQo+ID4gKyAgIHRpbWVzIGFuZCBoYXMgYmVlbiB2ZWN0b3JpemVk IGFjY29yZGluZyB0byBMT09QX1ZJTkZPLg0KPiA+ICsNCj4gPiArICAgVW5s aWtlIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgd2hpY2ggaXMg aXRlcmF0aW5nIGZyb20gMC1iYXNlZCBJVg0KPiA+ICsgICB0byBURVNUX0xJ TUlUIC0gYmlhcy4NCj4gPiArDQo+ID4gKyAgIEluIHZlY3Rfc2V0X2xvb3Bf Y29udHJvbHNfYnlfd2hpbGVfbGVuLCB3ZSBhcmUgaXRlcmF0aW5nIGZyb20g c3RhcnQgYXQNCj4gPiArICAgSVYgPSBURVNUX0xJTUlUIC0gYmlhcyBhbmQg a2VlcCBzdWJ0cmFjdCBJViBieSB0aGUgbGVuZ3RoIGNhbGN1bGF0ZWQgYnkN Cj4gPiArICAgSUZOX1dISUxFX0xFTiBwYXR0ZXJuLg0KPiA+ICsNCj4gPiAr ICAgTm90ZTogdGhlIGNvc3Qgb2YgdGhlIGNvZGUgZ2VuZXJhdGVkIGJ5IHRo aXMgZnVuY3Rpb24gaXMgbW9kZWxlZA0KPiA+ICsgICBieSB2ZWN0X2VzdGlt YXRlX21pbl9wcm9maXRhYmxlX2l0ZXJzLCBzbyBjaGFuZ2VzIGhlcmUgbWF5 IG5lZWQNCj4gPiArICAgY29ycmVzcG9uZGluZyBjaGFuZ2VzIHRoZXJlLg0K PiA+ICsNCj4gPiArICAgMS4gU2luZ2xlIHJncm91cCwgdGhlIEdpbXBsZSBJ UiBzaG91bGQgYmU6DQo+ID4gKw0KPiA+ICsgPGJiIDM+DQo+ID4gKyBfMTkg PSAodW5zaWduZWQgbG9uZykgbl81KEQpOw0KPiA+ICsgLi4uDQo+ID4gKw0K PiA+ICsgPGJiIDQ+Og0KPiA+ICsgLi4uDQo+ID4gKyAjIGl2dG1wXzIwID0g UEhJIDxpdnRtcF8yMSg0KSwgXzE5KDMpPg0KPiA+ICsgLi4uDQo+ID4gKyBf MjIgPSAuV0hJTEVfTEVOIChpdnRtcF8yMCwgdmYpOw0KPiA+ICsgLi4uDQo+ ID4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2UgXzIyKTsNCj4gPiArIC4uLg0K PiA+ICsgaXZ0bXBfMjEgPSBpdnRtcF8yMCAtIF8yMjsNCj4gPiArIC4uLg0K PiA+ICsgaWYgKGl2dG1wXzIxICE9IDApDQo+ID4gKyAgIGdvdG8gPGJiIDQ+ OyBbNzUuMDAlXQ0KPiA+ICsgZWxzZQ0KPiA+ICsgICBnb3RvIDxiYiA1Pjsg WzI1LjAwJV0NCj4gPiArDQo+ID4gKyA8YmIgNT4NCj4gPiArIHJldHVybjsN Cj4gPiArDQo+ID4gKyAgIE5vdGU6IElGTl9XSElMRV9MRU4gd2lsbCBndWFy YW50ZWUgIml2dG1wXzIxID0gaXZ0bXBfMjAgLSBfMjIiIG5ldmVyDQo+ID4g KyAgIHVuZGVyZmxvdyAwLg0KPiA+ICsNCj4gPiArICAgMi4gTXVsdGlwbGUg cmdyb3VwLCB0aGUgR2ltcGxlIElSIHNob3VsZCBiZToNCj4gPiArDQo+ID4g KyA8YmIgMz4NCj4gPiArIF83MCA9ICh1bnNpZ25lZCBsb25nKSBibmQuN181 MjsNCj4gPiArIF83MSA9IF83MCAqIDI7DQo+ID4gKyBfNzIgPSBNQVhfRVhQ UiA8XzcxLCA0PjsNCj4gPiArIF83MyA9IF83MiArIDE4NDQ2NzQ0MDczNzA5 NTUxNjEyOw0KPiA+ICsgLi4uDQo+ID4gKw0KPiA+ICsgPGJiIDQ+Og0KPiA+ ICsgLi4uDQo+ID4gKyAjIGl2dG1wXzc0ID0gUEhJIDxpdnRtcF83NSg2KSwg XzczKDEyKT4NCj4gPiArICMgaXZ0bXBfNzcgPSBQSEkgPGl2dG1wXzc4KDYp LCBfNzEoMTIpPg0KPiA+ICsgXzc2ID0gLldISUxFX0xFTiAoaXZ0bXBfNzQs IHZmICogbml0ZW1zX3Blcl9jdHJsKTsNCj4gPiArIF83OSA9IC5XSElMRV9M RU4gKGl2dG1wXzc3LCB2ZiAqIG5pdGVtc19wZXJfY3RybCk7DQo+ID4gKyAu Li4NCj4gPiArIHZlY3RvciBzdGF0ZW1lbnQgKHVzZSBfNzkpOw0KPiA+ICsg Li4uDQo+ID4gKyB2ZWN0b3Igc3RhdGVtZW50ICh1c2UgXzc2KTsNCj4gPiAr IC4uLg0KPiA+ICsgXzY1ID0gXzc5IC8gMjsNCj4gPiArIHZlY3RvciBzdGF0 ZW1lbnQgKHVzZSBfNjUpOw0KPiA+ICsgLi4uDQo+ID4gKyBfNjggPSBfNzYg LyAyOw0KPiA+ICsgdmVjdG9yIHN0YXRlbWVudCAodXNlIF82OCk7DQo+ID4g KyAuLi4NCj4gPiArIGl2dG1wXzc4ID0gaXZ0bXBfNzcgLSBfNzk7DQo+ID4g KyBpdnRtcF83NSA9IGl2dG1wXzc0IC0gXzc2Ow0KPiA+ICsgLi4uDQo+ID4g KyBpZiAoaXZ0bXBfNzggIT0gMCkNCj4gPiArICAgZ290byA8YmIgND47IFs3 NS4wMCVdDQo+ID4gKyBlbHNlDQo+ID4gKyAgIGdvdG8gPGJiIDU+OyBbMjUu MDAlXQ0KPiA+ICsNCj4gPiArIDxiYiA1Pg0KPiA+ICsgcmV0dXJuOw0KPiA+ ICsNCj4gPiArKi8NCj4gPiArDQo+ID4gK3N0YXRpYyB0cmVlDQo+ID4gK3Zl Y3Rfc2V0X2xvb3BfY29udHJvbHNfYnlfd2hpbGVfbGVuIChjbGFzcyBsb29w ICpsb29wLCBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ID4gKyAgICAg IGdpbXBsZV9zZXEgKnByZWhlYWRlcl9zZXEsDQo+ID4gKyAgICAgIGdpbXBs ZV9zZXEgKmhlYWRlcl9zZXEsDQo+ID4gKyAgICAgIHJncm91cF9jb250cm9s cyAqcmdjLCB0cmVlIG5pdGVycykNCj4gPiArew0KPiA+ICsgIHRyZWUgY29t cGFyZV90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfQ09NUEFSRV9UWVBFIChs b29wX3ZpbmZvKTsNCj4gPiArICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZP X1JHUk9VUF9JVl9UWVBFIChsb29wX3ZpbmZvKTsNCj4gPiArICAvKiBXZSBh cmUgbm90IGFsbG93aW5nIG1hc2tlZCBhcHByb2FjaCBpbiBXSElMRV9MRU4u ICAqLw0KPiA+ICsgIGdjY19hc3NlcnQgKCFMT09QX1ZJTkZPX0ZVTExZX01B U0tFRF9QIChsb29wX3ZpbmZvKSk7DQo+ID4gKw0KPiA+ICsgIHRyZWUgY3Ry bF90eXBlID0gcmdjLT50eXBlOw0KPiA+ICsgIHVuc2lnbmVkIGludCBuaXRl bXNfcGVyX2l0ZXIgPSByZ2MtPm1heF9uc2NhbGFyc19wZXJfaXRlciAqIHJn Yy0+ZmFjdG9yOw0KPiA+ICsgIHBvbHlfdWludDY0IG5pdGVtc19wZXJfY3Ry bCA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChjdHJsX3R5cGUpICogcmdjLT5m YWN0b3I7DQo+ID4gKyAgcG9seV91aW50NjQgdmYgPSBMT09QX1ZJTkZPX1ZF Q1RfRkFDVE9SIChsb29wX3ZpbmZvKTsNCj4gPiArDQo+ID4gKyAgLyogQ2Fs Y3VsYXRlIHRoZSBtYXhpbXVtIG51bWJlciBvZiBpdGVtIHZhbHVlcyB0aGF0 IHRoZSByZ3JvdXANCj4gPiArICAgICBoYW5kbGVzIGluIHRvdGFsLCB0aGUg bnVtYmVyIHRoYXQgaXQgaGFuZGxlcyBmb3IgZWFjaCBpdGVyYXRpb24NCj4g PiArICAgICBvZiB0aGUgdmVjdG9yIGxvb3AuICAqLw0KPiA+ICsgIHRyZWUg bml0ZW1zX3RvdGFsID0gbml0ZXJzOw0KPiA+ICsgIGlmIChuaXRlbXNfcGVy X2l0ZXIgIT0gMSkNCj4gPiArICAgIHsNCj4gPiArICAgICAgLyogV2UgY2hl Y2tlZCBiZWZvcmUgc2V0dGluZyBMT09QX1ZJTkZPX1VTSU5HX1BBUlRJQUxf VkVDVE9SU19QIHRoYXQNCj4gPiArIHRoZXNlIG11bHRpcGxpY2F0aW9ucyBk b24ndCBvdmVyZmxvdy4gICovDQo+ID4gKyAgICAgIHRyZWUgY29tcGFyZV9m YWN0b3IgPSBidWlsZF9pbnRfY3N0IChjb21wYXJlX3R5cGUsIG5pdGVtc19w ZXJfaXRlcik7DQo+ID4gKyAgICAgIG5pdGVtc190b3RhbCA9IGdpbXBsZV9i dWlsZCAocHJlaGVhZGVyX3NlcSwgTVVMVF9FWFBSLCBjb21wYXJlX3R5cGUs DQo+ID4gKyAgICBuaXRlbXNfdG90YWwsIGNvbXBhcmVfZmFjdG9yKTsNCj4g PiArICAgIH0NCj4gPiArDQo+ID4gKyAgLyogQ29udmVydCB0aGUgY29tcGFy aXNvbiB2YWx1ZSB0byB0aGUgSVYgdHlwZSAoZWl0aGVyIGEgbm8tb3Agb3IN Cj4gPiArICAgICBhIHByb21vdGlvbikuICAqLw0KPiA+ICsgIG5pdGVtc190 b3RhbCA9IGdpbXBsZV9jb252ZXJ0IChwcmVoZWFkZXJfc2VxLCBpdl90eXBl LCBuaXRlbXNfdG90YWwpOw0KPiA+ICsNCj4gPiArICAvKiBDcmVhdGUgYW4g aW5kdWN0aW9uIHZhcmlhYmxlIHRoYXQgY291bnRzIHRoZSBudW1iZXIgb2Yg aXRlbXMNCj4gPiArICAgICBwcm9jZXNzZWQuICAqLw0KPiA+ICsgIHRyZWUg aW5kZXhfYmVmb3JlX2luY3IsIGluZGV4X2FmdGVyX2luY3I7DQo+ID4gKyAg Z2ltcGxlX3N0bXRfaXRlcmF0b3IgaW5jcl9nc2k7DQo+ID4gKyAgYm9vbCBp bnNlcnRfYWZ0ZXI7DQo+ID4gKyAgc3RhbmRhcmRfaXZfaW5jcmVtZW50X3Bv c2l0aW9uIChsb29wLCAmaW5jcl9nc2ksICZpbnNlcnRfYWZ0ZXIpOw0KPiA+ ICsNCj4gPiArICAvKiBUZXN0IHRoZSBkZWNyZW1lbnRlZCBJViwgd2hpY2gg d2lsbCBuZXZlciB1bmRlcmZsb3cgMCBzaW5jZSB3ZSBoYXZlDQo+ID4gKyAg ICAgSUZOX1dISUxFX0xFTiB0byBndXJhbnRlZSB0aGF0LiAgKi8NCj4gPiAr ICB0cmVlIHRlc3RfbGltaXQgPSBuaXRlbXNfdG90YWw7DQo+ID4gKw0KPiA+ ICsgIC8qIFByb3ZpZGUgYSBkZWZpbml0aW9uIG9mIGVhY2ggY29udHJvbCBp biB0aGUgZ3JvdXAuICAqLw0KPiA+ICsgIHRyZWUgY3RybDsNCj4gPiArICB1 bnNpZ25lZCBpbnQgaTsNCj4gPiArICBGT1JfRUFDSF9WRUNfRUxUX1JFVkVS U0UgKHJnYy0+Y29udHJvbHMsIGksIGN0cmwpDQo+ID4gKyAgICB7DQo+ID4g KyAgICAgIC8qIFByZXZpb3VzIGNvbnRyb2xzIHdpbGwgY292ZXIgQklBUyBp dGVtcy4gIFRoaXMgY29udHJvbCBjb3ZlcnMgdGhlDQo+ID4gKyBuZXh0IGJh dGNoLiAgKi8NCj4gPiArICAgICAgcG9seV91aW50NjQgYmlhcyA9IG5pdGVt c19wZXJfY3RybCAqIGk7DQo+ID4gKyAgICAgIHRyZWUgYmlhc190cmVlID0g YnVpbGRfaW50X2NzdCAoaXZfdHlwZSwgYmlhcyk7DQo+ID4gKw0KPiA+ICsg ICAgICAvKiBSYXRoZXIgdGhhbiBoYXZlIGEgbmV3IElWIHRoYXQgc3RhcnRz IGF0IFRFU1RfTElNSVQgYW5kIGdvZXMgZG93biB0bw0KPiA+ICsgQklBUywg cHJlZmVyIHRvIHVzZSB0aGUgc2FtZSBURVNUX0xJTUlUIC0gQklBUyBiYXNl ZCBJViBmb3IgZWFjaA0KPiA+ICsgY29udHJvbCBhbmQgYWRqdXN0IHRoZSBi b3VuZCBkb3duIGJ5IEJJQVMuICAqLw0KPiA+ICsgICAgICB0cmVlIHRoaXNf dGVzdF9saW1pdCA9IHRlc3RfbGltaXQ7DQo+ID4gKyAgICAgIGlmIChpICE9 IDApDQo+ID4gKyB7DQo+ID4gKyAgIHRoaXNfdGVzdF9saW1pdCA9IGdpbXBs ZV9idWlsZCAocHJlaGVhZGVyX3NlcSwgTUFYX0VYUFIsIGl2X3R5cGUsDQo+ ID4gKyAgIHRoaXNfdGVzdF9saW1pdCwgYmlhc190cmVlKTsNCj4gPiArICAg dGhpc190ZXN0X2xpbWl0ID0gZ2ltcGxlX2J1aWxkIChwcmVoZWFkZXJfc2Vx LCBNSU5VU19FWFBSLCBpdl90eXBlLA0KPiA+ICsgICB0aGlzX3Rlc3RfbGlt aXQsIGJpYXNfdHJlZSk7DQo+ID4gKyB9DQo+ID4gKw0KPiA+ICsgICAgICAv KiBDcmVhdGUgZGVjcmVtZW50IElWLiAgKi8NCj4gPiArICAgICAgY3JlYXRl X2l2ICh0aGlzX3Rlc3RfbGltaXQsIGN0cmwsIE5VTExfVFJFRSwgbG9vcCwg JmluY3JfZ3NpLA0KPiA+ICsgaW5zZXJ0X2FmdGVyLCAmaW5kZXhfYmVmb3Jl X2luY3IsICZpbmRleF9hZnRlcl9pbmNyLA0KPiA+ICsgTUlOVVNfRVhQUik7 DQo+ID4gKw0KPiA+ICsgICAgICBwb2x5X3VpbnQ2NCBmaW5hbF92ZiA9IHZm ICogbml0ZW1zX3Blcl9pdGVyOw0KPiA+ICsgICAgICB0cmVlIHZmX3N0ZXAg PSBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBmaW5hbF92Zik7DQo+ID4gKyAg ICAgIHRyZWUgcmVzX2xlbiA9IGdpbXBsZV9idWlsZCAoaGVhZGVyX3NlcSwg SUZOX1dISUxFX0xFTiwgaXZfdHlwZSwNCj4gPiArICAgIGluZGV4X2JlZm9y ZV9pbmNyLCB2Zl9zdGVwKTsNCj4gPiArICAgICAgZ2Fzc2lnbiAqYXNzaWdu ID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoY3RybCwgcmVzX2xlbik7DQo+ID4g KyAgICAgIGdpbXBsZV9zZXFfYWRkX3N0bXQgKGhlYWRlcl9zZXEsIGFzc2ln bik7DQo+ID4gKyAgICB9DQo+ID4gKw0KPiA+ICsgIHJldHVybiBpbmRleF9h ZnRlcl9pbmNyOw0KPiA+ICt9DQo+ID4gKw0KPiA+IC8qIFNldCB1cCB0aGUg aXRlcmF0aW9uIGNvbmRpdGlvbiBhbmQgcmdyb3VwIGNvbnRyb2xzIGZvciBM T09QLCBnaXZlbg0KPiA+ICAgICB0aGF0IExPT1BfVklORk9fVVNJTkdfUEFS VElBTF9WRUNUT1JTX1AgaXMgdHJ1ZSBmb3IgdGhlIHZlY3Rvcml6ZWQNCj4g PiAgICAgbG9vcC4gIExPT1BfVklORk8gZGVzY3JpYmVzIHRoZSB2ZWN0b3Jp emF0aW9uIG9mIExPT1AuICBOSVRFUlMgaXMNCj4gPiBAQCAtNzAzLDYgKzg3 MCw3IEBAIHZlY3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9y cyAoY2xhc3MgbG9vcCAqbG9vcCwNCj4gPiAgICBib29sIHVzZV9tYXNrc19w ID0gTE9PUF9WSU5GT19GVUxMWV9NQVNLRURfUCAobG9vcF92aW5mbyk7DQo+ ID4gICAgdHJlZSBjb21wYXJlX3R5cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9D T01QQVJFX1RZUEUgKGxvb3BfdmluZm8pOw0KPiA+ICsgIHRyZWUgaXZfdHlw ZSA9IExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0K PiA+ICAgIHVuc2lnbmVkIGludCBjb21wYXJlX3ByZWNpc2lvbiA9IFRZUEVf UFJFQ0lTSU9OIChjb21wYXJlX3R5cGUpOw0KPiA+ICAgIHRyZWUgb3JpZ19u aXRlcnMgPSBuaXRlcnM7DQo+ID4gQEAgLTc1NywxMiArOTI1LDE4IEBAIHZl Y3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycyAoY2xhc3Mg bG9vcCAqbG9vcCwNCj4gPiBib29sIG1pZ2h0X3dyYXBfcCA9IHZlY3Rfcmdy b3VwX2l2X21pZ2h0X3dyYXBfcCAobG9vcF92aW5mbywgcmdjKTsNCj4gPiAv KiBTZXQgdXAgYWxsIGNvbnRyb2xzIGZvciB0aGlzIGdyb3VwLiAgKi8NCj4g PiAtIHRlc3RfY3RybCA9IHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0 bHkgKGxvb3AsIGxvb3BfdmluZm8sDQo+ID4gLSAgICAgICZwcmVoZWFkZXJf c2VxLA0KPiA+IC0gICAgICAmaGVhZGVyX3NlcSwNCj4gPiAtICAgICAgbG9v cF9jb25kX2dzaSwgcmdjLA0KPiA+IC0gICAgICBuaXRlcnMsIG5pdGVyc19z a2lwLA0KPiA+IC0gICAgICBtaWdodF93cmFwX3ApOw0KPiA+ICsgaWYgKGRp cmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX1dISUxFX0xFTiwg aXZfdHlwZSwNCj4gPiArICAgICBPUFRJTUlaRV9GT1JfU1BFRUQpKQ0KPiA+ ICsgICB0ZXN0X2N0cmwNCj4gPiArICAgICA9IHZlY3Rfc2V0X2xvb3BfY29u dHJvbHNfYnlfd2hpbGVfbGVuIChsb29wLCBsb29wX3ZpbmZvLA0KPiA+ICsg ICAgJnByZWhlYWRlcl9zZXEsICZoZWFkZXJfc2VxLA0KPiA+ICsgICAgcmdj LCBuaXRlcnMpOw0KPiA+ICsgZWxzZQ0KPiA+ICsgICB0ZXN0X2N0cmwNCj4g PiArICAgICA9IHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGxv b3AsIGxvb3BfdmluZm8sICZwcmVoZWFkZXJfc2VxLA0KPiA+ICsgICAgICAg ICZoZWFkZXJfc2VxLCBsb29wX2NvbmRfZ3NpLCByZ2MsDQo+ID4gKyAgICAg ICAgbml0ZXJzLCBuaXRlcnNfc2tpcCwNCj4gPiArICAgICAgICBtaWdodF93 cmFwX3ApOw0KPiA+ICAgICAgICB9DQo+ID4gICAgLyogRW1pdCBhbGwgYWNj dW11bGF0ZWQgc3RhdGVtZW50cy4gICovDQo+ID4gZGlmZiAtLWdpdCBhL2dj Yy90cmVlLXZlY3QtbG9vcC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0K PiA+IGluZGV4IDFiYTlmMThkNzNlLi41YmZmZDlhNjMyMiAxMDA2NDQNCj4g PiAtLS0gYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gPiArKysgYi9nY2Mv dHJlZS12ZWN0LWxvb3AuY2MNCj4gPiBAQCAtMTAzNjAsMTIgKzEwMzYwLDE0 IEBAIHZlY3RfcmVjb3JkX2xvb3BfbGVuIChsb29wX3ZlY19pbmZvIGxvb3Bf dmluZm8sIHZlY19sb29wX2xlbnMgKmxlbnMsDQo+ID4gICAgIHJncm91cCB0 aGF0IG9wZXJhdGVzIG9uIE5WRUNUT1JTIHZlY3RvcnMsIHdoZXJlIDAgPD0g SU5ERVggPCBOVkVDVE9SUy4gICovDQo+ID4gdHJlZQ0KPiA+IC12ZWN0X2dl dF9sb29wX2xlbiAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9v cF9sZW5zICpsZW5zLA0KPiA+IC0gICAgdW5zaWduZWQgaW50IG52ZWN0b3Jz LCB1bnNpZ25lZCBpbnQgaW5kZXgpDQo+ID4gK3ZlY3RfZ2V0X2xvb3BfbGVu IChnaW1wbGVfc3RtdF9pdGVyYXRvciAqZ3NpLCBsb29wX3ZlY19pbmZvIGxv b3BfdmluZm8sDQo+ID4gKyAgICB2ZWNfbG9vcF9sZW5zICpsZW5zLCB1bnNp Z25lZCBpbnQgbnZlY3RvcnMsIHRyZWUgdmVjdHlwZSwNCj4gPiArICAgIHVu c2lnbmVkIGludCBpbmRleCkNCj4gPiB7DQo+ID4gICAgcmdyb3VwX2NvbnRy b2xzICpyZ2wgPSAmKCpsZW5zKVtudmVjdG9ycyAtIDFdOw0KPiA+IC0gIGJv b2wgdXNlX2JpYXNfYWRqdXN0ZWRfbGVuID0NCj4gPiAtICAgIExPT1BfVklO Rk9fUEFSVElBTF9MT0FEX1NUT1JFX0JJQVMgKGxvb3BfdmluZm8pICE9IDA7 DQo+ID4gKyAgYm9vbCB1c2VfYmlhc19hZGp1c3RlZF9sZW4NCj4gPiArICAg ID0gTE9PUF9WSU5GT19QQVJUSUFMX0xPQURfU1RPUkVfQklBUyAobG9vcF92 aW5mbykgIT0gMDsNCj4gPiArICB0cmVlIGl2X3R5cGUgPSBMT09QX1ZJTkZP X1JHUk9VUF9JVl9UWVBFIChsb29wX3ZpbmZvKTsNCj4gPiAgICAvKiBQb3B1 bGF0ZSB0aGUgcmdyb3VwJ3MgbGVuIGFycmF5LCBpZiB0aGlzIGlzIHRoZSBm aXJzdCB0aW1lIHdlJ3ZlDQo+ID4gICAgICAgdXNlZCBpdC4gICovDQo+ID4g QEAgLTEwMzg2LDggKzEwMzg4LDggQEAgdmVjdF9nZXRfbG9vcF9sZW4gKGxv b3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVjX2xvb3BfbGVucyAqbGVucywN Cj4gPiAgIGlmICh1c2VfYmlhc19hZGp1c3RlZF9sZW4pDQo+ID4gICAgIHsN Cj4gPiAgICAgICBnY2NfYXNzZXJ0IChpID09IDApOw0KPiA+IC0gICAgICAg dHJlZSBhZGp1c3RlZF9sZW4gPQ0KPiA+IC0gbWFrZV90ZW1wX3NzYV9uYW1l IChsZW5fdHlwZSwgTlVMTCwgImFkanVzdGVkX2xvb3BfbGVuIik7DQo+ID4g KyAgICAgICB0cmVlIGFkanVzdGVkX2xlbg0KPiA+ICsgPSBtYWtlX3RlbXBf c3NhX25hbWUgKGxlbl90eXBlLCBOVUxMLCAiYWRqdXN0ZWRfbG9vcF9sZW4i KTsNCj4gPiAgICAgICBTU0FfTkFNRV9ERUZfU1RNVCAoYWRqdXN0ZWRfbGVu KSA9IGdpbXBsZV9idWlsZF9ub3AgKCk7DQo+ID4gICAgICAgcmdsLT5iaWFz X2FkanVzdGVkX2N0cmwgPSBhZGp1c3RlZF9sZW47DQo+ID4gICAgIH0NCj4g PiBAQCAtMTAzOTYsNiArMTAzOTgsMjcgQEAgdmVjdF9nZXRfbG9vcF9sZW4g KGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVjX2xvb3BfbGVucyAqbGVu cywNCj4gPiAgICBpZiAodXNlX2JpYXNfYWRqdXN0ZWRfbGVuKQ0KPiA+ICAg ICAgcmV0dXJuIHJnbC0+Ymlhc19hZGp1c3RlZF9jdHJsOw0KPiA+ICsgIGVs c2UgaWYgKGRpcmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX1dI SUxFX0xFTiwgaXZfdHlwZSwNCj4gPiArICAgIE9QVElNSVpFX0ZPUl9TUEVF RCkpDQo+ID4gKyAgICB7DQo+ID4gKyAgICAgIHRyZWUgbG9vcF9sZW4gPSBy Z2wtPmNvbnRyb2xzW2luZGV4XTsNCj4gPiArICAgICAgcG9seV9pbnQ2NCBu dW5pdHMxID0gVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHJnbC0+dHlwZSk7DQo+ ID4gKyAgICAgIHBvbHlfaW50NjQgbnVuaXRzMiA9IFRZUEVfVkVDVE9SX1NV QlBBUlRTICh2ZWN0eXBlKTsNCj4gPiArICAgICAgaWYgKG1heWJlX25lIChu dW5pdHMxLCBudW5pdHMyKSkNCj4gPiArIHsNCj4gPiArICAgLyogQSBsb29w IGxlbiBmb3IgZGF0YSB0eXBlIFggY2FuIGJlIHJldXNlZCBmb3IgZGF0YSB0 eXBlIFkNCj4gPiArICAgICAgaWYgWCBoYXMgTiB0aW1lcyBtb3JlIGVsZW1l bnRzIHRoYW4gWSBhbmQgaWYgWSdzIGVsZW1lbnRzDQo+ID4gKyAgICAgIGFy ZSBOIHRpbWVzIGJpZ2dlciB0aGFuIFgncy4gICovDQo+ID4gKyAgIGdjY19h c3NlcnQgKG11bHRpcGxlX3AgKG51bml0czEsIG51bml0czIpKTsNCj4gPiAr ICAgdW5zaWduZWQgaW50IGZhY3RvciA9IGV4YWN0X2RpdiAobnVuaXRzMSwg bnVuaXRzMikudG9fY29uc3RhbnQgKCk7DQo+ID4gKyAgIGdpbXBsZV9zZXEg c2VxID0gTlVMTDsNCj4gPiArICAgbG9vcF9sZW4gPSBnaW1wbGVfYnVpbGQg KCZzZXEsIFJESVZfRVhQUiwgaXZfdHlwZSwgbG9vcF9sZW4sDQo+ID4gKyAg ICBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBmYWN0b3IpKTsNCj4gPiArICAg aWYgKHNlcSkNCj4gPiArICAgICBnc2lfaW5zZXJ0X3NlcV9iZWZvcmUgKGdz aSwgc2VxLCBHU0lfU0FNRV9TVE1UKTsNCj4gPiArIH0NCj4gPiArICAgICAg cmV0dXJuIGxvb3BfbGVuOw0KPiA+ICsgICAgfQ0KPiA+ICAgIGVsc2UNCj4g PiAgICAgIHJldHVybiByZ2wtPmNvbnRyb2xzW2luZGV4XTsNCj4gPiB9DQo+ ID4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgYi9nY2Mv dHJlZS12ZWN0LXN0bXRzLmNjDQo+ID4gaW5kZXggZWZhMmQwZGFhNTIuLjcw OGM4YTFkODA2IDEwMDY0NA0KPiA+IC0tLSBhL2djYy90cmVlLXZlY3Qtc3Rt dHMuY2MNCj4gPiArKysgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+ID4g QEAgLTg2NTMsOCArODY1Myw5IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVj X2luZm8gKnZpbmZvLA0KPiA+ICAgICAgIGVsc2UgaWYgKGxvb3BfbGVucykN Cj4gPiB7DQo+ID4gICB0cmVlIGZpbmFsX2xlbg0KPiA+IC0gICAgID0gdmVj dF9nZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGxvb3BfbGVucywNCj4gPiAt IHZlY19udW0gKiBuY29waWVzLCB2ZWNfbnVtICogaiArIGkpOw0KPiA+ICsg ICAgID0gdmVjdF9nZXRfbG9vcF9sZW4gKGdzaSwgbG9vcF92aW5mbywgbG9v cF9sZW5zLA0KPiA+ICsgdmVjX251bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQo+ ID4gKyB2ZWNfbnVtICogaiArIGkpOw0KPiA+ICAgdHJlZSBwdHIgPSBidWls ZF9pbnRfY3N0IChyZWZfdHlwZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklUKTsN Cj4gPiAgIG1hY2hpbmVfbW9kZSB2bW9kZSA9IFRZUEVfTU9ERSAodmVjdHlw ZSk7DQo+ID4gICBvcHRfbWFjaGluZV9tb2RlIG5ld19vdm1vZGUNCj4gPiBA QCAtMTAwMDksOCArMTAwMTAsOCBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVj X2luZm8gKnZpbmZvLA0KPiA+ICAgICBlbHNlIGlmIChsb29wX2xlbnMgJiYg bWVtb3J5X2FjY2Vzc190eXBlICE9IFZNQVRfSU5WQVJJQU5UKQ0KPiA+ICAg ICAgIHsNCj4gPiB0cmVlIGZpbmFsX2xlbg0KPiA+IC0gICA9IHZlY3RfZ2V0 X2xvb3BfbGVuIChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+ID4gLSAgICAg ICAgdmVjX251bSAqIG5jb3BpZXMsDQo+ID4gKyAgID0gdmVjdF9nZXRfbG9v cF9sZW4gKGdzaSwgbG9vcF92aW5mbywgbG9vcF9sZW5zLA0KPiA+ICsgICAg ICAgIHZlY19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPiA+ICAgICAgICB2 ZWNfbnVtICogaiArIGkpOw0KPiA+IHRyZWUgcHRyID0gYnVpbGRfaW50X2Nz dCAocmVmX3R5cGUsDQo+ID4gICBhbGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0K PiA+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0b3JpemVyLmggYi9nY2Mv dHJlZS12ZWN0b3JpemVyLmgNCj4gPiBpbmRleCA5Y2YyZmIyM2ZlMy4uZTVj ZjM4Y2FmNGIgMTAwNjQ0DQo+ID4gLS0tIGEvZ2NjL3RyZWUtdmVjdG9yaXpl ci5oDQo+ID4gKysrIGIvZ2NjL3RyZWUtdmVjdG9yaXplci5oDQo+ID4gQEAg LTIyOTMsOCArMjI5Myw4IEBAIGV4dGVybiB0cmVlIHZlY3RfZ2V0X2xvb3Bf bWFzayAoZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKiwgdmVjX2xvb3BfbWFza3Mg KiwNCj4gPiB1bnNpZ25lZCBpbnQsIHRyZWUsIHVuc2lnbmVkIGludCk7DQo+ ID4gZXh0ZXJuIHZvaWQgdmVjdF9yZWNvcmRfbG9vcF9sZW4gKGxvb3BfdmVj X2luZm8sIHZlY19sb29wX2xlbnMgKiwgdW5zaWduZWQgaW50LA0KPiA+ICAg dHJlZSwgdW5zaWduZWQgaW50KTsNCj4gPiAtZXh0ZXJuIHRyZWUgdmVjdF9n ZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8sIHZlY19sb29wX2xlbnMgKiwg dW5zaWduZWQgaW50LA0KPiA+IC0gICAgICAgIHVuc2lnbmVkIGludCk7DQo+ ID4gK2V4dGVybiB0cmVlIHZlY3RfZ2V0X2xvb3BfbGVuIChnaW1wbGVfc3Rt dF9pdGVyYXRvciAqLCBsb29wX3ZlY19pbmZvLA0KPiA+ICsgICAgICAgIHZl Y19sb29wX2xlbnMgKiwgdW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25lZCBp bnQpOw0KPiA+IGV4dGVybiBnaW1wbGVfc2VxIHZlY3RfZ2VuX2xlbiAodHJl ZSwgdHJlZSwgdHJlZSwgdHJlZSk7DQo+ID4gZXh0ZXJuIHN0bXRfdmVjX2lu Zm8gaW5mb19mb3JfcmVkdWN0aW9uICh2ZWNfaW5mbyAqLCBzdG10X3ZlY19p bmZvKTsNCj4gPiBleHRlcm4gYm9vbCByZWR1Y3Rpb25fZm5fZm9yX3NjYWxh cl9jb2RlIChjb2RlX2hlbHBlciwgaW50ZXJuYWxfZm4gKik7DQo+IA0KIA0K LS0gDQpSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+DQpTVVNF IFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIEZyYW5rZW5zdHJh c3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJnLA0KR2VybWFueTsgR0Y6IEl2byBU b3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNEb25hbGQsIEJvdWRpZW4g TW9lcm1hbjsNCkhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0KIA0K ------=_001_NextPart873466225285_=------