LyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgogKgogKiAgQ29weXJpZ2h0IChDKSAyMDA2LTIwMTIgQnJvYWRjb20gQ29ycG9yYXRpb24KICoKICogIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOwogKiAgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgogKiAgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0OgogKgogKiAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAqCiAqICBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCiAqICBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAogKiAgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCiAqICBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCiAqICBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKICoKICogIEFWUkNQIGRlZmluaXRpb24gYW5kIGRhdGEgdHlwZXMKICoKICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2lmbmRlZiBfQVZSQ19ERUZTX0gKI2RlZmluZSBfQVZSQ19ERUZTX0gKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgY29uc3RhbnRzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyogUHJvZmlsZSByZXZpc2lvbiBudW1iZXJzICovCiNkZWZpbmUgQVZSQ19SRVZfMV8wICAgICAgICAweDAxMDAKI2RlZmluZSBBVlJDX1JFVl8xXzMgICAgICAgIDB4MDEwMwojZGVmaW5lIEFWUkNfUkVWXzFfNCAgICAgICAgMHgwMTA0CgojZGVmaW5lIEFWUkNfUEFDS0VUX0xFTiAgICAgICAgICAgICA1MTIgLyogUGVyIHRoZSBzcGVjLCB5b3UgbXVzdCBzdXBwb3J0IDUxMiBieXRlIFJDIHBhY2tldHMgKi8KCiNkZWZpbmUgQVZSQ19NSU5fQ09OVFJPTF9NVFUgICAgICAgIDQ4ICAvKiBQZXIgdGhlIHNwZWMsIG1pbmltdW0gTVRVIGZvciB0aGUgY29udHJvbCBjaGFubmVsICovCiNkZWZpbmUgQVZSQ19NSU5fQlJPV1NFX01UVSAgICAgICAgIDMzNSAvKiBQZXIgdGhlIHNwZWMsIG1pbmltdW0gTVRVIGZvciB0aGUgYnJvd3NpbmcgY2hhbm5lbCAqLwoKI2RlZmluZSBBVlJDX01FVEFfUERVX09GRlNFVCAgICAgICAgNAojZGVmaW5lIEFWUkNfU1VCX1RZUEVfTEVOICAgICAgICAgICA0CiNkZWZpbmUgQVZSQ19VSURfU0laRSAgICAgICAgICAgICAgIDgKI2RlZmluZSBBVlJDX0ZFQVRVUkVfTUFTS19TSVpFICAgICAgMTYKCi8qIGNvbW1hbmQgdHlwZSBjb2RlcyAqLwojZGVmaW5lIEFWUkNfQ01EX0NUUkwgICAgICAgMCAgIC8qIEluc3RydWN0IGEgdGFyZ2V0IHRvIHBlcmZvcm0gYW4gb3BlcmF0aW9uICovCiNkZWZpbmUgQVZSQ19DTURfU1RBVFVTICAgICAxICAgLyogQ2hlY2sgYSBkZXZpY2WScyBjdXJyZW50IHN0YXR1cyAqLwojZGVmaW5lIEFWUkNfQ01EX1NQRUNfSU5RICAgMiAgIC8qIENoZWNrIHdoZXRoZXIgYSB0YXJnZXQgc3VwcG9ydHMgYSBwYXJ0aWN1bGFyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udHJvbCBjb21tYW5kOyBhbGwgb3BlcmFuZHMgYXJlIGluY2x1ZGVkICovCiNkZWZpbmUgQVZSQ19DTURfTk9USUYgICAgICAzICAgLyogVXNlZCBmb3IgcmVjZWl2aW5nIG5vdGlmaWNhdGlvbiBvZiBhIGNoYW5nZSBpbiBhIGRldmljZZJzIHN0YXRlICovCiNkZWZpbmUgQVZSQ19DTURfR0VOX0lOUSAgICA0ICAgLyogQ2hlY2sgd2hldGhlciBhIHRhcmdldCBzdXBwb3J0cyBhIHBhcnRpY3VsYXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250cm9sIGNvbW1hbmQ7IG9wZXJhbmRzIGFyZSBub3QgaW5jbHVkZWQgKi8KCi8qIHJlc3BvbnNlIHR5cGUgY29kZXMgKi8KI2RlZmluZSBBVlJDX1JTUF9OT1RfSU1QTCAgIDggICAvKiBUaGUgdGFyZ2V0IGRvZXMgbm90IGltcGxlbWVudCB0aGUgY29tbWFuZCBzcGVjaWZpZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBieSB0aGUgb3Bjb2RlIGFuZCBvcGVyYW5kLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9yIGRvZXNuknQgaW1wbGVtZW50IHRoZSBzcGVjaWZpZWQgc3VidW5pdCAqLwojZGVmaW5lIEFWUkNfUlNQX0FDQ0VQVCAgICAgOSAgIC8qIFRoZSB0YXJnZXQgZXhlY3V0ZWQgb3IgaXMgZXhlY3V0aW5nIHRoZSBjb21tYW5kICovCiNkZWZpbmUgQVZSQ19SU1BfUkVKICAgICAgICAxMCAgLyogVGhlIHRhcmdldCBpbXBsZW1lbnRzIHRoZSBjb21tYW5kIHNwZWNpZmllZCBieSB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGNvZGUgYnV0IGNhbm5vdCByZXNwb25kIGJlY2F1c2UgdGhlIGN1cnJlbnQgc3RhdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgdGFyZ2V0IGRvZXNuknQgYWxsb3cgaXQgKi8KI2RlZmluZSBBVlJDX1JTUF9JTl9UUkFOUyAgIDExICAvKiBUaGUgdGFyZ2V0IGltcGxlbWVudHMgdGhlIHN0YXR1cyBjb21tYW5kIGJ1dCBpdCBpcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGEgc3RhdGUgb2YgdHJhbnNpdGlvbjsgdGhlIHN0YXR1cyBjb21tYW5kIG1heQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlIHJldHJpZWQgYXQgYSBmdXR1cmUgdGltZSAqLwojZGVmaW5lIEFWUkNfUlNQX0lNUExfU1RCTCAgMTIgIC8qIEZvciBzcGVjaWZpYyBpbnF1aXJ5IG9yIGdlbmVyYWwgaW5xdWl5IGNvbW1hbmRzLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSB0YXJnZXQgaW1wbGVtZW50cyB0aGUgY29tbWFuZDsgZm9yIHN0YXR1cwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmRzLCB0aGUgdGFyZ2V0IHJldHVybnMgc3RhYmxlIGFuZCBpbmNsdWRlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBzdGF0dXMgcmVzdWx0cyAqLwojZGVmaW5lIEFWUkNfUlNQX0NIQU5HRUQgICAgMTMgIC8qIFRoZSByZXNwb25zZSBmcmFtZSBjb250YWlucyBhIG5vdGlmaWNhdGlvbiB0aGF0IHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcmdldCBkZXZpY2WScyBzdGF0ZSBoYXMgY2hhbmdlZCAqLwojZGVmaW5lIEFWUkNfUlNQX0lOVEVSSU0gICAgMTUgIC8qIEZvciBjb250cm9sIGNvbW1hbmRzLCB0aGUgdGFyZ2V0IGhhcyBhY2NlcHRlZCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXF1ZXN0IGJ1dCBjYW5ub3QgcmV0dXJuIGluZm9ybWF0aW9uIHdpdGhpbiAxMDAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtaWxsaXNlY29uZHM7IGZvciBub3RpZnkgY29tbWFuZHMsIHRoZSB0YXJnZXQgYWNjZXB0ZWQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY29tbWFuZCwgYW5kIHdpbGwgbm90aWZ5IHRoZSBjb250cm9sbGVyIG9mIGEgY2hhbmdlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2YgdGFyZ2V0IHN0YXRlIGF0IGEgZnV0dXJlIHRpbWUgKi8KCi8qIHN1YnVuaXQgdHlwZSAqLwojZGVmaW5lIEFWUkNfU1VCX01PTklUT1IgICAgMHgwMCAgICAvKiBNb25pdG9yICovCiNkZWZpbmUgQVZSQ19TVUJfQVVESU8gICAgICAweDAxICAgIC8qIEF1ZGlvICovCiNkZWZpbmUgQVZSQ19TVUJfUFJJTlRFUiAgICAweDAyICAgIC8qIFByaW50ZXIgKi8KI2RlZmluZSBBVlJDX1NVQl9ESVNDICAgICAgIDB4MDMgICAgLyogRGlzYyAqLwojZGVmaW5lIEFWUkNfU1VCX1RBUEUgICAgICAgMHgwNCAgICAvKiBUYXBlIHJlY29yZGVyL3BsYXllciAqLwojZGVmaW5lIEFWUkNfU1VCX1RVTkVSICAgICAgMHgwNSAgICAvKiBUdW5lciAqLwojZGVmaW5lIEFWUkNfU1VCX0NBICAgICAgICAgMHgwNiAgICAvKiBDQSAqLwojZGVmaW5lIEFWUkNfU1VCX0NBTUVSQSAgICAgMHgwNyAgICAvKiBDYW1lcmEgKi8KI2RlZmluZSBBVlJDX1NVQl9QQU5FTCAgICAgIDB4MDkgICAgLyogUGFuZWwgKi8KI2RlZmluZSBBVlJDX1NVQl9CQiAgICAgICAgIDB4MEEgICAgLyogQnVsbGV0aW4gQm9hcmQgKi8KI2RlZmluZSBBVlJDX1NVQl9DQU1fU1RPUiAgIDB4MEIgICAgLyogQ2FtZXJhIFN0b3JhZ2UgKi8KI2RlZmluZSBBVlJDX1NVQl9WRU5ET1IgICAgIDB4MUMgICAgLyogVmVuZG9yIHVuaXF1ZSAqLwojZGVmaW5lIEFWUkNfU1VCX0VYVCAgICAgICAgMHgxRSAgICAvKiBTdWJ1bml0IHR5cGUgZXh0ZW5kZWQgdG8gbmV4dCBieXRlICovCiNkZWZpbmUgQVZSQ19TVUJfVU5JVCAgICAgICAweDFGICAgIC8qIFVuaXQgKi8KCi8qIG9wY29kZXMgLSBkZWZpbmVkIGJ5IDEzOTR0YSAqLwojZGVmaW5lIEFWUkNfT1BfVU5JVF9JTkZPICAgMHgzMCAgICAvKiBSZXBvcnQgdW5pdCBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIEFWUkNfT1BfU1VCX0lORk8gICAgMHgzMSAgICAvKiBSZXBvcnQgc3VidW5pdCBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIEFWUkNfT1BfVkVORE9SICAgICAgMHgwMCAgICAvKiBWZW5kb3ItZGVwZW5kZW50IGNvbW1hbmRzICovCiNkZWZpbmUgQVZSQ19PUF9QQVNTX1RIUlUgICAweDdDICAgIC8qIHBhbmVsIHN1YnVuaXQgb3Bjb2RlICovCi8qIG9wY29kZXMgODAtOUYgYW5kIEUwLUZGIGFyZSBub3QgdXNlZCBieSAxMzk0dGEuU25lYWsgb25lIGZvciB0aGUgYnJvd3NpbmcgY2hhbm5lbCAqLwojZGVmaW5lIEFWUkNfT1BfQlJPV1NFICAgICAgMHhGRiAgICAvKiBCcm93c2luZyAqLwojZGVmaW5lIEFWUkNfT1BfSU5WQUxJRCAgICAgMHhGRSAgICAvKiBpbnZhbGlkIG9uZSAqLwoKLyogQ29tcGFueSBJRCdzCiovCiNkZWZpbmUgQVZSQ19DT19CTFVFVE9PVEhfU0lHICAgMHgwMEZGRkZGRgojZGVmaW5lIEFWUkNfQ09fV0lEQ09NTSAgICAgICAgIDB4MDAwMDAzNjEKI2RlZmluZSBBVlJDX0NPX0JST0FEQ09NICAgICAgICAweDAwMDAxMDE4CiNkZWZpbmUgQVZSQ19DT19NRVRBREFUQSAgICAgICAgMHgwMDAwMTk1OCAgLyogVW5pcXVlIENPTVBBTlkgSUQgZm9yIE1ldGFkYXRhIG1lc3NhZ2VzICovCgovKiBTdGF0ZSBmbGFnIGZvciBQYXNzdGhyb3VnaCBjb21tYW5kcwoqLwojZGVmaW5lIEFWUkNfU1RBVEVfUFJFU1MgICAgMAojZGVmaW5lIEFWUkNfU1RBVEVfUkVMRUFTRSAgMQoKLyogT3BlcmF0aW9uIElEIGxpc3QgZm9yIFBhc3N0aHJvdWdoIGNvbW1hbmRzCiovCiNkZWZpbmUgQVZSQ19JRF9TRUxFQ1QgICAgICAweDAwICAgIC8qIHNlbGVjdCAqLwojZGVmaW5lIEFWUkNfSURfVVAgICAgICAgICAgMHgwMSAgICAvKiB1cCAqLwojZGVmaW5lIEFWUkNfSURfRE9XTiAgICAgICAgMHgwMiAgICAvKiBkb3duICovCiNkZWZpbmUgQVZSQ19JRF9MRUZUICAgICAgICAweDAzICAgIC8qIGxlZnQgKi8KI2RlZmluZSBBVlJDX0lEX1JJR0hUICAgICAgIDB4MDQgICAgLyogcmlnaHQgKi8KI2RlZmluZSBBVlJDX0lEX1JJR0hUX1VQICAgIDB4MDUgICAgLyogcmlnaHQtdXAgKi8KI2RlZmluZSBBVlJDX0lEX1JJR0hUX0RPV04gIDB4MDYgICAgLyogcmlnaHQtZG93biAqLwojZGVmaW5lIEFWUkNfSURfTEVGVF9VUCAgICAgMHgwNyAgICAvKiBsZWZ0LXVwICovCiNkZWZpbmUgQVZSQ19JRF9MRUZUX0RPV04gICAweDA4ICAgIC8qIGxlZnQtZG93biAqLwojZGVmaW5lIEFWUkNfSURfUk9PVF9NRU5VICAgMHgwOSAgICAvKiByb290IG1lbnUgKi8KI2RlZmluZSBBVlJDX0lEX1NFVFVQX01FTlUgIDB4MEEgICAgLyogc2V0dXAgbWVudSAqLwojZGVmaW5lIEFWUkNfSURfQ09OVF9NRU5VICAgMHgwQiAgICAvKiBjb250ZW50cyBtZW51ICovCiNkZWZpbmUgQVZSQ19JRF9GQVZfTUVOVSAgICAweDBDICAgIC8qIGZhdm9yaXRlIG1lbnUgKi8KI2RlZmluZSBBVlJDX0lEX0VYSVQgICAgICAgIDB4MEQgICAgLyogZXhpdCAqLwojZGVmaW5lIEFWUkNfSURfMCAgICAgICAgICAgMHgyMCAgICAvKiAwICovCiNkZWZpbmUgQVZSQ19JRF8xICAgICAgICAgICAweDIxICAgIC8qIDEgKi8KI2RlZmluZSBBVlJDX0lEXzIgICAgICAgICAgIDB4MjIgICAgLyogMiAqLwojZGVmaW5lIEFWUkNfSURfMyAgICAgICAgICAgMHgyMyAgICAvKiAzICovCiNkZWZpbmUgQVZSQ19JRF80ICAgICAgICAgICAweDI0ICAgIC8qIDQgKi8KI2RlZmluZSBBVlJDX0lEXzUgICAgICAgICAgIDB4MjUgICAgLyogNSAqLwojZGVmaW5lIEFWUkNfSURfNiAgICAgICAgICAgMHgyNiAgICAvKiA2ICovCiNkZWZpbmUgQVZSQ19JRF83ICAgICAgICAgICAweDI3ICAgIC8qIDcgKi8KI2RlZmluZSBBVlJDX0lEXzggICAgICAgICAgIDB4MjggICAgLyogOCAqLwojZGVmaW5lIEFWUkNfSURfOSAgICAgICAgICAgMHgyOSAgICAvKiA5ICovCiNkZWZpbmUgQVZSQ19JRF9ET1QgICAgICAgICAweDJBICAgIC8qIGRvdCAqLwojZGVmaW5lIEFWUkNfSURfRU5URVIgICAgICAgMHgyQiAgICAvKiBlbnRlciAqLwojZGVmaW5lIEFWUkNfSURfQ0xFQVIgICAgICAgMHgyQyAgICAvKiBjbGVhciAqLwojZGVmaW5lIEFWUkNfSURfQ0hBTl9VUCAgICAgMHgzMCAgICAvKiBjaGFubmVsIHVwICovCiNkZWZpbmUgQVZSQ19JRF9DSEFOX0RPV04gICAweDMxICAgIC8qIGNoYW5uZWwgZG93biAqLwojZGVmaW5lIEFWUkNfSURfUFJFVl9DSEFOICAgMHgzMiAgICAvKiBwcmV2aW91cyBjaGFubmVsICovCiNkZWZpbmUgQVZSQ19JRF9TT1VORF9TRUwgICAweDMzICAgIC8qIHNvdW5kIHNlbGVjdCAqLwojZGVmaW5lIEFWUkNfSURfSU5QVVRfU0VMICAgMHgzNCAgICAvKiBpbnB1dCBzZWxlY3QgKi8KI2RlZmluZSBBVlJDX0lEX0RJU1BfSU5GTyAgIDB4MzUgICAgLyogZGlzcGxheSBpbmZvcm1hdGlvbiAqLwojZGVmaW5lIEFWUkNfSURfSEVMUCAgICAgICAgMHgzNiAgICAvKiBoZWxwICovCiNkZWZpbmUgQVZSQ19JRF9QQUdFX1VQICAgICAweDM3ICAgIC8qIHBhZ2UgdXAgKi8KI2RlZmluZSBBVlJDX0lEX1BBR0VfRE9XTiAgIDB4MzggICAgLyogcGFnZSBkb3duICovCiNkZWZpbmUgQVZSQ19JRF9QT1dFUiAgICAgICAweDQwICAgIC8qIHBvd2VyICovCiNkZWZpbmUgQVZSQ19JRF9WT0xfVVAgICAgICAweDQxICAgIC8qIHZvbHVtZSB1cCAqLwojZGVmaW5lIEFWUkNfSURfVk9MX0RPV04gICAgMHg0MiAgICAvKiB2b2x1bWUgZG93biAqLwojZGVmaW5lIEFWUkNfSURfTVVURSAgICAgICAgMHg0MyAgICAvKiBtdXRlICovCiNkZWZpbmUgQVZSQ19JRF9QTEFZICAgICAgICAweDQ0ICAgIC8qIHBsYXkgKi8KI2RlZmluZSBBVlJDX0lEX1NUT1AgICAgICAgIDB4NDUgICAgLyogc3RvcCAqLwojZGVmaW5lIEFWUkNfSURfUEFVU0UgICAgICAgMHg0NiAgICAvKiBwYXVzZSAqLwojZGVmaW5lIEFWUkNfSURfUkVDT1JEICAgICAgMHg0NyAgICAvKiByZWNvcmQgKi8KI2RlZmluZSBBVlJDX0lEX1JFV0lORCAgICAgIDB4NDggICAgLyogcmV3aW5kICovCiNkZWZpbmUgQVZSQ19JRF9GQVNUX0ZPUiAgICAweDQ5ICAgIC8qIGZhc3QgZm9yd2FyZCAqLwojZGVmaW5lIEFWUkNfSURfRUpFQ1QgICAgICAgMHg0QSAgICAvKiBlamVjdCAqLwojZGVmaW5lIEFWUkNfSURfRk9SV0FSRCAgICAgMHg0QiAgICAvKiBmb3J3YXJkICovCiNkZWZpbmUgQVZSQ19JRF9CQUNLV0FSRCAgICAweDRDICAgIC8qIGJhY2t3YXJkICovCiNkZWZpbmUgQVZSQ19JRF9BTkdMRSAgICAgICAweDUwICAgIC8qIGFuZ2xlICovCiNkZWZpbmUgQVZSQ19JRF9TVUJQSUNUICAgICAweDUxICAgIC8qIHN1YnBpY3R1cmUgKi8KI2RlZmluZSBBVlJDX0lEX0YxICAgICAgICAgIDB4NzEgICAgLyogRjEgKi8KI2RlZmluZSBBVlJDX0lEX0YyICAgICAgICAgIDB4NzIgICAgLyogRjIgKi8KI2RlZmluZSBBVlJDX0lEX0YzICAgICAgICAgIDB4NzMgICAgLyogRjMgKi8KI2RlZmluZSBBVlJDX0lEX0Y0ICAgICAgICAgIDB4NzQgICAgLyogRjQgKi8KI2RlZmluZSBBVlJDX0lEX0Y1ICAgICAgICAgIDB4NzUgICAgLyogRjUgKi8KI2RlZmluZSBBVlJDX0lEX1ZFTkRPUiAgICAgIDB4N0UgICAgLyogdmVuZG9yIHVuaXF1ZSAqLwojZGVmaW5lIEFWUkNfS0VZUFJFU1NFRF9SRUxFQVNFIDB4ODAKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgTWV0YWRhdGEgdHJhbnNmZXIgZGVmaW5pdGlvbnMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgovKiBEZWZpbmUgdGhlIE1ldGFkYXRhIFBhY2tldCB0eXBlcwoqLwojZGVmaW5lIEFWUkNfUEtUX1NJTkdMRSAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEtUX1NUQVJUICAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEtUX0NPTlRJTlVFICAgICAgICAgMgojZGVmaW5lIEFWUkNfUEtUX0VORCAgICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEtUX1RZUEVfTUFTSyAgICAgICAgMwoKLyogRGVmaW5lIHRoZSBQRFVzIGNhcnJpZWQgaW4gdGhlIHZlbmRvciBkZXBlbmRhbnQgZGF0YQoqLwojZGVmaW5lIEFWUkNfUERVX0dFVF9DQVBBQklMSVRJRVMgICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRFVfTElTVF9QTEFZRVJfQVBQX0FUVFIgICAgICAgICAgIDB4MTEKI2RlZmluZSBBVlJDX1BEVV9MSVNUX1BMQVlFUl9BUFBfVkFMVUVTICAgICAgICAgMHgxMgojZGVmaW5lIEFWUkNfUERVX0dFVF9DVVJfUExBWUVSX0FQUF9WQUxVRSAgICAgICAweDEzCiNkZWZpbmUgQVZSQ19QRFVfU0VUX1BMQVlFUl9BUFBfVkFMVUUgICAgICAgICAgIDB4MTQKI2RlZmluZSBBVlJDX1BEVV9HRVRfUExBWUVSX0FQUF9BVFRSX1RFWFQgICAgICAgMHgxNQojZGVmaW5lIEFWUkNfUERVX0dFVF9QTEFZRVJfQVBQX1ZBTFVFX1RFWFQgICAgICAweDE2CiNkZWZpbmUgQVZSQ19QRFVfSU5GT1JNX0RJU1BMQVlfQ0hBUlNFVCAgICAgICAgIDB4MTcKI2RlZmluZSBBVlJDX1BEVV9JTkZPUk1fQkFUVEVSWV9TVEFUX09GX0NUICAgICAgMHgxOAojZGVmaW5lIEFWUkNfUERVX0dFVF9FTEVNRU5UX0FUVFIgICAgICAgICAgICAgICAweDIwCiNkZWZpbmUgQVZSQ19QRFVfR0VUX1BMQVlfU1RBVFVTICAgICAgICAgICAgICAgIDB4MzAKI2RlZmluZSBBVlJDX1BEVV9SRUdJU1RFUl9OT1RJRklDQVRJT04gICAgICAgICAgMHgzMQojZGVmaW5lIEFWUkNfUERVX1JFUVVFU1RfQ09OVElOVUFUSU9OX1JTUCAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRFVfQUJPUlRfQ09OVElOVUFUSU9OX1JTUCAgICAgICAgIDB4NDEKLyogYWRkZWQgaW4gMS40ICovCiNkZWZpbmUgQVZSQ19QRFVfU0VUX0FCU09MVVRFX1ZPTFVNRSAgICAgICAgICAgIDB4NTAKI2RlZmluZSBBVlJDX1BEVV9TRVRfQUREUkVTU0VEX1BMQVlFUiAgICAgICAgICAgMHg2MAojZGVmaW5lIEFWUkNfUERVX1NFVF9CUk9XU0VEX1BMQVlFUiAgICAgICAgICAgICAweDcwCiNkZWZpbmUgQVZSQ19QRFVfR0VUX0ZPTERFUl9JVEVNUyAgICAgICAgICAgICAgIDB4NzEKI2RlZmluZSBBVlJDX1BEVV9DSEFOR0VfUEFUSCAgICAgICAgICAgICAgICAgICAgMHg3MgojZGVmaW5lIEFWUkNfUERVX0dFVF9JVEVNX0FUVFJJQlVURVMgICAgICAgICAgICAweDczCiNkZWZpbmUgQVZSQ19QRFVfUExBWV9JVEVNICAgICAgICAgICAgICAgICAgICAgIDB4NzQKI2RlZmluZSBBVlJDX1BEVV9TRUFSQ0ggICAgICAgICAgICAgICAgICAgICAgICAgMHg4MAojZGVmaW5lIEFWUkNfUERVX0FERF9UT19OT1dfUExBWUlORyAgICAgICAgICAgICAweDkwCiNkZWZpbmUgQVZSQ19QRFVfR0VORVJBTF9SRUpFQ1QgICAgICAgICAgICAgICAgIDB4QTAKCi8qIERlZmluZSB0aGUgdmVuZG9yIHVuaXF1ZSBpZCBjYXJyaWVkIGluIHRoZSBwYXNzIHRocm91Z2ggZGF0YQoqLwojZGVmaW5lIEFWUkNfUERVX05FWFRfR1JPVVAgICAgICAgICAgICAgICAgICAgICAweDAwCiNkZWZpbmUgQVZSQ19QRFVfUFJFVl9HUk9VUCAgICAgICAgICAgICAgICAgICAgIDB4MDEKLyogdGhlIG9ubHkgcGFzcyB0aHJvdWdoIHZlbmRvciB1bmlxdWUgY29tbWFuZHMgZGVmaW5lZCBieSBBVlJDIGlzIHRoZSBncm91cCBuYXZpZ2F0aW9uIGNvbW1hbmRzCiAqIFRoZSBsZW4gZm9yIHZlbmRvciB1bmlxdWUgZGF0YSBpcyA1ICovCiNkZWZpbmUgQVZSQ19QQVNTX1RIUlVfR1JPVVBfTEVOICAgICAgICAgICAgICAgIDUKCiNkZWZpbmUgQVZSQ19QRFVfSU5WQUxJRCAgICAgICAgICAgICAgICAgICAgICAgIDB4ZmYKLyogNi4xNS4zIGVycm9yIHN0YXR1cyBjb2RlIGZvciBnZW5lcmFsIHJlamVjdCAqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9DTUQgICAgICAgIDB4MDAgICAgLyogSW52YWxpZCBjb21tYW5kLCBzZW50IGlmIFRHIHJlY2VpdmVkIGEgUERVIHRoYXQgaXQgZGlkIG5vdCB1bmRlcnN0YW5kLiAqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9QQVJBTSAgICAgIDB4MDEgICAgLyogSW52YWxpZCBwYXJhbWV0ZXIsIHNlbnQgaWYgdGhlIFRHIHJlY2VpdmVkIGEgUERVIHdpdGggYSBwYXJhbWV0ZXIgSUQgdGhhdCBpdCBkaWQgbm90IHVuZGVyc3RhbmQuIFNlbnQgaWYgdGhlcmUgaXMgb25seSBvbmUgcGFyYW1ldGVyIElEIGluIHRoZSBQRFUuICovCiNkZWZpbmUgQVZSQ19TVFNfTk9UX0ZPVU5EICAgICAgMHgwMiAgICAvKiBTcGVjaWZpZWQgcGFyYW1ldGVyIG5vdCBmb3VuZC4sIHNlbnQgaWYgdGhlIHBhcmFtZXRlciBJRCBpcyB1bmRlcnN0b29kLCBidXQgY29udGVudCBpcyB3cm9uZyBvciBjb3JydXB0ZWQuICovCiNkZWZpbmUgQVZSQ19TVFNfSU5URVJOQUxfRVJSICAgMHgwMyAgICAvKiBJbnRlcm5hbCBFcnJvciwgc2VudCBpZiB0aGVyZSBhcmUgZXJyb3IgY29uZGl0aW9ucyBub3QgY292ZXJlZCBieSBhIG1vcmUgc3BlY2lmaWMgZXJyb3IgY29kZS4gKi8KI2RlZmluZSBBVlJDX1NUU19OT19FUlJPUiAgICAgICAweDA0ICAgIC8qIE9wZXJhdGlvbiBjb21wbGV0ZWQgd2l0aG91dCBlcnJvci4gIFRoaXMgaXMgdGhlIHN0YXR1cyB0aGF0IHNob3VsZCBiZSByZXR1cm5lZCBpZiB0aGUgb3BlcmF0aW9uIHdhcyBzdWNjZXNzZnVsLiAqLwojZGVmaW5lIEFWUkNfU1RTX1VJRF9DSEFOR0VEICAgIDB4MDUgICAgLyogVUlEIENoYW5nZWQgLSBUaGUgVUlEcyBvbiB0aGUgZGV2aWNlIGhhdmUgY2hhbmdlZCAqLwovKiAjZGVmaW5lIEFWUkNfU1RTX0dFTl9FUlJPUiAgICAgIDB4MDYgICAgVW5rbm93biBFcnJvciAtIHRoaXMgaXMgY2hhbmdlZCB0byAicmVzZXJ2ZWQiICovCiNkZWZpbmUgQVZSQ19TVFNfQkFEX0RJUiAgICAgICAgMHgwNyAgICAvKiBJbnZhbGlkIERpcmVjdGlvbiAtIFRoZSBEaXJlY3Rpb24gcGFyYW1ldGVyIGlzIGludmFsaWQgLSBDaGFuZ2UgUGF0aCovCiNkZWZpbmUgQVZSQ19TVFNfTk9UX0RJUiAgICAgICAgMHgwOCAgICAvKiBOb3QgYSBEaXJlY3RvcnkgLSBUaGUgVUlEIHByb3ZpZGVkIGRvZXMgbm90IHJlZmVyIHRvIGEgZm9sZGVyIGl0ZW0gIENoYW5nZSBQYXRoKi8KI2RlZmluZSBBVlJDX1NUU19OT1RfRVhJU1QgICAgICAweDA5ICAgIC8qIERvZXMgTm90IEV4aXN0IC0gVGhlIFVJRCBwcm92aWRlZCBkb2VzIG5vdCByZWZlciB0byBhbnkgaXRlbSAgICBDaGFuZ2UgUGF0aCwgUGxheUl0ZW0sIEFkZFRvTm93UGxheWluZywgR2V0SXRlbUF0dHJpYnV0ZXMqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9TQ09QRSAgICAgIDB4MGEgICAgLyogSW52YWxpZCBTY29wZSAtIFRoZSBzY29wZSBwYXJhbWV0ZXIgaXMgaW52YWxpZCAgR2V0Rm9sZGVySXRlbXMsIFBsYXlJdGVtLCBBZGRUb05vd1BsYXllciwgR2V0SXRlbUF0dHJpYnV0ZXMsICovCiNkZWZpbmUgQVZSQ19TVFNfQkFEX1JBTkdFICAgICAgMHgwYiAgICAvKiBSYW5nZSBPdXQgb2YgQm91bmRzIC0gVGhlIHN0YXJ0IG9mIHJhbmdlIHByb3ZpZGVkIGlzIG5vdCB2YWxpZCAgR2V0Rm9sZGVySXRlbXMqLwojZGVmaW5lIEFWUkNfU1RTX1VJRF9JU19ESVIgICAgIDB4MGMgICAgLyogVUlEIGlzIGEgRGlyZWN0b3J5IC0gVGhlIFVJRCBwcm92aWRlZCByZWZlcnMgdG8gYSBkaXJlY3RvcnksIHdoaWNoIGNhbm5vdCBiZSBoYW5kbGVkIGJ5IHRoaXMgbWVkaWEgcGxheWVyICAgUGxheUl0ZW0sIEFkZFRvTm93UGxheWluZyAqLwojZGVmaW5lIEFWUkNfU1RTX0lOX1VTRSAgICAgICAgIDB4MGQgICAgLyogTWVkaWEgaW4gVXNlIC0gVGhlIG1lZGlhIGlzIG5vdCBhYmxlIHRvIGJlIHVzZWQgZm9yIHRoaXMgb3BlcmF0aW9uIGF0IHRoaXMgdGltZSBQbGF5SXRlbSwgQWRkVG9Ob3dQbGF5aW5nICovCiNkZWZpbmUgQVZSQ19TVFNfTk9XX0xJU1RfRlVMTCAgMHgwZSAgICAvKiBOb3cgUGxheWluZyBMaXN0IEZ1bGwgLSBObyBtb3JlIGl0ZW1zIGNhbiBiZSBhZGRlZCB0byB0aGUgTm93IFBsYXlpbmcgTGlzdCAgQWRkVG9Ob3dQbGF5aW5nKi8KI2RlZmluZSBBVlJDX1NUU19TRUFSQ0hfTk9UX1NVUCAweDBmICAgIC8qIFNlYXJjaCBOb3QgU3VwcG9ydGVkIC0gVGhlIEJyb3dzZWQgTWVkaWEgUGxheWVyIGRvZXMgbm90IHN1cHBvcnQgc2VhcmNoIFNlYXJjaCAqLwojZGVmaW5lIEFWUkNfU1RTX1NFQVJDSF9CVVNZICAgIDB4MTAgICAgLyogU2VhcmNoIGluIFByb2dyZXNzIC0gQSBzZWFyY2ggb3BlcmF0aW9uIGlzIGFscmVhZHkgaW4gcHJvZ3Jlc3MgIFNlYXJjaCovCiNkZWZpbmUgQVZSQ19TVFNfQkFEX1BMQVlFUl9JRCAgMHgxMSAgICAvKiBJbnZhbGlkIFBsYXllciBJZCAtIFRoZSBzcGVjaWZpZWQgUGxheWVyIElkIGRvZXMgbm90IHJlZmVyIHRvIGEgdmFsaWQgcGxheWVyICAgIFNldEFkZHJlc3NlZFBsYXllciwgU2V0QnJvd3NlZFBsYXllciovCiNkZWZpbmUgQVZSQ19TVFNfUExBWUVSX05fQlIgICAgMHgxMiAgICAvKiBQbGF5ZXIgTm90IEJyb3dzYWJsZSAtIFRoZSBQbGF5ZXIgSWQgc3VwcGxpZWQgcmVmZXJzIHRvIGEgTWVkaWEgUGxheWVyIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgYnJvd3NpbmcuIFNldEJyb3dzZWRQbGF5ZXIgKi8KI2RlZmluZSBBVlJDX1NUU19QTEFZRVJfTl9BRERSICAweDEzICAgIC8qIFBsYXllciBOb3QgQWRkcmVzc2VkLiAgVGhlIFBsYXllciBJZCBzdXBwbGllZCByZWZlcnMgdG8gYSBwbGF5ZXIgd2hpY2ggaXMgbm90IGN1cnJlbnRseSBhZGRyZXNzZWQsIGFuZCB0aGUgY29tbWFuZCBpcyBub3QgYWJsZSB0byBiZSBwZXJmb3JtZWQgaWYgdGhlIHBsYXllciBpcyBub3Qgc2V0IGFzIGFkZHJlc3NlZC4gICBTZWFyY2gsIFNldEJyb3dzZWRQbGF5ZXIqLwojZGVmaW5lIEFWUkNfU1RTX0JBRF9TRUFSQ0hfUkVTIDB4MTQgICAgLyogTm8gdmFsaWQgU2VhcmNoIFJlc3VsdHMgLSBUaGUgU2VhcmNoIHJlc3VsdCBsaXN0IGRvZXMgbm90IGNvbnRhaW4gdmFsaWQgZW50cmllcywgZS5nLiBhZnRlciBiZWluZyBpbnZhbGlkYXRlZCBkdWUgdG8gY2hhbmdlIG9mIGJyb3dzZWQgcGxheWVyICAgR2V0Rm9sZGVySXRlbXMgKi8KI2RlZmluZSBBVlJDX1NUU19OT19BVkFMX1BMQVlFUiAweDE1ICAgIC8qIE5vIGF2YWlsYWJsZSBwbGF5ZXJzIEFMTCAqLwojZGVmaW5lIEFWUkNfU1RTX0FERFJfUExBWUVSX0NIRyAweDE2ICAgLyogQWRkcmVzc2VkIFBsYXllciBDaGFuZ2VkIC0gUmVnaXN0ZXIgTm90aWZpY2F0aW9uICovCnR5cGVkZWYgVUlOVDggdEFWUkNfU1RTOwoKCi8qIERlZmluZSB0aGUgQ2FwYWJpbGl0eSBJRHMKKi8KI2RlZmluZSBBVlJDX0NBUF9DT01QQU5ZX0lEICAgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfQ0FQX0VWRU5UU19TVVBQT1JURUQgICAgICAgICAgICAgICAweDAzCiNkZWZpbmUgQVZSQ19DT01QQU5ZX0lEX0xFTiAgICAgICAgICAgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX0NBUEFCSUxJVFlfT0ZGU0VUICAgICAgICAgICAgICAgICAgMgoKLyogRGVmaW5lIHRoZSBQbGF5ZXIgQXBwbGljYXRpb24gU2V0dGluZ3MgSURzCiovCiNkZWZpbmUgQVZSQ19QTEFZRVJfU0VUVElOR19FUVVBTElaRVIgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX1BMQVlFUl9TRVRUSU5HX1JFUEVBVCAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUExBWUVSX1NFVFRJTkdfU0hVRkZMRSAgICAgICAgICAgICAweDAzCiNkZWZpbmUgQVZSQ19QTEFZRVJfU0VUVElOR19TQ0FOICAgICAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BMQVlFUl9TRVRUSU5HX0xPV19NRU5VX0VYVCAgICAgICAgMHg4MAojZGVmaW5lIEFWUkNfUExBWUVSX1NFVFRJTkdfSElHSF9NRU5VX0VYVCAgICAgICAweGZmCgovKiBEZWZpbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiB0aGUgUGxheWVyIEFwcGxpY2F0aW9uIFNldHRpbmdzCiovCiNkZWZpbmUgQVZSQ19QTEFZRVJfVkFMX09GRiAgICAgICAgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX1BMQVlFUl9WQUxfT04gICAgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUExBWUVSX1ZBTF9TSU5HTEVfUkVQRUFUICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QTEFZRVJfVkFMX0FMTF9SRVBFQVQgICAgICAgICAgICAgIDB4MDMKI2RlZmluZSBBVlJDX1BMQVlFUl9WQUxfR1JPVVBfUkVQRUFUICAgICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUExBWUVSX1ZBTF9BTExfU0hVRkZMRSAgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QTEFZRVJfVkFMX0dST1VQX1NIVUZGTEUgICAgICAgICAgIDB4MDMKI2RlZmluZSBBVlJDX1BMQVlFUl9WQUxfQUxMX1NDQU4gICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUExBWUVSX1ZBTF9HUk9VUF9TQ0FOICAgICAgICAgICAgICAweDAzCgovKiBEZWZpbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBCYXR0ZXJ5IFN0YXR1cyBQRFUKKi8KI2RlZmluZSBBVlJDX0JBVFRFUllfU1RBVFVTX05PUk1BTCAgICAgICAgICAgICAgMHgwMAojZGVmaW5lIEFWUkNfQkFUVEVSWV9TVEFUVVNfV0FSTklORyAgICAgICAgICAgICAweDAxCiNkZWZpbmUgQVZSQ19CQVRURVJZX1NUQVRVU19DUklUSUNBTCAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX0JBVFRFUllfU1RBVFVTX0VYVEVSTkFMICAgICAgICAgICAgMHgwMwojZGVmaW5lIEFWUkNfQkFUVEVSWV9TVEFUVVNfRlVMTF9DSEFSR0UgICAgICAgICAweDA0CnR5cGVkZWYgVUlOVDggdEFWUkNfQkFUVEVSWV9TVEFUVVM7CgovKiBEZWZpbmUgY2hhcmFjdGVyIHNldCAqLwojZGVmaW5lIEFWUkNfQ0hBUl9TRVRfU0laRSAgICAgICAgICAgICAgICAgICAgICAyCgovKiBEZWZpbmUgdGhlIE1lZGlhIEF0dHJpYnV0ZSBJRHMKKi8KI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfVElUTEUgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDEKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfQVJUSVNUICAgICAgICAgICAgICAgIDB4MDAwMDAwMDIKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfQUxCVU0gICAgICAgICAgICAgICAgIDB4MDAwMDAwMDMKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfVFJBQ0tfTlVNICAgICAgICAgICAgIDB4MDAwMDAwMDQKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfTlVNX1RSQUNLUyAgICAgICAgICAgIDB4MDAwMDAwMDUKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfR0VOUkUgICAgICAgICAgICAgICAgIDB4MDAwMDAwMDYKI2RlZmluZSBBVlJDX01FRElBX0FUVFJfSURfUExBWUlOR19USU1FICAgICAgICAgIDB4MDAwMDAwMDcgICAgICAgIC8qIGluIG1pbGlzZWNvbmRzICovCiNkZWZpbmUgQVZSQ19NQVhfTlVNX01FRElBX0FUVFJfSUQgICAgICAgICAgICAgICA3CgovKiBEZWZpbmUgdGhlIHBvc3NpYmxlIHZhbHVlcyBvZiBwbGF5IHN0YXRlCiovCiNkZWZpbmUgQVZSQ19QTEFZU1RBVEVfUkVTUF9NU0dfU0laRSAgICAgICAgICAgIDkKI2RlZmluZSBBVlJDX1BMQVlTVEFURV9TVE9QUEVEICAgICAgICAgICAgICAgICAgMHgwMCAgICAvKiBTdG9wcGVkICovCiNkZWZpbmUgQVZSQ19QTEFZU1RBVEVfUExBWUlORyAgICAgICAgICAgICAgICAgIDB4MDEgICAgLyogUGxheWluZyAqLwojZGVmaW5lIEFWUkNfUExBWVNUQVRFX1BBVVNFRCAgICAgICAgICAgICAgICAgICAweDAyICAgIC8qIFBhdXNlZCAgKi8KI2RlZmluZSBBVlJDX1BMQVlTVEFURV9GV0RfU0VFSyAgICAgICAgICAgICAgICAgMHgwMyAgICAvKiBGd2QgU2VlayovCiNkZWZpbmUgQVZSQ19QTEFZU1RBVEVfUkVWX1NFRUsgICAgICAgICAgICAgICAgIDB4MDQgICAgLyogUmV2IFNlZWsqLwojZGVmaW5lIEFWUkNfUExBWVNUQVRFX0VSUk9SICAgICAgICAgICAgICAgICAgICAweEZGICAgIC8qIEVycm9yICAgKi8KdHlwZWRlZiBVSU5UOCB0QVZSQ19QTEFZU1RBVEU7CgovKiBEZWZpbmUgdGhlIGV2ZW50cyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGZvciBub3RpZmljYXRpb25zCiovCiNkZWZpbmUgQVZSQ19FVlRfUExBWV9TVEFUVVNfQ0hBTkdFICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX0VWVF9UUkFDS19DSEFOR0UgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfRVZUX1RSQUNLX1JFQUNIRURfRU5EICAgICAgICAgICAgICAweDAzCiNkZWZpbmUgQVZSQ19FVlRfVFJBQ0tfUkVBQ0hFRF9TVEFSVCAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX0VWVF9QTEFZX1BPU19DSEFOR0VEICAgICAgICAgICAgICAgMHgwNQojZGVmaW5lIEFWUkNfRVZUX0JBVFRFUllfU1RBVFVTX0NIQU5HRSAgICAgICAgICAweDA2CiNkZWZpbmUgQVZSQ19FVlRfU1lTVEVNX1NUQVRVU19DSEFOR0UgICAgICAgICAgIDB4MDcKI2RlZmluZSBBVlJDX0VWVF9BUFBfU0VUVElOR19DSEFOR0UgICAgICAgICAgICAgMHgwOAovKiBhZGRlZCBpbiBBVlJDUCAxLjQgKi8KI2RlZmluZSBBVlJDX0VWVF9OT1dfUExBWUlOR19DSEFOR0UgICAgICAgICAgICAgMHgwOQojZGVmaW5lIEFWUkNfRVZUX0FWQUxfUExBWUVSU19DSEFOR0UgICAgICAgICAgICAweDBhCiNkZWZpbmUgQVZSQ19FVlRfQUREUl9QTEFZRVJfQ0hBTkdFICAgICAgICAgICAgIDB4MGIKI2RlZmluZSBBVlJDX0VWVF9VSURTX0NIQU5HRSAgICAgICAgICAgICAgICAgICAgMHgwYwojZGVmaW5lIEFWUkNfRVZUX1ZPTFVNRV9DSEFOR0UgICAgICAgICAgICAgICAgICAweDBkCgovKiB0aGUgbnVtYmVyIG9mIGV2ZW50cyB0aGF0IGNhbiBiZSByZWdpc3RlcmVkIGZvciBub3RpZmljYXRpb25zICovCiNkZWZpbmUgQVZSQ19OVU1fTk9USUZfRVZFTlRTICAgICAgICAgICAgICAgICAgIDB4MGQKCiNkZWZpbmUgQVZSQ19FVlRfTVNHX0xFTl8xICAgICAgICAgICAgICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX0VWVF9NU0dfTEVOXzIgICAgICAgICAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfRVZUX01TR19MRU5fNSAgICAgICAgICAgICAgICAgICAgICAweDA1CiNkZWZpbmUgQVZSQ19FVlRfTVNHX0xFTl85ICAgICAgICAgICAgICAgICAgICAgIDB4MDkKCiNkZWZpbmUgQVZSQ19NQVhfVk9MVU1FICAgICAgICAgICAgICAgICAgICAgICAgIDB4N0YKCi8qIERlZmluZSB0aGUgcG9zc2libGUgdmFsdWVzIG9mIHN5c3RlbSBzdGF0dXMKKi8KI2RlZmluZSBBVlJDX1NZU1RFTVNUQVRFX1BXUl9PTiAgICAgICAgICAgICAgICAgMHgwMAojZGVmaW5lIEFWUkNfU1lTVEVNU1RBVEVfUFdSX09GRiAgICAgICAgICAgICAgICAweDAxCiNkZWZpbmUgQVZSQ19TWVNURU1TVEFURV9QV1JfVU5QTFVHR0VEICAgICAgICAgIDB4MDIKdHlwZWRlZiBVSU5UOCB0QVZSQ19TWVNURU1TVEFURTsKCi8qIHRoZSBmcmVxdWVudGx5IHVzZWQgY2hhcmFjdGVyIHNldCBpZHMgKi8KI2RlZmluZSBBVlJDX0NIQVJTRVRfSURfQVNDSUkgICAgICAgICAgICAgICAgICAoKFVJTlQxNikgMHgwMDAzKSAvKiBBU0NJSSAqLwojZGVmaW5lIEFWUkNfQ0hBUlNFVF9JRF9VVEY4ICAgICAgICAgICAgICAgICAgICgoVUlOVDE2KSAweDAwNmEpIC8qIFVURi04ICovCiNkZWZpbmUgQVZSQ19DSEFSU0VUX0lEX1VURjE2ICAgICAgICAgICAgICAgICAgKChVSU5UMTYpIDB4MDNmNykgLyogMTAxNSAqLwojZGVmaW5lIEFWUkNfQ0hBUlNFVF9JRF9VVEYzMiAgICAgICAgICAgICAgICAgICgoVUlOVDE2KSAweDAzZjkpIC8qIDEwMTcgKi8KCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgQWR2YW5jZWQgQ29udHJvbAoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KI2RlZmluZSBBVlJDX0lURU1fUExBWUVSICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfSVRFTV9GT0xERVIgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19JVEVNX01FRElBICAgICAgICAgICAgIDB4MDMKCiNkZWZpbmUgQVZSQ19TQ09QRV9QTEFZRVJfTElTVCAgICAgIDB4MDAgIC8qIE1lZGlhIFBsYXllciBJdGVtIC0gQ29udGFpbnMgYWxsIGF2YWlsYWJsZSBtZWRpYSBwbGF5ZXJzICovCiNkZWZpbmUgQVZSQ19TQ09QRV9GSUxFX1NZU1RFTSAgICAgIDB4MDEgIC8qIEZvbGRlciBJdGVtLCBNZWRpYSBFbGVtZW50IEl0ZW0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBUaGUgdmlydHVhbCBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIG1lZGlhIGNvbnRlbnQgb2YgdGhlIGJyb3dzZWQgcGxheWVyICovCiNkZWZpbmUgQVZSQ19TQ09QRV9TRUFSQ0ggICAgICAgICAgIDB4MDIgIC8qIE1lZGlhIEVsZW1lbnQgSXRlbSAgVGhlIHJlc3VsdHMgb2YgYSBzZWFyY2ggb3BlcmF0aW9uIG9uIHRoZSBicm93c2VkIHBsYXllciAqLwojZGVmaW5lIEFWUkNfU0NPUEVfTk9XX1BMQVlJTkcgICAgICAweDAzICAvKiBNZWRpYSBFbGVtZW50IEl0ZW0gIFRoZSBOb3cgUGxheWluZyBsaXN0IChvciBxdWV1ZSkgb2YgdGhlIGFkZHJlc3NlZCBwbGF5ZXIgKi8KCiNkZWZpbmUgQVZSQ19GT0xERVJfSVRFTV9DT1VOVF9OT05FIDB4RkYKCi8qIGZvbGRlciB0eXBlICovCiNkZWZpbmUgQVZSQ19GT0xERVJfVFlQRV9NSVhFRCAgICAgIDB4MDAKI2RlZmluZSBBVlJDX0ZPTERFUl9UWVBFX1RJVExFUyAgICAgMHgwMQojZGVmaW5lIEFWUkNfRk9MREVSX1RZUEVfQUxOVU1TICAgICAweDAyCiNkZWZpbmUgQVZSQ19GT0xERVJfVFlQRV9BUlRJU1RTICAgIDB4MDMKI2RlZmluZSBBVlJDX0ZPTERFUl9UWVBFX0dFTlJFUyAgICAgMHgwNAojZGVmaW5lIEFWUkNfRk9MREVSX1RZUEVfUExBWUxJU1RTICAweDA1CiNkZWZpbmUgQVZSQ19GT0xERVJfVFlQRV9ZRUFSUyAgICAgIDB4MDYKCi8qIG1ham9yIHBsYXllciB0eXBlICovCiNkZWZpbmUgQVZSQ19NSl9UWVBFX0FVRElPICAgICAgICAgIDB4MDEgIC8qIEF1ZGlvICovCiNkZWZpbmUgQVZSQ19NSl9UWVBFX1ZJREVPICAgICAgICAgIDB4MDIgIC8qIFZpZGVvICovCiNkZWZpbmUgQVZSQ19NSl9UWVBFX0JDX0FVRElPICAgICAgIDB4MDQgIC8qIEJyb2FkY2FzdGluZyBBdWRpbyAqLwojZGVmaW5lIEFWUkNfTUpfVFlQRV9CQ19WSURFTyAgICAgICAweDA4ICAvKiBCcm9hZGNhc3RpbmcgVmlkZW8gKi8KI2RlZmluZSBBVlJDX01KX1RZUEVfSU5WQUxJRCAgICAgICAgMHhGMAoKLyogcGxheWVyIHN1YiB0eXBlICovCiNkZWZpbmUgQVZSQ19TVUJfVFlQRV9OT05FICAgICAgICAgIDB4MDAKI2RlZmluZSBBVlJDX1NVQl9UWVBFX0FVRElPX0JPT0sgICAgMHgwMSAgLyogQXVkaW8gQm9vayAqLwojZGVmaW5lIEFWUkNfU1VCX1RZUEVfUE9EQ0FTVCAgICAgICAweDAyICAvKiBQb2RjYXN0ICovCiNkZWZpbmUgQVZSQ19TVUJfVFlQRV9JTlZBTElEICAgICAgIDB4RkMKCi8qIG1lZGlhIGl0ZW0gLSBtZWRpYSB0eXBlICovCiNkZWZpbmUgQVZSQ19NRURJQV9UWVBFX0FVRElPICAgICAgIDB4MDAKI2RlZmluZSBBVlJDX01FRElBX1RZUEVfVklERU8gICAgICAgMHgwMQoKI2RlZmluZSBBVlJDX0RJUl9VUCAgICAgICAgICAgICAgICAgMHgwMCAgLyogRm9sZGVyIFVwICovCiNkZWZpbmUgQVZSQ19ESVJfRE9XTiAgICAgICAgICAgICAgIDB4MDEgIC8qIEZvbGRlciBEb3duICovCgojZGVmaW5lIEFWUkNfVUlEX1NJWkUgICAgICAgICAgICAgICA4CnR5cGVkZWYgVUlOVDggdEFWUkNfVUlEW0FWUkNfVUlEX1NJWkVdOwoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqICBwbGF5ZXIgYXR0cmlidXRlIC0gc3VwcG9ydGVkIGZlYXR1cmVzCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX0JJVF9OTyAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX01BU0sgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX09GRiAgICAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEZfU0VMRUNUX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX1NFTEVDVF9PRkZdICYgQVZSQ19QRl9TRUxFQ1RfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9VUF9CSVRfTk8gICAgICAgICAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9VUF9NQVNLICAgICAgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QRl9VUF9PRkYgICAgICAgICAgICAgICAgICAwCiNkZWZpbmUgQVZSQ19QRl9VUF9TVVBQT1JURUQoeCkgICAgICAgICAoKHgpW0FWUkNfUEZfVVBfT0ZGXSAmIEFWUkNfUEZfVVBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9ET1dOX0JJVF9OTyAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl9ET1dOX01BU0sgICAgICAgICAgICAgICAweDA0CiNkZWZpbmUgQVZSQ19QRl9ET1dOX09GRiAgICAgICAgICAgICAgICAwCiNkZWZpbmUgQVZSQ19QRl9ET1dOX1NVUFBPUlRFRCh4KSAgICAgICAoKHgpW0FWUkNfUEZfRE9XTl9PRkZdICYgQVZSQ19QRl9ET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfTEVGVF9CSVRfTk8gICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEZfTEVGVF9NQVNLICAgICAgICAgICAgICAgMHgwOAojZGVmaW5lIEFWUkNfUEZfTEVGVF9PRkYgICAgICAgICAgICAgICAgMAojZGVmaW5lIEFWUkNfUEZfTEVGVF9TVVBQT1JURUQoeCkgICAgICAgKCh4KVtBVlJDX1BGX0xFRlRfT0ZGXSAmIEFWUkNfUEZfTEVGVF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JJR0hUX0JJVF9OTyAgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX1JJR0hUX01BU0sgICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGX1JJR0hUX09GRiAgICAgICAgICAgICAgIDAKI2RlZmluZSBBVlJDX1BGX1JJR0hUX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9SSUdIVF9PRkZdICYgQVZSQ19QRl9SSUdIVF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfQklUX05PICAgICAgICAgIDUKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfTUFTSyAgICAgICAgICAgIDB4MjAKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfT0ZGICAgICAgICAgICAgIDAKI2RlZmluZSBBVlJDX1BGX1JJR0hUVVBfU1VQUE9SVEVEKHgpICAgICgoeClbQVZSQ19QRl9SSUdIVFVQX09GRl0gJiBBVlJDX1BGX1JJR0hUVVBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fQklUX05PICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fTUFTSyAgICAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fT0ZGICAgICAgICAgICAwCiNkZWZpbmUgQVZSQ19QRl9SSUdIVERPV05fU1VQUE9SVEVEKHgpICAoKHgpW0FWUkNfUEZfUklHSFRET1dOX09GRl0gJiBBVlJDX1BGX1JJR0hURE9XTl9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9CSVRfTk8gICAgICAgICAgIDcKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9NQVNLICAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9PRkYgICAgICAgICAgICAgIDAKI2RlZmluZSBBVlJDX1BGX0xFRlRVUF9TVVBQT1JURUQoeCkgICAgICgoeClbQVZSQ19QRl9MRUZUVVBfT0ZGXSAmIEFWUkNfUEZfTEVGVFVQX01BU0spCgojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fQklUX05PICAgICAgICAgOAojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fTUFTSyAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fT0ZGICAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfTEVGVERPV05fU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX0xFRlRET1dOX09GRl0gJiBBVlJDX1BGX0xFRlRET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX0JJVF9OTyAgICAgICAgOQojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX01BU0sgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX09GRiAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfUk9PVF9NRU5VX1NVUFBPUlRFRCh4KSAgKCh4KVtBVlJDX1BGX1JPT1RfTUVOVV9PRkZdICYgQVZSQ19QRl9ST09UX01FTlVfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9TRVRVUF9NRU5VX0JJVF9OTyAgICAgICAxMAojZGVmaW5lIEFWUkNfUEZfU0VUVVBfTUVOVV9NQVNLICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUEZfU0VUVVBfTUVOVV9PRkYgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfU0VUVVBfTUVOVV9TVVBQT1JURUQoeCkgKCh4KVtBVlJDX1BGX1NFVFVQX01FTlVfT0ZGXSAmIEFWUkNfUEZfU0VUVVBfTUVOVV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0NPTlRFTlRTX01FTlVfQklUX05PICAgIDExCiNkZWZpbmUgQVZSQ19QRl9DT05URU5UU19NRU5VX01BU0sgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9DT05URU5UU19NRU5VX09GRiAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9DT05URU5UU19NRU5VX1NVUFBPUlRFRCh4KSAgKCh4KVtBVlJDX1BGX0NPTlRFTlRTX01FTlVfT0ZGXSAmIEFWUkNfUEZfQ09OVEVOVFNfTUVOVV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0ZBVk9SSVRFX01FTlVfQklUX05PICAgIDEyCiNkZWZpbmUgQVZSQ19QRl9GQVZPUklURV9NRU5VX01BU0sgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9GQVZPUklURV9NRU5VX09GRiAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9GQVZPUklURV9NRU5VX1NVUFBPUlRFRCh4KSAgKCh4KVtBVlJDX1BGX0ZBVk9SSVRFX01FTlVfT0ZGXSAmIEFWUkNfUEZfRkFWT1JJVEVfTUVOVV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0VYSVRfQklUX05PICAgICAgICAgICAgIDEzCiNkZWZpbmUgQVZSQ19QRl9FWElUX01BU0sgICAgICAgICAgICAgICAweDIwCiNkZWZpbmUgQVZSQ19QRl9FWElUX09GRiAgICAgICAgICAgICAgICAxCiNkZWZpbmUgQVZSQ19QRl9FWElUX1NVUFBPUlRFRCh4KSAgICAgICAoKHgpW0FWUkNfUEZfRVhJVF9PRkZdICYgQVZSQ19QRl9FWElUX01BU0spCgojZGVmaW5lIEFWUkNfUEZfMF9CSVRfTk8gICAgICAgICAgICAgICAgMTQKI2RlZmluZSBBVlJDX1BGXzBfTUFTSyAgICAgICAgICAgICAgICAgIDB4NDAKI2RlZmluZSBBVlJDX1BGXzBfT0ZGICAgICAgICAgICAgICAgICAgIDEKI2RlZmluZSBBVlJDX1BGXzBfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl8wX09GRl0gJiBBVlJDX1BGXzBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl8xX0JJVF9OTyAgICAgICAgICAgICAgICAxNQojZGVmaW5lIEFWUkNfUEZfMV9NQVNLICAgICAgICAgICAgICAgICAgMHg4MAojZGVmaW5lIEFWUkNfUEZfMV9PRkYgICAgICAgICAgICAgICAgICAgMQojZGVmaW5lIEFWUkNfUEZfMV9TVVBQT1JURUQoeCkgICAgICAgICAgKCh4KVtBVlJDX1BGXzFfT0ZGXSAmIEFWUkNfUEZfMV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGXzJfQklUX05PICAgICAgICAgICAgICAgIDE2CiNkZWZpbmUgQVZSQ19QRl8yX01BU0sgICAgICAgICAgICAgICAgICAweDAxCiNkZWZpbmUgQVZSQ19QRl8yX09GRiAgICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl8yX1NVUFBPUlRFRCh4KSAgICAgICAgICAoKHgpW0FWUkNfUEZfMl9PRkZdICYgQVZSQ19QRl8yX01BU0spCgojZGVmaW5lIEFWUkNfUEZfM19CSVRfTk8gICAgICAgICAgICAgICAgMTcKI2RlZmluZSBBVlJDX1BGXzNfTUFTSyAgICAgICAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX1BGXzNfT0ZGICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBBVlJDX1BGXzNfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl8zX09GRl0gJiBBVlJDX1BGXzNfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl80X0JJVF9OTyAgICAgICAgICAgICAgICAxOAojZGVmaW5lIEFWUkNfUEZfNF9NQVNLICAgICAgICAgICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUEZfNF9PRkYgICAgICAgICAgICAgICAgICAgMgojZGVmaW5lIEFWUkNfUEZfNF9TVVBQT1JURUQoeCkgICAgICAgICAgKCh4KVtBVlJDX1BGXzRfT0ZGXSAmIEFWUkNfUEZfNF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGXzVfQklUX05PICAgICAgICAgICAgICAgIDE5CiNkZWZpbmUgQVZSQ19QRl81X01BU0sgICAgICAgICAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl81X09GRiAgICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl81X1NVUFBPUlRFRCh4KSAgICAgICAgICAoKHgpW0FWUkNfUEZfNV9PRkZdICYgQVZSQ19QRl81X01BU0spCgojZGVmaW5lIEFWUkNfUEZfNl9CSVRfTk8gICAgICAgICAgICAgICAgMjAKI2RlZmluZSBBVlJDX1BGXzZfTUFTSyAgICAgICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGXzZfT0ZGICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBBVlJDX1BGXzZfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl82X09GRl0gJiBBVlJDX1BGXzZfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl83X0JJVF9OTyAgICAgICAgICAgICAgICAyMQojZGVmaW5lIEFWUkNfUEZfN19NQVNLICAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfN19PRkYgICAgICAgICAgICAgICAgICAgMgojZGVmaW5lIEFWUkNfUEZfN19TVVBQT1JURUQoeCkgICAgICAgICAgKCh4KVtBVlJDX1BGXzdfT0ZGXSAmIEFWUkNfUEZfN19NQVNLKQoKI2RlZmluZSBBVlJDX1BGXzhfQklUX05PICAgICAgICAgICAgICAgIDIyCiNkZWZpbmUgQVZSQ19QRl84X01BU0sgICAgICAgICAgICAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRl84X09GRiAgICAgICAgICAgICAgICAgICAyCiNkZWZpbmUgQVZSQ19QRl84X1NVUFBPUlRFRCh4KSAgICAgICAgICAoKHgpW0FWUkNfUEZfOF9PRkZdICYgQVZSQ19QRl84X01BU0spCgojZGVmaW5lIEFWUkNfUEZfOV9CSVRfTk8gICAgICAgICAgICAgICAgMjMKI2RlZmluZSBBVlJDX1BGXzlfTUFTSyAgICAgICAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGXzlfT0ZGICAgICAgICAgICAgICAgICAgIDIKI2RlZmluZSBBVlJDX1BGXzlfU1VQUE9SVEVEKHgpICAgICAgICAgICgoeClbQVZSQ19QRl85X09GRl0gJiBBVlJDX1BGXzlfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9ET1RfQklUX05PICAgICAgICAgICAgICAyNAojZGVmaW5lIEFWUkNfUEZfRE9UX01BU0sgICAgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfRE9UX09GRiAgICAgICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEZfRE9UX1NVUFBPUlRFRCh4KSAgICAgICAgKCh4KVtBVlJDX1BGX0RPVF9PRkZdICYgQVZSQ19QRl9ET1RfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9FTlRFUl9CSVRfTk8gICAgICAgICAgICAyNQojZGVmaW5lIEFWUkNfUEZfRU5URVJfTUFTSyAgICAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUEZfRU5URVJfT0ZGICAgICAgICAgICAgICAgMwojZGVmaW5lIEFWUkNfUEZfRU5URVJfU1VQUE9SVEVEKHgpICAgICAgKCh4KVtBVlJDX1BGX0VOVEVSX09GRl0gJiBBVlJDX1BGX0VOVEVSX01BU0spCgojZGVmaW5lIEFWUkNfUEZfQ0xFQVJfQklUX05PICAgICAgICAgICAgMjYKI2RlZmluZSBBVlJDX1BGX0NMRUFSX01BU0sgICAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BGX0NMRUFSX09GRiAgICAgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX0NMRUFSX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9DTEVBUl9PRkZdICYgQVZSQ19QRl9DTEVBUl9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0NITkxfVVBfQklUX05PICAgICAgICAgIDI3CiNkZWZpbmUgQVZSQ19QRl9DSE5MX1VQX01BU0sgICAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9DSE5MX1VQX09GRiAgICAgICAgICAgICAzCiNkZWZpbmUgQVZSQ19QRl9DSE5MX1VQX1NVUFBPUlRFRCh4KSAgICAoKHgpW0FWUkNfUEZfQ0hOTF9VUF9PRkZdICYgQVZSQ19QRl9DSE5MX1VQX01BU0spCgojZGVmaW5lIEFWUkNfUEZfQ0hOTF9ET1dOX0JJVF9OTyAgICAgICAgMjgKI2RlZmluZSBBVlJDX1BGX0NITkxfRE9XTl9NQVNLICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGX0NITkxfRE9XTl9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX0NITkxfRE9XTl9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9DSE5MX0RPV05fT0ZGXSAmIEFWUkNfUEZfQ0hOTF9ET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfUFJFVl9DSE5MX0JJVF9OTyAgICAgICAgMjkKI2RlZmluZSBBVlJDX1BGX1BSRVZfQ0hOTF9NQVNLICAgICAgICAgIDB4MjAKI2RlZmluZSBBVlJDX1BGX1BSRVZfQ0hOTF9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX1BSRVZfQ0hOTF9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9QUkVWX0NITkxfT0ZGXSAmIEFWUkNfUEZfUFJFVl9DSE5MX01BU0spCgojZGVmaW5lIEFWUkNfUEZfU09VTkRfU0VMX0JJVF9OTyAgICAgICAgMzAKI2RlZmluZSBBVlJDX1BGX1NPVU5EX1NFTF9NQVNLICAgICAgICAgIDB4NDAKI2RlZmluZSBBVlJDX1BGX1NPVU5EX1NFTF9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX1NPVU5EX1NFTF9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9TT1VORF9TRUxfT0ZGXSAmIEFWUkNfUEZfU09VTkRfU0VMX01BU0spCgojZGVmaW5lIEFWUkNfUEZfSU5QVVRfU0VMX0JJVF9OTyAgICAgICAgMzEKI2RlZmluZSBBVlJDX1BGX0lOUFVUX1NFTF9NQVNLICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0lOUFVUX1NFTF9PRkYgICAgICAgICAgIDMKI2RlZmluZSBBVlJDX1BGX0lOUFVUX1NFTF9TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9JTlBVVF9TRUxfT0ZGXSAmIEFWUkNfUEZfSU5QVVRfU0VMX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRElTUF9JTkZPX0JJVF9OTyAgICAgICAgMzIKI2RlZmluZSBBVlJDX1BGX0RJU1BfSU5GT19NQVNLICAgICAgICAgIDB4MDEKI2RlZmluZSBBVlJDX1BGX0RJU1BfSU5GT19PRkYgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX0RJU1BfSU5GT19TVVBQT1JURUQoeCkgICgoeClbQVZSQ19QRl9ESVNQX0lORk9fT0ZGXSAmIEFWUkNfUEZfRElTUF9JTkZPX01BU0spCgojZGVmaW5lIEFWUkNfUEZfSEVMUF9CSVRfTk8gICAgICAgICAgICAgMzMKI2RlZmluZSBBVlJDX1BGX0hFTFBfTUFTSyAgICAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX1BGX0hFTFBfT0ZGICAgICAgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX0hFTFBfU1VQUE9SVEVEKHgpICAgICAgICgoeClbQVZSQ19QRl9IRUxQX09GRl0gJiBBVlJDX1BGX0hFTFBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9QQUdFX1VQX0JJVF9OTyAgICAgICAgICAzNAojZGVmaW5lIEFWUkNfUEZfUEFHRV9VUF9NQVNLICAgICAgICAgICAgMHgwNAojZGVmaW5lIEFWUkNfUEZfUEFHRV9VUF9PRkYgICAgICAgICAgICAgNAojZGVmaW5lIEFWUkNfUEZfUEFHRV9VUF9TVVBQT1JURUQoeCkgICAgKCh4KVtBVlJDX1BGX1BBR0VfVVBfT0ZGXSAmIEFWUkNfUEZfUEFHRV9VUF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1BBR0VfRE9XTl9CSVRfTk8gICAgICAgIDM1CiNkZWZpbmUgQVZSQ19QRl9QQUdFX0RPV05fTUFTSyAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9QQUdFX0RPV05fT0ZGICAgICAgICAgICA0CiNkZWZpbmUgQVZSQ19QRl9QQUdFX0RPV05fU1VQUE9SVEVEKHgpICAoKHgpW0FWUkNfUEZfUEFHRV9ET1dOX09GRl0gJiBBVlJDX1BGX1BBR0VfRE9XTl9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1BPV0VSX0JJVF9OTyAgICAgICAgICAgIDM2CiNkZWZpbmUgQVZSQ19QRl9QT1dFUl9NQVNLICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9QT1dFUl9PRkYgICAgICAgICAgICAgICA0CiNkZWZpbmUgQVZSQ19QRl9QT1dFUl9TVVBQT1JURUQoeCkgICAgICAoKHgpW0FWUkNfUEZfUE9XRVJfT0ZGXSAmIEFWUkNfUEZfUE9XRVJfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9WT0xfVVBfQklUX05PICAgICAgICAgICAzNwojZGVmaW5lIEFWUkNfUEZfVk9MX1VQX01BU0sgICAgICAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfVk9MX1VQX09GRiAgICAgICAgICAgICAgNAojZGVmaW5lIEFWUkNfUEZfVk9MX1VQX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX1ZPTF9VUF9PRkZdICYgQVZSQ19QRl9WT0xfVVBfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9WT0xfRE9XTl9CSVRfTk8gICAgICAgICAzOAojZGVmaW5lIEFWUkNfUEZfVk9MX0RPV05fTUFTSyAgICAgICAgICAgMHg0MAojZGVmaW5lIEFWUkNfUEZfVk9MX0RPV05fT0ZGICAgICAgICAgICAgNAojZGVmaW5lIEFWUkNfUEZfVk9MX0RPV05fU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX1ZPTF9ET1dOX09GRl0gJiBBVlJDX1BGX1ZPTF9ET1dOX01BU0spCgojZGVmaW5lIEFWUkNfUEZfTVVURV9CSVRfTk8gICAgICAgICAgICAgMzkKI2RlZmluZSBBVlJDX1BGX01VVEVfTUFTSyAgICAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX01VVEVfT0ZGICAgICAgICAgICAgICAgIDQKI2RlZmluZSBBVlJDX1BGX01VVEVfU1VQUE9SVEVEKHgpICAgICAgICgoeClbQVZSQ19QRl9NVVRFX09GRl0gJiBBVlJDX1BGX01VVEVfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9QTEFZX0JJVF9OTyAgICAgICAgICAgICA0MAojZGVmaW5lIEFWUkNfUEZfUExBWV9NQVNLICAgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfUExBWV9PRkYgICAgICAgICAgICAgICAgNQojZGVmaW5lIEFWUkNfUEZfUExBWV9TVVBQT1JURUQoeCkgICAgICAgKCh4KVtBVlJDX1BGX1BMQVlfT0ZGXSAmIEFWUkNfUEZfUExBWV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1NUT1BfQklUX05PICAgICAgICAgICAgIDQxCiNkZWZpbmUgQVZSQ19QRl9TVE9QX01BU0sgICAgICAgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QRl9TVE9QX09GRiAgICAgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9TVE9QX1NVUFBPUlRFRCh4KSAgICAgICAoKHgpW0FWUkNfUEZfU1RPUF9PRkZdICYgQVZSQ19QRl9TVE9QX01BU0spCgojZGVmaW5lIEFWUkNfUEZfUEFVU0VfQklUX05PICAgICAgICAgICAgNDIKI2RlZmluZSBBVlJDX1BGX1BBVVNFX01BU0sgICAgICAgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BGX1BBVVNFX09GRiAgICAgICAgICAgICAgIDUKI2RlZmluZSBBVlJDX1BGX1BBVVNFX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9QQVVTRV9PRkZdICYgQVZSQ19QRl9QQVVTRV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JFQ09SRF9CSVRfTk8gICAgICAgICAgIDQzCiNkZWZpbmUgQVZSQ19QRl9SRUNPUkRfTUFTSyAgICAgICAgICAgICAweDA4CiNkZWZpbmUgQVZSQ19QRl9SRUNPUkRfT0ZGICAgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9SRUNPUkRfU1VQUE9SVEVEKHgpICAgICAoKHgpW0FWUkNfUEZfUkVDT1JEX09GRl0gJiBBVlJDX1BGX1JFQ09SRF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1JFV0lORF9CSVRfTk8gICAgICAgICAgIDQ0CiNkZWZpbmUgQVZSQ19QRl9SRVdJTkRfTUFTSyAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9SRVdJTkRfT0ZGICAgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9SRVdJTkRfU1VQUE9SVEVEKHgpICAgICAoKHgpW0FWUkNfUEZfUkVXSU5EX09GRl0gJiBBVlJDX1BGX1JFV0lORF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0ZBU1RfRldEX0JJVF9OTyAgICAgICAgIDQ1CiNkZWZpbmUgQVZSQ19QRl9GQVNUX0ZXRF9NQVNLICAgICAgICAgICAweDIwCiNkZWZpbmUgQVZSQ19QRl9GQVNUX0ZXRF9PRkYgICAgICAgICAgICA1CiNkZWZpbmUgQVZSQ19QRl9GQVNUX0ZXRF9TVVBQT1JURUQoeCkgICAoKHgpW0FWUkNfUEZfRkFTVF9GV0RfT0ZGXSAmIEFWUkNfUEZfRkFTVF9GV0RfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9FSkVDVF9CSVRfTk8gICAgICAgICAgICA0NgojZGVmaW5lIEFWUkNfUEZfRUpFQ1RfTUFTSyAgICAgICAgICAgICAgMHg0MAojZGVmaW5lIEFWUkNfUEZfRUpFQ1RfT0ZGICAgICAgICAgICAgICAgNQojZGVmaW5lIEFWUkNfUEZfRUpFQ1RfU1VQUE9SVEVEKHgpICAgICAgKCh4KVtBVlJDX1BGX0VKRUNUX09GRl0gJiBBVlJDX1BGX0VKRUNUX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRk9SV0FSRF9CSVRfTk8gICAgICAgICAgNDcKI2RlZmluZSBBVlJDX1BGX0ZPUldBUkRfTUFTSyAgICAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0ZPUldBUkRfT0ZGICAgICAgICAgICAgIDUKI2RlZmluZSBBVlJDX1BGX0ZPUldBUkRfU1VQUE9SVEVEKHgpICAgICgoeClbQVZSQ19QRl9GT1JXQVJEX09GRl0gJiBBVlJDX1BGX0ZPUldBUkRfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9CQUNLV0FSRF9CSVRfTk8gICAgICAgICA0OAojZGVmaW5lIEFWUkNfUEZfQkFDS1dBUkRfTUFTSyAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfQkFDS1dBUkRfT0ZGICAgICAgICAgICAgNgojZGVmaW5lIEFWUkNfUEZfQkFDS1dBUkRfU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX0JBQ0tXQVJEX09GRl0gJiBBVlJDX1BGX0JBQ0tXQVJEX01BU0spCgojZGVmaW5lIEFWUkNfUEZfQU5HTEVfQklUX05PICAgICAgICAgICAgNDkKI2RlZmluZSBBVlJDX1BGX0FOR0xFX01BU0sgICAgICAgICAgICAgIDB4MDIKI2RlZmluZSBBVlJDX1BGX0FOR0xFX09GRiAgICAgICAgICAgICAgIDYKI2RlZmluZSBBVlJDX1BGX0FOR0xFX1NVUFBPUlRFRCh4KSAgICAgICgoeClbQVZSQ19QRl9BTkdMRV9PRkZdICYgQVZSQ19QRl9BTkdMRV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX1NVQlBJQ1RVUkVfQklUX05PICAgICAgIDUwCiNkZWZpbmUgQVZSQ19QRl9TVUJQSUNUVVJFX01BU0sgICAgICAgICAweDA0CiNkZWZpbmUgQVZSQ19QRl9TVUJQSUNUVVJFX09GRiAgICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9TVUJQSUNUVVJFX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfU1VCUElDVFVSRV9PRkZdICYgQVZSQ19QRl9TVUJQSUNUVVJFX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRjFfQklUX05PICAgICAgICAgICAgICAgNTEKI2RlZmluZSBBVlJDX1BGX0YxX01BU0sgICAgICAgICAgICAgICAgIDB4MDgKI2RlZmluZSBBVlJDX1BGX0YxX09GRiAgICAgICAgICAgICAgICAgIDYKI2RlZmluZSBBVlJDX1BGX0YxX1NVUFBPUlRFRCh4KSAgICAgICAgICgoeClbQVZSQ19QRl9GMV9PRkZdICYgQVZSQ19QRl9GMV9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0YyX0JJVF9OTyAgICAgICAgICAgICAgIDUyCiNkZWZpbmUgQVZSQ19QRl9GMl9NQVNLICAgICAgICAgICAgICAgICAweDEwCiNkZWZpbmUgQVZSQ19QRl9GMl9PRkYgICAgICAgICAgICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9GMl9TVVBQT1JURUQoeCkgICAgICAgICAoKHgpW0FWUkNfUEZfRjJfT0ZGXSAmIEFWUkNfUEZfRjJfTUFTSykKCiNkZWZpbmUgQVZSQ19QRl9GM19CSVRfTk8gICAgICAgICAgICAgICA1MwojZGVmaW5lIEFWUkNfUEZfRjNfTUFTSyAgICAgICAgICAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfRjNfT0ZGICAgICAgICAgICAgICAgICAgNgojZGVmaW5lIEFWUkNfUEZfRjNfU1VQUE9SVEVEKHgpICAgICAgICAgKCh4KVtBVlJDX1BGX0YzX09GRl0gJiBBVlJDX1BGX0YzX01BU0spCgojZGVmaW5lIEFWUkNfUEZfRjRfQklUX05PICAgICAgICAgICAgICAgNTQKI2RlZmluZSBBVlJDX1BGX0Y0X01BU0sgICAgICAgICAgICAgICAgIDB4NDAKI2RlZmluZSBBVlJDX1BGX0Y0X09GRiAgICAgICAgICAgICAgICAgIDYKI2RlZmluZSBBVlJDX1BGX0Y0X1NVUFBPUlRFRCh4KSAgICAgICAgICgoeClbQVZSQ19QRl9GNF9PRkZdICYgQVZSQ19QRl9GNF9NQVNLKQoKI2RlZmluZSBBVlJDX1BGX0Y1X0JJVF9OTyAgICAgICAgICAgICAgIDU1CiNkZWZpbmUgQVZSQ19QRl9GNV9NQVNLICAgICAgICAgICAgICAgICAweDgwCiNkZWZpbmUgQVZSQ19QRl9GNV9PRkYgICAgICAgICAgICAgICAgICA2CiNkZWZpbmUgQVZSQ19QRl9GNV9TVVBQT1JURUQoeCkgICAgICAgICAoKHgpW0FWUkNfUEZfRjVfT0ZGXSAmIEFWUkNfUEZfRjVfTUFTSykKCi8qIFZlbmRvciB1bmlxdWUuIFRoaXMgUEFTU1RIUk9VR0ggY29tbWFuZCBpcyBzdXBwb3J0ZWQuICovCiNkZWZpbmUgQVZSQ19QRl9WRU5ET1JfQklUX05PICAgICAgICAgICA1NgojZGVmaW5lIEFWUkNfUEZfVkVORE9SX01BU0sgICAgICAgICAgICAgMHgwMQojZGVmaW5lIEFWUkNfUEZfVkVORE9SX09GRiAgICAgICAgICAgICAgNwojZGVmaW5lIEFWUkNfUEZfVkVORE9SX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX1ZFTkRPUl9PRkZdICYgQVZSQ19QRl9WRU5ET1JfTUFTSykKCi8qIEJhc2ljIEdyb3VwIE5hdmlnYXRpb24uICBUaGlzIG92ZXJydWxlcyB0aGUgU0RQIGVudHJ5IGFzIGl0IGlzIHNldCBwZXIgcGxheWVyLjcgKi8KI2RlZmluZSBBVlJDX1BGX0dST1VQX05BVklfQklUX05PICAgICAgIDU3CiNkZWZpbmUgQVZSQ19QRl9HUk9VUF9OQVZJX01BU0sgICAgICAgICAweDAyCiNkZWZpbmUgQVZSQ19QRl9HUk9VUF9OQVZJX09GRiAgICAgICAgICA3CiNkZWZpbmUgQVZSQ19QRl9HUk9VUF9OQVZJX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfR1JPVVBfTkFWSV9PRkZdICYgQVZSQ19QRl9HUk9VUF9OQVZJX01BU0spCgovKiBBZHZhbmNlZCBDb250cm9sIFBsYXllci4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgcGxheWVyIHN1cHBvcnRzIGF0IGxlYXN0IEFWUkNQIDEuNC4gKi8KI2RlZmluZSBBVlJDX1BGX0FEVl9DVFJMX0JJVF9OTyAgICAgICAgIDU4CiNkZWZpbmUgQVZSQ19QRl9BRFZfQ1RSTF9NQVNLICAgICAgICAgICAweDA0CiNkZWZpbmUgQVZSQ19QRl9BRFZfQ1RSTF9PRkYgICAgICAgICAgICA3CiNkZWZpbmUgQVZSQ19QRl9BRFZfQ1RSTF9TVVBQT1JURUQoeCkgICAoKHgpW0FWUkNfUEZfQURWX0NUUkxfT0ZGXSAmIEFWUkNfUEZfQURWX0NUUkxfTUFTSykKCi8qIEJyb3dzaW5nLiAgVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgc3VwcG9ydHMgYnJvd3NpbmcuICovCiNkZWZpbmUgQVZSQ19QRl9CUk9XU0VfQklUX05PICAgICAgICAgICA1OQojZGVmaW5lIEFWUkNfUEZfQlJPV1NFX01BU0sgICAgICAgICAgICAgMHgwOAojZGVmaW5lIEFWUkNfUEZfQlJPV1NFX09GRiAgICAgICAgICAgICAgNwojZGVmaW5lIEFWUkNfUEZfQlJPV1NFX1NVUFBPUlRFRCh4KSAgICAgKCh4KVtBVlJDX1BGX0JST1dTRV9PRkZdICYgQVZSQ19QRl9CUk9XU0VfTUFTSykKCi8qIFNlYXJjaGluZy4gVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgc3VwcG9ydHMgc2VhcmNoaW5nLiAqLwojZGVmaW5lIEFWUkNfUEZfU0VBUkNIX0JJVF9OTyAgICAgICAgICAgNjAKI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9NQVNLICAgICAgICAgICAgIDB4MTAKI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9PRkYgICAgICAgICAgICAgIDcKI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9TVVBQT1JURUQoeCkgICAgICgoeClbQVZSQ19QRl9TRUFSQ0hfT0ZGXSAmIEFWUkNfUEZfU0VBUkNIX01BU0spCgovKiBBZGRUb05vd1BsYXlpbmcuICBUaGlzIGJpdCBpcyBzZXQgaWYgdGhlIHBsYXllciBzdXBwb3J0cyB0aGUgQWRkVG9Ob3dQbGF5aW5nIGNvbW1hbmQuICovCiNkZWZpbmUgQVZSQ19QRl9BREQyTk9XUExBWV9CSVRfTk8gICAgICA2MQojZGVmaW5lIEFWUkNfUEZfQUREMk5PV1BMQVlfTUFTSyAgICAgICAgMHgyMAojZGVmaW5lIEFWUkNfUEZfQUREMk5PV1BMQVlfT0ZGICAgICAgICAgNwojZGVmaW5lIEFWUkNfUEZfQUREMk5PV1BMQVlfU1VQUE9SVEVEKHgpICgoeClbQVZSQ19QRl9BREQyTk9XUExBWV9PRkZdICYgQVZSQ19QRl9BREQyTk9XUExBWV9NQVNLKQoKLyogVUlEcyB1bmlxdWUgaW4gcGxheWVyIGJyb3dzZSB0cmVlLiAgVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgaXMgYWJsZSB0byBtYWludGFpbiB1bmlxdWUgVUlEcyBhY3Jvc3MgdGhlIHBsYXllciBicm93c2UgdHJlZS4gKi8KI2RlZmluZSBBVlJDX1BGX1VJRF9VTklRVUVfQklUX05PICAgICAgIDYyCiNkZWZpbmUgQVZSQ19QRl9VSURfVU5JUVVFX01BU0sgICAgICAgICAweDQwCiNkZWZpbmUgQVZSQ19QRl9VSURfVU5JUVVFX09GRiAgICAgICAgICA3CiNkZWZpbmUgQVZSQ19QRl9VSURfVU5JUVVFX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfVUlEX1VOSVFVRV9PRkZdICYgQVZSQ19QRl9VSURfVU5JUVVFX01BU0spCgovKiBPbmx5QnJvd3NhYmxlV2hlbkFkZHJlc3NlZC4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgcGxheWVyIGlzIG9ubHkgYWJsZSB0byBiZSBicm93c2VkIHdoZW4gaXQgaXMgc2V0IGFzIHRoZSBBZGRyZXNzZWQgUGxheWVyLiAqLwojZGVmaW5lIEFWUkNfUEZfQlJfV0hfQUREUl9CSVRfTk8gICAgICAgNjMKI2RlZmluZSBBVlJDX1BGX0JSX1dIX0FERFJfTUFTSyAgICAgICAgIDB4ODAKI2RlZmluZSBBVlJDX1BGX0JSX1dIX0FERFJfT0ZGICAgICAgICAgIDcKI2RlZmluZSBBVlJDX1BGX0JSX1dIX0FERFJfU1VQUE9SVEVEKHgpICgoeClbQVZSQ19QRl9CUl9XSF9BRERSX09GRl0gJiBBVlJDX1BGX0JSX1dIX0FERFJfTUFTSykKCi8qIE9ubHlTZWFyY2hhYmxlV2hlbkFkZHJlc3NlZC4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgcGxheWVyIGlzIG9ubHkgYWJsZSB0byBiZSBzZWFyY2hlZCB3aGVuIGl0IGlzIHNldCBhcyB0aGUgQWRkcmVzc2VkIHBsYXllci4gKi8KI2RlZmluZSBBVlJDX1BGX1NFQVJDSF9XSF9BRERSX0JJVF9OTyAgIDY0CiNkZWZpbmUgQVZSQ19QRl9TRUFSQ0hfV0hfQUREUl9NQVNLICAgICAweDAxCiNkZWZpbmUgQVZSQ19QRl9TRUFSQ0hfV0hfQUREUl9PRkYgICAgICA4CiNkZWZpbmUgQVZSQ19QRl9TRUFSQ0hfV0hfQUREUl9TVVBQT1JURUQoeCkgKCh4KVtBVlJDX1BGX1NFQVJDSF9XSF9BRERSX09GRl0gJiBBVlJDX1BGX1NFQVJDSF9XSF9BRERSX01BU0spCgovKiBOb3dQbGF5aW5nLiAgVGhpcyBiaXQgaXMgc2V0IGlmIHRoZSBwbGF5ZXIgc3VwcG9ydHMgdGhlIE5vd1BsYXlpbmcgZm9sZGVyLiAgTm90ZSB0aGF0IGZvciBhbGwgcGxheWVycyB0aGF0IHN1cHBvcnQgYnJvd3NpbmcgdGhpcyBiaXQgc2hhbGwgYmUgc2V0ICovCiNkZWZpbmUgQVZSQ19QRl9OT1dfUExBWV9CSVRfTk8gICAgICAgICA2NQojZGVmaW5lIEFWUkNfUEZfTk9XX1BMQVlfTUFTSyAgICAgICAgICAgMHgwMgojZGVmaW5lIEFWUkNfUEZfTk9XX1BMQVlfT0ZGICAgICAgICAgICAgOAojZGVmaW5lIEFWUkNfUEZfTk9XX1BMQVlfU1VQUE9SVEVEKHgpICAgKCh4KVtBVlJDX1BGX05PV19QTEFZX09GRl0gJiBBVlJDX1BGX05PV19QTEFZX01BU0spCgovKiBVSURQZXJzaXN0ZW5jeS4gIFRoaXMgYml0IGlzIHNldCBpZiB0aGUgUGxheWVyIGlzIGFibGUgdG8gcGVyc2lzdCBVSUQgdmFsdWVzIGJldHdlZW4gQVZSQ1AgQnJvd3NlIFJlY29ubmVjdCAqLwojZGVmaW5lIEFWUkNfUEZfVUlEX1BFUlNJU1RfQklUX05PICAgICAgNjYKI2RlZmluZSBBVlJDX1BGX1VJRF9QRVJTSVNUX01BU0sgICAgICAgIDB4MDQKI2RlZmluZSBBVlJDX1BGX1VJRF9QRVJTSVNUX09GRiAgICAgICAgIDgKI2RlZmluZSBBVlJDX1BGX1VJRF9QRVJTSVNUX1NVUFBPUlRFRCh4KSAoKHgpW0FWUkNfUEZfVUlEX1BFUlNJU1RfT0ZGXSAmIEFWUkNfUEZfVUlEX1BFUlNJU1RfTUFTSykKCi8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgoqKiAgZGF0YSB0eXBlIGRlZmluaXRpb25zCioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLwoKLyoKVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGhlYWRlciBwYXJhbWV0ZXJzIG9mIGFuIEFWL0MgbWVzc2FnZS4KKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICBjdHlwZTsgICAgICAgICAgLyogQ29tbWFuZCB0eXBlLiAgKi8KICAgIFVJTlQ4ICAgc3VidW5pdF90eXBlOyAgIC8qIFN1YnVuaXQgdHlwZS4gKi8KICAgIFVJTlQ4ICAgc3VidW5pdF9pZDsgICAgIC8qIFN1YnVuaXQgSUQuICBUaGlzIHZhbHVlIGlzIHR5cGljYWxseSBpZ25vcmVkIGluIEFWUkNQLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogZXhjZXB0IGZvciBWRU5ET1IgREVQRU5ERU5UIG1lc3NhZ2VzIHdoZW4gdGhlIHZhbHVlIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2ZW5kb3ItZGVwZW5kZW50LiAgVmFsdWUgcmFuZ2UgaXMgMC03LiAqLwogICAgVUlOVDggICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAocGFzc3Rocm91Z2gsIHZlbmRvciwgZXRjKSAqLwp9IHRBVlJDX0hEUjsKCi8qIFRoaXMgc3RydWN0dXJlIGNvbnRhaW5zIGEgVU5JVCBJTkZPIG1lc3NhZ2UuICovCnR5cGVkZWYgc3RydWN0CnsKICAgIHRBVlJDX0hEUiAgIGhkcjsgICAgICAgIC8qIE1lc3NhZ2UgaGVhZGVyLiAqLwogICAgVUlOVDMyICAgICAgY29tcGFueV9pZDsgLyogQ29tcGFueSBpZGVudGlmaWVyLiAqLwogICAgVUlOVDggICAgICAgdW5pdF90eXBlOyAgLyogVW5pdCB0eXBlLiAgVXNlcyB0aGUgc2FtZSB2YWx1ZXMgYXMgc3VidW5pdCB0eXBlLiAqLwogICAgVUlOVDggICAgICAgdW5pdDsgICAgICAgLyogVGhpcyB2YWx1ZSBpcyB2ZW5kb3IgZGVwZW5kZW50IGFuZCB0eXBpY2FsbHkgemVyby4gICovCn0gdEFWUkNfTVNHX1VOSVQ7CgovKiBUaGlzIHN0cnVjdHVyZSBjb250YWlucyBhIFNVQlVOSVQgSU5GTyBtZXNzYWdlLiAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICB0QVZSQ19IRFIgICBoZHI7ICAgICAgICAvKiBNZXNzYWdlIGhlYWRlci4gKi8KICAgIFVJTlQ4ICAgICAgIHN1YnVuaXRfdHlwZVtBVlJDX1NVQl9UWVBFX0xFTl07CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBBcnJheSBjb250YWluaW5nIHN1YnVuaXQgdHlwZSB2YWx1ZXMuICAqLwogICAgQk9PTEVBTiAgICAgcGFuZWw7ICAgICAgLyogVFJVRSBpZiB0aGUgcGFuZWwgc3VidW5pdCB0eXBlIGlzIGluIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogc3VidW5pdF90eXBlIGFycmF5LCBGQUxTRSBvdGhlcndpc2UuICovCiAgICBVSU5UOCAgICAgICBwYWdlOyAgICAgICAvKiBTcGVjaWZpZXMgd2hpY2ggcGFydCBvZiB0aGUgc3VidW5pdCB0eXBlIHRhYmxlIGlzCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiByZXR1cm5lZC4gIEZvciBBVlJDUCBpdCBpcyB0eXBpY2FsbHkgemVyby4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqIFZhbHVlIHJhbmdlIGlzIDAtNy4gKi8KfSB0QVZSQ19NU0dfU1VCOwoKLyogVGhpcyBzdHJ1Y3R1cmUgY29udGFpbnMgYSBWRU5ET1IgREVQRU5ERU5UIG1lc3NhZ2UuICovCnR5cGVkZWYgc3RydWN0CnsKICAgIHRBVlJDX0hEUiAgIGhkcjsgICAgICAgIC8qIE1lc3NhZ2UgaGVhZGVyLiAqLwogICAgVUlOVDMyICAgICAgY29tcGFueV9pZDsgLyogQ29tcGFueSBpZGVudGlmaWVyLiAqLwogICAgVUlOVDggICAgICAqcF92ZW5kb3JfZGF0YTsvKiBQb2ludGVyIHRvIHZlbmRvciBkZXBlbmRlbnQgZGF0YS4gKi8KICAgIFVJTlQxNiAgICAgIHZlbmRvcl9sZW47IC8qIExlbmd0aCBpbiBieXRlcyBvZiB2ZW5kb3IgZGVwZW5kZW50IGRhdGEuICovCn0gdEFWUkNfTVNHX1ZFTkRPUjsKCi8qIFBBU1MgVEhST1VHSCBtZXNzYWdlIHN0cnVjdHVyZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICB0QVZSQ19IRFIgICBoZHI7ICAgICAgICAvKiBoZHIuY3R5cGUgVW51c2VkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogaGRyLnN1YnVuaXRfdHlwZSBVbnVzZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoZHIuc3VidW5pdF9pZCBVbnVzZWQuICovCiAgICBVSU5UOCAgICAgICBvcF9pZDsgICAgICAvKiBPcGVyYXRpb24gSUQuICAqLwogICAgVUlOVDggICAgICAgc3RhdGU7ICAgICAgLyogS2V5cHJlc3Mgc3RhdGUuICAqLwogICAgVUlOVDggICAgICAqcF9wYXNzX2RhdGE7LyogUG9pbnRlciB0byBkYXRhLiAgVGhpcyBwYXJhbWV0ZXIgaXMgb25seSB2YWxpZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICogd2hlbiB0aGUgb3BfaWQgaXMgQVZSQ19JRF9WRU5ET1IuKi8KICAgIFVJTlQ4ICAgICAgIHBhc3NfbGVuOyAgIC8qIExlbmd0aCBpbiBieXRlcyBvZiBkYXRhLiBUaGlzIHBhcmFtZXRlciBpcyBvbmx5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB2YWxpZCB3aGVuIHRoZSBvcF9pZCBpcyBBVlJDX0lEX1ZFTkRPUi4qLwp9IHRBVlJDX01TR19QQVNTOwoKLyogQ29tbWFuZC9SZXNwb25zZSBpbmRpY2F0b3IuICovCiNkZWZpbmUgQVZSQ19DTUQgICAgICAgICAgICBBVkNUX0NNRCAgICAvKiBDb21tYW5kIG1lc3NhZ2UgKi8KI2RlZmluZSBBVlJDX1JTUCAgICAgICAgICAgIEFWQ1RfUlNQICAgIC8qIFJlc3BvbnNlIG1lc3NhZ2UgKi8KCi8qIEJyb3dzaW5nIGNoYW5uZWwgbWVzc2FnZSBzdHJ1Y3R1cmUgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgdEFWUkNfSERSICAgaGRyOyAgICAgICAgICAgIC8qIGhkci5jdHlwZSBBVlJDX0NNRCBvciBBVlJDX1JTUC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoZHIuc3VidW5pdF90eXBlIFVudXNlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBoZHIuc3VidW5pdF9pZCBVbnVzZWQuICovCiAgICBVSU5UOCAgICAgICpwX2Jyb3dzZV9kYXRhOyAgLyogUG9pbnRlciB0byBkYXRhLiAgKi8KICAgIFVJTlQxNiAgICAgIGJyb3dzZV9sZW47ICAgICAvKiBMZW5ndGggaW4gYnl0ZXMgb2YgZGF0YS4gKi8KICAgIEJUX0hEUiAgICAgKnBfYnJvd3NlX3BrdDsgICAvKiBUaGUgR0tJIGJ1ZmZlciByZWNlaXZlZC4gU2V0IHRvIE5VTEwsIGlmIHRoZSBjYWxsYmFjayBmdW5jdGlvbiB3YW50cyB0byBrZWVwIHRoZSBidWZmZXIgKi8KfSB0QVZSQ19NU0dfQlJPV1NFOwoKLyogVGhpcyBpcyBhIHVuaW9uIG9mIGFsbCBtZXNzYWdlIHR5cGUgc3RydWN0dXJlcy4gKi8KdHlwZWRlZiB1bmlvbgp7CiAgICB0QVZSQ19IRFIgICAgICAgICAgIGhkcjsgICAgLyogTWVzc2FnZSBoZWFkZXIuICovCiAgICB0QVZSQ19NU0dfVU5JVCAgICAgIHVuaXQ7ICAgLyogVU5JVCBJTkZPIG1lc3NhZ2UuICovCiAgICB0QVZSQ19NU0dfU1VCICAgICAgIHN1YjsgICAgLyogU1VCVU5JVCBJTkZPIG1lc3NhZ2UuICovCiAgICB0QVZSQ19NU0dfVkVORE9SICAgIHZlbmRvcjsgLyogVkVORE9SIERFUEVOREVOVCBtZXNzYWdlLiAqLwogICAgdEFWUkNfTVNHX1BBU1MgICAgICBwYXNzOyAgIC8qIFBBU1MgVEhST1VHSCBtZXNzYWdlLiAqLwogICAgdEFWUkNfTVNHX0JST1dTRSAgICBicm93c2U7IC8qIG1lc3NhZ2VzIHRocnUgYnJvd3NpbmcgY2hhbm5lbCAqLwp9IHRBVlJDX01TRzsKCi8qIG1hY3JvcyAqLwojZGVmaW5lIEFWUkNfSVNfVkFMSURfQ0FQX0lEKGEpICAgICAgICAgICAoKChhID09IEFWUkNfQ0FQX0NPTVBBTllfSUQpIHx8IChhID09IEFWUkNfQ0FQX0VWRU5UU19TVVBQT1JURUQpKSA/IFRSVUUgOiBGQUxTRSkKCiNkZWZpbmUgQVZSQ19JU19WQUxJRF9FVkVOVF9JRChhKSAgICAgICAgICAgKCgoYSA+PSBBVlJDX0VWVF9QTEFZX1NUQVRVU19DSEFOR0UpICYmIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChhIDw9IEFWUkNfRVZUX0FQUF9TRVRUSU5HX0NIQU5HRSkpID8gVFJVRSA6IEZBTFNFKQoKI2RlZmluZSBBVlJDX0lTX1ZBTElEX0FUVFJJQlVURShhKSAgICAgICAgICAoKCgoKGEgPiAwKSAmJiBhIDw9IEFWUkNfUExBWUVSX1NFVFRJTkdfU0NBTikpIHx8IFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKGEgPj0gQVZSQ19QTEFZRVJfU0VUVElOR19MT1dfTUVOVV9FWFQpICYmIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGEgPD0gQVZSQ19QTEFZRVJfU0VUVElOR19ISUdIX01FTlVfRVhUKSkpID8gVFJVRSA6IEZBTFNFKQoKCiNkZWZpbmUgQVZSQ19JU19WQUxJRF9NRURJQV9BVFRSSUJVVEUoYSkgICAgKChhID49IEFWUkNfTUVESUFfQVRUUl9JRF9USVRMRSkgJiYgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYSA8PSBBVlJDX01FRElBX0FUVFJfSURfUExBWUlOR19USU1FKSA/IFRSVUUgOiBGQUxTRSkKCiNkZWZpbmUgQVZSQ19JU19WQUxJRF9CQVRURVJZX1NUQVRVUyhhKSAgICAoKGEgPD0gQVZSQ19CQVRURVJZX1NUQVRVU19GVUxMX0NIQVJHRSkgPyBUUlVFIDogRkFMU0UpCgojZGVmaW5lIEFWUkNfSVNfVkFMSURfU1lTVEVNX1NUQVRVUyhhKSAgICAoKGEgPD0gQVZSQ19TWVNURU1TVEFURV9QV1JfVU5QTFVHR0VEKSA/IFRSVUUgOiBGQUxTRSkKCiNkZWZpbmUgQVZSQ19JU19WQUxJRF9HUk9VUChhKSAgICAoKGEgPD0gQVZSQ19QRFVfUFJFVl9HUk9VUCkgPyBUUlVFIDogRkFMU0UpCgovKiBDb21wYW55IElEIGlzIDI0LWJpdCBpbnRlZ2VyIFdlIGNhbiBub3QgdXNlIHRoZSBtYWNyb3MgaW4gYnRfdHlwZXMuaCAqLwojZGVmaW5lIEFWUkNfQ09fSURfVE9fQkVfU1RSRUFNKHAsIHUzMikgeyoocCkrKyA9IChVSU5UOCkoKHUzMikgPj4gMTYpOyAqKHApKysgPSAoVUlOVDgpKCh1MzIpID4+IDgpOyAqKHApKysgPSAoVUlOVDgpKHUzMik7IH0KI2RlZmluZSBBVlJDX0JFX1NUUkVBTV9UT19DT19JRCh1MzIsIHApIHt1MzIgPSAoKChVSU5UMzIpKCooKHApICsgMikpKSArICgoKFVJTlQzMikoKigocCkgKyAxKSkpIDw8IDgpICsgKCgoVUlOVDMyKSgqKHApKSkgPDwgMTYpKTsgKHApICs9IDM7fQoKLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCioqICBkYXRhIHR5cGUgZGVmaW5pdGlvbnMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCiNkZWZpbmUgQVZSQ19NQVhfQVBQX0FUVFJfU0laRSAgICAgIDE2CiNkZWZpbmUgQVZSQ19NQVhfQ0hBUlNFVF9TSVpFICAgICAgIDE2CiNkZWZpbmUgQVZSQ19NQVhfRUxFTV9BVFRSX1NJWkUgICAgIDgKCgovKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKiogIE1ldGFkYXRhIHRyYW5zZmVyIEJ1aWxkaW5nL1BhcnNpbmcgZGVmaW5pdGlvbnMKKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCgp0eXBlZGVmIHN0cnVjdCB7CiAgICBVSU5UMTYgICAgICAgICAgICAgIGNoYXJzZXRfaWQ7CiAgICBVSU5UMTYgICAgICAgICAgICAgIHN0cl9sZW47CiAgICBVSU5UOCAgICAgICAgICAgICAgICpwX3N0cjsKfSB0QVZSQ19GVUxMX05BTUU7Cgp0eXBlZGVmIHN0cnVjdCB7CiAgICBVSU5UMTYgICAgICAgICAgICAgIHN0cl9sZW47CiAgICBVSU5UOCAgICAgICAgICAgICAgICpwX3N0cjsKfSB0QVZSQ19OQU1FOwoKCiNpZm5kZWYgQVZSQ19DQVBfTUFYX05VTV9DT01QX0lECiNkZWZpbmUgQVZSQ19DQVBfTUFYX05VTV9DT01QX0lEICAgIDQKI2VuZGlmCgojaWZuZGVmIEFWUkNfQ0FQX01BWF9OVU1fRVZUX0lECiNkZWZpbmUgQVZSQ19DQVBfTUFYX05VTV9FVlRfSUQgICAgIDE2CiNlbmRpZgoKdHlwZWRlZiB1bmlvbgp7CiAgICBVSU5UMzIgIGNvbXBhbnlfaWRbQVZSQ19DQVBfTUFYX05VTV9DT01QX0lEXTsKICAgIFVJTlQ4ICAgZXZlbnRfaWRbQVZSQ19DQVBfTUFYX05VTV9FVlRfSURdOwp9IHRBVlJDX0NBUFNfUEFSQU07Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgIGF0dHJfaWQ7CiAgICBVSU5UOCAgIGF0dHJfdmFsOwp9IHRBVlJDX0FQUF9TRVRUSU5HOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICBhdHRyX2lkOwogICAgVUlOVDE2ICBjaGFyc2V0X2lkOwogICAgVUlOVDggICBzdHJfbGVuOwogICAgVUlOVDggICAqcF9zdHI7Cn0gdEFWUkNfQVBQX1NFVFRJTkdfVEVYVDsKCnR5cGVkZWYgVUlOVDggdEFWUkNfRkVBVFVSRV9NQVNLW0FWUkNfRkVBVFVSRV9NQVNLX1NJWkVdOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDE2ICAgICAgICAgICAgICBwbGF5ZXJfaWQ7ICAgICAgLyogQSB1bmlxdWUgaWRlbnRpZmllciBmb3IgdGhpcyBtZWRpYSBwbGF5ZXIuKi8KICAgIFVJTlQ4ICAgICAgICAgICAgICAgbWFqb3JfdHlwZTsgICAgIC8qIFVzZSBBVlJDX01KX1RZUEVfQVVESU8sIEFWUkNfTUpfVFlQRV9WSURFTywgQVZSQ19NSl9UWVBFX0JDX0FVRElPLCBvciBBVlJDX01KX1RZUEVfQkNfVklERU8uKi8KICAgIFVJTlQzMiAgICAgICAgICAgICAgc3ViX3R5cGU7ICAgICAgIC8qIFVzZSBBVlJDX1NVQl9UWVBFX05PTkUsIEFWUkNfU1VCX1RZUEVfQVVESU9fQk9PSywgb3IgQVZSQ19TVUJfVFlQRV9QT0RDQVNUKi8KICAgIFVJTlQ4ICAgICAgICAgICAgICAgcGxheV9zdGF0dXM7ICAgIC8qIFVzZSBBVlJDX1BMQVlTVEFURV9TVE9QUEVELCBBVlJDX1BMQVlTVEFURV9QTEFZSU5HLCBBVlJDX1BMQVlTVEFURV9QQVVTRUQsIEFWUkNfUExBWVNUQVRFX0ZXRF9TRUVLLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUkNfUExBWVNUQVRFX1JFVl9TRUVLLCBvciBBVlJDX1BMQVlTVEFURV9FUlJPUiovCiAgICB0QVZSQ19GRUFUVVJFX01BU0sgIGZlYXR1cmVzOyAgICAgICAvKiBTdXBwb3J0ZWQgZmVhdHVyZSBiaXQgbWFzayovCiAgICB0QVZSQ19GVUxMX05BTUUgICAgIG5hbWU7ICAgICAgICAgICAvKiBUaGUgcGxheWVyIG5hbWUsIG5hbWUgbGVuZ3RoIGFuZCBjaGFyYWN0ZXIgc2V0IGlkLiovCn0gdEFWUkNfSVRFTV9QTEFZRVI7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICB0QVZSQ19VSUQgICAgICAgICAgIHVpZDsgICAgICAgICAgICAvKiBUaGUgdWlkIG9mIHRoaXMgZm9sZGVyICovCiAgICBVSU5UOCAgICAgICAgICAgICAgIHR5cGU7ICAgICAgICAgICAvKiBVc2UgQVZSQ19GT0xERVJfVFlQRV9NSVhFRCwgQVZSQ19GT0xERVJfVFlQRV9USVRMRVMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVlJDX0ZPTERFUl9UWVBFX0FMTlVNUywgQVZSQ19GT0xERVJfVFlQRV9BUlRJU1RTLCBBVlJDX0ZPTERFUl9UWVBFX0dFTlJFUywKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFWUkNfRk9MREVSX1RZUEVfUExBWUxJU1RTLCBvciBBVlJDX0ZPTERFUl9UWVBFX1lFQVJTLiovCiAgICBCT09MRUFOICAgICAgICAgICAgIHBsYXlhYmxlOyAgICAgICAvKiBUUlVFLCBpZiB0aGUgZm9sZGVyIGNhbiBiZSBwbGF5ZWQuICovCiAgICB0QVZSQ19GVUxMX05BTUUgICAgIG5hbWU7ICAgICAgICAgICAvKiBUaGUgZm9sZGVyIG5hbWUsIG5hbWUgbGVuZ3RoIGFuZCBjaGFyYWN0ZXIgc2V0IGlkLiAqLwp9IHRBVlJDX0lURU1fRk9MREVSOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDMyICAgICAgICAgICAgICBhdHRyX2lkOyAgICAgICAgLyogVXNlIEFWUkNfTUVESUFfQVRUUl9JRF9USVRMRSwgQVZSQ19NRURJQV9BVFRSX0lEX0FSVElTVCwgQVZSQ19NRURJQV9BVFRSX0lEX0FMQlVNLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQVZSQ19NRURJQV9BVFRSX0lEX1RSQUNLX05VTSwgQVZSQ19NRURJQV9BVFRSX0lEX05VTV9UUkFDS1MsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBVlJDX01FRElBX0FUVFJfSURfR0VOUkUsIEFWUkNfTUVESUFfQVRUUl9JRF9QTEFZSU5HX1RJTUUgKi8KICAgIHRBVlJDX0ZVTExfTkFNRSAgICAgbmFtZTsgICAgICAgICAgIC8qIFRoZSBhdHRyaWJ1dGUgdmFsdWUsIHZhbHVlIGxlbmd0aCBhbmQgY2hhcmFjdGVyIHNldCBpZC4gKi8KfSB0QVZSQ19BVFRSX0VOVFJZOwoKdHlwZWRlZiBzdHJ1Y3QKewogICAgdEFWUkNfVUlEICAgICAgICAgICB1aWQ7ICAgICAgICAgICAgLyogVGhlIHVpZCBvZiB0aGlzIG1lZGlhIGVsZW1lbnQgaXRlbSAqLwogICAgVUlOVDggICAgICAgICAgICAgICB0eXBlOyAgICAgICAgICAgLyogVXNlIEFWUkNfTUVESUFfVFlQRV9BVURJTyBvciBBVlJDX01FRElBX1RZUEVfVklERU8uICovCiAgICB0QVZSQ19GVUxMX05BTUUgICAgIG5hbWU7ICAgICAgICAgICAvKiBUaGUgbWVkaWEgbmFtZSwgbmFtZSBsZW5ndGggYW5kIGNoYXJhY3RlciBzZXQgaWQuICovCiAgICBVSU5UOCAgICAgICAgICAgICAgIGF0dHJfY291bnQ7ICAgICAvKiBUaGUgbnVtYmVyIG9mIGF0dHJpYnV0ZXMgaW4gcF9hdHRyX2xpc3QgKi8KICAgIHRBVlJDX0FUVFJfRU5UUlkqICAgcF9hdHRyX2xpc3Q7ICAgIC8qIEF0dHJpYnV0ZSBlbnRyeSBsaXN0LiAqLwp9IHRBVlJDX0lURU1fTUVESUE7Cgp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBpdGVtX3R5cGU7ICAvKiBBVlJDX0lURU1fUExBWUVSLCBBVlJDX0lURU1fRk9MREVSLCBvciBBVlJDX0lURU1fTUVESUEgKi8KICAgIHVuaW9uCiAgICB7CiAgICAgICAgdEFWUkNfSVRFTV9QTEFZRVIgICBwbGF5ZXI7ICAgICAvKiBUaGUgcHJvcGVydGllcyBvZiBhIG1lZGlhIHBsYXllciBpdGVtLiovCiAgICAgICAgdEFWUkNfSVRFTV9GT0xERVIgICBmb2xkZXI7ICAgICAvKiBUaGUgcHJvcGVydGllcyBvZiBhIGZvbGRlciBpdGVtLiovCiAgICAgICAgdEFWUkNfSVRFTV9NRURJQSAgICBtZWRpYTsgICAgICAvKiBUaGUgcHJvcGVydGllcyBvZiBhIG1lZGlhIGl0ZW0uKi8KICAgIH0gdTsKfSB0QVZSQ19JVEVNOwoKLyogR2V0Q2FwYWJpbGl0eSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBjYXBhYmlsaXR5X2lkOwp9IHRBVlJDX0dFVF9DQVBTX0NNRDsKCi8qIExpc3RQbGF5ZXJBcHBWYWx1ZXMgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgYXR0cl9pZDsKfSB0QVZSQ19MSVNUX0FQUF9WQUxVRVNfQ01EOwoKLyogR2V0Q3VyQXBwVmFsdWUgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgbnVtX2F0dHI7CiAgICBVSU5UOCAgICAgICBhdHRyc1tBVlJDX01BWF9BUFBfQVRUUl9TSVpFXTsKfSB0QVZSQ19HRVRfQ1VSX0FQUF9WQUxVRV9DTUQ7CgovKiBTZXRBcHBWYWx1ZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBudW1fdmFsOwogICAgdEFWUkNfQVBQX1NFVFRJTkcgICAqcF92YWxzOwp9IHRBVlJDX1NFVF9BUFBfVkFMVUVfQ01EOwoKLyogR2V0QXBwQXR0clR4dCAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBudW1fYXR0cjsKICAgIFVJTlQ4ICAgICAgIGF0dHJzW0FWUkNfTUFYX0FQUF9BVFRSX1NJWkVdOwp9IHRBVlJDX0dFVF9BUFBfQVRUUl9UWFRfQ01EOwoKLyogR2V0QXBwVmFsdWVUeHQgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgYXR0cl9pZDsKICAgIFVJTlQ4ICAgICAgIG51bV92YWw7CiAgICBVSU5UOCAgICAgICB2YWxzW0FWUkNfTUFYX0FQUF9BVFRSX1NJWkVdOwp9IHRBVlJDX0dFVF9BUFBfVkFMX1RYVF9DTUQ7CgovKiBJbmZvcm1DaGFyc2V0ICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIG51bV9pZDsKICAgIFVJTlQxNiAgICAgIGNoYXJzZXRzW0FWUkNfTUFYX0NIQVJTRVRfU0laRV07Cn0gdEFWUkNfSU5GT1JNX0NIQVJTRVRfQ01EOwoKLyogSW5mb3JtQmF0dGVyeVN0YXR1cyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBiYXR0ZXJ5X3N0YXR1czsKfSB0QVZSQ19CQVRURVJZX1NUQVRVU19DTUQ7CgovKiBHZXRFbGVtQXR0cnMgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgbnVtX2F0dHI7CiAgICBVSU5UMzIgICAgICBhdHRyc1tBVlJDX01BWF9FTEVNX0FUVFJfU0laRV07Cn0gdEFWUkNfR0VUX0VMRU1fQVRUUlNfQ01EOwoKLyogUmVnTm90aWZ5ICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIGV2ZW50X2lkOwogICAgVUlOVDMyICAgICAgcGFyYW07Cn0gdEFWUkNfUkVHX05PVElGX0NNRDsKCi8qIFNldEFkZHJQbGF5ZXIgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDE2ICAgICAgcGxheWVyX2lkOwp9IHRBVlJDX1NFVF9BRERSX1BMQVlFUl9DTUQ7CgovKiBTZXRCcm93c2VkUGxheWVyICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQxNiAgICAgIHBsYXllcl9pZDsKfSB0QVZSQ19TRVRfQlJfUExBWUVSX0NNRDsKCi8qIFNldEFic1ZvbHVtZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICB2b2x1bWU7Cn0gdEFWUkNfU0VUX1ZPTFVNRV9DTUQ7CgovKiBHZXRGb2xkZXJJdGVtcyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBzY29wZTsKICAgIFVJTlQzMiAgICAgIHN0YXJ0X2l0ZW07CiAgICBVSU5UMzIgICAgICBlbmRfaXRlbTsKICAgIFVJTlQ4ICAgICAgIGF0dHJfY291bnQ7CiAgICBVSU5UMzIgICAgICAqcF9hdHRyX2xpc3Q7Cn0gdEFWUkNfR0VUX0lURU1TX0NNRDsKCi8qIENoYW5nZVBhdGggKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDE2ICAgICAgdWlkX2NvdW50ZXI7CiAgICBVSU5UOCAgICAgICBkaXJlY3Rpb247CiAgICB0QVZSQ19VSUQgICBmb2xkZXJfdWlkOwp9IHRBVlJDX0NIR19QQVRIX0NNRDsKCi8qIEdldEl0ZW1BdHRycyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBzY29wZTsKICAgIHRBVlJDX1VJRCAgIHVpZDsKICAgIFVJTlQxNiAgICAgIHVpZF9jb3VudGVyOwogICAgVUlOVDggICAgICAgYXR0cl9jb3VudDsKICAgIFVJTlQzMiAgICAgICpwX2F0dHJfbGlzdDsKfSB0QVZSQ19HRVRfQVRUUlNfQ01EOwoKLyogU2VhcmNoICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICAgICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIHRBVlJDX0ZVTExfTkFNRSBzdHJpbmc7Cn0gdEFWUkNfU0VBUkNIX0NNRDsKCi8qIFBsYXlJdGVtICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIHNjb3BlOwogICAgdEFWUkNfVUlEICAgdWlkOwogICAgVUlOVDE2ICAgICAgdWlkX2NvdW50ZXI7Cn0gdEFWUkNfUExBWV9JVEVNX0NNRDsKCi8qIEFkZFRvTm93UGxheWluZyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoYXNzaWduZWQgYnkgQVZSQ19CbGRDb21tYW5kIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBzY29wZTsKICAgIHRBVlJDX1VJRCAgIHVpZDsKICAgIFVJTlQxNiAgICAgIHVpZF9jb3VudGVyOwp9IHRBVlJDX0FERF9UT19QTEFZX0NNRDsKCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChhc3NpZ25lZCBieSBBVlJDX0JsZENvbW1hbmQgYWNjb3JkaW5nIHRvIHBkdSkgKi8KfSB0QVZSQ19DTUQ7CgovKiBDb250aW51ZSBhbmQgQWJvcnQgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGFzc2lnbmVkIGJ5IEFWUkNfQmxkQ29tbWFuZCBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgdGFyZ2V0X3BkdTsKfSB0QVZSQ19ORVhUX0NNRDsKCnR5cGVkZWYgdW5pb24KewogICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgIHBkdTsKICAgIHRBVlJDX0NNRCAgICAgICAgICAgICAgICAgICBjbWQ7CiAgICB0QVZSQ19HRVRfQ0FQU19DTUQgICAgICAgICAgZ2V0X2NhcHM7ICAgICAgICAgICAgICAgLyogR2V0Q2FwYWJpbGl0eSAqLwogICAgdEFWUkNfQ01EICAgICAgICAgICAgICAgICAgIGxpc3RfYXBwX2F0dHI7ICAgICAgICAgIC8qIExpc3RQbGF5ZXJBcHBBdHRyICovCiAgICB0QVZSQ19MSVNUX0FQUF9WQUxVRVNfQ01EICAgbGlzdF9hcHBfdmFsdWVzOyAgICAgICAgLyogTGlzdFBsYXllckFwcFZhbHVlcyAqLwogICAgdEFWUkNfR0VUX0NVUl9BUFBfVkFMVUVfQ01EIGdldF9jdXJfYXBwX3ZhbDsgICAgICAgIC8qIEdldEN1ckFwcFZhbHVlICovCiAgICB0QVZSQ19TRVRfQVBQX1ZBTFVFX0NNRCAgICAgc2V0X2FwcF92YWw7ICAgICAgICAgICAgLyogU2V0QXBwVmFsdWUgKi8KICAgIHRBVlJDX0dFVF9BUFBfQVRUUl9UWFRfQ01EICBnZXRfYXBwX2F0dHJfdHh0OyAgICAgICAvKiBHZXRBcHBBdHRyVHh0ICovCiAgICB0QVZSQ19HRVRfQVBQX1ZBTF9UWFRfQ01EICAgZ2V0X2FwcF92YWxfdHh0OyAgICAgICAgLyogR2V0QXBwVmFsdWVUeHQgKi8KICAgIHRBVlJDX0lORk9STV9DSEFSU0VUX0NNRCAgICBpbmZvcm1fY2hhcnNldDsgICAgICAgICAvKiBJbmZvcm1DaGFyc2V0ICovCiAgICB0QVZSQ19CQVRURVJZX1NUQVRVU19DTUQgICAgaW5mb3JtX2JhdHRlcnlfc3RhdHVzOyAgLyogSW5mb3JtQmF0dGVyeVN0YXR1cyAqLwogICAgdEFWUkNfR0VUX0VMRU1fQVRUUlNfQ01EICAgIGdldF9lbGVtX2F0dHJzOyAgICAgICAgIC8qIEdldEVsZW1BdHRycyAqLwogICAgdEFWUkNfQ01EICAgICAgICAgICAgICAgICAgIGdldF9wbGF5X3N0YXR1czsgICAgICAgIC8qIEdldFBsYXlTdGF0dXMgKi8KICAgIHRBVlJDX1JFR19OT1RJRl9DTUQgICAgICAgICByZWdfbm90aWY7ICAgICAgICAgICAgICAvKiBSZWdOb3RpZnkgKi8KICAgIHRBVlJDX05FWFRfQ01EICAgICAgICAgICAgICBjb250aW51OyAgICAgICAgICAgICAgICAvKiBDb250aW51ZSAqLwogICAgdEFWUkNfTkVYVF9DTUQgICAgICAgICAgICAgIGFib3J0OyAgICAgICAgICAgICAgICAgIC8qIEFib3J0ICovCgogICAgdEFWUkNfU0VUX0FERFJfUExBWUVSX0NNRCAgIGFkZHJfcGxheWVyOyAgICAgICAgICAgIC8qIFNldEFkZHJQbGF5ZXIgKi8KICAgIHRBVlJDX1NFVF9WT0xVTUVfQ01EICAgICAgICB2b2x1bWU7ICAgICAgICAgICAgICAgICAvKiBTZXRBYnNWb2x1bWUgKi8KICAgIHRBVlJDX1NFVF9CUl9QTEFZRVJfQ01EICAgICBicl9wbGF5ZXI7ICAgICAgICAgICAgICAvKiBTZXRCcm93c2VkUGxheWVyICovCiAgICB0QVZSQ19HRVRfSVRFTVNfQ01EICAgICAgICAgZ2V0X2l0ZW1zOyAgICAgICAgICAgICAgLyogR2V0Rm9sZGVySXRlbXMgKi8KICAgIHRBVlJDX0NIR19QQVRIX0NNRCAgICAgICAgICBjaGdfcGF0aDsgICAgICAgICAgICAgICAvKiBDaGFuZ2VQYXRoICovCiAgICB0QVZSQ19HRVRfQVRUUlNfQ01EICAgICAgICAgZ2V0X2F0dHJzOyAgICAgICAgICAgICAgLyogR2V0SXRlbUF0dHJzICovCiAgICB0QVZSQ19TRUFSQ0hfQ01EICAgICAgICAgICAgc2VhcmNoOyAgICAgICAgICAgICAgICAgLyogU2VhcmNoICovCiAgICB0QVZSQ19QTEFZX0lURU1fQ01EICAgICAgICAgcGxheV9pdGVtOyAgICAgICAgICAgICAgLyogUGxheUl0ZW0gKi8KICAgIHRBVlJDX0FERF9UT19QTEFZX0NNRCAgICAgICBhZGRfdG9fcGxheTsgICAgICAgICAgICAvKiBBZGRUb05vd1BsYXlpbmcgKi8KfSB0QVZSQ19DT01NQU5EOwoKLyogR2V0Q2FwYWJpbGl0eSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIGNhcGFiaWxpdHlfaWQ7CiAgICBVSU5UOCAgICAgICBjb3VudDsKICAgIHRBVlJDX0NBUFNfUEFSQU0gcGFyYW07Cn0gdEFWUkNfR0VUX0NBUFNfUlNQOwoKLyogTGlzdFBsYXllckFwcEF0dHIgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICBudW1fYXR0cjsKICAgIFVJTlQ4ICAgICAgIGF0dHJzW0FWUkNfTUFYX0FQUF9BVFRSX1NJWkVdOwp9IHRBVlJDX0xJU1RfQVBQX0FUVFJfUlNQOwoKLyogTGlzdFBsYXllckFwcFZhbHVlcyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIG51bV92YWw7CiAgICBVSU5UOCAgICAgICB2YWxzW0FWUkNfTUFYX0FQUF9BVFRSX1NJWkVdOwp9IHRBVlJDX0xJU1RfQVBQX1ZBTFVFU19SU1A7CgovKiBHZXRDdXJBcHBWYWx1ZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIG51bV92YWw7CiAgICB0QVZSQ19BUFBfU0VUVElORyAgICpwX3ZhbHM7Cn0gdEFWUkNfR0VUX0NVUl9BUFBfVkFMVUVfUlNQOwoKLyogR2V0QXBwQXR0clR4dCAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQ4ICAgICAgIG51bV9hdHRyOwogICAgdEFWUkNfQVBQX1NFVFRJTkdfVEVYVCAgICpwX2F0dHJzOwp9IHRBVlJDX0dFVF9BUFBfQVRUUl9UWFRfUlNQOwoKLyogR2V0RWxlbUF0dHJzICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgbnVtX2F0dHI7CiAgICB0QVZSQ19BVFRSX0VOVFJZICAgKnBfYXR0cnM7Cn0gdEFWUkNfR0VUX0VMRU1fQVRUUlNfUlNQOwoKLyogR2V0UGxheVN0YXR1cyAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQzMiAgICAgIHNvbmdfbGVuOwogICAgVUlOVDMyICAgICAgc29uZ19wb3M7CiAgICBVSU5UOCAgICAgICBwbGF5X3N0YXR1czsKfSB0QVZSQ19HRVRfUExBWV9TVEFUVVNfUlNQOwoKLyogbm90aWZpY2F0aW9uIGV2ZW50IHBhcmFtZXRlciBmb3IgQWRkcmVzc2VkUGxheWVyIGNoYW5nZSAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UMTYgICAgICAgICAgICAgIHBsYXllcl9pZDsKICAgIFVJTlQxNiAgICAgICAgICAgICAgdWlkX2NvdW50ZXI7Cn0gdEFWUkNfQUREUl9QTEFZRVJfUEFSQU07CgojaWZuZGVmIEFWUkNfTUFYX0FQUF9TRVRUSU5HUwojZGVmaW5lIEFWUkNfTUFYX0FQUF9TRVRUSU5HUyAgICA4CiNlbmRpZgoKLyogbm90aWZpY2F0aW9uIGV2ZW50IHBhcmFtZXRlciBmb3IgUGxheWVyIEFwcGxpY2F0aW9uIHNldHRpbmcgY2hhbmdlICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgbnVtX2F0dHI7CiAgICBVSU5UOCAgICAgICAgICAgICAgIGF0dHJfaWRbQVZSQ19NQVhfQVBQX1NFVFRJTkdTXTsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgYXR0cl92YWx1ZVtBVlJDX01BWF9BUFBfU0VUVElOR1NdOwp9IHRBVlJDX1BMQVlFUl9BUFBfUEFSQU07Cgp0eXBlZGVmIHVuaW9uCnsKICAgIHRBVlJDX1BMQVlTVEFURSAgICAgICAgIHBsYXlfc3RhdHVzOwogICAgdEFWUkNfVUlEICAgICAgICAgICAgICAgdHJhY2s7CiAgICBVSU5UMzIgICAgICAgICAgICAgICAgICBwbGF5X3BvczsKICAgIHRBVlJDX0JBVFRFUllfU1RBVFVTICAgIGJhdHRlcnlfc3RhdHVzOwogICAgdEFWUkNfU1lTVEVNU1RBVEUgICAgICAgc3lzdGVtX3N0YXR1czsKICAgIHRBVlJDX1BMQVlFUl9BUFBfUEFSQU0gIHBsYXllcl9zZXR0aW5nOwogICAgdEFWUkNfQUREUl9QTEFZRVJfUEFSQU0gYWRkcl9wbGF5ZXI7CiAgICBVSU5UMTYgICAgICAgICAgICAgICAgICB1aWRfY291bnRlcjsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgICAgIHZvbHVtZTsKfSB0QVZSQ19OT1RJRl9SU1BfUEFSQU07CgovKiBSZWdOb3RpZnkgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgICAgICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgICAgICAgICAgICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgICAgICAgICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICAgICAgICAgICAgICBldmVudF9pZDsKICAgIHRBVlJDX05PVElGX1JTUF9QQVJBTSAgIHBhcmFtOwp9IHRBVlJDX1JFR19OT1RJRl9SU1A7CgovKiBTZXRBYnNWb2x1bWUgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICAgICAgICAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UOCAgICAgICAgICAgICAgIHZvbHVtZTsKfSB0QVZSQ19TRVRfVk9MVU1FX1JTUDsKCi8qIFNldEJyb3dzZWRQbGF5ZXIgKi8KdHlwZWRlZiBzdHJ1Y3QKewogICAgVUlOVDggICAgICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19TVFMgICAgICAgICAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgb3Bjb2RlOyAgICAgICAgIC8qIE9wIENvZGUgKGNvcGllZCBmcm9tIGF2cmNfY21kLm9wY29kZSBieSBBVlJDX0JsZFJlc3BvbnNlIHVzZXIuIGludmFsaWQgb25lIHRvIGdlbmVyYXRlIGFjY29yZGluZyB0byBwZHUpICovCiAgICBVSU5UMTYgICAgICAgICAgICAgIHVpZF9jb3VudGVyOwogICAgVUlOVDMyICAgICAgICAgICAgICBudW1faXRlbXM7CiAgICBVSU5UMTYgICAgICAgICAgICAgIGNoYXJzZXRfaWQ7CiAgICBVSU5UOCAgICAgICAgICAgICAgIGZvbGRlcl9kZXB0aDsKICAgIHRBVlJDX05BTUUgICAgICAgICAgKnBfZm9sZGVyczsKfSB0QVZSQ19TRVRfQlJfUExBWUVSX1JTUDsKCi8qIEdldEZvbGRlckl0ZW1zICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgICAgICAgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICAgICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDE2ICAgICAgICAgICAgICB1aWRfY291bnRlcjsKICAgIFVJTlQxNiAgICAgICAgICAgICAgaXRlbV9jb3VudDsKICAgIHRBVlJDX0lURU0gICAgICAgICAgKnBfaXRlbV9saXN0Owp9IHRBVlJDX0dFVF9JVEVNU19SU1A7CgovKiBDaGFuZ2VQYXRoICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgICAgICAgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICAgICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDMyICAgICAgICAgICAgICBudW1faXRlbXM7Cn0gdEFWUkNfQ0hHX1BBVEhfUlNQOwoKLyogR2V0SXRlbUF0dHJzICovCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgICAgICAgICAgcGR1OwogICAgdEFWUkNfU1RTICAgICAgICAgICBzdGF0dXM7CiAgICBVSU5UOCAgICAgICAgICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwogICAgVUlOVDggICAgICAgICAgICAgICBhdHRyX2NvdW50OwogICAgdEFWUkNfQVRUUl9FTlRSWSAgICAqcF9hdHRyX2xpc3Q7Cn0gdEFWUkNfR0VUX0FUVFJTX1JTUDsKCi8qIFNlYXJjaCAqLwp0eXBlZGVmIHN0cnVjdAp7CiAgICBVSU5UOCAgICAgICAgICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgICAgICAgICAgc3RhdHVzOwogICAgVUlOVDggICAgICAgICAgICAgICBvcGNvZGU7ICAgICAgICAgLyogT3AgQ29kZSAoY29waWVkIGZyb20gYXZyY19jbWQub3Bjb2RlIGJ5IEFWUkNfQmxkUmVzcG9uc2UgdXNlci4gaW52YWxpZCBvbmUgdG8gZ2VuZXJhdGUgYWNjb3JkaW5nIHRvIHBkdSkgKi8KICAgIFVJTlQxNiAgICAgICAgICAgICAgdWlkX2NvdW50ZXI7CiAgICBVSU5UMzIgICAgICAgICAgICAgIG51bV9pdGVtczsKfSB0QVZSQ19TRUFSQ0hfUlNQOwoKCnR5cGVkZWYgc3RydWN0CnsKICAgIFVJTlQ4ICAgICAgIHBkdTsKICAgIHRBVlJDX1NUUyAgIHN0YXR1czsKICAgIFVJTlQ4ICAgICAgIG9wY29kZTsgICAgICAgICAvKiBPcCBDb2RlIChjb3BpZWQgZnJvbSBhdnJjX2NtZC5vcGNvZGUgYnkgQVZSQ19CbGRSZXNwb25zZSB1c2VyLiBpbnZhbGlkIG9uZSB0byBnZW5lcmF0ZSBhY2NvcmRpbmcgdG8gcGR1KSAqLwp9IHRBVlJDX1JTUDsKCnR5cGVkZWYgdW5pb24KewogICAgVUlOVDggICAgICAgICAgICAgICAgICAgICAgICAgICBwZHU7CiAgICB0QVZSQ19SU1AgICAgICAgICAgICAgICAgICAgICAgIHJzcDsKICAgIHRBVlJDX0dFVF9DQVBTX1JTUCAgICAgICAgICAgICAgZ2V0X2NhcHM7ICAgICAgICAgICAgICAgLyogR2V0Q2FwYWJpbGl0eSAqLwogICAgdEFWUkNfTElTVF9BUFBfQVRUUl9SU1AgICAgICAgICBsaXN0X2FwcF9hdHRyOyAgICAgICAgICAvKiBMaXN0UGxheWVyQXBwQXR0ciAqLwogICAgdEFWUkNfTElTVF9BUFBfVkFMVUVTX1JTUCAgICAgICBsaXN0X2FwcF92YWx1ZXM7ICAgICAgICAvKiBMaXN0UGxheWVyQXBwVmFsdWVzICovCiAgICB0QVZSQ19HRVRfQ1VSX0FQUF9WQUxVRV9SU1AgICAgIGdldF9jdXJfYXBwX3ZhbDsgICAgICAgIC8qIEdldEN1ckFwcFZhbHVlICovCiAgICB0QVZSQ19SU1AgICAgICAgICAgICAgICAgICAgICAgIHNldF9hcHBfdmFsOyAgICAgICAgICAgIC8qIFNldEFwcFZhbHVlICovCiAgICB0QVZSQ19HRVRfQVBQX0FUVFJfVFhUX1JTUCAgICAgIGdldF9hcHBfYXR0cl90eHQ7ICAgICAgIC8qIEdldEFwcEF0dHJUeHQgKi8KICAgIHRBVlJDX0dFVF9BUFBfQVRUUl9UWFRfUlNQICAgICAgZ2V0X2FwcF92YWxfdHh0OyAgICAgICAgLyogR2V0QXBwVmFsdWVUeHQgKi8KICAgIHRBVlJDX1JTUCAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtX2NoYXJzZXQ7ICAgICAgICAgLyogSW5mb3JtQ2hhcnNldCAqLwogICAgdEFWUkNfUlNQICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1fYmF0dGVyeV9zdGF0dXM7ICAvKiBJbmZvcm1CYXR0ZXJ5U3RhdHVzICovCiAgICB0QVZSQ19HRVRfRUxFTV9BVFRSU19SU1AgICAgICAgIGdldF9lbGVtX2F0dHJzOyAgICAgICAgIC8qIEdldEVsZW1BdHRycyAqLwogICAgdEFWUkNfR0VUX1BMQVlfU1RBVFVTX1JTUCAgICAgICBnZXRfcGxheV9zdGF0dXM7ICAgICAgICAvKiBHZXRQbGF5U3RhdHVzICovCiAgICB0QVZSQ19SRUdfTk9USUZfUlNQICAgICAgICAgICAgIHJlZ19ub3RpZjsgICAgICAgICAgICAgIC8qIFJlZ05vdGlmeSAqLwogICAgdEFWUkNfUlNQICAgICAgICAgICAgICAgICAgICAgICBjb250aW51OyAgICAgICAgICAgICAgICAvKiBDb250aW51ZSAqLwogICAgdEFWUkNfUlNQICAgICAgICAgICAgICAgICAgICAgICBhYm9ydDsgICAgICAgICAgICAgICAgICAvKiBBYm9ydCAqLwoKICAgIHRBVlJDX1JTUCAgICAgICAgICAgICAgICAgICAgICAgYWRkcl9wbGF5ZXI7ICAgICAgICAgICAgLyogU2V0QWRkclBsYXllciAqLwogICAgdEFWUkNfU0VUX1ZPTFVNRV9SU1AgICAgICAgICAgICB2b2x1bWU7ICAgICAgICAgICAgICAgICAvKiBTZXRBYnNWb2x1bWUgKi8KICAgIHRBVlJDX1NFVF9CUl9QTEFZRVJfUlNQICAgICAgICAgYnJfcGxheWVyOyAgICAgICAgICAgICAgLyogU2V0QnJvd3NlZFBsYXllciAqLwogICAgdEFWUkNfR0VUX0lURU1TX1JTUCAgICAgICAgICAgICBnZXRfaXRlbXM7ICAgICAgICAgICAgICAvKiBHZXRGb2xkZXJJdGVtcyAqLwogICAgdEFWUkNfQ0hHX1BBVEhfUlNQICAgICAgICAgICAgICBjaGdfcGF0aDsgICAgICAgICAgICAgICAvKiBDaGFuZ2VQYXRoICovCiAgICB0QVZSQ19HRVRfQVRUUlNfUlNQICAgICAgICAgICAgIGdldF9hdHRyczsgICAgICAgICAgICAgIC8qIEdldEl0ZW1BdHRycyAqLwogICAgdEFWUkNfU0VBUkNIX1JTUCAgICAgICAgICAgICAgICBzZWFyY2g7ICAgICAgICAgICAgICAgICAvKiBTZWFyY2ggKi8KICAgIHRBVlJDX1JTUCAgICAgICAgICAgICAgICAgICAgICAgcGxheV9pdGVtOyAgICAgICAgICAgICAgLyogUGxheUl0ZW0gKi8KICAgIHRBVlJDX1JTUCAgICAgICAgICAgICAgICAgICAgICAgYWRkX3RvX3BsYXk7ICAgICAgICAgICAgLyogQWRkVG9Ob3dQbGF5aW5nICovCn0gdEFWUkNfUkVTUE9OU0U7CgoKI2VuZGlmCg==