LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTIgQnJvYWRjb20gQ29ycG9yYXRpb24KICoKICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgogKgogKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqCiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKICogIEFWUkNQIGRlZmluaXRpb24gYW5kIGRhdGEgdHlwZXMKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmbmRlZiBfQVZSQ19ERUZTX0gKI2RlZmluZSBfQVZSQ19ERUZTX0gKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgY29uc3RhbnRzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogUHJvZmlsZSByZXZpc2lvbiBudW1iZXJzICovCiNkZWZpbmUgQVZSQ19SRVZfMV8wICAgICAgICAweDAxMDAKI2RlZmluZSBBVlJDX1JFVl8xXzMgICAgICAgIDB4MDEwMwojZGVmaW5lIEFWUkNfUkVWXzFfNCAgICAgICAgMHgwMTA0CgojZGVmaW5lIEFWUkNfUEFDS0VUX0xFTiAgICAgICAgICAgICA1MTIgLyogUGVyIHRoZSBzcGVjLCB5b3UgbXVzdCBzdXBwb3J0IDUxMiBieXRlIFJDIHBhY2tldHMgKi8KCiNkZWZpbmUgQVZSQ19NSU5fQ09OVFJPTF9NVFUgICAgICAgIDQ4ICAvKiBQZXIgdGhlIHNwZWMsIG1pbmltdW0gTVRVIGZvciB0aGUgY29udHJvbCBjaGFubmVsICovCiNkZWZpbmUgQVZSQ19NSU5fQlJPV1NFX01UVSAgICAgICAgIDMzNSAvKiBQZXIgdGhlIHNwZWMsIG1pbmltdW0gTVRVIGZvciB0aGUgYnJvd3NpbmcgY2hhbm5lbCAqLwoKI2RlZmluZSBBVlJDX01FVEFfUERVX09GRlNFVCAgICAgICAgNAojZGVmaW5lIEFWUkNfU1VCX1RZUEVfTEVOICAgICAgICAgICA0CiNkZWZpbmUgQVZSQ19VSURfU0laRSAgICAgICAgICAgICAgIDgKI2RlZmluZSBBVlJDX0ZFQVRVUkVfTUFTS19TSVpFICAgICAgMTYKCi8qIGNvbW1hbmQgdHlwZSBjb2RlcyAqLwojZGVmaW5lIEFWUkNfQ01EX0NUUkwgICAgICAgMCAgIC8qIEluc3RydWN0IGEgdGFyZ2V0IHRvIHBlcmZvcm0gYW4gb3BlcmF0aW9uICovCiNkZWZpbmUgQVZSQ19DTURfU1RBVFVTICAgICAxICAgLyogQ2hlY2sgYSBkZXZpY2WScyBjdXJyZW50IHN0YXR1cyAqLwojZGVmaW5lIEFWUkNfQ01EX1NQRUNfSU5RICAgMiAgIC8qIENoZWNrIHdoZXRoZXIgYSB0YXJnZXQgc3VwcG9ydHMgYSBwYXJ0aWN1bGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCBjb21tYW5kOyBhbGwgb3BlcmFuZHMgYXJlIGluY2x1ZGVkICovCiNkZWZpbmUgQVZSQ19DTURfTk9USUYgICAgICAzICAgLyogVXNlZCBmb3IgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbiBvZiBhIGNoYW5nZSBpbiBhIGRldmljZZJzIHN0YXRlICovCiNkZWZpbmUgQVZSQ19DTURfR0VOX0lOUSAgICA0ICAgLyogQ2hlY2sgd2hldGhlciBhIHRhcmdldCBzdXBwb3J0cyBhIHBhcnRpY3VsYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIGNvbW1hbmQ7IG9wZXJhbmRzIGFyZSBub3QgaW5jbHVkZWQgKi8KCi8qIHJlc3BvbnNlIHR5cGUgY29kZXMgKi8KI2RlZmluZSBBVlJDX1JTUF9OT1RfSU1QTCAgIDggICAvKiBUaGUgdGFyZ2V0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgY29tbWFuZCBzcGVjaWZpZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgb3Bjb2RlIGFuZCBvcGVyYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGRvZXNuknQgaW1wbGVtZW50IHRoZSBzcGVjaWZpZWQgc3VidW5pdCAqLwojZGVmaW5lIEFWUkNfUlNQX0FDQ0VQVCAgICAgOSAgIC8qIFRoZSB0YXJnZXQgZXhlY3V0ZWQgb3IgaXMgZXhlY3V0aW5nIHRoZSBjb21tYW5kICovCiNkZWZpbmUgQVZSQ19SU1BfUkVKICAgICAgICAxMCAgLyogVGhlIHRhcmdldCBpbXBsZW1lbnRzIHRoZSBjb21tYW5kIHNwZWNpZmllZCBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUgYnV0IGNhbm5vdCByZXNwb25kIGJlY2F1c2UgdGhlIGN1cnJlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgdGFyZ2V0IGRvZXNuknQgYWxsb3cgaXQgKi8KI2RlZmluZSBBVlJDX1JTUF9JTl9UUkFOUyAgIDExICAvKiBUaGUgdGFyZ2V0IGltcGxlbWVudHMgdGhlIHN0YXR1cyBjb21tYW5kIGJ1dCBpdCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgc3RhdGUgb2YgdHJhbnNpdGlvbjsgdGhlIHN0YXR1cyBjb21tYW5kIG1heQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHJldHJpZWQgYXQgYSBmdXR1cmUgdGltZSAqLwojZGVmaW5lIEFWUkNfUlNQX0lNUExfU1RCTCAgMTIgIC8qIEZvciBzcGVjaWZpYyBpbnF1aXJ5IG9yIGdlbmVyYWwgaW5xdWl5IGNvbW1hbmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZDsgZm9yIHN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzLCB0aGUgdGFyZ2V0IHJldHVybnMgc3RhYmxlIGFuZCBpbmNsdWRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0dXMgcmVzdWx0cyAqLwojZGVmaW5lIEFWUkNfUlNQX0NIQU5HRUQgICAgMTMgIC8qIFRoZSByZXNwb25zZSBmcmFtZSBjb250YWlucyBhIG5vdGlmaWNhdGlvbiB0aGF0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCBkZXZpY2WScyBzdGF0ZSBoYXMgY2hhbmdlZCAqLwojZGVmaW5lIEFWUkNfUlNQX0lOVEVSSU0gICAgMTUgIC8qIEZvciBjb250cm9sIGNvbW1hbmRzLCB0aGUgdGFyZ2V0IGhhcyBhY2NlcHRlZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGJ1dCBjYW5ub3QgcmV0dXJuIGluZm9ybWF0aW9uIHdpdGhpbiAxMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM7IGZvciBub3RpZnkgY29tbWFuZHMsIHRoZSB0YXJnZXQgYWNjZXB0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFuZCwgYW5kIHdpbGwgbm90aWZ5IHRoZSBjb250cm9sbGVyIG9mIGEgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGFyZ2V0IHN0YXRlIGF0IGEgZnV0dXJlIHRpbWUgKi8KCi8qIHN1YnVuaXQgdHlwZSAqLwojZGVmaW5lIEFWUkNfU1VCX01PTklUT1IgICAgMHgwMCAgICAvKiBNb25pdG9yICovCiNkZWZpbmUgQVZSQ19TVUJfQVVESU8gICAgICAweDAxICAgIC8qIEF1ZGlvICovCiNkZWZpbmUgQVZSQ19TVUJfUFJJTlRFUiAgICAweDAyICAgIC8qIFByaW50ZXIgKi8KI2RlZmluZSBBVlJDX1NVQl9ESVNDICAgICAgIDB4MDMgICAgLyogRGlzYyAqLwojZGVmaW5lIEFWUkNfU1VCX1RBUEUgICAgICAgMHgwNCAgICAvKiBUYXBlIHJlY29yZGVyL3BsYXllciAqLwojZGVmaW5lIEFWUkNfU1VCX1RVTkVSICAgICAgMHgwNSAgICAvKiBUdW5lciAqLwojZGVmaW5lIEFWUkNfU1VCX0NBICAgICAgICAgMHgwNiAgICAvKiBDQSAqLwojZGVmaW5lIEFWUkNfU1VCX0NBTUVSQSAgICAgMHgwNyAgICAvKiBDYW1lcmEgKi8KI2RlZmluZSBBVlJDX1NVQl9QQU5FTCAgICAgIDB4MDkgICAgLyogUGFuZWwgKi8KI2RlZmluZSBBVlJDX1NVQl9CQiAgICAgICAgIDB4MEEgICAgLyogQnVsbGV0aW4gQm9hcmQgKi8KI2RlZmluZSBBVlJDX1NVQl9DQU1fU1RPUiAgIDB4MEIgICAgLyogQ2FtZXJhIFN0b3JhZ2UgKi8KI2RlZmluZSBBVlJDX1NVQl9WRU5ET1IgICAgIDB4MUMgICAgLyogVmVuZG9yIHVuaXF1ZSAqLwojZGVmaW5lIEFWUkNfU1VCX0VYVCAgICAgICAgMHgxRSAgICAvKiBTdWJ1bml0IHR5cGUgZXh0ZW5kZWQgdG8gbmV4dCBieXRlICovCiNkZWZpbmUgQVZSQ19TVUJfVU5JVCAgICAgICAweDFGICAgIC8qIFVuaXQgKi8KCi8qIG9wY29kZXMgLSBkZWZpbmVkIGJ5IDEzOTR0YSAqLwojZGVmaW5lIEFWUkNfT1BfVU5JVF9JTkZPICAgMHgzMCAgICAvKiBSZXBvcnQgdW5pdCBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIEFWUkNfT1BfU1VCX0lORk8gICAgMHgzMSAgICAvKiBSZXBvcnQgc3VidW5pdCBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIEFWUkNfT1BfVkVORE9SICAgICAgMHgwMCAgICAvKiBWZW5kb3ItZGVwZW5kZW50IGNvbW1hbmRzICovCiNkZWZpbmUgQVZSQ19PUF9QQVNTX1RIUlUgICAweDdDICAgIC8qIHBhbmVsIHN1YnVuaXQgb3Bjb2RlICovCi8qIG9wY29kZXMgODAtOUYgYW5kIEUwLUZGIGFyZSBub3QgdXNlZCBieSAxMzk0dGEuU25lYWsgb25lIGZvciB0aGUgYnJvd3NpbmcgY2hhbm5lbCAqLwojZGVmaW5lIEFWUkNfT1BfQlJPV1NFICAgICAgMHhGRiAgICAvKiBCcm93c2luZyAqLwojZGVmaW5lIEFWUkNfT1BfSU5WQUxJRCAgICAgMHhGRSAgICAvKiBpbnZhbGlkIG9uZSAqLwoKLyogQ29tcGFueSBJRCdzCiovCiNkZWZpbmUgQVZSQ19DT19CTFVFVE9PVEhfU0lHICAgMHgwMEZGRkZGRgojZGVmaW5lIEFWUkNfQ09fV0lEQ09NTSAgICAgICAgIDB4MDAwMDAzNjEKI2RlZmluZSBBVlJDX0NPX0JST0FEQ09NICAgICAgICAweDAwMDAxMDE4CiNkZWZpbmUgQVZSQ19DT19NRVRBREFUQSAgICAgICAgMHgwMDAwMTk1OCAgLyogVW5pcXVlIENPTVBBTlkgSUQgZm9yIE1ldGFkYXRhIG1lc3NhZ2VzICovCgovKiBTdGF0ZSBmbGFnIGZvciBQYXNzdGhyb3VnaCBjb21tYW5kcwoqLwojZGVmaW5lIEFWUkNfU1RBVEVfUFJFU1MgICAgMAojZGVmaW5lIEFWUkNfU1RBVEVfUkVMRUFTRSAgMQoKLyogT3BlcmF0aW9uIElEIGxpc3QgZm9yIFBhc3N0aHJvdWdoIGNvbW1hbmRzCiovCiNkZWZpbmUgQVZSQ19JRF9TRUxFQ1QgICAgICAweDAwICAgIC8qIHNlbGVjdCAqLwojZGVmaW5lIEFWUkNfSURfVVAgICAgICAgICAgMHgwMSAgICAvKiB1cCAqLwojZGVmaW5lIEFWUkNfSURfRE9XTiAgICAgICAgMHgwMiAgICAvKiBkb3duICovCiNkZWZpbmUgQVZSQ19JRF9MRUZUICAgICAgICAweDAzICAgIC8qIGxlZnQgKi8KI2RlZmluZSBBVlJDX0lEX1JJR0hUICAgICAgIDB4MDQgICAgLyogcmlnaHQgKi8KI2RlZmluZSBBVlJDX0lEX1JJR0hUX1VQICAgIDB4MDUgICAgLyogcmlnaHQtdXAgKi8KI2RlZmluZSBBVlJDX0lEX1JJR0hUX0RPV04gIDB4MDYgICAgLyogcmlnaHQtZG93biAqLwojZGVmaW5lIEFWUkNfSURfTEVGVF9VUCAgICAgMHgwNyAgICAvKiBsZWZ0LXVwICovCiNkZWZpbmUgQVZSQ19JRF9MRUZUX0RPV04gICAweDA4ICAgIC8qIGxlZnQtZG93biAqLwojZGVmaW5lIEFWUkNfSURfUk9PVF9NRU5VICAgMHgwOSAgICAvKiByb290IG1lbnUgKi8KI2RlZmluZSBBVlJDX0lEX1NFVFVQX01FTlUgIDB4MEEgICAgLyogc2V0dXAgbWVudSAqLwojZGVmaW5lIEFWUkNfSURfQ09OVF9NRU5VICAgMHgwQiAgICAvKiBjb250ZW50cyBtZW51ICovCiNkZWZpbmUgQVZSQ19JRF9GQVZfTUVOVSAgICAweDBDICAgIC8qIGZhdm9yaXRlIG1lbnUgKi8KI2RlZmluZSBBVlJDX0lEX0VYSVQgICAgICAgIDB4MEQgICAgLyogZXhpdCAqLwojZGVmaW5lIEFWUkNfSURfMCAgICAgICAgICAgMHgyMCAgICAvKiAwICovCiNkZWZpbmUgQVZSQ19JRF8xICAgICAgICAgICAweDIxICAgIC8qIDEgKi8KI2RlZmluZSBBVlJDX0lEXzIgICAgICAgICAgIDB4MjIgICAgLyogMiAqLwojZGVmaW5lIEFWUkNfSURfMyAgICAgICAgICAgMHgyMyAgICAvKiAzICovCiNkZWZpbmUgQVZSQ19JRF80ICAgICAgICAgICAweDI0ICAgIC8qIDQgKi8KI2RlZmluZSBBVlJDX0lEXzUgICAgICAgICAgIDB4MjUgICAgLyogNSAqLwojZGVmaW5lIEFWUkNfSURfNiAgICAgICAgICAgMHgyNiAgICAvKiA2ICovCiNkZWZpbmUgQVZSQ19JRF83ICAgICAgICAgICAweDI3ICAgIC8qIDcgKi8KI2RlZmluZSBBVlJDX0lEXzggICAgICAgICAgIDB4MjggICAgLyogOCAqLwojZGVmaW5lIEFWUkNfSURfOSAgICAgICAgICAgMHgyOSAgICAvKiA5ICovCiNkZWZpbmUgQVZSQ19JRF9ET1QgICAgICAgICAweDJBICAgIC8qIGRvdCAqLwojZGVmaW5lIEFWUkNfSURfRU5URVIgICAgICAgMHgyQiAgICAvKiBlbnRlciAqLwojZGVmaW5lIEFWUkNfSURfQ0xFQVIgICAgICAgMHgyQyAgICAvKiBjbGVhciAqLwojZGVmaW5lIEFWUkNfSURfQ0hBTl9VUCAgICAgMHgzMCAgICAvKiBjaGFubmVsIHVwICovCiNkZWZpbmUgQVZSQ19JRF9DSEFOX0RPV04gICAweDMxICAgIC8qIGNoYW5uZWwgZG93biAqLwojZGVmaW5lIEFWUkNfSURfUFJFVl9DSEFOICAgMHgzMiAgICAvKiBwcmV2aW91cyBjaGFubmVsICovCiNkZWZpbmUgQVZSQ19JRF9TT1VORF9TRUwgICAweDMzICAgIC8qIHNvdW5kIHNlbGVjdCAqLwojZGVmaW5lIEFWUkNfSURfSU5QVVRfU0VMICAgMHgzNCAgICAvKiBpbnB1dCBzZWxlY3QgKi8KI2RlZmluZSBBVlJDX0lEX0RJU1BfSU5GTyAgIDB4MzUgICAgLyogZGlzcGxheSBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIEFWUkNfSURfSEVMUCAgICAgICAgMHgzNiAgICAvKiBoZWxwICovCiNkZWZpbmUgQVZSQ19JRF9QQUdFX1VQICAgICAweDM3ICAgIC8qIHBhZ2UgdXAgKi8KI2RlZmluZSBBVlJDX0lEX1BBR0VfRE9XTiAgIDB4MzggICAgLyogcGFnZSBkb3duICovCiNkZWZpbmUgQVZSQ19JRF9QT1dFUiAgICAgICAweDQwICAgIC8qIHBvd2VyICovCiNkZWZpbmUgQVZSQ19JRF9WT0xfVVAgICAgICAweDQxICAgIC8qIHZvbHVtZSB1cCAqLwojZGVmaW5lIEFWUkNfSURfVk9MX0RPV04gICAgMHg0MiAgICAvKiB2b2x1bWUgZG93biAqLwojZGVmaW5lIEFWUkNfSURfTVVURSAgICAgICAgMHg0MyAgICAvKiBtdXRlICovCiNkZWZpbmUgQVZSQ19JRF9QTEFZICAgICAgICAweDQ0ICAgIC8qIHBsYXkgKi8KI2RlZmluZSBBVlJDX0lEX1NUT1AgICAgICAgIDB4NDUgICAgLyogc3RvcCAqLwojZGVmaW5lIEFWUkNfSURfUEFVU0UgICAgICAgMHg0NiAgICAvKiBwYXVzZSAqLwojZGVmaW5lIEFWUkNfSURfUkVDT1JEICAgICAgMHg0NyAgICAvKiByZWNvcmQgKi8KI2RlZmluZSBBVlJDX0lEX1JFV0lORCAgICAgIDB4NDggICAgLyogcmV3aW5kICovCiNkZWZpbmUgQVZSQ19JRF9GQVNUX0ZPUiAgICAweDQ5ICAgIC8qIGZhc3QgZm9yd2FyZCAqLwojZGVmaW5lIEFWUkNfSURfRUpFQ1QgICAgICAgMHg0QSAgICAvKiBlamVjdCAqLwojZGVmaW5lIEFWUkNfSURfRk9SV0FSRCAgICAgMHg0QiAgICAvKiBmb3J3YXJkICovCiNkZWZpbmUgQVZSQ19JRF9CQUNLV0FSRCAgICAweDRDICAgIC8qIGJhY2t3YXJkICovCiNkZWZpbmUgQVZSQ19JRF9BTkdMRSAgICAgICAweDUwICAgIC8qIGFuZ2xlICovCiNkZWZpbmUgQVZSQ19JRF9TVUJQSUNUICAgICAweDUxICAgIC8qIHN1YnBpY3R1cmUgKi8KI2RlZmluZSBBVlJDX0lEX0YxICAgICAgICAgIDB4NzEgICAgLyogRjEgKi8KI2RlZmluZSBBVlJDX0lEX0YyICAgICAgICAgIDB4NzIgICAgLyogRjIgKi8KI2RlZmluZSBBVlJDX0lEX0YzICAgICAgICAgIDB4NzMgICAgLyogRjMgKi8KI2RlZmluZSBBVlJDX0lEX0Y0ICAgICAgICAgIDB4NzQgICAgLyogRjQgKi8KI2RlZmluZSBBVlJDX0lEX0Y1ICAgICAgICAgIDB4NzUgICAgLyogRjUgKi8KI2RlZmluZSBBVlJDX0lEX1ZFTkRPUiAgICAgIDB4N0UgICAgLyogdmVuZG9yIHVuaXF1ZSAqLwojZGVmaW5lIEFWUkNfS0VZUFJFU1NFRF9SRUxFQVNFIDB4ODAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgTWV0YWRhdGEgdHJhbnNmZXIgZGVmaW5pdGlvbnMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBEZWZpbmUgdGhlIE1ldGFkYXRhIFBhY2tldCB0eXBlcwoqLwojZGVmaW5lIEFWUkNfUEtUX1NJTkdMRSAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEtUX1NUQVJUICAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEtUX0NPTlRJTlVFICAgICAgICAgMgojZGVmaW5lIEFWUkNfUEtUX0VORCAgICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEtUX1RZUEVfTUFTSyAgICAgICAgMwoKLyogRGVmaW5lIHRoZSBQRFVzIGNhcnJpZWQgaW4gdGhlIHZlbmRvciBkZXBlbmRhbnQgZGF0YQoqLwojZGVmaW5lIEFWUkNfUERVX0dFVF9DQVBBQklMSVRJRVMgICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRFVfTElTVF9QTEFZRVJfQVBQX0FUVFIgICAgICAgICAgIDB4MTEKI2RlZmluZSBBVlJDX1BEVV9MSVNUX1BMQVlFUl9BUFBfVkFMVUVTICAgICAgICAgMHgxMgojZGVmaW5lIEFWUkNfUERVX0dFVF9DVVJfUExBWUVSX0FQUF9WQUxVRSAgICAgICAweDEzCiNkZWZpbmUgQVZSQ19QRFVfU0VUX1BMQVlFUl9BUFBfVkFMVUUgICAgICAgICAgIDB4MTQKI2RlZmluZSBBVlJDX1BEVV9HRVRfUExBWUVSX0FQUF9BVFRSX1RFWFQgICAgICAgMHgxNQojZGVmaW5lIEFWUkNfUERVX0dFVF9QTEFZRVJfQVBQX1ZBTFVFX1RFWFQgICAgICAweDE2CiNkZWZpbmUgQVZSQ19QRFVfSU5GT1JNX0RJU1BMQVlfQ0hBUlNFVCAgICAgICAgIDB4MTcKI2RlZmluZSBBVlJDX1BEVV9JTkZPUk1fQkFUVEVSWV9TVEFUX09GX0NUICAgICAgMHgxOAojZGVmaW5lIEFWUkNfUERVX0dFVF9FTEVNRU5UX0FUVFIgICAgICAgICAgICAgICAweDIwCiNkZWZpbmUgQVZSQ19QRFVfR0VUX1BMQVlfU1RBVFVTICAgICAgICAgICAgICAgIDB4MzAKI2RlZmluZSBBVlJDX1BEVV9SRUdJU1RFUl9OT1RJRklDQVRJT04gICAgICAgICAgMHgzMQojZGVmaW5lIEFWUkNfUERVX1JFUVVFU1RfQ09OVElOVUFUSU9OX1JTUCAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRFVfQUJPUlRfQ09OVElOVUFUSU9OX1JTUCAgICAgICAgIDB4NDEKLyogYWRkZWQgaW4gMS40ICovCiNkZWZpbmUgQVZSQ19QRFVfU0VUX0FCU09MVVRFX1ZPTFVNRSAgICAgICAgICAgIDB4NTAKI2RlZmluZSBBVlJDX1BEVV9TRVRfQUREUkVTU0VEX1BMQVlFUiAgICAgICAgICAgMHg2MAojZGVmaW5lIEFWUkNfUERVX1NFVF9CUk9XU0VEX1BMQVlFUiAgICAgICAgICAgICAweDcwCiNkZWZpbmUgQVZSQ19QRFVfR0VUX0ZPTERFUl9JVEVNUyAgICAgICAgICAgICAgIDB4NzEKI2RlZmluZSBBVlJDX1BEVV9DSEFOR0VfUEFUSCAgICAgICAgICAgICAgICAgICAgMHg3MgojZGVmaW5lIEFWUkNfUERVX0dFVF9JVEVNX0FUVFJJQlVURVMgICAgICAgICAgICAweDczCiNkZWZpbmUgQVZSQ19QRFVfUExBWV9JVEVNICAgICAgICAgICAgICAgICAgICAgIDB4NzQKI2RlZmluZSBBVlJDX1BEVV9TRUFSQ0ggICAgICAgICAgICAgICAgICAgICAgICAgMHg4MAojZGVmaW5lIEFWUkNfUERVX0FERF9UT19OT1dfUExBWUlORyAgICAgICAgICAgICAweDkwCiNkZWZpbmUgQVZSQ19QRFVfR0VORVJBTF9SRUpFQ1QgICAgICAgICAgICAgICAgIDB4QTAKCi8qIERlZmluZSB0aGUgdmVuZG9yIHVuaXF1ZSBpZCBjYXJyaWVkIGluIHRoZSBwYXNzIHRocm91Z2ggZGF0YQoqLwojZGVmaW5lIEFWUkNfUERVX05FWFRfR1JPVVAgICAgICAgICAgICAgICAgICAgICAweDAwCiNkZWZpbmUgQVZSQ19QRFVfUFJFVl9HUk9VUCAgICAgICAgICAgICAgICAgICAgIDB4MDEKLyogdGhlIG9ubHkgcGFzcyB0aHJvdWdoIHZlbmRvciB1bmlxdWUgY29tbWFuZHMgZGVmaW5lZCBieSBBVlJDIGlzIHRoZSBncm91cCBuYXZpZ2F0aW9uIGNvbW1hbmRzCiAqIFRoZSBsZW4gZm9yIHZlbmRvciB1bmlxdWUgZGF0YSBpcyA1ICovCiNkZWZpbmUgQVZSQ19QQVNTX1RIUlVfR1JPVVBfTEVOICAgICAgICAgICAgICAgIDUKCiNkZWZpbmUgQVZSQ19QRFVfSU5WQUxJRCAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYKLyogNi4xNS4zIGVycm9yIHN0YXR1cyBjb2RlIGZvciBnZW5lcmFsIHJlamVjdCAqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9DTUQgICAgICAgIDB4MDAgICAgLyogSW52YWxpZCBjb21tYW5kLCBzZW50IGlmIFRHIHJlY2VpdmVkIGEgUERVIHRoYXQgaXQgZGlkIG5vdCB1bmRlcnN0YW5kLiAqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9QQVJBTSAgICAgIDB4MDEgICAgLyogSW52YWxpZCBwYXJhbWV0ZXIsIHNlbnQgaWYgdGhlIFRHIHJlY2VpdmVkIGEgUERVIHdpdGggYSBwYXJhbWV0ZXIgSUQgdGhhdCBpdCBkaWQgbm90IHVuZGVyc3RhbmQuIFNlbnQgaWYgdGhlcmUgaXMgb25seSBvbmUgcGFyYW1ldGVyIElEIGluIHRoZSBQRFUuICovCiNkZWZpbmUgQVZSQ19TVFNfTk9UX0ZPVU5EICAgICAgMHgwMiAgICAvKiBTcGVjaWZpZWQgcGFyYW1ldGVyIG5vdCBmb3VuZC4sIHNlbnQgaWYgdGhlIHBhcmFtZXRlciBJRCBpcyB1bmRlcnN0b29kLCBidXQgY29udGVudCBpcyB3cm9uZyBvciBjb3JydXB0ZWQuICovCiNkZWZpbmUgQVZSQ19TVFNfSU5URVJOQUxfRVJSICAgMHgwMyAgICAvKiBJbnRlcm5hbCBFcnJvciwgc2VudCBpZiB0aGVyZSBhcmUgZXJyb3IgY29uZGl0aW9ucyBub3QgY292ZXJlZCBieSBhIG1vcmUgc3BlY2lmaWMgZXJyb3IgY29kZS4gKi8KI2RlZmluZSBBVlJDX1NUU19OT19FUlJPUiAgICAgICAweDA0ICAgIC8qIE9wZXJhdGlvbiBjb21wbGV0ZWQgd2l0aG91dCBlcnJvci4gIFRoaXMgaXMgdGhlIHN0YXR1cyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLiAqLwojZGVmaW5lIEFWUkNfU1RTX1VJRF9DSEFOR0VEICAgIDB4MDUgICAgLyogVUlEIENoYW5nZWQgLSBUaGUgVUlEcyBvbiB0aGUgZGV2aWNlIGhhdmUgY2hhbmdlZCAqLwovKiAjZGVmaW5lIEFWUkNfU1RTX0dFTl9FUlJPUiAgICAgIDB4MDYgICAgVW5rbm93biBFcnJvciAtIHRoaXMgaXMgY2hhbmdlZCB0byAicmVzZXJ2ZWQiICovCiNkZWZpbmUgQVZSQ19TVFNfQkFEX0RJUiAgICAgICAgMHgwNyAgICAvKiBJbnZhbGlkIERpcmVjdGlvbiAtIFRoZSBEaXJlY3Rpb24gcGFyYW1ldGVyIGlzIGludmFsaWQgLSBDaGFuZ2UgUGF0aCovCiNkZWZpbmUgQVZSQ19TVFNfTk9UX0RJUiAgICAgICAgMHgwOCAgICAvKiBOb3QgYSBEaXJlY3RvcnkgLSBUaGUgVUlEIHByb3ZpZGVkIGRvZXMgbm90IHJlZmVyIHRvIGEgZm9sZGVyIGl0ZW0gIENoYW5nZSBQYXRoKi8KI2RlZmluZSBBVlJDX1NUU19OT1RfRVhJU1QgICAgICAweDA5ICAgIC8qIERvZXMgTm90IEV4aXN0IC0gVGhlIFVJRCBwcm92aWRlZCBkb2VzIG5vdCByZWZlciB0byBhbnkgaXRlbSAgICBDaGFuZ2UgUGF0aCwgUGxheUl0ZW0sIEFkZFRvTm93UGxheWluZywgR2V0SXRlbUF0dHJpYnV0ZXMqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9TQ09QRSAgICAgIDB4MGEgICAgLyogSW52YWxpZCBTY29wZSAtIFRoZSBzY29wZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCAgR2V0Rm9sZGVySXRlbXMsIFBsYXlJdGVtLCBBZGRUb05vd1BsYXllciwgR2V0SXRlbUF0dHJpYnV0ZXMsICovCiNkZWZpbmUgQVZSQ19TVFNfQkFEX1JBTkdFICAgICAgMHgwYiAgICAvKiBSYW5nZSBPdXQgb2YgQm91bmRzIC0gVGhlIHN0YXJ0IG9mIHJhbmdlIHByb3ZpZGVkIGlzIG5vdCB2YWxpZCAgR2V0Rm9sZGVySXRlbXMqLwojZGVmaW5lIEFWUkNfU1RTX1VJRF9JU19ESVIgICAgIDB4MGMgICAgLyogVUlEIGlzIGEgRGlyZWN0b3J5IC0gVGhlIFVJRCBwcm92aWRlZCByZWZlcnMgdG8gYSBkaXJlY3RvcnksIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgbWVkaWEgcGxheWVyICAgUGxheUl0ZW0sIEFkZFRvTm93UGxheWluZyAqLwojZGVmaW5lIEFWUkNfU1RTX0lOX1VTRSAgICAgICAgIDB4MGQgICAgLyogTWVkaWEgaW4gVXNlIC0gVGhlIG1lZGlhIGlzIG5vdCBhYmxlIHRvIGJlIHVzZWQgZm9yIHRoaXMgb3BlcmF0aW9uIGF0IHRoaXMgdGltZSBQbGF5SXRlbSwgQWRkVG9Ob3dQbGF5aW5nICovCiNkZWZpbmUgQVZSQ19TVFNfTk9XX0xJU1RfRlVMTCAgMHgwZSAgICAvKiBOb3cgUGxheWluZyBMaXN0IEZ1bGwgLSBObyBtb3JlIGl0ZW1zIGNhbiBiZSBhZGRlZCB0byB0aGUgTm93IFBsYXlpbmcgTGlzdCAgQWRkVG9Ob3dQbGF5aW5nKi8KI2RlZmluZSBBVlJDX1NUU19TRUFSQ0hfTk9UX1NVUCAweDBmICAgIC8qIFNlYXJjaCBOb3QgU3VwcG9ydGVkIC0gVGhlIEJyb3dzZWQgTWVkaWEgUGxheWVyIGRvZXMgbm90IHN1cHBvcnQgc2VhcmNoIFNlYXJjaCAqLwojZGVmaW5lIEFWUkNfU1RTX1NFQVJDSF9CVVNZICAgIDB4MTAgICAgLyogU2VhcmNoIGluIFByb2dyZXNzIC0gQSBzZWFyY2ggb3BlcmF0aW9uIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MgIFNlYXJjaCovCiNkZWZpbmUgQVZSQ19TVFNfQkFEX1BMQVlFUl9JRCAgMHgxMSAgICAvKiBJbnZhbGlkIFBsYXllciBJZCAtIFRoZSBzcGVjaWZpZWQgUGxheWVyIElkIGRvZXMgbm90IHJlZmVyIHRvIGEgdmFsaWQgcGxheWVyICAgIFNldEFkZHJlc3NlZFBsYXllciwgU2V0QnJvd3NlZFBsYXllciovCiNkZWZpbmUgQVZSQ19TVFNfUExBWUVSX05fQlIgICAgMHgxMiAgICAvKiBQbGF5ZXIgTm90IEJyb3dzYWJsZSAtIFRoZSBQbGF5ZXIgSWQgc3VwcGxpZWQgcmVmZXJzIHRvIGEgTWVkaWEgUGxheWVyIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgYnJvd3NpbmcuIFNldEJyb3dzZWRQbGF5ZXIgKi8KI2RlZmluZSBBVlJDX1NUU19QTEFZRVJfTl9BRERSICAweDEzICAgIC8qIFBsYXllciBOb3QgQWRkcmVzc2VkLiAgVGhlIFBsYXllciBJZCBzdXBwbGllZCByZWZlcnMgdG8gYSBwbGF5ZXIgd2hpY2ggaXMgbm90IGN1cnJlbnRseSBhZGRyZXNzZWQsIGFuZCB0aGUgY29tbWFuZCBpcyBub3QgYWJsZSB0byBiZSBwZXJmb3JtZWQgaWYgdGhlIHBsYXllciBpcyBub3Qgc2V0IGFzIGFkZHJlc3NlZC4gICBTZWFyY2gsIFNldEJyb3dzZWRQbGF5ZXIqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9TRUFSQ0hfUkVTIDB4MTQgICAgLyogTm8gdmFsaWQgU2VhcmNoIFJlc3VsdHMgLSBUaGUgU2VhcmNoIHJlc3VsdCBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdmFsaWQgZW50cmllcywgZS5nLiBhZnRlciBiZWluZyBpbnZhbGlkYXRlZCBkdWUgdG8gY2hhbmdlIG9mIGJyb3dzZWQgcGxheWVyICAgR2V0Rm9sZGVySXRlbXMgKi8KI2RlZmluZSBBVlJDX1NUU19OT19BVkFMX1BMQVlFUiAweDE1ICAgIC8qIE5vIGF2YWlsYWJsZSBwbGF5ZXJzIEFMTCAqLwojZGVmaW5lIEFWUkNfU1RTX0FERFJfUExBWUVSX0NIRyAweDE2ICAgLyogQWRkcmVzc2VkIFBsYXllciBDaGFuZ2VkIC0gUmVnaXN0ZXIgTm90aWZpY2F0aW9uICovCnR5cGVkZWYgVUlOVDggdEFWUkNfU1RTOwoKCi8qIERlZmluZSB0aGUgQ2FwYWJpbGl0eSBJRHMKKi8KI2RlZmluZSBBVlJDX0NBUF9DT01QQU5ZX0lEICAgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfQ0FQX0VWRU5UU19TVVBQT1JURUQgICAgICAgICAgICAgICAweDAzCiNkZWZpbmUgQVZSQ19DT01QQU5ZX0lEX0xFTiAgICAgICAgICAgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX0NBUEFCSUxJVFlfT0ZGU0VUICAgICAgICAgICAgICAgICAgMgoKLyogRGVmaW5lIHRoZSBQbGF5ZXIgQXBwbGljYXRpb24gU2V0dGluZ3MgSURzCiovCiNkZWZpbmUgQVZSQ19QTEFZRVJfU0VUVElOR19FUVVBTElaRVIgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX1BMQVlFUl9TRVRUSU5HX1JFUEVBVCAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUExBWUVSX1NFVFRJTkdfU0hVRkZMRSAgICAgICAgICAgICAweDAzCiNkZWZpbmUgQVZSQ19QTEFZRVJfU0VUVElOR19TQ0FOICAgICAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BMQVlFUl9TRVRUSU5HX0xPV19NRU5VX0VYVCAgICAgICAgMHg4MAojZGVmaW5lIEFWUkNfUExBWUVSX1NFVFRJTkdfSElHSF9NRU5VX0VYVCAgICAgICAweGZmCgovKiBEZWZpbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgUGxheWVyIEFwcGxpY2F0aW9uIFNldHRpbmdzCiovCiNkZWZpbmUgQVZSQ19QTEFZRVJfVkFMX09GRiAgICAgICAgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX1BMQVlFUl9WQUxfT04gICAgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUExBWUVSX1ZBTF9TSU5HTEVfUkVQRUFUICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QTEFZRVJfVkFMX0FMTF9SRVBFQVQgICAgICAgICAgICAgIDB4MDMKI2RlZmluZSBBVlJDX1BMQVlFUl9WQUxfR1JPVVBfUkVQRUFUICAgICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUExBWUVSX1ZBTF9BTExfU0hVRkZMRSAgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QTEFZRVJfVkFMX0dST1VQX1NIVUZGTEUgICAgICAgICAgIDB4MDMKI2RlZmluZSBBVlJDX1BMQVlFUl9WQUxfQUxMX1NDQU4gICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUExBWUVSX1ZBTF9HUk9VUF9TQ0FOICAgICAgICAgICAgICAweDAzCgovKiBEZWZpbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBCYXR0ZXJ5IFN0YXR1cyBQRFUKKi8KI2RlZmluZSBBVlJDX0JBVFRFUllfU1RBVFVTX05PUk1BTCAgICAgICAgICAgICAgMHgwMAojZGVmaW5lIEFWUkNfQkFUVEVSWV9TVEFUVVNfV0FSTklORyAgICAgICAgICAgICAweDAxCiNkZWZpbmUgQVZSQ19CQVRURVJZX1NUQVRVU19DUklUSUNBTCAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX0JBVFRFUllfU1RBVFVTX0VYVEVSTkFMICAgICAgICAgICAgMHgwMwojZGVmaW5lIEFWUkNfQkFUVEVSWV9TVEFUVVNfRlVMTF9DSEFSR0UgICAgICAgICAweDA0CnR5cGVkZWYgVUlOVDggdEFWUkNfQkFUVEVSWV9TVEFUVVM7CgovKiBEZWZpbmUgY2hhcmFjdGVyIHNldCAqLwojZGVmaW5lIEFWUkNfQ0hBUl9TRVRfU0laRSAgICAgICAgICAgICAgICAgICAgICAyCgovKiBEZWZpbmUgdGhlIE1lZGlhIEF0dHJpYnV0ZSBJRHMKKi8KI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfVElUTEUgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfQVJUSVNUICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfQUxCVU0gICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfVFJBQ0tfTlVNICAgICAgICAgICAgIDB4MDAwMDAwMDQKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfTlVNX1RSQUNLUyAgICAgICAgICAgIDB4MDAwMDAwMDUKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfR0VOUkUgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDYKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfUExBWUlOR19USU1FICAgICAgICAgIDB4MDAwMDAwMDcgICAgICAgIC8qIGluIG1pbGlzZWNvbmRzICovCiNkZWZpbmUgQVZSQ19NQVhfTlVNX01FRElBX0FUVFJfSUQgICAgICAgICAgICAgICA3CgovKiBEZWZpbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBwbGF5IHN0YXRlCiovCiNkZWZpbmUgQVZSQ19QTEFZU1RBVEVfUkVTUF9NU0dfU0laRSAgICAgICAgICAgIDkKI2RlZmluZSBBVlJDX1BMQVlTVEFURV9TVE9QUEVEICAgICAgICAgICAgICAgICAgMHgwMCAgICAvKiBTdG9wcGVkICovCiNkZWZpbmUgQVZSQ19QTEFZU1RBVEVfUExBWUlORyAgICAgICAgICAgICAgICAgIDB4MDEgICAgLyogUGxheWluZyAqLwojZGVmaW5lIEFWUkNfUExBWVNUQVRFX1BBVVNFRCAgICAgICAgICAgICAgICAgICAweDAyICAgIC8qIFBhdXNlZCAgKi8KI2RlZmluZSBBVlJDX1BMQVlTVEFURV9GV0RfU0VFSyAgICAgICAgICAgICAgICAgMHgwMyAgICAvKiBGd2QgU2VlayovCiNkZWZpbmUgQVZSQ19QTEFZU1RBVEVfUkVWX1NFRUsgICAgICAgICAgICAgICAgIDB4MDQgICAgLyogUmV2IFNlZWsqLwojZGVmaW5lIEFWUkNfUExBWVNUQVRFX0VSUk9SICAgICAgICAgICAgICAgICAgICAweEZGICAgIC8qIEVycm9yICAgKi8KdHlwZWRlZiBVSU5UOCB0QVZSQ19QTEFZU1RBVEU7CgovKiBEZWZpbmUgdGhlIGV2ZW50cyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGZvciBub3RpZmljYXRpb25zCiovCiNkZWZpbmUgQVZSQ19FVlRfUExBWV9TVEFUVVNfQ0hBTkdFICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX0VWVF9UUkFDS19DSEFOR0UgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfRVZUX1RSQUNLX1JFQUNIRURfRU5EICAgICAgICAgICAgICAweDAzCiNkZWZpbmUgQVZSQ19FVlRfVFJBQ0tfUkVBQ0hFRF9TVEFSVCAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX0VWVF9QTEFZX1BPU19DSEFOR0VEICAgICAgICAgICAgICAgMHgwNQojZGVmaW5lIEFWUkNfRVZUX0JBVFRFUllfU1RBVFVTX0NIQU5HRSAgICAgICAgICAweDA2CiNkZWZpbmUgQVZSQ19FVlRfU1lTVEVNX1NUQVRVU19DSEFOR0UgICAgICAgICAgIDB4MDcKI2RlZmluZSBBVlJDX0VWVF9BUFBfU0VUVElOR19DSEFOR0UgICAgICAgICAgICAgMHgwOAovKiBhZGRlZCBpbiBBVlJDUCAxLjQgKi8KI2RlZmluZSBBVlJDX0VWVF9OT1dfUExBWUlOR19DSEFOR0UgICAgICAgICAgICAgMHgwOQojZGVmaW5lIEFWUkNfRVZUX0FWQUxfUExBWUVSU19DSEFOR0UgICAgICAgICAgICAweDBhCiNkZWZpbmUgQVZSQ19FVlRfQUREUl9QTEFZRVJfQ0hBTkdFICAgICAgICAgICAgIDB4MGIKI2RlZmluZSBBVlJDX0VWVF9VSURTX0NIQU5HRSAgICAgICAgICAgICAgICAgICAgMHgwYwojZGVmaW5lIEFWUkNfRVZUX1ZPTFVNRV9DSEFOR0UgICAgICAgICAgICAgICAgICAweDBkCgovKiB0aGUgbnVtYmVyIG9mIGV2ZW50cyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGZvciBub3RpZmljYXRpb25zICovCiNkZWZpbmUgQVZSQ19OVU1fTk9USUZfRVZFTlRTICAgICAgICAgICAgICAgICAgIDB4MGQKCiNkZWZpbmUgQVZSQ19FVlRfTVNHX0xFTl8xICAgICAgICAgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX0VWVF9NU0dfTEVOXzIgICAgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfRVZUX01TR19MRU5fNSAgICAgICAgICAgICAgICAgICAgICAweDA1CiNkZWZpbmUgQVZSQ19FVlRfTVNHX0xFTl85ICAgICAgICAgICAgICAgICAgICAgIDB4MDkKCiNkZWZpbmUgQVZSQ19NQVhfVk9MVU1FICAgICAgICAgICAgICAgICAgICAgICAgIDB4N0YKCi8qIERlZmluZSB0aGUgcG9zc2libGUgdmFsdWVzIG9mIHN5c3RlbSBzdGF0dXMKKi8KI2RlZmluZSBBVlJDX1NZU1RFTVNUQVRFX1BXUl9PTiAgICAgICAgICAgICAgICAgMHgwMAojZGVmaW5lIEFWUkNfU1lTVEVNU1RBVEVfUFdSX09GRiAgICAgICAgICAgICAgICAweDAxCiNkZWZpbmUgQVZSQ19TWVNURU1TVEFURV9QV1JfVU5QTFVHR0VEICAgICAgICAgIDB4MDIKdHlwZWRlZiBVSU5UOCB0QVZSQ19TWVNURU1TVEFURTsKCi8qIHRoZSBmcmVxdWVudGx5IHVzZWQgY2hhcmFjdGVyIHNldCBpZHMgKi8KI2RlZmluZSBBVlJDX0NIQVJTRVRfSURfQVNDSUkgICAgICAgICAgICAgICAgICAoKFVJTlQxNikgMHgwMDAzKSAvKiBBU0NJSSAqLwojZGVmaW5lIEFWUkNfQ0hBUlNFVF9JRF9VVEY4ICAgICAgICAgICAgICAgICAgICgoVUlOVDE2KSAweDAwNmEpIC8qIFVURi04ICovCiNkZWZpbmUgQVZSQ19DSEFSU0VUX0lEX1VURjE2ICAgICAgICAgICAgICAgICAgKChVSU5UMTYpIDB4MDNmNykgLyogMTAxNSAqLwojZGVmaW5lIEFWUkNfQ0hBUlNFVF9JRF9VVEYzMiAgICAgICAgICAgICAgICAgICgoVUlOVDE2KSAweDAzZjkpIC8qIDEwMTcgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgQWR2YW5jZWQgQ29udHJvbAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBBVlJDX0lURU1fUExBWUVSICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfSVRFTV9GT0xERVIgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19JVEVNX01FRElBICAgICAgICAgICAgIDB4MDMKCiNkZWZpbmUgQVZSQ19TQ09QRV9QTEFZRVJfTElTVCAgICAgIDB4MDAgIC8qIE1lZGlhIFBsYXllciBJdGVtIC0gQ29udGFpbnMgYWxsIGF2YWlsYWJsZSBtZWRpYSBwbGF5ZXJzICovCiNkZWZpbmUgQVZSQ19TQ09QRV9GSUxFX1NZU1RFTSAgICAgIDB4MDEgIC8qIEZvbGRlciBJdGVtLCBNZWRpYSBFbGVtZW50IEl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGUgdmlydHVhbCBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIG1lZGlhIGNvbnRlbnQgb2YgdGhlIGJyb3dzZWQgcGxheWVyICovCiNkZWZpbmUgQVZSQ19TQ09QRV9TRUFSQ0ggICAgICAgICAgIDB4MDIgIC8qIE1lZGlhIEVsZW1lbnQgSXRlbSAgVGhlIHJlc3VsdHMgb2YgYSBzZWFyY2ggb3BlcmF0aW9uIG9uIHRoZSBicm93c2VkIHBsYXllciAqLwojZGVmaW5lIEFWUkNfU0NPUEVfTk9XX1BMQVlJTkcgICAgICAweDAzICAvKiBNZWRpYSBFbGVtZW50IEl0ZW0gIFRoZSBOb3cgUGxheWluZyBsaXN0IChvciBxdWV1ZSkgb2YgdGhlIGFkZHJlc3NlZCBwbGF5ZXIgKi8KCiNkZWZpbmUgQVZSQ19GT0xERVJfSVRFTV9DT1VOVF9OT05FIDB4RkYKCi8qIGZvbGRlciB0eXBlICovCiNkZWZpbmUgQVZSQ19GT0xERVJfVFlQRV9NSVhFRCAgICAgIDB4MDAKI2RlZmluZSBBVlJDX0ZPTERFUl9UWVBFX1RJVExFUyAgICAgMHgwMQojZGVmaW5lIEFWUkNfRk9MREVSX1RZUEVfQUxOVU1TICAgICAweDAyCiNkZWZpbmUgQVZSQ19GT0xERVJfVFlQRV9BUlRJU1RTICAgIDB4MDMKI2RlZmluZSBBVlJDX0ZPTERFUl9UWVBFX0dFTlJFUyAgICAgMHgwNAojZGVmaW5lIEFWUkNfRk9MREVSX1RZUEVfUExBWUxJU1RTICAweDA1CiNkZWZpbmUgQVZSQ19GT0xERVJfVFlQRV9ZRUFSUyAgICAgIDB4MDYKCi8qIG1ham9yIHBsYXllciB0eXBlICovCiNkZWZpbmUgQVZSQ19NSl9UWVBFX0FVRElPICAgICAgICAgIDB4MDEgIC8qIEF1ZGlvICovCiNkZWZpbmUgQVZSQ19NSl9UWVBFX1ZJREVPICAgICAgICAgIDB4MDIgIC8qIFZpZGVvICovCiNkZWZpbmUgQVZSQ19NSl9UWVBFX0JDX0FVRElPICAgICAgIDB4MDQgIC8qIEJyb2FkY2FzdGluZyBBdWRpbyAqLwojZGVmaW5lIEFWUkNfTUpfVFlQRV9CQ19WSURFTyAgICAgICAweDA4ICAvKiBCcm9hZGNhc3RpbmcgVmlkZW8gKi8KI2RlZmluZSBBVlJDX01KX1RZUEVfSU5WQUxJRCAgICAgICAgMHhGMAoKLyogcGxheWVyIHN1YiB0eXBlICovCiNkZWZpbmUgQVZSQ19TVUJfVFlQRV9OT05FICAgICAgICAgIDB4MDAKI2RlZmluZSBBVlJDX1NVQl9UWVBFX0FVRElPX0JPT0sgICAgMHgwMSAgLyogQXVkaW8gQm9vayAqLwojZGVmaW5lIEFWUkNfU1VCX1RZUEVfUE9EQ0FTVCAgICAgICAweDAyICAvKiBQb2RjYXN0ICovCiNkZWZpbmUgQVZSQ19TVUJfVFlQRV9JTlZBTElEICAgICAgIDB4RkMKCi8qIG1lZGlhIGl0ZW0gLSBtZWRpYSB0eXBlICovCiNkZWZpbmUgQVZSQ19NRURJQV9UWVBFX0FVRElPICAgICAgIDB4MDAKI2RlZmluZSBBVlJDX01FRElBX1RZUEVfVklERU8gICAgICAgMHgwMQoKI2RlZmluZSBBVlJDX0RJUl9VUCAgICAgICAgICAgICAgICAgMHgwMCAgLyogRm9sZGVyIFVwICovCiNkZWZpbmUgQVZSQ19ESVJfRE9XTiAgICAgICAgICAgICAgIDB4MDEgIC8qIEZvbGRlciBEb3duICovCgojZGVmaW5lIEFWUkNfVUlEX1NJWkUgICAgICAgICAgICAgICA4CnR5cGVkZWYgVUlOVDggdEFWUkNfVUlEW0FWUkNfVUlEX1NJWkVdOwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqICBwbGF5ZXIgYXR0cmlidXRlIC0gc3VwcG9ydGVkIGZlYXR1cmVzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX0JJVF9OTyAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX01BU0sgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX09GRiAgICAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX1NFTEVDVF9PRkZdICYgQVZSQ19QRl9TRUxFQ1RfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9VUF9CSVRfTk8gICAgICAgICAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9VUF9NQVNLICAgICAgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QRl9VUF9PRkYgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgQVZSQ19QRl9VUF9TVVBQT1JURUQoeCkgICAgICAgICAoKHgpW0FWUkNfUEZfVVBfT0ZGXSAmIEFWUkNfUEZfVVBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9ET1dOX0JJVF9OTyAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl9ET1dOX01BU0sgICAgICAgICAgICAgICAweDA0CiNkZWZpbmUgQVZSQ19QRl9ET1dOX09GRiAgICAgICAgICAgICAgICAwCiNkZWZpbmUgQVZSQ19QRl9ET1dOX1NVUFBPUlRFRCh4KSAgICAgICAoKHgpW0FWUkNfUEZfRE9XTl9PRkZdICYgQVZSQ19QRl9ET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfTEVGVF9CSVRfTk8gICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEZfTEVGVF9NQVNLICAgICAgICAgICAgICAgMHgwOAojZGVmaW5lIEFWUkNfUEZfTEVGVF9PRkYgICAgICAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEZfTEVGVF9TVVBQT1JURUQoeCkgICAgICAgKCh4KVtBVlJDX1BGX0xFRlRfT0ZGXSAmIEFWUkNfUEZfTEVGVF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JJR0hUX0JJVF9OTyAgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX1JJR0hUX01BU0sgICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGX1JJR0hUX09GRiAgICAgICAgICAgICAgIDAKI2RlZmluZSBBVlJDX1BGX1JJR0hUX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9SSUdIVF9PRkZdICYgQVZSQ19QRl9SSUdIVF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfQklUX05PICAgICAgICAgIDUKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfTUFTSyAgICAgICAgICAgIDB4MjAKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfT0ZGICAgICAgICAgICAgIDAKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfU1VQUE9SVEVEKHgpICAgICgoeClbQVZSQ19QRl9SSUdIVFVQX09GRl0gJiBBVlJDX1BGX1JJR0hUVVBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fQklUX05PICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fTUFTSyAgICAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fT0ZGICAgICAgICAgICAwCiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fU1VQUE9SVEVEKHgpICAoKHgpW0FWUkNfUEZfUklHSFRET1dOX09GRl0gJiBBVlJDX1BGX1JJR0hURE9XTl9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9CSVRfTk8gICAgICAgICAgIDcKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9NQVNLICAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9PRkYgICAgICAgICAgICAgIDAKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9TVVBQT1JURUQoeCkgICAgICgoeClbQVZSQ19QRl9MRUZUVVBfT0ZGXSAmIEFWUkNfUEZfTEVGVFVQX01BU0spCgojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fQklUX05PICAgICAgICAgOAojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fTUFTSyAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fT0ZGICAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX0xFRlRET1dOX09GRl0gJiBBVlJDX1BGX0xFRlRET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX0JJVF9OTyAgICAgICAgOQojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX01BU0sgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX09GRiAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX1NVUFBPUlRFRCh4KSAgKCh4KVtBVlJDX1BGX1JPT1RfTUVOVV9PRkZdICYgQVZSQ19QRl9ST09UX01FTlVfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9TRVRVUF9NRU5VX0JJVF9OTyAgICAgICAxMAojZGVmaW5lIEFWUkNfUEZfU0VUVVBfTUVOVV9NQVNLICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUEZfU0VUVVBfTUVOVV9PRkYgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfU0VUVVBfTUVOVV9TVVBQT1JURUQoeCkgKCh4KVtBVlJDX1BGX1NFVFVQX01FTlVfT0ZGXSAmIEFWUkNfUEZfU0VUVVBfTUVOVV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0NPTlRFTlRTX01FTlVfQklUX05PICAgIDExCiNkZWZpbmUgQVZSQ19QRl9DT05URU5UU19NRU5VX01BU0sgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9DT05URU5UU19NRU5VX09GRiAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9DT05URU5UU19NRU5VX1NVUFBPUlRFRCh4KSAgKCh4KVtBVlJDX1BGX0NPTlRFTlRTX01FTlVfT0ZGXSAmIEFWUkNfUEZfQ09OVEVOVFNfTUVOVV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0ZBVk9SSVRFX01FTlVfQklUX05PICAgIDEyCiNkZWZpbmUgQVZSQ19QRl9GQVZPUklURV9NRU5VX01BU0sgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9GQVZPUklURV9NRU5VX09GRiAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9GQVZPUklURV9NRU5VX1NVUFBPUlRFRCh4KSAgKCh4KVtBVlJDX1BGX0ZBVk9SSVRFX01FTlVfT0ZGXSAmIEFWUkNfUEZfRkFWT1JJVEVfTUVOVV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0VYSVRfQklUX05PICAgICAgICAgICAgIDEzCiNkZWZpbmUgQVZSQ19QRl9FWElUX01BU0sgICAgICAgICAgICAgICAweDIwCiNkZWZpbmUgQVZSQ19QRl9FWElUX09GRiAgICAgICAgICAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9FWElUX1NVUFBPUlRFRCh4KSAgICAgICAoKHgpW0FWUkNfUEZfRVhJVF9PRkZdICYgQVZSQ19QRl9FWElUX01BU0spCgojZGVmaW5lIEFWUkNfUEZfMF9CSVRfTk8gICAgICAgICAgICAgICAgMTQKI2RlZmluZSBBVlJDX1BGXzBfTUFTSyAgICAgICAgICAgICAgICAgIDB4NDAKI2RlZmluZSBBVlJDX1BGXzBfT0ZGICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBBVlJDX1BGXzBfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl8wX09GRl0gJiBBVlJDX1BGXzBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl8xX0JJVF9OTyAgICAgICAgICAgICAgICAxNQojZGVmaW5lIEFWUkNfUEZfMV9NQVNLICAgICAgICAgICAgICAgICAgMHg4MAojZGVmaW5lIEFWUkNfUEZfMV9PRkYgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfMV9TVVBQT1JURUQoeCkgICAgICAgICAgKCh4KVtBVlJDX1BGXzFfT0ZGXSAmIEFWUkNfUEZfMV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGXzJfQklUX05PICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgQVZSQ19QRl8yX01BU0sgICAgICAgICAgICAgICAgICAweDAxCiNkZWZpbmUgQVZSQ19QRl8yX09GRiAgICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl8yX1NVUFBPUlRFRCh4KSAgICAgICAgICAoKHgpW0FWUkNfUEZfMl9PRkZdICYgQVZSQ19QRl8yX01BU0spCgojZGVmaW5lIEFWUkNfUEZfM19CSVRfTk8gICAgICAgICAgICAgICAgMTcKI2RlZmluZSBBVlJDX1BGXzNfTUFTSyAgICAgICAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX1BGXzNfT0ZGICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBBVlJDX1BGXzNfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl8zX09GRl0gJiBBVlJDX1BGXzNfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl80X0JJVF9OTyAgICAgICAgICAgICAgICAxOAojZGVmaW5lIEFWUkNfUEZfNF9NQVNLICAgICAgICAgICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUEZfNF9PRkYgICAgICAgICAgICAgICAgICAgMgojZGVmaW5lIEFWUkNfUEZfNF9TVVBQT1JURUQoeCkgICAgICAgICAgKCh4KVtBVlJDX1BGXzRfT0ZGXSAmIEFWUkNfUEZfNF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGXzVfQklUX05PICAgICAgICAgICAgICAgIDE5CiNkZWZpbmUgQVZSQ19QRl81X01BU0sgICAgICAgICAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl81X09GRiAgICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl81X1NVUFBPUlRFRCh4KSAgICAgICAgICAoKHgpW0FWUkNfUEZfNV9PRkZdICYgQVZSQ19QRl81X01BU0spCgojZGVmaW5lIEFWUkNfUEZfNl9CSVRfTk8gICAgICAgICAgICAgICAgMjAKI2RlZmluZSBBVlJDX1BGXzZfTUFTSyAgICAgICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGXzZfT0ZGICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBBVlJDX1BGXzZfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl82X09GRl0gJiBBVlJDX1BGXzZfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl83X0JJVF9OTyAgICAgICAgICAgICAgICAyMQojZGVmaW5lIEFWUkNfUEZfN19NQVNLICAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfN19PRkYgICAgICAgICAgICAgICAgICAgMgojZGVmaW5lIEFWUkNfUEZfN19TVVBQT1JURUQoeCkgICAgICAgICAgKCh4KVtBVlJDX1BGXzdfT0ZGXSAmIEFWUkNfUEZfN19NQVNLKQoKI2RlZmluZSBBVlJDX1BGXzhfQklUX05PICAgICAgICAgICAgICAgIDIyCiNkZWZpbmUgQVZSQ19QRl84X01BU0sgICAgICAgICAgICAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRl84X09GRiAgICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl84X1NVUFBPUlRFRCh4KSAgICAgICAgICAoKHgpW0FWUkNfUEZfOF9PRkZdICYgQVZSQ19QRl84X01BU0spCgojZGVmaW5lIEFWUkNfUEZfOV9CSVRfTk8gICAgICAgICAgICAgICAgMjMKI2RlZmluZSBBVlJDX1BGXzlfTUFTSyAgICAgICAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGXzlfT0ZGICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBBVlJDX1BGXzlfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl85X09GRl0gJiBBVlJDX1BGXzlfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9ET1RfQklUX05PICAgICAgICAgICAgICAyNAojZGVmaW5lIEFWUkNfUEZfRE9UX01BU0sgICAgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfRE9UX09GRiAgICAgICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEZfRE9UX1NVUFBPUlRFRCh4KSAgICAgICAgKCh4KVtBVlJDX1BGX0RPVF9PRkZdICYgQVZSQ19QRl9ET1RfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9FTlRFUl9CSVRfTk8gICAgICAgICAgICAyNQojZGVmaW5lIEFWUkNfUEZfRU5URVJfTUFTSyAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUEZfRU5URVJfT0ZGICAgICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEZfRU5URVJfU1VQUE9SVEVEKHgpICAgICAgKCh4KVtBVlJDX1BGX0VOVEVSX09GRl0gJiBBVlJDX1BGX0VOVEVSX01BU0spCgojZGVmaW5lIEFWUkNfUEZfQ0xFQVJfQklUX05PICAgICAgICAgICAgMjYKI2RlZmluZSBBVlJDX1BGX0NMRUFSX01BU0sgICAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BGX0NMRUFSX09GRiAgICAgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX0NMRUFSX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9DTEVBUl9PRkZdICYgQVZSQ19QRl9DTEVBUl9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0NITkxfVVBfQklUX05PICAgICAgICAgIDI3CiNkZWZpbmUgQVZSQ19QRl9DSE5MX1VQX01BU0sgICAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9DSE5MX1VQX09GRiAgICAgICAgICAgICAzCiNkZWZpbmUgQVZSQ19QRl9DSE5MX1VQX1NVUFBPUlRFRCh4KSAgICAoKHgpW0FWUkNfUEZfQ0hOTF9VUF9PRkZdICYgQVZSQ19QRl9DSE5MX1VQX01BU0spCgojZGVmaW5lIEFWUkNfUEZfQ0hOTF9ET1dOX0JJVF9OTyAgICAgICAgMjgKI2RlZmluZSBBVlJDX1BGX0NITkxfRE9XTl9NQVNLICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGX0NITkxfRE9XTl9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX0NITkxfRE9XTl9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9DSE5MX0RPV05fT0ZGXSAmIEFWUkNfUEZfQ0hOTF9ET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfUFJFVl9DSE5MX0JJVF9OTyAgICAgICAgMjkKI2RlZmluZSBBVlJDX1BGX1BSRVZfQ0hOTF9NQVNLICAgICAgICAgIDB4MjAKI2RlZmluZSBBVlJDX1BGX1BSRVZfQ0hOTF9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX1BSRVZfQ0hOTF9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9QUkVWX0NITkxfT0ZGXSAmIEFWUkNfUEZfUFJFVl9DSE5MX01BU0spCgojZGVmaW5lIEFWUkNfUEZfU09VTkRfU0VMX0JJVF9OTyAgICAgICAgMzAKI2RlZmluZSBBVlJDX1BGX1NPVU5EX1NFTF9NQVNLICAgICAgICAgIDB4NDAKI2RlZmluZSBBVlJDX1BGX1NPVU5EX1NFTF9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX1NPVU5EX1NFTF9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9TT1VORF9TRUxfT0ZGXSAmIEFWUkNfUEZfU09VTkRfU0VMX01BU0spCgojZGVmaW5lIEFWUkNfUEZfSU5QVVRfU0VMX0JJVF9OTyAgICAgICAgMzEKI2RlZmluZSBBVlJDX1BGX0lOUFVUX1NFTF9NQVNLICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0lOUFVUX1NFTF9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX0lOUFVUX1NFTF9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9JTlBVVF9TRUxfT0ZGXSAmIEFWUkNfUEZfSU5QVVRfU0VMX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRElTUF9JTkZPX0JJVF9OTyAgICAgICAgMzIKI2RlZmluZSBBVlJDX1BGX0RJU1BfSU5GT19NQVNLICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX1BGX0RJU1BfSU5GT19PRkYgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX0RJU1BfSU5GT19TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9ESVNQX0lORk9fT0ZGXSAmIEFWUkNfUEZfRElTUF9JTkZPX01BU0spCgojZGVmaW5lIEFWUkNfUEZfSEVMUF9CSVRfTk8gICAgICAgICAgICAgMzMKI2RlZmluZSBBVlJDX1BGX0hFTFBfTUFTSyAgICAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX1BGX0hFTFBfT0ZGICAgICAgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX0hFTFBfU1VQUE9SVEVEKHgpICAgICAgICgoeClbQVZSQ19QRl9IRUxQX09GRl0gJiBBVlJDX1BGX0hFTFBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9QQUdFX1VQX0JJVF9OTyAgICAgICAgICAzNAojZGVmaW5lIEFWUkNfUEZfUEFHRV9VUF9NQVNLICAgICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUEZfUEFHRV9VUF9PRkYgICAgICAgICAgICAgNAojZGVmaW5lIEFWUkNfUEZfUEFHRV9VUF9TVVBQT1JURUQoeCkgICAgKCh4KVtBVlJDX1BGX1BBR0VfVVBfT0ZGXSAmIEFWUkNfUEZfUEFHRV9VUF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1BBR0VfRE9XTl9CSVRfTk8gICAgICAgIDM1CiNkZWZpbmUgQVZSQ19QRl9QQUdFX0RPV05fTUFTSyAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9QQUdFX0RPV05fT0ZGICAgICAgICAgICA0CiNkZWZpbmUgQVZSQ19QRl9QQUdFX0RPV05fU1VQUE9SVEVEKHgpICAoKHgpW0FWUkNfUEZfUEFHRV9ET1dOX09GRl0gJiBBVlJDX1BGX1BBR0VfRE9XTl9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1BPV0VSX0JJVF9OTyAgICAgICAgICAgIDM2CiNkZWZpbmUgQVZSQ19QRl9QT1dFUl9NQVNLICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9QT1dFUl9PRkYgICAgICAgICAgICAgICA0CiNkZWZpbmUgQVZSQ19QRl9QT1dFUl9TVVBQT1JURUQoeCkgICAgICAoKHgpW0FWUkNfUEZfUE9XRVJfT0ZGXSAmIEFWUkNfUEZfUE9XRVJfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9WT0xfVVBfQklUX05PICAgICAgICAgICAzNwojZGVmaW5lIEFWUkNfUEZfVk9MX1VQX01BU0sgICAgICAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfVk9MX1VQX09GRiAgICAgICAgICAgICAgNAojZGVmaW5lIEFWUkNfUEZfVk9MX1VQX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX1ZPTF9VUF9PRkZdICYgQVZSQ19QRl9WT0xfVVBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9WT0xfRE9XTl9CSVRfTk8gICAgICAgICAzOAojZGVmaW5lIEFWUkNfUEZfVk9MX0RPV05fTUFTSyAgICAgICAgICAgMHg0MAojZGVmaW5lIEFWUkNfUEZfVk9MX0RPV05fT0ZGICAgICAgICAgICAgNAojZGVmaW5lIEFWUkNfUEZfVk9MX0RPV05fU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX1ZPTF9ET1dOX09GRl0gJiBBVlJDX1BGX1ZPTF9ET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfTVVURV9CSVRfTk8gICAgICAgICAgICAgMzkKI2RlZmluZSBBVlJDX1BGX01VVEVfTUFTSyAgICAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX01VVEVfT0ZGICAgICAgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX01VVEVfU1VQUE9SVEVEKHgpICAgICAgICgoeClbQVZSQ19QRl9NVVRFX09GRl0gJiBBVlJDX1BGX01VVEVfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9QTEFZX0JJVF9OTyAgICAgICAgICAgICA0MAojZGVmaW5lIEFWUkNfUEZfUExBWV9NQVNLICAgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfUExBWV9PRkYgICAgICAgICAgICAgICAgNQojZGVmaW5lIEFWUkNfUEZfUExBWV9TVVBQT1JURUQoeCkgICAgICAgKCh4KVtBVlJDX1BGX1BMQVlfT0ZGXSAmIEFWUkNfUEZfUExBWV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1NUT1BfQklUX05PICAgICAgICAgICAgIDQxCiNkZWZpbmUgQVZSQ19QRl9TVE9QX01BU0sgICAgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QRl9TVE9QX09GRiAgICAgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9TVE9QX1NVUFBPUlRFRCh4KSAgICAgICAoKHgpW0FWUkNfUEZfU1RPUF9PRkZdICYgQVZSQ19QRl9TVE9QX01BU0spCgojZGVmaW5lIEFWUkNfUEZfUEFVU0VfQklUX05PICAgICAgICAgICAgNDIKI2RlZmluZSBBVlJDX1BGX1BBVVNFX01BU0sgICAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BGX1BBVVNFX09GRiAgICAgICAgICAgICAgIDUKI2RlZmluZSBBVlJDX1BGX1BBVVNFX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9QQVVTRV9PRkZdICYgQVZSQ19QRl9QQVVTRV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JFQ09SRF9CSVRfTk8gICAgICAgICAgIDQzCiNkZWZpbmUgQVZSQ19QRl9SRUNPUkRfTUFTSyAgICAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9SRUNPUkRfT0ZGICAgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9SRUNPUkRfU1VQUE9SVEVEKHgpICAgICAoKHgpW0FWUkNfUEZfUkVDT1JEX09GRl0gJiBBVlJDX1BGX1JFQ09SRF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JFV0lORF9CSVRfTk8gICAgICAgICAgIDQ0CiNkZWZpbmUgQVZSQ19QRl9SRVdJTkRfTUFTSyAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9SRVdJTkRfT0ZGICAgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9SRVdJTkRfU1VQUE9SVEVEKHgpICAgICAoKHgpW0FWUkNfUEZfUkVXSU5EX09GRl0gJiBBVlJDX1BGX1JFV0lORF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0ZBU1RfRldEX0JJVF9OTyAgICAgICAgIDQ1CiNkZWZpbmUgQVZSQ19QRl9GQVNUX0ZXRF9NQVNLICAgICAgICAgICAweDIwCiNkZWZpbmUgQVZSQ19QRl9GQVNUX0ZXRF9PRkYgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9GQVNUX0ZXRF9TVVBQT1JURUQoeCkgICAoKHgpW0FWUkNfUEZfRkFTVF9GV0RfT0ZGXSAmIEFWUkNfUEZfRkFTVF9GV0RfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9FSkVDVF9CSVRfTk8gICAgICAgICAgICA0NgojZGVmaW5lIEFWUkNfUEZfRUpFQ1RfTUFTSyAgICAgICAgICAgICAgMHg0MAojZGVmaW5lIEFWUkNfUEZfRUpFQ1RfT0ZGICAgICAgICAgICAgICAgNQojZGVmaW5lIEFWUkNfUEZfRUpFQ1RfU1VQUE9SVEVEKHgpICAgICAgKCh4KVtBVlJDX1BGX0VKRUNUX09GRl0gJiBBVlJDX1BGX0VKRUNUX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRk9SV0FSRF9CSVRfTk8gICAgICAgICAgNDcKI2RlZmluZSBBVlJDX1BGX0ZPUldBUkRfTUFTSyAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0ZPUldBUkRfT0ZGICAgICAgICAgICAgIDUKI2RlZmluZSBBVlJDX1BGX0ZPUldBUkRfU1VQUE9SVEVEKHgpICAgICgoeClbQVZSQ19QRl9GT1JXQVJEX09GRl0gJiBBVlJDX1BGX0ZPUldBUkRfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9CQUNLV0FSRF9CSVRfTk8gICAgICAgICA0OAojZGVmaW5lIEFWUkNfUEZfQkFDS1dBUkRfTUFTSyAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfQkFDS1dBUkRfT0ZGICAgICAgICAgICAgNgojZGVmaW5lIEFWUkNfUEZfQkFDS1dBUkRfU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX0JBQ0tXQVJEX09GRl0gJiBBVlJDX1BGX0JBQ0tXQVJEX01BU0spCgojZGVmaW5lIEFWUkNfUEZfQU5HTEVfQklUX05PICAgICAgICAgICAgNDkKI2RlZmluZSBBVlJDX1BGX0FOR0xFX01BU0sgICAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX1BGX0FOR0xFX09GRiAgICAgICAgICAgICAgIDYKI2RlZmluZSBBVlJDX1BGX0FOR0xFX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9BTkdMRV9PRkZdICYgQVZSQ19QRl9BTkdMRV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1NVQlBJQ1RVUkVfQklUX05PICAgICAgIDUwCiNkZWZpbmUgQVZSQ19QRl9TVUJQSUNUVVJFX01BU0sgICAgICAgICAweDA0CiNkZWZpbmUgQVZSQ19QRl9TVUJQSUNUVVJFX09GRiAgICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9TVUJQSUNUVVJFX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfU1VCUElDVFVSRV9PRkZdICYgQVZSQ19QRl9TVUJQSUNUVVJFX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRjFfQklUX05PICAgICAgICAgICAgICAgNTEKI2RlZmluZSBBVlJDX1BGX0YxX01BU0sgICAgICAgICAgICAgICAgIDB4MDgKI2RlZmluZSBBVlJDX1BGX0YxX09GRiAgICAgICAgICAgICAgICAgIDYKI2RlZmluZSBBVlJDX1BGX0YxX1NVUFBPUlRFRCh4KSAgICAgICAgICgoeClbQVZSQ19QRl9GMV9PRkZdICYgQVZSQ19QRl9GMV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0YyX0JJVF9OTyAgICAgICAgICAgICAgIDUyCiNkZWZpbmUgQVZSQ19QRl9GMl9NQVNLICAgICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9GMl9PRkYgICAgICAgICAgICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9GMl9TVVBQT1JURUQoeCkgICAgICAgICAoKHgpW0FWUkNfUEZfRjJfT0ZGXSAmIEFWUkNfUEZfRjJfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9GM19CSVRfTk8gICAgICAgICAgICAgICA1MwojZGVmaW5lIEFWUkNfUEZfRjNfTUFTSyAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfRjNfT0ZGICAgICAgICAgICAgICAgICAgNgojZGVmaW5lIEFWUkNfUEZfRjNfU1VQUE9SVEVEKHgpICAgICAgICAgKCh4KVtBVlJDX1BGX0YzX09GRl0gJiBBVlJDX1BGX0YzX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRjRfQklUX05PICAgICAgICAgICAgICAgNTQKI2RlZmluZSBBVlJDX1BGX0Y0X01BU0sgICAgICAgICAgICAgICAgIDB4NDAKI2RlZmluZSBBVlJDX1BGX0Y0X09GRiAgICAgICAgICAgICAgICAgIDYKI2RlZmluZSBBVlJDX1BGX0Y0X1NVUFBPUlRFRCh4KSAgICAgICAgICgoeClbQVZSQ19QRl9GNF9PRkZdICYgQVZSQ19QRl9GNF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0Y1X0JJVF9OTyAgICAgICAgICAgICAgIDU1CiNkZWZpbmUgQVZSQ19QRl9GNV9NQVNLICAgICAgICAgICAgICAgICAweDgwCiNkZWZpbmUgQVZSQ19QRl9GNV9PRkYgICAgICAgICAgICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9GNV9TVVBQT1JURUQoeCkgICAgICAgICAoKHgpW0FWUkNfUEZfRjVfT0ZGXSAmIEFWUkNfUEZfRjVfTUFTSykKCi8qIFZlbmRvciB1bmlxdWUuIFRoaXMgUEFTU1RIUk9VR0ggY29tbWFuZCBpcyBzdXBwb3J0ZWQuICovCiNkZWZpbmUgQVZSQ19QRl9WRU5ET1JfQklUX05PICAgICAgICAgICA1NgojZGVmaW5lIEFWUkNfUEZfVkVORE9SX01BU0sgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfVkVORE9SX09GRiAgICAgICAgICAgICAgNwojZGVmaW5lIEFWUkNfUEZfVkVORE9SX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX1ZFTkRPUl9PRkZdICYgQVZSQ19QRl9WRU5ET1JfTUFTSykKCi8qIEJhc2ljIEdyb3VwIE5hdmlnYXRpb24uICBUaGlzIG92ZXJydWxlcyB0aGUgU0RQIGVudHJ5IGFzIGl0IGlzIHNldCBwZXIgcGxheWVyLjcgKi8KI2RlZmluZSBBVlJDX1BGX0dST1VQX05BVklfQklUX05PICAgICAgIDU3CiNkZWZpbmUgQVZSQ19QRl9HUk9VUF9OQVZJX01BU0sgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QRl9HUk9VUF9OQVZJX09GRiAgICAgICAgICA3CiNkZWZpbmUgQVZSQ19QRl9HUk9VUF9OQVZJX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfR1JPVVBfTkFWSV9PRkZdICYgQVZSQ19QRl9HUk9VUF9OQVZJX01BU0spCgovKiBBZHZhbmNlZCBDb250cm9sIFBsYXllci4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgcGxheWVyIHN1cHBvcnRzIGF0IGxlYXN0IEFWUkNQIDEuNC4gKi8KI2RlZmluZSBBVlJDX1BGX0FEVl9DVFJMX0JJVF9OTyAgICAgICAgIDU4CiNkZWZpbmUgQVZSQ19QRl9BRFZfQ1RSTF9NQVNLICAgICAgICAgICAweDA0CiNkZWZpbmUgQVZSQ19QRl9BRFZfQ1RSTF9PRkYgICAgICAgICAgICA3CiNkZWZpbmUgQVZSQ19QRl9BRFZfQ1RSTF9TVVBQT1JURUQoeCkgICAoKHgpW0FWUkNfUEZfQURWX0NUUkxfT0ZGXSAmIEFWUkNfUEZfQURWX0NUUkxfTUFTSykKCi8qIEJyb3dzaW5nLiAgVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgc3VwcG9ydHMgYnJvd3NpbmcuICovCiNkZWZpbmUgQVZSQ19QRl9CUk9XU0VfQklUX05PICAgICAgICAgICA1OQojZGVmaW5lIEFWUkNfUEZfQlJPV1NFX01BU0sgICAgICAgICAgICAgMHgwOAojZGVmaW5lIEFWUkNfUEZfQlJPV1NFX09GRiAgICAgICAgICAgICAgNwojZGVmaW5lIEFWUkNfUEZfQlJPV1NFX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX0JST1dTRV9PRkZdICYgQVZSQ19QRl9CUk9XU0VfTUFTSykKCi8qIFNlYXJjaGluZy4gVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgc3VwcG9ydHMgc2VhcmNoaW5nLiAqLwojZGVmaW5lIEFWUkNfUEZfU0VBUkNIX0JJVF9OTyAgICAgICAgICAgNjAKI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9NQVNLICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9PRkYgICAgICAgICAgICAgIDcKI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9TVVBQT1JURUQoeCkgICAgICgoeClbQVZSQ19QRl9TRUFSQ0hfT0ZGXSAmIEFWUkNfUEZfU0VBUkNIX01BU0spCgovKiBBZGRUb05vd1BsYXlpbmcuICBUaGlzIGJpdCBpcyBzZXQgaWYgdGhlIHBsYXllciBzdXBwb3J0cyB0aGUgQWRkVG9Ob3dQbGF5aW5nIGNvbW1hbmQuICovCiNkZWZpbmUgQVZSQ19QRl9BREQyTk9XUExBWV9CSVRfTk8gICAgICA2MQojZGVmaW5lIEFWUkNfUEZfQUREMk5PV1BMQVlfTUFTSyAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfQUREMk5PV1BMQVlfT0ZGICAgICAgICAgNwojZGVmaW5lIEFWUkNfUEZfQUREMk5PV1BMQVlfU1VQUE9SVEVEKHgpICgoeClbQVZSQ19QRl9BREQyTk9XUExBWV9PRkZdICYgQVZSQ19QRl9BREQyTk9XUExBWV9NQVNLKQoKLyogVUlEcyB1bmlxdWUgaW4gcGxheWVyIGJyb3dzZSB0cmVlLiAgVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgaXMgYWJsZSB0byBtYWludGFpbiB1bmlxdWUgVUlEcyBhY3Jvc3MgdGhlIHBsYXllciBicm93c2UgdHJlZS4gKi8KI2RlZmluZSBBVlJDX1BGX1VJRF9VTklRVUVfQklUX05PICAgICAgIDYyCiNkZWZpbmUgQVZSQ19QRl9VSURfVU5JUVVFX01BU0sgICAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRl9VSURfVU5JUVVFX09GRiAgICAgICAgICA3CiNkZWZpbmUgQVZSQ19QRl9VSURfVU5JUVVFX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfVUlEX1VOSVFVRV9PRkZdICYgQVZSQ19QRl9VSURfVU5JUVVFX01BU0spCgovKiBPbmx5QnJvd3NhYmxlV2hlbkFkZHJlc3NlZC4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgcGxheWVyIGlzIG9ubHkgYWJsZSB0byBiZSBicm93c2VkIHdoZW4gaXQgaXMgc2V0IGFzIHRoZSBBZGRyZXNzZWQgUGxheWVyLiAqLwojZGVmaW5lIEFWUkNfUEZfQlJfV0hfQUREUl9CSVRfTk8gICAgICAgNjMKI2RlZmluZSBBVlJDX1BGX0JSX1dIX0FERFJfTUFTSyAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0JSX1dIX0FERFJfT0ZGICAgICAgICAgIDcKI2RlZmluZSBBVlJDX1BGX0JSX1dIX0FERFJfU1VQUE9SVEVEKHgpICgoeClbQVZSQ19QRl9CUl9XSF9BRERSX09GRl0gJiBBVlJDX1BGX0JSX1dIX0FERFJfTUFTSykKCi8qIE9ubHlTZWFyY2hhYmxlV2hlbkFkZHJlc3NlZC4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgcGxheWVyIGlzIG9ubHkgYWJsZSB0byBiZSBzZWFyY2hlZCB3aGVuIGl0IGlzIHNldCBhcyB0aGUgQWRkcmVzc2VkIHBsYXllci4gKi8KI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9XSF9BRERSX0JJVF9OTyAgIDY0CiNkZWZpbmUgQVZSQ19QRl9TRUFSQ0hfV0hfQUREUl9NQVNLICAgICAweDAxCiNkZWZpbmUgQVZSQ19QRl9TRUFSQ0hfV0hfQUREUl9PRkYgICAgICA4CiNkZWZpbmUgQVZSQ19QRl9TRUFSQ0hfV0hfQUREUl9TVVBQT1JURUQoeCkgKCh4KVtBVlJDX1BGX1NFQVJDSF9XSF9BRERSX09GRl0gJiBBVlJDX1BGX1NFQVJDSF9XSF9BRERSX01BU0spCgovKiBOb3dQbGF5aW5nLiAgVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgc3VwcG9ydHMgdGhlIE5vd1BsYXlpbmcgZm9sZGVyLiAgTm90ZSB0aGF0IGZvciBhbGwgcGxheWVycyB0aGF0IHN1cHBvcnQgYnJvd3NpbmcgdGhpcyBiaXQgc2hhbGwgYmUgc2V0ICovCiNkZWZpbmUgQVZSQ19QRl9OT1dfUExBWV9CSVRfTk8gICAgICAgICA2NQojZGVmaW5lIEFWUkNfUEZfTk9XX1BMQVlfTUFTSyAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUEZfTk9XX1BMQVlfT0ZGICAgICAgICAgICAgOAojZGVmaW5lIEFWUkNfUEZfTk9XX1BMQVlfU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX05PV19QTEFZX09GRl0gJiBBVlJDX1BGX05PV19QTEFZX01BU0spCgovKiBVSURQZXJzaXN0ZW5jeS4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgUGxheWVyIGlzIGFibGUgdG8gcGVyc2lzdCBVSUQgdmFsdWVzIGJldHdlZW4gQVZSQ1AgQnJvd3NlIFJlY29ubmVjdCAqLwojZGVmaW5lIEFWUkNfUEZfVUlEX1BFUlNJU1RfQklUX05PICAgICAgNjYKI2RlZmluZSBBVlJDX1BGX1VJRF9QRVJTSVNUX01BU0sgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BGX1VJRF9QRVJTSVNUX09GRiAgICAgICAgIDgKI2RlZmluZSBBVlJDX1BGX1VJRF9QRVJTSVNUX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfVUlEX1BFUlNJU1RfT0ZGXSAmIEFWUkNfUEZfVUlEX1BFUlNJU1RfTUFTSykKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgZGF0YSB0eXBlIGRlZmluaXRpb25zCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGhlYWRlciBwYXJhbWV0ZXJzIG9mIGFuIEFWL0MgbWVzc2FnZS4KKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICBjdHlwZTsgICAgICAgICAgLyogQ29tbWFuZCB0eXBlLiAgKi8KICAgIFVJTlQ4ICAgc3VidW5pdF90eXBlOyAgIC8qIFN1YnVuaXQgdHlwZS4gKi8KICAgIFVJTlQ4ICAgc3VidW5pdF9pZDsgICAgIC8qIFN1YnVuaXQgSUQuICBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSBpZ25vcmVkIGluIEFWUkNQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZXhjZXB0IGZvciBWRU5ET1IgREVQRU5ERU5UIG1lc3NhZ2VzIHdoZW4gdGhlIHZhbHVlIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2ZW5kb3ItZGVwZW5kZW50LiAgVmFsdWUgcmFuZ2UgaXMgMC03LiAqLwogICAgVUlOVDggICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAocGFzc3Rocm91Z2gsIHZlbmRvciwgZXRjKSAqLwp9IHRBVlJDX0hEUjsKCi8qIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGEgVU5JVCBJTkZPIG1lc3NhZ2UuICovCnR5cGVkZWYgc3RydWN0CnsKICAgIHRBVlJDX0hEUiAgIGhkcjsgICAgICAgIC8qIE1lc3NhZ2UgaGVhZGVyLiAqLwogICAgVUlOVDMyICAgICAgY29tcGFueV9pZDsgLyogQ29tcGFueSBpZGVudGlmaWVyLiAqLwogICAgVUlOVDggICAgICAgdW5pdF90eXBlOyAgLyogVW5pdCB0eXBlLiAgVXNlcyB0aGUgc2FtZSB2YWx1ZXMgYXMgc3VidW5pdCB0eXBlLiAqLwogICAgVUlOVDggICAgICAgdW5pdDsgICAgICAgLyogVGhpcyB2YWx1ZSBpcyB2ZW5kb3IgZGVwZW5kZW50IGFuZCB0eXBpY2FsbHkgemVyby4gICovCn0gdEFWUkNfTVNHX1VOSVQ7CgovKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBhIFNVQlVOSVQgSU5GTyBtZXNzYWdlLiAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICB0QVZSQ19IRFIgICBoZHI7ICAgICAgICAvKiBNZXNzYWdlIGhlYWRlci4gKi8KICAgIFVJTlQ4ICAgICAgIHN1YnVuaXRfdHlwZVtBVlJDX1NVQl9UWVBFX0xFTl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBcnJheSBjb250YWluaW5nIHN1YnVuaXQgdHlwZSB2YWx1ZXMuICAqLwogICAgQk9PTEVBTiAgICAgcGFuZWw7ICAgICAgLyogVFJVRSBpZiB0aGUgcGFuZWwgc3VidW5pdCB0eXBlIGlzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3VidW5pdF90eXBlIGFycmF5LCBGQUxTRSBvdGhlcndpc2UuICovCiAgICBVSU5UOCAgICAgICBwYWdlOyAgICAgICAvKiBTcGVjaWZpZXMgd2hpY2ggcGFydCBvZiB0aGUgc3VidW5pdCB0eXBlIHRhYmxlIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5lZC4gIEZvciBBVlJDUCBpdCBpcyB0eXBpY2FsbHkgemVyby4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFZhbHVlIHJhbmdlIGlzIDAtNy4gKi8KfSB0QVZSQ19NU0dfU1VCOwoKLyogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgYSBWRU5ET1IgREVQRU5ERU5UIG1lc3NhZ2UuICovCnR5cGVkZWYgc3RydWN0CnsKICAgIHRBVlJDX0hEUiAgIGhkcjsgICAgICAgIC8qIE1lc3NhZ2UgaGVhZGVyLiAqLwogICAgVUlOVDMyICAgICAgY29tcGFueV9pZDsgLyogQ29tcGFueSBpZGVudGlmaWVyLiAqLwogICAgVUlOVDggICAgICAqcF92ZW5kb3JfZGF0YTsvKiBQb2ludGVyIHRvIHZlbmRvciBkZXBlbmRlbnQgZGF0YS4gKi8KICAgIFVJTlQxNiAgICAgIHZlbmRvcl9sZW47IC8qIExlbmd0aCBpbiBieXRlcyBvZiB2ZW5kb3IgZGVwZW5kZW50IGRhdGEuICovCn0gdEFWUkNfTVNHX1ZFTkRPUjsKCi8qIFBBU1MgVEhST1VHSCBtZXNzYWdlIHN0cnVjdHVyZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICB0QVZSQ19IRFIgICBoZHI7ICAgICAgICAvKiBoZHIuY3R5cGUgVW51c2VkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaGRyLnN1YnVuaXRfdHlwZSBVbnVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoZHIuc3VidW5pdF9pZCBVbnVzZWQuICovCiAgICBVSU5UOCAgICAgICBvcF9pZDsgICAgICAvKiBPcGVyYXRpb24gSUQuICAqLwogICAgVUlOVDggICAgICAgc3RhdGU7ICAgICAgLyogS2V5cHJlc3Mgc3RhdGUuICAqLwogICAgVUlOVDggICAgICAqcF9wYXNzX2RhdGE7LyogUG9pbnRlciB0byBkYXRhLiAgVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB2YWxpZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogd2hlbiB0aGUgb3BfaWQgaXMgQVZSQ19JRF9WRU5ET1IuKi8KICAgIFVJTlQ4ICAgICAgIHBhc3NfbGVuOyAgIC8qIExlbmd0aCBpbiBieXRlcyBvZiBkYXRhLiBUaGlzIHBhcmFtZXRlciBpcyBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWxpZCB3aGVuIHRoZSBvcF9pZCBpcyBBVlJDX0lEX1ZFTkRPUi4qLwp9IHRBVlJDX01TR19QQVNTOwoKLyogQ29tbWFuZC9SZXNwb25zZSBpbmRpY2F0b3IuICovCiNkZWZpbmUgQVZSQ19DTUQgICAgICAgICAgICBBVkNUX0NNRCAgICAvKiBDb21tYW5kIG1lc3NhZ2UgKi8KI2RlZmluZSBBVlJDX1JTUCAgICAgICAgICAgIEFWQ1RfUlNQICAgIC8qIFJlc3BvbnNlIG1lc3NhZ2UgKi8KCi8qIEJyb3dzaW5nIGNoYW5uZWwgbWVzc2FnZSBzdHJ1Y3R1cmUgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgdEFWUkNfSERSICAgaGRyOyAgICAgICAgICAgIC8qIGhkci5jdHlwZSBBVlJDX0NNRCBvciBBVlJDX1JTUC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoZHIuc3VidW5pdF90eXBlIFVudXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoZHIuc3VidW5pdF9pZCBVbnVzZWQuICovCiAgICBVSU5UOCAgICAgICpwX2Jyb3dzZV9kYXRhOyAgLyogUG9pbnRlciB0byBkYXRhLiAgKi8KICAgIFVJTlQxNiAgICAgIGJyb3dzZV9sZW47ICAgICAvKiBMZW5ndGggaW4gYnl0ZXMgb2YgZGF0YS4gKi8KICAgIEJUX0hEUiAgICAgKnBfYnJvd3NlX3BrdDsgICAvKiBUaGUgR0tJIGJ1ZmZlciByZWNlaXZlZC4gU2V0IHRvIE5VTEwsIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3YW50cyB0byBrZWVwIHRoZSBidWZmZXIgKi8KfSB0QVZSQ19NU0dfQlJPV1NFOwoKLyogVGhpcyBpcyBhIHVuaW9uIG9mIGFsbCBtZXNzYWdlIHR5cGUgc3RydWN0dXJlcy4gKi8KdHlwZWRlZiB1bmlvbgp7CiAgICB0QVZSQ19IRFIgICAgICAgICAgIGhkcjsgICAgLyogTWVzc2FnZSBoZWFkZXIuICovCiAgICB0QVZSQ19NU0dfVU5JVCAgICAgIHVuaXQ7ICAgLyogVU5JVCBJTkZPIG1lc3NhZ2UuICovCiAgICB0QVZSQ19NU0dfU1VCICAgICAgIHN1YjsgICAgLyogU1VCVU5JVCBJTkZPIG1lc3NhZ2UuICovCiAgICB0QVZSQ19NU0dfVkVORE9SICAgIHZlbmRvcjsgLyogVkVORE9SIERFUEVOREVOVCBtZXNzYWdlLiAqLwogICAgdEFWUkNfTVNHX1BBU1MgICAgICBwYXNzOyAgIC8qIFBBU1MgVEhST1VHSCBtZXNzYWdlLiAqLwogICAgdEFWUkNfTVNHX0JST1dTRSAgICBicm93c2U7IC8qIG1lc3NhZ2VzIHRocnUgYnJvd3NpbmcgY2hhbm5lbCAqLwp9IHRBVlJDX01TRzsKCi8qIG1hY3JvcyAqLwojZGVmaW5lIEFWUkNfSVNfVkFMSURfQ0FQX0lEKGEpICAgICAgICAgICAoKChhID09IEFWUkNfQ0FQX0NPTVBBTllfSUQpIHx8IChhID09IEFWUkNfQ0FQX0VWRU5UU19TVVBQT1JURUQpKSA/IFRSVUUgOiBGQUxTRSkKCiNkZWZpbmUgQVZSQ19JU19WQUxJRF9FVkVOVF9JRChhKSAgICAgICAgICAgKCgoYSA+PSBBVlJDX0VWVF9QTEFZX1NUQVRVU19DSEFOR0UpICYmIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhIDw9IEFWUkNfRVZUX0FQUF9TRVRUSU5HX0NIQU5HRSkpID8gVFJVRSA6IEZBTFNFKQoKI2RlZmluZSBBVlJDX0lTX1ZBTElEX0FUVFJJQlVURShhKSAgICAgICAgICAoKCgoKGEgPiAwKSAmJiBhIDw9IEFWUkNfUExBWUVSX1NFVFRJTkdfU0NBTikpIHx8IFwKCQkJCQkgICAgICAoYSA+PSBBVlJDX1BMQVlFUl9TRVRUSU5HX0xPV19NRU5VX0VYVCkpID8gVFJVRSA6IEZBTFNFKQoKI2RlZmluZSBBVlJDX0lTX1ZBTElEX01FRElBX0FUVFJJQlVURShhKSAgICAoKGEgPj0gQVZSQ19NRURJQV9BVFRSX0lEX1RJVExFKSAmJiBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhIDw9IEFWUkNfTUVESUFfQVRUUl9JRF9QTEFZSU5HX1RJTUUpID8gVFJVRSA6IEZBTFNFKQoKI2RlZmluZSBBVlJDX0lTX1ZBTElEX0JBVFRFUllfU1RBVFVTKGEpICAgICgoYSA8PSBBVlJDX0JBVFRFUllfU1RBVFVTX0ZVTExfQ0hBUkdFKSA/IFRSVUUgOiBGQUxTRSkKCiNkZWZpbmUgQVZSQ19JU19WQUxJRF9TWVNURU1fU1RBVFVTKGEpICAgICgoYSA8PSBBVlJDX1NZU1RFTVNUQVRFX1BXUl9VTlBMVUdHRUQpID8gVFJVRSA6IEZBTFNFKQoKI2RlZmluZSBBVlJDX0lTX1ZBTElEX0dST1VQKGEpICAgICgoYSA8PSBBVlJDX1BEVV9QUkVWX0dST1VQKSA/IFRSVUUgOiBGQUxTRSkKCi8qIENvbXBhbnkgSUQgaXMgMjQtYml0IGludGVnZXIgV2UgY2FuIG5vdCB1c2UgdGhlIG1hY3JvcyBpbiBidF90eXBlcy5oICovCiNkZWZpbmUgQVZSQ19DT19JRF9UT19CRV9TVFJFQU0ocCwgdTMyKSB7KihwKSsrID0gKFVJTlQ4KSgodTMyKSA+PiAxNik7ICoocCkrKyA9IChVSU5UOCkoKHUzMikgPj4gOCk7ICoocCkrKyA9IChVSU5UOCkodTMyKTsgfQojZGVmaW5lIEFWUkNfQkVfU1RSRUFNX1RPX0NPX0lEKHUzMiwgcCkge3UzMiA9ICgoKFVJTlQzMikoKigocCkgKyAyKSkpICsgKCgoVUlOVDMyKSgqKChwKSArIDEpKSkgPDwgOCkgKyAoKChVSU5UMzIpKCoocCkpKSA8PCAxNikpOyAocCkgKz0gMzt9CgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiogIGRhdGEgdHlwZSBkZWZpbml0aW9ucwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBBVlJDX01BWF9BUFBfQVRUUl9TSVpFICAgICAgMTYKI2RlZmluZSBBVlJDX01BWF9DSEFSU0VUX1NJWkUgICAgICAgMTYKI2RlZmluZSBBVlJDX01BWF9FTEVNX0FUVFJfU0laRSAgICAgOAoKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgTWV0YWRhdGEgdHJhbnNmZXIgQnVpbGRpbmcvUGFyc2luZyBkZWZpbml0aW9ucwoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCnR5cGVkZWYgc3RydWN0IHsKICAgIFVJTlQxNiAgICAgICAgICAgICAgY2hhcnNldF9pZDsKICAgIFVJTlQxNiAgICAgICAgICAgICAgc3RyX2xlbjsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgKnBfc3RyOwp9IHRBVlJDX0ZVTExfTkFNRTsKCnR5cGVkZWYgc3RydWN0IHsKICAgIFVJTlQxNiAgICAgICAgICAgICAgc3RyX2xlbjsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgKnBfc3RyOwp9IHRBVlJDX05BTUU7CgoKI2lmbmRlZiBBVlJDX0NBUF9NQVhfTlVNX0NPTVBfSUQKI2RlZmluZSBBVlJDX0NBUF9NQVhfTlVNX0NPTVBfSUQgICAgNAojZW5kaWYKCiNpZm5kZWYgQVZSQ19DQVBfTUFYX05VTV9FVlRfSUQKI2RlZmluZSBBVlJDX0NBUF9NQVhfTlVNX0VWVF9JRCAgICAgMTYKI2VuZGlmCgp0eXBlZGVmIHVuaW9uCnsKICAgIFVJTlQzMiAgY29tcGFueV9pZFtBVlJDX0NBUF9NQVhfTlVNX0NPTVBfSURdOwogICAgVUlOVDggICBldmVudF9pZFtBVlJDX0NBUF9NQVhfTlVNX0VWVF9JRF07Cn0gdEFWUkNfQ0FQU19QQVJBTTsKCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgYXR0cl9pZDsKICAgIFVJTlQ4ICAgYXR0cl92YWw7Cn0gdEFWUkNfQVBQX1NFVFRJTkc7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgIGF0dHJfaWQ7CiAgICBVSU5UMTYgIGNoYXJzZXRfaWQ7CiAgICBVSU5UOCAgIHN0cl9sZW47CiAgICBVSU5UOCAgICpwX3N0cjsKfSB0QVZSQ19BUFBfU0VUVElOR19URVhUOwoKdHlwZWRlZiBVSU5UOCB0QVZSQ19GRUFUVVJFX01BU0tbQVZSQ19GRUFUVVJFX01BU0tfU0laRV07Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UMTYgICAgICAgICAgICAgIHBsYXllcl9pZDsgICAgICAvKiBBIHVuaXF1ZSBpZGVudGlmaWVyIGZvciB0aGlzIG1lZGlhIHBsYXllci4qLwogICAgVUlOVDggICAgICAgICAgICAgICBtYWpvcl90eXBlOyAgICAgLyogVXNlIEFWUkNfTUpfVFlQRV9BVURJTywgQVZSQ19NSl9UWVBFX1ZJREVPLCBBVlJDX01KX1RZUEVfQkNfQVVESU8sIG9yIEFWUkNfTUpfVFlQRV9CQ19WSURFTy4qLwogICAgVUlOVDMyICAgICAgICAgICAgICBzdWJfdHlwZTsgICAgICAgLyogVXNlIEFWUkNfU1VCX1RZUEVfTk9ORSwgQVZSQ19TVUJfVFlQRV9BVURJT19CT09LLCBvciBBVlJDX1NVQl9UWVBFX1BPRENBU1QqLwogICAgVUlOVDggICAgICAgICAgICAgICBwbGF5X3N0YXR1czsgICAgLyogVXNlIEFWUkNfUExBWVNUQVRFX1NUT1BQRUQsIEFWUkNfUExBWVNUQVRFX1BMQVlJTkcsIEFWUkNfUExBWVNUQVRFX1BBVVNFRCwgQVZSQ19QTEFZU1RBVEVfRldEX1NFRUssCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZSQ19QTEFZU1RBVEVfUkVWX1NFRUssIG9yIEFWUkNfUExBWVNUQVRFX0VSUk9SKi8KICAgIHRBVlJDX0ZFQVRVUkVfTUFTSyAgZmVhdHVyZXM7ICAgICAgIC8qIFN1cHBvcnRlZCBmZWF0dXJlIGJpdCBtYXNrKi8KICAgIHRBVlJDX0ZVTExfTkFNRSAgICAgbmFtZTsgICAgICAgICAgIC8qIFRoZSBwbGF5ZXIgbmFtZSwgbmFtZSBsZW5ndGggYW5kIGNoYXJhY3RlciBzZXQgaWQuKi8KfSB0QVZSQ19JVEVNX1BMQVlFUjsKCnR5cGVkZWYgc3RydWN0CnsKICAgIHRBVlJDX1VJRCAgICAgICAgICAgdWlkOyAgICAgICAgICAgIC8qIFRoZSB1aWQgb2YgdGhpcyBmb2xkZXIgKi8KICAgIFVJTlQ4ICAgICAgICAgICAgICAgdHlwZTsgICAgICAgICAgIC8qIFVzZSBBVlJDX0ZPTERFUl9UWVBFX01JWEVELCBBVlJDX0ZPTERFUl9UWVBFX1RJVExFUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUkNfRk9MREVSX1RZUEVfQUxOVU1TLCBBVlJDX0ZPTERFUl9UWVBFX0FSVElTVFMsIEFWUkNfRk9MREVSX1RZUEVfR0VOUkVTLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZSQ19GT0xERVJfVFlQRV9QTEFZTElTVFMsIG9yIEFWUkNfRk9MREVSX1RZUEVfWUVBUlMuKi8KICAgIEJPT0xFQU4gICAgICAgICAgICAgcGxheWFibGU7ICAgICAgIC8qIFRSVUUsIGlmIHRoZSBmb2xkZXIgY2FuIGJlIHBsYXllZC4gKi8KICAgIHRBVlJDX0ZVTExfTkFNRSAgICAgbmFtZTsgICAgICAgICAgIC8qIFRoZSBmb2xkZXIgbmFtZSwgbmFtZSBsZW5ndGggYW5kIGNoYXJhY3RlciBzZXQgaWQuICovCn0gdEFWUkNfSVRFTV9GT0xERVI7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UMzIgICAgICAgICAgICAgIGF0dHJfaWQ7ICAgICAgICAvKiBVc2UgQVZSQ19NRURJQV9BVFRSX0lEX1RJVExFLCBBVlJDX01FRElBX0FUVFJfSURfQVJUSVNULCBBVlJDX01FRElBX0FUVFJfSURfQUxCVU0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVlJDX01FRElBX0FUVFJfSURfVFJBQ0tfTlVNLCBBVlJDX01FRElBX0FUVFJfSURfTlVNX1RSQUNLUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUkNfTUVESUFfQVRUUl9JRF9HRU5SRSwgQVZSQ19NRURJQV9BVFRSX0lEX1BMQVlJTkdfVElNRSAqLwogICAgdEFWUkNfRlVMTF9OQU1FICAgICBuYW1lOyAgICAgICAgICAgLyogVGhlIGF0dHJpYnV0ZSB2YWx1ZSwgdmFsdWUgbGVuZ3RoIGFuZCBjaGFyYWN0ZXIgc2V0IGlkLiAqLwp9IHRBVlJDX0FUVFJfRU5UUlk7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICB0QVZSQ19VSUQgICAgICAgICAgIHVpZDsgICAgICAgICAgICAvKiBUaGUgdWlkIG9mIHRoaXMgbWVkaWEgZWxlbWVudCBpdGVtICovCiAgICBVSU5UOCAgICAgICAgICAgICAgIHR5cGU7ICAgICAgICAgICAvKiBVc2UgQVZSQ19NRURJQV9UWVBFX0FVRElPIG9yIEFWUkNfTUVESUFfVFlQRV9WSURFTy4gKi8KICAgIHRBVlJDX0ZVTExfTkFNRSAgICAgbmFtZTsgICAgICAgICAgIC8qIFRoZSBtZWRpYSBuYW1lLCBuYW1lIGxlbmd0aCBhbmQgY2hhcmFjdGVyIHNldCBpZC4gKi8KICAgIFVJTlQ4ICAgICAgICAgICAgICAgYXR0cl9jb3VudDsgICAgIC8qIFRoZSBudW1iZXIgb2YgYXR0cmlidXRlcyBpbiBwX2F0dHJfbGlzdCAqLwogICAgdEFWUkNfQVRUUl9FTlRSWSogICBwX2F0dHJfbGlzdDsgICAgLyogQXR0cmlidXRlIGVudHJ5IGxpc3QuICovCn0gdEFWUkNfSVRFTV9NRURJQTsKCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgIGl0ZW1fdHlwZTsgIC8qIEFWUkNfSVRFTV9QTEFZRVIsIEFWUkNfSVRFTV9GT0xERVIsIG9yIEFWUkNfSVRFTV9NRURJQSAqLwogICAgdW5pb24KICAgIHsKICAgICAgICB0QVZSQ19JVEVNX1BMQVlFUiAgIHBsYXllcjsgICAgIC8qIFRoZSBwcm9wZXJ0aWVzIG9mIGEgbWVkaWEgcGxheWVyIGl0ZW0uKi8KICAgICAgICB0QVZSQ19JVEVNX0ZPTERFUiAgIGZvbGRlcjsgICAgIC8qIFRoZSBwcm9wZXJ0aWVzIG9mIGEgZm9sZGVyIGl0ZW0uKi8KICAgICAgICB0QVZSQ19JVEVNX01FRElBICAgIG1lZGlhOyAgICAgIC8qIFRoZSBwcm9wZXJ0aWVzIG9mIGEgbWVkaWEgaXRlbS4qLwogICAgfSB1Owp9IHRBVlJDX0lURU07CgovKiBHZXRDYXBhYmlsaXR5ICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIGNhcGFiaWxpdHlfaWQ7Cn0gdEFWUkNfR0VUX0NBUFNfQ01EOwoKLyogTGlzdFBsYXllckFwcFZhbHVlcyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBhdHRyX2lkOwp9IHRBVlJDX0xJU1RfQVBQX1ZBTFVFU19DTUQ7CgovKiBHZXRDdXJBcHBWYWx1ZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBudW1fYXR0cjsKICAgIFVJTlQ4ICAgICAgIGF0dHJzW0FWUkNfTUFYX0FQUF9BVFRSX1NJWkVdOwp9IHRBVlJDX0dFVF9DVVJfQVBQX1ZBTFVFX0NNRDsKCi8qIFNldEFwcFZhbHVlICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIG51bV92YWw7CiAgICB0QVZSQ19BUFBfU0VUVElORyAgICpwX3ZhbHM7Cn0gdEFWUkNfU0VUX0FQUF9WQUxVRV9DTUQ7CgovKiBHZXRBcHBBdHRyVHh0ICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIG51bV9hdHRyOwogICAgVUlOVDggICAgICAgYXR0cnNbQVZSQ19NQVhfQVBQX0FUVFJfU0laRV07Cn0gdEFWUkNfR0VUX0FQUF9BVFRSX1RYVF9DTUQ7CgovKiBHZXRBcHBWYWx1ZVR4dCAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBhdHRyX2lkOwogICAgVUlOVDggICAgICAgbnVtX3ZhbDsKICAgIFVJTlQ4ICAgICAgIHZhbHNbQVZSQ19NQVhfQVBQX0FUVFJfU0laRV07Cn0gdEFWUkNfR0VUX0FQUF9WQUxfVFhUX0NNRDsKCi8qIEluZm9ybUNoYXJzZXQgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgbnVtX2lkOwogICAgVUlOVDE2ICAgICAgY2hhcnNldHNbQVZSQ19NQVhfQ0hBUlNFVF9TSVpFXTsKfSB0QVZSQ19JTkZPUk1fQ0hBUlNFVF9DTUQ7CgovKiBJbmZvcm1CYXR0ZXJ5U3RhdHVzICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIGJhdHRlcnlfc3RhdHVzOwp9IHRBVlJDX0JBVFRFUllfU1RBVFVTX0NNRDsKCi8qIEdldEVsZW1BdHRycyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBudW1fYXR0cjsKICAgIFVJTlQzMiAgICAgIGF0dHJzW0FWUkNfTUFYX0VMRU1fQVRUUl9TSVpFXTsKfSB0QVZSQ19HRVRfRUxFTV9BVFRSU19DTUQ7CgovKiBSZWdOb3RpZnkgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgZXZlbnRfaWQ7CiAgICBVSU5UMzIgICAgICBwYXJhbTsKfSB0QVZSQ19SRUdfTk9USUZfQ01EOwoKLyogU2V0QWRkclBsYXllciAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UMTYgICAgICBwbGF5ZXJfaWQ7Cn0gdEFWUkNfU0VUX0FERFJfUExBWUVSX0NNRDsKCi8qIFNldEJyb3dzZWRQbGF5ZXIgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDE2ICAgICAgcGxheWVyX2lkOwp9IHRBVlJDX1NFVF9CUl9QTEFZRVJfQ01EOwoKLyogU2V0QWJzVm9sdW1lICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIHZvbHVtZTsKfSB0QVZSQ19TRVRfVk9MVU1FX0NNRDsKCi8qIEdldEZvbGRlckl0ZW1zICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIHNjb3BlOwogICAgVUlOVDMyICAgICAgc3RhcnRfaXRlbTsKICAgIFVJTlQzMiAgICAgIGVuZF9pdGVtOwogICAgVUlOVDggICAgICAgYXR0cl9jb3VudDsKICAgIFVJTlQzMiAgICAgICpwX2F0dHJfbGlzdDsKfSB0QVZSQ19HRVRfSVRFTVNfQ01EOwoKLyogQ2hhbmdlUGF0aCAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UMTYgICAgICB1aWRfY291bnRlcjsKICAgIFVJTlQ4ICAgICAgIGRpcmVjdGlvbjsKICAgIHRBVlJDX1VJRCAgIGZvbGRlcl91aWQ7Cn0gdEFWUkNfQ0hHX1BBVEhfQ01EOwoKLyogR2V0SXRlbUF0dHJzICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIHNjb3BlOwogICAgdEFWUkNfVUlEICAgdWlkOwogICAgVUlOVDE2ICAgICAgdWlkX2NvdW50ZXI7CiAgICBVSU5UOCAgICAgICBhdHRyX2NvdW50OwogICAgVUlOVDMyICAgICAgKnBfYXR0cl9saXN0Owp9IHRBVlJDX0dFVF9BVFRSU19DTUQ7CgovKiBTZWFyY2ggKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgICAgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgdEFWUkNfRlVMTF9OQU1FIHN0cmluZzsKfSB0QVZSQ19TRUFSQ0hfQ01EOwoKLyogUGxheUl0ZW0gKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgc2NvcGU7CiAgICB0QVZSQ19VSUQgICB1aWQ7CiAgICBVSU5UMTYgICAgICB1aWRfY291bnRlcjsKfSB0QVZSQ19QTEFZX0lURU1fQ01EOwoKLyogQWRkVG9Ob3dQbGF5aW5nICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIHNjb3BlOwogICAgdEFWUkNfVUlEICAgdWlkOwogICAgVUlOVDE2ICAgICAgdWlkX2NvdW50ZXI7Cn0gdEFWUkNfQUREX1RPX1BMQVlfQ01EOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwp9IHRBVlJDX0NNRDsKCi8qIENvbnRpbnVlIGFuZCBBYm9ydCAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICB0YXJnZXRfcGR1Owp9IHRBVlJDX05FWFRfQ01EOwoKdHlwZWRlZiB1bmlvbgp7CiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgcGR1OwogICAgdEFWUkNfQ01EICAgICAgICAgICAgICAgICAgIGNtZDsKICAgIHRBVlJDX0dFVF9DQVBTX0NNRCAgICAgICAgICBnZXRfY2FwczsgICAgICAgICAgICAgICAvKiBHZXRDYXBhYmlsaXR5ICovCiAgICB0QVZSQ19DTUQgICAgICAgICAgICAgICAgICAgbGlzdF9hcHBfYXR0cjsgICAgICAgICAgLyogTGlzdFBsYXllckFwcEF0dHIgKi8KICAgIHRBVlJDX0xJU1RfQVBQX1ZBTFVFU19DTUQgICBsaXN0X2FwcF92YWx1ZXM7ICAgICAgICAvKiBMaXN0UGxheWVyQXBwVmFsdWVzICovCiAgICB0QVZSQ19HRVRfQ1VSX0FQUF9WQUxVRV9DTUQgZ2V0X2N1cl9hcHBfdmFsOyAgICAgICAgLyogR2V0Q3VyQXBwVmFsdWUgKi8KICAgIHRBVlJDX1NFVF9BUFBfVkFMVUVfQ01EICAgICBzZXRfYXBwX3ZhbDsgICAgICAgICAgICAvKiBTZXRBcHBWYWx1ZSAqLwogICAgdEFWUkNfR0VUX0FQUF9BVFRSX1RYVF9DTUQgIGdldF9hcHBfYXR0cl90eHQ7ICAgICAgIC8qIEdldEFwcEF0dHJUeHQgKi8KICAgIHRBVlJDX0dFVF9BUFBfVkFMX1RYVF9DTUQgICBnZXRfYXBwX3ZhbF90eHQ7ICAgICAgICAvKiBHZXRBcHBWYWx1ZVR4dCAqLwogICAgdEFWUkNfSU5GT1JNX0NIQVJTRVRfQ01EICAgIGluZm9ybV9jaGFyc2V0OyAgICAgICAgIC8qIEluZm9ybUNoYXJzZXQgKi8KICAgIHRBVlJDX0JBVFRFUllfU1RBVFVTX0NNRCAgICBpbmZvcm1fYmF0dGVyeV9zdGF0dXM7ICAvKiBJbmZvcm1CYXR0ZXJ5U3RhdHVzICovCiAgICB0QVZSQ19HRVRfRUxFTV9BVFRSU19DTUQgICAgZ2V0X2VsZW1fYXR0cnM7ICAgICAgICAgLyogR2V0RWxlbUF0dHJzICovCiAgICB0QVZSQ19DTUQgICAgICAgICAgICAgICAgICAgZ2V0X3BsYXlfc3RhdHVzOyAgICAgICAgLyogR2V0UGxheVN0YXR1cyAqLwogICAgdEFWUkNfUkVHX05PVElGX0NNRCAgICAgICAgIHJlZ19ub3RpZjsgICAgICAgICAgICAgIC8qIFJlZ05vdGlmeSAqLwogICAgdEFWUkNfTkVYVF9DTUQgICAgICAgICAgICAgIGNvbnRpbnU7ICAgICAgICAgICAgICAgIC8qIENvbnRpbnVlICovCiAgICB0QVZSQ19ORVhUX0NNRCAgICAgICAgICAgICAgYWJvcnQ7ICAgICAgICAgICAgICAgICAgLyogQWJvcnQgKi8KCiAgICB0QVZSQ19TRVRfQUREUl9QTEFZRVJfQ01EICAgYWRkcl9wbGF5ZXI7ICAgICAgICAgICAgLyogU2V0QWRkclBsYXllciAqLwogICAgdEFWUkNfU0VUX1ZPTFVNRV9DTUQgICAgICAgIHZvbHVtZTsgICAgICAgICAgICAgICAgIC8qIFNldEFic1ZvbHVtZSAqLwogICAgdEFWUkNfU0VUX0JSX1BMQVlFUl9DTUQgICAgIGJyX3BsYXllcjsgICAgICAgICAgICAgIC8qIFNldEJyb3dzZWRQbGF5ZXIgKi8KICAgIHRBVlJDX0dFVF9JVEVNU19DTUQgICAgICAgICBnZXRfaXRlbXM7ICAgICAgICAgICAgICAvKiBHZXRGb2xkZXJJdGVtcyAqLwogICAgdEFWUkNfQ0hHX1BBVEhfQ01EICAgICAgICAgIGNoZ19wYXRoOyAgICAgICAgICAgICAgIC8qIENoYW5nZVBhdGggKi8KICAgIHRBVlJDX0dFVF9BVFRSU19DTUQgICAgICAgICBnZXRfYXR0cnM7ICAgICAgICAgICAgICAvKiBHZXRJdGVtQXR0cnMgKi8KICAgIHRBVlJDX1NFQVJDSF9DTUQgICAgICAgICAgICBzZWFyY2g7ICAgICAgICAgICAgICAgICAvKiBTZWFyY2ggKi8KICAgIHRBVlJDX1BMQVlfSVRFTV9DTUQgICAgICAgICBwbGF5X2l0ZW07ICAgICAgICAgICAgICAvKiBQbGF5SXRlbSAqLwogICAgdEFWUkNfQUREX1RPX1BMQVlfQ01EICAgICAgIGFkZF90b19wbGF5OyAgICAgICAgICAgIC8qIEFkZFRvTm93UGxheWluZyAqLwp9IHRBVlJDX0NPTU1BTkQ7CgovKiBHZXRDYXBhYmlsaXR5ICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgY2FwYWJpbGl0eV9pZDsKICAgIFVJTlQ4ICAgICAgIGNvdW50OwogICAgdEFWUkNfQ0FQU19QQVJBTSBwYXJhbTsKfSB0QVZSQ19HRVRfQ0FQU19SU1A7CgovKiBMaXN0UGxheWVyQXBwQXR0ciAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIG51bV9hdHRyOwogICAgVUlOVDggICAgICAgYXR0cnNbQVZSQ19NQVhfQVBQX0FUVFJfU0laRV07Cn0gdEFWUkNfTElTVF9BUFBfQVRUUl9SU1A7CgovKiBMaXN0UGxheWVyQXBwVmFsdWVzICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgbnVtX3ZhbDsKICAgIFVJTlQ4ICAgICAgIHZhbHNbQVZSQ19NQVhfQVBQX0FUVFJfU0laRV07Cn0gdEFWUkNfTElTVF9BUFBfVkFMVUVTX1JTUDsKCi8qIEdldEN1ckFwcFZhbHVlICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgbnVtX3ZhbDsKICAgIHRBVlJDX0FQUF9TRVRUSU5HICAgKnBfdmFsczsKfSB0QVZSQ19HRVRfQ1VSX0FQUF9WQUxVRV9SU1A7CgovKiBHZXRBcHBBdHRyVHh0ICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgbnVtX2F0dHI7CiAgICB0QVZSQ19BUFBfU0VUVElOR19URVhUICAgKnBfYXR0cnM7Cn0gdEFWUkNfR0VUX0FQUF9BVFRSX1RYVF9SU1A7CgovKiBHZXRFbGVtQXR0cnMgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBudW1fYXR0cjsKICAgIHRBVlJDX0FUVFJfRU5UUlkgICAqcF9hdHRyczsKfSB0QVZSQ19HRVRfRUxFTV9BVFRSU19SU1A7CgovKiBHZXRQbGF5U3RhdHVzICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDMyICAgICAgc29uZ19sZW47CiAgICBVSU5UMzIgICAgICBzb25nX3BvczsKICAgIFVJTlQ4ICAgICAgIHBsYXlfc3RhdHVzOwp9IHRBVlJDX0dFVF9QTEFZX1NUQVRVU19SU1A7CgovKiBub3RpZmljYXRpb24gZXZlbnQgcGFyYW1ldGVyIGZvciBBZGRyZXNzZWRQbGF5ZXIgY2hhbmdlICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQxNiAgICAgICAgICAgICAgcGxheWVyX2lkOwogICAgVUlOVDE2ICAgICAgICAgICAgICB1aWRfY291bnRlcjsKfSB0QVZSQ19BRERSX1BMQVlFUl9QQVJBTTsKCiNpZm5kZWYgQVZSQ19NQVhfQVBQX1NFVFRJTkdTCiNkZWZpbmUgQVZSQ19NQVhfQVBQX1NFVFRJTkdTICAgIDgKI2VuZGlmCgovKiBub3RpZmljYXRpb24gZXZlbnQgcGFyYW1ldGVyIGZvciBQbGF5ZXIgQXBwbGljYXRpb24gc2V0dGluZyBjaGFuZ2UgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgICAgICBudW1fYXR0cjsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgYXR0cl9pZFtBVlJDX01BWF9BUFBfU0VUVElOR1NdOwogICAgVUlOVDggICAgICAgICAgICAgICBhdHRyX3ZhbHVlW0FWUkNfTUFYX0FQUF9TRVRUSU5HU107Cn0gdEFWUkNfUExBWUVSX0FQUF9QQVJBTTsKCnR5cGVkZWYgdW5pb24KewogICAgdEFWUkNfUExBWVNUQVRFICAgICAgICAgcGxheV9zdGF0dXM7CiAgICB0QVZSQ19VSUQgICAgICAgICAgICAgICB0cmFjazsKICAgIFVJTlQzMiAgICAgICAgICAgICAgICAgIHBsYXlfcG9zOwogICAgdEFWUkNfQkFUVEVSWV9TVEFUVVMgICAgYmF0dGVyeV9zdGF0dXM7CiAgICB0QVZSQ19TWVNURU1TVEFURSAgICAgICBzeXN0ZW1fc3RhdHVzOwogICAgdEFWUkNfUExBWUVSX0FQUF9QQVJBTSAgcGxheWVyX3NldHRpbmc7CiAgICB0QVZSQ19BRERSX1BMQVlFUl9QQVJBTSBhZGRyX3BsYXllcjsKICAgIFVJTlQxNiAgICAgICAgICAgICAgICAgIHVpZF9jb3VudGVyOwogICAgVUlOVDggICAgICAgICAgICAgICAgICAgdm9sdW1lOwp9IHRBVlJDX05PVElGX1JTUF9QQVJBTTsKCi8qIFJlZ05vdGlmeSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICAgICAgICAgICAgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgIGV2ZW50X2lkOwogICAgdEFWUkNfTk9USUZfUlNQX1BBUkFNICAgcGFyYW07Cn0gdEFWUkNfUkVHX05PVElGX1JTUDsKCi8qIFNldEFic1ZvbHVtZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICAgICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgICAgICAgICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgICAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgICAgICAgICAgdm9sdW1lOwp9IHRBVlJDX1NFVF9WT0xVTUVfUlNQOwoKLyogU2V0QnJvd3NlZFBsYXllciAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICAgICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgICAgICAgICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgICAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQxNiAgICAgICAgICAgICAgdWlkX2NvdW50ZXI7CiAgICBVSU5UMzIgICAgICAgICAgICAgIG51bV9pdGVtczsKICAgIFVJTlQxNiAgICAgICAgICAgICAgY2hhcnNldF9pZDsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgZm9sZGVyX2RlcHRoOwogICAgdEFWUkNfTkFNRSAgICAgICAgICAqcF9mb2xkZXJzOwp9IHRBVlJDX1NFVF9CUl9QTEFZRVJfUlNQOwoKLyogR2V0Rm9sZGVySXRlbXMgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICAgICAgICAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UMTYgICAgICAgICAgICAgIHVpZF9jb3VudGVyOwogICAgVUlOVDE2ICAgICAgICAgICAgICBpdGVtX2NvdW50OwogICAgdEFWUkNfSVRFTSAgICAgICAgICAqcF9pdGVtX2xpc3Q7Cn0gdEFWUkNfR0VUX0lURU1TX1JTUDsKCi8qIENoYW5nZVBhdGggKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICAgICAgICAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UMzIgICAgICAgICAgICAgIG51bV9pdGVtczsKfSB0QVZSQ19DSEdfUEFUSF9SU1A7CgovKiBHZXRJdGVtQXR0cnMgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICAgICAgICAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICAgICAgICAgIGF0dHJfY291bnQ7CiAgICB0QVZSQ19BVFRSX0VOVFJZICAgICpwX2F0dHJfbGlzdDsKfSB0QVZSQ19HRVRfQVRUUlNfUlNQOwoKLyogU2VhcmNoICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgICAgICAgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICAgICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDE2ICAgICAgICAgICAgICB1aWRfY291bnRlcjsKICAgIFVJTlQzMiAgICAgICAgICAgICAgbnVtX2l0ZW1zOwp9IHRBVlJDX1NFQVJDSF9SU1A7CgoKdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCn0gdEFWUkNfUlNQOwoKdHlwZWRlZiB1bmlvbgp7CiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICAgICAgICAgIHBkdTsKICAgIHRBVlJDX1JTUCAgICAgICAgICAgICAgICAgICAgICAgcnNwOwogICAgdEFWUkNfR0VUX0NBUFNfUlNQICAgICAgICAgICAgICBnZXRfY2FwczsgICAgICAgICAgICAgICAvKiBHZXRDYXBhYmlsaXR5ICovCiAgICB0QVZSQ19MSVNUX0FQUF9BVFRSX1JTUCAgICAgICAgIGxpc3RfYXBwX2F0dHI7ICAgICAgICAgIC8qIExpc3RQbGF5ZXJBcHBBdHRyICovCiAgICB0QVZSQ19MSVNUX0FQUF9WQUxVRVNfUlNQICAgICAgIGxpc3RfYXBwX3ZhbHVlczsgICAgICAgIC8qIExpc3RQbGF5ZXJBcHBWYWx1ZXMgKi8KICAgIHRBVlJDX0dFVF9DVVJfQVBQX1ZBTFVFX1JTUCAgICAgZ2V0X2N1cl9hcHBfdmFsOyAgICAgICAgLyogR2V0Q3VyQXBwVmFsdWUgKi8KICAgIHRBVlJDX1JTUCAgICAgICAgICAgICAgICAgICAgICAgc2V0X2FwcF92YWw7ICAgICAgICAgICAgLyogU2V0QXBwVmFsdWUgKi8KICAgIHRBVlJDX0dFVF9BUFBfQVRUUl9UWFRfUlNQICAgICAgZ2V0X2FwcF9hdHRyX3R4dDsgICAgICAgLyogR2V0QXBwQXR0clR4dCAqLwogICAgdEFWUkNfR0VUX0FQUF9BVFRSX1RYVF9SU1AgICAgICBnZXRfYXBwX3ZhbF90eHQ7ICAgICAgICAvKiBHZXRBcHBWYWx1ZVR4dCAqLwogICAgdEFWUkNfUlNQICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1fY2hhcnNldDsgICAgICAgICAvKiBJbmZvcm1DaGFyc2V0ICovCiAgICB0QVZSQ19SU1AgICAgICAgICAgICAgICAgICAgICAgIGluZm9ybV9iYXR0ZXJ5X3N0YXR1czsgIC8qIEluZm9ybUJhdHRlcnlTdGF0dXMgKi8KICAgIHRBVlJDX0dFVF9FTEVNX0FUVFJTX1JTUCAgICAgICAgZ2V0X2VsZW1fYXR0cnM7ICAgICAgICAgLyogR2V0RWxlbUF0dHJzICovCiAgICB0QVZSQ19HRVRfUExBWV9TVEFUVVNfUlNQICAgICAgIGdldF9wbGF5X3N0YXR1czsgICAgICAgIC8qIEdldFBsYXlTdGF0dXMgKi8KICAgIHRBVlJDX1JFR19OT1RJRl9SU1AgICAgICAgICAgICAgcmVnX25vdGlmOyAgICAgICAgICAgICAgLyogUmVnTm90aWZ5ICovCiAgICB0QVZSQ19SU1AgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnU7ICAgICAgICAgICAgICAgIC8qIENvbnRpbnVlICovCiAgICB0QVZSQ19SU1AgICAgICAgICAgICAgICAgICAgICAgIGFib3J0OyAgICAgICAgICAgICAgICAgIC8qIEFib3J0ICovCgogICAgdEFWUkNfUlNQICAgICAgICAgICAgICAgICAgICAgICBhZGRyX3BsYXllcjsgICAgICAgICAgICAvKiBTZXRBZGRyUGxheWVyICovCiAgICB0QVZSQ19TRVRfVk9MVU1FX1JTUCAgICAgICAgICAgIHZvbHVtZTsgICAgICAgICAgICAgICAgIC8qIFNldEFic1ZvbHVtZSAqLwogICAgdEFWUkNfU0VUX0JSX1BMQVlFUl9SU1AgICAgICAgICBicl9wbGF5ZXI7ICAgICAgICAgICAgICAvKiBTZXRCcm93c2VkUGxheWVyICovCiAgICB0QVZSQ19HRVRfSVRFTVNfUlNQICAgICAgICAgICAgIGdldF9pdGVtczsgICAgICAgICAgICAgIC8qIEdldEZvbGRlckl0ZW1zICovCiAgICB0QVZSQ19DSEdfUEFUSF9SU1AgICAgICAgICAgICAgIGNoZ19wYXRoOyAgICAgICAgICAgICAgIC8qIENoYW5nZVBhdGggKi8KICAgIHRBVlJDX0dFVF9BVFRSU19SU1AgICAgICAgICAgICAgZ2V0X2F0dHJzOyAgICAgICAgICAgICAgLyogR2V0SXRlbUF0dHJzICovCiAgICB0QVZSQ19TRUFSQ0hfUlNQICAgICAgICAgICAgICAgIHNlYXJjaDsgICAgICAgICAgICAgICAgIC8qIFNlYXJjaCAqLwogICAgdEFWUkNfUlNQICAgICAgICAgICAgICAgICAgICAgICBwbGF5X2l0ZW07ICAgICAgICAgICAgICAvKiBQbGF5SXRlbSAqLwogICAgdEFWUkNfUlNQICAgICAgICAgICAgICAgICAgICAgICBhZGRfdG9fcGxheTsgICAgICAgICAgICAvKiBBZGRUb05vd1BsYXlpbmcgKi8KfSB0QVZSQ19SRVNQT05TRTsKCgojZW5kaWYK