From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbgeu2.qq.com (smtpbgeu2.qq.com [18.194.254.142]) by sourceware.org (Postfix) with ESMTPS id 64BA83858D37 for ; Sun, 14 May 2023 22:44:39 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 64BA83858D37 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: bizesmtp76t1684104273tdeh3b4l Received: from TABLET-POE6JQHH ( [115.44.118.116]) by bizesmtp.qq.com (ESMTP) with id ; Mon, 15 May 2023 06:44:32 +0800 (CST) X-QQ-SSF: 01400000000000F0R000000A0000000 X-QQ-FEAT: 5q30pvLz2ifH7ydRfPd/B/OYX4Ax7jeO+w+RdfM+9MVDwqyM+5E2jcdKjxJGf 6apq1x9cBRttfZo3fxJQltpVIFwwDofTt1jLiBV6CcMwDVWfML96rIp9ho0i/s4aJfYi3Ah oOZCh3gPmNTEAPR387Vy299bp7gCB5BLUI9O8GEgOScqFRdTsNXGGvDg63EuypLMM1EKgek Cn7firrnMlwwtRrF0YAMQ/rxj2Jk3f5tg13wV0naY2oCcrT0KTfNI3AQQrDfzJIgij8d2mm VYiAsBRDeG0wqz6NT++o74F+kBLy3DzK0SygQF2AiiR1g1jQgNvC8CW+8PzbK39GA4b8CAr LP5y4IPfZ8Wk1En8L2Fg81yfkUIekp3mAHOQcCC2URWxv7Z7UK25be9UuO8v5xgl/NB690W pkQEsjCuy+c= X-QQ-GoodBg: 2 X-BIZMAIL-ID: 6192801986727524813 Date: Mon, 15 May 2023 06:44:33 +0800 From: =?GB2312?B?1tO+09Xc?= To: =?GB2312?B?1tO+09Xc?= , gcc-patches Cc: kito.cheng , palmer , "Jeff Law" Subject: Re: [PATCH V5] RISC-V: Using merge approach to optimize repeating sequence in vec_init References: <20230513002026.321317-1-juzhe.zhong@rivai.ai> X-Priority: 3 X-GUID: 40B64E5B-A60E-41D1-8A7A-5EDFA762758B X-Has-Attach: no X-Mailer: Foxmail 7.2.23.121[cn] Mime-Version: 1.0 Message-ID: Content-Type: multipart/alternative; boundary="----=_001_NextPart564688871225_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-6.5 required=5.0 tests=BAYES_00,CHARSET_FARAWAY_HEADER,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H2,SCC_10_SHORT_WORD_LINES,SCC_20_SHORT_WORD_LINES,SCC_35_SHORT_WORD_LINES,SCC_5_SHORT_WORD_LINES,SPF_PASS,TXREP,T_SCC_BODY_TEXT_LINE,T_SPF_HELO_TEMPERROR 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_NextPart564688871225_=---- Content-Type: text/plain; charset="GB2312" Content-Transfer-Encoding: base64 UGluZy4gT2sgZm9yIHRydW5rID8NCg0KDQoNCmp1emhlLnpob25nQHJpdmFp LmFpDQogDQpGcm9tOiBqdXpoZS56aG9uZw0KRGF0ZTogMjAyMy0wNS0xMyAw ODoyMA0KVG86IGdjYy1wYXRjaGVzDQpDQzoga2l0by5jaGVuZzsgcGFsbWVy OyBqZWZmcmV5YWxhdzsgSnV6aGUtWmhvbmcNClN1YmplY3Q6IFtQQVRDSCBW NV0gUklTQy1WOiBVc2luZyBtZXJnZSBhcHByb2FjaCB0byBvcHRpbWl6ZSBy ZXBlYXRpbmcgc2VxdWVuY2UgaW4gdmVjX2luaXQNCkZyb206IEp1emhlLVpo b25nIDxqdXpoZS56aG9uZ0ByaXZhaS5haT4NCiANCjEuIFJlbW92ZSBtYWdp YyBudW1iZXIgb2YgVjQNCjIuIFJlbW92ZSB1bm5lY2Vzc2FyeSBnY2NfYXNz ZXJ0DQogDQpDb25zaWRlciB0aGlzIGZvbGxvd2luZyBjYXNlOg0KdHlwZWRl ZiBpbnQ2NF90IHZueDMyZGkgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXpl ICgyNTYpKSk7DQogDQogDQpfX2F0dHJpYnV0ZV9fICgobm9pcGEpKSB2b2lk DQpmX3ZueDMyZGkgKGludDY0X3QgYSwgaW50NjRfdCBiLCBpbnQ2NF90ICpv dXQpDQp7DQogIHZueDMyZGkgdg0KICAgID0ge2EsIGIsIGEsIGIsIGEsIGIs IGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEs IGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGJ9Ow0KICAqKHZueDMy ZGkgKikgb3V0ID0gdjsNCn0NCiANClNpbmNlIHdlIGRvbnQndCBoYXZlIFNF VyA9IDEyOCBpbiB2ZWNfZHVwbGljYXRlLCB3ZSBjYW4ndCBjb21iaW5lIGFi IGludG8gU0VXID0gMTI4IGVsZW1lbnQgYW5kIHRoZW4NCmJyb2FkY2FzdCB0 aGlzIGJpZyBlbGVtZW50Lg0KIA0KVGhpcyBwYXRjaCBpcyBvcHRpbWl6ZSB0 aGUgY2FzZSBhcyBhYm92ZS4NCiANCi1tYXJjaD1ydjY0Z2N2X3p2bDI1NmIg LS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9Zml4ZWQtdmxtYXgN CiANCkJlZm9yZSB0aGlzIHBhdGNoOg0KIA0KLi4NCnZzbGlkZTFkb3duLnZ4 ICh4MzEgdGltZXMpDQouLg0KIA0KQWZ0ZXIgdGhpcyBwYXRjaDoNCmxpIGE1 LC0xNDMxNjU0NDAwDQphZGRpIGE1LGE1LC0xMzY1DQpsaSBhMywtMTQzMTY1 NDQwMA0KYWRkaSBhMyxhMywtMTM2Ng0Kc2xsaSBhNSxhNSwzMg0KYWRkIGE1 LGE1LGEzDQp2c2V0dmxpIGE0LHplcm8sZTY0LG04LHRhLG1hDQp2bXYudi54 IHY4LGEwDQp2bXYucy54IHYwLGE1DQp2bWVyZ2UudnhtIHY4LHY4LGExLHYw DQp2czhyLnYgdjgsMChhMikNCnJldA0KIA0KZ2NjL0NoYW5nZUxvZzoNCiAN CiAgICAgICAgKiBjb25maWcvcmlzY3YvcmlzY3Ytdi5jYyAocnZ2X2J1aWxk ZXI6OmNhbl9kdXBsaWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNlX3ApOiBOZXcg ZnVuY3Rpb24uDQogICAgICAgIChydnZfYnVpbGRlcjo6Z2V0X21lcmdlZF9y ZXBlYXRpbmdfc2VxdWVuY2UpOiBEaXR0by4NCiAgICAgICAgKHJ2dl9idWls ZGVyOjpyZXBlYXRpbmdfc2VxdWVuY2VfdXNlX21lcmdlX3Byb2ZpdGFibGVf cCk6IERpdHRvLg0KICAgICAgICAocnZ2X2J1aWxkZXI6OmdldF9tZXJnZV9t YXNrX2JpdGZpZWxkKTogRGl0dG8uDQogICAgICAgIChlbWl0X3NjYWxhcl9t b3ZlX29wKTogRGl0dG8uDQogICAgICAgIChlbWl0X21lcmdlX29wKTogRGl0 dG8uDQogICAgICAgIChleHBhbmRfdmVjdG9yX2luaXRfbWVyZ2VfcmVwZWF0 aW5nX3NlcXVlbmNlKTogRGl0dG8uDQogICAgICAgIChleHBhbmRfdmVjX2lu aXQpOiBBZGQgbWVyZ2UgYXBwcm9hY2ggZm9yIHJlYXBlYXRpbmcgc2VxdWVu Y2UuDQogDQpnY2MvdGVzdHN1aXRlL0NoYW5nZUxvZzoNCiANCiAgICAgICAg KiBnY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9yZXBl YXQtMTAuYzogTmV3IHRlc3QuDQogICAgICAgICogZ2NjLnRhcmdldC9yaXNj di9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVwZWF0LTExLmM6IE5ldyB0ZXN0 Lg0KICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxz LXZsbWF4L3JlcGVhdC03LmM6IE5ldyB0ZXN0Lg0KICAgICAgICAqIGdjYy50 YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdC04LmM6 IE5ldyB0ZXN0Lg0KICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdmxzLXZsbWF4L3JlcGVhdC05LmM6IE5ldyB0ZXN0Lg0KICAgICAg ICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3Jl cGVhdF9ydW4tMTEuYzogTmV3IHRlc3QuDQogICAgICAgICogZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVwZWF0X3J1bi03LmM6 IE5ldyB0ZXN0Lg0KICAgICAgICAqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdmxzLXZsbWF4L3JlcGVhdF9ydW4tOC5jOiBOZXcgdGVzdC4NCiAN Ci0tLQ0KZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12LmNjICAgICAgICAgICAg ICAgICAgIHwgMjQzICsrKysrKysrKysrKysrKystLQ0KLi4uL3Jpc2N2L3J2 di9hdXRvdmVjL3Zscy12bG1heC9yZXBlYXQtMTAuYyAgIHwgIDE5ICsrDQou Li4vcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdC0xMS5jICAg fCAgMjUgKysNCi4uLi9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVw ZWF0LTcuYyAgICB8ICAyNSArKw0KLi4uL3Jpc2N2L3J2di9hdXRvdmVjL3Zs cy12bG1heC9yZXBlYXQtOC5jICAgIHwgIDE1ICsrDQouLi4vcmlzY3YvcnZ2 L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdC05LmMgICAgfCAgMTYgKysNCi4u Li9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVwZWF0X3J1bi0xMS5jICAgICB8 ICA0NSArKysrDQouLi4vcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdF9y dW4tNy5jICAgICAgfCAgNDUgKysrKw0KLi4uL3J2di9hdXRvdmVjL3Zscy12 bG1heC9yZXBlYXRfcnVuLTguYyAgICAgIHwgIDQxICsrKw0KOSBmaWxlcyBj aGFuZ2VkLCA0NTEgaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pDQpj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9yZXBlYXQtMTAuYw0KY3JlYXRl IG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVwZWF0LTExLmMNCmNyZWF0ZSBtb2Rl IDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1 dG92ZWMvdmxzLXZsbWF4L3JlcGVhdC03LmMNCmNyZWF0ZSBtb2RlIDEwMDY0 NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMv dmxzLXZsbWF4L3JlcGVhdC04LmMNCmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZs bWF4L3JlcGVhdC05LmMNCmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3Jl cGVhdF9ydW4tMTEuYw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3Vp dGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVw ZWF0X3J1bi03LmMNCmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVh dF9ydW4tOC5jDQogDQpkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9y aXNjdi12LmNjIGIvZ2NjL2NvbmZpZy9yaXNjdi9yaXNjdi12LmNjDQppbmRl eCBiOGRjMzMzZjU0ZS4uZDg0NGMzMDUzMjAgMTAwNjQ0DQotLS0gYS9nY2Mv Y29uZmlnL3Jpc2N2L3Jpc2N2LXYuY2MNCisrKyBiL2djYy9jb25maWcvcmlz Y3YvcmlzY3Ytdi5jYw0KQEAgLTcyLDExICs3MiwxNCBAQCBwdWJsaWM6DQog ICB7DQogICAgIGFkZF9pbnB1dF9vcGVyYW5kIChSVlZfVlVOREVGIChtb2Rl KSwgbW9kZSk7DQogICB9DQotICB2b2lkIGFkZF9wb2xpY3lfb3BlcmFuZCAo ZW51bSB0YWlsX3BvbGljeSB2dGEsIGVudW0gbWFza19wb2xpY3kgdm1hKQ0K KyAgdm9pZCBhZGRfcG9saWN5X29wZXJhbmQgKGVudW0gdGFpbF9wb2xpY3kg dnRhKQ0KICAgew0KICAgICBydHggdGFpbF9wb2xpY3lfcnR4ID0gZ2VuX2lu dF9tb2RlICh2dGEsIFBtb2RlKTsNCi0gICAgcnR4IG1hc2tfcG9saWN5X3J0 eCA9IGdlbl9pbnRfbW9kZSAodm1hLCBQbW9kZSk7DQogICAgIGFkZF9pbnB1 dF9vcGVyYW5kICh0YWlsX3BvbGljeV9ydHgsIFBtb2RlKTsNCisgIH0NCisg IHZvaWQgYWRkX3BvbGljeV9vcGVyYW5kIChlbnVtIG1hc2tfcG9saWN5IHZt YSkNCisgIHsNCisgICAgcnR4IG1hc2tfcG9saWN5X3J0eCA9IGdlbl9pbnRf bW9kZSAodm1hLCBQbW9kZSk7DQogICAgIGFkZF9pbnB1dF9vcGVyYW5kICht YXNrX3BvbGljeV9ydHgsIFBtb2RlKTsNCiAgIH0NCiAgIHZvaWQgYWRkX2F2 bF90eXBlX29wZXJhbmQgKGF2bF90eXBlIHR5cGUpDQpAQCAtOTksMjUgKzEw MiwzNiBAQCBwdWJsaWM6DQogICAgIGFkZF92dW5kZWZfb3BlcmFuZCAoZGVz dF9tb2RlKTsNCiAgIH0NCi0gIHZvaWQgc2V0X2xlbl9hbmRfcG9saWN5IChy dHggbGVuLCBib29sIGZvcmNlX3ZsbWF4ID0gZmFsc2UpDQotICAgIHsNCi0g ICAgICBib29sIHZsbWF4X3AgPSBmb3JjZV92bG1heDsNCi0gICAgICBnY2Nf YXNzZXJ0IChoYXNfZGVzdCk7DQorICB2b2lkIHNldF9kZXN0X21lcmdlIChy dHggZGVzdCkNCisgIHsNCisgICAgZGVzdF9tb2RlID0gR0VUX01PREUgKGRl c3QpOw0KKyAgICBoYXNfZGVzdCA9IHRydWU7DQorICAgIGFkZF9vdXRwdXRf b3BlcmFuZCAoZGVzdCwgZGVzdF9tb2RlKTsNCisgICAgYWRkX3Z1bmRlZl9v cGVyYW5kIChkZXN0X21vZGUpOw0KKyAgfQ0KLSAgICAgIGlmICghbGVuKQ0K LSB7DQotICAgdmxtYXhfcCA9IHRydWU7DQotICAgbGVuID0gZ2VuX3JlZ19y dHggKFBtb2RlKTsNCi0gICBlbWl0X3ZsbWF4X3ZzZXR2bCAoZGVzdF9tb2Rl LCBsZW4pOw0KLSB9DQorICB2b2lkIHNldF9sZW5fYW5kX3BvbGljeSAocnR4 IGxlbiwgYm9vbCBmb3JjZV92bG1heCA9IGZhbHNlLCBib29sIHRhX3AgPSB0 cnVlLA0KKyAgICBib29sIG1hX3AgPSB0cnVlKQ0KKyAgew0KKyAgICBib29s IHZsbWF4X3AgPSBmb3JjZV92bG1heDsNCisgICAgZ2NjX2Fzc2VydCAoaGFz X2Rlc3QpOw0KLSAgICAgIGFkZF9pbnB1dF9vcGVyYW5kIChsZW4sIFBtb2Rl KTsNCisgICAgaWYgKCFsZW4pDQorICAgICAgew0KKyB2bG1heF9wID0gdHJ1 ZTsNCisgbGVuID0gZ2VuX3JlZ19ydHggKFBtb2RlKTsNCisgZW1pdF92bG1h eF92c2V0dmwgKGRlc3RfbW9kZSwgbGVuKTsNCisgICAgICB9DQotICAgICAg aWYgKEdFVF9NT0RFX0NMQVNTIChkZXN0X21vZGUpICE9IE1PREVfVkVDVE9S X0JPT0wpDQotIGFkZF9wb2xpY3lfb3BlcmFuZCAoZ2V0X3ByZWZlcl90YWls X3BvbGljeSAoKSwgZ2V0X3ByZWZlcl9tYXNrX3BvbGljeSAoKSk7DQorICAg IGFkZF9pbnB1dF9vcGVyYW5kIChsZW4sIFBtb2RlKTsNCi0gICAgICBhZGRf YXZsX3R5cGVfb3BlcmFuZCAodmxtYXhfcCA/IGF2bF90eXBlOjpWTE1BWCA6 IGF2bF90eXBlOjpOT05WTE1BWCk7DQotICAgIH0NCisgICAgaWYgKHRhX3Ag JiYgR0VUX01PREVfQ0xBU1MgKGRlc3RfbW9kZSkgIT0gTU9ERV9WRUNUT1Jf Qk9PTCkNCisgICAgICBhZGRfcG9saWN5X29wZXJhbmQgKGdldF9wcmVmZXJf dGFpbF9wb2xpY3kgKCkpOw0KKyAgICBpZiAobWFfcCAmJiBHRVRfTU9ERV9D TEFTUyAoZGVzdF9tb2RlKSAhPSBNT0RFX1ZFQ1RPUl9CT09MKQ0KKyAgICAg IGFkZF9wb2xpY3lfb3BlcmFuZCAoZ2V0X3ByZWZlcl9tYXNrX3BvbGljeSAo KSk7DQorDQorICAgIGFkZF9hdmxfdHlwZV9vcGVyYW5kICh2bG1heF9wID8g YXZsX3R5cGU6OlZMTUFYIDogYXZsX3R5cGU6Ok5PTlZMTUFYKTsNCisgIH0N CiAgIHZvaWQgZXhwYW5kIChlbnVtIGluc25fY29kZSBpY29kZSwgYm9vbCB0 ZW1wb3Jhcnlfdm9sYXRpbGVfcCA9IGZhbHNlKQ0KICAgew0KQEAgLTExNDAs MTkgKzExNTQsMzEgQEAgcHVibGljOg0KICAgICA6IHJ0eF92ZWN0b3JfYnVp bGRlciAobW9kZSwgbnBhdHRlcm5zLCBuZWx0c19wZXJfcGF0dGVybikNCiAg IHsNCiAgICAgbV9pbm5lcl9tb2RlID0gR0VUX01PREVfSU5ORVIgKG1vZGUp Ow0KLSAgICBtX2lubmVyX3NpemUgPSBHRVRfTU9ERV9CSVRTSVpFIChtX2lu bmVyX21vZGUpLnRvX2NvbnN0YW50ICgpOw0KKyAgICBtX2lubmVyX3NpemVf Yml0cyA9IEdFVF9NT0RFX0JJVFNJWkUgKG1faW5uZXJfbW9kZSk7DQorICAg IG1faW5uZXJfc2l6ZV9ieXRlcyA9IEdFVF9NT0RFX1NJWkUgKG1faW5uZXJf bW9kZSk7DQorICAgIGdjY19hc3NlcnQgKA0KKyAgICAgIGludF9tb2RlX2Zv cl9zaXplIChpbm5lcl9zaXplICgpLCAwKS5leGlzdHMgKCZtX2lubmVyX2lu dF9tb2RlKSk7DQogICB9DQogICBib29sIGNhbl9kdXBsaWNhdGVfcmVwZWF0 aW5nX3NlcXVlbmNlX3AgKCk7DQogICBydHggZ2V0X21lcmdlZF9yZXBlYXRp bmdfc2VxdWVuY2UgKCk7DQorICBib29sIHJlcGVhdGluZ19zZXF1ZW5jZV91 c2VfbWVyZ2VfcHJvZml0YWJsZV9wICgpOw0KKyAgcnR4IGdldF9tZXJnZV9t YXNrX2JpdGZpZWxkICh1bnNpZ25lZCBpbnQpIGNvbnN0Ow0KKw0KICAgbWFj aGluZV9tb2RlIG5ld19tb2RlICgpIGNvbnN0IHsgcmV0dXJuIG1fbmV3X21v ZGU7IH0NCisgIHNjYWxhcl9tb2RlIGlubmVyX21vZGUgKCkgY29uc3QgeyBy ZXR1cm4gbV9pbm5lcl9tb2RlOyB9DQorICBzY2FsYXJfaW50X21vZGUgaW5u ZXJfaW50X21vZGUgKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lcl9pbnRfbW9k ZTsgfQ0KKyAgdW5zaWduZWQgaW50IGlubmVyX3VuaXRzICgpIGNvbnN0IHsg cmV0dXJuIG1faW5uZXJfc2l6ZV9ieXRlczsgfQ0KKyAgdW5zaWduZWQgaW50 IGlubmVyX3NpemUgKCkgY29uc3QgeyByZXR1cm4gbV9pbm5lcl9zaXplX2Jp dHM7IH0NCnByaXZhdGU6DQotICBtYWNoaW5lX21vZGUgbV9pbm5lcl9tb2Rl Ow0KKyAgc2NhbGFyX21vZGUgbV9pbm5lcl9tb2RlOw0KKyAgc2NhbGFyX2lu dF9tb2RlIG1faW5uZXJfaW50X21vZGU7DQogICBtYWNoaW5lX21vZGUgbV9u ZXdfbW9kZTsNCiAgIHNjYWxhcl9pbnRfbW9kZSBtX25ld19pbm5lcl9tb2Rl Ow0KLSAgdW5zaWduZWQgaW50IG1faW5uZXJfc2l6ZTsNCisgIHVuc2lnbmVk IGludCBtX2lubmVyX3NpemVfYml0czsNCisgIHVuc2lnbmVkIGludCBtX2lu bmVyX3NpemVfYnl0ZXM7DQp9Ow0KLyogUmV0dXJuIHRydWUgaWYgdGhlIHZl Y3RvciBkdXBsaWNhdGVkIGJ5IGEgc3VwZXIgZWxlbWVudCB3aGljaCBpcyB0 aGUgZnVzaW9uDQpAQCAtMTE2Myw3ICsxMTg5LDcgQEAgYm9vbA0KcnZ2X2J1 aWxkZXI6OmNhbl9kdXBsaWNhdGVfcmVwZWF0aW5nX3NlcXVlbmNlX3AgKCkN CnsNCiAgIHBvbHlfdWludDY0IG5ld19zaXplID0gZXhhY3RfZGl2IChmdWxs X25lbHRzICgpLCBucGF0dGVybnMgKCkpOw0KLSAgdW5zaWduZWQgaW50IG5l d19pbm5lcl9zaXplID0gbV9pbm5lcl9zaXplICogbnBhdHRlcm5zICgpOw0K KyAgdW5zaWduZWQgaW50IG5ld19pbm5lcl9zaXplID0gbV9pbm5lcl9zaXpl X2JpdHMgKiBucGF0dGVybnMgKCk7DQogICBpZiAoIWludF9tb2RlX2Zvcl9z aXplIChuZXdfaW5uZXJfc2l6ZSwgMCkuZXhpc3RzICgmbV9uZXdfaW5uZXJf bW9kZSkNCiAgICAgICB8fCBHRVRfTU9ERV9TSVpFIChtX25ld19pbm5lcl9t b2RlKSA+IFVOSVRTX1BFUl9XT1JEDQogICAgICAgfHwgIWdldF92ZWN0b3Jf bW9kZSAobV9uZXdfaW5uZXJfbW9kZSwgbmV3X3NpemUpLmV4aXN0cyAoJm1f bmV3X21vZGUpKQ0KQEAgLTExNzgsMTEgKzEyMDQsMTEgQEAgcnZ2X2J1aWxk ZXI6OmdldF9tZXJnZWRfcmVwZWF0aW5nX3NlcXVlbmNlICgpDQogICBzY2Fs YXJfaW50X21vZGUgbW9kZSA9IFBtb2RlOw0KICAgcnR4IHRhcmdldCA9IGdl bl9yZWdfcnR4IChtb2RlKTsNCiAgIGVtaXRfbW92ZV9pbnNuICh0YXJnZXQs IGNvbnN0MF9ydHgpOw0KLSAgcnR4IGltbSA9IGdlbl9pbnRfbW9kZSAoKDFV TEwgPDwgbV9pbm5lcl9zaXplKSAtIDEsIG1vZGUpOw0KKyAgcnR4IGltbSA9 IGdlbl9pbnRfbW9kZSAoKDFVTEwgPDwgbV9pbm5lcl9zaXplX2JpdHMpIC0g MSwgbW9kZSk7DQogICAvKiB7IGEsIGIsIGEsIGIgfTogR2VuZXJhdGUgZHVw bGljYXRlIGVsZW1lbnQgPSBiIDw8IGJpdHMgfCBhLiAgKi8NCiAgIGZvciAo dW5zaWduZWQgaW50IGkgPSAwOyBpIDwgbnBhdHRlcm5zICgpOyBpKyspDQog ICAgIHsNCi0gICAgICB1bnNpZ25lZCBpbnQgbG9jID0gbV9pbm5lcl9zaXpl ICogaTsNCisgICAgICB1bnNpZ25lZCBpbnQgbG9jID0gbV9pbm5lcl9zaXpl X2JpdHMgKiBpOw0KICAgICAgIHJ0eCBzaGlmdCA9IGdlbl9pbnRfbW9kZSAo bG9jLCBtb2RlKTsNCiAgICAgICBydHggZWxlID0gZ2VuX2xvd3BhcnQgKG1v ZGUsIGVsdCAoaSkpOw0KICAgICAgIHJ0eCB0bXAgPSBleHBhbmRfc2ltcGxl X2Jpbm9wIChtb2RlLCBBTkQsIGVsZSwgaW1tLCBOVUxMX1JUWCwgZmFsc2Us DQpAQCAtMTE5OCw2ICsxMjI0LDYxIEBAIHJ2dl9idWlsZGVyOjpnZXRfbWVy Z2VkX3JlcGVhdGluZ19zZXF1ZW5jZSAoKQ0KICAgcmV0dXJuIHRhcmdldDsN Cn0NCisvKiBSZXR1cm4gdHJ1ZSBpZiBpdCBpcyBhIHJlcGVhdGluZyBzZXF1 ZW5jZSB0aGF0IHVzaW5nDQorICAgbWVyZ2UgYXBwcm9hY2ggaGFzIGJldHRl ciBjb2RlZ2VuIHRoYW4gdXNpbmcgZGVmYXVsdA0KKyAgIGFwcHJvYWNoIChz bGlkZTFkb3duKS4NCisNCisgICAgIFNlcXVlbmNlIEE6DQorICAgICAgIHth LCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBi fQ0KKw0KKyAgICAgbmVsdHMgPSAxNg0KKyAgICAgbnBhdHRlcm5zID0gMg0K Kw0KKyAgICAgZm9yIG1lcmdpbmcgYSB3ZSBuZWVkIG1hc2sgMTAxMDEwLi4u Lg0KKyAgICAgZm9yIG1lcmdpbmcgYiB3ZSBuZWVkIG1hc2sgMDEwMTAxLi4u Lg0KKyAgICAgYnVpbGRpbmcgYSBtYXNrIGluIHNjYWxhciByZWdpc3RlciBu ZWVkIDMgaW5zdHJ1Y3Rpb25zIChDT1NUID0gMykNCisgICAgIHdoaWNoIGlz IGNvbnNpc3Qgb2YgMiBzY2FsYXIgaW5zdHJ1Y3Rpb24gKyAxIHNjYWxhciBt b3ZlLg0KKyAgICAgVGhlbiB3ZSBuZWVkIHZlY3RvciBtZXJnZSB0byBtZXJn ZSB0aGVtLg0KKw0KKyAgICAgU28gdGhlIG92ZXJhbCAocm91Z2hseSkgQ09T VCBvZiBTZXF1ZW5jZSBBID0gKDMgKyAxKSAqIG5wYXR0ZXJucyA9IDguDQor ICAgICBJZiB3ZSB1c2Ugc2xpZGUxZG93biwgdGhlIENPU1QgPSBuZWx0cyA9 IDE2ID4gOCAoQ09TVCBvZiBtZXJnZSkuDQorICAgICBTbyByZXR1cm4gdHJ1 ZSBpbiB0aGlzIGNhc2UgYXMgaXQgaXMgcHJvZml0YWJsZS4NCisNCisgICAg IFNlcXVlbmNlIEI6DQorICAgICAgIHthLCBiLCBjLCBkLCBlLCBmLCBnLCBo LCBhLCBiLCBjLCBkLCBlLCBmLCBnLCBofQ0KKw0KKyAgICAgbmVsdHMgPSAx Ng0KKyAgICAgbnBhdHRlcm5zID0gOA0KKw0KKyAgICAgQ09TVCBvZiBtZXJn ZSBhcHByb2FjaCA9ICgzICsgMSkgKiBucGF0dGVybnMgPSAyNA0KKyAgICAg Q09TVCBvZiBzbGlkZTFkb3duIGFwcHJvYWNoID0gbmVsdHMgPSAxNg0KKyAg ICAgUmV0dXJuIGZhbHNlIGluIHRoaXMgY2FzZSBhcyBpdCBpcyBOT1QgcHJv Zml0YWJsZSBpbiBtZXJnZSBhcHByb2FjaC4NCisqLw0KK2Jvb2wNCitydnZf YnVpbGRlcjo6cmVwZWF0aW5nX3NlcXVlbmNlX3VzZV9tZXJnZV9wcm9maXRh YmxlX3AgKCkNCit7DQorICByZXR1cm4gcmVwZWF0aW5nX3NlcXVlbmNlX3Ag KDAsIGZ1bGxfbmVsdHMgKCkudG9fY29uc3RhbnQgKCksIG5wYXR0ZXJucyAo KSkNCisgJiYgaW5uZXJfdW5pdHMgKCkgPD0gVU5JVFNfUEVSX1dPUkQNCisg JiYgMyAqIG5wYXR0ZXJucyAoKSA8IGZ1bGxfbmVsdHMgKCkudG9fY29uc3Rh bnQgKCk7DQorfQ0KKw0KKy8qIEdldCB0aGUgbWFzayBmb3IgbWVyZ2UgYXBw cm9hY2guDQorDQorICAgICBDb25zaWRlciBzdWNoIGZvbGxvd2luZyBjYXNl Og0KKyAgICAgICB7YSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwg YiwgYSwgYiwgYSwgYn0NCisgICAgIFRvIG1lcmdlICJhIiwgdGhlIG1hc2sg c2hvdWxkIGJlIDEwMTAuLi4uDQorICAgICBUbyBtZXJnZSAiYiIsIHRoZSBt YXNrIHNob3VsZCBiZSAwMTAxLi4uLg0KKyovDQorcnR4DQorcnZ2X2J1aWxk ZXI6OmdldF9tZXJnZV9tYXNrX2JpdGZpZWxkICh1bnNpZ25lZCBpbnQgaW5k ZXgpIGNvbnN0DQorew0KKyAgdWludDY0X3QgYmFzZV9tYXNrID0gKDFVTEwg PDwgaW5kZXgpOw0KKyAgdWludDY0X3QgbWFzayA9IDA7DQorICBmb3IgKHVu c2lnbmVkIGludCBpID0gMDsgaSA8IChzaXplb2YgKHVpbnQ2NF90KSAqIDgg LyBucGF0dGVybnMgKCkpOyBpKyspDQorICAgIG1hc2sgfD0gYmFzZV9tYXNr IDw8IChpICogbnBhdHRlcm5zICgpKTsNCisgIHJldHVybiBnZW5faW50X21v ZGUgKG1hc2ssIGlubmVyX2ludF9tb2RlICgpKTsNCit9DQorDQovKiBTdWJy b3V0aW5lIG9mIHJpc2N2X3ZlY3Rvcl9leHBhbmRfdmVjdG9yX2luaXQuDQog ICAgV29ya3MgYXMgZm9sbG93czoNCiAgICAoYSkgSW5pdGlhbGl6ZSBUQVJH RVQgYnkgYnJvYWRjYXN0aW5nIGVsZW1lbnQgTkVMVFNfUkVRRCAtIDEgb2Yg QlVJTERFUi4NCkBAIC0xMjI2LDYgKzEzMDcsMTA3IEBAIGV4cGFuZF92ZWN0 b3JfaW5pdF9pbnNlcnRfZWxlbXMgKHJ0eCB0YXJnZXQsIGNvbnN0IHJ2dl9i dWlsZGVyICZidWlsZGVyLA0KICAgICB9DQp9DQorLyogRW1pdCB2bXYucy54 IGluc3RydWN0aW9uLiAgKi8NCisNCitzdGF0aWMgdm9pZA0KK2VtaXRfc2Nh bGFyX21vdmVfb3AgKHJ0eCBkZXN0LCBydHggc3JjLCBtYWNoaW5lX21vZGUg bWFza19tb2RlKQ0KK3sNCisgIGluc25fZXhwYW5kZXI8OD4gZTsNCisgIG1h Y2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKGRlc3QpOw0KKyAgcnR4IHNj YWxhcl9tb3ZlX21hc2sgPSBnZW5fc2NhbGFyX21vdmVfbWFzayAobWFza19t b2RlKTsNCisgIGUuc2V0X2Rlc3RfYW5kX21hc2sgKHNjYWxhcl9tb3ZlX21h c2ssIGRlc3QsIG1hc2tfbW9kZSk7DQorICBlLmFkZF9pbnB1dF9vcGVyYW5k IChzcmMsIEdFVF9NT0RFX0lOTkVSIChtb2RlKSk7DQorICBlLnNldF9sZW5f YW5kX3BvbGljeSAoY29uc3QxX3J0eCwgZmFsc2UpOw0KKyAgZS5leHBhbmQg KGNvZGVfZm9yX3ByZWRfYnJvYWRjYXN0IChtb2RlKSwgZmFsc2UpOw0KK30N CisNCisvKiBFbWl0IG1lcmdlIGluc3RydWN0aW9uLiAgKi8NCisNCitzdGF0 aWMgdm9pZA0KK2VtaXRfbWVyZ2Vfb3AgKHJ0eCBkZXN0LCBydHggc3JjMSwg cnR4IHNyYzIsIHJ0eCBtYXNrKQ0KK3sNCisgIGluc25fZXhwYW5kZXI8OD4g ZTsNCisgIG1hY2hpbmVfbW9kZSBtb2RlID0gR0VUX01PREUgKGRlc3QpOw0K KyAgZS5zZXRfZGVzdF9tZXJnZSAoZGVzdCk7DQorICBlLmFkZF9pbnB1dF9v cGVyYW5kIChzcmMxLCBtb2RlKTsNCisgIGlmIChWRUNUT1JfTU9ERV9QIChH RVRfTU9ERSAoc3JjMikpKQ0KKyAgICBlLmFkZF9pbnB1dF9vcGVyYW5kIChz cmMyLCBtb2RlKTsNCisgIGVsc2UNCisgICAgZS5hZGRfaW5wdXRfb3BlcmFu ZCAoc3JjMiwgR0VUX01PREVfSU5ORVIgKG1vZGUpKTsNCisNCisgIGUuYWRk X2lucHV0X29wZXJhbmQgKG1hc2ssIEdFVF9NT0RFIChtYXNrKSk7DQorICBl LnNldF9sZW5fYW5kX3BvbGljeSAoTlVMTF9SVFgsIHRydWUsIHRydWUsIGZh bHNlKTsNCisgIGlmIChWRUNUT1JfTU9ERV9QIChHRVRfTU9ERSAoc3JjMikp KQ0KKyAgICBlLmV4cGFuZCAoY29kZV9mb3JfcHJlZF9tZXJnZSAobW9kZSks IGZhbHNlKTsNCisgIGVsc2UNCisgICAgZS5leHBhbmQgKGNvZGVfZm9yX3By ZWRfbWVyZ2Vfc2NhbGFyIChtb2RlKSwgZmFsc2UpOw0KK30NCisNCisvKiBV c2UgbWVyZ2UgYXBwcm9hY2ggdG8gaW5pdGlhbGl6ZSB0aGUgdmVjdG9yIHdp dGggcmVwZWF0aW5nIHNlcXVlbmNlLg0KKyAgICAgdiA9IHthLCBiLCBhLCBi LCBhLCBiLCBhLCBifS4NCisNCisgICAgIHYgPSBicm9hZGNhc3QgKGEpLg0K KyAgICAgbWFzayA9IDBiMDEwMTAxMDEuLi4uDQorICAgICB2ID0gbWVyZ2Ug KHYsIGIsIG1hc2spDQorKi8NCitzdGF0aWMgdm9pZA0KK2V4cGFuZF92ZWN0 b3JfaW5pdF9tZXJnZV9yZXBlYXRpbmdfc2VxdWVuY2UgKHJ0eCB0YXJnZXQs DQorICAgICAgY29uc3QgcnZ2X2J1aWxkZXIgJmJ1aWxkZXIpDQorew0KKyAg bWFjaGluZV9tb2RlIG1hc2tfbW9kZSA9IGdldF9tYXNrX21vZGUgKGJ1aWxk ZXIubW9kZSAoKSkucmVxdWlyZSAoKTsNCisgIG1hY2hpbmVfbW9kZSBkdXBf bW9kZSA9IGJ1aWxkZXIubW9kZSAoKTsNCisgIGlmIChrbm93bl9ndCAoR0VU X01PREVfU0laRSAoZHVwX21vZGUpLCBCWVRFU19QRVJfUklTQ1ZfVkVDVE9S KSkNCisgICAgew0KKyAgICAgIHBvbHlfdWludDY0IG51bml0cw0KKyA9IGV4 YWN0X2RpdiAoQllURVNfUEVSX1JJU0NWX1ZFQ1RPUiwgYnVpbGRlci5pbm5l cl91bml0cyAoKSk7DQorICAgICAgZHVwX21vZGUgPSBnZXRfdmVjdG9yX21v ZGUgKGJ1aWxkZXIuaW5uZXJfaW50X21vZGUgKCksIG51bml0cykucmVxdWly ZSAoKTsNCisgICAgfQ0KKyAgZWxzZQ0KKyAgICB7DQorICAgICAgaWYgKEZM T0FUX01PREVfUCAoZHVwX21vZGUpKQ0KKyB7DQorICAgcG9seV91aW50NjQg bnVuaXRzID0gR0VUX01PREVfTlVOSVRTIChkdXBfbW9kZSk7DQorICAgZHVw X21vZGUNCisgICAgID0gZ2V0X3ZlY3Rvcl9tb2RlIChidWlsZGVyLmlubmVy X2ludF9tb2RlICgpLCBudW5pdHMpLnJlcXVpcmUgKCk7DQorIH0NCisgICAg fQ0KKw0KKyAgbWFjaGluZV9tb2RlIGR1cF9tYXNrX21vZGUgPSBnZXRfbWFz a19tb2RlIChkdXBfbW9kZSkucmVxdWlyZSAoKTsNCisNCisgIC8qIFN0ZXAg MTogQnJvYWRjYXN0IHRoZSAxc3QtcGF0dGVybi4gICovDQorICBlbWl0X2xl bl9vcCAoY29kZV9mb3JfcHJlZF9icm9hZGNhc3QgKGJ1aWxkZXIubW9kZSAo KSksIHRhcmdldCwNCisgICAgICAgIGZvcmNlX3JlZyAoYnVpbGRlci5pbm5l cl9tb2RlICgpLCBidWlsZGVyLmVsdCAoMCkpLCBOVUxMX1JUWCwNCisgICAg ICAgIG1hc2tfbW9kZSk7DQorDQorICAvKiBTdGVwIDI6IE1lcmdlIGVhY2gg bm9uIDFzdCBwYXR0ZXJuLiAgKi8NCisgIGZvciAodW5zaWduZWQgaW50IGkg PSAxOyBpIDwgYnVpbGRlci5ucGF0dGVybnMgKCk7IGkrKykNCisgICAgew0K KyAgICAgIC8qIFN0ZXAgMi0xOiBHZW5lcmF0ZSBtYXNrIHJlZ2lzdGVyIHYw IGZvciBlYWNoIG1lcmdlLiAgKi8NCisgICAgICBydHggbWFza19iaXRmaWVs ZCA9IGJ1aWxkZXIuZ2V0X21lcmdlX21hc2tfYml0ZmllbGQgKGkpOw0KKyAg ICAgIHJ0eCBtYXNrID0gZ2VuX3JlZ19ydHggKG1hc2tfbW9kZSk7DQorICAg ICAgcnR4IGR1cCA9IGdlbl9yZWdfcnR4IChkdXBfbW9kZSk7DQorICAgICAg aWYgKGJ1aWxkZXIuaW5uZXJfc2l6ZSAoKSA+PSBidWlsZGVyLmZ1bGxfbmVs dHMgKCkudG9fY29uc3RhbnQgKCkpDQorIHsNCisgICAvKiBVc2Ugdm12LnMu eC4gICovDQorICAgZW1pdF9zY2FsYXJfbW92ZV9vcCAoZHVwLCBtYXNrX2Jp dGZpZWxkLCBkdXBfbWFza19tb2RlKTsNCisgfQ0KKyAgICAgIGVsc2UNCisg ew0KKyAgIC8qIFVzZSB2bXYudi54LiAgKi8NCisgICB1bnNpZ25lZCBpbnQg bWFza19udW0gPSBDRUlMIChidWlsZGVyLmZ1bGxfbmVsdHMgKCkudG9fY29u c3RhbnQgKCksDQorIGJ1aWxkZXIuaW5uZXJfc2l6ZSAoKSk7DQorICAgcnR4 IHZsID0gZ2VuX2ludF9tb2RlIChtYXNrX251bSwgUG1vZGUpOw0KKyAgIGVt aXRfbGVuX29wIChjb2RlX2Zvcl9wcmVkX2Jyb2FkY2FzdCAoZHVwX21vZGUp LCBkdXAsDQorICAgICAgICBmb3JjZV9yZWcgKEdFVF9NT0RFX0lOTkVSIChk dXBfbW9kZSksIG1hc2tfYml0ZmllbGQpLCB2bCwNCisgICAgICAgIGR1cF9t YXNrX21vZGUpOw0KKyB9DQorICAgICAgZW1pdF9tb3ZlX2luc24gKG1hc2ss IGdlbl9sb3dwYXJ0IChtYXNrX21vZGUsIGR1cCkpOw0KKw0KKyAgICAgIC8q IFN0ZXAgMi0yOiBNZXJnZSBwYXR0ZXJuIGFjY29yZGluZyB0byB0aGUgbWFz ay4gICovDQorICAgICAgZW1pdF9tZXJnZV9vcCAodGFyZ2V0LCB0YXJnZXQs IGJ1aWxkZXIuZWx0IChpKSwgbWFzayk7DQorICAgIH0NCit9DQorDQovKiBJ bml0aWFsaXplIHJlZ2lzdGVyIFRBUkdFVCBmcm9tIHRoZSBlbGVtZW50cyBp biBQQVJBTExFTCBydHggVkFMUy4gICovDQp2b2lkDQpAQCAtMTI0OSw2ICsx NDMxLDIxIEBAIGV4cGFuZF92ZWNfaW5pdCAocnR4IHRhcmdldCwgcnR4IHZh bHMpDQogIGVtaXRfbW92ZV9pbnNuICh0YXJnZXQsIGdlbl9sb3dwYXJ0ICht b2RlLCBkdXApKTsNCiAgcmV0dXJuOw0KfQ0KKw0KKyAgICAgIC8qIENhc2Ug MjogT3B0aW1pemUgcmVwZWF0aW5nIHNlcXVlbmNlIGNhc2VzIHRoYXQgQ2Fz ZSAxIGNhbg0KKyBub3QgaGFuZGxlIGFuZCBpdCBpcyBwcm9maXRhYmxlLg0K Kw0KKyAgICBGb3IgZXhhbXBsZToNCisgICAgICBFTEVNRU5UIEJJVFNJWkUg PSA2NC4NCisgICAgICB2ID0ge2EsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEs IGIsIGEsIGIsIGEsIGIsIGEsIGJ9Lg0KKyAgICAgIFdlIGNhbid0IGZpbmQg YSB2ZWN0b3IgbW9kZSBmb3IgImFiIiB3aGljaCB3aWxsIGJlIGNvbWJpbmVk IGludG8NCisgICAgICAxMjgtYml0IGVsZW1lbnQgdG8gZHVwbGljYXRlLiAg Ki8NCisgICAgICBpZiAodi5yZXBlYXRpbmdfc2VxdWVuY2VfdXNlX21lcmdl X3Byb2ZpdGFibGVfcCAoKSkNCisgew0KKyAgIGV4cGFuZF92ZWN0b3JfaW5p dF9tZXJnZV9yZXBlYXRpbmdfc2VxdWVuY2UgKHRhcmdldCwgdik7DQorICAg cmV0dXJuOw0KKyB9DQorDQogICAgICAgLyogVE9ETzogV2Ugd2lsbCBzdXBw b3J0IG1vcmUgSW5pdGlhbGl6YXRpb24gb2YgdmVjdG9yIGluIHRoZSBmdXR1 cmUuICAqLw0KICAgICB9DQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9yZXBlYXQt MTAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0 b3ZlYy92bHMtdmxtYXgvcmVwZWF0LTEwLmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uZjY2NzQ0ZWY0ZDcNCi0tLSAvZGV2 L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVwZWF0LTEwLmMNCkBAIC0wLDAgKzEs MTkgQEANCisvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLw0KKy8qIHsgZGctYWRk aXRpb25hbC1vcHRpb25zICItbWFyY2g9cnY2NGdjdl96dmwxMDI0YiAtbWFi aT1scDY0ZCIgfSAqLw0KKw0KKyNpbmNsdWRlIDxzdGRpbnQtZ2NjLmg+DQor DQordHlwZWRlZiBpbnQ2NF90IHZueDE2ZGkgX19hdHRyaWJ1dGVfXyAoKHZl Y3Rvcl9zaXplICgxMDI0KSkpOw0KKw0KK19fYXR0cmlidXRlX18gKChub2lw YSkpIHZvaWQNCitmX3ZueDE2ZGkgKGludDY0X3QgYSwgaW50NjRfdCBiLCBp bnQ2NF90ICpvdXQpDQorew0KKyAgdm54MTZkaSB2ID0ge2EsIGIsIGEsIGIs IGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEs IGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsDQorICBh LCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBi LCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBhLCBiLCBh LCBiLA0KKyAgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwg YSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwg YiwgYSwgYiwgYSwgYiwNCisgIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEs IGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIs IGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsfTsNCisgICoodm54MTZkaSAqKSBv dXQgPSB2Ow0KK30NCisNCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMge3ZtdlwudlwueFx0dlswLTldKyxccypbYS14MC05XSt9IDIg fSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz IHt2bWVyZ2VcLnZ4bVx0dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTld Kyxccyp2MH0gMSB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRl L2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVh dC0xMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9h dXRvdmVjL3Zscy12bG1heC9yZXBlYXQtMTEuYw0KbmV3IGZpbGUgbW9kZSAx MDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi5lMWNlZDA1ZDFmZQ0KLS0tIC9k ZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9hdXRvdmVjL3Zscy12bG1heC9yZXBlYXQtMTEuYw0KQEAgLTAsMCAr MSwyNSBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1h ZGRpdGlvbmFsLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRk IiB9ICovDQorDQorI2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCisNCit0eXBl ZGVmIGRvdWJsZSB2bng4ZGYgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXpl ICg2NCkpKTsNCit0eXBlZGVmIGRvdWJsZSB2bngxNmRmIF9fYXR0cmlidXRl X18gKCh2ZWN0b3Jfc2l6ZSAoMTI4KSkpOw0KKw0KK19fYXR0cmlidXRlX18g KChub2lwYSkpIHZvaWQNCitmX3ZueDhkZiAoZG91YmxlIGEsIGRvdWJsZSBi LCBkb3VibGUgKm91dCkNCit7DQorICB2bng4ZGYgdiA9IHthLCBiLCBhLCBi LCBhLCBiLCBhLCBifTsNCisgICoodm54OGRmICopIG91dCA9IHY7DQorfQ0K Kw0KK19fYXR0cmlidXRlX18gKChub2lwYSkpIHZvaWQNCitmX3ZueDE2ZGYg KGRvdWJsZSBhLCBkb3VibGUgYiwgZG91YmxlICpvdXQpDQorew0KKyAgdm54 MTZkZiB2ID0ge2EsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIsIGEsIGIs IGEsIGIsIGEsIGJ9Ow0KKyAgKih2bngxNmRmICopIG91dCA9IHY7DQorfQ0K Kw0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7 dm12XC5zXC54XHR2WzAtOV0rLFxzKlthLXgwLTldK30gMiB9IH0gKi8NCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZmbWVyZ2Vc LnZmbVx0dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTldKyxccyp2MH0g MiB9IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdC03LmMgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxz LXZsbWF4L3JlcGVhdC03LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRl eCAwMDAwMDAwMDAwMC4uOGU3OTFiMjk0NjYNCi0tLSAvZGV2L251bGwNCisr KyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3Zl Yy92bHMtdmxtYXgvcmVwZWF0LTcuYw0KQEAgLTAsMCArMSwyNSBAQA0KKy8q IHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1hZGRpdGlvbmFsLW9w dGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRkIiB9ICovDQorDQor I2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCisNCit0eXBlZGVmIGludDY0X3Qg dm54OGRpIF9fYXR0cmlidXRlX18gKCh2ZWN0b3Jfc2l6ZSAoNjQpKSk7DQor dHlwZWRlZiBpbnQ2NF90IHZueDE2ZGkgX19hdHRyaWJ1dGVfXyAoKHZlY3Rv cl9zaXplICgxMjgpKSk7DQorDQorX19hdHRyaWJ1dGVfXyAoKG5vaXBhKSkg dm9pZA0KK2Zfdm54OGRpIChpbnQ2NF90IGEsIGludDY0X3QgYiwgaW50NjRf dCAqb3V0KQ0KK3sNCisgIHZueDhkaSB2ID0ge2EsIGIsIGEsIGIsIGEsIGIs IGEsIGJ9Ow0KKyAgKih2bng4ZGkgKikgb3V0ID0gdjsNCit9DQorDQorX19h dHRyaWJ1dGVfXyAoKG5vaXBhKSkgdm9pZA0KK2Zfdm54MTZkaSAoaW50NjRf dCBhLCBpbnQ2NF90IGIsIGludDY0X3QgKm91dCkNCit7DQorICB2bngxNmRp IHYgPSB7YSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwgYiwgYSwg YiwgYSwgYn07DQorICAqKHZueDE2ZGkgKikgb3V0ID0gdjsNCit9DQorDQor DQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2bXZc LnNcLnhcdHZbMC05XSssXHMqW2EteDAtOV0rfSAyIH0gfSAqLw0KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dm1lcmdlXC52eG1c dHZbMC05XSssXHMqdlswLTldKyxccypbYS14MC05XSssXHMqdjB9IDIgfSB9 ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9yZXBlYXQtOC5jIGIvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1h eC9yZXBlYXQtOC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAw MDAwMDAwMDAuLjJmNjE0NjVlODRmDQotLS0gL2Rldi9udWxsDQorKysgYi9n Y2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxz LXZsbWF4L3JlcGVhdC04LmMNCkBAIC0wLDAgKzEsMTUgQEANCisvKiB7IGRn LWRvIGNvbXBpbGUgfSAqLw0KKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25z ICItbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0ZCIgfSAqLw0KKw0KKyNpbmNs dWRlIDxzdGRpbnQtZ2NjLmg+DQorDQordHlwZWRlZiBpbnQ2NF90IHZueDhk aSBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDY0KSkpOw0KKw0KK19f YXR0cmlidXRlX18gKChub2lwYSkpIHZvaWQNCitmX3ZueDhkaSAoaW50NjRf dCBhLCBpbnQ2NF90IGIsIGludDY0X3QgYywgaW50NjRfdCBkLCBpbnQ2NF90 ICpvdXQpDQorew0KKyAgdm54OGRpIHYgPSB7YSwgYiwgYywgZCwgYSwgYiwg YywgZH07DQorICAqKHZueDhkaSAqKSBvdXQgPSB2Ow0KK30NCisNCisvKiB7 IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZzbGlkZTFkb3du XC52eFx0dlswLTldKyxccyp2WzAtOV0rLFxzKlthLXgwLTldK30gNyB9IH0g Ki8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdC05LmMgYi9nY2MvdGVz dHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4 L3JlcGVhdC05LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwMC4uMThlNjdkMGU5MzgNCi0tLSAvZGV2L251bGwNCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMt dmxtYXgvcmVwZWF0LTkuYw0KQEAgLTAsMCArMSwxNiBAQA0KKy8qIHsgZGct ZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMg Ii1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjRkIiB9ICovDQorDQorI2luY2x1 ZGUgPHN0ZGludC1nY2MuaD4NCisNCit0eXBlZGVmIGludDY0X3Qgdm54MTZk aSBfX2F0dHJpYnV0ZV9fICgodmVjdG9yX3NpemUgKDEyOCkpKTsNCisNCitf X2F0dHJpYnV0ZV9fICgobm9pcGEpKSB2b2lkDQorZl92bngxNmRpIChpbnQ2 NF90IGEsIGludDY0X3QgYiwgaW50NjRfdCBjLCBpbnQ2NF90IGQsIGludDY0 X3QgKm91dCkNCit7DQorICB2bngxNmRpIHYgPSB7YSwgYiwgYywgZCwgYSwg YiwgYywgZCwgYSwgYiwgYywgZCwgYSwgYiwgYywgZH07DQorICAqKHZueDE2 ZGkgKikgb3V0ID0gdjsNCit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLXRpbWVzIHt2bXZcLnNcLnhcdHZbMC05XSssXHMqW2EteDAt OV0rfSAzIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7dm1lcmdlXC52eG1cdHZbMC05XSssXHMqdlswLTldKyxccypb YS14MC05XSssXHMqdjB9IDMgfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1h eC9yZXBlYXRfcnVuLTExLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdF9ydW4tMTEuYw0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi4zOGQw OTY3OTFiZg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9hdXRvdmVjL3Zscy12bG1heC9yZXBlYXRf cnVuLTExLmMNCkBAIC0wLDAgKzEsNDUgQEANCisvKiB7IGRnLWRvIHJ1biB7 IHRhcmdldCB7IHJpc2N2X3ZlY3RvciB9IH0gfSAqLw0KKy8qIHsgZGctb3B0 aW9ucyAiLS1wYXJhbSByaXNjdi1hdXRvdmVjLXByZWZlcmVuY2U9Zml4ZWQt dmxtYXggLU8zIiB9ICovDQorDQorI2luY2x1ZGUgInJlcGVhdC0xMS5jIg0K Kw0KK2ludA0KK21haW4gKCkNCit7DQorICBkb3VibGUgYSA9IC0xNzg5MDg5 LjIzNDIzOw0KKyAgZG91YmxlIGIgPSAtODkxNjE1Ni40NTY0NDsNCisNCisg IGRvdWJsZSB2X3ZueDhkZltzaXplb2YgKHZueDhkZikgLyBzaXplb2YgKGRv dWJsZSldOw0KKyAgZl92bng4ZGYgKGEsIGIsIHZfdm54OGRmKTsNCisgIGZv ciAoaW50IGkgPSAwOyBpIDwgc2l6ZW9mICh2bng4ZGYpIC8gc2l6ZW9mIChk b3VibGUpOyBpKyspDQorICAgIHsNCisgICAgICBpZiAoaSAlIDIgPT0gMCkN Cisgew0KKyAgIGlmICh2X3ZueDhkZltpXSAhPSBhKQ0KKyAgICAgX19idWls dGluX2Fib3J0ICgpOw0KKyB9DQorICAgICAgZWxzZQ0KKyB7DQorICAgaWYg KHZfdm54OGRmW2ldICE9IGIpDQorICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7 DQorIH0NCisgICAgfQ0KKw0KKyAgZG91YmxlIHZfdm54MTZkZltzaXplb2Yg KHZueDE2ZGYpIC8gc2l6ZW9mIChkb3VibGUpXTsNCisgIGZfdm54MTZkZiAo YSwgYiwgdl92bngxNmRmKTsNCisgIGZvciAoaW50IGkgPSAwOyBpIDwgc2l6 ZW9mICh2bngxNmRmKSAvIHNpemVvZiAoZG91YmxlKTsgaSsrKQ0KKyAgICB7 DQorICAgICAgaWYgKGkgJSAyID09IDApDQorIHsNCisgICBpZiAodl92bngx NmRmW2ldICE9IGEpDQorICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQorIH0N CisgICAgICBlbHNlDQorIHsNCisgICBpZiAodl92bngxNmRmW2ldICE9IGIp DQorICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQorIH0NCisgICAgfQ0KKw0K KyAgcmV0dXJuIDA7DQorfQ0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVwZWF0 X3J1bi03LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdF9ydW4tNy5jDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjg3ZTU5YjZiOGUzDQot LS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdF9ydW4tNy5jDQpA QCAtMCwwICsxLDQ1IEBADQorLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyBy aXNjdl92ZWN0b3IgfSB9IH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi0tcGFy YW0gcmlzY3YtYXV0b3ZlYy1wcmVmZXJlbmNlPWZpeGVkLXZsbWF4IC1PMyIg fSAqLw0KKw0KKyNpbmNsdWRlICJyZXBlYXQtNy5jIg0KKw0KK2ludA0KK21h aW4gKCkNCit7DQorICBpbnQ2NF90IGEgPSAtMTc4OTA4OTIzNDIzOw0KKyAg aW50NjRfdCBiID0gLTg5MTYxNTY0NTY0NDsNCisNCisgIGludDY0X3Qgdl92 bng4ZGlbc2l6ZW9mICh2bng4ZGkpIC8gc2l6ZW9mIChpbnQ2NF90KV07DQor ICBmX3ZueDhkaSAoYSwgYiwgdl92bng4ZGkpOw0KKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBzaXplb2YgKHZueDhkaSkgLyBzaXplb2YgKGludDY0X3QpOyBp KyspDQorICAgIHsNCisgICAgICBpZiAoaSAlIDIgPT0gMCkNCisgew0KKyAg IGlmICh2X3ZueDhkaVtpXSAhPSBhKQ0KKyAgICAgX19idWlsdGluX2Fib3J0 ICgpOw0KKyB9DQorICAgICAgZWxzZQ0KKyB7DQorICAgaWYgKHZfdm54OGRp W2ldICE9IGIpDQorICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQorIH0NCisg ICAgfQ0KKw0KKyAgaW50NjRfdCB2X3ZueDE2ZGlbc2l6ZW9mICh2bngxNmRp KSAvIHNpemVvZiAoaW50NjRfdCldOw0KKyAgZl92bngxNmRpIChhLCBiLCB2 X3ZueDE2ZGkpOw0KKyAgZm9yIChpbnQgaSA9IDA7IGkgPCBzaXplb2YgKHZu eDE2ZGkpIC8gc2l6ZW9mIChpbnQ2NF90KTsgaSsrKQ0KKyAgICB7DQorICAg ICAgaWYgKGkgJSAyID09IDApDQorIHsNCisgICBpZiAodl92bngxNmRpW2ld ICE9IGEpDQorICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQorIH0NCisgICAg ICBlbHNlDQorIHsNCisgICBpZiAodl92bngxNmRpW2ldICE9IGIpDQorICAg ICBfX2J1aWx0aW5fYWJvcnQgKCk7DQorIH0NCisgICAgfQ0KKw0KKyAgcmV0 dXJuIDA7DQorfQ0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYXV0b3ZlYy92bHMtdmxtYXgvcmVwZWF0X3J1bi04 LmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2F1dG92 ZWMvdmxzLXZsbWF4L3JlcGVhdF9ydW4tOC5jDQpuZXcgZmlsZSBtb2RlIDEw MDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLmVlYjJjYWRhMWI3DQotLS0gL2Rl di9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3Yv cnZ2L2F1dG92ZWMvdmxzLXZsbWF4L3JlcGVhdF9ydW4tOC5jDQpAQCAtMCww ICsxLDQxIEBADQorLyogeyBkZy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92 ZWN0b3IgfSB9IH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi0tcGFyYW0gcmlz Y3YtYXV0b3ZlYy1wcmVmZXJlbmNlPWZpeGVkLXZsbWF4IC1PMyIgfSAqLw0K Kw0KKyNpbmNsdWRlICJyZXBlYXQtOS5jIg0KKw0KK2ludA0KK21haW4gKCkN Cit7DQorICBpbnQ2NF90IGEgPSAtMTc4OTA4OTIzNDIzOw0KKyAgaW50NjRf dCBiID0gLTg5MTYxNTY0NTY0NDsNCisgIGludDY0X3QgYyA9IDc4OTA4OTIz NDIzOw0KKyAgaW50NjRfdCBkID0gODE2MTU2NDU2NDQ7DQorDQorICBpbnQ2 NF90IHZfdm54MTZkaVtzaXplb2YgKHZueDE2ZGkpIC8gc2l6ZW9mIChpbnQ2 NF90KV07DQorICBmX3ZueDE2ZGkgKGEsIGIsIGMsIGQsIHZfdm54MTZkaSk7 DQorICBmb3IgKGludCBpID0gMDsgaSA8IHNpemVvZiAodm54MTZkaSkgLyBz aXplb2YgKGludDY0X3QpOyBpKyspDQorICAgIHsNCisgICAgICBpZiAoaSAl IDQgPT0gMCkNCisgew0KKyAgIGlmICh2X3ZueDE2ZGlbaV0gIT0gYSkNCisg ICAgIF9fYnVpbHRpbl9hYm9ydCAoKTsNCisgfQ0KKyAgICAgIGVsc2UgaWYg KGkgJSA0ID09IDEpDQorIHsNCisgICBpZiAodl92bngxNmRpW2ldICE9IGIp DQorICAgICBfX2J1aWx0aW5fYWJvcnQgKCk7DQorIH0NCisgICAgICBlbHNl IGlmIChpICUgNCA9PSAyKQ0KKyB7DQorICAgaWYgKHZfdm54MTZkaVtpXSAh PSBjKQ0KKyAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KKyB9DQorICAgICAg ZWxzZQ0KKyB7DQorICAgaWYgKHZfdm54MTZkaVtpXSAhPSBkKQ0KKyAgICAg X19idWlsdGluX2Fib3J0ICgpOw0KKyB9DQorICAgIH0NCisNCisgIHJldHVy biAwOw0KK30NCi0tIA0KMi4zNi4xDQogDQo= ------=_001_NextPart564688871225_=------