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 61E1B3858C54 for ; Wed, 7 Jun 2023 03:21:03 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 61E1B3858C54 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: bizesmtp69t1686108053tdmrsbys Received: from LAPTOP-EPITNQBU ( [58.60.1.20]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 07 Jun 2023 11:20:52 +0800 (CST) X-QQ-SSF: 01400000000000F0S000000A0000000 X-QQ-FEAT: xQoAiglG4R6ztENcaK7ddGx84dnVEJTMo4iYNllPx8WneXPJTTkavLluxVWnL hhYaM+7Sri2kSzHMUA5DXd5+EgDXdptN2cvAO3PtF9F6ShlBNnsN3f7mxof6WT4/ImxW6QS rB0+I+Z9Z1RMcx6UBjSNJiBMvWW+IqK9xfbrcqV4b5GEUtG4DtBM628P7Lt2z8i6FHuCRDU WOT84yPQCTzi4A0XdCCjAz9zPCAUofP172Ga4PQ4VOND/KJkC3jPn7f9ZwR67k8ySRwtP+E fN+Z6YqnCjuthyD9A0/EZ6I4bAiwcJ16L6j0ECuscB/bsEgARVdd2hMlCuLvqmpMen/YVfk Rk2083RuwWZIRHZE6oNqJsa5VVmMxme/rkFQs05XYmsPvHctzr6wHwM0iBr3LjJhOPiVbLa S8U7jPqy11eBaP7/U3IuwA== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 3416038453240341046 Date: Wed, 7 Jun 2023 11:20:53 +0800 From: "juzhe.zhong@rivai.ai" To: kito.cheng Cc: gcc-patches , Kito.cheng , palmer , palmer , jeffreyalaw , "Robin Dapp" , pan2.li Subject: Re: Re: [PATCH] RISC-V: Support RVV VLA SLP auto-vectorization References: <20230606041635.226494-1-juzhe.zhong@rivai.ai>, , X-Priority: 3 X-GUID: 2B2C7BD6-31B9-435A-9549-6BD27B17E3B4 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <54319C8CB30D0916+20230607112052488018100@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart841775675130_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-7.8 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H5,RCVD_IN_MSPIKE_WL,RCVD_IN_SORBS_WEB,SCC_10_SHORT_WORD_LINES,SCC_20_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_NextPart841775675130_=---- Content-Type: text/plain; charset="UTF-8" Content-Transfer-Encoding: base64 SGksIFRoYW5rcyBraXRvLi4NCg0KSSBoYXZlIGFkZGVkIGNvbW1lbnRzIGFz IHlvdSBzdWdnZXN0ZWQuDQoNCj4+IERvIHdlIGhhdmUgY2hlY2sgYnVpbGRl ci5ucGF0dGVybnMgKCkgbXVzdCBiZSBwb3dlciBvZiAyIGluIHNvbWV3aGVy ZT8NCkkgYWxzbyBhZGRlZDoNCiAgLyogV2UgZG9uJ3QgZW5hYmxlIFNMUCBm b3Igbm9uLXBvd2VyIG9mIDIgTlBBVFRFUk5TLiAgKi8NCiAgaWYgKCFwb3cy cF9od2kgKGQtPnBlcm0uZW5jb2RpbmcoKS5ucGF0dGVybnMgKCkpKQ0KICAg IHJldHVybiBmYWxzZTsNCg0KdG9vLg0KDQpUbyBtYWtlIHN1cmUgd2Ugd29u J3QgYnJlYWsgYW5kIGNhdXNlIElDRS4NCg0KQ29tbWl0dGVkIHNvb24uDQoN Cg0KanV6aGUuemhvbmdAcml2YWkuYWkNCiANCkZyb206IEtpdG8gQ2hlbmcN CkRhdGU6IDIwMjMtMDYtMDcgMTA6MzgNClRvOiBqdXpoZS56aG9uZ0ByaXZh aS5haQ0KQ0M6IGdjYy1wYXRjaGVzOyBLaXRvLmNoZW5nOyBwYWxtZXI7IHBh bG1lcjsgamVmZnJleWFsYXc7IFJvYmluIERhcHA7IHBhbjIubGkNClN1Ympl Y3Q6IFJlOiBbUEFUQ0hdIFJJU0MtVjogU3VwcG9ydCBSVlYgVkxBIFNMUCBh dXRvLXZlY3Rvcml6YXRpb24NCkZldyBjb21tZW50cywgYnV0IGFsbCBjb21t ZW50cyBhcmUgYXNraW5nIGFkZGluZyBtb3JlIGNvbW1lbnQgOlANCiANCj4g QEAgLTM5OCw2ICs0MTAsNDggQEAgcnZ2X2J1aWxkZXI6OmdldF9tZXJnZV9z Y2FsYXJfbWFzayAodW5zaWduZWQgaW50IGluZGV4X2luX3BhdHRlcm4pIGNv bnN0DQo+ICAgIHJldHVybiBnZW5faW50X21vZGUgKG1hc2ssIGlubmVyX2lu dF9tb2RlICgpKTsNCj4gIH0NCj4NCj4gKy8qIFJldHVybiB0cnVlIGlmIHRo ZSB2YXJpYWJsZS1sZW5ndGggdmVjdG9yIGlzIHNpbmdsZSBzdGVwLiAgKi8N Cj4gK2Jvb2wNCj4gK3J2dl9idWlsZGVyOjpzaW5nbGVfc3RlcF9ucGF0dGVy bnNfcCAoKSBjb25zdA0KIA0Kd2hhdCBpcyBzaW5nbGVfc3RlcF9ucGF0dGVy bnM/IGNvdWxkIHlvdSBoYXZlIG1vcmUgY29tbWVudD8NCiANCj4gK3sNCj4g KyAgaWYgKG5lbHRzX3Blcl9wYXR0ZXJuICgpICE9IDMpDQo+ICsgICAgcmV0 dXJuIGZhbHNlOw0KPiArDQo+ICsgIHBvbHlfaW50NjQgc3RlcA0KPiArICAg ID0gcnR4X3RvX3BvbHlfaW50NjQgKGVsdCAobnBhdHRlcm5zICgpKSkgLSBy dHhfdG9fcG9seV9pbnQ2NCAoZWx0ICgwKSk7DQo+ICsgIGZvciAodW5zaWdu ZWQgaW50IGkgPSAwOyBpIDwgbnBhdHRlcm5zICgpOyBpKyspDQo+ICsgICAg ew0KPiArICAgICAgcG9seV9pbnQ2NCBlbGUwID0gcnR4X3RvX3BvbHlfaW50 NjQgKGVsdCAoaSkpOw0KPiArICAgICAgcG9seV9pbnQ2NCBlbGUxID0gcnR4 X3RvX3BvbHlfaW50NjQgKGVsdCAobnBhdHRlcm5zICgpICsgaSkpOw0KPiAr ICAgICAgcG9seV9pbnQ2NCBlbGUyID0gcnR4X3RvX3BvbHlfaW50NjQgKGVs dCAobnBhdHRlcm5zICgpICogMiArIGkpKTsNCj4gKyAgICAgIHBvbHlfaW50 NjQgZGlmZjEgPSBlbGUxIC0gZWxlMDsNCj4gKyAgICAgIHBvbHlfaW50NjQg ZGlmZjIgPSBlbGUyIC0gZWxlMTsNCj4gKyAgICAgIGlmIChtYXliZV9uZSAo c3RlcCwgZGlmZjEpIHx8IG1heWJlX25lIChzdGVwLCBkaWZmMikpDQo+ICsg ICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgIH0NCj4gKyAgcmV0dXJuIHRy dWU7DQo+ICt9DQo+ICsNCj4gKy8qIFJldHVybiB0cnVlIGlmIGFsbCBlbGVt ZW50cyBvZiBOUEFUVEVSTlMgYXJlIGVxdWFsLg0KPiArDQo+ICsgICBFLmcu IE5QQVRURVJOUyA9IDQ6DQo+ICsgICAgIHsgMiwgMiwgMiwgMiwgNCwgNCwg NCwgNCwgOCwgOCwgOCwgOCwgMTYsIDE2LCAxNiwgMTYsIC4uLiB9DQo+ICsg ICBFLmcuIE5QQVRURVJOUyA9IDg6DQo+ICsgICAgIHsgMiwgMiwgMiwgMiwg MiwgMiwgMiwgMiwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgLi4uIH0NCj4g KyovDQo+ICtib29sDQo+ICtydnZfYnVpbGRlcjo6bnBhdHRlcm5zX2FsbF9l cXVhbF9wICgpIGNvbnN0DQo+ICt7DQo+ICsgIHBvbHlfaW50NjQgZWxlMCA9 IHJ0eF90b19wb2x5X2ludDY0IChlbHQgKDApKTsNCj4gKyAgZm9yICh1bnNp Z25lZCBpbnQgaSA9IDE7IGkgPCBucGF0dGVybnMgKCk7IGkrKykNCj4gKyAg ICB7DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZSA9IHJ0eF90b19wb2x5X2lu dDY0IChlbHQgKGkpKTsNCj4gKyAgICAgIGlmICgha25vd25fZXEgKGVsZSwg ZWxlMCkpDQo+ICsgICAgICAgcmV0dXJuIGZhbHNlOw0KPiArICAgIH0NCj4g KyAgcmV0dXJuIHRydWU7DQo+ICt9DQo+ICsNCj4gIHN0YXRpYyB1bnNpZ25l ZA0KPiAgZ2V0X3NldyAobWFjaGluZV9tb2RlIG1vZGUpDQo+ICB7DQo+IEBA IC00MjUsNyArNDc5LDcgQEAgY29uc3RfdmVjX2FsbF9zYW1lX2luX3Jhbmdl X3AgKHJ0eCB4LCBIT1NUX1dJREVfSU5UIG1pbnZhbCwNCj4gICAgIGZ1dHVy ZS4gICovDQo+DQo+ICBzdGF0aWMgYm9vbA0KPiAtY29uc3RfdmVjX2FsbF9p bl9yYW5nZV9wIChydHggdmVjLCBIT1NUX1dJREVfSU5UIG1pbnZhbCwgSE9T VF9XSURFX0lOVCBtYXh2YWwpDQo+ICtjb25zdF92ZWNfYWxsX2luX3Jhbmdl X3AgKHJ0eCB2ZWMsIHBvbHlfaW50NjQgbWludmFsLCBwb2x5X2ludDY0IG1h eHZhbCkNCj4gIHsNCj4gICAgaWYgKCFDT05TVF9WRUNUT1JfUCAodmVjKQ0K PiAgICAgICAgfHwgR0VUX01PREVfQ0xBU1MgKEdFVF9NT0RFICh2ZWMpKSAh PSBNT0RFX1ZFQ1RPUl9JTlQpDQo+IEBAIC00NDAsOCArNDk0LDEwIEBAIGNv bnN0X3ZlY19hbGxfaW5fcmFuZ2VfcCAocnR4IHZlYywgSE9TVF9XSURFX0lO VCBtaW52YWwsIEhPU1RfV0lERV9JTlQgbWF4dmFsKQ0KPiAgICBmb3IgKGlu dCBpID0gMDsgaSA8IG51bml0czsgaSsrKQ0KPiAgICAgIHsNCj4gICAgICAg IHJ0eCB2ZWNfZWxlbSA9IENPTlNUX1ZFQ1RPUl9FTFQgKHZlYywgaSk7DQo+ IC0gICAgICBpZiAoIUNPTlNUX0lOVF9QICh2ZWNfZWxlbSkNCj4gLSAgICAg ICAgIHx8ICFJTl9SQU5HRSAoSU5UVkFMICh2ZWNfZWxlbSksIG1pbnZhbCwg bWF4dmFsKSkNCj4gKyAgICAgIHBvbHlfaW50NjQgdmFsdWU7DQo+ICsgICAg ICBpZiAoIXBvbHlfaW50X3J0eF9wICh2ZWNfZWxlbSwgJnZhbHVlKQ0KPiAr ICAgICAgICAgfHwgbWF5YmVfbHQgKHZhbHVlLCBtaW52YWwpDQo+ICsgICAg ICAgICB8fCBtYXliZV9ndCAodmFsdWUsIG1heHZhbCkpDQo+ICAgICAgICAg cmV0dXJuIGZhbHNlOw0KPiAgICAgIH0NCj4gICAgcmV0dXJuIHRydWU7DQo+ IEBAIC00NTMsNyArNTA5LDcgQEAgY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9w IChydHggdmVjLCBIT1NUX1dJREVfSU5UIG1pbnZhbCwgSE9TVF9XSURFX0lO VCBtYXh2YWwpDQo+ICAgICBmdXR1cmUuICAqLw0KPg0KPiAgc3RhdGljIHJ0 eA0KPiAtZ2VuX2NvbnN0X3ZlY3Rvcl9kdXAgKG1hY2hpbmVfbW9kZSBtb2Rl LCBIT1NUX1dJREVfSU5UIHZhbCkNCj4gK2dlbl9jb25zdF92ZWN0b3JfZHVw IChtYWNoaW5lX21vZGUgbW9kZSwgcG9seV9pbnQ2NCB2YWwpDQo+ICB7DQo+ ICAgIHJ0eCBjID0gZ2VuX2ludF9tb2RlICh2YWwsIEdFVF9NT0RFX0lOTkVS IChtb2RlKSk7DQo+ICAgIHJldHVybiBnZW5fY29uc3RfdmVjX2R1cGxpY2F0 ZSAobW9kZSwgYyk7DQo+IEBAIC03MjcsNyArNzgzLDEwIEBAIGVtaXRfdmxt YXhfZ2F0aGVyX2luc24gKHJ0eCB0YXJnZXQsIHJ0eCBvcCwgcnR4IHNlbCkN Cj4gICAgcnR4IGVsdDsNCj4gICAgaW5zbl9jb2RlIGljb2RlOw0KPiAgICBt YWNoaW5lX21vZGUgZGF0YV9tb2RlID0gR0VUX01PREUgKHRhcmdldCk7DQo+ IC0gIGlmIChjb25zdF92ZWNfZHVwbGljYXRlX3AgKHNlbCwgJmVsdCkpDQo+ ICsgIG1hY2hpbmVfbW9kZSBzZWxfbW9kZSA9IEdFVF9NT0RFIChzZWwpOw0K PiArICBpZiAobWF5YmVfbmUgKEdFVF9NT0RFX1NJWkUgKGRhdGFfbW9kZSks IEdFVF9NT0RFX1NJWkUgKHNlbF9tb2RlKSkpDQo+ICsgICAgaWNvZGUgPSBj b2RlX2Zvcl9wcmVkX2dhdGhlcmVpMTYgKGRhdGFfbW9kZSk7DQo+ICsgIGVs c2UgaWYgKGNvbnN0X3ZlY19kdXBsaWNhdGVfcCAoc2VsLCAmZWx0KSkNCj4g ICAgICB7DQo+ICAgICAgICBpY29kZSA9IGNvZGVfZm9yX3ByZWRfZ2F0aGVy X3NjYWxhciAoZGF0YV9tb2RlKTsNCj4gICAgICAgIHNlbCA9IGVsdDsNCj4g QEAgLTc0NCw3ICs4MDMsMTAgQEAgZW1pdF92bG1heF9tYXNrZWRfZ2F0aGVy X211X2luc24gKHJ0eCB0YXJnZXQsIHJ0eCBvcCwgcnR4IHNlbCwgcnR4IG1h c2spDQo+ICAgIHJ0eCBlbHQ7DQo+ICAgIGluc25fY29kZSBpY29kZTsNCj4g ICAgbWFjaGluZV9tb2RlIGRhdGFfbW9kZSA9IEdFVF9NT0RFICh0YXJnZXQp Ow0KPiAtICBpZiAoY29uc3RfdmVjX2R1cGxpY2F0ZV9wIChzZWwsICZlbHQp KQ0KPiArICBtYWNoaW5lX21vZGUgc2VsX21vZGUgPSBHRVRfTU9ERSAoc2Vs KTsNCj4gKyAgaWYgKG1heWJlX25lIChHRVRfTU9ERV9TSVpFIChkYXRhX21v ZGUpLCBHRVRfTU9ERV9TSVpFIChzZWxfbW9kZSkpKQ0KPiArICAgIGljb2Rl ID0gY29kZV9mb3JfcHJlZF9nYXRoZXJlaTE2IChkYXRhX21vZGUpOw0KPiAr ICBlbHNlIGlmIChjb25zdF92ZWNfZHVwbGljYXRlX3AgKHNlbCwgJmVsdCkp DQo+ICAgICAgew0KPiAgICAgICAgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX2dh dGhlcl9zY2FsYXIgKGRhdGFfbW9kZSk7DQo+ICAgICAgICBzZWwgPSBlbHQ7 DQo+IEBAIC04OTUsMTEgKzk1NywxMzAgQEAgZXhwYW5kX2NvbnN0X3ZlY3Rv ciAocnR4IHRhcmdldCwgcnR4IHNyYykNCj4gICAgICAgIHJldHVybjsNCj4g ICAgICB9DQo+DQo+IC0gIC8qIFRPRE86IFdlIG9ubHkgc3VwcG9ydCBjb25z dCBkdXBsaWNhdGUgdmVjdG9yIGZvciBub3cuIE1vcmUgY2FzZXMNCj4gLSAg ICAgd2lsbCBiZSBzdXBwb3J0ZWQgd2hlbiB3ZSBzdXBwb3J0IGF1dG8tdmVj dG9yaXphdGlvbjoNCj4gKyAgLyogSGFuZGxlIHZhcmlhYmxlLWxlbmd0aCB2 ZWN0b3IuICAqLw0KPiArICB1bnNpZ25lZCBpbnQgbmVsdHNfcGVyX3BhdHRl cm4gPSBDT05TVF9WRUNUT1JfTkVMVFNfUEVSX1BBVFRFUk4gKHNyYyk7DQo+ ICsgIHVuc2lnbmVkIGludCBucGF0dGVybnMgPSBDT05TVF9WRUNUT1JfTlBB VFRFUk5TIChzcmMpOw0KPiArICBydnZfYnVpbGRlciBidWlsZGVyIChtb2Rl LCBucGF0dGVybnMsIG5lbHRzX3Blcl9wYXR0ZXJuKTsNCj4gKyAgZm9yICh1 bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBuZWx0c19wZXJfcGF0dGVybjsgaSsr KQ0KPiArICAgIHsNCj4gKyAgICAgIGZvciAodW5zaWduZWQgaW50IGogPSAw OyBqIDwgbnBhdHRlcm5zOyBqKyspDQo+ICsgICAgICAgYnVpbGRlci5xdWlj a19wdXNoIChDT05TVF9WRUNUT1JfRUxUIChzcmMsIGkgKiBucGF0dGVybnMg KyBqKSk7DQo+ICsgICAgfQ0KPiArICBidWlsZGVyLmZpbmFsaXplICgpOw0K Pg0KPiAtICAgICAgIDEuIG11bHRpcGxlIGVsdHMgZHVwbGljYXRlIHZlY3Rv ci4NCj4gLSAgICAgICAyLiBtdWx0aXBsZSBwYXR0ZXJucyB3aXRoIG11bHRp cGxlIGVsdHMuICAqLw0KPiArICBpZiAoQ09OU1RfVkVDVE9SX0RVUExJQ0FU RV9QIChzcmMpKQ0KIA0KIA0KSSB0aG91Z2h0IGl0J3MgYSBwcmVkaWNhdG9y IGZvciBhIHZlY3RvciB3aXRoIHNhbWUgdmFsdWUgbGlrZSBbYSwgYSwNCmEs IGEsLi4uXSB3aGVuIEkgcmVhZCB0aGUgY2hlY2sNCmJ1dCBzZWVtcyBsaWtl IG5vdD8gc28gY291bGQgeW91IGFkZCBtb3JlIGNvbW1lbnQgZm9yIHRoYXQ/ DQogDQo+ICsgICAgew0KPiArICAgICAgaWYgKGJ1aWxkZXIuY2FuX2R1cGxp Y2F0ZV9yZXBlYXRpbmdfc2VxdWVuY2VfcCAoKSkNCiANCkFsc28gbW9yZSBj b21tZW50IGFib3V0IHRoaXMNCiANCj4gKyAgICAgICB7DQo+ICsgICAgICAg ICBydHggZWxlID0gYnVpbGRlci5nZXRfbWVyZ2VkX3JlcGVhdGluZ19zZXF1 ZW5jZSAoKTsNCj4gKyAgICAgICAgIHJ0eCBkdXAgPSBleHBhbmRfdmVjdG9y X2Jyb2FkY2FzdCAoYnVpbGRlci5uZXdfbW9kZSAoKSwgZWxlKTsNCj4gKyAg ICAgICAgIGVtaXRfbW92ZV9pbnNuICh0YXJnZXQsIGdlbl9sb3dwYXJ0ICht b2RlLCBkdXApKTsNCj4gKyAgICAgICB9DQo+ICsgICAgICBlbHNlDQogDQph bmQgdGhpcy4NCiANCj4gKyAgICAgICB7DQo+ICsgICAgICAgICB1bnNpZ25l ZCBpbnQgbmJpdHMgPSBucGF0dGVybnMgLSAxOw0KPiArDQo+ICsgICAgICAg ICAvKiBHZW5lcmF0ZSB2aWQgPSB7IDAsIDEsIDIsIDMsIDQsIDUsIDYsIDcs IC4uLiB9LiAgKi8NCj4gKyAgICAgICAgIHJ0eCB2aWQgPSBnZW5fcmVnX3J0 eCAoYnVpbGRlci5pbnRfbW9kZSAoKSk7DQo+ICsgICAgICAgICBydHggb3Bb XSA9IHt2aWR9Ow0KPiArICAgICAgICAgZW1pdF92bG1heF9pbnNuIChjb2Rl X2Zvcl9wcmVkX3NlcmllcyAoYnVpbGRlci5pbnRfbW9kZSAoKSksDQo+ICsg ICAgICAgICAgICAgICAgICAgICAgICAgIFJWVl9NSVNDX09QLCBvcCk7DQo+ ICsNCj4gKyAgICAgICAgIC8qIEdlbmVyYXRlIHZpZF9yZXBlYXQgPSB7IDAs IDEsIC4uLiBuYml0cywgLi4uIH0gICovDQo+ICsgICAgICAgICBydHggdmlk X3JlcGVhdCA9IGdlbl9yZWdfcnR4IChidWlsZGVyLmludF9tb2RlICgpKTsN Cj4gKyAgICAgICAgIHJ0eCBhbmRfb3BzW10gPSB7dmlkX3JlcGVhdCwgdmlk LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBnZW5faW50X21vZGUg KG5iaXRzLCBidWlsZGVyLmlubmVyX2ludF9tb2RlICgpKX07DQo+ICsgICAg ICAgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3ByZWRfc2NhbGFyIChB TkQsIGJ1aWxkZXIuaW50X21vZGUgKCkpLA0KPiArICAgICAgICAgICAgICAg ICAgICAgICAgICBSVlZfQklOT1AsIGFuZF9vcHMpOw0KPiArDQo+ICsgICAg ICAgICBydHggdG1wID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIubW9kZSAoKSk7 DQo+ICsgICAgICAgICBydHggZHVwX29wc1tdID0ge3RtcCwgYnVpbGRlci5l bHQgKDApfTsNCj4gKyAgICAgICAgIGVtaXRfdmxtYXhfaW5zbiAoY29kZV9m b3JfcHJlZF9icm9hZGNhc3QgKGJ1aWxkZXIubW9kZSAoKSksIFJWVl9VTk9Q LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBkdXBfb3BzKTsNCj4g KyAgICAgICAgIGZvciAodW5zaWduZWQgaW50IGkgPSAxOyBpIDwgYnVpbGRl ci5ucGF0dGVybnMgKCk7IGkrKykNCj4gKyAgICAgICAgICAgew0KPiArICAg ICAgICAgICAgIC8qIEdlbmVyYXRlIG1hc2sgYWNjb3JkaW5nIHRvIGkuICAq Lw0KPiArICAgICAgICAgICAgIHJ0eCBtYXNrID0gZ2VuX3JlZ19ydHggKGJ1 aWxkZXIubWFza19tb2RlICgpKTsNCj4gKyAgICAgICAgICAgICBydHggY29u c3RfdmVjID0gZ2VuX2NvbnN0X3ZlY3Rvcl9kdXAgKGJ1aWxkZXIuaW50X21v ZGUgKCksIGkpOw0KPiArICAgICAgICAgICAgIGV4cGFuZF92ZWNfY21wICht YXNrLCBFUSwgdmlkX3JlcGVhdCwgY29uc3RfdmVjKTsNCj4gKw0KPiArICAg ICAgICAgICAgIC8qIE1lcmdlIHNjYWxhciB0byBlYWNoIGkuICAqLw0KPiAr ICAgICAgICAgICAgIHJ0eCB0bXAyID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIu bW9kZSAoKSk7DQo+ICsgICAgICAgICAgICAgcnR4IG1lcmdlX29wc1tdID0g e3RtcDIsIHRtcCwgYnVpbGRlci5lbHQgKGkpLCBtYXNrfTsNCj4gKyAgICAg ICAgICAgICBpbnNuX2NvZGUgaWNvZGUgPSBjb2RlX2Zvcl9wcmVkX21lcmdl X3NjYWxhciAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgICAgICAgICAgICBl bWl0X3ZsbWF4X21lcmdlX2luc24gKGljb2RlLCBSVlZfTUVSR0VfT1AsIG1l cmdlX29wcyk7DQo+ICsgICAgICAgICAgICAgdG1wID0gdG1wMjsNCj4gKyAg ICAgICAgICAgfQ0KPiArICAgICAgICAgZW1pdF9tb3ZlX2luc24gKHRhcmdl dCwgdG1wKTsNCj4gKyAgICAgICB9DQo+ICsgICAgICByZXR1cm47DQo+ICsg ICAgfQ0KPiArICBlbHNlIGlmIChDT05TVF9WRUNUT1JfU1RFUFBFRF9QIChz cmMpKQ0KPiArICAgIHsNCj4gKyAgICAgIGdjY19hc3NlcnQgKEdFVF9NT0RF X0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9JTlQpOw0KPiArICAgICAg aWYgKGJ1aWxkZXIuc2luZ2xlX3N0ZXBfbnBhdHRlcm5zX3AgKCkpDQo+ICsg ICAgICAgew0KPiArICAgICAgICAgLyogRGVzY3JpYmUgdGhlIGNhc2UgYnkg Y2hvb3NpbmcgTlBBVFRFUk5TID0gNCBhcyBhbiBleGFtcGxlLiAgKi8NCj4g KyAgICAgICAgIHJ0eCBiYXNlLCBzdGVwOw0KPiArICAgICAgICAgaWYgKGJ1 aWxkZXIubnBhdHRlcm5zX2FsbF9lcXVhbF9wICgpKQ0KPiArICAgICAgICAg ICB7DQo+ICsgICAgICAgICAgICAgLyogR2VuZXJhdGUgdGhlIHZhcmlhYmxl LWxlbmd0aCB2ZWN0b3IgYXMgYmVsb3c6DQo+ICsgICAgICAgICAgICAgICAg RS5nLiB7IDAsIDAsIDAsIDAsIDgsIDgsIDgsIDgsIDE2LCAxNiwgMTYsIDE2 LCAuLi4gfSAqLw0KIA0KQWRkIG1vcmUgY29tbWVudCBsaWtlOg0KeyBhLCBh LCBhLCBhLCBhICsgc3RlcCwgYSArIHN0ZXAsIGEgKyBzdGVwLCBhICsgc3Rl cCwgYSArIHN0ZXAgKiAyLCBhDQorIHN0ZXAgKiAyLCwgYSArIHN0ZXAgKiAy LCwgYSArIHN0ZXAgKiAyLCAuLi59DQogDQo+ICsgICAgICAgICAgICAgLyog U3RlcCAxOiBHZW5lcmF0ZSBiYXNlID0geyAwLCAwLCAwLCAwLCAwLCAwLCAw LCAuLi4gfS4gICovDQo+ICsgICAgICAgICAgICAgYmFzZSA9IGV4cGFuZF92 ZWN0b3JfYnJvYWRjYXN0IChidWlsZGVyLm1vZGUgKCksIGJ1aWxkZXIuZWx0 ICgwKSk7DQo+ICsgICAgICAgICAgIH0NCj4gKyAgICAgICAgIGVsc2UNCj4g KyAgICAgICAgICAgew0KPiArICAgICAgICAgICAgIC8qIEdlbmVyYXRlIHRo ZSB2YXJpYWJsZS1sZW5ndGggdmVjdG9yIGFzIGJlbG93Og0KPiArICAgICAg ICAgICAgICAgIEUuZy4geyAwLCA2LCAwLCA2LCA4LCAxNCwgOCwgMTQsIDE2 LCAyMiwgMTYsIDIyLCAuLi4gfSAqLw0KIA0KQWRkIG1vcmUgY29tbWVudCBs aWtlOg0KeyBhLCBiLCBhLCBiLCBhICsgc3RlcCwgYiArIHN0ZXAsIGEgKyBz dGVwICoyLCBiICsgc3RlcCAqMiwgLi4ufQ0KIA0KPiArICAgICAgICAgICAg IC8qIFN0ZXAgMTogR2VuZXJhdGUgYmFzZSA9IHsgMCwgNiwgMCwgNiwgLi4u IH0uICAqLw0KPiArICAgICAgICAgICAgIHJ2dl9idWlsZGVyIG5ld19idWls ZGVyIChidWlsZGVyLm1vZGUgKCksIGJ1aWxkZXIubnBhdHRlcm5zICgpLA0K PiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxKTsN Cj4gKyAgICAgICAgICAgICBmb3IgKHVuc2lnbmVkIGludCBpID0gMDsgaSA8 IGJ1aWxkZXIubnBhdHRlcm5zICgpOyArK2kpDQo+ICsgICAgICAgICAgICAg ICBuZXdfYnVpbGRlci5xdWlja19wdXNoIChidWlsZGVyLmVsdCAoaSkpOw0K PiArICAgICAgICAgICAgIHJ0eCBuZXdfdmVjID0gbmV3X2J1aWxkZXIuYnVp bGQgKCk7DQo+ICsgICAgICAgICAgICAgYmFzZSA9IGdlbl9yZWdfcnR4IChi dWlsZGVyLm1vZGUgKCkpOw0KPiArICAgICAgICAgICAgIGVtaXRfbW92ZV9p bnNuIChiYXNlLCBuZXdfdmVjKTsNCj4gKyAgICAgICAgICAgfQ0KPiArDQo+ ICsgICAgICAgICAvKiBTdGVwIDI6IEdlbmVyYXRlIHN0ZXAgPSBnZW5faW50 X21vZGUgKGRpZmYsIG1vZGUpLiAgKi8NCj4gKyAgICAgICAgIHBvbHlfaW50 NjQgdmFsdWUxID0gcnR4X3RvX3BvbHlfaW50NjQgKGJ1aWxkZXIuZWx0ICgw KSk7DQo+ICsgICAgICAgICBwb2x5X2ludDY0IHZhbHVlMg0KPiArICAgICAg ICAgICA9IHJ0eF90b19wb2x5X2ludDY0IChidWlsZGVyLmVsdCAoYnVpbGRl ci5ucGF0dGVybnMgKCkpKTsNCj4gKyAgICAgICAgIHBvbHlfaW50NjQgZGlm ZiA9IHZhbHVlMiAtIHZhbHVlMTsNCj4gKyAgICAgICAgIHN0ZXAgPSBnZW5f aW50X21vZGUgKGRpZmYsIGJ1aWxkZXIuaW5uZXJfbW9kZSAoKSk7DQo+ICsN Cj4gKyAgICAgICAgIC8qIFN0ZXAgMzogR2VuZXJhdGUgdmlkID0geyAwLCAx LCAyLCAzLCA0LCA1LCA2LCA3LCAuLi4gfS4gICovDQo+ICsgICAgICAgICBy dHggdmlkID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsg ICAgICAgICBydHggb3BbXSA9IHt2aWR9Ow0KPiArICAgICAgICAgZW1pdF92 bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVkX3NlcmllcyAoYnVpbGRlci5tb2Rl ICgpKSwgUlZWX01JU0NfT1AsDQo+ICsgICAgICAgICAgICAgICAgICAgICAg ICAgIG9wKTsNCj4gKw0KPiArICAgICAgICAgLyogU3RlcCA0OiBHZW5lcmF0 ZSBmYWN0b3IgPSB7IDAsIDAsIDAsIDAsIDEsIDEsIDEsIDEsIC4uLiB9LiAg Ki8NCj4gKyAgICAgICAgIHJ0eCBmYWN0b3IgPSBnZW5fcmVnX3J0eCAoYnVp bGRlci5tb2RlICgpKTsNCj4gKyAgICAgICAgIHJ0eCBzaGlmdF9vcHNbXQ0K PiArICAgICAgICAgICA9IHtmYWN0b3IsIHZpZCwNCj4gKyAgICAgICAgICAg ICAgZ2VuX2ludF9tb2RlIChleGFjdF9sb2cyIChidWlsZGVyLm5wYXR0ZXJu cyAoKSksIFBtb2RlKX07DQogDQpEbyB3ZSBoYXZlIGNoZWNrIGJ1aWxkZXIu bnBhdHRlcm5zICgpIG11c3QgYmUgcG93ZXIgb2YgMiBpbiBzb21ld2hlcmU/ DQogDQo+ICsgICAgICAgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3By ZWRfc2NhbGFyIChMU0hJRlRSVCwgYnVpbGRlci5tb2RlICgpKSwNCj4gKyAg ICAgICAgICAgICAgICAgICAgICAgICAgUlZWX0JJTk9QLCBzaGlmdF9vcHMp Ow0KPiArDQo+ICsgICAgICAgICAvKiBTdGVwIDU6IEdlbmVyYXRlIGFkanVz dGVkIHN0ZXAgPSB7IDAsIDAsIDAsIDAsIGRpZmYsIGRpZmYsIC4uLiB9ICov DQo+ICsgICAgICAgICBydHggYWRqdXN0ZWRfc3RlcCA9IGdlbl9yZWdfcnR4 IChidWlsZGVyLm1vZGUgKCkpOw0KPiArICAgICAgICAgcnR4IG11bF9vcHNb XSA9IHthZGp1c3RlZF9zdGVwLCBmYWN0b3IsIHN0ZXB9Ow0KPiArICAgICAg ICAgZW1pdF92bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVkX3NjYWxhciAoTVVM VCwgYnVpbGRlci5tb2RlICgpKSwNCj4gKyAgICAgICAgICAgICAgICAgICAg ICAgICAgUlZWX0JJTk9QLCBtdWxfb3BzKTsNCj4gKw0KPiArICAgICAgICAg LyogU3RlcCA2OiBHZW5lcmF0ZSB0aGUgZmluYWwgcmVzdWx0LiAgKi8NCj4g KyAgICAgICAgIHJ0eCBhZGRfb3BzW10gPSB7dGFyZ2V0LCBiYXNlLCBhZGp1 c3RlZF9zdGVwfTsNCj4gKyAgICAgICAgIGVtaXRfdmxtYXhfaW5zbiAoY29k ZV9mb3JfcHJlZCAoUExVUywgYnVpbGRlci5tb2RlICgpKSwgUlZWX0JJTk9Q LA0KPiArICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfb3BzKTsNCj4g KyAgICAgICB9DQo+ICsgICAgICBlbHNlDQo+ICsgICAgICAgLyogVE9ETzog V2Ugd2lsbCBlbmFibGUgbW9yZSB2YXJpYWJsZS1sZW5ndGggdmVjdG9yIGlu IHRoZSBmdXR1cmUuICAqLw0KPiArICAgICAgIGdjY191bnJlYWNoYWJsZSAo KTsNCj4gKyAgICB9DQo+ICsgIGVsc2UNCj4gKyAgICBnY2NfdW5yZWFjaGFi bGUgKCk7DQo+ICB9DQo+DQo+ICAvKiBFeHBhbmQgYSBwcmUtUkEgUlZWIGRh dGEgbW92ZSBmcm9tIFNSQyB0byBERVNULg0KIA0KT24gV2VkLCBKdW4gNywg MjAyMyBhdCA4OjM54oCvQU0ganV6aGUuemhvbmdAcml2YWkuYWkNCjxqdXpo ZS56aG9uZ0ByaXZhaS5haT4gd3JvdGU6DQo+DQo+IFBpbmcgdGhpcyBwYXRj aC4gT2sgZm9yIHRydW5rID8NCj4gU2luY2UgZm9sbG93aW5nIHBhdGNoZXMg YXJlIGJsb2NrZWQgYnkgdGhpcy4NCj4NCj4NCj4NCj4ganV6aGUuemhvbmdA cml2YWkuYWkNCj4NCj4gRnJvbToganV6aGUuemhvbmcNCj4gRGF0ZTogMjAy My0wNi0wNiAxMjoxNg0KPiBUbzogZ2NjLXBhdGNoZXMNCj4gQ0M6IGtpdG8u Y2hlbmc7IGtpdG8uY2hlbmc7IHBhbG1lcjsgcGFsbWVyOyBqZWZmcmV5YWxh dzsgcmRhcHAuZ2NjOyBwYW4yLmxpOyBKdXpoZS1aaG9uZw0KPiBTdWJqZWN0 OiBbUEFUQ0hdIFJJU0MtVjogU3VwcG9ydCBSVlYgVkxBIFNMUCBhdXRvLXZl Y3Rvcml6YXRpb24NCj4gRnJvbTogSnV6aGUtWmhvbmcgPGp1emhlLnpob25n QHJpdmFpLmFpPg0KPg0KPiBUaGlzIHBhdGNoIGVuYWJsZXMgYmFzaWMgVkxB IFNMUCBhdXRvLXZlY3Rvcml6YXRpb24uDQo+IENvbnNpZGVyIHRoaXMgZm9s bG93aW5nIGNhc2U6DQo+IHZvaWQNCj4gZiAodWludDhfdCAqcmVzdHJpY3Qg YSwgdWludDhfdCAqcmVzdHJpY3QgYikNCj4gew0KPiAgIGZvciAoaW50IGkg PSAwOyBpIDwgMTAwOyArK2kpDQo+ICAgICB7DQo+ICAgICAgIGFbaSAqIDgg KyAwXSA9IGJbaSAqIDggKyA3XSArIDE7DQo+ICAgICAgIGFbaSAqIDggKyAx XSA9IGJbaSAqIDggKyA3XSArIDI7DQo+ICAgICAgIGFbaSAqIDggKyAyXSA9 IGJbaSAqIDggKyA3XSArIDg7DQo+ICAgICAgIGFbaSAqIDggKyAzXSA9IGJb aSAqIDggKyA3XSArIDQ7DQo+ICAgICAgIGFbaSAqIDggKyA0XSA9IGJbaSAq IDggKyA3XSArIDU7DQo+ICAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDgg KyA3XSArIDY7DQo+ICAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyA3 XSArIDc7DQo+ICAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAqIDggKyA3XSAr IDM7DQo+ICAgICB9DQo+IH0NCj4NCj4gVG8gZW5hYmxlIFZMQSBTTFAgYXV0 by12ZWN0b3JpemF0aW9uLCB3ZSBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUg dGhpcyBmb2xsb3dpbmcgY29uc3QgdmVjdG9yOg0KPg0KPiAxLiBOUEFUVEVS TlMgPSA4LCBORUxUU19QRVJfUEFUVEVSTiA9IDMuDQo+IHsgMCwgMCwgMCwg MCwgMCwgMCwgMCwgMCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgOCwgMTYsIDE2 LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAuLi4gfQ0KPg0KPiAyLiBOUEFU VEVSTlMgPSA4LCBORUxUU19QRVJfUEFUVEVSTiA9IDEuDQo+IHsgMSwgMiwg OCwgNCwgNSwgNiwgNywgMywgLi4uIH0NCj4NCj4gQW5kIHRoZXNlIHZlY3Rv ciBjYW4gYmUgZ2VuZXJhdGVkIGF0IHByb2xvZ3VlLg0KPg0KPiBBZnRlciB0 aGlzIHBhdGNoLCB3ZSBlbmQgdXAgd2l0aCB0aGlzIGZvbGxvd2luZyBjb2Rl Z2VuOg0KPg0KPiBQcm9sb2d1ZToNCj4gLi4uDQo+ICAgICAgICAgdnNldHZs aSBhNyx6ZXJvLGUxNixtMix0YSxtYQ0KPiAgICAgICAgIHZpZC52ICAgdjQN Cj4gICAgICAgICB2c3JsLnZpIHY0LHY0LDMNCj4gICAgICAgICBsaSAgICAg IGEzLDgNCj4gICAgICAgICB2bXVsLnZ4IHY0LHY0LGEzICA9PT0+IHY0ID0g eyAwLCAwLCAwLCAwLCAwLCAwLCAwLCAwLCA4LCA4LCA4LCA4LCA4LCA4LCA4 LCA4LCAxNiwgMTYsIDE2LCAxNiwgMTYsIDE2LCAxNiwgMTYsIC4uLiB9DQo+ IC4uLg0KPiAgICAgICAgIGxpICAgICAgdDEsNjc2MzMxNTINCj4gICAgICAg ICBhZGRpICAgIHQxLHQxLDUxMw0KPiAgICAgICAgIGxpICAgICAgYTMsNTA3 OTA0MDANCj4gICAgICAgICBhZGRpICAgIGEzLGEzLDE1NDENCj4gICAgICAg ICBzbGxpICAgIGEzLGEzLDMyDQo+ICAgICAgICAgYWRkICAgICBhMyxhMyx0 MQ0KPiAgICAgICAgIHZzZXR2bGkgdDEsemVybyxlNjQsbTEsdGEsbWENCj4g ICAgICAgICB2bXYudi54IHYzLGEzICAgPT09PiB2MyA9IHsgMSwgMiwgOCwg NCwgNSwgNiwgNywgMywgLi4uIH0NCj4gLi4uDQo+IExvb3BCb2R5Og0KPiAu Li4NCj4gICAgICAgICBtaW4gICAgIGEzLC4uLg0KPiAgICAgICAgIHZzZXR2 bGkgemVybyxhMyxlOCxtMSx0YSxtYQ0KPiAgICAgICAgIHZsZTgudiAgdjIs MChhNikNCj4gICAgICAgICB2c2V0dmxpIGE3LHplcm8sZTgsbTEsdGEsbWEN Cj4gICAgICAgICB2cmdhdGhlcmVpMTYudnYgdjEsdjIsdjQNCj4gICAgICAg ICB2YWRkLnZ2IHYxLHYxLHYzDQo+ICAgICAgICAgdnNldHZsaSB6ZXJvLGEz LGU4LG0xLHRhLG1hDQo+ICAgICAgICAgdnNlOC52ICB2MSwwKGEyKQ0KPiAg ICAgICAgIGFkZCAgICAgYTYsYTYsYTQNCj4gICAgICAgICBhZGQgICAgIGEy LGEyLGE0DQo+ICAgICAgICAgbXYgICAgICBhMyxhNQ0KPiAgICAgICAgIGFk ZCAgICAgYTUsYTUsdDENCj4gICAgICAgICBiZ3R1ICAgIGEzLGE0LC5MMw0K PiAuLi4NCj4NCj4gTm90ZTogd2UgbmVlZCB0byB1c2UgInZyZ2F0aGVyZWkx Ni52diIgaW5zdGVhZCBvZiAidnJnYXRoZXIudnYiIGZvciBTRVcgPSA4IHNp bmNlICJ2cmdhdGhlcmVpMTYudnYiIGNhbiBjb3ZlciBsYXJnZXINCj4gICAg ICAgcmFuZ2UgdGhhbiAidnJnYXRoZXIudnYiICh3aGljaCBvbmx5IGNhbiBt YXhpbXVtIGVsZW1lbnQgaW5kZXggPSAyNTUpLg0KPiBFcGlsb2d1ZToNCj4g ICAgICAgICBsYnUgICAgIGE1LDc5OShhMSkNCj4gICAgICAgICBhZGRpdyAg IGE0LGE1LDENCj4gICAgICAgICBzYiAgICAgIGE0LDc5MihhMCkNCj4gICAg ICAgICBhZGRpdyAgIGE0LGE1LDINCj4gICAgICAgICBzYiAgICAgIGE0LDc5 MyhhMCkNCj4gICAgICAgICBhZGRpdyAgIGE0LGE1LDgNCj4gICAgICAgICBz YiAgICAgIGE0LDc5NChhMCkNCj4gICAgICAgICBhZGRpdyAgIGE0LGE1LDQN Cj4gICAgICAgICBzYiAgICAgIGE0LDc5NShhMCkNCj4gICAgICAgICBhZGRp dyAgIGE0LGE1LDUNCj4gICAgICAgICBzYiAgICAgIGE0LDc5NihhMCkNCj4g ICAgICAgICBhZGRpdyAgIGE0LGE1LDYNCj4gICAgICAgICBzYiAgICAgIGE0 LDc5NyhhMCkNCj4gICAgICAgICBhZGRpdyAgIGE0LGE1LDcNCj4gICAgICAg ICBzYiAgICAgIGE0LDc5OChhMCkNCj4gICAgICAgICBhZGRpdyAgIGE1LGE1 LDMNCj4gICAgICAgICBzYiAgICAgIGE1LDc5OShhMCkNCj4gICAgICAgICBy ZXQNCj4NCj4gVGhlcmUgaXMgb25lIG1vcmUgbGFzdCB0aGluZyB3ZSBuZWVk IHRvIGRvIGlzIHRoZSAiRXBpbG9ndWUgYXV0by12ZWN0b3JpemF0aW9uIiB3 aGljaCBuZWVkcyBWTFMgbW9kZXMgc3VwcG9ydC4NCj4gSSB3aWxsIHN1cHBv cnQgVkxTIG1vZGVzIGZvciAiRXBpbG9ndWUgYXV0by12ZWN0b3JpemF0aW9u IiBpbiB0aGUgZnV0dXJlLg0KPg0KPiBnY2MvQ2hhbmdlTG9nOg0KPg0KPiAg ICAgICAgICogY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oIChleHBhbmRf dmVjX3Blcm1fY29uc3QpOiBOZXcgZnVuY3Rpb24uDQo+ICAgICAgICAgKiBj b25maWcvcmlzY3YvcmlzY3Ytdi5jYyAocnZ2X2J1aWxkZXI6OmNhbl9kdXBs aWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNlX3ApOiBTdXBwb3J0IFBPTFkgaGFu ZGxpbmcuDQo+ICAgICAgICAgKHJ2dl9idWlsZGVyOjpzaW5nbGVfc3RlcF9u cGF0dGVybnNfcCk6IE5ldyBmdW5jdGlvbi4NCj4gICAgICAgICAocnZ2X2J1 aWxkZXI6Om5wYXR0ZXJuc19hbGxfZXF1YWxfcCk6IERpdHRvLg0KPiAgICAg ICAgIChjb25zdF92ZWNfYWxsX2luX3JhbmdlX3ApOiBTdXBwb3J0IFBPTFkg aGFuZGxpbmcuDQo+ICAgICAgICAgKGdlbl9jb25zdF92ZWN0b3JfZHVwKTog RGl0dG8uDQo+ICAgICAgICAgKGVtaXRfdmxtYXhfZ2F0aGVyX2luc24pOiBB ZGQgdnJnYXRoZXJlaTE2Lg0KPiAgICAgICAgIChlbWl0X3ZsbWF4X21hc2tl ZF9nYXRoZXJfbXVfaW5zbik6IERpdHRvLg0KPiAgICAgICAgIChleHBhbmRf Y29uc3RfdmVjdG9yKTogQWRkIFZMQSBTTFAgY29uc3QgdmVjdG9yIHN1cHBv cnQuDQo+ICAgICAgICAgKGV4cGFuZF92ZWNfcGVybSk6IFN1cHBvcnQgUE9M WS4NCj4gICAgICAgICAoc3RydWN0IGV4cGFuZF92ZWNfcGVybV9kKTogTmV3 IHN0cnVjdC4NCj4gICAgICAgICAoc2h1ZmZsZV9nZW5lcmljX3BhdHRlcm5z KTogTmV3IGZ1bmN0aW9uLg0KPiAgICAgICAgIChleHBhbmRfdmVjX3Blcm1f Y29uc3RfMSk6IERpdHRvLg0KPiAgICAgICAgIChleHBhbmRfdmVjX3Blcm1f Y29uc3QpOiBEaXR0by4NCj4gICAgICAgICAqIGNvbmZpZy9yaXNjdi9yaXNj di5jYyAocmlzY3ZfdmVjdG9yaXplX3ZlY19wZXJtX2NvbnN0KTogRGl0dG8u DQo+ICAgICAgICAgKFRBUkdFVF9WRUNUT1JJWkVfVkVDX1BFUk1fQ09OU1Qp OiBOZXcgdGFyZ2V0aG9vay4NCj4NCj4gZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VM b2c6DQo+DQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3NjYWxhYmxlLTEuYzogQWRhcHQgdGVzdGNhc2UgZm9yIFZMQSB2ZWN0 b3JpemVyLg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0 b3ZlYy92LTEuYzogRGl0dG8uDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3p2ZTMyZl96dmwxMjhiLTEuYzogRGl0dG8uDQo+ ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMy eF96dmwxMjhiLTEuYzogRGl0dG8uDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0ZC0xLmM6IERpdHRvLg0KPiAgICAg ICAgICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGRfenZs MTI4Yi0xLmM6IERpdHRvLg0KPiAgICAgICAgICogZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy96dmU2NGYtMS5jOiBEaXR0by4NCj4gICAgICAgICAq IGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRmX3p2bDEyOGIt MS5jOiBEaXR0by4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvenZlNjR4X3p2bDEyOGItMS5jOiBEaXR0by4NCj4gICAgICAg ICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAt MS5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtMi5jOiBOZXcgdGVzdC4NCj4gICAg ICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHAtMy5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNC5jOiBOZXcgdGVzdC4NCj4g ICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlh bC9zbHAtNS5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNi5jOiBOZXcgdGVzdC4N Cj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHAtNy5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJn ZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTEuYzogTmV3 IHRlc3QuDQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwX3J1bi0yLmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAg ICogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9y dW4tMy5jOiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTQuYzogTmV3IHRlc3Qu DQo+ICAgICAgICAgKiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwX3J1bi01LmM6IE5ldyB0ZXN0Lg0KPiAgICAgICAgICogZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5j OiBOZXcgdGVzdC4NCj4gICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTcuYzogTmV3IHRlc3QuDQo+DQo+ IC0tLQ0KPiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oICAgICAg ICAgICAgICAgfCAgIDIgKw0KPiBnY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYu Y2MgICAgICAgICAgICAgICAgICAgfCAzNTIgKysrKysrKysrKysrKysrKy0t DQo+IGdjYy9jb25maWcvcmlzY3YvcmlzY3YuY2MgICAgICAgICAgICAgICAg ICAgICB8ICAxNiArDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscC0xLmMgICAgICAgICB8ICAyMiArKw0KPiAuLi4vcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHAtMi5jICAgICAgICAgfCAgMjIgKysNCj4gLi4u L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTMuYyAgICAgICAgIHwg IDIyICsrDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC00 LmMgICAgICAgICB8ICAyMiArKw0KPiAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMv cGFydGlhbC9zbHAtNS5jICAgICAgICAgfCAgMjIgKysNCj4gLi4uL3Jpc2N2 L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTYuYyAgICAgICAgIHwgIDIzICsr DQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC03LmMgICAg ICAgICB8ICAxNSArDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscF9ydW4tMS5jICAgICB8ICA2NiArKysrDQo+IC4uLi9yaXNjdi9ydnYv YXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMi5jICAgICB8ICA2NyArKysrDQo+ IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMy5jICAg ICB8ICA2NyArKysrDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscF9ydW4tNC5jICAgICB8ICA2NyArKysrDQo+IC4uLi9yaXNjdi9ydnYv YXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNS5jICAgICB8ICA2NyArKysrDQo+ IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5jICAg ICB8ICA2NyArKysrDQo+IC4uLi9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscF9ydW4tNy5jICAgICB8ICA1OCArKysNCj4gLi4uL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvc2NhbGFibGUtMS5jIHwgICAyICstDQo+IC4u Li9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3YtMS5jICAgICAgICB8 ICAgNyArLQ0KPiAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvenZlMzJmX3p2bDEy OGItMS5jICAgICAgfCAgIDIgKy0NCj4gLi4uL3Jpc2N2L3J2di9hdXRvdmVj L3p2ZTMyeF96dmwxMjhiLTEuYyAgICAgIHwgICAyICstDQo+IC4uLi9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0ZC0xLmMgICB8ICAgMiAr LQ0KPiAuLi4vcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRkX3p2bDEyOGItMS5j ICAgICAgfCAgIDIgKy0NCj4gLi4uL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvenZlNjRmLTEuYyAgIHwgICAyICstDQo+IC4uLi9yaXNjdi9ydnYv YXV0b3ZlYy96dmU2NGZfenZsMTI4Yi0xLmMgICAgICB8ICAgMiArLQ0KPiAu Li4vcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjR4X3p2bDEyOGItMS5jICAgICAg fCAgIDIgKy0NCj4gMjYgZmlsZXMgY2hhbmdlZCwgOTYzIGluc2VydGlvbnMo KyksIDM3IGRlbGV0aW9ucygtKQ0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRp YWwvc2xwLTEuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTIu Yw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTMuYw0KPiBjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTQuYw0KPiBjcmVhdGUgbW9kZSAx MDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwLTUuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRp YWwvc2xwLTYuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTcu Yw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi0xLmMNCj4g Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMi5jDQo+IGNyZWF0 ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTMuYw0KPiBjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3BhcnRpYWwvc2xwX3J1bi00LmMNCj4gY3JlYXRlIG1vZGUgMTAw NjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy9wYXJ0aWFsL3NscF9ydW4tNS5jDQo+IGNyZWF0ZSBtb2RlIDEwMDY0NCBn Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHBfcnVuLTYuYw0KPiBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwv c2xwX3J1bi03LmMNCj4NCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlz Y3YvcmlzY3YtcHJvdG9zLmggYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXBy b3Rvcy5oDQo+IGluZGV4IGQ3NzBlNWU4MjZlLi4yN2VjZDE2ZTQ5NiAxMDA2 NDQNCj4gLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi1wcm90b3MuaA0K PiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXByb3Rvcy5oDQo+IEBA IC0xNjgsNiArMTY4LDggQEAgdm9pZCBpbml0X2J1aWx0aW5zICh2b2lkKTsN Cj4gY29uc3QgY2hhciAqbWFuZ2xlX2J1aWx0aW5fdHlwZSAoY29uc3RfdHJl ZSk7DQo+ICNpZmRlZiBHQ0NfVEFSR0VUX0gNCj4gYm9vbCB2ZXJpZnlfdHlw ZV9jb250ZXh0IChsb2NhdGlvbl90LCB0eXBlX2NvbnRleHRfa2luZCwgY29u c3RfdHJlZSwgYm9vbCk7DQo+ICtib29sIGV4cGFuZF92ZWNfcGVybV9jb25z dCAobWFjaGluZV9tb2RlLCBtYWNoaW5lX21vZGUsIHJ0eCwgcnR4LCBydHgs DQo+ICsgICAgIGNvbnN0IHZlY19wZXJtX2luZGljZXMgJik7DQo+ICNlbmRp Zg0KPiB2b2lkIGhhbmRsZV9wcmFnbWFfdmVjdG9yICh2b2lkKTsNCj4gdHJl ZSBidWlsdGluX2RlY2wgKHVuc2lnbmVkLCBib29sKTsNCj4gZGlmZiAtLWdp dCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Ytdi5jYyBiL2djYy9jb25maWcv cmlzY3YvcmlzY3Ytdi5jYw0KPiBpbmRleCA4MzI3N2ZjMmMwNS4uNDg2NDQy OWVkMDYgMTAwNjQ0DQo+IC0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yt di5jYw0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MNCj4g QEAgLTI1MSw5ICsyNTEsMTIgQEAgcHVibGljOg0KPiAgICAgIG1faW5uZXJf bW9kZSA9IEdFVF9NT0RFX0lOTkVSIChtb2RlKTsNCj4gICAgICBtX2lubmVy X2JpdHNfc2l6ZSA9IEdFVF9NT0RFX0JJVFNJWkUgKG1faW5uZXJfbW9kZSk7 DQo+ICAgICAgbV9pbm5lcl9ieXRlc19zaXplID0gR0VUX01PREVfU0laRSAo bV9pbm5lcl9tb2RlKTsNCj4gKyAgICBtX21hc2tfbW9kZSA9IGdldF9tYXNr X21vZGUgKG1vZGUpLnJlcXVpcmUgKCk7DQo+ICAgICAgZ2NjX2Fzc2VydCAo DQo+ICAgICAgICBpbnRfbW9kZV9mb3Jfc2l6ZSAoaW5uZXJfYml0c19zaXpl ICgpLCAwKS5leGlzdHMgKCZtX2lubmVyX2ludF9tb2RlKSk7DQo+ICsgICAg bV9pbnRfbW9kZQ0KPiArICAgICAgPSBnZXRfdmVjdG9yX21vZGUgKG1faW5u ZXJfaW50X21vZGUsIEdFVF9NT0RFX05VTklUUyAobW9kZSkpLnJlcXVpcmUg KCk7DQo+ICAgIH0NCj4gICAgYm9vbCBjYW5fZHVwbGljYXRlX3JlcGVhdGlu Z19zZXF1ZW5jZV9wICgpOw0KPiBAQCAtMjYyLDkgKzI2NSwxNCBAQCBwdWJs aWM6DQo+ICAgIGJvb2wgcmVwZWF0aW5nX3NlcXVlbmNlX3VzZV9tZXJnZV9w cm9maXRhYmxlX3AgKCk7DQo+ICAgIHJ0eCBnZXRfbWVyZ2Vfc2NhbGFyX21h c2sgKHVuc2lnbmVkIGludCkgY29uc3Q7DQo+ICsgIGJvb2wgc2luZ2xlX3N0 ZXBfbnBhdHRlcm5zX3AgKCkgY29uc3Q7DQo+ICsgIGJvb2wgbnBhdHRlcm5z X2FsbF9lcXVhbF9wICgpIGNvbnN0Ow0KPiArDQo+ICAgIG1hY2hpbmVfbW9k ZSBuZXdfbW9kZSAoKSBjb25zdCB7IHJldHVybiBtX25ld19tb2RlOyB9DQo+ ICAgIHNjYWxhcl9tb2RlIGlubmVyX21vZGUgKCkgY29uc3QgeyByZXR1cm4g bV9pbm5lcl9tb2RlOyB9DQo+ICAgIHNjYWxhcl9pbnRfbW9kZSBpbm5lcl9p bnRfbW9kZSAoKSBjb25zdCB7IHJldHVybiBtX2lubmVyX2ludF9tb2RlOyB9 DQo+ICsgIG1hY2hpbmVfbW9kZSBtYXNrX21vZGUgKCkgY29uc3QgeyByZXR1 cm4gbV9tYXNrX21vZGU7IH0NCj4gKyAgbWFjaGluZV9tb2RlIGludF9tb2Rl ICgpIGNvbnN0IHsgcmV0dXJuIG1faW50X21vZGU7IH0NCj4gICAgdW5zaWdu ZWQgaW50IGlubmVyX2JpdHNfc2l6ZSAoKSBjb25zdCB7IHJldHVybiBtX2lu bmVyX2JpdHNfc2l6ZTsgfQ0KPiAgICB1bnNpZ25lZCBpbnQgaW5uZXJfYnl0 ZXNfc2l6ZSAoKSBjb25zdCB7IHJldHVybiBtX2lubmVyX2J5dGVzX3NpemU7 IH0NCj4gQEAgLTI3Myw2ICsyODEsOCBAQCBwcml2YXRlOg0KPiAgICBzY2Fs YXJfaW50X21vZGUgbV9pbm5lcl9pbnRfbW9kZTsNCj4gICAgbWFjaGluZV9t b2RlIG1fbmV3X21vZGU7DQo+ICAgIHNjYWxhcl9pbnRfbW9kZSBtX25ld19p bm5lcl9tb2RlOw0KPiArICBtYWNoaW5lX21vZGUgbV9tYXNrX21vZGU7DQo+ ICsgIG1hY2hpbmVfbW9kZSBtX2ludF9tb2RlOw0KPiAgICB1bnNpZ25lZCBp bnQgbV9pbm5lcl9iaXRzX3NpemU7DQo+ICAgIHVuc2lnbmVkIGludCBtX2lu bmVyX2J5dGVzX3NpemU7DQo+IH07DQo+IEBAIC0yOTAsNyArMzAwLDkgQEAg cnZ2X2J1aWxkZXI6OmNhbl9kdXBsaWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNl X3AgKCkNCj4gICAgICAgIHx8IEdFVF9NT0RFX1NJWkUgKG1fbmV3X2lubmVy X21vZGUpID4gVU5JVFNfUEVSX1dPUkQNCj4gICAgICAgIHx8ICFnZXRfdmVj dG9yX21vZGUgKG1fbmV3X2lubmVyX21vZGUsIG5ld19zaXplKS5leGlzdHMg KCZtX25ld19tb2RlKSkNCj4gICAgICByZXR1cm4gZmFsc2U7DQo+IC0gIHJl dHVybiByZXBlYXRpbmdfc2VxdWVuY2VfcCAoMCwgZnVsbF9uZWx0cyAoKS50 b19jb25zdGFudCAoKSwgbnBhdHRlcm5zICgpKTsNCj4gKyAgaWYgKGZ1bGxf bmVsdHMgKCkuaXNfY29uc3RhbnQgKCkpDQo+ICsgICAgcmV0dXJuIHJlcGVh dGluZ19zZXF1ZW5jZV9wICgwLCBmdWxsX25lbHRzICgpLnRvX2NvbnN0YW50 ICgpLCBucGF0dGVybnMgKCkpOw0KPiArICByZXR1cm4gbmVsdHNfcGVyX3Bh dHRlcm4gKCkgPT0gMTsNCj4gfQ0KPiAvKiBSZXR1cm4gdHJ1ZSBpZiBpdCBp cyBhIHJlcGVhdGluZyBzZXF1ZW5jZSB0aGF0IHVzaW5nDQo+IEBAIC0zOTgs NiArNDEwLDQ4IEBAIHJ2dl9idWlsZGVyOjpnZXRfbWVyZ2Vfc2NhbGFyX21h c2sgKHVuc2lnbmVkIGludCBpbmRleF9pbl9wYXR0ZXJuKSBjb25zdA0KPiAg ICByZXR1cm4gZ2VuX2ludF9tb2RlIChtYXNrLCBpbm5lcl9pbnRfbW9kZSAo KSk7DQo+IH0NCj4gKy8qIFJldHVybiB0cnVlIGlmIHRoZSB2YXJpYWJsZS1s ZW5ndGggdmVjdG9yIGlzIHNpbmdsZSBzdGVwLiAgKi8NCj4gK2Jvb2wNCj4g K3J2dl9idWlsZGVyOjpzaW5nbGVfc3RlcF9ucGF0dGVybnNfcCAoKSBjb25z dA0KPiArew0KPiArICBpZiAobmVsdHNfcGVyX3BhdHRlcm4gKCkgIT0gMykN Cj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsNCj4gKyAgcG9seV9pbnQ2NCBz dGVwDQo+ICsgICAgPSBydHhfdG9fcG9seV9pbnQ2NCAoZWx0IChucGF0dGVy bnMgKCkpKSAtIHJ0eF90b19wb2x5X2ludDY0IChlbHQgKDApKTsNCj4gKyAg Zm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBucGF0dGVybnMgKCk7IGkr KykNCj4gKyAgICB7DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZTAgPSBydHhf dG9fcG9seV9pbnQ2NCAoZWx0IChpKSk7DQo+ICsgICAgICBwb2x5X2ludDY0 IGVsZTEgPSBydHhfdG9fcG9seV9pbnQ2NCAoZWx0IChucGF0dGVybnMgKCkg KyBpKSk7DQo+ICsgICAgICBwb2x5X2ludDY0IGVsZTIgPSBydHhfdG9fcG9s eV9pbnQ2NCAoZWx0IChucGF0dGVybnMgKCkgKiAyICsgaSkpOw0KPiArICAg ICAgcG9seV9pbnQ2NCBkaWZmMSA9IGVsZTEgLSBlbGUwOw0KPiArICAgICAg cG9seV9pbnQ2NCBkaWZmMiA9IGVsZTIgLSBlbGUxOw0KPiArICAgICAgaWYg KG1heWJlX25lIChzdGVwLCBkaWZmMSkgfHwgbWF5YmVfbmUgKHN0ZXAsIGRp ZmYyKSkNCj4gKyByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0KPiArICByZXR1 cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiArLyogUmV0dXJuIHRydWUgaWYgYWxs IGVsZW1lbnRzIG9mIE5QQVRURVJOUyBhcmUgZXF1YWwuDQo+ICsNCj4gKyAg IEUuZy4gTlBBVFRFUk5TID0gNDoNCj4gKyAgICAgeyAyLCAyLCAyLCAyLCA0 LCA0LCA0LCA0LCA4LCA4LCA4LCA4LCAxNiwgMTYsIDE2LCAxNiwgLi4uIH0N Cj4gKyAgIEUuZy4gTlBBVFRFUk5TID0gODoNCj4gKyAgICAgeyAyLCAyLCAy LCAyLCAyLCAyLCAyLCAyLCA4LCA4LCA4LCA4LCA4LCA4LCA4LCA4LCAuLi4g fQ0KPiArKi8NCj4gK2Jvb2wNCj4gK3J2dl9idWlsZGVyOjpucGF0dGVybnNf YWxsX2VxdWFsX3AgKCkgY29uc3QNCj4gK3sNCj4gKyAgcG9seV9pbnQ2NCBl bGUwID0gcnR4X3RvX3BvbHlfaW50NjQgKGVsdCAoMCkpOw0KPiArICBmb3Ig KHVuc2lnbmVkIGludCBpID0gMTsgaSA8IG5wYXR0ZXJucyAoKTsgaSsrKQ0K PiArICAgIHsNCj4gKyAgICAgIHBvbHlfaW50NjQgZWxlID0gcnR4X3RvX3Bv bHlfaW50NjQgKGVsdCAoaSkpOw0KPiArICAgICAgaWYgKCFrbm93bl9lcSAo ZWxlLCBlbGUwKSkNCj4gKyByZXR1cm4gZmFsc2U7DQo+ICsgICAgfQ0KPiAr ICByZXR1cm4gdHJ1ZTsNCj4gK30NCj4gKw0KPiBzdGF0aWMgdW5zaWduZWQN Cj4gZ2V0X3NldyAobWFjaGluZV9tb2RlIG1vZGUpDQo+IHsNCj4gQEAgLTQy NSw3ICs0NzksNyBAQCBjb25zdF92ZWNfYWxsX3NhbWVfaW5fcmFuZ2VfcCAo cnR4IHgsIEhPU1RfV0lERV9JTlQgbWludmFsLA0KPiAgICAgZnV0dXJlLiAg Ki8NCj4gc3RhdGljIGJvb2wNCj4gLWNvbnN0X3ZlY19hbGxfaW5fcmFuZ2Vf cCAocnR4IHZlYywgSE9TVF9XSURFX0lOVCBtaW52YWwsIEhPU1RfV0lERV9J TlQgbWF4dmFsKQ0KPiArY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChydHgg dmVjLCBwb2x5X2ludDY0IG1pbnZhbCwgcG9seV9pbnQ2NCBtYXh2YWwpDQo+ IHsNCj4gICAgaWYgKCFDT05TVF9WRUNUT1JfUCAodmVjKQ0KPiAgICAgICAg fHwgR0VUX01PREVfQ0xBU1MgKEdFVF9NT0RFICh2ZWMpKSAhPSBNT0RFX1ZF Q1RPUl9JTlQpDQo+IEBAIC00NDAsOCArNDk0LDEwIEBAIGNvbnN0X3ZlY19h bGxfaW5fcmFuZ2VfcCAocnR4IHZlYywgSE9TVF9XSURFX0lOVCBtaW52YWws IEhPU1RfV0lERV9JTlQgbWF4dmFsKQ0KPiAgICBmb3IgKGludCBpID0gMDsg aSA8IG51bml0czsgaSsrKQ0KPiAgICAgIHsNCj4gICAgICAgIHJ0eCB2ZWNf ZWxlbSA9IENPTlNUX1ZFQ1RPUl9FTFQgKHZlYywgaSk7DQo+IC0gICAgICBp ZiAoIUNPTlNUX0lOVF9QICh2ZWNfZWxlbSkNCj4gLSAgIHx8ICFJTl9SQU5H RSAoSU5UVkFMICh2ZWNfZWxlbSksIG1pbnZhbCwgbWF4dmFsKSkNCj4gKyAg ICAgIHBvbHlfaW50NjQgdmFsdWU7DQo+ICsgICAgICBpZiAoIXBvbHlfaW50 X3J0eF9wICh2ZWNfZWxlbSwgJnZhbHVlKQ0KPiArICAgfHwgbWF5YmVfbHQg KHZhbHVlLCBtaW52YWwpDQo+ICsgICB8fCBtYXliZV9ndCAodmFsdWUsIG1h eHZhbCkpDQo+IHJldHVybiBmYWxzZTsNCj4gICAgICB9DQo+ICAgIHJldHVy biB0cnVlOw0KPiBAQCAtNDUzLDcgKzUwOSw3IEBAIGNvbnN0X3ZlY19hbGxf aW5fcmFuZ2VfcCAocnR4IHZlYywgSE9TVF9XSURFX0lOVCBtaW52YWwsIEhP U1RfV0lERV9JTlQgbWF4dmFsKQ0KPiAgICAgZnV0dXJlLiAgKi8NCj4gc3Rh dGljIHJ0eA0KPiAtZ2VuX2NvbnN0X3ZlY3Rvcl9kdXAgKG1hY2hpbmVfbW9k ZSBtb2RlLCBIT1NUX1dJREVfSU5UIHZhbCkNCj4gK2dlbl9jb25zdF92ZWN0 b3JfZHVwIChtYWNoaW5lX21vZGUgbW9kZSwgcG9seV9pbnQ2NCB2YWwpDQo+ IHsNCj4gICAgcnR4IGMgPSBnZW5faW50X21vZGUgKHZhbCwgR0VUX01PREVf SU5ORVIgKG1vZGUpKTsNCj4gICAgcmV0dXJuIGdlbl9jb25zdF92ZWNfZHVw bGljYXRlIChtb2RlLCBjKTsNCj4gQEAgLTcyNyw3ICs3ODMsMTAgQEAgZW1p dF92bG1heF9nYXRoZXJfaW5zbiAocnR4IHRhcmdldCwgcnR4IG9wLCBydHgg c2VsKQ0KPiAgICBydHggZWx0Ow0KPiAgICBpbnNuX2NvZGUgaWNvZGU7DQo+ ICAgIG1hY2hpbmVfbW9kZSBkYXRhX21vZGUgPSBHRVRfTU9ERSAodGFyZ2V0 KTsNCj4gLSAgaWYgKGNvbnN0X3ZlY19kdXBsaWNhdGVfcCAoc2VsLCAmZWx0 KSkNCj4gKyAgbWFjaGluZV9tb2RlIHNlbF9tb2RlID0gR0VUX01PREUgKHNl bCk7DQo+ICsgIGlmIChtYXliZV9uZSAoR0VUX01PREVfU0laRSAoZGF0YV9t b2RlKSwgR0VUX01PREVfU0laRSAoc2VsX21vZGUpKSkNCj4gKyAgICBpY29k ZSA9IGNvZGVfZm9yX3ByZWRfZ2F0aGVyZWkxNiAoZGF0YV9tb2RlKTsNCj4g KyAgZWxzZSBpZiAoY29uc3RfdmVjX2R1cGxpY2F0ZV9wIChzZWwsICZlbHQp KQ0KPiAgICAgIHsNCj4gICAgICAgIGljb2RlID0gY29kZV9mb3JfcHJlZF9n YXRoZXJfc2NhbGFyIChkYXRhX21vZGUpOw0KPiAgICAgICAgc2VsID0gZWx0 Ow0KPiBAQCAtNzQ0LDcgKzgwMywxMCBAQCBlbWl0X3ZsbWF4X21hc2tlZF9n YXRoZXJfbXVfaW5zbiAocnR4IHRhcmdldCwgcnR4IG9wLCBydHggc2VsLCBy dHggbWFzaykNCj4gICAgcnR4IGVsdDsNCj4gICAgaW5zbl9jb2RlIGljb2Rl Ow0KPiAgICBtYWNoaW5lX21vZGUgZGF0YV9tb2RlID0gR0VUX01PREUgKHRh cmdldCk7DQo+IC0gIGlmIChjb25zdF92ZWNfZHVwbGljYXRlX3AgKHNlbCwg JmVsdCkpDQo+ICsgIG1hY2hpbmVfbW9kZSBzZWxfbW9kZSA9IEdFVF9NT0RF IChzZWwpOw0KPiArICBpZiAobWF5YmVfbmUgKEdFVF9NT0RFX1NJWkUgKGRh dGFfbW9kZSksIEdFVF9NT0RFX1NJWkUgKHNlbF9tb2RlKSkpDQo+ICsgICAg aWNvZGUgPSBjb2RlX2Zvcl9wcmVkX2dhdGhlcmVpMTYgKGRhdGFfbW9kZSk7 DQo+ICsgIGVsc2UgaWYgKGNvbnN0X3ZlY19kdXBsaWNhdGVfcCAoc2VsLCAm ZWx0KSkNCj4gICAgICB7DQo+ICAgICAgICBpY29kZSA9IGNvZGVfZm9yX3By ZWRfZ2F0aGVyX3NjYWxhciAoZGF0YV9tb2RlKTsNCj4gICAgICAgIHNlbCA9 IGVsdDsNCj4gQEAgLTg5NSwxMSArOTU3LDEzMCBAQCBleHBhbmRfY29uc3Rf dmVjdG9yIChydHggdGFyZ2V0LCBydHggc3JjKQ0KPiAgICAgICAgcmV0dXJu Ow0KPiAgICAgIH0NCj4gLSAgLyogVE9ETzogV2Ugb25seSBzdXBwb3J0IGNv bnN0IGR1cGxpY2F0ZSB2ZWN0b3IgZm9yIG5vdy4gTW9yZSBjYXNlcw0KPiAt ICAgICB3aWxsIGJlIHN1cHBvcnRlZCB3aGVuIHdlIHN1cHBvcnQgYXV0by12 ZWN0b3JpemF0aW9uOg0KPiArICAvKiBIYW5kbGUgdmFyaWFibGUtbGVuZ3Ro IHZlY3Rvci4gICovDQo+ICsgIHVuc2lnbmVkIGludCBuZWx0c19wZXJfcGF0 dGVybiA9IENPTlNUX1ZFQ1RPUl9ORUxUU19QRVJfUEFUVEVSTiAoc3JjKTsN Cj4gKyAgdW5zaWduZWQgaW50IG5wYXR0ZXJucyA9IENPTlNUX1ZFQ1RPUl9O UEFUVEVSTlMgKHNyYyk7DQo+ICsgIHJ2dl9idWlsZGVyIGJ1aWxkZXIgKG1v ZGUsIG5wYXR0ZXJucywgbmVsdHNfcGVyX3BhdHRlcm4pOw0KPiArICBmb3Ig KHVuc2lnbmVkIGludCBpID0gMDsgaSA8IG5lbHRzX3Blcl9wYXR0ZXJuOyBp KyspDQo+ICsgICAgew0KPiArICAgICAgZm9yICh1bnNpZ25lZCBpbnQgaiA9 IDA7IGogPCBucGF0dGVybnM7IGorKykNCj4gKyBidWlsZGVyLnF1aWNrX3B1 c2ggKENPTlNUX1ZFQ1RPUl9FTFQgKHNyYywgaSAqIG5wYXR0ZXJucyArIGop KTsNCj4gKyAgICB9DQo+ICsgIGJ1aWxkZXIuZmluYWxpemUgKCk7DQo+IC0g ICAgICAgMS4gbXVsdGlwbGUgZWx0cyBkdXBsaWNhdGUgdmVjdG9yLg0KPiAt ICAgICAgIDIuIG11bHRpcGxlIHBhdHRlcm5zIHdpdGggbXVsdGlwbGUgZWx0 cy4gICovDQo+ICsgIGlmIChDT05TVF9WRUNUT1JfRFVQTElDQVRFX1AgKHNy YykpDQo+ICsgICAgew0KPiArICAgICAgaWYgKGJ1aWxkZXIuY2FuX2R1cGxp Y2F0ZV9yZXBlYXRpbmdfc2VxdWVuY2VfcCAoKSkNCj4gKyB7DQo+ICsgICBy dHggZWxlID0gYnVpbGRlci5nZXRfbWVyZ2VkX3JlcGVhdGluZ19zZXF1ZW5j ZSAoKTsNCj4gKyAgIHJ0eCBkdXAgPSBleHBhbmRfdmVjdG9yX2Jyb2FkY2Fz dCAoYnVpbGRlci5uZXdfbW9kZSAoKSwgZWxlKTsNCj4gKyAgIGVtaXRfbW92 ZV9pbnNuICh0YXJnZXQsIGdlbl9sb3dwYXJ0IChtb2RlLCBkdXApKTsNCj4g KyB9DQo+ICsgICAgICBlbHNlDQo+ICsgew0KPiArICAgdW5zaWduZWQgaW50 IG5iaXRzID0gbnBhdHRlcm5zIC0gMTsNCj4gKw0KPiArICAgLyogR2VuZXJh dGUgdmlkID0geyAwLCAxLCAyLCAzLCA0LCA1LCA2LCA3LCAuLi4gfS4gICov DQo+ICsgICBydHggdmlkID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIuaW50X21v ZGUgKCkpOw0KPiArICAgcnR4IG9wW10gPSB7dmlkfTsNCj4gKyAgIGVtaXRf dmxtYXhfaW5zbiAoY29kZV9mb3JfcHJlZF9zZXJpZXMgKGJ1aWxkZXIuaW50 X21vZGUgKCkpLA0KPiArICAgIFJWVl9NSVNDX09QLCBvcCk7DQo+ICsNCj4g KyAgIC8qIEdlbmVyYXRlIHZpZF9yZXBlYXQgPSB7IDAsIDEsIC4uLiBuYml0 cywgLi4uIH0gICovDQo+ICsgICBydHggdmlkX3JlcGVhdCA9IGdlbl9yZWdf cnR4IChidWlsZGVyLmludF9tb2RlICgpKTsNCj4gKyAgIHJ0eCBhbmRfb3Bz W10gPSB7dmlkX3JlcGVhdCwgdmlkLA0KPiArICAgIGdlbl9pbnRfbW9kZSAo bmJpdHMsIGJ1aWxkZXIuaW5uZXJfaW50X21vZGUgKCkpfTsNCj4gKyAgIGVt aXRfdmxtYXhfaW5zbiAoY29kZV9mb3JfcHJlZF9zY2FsYXIgKEFORCwgYnVp bGRlci5pbnRfbW9kZSAoKSksDQo+ICsgICAgUlZWX0JJTk9QLCBhbmRfb3Bz KTsNCj4gKw0KPiArICAgcnR4IHRtcCA9IGdlbl9yZWdfcnR4IChidWlsZGVy Lm1vZGUgKCkpOw0KPiArICAgcnR4IGR1cF9vcHNbXSA9IHt0bXAsIGJ1aWxk ZXIuZWx0ICgwKX07DQo+ICsgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9y X3ByZWRfYnJvYWRjYXN0IChidWlsZGVyLm1vZGUgKCkpLCBSVlZfVU5PUCwN Cj4gKyAgICBkdXBfb3BzKTsNCj4gKyAgIGZvciAodW5zaWduZWQgaW50IGkg PSAxOyBpIDwgYnVpbGRlci5ucGF0dGVybnMgKCk7IGkrKykNCj4gKyAgICAg ew0KPiArICAgICAgIC8qIEdlbmVyYXRlIG1hc2sgYWNjb3JkaW5nIHRvIGku ICAqLw0KPiArICAgICAgIHJ0eCBtYXNrID0gZ2VuX3JlZ19ydHggKGJ1aWxk ZXIubWFza19tb2RlICgpKTsNCj4gKyAgICAgICBydHggY29uc3RfdmVjID0g Z2VuX2NvbnN0X3ZlY3Rvcl9kdXAgKGJ1aWxkZXIuaW50X21vZGUgKCksIGkp Ow0KPiArICAgICAgIGV4cGFuZF92ZWNfY21wIChtYXNrLCBFUSwgdmlkX3Jl cGVhdCwgY29uc3RfdmVjKTsNCj4gKw0KPiArICAgICAgIC8qIE1lcmdlIHNj YWxhciB0byBlYWNoIGkuICAqLw0KPiArICAgICAgIHJ0eCB0bXAyID0gZ2Vu X3JlZ19ydHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsgICAgICAgcnR4IG1l cmdlX29wc1tdID0ge3RtcDIsIHRtcCwgYnVpbGRlci5lbHQgKGkpLCBtYXNr fTsNCj4gKyAgICAgICBpbnNuX2NvZGUgaWNvZGUgPSBjb2RlX2Zvcl9wcmVk X21lcmdlX3NjYWxhciAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgICAgICBl bWl0X3ZsbWF4X21lcmdlX2luc24gKGljb2RlLCBSVlZfTUVSR0VfT1AsIG1l cmdlX29wcyk7DQo+ICsgICAgICAgdG1wID0gdG1wMjsNCj4gKyAgICAgfQ0K PiArICAgZW1pdF9tb3ZlX2luc24gKHRhcmdldCwgdG1wKTsNCj4gKyB9DQo+ ICsgICAgICByZXR1cm47DQo+ICsgICAgfQ0KPiArICBlbHNlIGlmIChDT05T VF9WRUNUT1JfU1RFUFBFRF9QIChzcmMpKQ0KPiArICAgIHsNCj4gKyAgICAg IGdjY19hc3NlcnQgKEdFVF9NT0RFX0NMQVNTIChtb2RlKSA9PSBNT0RFX1ZF Q1RPUl9JTlQpOw0KPiArICAgICAgaWYgKGJ1aWxkZXIuc2luZ2xlX3N0ZXBf bnBhdHRlcm5zX3AgKCkpDQo+ICsgew0KPiArICAgLyogRGVzY3JpYmUgdGhl IGNhc2UgYnkgY2hvb3NpbmcgTlBBVFRFUk5TID0gNCBhcyBhbiBleGFtcGxl LiAgKi8NCj4gKyAgIHJ0eCBiYXNlLCBzdGVwOw0KPiArICAgaWYgKGJ1aWxk ZXIubnBhdHRlcm5zX2FsbF9lcXVhbF9wICgpKQ0KPiArICAgICB7DQo+ICsg ICAgICAgLyogR2VuZXJhdGUgdGhlIHZhcmlhYmxlLWxlbmd0aCB2ZWN0b3Ig YXMgYmVsb3c6DQo+ICsgRS5nLiB7IDAsIDAsIDAsIDAsIDgsIDgsIDgsIDgs IDE2LCAxNiwgMTYsIDE2LCAuLi4gfSAqLw0KPiArICAgICAgIC8qIFN0ZXAg MTogR2VuZXJhdGUgYmFzZSA9IHsgMCwgMCwgMCwgMCwgMCwgMCwgMCwgLi4u IH0uICAqLw0KPiArICAgICAgIGJhc2UgPSBleHBhbmRfdmVjdG9yX2Jyb2Fk Y2FzdCAoYnVpbGRlci5tb2RlICgpLCBidWlsZGVyLmVsdCAoMCkpOw0KPiAr ICAgICB9DQo+ICsgICBlbHNlDQo+ICsgICAgIHsNCj4gKyAgICAgICAvKiBH ZW5lcmF0ZSB0aGUgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciBhcyBiZWxvdzoN Cj4gKyBFLmcuIHsgMCwgNiwgMCwgNiwgOCwgMTQsIDgsIDE0LCAxNiwgMjIs IDE2LCAyMiwgLi4uIH0gKi8NCj4gKyAgICAgICAvKiBTdGVwIDE6IEdlbmVy YXRlIGJhc2UgPSB7IDAsIDYsIDAsIDYsIC4uLiB9LiAgKi8NCj4gKyAgICAg ICBydnZfYnVpbGRlciBuZXdfYnVpbGRlciAoYnVpbGRlci5tb2RlICgpLCBi dWlsZGVyLm5wYXR0ZXJucyAoKSwNCj4gKyAgICAgICAgMSk7DQo+ICsgICAg ICAgZm9yICh1bnNpZ25lZCBpbnQgaSA9IDA7IGkgPCBidWlsZGVyLm5wYXR0 ZXJucyAoKTsgKytpKQ0KPiArIG5ld19idWlsZGVyLnF1aWNrX3B1c2ggKGJ1 aWxkZXIuZWx0IChpKSk7DQo+ICsgICAgICAgcnR4IG5ld192ZWMgPSBuZXdf YnVpbGRlci5idWlsZCAoKTsNCj4gKyAgICAgICBiYXNlID0gZ2VuX3JlZ19y dHggKGJ1aWxkZXIubW9kZSAoKSk7DQo+ICsgICAgICAgZW1pdF9tb3ZlX2lu c24gKGJhc2UsIG5ld192ZWMpOw0KPiArICAgICB9DQo+ICsNCj4gKyAgIC8q IFN0ZXAgMjogR2VuZXJhdGUgc3RlcCA9IGdlbl9pbnRfbW9kZSAoZGlmZiwg bW9kZSkuICAqLw0KPiArICAgcG9seV9pbnQ2NCB2YWx1ZTEgPSBydHhfdG9f cG9seV9pbnQ2NCAoYnVpbGRlci5lbHQgKDApKTsNCj4gKyAgIHBvbHlfaW50 NjQgdmFsdWUyDQo+ICsgICAgID0gcnR4X3RvX3BvbHlfaW50NjQgKGJ1aWxk ZXIuZWx0IChidWlsZGVyLm5wYXR0ZXJucyAoKSkpOw0KPiArICAgcG9seV9p bnQ2NCBkaWZmID0gdmFsdWUyIC0gdmFsdWUxOw0KPiArICAgc3RlcCA9IGdl bl9pbnRfbW9kZSAoZGlmZiwgYnVpbGRlci5pbm5lcl9tb2RlICgpKTsNCj4g Kw0KPiArICAgLyogU3RlcCAzOiBHZW5lcmF0ZSB2aWQgPSB7IDAsIDEsIDIs IDMsIDQsIDUsIDYsIDcsIC4uLiB9LiAgKi8NCj4gKyAgIHJ0eCB2aWQgPSBn ZW5fcmVnX3J0eCAoYnVpbGRlci5tb2RlICgpKTsNCj4gKyAgIHJ0eCBvcFtd ID0ge3ZpZH07DQo+ICsgICBlbWl0X3ZsbWF4X2luc24gKGNvZGVfZm9yX3By ZWRfc2VyaWVzIChidWlsZGVyLm1vZGUgKCkpLCBSVlZfTUlTQ19PUCwNCj4g KyAgICBvcCk7DQo+ICsNCj4gKyAgIC8qIFN0ZXAgNDogR2VuZXJhdGUgZmFj dG9yID0geyAwLCAwLCAwLCAwLCAxLCAxLCAxLCAxLCAuLi4gfS4gICovDQo+ ICsgICBydHggZmFjdG9yID0gZ2VuX3JlZ19ydHggKGJ1aWxkZXIubW9kZSAo KSk7DQo+ICsgICBydHggc2hpZnRfb3BzW10NCj4gKyAgICAgPSB7ZmFjdG9y LCB2aWQsDQo+ICsgICAgICAgIGdlbl9pbnRfbW9kZSAoZXhhY3RfbG9nMiAo YnVpbGRlci5ucGF0dGVybnMgKCkpLCBQbW9kZSl9Ow0KPiArICAgZW1pdF92 bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVkX3NjYWxhciAoTFNISUZUUlQsIGJ1 aWxkZXIubW9kZSAoKSksDQo+ICsgICAgUlZWX0JJTk9QLCBzaGlmdF9vcHMp Ow0KPiArDQo+ICsgICAvKiBTdGVwIDU6IEdlbmVyYXRlIGFkanVzdGVkIHN0 ZXAgPSB7IDAsIDAsIDAsIDAsIGRpZmYsIGRpZmYsIC4uLiB9ICovDQo+ICsg ICBydHggYWRqdXN0ZWRfc3RlcCA9IGdlbl9yZWdfcnR4IChidWlsZGVyLm1v ZGUgKCkpOw0KPiArICAgcnR4IG11bF9vcHNbXSA9IHthZGp1c3RlZF9zdGVw LCBmYWN0b3IsIHN0ZXB9Ow0KPiArICAgZW1pdF92bG1heF9pbnNuIChjb2Rl X2Zvcl9wcmVkX3NjYWxhciAoTVVMVCwgYnVpbGRlci5tb2RlICgpKSwNCj4g KyAgICBSVlZfQklOT1AsIG11bF9vcHMpOw0KPiArDQo+ICsgICAvKiBTdGVw IDY6IEdlbmVyYXRlIHRoZSBmaW5hbCByZXN1bHQuICAqLw0KPiArICAgcnR4 IGFkZF9vcHNbXSA9IHt0YXJnZXQsIGJhc2UsIGFkanVzdGVkX3N0ZXB9Ow0K PiArICAgZW1pdF92bG1heF9pbnNuIChjb2RlX2Zvcl9wcmVkIChQTFVTLCBi dWlsZGVyLm1vZGUgKCkpLCBSVlZfQklOT1AsDQo+ICsgICAgYWRkX29wcyk7 DQo+ICsgfQ0KPiArICAgICAgZWxzZQ0KPiArIC8qIFRPRE86IFdlIHdpbGwg ZW5hYmxlIG1vcmUgdmFyaWFibGUtbGVuZ3RoIHZlY3RvciBpbiB0aGUgZnV0 dXJlLiAgKi8NCj4gKyBnY2NfdW5yZWFjaGFibGUgKCk7DQo+ICsgICAgfQ0K PiArICBlbHNlDQo+ICsgICAgZ2NjX3VucmVhY2hhYmxlICgpOw0KPiB9DQo+ IC8qIEV4cGFuZCBhIHByZS1SQSBSVlYgZGF0YSBtb3ZlIGZyb20gU1JDIHRv IERFU1QuDQo+IEBAIC0yMDI5LDE0ICsyMjEwLDEzIEBAIGV4cGFuZF92ZWNf cGVybSAocnR4IHRhcmdldCwgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHNlbCkN Cj4gew0KPiAgICBtYWNoaW5lX21vZGUgZGF0YV9tb2RlID0gR0VUX01PREUg KHRhcmdldCk7DQo+ICAgIG1hY2hpbmVfbW9kZSBzZWxfbW9kZSA9IEdFVF9N T0RFIChzZWwpOw0KPiAtDQo+IC0gIC8qIEVuZm9yY2VkIGJ5IHRoZSBwYXR0 ZXJuIGNvbmRpdGlvbi4gICovDQo+IC0gIGludCBudW5pdHMgPSBHRVRfTU9E RV9OVU5JVFMgKHNlbF9tb2RlKS50b19jb25zdGFudCAoKTsNCj4gKyAgcG9s eV91aW50NjQgbnVuaXRzID0gR0VUX01PREVfTlVOSVRTIChzZWxfbW9kZSk7 DQo+ICAgIC8qIENoZWNrIGlmIHRoZSBzZWwgb25seSByZWZlcmVuY2VzIHRo ZSBmaXJzdCB2YWx1ZXMgdmVjdG9yLiBJZiBlYWNoIHNlbGVjdA0KPiAgICAg ICBpbmRleCBpcyBpbiByYW5nZSBvZiBbMCwgbnVuaXRzIC0gMV0uIEEgc2lu Z2xlIHZyZ2F0aGVyIGluc3RydWN0aW9ucyBpcw0KPiAtICAgICBlbm91Z2gu ICAqLw0KPiAtICBpZiAoY29uc3RfdmVjX2FsbF9pbl9yYW5nZV9wIChzZWws IDAsIG51bml0cyAtIDEpKQ0KPiArICAgICBlbm91Z2guIFNpbmNlIHdlIHdp bGwgdXNlIHZyZ2F0aGVyZWkxNi52diBmb3IgdmFyaWFibGUtbGVuZ3RoIHZl Y3RvciwNCj4gKyAgICAgaXQgaXMgbmV2ZXIgb3V0IG9mIHJhbmdlIGFuZCB3 ZSBkb24ndCBuZWVkIHRvIG1vZHVsbyB0aGUgaW5kZXguICAqLw0KPiArICBp ZiAoIW51bml0cy5pc19jb25zdGFudCAoKSB8fCBjb25zdF92ZWNfYWxsX2lu X3JhbmdlX3AgKHNlbCwgMCwgbnVuaXRzIC0gMSkpDQo+ICAgICAgew0KPiAg ICAgICAgZW1pdF92bG1heF9nYXRoZXJfaW5zbiAodGFyZ2V0LCBvcDAsIHNl bCk7DQo+ICAgICAgICByZXR1cm47DQo+IEBAIC0yMDU3LDE0ICsyMjM3LDIw IEBAIGV4cGFuZF92ZWNfcGVybSAocnR4IHRhcmdldCwgcnR4IG9wMCwgcnR4 IG9wMSwgcnR4IHNlbCkNCj4gICAgICAgIHJldHVybjsNCj4gICAgICB9DQo+ IC0gIC8qIE5vdGU6IHZlY19wZXJtIGluZGljZXMgYXJlIHN1cHBvc2VkIHRv IHdyYXAgd2hlbiB0aGV5IGdvIGJleW9uZCB0aGUNCj4gLSAgICAgc2l6ZSBv ZiB0aGUgdHdvIHZhbHVlIHZlY3RvcnMsIGkuZS4gdGhlIHVwcGVyIGJpdHMg b2YgdGhlIGluZGljZXMNCj4gLSAgICAgYXJlIGVmZmVjdGl2ZWx5IGlnbm9y ZWQuICBSVlYgdnJnYXRoZXIgaW5zdGVhZCBwcm9kdWNlcyAwIGZvciBhbnkN Cj4gLSAgICAgb3V0LW9mLXJhbmdlIGluZGljZXMsIHNvIHdlIG5lZWQgdG8g bW9kdWxvIGFsbCB0aGUgdmVjX3Blcm0gaW5kaWNlcw0KPiAtICAgICB0byBl bnN1cmUgdGhleSBhcmUgYWxsIGluIHJhbmdlIG9mIFswLCAyICogbnVuaXRz IC0gMV0uICAqLw0KPiArICBydHggc2VsX21vZCA9IHNlbDsNCj4gICAgcnR4 IG1heF9zZWwgPSBnZW5fY29uc3RfdmVjdG9yX2R1cCAoc2VsX21vZGUsIDIg KiBudW5pdHMgLSAxKTsNCj4gLSAgcnR4IHNlbF9tb2QNCj4gLSAgICA9IGV4 cGFuZF9zaW1wbGVfYmlub3AgKHNlbF9tb2RlLCBBTkQsIHNlbCwgbWF4X3Nl bCwgTlVMTCwgMCwgT1BUQUJfRElSRUNUKTsNCj4gKyAgLyogV2UgZG9uJ3Qg bmVlZCB0byBtb2R1bG8gaW5kaWNlcyBmb3IgVkxBIHZlY3Rvci4NCj4gKyAg ICAgU2luY2Ugd2Ugc2hvdWxkIGd1cmFudGVlIHRoZXkgYXJlbid0IG91dCBv ZiByYW5nZSBiZWZvcmUuICAqLw0KPiArICBpZiAobnVuaXRzLmlzX2NvbnN0 YW50ICgpKQ0KPiArICAgIHsNCj4gKyAgICAgIC8qIE5vdGU6IHZlY19wZXJt IGluZGljZXMgYXJlIHN1cHBvc2VkIHRvIHdyYXAgd2hlbiB0aGV5IGdvIGJl eW9uZCB0aGUNCj4gKyBzaXplIG9mIHRoZSB0d28gdmFsdWUgdmVjdG9ycywg aS5lLiB0aGUgdXBwZXIgYml0cyBvZiB0aGUgaW5kaWNlcw0KPiArIGFyZSBl ZmZlY3RpdmVseSBpZ25vcmVkLiAgUlZWIHZyZ2F0aGVyIGluc3RlYWQgcHJv ZHVjZXMgMCBmb3IgYW55DQo+ICsgb3V0LW9mLXJhbmdlIGluZGljZXMsIHNv IHdlIG5lZWQgdG8gbW9kdWxvIGFsbCB0aGUgdmVjX3Blcm0gaW5kaWNlcw0K PiArIHRvIGVuc3VyZSB0aGV5IGFyZSBhbGwgaW4gcmFuZ2Ugb2YgWzAsIDIg KiBudW5pdHMgLSAxXS4gICovDQo+ICsgICAgICBzZWxfbW9kID0gZXhwYW5k X3NpbXBsZV9iaW5vcCAoc2VsX21vZGUsIEFORCwgc2VsLCBtYXhfc2VsLCBO VUxMLCAwLA0KPiArICAgICAgT1BUQUJfRElSRUNUKTsNCj4gKyAgICB9DQo+ ICAgIC8qIFRoaXMgZm9sbG93aW5nIHNlcXVlbmNlIGlzIGhhbmRsaW5nIHRo ZSBjYXNlIHRoYXQ6DQo+ICAgICAgIF9fYnVpbHRpbl9zaHVmZmxldmVjdG9y ICh2ZWMxLCB2ZWMyLCBpbmRleC4uLiksIHRoZSBpbmRleCBjYW4gYmUgYW55 DQo+IEBAIC0yMDk0LDQgKzIyODAsMTI0IEBAIGV4cGFuZF92ZWNfcGVybSAo cnR4IHRhcmdldCwgcnR4IG9wMCwgcnR4IG9wMSwgcnR4IHNlbCkNCj4gICAg ZW1pdF92bG1heF9tYXNrZWRfZ2F0aGVyX211X2luc24gKHRhcmdldCwgb3Ax LCB0bXAsIG1hc2spOw0KPiB9DQo+ICsvKiBJbXBsZW1lbnQgVEFSR0VUX1ZF Q1RPUklaRV9WRUNfUEVSTV9DT05TVCBmb3IgUlZWLiAgKi8NCj4gKw0KPiAr LyogdmVjX3Blcm0gc3VwcG9ydC4gICovDQo+ICsNCj4gK3N0cnVjdCBleHBh bmRfdmVjX3Blcm1fZA0KPiArew0KPiArICBydHggdGFyZ2V0LCBvcDAsIG9w MTsNCj4gKyAgdmVjX3Blcm1faW5kaWNlcyBwZXJtOw0KPiArICBtYWNoaW5l X21vZGUgdm1vZGU7DQo+ICsgIG1hY2hpbmVfbW9kZSBvcF9tb2RlOw0KPiAr ICBib29sIG9uZV92ZWN0b3JfcDsNCj4gKyAgYm9vbCB0ZXN0aW5nX3A7DQo+ ICt9Ow0KPiArDQo+ICsvKiBSZWNvZ25pemUgdGhlIHBhdHRlcm4gdGhhdCBj YW4gYmUgc2h1ZmZsZWQgYnkgZ2VuZXJpYyBhcHByb2FjaC4gICovDQo+ICsN Cj4gK3N0YXRpYyBib29sDQo+ICtzaHVmZmxlX2dlbmVyaWNfcGF0dGVybnMg KHN0cnVjdCBleHBhbmRfdmVjX3Blcm1fZCAqZCkNCj4gK3sNCj4gKyAgbWFj aGluZV9tb2RlIHNlbF9tb2RlID0gcmVsYXRlZF9pbnRfdmVjdG9yX21vZGUg KGQtPnZtb2RlKS5yZXF1aXJlICgpOw0KPiArICBwb2x5X3VpbnQ2NCBudW5p dHMgPSBHRVRfTU9ERV9OVU5JVFMgKGQtPnZtb2RlKTsNCj4gKw0KPiArICAv KiBGb3IgY29uc3RhbnQgc2l6ZSBpbmRpY2VzLCB3ZSBkb250J3QgbmVlZCB0 byBoYW5kbGUgaXQgaGVyZS4NCj4gKyAgICAgSnVzdCBsZWF2ZSBpdCB0byB2 ZWNfcGVybTxtb2RlPi4gICovDQo+ICsgIGlmIChkLT5wZXJtLmxlbmd0aCAo KS5pc19jb25zdGFudCAoKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ICsN Cj4gKyAgLyogUGVybXV0aW5nIHR3byBTRVc4IHZhcmlhYmxlLWxlbmd0aCB2 ZWN0b3JzIG5lZWQgdnJnYXRoZXJlaTE2LnZ2Lg0KPiArICAgICBPdGhlcndp c2UsIGl0IGNvdWxkIG92ZXJmbG93IHRoZSBpbmRleCByYW5nZS4gICovDQo+ ICsgIGlmIChHRVRfTU9ERV9JTk5FUiAoZC0+dm1vZGUpID09IFFJbW9kZQ0K PiArICAgICAgJiYgIWdldF92ZWN0b3JfbW9kZSAoSEltb2RlLCBudW5pdHMp LmV4aXN0cyAoJnNlbF9tb2RlKSkNCj4gKyAgICByZXR1cm4gZmFsc2U7DQo+ ICsNCj4gKyAgLyogU3VjY2VzcyEgKi8NCj4gKyAgaWYgKGQtPnRlc3Rpbmdf cCkNCj4gKyAgICByZXR1cm4gdHJ1ZTsNCj4gKw0KPiArICBydHggc2VsID0g dmVjX3Blcm1faW5kaWNlc190b19ydHggKHNlbF9tb2RlLCBkLT5wZXJtKTsN Cj4gKyAgZXhwYW5kX3ZlY19wZXJtIChkLT50YXJnZXQsIGQtPm9wMCwgZC0+ b3AxLCBmb3JjZV9yZWcgKHNlbF9tb2RlLCBzZWwpKTsNCj4gKyAgcmV0dXJu IHRydWU7DQo+ICt9DQo+ICsNCj4gK3N0YXRpYyBib29sDQo+ICtleHBhbmRf dmVjX3Blcm1fY29uc3RfMSAoc3RydWN0IGV4cGFuZF92ZWNfcGVybV9kICpk KQ0KPiArew0KPiArICBnY2NfYXNzZXJ0IChkLT5vcF9tb2RlICE9IEVfVk9J RG1vZGUpOw0KPiArDQo+ICsgIC8qIFRoZSBwYXR0ZXJuIG1hdGNoaW5nIGZ1 bmN0aW9ucyBhYm92ZSBhcmUgd3JpdHRlbiB0byBsb29rIGZvciBhIHNtYWxs DQo+ICsgICAgIG51bWJlciB0byBiZWdpbiB0aGUgc2VxdWVuY2UgKDAsIDEs IE4vMikuICBJZiB3ZSBiZWdpbiB3aXRoIGFuIGluZGV4DQo+ICsgICAgIGZy b20gdGhlIHNlY29uZCBvcGVyYW5kLCB3ZSBjYW4gc3dhcCB0aGUgb3BlcmFu ZHMuICAqLw0KPiArICBwb2x5X2ludDY0IG5lbHQgPSBkLT5wZXJtLmxlbmd0 aCAoKTsNCj4gKyAgaWYgKGtub3duX2dlIChkLT5wZXJtWzBdLCBuZWx0KSkN Cj4gKyAgICB7DQo+ICsgICAgICBkLT5wZXJtLnJvdGF0ZV9pbnB1dHMgKDEp Ow0KPiArICAgICAgc3RkOjpzd2FwIChkLT5vcDAsIGQtPm9wMSk7DQo+ICsg ICAgfQ0KPiArDQo+ICsgIGlmIChrbm93bl9ndCAobmVsdCwgMSkpDQo+ICsg ICAgew0KPiArICAgICAgaWYgKGQtPnZtb2RlID09IGQtPm9wX21vZGUpDQo+ ICsgew0KPiArICAgaWYgKHNodWZmbGVfZ2VuZXJpY19wYXR0ZXJucyAoZCkp DQo+ICsgICAgIHJldHVybiB0cnVlOw0KPiArICAgcmV0dXJuIGZhbHNlOw0K PiArIH0NCj4gKyAgICAgIGVsc2UNCj4gKyByZXR1cm4gZmFsc2U7DQo+ICsg ICAgfQ0KPiArICByZXR1cm4gZmFsc2U7DQo+ICt9DQo+ICsNCj4gK2Jvb2wN Cj4gK2V4cGFuZF92ZWNfcGVybV9jb25zdCAobWFjaGluZV9tb2RlIHZtb2Rl LCBtYWNoaW5lX21vZGUgb3BfbW9kZSwgcnR4IHRhcmdldCwNCj4gKyAgICAg ICAgcnR4IG9wMCwgcnR4IG9wMSwgY29uc3QgdmVjX3Blcm1faW5kaWNlcyAm c2VsKQ0KPiArew0KPiArICAvKiBSVlYgZG9lc24ndCBoYXZlIE1hc2sgdHlw ZSBwYWNrL3VucGFjayBpbnN0cnVjdGlvbnMgYW5kIHdlIGRvbid0IHVzZQ0K PiArICAgICBtYXNrIHRvIGRvIHRoZSBpdGVyYXRpb24gbG9vcCBjb250cm9s LiBKdXN0IGRpc2FibGUgaXQgZGlyZWN0bHkuICAqLw0KPiArICBpZiAoR0VU X01PREVfQ0xBU1MgKHZtb2RlKSA9PSBNT0RFX1ZFQ1RPUl9CT09MKQ0KPiAr ICAgIHJldHVybiBmYWxzZTsNCj4gKw0KPiArICBzdHJ1Y3QgZXhwYW5kX3Zl Y19wZXJtX2QgZDsNCj4gKw0KPiArICAvKiBDaGVjayB3aGV0aGVyIHRoZSBt YXNrIGNhbiBiZSBhcHBsaWVkIHRvIGEgc2luZ2xlIHZlY3Rvci4gICovDQo+ ICsgIGlmIChzZWwubmlucHV0cyAoKSA9PSAxIHx8IChvcDAgJiYgcnR4X2Vx dWFsX3AgKG9wMCwgb3AxKSkpDQo+ICsgICAgZC5vbmVfdmVjdG9yX3AgPSB0 cnVlOw0KPiArICBlbHNlIGlmIChzZWwuYWxsX2Zyb21faW5wdXRfcCAoMCkp DQo+ICsgICAgew0KPiArICAgICAgZC5vbmVfdmVjdG9yX3AgPSB0cnVlOw0K PiArICAgICAgb3AxID0gb3AwOw0KPiArICAgIH0NCj4gKyAgZWxzZSBpZiAo c2VsLmFsbF9mcm9tX2lucHV0X3AgKDEpKQ0KPiArICAgIHsNCj4gKyAgICAg IGQub25lX3ZlY3Rvcl9wID0gdHJ1ZTsNCj4gKyAgICAgIG9wMCA9IG9wMTsN Cj4gKyAgICB9DQo+ICsgIGVsc2UNCj4gKyAgICBkLm9uZV92ZWN0b3JfcCA9 IGZhbHNlOw0KPiArDQo+ICsgIGQucGVybS5uZXdfdmVjdG9yIChzZWwuZW5j b2RpbmcgKCksIGQub25lX3ZlY3Rvcl9wID8gMSA6IDIsDQo+ICsgICAgICBz ZWwubmVsdHNfcGVyX2lucHV0ICgpKTsNCj4gKyAgZC52bW9kZSA9IHZtb2Rl Ow0KPiArICBkLm9wX21vZGUgPSBvcF9tb2RlOw0KPiArICBkLnRhcmdldCA9 IHRhcmdldDsNCj4gKyAgZC5vcDAgPSBvcDA7DQo+ICsgIGlmIChvcDAgPT0g b3AxKQ0KPiArICAgIGQub3AxID0gZC5vcDA7DQo+ICsgIGVsc2UNCj4gKyAg ICBkLm9wMSA9IG9wMTsNCj4gKyAgZC50ZXN0aW5nX3AgPSAhdGFyZ2V0Ow0K PiArDQo+ICsgIGlmICghZC50ZXN0aW5nX3ApDQo+ICsgICAgcmV0dXJuIGV4 cGFuZF92ZWNfcGVybV9jb25zdF8xICgmZCk7DQo+ICsNCj4gKyAgcnR4X2lu c24gKmxhc3QgPSBnZXRfbGFzdF9pbnNuICgpOw0KPiArICBib29sIHJldCA9 IGV4cGFuZF92ZWNfcGVybV9jb25zdF8xICgmZCk7DQo+ICsgIGdjY19hc3Nl cnQgKGxhc3QgPT0gZ2V0X2xhc3RfaW5zbiAoKSk7DQo+ICsNCj4gKyAgcmV0 dXJuIHJldDsNCj4gK30NCj4gKw0KPiB9IC8vIG5hbWVzcGFjZSByaXNjdl92 ZWN0b3INCj4gZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvcmlzY3Yu Y2MgYi9nY2MvY29uZmlnL3Jpc2N2L3Jpc2N2LmNjDQo+IGluZGV4IGNhYTc4 NThiODY0Li41ZDIyMDEyYjU5MSAxMDA2NDQNCj4gLS0tIGEvZ2NjL2NvbmZp Zy9yaXNjdi9yaXNjdi5jYw0KPiArKysgYi9nY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LmNjDQo+IEBAIC03NjMxLDYgKzc2MzEsMTkgQEAgcmlzY3ZfdmVjdG9y aXplX3JlbGF0ZWRfbW9kZSAobWFjaGluZV9tb2RlIHZlY3Rvcl9tb2RlLCBz Y2FsYXJfbW9kZSBlbGVtZW50X21vZGUNCj4gICAgcmV0dXJuIGRlZmF1bHRf dmVjdG9yaXplX3JlbGF0ZWRfbW9kZSAodmVjdG9yX21vZGUsIGVsZW1lbnRf bW9kZSwgbnVuaXRzKTsNCj4gfQ0KPiArLyogSW1wbGVtZW50IFRBUkdFVF9W RUNUT1JJWkVfVkVDX1BFUk1fQ09OU1QuICAqLw0KPiArDQo+ICtzdGF0aWMg Ym9vbA0KPiArcmlzY3ZfdmVjdG9yaXplX3ZlY19wZXJtX2NvbnN0IChtYWNo aW5lX21vZGUgdm1vZGUsIG1hY2hpbmVfbW9kZSBvcF9tb2RlLA0KPiArIHJ0 eCB0YXJnZXQsIHJ0eCBvcDAsIHJ0eCBvcDEsDQo+ICsgY29uc3QgdmVjX3Bl cm1faW5kaWNlcyAmc2VsKQ0KPiArew0KPiArICBpZiAoVEFSR0VUX1ZFQ1RP UiAmJiByaXNjdl92X2V4dF92ZWN0b3JfbW9kZV9wICh2bW9kZSkpDQo+ICsg ICAgcmV0dXJuIHJpc2N2X3ZlY3Rvcjo6ZXhwYW5kX3ZlY19wZXJtX2NvbnN0 ICh2bW9kZSwgb3BfbW9kZSwgdGFyZ2V0LCBvcDAsDQo+ICsgb3AxLCBzZWwp Ow0KPiArDQo+ICsgIHJldHVybiBmYWxzZTsNCj4gK30NCj4gLyogSW5pdGlh bGl6ZSB0aGUgR0NDIHRhcmdldCBzdHJ1Y3R1cmUuICAqLw0KPiAjdW5kZWYg VEFSR0VUX0FTTV9BTElHTkVEX0hJX09QDQo+IEBAIC03OTMwLDYgKzc5NDMs OSBAQCByaXNjdl92ZWN0b3JpemVfcmVsYXRlZF9tb2RlIChtYWNoaW5lX21v ZGUgdmVjdG9yX21vZGUsIHNjYWxhcl9tb2RlIGVsZW1lbnRfbW9kZQ0KPiAj dW5kZWYgVEFSR0VUX1ZFQ1RPUklaRV9SRUxBVEVEX01PREUNCj4gI2RlZmlu ZSBUQVJHRVRfVkVDVE9SSVpFX1JFTEFURURfTU9ERSByaXNjdl92ZWN0b3Jp emVfcmVsYXRlZF9tb2RlDQo+ICsjdW5kZWYgVEFSR0VUX1ZFQ1RPUklaRV9W RUNfUEVSTV9DT05TVA0KPiArI2RlZmluZSBUQVJHRVRfVkVDVE9SSVpFX1ZF Q19QRVJNX0NPTlNUIHJpc2N2X3ZlY3Rvcml6ZV92ZWNfcGVybV9jb25zdA0K PiArDQo+IHN0cnVjdCBnY2NfdGFyZ2V0IHRhcmdldG0gPSBUQVJHRVRfSU5J VElBTElaRVI7DQo+ICNpbmNsdWRlICJndC1yaXNjdi5oIg0KPiBkaWZmIC0t Z2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC0xLmMNCj4gbmV3IGZp bGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAwMDAwMDAwMDAuLmJlZmI1MThl MmRkDQo+IC0tLSAvZGV2L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTEuYw0K PiBAQCAtMCwwICsxLDIyIEBADQo+ICsvKiB7IGRnLWRvIGNvbXBpbGUgfSAq Lw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1ydjMy Z2N2IC1tYWJpPWlscDMyZCAtLXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVy ZW5jZT1zY2FsYWJsZSAtZmR1bXAtdHJlZS1vcHRpbWl6ZWQtZGV0YWlscyIg fSAqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3RkaW50LWdjYy5oPg0KPiArDQo+ ICt2b2lkIF9fYXR0cmlidXRlX18gKChub2lwYSkpDQo+ICtmIChpbnQ4X3Qg KnJlc3RyaWN0IGEsIGludDhfdCAqcmVzdHJpY3QgYiwgaW50IG4pDQo+ICt7 DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHsN Cj4gKyAgICAgIGFbaSAqIDggKyAwXSA9IGJbaSAqIDggKyAzN10gKyAxOw0K PiArICAgICAgYVtpICogOCArIDFdID0gYltpICogOCArIDM3XSArIDI7DQo+ ICsgICAgICBhW2kgKiA4ICsgMl0gPSBiW2kgKiA4ICsgMzddICsgODsNCj4g KyAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAqIDggKyAzN10gKyA0Ow0KPiAr ICAgICAgYVtpICogOCArIDRdID0gYltpICogOCArIDM3XSArIDU7DQo+ICsg ICAgICBhW2kgKiA4ICsgNV0gPSBiW2kgKiA4ICsgMzddICsgNjsNCj4gKyAg ICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyAzN10gKyA3Ow0KPiArICAg ICAgYVtpICogOCArIDddID0gYltpICogOCArIDM3XSArIDM7DQo+ICsgICAg fQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1 bXAtdGltZXMgIlwuVkVDX1BFUk0iIDEgIm9wdGltaXplZCIgfSB9ICovDQo+ IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTIuYw0K PiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAwMDAwMC4u YWM4MTc0NTEyOTUNCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHAtMi5jDQo+IEBAIC0wLDAgKzEsMjIgQEANCj4gKy8qIHsgZGctZG8gY29t cGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1h cmNoPXJ2MzJnY3YgLW1hYmk9aWxwMzJkIC0tcGFyYW0gcmlzY3YtYXV0b3Zl Yy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1mZHVtcC10cmVlLW9wdGltaXplZC1k ZXRhaWxzIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQtZ2NjLmg+ DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkNCj4gK2Yg KGludDE2X3QgKnJlc3RyaWN0IGEsIGludDE2X3QgKnJlc3RyaWN0IGIsIGlu dCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47ICsraSkN Cj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kgKiA4ICsg MzddICsgMTsNCj4gKyAgICAgIGFbaSAqIDggKyAxXSA9IGJbaSAqIDggKyAz N10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0gYltpICogOCArIDM3 XSArIDg7DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsgMzdd ICsgNDsNCj4gKyAgICAgIGFbaSAqIDggKyA0XSA9IGJbaSAqIDggKyAzN10g KyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICogOCArIDM3XSAr IDY7DQo+ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgMzddICsg NzsNCj4gKyAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAqIDggKyAzN10gKyAz Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJcLlZFQ19QRVJNIiAxICJvcHRpbWl6ZWQi IH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwLTMuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscC0zLmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXggMDAw MDAwMDAwMDAuLjczOTYyMDU1YjAzDQo+IC0tLSAvZGV2L251bGwNCj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3BhcnRpYWwvc2xwLTMuYw0KPiBAQCAtMCwwICsxLDIyIEBADQo+ICsvKiB7 IGRnLWRvIGNvbXBpbGUgfSAqLw0KPiArLyogeyBkZy1hZGRpdGlvbmFsLW9w dGlvbnMgIi1tYXJjaD1ydjMyZ2N2IC1tYWJpPWlscDMyZCAtLXBhcmFtIHJp c2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSAtZmR1bXAtdHJlZS1v cHRpbWl6ZWQtZGV0YWlscyIgfSAqLw0KPiArDQo+ICsjaW5jbHVkZSA8c3Rk aW50LWdjYy5oPg0KPiArDQo+ICt2b2lkIF9fYXR0cmlidXRlX18gKChub2lw YSkpDQo+ICtmIChpbnQ4X3QgKnJlc3RyaWN0IGEsIGludDhfdCAqcmVzdHJp Y3QgYiwgaW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwg bjsgKytpKQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAqIDhdID0gYltpICog OCArIDFdICsgMTsNCj4gKyAgICAgIGFbaSAqIDggKyAxXSA9IGJbaSAqIDgg KyA3XSArIDI7DQo+ICsgICAgICBhW2kgKiA4ICsgMl0gPSBiW2kgKiA4ICsg MV0gKyAzOw0KPiArICAgICAgYVtpICogOCArIDNdID0gYltpICogOCArIDdd ICsgNDsNCj4gKyAgICAgIGFbaSAqIDggKyA0XSA9IGJbaSAqIDggKyAxXSAr IDU7DQo+ICsgICAgICBhW2kgKiA4ICsgNV0gPSBiW2kgKiA4ICsgN10gKyA2 Ow0KPiArICAgICAgYVtpICogOCArIDZdID0gYltpICogOCArIDFdICsgNzsN Cj4gKyAgICAgIGFbaSAqIDggKyA3XSA9IGJbaSAqIDggKyA3XSArIDg7DQo+ ICsgICAgfQ0KPiArfQ0KPiArDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10 cmVlLWR1bXAtdGltZXMgIlwuVkVDX1BFUk0iIDEgIm9wdGltaXplZCIgfSB9 ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNC5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xw LTQuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRleCAwMDAwMDAw MDAwMC4uZmEyMTZmYzhjNDANCj4gLS0tIC9kZXYvbnVsbA0KPiArKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHAtNC5jDQo+IEBAIC0wLDAgKzEsMjIgQEANCj4gKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9u cyAiLW1hcmNoPXJ2MzJnY3YgLW1hYmk9aWxwMzJkIC0tcGFyYW0gcmlzY3Yt YXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1mZHVtcC10cmVlLW9wdGlt aXplZC1kZXRhaWxzIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRlIDxzdGRpbnQt Z2NjLmg+DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkN Cj4gK2YgKGludDE2X3QgKnJlc3RyaWN0IGEsIGludDE2X3QgKnJlc3RyaWN0 IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47 ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kg KiA4ICsgMV0gKyAxOw0KPiArICAgICAgYVtpICogOCArIDFdID0gYltpICog OCArIDddICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDgg KyAxXSArIDM7DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsg N10gKyA0Ow0KPiArICAgICAgYVtpICogOCArIDRdID0gYltpICogOCArIDFd ICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyA3XSAr IDY7DQo+ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgMV0gKyA3 Ow0KPiArICAgICAgYVtpICogOCArIDddID0gYltpICogOCArIDddICsgODsN Cj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiXC5WRUNfUEVSTSIgMSAib3B0aW1pemVkIiB9 IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC01LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHAtNS5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwLi44OTllZDllMzEwYg0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9w YXJ0aWFsL3NscC01LmMNCj4gQEAgLTAsMCArMSwyMiBAQA0KPiArLyogeyBk Zy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRp b25zICItbWFyY2g9cnYzMmdjdiAtbWFiaT1pbHAzMmQgLS1wYXJhbSByaXNj di1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUgLWZkdW1wLXRyZWUtb3B0 aW1pemVkLWRldGFpbHMiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGlu dC1nY2MuaD4NCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pcGEp KQ0KPiArZiAoaW50OF90ICpyZXN0cmljdCBhLCBpbnQ4X3QgKnJlc3RyaWN0 IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IG47 ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4ICsgMF0gPSBiW2kg KiA4ICsgMV0gKyAxOw0KPiArICAgICAgYVtpICogOCArIDFdID0gYltpICog OCArIDddICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDgg KyA0XSArIDM7DQo+ICsgICAgICBhW2kgKiA4ICsgM10gPSBiW2kgKiA4ICsg OF0gKyA0Ow0KPiArICAgICAgYVtpICogOCArIDRdID0gYltpICogOCArIDFd ICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyA3XSAr IDY7DQo+ICsgICAgICBhW2kgKiA4ICsgNl0gPSBiW2kgKiA4ICsgNF0gKyA3 Ow0KPiArICAgICAgYVtpICogOCArIDddID0gYltpICogOCArIDhdICsgODsN Cj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAiXC5WRUNfUEVSTSIgMSAib3B0aW1pemVkIiB9 IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscC02LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9z bHAtNi5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAw MDAwMDAwLi5mYjg3Y2MwMGNlYQ0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9w YXJ0aWFsL3NscC02LmMNCj4gQEAgLTAsMCArMSwyMyBAQA0KPiArLyogeyBk Zy1kbyBjb21waWxlIH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRp b25zICItbWFyY2g9cnYzMmdjdiAtbWFiaT1pbHAzMmQgLS1wYXJhbSByaXNj di1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUgLWZkdW1wLXRyZWUtb3B0 aW1pemVkLWRldGFpbHMiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgPHN0ZGlu dC1nY2MuaD4NCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgobm9pcGEp KQ0KPiArZiAodWludDhfdCAqcmVzdHJpY3QgYSwgdWludDhfdCAqcmVzdHJp Y3QgYiwgaW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50IGkgPSAwOyBpIDwg bjsgKytpKQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAqIDggKyAwXSA9IGJb aSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0gPSBiW2kg KiA4ICsgMl0gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0gYltpICog OCArIDZdICsgODsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJbaSAqIDgg KyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4ICsg M10gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICogOCArIDRd ICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDggKyA1XSAr IDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsgMF0gKyAz Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiArLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJcLlZFQ19QRVJNIiAxICJvcHRpbWl6ZWQi IH0gfSAqLw0KPiArDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHAtNy5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwLTcuYw0KPiBuZXcgZmlsZSBtb2RlIDEwMDY0NA0KPiBpbmRl eCAwMDAwMDAwMDAwMC4uM2RkNzQ0YjU4NmUNCj4gLS0tIC9kZXYvbnVsbA0K PiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvcGFydGlhbC9zbHAtNy5jDQo+IEBAIC0wLDAgKzEsMTUgQEANCj4g Ky8qIHsgZGctZG8gY29tcGlsZSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9u YWwtb3B0aW9ucyAiLW1hcmNoPXJ2MzJnY3YgLW1hYmk9aWxwMzJkIC0tcGFy YW0gcmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPXNjYWxhYmxlIC1mZHVtcC10 cmVlLW9wdGltaXplZC1kZXRhaWxzIiB9ICovDQo+ICsNCj4gKyNpbmNsdWRl IDxzdGRpbnQtZ2NjLmg+DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAo KG5vaXBhKSkNCj4gK2YgKGZsb2F0ICpfX3Jlc3RyaWN0IGYsIGRvdWJsZSAq X19yZXN0cmljdCBkLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgZltpICogMiAr IDBdID0gMTsNCj4gKyAgICAgIGZbaSAqIDIgKyAxXSA9IDI7DQo+ICsgICAg ICBkW2ldID0gMzsNCj4gKyAgICB9DQo+ICt9DQo+IGRpZmYgLS1naXQgYS9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvcGFy dGlhbC9zbHBfcnVuLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMS5jDQo+IG5ldyBm aWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi4xNmYwNzhh MDQzMw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4t MS5jDQo+IEBAIC0wLDAgKzEsNjYgQEANCj4gKy8qIHsgZGctZG8gcnVuIHsg dGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICovDQo+ICsvKiB7IGRnLWFk ZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZl cmVuY2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUgInNscC0x LmMiDQo+ICsNCj4gKyNkZWZpbmUgTElNSVQgMTI4DQo+ICt2b2lkIF9fYXR0 cmlidXRlX18gKChvcHRpbWl6ZSAoMCkpKQ0KPiArZl9nb2xkZW4gKGludDhf dCAqcmVzdHJpY3QgYSwgaW50OF90ICpyZXN0cmljdCBiLCBpbnQgbikNCj4g K3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBuOyArK2kpDQo+ICsgICAg ew0KPiArICAgICAgYVtpICogOCArIDBdID0gYltpICogOCArIDM3XSArIDE7 DQo+ICsgICAgICBhW2kgKiA4ICsgMV0gPSBiW2kgKiA4ICsgMzddICsgMjsN Cj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAqIDggKyAzN10gKyA4Ow0K PiArICAgICAgYVtpICogOCArIDNdID0gYltpICogOCArIDM3XSArIDQ7DQo+ ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4ICsgMzddICsgNTsNCj4g KyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDggKyAzN10gKyA2Ow0KPiAr ICAgICAgYVtpICogOCArIDZdID0gYltpICogOCArIDM3XSArIDc7DQo+ICsg ICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsgMzddICsgMzsNCj4gKyAg ICB9DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArbWFpbiAodm9pZCkNCj4gK3sN Cj4gKyNkZWZpbmUgUlVOKE5VTSkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg IGludDhfdCBhXyMjTlVNW05VTSAqIDggKyA4XSA9IHswfTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBpbnQ4 X3QgYV9nb2xkZW5fIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgaW50OF90IGJf IyNOVU1bTlVNICogOCArIDM3XSA9IHswfTsgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAw OyBpIDwgTlVNICogOCArIDM3OyBpKyspICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChpICUgTlVNID09IDApICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpICsgTlVNKSAlIExJTUlU OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArIGJf IyNOVU1baV0gPSAoaSAtIE5VTSkgJSAoLUxJTUlUKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZiAoYV8jI05VTSwgYl8jI05V TSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgIGZfZ29sZGVuIChhX2dvbGRlbl8jI05V TSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0gMDsgaSA8IE5VTSAqIDgg KyA4OyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIFwNCj4gKyAgICB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgICBpZiAoYV8jI05VTVtpXSAhPSBhX2dvbGRlbl8jI05VTVtp XSkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr IF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIH0NCj4gKw0K PiArICBSVU4gKDMpOw0KPiArICBSVU4gKDUpOw0KPiArICBSVU4gKDE1KTsN Cj4gKyAgUlVOICgxNik7DQo+ICsgIFJVTiAoMTcpOw0KPiArICBSVU4gKDMx KTsNCj4gKyAgUlVOICgzMik7DQo+ICsgIFJVTiAoMzMpOw0KPiArICBSVU4g KDYzKTsNCj4gKyAgUlVOICg2NCk7DQo+ICsgIFJVTiAoNjUpOw0KPiArICBS VU4gKDEyNyk7DQo+ICsgIFJVTiAoMTI4KTsNCj4gKyAgUlVOICgxMjkpOw0K PiArICBSVU4gKDIzOSk7DQo+ICsgIFJVTiAoMzU5KTsNCj4gKyAgUlVOICg0 OTgpOw0KPiArICBSVU4gKDc5OSk7DQo+ICsgIFJVTiAoOTc3KTsNCj4gKyAg UlVOICg1Nzg5KTsNCj4gKyAgcmV0dXJuIDA7DQo+ICt9DQo+IGRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvcGFydGlhbC9zbHBfcnVuLTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMi5jDQo+ IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4IDAwMDAwMDAwMDAwLi40 MWY2ODhmNjI4Yw0KPiAtLS0gL2Rldi9udWxsDQo+ICsrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3Ns cF9ydW4tMi5jDQo+IEBAIC0wLDAgKzEsNjcgQEANCj4gKy8qIHsgZGctZG8g cnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0gfSB9ICovDQo+ICsvKiB7 IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVj LXByZWZlcmVuY2U9c2NhbGFibGUiIH0gKi8NCj4gKw0KPiArI2luY2x1ZGUg InNscC0yLmMiDQo+ICsNCj4gKyNkZWZpbmUgTElNSVQgMzI3NjcNCj4gKw0K PiArdm9pZCBfX2F0dHJpYnV0ZV9fICgob3B0aW1pemUgKDApKSkNCj4gK2Zf Z29sZGVuIChpbnQxNl90ICpyZXN0cmljdCBhLCBpbnQxNl90ICpyZXN0cmlj dCBiLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBu OyArK2kpDQo+ICsgICAgew0KPiArICAgICAgYVtpICogOCArIDBdID0gYltp ICogOCArIDM3XSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0gPSBiW2kg KiA4ICsgMzddICsgMjsNCj4gKyAgICAgIGFbaSAqIDggKyAyXSA9IGJbaSAq IDggKyAzN10gKyA4Ow0KPiArICAgICAgYVtpICogOCArIDNdID0gYltpICog OCArIDM3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kgKiA4 ICsgMzddICsgNTsNCj4gKyAgICAgIGFbaSAqIDggKyA1XSA9IGJbaSAqIDgg KyAzN10gKyA2Ow0KPiArICAgICAgYVtpICogOCArIDZdID0gYltpICogOCAr IDM3XSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsg MzddICsgMzsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gK2ludA0KPiArbWFp biAodm9pZCkNCj4gK3sNCj4gKyNkZWZpbmUgUlVOKE5VTSkgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIGludDE2X3QgYV8jI05VTVtOVU0gKiA4ICsgOF0g PSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICBpbnQxNl90IGFfZ29sZGVuXyMjTlVNW05VTSAqIDggKyA4 XSA9IHswfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgaW50MTZfdCBiXyMjTlVNW05VTSAqIDggKyAzN10gPSB7MH07ICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg IGZvciAoaW50IGkgPSAwOyBpIDwgTlVNICogOCArIDM3OyBpKyspICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChp ICUgTlVNID09IDApICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChp ICsgTlVNKSAlIExJTUlUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgICAgICBlbHNlICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArIGJfIyNOVU1baV0gPSAoaSAtIE5VTSkgJSAoLUxJTUlU KTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICAgIH0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZiAo YV8jI05VTSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZfZ29sZGVu IChhX2dvbGRlbl8jI05VTSwgYl8jI05VTSwgTlVNKTsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmb3IgKGludCBpID0g MDsgaSA8IE5VTSAqIDggKyA4OyBpKyspICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICB7ICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgICAgICBpZiAoYV8jI05VTVtpXSAhPSBh X2dvbGRlbl8jI05VTVtpXSkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgXA0KPiArIF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICAgIH0NCj4gKw0KPiArICBSVU4gKDMpOw0KPiArICBSVU4gKDUpOw0K PiArICBSVU4gKDE1KTsNCj4gKyAgUlVOICgxNik7DQo+ICsgIFJVTiAoMTcp Ow0KPiArICBSVU4gKDMxKTsNCj4gKyAgUlVOICgzMik7DQo+ICsgIFJVTiAo MzMpOw0KPiArICBSVU4gKDYzKTsNCj4gKyAgUlVOICg2NCk7DQo+ICsgIFJV TiAoNjUpOw0KPiArICBSVU4gKDEyNyk7DQo+ICsgIFJVTiAoMTI4KTsNCj4g KyAgUlVOICgxMjkpOw0KPiArICBSVU4gKDIzOSk7DQo+ICsgIFJVTiAoMzU5 KTsNCj4gKyAgUlVOICg0OTgpOw0KPiArICBSVU4gKDc5OSk7DQo+ICsgIFJV TiAoOTc3KTsNCj4gKyAgUlVOICg1Nzg5KTsNCj4gKyAgcmV0dXJuIDA7DQo+ ICt9DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvcGFydGlhbC9zbHBfcnVuLTMuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFs L3NscF9ydW4tMy5jDQo+IG5ldyBmaWxlIG1vZGUgMTAwNjQ0DQo+IGluZGV4 IDAwMDAwMDAwMDAwLi4zMDk5NmNiMmM2ZQ0KPiAtLS0gL2Rldi9udWxsDQo+ ICsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0 b3ZlYy9wYXJ0aWFsL3NscF9ydW4tMy5jDQo+IEBAIC0wLDAgKzEsNjcgQEAN Cj4gKy8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IHsgcmlzY3ZfdmVjdG9yIH0g fSB9ICovDQo+ICsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLS1wYXJh bSByaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9c2NhbGFibGUiIH0gKi8NCj4g Kw0KPiArI2luY2x1ZGUgInNscC0zLmMiDQo+ICsNCj4gKyNkZWZpbmUgTElN SVQgMTI4DQo+ICsNCj4gK3ZvaWQgX19hdHRyaWJ1dGVfXyAoKG9wdGltaXpl ICgwKSkpDQo+ICtmX2dvbGRlbiAoaW50OF90ICpyZXN0cmljdCBhLCBpbnQ4 X3QgKnJlc3RyaWN0IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGludCBp ID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kgKiA4 XSA9IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsgMV0g PSBiW2kgKiA4ICsgN10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJdID0g YltpICogOCArIDFdICsgMzsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9IGJb aSAqIDggKyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBiW2kg KiA4ICsgMV0gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltpICog OCArIDddICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAqIDgg KyAxXSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4ICsg N10gKyA4Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50DQo+ICttYWlu ICh2b2lkKQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIFwNCj4gKyAgaW50OF90IGFfIyNOVU1bTlVNICogOCArIDhdID0g ezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgIGludDhfdCBhX2dvbGRlbl8jI05VTVtOVU0gKiA4ICsgOF0g PSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICBpbnQ4X3QgYl8jI05VTVtOVU0gKiA4ICsgOF0gPSB7MH07ICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg Zm9yIChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgODsgaSsrKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAgeyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGkg JSBOVU0gPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVNW2ldID0gKGkg KyBOVU0pICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAlICgtTElNSVQp OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBmIChh XyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xkZW4g KGFfZ29sZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkgPSAw OyBpIDwgTlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2ldICE9IGFf Z29sZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJVTiAoNSk7DQo+ ICsgIFJVTiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAgUlVOICgxNyk7 DQo+ICsgIFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4gKyAgUlVOICgz Myk7DQo+ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsNCj4gKyAgUlVO ICg2NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgxMjgpOw0KPiAr ICBSVU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAgUlVOICgzNTkp Ow0KPiArICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsNCj4gKyAgUlVO ICg5NzcpOw0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1cm4gMDsNCj4g K30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRpYWwv c2xwX3J1bi00LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5kZXgg MDAwMDAwMDAwMDAuLjNkNDNlZjA4OTBjDQo+IC0tLSAvZGV2L251bGwNCj4g KysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRv dmVjL3BhcnRpYWwvc2xwX3J1bi00LmMNCj4gQEAgLTAsMCArMSw2NyBAQA0K PiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9 IH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBhcmFt IHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIgfSAqLw0KPiAr DQo+ICsjaW5jbHVkZSAic2xwLTQuYyINCj4gKw0KPiArI2RlZmluZSBMSU1J VCAzMjc2Nw0KPiArDQo+ICt2b2lkIF9fYXR0cmlidXRlX18gKChvcHRpbWl6 ZSAoMCkpKQ0KPiArZl9nb2xkZW4gKGludDE2X3QgKnJlc3RyaWN0IGEsIGlu dDE2X3QgKnJlc3RyaWN0IGIsIGludCBuKQ0KPiArew0KPiArICBmb3IgKGlu dCBpID0gMDsgaSA8IG47ICsraSkNCj4gKyAgICB7DQo+ICsgICAgICBhW2kg KiA4XSA9IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4ICsg MV0gPSBiW2kgKiA4ICsgN10gKyAyOw0KPiArICAgICAgYVtpICogOCArIDJd ID0gYltpICogOCArIDFdICsgMzsNCj4gKyAgICAgIGFbaSAqIDggKyAzXSA9 IGJbaSAqIDggKyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0gPSBi W2kgKiA4ICsgMV0gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0gYltp ICogOCArIDddICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJbaSAq IDggKyAxXSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kgKiA4 ICsgN10gKyA4Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50DQo+ICtt YWluICh2b2lkKQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgaW50MTZfdCBhXyMjTlVNW05VTSAqIDggKyA4 XSA9IHswfTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgIGludDE2X3QgYV9nb2xkZW5fIyNOVU1bTlVNICogOCAr IDhdID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg XA0KPiArICBpbnQxNl90IGJfIyNOVU1bTlVNICogOCArIDhdID0gezB9OyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4g KyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgODsgaSsrKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgICAg eyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYg KGkgJSBOVU0gPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVNW2ldID0g KGkgKyBOVU0pICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAlICgtTElN SVQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBm IChhXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xk ZW4gKGFfZ29sZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgTlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2ldICE9 IGFfZ29sZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJVTiAoNSk7 DQo+ICsgIFJVTiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAgUlVOICgx Nyk7DQo+ICsgIFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4gKyAgUlVO ICgzMyk7DQo+ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsNCj4gKyAg UlVOICg2NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgxMjgpOw0K PiArICBSVU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAgUlVOICgz NTkpOw0KPiArICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsNCj4gKyAg UlVOICg5NzcpOw0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1cm4gMDsN Cj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNS5jIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3BhcnRp YWwvc2xwX3J1bi01LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4gaW5k ZXggMDAwMDAwMDAwMDAuLjgxNDMwOGJkN2FmDQo+IC0tLSAvZGV2L251bGwN Cj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3BhcnRpYWwvc2xwX3J1bi01LmMNCj4gQEAgLTAsMCArMSw2NyBA QA0KPiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3Ig fSB9IH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItLXBh cmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIgfSAqLw0K PiArDQo+ICsjaW5jbHVkZSAic2xwLTUuYyINCj4gKw0KPiArI2RlZmluZSBM SU1JVCAxMjgNCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgob3B0aW1p emUgKDApKSkNCj4gK2ZfZ29sZGVuIChpbnQ4X3QgKnJlc3RyaWN0IGEsIGlu dDhfdCAqcmVzdHJpY3QgYiwgaW50IG4pDQo+ICt7DQo+ICsgIGZvciAoaW50 IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHsNCj4gKyAgICAgIGFbaSAq IDggKyAwXSA9IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kgKiA4 ICsgMV0gPSBiW2kgKiA4ICsgN10gKyAyOw0KPiArICAgICAgYVtpICogOCAr IDJdID0gYltpICogOCArIDRdICsgMzsNCj4gKyAgICAgIGFbaSAqIDggKyAz XSA9IGJbaSAqIDggKyA4XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsgNF0g PSBiW2kgKiA4ICsgMV0gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVdID0g YltpICogOCArIDddICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9IGJb aSAqIDggKyA0XSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBiW2kg KiA4ICsgOF0gKyA4Ow0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50DQo+ ICttYWluICh2b2lkKQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIFwNCj4gKyAgaW50OF90IGFfIyNOVU1bTlVNICogOCAr IDhdID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBcDQo+ICsgIGludDhfdCBhX2dvbGRlbl8jI05VTVtOVU0gKiA4 ICsgOF0gPSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgXA0KPiArICBpbnQ4X3QgYl8jI05VTVtOVU0gKiA4ICsgOV0gPSB7MH07 ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwN Cj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgOTsgaSsrKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsg ICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAg aWYgKGkgJSBOVU0gPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVNW2ld ID0gKGkgKyBOVU0pICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAlICgt TElNSVQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiAr ICBmIChhXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9n b2xkZW4gKGFfZ29sZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50 IGkgPSAwOyBpIDwgTlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2ld ICE9IGFfZ29sZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJVTiAo NSk7DQo+ICsgIFJVTiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAgUlVO ICgxNyk7DQo+ICsgIFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4gKyAg UlVOICgzMyk7DQo+ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsNCj4g KyAgUlVOICg2NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgxMjgp Ow0KPiArICBSVU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAgUlVO ICgzNTkpOw0KPiArICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsNCj4g KyAgUlVOICg5NzcpOw0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1cm4g MDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNi5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Bh cnRpYWwvc2xwX3J1bi02LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQNCj4g aW5kZXggMDAwMDAwMDAwMDAuLmUzMTdlZWFjMmYyDQo+IC0tLSAvZGV2L251 bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi02LmMNCj4gQEAgLTAsMCArMSw2 NyBAQA0KPiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0 b3IgfSB9IH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICIt LXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIgfSAq Lw0KPiArDQo+ICsjaW5jbHVkZSAic2xwLTYuYyINCj4gKw0KPiArI2RlZmlu ZSBMSU1JVCAxMjgNCj4gKw0KPiArdm9pZCBfX2F0dHJpYnV0ZV9fICgob3B0 aW1pemUgKDApKSkNCj4gK2ZfZ29sZGVuIChpbnQ4X3QgKnJlc3RyaWN0IGEs IGludDhfdCAqcmVzdHJpY3QgYiwgaW50IG4pDQo+ICt7DQo+ICsgIGZvciAo aW50IGkgPSAwOyBpIDwgbjsgKytpKQ0KPiArICAgIHsNCj4gKyAgICAgIGFb aSAqIDggKyAwXSA9IGJbaSAqIDggKyAxXSArIDE7DQo+ICsgICAgICBhW2kg KiA4ICsgMV0gPSBiW2kgKiA4ICsgMl0gKyAyOw0KPiArICAgICAgYVtpICog OCArIDJdID0gYltpICogOCArIDZdICsgODsNCj4gKyAgICAgIGFbaSAqIDgg KyAzXSA9IGJbaSAqIDggKyA3XSArIDQ7DQo+ICsgICAgICBhW2kgKiA4ICsg NF0gPSBiW2kgKiA4ICsgM10gKyA1Ow0KPiArICAgICAgYVtpICogOCArIDVd ID0gYltpICogOCArIDRdICsgNjsNCj4gKyAgICAgIGFbaSAqIDggKyA2XSA9 IGJbaSAqIDggKyA1XSArIDc7DQo+ICsgICAgICBhW2kgKiA4ICsgN10gPSBi W2kgKiA4ICsgMF0gKyAzOw0KPiArICAgIH0NCj4gK30NCj4gKw0KPiAraW50 DQo+ICttYWluICh2b2lkKQ0KPiArew0KPiArI2RlZmluZSBSVU4oTlVNKSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgaW50OF90IGFfIyNOVU1bTlVNICog OCArIDhdID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgIGludDhfdCBhX2dvbGRlbl8jI05VTVtOVU0g KiA4ICsgOF0gPSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBpbnQ4X3QgYl8jI05VTVtOVU0gKiA4ICsgOV0gPSB7 MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBOVU0gKiA4ICsgOTsgaSsr KSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAg ICAgaWYgKGkgJSBOVU0gPT0gMCkgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyBiXyMjTlVN W2ldID0gKGkgKyBOVU0pICUgTElNSVQ7ICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGVsc2UgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBcDQo+ICsgYl8jI05VTVtpXSA9IChpIC0gTlVNKSAl ICgtTElNSVQpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBcDQo+ICsgICAgfSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0K PiArICBmIChhXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAg Zl9nb2xkZW4gKGFfZ29sZGVuXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAo aW50IGkgPSAwOyBpIDwgTlVNICogOCArIDg7IGkrKykgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVN W2ldICE9IGFfZ29sZGVuXyMjTlVNW2ldKSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBcDQo+ICsgICAgfQ0KPiArDQo+ICsgIFJVTiAoMyk7DQo+ICsgIFJV TiAoNSk7DQo+ICsgIFJVTiAoMTUpOw0KPiArICBSVU4gKDE2KTsNCj4gKyAg UlVOICgxNyk7DQo+ICsgIFJVTiAoMzEpOw0KPiArICBSVU4gKDMyKTsNCj4g KyAgUlVOICgzMyk7DQo+ICsgIFJVTiAoNjMpOw0KPiArICBSVU4gKDY0KTsN Cj4gKyAgUlVOICg2NSk7DQo+ICsgIFJVTiAoMTI3KTsNCj4gKyAgUlVOICgx MjgpOw0KPiArICBSVU4gKDEyOSk7DQo+ICsgIFJVTiAoMjM5KTsNCj4gKyAg UlVOICgzNTkpOw0KPiArICBSVU4gKDQ5OCk7DQo+ICsgIFJVTiAoNzk5KTsN Cj4gKyAgUlVOICg5NzcpOw0KPiArICBSVU4gKDU3ODkpOw0KPiArICByZXR1 cm4gMDsNCj4gK30NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9wYXJ0aWFsL3NscF9ydW4tNy5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3BhcnRpYWwvc2xwX3J1bi03LmMNCj4gbmV3IGZpbGUgbW9kZSAxMDA2NDQN Cj4gaW5kZXggMDAwMDAwMDAwMDAuLmE4ZTQ3ODE5ODhlDQo+IC0tLSAvZGV2 L251bGwNCj4gKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3BhcnRpYWwvc2xwX3J1bi03LmMNCj4gQEAgLTAsMCAr MSw1OCBAQA0KPiArLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92 ZWN0b3IgfSB9IH0gKi8NCj4gKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItLXBhcmFtIHJpc2N2LWF1dG92ZWMtcHJlZmVyZW5jZT1zY2FsYWJsZSIg fSAqLw0KPiArDQo+ICsjaW5jbHVkZSAic2xwLTcuYyINCj4gKw0KPiArdm9p ZA0KPiArZl9nb2xkZW4gKGZsb2F0ICpfX3Jlc3RyaWN0IGYsIGRvdWJsZSAq X19yZXN0cmljdCBkLCBpbnQgbikNCj4gK3sNCj4gKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBuOyArK2kpDQo+ICsgICAgew0KPiArICAgICAgZltpICogMiAr IDBdID0gMTsNCj4gKyAgICAgIGZbaSAqIDIgKyAxXSA9IDI7DQo+ICsgICAg ICBkW2ldID0gMzsNCj4gKyAgICB9DQo+ICt9DQo+ICsNCj4gK2ludA0KPiAr bWFpbiAodm9pZCkNCj4gK3sNCj4gKyNkZWZpbmUgUlVOKE5VTSkgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgIGZsb2F0IGFfIyNOVU1bTlVNICogMiArIDJd ID0gezB9OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgXA0KPiArICBmbG9hdCBhX2dvbGRlbl8jI05VTVtOVU0gKiAyICsg Ml0gPSB7MH07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IFwNCj4gKyAgZG91YmxlIGJfIyNOVU1bTlVNXSA9IHswfTsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ ICsgIGRvdWJsZSBiX2dvbGRlbl8jI05VTVtOVU1dID0gezB9OyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICBm IChhXyMjTlVNLCBiXyMjTlVNLCBOVU0pOyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyAgZl9nb2xk ZW4gKGFfZ29sZGVuXyMjTlVNLCBiX2dvbGRlbl8jI05VTSwgTlVNKTsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBcDQo+ICsgIGZvciAoaW50IGkg PSAwOyBpIDwgTlVNOyBpKyspICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgIHsgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFwNCj4gKyAgICAgIGlmIChhXyMjTlVNW2kgKiAy ICsgMF0gIT0gYV9nb2xkZW5fIyNOVU1baSAqIDIgKyAwXSkgICAgICAgICAg ICAgICAgICAgICBcDQo+ICsgX19idWlsdGluX2Fib3J0ICgpOyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBc DQo+ICsgICAgICBpZiAoYV8jI05VTVtpICogMiArIDFdICE9IGFfZ29sZGVu XyMjTlVNW2kgKiAyICsgMV0pICAgICAgICAgICAgICAgICAgICAgXA0KPiAr IF9fYnVpbHRpbl9hYm9ydCAoKTsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgXA0KPiArICAgICAgaWYgKGJf IyNOVU1baV0gIT0gYl9nb2xkZW5fIyNOVU1baV0pICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIFwNCj4gKyBfX2J1aWx0aW5fYWJvcnQg KCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIFwNCj4gKyAgICB9DQo+ICsNCj4gKyAgUlVOICgzKTsNCj4g KyAgUlVOICg1KTsNCj4gKyAgUlVOICgxNSk7DQo+ICsgIFJVTiAoMTYpOw0K PiArICBSVU4gKDE3KTsNCj4gKyAgUlVOICgzMSk7DQo+ICsgIFJVTiAoMzIp Ow0KPiArICBSVU4gKDMzKTsNCj4gKyAgUlVOICg2Myk7DQo+ICsgIFJVTiAo NjQpOw0KPiArICBSVU4gKDY1KTsNCj4gKyAgUlVOICgxMjcpOw0KPiArICBS VU4gKDEyOCk7DQo+ICsgIFJVTiAoMTI5KTsNCj4gKyAgUlVOICgyMzkpOw0K PiArICBSVU4gKDM1OSk7DQo+ICsgIFJVTiAoNDk4KTsNCj4gKyAgUlVOICg3 OTkpOw0KPiArICBSVU4gKDk3Nyk7DQo+ICsgIFJVTiAoNTc4OSk7DQo+ICsg IHJldHVybiAwOw0KPiArfQ0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3NjYWxhYmxlLTEuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9z Y2FsYWJsZS0xLmMNCj4gaW5kZXggNTAwYjBhZGNlNjYuLjNjMDNhODczNzdk IDEwMDY0NA0KPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvc2NhbGFibGUtMS5jDQo+ICsrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy9zY2FsYWJsZS0x LmMNCj4gQEAgLTE0LDQgKzE0LDQgQEAgZiAoaW50MzJfdCAqX19yZXN0cmlj dCBmLCBpbnQzMl90ICpfX3Jlc3RyaWN0IGQsIGludCBuKQ0KPiAgICAgIH0N Cj4gfQ0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDAgInZlY3QiIH0g fSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVz ICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDEgInZlY3QiIH0g fSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9hdXRvdmVjL3YtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3YtMS5jDQo+IGluZGV4IDM4M2M4 MmEzYjdjLi5lNjhkMDVmNWY0OCAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3YtMS5jDQo+ICsr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy92LTEuYw0KPiBAQCAtMyw5ICszLDQgQEANCj4gI2luY2x1ZGUgInRlbXBs YXRlLTEuaCINCj4gLS8qIEN1cnJlbnRseSwgd2UgZG9uJ3Qgc3VwcG9ydCBT TFAgYXV0by12ZWN0b3JpemF0aW9uIGZvciBWTEEuIEJ1dCBpdCdzDQo+IC0g ICBuZWNlc3NhcnkgdGhhdCB3ZSBhZGQgdGhpcyB0ZXN0Y2FzZSBoZXJlIHRv IG1ha2Ugc3VyZSBzdWNoIHVuc3VwcG9ydGVkIFNMUA0KPiAtICAgYXV0by12 ZWN0b3JpemF0aW9uIHdpbGwgbm90IGNhdXNlIGFuIElDRS4gV2Ugd2lsbCBl bmFibGUgInZlY3QiIGNoZWNraW5nIHdoZW4NCj4gLSAgIHdlIHN1cHBvcnQg U0xQIGF1dG8tdmVjdG9yaXphdGlvbiBmb3IgVkxBIGluIHRoZSBmdXR1cmUu ICAqLw0KPiAtDQo+IC0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMCAidmVj dCIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAt dGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgNSAidmVj dCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlMzJmX3p2bDEyOGItMS5jIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2 ZTMyZl96dmwxMjhiLTEuYw0KPiBpbmRleCAyM2NjMWM4NjUxZi4uZWNmZGE3 OWUxOWEgMTAwNjQ0DQo+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy96dmUzMmZfenZsMTI4Yi0xLmMNCj4gKysr IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3p2ZTMyZl96dmwxMjhiLTEuYw0KPiBAQCAtMyw0ICszLDQgQEANCj4gI2lu Y2x1ZGUgInRlbXBsYXRlLTEuaCINCj4gLS8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0 aW9uIiAwICJ2ZWN0IiB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2Fu LXRyZWUtZHVtcC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0 aW9uIiAzICJ2ZWN0IiB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmUzMnhfenZs MTI4Yi0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvenZlMzJ4X3p2bDEyOGItMS5jDQo+IGluZGV4IDRmMTMwZjAy ZjY3Li4xMzk0ZjA4ZjJiOSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTMyeF96dmwxMjhi LTEuYw0KPiArKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvenZlMzJ4X3p2bDEyOGItMS5jDQo+IEBAIC0zLDQgKzMs NCBAQA0KPiAjaW5jbHVkZSAidGVtcGxhdGUtMS5oIg0KPiAtLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9v cHMgaW4gZnVuY3Rpb24iIDAgInZlY3QiIH0gfSAqLw0KPiArLyogeyBkZy1m aW5hbCB7IHNjYW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9v cHMgaW4gZnVuY3Rpb24iIDIgInZlY3QiIH0gfSAqLw0KPiBkaWZmIC0tZ2l0 IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVj L3p2ZTY0ZC0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvenZlNjRkLTEuYw0KPiBpbmRleCA4MjNkNTFhMDNjYi4u YzVlODk5OTZmYTQgMTAwNjQ0DQo+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NGQtMS5jDQo+ICsrKyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96 dmU2NGQtMS5jDQo+IEBAIC0zLDQgKzMsNCBAQA0KPiAjaW5jbHVkZSAidGVt cGxhdGUtMS5oIg0KPiAtLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDIgInZl Y3QiIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNjYW4tdHJlZS1kdW1w LXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVuY3Rpb24iIDMgInZl Y3QiIH0gfSAqLw0KPiBkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0ZF96dmwxMjhiLTEuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96 dmU2NGRfenZsMTI4Yi0xLmMNCj4gaW5kZXggNWVhZDIyNzQ2ZDMuLjZiMzIw Y2E2ZjM4IDEwMDY0NA0KPiAtLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRkX3p2bDEyOGItMS5jDQo+ICsr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy96dmU2NGRfenZsMTI4Yi0xLmMNCj4gQEAgLTMsNCArMyw0IEBADQo+ICNp bmNsdWRlICJ0ZW1wbGF0ZS0xLmgiDQo+IC0vKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5j dGlvbiIgMCAidmVjdCIgfSB9ICovDQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nh bi10cmVlLWR1bXAtdGltZXMgInZlY3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5j dGlvbiIgNSAidmVjdCIgfSB9ICovDQo+IGRpZmYgLS1naXQgYS9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvenZlNjRmLTEu YyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy96dmU2NGYtMS5jDQo+IGluZGV4IGUwM2QxYjQ0Y2E2Li42YzJhMDAyZGU5 YyAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3p2ZTY0Zi0xLmMNCj4gKysrIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0Zi0xLmMN Cj4gQEAgLTMsNCArMyw0IEBADQo+ICNpbmNsdWRlICJ0ZW1wbGF0ZS0xLmgi DQo+IC0vKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZl Y3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMiAidmVjdCIgfSB9ICov DQo+ICsvKiB7IGRnLWZpbmFsIHsgc2Nhbi10cmVlLWR1bXAtdGltZXMgInZl Y3Rvcml6ZWQgMSBsb29wcyBpbiBmdW5jdGlvbiIgMyAidmVjdCIgfSB9ICov DQo+IGRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvenZlNjRmX3p2bDEyOGItMS5jIGIvZ2NjL3Rlc3Rz dWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0Zl96dmwx MjhiLTEuYw0KPiBpbmRleCA1YmIyZDlkOTZmYS4uYWUzZjA2NjQ3N2MgMTAw NjQ0DQo+IC0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy96dmU2NGZfenZsMTI4Yi0xLmMNCj4gKysrIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0Zl96 dmwxMjhiLTEuYw0KPiBAQCAtMyw0ICszLDQgQEANCj4gI2luY2x1ZGUgInRl bXBsYXRlLTEuaCINCj4gLS8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiAwICJ2 ZWN0IiB9IH0gKi8NCj4gKy8qIHsgZGctZmluYWwgeyBzY2FuLXRyZWUtZHVt cC10aW1lcyAidmVjdG9yaXplZCAxIGxvb3BzIGluIGZ1bmN0aW9uIiA0ICJ2 ZWN0IiB9IH0gKi8NCj4gZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy96dmU2NHhfenZsMTI4Yi0xLmMg Yi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv enZlNjR4X3p2bDEyOGItMS5jDQo+IGluZGV4IDcxODIwZWNlNGIyLi5mYzY3 NmEzODY1ZSAxMDA2NDQNCj4gLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9hdXRvdmVjL3p2ZTY0eF96dmwxMjhiLTEuYw0KPiAr KysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvenZlNjR4X3p2bDEyOGItMS5jDQo+IEBAIC0zLDQgKzMsNCBAQA0KPiAj aW5jbHVkZSAidGVtcGxhdGUtMS5oIg0KPiAtLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVu Y3Rpb24iIDAgInZlY3QiIH0gfSAqLw0KPiArLyogeyBkZy1maW5hbCB7IHNj YW4tdHJlZS1kdW1wLXRpbWVzICJ2ZWN0b3JpemVkIDEgbG9vcHMgaW4gZnVu Y3Rpb24iIDMgInZlY3QiIH0gfSAqLw0KPiAtLQ0KPiAyLjM2LjENCj4NCiAN Cg== ------=_001_NextPart841775675130_=------