From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbguseast3.qq.com (smtpbguseast3.qq.com [54.243.244.52]) by sourceware.org (Postfix) with ESMTPS id 235CE3858D3C for ; Thu, 15 Jun 2023 08:56:24 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 235CE3858D3C 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: bizesmtp66t1686819360tesnn9vm Received: from LAPTOP-EPITNQBU ( [58.60.1.5]) by bizesmtp.qq.com (ESMTP) with id ; Thu, 15 Jun 2023 16:55:59 +0800 (CST) X-QQ-SSF: 01400000000000G0S000000A0000000 X-QQ-FEAT: W+onFc5Tw4PdFW2Vwpd6QC3qZDYYRKvmQcoZw9Ms1XLo5mIVu3jVyZlxZAjuq n5OKubmr3UXQkd37hACerck/NuFd66FiMVFb0VTAqvZasReXX5EjdOsAPsGC34Fyr6zAxa1 v9Lxox4f0DDOg0iG5+nSOvSifyo3KnzUbJvesVGrkIAohZjVsiOWE6MjMbYogV72x4BvBeh Z2gSeFHM6ByiBaF79FZtqgJkQOHlRYWF+DMAyc6HkVKP+AJatNrAFXUP/oHTv9h16qRDtxU VHljfHcW4RnlRO9hETTlZbeFKdwsiWpnGUgKlm2pAv7Kuef5bEuYmxilXBnvYG9k2PvtDg/ B5umuFPvPM1KDoZroWl4h2Zh4p1ft95FGpuytQLY9tKOLIF/ctm/Lex8K46WKj2ujkqIxGE PT7g8Qn9mt+yP8h0rzpjfUqpGK4xB9NJZnq9J0azEdI= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 9588371915918288073 Date: Thu, 15 Jun 2023 16:56:00 +0800 From: "juzhe.zhong@rivai.ai" To: rguenther Cc: gcc-patches , richard.sandiford , krebbel , uweigand Subject: Re: Re: [PATCH V2] VECT: Support LEN_MASK_ LOAD/STORE to support flow control for length loop control References: <20230612041438.272885-1-juzhe.zhong@rivai.ai>, , <2023061516473052116877@rivai.ai> X-Priority: 3 X-GUID: B04522D1-5231-430E-B1C6-0F3A4F5B9D36 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <6F6B55621F15A797+2023061516555993244079@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart467588631354_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-11.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,T_KAM_HTML_FONT_INVALID,T_SCC_BODY_TEXT_LINE 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_NextPart467588631354_=---- Content-Type: text/plain; charset="ISO-8859-1" Content-Transfer-Encoding: base64 Pj4gSSBkb24ndCBrbm93IEJJQVMgd2VsbCBhbmQgSXQgc2VlbXMgdG8gYmUg YSBQb3dlciB0YXJnZXQgZGVwZW5kZW50IGZlYXR1cmUuDQo+PkkgdGhpbmsg bGVuX21hc2tfKiBpbiBnZW5lcmFsIHNob3VsZCBvbmx5IG5lZWQgbGVuZ2h0 IGFuZCBtYXNrIG9wZXJhbmQuDQo+PkFjdHVhbGx5LCB0aGUgZnVuY3Rpb24g YXJndW1lbnQgaXMgdG90YWxseSBzYW1lIGFzIHZwX2xvYWQvdnBfc3RvcmUg aW4gTExWTS4NCg0KPj5Db3VsZCBJIGp1c3Qga2VlcCBjdXJyZW50IGZvcm1h dCAod2l0aG91dCBCSUFTIGFyZ3VtZW50KT8gQW5kIGV4dGVuZCBpdCB3aXRo IEJJQVMgaWYNCj4+UG93ZXJQQyB3YW50IHRvIHVzZSBMRU5fTUFTS18gKiAN Cg0KT2gsIHNvcnJ5LiBGb3JnZXQgYWJvdXQgdGhpcyBpbmZvcm1hdGlvbi4g SSB3aWxsIGFkZCBCSUFTIGFyZ3VtZW50IHRvby4NClRoYW5rcyBmb3IgY29t bWVudHMuDQpXaWxsIHNlbmQgc3BsaXR0ZWQgcGF0Y2ggd2l0aCBvbmx5IElG TiBhbmQgb3B0YWIgcGF0Y2ggZm9yIHJldmlldy4NCg0KVGhhbmtzIGEgbG90 Lg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBqdXpoZS56 aG9uZ0ByaXZhaS5haQ0KRGF0ZTogMjAyMy0wNi0xNSAxNjo0Nw0KVG86IHJn dWVudGhlcg0KQ0M6IGdjYy1wYXRjaGVzOyByaWNoYXJkLnNhbmRpZm9yZDsg a3JlYmJlbDsgdXdlaWdhbmQNClN1YmplY3Q6IFJlOiBSZTogW1BBVENIIFYy XSBWRUNUOiBTdXBwb3J0IExFTl9NQVNLXyBMT0FEL1NUT1JFIHRvIHN1cHBv cnQgZmxvdyBjb250cm9sIGZvciBsZW5ndGggbG9vcCBjb250cm9sDQpIaSwg UmljaGFyZC4NCg0KVGhhbmtzIGZvciBjb21tZW50cy4NCg0KPj5DYW4geW91 IHRyeSB1c2luZyB0aGUgc2FtZSB3b3JkaW5nIGZvciBsZW5ndGggYW5kIG1h c2sgb3BlcmFuZHMNCj4+YXMgZm9yIGxlbl9sb2FkIGFuZCBtYXNrbG9hZD8g IEFsc28gbGVuX2xvYWQgaGFzIHRoZSAiYmlhcyINCj4+b3BlcmFuZCB3aGlj aCB5b3Ugb21pdCBoZXJlIC0gSUlSQyB0aGF0IHdhcyBhZGRlZCBmb3IgczM5 MCB3aGljaA0KPj5mb3IgdW5rbm93biByZWFzb24gYmVoYXZlcyBhIGxpdHRs ZSBkaWZmZXJlbnQgdGhhbiBwb3dlci4gIElmDQo+PmxlbiBzdXBwb3J0IGZv ciBzMzkwIGV2ZXIgZXh0ZW5kcyB0byBvdGhlciBvcHMgb3IgcG93ZXIgb3Ig czM5MA0KPj5nYWluIG1hc2sgc3VwcG9ydCBmb3IgY29uZGl0aW9uYWwgY29k ZSB3ZSdkIGxpa2VseSBoYXZlIHRvIGFkanVzdA0KPj5lYWNoIG9wdGFiIHlv dSBhZGQuICBNYXliZSBpdCdzIGJldHRlciB0byBhZGQgdGhlIGJpYXMgb3Bl cmFuZA0KPj5ub3cuDQoNCkkgZG9uJ3Qga25vdyBCSUFTIHdlbGwgYW5kIEl0 IHNlZW1zIHRvIGJlIGEgUG93ZXIgdGFyZ2V0IGRlcGVuZGVudCBmZWF0dXJl Lg0KSSB0aGluayBsZW5fbWFza18qIGluIGdlbmVyYWwgc2hvdWxkIG9ubHkg bmVlZCBsZW5naHQgYW5kIG1hc2sgb3BlcmFuZC4NCkFjdHVhbGx5LCB0aGUg ZnVuY3Rpb24gYXJndW1lbnQgaXMgdG90YWxseSBzYW1lIGFzIHZwX2xvYWQv dnBfc3RvcmUgaW4gTExWTS4NCg0KQ291bGQgSSBqdXN0IGtlZXAgY3VycmVu dCBmb3JtYXQgKHdpdGhvdXQgQklBUyBhcmd1bWVudCk/IEFuZCBleHRlbmQg aXQgd2l0aCBCSUFTIGlmDQpQb3dlclBDIHdhbnQgdG8gdXNlIExFTl9NQVNL XyAqID8NCg0KDQo+PiBDYW4geW91IHBsZWFzZSBzcGxpdCB0aGUgcGF0Y2g/ ICBIYXZlIDEvbiBhZGQgdGhlIG9wdGFiIGFuZCBpZm4NCj4+cGx1cyBhZGp1 c3QgdGhlIGdlbmVyaWMgaWZuIHByZWRpY2F0ZXMuICBIYXZlIDIvbiBhZGp1 c3QgdGhlIHZlY3Rvcml6ZXINCj4+cGFydHMgYW5kIDMvbiBvcHRpb25hbCB0 aGluZ3Mgc3VjaCBhcyBEU0UuDQpPay4NCg0KPj5DYW4geW91IGluc3RlYWQg YWRkIGEgbGVuX3AgYXJndW1lbnQgdG8gdGhlIGZ1bmN0aW9uIGFuZCBkbw0K DQo+PiAgICBpZiAobGVuX3ApDQo+PiAgICAgIGNoZWNrIGxlbiBpcyBmdWxs DQo+PiAgICBpZiAobWFza19wKQ0KPj4gICAgICBjaGVjayBtYXNrIGlzIGZ1 bGwNCg0KPj4/DQoNCg0KPj5Vc2UgaW50ZXJuYWxfZm5fc3RvcmVkX3ZhbHVl X2luZGV4IGFuZCBpbnRlcm5hbF9mbl9tYXNrX2luZGV4LA0KPj5wb3NzaWJs eSBhZGQgaW50ZXJuYWxfZm5fbGVuX2luZGV4Pw0KDQo+PndoeSBkZXZpYXRl IGZyb20gY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCBhbmQgbm90IHBhc3Mg aW4gdGhlDQo+Pm1hc2tfbW9kZT8gIEluIGZhY3QgSSB3b25kZXIgd2h5IHRo aXMgZnVuY3Rpb24gZGlmZmVycyBmcm9tDQo+PmNhbl92ZWNfbWFza19sb2Fk X3N0b3JlX3AgYmVzaWRlcyB1c2luZyBvdGhlciBvcHRhYnM/ICBDb3VsZG4n dA0KPj53ZSBzaW1wbHkgYWRkIGEgYm9vbCB3aXRoX2xlbiBhcmd1bWVudCB0 byBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wPw0KDQo+PkJ1dCBpZi1jb252 ZXJzaW9uIG9ubHkgbmVlZHMgdGhlIGNvbmRpdGlvbmFsIG1hc2tpbmcsIG5v dCBfbGVuLiAgSQ0KPj5kb24ndCB0aGluayB3ZSBuZWVkIHRvIGNoZWNrIHRo aXMgYXQgYWxsPyAgSW4gZmFjdA0KPj5jYW5fdmVjX21hc2tfbG9hZF9zdG9y ZV9wIHNob3VsZCBwcm9iYWJseSByZXR1cm4gdHJ1ZSB3aGVuDQo+PkxFTl9N QVNLTE9BRCBpcyBhdmFpbGFibGUgc2luY2Ugd2UgY2FuIGFsd2F5cyB1c2Ug dGhlIGZ1bGwgdmVjdG9yDQo+PmxlbiBhcyBsZW4gYXJndW1lbnQ/ICBUaGUg c3VnZ2VzdGVkIGJvb2wgYXJndW1lbnQgd2l0aF9sZW4NCj4+Y291bGQgYWxz byBiZWNvbWUgYW4gZW51bSB7IFdJVEhfTEVOLCBXSVRIT1VUX0xFTiwgRUlU SEVSIH0sDQo+PmJ1dCBub3Qgc3VyZSBpZiB0aGF0J3MgcmVhbGx5IG5lY2Vz c2FyeS4NCg0KT2suDQoNCg0KPj5BcmUgeW91IGdvaW5nIHRvIHByb3ZpZGUg bGVuX2xvYWQsIG1hc2tsb2FkIGFuZCBsZW5fbWFza2xvYWQNCj4+cGF0dGVy bnMgb3IganVzdCBsZW5fbWFza2xvYWQ/ICAoSSBob3BlIHRoZSBsYXN0KQ0K DQpJIGp1c3Qgd2FudCB0byBvbmx5IGVuYWJsZSBsZW5fbWFza2xvYWQgaW4g UklTQy1WIHBvcnQgKG5vIGxlbl9sb2FkIG9yIG1hc2tfbG9hZCkNCkFzIEkg c2FpZCBpbiBjb21taXQgbG9nLCANCg0KZm9yIChpbnQgaT0gMDsgaSA8IG47 IGkrKykNCiAgYVtpXSA9IGFbaV0gKyBiW2ldOw0KDQpoYXMgbGVuZ3RoIG5v IG1hc2sgPT0gPiBsZW5fbWFza2xvYWQvbGVuX21hc2tzdG9yZSAoIGxlbmd0 aCwgbWFzayA9IHsxLDEsMSwxLDEsMSwxLC4uLi4ufSkNCg0KZm9yIChpbnQg aT0gMDsgaSA8IDQ7IGkrKykNCiAgaWYgKGNvbmRbaV0pDQogIGFbaV0gPSBh W2ldICsgYltpXTsNCg0Kbm8gbGVuZ3RoIGhhcyBtYXNrID09ID4gbGVuX21h c2tsb2FkL2xlbl9tYXNrc3RvcmUgKCBsZW5ndGggPSB2ZiwgbWFzayA9IGNv bXBhcmlzb24pDQoNCg0KPj4gY29tbW9uIHdpdGggSUZOX01BU0tfU1RPUkUg YnkgdXNpbmcgaW50ZXJuYWxfZm5fc3RvcmVkX3ZhbHVlX2luZGV4DQpPay4N Cg0KPj4gaW50ZXJuYWxfZm5fc3RvcmVkX3ZhbHVlX2luZGV4DQpvaw0KDQo+ PiBUaGF0J3MgdG9vIHNpbXBsZSwgdGhlIGNvZGUgdXNpbmcgdGhlIGluZm8g aXMgbm90IHByZXBhcmVkIGZvcg0KPj4gTEVOX01BU0sgc2luY2UgaXQgaGFu ZGxlcyBtYXNrbG9hZCBhbmQgbGVuX2xvYWQgc2VwYXJhdGVseS4NCj4+IEkg c3VnZ2VzdCB0byBkcm9wIHRoaXMsIHBpY2tpbmcgaXQgdXAgc2VwYXJhdGVs eS4NCm9rDQoNCj4+IEkgdGhpbmsgeW91IG5lZWQgdG8gdmVyaWZ5IHRoZSBs ZW5ndGggb3BlcmFuZCBpcyB0aGUgZnVsbCB2ZWN0b3IsIG5vdGUNCj4+IHRo aXMgaXMgZm9yIGlmLWNvbnZlcnNpb24gd2hpY2ggY291bGQgY2FyZSBsZXNz IGZvciBfTEVOLCBidXQgaWYgd2UNCj4+IGluc2lzdCBvbiB1c2luZyBfTEVO IChJIGRpZG4ndCBzZWUgeW91IGNoYW5naW5nIGlmLWNvbnZlcnNpb24gdGhh dA0KPj4gd2F5PyEpIHRoZW4gd2UgbmVlZCB0byBwdXQgaW4gc29tZSB2YWx1 ZSBldmVuIGZvciB0aGUgInNjYWxhciINCj4+IHBsYWNlaG9sZGVyLiAgSSdk IHN1Z2dlc3QgdG8gc2ltcGx5IHVzZSBJRk5fTUFTS197TE9BRCxTVE9SRX0g aW4NCj4+IGlmLWNvbnZlcnNpb24gYnV0IHZlY3Rvcml6ZSB0aGF0IGFzIExF Tl8gd2l0aCBmdWxsIGxlbmd0aCBpZg0KPj4gcGxhaW4gTUFTS19MT0FEL1NU T1JFIGlzbid0IGF2YWlsYWJsZS4gIFdoaWNoIG1lYW5zIHRoZXNlIGNoYW5n ZXMNCj4+IGFyZSBub3QgbmVjZXNzYXJ5IGF0IGFsbC4NCg0Kb2sNCg0KPj5h cyB3aXRoIGNhbl9tYXNrXyogd2UgZG9uJ3QgcmVhbGx5IGNhcmUgaWYgbWFz a2luZyBpcyBzdXBwb3J0ZWQgb3INCj4+bm90IHNvIEkgc3VnZ2VzdCB0byBh bWVuZCBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSB0byBhbHNvIGNoZWNrIHRo ZQ0KPj5sZW5fbWFza3tsb2FkLHN0b3JlfSBvcHRhYnM/ICBHaXZlbiB0aGF0 IHRoZSBmdW5jdGlvbg0KPj5zaG91bGQgcG9zc2libHkgcmV0dXJuIHRoZSBj b3JyZXNwb25kaW5nIElGTiBhcyB3ZWxsLg0Kb2sNCg0KPj51c2UgdGhlIHBy b3BlciBpZm4gaW5kZXggY29tcHV0ZSBmbg0Kb2sNCg0KPj5zbyB0aGlzIGFu c3dlcnMgbXkgcXVlc3Rpb24gLSB5b3UganVzdCBoYXZlIGxlbl9tYXNre2xv YWQsc3RvcmV9Pw0KWWVzLg0KDQoNCj4+SSB0aGluayB3ZSByZWFsbHkgd2Fu dCB0byBjb21tb24gdGhpcyBzb21laG93LCBoYXZpbmcNCj4+aWYgKGxvb3Bf bGVucykgZG8gdGhlIGZpbmFsX2xlbiBjb21wdXRlIGFuZCB0aGVuIGFmdGVy d2FyZHMNCj4+c2VsZWN0IHRoZSBJRk4gdG8gY3JlYXRlLCBmaWxsaW5nIHJl cXVpcmVkIGRlZmF1bHQgYXJncyBvZg0KPj5maW5hbF9tYXNrIGFuZCBmaW5h bF9sZW4gaWYgbm90IGNvbXB1dGVkLg0Kb2suDQoNCj4+YW5kIHNwbGl0IHRo aXMgb3V0IHRvIGEgaGVscGVyIGZ1bmN0aW9uDQpvay4NCg0KDQoNCg0KanV6 aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206IFJpY2hhcmQgQmllbmVyDQpE YXRlOiAyMDIzLTA2LTE1IDE2OjA2DQpUbzogSnUtWmhlIFpob25nDQpDQzog Z2NjLXBhdGNoZXM7IHJpY2hhcmQuc2FuZGlmb3JkOyBrcmViYmVsOyB1d2Vp Z2FuZA0KU3ViamVjdDogUmU6IFtQQVRDSCBWMl0gVkVDVDogU3VwcG9ydCBM RU5fTUFTS18gTE9BRC9TVE9SRSB0byBzdXBwb3J0IGZsb3cgY29udHJvbCBm b3IgbGVuZ3RoIGxvb3AgY29udHJvbA0KT24gTW9uLCAxMiBKdW4gMjAyMywg anV6aGUuemhvbmdAcml2YWkuYWkgd3JvdGU6DQogDQo+IEZyb206IEp1LVpo ZSBaaG9uZyA8anV6aGUuemhvbmdAcml2YWkuYWk+DQo+IA0KPiBUYXJnZXQg bGlrZSBBUk0gU1ZFIGluIEdDQyBoYXMgYW4gZWxlZ2FudCB3YXkgdG8gaGFu ZGxlIGJvdGggbG9vcCBjb250cm9sDQo+IGFuZCBmbG93IGNvbnRyb2wgc2lt dWx0YW5lb3VzbHk6DQo+IA0KPiBsb29wX2NvbnRyb2xfbWFzayA9IFdISUxF X1VMVA0KPiBmbG93X2NvbnRyb2xfbWFzayA9IGNvbXBhcmlzb24NCj4gY29u dHJvbF9tYXNrID0gbG9vcF9jb250cm9sX21hc2sgJiBmbG93X2NvbnRyb2xf bWFzazsNCj4gTUFTS19MT0FEIChjb250cm9sX21hc2spDQo+IE1BU0tfU1RP UkUgKGNvbnRyb2xfbWFzaykNCj4gDQo+IEhvd2V2ZXIsIHRhcmdldHMgbGlr ZSBSVlYgKFJJU0MtViBWZWN0b3IpIGNhbiBub3QgdXNlIHRoaXMgYXBwcm9h Y2ggaW4NCj4gYXV0by12ZWN0b3JpemF0aW9uIHNpbmNlIFJWViB1c2UgbGVu Z3RoIGluIGxvb3AgY29udHJvbC4NCj4gDQo+IFRoaXMgcGF0Y2ggYWRkcyBM RU5fTUFTS18gTE9BRC9TVE9SRSB0byBzdXBwb3J0IGZsb3cgY29udHJvbCBm b3IgdGFyZ2V0cw0KPiBsaWtlIFJJU0MtViB0aGF0IHVzZXMgbGVuZ3RoIGlu IGxvb3AgY29udHJvbC4NCj4gTm9ybWFsaXplIGxvYWQvc3RvcmUgaW50byBM RU5fTUFTS18gTE9BRC9TVE9SRSBhcyBsb25nIGFzIGVpdGhlciBsZW5ndGgN Cj4gb3IgbWFzayBpcyB2YWxpZC4gTGVuZ3RoIGlzIHRoZSBvdXRjb21lIG9m IFNFTEVDVF9WTCBvciBNSU5fRVhQUi4NCj4gTWFzayBpcyB0aGUgb3V0Y29t ZSBvZiBjb21wYXJpc29uLg0KPiANCj4gTEVOX01BU0tfIExPQUQvU1RPUkUg Zm9ybWF0IGlzIGRlZmluZWQgYXMgZm9sbG93czoNCj4gMSkuIExFTl9NQVNL X0xPQUQgKHB0ciwgYWxpZ24sIGxlbmd0aCwgbWFzaykuDQo+IDIpLiBMRU5f TUFTS19TVE9SRSAocHRyLCBhbGlnbiwgbGVuZ3RoLCBtYXNrLCB2ZWMpLg0K PiANCj4gQ29uc2lkZXIgdGhlc2UgNCBmb2xsb3dpbmcgY2FzZXM6DQo+IA0K PiBWTEE6IFZhcmlhYmxlLWxlbmd0aCBhdXRvLXZlY3Rvcml6YXRpb24NCj4g VkxTOiBTcGVjaWZpYy1sZW5ndGggYXV0by12ZWN0b3JpemF0aW9uDQo+IA0K PiBDYXNlIDEgKFZMUyk6IC1tcnZ2LXZlY3Rvci1iaXRzPTEyOCAgIElSIChE b2VzIG5vdCB1c2UgTEVOX01BU0tfKik6DQo+IENvZGU6IHYxID0gTUVNICgu Li4pDQo+ICAgZm9yIChpbnQgaSA9IDA7IGkgPCA0OyBpKyspICAgICAgICAg ICB2MiA9IE1FTSAoLi4uKQ0KPiAgICAgYVtpXSA9IGJbaV0gKyBjW2ldOyAg ICAgICAgICAgICAgICAgdjMgPSB2MSArIHYyIA0KPiAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgTUVNWy4uLl0gPSB2Mw0KPiAN Cj4gQ2FzZSAyIChWTFMpOiAtbXJ2di12ZWN0b3ItYml0cz0xMjggICBJUiAo TEVOX01BU0tfKiB3aXRoIGxlbmd0aCA9IFZGLCBtYXNrID0gY29tcGFyaXNv bik6DQo+IENvZGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBtYXNrID0gY29tcGFyaXNvbg0KPiAgIGZvciAoaW50IGkgPSAwOyBpIDwg NDsgaSsrKSAgICAgICAgICAgdjEgPSBMRU5fTUFTS19MT0FEIChsZW5ndGgg PSBWRiwgbWFzaykNCj4gICAgIGlmIChjb25kW2ldKSAgICAgICAgICAgICAg ICAgICAgICAgIHYyID0gTEVOX01BU0tfTE9BRCAobGVuZ3RoID0gVkYsIG1h c2spIA0KPiAgICAgICBhW2ldID0gYltpXSArIGNbaV07ICAgICAgICAgICAg ICAgdjMgPSB2MSArIHYyDQo+ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBMRU5fTUFTS19TVE9SRSAobGVuZ3RoID0gVkYsIG1h c2ssIHYzKQ0KPiAgICAgICAgICAgIA0KPiBDYXNlIDMgKFZMQSk6DQo+IENv ZGU6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb29wX2xl biA9IFNFTEVDVF9WTCBvciBNSU4NCj4gICBmb3IgKGludCBpID0gMDsgaSA8 IG47IGkrKykgICAgICAgICAgIHYxID0gTEVOX01BU0tfTE9BRCAobGVuZ3Ro ID0gbG9vcF9sZW4sIG1hc2sgPSB7LTEsLTEsLi4ufSkNCj4gICAgICAgYVtp XSA9IGJbaV0gKyBjW2ldOyAgICAgICAgICAgICAgIHYyID0gTEVOX01BU0tf TE9BRCAobGVuZ3RoID0gbG9vcF9sZW4sIG1hc2sgPSB7LTEsLTEsLi4ufSkN Cj4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHYz ID0gdjEgKyB2MiAgICAgICAgICAgICAgICAgICAgICAgICAgICANCj4gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExFTl9NQVNL X1NUT1JFIChsZW5ndGggPSBsb29wX2xlbiwgbWFzayA9IHstMSwtMSwuLi59 LCB2MykNCj4gDQo+IENhc2UgNCAoVkxBKToNCj4gQ29kZTogICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxvb3BfbGVuID0gU0VMRUNUX1ZM IG9yIE1JTg0KPiAgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgaSsrKSAgICAg ICAgICAgbWFzayA9IGNvbXBhcmlzb24NCj4gICAgICAgaWYgKGNvbmRbaV0p ICAgICAgICAgICAgICAgICAgICAgIHYxID0gTEVOX01BU0tfTE9BRCAobGVu Z3RoID0gbG9vcF9sZW4sIG1hc2spDQo+ICAgICAgIGFbaV0gPSBiW2ldICsg Y1tpXTsgICAgICAgICAgICAgICB2MiA9IExFTl9NQVNLX0xPQUQgKGxlbmd0 aCA9IGxvb3BfbGVuLCBtYXNrKQ0KPiAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgdjMgPSB2MSArIHYyICAgICAgICAgICAgICAg ICAgICAgICAgICAgIA0KPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgTEVOX01BU0tfU1RPUkUgKGxlbmd0aCA9IGxvb3BfbGVu LCBtYXNrLCB2MykNCj4gDQo+IE1vcmUgZmVhdHVyZXM6DQo+IDEuIFN1cHBv cnQgc2ltcGxpZnkgZ2ltcGxlIGZvbGQgZm9yIExFTl9NQVNLXyBMT0FEL1NU T1JFOg0KPiAgICBMRU5fTUFTS19TVE9SRSAobGVuZ3RoID0gdmYsIG1hc2sg PSB7LTEsLTEsLi4ufSwgdikgPT09PiBNRU0gWy4uLl0gPSBWDQo+IDIuIEFs bG93IERTRSBmb3IgTEVOX01BU0tfKiBMT0FEL1NUT1JFLg0KPiANCj4gQm9v dHN0cmFwICYmIFJlZ3Jlc3Npb24gb24gWDg2IHdpdGggbm8gc3VycHJpc2Ug ZGlmZmVyZW5jZS4NCiANCkNhbiB5b3UgcGxlYXNlIHNwbGl0IHRoZSBwYXRj aD8gIEhhdmUgMS9uIGFkZCB0aGUgb3B0YWIgYW5kIGlmbg0KcGx1cyBhZGp1 c3QgdGhlIGdlbmVyaWMgaWZuIHByZWRpY2F0ZXMuICBIYXZlIDIvbiBhZGp1 c3QgdGhlIHZlY3Rvcml6ZXINCnBhcnRzIGFuZCAzL24gb3B0aW9uYWwgdGhp bmdzIHN1Y2ggYXMgRFNFLg0KIA0KU29tZSBjb21tZW50cyBiZWxvdy4NCiAN Cj4gZ2NjL0NoYW5nZUxvZzoNCj4gDQo+ICAgICAgICAgKiBkb2MvbWQudGV4 aTogQWRkIExFTl9NQVNLXyBMT0FEL1NUT1JFLg0KPiAgICAgICAgICogZ2Vu b3Bpbml0LmNjIChtYWluKTogRGl0dG8uDQo+ICAgICAgICAgKENNUF9OQU1F KTogRGl0dG8uDQo+ICAgICAgICAgKiBnaW1wbGUtZm9sZC5jYyAoYXJpdGhf b3ZlcmZsb3dlZF9wKTogRGl0dG8uDQo+ICAgICAgICAgKGdpbXBsZV9mb2xk X3BhcnRpYWxfbG9hZF9zdG9yZV9tZW1fcmVmKTogRGl0dG8uDQo+ICAgICAg ICAgKGdpbXBsZV9mb2xkX3BhcnRpYWxfc3RvcmUpOiBEaXR0by4NCj4gICAg ICAgICAoZ2ltcGxlX2ZvbGRfY2FsbCk6IERpdHRvLg0KPiAgICAgICAgICog aW50ZXJuYWwtZm4uY2MgKGxlbl9tYXNrbG9hZF9kaXJlY3QpOiBEaXR0by4N Cj4gICAgICAgICAobGVuX21hc2tzdG9yZV9kaXJlY3QpOiBEaXR0by4NCj4g ICAgICAgICAoZXhwYW5kX3BhcnRpYWxfbG9hZF9vcHRhYl9mbik6IERpdHRv Lg0KPiAgICAgICAgIChleHBhbmRfbGVuX21hc2tsb2FkX29wdGFiX2ZuKTog RGl0dG8uDQo+ICAgICAgICAgKGV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFi X2ZuKTogRGl0dG8uDQo+ICAgICAgICAgKGV4cGFuZF9sZW5fbWFza3N0b3Jl X29wdGFiX2ZuKTogRGl0dG8uDQo+ICAgICAgICAgKGRpcmVjdF9sZW5fbWFz a2xvYWRfb3B0YWJfc3VwcG9ydGVkX3ApOiBEaXR0by4NCj4gICAgICAgICAo ZGlyZWN0X2xlbl9tYXNrc3RvcmVfb3B0YWJfc3VwcG9ydGVkX3ApOiBEaXR0 by4NCj4gICAgICAgICAoaW50ZXJuYWxfbG9hZF9mbl9wKTogRGl0dG8uDQo+ ICAgICAgICAgKGludGVybmFsX3N0b3JlX2ZuX3ApOiBEaXR0by4NCj4gICAg ICAgICAoaW50ZXJuYWxfZm5fbWFza19pbmRleCk6IERpdHRvLg0KPiAgICAg ICAgIChpbnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXgpOiBEaXR0by4N Cj4gICAgICAgICAqIGludGVybmFsLWZuLmRlZiAoTEVOX01BU0tfTE9BRCk6 IERpdHRvLg0KPiAgICAgICAgIChMRU5fTUFTS19TVE9SRSk6IERpdHRvLg0K PiAgICAgICAgICogb3B0YWJzLXF1ZXJ5LmNjIChjYW5fdmVjX2xlbl9tYXNr X2xvYWRfc3RvcmVfcCk6IERpdHRvLg0KPiAgICAgICAgICogb3B0YWJzLXF1 ZXJ5LmggKGNhbl92ZWNfbGVuX21hc2tfbG9hZF9zdG9yZV9wKTogRGl0dG8u DQo+ICAgICAgICAgKiBvcHRhYnMuZGVmIChPUFRBQl9DRCk6IERpdHRvLg0K PiAgICAgICAgICogdHJlZS1kYXRhLXJlZi5jYyAoZ2V0X3JlZmVyZW5jZXNf aW5fc3RtdCk6IERpdHRvLg0KPiAgICAgICAgICogdHJlZS1pZi1jb252LmNj IChpZmN2dF9jYW5fdXNlX21hc2tfbG9hZF9zdG9yZSk6IERpdHRvLg0KPiAg ICAgICAgICogdHJlZS1zc2EtYWxpYXMuY2MgKHJlZl9tYXliZV91c2VkX2J5 X2NhbGxfcF8xKTogRGl0dG8uDQo+ICAgICAgICAgKGNhbGxfbWF5X2Nsb2Ji ZXJfcmVmX3BfMSk6IERpdHRvLg0KPiAgICAgICAgICogdHJlZS1zc2EtZHNl LmNjIChpbml0aWFsaXplX2FvX3JlZl9mb3JfZHNlKTogRGl0dG8uDQo+ICAg ICAgICAgKGRzZV9vcHRpbWl6ZV9zdG10KTogRGl0dG8uDQo+ICAgICAgICAg KiB0cmVlLXNzYS1sb29wLWl2b3B0cy5jYyAoZ2V0X21lbV90eXBlX2Zvcl9p bnRlcm5hbF9mbik6IERpdHRvLg0KPiAgICAgICAgIChnZXRfYWxpYXNfcHRy X3R5cGVfZm9yX3B0cl9hZGRyZXNzKTogRGl0dG8uDQo+ICAgICAgICAgKiB0 cmVlLXNzYS1zY2N2bi5jYyAodm5fcmVmZXJlbmNlX2xvb2t1cF8zKTogRGl0 dG8uDQo+ICAgICAgICAgKiB0cmVlLXZlY3QtZGF0YS1yZWZzLmNjIChjYW5f Z3JvdXBfc3RtdHNfcCk6IERpdHRvLg0KPiAgICAgICAgICh2ZWN0X2ZpbmRf c3RtdF9kYXRhX3JlZmVyZW5jZSk6IERpdHRvLg0KPiAgICAgICAgICh2ZWN0 X3N1cHBvcnRhYmxlX2RyX2FsaWdubWVudCk6IERpdHRvLg0KPiAgICAgICAg ICogdHJlZS12ZWN0LWxvb3AuY2MgKHZlY3RfdmVyaWZ5X2xvb3BfbGVucyk6 IERpdHRvLg0KPiAgICAgICAgIChvcHRpbWl6ZV9tYXNrX3N0b3Jlcyk6IERp dHRvLg0KPiAgICAgICAgICogdHJlZS12ZWN0LXNscC5jYyAodmVjdF9nZXRf b3BlcmFuZF9tYXApOiBEaXR0by4NCj4gICAgICAgICAodmVjdF9idWlsZF9z bHBfdHJlZV8yKTogRGl0dG8uDQo+ICAgICAgICAgKiB0cmVlLXZlY3Qtc3Rt dHMuY2MgKGNoZWNrX2xvYWRfc3RvcmVfZm9yX3BhcnRpYWxfdmVjdG9ycyk6 IERpdHRvLg0KPiAgICAgICAgICh2ZWN0b3JpemFibGVfc3RvcmUpOiBEaXR0 by4NCj4gICAgICAgICAodmVjdG9yaXphYmxlX2xvYWQpOiBEaXR0by4NCj4g ICAgICAgICAodmVjdF9nZXRfdmVjdG9yX3R5cGVzX2Zvcl9zdG10KTogRGl0 dG8uDQo+ICAgICAgICAgKiB0cmVlLXZlY3Rvcml6ZXIuY2MgKHRyeV92ZWN0 b3JpemVfbG9vcF8xKTogRGl0dG8uDQo+IA0KPiAtLS0NCj4gIGdjYy9kb2Mv bWQudGV4aSAgICAgICAgICAgICB8IDMyICsrKysrKysrKysrKw0KPiAgZ2Nj L2dlbm9waW5pdC5jYyAgICAgICAgICAgIHwgIDYgKystDQo+ICBnY2MvZ2lt cGxlLWZvbGQuY2MgICAgICAgICAgfCAyOCArKysrKysrKy0tLQ0KPiAgZ2Nj L2ludGVybmFsLWZuLmNjICAgICAgICAgIHwgMzcgKysrKysrKysrKysrKy0N Cj4gIGdjYy9pbnRlcm5hbC1mbi5kZWYgICAgICAgICB8ICA0ICsrDQo+ICBn Y2Mvb3B0YWJzLXF1ZXJ5LmNjICAgICAgICAgfCAzOSArKysrKysrKysrKysr KysNCj4gIGdjYy9vcHRhYnMtcXVlcnkuaCAgICAgICAgICB8ICAxICsNCj4g IGdjYy9vcHRhYnMuZGVmICAgICAgICAgICAgICB8ICAyICsNCj4gIGdjYy90 cmVlLWRhdGEtcmVmLmNjICAgICAgICB8ICA0ICsrDQo+ICBnY2MvdHJlZS1p Zi1jb252LmNjICAgICAgICAgfCAgMyArKw0KPiAgZ2NjL3RyZWUtc3NhLWFs aWFzLmNjICAgICAgIHwgIDMgKysNCj4gIGdjYy90cmVlLXNzYS1kc2UuY2Mg ICAgICAgICB8IDEyICsrKysrDQo+ICBnY2MvdHJlZS1zc2EtbG9vcC1pdm9w dHMuY2MgfCAgOCArKysNCj4gIGdjYy90cmVlLXNzYS1zY2N2bi5jYyAgICAg ICB8ICA2ICsrKw0KPiAgZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MgIHwg MjAgKysrKystLS0NCj4gIGdjYy90cmVlLXZlY3QtbG9vcC5jYyAgICAgICB8 IDUyICsrKysrKysrKysrLS0tLS0tLS0NCj4gIGdjYy90cmVlLXZlY3Qtc2xw LmNjICAgICAgICB8ICA1ICsrDQo+ICBnY2MvdHJlZS12ZWN0LXN0bXRzLmNj ICAgICAgfCA5OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysr LS0tDQo+ICBnY2MvdHJlZS12ZWN0b3JpemVyLmNjICAgICAgfCAgMiArDQo+ ICAxOSBmaWxlcyBjaGFuZ2VkLCAzMjAgaW5zZXJ0aW9ucygrKSwgNDMgZGVs ZXRpb25zKC0pDQo+IA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9tZC50ZXhp IGIvZ2NjL2RvYy9tZC50ZXhpDQo+IGluZGV4IDk1ZjdmZTFmODAyLi5mYzk5 OTkwNDY1ZCAxMDA2NDQNCj4gLS0tIGEvZ2NjL2RvYy9tZC50ZXhpDQo+ICsr KyBiL2djYy9kb2MvbWQudGV4aQ0KPiBAQCAtNTEzNiw2ICs1MTM2LDM4IEBA IG9mIEBjb2Rle1FJfSBlbGVtZW50cy4NCj4gIA0KPiAgVGhpcyBwYXR0ZXJu IGlzIG5vdCBhbGxvd2VkIHRvIEBjb2Rle0ZBSUx9Lg0KPiAgDQo+ICtAY2lu ZGV4IEBjb2Rle2xlbl9tYXNrbG9hZEB2YXJ7bX1AdmFye259fSBpbnN0cnVj dGlvbiBwYXR0ZXJuDQo+ICtAaXRlbSBAc2FtcHtsZW5fbWFza2xvYWRAdmFy e219QHZhcntufX0NCj4gK1BlcmZvcm0gYSBsb2FkIG9mIHZlY3RvciB3aGlj aCBpcyBwcmVkaWNhdGVkIGJ5IGxlbmd0aCBhbmQgbWFzaw0KPiArZnJvbSBt ZW1vcnkgb3BlcmFuZCAxIG9mIG1vZGUgQHZhcnttfSBpbnRvIHJlZ2lzdGVy IG9wZXJhbmQgMC4NCj4gK0xlbmd0aCBpcyBwcm92aWRlZCBpbiBvcGVyYW5k IDIgd2hpY2ggaGFzIHdoaWNoZXZlcg0KPiAraW50ZWdlciBtb2RlIHRoZSB0 YXJnZXQgcHJlZmVycy4NCj4gK01hc2sgaXMgcHJvdmlkZWQgaW4gcmVnaXN0 ZXIgb3BlcmFuZCAzIG9mIG1vZGUgQHZhcntufS4NCj4gKw0KPiArb3BlcmFu ZCAyIGNhbiBiZSBhIHZhcmlhYmxlIG9yIGEgY29uc3RhbnQgYW1vdW50LiBJ dCBjYW4gYmUgdmVjdG9yaXphdGlvbg0KPiArZmFjdG9yIHdoaWNoIGlzIHRo ZSBzcGVjaWFsIGNvbnN0YW50IHZhbHVlIHJlcHJlc2VudHMgdGhlIG1heGlt dW0gbGVuZ3RoLg0KIA0KQ2FuIHlvdSB0cnkgdXNpbmcgdGhlIHNhbWUgd29y ZGluZyBmb3IgbGVuZ3RoIGFuZCBtYXNrIG9wZXJhbmRzDQphcyBmb3IgbGVu X2xvYWQgYW5kIG1hc2tsb2FkPyAgQWxzbyBsZW5fbG9hZCBoYXMgdGhlICJi aWFzIg0Kb3BlcmFuZCB3aGljaCB5b3Ugb21pdCBoZXJlIC0gSUlSQyB0aGF0 IHdhcyBhZGRlZCBmb3IgczM5MCB3aGljaA0KZm9yIHVua25vd24gcmVhc29u IGJlaGF2ZXMgYSBsaXR0bGUgZGlmZmVyZW50IHRoYW4gcG93ZXIuICBJZg0K bGVuIHN1cHBvcnQgZm9yIHMzOTAgZXZlciBleHRlbmRzIHRvIG90aGVyIG9w cyBvciBwb3dlciBvciBzMzkwDQpnYWluIG1hc2sgc3VwcG9ydCBmb3IgY29u ZGl0aW9uYWwgY29kZSB3ZSdkIGxpa2VseSBoYXZlIHRvIGFkanVzdA0KZWFj aCBvcHRhYiB5b3UgYWRkLiAgTWF5YmUgaXQncyBiZXR0ZXIgdG8gYWRkIHRo ZSBiaWFzIG9wZXJhbmQNCm5vdy4NCiANCkFuZHJlYXM/ICBVbGk/DQogDQo+ ICsNCj4gK29wZXJhbmQgMyBjYW4gYmUgYSB2YXJpYWJsZSBvciBhIGNvbnN0 YW50IGFtb3VudC4gSXQgY2FuIGJlIGFsbCAxDQo+ICt3aGljaCBpcyB0aGUg c3BlY2lhbCBjb25zdGFudCB2YWx1ZSByZXByZXNlbnRzIHRoZSBmdWxsIG1h c2suDQo+ICsNCj4gK1RoaXMgcGF0dGVybiBpcyBub3QgYWxsb3dlZCB0byBA Y29kZXtGQUlMfS4NCj4gKw0KPiArQGNpbmRleCBAY29kZXtsZW5fbWFza3N0 b3JlQHZhcnttfUB2YXJ7bn19IGluc3RydWN0aW9uIHBhdHRlcm4NCj4gK0Bp dGVtIEBzYW1we2xlbl9tYXNrc3RvcmVAdmFye219QHZhcntufX0NCj4gK1Bl cmZvcm0gYSBzdG9yZSBvZiB2ZWN0b3Igd2hpY2ggaXMgcHJlZGljYXRlZCBi eSBsZW5ndGggYW5kIG1hc2sNCj4gK2Zyb20gcmVnaXN0ZXIgb3BlcmFuZCAx IG9mIG1vZGUgQHZhcnttfSBpbnRvIG1lbW9yeSBvcGVyYW5kIDAuDQo+ICtM ZW5ndGggaXMgcHJvdmlkZWQgaW4gb3BlcmFuZCAyIHdoaWNoIGhhcyB3aGlj aGV2ZXINCj4gK2ludGVnZXIgbW9kZSB0aGUgdGFyZ2V0IHByZWZlcnMuDQo+ ICtNYXNrIGlzIHByb3ZpZGVkIGluIHJlZ2lzdGVyIG9wZXJhbmQgMyBvZiBt b2RlIEB2YXJ7bn0uDQo+ICsNCj4gK29wZXJhbmQgMiBjYW4gYmUgYSB2YXJp YWJsZSBvciBhIGNvbnN0YW50IGFtb3VudC4gSXQgY2FuIGJlIHZlY3Rvcml6 YXRpb24NCj4gK2ZhY3RvciB3aGljaCBpcyB0aGUgc3BlY2lhbCBjb25zdGFu dCB2YWx1ZSByZXByZXNlbnRzIHRoZSBtYXhpbXVtIGxlbmd0aC4NCj4gKw0K PiArb3BlcmFuZCAzIGNhbiBiZSBhIHZhcmlhYmxlIG9yIGEgY29uc3RhbnQg YW1vdW50LiBJdCBjYW4gYmUgYWxsIDENCj4gK3doaWNoIGlzIHRoZSBzcGVj aWFsIGNvbnN0YW50IHZhbHVlIHJlcHJlc2VudHMgdGhlIGZ1bGwgbWFzay4N Cj4gKw0KPiArVGhpcyBwYXR0ZXJuIGlzIG5vdCBhbGxvd2VkIHRvIEBjb2Rl e0ZBSUx9Lg0KPiArDQo+ICBAY2luZGV4IEBjb2Rle3ZlY19wZXJtQHZhcntt fX0gaW5zdHJ1Y3Rpb24gcGF0dGVybg0KPiAgQGl0ZW0gQHNhbXB7dmVjX3Bl cm1AdmFye219fQ0KPiAgT3V0cHV0IGEgKHZhcmlhYmxlKSB2ZWN0b3IgcGVy bXV0YXRpb24uICBPcGVyYW5kIDAgaXMgdGhlIGRlc3RpbmF0aW9uDQo+IGRp ZmYgLS1naXQgYS9nY2MvZ2Vub3Bpbml0LmNjIGIvZ2NjL2dlbm9waW5pdC5j Yw0KPiBpbmRleCAwYzFiNjg1OWNhMC4uOWFlZWJkNjY3MjQgMTAwNjQ0DQo+ IC0tLSBhL2djYy9nZW5vcGluaXQuY2MNCj4gKysrIGIvZ2NjL2dlbm9waW5p dC5jYw0KPiBAQCAtMzc2LDcgKzM3Niw4IEBAIG1haW4gKGludCBhcmdjLCBj b25zdCBjaGFyICoqYXJndikNCj4gIA0KPiAgICBmcHJpbnRmIChzX2ZpbGUs DQo+ICAgICAiLyogUmV0dXJucyBUUlVFIGlmIHRoZSB0YXJnZXQgc3VwcG9y dHMgYW55IG9mIHRoZSBwYXJ0aWFsIHZlY3RvclxuIg0KPiAtICAgICIgICBv cHRhYnM6IHdoaWxlX3VsdF9vcHRhYiwgbGVuX2xvYWRfb3B0YWIgb3IgbGVu X3N0b3JlX29wdGFiLFxuIg0KPiArICAgICIgICBvcHRhYnM6IHdoaWxlX3Vs dF9vcHRhYiwgbGVuX2xvYWRfb3B0YWIsIGxlbl9zdG9yZV9vcHRhYixcbiIN Cj4gKyAgICAiICAgbGVuX21hc2tsb2FkX29wdGFiIG9yIGxlbl9tYXNrc3Rv cmVfb3B0YWIsXG4iDQo+ICAgICAiICAgZm9yIGFueSBtb2RlLiAgKi9cbiIN Cj4gICAgICJib29sXG5wYXJ0aWFsX3ZlY3RvcnNfc3VwcG9ydGVkX3AgKHZv aWQpXG57XG4iKTsNCj4gICAgYm9vbCBhbnlfbWF0Y2ggPSBmYWxzZTsNCj4g QEAgLTM4Niw3ICszODcsOCBAQCBtYWluIChpbnQgYXJnYywgY29uc3QgY2hh ciAqKmFyZ3YpDQo+ICAgICAgew0KPiAgI2RlZmluZSBDTVBfTkFNRShOKSAh c3RybmNtcCAocC0+bmFtZSwgKE4pLCBzdHJsZW4gKChOKSkpDQo+ICAgICAg ICBpZiAoQ01QX05BTUUoIndoaWxlX3VsdCIpIHx8IENNUF9OQU1FICgibGVu X2xvYWQiKQ0KPiAtICAgfHwgQ01QX05BTUUgKCJsZW5fc3RvcmUiKSkNCj4g KyAgIHx8IENNUF9OQU1FICgibGVuX3N0b3JlIikgfHwgQ01QX05BTUUgKCJs ZW5fbWFza2xvYWQiKQ0KPiArICAgfHwgQ01QX05BTUUgKCJsZW5fbWFza3N0 b3JlIikpDQo+ICB7DQo+ICAgIGlmIChmaXJzdCkNCj4gICAgICBmcHJpbnRm IChzX2ZpbGUsICIgSEFWRV8lcyIsIHAtPm5hbWUpOw0KPiBkaWZmIC0tZ2l0 IGEvZ2NjL2dpbXBsZS1mb2xkLmNjIGIvZ2NjL2dpbXBsZS1mb2xkLmNjDQo+ IGluZGV4IDU4MTU3NWI2NWVjLi5hMmMyYWQ1YmZlNyAxMDA2NDQNCj4gLS0t IGEvZ2NjL2dpbXBsZS1mb2xkLmNjDQo+ICsrKyBiL2djYy9naW1wbGUtZm9s ZC5jYw0KPiBAQCAtNTM3MCw4ICs1MzcwLDggQEAgYXJpdGhfb3ZlcmZsb3dl ZF9wIChlbnVtIHRyZWVfY29kZSBjb2RlLCBjb25zdF90cmVlIHR5cGUsDQo+ ICAgIHJldHVybiB3aTo6bWluX3ByZWNpc2lvbiAod3Jlcywgc2lnbikgPiBU WVBFX1BSRUNJU0lPTiAodHlwZSk7DQo+ICB9DQo+ICANCj4gLS8qIElmIElG Tl97TUFTSyxMRU59X0xPQUQvU1RPUkUgY2FsbCBDQUxMIGlzIHVuY29uZGl0 aW9uYWwsIHJldHVybiBhIE1FTV9SRUYNCj4gLSAgIGZvciB0aGUgbWVtb3J5 IGl0IHJlZmVyZW5jZXMsIG90aGVyd2lzZSByZXR1cm4gbnVsbC4gIFZFQ1RZ UEUgaXMgdGhlDQo+ICsvKiBJZiBJRk5fe01BU0ssTEVOLExFTl9NQVNLfV9M T0FEL1NUT1JFIGNhbGwgQ0FMTCBpcyB1bmNvbmRpdGlvbmFsLCByZXR1cm4g YQ0KPiArICAgTUVNX1JFRiBmb3IgdGhlIG1lbW9yeSBpdCByZWZlcmVuY2Vz LCBvdGhlcndpc2UgcmV0dXJuIG51bGwuICBWRUNUWVBFIGlzIHRoZQ0KPiAg ICAgdHlwZSBvZiB0aGUgbWVtb3J5IHZlY3Rvci4gIE1BU0tfUCBpbmRpY2F0 ZXMgaXQncyBmb3IgTUFTSyBpZiB0cnVlLA0KPiAgICAgb3RoZXJ3aXNlIGl0 J3MgZm9yIExFTi4gICovDQo+ICANCj4gQEAgLTUzODMsNyArNTM4MywyMCBA QCBnaW1wbGVfZm9sZF9wYXJ0aWFsX2xvYWRfc3RvcmVfbWVtX3JlZiAoZ2Nh bGwgKmNhbGwsIHRyZWUgdmVjdHlwZSwgYm9vbCBtYXNrX3ApDQo+ICAgIGlm ICghdHJlZV9maXRzX3Vod2lfcCAoYWxpYXNfYWxpZ24pKQ0KPiAgICAgIHJl dHVybiBOVUxMX1RSRUU7DQo+ICANCj4gLSAgaWYgKG1hc2tfcCkNCj4gKyAg aWYgKGdpbXBsZV9jYWxsX2ludGVybmFsX2ZuIChjYWxsKSA9PSBJRk5fTEVO X01BU0tfTE9BRA0KPiArICAgICAgfHwgZ2ltcGxlX2NhbGxfaW50ZXJuYWxf Zm4gKGNhbGwpID09IElGTl9MRU5fTUFTS19TVE9SRSkNCj4gKyAgICB7DQog DQpDYW4geW91IGluc3RlYWQgYWRkIGEgbGVuX3AgYXJndW1lbnQgdG8gdGhl IGZ1bmN0aW9uIGFuZCBkbw0KIA0KICAgIGlmIChsZW5fcCkNCiAgICAgIGNo ZWNrIGxlbiBpcyBmdWxsDQogICAgaWYgKG1hc2tfcCkNCiAgICAgIGNoZWNr IG1hc2sgaXMgZnVsbA0KIA0KPw0KIA0KPiArICAgICAgdHJlZSBiYXNpY19s ZW4gPSBnaW1wbGVfY2FsbF9hcmcgKGNhbGwsIDIpOw0KPiArICAgICAgaWYg KCFwb2x5X2ludF90cmVlX3AgKGJhc2ljX2xlbikpDQo+ICsgcmV0dXJuIE5V TExfVFJFRTsNCj4gKyAgICAgIGlmIChtYXliZV9uZSAodHJlZV90b19wb2x5 X3VpbnQ2NCAoYmFzaWNfbGVuKSwNCj4gKyAgICAgVFlQRV9WRUNUT1JfU1VC UEFSVFMgKHZlY3R5cGUpKSkNCj4gKyByZXR1cm4gTlVMTF9UUkVFOw0KPiAr ICAgICAgdHJlZSBtYXNrID0gZ2ltcGxlX2NhbGxfYXJnIChjYWxsLCAzKTsN Cj4gKyAgICAgIGlmICghaW50ZWdlcl9hbGxfb25lc3AgKG1hc2spKQ0KPiAr IHJldHVybiBOVUxMX1RSRUU7DQo+ICsgICAgfQ0KPiArICBlbHNlIGlmICht YXNrX3ApDQo+ICAgICAgew0KPiAgICAgICAgdHJlZSBtYXNrID0gZ2ltcGxl X2NhbGxfYXJnIChjYWxsLCAyKTsNCj4gICAgICAgIGlmICghaW50ZWdlcl9h bGxfb25lc3AgKG1hc2spKQ0KPiBAQCAtNTQwOSw3ICs1NDIyLDcgQEAgZ2lt cGxlX2ZvbGRfcGFydGlhbF9sb2FkX3N0b3JlX21lbV9yZWYgKGdjYWxsICpj YWxsLCB0cmVlIHZlY3R5cGUsIGJvb2wgbWFza19wKQ0KPiAgICByZXR1cm4g Zm9sZF9idWlsZDIgKE1FTV9SRUYsIHZlY3R5cGUsIHB0ciwgb2Zmc2V0KTsN Cj4gIH0NCj4gIA0KPiAtLyogVHJ5IHRvIGZvbGQgSUZOX3tNQVNLLExFTn1f TE9BRCBjYWxsIENBTEwuICBSZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLg0KPiAr LyogVHJ5IHRvIGZvbGQgSUZOX3tNQVNLLExFTixMRU5fTUFTS31fTE9BRCBj YWxsIENBTEwuICBSZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLg0KPiAgICAgTUFT S19QIGluZGljYXRlcyBpdCdzIGZvciBNQVNLIGlmIHRydWUsIG90aGVyd2lz ZSBpdCdzIGZvciBMRU4uICAqLw0KPiAgDQo+ICBzdGF0aWMgYm9vbA0KPiBA QCAtNTQzMSwxNCArNTQ0NCwxNSBAQCBnaW1wbGVfZm9sZF9wYXJ0aWFsX2xv YWQgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGdjYWxsICpjYWxsLCBi b29sIG1hc2tfcCkNCj4gICAgcmV0dXJuIGZhbHNlOw0KPiAgfQ0KPiAgDQo+ IC0vKiBUcnkgdG8gZm9sZCBJRk5fe01BU0ssTEVOfV9TVE9SRSBjYWxsIENB TEwuICBSZXR1cm4gdHJ1ZSBvbiBzdWNjZXNzLg0KPiArLyogVHJ5IHRvIGZv bGQgSUZOX3tNQVNLLExFTixMRU5fTUFTS31fU1RPUkUgY2FsbCBDQUxMLiAg UmV0dXJuIHRydWUgb24gc3VjY2Vzcy4NCj4gICAgIE1BU0tfUCBpbmRpY2F0 ZXMgaXQncyBmb3IgTUFTSyBpZiB0cnVlLCBvdGhlcndpc2UgaXQncyBmb3Ig TEVOLiAgKi8NCj4gIA0KPiAgc3RhdGljIGJvb2wNCj4gIGdpbXBsZV9mb2xk X3BhcnRpYWxfc3RvcmUgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGdj YWxsICpjYWxsLA0KPiAgICAgYm9vbCBtYXNrX3ApDQo+ICB7DQo+IC0gIHRy ZWUgcmhzID0gZ2ltcGxlX2NhbGxfYXJnIChjYWxsLCAzKTsNCj4gKyAgdHJl ZSByaHMgPSBnaW1wbGVfY2FsbF9hcmcgKA0KPiArICAgIGNhbGwsIGdpbXBs ZV9jYWxsX2ludGVybmFsX2ZuIChjYWxsKSA9PSBJRk5fTEVOX01BU0tfU1RP UkUgPyA0IDogMyk7DQogDQpVc2UgaW50ZXJuYWxfZm5fc3RvcmVkX3ZhbHVl X2luZGV4IGFuZCBpbnRlcm5hbF9mbl9tYXNrX2luZGV4LA0KcG9zc2libHkg YWRkIGludGVybmFsX2ZuX2xlbl9pbmRleD8NCiANCj4gICAgaWYgKHRyZWUg bGhzDQo+ICAgICAgICA9IGdpbXBsZV9mb2xkX3BhcnRpYWxfbG9hZF9zdG9y ZV9tZW1fcmVmIChjYWxsLCBUUkVFX1RZUEUgKHJocyksIG1hc2tfcCkpDQo+ ICAgICAgew0KPiBAQCAtNTY1OSw5ICs1NjczLDExIEBAIGdpbXBsZV9mb2xk X2NhbGwgKGdpbXBsZV9zdG10X2l0ZXJhdG9yICpnc2ksIGJvb2wgaW5wbGFj ZSkNCj4gICAgY3BseF9yZXN1bHQgPSB0cnVlOw0KPiAgICBicmVhazsNCj4g IGNhc2UgSUZOX01BU0tfTE9BRDoNCj4gKyBjYXNlIElGTl9MRU5fTUFTS19M T0FEOg0KPiAgICBjaGFuZ2VkIHw9IGdpbXBsZV9mb2xkX3BhcnRpYWxfbG9h ZCAoZ3NpLCBzdG10LCB0cnVlKTsNCj4gICAgYnJlYWs7DQo+ICBjYXNlIElG Tl9NQVNLX1NUT1JFOg0KPiArIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JFOg0K PiAgICBjaGFuZ2VkIHw9IGdpbXBsZV9mb2xkX3BhcnRpYWxfc3RvcmUgKGdz aSwgc3RtdCwgdHJ1ZSk7DQo+ICAgIGJyZWFrOw0KPiAgY2FzZSBJRk5fTEVO X0xPQUQ6DQo+IGRpZmYgLS1naXQgYS9nY2MvaW50ZXJuYWwtZm4uY2MgYi9n Y2MvaW50ZXJuYWwtZm4uY2MNCj4gaW5kZXggZGE5Yjk0NGRkNWQuLjRhOWZl Mzg4ZWVkIDEwMDY0NA0KPiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uY2MNCj4g KysrIGIvZ2NjL2ludGVybmFsLWZuLmNjDQo+IEBAIC0xNjUsNiArMTY1LDcg QEAgaW5pdF9pbnRlcm5hbF9mbnMgKCkNCj4gICNkZWZpbmUgbWFza19sb2Fk X2xhbmVzX2RpcmVjdCB7IC0xLCAtMSwgZmFsc2UgfQ0KPiAgI2RlZmluZSBn YXRoZXJfbG9hZF9kaXJlY3QgeyAzLCAxLCBmYWxzZSB9DQo+ICAjZGVmaW5l IGxlbl9sb2FkX2RpcmVjdCB7IC0xLCAtMSwgZmFsc2UgfQ0KPiArI2RlZmlu ZSBsZW5fbWFza2xvYWRfZGlyZWN0IHsgLTEsIDMsIGZhbHNlIH0NCj4gICNk ZWZpbmUgbWFza19zdG9yZV9kaXJlY3QgeyAzLCAyLCBmYWxzZSB9DQo+ICAj ZGVmaW5lIHN0b3JlX2xhbmVzX2RpcmVjdCB7IDAsIDAsIGZhbHNlIH0NCj4g ICNkZWZpbmUgbWFza19zdG9yZV9sYW5lc19kaXJlY3QgeyAwLCAwLCBmYWxz ZSB9DQo+IEBAIC0xNzIsNiArMTczLDcgQEAgaW5pdF9pbnRlcm5hbF9mbnMg KCkNCj4gICNkZWZpbmUgdmVjX2NvbmRfZGlyZWN0IHsgMiwgMCwgZmFsc2Ug fQ0KPiAgI2RlZmluZSBzY2F0dGVyX3N0b3JlX2RpcmVjdCB7IDMsIDEsIGZh bHNlIH0NCj4gICNkZWZpbmUgbGVuX3N0b3JlX2RpcmVjdCB7IDMsIDMsIGZh bHNlIH0NCj4gKyNkZWZpbmUgbGVuX21hc2tzdG9yZV9kaXJlY3QgeyA0LCAz LCBmYWxzZSB9DQo+ICAjZGVmaW5lIHZlY19zZXRfZGlyZWN0IHsgMywgMywg ZmFsc2UgfQ0KPiAgI2RlZmluZSB1bmFyeV9kaXJlY3QgeyAwLCAwLCB0cnVl IH0NCj4gICNkZWZpbmUgdW5hcnlfY29udmVydF9kaXJlY3QgeyAtMSwgMCwg dHJ1ZSB9DQo+IEBAIC0yODc1LDYgKzI4NzcsMTcgQEAgZXhwYW5kX3BhcnRp YWxfbG9hZF9vcHRhYl9mbiAoaW50ZXJuYWxfZm4sIGdjYWxsICpzdG10LCBj b252ZXJ0X29wdGFiIG9wdGFiKQ0KPiAgICAgICAgY3JlYXRlX2lucHV0X29w ZXJhbmQgKCZvcHNbM10sIGJpYXMsIFFJbW9kZSk7DQo+ICAgICAgICBleHBh bmRfaW5zbiAoaWNvZGUsIDQsIG9wcyk7DQo+ICAgICAgfQ0KPiArICBlbHNl IGlmIChvcHRhYiA9PSBsZW5fbWFza2xvYWRfb3B0YWIpDQo+ICsgICAgew0K PiArICAgICAgY3JlYXRlX2NvbnZlcnRfb3BlcmFuZF9mcm9tICgmb3BzWzJd LCBtYXNrLCBUWVBFX01PREUgKFRSRUVfVFlQRSAobWFza3QpKSwNCj4gKyAg ICBUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKG1hc2t0KSkpOw0KPiArICAg ICAgbWFza3QgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDMpOw0KPiArICAg ICAgbWFzayA9IGV4cGFuZF9ub3JtYWwgKG1hc2t0KTsNCj4gKyAgICAgIGNy ZWF0ZV9pbnB1dF9vcGVyYW5kICgmb3BzWzNdLCBtYXNrLCBUWVBFX01PREUg KFRSRUVfVFlQRSAobWFza3QpKSk7DQo+ICsgICAgICBpY29kZSA9IGNvbnZl cnRfb3B0YWJfaGFuZGxlciAob3B0YWIsIFRZUEVfTU9ERSAodHlwZSksDQo+ ICsgICAgICBUWVBFX01PREUgKFRSRUVfVFlQRSAobWFza3QpKSk7DQo+ICsg ICAgICBleHBhbmRfaW5zbiAoaWNvZGUsIDQsIG9wcyk7DQo+ICsgICAgfQ0K PiAgICBlbHNlDQo+ICAgICAgew0KPiAgICAgICAgY3JlYXRlX2lucHV0X29w ZXJhbmQgKCZvcHNbMl0sIG1hc2ssIFRZUEVfTU9ERSAoVFJFRV9UWVBFICht YXNrdCkpKTsNCj4gQEAgLTI4ODgsNiArMjkwMSw3IEBAIGV4cGFuZF9wYXJ0 aWFsX2xvYWRfb3B0YWJfZm4gKGludGVybmFsX2ZuLCBnY2FsbCAqc3RtdCwg Y29udmVydF9vcHRhYiBvcHRhYikNCj4gICNkZWZpbmUgZXhwYW5kX21hc2tf bG9hZF9vcHRhYl9mbiBleHBhbmRfcGFydGlhbF9sb2FkX29wdGFiX2ZuDQo+ ICAjZGVmaW5lIGV4cGFuZF9tYXNrX2xvYWRfbGFuZXNfb3B0YWJfZm4gZXhw YW5kX21hc2tfbG9hZF9vcHRhYl9mbg0KPiAgI2RlZmluZSBleHBhbmRfbGVu X2xvYWRfb3B0YWJfZm4gZXhwYW5kX3BhcnRpYWxfbG9hZF9vcHRhYl9mbg0K PiArI2RlZmluZSBleHBhbmRfbGVuX21hc2tsb2FkX29wdGFiX2ZuIGV4cGFu ZF9wYXJ0aWFsX2xvYWRfb3B0YWJfZm4NCj4gIA0KPiAgLyogRXhwYW5kIE1B U0tfU1RPUkV7LF9MQU5FU30gb3IgTEVOX1NUT1JFIGNhbGwgU1RNVCB1c2lu ZyBvcHRhYiBPUFRBQi4gICovDQo+ICANCj4gQEAgLTI5MDAsNyArMjkxNCw3 IEBAIGV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFiX2ZuIChpbnRlcm5hbF9m biwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQo+ICAgIGlu c25fY29kZSBpY29kZTsNCj4gIA0KPiAgICBtYXNrdCA9IGdpbXBsZV9jYWxs X2FyZyAoc3RtdCwgMik7DQo+IC0gIHJocyA9IGdpbXBsZV9jYWxsX2FyZyAo c3RtdCwgMyk7DQo+ICsgIHJocyA9IGdpbXBsZV9jYWxsX2FyZyAoc3RtdCwg b3B0YWIgPT0gbGVuX21hc2tzdG9yZV9vcHRhYiA/IDQgOiAzKTsNCiANCnNl ZSBhYm92ZQ0KIA0KPiAgICB0eXBlID0gVFJFRV9UWVBFIChyaHMpOw0KPiAg ICBsaHMgPSBleHBhbmRfY2FsbF9tZW1fcmVmICh0eXBlLCBzdG10LCAwKTsN Cj4gIA0KPiBAQCAtMjkyNyw2ICsyOTQxLDE2IEBAIGV4cGFuZF9wYXJ0aWFs X3N0b3JlX29wdGFiX2ZuIChpbnRlcm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNv bnZlcnRfb3B0YWIgb3B0YWIpDQo+ICAgICAgICBjcmVhdGVfaW5wdXRfb3Bl cmFuZCAoJm9wc1szXSwgYmlhcywgUUltb2RlKTsNCj4gICAgICAgIGV4cGFu ZF9pbnNuIChpY29kZSwgNCwgb3BzKTsNCj4gICAgICB9DQo+ICsgIGVsc2Ug aWYgKG9wdGFiID09IGxlbl9tYXNrc3RvcmVfb3B0YWIpDQo+ICsgICAgew0K PiArICAgICAgY3JlYXRlX2NvbnZlcnRfb3BlcmFuZF9mcm9tICgmb3BzWzJd LCBtYXNrLCBUWVBFX01PREUgKFRSRUVfVFlQRSAobWFza3QpKSwNCj4gKyAg ICBUWVBFX1VOU0lHTkVEIChUUkVFX1RZUEUgKG1hc2t0KSkpOw0KPiArICAg ICAgbWFza3QgPSBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDMpOw0KPiArICAg ICAgbWFzayA9IGV4cGFuZF9ub3JtYWwgKG1hc2t0KTsNCj4gKyAgICAgIGNy ZWF0ZV9pbnB1dF9vcGVyYW5kICgmb3BzWzNdLCBtYXNrLCBUWVBFX01PREUg KFRSRUVfVFlQRSAobWFza3QpKSk7DQo+ICsgICAgICBpY29kZSA9IGNvbnZl cnRfb3B0YWJfaGFuZGxlciAob3B0YWIsIFRZUEVfTU9ERSAodHlwZSksIEdF VF9NT0RFIChtYXNrKSk7DQo+ICsgICAgICBleHBhbmRfaW5zbiAoaWNvZGUs IDQsIG9wcyk7DQo+ICsgICAgfQ0KPiAgICBlbHNlDQo+ICAgICAgew0KPiAg ICAgICAgY3JlYXRlX2lucHV0X29wZXJhbmQgKCZvcHNbMl0sIG1hc2ssIFRZ UEVfTU9ERSAoVFJFRV9UWVBFIChtYXNrdCkpKTsNCj4gQEAgLTI5MzcsNiAr Mjk2MSw3IEBAIGV4cGFuZF9wYXJ0aWFsX3N0b3JlX29wdGFiX2ZuIChpbnRl cm5hbF9mbiwgZ2NhbGwgKnN0bXQsIGNvbnZlcnRfb3B0YWIgb3B0YWIpDQo+ ICAjZGVmaW5lIGV4cGFuZF9tYXNrX3N0b3JlX29wdGFiX2ZuIGV4cGFuZF9w YXJ0aWFsX3N0b3JlX29wdGFiX2ZuDQo+ICAjZGVmaW5lIGV4cGFuZF9tYXNr X3N0b3JlX2xhbmVzX29wdGFiX2ZuIGV4cGFuZF9tYXNrX3N0b3JlX29wdGFi X2ZuDQo+ICAjZGVmaW5lIGV4cGFuZF9sZW5fc3RvcmVfb3B0YWJfZm4gZXhw YW5kX3BhcnRpYWxfc3RvcmVfb3B0YWJfZm4NCj4gKyNkZWZpbmUgZXhwYW5k X2xlbl9tYXNrc3RvcmVfb3B0YWJfZm4gZXhwYW5kX3BhcnRpYWxfc3RvcmVf b3B0YWJfZm4NCj4gIA0KPiAgLyogRXhwYW5kIFZDT05ELCBWQ09ORFUgYW5k IFZDT05ERVEgb3B0YWIgaW50ZXJuYWwgZnVuY3Rpb25zLg0KPiAgICAgVGhl IGV4cGFuc2lvbiBvZiBTVE1UIGhhcHBlbnMgYmFzZWQgb24gT1BUQUIgdGFi bGUgYXNzb2NpYXRlZC4gICovDQo+IEBAIC0zODkwLDYgKzM5MTUsNyBAQCBt dWx0aV92ZWN0b3Jfb3B0YWJfc3VwcG9ydGVkX3AgKGNvbnZlcnRfb3B0YWIg b3B0YWIsIHRyZWVfcGFpciB0eXBlcywNCj4gICNkZWZpbmUgZGlyZWN0X21h c2tfbG9hZF9sYW5lc19vcHRhYl9zdXBwb3J0ZWRfcCBtdWx0aV92ZWN0b3Jf b3B0YWJfc3VwcG9ydGVkX3ANCj4gICNkZWZpbmUgZGlyZWN0X2dhdGhlcl9s b2FkX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0YWJfc3VwcG9ydGVk X3ANCj4gICNkZWZpbmUgZGlyZWN0X2xlbl9sb2FkX29wdGFiX3N1cHBvcnRl ZF9wIGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiArI2RlZmluZSBkaXJl Y3RfbGVuX21hc2tsb2FkX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0 YWJfc3VwcG9ydGVkX3ANCj4gICNkZWZpbmUgZGlyZWN0X21hc2tfc3RvcmVf b3B0YWJfc3VwcG9ydGVkX3AgY29udmVydF9vcHRhYl9zdXBwb3J0ZWRfcA0K PiAgI2RlZmluZSBkaXJlY3Rfc3RvcmVfbGFuZXNfb3B0YWJfc3VwcG9ydGVk X3AgbXVsdGlfdmVjdG9yX29wdGFiX3N1cHBvcnRlZF9wDQo+ICAjZGVmaW5l IGRpcmVjdF9tYXNrX3N0b3JlX2xhbmVzX29wdGFiX3N1cHBvcnRlZF9wIG11 bHRpX3ZlY3Rvcl9vcHRhYl9zdXBwb3J0ZWRfcA0KPiBAQCAtMzg5Nyw2ICsz OTIzLDcgQEAgbXVsdGlfdmVjdG9yX29wdGFiX3N1cHBvcnRlZF9wIChjb252 ZXJ0X29wdGFiIG9wdGFiLCB0cmVlX3BhaXIgdHlwZXMsDQo+ICAjZGVmaW5l IGRpcmVjdF92ZWNfY29uZF9vcHRhYl9zdXBwb3J0ZWRfcCBjb252ZXJ0X29w dGFiX3N1cHBvcnRlZF9wDQo+ICAjZGVmaW5lIGRpcmVjdF9zY2F0dGVyX3N0 b3JlX29wdGFiX3N1cHBvcnRlZF9wIGNvbnZlcnRfb3B0YWJfc3VwcG9ydGVk X3ANCj4gICNkZWZpbmUgZGlyZWN0X2xlbl9zdG9yZV9vcHRhYl9zdXBwb3J0 ZWRfcCBkaXJlY3Rfb3B0YWJfc3VwcG9ydGVkX3ANCj4gKyNkZWZpbmUgZGly ZWN0X2xlbl9tYXNrc3RvcmVfb3B0YWJfc3VwcG9ydGVkX3AgY29udmVydF9v cHRhYl9zdXBwb3J0ZWRfcA0KPiAgI2RlZmluZSBkaXJlY3Rfd2hpbGVfb3B0 YWJfc3VwcG9ydGVkX3AgY29udmVydF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiAg I2RlZmluZSBkaXJlY3RfZm9sZF9leHRyYWN0X29wdGFiX3N1cHBvcnRlZF9w IGRpcmVjdF9vcHRhYl9zdXBwb3J0ZWRfcA0KPiAgI2RlZmluZSBkaXJlY3Rf Zm9sZF9sZWZ0X29wdGFiX3N1cHBvcnRlZF9wIGRpcmVjdF9vcHRhYl9zdXBw b3J0ZWRfcA0KPiBAQCAtNDM2MSw2ICs0Mzg4LDcgQEAgaW50ZXJuYWxfbG9h ZF9mbl9wIChpbnRlcm5hbF9mbiBmbikNCj4gICAgICBjYXNlIElGTl9HQVRI RVJfTE9BRDoNCj4gICAgICBjYXNlIElGTl9NQVNLX0dBVEhFUl9MT0FEOg0K PiAgICAgIGNhc2UgSUZOX0xFTl9MT0FEOg0KPiArICAgIGNhc2UgSUZOX0xF Tl9NQVNLX0xPQUQ6DQo+ICAgICAgICByZXR1cm4gdHJ1ZTsNCj4gIA0KPiAg ICAgIGRlZmF1bHQ6DQo+IEBAIC00MzgxLDYgKzQ0MDksNyBAQCBpbnRlcm5h bF9zdG9yZV9mbl9wIChpbnRlcm5hbF9mbiBmbikNCj4gICAgICBjYXNlIElG Tl9TQ0FUVEVSX1NUT1JFOg0KPiAgICAgIGNhc2UgSUZOX01BU0tfU0NBVFRF Ul9TVE9SRToNCj4gICAgICBjYXNlIElGTl9MRU5fU1RPUkU6DQo+ICsgICAg Y2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ICAgICAgICByZXR1cm4gdHJ1 ZTsNCj4gIA0KPiAgICAgIGRlZmF1bHQ6DQo+IEBAIC00NDIwLDYgKzQ0NDks MTAgQEAgaW50ZXJuYWxfZm5fbWFza19pbmRleCAoaW50ZXJuYWxfZm4gZm4p DQo+ICAgICAgY2FzZSBJRk5fTUFTS19TVE9SRV9MQU5FUzoNCj4gICAgICAg IHJldHVybiAyOw0KPiAgDQo+ICsgICAgY2FzZSBJRk5fTEVOX01BU0tfTE9B RDoNCj4gKyAgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToNCj4gKyAgICAg IHJldHVybiAzOw0KPiArDQo+ICAgICAgY2FzZSBJRk5fTUFTS19HQVRIRVJf TE9BRDoNCj4gICAgICBjYXNlIElGTl9NQVNLX1NDQVRURVJfU1RPUkU6DQo+ ICAgICAgICByZXR1cm4gNDsNCj4gQEAgLTQ0NDQsNiArNDQ3Nyw4IEBAIGlu dGVybmFsX2ZuX3N0b3JlZF92YWx1ZV9pbmRleCAoaW50ZXJuYWxfZm4gZm4p DQo+ICAgICAgY2FzZSBJRk5fTUFTS19TQ0FUVEVSX1NUT1JFOg0KPiAgICAg IGNhc2UgSUZOX0xFTl9TVE9SRToNCj4gICAgICAgIHJldHVybiAzOw0KPiAr ICAgIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JFOg0KPiArICAgICAgcmV0dXJu IDQ7DQo+ICANCj4gICAgICBkZWZhdWx0Og0KPiAgICAgICAgcmV0dXJuIC0x Ow0KPiBkaWZmIC0tZ2l0IGEvZ2NjL2ludGVybmFsLWZuLmRlZiBiL2djYy9p bnRlcm5hbC1mbi5kZWYNCj4gaW5kZXggNWQ2MzhkZTZkMDYuLmNmMGJjZWE1 YWM3IDEwMDY0NA0KPiAtLS0gYS9nY2MvaW50ZXJuYWwtZm4uZGVmDQo+ICsr KyBiL2djYy9pbnRlcm5hbC1mbi5kZWYNCj4gQEAgLTUwLDEyICs1MCwxNCBA QCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYg bm90IHNlZQ0KPiAgICAgLSBtYXNrX2xvYWRfbGFuZXM6IGN1cnJlbnRseSBq dXN0IHZlY19tYXNrX2xvYWRfbGFuZXMNCj4gICAgIC0gZ2F0aGVyX2xvYWQ6 IHVzZWQgZm9yIHttYXNrXyx9Z2F0aGVyX2xvYWQNCj4gICAgIC0gbGVuX2xv YWQ6IGN1cnJlbnRseSBqdXN0IGxlbl9sb2FkDQo+ICsgICAtIGxlbl9tYXNr bG9hZDogY3VycmVudGx5IGp1c3QgbGVuX21hc2tsb2FkDQo+ICANCj4gICAg IC0gbWFza19zdG9yZTogY3VycmVudGx5IGp1c3QgbWFza3N0b3JlDQo+ICAg ICAtIHN0b3JlX2xhbmVzOiBjdXJyZW50bHkganVzdCB2ZWNfc3RvcmVfbGFu ZXMNCj4gICAgIC0gbWFza19zdG9yZV9sYW5lczogY3VycmVudGx5IGp1c3Qg dmVjX21hc2tfc3RvcmVfbGFuZXMNCj4gICAgIC0gc2NhdHRlcl9zdG9yZTog dXNlZCBmb3Ige21hc2tfLH1zY2F0dGVyX3N0b3JlDQo+ICAgICAtIGxlbl9z dG9yZTogY3VycmVudGx5IGp1c3QgbGVuX3N0b3JlDQo+ICsgICAtIGxlbl9t YXNrc3RvcmU6IGN1cnJlbnRseSBqdXN0IGxlbl9tYXNrc3RvcmUNCj4gIA0K PiAgICAgLSB1bmFyeTogYSBub3JtYWwgdW5hcnkgb3B0YWIsIHN1Y2ggYXMg dmVjX3JldmVyc2VfPG1vZGU+DQo+ICAgICAtIGJpbmFyeTogYSBub3JtYWwg YmluYXJ5IG9wdGFiLCBzdWNoIGFzIHZlY19pbnRlcmxlYXZlX2xvXzxtb2Rl Pg0KPiBAQCAtMTU3LDYgKzE1OSw3IEBAIERFRl9JTlRFUk5BTF9PUFRBQl9G TiAoTUFTS19HQVRIRVJfTE9BRCwgRUNGX1BVUkUsDQo+ICAgICAgICAgbWFz a19nYXRoZXJfbG9hZCwgZ2F0aGVyX2xvYWQpDQo+ICANCj4gIERFRl9JTlRF Uk5BTF9PUFRBQl9GTiAoTEVOX0xPQUQsIEVDRl9QVVJFLCBsZW5fbG9hZCwg bGVuX2xvYWQpDQo+ICtERUZfSU5URVJOQUxfT1BUQUJfRk4gKExFTl9NQVNL X0xPQUQsIEVDRl9QVVJFLCBsZW5fbWFza2xvYWQsIGxlbl9tYXNrbG9hZCkN Cj4gIA0KPiAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChTQ0FUVEVSX1NUT1JF LCAwLCBzY2F0dGVyX3N0b3JlLCBzY2F0dGVyX3N0b3JlKQ0KPiAgREVGX0lO VEVSTkFMX09QVEFCX0ZOIChNQVNLX1NDQVRURVJfU1RPUkUsIDAsDQo+IEBA IC0xNzUsNiArMTc4LDcgQEAgREVGX0lOVEVSTkFMX09QVEFCX0ZOIChWQ09O RF9NQVNLLCAwLCB2Y29uZF9tYXNrLCB2ZWNfY29uZF9tYXNrKQ0KPiAgREVG X0lOVEVSTkFMX09QVEFCX0ZOIChWRUNfU0VULCAwLCB2ZWNfc2V0LCB2ZWNf c2V0KQ0KPiAgDQo+ICBERUZfSU5URVJOQUxfT1BUQUJfRk4gKExFTl9TVE9S RSwgMCwgbGVuX3N0b3JlLCBsZW5fc3RvcmUpDQo+ICtERUZfSU5URVJOQUxf T1BUQUJfRk4gKExFTl9NQVNLX1NUT1JFLCAwLCBsZW5fbWFza3N0b3JlLCBs ZW5fbWFza3N0b3JlKQ0KPiAgDQo+ICBERUZfSU5URVJOQUxfT1BUQUJfRk4g KFdISUxFX1VMVCwgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csIHdoaWxlX3Vs dCwgd2hpbGUpDQo+ICBERUZfSU5URVJOQUxfT1BUQUJfRk4gKFNFTEVDVF9W TCwgRUNGX0NPTlNUIHwgRUNGX05PVEhST1csIHNlbGVjdF92bCwgYmluYXJ5 KQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy1xdWVyeS5jYyBiL2djYy9v cHRhYnMtcXVlcnkuY2MNCj4gaW5kZXggMjc2Zjg0MDhkZDcuLmVjNzY1ZTc4 MDg4IDEwMDY0NA0KPiAtLS0gYS9nY2Mvb3B0YWJzLXF1ZXJ5LmNjDQo+ICsr KyBiL2djYy9vcHRhYnMtcXVlcnkuY2MNCj4gQEAgLTYyNCw2ICs2MjQsNDUg QEAgZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUgKG1hY2hpbmVfbW9kZSBtb2Rl LCBib29sIGlzX2xvYWQpDQo+ICAgIHJldHVybiBvcHRfbWFjaGluZV9tb2Rl ICgpOw0KPiAgfQ0KPiAgDQo+ICsvKiBSZXR1cm4gdHJ1ZSBpZiB0YXJnZXQg c3VwcG9ydHMgdmVjdG9yIGxlbmd0aCAmJiBtYXNrZWQgbG9hZC9zdG9yZSBm b3IgbW9kZS4NCj4gKyAgIExlbmd0aCBpcyB1c2VkIG9uIGxvb3AgY29udHJv bCBhbmQgbWFzayBpcyB1c2VkIG9uIGZsb3cgY29udHJvbC4gICovDQo+ICsN Cj4gK2Jvb2wNCj4gK2Nhbl92ZWNfbGVuX21hc2tfbG9hZF9zdG9yZV9wICht YWNoaW5lX21vZGUgbW9kZSwgYm9vbCBpc19sb2FkKQ0KIA0Kd2h5IGRldmlh dGUgZnJvbSBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIGFuZCBub3QgcGFz cyBpbiB0aGUNCm1hc2tfbW9kZT8gIEluIGZhY3QgSSB3b25kZXIgd2h5IHRo aXMgZnVuY3Rpb24gZGlmZmVycyBmcm9tDQpjYW5fdmVjX21hc2tfbG9hZF9z dG9yZV9wIGJlc2lkZXMgdXNpbmcgb3RoZXIgb3B0YWJzPyAgQ291bGRuJ3QN CndlIHNpbXBseSBhZGQgYSBib29sIHdpdGhfbGVuIGFyZ3VtZW50IHRvIGNh bl92ZWNfbWFza19sb2FkX3N0b3JlX3A/DQogDQo+ICt7DQo+ICsgIG9wdGFi IG9wID0gaXNfbG9hZCA/IGxlbl9tYXNrbG9hZF9vcHRhYiA6IGxlbl9tYXNr c3RvcmVfb3B0YWI7DQo+ICsgIG1hY2hpbmVfbW9kZSB2bW9kZTsNCj4gKyAg bWFjaGluZV9tb2RlIG1hc2tfbW9kZTsNCj4gKw0KPiArICAvKiBJZiBtb2Rl IGlzIHZlY3RvciBtb2RlLCBjaGVjayBpdCBkaXJlY3RseS4gICovDQo+ICsg IGlmIChWRUNUT1JfTU9ERV9QIChtb2RlKSkNCj4gKyAgICByZXR1cm4gdGFy Z2V0bS52ZWN0b3JpemUuZ2V0X21hc2tfbW9kZSAobW9kZSkuZXhpc3RzICgm bWFza19tb2RlKQ0KPiArICAgICYmIGNvbnZlcnRfb3B0YWJfaGFuZGxlciAo b3AsIG1vZGUsIG1hc2tfbW9kZSkgIT0gQ09ERV9GT1Jfbm90aGluZzsNCj4g Kw0KPiArICBzY2FsYXJfbW9kZSBzbW9kZTsNCj4gKyAgaWYgKGlzX2E8c2Nh bGFyX21vZGU+IChtb2RlLCAmc21vZGUpKQ0KPiArICAgIC8qIFNlZSBpZiB0 aGVyZSBpcyBhbnkgY2hhbmNlIHRoZSBtYXNrIGxvYWQgb3Igc3RvcmUgbWln aHQgYmUNCj4gKyAgICAgICB2ZWN0b3JpemVkLiAgSWYgbm90LCBwdW50LiAg Ki8NCj4gKyAgICB2bW9kZSA9IHRhcmdldG0udmVjdG9yaXplLnByZWZlcnJl ZF9zaW1kX21vZGUgKHNtb2RlKTsNCj4gKyAgZWxzZQ0KPiArICAgIHZtb2Rl ID0gbW9kZTsNCj4gKw0KPiArICBpZiAoVkVDVE9SX01PREVfUCAodm1vZGUp DQo+ICsgICAgICAmJiB0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2Rl ICh2bW9kZSkuZXhpc3RzICgmbWFza19tb2RlKQ0KPiArICAgICAgJiYgY29u dmVydF9vcHRhYl9oYW5kbGVyIChvcCwgdm1vZGUsIG1hc2tfbW9kZSkgIT0g Q09ERV9GT1Jfbm90aGluZykNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gKw0K PiArICBhdXRvX3ZlY3Rvcl9tb2RlcyB2ZWN0b3JfbW9kZXM7DQo+ICsgIHRh cmdldG0udmVjdG9yaXplLmF1dG92ZWN0b3JpemVfdmVjdG9yX21vZGVzICgm dmVjdG9yX21vZGVzLCB0cnVlKTsNCj4gKyAgZm9yIChtYWNoaW5lX21vZGUg YmFzZV9tb2RlIDogdmVjdG9yX21vZGVzKQ0KPiArICAgIGlmIChyZWxhdGVk X3ZlY3Rvcl9tb2RlIChiYXNlX21vZGUsIHNtb2RlKS5leGlzdHMgKCZ2bW9k ZSkNCj4gKyAmJiB0YXJnZXRtLnZlY3Rvcml6ZS5nZXRfbWFza19tb2RlICh2 bW9kZSkuZXhpc3RzICgmbWFza19tb2RlKQ0KPiArICYmIGNvbnZlcnRfb3B0 YWJfaGFuZGxlciAob3AsIHZtb2RlLCBtYXNrX21vZGUpICE9IENPREVfRk9S X25vdGhpbmcpDQo+ICsgICAgICByZXR1cm4gdHJ1ZTsNCj4gKw0KPiArICBy ZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gIC8qIFJldHVybiB0cnVlIGlm IHRoZXJlIGlzIGEgY29tcGFyZV9hbmRfc3dhcCBwYXR0ZXJuLiAgKi8NCj4g IA0KPiAgYm9vbA0KPiBkaWZmIC0tZ2l0IGEvZ2NjL29wdGFicy1xdWVyeS5o IGIvZ2NjL29wdGFicy1xdWVyeS5oDQo+IGluZGV4IGIyNjZkMmZlOTkwLi4y YjljOWI0NGFmMiAxMDA2NDQNCj4gLS0tIGEvZ2NjL29wdGFicy1xdWVyeS5o DQo+ICsrKyBiL2djYy9vcHRhYnMtcXVlcnkuaA0KPiBAQCAtMTg5LDYgKzE4 OSw3IEBAIGVudW0gaW5zbl9jb2RlIGZpbmRfd2lkZW5pbmdfb3B0YWJfaGFu ZGxlcl9hbmRfbW9kZSAob3B0YWIsIG1hY2hpbmVfbW9kZSwNCj4gIGludCBj YW5fbXVsdF9oaWdocGFydF9wIChtYWNoaW5lX21vZGUsIGJvb2wpOw0KPiAg Ym9vbCBjYW5fdmVjX21hc2tfbG9hZF9zdG9yZV9wIChtYWNoaW5lX21vZGUs IG1hY2hpbmVfbW9kZSwgYm9vbCk7DQo+ICBvcHRfbWFjaGluZV9tb2RlIGdl dF9sZW5fbG9hZF9zdG9yZV9tb2RlIChtYWNoaW5lX21vZGUsIGJvb2wpOw0K PiArYm9vbCBjYW5fdmVjX2xlbl9tYXNrX2xvYWRfc3RvcmVfcCAobWFjaGlu ZV9tb2RlLCBib29sKTsNCj4gIGJvb2wgY2FuX2NvbXBhcmVfYW5kX3N3YXBf cCAobWFjaGluZV9tb2RlLCBib29sKTsNCj4gIGJvb2wgY2FuX2F0b21pY19l eGNoYW5nZV9wIChtYWNoaW5lX21vZGUsIGJvb2wpOw0KPiAgYm9vbCBjYW5f YXRvbWljX2xvYWRfcCAobWFjaGluZV9tb2RlKTsNCj4gZGlmZiAtLWdpdCBh L2djYy9vcHRhYnMuZGVmIGIvZ2NjL29wdGFicy5kZWYNCj4gaW5kZXggZjMx YjY5YzVkODUuLmY1NDAxYWVhMzY0IDEwMDY0NA0KPiAtLS0gYS9nY2Mvb3B0 YWJzLmRlZg0KPiArKysgYi9nY2Mvb3B0YWJzLmRlZg0KPiBAQCAtOTEsNiAr OTEsOCBAQCBPUFRBQl9DRCh2ZWNfY21wdV9vcHRhYiwgInZlY19jbXB1JGEk YiIpDQo+ICBPUFRBQl9DRCh2ZWNfY21wZXFfb3B0YWIsICJ2ZWNfY21wZXEk YSRiIikNCj4gIE9QVEFCX0NEKG1hc2tsb2FkX29wdGFiLCAibWFza2xvYWQk YSRiIikNCj4gIE9QVEFCX0NEKG1hc2tzdG9yZV9vcHRhYiwgIm1hc2tzdG9y ZSRhJGIiKQ0KPiArT1BUQUJfQ0QobGVuX21hc2tsb2FkX29wdGFiLCAibGVu X21hc2tsb2FkJGEkYiIpDQo+ICtPUFRBQl9DRChsZW5fbWFza3N0b3JlX29w dGFiLCAibGVuX21hc2tzdG9yZSRhJGIiKQ0KPiAgT1BUQUJfQ0QoZ2F0aGVy X2xvYWRfb3B0YWIsICJnYXRoZXJfbG9hZCRhJGIiKQ0KPiAgT1BUQUJfQ0Qo bWFza19nYXRoZXJfbG9hZF9vcHRhYiwgIm1hc2tfZ2F0aGVyX2xvYWQkYSRi IikNCj4gIE9QVEFCX0NEKHNjYXR0ZXJfc3RvcmVfb3B0YWIsICJzY2F0dGVy X3N0b3JlJGEkYiIpDQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1kYXRhLXJl Zi5jYyBiL2djYy90cmVlLWRhdGEtcmVmLmNjDQo+IGluZGV4IGI1NzZjY2U2 ZGI2Li45OWFjYTQ0ZTZhNSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtZGF0 YS1yZWYuY2MNCj4gKysrIGIvZ2NjL3RyZWUtZGF0YS1yZWYuY2MNCj4gQEAg LTU4MTYsNiArNTgxNiw4IEBAIGdldF9yZWZlcmVuY2VzX2luX3N0bXQgKGdp bXBsZSAqc3RtdCwgdmVjPGRhdGFfcmVmX2xvYywgdmFfaGVhcD4gKnJlZmVy ZW5jZXMpDQo+ICAgICAgfQ0KPiAgICBjYXNlIElGTl9NQVNLX0xPQUQ6DQo+ ICAgIGNhc2UgSUZOX01BU0tfU1RPUkU6DQo+ICsgICBjYXNlIElGTl9MRU5f TUFTS19MT0FEOg0KPiArICAgY2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ ICAgICAgYnJlYWs7DQo+ICAgIGRlZmF1bHQ6DQo+ICAgICAgY2xvYmJlcnNf bWVtb3J5ID0gdHJ1ZTsNCj4gQEAgLTU4NjEsMTEgKzU4NjMsMTMgQEAgZ2V0 X3JlZmVyZW5jZXNfaW5fc3RtdCAoZ2ltcGxlICpzdG10LCB2ZWM8ZGF0YV9y ZWZfbG9jLCB2YV9oZWFwPiAqcmVmZXJlbmNlcykNCj4gIHN3aXRjaCAoZ2lt cGxlX2NhbGxfaW50ZXJuYWxfZm4gKHN0bXQpKQ0KPiAgICB7DQo+ICAgIGNh c2UgSUZOX01BU0tfTE9BRDoNCj4gKyAgIGNhc2UgSUZOX0xFTl9NQVNLX0xP QUQ6DQo+ICAgICAgaWYgKGdpbXBsZV9jYWxsX2xocyAoc3RtdCkgPT0gTlVM TF9UUkVFKQ0KPiAgICAgICAgYnJlYWs7DQo+ICAgICAgcmVmLmlzX3JlYWQg PSB0cnVlOw0KPiAgICAgIC8qIEZBTExUSFJVICovDQo+ICAgIGNhc2UgSUZO X01BU0tfU1RPUkU6DQo+ICsgICBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToN Cj4gICAgICBwdHIgPSBidWlsZF9pbnRfY3N0IChUUkVFX1RZUEUgKGdpbXBs ZV9jYWxsX2FyZyAoc3RtdCwgMSkpLCAwKTsNCj4gICAgICBhbGlnbiA9IHRy ZWVfdG9fc2h3aSAoZ2ltcGxlX2NhbGxfYXJnIChzdG10LCAxKSk7DQo+ICAg ICAgaWYgKHJlZi5pc19yZWFkKQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUt aWYtY29udi5jYyBiL2djYy90cmVlLWlmLWNvbnYuY2MNCj4gaW5kZXggMTM5 M2NlMTg0ZTMuLjBmNTQ5ZmE1MjhkIDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJl ZS1pZi1jb252LmNjDQo+ICsrKyBiL2djYy90cmVlLWlmLWNvbnYuY2MNCj4g QEAgLTk2MCw2ICs5NjAsOSBAQCBpZmN2dF9jYW5fdXNlX21hc2tfbG9hZF9z dG9yZSAoZ2ltcGxlICpzdG10KQ0KPiAgICBpZiAoY2FuX3ZlY19tYXNrX2xv YWRfc3RvcmVfcCAobW9kZSwgVk9JRG1vZGUsIGlzX2xvYWQpKQ0KPiAgICAg IHJldHVybiB0cnVlOw0KPiAgDQo+ICsgIGlmIChjYW5fdmVjX2xlbl9tYXNr X2xvYWRfc3RvcmVfcCAobW9kZSwgaXNfbG9hZCkpDQo+ICsgICAgcmV0dXJu IHRydWU7DQogDQpCdXQgaWYtY29udmVyc2lvbiBvbmx5IG5lZWRzIHRoZSBj b25kaXRpb25hbCBtYXNraW5nLCBub3QgX2xlbi4gIEkNCmRvbid0IHRoaW5r IHdlIG5lZWQgdG8gY2hlY2sgdGhpcyBhdCBhbGw/ICBJbiBmYWN0DQpjYW5f dmVjX21hc2tfbG9hZF9zdG9yZV9wIHNob3VsZCBwcm9iYWJseSByZXR1cm4g dHJ1ZSB3aGVuDQpMRU5fTUFTS0xPQUQgaXMgYXZhaWxhYmxlIHNpbmNlIHdl IGNhbiBhbHdheXMgdXNlIHRoZSBmdWxsIHZlY3Rvcg0KbGVuIGFzIGxlbiBh cmd1bWVudD8gIFRoZSBzdWdnZXN0ZWQgYm9vbCBhcmd1bWVudCB3aXRoX2xl bg0KY291bGQgYWxzbyBiZWNvbWUgYW4gZW51bSB7IFdJVEhfTEVOLCBXSVRI T1VUX0xFTiwgRUlUSEVSIH0sDQpidXQgbm90IHN1cmUgaWYgdGhhdCdzIHJl YWxseSBuZWNlc3NhcnkuDQogDQpBcmUgeW91IGdvaW5nIHRvIHByb3ZpZGUg bGVuX2xvYWQsIG1hc2tsb2FkIGFuZCBsZW5fbWFza2xvYWQNCnBhdHRlcm5z IG9yIGp1c3QgbGVuX21hc2tsb2FkPyAgKEkgaG9wZSB0aGUgbGFzdCkNCiAN Cj4gKw0KPiAgICByZXR1cm4gZmFsc2U7DQo+ICB9DQo+ICANCj4gZGlmZiAt LWdpdCBhL2djYy90cmVlLXNzYS1hbGlhcy5jYyBiL2djYy90cmVlLXNzYS1h bGlhcy5jYw0KPiBpbmRleCA3OWVkOTU2ZTMwMC4uMTAwYzRiMmU3ZDkgMTAw NjQ0DQo+IC0tLSBhL2djYy90cmVlLXNzYS1hbGlhcy5jYw0KPiArKysgYi9n Y2MvdHJlZS1zc2EtYWxpYXMuY2MNCj4gQEAgLTI4MTUsMTEgKzI4MTUsMTMg QEAgcmVmX21heWJlX3VzZWRfYnlfY2FsbF9wXzEgKGdjYWxsICpjYWxsLCBh b19yZWYgKnJlZiwgYm9vbCB0YmFhX3ApDQo+ICAgICAgICBjYXNlIElGTl9T Q0FUVEVSX1NUT1JFOg0KPiAgICAgICAgY2FzZSBJRk5fTUFTS19TQ0FUVEVS X1NUT1JFOg0KPiAgICAgICAgY2FzZSBJRk5fTEVOX1NUT1JFOg0KPiArICAg ICAgY2FzZSBJRk5fTEVOX01BU0tfU1RPUkU6DQo+ICByZXR1cm4gZmFsc2U7 DQo+ICAgICAgICBjYXNlIElGTl9NQVNLX1NUT1JFX0xBTkVTOg0KPiAgZ290 byBwcm9jZXNzX2FyZ3M7DQo+ICAgICAgICBjYXNlIElGTl9NQVNLX0xPQUQ6 DQo+ICAgICAgICBjYXNlIElGTl9MRU5fTE9BRDoNCj4gKyAgICAgIGNhc2Ug SUZOX0xFTl9NQVNLX0xPQUQ6DQo+ICAgICAgICBjYXNlIElGTl9NQVNLX0xP QURfTEFORVM6DQo+ICB7DQo+ICAgIGFvX3JlZiByaHNfcmVmOw0KPiBAQCAt MzA2NSw2ICszMDY3LDcgQEAgY2FsbF9tYXlfY2xvYmJlcl9yZWZfcF8xIChn Y2FsbCAqY2FsbCwgYW9fcmVmICpyZWYsIGJvb2wgdGJhYV9wKQ0KPiAgcmV0 dXJuIGZhbHNlOw0KPiAgICAgICAgY2FzZSBJRk5fTUFTS19TVE9SRToNCj4g ICAgICAgIGNhc2UgSUZOX0xFTl9TVE9SRToNCj4gKyAgICAgIGNhc2UgSUZO X0xFTl9NQVNLX1NUT1JFOg0KPiAgICAgICAgY2FzZSBJRk5fTUFTS19TVE9S RV9MQU5FUzoNCj4gIHsNCj4gICAgdHJlZSByaHMgPSBnaW1wbGVfY2FsbF9h cmcgKGNhbGwsDQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS1zc2EtZHNlLmNj IGIvZ2NjL3RyZWUtc3NhLWRzZS5jYw0KPiBpbmRleCBlYWJlOGJhNDUyMi4u YWNhZjg0NGI4ZWYgMTAwNjQ0DQo+IC0tLSBhL2djYy90cmVlLXNzYS1kc2Uu Y2MNCj4gKysrIGIvZ2NjL3RyZWUtc3NhLWRzZS5jYw0KPiBAQCAtMTc0LDYg KzE3NCwxNyBAQCBpbml0aWFsaXplX2FvX3JlZl9mb3JfZHNlIChnaW1wbGUg KnN0bXQsIGFvX3JlZiAqd3JpdGUsIGJvb2wgbWF5X2RlZl9vayA9IGZhbHNl KQ0KPiAgICAgICAgcmV0dXJuIHRydWU7DQo+ICAgICAgfQ0KPiAgICBicmVh azsNCj4gKyBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToNCj4gKyAgIC8qIFdl IGNhbm5vdCBpbml0aWFsaXplIGEgbXVzdC1kZWYgYW9fcmVmIChpbiBhbGwg Y2FzZXMpIGJ1dCB3ZQ0KPiArICAgICAgY2FuIHByb3ZpZGUgYSBtYXktZGVm IHZhcmlhbnQuICAqLw0KPiArICAgaWYgKG1heV9kZWZfb2spDQo+ICsgICAg IHsNCj4gKyAgICAgICBhb19yZWZfaW5pdF9mcm9tX3B0cl9hbmRfc2l6ZQ0K PiArICAgKHdyaXRlLCBnaW1wbGVfY2FsbF9hcmcgKHN0bXQsIDApLA0KPiAr ICAgIFRZUEVfU0laRV9VTklUIChUUkVFX1RZUEUgKGdpbXBsZV9jYWxsX2Fy ZyAoc3RtdCwgNCkpKSk7DQogDQpjb21tb24gd2l0aCBJRk5fTUFTS19TVE9S RSBieSB1c2luZyBpbnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXgNCiAN Cj4gKyAgICAgICByZXR1cm4gdHJ1ZTsNCj4gKyAgICAgfQ0KPiArICAgYnJl YWs7DQo+ICBkZWZhdWx0OjsNCj4gIH0NCj4gICAgICB9DQo+IEBAIC0xNDgz LDYgKzE0OTQsNyBAQCBkc2Vfb3B0aW1pemVfc3RtdCAoZnVuY3Rpb24gKmZ1 biwgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmdzaSwgc2JpdG1hcCBsaXZlX2J5 dGVzKQ0KPiAgew0KPiAgY2FzZSBJRk5fTEVOX1NUT1JFOg0KPiAgY2FzZSBJ Rk5fTUFTS19TVE9SRToNCj4gKyBjYXNlIElGTl9MRU5fTUFTS19TVE9SRToN Cj4gICAgew0KPiAgICAgIGVudW0gZHNlX3N0b3JlX3N0YXR1cyBzdG9yZV9z dGF0dXM7DQo+ICAgICAgc3RvcmVfc3RhdHVzID0gZHNlX2NsYXNzaWZ5X3N0 b3JlICgmcmVmLCBzdG10LCBmYWxzZSwgbGl2ZV9ieXRlcyk7DQo+IGRpZmYg LS1naXQgYS9nY2MvdHJlZS1zc2EtbG9vcC1pdm9wdHMuY2MgYi9nY2MvdHJl ZS1zc2EtbG9vcC1pdm9wdHMuY2MNCj4gaW5kZXggNmZiZDJkNTkzMTguLmU4 ZTlkZjFhYjc0IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS1zc2EtbG9vcC1p dm9wdHMuY2MNCj4gKysrIGIvZ2NjL3RyZWUtc3NhLWxvb3AtaXZvcHRzLmNj DQo+IEBAIC0yNDM5LDYgKzI0MzksNyBAQCBnZXRfbWVtX3R5cGVfZm9yX2lu dGVybmFsX2ZuIChnY2FsbCAqY2FsbCwgdHJlZSAqb3BfcCkNCj4gICAgICBj YXNlIElGTl9NQVNLX0xPQUQ6DQo+ICAgICAgY2FzZSBJRk5fTUFTS19MT0FE X0xBTkVTOg0KPiAgICAgIGNhc2UgSUZOX0xFTl9MT0FEOg0KPiArICAgIGNh c2UgSUZOX0xFTl9NQVNLX0xPQUQ6DQo+ICAgICAgICBpZiAob3BfcCA9PSBn aW1wbGVfY2FsbF9hcmdfcHRyIChjYWxsLCAwKSkNCj4gIHJldHVybiBUUkVF X1RZUEUgKGdpbXBsZV9jYWxsX2xocyAoY2FsbCkpOw0KPiAgICAgICAgcmV0 dXJuIE5VTExfVFJFRTsNCj4gQEAgLTI0NTAsNiArMjQ1MSwxMSBAQCBnZXRf bWVtX3R5cGVfZm9yX2ludGVybmFsX2ZuIChnY2FsbCAqY2FsbCwgdHJlZSAq b3BfcCkNCj4gIHJldHVybiBUUkVFX1RZUEUgKGdpbXBsZV9jYWxsX2FyZyAo Y2FsbCwgMykpOw0KPiAgICAgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gIA0K PiArICAgIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JFOg0KPiArICAgICAgaWYg KG9wX3AgPT0gZ2ltcGxlX2NhbGxfYXJnX3B0ciAoY2FsbCwgMCkpDQo+ICsg cmV0dXJuIFRSRUVfVFlQRSAoZ2ltcGxlX2NhbGxfYXJnIChjYWxsLCA0KSk7 DQogDQppbnRlcm5hbF9mbl9zdG9yZWRfdmFsdWVfaW5kZXgNCiANCj4gKyAg ICAgIHJldHVybiBOVUxMX1RSRUU7DQo+ICsNCj4gICAgICBkZWZhdWx0Og0K PiAgICAgICAgcmV0dXJuIE5VTExfVFJFRTsNCj4gICAgICB9DQo+IEBAIC03 NTU1LDYgKzc1NjEsOCBAQCBnZXRfYWxpYXNfcHRyX3R5cGVfZm9yX3B0cl9h ZGRyZXNzIChpdl91c2UgKnVzZSkNCj4gICAgICBjYXNlIElGTl9NQVNLX1NU T1JFX0xBTkVTOg0KPiAgICAgIGNhc2UgSUZOX0xFTl9MT0FEOg0KPiAgICAg IGNhc2UgSUZOX0xFTl9TVE9SRToNCj4gKyAgICBjYXNlIElGTl9MRU5fTUFT S19MT0FEOg0KPiArICAgIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JFOg0KPiAg ICAgICAgLyogVGhlIHNlY29uZCBhcmd1bWVudCBjb250YWlucyB0aGUgY29y cmVjdCBhbGlhcyB0eXBlLiAgKi8NCj4gICAgICAgIGdjY19hc3NlcnQgKHVz ZS0+b3BfcCA9IGdpbXBsZV9jYWxsX2FyZ19wdHIgKGNhbGwsIDApKTsNCj4g ICAgICAgIHJldHVybiBUUkVFX1RZUEUgKGdpbXBsZV9jYWxsX2FyZyAoY2Fs bCwgMSkpOw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLXNjY3ZuLmNj IGIvZ2NjL3RyZWUtc3NhLXNjY3ZuLmNjDQo+IGluZGV4IDI3Yzg0ZTc4ZmNm Li4wMmZiYzRhMmRmYSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtc3NhLXNj Y3ZuLmNjDQo+ICsrKyBiL2djYy90cmVlLXNzYS1zY2N2bi5jYw0KPiBAQCAt MzMwNCw2ICszMzA0LDEyIEBAIHZuX3JlZmVyZW5jZV9sb29rdXBfMyAoYW9f cmVmICpyZWYsIHRyZWUgdnVzZSwgdm9pZCAqZGF0YV8sDQo+ICAgIGlmICgh dHJlZV9maXRzX3Vod2lfcCAobGVuKSB8fCAhdHJlZV9maXRzX3Nod2lfcCAo YmlhcykpDQo+ICAgICAgcmV0dXJuICh2b2lkICopLTE7DQo+ICAgIGJyZWFr Ow0KPiArIGNhc2UgSUZOX0xFTl9NQVNLX1NUT1JFOg0KPiArICAgbGVuID0g Z2ltcGxlX2NhbGxfYXJnIChjYWxsLCAyKTsNCj4gKyAgIG1hc2sgPSBnaW1w bGVfY2FsbF9hcmcgKGNhbGwsIGludGVybmFsX2ZuX21hc2tfaW5kZXggKGZu KSk7DQo+ICsgICBpZiAoIXRyZWVfZml0c191aHdpX3AgKGxlbikgfHwgVFJF RV9DT0RFIChtYXNrKSAhPSBWRUNUT1JfQ1NUKQ0KPiArICAgICByZXR1cm4g KHZvaWQgKiktMTsNCj4gKyAgIGJyZWFrOw0KIA0KVGhhdCdzIHRvbyBzaW1w bGUsIHRoZSBjb2RlIHVzaW5nIHRoZSBpbmZvIGlzIG5vdCBwcmVwYXJlZCBm b3INCkxFTl9NQVNLIHNpbmNlIGl0IGhhbmRsZXMgbWFza2xvYWQgYW5kIGxl bl9sb2FkIHNlcGFyYXRlbHkuDQpJIHN1Z2dlc3QgdG8gZHJvcCB0aGlzLCBw aWNraW5nIGl0IHVwIHNlcGFyYXRlbHkuDQogDQo+ICBkZWZhdWx0Og0KPiAg ICByZXR1cm4gKHZvaWQgKiktMTsNCj4gIH0NCj4gZGlmZiAtLWdpdCBhL2dj Yy90cmVlLXZlY3QtZGF0YS1yZWZzLmNjIGIvZ2NjL3RyZWUtdmVjdC1kYXRh LXJlZnMuY2MNCj4gaW5kZXggZWJlOTM4MzJiMWUuLmZiODM0NDY1MTlhIDEw MDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0LWRhdGEtcmVmcy5jYw0KPiAr KysgYi9nY2MvdHJlZS12ZWN0LWRhdGEtcmVmcy5jYw0KPiBAQCAtMzAzOSwx NyArMzAzOSwyMSBAQCBjYW5fZ3JvdXBfc3RtdHNfcCAoc3RtdF92ZWNfaW5m byBzdG10MV9pbmZvLCBzdG10X3ZlY19pbmZvIHN0bXQyX2luZm8sDQo+ICAg ICAgICBpZiAoIWNhbGwyIHx8ICFnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChj YWxsMikpDQo+ICByZXR1cm4gZmFsc2U7DQo+ICAgICAgICBpbnRlcm5hbF9m biBpZm4gPSBnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAoY2FsbDEpOw0KPiAt ICAgICAgaWYgKGlmbiAhPSBJRk5fTUFTS19MT0FEICYmIGlmbiAhPSBJRk5f TUFTS19TVE9SRSkNCj4gKyAgICAgIGlmIChpZm4gIT0gSUZOX01BU0tfTE9B RCAmJiBpZm4gIT0gSUZOX01BU0tfU1RPUkUNCj4gKyAgICYmIGlmbiAhPSBJ Rk5fTEVOX01BU0tfTE9BRCAmJiBpZm4gIT0gSUZOX0xFTl9NQVNLX1NUT1JF KQ0KPiAgcmV0dXJuIGZhbHNlOw0KPiAgICAgICAgaWYgKGlmbiAhPSBnaW1w bGVfY2FsbF9pbnRlcm5hbF9mbiAoY2FsbDIpKQ0KPiAgcmV0dXJuIGZhbHNl Ow0KPiAgDQo+ICAgICAgICAvKiBDaGVjayB0aGF0IHRoZSBtYXNrcyBhcmUg dGhlIHNhbWUuICBDb3BlIHdpdGggY2FzdHMgb2YgbWFza3MsDQo+ICBsaWtl IHRob3NlIGNyZWF0ZWQgYnkgYnVpbGRfbWFza19jb252ZXJzaW9uLiAgKi8N Cj4gLSAgICAgIHRyZWUgbWFzazEgPSBnaW1wbGVfY2FsbF9hcmcgKGNhbGwx LCAyKTsNCj4gLSAgICAgIHRyZWUgbWFzazIgPSBnaW1wbGVfY2FsbF9hcmcg KGNhbGwyLCAyKTsNCj4gKyAgICAgIHVuc2lnbmVkIGludCBtYXNrX2FyZ25v DQo+ICsgPSBpZm4gPT0gSUZOX0xFTl9NQVNLX0xPQUQgfHwgaWZuID09IElG Tl9MRU5fTUFTS19TVE9SRSA/IDMgOiAyOw0KPiArICAgICAgdHJlZSBtYXNr MSA9IGdpbXBsZV9jYWxsX2FyZyAoY2FsbDEsIG1hc2tfYXJnbm8pOw0KPiAr ICAgICAgdHJlZSBtYXNrMiA9IGdpbXBsZV9jYWxsX2FyZyAoY2FsbDIsIG1h c2tfYXJnbm8pOw0KPiAgICAgICAgaWYgKCFvcGVyYW5kX2VxdWFsX3AgKG1h c2sxLCBtYXNrMiwgMCkNCj4gLSAgICAgICAgICAmJiAoaWZuID09IElGTl9N QVNLX1NUT1JFIHx8ICFhbGxvd19zbHBfcCkpDQo+ICsgICAmJiAoaWZuID09 IElGTl9NQVNLX1NUT1JFIHx8IGlmbiA9PSBJRk5fTEVOX01BU0tfU1RPUkUN Cj4gKyAgICAgICB8fCAhYWxsb3dfc2xwX3ApKQ0KIA0KSSB0aGluayB5b3Ug bmVlZCB0byB2ZXJpZnkgdGhlIGxlbmd0aCBvcGVyYW5kIGlzIHRoZSBmdWxs IHZlY3Rvciwgbm90ZQ0KdGhpcyBpcyBmb3IgaWYtY29udmVyc2lvbiB3aGlj aCBjb3VsZCBjYXJlIGxlc3MgZm9yIF9MRU4sIGJ1dCBpZiB3ZQ0KaW5zaXN0 IG9uIHVzaW5nIF9MRU4gKEkgZGlkbid0IHNlZSB5b3UgY2hhbmdpbmcgaWYt Y29udmVyc2lvbiB0aGF0DQp3YXk/ISkgdGhlbiB3ZSBuZWVkIHRvIHB1dCBp biBzb21lIHZhbHVlIGV2ZW4gZm9yIHRoZSAic2NhbGFyIg0KcGxhY2Vob2xk ZXIuICBJJ2Qgc3VnZ2VzdCB0byBzaW1wbHkgdXNlIElGTl9NQVNLX3tMT0FE LFNUT1JFfSBpbg0KaWYtY29udmVyc2lvbiBidXQgdmVjdG9yaXplIHRoYXQg YXMgTEVOXyB3aXRoIGZ1bGwgbGVuZ3RoIGlmDQpwbGFpbiBNQVNLX0xPQUQv U1RPUkUgaXNuJ3QgYXZhaWxhYmxlLiAgV2hpY2ggbWVhbnMgdGhlc2UgY2hh bmdlcw0KYXJlIG5vdCBuZWNlc3NhcnkgYXQgYWxsLg0KIA0KPiAgew0KPiAg ICBtYXNrMSA9IHN0cmlwX2NvbnZlcnNpb24gKG1hc2sxKTsNCj4gICAgaWYg KCFtYXNrMSkNCj4gQEAgLTQyOTIsNyArNDI5Niw5IEBAIHZlY3RfZmluZF9z dG10X2RhdGFfcmVmZXJlbmNlIChsb29wX3AgbG9vcCwgZ2ltcGxlICpzdG10 LA0KPiAgICBpZiAoZ2NhbGwgKmNhbGwgPSBkeW5fY2FzdCA8Z2NhbGwgKj4g KHN0bXQpKQ0KPiAgICAgIGlmICghZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAo Y2FsbCkNCj4gIHx8IChnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAoY2FsbCkg IT0gSUZOX01BU0tfTE9BRA0KPiAtICAgICAmJiBnaW1wbGVfY2FsbF9pbnRl cm5hbF9mbiAoY2FsbCkgIT0gSUZOX01BU0tfU1RPUkUpKQ0KPiArICAgICAm JiBnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAoY2FsbCkgIT0gSUZOX01BU0tf U1RPUkUNCj4gKyAgICAgJiYgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfZm4gKGNh bGwpICE9IElGTl9MRU5fTUFTS19MT0FEDQo+ICsgICAgICYmIGdpbXBsZV9j YWxsX2ludGVybmFsX2ZuIChjYWxsKSAhPSBJRk5fTEVOX01BU0tfU1RPUkUp KQ0KPiAgICAgICAgew0KPiAgZnJlZV9kYXRhX3JlZiAoZHIpOw0KPiAgcmV0 dXJuIG9wdF9yZXN1bHQ6OmZhaWx1cmVfYXQgKHN0bXQsDQo+IEBAIC02NzMx LDcgKzY3MzcsOSBAQCB2ZWN0X3N1cHBvcnRhYmxlX2RyX2FsaWdubWVudCAo dmVjX2luZm8gKnZpbmZvLCBkcl92ZWNfaW5mbyAqZHJfaW5mbywNCj4gICAg aWYgKGdjYWxsICpzdG10ID0gZHluX2Nhc3QgPGdjYWxsICo+IChzdG10X2lu Zm8tPnN0bXQpKQ0KPiAgICAgIGlmIChnaW1wbGVfY2FsbF9pbnRlcm5hbF9w IChzdG10KQ0KPiAgJiYgKGdpbXBsZV9jYWxsX2ludGVybmFsX2ZuIChzdG10 KSA9PSBJRk5fTUFTS19MT0FEDQo+IC0gICAgIHx8IGdpbXBsZV9jYWxsX2lu dGVybmFsX2ZuIChzdG10KSA9PSBJRk5fTUFTS19TVE9SRSkpDQo+ICsgICAg IHx8IGdpbXBsZV9jYWxsX2ludGVybmFsX2ZuIChzdG10KSA9PSBJRk5fTUFT S19TVE9SRQ0KPiArICAgICB8fCBnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAo c3RtdCkgPT0gSUZOX0xFTl9NQVNLX0xPQUQNCj4gKyAgICAgfHwgZ2ltcGxl X2NhbGxfaW50ZXJuYWxfZm4gKHN0bXQpID09IElGTl9MRU5fTUFTS19TVE9S RSkpDQo+ICAgICAgICByZXR1cm4gZHJfdW5hbGlnbmVkX3N1cHBvcnRlZDsN Cj4gIA0KPiAgICBpZiAobG9vcF92aW5mbykNCj4gZGlmZiAtLWdpdCBhL2dj Yy90cmVlLXZlY3QtbG9vcC5jYyBiL2djYy90cmVlLXZlY3QtbG9vcC5jYw0K PiBpbmRleCBhY2U5ZTc1OWY1Yi4uMDNkZTQxZDQ5ODggMTAwNjQ0DQo+IC0t LSBhL2djYy90cmVlLXZlY3QtbG9vcC5jYw0KPiArKysgYi9nY2MvdHJlZS12 ZWN0LWxvb3AuY2MNCj4gQEAgLTEyOTYsMzAgKzEyOTYsMzMgQEAgdmVjdF92 ZXJpZnlfbG9vcF9sZW5zIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8pDQo+ ICAgIGlmIChMT09QX1ZJTkZPX0xFTlMgKGxvb3BfdmluZm8pLmlzX2VtcHR5 ICgpKQ0KPiAgICAgIHJldHVybiBmYWxzZTsNCj4gIA0KPiAtICBtYWNoaW5l X21vZGUgbGVuX2xvYWRfbW9kZSA9IGdldF9sZW5fbG9hZF9zdG9yZV9tb2Rl DQo+IC0gICAgKGxvb3BfdmluZm8tPnZlY3Rvcl9tb2RlLCB0cnVlKS5yZXF1 aXJlICgpOw0KPiAtICBtYWNoaW5lX21vZGUgbGVuX3N0b3JlX21vZGUgPSBn ZXRfbGVuX2xvYWRfc3RvcmVfbW9kZQ0KPiAtICAgIChsb29wX3ZpbmZvLT52 ZWN0b3JfbW9kZSwgZmFsc2UpLnJlcXVpcmUgKCk7DQo+ICsgIGlmICghY2Fu X3ZlY19sZW5fbWFza19sb2FkX3N0b3JlX3AgKGxvb3BfdmluZm8tPnZlY3Rv cl9tb2RlLCB0cnVlKQ0KPiArICAgICAgJiYgIWNhbl92ZWNfbGVuX21hc2tf bG9hZF9zdG9yZV9wIChsb29wX3ZpbmZvLT52ZWN0b3JfbW9kZSwgZmFsc2Up KQ0KPiArICAgIHsNCj4gKyAgICAgIG1hY2hpbmVfbW9kZSBsZW5fbG9hZF9t b2RlDQo+ICsgPSBnZXRfbGVuX2xvYWRfc3RvcmVfbW9kZSAobG9vcF92aW5m by0+dmVjdG9yX21vZGUsIHRydWUpLnJlcXVpcmUgKCk7DQo+ICsgICAgICBt YWNoaW5lX21vZGUgbGVuX3N0b3JlX21vZGUNCj4gKyA9IGdldF9sZW5fbG9h ZF9zdG9yZV9tb2RlIChsb29wX3ZpbmZvLT52ZWN0b3JfbW9kZSwgZmFsc2Up LnJlcXVpcmUgKCk7DQogDQphcyB3aXRoIGNhbl9tYXNrXyogd2UgZG9uJ3Qg cmVhbGx5IGNhcmUgaWYgbWFza2luZyBpcyBzdXBwb3J0ZWQgb3INCm5vdCBz byBJIHN1Z2dlc3QgdG8gYW1lbmQgZ2V0X2xlbl9sb2FkX3N0b3JlX21vZGUg dG8gYWxzbyBjaGVjayB0aGUNCmxlbl9tYXNre2xvYWQsc3RvcmV9IG9wdGFi cz8gIEdpdmVuIHRoYXQgdGhlIGZ1bmN0aW9uDQpzaG91bGQgcG9zc2libHkg cmV0dXJuIHRoZSBjb3JyZXNwb25kaW5nIElGTiBhcyB3ZWxsLg0KIA0KPiAt ICBzaWduZWQgY2hhciBwYXJ0aWFsX2xvYWRfYmlhcyA9IGludGVybmFsX2xl bl9sb2FkX3N0b3JlX2JpYXMNCj4gLSAgICAoSUZOX0xFTl9MT0FELCBsZW5f bG9hZF9tb2RlKTsNCj4gKyAgICAgIHNpZ25lZCBjaGFyIHBhcnRpYWxfbG9h ZF9iaWFzDQo+ICsgPSBpbnRlcm5hbF9sZW5fbG9hZF9zdG9yZV9iaWFzIChJ Rk5fTEVOX0xPQUQsIGxlbl9sb2FkX21vZGUpOw0KPiAgDQo+IC0gIHNpZ25l ZCBjaGFyIHBhcnRpYWxfc3RvcmVfYmlhcyA9IGludGVybmFsX2xlbl9sb2Fk X3N0b3JlX2JpYXMNCj4gLSAgICAoSUZOX0xFTl9TVE9SRSwgbGVuX3N0b3Jl X21vZGUpOw0KPiArICAgICAgc2lnbmVkIGNoYXIgcGFydGlhbF9zdG9yZV9i aWFzDQo+ICsgPSBpbnRlcm5hbF9sZW5fbG9hZF9zdG9yZV9iaWFzIChJRk5f TEVOX1NUT1JFLCBsZW5fc3RvcmVfbW9kZSk7DQo+ICANCj4gLSAgZ2NjX2Fz c2VydCAocGFydGlhbF9sb2FkX2JpYXMgPT0gcGFydGlhbF9zdG9yZV9iaWFz KTsNCj4gKyAgICAgIGdjY19hc3NlcnQgKHBhcnRpYWxfbG9hZF9iaWFzID09 IHBhcnRpYWxfc3RvcmVfYmlhcyk7DQo+ICANCj4gLSAgaWYgKHBhcnRpYWxf bG9hZF9iaWFzID09IFZFQ1RfUEFSVElBTF9CSUFTX1VOU1VQUE9SVEVEKQ0K PiAtICAgIHJldHVybiBmYWxzZTsNCj4gKyAgICAgIGlmIChwYXJ0aWFsX2xv YWRfYmlhcyA9PSBWRUNUX1BBUlRJQUxfQklBU19VTlNVUFBPUlRFRCkNCj4g KyByZXR1cm4gZmFsc2U7DQo+ICANCj4gLSAgLyogSWYgdGhlIGJhY2tlbmQg cmVxdWlyZXMgYSBiaWFzIG9mIC0xIGZvciBMRU5fTE9BRCwgd2UgbXVzdCBu b3QgZW1pdA0KPiAtICAgICBsZW5fbG9hZHMgd2l0aCBhIGxlbmd0aCBvZiB6 ZXJvLiAgSW4gb3JkZXIgdG8gYXZvaWQgdGhhdCB3ZSBwcm9oaWJpdA0KPiAt ICAgICBtb3JlIHRoYW4gb25lIGxvb3AgbGVuZ3RoIGhlcmUuICAqLw0KPiAt ICBpZiAocGFydGlhbF9sb2FkX2JpYXMgPT0gLTENCj4gLSAgICAgICYmIExP T1BfVklORk9fTEVOUyAobG9vcF92aW5mbykubGVuZ3RoICgpID4gMSkNCj4g LSAgICByZXR1cm4gZmFsc2U7DQo+ICsgICAgICAvKiBJZiB0aGUgYmFja2Vu ZCByZXF1aXJlcyBhIGJpYXMgb2YgLTEgZm9yIExFTl9MT0FELCB3ZSBtdXN0 IG5vdCBlbWl0DQo+ICsgbGVuX2xvYWRzIHdpdGggYSBsZW5ndGggb2YgemVy by4gIEluIG9yZGVyIHRvIGF2b2lkIHRoYXQgd2UgcHJvaGliaXQNCj4gKyBt b3JlIHRoYW4gb25lIGxvb3AgbGVuZ3RoIGhlcmUuICAqLw0KPiArICAgICAg aWYgKHBhcnRpYWxfbG9hZF9iaWFzID09IC0xICYmIExPT1BfVklORk9fTEVO UyAobG9vcF92aW5mbykubGVuZ3RoICgpID4gMSkNCj4gKyByZXR1cm4gZmFs c2U7DQo+ICANCj4gLSAgTE9PUF9WSU5GT19QQVJUSUFMX0xPQURfU1RPUkVf QklBUyAobG9vcF92aW5mbykgPSBwYXJ0aWFsX2xvYWRfYmlhczsNCj4gKyAg ICAgIExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NUT1JFX0JJQVMgKGxvb3Bf dmluZm8pID0gcGFydGlhbF9sb2FkX2JpYXM7DQo+ICsgICAgfQ0KPiAgDQo+ ICAgIHVuc2lnbmVkIGludCBtYXhfbml0ZW1zX3Blcl9pdGVyID0gMTsNCj4g ICAgdW5zaWduZWQgaW50IGk7DQo+IEBAIC0xMTMxNyw3ICsxMTMyMCw4IEBA IG9wdGltaXplX21hc2tfc3RvcmVzIChjbGFzcyBsb29wICpsb29wKQ0KPiAg ICAgZ3NpX25leHQgKCZnc2kpKQ0KPiAgew0KPiAgICBzdG10ID0gZ3NpX3N0 bXQgKGdzaSk7DQo+IC0gICBpZiAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAo c3RtdCwgSUZOX01BU0tfU1RPUkUpKQ0KPiArICAgaWYgKGdpbXBsZV9jYWxs X2ludGVybmFsX3AgKHN0bXQsIElGTl9NQVNLX1NUT1JFKQ0KPiArICAgICAg IHx8IGdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9MRU5fTUFT S19TVE9SRSkpDQo+ICAgICAgd29ya2xpc3Quc2FmZV9wdXNoIChzdG10KTsN Cj4gIH0NCj4gICAgICB9DQo+IEBAIC0xMTM0MCw3ICsxMTM0NCw4IEBAIG9w dGltaXplX21hc2tfc3RvcmVzIChjbGFzcyBsb29wICpsb29wKQ0KPiAgICAg ICAgdHJlZSB6ZXJvOw0KPiAgDQo+ICAgICAgICBsYXN0ID0gd29ya2xpc3Qu cG9wICgpOw0KPiAtICAgICAgbWFzayA9IGdpbXBsZV9jYWxsX2FyZyAobGFz dCwgMik7DQo+ICsgICAgICBtYXNrID0gZ2ltcGxlX2NhbGxfYXJnICgNCj4g KyBsYXN0LCBnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fTEVO X01BU0tfU1RPUkUpID8gMyA6IDIpOw0KIA0KdXNlIHRoZSBwcm9wZXIgaWZu IGluZGV4IGNvbXB1dGUgZm4NCiANCj4gICAgICAgIGJiID0gZ2ltcGxlX2Ji IChsYXN0KTsNCj4gICAgICAgIC8qIENyZWF0ZSB0aGVuX2JiIGFuZCBpZi10 aGVuIHN0cnVjdHVyZSBpbiBDRkcsIHRoZW5fYmIgYmVsb25ncyB0bw0KPiAg dGhlIHNhbWUgbG9vcCBhcyBpZl9iYi4gIEl0IGNvdWxkIGJlIGRpZmZlcmVu dCB0byBMT09QIHdoZW4gdHdvDQo+IEBAIC0xMTQ3Myw3ICsxMTQ3OCwxMiBA QCBvcHRpbWl6ZV9tYXNrX3N0b3JlcyAoY2xhc3MgbG9vcCAqbG9vcCkNCj4g ICAgICB9DQo+ICAgIC8qIFB1dCBvdGhlciBtYXNrZWQgc3RvcmVzIHdpdGgg dGhlIHNhbWUgbWFzayB0byBTVE9SRV9CQi4gICovDQo+ICAgIGlmICh3b3Jr bGlzdC5pc19lbXB0eSAoKQ0KPiAtICAgICAgIHx8IGdpbXBsZV9jYWxsX2Fy ZyAod29ya2xpc3QubGFzdCAoKSwgMikgIT0gbWFzaw0KPiArICAgICAgIHx8 IGdpbXBsZV9jYWxsX2FyZyAod29ya2xpc3QubGFzdCAoKSwNCj4gKyAgIGdp bXBsZV9jYWxsX2ludGVybmFsX3AgKHdvcmtsaXN0Lmxhc3QgKCksDQo+ICsg ICBJRk5fTEVOX01BU0tfU1RPUkUpDQo+ICsgICAgID8gMw0KPiArICAgICA6 IDIpDQogDQp1c2UgdGhlIHByb3BlciBpZm4gaW5kZXggY29tcHV0ZSBmbg0K IA0KPiArICAgICE9IG1hc2sNCj4gICAgICAgIHx8IHdvcmtsaXN0Lmxhc3Qg KCkgIT0gc3RtdDEpDQo+ICAgICAgYnJlYWs7DQo+ICAgIGxhc3QgPSB3b3Jr bGlzdC5wb3AgKCk7DQo+IGRpZmYgLS1naXQgYS9nY2MvdHJlZS12ZWN0LXNs cC5jYyBiL2djYy90cmVlLXZlY3Qtc2xwLmNjDQo+IGluZGV4IGFiODlhODJm MWIzLi45MzdiNTI5NWRmNCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVj dC1zbHAuY2MNCj4gKysrIGIvZ2NjL3RyZWUtdmVjdC1zbHAuY2MNCj4gQEAg LTQ4OSw2ICs0ODksNyBAQCBzdGF0aWMgY29uc3QgaW50IGNvbmRfZXhwcl9t YXBzWzNdWzVdID0gew0KPiAgfTsNCj4gIHN0YXRpYyBjb25zdCBpbnQgYXJn MV9tYXBbXSA9IHsgMSwgMSB9Ow0KPiAgc3RhdGljIGNvbnN0IGludCBhcmcy X21hcFtdID0geyAxLCAyIH07DQo+ICtzdGF0aWMgY29uc3QgaW50IGFyZzNf bWFwW10gPSB7IDEsIDMgfTsNCj4gIHN0YXRpYyBjb25zdCBpbnQgYXJnMV9h cmc0X21hcFtdID0geyAyLCAxLCA0IH07DQo+ICBzdGF0aWMgY29uc3QgaW50 IG9wMV9vcDBfbWFwW10gPSB7IDIsIDEsIDAgfTsNCj4gIA0KPiBAQCAtNTI0 LDYgKzUyNSw5IEBAIHZlY3RfZ2V0X29wZXJhbmRfbWFwIChjb25zdCBnaW1w bGUgKnN0bXQsIHVuc2lnbmVkIGNoYXIgc3dhcCA9IDApDQo+ICAgIGNhc2Ug SUZOX01BU0tfTE9BRDoNCj4gICAgICByZXR1cm4gYXJnMl9tYXA7DQo+ICAN Cj4gKyAgIGNhc2UgSUZOX0xFTl9NQVNLX0xPQUQ6DQo+ICsgICAgIHJldHVy biBhcmczX21hcDsNCj4gKw0KPiAgICBjYXNlIElGTl9HQVRIRVJfTE9BRDoN Cj4gICAgICByZXR1cm4gYXJnMV9tYXA7DQo+ICANCj4gQEAgLTE3NzksNiAr MTc4Myw3IEBAIHZlY3RfYnVpbGRfc2xwX3RyZWVfMiAodmVjX2luZm8gKnZp bmZvLCBzbHBfdHJlZSBub2RlLA0KPiAgICAgIHsNCj4gICAgICAgIGlmIChn Y2FsbCAqc3RtdCA9IGR5bl9jYXN0IDxnY2FsbCAqPiAoc3RtdF9pbmZvLT5z dG10KSkNCj4gIGdjY19hc3NlcnQgKGdpbXBsZV9jYWxsX2ludGVybmFsX3Ag KHN0bXQsIElGTl9NQVNLX0xPQUQpDQo+ICsgICAgIHx8IGdpbXBsZV9jYWxs X2ludGVybmFsX3AgKHN0bXQsIElGTl9MRU5fTUFTS19MT0FEKQ0KIA0KSXQn cyBwcm9iYWJseSBub3QgbmVjZXNzYXJ5IHRvIGhhbmRsZSB0aGlzIGlmIGlm LWNvbnZlcnNpb24gZW1pdHMNCmp1c3QgSUZOX01BU0tfTE9BRC4NCiANCj4g ICAgICB8fCBnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10LCBJRk5fR0FU SEVSX0xPQUQpDQo+ICAgICAgfHwgZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAo c3RtdCwgSUZOX01BU0tfR0FUSEVSX0xPQUQpKTsNCj4gICAgICAgIGVsc2UN Cj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgYi9nY2Mv dHJlZS12ZWN0LXN0bXRzLmNjDQo+IGluZGV4IGE3YWNjMDMyZDQ3Li45Yjc5 N2M2MWM4OCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5j Yw0KPiArKysgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+IEBAIC0xODM3 LDYgKzE4MzcsMTUgQEAgY2hlY2tfbG9hZF9zdG9yZV9mb3JfcGFydGlhbF92 ZWN0b3JzIChsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sIHRyZWUgdmVjdHlw ZSwNCj4gICAgICAgIHVzaW5nX3BhcnRpYWxfdmVjdG9yc19wID0gdHJ1ZTsN Cj4gICAgICB9DQo+ICANCj4gKyAgaWYgKGNhbl92ZWNfbGVuX21hc2tfbG9h ZF9zdG9yZV9wICh2ZWNtb2RlLCBpc19sb2FkKSkNCj4gKyAgICB7DQo+ICsg ICAgICBudmVjdG9ycyA9IGdyb3VwX21lbW9yeV9udmVjdG9ycyAoZ3JvdXBf c2l6ZSAqIHZmLCBudW5pdHMpOw0KPiArICAgICAgLyogTGVuZ3RoIGlzIHVz ZWQgb24gbG9vcCBjb250cm9sIGFuZCBtYXNrIGZvciBmbG93IGNvbnRyb2wu Ki8NCj4gKyAgICAgIHZlY19sb29wX2xlbnMgKmxlbnMgPSAmTE9PUF9WSU5G T19MRU5TIChsb29wX3ZpbmZvKTsNCj4gKyAgICAgIHZlY3RfcmVjb3JkX2xv b3BfbGVuIChsb29wX3ZpbmZvLCBsZW5zLCBudmVjdG9ycywgdmVjdHlwZSwg MSk7DQo+ICsgICAgICB1c2luZ19wYXJ0aWFsX3ZlY3RvcnNfcCA9IHRydWU7 DQo+ICsgICAgfQ0KPiArDQogDQpzbyB0aGlzIGFuc3dlcnMgbXkgcXVlc3Rp b24gLSB5b3UganVzdCBoYXZlIGxlbl9tYXNre2xvYWQsc3RvcmV9Pw0KIA0K PiAgICBpZiAoIXVzaW5nX3BhcnRpYWxfdmVjdG9yc19wKQ0KPiAgICAgIHsN Cj4gICAgICAgIGlmIChkdW1wX2VuYWJsZWRfcCAoKSkNCj4gQEAgLTc5Nzgs OCArNzk4Nyw5IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVjX2luZm8gKnZp bmZvLA0KPiAgICAgICAgaWYgKG1lbW9yeV9hY2Nlc3NfdHlwZSA9PSBWTUFU X0NPTlRJR1VPVVMpDQo+ICB7DQo+ICAgIGlmICghVkVDVE9SX01PREVfUCAo dmVjX21vZGUpDQo+IC0gICAgICAgfHwgIWNhbl92ZWNfbWFza19sb2FkX3N0 b3JlX3AgKHZlY19tb2RlLA0KPiAtICAgICAgVFlQRV9NT0RFIChtYXNrX3Zl Y3R5cGUpLCBmYWxzZSkpDQo+ICsgICAgICAgfHwgKCFjYW5fdmVjX21hc2tf bG9hZF9zdG9yZV9wICh2ZWNfbW9kZSwNCj4gKyAgICAgICBUWVBFX01PREUg KG1hc2tfdmVjdHlwZSksIGZhbHNlKQ0KPiArICAgJiYgIWNhbl92ZWNfbGVu X21hc2tfbG9hZF9zdG9yZV9wICh2ZWNfbW9kZSwgZmFsc2UpKSkNCj4gICAg ICByZXR1cm4gZmFsc2U7DQo+ICB9DQo+ICAgICAgICBlbHNlIGlmIChtZW1v cnlfYWNjZXNzX3R5cGUgIT0gVk1BVF9MT0FEX1NUT1JFX0xBTkVTDQo+IEBA IC04OTQyLDcgKzg5NTIsMzggQEAgdmVjdG9yaXphYmxlX3N0b3JlICh2ZWNf aW5mbyAqdmluZm8sDQo+ICB9DQo+ICANCj4gICAgICAgIC8qIEFyZ3VtZW50 cyBhcmUgcmVhZHkuICBDcmVhdGUgdGhlIG5ldyB2ZWN0b3Igc3RtdC4gICov DQo+IC0gICAgICAgaWYgKGZpbmFsX21hc2spDQo+ICsgICAgICAgaWYgKGNh bl92ZWNfbGVuX21hc2tfbG9hZF9zdG9yZV9wIChUWVBFX01PREUgKHZlY3R5 cGUpLCBmYWxzZSkNCj4gKyAgICYmIChmaW5hbF9tYXNrIHx8IGxvb3BfbGVu cykpDQogDQpJIHRoaW5rIHdlIHJlYWxseSB3YW50IHRvIGNvbW1vbiB0aGlz IHNvbWVob3csIGhhdmluZw0KaWYgKGxvb3BfbGVucykgZG8gdGhlIGZpbmFs X2xlbiBjb21wdXRlIGFuZCB0aGVuIGFmdGVyd2FyZHMNCnNlbGVjdCB0aGUg SUZOIHRvIGNyZWF0ZSwgZmlsbGluZyByZXF1aXJlZCBkZWZhdWx0IGFyZ3Mg b2YNCmZpbmFsX21hc2sgYW5kIGZpbmFsX2xlbiBpZiBub3QgY29tcHV0ZWQu DQogDQo+ICsgew0KPiArICAgdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChy ZWZfdHlwZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklUKTsNCj4gKyAgIHBvbHlf dWludDY0IG51bml0cyA9IFRZUEVfVkVDVE9SX1NVQlBBUlRTICh2ZWN0eXBl KTsNCj4gKyAgIGlmICghZmluYWxfbWFzaykNCj4gKyAgICAgew0KPiArICAg ICAgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUNCj4gKyA9IHRhcmdldG0udmVj dG9yaXplLmdldF9tYXNrX21vZGUgKFRZUEVfTU9ERSAodmVjdHlwZSkpDQo+ ICsgICAgIC5yZXF1aXJlICgpOw0KPiArICAgICAgIG1hc2tfdmVjdHlwZQ0K PiArID0gYnVpbGRfdHJ1dGhfdmVjdG9yX3R5cGVfZm9yX21vZGUgKG51bml0 cywgbWFza19tb2RlKTsNCj4gKyAgICAgICB0cmVlIG1hc2sgPSBidWlsZF9p bnRfY3N0IChUUkVFX1RZUEUgKG1hc2tfdmVjdHlwZSksIC0xKTsNCj4gKyAg ICAgICBmaW5hbF9tYXNrID0gYnVpbGRfdmVjdG9yX2Zyb21fdmFsIChtYXNr X3ZlY3R5cGUsIG1hc2spOw0KPiArICAgICB9DQo+ICsgICB0cmVlIGl2X3R5 cGUgPSBMT09QX1ZJTkZPX1JHUk9VUF9JVl9UWVBFIChsb29wX3ZpbmZvKTsN Cj4gKyAgIHRyZWUgZmluYWxfbGVuOw0KPiArICAgaWYgKGxvb3BfbGVucykN Cj4gKyAgICAgZmluYWxfbGVuID0gdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3Bf dmluZm8sIGdzaSwgbG9vcF9sZW5zLA0KPiArICAgIHZlY19udW0gKiBuY29w aWVzLCB2ZWN0eXBlLA0KPiArICAgIHZlY19udW0gKiBqICsgaSwgMSk7DQo+ ICsgICBlbHNlDQo+ICsgICAgIGZpbmFsX2xlbiA9IGJ1aWxkX2ludF9jc3Qg KGl2X3R5cGUsIG51bml0cyk7DQo+ICsgICBnY2FsbCAqY2FsbA0KPiArICAg ICA9IGdpbXBsZV9idWlsZF9jYWxsX2ludGVybmFsIChJRk5fTEVOX01BU0tf U1RPUkUsIDUsDQo+ICsgICBkYXRhcmVmX3B0ciwgcHRyLCBmaW5hbF9sZW4s DQo+ICsgICBmaW5hbF9tYXNrLCB2ZWNfb3BybmQpOw0KPiArICAgZ2ltcGxl X2NhbGxfc2V0X25vdGhyb3cgKGNhbGwsIHRydWUpOw0KPiArICAgdmVjdF9m aW5pc2hfc3RtdF9nZW5lcmF0aW9uICh2aW5mbywgc3RtdF9pbmZvLCBjYWxs LCBnc2kpOw0KPiArICAgbmV3X3N0bXQgPSBjYWxsOw0KPiArIH0NCj4gKyAg ICAgICBlbHNlIGlmIChmaW5hbF9tYXNrKQ0KPiAgew0KPiAgICB0cmVlIHB0 ciA9IGJ1aWxkX2ludF9jc3QgKHJlZl90eXBlLCBhbGlnbiAqIEJJVFNfUEVS X1VOSVQpOw0KPiAgICBnY2FsbCAqY2FsbA0KPiBAQCAtOTQwNyw4ICs5NDQ4 LDkgQEAgdmVjdG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywNCj4g IHsNCj4gICAgbWFjaGluZV9tb2RlIHZlY19tb2RlID0gVFlQRV9NT0RFICh2 ZWN0eXBlKTsNCj4gICAgaWYgKCFWRUNUT1JfTU9ERV9QICh2ZWNfbW9kZSkN Cj4gLSAgICAgICB8fCAhY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVfcCAodmVj X21vZGUsDQo+IC0gICAgICBUWVBFX01PREUgKG1hc2tfdmVjdHlwZSksIHRy dWUpKQ0KPiArICAgICAgIHx8ICghY2FuX3ZlY19tYXNrX2xvYWRfc3RvcmVf cCAodmVjX21vZGUsDQo+ICsgICAgICAgVFlQRV9NT0RFIChtYXNrX3ZlY3R5 cGUpLCB0cnVlKQ0KPiArICAgJiYgIWNhbl92ZWNfbGVuX21hc2tfbG9hZF9z dG9yZV9wICh2ZWNfbW9kZSwgZmFsc2UpKSkNCj4gICAgICByZXR1cm4gZmFs c2U7DQo+ICB9DQo+ICAgICAgICBlbHNlIGlmIChtZW1vcnlfYWNjZXNzX3R5 cGUgIT0gVk1BVF9MT0FEX1NUT1JFX0xBTkVTDQo+IEBAIC0xMDMwMSw3ICsx MDM0Myw0NyBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVjX2luZm8gKnZpbmZv LA0KPiAgICAgICAgYWxpZ24sIG1pc2FsaWduKTsNCj4gICAgICBhbGlnbiA9 IGxlYXN0X2JpdF9od2kgKG1pc2FsaWduIHwgYWxpZ24pOw0KPiAgDQo+IC0g ICAgIGlmIChmaW5hbF9tYXNrKQ0KPiArICAgICBpZiAoY2FuX3ZlY19sZW5f bWFza19sb2FkX3N0b3JlX3AgKFRZUEVfTU9ERSAodmVjdHlwZSksDQo+ICsg ICAgICAgIHRydWUpDQo+ICsgJiYgKGZpbmFsX21hc2sgfHwgbG9vcF9sZW5z KQ0KPiArICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFUX0lOVkFSSUFO VCkNCiANCnNhbWUNCiANCj4gKyAgICAgICB7DQo+ICsgdHJlZSBwdHINCj4g KyAgID0gYnVpbGRfaW50X2NzdCAocmVmX3R5cGUsIGFsaWduICogQklUU19Q RVJfVU5JVCk7DQo+ICsgcG9seV91aW50NjQgbnVuaXRzID0gVFlQRV9WRUNU T1JfU1VCUEFSVFMgKHZlY3R5cGUpOw0KPiArIGlmICghZmluYWxfbWFzaykN Cj4gKyAgIHsNCj4gKyAgICAgbWFjaGluZV9tb2RlIG1hc2tfbW9kZQ0KPiAr ICAgICAgID0gdGFyZ2V0bS52ZWN0b3JpemUNCj4gKyAgIC5nZXRfbWFza19t b2RlIChUWVBFX01PREUgKHZlY3R5cGUpKQ0KPiArICAgLnJlcXVpcmUgKCk7 DQo+ICsgICAgIG1hc2tfdmVjdHlwZQ0KPiArICAgICAgID0gYnVpbGRfdHJ1 dGhfdmVjdG9yX3R5cGVfZm9yX21vZGUgKG51bml0cywNCj4gKyAgIG1hc2tf bW9kZSk7DQo+ICsgICAgIHRyZWUgbWFzaw0KPiArICAgICAgID0gYnVpbGRf aW50X2NzdCAoVFJFRV9UWVBFIChtYXNrX3ZlY3R5cGUpLCAtMSk7DQo+ICsg ICAgIGZpbmFsX21hc2sNCj4gKyAgICAgICA9IGJ1aWxkX3ZlY3Rvcl9mcm9t X3ZhbCAobWFza192ZWN0eXBlLCBtYXNrKTsNCj4gKyAgIH0NCiANCmFuZCBz cGxpdCB0aGlzIG91dCB0byBhIGhlbHBlciBmdW5jdGlvbg0KIA0KPiArIHRy ZWUgaXZfdHlwZSA9IExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3Bf dmluZm8pOw0KPiArIHRyZWUgZmluYWxfbGVuOw0KPiArIGlmIChsb29wX2xl bnMpDQo+ICsgICBmaW5hbF9sZW4NCj4gKyAgICAgPSB2ZWN0X2dldF9sb29w X2xlbiAobG9vcF92aW5mbywgZ3NpLCBsb29wX2xlbnMsDQo+ICsgdmVjX251 bSAqIG5jb3BpZXMsIHZlY3R5cGUsDQo+ICsgdmVjX251bSAqIGogKyBpLCAx KTsNCj4gKyBlbHNlDQo+ICsgICBmaW5hbF9sZW4gPSBidWlsZF9pbnRfY3N0 IChpdl90eXBlLCBudW5pdHMpOw0KPiArDQo+ICsgZ2NhbGwgKmNhbGwNCj4g KyAgID0gZ2ltcGxlX2J1aWxkX2NhbGxfaW50ZXJuYWwgKElGTl9MRU5fTUFT S19MT0FELCA0LA0KPiArIGRhdGFyZWZfcHRyLCBwdHIsDQo+ICsgZmluYWxf bGVuLCBmaW5hbF9tYXNrKTsNCj4gKyBnaW1wbGVfY2FsbF9zZXRfbm90aHJv dyAoY2FsbCwgdHJ1ZSk7DQo+ICsgbmV3X3N0bXQgPSBjYWxsOw0KPiArIGRh dGFfcmVmID0gTlVMTF9UUkVFOw0KPiArICAgICAgIH0NCj4gKyAgICAgZWxz ZSBpZiAoZmluYWxfbWFzaykNCj4gICAgICAgIHsNCj4gIHRyZWUgcHRyID0g YnVpbGRfaW50X2NzdCAocmVmX3R5cGUsDQo+ICAgIGFsaWduICogQklUU19Q RVJfVU5JVCk7DQo+IEBAIC0xMzAyNyw3ICsxMzEwOSw4IEBAIHZlY3RfZ2V0 X3ZlY3Rvcl90eXBlc19mb3Jfc3RtdCAodmVjX2luZm8gKnZpbmZvLCBzdG10 X3ZlY19pbmZvIHN0bXRfaW5mbywNCj4gIA0KPiAgICBpZiAoZ2ltcGxlX2dl dF9saHMgKHN0bXQpID09IE5VTExfVFJFRQ0KPiAgICAgICAgLyogTUFTS19T VE9SRSBoYXMgbm8gbGhzLCBidXQgaXMgb2suICAqLw0KPiAtICAgICAgJiYg IWdpbXBsZV9jYWxsX2ludGVybmFsX3AgKHN0bXQsIElGTl9NQVNLX1NUT1JF KSkNCj4gKyAgICAgICYmICFnaW1wbGVfY2FsbF9pbnRlcm5hbF9wIChzdG10 LCBJRk5fTUFTS19TVE9SRSkNCj4gKyAgICAgICYmICFnaW1wbGVfY2FsbF9p bnRlcm5hbF9wIChzdG10LCBJRk5fTEVOX01BU0tfU1RPUkUpKQ0KIA0KU2Vl IGlmLWNvbnZlcnNpb24gY29tbWVudC4gIFRoaXMgc2hvdWxkbid0IGJlIG5l Y2Vzc2FyeS4NCiANCj4gICAgICB7DQo+ICAgICAgICBpZiAoaXNfYSA8Z2Nh bGwgKj4gKHN0bXQpKQ0KPiAgew0KPiBAQCAtMTMwNzEsNiArMTMxNTQsOCBA QCB2ZWN0X2dldF92ZWN0b3JfdHlwZXNfZm9yX3N0bXQgKHZlY19pbmZvICp2 aW5mbywgc3RtdF92ZWNfaW5mbyBzdG10X2luZm8sDQo+ICBzY2FsYXJfdHlw ZSA9IFRSRUVfVFlQRSAoRFJfUkVGIChkcikpOw0KPiAgICAgICAgZWxzZSBp ZiAoZ2ltcGxlX2NhbGxfaW50ZXJuYWxfcCAoc3RtdCwgSUZOX01BU0tfU1RP UkUpKQ0KPiAgc2NhbGFyX3R5cGUgPSBUUkVFX1RZUEUgKGdpbXBsZV9jYWxs X2FyZyAoc3RtdCwgMykpOw0KPiArICAgICAgZWxzZSBpZiAoZ2ltcGxlX2Nh bGxfaW50ZXJuYWxfcCAoc3RtdCwgSUZOX0xFTl9NQVNLX1NUT1JFKSkNCj4g KyBzY2FsYXJfdHlwZSA9IFRSRUVfVFlQRSAoZ2ltcGxlX2NhbGxfYXJnIChz dG10LCA0KSk7DQo+ICAgICAgICBlbHNlDQo+ICBzY2FsYXJfdHlwZSA9IFRS RUVfVFlQRSAoZ2ltcGxlX2dldF9saHMgKHN0bXQpKTsNCj4gIA0KPiBkaWZm IC0tZ2l0IGEvZ2NjL3RyZWUtdmVjdG9yaXplci5jYyBiL2djYy90cmVlLXZl Y3Rvcml6ZXIuY2MNCj4gaW5kZXggYTA0OGU5ZDg5MTcuLjE5MzEyNDA0YWM0 IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS12ZWN0b3JpemVyLmNjDQo+ICsr KyBiL2djYy90cmVlLXZlY3Rvcml6ZXIuY2MNCj4gQEAgLTExMDEsNiArMTEw MSw4IEBAIHRyeV92ZWN0b3JpemVfbG9vcF8xIChoYXNoX3RhYmxlPHNpbWR1 aWRfdG9fdmY+IComc2ltZHVpZF90b192Zl9odGFiLA0KPiAgew0KPiAgICBp bnRlcm5hbF9mbiBpZm4gPSBnaW1wbGVfY2FsbF9pbnRlcm5hbF9mbiAoY2Fs bCk7DQo+ICAgIGlmIChpZm4gPT0gSUZOX01BU0tfTE9BRCB8fCBpZm4gPT0g SUZOX01BU0tfU1RPUkUNCj4gKyAgICAgICB8fCBpZm4gPT0gSUZOX0xFTl9N QVNLX0xPQUQNCj4gKyAgICAgICB8fCBpZm4gPT0gSUZOX0xFTl9NQVNLX1NU T1JFDQogDQpMaWtld2lzZS4NCiANCj4gICAgICAgIC8qIERvbid0IGtlZXAg dGhlIGlmLWNvbnZlcnRlZCBwYXJ0cyB3aGVuIHRoZSBpZm4gd2l0aA0KPiAg c3BlY2lmYyB0eXBlIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGJhY2tlbmQu ICAqLw0KPiAgICAgICAgfHwgKGRpcmVjdF9pbnRlcm5hbF9mbl9wIChpZm4p DQo+IA0KIA0KLS0gDQpSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2Uu ZGU+DQpTVVNFIFNvZnR3YXJlIFNvbHV0aW9ucyBHZXJtYW55IEdtYkgsIEZy YW5rZW5zdHJhc3NlIDE0NiwgOTA0NjEgTnVlcm5iZXJnLA0KR2VybWFueTsg R0Y6IEl2byBUb3RldiwgQW5kcmV3IE15ZXJzLCBBbmRyZXcgTWNEb25hbGQs IEJvdWRpZW4gTW9lcm1hbjsNCkhSQiAzNjgwOSAoQUcgTnVlcm5iZXJnKQ0K IA0K ------=_001_NextPart467588631354_=------