ZGlmZiAtLWdpdCBhL2FwL2FwcC9jY2FwcC9jY190aW1lci5jIGIvYXAvYXBwL2NjYXBwL2NjX3RpbWVyLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVhODIxYQotLS0gL2Rldi9udWxsCisrKyBiL2FwL2FwcC9jY2FwcC9jY190aW1lci5jCkBAIC0wLDAgKzEsMTAzIEBACisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqDQorKiAgICAgICAgICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMyBaVEUgQ29ycG9yYXRpb24uDQorKg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogxKMgv+kgw/sgOiBjY2FwcA0KKyogzsQgvP4gw/sgOiBjY190aW1lci5jDQorKiDP4LnYzsS8/iA6DQorKiDKtc/WuabE3CA6IGNjYXBwtqjKscb3s6zKsbSmwO0NCisqINf3ICAgINXfIDogDQorKiCw5iAgICCxviA6IFYxLjANCisqIM3qs8nI1cbaIDogMjAxNi0wMi0yNQ0KKyogxuTL/Mu1w/cgOg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyog0N64xLzHwrwgOg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8NCisvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioNCisqINDeuMSx4LrFIDogMDAwMQ0KKyog0N4guMQgyMsgOg0KKyog0N64xMjVxtogOg0KKyog0N64xMTayN0gOg0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKw0KKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKg0KKyogI2luY2x1ZGXH+A0KKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLw0KKyNpbmNsdWRlICJjY19tYWluLmgiDQorI2luY2x1ZGUgImNjX3Byb2MuaCINCisjaW5jbHVkZSAiY2NfY29tLmgiDQorI2luY2x1ZGUgImNjX3RpbWVyLmgiDQorI2luY2x1ZGUgInN0cmluZy5oIg0KK1ZPSUQgICp6Q2NBcHBfSG9va09mZlRpbWVyKFZPSUQgKmFyZykNCit7ICAgICAgICANCisgICAgTVNHX0JVRiB0TXNnQnVmID0gezB9Ow0KKw0KKyAgICB0TXNnQnVmLnNyY19pZCA9IE1PRFVMRV9JRF9DQUxMX0NUUkw7DQorICAgIHRNc2dCdWYudXNNc2dDbWQgPSBaQ0NfSE9PS09GRlRJTUVSX0U7DQorICAgIHRNc2dCdWYudXNEYXRhTGVuID0gMDsNCisgICAgekNjX1NlbmRNc2dUb1N1YigmdE1zZ0J1Zik7IC8qILeiuPjW98/fs8wgKi8gICAgIA0KKyAgICB6dGVfbG9nX2FwcGVuZChfX0ZJTEVfXywgX19MSU5FX18sICJ6dGVfY2NhcHAubG9nIiwiJXMgICB6Q2NBcHBfSG9va09mZlRpbWVyIFxuIixfX0ZVTkNUSU9OX18pOw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorDQorVk9JRCAgKnpDY0FwcF9Ib29rT2ZmX0lkbGVfVGltZXIoVk9JRCAqYXJnKQ0KK3sgICAgICAgIA0KKyAgICBNU0dfQlVGIHRNc2dCdWYgPSB7MH07DQorDQorICAgIHRNc2dCdWYuc3JjX2lkID0gTU9EVUxFX0lEX0NBTExfQ1RSTDsNCisgICAgdE1zZ0J1Zi51c01zZ0NtZCA9IFpDQ19IT09LT0ZGX0lETEVfVElNRVJfRTsNCisgICAgdE1zZ0J1Zi51c0RhdGFMZW4gPSAwOw0KKyAgICB6Q2NfU2VuZE1zZ1RvU3ViKCZ0TXNnQnVmKTsgLyogt6K4+Nb3z9+zzCAqLyAgICAgDQorICAgIHp0ZV9sb2dfYXBwZW5kKF9fRklMRV9fLCBfX0xJTkVfXywgInp0ZV9jY2FwcC5sb2ciLCIlcyAgIHpDY0FwcF9Ib29rT2ZmX0lkbGVfVGltZXIgXG4iLF9fRlVOQ1RJT05fXyk7DQorICAgIHJldHVybiBOVUxMOw0KK30NCisNCitWT0lEICAqekNjQXBwX0R0bWZUaW1lcihWT0lEICphcmcpDQoreyAgICAgICAgIA0KKyAgICBNU0dfQlVGIHRNc2dCdWYgPSB7MH07DQorDQorICAgIHRNc2dCdWYuc3JjX2lkID0gTU9EVUxFX0lEX0NBTExfQ1RSTDsNCisgICAgdE1zZ0J1Zi51c01zZ0NtZCA9IFpDQ19EVE1GVElNRVJfRTsNCisgICAgdE1zZ0J1Zi51c0RhdGFMZW4gPSAwOw0KKyAgICB6Q2NfU2VuZE1zZ1RvU3ViKCZ0TXNnQnVmKTsgLyogt6K4+Nb3z9+zzCAqLyAgICAgDQorICAgIHp0ZV9sb2dfYXBwZW5kKF9fRklMRV9fLCBfX0xJTkVfXywgInp0ZV9jY2FwcC5sb2ciLCIlcyAgIHpDY0FwcF9EdG1mVGltZXIgXG4iLF9fRlVOQ1RJT05fXyk7DQorDQorICAgIHJldHVybiBOVUxMOw0KK30NCitWT0lEICAqekNjQXBwX0J1c3lUb25lVGltZXIoVk9JRCAqYXJnKQ0KK3sgICAgICAgICAgDQorICAgIE1TR19CVUYgdE1zZ0J1ZiA9IHswfTsNCisNCisgICAgdE1zZ0J1Zi5zcmNfaWQgPSBNT0RVTEVfSURfQ0FMTF9DVFJMOw0KKyAgICB0TXNnQnVmLnVzTXNnQ21kID0gWkNDX0JVU1lUT05FVElNRVJfRTsNCisgICAgdE1zZ0J1Zi51c0RhdGFMZW4gPSAwOw0KKyAgICB6Q2NfU2VuZE1zZ1RvU3ViKCZ0TXNnQnVmKTsgLyogt6K4+Nb3z9+zzCAqLyAgICAgDQorICAgIHp0ZV9sb2dfYXBwZW5kKF9fRklMRV9fLCBfX0xJTkVfXywgInp0ZV9jY2FwcC5sb2ciLCIlcyAgIHpDY0FwcF9CdXN5VG9uZVRpbWVyIFxuIixfX0ZVTkNUSU9OX18pOw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorVk9JRCAgKnpDY0FwcF9Ua3lUb25lVGltZXIoVk9JRCAqYXJnKQ0KK3sgICAgICANCisgICAgTVNHX0JVRiB0TXNnQnVmID0gezB9Ow0KKw0KKyAgICB0TXNnQnVmLnNyY19pZCA9IE1PRFVMRV9JRF9DQUxMX0NUUkw7DQorICAgIHRNc2dCdWYudXNNc2dDbWQgPSBaQ0NfVEtZVElNRVJfRTsNCisgICAgdE1zZ0J1Zi51c0RhdGFMZW4gPSAwOw0KKyAgICB6Q2NfU2VuZE1zZ1RvU3ViKCZ0TXNnQnVmKTsgLyogt6K4+Nb3z9+zzCAqLyAgICAgDQorICAgIHp0ZV9sb2dfYXBwZW5kKF9fRklMRV9fLCBfX0xJTkVfXywgInp0ZV9jY2FwcC5sb2ciLCIlcyAgIHpDY0FwcF9Ua3lUb25lVGltZXIgXG4iLF9fRlVOQ1RJT05fXyk7DQorICAgIHJldHVybiBOVUxMOw0KK30NCitWT0lEICAqekNjQXBwX1NzRGlhbFRvbmVUaW1lcihWT0lEICphcmcpDQoreyAgICAgICAgDQorICAgIE1TR19CVUYgdE1zZ0J1ZiA9IHswfTsNCisNCisgICAgdE1zZ0J1Zi5zcmNfaWQgPSBNT0RVTEVfSURfQ0FMTF9DVFJMOw0KKyAgICB0TXNnQnVmLnVzTXNnQ21kID0gWkNDX1NTRElBTFRPTkVUSU1FUl9FOw0KKyAgICB0TXNnQnVmLnVzRGF0YUxlbiA9IDA7DQorICAgIHpDY19TZW5kTXNnVG9TdWIoJnRNc2dCdWYpOyAvKiC3orj41vfP37PMICovICAgICANCisgICAgenRlX2xvZ19hcHBlbmQoX19GSUxFX18sIF9fTElORV9fLCAienRlX2NjYXBwLmxvZyIsIiVzICAgU3NEaWFsVG9uZVRpbWVyIFxuIixfX0ZVTkNUSU9OX18pOw0KKyAgICByZXR1cm4gTlVMTDsNCit9DQorDQo=