From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgbr2.qq.com (smtpbgbr2.qq.com [54.207.22.56]) by sourceware.org (Postfix) with ESMTPS id AA5273858C55 for ; Thu, 29 Sep 2022 21:39:22 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.1 sourceware.org AA5273858C55 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: bizesmtp90t1664487554tkcblkkn Received: from TABLET-POE6JQHH ( [36.36.107.177]) by bizesmtp.qq.com (ESMTP) with id ; Fri, 30 Sep 2022 05:39:13 +0800 (CST) X-QQ-SSF: 01400000002000D0J000B00A0000000 X-QQ-FEAT: 1iwmpTHZnW9Anqrn8IoQNIZ2l729knt8HHmsG08XfZCDvq6Vpc64SC+9JyLPz UAF133Iu5S75Nsfm4U1ADwkJrFBBr1357FchyYaq62ugF1AGaNwfibodk/uMiZe6abHYhMU T1s04EZe+Z5NiRW0T/7Bdqd2P1iLaihMiFVWSY9JNgoDOb/A72WYR4AKc6ltIG5nGIY90kb JLUlBuvOIMAAIUMkgLrBjhuV7Pj+Mlgp/JQvcYLnLjyZZh7eJY50hmuU6esCc+2lnccRSKu swrdmJJHQgemPLiomJWn6e2bretdaFiReJnFq0/qe6su2OF8gGXcMagbpfXGGw8JiSRCY96 JXExzr7U+/6YrDjMNGYyX4F0KTZD1NePJNutMmcG4uHywhK7iTIVoiq+LjXMQ== X-QQ-GoodBg: 2 Date: Fri, 30 Sep 2022 05:39:13 +0800 From: =?GB2312?B?1tO+09Xc?= To: richard.sandiford Cc: gcc-patches Subject: Re: Re: [Unfinished PATCH] Add first-order recurrence autovectorization References: <20220929110723.277330-1-juzhe.zhong@rivai.ai>, X-Priority: 3 X-GUID: 883CB4CB-0208-4F74-B9C8-2FD0D9343950 X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: <1A2CAE353E578C99+2022093005391315339822@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart501884458026_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvr:qybglogicsvr7 X-Spam-Status: No, score=-9.8 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,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 List-Id: This is a multi-part message in MIME format. ------=_001_NextPart501884458026_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 WWVhaCwgZnJhbmtseSwgSSBhbHJlYWR5IG5vdGljZWQgdGhpcyBzaXR1YXRp b24uDQpJZiB3ZSBjYW4gbWFudWFsbHkgcmV3cml0ZSBzb21lIGNvZGVzLCBH Q0MgY2FuIHNvbHZlIGRhdGEgZGVwZW5kZW5jeSBpbiBzY2FsYXIgcGFzc2Vz IA0KYnkgaW50cm9kdWNpbmcgcmVwZWF0aW5nIHN0YXRlbWVudCAoSXQgd2ls bCByZW1vdmUgUEhJIG5vZGVzKSBiZWZvcmUgbG9vcCB2ZWN0b3JpemVyLg0K V2hpY2ggYXBwcm9hY2ggaXMgd2lubmVyLCBHQ0Mgb3IgTExWTSA/IFRoaXMg aXMgbm90IHBvaW50IHRoYXQgSSBjYXJlIGFib3V0Lg0KTXkgZ29hbCBpcyB0 byBmaXggY2FzZXMgdGhhdCBHQ0MgZmFpbGVkIHRvIHZlY3Rvcml6ZSBhbmQg bWFrZSBHQ0MgbG9vcCB2ZWN0b3JpemVyIG1vcmUgcG93ZXJmdWwgYW5kIGNh biB2ZWN0b3JpemUgbW9yZSBjYXNlcy4NCkJlc2lkZXMsIEluIG1hbnkgc2l0 dWF0aW9ucyB1c2VyIGRvZXNuJ3Qgd2FudCB0byByZXdyaXRlIHRoZSBjb2Rl cyBhbmQgYWxzbyB3ZSBjYW4ndCBsZWF2ZSBkYXRhIGRlcGVuZGVuY3kgdG8g c2NhbGFyIHBhc3MgdG8gaGFuZGxlIGl0Lg0KDQpUaGUgc2FtZSBleGFtcGxl IEkgcHJlc2VudGVkIHlvdSwgdXNlcnMgY291bGQgd3JpdGUgY29kZXMgaW4g ZGlmZmVyZW50IHN0eWxlcyB3aWxsIGdldCBkaWZmZXJlbnQgdmVjdG9yaXph dGlvbiBjb2RlZ2VuIChhZnRlciBhcHBseWluZyBteSBwYXRjaCkuDQpIb3dl dmVyLCBMTFZNIGNhbiBub3QgYWNoaWV2ZSB0aGF0LCBubyBtYXR0ZXIgaG93 IHlvdSB3cml0ZSB0aGUgY29kZXMgdGhleSBhbHdheXMgdXNlcyBnZW5lcmFs IGZpcnN0LW9yZGVyIHJlY3VycmVuY2UgbG9vcCB2ZWN0b3JpemVyLiANCkFu ZCBJIHRoaW5rIHRoaXMgaXMgdGhlIGFkdmFudGFnZSBHQ0Mgb3ZlcmNvbWUg TExWTSBhZnRlciBteSBwYXRjaCBpcyBmaW5pc2hlZCBhbmQgbWVyZ2UgaW50 byBHQ0MgdXBzdHJlYW0uDQpXaGljaCBhcHByb2FjaCBpcyBiZXR0ZXI/IExl YXZlIGl0IHRvIHVzZXIgY2hvb3NlIGl0Lg0KDQpJZiB5b3Ugd2F0Y2hlZCBt eSBwcmVzZW50YXRpb24gaW4gR05VIGNhdWxkcm9uIDIwMjIuIEkgaGF2ZSBz aG93ZWQgdGhlIGNvbXBhcmlzb24gYmV0d2VlbiBSVlYgTExWTSBhbmQgUlZW IEdDQy4NCkFmdGVyIGNvbXBpbGluZyBhbmQgdGVzdGluZyBtYW55IGJlbmNo bWFya3MsIEkgbm90aWNlZCBMTFZNIGNhbiBhbHdheXMgdmVjdG9yaXplIG1v cmUgY2FzZXMgdGhhbiBHQ0MuDQpIb3dldmVyLCBpbiBjYXNlIG9mIGNhc2Vz IHRoYXQgYm90aCBHQ0MgYW5kIExMVk0gY2FuIHZlY3Rvcml6ZSwgc29tZSBj YXNlcyBHQ0Mgd2lucywgc29tZSBjYXNlcyBHQ0MgYW5kIExMVk0gYXJlIHRo ZSBzYW1lIG9yIExMVk0gd2lucywNCmJ1dCBvdmVyYWwgR0NDIGNhbiB3aW4g bW9yZSBpbiBtb3N0IG9mIGNhc2VzLg0KSSBoYXZlIGFuYWx5emVkIG1vc3Qg b2YgdGhlbSwgYmVjYXVzZSBHQ0MgaXMgbWlzc2luZyBzb21lIGdlbmVyYWwg bG9vcCB2ZWN0b3JpemVyIHRoYXQgaXMgd2hhdCBJIHdhbnQgdG8gZG8gKHRy YW5zbGF0aW5nIExMVk0gbG9vcCB2ZWN0b3JpemVyIGludG8gR0NDKS4NCg0K U28sIGxldCdzIG1lIGZpcnN0IGZpbmlzaCB0aGlzIHBhdGNoIGFuZCB0ZXN0 IGl0IGluIHRoZSBkb3duc3RyZWFtIFJWViBHQ0MuIEkgY2FuIG9ubHkgdGVz dCBpdCBpbiBteSBkb3duc3RyZWFtIFJWViBHQ0MuDQpCZWNhdXNlIHRoZSBS SVNDLVYgYmFja2VuZCBpbiB1cHN0cmVhbSBHQ0MgaXMgZmFyIGZyb20gcmVh ZHkgdG8gc3VwcG9ydCBhdXRvdmVjdG9yaXphdGlvbiBldmVuIHRob3VnaCBt eSBhYm91dCAxMCBwYXRoZXMgb2YgUlZWIHN1cHBvcnQgYXJlIG1lcmdlZCBp bnRvIEdDQyB1cHN0cmVhbS4NClRoZW4gSSBwb3N0IHRoZSBmaW5pc2hlZCB2 ZXJzaW9uIG9mIHRoaXMgbG9vcCB2ZWN0b3JpemVyIHRvIHlvdSwgY2FuIHlv dSBoZWxwIG1lIHRlc3QgaXQgaW4gQVJNIHBsYXRmb3JtID8gVGhhbmtzLg0K DQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBSaWNoYXJkIFNh bmRpZm9yZA0KRGF0ZTogMjAyMi0wOS0zMCAwMDo1Mw0KVG86IGp1emhlLnpo b25nDQpDQzogZ2NjLXBhdGNoZXMNClN1YmplY3Q6IFJlOiBbVW5maW5pc2hl ZCBQQVRDSF0gQWRkIGZpcnN0LW9yZGVyIHJlY3VycmVuY2UgYXV0b3ZlY3Rv cml6YXRpb24NClRoYW5rcyBmb3IgcG9zdGluZyB0aGUgcGF0Y2guDQogDQpq dXpoZS56aG9uZ0ByaXZhaS5haSB3cml0ZXM6DQo+IEZyb206IEp1LVpoZSBa aG9uZyA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+DQo+IGdjYy9DaGFuZ2VM b2c6DQo+DQo+ICAgICAgICAgKiB0cmVlLXZlY3QtbG9vcC5jYyAodmVjdF9w aGlfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZV9wKTogTmV3IGZ1bmN0aW9uLg0K PiAgICAgICAgICh2ZWN0X2FuYWx5emVfc2NhbGFyX2N5Y2xlc18xKTogQ2xh c3NpZnkgZmlyc3Qtb3JkZXIgcmVjdXJyZW5jZSBwaGkuDQo+ICAgICAgICAg KHZlY3RfYW5hbHl6ZV9sb29wX29wZXJhdGlvbnMpOiBBZGQgZmlyc3Qtb3Jk ZXIgcmVjdXJyZW5jZSBhdXRvdmVjdG9yaXphdGlvbiBzdXBwb3J0Lg0KPiAg ICAgICAgICh2ZWN0b3JpemFibGVfZGVwX3BoaSk6IE5ldyBmdW5jdGlvbi4N Cj4gICAgICAgICAodmVjdF91c2VfZmlyc3Rfb3JkZXJfcGhpX3Jlc3VsdF9w KTogTmV3IGZ1bmN0aW9uLg0KPiAgICAgICAgICh2ZWN0X3RyYW5zZm9ybV9s b29wKTogQWRkIGZpcnN0LW9yZGVyIHJlY3VycmVuY2UgYXV0b3ZlY3Rvcml6 YXRpb24gc3VwcG9ydC4NCj4gICAgICAgICAqIHRyZWUtdmVjdC1zdG10cy5j YyAodmVjdF90cmFuc2Zvcm1fc3RtdCk6IERpdHRvLg0KPiAgICAgICAgICh2 ZWN0X2lzX3NpbXBsZV91c2UpOiBEaXR0by4NCj4gICAgICAgICAqIHRyZWUt dmVjdG9yaXplci5oIChlbnVtIHZlY3RfZGVmX3R5cGUpOiBOZXcgZW51bS4N Cj4gICAgICAgICAoZW51bSBzdG10X3ZlY19pbmZvX3R5cGUpOiBEaXR0by4N Cj4gICAgICAgICAodmVjdG9yaXphYmxlX2RlcF9waGkpOiBOZXcgZnVuY3Rp b24uDQo+DQo+IEhpLCBzaW5jZSBSaWNoYXJkIHNhaWQgSSBjYW4gcG9zdCB1 bmZpbmlzaGVkIGZvciBoZWxwLCBJIHBvc3QgaXQuDQo+IFRoaXMgcGF0Y2gg aXMgZm9yIGZpeCBpc3N1ZTpodHRwczovL2djYy5nbnUub3JnL2J1Z3ppbGxh L3Nob3dfYnVnLmNnaT9pZD05OTQwOS4NCj4gTExWTSBjYW4gdmVjdG9yaXpl IHRoaXMgY2FzZSB1c2luZyBmaXJzdC1vcmRlciByZWN1cnJlbmNlIGxvb3At dmVjdG9yaXplci4NCj4gVGhpcyBwYXRjaCBpcyBpbnNwaXJlZCBieSBmaXJz dC1vcmRlciByZWN1cnJlbmNlIGF1dG92ZWN0b3JpemF0aW9uIHN1cHBvcnQg aW4gTExWTToNCj4gaHR0cHM6Ly9yZXZpZXdzLmxsdm0ub3JnL0QxNjE5Nw0K PiBUaGVyZSBpcyBhIGxpbmsgdGhhdCBJIGNhbiBzaG93IHlvdSBzZXZlcmFs IGNhc2VzIHRoYXQgR0NDIGZhaWxzIHZlY3Rvcml6YXRpb24NCj4gYmVjYXVz ZSBubyBzdXBwb3J0IG9mIGZpcnMtb3JkZXIgcmVjdXJyZW5jZSB2ZWN0b3Jp emF0aW9uOiBodHRwczovL2dvZGJvbHQub3JnL3ovbnpmMVdyZDZUDQo+DQo+ IExldCdzIGNvbnNpZGVyIGEgc2ltcGxlIGNhc2UgdGhhdCBJIHNpbXBsaWZ5 Og0KPiB2b2lkIGZvbyAoaW50MzJfdCAqIF9fcmVzdHJpY3RfXyBhLCBpbnQz Ml90ICogX19yZXN0cmljdF9fIGIsIGludDMyX3QgKiBfX3Jlc3RyaWN0X18g YywgaW50IG4pDQo+IHsNCj4gICBpbnQzMl90IHQgPSAqYzsNCj4gICBmb3Ig KGludCBpID0gMDsgaSA8IG47ICsraSkNCj4gICAgIHsNCj4gICAgICAgYltp XSA9IGFbaV0gLSB0Ow0KPiAgICAgICB0ID0gYVtpXTsNCj4gICAgIH0NCj4g fQ0KIA0KT25lIHRoaW5nIHRoYXQgSSB3b25kZXJlZCBhYm91dCB0aGUgTExW TSBpbXBsZW1lbnRhdGlvbiBpczoNCmRvZXMgcmV1c2luZyB0aGUgbG9hZGVk IHZhbHVlIHJlYWxseSBwYXkgZm9yIGl0c2VsZj8gIEUuZy4gZm9yDQp0aGUg dW4tcHJlZGljdGl2ZS1jb21tb25lZCB2ZXJzaW9uOg0KIA0Kdm9pZCBmb28g KGludDMyX3QgKiBfX3Jlc3RyaWN0X18gYSwgaW50MzJfdCAqIF9fcmVzdHJp Y3RfXyBiLCBpbnQzMl90ICogX19yZXN0clwNCmljdF9fIGMsIGludCBuKQ0K ew0KICBiWzBdID0gYVswXSAtICpjOw0KICBmb3IgKGludCBpID0gMTsgaSA8 IG47ICsraSkNCiAgICBiW2ldID0gYVtpXSAtIGFbaSAtIDFdOw0KfQ0KIA0K R0NDIGdlbmVyYXRlczoNCiANCkw0Og0KICAgICAgICBsZHIgICAgIHEwLCBb eDYsIHgyXQ0KICAgICAgICBsZHIgICAgIHExLCBbeDAsIHgyXQ0KICAgICAg ICBzdWIgICAgIHYwLjRzLCB2MC40cywgdjEuNHMNCiAgICAgICAgc3RyICAg ICBxMCwgW3g1LCB4Ml0NCiAgICAgICAgYWRkICAgICB4MiwgeDIsIDE2DQog ICAgICAgIGNtcCAgICAgeDIsIHg0DQogICAgICAgIGJuZSAgICAgLkw0DQog DQp3aGVyZWFzIExMVk0gKHdpdGggLWZuby11bnJvbGwtbG9vcHMpIGdlbmVy YXRlczoNCiANCi5MQkIwXzQ6ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAvLyAldmVjdG9yLmJvZHkNCiAgICAgICAgbW92ICAgICB2MS4xNmIs IHYwLjE2Yg0KICAgICAgICBzdWJzICAgIHgxNSwgeDE1LCAjNA0KICAgICAg ICBsZHIgICAgIHEwLCBbeDEzXSwgIzE2DQogICAgICAgIGV4dCAgICAgdjEu MTZiLCB2MS4xNmIsIHYwLjE2YiwgIzEyDQogICAgICAgIHN1YiAgICAgdjEu NHMsIHYwLjRzLCB2MS40cw0KICAgICAgICBzdHIgICAgIHExLCBbeDE0XSwg IzE2DQogICAgICAgIGIubmUgICAgLkxCQjBfNA0KIA0KSW50cm9kdWNpbmcg dGhlIGxvb3AtY2FycmllZCBkZXBlbmRlbmN5ICh2aWEgdGhlIGV4dCkgbGlt aXRzIHRoZQ0KdGhyb3VnaHB1dCBvZiB0aGUgbG9vcCB0byB0aGUgbGF0ZW5j eSBvZiBhIHBlcm11dGF0aW9uLg0KIA0KQnV0IEkgZ3Vlc3Mgd2hpY2ggYXBw cm9hY2ggaXMgYmV0dGVyIGRlcGVuZHMgb24gdGhlIGFtb3VudCBvZiB3b3Jr DQp0aGF0IGlzIHJlcGVhdGVkIGJ5IEdDQydzIGFwcHJvYWNoLiAgRm9yIGEg c2luZ2xlIGxvYWQgaXQncyBwcm9iYWJseQ0KYmV0dGVyIHRvIHJlcGVhdCB0 aGUgd29yaywgYnV0IGZvciBzb21ldGhpbmcgbW9yZSBjb21wbGljYXRlZCB0 aGUNCmdlbmVyYWwgcmVjdXJyZW5jZSBhcHByb2FjaCBwcm9iYWJseSB3aW5z IG91dC4NCiANClNvIHBlcmhhcHMgd2Ugc2hvdWxkIGZpcnN0IGhhbmRsZSB0 aGUgZ2VuZXJhbCBjYXNlIChhcyBmb3IgeW91ciBwYXRjaCkNCmFuZCB0aGVu LCBhcyBhIHBvdGVudGlhbCBsYXRlciBmb2xsb3ctb24gcGF0Y2gsIG9wdGlt aXNlIHRoZSBjYXNlcyB3aGVyZQ0KdGhlIGxvb3AtY2FycmllZCBkZXBlbmRl bmN5IGlzIGhhcm1mdWw/DQogDQpUaGlzIGlzIGFsbCBoYW5kLXdhdnkgc3Bl Y3VsYXRpb24sIGluIGNhc2UgaXQgd2Fzbid0IG9idmlvdXMgOi0pDQogDQpU aGFua3MsDQpSaWNoYXJkDQogDQo+IEFwcGx5aW5nIHRoaXMgcGF0Y2gsIG15 IGRvd25zdHJlYW0gUlZWIEdDQyBjYW4gdmVjdG9yaXplIHdpdGggLWZkdW1w LXRyZWUtdmVjdDoNCj4NCj4gbm90ZTogdmVjdF9pc19zaW1wbGVfdXNlOiBv cGVyYW5kIHRfMjEgPSBQSEkgPF80KDYpLCB0XzEyKDUpPiwgdHlwZSBvZiBk ZWY6IGZpcnN0IG9yZGVyIHJlY3VycmVuY2UNCj4NCj4gSG93ZXZlciwgaXQg SUNFIGluICJkY2U2IiB3aGVuIHJlbW92aW5nIFBISSBub2RlICJ0XzIxID0g UEhJIDxfNCg2KSwgdF8xMig1KT4iOg0KPiAweDE0M2MxNzQgY3Jhc2hfc2ln bmFsDQo+ICAgICAgICAgLi4vLi4vLi4vcmlzY3YtZ2NjL2djYy90b3BsZXYu Y2M6MzIyDQo+IDB4MTcwZDRmZCBkZWxpbmtfaW1tX3VzZQ0KPiAgICAgICAg IC4uLy4uLy4uL3Jpc2N2LWdjYy9nY2Mvc3NhLWl0ZXJhdG9ycy5oOjI1Nw0K PiBJIHdhcyBzdHVjayBieSB0aGlzIGlzc3VlLiBCZXNpZGVzLCB0aGlzIHBh dGNoIGhhcyBtb3JlIDIgbW9yZSB0aGluZ3MgdG8gZG8gdGhhdCBJIGRpZG4n dCBpbXBsZW1lbnQ6DQo+DQo+IDEuIGluc2VydCBWRUNfUEVSTSBiZWZvcmUg dGhlIHZlY3RvciBzdWJ0cmFjdGlvbiBzdGF0ZW1lbnQgKEJlY2F1c2UgSSB3 YXMgc3R1Y2ssIEkgZGlkbid0IGNvbnRpbnVlDQo+ICAgIGltcGxlbWVudGlu ZyB0aGlzIHBhdGNoIGFuZCBtaXNzIHRoaXMuKQ0KPiAyLiBTdXBwb3J0IHRo aXMgdmVjdG9yaXphdGlvbiBpbiBTTFAgYXV0b3ZlY3Rvcml6YWl0b24uDQo+ DQo+IFRvIHVuZGVyc3RhbmQgdGhpcyBwYXRjaCwgMiBmdW5jdGlvbnMgYXJl IGltcG9ydGFudDoNCj4NCj4gMS4gdmVjdF9waGlfZmlyc3Rfb3JkZXJfcmVj dXJyZW5jZV9wLCB0aGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZm9yYmlkIHRo ZSBjYXNlcyB0aGF0IGNhbiBub3QgYmUgdmVjdG9yaXplZA0KPiAgICBieSB0 aGlzIHZlY3Rvcml6ZXIuIFRoZSBjb25zdHJhaW50cyB0aGVyZSBhcmUgc3Ry aWN0bHkgdGhlIHNhbWUgYXMgTExWTS4NCj4gMi4gdmVjdG9yaXphYmxlX2Rl cF9waGksIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBmaXJzdC1vcmRlciByZWN1 cnJlbmNlIHZlY3Rvcml6ZXIuDQo+DQo+IEkgaG9wZSBzb21lb25lIGNhbiBo ZWxwIG1lIGZpeCAmJiBmaW5pc2ggJiYgdGVzdCAmJiByZWZpbmUgdGhpcyBw YXRjaC4NCj4gVGhhbmtzLg0KPg0KPiAtLS0NCj4gIGdjYy90cmVlLXZlY3Qt bG9vcC5jYyAgfCAyMzkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKysrKy0NCj4gIGdjYy90cmVlLXZlY3Qtc3RtdHMuY2MgfCAgMTIg KystDQo+ICBnY2MvdHJlZS12ZWN0b3JpemVyLmggIHwgICA0ICsNCj4gIDMg ZmlsZXMgY2hhbmdlZCwgMjUyIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25z KC0pDQo+DQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2Mg Yi9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gaW5kZXggMjUzNmNjM2NmNDku LmFkYjQ4MzU2YzIzIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0LWxv b3AuY2MNCj4gKysrIGIvZ2NjL3RyZWUtdmVjdC1sb29wLmNjDQo+IEBAIC01 MjksNiArNTI5LDU3IEBAIHZlY3RfaW5uZXJfcGhpX2luX2RvdWJsZV9yZWR1 Y3Rpb25fcCAobG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCBncGhpICpwaGkp DQo+ICAgIHJldHVybiBmYWxzZTsNCj4gIH0NCj4gIA0KPiArLyogUmV0dXJu cyB0cnVlIGlmIFBoaSBpcyBhIGZpcnN0LW9yZGVyIHJlY3VycmVuY2UuIEEg Zmlyc3Qtb3JkZXINCj4gKyAgIHJlY3VycmVuY2UgaXMgYSBub24tcmVkdWN0 aW9uIHJlY3VycmVuY2UgcmVsYXRpb24gaW4gd2hpY2ggdGhlIHZhbHVlIG9m DQo+ICsgICB0aGUgcmVjdXJyZW5jZSBpbiB0aGUgY3VycmVudCBsb29wIGl0 ZXJhdGlvbiBlcXVhbHMgYSB2YWx1ZSBkZWZpbmVkIGluDQo+ICsgICB0aGUg cHJldmlvdXMgaXRlcmF0aW9uLiAgKi8NCj4gKw0KPiArc3RhdGljIGJvb2wN Cj4gK3ZlY3RfcGhpX2ZpcnN0X29yZGVyX3JlY3VycmVuY2VfcCAobG9vcF92 ZWNfaW5mbyBsb29wX3ZpbmZvLCBjbGFzcyBsb29wICpsb29wLA0KPiArICAg IGdwaGkgKnBoaSkNCj4gK3sNCj4gKyAgLyogRW5zdXJlIHRoZSBwaGkgbm9k ZSBpcyBpbiB0aGUgbG9vcCBoZWFkZXIgYW5kIGhhcyB0d28gaW5jb21pbmcg dmFsdWVzLiAgKi8NCj4gKyAgaWYgKGdpbXBsZV9iYiAocGhpKSAhPSBsb29w LT5oZWFkZXIgfHwgZ2ltcGxlX3BoaV9udW1fYXJncyAocGhpKSAhPSAyKQ0K PiArICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICAvKiBFbnN1cmUgdGhl IGxvb3AgaGFzIGEgcHJlaGVhZGVyIGFuZCBhIHNpbmdsZSBsYXRjaCBibG9j ay4gVGhlIGxvb3ANCj4gKyAgICAgdmVjdG9yaXplciB3aWxsIG5lZWQgdGhl IGxhdGNoIHRvIHNldCB1cCB0aGUgbmV4dCBpdGVyYXRpb24gb2YgdGhlIGxv b3AuICovDQo+ICsgIGVkZ2UgcHJlaGVhZGVyID0gbG9vcF9wcmVoZWFkZXJf ZWRnZSAobG9vcCk7DQo+ICsgIGVkZ2UgbGF0Y2ggPSBsb29wX2xhdGNoX2Vk Z2UgKGxvb3ApOw0KPiArICBpZiAoIXByZWhlYWRlciB8fCAhbGF0Y2gpDQo+ ICsgICAgcmV0dXJuIGZhbHNlOw0KPiArDQo+ICsgIC8qIEVuc3VyZSB0aGUg cGhpIG5vZGUncyBpbmNvbWluZyBibG9ja3MgYXJlIHRoZSBsb29wIHByZWhl YWRlciBhbmQgbGF0Y2guICAqLw0KPiArICBpZiAoIVBISV9BUkdfREVGX0ZS T01fRURHRSAocGhpLCBwcmVoZWFkZXIpDQo+ICsgICAgICB8fCAhUEhJX0FS R19ERUZfRlJPTV9FREdFIChwaGksIGxhdGNoKSkNCj4gKyAgICByZXR1cm4g ZmFsc2U7DQo+ICsNCj4gKyAgLyogR2V0IHRoZSBwcmV2aW91cyB2YWx1ZS4g VGhlIHByZXZpb3VzIHZhbHVlIGNvbWVzIGZyb20gdGhlIGxhdGNoIGVkZ2Ug d2hpbGUNCj4gKyAgICAgdGhlIGluaXRpYWwgdmFsdWUgY29tZXMgZm9ybSB0 aGUgcHJlaGVhZGVyIGVkZ2UuICAqLw0KPiArICBnaW1wbGUgKnByZXZpb3Vz ID0gU1NBX05BTUVfREVGX1NUTVQgKFBISV9BUkdfREVGX0ZST01fRURHRSAo cGhpLCBsYXRjaCkpOw0KPiArICBpZiAoIXByZXZpb3VzKQ0KPiArICAgIHJl dHVybiBmYWxzZTsNCj4gKw0KPiArICAvKiBFbnN1cmUgZXZlcnkgdXNlX3N0 bXQgb2YgdGhlIHBoaSBub2RlIGlzIGRvbWluYXRlZCBieSB0aGUgcHJldmlv dXMgdmFsdWUuDQo+ICsgICAgIFRoZSBkb21pbmFuY2UgcmVxdWlyZW1lbnQg ZW5zdXJlcyB0aGUgbG9vcCB2ZWN0b3JpemVyIHdpbGwgbm90IG5lZWQgdG8N Cj4gKyAgICAgdmVjdG9yaXplIHRoZSBpbml0aWFsIHZhbHVlIHByaW9yIHRv IHRoZSBmaXJzdCBpdGVyYXRpb24gb2YgdGhlIGxvb3AuICAqLw0KPiArICBn aW1wbGUgKnVzZV9zdG10Ow0KPiArICBpbW1fdXNlX2l0ZXJhdG9yIGltbV9p dGVyOw0KPiArICBGT1JfRUFDSF9JTU1fVVNFX1NUTVQgKHVzZV9zdG10LCBp bW1faXRlciwgZ2ltcGxlX3BoaV9yZXN1bHQgKHBoaSkpDQo+ICsgICAgaWYg KHVzZV9zdG10KQ0KPiArICAgICAgaWYgKCFkb21pbmF0ZWRfYnlfcCAoQ0RJ X0RPTUlOQVRPUlMsIGdpbXBsZV9iYiAodXNlX3N0bXQpLA0KPiArICAgIGdp bXBsZV9iYiAocHJldmlvdXMpKSkNCj4gKyByZXR1cm4gZmFsc2U7DQo+ICsN Cj4gKyAgLyogRmlyc3Qtb3JkZXIgcmVjdXJyZW5jZSBhdXRvdmVjdG9yaXph dGlvbiBuZWVkcyBzaHVmZmxlIHZlY3Rvci4gICovDQo+ICsgIHRyZWUgc2Nh bGFyX3R5cGUgPSBUUkVFX1RZUEUgKFBISV9SRVNVTFQgKHBoaSkpOw0KPiAr ICB0cmVlIHZlY3R5cGUgPSBnZXRfdmVjdHlwZV9mb3Jfc2NhbGFyX3R5cGUg KGxvb3BfdmluZm8sIHNjYWxhcl90eXBlKTsNCj4gKyAgaWYgKCFjYW5fdmVj X3Blcm1fdmFyX3AgKFRZUEVfTU9ERSAodmVjdHlwZSkpKQ0KPiArICAgIHJl dHVybiBmYWxzZTsNCj4gKw0KPiArICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4g Kw0KPiAgLyogRnVuY3Rpb24gdmVjdF9hbmFseXplX3NjYWxhcl9jeWNsZXNf MS4NCj4gIA0KPiAgICAgRXhhbWluZSB0aGUgY3Jvc3MgaXRlcmF0aW9uIGRl Zi11c2UgY3ljbGVzIG9mIHNjYWxhciB2YXJpYWJsZXMNCj4gQEAgLTY2Niw2 ICs3MTcsOCBAQCB2ZWN0X2FuYWx5emVfc2NhbGFyX2N5Y2xlc18xIChsb29w X3ZlY19pbmZvIGxvb3BfdmluZm8sIGNsYXNzIGxvb3AgKmxvb3AsDQo+ICAg ICAgICAgICAgICAgICAgfQ0KPiAgICAgICAgICAgICAgfQ0KPiAgICAgICAg ICB9DQo+ICsgICAgICBlbHNlIGlmICh2ZWN0X3BoaV9maXJzdF9vcmRlcl9y ZWN1cnJlbmNlX3AgKGxvb3BfdmluZm8sIGxvb3AsIHBoaSkpDQo+ICsgU1RN VF9WSU5GT19ERUZfVFlQRSAoc3RtdF92aW5mbykgPSB2ZWN0X2ZpcnN0X29y ZGVyX3JlY3VycmVuY2U7DQo+ICAgICAgICBlbHNlDQo+ICAgICAgICAgIGlm IChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gICAgICAgICAgICBkdW1wX3ByaW50 Zl9sb2MgKE1TR19NSVNTRURfT1BUSU1JWkFUSU9OLCB2ZWN0X2xvY2F0aW9u LA0KPiBAQCAtMTgwOCw5ICsxODYxLDEzIEBAIHZlY3RfYW5hbHl6ZV9sb29w X29wZXJhdGlvbnMgKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbykNCj4gIA0K PiAgICAgICAgICAgIGdjY19hc3NlcnQgKHN0bXRfaW5mbyk7DQo+ICANCj4g KyAgICAgICAgICBpZiAoU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZv KSA9PSB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2UpDQo+ICsgICAgIG9r ID0gdmVjdG9yaXphYmxlX2RlcF9waGkgKGxvb3BfdmluZm8sIHN0bXRfaW5m bywgTlVMTCwgTlVMTCk7DQo+ICsNCj4gICAgICAgICAgICBpZiAoKFNUTVRf VklORk9fUkVMRVZBTlQgKHN0bXRfaW5mbykgPT0gdmVjdF91c2VkX2luX3Nj b3BlDQo+ICAgICAgICAgICAgICAgICB8fCBTVE1UX1ZJTkZPX0xJVkVfUCAo c3RtdF9pbmZvKSkNCj4gLSAgICAgICAgICAgICAgJiYgU1RNVF9WSU5GT19E RUZfVFlQRSAoc3RtdF9pbmZvKSAhPSB2ZWN0X2luZHVjdGlvbl9kZWYpDQo+ ICsgICAgICAgICAgICAgICYmIFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRf aW5mbykgIT0gdmVjdF9pbmR1Y3Rpb25fZGVmDQo+ICsgICAgICAgICAgICAg ICYmIFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5mbykgIT0gdmVjdF9m aXJzdF9vcmRlcl9yZWN1cnJlbmNlKQ0KPiAgICAgIC8qIEEgc2NhbGFyLWRl cGVuZGVuY2UgY3ljbGUgdGhhdCB3ZSBkb24ndCBzdXBwb3J0LiAgKi8NCj4g ICAgICByZXR1cm4gb3B0X3Jlc3VsdDo6ZmFpbHVyZV9hdCAocGhpLA0KPiAg ICAgIm5vdCB2ZWN0b3JpemVkOiINCj4gQEAgLTgyNjcsNiArODMyNCwxMjAg QEAgdmVjdG9yaXphYmxlX3BoaSAodmVjX2luZm8gKiwNCj4gICAgcmV0dXJu IHRydWU7DQo+ICB9DQo+ICANCj4gKy8qIFZlY3Rvcml6ZXMgRGVwIFBISXMu ICAqLw0KPiArDQo+ICtib29sDQo+ICt2ZWN0b3JpemFibGVfZGVwX3BoaSAo bG9vcF92ZWNfaW5mbyBsb29wX3ZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRf aW5mbywNCj4gKyAgICAgICBnaW1wbGUgKip2ZWNfc3RtdCwgc2xwX3RyZWUg c2xwX25vZGUpDQo+ICt7DQo+ICsgIGlmICghbG9vcF92aW5mbyB8fCAhaXNf YTxncGhpICo+IChzdG10X2luZm8tPnN0bXQpKQ0KPiArICAgIHJldHVybiBm YWxzZTsNCj4gKw0KPiArICBncGhpICpwaGkgPSBhc19hPGdwaGkgKj4gKHN0 bXRfaW5mby0+c3RtdCk7DQo+ICsNCj4gKyAgLyogU28gZmFyIHdlIG9ubHkg c3VwcG9ydCBmaXJzdC1vcmRlciByZWN1cnJlbmNlIGF1dG8tdmVjdG9yaXph dGlvbi4gICovDQo+ICsgIGlmIChTVE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10 X2luZm8pICE9IHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkNCj4gKyAg ICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgaWYgKCF2ZWNfc3RtdCkgLyog dHJhbnNmb3JtYXRpb24gbm90IHJlcXVpcmVkLiAgKi8NCj4gKyAgICB7DQo+ ICsgICAgICAvKiBTbyBmYXIgd2UgZG9uJ3Qgc3VwcG9ydCBmaXJzdC1vcmRl ciByZWN1cnJlbmNlIGZvciBTTFANCj4gKyAgICAgICAqIGF1dG8tdmVjdG9y aXphdGlvbi4gICAqLw0KPiArICAgICAgaWYgKHNscF9ub2RlKQ0KPiArIHsN Cj4gKyAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gKyAgICAgZHVtcF9w cmludGZfbG9jIChNU0dfTUlTU0VEX09QVElNSVpBVElPTiwgdmVjdF9sb2Nh dGlvbiwNCj4gKyAgICAgICJkbyBub3Qgc3VwcG9ydCBmaXJzdC1vcmRlciBy ZWN1cnJlbmNlIg0KPiArICAgICAgImF1dG92ZWN0b3JpemF0aW9uIGZvciBT TFAgbm9kZVxuIik7DQo+ICsgICByZXR1cm4gZmFsc2U7DQo+ICsgfQ0KPiAr ICAgICAgU1RNVF9WSU5GT19UWVBFIChzdG10X2luZm8pID0gZGVwX3BoaV9p bmZvX3R5cGU7DQo+ICsgICAgICByZXR1cm4gdHJ1ZTsNCj4gKyAgICB9DQo+ ICsNCj4gKyAgLyogVGhpcyBpcyB0aGUgc2Vjb25kIHBoYXNlIG9mIHZlY3Rv cml6aW5nIGZpcnN0LW9yZGVyIHJlY2VjdXJyZW5jZXMuIEFuDQo+ICsgIG92 ZXJ2aWV3IG9mIHRoZSB0cmFuc2Zvcm1hdGlvbiBpcyBkZXNjcmliZWQgYmVs b3cuIFN1cHBvc2Ugd2UgaGF2ZSB0aGUNCj4gKyAgZm9sbG93aW5nIGxvb3Au DQo+ICsNCj4gKyAgICBpbnQzMl90IHQgPSAwOw0KPiArICAgIGZvciAoaW50 IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgICAgew0KPiArIGJbaV0gPSBh W2ldIC0gdDsNCj4gKyB0ID0gYVtpXTsNCj4gKyAgICAgIH0NCj4gKw0KPiAr ICBUaGVyZSBpcyBhIGZpcnN0LW9yZGVyIHJlY3VycmVuY2Ugb24gImEiLiBG b3IgdGhpcyBsb29wLCB0aGUgc2hvcnRoYW5kDQo+ICsgIHNjYWxhciBJUiBs b29rcyBsaWtlOg0KPiArDQo+ICsgICAgc2NhbGFyLnByZWhlYWRlcjoNCj4g KyAgICAgIGluaXQgPSBhWy0xXQ0KPiArICAgICAgYnIgbG9vcC5ib2R5DQo+ ICsNCj4gKyAgICBzY2FsYXIuYm9keToNCj4gKyAgICAgIGkgPSBQSEkgPDAo c2NhbGFyLnByZWhlYWRlciksIGkrMShzY2FsYXIuYm9keSk+DQo+ICsgICAg ICBfMiA9IFBISSA8KGluaXQoc2NhbGFyLnByZWhlYWRlciksIDxfMShzY2Fs YXIuYm9keSk+DQo+ICsgICAgICBfMSA9IGFbaV0NCj4gKyAgICAgIGJbaV0g PSBfMSAtIF8yDQo+ICsgICAgICBiciBjb25kLCBzY2FsYXIuYm9keSwgLi4u DQo+ICsNCj4gKyAgSW4gdGhpcyBleGFtcGxlLCBfMiBpcyBhIHJlY3VycmVu Y2UgYmVjYXVzZSBpdCdzIHZhbHVlIGRlcGVuZHMgb24gdGhlDQo+ICsgIHBy ZXZpb3VzIGl0ZXJhdGlvbi4gSW4gdGhlIGZpcnN0IHBoYXNlIG9mIHZlY3Rv cml6YXRpb24sIHdlIGNyZWF0ZWQgYQ0KPiArICB0ZW1wb3JhcnkgdmFsdWUg Zm9yIF8yLiBXZSBub3cgY29tcGxldGUgdGhlIHZlY3Rvcml6YXRpb24gYW5k IHByb2R1Y2UgdGhlDQo+ICsgIHNob3J0aGFuZCB2ZWN0b3IgSVIgc2hvd24g YmVsb3cgKFZGID0gNCkuDQo+ICsNCj4gKyAgICB2ZWN0b3IucHJlaGVhZGVy Og0KPiArICAgICAgdmVjdF9pbml0ID0gdmVjdF9jc3QoLi4uLCAuLi4sIC4u LiwgYVstMV0pDQo+ICsgICAgICBiciB2ZWN0b3IuYm9keQ0KPiArDQo+ICsg ICAgdmVjdG9yLmJvZHkNCj4gKyAgICAgIGkgPSBQSEkgPDAodmVjdG9yLnBy ZWhlYWRlciksIGkrNCh2ZWN0b3IuYm9keSk+DQo+ICsgICAgICB2ZWN0XzEg PSBQSEkgPHZlY3RfaW5pdCh2ZWN0b3IucHJlaGVhZGVyKSwgdjIodmVjdG9y LmJvZHkpPg0KPiArICAgICAgdmVjdF8yID0gYVtpLCBpKzEsIGkrMiwgaSsz XTsNCj4gKyAgICAgIHZlY3RfMyA9IHZlY3Rvcih2ZWN0XzEoMyksIHZlY3Rf MigwLCAxLCAyKSkNCj4gKyAgICAgIGJbaSwgaSsxLCBpKzIsIGkrM10gPSB2 ZWN0XzIgLSB2ZWN0XzMNCj4gKyAgICAgIGJyIGNvbmQsIHZlY3Rvci5ib2R5 LCBtaWRkbGUuYmxvY2sNCj4gKw0KPiArICAgIG1pZGRsZS5ibG9jazoNCj4g KyAgICAgIHggPSB2ZWN0XzIoMykNCj4gKyAgICAgIGJyIHNjYWxhci5wcmVo ZWFkZXINCj4gKw0KPiArICAgIHNjYWxhci5waDoNCj4gKyAgICAgIHNfaW5p dCA9IFBISSA8eChtaWRkbGUuYmxvY2spLCBhWy0xXSwgb3RoZXJ3aXNlPg0K PiArICAgICAgYnIgc2NhbGFyLmJvZHkNCj4gKw0KPiArICBBZnRlciBleGVj dXRpb24gY29tcGxldGVzIHRoZSB2ZWN0b3IgbG9vcCwgd2UgZXh0cmFjdCB0 aGUgbmV4dCB2YWx1ZSBvZg0KPiArICB0aGUgcmVjdXJyZW5jZSAoeCkgdG8g dXNlIGFzIHRoZSBpbml0aWFsIHZhbHVlIGluIHRoZSBzY2FsYXIgbG9vcC4g ICovDQo+ICsNCj4gKyAgY2xhc3MgbG9vcCAqbG9vcCA9IExPT1BfVklORk9f TE9PUCAobG9vcF92aW5mbyk7DQo+ICsgIHRyZWUgdmVjdHlwZSA9IFNUTVRf VklORk9fVkVDVFlQRSAoc3RtdF9pbmZvKTsNCj4gKyAgdHJlZSBzY2FsYXJf ZGVzdCA9IGdpbXBsZV9waGlfcmVzdWx0IChzdG10X2luZm8tPnN0bXQpOw0K PiArICBiYXNpY19ibG9jayBiYiA9IGdpbXBsZV9iYiAoc3RtdF9pbmZvLT5z dG10KTsNCj4gKyAgdHJlZSB2ZWNfZGVzdCA9IHZlY3RfY3JlYXRlX2Rlc3Rp bmF0aW9uX3ZhciAoc2NhbGFyX2Rlc3QsIHZlY3R5cGUpOw0KPiArICBhdXRv X3ZlYzx0cmVlPiB2ZWNfb3BybmRzOw0KPiArICB0cmVlIHByZWhlYWRlciA9 IFBISV9BUkdfREVGX0ZST01fRURHRSAocGhpLCBsb29wX3ByZWhlYWRlcl9l ZGdlIChsb29wKSk7DQo+ICsgIHRyZWUgbGF0Y2ggPSBQSElfQVJHX0RFRl9G Uk9NX0VER0UgKHBoaSwgbG9vcF9sYXRjaF9lZGdlIChsb29wKSk7DQo+ICsg IGdpbXBsZV9zZXEgc3RtdHMgPSBOVUxMOw0KPiArDQo+ICsgIHRyZWUgdmVj X2luaXQgPSBidWlsZF92ZWN0b3JfZnJvbV92YWwgKHZlY3R5cGUsIHByZWhl YWRlcik7DQo+ICsgIHZlY19pbml0ID0gdmVjdF9pbml0X3ZlY3RvciAobG9v cF92aW5mbywgc3RtdF9pbmZvLA0KPiArICAgICAgICB2ZWNfaW5pdCwgdmVj dHlwZSwgTlVMTCk7DQo+ICsgIHZlY3RfZ2V0X3ZlY19kZWZzIChsb29wX3Zp bmZvLCBzdG10X2luZm8sIHNscF9ub2RlLA0KPiArICAgICAgIXNscF9ub2Rl ID8gdmVjdF9nZXRfbnVtX2NvcGllcyAobG9vcF92aW5mbywgdmVjdHlwZSkg OiAxLA0KPiArICAgICAgZ2ltcGxlX3BoaV9hcmdfZGVmIChzdG10X2luZm8t PnN0bXQsIDApLCAmdmVjX29wcm5kcyk7DQo+ICsgIC8qIENyZWF0ZSB0aGUg dmVjdG9yaXplZCBmaXJzdC1vcmRlciBQSEkgbm9kZS4gICovDQo+ICsgIGdw aGkgKm5ld19waGkgPSBjcmVhdGVfcGhpX25vZGUgKHZlY19kZXN0LCBiYik7 DQo+ICsgIGFkZF9waGlfYXJnIChuZXdfcGhpLCB2ZWNfb3BybmRzWzBdLCBs b29wX2xhdGNoX2VkZ2UgKGxvb3ApLA0KPiArICAgICAgICBVTktOT1dOX0xP Q0FUSU9OKTsNCj4gKyAgYWRkX3BoaV9hcmcgKG5ld19waGksIHZlY19pbml0 LCBsb29wX3ByZWhlYWRlcl9lZGdlIChsb29wKSwgVU5LTk9XTl9MT0NBVElP Tik7DQo+ICsgIGlmIChzbHBfbm9kZSkNCj4gKyAgICBTTFBfVFJFRV9WRUNf U1RNVFMgKHNscF9ub2RlKS5xdWlja19wdXNoIChuZXdfcGhpKTsNCj4gKyAg ZWxzZQ0KPiArICAgIFNUTVRfVklORk9fVkVDX1NUTVRTIChzdG10X2luZm8p LnNhZmVfcHVzaCAobmV3X3BoaSk7DQo+ICsgIGlmICghc2xwX25vZGUpDQo+ ICsgICAgKnZlY19zdG10ID0gU1RNVF9WSU5GT19WRUNfU1RNVFMgKHN0bXRf aW5mbylbMF07DQo+ICsgIHJldHVybiB0cnVlOw0KPiArfQ0KPiArDQo+ICAv KiBSZXR1cm4gdHJ1ZSBpZiBWRUNUWVBFIHJlcHJlc2VudHMgYSB2ZWN0b3Ig dGhhdCByZXF1aXJlcyBsb3dlcmluZw0KPiAgICAgYnkgdGhlIHZlY3RvciBs b3dlcmluZyBwYXNzLiAgKi8NCj4gIA0KPiBAQCAtMTA0NzYsNiArMTA2NDcs MjYgQEAgdXBkYXRlX2VwaWxvZ3VlX2xvb3BfdmluZm8gKGNsYXNzIGxvb3Ag KmVwaWxvZ3VlLCB0cmVlIGFkdmFuY2UpDQo+ICAgIGVwaWxvZ3VlX3ZpbmZv LT5zaGFyZWQtPnNhdmVfZGF0YXJlZnMgKCk7DQo+ICB9DQo+ICANCj4gKy8q IFJldHVybiB0cnVlIGlmIHRoZSBzdG10IGlzIHRoZSBmaXJzdCBzdGF0ZW1l bnQgdGhhdCB1c2VzIHRoZSByZXN1bHQNCj4gKyAgIG9mIGEgZmlyc3Qtb3Jk ZXIgcmVjdXJyZW5jZSBwaGkgbm9kZS4gICovDQo+ICsNCj4gK3N0YXRpYyBn cGhpICoNCj4gK3ZlY3RfdXNlX2ZpcnN0X29yZGVyX3BoaV9yZXN1bHRfcCAo YXV0b192ZWM8Z3BoaSAqPiAmZmlyc3Rfb3JkZXJfcGhpX3ZlYywNCj4gKyAg ICBnaW1wbGUgKnN0bXQpDQo+ICt7DQo+ICsgIGZvciAodW5zaWduZWQgaW50 IGkgPSAwOyBpIDwgZmlyc3Rfb3JkZXJfcGhpX3ZlYy5sZW5ndGggKCk7ICsr aSkNCj4gKyAgICB7DQo+ICsgICAgICBpbW1fdXNlX2l0ZXJhdG9yIGltbTsN Cj4gKyAgICAgIGdwaGkgKnBoaSA9IGZpcnN0X29yZGVyX3BoaV92ZWNbaV07 DQo+ICsgICAgICB0cmVlIHBoaV9yZXN1bHQgPSBQSElfUkVTVUxUIChwaGkp Ow0KPiArICAgICAgZ2ltcGxlICpmaXJzdF91c2UgPSBmaXJzdF9pbW1fdXNl X3N0bXQgKCZpbW0sIHBoaV9yZXN1bHQpOw0KPiArICAgICAgaWYgKGZpcnN0 X3VzZSAmJiBmaXJzdF91c2UgPT0gc3RtdCkNCj4gKyByZXR1cm4gcGhpOw0K PiArICAgIH0NCj4gKw0KPiArICByZXR1cm4gTlVMTDsNCj4gK30NCj4gKw0K PiAgLyogRnVuY3Rpb24gdmVjdF90cmFuc2Zvcm1fbG9vcC4NCj4gIA0KPiAg ICAgVGhlIGFuYWx5c2lzIHBoYXNlIGhhcyBkZXRlcm1pbmVkIHRoYXQgdGhl IGxvb3AgaXMgdmVjdG9yaXphYmxlLg0KPiBAQCAtMTA2MjQsNiArMTA4MTUs MzEgQEAgdmVjdF90cmFuc2Zvcm1fbG9vcCAobG9vcF92ZWNfaW5mbyBsb29w X3ZpbmZvLCBnaW1wbGUgKmxvb3BfdmVjdG9yaXplZF9jYWxsKQ0KPiAgICAg ICAgYmFzaWNfYmxvY2sgYmIgPSBiYnNbaV07DQo+ICAgICAgICBzdG10X3Zl Y19pbmZvIHN0bXRfaW5mbzsNCj4gIA0KPiArICAgICAgLyogSXQncyB1c2Vk IHRvIHNhdmUgdGhlIGZpcnN0LW9yZGVyIHJlY3VycmVuY2UgcGhpIG5vZGUu DQo+ICsgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGNhc2U6DQo+ ICsgICAgICAgICAjIHRfMTkgPSBQSEkgPF80KDYpLCAwKDUpPg0KPiArICAg ICAgICAgLi4uDQo+ICsgICAgICAgICBfNCA9ICpfMzsNCj4gKyAgICAgICAg IC4uLg0KPiArICAgICAgICAgXzYgPSBfNCAtIHRfMTk7DQo+ICsgICAgICAg ICANCj4gKyAgICAgICAgIFRoZSB2ZWN0b3JpemF0aW9uIHNlcXVlbmNlIHNo b3VsZCBiZToNCj4gKyAgICAgICAgIDEuIFZlY3Rvcml6ZSBfNCA9ICpfMzsN Cj4gKyAgICAgICAgIDIuIFZlY3Rvcml6ZSAjIHRfMTkgPSBQSEkgPF80KDYp LCAwKDUpPg0KPiArICAgICAgICAgMywgVmVjdG9yaXplIF82ID0gXzQgLSB0 XzE5Ow0KPiArICAgICAgICAgDQo+ICsgICAgICAgICBGbG93Og0KPiArICAg ICAgICAgMS4gU28gd2Ugc2F2ZSB0aGUgZmlyc3Qtb3JkZXIgcmVjdXJyZW5j ZSBQSEkgaW4gZmlyc3Rfb3JkZXJfcGhpX3ZlYw0KPiArICAgICBhbmQgc2tp cCB2ZWN0b3JpemluZyBpdCB0ZW50YXRpdmVseSB3aGVuIGl0ZXJhdGluZyBw aGkgc3RhdGVtZW50IA0KPiArICAgICAoc2F2ZSB0XzE5ID0gUEhJIDxfNCg2 KSwgMCg1KT4pLg0KPiArICAgICAgICAgMi4gVmVjdG9yaXplIGFsbCBzdGF0 ZW1lbnRzIHdoZW4gaXRlcmF0aW5nIGFsbCBzdGF0ZW1lbnRzDQo+ICsgICAg ICAgICAgICB1bnRpbCB3ZSByZWFjaCB0aGUgc3RhdGVtZW50IHdobyBpcyB1 c2luZyB0aGUgcmVzdWx0IG9mDQo+ICsgICAgICAgICAgICBmaXJzdC1vcmRl ciByZWN1cnJlbmNlIFBISSAodmVjdG9yaXplIF80ID0gKl8zOykuDQo+ICsg ICAgICAgICAzLiBTdG9wIGl0ZXJhdGluZyBhbmQgcmV0dXJuIHRvIHZlY3Rv cml6ZSB0aGUgUEhJIHNhdmVkDQo+ICsgICAgIGluIGZpcnN0X29yZGVyX3Bo aV92ZWMgKCMgdF8xOSA9IFBISSA8XzQoNiksIDAoNSk+KS4NCj4gKyAgICAg ICAgIDQuIENvbmludHVlIGl0ZXJhdGluZyBhbmQgdmVjdG9yaXplIHRoZSBy ZXNpZHVhbCBzdGF0ZW1lbnRzLiAgKi8NCj4gKyAgICAgIGF1dG9fdmVjPGdw aGkgKj4gZmlyc3Rfb3JkZXJfcGhpX3ZlYzsNCj4gKw0KPiAgICAgICAgZm9y IChncGhpX2l0ZXJhdG9yIHNpID0gZ3NpX3N0YXJ0X3BoaXMgKGJiKTsgIWdz aV9lbmRfcCAoc2kpOw0KPiAgICAgZ3NpX25leHQgKCZzaSkpDQo+ICB7DQo+ IEBAIC0xMDY3Nyw5ICsxMDg5MywxNiBAQCB2ZWN0X3RyYW5zZm9ybV9sb29w IChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIGdpbXBsZSAqbG9vcF92ZWN0 b3JpemVkX2NhbGwpDQo+ICAgICAgICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQ RSAoc3RtdF9pbmZvKSA9PSB2ZWN0X3JlZHVjdGlvbl9kZWYNCj4gICAgICAg ICB8fCBTVE1UX1ZJTkZPX0RFRl9UWVBFIChzdG10X2luZm8pID09IHZlY3Rf ZG91YmxlX3JlZHVjdGlvbl9kZWYNCj4gICAgICAgICB8fCBTVE1UX1ZJTkZP X0RFRl9UWVBFIChzdG10X2luZm8pID09IHZlY3RfbmVzdGVkX2N5Y2xlDQo+ IC0gICAgICAgIHx8IFNUTVRfVklORk9fREVGX1RZUEUgKHN0bXRfaW5mbykg PT0gdmVjdF9pbnRlcm5hbF9kZWYpDQo+ICsgICAgICAgIHx8IFNUTVRfVklO Rk9fREVGX1RZUEUgKHN0bXRfaW5mbykgPT0gdmVjdF9pbnRlcm5hbF9kZWYN Cj4gKyAgICAgICAgfHwgU1RNVF9WSU5GT19ERUZfVFlQRSAoc3RtdF9pbmZv KSA9PSB2ZWN0X2ZpcnN0X29yZGVyX3JlY3VycmVuY2UpDQo+ICAgICAgICAm JiAhIFBVUkVfU0xQX1NUTVQgKHN0bXRfaW5mbykpDQo+ICAgICAgbWF5YmVf c2V0X3ZlY3Rvcml6ZWRfYmFja2VkZ2VfdmFsdWUgKGxvb3BfdmluZm8sIHN0 bXRfaW5mbyk7DQo+ICsNCj4gKyAgIGlmIChTVE1UX1ZJTkZPX0RFRl9UWVBF IChzdG10X2luZm8pID09IHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZSkN Cj4gKyAgICAgew0KPiArICAgICAgIGZpcnN0X29yZGVyX3BoaV92ZWMuc2Fm ZV9wdXNoIChwaGkpOw0KPiArICAgICAgIGNvbnRpbnVlOw0KPiArICAgICB9 DQo+ICB9DQo+ICANCj4gICAgICAgIGZvciAoZ2ltcGxlX3N0bXRfaXRlcmF0 b3Igc2kgPSBnc2lfc3RhcnRfYmIgKGJiKTsNCj4gQEAgLTEwNjk4LDYgKzEw OTIxLDE4IEBAIHZlY3RfdHJhbnNmb3JtX2xvb3AgKGxvb3BfdmVjX2luZm8g bG9vcF92aW5mbywgZ2ltcGxlICpsb29wX3ZlY3Rvcml6ZWRfY2FsbCkNCj4g ICAgICAgIC8qIElnbm9yZSB2ZWN0b3Igc3RtdHMgY3JlYXRlZCBpbiB0aGUg b3V0ZXIgbG9vcC4gICovDQo+ICAgICAgICBzdG10X2luZm8gPSBsb29wX3Zp bmZvLT5sb29rdXBfc3RtdCAoc3RtdCk7DQo+ICANCj4gKyAgICAgICBncGhp ICpmaXJzdF9vcmRlcl9waGkNCj4gKyA9IHZlY3RfdXNlX2ZpcnN0X29yZGVy X3BoaV9yZXN1bHRfcCAoZmlyc3Rfb3JkZXJfcGhpX3ZlYywgc3RtdCk7DQo+ ICsgICAgICAgaWYgKGZpcnN0X29yZGVyX3BoaSkNCj4gKyB7DQo+ICsgICBz dG10X3ZlY19pbmZvIGZpcnN0X29yZGVyX3N0bXRfaW5mbw0KPiArICAgICA9 IGxvb3BfdmluZm8tPmxvb2t1cF9zdG10IChmaXJzdF9vcmRlcl9waGkpOw0K PiArICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgZmlyc3Rfb3JkZXJfc2kNCj4g KyAgICAgPSBnc2lfZm9yX3N0bXQgKGZpcnN0X29yZGVyX3BoaSk7DQo+ICsg ICB2ZWN0X3RyYW5zZm9ybV9sb29wX3N0bXQgKGxvb3BfdmluZm8sIGZpcnN0 X29yZGVyX3N0bXRfaW5mbywNCj4gKyAgICAgJmZpcnN0X29yZGVyX3NpLCBO VUxMKTsNCj4gKyB9DQo+ICsNCj4gICAgICAgIC8qIHZlY3RvciBzdG10cyBj cmVhdGVkIGluIHRoZSBvdXRlci1sb29wIGR1cmluZyB2ZWN0b3JpemF0aW9u IG9mDQo+ICBzdG10cyBpbiBhbiBpbm5lci1sb29wIG1heSBub3QgaGF2ZSBh IHN0bXRfaW5mbywgYW5kIGRvIG5vdA0KPiAgbmVlZCB0byBiZSB2ZWN0b3Jp emVkLiAgKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qtc3RtdHMu Y2MgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+IGluZGV4IGM4ZDFlZmM0 NWU1Li5hOGMwYThhNDE1MSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVj dC1zdG10cy5jYw0KPiArKysgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+ IEBAIC0xMTQwNCw2ICsxMTQwNCwxMiBAQCB2ZWN0X3RyYW5zZm9ybV9zdG10 ICh2ZWNfaW5mbyAqdmluZm8sDQo+ICAgICAgICBnY2NfYXNzZXJ0IChkb25l KTsNCj4gICAgICAgIGJyZWFrOw0KPiAgDQo+ICsgICAgY2FzZSBkZXBfcGhp X2luZm9fdHlwZToNCj4gKyAgICAgIGRvbmUgPSB2ZWN0b3JpemFibGVfZGVw X3BoaSAoYXNfYSA8bG9vcF92ZWNfaW5mbz4gKHZpbmZvKSwNCj4gKyAgIHN0 bXRfaW5mbywgJnZlY19zdG10LCBzbHBfbm9kZSk7DQo+ICsgICAgICBnY2Nf YXNzZXJ0IChkb25lKTsNCj4gKyAgICAgIGJyZWFrOw0KPiArDQo+ICAgICAg Y2FzZSBwaGlfaW5mb190eXBlOg0KPiAgICAgICAgZG9uZSA9IHZlY3Rvcml6 YWJsZV9waGkgKHZpbmZvLCBzdG10X2luZm8sICZ2ZWNfc3RtdCwgc2xwX25v ZGUsIE5VTEwpOw0KPiAgICAgICAgZ2NjX2Fzc2VydCAoZG9uZSk7DQo+IEBA IC0xMTgwNCw2ICsxMTgxMCw5IEBAIHZlY3RfaXNfc2ltcGxlX3VzZSAodHJl ZSBvcGVyYW5kLCB2ZWNfaW5mbyAqdmluZm8sIGVudW0gdmVjdF9kZWZfdHlw ZSAqZHQsDQo+ICBjYXNlIHZlY3RfbmVzdGVkX2N5Y2xlOg0KPiAgICBkdW1w X3ByaW50ZiAoTVNHX05PVEUsICJuZXN0ZWQgY3ljbGVcbiIpOw0KPiAgICBi cmVhazsNCj4gKyBjYXNlIHZlY3RfZmlyc3Rfb3JkZXJfcmVjdXJyZW5jZToN Cj4gKyAgIGR1bXBfcHJpbnRmIChNU0dfTk9URSwgImZpcnN0IG9yZGVyIHJl Y3VycmVuY2VcbiIpOw0KPiArICAgYnJlYWs7DQo+ICBjYXNlIHZlY3RfdW5r bm93bl9kZWZfdHlwZToNCj4gICAgZHVtcF9wcmludGYgKE1TR19OT1RFLCAi dW5rbm93blxuIik7DQo+ICAgIGJyZWFrOw0KPiBAQCAtMTE4NTIsNyArMTE4 NjEsOCBAQCB2ZWN0X2lzX3NpbXBsZV91c2UgKHRyZWUgb3BlcmFuZCwgdmVj X2luZm8gKnZpbmZvLCBlbnVtIHZlY3RfZGVmX3R5cGUgKmR0LA0KPiAgICAg ICAgfHwgKmR0ID09IHZlY3RfaW5kdWN0aW9uX2RlZg0KPiAgICAgICAgfHwg KmR0ID09IHZlY3RfcmVkdWN0aW9uX2RlZg0KPiAgICAgICAgfHwgKmR0ID09 IHZlY3RfZG91YmxlX3JlZHVjdGlvbl9kZWYNCj4gLSAgICAgIHx8ICpkdCA9 PSB2ZWN0X25lc3RlZF9jeWNsZSkNCj4gKyAgICAgIHx8ICpkdCA9PSB2ZWN0 X25lc3RlZF9jeWNsZQ0KPiArIHx8ICpkdCA9PSB2ZWN0X2ZpcnN0X29yZGVy X3JlY3VycmVuY2UpDQo+ICAgICAgew0KPiAgICAgICAgKnZlY3R5cGUgPSBT VE1UX1ZJTkZPX1ZFQ1RZUEUgKGRlZl9zdG10X2luZm8pOw0KPiAgICAgICAg Z2NjX2Fzc2VydCAoKnZlY3R5cGUgIT0gTlVMTF9UUkVFKTsNCj4gZGlmZiAt LWdpdCBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaCBiL2djYy90cmVlLXZlY3Rv cml6ZXIuaA0KPiBpbmRleCA0ODcwYzc1NDQ5OS4uMmM4ZTc2NjBiNGUgMTAw NjQ0DQo+IC0tLSBhL2djYy90cmVlLXZlY3Rvcml6ZXIuaA0KPiArKysgYi9n Y2MvdHJlZS12ZWN0b3JpemVyLmgNCj4gQEAgLTY1LDYgKzY1LDcgQEAgZW51 bSB2ZWN0X2RlZl90eXBlIHsNCj4gICAgdmVjdF9yZWR1Y3Rpb25fZGVmLA0K PiAgICB2ZWN0X2RvdWJsZV9yZWR1Y3Rpb25fZGVmLA0KPiAgICB2ZWN0X25l c3RlZF9jeWNsZSwNCj4gKyAgdmVjdF9maXJzdF9vcmRlcl9yZWN1cnJlbmNl LA0KPiAgICB2ZWN0X3Vua25vd25fZGVmX3R5cGUNCj4gIH07DQo+ICANCj4g QEAgLTEwMjcsNiArMTAyOCw3IEBAIGVudW0gc3RtdF92ZWNfaW5mb190eXBl IHsNCj4gICAgY3ljbGVfcGhpX2luZm9fdHlwZSwNCj4gICAgbGNfcGhpX2lu Zm9fdHlwZSwNCj4gICAgcGhpX2luZm9fdHlwZSwNCj4gKyAgZGVwX3BoaV9p bmZvX3R5cGUsDQo+ICAgIGxvb3BfZXhpdF9jdHJsX3ZlY19pbmZvX3R5cGUN Cj4gIH07DQo+ICANCj4gQEAgLTIzMzEsNiArMjMzMyw4IEBAIGV4dGVybiBi b29sIHZlY3Rvcml6YWJsZV9sY19waGkgKGxvb3BfdmVjX2luZm8sIHN0bXRf dmVjX2luZm8sDQo+ICBnaW1wbGUgKiosIHNscF90cmVlKTsNCj4gIGV4dGVy biBib29sIHZlY3Rvcml6YWJsZV9waGkgKHZlY19pbmZvICosIHN0bXRfdmVj X2luZm8sIGdpbXBsZSAqKiwgc2xwX3RyZWUsDQo+ICAgICAgICBzdG10X3Zl Y3Rvcl9mb3JfY29zdCAqKTsNCj4gK2V4dGVybiBib29sIHZlY3Rvcml6YWJs ZV9kZXBfcGhpIChsb29wX3ZlY19pbmZvLCBzdG10X3ZlY19pbmZvLA0KPiAr IGdpbXBsZSAqKiwgc2xwX3RyZWUpOw0KPiAgZXh0ZXJuIGJvb2wgdmVjdF9l bXVsYXRlZF92ZWN0b3JfcCAodHJlZSk7DQo+ICBleHRlcm4gYm9vbCB2ZWN0 X2Nhbl92ZWN0b3JpemVfd2l0aG91dF9zaW1kX3AgKHRyZWVfY29kZSk7DQo+ ICBleHRlcm4gYm9vbCB2ZWN0X2Nhbl92ZWN0b3JpemVfd2l0aG91dF9zaW1k X3AgKGNvZGVfaGVscGVyKTsNCiANCg== ------=_001_NextPart501884458026_=------