From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg153.qq.com (smtpbg153.qq.com [13.245.218.24]) by sourceware.org (Postfix) with ESMTPS id 8E6B03858D37 for ; Tue, 9 May 2023 13:27:32 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 8E6B03858D37 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: bizesmtp85t1683638844tmxkcuxs Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Tue, 09 May 2023 21:27:23 +0800 (CST) X-QQ-SSF: 01400000000000F0Q000000A0000000 X-QQ-FEAT: siSMCmT9/BN7Ul4R/GNLHoYZIFFHs+6yVHABN3arqFCLozYJh761E158JfJz/ Ol5hLtPNhIGJ51p+1yjkuwpkdV+hp6H/BJ5ylfP/XA6cIQP4iLF+uXqd8ZkmuayPKFHn9PX hWjaYvLPdfbOB67lsdtFjeNkww140FyMMtzIkc8WdjypDKmZjt/8OShRENSOPnekpRGWZ5x 5IasgaUBHSUSEloCVoCfeJexMcGl0hAXqAuWLObpqlzDmicH2OHl6I/UqbCK9GEGqYp9twe zqF685shl6uIC1/UInH33fgHhfNHXs6fBW1TgeGa9gLRsMJKU/NI+MLOl+d2zK6ctaOmaPa 2DpfwEIceAxqzPo2OHcCMS4tYynmVwqe7dLGMDcdUy12nAtrhK4NpW6GRUjDSmzeOmeJ3D3 0z5e93pbk68= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 17070928622445663031 Date: Tue, 9 May 2023 21:27:23 +0800 From: "juzhe.zhong@rivai.ai" To: richard.sandiford Cc: gcc-patches , rguenther Subject: Re: Re: [PATCH V4] VECT: Add decrement IV iteration loop control by variable amount support References: <20230504132540.286148-1-juzhe.zhong@rivai.ai>, <4EF09AECDA5B339B+2023050607411407276371@rivai.ai>, X-Priority: 3 X-GUID: CDDF2D63-5EAD-4619-840A-8AB50996627E X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <796FD4F43279CBA1+20230509212722712059135@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart570258653660_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-7.1 required=5.0 tests=BAYES_00,BODY_8BITS,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,RCVD_IN_SORBS_WEB,SCC_10_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,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_NextPart570258653660_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 VGhhbmtzLCBSaWNoYXJkLg0KDQo+PiBDb3VsZCB5b3UgZ28gaW50byBtb3Jl IGRldGFpbHMgYWJvdXQgdGhpcz8gIEkgaW1hZ2luZWQgdGhhdCBmb3IgY2Fz ZSAzLA0KPj4gdGhlcmUgd291bGQgYmUgYSBzaW5nbGUgU0VMRUNUX1ZMIHRo YXQgZGVjaWRlcyBob3cgbWFueSBzY2FsYXIgaXRlcmF0aW9ucw0KPj4gd2ls bCBiZSBoYW5kbGVkIGJ5IHRoZSBjdXJyZW50IHZlY3RvciBpdGVyYXRpb24s IHRoZW4gd2Ugd291bGQgImV4cGFuZCINCj4+IHRoZSByZXN1bHQgKHVzaW5n IE1JTl9FWFBScykgdG8gdGhlIG11bHRpLWNvbnRyb2wgY2FzZXMuDQoNCkZv ciBjYXNlIDIgLCBoZXJlIGlzIHRoZSBleGFtcGxlOg0KKyAgIDIuIE11bHRp cGxlIHJncm91cCwgdGhlIEdpbXBsZSBJUiBzaG91bGQgYmU6CisKKwkjIGlf MjMgPSBQSEkgPGlfMjAoNiksIDAoMTEpPgorCSMgdmVjdHBfZi44XzUxID0g UEhJIDx2ZWN0cF9mLjhfNTIoNiksIGZfMTUoRCkoMTEpPgorCSMgdmVjdHBf ZC4xMF81OSA9IFBISSA8dmVjdHBfZC4xMF82MCg2KSwgZF8xOChEKSgxMSk+ CisJIyBpdnRtcF83MCA9IFBISSA8aXZ0bXBfNzEoNiksIF82OSgxMSk+CisJ IyBpdnRtcF83MyA9IFBISSA8aXZ0bXBfNzQoNiksIF82NygxMSk+CisJXzcy ID0gTUlOX0VYUFIgPGl2dG1wXzcwLCAxNj47CisJXzc1ID0gTUlOX0VYUFIg PGl2dG1wXzczLCAxNj47CisJXzEgPSBpXzIzICogMjsKKwlfMiA9IChsb25n IHVuc2lnbmVkIGludCkgXzE7CisJXzMgPSBfMiAqIDI7CisJXzQgPSBmXzE1 KEQpICsgXzM7CisJXzUgPSBfMiArIDE7CisJXzYgPSBfNSAqIDI7CisJXzcg PSBmXzE1KEQpICsgXzY7CisJLkxFTl9TVE9SRSAodmVjdHBfZi44XzUxLCAx MjhCLCBfNzUsIHsgMSwgMiwgMSwgMiwgMSwgMiwgMSwgMiB9LCAwKTsKKwl2 ZWN0cF9mLjhfNTYgPSB2ZWN0cF9mLjhfNTEgKyAxNjsKKwkuTEVOX1NUT1JF ICh2ZWN0cF9mLjhfNTYsIDEyOEIsIF83MiwgeyAxLCAyLCAxLCAyLCAxLCAy LCAxLCAyIH0sIDApOworCV84ID0gKGxvbmcgdW5zaWduZWQgaW50KSBpXzIz OworCV85ID0gXzggKiA0OworCV8xMCA9IGRfMTgoRCkgKyBfOTsKKwlfNjEg PSBfNzUgLyAyOworCS5MRU5fU1RPUkUgKHZlY3RwX2QuMTBfNTksIDEyOEIs IF82MSwgeyAzLCAzLCAzLCAzIH0sIDApOworCXZlY3RwX2QuMTBfNjMgPSB2 ZWN0cF9kLjEwXzU5ICsgMTY7CisJXzY0ID0gXzcyIC8gMjsKKwkuTEVOX1NU T1JFICh2ZWN0cF9kLjEwXzYzLCAxMjhCLCBfNjQsIHsgMywgMywgMywgMyB9 LCAwKTsKKwlpXzIwID0gaV8yMyArIDE7CisJdmVjdHBfZi44XzUyID0gdmVj dHBfZi44XzU2ICsgMTY7CisJdmVjdHBfZC4xMF82MCA9IHZlY3RwX2QuMTBf NjMgKyAxNjsKKwlpdnRtcF83NCA9IGl2dG1wXzczIC0gXzc1OworCWl2dG1w XzcxID0gaXZ0bXBfNzAgLSBfNzI7CisJaWYgKGl2dG1wXzc0ICE9IDApCisJ ICBnb3RvIDxiYiA2PjsgWzgzLjMzJV0KKwllbHNlCisJICBnb3RvIDxiYiAx Mz47IFsxNi42NyVdCisKKyAgIE5vdGU6IFdlIERPIE5PVCB1c2UgLlNFTEVD VF9WTCBpbiBTTFAgYXV0by12ZWN0b3JpemF0aW9uIGZvciBtdWx0aXBsZQor ICAgcmdyb3Vwcy4gSW5zdGVhZCwgd2UgdXNlIE1JTl9FWFBSIHRvIGd1YXJh bnRlZSB3ZSBhbHdheXMgdXNlIFZGIGFzIHRoZQorICAgaXRlcmF0aW9uIGFt b3VudCBmb3IgbXV0aXBsZSByZ3JvdXBzLisgICBUaGUgYW5hbHlzaXMgb2Yg dGhlIGZsb3cgb2YgbXVsdGlwbGUgcmdyb3VwczoKKwlfNzIgPSBNSU5fRVhQ UiA8aXZ0bXBfNzAsIDE2PjsKKwlfNzUgPSBNSU5fRVhQUiA8aXZ0bXBfNzMs IDE2PjsKKwkuLi4KKwkuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTEsIDEyOEIs IF83NSwgeyAxLCAyLCAxLCAyLCAxLCAyLCAxLCAyIH0sIDApOworCXZlY3Rw X2YuOF81NiA9IHZlY3RwX2YuOF81MSArIDE2OworCS5MRU5fU1RPUkUgKHZl Y3RwX2YuOF81NiwgMTI4QiwgXzcyLCB7IDEsIDIsIDEsIDIsIDEsIDIsIDEs IDIgfSwgMCk7CisJLi4uCisJXzYxID0gXzc1IC8gMjsKKwkuTEVOX1NUT1JF ICh2ZWN0cF9kLjEwXzU5LCAxMjhCLCBfNjEsIHsgMywgMywgMywgMyB9LCAw KTsKKwl2ZWN0cF9kLjEwXzYzID0gdmVjdHBfZC4xMF81OSArIDE2OworCV82 NCA9IF83MiAvIDI7CisJLkxFTl9TVE9SRSAodmVjdHBfZC4xMF82MywgMTI4 QiwgXzY0LCB7IDMsIDMsIDMsIDMgfSwgMCk7SGVyZSwgSWYgdXNlIFNFTEVD VF9WTCBpbnN0ZWFkIG9mIE1JTl9FWFBSLiBTaW5jZSB3ZSBkZWZpbmUgdGhl IG91dGNvbWUgb2YgU0VMRUNUX1ZMIGNhbiBiZSBhbnkgbnVtYmVyIGluIG5v bi1maW5hbCBpdGVyYXRpb24uSXQgc2VlbXMgbm90IGVhc3kgdG8gYWRqdXN0 IGFkZHJlc3MgcG9pbnRlciBJViAodmVjdHBfZi44XzU2ID0gdmVjdHBfZi44 XzUxICsgMTY7KSBhbmQgdGhlIG5leHQgbGVuZ3RoIChfNjEgPSBfNzUgLyAy OykuDQpGb3IgY2FzZSAzOiArICAzLiBNdWx0aXBsZSByZ3JvdXBzIGZvciBu b24tU0xQIGF1dG8tdmVjdG9yaXphdGlvbi4rCisgICAgICMgaXZ0bXBfMjYg PSBQSEkgPGl2dG1wXzI3KDQpLCBfMjUoMyk+CisgICAgICMgaXZ0bXAuMzVf MTAgPSBQSEkgPGl2dG1wLjM1XzExKDQpLCBpdnRtcC4zNV8xKDMpPgorICAg ICAjIGl2dG1wLjM2XzIgPSBQSEkgPGl2dG1wLjM2XzgoNCksIGl2dG1wLjM2 XzIzKDMpPgorICAgICBfMjggPSBNSU5fRVhQUiA8aXZ0bXBfMjYsIFBPTFlf SU5UX0NTVCBbOCwgOF0+OworICAgICBsb29wX2xlbl8xNSA9IE1JTl9FWFBS IDxfMjgsIFBPTFlfSU5UX0NTVCBbNCwgNF0+OworICAgICBsb29wX2xlbl8x NiA9IF8yOCAtIGxvb3BfbGVuXzE1OworICAgICBfMjkgPSAodm9pZCAqKSBp dnRtcC4zNV8xMDsKKyAgICAgXzcgPSAmTUVNIDx2ZWN0b3IoWzQsNF0pIGlu dD4gWyhpbnQgKilfMjldOworICAgICB2ZWN0X18xLjI1XzE3ID0gLkxFTl9M T0FEIChfNywgMTI4QiwgbG9vcF9sZW5fMTUsIDApOworICAgICBfMzMgPSBf MjkgKyBQT0xZX0lOVF9DU1QgWzE2LCAxNl07CisgICAgIF8zNCA9ICZNRU0g PHZlY3RvcihbNCw0XSkgaW50PiBbKGludCAqKV8zM107CisgICAgIHZlY3Rf XzEuMjZfMTkgPSAuTEVOX0xPQUQgKF8zNCwgMTI4QiwgbG9vcF9sZW5fMTYs IDApOworICAgICB2ZWN0X18yLjI3XzIwID0gVkVDX1BBQ0tfVFJVTkNfRVhQ UiA8dmVjdF9fMS4yNV8xNywgdmVjdF9fMS4yNl8xOT47CisgICAgIF8zMCA9 ICh2b2lkICopIGl2dG1wLjM2XzI7CisgICAgIF8zMSA9ICZNRU0gPHZlY3Rv cihbOCw4XSkgc2hvcnQgaW50PiBbKHNob3J0IGludCAqKV8zMF07CisgICAg IC5MRU5fU1RPUkUgKF8zMSwgMTI4QiwgXzI4LCB2ZWN0X18yLjI3XzIwLCAw KTsKKyAgICAgaXZ0bXBfMjcgPSBpdnRtcF8yNiAtIF8yODsKKyAgICAgaXZ0 bXAuMzVfMTEgPSBpdnRtcC4zNV8xMCArIFBPTFlfSU5UX0NTVCBbMzIsIDMy XTsKKyAgICAgaXZ0bXAuMzZfOCA9IGl2dG1wLjM2XzIgKyBQT0xZX0lOVF9D U1QgWzE2LCAxNl07CisgICAgIGlmIChpdnRtcF8yNyAhPSAwKQorICAgICAg IGdvdG8gPGJiIDQ+OyBbODMuMzMlXQorICAgICBlbHNlCisgICAgICAgZ290 byA8YmIgNT47IFsxNi42NyVdCisKKyAgICAgVGhlIHRvdGFsIGxlbmd0aDog XzI4ID0gTUlOX0VYUFIgPGl2dG1wXzI2LCBQT0xZX0lOVF9DU1QgWzgsIDhd PjsKKworICAgICBUaGUgbGVuZ3RoIG9mIGZpcnN0IGhhbGYgdmVjdG9yOgor ICAgICAgIGxvb3BfbGVuXzE1ID0gTUlOX0VYUFIgPF8yOCwgUE9MWV9JTlRf Q1NUIFs0LCA0XT47CisKKyAgICAgVGhlIGxlbmd0aCBvZiBzZWNvbmQgaGFs ZiB2ZWN0b3I6CisgICAgICAgbG9vcF9sZW5fMTUgPSBNSU5fRVhQUiA8XzI4 LCBQT0xZX0lOVF9DU1QgWzQsIDRdPjsKKyAgICAgICBsb29wX2xlbl8xNiA9 IF8yOCAtIGxvb3BfbGVuXzE1OworCisgICAgIDEpLiBfMjggYWx3YXlzIDw9 IFBPTFlfSU5UX0NTVCBbOCwgOF0uCisgICAgIDIpLiBXaGVuIF8yOCA8PSBQ T0xZX0lOVF9DU1QgWzQsIDRdLCBzZWNvbmQgaGFsZiB2ZWN0b3IgaXMgbm90 IHByb2Nlc3NlZC4KKyAgICAgMykuIFdoZW4gXzI4ID4gUE9MWV9JTlRfQ1NU IFs0LCA0XSwgc2Vjb25kIGhhbGYgdmVjdG9yIGlzIHByb2Nlc3NlZC5XZSBr bm93biBpbiBDYXNlIDMsIHdlIHNob3VsZCBkZWFsIHdpdGggMiB2ZWN0b3Jz OiB2ZWN0X18yLjI3XzIwID0gVkVDX1BBQ0tfVFJVTkNfRVhQUiA8dmVjdF9f MS4yNV8xNywgdmVjdF9fMS4yNl8xOT47Rmlyc3Qgd2UgdXNlICBfMjggPSBN SU5fRVhQUiA8aXZ0bXBfMjYsIFBPTFlfSU5UX0NTVCBbOCwgOF0+OyB0byBn ZW5lcmF0ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGJlIHByb2Nlc3Nl ZGZvciB0aGVzZSAyIHZlY3Rvci5TZWNvbmQsIHdlIHVzZSAibG9vcF9sZW5f MTUgPSBNSU5fRVhQUiA8XzI4LCBQT0xZX0lOVF9DU1QgWzQsIDRdPjsiICAi bG9vcF9sZW5fMTUiIGlzIHRoZSAgbnVtYmVyIGVsZW1lbnRzIHRvIGJlIHBy b2Nlc3NlZCBmb3IgZmlyc3QgdmVjdG9yLlRoZW4sICJsb29wX2xlbl8xNiA9 IF8yOCAtIGxvb3BfbGVuXzE1OyAibG9vcF9sZW5fMTYiIGlzIHRoZSAgbnVt YmVyIGVsZW1lbnRzIHRvIGJlIHByb2Nlc3NlZCBmb3IgZmlyc3QgdmVjdG9y LkkgdGhpbmsgImxvb3BfbGVuXzE1ID0gTUlOX0VYUFIgPF8yOCwgUE9MWV9J TlRfQ1NUIFs0LCA0XT47IiBpcyB2ZXJ5IHNpbWlsaWFyIHRoZSB1bnBhY2ts byBpbiBBUk0gU1ZFLiJsb29wX2xlbl8xNiA9IF8yOCAtIGxvb3BfbGVuXzE1 OyAibG9vcF9sZW5fMTYiIGlzIHZlcnkgc2ltaWxpYXIgdGhlIHVucGFja2hp IGluIEFSTSBTVkUuDQo+PiBJdCdzIHVwIHRvIHlvdS4gIElmIHlvdSBkb24n dCB0aGluayBzZWxlY3RfdmwgaXMgd29ydGggaXQgdGhlbiBpdCB3b3VsZA0K Pj5vYnZpb3VzbHkgbWFrZSB0aGUgdmVjdG9yaXNlciBjaGFuZ2VzIGEgYml0 IHNpbXBsZXIuDQo+PkJ1dCBtYWtpbmcgdGhlIHZlY3RvcmlzZXIgc2ltcGxl ciBpc24ndCBJTU8gdGhlIGdvYWwgaGVyZS4gIFNFTEVDVF9WTA0KPj5zZWVt cyBsaWtlIGEgcGVyZmVjdGx5IHJlYXNvbmFibGUgY29uc3RydWN0IHRvIGFk ZCB0byB0YXJnZXQtaW5kZXBlbmRlbnQNCj4+Y29kZS4gIFdlIGp1c3QgbmVl ZCB0byB3b3JrIG91dCBzb21lIG9mIHRoZSBkZXRhaWxzLg0KDQpPaywgSSBh bHNvIHByZWZlciBrZWVwaW5nIHNlbGVjdF92bC4NCg0KPj5GV0lXLCBJIHNo YXJlIEtld2VuJ3MgY29uY2VybiBhYm91dCBkdXBsaWNhdGluZyB0b28gbXVj aCBsb2dpYyBiZXR3ZWVuDQo+Pm1hc2tzLCBjdXJyZW50IGxlbmd0aHMsIGFu ZCBTRUxFQ1RfVkwgbGVuZ3Rocy4gIEJ1dCBJIGhhdmVuJ3QgbG9va2VkIGF0 DQo+PnRoZSBwYXRjaCB5ZXQgYW5kIHNvIEkgZG9uJ3Qga25vdyBob3cgZWFz eSBpdCB3b3VsZCBiZSB0byBhdm9pZCB0aGF0Lg0KDQpJIHVuZGVyc3RhbmQg dGhlIGNvbmNlcm4sIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIGFyZSBp biB0aGUgaXNvbGF0ZWQgZnVuY3Rpb24gInZlY3Rfc2V0X2xvb3BfY29udHJv bHNfYnlfc2VsZWN0X3ZsIiwNCml0J3MgZWFzaWVyIHRvIHJldmlldyB0aGUg aW1wbGVtZW50YXRpb24uDQpNYXliZSB3ZSBjYW4gZmlyc3QgbWFrZSB0aGUg d2hvbGUgaW1wbGVtZW50YXRpb24gY29kZXMgaW4gInZlY3Rfc2V0X2xvb3Bf Y29udHJvbHNfYnlfc2VsZWN0X3ZsIiB0byBiZSBzdGFibGUgYWZ0ZXIgcmV2 aWV3LA0KdGhlbiB3ZSBjYW4gdHJ5IHRvIGluY29ycG9yYXRlIHRoZXNlIGNv ZGVzIG9mICJ2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5X3NlbGVjdF92bCIg aW50byAidmVjdF9zZXRfbG9vcF9jb250cm9sc19kaXJlY3RseSIuDQoNCg0K VGhhbmtzLg0KDQoNCmp1emhlLnpob25nQHJpdmFpLmFpDQogDQpGcm9tOiBS aWNoYXJkIFNhbmRpZm9yZA0KRGF0ZTogMjAyMy0wNS0wOSAyMDo1OQ0KVG86 IOmSn+WxheWTsg0KQ0M6IGdjYy1wYXRjaGVzOyByZ3VlbnRoZXINClN1Ympl Y3Q6IFJlOiBbUEFUQ0ggVjRdIFZFQ1Q6IEFkZCBkZWNyZW1lbnQgSVYgaXRl cmF0aW9uIGxvb3AgY29udHJvbCBieSB2YXJpYWJsZSBhbW91bnQgc3VwcG9y dA0K6ZKf5bGF5ZOyIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4gd3JpdGVzOg0K PiBIaSwgUmljaGFyZHMuIEkgd291bGQgbGlrZSB0byBnaXZlIG1vcmUgaW5m b3JtYXRpb24gYWJvdXQgdGhpcyBwYXRjaCBzbyB0aGF0IGl0IHdpbGwgbWFr ZSB0aGlzIHBhdGNoIGVhc2llciBmb3IgeW91IHRvIHJldmlldy4NCj4NCj4g Q3VycmVudGx5LCBJIHNhdyB3ZSBoYXZlIDMgc2l0dWF0aW9ucyB0aGF0IHdl IG5lZWQgdG8gaGFuZGxlIGluIGNhc2Ugb2YgbG9vcCBjb250cm9sIElWIGlu IGF1dG8tdmVjdG9yaXphdGlvbjoNCj4gMS4gU2luZ2xlIHJncm91cCBsb29w IGNvbnRyb2wgKG5jb3BpZXMgPT0gMSAmJiB2ZWNfbnVtID09IDEgc28gbG9v cF9sZW4ubGVuZ3RoICgpID09IDEgb3IgcmdjLT5sZW5naCAoKSA9PSAxKQ0K PiAyLiBNdWx0aXBsZSByZ3JvdXAgZm9yIFNMUC4NCj4gMy4gTXVsdGlwbGUg cmdyb3VwIGZvciBub24tU0xQIHdoaWNoIGlzIFJpY2hhcmQgU2FuZGlmb3Jk IHBvaW50IG91dCBwcmV2aW91c2x5IChGb3IgZXhhbXBsZSwgVkVDX1BBQ0tf VFJVTkMpLg0KPg0KPiBUbyB0YWxrIGFib3V0IHRoaXMgcGF0Y2gsIGxldCBt ZSB0YWxrIGFib3V0IFJWViBMTFZNIGltcGxlbWVudGF0aW9uIGZpcnN0IHdo aWNoIGluc3BpcmUgbWUgdG8gc2VuZCB0aGlzIHBhdGNoOg0KPiBodHRwczov L3Jldmlld3MubGx2bS5vcmcvRDk5NzUwIA0KPg0KPiBBY2NvcmRpbmcgdG8g TExWTSBpbXBsZW1lbnRhdGlvbiwgdGhleSBhcmUgYWRkaW5nIGEgbWlkZGxl LWVuZCBJUiBjYWxsZWQgImdldF92ZWN0b3JfbGVuZ3RoIiB3aGljaCBoYXMg dG90YWxseQ0KPiBzYW1lIGZ1bmN0aW9uYWxpdHkgYXMgInNlbGVjdF92bCIg aW4gdGhpcyBwYXRjaCAoSSBjYWxsIGl0ICJ3aGlsZV9sZW4iIHByZXZpb3Vz bHksIG5vdyBJIHJlbmFtZSBpdCBhcyAic2VsZWN0X3ZsIiBmb2xsb3dpbmcg UmljaGFyZCBzdWdnZXN0aW9uKS4NCj4NCj4gVGhlIExMVk0gaW1wbGVtZW50 YXRpb24gaXMgb25seSBsZXQgImdldF92ZWN0b3JfbGVuZ3RoIiBjYWxjdWxh dGUgdGhlIG51bWJlciBvZiBlbGVtZW50cyBpbiBzaW5nbGUgcmdyb3VwIGxv b3AuDQo+IEZvciBtdWx0aSByZ3JvdXAsIGxldCdzIHRha2UgYSBsb29rIGF0 IGl0Og0KPiBodHRwczovL2dvZGJvbHQub3JnL3ovM0dQNzhlZlRZIA0KPg0K PiB2b2lkDQo+IGZvbzEgKHNob3J0ICpfX3Jlc3RyaWN0IGYsIGludCAqX19y ZXN0cmljdCBkLCBpbnQgbikNCj4gew0KPiAgIGZvciAoaW50IGkgPSAwOyBp IDwgbjsgKytpKQ0KPiAgICAgew0KPiAgICAgICBmW2kgKiAyICsgMF0gPSAx Ow0KPiAgICAgICBmW2kgKiAyICsgMV0gPSAyOw0KPiAgICAgICBkW2ldID0g MzsNCj4gICAgIH0NCj4gfSANCj4NCj4gUklTQy1WIENsYW5nOg0KPiBmb28x OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBAZm9vMQ0K PiAjICViYi4wOg0KPiAgICAgICAgIGJsZXogICAgYTIsIC5MQkIwXzgNCj4g IyAlYmIuMToNCj4gICAgICAgICBsaSAgICAgIGEzLCAxNg0KPiAgICAgICAg IGJnZXUgICAgYTIsIGEzLCAuTEJCMF8zDQo+ICMgJWJiLjI6DQo+ICAgICAg ICAgbGkgICAgICBhNiwgMA0KPiAgICAgICAgIGogICAgICAgLkxCQjBfNg0K PiAuTEJCMF8zOg0KPiAgICAgICAgIGFuZGkgICAgYTYsIGEyLCAtMTYNCj4g ICAgICAgICBsdWkgICAgIGEzLCAzMg0KPiAgICAgICAgIGFkZGl3ICAgYTMs IGEzLCAxDQo+ICAgICAgICAgdnNldGl2bGkgICAgICAgIHplcm8sIDgsIGUz MiwgbTIsIHRhLCBtYQ0KPiAgICAgICAgIHZtdi52LnggdjgsIGEzDQo+ICAg ICAgICAgdm12LnYuaSB2MTAsIDMNCj4gICAgICAgICBtdiAgICAgIGE0LCBh Ng0KPiAgICAgICAgIG12ICAgICAgYTUsIGExDQo+ICAgICAgICAgbXYgICAg ICBhMywgYTANCj4gLkxCQjBfNDogICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICMgPT5UaGlzIElubmVyIExvb3AgSGVhZGVyOiBEZXB0aD0xDQo+ ICAgICAgICAgYWRkaSAgICBhNywgYTUsIDMyDQo+ICAgICAgICAgYWRkaSAg ICB0MCwgYTMsIDMyDQo+ICAgICAgICAgdnNldGl2bGkgICAgICAgIHplcm8s IDE2LCBlMTYsIG0yLCB0YSwgbWENCj4gICAgICAgICB2c2UxNi52IHY4LCAo YTMpDQo+ICAgICAgICAgdnNlMTYudiB2OCwgKHQwKQ0KPiAgICAgICAgIHZz ZXRpdmxpICAgICAgICB6ZXJvLCA4LCBlMzIsIG0yLCB0YSwgbWENCj4gICAg ICAgICB2c2UzMi52IHYxMCwgKGE1KQ0KPiAgICAgICAgIHZzZTMyLnYgdjEw LCAoYTcpDQo+ICAgICAgICAgYWRkaSAgICBhMywgYTMsIDY0DQo+ICAgICAg ICAgYWRkaSAgICBhNCwgYTQsIC0xNg0KPiAgICAgICAgIGFkZGkgICAgYTUs IGE1LCA2NA0KPiAgICAgICAgIGJuZXogICAgYTQsIC5MQkIwXzQNCj4gIyAl YmIuNToNCj4gICAgICAgICBiZXEgICAgIGE2LCBhMiwgLkxCQjBfOA0KPiAu TEJCMF82Og0KPiAgICAgICAgIHNsbGkgICAgYTMsIGE2LCAyDQo+ICAgICAg ICAgYWRkICAgICBhMCwgYTAsIGEzDQo+ICAgICAgICAgYWRkaSAgICBhMCwg YTAsIDINCj4gICAgICAgICBhZGQgICAgIGExLCBhMSwgYTMNCj4gICAgICAg ICBzdWIgICAgIGEyLCBhMiwgYTYNCj4gICAgICAgICBsaSAgICAgIGEzLCAx DQo+ICAgICAgICAgbGkgICAgICBhNCwgMg0KPiAgICAgICAgIGxpICAgICAg YTUsIDMNCj4gLkxCQjBfNzogICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICMgPT5UaGlzIElubmVyIExvb3AgSGVhZGVyOiBEZXB0aD0xDQo+ICAg ICAgICAgc2ggICAgICBhMywgLTIoYTApDQo+ICAgICAgICAgc2ggICAgICBh NCwgMChhMCkNCj4gICAgICAgICBzdyAgICAgIGE1LCAwKGExKQ0KPiAgICAg ICAgIGFkZGkgICAgYTAsIGEwLCA0DQo+ICAgICAgICAgYWRkaSAgICBhMiwg YTIsIC0xDQo+ICAgICAgICAgYWRkaSAgICBhMSwgYTEsIDQNCj4gICAgICAg ICBibmV6ICAgIGEyLCAuTEJCMF83DQo+IC5MQkIwXzg6DQo+ICAgICAgICAg cmV0DQo+DQo+IEFSTSBHQ0M6DQo+IGZvbzE6DQo+ICAgICAgICAgY21wICAg ICB3MiwgMA0KPiAgICAgICAgIGJsZSAgICAgLkwxDQo+ICAgICAgICAgYWRk dmwgICB4NCwgeDAsICMxDQo+ICAgICAgICAgbW92ICAgICB4MywgMA0KPiAg ICAgICAgIGNudGIgICAgeDcNCj4gICAgICAgICBjbnRiICAgIHg2LCBhbGws IG11bCAjMg0KPiAgICAgICAgIHNiZml6ICAgeDIsIHgyLCAxLCAzMg0KPiAg ICAgICAgIHB0cnVlICAgcDAuYiwgYWxsDQo+ICAgICAgICAgbW92ICAgICB4 NSwgeDINCj4gICAgICAgICBhZHJwICAgIHg4LCAuTEMwDQo+ICAgICAgICAg dXFkZWNoICB4NQ0KPiAgICAgICAgIGFkZCAgICAgeDgsIHg4LCA6bG8xMjou TEMwDQo+ICAgICAgICAgd2hpbGVsbyBwMS5oLCB4enIsIHg1DQo+ICAgICAg ICAgbGQxcncgICB6MS5zLCBwMC96LCBbeDhdDQo+ICAgICAgICAgbW92ICAg ICB6MC5zLCAjMw0KPiAgICAgICAgIHdoaWxlbG8gcDAuaCwgeHpyLCB4Mg0K PiAuTDM6DQo+ICAgICAgICAgc3QxaCAgICB6MS5oLCBwMCwgW3gwLCB4Mywg bHNsIDFdDQo+ICAgICAgICAgc3QxaCAgICB6MS5oLCBwMSwgW3g0LCB4Mywg bHNsIDFdDQo+ICAgICAgICAgc3QxdyAgICB6MC5zLCBwMSwgW3gxLCAjMSwg bXVsIHZsXQ0KPiAgICAgICAgIGFkZCAgICAgeDMsIHgzLCB4Nw0KPiAgICAg ICAgIHdoaWxlbG8gcDEuaCwgeDMsIHg1DQo+ICAgICAgICAgc3QxdyAgICB6 MC5zLCBwMCwgW3gxXQ0KPiAgICAgICAgIGFkZCAgICAgeDEsIHgxLCB4Ng0K PiAgICAgICAgIHdoaWxlbG8gcDAuaCwgeDMsIHgyDQo+ICAgICAgICAgYi5h bnkgICAuTDMNCj4gLkwxOg0KPiAgICAgICAgIHJldA0KPg0KPiBJdCdzIHZl cnkgb2J2aW91cyB0aGF0IEFSTSBHQ0MgaGFzIG11Y2ggYmV0dGVyIGNvZGVn ZW4gc2luY2UgUlZWIExMVk0ganVzdCB1c2UgU0lNRCBzdHlsZSB0byBoYW5k bGUgbXVsdGktcmdyb3VwIFNMUCBhdXRvLXZlY3Rvcml6YXRpb24uDQo+DQo+ IFdlbGwsIEkgYW0gdG90YWxseSBhZ2dyZWUgdGhhdCB3ZSBzaG91bGQgYWRk IGxlbmd0aCBzdHVmZiBpbiBhdXRvLXZlY3Rvcml6YXRpb24gbm90IG9ubHkg Zm9yIHNpbmdsZSByZ3JvdXAgYnV0IGFsc28gbXVsdGlwbGUgcmdyb3VwLg0K PiBIb3dldmVyLCB3aGVuIEkgYW0gdHJ5aW5nIHRvIGltcGxlbWVudCBtdWx0 aXBsZSByZ3JvdXAgbGVuZ3RoIGZvciBib3RoIFNMUCBhbmQgbm9uLVNMUCBh bmQgdGVzdGluZywgdHVybnMgb3V0IGl0J3MgaGFyZCB0byB1c2Ugc2VsZWN0 X3ZsDQo+IHNpbmNlICJzZWxlY3RfdmwiIHBhdHRlcm4gYWxsb3dzIG5vbi1W RiBmbGV4aWJsZSBsZW5ndGggKGxlbmd0aCA8PSBtaW4gKHJlbWFpbixWRikp IGluIGFueSBpdGVyYXRpb24sIGl0J3MgY29uc3VtaW5nIG11Y2ggbW9yZSBv cGVyYXRpb25zIGZvcg0KPiBhZGp1c3QgbG9vcCBjb250cm9scyBJViBhbmQg ZGF0YSByZWZlcmVuY2UgYWRkcmVzcyBwb2ludCBJViB0aGFuIGp1c3QgdXNp bmcgIk1JTl9FWFBSIi4NCj4NCj4gU28gZm9yIENhc2UgMiAmJiBDYXNlIDMs IEkganVzdCB1c2UgTUlOX0VYUFIgZGlyZWN0bHkgaW5zdGVhZCBvZiBTRUxF Q1RfVkwgYWZ0ZXIgbXkgc2VydmVyYWwgaW50ZXJuYWwgdGVzdGluZy4NCiAN CkNvdWxkIHlvdSBnbyBpbnRvIG1vcmUgZGV0YWlscyBhYm91dCB0aGlzPyAg SSBpbWFnaW5lZCB0aGF0IGZvciBjYXNlIDMsDQp0aGVyZSB3b3VsZCBiZSBh IHNpbmdsZSBTRUxFQ1RfVkwgdGhhdCBkZWNpZGVzIGhvdyBtYW55IHNjYWxh ciBpdGVyYXRpb25zDQp3aWxsIGJlIGhhbmRsZWQgYnkgdGhlIGN1cnJlbnQg dmVjdG9yIGl0ZXJhdGlvbiwgdGhlbiB3ZSB3b3VsZCAiZXhwYW5kIg0KdGhl IHJlc3VsdCAodXNpbmcgTUlOX0VYUFJzKSB0byB0aGUgbXVsdGktY29udHJv bCBjYXNlcy4NCiANCkluIGEgc2Vuc2UgdGhhdCByZXBsaWNhdGVzIHdoYXQg dGhlIFNWRSBjb2RlIGFib3ZlIGlzIGRvaW5nLiAgQnV0IGZvciBTVkUsDQpp dCdzIHBvc3NpYmxlIHRvICJvcHRpbWlzZSIgdGhlIHVucGFja2luZyBvZiBh IFdISUxFTE8gcmVzdWx0IGR1ZSB0byB0aGUNCmxhY2sgb2YgaW1wbGVtZW50 YXRpb24tZGVmaW5lZCBiZWhhdmlvdXIuICBTbyBjb25jZXB0dWFsbHkgd2Ug aGF2ZSBhDQpzaW5nbGUgV0hJTEVMTyB0aGF0IGlzIHVucGFja2VkIG9uZSBs YXllciB0byBnaXZlIHR3byBtYXNrcy4gIEJ1dCBpbg0KcmVhbGl0eSB3ZSBv cHRpbWlzZSB0aGF0IHR3byBXSElMRUxPcy4gIE5vIHN1Y2ggb3B0aW1pc2F0 aW9uIGlzIHBvc3NpYmxlDQp3aXRoIFNFTEVDVF9WTCwgYW5kIG1heWJlIHRo YXQgcHJvZHVjZXMgcG9vci1xdWFsaXR5IGNvZGUuDQogDQpUaGF0IG1pZ2h0 IGJlIHdoYXQgeW91IG1lYW4gKGhhdmVuJ3QgaGFkIGNoYW5jZSB0byBsb29r IGF0IHRoZSBwYXRjaA0KaXRzZWxmIHlldCwgYnV0IGhvcGUgdG8gdG9tb3Jy b3cpLg0KIA0KRm9yIGNhc2UgMiAobWF4X25zY2FsYXJzX3Blcl9pdGVyID4g MSksIEkgdGhpbmsgaXQgd291bGQgbWFrZSBjb25jZXB0dWFsDQpzZW5zZSB0 byBwYXNzIG1heF9uc2NhbGFyc19wZXJfaXRlciB0byBTRUxFQ1RfVkwgb3Ig KGFsdGVybmF0aXZlbHkpDQptdWx0aXBseSB0aGUgcmVzdWx0IG9mIHRoZSBT RUxFQ1RfVkwgYnkgbWF4X25zY2FsYXJzX3Blcl9pdGVyLg0KQnV0IGl0J3Mg b25seSB3b3J0aCBkb2luZyBvbmUgb2YgdGhvc2UgdHdvIHRoaW5ncyBpZiBp dCBwcm9kdWNlcw0KcmVhc29uYWJsZSBjb2RlIGZvciBSVlYuDQogDQo+IE5v dyBiYXNlIG9uIHRoZXNlIHNpdHVhdGlvbnMsIHdlIG9ubHkgaGF2ZSAic2Vs ZWN0X3ZsIiBmb3Igc2luZ2xlLXJncm91cCwgYnV0IG11bHRpcGxlLXJncm91 cCAoYm90aCBTTFAgYW5kIG5vbi1TTFApLCB3ZSBqdXN0DQo+IHVzZSBNSU5f RVhQUi4NCj4NCj4gSXMgaXQgbW9yZSBhcHByb3ByaWF0ZSB0aGF0IHdlIHNo b3VsZCByZW1vdmUgInNlbGVjdF92bCIgYW5kIGp1c3QgdXNlIE1JTl9FWFBS IGZvcmNlIFZGIGVsZW1lbnRzIGluIGVhY2ggbm9uLWZpbmFsIGl0ZXJhdGlv biBpbiBzaW5nbGUgcmdyb3VwPw0KIA0KSXQncyB1cCB0byB5b3UuICBJZiB5 b3UgZG9uJ3QgdGhpbmsgc2VsZWN0X3ZsIGlzIHdvcnRoIGl0IHRoZW4gaXQg d291bGQNCm9idmlvdXNseSBtYWtlIHRoZSB2ZWN0b3Jpc2VyIGNoYW5nZXMg YSBiaXQgc2ltcGxlci4NCiANCkJ1dCBtYWtpbmcgdGhlIHZlY3RvcmlzZXIg c2ltcGxlciBpc24ndCBJTU8gdGhlIGdvYWwgaGVyZS4gIFNFTEVDVF9WTA0K c2VlbXMgbGlrZSBhIHBlcmZlY3RseSByZWFzb25hYmxlIGNvbnN0cnVjdCB0 byBhZGQgdG8gdGFyZ2V0LWluZGVwZW5kZW50DQpjb2RlLiAgV2UganVzdCBu ZWVkIHRvIHdvcmsgb3V0IHNvbWUgb2YgdGhlIGRldGFpbHMuDQogDQpGV0lX LCBJIHNoYXJlIEtld2VuJ3MgY29uY2VybiBhYm91dCBkdXBsaWNhdGluZyB0 b28gbXVjaCBsb2dpYyBiZXR3ZWVuDQptYXNrcywgY3VycmVudCBsZW5ndGhz LCBhbmQgU0VMRUNUX1ZMIGxlbmd0aHMuICBCdXQgSSBoYXZlbid0IGxvb2tl ZCBhdA0KdGhlIHBhdGNoIHlldCBhbmQgc28gSSBkb24ndCBrbm93IGhvdyBl YXN5IGl0IHdvdWxkIGJlIHRvIGF2b2lkIHRoYXQuDQogDQpUaGFua3MsDQpS aWNoYXJkDQogDQo+IExpa2UgdGhlIGNvZGVnZW4gYWNjb3JkaW5nIHRvIFJW ViBJU0EgZXhhbXBsZSAoc2hvdyBhcyBSVlYgTExWTSk6DQo+IGh0dHBzOi8v cmVwby5oY2EuYnNjLmVzL2VwaWMvei9veW5oelAgDQo+DQo+IEFTTToNCj4g dmVjX2FkZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQHZl Y19hZGQNCj4gICAgICAgICBibGV6ICAgIGEzLCAuTEJCMF8zDQo+ICAgICAg ICAgbGkgICAgICBhNCwgMA0KPiAuTEJCMF8yOiAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIyAldmVjdG9yLmJvZHkNCj4gICAgICAgICBzdWIg ICAgIGE1LCBhMywgYTQNCj4gICAgICAgICB2c2V0dmxpIGE2LCBhNSwgZTY0 LCBtMSwgdGEsIG11ICA9PT4gY2hhbmdlIGl0IGludG8gYTYgPSBtaW4gKGE1 LCBWRikgJiYgdnNldHZsaSB6ZXJvLCBhNiwgZTY0LCBtMSwgdGEsIG11DQo+ ICAgICAgICAgc2xsaSAgICBhNywgYTQsIDMNCj4gICAgICAgICBhZGQgICAg IGE1LCBhMSwgYTcNCj4gICAgICAgICB2bGU2NC52IHY4LCAoYTUpDQo+ICAg ICAgICAgYWRkICAgICBhNSwgYTIsIGE3DQo+ICAgICAgICAgdmxlNjQudiB2 OSwgKGE1KQ0KPiAgICAgICAgIHZmYWRkLnZ2ICAgICAgICB2OCwgdjgsIHY5 DQo+ICAgICAgICAgYWRkICAgICBhNywgYTcsIGEwDQo+ICAgICAgICAgYWRk ICAgICBhNCwgYTQsIGE2DQo+ICAgICAgICAgdnNlNjQudiB2OCwgKGE3KQ0K PiAgICAgICAgIGJuZSAgICAgYTQsIGEzLCAuTEJCMF8yDQo+IC5MQkIwXzM6 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjICVmb3IuY29uZC5j bGVhbnVwDQo+ICAgICAgICAgcmV0DQo+DQo+IFNvIGlmIHdlIHJlbW92ZSAi c2VsZWN0X3ZsIiBqdXN0IHVzZSBNSU5fRVhQUiB0byBmb3JjZSBWRiBlbGVt ZW50cyBpbiBub24tZmluYWwgaXRlcmF0aW9uLCB3ZSB3aWxsIGVuZCB1cCB3 aXRoIGhhdmluZyBsaWtlIHRoaXM6DQo+DQo+IHZlY19hZGQ6ICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAjIEB2ZWNfYWRkDQo+ICAgICAgICAg YmxleiAgICBhMywgLkxCQjBfMw0KPiAgICAgICAgIGNzcnIgICAgVkYgaW4g Ynl0ZXMsIHZsZW5iDQo+IC5MQkIwXzI6ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAjICV2ZWN0b3IuYm9keQ0KPiAgICAgICAgIHN1YiAgICAg YTUsIGEzLCBWRiBpbiBlbGVtZW50cw0KPiAgICAgICAgIGE2ID0gbWluIChh NSwgVkYgaW4gZWxlbWVudHMpIA0KPiAgICAgICAgIHZzZXR2bGkgemVybywg YTYsIGU2NCwgbTEsIHRhLCBtdQ0KPiAgICAgICAgIGFkZCAgICAgYTUsIGEx LCBWRiBpbiBieXRlcw0KPiAgICAgICAgIHZsZTY0LnYgdjgsIChhNSkNCj4g ICAgICAgICBhZGQgICAgIGE1LCBhMiwgVkYgaW4gYnl0ZXMNCj4gICAgICAg ICB2bGU2NC52IHY5LCAoYTUpDQo+ICAgICAgICAgdmZhZGQudnYgICAgICAg IHY4LCB2OCwgdjkNCj4gICAgICAgICBhZGQgICAgIGE3LCBhNywgYTANCj4g ICAgICAgICB2c2U2NC52IHY4LCAoYTcpDQo+ICAgICAgICAgYm5lICAgICBh NCwgYTMsIC5MQkIwXzINCj4gLkxCQjBfMzogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICMgJWZvci5jb25kLmNsZWFudXANCj4gICAgICAgICBy ZXQNCj4NCj4gQm90aCBjb2RlZ2VuIGFyZSB3b3JraW5nIGdvb2QgZm9yIFJW Vi4NCj4gSnVzdCBvbmx5IHRoZSBzZWNvbmQgb25lIGNhbiBub3QgaGF2ZSB0 aGUgUlZWIHNwZWNpYWwgb3B0aW1pemF0aW9uIChldmVuIGRpc3RyaWJ1dGVk IHdvcmtsb2FkIGluIGxhc3QgMiBpdGVyYXRpb25zKS4NCj4NCj4gRXhwZWN0 aW5nIGFueSBzdWdnZXN0aW9ucyBmcm9tIHlvdS4NCj4gVGhhbmtzLg0KPg0K Pg0KPiBqdXpoZS56aG9uZ0ByaXZhaS5haQ0KPiAgDQo+IEZyb206IGp1emhl Lnpob25nDQo+IERhdGU6IDIwMjMtMDUtMDQgMjE6MjUNCj4gVG86IGdjYy1w YXRjaGVzDQo+IENDOiByaWNoYXJkLnNhbmRpZm9yZDsgcmd1ZW50aGVyOyBK dS1aaGUgWmhvbmcNCj4gU3ViamVjdDogW1BBVENIIFY0XSBWRUNUOiBBZGQg ZGVjcmVtZW50IElWIGl0ZXJhdGlvbiBsb29wIGNvbnRyb2wgYnkgdmFyaWFi bGUgYW1vdW50IHN1cHBvcnQNCj4gRnJvbTogSnUtWmhlIFpob25nIDxqdXpo ZS56aG9uZ0ByaXZhaS5haT4NCj4gIA0KPiBUaGlzIHBhdGNoIGlzIGZpeGlu ZyBWMyBwYXRjaDoNCj4gaHR0cHM6Ly9wYXRjaHdvcmsuc291cmNld2FyZS5v cmcvcHJvamVjdC9nY2MvcGF0Y2gvMjAyMzA0MDcwMTQ3NDEuMTM5Mzg3LTEt anV6aGUuemhvbmdAcml2YWkuYWkvDQo+ICANCj4gRml4IGlzc3VlcyBhY2Nv cmRpbmcgdG8gUmljaGFyZCBTYW5kaWZvcmQgJiYgUmljaGFyZCBCaWVuZXIu DQo+ICANCj4gMS4gUmVuYW1lIFdISUxFX0xFTiBwYXR0ZXJuIGludG8gU0VM RUNUX1ZMIGFjY29yZGluZyB0byBSaWNoYXJkIFNhbmRpZm9yZC4NCj4gMi4g U3VwcG9ydCBtdWx0aXBsZS1yZ3JvdXAgZm9yIG5vbi1TTFAgYXV0by12ZWN0 b3JpemF0aW9uLg0KPiAgDQo+ICAgIEZvciB2ZWNfcGFja190cnVuYyBwYXR0 ZXJuIChtdWx0aS1yZ3JvdXAgb2Ygbm9uLVNMUCksIHdlIGdlbmVyYXRlIHRo ZSB0b3RhbCBsZW5ndGg6DQo+ICANCj4gICAgICBfMzYgPSBNSU5fRVhQUiA8 aXZ0bXBfMzQsIFBPTFlfSU5UX0NTVCBbOCwgOF0+Ow0KPiAgDQo+ICAgICAg Rmlyc3QgbGVuZ3RoIChNSU4gKFgsIFZGL04pKToNCj4gICAgICAgIGxvb3Bf bGVuXzE1ID0gTUlOX0VYUFIgPF8zNiwgUE9MWV9JTlRfQ1NUIFsyLCAyXT47 DQo+ICANCj4gICAgICBTZWNvbmQgbGVuZ3RoIChYIC0gTUlOIChYLCAxICog VkYvTikpOg0KPiAgICAgICAgbG9vcF9sZW5fMTYgPSBfMzYgLSBsb29wX2xl bl8xNTsNCj4gIA0KPiAgICAgIFRoaXJkIGxlbmd0aCAoWCAtIE1JTiAoWCwg MiAqIFZGL04pKToNCj4gICAgICAgIF8zOCA9IE1JTl9FWFBSIDxfMzYsIFBP TFlfSU5UX0NTVCBbNCwgNF0+Ow0KPiAgICAgICAgbG9vcF9sZW5fMTcgPSBf MzYgLSBfMzg7DQo+ICANCj4gICAgICBGb3J0aCBsZW5ndGggKFggLSBNSU4g KFgsIDMgKiBWRi9OKSk6DQo+ICAgICAgICBfMzkgPSBNSU5fRVhQUiA8XzM2 LCBQT0xZX0lOVF9DU1QgWzYsIDZdPjsNCj4gICAgICAgIGxvb3BfbGVuXzE4 ID0gXzM2IC0gXzM5Ow0KPiAgDQo+IFRoZSByZWFzb24gdGhhdCBJIHVzZSBN SU5fRVhQUiBpbnN0ZWFkIG9mIFNFTEVDVF9WTCB0byBjYWxjdWxhdGUgdG90 YWwgbGVuZ3RoIHNpbmNlIHVzaW5nIFNFTEVDVF9WTA0KPiB0byBhZGFwdCBp bmR1Y3Rpb24gSVYgY29uc3VtZXMgbW9yZSBpbnN0cnVjdGlvbnMgdGhhbiBq dXN0IHVzaW5nIE1JTl9FWFBSLiBBbHNvLCBkdXJpbmcgdGVzdGluZywNCj4g SSBmb3VuZCBpdCdzIGhhcmQgdG8gYWRqdXN0IGxlbmd0aCBjb3JyZWN0bHkg YWNjb3JkaW5nIHRvIFNFTEVDVF9WTC4NCj4gIA0KPiBTbywgdGhpcyBwYXRj aCB3ZSBvbmx5IHVzZSBTRUxFQ1RfVkwgZm9yIHNpbmdsZS1yZ3JvdXAgd2l0 aCBzaW5nbGUgbGVuZ3RoIGNvbnRyb2wuDQo+ICANCj4gMy4gRml4IGRvY3Vt ZW50IG9mIHNlbGVjdF92bCBmb3IgUmljaGFyZCBCaWVuZXIgKHJlbW92ZSBt b2RlIE4pLg0KPiA0LiBGaXggY29tbWVudHMgb2YgdmVjdF9zZXRfbG9vcF9j b250cm9sc19ieV9zZWxlY3RfdmwgYWNjb3JkaW5nIHRvIFJpY2hhcmQgQmll bmVyLg0KPiA1LiBLZWVwIGxvb3BfdmluZm8gYXMgZmlyc3QgcGFyYW1ldGVy IGZvciAidmVjdF9nZXRfbG9vcF9sZW4iLg0KPiA2LiBtYWtlIHJlcXVpcmVt ZW50IG9mIGdldF93aGlsZV9sZW5fZGF0YV9yZWZfcHRyIG91dHNpZGUsIGxl dCBpdCB0byBiZSBnYXRlZCBhdCB0aGUgY2FsbGVyIHNpdGUuDQo+ICANCj4g TW9yZSBjb21tZW50cyBmcm9tIFJpY2hhcmQgQmllbmVyOg0KPj4+IFNvIGl0 J3Mgbm90IGFjdHVhbGx5IHNhdHVyYXRpbmcuICBUaGUgc2F0dXJhdGluZyBv cGVyYXRpb24gaXMgZG9uZSBieSAuV0hJTEVfTEVOPw0KPiBJIGRlZmluZSB0 aGUgb3V0Y29tZSBvZiBTRUxFQ1RfVkwgKG4sIHZmKSAgKFdISUxFX0xFTikg PSBJTl9SQU5HRSAoMCwgbWluIChuLCB2ZikpIHdpbGwgbWFrZSANCj4gdGhl IGxvb3AgY29udHJvbCBjb3VudGVyIG5ldmVyIHVuZGVyZmxvdyB6ZXJvLg0K PiAgDQo+Pj4gSSBzZWUuICBJIHdvbmRlciBpZiBpdCBtYWtlcyBzZW5zZSB0 byBsZWF2ZSAuV0hJTEVfTEVOIGFzaWRlIGZvciBhIHN0YXJ0LA0KPj4+IHRo ZSBhYm92ZSBzY2hlbWUgc2hvdWxkIGFsc28gd29yayBmb3Igc2luZ2xlIHJn cm91cHMsIG5vPw0KPj4+IEFzIHNhaWQsIGl0IF9sb29rc18gbGlrZSB5b3Ug Y2FuIHByb2dyZXNzIHdpdGhvdXQgLldISUxFX0xFTiBhbmQgdXNpbmcNCj4+ PiAuV0hJTEVfTEVOIGlzIGEgcHVyZSBvcHRpbWl6YXRpb24/DQo+IFllcywg U0VMRUNUX1ZMIChXSElMRV9MRU4pIGlzIHB1cmUgb3B0aW1pemF0aW9uIGZv ciBzaW5nbGUtcmdyb3VwIGFuZCBhbGxvdw0KPiB0YXJnZXQgYWRqdXN0IGFu eSBsZW5ndGggPSBJTlJBTkdFICgwLCBtaW4gKG4sIHZmKSkgZWFjaCBpdGVy YXRpb24uDQo+ICANCj4gTGV0IG1lIGtub3duIGlmIEkgbWlzc2VkIHNvbWV0 aGluZyBmb3IgdGhlIFYzIHBhdGNoLg0KPiBUaGFua3MuDQo+ICANCj4gLS0t DQo+IGdjYy9jZmdsb29wbWFuaXAuY2MgICAgICAgICAgICB8ICAgMiArLQ0K PiBnY2MvZG9jL21kLnRleGkgICAgICAgICAgICAgICAgfCAgMzQgKysrDQo+ IGdjYy9naW1wbGUtbG9vcC1pbnRlcmNoYW5nZS5jYyB8ICAgMiArLQ0KPiBn Y2MvaW50ZXJuYWwtZm4uZGVmICAgICAgICAgICAgfCAgIDEgKw0KPiBnY2Mv b3B0YWJzLmRlZiAgICAgICAgICAgICAgICAgfCAgIDEgKw0KPiBnY2MvdHJl ZS1zc2EtbG9vcC1pdmNhbm9uLmNjICAgfCAgIDIgKy0NCj4gZ2NjL3RyZWUt c3NhLWxvb3AtaXZvcHRzLmNjICAgIHwgICAyICstDQo+IGdjYy90cmVlLXNz YS1sb29wLW1hbmlwLmNjICAgICB8ICAxOCArLQ0KPiBnY2MvdHJlZS1zc2Et bG9vcC1tYW5pcC5oICAgICAgfCAgIDQgKy0NCj4gZ2NjL3RyZWUtdmVjdC1k YXRhLXJlZnMuY2MgICAgIHwgICA4ICstDQo+IGdjYy90cmVlLXZlY3QtbG9v cC1tYW5pcC5jYyAgICB8IDM3NCArKysrKysrKysrKysrKysrKysrKysrKysr KysrKysrKy0NCj4gZ2NjL3RyZWUtdmVjdC1sb29wLmNjICAgICAgICAgIHwg IDMyICsrLQ0KPiBnY2MvdHJlZS12ZWN0LXN0bXRzLmNjICAgICAgICAgfCAg ODkgKysrKysrKy0NCj4gZ2NjL3RyZWUtdmVjdG9yaXplci5oICAgICAgICAg IHwgICA0ICstDQo+IDE0IGZpbGVzIGNoYW5nZWQsIDUzNSBpbnNlcnRpb25z KCspLCAzOCBkZWxldGlvbnMoLSkNCj4gIA0KPiBkaWZmIC0tZ2l0IGEvZ2Nj L2NmZ2xvb3BtYW5pcC5jYyBiL2djYy9jZmdsb29wbWFuaXAuY2MNCj4gaW5k ZXggMGUzYWQ4ZWQ3NDIuLjZlMDlkY2JiMGIxIDEwMDY0NA0KPiAtLS0gYS9n Y2MvY2ZnbG9vcG1hbmlwLmNjDQo+ICsrKyBiL2djYy9jZmdsb29wbWFuaXAu Y2MNCj4gQEAgLTgyNiw3ICs4MjYsNyBAQCBjcmVhdGVfZW1wdHlfbG9vcF9v bl9lZGdlIChlZGdlIGVudHJ5X2VkZ2UsDQo+ICAgICAgfQ0KPiAgICBnc2kg PSBnc2lfbGFzdF9iYiAobG9vcF9oZWFkZXIpOw0KPiAtICBjcmVhdGVfaXYg KGluaXRpYWxfdmFsdWUsIHN0cmlkZSwgaXYsIGxvb3AsICZnc2ksIGZhbHNl LA0KPiArICBjcmVhdGVfaXYgKGluaXRpYWxfdmFsdWUsIFBMVVNfRVhQUiwg c3RyaWRlLCBpdiwgbG9vcCwgJmdzaSwgZmFsc2UsDQo+ICAgICAgaXZfYmVm b3JlLCBpdl9hZnRlcik7DQo+ICAgIC8qIEluc2VydCBsb29wIGV4aXQgY29u ZGl0aW9uLiAgKi8NCj4gZGlmZiAtLWdpdCBhL2djYy9kb2MvbWQudGV4aSBi L2djYy9kb2MvbWQudGV4aQ0KPiBpbmRleCBjYzRhOTNhODc2My4uOTljZjBj ZGJkY2EgMTAwNjQ0DQo+IC0tLSBhL2djYy9kb2MvbWQudGV4aQ0KPiArKysg Yi9nY2MvZG9jL21kLnRleGkNCj4gQEAgLTQ5NzQsNiArNDk3NCw0MCBAQCBm b3IgKGkgPSAxOyBpIDwgb3BlcmFuZDM7IGkrKykNCj4gICAgb3BlcmFuZDBb aV0gPSBvcGVyYW5kMFtpIC0gMV0gJiYgKG9wZXJhbmQxICsgaSA8IG9wZXJh bmQyKTsNCj4gQGVuZCBzbWFsbGV4YW1wbGUNCj4gK0BjaW5kZXggQGNvZGV7 c2VsZWN0X3ZsQHZhcnttfX0gaW5zdHJ1Y3Rpb24gcGF0dGVybg0KPiArQGl0 ZW0gQGNvZGV7c2VsZWN0X3ZsQHZhcnttfX0NCj4gK1NldCBvcGVyYW5kIDAg dG8gdGhlIG51bWJlciBvZiBhY3RpdmUgZWxlbWVudHMgaW4gdmVjdG9yIHdp bGwgYmUgdXBkYXRlZCB2YWx1ZS4NCj4gK29wZXJhbmQgMSBpcyB0aGUgdG90 YWwgZWxlbWVudHMgbmVlZCB0byBiZSB1cGRhdGVkIHZhbHVlLg0KPiArb3Bl cmFuZCAyIGlzIHRoZSB2ZWN0b3JpemF0aW9uIGZhY3Rvci4NCj4gK1RoZSB2 YWx1ZSBvZiBvcGVyYW5kIDAgaXMgdGFyZ2V0IGRlcGVuZGVudCBhbmQgZmxl eGlibGUgaW4gZWFjaCBpdGVyYXRpb24uDQo+ICtUaGUgb3BlcmF0aW9uIG9m IHRoaXMgcGF0dGVybiBjYW4gYmU6DQo+ICsNCj4gK0BzbWFsbGV4YW1wbGUN Cj4gK0Nhc2UgMToNCj4gK29wZXJhbmQwID0gTUlOIChvcGVyYW5kMSwgb3Bl cmFuZDIpOw0KPiArb3BlcmFuZDIgY2FuIGJlIGNvbnN0X3BvbHlfaW50IG9y IHBvbHlfaW50IHJlbGF0ZWQgdG8gdmVjdG9yIG1vZGUgc2l6ZS4NCj4gK1Nv bWUgdGFyZ2V0IGxpa2UgUklTQy1WIGhhcyBhIHN0YW5kYWxvbmUgaW5zdHJ1 Y3Rpb24gdG8gZ2V0IE1JTiAobiwgTU9ERSBTSVpFKSBzbw0KPiArdGhhdCB3 ZSBjYW4gcmVkdWNlIGEgdXNlIG9mIGdlbmVyYWwgcHVycG9zZSByZWdpc3Rl ci4NCj4gKw0KPiArSW4gdGhpcyBjYXNlLCBvbmx5IHRoZSBsYXN0IGl0ZXJh dGlvbiBvZiB0aGUgbG9vcCBpcyBwYXJ0aWFsIGl0ZXJhdGlvbi4NCj4gK0Bl bmQgc21hbGxleGFtcGxlDQo+ICsNCj4gK0BzbWFsbGV4YW1wbGUNCj4gK0Nh c2UgMjoNCj4gK2lmIChvcGVyYW5kMSA8PSBvcGVyYW5kMikNCj4gKyAgb3Bl cmFuZDAgPSBvcGVyYW5kMTsNCj4gK2Vsc2UgaWYgKG9wZXJhbmQxIDwgMiAq IG9wZXJhbmQyKQ0KPiArICBvcGVyYW5kMCA9IElOX1JBTkdFIChjZWlsIChv cGVyYW5kMSAvIDIpLCBvcGVyYW5kMik7DQo+ICtlbHNlDQo+ICsgIG9wZXJh bmQwID0gb3BlcmFuZDI7DQo+ICsNCj4gK1RoaXMgY2FzZSB3aWxsIGV2ZW5s eSBkaXN0cmlidXRlIHdvcmsgb3ZlciB0aGUgbGFzdCAyIGl0ZXJhdGlvbnMg b2YgYSBzdHJpcG1pbmUgbG9vcC4NCj4gK0BlbmQgc21hbGxleGFtcGxlDQo+ ICsNCj4gK1RoZSBvdXRwdXQgb2YgdGhpcyBwYXR0ZXJuIGlzIG5vdCBvbmx5 IHVzZWQgYXMgSVYgb2YgbG9vcCBjb250cm9sIGNvdW50ZXIsIGJ1dCBhbHNv DQo+ICtpcyB1c2VkIGFzIHRoZSBJViBvZiBhZGRyZXNzIGNhbGN1bGF0aW9u IHdpdGggbXVsdGlwbHkvc2hpZnQgb3BlcmF0aW9uLiBUaGlzIGFsbG93DQo+ ICt1cyBkeW5hbWljIGFkanVzdCB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIGlz IHByb2Nlc3NlZCBpbiBlYWNoIGl0ZXJhdGlvbiBvZiB0aGUgbG9vcC4NCj4g Kw0KPiBAY2luZGV4IEBjb2Rle2NoZWNrX3Jhd19wdHJzQHZhcnttfX0gaW5z dHJ1Y3Rpb24gcGF0dGVybg0KPiBAaXRlbSBAc2FtcHtjaGVja19yYXdfcHRy c0B2YXJ7bX19DQo+IENoZWNrIHdoZXRoZXIsIGdpdmVuIHR3byBwb2ludGVy cyBAdmFye2F9IGFuZCBAdmFye2J9IGFuZCBhIGxlbmd0aCBAdmFye2xlbn0s DQo+IGRpZmYgLS1naXQgYS9nY2MvZ2ltcGxlLWxvb3AtaW50ZXJjaGFuZ2Uu Y2MgYi9nY2MvZ2ltcGxlLWxvb3AtaW50ZXJjaGFuZ2UuY2MNCj4gaW5kZXgg MWI3N2JmZDQ2YjIuLmU1NTkwMzc0ZTU5IDEwMDY0NA0KPiAtLS0gYS9nY2Mv Z2ltcGxlLWxvb3AtaW50ZXJjaGFuZ2UuY2MNCj4gKysrIGIvZ2NjL2dpbXBs ZS1sb29wLWludGVyY2hhbmdlLmNjDQo+IEBAIC0xMTg1LDcgKzExODUsNyBA QCB0cmVlX2xvb3BfaW50ZXJjaGFuZ2U6Om1hcF9pbmR1Y3Rpb25zX3RvX2xv b3AgKGxvb3BfY2FuZCAmc3JjLCBsb29wX2NhbmQgJnRndCkNCj4gICB0cmVl IHZhcl9iZWZvcmUsIHZhcl9hZnRlcjsNCj4gICB0cmVlIGJhc2UgPSB1bnNo YXJlX2V4cHIgKGl2LT5pbml0X2V4cHIpOw0KPiAgIHRyZWUgc3RlcCA9IHVu c2hhcmVfZXhwciAoaXYtPnN0ZXApOw0KPiAtICAgY3JlYXRlX2l2IChiYXNl LCBzdGVwLCBTU0FfTkFNRV9WQVIgKGl2LT52YXIpLA0KPiArICAgY3JlYXRl X2l2IChiYXNlLCBQTFVTX0VYUFIsIHN0ZXAsIFNTQV9OQU1FX1ZBUiAoaXYt PnZhciksDQo+ICAgICAgdGd0Lm1fbG9vcCwgJmluY3JfcG9zLCBmYWxzZSwg JnZhcl9iZWZvcmUsICZ2YXJfYWZ0ZXIpOw0KPiAgIGJpdG1hcF9zZXRfYml0 IChtX2RjZV9zZWVkcywgU1NBX05BTUVfVkVSU0lPTiAodmFyX2JlZm9yZSkp Ow0KPiAgIGJpdG1hcF9zZXRfYml0IChtX2RjZV9zZWVkcywgU1NBX05BTUVf VkVSU0lPTiAodmFyX2FmdGVyKSk7DQo+IGRpZmYgLS1naXQgYS9nY2MvaW50 ZXJuYWwtZm4uZGVmIGIvZ2NjL2ludGVybmFsLWZuLmRlZg0KPiBpbmRleCA3 ZmU3NDJjMmFlNy4uNmY2ZmE3ZDM3ZjkgMTAwNjQ0DQo+IC0tLSBhL2djYy9p bnRlcm5hbC1mbi5kZWYNCj4gKysrIGIvZ2NjL2ludGVybmFsLWZuLmRlZg0K PiBAQCAtMTUzLDYgKzE1Myw3IEBAIERFRl9JTlRFUk5BTF9PUFRBQl9GTiAo VkVDX1NFVCwgMCwgdmVjX3NldCwgdmVjX3NldCkNCj4gREVGX0lOVEVSTkFM X09QVEFCX0ZOIChMRU5fU1RPUkUsIDAsIGxlbl9zdG9yZSwgbGVuX3N0b3Jl KQ0KPiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKFdISUxFX1VMVCwgRUNGX0NP TlNUIHwgRUNGX05PVEhST1csIHdoaWxlX3VsdCwgd2hpbGUpDQo+ICtERUZf SU5URVJOQUxfT1BUQUJfRk4gKFNFTEVDVF9WTCwgRUNGX0NPTlNUIHwgRUNG X05PVEhST1csIHNlbGVjdF92bCwgYmluYXJ5KQ0KPiBERUZfSU5URVJOQUxf T1BUQUJfRk4gKENIRUNLX1JBV19QVFJTLCBFQ0ZfQ09OU1QgfCBFQ0ZfTk9U SFJPVywNCj4gICAgICAgIGNoZWNrX3Jhd19wdHJzLCBjaGVja19wdHJzKQ0K PiBERUZfSU5URVJOQUxfT1BUQUJfRk4gKENIRUNLX1dBUl9QVFJTLCBFQ0Zf Q09OU1QgfCBFQ0ZfTk9USFJPVywNCj4gZGlmZiAtLWdpdCBhL2djYy9vcHRh YnMuZGVmIGIvZ2NjL29wdGFicy5kZWYNCj4gaW5kZXggNjk1ZjU5MTFiMzAu LmI2Mzc0NzFiNzZlIDEwMDY0NA0KPiAtLS0gYS9nY2Mvb3B0YWJzLmRlZg0K PiArKysgYi9nY2Mvb3B0YWJzLmRlZg0KPiBAQCAtNDc2LDMgKzQ3Niw0IEBA IE9QVEFCX0RDICh2ZWNfc2VyaWVzX29wdGFiLCAidmVjX3NlcmllcyRhIiwg VkVDX1NFUklFUykNCj4gT1BUQUJfRCAodmVjX3NobF9pbnNlcnRfb3B0YWIs ICJ2ZWNfc2hsX2luc2VydF8kYSIpDQo+IE9QVEFCX0QgKGxlbl9sb2FkX29w dGFiLCAibGVuX2xvYWRfJGEiKQ0KPiBPUFRBQl9EIChsZW5fc3RvcmVfb3B0 YWIsICJsZW5fc3RvcmVfJGEiKQ0KPiArT1BUQUJfRCAoc2VsZWN0X3ZsX29w dGFiLCAic2VsZWN0X3ZsJGEiKQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUt c3NhLWxvb3AtaXZjYW5vbi5jYyBiL2djYy90cmVlLXNzYS1sb29wLWl2Y2Fu b24uY2MNCj4gaW5kZXggZTQxZWM3M2E1MmEuLmQ0ZTExM2M0NGRmIDEwMDY0 NA0KPiAtLS0gYS9nY2MvdHJlZS1zc2EtbG9vcC1pdmNhbm9uLmNjDQo+ICsr KyBiL2djYy90cmVlLXNzYS1sb29wLWl2Y2Fub24uY2MNCj4gQEAgLTExMyw3 ICsxMTMsNyBAQCBjcmVhdGVfY2Fub25pY2FsX2l2IChjbGFzcyBsb29wICps b29wLCBlZGdlIGV4aXQsIHRyZWUgbml0ZXIsDQo+ICAgICAgICBuaXRlciwN Cj4gICAgICAgIGJ1aWxkX2ludF9jc3QgKHR5cGUsIDEpKTsNCj4gICAgaW5j cl9hdCA9IGdzaV9sYXN0X2JiIChpbi0+c3JjKTsNCj4gLSAgY3JlYXRlX2l2 IChuaXRlciwNCj4gKyAgY3JlYXRlX2l2IChuaXRlciwgUExVU19FWFBSLA0K PiAgICAgIGJ1aWxkX2ludF9jc3QgKHR5cGUsIC0xKSwNCj4gICAgICBOVUxM X1RSRUUsIGxvb3AsDQo+ICAgICAgJmluY3JfYXQsIGZhbHNlLCB2YXJfYmVm b3JlLCAmdmFyKTsNCj4gZGlmZiAtLWdpdCBhL2djYy90cmVlLXNzYS1sb29w LWl2b3B0cy5jYyBiL2djYy90cmVlLXNzYS1sb29wLWl2b3B0cy5jYw0KPiBp bmRleCA3OGU4Y2JjNzViNS4uODY0MGZlMmQ0ODcgMTAwNjQ0DQo+IC0tLSBh L2djYy90cmVlLXNzYS1sb29wLWl2b3B0cy5jYw0KPiArKysgYi9nY2MvdHJl ZS1zc2EtbG9vcC1pdm9wdHMuY2MNCj4gQEAgLTcyNjcsNyArNzI2Nyw3IEBA IGNyZWF0ZV9uZXdfaXYgKHN0cnVjdCBpdm9wdHNfZGF0YSAqZGF0YSwgc3Ry dWN0IGl2X2NhbmQgKmNhbmQpDQo+ICAgIGJhc2UgPSB1bnNoYXJlX2V4cHIg KGNhbmQtPml2LT5iYXNlKTsNCj4gLSAgY3JlYXRlX2l2IChiYXNlLCB1bnNo YXJlX2V4cHIgKGNhbmQtPml2LT5zdGVwKSwNCj4gKyAgY3JlYXRlX2l2IChi YXNlLCBQTFVTX0VYUFIsIHVuc2hhcmVfZXhwciAoY2FuZC0+aXYtPnN0ZXAp LA0KPiAgICAgIGNhbmQtPnZhcl9iZWZvcmUsIGRhdGEtPmN1cnJlbnRfbG9v cCwNCj4gICAgICAmaW5jcl9wb3MsIGFmdGVyLCAmY2FuZC0+dmFyX2JlZm9y ZSwgJmNhbmQtPnZhcl9hZnRlcik7DQo+IH0NCj4gZGlmZiAtLWdpdCBhL2dj Yy90cmVlLXNzYS1sb29wLW1hbmlwLmNjIGIvZ2NjL3RyZWUtc3NhLWxvb3At bWFuaXAuY2MNCj4gaW5kZXggOTA5YjcwNWQwMGQuLjVhYmNhNjQzNzllIDEw MDY0NA0KPiAtLS0gYS9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5jYw0KPiAr KysgYi9nY2MvdHJlZS1zc2EtbG9vcC1tYW5pcC5jYw0KPiBAQCAtNDcsNyAr NDcsOSBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkcz LiAgSWYgbm90IHNlZQ0KPiAgICAgc28gdGhhdCB3ZSBjYW4gZnJlZSB0aGVt IGFsbCBhdCBvbmNlLiAgKi8NCj4gc3RhdGljIGJpdG1hcF9vYnN0YWNrIGxv b3BfcmVuYW1lcl9vYnN0YWNrOw0KPiAtLyogQ3JlYXRlcyBhbiBpbmR1Y3Rp b24gdmFyaWFibGUgd2l0aCB2YWx1ZSBCQVNFICsgU1RFUCAqIGl0ZXJhdGlv biBpbiBMT09QLg0KPiArLyogQ3JlYXRlcyBhbiBpbmR1Y3Rpb24gdmFyaWFi bGUgd2l0aCB2YWx1ZSBCQVNFICgrLy0pIFNURVAgKiBpdGVyYXRpb24gaW4g TE9PUC4NCj4gKyAgIElmIENPREUgaXMgUExVU19FWFBSLCB0aGUgaW5kdWN0 aW9uIHZhcmlhYmxlIGlzIEJBU0UgKyBTVEVQICogaXRlcmF0aW9uLg0KPiAr ICAgSWYgQ09ERSBpcyBNSU5VU19FWFBSLCB0aGUgaW5kdWN0aW9uIHZhcmlh YmxlIGlzIEJBU0UgLSBTVEVQICogaXRlcmF0aW9uLg0KPiAgICAgSXQgaXMg ZXhwZWN0ZWQgdGhhdCBuZWl0aGVyIEJBU0Ugbm9yIFNURVAgYXJlIHNoYXJl ZCB3aXRoIG90aGVyIGV4cHJlc3Npb25zDQo+ICAgICAodW5sZXNzIHRoZSBz aGFyaW5nIHJ1bGVzIGFsbG93IHRoaXMpLiAgVXNlIFZBUiBhcyBhIGJhc2Ug dmFyX2RlY2wgZm9yIGl0DQo+ICAgICAoaWYgTlVMTCwgYSBuZXcgdGVtcG9y YXJ5IHdpbGwgYmUgY3JlYXRlZCkuICBUaGUgaW5jcmVtZW50IHdpbGwgb2Nj dXIgYXQNCj4gQEAgLTU3LDggKzU5LDggQEAgc3RhdGljIGJpdG1hcF9vYnN0 YWNrIGxvb3BfcmVuYW1lcl9vYnN0YWNrOw0KPiAgICAgVkFSX0FGVEVSICh1 bmxlc3MgdGhleSBhcmUgTlVMTCkuICAqLw0KPiB2b2lkDQo+IC1jcmVhdGVf aXYgKHRyZWUgYmFzZSwgdHJlZSBzdGVwLCB0cmVlIHZhciwgY2xhc3MgbG9v cCAqbG9vcCwNCj4gLSAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciAqaW5jcl9w b3MsIGJvb2wgYWZ0ZXIsDQo+ICtjcmVhdGVfaXYgKHRyZWUgYmFzZSwgdHJl ZV9jb2RlIGNvZGUsIHRyZWUgc3RlcCwgdHJlZSB2YXIsDQo+ICsgICAgY2xh c3MgbG9vcCAqbG9vcCwgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKmluY3JfcG9z LCBib29sIGFmdGVyLA0KPiAgICB0cmVlICp2YXJfYmVmb3JlLCB0cmVlICp2 YXJfYWZ0ZXIpDQo+IHsNCj4gICAgZ2Fzc2lnbiAqc3RtdDsNCj4gQEAgLTY2 LDcgKzY4LDkgQEAgY3JlYXRlX2l2ICh0cmVlIGJhc2UsIHRyZWUgc3RlcCwg dHJlZSB2YXIsIGNsYXNzIGxvb3AgKmxvb3AsDQo+ICAgIHRyZWUgaW5pdGlh bCwgc3RlcDE7DQo+ICAgIGdpbXBsZV9zZXEgc3RtdHM7DQo+ICAgIHRyZWUg dmIsIHZhOw0KPiAtICBlbnVtIHRyZWVfY29kZSBpbmNyX29wID0gUExVU19F WFBSOw0KPiArICAvKiBUaGUgY29kZSBjYW4gb25seSBiZSBQTFVTX0VYUFIg b3IgTUlOVVNfRVhQUi4gICovDQo+ICsgIGdjY19hc3NlcnQgKGNvZGUgPT0g UExVU19FWFBSIHx8IGNvZGUgPT0gTUlOVVNfRVhQUik7DQo+ICsgIHRyZWVf Y29kZSBpbmNyX29wID0gY29kZTsNCj4gICAgZWRnZSBwZSA9IGxvb3BfcHJl aGVhZGVyX2VkZ2UgKGxvb3ApOw0KPiAgICBpZiAodmFyICE9IE5VTExfVFJF RSkNCj4gQEAgLTEzNjUsNyArMTM2OSw3IEBAIHRyZWVfdHJhbnNmb3JtX2Fu ZF91bnJvbGxfbG9vcCAoY2xhc3MgbG9vcCAqbG9vcCwgdW5zaWduZWQgZmFj dG9yLA0KPiAgICAgICAgdHJlZSBjdHJfYmVmb3JlLCBjdHJfYWZ0ZXI7DQo+ ICAgICAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBic2kgPSBnc2lfbGFzdF9u b25kZWJ1Z19iYiAobmV3X2V4aXQtPnNyYyk7DQo+ICAgICAgICBleGl0X2lm ID0gYXNfYSA8Z2NvbmQgKj4gKGdzaV9zdG10IChic2kpKTsNCj4gLSAgICAg IGNyZWF0ZV9pdiAoZXhpdF9iYXNlLCBleGl0X3N0ZXAsIE5VTExfVFJFRSwg bG9vcCwNCj4gKyAgICAgIGNyZWF0ZV9pdiAoZXhpdF9iYXNlLCBQTFVTX0VY UFIsIGV4aXRfc3RlcCwgTlVMTF9UUkVFLCBsb29wLA0KPiAmYnNpLCBmYWxz ZSwgJmN0cl9iZWZvcmUsICZjdHJfYWZ0ZXIpOw0KPiAgICAgICAgZ2ltcGxl X2NvbmRfc2V0X2NvZGUgKGV4aXRfaWYsIGV4aXRfY21wKTsNCj4gICAgICAg IGdpbXBsZV9jb25kX3NldF9saHMgKGV4aXRfaWYsIGN0cl9hZnRlcik7DQo+ IEBAIC0xNTgwLDggKzE1ODQsOCBAQCBjYW5vbmljYWxpemVfbG9vcF9pdnMg KGNsYXNzIGxvb3AgKmxvb3AsIHRyZWUgKm5pdCwgYm9vbCBidW1wX2luX2xh dGNoKQ0KPiAgICAgIGdzaSA9IGdzaV9sYXN0X2JiIChsb29wLT5sYXRjaCk7 DQo+ICAgIGVsc2UNCj4gICAgICBnc2kgPSBnc2lfbGFzdF9ub25kZWJ1Z19i YiAobG9vcC0+aGVhZGVyKTsNCj4gLSAgY3JlYXRlX2l2IChidWlsZF9pbnRf Y3N0X3R5cGUgKHR5cGUsIDApLCBidWlsZF9pbnRfY3N0ICh0eXBlLCAxKSwg TlVMTF9UUkVFLA0KPiAtICAgICAgbG9vcCwgJmdzaSwgYnVtcF9pbl9sYXRj aCwgJnZhcl9iZWZvcmUsIE5VTEwpOw0KPiArICBjcmVhdGVfaXYgKGJ1aWxk X2ludF9jc3RfdHlwZSAodHlwZSwgMCksIFBMVVNfRVhQUiwgYnVpbGRfaW50 X2NzdCAodHlwZSwgMSksDQo+ICsgICAgICBOVUxMX1RSRUUsIGxvb3AsICZn c2ksIGJ1bXBfaW5fbGF0Y2gsICZ2YXJfYmVmb3JlLCBOVUxMKTsNCj4gICAg cmV3cml0ZV9hbGxfcGhpX25vZGVzX3dpdGhfaXYgKGxvb3AsIHZhcl9iZWZv cmUpOw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUtc3NhLWxvb3AtbWFuaXAu aCBiL2djYy90cmVlLXNzYS1sb29wLW1hbmlwLmgNCj4gaW5kZXggZDQ5Mjcz YTM5ODcuLmJkYTA5ZjUxZDU2IDEwMDY0NA0KPiAtLS0gYS9nY2MvdHJlZS1z c2EtbG9vcC1tYW5pcC5oDQo+ICsrKyBiL2djYy90cmVlLXNzYS1sb29wLW1h bmlwLmgNCj4gQEAgLTIyLDggKzIyLDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNl ZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUNCj4gdHlwZWRlZiB2 b2lkICgqdHJhbnNmb3JtX2NhbGxiYWNrKShjbGFzcyBsb29wICosIHZvaWQg Kik7DQo+IC1leHRlcm4gdm9pZCBjcmVhdGVfaXYgKHRyZWUsIHRyZWUsIHRy ZWUsIGNsYXNzIGxvb3AgKiwgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgKiwNCj4g LSAgICAgICAgYm9vbCwgdHJlZSAqLCB0cmVlICopOw0KPiArZXh0ZXJuIHZv aWQgY3JlYXRlX2l2ICh0cmVlLCB0cmVlX2NvZGUsIHRyZWUsIHRyZWUsIGNs YXNzIGxvb3AgKiwNCj4gKyAgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3Ig KiwgYm9vbCwgdHJlZSAqLCB0cmVlICopOw0KPiBleHRlcm4gdm9pZCByZXdy aXRlX2ludG9fbG9vcF9jbG9zZWRfc3NhIChiaXRtYXAsIHVuc2lnbmVkKTsN Cj4gZXh0ZXJuIHZvaWQgdmVyaWZ5X2xvb3BfY2xvc2VkX3NzYSAoYm9vbCwg Y2xhc3MgbG9vcCAqID0gTlVMTCk7DQo+IGRpZmYgLS1naXQgYS9nY2MvdHJl ZS12ZWN0LWRhdGEtcmVmcy5jYyBiL2djYy90cmVlLXZlY3QtZGF0YS1yZWZz LmNjDQo+IGluZGV4IDY3MjFhYjZlZmM0Li41YzkxMDNiMTZlNSAxMDA2NDQN Cj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCj4gKysrIGIv Z2NjL3RyZWUtdmVjdC1kYXRhLXJlZnMuY2MNCj4gQEAgLTUwOTksNyArNTA5 OSw3IEBAIHZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0ciAodmVjX2luZm8gKnZp bmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywNCj4gICAgICAgIHN0YW5k YXJkX2l2X2luY3JlbWVudF9wb3NpdGlvbiAobG9vcCwgJmluY3JfZ3NpLCAm aW5zZXJ0X2FmdGVyKTsNCj4gLSAgICAgIGNyZWF0ZV9pdiAoYWdncl9wdHJf aW5pdCwNCj4gKyAgICAgIGNyZWF0ZV9pdiAoYWdncl9wdHJfaW5pdCwgUExV U19FWFBSLA0KPiBmb2xkX2NvbnZlcnQgKGFnZ3JfcHRyX3R5cGUsIGl2X3N0 ZXApLA0KPiBhZ2dyX3B0ciwgbG9vcCwgJmluY3JfZ3NpLCBpbnNlcnRfYWZ0 ZXIsDQo+ICZpbmR4X2JlZm9yZV9pbmNyLCAmaW5keF9hZnRlcl9pbmNyKTsN Cj4gQEAgLTUxMjksOSArNTEyOSw5IEBAIHZlY3RfY3JlYXRlX2RhdGFfcmVm X3B0ciAodmVjX2luZm8gKnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5m bywNCj4gICAgICB7DQo+ICAgICAgICBzdGFuZGFyZF9pdl9pbmNyZW1lbnRf cG9zaXRpb24gKGNvbnRhaW5pbmdfbG9vcCwgJmluY3JfZ3NpLA0KPiAgICAg ICAmaW5zZXJ0X2FmdGVyKTsNCj4gLSAgICAgIGNyZWF0ZV9pdiAoYXB0ciwg Zm9sZF9jb252ZXJ0IChhZ2dyX3B0cl90eXBlLCBEUl9TVEVQIChkcikpLCBh Z2dyX3B0ciwNCj4gLSBjb250YWluaW5nX2xvb3AsICZpbmNyX2dzaSwgaW5z ZXJ0X2FmdGVyLCAmaW5keF9iZWZvcmVfaW5jciwNCj4gLSAmaW5keF9hZnRl cl9pbmNyKTsNCj4gKyAgICAgIGNyZWF0ZV9pdiAoYXB0ciwgUExVU19FWFBS LCBmb2xkX2NvbnZlcnQgKGFnZ3JfcHRyX3R5cGUsIERSX1NURVAgKGRyKSks DQo+ICsgYWdncl9wdHIsIGNvbnRhaW5pbmdfbG9vcCwgJmluY3JfZ3NpLCBp bnNlcnRfYWZ0ZXIsDQo+ICsgJmluZHhfYmVmb3JlX2luY3IsICZpbmR4X2Fm dGVyX2luY3IpOw0KPiAgICAgICAgaW5jciA9IGdzaV9zdG10IChpbmNyX2dz aSk7DQo+ICAgICAgICAvKiBDb3B5IHRoZSBwb2ludHMtdG8gaW5mb3JtYXRp b24gaWYgaXQgZXhpc3RzLiAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3RyZWUt dmVjdC1sb29wLW1hbmlwLmNjIGIvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlw LmNjDQo+IGluZGV4IDQ0YmQ1ZjJjODA1Li5kNjNkZWQ1ZDRmMCAxMDA2NDQN Cj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1sb29wLW1hbmlwLmNjDQo+ICsrKyBi L2djYy90cmVlLXZlY3QtbG9vcC1tYW5pcC5jYw0KPiBAQCAtMzg1LDYgKzM4 NSw0OCBAQCB2ZWN0X21heWJlX3Blcm11dGVfbG9vcF9tYXNrcyAoZ2ltcGxl X3NlcSAqc2VxLCByZ3JvdXBfY29udHJvbHMgKmRlc3RfcmdtLA0KPiAgICBy ZXR1cm4gZmFsc2U7DQo+IH0NCj4gKy8qIFRyeSB0byB1c2UgcGVybXV0ZXMg dG8gZGVmaW5lIHRoZSBsZW5zIGluIERFU1RfUkdNIHVzaW5nIHRoZSBsZW5z DQo+ICsgICBpbiBTUkNfUkdNLCBnaXZlbiB0aGF0IHRoZSBmb3JtZXIgaGFz IHR3aWNlIGFzIG1hbnkgbGVucyBhcyB0aGUNCj4gKyAgIGxhdHRlci4gIFJl dHVybiB0cnVlIG9uIHN1Y2Nlc3MsIGFkZGluZyBhbnkgbmV3IHN0YXRlbWVu dHMgdG8gU0VRLiAgKi8NCj4gKw0KPiArc3RhdGljIGJvb2wNCj4gK3ZlY3Rf bWF5YmVfcGVybXV0ZV9sb29wX2xlbnMgKHRyZWUgaXZfdHlwZSwgZ2ltcGxl X3NlcSAqc2VxLA0KPiArICAgICAgIHJncm91cF9jb250cm9scyAqZGVzdF9y Z20sDQo+ICsgICAgICAgcmdyb3VwX2NvbnRyb2xzICpzcmNfcmdtKQ0KPiAr ew0KPiArICB0cmVlIGN0cmxfdHlwZSA9IGRlc3RfcmdtLT50eXBlOw0KPiAr ICBwb2x5X3VpbnQ2NCBuaXRlbXNfcGVyX2N0cmwNCj4gKyAgICA9IFRZUEVf VkVDVE9SX1NVQlBBUlRTIChjdHJsX3R5cGUpICogZGVzdF9yZ20tPmZhY3Rv cjsNCj4gKyAgaWYgKGRlc3RfcmdtLT5tYXhfbnNjYWxhcnNfcGVyX2l0ZXIg PD0gc3JjX3JnbS0+bWF4X25zY2FsYXJzX3Blcl9pdGVyKQ0KPiArICAgIHsN Cj4gKyAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAwOyBpIDwgZGVzdF9y Z20tPmNvbnRyb2xzLmxlbmd0aCAoKTsgKytpKQ0KPiArIHsNCj4gKyAgIHRy ZWUgc3JjID0gc3JjX3JnbS0+Y29udHJvbHNbaSAvIGRlc3RfcmdtLT5jb250 cm9scy5sZW5ndGggKCldOw0KPiArICAgdHJlZSBkZXN0ID0gZGVzdF9yZ20t PmNvbnRyb2xzW2ldOw0KPiArICAgZ2Fzc2lnbiAqc3RtdDsNCj4gKyAgIGlm IChpID09IDApDQo+ICsgICAgIHsNCj4gKyAgICAgICAvKiBNSU4gKFgsIFZG KkkvTikgY2FwcGVkIHRvIHRoZSByYW5nZSBbMCwgVkYvTl0uICAqLw0KPiAr ICAgICAgIHRyZWUgZmFjdG9yID0gYnVpbGRfaW50X2NzdCAoaXZfdHlwZSwg bml0ZW1zX3Blcl9jdHJsKTsNCj4gKyAgICAgICBzdG10ID0gZ2ltcGxlX2J1 aWxkX2Fzc2lnbiAoZGVzdCwgTUlOX0VYUFIsIHNyYywgZmFjdG9yKTsNCj4g KyAgICAgICBnaW1wbGVfc2VxX2FkZF9zdG10IChzZXEsIHN0bXQpOw0KPiAr ICAgICB9DQo+ICsgICBlbHNlDQo+ICsgICAgIHsNCj4gKyAgICAgICAvKiAo WCAtIE1JTiAoWCwgVkYqSS9OKSkgY2FwcGVkIHRvIHRoZSByYW5nZSBbMCwg VkYvTl0uICAqLw0KPiArICAgICAgIHRyZWUgZmFjdG9yID0gYnVpbGRfaW50 X2NzdCAoaXZfdHlwZSwgbml0ZW1zX3Blcl9jdHJsICogaSk7DQo+ICsgICAg ICAgdHJlZSB0ZW1wID0gbWFrZV9zc2FfbmFtZSAoaXZfdHlwZSk7DQo+ICsg ICAgICAgc3RtdCA9IGdpbXBsZV9idWlsZF9hc3NpZ24gKHRlbXAsIE1JTl9F WFBSLCBzcmMsIGZhY3Rvcik7DQo+ICsgICAgICAgZ2ltcGxlX3NlcV9hZGRf c3RtdCAoc2VxLCBzdG10KTsNCj4gKyAgICAgICBzdG10ID0gZ2ltcGxlX2J1 aWxkX2Fzc2lnbiAoZGVzdCwgTUlOVVNfRVhQUiwgc3JjLCB0ZW1wKTsNCj4g KyAgICAgICBnaW1wbGVfc2VxX2FkZF9zdG10IChzZXEsIHN0bXQpOw0KPiAr ICAgICB9DQo+ICsgfQ0KPiArICAgICAgcmV0dXJuIHRydWU7DQo+ICsgICAg fQ0KPiArICByZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gLyogSGVscGVy IGZvciB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMu ICBHZW5lcmF0ZSBkZWZpbml0aW9ucw0KPiAgICAgZm9yIGFsbCB0aGUgcmdy b3VwIGNvbnRyb2xzIGluIFJHQyBhbmQgcmV0dXJuIGEgY29udHJvbCB0aGF0 IGlzIG5vbnplcm8NCj4gICAgIHdoZW4gdGhlIGxvb3AgbmVlZHMgdG8gaXRl cmF0ZS4gIEFkZCBhbnkgbmV3IHByZWhlYWRlciBzdGF0ZW1lbnRzIHRvDQo+ IEBAIC00NjgsOCArNTEwLDkgQEAgdmVjdF9zZXRfbG9vcF9jb250cm9sc19k aXJlY3RseSAoY2xhc3MgbG9vcCAqbG9vcCwgbG9vcF92ZWNfaW5mbyBsb29w X3ZpbmZvLA0KPiAgICBnaW1wbGVfc3RtdF9pdGVyYXRvciBpbmNyX2dzaTsN Cj4gICAgYm9vbCBpbnNlcnRfYWZ0ZXI7DQo+ICAgIHN0YW5kYXJkX2l2X2lu Y3JlbWVudF9wb3NpdGlvbiAobG9vcCwgJmluY3JfZ3NpLCAmaW5zZXJ0X2Fm dGVyKTsNCj4gLSAgY3JlYXRlX2l2IChidWlsZF9pbnRfY3N0IChpdl90eXBl LCAwKSwgbml0ZW1zX3N0ZXAsIE5VTExfVFJFRSwgbG9vcCwNCj4gLSAgICAg ICZpbmNyX2dzaSwgaW5zZXJ0X2FmdGVyLCAmaW5kZXhfYmVmb3JlX2luY3Is ICZpbmRleF9hZnRlcl9pbmNyKTsNCj4gKyAgY3JlYXRlX2l2IChidWlsZF9p bnRfY3N0IChpdl90eXBlLCAwKSwgUExVU19FWFBSLCBuaXRlbXNfc3RlcCwg TlVMTF9UUkVFLA0KPiArICAgICAgbG9vcCwgJmluY3JfZ3NpLCBpbnNlcnRf YWZ0ZXIsICZpbmRleF9iZWZvcmVfaW5jciwNCj4gKyAgICAgICZpbmRleF9h ZnRlcl9pbmNyKTsNCj4gICAgdHJlZSB6ZXJvX2luZGV4ID0gYnVpbGRfaW50 X2NzdCAoY29tcGFyZV90eXBlLCAwKTsNCj4gICAgdHJlZSB0ZXN0X2luZGV4 LCB0ZXN0X2xpbWl0LCBmaXJzdF9saW1pdDsNCj4gQEAgLTY4Miw2ICs3MjUs MzAwIEBAIHZlY3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGNsYXNz IGxvb3AgKmxvb3AsIGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywNCj4gICAg cmV0dXJuIG5leHRfY3RybDsNCj4gfQ0KPiArLyogSGVscGVyIGZvciB2ZWN0 X3NldF9sb29wX2NvbmRpdGlvbl9wYXJ0aWFsX3ZlY3RvcnMuICBHZW5lcmF0 ZSBkZWZpbml0aW9ucw0KPiArICAgZm9yIGFsbCB0aGUgcmdyb3VwIGNvbnRy b2xzIGluIFJHQyBhbmQgcmV0dXJuIGEgY29udHJvbCB0aGF0IGlzIG5vbnpl cm8NCj4gKyAgIHdoZW4gdGhlIGxvb3AgbmVlZHMgdG8gaXRlcmF0ZS4gIEFk ZCBhbnkgbmV3IHByZWhlYWRlciBzdGF0ZW1lbnRzIHRvDQo+ICsgICBQUkVI RUFERVJfU0VRLiAgVXNlIExPT1BfQ09ORF9HU0kgdG8gaW5zZXJ0IGNvZGUg YmVmb3JlIHRoZSBleGl0IGdjb25kLg0KPiArDQo+ICsgICBSR0MgYmVsb25n cyB0byBsb29wIExPT1AuICBUaGUgbG9vcCBvcmlnaW5hbGx5IGl0ZXJhdGVk IE5JVEVSUw0KPiArICAgdGltZXMgYW5kIGhhcyBiZWVuIHZlY3Rvcml6ZWQg YWNjb3JkaW5nIHRvIExPT1BfVklORk8uDQo+ICsNCj4gKyAgIFVubGlrZSB2 ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IHdoaWNoIGlzIGl0ZXJh dGluZyBmcm9tIDAtYmFzZWQgSVYNCj4gKyAgIHRvIFRFU1RfTElNSVQgLSBi aWFzLg0KPiArDQo+ICsgICBJbiB2ZWN0X3NldF9sb29wX2NvbnRyb2xzX2J5 X3NlbGVjdF92bCwgd2UgYXJlIGl0ZXJhdGluZyBmcm9tIHN0YXJ0IGF0DQo+ ICsgICBJViA9IFRFU1RfTElNSVQgLSBiaWFzIGFuZCBrZWVwIHN1YnRyYWN0 IElWIGJ5IHRoZSBsZW5ndGggY2FsY3VsYXRlZCBieQ0KPiArICAgSUZOX1NF TEVDVF9WTCBwYXR0ZXJuLg0KPiArDQo+ICsgICAxLiBTaW5nbGUgcmdyb3Vw LCB0aGUgR2ltcGxlIElSIHNob3VsZCBiZToNCj4gKw0KPiArICMgdmVjdHBf Qi42XzggPSBQSEkgPHZlY3RwX0IuNl8xMyg2KSwgJkIoNSk+DQo+ICsgIyB2 ZWN0cF9CLjhfMTYgPSBQSEkgPHZlY3RwX0IuOF8xNyg2KSwgJkIoNSk+DQo+ ICsgIyB2ZWN0cF9BLjExXzE5ID0gUEhJIDx2ZWN0cF9BLjExXzIwKDYpLCAm QSg1KT4NCj4gKyAjIHZlY3RwX0EuMTNfMjIgPSBQSEkgPHZlY3RwX0EuMTNf MjMoNiksICZBKDUpPg0KPiArICMgaXZ0bXBfMjYgPSBQSEkgPGl2dG1wXzI3 KDYpLCBfMjUoNSk+DQo+ICsgXzI4ID0gLlNFTEVDVF9WTCAoaXZ0bXBfMjYs IFBPTFlfSU5UX0NTVCBbNCwgNF0pOw0KPiArIGl2dG1wXzE1ID0gXzI4ICog NDsNCj4gKyB2ZWN0X18xLjEwXzE4ID0gLkxFTl9MT0FEICh2ZWN0cF9CLjhf MTYsIDEyOEIsIF8yOCwgMCk7DQo+ICsgXzEgPSBCW2lfMTBdOw0KPiArIC5M RU5fU1RPUkUgKHZlY3RwX0EuMTNfMjIsIDEyOEIsIF8yOCwgdmVjdF9fMS4x MF8xOCwgMCk7DQo+ICsgaV83ID0gaV8xMCArIDE7DQo+ICsgdmVjdHBfQi44 XzE3ID0gdmVjdHBfQi44XzE2ICsgaXZ0bXBfMTU7DQo+ICsgdmVjdHBfQS4x M18yMyA9IHZlY3RwX0EuMTNfMjIgKyBpdnRtcF8xNTsNCj4gKyBpdnRtcF8y NyA9IGl2dG1wXzI2IC0gXzI4Ow0KPiArIGlmIChpdnRtcF8yNyAhPSAwKQ0K PiArICAgZ290byA8YmIgNj47IFs4My4zMyVdDQo+ICsgZWxzZQ0KPiArICAg Z290byA8YmIgNz47IFsxNi42NyVdDQo+ICsNCj4gKyAgIE5vdGU6IFdlIHVz ZSB0aGUgb3V0Y29tZSBvZiAuU0VMRUNUX1ZMIHRvIGFkanVzdCBib3RoIGxv b3AgY29udHJvbCBJViBhbmQNCj4gKyAgIGRhdGEgcmVmZXJlbmNlIHBvaW50 ZXIgSVYuDQo+ICsNCj4gKyAgIDEpLiBUaGUgcmVzdWx0IG9mIC5TRUxFQ1Rf Vkw6DQo+ICsgICAgICAgXzI4ID0gLlNFTEVDVF9WTCAoaXZ0bXBfMjYsIFBP TFlfSU5UX0NTVCBbNCwgNF0pOw0KPiArICAgICAgIFRoZSBfMjggaXMgbm90 IG5lY2Vzc2FyeSB0byBiZSBWRiBpbiBhbnkgaXRlcmF0aW9uLCBpbnN0ZWFk LCB3ZSBhbGxvdw0KPiArICAgICAgIF8yOCB0byBiZSBhbnkgdmFsdWUgYXMg bG9uZyBhcyBfMjggPD0gVkYuIFN1Y2ggZmxleGlibGUgU0VMRUNUX1ZMDQo+ ICsgICAgICAgcGF0dGVybiBhbGxvd3MgdGFyZ2V0IGhhdmUgdmFyaW91cyBm bGV4aWJsZSBvcHRpbWl6YXRpb25zIGluIHZlY3Rvcg0KPiArICAgICAgIGxv b3AgaXRlcmF0aW9ucy4gVGFyZ2V0IGxpa2UgUklTQy1WIGhhcyBzcGVjaWFs IGFwcGxpY2F0aW9uIHZlY3Rvcg0KPiArICAgICAgIGxlbmd0aCBjYWxjdWxh dGlvbiBpbnN0cnVjdGlvbiB3aGljaCB3aWxsIGRpc3RyaWJ1dGUgZXZlbiB3 b3JrbG9hZA0KPiArICAgICAgIGluIHRoZSBsYXN0IDIgaXRlcmF0aW9ucy4N Cj4gKw0KPiArICAgICAgIE90aGVyIGV4YW1wbGUgaXMgdGhhdCB3ZSBjYW4g YWxsb3cgZXZlbiBnZW5lcmF0ZSBfMjggPD0gVkYgLyAyIHNvDQo+ICsgICAg ICAgdGhhdCBzb21lIG1hY2hpbmUgY2FuIHJ1biB2ZWN0b3IgY29kZXMgaW4g bG93IHBvd2VyIG1vZGUuDQo+ICsNCj4gKyAgIDIpLiBMb29wIGNvbnRyb2wg SVY6DQo+ICsgICAgICAgaXZ0bXBfMjcgPSBpdnRtcF8yNiAtIF8yODsNCj4g KyAgICAgICBpZiAoaXZ0bXBfMjcgIT0gMCkNCj4gKyBnb3RvIDxiYiA2Pjsg WzgzLjMzJV0NCj4gKyAgICAgICBlbHNlDQo+ICsgZ290byA8YmIgNz47IFsx Ni42NyVdDQo+ICsNCj4gKyAgICAgICBUaGlzIGlzIHRoZSBzYXR1cmF0aW5n LXN1YnRyYWN0aW9uIHRvd2FyZHMgemVybywgdGhlIG91dGNvbWUgb2YNCj4g KyAgICAgICAuU0VMRUNUX1ZMIHdpbCBtYWtlIGl2dG1wXzI3IG5ldmVyIHVu ZGVyZmxvdyB6ZXJvLg0KPiArDQo+ICsgICAzKS4gRGF0YSByZWZlcmVuY2Ug cG9pbnRlciBJVjoNCj4gKyAgICAgICBpdnRtcF8xNSA9IF8yOCAqIDQ7DQo+ ICsgICAgICAgdmVjdHBfQi44XzE3ID0gdmVjdHBfQi44XzE2ICsgaXZ0bXBf MTU7DQo+ICsgICAgICAgdmVjdHBfQS4xM18yMyA9IHZlY3RwX0EuMTNfMjIg KyBpdnRtcF8xNTsNCj4gKw0KPiArICAgICAgIFRoZSBwb2ludGVyIElWIGlz IGFkanVzdGVkIGFjY3VyYXRlbHkgYWNjb3JkaW5nIHRvIHRoZSAuU0VMRUNU X1ZMLg0KPiArDQo+ICsgICAyLiBNdWx0aXBsZSByZ3JvdXAsIHRoZSBHaW1w bGUgSVIgc2hvdWxkIGJlOg0KPiArDQo+ICsgIyBpXzIzID0gUEhJIDxpXzIw KDYpLCAwKDExKT4NCj4gKyAjIHZlY3RwX2YuOF81MSA9IFBISSA8dmVjdHBf Zi44XzUyKDYpLCBmXzE1KEQpKDExKT4NCj4gKyAjIHZlY3RwX2QuMTBfNTkg PSBQSEkgPHZlY3RwX2QuMTBfNjAoNiksIGRfMTgoRCkoMTEpPg0KPiArICMg aXZ0bXBfNzAgPSBQSEkgPGl2dG1wXzcxKDYpLCBfNjkoMTEpPg0KPiArICMg aXZ0bXBfNzMgPSBQSEkgPGl2dG1wXzc0KDYpLCBfNjcoMTEpPg0KPiArIF83 MiA9IE1JTl9FWFBSIDxpdnRtcF83MCwgMTY+Ow0KPiArIF83NSA9IE1JTl9F WFBSIDxpdnRtcF83MywgMTY+Ow0KPiArIF8xID0gaV8yMyAqIDI7DQo+ICsg XzIgPSAobG9uZyB1bnNpZ25lZCBpbnQpIF8xOw0KPiArIF8zID0gXzIgKiAy Ow0KPiArIF80ID0gZl8xNShEKSArIF8zOw0KPiArIF81ID0gXzIgKyAxOw0K PiArIF82ID0gXzUgKiAyOw0KPiArIF83ID0gZl8xNShEKSArIF82Ow0KPiAr IC5MRU5fU1RPUkUgKHZlY3RwX2YuOF81MSwgMTI4QiwgXzc1LCB7IDEsIDIs IDEsIDIsIDEsIDIsIDEsIDIgfSwgMCk7DQo+ICsgdmVjdHBfZi44XzU2ID0g dmVjdHBfZi44XzUxICsgMTY7DQo+ICsgLkxFTl9TVE9SRSAodmVjdHBfZi44 XzU2LCAxMjhCLCBfNzIsIHsgMSwgMiwgMSwgMiwgMSwgMiwgMSwgMiB9LCAw KTsNCj4gKyBfOCA9IChsb25nIHVuc2lnbmVkIGludCkgaV8yMzsNCj4gKyBf OSA9IF84ICogNDsNCj4gKyBfMTAgPSBkXzE4KEQpICsgXzk7DQo+ICsgXzYx ID0gXzc1IC8gMjsNCj4gKyAuTEVOX1NUT1JFICh2ZWN0cF9kLjEwXzU5LCAx MjhCLCBfNjEsIHsgMywgMywgMywgMyB9LCAwKTsNCj4gKyB2ZWN0cF9kLjEw XzYzID0gdmVjdHBfZC4xMF81OSArIDE2Ow0KPiArIF82NCA9IF83MiAvIDI7 DQo+ICsgLkxFTl9TVE9SRSAodmVjdHBfZC4xMF82MywgMTI4QiwgXzY0LCB7 IDMsIDMsIDMsIDMgfSwgMCk7DQo+ICsgaV8yMCA9IGlfMjMgKyAxOw0KPiAr IHZlY3RwX2YuOF81MiA9IHZlY3RwX2YuOF81NiArIDE2Ow0KPiArIHZlY3Rw X2QuMTBfNjAgPSB2ZWN0cF9kLjEwXzYzICsgMTY7DQo+ICsgaXZ0bXBfNzQg PSBpdnRtcF83MyAtIF83NTsNCj4gKyBpdnRtcF83MSA9IGl2dG1wXzcwIC0g XzcyOw0KPiArIGlmIChpdnRtcF83NCAhPSAwKQ0KPiArICAgZ290byA8YmIg Nj47IFs4My4zMyVdDQo+ICsgZWxzZQ0KPiArICAgZ290byA8YmIgMTM+OyBb MTYuNjclXQ0KPiArDQo+ICsgICBOb3RlOiBXZSBETyBOT1QgdXNlIC5TRUxF Q1RfVkwgaW4gU0xQIGF1dG8tdmVjdG9yaXphdGlvbiBmb3IgbXVsdGlwbGUN Cj4gKyAgIHJncm91cHMuIEluc3RlYWQsIHdlIHVzZSBNSU5fRVhQUiB0byBn dWFyYW50ZWUgd2UgYWx3YXlzIHVzZSBWRiBhcyB0aGUNCj4gKyAgIGl0ZXJh dGlvbiBhbW91bnQgZm9yIG11dGlwbGUgcmdyb3Vwcy4NCj4gKw0KPiArICAg VGhlIGFuYWx5c2lzIG9mIHRoZSBmbG93IG9mIG11bHRpcGxlIHJncm91cHM6 DQo+ICsgXzcyID0gTUlOX0VYUFIgPGl2dG1wXzcwLCAxNj47DQo+ICsgXzc1 ID0gTUlOX0VYUFIgPGl2dG1wXzczLCAxNj47DQo+ICsgLi4uDQo+ICsgLkxF Tl9TVE9SRSAodmVjdHBfZi44XzUxLCAxMjhCLCBfNzUsIHsgMSwgMiwgMSwg MiwgMSwgMiwgMSwgMiB9LCAwKTsNCj4gKyB2ZWN0cF9mLjhfNTYgPSB2ZWN0 cF9mLjhfNTEgKyAxNjsNCj4gKyAuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTYs IDEyOEIsIF83MiwgeyAxLCAyLCAxLCAyLCAxLCAyLCAxLCAyIH0sIDApOw0K PiArIC4uLg0KPiArIF82MSA9IF83NSAvIDI7DQo+ICsgLkxFTl9TVE9SRSAo dmVjdHBfZC4xMF81OSwgMTI4QiwgXzYxLCB7IDMsIDMsIDMsIDMgfSwgMCk7 DQo+ICsgdmVjdHBfZC4xMF82MyA9IHZlY3RwX2QuMTBfNTkgKyAxNjsNCj4g KyBfNjQgPSBfNzIgLyAyOw0KPiArIC5MRU5fU1RPUkUgKHZlY3RwX2QuMTBf NjMsIDEyOEIsIF82NCwgeyAzLCAzLCAzLCAzIH0sIDApOw0KPiArDQo+ICsg IFdlIHVzZSBfNzIgPSBNSU5fRVhQUiA8aXZ0bXBfNzAsIDE2PjsgdG8gZ2Vu ZXJhdGUgdGhlIG51bWJlciBvZiB0aGUgZWxlbWVudHMNCj4gKyAgdG8gYmUg cHJvY2Vzc2VkIGluIGVhY2ggaXRlcmF0aW9uLg0KPiArDQo+ICsgIFRoZSBy ZWxhdGVkIFNUT1JFczoNCj4gKyAgICBfNzIgPSBNSU5fRVhQUiA8aXZ0bXBf NzAsIDE2PjsNCj4gKyAgICAuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTYsIDEy OEIsIF83MiwgeyAxLCAyLCAxLCAyLCAxLCAyLCAxLCAyIH0sIDApOw0KPiAr ICAgIF82NCA9IF83MiAvIDI7DQo+ICsgICAgLkxFTl9TVE9SRSAodmVjdHBf ZC4xMF82MywgMTI4QiwgXzY0LCB7IDMsIDMsIDMsIDMgfSwgMCk7DQo+ICsg IFNpbmNlIHRoZXNlIDIgU1RPUkVzIHN0b3JlIDIgdmVjdG9ycyB0aGF0IHRo ZSBzZWNvbmQgdmVjdG9yIGlzIGhhbGYgZWxlbWVudHMNCj4gKyAgb2YgdGhl IGZpcnN0IHZlY3Rvci4gU28gdGhlIGxlbmd0aCBvZiBzZWNvbmQgU1RPUkUg d2lsbCBiZSBfNjQgPSBfNzIgLyAyOw0KPiArICBJdCdzIHNpbWlsYXIgdG8g dGhlIFZJRVdfQ09OVkVSVCBvZiBoYW5kbGluZyBtYXNrcyBpbiBTTFAuDQo+ ICsNCj4gKyAgMy4gTXVsdGlwbGUgcmdyb3VwcyBmb3Igbm9uLVNMUCBhdXRv LXZlY3Rvcml6YXRpb24uDQo+ICsNCj4gKyAgICAgIyBpdnRtcF8yNiA9IFBI SSA8aXZ0bXBfMjcoNCksIF8yNSgzKT4NCj4gKyAgICAgIyBpdnRtcC4zNV8x MCA9IFBISSA8aXZ0bXAuMzVfMTEoNCksIGl2dG1wLjM1XzEoMyk+DQo+ICsg ICAgICMgaXZ0bXAuMzZfMiA9IFBISSA8aXZ0bXAuMzZfOCg0KSwgaXZ0bXAu MzZfMjMoMyk+DQo+ICsgICAgIF8yOCA9IE1JTl9FWFBSIDxpdnRtcF8yNiwg UE9MWV9JTlRfQ1NUIFs4LCA4XT47DQo+ICsgICAgIGxvb3BfbGVuXzE1ID0g TUlOX0VYUFIgPF8yOCwgUE9MWV9JTlRfQ1NUIFs0LCA0XT47DQo+ICsgICAg IGxvb3BfbGVuXzE2ID0gXzI4IC0gbG9vcF9sZW5fMTU7DQo+ICsgICAgIF8y OSA9ICh2b2lkICopIGl2dG1wLjM1XzEwOw0KPiArICAgICBfNyA9ICZNRU0g PHZlY3RvcihbNCw0XSkgaW50PiBbKGludCAqKV8yOV07DQo+ICsgICAgIHZl Y3RfXzEuMjVfMTcgPSAuTEVOX0xPQUQgKF83LCAxMjhCLCBsb29wX2xlbl8x NSwgMCk7DQo+ICsgICAgIF8zMyA9IF8yOSArIFBPTFlfSU5UX0NTVCBbMTYs IDE2XTsNCj4gKyAgICAgXzM0ID0gJk1FTSA8dmVjdG9yKFs0LDRdKSBpbnQ+ IFsoaW50ICopXzMzXTsNCj4gKyAgICAgdmVjdF9fMS4yNl8xOSA9IC5MRU5f TE9BRCAoXzM0LCAxMjhCLCBsb29wX2xlbl8xNiwgMCk7DQo+ICsgICAgIHZl Y3RfXzIuMjdfMjAgPSBWRUNfUEFDS19UUlVOQ19FWFBSIDx2ZWN0X18xLjI1 XzE3LCB2ZWN0X18xLjI2XzE5PjsNCj4gKyAgICAgXzMwID0gKHZvaWQgKikg aXZ0bXAuMzZfMjsNCj4gKyAgICAgXzMxID0gJk1FTSA8dmVjdG9yKFs4LDhd KSBzaG9ydCBpbnQ+IFsoc2hvcnQgaW50ICopXzMwXTsNCj4gKyAgICAgLkxF Tl9TVE9SRSAoXzMxLCAxMjhCLCBfMjgsIHZlY3RfXzIuMjdfMjAsIDApOw0K PiArICAgICBpdnRtcF8yNyA9IGl2dG1wXzI2IC0gXzI4Ow0KPiArICAgICBp dnRtcC4zNV8xMSA9IGl2dG1wLjM1XzEwICsgUE9MWV9JTlRfQ1NUIFszMiwg MzJdOw0KPiArICAgICBpdnRtcC4zNl84ID0gaXZ0bXAuMzZfMiArIFBPTFlf SU5UX0NTVCBbMTYsIDE2XTsNCj4gKyAgICAgaWYgKGl2dG1wXzI3ICE9IDAp DQo+ICsgICAgICAgZ290byA8YmIgND47IFs4My4zMyVdDQo+ICsgICAgIGVs c2UNCj4gKyAgICAgICBnb3RvIDxiYiA1PjsgWzE2LjY3JV0NCj4gKw0KPiAr ICAgICBUaGUgdG90YWwgbGVuZ3RoOiBfMjggPSBNSU5fRVhQUiA8aXZ0bXBf MjYsIFBPTFlfSU5UX0NTVCBbOCwgOF0+Ow0KPiArDQo+ICsgICAgIFRoZSBs ZW5ndGggb2YgZmlyc3QgaGFsZiB2ZWN0b3I6DQo+ICsgICAgICAgbG9vcF9s ZW5fMTUgPSBNSU5fRVhQUiA8XzI4LCBQT0xZX0lOVF9DU1QgWzQsIDRdPjsN Cj4gKw0KPiArICAgICBUaGUgbGVuZ3RoIG9mIHNlY29uZCBoYWxmIHZlY3Rv cjoNCj4gKyAgICAgICBsb29wX2xlbl8xNSA9IE1JTl9FWFBSIDxfMjgsIFBP TFlfSU5UX0NTVCBbNCwgNF0+Ow0KPiArICAgICAgIGxvb3BfbGVuXzE2ID0g XzI4IC0gbG9vcF9sZW5fMTU7DQo+ICsNCj4gKyAgICAgMSkuIF8yOCBhbHdh eXMgPD0gUE9MWV9JTlRfQ1NUIFs4LCA4XS4NCj4gKyAgICAgMikuIFdoZW4g XzI4IDw9IFBPTFlfSU5UX0NTVCBbNCwgNF0sIHNlY29uZCBoYWxmIHZlY3Rv ciBpcyBub3QgcHJvY2Vzc2VkLg0KPiArICAgICAzKS4gV2hlbiBfMjggPiBQ T0xZX0lOVF9DU1QgWzQsIDRdLCBzZWNvbmQgaGFsZiB2ZWN0b3IgaXMgcHJv Y2Vzc2VkLg0KPiArKi8NCj4gKw0KPiArc3RhdGljIHRyZWUNCj4gK3ZlY3Rf c2V0X2xvb3BfY29udHJvbHNfYnlfc2VsZWN0X3ZsIChjbGFzcyBsb29wICps b29wLCBsb29wX3ZlY19pbmZvIGxvb3BfdmluZm8sDQo+ICsgICAgICBnaW1w bGVfc2VxICpwcmVoZWFkZXJfc2VxLA0KPiArICAgICAgZ2ltcGxlX3NlcSAq aGVhZGVyX3NlcSwNCj4gKyAgICAgIHJncm91cF9jb250cm9scyAqcmdjLCB0 cmVlIG5pdGVycywNCj4gKyAgICAgIHVuc2lnbmVkIGludCBjb250cm9sc19s ZW5ndGgpDQo+ICt7DQo+ICsgIHRyZWUgY29tcGFyZV90eXBlID0gTE9PUF9W SU5GT19SR1JPVVBfQ09NUEFSRV9UWVBFIChsb29wX3ZpbmZvKTsNCj4gKyAg dHJlZSBpdl90eXBlID0gTE9PUF9WSU5GT19SR1JPVVBfSVZfVFlQRSAobG9v cF92aW5mbyk7DQo+ICsgIC8qIFdlIGFyZSBub3QgYWxsb3dpbmcgbWFza2Vk IGFwcHJvYWNoIGluIFNFTEVDVF9WTC4gICovDQo+ICsgIGdjY19hc3NlcnQg KCFMT09QX1ZJTkZPX0ZVTExZX01BU0tFRF9QIChsb29wX3ZpbmZvKSk7DQo+ ICsNCj4gKyAgdHJlZSBjdHJsX3R5cGUgPSByZ2MtPnR5cGU7DQo+ICsgIHVu c2lnbmVkIGludCBuaXRlbXNfcGVyX2l0ZXIgPSByZ2MtPm1heF9uc2NhbGFy c19wZXJfaXRlciAqIHJnYy0+ZmFjdG9yOw0KPiArICBwb2x5X3VpbnQ2NCBu aXRlbXNfcGVyX2N0cmwgPSBUWVBFX1ZFQ1RPUl9TVUJQQVJUUyAoY3RybF90 eXBlKSAqIHJnYy0+ZmFjdG9yOw0KPiArICBwb2x5X3VpbnQ2NCB2ZiA9IExP T1BfVklORk9fVkVDVF9GQUNUT1IgKGxvb3BfdmluZm8pOw0KPiArDQo+ICsg IC8qIENhbGN1bGF0ZSB0aGUgbWF4aW11bSBudW1iZXIgb2YgaXRlbSB2YWx1 ZXMgdGhhdCB0aGUgcmdyb3VwDQo+ICsgICAgIGhhbmRsZXMgaW4gdG90YWws IHRoZSBudW1iZXIgdGhhdCBpdCBoYW5kbGVzIGZvciBlYWNoIGl0ZXJhdGlv bg0KPiArICAgICBvZiB0aGUgdmVjdG9yIGxvb3AuICAqLw0KPiArICB0cmVl IG5pdGVtc190b3RhbCA9IG5pdGVyczsNCj4gKyAgaWYgKG5pdGVtc19wZXJf aXRlciAhPSAxKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIFdlIGNoZWNrZWQg YmVmb3JlIHNldHRpbmcgTE9PUF9WSU5GT19VU0lOR19QQVJUSUFMX1ZFQ1RP UlNfUCB0aGF0DQo+ICsgdGhlc2UgbXVsdGlwbGljYXRpb25zIGRvbid0IG92 ZXJmbG93LiAgKi8NCj4gKyAgICAgIHRyZWUgY29tcGFyZV9mYWN0b3IgPSBi dWlsZF9pbnRfY3N0IChjb21wYXJlX3R5cGUsIG5pdGVtc19wZXJfaXRlcik7 DQo+ICsgICAgICBuaXRlbXNfdG90YWwgPSBnaW1wbGVfYnVpbGQgKHByZWhl YWRlcl9zZXEsIE1VTFRfRVhQUiwgY29tcGFyZV90eXBlLA0KPiArICAgIG5p dGVtc190b3RhbCwgY29tcGFyZV9mYWN0b3IpOw0KPiArICAgIH0NCj4gKw0K PiArICAvKiBDb252ZXJ0IHRoZSBjb21wYXJpc29uIHZhbHVlIHRvIHRoZSBJ ViB0eXBlIChlaXRoZXIgYSBuby1vcCBvcg0KPiArICAgICBhIHByb21vdGlv bikuICAqLw0KPiArICBuaXRlbXNfdG90YWwgPSBnaW1wbGVfY29udmVydCAo cHJlaGVhZGVyX3NlcSwgaXZfdHlwZSwgbml0ZW1zX3RvdGFsKTsNCj4gKw0K PiArICAvKiBDcmVhdGUgYW4gaW5kdWN0aW9uIHZhcmlhYmxlIHRoYXQgY291 bnRzIHRoZSBudW1iZXIgb2YgaXRlbXMNCj4gKyAgICAgcHJvY2Vzc2VkLiAg Ki8NCj4gKyAgdHJlZSBpbmRleF9iZWZvcmVfaW5jciwgaW5kZXhfYWZ0ZXJf aW5jcjsNCj4gKyAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaW5jcl9nc2k7DQo+ ICsgIGJvb2wgaW5zZXJ0X2FmdGVyOw0KPiArICBzdGFuZGFyZF9pdl9pbmNy ZW1lbnRfcG9zaXRpb24gKGxvb3AsICZpbmNyX2dzaSwgJmluc2VydF9hZnRl cik7DQo+ICsNCj4gKyAgLyogVGVzdCB0aGUgZGVjcmVtZW50ZWQgSVYsIHdo aWNoIHdpbGwgbmV2ZXIgdW5kZXJmbG93IDAgc2luY2Ugd2UgaGF2ZQ0KPiAr ICAgICBJRk5fU0VMRUNUX1ZMIHRvIGd1cmFudGVlIHRoYXQuICAqLw0KPiAr ICB0cmVlIHRlc3RfbGltaXQgPSBuaXRlbXNfdG90YWw7DQo+ICsNCj4gKyAg LyogUHJvdmlkZSBhIGRlZmluaXRpb24gb2YgZWFjaCBjb250cm9sIGluIHRo ZSBncm91cC4gICovDQo+ICsgIHRyZWUgY3RybDsNCj4gKyAgdW5zaWduZWQg aW50IGk7DQo+ICsgIEZPUl9FQUNIX1ZFQ19FTFRfUkVWRVJTRSAocmdjLT5j b250cm9scywgaSwgY3RybCkNCj4gKyAgICB7DQo+ICsgICAgICAvKiBQcmV2 aW91cyBjb250cm9scyB3aWxsIGNvdmVyIEJJQVMgaXRlbXMuICBUaGlzIGNv bnRyb2wgY292ZXJzIHRoZQ0KPiArIG5leHQgYmF0Y2guICAqLw0KPiArICAg ICAgcG9seV91aW50NjQgYmlhcyA9IG5pdGVtc19wZXJfY3RybCAqIGk7DQo+ ICsgICAgICB0cmVlIGJpYXNfdHJlZSA9IGJ1aWxkX2ludF9jc3QgKGl2X3R5 cGUsIGJpYXMpOw0KPiArDQo+ICsgICAgICAvKiBSYXRoZXIgdGhhbiBoYXZl IGEgbmV3IElWIHRoYXQgc3RhcnRzIGF0IFRFU1RfTElNSVQgYW5kIGdvZXMg ZG93biB0bw0KPiArIEJJQVMsIHByZWZlciB0byB1c2UgdGhlIHNhbWUgVEVT VF9MSU1JVCAtIEJJQVMgYmFzZWQgSVYgZm9yIGVhY2gNCj4gKyBjb250cm9s IGFuZCBhZGp1c3QgdGhlIGJvdW5kIGRvd24gYnkgQklBUy4gICovDQo+ICsg ICAgICB0cmVlIHRoaXNfdGVzdF9saW1pdCA9IHRlc3RfbGltaXQ7DQo+ICsg ICAgICBpZiAoaSAhPSAwKQ0KPiArIHsNCj4gKyAgIHRoaXNfdGVzdF9saW1p dCA9IGdpbXBsZV9idWlsZCAocHJlaGVhZGVyX3NlcSwgTUFYX0VYUFIsIGl2 X3R5cGUsDQo+ICsgICB0aGlzX3Rlc3RfbGltaXQsIGJpYXNfdHJlZSk7DQo+ ICsgICB0aGlzX3Rlc3RfbGltaXQgPSBnaW1wbGVfYnVpbGQgKHByZWhlYWRl cl9zZXEsIE1JTlVTX0VYUFIsIGl2X3R5cGUsDQo+ICsgICB0aGlzX3Rlc3Rf bGltaXQsIGJpYXNfdHJlZSk7DQo+ICsgfQ0KPiArDQo+ICsgICAgICAvKiBD cmVhdGUgZGVjcmVtZW50IElWLiAgKi8NCj4gKyAgICAgIGNyZWF0ZV9pdiAo dGhpc190ZXN0X2xpbWl0LCBNSU5VU19FWFBSLCBjdHJsLCBOVUxMX1RSRUUs IGxvb3AsICZpbmNyX2dzaSwNCj4gKyBpbnNlcnRfYWZ0ZXIsICZpbmRleF9i ZWZvcmVfaW5jciwgJmluZGV4X2FmdGVyX2luY3IpOw0KPiArDQo+ICsgICAg ICBwb2x5X3VpbnQ2NCBmaW5hbF92ZiA9IHZmICogbml0ZW1zX3Blcl9pdGVy Ow0KPiArICAgICAgdHJlZSB2Zl9zdGVwID0gYnVpbGRfaW50X2NzdCAoaXZf dHlwZSwgZmluYWxfdmYpOw0KPiArICAgICAgdHJlZSByZXNfbGVuOw0KPiAr ICAgICAgaWYgKG5pdGVtc19wZXJfaXRlciAhPSAxIHx8IGNvbnRyb2xzX2xl bmd0aCAhPSAxKQ0KPiArIHsNCj4gKyAgIC8qIEZvciBTTFAsIHdlIGNhbid0 IGFsbG93IG5vbi1WRiBudW1iZXIgb2YgZWxlbWVudHMgdG8gYmUgcHJvY2Vz c2VkDQo+ICsgICAgICBpbiBub24tZmluYWwgaXRlcmF0aW9uLiBXZSBmb3Jj ZSB0aGUgbnVtYmVyIG9mIGVsZW1lbnRzIHRvIGJlDQo+ICsgICAgcHJvY2Vz c2VkIGluIGVhY2ggbm9uLWZpbmFsIGl0ZXJhdGlvbiBpcyBWRiBlbGVtZW50 cy4gSWYgd2UgYWxsb3cNCj4gKyAgICBub24tVkYgZWxlbWVudHMgcHJvY2Vz c2luZyBpbiBub24tZmluYWwgaXRlcmF0aW9uIHdpbGwgbWFrZSBTTFAgdG9v DQo+ICsgICAgY29tcGxpY2F0ZWQgYW5kIHByb2R1Y2UgaW5mZXJpb3IgY29k ZWdlbi4NCj4gKw0KPiArICAgICAgICBGb3IgZXhhbXBsZToNCj4gKw0KPiAr IElmIG5vbi1maW5hbCBpdGVyYXRpb24gcHJvY2VzcyBWRiBlbGVtZW50cy4N Cj4gKw0KPiArICAgLi4uDQo+ICsgICAuTEVOX1NUT1JFICh2ZWN0cF9mLjhf NTEsIDEyOEIsIF83MSwgeyAxLCAyLCAxLCAyIH0sIDApOw0KPiArICAgLkxF Tl9TVE9SRSAodmVjdHBfZi44XzU2LCAxMjhCLCBfNzIsIHsgMSwgMiwgMSwg MiB9LCAwKTsNCj4gKyAgIC4uLg0KPiArDQo+ICsgSWYgbm9uLWZpbmFsIGl0 ZXJhdGlvbiBwcm9jZXNzIG5vbi1WRiBlbGVtZW50cy4NCj4gKw0KPiArICAg Li4uDQo+ICsgICAuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTEsIDEyOEIsIF83 MSwgeyAxLCAyLCAxLCAyIH0sIDApOw0KPiArICAgaWYgKF83MSAlIDIgPT0g MCkNCj4gKyAgICAuTEVOX1NUT1JFICh2ZWN0cF9mLjhfNTYsIDEyOEIsIF83 MiwgeyAxLCAyLCAxLCAyIH0sIDApOw0KPiArICAgZWxzZQ0KPiArICAgIC5M RU5fU1RPUkUgKHZlY3RwX2YuOF81NiwgMTI4QiwgXzcyLCB7IDIsIDEsIDIs IDEgfSwgMCk7DQo+ICsgICAuLi4NCj4gKw0KPiArICAgIFRoaXMgaXMgdGhl IHNpbXBsZSBjYXNlIG9mIDItZWxlbWVudHMgaW50ZXJsZWF2ZWQgdmVjdG9y IFNMUC4gV2UNCj4gKyAgICBjb25zaWRlciBvdGhlciBpbnRlcmxlYXZlIHZl Y3RvciwgdGhlIHNpdHVhdGlvbiB3aWxsIGJlY29tZSBtb3JlDQo+ICsgICAg Y29tcGxpY2F0ZWQuICAqLw0KPiArICAgcmVzX2xlbiA9IGdpbXBsZV9idWls ZCAoaGVhZGVyX3NlcSwgTUlOX0VYUFIsIGl2X3R5cGUsDQo+ICsgICBpbmRl eF9iZWZvcmVfaW5jciwgdmZfc3RlcCk7DQo+ICsgfQ0KPiArICAgICAgZWxz ZQ0KPiArIHsNCj4gKyAgIHJlc19sZW4gPSBnaW1wbGVfYnVpbGQgKGhlYWRl cl9zZXEsIElGTl9TRUxFQ1RfVkwsIGl2X3R5cGUsDQo+ICsgICBpbmRleF9i ZWZvcmVfaW5jciwgdmZfc3RlcCk7DQo+ICsgfQ0KPiArICAgICAgZ2Fzc2ln biAqYXNzaWduID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoY3RybCwgcmVzX2xl bik7DQo+ICsgICAgICBnaW1wbGVfc2VxX2FkZF9zdG10IChoZWFkZXJfc2Vx LCBhc3NpZ24pOw0KPiArICAgIH0NCj4gKw0KPiArICByZXR1cm4gaW5kZXhf YWZ0ZXJfaW5jcjsNCj4gK30NCj4gKw0KPiAvKiBTZXQgdXAgdGhlIGl0ZXJh dGlvbiBjb25kaXRpb24gYW5kIHJncm91cCBjb250cm9scyBmb3IgTE9PUCwg Z2l2ZW4NCj4gICAgIHRoYXQgTE9PUF9WSU5GT19VU0lOR19QQVJUSUFMX1ZF Q1RPUlNfUCBpcyB0cnVlIGZvciB0aGUgdmVjdG9yaXplZA0KPiAgICAgbG9v cC4gIExPT1BfVklORk8gZGVzY3JpYmVzIHRoZSB2ZWN0b3JpemF0aW9uIG9m IExPT1AuICBOSVRFUlMgaXMNCj4gQEAgLTcwMyw2ICsxMDQwLDEwIEBAIHZl Y3Rfc2V0X2xvb3BfY29uZGl0aW9uX3BhcnRpYWxfdmVjdG9ycyAoY2xhc3Mg bG9vcCAqbG9vcCwNCj4gICAgYm9vbCB1c2VfbWFza3NfcCA9IExPT1BfVklO Rk9fRlVMTFlfTUFTS0VEX1AgKGxvb3BfdmluZm8pOw0KPiAgICB0cmVlIGNv bXBhcmVfdHlwZSA9IExPT1BfVklORk9fUkdST1VQX0NPTVBBUkVfVFlQRSAo bG9vcF92aW5mbyk7DQo+ICsgIHRyZWUgaXZfdHlwZSA9IExPT1BfVklORk9f UkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0KPiArICBib29sIHVzZV92 bF9wID0gIXVzZV9tYXNrc19wDQo+ICsgICAmJiBkaXJlY3RfaW50ZXJuYWxf Zm5fc3VwcG9ydGVkX3AgKElGTl9TRUxFQ1RfVkwsIGl2X3R5cGUsDQo+ICsg ICAgICBPUFRJTUlaRV9GT1JfU1BFRUQpOw0KPiAgICB1bnNpZ25lZCBpbnQg Y29tcGFyZV9wcmVjaXNpb24gPSBUWVBFX1BSRUNJU0lPTiAoY29tcGFyZV90 eXBlKTsNCj4gICAgdHJlZSBvcmlnX25pdGVycyA9IG5pdGVyczsNCj4gQEAg LTc1MiwxNyArMTA5MywzMiBAQCB2ZWN0X3NldF9sb29wX2NvbmRpdGlvbl9w YXJ0aWFsX3ZlY3RvcnMgKGNsYXNzIGxvb3AgKmxvb3AsDQo+ICAgICAgIGNv bnRpbnVlOw0KPiAgIH0NCj4gKyBpZiAodXNlX3ZsX3AgJiYgcmdjLT5jb250 cm9scy5sZW5ndGggKCkgIT0gMSkNCj4gKyAgIHsNCj4gKyAgICAgcmdyb3Vw X2NvbnRyb2xzICpzdWJfcmdjDQo+ICsgICAgICAgPSAmKCpjb250cm9scylb bm1hc2tzIC8gcmdjLT5jb250cm9scy5sZW5ndGggKCkgLSAxXTsNCj4gKyAg ICAgaWYgKCFzdWJfcmdjLT5jb250cm9scy5pc19lbXB0eSAoKQ0KPiArICYm IHZlY3RfbWF5YmVfcGVybXV0ZV9sb29wX2xlbnMgKGl2X3R5cGUsICZoZWFk ZXJfc2VxLCByZ2MsDQo+ICsgc3ViX3JnYykpDQo+ICsgICAgICAgY29udGlu dWU7DQo+ICsgICB9DQo+ICsNCj4gLyogU2VlIHdoZXRoZXIgemVyby1iYXNl ZCBJViB3b3VsZCBldmVyIGdlbmVyYXRlIGFsbC1mYWxzZSBtYXNrcw0KPiAg ICBvciB6ZXJvIGxlbmd0aCBiZWZvcmUgd3JhcHBpbmcgYXJvdW5kLiAgKi8N Cj4gYm9vbCBtaWdodF93cmFwX3AgPSB2ZWN0X3Jncm91cF9pdl9taWdodF93 cmFwX3AgKGxvb3BfdmluZm8sIHJnYyk7DQo+IC8qIFNldCB1cCBhbGwgY29u dHJvbHMgZm9yIHRoaXMgZ3JvdXAuICAqLw0KPiAtIHRlc3RfY3RybCA9IHZl Y3Rfc2V0X2xvb3BfY29udHJvbHNfZGlyZWN0bHkgKGxvb3AsIGxvb3Bfdmlu Zm8sDQo+IC0gICAgICAmcHJlaGVhZGVyX3NlcSwNCj4gLSAgICAgICZoZWFk ZXJfc2VxLA0KPiAtICAgICAgbG9vcF9jb25kX2dzaSwgcmdjLA0KPiAtICAg ICAgbml0ZXJzLCBuaXRlcnNfc2tpcCwNCj4gLSAgICAgIG1pZ2h0X3dyYXBf cCk7DQo+ICsgaWYgKHVzZV92bF9wKQ0KPiArICAgdGVzdF9jdHJsDQo+ICsg ICAgID0gdmVjdF9zZXRfbG9vcF9jb250cm9sc19ieV9zZWxlY3RfdmwgKGxv b3AsIGxvb3BfdmluZm8sDQo+ICsgICAgJnByZWhlYWRlcl9zZXEsICZoZWFk ZXJfc2VxLA0KPiArICAgIHJnYywgbml0ZXJzLCBjb250cm9scy0+bGVuZ3Ro ICgpKTsNCj4gKyBlbHNlDQo+ICsgICB0ZXN0X2N0cmwNCj4gKyAgICAgPSB2 ZWN0X3NldF9sb29wX2NvbnRyb2xzX2RpcmVjdGx5IChsb29wLCBsb29wX3Zp bmZvLCAmcHJlaGVhZGVyX3NlcSwNCj4gKyAgICAgICAgJmhlYWRlcl9zZXEs IGxvb3BfY29uZF9nc2ksIHJnYywNCj4gKyAgICAgICAgbml0ZXJzLCBuaXRl cnNfc2tpcCwNCj4gKyAgICAgICAgbWlnaHRfd3JhcF9wKTsNCj4gICAgICAg IH0NCj4gICAgLyogRW1pdCBhbGwgYWNjdW11bGF0ZWQgc3RhdGVtZW50cy4g ICovDQo+IEBAIC04OTMsNyArMTI0OSw3IEBAIHZlY3Rfc2V0X2xvb3BfY29u ZGl0aW9uX25vcm1hbCAoY2xhc3MgbG9vcCAqbG9vcCwgdHJlZSBuaXRlcnMs IHRyZWUgc3RlcCwNCj4gICAgICB9DQo+ICAgIHN0YW5kYXJkX2l2X2luY3Jl bWVudF9wb3NpdGlvbiAobG9vcCwgJmluY3JfZ3NpLCAmaW5zZXJ0X2FmdGVy KTsNCj4gLSAgY3JlYXRlX2l2IChpbml0LCBzdGVwLCBOVUxMX1RSRUUsIGxv b3AsDQo+ICsgIGNyZWF0ZV9pdiAoaW5pdCwgUExVU19FWFBSLCBzdGVwLCBO VUxMX1RSRUUsIGxvb3AsDQo+ICAgICAgICAgICAgICAgJmluY3JfZ3NpLCBp bnNlcnRfYWZ0ZXIsICZpbmR4X2JlZm9yZV9pbmNyLCAmaW5keF9hZnRlcl9p bmNyKTsNCj4gICAgaW5keF9hZnRlcl9pbmNyID0gZm9yY2VfZ2ltcGxlX29w ZXJhbmRfZ3NpICgmbG9vcF9jb25kX2dzaSwgaW5keF9hZnRlcl9pbmNyLA0K PiAgICAgICB0cnVlLCBOVUxMX1RSRUUsIHRydWUsDQo+IGRpZmYgLS1naXQg YS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MgYi9nY2MvdHJlZS12ZWN0LWxvb3Au Y2MNCj4gaW5kZXggNmVhMGYyMWZkMTMuLmQ3Y2Y5MjU3NmQxIDEwMDY0NA0K PiAtLS0gYS9nY2MvdHJlZS12ZWN0LWxvb3AuY2MNCj4gKysrIGIvZ2NjL3Ry ZWUtdmVjdC1sb29wLmNjDQo+IEBAIC01NTY3LDcgKzU1NjcsNyBAQCB2ZWN0 X2NyZWF0ZV9lcGlsb2dfZm9yX3JlZHVjdGlvbiAobG9vcF92ZWNfaW5mbyBs b29wX3ZpbmZvLA0KPiAgICAgICAgZ2ltcGxlX3N0bXRfaXRlcmF0b3IgaW5j cl9nc2k7DQo+ICAgICAgICBib29sIGluc2VydF9hZnRlcjsNCj4gICAgICAg IHN0YW5kYXJkX2l2X2luY3JlbWVudF9wb3NpdGlvbiAobG9vcCwgJmluY3Jf Z3NpLCAmaW5zZXJ0X2FmdGVyKTsNCj4gLSAgICAgIGNyZWF0ZV9pdiAoc2Vy aWVzX3ZlY3QsIHZlY19zdGVwLCBOVUxMX1RSRUUsIGxvb3AsICZpbmNyX2dz aSwNCj4gKyAgICAgIGNyZWF0ZV9pdiAoc2VyaWVzX3ZlY3QsIFBMVVNfRVhQ UiwgdmVjX3N0ZXAsIE5VTExfVFJFRSwgbG9vcCwgJmluY3JfZ3NpLA0KPiBp bnNlcnRfYWZ0ZXIsICZpbmR4X2JlZm9yZV9pbmNyLCAmaW5keF9hZnRlcl9p bmNyKTsNCj4gICAgICAgIC8qIE5leHQgY3JlYXRlIGEgbmV3IHBoaSBub2Rl IHZlY3RvciAoTkVXX1BISV9UUkVFKSB3aGljaCBzdGFydHMNCj4gQEAgLTEw MzYxLDE1ICsxMDM2MSwxOCBAQCB2ZWN0X3JlY29yZF9sb29wX2xlbiAobG9v cF92ZWNfaW5mbyBsb29wX3ZpbmZvLCB2ZWNfbG9vcF9sZW5zICpsZW5zLA0K PiB9DQo+IC8qIEdpdmVuIGEgY29tcGxldGUgc2V0IG9mIGxlbmd0aCBMRU5T LCBleHRyYWN0IGxlbmd0aCBudW1iZXIgSU5ERVggZm9yIGFuDQo+IC0gICBy Z3JvdXAgdGhhdCBvcGVyYXRlcyBvbiBOVkVDVE9SUyB2ZWN0b3JzLCB3aGVy ZSAwIDw9IElOREVYIDwgTlZFQ1RPUlMuICAqLw0KPiArICAgcmdyb3VwIHRo YXQgb3BlcmF0ZXMgb24gTlZFQ1RPUlMgdmVjdG9ycywgd2hlcmUgMCA8PSBJ TkRFWCA8IE5WRUNUT1JTLg0KPiArICAgSW5zZXJ0IGFueSBzZXQtdXAgc3Rh dGVtZW50cyBiZWZvcmUgR1NJLiAgKi8NCj4gdHJlZQ0KPiAtdmVjdF9nZXRf bG9vcF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVjX2xvb3Bf bGVucyAqbGVucywNCj4gLSAgICB1bnNpZ25lZCBpbnQgbnZlY3RvcnMsIHVu c2lnbmVkIGludCBpbmRleCkNCj4gK3ZlY3RfZ2V0X2xvb3BfbGVuIChsb29w X3ZlY19pbmZvIGxvb3BfdmluZm8sIGdpbXBsZV9zdG10X2l0ZXJhdG9yICpn c2ksDQo+ICsgICAgdmVjX2xvb3BfbGVucyAqbGVucywgdW5zaWduZWQgaW50 IG52ZWN0b3JzLCB0cmVlIHZlY3R5cGUsDQo+ICsgICAgdW5zaWduZWQgaW50 IGluZGV4KQ0KPiB7DQo+ICAgIHJncm91cF9jb250cm9scyAqcmdsID0gJigq bGVucylbbnZlY3RvcnMgLSAxXTsNCj4gICAgYm9vbCB1c2VfYmlhc19hZGp1 c3RlZF9sZW4gPQ0KPiAgICAgIExPT1BfVklORk9fUEFSVElBTF9MT0FEX1NU T1JFX0JJQVMgKGxvb3BfdmluZm8pICE9IDA7DQo+ICsgIHRyZWUgaXZfdHlw ZSA9IExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxvb3BfdmluZm8pOw0K PiAgICAvKiBQb3B1bGF0ZSB0aGUgcmdyb3VwJ3MgbGVuIGFycmF5LCBpZiB0 aGlzIGlzIHRoZSBmaXJzdCB0aW1lIHdlJ3ZlDQo+ICAgICAgIHVzZWQgaXQu ICAqLw0KPiBAQCAtMTA0MDAsNiArMTA0MDMsMjcgQEAgdmVjdF9nZXRfbG9v cF9sZW4gKGxvb3BfdmVjX2luZm8gbG9vcF92aW5mbywgdmVjX2xvb3BfbGVu cyAqbGVucywNCj4gICAgaWYgKHVzZV9iaWFzX2FkanVzdGVkX2xlbikNCj4g ICAgICByZXR1cm4gcmdsLT5iaWFzX2FkanVzdGVkX2N0cmw7DQo+ICsgIGVs c2UgaWYgKGRpcmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRfcCAoSUZOX1NF TEVDVF9WTCwgaXZfdHlwZSwNCj4gKyAgICBPUFRJTUlaRV9GT1JfU1BFRUQp KQ0KPiArICAgIHsNCj4gKyAgICAgIHRyZWUgbG9vcF9sZW4gPSByZ2wtPmNv bnRyb2xzW2luZGV4XTsNCj4gKyAgICAgIHBvbHlfaW50NjQgbnVuaXRzMSA9 IFRZUEVfVkVDVE9SX1NVQlBBUlRTIChyZ2wtPnR5cGUpOw0KPiArICAgICAg cG9seV9pbnQ2NCBudW5pdHMyID0gVFlQRV9WRUNUT1JfU1VCUEFSVFMgKHZl Y3R5cGUpOw0KPiArICAgICAgaWYgKG1heWJlX25lIChudW5pdHMxLCBudW5p dHMyKSkNCj4gKyB7DQo+ICsgICAvKiBBIGxvb3AgbGVuIGZvciBkYXRhIHR5 cGUgWCBjYW4gYmUgcmV1c2VkIGZvciBkYXRhIHR5cGUgWQ0KPiArICAgICAg aWYgWCBoYXMgTiB0aW1lcyBtb3JlIGVsZW1lbnRzIHRoYW4gWSBhbmQgaWYg WSdzIGVsZW1lbnRzDQo+ICsgICAgICBhcmUgTiB0aW1lcyBiaWdnZXIgdGhh biBYJ3MuICAqLw0KPiArICAgZ2NjX2Fzc2VydCAobXVsdGlwbGVfcCAobnVu aXRzMSwgbnVuaXRzMikpOw0KPiArICAgdW5zaWduZWQgaW50IGZhY3RvciA9 IGV4YWN0X2RpdiAobnVuaXRzMSwgbnVuaXRzMikudG9fY29uc3RhbnQgKCk7 DQo+ICsgICBnaW1wbGVfc2VxIHNlcSA9IE5VTEw7DQo+ICsgICBsb29wX2xl biA9IGdpbXBsZV9idWlsZCAoJnNlcSwgUkRJVl9FWFBSLCBpdl90eXBlLCBs b29wX2xlbiwNCj4gKyAgICBidWlsZF9pbnRfY3N0IChpdl90eXBlLCBmYWN0 b3IpKTsNCj4gKyAgIGlmIChzZXEpDQo+ICsgICAgIGdzaV9pbnNlcnRfc2Vx X2JlZm9yZSAoZ3NpLCBzZXEsIEdTSV9TQU1FX1NUTVQpOw0KPiArIH0NCj4g KyAgICAgIHJldHVybiBsb29wX2xlbjsNCj4gKyAgICB9DQo+ICAgIGVsc2UN Cj4gICAgICByZXR1cm4gcmdsLT5jb250cm9sc1tpbmRleF07DQo+IH0NCj4g ZGlmZiAtLWdpdCBhL2djYy90cmVlLXZlY3Qtc3RtdHMuY2MgYi9nY2MvdHJl ZS12ZWN0LXN0bXRzLmNjDQo+IGluZGV4IDNhZDZhN2QyOGQ3Li4yNjgxM2Fi NTZlOSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3RyZWUtdmVjdC1zdG10cy5jYw0K PiArKysgYi9nY2MvdHJlZS12ZWN0LXN0bXRzLmNjDQo+IEBAIC0zMTQ3LDYg KzMxNDcsNjEgQEAgdmVjdF9nZXRfZGF0YV9wdHJfaW5jcmVtZW50ICh2ZWNf aW5mbyAqdmluZm8sDQo+ICAgIHJldHVybiBpdl9zdGVwOw0KPiB9DQo+ICsv KiBQcmVwYXJlIHRoZSBwb2ludGVyIElWcyB3aGljaCBuZWVkcyB0byBiZSB1 cGRhdGVkIGJ5IGEgdmFyaWFibGUgYW1vdW50Lg0KPiArICAgU3VjaCB2YXJp YWJsZSBhbW91bnQgaXMgdGhlIG91dGNvbWUgb2YgLlNFTEVDVF9WTC4gSW4g dGhpcyBjYXNlLCB3ZSBjYW4NCj4gKyAgIGFsbG93IGVhY2ggaXRlcmF0aW9u IHByb2Nlc3MgdGhlIGZsZXhpYmxlIG51bWJlciBvZiBlbGVtZW50cyBhcyBs b25nIGFzDQo+ICsgICB0aGUgbnVtYmVyIDw9IHZmIGVsbWVudHMuDQo+ICsN Cj4gKyAgIFJldHVybiBkYXRhIHJlZmVyZW5jZSBhY2NvcmRpbmcgdG8gU0VM RUNUX1ZMLg0KPiArICAgSWYgbmV3IHN0YXRlbWVudHMgYXJlIG5lZWRlZCwg aW5zZXJ0IHRoZW0gYmVmb3JlIEdTSS4gICovDQo+ICsNCj4gK3N0YXRpYyB0 cmVlDQo+ICtnZXRfc2VsZWN0X3ZsX2RhdGFfcmVmX3B0ciAodmVjX2luZm8g KnZpbmZvLCBzdG10X3ZlY19pbmZvIHN0bXRfaW5mbywNCj4gKyAgICAgdHJl ZSBhZ2dyX3R5cGUsIGNsYXNzIGxvb3AgKmF0X2xvb3AsIHRyZWUgb2Zmc2V0 LA0KPiArICAgICB0cmVlICpkdW1teSwgZ2ltcGxlX3N0bXRfaXRlcmF0b3Ig KmdzaSwNCj4gKyAgICAgYm9vbCBzaW1kX2xhbmVfYWNjZXNzX3AsIHZlY19s b29wX2xlbnMgKmxvb3BfbGVucywNCj4gKyAgICAgZHJfdmVjX2luZm8gKmRy X2luZm8sDQo+ICsgICAgIHZlY3RfbWVtb3J5X2FjY2Vzc190eXBlIG1lbW9y eV9hY2Nlc3NfdHlwZSkNCj4gK3sNCj4gKyAgbG9vcF92ZWNfaW5mbyBsb29w X3ZpbmZvID0gZHluX2Nhc3Q8bG9vcF92ZWNfaW5mbz4gKHZpbmZvKTsNCj4g KyAgdHJlZSBzdGVwID0gdmVjdF9kcl9iZWhhdmlvciAodmluZm8sIGRyX2lu Zm8pLT5zdGVwOw0KPiArDQo+ICsgIC8qIFRPRE86IFdlIGRvbid0IHN1cHBv cnQgZ2F0aGVyL3NjYXR0ZXIgb3IgbG9hZF9sYW5lcy9zdG9yZV9sYW5lcyBm b3IgcG9pbnRlcg0KPiArICAgICBJVnMgYXJlIHVwZGF0ZWQgYnkgdmFyaWFi bGUgYW1vdW50IGJ1dCB3ZSB3aWxsIHN1cHBvcnQgdGhlbSBpbiB0aGUgZnV0 dXJlLg0KPiArICAgKi8NCj4gKyAgZ2NjX2Fzc2VydCAobWVtb3J5X2FjY2Vz c190eXBlICE9IFZNQVRfR0FUSEVSX1NDQVRURVINCj4gKyAgICAgICAmJiBt ZW1vcnlfYWNjZXNzX3R5cGUgIT0gVk1BVF9MT0FEX1NUT1JFX0xBTkVTKTsN Cj4gKw0KPiArICAvKiBXaGVuIHdlIHN1cHBvcnQgU0VMRUNUX1ZMIHBhdHRl cm4sIHdlIGR5bmFtaWMgYWRqdXN0DQo+ICsgICAgIHRoZSBtZW1vcnkgYWRk cmVzcyBieSAuU0VMRUNUX1ZMIHJlc3VsdC4NCj4gKw0KPiArICAgICBUaGUg cmVzdWx0IG9mIC5TRUxFQ1RfVkwgaXMgdGhlIG51bWJlciBvZiBlbGVtZW50 cyB0bw0KPiArICAgICBiZSBwcm9jZXNzZWQgb2YgZWFjaCBpdGVyYXRpb24u IFNvIHRoZSBtZW1vcnkgYWRkcmVzcw0KPiArICAgICBhZGp1c3RtZW50IG9w ZXJhdGlvbiBzaG91bGQgYmU6DQo+ICsNCj4gKyAgICAgYnl0ZXNpemUgPSBH RVRfTU9ERV9TSVpFIChlbGVtZW50X21vZGUgKGFnZ3JfdHlwZSkpOw0KPiAr ICAgICBhZGRyID0gYWRkciArIC5TRUxFQ1RfVkwgKEFSRy4uKSAqIGJ5dGVz aXplOw0KPiArICAqLw0KPiArICBnaW1wbGUgKnB0cl9pbmNyOw0KPiArICB0 cmVlIGxvb3BfbGVuDQo+ICsgICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9v cF92aW5mbywgZ3NpLCBsb29wX2xlbnMsIDEsIGFnZ3JfdHlwZSwgMCk7DQo+ ICsgIHRyZWUgbGVuX3R5cGUgPSBUUkVFX1RZUEUgKGxvb3BfbGVuKTsNCj4g KyAgcG9seV91aW50NjQgYnl0ZXNpemUgPSBHRVRfTU9ERV9TSVpFIChlbGVt ZW50X21vZGUgKGFnZ3JfdHlwZSkpOw0KPiArICAvKiBTaW5jZSB0aGUgb3V0 Y29tZSBvZiAuU0VMRUNUX1ZMIGlzIGVsZW1lbnQgc2l6ZSwgd2Ugc2hvdWxk IGFkanVzdA0KPiArICAgICBpdCBpbnRvIGJ5dGVzaXplIHNvIHRoYXQgaXQg Y2FuIGJlIHVzZWQgaW4gYWRkcmVzcyBwb2ludGVyIHZhcmlhYmxlDQo+ICsg ICAgIGFtb3VudCBJVnMgYWRqdXN0bWVudC4gICovDQo+ICsgIHRyZWUgdG1w ID0gZm9sZF9idWlsZDIgKE1VTFRfRVhQUiwgbGVuX3R5cGUsIGxvb3BfbGVu LA0KPiArICAgYnVpbGRfaW50X2NzdCAobGVuX3R5cGUsIGJ5dGVzaXplKSk7 DQo+ICsgIGlmICh0cmVlX2ludF9jc3Rfc2duIChzdGVwKSA9PSAtMSkNCj4g KyAgICB0bXAgPSBmb2xkX2J1aWxkMSAoTkVHQVRFX0VYUFIsIGxlbl90eXBl LCB0bXApOw0KPiArICB0cmVlIGJ1bXAgPSBtYWtlX3RlbXBfc3NhX25hbWUg KGxlbl90eXBlLCBOVUxMLCAiaXZ0bXAiKTsNCj4gKyAgZ2Fzc2lnbiAqYXNz aWduID0gZ2ltcGxlX2J1aWxkX2Fzc2lnbiAoYnVtcCwgdG1wKTsNCj4gKyAg Z3NpX2luc2VydF9iZWZvcmUgKGdzaSwgYXNzaWduLCBHU0lfU0FNRV9TVE1U KTsNCj4gKyAgcmV0dXJuIHZlY3RfY3JlYXRlX2RhdGFfcmVmX3B0ciAodmlu Zm8sIHN0bXRfaW5mbywgYWdncl90eXBlLCBhdF9sb29wLCBvZmZzZXQsDQo+ ICsgICAgZHVtbXksIGdzaSwgJnB0cl9pbmNyLCBzaW1kX2xhbmVfYWNjZXNz X3AsDQo+ICsgICAgYnVtcCk7DQo+ICt9DQo+ICsNCj4gLyogQ2hlY2sgYW5k IHBlcmZvcm0gdmVjdG9yaXphdGlvbiBvZiBCVUlMVF9JTl9CU1dBUHsxNiwz Miw2NCwxMjh9LiAgKi8NCj4gc3RhdGljIGJvb2wNCj4gQEAgLTgyNzksNyAr ODMzNCw3IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVjX2luZm8gKnZpbmZv LA0KPiAgICAgICAgc3RyaWRlX2Jhc2UgPSBjc2VfYW5kX2dpbXBsaWZ5X3Rv X3ByZWhlYWRlciAobG9vcF92aW5mbywgc3RyaWRlX2Jhc2UpOw0KPiAgICAg ICAgaXZzdGVwID0gY3NlX2FuZF9naW1wbGlmeV90b19wcmVoZWFkZXIgKGxv b3BfdmluZm8sIGl2c3RlcCk7DQo+IC0gICAgICBjcmVhdGVfaXYgKHN0cmlk ZV9iYXNlLCBpdnN0ZXAsIE5VTEwsDQo+ICsgICAgICBjcmVhdGVfaXYgKHN0 cmlkZV9iYXNlLCBQTFVTX0VYUFIsIGl2c3RlcCwgTlVMTCwNCj4gbG9vcCwg JmluY3JfZ3NpLCBpbnNlcnRfYWZ0ZXIsDQo+ICZvZmZ2YXIsIE5VTEwpOw0K PiAgICAgICAgaW5jciA9IGdzaV9zdG10IChpbmNyX2dzaSk7DQo+IEBAIC04 NTQwLDYgKzg1OTUsMTcgQEAgdmVjdG9yaXphYmxlX3N0b3JlICh2ZWNfaW5m byAqdmluZm8sDQo+ICAgICB2ZWN0X2dldF9nYXRoZXJfc2NhdHRlcl9vcHMg KGxvb3BfdmluZm8sIGxvb3AsIHN0bXRfaW5mbywNCj4gc2xwX25vZGUsICZn c19pbmZvLCAmZGF0YXJlZl9wdHIsDQo+ICZ2ZWNfb2Zmc2V0cyk7DQo+ICsg ICBlbHNlIGlmIChsb29wX2xlbnMgJiYgbG9vcF9sZW5zLT5sZW5ndGggKCkg PT0gMQ0KPiArICAgICYmIGRpcmVjdF9pbnRlcm5hbF9mbl9zdXBwb3J0ZWRf cCAoDQo+ICsgICAgICBJRk5fU0VMRUNUX1ZMLCBMT09QX1ZJTkZPX1JHUk9V UF9JVl9UWVBFIChsb29wX3ZpbmZvKSwNCj4gKyAgICAgIE9QVElNSVpFX0ZP Ul9TUEVFRCkNCj4gKyAgICAmJiBtZW1vcnlfYWNjZXNzX3R5cGUgIT0gVk1B VF9JTlZBUklBTlQpDQo+ICsgICAgIGRhdGFyZWZfcHRyDQo+ICsgICAgICAg PSBnZXRfc2VsZWN0X3ZsX2RhdGFfcmVmX3B0ciAodmluZm8sIHN0bXRfaW5m bywgYWdncl90eXBlLA0KPiArICAgICBzaW1kX2xhbmVfYWNjZXNzX3AgPyBs b29wIDogTlVMTCwNCj4gKyAgICAgb2Zmc2V0LCAmZHVtbXksIGdzaSwNCj4g KyAgICAgc2ltZF9sYW5lX2FjY2Vzc19wLCBsb29wX2xlbnMsDQo+ICsgICAg IGRyX2luZm8sIG1lbW9yeV9hY2Nlc3NfdHlwZSk7DQo+ICAgZWxzZQ0KPiAg ICAgZGF0YXJlZl9wdHINCj4gICAgICAgPSB2ZWN0X2NyZWF0ZV9kYXRhX3Jl Zl9wdHIgKHZpbmZvLCBmaXJzdF9zdG10X2luZm8sIGFnZ3JfdHlwZSwNCj4g QEAgLTg3ODgsOCArODg1NCw5IEBAIHZlY3Rvcml6YWJsZV9zdG9yZSAodmVj X2luZm8gKnZpbmZvLA0KPiAgICAgICBlbHNlIGlmIChsb29wX2xlbnMpDQo+ IHsNCj4gICB0cmVlIGZpbmFsX2xlbg0KPiAtICAgICA9IHZlY3RfZ2V0X2xv b3BfbGVuIChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+IC0gdmVjX251bSAq IG5jb3BpZXMsIHZlY19udW0gKiBqICsgaSk7DQo+ICsgICAgID0gdmVjdF9n ZXRfbG9vcF9sZW4gKGxvb3BfdmluZm8sIGdzaSwgbG9vcF9sZW5zLA0KPiAr IHZlY19udW0gKiBuY29waWVzLCB2ZWN0eXBlLA0KPiArIHZlY19udW0gKiBq ICsgaSk7DQo+ICAgdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlw ZSwgYWxpZ24gKiBCSVRTX1BFUl9VTklUKTsNCj4gICBtYWNoaW5lX21vZGUg dm1vZGUgPSBUWVBFX01PREUgKHZlY3R5cGUpOw0KPiAgIG9wdF9tYWNoaW5l X21vZGUgbmV3X292bW9kZQ0KPiBAQCAtOTQ1MCw3ICs5NTE3LDcgQEAgdmVj dG9yaXphYmxlX2xvYWQgKHZlY19pbmZvICp2aW5mbywNCj4gICAgICAgIHN0 cmlkZV9iYXNlID0gY3NlX2FuZF9naW1wbGlmeV90b19wcmVoZWFkZXIgKGxv b3BfdmluZm8sIHN0cmlkZV9iYXNlKTsNCj4gICAgICAgIGl2c3RlcCA9IGNz ZV9hbmRfZ2ltcGxpZnlfdG9fcHJlaGVhZGVyIChsb29wX3ZpbmZvLCBpdnN0 ZXApOw0KPiAtICAgICAgY3JlYXRlX2l2IChzdHJpZGVfYmFzZSwgaXZzdGVw LCBOVUxMLA0KPiArICAgICAgY3JlYXRlX2l2IChzdHJpZGVfYmFzZSwgUExV U19FWFBSLCBpdnN0ZXAsIE5VTEwsDQo+IGxvb3AsICZpbmNyX2dzaSwgaW5z ZXJ0X2FmdGVyLA0KPiAmb2ZmdmFyLCBOVUxMKTsNCj4gQEAgLTk5MjgsNiAr OTk5NSwxNiBAQCB2ZWN0b3JpemFibGVfbG9hZCAodmVjX2luZm8gKnZpbmZv LA0KPiAgICBzbHBfbm9kZSwgJmdzX2luZm8sICZkYXRhcmVmX3B0ciwNCj4g ICAgJnZlY19vZmZzZXRzKTsNCj4gICAgIH0NCj4gKyAgIGVsc2UgaWYgKGxv b3BfbGVucyAmJiBsb29wX2xlbnMtPmxlbmd0aCAoKSA9PSAxDQo+ICsgICAg JiYgZGlyZWN0X2ludGVybmFsX2ZuX3N1cHBvcnRlZF9wICgNCj4gKyAgICAg IElGTl9TRUxFQ1RfVkwsIExPT1BfVklORk9fUkdST1VQX0lWX1RZUEUgKGxv b3BfdmluZm8pLA0KPiArICAgICAgT1BUSU1JWkVfRk9SX1NQRUVEKQ0KPiAr ICAgICYmIG1lbW9yeV9hY2Nlc3NfdHlwZSAhPSBWTUFUX0lOVkFSSUFOVCkN Cj4gKyAgICAgZGF0YXJlZl9wdHINCj4gKyAgICAgICA9IGdldF9zZWxlY3Rf dmxfZGF0YV9yZWZfcHRyICh2aW5mbywgc3RtdF9pbmZvLCBhZ2dyX3R5cGUs DQo+ICsgICAgIGF0X2xvb3AsIG9mZnNldCwgJmR1bW15LCBnc2ksDQo+ICsg ICAgIHNpbWRfbGFuZV9hY2Nlc3NfcCwgbG9vcF9sZW5zLA0KPiArICAgICBk cl9pbmZvLCBtZW1vcnlfYWNjZXNzX3R5cGUpOw0KPiAgIGVsc2UNCj4gICAg IGRhdGFyZWZfcHRyDQo+ICAgICAgID0gdmVjdF9jcmVhdGVfZGF0YV9yZWZf cHRyICh2aW5mbywgZmlyc3Rfc3RtdF9pbmZvLCBhZ2dyX3R5cGUsDQo+IEBA IC0xMDE0NCw4ICsxMDIyMSw4IEBAIHZlY3Rvcml6YWJsZV9sb2FkICh2ZWNf aW5mbyAqdmluZm8sDQo+ICAgICBlbHNlIGlmIChsb29wX2xlbnMgJiYgbWVt b3J5X2FjY2Vzc190eXBlICE9IFZNQVRfSU5WQVJJQU5UKQ0KPiAgICAgICB7 DQo+IHRyZWUgZmluYWxfbGVuDQo+IC0gICA9IHZlY3RfZ2V0X2xvb3BfbGVu IChsb29wX3ZpbmZvLCBsb29wX2xlbnMsDQo+IC0gICAgICAgIHZlY19udW0g KiBuY29waWVzLA0KPiArICAgPSB2ZWN0X2dldF9sb29wX2xlbiAobG9vcF92 aW5mbywgZ3NpLCBsb29wX2xlbnMsDQo+ICsgICAgICAgIHZlY19udW0gKiBu Y29waWVzLCB2ZWN0eXBlLA0KPiAgICAgICAgdmVjX251bSAqIGogKyBpKTsN Cj4gdHJlZSBwdHIgPSBidWlsZF9pbnRfY3N0IChyZWZfdHlwZSwNCj4gICBh bGlnbiAqIEJJVFNfUEVSX1VOSVQpOw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Ry ZWUtdmVjdG9yaXplci5oIGIvZ2NjL3RyZWUtdmVjdG9yaXplci5oDQo+IGlu ZGV4IDljZjJmYjIzZmUzLi4zNTdiYzVjNzMxNSAxMDA2NDQNCj4gLS0tIGEv Z2NjL3RyZWUtdmVjdG9yaXplci5oDQo+ICsrKyBiL2djYy90cmVlLXZlY3Rv cml6ZXIuaA0KPiBAQCAtMjI5Myw4ICsyMjkzLDggQEAgZXh0ZXJuIHRyZWUg dmVjdF9nZXRfbG9vcF9tYXNrIChnaW1wbGVfc3RtdF9pdGVyYXRvciAqLCB2 ZWNfbG9vcF9tYXNrcyAqLA0KPiB1bnNpZ25lZCBpbnQsIHRyZWUsIHVuc2ln bmVkIGludCk7DQo+IGV4dGVybiB2b2lkIHZlY3RfcmVjb3JkX2xvb3BfbGVu IChsb29wX3ZlY19pbmZvLCB2ZWNfbG9vcF9sZW5zICosIHVuc2lnbmVkIGlu dCwNCj4gICB0cmVlLCB1bnNpZ25lZCBpbnQpOw0KPiAtZXh0ZXJuIHRyZWUg dmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVjX2luZm8sIHZlY19sb29wX2xl bnMgKiwgdW5zaWduZWQgaW50LA0KPiAtICAgICAgICB1bnNpZ25lZCBpbnQp Ow0KPiArZXh0ZXJuIHRyZWUgdmVjdF9nZXRfbG9vcF9sZW4gKGxvb3BfdmVj X2luZm8sIGdpbXBsZV9zdG10X2l0ZXJhdG9yICosIHZlY19sb29wX2xlbnMg KiwNCj4gKyAgICAgICAgdW5zaWduZWQgaW50LCB0cmVlLCB1bnNpZ25lZCBp bnQpOw0KPiBleHRlcm4gZ2ltcGxlX3NlcSB2ZWN0X2dlbl9sZW4gKHRyZWUs IHRyZWUsIHRyZWUsIHRyZWUpOw0KPiBleHRlcm4gc3RtdF92ZWNfaW5mbyBp bmZvX2Zvcl9yZWR1Y3Rpb24gKHZlY19pbmZvICosIHN0bXRfdmVjX2luZm8p Ow0KPiBleHRlcm4gYm9vbCByZWR1Y3Rpb25fZm5fZm9yX3NjYWxhcl9jb2Rl IChjb2RlX2hlbHBlciwgaW50ZXJuYWxfZm4gKik7DQogDQo= ------=_001_NextPart570258653660_=------