From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: from smtpbg151.qq.com (smtpbg151.qq.com [18.169.211.239]) by sourceware.org (Postfix) with ESMTPS id 502193858C74 for ; Wed, 19 Jul 2023 03:31:30 +0000 (GMT) DMARC-Filter: OpenDMARC Filter v1.4.2 sourceware.org 502193858C74 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: bizesmtp85t1689737484tg1ogiq2 Received: from LAPTOP-EPITNQBU ( [113.104.214.112]) by bizesmtp.qq.com (ESMTP) with id ; Wed, 19 Jul 2023 11:31:23 +0800 (CST) X-QQ-SSF: 01400000000000G0T000000A0000000 X-QQ-FEAT: 7iKP6tVRySb+Dm+P9KEDH7qQ5poYQXTfMddYx3grce1wj2Z+nNAqMn27yfSHi nWQW7GYGiWJ3HUfxW7Sa+YZV1s3Am/tdscSTeuT4Iq9xP46ehoINzha2dNNjYYu1BnELReP wcEd0UdiVKXDc7NBOF+/Dt2wuZPi8b4InQCLJ0jxyU4XUeMMBqqLmNtiLrpRF5QUjHiO6Lo wkn9LydLjfz3MWsnl94eiIFdzExMVxOZdcqw9fU+LAjYi9RnlWmA1fDaNV4AjZLrvSZY0Zr B8uzBXX9FPp6o3KrxislG5xl52Mvd05MyNjtE8lzVIA0PtAWX/JOmfNYNaRD/ddZGkUg9Yh rjcLz22VY4jSJRu44tuoXue2kGBRW2vDB2pilLo5MjB0x+mj49VfBVdEX5W3Q== X-QQ-GoodBg: 2 X-BIZMAIL-ID: 3920177150822541588 Date: Wed, 19 Jul 2023 11:31:23 +0800 From: "juzhe.zhong@rivai.ai" To: pan2.li , gcc-patches Cc: pan2.li , yanzhang.wang , kito.cheng Subject: Re: [PATCH v1] RISC-V: Support CALL for RVV floating-point dynamic rounding References: <20230719032822.85817-1-pan2.li@intel.com> X-Priority: 3 X-GUID: ED1A6C05-5B75-4062-97FD-B0CA0B18BA30 X-Has-Attach: no X-Mailer: Foxmail 7.2.16.188[cn] Mime-Version: 1.0 Message-ID: <7694D6D0C79CD991+20230719113121885054118@rivai.ai> Content-Type: multipart/alternative; boundary="----=_001_NextPart182681773602_=----" X-QQ-SENDSIZE: 520 Feedback-ID: bizesmtp:rivai.ai:qybglogicsvrgz:qybglogicsvrgz7a-one-0 X-Spam-Status: No, score=-8.6 required=5.0 tests=BAYES_00,GIT_PATCH_0,HTML_MESSAGE,KAM_DMARC_STATUS,KAM_SHORT,MIME_BASE64_TEXT,RCVD_IN_BARRACUDACENTRAL,RCVD_IN_DNSWL_NONE,RCVD_IN_MSPIKE_H4,RCVD_IN_MSPIKE_WL,SPF_HELO_PASS,SPF_PASS,TXREP,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_NextPart182681773602_=---- Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: base64 ICAgLyogVGhlIFJUTCB2YXJpYWJsZSB3aGljaCBzdG9yZXMgdGhlIGR5bmFt aWMgRlJNIHZhbHVlLiAgV2UgYWx3YXlzIHVzZSB0aGlzDQogICAgICBSVFgg dG8gcmVzdG9yZSBkeW5hbWljIEZSTSByb3VuZGluZyBtb2RlIGluIG1vZGUg c3dpdGNoaW5nLiAgKi8NCiAgIHJ0eCBkeW5hbWljX2ZybTsNCisNCisgIC8q IFRoZSBib29sZWFuIHZhcmlhYmxlcyBpbmRpY2F0ZXMgdGhlcmUgaXMgYXQg bGVhc3Qgb25lIHN0YXRpYyByb3VuZGluZw0KKyAgICAgbW9kZSBpbnN0cnVj dGlvbiBpbiB0aGUgZnVuY3Rpb24gb3Igbm90LiAgKi8NCisgIGJvb2wgc3Rh dGljX2ZybV9wOw0KDQoNCkFkZCBhIHN0cnVjdHVyZSB3cmFwcGVyIHRvIHdy YXAgdGhlc2UgMiB2YXJpYWJsZSB1cC4NCg0KDQoNCmp1emhlLnpob25nQHJp dmFpLmFpDQogDQpGcm9tOiBwYW4yLmxpDQpEYXRlOiAyMDIzLTA3LTE5IDEx OjI4DQpUbzogZ2NjLXBhdGNoZXMNCkNDOiBqdXpoZS56aG9uZzsgcGFuMi5s aTsgeWFuemhhbmcud2FuZzsga2l0by5jaGVuZw0KU3ViamVjdDogW1BBVENI IHYxXSBSSVNDLVY6IFN1cHBvcnQgQ0FMTCBmb3IgUlZWIGZsb2F0aW5nLXBv aW50IGR5bmFtaWMgcm91bmRpbmcNCkZyb206IFBhbiBMaSA8cGFuMi5saUBp bnRlbC5jb20+DQogDQpJbiBiYXNpYyBkeW5hbWljIHJvdW5kaW5nIG1vZGUs IHdlIHNpbXBseSBpZ25vcmUgY2FsbCBpbnN0cnVjdGlvbnMgYW5kDQp3ZSB3 b3VsZCBsaWtlIHRvIHRha2UgY2FyZSBvZiBjYWxsIGluIHRoaXMgUEFUQ0gu DQogDQpEdXJpbmcgdGhlIGNhbGwsIHRoZSBmcm0gbWF5IGJlIHVwZGF0ZWQg b3Iga2VlcCBhcyBpcy4gVGh1cywgd2UgbXVzdA0KbWFrZSBzdXJlIGF0IGxl YXN0IDIgdGhpbmdzLg0KIA0KMS4gVGhlIHN0YXRpYyBmcm0gYmVmb3JlIGNh bGwgc2hvdWxkIG5vdCBwb2xsdXRlIHRoZSBmcm0gdmFsdWUgaW4gY2FsbC4N CjIuIFRoZSB1cGRhdGVkIGZybSB2YWx1ZSBpbiBjYWxsIHNob3VsZCBiZSBz dGlja3kgYWZ0ZXIgY2FsbCBjb21wbGV0ZWQuDQogDQpXZSB3aWxsIHBlcmZy b20gc29tZSBzdGVwcyB0byBtYWtlIGFib3ZlIGhhcHBlbi4NCiANCjEuIE1h cmsgY2FsbCBpbnN0cnVjdGlvbiB3aXRoIG5ldyBtb2RlIERZTl9DQUxMLg0K Mi4gTWFyayB0aGUgaW5zdHJ1Y3Rpb24gYWZ0ZXIgQ0FMTCBmcm9tIE5PTkUg dG8gRFlOLg0KMy4gV2hlbiBlbWl0IGZvciBhIERZTl9DQUxMLCB3ZSB3aWxs IHJlc3RvcmUgdGhlIGZybSB2YWx1ZS4NCjQuIFdoZW4gZW1pdCBmcm9tIGEg RFlOX0NBTEwsIHdlIHdpbGwgYmFja3VwIHRoZSBmcm0gdmFsdWUuDQogDQpM ZXQncyB0YWtlIGEgZmxvdyBmb3IgdGhpcy4NCiANCiAgICAgICAgICAgKy0t LS0tLS0tLS0tLS0rDQogICAgICAgICAgIHwgRW50cnkgKERZTikgfCA8LSBm cnJtIGE1DQogICAgICAgICAgICstLS0tLS0tLS0tLS0tKw0KICAgICAgICAg IC8gICAgICAgICAgICAgICBcDQogICAgKy0tLS0tLS0rICAgICAgICAgICAg ICstLS0tLS0tLS0tLSsNCiAgICB8IFZGQUREIHwgICAgICAgICAgICAgfCBW RkFERCBSVFogfCAgPC0gZnNybWkgMShSVFopDQogICAgKy0tLS0tLS0rICAg ICAgICAgICAgICstLS0tLS0tLS0tLSsNCiAgICAgICAgICB8ICAgICAgICAg ICAgICAgICAgICB8DQogICAgKy0tLS0tLS0rICAgICAgICAgICAgICstLS0t LS0tLS0tLSsNCiAgICB8IENBTEwgIHwgICAgICAgICAgICAgfCBDQUxMICAg ICAgfCAgPC0gZnNybSBhNQ0KICAgICstLS0tLS0tKyAgICAgICAgICAgICAr LS0tLS0tLS0tLS0rDQogICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAg ICAgfA0KKy0tLS0tLS0tLS0tKyAgICAgICAgICAgICAgICAgKy0tLS0tLS0r DQp8IFNISUZUICAgICB8IDwtIGZycm0gYTUgICAgICB8IFZGQUREIHwgIDwt IGZycm0gYTUNCistLS0tLS0tLS0tLSsgICAgICAgICAgICAgICAgICstLS0t LS0tKw0KICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAvDQorLS0tLS0t LS0tLS0rICAgICAgICAgICAgICAgLw0KfCBWRkFERCBSVVAgfCA8LSBmc3Jt MSAzKFJVUCkNCistLS0tLS0tLS0tLSsgICAgICAgICAgICAgLw0KICAgICAg ICAgICBcICAgICAgICAgICAgIC8NCiAgICAgICAgICAgICstLS0tLS0tLS0t LS0tLS0tLSsNCiAgICAgICAgICAgIHwgRXhpdCAoRFlOX0VYSVQpIHwgPC0g ZnNybSBhNQ0KICAgICAgICAgICAgKy0tLS0tLS0tLS0tLS0tLS0tKw0KIA0K UGxlYXNlICpOT1RFKiBzb21lIGNvcm4gY2FzZXMgbGlrZSBubyBpbnN0cnVj dGlvbiBhZnRlciBhIGNhbGwgaXMgbm90DQp3ZWxsIGhhbmRsZWQsIGFuZCB3 aWxsIGJlIGNvdmVycmVkIGluIGFub3RoZXIgUEFUQ0gocykgc29vbi4NCiAN ClNpZ25lZC1vZmYtYnk6IFBhbiBMaSA8cGFuMi5saUBpbnRlbC5jb20+DQpD by1BdXRob3JlZC1CeTogSnV6aGUtWmhvbmcgPGp1emhlLnpob25nQHJpdmFp LmFpPg0KIA0KZ2NjL0NoYW5nZUxvZzoNCiANCiogY29uZmlnL3Jpc2N2L3Jp c2N2LmNjIChzdHJ1Y3QgbWFjaGluZV9mdW5jdGlvbik6IEFkZCBuZXcgZmll bGQNCnN0YXRpY19mcm1fcC4NCihyaXNjdl9lbWl0X2ZybV9tb2RlX3NldCk6 IEFkZCBEWU5fQ0FMTCBlbWl0Lg0KKHJpc2N2X2ZybV9tb2RlX25lZWRlZCk6 IE5ldyBmdW5jdGlvbiBmb3IgZnJtIG1vZGUgbmVlZGVkLg0KKHJpc2N2X21v ZGVfbmVlZGVkKTogRXh0cmFjIGZ1bmN0aW9uIGZvciBmcm0uDQoocmlzY3Zf ZnJtX21vZGVfYWZ0ZXIpOiBBZGQgRFlOX0NBTEwgYWZ0ZXIuDQoqIGNvbmZp Zy9yaXNjdi92ZWN0b3IubWQgKGZybV9tb2RlKTogQWRkIGR5bl9jYWxsLg0K KGZzcm1zaV9yZXN0b3JlX2V4aXQpOiBSZW5hbWUgdG8gX3ZvbGF0aWxlLg0K KGZzcm1zaV9yZXN0b3JlX3ZvbGF0aWxlKTogTGlrZXdpc2UuDQogDQpnY2Mv dGVzdHN1aXRlL0NoYW5nZUxvZzoNCiANCiogZ2NjLnRhcmdldC9yaXNjdi9y dnYvYmFzZS9mbG9hdC1wb2ludC1mcm0taW5zZXJ0LTcuYzogRml4DQp0ZXN0 cyBjYXNlcy4NCiogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1w b2ludC1keW5hbWljLWZybS0zMy5jOiBOZXcgdGVzdC4NCiogZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zNC5j OiBOZXcgdGVzdC4NCiogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9h dC1wb2ludC1keW5hbWljLWZybS0zNS5jOiBOZXcgdGVzdC4NCiogZ2NjLnRh cmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0z Ni5jOiBOZXcgdGVzdC4NCiogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9m bG9hdC1wb2ludC1keW5hbWljLWZybS0zNy5jOiBOZXcgdGVzdC4NCiogZ2Nj LnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZy bS0zOC5jOiBOZXcgdGVzdC4NCiogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFz ZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zOS5jOiBOZXcgdGVzdC4NCiog Z2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWlj LWZybS00MC5jOiBOZXcgdGVzdC4NCiogZ2NjLnRhcmdldC9yaXNjdi9ydnYv YmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00MS5jOiBOZXcgdGVzdC4N CiogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5h bWljLWZybS00Mi5jOiBOZXcgdGVzdC4NCiogZ2NjLnRhcmdldC9yaXNjdi9y dnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00My5jOiBOZXcgdGVz dC4NCiogZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1k eW5hbWljLWZybS00NC5jOiBOZXcgdGVzdC4NCiogZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9mbG9hdC1wb2ludC1mcm0tcnVuLTQuYzogTmV3IHRlc3Qu DQoqIGdjYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZnJt LXJ1bi01LmM6IE5ldyB0ZXN0Lg0KLS0tDQpnY2MvY29uZmlnL3Jpc2N2L3Jp c2N2LmNjICAgICAgICAgICAgICAgICAgICAgfCA3MyArKysrKysrKysrKysr KystDQpnY2MvY29uZmlnL3Jpc2N2L3ZlY3Rvci5tZCAgICAgICAgICAgICAg ICAgICAgfCAgNCArLQ0KLi4uL3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFt aWMtZnJtLTMzLmMgICAgIHwgMzEgKysrKysrKw0KLi4uL3J2di9iYXNlL2Zs b2F0LXBvaW50LWR5bmFtaWMtZnJtLTM0LmMgICAgIHwgMzIgKysrKysrKw0K Li4uL3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTM1LmMgICAg IHwgMzIgKysrKysrKw0KLi4uL3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFt aWMtZnJtLTM2LmMgICAgIHwgMjkgKysrKysrKw0KLi4uL3J2di9iYXNlL2Zs b2F0LXBvaW50LWR5bmFtaWMtZnJtLTM3LmMgICAgIHwgMzYgKysrKysrKysN Ci4uLi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zOC5jICAg ICB8IDM0ICsrKysrKysrDQouLi4vcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHlu YW1pYy1mcm0tMzkuYyAgICAgfCAzNiArKysrKysrKw0KLi4uL3J2di9iYXNl L2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTQwLmMgICAgIHwgMzQgKysrKysr KysNCi4uLi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00MS5j ICAgICB8IDM3ICsrKysrKysrKw0KLi4uL3J2di9iYXNlL2Zsb2F0LXBvaW50 LWR5bmFtaWMtZnJtLTQyLmMgICAgIHwgMzcgKysrKysrKysrDQouLi4vcnZ2 L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tNDMuYyAgICAgfCAzOCAr KysrKysrKysNCi4uLi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZy bS00NC5jICAgICB8IDQwICsrKysrKysrKw0KLi4uL3Jpc2N2L3J2di9iYXNl L2Zsb2F0LXBvaW50LWZybS1pbnNlcnQtNy5jIHwgIDUgKy0NCi4uLi9yaXNj di9ydnYvYmFzZS9mbG9hdC1wb2ludC1mcm0tcnVuLTQuYyAgICB8IDgyICsr KysrKysrKysrKysrKysrKw0KLi4uL3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBv aW50LWZybS1ydW4tNS5jICAgIHwgODMgKysrKysrKysrKysrKysrKysrKw0K MTcgZmlsZXMgY2hhbmdlZCwgNjU1IGluc2VydGlvbnMoKyksIDggZGVsZXRp b25zKC0pDQpjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJt LTMzLmMNCmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50 YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0t MzQuYw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0z NS5jDQpjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFy Z2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTM2 LmMNCmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tMzcu Yw0KY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zOC5j DQpjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0 L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTM5LmMN CmNyZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tNDAuYw0K Y3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00MS5jDQpj cmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jp c2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTQyLmMNCmNy ZWF0ZSBtb2RlIDEwMDY0NCBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tNDMuYw0KY3Jl YXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00NC5jDQpjcmVh dGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2 L3J2di9iYXNlL2Zsb2F0LXBvaW50LWZybS1ydW4tNC5jDQpjcmVhdGUgbW9k ZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9i YXNlL2Zsb2F0LXBvaW50LWZybS1ydW4tNS5jDQogDQpkaWZmIC0tZ2l0IGEv Z2NjL2NvbmZpZy9yaXNjdi9yaXNjdi5jYyBiL2djYy9jb25maWcvcmlzY3Yv cmlzY3YuY2MNCmluZGV4IGE0NWM1MmEyNDM3Li5lNjU1MjBlZThhMiAxMDA2 NDQNCi0tLSBhL2djYy9jb25maWcvcmlzY3YvcmlzY3YuY2MNCisrKyBiL2dj Yy9jb25maWcvcmlzY3YvcmlzY3YuY2MNCkBAIC0xNTEsNiArMTUxLDEwIEBA IHN0cnVjdCBHVFkoKCkpICBtYWNoaW5lX2Z1bmN0aW9uIHsNCiAgIC8qIFRo ZSBSVEwgdmFyaWFibGUgd2hpY2ggc3RvcmVzIHRoZSBkeW5hbWljIEZSTSB2 YWx1ZS4gIFdlIGFsd2F5cyB1c2UgdGhpcw0KICAgICAgUlRYIHRvIHJlc3Rv cmUgZHluYW1pYyBGUk0gcm91bmRpbmcgbW9kZSBpbiBtb2RlIHN3aXRjaGlu Zy4gICovDQogICBydHggZHluYW1pY19mcm07DQorDQorICAvKiBUaGUgYm9v bGVhbiB2YXJpYWJsZXMgaW5kaWNhdGVzIHRoZXJlIGlzIGF0IGxlYXN0IG9u ZSBzdGF0aWMgcm91bmRpbmcNCisgICAgIG1vZGUgaW5zdHJ1Y3Rpb24gaW4g dGhlIGZ1bmN0aW9uIG9yIG5vdC4gICovDQorICBib29sIHN0YXRpY19mcm1f cDsNCn07DQovKiBJbmZvcm1hdGlvbiBhYm91dCBhIHNpbmdsZSBhcmd1bWVu dC4gICovDQpAQCAtNzY2OSw5ICs3NjczLDEzIEBAIHJpc2N2X3N0YXRpY19m cm1fbW9kZV9wIChpbnQgbW9kZSkNCnN0YXRpYyB2b2lkDQpyaXNjdl9lbWl0 X2ZybV9tb2RlX3NldCAoaW50IG1vZGUsIGludCBwcmV2X21vZGUpDQp7DQor ICBydHggYmFja3VwX3JlZyA9IGNmdW4tPm1hY2hpbmUtPmR5bmFtaWNfZnJt Ow0KKw0KKyAgaWYgKHByZXZfbW9kZSA9PSBGUk1fTU9ERV9EWU5fQ0FMTCkN CisgICAgZW1pdF9pbnNuIChnZW5fZnJybXNpIChiYWNrdXBfcmVnKSk7IC8q IEJhY2t1cCBmcm0gd2hlbiBEWU5fQ0FMTC4gICovDQorDQogICBpZiAobW9k ZSAhPSBwcmV2X21vZGUpDQogICAgIHsNCi0gICAgICBydHggYmFja3VwX3Jl ZyA9IGNmdW4tPm1hY2hpbmUtPmR5bmFtaWNfZnJtOw0KICAgICAgIC8qIFRP RE86IEJ5IGRlc2lnbiwgRlJNX01PREVfeHh4IHVzZWQgYnkgbW9kZSBzd2l0 Y2ggd2hpY2ggaXMNCmRpZmZlcmVudCBmcm9tIHRoZSBGUk0gdmFsdWUgbGlr ZSBGUk1fUlRaIGRlZmluZWQgaW4NCnJpc2N2LXByb3Rvcy5oLiAgV2hlbiBt b2RlIHN3aXRjaGluZyB3ZSBhY3R1YWxseSBuZWVkIGEgY29udmVyc2lvbg0K QEAgLTc2ODEsOSArNzY4OSwxMyBAQCByaXNjdl9lbWl0X2ZybV9tb2RlX3Nl dCAoaW50IG1vZGUsIGludCBwcmV2X21vZGUpDQphbmQgdGhlbiB3ZSBsZXZl cmFnZSB0aGlzIGFzc3VtcHRpb24gd2hlbiBlbWl0LiAgKi8NCiAgICAgICBy dHggZnJtID0gZ2VuX2ludF9tb2RlIChtb2RlLCBTSW1vZGUpOw0KLSAgICAg IGlmIChtb2RlID09IEZSTV9NT0RFX0RZTl9FWElUICYmIHByZXZfbW9kZSAh PSBGUk1fTU9ERV9EWU4pDQorICAgICAgaWYgKG1vZGUgPT0gRlJNX01PREVf RFlOX0NBTEwgJiYgcHJldl9tb2RlICE9IEZSTV9NT0RFX0RZTikNCi8qIE5v IG5lZWQgdG8gZW1pdCB3aGVuIHByZXYgbW9kZSBpcyBEWU4gYWxyZWFkeS4g ICovDQotIGVtaXRfaW5zbiAoZ2VuX2Zzcm1zaV9yZXN0b3JlX2V4aXQgKGJh Y2t1cF9yZWcpKTsNCisgZW1pdF9pbnNuIChnZW5fZnNybXNpX3Jlc3RvcmVf dm9sYXRpbGUgKGJhY2t1cF9yZWcpKTsNCisgICAgICBlbHNlIGlmIChtb2Rl ID09IEZSTV9NT0RFX0RZTl9FWElUICYmIHByZXZfbW9kZSAhPSBGUk1fTU9E RV9EWU4NCisgJiYgcHJldl9tb2RlICE9IEZSTV9NT0RFX0RZTl9DQUxMICYm IGNmdW4tPm1hY2hpbmUtPnN0YXRpY19mcm1fcCkNCisgLyogTm8gbmVlZCB0 byBlbWl0IHdoZW4gcHJldiBtb2RlIGlzIERZTiBvciBEWU5fQ0FMTCBhbHJl YWR5LiAgKi8NCisgZW1pdF9pbnNuIChnZW5fZnNybXNpX3Jlc3RvcmVfdm9s YXRpbGUgKGJhY2t1cF9yZWcpKTsNCiAgICAgICBlbHNlIGlmIChtb2RlID09 IEZSTV9NT0RFX0RZTikNCi8qIFJlc3RvcmUgZnJtIHZhbHVlIGZyb20gYmFj a3VwIHdoZW4gc3dpdGNoIHRvIERZTiBtb2RlLiAgKi8NCmVtaXRfaW5zbiAo Z2VuX2Zzcm1zaV9yZXN0b3JlIChiYWNrdXBfcmVnKSk7DQpAQCAtNzcxMyw2 ICs3NzI1LDUzIEBAIHJpc2N2X2VtaXRfbW9kZV9zZXQgKGludCBlbnRpdHks IGludCBtb2RlLCBpbnQgcHJldl9tb2RlLA0KICAgICB9DQp9DQorLyogUmV0 dXJuIG1vZGUgdGhhdCBmcm0gbXVzdCBiZSBzd2l0Y2hlZCBpbnRvDQorICAg cHJpb3IgdG8gdGhlIGV4ZWN1dGlvbiBvZiBpbnNuLiAgKi8NCisNCitzdGF0 aWMgaW50DQorcmlzY3ZfZnJtX21vZGVfbmVlZGVkIChydHhfaW5zbiAqY3Vy X2luc24sIGludCBjb2RlKQ0KK3sNCisgIGlmIChDQUxMX1AgKGN1cl9pbnNu KSkNCisgICAgcmV0dXJuIEZSTV9NT0RFX0RZTl9DQUxMOw0KKw0KKyAgaW50 IG1vZGUgPSBjb2RlID49IDAgPyBnZXRfYXR0cl9mcm1fbW9kZSAoY3VyX2lu c24pIDogRlJNX01PREVfTk9ORTsNCisNCisgIGlmIChtb2RlID09IEZSTV9N T0RFX05PTkUpDQorICAgIHsNCisgICAgICAvKiBBZnRlciBtZWV0IGEgY2Fs bCwgd2UgbmVlZCB0byBiYWNrdXAgdGhlIGZybSBiZWNhdXNlIGl0IG1heSBi ZQ0KKyB1cGRhdGVkIGR1cmluZyB0aGUgY2FsbC4gSGVyZSwgZm9yIGVhY2gg aW5zbiwgd2Ugd2lsbCBjaGVjayBpZg0KKyB0aGUgcHJldmlvdXMgaW5zbiBp cyBhIGNhbGwgb3Igbm90LiBXaGVuIHByZXZpb3VzIGluc24gaXMgY2FsbCwN CisgdGhlcmUgd2lsbCBiZSAyIGNhc2VzIGZvciB0aGUgZW1pdCBtb2RlIHNl dC4NCisNCisgMS4gQ3VycmVudCBpbnNuIGlzIG5vdCBNT0RFX05PTkUsIHRo ZW4gdGhlIG1vZGUgc3dpdGNoIGZyYW1ld29yaw0KKyAgICAgd2lsbCBkbyB0 aGUgbW9kZSBzd2l0Y2ggZnJvbSBNT0RFX0NBTEwgdG8gTU9ERV9OT05fTk9O RSBuYXRpdmVseS4NCisgMi4gQ3VycmVudCBpbnNuIGlzIE1PREVfTk9ORSwg d2UgbmVlZCB0byBhZGp1c3QgdGhlIE1PREVfTk9ORSB0bw0KKyAgICAgdGhl IE1PREVfRFlOLCBhbmQgbGVhdmUgdGhlIG1vZGUgc3dpdGNoIGl0c2VsZiB0 byBwZXJmb3JtDQorICAgICB0aGUgZW1pdCBtb2RlIHNldC4NCisNCisgVE9E TzogdGhpcyBjYW5ub3QgaGFuZGxlIG9uZSBjYXNlIGlmIHRoZXJlIGlzIG5v IGluc3RydWN0aW9uDQorIGFmdGVyIGEgY2FsbCwgd2Ugd2lsbCB0YWtlIGNh cmUgb2YgaXQgc29vbi4NCisgICAgICAgKi8NCisgICAgICBydHhfaW5zbiAq aW5zbjsNCisgICAgICBiYXNpY19ibG9jayBiYiA9IEJMT0NLX0ZPUl9JTlNO IChjdXJfaW5zbik7DQorDQorICAgICAgZm9yIChpbnNuID0gUFJFVl9JTlNO IChjdXJfaW5zbik7IGluc247IGluc24gPSBQUkVWX0lOU04gKGluc24pKQ0K KyB7DQorICAgaWYgKElOU05fUCAoaW5zbikpDQorICAgICB7DQorICAgICAg IGlmIChDQUxMX1AgKGluc24pKQ0KKyBtb2RlID0gRlJNX01PREVfRFlOOw0K KyAgICAgICBicmVhazsNCisgICAgIH0NCisNCisgICBpZiAoaW5zbiA9PSBQ UkVWX0lOU04gKEJCX0hFQUQgKGJiKSkpDQorICAgICBicmVhazsNCisgfQ0K KyAgICB9DQorDQorICByZXR1cm4gbW9kZTsNCit9DQorDQovKiBSZXR1cm4g bW9kZSB0aGF0IGVudGl0eSBtdXN0IGJlIHN3aXRjaGVkIGludG8NCiAgICBw cmlvciB0byB0aGUgZXhlY3V0aW9uIG9mIGluc24uICAqLw0KQEAgLTc3MjYs NyArNzc4NSw3IEBAIHJpc2N2X21vZGVfbmVlZGVkIChpbnQgZW50aXR5LCBy dHhfaW5zbiAqaW5zbikNCiAgICAgY2FzZSBSSVNDVl9WWFJNOg0KICAgICAg IHJldHVybiBjb2RlID49IDAgPyBnZXRfYXR0cl92eHJtX21vZGUgKGluc24p IDogVlhSTV9NT0RFX05PTkU7DQogICAgIGNhc2UgUklTQ1ZfRlJNOg0KLSAg ICAgIHJldHVybiBjb2RlID49IDAgPyBnZXRfYXR0cl9mcm1fbW9kZSAoaW5z bikgOiBGUk1fTU9ERV9OT05FOw0KKyAgICAgIHJldHVybiByaXNjdl9mcm1f bW9kZV9uZWVkZWQgKGluc24sIGNvZGUpOw0KICAgICBkZWZhdWx0Og0KICAg ICAgIGdjY191bnJlYWNoYWJsZSAoKTsNCiAgICAgfQ0KQEAgLTc4MDMsNiAr Nzg2MiwxMiBAQCByaXNjdl92eHJtX21vZGVfYWZ0ZXIgKHJ0eF9pbnNuICpp bnNuLCBpbnQgbW9kZSkNCnN0YXRpYyBpbnQNCnJpc2N2X2ZybV9tb2RlX2Fm dGVyIChydHhfaW5zbiAqaW5zbiwgaW50IG1vZGUpDQp7DQorICBjZnVuLT5t YWNoaW5lLT5zdGF0aWNfZnJtX3AgPSBjZnVuLT5tYWNoaW5lLT5zdGF0aWNf ZnJtX3ANCisgICAgfHwgcmlzY3Zfc3RhdGljX2ZybV9tb2RlX3AgKG1vZGUp Ow0KKw0KKyAgaWYgKENBTExfUCAoaW5zbikpDQorICAgIHJldHVybiBGUk1f TU9ERV9EWU5fQ0FMTDsNCisNCiAgIGlmIChmcm1fdW5rbm93bl9keW5hbWlj X3AgKGluc24pKQ0KICAgICByZXR1cm4gRlJNX01PREVfRFlOOw0KZGlmZiAt LWdpdCBhL2djYy9jb25maWcvcmlzY3YvdmVjdG9yLm1kIGIvZ2NjL2NvbmZp Zy9yaXNjdi92ZWN0b3IubWQNCmluZGV4IDIxNWVjYjljYjU4Li44YjM1NGU1 OTNjZSAxMDA2NDQNCi0tLSBhL2djYy9jb25maWcvcmlzY3YvdmVjdG9yLm1k DQorKysgYi9nY2MvY29uZmlnL3Jpc2N2L3ZlY3Rvci5tZA0KQEAgLTQ3NSw3 ICs0NzUsNyBAQCAoZGVmaW5lX2F0dHIgInZ4cm1fbW9kZSIgInJudSxybmUs cmRuLHJvZCxub25lIg0KKQ0KOzsgRGVmaW5lcyByb3VuZGluZyBtb2RlIG9m IGFuIGZsb2F0aW5nLXBvaW50IG9wZXJhdGlvbi4NCi0oZGVmaW5lX2F0dHIg ImZybV9tb2RlIiAicm5lLHJ0eixyZG4scnVwLHJtbSxkeW4sZHluX2V4aXQs bm9uZSINCisoZGVmaW5lX2F0dHIgImZybV9tb2RlIiAicm5lLHJ0eixyZG4s cnVwLHJtbSxkeW4sZHluX2V4aXQsZHluX2NhbGwsbm9uZSINCiAgIChjb25k DQogICAgIFsNCiAgICAgICAoZXFfYXR0ciAidHlwZSIgInZmYWx1IikNCkBA IC02MTAsNyArNjEwLDcgQEAgKGRlZmluZV9pbnNuICJmc3Jtc2lfcmVzdG9y ZSINCjs7IFRoZSB2b2xhdGlsZSBmc3Jtc2kgcmVzdG9yZSBpcyB1c2VkIGZv ciB0aGUgZXhpdCBwb2ludCBmb3IgdGhlDQo7OyBkeW5hbWljIG1vZGUgc3dp dGNoaW5nLiBJdCB3aWxsIGdlbmVyYXRlIG9uZSB2b2xhdGlsZSBmc3JtIGE1 DQo7OyB3aGljaCB3b24ndCBiZSBlbGltaW5hdGVkLg0KLShkZWZpbmVfaW5z biAiZnNybXNpX3Jlc3RvcmVfZXhpdCINCisoZGVmaW5lX2luc24gImZzcm1z aV9yZXN0b3JlX3ZvbGF0aWxlIg0KICAgWyhzZXQgKHJlZzpTSSBGUk1fUkVH TlVNKQ0KKHVuc3BlY192b2xhdGlsZTpTSSBbKG1hdGNoX29wZXJhbmQ6U0kg MCAicmVnaXN0ZXJfb3BlcmFuZCIgInIiKV0NCiAgICBVTlNQRUNWX0ZSTV9S RVNUT1JFX0VYSVQpKV0NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2dj Yy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1m cm0tMzMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYv YmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zMy5jDQpuZXcgZmlsZSBt b2RlIDEwMDY0NA0KaW5kZXggMDAwMDAwMDAwMDAuLjRiZDUyMGVhMmFmDQot LS0gL2Rldi9udWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tMzMuYw0K QEAgLTAsMCArMSwzMSBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQor LyogeyBkZy1vcHRpb25zICItbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0IC1P MyAtV25vLXBzYWJpIiB9ICovDQorDQorI2luY2x1ZGUgInJpc2N2X3ZlY3Rv ci5oIg0KKw0KK3NpemVfdCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQ0K K25vcm1hbGl6ZV92bCAoc2l6ZV90IHZsKQ0KK3sNCisgIGlmICh2bCAlIDQg PT0gMCkNCisgICAgcmV0dXJuIHZsOw0KKw0KKyAgcmV0dXJuICgodmwgLyA0 KSArIDEpICogNDsNCit9DQorDQordmZsb2F0MzJtMV90DQordGVzdF9mbG9h dF9wb2ludF9keW5hbWljX2ZybSAodmZsb2F0MzJtMV90IG9wMSwgdmZsb2F0 MzJtMV90IG9wMiwgc2l6ZV90IHZsKQ0KK3sNCisgIHZmbG9hdDMybTFfdCBy ZXN1bHQgPSBvcDE7DQorDQorICByZXN1bHQgPSBfX3Jpc2N2X3ZmYWRkX3Z2 X2YzMm0xX3JtIChyZXN1bHQsIG9wMiwgNCwgdmwpOw0KKyAgdmwgPSBub3Jt YWxpemVfdmwgKHZsKTsNCisgIHJlc3VsdCA9IF9fcmlzY3ZfdmZhZGRfdnZf ZjMybTFfcm0gKG9wMSwgcmVzdWx0LCAyLCB2bCk7DQorDQorICByZXR1cm4g cmVzdWx0Ow0KK30NCisNCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJs ZXItdGltZXMge3ZmYWRkXC52W3ZmXVxzK3ZbMC05XSssXHMqdlswLTldKyxc cypbZmF2XStbMC05XSt9IDIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNj YW4tYXNzZW1ibGVyLXRpbWVzIHtmcnJtXHMrW2F4c11bMC05XSt9IDIgfSB9 ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtm c3JtXHMrW2F4c11bMC05XSt9IDIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7 IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmc3JtaVxzK1swMTIzNF19IDIgfSB9 ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5vdCB7ZnNy bWlccytbYXhzXVswLTldKyxccypbMDEyMzRdfSB9IH0gKi8NCmRpZmYgLS1n aXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2Uv ZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tMzQuYyBiL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWlj LWZybS0zNC5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0KaW5kZXggMDAwMDAw MDAwMDAuLjZjN2NmN2VmNjljDQotLS0gL2Rldi9udWxsDQorKysgYi9nY2Mv dGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9p bnQtZHluYW1pYy1mcm0tMzQuYw0KQEAgLTAsMCArMSwzMiBAQA0KKy8qIHsg ZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRpb25zICItbWFyY2g9 cnY2NGdjdiAtbWFiaT1scDY0IC1PMyAtV25vLXBzYWJpIiB9ICovDQorDQor I2luY2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KKw0KK3NpemVfdCBfX2F0dHJp YnV0ZV9fICgobm9pbmxpbmUpKQ0KK25vcm1hbGl6ZV92bCAoc2l6ZV90IHZs KQ0KK3sNCisgIGlmICh2bCAlIDQgPT0gMCkNCisgICAgcmV0dXJuIHZsOw0K Kw0KKyAgcmV0dXJuICgodmwgLyA0KSArIDEpICogNDsNCit9DQorDQordmZs b2F0MzJtMV90DQordGVzdF9mbG9hdF9wb2ludF9keW5hbWljX2ZybSAodmZs b2F0MzJtMV90IG9wMSwgdmZsb2F0MzJtMV90IG9wMiwgc2l6ZV90IHZsKQ0K K3sNCisgIHZmbG9hdDMybTFfdCByZXN1bHQgPSBvcDE7DQorDQorICByZXN1 bHQgPSBfX3Jpc2N2X3ZmYWRkX3Z2X2YzMm0xX3JtIChyZXN1bHQsIG9wMiwg NCwgdmwpOw0KKyAgcmVzdWx0ID0gX19yaXNjdl92ZmFkZF92dl9mMzJtMV9y bSAob3AxLCByZXN1bHQsIDIsIHZsKTsNCisNCisgIHZsID0gbm9ybWFsaXpl X3ZsICh2bCk7DQorDQorICByZXR1cm4gdmwgPiAxMjggPyByZXN1bHQgOiBv cDI7DQorfQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10 aW1lcyB7dmZhZGRcLnZbdmZdXHMrdlswLTldKyxccyp2WzAtOV0rLFxzKltm YXZdK1swLTldK30gMiB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMge2Zycm1ccytbYXhzXVswLTldK30gMSB9IH0gKi8N CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zzcm1p XHMrWzAxMjM0XX0gMiB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMge2Zzcm1ccytbYXhzXVswLTldK30gMSB9IH0gKi8N CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtmc3JtaVxz K1theHNdWzAtOV0rLFxzKlswMTIzNF19IH0gfSAqLw0KZGlmZiAtLWdpdCBh L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9h dC1wb2ludC1keW5hbWljLWZybS0zNS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2Mu dGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJt LTM1LmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAw MC4uYjdmNWE2OTE5ZjQNCi0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0 c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1k eW5hbWljLWZybS0zNS5jDQpAQCAtMCwwICsxLDMyIEBADQorLyogeyBkZy1k byBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0 Z2N2IC1tYWJpPWxwNjQgLU8zIC1Xbm8tcHNhYmkiIH0gKi8NCisNCisjaW5j bHVkZSAicmlzY3ZfdmVjdG9yLmgiDQorDQorc2l6ZV90IF9fYXR0cmlidXRl X18gKChub2lubGluZSkpDQorbm9ybWFsaXplX3ZsIChzaXplX3QgdmwpDQor ew0KKyAgaWYgKHZsICUgNCA9PSAwKQ0KKyAgICByZXR1cm4gdmw7DQorDQor ICByZXR1cm4gKCh2bCAvIDQpICsgMSkgKiA0Ow0KK30NCisNCit2ZmxvYXQz Mm0xX3QNCit0ZXN0X2Zsb2F0X3BvaW50X2R5bmFtaWNfZnJtICh2ZmxvYXQz Mm0xX3Qgb3AxLCB2ZmxvYXQzMm0xX3Qgb3AyLCBzaXplX3QgdmwpDQorew0K KyAgdmZsb2F0MzJtMV90IHJlc3VsdCA9IG9wMTsNCisNCisgIHZsID0gbm9y bWFsaXplX3ZsICh2bCk7DQorDQorICByZXN1bHQgPSBfX3Jpc2N2X3ZmYWRk X3Z2X2YzMm0xX3JtIChyZXN1bHQsIG9wMiwgNCwgdmwpOw0KKyAgcmVzdWx0 ID0gX19yaXNjdl92ZmFkZF92dl9mMzJtMV9ybSAob3AxLCByZXN1bHQsIDIs IHZsKTsNCisNCisgIHJldHVybiByZXN1bHQ7DQorfQ0KKw0KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dmZhZGRcLnZbdmZdXHMr dlswLTldKyxccyp2WzAtOV0rLFxzKltmYXZdK1swLTldK30gMiB9IH0gKi8N CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zycm1c cytbYXhzXVswLTldK30gMSB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge2Zzcm1pXHMrWzAxMjM0XX0gMiB9IH0gKi8N CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zzcm1c cytbYXhzXVswLTldK30gMSB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90IHtmc3JtaVxzK1theHNdWzAtOV0rLFxzKlswMTIz NF19IH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0z Ni5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNl L2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTM2LmMNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uNDQ4NWNlYTI0ZDkNCi0tLSAv ZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zNi5jDQpAQCAt MCwwICsxLDI5IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7 IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjQgLU8zIC1X bm8tcHNhYmkiIH0gKi8NCisNCisjaW5jbHVkZSAicmlzY3ZfdmVjdG9yLmgi DQorDQorc2l6ZV90IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQorbm9y bWFsaXplX3ZsIChzaXplX3QgdmwpDQorew0KKyAgaWYgKHZsICUgNCA9PSAw KQ0KKyAgICByZXR1cm4gdmw7DQorDQorICByZXR1cm4gKCh2bCAvIDQpICsg MSkgKiA0Ow0KK30NCisNCit2ZmxvYXQzMm0xX3QNCit0ZXN0X2Zsb2F0X3Bv aW50X2R5bmFtaWNfZnJtICh2ZmxvYXQzMm0xX3Qgb3AxLCB2ZmxvYXQzMm0x X3Qgb3AyLCBzaXplX3QgdmwpDQorew0KKyAgdmZsb2F0MzJtMV90IHJlc3Vs dCA9IG9wMTsNCisNCisgIGlmICh2bCAlIDQgIT0gMCkNCisgICAgdmwgPSBu b3JtYWxpemVfdmwgKHZsKTsNCisNCisgIHJldHVybiB2bCA+IDE2ID8gcmVz dWx0IDogb3AyOw0KK30NCisNCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtmc3JtaVxzK1theHNdWzAtOV0rLFxzKlswMTIzNF19IH0g fSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge2Zz cm1pXHMrWzAxMjM0XX0gfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4t YXNzZW1ibGVyLW5vdCB7ZnNybVxzK1theHNdWzAtOV0rfSB9IH0gKi8NCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtmcnJtXHMrW2F4 c11bMC05XSt9IH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUv Z2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWlj LWZybS0zNy5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2 di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTM3LmMNCm5ldyBmaWxl IG1vZGUgMTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uYTFmY2ExYTJhM2YN Ci0tLSAvZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zNy5j DQpAQCAtMCwwICsxLDM2IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8N CisvKiB7IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjQg LU8zIC1Xbm8tcHNhYmkiIH0gKi8NCisNCisjaW5jbHVkZSAicmlzY3ZfdmVj dG9yLmgiDQorDQorc2l6ZV90IF9fYXR0cmlidXRlX18gKChub2lubGluZSkp DQorbm9ybWFsaXplX3ZsIChzaXplX3QgdmwpDQorew0KKyAgaWYgKHZsICUg NCA9PSAwKQ0KKyAgICByZXR1cm4gdmw7DQorDQorICByZXR1cm4gKCh2bCAv IDQpICsgMSkgKiA0Ow0KK30NCisNCit2ZmxvYXQzMm0xX3QNCit0ZXN0X2Zs b2F0X3BvaW50X2R5bmFtaWNfZnJtICh2ZmxvYXQzMm0xX3Qgb3AxLCB2Zmxv YXQzMm0xX3Qgb3AyLA0KKyAgICAgICBpbnQgY291bnQsIHNpemVfdCB2bCkN Cit7DQorICB2ZmxvYXQzMm0xX3QgcmVzdWx0ID0gb3AxOw0KKw0KKyAgZm9y IChpbnQgaSA9IDA7IGkgPCBjb3VudDsgaSsrKQ0KKyAgICB7DQorICAgICAg aWYgKGkgJSAyID09IDApDQorICAgICAgICByZXN1bHQgPSBfX3Jpc2N2X3Zm YWRkX3Z2X2YzMm0xX3JtIChyZXN1bHQsIG9wMiwgNCwgdmwpOw0KKyAgICAg IGVsc2UNCisgICAgICAgIHZsID0gbm9ybWFsaXplX3ZsICh2bCk7DQorICAg IH0NCisNCisgIHJldHVybiByZXN1bHQ7DQorfQ0KKw0KKy8qIHsgZGctZmlu YWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dmZhZGRcLnZbdmZdXHMrdlsw LTldKyxccyp2WzAtOV0rLFxzKltmYXZdK1swLTldK30gMSB9IH0gKi8NCisv KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zycm1ccytb YXhzXVswLTldK30gMiB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMge2Zzcm1ccytbYXhzXVswLTldK30gMiB9IH0gKi8N CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zzcm1p XHMrWzAxMjM0XX0gMSB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItbm90IHtmc3JtaVxzK1theHNdWzAtOV0rLFxzKlswMTIzNF19 IH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdl dC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zOC5j IGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zs b2F0LXBvaW50LWR5bmFtaWMtZnJtLTM4LmMNCm5ldyBmaWxlIG1vZGUgMTAw NjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uOGQ1OWNhZTlhODcNCi0tLSAvZGV2 L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS0zOC5jDQpAQCAtMCww ICsxLDM0IEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRn LW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjQgLU8zIC1Xbm8t cHNhYmkiIH0gKi8NCisNCisjaW5jbHVkZSAicmlzY3ZfdmVjdG9yLmgiDQor DQorc2l6ZV90IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQorbm9ybWFs aXplX3ZsIChzaXplX3QgdmwpDQorew0KKyAgaWYgKHZsICUgNCA9PSAwKQ0K KyAgICByZXR1cm4gdmw7DQorDQorICByZXR1cm4gKCh2bCAvIDQpICsgMSkg KiA0Ow0KK30NCisNCit2ZmxvYXQzMm0xX3QNCit0ZXN0X2Zsb2F0X3BvaW50 X2R5bmFtaWNfZnJtICh2ZmxvYXQzMm0xX3Qgb3AxLCB2ZmxvYXQzMm0xX3Qg b3AyLA0KKyAgICAgICBpbnQgY291bnQsIHNpemVfdCB2bCkNCit7DQorICB2 ZmxvYXQzMm0xX3QgcmVzdWx0ID0gb3AxOw0KKw0KKyAgZm9yIChpbnQgaSA9 IDA7IGkgPCBjb3VudDsgaSsrKQ0KKyAgICB7DQorICAgICAgcmVzdWx0ID0g X19yaXNjdl92ZmFkZF92dl9mMzJtMV9ybSAocmVzdWx0LCBvcDIsIDQsIHZs KTsNCisgICAgICB2bCA9IG5vcm1hbGl6ZV92bCAodmwpOw0KKyAgICB9DQor DQorICByZXR1cm4gcmVzdWx0Ow0KK30NCisNCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMge3ZmYWRkXC52W3ZmXVxzK3ZbMC05XSss XHMqdlswLTldKyxccypbZmF2XStbMC05XSt9IDEgfSB9ICovDQorLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmcnJtXHMrW2F4c11b MC05XSt9IDIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzIHtmc3JtXHMrW2F4c11bMC05XSt9IDEgfSB9ICovDQorLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmc3JtaVxzK1sw MTIzNF19IDEgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLW5vdCB7ZnNybWlccytbYXhzXVswLTldKyxccypbMDEyMzRdfSB9IH0g Ki8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlz Y3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tMzkuYyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1w b2ludC1keW5hbWljLWZybS0zOS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0NA0K aW5kZXggMDAwMDAwMDAwMDAuLjA0YzU0ODc3MzkzDQotLS0gL2Rldi9udWxs DQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jh c2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tMzkuYw0KQEAgLTAsMCArMSwz NiBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1vcHRp b25zICItbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0IC1PMyAtV25vLXBzYWJp IiB9ICovDQorDQorI2luY2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KKw0KK3Np emVfdCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQ0KK25vcm1hbGl6ZV92 bCAoc2l6ZV90IHZsKQ0KK3sNCisgIGlmICh2bCAlIDQgPT0gMCkNCisgICAg cmV0dXJuIHZsOw0KKw0KKyAgcmV0dXJuICgodmwgLyA0KSArIDEpICogNDsN Cit9DQorDQordmZsb2F0MzJtMV90DQordGVzdF9mbG9hdF9wb2ludF9keW5h bWljX2ZybSAodmZsb2F0MzJtMV90IG9wMSwgdmZsb2F0MzJtMV90IG9wMiwN CisgICAgICAgaW50IGNvdW50LCBzaXplX3QgdmwpDQorew0KKyAgdmZsb2F0 MzJtMV90IHJlc3VsdCA9IG9wMTsNCisNCisgIGZvciAoaW50IGkgPSAwOyBp IDwgY291bnQ7IGkrKykNCisgICAgew0KKyAgICAgIHJlc3VsdCA9IF9fcmlz Y3ZfdmZhZGRfdnZfZjMybTFfcm0gKHJlc3VsdCwgb3AyLCA0LCB2bCk7DQor DQorICAgICAgaWYgKHZsICUgOCAhPSAwKQ0KKyAgICAgICAgdmwgPSBub3Jt YWxpemVfdmwgKHZsKTsNCisgICAgfQ0KKw0KKyAgcmV0dXJuIHJlc3VsdDsN Cit9DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVz IHt2ZmFkZFwudlt2Zl1ccyt2WzAtOV0rLFxzKnZbMC05XSssXHMqW2Zhdl0r WzAtOV0rfSAyIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyB7ZnJybVxzK1theHNdWzAtOV0rfSAyIH0gfSAqLw0KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7ZnNybVxzK1th eHNdWzAtOV0rfSAyIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFz c2VtYmxlci10aW1lcyB7ZnNybWlccytbMDEyMzRdfSAxIH0gfSAqLw0KKy8q IHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge2Zzcm1pXHMrW2F4 c11bMC05XSssXHMqWzAxMjM0XX0gfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBv aW50LWR5bmFtaWMtZnJtLTQwLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJn ZXQvcmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tNDAu Yw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi40 OWNmNTJmNzM5Yg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFt aWMtZnJtLTQwLmMNCkBAIC0wLDAgKzEsMzQgQEANCisvKiB7IGRnLWRvIGNv bXBpbGUgfSAqLw0KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3Yg LW1hYmk9bHA2NCAtTzMgLVduby1wc2FiaSIgfSAqLw0KKw0KKyNpbmNsdWRl ICJyaXNjdl92ZWN0b3IuaCINCisNCitzaXplX3QgX19hdHRyaWJ1dGVfXyAo KG5vaW5saW5lKSkNCitub3JtYWxpemVfdmwgKHNpemVfdCB2bCkNCit7DQor ICBpZiAodmwgJSA0ID09IDApDQorICAgIHJldHVybiB2bDsNCisNCisgIHJl dHVybiAoKHZsIC8gNCkgKyAxKSAqIDQ7DQorfQ0KKw0KK3ZmbG9hdDMybTFf dA0KK3Rlc3RfZmxvYXRfcG9pbnRfZHluYW1pY19mcm0gKHZmbG9hdDMybTFf dCBvcDEsIHZmbG9hdDMybTFfdCBvcDIsIHNpemVfdCB2bCkNCit7DQorICB2 ZmxvYXQzMm0xX3QgcmVzdWx0ID0gb3AxOw0KKw0KKyAgcmVzdWx0ID0gX19y aXNjdl92ZmFkZF92dl9mMzJtMV9ybSAocmVzdWx0LCBvcDIsIDQsIHZsKTsN CisNCisgIHZsID0gbm9ybWFsaXplX3ZsICh2bCk7DQorICB2bCA9IG5vcm1h bGl6ZV92bCAodmwpOw0KKw0KKyAgcmVzdWx0ID0gX19yaXNjdl92ZmFkZF92 dl9mMzJtMV9ybSAob3AxLCByZXN1bHQsIDIsIHZsKTsNCisNCisgIHJldHVy biByZXN1bHQ7DQorfQ0KKw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2Vt Ymxlci10aW1lcyB7dmZhZGRcLnZbdmZdXHMrdlswLTldKyxccyp2WzAtOV0r LFxzKltmYXZdK1swLTldK30gMiB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMge2Zycm1ccytbYXhzXVswLTldK30gMiB9 IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMg e2Zzcm1pXHMrWzAxMjM0XX0gMiB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMge2Zzcm1ccytbYXhzXVswLTldK30gMiB9 IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItbm90IHtm c3JtaVxzK1theHNdWzAtOV0rLFxzKlswMTIzNF19IH0gfSAqLw0KZGlmZiAt LWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFz ZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00MS5jIGIvZ2NjL3Rlc3RzdWl0 ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFt aWMtZnJtLTQxLmMNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0DQppbmRleCAwMDAw MDAwMDAwMC4uNzllZjU1YjJjOWYNCi0tLSAvZGV2L251bGwNCisrKyBiL2dj Yy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1w b2ludC1keW5hbWljLWZybS00MS5jDQpAQCAtMCwwICsxLDM3IEBADQorLyog eyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7IGRnLW9wdGlvbnMgIi1tYXJj aD1ydjY0Z2N2IC1tYWJpPWxwNjQgLU8zIC1Xbm8tcHNhYmkiIH0gKi8NCisN CisjaW5jbHVkZSAicmlzY3ZfdmVjdG9yLmgiDQorDQorc2l6ZV90IF9fYXR0 cmlidXRlX18gKChub2lubGluZSkpDQorbm9ybWFsaXplX3ZsIChzaXplX3Qg dmwpDQorew0KKyAgaWYgKHZsICUgNCA9PSAwKQ0KKyAgICByZXR1cm4gdmw7 DQorDQorICByZXR1cm4gKCh2bCAvIDQpICsgMSkgKiA0Ow0KK30NCisNCit2 ZmxvYXQzMm0xX3QNCit0ZXN0X2Zsb2F0X3BvaW50X2R5bmFtaWNfZnJtICh2 ZmxvYXQzMm0xX3Qgb3AxLCB2ZmxvYXQzMm0xX3Qgb3AyLCBzaXplX3Qgdmwp DQorew0KKyAgdmZsb2F0MzJtMV90IHJlc3VsdCA9IG9wMTsNCisNCisgIHJl c3VsdCA9IF9fcmlzY3ZfdmZhZGRfdnZfZjMybTFfcm0gKHJlc3VsdCwgb3Ay LCA0LCB2bCk7DQorDQorICB2bCA9IG5vcm1hbGl6ZV92bCAodmwpOw0KKw0K KyAgcmVzdWx0ID0gX19yaXNjdl92ZmFkZF92dl9mMzJtMV9ybSAocmVzdWx0 LCBvcDIsIDQsIHZsKTsNCisNCisgIHZsID0gbm9ybWFsaXplX3ZsICh2bCk7 DQorDQorICByZXN1bHQgPSBfX3Jpc2N2X3ZmYWRkX3Z2X2YzMm0xX3JtIChv cDEsIHJlc3VsdCwgNCwgdmwpOw0KKw0KKyAgcmV0dXJuIHJlc3VsdDsNCit9 DQorDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHt2 ZmFkZFwudlt2Zl1ccyt2WzAtOV0rLFxzKnZbMC05XSssXHMqW2Zhdl0rWzAt OV0rfSAzIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7ZnJybVxzK1theHNdWzAtOV0rfSAzIH0gfSAqLw0KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7ZnNybWlccytbMDEy MzRdfSAzIH0gfSAqLw0KKy8qIHsgZGctZmluYWwgeyBzY2FuLWFzc2VtYmxl ci10aW1lcyB7ZnNybVxzK1theHNdWzAtOV0rfSAzIH0gfSAqLw0KKy8qIHsg ZGctZmluYWwgeyBzY2FuLWFzc2VtYmxlci1ub3Qge2Zzcm1pXHMrW2F4c11b MC05XSssXHMqWzAxMjM0XX0gfSB9ICovDQpkaWZmIC0tZ2l0IGEvZ2NjL3Rl c3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50 LWR5bmFtaWMtZnJtLTQyLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tNDIuYw0K bmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAwMDAwMDAwMDAwLi5kMmEx N2FkNzE1Zg0KLS0tIC9kZXYvbnVsbA0KKysrIGIvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWR5bmFtaWMt ZnJtLTQyLmMNCkBAIC0wLDAgKzEsMzcgQEANCisvKiB7IGRnLWRvIGNvbXBp bGUgfSAqLw0KKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXJ2NjRnY3YgLW1h Ymk9bHA2NCAtTzMgLVduby1wc2FiaSIgfSAqLw0KKw0KKyNpbmNsdWRlICJy aXNjdl92ZWN0b3IuaCINCisNCitzaXplX3QgX19hdHRyaWJ1dGVfXyAoKG5v aW5saW5lKSkNCitub3JtYWxpemVfdmwgKHNpemVfdCB2bCkNCit7DQorICBp ZiAodmwgJSA0ID09IDApDQorICAgIHJldHVybiB2bDsNCisNCisgIHJldHVy biAoKHZsIC8gNCkgKyAxKSAqIDQ7DQorfQ0KKw0KK3ZmbG9hdDMybTFfdA0K K3Rlc3RfZmxvYXRfcG9pbnRfZHluYW1pY19mcm0gKHZmbG9hdDMybTFfdCBv cDEsIHZmbG9hdDMybTFfdCBvcDIsIHNpemVfdCB2bCkNCit7DQorICB2Zmxv YXQzMm0xX3QgcmVzdWx0ID0gb3AxOw0KKw0KKyAgcmVzdWx0ID0gX19yaXNj dl92ZmFkZF92dl9mMzJtMV9ybSAocmVzdWx0LCBvcDIsIDQsIHZsKTsNCisN CisgIHZsID0gbm9ybWFsaXplX3ZsICh2bCk7DQorDQorICByZXN1bHQgPSBf X3Jpc2N2X3ZmYWRkX3Z2X2YzMm0xIChyZXN1bHQsIG9wMiwgdmwpOw0KKw0K KyAgdmwgPSBub3JtYWxpemVfdmwgKHZsKTsNCisNCisgIHJlc3VsdCA9IF9f cmlzY3ZfdmZhZGRfdnZfZjMybTFfcm0gKG9wMSwgcmVzdWx0LCAyLCB2bCk7 DQorDQorICByZXR1cm4gcmVzdWx0Ow0KK30NCisNCisvKiB7IGRnLWZpbmFs IHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge3ZmYWRkXC52W3ZmXVxzK3ZbMC05 XSssXHMqdlswLTldKyxccypbZmF2XStbMC05XSt9IDMgfSB9ICovDQorLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmcnJtXHMrW2F4 c11bMC05XSt9IDMgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzIHtmc3JtaVxzK1swMTIzNF19IDIgfSB9ICovDQorLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmc3JtXHMrW2F4 c11bMC05XSt9IDMgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLW5vdCB7ZnNybWlccytbYXhzXVswLTldKyxccypbMDEyMzRdfSB9 IH0gKi8NCmRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQv cmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tNDMuYyBi L2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9h dC1wb2ludC1keW5hbWljLWZybS00My5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAuLjUwZTFkYTJjM2MxDQotLS0gL2Rldi9u dWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2Jhc2UvZmxvYXQtcG9pbnQtZHluYW1pYy1mcm0tNDMuYw0KQEAgLTAsMCAr MSwzOCBAQA0KKy8qIHsgZGctZG8gY29tcGlsZSB9ICovDQorLyogeyBkZy1v cHRpb25zICItbWFyY2g9cnY2NGdjdiAtbWFiaT1scDY0IC1PMyAtV25vLXBz YWJpIiB9ICovDQorDQorI2luY2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KKw0K K3NpemVfdCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQ0KK25vcm1hbGl6 ZV92bCAoc2l6ZV90IHZsKQ0KK3sNCisgIGlmICh2bCAlIDQgPT0gMCkNCisg ICAgcmV0dXJuIHZsOw0KKw0KKyAgcmV0dXJuICgodmwgLyA0KSArIDEpICog NDsNCit9DQorDQordmZsb2F0MzJtMV90DQordGVzdF9mbG9hdF9wb2ludF9k eW5hbWljX2ZybSAodmZsb2F0MzJtMV90IG9wMSwgdmZsb2F0MzJtMV90IG9w Miwgc2l6ZV90IHZsKQ0KK3sNCisgIHZmbG9hdDMybTFfdCByZXN1bHQgPSBv cDE7DQorDQorICByZXN1bHQgPSBfX3Jpc2N2X3ZmYWRkX3Z2X2YzMm0xX3Jt IChyZXN1bHQsIG9wMiwgNCwgdmwpOw0KKw0KKyAgdmwgPSBub3JtYWxpemVf dmwgKHZsKTsNCisNCisgIGlmICh2bCAlIDE2ID09IDApDQorICAgIHJlc3Vs dCA9IF9fcmlzY3ZfdmZhZGRfdnZfZjMybTFfcm0gKHJlc3VsdCwgb3AyLCAx LCB2bCk7DQorDQorICB2bCA9IG5vcm1hbGl6ZV92bCAodmwpOw0KKw0KKyAg cmVzdWx0ID0gX19yaXNjdl92ZmFkZF92dl9mMzJtMSAob3AxLCByZXN1bHQs IHZsKTsNCisNCisgIHJldHVybiByZXN1bHQ7DQorfQ0KKw0KKy8qIHsgZGct ZmluYWwgeyBzY2FuLWFzc2VtYmxlci10aW1lcyB7dmZhZGRcLnZbdmZdXHMr dlswLTldKyxccyp2WzAtOV0rLFxzKltmYXZdK1swLTldK30gMyB9IH0gKi8N CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zycm1c cytbYXhzXVswLTldK30gMyB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItdGltZXMge2Zzcm1pXHMrWzAxMjM0XX0gMiB9IH0gKi8N CisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zzcm1c cytbYXhzXVswLTldK30gMyB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nh bi1hc3NlbWJsZXItbm90IHtmc3JtaVxzK1theHNdWzAtOV0rLFxzKlswMTIz NF19IH0gfSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRh cmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00 NC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNl L2Zsb2F0LXBvaW50LWR5bmFtaWMtZnJtLTQ0LmMNCm5ldyBmaWxlIG1vZGUg MTAwNjQ0DQppbmRleCAwMDAwMDAwMDAwMC4uYTY2Y2E4OTMwOGINCi0tLSAv ZGV2L251bGwNCisrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNj di9ydnYvYmFzZS9mbG9hdC1wb2ludC1keW5hbWljLWZybS00NC5jDQpAQCAt MCwwICsxLDQwIEBADQorLyogeyBkZy1kbyBjb21waWxlIH0gKi8NCisvKiB7 IGRnLW9wdGlvbnMgIi1tYXJjaD1ydjY0Z2N2IC1tYWJpPWxwNjQgLU8zIC1X bm8tcHNhYmkiIH0gKi8NCisNCisjaW5jbHVkZSAicmlzY3ZfdmVjdG9yLmgi DQorDQorc2l6ZV90IF9fYXR0cmlidXRlX18gKChub2lubGluZSkpDQorbm9y bWFsaXplX3ZsIChzaXplX3QgdmwpDQorew0KKyAgaWYgKHZsICUgNCA9PSAw KQ0KKyAgICByZXR1cm4gdmw7DQorDQorICByZXR1cm4gKCh2bCAvIDQpICsg MSkgKiA0Ow0KK30NCisNCit2ZmxvYXQzMm0xX3QNCit0ZXN0X2Zsb2F0X3Bv aW50X2R5bmFtaWNfZnJtICh2ZmxvYXQzMm0xX3Qgb3AxLCB2ZmxvYXQzMm0x X3Qgb3AyLCBzaXplX3QgdmwpDQorew0KKyAgdmZsb2F0MzJtMV90IHJlc3Vs dCA9IG9wMTsNCisNCisgIHJlc3VsdCA9IF9fcmlzY3ZfdmZhZGRfdnZfZjMy bTFfcm0gKHJlc3VsdCwgb3AyLCA0LCB2bCk7DQorDQorICB2bCA9IG5vcm1h bGl6ZV92bCAodmwpOw0KKw0KKyAgaWYgKHZsICUgMTYgPT0gMCkNCisgICAg cmVzdWx0ID0gX19yaXNjdl92ZmFkZF92dl9mMzJtMV9ybSAocmVzdWx0LCBv cDIsIDEsIHZsKTsNCisNCisNCisgIGlmICh2bCAlIDcgIT0gMCkNCisgICAg dmwgPSBub3JtYWxpemVfdmwgKHZsKTsNCisNCisgIHJlc3VsdCA9IF9fcmlz Y3ZfdmZhZGRfdnZfZjMybTEgKG9wMSwgcmVzdWx0LCB2bCk7DQorDQorICBy ZXR1cm4gcmVzdWx0Ow0KK30NCisNCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1h c3NlbWJsZXItdGltZXMge3ZmYWRkXC52W3ZmXVxzK3ZbMC05XSssXHMqdlsw LTldKyxccypbZmF2XStbMC05XSt9IDMgfSB9ICovDQorLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmcnJtXHMrW2F4c11bMC05XSt9 IDMgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRp bWVzIHtmc3JtaVxzK1swMTIzNF19IDIgfSB9ICovDQorLyogeyBkZy1maW5h bCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmc3JtXHMrW2F4c11bMC05XSt9 IDQgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLW5v dCB7ZnNybWlccytbYXhzXVswLTldKyxccypbMDEyMzRdfSB9IH0gKi8NCmRp ZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2Jhc2UvZmxvYXQtcG9pbnQtZnJtLWluc2VydC03LmMgYi9nY2MvdGVzdHN1 aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2L2Jhc2UvZmxvYXQtcG9pbnQtZnJt LWluc2VydC03LmMNCmluZGV4IDEyZGIxMTJkZDBiLi42ZGU5ZDA2Yjg3NSAx MDA2NDQNCi0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9y dnYvYmFzZS9mbG9hdC1wb2ludC1mcm0taW5zZXJ0LTcuYw0KKysrIGIvZ2Nj L3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBv aW50LWZybS1pbnNlcnQtNy5jDQpAQCAtMjYsNiArMjYsNyBAQCB0ZXN0X2Zs b2F0X3BvaW50X2ZybV9zdGF0aWMgKGZsb2F0ICpvdXQsIHZmbG9hdDMybTFf dCBvcDEsIHZmbG9hdDMybTFfdCBvcDIsDQp9DQovKiB7IGRnLWZpbmFsIHsg c2Nhbi1hc3NlbWJsZXItdGltZXMge3ZmYWRkXC52W3ZmXVxzK3ZbMC05XSss XHMqdlswLTldKyxccypbZmF2XStbMC05XSt9IDIgfSB9ICovDQotLyogeyBk Zy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmc3JtXHMrW2F4c11b MC05XSt9IDEgfSB9ICovDQotLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1i bGVyLXRpbWVzIHtmcnJtXHMrW2F4c11bMC05XSt9IDEgfSB9ICovDQorLyog eyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHtmcnJtXHMrW2F4 c11bMC05XSt9IDIgfSB9ICovDQorLyogeyBkZy1maW5hbCB7IHNjYW4tYXNz ZW1ibGVyLXRpbWVzIHtmc3JtXHMrW2F4c11bMC05XSt9IDIgfSB9ICovDQov KiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3NlbWJsZXItdGltZXMge2Zzcm1pXHMr WzAxMjM0XX0gMiB9IH0gKi8NCisvKiB7IGRnLWZpbmFsIHsgc2Nhbi1hc3Nl bWJsZXItbm90IHtmc3JtaVxzK1theHNdWzAtOV0rLFxzKlswMTIzNF19IH0g fSAqLw0KZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9y aXNjdi9ydnYvYmFzZS9mbG9hdC1wb2ludC1mcm0tcnVuLTQuYyBiL2djYy90 ZXN0c3VpdGUvZ2NjLnRhcmdldC9yaXNjdi9ydnYvYmFzZS9mbG9hdC1wb2lu dC1mcm0tcnVuLTQuYw0KbmV3IGZpbGUgbW9kZSAxMDA2NDQNCmluZGV4IDAw MDAwMDAwMDAwLi41Nzk2YWE1M2E3Mw0KLS0tIC9kZXYvbnVsbA0KKysrIGIv Z2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0 LXBvaW50LWZybS1ydW4tNC5jDQpAQCAtMCwwICsxLDgyIEBADQorLyogeyBk Zy1kbyBydW4geyB0YXJnZXQgeyByaXNjdl92ZWN0b3IgfSB9IH0gKi8NCisv KiB7IGRnLW9wdGlvbnMgIi1PMyAtV25vLXBzYWJpIiB9ICovDQorDQorI2lu Y2x1ZGUgInJpc2N2X3ZlY3Rvci5oIg0KKyNpbmNsdWRlIDxzdGRpby5oPg0K KyNpbmNsdWRlIDxzdGRpbnQtZ2NjLmg+DQorDQorI2RlZmluZSBPUklHSU5B TF9GUk0gMQ0KKw0KK3N0YXRpYyBpbnQNCitnZXRfZnJtICgpDQorew0KKyAg aW50IGZybSA9IC0xOw0KKw0KKyAgX19hc21fXyB2b2xhdGlsZSAoDQorICAg ICJmcnJtICUwIg0KKyAgICA6Ij1yIihmcm0pDQorICAgIDoNCisgICAgOg0K KyAgKTsNCisNCisgIHJldHVybiBmcm07DQorfQ0KKw0KK3N0YXRpYyB2b2lk DQorc2V0X2ZybSAoaW50IGZybSkNCit7DQorICBfX2FzbV9fIHZvbGF0aWxl ICgNCisgICAgImZzcm0gJTAiDQorICAgIDoNCisgICAgOiJyIihmcm0pDQor ICAgIDoNCisgICk7DQorfQ0KKw0KK3N0YXRpYyBpbmxpbmUgdm9pZA0KK2Fz c2VydF9lcXVhbCAoaW50IGEsIGludCBiLCBjaGFyICptZXNzYWdlKQ0KK3sN CisgIGlmIChhICE9IGIpDQorICAgIHsNCisgICAgICBmcHJpbnRmIChzdGRv dXQsICIlcywgYnV0IGdldCAlZCAhPSAlZFxuIiwgbWVzc2FnZSwgYSwgYik7 DQorICAgICAgX19idWlsdGluX2Fib3J0ICgpOw0KKyAgICB9DQorfQ0KKw0K K3ZmbG9hdDMybTFfdCBfX2F0dHJpYnV0ZV9fICgobm9pbmxpbmUpKQ0KK290 aGVyX2Z1bmN0aW9uICh2ZmxvYXQzMm0xX3Qgb3AxLCB2ZmxvYXQzMm0xX3Qg b3AyLCBzaXplX3QgdmwpDQorew0KKyAgdmZsb2F0MzJtMV90IHJlc3VsdCA9 IG9wMjsNCisNCisgIHJlc3VsdCA9IF9fcmlzY3ZfdmZhZGRfdnZfZjMybTEg KG9wMSwgcmVzdWx0LCB2bCk7DQorDQorICBhc3NlcnRfZXF1YWwgKE9SSUdJ TkFMX0ZSTSwgZ2V0X2ZybSAoKSwNCisgIlRoZSB2YWx1ZSBvZiBmcm0gcmVn aXN0ZXIgc2hvdWxkIGJlIE9SSUdJTkFMX0ZSTS4iKTsNCisNCisgIHJldHVy biByZXN1bHQ7DQorfQ0KKw0KK3ZmbG9hdDMybTFfdCBfX2F0dHJpYnV0ZV9f ICgobm9pbmxpbmUpKQ0KK3Rlc3RfZmxvYXRfcG9pbnRfZnJtX3J1biAodmZs b2F0MzJtMV90IG9wMSwgdmZsb2F0MzJtMV90IG9wMiwgc2l6ZV90IHZsKQ0K K3sNCisgIHZmbG9hdDMybTFfdCByZXN1bHQgPSB7fTsNCisNCisgIHJlc3Vs dCA9IF9fcmlzY3ZfdmZhZGRfdnZfZjMybTFfcm0gKG9wMSwgcmVzdWx0LCA0 LCB2bCk7DQorDQorICBhc3NlcnRfZXF1YWwgKDQsIGdldF9mcm0gKCksICJU aGUgdmFsdWUgb2YgZnJtIHJlZ2lzdGVyIHNob3VsZCBiZSA0LiIpOw0KKw0K KyAgcmV0dXJuIG90aGVyX2Z1bmN0aW9uIChyZXN1bHQsIG9wMiwgdmwpOw0K K30NCisNCitpbnQNCittYWluICgpDQorew0KKyAgc2l6ZV90IHZsID0gODsN CisgIHZmbG9hdDMybTFfdCBvcDEgPSB7fTsNCisgIHZmbG9hdDMybTFfdCBv cDIgPSB7fTsNCisNCisgIHNldF9mcm0gKE9SSUdJTkFMX0ZSTSk7DQorICB0 ZXN0X2Zsb2F0X3BvaW50X2ZybV9ydW4gKG9wMSwgb3AyLCB2bCk7DQorDQor ICByZXR1cm4gMDsNCit9DQpkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9n Y2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNlL2Zsb2F0LXBvaW50LWZybS1ydW4t NS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Jpc2N2L3J2di9iYXNl L2Zsb2F0LXBvaW50LWZybS1ydW4tNS5jDQpuZXcgZmlsZSBtb2RlIDEwMDY0 NA0KaW5kZXggMDAwMDAwMDAwMDAuLjIwOGE2NWZjZDNhDQotLS0gL2Rldi9u dWxsDQorKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvcmlzY3YvcnZ2 L2Jhc2UvZmxvYXQtcG9pbnQtZnJtLXJ1bi01LmMNCkBAIC0wLDAgKzEsODMg QEANCisvKiB7IGRnLWRvIHJ1biB7IHRhcmdldCB7IHJpc2N2X3ZlY3RvciB9 IH0gfSAqLw0KKy8qIHsgZGctb3B0aW9ucyAiLU8zIC1Xbm8tcHNhYmkiIH0g Ki8NCisNCisjaW5jbHVkZSAicmlzY3ZfdmVjdG9yLmgiDQorI2luY2x1ZGUg PHN0ZGlvLmg+DQorI2luY2x1ZGUgPHN0ZGludC1nY2MuaD4NCisNCisjZGVm aW5lIE9SSUdJTkFMX0ZSTSAxDQorI2RlZmluZSBORVdfRlJNIDQNCisNCitz dGF0aWMgaW50DQorZ2V0X2ZybSAoKQ0KK3sNCisgIGludCBmcm0gPSAtMTsN CisNCisgIF9fYXNtX18gdm9sYXRpbGUgKA0KKyAgICAiZnJybSAlMCINCisg ICAgOiI9ciIoZnJtKQ0KKyAgICA6DQorICAgIDoNCisgICk7DQorDQorICBy ZXR1cm4gZnJtOw0KK30NCisNCitzdGF0aWMgdm9pZA0KK3NldF9mcm0gKGlu dCBmcm0pDQorew0KKyAgX19hc21fXyB2b2xhdGlsZSAoDQorICAgICJmc3Jt ICUwIg0KKyAgICA6DQorICAgIDoiciIoZnJtKQ0KKyAgICA6DQorICApOw0K K30NCisNCitzdGF0aWMgaW5saW5lIHZvaWQNCithc3NlcnRfZXF1YWwgKGlu dCBhLCBpbnQgYiwgY2hhciAqbWVzc2FnZSkNCit7DQorICBpZiAoYSAhPSBi KQ0KKyAgICB7DQorICAgICAgZnByaW50ZiAoc3Rkb3V0LCAiJXMsIGJ1dCBn ZXQgJWQgIT0gJWRcbiIsIG1lc3NhZ2UsIGEsIGIpOw0KKyAgICAgIF9fYnVp bHRpbl9hYm9ydCAoKTsNCisgICAgfQ0KK30NCisNCit2b2lkIF9fYXR0cmli dXRlX18gKChub2lubGluZSkpDQorb3RoZXJfZnVuY3Rpb24gKCkNCit7DQor ICBzZXRfZnJtIChORVdfRlJNKTsNCit9DQorDQordmZsb2F0MzJtMV90IF9f YXR0cmlidXRlX18gKChub2lubGluZSkpDQordGVzdF9mbG9hdF9wb2ludF9m cm1fcnVuICh2ZmxvYXQzMm0xX3Qgb3AxLCB2ZmxvYXQzMm0xX3Qgb3AyLCBz aXplX3QgdmwpDQorew0KKyAgdmZsb2F0MzJtMV90IHJlc3VsdCA9IHt9Ow0K Kw0KKyAgb3RoZXJfZnVuY3Rpb24gKCk7DQorICBhc3NlcnRfZXF1YWwgKE5F V19GUk0sIGdldF9mcm0gKCksDQorICJUaGUgdmFsdWUgb2YgZnJtIHJlZ2lz dGVyIHNob3VsZCBiZSBORVdfRlJNLiIpOw0KKw0KKyAgcmVzdWx0ID0gX19y aXNjdl92ZmFkZF92dl9mMzJtMV9ybSAob3AxLCByZXN1bHQsIDIsIHZsKTsN CisgIGFzc2VydF9lcXVhbCAoMiwgZ2V0X2ZybSAoKSwgIlRoZSB2YWx1ZSBv ZiBmcm0gcmVnaXN0ZXIgc2hvdWxkIGJlIDIuIik7DQorDQorICByZXN1bHQg PSBfX3Jpc2N2X3ZmYWRkX3Z2X2YzMm0xIChvcDEsIHJlc3VsdCwgdmwpOw0K KyAgYXNzZXJ0X2VxdWFsIChORVdfRlJNLCBnZXRfZnJtICgpLA0KKyAiVGhl IHZhbHVlIG9mIGZybSByZWdpc3RlciBzaG91bGQgYmUgTkVXX0ZSTS4iKTsN CisNCisgIHJldHVybiByZXN1bHQ7DQorfQ0KKw0KK2ludA0KK21haW4gKCkN Cit7DQorICBzaXplX3QgdmwgPSA4Ow0KKyAgdmZsb2F0MzJtMV90IG9wMSA9 IHt9Ow0KKyAgdmZsb2F0MzJtMV90IG9wMiA9IHt9Ow0KKw0KKyAgc2V0X2Zy bSAoT1JJR0lOQUxfRlJNKTsNCisgIHRlc3RfZmxvYXRfcG9pbnRfZnJtX3J1 biAob3AxLCBvcDIsIHZsKTsNCisNCisgIHJldHVybiAwOw0KK30NCi0tIA0K Mi4zNC4xDQogDQogDQo= ------=_001_NextPart182681773602_=------