LyoqDQogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KICAqIEBmaWxlICAgIHN0bTMybDF4eC5oDQogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0NCiAgKiBAYnJpZWYgICBDTVNJUyBTVE0zMkwxeHggRGV2aWNlIFBlcmlwaGVyYWwgQWNjZXNzIExheWVyIEhlYWRlciBGaWxlLiANCiAgKg0KICAqICAgICAgICAgIFRoZSBmaWxlIGlzIHRoZSB1bmlxdWUgaW5jbHVkZSBmaWxlIHRoYXQgdGhlIGFwcGxpY2F0aW9uIHByb2dyYW1tZXINCiAgKiAgICAgICAgICBpcyB1c2luZyBpbiB0aGUgQyBzb3VyY2UgY29kZSwgdXN1YWxseSBpbiBtYWluLmMuIFRoaXMgZmlsZSBjb250YWluczoNCiAgKiAgICAgICAgICAgIC0gQ29uZmlndXJhdGlvbiBzZWN0aW9uIHRoYXQgYWxsb3dzIHRvIHNlbGVjdDoNCiAgKiAgICAgICAgICAgICAgLSBUaGUgU1RNMzJMMXh4IGRldmljZSB1c2VkIGluIHRoZSB0YXJnZXQgYXBwbGljYXRpb24NCiAgKiAgICAgICAgICAgICAgLSBUbyB1c2Ugb3Igbm90IHRoZSBwZXJpcGhlcmFsknMgZHJpdmVycyBpbiBhcHBsaWNhdGlvbiBjb2RlKGkuZS4gDQogICogICAgICAgICAgICAgICAgY29kZSB3aWxsIGJlIGJhc2VkIG9uIGRpcmVjdCBhY2Nlc3MgdG8gcGVyaXBoZXJhbJJzIHJlZ2lzdGVycyANCiAgKiAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBkcml2ZXJzIEFQSSksIHRoaXMgb3B0aW9uIGlzIGNvbnRyb2xsZWQgYnkgDQogICogICAgICAgICAgICAgICAgIiNkZWZpbmUgVVNFX0hBTF9EUklWRVIiDQogICogIA0KICAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCiAgKiBAYXR0ZW50aW9uDQogICoNCiAgKiA8aDI+PGNlbnRlcj4mY29weTsgQ29weXJpZ2h0IChjKSAyMDE3IFNUTWljcm9lbGVjdHJvbmljcy4NCiAgKiBBbGwgcmlnaHRzIHJlc2VydmVkLjwvY2VudGVyPjwvaDI+DQogICoNCiAgKiBUaGlzIHNvZnR3YXJlIGNvbXBvbmVudCBpcyBsaWNlbnNlZCBieSBTVCB1bmRlciBCU0QgMy1DbGF1c2UgbGljZW5zZSwNCiAgKiB0aGUgIkxpY2Vuc2UiOyBZb3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlDQogICogTGljZW5zZS4gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0Og0KICAqICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNvdXJjZS5vcmcvbGljZW5zZXMvQlNELTMtQ2xhdXNlDQogICoNCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqDQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBDTVNJUw0KICAqIEB7DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBzdG0zMmwxeHgNCiAgKiBAew0KICAqLw0KICAgIA0KI2lmbmRlZiBfX1NUTTMyTDFYWF9IDQojZGVmaW5lIF9fU1RNMzJMMVhYX0gNCg0KI2lmZGVmIF9fY3BsdXNwbHVzDQogZXh0ZXJuICJDIiB7DQojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8NCiAgDQovKiogQGFkZHRvZ3JvdXAgTGlicmFyeV9jb25maWd1cmF0aW9uX3NlY3Rpb24NCiAgKiBAew0KICAqLw0KDQovKioNCiAgKiBAYnJpZWYgU1RNMzIgRmFtaWx5DQogICovDQojaWYgIWRlZmluZWQgKFNUTTMyTDEpDQojZGVmaW5lIFNUTTMyTDENCiNlbmRpZiAvKiBTVE0zMkwxICovDQoNCg0KLyogVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IGFjY29yZGluZyB0byB0aGUgdGFyZ2V0IFNUTTMyTCBkZXZpY2UgdXNlZCBpbiB5b3VyIA0KICAgYXBwbGljYXRpb24gDQogICovDQoNCiNpZiAhZGVmaW5lZCAoU1RNMzJMMTAweEIpICYmICFkZWZpbmVkIChTVE0zMkwxMDB4QkEpICYmICFkZWZpbmVkIChTVE0zMkwxMDB4QykgJiYgXA0KICAgICFkZWZpbmVkIChTVE0zMkwxNTF4QikgJiYgIWRlZmluZWQgKFNUTTMyTDE1MXhCQSkgJiYgIWRlZmluZWQgKFNUTTMyTDE1MXhDKSAmJiAhZGVmaW5lZCAoU1RNMzJMMTUxeENBKSAmJiAhZGVmaW5lZCAoU1RNMzJMMTUxeEQpICYmICFkZWZpbmVkIChTVE0zMkwxNTF4RFgpICYmICFkZWZpbmVkIChTVE0zMkwxNTF4RSkgJiYgXA0KICAgICFkZWZpbmVkIChTVE0zMkwxNTJ4QikgJiYgIWRlZmluZWQgKFNUTTMyTDE1MnhCQSkgJiYgIWRlZmluZWQgKFNUTTMyTDE1MnhDKSAmJiAhZGVmaW5lZCAoU1RNMzJMMTUyeENBKSAmJiAhZGVmaW5lZCAoU1RNMzJMMTUyeEQpICYmICFkZWZpbmVkIChTVE0zMkwxNTJ4RFgpICYmICFkZWZpbmVkIChTVE0zMkwxNTJ4RSkgJiYgXA0KICAgICFkZWZpbmVkIChTVE0zMkwxNjJ4QykgJiYgIWRlZmluZWQgKFNUTTMyTDE2MnhDQSkgJiYgIWRlZmluZWQgKFNUTTMyTDE2MnhEKSAmJiAhZGVmaW5lZCAoU1RNMzJMMTYyeERYKSAmJiAhZGVmaW5lZCAoU1RNMzJMMTYyeEUpDQogIC8qICNkZWZpbmUgU1RNMzJMMTAweEIgICovICAgLyohPCBTVE0zMkwxMDBDNiwgU1RNMzJMMTAwUiBhbmQgU1RNMzJMMTAwUkIgRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDEwMHhCQSAqLyAgIC8qITwgU1RNMzJMMTAwQzYtQSwgU1RNMzJMMTAwUjgtQSBhbmQgU1RNMzJMMTAwUkItQSBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMMTAweEMgICovICAgLyohPCBTVE0zMkwxMDBSQyBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMMTUxeEIgICovICAgLyohPCBTVE0zMkwxNTFDNiwgU1RNMzJMMTUxUjYsIFNUTTMyTDE1MUM4LCBTVE0zMkwxNTFSOCwgU1RNMzJMMTUxVjgsIFNUTTMyTDE1MUNCLCBTVE0zMkwxNTFSQiBhbmQgU1RNMzJMMTUxVkIgKi8NCiAgLyogI2RlZmluZSBTVE0zMkwxNTF4QkEgKi8gICAvKiE8IFNUTTMyTDE1MUM2LUEsIFNUTTMyTDE1MVI2LUEsIFNUTTMyTDE1MUM4LUEsIFNUTTMyTDE1MVI4LUEsIFNUTTMyTDE1MVY4LUEsIFNUTTMyTDE1MUNCLUEsIFNUTTMyTDE1MVJCLUEgYW5kIFNUTTMyTDE1MVZCLUEgKi8gDQogIC8qICNkZWZpbmUgU1RNMzJMMTUxeEMgICovICAgLyohPCBTVE0zMkwxNTFDQywgU1RNMzJMMTUxVUMsIFNUTTMyTDE1MVJDIGFuZCBTVE0zMkwxNTFWQyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE1MXhDQSAqLyAgIC8qITwgU1RNMzJMMTUxUkMtQSwgU1RNMzJMMTUxVkMtQSwgU1RNMzJMMTUxUUMgYW5kIFNUTTMyTDE1MVpDICovDQogIC8qICNkZWZpbmUgU1RNMzJMMTUxeEQgICovICAgLyohPCBTVE0zMkwxNTFRRCwgU1RNMzJMMTUxUkQsIFNUTTMyTDE1MVZEICYgU1RNMzJMMTUxWkQgKi8NCiAgLyogI2RlZmluZSBTVE0zMkwxNTF4RFggICovICAvKiE8IFNUTTMyTDE1MVZELVggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE1MXhFICAqLyAgIC8qITwgU1RNMzJMMTUxUUUsIFNUTTMyTDE1MVJFLCBTVE0zMkwxNTFWRSBhbmQgU1RNMzJMMTUxWkUgKi8NCiAgLyogI2RlZmluZSBTVE0zMkwxNTJ4QiAgKi8gICAvKiE8IFNUTTMyTDE1MkM2LCBTVE0zMkwxNTJSNiwgU1RNMzJMMTUyQzgsIFNUTTMyTDE1MlI4LCBTVE0zMkwxNTJWOCwgU1RNMzJMMTUyQ0IsIFNUTTMyTDE1MlJCIGFuZCBTVE0zMkwxNTJWQiAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE1MnhCQSAqLyAgIC8qITwgU1RNMzJMMTUyQzYtQSwgU1RNMzJMMTUyUjYtQSwgU1RNMzJMMTUyQzgtQSwgU1RNMzJMMTUyUjgtQSwgU1RNMzJMMTUyVjgtQSwgU1RNMzJMMTUyQ0ItQSwgU1RNMzJMMTUyUkItQSBhbmQgU1RNMzJMMTUyVkItQSAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE1MnhDICAqLyAgIC8qITwgU1RNMzJMMTUyQ0MsIFNUTTMyTDE1MlVDLCBTVE0zMkwxNTJSQyBhbmQgU1RNMzJMMTUyVkMgKi8NCiAgLyogI2RlZmluZSBTVE0zMkwxNTJ4Q0EgKi8gICAvKiE8IFNUTTMyTDE1MlJDLUEsIFNUTTMyTDE1MlZDLUEsIFNUTTMyTDE1MlFDIGFuZCBTVE0zMkwxNTJaQyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE1MnhEICAqLyAgIC8qITwgU1RNMzJMMTUyUUQsIFNUTTMyTDE1MlJELCBTVE0zMkwxNTJWRCBhbmQgU1RNMzJMMTUyWkQgKi8NCiAgLyogI2RlZmluZSBTVE0zMkwxNTJ4RFggICovICAvKiE8IFNUTTMyTDE1MlZELVggRGV2aWNlcyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE1MnhFICAqLyAgIC8qITwgU1RNMzJMMTUyUUUsIFNUTTMyTDE1MlJFLCBTVE0zMkwxNTJWRSBhbmQgU1RNMzJMMTUyWkUgKi8NCiAgLyogI2RlZmluZSBTVE0zMkwxNjJ4QyAgKi8gICAvKiE8IFNUTTMyTDE2MlJDIGFuZCBTVE0zMkwxNjJWQyAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE2MnhDQSAqLyAgIC8qITwgU1RNMzJMMTYyUkMtQSwgU1RNMzJMMTYyVkMtQSwgU1RNMzJMMTYyUUMgYW5kIFNUTTMyTDE2MlpDICovDQogIC8qICNkZWZpbmUgU1RNMzJMMTYyeEQgICovICAgLyohPCBTVE0zMkwxNjJRRCwgU1RNMzJMMTYyUkQsIFNUTTMyTDE2MlZEIGFuZCBTVE0zMkwxNjJaRCAqLw0KICAvKiAjZGVmaW5lIFNUTTMyTDE2MnhEWCAgKi8gIC8qITwgU1RNMzJMMTYyVkQtWCBEZXZpY2VzICovDQogIC8qICNkZWZpbmUgU1RNMzJMMTYyeEUgICovICAgLyohPCBTVE0zMkwxNjJSRSwgU1RNMzJMMTYyVkUgYW5kIFNUTTMyTDE2MlpFICovDQojZW5kaWYNCg0KLyogIFRpcDogVG8gYXZvaWQgbW9kaWZ5aW5nIHRoaXMgZmlsZSBlYWNoIHRpbWUgeW91IG5lZWQgdG8gc3dpdGNoIGJldHdlZW4gdGhlc2UNCiAgICAgICAgZGV2aWNlcywgeW91IGNhbiBkZWZpbmUgdGhlIGRldmljZSBpbiB5b3VyIHRvb2xjaGFpbiBjb21waWxlciBwcmVwcm9jZXNzb3IuDQogICovDQogIA0KI2lmICFkZWZpbmVkICAoVVNFX0hBTF9EUklWRVIpDQovKioNCiAqIEBicmllZiBDb21tZW50IHRoZSBsaW5lIGJlbG93IGlmIHlvdSB3aWxsIG5vdCB1c2UgdGhlIHBlcmlwaGVyYWxzIGRyaXZlcnMuDQogICBJbiB0aGlzIGNhc2UsIHRoZXNlIGRyaXZlcnMgd2lsbCBub3QgYmUgaW5jbHVkZWQgYW5kIHRoZSBhcHBsaWNhdGlvbiBjb2RlIHdpbGwgDQogICBiZSBiYXNlZCBvbiBkaXJlY3QgYWNjZXNzIHRvIHBlcmlwaGVyYWxzIHJlZ2lzdGVycyANCiAgICovDQogIC8qI2RlZmluZSBVU0VfSEFMX0RSSVZFUiAqLw0KI2VuZGlmIC8qIFVTRV9IQUxfRFJJVkVSICovDQoNCi8qKg0KICAqIEBicmllZiBDTVNJUyBEZXZpY2UgdmVyc2lvbiBudW1iZXINCiAgKi8NCiNkZWZpbmUgX19TVE0zMkwxeHhfQ01TSVNfVkVSU0lPTl9NQUlOICAgKDB4MDIpIC8qITwgWzMxOjI0XSBtYWluIHZlcnNpb24gKi8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgDQojZGVmaW5lIF9fU1RNMzJMMXh4X0NNU0lTX1ZFUlNJT05fU1VCMSAgICgweDAzKSAvKiE8IFsyMzoxNl0gc3ViMSB2ZXJzaW9uICovDQojZGVmaW5lIF9fU1RNMzJMMXh4X0NNU0lTX1ZFUlNJT05fU1VCMiAgICgweDAwKSAvKiE8IFsxNTo4XSAgc3ViMiB2ZXJzaW9uICovDQojZGVmaW5lIF9fU1RNMzJMMXh4X0NNU0lTX1ZFUlNJT05fUkMgICAgICgweDAwKSAvKiE8IFs3OjBdICByZWxlYXNlIGNhbmRpZGF0ZSAqLyANCiNkZWZpbmUgX19TVE0zMkwxeHhfQ01TSVNfVkVSU0lPTiAgICAgICAgKChfX1NUTTMyTDF4eF9DTVNJU19WRVJTSU9OX01BSU4gPDwgMjQpXA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJMMXh4X0NNU0lTX1ZFUlNJT05fU1VCMSA8PCAxNilcDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwoX19TVE0zMkwxeHhfQ01TSVNfVkVSU0lPTl9TVUIyIDw8IDggKVwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfChfX1NUTTMyTDF4eF9DTVNJU19WRVJTSU9OX1JDKSkNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KLyoqIEBhZGR0b2dyb3VwIERldmljZV9JbmNsdWRlZA0KICAqIEB7DQogICovDQoNCiNpZiBkZWZpbmVkKFNUTTMyTDEwMHhCKQ0KICAjaW5jbHVkZSAic3RtMzJsMTAweGIuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMMTAweEJBKQ0KICAjaW5jbHVkZSAic3RtMzJsMTAweGJhLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDEwMHhDKQ0KICAjaW5jbHVkZSAic3RtMzJsMTAweGMuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMMTUxeEIpDQogICNpbmNsdWRlICJzdG0zMmwxNTF4Yi5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkwxNTF4QkEpDQogICNpbmNsdWRlICJzdG0zMmwxNTF4YmEuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMMTUxeEMpDQogICNpbmNsdWRlICJzdG0zMmwxNTF4Yy5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkwxNTF4Q0EpDQogICNpbmNsdWRlICJzdG0zMmwxNTF4Y2EuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMMTUxeEQpDQogICNpbmNsdWRlICJzdG0zMmwxNTF4ZC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkwxNTF4RFgpDQogICNpbmNsdWRlICJzdG0zMmwxNTF4ZHguaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMMTUxeEUpDQogICNpbmNsdWRlICJzdG0zMmwxNTF4ZS5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkwxNTJ4QikNCiAgI2luY2x1ZGUgInN0bTMybDE1MnhiLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDE1MnhCQSkNCiAgI2luY2x1ZGUgInN0bTMybDE1MnhiYS5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkwxNTJ4QykNCiAgI2luY2x1ZGUgInN0bTMybDE1MnhjLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDE1MnhDQSkNCiAgI2luY2x1ZGUgInN0bTMybDE1MnhjYS5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkwxNTJ4RCkNCiAgI2luY2x1ZGUgInN0bTMybDE1MnhkLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDE1MnhEWCkNCiAgI2luY2x1ZGUgInN0bTMybDE1MnhkeC5oIg0KI2VsaWYgZGVmaW5lZChTVE0zMkwxNTJ4RSkNCiAgI2luY2x1ZGUgInN0bTMybDE1MnhlLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDE2MnhDKQ0KICAjaW5jbHVkZSAic3RtMzJsMTYyeGMuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMMTYyeENBKQ0KICAjaW5jbHVkZSAic3RtMzJsMTYyeGNhLmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDE2MnhEKQ0KICAjaW5jbHVkZSAic3RtMzJsMTYyeGQuaCINCiNlbGlmIGRlZmluZWQoU1RNMzJMMTYyeERYKQ0KICAjaW5jbHVkZSAic3RtMzJsMTYyeGR4LmgiDQojZWxpZiBkZWZpbmVkKFNUTTMyTDE2MnhFKQ0KICAjaW5jbHVkZSAic3RtMzJsMTYyeGUuaCINCiNlbHNlDQogI2Vycm9yICJQbGVhc2Ugc2VsZWN0IGZpcnN0IHRoZSB0YXJnZXQgU1RNMzJMMXh4IGRldmljZSB1c2VkIGluIHlvdXIgYXBwbGljYXRpb24gKGluIHN0bTMybDF4eC5oIGZpbGUpIg0KI2VuZGlmDQoNCi8qKg0KICAqIEB9DQogICovDQoNCi8qKiBAYWRkdG9ncm91cCBFeHBvcnRlZF90eXBlcw0KICAqIEB7DQogICovICANCnR5cGVkZWYgZW51bSANCnsNCiAgUkVTRVQgPSAwLCANCiAgU0VUID0gIVJFU0VUDQp9IEZsYWdTdGF0dXMsIElUU3RhdHVzOw0KDQp0eXBlZGVmIGVudW0gDQp7DQogIERJU0FCTEUgPSAwLCANCiAgRU5BQkxFID0gIURJU0FCTEUNCn0gRnVuY3Rpb25hbFN0YXRlOw0KI2RlZmluZSBJU19GVU5DVElPTkFMX1NUQVRFKFNUQVRFKSAoKChTVEFURSkgPT0gRElTQUJMRSkgfHwgKChTVEFURSkgPT0gRU5BQkxFKSkNCg0KdHlwZWRlZiBlbnVtIA0Kew0KICBTVUNDRVNTID0gMCwNCiAgRVJST1IgPSAhU1VDQ0VTUw0KfSBFcnJvclN0YXR1czsNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KDQovKiogQGFkZHRvZ3JvdXAgRXhwb3J0ZWRfbWFjcm9zDQogICogQHsNCiAgKi8NCiNkZWZpbmUgU0VUX0JJVChSRUcsIEJJVCkgICAgICgoUkVHKSB8PSAoQklUKSkNCg0KI2RlZmluZSBDTEVBUl9CSVQoUkVHLCBCSVQpICAgKChSRUcpICY9IH4oQklUKSkNCg0KI2RlZmluZSBSRUFEX0JJVChSRUcsIEJJVCkgICAgKChSRUcpICYgKEJJVCkpDQoNCiNkZWZpbmUgQ0xFQVJfUkVHKFJFRykgICAgICAgICgoUkVHKSA9ICgweDApKQ0KDQojZGVmaW5lIFdSSVRFX1JFRyhSRUcsIFZBTCkgICAoKFJFRykgPSAoVkFMKSkNCg0KI2RlZmluZSBSRUFEX1JFRyhSRUcpICAgICAgICAgKChSRUcpKQ0KDQojZGVmaW5lIE1PRElGWV9SRUcoUkVHLCBDTEVBUk1BU0ssIFNFVE1BU0spICBXUklURV9SRUcoKFJFRyksICgoKFJFQURfUkVHKFJFRykpICYgKH4oQ0xFQVJNQVNLKSkpIHwgKFNFVE1BU0spKSkNCg0KI2RlZmluZSBQT1NJVElPTl9WQUwoVkFMKSAgICAgKF9fQ0xaKF9fUkJJVChWQUwpKSkgDQoNCg0KLyoqDQogICogQH0NCiAgKi8NCg0KI2lmIGRlZmluZWQgKFVTRV9IQUxfRFJJVkVSKQ0KICNpbmNsdWRlICJzdG0zMmwxeHhfaGFsLmgiDQojZW5kaWYgLyogVVNFX0hBTF9EUklWRVIgKi8NCg0KDQojaWZkZWYgX19jcGx1c3BsdXMNCn0NCiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLw0KDQojZW5kaWYgLyogX19TVE0zMkwxeHhfSCAqLw0KLyoqDQogICogQH0NCiAgKi8NCg0KLyoqDQogICogQH0NCiAgKi8NCiAgDQoNCg0KDQovKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLw0K