From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id ; Wed, 18 Dec 2002 21:53:25 -0500 Received: (majordomo@vger.kernel.org) by vger.kernel.org id ; Wed, 18 Dec 2002 21:53:25 -0500 Received: from [211.150.100.11] ([211.150.100.11]:13788 "HELO 263commail.com") by vger.kernel.org with SMTP id ; Wed, 18 Dec 2002 21:53:21 -0500 From: zhz@wlm.com.cn To: linux-kernel@vger.kernel.org Subject: watchdog driver for W83627HF chip Date: Thu, 19 Dec 2002 02:54:21 GMT Mime-version: 1.0 Content-type: multipart/mixed; boundary="=_0_18790_1040266461" X-Priority: 3 Message-Id: <20021219025421.C0B968C8DD@263commail.com> Sender: linux-kernel-owner@vger.kernel.org X-Mailing-List: linux-kernel@vger.kernel.org This is a MIME-formatted message. If you see this text it means that your mail software cannot handle MIME-formatted messages. --=_0_18790_1040266461 Content-Type: text/plain; charset=us-ascii hi, man, I have written the watchdog driver for the Winbond W83627HF chip. The attachment is the driver source code. Any suggestion is welcome. Thanks a lot. Regards, Zhou HongZhen --=_0_18790_1040266461 Content-Type: application/octet-stream; name="w83627hf_wdt.c" Content-ID: <0_17002_1040266380@csmail.tag> Content-Disposition: attachment; filename="w83627hf_wdt.c" Content-Transfer-Encoding: base64 DQovKg0KICogCVc4MzYyN0hGIHdhdGNoZG9nIGRyaXZlciBmb3IgTGludXggMi4yLngNCiAqDQog KiAJKGMpIENvcHlyaWdodCAyMDAyCVpob3UgSG9uZ1poZW4uDQogKg0KICoJVGhpcyBwcm9ncmFt IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcg0KICoJbW9k aWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UN CiAqCWFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIg dmVyc2lvbg0KICoJMiBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0 ZXIgdmVyc2lvbi4NCiAqDQogKgkoYykgQ29weXJpZ2h0IDIwMDIJWmhvdSBIb25nWmhlbiA8aW5l dGJhc2hAeWFob28uY29tPg0KICoJICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICA8bmV0ZGlmZkBuZXRlYXNlLmNvbT4NCiAqDQogKglSZWxlYXNlIDEuMC4NCiAqDQogKglGaXhl cw0KICoNCiAqICovDQoNCiNpbmNsdWRlIDxsaW51eC9tb2R1bGUuaD4NCiNpbmNsdWRlIDxsaW51 eC9jb25maWcuaD4NCiNpbmNsdWRlIDxsaW51eC92ZXJzaW9uLmg+DQojaW5jbHVkZSA8bGludXgv dHlwZXMuaD4NCiNpbmNsdWRlIDxsaW51eC9lcnJuby5oPg0KI2luY2x1ZGUgPGxpbnV4L2tlcm5l bC5oPg0KI2luY2x1ZGUgPGxpbnV4L2ZzLmg+DQojaW5jbHVkZSA8bGludXgvc2NoZWQuaD4NCiNp bmNsdWRlIDxsaW51eC9taXNjZGV2aWNlLmg+DQojaW5jbHVkZSA8bGludXgvaW5pdC5oPg0KI2lu Y2x1ZGUgPGxpbnV4L3NtcF9sb2NrLmg+DQojaW5jbHVkZSA8YXNtL3BhcmFtLmg+DQojaW5jbHVk ZSA8YXNtL2lvLmg+DQojaW5jbHVkZSA8bGludXgvaW9wb3J0Lmg+DQojaW5jbHVkZSA8YXNtL3N5 c3RlbS5oPg0KI2luY2x1ZGUgPGFzbS9zZW1hcGhvcmUuaD4NCiNpbmNsdWRlIDxsaW51eC9zeXNj dGwuaD4NCiNpbmNsdWRlIDxhc20vdWFjY2Vzcy5oPg0KI2luY2x1ZGUgPGxpbnV4L25vdGlmaWVy Lmg+DQojaW5jbHVkZSA8bGludXgvcmVib290Lmg+DQojaW5jbHVkZSA8bGludXgvd2F0Y2hkb2cu aD4NCg0KI2lmIDANCiNkZWZpbmUgVzgzNjI3SEZfV0RUX0RFQlVHDQojZW5kaWYNCg0KI2lmIDAN CiN1bmRlZiBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQNCiNlbHNlDQojZGVmaW5lIENPTkZJR19X QVRDSERPR19OT1dBWU9VVA0KI2VuZGlmDQoNCiNpZmRlZiBXODM2MjdIRl9XRFRfREVCVUcNCiNk ZWZpbmUgYXNzZXJ0X3c4MzYyN2hmX3dkdChwKSBpZiAoMSkge1wNCglpZiAoIShwKSkgXA0KCQlw YW5pYygiYXNzZXJ0IGZhaWxlZCBpbiAlcyBsaW5lICVkXG4iLCBfX0ZJTEVfXywgX19MSU5FX18p O1wNCn0gZWxzZQ0KDQojZWxzZQ0KI2RlZmluZSBhc3NlcnRfdzgzNjI3aGZfd2R0KHApDQojZW5k aWYNCg0KI2RlZmluZSBXODM2MjdIRl9MUENJUCAweDI5NSAvKiBMUEMgSW5kZXggUG9ydCAqLw0K I2RlZmluZSBXODM2MjdIRl9MUENEUCAweDI5NiAvKiBMUEMgRGF0YSBQb3J0ICovDQoNCiNkZWZp bmUgVzgzNjI3SEZfRUZFUiAweDJFIC8qIEV4dGVuZGVkIEZ1bmN0aW9uIEVuYWJsZSBSZWdpc3Rl ciAqLw0KI2RlZmluZSBXODM2MjdIRl9FRklSIDB4MkUgLyogRXh0ZW5kZWQgRnVuY3Rpb24gSW5k ZXggUmVnaXN0ZXIqLw0KI2RlZmluZSBXODM2MjdIRl9FRkRSIDB4MkYgLyogRXh0ZW5kZWQgRnVu Y3Rpb24gRGF0YSBSZWdpc3RlciAqLw0KDQojZGVmaW5lIFc4MzYyN0hGX0VOVEVSX0VGTSAweDg3 IC8qIGVudGVyIGV4dGVybmVkIGZ1bmN0aW9uIG1vZGUgKi8NCiNkZWZpbmUgVzgzNjI3SEZfRVhJ VF9FRk0gMHhBQSAvKiBleGl0IGV4dGVybmVkIGZ1bmN0aW9uIG1vZGUgKi8NCg0KLyogZGVmYXVs dCB3YXRjaGRvZyB0aW1lb3V0IHZhbHVlIC0tIDEycyAqLw0KI2RlZmluZSBXODM2MjdIRl9XRFRf REVGX1RJTU8gMHgwQyANCiNkZWZpbmUgVzgzNjI3SEZfV0RUX01BWF9USU1PIDB4RkYNCiNkZWZp bmUgVzgzNjI3SEZfV0RUX01JTl9USU1PIDB4MDENCi8qICNkZWZpbmUgVzgzNjI3SEZfV0RUX01J Tl9USU1PIDB4MDUgKi8NCg0KLyogZGVmYXVsdCB3YXRjaGRvZyB0aW1lb3V0IHVuaXQgLS0gc2Vj b25kICovDQojZGVmaW5lIFc4MzYyN0hGX1dEVF9ERUZfVElNVSAweDAwDQoNCi8qIG9ubHkgb25l IGNhbiBvcGVuIHRoZSB3YXRjaGRvZyBkZXZpY2UgKi8NCnN0YXRpYyB1bnNpZ25lZCBsb25nIHdk dF9pc19vcGVuID0gMDsNCiNpZm5kZWYgQ09ORklHX1dBVENIRE9HX05PV0FZT1VUDQpzdGF0aWMg dW5zaWduZWQgbG9uZyB3ZHRfZXhwZWN0X2Nsb3NlID0gMDsNCiNlbmRpZg0KDQovKiAweDAxLS0w eEZGIHNlY29uZHMobWludXRlcykuIDB4MDAgdG8gZGlzYWJsZSB3YXRjaGRvZy4gKi8NCnN0YXRp YyB1bnNpZ25lZCBpbnQgdzgzNjI3aGZfbWFyZ2luID0gVzgzNjI3SEZfV0RUX0RFRl9USU1POw0K c3RhdGljIHVuc2lnbmVkIGludCB3ODM2MjdoZl90aW1ldW5pdCA9IFc4MzYyN0hGX1dEVF9ERUZf VElNVTsNCg0KI2RlZmluZSBXODM2MjdIRl9XRFRfTUFHSUNfTlVNIDEzDQojZGVmaW5lIFc4MzYy N0hGX1dEVF9NQUdJQ19VIDMNCiNkZWZpbmUgVzgzNjI3SEZfV0RUX01BR0lDX00gMQ0KLyogbWFn aWMgd29yZCB3aGljaCBjaGFuZ2UgbWFyZ2luIGFuZCB0aW1ldW5pdCAqLw0Kc3RhdGljIGNoYXIg dzgzNjI3aGZfd2R0X21hZ2ljW1c4MzYyN0hGX1dEVF9NQUdJQ19OVU1dID0gIj9NP1VGSDcyNjM4 VyI7DQoNCiNkZWZpbmUgdzgzNjI3aGZfd2R0X2ZlZWQoKSBpZiAoMSkge1wNCgl3ODM2MjdoZl90 aW1ldW5pdCA9IHc4MzYyN2hmX3RpbWV1bml0ID8gXA0KCQkweDA4IDogMHgwMDtcDQpcDQoJaWYg KFc4MzYyN0hGX1dEVF9NQVhfVElNTyA8IHc4MzYyN2hmX21hcmdpbikgXA0KCQl3ODM2MjdoZl9t YXJnaW4gPSBXODM2MjdIRl9XRFRfTUFYX1RJTU87XA0KXA0KCWlmICgwIT13ODM2MjdoZl9tYXJn aW4gJiZcDQoJCVc4MzYyN0hGX1dEVF9NSU5fVElNTz53ODM2MjdoZl9tYXJnaW4pIFwNCgkJdzgz NjI3aGZfbWFyZ2luID0gVzgzNjI3SEZfV0RUX01JTl9USU1POyBcDQpcDQoJb3V0YihXODM2MjdI Rl9FTlRFUl9FRk0sIFc4MzYyN0hGX0VGRVIpOyBcDQoJb3V0YihXODM2MjdIRl9FTlRFUl9FRk0s IFc4MzYyN0hGX0VGRVIpOyBcDQpcDQoJb3V0YigweDA3LCBXODM2MjdIRl9FRklSKTtcDQoJb3V0 YigweDA4LCBXODM2MjdIRl9FRkRSKTtcDQpcDQoJb3V0YigweEY1LCBXODM2MjdIRl9FRklSKTtc DQoJb3V0YigodW5zaWduZWQgY2hhcil3ODM2MjdoZl90aW1ldW5pdCwgVzgzNjI3SEZfRUZEUik7 XA0KXA0KCW91dGIoMHhGNiwgVzgzNjI3SEZfRUZJUik7XA0KCW91dGIoKHVuc2lnbmVkIGNoYXIp dzgzNjI3aGZfbWFyZ2luLCBXODM2MjdIRl9FRkRSKTtcDQpcDQoJb3V0YihXODM2MjdIRl9FWElU X0VGTSwgVzgzNjI3SEZfRUZFUik7IFwNCn0gZWxzZQ0KDQojZGVmaW5lIHc4MzYyN2hmX3dkdF9z dG9wKCkgaWYgKDEpIHtcDQoJb3V0YihXODM2MjdIRl9FTlRFUl9FRk0sIFc4MzYyN0hGX0VGRVIp OyBcDQoJb3V0YihXODM2MjdIRl9FTlRFUl9FRk0sIFc4MzYyN0hGX0VGRVIpOyBcDQpcDQoJb3V0 YigweDA3LCBXODM2MjdIRl9FRklSKTtcDQoJb3V0YigweDA4LCBXODM2MjdIRl9FRkRSKTtcDQpc DQoJLyogMHgwMCB0byBkaXNhYmxlIHdhdGNoZG9nICovXA0KCW91dGIoMHhGNiwgVzgzNjI3SEZf RUZJUik7XA0KCW91dGIoMHgwMCwgVzgzNjI3SEZfRUZEUik7XA0KXA0KCW91dGIoVzgzNjI3SEZf RVhJVF9FRk0sIFc4MzYyN0hGX0VGRVIpOyBcDQp9IGVsc2UNCg0KDQojaWZkZWYgVzgzNjI3SEZf V0RUX0RFQlVHDQovKiB3YXRjaGRvZyBzeXNjdGwgY29uZmlndXJhdGlvbihqdXN0IGZvciBkZWJ1 ZykgKi8NCg0KZW51bSB7DQoJU1lTQ1RMX1c4MzYyN0hGX1dEVF9NQVJHSU49MSwNCglTWVNDVExf VzgzNjI3SEZfV0RUX1RJTUVVTklULA0KCVNZU0NUTF9XODM2MjdIRl9XRFRfRkVFRA0KfTsNCg0K ZW51bSB7DQoJU1lTQ1RMX1c4MzYyN0hGX1dEVD0yMQ0KfTsNCg0Kc3RhdGljIGludCBzeXNjdGxf dzgzNjI3aGZfd2R0X25vdXNlZCA9IDA7DQoNCnN0YXRpYyBpbnQgdzgzNjI3aGZfd2R0X3N5c2N0 bF9mZWVkKHN0cnVjdCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsDQoJc3RydWN0IGZpbGUg KmZpbHAsIHZvaWQgKmJ1ZmZlciwgc2l6ZV90ICpsZW5wKTsNCg0Kc3RhdGljIHN0cnVjdCBjdGxf dGFibGUgc3lzY3RsX3c4MzYyN2hmX3dkdF9kaXJbXSA9IHsNCgl7U1lTQ1RMX1c4MzYyN0hGX1dE VF9NQVJHSU4sICJtYXJnaW4iLA0KCQkmdzgzNjI3aGZfbWFyZ2luLCBzaXplb2YoaW50KSwNCgkJ MDY0NCwgMCwgJnByb2NfZG9pbnR2ZWN9LA0KCXtTWVNDVExfVzgzNjI3SEZfV0RUX1RJTUVVTklU LCAidGltZXVuaXQiLA0KCQkmdzgzNjI3aGZfdGltZXVuaXQsIHNpemVvZihpbnQpLA0KCQkwNjQ0 LCAwLCAmcHJvY19kb2ludHZlY30sDQoJe1NZU0NUTF9XODM2MjdIRl9XRFRfRkVFRCwgImZlZWQi LA0KCQkmc3lzY3RsX3c4MzYyN2hmX3dkdF9ub3VzZWQsIHNpemVvZihpbnQpLA0KCQkwMjAwLCAw LCAmdzgzNjI3aGZfd2R0X3N5c2N0bF9mZWVkfSwNCgl7MH0NCn07DQoNCnN0YXRpYyBzdHJ1Y3Qg Y3RsX3RhYmxlIHN5c2N0bF93ODM2MjdoZl93ZHRfcm9vdFtdID0gew0KCXtTWVNDVExfVzgzNjI3 SEZfV0RULCAidzgzNjI3aGZfd2R0IiwNCgkJMCwgMCwgMDU1NSwgc3lzY3RsX3c4MzYyN2hmX3dk dF9kaXJ9LA0KCXswfQ0KfTsNCg0Kc3RhdGljIHN0cnVjdCBjdGxfdGFibGVfaGVhZGVyICpzeXNj dGxfdzgzNjI3aGZfd2R0X2hlYWRlciA9IDA7DQoNCi8qDQogKiBXaGVuIHlvdSB3cml0ZSBzb21l dGhpbmcgaW50byAvcHJvYy9zeXMvdzgzNjI3aGZfd2R0L2ZlZWQsIHRoZSBkb2cgYmVnaW4NCiAq IHdhdGNoIHRoZSBzeXN0ZW0gZm9yIHlvdS4NCiAqIFJlbWVtYmVyIHRvIGZlZWQgaXQgYWdhaW4g YmVmb3JlIHRoZSBkb2cgYnVya3MuDQogKiBTZXQgL3Byb2Mvc3lzL3c4MzYyN2hmX3dkdC9tYXJn aW4gdG8gMCwgYW5kIHVwZGF0ZSANCiAqIC9wcm9jL3N5cy93ODM2MjdoZl93ZHQvZmVlZCB3aWxs IHN0b3AgdGhlIGRvZy4NCiAqICovDQppbnQgdzgzNjI3aGZfd2R0X3N5c2N0bF9mZWVkKHN0cnVj dCBjdGxfdGFibGUgKnRhYmxlLCBpbnQgd3JpdGUsDQoJc3RydWN0IGZpbGUgKmZpbHAsIHZvaWQg KmJ1ZmZlciwgc2l6ZV90ICpsZW5wKQ0Kew0KCWlmICghd3JpdGUpDQoJCXJldHVybiAtRVBFUk07 DQoNCgl3ODM2MjdoZl93ZHRfZmVlZCgpOw0KDQoJcmV0dXJuIDA7DQp9DQoNCmludCB3ODM2Mjdo Zl93ZHRfc3lzY3RsX2NyZWF0ZSh2b2lkKQ0Kew0KCXN5c2N0bF93ODM2MjdoZl93ZHRfaGVhZGVy ID0NCgkJcmVnaXN0ZXJfc3lzY3RsX3RhYmxlKHN5c2N0bF93ODM2MjdoZl93ZHRfcm9vdCwgMCk7 DQoJaWYgKDAgPT0gc3lzY3RsX3c4MzYyN2hmX3dkdF9oZWFkZXIpIHsNCgkJcHJpbnRrKCJXODM2 MjdIRiBXRFQ6IHJlZ2lzdGVyX3N5c2N0bF90YWJsZSgpIGZhaWxlZFxuIik7DQoJCXJldHVybiAt MTsNCgl9DQoNCglyZXR1cm4gMDsNCn0NCg0Kdm9pZCB3ODM2MjdoZl93ZHRfc3lzY3RsX2NsZWFu KHZvaWQpDQp7DQoJdW5yZWdpc3Rlcl9zeXNjdGxfdGFibGUoc3lzY3RsX3c4MzYyN2hmX3dkdF9o ZWFkZXIpOw0KCXN5c2N0bF93ODM2MjdoZl93ZHRfaGVhZGVyID0gMDsNCn0NCiNlbmRpZg0KDQov Kg0KICogUmVhZCB0aGUgbWFyZ2luIGFuZCB0aW1ldW5pdCBmcm9tIHdhdGNoZG9nIGRldmljZSwg anVzdCBmb3IgZGVidWcuDQogKiAqLw0Kc3RhdGljIHNzaXplX3QgdzgzNjI3aGZfd2R0X3JlYWQo c3RydWN0IGZpbGUgKmZpbGUsIGNoYXIgKmJ1ZiwNCglzaXplX3QgbGVuLCBsb2ZmX3QgKnBwb3Mp DQp7DQoJdW5zaWduZWQgY2hhciB0WzJdOw0KDQoJYXNzZXJ0X3c4MzYyN2hmX3dkdCh3ZHRfaXNf b3Blbik7DQoNCglpZiAocHBvcyAhPSAmZmlsZS0+Zl9wb3MpIHsNCiNpZmRlZiBXODM2MjdIRl9X RFRfREVCVUcNCgkJcHJpbnRrKCJXODM2MjdIRiBXRFQ6IGRldmljZSBjYW4gTk9UIGJlIHNlZWtc biIpOw0KI2VuZGlmDQoJCXJldHVybiAtRVNQSVBFOw0KCX0NCg0KCWlmICgyID4gbGVuKSB7DQoj aWZkZWYgVzgzNjI3SEZfV0RUX0RFQlVHDQoJCXByaW50aygiVzgzNjI3SEYgV0RUOiByZWFkIGlu dmFsaWQgZGF0YSBsZW5ndGggJWRcbiIsIGxlbik7DQojZW5kaWYNCgkJcmV0dXJuIC1FSU5WQUw7 DQoJfQ0KDQoJb3V0YihXODM2MjdIRl9FTlRFUl9FRk0sIFc4MzYyN0hGX0VGRVIpOw0KCW91dGIo VzgzNjI3SEZfRU5URVJfRUZNLCBXODM2MjdIRl9FRkVSKTsNCg0KCW91dGIoMHgwNywgVzgzNjI3 SEZfRUZJUik7DQoJb3V0YigweDA4LCBXODM2MjdIRl9FRkRSKTsNCg0KCW91dGIoMHhGNSwgVzgz NjI3SEZfRUZJUik7DQoJdFswXSA9ICgweDA4ICYgaW5iKFc4MzYyN0hGX0VGRFIpKSA/IDB4MDEg OiAweDAwOw0KDQoJb3V0YigweEY2LCBXODM2MjdIRl9FRklSKTsNCgl0WzFdID0gaW5iKFc4MzYy N0hGX0VGRFIpOw0KDQoJb3V0YihXODM2MjdIRl9FWElUX0VGTSwgVzgzNjI3SEZfRUZFUik7DQoN CglpZiAoY29weV90b191c2VyKGJ1ZiwgdCwgMikpIHsNCiNpZmRlZiBXODM2MjdIRl9XRFRfREVC VUcNCgkJcHJpbnRrKCJXODM2MjdIRiBXRFQ6IGNvcHlfdG9fdXNlciBmYWlsZWRcbiIpOw0KI2Vu ZGlmDQoJCXJldHVybiAtRUZBVUxUOw0KCX0NCg0KCXJldHVybiAyOw0KfQ0KDQpzdGF0aWMgc3Np emVfdCB3ODM2MjdoZl93ZHRfd3JpdGUoc3RydWN0IGZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKmRh dGEsDQoJc2l6ZV90IGxlbiwgbG9mZl90ICpwcG9zKQ0Kew0KCXNpemVfdCBpOw0KCWludCBqID0g MCwgc2VlayA9IDA7DQoJdW5zaWduZWQgaW50IHRpbWV1bml0ID0gMDsNCg0KCWFzc2VydF93ODM2 MjdoZl93ZHQod2R0X2lzX29wZW4pOw0KDQoJaWYgKHBwb3MgIT0gJmZpbGUtPmZfcG9zKSB7DQoj aWZkZWYgVzgzNjI3SEZfV0RUX0RFQlVHDQoJCXByaW50aygiVzgzNjI3SEYgV0RUOiBkZXZpY2Ug Y2FuIE5PVCBiZSBzZWVrXG4iKTsNCiNlbmRpZg0KCQlyZXR1cm4gLUVTUElQRTsNCgl9DQoNCglp ZiAoMCA9PSBsZW4pDQoJCWdvdG8gcGluZzsNCg0KCWZvciAoaT0wOyBpPGxlbjsgaSsrKXsNCgkJ c3dpdGNoIChkYXRhW2ldKSB7DQoJCWNhc2UgJ1cnOg0KCQkJaiA9IFc4MzYyN0hGX1dEVF9NQUdJ Q19OVU0gLSAyOw0KCQkJc2VlayA9IDE7DQoJCQlicmVhazsNCiNpZm5kZWYgQ09ORklHX1dBVENI RE9HX05PV0FZT1VUDQoJCWNhc2UgJ1YnOg0KCQkJd2R0X2V4cGVjdF9jbG9zZSA9IDE7DQoJCQlw cmludGsoS0VSTl9ERUJVRyAiZXhwZWN0X2Nsb3NlIGNoYW5nZWRcbiIpOw0KCQkJaiA9IDA7DQoJ CQlzZWVrID0gMDsNCgkJCWJyZWFrOw0KI2VuZGlmDQoJCWRlZmF1bHQ6DQoJCQlpZiAoMCA9PSBz ZWVrKSB7DQoJCQkJYXNzZXJ0X3c4MzYyN2hmX3dkdCgwID09IGopOw0KCQkJCWJyZWFrOw0KCQkJ fQ0KCQkJYXNzZXJ0X3c4MzYyN2hmX3dkdCgxID09IHNlZWspOw0KCQkJYXNzZXJ0X3c4MzYyN2hm X3dkdCgwIDw9IGogLSAxKTsNCg0KCQkJaWYgKFc4MzYyN0hGX1dEVF9NQUdJQ19VID09IGopIHsN CgkJCQlhc3NlcnRfdzgzNjI3aGZfd2R0KCc/JyA9PQ0KCQkJCQl3ODM2MjdoZl93ZHRfbWFnaWNb aiAtIDFdKTsNCgkJCQlpZiAoMSA9PSBkYXRhW2ldKSANCgkJCQkJdGltZXVuaXQgPSAxOw0KCQkJ CWVsc2UNCgkJCQkJdGltZXVuaXQgPSAwOw0KCQkJCWotLTsNCgkJCX0gZWxzZSBpZiAoVzgzNjI3 SEZfV0RUX01BR0lDX00gPT0gaikgew0KCQkJCWFzc2VydF93ODM2MjdoZl93ZHQoJz8nID09DQoJ CQkJCXc4MzYyN2hmX3dkdF9tYWdpY1tqIC0gMV0pOw0KCQkJCWlmICgwPD1kYXRhW2ldICYmDQoJ CQkJCVc4MzYyN0hGX1dEVF9ERUZfVElNTz49ZGF0YVtpXSkgew0KCQkJCQl3ODM2MjdoZl9tYXJn aW4gPSBkYXRhW2ldOw0KCQkJCQl3ODM2MjdoZl90aW1ldW5pdCA9IHRpbWV1bml0Ow0KCQkJCQlw cmludGsoS0VSTl9ERUJVRyAibWFyZ2luIGNoYW5kZWQhICINCgkJCQkJCSJtYXJnaW4gPT0gJWQs IHVuaXQgPT0gJWRcbiIsIA0KCQkJCQkJdzgzNjI3aGZfbWFyZ2luLCANCgkJCQkJCXc4MzYyN2hm X3RpbWV1bml0KTsNCgkJCQl9DQoJCQkJaiA9IDA7DQoJCQkJc2VlayA9IDA7DQoJCQl9IGVsc2Ug aWYgKGRhdGFbaV0gPT0gdzgzNjI3aGZfd2R0X21hZ2ljW2ogLSAxXSkgew0KCQkJCWotLTsNCgkJ CX0gZWxzZSB7DQoJCQkJaiA9IDA7DQoJCQkJc2VlayA9IDA7DQoJCQl9DQoNCgkJCWJyZWFrOw0K CQl9DQoJfQ0KDQpwaW5nOg0KCWlmICh3ZHRfaXNfb3Blbikgew0KCQl3ODM2MjdoZl93ZHRfZmVl ZCgpOw0KCX0NCg0KCXJldHVybiBsZW47DQp9DQoNCnN0YXRpYyBpbnQgdzgzNjI3aGZfd2R0X2lv Y3RsKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBmaWxlICpmaWxlLA0KCXVuc2lnbmVkIGlu dCBjbWQsIHVuc2lnbmVkIGxvbmcgYXJnKQ0Kew0KCWludCByZXQgPSAwOw0KI2lmIExJTlVYX1ZF UlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNCwwKQ0KCWludCB0aW1lOw0KI2VuZGlmDQoJ c3RydWN0IHdhdGNoZG9nX2luZm8gaWRlbnQgPSB7DQojaWYgTElOVVhfVkVSU0lPTl9DT0RFID4g S0VSTkVMX1ZFUlNJT04oMiw0LDApDQoJCVdESU9GX1NFVFRJTUVPVVQgfA0KI2VuZGlmDQoJCTAs DQoJCTEsDQoJCSJXODM2MjdIRiINCgl9Ow0KDQoJYXNzZXJ0X3c4MzYyN2hmX3dkdCh3ZHRfaXNf b3Blbik7DQoNCglpZiAoV0FUQ0hET0dfTUlOT1IgIT0gTUlOT1IoaW5vZGUtPmlfcmRldikpDQoJ CXJldHVybiAtRU5PREVWOw0KDQoJc3dpdGNoIChjbWQpIHsNCgljYXNlIFdESU9DX0dFVFNVUFBP UlQ6DQoJCWlmIChjb3B5X3RvX3VzZXIoKHN0cnVjdCB3YXRjaGRvZ19pbmZvICopYXJnLCAmaWRl bnQsDQoJCQlzaXplb2YoaWRlbnQpKSkNCgkJCXJldCA9IC1FRkFVTFQ7DQoJCWJyZWFrOw0KCWNh c2UgV0RJT0NfS0VFUEFMSVZFOg0KCQlpZiAod2R0X2lzX29wZW4pIHsNCgkJCXc4MzYyN2hmX3dk dF9mZWVkKCk7DQoJCX0NCgkJYnJlYWs7DQojaWYgTElOVVhfVkVSU0lPTl9DT0RFID4gS0VSTkVM X1ZFUlNJT04oMiw0LDApDQoJY2FzZSBXRElPQ19TRVRUSU1FT1VUOg0KCQlpZiAoY29weV9mcm9t X3VzZXIoJnRpbWUsIChpbnQgKilhcmcsIHNpemVvZihpbnQpKSkgew0KCQkJcmV0ID0gLUVGQVVM VDsNCgkJCWJyZWFrOw0KCQl9DQoNCgkJcHJpbnRrKEtFUk5fREVCVUcgIlc4MzYyN0hGIFdEVDog dzgzNjI3aGZfbWFyZ2luICVkLlxuIiwNCgkJCXc4MzYyN2hmX21hcmdpbik7DQoNCgkJaWYgKFc4 MzYyN0hGX1dEVF9NQVhfVElNTyA8IHRpbWUpIHsNCgkJCXByaW50aygiVzgzNjI3SEYgV0RUOiB3 ODM2MzdoZl9tYXJnaW4gPiAweEZGXG4iKTsNCgkJCXRpbWUgPSBXODM2MjdIRl9XRFRfTUFYX1RJ TU87DQoJCX0NCg0KCQlpZiAoMCE9dGltZSAmJiBXODM2MjdIRl9XRFRfTUlOX1RJTU8+dGltZSkg ew0KCQkJcHJpbnRrKCJXODM2MjdIRiBXRFQ6IHc4MzYyN2hmX21hcmdpbiA8IDB4MDFcbiIpOw0K CQkJdGltZSA9IFc4MzYyN0hGX1dEVF9NSU5fVElNTzsNCgkJfQ0KDQoJCXc4MzYyN2hmX21hcmdp biA9IHRpbWU7DQoJCS8qIEZhbGwgKi8NCiNpZiBMSU5VWF9WRVJTSU9OX0NPREUgPiBLRVJORUxf VkVSU0lPTigyLDQsMTgpDQoJY2FzZSBXRElPQ19HRVRUSU1FT1VUOg0KCQlpZiAoY29weV90b191 c2VyKChpbnQgKilhcmcsICZ3ODM2MjdoZl9tYXJnaW4sDQoJCQlzaXplb2YoaW50KSkpDQoJCQly ZXQgPSAtRUZBVUxUOw0KI2VuZGlmDQoJCWJyZWFrOw0KI2VuZGlmDQoJZGVmYXVsdDoNCgkJcmV0 ID0gLUVOT1RUWTsNCgkJYnJlYWs7DQoJfQ0KDQoJcmV0dXJuIHJldDsNCn0NCg0KLyoNCiAqIE9u Y2UgdGhlIHVzZXIgYXBwbGljYXRpb24gb3BlbiB0aGUgZGV2aWNlIGZpbGUsIHdhdGNoZG9nIHN0 YXJ0IHdvcmsuDQogKiBZb3UgTVVTVCBmZWVkIHRoZSBkb2cgYmVmb3JlIGl0IGJ1cmtzLg0KICog Ki8NCnN0YXRpYyBpbnQgdzgzNjI3aGZfd2R0X29wZW4oc3RydWN0IGlub2RlICppbm9kZSwgc3Ry dWN0IGZpbGUgKmZpbGUpDQp7DQoJaWYgKFdBVENIRE9HX01JTk9SICE9IE1JTk9SKGlub2RlLT5p X3JkZXYpKQ0KCQlyZXR1cm4gLUVOT0RFVjsNCg0KCS8qIG9ubHkgb25lIGNhbiBvcGVuIHRoaXMg ZGV2aWNlICovDQoJaWYgKHdkdF9pc19vcGVuKQ0KCQlyZXR1cm4gLUVCVVNZOw0KCXdkdF9pc19v cGVuID0gMTsNCg0KCU1PRF9JTkNfVVNFX0NPVU5UOw0KDQojaWZuZGVmIENPTkZJR19XQVRDSERP R19OT1dBWU9VVA0KCXdkdF9leHBlY3RfY2xvc2UgPSAwOw0KI2VuZGlmDQoNCglpZiAoVzgzNjI3 SEZfV0RUX01BWF9USU1PIDwgdzgzNjI3aGZfbWFyZ2luKSB7DQoJCXByaW50aygiVzgzNjI3SEYg V0RUOiB3ODM2MjdoZl9tYXJnaW4gPiAweEZGXG4iKTsNCgkJdzgzNjI3aGZfbWFyZ2luID0gVzgz NjI3SEZfV0RUX01BWF9USU1POw0KCX0NCg0KCWlmICgwIT13ODM2MjdoZl9tYXJnaW4gJiYNCgkJ VzgzNjI3SEZfV0RUX01JTl9USU1PPnc4MzYyN2hmX21hcmdpbikgew0KCQlwcmludGsoIlc4MzYy N0hGIFdEVDogdzgzNjI3aGZfbWFyZ2luIDwgMHgwMVxuIik7DQoJCXc4MzYyN2hmX21hcmdpbiA9 IFc4MzYyN0hGX1dEVF9NSU5fVElNTzsNCgl9DQoNCgkvKiBlbnRlciB0aGUgZXh0ZW5kZWQgZnVu Y3Rpb24gbW9kZSAqLw0KCW91dGIoVzgzNjI3SEZfRU5URVJfRUZNLCBXODM2MjdIRl9FRkVSKTsN CglvdXRiKFc4MzYyN0hGX0VOVEVSX0VGTSwgVzgzNjI3SEZfRUZFUik7DQoNCgkvKg0KCSAqIHdh dGNoZG9nIHRpbWVyIGlzIGNvbnRyb2xsZWQgYnkgQ1JGNSwgQ1JGNiwgQ1JGNyBvZiBsb2dpY2Fs DQoJICogZGV2aWNlIDguDQoJICogKi8NCglvdXRiKDB4MkIsIFc4MzYyN0hGX0VGSVIpOw0KCW91 dGIoMHhDMCwgVzgzNjI3SEZfRUZEUik7DQoNCgkvKiB3cml0ZSBDUjA3IHRvIHNlbGVjdCBsb2dp Y2FsIGRldmljZSBBICovDQoJb3V0YigweDA3LCBXODM2MjdIRl9FRklSKTsNCglvdXRiKDB4MEEs IFc4MzYyN0hGX0VGRFIpOw0KDQoJLyogZGlzYWJsZSB3YXRjaGRvZyBJUlEgKi8NCglvdXRiKDB4 RjcsIFc4MzYyN0hGX0VGSVIpOw0KCW91dGIoMHgwMCwgVzgzNjI3SEZfRUZEUik7DQoNCgkvKiB3 cml0ZSBDUjA3IHRvIHNlbGVjdCBsb2dpY2FsIGRldmljZSA4ICovDQoJb3V0YigweDA3LCBXODM2 MjdIRl9FRklSKTsNCglvdXRiKDB4MDgsIFc4MzYyN0hGX0VGRFIpOw0KDQoJLyogY291bnQgdGlt ZSBiYXNlIHNlY29uZChOT1QgbWludXRlKS4gKi8NCglvdXRiKDB4RjUsIFc4MzYyN0hGX0VGSVIp Ow0KCW91dGIoKHVuc2lnbmVkIGNoYXIpVzgzNjI3SEZfV0RUX0RFRl9USU1VLCBXODM2MjdIRl9F RkRSKTsNCg0KCS8qIHdyaXRlIHRoZSB0aW1lb3V0IHZsYXVlIGludG8gQ1JGNiAqLw0KCW91dGIo MHhGNiwgVzgzNjI3SEZfRUZJUik7DQoJb3V0YigodW5zaWduZWQgY2hhcil3ODM2MjdoZl9tYXJn aW4sIFc4MzYyN0hGX0VGRFIpOw0KDQoJLyogd2F0Y2hkb2cgd2lsbCBOT1QgYmUgcmVzZXQgdXBv biBhIG1vdXNlL2tleWJvYXJkIGludGVycnVwdC4gKi8NCglvdXRiKDB4RjcsIFc4MzYyN0hGX0VG SVIpOw0KCW91dGIoMHgwMCwgVzgzNjI3SEZfRUZEUik7DQoNCgkvKiBleGl0IGV4dGVuZGVkIGZ1 bmN0aW9uIG1vZGUgKi8NCglvdXRiKFc4MzYyN0hGX0VYSVRfRUZNLCBXODM2MjdIRl9FRkVSKTsN Cg0KCXByaW50ayhLRVJOX0lORk8gIlc4MzYyN0hGIFdEVDogd2FrZSB1cCwgY3VycmVudCB0aW1l b3V0ICVkLlxuIiwNCgkJdzgzNjI3aGZfbWFyZ2luKTsNCg0KCXJldHVybiAwOw0KfQ0KDQpzdGF0 aWMgaW50IHc4MzYyN2hmX3dkdF9yZWxlYXNlKHN0cnVjdCBpbm9kZSAqaW5vZGUsIHN0cnVjdCBm aWxlICpmaWxlKQ0Kew0KCWFzc2VydF93ODM2MjdoZl93ZHQod2R0X2lzX29wZW4pOw0KDQoJaWYg KFdBVENIRE9HX01JTk9SICE9IE1JTk9SKGlub2RlLT5pX3JkZXYpKQ0KCQlyZXR1cm4gLUVOT0RF VjsNCg0KI2lmbmRlZiBDT05GSUdfV0FUQ0hET0dfTk9XQVlPVVQNCglpZiAod2R0X2V4cGVjdF9j bG9zZSkgew0KCQlpZih3ZHRfaXNfb3Blbikgew0KCQkJdzgzNjI3aGZfd2R0X3N0b3AoKTsNCgkJ fQ0KCX0NCg0KCXdkdF9leHBlY3RfY2xvc2UgPSAwOw0KI2VuZGlmDQoNCgl3ZHRfaXNfb3BlbiA9 IDA7DQoNCglNT0RfREVDX1VTRV9DT1VOVDsNCg0KCXByaW50ayhLRVJOX0lORk8gIlc4MzYyN0hG IFdEVDogc2xlZXBpbmcgYWdhaW4uXG4iKTsNCg0KCXJldHVybiAwOw0KfQ0KDQovKg0KICogcHJv YmUgdGhlIFc4MzYyN0hGIGNoaXAuDQogKiAqLw0Kc3RhdGljIGludCB3ODM2MjdoZl9wcm9iZSh2 b2lkKQ0Kew0KCXVuc2lnbmVkIGNoYXIgZGV2aWNlOw0KCXVuc2lnbmVkIGNoYXIgY2hpcDsNCglp bnQgcmV0ID0gLTE7DQoNCglpZiAoMCA+IGNoZWNrX3JlZ2lvbihXODM2MjdIRl9MUENJUCwgMikp IHsNCgkJcmV0ID0gLUVCVVNZOw0KCQlnb3RvIG91dDsNCgl9DQoNCglvdXRiKDB4NDksIFc4MzYy N0hGX0xQQ0lQKTsNCglkZXZpY2UgPSBpbmIoVzgzNjI3SEZfTFBDRFApOw0KCWlmICgweDAxICE9 IChkZXZpY2UgPj4gMSkpIHsNCgkJLypwcmludGsoIlc4MzYyN0hGIFdEVDogRGV2aWNlIElEICV4 ICE9IDB4MDFcbiIsIGRldmljZSA+PiAxKTsqLw0KCQlnb3RvIG91dDsNCgl9DQoNCglvdXRiKDB4 NTgsIFc4MzYyN0hGX0xQQ0lQKTsNCgljaGlwID0gaW5iKFc4MzYyN0hGX0xQQ0RQKTsNCglpZiAo MHgyMSAhPSBjaGlwKSB7DQoJCS8qcHJpbnRrKCJXODM2MjdIRiBXRFQ6IENoaXAgSUQgJXggIT0g MHgyMVxuIiwgY2hpcCk7Ki8NCgkJZ290byBvdXQ7DQoJfQ0KDQoJLypwcmludGsoS0VSTl9JTkZP ICJXODM2MjdIRiBXRFQ6IFc4MzYyN0hGIGNoaXAgZm91bmRcbiIpOyovDQoJcmV0ID0gMDsNCg0K b3V0Og0KCXJldHVybiByZXQ7DQp9DQoNCnN0YXRpYyBpbnQgdzgzNjI3aGZfd2R0X25vdGlmeShz dHJ1Y3Qgbm90aWZpZXJfYmxvY2sgKnRoaXMsIHVuc2lnbmVkIGxvbmcgY29kZSwNCgl2b2lkICp1 bnVzZWQpDQp7DQoJaWYgKFNZU19ET1dOPT1jb2RlIHx8IFNZU19IQUxUPT1jb2RlKSB7DQoJCWlm ICh3ZHRfaXNfb3Blbikgew0KCQkJdzgzNjI3aGZfd2R0X3N0b3AoKTsNCiNpZm5kZWYgQ09ORklH X1dBVENIRE9HX05PV0FZT1VUDQoJCQl3ZHRfZXhwZWN0X2Nsb3NlID0gMDsNCiNlbmRpZg0KCQkJ d2R0X2lzX29wZW4gPSAwOw0KCQl9DQoJfQ0KDQoJcmV0dXJuIE5PVElGWV9ET05FOw0KfQ0KDQpz dGF0aWMgc3RydWN0IG5vdGlmaWVyX2Jsb2NrIHc4MzYyN2hmX3dkdF9ub3RpZmllcj0NCnsNCgl3 ODM2MjdoZl93ZHRfbm90aWZ5LA0KCTAsDQoJMA0KfTsNCg0Kc3RhdGljIHN0cnVjdCBmaWxlX29w ZXJhdGlvbnMgdzgzNjI3aGZfd2R0X2ZvcHMgPSB7DQoJbGxzZWVrOgkJMCwNCglyZWFkOgkJdzgz NjI3aGZfd2R0X3JlYWQsDQoJd3JpdGU6CQl3ODM2MjdoZl93ZHRfd3JpdGUsDQoJcmVhZGRpcjoJ MCwNCglwb2xsOgkJMCwNCglpb2N0bDoJCXc4MzYyN2hmX3dkdF9pb2N0bCwNCgltbWFwOgkJMCwN CglvcGVuOgkJdzgzNjI3aGZfd2R0X29wZW4sDQoJZmx1c2g6CQkwLA0KCXJlbGVhc2U6CXc4MzYy N2hmX3dkdF9yZWxlYXNlLA0KfTsNCg0Kc3RhdGljIHN0cnVjdCBtaXNjZGV2aWNlIHc4MzYyN2hm X3dkdF9taXNjZGV2ID0gew0KCVdBVENIRE9HX01JTk9SLA0KCSJ3YXRjaGRvZyIsDQoJJnc4MzYy N2hmX3dkdF9mb3BzDQp9Ow0KDQppbnQgaW5pdF9tb2R1bGUodm9pZCkNCnsNCglpbnQgcmV0Ow0K DQoJaWYgKChyZXQgPSB3ODM2MjdoZl9wcm9iZSgpKSkNCgkJZ290byBvdXQ7DQoNCglyZXQgPSAt MTsNCglyZXF1ZXN0X3JlZ2lvbihXODM2MjdIRl9MUENJUCwgMiwgIlc4MzYyN0hGX1dEVCIpOw0K DQoJaWYgKG1pc2NfcmVnaXN0ZXIoJnc4MzYyN2hmX3dkdF9taXNjZGV2KSkgew0KCQlwcmludGso Ilc4MzYyN0hGIFdEVDogbWlzY19yZWdpc3RlcigpIGZhaWxlZFxuIik7DQoJCWdvdG8gY2xlYW5f cmVnaW9uOw0KCX0NCg0KCWlmIChyZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJnc4MzYyN2hmX3dk dF9ub3RpZmllcikpIHsNCgkJcHJpbnRrKCJXODM2MjdIRiBXRFQ6IHJlZ2lzdGVyX3JlYm9vdF9u b3RpZmllcigpIGZhaWxlZFxuIik7DQoJCWdvdG8gY2xlYW5fbWlzY2RldjsNCgl9DQoNCiNpZmRl ZiBXODM2MjdIRl9XRFRfREVCVUcNCglpZiAodzgzNjI3aGZfd2R0X3N5c2N0bF9jcmVhdGUoKSkN CgkJZ290byBjbGVhbl9ub3RpZmllcjsNCiNlbmRpZg0KDQoJaWYgKFc4MzYyN0hGX1dEVF9NQVhf VElNTyA8IHc4MzYyN2hmX21hcmdpbikgew0KCQlwcmludGsoIlc4MzYyN0hGIFdEVDogdzgzNjI3 aGZfbWFyZ2luID4gMHhGRlxuIik7DQoJCXc4MzYyN2hmX21hcmdpbiA9IFc4MzYyN0hGX1dEVF9N QVhfVElNTzsNCgl9DQoNCglpZiAoVzgzNjI3SEZfV0RUX01JTl9USU1PID4gdzgzNjI3aGZfbWFy Z2luKSB7DQoJCXByaW50aygiVzgzNjI3SEYgV0RUOiB3ODM2MjdoZl9tYXJnaW4gPCAweDAxXG4i KTsNCgkJdzgzNjI3aGZfbWFyZ2luID0gVzgzNjI3SEZfV0RUX01JTl9USU1POw0KCX0NCg0KCXBy aW50ayhLRVJOX0lORk8gIlc4MzYyN0hGIFdEVDogc2xlZXBpbmcuXG4iKTsNCg0KCXJldCA9IDA7 DQoJZ290byBvdXQ7DQoNCiNpZmRlZiBXODM2MjdIRl9XRFRfREVCVUcNCmNsZWFuX25vdGlmaWVy Og0KCXVucmVnaXN0ZXJfcmVib290X25vdGlmaWVyKCZ3ODM2MjdoZl93ZHRfbm90aWZpZXIpOw0K I2VuZGlmDQpjbGVhbl9taXNjZGV2Og0KCW1pc2NfZGVyZWdpc3RlcigmdzgzNjI3aGZfd2R0X21p c2NkZXYpOw0KY2xlYW5fcmVnaW9uOg0KCXJlbGVhc2VfcmVnaW9uKFc4MzYyN0hGX0xQQ0lQLCAy KTsNCm91dDoNCglyZXR1cm4gcmV0Ow0KfQ0KDQp2b2lkIGNsZWFudXBfbW9kdWxlKHZvaWQpDQp7 DQojaWZkZWYgVzgzNjI3SEZfV0RUX0RFQlVHDQoJdzgzNjI3aGZfd2R0X3N5c2N0bF9jbGVhbigp Ow0KI2VuZGlmDQoJdW5yZWdpc3Rlcl9yZWJvb3Rfbm90aWZpZXIoJnc4MzYyN2hmX3dkdF9ub3Rp Zmllcik7DQoJbWlzY19kZXJlZ2lzdGVyKCZ3ODM2MjdoZl93ZHRfbWlzY2Rldik7DQoJcmVsZWFz ZV9yZWdpb24oVzgzNjI3SEZfTFBDSVAsIDIpOw0KfQ0KDQpNT0RVTEVfUEFSTSh3ODM2MjdoZl9t YXJnaW4sICJpIik7DQpNT0RVTEVfUEFSTV9ERVNDKHc4MzYyN2hmX21hZ2luLCAiV0RUIHRpbWVv dXQgKGRlZmF1bHQgMTIgPDB4MDEtMHhGRj4pIik7DQpNT0RVTEVfQVVUSE9SKCJaaG91IEhvbmda aGVuIC0tIDxpbmV0YmFzaEB5YWhvby5jb20+fDxuZXRkaWZmQG5ldGVhc2UuY29tPiIpOw0KTU9E VUxFX0RFU0NSSVBUSU9OKCJXYXRjaGRvZyBkcml2ZXIgZm9yIFdpbmJvbmQgVzgzNjI3SEYgY2hp cCIpOw0KI2lmIExJTlVYX1ZFUlNJT05fQ09ERSA+IEtFUk5FTF9WRVJTSU9OKDIsNCwwKQ0KTU9E VUxFX0xJQ0VOU0UoIkdQTCIpOw0KI2VuZGlmDQoNCkVYUE9SVF9OT19TWU1CT0xTOw0KDQo= --=_0_18790_1040266461--