LyoqCiAgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCiAgKiBAZmlsZSAgICBzdG0zMmw0eHguaAogICogQGF1dGhvciAgTUNEIEFwcGxpY2F0aW9uIFRlYW0KICAqIEBicmllZiAgIENNU0lTIFNUTTMyTDR4eCBEZXZpY2UgUGVyaXBoZXJhbCBBY2Nlc3MgTGF5ZXIgSGVhZGVyIEZpbGUuCiAgKgogICogICAgICAgICAgVGhlIGZpbGUgaXMgdGhlIHVuaXF1ZSBpbmNsdWRlIGZpbGUgdGhhdCB0aGUgYXBwbGljYXRpb24gcHJvZ3JhbW1lcgogICogICAgICAgICAgaXMgdXNpbmcgaW4gdGhlIEMgc291cmNlIGNvZGUsIHVzdWFsbHkgaW4gbWFpbi5jLiBUaGlzIGZpbGUgY29udGFpbnM6CiAgKiAgICAgICAgICAgLSBDb25maWd1cmF0aW9uIHNlY3Rpb24gdGhhdCBhbGxvd3MgdG8gc2VsZWN0OgogICogICAgICAgICAgICAgIC0gVGhlIFNUTTMyTDR4eCBkZXZpY2UgdXNlZCBpbiB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCiAgKiAgICAgICAgICAgICAgLSBUbyB1c2Ugb3Igbm90IHRoZSBwZXJpcGhlcmFsknMgZHJpdmVycyBpbiBhcHBsaWNhdGlvbiBjb2RlKGkuZS4KICAqICAgICAgICAgICAgICAgIGNvZGUgd2lsbCBiZSBiYXNlZCBvbiBkaXJlY3QgYWNjZXNzIHRvIHBlcmlwaGVyYWyScyByZWdpc3RlcnMKICAqICAgICAgICAgICAgICAgIHJhdGhlciB0aGFuIGRyaXZlcnMgQVBJKSwgdGhpcyBvcHRpb24gaXMgY29udHJvbGxlZCBieQogICogICAgICAgICAgICAgICAgIiNkZWZpbmUgVVNFX0hBTF9EUklWRVIiCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICogQGF0dGVudGlvbgogICoKICAqIDxoMj48Y2VudGVyPiZjb3B5OyBDT1BZUklHSFQoYykgMjAxNyBTVE1pY3JvZWxlY3Ryb25pY3M8L2NlbnRlcj48L2gyPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCiAgKiBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zIGFyZSBtZXQ6CiAgKiAgIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0IG5vdGljZSwKICAqICAgICAgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KICAqICAgMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQgbm90aWNlLAogICogICAgICB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uCiAgKiAgICAgIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgogICogICAzLiBOZWl0aGVyIHRoZSBuYW1lIG9mIFNUTWljcm9lbGVjdHJvbmljcyBub3IgdGhlIG5hbWVzIG9mIGl0cyBjb250cmlidXRvcnMKICAqICAgICAgbWF5IGJlIHVzZWQgdG8gZW5kb3JzZSBvciBwcm9tb3RlIHByb2R1Y3RzIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlCiAgKiAgICAgIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgogICoKICAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgVEhFIENPUFlSSUdIVCBIT0xERVJTIEFORCBDT05UUklCVVRPUlMgIkFTIElTIgogICogQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQogICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQVJFCiAgKiBESVNDTEFJTUVELiBJTiBOTyBFVkVOVCBTSEFMTCBUSEUgQ09QWVJJR0hUIEhPTERFUiBPUiBDT05UUklCVVRPUlMgQkUgTElBQkxFCiAgKiBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTAogICogREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IKICAqIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IgUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSCiAgKiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAogICogT1IgVE9SVCAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKICAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCiAgKgogICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogICovCgovKiogQGFkZHRvZ3JvdXAgQ01TSVMKICAqIEB7CiAgKi8KCi8qKiBAYWRkdG9ncm91cCBzdG0zMmw0eHgKICAqIEB7CiAgKi8KCiNpZm5kZWYgX19TVE0zMkw0eHhfSAojZGVmaW5lIF9fU1RNMzJMNHh4X0gKCiNpZmRlZiBfX2NwbHVzcGx1cwogZXh0ZXJuICJDIiB7CiNlbmRpZiAvKiBfX2NwbHVzcGx1cyAqLwoKLyoqIEBhZGR0b2dyb3VwIExpYnJhcnlfY29uZmlndXJhdGlvbl9zZWN0aW9uCiAgKiBAewogICovCgovKioKICAqIEBicmllZiBTVE0zMiBGYW1pbHkKICAqLwojaWYgIWRlZmluZWQgKFNUTTMyTDQpCiNkZWZpbmUgU1RNMzJMNAojZW5kaWYgLyogU1RNMzJMNCAqLwoKLyogVW5jb21tZW50IHRoZSBsaW5lIGJlbG93IGFjY29yZGluZyB0byB0aGUgdGFyZ2V0IFNUTTMyTDQgZGV2aWNlIHVzZWQgaW4geW91cgogICBhcHBsaWNhdGlvbgogICovCgojaWYgIWRlZmluZWQgKFNUTTMyTDQzMXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDMyeHgpICYmICFkZWZpbmVkIChTVE0zMkw0MzN4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDQ0Mnh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDQzeHgpICYmIFwKICAgICFkZWZpbmVkIChTVE0zMkw0NTF4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDQ1Mnh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDYyeHgpICYmIFwKICAgICFkZWZpbmVkIChTVE0zMkw0NzF4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDQ3NXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNDc2eHgpICYmICFkZWZpbmVkIChTVE0zMkw0ODV4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDQ4Nnh4KSAmJiBcCiAgICAhZGVmaW5lZCAoU1RNMzJMNDk2eHgpICYmICFkZWZpbmVkIChTVE0zMkw0QTZ4eCkgJiYgXAogICAgIWRlZmluZWQgKFNUTTMyTDRSNXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNFI3eHgpICYmICFkZWZpbmVkIChTVE0zMkw0Ujl4eCkgJiYgIWRlZmluZWQgKFNUTTMyTDRTNXh4KSAmJiAhZGVmaW5lZCAoU1RNMzJMNFM3eHgpICYmICFkZWZpbmVkIChTVE0zMkw0Uzl4eCkKICAvKiAjZGVmaW5lIFNUTTMyTDQzMXh4ICovICAgLyohPCBTVE0zMkw0MzF4eCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkw0MzJ4eCAqLyAgIC8qITwgU1RNMzJMNDMyeHggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJMNDMzeHggKi8gICAvKiE8IFNUTTMyTDQzM3h4IERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyTDQ0Mnh4ICovICAgLyohPCBTVE0zMkw0NDJ4eCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkw0NDN4eCAqLyAgIC8qITwgU1RNMzJMNDQzeHggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJMNDUxeHggKi8gICAvKiE8IFNUTTMyTDQ1MXh4IERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyTDQ1Mnh4ICovICAgLyohPCBTVE0zMkw0NTJ4eCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkw0NjJ4eCAqLyAgIC8qITwgU1RNMzJMNDYyeHggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJMNDcxeHggKi8gICAvKiE8IFNUTTMyTDQ3MXh4IERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyTDQ3NXh4ICovICAgLyohPCBTVE0zMkw0NzV4eCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkw0NzZ4eCAqLyAgIC8qITwgU1RNMzJMNDc2eHggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJMNDg1eHggKi8gICAvKiE8IFNUTTMyTDQ4NXh4IERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyTDQ4Nnh4ICovICAgLyohPCBTVE0zMkw0ODZ4eCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkw0OTZ4eCAqLyAgIC8qITwgU1RNMzJMNDk2eHggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJMNEE2eHggKi8gICAvKiE8IFNUTTMyTDRBNnh4IERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyTDRSNXh4ICovICAgLyohPCBTVE0zMkw0UjV4eCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkw0Ujd4eCAqLyAgIC8qITwgU1RNMzJMNFI3eHggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJMNFI5eHggKi8gICAvKiE8IFNUTTMyTDRSOXh4IERldmljZXMgKi8KICAvKiAjZGVmaW5lIFNUTTMyTDRTNXh4ICovICAgLyohPCBTVE0zMkw0UzV4eCBEZXZpY2VzICovCiAgLyogI2RlZmluZSBTVE0zMkw0Uzd4eCAqLyAgIC8qITwgU1RNMzJMNFM3eHggRGV2aWNlcyAqLwogIC8qICNkZWZpbmUgU1RNMzJMNFM5eHggKi8gICAvKiE8IFNUTTMyTDRTOXh4IERldmljZXMgKi8KI2VuZGlmCgovKiAgVGlwOiBUbyBhdm9pZCBtb2RpZnlpbmcgdGhpcyBmaWxlIGVhY2ggdGltZSB5b3UgbmVlZCB0byBzd2l0Y2ggYmV0d2VlbiB0aGVzZQogICAgICAgIGRldmljZXMsIHlvdSBjYW4gZGVmaW5lIHRoZSBkZXZpY2UgaW4geW91ciB0b29sY2hhaW4gY29tcGlsZXIgcHJlcHJvY2Vzc29yLgogICovCiNpZiAhZGVmaW5lZCAgKFVTRV9IQUxfRFJJVkVSKQovKioKICogQGJyaWVmIENvbW1lbnQgdGhlIGxpbmUgYmVsb3cgaWYgeW91IHdpbGwgbm90IHVzZSB0aGUgcGVyaXBoZXJhbHMgZHJpdmVycy4KICAgSW4gdGhpcyBjYXNlLCB0aGVzZSBkcml2ZXJzIHdpbGwgbm90IGJlIGluY2x1ZGVkIGFuZCB0aGUgYXBwbGljYXRpb24gY29kZSB3aWxsCiAgIGJlIGJhc2VkIG9uIGRpcmVjdCBhY2Nlc3MgdG8gcGVyaXBoZXJhbHMgcmVnaXN0ZXJzCiAgICovCiAgLyojZGVmaW5lIFVTRV9IQUxfRFJJVkVSICovCiNlbmRpZiAvKiBVU0VfSEFMX0RSSVZFUiAqLwoKLyoqCiAgKiBAYnJpZWYgQ01TSVMgRGV2aWNlIHZlcnNpb24gbnVtYmVyICRWRVJTSU9OJAogICovCiNkZWZpbmUgX19TVE0zMkw0X0NNU0lTX1ZFUlNJT05fTUFJTiAgICgweDAxKSAvKiE8IFszMToyNF0gbWFpbiB2ZXJzaW9uICovCiNkZWZpbmUgX19TVE0zMkw0X0NNU0lTX1ZFUlNJT05fU1VCMSAgICgweDA0KSAvKiE8IFsyMzoxNl0gc3ViMSB2ZXJzaW9uICovCiNkZWZpbmUgX19TVE0zMkw0X0NNU0lTX1ZFUlNJT05fU1VCMiAgICgweDAwKSAvKiE8IFsxNTo4XSAgc3ViMiB2ZXJzaW9uICovCiNkZWZpbmUgX19TVE0zMkw0X0NNU0lTX1ZFUlNJT05fUkMgICAgICgweDAwKSAvKiE8IFs3OjBdICByZWxlYXNlIGNhbmRpZGF0ZSAqLwojZGVmaW5lIF9fU1RNMzJMNF9DTVNJU19WRVJTSU9OICAgICAgICAoKF9fU1RNMzJMNF9DTVNJU19WRVJTSU9OX01BSU4gPDwgMjQpXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJMNF9DTVNJU19WRVJTSU9OX1NVQjEgPDwgMTYpXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJMNF9DTVNJU19WRVJTSU9OX1NVQjIgPDwgOCApXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8KF9fU1RNMzJMNF9DTVNJU19WRVJTSU9OX1JDKSkKCi8qKgogICogQH0KICAqLwoKLyoqIEBhZGR0b2dyb3VwIERldmljZV9JbmNsdWRlZAogICogQHsKICAqLwoKI2lmIGRlZmluZWQoU1RNMzJMNDMxeHgpCiAgI2luY2x1ZGUgInN0bTMybDQzMXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDMyeHgpCiAgI2luY2x1ZGUgInN0bTMybDQzMnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDMzeHgpCiAgI2luY2x1ZGUgInN0bTMybDQzM3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDQyeHgpCiAgI2luY2x1ZGUgInN0bTMybDQ0Mnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDQzeHgpCiAgI2luY2x1ZGUgInN0bTMybDQ0M3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDUxeHgpCiAgI2luY2x1ZGUgInN0bTMybDQ1MXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDUyeHgpCiAgI2luY2x1ZGUgInN0bTMybDQ1Mnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDYyeHgpCiAgI2luY2x1ZGUgInN0bTMybDQ2Mnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDcxeHgpCiAgI2luY2x1ZGUgInN0bTMybDQ3MXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDc1eHgpCiAgI2luY2x1ZGUgInN0bTMybDQ3NXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDc2eHgpCiAgI2luY2x1ZGUgInN0bTMybDQ3Nnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDg1eHgpCiAgI2luY2x1ZGUgInN0bTMybDQ4NXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDg2eHgpCiAgI2luY2x1ZGUgInN0bTMybDQ4Nnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNDk2eHgpCiAgI2luY2x1ZGUgInN0bTMybDQ5Nnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNEE2eHgpCiAgI2luY2x1ZGUgInN0bTMybDRhNnh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNFI1eHgpCiAgI2luY2x1ZGUgInN0bTMybDRyNXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNFI3eHgpCiAgI2luY2x1ZGUgInN0bTMybDRyN3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNFI5eHgpCiAgI2luY2x1ZGUgInN0bTMybDRyOXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNFM1eHgpCiAgI2luY2x1ZGUgInN0bTMybDRzNXh4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNFM3eHgpCiAgI2luY2x1ZGUgInN0bTMybDRzN3h4LmgiCiNlbGlmIGRlZmluZWQoU1RNMzJMNFM5eHgpCiAgI2luY2x1ZGUgInN0bTMybDRzOXh4LmgiCiNlbHNlCiAjZXJyb3IgIlBsZWFzZSBzZWxlY3QgZmlyc3QgdGhlIHRhcmdldCBTVE0zMkw0eHggZGV2aWNlIHVzZWQgaW4geW91ciBhcHBsaWNhdGlvbiAoaW4gc3RtMzJsNHh4LmggZmlsZSkiCiNlbmRpZgoKLyoqCiAgKiBAfQogICovCgovKiogQGFkZHRvZ3JvdXAgRXhwb3J0ZWRfdHlwZXMKICAqIEB7CiAgKi8KdHlwZWRlZiBlbnVtCnsKICBSRVNFVCA9IDAsCiAgU0VUID0gIVJFU0VUCn0gRmxhZ1N0YXR1cywgSVRTdGF0dXM7Cgp0eXBlZGVmIGVudW0KewogIERJU0FCTEUgPSAwLAogIEVOQUJMRSA9ICFESVNBQkxFCn0gRnVuY3Rpb25hbFN0YXRlOwojZGVmaW5lIElTX0ZVTkNUSU9OQUxfU1RBVEUoU1RBVEUpICgoKFNUQVRFKSA9PSBESVNBQkxFKSB8fCAoKFNUQVRFKSA9PSBFTkFCTEUpKQoKdHlwZWRlZiBlbnVtCnsKICBFUlJPUiA9IDAsCiAgU1VDQ0VTUyA9ICFFUlJPUgp9IEVycm9yU3RhdHVzOwoKLyoqCiAgKiBAfQogICovCgoKLyoqIEBhZGR0b2dyb3VwIEV4cG9ydGVkX21hY3JvcwogICogQHsKICAqLwojZGVmaW5lIFNFVF9CSVQoUkVHLCBCSVQpICAgICAoKFJFRykgfD0gKEJJVCkpCgojZGVmaW5lIENMRUFSX0JJVChSRUcsIEJJVCkgICAoKFJFRykgJj0gfihCSVQpKQoKI2RlZmluZSBSRUFEX0JJVChSRUcsIEJJVCkgICAgKChSRUcpICYgKEJJVCkpCgojZGVmaW5lIENMRUFSX1JFRyhSRUcpICAgICAgICAoKFJFRykgPSAoMHgwKSkKCiNkZWZpbmUgV1JJVEVfUkVHKFJFRywgVkFMKSAgICgoUkVHKSA9IChWQUwpKQoKI2RlZmluZSBSRUFEX1JFRyhSRUcpICAgICAgICAgKChSRUcpKQoKI2RlZmluZSBNT0RJRllfUkVHKFJFRywgQ0xFQVJNQVNLLCBTRVRNQVNLKSAgV1JJVEVfUkVHKChSRUcpLCAoKChSRUFEX1JFRyhSRUcpKSAmICh+KENMRUFSTUFTSykpKSB8IChTRVRNQVNLKSkpCgojZGVmaW5lIFBPU0lUSU9OX1ZBTChWQUwpICAgICAoX19DTFooX19SQklUKFZBTCkpKQoKCi8qKgogICogQH0KICAqLwoKI2lmIGRlZmluZWQgKFVTRV9IQUxfRFJJVkVSKQogI2luY2x1ZGUgInN0bTMybDR4eF9oYWwuaCIKI2VuZGlmIC8qIFVTRV9IQUxfRFJJVkVSICovCgojaWZkZWYgX19jcGx1c3BsdXMKfQojZW5kaWYgLyogX19jcGx1c3BsdXMgKi8KCiNlbmRpZiAvKiBfX1NUTTMyTDR4eF9IICovCi8qKgogICogQH0KICAqLwoKLyoqCiAgKiBAfQogICovCgoKCgovKioqKioqKioqKioqKioqKioqKioqKioqIChDKSBDT1BZUklHSFQgU1RNaWNyb2VsZWN0cm9uaWNzICoqKioqRU5EIE9GIEZJTEUqKioqLwo=