ZGlmZiAtLWdpdCBhL3Zlcmlsb2cvZHYvTWFrZWZpbGUgYi92ZXJpbG9nL2R2L01ha2VmaWxlCmluZGV4IGQ4NzIzOGYuLjUwMjhkZDYgMTAwNjQ0Ci0tLSBhL3Zlcmlsb2cvZHYvTWFrZWZpbGUKKysrIGIvdmVyaWxvZy9kdi9NYWtlZmlsZQpAQCAtMTksNyArMTksNyBAQAogLlNVRkZJWEVTOgogLlNJTEVOVDogY2xlYW4gYWxsCiAKLVBBVFRFUk5TID0gaW9fcG9ydHMgbGFfdGVzdDEgbGFfdGVzdDIgd2JfcG9ydCBtcHJqX3N0aW11bHVzCitQQVRURVJOUyA9IGlvX3BvcnRzIGxhX3Rlc3QxIGxhX3Rlc3QyIHdiX3BvcnQgbXByal9zdGltdWx1cyByaXNjX2Jvb3QgdXNlcl9yaXNjX2Jvb3QKIAogYWxsOiAgJHtQQVRURVJOU30KIAlmb3IgaSBpbiAke1BBVFRFUk5TfTsgZG8gXApkaWZmIC0tZ2l0IGEvdmVyaWxvZy9kdi9pb19wb3J0cy9NYWtlZmlsZSBiL3Zlcmlsb2cvZHYvaW9fcG9ydHMvTWFrZWZpbGUKaW5kZXggMGVmMDc5ZS4uYmFlYjM3MiAxMDA2NDQKLS0tIGEvdmVyaWxvZy9kdi9pb19wb3J0cy9NYWtlZmlsZQorKysgYi92ZXJpbG9nL2R2L2lvX3BvcnRzL01ha2VmaWxlCkBAIC0yNSw3ICsyNSw5IEBACiAjIyBVc2VyIFByb2plY3QgUG9pbnRlcnMKIFVQUkpfVkVSSUxPR19QQVRIID89IC4uLy4uLy4uL3Zlcmlsb2cKIFVQUkpfUlRMX1BBVEggPSAkKFVQUkpfVkVSSUxPR19QQVRIKS9ydGwKLVVQUkpfQkVIQVZJT1VSQUxfTU9ERUxTID0gLi4vCitVUFJKX0JFSEFWSU9VUkFMX01PREVMUyA9IC4uL21vZGVsCitVUFJKX0lOQ0xVREVfUEFUSDEgPSAkKFVQUkpfUlRMX1BBVEgpL3N5bnRhY29yZS9zY3IxL3NyYy9pbmNsdWRlcworVVBSSl9JTkNMVURFX1BBVEgyID0gJChVUFJKX1JUTF9QQVRIKS9zZHJhbV9jdHJsL3NyYy9kZWZzCiAKICMjIFJJU0NWIEdDQyAKIEdDQ19QQVRIPz0vZWYvYXBwcy9iaW4KQEAgLTQzLDExICs0NSwxNCBAQAogCiBoZXg6ICAke1BBVFRFUk46PS5oZXh9CiAKK3Z2cDogICR7UEFUVEVSTjo9LnZ2cH0KKwogJS52dnA6ICVfdGIudiAlLmhleAogaWZlcSAoJChTSU0pLFJUTCkKLQlpdmVyaWxvZyAtREZVTkNUSU9OQUwgLURTSU0gLUkgJChQREtfUEFUSCkgXAorCWl2ZXJpbG9nIC1nMjAwNS1zdiAtREZVTkNUSU9OQUwgLURTSU0gLUkgJChQREtfUEFUSCkgXAogCS1JICQoQ0FSQVZFTF9CRUhBVklPVVJBTF9NT0RFTFMpIC1JICQoQ0FSQVZFTF9SVExfUEFUSCkgXAogCS1JICQoVVBSSl9CRUhBVklPVVJBTF9NT0RFTFMpICAgIC1JICQoVVBSSl9SVExfUEFUSCkgXAorCS1JICQoVVBSSl9JTkNMVURFX1BBVEgxKSAgICAtSSAkKFVQUkpfSU5DTFVERV9QQVRIMikgXAogCSQ8IC1vICRAIAogZWxzZSAgCiAJaXZlcmlsb2cgLURGVU5DVElPTkFMIC1EU0lNIC1ER0wgLUkgJChQREtfUEFUSCkgXApkaWZmIC0tZ2l0IGEvdmVyaWxvZy9kdi9pb19wb3J0cy9pb19wb3J0c190Yi52IGIvdmVyaWxvZy9kdi9pb19wb3J0cy9pb19wb3J0c190Yi52CmluZGV4IGY3NjI4YmMuLjVjY2EwYzggMTAwNjQ0Ci0tLSBhL3Zlcmlsb2cvZHYvaW9fcG9ydHMvaW9fcG9ydHNfdGIudgorKysgYi92ZXJpbG9nL2R2L2lvX3BvcnRzL2lvX3BvcnRzX3RiLnYKQEAgLTQ5LDggKzQ5LDEwIEBACiAJZW5kCiAKIAlpbml0aWFsIGJlZ2luCi0JCSRkdW1wZmlsZSgiaW9fcG9ydHMudmNkIik7Ci0JCSRkdW1wdmFycygwLCBpb19wb3J0c190Yik7CisJCWBpZmRlZiBXRkRVTVAKKwkJICAgICRkdW1wZmlsZSgiaW9fcG9ydHMudmNkIik7CisJCSAgICAkZHVtcHZhcnMoMCwgaW9fcG9ydHNfdGIpOworCSAgICAgICAgYGVuZGlmCiAKIAkJLy8gUmVwZWF0IGN5Y2xlcyBvZiAxMDAwIGNsb2NrIGVkZ2VzIGFzIG5lZWRlZCB0byBjb21wbGV0ZSB0ZXN0YmVuY2gKIAkJcmVwZWF0ICgyNSkgYmVnaW4KZGlmZiAtLWdpdCBhL3Zlcmlsb2cvZHYvaW9fcG9ydHMvbWdtdF9jb3JlLnN2IGIvdmVyaWxvZy9kdi9pb19wb3J0cy9tZ210X2NvcmUuc3YKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGViZWRmMAotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvZHYvaW9fcG9ydHMvbWdtdF9jb3JlLnN2CkBAIC0wLDAgKzEsMTUzIEBACisvLyBTUERYLUZpbGVDb3B5cmlnaHRUZXh0OiAyMDIwIEVmYWJsZXNzIENvcnBvcmF0aW9uCisvLworLy8gTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisvLyB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuCisvLyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKy8vCisvLyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAorLy8KKy8vIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKy8vIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisvLyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKy8vIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKy8vIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorLy8gU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKworYGRlZmF1bHRfbmV0dHlwZSBub25lCittb2R1bGUgbWdtdF9jb3JlICgKK2BpZmRlZiBVU0VfUE9XRVJfUElOUworCWlub3V0IFZQV1IsCSAgIAorCWlub3V0IFZHTkQsCitgZW5kaWYKKwkvLyBHUElPIChkZWRpY2F0ZWQgcGFkKQorCW91dHB1dCBncGlvX291dF9wYWQsCQkvLyBDb25uZWN0IHRvIG91dCBvbiBncGlvIHBhZAorCWlucHV0ICBncGlvX2luX3BhZCwJCS8vIENvbm5lY3QgdG8gaW4gb24gZ3BpbyBwYWQKKwlvdXRwdXQgZ3Bpb19tb2RlMF9wYWQsCQkvLyBDb25uZWN0IHRvIGRtWzBdIG9uIGdwaW8gcGFkCisJb3V0cHV0IGdwaW9fbW9kZTFfcGFkLAkJLy8gQ29ubmVjdCB0byBkbVsyXSBvbiBncGlvIHBhZAorCW91dHB1dCBncGlvX291dGVuYl9wYWQsCQkvLyBDb25uZWN0IHRvIG9lX24gb24gZ3BpbyBwYWQKKwlvdXRwdXQgZ3Bpb19pbmVuYl9wYWQsCQkvLyBDb25uZWN0IHRvIGlucF9kaXMgb24gZ3BpbyBwYWQKKwkvLyBGbGFzaCBtZW1vcnkgY29udHJvbCAoU1BJIG1hc3RlcikKKwlvdXRwdXQgZmxhc2hfY3NiLAorCW91dHB1dCBmbGFzaF9jbGssCisJb3V0cHV0IGZsYXNoX2NzYl9vZWIsCisJb3V0cHV0IGZsYXNoX2Nsa19vZWIsCisJb3V0cHV0IGZsYXNoX2lvMF9vZWIsCisJb3V0cHV0IGZsYXNoX2lvMV9vZWIsCisJb3V0cHV0IGZsYXNoX2lvMl9vZWIsCS8vIHRocm91Z2ggR1BJTyAzNgorCW91dHB1dCBmbGFzaF9pbzNfb2ViLAkvLyB0aHJvdWdoIEdQSU8gMzcKKwlvdXRwdXQgZmxhc2hfY3NiX2llYiwKKwlvdXRwdXQgZmxhc2hfY2xrX2llYiwKKwlvdXRwdXQgZmxhc2hfaW8wX2llYiwKKwlvdXRwdXQgZmxhc2hfaW8xX2llYiwKKwlvdXRwdXQgZmxhc2hfaW8wX2RvLAorCW91dHB1dCBmbGFzaF9pbzFfZG8sCisJb3V0cHV0IGZsYXNoX2lvMl9kbywJLy8gdGhyb3VnaCBHUElPIDM2CisJb3V0cHV0IGZsYXNoX2lvM19kbywJLy8gdGhyb3VnaCBHUElPIDM3CisJaW5wdXQgZmxhc2hfaW8wX2RpLAorCWlucHV0IGZsYXNoX2lvMV9kaSwKKwkvLyBNYXN0ZXIgcmVzZXQKKwlpbnB1dCByZXNldGIsCisJaW5wdXQgcG9yYiwKKwkvLyBDbG9ja2luZworCWlucHV0IGNsb2NrLAorCS8vIExBIHNpZ25hbHMKKyAgICAJaW5wdXQgIFsxMjc6MF0gbGFfaW5wdXQsICAgICAgICAgICAJLy8gRnJvbSBVc2VyIFByb2plY3QgdG8gY3B1CisgICAgCW91dHB1dCBbMTI3OjBdIGxhX291dHB1dCwgICAgICAgICAgCS8vIEZyb20gQ1BVIHRvIFVzZXIgUHJvamVjdAorICAgIAlvdXRwdXQgWzEyNzowXSBsYV9vZW5iLCAgICAgICAgICAgICAgICAgLy8gTEEgb3V0cHV0IGVuYWJsZSAgCisgICAgCW91dHB1dCBbMTI3OjBdIGxhX2llbmEsICAgICAgICAgICAgICAgICAvLyBMQSBpbnB1dCBlbmFibGUgIAorCS8vIEhvdXNla2VlcGluZyBTUEkKKwlvdXRwdXQgc2RvX291dCwKKwlvdXRwdXQgc2RvX291dGVuYiwKKwkvLyBKVEFHCisJb3V0cHV0IGp0YWdfb3V0LAorCW91dHB1dCBqdGFnX291dGVuYiwKKwkvLyBVc2VyIFByb2plY3QgQ29udHJvbCBTaWduYWxzCisJaW5wdXQgW2BNUFJKX0lPX1BBRFMtMTowXSBtZ210X2luX2RhdGEsCisJb3V0cHV0IFtgTVBSSl9JT19QQURTLTE6MF0gbWdtdF9vdXRfZGF0YSwKKwlvdXRwdXQgW2BNUFJKX1BXUl9QQURTLTE6MF0gcHdyX2N0cmxfb3V0LAorCWlucHV0IG1wcmpfdmNjX3B3cmdvb2QsCisJaW5wdXQgbXByajJfdmNjX3B3cmdvb2QsCisJaW5wdXQgbXByal92ZGRfcHdyZ29vZCwKKwlpbnB1dCBtcHJqMl92ZGRfcHdyZ29vZCwKKwlvdXRwdXQgbXByal9pb19sb2FkZXJfcmVzZXRuLAorCW91dHB1dCBtcHJqX2lvX2xvYWRlcl9jbG9jaywKKwlvdXRwdXQgbXByal9pb19sb2FkZXJfZGF0YV8xLAorCW91dHB1dCBtcHJqX2lvX2xvYWRlcl9kYXRhXzIsCisJLy8gV0IgTUkgQSAoVXNlciBwcm9qZWN0KQorICAgIAlpbnB1dCBtcHJqX2Fja19pLAorCWlucHV0IFszMTowXSBtcHJqX2RhdF9pLAorICAgIAlvdXRwdXQgbXByal9jeWNfbywKKwlvdXRwdXQgbXByal9zdGJfbywKKwlvdXRwdXQgbXByal93ZV9vLAorCW91dHB1dCBbMzowXSBtcHJqX3NlbF9vLAorCW91dHB1dCBbMzE6MF0gbXByal9hZHJfbywKKwlvdXRwdXQgWzMxOjBdIG1wcmpfZGF0X28sCisJCisgICAgCW91dHB1dCBjb3JlX2NsaywKKyAgICAJb3V0cHV0IHVzZXJfY2xrLAorICAgIAlvdXRwdXQgY29yZV9yc3RuLAorCWlucHV0IFsyOjBdIHVzZXJfaXJxLAorCW91dHB1dCBbMjowXSB1c2VyX2lycV9lbmEsCisKKwkvLyBNZXRhbCBwcm9ncmFtbWVkIHVzZXIgSUQgLyBtYXNrIHJldmlzaW9uIHZlY3RvcgorCWlucHV0IFszMTowXSBtYXNrX3JldiwKKwkKKyAgICAvLyBNR01UIGFyZWEgUi9XIGludGVyZmFjZSBmb3IgbWdtdCBSQU0KKyAgICBvdXRwdXQgW2BSQU1fQkxPQ0tTLTE6MF0gbWdtdF9lbmEsIAorICAgIG91dHB1dCBbKGBSQU1fQkxPQ0tTKjQpLTE6MF0gbWdtdF93ZW5fbWFzaywKKyAgICBvdXRwdXQgW2BSQU1fQkxPQ0tTLTE6MF0gbWdtdF93ZW4sCisgICAgb3V0cHV0IFs3OjBdIG1nbXRfYWRkciwKKyAgICBvdXRwdXQgWzMxOjBdIG1nbXRfd2RhdGEsCisgICAgaW5wdXQgIFsoYFJBTV9CTE9DS1MqMzIpLTE6MF0gbWdtdF9yZGF0YSwKKworICAgIC8vIE1HTVQgYXJlYSBSTyBpbnRlcmZhY2UgZm9yIHVzZXIgUkFNIAorICAgIG91dHB1dCBtZ210X2VuYV9ybywKKyAgICBvdXRwdXQgWzc6MF0gbWdtdF9hZGRyX3JvLAorICAgIGlucHV0ICBbMzE6MF0gbWdtdF9yZGF0YV9ybworKTsKKyAgICAJd2lyZSBleHRfY2xrX3NlbDsKKyAgICAJd2lyZSBwbGxfY2xrLCBwbGxfY2xrOTA7CisgICAgCXdpcmUgZXh0X3Jlc2V0OworCXdpcmUgaGtfY29ubmVjdDsKKwl3aXJlIHRyYXA7CisJd2lyZSBpcnFfc3BpOworCisJLy8gSlRBRyAodG8gYmUgaW1wbGVtZW50ZWQpCisJd2lyZSBqdGFnX291dDsKKwl3aXJlIGp0YWdfb3V0X3ByZSA9IDEnYjA7CisJd2lyZSBqdGFnX291dGVuYiA9IDEnYjE7CisJd2lyZSBqdGFnX29lbmJfc3RhdGU7CisKKwkvLyBTRE8KKwl3aXJlIHNkb19vdXQ7CisJd2lyZSBzZG9fb3V0X3ByZTsKKwl3aXJlIHNkb19vZW5iX3N0YXRlOworCisJLy8gSG91c2VrZWVwaW5nIFNQSSB2ZWN0b3JzCisJd2lyZSBbNDowXSAgc3BpX3BsbF9kaXY7CisJd2lyZSBbMjowXSAgc3BpX3BsbF9zZWw7CisJd2lyZSBbMjowXSAgc3BpX3BsbDkwX3NlbDsKKwl3aXJlIFsyNTowXSBzcGlfcGxsX3RyaW07CisKKwkvLyBPdmVycmlkZSBkZWZhdWx0IGZ1bmN0aW9uIGZvciBTRE8gYW5kIEpUQUcgb3V0cHV0cyBpZiBwdXJwb3NlbHkKKwkvLyBzZXQgZm9yIG92ZXJyaWRlIGJ5IHRoZSBtYW5hZ2VtZW50IFNvQy4KKwlhc3NpZ24gc2RvX291dCA9IChzZG9fb2VuYl9zdGF0ZSA9PSAxJ2IwKSA/IG1nbXRfb3V0X2RhdGFbMV0gOiBzZG9fb3V0X3ByZTsKKwlhc3NpZ24ganRhZ19vdXQgPSAoanRhZ19vZW5iX3N0YXRlID09IDEnYjApID8gbWdtdF9vdXRfZGF0YVswXSA6IGp0YWdfb3V0X3ByZTsKKworCWNhcmF2ZWxfY2xvY2tpbmcgY2xvY2tpbmcxKAorCQkuZXh0X2Nsa19zZWwoZXh0X2Nsa19zZWwpLAorCQkuZXh0X2NsayhjbG9jayksCisJCS5wbGxfY2xrKHBsbF9jbGspLAorCQkucGxsX2NsazkwKHBsbF9jbGs5MCksCisJCS5yZXNldGIocmVzZXRiKSwgCisJCS5zZWwoc3BpX3BsbF9zZWwpLAorCQkuc2VsMihzcGlfcGxsOTBfc2VsKSwKKwkJLmV4dF9yZXNldChleHRfcmVzZXQpLAkvLyBGcm9tIGhvdXNla2VlcGluZyBTUEkKKwkJLmNvcmVfY2xrKGNvcmVfY2xrKSwKKwkJLnVzZXJfY2xrKHVzZXJfY2xrKSwKKwkJLnJlc2V0Yl9zeW5jKGNvcmVfcnN0bikKKwkpOworCisKK2VuZG1vZHVsZQorYGRlZmF1bHRfbmV0dHlwZSB3aXJlCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L2xhX3Rlc3QxL01ha2VmaWxlIGIvdmVyaWxvZy9kdi9sYV90ZXN0MS9NYWtlZmlsZQppbmRleCBiMjMwNzVkLi44OTcxNTE4IDEwMDY0NAotLS0gYS92ZXJpbG9nL2R2L2xhX3Rlc3QxL01ha2VmaWxlCisrKyBiL3Zlcmlsb2cvZHYvbGFfdGVzdDEvTWFrZWZpbGUKQEAgLTI1LDcgKzI1LDkgQEAKICMjIFVzZXIgUHJvamVjdCBQb2ludGVycwogVVBSSl9WRVJJTE9HX1BBVEggPz0gLi4vLi4vLi4vdmVyaWxvZwogVVBSSl9SVExfUEFUSCA9ICQoVVBSSl9WRVJJTE9HX1BBVEgpL3J0bAotVVBSSl9CRUhBVklPVVJBTF9NT0RFTFMgPSAuLi8KK1VQUkpfQkVIQVZJT1VSQUxfTU9ERUxTID0gLi4vbW9kZWwKK1VQUkpfSU5DTFVERV9QQVRIMSA9ICQoVVBSSl9SVExfUEFUSCkvc3ludGFjb3JlL3NjcjEvc3JjL2luY2x1ZGVzCitVUFJKX0lOQ0xVREVfUEFUSDIgPSAkKFVQUkpfUlRMX1BBVEgpL3NkcmFtX2N0cmwvc3JjL2RlZnMKIAogIyMgUklTQ1YgR0NDIAogR0NDX1BBVEg/PS9lZi9hcHBzL2JpbgpAQCAtNDMsMTEgKzQ1LDE0IEBACiAKIGhleDogICR7UEFUVEVSTjo9LmhleH0KIAordnZwOiAgJHtQQVRURVJOOj0udnZwfQorCiAlLnZ2cDogJV90Yi52ICUuaGV4CiBpZmVxICgkKFNJTSksUlRMKQotCWl2ZXJpbG9nIC1ERlVOQ1RJT05BTCAtRFNJTSAtSSAkKFBES19QQVRIKSBcCisJaXZlcmlsb2cgLWcyMDA1LXN2IC1ERlVOQ1RJT05BTCAtRFNJTSAtSSAkKFBES19QQVRIKSBcCiAJLUkgJChDQVJBVkVMX0JFSEFWSU9VUkFMX01PREVMUykgLUkgJChDQVJBVkVMX1JUTF9QQVRIKSBcCiAJLUkgJChVUFJKX0JFSEFWSU9VUkFMX01PREVMUykgICAgLUkgJChVUFJKX1JUTF9QQVRIKSBcCisJLUkgJChVUFJKX0lOQ0xVREVfUEFUSDEpICAgIC1JICQoVVBSSl9JTkNMVURFX1BBVEgyKSBcCiAJJDwgLW8gJEAgCiBlbHNlICAKIAlpdmVyaWxvZyAtREZVTkNUSU9OQUwgLURTSU0gLURHTCAtSSAkKFBES19QQVRIKSBcCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L2xhX3Rlc3QyL01ha2VmaWxlIGIvdmVyaWxvZy9kdi9sYV90ZXN0Mi9NYWtlZmlsZQppbmRleCAxNGU0OGZjLi41YjFlNmRkIDEwMDY0NAotLS0gYS92ZXJpbG9nL2R2L2xhX3Rlc3QyL01ha2VmaWxlCisrKyBiL3Zlcmlsb2cvZHYvbGFfdGVzdDIvTWFrZWZpbGUKQEAgLTI1LDcgKzI1LDkgQEAKICMjIFVzZXIgUHJvamVjdCBQb2ludGVycwogVVBSSl9WRVJJTE9HX1BBVEggPz0gLi4vLi4vLi4vdmVyaWxvZwogVVBSSl9SVExfUEFUSCA9ICQoVVBSSl9WRVJJTE9HX1BBVEgpL3J0bAotVVBSSl9CRUhBVklPVVJBTF9NT0RFTFMgPSAuLi8KK1VQUkpfQkVIQVZJT1VSQUxfTU9ERUxTID0gLi4vbW9kZWwKK1VQUkpfSU5DTFVERV9QQVRIMSA9ICQoVVBSSl9SVExfUEFUSCkvc3ludGFjb3JlL3NjcjEvc3JjL2luY2x1ZGVzCitVUFJKX0lOQ0xVREVfUEFUSDIgPSAkKFVQUkpfUlRMX1BBVEgpL3NkcmFtX2N0cmwvc3JjL2RlZnMKIAogIyMgUklTQ1YgR0NDIAogR0NDX1BBVEg/PS9lZi9hcHBzL2JpbgpAQCAtNDMsMTEgKzQ1LDE0IEBACiAKIGhleDogICR7UEFUVEVSTjo9LmhleH0KIAordnZwOiAgJHtQQVRURVJOOj0udnZwfQorCiAlLnZ2cDogJV90Yi52ICUuaGV4CiBpZmVxICgkKFNJTSksUlRMKQotCWl2ZXJpbG9nIC1ERlVOQ1RJT05BTCAtRFNJTSAtSSAkKFBES19QQVRIKSBcCisJaXZlcmlsb2cgLWcyMDA1LXN2IC1ERlVOQ1RJT05BTCAtRFNJTSAtSSAkKFBES19QQVRIKSBcCiAJLUkgJChDQVJBVkVMX0JFSEFWSU9VUkFMX01PREVMUykgLUkgJChDQVJBVkVMX1JUTF9QQVRIKSBcCiAJLUkgJChVUFJKX0JFSEFWSU9VUkFMX01PREVMUykgICAgLUkgJChVUFJKX1JUTF9QQVRIKSBcCisJLUkgJChVUFJKX0lOQ0xVREVfUEFUSDEpICAgIC1JICQoVVBSSl9JTkNMVURFX1BBVEgyKSBcCiAJJDwgLW8gJEAgCiBlbHNlICAKIAlpdmVyaWxvZyAtREZVTkNUSU9OQUwgLURTSU0gLURHTCAtSSAkKFBES19QQVRIKSBcCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L21vZGVsL210NDhsYzhtOGEyLnYgYi92ZXJpbG9nL2R2L21vZGVsL210NDhsYzhtOGEyLnYKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uYWRkMWMzNgotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvZHYvbW9kZWwvbXQ0OGxjOG04YTIudgpAQCAtMCwwICsxLDk2NCBAQAorLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoKKyogICAgRmlsZSBOYW1lOiAgTVQ0OExDOE04QTIuViAgCisqICAgICAgVmVyc2lvbjogIDAuMGYKKyogICAgICAgICBEYXRlOiAgSnVseSA4dGgsIDE5OTkKKyogICAgICAgIE1vZGVsOiAgQlVTIEZ1bmN0aW9uYWwKKyogICAgU2ltdWxhdG9yOiAgTW9kZWwgVGVjaG5vbG9neSAoUEMgdmVyc2lvbiA1LjJlIFBFKQorKgorKiBEZXBlbmRlbmNpZXM6ICBOb25lCisqCisqICAgICAgIEF1dGhvcjogIFNvbiBQLiBIdXluaAorKiAgICAgICAgRW1haWw6ICBzcGh1eW5oQG1pY3Jvbi5jb20KKyogICAgICAgIFBob25lOiAgKDIwOCkgMzY4LTM4MjUKKyogICAgICBDb21wYW55OiAgTWljcm9uIFRlY2hub2xvZ3ksIEluYy4KKyogICAgICAgIE1vZGVsOiAgTVQ0OExDOE0xNkEyICgyTWVnIHggOCB4IDQgQmFua3MpCisqCisqICBEZXNjcmlwdGlvbjogIE1pY3JvbiAxMjhNYiBTRFJBTSBWZXJpbG9nIG1vZGVsCisqCisqICAgTGltaXRhdGlvbjogIC0gRG9lc24ndCBjaGVjayBmb3IgNDA5NiBjeWNsZSByZWZyZXNoCisqCisqICAgICAgICAgTm90ZTogIC0gU2V0IHNpbXVsYXRvciByZXNvbHV0aW9uIHRvICJwcyIgYWNjdXJhY3kKKyogICAgICAgICAgICAgICAgLSBTZXQgRGVidWcgPSAwIHRvIGRpc2FibGUgJGRpc3BsYXkgbWVzc2FnZXMKKyoKKyogICBEaXNjbGFpbWVyOiAgVEhFU0UgREVTSUdOUyBBUkUgUFJPVklERUQgIkFTIElTIiBXSVRIIE5PIFdBUlJBTlRZIAorKiAgICAgICAgICAgICAgICBXSEFUU09FVkVSIEFORCBNSUNST04gU1BFQ0lGSUNBTExZIERJU0NMQUlNUyBBTlkgCisqICAgICAgICAgICAgICAgIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFksIEZJVE5FU1MgRk9SCisqICAgICAgICAgICAgICAgIEEgUEFSVElDVUxBUiBQVVJQT1NFLCBPUiBBR0FJTlNUIElORlJJTkdFTUVOVC4KKyoKKyogICAgICAgICAgICAgICAgQ29weXJpZ2h0IKkgMTk5OCBNaWNyb24gU2VtaWNvbmR1Y3RvciBQcm9kdWN0cywgSW5jLgorKiAgICAgICAgICAgICAgICBBbGwgcmlnaHRzIHJlc2VhcnZlZAorKgorKiBSZXYgICBBdXRob3IgICAgICAgICAgUGhvbmUgICAgICAgICBEYXRlICAgICAgICBDaGFuZ2VzCisqIC0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gIC0tLS0tLS0tLS0gIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKiAwLjBmICBTb24gSHV5bmggICAgICAgMjA4LTM2OC0zODI1ICAwNy8wOC8xOTk5ICAtIEZpeCB0V1IgPSAxIENsayArIDcuNSBucyAoQXV0bykKKyogICAgICAgTWljcm9uIFRlY2hub2xvZ3kgSW5jLiAgICAgICAgICAgICAgICAgICAgLSBGaXggdFdSID0gMTUgbnMgKE1hbnVhbCkKKyogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSBGaXggdFJQIChBdXRvcHJlY2hhcmdlIHRvIEF1dG9SZWZyZXNoKQorKgorKiAwLjBhICBTb24gSHV5bmggICAgICAgMjA4LTM2OC0zODI1ICAwNS8xMy8xOTk4ICAtIEZpcnN0IFJlbGVhc2UgKGZyb20gNjRNYiByZXYgMC4wZSkKKyogICAgICAgTWljcm9uIFRlY2hub2xvZ3kgSW5jLgorKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKworYHRpbWVzY2FsZSAxbnMgLyAxMDBwcworCittb2R1bGUgbXQ0OGxjOG04YTIgKERxLCBBZGRyLCBCYSwgQ2xrLCBDa2UsIENzX24sIFJhc19uLCBDYXNfbiwgV2VfbiwgRHFtKTsKKworICAgIHBhcmFtZXRlciBhZGRyX2JpdHMgPSAgICAgIDEyOworICAgIHBhcmFtZXRlciBkYXRhX2JpdHMgPSAgICAgIDg7CisgICAgcGFyYW1ldGVyIGNvbF9iaXRzICA9ICAgICAgIDk7CisgICAgcGFyYW1ldGVyIG1lbV9zaXplcyA9IDIwOTcxNTE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIDIgTWVnCisKKyAgICBpbm91dCAgICAgW2RhdGFfYml0cyAtIDEgOiAwXSBEcTsKKyAgICBpbnB1dCAgICAgW2FkZHJfYml0cyAtIDEgOiAwXSBBZGRyOworICAgIGlucHV0ICAgICAgICAgICAgICAgICBbMSA6IDBdIEJhOworICAgIGlucHV0ICAgICAgICAgICAgICAgICAgICAgICAgIENsazsKKyAgICBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICBDa2U7CisgICAgaW5wdXQgICAgICAgICAgICAgICAgICAgICAgICAgQ3NfbjsKKyAgICBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICBSYXNfbjsKKyAgICBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICBDYXNfbjsKKyAgICBpbnB1dCAgICAgICAgICAgICAgICAgICAgICAgICBXZV9uOworICAgIGlucHV0ICAgICAgICAgICAgICAgICBbMCA6IDBdIERxbTsKKworICAgIHJlZyAgICAgICBbZGF0YV9iaXRzIC0gMSA6IDBdIEJhbmswIFswIDogbWVtX3NpemVzXTsKKyAgICByZWcgICAgICAgW2RhdGFfYml0cyAtIDEgOiAwXSBCYW5rMSBbMCA6IG1lbV9zaXplc107CisgICAgcmVnICAgICAgIFtkYXRhX2JpdHMgLSAxIDogMF0gQmFuazIgWzAgOiBtZW1fc2l6ZXNdOworICAgIHJlZyAgICAgICBbZGF0YV9iaXRzIC0gMSA6IDBdIEJhbmszIFswIDogbWVtX3NpemVzXTsKKworICAgIHJlZyAgICAgICAgICAgICAgICAgICBbMSA6IDBdIEJhbmtfYWRkciBbMCA6IDNdOyAgICAgICAgICAgICAgICAvLyBCYW5rIEFkZHJlc3MgUGlwZWxpbmUKKyAgICByZWcgICAgICAgIFtjb2xfYml0cyAtIDEgOiAwXSBDb2xfYWRkciBbMCA6IDNdOyAgICAgICAgICAgICAgICAgLy8gQ29sdW1uIEFkZHJlc3MgUGlwZWxpbmUKKyAgICByZWcgICAgICAgICAgICAgICAgICAgWzMgOiAwXSBDb21tYW5kIFswIDogM107ICAgICAgICAgICAgICAgICAgLy8gQ29tbWFuZCBPcGVyYXRpb24gUGlwZWxpbmUKKyAgICByZWcgICAgICAgICAgICAgICAgICAgWzAgOiAwXSBEcW1fcmVnMCwgRHFtX3JlZzE7ICAgICAgICAgICAgICAgLy8gRFFNIE9wZXJhdGlvbiBQaXBlbGluZQorICAgIHJlZyAgICAgICBbYWRkcl9iaXRzIC0gMSA6IDBdIEIwX3Jvd19hZGRyLCBCMV9yb3dfYWRkciwgQjJfcm93X2FkZHIsIEIzX3Jvd19hZGRyOworCisgICAgcmVnICAgICAgIFthZGRyX2JpdHMgLSAxIDogMF0gTW9kZV9yZWc7CisgICAgcmVnICAgICAgIFtkYXRhX2JpdHMgLSAxIDogMF0gRHFfcmVnLCBEcV9kcW07CisgICAgcmVnICAgICAgICBbY29sX2JpdHMgLSAxIDogMF0gQ29sX3RlbXAsIEJ1cnN0X2NvdW50ZXI7CisKKyAgICByZWcgICAgICAgICAgICAgICAgICAgICAgICAgICBBY3RfYjAsIEFjdF9iMSwgQWN0X2IyLCBBY3RfYjM7ICAgLy8gQmFuayBBY3RpdmF0ZQorICAgIHJlZyAgICAgICAgICAgICAgICAgICAgICAgICAgIFBjX2IwLCBQY19iMSwgUGNfYjIsIFBjX2IzOyAgICAgICAvLyBCYW5rIFByZWNoYXJnZQorCisgICAgcmVnICAgICAgICAgICAgICAgICAgIFsxIDogMF0gQmFua19wcmVjaGFyZ2UgICAgIFswIDogM107ICAgICAgIC8vIFByZWNoYXJnZSBDb21tYW5kCisgICAgcmVnICAgICAgICAgICAgICAgICAgICAgICAgICAgQTEwX3ByZWNoYXJnZSAgICAgIFswIDogM107ICAgICAgIC8vIEFkZHJbMTBdID0gMSAoQWxsIGJhbmtzKQorICAgIHJlZyAgICAgICAgICAgICAgICAgICAgICAgICAgIEF1dG9fcHJlY2hhcmdlICAgICBbMCA6IDNdOyAgICAgICAvLyBSVyBBdXRvUHJlY2hhcmdlIChCYW5rKQorICAgIHJlZyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJlYWRfcHJlY2hhcmdlICAgICBbMCA6IDNdOyAgICAgICAvLyBSICBBdXRvUHJlY2hhcmdlCisgICAgcmVnICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGVfcHJlY2hhcmdlICAgIFswIDogM107ICAgICAgIC8vICBXIEF1dG9QcmVjaGFyZ2UKKyAgICBpbnRlZ2VyICAgICAgICAgICAgICAgICAgICAgICBDb3VudF9wcmVjaGFyZ2UgICAgWzAgOiAzXTsgICAgICAgLy8gUlcgQXV0b1ByZWNoYXJnZSAoQ291bnRlcikKKyAgICByZWcgICAgICAgICAgICAgICAgICAgICAgICAgICBSV19pbnRlcnJ1cHRfcmVhZCAgWzAgOiAzXTsgICAgICAgLy8gUlcgSW50ZXJydXB0IFJlYWQgd2l0aCBBdXRvIFByZWNoYXJnZQorICAgIHJlZyAgICAgICAgICAgICAgICAgICAgICAgICAgIFJXX2ludGVycnVwdF93cml0ZSBbMCA6IDNdOyAgICAgICAvLyBSVyBJbnRlcnJ1cHQgV3JpdGUgd2l0aCBBdXRvIFByZWNoYXJnZQorCisgICAgcmVnICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YV9pbl9lbmFibGU7CisgICAgcmVnICAgICAgICAgICAgICAgICAgICAgICAgICAgRGF0YV9vdXRfZW5hYmxlOworCisgICAgcmVnICAgICAgICAgICAgICAgICAgIFsxIDogMF0gQmFuaywgUHJldmlvdXNfYmFuazsKKyAgICByZWcgICAgICAgW2FkZHJfYml0cyAtIDEgOiAwXSBSb3c7CisgICAgcmVnICAgICAgICBbY29sX2JpdHMgLSAxIDogMF0gQ29sLCBDb2xfYnJzdDsKKworICAgIC8vIEludGVybmFsIHN5c3RlbSBjbG9jaworICAgIHJlZyAgICAgICAgICAgICAgICAgICAgICAgICAgIENrZVosIFN5c19jbGs7CisKKyAgICAvLyBDb21tYW5kcyBEZWNvZGUKKyAgICB3aXJlICAgICAgQWN0aXZlX2VuYWJsZSAgICA9IH5Dc19uICYgflJhc19uICYgIENhc19uICYgIFdlX247CisgICAgd2lyZSAgICAgIEFyZWZfZW5hYmxlICAgICAgPSB+Q3NfbiAmIH5SYXNfbiAmIH5DYXNfbiAmICBXZV9uOworICAgIHdpcmUgICAgICBCdXJzdF90ZXJtICAgICAgID0gfkNzX24gJiAgUmFzX24gJiAgQ2FzX24gJiB+V2VfbjsKKyAgICB3aXJlICAgICAgTW9kZV9yZWdfZW5hYmxlICA9IH5Dc19uICYgflJhc19uICYgfkNhc19uICYgfldlX247CisgICAgd2lyZSAgICAgIFByZWNoX2VuYWJsZSAgICAgPSB+Q3NfbiAmIH5SYXNfbiAmICBDYXNfbiAmIH5XZV9uOworICAgIHdpcmUgICAgICBSZWFkX2VuYWJsZSAgICAgID0gfkNzX24gJiAgUmFzX24gJiB+Q2FzX24gJiAgV2VfbjsKKyAgICB3aXJlICAgICAgV3JpdGVfZW5hYmxlICAgICA9IH5Dc19uICYgIFJhc19uICYgfkNhc19uICYgfldlX247CisKKyAgICAvLyBCdXJzdCBMZW5ndGggRGVjb2RlCisgICAgd2lyZSAgICAgIEJ1cnN0X2xlbmd0aF8xICAgPSB+TW9kZV9yZWdbMl0gJiB+TW9kZV9yZWdbMV0gJiB+TW9kZV9yZWdbMF07CisgICAgd2lyZSAgICAgIEJ1cnN0X2xlbmd0aF8yICAgPSB+TW9kZV9yZWdbMl0gJiB+TW9kZV9yZWdbMV0gJiAgTW9kZV9yZWdbMF07CisgICAgd2lyZSAgICAgIEJ1cnN0X2xlbmd0aF80ICAgPSB+TW9kZV9yZWdbMl0gJiAgTW9kZV9yZWdbMV0gJiB+TW9kZV9yZWdbMF07CisgICAgd2lyZSAgICAgIEJ1cnN0X2xlbmd0aF84ICAgPSB+TW9kZV9yZWdbMl0gJiAgTW9kZV9yZWdbMV0gJiAgTW9kZV9yZWdbMF07CisKKyAgICAvLyBDQVMgTGF0ZW5jeSBEZWNvZGUKKyAgICB3aXJlICAgICAgQ2FzX2xhdGVuY3lfMiAgICA9IH5Nb2RlX3JlZ1s2XSAmICBNb2RlX3JlZ1s1XSAmIH5Nb2RlX3JlZ1s0XTsKKyAgICB3aXJlICAgICAgQ2FzX2xhdGVuY3lfMyAgICA9IH5Nb2RlX3JlZ1s2XSAmICBNb2RlX3JlZ1s1XSAmICBNb2RlX3JlZ1s0XTsKKworYGlmZGVmIFZFUkJPU0UKKyAgICB3aXJlICAgICAgRGVidWcgICAgICAgICAgICA9IDEnYjE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWJ1ZyBtZXNzYWdlcyA6IDEgPSBPbgorYGVsc2UKKyAgICB3aXJlICAgICAgRGVidWcgICAgICAgICAgICA9IDEnYjA7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBEZWJ1ZyBtZXNzYWdlcyA6IDEgPSBPbgorYGVuZGlmCisgICAgLy8gV3JpdGUgQnVyc3QgTW9kZQorICAgIHdpcmUgICAgICBXcml0ZV9idXJzdF9tb2RlID0gTW9kZV9yZWdbOV07CisKKyAgICB3aXJlICAgICAgRHFfY2hrICAgICAgICAgICA9IFN5c19jbGsgJiBEYXRhX2luX2VuYWJsZTsgICAgICAvLyBDaGVjayBzZXR1cC9ob2xkIHRpbWUgZm9yIERRCisKKyAgICBhc3NpZ24gICAgRHEgICAgICAgICAgICAgICA9IERxX3JlZzsgICAgICAgICAgICAgICAgICAgICAgICAvLyBEUSBidWZmZXIKKworICAgIC8vIENvbW1hbmRzIE9wZXJhdGlvbgorICAgIGBkZWZpbmUgICBBQ1QgICAgICAgMAorICAgIGBkZWZpbmUgICBOT1AgICAgICAgMQorICAgIGBkZWZpbmUgICBSRUFEICAgICAgMgorICAgIGBkZWZpbmUgICBSRUFEX0EgICAgMworICAgIGBkZWZpbmUgICBTRFJBTV9XUklURSAgICAgNAorICAgIGBkZWZpbmUgICBXUklURV9BICAgNQorICAgIGBkZWZpbmUgICBTRFJBTV9QUkVDSCAgICAgNgorICAgIGBkZWZpbmUgICBTRFJBTV9BX1JFRiAgICAgNworICAgIGBkZWZpbmUgICBTRFJBTV9CU1QgICAgICAgOAorICAgIGBkZWZpbmUgICBTRFJBTV9MTVIgICAgICAgOQorCisgICAgLy8gVGltaW5nIFBhcmFtZXRlcnMgZm9yIC03NSAoUEMxMzMpIGFuZCBDQVMgTGF0ZW5jeSA9IDIKKyAgICBwYXJhbWV0ZXIgdEFDICA9ICAgNi4wOworICAgIHBhcmFtZXRlciB0SFogID0gICA3LjA7CisgICAgcGFyYW1ldGVyIHRPSCAgPSAgIDIuNzsKKyAgICBwYXJhbWV0ZXIgdE1SRCA9ICAgMi4wOyAgICAgLy8gMiBDbGsgQ3ljbGVzCisgICAgcGFyYW1ldGVyIHRSQVMgPSAgNDQuMDsKKyAgICBwYXJhbWV0ZXIgdFJDICA9ICA2Ni4wOworICAgIHBhcmFtZXRlciB0UkNEID0gIDIwLjA7CisgICAgcGFyYW1ldGVyIHRSUCAgPSAgMjAuMDsKKyAgICBwYXJhbWV0ZXIgdFJSRCA9ICAxNS4wOworICAgIHBhcmFtZXRlciB0V1JhID0gICA3LjU7ICAgICAvLyBBMiBWZXJzaW9uIC0gQXV0byBwcmVjaGFyZ2UgbW9kZSBvbmx5ICgxIENsayArIDcuNSBucykKKyAgICBwYXJhbWV0ZXIgdFdScCA9ICAxNS4wOyAgICAgLy8gQTIgVmVyc2lvbiAtIFByZWNoYXJnZSBtb2RlIG9ubHkgKDE1IG5zKQorCisgICAgLy8gVGltaW5nIENoZWNrIHZhcmlhYmxlCisgICAgaW50ZWdlciAgIE1SRF9jaGs7CisgICAgaW50ZWdlciAgIFdSX2NvdW50ZXIgWzAgOiAzXTsKKyAgICB0aW1lICAgICAgV1JfY2hrIFswIDogM107CisgICAgdGltZSAgICAgIFJDX2NoaywgUlJEX2NoazsKKyAgICB0aW1lICAgICAgUkFTX2NoazAsIFJBU19jaGsxLCBSQVNfY2hrMiwgUkFTX2NoazM7CisgICAgdGltZSAgICAgIFJDRF9jaGswLCBSQ0RfY2hrMSwgUkNEX2NoazIsIFJDRF9jaGszOworICAgIHRpbWUgICAgICBSUF9jaGswLCBSUF9jaGsxLCBSUF9jaGsyLCBSUF9jaGszOworCisgICAgaW5pdGlhbCBiZWdpbgorICAgICAgCisgICAgICAgIERxX3JlZyA9IHtkYXRhX2JpdHN7MSdien19OworICAgICAgICB7RGF0YV9pbl9lbmFibGUsIERhdGFfb3V0X2VuYWJsZX0gPSAwOworICAgICAgICB7QWN0X2IwLCBBY3RfYjEsIEFjdF9iMiwgQWN0X2IzfSA9IDQnYjAwMDA7CisgICAgICAgIHtQY19iMCwgUGNfYjEsIFBjX2IyLCBQY19iM30gPSA0J2IwMDAwOworICAgICAgICB7V1JfY2hrWzBdLCBXUl9jaGtbMV0sIFdSX2Noa1syXSwgV1JfY2hrWzNdfSA9IDA7CisgICAgICAgIHtXUl9jb3VudGVyWzBdLCBXUl9jb3VudGVyWzFdLCBXUl9jb3VudGVyWzJdLCBXUl9jb3VudGVyWzNdfSA9IDA7CisgICAgICAgIHtSV19pbnRlcnJ1cHRfcmVhZFswXSwgUldfaW50ZXJydXB0X3JlYWRbMV0sIFJXX2ludGVycnVwdF9yZWFkWzJdLCBSV19pbnRlcnJ1cHRfcmVhZFszXX0gPSAwOworICAgICAgICB7UldfaW50ZXJydXB0X3dyaXRlWzBdLCBSV19pbnRlcnJ1cHRfd3JpdGVbMV0sIFJXX2ludGVycnVwdF93cml0ZVsyXSwgUldfaW50ZXJydXB0X3dyaXRlWzNdfSA9IDA7CisgICAgICAgIHtNUkRfY2hrLCBSQ19jaGssIFJSRF9jaGt9ID0gMDsKKyAgICAgICAge1JBU19jaGswLCBSQVNfY2hrMSwgUkFTX2NoazIsIFJBU19jaGszfSA9IDA7CisgICAgICAgIHtSQ0RfY2hrMCwgUkNEX2NoazEsIFJDRF9jaGsyLCBSQ0RfY2hrM30gPSAwOworICAgICAgICB7UlBfY2hrMCwgUlBfY2hrMSwgUlBfY2hrMiwgUlBfY2hrM30gPSAwOworICAgICAgICAkdGltZWZvcm1hdCAoLTksIDAsICIgbnMiLCAxMik7CisgICAgICAgIC8vJHJlYWRtZW1oKCJiYW5rMC50eHQiLCBCYW5rMCk7CisgICAgICAgIC8vJHJlYWRtZW1oKCJiYW5rMS50eHQiLCBCYW5rMSk7CisgICAgICAgIC8vJHJlYWRtZW1oKCJiYW5rMi50eHQiLCBCYW5rMik7CisgICAgICAgIC8vJHJlYWRtZW1oKCJiYW5rMy50eHQiLCBCYW5rMyk7CisgICAgZW5kCisKKyAgICAvLyBTeXN0ZW0gY2xvY2sgZ2VuZXJhdG9yCisgICAgYWx3YXlzIGJlZ2luCisgICAgICAgIEAgKHBvc2VkZ2UgQ2xrKSBiZWdpbgorICAgICAgICAgICAgU3lzX2NsayA9IENrZVo7CisgICAgICAgICAgICBDa2VaID0gQ2tlOworICAgICAgICBlbmQKKyAgICAgICAgQCAobmVnZWRnZSBDbGspIGJlZ2luCisgICAgICAgICAgICBTeXNfY2xrID0gMSdiMDsKKyAgICAgICAgZW5kCisgICAgZW5kCisKKyAgICBhbHdheXMgQCAocG9zZWRnZSBTeXNfY2xrKSBiZWdpbgorICAgICAgICAvLyBJbnRlcm5hbCBDb21tYW1kIFBpcGVsaW5lZAorICAgICAgICBDb21tYW5kWzBdID0gQ29tbWFuZFsxXTsKKyAgICAgICAgQ29tbWFuZFsxXSA9IENvbW1hbmRbMl07CisgICAgICAgIENvbW1hbmRbMl0gPSBDb21tYW5kWzNdOworICAgICAgICBDb21tYW5kWzNdID0gYE5PUDsKKworICAgICAgICBDb2xfYWRkclswXSA9IENvbF9hZGRyWzFdOworICAgICAgICBDb2xfYWRkclsxXSA9IENvbF9hZGRyWzJdOworICAgICAgICBDb2xfYWRkclsyXSA9IENvbF9hZGRyWzNdOworICAgICAgICBDb2xfYWRkclszXSA9IHtjb2xfYml0c3sxJ2IwfX07CisKKyAgICAgICAgQmFua19hZGRyWzBdID0gQmFua19hZGRyWzFdOworICAgICAgICBCYW5rX2FkZHJbMV0gPSBCYW5rX2FkZHJbMl07CisgICAgICAgIEJhbmtfYWRkclsyXSA9IEJhbmtfYWRkclszXTsKKyAgICAgICAgQmFua19hZGRyWzNdID0gMidiMDsKKworICAgICAgICBCYW5rX3ByZWNoYXJnZVswXSA9IEJhbmtfcHJlY2hhcmdlWzFdOworICAgICAgICBCYW5rX3ByZWNoYXJnZVsxXSA9IEJhbmtfcHJlY2hhcmdlWzJdOworICAgICAgICBCYW5rX3ByZWNoYXJnZVsyXSA9IEJhbmtfcHJlY2hhcmdlWzNdOworICAgICAgICBCYW5rX3ByZWNoYXJnZVszXSA9IDInYjA7CisKKyAgICAgICAgQTEwX3ByZWNoYXJnZVswXSA9IEExMF9wcmVjaGFyZ2VbMV07CisgICAgICAgIEExMF9wcmVjaGFyZ2VbMV0gPSBBMTBfcHJlY2hhcmdlWzJdOworICAgICAgICBBMTBfcHJlY2hhcmdlWzJdID0gQTEwX3ByZWNoYXJnZVszXTsKKyAgICAgICAgQTEwX3ByZWNoYXJnZVszXSA9IDEnYjA7CisKKyAgICAgICAgLy8gRHFtIHBpcGVsaW5lIGZvciBSZWFkCisgICAgICAgIERxbV9yZWcwID0gRHFtX3JlZzE7CisgICAgICAgIERxbV9yZWcxID0gRHFtOworCisgICAgICAgIC8vIFJlYWQgb3IgV3JpdGUgd2l0aCBBdXRvIFByZWNoYXJnZSBDb3VudGVyCisgICAgICAgIGlmIChBdXRvX3ByZWNoYXJnZVswXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgQ291bnRfcHJlY2hhcmdlWzBdID0gQ291bnRfcHJlY2hhcmdlWzBdICsgMTsKKyAgICAgICAgZW5kCisgICAgICAgIGlmIChBdXRvX3ByZWNoYXJnZVsxXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgQ291bnRfcHJlY2hhcmdlWzFdID0gQ291bnRfcHJlY2hhcmdlWzFdICsgMTsKKyAgICAgICAgZW5kCisgICAgICAgIGlmIChBdXRvX3ByZWNoYXJnZVsyXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgQ291bnRfcHJlY2hhcmdlWzJdID0gQ291bnRfcHJlY2hhcmdlWzJdICsgMTsKKyAgICAgICAgZW5kCisgICAgICAgIGlmIChBdXRvX3ByZWNoYXJnZVszXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgQ291bnRfcHJlY2hhcmdlWzNdID0gQ291bnRfcHJlY2hhcmdlWzNdICsgMTsKKyAgICAgICAgZW5kCisKKyAgICAgICAgLy8gdE1SRCBDb3VudGVyCisgICAgICAgIE1SRF9jaGsgPSBNUkRfY2hrICsgMTsKKworICAgICAgICAvLyB0V1IgQ291bnRlciBmb3IgV3JpdGUKKyAgICAgICAgV1JfY291bnRlclswXSA9IFdSX2NvdW50ZXJbMF0gKyAxOworICAgICAgICBXUl9jb3VudGVyWzFdID0gV1JfY291bnRlclsxXSArIDE7CisgICAgICAgIFdSX2NvdW50ZXJbMl0gPSBXUl9jb3VudGVyWzJdICsgMTsKKyAgICAgICAgV1JfY291bnRlclszXSA9IFdSX2NvdW50ZXJbM10gKyAxOworCisgICAgICAgIC8vIEF1dG8gUmVmcmVzaAorICAgICAgICBpZiAoQXJlZl9lbmFibGUgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEFSRUYgOiBBdXRvIFJlZnJlc2giLCAkdGltZSk7CisgICAgICAgICAgICAvLyBBdXRvIFJlZnJlc2ggdG8gQXV0byBSZWZyZXNoCisgICAgICAgICAgICBpZiAoJHRpbWUgLSBSQ19jaGsgPCB0UkMpIGJlZ2luCisJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0UkMgdmlvbGF0aW9uIGR1cmluZyBBdXRvIFJlZnJlc2giLCAkdGltZSk7CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIC8vIFByZWNoYXJnZSB0byBBdXRvIFJlZnJlc2gKKyAgICAgICAgICAgIGlmICgkdGltZSAtIFJQX2NoazAgPCB0UlAgfHwgJHRpbWUgLSBSUF9jaGsxIDwgdFJQIHx8ICR0aW1lIC0gUlBfY2hrMiA8IHRSUCB8fCAkdGltZSAtIFJQX2NoazMgPCB0UlApIGJlZ2luCisJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0UlAgdmlvbGF0aW9uIGR1cmluZyBBdXRvIFJlZnJlc2giLCAkdGltZSk7CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIC8vIFByZWNoYXJnZSB0byBSZWZyZXNoCisgICAgICAgICAgICBpZiAoUGNfYjAgPT0gMSdiMCB8fCBQY19iMSA9PSAxJ2IwIHx8IFBjX2IyID09IDEnYjAgfHwgUGNfYjMgPT0gMSdiMCkgYmVnaW4KKwkgICAgICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAkZGlzcGxheSAoImF0IHRpbWUgJXQgRVJST1I6IEFsbCBiYW5rcyBtdXN0IGJlIFByZWNoYXJnZSBiZWZvcmUgQXV0byBSZWZyZXNoIiwgJHRpbWUpOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBSZWNvcmQgQ3VycmVudCB0UkMgdGltZQorICAgICAgICAgICAgUkNfY2hrID0gJHRpbWU7CisgICAgICAgIGVuZAorICAgICAgICAKKyAgICAgICAgLy8gTG9hZCBNb2RlIFJlZ2lzdGVyCisgICAgICAgIGlmIChNb2RlX3JlZ19lbmFibGUgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgIC8vIERlY29kZSBDQVMgTGF0ZW5jeSwgQnVyc3QgTGVuZ3RoLCBCdXJzdCBUeXBlLCBhbmQgV3JpdGUgQnVyc3QgTW9kZQorICAgICAgICAgICAgaWYgKFBjX2IwID09IDEnYjEgJiYgUGNfYjEgPT0gMSdiMSAmJiBQY19iMiA9PSAxJ2IxICYmIFBjX2IzID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgTW9kZV9yZWcgPSBBZGRyOworICAgICAgICAgICAgICAgIGlmIChEZWJ1ZykgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IExNUiAgOiBMb2FkIE1vZGUgUmVnaXN0ZXIiLCAkdGltZSk7CisgICAgICAgICAgICAgICAgICAgIC8vIENBUyBMYXRlbmN5CisgICAgICAgICAgICAgICAgICAgIGlmIChBZGRyWzYgOiA0XSA9PSAzJ2IwMTApCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQVMgTGF0ZW5jeSAgICAgID0gMiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBZGRyWzYgOiA0XSA9PSAzJ2IwMTEpCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQVMgTGF0ZW5jeSAgICAgID0gMyIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBDQVMgTGF0ZW5jeSAgICAgID0gUmVzZXJ2ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQnVyc3QgTGVuZ3RoCisgICAgICAgICAgICAgICAgICAgIGlmIChBZGRyWzIgOiAwXSA9PSAzJ2IwMDApCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXJzdCBMZW5ndGggICAgID0gMSIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBZGRyWzIgOiAwXSA9PSAzJ2IwMDEpCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXJzdCBMZW5ndGggICAgID0gMiIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBZGRyWzIgOiAwXSA9PSAzJ2IwMTApCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXJzdCBMZW5ndGggICAgID0gNCIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBZGRyWzIgOiAwXSA9PSAzJ2IwMTEpCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXJzdCBMZW5ndGggICAgID0gOCIpOworICAgICAgICAgICAgICAgICAgICBlbHNlIGlmIChBZGRyWzMgOiAwXSA9PSA0J2IwMTExKQorICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVyc3QgTGVuZ3RoICAgICA9IEZ1bGwiKTsKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgQnVyc3QgTGVuZ3RoICAgICA9IFJlc2VydmVkIik7CisgICAgICAgICAgICAgICAgICAgIC8vIEJ1cnN0IFR5cGUKKyAgICAgICAgICAgICAgICAgICAgaWYgKEFkZHJbM10gPT0gMSdiMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1cnN0IFR5cGUgICAgICAgPSBTZXF1ZW50aWFsIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFkZHJbM10gPT0gMSdiMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiICAgICAgICAgICAgICAgICAgICAgICAgICAgIEJ1cnN0IFR5cGUgICAgICAgPSBJbnRlcmxlYXZlZCIpOworICAgICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoIiAgICAgICAgICAgICAgICAgICAgICAgICAgICBCdXJzdCBUeXBlICAgICAgID0gUmVzZXJ2ZWQiKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gV3JpdGUgQnVyc3QgTW9kZQorICAgICAgICAgICAgICAgICAgICBpZiAoQWRkcls5XSA9PSAxJ2IwKQorICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCIgICAgICAgICAgICAgICAgICAgICAgICAgICAgV3JpdGUgQnVyc3QgTW9kZSA9IFByb2dyYW1tZWQgQnVyc3QgTGVuZ3RoIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UgaWYgKEFkZHJbOV0gPT0gMSdiMSkKKyAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIEJ1cnN0IE1vZGUgPSBTaW5nbGUgTG9jYXRpb24gQWNjZXNzIik7CisgICAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiICAgICAgICAgICAgICAgICAgICAgICAgICAgIFdyaXRlIEJ1cnN0IE1vZGUgPSBSZXNlcnZlZCIpOworICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW4KKworCSAgICAgICAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiYXQgdGltZSAldCBFUlJPUjogYWxsIGJhbmtzIG11c3QgYmUgUHJlY2hhcmdlIGJlZm9yZSBMb2FkIE1vZGUgUmVnaXN0ZXIiLCAkdGltZSk7CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIC8vIFJFRiB0byBMTVIKKyAgICAgICAgICAgIGlmICgkdGltZSAtIFJDX2NoayA8IHRSQykgYmVnaW4KKworCSAgICAgICAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiYXQgdGltZSAldCBFUlJPUjogdFJDIHZpb2xhdGlvbiBkdXJpbmcgTG9hZCBNb2RlIFJlZ2lzdGVyIiwgJHRpbWUpOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBMTVIgdG8gTE1SCisgICAgICAgICAgICBpZiAoTVJEX2NoayA8IHRNUkQpIGJlZ2luCisKKwkgICAgICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAkZGlzcGxheSAoImF0IHRpbWUgJXQgRVJST1I6IHRNUkQgdmlvbGF0aW9uIGR1cmluZyBMb2FkIE1vZGUgUmVnaXN0ZXIiLCAkdGltZSk7CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIE1SRF9jaGsgPSAwOworICAgICAgICBlbmQKKyAgICAgICAgCisgICAgICAgIC8vIEFjdGl2ZSBCbG9jayAoTGF0Y2ggQmFuayBBZGRyZXNzIGFuZCBSb3cgQWRkcmVzcykKKyAgICAgICAgaWYgKEFjdGl2ZV9lbmFibGUgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgIGlmIChCYSA9PSAyJ2IwMCAmJiBQY19iMCA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIHtBY3RfYjAsIFBjX2IwfSA9IDInYjEwOworICAgICAgICAgICAgICAgIEIwX3Jvd19hZGRyID0gQWRkciBbYWRkcl9iaXRzIC0gMSA6IDBdOworICAgICAgICAgICAgICAgIFJDRF9jaGswID0gJHRpbWU7CisgICAgICAgICAgICAgICAgUkFTX2NoazAgPSAkdGltZTsKKyAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBBQ1QgIDogQmFuayA9IDAgUm93ID0gJWQiLCAkdGltZSwgQWRkcik7CisgICAgICAgICAgICAgICAgLy8gUHJlY2hhcmdlIHRvIEFjdGl2YXRlIEJhbmsgMAorICAgICAgICAgICAgICAgIGlmICgkdGltZSAtIFJQX2NoazAgPCB0UlApIGJlZ2luCisKKwkJICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoImF0IHRpbWUgJXQgRVJST1I6IHRSUCB2aW9sYXRpb24gZHVyaW5nIEFjdGl2YXRlIGJhbmsgMCIsICR0aW1lKTsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCYSA9PSAyJ2IwMSAmJiBQY19iMSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIHtBY3RfYjEsIFBjX2IxfSA9IDInYjEwOworICAgICAgICAgICAgICAgIEIxX3Jvd19hZGRyID0gQWRkciBbYWRkcl9iaXRzIC0gMSA6IDBdOworICAgICAgICAgICAgICAgIFJDRF9jaGsxID0gJHRpbWU7CisgICAgICAgICAgICAgICAgUkFTX2NoazEgPSAkdGltZTsKKyAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBBQ1QgIDogQmFuayA9IDEgUm93ID0gJWQiLCAkdGltZSwgQWRkcik7CisgICAgICAgICAgICAgICAgLy8gUHJlY2hhcmdlIHRvIEFjdGl2YXRlIEJhbmsgMQorICAgICAgICAgICAgICAgIGlmICgkdGltZSAtIFJQX2NoazEgPCB0UlApIGJlZ2luCisKKwkJICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0UlAgdmlvbGF0aW9uIGR1cmluZyBBY3RpdmF0ZSBiYW5rIDEiLCAkdGltZSk7CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQgZWxzZSBpZiAoQmEgPT0gMidiMTAgJiYgUGNfYjIgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICB7QWN0X2IyLCBQY19iMn0gPSAyJ2IxMDsKKyAgICAgICAgICAgICAgICBCMl9yb3dfYWRkciA9IEFkZHIgW2FkZHJfYml0cyAtIDEgOiAwXTsKKyAgICAgICAgICAgICAgICBSQ0RfY2hrMiA9ICR0aW1lOworICAgICAgICAgICAgICAgIFJBU19jaGsyID0gJHRpbWU7CisgICAgICAgICAgICAgICAgaWYgKERlYnVnKSAkZGlzcGxheSAoImF0IHRpbWUgJXQgQUNUICA6IEJhbmsgPSAyIFJvdyA9ICVkIiwgJHRpbWUsIEFkZHIpOworICAgICAgICAgICAgICAgIC8vIFByZWNoYXJnZSB0byBBY3RpdmF0ZSBCYW5rIDIKKyAgICAgICAgICAgICAgICBpZiAoJHRpbWUgLSBSUF9jaGsyIDwgdFJQKSBiZWdpbgorCisJCSAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiYXQgdGltZSAldCBFUlJPUjogdFJQIHZpb2xhdGlvbiBkdXJpbmcgQWN0aXZhdGUgYmFuayAyIiwgJHRpbWUpOworICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kIGVsc2UgaWYgKEJhID09IDInYjExICYmIFBjX2IzID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAge0FjdF9iMywgUGNfYjN9ID0gMidiMTA7CisgICAgICAgICAgICAgICAgQjNfcm93X2FkZHIgPSBBZGRyIFthZGRyX2JpdHMgLSAxIDogMF07CisgICAgICAgICAgICAgICAgUkNEX2NoazMgPSAkdGltZTsKKyAgICAgICAgICAgICAgICBSQVNfY2hrMyA9ICR0aW1lOworICAgICAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEFDVCAgOiBCYW5rID0gMyBSb3cgPSAlZCIsICR0aW1lLCBBZGRyKTsKKyAgICAgICAgICAgICAgICAvLyBQcmVjaGFyZ2UgdG8gQWN0aXZhdGUgQmFuayAzCisgICAgICAgICAgICAgICAgaWYgKCR0aW1lIC0gUlBfY2hrMyA8IHRSUCkgYmVnaW4KKworCQkgICAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoImF0IHRpbWUgJXQgRVJST1I6IHRSUCB2aW9sYXRpb24gZHVyaW5nIEFjdGl2YXRlIGJhbmsgMyIsICR0aW1lKTsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCYSA9PSAyJ2IwMCAmJiBQY19iMCA9PSAxJ2IwKSBiZWdpbgorCisJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiBCYW5rIDAgaXMgbm90IFByZWNoYXJnZWQuIiwgJHRpbWUpOworICAgICAgICAgICAgZW5kIGVsc2UgaWYgKEJhID09IDInYjAxICYmIFBjX2IxID09IDEnYjApIGJlZ2luCisKKwkgICAgICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAkZGlzcGxheSAoImF0IHRpbWUgJXQgRVJST1I6IEJhbmsgMSBpcyBub3QgUHJlY2hhcmdlZC4iLCAkdGltZSk7CisgICAgICAgICAgICBlbmQgZWxzZSBpZiAoQmEgPT0gMidiMTAgJiYgUGNfYjIgPT0gMSdiMCkgYmVnaW4KKworCSAgICAgICAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiYXQgdGltZSAldCBFUlJPUjogQmFuayAyIGlzIG5vdCBQcmVjaGFyZ2VkLiIsICR0aW1lKTsKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCYSA9PSAyJ2IxMSAmJiBQY19iMyA9PSAxJ2IwKSBiZWdpbgorCisJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiBCYW5rIDMgaXMgbm90IFByZWNoYXJnZWQuIiwgJHRpbWUpOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBBY3RpdmUgQmFuayBBIHRvIEFjdGl2ZSBCYW5rIEIKKyAgICAgICAgICAgIGlmICgoUHJldmlvdXNfYmFuayAhPSBCYSkgJiYgKCR0aW1lIC0gUlJEX2NoayA8IHRSUkQpKSBiZWdpbgorCisJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0UlJEIHZpb2xhdGlvbiBkdXJpbmcgQWN0aXZhdGUgYmFuayA9ICVkIiwgJHRpbWUsIEJhKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgLy8gTG9hZCBNb2RlIFJlZ2lzdGVyIHRvIEFjdGl2ZQorICAgICAgICAgICAgaWYgKE1SRF9jaGsgPCB0TVJEICkgYmVnaW4KKworCSAgICAgICAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiYXQgdGltZSAldCBFUlJPUjogdE1SRCB2aW9sYXRpb24gZHVyaW5nIEFjdGl2YXRlIGJhbmsgPSAlZCIsICR0aW1lLCBCYSk7CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIC8vIEF1dG8gUmVmcmVzaCB0byBBY3RpdmF0ZQorICAgICAgICAgICAgaWYgKCR0aW1lIC0gUkNfY2hrIDwgdFJDKSBiZWdpbgorCisJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0UkMgdmlvbGF0aW9uIGR1cmluZyBBY3RpdmF0ZSBiYW5rID0gJWQiLCAkdGltZSwgQmEpOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBSZWNvcmQgdmFyaWFibGVzIGZvciBjaGVja2luZyB2aW9sYXRpb24KKyAgICAgICAgICAgIFJSRF9jaGsgPSAkdGltZTsKKyAgICAgICAgICAgIFByZXZpb3VzX2JhbmsgPSBCYTsKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICAvLyBQcmVjaGFyZ2UgQmxvY2sKKyAgICAgICAgaWYgKFByZWNoX2VuYWJsZSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgaWYgKEFkZHJbMTBdID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAge1BjX2IwLCBQY19iMSwgUGNfYjIsIFBjX2IzfSA9IDQnYjExMTE7CisgICAgICAgICAgICAgICAge0FjdF9iMCwgQWN0X2IxLCBBY3RfYjIsIEFjdF9iM30gPSA0J2IwMDAwOworICAgICAgICAgICAgICAgIFJQX2NoazAgPSAkdGltZTsKKyAgICAgICAgICAgICAgICBSUF9jaGsxID0gJHRpbWU7CisgICAgICAgICAgICAgICAgUlBfY2hrMiA9ICR0aW1lOworICAgICAgICAgICAgICAgIFJQX2NoazMgPSAkdGltZTsKKyAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBQUkUgIDogQmFuayA9IEFMTCIsJHRpbWUpOworICAgICAgICAgICAgICAgIC8vIEFjdGl2YXRlIHRvIFByZWNoYXJnZSBhbGwgYmFua3MKKyAgICAgICAgICAgICAgICBpZiAoKCR0aW1lIC0gUkFTX2NoazAgPCB0UkFTKSB8fCAoJHRpbWUgLSBSQVNfY2hrMSA8IHRSQVMpIHx8CisgICAgICAgICAgICAgICAgICAgICgkdGltZSAtIFJBU19jaGsyIDwgdFJBUykgfHwgKCR0aW1lIC0gUkFTX2NoazMgPCB0UkFTKSkgYmVnaW4KKworCQkgICAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoImF0IHRpbWUgJXQgRVJST1I6IHRSQVMgdmlvbGF0aW9uIGR1cmluZyBQcmVjaGFyZ2UgYWxsIGJhbmsiLCAkdGltZSk7CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgLy8gdFdSIHZpb2xhdGlvbiBjaGVjayBmb3Igd3JpdGUKKyAgICAgICAgICAgICAgICBpZiAoKCR0aW1lIC0gV1JfY2hrWzBdIDwgdFdScCkgfHwgKCR0aW1lIC0gV1JfY2hrWzFdIDwgdFdScCkgfHwKKyAgICAgICAgICAgICAgICAgICAgKCR0aW1lIC0gV1JfY2hrWzJdIDwgdFdScCkgfHwgKCR0aW1lIC0gV1JfY2hrWzNdIDwgdFdScCkpIGJlZ2luCisKKwkJICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0V1IgdmlvbGF0aW9uIGR1cmluZyBQcmVjaGFyZ2UgYWxsIGJhbmsiLCAkdGltZSk7CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQgZWxzZSBpZiAoQWRkclsxMF0gPT0gMSdiMCkgYmVnaW4KKyAgICAgICAgICAgICAgICBpZiAoQmEgPT0gMidiMDApIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIHtQY19iMCwgQWN0X2IwfSA9IDInYjEwOworICAgICAgICAgICAgICAgICAgICBSUF9jaGswID0gJHRpbWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkgKCJhdCB0aW1lICV0IFBSRSAgOiBCYW5rID0gMCIsJHRpbWUpOworICAgICAgICAgICAgICAgICAgICAvLyBBY3RpdmF0ZSB0byBQcmVjaGFyZ2UgQmFuayAwCisgICAgICAgICAgICAgICAgICAgIGlmICgkdGltZSAtIFJBU19jaGswIDwgdFJBUykgYmVnaW4KKworCQkgICAgICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiYXQgdGltZSAldCBFUlJPUjogdFJBUyB2aW9sYXRpb24gZHVyaW5nIFByZWNoYXJnZSBiYW5rIDAiLCAkdGltZSk7CisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCYSA9PSAyJ2IwMSkgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAge1BjX2IxLCBBY3RfYjF9ID0gMidiMTA7CisgICAgICAgICAgICAgICAgICAgIFJQX2NoazEgPSAkdGltZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERlYnVnKSAkZGlzcGxheSAoImF0IHRpbWUgJXQgUFJFICA6IEJhbmsgPSAxIiwkdGltZSk7CisgICAgICAgICAgICAgICAgICAgIC8vIEFjdGl2YXRlIHRvIFByZWNoYXJnZSBCYW5rIDEKKyAgICAgICAgICAgICAgICAgICAgaWYgKCR0aW1lIC0gUkFTX2NoazEgPCB0UkFTKSBiZWdpbgorCisJCSAgICAgICAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0UkFTIHZpb2xhdGlvbiBkdXJpbmcgUHJlY2hhcmdlIGJhbmsgMSIsICR0aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAgICAgZW5kIGVsc2UgaWYgKEJhID09IDInYjEwKSBiZWdpbgorICAgICAgICAgICAgICAgICAgICB7UGNfYjIsIEFjdF9iMn0gPSAyJ2IxMDsKKyAgICAgICAgICAgICAgICAgICAgUlBfY2hrMiA9ICR0aW1lOworICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBQUkUgIDogQmFuayA9IDIiLCR0aW1lKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gQWN0aXZhdGUgdG8gUHJlY2hhcmdlIEJhbmsgMgorICAgICAgICAgICAgICAgICAgICBpZiAoJHRpbWUgLSBSQVNfY2hrMiA8IHRSQVMpIGJlZ2luCisKKwkJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgICAgICAgICAkZGlzcGxheSAoImF0IHRpbWUgJXQgRVJST1I6IHRSQVMgdmlvbGF0aW9uIGR1cmluZyBQcmVjaGFyZ2UgYmFuayAyIiwgJHRpbWUpOworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBlbmQgZWxzZSBpZiAoQmEgPT0gMidiMTEpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIHtQY19iMywgQWN0X2IzfSA9IDInYjEwOworICAgICAgICAgICAgICAgICAgICBSUF9jaGszID0gJHRpbWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkgKCJhdCB0aW1lICV0IFBSRSAgOiBCYW5rID0gMyIsJHRpbWUpOworICAgICAgICAgICAgICAgICAgICAvLyBBY3RpdmF0ZSB0byBQcmVjaGFyZ2UgQmFuayAzCisgICAgICAgICAgICAgICAgICAgIGlmICgkdGltZSAtIFJBU19jaGszIDwgdFJBUykgYmVnaW4KKworCQkgICAgICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgICAgICAgICRkaXNwbGF5ICgiYXQgdGltZSAldCBFUlJPUjogdFJBUyB2aW9sYXRpb24gZHVyaW5nIFByZWNoYXJnZSBiYW5rIDMiLCAkdGltZSk7CisgICAgICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgICAgIC8vIHRXUiB2aW9sYXRpb24gY2hlY2sgZm9yIHdyaXRlCisgICAgICAgICAgICAgICAgaWYgKCR0aW1lIC0gV1JfY2hrW0JhXSA8IHRXUnApIGJlZ2luCisKKwkJICAgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgICAgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEVSUk9SOiB0V1IgdmlvbGF0aW9uIGR1cmluZyBQcmVjaGFyZ2UgYmFuayAlZCIsICR0aW1lLCBCYSk7CisgICAgICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIC8vIFRlcm1pbmF0ZSBhIFdyaXRlIEltbWVkaWF0ZWx5IChpZiBzYW1lIGJhbmsgb3IgYWxsIGJhbmtzKQorICAgICAgICAgICAgaWYgKERhdGFfaW5fZW5hYmxlID09IDEnYjEgJiYgKEJhbmsgPT0gQmEgfHwgQWRkclsxMF0gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICAgICAgRGF0YV9pbl9lbmFibGUgPSAxJ2IwOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBQcmVjaGFyZ2UgQ29tbWFuZCBQaXBlbGluZSBmb3IgUmVhZAorICAgICAgICAgICAgaWYgKENhc19sYXRlbmN5XzMgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICBDb21tYW5kWzJdID0gYFNEUkFNX1BSRUNIOworICAgICAgICAgICAgICAgIEJhbmtfcHJlY2hhcmdlWzJdID0gQmE7CisgICAgICAgICAgICAgICAgQTEwX3ByZWNoYXJnZVsyXSA9IEFkZHJbMTBdOworICAgICAgICAgICAgZW5kIGVsc2UgaWYgKENhc19sYXRlbmN5XzIgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICBDb21tYW5kWzFdID0gYFNEUkFNX1BSRUNIOworICAgICAgICAgICAgICAgIEJhbmtfcHJlY2hhcmdlWzFdID0gQmE7CisgICAgICAgICAgICAgICAgQTEwX3ByZWNoYXJnZVsxXSA9IEFkZHJbMTBdOworICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgICAgICAKKyAgICAgICAgLy8gQnVyc3QgdGVybWluYXRlCisgICAgICAgIGlmIChCdXJzdF90ZXJtID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAvLyBUZXJtaW5hdGUgYSBXcml0ZSBJbW1lZGlhdGVseQorICAgICAgICAgICAgaWYgKERhdGFfaW5fZW5hYmxlID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgRGF0YV9pbl9lbmFibGUgPSAxJ2IwOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBUZXJtaW5hdGUgYSBSZWFkIERlcGVuZCBvbiBDQVMgTGF0ZW5jeQorICAgICAgICAgICAgaWYgKENhc19sYXRlbmN5XzMgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICBDb21tYW5kWzJdID0gYFNEUkFNX0JTVDsKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChDYXNfbGF0ZW5jeV8yID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgQ29tbWFuZFsxXSA9IGBTRFJBTV9CU1Q7CisgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkgKCJhdCB0aW1lICV0IEJTVCAgOiBCdXJzdCBUZXJtaW5hdGUiLCR0aW1lKTsKKyAgICAgICAgZW5kCisgICAgICAgIAorICAgICAgICAvLyBSZWFkLCBXcml0ZSwgQ29sdW1uIExhdGNoCisgICAgICAgIGlmIChSZWFkX2VuYWJsZSA9PSAxJ2IxIHx8IFdyaXRlX2VuYWJsZSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgLy8gQ2hlY2sgdG8gc2VlIGlmIGJhbmsgaXMgb3BlbiAoQUNUKQorICAgICAgICAgICAgaWYgKChCYSA9PSAyJ2IwMCAmJiBQY19iMCA9PSAxJ2IxKSB8fCAoQmEgPT0gMidiMDEgJiYgUGNfYjEgPT0gMSdiMSkgfHwKKyAgICAgICAgICAgICAgICAoQmEgPT0gMidiMTAgJiYgUGNfYjIgPT0gMSdiMSkgfHwgKEJhID09IDInYjExICYmIFBjX2IzID09IDEnYjEpKSBiZWdpbgorCisJICAgICAgIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgJGRpc3BsYXkoImF0IHRpbWUgJXQgRVJST1I6IENhbm5vdCBSZWFkIG9yIFdyaXRlIC0gQmFuayAlZCBpcyBub3QgQWN0aXZhdGVkIiwgJHRpbWUsIEJhKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgLy8gQWN0aXZhdGUgdG8gUmVhZCBvciBXcml0ZQorICAgICAgICAgICAgaWYgKChCYSA9PSAyJ2IwMCkgJiYgKCR0aW1lIC0gUkNEX2NoazAgPCB0UkNEKSkKKwkgICAgICBiZWdpbgorCQkgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgJGRpc3BsYXkoImF0IHRpbWUgJXQgRVJST1I6IHRSQ0QgdmlvbGF0aW9uIGR1cmluZyBSZWFkIG9yIFdyaXRlIHRvIEJhbmsgMCIsICR0aW1lKTsKKwkgICAgICBlbmQKKwkgICAKKyAgICAgICAgICAgIGlmICgoQmEgPT0gMidiMDEpICYmICgkdGltZSAtIFJDRF9jaGsxIDwgdFJDRCkpCisJICAgICAgYmVnaW4KKwkJIC8vLT50Yi50ZXN0X2NvbnRyb2wuZXJyb3JfZGV0ZWN0ZWQ7CisgICAgICAgICAgICAgICAgICRkaXNwbGF5KCJhdCB0aW1lICV0IEVSUk9SOiB0UkNEIHZpb2xhdGlvbiBkdXJpbmcgUmVhZCBvciBXcml0ZSB0byBCYW5rIDEiLCAkdGltZSk7CisJICAgICAgZW5kCisgICAgICAgICAgICBpZiAoKEJhID09IDInYjEwKSAmJiAoJHRpbWUgLSBSQ0RfY2hrMiA8IHRSQ0QpKQorCSAgICAgIGJlZ2luCisJCSAvLy0+dGIudGVzdF9jb250cm9sLmVycm9yX2RldGVjdGVkOworICAgICAgICAgICAgICAgICAkZGlzcGxheSgiYXQgdGltZSAldCBFUlJPUjogdFJDRCB2aW9sYXRpb24gZHVyaW5nIFJlYWQgb3IgV3JpdGUgdG8gQmFuayAyIiwgJHRpbWUpOworCSAgICAgIGVuZAorICAgICAgICAgICAgaWYgKChCYSA9PSAyJ2IxMSkgJiYgKCR0aW1lIC0gUkNEX2NoazMgPCB0UkNEKSkKKwkgICAgICBiZWdpbgorCQkgLy8tPnRiLnRlc3RfY29udHJvbC5lcnJvcl9kZXRlY3RlZDsKKyAgICAgICAgICAgICAgICAgJGRpc3BsYXkoImF0IHRpbWUgJXQgRVJST1I6IHRSQ0QgdmlvbGF0aW9uIGR1cmluZyBSZWFkIG9yIFdyaXRlIHRvIEJhbmsgMyIsICR0aW1lKTsKKwkgICAgICBlbmQKKyAgICAgICAgICAgIC8vIFJlYWQgQ29tbWFuZAorICAgICAgICAgICAgaWYgKFJlYWRfZW5hYmxlID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgLy8gQ0FTIExhdGVuY3kgcGlwZWxpbmUKKyAgICAgICAgICAgICAgICBpZiAoQ2FzX2xhdGVuY3lfMyA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgICAgICBpZiAoQWRkclsxMF0gPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRbMl0gPSBgUkVBRF9BOworICAgICAgICAgICAgICAgICAgICBlbmQgZWxzZSBiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZFsyXSA9IGBSRUFEOworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgQ29sX2FkZHJbMl0gPSBBZGRyOworICAgICAgICAgICAgICAgICAgICBCYW5rX2FkZHJbMl0gPSBCYTsKKyAgICAgICAgICAgICAgICBlbmQgZWxzZSBpZiAoQ2FzX2xhdGVuY3lfMiA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgICAgICBpZiAoQWRkclsxMF0gPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIENvbW1hbmRbMV0gPSBgUkVBRF9BOworICAgICAgICAgICAgICAgICAgICBlbmQgZWxzZSBiZWdpbgorICAgICAgICAgICAgICAgICAgICAgICAgQ29tbWFuZFsxXSA9IGBSRUFEOworICAgICAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICAgICAgQ29sX2FkZHJbMV0gPSBBZGRyOworICAgICAgICAgICAgICAgICAgICBCYW5rX2FkZHJbMV0gPSBCYTsKKyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgICAgIC8vIFJlYWQgaW50ZXJydXB0IFdyaXRlICh0ZXJtaW5hdGUgV3JpdGUgaW1tZWRpYXRlbHkpCisgICAgICAgICAgICAgICAgaWYgKERhdGFfaW5fZW5hYmxlID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIERhdGFfaW5fZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICBlbmQKKworICAgICAgICAgICAgLy8gV3JpdGUgQ29tbWFuZAorICAgICAgICAgICAgZW5kIGVsc2UgaWYgKFdyaXRlX2VuYWJsZSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIGlmIChBZGRyWzEwXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgICAgICBDb21tYW5kWzBdID0gYFdSSVRFX0E7CisgICAgICAgICAgICAgICAgZW5kIGVsc2UgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgQ29tbWFuZFswXSA9IGBTRFJBTV9XUklURTsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgICAgICBDb2xfYWRkclswXSA9IEFkZHI7CisgICAgICAgICAgICAgICAgQmFua19hZGRyWzBdID0gQmE7CisKKyAgICAgICAgICAgICAgICAvLyBXcml0ZSBpbnRlcnJ1cHQgV3JpdGUgKHRlcm1pbmF0ZSBXcml0ZSBpbW1lZGlhdGVseSkKKyAgICAgICAgICAgICAgICBpZiAoRGF0YV9pbl9lbmFibGUgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgRGF0YV9pbl9lbmFibGUgPSAxJ2IwOworICAgICAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAgICAgLy8gV3JpdGUgaW50ZXJydXB0IFJlYWQgKHRlcm1pbmF0ZSBSZWFkIGltbWVkaWF0ZWx5KQorICAgICAgICAgICAgICAgIGlmIChEYXRhX291dF9lbmFibGUgPT0gMSdiMSkgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgRGF0YV9vdXRfZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAvLyBJbnRlcnJ1cHRpbmcgYSBXcml0ZSB3aXRoIEF1dG9wcmVjaGFyZ2UKKyAgICAgICAgICAgIGlmIChBdXRvX3ByZWNoYXJnZVtCYW5rXSA9PSAxJ2IxICYmIFdyaXRlX3ByZWNoYXJnZVtCYW5rXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIFJXX2ludGVycnVwdF93cml0ZVtCYW5rXSA9IDEnYjE7CisgICAgICAgICAgICAgICAgaWYgKERlYnVnKSAkZGlzcGxheSAoImF0IHRpbWUgJXQgTk9URSA6IFJlYWQvV3JpdGUgQmFuayAlZCBpbnRlcnJ1cHQgV3JpdGUgQmFuayAlZCB3aXRoIEF1dG9wcmVjaGFyZ2UiLCAkdGltZSwgQmEsIEJhbmspOworICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgIC8vIEludGVycnVwdGluZyBhIFJlYWQgd2l0aCBBdXRvcHJlY2hhcmdlCisgICAgICAgICAgICBpZiAoQXV0b19wcmVjaGFyZ2VbQmFua10gPT0gMSdiMSAmJiBSZWFkX3ByZWNoYXJnZVtCYW5rXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIFJXX2ludGVycnVwdF9yZWFkW0JhbmtdID0gMSdiMTsKKyAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBOT1RFIDogUmVhZC9Xcml0ZSBCYW5rICVkIGludGVycnVwdCBSZWFkIEJhbmsgJWQgd2l0aCBBdXRvcHJlY2hhcmdlIiwgJHRpbWUsIEJhLCBCYW5rKTsKKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAvLyBSZWFkIG9yIFdyaXRlIHdpdGggQXV0byBQcmVjaGFyZ2UKKyAgICAgICAgICAgIGlmIChBZGRyWzEwXSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIEF1dG9fcHJlY2hhcmdlW0JhXSA9IDEnYjE7CisgICAgICAgICAgICAgICAgQ291bnRfcHJlY2hhcmdlW0JhXSA9IDA7CisgICAgICAgICAgICAgICAgaWYgKFJlYWRfZW5hYmxlID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIFJlYWRfcHJlY2hhcmdlW0JhXSA9IDEnYjE7CisgICAgICAgICAgICAgICAgZW5kIGVsc2UgaWYgKFdyaXRlX2VuYWJsZSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgICAgICBXcml0ZV9wcmVjaGFyZ2VbQmFdID0gMSdiMTsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKworICAgICAgICAvLyAgUmVhZCB3aXRoIEF1dG8gUHJlY2hhcmdlIENhbGN1bGF0aW9uCisgICAgICAgIC8vICAgICAgVGhlIGRldmljZSBzdGFydCBpbnRlcm5hbCBwcmVjaGFyZ2U6CisgICAgICAgIC8vICAgICAgICAgIDEuICBDQVMgTGF0ZW5jeSAtIDEgY3ljbGVzIGJlZm9yZSBsYXN0IGJ1cnN0CisgICAgICAgIC8vICAgICAgYW5kIDIuICBNZWV0IG1pbmltdW0gdFJBUyByZXF1aXJlbWVudAorICAgICAgICAvLyAgICAgICBvciAzLiAgSW50ZXJydXB0IGJ5IGEgUmVhZCBvciBXcml0ZSAod2l0aCBvciB3aXRob3V0IEF1dG9QcmVjaGFyZ2UpCisgICAgICAgIGlmICgoQXV0b19wcmVjaGFyZ2VbMF0gPT0gMSdiMSkgJiYgKFJlYWRfcHJlY2hhcmdlWzBdID09IDEnYjEpKSBiZWdpbgorICAgICAgICAgICAgaWYgKCgoJHRpbWUgLSBSQVNfY2hrMCA+PSB0UkFTKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc2UgMgorICAgICAgICAgICAgICAgICgoQnVyc3RfbGVuZ3RoXzEgPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2VbMF0gPj0gMSkgfHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENhc2UgMQorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzIgPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2VbMF0gPj0gMikgfHwKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF80ID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlWzBdID49IDQpIHx8CisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfOCA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZVswXSA+PSA4KSkpIHx8CisgICAgICAgICAgICAgICAgIChSV19pbnRlcnJ1cHRfcmVhZFswXSA9PSAxJ2IxKSkgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAzCisgICAgICAgICAgICAgICAgICAgIFBjX2IwID0gMSdiMTsKKyAgICAgICAgICAgICAgICAgICAgQWN0X2IwID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUlBfY2hrMCA9ICR0aW1lOworICAgICAgICAgICAgICAgICAgICBBdXRvX3ByZWNoYXJnZVswXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFJlYWRfcHJlY2hhcmdlWzBdID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUldfaW50ZXJydXB0X3JlYWRbMF0gPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBOT1RFIDogU3RhcnQgSW50ZXJuYWwgQXV0byBQcmVjaGFyZ2UgZm9yIEJhbmsgMCIsICR0aW1lKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgICAgaWYgKChBdXRvX3ByZWNoYXJnZVsxXSA9PSAxJ2IxKSAmJiAoUmVhZF9wcmVjaGFyZ2VbMV0gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICBpZiAoKCgkdGltZSAtIFJBU19jaGsxID49IHRSQVMpICYmCisgICAgICAgICAgICAgICAgKChCdXJzdF9sZW5ndGhfMSA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZVsxXSA+PSAxKSB8fCAKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF8yID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlWzFdID49IDIpIHx8CisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfNCA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZVsxXSA+PSA0KSB8fAorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzggPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2VbMV0gPj0gOCkpKSB8fAorICAgICAgICAgICAgICAgICAoUldfaW50ZXJydXB0X3JlYWRbMV0gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIFBjX2IxID0gMSdiMTsKKyAgICAgICAgICAgICAgICAgICAgQWN0X2IxID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUlBfY2hrMSA9ICR0aW1lOworICAgICAgICAgICAgICAgICAgICBBdXRvX3ByZWNoYXJnZVsxXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFJlYWRfcHJlY2hhcmdlWzFdID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUldfaW50ZXJydXB0X3JlYWRbMV0gPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBOT1RFIDogU3RhcnQgSW50ZXJuYWwgQXV0byBQcmVjaGFyZ2UgZm9yIEJhbmsgMSIsICR0aW1lKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgICAgaWYgKChBdXRvX3ByZWNoYXJnZVsyXSA9PSAxJ2IxKSAmJiAoUmVhZF9wcmVjaGFyZ2VbMl0gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICBpZiAoKCgkdGltZSAtIFJBU19jaGsyID49IHRSQVMpICYmCisgICAgICAgICAgICAgICAgKChCdXJzdF9sZW5ndGhfMSA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZVsyXSA+PSAxKSB8fCAKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF8yID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlWzJdID49IDIpIHx8CisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfNCA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZVsyXSA+PSA0KSB8fAorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzggPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2VbMl0gPj0gOCkpKSB8fAorICAgICAgICAgICAgICAgICAoUldfaW50ZXJydXB0X3JlYWRbMl0gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIFBjX2IyID0gMSdiMTsKKyAgICAgICAgICAgICAgICAgICAgQWN0X2IyID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUlBfY2hrMiA9ICR0aW1lOworICAgICAgICAgICAgICAgICAgICBBdXRvX3ByZWNoYXJnZVsyXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFJlYWRfcHJlY2hhcmdlWzJdID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUldfaW50ZXJydXB0X3JlYWRbMl0gPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBOT1RFIDogU3RhcnQgSW50ZXJuYWwgQXV0byBQcmVjaGFyZ2UgZm9yIEJhbmsgMiIsICR0aW1lKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICAgICAgaWYgKChBdXRvX3ByZWNoYXJnZVszXSA9PSAxJ2IxKSAmJiAoUmVhZF9wcmVjaGFyZ2VbM10gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICBpZiAoKCgkdGltZSAtIFJBU19jaGszID49IHRSQVMpICYmCisgICAgICAgICAgICAgICAgKChCdXJzdF9sZW5ndGhfMSA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZVszXSA+PSAxKSB8fCAKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF8yID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlWzNdID49IDIpIHx8CisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfNCA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZVszXSA+PSA0KSB8fAorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzggPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2VbM10gPj0gOCkpKSB8fAorICAgICAgICAgICAgICAgICAoUldfaW50ZXJydXB0X3JlYWRbM10gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIFBjX2IzID0gMSdiMTsKKyAgICAgICAgICAgICAgICAgICAgQWN0X2IzID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUlBfY2hrMyA9ICR0aW1lOworICAgICAgICAgICAgICAgICAgICBBdXRvX3ByZWNoYXJnZVszXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFJlYWRfcHJlY2hhcmdlWzNdID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUldfaW50ZXJydXB0X3JlYWRbM10gPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBOT1RFIDogU3RhcnQgSW50ZXJuYWwgQXV0byBQcmVjaGFyZ2UgZm9yIEJhbmsgMyIsICR0aW1lKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKworICAgICAgICAvLyBJbnRlcm5hbCBQcmVjaGFyZ2Ugb3IgQnN0CisgICAgICAgIGlmIChDb21tYW5kWzBdID09IGBTRFJBTV9QUkVDSCkgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgLy8gUHJlY2hhcmdlIHRlcm1pbmF0ZSBhIHJlYWQgd2l0aCBzYW1lIGJhbmsgb3IgYWxsIGJhbmtzCisgICAgICAgICAgICBpZiAoQmFua19wcmVjaGFyZ2VbMF0gPT0gQmFuayB8fCBBMTBfcHJlY2hhcmdlWzBdID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgaWYgKERhdGFfb3V0X2VuYWJsZSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgICAgICBEYXRhX291dF9lbmFibGUgPSAxJ2IwOworICAgICAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZCBlbHNlIGlmIChDb21tYW5kWzBdID09IGBTRFJBTV9CU1QpIGJlZ2luICAgICAgICAgICAgICAgICAgLy8gQlNUIHRlcm1pbmF0ZSBhIHJlYWQgdG8gY3VycmVudCBiYW5rCisgICAgICAgICAgICBpZiAoRGF0YV9vdXRfZW5hYmxlID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgRGF0YV9vdXRfZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKworICAgICAgICBpZiAoRGF0YV9vdXRfZW5hYmxlID09IDEnYjApIGJlZ2luCisgICAgICAgICAgICBEcV9yZWcgPD0gI3RPSCB7ZGF0YV9iaXRzezEnYnp9fTsKKyAgICAgICAgZW5kCisKKyAgICAgICAgLy8gRGV0ZWN0IFJlYWQgb3IgV3JpdGUgY29tbWFuZAorICAgICAgICBpZiAoQ29tbWFuZFswXSA9PSBgUkVBRCB8fCBDb21tYW5kWzBdID09IGBSRUFEX0EpIGJlZ2luCisgICAgICAgICAgICBCYW5rID0gQmFua19hZGRyWzBdOworICAgICAgICAgICAgQ29sID0gQ29sX2FkZHJbMF07CisgICAgICAgICAgICBDb2xfYnJzdCA9IENvbF9hZGRyWzBdOworICAgICAgICAgICAgaWYgKEJhbmtfYWRkclswXSA9PSAyJ2IwMCkgYmVnaW4KKyAgICAgICAgICAgICAgICBSb3cgPSBCMF9yb3dfYWRkcjsKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCYW5rX2FkZHJbMF0gPT0gMidiMDEpIGJlZ2luCisgICAgICAgICAgICAgICAgUm93ID0gQjFfcm93X2FkZHI7CisgICAgICAgICAgICBlbmQgZWxzZSBpZiAoQmFua19hZGRyWzBdID09IDInYjEwKSBiZWdpbgorICAgICAgICAgICAgICAgIFJvdyA9IEIyX3Jvd19hZGRyOworICAgICAgICAgICAgZW5kIGVsc2UgaWYgKEJhbmtfYWRkclswXSA9PSAyJ2IxMSkgYmVnaW4KKyAgICAgICAgICAgICAgICBSb3cgPSBCM19yb3dfYWRkcjsKKyAgICAgICAgICAgIGVuZAorICAgICAgICAgICAgQnVyc3RfY291bnRlciA9IDA7CisgICAgICAgICAgICBEYXRhX2luX2VuYWJsZSA9IDEnYjA7CisgICAgICAgICAgICBEYXRhX291dF9lbmFibGUgPSAxJ2IxOworICAgICAgICBlbmQgZWxzZSBpZiAoQ29tbWFuZFswXSA9PSBgU0RSQU1fV1JJVEUgfHwgQ29tbWFuZFswXSA9PSBgV1JJVEVfQSkgYmVnaW4KKyAgICAgICAgICAgIEJhbmsgPSBCYW5rX2FkZHJbMF07CisgICAgICAgICAgICBDb2wgPSBDb2xfYWRkclswXTsKKyAgICAgICAgICAgIENvbF9icnN0ID0gQ29sX2FkZHJbMF07CisgICAgICAgICAgICBpZiAoQmFua19hZGRyWzBdID09IDInYjAwKSBiZWdpbgorICAgICAgICAgICAgICAgIFJvdyA9IEIwX3Jvd19hZGRyOworICAgICAgICAgICAgZW5kIGVsc2UgaWYgKEJhbmtfYWRkclswXSA9PSAyJ2IwMSkgYmVnaW4KKyAgICAgICAgICAgICAgICBSb3cgPSBCMV9yb3dfYWRkcjsKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCYW5rX2FkZHJbMF0gPT0gMidiMTApIGJlZ2luCisgICAgICAgICAgICAgICAgUm93ID0gQjJfcm93X2FkZHI7CisgICAgICAgICAgICBlbmQgZWxzZSBpZiAoQmFua19hZGRyWzBdID09IDInYjExKSBiZWdpbgorICAgICAgICAgICAgICAgIFJvdyA9IEIzX3Jvd19hZGRyOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICBCdXJzdF9jb3VudGVyID0gMDsKKyAgICAgICAgICAgIERhdGFfaW5fZW5hYmxlID0gMSdiMTsKKyAgICAgICAgICAgIERhdGFfb3V0X2VuYWJsZSA9IDEnYjA7CisgICAgICAgIGVuZAorCisgICAgICAgIC8vIERRIGJ1ZmZlciAoRHJpdmVyL1JlY2VpdmVyKQorICAgICAgICBpZiAoRGF0YV9pbl9lbmFibGUgPT0gMSdiMSkgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdyaXRpbmcgRGF0YSB0byBNZW1vcnkKKyAgICAgICAgICAgIC8vIEFycmF5IGJ1ZmZlcgorICAgICAgICAgICAgaWYgKEJhbmsgPT0gMidiMDApIERxX2RxbSBbMTUgOiAwXSA9IEJhbmswIFt7Um93LCBDb2x9XTsKKyAgICAgICAgICAgIGlmIChCYW5rID09IDInYjAxKSBEcV9kcW0gWzE1IDogMF0gPSBCYW5rMSBbe1JvdywgQ29sfV07CisgICAgICAgICAgICBpZiAoQmFuayA9PSAyJ2IxMCkgRHFfZHFtIFsxNSA6IDBdID0gQmFuazIgW3tSb3csIENvbH1dOworICAgICAgICAgICAgaWYgKEJhbmsgPT0gMidiMTEpIERxX2RxbSBbMTUgOiAwXSA9IEJhbmszIFt7Um93LCBDb2x9XTsKKyAgICAgICAgICAgIC8vIERxbSBvcGVyYXRpb24KKyAgICAgICAgICAgIGlmIChEcW1bMF0gPT0gMSdiMCkgRHFfZHFtIFsgNyA6IDBdID0gRHEgWyA3IDogMF07CisgICAgICAgICAgICAvLyBXcml0ZSB0byBtZW1vcnkKKyAgICAgICAgICAgIGlmIChCYW5rID09IDInYjAwKSBCYW5rMCBbe1JvdywgQ29sfV0gPSBEcV9kcW0gWzE1IDogMF07CisgICAgICAgICAgICBpZiAoQmFuayA9PSAyJ2IwMSkgQmFuazEgW3tSb3csIENvbH1dID0gRHFfZHFtIFsxNSA6IDBdOworICAgICAgICAgICAgaWYgKEJhbmsgPT0gMidiMTApIEJhbmsyIFt7Um93LCBDb2x9XSA9IERxX2RxbSBbMTUgOiAwXTsKKyAgICAgICAgICAgIGlmIChCYW5rID09IDInYjExKSBCYW5rMyBbe1JvdywgQ29sfV0gPSBEcV9kcW0gWzE1IDogMF07CisgICAgICAgICAgICAvLyBPdXRwdXQgcmVzdWx0CisgICAgICAgICAgICBpZiAoRHFtID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgaWYgKERlYnVnKSAkZGlzcGxheSgiYXQgdGltZSAldCBXUklURTogQmFuayA9ICVkIFJvdyA9ICVkLCBDb2wgPSAlZCwgRGF0YSA9IEhpLVogZHVlIHRvIERRTSIsICR0aW1lLCBCYW5rLCBSb3csIENvbCk7CisgICAgICAgICAgICBlbmQgZWxzZSBiZWdpbgorICAgICAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkoImF0IHRpbWUgJXQgV1JJVEU6IEJhbmsgPSAlZCBSb3cgPSAlZCwgQ29sID0gJWQsIERhdGEgPSAlaCwgRHFtID0gJWIiLCAkdGltZSwgQmFuaywgUm93LCBDb2wsIERxX2RxbSwgRHFtKTsKKyAgICAgICAgICAgICAgICAvLyBSZWNvcmQgdFdSIHRpbWUgYW5kIHJlc2V0IGNvdW50ZXIKKyAgICAgICAgICAgICAgICBXUl9jaGsgW0JhbmtdID0gJHRpbWU7CisgICAgICAgICAgICAgICAgV1JfY291bnRlciBbQmFua10gPSAwOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBBZHZhbmNlIGJ1cnN0IGNvdW50ZXIgc3Vicm91dGluZQorICAgICAgICAgICAgI3RIWiBCdXJzdDsKKyAgICAgICAgZW5kIGVsc2UgaWYgKERhdGFfb3V0X2VuYWJsZSA9PSAxJ2IxKSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICAvLyBSZWFkaW5nIERhdGEgZnJvbSBNZW1vcnkKKyAgICAgICAgICAgIC8vIEFycmF5IGJ1ZmZlcgorICAgICAgICAgICAgaWYgKEJhbmsgPT0gMidiMDApIERxX2RxbSBbMTUgOiAwXSA9IEJhbmswIFt7Um93LCBDb2x9XTsKKyAgICAgICAgICAgIGlmIChCYW5rID09IDInYjAxKSBEcV9kcW0gWzE1IDogMF0gPSBCYW5rMSBbe1JvdywgQ29sfV07CisgICAgICAgICAgICBpZiAoQmFuayA9PSAyJ2IxMCkgRHFfZHFtIFsxNSA6IDBdID0gQmFuazIgW3tSb3csIENvbH1dOworICAgICAgICAgICAgaWYgKEJhbmsgPT0gMidiMTEpIERxX2RxbSBbMTUgOiAwXSA9IEJhbmszIFt7Um93LCBDb2x9XTsKKyAgICAgICAgICAgIC8vIERxbSBvcGVyYXRpb24KKyAgICAgICAgICAgIGlmIChEcW1fcmVnMFswXSA9PSAxJ2IxKSBEcV9kcW0gWyA3IDogMF0gPSA4J2J6OworICAgICAgICAgICAgLy8gRGlzcGxheSByZXN1bHQKKyAgICAgICAgICAgIERxX3JlZyBbMTUgOiAwXSA9ICN0QUMgRHFfZHFtIFsxNSA6IDBdOworICAgICAgICAgICAgaWYgKERxbV9yZWcwID09IDEnYjEpIGJlZ2luCisgICAgICAgICAgICAgICAgaWYgKERlYnVnKSAkZGlzcGxheSgiYXQgdGltZSAldCBSRUFEIDogQmFuayA9ICVkIFJvdyA9ICVkLCBDb2wgPSAlZCwgRGF0YSA9IEhpLVogZHVlIHRvIERRTSIsICR0aW1lLCBCYW5rLCBSb3csIENvbCk7CisgICAgICAgICAgICBlbmQgZWxzZSBiZWdpbgorICAgICAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkoImF0IHRpbWUgJXQgUkVBRCA6IEJhbmsgPSAlZCBSb3cgPSAlZCwgQ29sID0gJWQsIERhdGEgPSAlaCwgRHFtID0gJWIiLCAkdGltZSwgQmFuaywgUm93LCBDb2wsIERxX3JlZywgRHFtX3JlZzApOworICAgICAgICAgICAgZW5kCisgICAgICAgICAgICAvLyBBZHZhbmNlIGJ1cnN0IGNvdW50ZXIgc3Vicm91dGluZQorICAgICAgICAgICAgQnVyc3Q7CisgICAgICAgIGVuZAorICAgIGVuZAorCisgICAgLy8gIFdyaXRlIHdpdGggQXV0byBQcmVjaGFyZ2UgQ2FsY3VsYXRpb24KKyAgICAvLyAgICAgIFRoZSBkZXZpY2Ugc3RhcnQgaW50ZXJuYWwgcHJlY2hhcmdlOgorICAgIC8vICAgICAgICAgIDEuICB0V1IgQ2xvY2sgYWZ0ZXIgbGFzdCBidXJzdAorICAgIC8vICAgICAgYW5kIDIuICBNZWV0IG1pbmltdW0gdFJBUyByZXF1aXJlbWVudAorICAgIC8vICAgICAgIG9yIDMuICBJbnRlcnJ1cHQgYnkgYSBSZWFkIG9yIFdyaXRlICh3aXRoIG9yIHdpdGhvdXQgQXV0b1ByZWNoYXJnZSkKKyAgICBhbHdheXMgQCAoV1JfY291bnRlclswXSkgYmVnaW4KKyAgICAgICAgaWYgKChBdXRvX3ByZWNoYXJnZVswXSA9PSAxJ2IxKSAmJiAoV3JpdGVfcHJlY2hhcmdlWzBdID09IDEnYjEpKSBiZWdpbgorICAgICAgICAgICAgaWYgKCgoJHRpbWUgLSBSQVNfY2hrMCA+PSB0UkFTKSAmJiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDYXNlIDIKKyAgICAgICAgICAgICAgICgoKEJ1cnN0X2xlbmd0aF8xID09IDEnYjEgfHwgV3JpdGVfYnVyc3RfbW9kZSA9PSAxJ2IxKSAmJiBDb3VudF9wcmVjaGFyZ2UgWzBdID49IDEpIHx8ICAgLy8gQ2FzZSAxCisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfMiA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZSBbMF0gPj0gMikgfHwKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF80ID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlIFswXSA+PSA0KSB8fAorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzggPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2UgWzBdID49IDgpKSkgfHwKKyAgICAgICAgICAgICAgICAgKFJXX2ludGVycnVwdF93cml0ZVswXSA9PSAxJ2IxICYmIFdSX2NvdW50ZXJbMF0gPj0gMikpIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2FzZSAzIChzdG9wIGNvdW50IHdoZW4gaW50ZXJydXB0KQorICAgICAgICAgICAgICAgICAgICBBdXRvX3ByZWNoYXJnZVswXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFdyaXRlX3ByZWNoYXJnZVswXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFJXX2ludGVycnVwdF93cml0ZVswXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgICN0V1JhOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgdFdSCisgICAgICAgICAgICAgICAgICAgIFBjX2IwID0gMSdiMTsKKyAgICAgICAgICAgICAgICAgICAgQWN0X2IwID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUlBfY2hrMCA9ICR0aW1lOworICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBOT1RFIDogU3RhcnQgSW50ZXJuYWwgQXV0byBQcmVjaGFyZ2UgZm9yIEJhbmsgMCIsICR0aW1lKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICBlbmQKKyAgICBhbHdheXMgQCAoV1JfY291bnRlclsxXSkgYmVnaW4KKyAgICAgICAgaWYgKChBdXRvX3ByZWNoYXJnZVsxXSA9PSAxJ2IxKSAmJiAoV3JpdGVfcHJlY2hhcmdlWzFdID09IDEnYjEpKSBiZWdpbgorICAgICAgICAgICAgaWYgKCgoJHRpbWUgLSBSQVNfY2hrMSA+PSB0UkFTKSAmJgorICAgICAgICAgICAgICAgKCgoQnVyc3RfbGVuZ3RoXzEgPT0gMSdiMSB8fCBXcml0ZV9idXJzdF9tb2RlID09IDEnYjEpICYmIENvdW50X3ByZWNoYXJnZSBbMV0gPj0gMSkgfHwgCisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfMiA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZSBbMV0gPj0gMikgfHwKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF80ID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlIFsxXSA+PSA0KSB8fAorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzggPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2UgWzFdID49IDgpKSkgfHwKKyAgICAgICAgICAgICAgICAgKFJXX2ludGVycnVwdF93cml0ZVsxXSA9PSAxJ2IxICYmIFdSX2NvdW50ZXJbMV0gPj0gMikpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIEF1dG9fcHJlY2hhcmdlWzFdID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgV3JpdGVfcHJlY2hhcmdlWzFdID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUldfaW50ZXJydXB0X3dyaXRlWzFdID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgI3RXUmE7ICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBXYWl0IGZvciB0V1IKKyAgICAgICAgICAgICAgICAgICAgUGNfYjEgPSAxJ2IxOworICAgICAgICAgICAgICAgICAgICBBY3RfYjEgPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICBSUF9jaGsxID0gJHRpbWU7CisgICAgICAgICAgICAgICAgICAgIGlmIChEZWJ1ZykgJGRpc3BsYXkgKCJhdCB0aW1lICV0IE5PVEUgOiBTdGFydCBJbnRlcm5hbCBBdXRvIFByZWNoYXJnZSBmb3IgQmFuayAxIiwgJHRpbWUpOworICAgICAgICAgICAgZW5kCisgICAgICAgIGVuZAorICAgIGVuZAorICAgIGFsd2F5cyBAIChXUl9jb3VudGVyWzJdKSBiZWdpbgorICAgICAgICBpZiAoKEF1dG9fcHJlY2hhcmdlWzJdID09IDEnYjEpICYmIChXcml0ZV9wcmVjaGFyZ2VbMl0gPT0gMSdiMSkpIGJlZ2luCisgICAgICAgICAgICBpZiAoKCgkdGltZSAtIFJBU19jaGsyID49IHRSQVMpICYmCisgICAgICAgICAgICAgICAoKChCdXJzdF9sZW5ndGhfMSA9PSAxJ2IxIHx8IFdyaXRlX2J1cnN0X21vZGUgPT0gMSdiMSkgJiYgQ291bnRfcHJlY2hhcmdlIFsyXSA+PSAxKSB8fCAKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF8yID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlIFsyXSA+PSAyKSB8fAorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzQgPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2UgWzJdID49IDQpIHx8CisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfOCA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZSBbMl0gPj0gOCkpKSB8fAorICAgICAgICAgICAgICAgICAoUldfaW50ZXJydXB0X3dyaXRlWzJdID09IDEnYjEgJiYgV1JfY291bnRlclsyXSA+PSAyKSkgYmVnaW4KKyAgICAgICAgICAgICAgICAgICAgQXV0b19wcmVjaGFyZ2VbMl0gPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICBXcml0ZV9wcmVjaGFyZ2VbMl0gPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICBSV19pbnRlcnJ1cHRfd3JpdGVbMl0gPSAxJ2IwOworICAgICAgICAgICAgICAgICAgICAjdFdSYTsgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFdhaXQgZm9yIHRXUgorICAgICAgICAgICAgICAgICAgICBQY19iMiA9IDEnYjE7CisgICAgICAgICAgICAgICAgICAgIEFjdF9iMiA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFJQX2NoazIgPSAkdGltZTsKKyAgICAgICAgICAgICAgICAgICAgaWYgKERlYnVnKSAkZGlzcGxheSAoImF0IHRpbWUgJXQgTk9URSA6IFN0YXJ0IEludGVybmFsIEF1dG8gUHJlY2hhcmdlIGZvciBCYW5rIDIiLCAkdGltZSk7CisgICAgICAgICAgICBlbmQKKyAgICAgICAgZW5kCisgICAgZW5kCisgICAgYWx3YXlzIEAgKFdSX2NvdW50ZXJbM10pIGJlZ2luCisgICAgICAgIGlmICgoQXV0b19wcmVjaGFyZ2VbM10gPT0gMSdiMSkgJiYgKFdyaXRlX3ByZWNoYXJnZVszXSA9PSAxJ2IxKSkgYmVnaW4KKyAgICAgICAgICAgIGlmICgoKCR0aW1lIC0gUkFTX2NoazMgPj0gdFJBUykgJiYKKyAgICAgICAgICAgICAgICgoKEJ1cnN0X2xlbmd0aF8xID09IDEnYjEgfHwgV3JpdGVfYnVyc3RfbW9kZSA9PSAxJ2IxKSAmJiBDb3VudF9wcmVjaGFyZ2UgWzNdID49IDEpIHx8IAorICAgICAgICAgICAgICAgICAoQnVyc3RfbGVuZ3RoXzIgPT0gMSdiMSAmJiBDb3VudF9wcmVjaGFyZ2UgWzNdID49IDIpIHx8CisgICAgICAgICAgICAgICAgIChCdXJzdF9sZW5ndGhfNCA9PSAxJ2IxICYmIENvdW50X3ByZWNoYXJnZSBbM10gPj0gNCkgfHwKKyAgICAgICAgICAgICAgICAgKEJ1cnN0X2xlbmd0aF84ID09IDEnYjEgJiYgQ291bnRfcHJlY2hhcmdlIFszXSA+PSA4KSkpIHx8CisgICAgICAgICAgICAgICAgIChSV19pbnRlcnJ1cHRfd3JpdGVbM10gPT0gMSdiMSAmJiBXUl9jb3VudGVyWzNdID49IDIpKSBiZWdpbgorICAgICAgICAgICAgICAgICAgICBBdXRvX3ByZWNoYXJnZVszXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFdyaXRlX3ByZWNoYXJnZVszXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgIFJXX2ludGVycnVwdF93cml0ZVszXSA9IDEnYjA7CisgICAgICAgICAgICAgICAgICAgICN0V1JhOyAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gV2FpdCBmb3IgdFdSCisgICAgICAgICAgICAgICAgICAgIFBjX2IzID0gMSdiMTsKKyAgICAgICAgICAgICAgICAgICAgQWN0X2IzID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgUlBfY2hrMyA9ICR0aW1lOworICAgICAgICAgICAgICAgICAgICBpZiAoRGVidWcpICRkaXNwbGF5ICgiYXQgdGltZSAldCBOT1RFIDogU3RhcnQgSW50ZXJuYWwgQXV0byBQcmVjaGFyZ2UgZm9yIEJhbmsgMyIsICR0aW1lKTsKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICBlbmQKKworICAgIHRhc2sgQnVyc3Q7CisgICAgICAgIGJlZ2luCisgICAgICAgICAgICAvLyBBZHZhbmNlIEJ1cnN0IENvdW50ZXIKKyAgICAgICAgICAgIEJ1cnN0X2NvdW50ZXIgPSBCdXJzdF9jb3VudGVyICsgMTsKKworICAgICAgICAgICAgLy8gQnVyc3QgVHlwZQorICAgICAgICAgICAgaWYgKE1vZGVfcmVnWzNdID09IDEnYjApIGJlZ2luICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIFNlcXVlbnRpYWwgQnVyc3QKKyAgICAgICAgICAgICAgICBDb2xfdGVtcCA9IENvbCArIDE7CisgICAgICAgICAgICBlbmQgZWxzZSBpZiAoTW9kZV9yZWdbM10gPT0gMSdiMSkgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgLy8gSW50ZXJsZWF2ZWQgQnVyc3QKKyAgICAgICAgICAgICAgICBDb2xfdGVtcFsyXSA9ICBCdXJzdF9jb3VudGVyWzJdIF4gIENvbF9icnN0WzJdOworICAgICAgICAgICAgICAgIENvbF90ZW1wWzFdID0gIEJ1cnN0X2NvdW50ZXJbMV0gXiAgQ29sX2Jyc3RbMV07CisgICAgICAgICAgICAgICAgQ29sX3RlbXBbMF0gPSAgQnVyc3RfY291bnRlclswXSBeICBDb2xfYnJzdFswXTsKKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAvLyBCdXJzdCBMZW5ndGgKKyAgICAgICAgICAgIGlmIChCdXJzdF9sZW5ndGhfMikgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXJzdCBMZW5ndGggPSAyCisgICAgICAgICAgICAgICAgQ29sIFswXSA9IENvbF90ZW1wIFswXTsKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCdXJzdF9sZW5ndGhfNCkgYmVnaW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBCdXJzdCBMZW5ndGggPSA0CisgICAgICAgICAgICAgICAgQ29sIFsxIDogMF0gPSBDb2xfdGVtcCBbMSA6IDBdOworICAgICAgICAgICAgZW5kIGVsc2UgaWYgKEJ1cnN0X2xlbmd0aF84KSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEJ1cnN0IExlbmd0aCA9IDgKKyAgICAgICAgICAgICAgICBDb2wgWzIgOiAwXSA9IENvbF90ZW1wIFsyIDogMF07CisgICAgICAgICAgICBlbmQgZWxzZSBiZWdpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQnVyc3QgTGVuZ3RoID0gRlVMTAorICAgICAgICAgICAgICAgIENvbCA9IENvbF90ZW1wOworICAgICAgICAgICAgZW5kCisKKyAgICAgICAgICAgIC8vIEJ1cnN0IFJlYWQgU2luZ2xlIFdyaXRlICAgICAgICAgICAgCisgICAgICAgICAgICBpZiAoV3JpdGVfYnVyc3RfbW9kZSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIERhdGFfaW5fZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgIGVuZAorCisgICAgICAgICAgICAvLyBEYXRhIENvdW50ZXIKKyAgICAgICAgICAgIGlmIChCdXJzdF9sZW5ndGhfMSA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIGlmIChCdXJzdF9jb3VudGVyID49IDEpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIERhdGFfaW5fZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgRGF0YV9vdXRfZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCdXJzdF9sZW5ndGhfMiA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIGlmIChCdXJzdF9jb3VudGVyID49IDIpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIERhdGFfaW5fZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgRGF0YV9vdXRfZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCdXJzdF9sZW5ndGhfNCA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIGlmIChCdXJzdF9jb3VudGVyID49IDQpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIERhdGFfaW5fZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgRGF0YV9vdXRfZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZCBlbHNlIGlmIChCdXJzdF9sZW5ndGhfOCA9PSAxJ2IxKSBiZWdpbgorICAgICAgICAgICAgICAgIGlmIChCdXJzdF9jb3VudGVyID49IDgpIGJlZ2luCisgICAgICAgICAgICAgICAgICAgIERhdGFfaW5fZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICAgICAgRGF0YV9vdXRfZW5hYmxlID0gMSdiMDsKKyAgICAgICAgICAgICAgICBlbmQKKyAgICAgICAgICAgIGVuZAorICAgICAgICBlbmQKKyAgICBlbmR0YXNrCisKKyAgICAvLyBUaW1pbmcgUGFyYW1ldGVycyBmb3IgLTc1IChQQzEzMykgYW5kIENBUyBMYXRlbmN5ID0gMgorICAgIHNwZWNpZnkKKyAgICAgICAgc3BlY3BhcmFtCisgICAgICAgICAgICAgICAgICAgIHRBSCAgPSAgMC44LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBBZGRyLCBCYSBIb2xkIFRpbWUKKyAgICAgICAgICAgICAgICAgICAgdEFTICA9ICAxLjUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIEFkZHIsIEJhIFNldHVwIFRpbWUKKyAgICAgICAgICAgICAgICAgICAgdENIICA9ICAyLjUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2NrIEhpZ2gtTGV2ZWwgV2lkdGgKKyAgICAgICAgICAgICAgICAgICAgdENMICA9ICAyLjUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENsb2NrIExvdy1MZXZlbCBXaWR0aAorICAgICAgICAgICAgICAgICAgICB0Q0sgID0gMTAsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ2xvY2sgQ3ljbGUgVGltZQorICAgICAgICAgICAgICAgICAgICB0REggID0gIDAuOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gRGF0YS1pbiBIb2xkIFRpbWUKKyAgICAgICAgICAgICAgICAgICAgdERTICA9ICAxLjUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIERhdGEtaW4gU2V0dXAgVGltZQorICAgICAgICAgICAgICAgICAgICB0Q0tIID0gIDAuOCwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gQ0tFIEhvbGQgIFRpbWUKKyAgICAgICAgICAgICAgICAgICAgdENLUyA9ICAxLjUsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIENLRSBTZXR1cCBUaW1lCisgICAgICAgICAgICAgICAgICAgIHRDTUggPSAgMC44LCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDUyMsIFJBUyMsIENBUyMsIFdFIywgRFFNIyBIb2xkICBUaW1lCisgICAgICAgICAgICAgICAgICAgIHRDTVMgPSAgMS41OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBDUyMsIFJBUyMsIENBUyMsIFdFIywgRFFNIyBTZXR1cCBUaW1lCisgICAgICAgICR3aWR0aCAgICAocG9zZWRnZSBDbGssICAgICAgICAgICB0Q0gpOworICAgICAgICAkd2lkdGggICAgKG5lZ2VkZ2UgQ2xrLCAgICAgICAgICAgdENMKTsKKyAgICAgICAgJHBlcmlvZCAgIChuZWdlZGdlIENsaywgICAgICAgICAgIHRDSyk7CisgICAgICAgICRwZXJpb2QgICAocG9zZWRnZSBDbGssICAgICAgICAgICB0Q0spOworICAgICAgICAkc2V0dXBob2xkKHBvc2VkZ2UgQ2xrLCAgICBDa2UsICAgdENLUywgdENLSCk7CisgICAgICAgICRzZXR1cGhvbGQocG9zZWRnZSBDbGssICAgIENzX24sICB0Q01TLCB0Q01IKTsKKyAgICAgICAgJHNldHVwaG9sZChwb3NlZGdlIENsaywgICAgQ2FzX24sIHRDTVMsIHRDTUgpOworICAgICAgICAkc2V0dXBob2xkKHBvc2VkZ2UgQ2xrLCAgICBSYXNfbiwgdENNUywgdENNSCk7CisgICAgICAgICRzZXR1cGhvbGQocG9zZWRnZSBDbGssICAgIFdlX24sICB0Q01TLCB0Q01IKTsKKyAgICAgICAgJHNldHVwaG9sZChwb3NlZGdlIENsaywgICAgQWRkciwgIHRBUywgIHRBSCk7CisgICAgICAgICRzZXR1cGhvbGQocG9zZWRnZSBDbGssICAgIEJhLCAgICB0QVMsICB0QUgpOworICAgICAgICAkc2V0dXBob2xkKHBvc2VkZ2UgQ2xrLCAgICBEcW0sICAgdENNUywgdENNSCk7CisgICAgICAgICRzZXR1cGhvbGQocG9zZWRnZSBEcV9jaGssIERxLCAgICB0RFMsICB0REgpOworICAgIGVuZHNwZWNpZnkKKworZW5kbW9kdWxlCisKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvZHYvcmlzY19ib290L01ha2VmaWxlIGIvdmVyaWxvZy9kdi9yaXNjX2Jvb3QvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTk4N2JiZgotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvZHYvcmlzY19ib290L01ha2VmaWxlCkBAIC0wLDAgKzEsODQgQEAKKyMgU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyMCBFZmFibGVzcyBDb3Jwb3JhdGlvbgorIworIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKKyMKKyMgICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyMKKyMgVW5sZXNzIHJlcXVpcmVkIGJ5IGFwcGxpY2FibGUgbGF3IG9yIGFncmVlZCB0byBpbiB3cml0aW5nLCBzb2Z0d2FyZQorIyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorIyBXSVRIT1VUIFdBUlJBTlRJRVMgT1IgQ09ORElUSU9OUyBPRiBBTlkgS0lORCwgZWl0aGVyIGV4cHJlc3Mgb3IgaW1wbGllZC4KKyMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorIyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEFwYWNoZS0yLjAKKworIyMgQ2FyYXZlbCBQb2ludGVycworQ0FSQVZFTF9ST09UID89IC4uLy4uLy4uL2NhcmF2ZWwKK0NBUkFWRUxfUEFUSCA/PSAkKENBUkFWRUxfUk9PVCkKK0NBUkFWRUxfRklSTVdBUkVfUEFUSCA9ICQoQ0FSQVZFTF9QQVRIKS92ZXJpbG9nL2R2L2NhcmF2ZWwKK0NBUkFWRUxfVkVSSUxPR19QQVRIICA9ICQoQ0FSQVZFTF9QQVRIKS92ZXJpbG9nCitDQVJBVkVMX1JUTF9QQVRIID0gJChDQVJBVkVMX1ZFUklMT0dfUEFUSCkvcnRsCitDQVJBVkVMX0JFSEFWSU9VUkFMX01PREVMUyA9ICQoQ0FSQVZFTF9WRVJJTE9HX1BBVEgpL2R2L2NhcmF2ZWwKKworIyMgVXNlciBQcm9qZWN0IFBvaW50ZXJzCitVUFJKX1ZFUklMT0dfUEFUSCA/PSAuLi8uLi8uLi92ZXJpbG9nCitVUFJKX1JUTF9QQVRIID0gJChVUFJKX1ZFUklMT0dfUEFUSCkvcnRsCitVUFJKX0JFSEFWSU9VUkFMX01PREVMUyA9IC4uL21vZGVsCitVUFJKX0lOQ0xVREVfUEFUSDEgPSAkKFVQUkpfUlRMX1BBVEgpL3N5bnRhY29yZS9zY3IxL3NyYy9pbmNsdWRlcworVVBSSl9JTkNMVURFX1BBVEgyID0gJChVUFJKX1JUTF9QQVRIKS9zZHJhbV9jdHJsL3NyYy9kZWZzCitVUFJKX0lOQ0xVREVfUEFUSDIgPSAkKFVQUkpfUlRMX1BBVEgpL3NkcmFtX2N0cmwvc3JjL2RlZnMKKworIyMgUklTQ1YgR0NDIAorR0NDX1BBVEg/PS9lZi9hcHBzL2JpbgorR0NDX1BSRUZJWD89cmlzY3YzMi11bmtub3duLWVsZgorUERLX1BBVEg/PS9lZi90ZWNoL1NXL3NreTEzMEEKKworIyMgU2ltdWxhdGlvbiBtb2RlOiBSVEwvR0wKK1NJTT89UlRMCisKKy5TVUZGSVhFUzoKKworUEFUVEVSTiA9IHJpc2NfYm9vdAorCithbGw6ICAke1BBVFRFUk46PS52Y2R9CisKK2hleDogICR7UEFUVEVSTjo9LmhleH0KKwordnZwOiAgJHtQQVRURVJOOj0udnZwfQorCislLnZ2cDogJV90Yi52ICUuaGV4CitpZmVxICgkKFNJTSksUlRMKQorCWl2ZXJpbG9nIC1nMjAwNS1zdiAtREZVTkNUSU9OQUwgLURTSU0gLUkgJChQREtfUEFUSCkgXAorCS1JICQoQ0FSQVZFTF9CRUhBVklPVVJBTF9NT0RFTFMpIC1JICQoQ0FSQVZFTF9SVExfUEFUSCkgXAorCS1JICQoVVBSSl9CRUhBVklPVVJBTF9NT0RFTFMpICAgIC1JICQoVVBSSl9SVExfUEFUSCkgXAorCS1JICQoVVBSSl9JTkNMVURFX1BBVEgxKSAgICAtSSAkKFVQUkpfSU5DTFVERV9QQVRIMikgXAorCSQ8IC1vICRAIAorZWxzZSAgCisJaXZlcmlsb2cgLURGVU5DVElPTkFMIC1EU0lNIC1ER0wgLUkgJChQREtfUEFUSCkgXAorCS1JICQoQ0FSQVZFTF9CRUhBVklPVVJBTF9NT0RFTFMpIC1JICQoQ0FSQVZFTF9SVExfUEFUSCkgLUkgJChDQVJBVkVMX1ZFUklMT0dfUEFUSCkgXAorCS1JICQoVVBSSl9CRUhBVklPVVJBTF9NT0RFTFMpIC1JJChVUFJKX1JUTF9QQVRIKSAgIC1JICQoVVBSSl9WRVJJTE9HX1BBVEgpIFwKKwkkPCAtbyAkQCAKK2VuZGlmCisKKyUudmNkOiAlLnZ2cAorCXZ2cCAkPAorCislLmVsZjogJS5jICQoQ0FSQVZFTF9GSVJNV0FSRV9QQVRIKS9zZWN0aW9ucy5sZHMgJChDQVJBVkVMX0ZJUk1XQVJFX1BBVEgpL3N0YXJ0LnMKKwkke0dDQ19QQVRIfS8ke0dDQ19QUkVGSVh9LWdjYyAtSSAkKENBUkFWRUxfUEFUSCkgLW1hcmNoPXJ2MzJpbWMgLW1hYmk9aWxwMzIgLVdsLC1Cc3RhdGljLC1ULCQoQ0FSQVZFTF9GSVJNV0FSRV9QQVRIKS9zZWN0aW9ucy5sZHMsLS1zdHJpcC1kZWJ1ZyAtZmZyZWVzdGFuZGluZyAtbm9zdGRsaWIgLW8gJEAgJChDQVJBVkVMX0ZJUk1XQVJFX1BBVEgpL3N0YXJ0LnMgJDwKKworJS5oZXg6ICUuZWxmCisJJHtHQ0NfUEFUSH0vJHtHQ0NfUFJFRklYfS1vYmpjb3B5IC1PIHZlcmlsb2cgJDwgJEAgCisJIyB0byBmaXggZmxhc2ggYmFzZSBhZGRyZXNzCisJc2VkIC1pICdzL0AxMDAwMDAwMC9AMDAwMDAwMDAvZycgJEAKKworJS5iaW46ICUuZWxmCisJJHtHQ0NfUEFUSH0vJHtHQ0NfUFJFRklYfS1vYmpjb3B5IC1PIGJpbmFyeSAkPCAvZGV2L3N0ZG91dCB8IHRhaWwgLWMgKzEwNDg1NzcgPiAkQAorCisjIC0tLS0gQ2xlYW4gLS0tLQorCitjbGVhbjoKKwlybSAtZiAqLmVsZiAqLmhleCAqLmJpbiAqLnZ2cCAqLnZjZCAqLmxvZworCisuUEhPTlk6IGNsZWFuIGhleCBhbGwKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvZHYvcmlzY19ib290L3Jpc2NfYm9vdC5jIGIvdmVyaWxvZy9kdi9yaXNjX2Jvb3QvcmlzY19ib290LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0MjgyMgotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvZHYvcmlzY19ib290L3Jpc2NfYm9vdC5jCkBAIC0wLDAgKzEsMjEzIEBACisvKgorICogU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyMCBFZmFibGVzcyBDb3Jwb3JhdGlvbgorICoKKyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorICogWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisgKgorICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKyAqCisgKiBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorICogV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisgKiBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKyAqIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCisgKi8KKworLy8gVGhpcyBpbmNsdWRlIGlzIHJlbGF0aXZlIHRvICRDQVJBVkVMX1BBVEggKHNlZSBNYWtlZmlsZSkKKyNpbmNsdWRlICJ2ZXJpbG9nL2R2L2NhcmF2ZWwvZGVmcy5oIgorI2luY2x1ZGUgInZlcmlsb2cvZHYvY2FyYXZlbC9zdHViLmMiCisKKy8vIFVzZXIgUHJvamVjdCBTbGF2ZXMgKDB4MzAwMF8wMDAwKQorI2RlZmluZSByZWdfbXByal9zbGF2ZSAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAwMCkKKworI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcwICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAwMCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMSAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMDQpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzIgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDA4KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWczICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAwQykKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnNCAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMTApCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzUgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDE0KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWc2ICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAxOCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnNyAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMUMpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzggICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDIwKQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWc5ICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAyNCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMTAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMjgpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzExICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDJDKQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcxMiAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAzMCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMTMgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMzQpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzE0ICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDM4KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcxNSAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAzQykKKworCisjZGVmaW5lIEdQSU9fTU9ERV9VU0VSX1NURF9CSURJUkVDVElPTkFMX1BVTExVUCAgIDB4MUMwMAorCisjZGVmaW5lIFNDX1NJTV9PVVRQT1JUICgweGYwMDAwMDAwKQorCisvKgorICAgICAgICAgUmlzY1YgSGVsbG8gV29ybGQgdGVzdC4KKwkgICAgICAgIC0gV2FrZSB1cCB0aGUgUmlzYyBWCisJCS0gQm9vdCBmcm9tIFNQSSBGbGFzaAorCQktIFJpc2N2IFdyaXRlIEhlbGxvIFdvcmxkIHRvIFNEUkFNLAorCQktIEV4dGVybmFsIFdpc2hib25lIHJlYWQgYmFjayB2YWxpZGF0aW9uIHRoZSBkYXRhCisqLworaW50IGkgPSAwOyAKK2ludCBjbGsgPSAwOworCit2b2lkIG1haW4oKQoreworCisJaW50IGJGYWlsID0gMDsKKwkvKiAKKwlJTyBDb250cm9sIFJlZ2lzdGVycworCXwgRE0gICAgIHwgVlRSSVAgfCBTTE9XICB8IEFOX1BPTCB8IEFOX1NFTCB8IEFOX0VOIHwgTU9EX1NFTCB8IElOUF9ESVMgfCBIT0xESCB8IE9FQl9OIHwgTUdNVF9FTiB8CisJfCAzLWJpdHMgfCAxLWJpdCB8IDEtYml0IHwgMS1iaXQgIHwgMS1iaXQgIHwgMS1iaXQgfCAxLWJpdCAgIHwgMS1iaXQgICB8IDEtYml0IHwgMS1iaXQgfCAxLWJpdCAgIHwKKwlPdXRwdXQ6IDAwMDBfMDExMF8wMDAwXzExMTAgICgweDE4MDgpID0gR1BJT19NT0RFX1VTRVJfU1REX09VVFBVVAorCXwgRE0gICAgIHwgVlRSSVAgfCBTTE9XICB8IEFOX1BPTCB8IEFOX1NFTCB8IEFOX0VOIHwgTU9EX1NFTCB8IElOUF9ESVMgfCBIT0xESCB8IE9FQl9OIHwgTUdNVF9FTiB8CisJfCAxMTAgICAgfCAwICAgICB8IDAgICAgIHwgMCAgICAgIHwgMCAgICAgIHwgMCAgICAgfCAwICAgICAgIHwgMSAgICAgICB8IDAgICAgIHwgMCAgICAgfCAwICAgICAgIHwKKwkKKwkgCisJSW5wdXQ6IDAwMDBfMDAwMV8wMDAwXzExMTEgKDB4MDQwMikgPSBHUElPX01PREVfVVNFUl9TVERfSU5QVVRfTk9QVUxMCisJfCBETSAgICAgfCBWVFJJUCB8IFNMT1cgIHwgQU5fUE9MIHwgQU5fU0VMIHwgQU5fRU4gfCBNT0RfU0VMIHwgSU5QX0RJUyB8IEhPTERIIHwgT0VCX04gfCBNR01UX0VOIHwKKwl8IDAwMSAgICB8IDAgICAgIHwgMCAgICAgfCAwICAgICAgfCAwICAgICAgfCAwICAgICB8IDAgICAgICAgfCAwICAgICAgIHwgMCAgICAgfCAxICAgICB8IDAgICAgICAgfAorCisJSW5wdXQ6IDAwMDBfMDAwMV8wMDAwXzExMTEgKDB4MTgwMCkgPSBHUElPX01PREVfVVNFUl9TVERfQklESVJFQ1RJT05BTAorCXwgRE0gICAgIHwgVlRSSVAgfCBTTE9XICB8IEFOX1BPTCB8IEFOX1NFTCB8IEFOX0VOIHwgTU9EX1NFTCB8IElOUF9ESVMgfCBIT0xESCB8IE9FQl9OIHwgTUdNVF9FTiB8CisJfCAxMTAgICAgfCAwICAgICB8IDAgICAgIHwgMCAgICAgIHwgMCAgICAgIHwgMCAgICAgfCAwICAgICAgIHwgMCAgICAgICB8IDAgICAgIHwgMCAgICAgfCAwICAgICAgIHwKKwkqLworCisJLyogU2V0IHVwIHRoZSBob3VzZWtlZXBpbmcgU1BJIHRvIGJlIGNvbm5lY3RlZCBpbnRlcm5hbGx5IHNvCSovCisJLyogdGhhdCBleHRlcm5hbCBwaW4gY2hhbmdlcyBkb24ndCBhZmZlY3QgaXQuCQkJKi8KKworCXJlZ19zcGltYXN0ZXJfY29uZmlnID0gMHhhMDAyOwkvLyBFbmFibGUsIHByZXNjYWxlciA9IDIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gY29ubmVjdCB0byBob3VzZWtlZXBpbmcgU1BJCisKKwkvLyBDb25uZWN0IHRoZSBob3VzZWtlZXBpbmcgU1BJIHRvIHRoZSBTUEkgbWFzdGVyCisJLy8gc28gdGhhdCB0aGUgQ1NCIGxpbmUgaXMgbm90IGxlZnQgZmxvYXRpbmcuICBUaGlzIGFsbG93cworCS8vIGFsbCBvZiB0aGUgR1BJTyBwaW5zIHRvIGJlIHVzZWQgZm9yIHVzZXIgZnVuY3Rpb25zLgorICAgICAgICByZWdfbXByal9pb18zMSA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzMwID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMjkgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18yOCA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzI3ID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMjYgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18yNSA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzI0ID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMjMgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18yMiA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzIxID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMjAgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18xOSA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzE4ID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMTcgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18xNiA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisKKworICAgICAvKiBBcHBseSBjb25maWd1cmF0aW9uICovCisgICAgcmVnX21wcmpfeGZlciA9IDE7CisgICAgd2hpbGUgKHJlZ19tcHJqX3hmZXIgPT0gMSk7CisKKyAgICByZWdfbGEyX29lbmIgPSByZWdfbGEyX2llbmEgPSAweEZGRkZGRkZGOyAgICAvLyBbOTU6NjRdCisKKyAgICAvLyBGbGFnIHN0YXJ0IG9mIHRoZSB0ZXN0CisJcmVnX21wcmpfZGF0YWwgPSAweEFCNjAwMDAwOworCisgICAgLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgIC8vIFN0YXJ0IG9mIFVzZXIgRnVuY3Rpb25hbGl0eSBhbmQgdGFrZSBvdmVyIHRoZSBHUElPIFBpbnMKKyAgICAvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAgICAvLyBVc2VyIGJsb2NrIGRlY2lkZSBvbiB0aGUgR1BJTyBmdW5jdGlvbgorICAgIHJlZ19tcHJqX2lvXzM3ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzM2ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzM1ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzM0ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzMzID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzMyID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzMxID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzMwID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzI5ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzI4ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzI3ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzI2ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzI1ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzI0ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzIzID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzIyID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzIxID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzIwID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzE5ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzE4ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzE3ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzE2ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzE1ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzE0ID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzEzID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzEyID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzExID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzEwID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzkgID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzggID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzcgID0gR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzYgPSAgR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzUgPSAgR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzQgPSAgR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzMgPSAgR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzIgPSAgR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzEgPSAgR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworICAgIHJlZ19tcHJqX2lvXzAgPSAgR1BJT19NT0RFX1VTRVJfU1REX0JJRElSRUNUSU9OQUxfUFVMTFVQOworCisgICAgIC8qIEFwcGx5IGNvbmZpZ3VyYXRpb24gKi8KKyAgICByZWdfbXByal94ZmVyID0gMTsKKyAgICB3aGlsZSAocmVnX21wcmpfeGZlciA9PSAxKTsKKyAgICAvLyBTRFJBTSBDb25maWctMgorICAgIHJlZ19tcHJqX2dsb2JsX3JlZzUgID0gMHgxMDAwMTlFOyAKKworCisgICAgLy8gU0RSQU0gQ29uZmlnLTEKKyAgICByZWdfbXByal9nbG9ibF9yZWc0ICA9IDB4MkYxNzIyNDI7CisKKyAgICAvLyBXYWtlIFVwIENQVSBDb3JlCisgICAgcmVnX21wcmpfZ2xvYmxfcmVnMCAgPSAweDA3OyAKKworICAgIC8vIEFkZCBzb21lIGRlbGF5IGZvciB1c2VyIGNvcmUgdG8gYm9vdAorICAgIGZvcihpID0gMDsgaSA8IDQwOyBpICsrKTsKKyAgICBmb3IoaSA9IDA7IGkgPCA0MDsgaSArKyk7CisKKyAgICBpZihyZWdfbXByal9nbG9ibF9yZWc2ICAhPSAweDExMjIzMzQ0KSBiRmFpbCA9IDE7CisgICAgaWYocmVnX21wcmpfZ2xvYmxfcmVnNyAgIT0gMHgyMjMzNDQ1NSkgYkZhaWwgPSAxOworICAgIGlmKHJlZ19tcHJqX2dsb2JsX3JlZzggICE9IDB4MzM0NDU1NjYpIGJGYWlsID0gMTsKKyAgICBpZihyZWdfbXByal9nbG9ibF9yZWc5ICAhPSAweDQ0NTU2Njc3KSBiRmFpbCA9IDE7CisgICAgaWYocmVnX21wcmpfZ2xvYmxfcmVnMTAgIT0gMHg1NTY2Nzc4OCkgYkZhaWwgPSAxOworICAgIGlmKHJlZ19tcHJqX2dsb2JsX3JlZzExICE9IDB4NjY3Nzg4OTkpIGJGYWlsID0gMTsKKworCisgICAgaWYoYkZhaWwgPT0gMCkgeworICAgICAgICByZWdfbXByal9kYXRhbCA9IDB4QUI2MTAwMDA7CisgICAgfSBlbHNlIHsKKyAgICAgICAgcmVnX21wcmpfZGF0YWwgPSAweEFCNjAwMDAwOworICAgIH0KKworCS8vIENvbm5lY3QgdGhlIGhvdXNla2VlcGluZyBTUEkgdG8gdGhlIFNQSSBtYXN0ZXIKKwkvLyBzbyB0aGF0IHRoZSBDU0IgbGluZSBpcyBub3QgbGVmdCBmbG9hdGluZy4gIFRoaXMgYWxsb3dzCisJLy8gYWxsIG9mIHRoZSBHUElPIHBpbnMgdG8gYmUgdXNlZCBmb3IgdXNlciBmdW5jdGlvbnMuCisgICAgICAgIHJlZ19tcHJqX2lvXzMxID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMzAgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18yOSA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzI4ID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMjcgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18yNiA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzI1ID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMjQgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18yMyA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzIyID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMjEgPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18yMCA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzE5ID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKyAgICAgICAgcmVnX21wcmpfaW9fMTggPSBHUElPX01PREVfTUdNVF9TVERfT1VUUFVUOworICAgICAgICByZWdfbXByal9pb18xNyA9IEdQSU9fTU9ERV9NR01UX1NURF9PVVRQVVQ7CisgICAgICAgIHJlZ19tcHJqX2lvXzE2ID0gR1BJT19NT0RFX01HTVRfU1REX09VVFBVVDsKKworCisgICAgIC8qIEFwcGx5IGNvbmZpZ3VyYXRpb24gKi8KKyAgICByZWdfbXByal94ZmVyID0gMTsKKyAgICB3aGlsZSAocmVnX21wcmpfeGZlciA9PSAxKTsKK30KZGlmZiAtLWdpdCBhL3Zlcmlsb2cvZHYvcmlzY19ib290L3Jpc2NfYm9vdF90Yi52IGIvdmVyaWxvZy9kdi9yaXNjX2Jvb3QvcmlzY19ib290X3RiLnYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBjN2Q5OAotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvZHYvcmlzY19ib290L3Jpc2NfYm9vdF90Yi52CkBAIC0wLDAgKzEsMzAzIEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBVc2VyIFJpc2MgQ29yZSBCb290IFZhbGlkYXRpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgWUlGaXZlIGNvcmVzIHByb2plY3QgICAgICAgICAgICAgICAvLy8vCisvLy8vICBodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvY29yZXMveWlmaXZlLyAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAxLiBVc2VyIFJpc2MgY29yZSBpcyBib290ZWQgdXNpbmcgIGNvbXBpbGVkIGNvZGUgb2YgICAgICAvLy8vCisvLy8vICAgICAgICB1c2VyX3Jpc2NfYm9vdC5oZXggICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAyLiBVc2VyIFJpc2MgY29yZSB1c2VzIFNlcmlhbCBGbGFzaCBhbmQgU0RSQU0gdG8gYm9vdCAgICAvLy8vCisvLy8vICAgICAzLiBBZnRlciBzdWNjZXNzZnVsIGJvb3QsIFJpc2MgY29yZSB3aWxsICB3cml0ZSBzaWduYXR1cmUvLy8vCisvLy8vICAgICAgICBpbiB0byAgdXNlciByZWdpc3RlciBmcm9tIDB4MzAwMF8wMDE4IHRvIDB4MzAwMF8wMDJDICAvLy8vCisvLy8vICAgICA0LiBUaHJvdWdoIHRoZSBFeHRlcm5hbCBXaXNoYm9uZSBJbnRlcmZhY2Ugd2UgcmVhZCBiYWNrICAvLy8vCisvLy8vICAgICAgICAgYW5kIHZhbGlkYXRlIHRoZSB1c2VyIHJlZ2lzdGVyIHRvIGRlY2xhcmVkIHBhc3MgZmFpbCAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBUbyBEbzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgIG5vdGhpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBBdXRob3Iocyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgLSBEaW5lc2ggQW5uYXl5YSwgZGluZXNoYUBvcGVuY29yZXMub3JnICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBSZXZpc2lvbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgIDAuMSAtIDEydGggSnVuZSAyMDIxLCBEaW5lc2ggQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIENvcHlyaWdodCAoQykgMjAwMCBBdXRob3JzIGFuZCBPUEVOQ09SRVMuT1JHICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgbWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIHdpdGhvdXQgICAgICAgICAvLy8vCisvLy8vIHJlc3RyaWN0aW9uIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgc3RhdGVtZW50IGlzIG5vdCAgICAvLy8vCisvLy8vIHJlbW92ZWQgZnJvbSB0aGUgZmlsZSBhbmQgdGhhdCBhbnkgZGVyaXZhdGl2ZSB3b3JrIGNvbnRhaW5zICAvLy8vCisvLy8vIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNjbGFpbWVyLiAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgICAvLy8vCisvLy8vIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAvLy8vCisvLy8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgICAvLy8vCisvLy8vIGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSAgICAgICAvLy8vCisvLy8vIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgICAvLy8vCisvLy8vIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgICAgICAvLy8vCisvLy8vIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSAvLy8vCisvLy8vIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCAgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBzb3VyY2U7IGlmIG5vdCwgZG93bmxvYWQgaXQgICAvLy8vCisvLy8vIGZyb20gaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2xncGwuc2h0bWwgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2BkZWZhdWx0X25ldHR5cGUgbm9uZQorCitgdGltZXNjYWxlIDEgbnMgLyAxIHBzCisKK2BpbmNsdWRlICJ1cHJqX25ldGxpc3RzLnYiCitgaW5jbHVkZSAiY2FyYXZlbF9uZXRsaXN0cy52IgorYGluY2x1ZGUgInNwaWZsYXNoLnYiCitgaW5jbHVkZSAibXQ0OGxjOG04YTIudiIKKworbW9kdWxlIHJpc2NfYm9vdF90YjsKKwlyZWcgY2xvY2s7CisJcmVnIFJTVEI7CisJcmVnIENTQjsKKwlyZWcgcG93ZXIxLCBwb3dlcjI7CisJcmVnIHBvd2VyMywgcG93ZXI0OworCisJd2lyZSBncGlvOworCXdpcmUgWzM3OjBdIG1wcmpfaW87CisJd2lyZSBbNzowXSBtcHJqX2lvXzA7CisJd2lyZSBbMTU6MF0gY2hlY2tiaXRzOworCisJYXNzaWduIGNoZWNrYml0cyA9IG1wcmpfaW9bMzE6MTZdOworCisJYXNzaWduIG1wcmpfaW9bM10gPSAoQ1NCID09IDEnYjEpID8gMSdiMSA6IDEnYno7CisKKwkvLyBFeHRlcm5hbCBjbG9jayBpcyB1c2VkIGJ5IGRlZmF1bHQuICBNYWtlIHRoaXMgYXJ0aWZpY2lhbGx5IGZhc3QgZm9yIHRoZQorCS8vIHNpbXVsYXRpb24uICBOb3JtYWxseSB0aGlzIHdvdWxkIGJlIGEgc2xvdyBjbG9jayBhbmQgdGhlIGRpZ2l0YWwgUExMCisJLy8gd291bGQgYmUgdGhlIGZhc3QgY2xvY2suCisKKwlhbHdheXMgIzEyLjUgY2xvY2sgPD0gKGNsb2NrID09PSAxJ2IwKTsKKworCWluaXRpYWwgYmVnaW4KKwkJY2xvY2sgPSAwOworCWVuZAorCisJYGlmZGVmIFdGRFVNUAorICAgICAgICBpbml0aWFsCisgICAgICAgIGJlZ2luCisgICAgICAgICAgICRkdW1wZmlsZSgic2lteC52Y2QiKTsKKyAgICAgICAgICAgJGR1bXB2YXJzKDEscmlzY19ib290X3RiKTsKKyAgICAgICAgICAgLy8kZHVtcHZhcnMoMixyaXNjX2Jvb3RfdGIudXV0KTsKKyAgICAgICAgICAgJGR1bXB2YXJzKDEscmlzY19ib290X3RiLnV1dC5tcHJqLnVfY29yZSk7CisgICAgICAgICAgIC8vJGR1bXB2YXJzKDAscmlzY19ib290X3RiLnVfdXNlcl9zcGlmbGFzaCk7CisJICAgJGRpc3BsYXkoIldhdmVmb3JtIER1bXAgc3RhcnRlZCIpOworICAgICAgICBlbmQKKyAgICAgICAgYGVuZGlmCisKKwlpbml0aWFsIGJlZ2luCisKKwkJLy8gUmVwZWF0IGN5Y2xlcyBvZiAxMDAwIGNsb2NrIGVkZ2VzIGFzIG5lZWRlZCB0byBjb21wbGV0ZSB0ZXN0YmVuY2gKKwkJcmVwZWF0ICg2MDApIGJlZ2luCisJCQlyZXBlYXQgKDEwMDApIEAocG9zZWRnZSBjbG9jayk7CisJCQkvLyAkZGlzcGxheSgiKzEwMDAgY3ljbGVzIik7CisJCWVuZAorCQkkZGlzcGxheSgiJWNbMTszMW0iLDI3KTsKKwkJYGlmZGVmIEdMCisJCQkkZGlzcGxheSAoIk1vbml0b3I6IFRpbWVvdXQsIFRlc3QgdXNlciBSaXNjIEJvb3QgKEdMKSBGYWlsZWQiKTsKKwkJYGVsc2UKKwkJCSRkaXNwbGF5ICgiTW9uaXRvcjogVGltZW91dCwgVGVzdCB1c2VyIFJpc2MgQm9vdCAoUlRMKSBGYWlsZWQiKTsKKwkJYGVuZGlmCisJCSRkaXNwbGF5KCIlY1swbSIsMjcpOworCQkkZmluaXNoOworCWVuZAorCisJaW5pdGlhbCBiZWdpbgorCSAgIHdhaXQoY2hlY2tiaXRzID09IDE2J2ggQUI2MCk7CisJCSRkaXNwbGF5KCJNb25pdG9yOiBUZXN0IFVzZXIgUmlzYyBCb290IFN0YXJ0ZWQiKTsKKwkJd2FpdChjaGVja2JpdHMgPT0gMTYnaCBBQjYxKTsKKwkgICAgCSRkaXNwbGF5KCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKTsKKwkJYGlmZGVmIEdMCisJICAgIAkkZGlzcGxheSgiTW9uaXRvcjogVGVzdCBVc2VyIFJpc2MgQm9vdCAoR0wpIFBhc3NlZCIpOworCQlgZWxzZQorCQkgICAgJGRpc3BsYXkoIk1vbml0b3I6IFRlc3QgVXNlciBSaXNjIEJvb3QgKFJUTCkgUGFzc2VkIik7CisJCWBlbmRpZgorCSAgICAJJGRpc3BsYXkoIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIpOworCSAgICAkZmluaXNoOworCWVuZAorCisJaW5pdGlhbCBiZWdpbgorCQlSU1RCIDw9IDEnYjA7CisJCUNTQiAgPD0gMSdiMTsJCS8vIEZvcmNlIENTQiBoaWdoCisJCSMyMDAwOworCQlSU1RCIDw9IDEnYjE7CSAgICAJLy8gUmVsZWFzZSByZXNldAorCQkjMTcwMDAwOworCQlDU0IgPSAxJ2IwOwkJLy8gQ1NCIGNhbiBiZSByZWxlYXNlZAorCWVuZAorCisJaW5pdGlhbCBiZWdpbgkJLy8gUG93ZXItdXAgc2VxdWVuY2UKKwkJcG93ZXIxIDw9IDEnYjA7CisJCXBvd2VyMiA8PSAxJ2IwOworCQlwb3dlcjMgPD0gMSdiMDsKKwkJcG93ZXI0IDw9IDEnYjA7CisJCSMxMDA7CisJCXBvd2VyMSA8PSAxJ2IxOworCQkjMTAwOworCQlwb3dlcjIgPD0gMSdiMTsKKwkJIzEwMDsKKwkJcG93ZXIzIDw9IDEnYjE7CisJCSMxMDA7CisJCXBvd2VyNCA8PSAxJ2IxOworCWVuZAorCisJLy9hbHdheXMgQChtcHJqX2lvKSBiZWdpbgorCS8vCSMxICRkaXNwbGF5KCJNUFJKLUlPIHN0YXRlID0gJWIgIiwgbXByal9pb1s3OjBdKTsKKwkvL2VuZAorCisJd2lyZSBmbGFzaF9jc2I7CisJd2lyZSBmbGFzaF9jbGs7CisJd2lyZSBmbGFzaF9pbzA7CisJd2lyZSBmbGFzaF9pbzE7CisKKwl3aXJlIFZERDNWMyA9IHBvd2VyMTsKKwl3aXJlIFZERDFWOCA9IHBvd2VyMjsKKwl3aXJlIFVTRVJfVkREM1YzID0gcG93ZXIzOworCXdpcmUgVVNFUl9WREQxVjggPSBwb3dlcjQ7CisJd2lyZSBWU1MgPSAxJ2IwOworCisJY2FyYXZlbCB1dXQgKAorCQkudmRkaW8JICAoVkREM1YzKSwKKwkJLnZzc2lvCSAgKFZTUyksCisJCS52ZGRhCSAgKFZERDNWMyksCisJCS52c3NhCSAgKFZTUyksCisJCS52Y2NkCSAgKFZERDFWOCksCisJCS52c3NkCSAgKFZTUyksCisJCS52ZGRhMSAgICAoVVNFUl9WREQzVjMpLAorCQkudmRkYTIgICAgKFVTRVJfVkREM1YzKSwKKwkJLnZzc2ExCSAgKFZTUyksCisJCS52c3NhMgkgIChWU1MpLAorCQkudmNjZDEJICAoVVNFUl9WREQxVjgpLAorCQkudmNjZDIJICAoVVNFUl9WREQxVjgpLAorCQkudnNzZDEJICAoVlNTKSwKKwkJLnZzc2QyCSAgKFZTUyksCisJCS5jbG9jawkgIChjbG9jayksCisJCS5ncGlvICAgICAoZ3BpbyksCisgICAgICAgIC5tcHJqX2lvICAobXByal9pbyksCisJCS5mbGFzaF9jc2IoZmxhc2hfY3NiKSwKKwkJLmZsYXNoX2NsayhmbGFzaF9jbGspLAorCQkuZmxhc2hfaW8wKGZsYXNoX2lvMCksCisJCS5mbGFzaF9pbzEoZmxhc2hfaW8xKSwKKwkJLnJlc2V0YgkgIChSU1RCKQorCSk7CisKKwlzcGlmbGFzaCAjKAorCQkuRklMRU5BTUUoInJpc2NfYm9vdC5oZXgiKQorCSkgc3BpZmxhc2ggKAorCQkuY3NiKGZsYXNoX2NzYiksCisJCS5jbGsoZmxhc2hfY2xrKSwKKwkJLmlvMChmbGFzaF9pbzApLAorCQkuaW8xKGZsYXNoX2lvMSksCisJCS5pbzIoKSwJCQkvLyBub3QgdXNlZAorCQkuaW8zKCkJCQkvLyBub3QgdXNlZAorCSk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIENvbm5lY3QgUXVhZCBGbGFzaCB0byBmb3IgdXNyIFJpc2MgQ29yZQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICB3aXJlIHVzZXJfZmxhc2hfY2xrID0gbXByal9pb1szMF07CisgICB3aXJlIHVzZXJfZmxhc2hfY3NiID0gbXByal9pb1szMV07CisgICAvL3RyaSAgdXNlcl9mbGFzaF9pbzAgPSBtcHJqX2lvWzMzXTsKKyAgIC8vdHJpICB1c2VyX2ZsYXNoX2lvMSA9IG1wcmpfaW9bMzRdOworICAgLy90cmkgIHVzZXJfZmxhc2hfaW8yID0gbXByal9pb1szNV07CisgICAvL3RyaSAgdXNlcl9mbGFzaF9pbzMgPSBtcHJqX2lvWzM2XTsKKworICAgLy8gUXVhcmQgZmxhc2gKKwlzcGlmbGFzaCAjKAorCQkuRklMRU5BTUUoInVzZXJfcmlzY19ib290LmhleCIpCisJKSB1X3VzZXJfc3BpZmxhc2ggKAorCQkuY3NiKHVzZXJfZmxhc2hfY3NiKSwKKwkJLmNsayh1c2VyX2ZsYXNoX2NsayksCisJCS5pbzAobXByal9pb1szMl0pLAorCQkuaW8xKG1wcmpfaW9bMzNdKSwKKwkJLmlvMihtcHJqX2lvWzM0XSksCisJCS5pbzMobXByal9pb1szNV0pCQorCSk7CisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEludGVncmF0ZSB0aGUgU0RSQU0gOCBCSVQgTWVtb3J5CisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCit0cmkgWzc6MF0gICAgRHEgICAgICAgICAgICAgICAgICA7IC8vIFNEUkFNIFJlYWQvV3JpdGUgRGF0YSBCdXMKK3dpcmUgWzA6MF0gICAgc2RyX2RxbSAgICAgICAgICAgIDsgLy8gU0RSQU0gREFUQSBNYXNrCit3aXJlIFsxOjBdICAgIHNkcl9iYSAgICAgICAgICAgICA7IC8vIFNEUkFNIEJhbmsgU2VsZWN0Cit3aXJlIFsxMjowXSAgIHNkcl9hZGRyICAgICAgICAgICA7IC8vIFNEUkFNIEFEUkVTUword2lyZSAgICAgICAgICBzZHJfY3NfbiAgICAgICAgICAgOyAvLyBjaGlwIHNlbGVjdAord2lyZSAgICAgICAgICBzZHJfY2tlICAgICAgICAgICAgOyAvLyBjbG9jayBnYXRlCit3aXJlICAgICAgICAgIHNkcl9yYXNfbiAgICAgICAgICA7IC8vIHJhcword2lyZSAgICAgICAgICBzZHJfY2FzX24gICAgICAgICAgOyAvLyBjYXMKK3dpcmUgICAgICAgICAgc2RyX3dlX24gICAgICAgICAgIDsgLy8gd3JpdGUgZW5hYmxlICAgICAgICAKK3dpcmUgICAgICAgICAgc2RyYW1fY2xrICAgICAgICAgOyAgICAgIAorCisvL2Fzc2lnbiAgRHFbNzowXSAgICAgICAgICAgPSAgICBtcHJqX2lvIFs3OjBdOworYXNzaWduICBzZHJfYWRkclsxMjowXSAgICA9ICAgIG1wcmpfaW8gWzIwOjhdICAgICA7Cithc3NpZ24gIHNkcl9iYVsxOjBdICAgICAgID0gICAgbXByal9pbyBbMjI6MjFdICAgIDsKK2Fzc2lnbiAgc2RyX2RxbVswXSAgICAgICAgPSAgICBtcHJqX2lvIFsyM10gICAgICAgOworYXNzaWduICBzZHJfd2VfbiAgICAgICAgICA9ICAgIG1wcmpfaW8gWzI0XSAgICAgICA7Cithc3NpZ24gIHNkcl9jYXNfbiAgICAgICAgID0gICAgbXByal9pbyBbMjVdICAgICAgIDsKK2Fzc2lnbiAgc2RyX3Jhc19uICAgICAgICAgPSAgICBtcHJqX2lvIFsyNl0gICAgICAgOworYXNzaWduICBzZHJfY3NfbiAgICAgICAgICA9ICAgIG1wcmpfaW8gWzI3XSAgICAgICA7Cithc3NpZ24gIHNkcl9ja2UgICAgICAgICAgID0gICAgbXByal9pbyBbMjhdICAgICAgIDsKK2Fzc2lnbiAgc2RyYW1fY2xrICAgICAgICAgPSAgICBtcHJqX2lvIFsyOV0gICAgICAgOworCisvLyB0byBmaXggdGhlIHNkcmFtIGludGVyZmFjZSB0aW1pbmcgaXNzdWUKK3dpcmUgIygyLjApIHNkcmFtX2Nsa19kICAgPSBzZHJhbV9jbGs7CisKKwkvLyBTRFJBTSA4Yml0CittdDQ4bGM4bThhMiAjKC5kYXRhX2JpdHMoOCkpIHVfc2RyYW04ICgKKyAgICAgICAgICAuRHEgICAgICAgICAgICAgICAgIChtcHJqX2lvIFs3OjBdICAgICAgKSAsIAorICAgICAgICAgIC5BZGRyICAgICAgICAgICAgICAgKHNkcl9hZGRyWzExOjBdICAgICApLCAKKyAgICAgICAgICAuQmEgICAgICAgICAgICAgICAgIChzZHJfYmEgICAgICAgICAgICAgKSwgCisgICAgICAgICAgLkNsayAgICAgICAgICAgICAgICAoc2RyYW1fY2xrX2QgICAgICAgICksIAorICAgICAgICAgIC5Da2UgICAgICAgICAgICAgICAgKHNkcl9ja2UgICAgICAgICAgICApLCAKKyAgICAgICAgICAuQ3NfbiAgICAgICAgICAgICAgIChzZHJfY3NfbiAgICAgICAgICAgKSwgCisgICAgICAgICAgLlJhc19uICAgICAgICAgICAgICAoc2RyX3Jhc19uICAgICAgICAgICksIAorICAgICAgICAgIC5DYXNfbiAgICAgICAgICAgICAgKHNkcl9jYXNfbiAgICAgICAgICApLCAKKyAgICAgICAgICAuV2VfbiAgICAgICAgICAgICAgIChzZHJfd2VfbiAgICAgICAgICAgKSwgCisgICAgICAgICAgLkRxbSAgICAgICAgICAgICAgICAoc2RyX2RxbSAgICAgICAgICAgICkKKyAgICAgKTsKKworCisKKy8qKgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUklTQyBJTUVNIGFtZCBETUVNIE1vbml0b3JpbmcgVEFTSworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorbG9naWMgW2BTQ1IxX0RNRU1fQVdJRFRILTE6MF0gICAgICAgICAgIGNvcmUyaW1lbV9hZGRyX29fcjsgICAgICAgICAgIC8vIERNRU0gYWRkcmVzcworbG9naWMgW2BTQ1IxX0RNRU1fQVdJRFRILTE6MF0gICAgICAgICAgIGNvcmUyZG1lbV9hZGRyX29fcjsgICAgICAgICAgIC8vIERNRU0gYWRkcmVzcworbG9naWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvcmUyZG1lbV9jbWRfb19yOworCitgZGVmaW5lIFJJU0NfQ09SRSAgdGVzdF90Yi51dXQubXByai51X2NvcmUudV9yaXNjdl90b3AuaV9jb3JlX3RvcAorCithbHdheXNAKHBvc2VkZ2UgYFJJU0NfQ09SRS5jbGspIGJlZ2luCisgICAgaWYoYFJJU0NfQ09SRS5pbWVtMmNvcmVfcmVxX2Fja19pICYmIGBSSVNDX0NPUkUuY29yZTJpbWVtX3JlcV9vKQorICAgICAgICAgIGNvcmUyaW1lbV9hZGRyX29fciA8PSBgUklTQ19DT1JFLmNvcmUyaW1lbV9hZGRyX287CisKKyAgICBpZihgUklTQ19DT1JFLmRtZW0yY29yZV9yZXFfYWNrX2kgJiYgYFJJU0NfQ09SRS5jb3JlMmRtZW1fcmVxX28pIGJlZ2luCisgICAgICAgICAgY29yZTJkbWVtX2FkZHJfb19yIDw9IGBSSVNDX0NPUkUuY29yZTJkbWVtX2FkZHJfbzsKKyAgICAgICAgICBjb3JlMmRtZW1fY21kX29fciAgPD0gYFJJU0NfQ09SRS5jb3JlMmRtZW1fY21kX287CisgICAgZW5kCisKKyAgICBpZihgUklTQ19DT1JFLmltZW0yY29yZV9yZXNwX2kgIT0wKQorICAgICAgICAgICRkaXNwbGF5KCJSSVNDVi1ERUJVRyA9PiBJTUVNIEFERFJFU1M6ICV4IFJlYWQgRGF0YSA6ICV4IFJlc29uc2U6ICV4IiwgY29yZTJpbWVtX2FkZHJfb19yLGBSSVNDX0NPUkUuaW1lbTJjb3JlX3JkYXRhX2ksYFJJU0NfQ09SRS5pbWVtMmNvcmVfcmVzcF9pKTsKKyAgICBpZigoYFJJU0NfQ09SRS5kbWVtMmNvcmVfcmVzcF9pICE9MCkgJiYgY29yZTJkbWVtX2NtZF9vX3IpCisgICAgICAgICAgJGRpc3BsYXkoIlJJU0NWLURFQlVHID0+IERNRU0gQUREUkVTUzogJXggV3JpdGUgRGF0YTogJXggUmVzb25zZTogJXgiLCBjb3JlMmRtZW1fYWRkcl9vX3IsYFJJU0NfQ09SRS5jb3JlMmRtZW1fd2RhdGFfbyxgUklTQ19DT1JFLmRtZW0yY29yZV9yZXNwX2kpOworICAgIGlmKChgUklTQ19DT1JFLmRtZW0yY29yZV9yZXNwX2kgIT0wKSAmJiAhY29yZTJkbWVtX2NtZF9vX3IpCisgICAgICAgICAgJGRpc3BsYXkoIlJJU0NWLURFQlVHID0+IERNRU0gQUREUkVTUzogJXggUkVBRCBEYXRhIDogJXggUmVzb25zZTogJXgiLCBjb3JlMmRtZW1fYWRkcl9vX3IsYFJJU0NfQ09SRS5kbWVtMmNvcmVfcmRhdGFfaSxgUklTQ19DT1JFLmRtZW0yY29yZV9yZXNwX2kpOworZW5kCisqLworZW5kbW9kdWxlCitgZGVmYXVsdF9uZXR0eXBlIHdpcmUKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvZHYvcmlzY19ib290L3J1bl9pdmVyaWxvZyBiL3Zlcmlsb2cvZHYvcmlzY19ib290L3J1bl9pdmVyaWxvZwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi4wY2FmY2RlCi0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9kdi9yaXNjX2Jvb3QvcnVuX2l2ZXJpbG9nCkBAIC0wLDAgKzEsMTAgQEAKKworI2FkZCAtRFdGRFVNUCB0byBlbmFibGUgd2F2ZWZvcm0gZHVtcAoraXZlcmlsb2cgLWcyMDA1LXN2IC1ERlVOQ1RJT05BTCAtRFNJTSAtSSAkUERLX1BBVEggXAorLUkgJENBUkFWRUxfUk9PVC92ZXJpbG9nL2R2L2NhcmF2ZWwgLUkgJENBUkFWRUxfUk9PVC92ZXJpbG9nL3J0bCBcCistSSAuLi9tb2RlbCAgICAtSSAuLi8uLi8uLi92ZXJpbG9nL3J0bCBcCistSSAuLi8uLi8uLi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zcmMvaW5jbHVkZXMgICAgLUkgLi4vLi4vLi4vdmVyaWxvZy9ydGwvc2RyYW1fY3RybC9zcmMvZGVmcyBcCityaXNjX2Jvb3RfdGIudiAtbyByaXNjX2Jvb3QudnZwIAorCit2dnAgcmlzY19ib290LnZ2cAorcm0gcmlzY19ib290LnZ2cApkaWZmIC0tZ2l0IGEvdmVyaWxvZy9kdi9yaXNjX2Jvb3QvdXNlcl9yaXNjX2Jvb3QuaGV4IGIvdmVyaWxvZy9kdi9yaXNjX2Jvb3QvdXNlcl9yaXNjX2Jvb3QuaGV4Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFmZGQ5NmMKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL2R2L3Jpc2NfYm9vdC91c2VyX3Jpc2NfYm9vdC5oZXgKQEAgLTAsMCArMSw3OSBAQAorQDAwMDAwMDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMTMgMDAgMDAgMDAgNkYgMDAgMDAgMDAgRkYgRkYgRkYgRkYNCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCis2RiAwMCBFMCAxOCAxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMA0KKzEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwDQorMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDANCisxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMA0KKzkzIDAwIDAwIDAwIDEzIDAxIDAwIDAwIDkzIDAxIDAwIDAwIDEzIDAyIDAwIDAwDQorOTMgMDIgMDAgMDAgMTMgMDMgMDAgMDAgOTMgMDMgMDAgMDAgMTMgMDQgMDAgMDANCis5MyAwNCAwMCAwMCAxMyAwNSAwMCAwMCA5MyAwNSAwMCAwMCAxMyAwNiAwMCAwMA0KKzkzIDA2IDAwIDAwIDEzIDA3IDAwIDAwIDkzIDA3IDAwIDAwIDEzIDA4IDAwIDAwDQorOTMgMDggMDAgMDAgMTMgMDkgMDAgMDAgOTMgMDkgMDAgMDAgMTMgMEEgMDAgMDANCis5MyAwQSAwMCAwMCAxMyAwQiAwMCAwMCA5MyAwQiAwMCAwMCAxMyAwQyAwMCAwMA0KKzkzIDBDIDAwIDAwIDEzIDBEIDAwIDAwIDkzIDBEIDAwIDAwIDEzIDBFIDAwIDAwDQorOTMgMEUgMDAgMDAgMTMgMEYgMDAgMDAgOTMgMEYgMDAgMDAgOTcgMDEgNDggMDANCis5MyA4MSA0MSA2MiAxMyAwNSAwMCA0MCA5NyAwNSA0OCAwMCA5MyA4NSA4NSBENw0KKzE3IDA2IDQ4IDAwIDEzIDA2IDA2IEUzIDYzIDBEIEI1IDAwIDI5IEEwIDE0IDQxDQorOTQgQzEgMTEgMDUgOTEgMDUgRTMgOUMgQzUgRkUgMTcgMDYgNDggMDAgMTMgMDYNCis2NiBFMSA5NyAwNSA0OCAwMCA5MyA4NSBFNSBFMCAyMSBBMCAyMyAyMCAwNiAwMA0KKzExIDA2IEUzIDlEIEM1IEZFIDE3IDAxIDQ5IDAwIDEzIDAxIEExIEQzIDE3IDA1DQorNDggMDAgMTMgMDUgMjUgREYgMTcgMDYgNDggMDAgMTMgMDYgQTYgREUgQjMgMDUNCitBNiA0MCAxNyAwNyA0OSAwMCAxMyAwNyBFNyA5MSAzMyAwMiBCNyA0MCA5MiA4NQ0KKzE3IDA2IDQ4IDAwIDEzIDA2IDA2IEREIDI5IEEwIDE0IDQxIDk0IEMxIDExIDA1DQorOTEgMDUgRTMgMUMgQzUgRkUgMjEgQTAgMjMgQTAgMDUgMDAgOTEgMDUgRTMgOUQNCitFNSBGRSBCNyAwMiA0OSAwMCAwNSA0MyAyMyBBMCA2MiAwMCBCNyAwMiA0OSAwMA0KKzkxIDAyIDEzIDAzIDMwIDA2IDIzIEEwIDYyIDAwIEI3IDAyIDQ5IDAwIEMxIDAyDQorN0QgNTMgMjMgQTAgNjIgMDAgMjMgQTIgNjIgMDAgMDEgNDUgODEgNDUgOTcgMDINCis0OCAwMCBFNyA4MCAyMiBDQyA5NyAwMiA0OCAwMCA5MyA4MiBBMiBEMSA2RCA3MQ0KKzA2IEMyIDBBIEM0IDBFIEM2IDEyIEM4IDE2IENBIDFBIENDIDFFIENFIDIyIEQwDQorMjYgRDIgMkEgRDQgMkUgRDYgMzIgRDggMzYgREEgM0EgREMgM0UgREUgQzIgQzANCitDNiBDMiBDQSBDNCBDRSBDNiBEMiBDOCBENiBDQSBEQSBDQyBERSBDRSBFMiBEMA0KK0U2IEQyIEVBIEQ0IEVFIEQ2IEYyIEQ4IEY2IERBIEZBIERDIEZFIERFIDczIDI1DQorMjAgMzQgRjMgMjUgMTAgMzQgMEEgODYgRUYgMDAgODAgMDQgOTIgNDAgMjIgNDENCitCMiA0MSA0MiA0MiBEMiA0MiA2MiA0MyBGMiA0MyAwMiA1NCA5MiA1NCAyMiA1NQ0KK0IyIDU1IDQyIDU2IEQyIDU2IDYyIDU3IEYyIDU3IDA2IDQ4IDk2IDQ4IDI2IDQ5DQorQjYgNDkgNDYgNEEgRDYgNEEgNjYgNEIgRjYgNEIgMDYgNUMgOTYgNUMgMjYgNUQNCitCNiA1RCA0NiA1RSBENiA1RSA2NiA1RiBGNiA1RiA1MSA2MSA3MyAwMCAyMCAzMA0KKzZGIEYwIDVGIEQxIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCitAMDAwMDA0MDANCiszNyAzNyAyMiAxMSBCNyAwNyAwMCAzMCA5MyAwMiA0NyAzNCAzNyA0MyAzMyAyMg0KKzIzIEFDIDU3IDAwIDkzIDAzIDUzIDQ1IDM3IDU1IDQ0IDMzIDIzIEFFIDc3IDAwDQorOTMgMDUgNjUgNTYgMzcgNjYgNTUgNDQgOEMgRDMgOTMgMDYgNzYgNjcgMzcgNzgNCis2NiA1NSBENCBEMyA5MyAwOCA4OCA3OCAzNyA5RSA3NyA2NiAyMyBBNCAxNyAwMw0KKzkzIDBFIDlFIDg5IDIzIEE2IEQ3IDAzIDAxIEEwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCis5NyAwMiBCOCBGRiA5MyA4MiA0MiAwOSA4MiA4MiAxMyAwMCAwMCAwMCAxMyAwMA0KKzAwIDAwIDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDAxIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KK0AwMDAwMDRBMA0KKzEzIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L01ha2VmaWxlIGIvdmVyaWxvZy9kdi91c2VyX3Jpc2NfYm9vdC9NYWtlZmlsZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNzQ5OWM2Ci0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9kdi91c2VyX3Jpc2NfYm9vdC9NYWtlZmlsZQpAQCAtMCwwICsxLDgzIEBACisjIFNQRFgtRmlsZUNvcHlyaWdodFRleHQ6IDIwMjAgRWZhYmxlc3MgQ29ycG9yYXRpb24KKyMKKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCisKKyMjIENhcmF2ZWwgUG9pbnRlcnMKK0NBUkFWRUxfUk9PVCA/PSAuLi8uLi8uLi9jYXJhdmVsCitDQVJBVkVMX1BBVEggPz0gJChDQVJBVkVMX1JPT1QpCitDQVJBVkVMX0ZJUk1XQVJFX1BBVEggPSAkKENBUkFWRUxfUEFUSCkvdmVyaWxvZy9kdi9jYXJhdmVsCitDQVJBVkVMX1ZFUklMT0dfUEFUSCAgPSAkKENBUkFWRUxfUEFUSCkvdmVyaWxvZworQ0FSQVZFTF9SVExfUEFUSCA9ICQoQ0FSQVZFTF9WRVJJTE9HX1BBVEgpL3J0bAorQ0FSQVZFTF9CRUhBVklPVVJBTF9NT0RFTFMgPSAkKENBUkFWRUxfVkVSSUxPR19QQVRIKS9kdi9jYXJhdmVsCisKKyMjIFVzZXIgUHJvamVjdCBQb2ludGVycworVVBSSl9WRVJJTE9HX1BBVEggPz0gLi4vLi4vLi4vdmVyaWxvZworVVBSSl9SVExfUEFUSCA9ICQoVVBSSl9WRVJJTE9HX1BBVEgpL3J0bAorVVBSSl9CRUhBVklPVVJBTF9NT0RFTFMgPSAuLi9tb2RlbAorVVBSSl9JTkNMVURFX1BBVEgxID0gJChVUFJKX1JUTF9QQVRIKS9zeW50YWNvcmUvc2NyMS9zcmMvaW5jbHVkZXMKK1VQUkpfSU5DTFVERV9QQVRIMiA9ICQoVVBSSl9SVExfUEFUSCkvc2RyYW1fY3RybC9zcmMvZGVmcworCisjIyBSSVNDViBHQ0MgCitHQ0NfUEFUSD89L2VmL2FwcHMvYmluCitHQ0NfUFJFRklYPz1yaXNjdjY0LXVua25vd24tZWxmCitQREtfUEFUSD89L2VmL3RlY2gvU1cvc2t5MTMwQQorCisjIyBTaW11bGF0aW9uIG1vZGU6IFJUTC9HTAorU0lNPz1SVEwKKworLlNVRkZJWEVTOgorCitQQVRURVJOID0gdXNlcl9yaXNjX2Jvb3QKKworYWxsOiAgJHtQQVRURVJOOj0udmNkfQorCitoZXg6ICAke1BBVFRFUk46PS5oZXh9CisKK3Z2cDogICR7UEFUVEVSTjo9LnZ2cH0KKworJS52dnA6ICVfdGIudiAlLmhleAoraWZlcSAoJChTSU0pLFJUTCkKKwlpdmVyaWxvZyAtZzIwMDUtc3YgLURGVU5DVElPTkFMIC1EU0lNIC1JICQoUERLX1BBVEgpIFwKKwktSSAkKENBUkFWRUxfQkVIQVZJT1VSQUxfTU9ERUxTKSAtSSAkKENBUkFWRUxfUlRMX1BBVEgpIFwKKwktSSAkKFVQUkpfQkVIQVZJT1VSQUxfTU9ERUxTKSAgICAtSSAkKFVQUkpfUlRMX1BBVEgpIFwKKwktSSAkKFVQUkpfSU5DTFVERV9QQVRIMSkgICAgLUkgJChVUFJKX0lOQ0xVREVfUEFUSDIpIFwKKwkkPCAtbyAkQCAKK2Vsc2UgIAorCWl2ZXJpbG9nIC1ERlVOQ1RJT05BTCAtRFNJTSAtREdMIC1JICQoUERLX1BBVEgpIFwKKwktSSAkKENBUkFWRUxfQkVIQVZJT1VSQUxfTU9ERUxTKSAtSSAkKENBUkFWRUxfUlRMX1BBVEgpIC1JICQoQ0FSQVZFTF9WRVJJTE9HX1BBVEgpIFwKKwktSSAkKFVQUkpfQkVIQVZJT1VSQUxfTU9ERUxTKSAtSSQoVVBSSl9SVExfUEFUSCkgICAtSSAkKFVQUkpfVkVSSUxPR19QQVRIKSBcCisJJDwgLW8gJEAgCitlbmRpZgorCislLnZjZDogJS52dnAKKwl2dnAgJDwKKworJS5lbGY6ICUuYyAkKENBUkFWRUxfRklSTVdBUkVfUEFUSCkvc2VjdGlvbnMubGRzICQoQ0FSQVZFTF9GSVJNV0FSRV9QQVRIKS9zdGFydC5zCisJJHtHQ0NfUFJFRklYfS1nY2MgLUkgJChDQVJBVkVMX1BBVEgpIC1tYXJjaD1ydjMyaW1jIC1tYWJpPWlscDMyIC1XbCwtQnN0YXRpYywtVCwkKENBUkFWRUxfRklSTVdBUkVfUEFUSCkvc2VjdGlvbnMubGRzLC0tc3RyaXAtZGVidWcgLWZmcmVlc3RhbmRpbmcgLW5vc3RkbGliIC1vICRAICQoQ0FSQVZFTF9GSVJNV0FSRV9QQVRIKS9zdGFydC5zICQ8CisKKyUuaGV4OiAlLmVsZgorCSR7R0NDX1BSRUZJWH0tb2JqY29weSAtTyB2ZXJpbG9nICQ8ICRAIAorCSMgdG8gZml4IGZsYXNoIGJhc2UgYWRkcmVzcworCXNlZCAtaSAncy9AMTAwMDAwMDAvQDAwMDAwMDAwL2cnICRACisKKyUuYmluOiAlLmVsZgorCSR7R0NDX1BSRUZJWH0tb2JqY29weSAtTyBiaW5hcnkgJDwgL2Rldi9zdGRvdXQgfCB0YWlsIC1jICsxMDQ4NTc3ID4gJEAKKworIyAtLS0tIENsZWFuIC0tLS0KKworY2xlYW46CisJcm0gLWYgKi5lbGYgKi5oZXggKi5iaW4gKi52dnAgKi52Y2QgKi5sb2cKKworLlBIT05ZOiBjbGVhbiBoZXggYWxsCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L3J1bl9pdmVyaWxvZyBiL3Zlcmlsb2cvZHYvdXNlcl9yaXNjX2Jvb3QvcnVuX2l2ZXJpbG9nCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFkODI5OGQKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L3J1bl9pdmVyaWxvZwpAQCAtMCwwICsxLDIwIEBACityaXNjdjY0LXVua25vd24tZWxmLWdjYyAtTzIgLWZ1bnJvbGwtbG9vcHMgLWZwZWVsLWxvb3BzIC1mZ2NzZS1zbSAtZmdjc2UtbGFzICAtRF9fUlZDX0VYVCAtc3RhdGljIC1zdGQ9Z251OTkgLWZuby1jb21tb24gLWZuby1idWlsdGluLXByaW50ZiAtRFRDTT0xIC1XYSwtbWFyY2g9cnYzMmltYyAtbWFyY2g9cnYzMmltYyAtbWFiaT1pbHAzMiAtREZMQUdTX1NUUj1cIiItTzIgLWZ1bnJvbGwtbG9vcHMgLWZwZWVsLWxvb3BzIC1mZ2NzZS1zbSAtZmdjc2UtbGFzICJcIiAgLWMgLUkuLyAtSS4uLy4uL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uICB1c2VyX3Jpc2NfYm9vdC5jIC1vIHVzZXJfcmlzY19ib290Lm8KKworcmlzY3Y2NC11bmtub3duLWVsZi1nY2MgLU8yIC1mdW5yb2xsLWxvb3BzIC1mcGVlbC1sb29wcyAtZmdjc2Utc20gLWZnY3NlLWxhcyAgLURfX1JWQ19FWFQgLXN0YXRpYyAtc3RkPWdudTk5IC1mbm8tY29tbW9uIC1mbm8tYnVpbHRpbi1wcmludGYgLURUQ009MSAtV2EsLW1hcmNoPXJ2MzJpbWMgLW1hcmNoPXJ2MzJpbWMgLW1hYmk9aWxwMzIgLURGTEFHU19TVFI9XCIiLU8yIC1mdW5yb2xsLWxvb3BzIC1mcGVlbC1sb29wcyAtZmdjc2Utc20gLWZnY3NlLWxhcyAiXCIgIC1EX19BU1NFTUJMWV9fPTEgLWMgLUkuLyAtSS4uLy4uL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uLyAgLi4vLi4vcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vY3J0X3RjbS5TIC1vIGNydF90Y20ubworCityaXNjdjY0LXVua25vd24tZWxmLWdjYyAtbyB1c2VyX3Jpc2NfYm9vdC5lbGYgLVQgLi4vLi4vcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vbGlua190Y20ubGQgdXNlcl9yaXNjX2Jvb3QubyBjcnRfdGNtLm8gLW5vc3RhcnRmaWxlcyAtbm9zdGRsaWIgLWxjIC1sZ2NjIC1tYXJjaD1ydjMyaW1jIC1tYWJpPWlscDMyCisKK3Jpc2N2NjQtdW5rbm93bi1lbGYtb2JqY29weSAtTyB2ZXJpbG9nIHVzZXJfcmlzY19ib290LmVsZiB1c2VyX3Jpc2NfYm9vdC5oZXgKKworcmlzY3Y2NC11bmtub3duLWVsZi1vYmpkdW1wIC1EIHVzZXJfcmlzY19ib290LmVsZiA+IHVzZXJfcmlzY19ib290LmR1bXAKKworcm0gY3J0X3RjbS5vIHVzZXJfcmlzY19ib290Lm8KKworI2l2ZXJpbG9nIHdpdGggd2F2ZWZvcm0gZHVtcAorI2l2ZXJpbG9nIC1nMjAwNS1zdiAtRFdGRFVNUCAtSSAkUERLX1BBVEggLUkgLi4vIC1JIC4uLy4uLy4uL3Zlcmlsb2cvcnRsIC1JIC4uLy4uLy4uL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NyYy9pbmNsdWRlcyAgIC1JIC4uLy4uLy4uL3Zlcmlsb2cvcnRsL3NkcmFtX2N0cmwvc3JjL2RlZnMgLUkgJCRDQVJBVkVMX1JPT1QvdmVyaWxvZy9kdi9jYXJhdmVsIC1JIC4uL21vZGVsIHVzZXJfcmlzY19ib290X3RiLnYgLW8gdXNlcl9yaXNjX2Jvb3RfdGIudnZwCisKK2l2ZXJpbG9nIC1nMjAwNS1zdiAtSSAkUERLX1BBVEggLUkgLi4vIC1JIC4uLy4uLy4uL3Zlcmlsb2cvcnRsIC1JIC4uLy4uLy4uL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NyYy9pbmNsdWRlcyAgIC1JIC4uLy4uLy4uL3Zlcmlsb2cvcnRsL3NkcmFtX2N0cmwvc3JjL2RlZnMgLUkgJENBUkFWRUxfUk9PVC92ZXJpbG9nL2R2L2NhcmF2ZWwgLUkgLi4vbW9kZWwgdXNlcl9yaXNjX2Jvb3RfdGIudiAtbyB1c2VyX3Jpc2NfYm9vdF90Yi52dnAKKwordnZwIHVzZXJfcmlzY19ib290X3RiLnZ2cCB8IHRlZSB0ZXN0LmxvZworCitccm0gLXJmIHVzZXJfcmlzY19ib290X3RiLnZ2cApkaWZmIC0tZ2l0IGEvdmVyaWxvZy9kdi91c2VyX3Jpc2NfYm9vdC91cHJqX25ldGxpc3RzLnYgYi92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L3VwcmpfbmV0bGlzdHMudgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NWFmNGE5Ci0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9kdi91c2VyX3Jpc2NfYm9vdC91cHJqX25ldGxpc3RzLnYKQEAgLTAsMCArMSw3NCBAQAorLy8gU1BEWC1GaWxlQ29weXJpZ2h0VGV4dDogMjAyMCBFZmFibGVzcyBDb3Jwb3JhdGlvbgorLy8KKy8vIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOworLy8geW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorLy8gWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisvLworLy8gICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKy8vCisvLyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisvLyBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorLy8gV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisvLyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisvLyBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKy8vIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBBcGFjaGUtMi4wCisKKy8vIEluY2x1ZGUgY2FyYXZlbCBnbG9iYWwgZGVmaW5lcyBmb3IgdGhlIG51bWJlciBvZiB0aGUgdXNlciBwcm9qZWN0IElPIHBhZHMgCitgZGVmaW5lIFVTRV9QT1dFUl9QSU5TCisKKyAgICBgaW5jbHVkZSAic3BpX21hc3Rlci9zcmMvc3BpbV90b3Auc3YiCisgICAgYGluY2x1ZGUgInNwaV9tYXN0ZXIvc3JjL3NwaW1fcmVncy5zdiIKKyAgICBgaW5jbHVkZSAic3BpX21hc3Rlci9zcmMvc3BpbV9jbGtnZW4uc3YiCisgICAgYGluY2x1ZGUgInNwaV9tYXN0ZXIvc3JjL3NwaW1fY3RybC5zdiIKKyAgICBgaW5jbHVkZSAic3BpX21hc3Rlci9zcmMvc3BpbV9yeC5zdiIKKyAgICBgaW5jbHVkZSAic3BpX21hc3Rlci9zcmMvc3BpbV90eC5zdiIKKworICAgICBgaW5jbHVkZSAic2RyYW1fY3RybC9zcmMvdG9wL3NkcmNfdG9wLnYiIAorICAgICBgaW5jbHVkZSAic2RyYW1fY3RybC9zcmMvd2Iyc2RyYy93YjJzZHJjLnYiIAorICAgICBgaW5jbHVkZSAibGliL2FzeW5jX2ZpZm8uc3YiICAKKyAgICAgYGluY2x1ZGUgInNkcmFtX2N0cmwvc3JjL2NvcmUvc2RyY19jb3JlLnYiCisgICAgIGBpbmNsdWRlICJzZHJhbV9jdHJsL3NyYy9jb3JlL3NkcmNfYmFua19jdGwudiIKKyAgICAgYGluY2x1ZGUgInNkcmFtX2N0cmwvc3JjL2NvcmUvc2RyY19iYW5rX2ZzbS52IgorICAgICBgaW5jbHVkZSAic2RyYW1fY3RybC9zcmMvY29yZS9zZHJjX2JzX2NvbnZlcnQudiIKKyAgICAgYGluY2x1ZGUgInNkcmFtX2N0cmwvc3JjL2NvcmUvc2RyY19yZXFfZ2VuLnYiCisgICAgIGBpbmNsdWRlICJzZHJhbV9jdHJsL3NyYy9jb3JlL3NkcmNfeGZyX2N0bC52IgorCisgICAgIGBpbmNsdWRlICJsaWIvcmVnaXN0ZXJzLnYiCisgICAgIGBpbmNsdWRlICJsaWIvY2xrX2N0bC52IgorICAgICBgaW5jbHVkZSAiZGlnaXRhbF9jb3JlL3NyYy9nbGJsX2NmZy5zdiIKKyAgICAgYGluY2x1ZGUgImRpZ2l0YWxfY29yZS9zcmMvZGlnaXRhbF9jb3JlLnN2IgorCisgICAgIGBpbmNsdWRlICJ3Yl9pbnRlcmNvbm5lY3Qvc3JjL3diX2FyYi5zdiIKKyAgICAgYGluY2x1ZGUgIndiX2ludGVyY29ubmVjdC9zcmMvd2JfaW50ZXJjb25uZWN0LnN2IgorCisKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9oZHUuc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX3BpcGVfdGR1LnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9pcGljLnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9waXBlX2Nzci5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9leHUuc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX3BpcGVfaWFsdS5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9pZHUuc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvY29yZS9waXBlbGluZS9zY3IxX3BpcGVfaWZ1LnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9waXBlX2xzdS5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3BpcGVsaW5lL3NjcjFfcGlwZV9tcHJmLnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL2NvcmUvcGlwZWxpbmUvc2NyMV9waXBlX3RvcC5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3ByaW1pdGl2ZXMvc2NyMV9yZXNldF9jZWxscy5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3ByaW1pdGl2ZXMvc2NyMV9jZy5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3NjcjFfY2xrX2N0cmwuc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvY29yZS9zY3IxX3RhcGNfc2hpZnRfcmVnLnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL2NvcmUvc2NyMV90YXBjLnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL2NvcmUvc2NyMV90YXBjX3N5bmNocm9uaXplci5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy9jb3JlL3NjcjFfY29yZV90b3Auc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvY29yZS9zY3IxX2RtLnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL2NvcmUvc2NyMV9kbWkuc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvY29yZS9zY3IxX3NjdS5zdiIKKyAgICAgIAorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL3RvcC9zY3IxX2RtZW1fcm91dGVyLnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL3RvcC9zY3IxX2RwX21lbW9yeS5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy90b3Avc2NyMV90Y20uc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvdG9wL3NjcjFfdGltZXIuc3YiCisgICAgIGBpbmNsdWRlICJzeW50YWNvcmUvc2NyMS9zcmMvdG9wL3NjcjFfZG1lbV93Yi5zdiIKKyAgICAgYGluY2x1ZGUgInN5bnRhY29yZS9zY3IxL3NyYy90b3Avc2NyMV9pbWVtX3diLnN2IgorICAgICBgaW5jbHVkZSAic3ludGFjb3JlL3NjcjEvc3JjL3RvcC9zY3IxX3RvcF93Yi5zdiIKKyAgICAgYGluY2x1ZGUgImxpYi9zeW5jX2ZpZm8uc3YiCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L3VzZXJfcmlzY19ib290LmMgYi92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L3VzZXJfcmlzY19ib290LmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2U5YWJlYgotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvZHYvdXNlcl9yaXNjX2Jvb3QvdXNlcl9yaXNjX2Jvb3QuYwpAQCAtMCwwICsxLDQ1IEBACisKKyNkZWZpbmUgU0NfU0lNX09VVFBPUlQgKDB4ZjAwMDAwMDApCisjZGVmaW5lIHVpbnQzMl90ICBsb25nCisKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMCAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMDApCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzEgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDA0KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcyICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAwOCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMyAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMEMpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzQgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDEwKQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWc1ICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAxNCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnNiAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMTgpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzcgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDFDKQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWc4ICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAyMCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnOSAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMjQpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzEwICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDI4KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcxMSAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAyQykKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMTIgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMzApCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzEzICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDM0KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcxNCAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAzOCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMTUgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwM0MpCisKK2ludCBtYWluKCkKK3sKKworICAgIC8vdm9sYXRpbGUgbG9uZyAqb3V0X3B0ciA9ICh2b2xhdGlsZSBsb25nKilTQ19TSU1fT1VUUE9SVDsKKyAgICAvLypvdXRfcHRyID0gMHhBQUJCQ0NERDsKKyAgICAvLypvdXRfcHRyID0gMHhCQkNDRERFRTsKKyAgICAvLypvdXRfcHRyID0gMHhDQ0RERUVGRjsKKyAgICAvLypvdXRfcHRyID0gMHhEREVFRkYwMDsKKworICAgIC8vIFdyaXRlIHNvZnR3YXJlIFdyaXRlICYgUmVhZCBSZWdpc3RlcgorICAgIHJlZ19tcHJqX2dsb2JsX3JlZzYgID0gMHgxMTIyMzM0NDsgCisgICAgcmVnX21wcmpfZ2xvYmxfcmVnNyAgPSAweDIyMzM0NDU1OyAKKyAgICByZWdfbXByal9nbG9ibF9yZWc4ICA9IDB4MzM0NDU1NjY7IAorICAgIHJlZ19tcHJqX2dsb2JsX3JlZzkgID0gMHg0NDU1NjY3NzsgCisgICAgcmVnX21wcmpfZ2xvYmxfcmVnMTAgPSAweDU1NjY3Nzg4OyAKKyAgICByZWdfbXByal9nbG9ibF9yZWcxMSA9IDB4NjY3Nzg4OTk7IAorICAgIC8vcmVnX21wcmpfZ2xvYmxfcmVnMTIgPSAweDc3ODg5OUFBOyAKKyAgICAvL3JlZ19tcHJqX2dsb2JsX3JlZzEzID0gMHg4ODk5QUFCQjsgCisgICAgLy9yZWdfbXByal9nbG9ibF9yZWcxNCA9IDB4OTlBQUJCQ0M7IAorICAgIC8vcmVnX21wcmpfZ2xvYmxfcmVnMTUgPSAweEFBQkJDQ0REOyAKKworICAgIHdoaWxlKDEpIHt9CisgICAgcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L3VzZXJfcmlzY19ib290LmhleCBiL3Zlcmlsb2cvZHYvdXNlcl9yaXNjX2Jvb3QvdXNlcl9yaXNjX2Jvb3QuaGV4Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjFmZGQ5NmMKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL2R2L3VzZXJfcmlzY19ib290L3VzZXJfcmlzY19ib290LmhleApAQCAtMCwwICsxLDc5IEBACitAMDAwMDAwMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAxMyAwMCAwMCAwMCA2RiAwMCAwMCAwMCBGRiBGRiBGRiBGRg0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzZGIDAwIEUwIDE4IDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwDQorMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDANCisxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMCAxMyAwMCAwMCAwMA0KKzEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwIDEzIDAwIDAwIDAwDQorOTMgMDAgMDAgMDAgMTMgMDEgMDAgMDAgOTMgMDEgMDAgMDAgMTMgMDIgMDAgMDANCis5MyAwMiAwMCAwMCAxMyAwMyAwMCAwMCA5MyAwMyAwMCAwMCAxMyAwNCAwMCAwMA0KKzkzIDA0IDAwIDAwIDEzIDA1IDAwIDAwIDkzIDA1IDAwIDAwIDEzIDA2IDAwIDAwDQorOTMgMDYgMDAgMDAgMTMgMDcgMDAgMDAgOTMgMDcgMDAgMDAgMTMgMDggMDAgMDANCis5MyAwOCAwMCAwMCAxMyAwOSAwMCAwMCA5MyAwOSAwMCAwMCAxMyAwQSAwMCAwMA0KKzkzIDBBIDAwIDAwIDEzIDBCIDAwIDAwIDkzIDBCIDAwIDAwIDEzIDBDIDAwIDAwDQorOTMgMEMgMDAgMDAgMTMgMEQgMDAgMDAgOTMgMEQgMDAgMDAgMTMgMEUgMDAgMDANCis5MyAwRSAwMCAwMCAxMyAwRiAwMCAwMCA5MyAwRiAwMCAwMCA5NyAwMSA0OCAwMA0KKzkzIDgxIDQxIDYyIDEzIDA1IDAwIDQwIDk3IDA1IDQ4IDAwIDkzIDg1IDg1IEQ3DQorMTcgMDYgNDggMDAgMTMgMDYgMDYgRTMgNjMgMEQgQjUgMDAgMjkgQTAgMTQgNDENCis5NCBDMSAxMSAwNSA5MSAwNSBFMyA5QyBDNSBGRSAxNyAwNiA0OCAwMCAxMyAwNg0KKzY2IEUxIDk3IDA1IDQ4IDAwIDkzIDg1IEU1IEUwIDIxIEEwIDIzIDIwIDA2IDAwDQorMTEgMDYgRTMgOUQgQzUgRkUgMTcgMDEgNDkgMDAgMTMgMDEgQTEgRDMgMTcgMDUNCis0OCAwMCAxMyAwNSAyNSBERiAxNyAwNiA0OCAwMCAxMyAwNiBBNiBERSBCMyAwNQ0KK0E2IDQwIDE3IDA3IDQ5IDAwIDEzIDA3IEU3IDkxIDMzIDAyIEI3IDQwIDkyIDg1DQorMTcgMDYgNDggMDAgMTMgMDYgMDYgREQgMjkgQTAgMTQgNDEgOTQgQzEgMTEgMDUNCis5MSAwNSBFMyAxQyBDNSBGRSAyMSBBMCAyMyBBMCAwNSAwMCA5MSAwNSBFMyA5RA0KK0U1IEZFIEI3IDAyIDQ5IDAwIDA1IDQzIDIzIEEwIDYyIDAwIEI3IDAyIDQ5IDAwDQorOTEgMDIgMTMgMDMgMzAgMDYgMjMgQTAgNjIgMDAgQjcgMDIgNDkgMDAgQzEgMDINCis3RCA1MyAyMyBBMCA2MiAwMCAyMyBBMiA2MiAwMCAwMSA0NSA4MSA0NSA5NyAwMg0KKzQ4IDAwIEU3IDgwIDIyIENDIDk3IDAyIDQ4IDAwIDkzIDgyIEEyIEQxIDZEIDcxDQorMDYgQzIgMEEgQzQgMEUgQzYgMTIgQzggMTYgQ0EgMUEgQ0MgMUUgQ0UgMjIgRDANCisyNiBEMiAyQSBENCAyRSBENiAzMiBEOCAzNiBEQSAzQSBEQyAzRSBERSBDMiBDMA0KK0M2IEMyIENBIEM0IENFIEM2IEQyIEM4IEQ2IENBIERBIENDIERFIENFIEUyIEQwDQorRTYgRDIgRUEgRDQgRUUgRDYgRjIgRDggRjYgREEgRkEgREMgRkUgREUgNzMgMjUNCisyMCAzNCBGMyAyNSAxMCAzNCAwQSA4NiBFRiAwMCA4MCAwNCA5MiA0MCAyMiA0MQ0KK0IyIDQxIDQyIDQyIEQyIDQyIDYyIDQzIEYyIDQzIDAyIDU0IDkyIDU0IDIyIDU1DQorQjIgNTUgNDIgNTYgRDIgNTYgNjIgNTcgRjIgNTcgMDYgNDggOTYgNDggMjYgNDkNCitCNiA0OSA0NiA0QSBENiA0QSA2NiA0QiBGNiA0QiAwNiA1QyA5NiA1QyAyNiA1RA0KK0I2IDVEIDQ2IDVFIEQ2IDVFIDY2IDVGIEY2IDVGIDUxIDYxIDczIDAwIDIwIDMwDQorNkYgRjAgNUYgRDEgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KK0AwMDAwMDQwMA0KKzM3IDM3IDIyIDExIEI3IDA3IDAwIDMwIDkzIDAyIDQ3IDM0IDM3IDQzIDMzIDIyDQorMjMgQUMgNTcgMDAgOTMgMDMgNTMgNDUgMzcgNTUgNDQgMzMgMjMgQUUgNzcgMDANCis5MyAwNSA2NSA1NiAzNyA2NiA1NSA0NCA4QyBEMyA5MyAwNiA3NiA2NyAzNyA3OA0KKzY2IDU1IEQ0IEQzIDkzIDA4IDg4IDc4IDM3IDlFIDc3IDY2IDIzIEE0IDE3IDAzDQorOTMgMEUgOUUgODkgMjMgQTYgRDcgMDMgMDEgQTAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzk3IDAyIEI4IEZGIDkzIDgyIDQyIDA5IDgyIDgyIDEzIDAwIDAwIDAwIDEzIDAwDQorMDAgMDAgMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDAgMTMgMDAgMDAgMDAgMDEgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KKzAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwIDAwDQorQDAwMDAwNEEwDQorMTMgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDAgMDANCiswMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMCAwMA0KZGlmZiAtLWdpdCBhL3Zlcmlsb2cvZHYvdXNlcl9yaXNjX2Jvb3QvdXNlcl9yaXNjX2Jvb3RfdGIudiBiL3Zlcmlsb2cvZHYvdXNlcl9yaXNjX2Jvb3QvdXNlcl9yaXNjX2Jvb3RfdGIudgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmFiNWViCi0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9kdi91c2VyX3Jpc2NfYm9vdC91c2VyX3Jpc2NfYm9vdF90Yi52CkBAIC0wLDAgKzEsMzk3IEBACisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBTdGFuZGFsb25lIFVzZXIgdmFsaWRhdGlvbiBUZXN0IGJlbmNoICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgWUlGaXZlIGNvcmVzIHByb2plY3QgICAgICAgICAgICAgICAvLy8vCisvLy8vICBodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvY29yZXMveWlmaXZlLyAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBEZXNjcmlwdGlvbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLyAgICAgVGhpcyBpcyBhIHN0YW5kYWxvbmUgdGVzdCBiZW5jaCB0byB2YWxpZGF0ZSB0aGUgICAgICAgICAgICAvLy8vCisvLyAgICAgRGlnaXRhbCBjb3JlLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLyAgICAgMS4gVXNlciBSaXNjIGNvcmUgaXMgYm9vdGVkIHVzaW5nICBjb21waWxlZCBjb2RlIG9mICAgICAgICAvLy8vCisvLyAgICAgICAgdXNlcl9yaXNjX2Jvb3QuYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLyAgICAgMi4gVXNlciBSaXNjIGNvcmUgdXNlcyBTZXJpYWwgRmxhc2ggYW5kIFNEUkFNIHRvIGJvb3QgICAgICAvLy8vCisvLyAgICAgMy4gQWZ0ZXIgc3VjY2Vzc2Z1bCBib290LCBSaXNjIGNvcmUgd2lsbCAgd3JpdGUgc2lnbmF0dXJlICAvLy8vCisvLyAgICAgICAgaW4gdG8gIHVzZXIgcmVnaXN0ZXIgZnJvbSAweDMwMDBfMDAxOCB0byAweDMwMDBfMDAyQyAgICAvLy8vCisvLyAgICAgNC4gVGhyb3VnaCB0aGUgRXh0ZXJuYWwgV2lzaGJvbmUgSW50ZXJmYWNlIHdlIHJlYWQgYmFjayAgICAvLy8vCisvLyAgICAgICAgIGFuZCB2YWxpZGF0ZSB0aGUgdXNlciByZWdpc3RlciB0byBkZWNsYXJlZCBwYXNzIGZhaWwgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBUbyBEbzogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgIG5vdGhpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBBdXRob3Iocyk6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgLSBEaW5lc2ggQW5uYXl5YSwgZGluZXNoYUBvcGVuY29yZXMub3JnICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICBSZXZpc2lvbiA6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgIDAuMSAtIDE2dGggRmViIDIwMjEsIERpbmVzaCBBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIENvcHlyaWdodCAoQykgMjAwMCBBdXRob3JzIGFuZCBPUEVOQ09SRVMuT1JHICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgbWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIHdpdGhvdXQgICAgICAgICAvLy8vCisvLy8vIHJlc3RyaWN0aW9uIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgc3RhdGVtZW50IGlzIG5vdCAgICAvLy8vCisvLy8vIHJlbW92ZWQgZnJvbSB0aGUgZmlsZSBhbmQgdGhhdCBhbnkgZGVyaXZhdGl2ZSB3b3JrIGNvbnRhaW5zICAvLy8vCisvLy8vIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNjbGFpbWVyLiAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgICAvLy8vCisvLy8vIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAvLy8vCisvLy8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgICAvLy8vCisvLy8vIGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSAgICAgICAvLy8vCisvLy8vIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgICAvLy8vCisvLy8vIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgICAgICAvLy8vCisvLy8vIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSAvLy8vCisvLy8vIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCAgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBzb3VyY2U7IGlmIG5vdCwgZG93bmxvYWQgaXQgICAvLy8vCisvLy8vIGZyb20gaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2xncGwuc2h0bWwgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKK2BkZWZhdWx0X25ldHR5cGUgbm9uZQorCitgdGltZXNjYWxlIDEgbnMgLyAxIHBzCisKK2BpbmNsdWRlICJ1cHJqX25ldGxpc3RzLnYiCitgaW5jbHVkZSAic3BpZmxhc2gudiIKK2BpbmNsdWRlICJtdDQ4bGM4bThhMi52IgorCittb2R1bGUgdXNlcl9yaXNjX2Jvb3RfdGI7CisJcmVnIGNsb2NrOworCXJlZyBSU1RCOworCXJlZyBwb3dlcjEsIHBvd2VyMjsKKwlyZWcgcG93ZXIzLCBwb3dlcjQ7CisKKyAgICAgICAgcmVnICAgICAgICB3YmRfZXh0X2N5Y19pOyAgLy8gc3Ryb2JlL3JlcXVlc3QKKyAgICAgICAgcmVnICAgICAgICB3YmRfZXh0X3N0Yl9pOyAgLy8gc3Ryb2JlL3JlcXVlc3QKKyAgICAgICAgcmVnIFszMTowXSB3YmRfZXh0X2Fkcl9pOyAgLy8gYWRkcmVzcworICAgICAgICByZWcgICAgICAgIHdiZF9leHRfd2VfaTsgIC8vIHdyaXRlCisgICAgICAgIHJlZyBbMzE6MF0gd2JkX2V4dF9kYXRfaTsgIC8vIGRhdGEgb3V0cHV0CisgICAgICAgIHJlZyBbMzowXSAgd2JkX2V4dF9zZWxfaTsgIC8vIGJ5dGUgZW5hYmxlCisKKyAgICAgICAgd2lyZSBbMzE6MF0gd2JkX2V4dF9kYXRfbzsgIC8vIGRhdGEgaW5wdXQKKyAgICAgICAgd2lyZSAgICAgICAgd2JkX2V4dF9hY2tfbzsgIC8vIGFja25vd2xlZ2VtZW50CisgICAgICAgIHdpcmUgICAgICAgIHdiZF9leHRfZXJyX287ICAvLyBlcnJvcgorCisJLy8gVXNlciBJL08KKwl3aXJlIFszNzowXSBpb19vZWI7CisJd2lyZSBbMzc6MF0gaW9fb3V0OworCXdpcmUgWzM3OjBdIGlvX2luOworCisJd2lyZSBncGlvOworCXdpcmUgWzM3OjBdIG1wcmpfaW87CisJd2lyZSBbNzowXSBtcHJqX2lvXzA7CisJcmVnICAgICAgICAgdGVzdF9mYWlsOworCXJlZyBbMzE6MF0gcmVhZF9kYXRhOworCisKKworCS8vIEV4dGVybmFsIGNsb2NrIGlzIHVzZWQgYnkgZGVmYXVsdC4gIE1ha2UgdGhpcyBhcnRpZmljaWFsbHkgZmFzdCBmb3IgdGhlCisJLy8gc2ltdWxhdGlvbi4gIE5vcm1hbGx5IHRoaXMgd291bGQgYmUgYSBzbG93IGNsb2NrIGFuZCB0aGUgZGlnaXRhbCBQTEwKKwkvLyB3b3VsZCBiZSB0aGUgZmFzdCBjbG9jay4KKworCWFsd2F5cyAjMTIuNSBjbG9jayA8PSAoY2xvY2sgPT09IDEnYjApOworCisJaW5pdGlhbCBiZWdpbgorCQljbG9jayA9IDA7CisgICAgICAgICAgICAgICAgd2JkX2V4dF9jeWNfaSA9J2gwOyAgLy8gc3Ryb2JlL3JlcXVlc3QKKyAgICAgICAgICAgICAgICB3YmRfZXh0X3N0Yl9pID0naDA7ICAvLyBzdHJvYmUvcmVxdWVzdAorICAgICAgICAgICAgICAgIHdiZF9leHRfYWRyX2kgPSdoMDsgIC8vIGFkZHJlc3MKKyAgICAgICAgICAgICAgICB3YmRfZXh0X3dlX2kgID0naDA7ICAvLyB3cml0ZQorICAgICAgICAgICAgICAgIHdiZF9leHRfZGF0X2kgPSdoMDsgIC8vIGRhdGEgb3V0cHV0CisgICAgICAgICAgICAgICAgd2JkX2V4dF9zZWxfaSA9J2gwOyAgLy8gYnl0ZSBlbmFibGUKKwllbmQKKworCWBpZmRlZiBXRkRVTVAKKwkgICBpbml0aWFsIGJlZ2luCisJICAgCSRkdW1wZmlsZSgicmlzY19ib290LnZjZCIpOworCSAgIAkkZHVtcHZhcnMoMCwgdXNlcl9yaXNjX2Jvb3RfdGIpOworCSAgIGVuZAorICAgICAgIGBlbmRpZgorCisJaW5pdGlhbCBiZWdpbgorCisJCSMyMDA7IC8vIFdhaXQgZm9yIHJlc2V0IHJlbW92YWwKKwkgICAgICAgIHJlcGVhdCAoMTApIEAocG9zZWRnZSBjbG9jayk7CisJCSRkaXNwbGF5KCJNb25pdG9yOiBTdGFuZGFsb25lIFVzZXIgUmlzYyBCb290IFRlc3QgU3RhcnRlZCIpOworCisJCSMxOworCQkvLy0tLS0tLS0tLS0tLSBTRFJBTSBDb25maWcgLSAyCisgICAgICAgICAgICAgICAgd2JfdXNlcl9jb3JlX3dyaXRlKCdoMzAwMF8wMDE0LCdoMTAwXzAxOUUpOworCisJICAgICAgICByZXBlYXQgKDIpIEAocG9zZWRnZSBjbG9jayk7CisJCSMxOworCQkvLy0tLS0tLS0tLS0tLSBTRFJBTSBDb25maWcgLSAxCisgICAgICAgICAgICAgICAgd2JfdXNlcl9jb3JlX3dyaXRlKCdoMzAwMF8wMDEwLCdoMkYxN18yMjQyKTsKKworCSAgICAgICAgcmVwZWF0ICgyKSBAKHBvc2VkZ2UgY2xvY2spOworCQkjMTsKKwkJLy8gUmVtb3ZlIGFsbCB0aGUgcmVzZXQKKyAgICAgICAgICAgICAgICB3Yl91c2VyX2NvcmVfd3JpdGUoJ2gzMDAwXzAwMDAsJ2g3KTsKKworCisJCS8vIFJlcGVhdCBjeWNsZXMgb2YgMTAwMCBjbG9jayBlZGdlcyBhcyBuZWVkZWQgdG8gY29tcGxldGUgdGVzdGJlbmNoCisJCXJlcGVhdCAoMzApIGJlZ2luCisJCQlyZXBlYXQgKDEwMDApIEAocG9zZWRnZSBjbG9jayk7CisJCQkvLyAkZGlzcGxheSgiKzEwMDAgY3ljbGVzIik7CisJCWVuZAorCisKKwkJJGRpc3BsYXkoIk1vbml0b3I6IFJlYWRpbmcgQmFjayB0aGUgZXhwZWN0ZWQgdmFsdWUiKTsKKwkJLy8gVXNlciBSSVNDIGNvcmUgZXhwZWN0IHRvIHdyaXRlIHRoZXNlIHZhbHVlIGluIGdsb2JhbAorCQkvLyByZWdpc3RlciwgcmVhZCBiYWNrIGFuZCBkZWNpZGUgb24gcGFzcyBmYWlsCisJCS8vIDB4MzAwMDAwMTggID0gMHgxMTIyMzM0NDsgCisgICAgICAgICAgICAgICAgLy8gMHgzMDAwMDAxQyAgPSAweDIyMzM0NDU1OyAKKyAgICAgICAgICAgICAgICAvLyAweDMwMDAwMDIwICA9IDB4MzM0NDU1NjY7IAorICAgICAgICAgICAgICAgIC8vIDB4MzAwMDAwMjQgID0gMHg0NDU1NjY3NzsgCisgICAgICAgICAgICAgICAgLy8gMHgzMDAwMDAyOCA9IDB4NTU2Njc3ODg7IAorICAgICAgICAgICAgICAgIC8vIDB4MzAwMDAwMkMgPSAweDY2Nzc4ODk5OyAKKworICAgICAgICAgICAgICAgIHRlc3RfZmFpbCA9IDA7CisJCXdiX3VzZXJfY29yZV9yZWFkKDMyJ2gzMDAwMDAxOCxyZWFkX2RhdGEpOworCQlpZihyZWFkX2RhdGEgIT0gMzInaDExMjIzMzQ0KSB0ZXN0X2ZhaWwgPSAxOworCisJCXdiX3VzZXJfY29yZV9yZWFkKDMyJ2gzMDAwMDAxQyxyZWFkX2RhdGEpOworCQlpZihyZWFkX2RhdGEgIT0gMzInaDIyMzM0NDU1KSB0ZXN0X2ZhaWwgPSAxOworCisJCXdiX3VzZXJfY29yZV9yZWFkKDMyJ2gzMDAwMDAyMCxyZWFkX2RhdGEpOworCSAgICAgICAgaWYocmVhZF9kYXRhICE9IDMyJ2gzMzQ0NTU2NikgdGVzdF9mYWlsID0gMTsKKworCQl3Yl91c2VyX2NvcmVfcmVhZCgzMidoMzAwMDAwMjQscmVhZF9kYXRhKTsKKyAgICAgICAgICAgICAgICBpZihyZWFkX2RhdGEhPSAzMidoNDQ1NTY2NzcpIHRlc3RfZmFpbCA9IDE7CisKKwkJd2JfdXNlcl9jb3JlX3JlYWQoMzInaDMwMDAwMDI4LHJlYWRfZGF0YSk7CisgICAgICAgICAgICAgICAgaWYocmVhZF9kYXRhIT0gMzInaDU1NjY3Nzg4KSB0ZXN0X2ZhaWwgPSAxOworCisJCXdiX3VzZXJfY29yZV9yZWFkKDMyJ2gzMDAwMDAyQyxyZWFkX2RhdGEpIDsKKwkgICAgICAgIGlmKHJlYWRfZGF0YSAhPSAzMidoNjY3Nzg4OTkpIHRlc3RfZmFpbCA9IDE7CisKKwkgICAKKwkgICAgCSRkaXNwbGF5KCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKTsKKyAgICAgICAgICAJaWYodGVzdF9mYWlsID09IDApIGJlZ2luCisJCSAgIGBpZmRlZiBHTAorCSAgICAJICAgICAgICRkaXNwbGF5KCJNb25pdG9yOiBTdGFuZGFsb25lIFVzZXIgUmlzYyBCb290IChHTCkgUGFzc2VkIik7CisJCSAgIGBlbHNlCisJCSAgICAgICAkZGlzcGxheSgiTW9uaXRvcjogU3RhbmRhbG9uZSBVc2VyIFJpc2MgQm9vdCAoUlRMKSBQYXNzZWQiKTsKKwkJICAgYGVuZGlmCisJICAgICAgICBlbmQgZWxzZSBiZWdpbgorCQkgICAgYGlmZGVmIEdMCisJICAgIAkgICAgICAgICRkaXNwbGF5KCJNb25pdG9yOiBTdGFuZGFsb25lIFVzZXIgUmlzYyBCb290IChHTCkgRmFpbGVkIik7CisJCSAgICBgZWxzZQorCQkgICAgICAgICRkaXNwbGF5KCJNb25pdG9yOiBTdGFuZGFsb25lIFVzZXIgUmlzYyBCb290IChSVEwpIEZhaWxlZCIpOworCQkgICAgYGVuZGlmCisJCSBlbmQKKwkgICAgCSRkaXNwbGF5KCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKTsKKwkgICAgJGZpbmlzaDsKKwllbmQKKworCWluaXRpYWwgYmVnaW4KKwkJUlNUQiA8PSAxJ2IwOworCQkjMTAwOworCQlSU1RCIDw9IDEnYjE7CSAgICAJLy8gUmVsZWFzZSByZXNldAorCWVuZAorCisKKyBkaWdpdGFsX2NvcmUgdV9jb3JlKAorYGlmZGVmIFVTRV9QT1dFUl9QSU5TCisgICAgLnZkZGExKCksCS8vIFVzZXIgYXJlYSAxIDMuM1Ygc3VwcGx5CisgICAgLnZkZGEyKCksCS8vIFVzZXIgYXJlYSAyIDMuM1Ygc3VwcGx5CisgICAgLnZzc2ExKCksCS8vIFVzZXIgYXJlYSAxIGFuYWxvZyBncm91bmQKKyAgICAudnNzYTIoKSwJLy8gVXNlciBhcmVhIDIgYW5hbG9nIGdyb3VuZAorICAgIC52Y2NkMSgpLAkvLyBVc2VyIGFyZWEgMSAxLjhWIHN1cHBseQorICAgIC52Y2NkMigpLAkvLyBVc2VyIGFyZWEgMiAxLjh2IHN1cHBseQorICAgIC52c3NkMSgpLAkvLyBVc2VyIGFyZWEgMSBkaWdpdGFsIGdyb3VuZAorICAgIC52c3NkMigpLAkvLyBVc2VyIGFyZWEgMiBkaWdpdGFsIGdyb3VuZAorYGVuZGlmCisgICAgLmNsayAgICAgICAgICAgICAoY2xvY2spLCAgLy8gU3lzdGVtIGNsb2NrCisgICAgLnJ0Y19jbGsgICAgICAgICAoMSdiMSksICAvLyBSZWFsLXRpbWUgY2xvY2sKKyAgICAucnN0X24gICAgICAgICAgIChSU1RCKSwgIC8vIFJlZ3VsYXIgUmVzZXQgc2lnbmFsCisKKyAgICAud2JkX2V4dF9jeWNfaSAgICh3YmRfZXh0X2N5Y19pKSwgIC8vIHN0cm9iZS9yZXF1ZXN0CisgICAgLndiZF9leHRfc3RiX2kgICAod2JkX2V4dF9zdGJfaSksICAvLyBzdHJvYmUvcmVxdWVzdAorICAgIC53YmRfZXh0X2Fkcl9pICAgKHdiZF9leHRfYWRyX2kpLCAgLy8gYWRkcmVzcworICAgIC53YmRfZXh0X3dlX2kgICAgKHdiZF9leHRfd2VfaSksICAvLyB3cml0ZQorICAgIC53YmRfZXh0X2RhdF9pICAgKHdiZF9leHRfZGF0X2kpLCAgLy8gZGF0YSBvdXRwdXQKKyAgICAud2JkX2V4dF9zZWxfaSAgICh3YmRfZXh0X3NlbF9pKSwgIC8vIGJ5dGUgZW5hYmxlCisKKyAgICAud2JkX2V4dF9kYXRfbyAgICh3YmRfZXh0X2RhdF9vKSwgIC8vIGRhdGEgaW5wdXQKKyAgICAud2JkX2V4dF9hY2tfbyAgICh3YmRfZXh0X2Fja19vKSwgIC8vIGFja25vd2xlZ2VtZW50CisgICAgLndiZF9leHRfZXJyX28gICAod2JkX2V4dF9lcnJfbyksICAvLyBlcnJvcgorCisgCisgICAgLy8gTG9naWMgQW5hbHl6ZXIgU2lnbmFscworICAgIC5sYV9kYXRhX2luICAgICAgKCcwKSAsCisgICAgLmxhX2RhdGFfb3V0ICAgICAoKSwKKyAgICAubGFfb2VuYiAgICAgICAgICgnMCksCisgCisKKyAgICAvLyBJT3MKKyAgICAuaW9faW4gICAgICAgICAgKGlvX2luKSAgLAorICAgIC5pb19vdXQgICAgICAgICAoaW9fb3V0KSAsCisgICAgLmlvX29lYiAgICAgICAgIChpb19vZWIpICwKKworICAgIC5pcnEgICAgICAgICAgICAoKSAKKworKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICBJbnRlZ3JhdGUgdGhlIFNlcmlhbCBmbGFzaCB3aXRoIHF1cmQgc3VwcG9ydCB0bworLy8gIHVzZXIgY29yZSB1c2luZyB0aGUgZ3BpbyBwYWRzCisvLyAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisgICB3aXJlIGZsYXNoX2NsayA9IGlvX291dFszMF07CisgICB3aXJlIGZsYXNoX2NzYiA9IGlvX291dFszMV07CisgICB0cmkgIGZsYXNoX2lvMCA9IChpb19vZWJbMzJdPT0gMSdiMCkgPyBpb19vdXRbMzJdIDogMSdiejsKKyAgIHRyaSAgZmxhc2hfaW8xID0gKGlvX29lYlszM109PSAxJ2IwKSA/IGlvX291dFszM10gOiAxJ2J6OworICAgdHJpICBmbGFzaF9pbzIgPSAoaW9fb2ViWzM0XT09IDEnYjApID8gaW9fb3V0WzM0XSA6IDEnYno7CisgICB0cmkgIGZsYXNoX2lvMyA9IChpb19vZWJbMzVdPT0gMSdiMCkgPyBpb19vdXRbMzVdIDogMSdiejsKKworICAgYXNzaWduIGlvX2luWzMyXSA9IGZsYXNoX2lvMDsKKyAgIGFzc2lnbiBpb19pblszM10gPSBmbGFzaF9pbzE7CisgICBhc3NpZ24gaW9faW5bMzRdID0gZmxhc2hfaW8yOworICAgYXNzaWduIGlvX2luWzM1XSA9IGZsYXNoX2lvMzsKKworCisgICAvLyBRdWFyZCBmbGFzaAorCXNwaWZsYXNoICMoCisJCS5GSUxFTkFNRSgidXNlcl9yaXNjX2Jvb3QuaGV4IikKKwkpIHVfdXNlcl9zcGlmbGFzaCAoCisJCS5jc2IoZmxhc2hfY3NiKSwKKwkJLmNsayhmbGFzaF9jbGspLAorCQkuaW8wKGZsYXNoX2lvMCksCisJCS5pbzEoZmxhc2hfaW8xKSwKKwkJLmlvMihmbGFzaF9pbzIpLAorCQkuaW8zKGZsYXNoX2lvMykJCisJKTsKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW50ZWdyYXRlIHRoZSBTRFJBTSA4IEJJVCBNZW1vcnkKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK3dpcmUgWzc6MF0gICAgRHEgICAgICAgICAgICAgICAgIDsgLy8gU0RSQU0gUmVhZC9Xcml0ZSBEYXRhIEJ1cword2lyZSBbMDowXSAgICBzZHJfZHFtICAgICAgICAgICAgOyAvLyBTRFJBTSBEQVRBIE1hc2sKK3dpcmUgWzE6MF0gICAgc2RyX2JhICAgICAgICAgICAgIDsgLy8gU0RSQU0gQmFuayBTZWxlY3QKK3dpcmUgWzEyOjBdICAgc2RyX2FkZHIgICAgICAgICAgIDsgLy8gU0RSQU0gQURSRVNTCit3aXJlICAgICAgICAgIHNkcl9jc19uICAgICAgICAgICA7IC8vIGNoaXAgc2VsZWN0Cit3aXJlICAgICAgICAgIHNkcl9ja2UgICAgICAgICAgICA7IC8vIGNsb2NrIGdhdGUKK3dpcmUgICAgICAgICAgc2RyX3Jhc19uICAgICAgICAgIDsgLy8gcmFzCit3aXJlICAgICAgICAgIHNkcl9jYXNfbiAgICAgICAgICA7IC8vIGNhcword2lyZSAgICAgICAgICBzZHJfd2VfbiAgICAgICAgICAgOyAvLyB3cml0ZSBlbmFibGUgICAgICAgIAord2lyZSAgICAgICAgICBzZHJhbV9jbGsgICAgICAgICA7ICAgICAgCisKK2Fzc2lnbiAgRHFbNzowXSAgICAgICAgICAgPSAgKGlvX29lYls3OjBdID09IDgnaDApID8gaW9fb3V0IFs3OjBdIDogOCdoWlo7Cithc3NpZ24gIHNkcl9hZGRyWzEyOjBdICAgID0gICAgaW9fb3V0IFsyMDo4XSAgICAgOworYXNzaWduICBzZHJfYmFbMTowXSAgICAgICA9ICAgIGlvX291dCBbMjI6MjFdICAgIDsKK2Fzc2lnbiAgc2RyX2RxbVswXSAgICAgICAgPSAgICBpb19vdXQgWzIzXSAgICAgICA7Cithc3NpZ24gIHNkcl93ZV9uICAgICAgICAgID0gICAgaW9fb3V0IFsyNF0gICAgICAgOworYXNzaWduICBzZHJfY2FzX24gICAgICAgICA9ICAgIGlvX291dCBbMjVdICAgICAgIDsKK2Fzc2lnbiAgc2RyX3Jhc19uICAgICAgICAgPSAgICBpb19vdXQgWzI2XSAgICAgICA7Cithc3NpZ24gIHNkcl9jc19uICAgICAgICAgID0gICAgaW9fb3V0IFsyN10gICAgICAgOworYXNzaWduICBzZHJfY2tlICAgICAgICAgICA9ICAgIGlvX291dCBbMjhdICAgICAgIDsKK2Fzc2lnbiAgc2RyYW1fY2xrICAgICAgICAgPSAgICBpb19vdXQgWzI5XSAgICAgICA7Cithc3NpZ24gIGlvX2luWzI5XSAgICAgICAgID0gICAgc2RyYW1fY2xrOworYXNzaWduICAjKDEpIGlvX2luWzc6MF0gICA9ICAgIERxOworCisvLyB0byBmaXggdGhlIHNkcmFtIGludGVyZmFjZSB0aW1pbmcgaXNzdWUKK3dpcmUgIygxKSBzZHJhbV9jbGtfZCAgID0gc2RyYW1fY2xrOworCisJLy8gU0RSQU0gOGJpdAorbXQ0OGxjOG04YTIgIyguZGF0YV9iaXRzKDgpKSB1X3NkcmFtOCAoCisgICAgICAgICAgLkRxICAgICAgICAgICAgICAgICAoRHEgICAgICAgICAgICAgICAgICkgLCAKKyAgICAgICAgICAuQWRkciAgICAgICAgICAgICAgIChzZHJfYWRkclsxMTowXSAgICAgKSwgCisgICAgICAgICAgLkJhICAgICAgICAgICAgICAgICAoc2RyX2JhICAgICAgICAgICAgICksIAorICAgICAgICAgIC5DbGsgICAgICAgICAgICAgICAgKHNkcmFtX2Nsa19kICAgICAgICApLCAKKyAgICAgICAgICAuQ2tlICAgICAgICAgICAgICAgIChzZHJfY2tlICAgICAgICAgICAgKSwgCisgICAgICAgICAgLkNzX24gICAgICAgICAgICAgICAoc2RyX2NzX24gICAgICAgICAgICksIAorICAgICAgICAgIC5SYXNfbiAgICAgICAgICAgICAgKHNkcl9yYXNfbiAgICAgICAgICApLCAKKyAgICAgICAgICAuQ2FzX24gICAgICAgICAgICAgIChzZHJfY2FzX24gICAgICAgICAgKSwgCisgICAgICAgICAgLldlX24gICAgICAgICAgICAgICAoc2RyX3dlX24gICAgICAgICAgICksIAorICAgICAgICAgIC5EcW0gICAgICAgICAgICAgICAgKHNkcl9kcW0gICAgICAgICAgICApCisgICAgICk7CisKKwordGFzayB3Yl91c2VyX2NvcmVfd3JpdGU7CitpbnB1dCBbMzE6MF0gYWRkcmVzczsKK2lucHV0IFszMTowXSBkYXRhOworYmVnaW4KKyAgcmVwZWF0ICgxKSBAKHBvc2VkZ2UgY2xvY2spOworICB3YmRfZXh0X2Fkcl9pID1hZGRyZXNzOyAgLy8gYWRkcmVzcworICB3YmRfZXh0X3dlX2kgID0naDE7ICAvLyB3cml0ZQorICB3YmRfZXh0X2RhdF9pID1kYXRhOyAgLy8gZGF0YSBvdXRwdXQKKyAgd2JkX2V4dF9zZWxfaSA9J2hGOyAgLy8gYnl0ZSBlbmFibGUKKyAgd2JkX2V4dF9jeWNfaSA9J2gxOyAgLy8gc3Ryb2JlL3JlcXVlc3QKKyAgd2JkX2V4dF9zdGJfaSA9J2gxOyAgLy8gc3Ryb2JlL3JlcXVlc3QKKyAgd2FpdCh3YmRfZXh0X2Fja19vID09IDEpOworICByZXBlYXQgKDEpIEAocG9zZWRnZSBjbG9jayk7CisgIHdiZF9leHRfY3ljX2kgPSdoMDsgIC8vIHN0cm9iZS9yZXF1ZXN0CisgIHdiZF9leHRfc3RiX2kgPSdoMDsgIC8vIHN0cm9iZS9yZXF1ZXN0CisgIHdiZF9leHRfYWRyX2kgPSdoMDsgIC8vIGFkZHJlc3MKKyAgd2JkX2V4dF93ZV9pICA9J2gwOyAgLy8gd3JpdGUKKyAgd2JkX2V4dF9kYXRfaSA9J2gwOyAgLy8gZGF0YSBvdXRwdXQKKyAgd2JkX2V4dF9zZWxfaSA9J2gwOyAgLy8gYnl0ZSBlbmFibGUKKyAgJGRpc3BsYXkoIkRFQlVHIFdCIFVTRVIgQUNDRVNTIFdSSVRFIEFkZHJlc3MgOiAleCwgRGF0YSA6ICV4IixhZGRyZXNzLGRhdGEpOworICByZXBlYXQgKDIpIEAocG9zZWRnZSBjbG9jayk7CitlbmQKK2VuZHRhc2sKKwordGFzayAgd2JfdXNlcl9jb3JlX3JlYWQ7CitpbnB1dCBbMzE6MF0gYWRkcmVzczsKK291dHB1dCBbMzE6MF0gZGF0YTsKK3JlZyAgICBbMzE6MF0gZGF0YTsKK2JlZ2luCisgIHJlcGVhdCAoMSkgQChwb3NlZGdlIGNsb2NrKTsKKyAgd2JkX2V4dF9hZHJfaSA9YWRkcmVzczsgIC8vIGFkZHJlc3MKKyAgd2JkX2V4dF93ZV9pICA9J2gwOyAgLy8gd3JpdGUKKyAgd2JkX2V4dF9kYXRfaSA9JzA7ICAvLyBkYXRhIG91dHB1dAorICB3YmRfZXh0X3NlbF9pID0naEY7ICAvLyBieXRlIGVuYWJsZQorICB3YmRfZXh0X2N5Y19pID0naDE7ICAvLyBzdHJvYmUvcmVxdWVzdAorICB3YmRfZXh0X3N0Yl9pID0naDE7ICAvLyBzdHJvYmUvcmVxdWVzdAorICB3YWl0KHdiZF9leHRfYWNrX28gPT0gMSk7CisgIGRhdGEgID0gd2JkX2V4dF9kYXRfbzsgIAorICByZXBlYXQgKDEpIEAocG9zZWRnZSBjbG9jayk7CisgIHdiZF9leHRfY3ljX2kgPSdoMDsgIC8vIHN0cm9iZS9yZXF1ZXN0CisgIHdiZF9leHRfc3RiX2kgPSdoMDsgIC8vIHN0cm9iZS9yZXF1ZXN0CisgIHdiZF9leHRfYWRyX2kgPSdoMDsgIC8vIGFkZHJlc3MKKyAgd2JkX2V4dF93ZV9pICA9J2gwOyAgLy8gd3JpdGUKKyAgd2JkX2V4dF9kYXRfaSA9J2gwOyAgLy8gZGF0YSBvdXRwdXQKKyAgd2JkX2V4dF9zZWxfaSA9J2gwOyAgLy8gYnl0ZSBlbmFibGUKKyAgJGRpc3BsYXkoIkRFQlVHIFdCIFVTRVIgQUNDRVNTIFJFQUQgQWRkcmVzcyA6ICV4LCBEYXRhIDogJXgiLGFkZHJlc3MsZGF0YSk7CisgIHJlcGVhdCAoMikgQChwb3NlZGdlIGNsb2NrKTsKK2VuZAorZW5kdGFzaworCisKKworCisvLy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vLy8gUklTQyBJTUVNIGFtZCBETUVNIE1vbml0b3JpbmcgVEFTSworLy8vLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvL2xvZ2ljIFtgU0NSMV9ETUVNX0FXSURUSC0xOjBdICAgICAgICAgICBjb3JlMmltZW1fYWRkcl9vX3I7ICAgICAgICAgICAvLyBETUVNIGFkZHJlc3MKKy8vbG9naWMgW2BTQ1IxX0RNRU1fQVdJRFRILTE6MF0gICAgICAgICAgIGNvcmUyZG1lbV9hZGRyX29fcjsgICAgICAgICAgIC8vIERNRU0gYWRkcmVzcworLy9sb2dpYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29yZTJkbWVtX2NtZF9vX3I7CisvLworLy9gZGVmaW5lIFJJU0NfQ09SRSAgdXNlcl9yaXNjX2Jvb3RfdGIudV9jb3JlLnVfcmlzY3ZfdG9wLmlfY29yZV90b3AKKy8vCisvL2Fsd2F5c0AocG9zZWRnZSBgUklTQ19DT1JFLmNsaykgYmVnaW4KKy8vICAgIGlmKGBSSVNDX0NPUkUuaW1lbTJjb3JlX3JlcV9hY2tfaSAmJiBgUklTQ19DT1JFLmNvcmUyaW1lbV9yZXFfbykKKy8vICAgICAgICAgIGNvcmUyaW1lbV9hZGRyX29fciA8PSBgUklTQ19DT1JFLmNvcmUyaW1lbV9hZGRyX287CisvLworLy8gICAgaWYoYFJJU0NfQ09SRS5kbWVtMmNvcmVfcmVxX2Fja19pICYmIGBSSVNDX0NPUkUuY29yZTJkbWVtX3JlcV9vKSBiZWdpbgorLy8gICAgICAgICAgY29yZTJkbWVtX2FkZHJfb19yIDw9IGBSSVNDX0NPUkUuY29yZTJkbWVtX2FkZHJfbzsKKy8vICAgICAgICAgIGNvcmUyZG1lbV9jbWRfb19yICA8PSBgUklTQ19DT1JFLmNvcmUyZG1lbV9jbWRfbzsKKy8vICAgIGVuZAorLy8KKy8vICAgIGlmKGBSSVNDX0NPUkUuaW1lbTJjb3JlX3Jlc3BfaSAhPTApCisvLyAgICAgICAgICAkZGlzcGxheSgiUklTQ1YtREVCVUcgPT4gSU1FTSBBRERSRVNTOiAleCBSZWFkIERhdGEgOiAleCBSZXNvbnNlOiAleCIsIGNvcmUyaW1lbV9hZGRyX29fcixgUklTQ19DT1JFLmltZW0yY29yZV9yZGF0YV9pLGBSSVNDX0NPUkUuaW1lbTJjb3JlX3Jlc3BfaSk7CisvLyAgICBpZigoYFJJU0NfQ09SRS5kbWVtMmNvcmVfcmVzcF9pICE9MCkgJiYgY29yZTJkbWVtX2NtZF9vX3IpCisvLyAgICAgICAgICAkZGlzcGxheSgiUklTQ1YtREVCVUcgPT4gRE1FTSBBRERSRVNTOiAleCBXcml0ZSBEYXRhOiAleCBSZXNvbnNlOiAleCIsIGNvcmUyZG1lbV9hZGRyX29fcixgUklTQ19DT1JFLmNvcmUyZG1lbV93ZGF0YV9vLGBSSVNDX0NPUkUuZG1lbTJjb3JlX3Jlc3BfaSk7CisvLyAgICBpZigoYFJJU0NfQ09SRS5kbWVtMmNvcmVfcmVzcF9pICE9MCkgJiYgIWNvcmUyZG1lbV9jbWRfb19yKQorLy8gICAgICAgICAgJGRpc3BsYXkoIlJJU0NWLURFQlVHID0+IERNRU0gQUREUkVTUzogJXggUkVBRCBEYXRhIDogJXggUmVzb25zZTogJXgiLCBjb3JlMmRtZW1fYWRkcl9vX3IsYFJJU0NfQ09SRS5kbWVtMmNvcmVfcmRhdGFfaSxgUklTQ19DT1JFLmRtZW0yY29yZV9yZXNwX2kpOworLy9lbmQKK2VuZG1vZHVsZQorYGRlZmF1bHRfbmV0dHlwZSB3aXJlCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L3diX3BvcnQvTWFrZWZpbGUgYi92ZXJpbG9nL2R2L3diX3BvcnQvTWFrZWZpbGUKaW5kZXggMTMyYTFjYy4uZjE1NjViYiAxMDA2NDQKLS0tIGEvdmVyaWxvZy9kdi93Yl9wb3J0L01ha2VmaWxlCisrKyBiL3Zlcmlsb2cvZHYvd2JfcG9ydC9NYWtlZmlsZQpAQCAtMjYsNiArMjYsOCBAQAogVVBSSl9WRVJJTE9HX1BBVEggPz0gLi4vLi4vLi4vdmVyaWxvZwogVVBSSl9SVExfUEFUSCA9ICQoVVBSSl9WRVJJTE9HX1BBVEgpL3J0bAogVVBSSl9CRUhBVklPVVJBTF9NT0RFTFMgPSAuLi8KK1VQUkpfSU5DTFVERV9QQVRIMSA9ICQoVVBSSl9SVExfUEFUSCkvc3ludGFjb3JlL3NjcjEvc3JjL2luY2x1ZGVzCitVUFJKX0lOQ0xVREVfUEFUSDIgPSAkKFVQUkpfUlRMX1BBVEgpL3NkcmFtX2N0cmwvc3JjL2RlZnMKIAogIyMgUklTQ1YgR0NDIAogR0NDX1BBVEg/PS9lZi9hcHBzL2JpbgpAQCAtNDMsMTEgKzQ1LDE0IEBACiAKIGhleDogICR7UEFUVEVSTjo9LmhleH0KIAordnZwOiAgJHtQQVRURVJOOj0udnZwfQorCiAlLnZ2cDogJV90Yi52ICUuaGV4CiBpZmVxICgkKFNJTSksUlRMKQotCWl2ZXJpbG9nIC1ERlVOQ1RJT05BTCAtRFNJTSAtSSAkKFBES19QQVRIKSBcCisJaXZlcmlsb2cgLWcyMDA1LXN2IC1ERlVOQ1RJT05BTCAtRFNJTSAtSSAkKFBES19QQVRIKSBcCiAJLUkgJChDQVJBVkVMX0JFSEFWSU9VUkFMX01PREVMUykgLUkgJChDQVJBVkVMX1JUTF9QQVRIKSBcCiAJLUkgJChVUFJKX0JFSEFWSU9VUkFMX01PREVMUykgICAgLUkgJChVUFJKX1JUTF9QQVRIKSBcCisJLUkgJChVUFJKX0lOQ0xVREVfUEFUSDEpICAgIC1JICQoVVBSSl9JTkNMVURFX1BBVEgyKSBcCiAJJDwgLW8gJEAgCiBlbHNlICAKIAlpdmVyaWxvZyAtREZVTkNUSU9OQUwgLURTSU0gLURHTCAtSSAkKFBES19QQVRIKSBcCmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L3diX3BvcnQvd2JfcG9ydC5jIGIvdmVyaWxvZy9kdi93Yl9wb3J0L3diX3BvcnQuYwppbmRleCA0MjVjMTE1Li4wNzlkMWVmIDEwMDY0NAotLS0gYS92ZXJpbG9nL2R2L3diX3BvcnQvd2JfcG9ydC5jCisrKyBiL3Zlcmlsb2cvZHYvd2JfcG9ydC93Yl9wb3J0LmMKQEAgLTE5LDYgKzE5LDI3IEBACiAjaW5jbHVkZSAidmVyaWxvZy9kdi9jYXJhdmVsL2RlZnMuaCIKICNpbmNsdWRlICJ2ZXJpbG9nL2R2L2NhcmF2ZWwvc3R1Yi5jIgogCisvLyBVc2VyIFByb2plY3QgU2xhdmVzICgweDMwMDBfMDAwMCkKKyNkZWZpbmUgcmVnX21wcmpfc2xhdmUgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMDApCisKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMCAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMDApCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzEgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDA0KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcyICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAwOCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMyAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMEMpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzQgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDEwKQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWc1ICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAxNCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnNiAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMTgpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzcgICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDFDKQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWc4ICAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAyMCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnOSAgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMjQpCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzEwICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDI4KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcxMSAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAyQykKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMTIgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwMzApCisjZGVmaW5lIHJlZ19tcHJqX2dsb2JsX3JlZzEzICgqKHZvbGF0aWxlIHVpbnQzMl90KikweDMwMDAwMDM0KQorI2RlZmluZSByZWdfbXByal9nbG9ibF9yZWcxNCAoKih2b2xhdGlsZSB1aW50MzJfdCopMHgzMDAwMDAzOCkKKyNkZWZpbmUgcmVnX21wcmpfZ2xvYmxfcmVnMTUgKCoodm9sYXRpbGUgdWludDMyX3QqKTB4MzAwMDAwM0MpCisKKwogLyoKIAlXaXNoYm9uZSBUZXN0OgogCQktIENvbmZpZ3VyZXMgTVBSSiBsb3dlciA4LUlPIHBpbnMgYXMgb3V0cHV0cwpAQCAtMzAsNiArNTEsNyBAQAogdm9pZCBtYWluKCkKIHsKIAorCWludCBiRmFpbCA9IDA7CiAJLyogCiAJSU8gQ29udHJvbCBSZWdpc3RlcnMKIAl8IERNICAgICB8IFZUUklQIHwgU0xPVyAgfCBBTl9QT0wgfCBBTl9TRUwgfCBBTl9FTiB8IE1PRF9TRUwgfCBJTlBfRElTIHwgSE9MREggfCBPRUJfTiB8IE1HTVRfRU4gfApAQCAtODAsOCArMTAyLDM0IEBACiAgICAgLy8gRmxhZyBzdGFydCBvZiB0aGUgdGVzdAogCXJlZ19tcHJqX2RhdGFsID0gMHhBQjYwMDAwMDsKIAotICAgIHJlZ19tcHJqX3NsYXZlID0gMHgwMDAwMjcxMDsKLSAgICBpZiAocmVnX21wcmpfc2xhdmUgPT0gMHgyNzUyKSB7CisgICAgaWYgKHJlZ19tcHJqX2dsb2JsX3JlZzEgIT0gMHhBNTVBQTU1QSkgYkZhaWwgPSAxOworICAgIGlmIChyZWdfbXByal9nbG9ibF9yZWcyICE9IDB4QUFCQkNDREQpIGJGYWlsID0gMTsKKworICAgIC8vIFdyaXRlIHNvZnR3YXJlIFdyaXRlICYgUmVhZCBSZWdpc3RlcgorICAgIHJlZ19tcHJqX2dsb2JsX3JlZzYgID0gMHgxMTIyMzM0NDsgCisgICAgcmVnX21wcmpfZ2xvYmxfcmVnNyAgPSAweDIyMzM0NDU1OyAKKyAgICByZWdfbXByal9nbG9ibF9yZWc4ICA9IDB4MzM0NDU1NjY7IAorICAgIHJlZ19tcHJqX2dsb2JsX3JlZzkgID0gMHg0NDU1NjY3NzsgCisgICAgcmVnX21wcmpfZ2xvYmxfcmVnMTAgPSAweDU1NjY3Nzg4OyAKKyAgICByZWdfbXByal9nbG9ibF9yZWcxMSA9IDB4NjY3Nzg4OTk7IAorICAgIHJlZ19tcHJqX2dsb2JsX3JlZzEyID0gMHg3Nzg4OTlBQTsgCisgICAgcmVnX21wcmpfZ2xvYmxfcmVnMTMgPSAweDg4OTlBQUJCOyAKKyAgICByZWdfbXByal9nbG9ibF9yZWcxNCA9IDB4OTlBQUJCQ0M7IAorICAgIHJlZ19tcHJqX2dsb2JsX3JlZzE1ID0gMHhBQUJCQ0NERDsgCisKKworICAgIGlmIChyZWdfbXByal9nbG9ibF9yZWc2ICAhPSAweDExMjIzMzQ0KSBiRmFpbCA9IDE7CisgICAgaWYgKHJlZ19tcHJqX2dsb2JsX3JlZzcgICE9IDB4MjIzMzQ0NTUpIGJGYWlsID0gMTsKKyAgICBpZiAocmVnX21wcmpfZ2xvYmxfcmVnOCAgIT0gMHgzMzQ0NTU2NikgYkZhaWwgPSAxOworICAgIGlmIChyZWdfbXByal9nbG9ibF9yZWc5ICAhPSAweDQ0NTU2Njc3KSBiRmFpbCA9IDE7CisgICAgaWYgKHJlZ19tcHJqX2dsb2JsX3JlZzEwICE9IDB4NTU2Njc3ODgpIGJGYWlsID0gMTsKKyAgICBpZiAocmVnX21wcmpfZ2xvYmxfcmVnMTEgIT0gMHg2Njc3ODg5OSkgYkZhaWwgPSAxOworICAgIGlmIChyZWdfbXByal9nbG9ibF9yZWcxMiAhPSAweDc3ODg5OUFBKSBiRmFpbCA9IDE7CisgICAgaWYgKHJlZ19tcHJqX2dsb2JsX3JlZzEzICE9IDB4ODg5OUFBQkIpIGJGYWlsID0gMTsKKyAgICBpZiAocmVnX21wcmpfZ2xvYmxfcmVnMTQgIT0gMHg5OUFBQkJDQykgYkZhaWwgPSAxOworICAgIGlmIChyZWdfbXByal9nbG9ibF9yZWcxNSAhPSAweEFBQkJDQ0REKSBiRmFpbCA9IDE7CisKKyAgICBpZihiRmFpbCA9PSAwKSB7CiAgICAgICAgIHJlZ19tcHJqX2RhdGFsID0gMHhBQjYxMDAwMDsKICAgICB9IGVsc2UgewogICAgICAgICByZWdfbXByal9kYXRhbCA9IDB4QUI2MDAwMDA7CmRpZmYgLS1naXQgYS92ZXJpbG9nL2R2L3diX3BvcnQvd2JfcG9ydF90Yi52IGIvdmVyaWxvZy9kdi93Yl9wb3J0L3diX3BvcnRfdGIudgppbmRleCBiMzJmOTAwLi4yNDU1MDY5IDEwMDY0NAotLS0gYS92ZXJpbG9nL2R2L3diX3BvcnQvd2JfcG9ydF90Yi52CisrKyBiL3Zlcmlsb2cvZHYvd2JfcG9ydC93Yl9wb3J0X3RiLnYKQEAgLTQ3LDkgKzQ3LDE0IEBACiAJCWNsb2NrID0gMDsKIAllbmQKIAorCWBpZmRlZiBXRkRVTVAKIAlpbml0aWFsIGJlZ2luCiAJCSRkdW1wZmlsZSgid2JfcG9ydC52Y2QiKTsKLQkJJGR1bXB2YXJzKDAsIHdiX3BvcnRfdGIpOworCQkkZHVtcHZhcnMoMCwgd2JfcG9ydF90Yi51dXQubXByaik7CisJZW5kCisgICAgICAgYGVuZGlmCisKKwlpbml0aWFsIGJlZ2luCiAKIAkJLy8gUmVwZWF0IGN5Y2xlcyBvZiAxMDAwIGNsb2NrIGVkZ2VzIGFzIG5lZWRlZCB0byBjb21wbGV0ZSB0ZXN0YmVuY2gKIAkJcmVwZWF0ICgzMCkgYmVnaW4KQEAgLTU3LDExICs2MiwxMyBAQAogCQkJLy8gJGRpc3BsYXkoIisxMDAwIGN5Y2xlcyIpOwogCQllbmQKIAkJJGRpc3BsYXkoIiVjWzE7MzFtIiwyNyk7CisJCSRkaXNwbGF5ICgiIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyIpOwogCQlgaWZkZWYgR0wKIAkJCSRkaXNwbGF5ICgiTW9uaXRvcjogVGltZW91dCwgVGVzdCBNZWdhLVByb2plY3QgV0IgUG9ydCAoR0wpIEZhaWxlZCIpOwogCQlgZWxzZQogCQkJJGRpc3BsYXkgKCJNb25pdG9yOiBUaW1lb3V0LCBUZXN0IE1lZ2EtUHJvamVjdCBXQiBQb3J0IChSVEwpIEZhaWxlZCIpOwogCQlgZW5kaWYKKwkJJGRpc3BsYXkgKCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIik7CiAJCSRkaXNwbGF5KCIlY1swbSIsMjcpOwogCQkkZmluaXNoOwogCWVuZApAQCAtNzAsMTEgKzc3LDEzIEBACiAJICAgd2FpdChjaGVja2JpdHMgPT0gMTYnaCBBQjYwKTsKIAkJJGRpc3BsYXkoIk1vbml0b3I6IE1QUkotTG9naWMgV0IgU3RhcnRlZCIpOwogCQl3YWl0KGNoZWNrYml0cyA9PSAxNidoIEFCNjEpOworCQkkZGlzcGxheSAoIiMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMiKTsKIAkJYGlmZGVmIEdMCiAJICAgIAkkZGlzcGxheSgiTW9uaXRvcjogTWVnYS1Qcm9qZWN0IFdCIChHTCkgUGFzc2VkIik7CiAJCWBlbHNlCiAJCSAgICAkZGlzcGxheSgiTW9uaXRvcjogTWVnYS1Qcm9qZWN0IFdCIChSVEwpIFBhc3NlZCIpOwogCQlgZW5kaWYKKwkJJGRpc3BsYXkgKCIjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIik7CiAJICAgICRmaW5pc2g7CiAJZW5kCiAKQEAgLTEwMiw5ICsxMTEsOSBAQAogCQlwb3dlcjQgPD0gMSdiMTsKIAllbmQKIAotCWFsd2F5cyBAKG1wcmpfaW8pIGJlZ2luCi0JCSMxICRkaXNwbGF5KCJNUFJKLUlPIHN0YXRlID0gJWIgIiwgbXByal9pb1s3OjBdKTsKLQllbmQKKwkvL2Fsd2F5cyBAKG1wcmpfaW8pIGJlZ2luCisJLy8JIzEgJGRpc3BsYXkoIk1QUkotSU8gc3RhdGUgPSAlYiAiLCBtcHJqX2lvWzc6MF0pOworCS8vZW5kCiAKIAl3aXJlIGZsYXNoX2NzYjsKIAl3aXJlIGZsYXNoX2NsazsKQEAgLTE1NCw0ICsxNjMsNCBAQAogCSk7CiAKIGVuZG1vZHVsZQotYGRlZmF1bHRfbmV0dHlwZSB3aXJlClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorYGRlZmF1bHRfbmV0dHlwZSB3aXJlCmRpZmYgLS1naXQgYS92ZXJpbG9nL3J0bC9kaWdpdGFsX2NvcmUvc3JjL2dsYmxfY2ZnLnN2IGIvdmVyaWxvZy9ydGwvZGlnaXRhbF9jb3JlL3NyYy9nbGJsX2NmZy5zdgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNDRlMjBjCi0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9ydGwvZGlnaXRhbF9jb3JlL3NyYy9nbGJsX2NmZy5zdgpAQCAtMCwwICsxLDEwNTYgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIEdsb2JhbCBjb25mZyByZWdpc3RlciAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBZSUZpdmUgY29yZXMgcHJvamVjdCAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIGh0dHA6Ly93d3cub3BlbmNvcmVzLm9yZy9jb3Jlcy95aWZpdmUvICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICBUaGlzIGJsb2NrIGdlbmVyYXRlIGFsbCB0aGUgZ2xvYmFsIGNvbmZpZyBhbmQgc3RhdHVzICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFRvIERvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgbm90aGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIEF1dGhvcihzKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAtIERpbmVzaCBBbm5heXlhLCBkaW5lc2hhQG9wZW5jb3Jlcy5vcmcgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFJldmlzaW9uIDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgMC4xIC0gMDggSnVuZSAyMDIxICBEaW5lc2ggQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgSW5pdGlhbCB2ZXJzaW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gQ29weXJpZ2h0IChDKSAyMDAwIEF1dGhvcnMgYW5kIE9QRU5DT1JFUy5PUkcgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gVGhpcyBzb3VyY2UgZmlsZSBtYXkgYmUgdXNlZCBhbmQgZGlzdHJpYnV0ZWQgd2l0aG91dCAgICAgICAgIC8vLy8KKy8vLy8gcmVzdHJpY3Rpb24gcHJvdmlkZWQgdGhhdCB0aGlzIGNvcHlyaWdodCBzdGF0ZW1lbnQgaXMgbm90ICAgIC8vLy8KKy8vLy8gcmVtb3ZlZCBmcm9tIHRoZSBmaWxlIGFuZCB0aGF0IGFueSBkZXJpdmF0aXZlIHdvcmsgY29udGFpbnMgIC8vLy8KKy8vLy8gdGhlIG9yaWdpbmFsIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoZSBhc3NvY2lhdGVkIGRpc2NsYWltZXIuIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gVGhpcyBzb3VyY2UgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCAgIC8vLy8KKy8vLy8gYW5kL29yIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCAgIC8vLy8KKy8vLy8gUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IC8vLy8KKy8vLy8gZWl0aGVyIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSAgIC8vLy8KKy8vLy8gbGF0ZXIgdmVyc2lvbi4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gVGhpcyBzb3VyY2UgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlICAgICAgIC8vLy8KKy8vLy8gdXNlZnVsLCBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCAgIC8vLy8KKy8vLy8gd2FycmFudHkgb2YgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiAgICAgIC8vLy8KKy8vLy8gUFVSUE9TRS4gIFNlZSB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIC8vLy8KKy8vLy8gZGV0YWlscy4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsICAgIC8vLy8KKy8vLy8gUHVibGljIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHNvdXJjZTsgaWYgbm90LCBkb3dubG9hZCBpdCAgIC8vLy8KKy8vLy8gZnJvbSBodHRwOi8vd3d3Lm9wZW5jb3Jlcy5vcmcvbGdwbC5zaHRtbCAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKworbW9kdWxlIGdsYmxfY2ZnICgKKworICAgICAgICBpbnB1dCBsb2dpYyAgICAgICAgICAgICBtY2xrLAorICAgICAgICBpbnB1dCBsb2dpYyAgICAgICAgICAgICByZXNldF9uLAorICAgICAgICBvdXRwdXQgbG9naWMgWzMxOjBdICAgICBkZXZpY2VfaWRjb2RlLAorCisgICAgICAgIC8vIFJlZyBCdXMgSW50ZXJmYWNlIFNpZ25hbAorICAgICAgICBpbnB1dCBsb2dpYyAgICAgICAgICAgICByZWdfY3MsCisgICAgICAgIGlucHV0IGxvZ2ljICAgICAgICAgICAgIHJlZ193ciwKKyAgICAgICAgaW5wdXQgbG9naWMgWzM6MF0gICAgICAgcmVnX2FkZHIsCisgICAgICAgIGlucHV0IGxvZ2ljIFszMTowXSAgICAgIHJlZ193ZGF0YSwKKyAgICAgICAgaW5wdXQgbG9naWMgWzM6MF0gICAgICAgcmVnX2JlLAorCisgICAgICAgLy8gT3V0cHV0cworICAgICAgICBvdXRwdXQgbG9naWMgWzMxOjBdICAgICByZWdfcmRhdGEsCisgICAgICAgIG91dHB1dCBsb2dpYyAgICAgICAgICAgIHJlZ19hY2ssCisKKyAgICAgICAvLyBTRFJBTSBDbG9jaworCisgICAgICAgb3V0cHV0ICBsb2dpYyAgICAgICAgICAgc2RyYW1fY2xrLAorCisgICAgICAgLy8gcmVzZXQKKyAgICAgICBvdXRwdXQgIGxvZ2ljICAgICAgICAgICBjcHVfcnN0X24sCisgICAgICAgb3V0cHV0ICBsb2dpYyAgICAgICAgICAgc3BpX3JzdF9uLAorICAgICAgIG91dHB1dCAgbG9naWMgICAgICAgICAgIHNkcmFtX3JzdF9uLAorCisgICAgICAgLy8gUmlzYyBjb25maWd1cmF0aW9uCisgICAgICAgb3V0cHV0IGxvZ2ljIFszMTowXSAgICAgZnVzZV9taGFydGlkLAorICAgICAgIG91dHB1dCBsb2dpYyBbMTU6MF0gICAgIGlycV9saW5lcywKKyAgICAgICBvdXRwdXQgbG9naWMgICAgICAgICAgICBzb2Z0X2lycSwKKworICAgICAgIC8vIFNEUkFNIENvbmZpZworICAgICAgIGlucHV0IGxvZ2ljICAgICAgICAgICAgIHNkcl9pbml0X2RvbmUgICAgICAgLCAvLyBJbmRpY2F0ZSBTRFJBTSBJbml0aWFsaXNhdGlvbiBEb25lCisgICAgICAgb3V0cHV0IGxvZ2ljIFsxOjBdICAgICAgY2ZnX3Nkcl93aWR0aCAgICAgICAsIC8vIDInYjAwIC0gMzIgQml0IFNEUiwgMidiMDEgLSAxNiBCaXQgU0RSLCAyJ2IxeCAtIDggQml0CisgICAgICAgb3V0cHV0IGxvZ2ljIFsxOjBdICAgICAgY2ZnX2NvbGJpdHMgICAgICAgICAsIC8vIDInYjAwIC0gOCBCaXQgY29sdW1uIGFkZHJlc3MsIAorICAgICAgIG91dHB1dCBsb2dpYyBbMzowXSAgICAgIGNmZ19zZHJfdHJhc19kICAgICAgLCAvLyBBY3RpdmUgdG8gcHJlY2hhcmdlIGRlbGF5CisgICAgICAgb3V0cHV0IGxvZ2ljIFszOjBdICAgICAgY2ZnX3Nkcl90cnBfZCAgICAgICAsIC8vIFByZWNoYXJnZSB0byBhY3RpdmUgZGVsYXkKKyAgICAgICBvdXRwdXQgbG9naWMgWzM6MF0gICAgICBjZmdfc2RyX3RyY2RfZCAgICAgICwgLy8gQWN0aXZlIHRvIFIvVyBkZWxheQorICAgICAgIG91dHB1dCBsb2dpYyAJICAgICAgIGNmZ19zZHJfZW4gICAgICAgICAgLCAvLyBFbmFibGUgU0RSQU0gY29udHJvbGxlcgorICAgICAgIG91dHB1dCBsb2dpYyBbMTowXSAgICAgIGNmZ19yZXFfZGVwdGggICAgICAgLCAvLyBNYXhpbXVtIFJlcXVlc3QgYWNjZXB0ZWQgYnkgU0RSQU0gY29udHJvbGxlcgorICAgICAgIG91dHB1dCBsb2dpYyBbMTI6MF0gICAgIGNmZ19zZHJfbW9kZV9yZWcgICAgLAorICAgICAgIG91dHB1dCBsb2dpYyBbMjowXSAgICAgIGNmZ19zZHJfY2FzICAgICAgICAgLCAvLyBTRFJBTSBDQVMgTGF0ZW5jeQorICAgICAgIG91dHB1dCBsb2dpYyBbMzowXSAgICAgIGNmZ19zZHJfdHJjYXJfZCAgICAgLCAvLyBBdXRvLXJlZnJlc2ggcGVyaW9kCisgICAgICAgb3V0cHV0IGxvZ2ljIFszOjBdICAgICAgY2ZnX3Nkcl90d3JfZCAgICAgICAsIC8vIFdyaXRlIHJlY292ZXJ5IGRlbGF5CisgICAgICAgb3V0cHV0IGxvZ2ljIFsxMTowXSAgICAgY2ZnX3Nkcl9yZnNoICAgICAgICAsCisgICAgICAgb3V0cHV0IGxvZ2ljIFsyOjBdICAgICAgY2ZnX3Nkcl9yZm1heCAgICAgICAKKworCisgICAgICAgICk7CisKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBJbnRlcm5hbCBXaXJlIERlY2xhcmF0aW9ucworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitsb2dpYyAgICAgICAgICAgc3dfcmRfZW47Citsb2dpYyAgICAgICAgICAgc3dfd3JfZW47Citsb2dpYyAgWzM6MF0gICAgc3dfYWRkciA7IC8vIGFkZHJlc3NpbmcgMTYgcmVnaXN0ZXJzCitsb2dpYyAgWzM6MF0gICAgd3JfYmUgICA7Citsb2dpYyAgWzMxOjBdICAgc3dfcmVnX3dkYXRhOworCitsb2dpYyAgICAgICAgICAgcmVnX2NzX2wgICAgOworbG9naWMgICAgICAgICAgIHJlZ19jc18ybCAgICA7Citsb2dpYyAgICAgICAgICAgY2ZnX3NkcmFtX2Nsa19kaXY7CisKKworbG9naWMgWzMxOjBdICAgIHJlZ18wOyAgLy8gU29mdHdhcmVfUmVnXzAKK2xvZ2ljIFszMTowXSAgICByZWdfMTsgIC8vIFNvZnR3YXJlLVJlZ18xCitsb2dpYyBbMzE6MF0gICAgcmVnXzI7ICAvLyBTb2Z0d2FyZS1SZWdfMgorbG9naWMgWzMxOjBdICAgIHJlZ18zOyAgLy8gU29mdHdhcmUtUmVnXzMKK2xvZ2ljIFszMTowXSAgICByZWdfNDsgIC8vIFNvZnR3YXJlLVJlZ180Citsb2dpYyBbMzE6MF0gICAgcmVnXzU7ICAvLyBTb2Z0d2FyZS1SZWdfNQorbG9naWMgWzMxOjBdICAgIHJlZ182OyAgLy8gU29mdHdhcmUtUmVnXzYKK2xvZ2ljIFszMTowXSAgICByZWdfNzsgIC8vIFNvZnR3YXJlLVJlZ183Citsb2dpYyBbMzE6MF0gICAgcmVnXzg7ICAvLyBTb2Z0d2FyZS1SZWdfOAorbG9naWMgWzMxOjBdICAgIHJlZ185OyAgLy8gU29mdHdhcmUtUmVnXzkKK2xvZ2ljIFszMTowXSAgICByZWdfMTA7IC8vIFNvZnR3YXJlLVJlZ18xMAorbG9naWMgWzMxOjBdICAgIHJlZ18xMTsgLy8gU29mdHdhcmUtUmVnXzExCitsb2dpYyBbMzE6MF0gICAgcmVnXzEyOyAvLyBTb2Z0d2FyZS1SZWdfMTIKK2xvZ2ljIFszMTowXSAgICByZWdfMTM7IC8vIFNvZnR3YXJlLVJlZ18xMworbG9naWMgWzMxOjBdICAgIHJlZ18xNDsgLy8gU29mdHdhcmUtUmVnXzE0Citsb2dpYyBbMzE6MF0gICAgcmVnXzE1OyAvLyBTb2Z0d2FyZS1SZWdfMTUKK2xvZ2ljIFszMTowXSAgICByZWdfb3V0OworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBNYWluIGNvZGUgc3RhcnRzIGhlcmUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gVG8gYXZvaWQgaW50ZXJmYWNlIHRpbWluZywgYWxsIHRoZSBjb250ZW50IGFyZSByZWdpc3RlcmVkCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithbHdheXMgQCAocG9zZWRnZSBtY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKK2JlZ2luIAorICAgaWYgKHJlc2V0X24gPT0gMSdiMCkKKyAgIGJlZ2luCisgICAgc3dfYWRkciAgICAgICA8PSAnMDsKKyAgICBzd19yZF9lbiAgICAgIDw9ICcwOworICAgIHN3X3dyX2VuICAgICAgPD0gJzA7CisgICAgc3dfcmVnX3dkYXRhICA8PSAnMDsKKyAgICB3cl9iZSAgICAgICAgIDw9ICcwOworICAgIHJlZ19jc19sICAgICAgPD0gJzA7CisgICAgcmVnX2NzXzJsICAgICA8PSAnMDsKKyAgZW5kIGVsc2UgYmVnaW4KKyAgICBzd19hZGRyICAgICAgIDw9IHJlZ19hZGRyIFszOjBdOworICAgIHN3X3JkX2VuICAgICAgPD0gcmVnX2NzICYgIXJlZ193cjsKKyAgICBzd193cl9lbiAgICAgIDw9IHJlZ19jcyAmIHJlZ193cjsKKyAgICBzd19yZWdfd2RhdGEgIDw9IHJlZ193ZGF0YTsKKyAgICB3cl9iZSAgICAgICAgIDw9IHJlZ19iZTsKKyAgICByZWdfY3NfbCAgICAgIDw9IHJlZ19jczsKKyAgICByZWdfY3NfMmwgICAgIDw9IHJlZ19jc19sOworICBlbmQKK2VuZAorCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJlYWQgcGF0aCBtdXgKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworYWx3YXlzIEAgKHBvc2VkZ2UgbWNsayBvciBuZWdlZGdlIHJlc2V0X24pCitiZWdpbiA6IHByZWdfb3V0X1NlcQorICAgaWYgKHJlc2V0X24gPT0gMSdiMCkgYmVnaW4KKyAgICAgIHJlZ19yZGF0YSBbMzE6MF0gIDw9IDMyJ2gwMDAwXzAwMDA7CisgICAgICByZWdfYWNrICAgICAgICAgICA8PSAxJ2IwOworICAgZW5kIGVsc2UgaWYgKHN3X3JkX2VuICYmICFyZWdfYWNrICYmICFyZWdfY3NfMmwpIGJlZ2luCisgICAgICByZWdfcmRhdGEgWzMxOjBdICA8PSByZWdfb3V0IFszMTowXTsKKyAgICAgIHJlZ19hY2sgICAgICAgICAgIDw9IDEnYjE7CisgICBlbmQgZWxzZSBpZiAoc3dfd3JfZW4gJiYgIXJlZ19hY2sgJiYgIXJlZ19jc18ybCkgYmVnaW4gCisgICAgICByZWdfYWNrICAgICAgICAgICA8PSAxJ2IxOworICAgZW5kIGVsc2UgYmVnaW4KKyAgICAgIHJlZ19hY2sgICAgICAgIDw9IDEnYjA7CisgICBlbmQKK2VuZAorCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIHJlZ2lzdGVyIHJlYWQgZW5hYmxlIGFuZCB3cml0ZSBlbmFibGUgZGVjb2RpbmcgbG9naWMKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3dpcmUgICBzd193cl9lbl8wID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2gwKTsKK3dpcmUgICBzd19yZF9lbl8wID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2gwKTsKK3dpcmUgICBzd193cl9lbl8xID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2gxKTsKK3dpcmUgICBzd19yZF9lbl8xID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2gxKTsKK3dpcmUgICBzd193cl9lbl8yID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2gyKTsKK3dpcmUgICBzd19yZF9lbl8yID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2gyKTsKK3dpcmUgICBzd193cl9lbl8zID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2gzKTsKK3dpcmUgICBzd19yZF9lbl8zID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2gzKTsKK3dpcmUgICBzd193cl9lbl80ID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2g0KTsKK3dpcmUgICBzd19yZF9lbl80ID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2g0KTsKK3dpcmUgICBzd193cl9lbl81ID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2g1KTsKK3dpcmUgICBzd19yZF9lbl81ID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2g1KTsKK3dpcmUgICBzd193cl9lbl82ID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2g2KTsKK3dpcmUgICBzd19yZF9lbl82ID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2g2KTsKK3dpcmUgICBzd193cl9lbl83ID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2g3KTsKK3dpcmUgICBzd19yZF9lbl83ID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2g3KTsKK3dpcmUgICBzd193cl9lbl84ID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2g4KTsKK3dpcmUgICBzd19yZF9lbl84ID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2g4KTsKK3dpcmUgICBzd193cl9lbl85ID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2g5KTsKK3dpcmUgICBzd19yZF9lbl85ID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2g5KTsKK3dpcmUgICBzd193cl9lbl8xMCA9IHN3X3dyX2VuICYgKHN3X2FkZHIgPT0gNCdoQSk7Cit3aXJlICAgc3dfcmRfZW5fMTAgPSBzd19yZF9lbiAmIChzd19hZGRyID09IDQnaEEpOword2lyZSAgIHN3X3dyX2VuXzExID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2hCKTsKK3dpcmUgICBzd19yZF9lbl8xMSA9IHN3X3JkX2VuICYgKHN3X2FkZHIgPT0gNCdoQik7Cit3aXJlICAgc3dfd3JfZW5fMTIgPSBzd193cl9lbiAmIChzd19hZGRyID09IDQnaEMpOword2lyZSAgIHN3X3JkX2VuXzEyID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2hDKTsKK3dpcmUgICBzd193cl9lbl8xMyA9IHN3X3dyX2VuICYgKHN3X2FkZHIgPT0gNCdoRCk7Cit3aXJlICAgc3dfcmRfZW5fMTMgPSBzd19yZF9lbiAmIChzd19hZGRyID09IDQnaEQpOword2lyZSAgIHN3X3dyX2VuXzE0ID0gc3dfd3JfZW4gJiAoc3dfYWRkciA9PSA0J2hFKTsKK3dpcmUgICBzd19yZF9lbl8xNCA9IHN3X3JkX2VuICYgKHN3X2FkZHIgPT0gNCdoRSk7Cit3aXJlICAgc3dfd3JfZW5fMTUgPSBzd193cl9lbiAmIChzd19hZGRyID09IDQnaEYpOword2lyZSAgIHN3X3JkX2VuXzE1ID0gc3dfcmRfZW4gJiAoc3dfYWRkciA9PSA0J2hGKTsKKworCithbHdheXMgQCggKikKK2JlZ2luIDogcHJlZ19zZWxfQ29tCisKKyAgcmVnX291dCBbMzE6MF0gPSAzMidkMDsKKworICBjYXNlIChzd19hZGRyIFszOjBdKQorICAgIDQnYjAwMDAgOiByZWdfb3V0IFszMTowXSA9IHJlZ18wIFszMTowXTsgICAgIAorICAgIDQnYjAwMDEgOiByZWdfb3V0IFszMTowXSA9IHJlZ18xIFszMTowXTsgICAgCisgICAgNCdiMDAxMCA6IHJlZ19vdXQgWzMxOjBdID0gcmVnXzIgWzMxOjBdOyAgICAgCisgICAgNCdiMDAxMSA6IHJlZ19vdXQgWzMxOjBdID0gcmVnXzMgWzMxOjBdOyAgICAKKyAgICA0J2IwMTAwIDogcmVnX291dCBbMzE6MF0gPSByZWdfNCBbMzE6MF07ICAgIAorICAgIDQnYjAxMDEgOiByZWdfb3V0IFszMTowXSA9IHJlZ181IFszMTowXTsgICAgCisgICAgNCdiMDExMCA6IHJlZ19vdXQgWzMxOjBdID0gcmVnXzYgWzMxOjBdOyAgICAKKyAgICA0J2IwMTExIDogcmVnX291dCBbMzE6MF0gPSByZWdfNyBbMzE6MF07ICAgIAorICAgIDQnYjEwMDAgOiByZWdfb3V0IFszMTowXSA9IHJlZ184IFszMTowXTsgICAgCisgICAgNCdiMTAwMSA6IHJlZ19vdXQgWzMxOjBdID0gcmVnXzkgWzMxOjBdOyAgICAKKyAgICA0J2IxMDEwIDogcmVnX291dCBbMzE6MF0gPSByZWdfMTAgWzMxOjBdOyAgIAorICAgIDQnYjEwMTEgOiByZWdfb3V0IFszMTowXSA9IHJlZ18xMSBbMzE6MF07ICAgCisgICAgNCdiMTEwMCA6IHJlZ19vdXQgWzMxOjBdID0gcmVnXzEyIFszMTowXTsgICAKKyAgICA0J2IxMTAxIDogcmVnX291dCBbMzE6MF0gPSByZWdfMTMgWzMxOjBdOworICAgIDQnYjExMTAgOiByZWdfb3V0IFszMTowXSA9IHJlZ18xNCBbMzE6MF07CisgICAgNCdiMTExMSA6IHJlZ19vdXQgWzMxOjBdID0gcmVnXzE1IFszMTowXTsgCisgIGVuZGNhc2UKK2VuZAorCisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gSW5kaXZpZHVhbCByZWdpc3RlciBhc3NpZ25tZW50cworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICByZWctMAorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCithc3NpZ24gY3B1X3JzdF9uICAgICA9IHJlZ18wWzBdOworYXNzaWduIHNwaV9yc3RfbiAgICAgPSByZWdfMFsxXTsKK2Fzc2lnbiBzZHJhbV9yc3RfbiAgID0gcmVnXzBbMl07Cithc3NpZ24gY2ZnX3NkcmFtX2Nsa19kaXYgPSByZWdfMFszXTsKKworCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcwX2JlMCAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzAgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzBdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVs3OjBdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzBbNzowXSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcwX2JlMSAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzAgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzFdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNTo4XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18wWzE1OjhdICAgICAgICApCisgICAgICAgICAgKTsKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcwX2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzAgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMFsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMF9iZTMgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8wICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVszXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMzE6MjRdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzBbMzE6MjRdICAgICAgICApCisgICAgICAgICAgKTsKKworCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLTEsIHJlc2V0IHZhbHVlID0gMzInaEE1NUFfQTU1QQorLy8gICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYXNzaWduICBkZXZpY2VfaWRjb2RlICAgICA9IHJlZ18xWzMxOjBdOyAKKworZ2VuZXJpY19yZWdpc3RlciAjKC5XRCg4KSwuUkVTRVRfREVGQVVMVCg4J2g1QSkpIHVfcmVnMV9iZTAgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVswXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbNzowXSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xWzc6MF0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoLldEKDgpLC5SRVNFVF9ERUZBVUxUKDgnaEE1KSAgKSB1X3JlZzFfYmUxICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMV0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzE1OjhdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzFbMTU6OF0gICAgICAgICkKKyAgICAgICAgICApOworZ2VuZXJpY19yZWdpc3RlciAjKC5XRCg4KSwuUkVTRVRfREVGQVVMVCg4J2g1QSkgICkgdV9yZWcxX2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzEgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMVsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoLldEKDgpLC5SRVNFVF9ERUZBVUxUKDgnaEE1KSAgKSB1X3JlZzFfYmUzICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbM10gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzMxOjI0XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xWzMxOjI0XSAgICAgICAgKQorICAgICAgICAgICk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLTIsIHJlc2V0IHZhbHVlID0gMzInaEFBQkJDQ0RECisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCithc3NpZ24gIGZ1c2VfbWhhcnRpZCAgICAgPSByZWdfMVszMTowXTsgCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyguV0QoOCksLlJFU0VUX0RFRkFVTFQoOCdoREQpICApIHVfcmVnMl9iZTAgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8yICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVswXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbNzowXSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18yWzc6MF0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoLldEKDgpLC5SRVNFVF9ERUZBVUxUKDgnaENDKSAgKSB1X3JlZzJfYmUxICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMiAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMV0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzE1OjhdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzJbMTU6OF0gICAgICAgICkKKyAgICAgICAgICApOworZ2VuZXJpY19yZWdpc3RlciAjKC5XRCg4KSwuUkVTRVRfREVGQVVMVCg4J2hCQikgICkgdV9yZWcyX2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzIgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMlsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoLldEKDgpLC5SRVNFVF9ERUZBVUxUKDgnaEFBKSAgKSB1X3JlZzJfYmUzICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMiAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbM10gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzMxOjI0XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18yWzMxOjI0XSAgICAgICAgKQorICAgICAgICAgICk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLTMKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2Fzc2lnbiAgaXJxX2xpbmVzICAgICA9IHJlZ18zWzE1OjBdOyAKK2Fzc2lnbiAgc29mdF9pcnEgICAgICA9IHJlZ18zWzE2XTsgCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWczX2JlMCAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzMgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzBdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVs3OjBdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzNbNzowXSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWczX2JlMSAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzMgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzFdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNTo4XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18zWzE1OjhdICAgICAgICApCisgICAgICAgICAgKTsKK2dlbmVyaWNfcmVnaXN0ZXIgIygxLDAgICkgdV9yZWczX2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHsxe3N3X3dyX2VuXzMgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfM1sxNl0gICAgICAgICkKKyAgICAgICAgICApOworCithc3NpZ24gcmVnXzNbMzE6MTddID0gJzA7CisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICByZWctNAorLy8gICByZWNvbW1lbmRlZCBEZWZhdWx0IHZhbHVlOgorLy8gICAxJ2IxLDMnaDMsMidoMyw0J2gxLDQnaDcnLDQnaDIsNCdoMiw0J2g0LDInYjAwLDInYjEwID0gMzInaDJGMTdfMjI0MgorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorYXNzaWduICAgICAgY2ZnX3Nkcl93aWR0aCAgICAgPSByZWdfNFsxOjBdIDsgIC8vIDInYjEwIC8vIDInYjAwIC0gMzIgQml0IFNEUiwgMidiMDEgLSAxNiBCaXQgU0RSLCAyJ2IxeCAtIDggQml0Cithc3NpZ24gICAgICBjZmdfY29sYml0cyAgICAgICA9IHJlZ180WzM6Ml0gOyAgLy8gMidiMDAgLy8gIDggQml0IGNvbHVtbiBhZGRyZXNzLCAKK2Fzc2lnbiAgICAgIGNmZ19zZHJfdHJhc19kICAgID0gcmVnXzRbNzo0XSA7ICAvLyA0J2g0ICAvLyBBY3RpdmUgdG8gcHJlY2hhcmdlIGRlbGF5Cithc3NpZ24gICAgICBjZmdfc2RyX3RycF9kICAgICA9IHJlZ180WzExOjhdOyAgLy8gNCdoMiAgLy8gUHJlY2hhcmdlIHRvIGFjdGl2ZSBkZWxheQorYXNzaWduICAgICAgY2ZnX3Nkcl90cmNkX2QgICAgPSByZWdfNFsxNToxMl07IC8vIDQnaDIgIC8vIEFjdGl2ZSB0byBSL1cgZGVsYXkKK2Fzc2lnbiAgICAgIGNmZ19zZHJfdHJjYXJfZCAgID0gcmVnXzRbMTk6MTZdOyAvLyA0J2g3ICAvLyBBdXRvLXJlZnJlc2ggcGVyaW9kCithc3NpZ24gICAgICBjZmdfc2RyX3R3cl9kICAgICA9IHJlZ180WzIzOjIwXTsgLy8gNCdoMSAgLy8gV3JpdGUgcmVjb3ZlcnkgZGVsYXkKK2Fzc2lnbiAgICAgIGNmZ19yZXFfZGVwdGggICAgID0gcmVnXzRbMjU6MjRdOyAvLyAyJ2gzICAvLyBNYXhpbXVtIFJlcXVlc3QgYWNjZXB0ZWQgYnkgU0RSQU0gY29udHJvbGxlcgorYXNzaWduICAgICAgY2ZnX3Nkcl9jYXMgICAgICAgPSByZWdfNFsyODoyNl07IC8vIDMnaDMgIC8vIFNEUkFNIENBUyBMYXRlbmN5Cithc3NpZ24gICAgICBjZmdfc2RyX2VuICAgICAgICA9IHJlZ180WzI5XSAgIDsgLy8gMSdiMSAvLyBFbmFibGUgU0RSQU0gY29udHJvbGxlcgorYXNzaWduICAgICAgcmVnXzRbMzBdICAgICAgICAgPSBzZHJfaW5pdF9kb25lIDsgLy8gSW5kaWNhdGUgU0RSQU0gSW5pdGlhbGlzYXRpb24gRG9uZQorYXNzaWduICAgICAgcmVnXzRbMzFdICAgICAgICAgPSAxJ2IwOworCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc0X2JlMCAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzQgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzBdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVs3OjBdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzRbNzowXSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc0X2JlMSAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzQgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzFdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNTo4XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ180WzE1OjhdICAgICAgICApCisgICAgICAgICAgKTsKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc0X2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzQgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfNFsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoNiwwICApIHVfcmVnNF9iZTMgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7Nntzd193cl9lbl80ICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVszXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMjk6MjRdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzRbMjk6MjRdICAgICAgICApCisgICAgICAgICAgKTsKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLTUsIHJlY29tZW5kZWQgZGVmYXVsdCB2YWx1ZSB7MTInaDEwMCwxMydoMzMsMydoNn0gPSAzMidoMTAwXzAxOUUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK2Fzc2lnbiAgICAgIGNmZ19zZHJfcmZtYXggICAgID0gcmVnXzVbMjowXSA7ICAgLy8gMydoNgorYXNzaWduICAgICAgY2ZnX3Nkcl9tb2RlX3JlZyAgPSByZWdfNVsxNTozXSA7ICAvLyAxMydoMDMzCithc3NpZ24gICAgICBjZmdfc2RyX3Jmc2ggICAgICA9IHJlZ181WzI3OjE2XTsgIC8vIDEyJ2gxMDAKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzVfYmUwICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fNSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMF0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzc6MF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfNVs3OjBdICAgICAgICApCisgICAgICAgICAgKTsKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzVfYmUxICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fNSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMV0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzE1OjhdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzVbMTU6OF0gICAgICAgICkKKyAgICAgICAgICApOworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzVfYmUyICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fNSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMl0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzIzOjE2XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ181WzIzOjE2XSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc1X2JlMyAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzUgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzNdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVszMToyNF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfNVszMToyNF0gICAgICAgICkKKyAgICAgICAgICApOworCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLSA2CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc2X2JlMCAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzYgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzBdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVs3OjBdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzZbNzowXSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc2X2JlMSAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzYgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzFdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNTo4XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ182WzE1OjhdICAgICAgICApCisgICAgICAgICAgKTsKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc2X2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzYgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfNlsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnNl9iZTMgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl82ICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVszXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMzE6MjRdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzZbMzE6MjRdICAgICAgICApCisgICAgICAgICAgKTsKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHJlZy0gNworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnN19iZTAgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl83ICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVswXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbNzowXSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ183Wzc6MF0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnN19iZTEgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl83ICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVsxXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMTU6OF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfN1sxNTo4XSAgICAgICAgKQorICAgICAgICAgICk7CitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnN19iZTIgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl83ICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVsyXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMjM6MTZdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzdbMjM6MTZdICAgICAgICApCisgICAgICAgICAgKTsKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzdfYmUzICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fNyAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbM10gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzMxOjI0XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ183WzMxOjI0XSAgICAgICAgKQorICAgICAgICAgICk7CisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICByZWctIDgKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzhfYmUwICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fOCAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMF0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzc6MF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfOFs3OjBdICAgICAgICApCisgICAgICAgICAgKTsKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzhfYmUxICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fOCAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMV0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzE1OjhdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzhbMTU6OF0gICAgICAgICkKKyAgICAgICAgICApOworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzhfYmUyICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fOCAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMl0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzIzOjE2XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ184WzIzOjE2XSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc4X2JlMyAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzggJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzNdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVszMToyNF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfOFszMToyNF0gICAgICAgICkKKyAgICAgICAgICApOworCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLSA5CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc5X2JlMCAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzkgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzBdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVs3OjBdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzlbNzowXSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc5X2JlMSAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzkgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzFdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNTo4XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ185WzE1OjhdICAgICAgICApCisgICAgICAgICAgKTsKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWc5X2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzkgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfOVsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnOV9iZTMgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl85ICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVszXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMzE6MjRdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzlbMzE6MjRdICAgICAgICApCisgICAgICAgICAgKTsKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHJlZy0gMTAKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzEwX2JlMCAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzEwICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVswXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbNzowXSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xMFs3OjBdICAgICAgICApCisgICAgICAgICAgKTsKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzEwX2JlMSAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzEwICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVsxXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMTU6OF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTBbMTU6OF0gICAgICAgICkKKyAgICAgICAgICApOworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzEwX2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzEwICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVsyXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMjM6MTZdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzEwWzIzOjE2XSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxMF9iZTMgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xMCAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbM10gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzMxOjI0XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xMFszMToyNF0gICAgICAgICkKKyAgICAgICAgICApOworCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLSAxMQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTFfYmUwICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTEgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzBdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVs3OjBdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzExWzc6MF0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTFfYmUxICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTEgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzFdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNTo4XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xMVsxNTo4XSAgICAgICAgKQorICAgICAgICAgICk7CitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTFfYmUyICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTEgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTFbMjM6MTZdICAgICAgICApCisgICAgICAgICAgKTsKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzExX2JlMyAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzExICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVszXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMzE6MjRdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzExWzMxOjI0XSAgICAgICAgKQorICAgICAgICAgICk7CisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICByZWctIDEyCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxMl9iZTAgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xMiAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMF0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzc6MF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTJbNzowXSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxMl9iZTEgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xMiAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMV0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzE1OjhdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzEyWzE1OjhdICAgICAgICApCisgICAgICAgICAgKTsKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxMl9iZTIgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xMiAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMl0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzIzOjE2XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xMlsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTJfYmUzICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTIgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzNdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVszMToyNF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTJbMzE6MjRdICAgICAgICApCisgICAgICAgICAgKTsKKworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyAgIHJlZy0gMTMKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzEzX2JlMCAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzEzICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVswXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbNzowXSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xM1s3OjBdICAgICAgICApCisgICAgICAgICAgKTsKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzEzX2JlMSAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzEzICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVsxXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMTU6OF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTNbMTU6OF0gICAgICAgICkKKyAgICAgICAgICApOworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzEzX2JlMiAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzEzICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVsyXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMjM6MTZdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzEzWzIzOjE2XSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxM19iZTMgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xMyAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbM10gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzMxOjI0XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xM1szMToyNF0gICAgICAgICkKKyAgICAgICAgICApOworCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vICAgcmVnLSAxNAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTRfYmUwICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTQgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzBdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVs3OjBdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzE0Wzc6MF0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTRfYmUxICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTQgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzFdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsxNTo4XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xNFsxNTo4XSAgICAgICAgKQorICAgICAgICAgICk7CitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTRfYmUyICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTQgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzJdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVsyMzoxNl0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTRbMjM6MTZdICAgICAgICApCisgICAgICAgICAgKTsKKworZ2VuZXJpY19yZWdpc3RlciAjKDgsMCAgKSB1X3JlZzE0X2JlMyAoCisJICAgICAgLndlICAgICAgICAgICAgKHs4e3N3X3dyX2VuXzE0ICYgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3cl9iZVszXSAgIH19ICApLAkJIAorCSAgICAgIC5kYXRhX2luICAgICAgIChzd19yZWdfd2RhdGFbMzE6MjRdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzE0WzMxOjI0XSAgICAgICAgKQorICAgICAgICAgICk7CisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gICByZWctIDE1CisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxNV9iZTAgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xNSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMF0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzc6MF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTVbNzowXSAgICAgICAgKQorICAgICAgICAgICk7CisKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxNV9iZTEgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xNSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMV0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzE1OjhdICAgICksCisJICAgICAgLnJlc2V0X24gICAgICAgKHJlc2V0X24gICAgICAgICAgICksCisJICAgICAgLmNsayAgICAgICAgICAgKG1jbGsgICAgICAgICAgICAgICksCisJICAgICAgCisJICAgICAgLy9MaXN0IG9mIE91dHMKKwkgICAgICAuZGF0YV9vdXQgICAgICAocmVnXzE1WzE1OjhdICAgICAgICApCisgICAgICAgICAgKTsKK2dlbmVyaWNfcmVnaXN0ZXIgIyg4LDAgICkgdV9yZWcxNV9iZTIgKAorCSAgICAgIC53ZSAgICAgICAgICAgICh7OHtzd193cl9lbl8xNSAmIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd3JfYmVbMl0gICB9fSAgKSwJCSAKKwkgICAgICAuZGF0YV9pbiAgICAgICAoc3dfcmVnX3dkYXRhWzIzOjE2XSAgICApLAorCSAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uICAgICAgICAgICApLAorCSAgICAgIC5jbGsgICAgICAgICAgIChtY2xrICAgICAgICAgICAgICApLAorCSAgICAgIAorCSAgICAgIC8vTGlzdCBvZiBPdXRzCisJICAgICAgLmRhdGFfb3V0ICAgICAgKHJlZ18xNVsyMzoxNl0gICAgICAgICkKKyAgICAgICAgICApOworCitnZW5lcmljX3JlZ2lzdGVyICMoOCwwICApIHVfcmVnMTVfYmUzICgKKwkgICAgICAud2UgICAgICAgICAgICAoezh7c3dfd3JfZW5fMTUgJiAKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdyX2JlWzNdICAgfX0gICksCQkgCisJICAgICAgLmRhdGFfaW4gICAgICAgKHN3X3JlZ193ZGF0YVszMToyNF0gICAgKSwKKwkgICAgICAucmVzZXRfbiAgICAgICAocmVzZXRfbiAgICAgICAgICAgKSwKKwkgICAgICAuY2xrICAgICAgICAgICAobWNsayAgICAgICAgICAgICAgKSwKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIC5kYXRhX291dCAgICAgIChyZWdfMTVbMzE6MjRdICAgICAgICApCisgICAgICAgICAgKTsKKworCisKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBHZW5lcmF0ZSBTRFJBTSBEaXYtMiBDbG9jaworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCit3aXJlICAgc2RyYW1fY2xrX2RpdjI7CisKK2Fzc2lnbiBzZHJhbV9jbGsgPSAoY2ZnX3NkcmFtX2Nsa19kaXYpID8gc2RyYW1fY2xrX2RpdjIgOiBtY2xrOworCisKK2Nsa19jdGwgIygxKSB1X3NkcmFtY2xrICgKKyAgIC8vIE91dHB1dHMKKyAgICAgICAuY2xrX28gICAgICAgICAoc2RyYW1fY2xrX2RpdjIpLAorICAgLy8gSW5wdXRzCisgICAgICAgLm1jbGsgICAgICAgICAgKG1jbGspLAorICAgICAgIC5yZXNldF9uICAgICAgIChyZXNldF9uKSwgCisgICAgICAgLmNsa19kaXZfcmF0aW8gKDInYjAwKQorICAgKTsKKworCisKK2VuZG1vZHVsZQpkaWZmIC0tZ2l0IGEvdmVyaWxvZy9ydGwvbGliL2Nsa19jdGwudiBiL3Zlcmlsb2cvcnRsL2xpYi9jbGtfY3RsLnYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2YwNTBjMAotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvcnRsL2xpYi9jbGtfY3RsLnYKQEAgLTAsMCArMSwxMjYgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFR1Ym8gODA1MSBjb3JlcyBjb21tb24gbGlicmFyeSBNb2R1bGUgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBUdXJibyA4MDUxIGNvcmVzIHByb2plY3QgICAgICAgICAgIC8vLy8KKy8vLy8gIGh0dHA6Ly93d3cub3BlbmNvcmVzLm9yZy9jb3Jlcy90dXJibzgwNTEvICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFR1cmJvIDgwNTEgZGVmaW5pdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFRvIERvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgbm90aGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIEF1dGhvcihzKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAtIERpbmVzaCBBbm5heXlhLCBkaW5lc2hhQG9wZW5jb3Jlcy5vcmcgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFJldmlzaW9uIDogTWFyIDIsIDIwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8gCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIENvcHlyaWdodCAoQykgMjAwMCBBdXRob3JzIGFuZCBPUEVOQ09SRVMuT1JHICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgbWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIHdpdGhvdXQgICAgICAgICAvLy8vCisvLy8vIHJlc3RyaWN0aW9uIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgc3RhdGVtZW50IGlzIG5vdCAgICAvLy8vCisvLy8vIHJlbW92ZWQgZnJvbSB0aGUgZmlsZSBhbmQgdGhhdCBhbnkgZGVyaXZhdGl2ZSB3b3JrIGNvbnRhaW5zICAvLy8vCisvLy8vIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNjbGFpbWVyLiAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgICAvLy8vCisvLy8vIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAvLy8vCisvLy8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgICAvLy8vCisvLy8vIGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSAgICAgICAvLy8vCisvLy8vIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgICAvLy8vCisvLy8vIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgICAgICAvLy8vCisvLy8vIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSAvLy8vCisvLy8vIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCAgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBzb3VyY2U7IGlmIG5vdCwgZG93bmxvYWQgaXQgICAvLy8vCisvLy8vIGZyb20gaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2xncGwuc2h0bWwgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8vICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisvLyBNb2R1bGU6IGNsa19jdGwKKy8vCisvLyBEZXNjcmlwdGlvbjogIEdlbmVyaWMgY2xvY2sgY29udHJvbCBsb2dpYyAsIGNsay1vdXQgPSBtY2xrLygyK2Nsa19kaXZfcmF0aW8pCisvLworLy8gIAorLy8gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKworCittb2R1bGUgY2xrX2N0bCAoCisgICAvLyBPdXRwdXRzCisgICAgICAgY2xrX28sCisgICAvLyBJbnB1dHMKKyAgICAgICBtY2xrLAorICAgICAgIHJlc2V0X24sIAorICAgICAgIGNsa19kaXZfcmF0aW8gCisgICApOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQ0xPQ0sgRGVmYXVsdCBEaXZpZGVyIHZhbHVlLgorLy8gVGhpcyB2YWx1ZSB3aWxsIGJlIGNoYW5nZSBmcm9tIG91dHNpZGUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwYXJhbWV0ZXIgIFdEID0gJ2gxOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQWxsIHRoZSBpbnB1dCB0byB0aGlzIGJsb2NrIGFyZSBkZWNsYXJlZCBoZXJlCisvLyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAgaW5wdXQgICAgICAgIG1jbGsgICAgICAgICAgOy8vIAorICAgaW5wdXQgICAgICAgIHJlc2V0X24gICAgICAgOy8vIHByaW1hcnkgcmVzZXQgc2lnbmFsCisgICBpbnB1dCBbV0Q6MF0gY2xrX2Rpdl9yYXRpbyA7Ly8gcHJpbWFyeSBjbG9jayBkaXZpZGUgcmF0aW8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLyBvdXRwdXQgY2xvY2sgPSBzZWxlY3RlZCBjbG9jayAvIChkaXZfcmF0aW8rMSkKKyAgIAorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIEFsbCB0aGUgb3V0cHV0IHRvIHRoaXMgYmxvY2sgYXJlIGRlY2xhcmVkIGhlcmUKKy8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgICBvdXRwdXQgICAgICAgY2xrX28gICAgICAgICAgICAgOyAvLyBjbG9jayBvdXQKKworICAgICAgICAgICAgICAgCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBDbG9jayBEaXZpZGUgZnVuYyBpcyBkb25lIGhlcmUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCityZWcgIFtXRC0xOjBdICAgIGhpZ2hfY291bnQgICAgICAgOyAvLyBoaWdoIGxldmVsIGNvdW50ZXIKK3JlZyAgW1dELTE6MF0gICAgbG93X2NvdW50ICAgICAgICA7IC8vIGxvdyBsZXZlbCBjb3VudGVyCityZWcgICAgICAgICAgICAgIG1jbGtfZGl2ICAgICAgICAgOyAvLyBkaXZpZGVkIGNsb2NrCisKKworYXNzaWduIGNsa19vICA9IG1jbGtfZGl2OworCithbHdheXMgQCAocG9zZWRnZSBtY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKK2JlZ2luIC8vIHsKKyAgIGlmKHJlc2V0X24gPT0gMSdiMCkgCisgICBiZWdpbiAKKyAgICAgIGhpZ2hfY291bnQgIDw9ICdoMDsKKyAgICAgIGxvd19jb3VudCAgIDw9ICdoMDsKKyAgICAgIG1jbGtfZGl2ICAgIDw9ICdiMDsKKyAgIGVuZCAgIAorICAgZWxzZSAKKyAgIGJlZ2luIAorICAgICAgaWYoaGlnaF9jb3VudCAhPSAwKQorICAgICAgYmVnaW4gLy8geworICAgICAgICAgaGlnaF9jb3VudCAgICA8PSBoaWdoX2NvdW50IC0gMTsKKyAgICAgICAgIG1jbGtfZGl2ICAgICAgPD0gMSdiMTsKKyAgICAgIGVuZCAgIC8vIH0KKyAgICAgIGVsc2UgaWYobG93X2NvdW50ICE9IDApCisgICAgICBiZWdpbiAvLyB7CisgICAgICAgICBsb3dfY291bnQgICAgIDw9IGxvd19jb3VudCAtIDE7CisgICAgICAgICBtY2xrX2RpdiAgICAgIDw9IDEnYjA7CisgICAgICBlbmQgICAvLyB9CisgICAgICBlbHNlCisgICAgICBiZWdpbiAvLyB7CisgICAgICAgICBoaWdoX2NvdW50ICAgIDw9IGNsa19kaXZfcmF0aW9bV0Q6MV0gKyBjbGtfZGl2X3JhdGlvWzBdOworICAgICAgICAgbG93X2NvdW50ICAgICA8PSBjbGtfZGl2X3JhdGlvW1dEOjFdICsgMTsKKyAgICAgICAgIG1jbGtfZGl2ICAgICAgPD0gfm1jbGtfZGl2OworICAgICAgZW5kICAgLy8gfQorICAgZW5kICAgLy8gfQorZW5kICAgLy8gfQorCisKK2VuZG1vZHVsZSAKKwpkaWZmIC0tZ2l0IGEvdmVyaWxvZy9ydGwvbGliL3JlZ2lzdGVycy52IGIvdmVyaWxvZy9ydGwvbGliL3JlZ2lzdGVycy52Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjY2NWVmMGEKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9saWIvcmVnaXN0ZXJzLnYKQEAgLTAsMCArMSwyNzcgQEAKKy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFR1Ym8gODA1MSBjb3JlcyBjb21tb24gbGlicmFyeSBNb2R1bGUgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBUdXJibyA4MDUxIGNvcmVzIHByb2plY3QgICAgICAgICAgIC8vLy8KKy8vLy8gIGh0dHA6Ly93d3cub3BlbmNvcmVzLm9yZy9jb3Jlcy90dXJibzgwNTEvICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIERlc2NyaXB0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFR1cmJvIDgwNTEgZGVmaW5pdGlvbnMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFRvIERvOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgbm90aGluZyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIEF1dGhvcihzKTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAtIERpbmVzaCBBbm5heXlhLCBkaW5lc2hhQG9wZW5jb3Jlcy5vcmcgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8KKy8vLy8gIFJldmlzaW9uIDogTWFyIDIsIDIwMTEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vLy8gCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIENvcHlyaWdodCAoQykgMjAwMCBBdXRob3JzIGFuZCBPUEVOQ09SRVMuT1JHICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgbWF5IGJlIHVzZWQgYW5kIGRpc3RyaWJ1dGVkIHdpdGhvdXQgICAgICAgICAvLy8vCisvLy8vIHJlc3RyaWN0aW9uIHByb3ZpZGVkIHRoYXQgdGhpcyBjb3B5cmlnaHQgc3RhdGVtZW50IGlzIG5vdCAgICAvLy8vCisvLy8vIHJlbW92ZWQgZnJvbSB0aGUgZmlsZSBhbmQgdGhhdCBhbnkgZGVyaXZhdGl2ZSB3b3JrIGNvbnRhaW5zICAvLy8vCisvLy8vIHRoZSBvcmlnaW5hbCBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGUgYXNzb2NpYXRlZCBkaXNjbGFpbWVyLiAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgICAvLy8vCisvLy8vIGFuZC9vciBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyAvLy8vCisvLy8vIGVpdGhlciB2ZXJzaW9uIDIuMSBvZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgICAvLy8vCisvLy8vIGxhdGVyIHZlcnNpb24uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFRoaXMgc291cmNlIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSAgICAgICAvLy8vCisvLy8vIHVzZWZ1bCwgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgICAvLy8vCisvLy8vIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgICAgICAvLy8vCisvLy8vIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSAvLy8vCisvLy8vIGRldGFpbHMuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMZXNzZXIgR2VuZXJhbCAgICAvLy8vCisvLy8vIFB1YmxpYyBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBzb3VyY2U7IGlmIG5vdCwgZG93bmxvYWQgaXQgICAvLy8vCisvLy8vIGZyb20gaHR0cDovL3d3dy5vcGVuY29yZXMub3JnL2xncGwuc2h0bWwgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvLy8vCisvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqIG1vZHVsZTogYml0IHJlZ2lzdGVyCisKKyoqIGRlc2NyaXB0aW9uOiBpbmZlcnMgYSByZWdpc3RlciwgbWFrZSBpdCBtb2R1bGFyCisgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCittb2R1bGUgYml0X3JlZ2lzdGVyICgKKwkJIC8vaW5wdXRzCisJCSB3ZSwJCSAKKwkJIGNsaywKKwkJIHJlc2V0X24sCisJCSBkYXRhX2luLAorCQkgCisJCSAvL291dHB1dHMKKwkJIGRhdGFfb3V0CisJCSApOworCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gUmVzZXQgRGVmYXVsdCB2YWx1ZQorLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK3BhcmFtZXRlciAgUkVTRVRfREVGQVVMVCA9IDEnaDA7CisKKyAgaW5wdXQJIHdlOworICBpbnB1dAkgY2xrOworICBpbnB1dAkgcmVzZXRfbjsKKyAgaW5wdXQJIGRhdGFfaW47CisgIG91dHB1dCBkYXRhX291dDsKKyAgCisgIHJlZwkgZGF0YV9vdXQ7CisgIAorICAvL2luZmVyIHRoZSByZWdpc3RlcgorICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCisgICAgYmVnaW4KKyAgICAgIGlmICghcmVzZXRfbikKKwlkYXRhX291dCA8PSBSRVNFVF9ERUZBVUxUOworICAgICAgZWxzZSBpZiAod2UpCisJZGF0YV9vdXQgPD0gZGF0YV9pbjsKKyAgICBlbmQgLy8gYWx3YXlzIEAgKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKK2VuZG1vZHVsZSAvLyByZWdpc3RlcgorCisKKy8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKyoqIG1vZHVsZTogcmVxIHJlZ2lzdGVyLgorCisqKiBkZXNjcmlwdGlvbjogVGhpcyByZWdpc3RlciBpcyBzZXQgYnkgY3B1IHdyaXR0aW5nIDEgYW5kIHJlc2V0IGJ5CisgICAgICAgICAgICAgICAgaGFyd2FyZCByZXEgPSAxCisKKyBOb3RlOiBXaGVuIHRoZXJlIGlzIGEgY2xhc2ggYmV0d2VlbiBjcHUgYW5kIGhhcmR3YXJlLCBjcHUgaXMgZ2l2ZW4gaGlnaGVyCisgICAgICAgcHJpb3JpdHkKKworICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworbW9kdWxlIHJlcV9yZWdpc3RlciAoCisJCSAvL2lucHV0cworCQkgY2xrLAorCQkgcmVzZXRfbiwKKwkJIGNwdV93ZSwJCSAKKwkJIGNwdV9yZXEsCisJCSBod2FyZV9hY2ssCisJCSAKKwkJIC8vb3V0cHV0cworCQkgZGF0YV9vdXQKKwkJICk7CisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBSZXNldCBEZWZhdWx0IHZhbHVlCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorcGFyYW1ldGVyICBSRVNFVF9ERUZBVUxUID0gMSdoMDsKKworICBpbnB1dAkgY2xrICAgICAgOworICBpbnB1dAkgcmVzZXRfbiAgOworICBpbnB1dAkgY3B1X3dlICAgOyAvLyBjcHUgd3JpdGUgZW5hYmxlCisgIGlucHV0CSBjcHVfcmVxICA7IC8vIENQVSBSZXF1ZXN0CisgIGlucHV0CSBod2FyZV9hY2s7IC8vIEhhcmR3YXJlIEFjaworICBvdXRwdXQgZGF0YV9vdXQgOworICAKKyAgcmVnCSBkYXRhX291dDsKKyAgCisgIC8vaW5mZXIgdGhlIHJlZ2lzdGVyCisgIGFsd2F5cyBAKHBvc2VkZ2UgY2xrIG9yIG5lZ2VkZ2UgcmVzZXRfbikKKyAgICBiZWdpbgorICAgICAgaWYgKCFyZXNldF9uKQorCWRhdGFfb3V0IDw9IFJFU0VUX0RFRkFVTFQ7CisgICAgICBlbHNlIGlmIChjcHVfd2UgJiBjcHVfcmVxKSAvLyBTZXQgb24gQ1BVIFJlcXVlc3QKKwkgZGF0YV9vdXQgPD0gMSdiMTsKKyAgICAgIGVsc2UgaWYgKGh3YXJlX2FjaykgIC8vIFJlc2V0IHRoZSBmbGFnIG9uIEhhcmR3YXJlIGFjaworCSBkYXRhX291dCA8PSAxJ2IwOworICAgIGVuZCAvLyBhbHdheXMgQCAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQorZW5kbW9kdWxlIC8vIHJlZ2lzdGVyCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiogbW9kdWxlOiByZXEgcmVnaXN0ZXIuCisKKyoqIGRlc2NyaXB0aW9uOiBUaGlzIHJlZ2lzdGVyIGlzIGNsZWFyZWQgYnkgY3B1IHdyaXR0aW5nIDEgYW5kIHNldCBieQorICAgICAgICAgICAgICAgIGhhcndhcmQgcmVxID0gMQorCisgTm90ZTogV2hlbiB0aGVyZSBpcyBhIGNsYXNoIGJldHdlZW4gY3B1IGFuZCBoYXJkd2FyZSwgCisgICAgICAgaGFyZHdhcmUgaXMgZ2l2ZW4gaGlnaGVyIHByaW9yaXR5CisKKyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KK21vZHVsZSBzdGF0X3JlZ2lzdGVyICgKKwkJIC8vaW5wdXRzCisJCSBjbGssCisJCSByZXNldF9uLAorCQkgY3B1X3dlLAkJIAorCQkgY3B1X2FjaywKKwkJIGh3YXJlX3JlcSwKKwkJIAorCQkgLy9vdXRwdXRzCisJCSBkYXRhX291dAorCQkgKTsKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFJlc2V0IERlZmF1bHQgdmFsdWUKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCitwYXJhbWV0ZXIgIFJFU0VUX0RFRkFVTFQgPSAxJ2gwOworCisgIGlucHV0CSBjbGsgICAgICA7CisgIGlucHV0CSByZXNldF9uICA7CisgIGlucHV0CSBjcHVfd2UgICA7IC8vIGNwdSB3cml0ZSBlbmFibGUKKyAgaW5wdXQJIGNwdV9hY2sgIDsgLy8gQ1BVIEFjaworICBpbnB1dAkgaHdhcmVfcmVxOyAvLyBIYXJkd2FyZSBSZXEKKyAgb3V0cHV0IGRhdGFfb3V0IDsKKyAgCisgIHJlZwkgZGF0YV9vdXQ7CisgIAorICAvL2luZmVyIHRoZSByZWdpc3RlcgorICBhbHdheXMgQChwb3NlZGdlIGNsayBvciBuZWdlZGdlIHJlc2V0X24pCisgICAgYmVnaW4KKyAgICAgIGlmICghcmVzZXRfbikKKwlkYXRhX291dCA8PSBSRVNFVF9ERUZBVUxUOworICAgICAgZWxzZSBpZiAoaHdhcmVfcmVxKSAgLy8gU2V0IHRoZSBmbGFnIG9uIEhhcmR3YXJlIFJlcQorCSBkYXRhX291dCA8PSAxJ2IxOworICAgICAgZWxzZSBpZiAoY3B1X3dlICYgY3B1X2FjaykgLy8gQ2xlYXIgb24gQ1BVIEFjaworCSBkYXRhX291dCA8PSAxJ2IwOworICAgIGVuZCAvLyBhbHdheXMgQCAocG9zZWRnZSBjbGsgb3IgbmVnZWRnZSByZXNldF9uKQorZW5kbW9kdWxlIC8vIHJlZ2lzdGVyCisKKworCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiogY29weXJpZ2h0IG1lc3NhZ2UgaGVyZS4KKworKiogbW9kdWxlOiBnZW5lcmljIHJlZ2lzdGVyCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworbW9kdWxlICBnZW5lcmljX3JlZ2lzdGVyCSgKKwkgICAgICAvL0xpc3Qgb2YgSW5wdXRzCisJICAgICAgd2UsCQkgCisJICAgICAgZGF0YV9pbiwKKwkgICAgICByZXNldF9uLAorCSAgICAgIGNsaywKKwkgICAgICAKKwkgICAgICAvL0xpc3Qgb2YgT3V0cworCSAgICAgIGRhdGFfb3V0CisJICAgICAgKTsKKworICBwYXJhbWV0ZXIgICBXRCAgICAgICAgICAgICAgID0gMTsgIAorICBwYXJhbWV0ZXIgICBSRVNFVF9ERUZBVUxUICAgID0gMDsgIAorICBpbnB1dCBbV0QtMTowXSAgICAgd2U7CQorICBpbnB1dCBbV0QtMTowXSAgICAgZGF0YV9pbjsJCisgIGlucHV0ICAgICAgICAgICAgICByZXNldF9uOworICBpbnB1dAkJICAgICBjbGs7CisgIG91dHB1dCBbV0QtMTowXSAgICBkYXRhX291dDsKKworCitnZW5lcmF0ZQorICBnZW52YXIgaTsKKyAgZm9yIChpID0gMDsgaSA8IFdEOyBpID0gaSArIDEpIGJlZ2luIDogZ2VuX2JpdF9yZWcKKyAgICBiaXRfcmVnaXN0ZXIgIyhSRVNFVF9ERUZBVUxUW2ldKSB1X2JpdF9yZWcgKCAgIAorICAgICAgICAgICAgICAgIC53ZSAgICAgICAgICh3ZVtpXSksCisgICAgICAgICAgICAgICAgLmNsayAgICAgICAgKGNsayksCisgICAgICAgICAgICAgICAgLnJlc2V0X24gICAgKHJlc2V0X24pLAorICAgICAgICAgICAgICAgIC5kYXRhX2luICAgIChkYXRhX2luW2ldKSwKKyAgICAgICAgICAgICAgICAuZGF0YV9vdXQgICAoZGF0YV9vdXRbaV0pCisgICAgICAgICAgICApOworICBlbmQKK2VuZGdlbmVyYXRlCisKKworZW5kbW9kdWxlCisKKworLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKiogY29weXJpZ2h0IG1lc3NhZ2UgaGVyZS4KKworKiogbW9kdWxlOiBnZW5lcmljIHJlZ2lzdGVyCisKKyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworbW9kdWxlICBnZW5lcmljX2ludHJfc3RhdF9yZWcJKAorCQkgLy9pbnB1dHMKKwkJIGNsaywKKwkJIHJlc2V0X24sCisJCSByZWdfd2UsCQkgCisJCSByZWdfZGluLAorCQkgaHdhcmVfcmVxLAorCQkgCisJCSAvL291dHB1dHMKKwkJIGRhdGFfb3V0CisJICAgICAgKTsKKworICBwYXJhbWV0ZXIgICBXRCAgICAgICAgICAgICAgID0gMTsgIAorICBwYXJhbWV0ZXIgICBSRVNFVF9ERUZBVUxUICAgID0gMDsgIAorICBpbnB1dCBbV0QtMTowXSAgICAgcmVnX3dlOwkKKyAgaW5wdXQgW1dELTE6MF0gICAgIHJlZ19kaW47CQorICBpbnB1dCBbV0QtMTowXSAgICAgaHdhcmVfcmVxOwkKKyAgaW5wdXQgICAgICAgICAgICAgIHJlc2V0X247CisgIGlucHV0CQkgICAgIGNsazsKKyAgb3V0cHV0IFtXRC0xOjBdICAgIGRhdGFfb3V0OworCisKK2dlbmVyYXRlCisgIGdlbnZhciBpOworICBmb3IgKGkgPSAwOyBpIDwgV0Q7IGkgPSBpICsgMSkgYmVnaW4gOiBnZW5fYml0X3JlZworICAgIHN0YXRfcmVnaXN0ZXIgIyhSRVNFVF9ERUZBVUxUW2ldKSB1X2JpdF9yZWcgKAorCQkgLy9pbnB1dHMKKwkJIC4gY2xrICAgICAgICAoY2xrICAgICAgICAgICApLAorCQkgLiByZXNldF9uICAgIChyZXNldF9uICAgICAgICksCisJCSAuIGNwdV93ZSAgICAgKHJlZ193ZVtpXSAgICAgKSwJCSAKKwkJIC4gY3B1X2FjayAgICAocmVnX2RpbltpXSAgICApLAorCQkgLiBod2FyZV9yZXEgIChod2FyZV9yZXFbaV0gICksCisJCSAKKwkJIC8vb3V0cHV0cworCQkgLiBkYXRhX291dCAgKGRhdGFfb3V0W2ldICAgICkKKwkJICk7CisKKyAgZW5kCitlbmRnZW5lcmF0ZQorCisKK2VuZG1vZHVsZQpkaWZmIC0tZ2l0IGEvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9MSUNFTlNFIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9MSUNFTlNFCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4ZmU1MjIKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL0xJQ0VOU0UKQEAgLTAsMCArMSwyNCBAQAorQ29weXJpZ2h0IChjKSAyMDEyLTIwMTUsIFRoZSBSZWdlbnRzIG9mIHRoZSBVbml2ZXJzaXR5IG9mIENhbGlmb3JuaWEgKFJlZ2VudHMpLgorQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKworUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cittb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMgYXJlIG1ldDoKKzEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKzMuIE5laXRoZXIgdGhlIG5hbWUgb2YgdGhlIFJlZ2VudHMgbm9yIHRoZQorICAgbmFtZXMgb2YgaXRzIGNvbnRyaWJ1dG9ycyBtYXkgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMKKyAgIGRlcml2ZWQgZnJvbSB0aGlzIHNvZnR3YXJlIHdpdGhvdXQgc3BlY2lmaWMgcHJpb3Igd3JpdHRlbiBwZXJtaXNzaW9uLgorCitJTiBOTyBFVkVOVCBTSEFMTCBSRUdFTlRTIEJFIExJQUJMRSBUTyBBTlkgUEFSVFkgRk9SIERJUkVDVCwgSU5ESVJFQ1QsCitTUEVDSUFMLCBJTkNJREVOVEFMLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMsIElOQ0xVRElORyBMT1NUIFBST0ZJVFMsIEFSSVNJTkcKK09VVCBPRiBUSEUgVVNFIE9GIFRISVMgU09GVFdBUkUgQU5EIElUUyBET0NVTUVOVEFUSU9OLCBFVkVOIElGIFJFR0VOVFMgSEFTCitCRUVOIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorCitSRUdFTlRTIFNQRUNJRklDQUxMWSBESVNDTEFJTVMgQU5ZIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorVEhFIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorUFVSUE9TRS4gVEhFIFNPRlRXQVJFIEFORCBBQ0NPTVBBTllJTkcgRE9DVU1FTlRBVElPTiwgSUYgQU5ZLCBQUk9WSURFRAorSEVSRVVOREVSIElTIFBST1ZJREVEICJBUyBJUyIuIFJFR0VOVFMgSEFTIE5PIE9CTElHQVRJT04gVE8gUFJPVklERQorTUFJTlRFTkFOQ0UsIFNVUFBPUlQsIFVQREFURVMsIEVOSEFOQ0VNRU5UUywgT1IgTU9ESUZJQ0FUSU9OUy4KZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vY29tbW9uLm1rIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9jb21tb24ubWsKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY3ODY5MgotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vY29tbW9uLm1rCkBAIC0wLDAgKzEsNDQgQEAKK0FERF9BU01fTUFDUk8gPz0gLURfX0FTU0VNQkxZX189MQorCitGTEFHUyA9IC1PMiAtZnVucm9sbC1sb29wcyAtZnBlZWwtbG9vcHMgLWZnY3NlLXNtIC1mZ2NzZS1sYXMgJChBRERfRkxBR1MpCitGTEFHU19TVFIgPSAiJChGTEFHUykiCisKK0NGTEFHU19DT01NT04gPSAtc3RhdGljIC1zdGQ9Z251OTkgLWZuby1jb21tb24gLWZuby1idWlsdGluLXByaW50ZiAtRFRDTT0kKFRDTSkKK0NGTEFHU19BUkNIID0gLVdhLC1tYXJjaD1ydjMyJChBUkNIKSAtbWFyY2g9cnYzMiQoQVJDSCkgLW1hYmk9JChBQkkpCisKK0NGTEFHUyA6PSAkKEZMQUdTKSAkKEVYVF9DRkxBR1MpIFwKKyQoQ0ZMQUdTX0NPTU1PTikgXAorJChDRkxBR1NfQVJDSCkgXAorLURGTEFHU19TVFI9XCIkKEZMQUdTX1NUUilcIiBcCiskKEFERF9DRkxBR1MpCisKK0xERkxBR1MgICA/PSAtbm9zdGFydGZpbGVzIC1ub3N0ZGxpYiAtbGMgLWxnY2MgLW1hcmNoPXJ2MzIkKEFSQ0gpIC1tYWJpPSQoQUJJKQorCitpZmVxICgsJChmaW5kc3RyaW5nIDAsJChUQ00pKSkKK2xkX3NjcmlwdCA/PSAkKGluY19kaXIpL2xpbmtfdGNtLmxkCithc21fc3JjICAgPz0gY3J0X3RjbS5TCitlbHNlCitsZF9zY3JpcHQgPz0gJChpbmNfZGlyKS9saW5rLmxkCithc21fc3JjICAgPz0gY3J0LlMKK2VuZGlmCisKK1ZQQVRIICs9ICQoc3JjX2RpcikgJChpbmNfZGlyKSAkKEFERF9WUEFUSCkKK2luY3MgICs9IC1JJChzcmNfZGlyKSAtSSQoaW5jX2RpcikgJChBRERfaW5jcykKKworY19vYmpzICAgOj0gJChhZGRwcmVmaXggJChibGRfZGlyKS8sJChwYXRzdWJzdCAlLmMsICUubywgJChjX3NyYykpKQorYXNtX29ianMgOj0gJChhZGRwcmVmaXggJChibGRfZGlyKS8sJChwYXRzdWJzdCAlLlMsICUubywgJChhc21fc3JjKSkpCisKKyQoYmxkX2RpcikvJS5vOiAlLlMKKwkkKFJJU0NWX0dDQykgJChDRkxBR1MpICQoQUREX0FTTV9NQUNSTykgLWMgJChpbmNzKSAkPCAtbyAkQAorCiskKGJsZF9kaXIpLyUubzogJS5jCisJJChSSVNDVl9HQ0MpICQoQ0ZMQUdTKSAtYyAkKGluY3MpICQ8IC1vICRACisKKyQoYmxkX2RpcikvJS5lbGY6ICQobGRfc2NyaXB0KSAkKGNfb2JqcykgJChhc21fb2JqcykKKwkkKFJJU0NWX0dDQykgLW8gJEAgLVQgJF4gJChMREZMQUdTKQorCiskKGJsZF9kaXIpLyUuaGV4OiAkKGJsZF9kaXIpLyUuZWxmCisJJChSSVNDVl9PQkpDT1BZKSAkXiAkQAorCiskKGJsZF9kaXIpLyUuZHVtcDogJChibGRfZGlyKS8lLmVsZgorCSQoUklTQ1ZfT0JKRFVNUCkgJF4gPiAkQApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vY3J0LlMgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2NydC5TCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4ODdhMjkKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2NydC5TCkBAIC0wLDAgKzEsMTQ2IEBACisvLy8gQ29weXJpZ2h0IGJ5IFN5bnRhY29yZSBMTEMgwqkgMjAxNiwgMjAxNy4gU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMKKy8vLyBAZmlsZSAgICAgICA8Y3J0LlM+CisvLy8KKworI2luY2x1ZGUgInJpc2N2X2Nzcl9lbmNvZGluZy5oIgorI2luY2x1ZGUgInNjX3Rlc3QuaCIKKworIyBkZWZpbmUgTFJFRyBsdworIyBkZWZpbmUgU1JFRyBzdworIyBkZWZpbmUgUkVHQllURVMgNAorCisgICAgLmdsb2JsIF9zdGFydAorICAgIC5nbG9ibCBtYWluCisgICAgLmdsb2JsIHRyYXBfZW50cnkKKyAgICAuZ2xvYmwgaGFuZGxlX3RyYXAKKyAgICAuZ2xvYmwgc2NfZXhpdAorICAgIC53ZWFrIHRyYXBfZW50cnksIGhhbmRsZV90cmFwCisKKyAgICAudGV4dAorICAgIC5vcmcgKDY0KjMpCisgICAgLmJhbGlnbiA2NAorbWFjaGluZV90cmFwX2VudHJ5OgorICAgIGogdHJhcF9lbnRyeQorCisgICAgLmJhbGlnbiA2NAorCitfc3RhcnQ6CisjaWZuZGVmIF9fUlZFX0VYVAorICAgIHplcm9faW50X3JlZ3MgMSwgMzEKKyNlbHNlCisgICAgemVyb19pbnRfcmVncyAxLCAxNQorI2VuZGlmCisgICAgIyBHbG9iYWwgcG9pbnRlciBpbml0CisgICAgLm9wdGlvbiBwdXNoCisgICAgLm9wdGlvbiBub3JlbGF4CisgICAgbGEgICAgZ3AsIF9fZ2xvYmFsX3BvaW50ZXIkCisgICAgLm9wdGlvbiBwb3AKKyAgICAjIGNsZWFyIGJzcworICAgIGxhICAgICAgYTEsIF9fQlNTX1NUQVJUX18KKyAgICBsYSAgICAgIGEyLCBfX0JTU19FTkRfXworICAgIGogICAgICAgNGYKKzM6ICBzdyAgICAgIHplcm8sIDAoYTEpCisgICAgYWRkICAgICBhMSwgYTEsIDQKKzQ6ICBibmUgICAgIGExLCBhMiwgM2IKKyAgICBsYSAgICAgIHNwLCBfX0NfU1RBQ0tfVE9QX18KKworICAgIC8vIFRpbWVyIGluaXQKKyAgICBsaSAgICAgIHQwLCBtdGltZV9jdHJsCisgICAgbGkgICAgICB0MSwgKDEgPDwgU0NSMV9NVElNRV9DVFJMX0VOKSAgIC8vIGVuYWJsZSwgdXNlIGludGVybmFsIGNsb2NrCisgICAgc3cgICAgICB0MSwgKHQwKQorICAgIGxpICAgICAgdDAsIG10aW1lX2RpdgorICAgIGxpICAgICAgdDEsICgxMDAtMSkgICAgICAgICAgICAgICAgICAgICAvLyBkaXZpZGUgYnkgMTAwCisgICAgc3cgICAgICB0MSwgKHQwKQorICAgIGxpICAgICAgdDAsIG10aW1lY21wCisgICAgbGkgICAgICB0MSwgLTEKKyAgICBzdyAgICAgIHQxLCAodDApICAgICAgICAgICAgICAgICAgICAgICAgLy8gbWF4IHZhbHVlIGZvciBtdGltZWNtcAorICAgIHN3ICAgICAgdDEsIDQodDApCisKKyAgICBsaSAgICAgIGEwLCAwCisgICAgbGkgICAgICBhMSwgMAorICAgIGphbCAgICAgbWFpbgorICAgIGogICAgICAgc2NfZXhpdAorCit0cmFwX2VudHJ5OgorICAgIGFkZGkgc3AsIHNwLCAtMjcyCisKKyAgICBTUkVHIHgxLCAxKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDIsIDIqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MywgMypSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHg0LCA0KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDUsIDUqUkVHQllURVMoc3ApCisgICAgU1JFRyB4NiwgNipSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHg3LCA3KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDgsIDgqUkVHQllURVMoc3ApCisgICAgU1JFRyB4OSwgOSpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgxMCwgMTAqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MTEsIDExKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDEyLCAxMipSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgxMywgMTMqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MTQsIDE0KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDE1LCAxNSpSRUdCWVRFUyhzcCkKKyNpZm5kZWYgX19SVkVfRVhUCisgICAgU1JFRyB4MTYsIDE2KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDE3LCAxNypSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgxOCwgMTgqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MTksIDE5KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDIwLCAyMCpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyMSwgMjEqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MjIsIDIyKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDIzLCAyMypSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyNCwgMjQqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MjUsIDI1KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDI2LCAyNipSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyNywgMjcqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MjgsIDI4KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDI5LCAyOSpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgzMCwgMzAqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MzEsIDMxKlJFR0JZVEVTKHNwKQorI2VuZGlmIC8vIF9fUlZFX0VYVAorCisgICAgY3NyciBhMCwgbWNhdXNlCisgICAgY3NyciBhMSwgbWVwYworICAgIG12IGEyLCBzcAorICAgIGphbCBoYW5kbGVfdHJhcAorCisgICAgTFJFRyB4MSwgMSpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyLCAyKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDMsIDMqUkVHQllURVMoc3ApCisgICAgTFJFRyB4NCwgNCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHg1LCA1KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDYsIDYqUkVHQllURVMoc3ApCisgICAgTFJFRyB4NywgNypSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHg4LCA4KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDksIDkqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MTAsIDEwKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDExLCAxMSpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgxMiwgMTIqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MTMsIDEzKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDE0LCAxNCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgxNSwgMTUqUkVHQllURVMoc3ApCisjaWZuZGVmIF9fUlZFX0VYVAorICAgIExSRUcgeDE2LCAxNipSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgxNywgMTcqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MTgsIDE4KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDE5LCAxOSpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyMCwgMjAqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MjEsIDIxKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDIyLCAyMipSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyMywgMjMqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MjQsIDI0KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDI1LCAyNSpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyNiwgMjYqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MjcsIDI3KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDI4LCAyOCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyOSwgMjkqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MzAsIDMwKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDMxLCAzMSpSRUdCWVRFUyhzcCkKKyNlbmRpZiAvLyBfX1JWRV9FWFQKKworICAgIGFkZGkgc3AsIHNwLCAyNzIKKyAgICBtcmV0CisKK2hhbmRsZV90cmFwOgorICAgIGogU0lNX0VYSVQKKworLy8gZW5kIG9mIGNydC5TClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9jcnRfdGNtLlMgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2NydF90Y20uUwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDgzNDM4Ci0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9jcnRfdGNtLlMKQEAgLTAsMCArMSwxNTcgQEAKKy8vLyBDb3B5cmlnaHQgYnkgU3ludGFjb3JlIExMQyDCqSAyMDE2LCAyMDE3LiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscworLy8vIEBmaWxlICAgICAgIDxjcnRfdGNtLlM+CisvLy8KKworI2luY2x1ZGUgInJpc2N2X2Nzcl9lbmNvZGluZy5oIgorI2luY2x1ZGUgInJlbG9jLmgiCisjaW5jbHVkZSAic2NfdGVzdC5oIgorCisjIGRlZmluZSBMUkVHIGx3CisjIGRlZmluZSBTUkVHIHN3CisjIGRlZmluZSBSRUdCWVRFUyA0CisKKyAgICAuZ2xvYmwgX3N0YXJ0CisgICAgLmdsb2JsIG1haW4KKyAgICAuZ2xvYmwgdHJhcF9lbnRyeQorICAgIC5nbG9ibCBoYW5kbGVfdHJhcAorICAgIC5nbG9ibCBzY19leGl0CisgICAgLndlYWsgdHJhcF9lbnRyeSwgaGFuZGxlX3RyYXAKKworICAgIC5zZWN0aW9uIC50ZXh0LmluaXQKKyAgICAub3JnICg2NCozKQorICAgIC5hbGlnbiA2OworbWFjaGluZV90cmFwX2VudHJ5OgorICAgIGogdHJhcF9lbnRyeQorCisgICAgLmFsaWduIDYKK19zdGFydDoKKyNpZm5kZWYgX19SVkVfRVhUCisgICAgemVyb19pbnRfcmVncyAxLCAzMQorI2Vsc2UKKyAgICB6ZXJvX2ludF9yZWdzIDEsIDE1CisjZW5kaWYKKyAgICAjIEdsb2JhbCBwb2ludGVyIGluaXQKKyAgICAub3B0aW9uIHB1c2gKKyAgICAub3B0aW9uIG5vcmVsYXgKKyAgICBsYSAgICBncCwgX19nbG9iYWxfcG9pbnRlciQKKyAgICAub3B0aW9uIHBvcAorCisgICAgUkVMT0NfUFJPQzsKKworICAgIC8vIGluaXQgdGRhdGEKKyAgICBtdiAgICBhMSwgdHAKKyAgICBsYSAgICBhMiwgX3RkYXRhX2VuZAorICAgIGogICAgIDZmCis1OiAgbHcgICAgYTMsIDAoYTApCisgICAgc3cgICAgYTMsIDAoYTEpCisgICAgYWRkICAgYTAsIGEwLCA0CisgICAgYWRkICAgYTEsIGExLCA0Cis2OiAgYm5lICAgYTAsIGEyLCA1YgorICAgIC8vIGNsZWFyIHRic3MKKyAgICBqICAgICA4ZgorNzogIHN3ICAgIHplcm8sIDAoYTEpCisgICAgYWRkICAgYTEsIGExLCA0Cis4OiAgYm5lICAgYTEsIGE0LCA3YgorCisgICAgLy8gVGltZXIgaW5pdAorICAgIGxpICAgIHQwLCBtdGltZV9jdHJsCisgICAgbGkgICAgdDEsICgxIDw8IFNDUjFfTVRJTUVfQ1RSTF9FTikgICAvLyBlbmFibGUsIHVzZSBpbnRlcm5hbCBjbG9jaworICAgIHN3ICAgIHQxLCAodDApCisgICAgbGkgICAgdDAsIG10aW1lX2RpdgorICAgIGxpICAgIHQxLCAoMTAwLTEpICAgICAgICAgICAgICAgICAgICAgLy8gZGl2aWRlIGJ5IDEwMAorICAgIHN3ICAgIHQxLCAodDApCisgICAgbGkgICAgdDAsIG10aW1lY21wCisgICAgbGkgICAgdDEsIC0xCisgICAgc3cgICAgdDEsICh0MCkgICAgICAgICAgICAgICAgICAgICAgICAvLyBtYXggdmFsdWUgZm9yIG10aW1lY21wCisgICAgc3cgICAgdDEsIDQodDApCisKKyAgICBsaSAgICBhMCwgMAorICAgIGxpICAgIGExLCAwCis5OiAgYXVpcGMgdDAsICVwY3JlbF9oaShtYWluKQorICAgIGphbHIgIHQwLCAlcGNyZWxfbG8oOWIpCisgICAgbGEgICAgdDAsIHNjX2V4aXQKKyAgICAvL2ogICAgIHNjX2V4aXQKKwordHJhcF9lbnRyeToKKyAgICBhZGRpIHNwLCBzcCwgLTI3MgorCisgICAgU1JFRyB4MSwgMSpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyLCAyKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDMsIDMqUkVHQllURVMoc3ApCisgICAgU1JFRyB4NCwgNCpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHg1LCA1KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDYsIDYqUkVHQllURVMoc3ApCisgICAgU1JFRyB4NywgNypSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHg4LCA4KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDksIDkqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MTAsIDEwKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDExLCAxMSpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgxMiwgMTIqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MTMsIDEzKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDE0LCAxNCpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgxNSwgMTUqUkVHQllURVMoc3ApCisjaWZuZGVmIF9fUlZFX0VYVAorICAgIFNSRUcgeDE2LCAxNipSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgxNywgMTcqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MTgsIDE4KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDE5LCAxOSpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyMCwgMjAqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MjEsIDIxKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDIyLCAyMipSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyMywgMjMqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MjQsIDI0KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDI1LCAyNSpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyNiwgMjYqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MjcsIDI3KlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDI4LCAyOCpSRUdCWVRFUyhzcCkKKyAgICBTUkVHIHgyOSwgMjkqUkVHQllURVMoc3ApCisgICAgU1JFRyB4MzAsIDMwKlJFR0JZVEVTKHNwKQorICAgIFNSRUcgeDMxLCAzMSpSRUdCWVRFUyhzcCkKKyNlbmRpZiAvLyBfX1JWRV9FWFQKKworICAgIGNzcnIgYTAsIG1jYXVzZQorICAgIGNzcnIgYTEsIG1lcGMKKyAgICBtdiBhMiwgc3AKKyAgICBqYWwgaGFuZGxlX3RyYXAKKworICAgIExSRUcgeDEsIDEqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MiwgMipSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgzLCAzKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDQsIDQqUkVHQllURVMoc3ApCisgICAgTFJFRyB4NSwgNSpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHg2LCA2KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDcsIDcqUkVHQllURVMoc3ApCisgICAgTFJFRyB4OCwgOCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHg5LCA5KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDEwLCAxMCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgxMSwgMTEqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MTIsIDEyKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDEzLCAxMypSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgxNCwgMTQqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MTUsIDE1KlJFR0JZVEVTKHNwKQorI2lmbmRlZiBfX1JWRV9FWFQKKyAgICBMUkVHIHgxNiwgMTYqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MTcsIDE3KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDE4LCAxOCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgxOSwgMTkqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MjAsIDIwKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDIxLCAyMSpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyMiwgMjIqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MjMsIDIzKlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDI0LCAyNCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyNSwgMjUqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MjYsIDI2KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDI3LCAyNypSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgyOCwgMjgqUkVHQllURVMoc3ApCisgICAgTFJFRyB4MjksIDI5KlJFR0JZVEVTKHNwKQorICAgIExSRUcgeDMwLCAzMCpSRUdCWVRFUyhzcCkKKyAgICBMUkVHIHgzMSwgMzEqUkVHQllURVMoc3ApCisjZW5kaWYgLy8gX19SVkVfRVhUCisKKyAgICBhZGRpIHNwLCBzcCwgMjcyCisgICAgbXJldAorCitoYW5kbGVfdHJhcDoKKyAgICBqIFNJTV9FWElUCisKKy8vIGVuZCBvZiBjcnQuUwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vY3NyLmggYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2Nzci5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyYzYwZmMKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2Nzci5oCkBAIC0wLDAgKzEsMTEzIEBACisvLy8gQ29weXJpZ2h0IGJ5IFN5bnRhY29yZSBMTEMgwqkgMjAxNiwgMjAxNy4gU2VlIExJQ0VOU0UgZm9yIGRldGFpbHMKKy8vLyBAZmlsZSAgICAgICA8Y3NyLmg+CisvLy8gQXJjaGl0ZWN0dXJlIHNwZWNpZmljIENTUidzIGRlZnMgYW5kIGlubGluZXMKKworI2lmbmRlZiBTQ1JfQ1NSX0gKKyNkZWZpbmUgU0NSX0NTUl9ICisKKyNpbmNsdWRlIDxzdGRpbnQuaD4KKyNpbmNsdWRlIDxzdGRib29sLmg+CisKKyNkZWZpbmUgX194c3RyaW5naWZ5KHMpIF9fc3RyaW5naWZ5KHMpCisjZGVmaW5lIF9fc3RyaW5naWZ5KHMpICNzCisKKyNpZmRlZiByZWFkX2NzcgorI3VuZGVmIHJlYWRfY3NyCisjZW5kaWYKKworI2lmZGVmIHdyaXRlX2NzcgorI3VuZGVmIHdyaXRlX2NzcgorI2VuZGlmCisKKyNpZmRlZiBzd2FwX2NzcgorI3VuZGVmIHN3YXBfY3NyCisjZW5kaWYKKworI2lmZGVmIHNldF9jc3IKKyN1bmRlZiBzZXRfY3NyCisjZW5kaWYKKworI2lmZGVmIGNsZWFyX2NzcgorI3VuZGVmIGNsZWFyX2NzcgorI2VuZGlmCisKKyNpZmRlZiByZHRpbWUKKyN1bmRlZiByZHRpbWUKKyNlbmRpZgorCisjaWZkZWYgcmRjeWNsZQorI3VuZGVmIHJkY3ljbGUKKyNlbmRpZgorCisjaWZkZWYgcmRpbnN0cmV0CisjdW5kZWYgcmRpbnN0cmV0CisjZW5kaWYKKworI2RlZmluZSByZWFkX2NzcihyZWcpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgdW5zaWduZWQgbG9uZyBfX3RtcDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBhc20gdm9sYXRpbGUgKCJjc3JyICUwLCAiIF9feHN0cmluZ2lmeShyZWcpIDogIj1yIihfX3RtcCkpOyBcCisgICAgICAgIF9fdG1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9KQorCisjZGVmaW5lIHdyaXRlX2NzcihyZWcsIHZhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcCh2YWwpICYmICh2YWwpID09IDApICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc20gdm9sYXRpbGUgKCJjc3J3ICIgX194c3RyaW5naWZ5KHJlZykgIiwgemVybyIgOjopOyAgICAgICBcCisgICAgICAgIGVsc2UgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wKHZhbCkgJiYgKHVuc2lnbmVkIGxvbmcpKHZhbCkgPCAzMikgXAorICAgICAgICAgICAgYXNtIHZvbGF0aWxlICgiY3NydyAiIF9feHN0cmluZ2lmeShyZWcpICIsICUwIiA6OiAiaSIodmFsKSk7IFwKKyAgICAgICAgZWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgIGFzbSB2b2xhdGlsZSAoImNzcncgIiBfX3hzdHJpbmdpZnkocmVnKSAiLCAlMCIgOjogInIiKHZhbCkpOyBcCisgICAgfSB3aGlsZSAoMCkKKworI2RlZmluZSBzd2FwX2NzcihyZWcsIHZhbCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICh7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICB1bnNpZ25lZCBsb25nIF9fdG1wOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AodmFsKSAmJiAodmFsKSA9PSAwKSAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNtIHZvbGF0aWxlICgiY3NycncgJTAsICIgX194c3RyaW5naWZ5KHJlZykgIiwgemVybyIgOiAgIj1yIihfX3RtcCkgOik7IFwKKyAgICAgICAgZWxzZSBpZiAoX19idWlsdGluX2NvbnN0YW50X3AodmFsKSAmJiAodW5zaWduZWQgbG9uZykodmFsKSA8IDMyKSBcCisgICAgICAgICAgICBhc20gdm9sYXRpbGUgKCJjc3JydyAlMCwgIiBfX3hzdHJpbmdpZnkocmVnKSAiLCAlMSIgOiAiPXIiKF9fdG1wKSA6ICJpIih2YWwpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNtIHZvbGF0aWxlICgiY3NycncgJTAsICIgX194c3RyaW5naWZ5KHJlZykgIiwgJTEiIDogIj1yIihfX3RtcCkgOiAiciIodmFsKSk7IFwKKyAgICAgICAgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9KQorCisjZGVmaW5lIHNldF9jc3IocmVnLCBiaXQpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHVuc2lnbmVkIGxvbmcgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChiaXQpICYmIChiaXQpIDwgMzIpICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc20gdm9sYXRpbGUgKCJjc3JycyAlMCwgIiBfX3hzdHJpbmdpZnkocmVnKSAiLCAlMSIgOiAiPXIiKF9fdG1wKSA6ICJpIihiaXQpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNtIHZvbGF0aWxlICgiY3NycnMgJTAsICIgX194c3RyaW5naWZ5KHJlZykgIiwgJTEiIDogIj1yIihfX3RtcCkgOiAiciIoYml0KSk7IFwKKyAgICAgICAgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9KQorCisjZGVmaW5lIGNsZWFyX2NzcihyZWcsIGJpdCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgKHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIHVuc2lnbmVkIGxvbmcgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGlmIChfX2J1aWx0aW5fY29uc3RhbnRfcChiaXQpICYmIChiaXQpIDwgMzIpICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICBhc20gdm9sYXRpbGUgKCJjc3JyYyAlMCwgIiBfX3hzdHJpbmdpZnkocmVnKSAiLCAlMSIgOiAiPXIiKF9fdG1wKSA6ICJpIihiaXQpKTsgXAorICAgICAgICBlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgYXNtIHZvbGF0aWxlICgiY3NycmMgJTAsICIgX194c3RyaW5naWZ5KHJlZykgIiwgJTEiIDogIj1yIihfX3RtcCkgOiAiciIoYml0KSk7IFwKKyAgICAgICAgX190bXA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB9KQorCisjZGVmaW5lIHJkdGltZSgpIHJlYWRfY3NyKHRpbWUpCisjZGVmaW5lIHJkY3ljbGUoKSByZWFkX2NzcihjeWNsZSkKKyNkZWZpbmUgcmRpbnN0cmV0KCkgcmVhZF9jc3IoaW5zdHJldCkKKworc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIF9fYXR0cmlidXRlX18oKGNvbnN0KSkgY3B1aWQoKQoreworICB1bnNpZ25lZCBsb25nIHJlczsKKyAgYXNtICgiY3NyciAlMCwgbWNwdWlkIiA6ICI9ciIocmVzKSk7CisgIHJldHVybiByZXM7Cit9CisKK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZyBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGltcGlkKCkKK3sKKyAgdW5zaWduZWQgbG9uZyByZXM7CisgIGFzbSAoImNzcnIgJTAsIG1pbXBpZCIgOiAiPXIiKHJlcykpOworICByZXR1cm4gcmVzOworfQorCisjZW5kaWYgLy8gU0NSX0NTUl9ICmRpZmYgLS1naXQgYS92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2xpbmsubGQgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2xpbmsubGQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDUwYzU4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vbGluay5sZApAQCAtMCwwICsxLDk5IEBACisvKgorKiBDb3B5cmlnaHQgYnkgU3ludGFjb3JlIExMQyDCqSAyMDE2LCAyMDE3LiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscworKiBAZmlsZSAgICAgICA8bGluay5sZD4KKyogQGJyaWVmICAgICAgYmFyZSBtZXRhbCB0ZXN0cycgbGlua2VyIHNjcmlwdAorKi8KKworT1VUUFVUX0FSQ0goICJyaXNjdiIgKQorRU5UUlkoX3N0YXJ0KQorCitNRU1PUlkgeworICBSQU0gKHJ3eCkgOiBPUklHSU4gPSAweDAsIExFTkdUSCA9IDY0SworfQorCitTVEFDS19TSVpFID0gMTAyNDsKKworQ0xfU0laRSA9IDMyOworCitTRUNUSU9OUyB7CisKKyAgLyogY29kZSBzZWdtZW50ICovCisgIC50ZXh0LmluaXQgMCA6IHsgCisgICAgRklMTCgwKTsKKyAgICAuID0gMHgxMDAgLSAxMjsKKyAgICBTSU1fRVhJVCA9IC47CisgICAgTE9ORygweDEzKTsKKyAgICBTSU1fU1RPUCA9IC47CisgICAgTE9ORygweDZGKTsKKyAgICBMT05HKC0xKTsKKyAgICAuID0gMHgxMDA7CisgICAgUFJPVklERShfX1RFWFRfU1RBUlRfXyA9IC4pOworICAgICooLnRleHQuaW5pdCkgCisgIH0gPlJBTQorCisgIC50ZXh0ICA6IHsKKyAgICAqY3J0Lm8oLnRleHQgLnRleHQuKikKKyAgICAqKC50ZXh0IC50ZXh0LiopCisgICAgKihzY190ZXN0X3NlY3Rpb24pCisgICAgLiA9IEFMSUdOKENMX1NJWkUpOworICAgICBQUk9WSURFKF9fVEVYVF9FTkRfXyA9IC4pOworICB9ID5SQU0gCisKKyAgLyogZGF0YSBzZWdtZW50ICovCisgIC5kYXRhIDogeworICAgICooLmRhdGEgLmRhdGEuKikKKyAgICAuID0gQUxJR04oQ0xfU0laRSk7CisgIH0gPlJBTQorCisgIC5zZGF0YSA6IHsKKyAgICBfX2dsb2JhbF9wb2ludGVyJCA9IC4gKyAweDgwMDsKKyAgICAqKC5zcm9kYXRhLmNzdDE2KSAqKC5zcm9kYXRhLmNzdDgpICooLnNyb2RhdGEuY3N0NCkgKiguc3JvZGF0YS5jc3QyKSAqKC5zcm9kYXRhKikKKyAgICAqKC5zZGF0YSAuc2RhdGEuKiAuZ251LmxpbmtvbmNlLnMuKikKKyAgICAuID0gQUxJR04oQ0xfU0laRSk7CisgIH0gPlJBTQorCisgIC8qIHRocmVhZC1sb2NhbCBkYXRhIHNlZ21lbnQgKi8KKyAgLnRkYXRhIDogeworICAgIFBST1ZJREUoX3Rsc19kYXRhID0gLik7CisgICAgUFJPVklERShfdGRhdGFfYmVnaW4gPSAuKTsKKyAgICAqKC50ZGF0YSAudGRhdGEuKikKKyAgICBQUk9WSURFKF90ZGF0YV9lbmQgPSAuKTsKKyAgICAuID0gQUxJR04oQ0xfU0laRSk7CisgIH0gPlJBTQorCisgIC50YnNzIDogeworICAgIFBST1ZJREUoX19CU1NfU1RBUlRfXyA9IC4pOworICAgICooLnRic3MgLnRic3MuKikKKyAgICAuID0gQUxJR04oQ0xfU0laRSk7CisgICAgUFJPVklERShfdGJzc19lbmQgPSAuKTsKKyAgfSA+UkFNCisKKyAgLyogYnNzIHNlZ21lbnQgKi8KKyAgLnNic3MgOiB7CisgICAgKiguc2JzcyAuc2Jzcy4qIC5nbnUubGlua29uY2Uuc2IuKikKKyAgICAqKC5zY29tbW9uKQorICB9ID5SQU0KKworICAuYnNzIDogeworICAgICooLmJzcyAuYnNzLiopCisgICAgLiA9IEFMSUdOKENMX1NJWkUpOworICAgIFBST1ZJREUoX19CU1NfRU5EX18gPSAuKTsKKyAgfSA+UkFNCisKKyAgX2VuZCA9IC47CisgIFBST1ZJREUoX19lbmQgPSAuKTsKKworICAvKiBFbmQgb2YgdW5pbml0YWxpemVkIGRhdGEgc2VnZW1lbnQgKi8KKworICAuc3RhY2sgT1JJR0lOKFJBTSkgKyBMRU5HVEgoUkFNKSAtIFNUQUNLX1NJWkUgOiB7CisgICAgRklMTCgwKTsKKyAgICBQUk9WSURFKF9fU1RBQ0tfU1RBUlRfXyA9IC4pOworICAgIC4gKz0gU1RBQ0tfU0laRTsKKyAgICBQUk9WSURFKF9fQ19TVEFDS19UT1BfXyA9IC4pOworICAgIFBST1ZJREUoX19TVEFDS19FTkRfXyA9IC4pOworICB9ID5SQU0KKworICAvRElTQ0FSRC8gOiB7CisgICAgKiguZWhfZnJhbWUgLmVoX2ZyYW1lLiopCisgIH0KK30KZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vbGlua190Y20ubGQgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2xpbmtfdGNtLmxkCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdiMzc1MDYKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL2xpbmtfdGNtLmxkCkBAIC0wLDAgKzEsMTE0IEBACisvKgorKiBDb3B5cmlnaHQgYnkgU3ludGFjb3JlIExMQyDCqSAyMDE2LCAyMDE3LiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscworKiBAZmlsZSAgICAgICA8bGluay5sZD4KKyogQGJyaWVmICAgICAgYmFyZSBtZXRhbCB0ZXN0cycgbGlua2VyIHNjcmlwdAorKi8KKworT1VUUFVUX0FSQ0goICJyaXNjdiIgKQorRU5UUlkoX3N0YXJ0KQorCitNRU1PUlkgeworICBSQU0gKHJ3eCkgOiBPUklHSU4gPSAweDAsIExFTkdUSCA9IDY0SworICBUQ00gKHJ3eCkgOiBPUklHSU4gPSAweDAwNDgwMDAwLCBMRU5HVEggPSA2NEsKK30KKworU1RBQ0tfU0laRSA9IDEwMjQ7CisKK0NMX1NJWkUgPSAzMjsKKworU0VDVElPTlMgeworCisgIC8qIGNvZGUgc2VnbWVudCAqLworICAudGV4dC5pbml0IE9SSUdJTihSQU0pIDogeyAKKyAgICBGSUxMKDApOworICAgIC4gPSAweDEwMCAtIDEyOworICAgIFNJTV9FWElUID0gLjsKKyAgICBMT05HKDB4MTMpOworICAgIFNJTV9TVE9QID0gLjsKKyAgICBMT05HKDB4NkYpOworICAgIExPTkcoLTEpOworICAgIC4gPSAweDEwMDsKKyAgICAqY3J0X3RjbS5vKC50ZXh0IC50ZXh0LiopCisgICAgKigudGV4dC5pbml0KQorICAgIC4gPSBBTElHTihDTF9TSVpFKTsKKyAgfSA+UkFNCisKKyAgX19yZWxvY19zdGFydCA9IC47CisKKyAgLnRleHQgOiB7CisgICAgUFJPVklERShfX1RFWFRfU1RBUlRfXyA9IC4pOworICAgICooLnRleHQgLnRleHQuKikKKyAgICAqKHNjX3Rlc3Rfc2VjdGlvbikKKyAgICAuID0gQUxJR04oQ0xfU0laRSk7CisgICAgIFBST1ZJREUoX19URVhUX0VORF9fID0gLik7CisgIH0gPlRDTSBBVD5SQU0KKworICAucm9kYXRhIEFMSUdOKENMX1NJWkUpIDogeworICAgIF9fZ2xvYmFsX3BvaW50ZXIkID0gLiArIDB4ODAwOworICAgICooLnJvZGF0YSkgKigucm9kYXRhLiopICooLmdudS5saW5rb25jZS5yLiopCisgICAgLiA9IEFMSUdOKENMX1NJWkUpOworICAgIExPTkcoMHgxMyk7CisgICAgLiA9IEFMSUdOKENMX1NJWkUpOworICB9ID5UQ00gQVQ+UkFNCisKKworICAvKiBkYXRhIHNlZ21lbnQgKi8KKyAgLmRhdGEgQUxJR04oQ0xfU0laRSkgOiB7CisgICAgUFJPVklERShfX0RBVEFfU1RBUlRfXyA9IC4pOworICAgICooLmRhdGEgLmRhdGEuKikKKyAgICAuID0gQUxJR04oQ0xfU0laRSk7CisgIH0gPlRDTSBBVD5SQU0KKworICAKKyAgLnNkYXRhIEFMSUdOKENMX1NJWkUpIDogeworICAgICooLnNkYXRhIC5zZGF0YS4qIC5nbnUubGlua29uY2Uucy4qKQorICAgIC4gPSBBTElHTihDTF9TSVpFKTsKKyAgICBQUk9WSURFKF9fREFUQV9FTkRfXyA9IC4pOworICB9ID5UQ00gQVQ+UkFNCisKKyAgLyogdGhyZWFkLWxvY2FsIGRhdGEgc2VnbWVudCAqLworICAudGRhdGEgQUxJR04oQ0xfU0laRSkgOiB7CisgICAgUFJPVklERShfdGxzX2RhdGEgPSAuKTsKKyAgICBQUk9WSURFKF90ZGF0YV9iZWdpbiA9IC4pOworICAgICooLnRkYXRhIC50ZGF0YS4qKQorICAgIFBST1ZJREUoX3RkYXRhX2VuZCA9IC4pOworICAgIC4gPSBBTElHTihDTF9TSVpFKTsKKyAgfSA+VENNIEFUPlJBTQorCisgIC50YnNzIEFMSUdOKENMX1NJWkUpIDogeworICAgIFBST1ZJREUoX3Ric3NfYmVnaW4gPSAuKTsKKyAgICAqKC50YnNzIC50YnNzLiopCisgICAgLiA9IEFMSUdOKENMX1NJWkUpOworICAgIFBST1ZJREUoX3Ric3NfZW5kID0gLik7CisgIH0gPlRDTSBBVD5SQU0KKworICAvKiBic3Mgc2VnbWVudCAqLworICAuc2JzcyBBTElHTihDTF9TSVpFKSA6IHsKKyAgICBQUk9WSURFKF9fQlNTX1NUQVJUX18gPSAuKTsKKyAgICAqKC5zYnNzIC5zYnNzLiogLmdudS5saW5rb25jZS5zYi4qKQorICAgICooLnNjb21tb24pCisgICAgLiA9IEFMSUdOKENMX1NJWkUpOworICB9ID5UQ00gQVQ+UkFNCisKKyAgLmJzcyBBTElHTihDTF9TSVpFKSA6IHsKKyAgICAqKC5keW5ic3MpICooLmJzcyAuYnNzLiogLmdudS5saW5rb25jZS5iLiopICooQ09NTU9OKQorICAgIC4gPSBBTElHTihDTF9TSVpFKTsKKyAgICBQUk9WSURFKF9fQlNTX0VORF9fID0gLik7CisgIH0gPlRDTSBBVD5SQU0KKworICBfZW5kID0gLjsKKyAgUFJPVklERShfX2VuZCA9IC4pOworCisgIC8qIEVuZCBvZiB1bmluaXRhbGl6ZWQgZGF0YSBzZWdlbWVudCAqLworCisgIC5zdGFjayBPUklHSU4oVENNKSArIExFTkdUSChUQ00pIC0gU1RBQ0tfU0laRSA6IHsKKyAgICBQUk9WSURFKF9fU1RBQ0tfU1RBUlRfXyA9IC4pOworICAgIC4gKz0gU1RBQ0tfU0laRTsKKyAgICBQUk9WSURFKF9fQ19TVEFDS19UT1BfXyA9IC4pOworICAgIFBST1ZJREUoX19TVEFDS19FTkRfXyA9IC4pOworICB9ID5UQ00KKworICAvRElTQ0FSRC8gOiB7CisgICAgKiguZWhfZnJhbWUgLmVoX2ZyYW1lLiopCisgIH0KK30KZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vcmVsb2MuaCBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vcmVsb2MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNzVkN2E4Ci0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9yZWxvYy5oCkBAIC0wLDAgKzEsMzcgQEAKKyNpZm5kZWYgUkVMT0NfSAorI2RlZmluZSBSRUxPQ19ICisKKyNpZiAoVENNID09IDEpCisjZGVmaW5lIFJFTE9DX1BST0MgICAgICAgICAgICAgIFwKKyAgICBsYSAgICBhMCwgX19yZWxvY19zdGFydDsgICAgXAorICAgIGxhICAgIGExLCBfX1RFWFRfU1RBUlRfXzsgICBcCisgICAgbGEgICAgYTIsIF9fREFUQV9FTkRfXzsgICAgIFwKKyAgICBiZXEgICBhMCwgYTEsIDIxZjsgICAgICAgICAgXAorICAgIGogICAgIDJmOyAgICAgICAgICAgICAgICAgICBcCisxOiAgbHcgICAgYTMsIDAoYTApOyAgICAgICAgICAgIFwKKyAgICBzdyAgICBhMywgMChhMSk7ICAgICAgICAgICAgXAorICAgIGFkZCAgIGEwLCBhMCwgNDsgICAgICAgICAgICBcCisgICAgYWRkICAgYTEsIGExLCA0OyAgICAgICAgICAgIFwKKzI6ICBibmUgICBhMSwgYTIsIDFiOyAgICAgICAgICAgXAorICAgIC8qIGNsZWFyIGJzcyAqLyAgICAgICAgICAgICBcCisgICAgbGEgICAgYTIsIF9fQlNTX1NUQVJUX187ICAgIFwKKzIxOiBsYSAgICBhMSwgX19CU1NfRU5EX187ICAgICAgXAorICAgIGogICAgIDRmOyAgICAgICAgICAgICAgICAgICBcCiszOiAgc3cgICAgemVybywgMChhMik7ICAgICAgICAgIFwKKyAgICBhZGQgICBhMiwgYTIsIDQ7ICAgICAgICAgICAgXAorNDogIGJuZSAgIGExLCBhMiwgM2I7ICAgICAgICAgICBcCisgICAgLyogaW5pdCBzdGFjayAqLyAgICAgICAgICAgIFwKKyAgICBsYSAgICBzcCwgX19DX1NUQUNLX1RPUF9fOyAgXAorICAgIC8qIGluaXQgaGFydDAgVExTICovICAgICAgICBcCisgICAgbGEgICAgYTAsIF90ZGF0YV9iZWdpbjsgICAgIFwKKyAgICBsYSAgICBhMiwgX3Ric3NfZW5kOyAgICAgICAgXAorICAgIHN1YiAgIGExLCBhMiwgYTA7ICAgICAgICAgICBcCisgICAgbGEgICAgYTQsIF9fU1RBQ0tfU1RBUlRfXzsgIFwKKyAgICBzdWIgICB0cCwgYTQsIGExOyAgIAorI2Vsc2UgIC8vICNpZiBUQ00KKworI2RlZmluZSBSRUxPQ19QUk9DCisKKyNlbmRpZiAgLy8gI2Vsc2UgI2lmIFRDTQorCisjZW5kaWYgIC8vIApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vcmlzY3ZfY3NyX2VuY29kaW5nLmggYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL3Jpc2N2X2Nzcl9lbmNvZGluZy5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExYzlmNjQKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL3Jpc2N2X2Nzcl9lbmNvZGluZy5oCkBAIC0wLDAgKzEsMTQ3MyBAQAorLy8gU2VlIExJQ0VOU0UgZm9yIGxpY2Vuc2UgZGV0YWlscy4KKworI2lmbmRlZiBSSVNDVl9DU1JfRU5DT0RJTkdfSAorI2RlZmluZSBSSVNDVl9DU1JfRU5DT0RJTkdfSAorCisjZGVmaW5lIE1TVEFUVVNfVUlFICAgICAgICAgMHgwMDAwMDAwMQorI2RlZmluZSBNU1RBVFVTX1NJRSAgICAgICAgIDB4MDAwMDAwMDIKKyNkZWZpbmUgTVNUQVRVU19ISUUgICAgICAgICAweDAwMDAwMDA0CisjZGVmaW5lIE1TVEFUVVNfTUlFICAgICAgICAgMHgwMDAwMDAwOAorI2RlZmluZSBNU1RBVFVTX1VQSUUgICAgICAgIDB4MDAwMDAwMTAKKyNkZWZpbmUgTVNUQVRVU19TUElFICAgICAgICAweDAwMDAwMDIwCisjZGVmaW5lIE1TVEFUVVNfSFBJRSAgICAgICAgMHgwMDAwMDA0MAorI2RlZmluZSBNU1RBVFVTX01QSUUgICAgICAgIDB4MDAwMDAwODAKKyNkZWZpbmUgTVNUQVRVU19TUFAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIE1TVEFUVVNfSFBQICAgICAgICAgMHgwMDAwMDYwMAorI2RlZmluZSBNU1RBVFVTX01QUCAgICAgICAgIDB4MDAwMDE4MDAKKyNkZWZpbmUgTVNUQVRVU19GUyAgICAgICAgICAweDAwMDA2MDAwCisjZGVmaW5lIE1TVEFUVVNfWFMgICAgICAgICAgMHgwMDAxODAwMAorI2RlZmluZSBNU1RBVFVTX01QUlYgICAgICAgIDB4MDAwMjAwMDAKKyNkZWZpbmUgTVNUQVRVU19TVU0gICAgICAgICAweDAwMDQwMDAwCisjZGVmaW5lIE1TVEFUVVNfTVhSICAgICAgICAgMHgwMDA4MDAwMAorI2RlZmluZSBNU1RBVFVTX1RWTSAgICAgICAgIDB4MDAxMDAwMDAKKyNkZWZpbmUgTVNUQVRVU19UVyAgICAgICAgICAweDAwMjAwMDAwCisjZGVmaW5lIE1TVEFUVVNfVFNSICAgICAgICAgMHgwMDQwMDAwMAorI2RlZmluZSBNU1RBVFVTMzJfU0QgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgTVNUQVRVU19VWEwgICAgICAgICAweDAwMDAwMDAzMDAwMDAwMDAKKyNkZWZpbmUgTVNUQVRVU19TWEwgICAgICAgICAweDAwMDAwMDBDMDAwMDAwMDAKKyNkZWZpbmUgTVNUQVRVUzY0X1NEICAgICAgICAweDgwMDAwMDAwMDAwMDAwMDAKKworI2RlZmluZSBTU1RBVFVTX1VJRSAgICAgICAgIDB4MDAwMDAwMDEKKyNkZWZpbmUgU1NUQVRVU19TSUUgICAgICAgICAweDAwMDAwMDAyCisjZGVmaW5lIFNTVEFUVVNfVVBJRSAgICAgICAgMHgwMDAwMDAxMAorI2RlZmluZSBTU1RBVFVTX1NQSUUgICAgICAgIDB4MDAwMDAwMjAKKyNkZWZpbmUgU1NUQVRVU19TUFAgICAgICAgICAweDAwMDAwMTAwCisjZGVmaW5lIFNTVEFUVVNfRlMgICAgICAgICAgMHgwMDAwNjAwMAorI2RlZmluZSBTU1RBVFVTX1hTICAgICAgICAgIDB4MDAwMTgwMDAKKyNkZWZpbmUgU1NUQVRVU19TVU0gICAgICAgICAweDAwMDQwMDAwCisjZGVmaW5lIFNTVEFUVVNfTVhSICAgICAgICAgMHgwMDA4MDAwMAorI2RlZmluZSBTU1RBVFVTMzJfU0QgICAgICAgIDB4ODAwMDAwMDAKKyNkZWZpbmUgU1NUQVRVU19VWEwgICAgICAgICAweDAwMDAwMDAzMDAwMDAwMDAKKyNkZWZpbmUgU1NUQVRVUzY0X1NEICAgICAgICAweDgwMDAwMDAwMDAwMDAwMDAKKworI2RlZmluZSBEQ1NSX1hERUJVR1ZFUiAgICAgICgzVTw8MzApCisjZGVmaW5lIERDU1JfTkRSRVNFVCAgICAgICAgKDE8PDI5KQorI2RlZmluZSBEQ1NSX0ZVTExSRVNFVCAgICAgICgxPDwyOCkKKyNkZWZpbmUgRENTUl9FQlJFQUtNICAgICAgICAoMTw8MTUpCisjZGVmaW5lIERDU1JfRUJSRUFLSCAgICAgICAgKDE8PDE0KQorI2RlZmluZSBEQ1NSX0VCUkVBS1MgICAgICAgICgxPDwxMykKKyNkZWZpbmUgRENTUl9FQlJFQUtVICAgICAgICAoMTw8MTIpCisjZGVmaW5lIERDU1JfU1RPUENZQ0xFICAgICAgKDE8PDEwKQorI2RlZmluZSBEQ1NSX1NUT1BUSU1FICAgICAgICgxPDw5KQorI2RlZmluZSBEQ1NSX0NBVVNFICAgICAgICAgICg3PDw2KQorI2RlZmluZSBEQ1NSX0RFQlVHSU5UICAgICAgICgxPDw1KQorI2RlZmluZSBEQ1NSX0hBTFQgICAgICAgICAgICgxPDwzKQorI2RlZmluZSBEQ1NSX1NURVAgICAgICAgICAgICgxPDwyKQorI2RlZmluZSBEQ1NSX1BSViAgICAgICAgICAgICgzPDwwKQorCisjZGVmaW5lIERDU1JfQ0FVU0VfTk9ORSAgICAgMAorI2RlZmluZSBEQ1NSX0NBVVNFX1NXQlAgICAgIDEKKyNkZWZpbmUgRENTUl9DQVVTRV9IV0JQICAgICAyCisjZGVmaW5lIERDU1JfQ0FVU0VfREVCVUdJTlQgMworI2RlZmluZSBEQ1NSX0NBVVNFX1NURVAgICAgIDQKKyNkZWZpbmUgRENTUl9DQVVTRV9IQUxUICAgICA1CisKKyNkZWZpbmUgTUNPTlRST0xfVFlQRSh4bGVuKSAgICAoMHhmVUxMPDwoKHhsZW4pLTQpKQorI2RlZmluZSBNQ09OVFJPTF9ETU9ERSh4bGVuKSAgICgxVUxMPDwoKHhsZW4pLTUpKQorI2RlZmluZSBNQ09OVFJPTF9NQVNLTUFYKHhsZW4pICgweDNmVUxMPDwoKHhsZW4pLTExKSkKKworI2RlZmluZSBNQ09OVFJPTF9TRUxFQ1QgICAgICgxPDwxOSkKKyNkZWZpbmUgTUNPTlRST0xfVElNSU5HICAgICAoMTw8MTgpCisjZGVmaW5lIE1DT05UUk9MX0FDVElPTiAgICAgKDB4M2Y8PDEyKQorI2RlZmluZSBNQ09OVFJPTF9DSEFJTiAgICAgICgxPDwxMSkKKyNkZWZpbmUgTUNPTlRST0xfTUFUQ0ggICAgICAoMHhmPDw3KQorI2RlZmluZSBNQ09OVFJPTF9NICAgICAgICAgICgxPDw2KQorI2RlZmluZSBNQ09OVFJPTF9IICAgICAgICAgICgxPDw1KQorI2RlZmluZSBNQ09OVFJPTF9TICAgICAgICAgICgxPDw0KQorI2RlZmluZSBNQ09OVFJPTF9VICAgICAgICAgICgxPDwzKQorI2RlZmluZSBNQ09OVFJPTF9FWEVDVVRFICAgICgxPDwyKQorI2RlZmluZSBNQ09OVFJPTF9TVE9SRSAgICAgICgxPDwxKQorI2RlZmluZSBNQ09OVFJPTF9MT0FEICAgICAgICgxPDwwKQorCisjZGVmaW5lIE1DT05UUk9MX1RZUEVfTk9ORSAgICAgIDAKKyNkZWZpbmUgTUNPTlRST0xfVFlQRV9NQVRDSCAgICAgMgorCisjZGVmaW5lIE1DT05UUk9MX0FDVElPTl9ERUJVR19FWENFUFRJT04gICAwCisjZGVmaW5lIE1DT05UUk9MX0FDVElPTl9ERUJVR19NT0RFICAgICAgICAxCisjZGVmaW5lIE1DT05UUk9MX0FDVElPTl9UUkFDRV9TVEFSVCAgICAgICAyCisjZGVmaW5lIE1DT05UUk9MX0FDVElPTl9UUkFDRV9TVE9QICAgICAgICAzCisjZGVmaW5lIE1DT05UUk9MX0FDVElPTl9UUkFDRV9FTUlUICAgICAgICA0CisKKyNkZWZpbmUgTUNPTlRST0xfTUFUQ0hfRVFVQUwgICAgIDAKKyNkZWZpbmUgTUNPTlRST0xfTUFUQ0hfTkFQT1QgICAgIDEKKyNkZWZpbmUgTUNPTlRST0xfTUFUQ0hfR0UgICAgICAgIDIKKyNkZWZpbmUgTUNPTlRST0xfTUFUQ0hfTFQgICAgICAgIDMKKyNkZWZpbmUgTUNPTlRST0xfTUFUQ0hfTUFTS19MT1cgIDQKKyNkZWZpbmUgTUNPTlRST0xfTUFUQ0hfTUFTS19ISUdIIDUKKworI2RlZmluZSBNSVBfU1NJUCAgICAgICAgICAgICgxIDw8IElSUV9TX1NPRlQpCisjZGVmaW5lIE1JUF9IU0lQICAgICAgICAgICAgKDEgPDwgSVJRX0hfU09GVCkKKyNkZWZpbmUgTUlQX01TSVAgICAgICAgICAgICAoMSA8PCBJUlFfTV9TT0ZUKQorI2RlZmluZSBNSVBfU1RJUCAgICAgICAgICAgICgxIDw8IElSUV9TX1RJTUVSKQorI2RlZmluZSBNSVBfSFRJUCAgICAgICAgICAgICgxIDw8IElSUV9IX1RJTUVSKQorI2RlZmluZSBNSVBfTVRJUCAgICAgICAgICAgICgxIDw8IElSUV9NX1RJTUVSKQorI2RlZmluZSBNSVBfU0VJUCAgICAgICAgICAgICgxIDw8IElSUV9TX0VYVCkKKyNkZWZpbmUgTUlQX0hFSVAgICAgICAgICAgICAoMSA8PCBJUlFfSF9FWFQpCisjZGVmaW5lIE1JUF9NRUlQICAgICAgICAgICAgKDEgPDwgSVJRX01fRVhUKQorCisjZGVmaW5lIFNJUF9TU0lQIE1JUF9TU0lQCisjZGVmaW5lIFNJUF9TVElQIE1JUF9TVElQCisKKyNkZWZpbmUgUFJWX1UgMAorI2RlZmluZSBQUlZfUyAxCisjZGVmaW5lIFBSVl9IIDIKKyNkZWZpbmUgUFJWX00gMworCisjZGVmaW5lIFNQVEJSMzJfTU9ERSAweDgwMDAwMDAwCisjZGVmaW5lIFNQVEJSMzJfQVNJRCAweDdGQzAwMDAwCisjZGVmaW5lIFNQVEJSMzJfUFBOICAweDAwM0ZGRkZGCisjZGVmaW5lIFNQVEJSNjRfTU9ERSAweEYwMDAwMDAwMDAwMDAwMDAKKyNkZWZpbmUgU1BUQlI2NF9BU0lEIDB4MEZGRkYwMDAwMDAwMDAwMAorI2RlZmluZSBTUFRCUjY0X1BQTiAgMHgwMDAwMEZGRkZGRkZGRkZGCisKKyNkZWZpbmUgU1BUQlJfTU9ERV9PRkYgIDAKKyNkZWZpbmUgU1BUQlJfTU9ERV9TVjMyIDEKKyNkZWZpbmUgU1BUQlJfTU9ERV9TVjM5IDgKKyNkZWZpbmUgU1BUQlJfTU9ERV9TVjQ4IDkKKyNkZWZpbmUgU1BUQlJfTU9ERV9TVjU3IDEwCisjZGVmaW5lIFNQVEJSX01PREVfU1Y2NCAxMQorCisjZGVmaW5lIFBNUF9SICAgICAweDAxCisjZGVmaW5lIFBNUF9XICAgICAweDAyCisjZGVmaW5lIFBNUF9YICAgICAweDA0CisjZGVmaW5lIFBNUF9BICAgICAweDE4CisjZGVmaW5lIFBNUF9MICAgICAweDgwCisjZGVmaW5lIFBNUF9TSElGVCAyCisKKyNkZWZpbmUgUE1QX1RPUiAgIDB4MDgKKyNkZWZpbmUgUE1QX05BNCAgIDB4MTAKKyNkZWZpbmUgUE1QX05BUE9UIDB4MTgKKworI2RlZmluZSBJUlFfU19TT0ZUICAgMQorI2RlZmluZSBJUlFfSF9TT0ZUICAgMgorI2RlZmluZSBJUlFfTV9TT0ZUICAgMworI2RlZmluZSBJUlFfU19USU1FUiAgNQorI2RlZmluZSBJUlFfSF9USU1FUiAgNgorI2RlZmluZSBJUlFfTV9USU1FUiAgNworI2RlZmluZSBJUlFfU19FWFQgICAgOQorI2RlZmluZSBJUlFfSF9FWFQgICAgMTAKKyNkZWZpbmUgSVJRX01fRVhUICAgIDExCisjZGVmaW5lIElSUV9DT1AgICAgICAxMgorI2RlZmluZSBJUlFfSE9TVCAgICAgMTMKKworI2RlZmluZSBERUZBVUxUX1JTVFZFQyAgICAgMHgwMDAwMTAwMAorI2RlZmluZSBDTElOVF9CQVNFICAgICAgICAgMHgwMjAwMDAwMAorI2RlZmluZSBDTElOVF9TSVpFICAgICAgICAgMHgwMDBjMDAwMAorI2RlZmluZSBFWFRfSU9fQkFTRSAgICAgICAgMHg0MDAwMDAwMAorI2RlZmluZSBEUkFNX0JBU0UgICAgICAgICAgMHg4MDAwMDAwMAorCisvLyBwYWdlIHRhYmxlIGVudHJ5IChQVEUpIGZpZWxkcworI2RlZmluZSBQVEVfViAgICAgMHgwMDEgLy8gVmFsaWQKKyNkZWZpbmUgUFRFX1IgICAgIDB4MDAyIC8vIFJlYWQKKyNkZWZpbmUgUFRFX1cgICAgIDB4MDA0IC8vIFdyaXRlCisjZGVmaW5lIFBURV9YICAgICAweDAwOCAvLyBFeGVjdXRlCisjZGVmaW5lIFBURV9VICAgICAweDAxMCAvLyBVc2VyCisjZGVmaW5lIFBURV9HICAgICAweDAyMCAvLyBHbG9iYWwKKyNkZWZpbmUgUFRFX0EgICAgIDB4MDQwIC8vIEFjY2Vzc2VkCisjZGVmaW5lIFBURV9EICAgICAweDA4MCAvLyBEaXJ0eQorI2RlZmluZSBQVEVfU09GVCAgMHgzMDAgLy8gUmVzZXJ2ZWQgZm9yIFNvZnR3YXJlCisKKyNkZWZpbmUgUFRFX1BQTl9TSElGVCAxMAorCisjZGVmaW5lIFBURV9UQUJMRShQVEUpICgoKFBURSkgJiAoUFRFX1YgfCBQVEVfUiB8IFBURV9XIHwgUFRFX1gpKSA9PSBQVEVfVikKKworI2lmZGVmIF9fcmlzY3YKKworI2lmIF9fcmlzY3ZfeGxlbiA9PSA2NAorIyBkZWZpbmUgTVNUQVRVU19TRCBNU1RBVFVTNjRfU0QKKyMgZGVmaW5lIFNTVEFUVVNfU0QgU1NUQVRVUzY0X1NECisjIGRlZmluZSBSSVNDVl9QR0xFVkVMX0JJVFMgOQorIyBkZWZpbmUgU1BUQlJfTU9ERSBTUFRCUjY0X01PREUKKyNlbHNlCisjIGRlZmluZSBNU1RBVFVTX1NEIE1TVEFUVVMzMl9TRAorIyBkZWZpbmUgU1NUQVRVU19TRCBTU1RBVFVTMzJfU0QKKyMgZGVmaW5lIFJJU0NWX1BHTEVWRUxfQklUUyAxMAorIyBkZWZpbmUgU1BUQlJfTU9ERSBTUFRCUjMyX01PREUKKyNlbmRpZgorI2RlZmluZSBSSVNDVl9QR1NISUZUIDEyCisjZGVmaW5lIFJJU0NWX1BHU0laRSAoMSA8PCBSSVNDVl9QR1NISUZUKQorCisjaWZuZGVmIF9fQVNTRU1CTEVSX18KKworI2lmZGVmIF9fR05VQ19fCisKKyNkZWZpbmUgcmVhZF9jc3IocmVnKSAoeyB1bnNpZ25lZCBsb25nIF9fdG1wOyBcCisgIGFzbSB2b2xhdGlsZSAoImNzcnIgJTAsICIgI3JlZyA6ICI9ciIoX190bXApKTsgXAorICBfX3RtcDsgfSkKKworI2RlZmluZSB3cml0ZV9jc3IocmVnLCB2YWwpICh7IFwKKyAgYXNtIHZvbGF0aWxlICgiY3NydyAiICNyZWcgIiwgJTAiIDo6ICJySyIodmFsKSk7IH0pCisKKyNkZWZpbmUgc3dhcF9jc3IocmVnLCB2YWwpICh7IHVuc2lnbmVkIGxvbmcgX190bXA7IFwKKyAgYXNtIHZvbGF0aWxlICgiY3NycncgJTAsICIgI3JlZyAiLCAlMSIgOiAiPXIiKF9fdG1wKSA6ICJySyIodmFsKSk7IFwKKyAgX190bXA7IH0pCisKKyNkZWZpbmUgc2V0X2NzcihyZWcsIGJpdCkgKHsgdW5zaWduZWQgbG9uZyBfX3RtcDsgXAorICBhc20gdm9sYXRpbGUgKCJjc3JycyAlMCwgIiAjcmVnICIsICUxIiA6ICI9ciIoX190bXApIDogInJLIihiaXQpKTsgXAorICBfX3RtcDsgfSkKKworI2RlZmluZSBjbGVhcl9jc3IocmVnLCBiaXQpICh7IHVuc2lnbmVkIGxvbmcgX190bXA7IFwKKyAgYXNtIHZvbGF0aWxlICgiY3NycmMgJTAsICIgI3JlZyAiLCAlMSIgOiAiPXIiKF9fdG1wKSA6ICJySyIoYml0KSk7IFwKKyAgX190bXA7IH0pCisKKyNkZWZpbmUgcmR0aW1lKCkgcmVhZF9jc3IodGltZSkKKyNkZWZpbmUgcmRjeWNsZSgpIHJlYWRfY3NyKGN5Y2xlKQorI2RlZmluZSByZGluc3RyZXQoKSByZWFkX2NzcihpbnN0cmV0KQorCisjZW5kaWYKKworI2VuZGlmCisKKyNlbmRpZgorCisjZW5kaWYKKy8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHBhcnNlLW9wY29kZXMuICAqLworI2lmbmRlZiBSSVNDVl9FTkNPRElOR19ICisjZGVmaW5lIFJJU0NWX0VOQ09ESU5HX0gKKyNkZWZpbmUgTUFUQ0hfQkVRIDB4NjMKKyNkZWZpbmUgTUFTS19CRVEgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9CTkUgMHgxMDYzCisjZGVmaW5lIE1BU0tfQk5FICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQkxUIDB4NDA2MworI2RlZmluZSBNQVNLX0JMVCAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0JHRSAweDUwNjMKKyNkZWZpbmUgTUFTS19CR0UgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9CTFRVIDB4NjA2MworI2RlZmluZSBNQVNLX0JMVFUgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9CR0VVIDB4NzA2MworI2RlZmluZSBNQVNLX0JHRVUgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9KQUxSIDB4NjcKKyNkZWZpbmUgTUFTS19KQUxSICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfSkFMIDB4NmYKKyNkZWZpbmUgTUFTS19KQUwgIDB4N2YKKyNkZWZpbmUgTUFUQ0hfTFVJIDB4MzcKKyNkZWZpbmUgTUFTS19MVUkgIDB4N2YKKyNkZWZpbmUgTUFUQ0hfQVVJUEMgMHgxNworI2RlZmluZSBNQVNLX0FVSVBDICAweDdmCisjZGVmaW5lIE1BVENIX0FEREkgMHgxMworI2RlZmluZSBNQVNLX0FEREkgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9TTExJIDB4MTAxMworI2RlZmluZSBNQVNLX1NMTEkgIDB4ZmMwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU0xUSSAweDIwMTMKKyNkZWZpbmUgTUFTS19TTFRJICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfU0xUSVUgMHgzMDEzCisjZGVmaW5lIE1BU0tfU0xUSVUgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9YT1JJIDB4NDAxMworI2RlZmluZSBNQVNLX1hPUkkgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9TUkxJIDB4NTAxMworI2RlZmluZSBNQVNLX1NSTEkgIDB4ZmMwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU1JBSSAweDQwMDA1MDEzCisjZGVmaW5lIE1BU0tfU1JBSSAgMHhmYzAwNzA3ZgorI2RlZmluZSBNQVRDSF9PUkkgMHg2MDEzCisjZGVmaW5lIE1BU0tfT1JJICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQU5ESSAweDcwMTMKKyNkZWZpbmUgTUFTS19BTkRJICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQUREIDB4MzMKKyNkZWZpbmUgTUFTS19BREQgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU1VCIDB4NDAwMDAwMzMKKyNkZWZpbmUgTUFTS19TVUIgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU0xMIDB4MTAzMworI2RlZmluZSBNQVNLX1NMTCAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9TTFQgMHgyMDMzCisjZGVmaW5lIE1BU0tfU0xUICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX1NMVFUgMHgzMDMzCisjZGVmaW5lIE1BU0tfU0xUVSAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9YT1IgMHg0MDMzCisjZGVmaW5lIE1BU0tfWE9SICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX1NSTCAweDUwMzMKKyNkZWZpbmUgTUFTS19TUkwgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU1JBIDB4NDAwMDUwMzMKKyNkZWZpbmUgTUFTS19TUkEgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfT1IgMHg2MDMzCisjZGVmaW5lIE1BU0tfT1IgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfQU5EIDB4NzAzMworI2RlZmluZSBNQVNLX0FORCAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9BRERJVyAweDFiCisjZGVmaW5lIE1BU0tfQURESVcgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9TTExJVyAweDEwMWIKKyNkZWZpbmUgTUFTS19TTExJVyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9TUkxJVyAweDUwMWIKKyNkZWZpbmUgTUFTS19TUkxJVyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9TUkFJVyAweDQwMDA1MDFiCisjZGVmaW5lIE1BU0tfU1JBSVcgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfQUREVyAweDNiCisjZGVmaW5lIE1BU0tfQUREVyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9TVUJXIDB4NDAwMDAwM2IKKyNkZWZpbmUgTUFTS19TVUJXICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX1NMTFcgMHgxMDNiCisjZGVmaW5lIE1BU0tfU0xMVyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9TUkxXIDB4NTAzYgorI2RlZmluZSBNQVNLX1NSTFcgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU1JBVyAweDQwMDA1MDNiCisjZGVmaW5lIE1BU0tfU1JBVyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9MQiAweDMKKyNkZWZpbmUgTUFTS19MQiAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0xIIDB4MTAwMworI2RlZmluZSBNQVNLX0xIICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfTFcgMHgyMDAzCisjZGVmaW5lIE1BU0tfTFcgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9MRCAweDMwMDMKKyNkZWZpbmUgTUFTS19MRCAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0xCVSAweDQwMDMKKyNkZWZpbmUgTUFTS19MQlUgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9MSFUgMHg1MDAzCisjZGVmaW5lIE1BU0tfTEhVICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfTFdVIDB4NjAwMworI2RlZmluZSBNQVNLX0xXVSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX1NCIDB4MjMKKyNkZWZpbmUgTUFTS19TQiAgMHg3MDdmCisjZGVmaW5lIE1BVENIX1NIIDB4MTAyMworI2RlZmluZSBNQVNLX1NIICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfU1cgMHgyMDIzCisjZGVmaW5lIE1BU0tfU1cgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9TRCAweDMwMjMKKyNkZWZpbmUgTUFTS19TRCAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0ZFTkNFIDB4ZgorI2RlZmluZSBNQVNLX0ZFTkNFICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkVOQ0VfSSAweDEwMGYKKyNkZWZpbmUgTUFTS19GRU5DRV9JICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfTVVMIDB4MjAwMDAzMworI2RlZmluZSBNQVNLX01VTCAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9NVUxIIDB4MjAwMTAzMworI2RlZmluZSBNQVNLX01VTEggIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfTVVMSFNVIDB4MjAwMjAzMworI2RlZmluZSBNQVNLX01VTEhTVSAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9NVUxIVSAweDIwMDMwMzMKKyNkZWZpbmUgTUFTS19NVUxIVSAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9ESVYgMHgyMDA0MDMzCisjZGVmaW5lIE1BU0tfRElWICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0RJVlUgMHgyMDA1MDMzCisjZGVmaW5lIE1BU0tfRElWVSAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9SRU0gMHgyMDA2MDMzCisjZGVmaW5lIE1BU0tfUkVNICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX1JFTVUgMHgyMDA3MDMzCisjZGVmaW5lIE1BU0tfUkVNVSAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9NVUxXIDB4MjAwMDAzYgorI2RlZmluZSBNQVNLX01VTFcgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRElWVyAweDIwMDQwM2IKKyNkZWZpbmUgTUFTS19ESVZXICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0RJVlVXIDB4MjAwNTAzYgorI2RlZmluZSBNQVNLX0RJVlVXICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX1JFTVcgMHgyMDA2MDNiCisjZGVmaW5lIE1BU0tfUkVNVyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9SRU1VVyAweDIwMDcwM2IKKyNkZWZpbmUgTUFTS19SRU1VVyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9BRERfVyAweDIwMmYKKyNkZWZpbmUgTUFTS19BTU9BRERfVyAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9YT1JfVyAweDIwMDAyMDJmCisjZGVmaW5lIE1BU0tfQU1PWE9SX1cgIDB4ZjgwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfQU1PT1JfVyAweDQwMDAyMDJmCisjZGVmaW5lIE1BU0tfQU1PT1JfVyAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9BTkRfVyAweDYwMDAyMDJmCisjZGVmaW5lIE1BU0tfQU1PQU5EX1cgIDB4ZjgwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfQU1PTUlOX1cgMHg4MDAwMjAyZgorI2RlZmluZSBNQVNLX0FNT01JTl9XICAweGY4MDA3MDdmCisjZGVmaW5lIE1BVENIX0FNT01BWF9XIDB4YTAwMDIwMmYKKyNkZWZpbmUgTUFTS19BTU9NQVhfVyAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9NSU5VX1cgMHhjMDAwMjAyZgorI2RlZmluZSBNQVNLX0FNT01JTlVfVyAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9NQVhVX1cgMHhlMDAwMjAyZgorI2RlZmluZSBNQVNLX0FNT01BWFVfVyAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9TV0FQX1cgMHg4MDAyMDJmCisjZGVmaW5lIE1BU0tfQU1PU1dBUF9XICAweGY4MDA3MDdmCisjZGVmaW5lIE1BVENIX0xSX1cgMHgxMDAwMjAyZgorI2RlZmluZSBNQVNLX0xSX1cgIDB4ZjlmMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU0NfVyAweDE4MDAyMDJmCisjZGVmaW5lIE1BU0tfU0NfVyAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9BRERfRCAweDMwMmYKKyNkZWZpbmUgTUFTS19BTU9BRERfRCAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9YT1JfRCAweDIwMDAzMDJmCisjZGVmaW5lIE1BU0tfQU1PWE9SX0QgIDB4ZjgwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfQU1PT1JfRCAweDQwMDAzMDJmCisjZGVmaW5lIE1BU0tfQU1PT1JfRCAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9BTkRfRCAweDYwMDAzMDJmCisjZGVmaW5lIE1BU0tfQU1PQU5EX0QgIDB4ZjgwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfQU1PTUlOX0QgMHg4MDAwMzAyZgorI2RlZmluZSBNQVNLX0FNT01JTl9EICAweGY4MDA3MDdmCisjZGVmaW5lIE1BVENIX0FNT01BWF9EIDB4YTAwMDMwMmYKKyNkZWZpbmUgTUFTS19BTU9NQVhfRCAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9NSU5VX0QgMHhjMDAwMzAyZgorI2RlZmluZSBNQVNLX0FNT01JTlVfRCAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9NQVhVX0QgMHhlMDAwMzAyZgorI2RlZmluZSBNQVNLX0FNT01BWFVfRCAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9BTU9TV0FQX0QgMHg4MDAzMDJmCisjZGVmaW5lIE1BU0tfQU1PU1dBUF9EICAweGY4MDA3MDdmCisjZGVmaW5lIE1BVENIX0xSX0QgMHgxMDAwMzAyZgorI2RlZmluZSBNQVNLX0xSX0QgIDB4ZjlmMDcwN2YKKyNkZWZpbmUgTUFUQ0hfU0NfRCAweDE4MDAzMDJmCisjZGVmaW5lIE1BU0tfU0NfRCAgMHhmODAwNzA3ZgorI2RlZmluZSBNQVRDSF9FQ0FMTCAweDczCisjZGVmaW5lIE1BU0tfRUNBTEwgIDB4ZmZmZmZmZmYKKyNkZWZpbmUgTUFUQ0hfRUJSRUFLIDB4MTAwMDczCisjZGVmaW5lIE1BU0tfRUJSRUFLICAweGZmZmZmZmZmCisjZGVmaW5lIE1BVENIX1VSRVQgMHgyMDAwNzMKKyNkZWZpbmUgTUFTS19VUkVUICAweGZmZmZmZmZmCisjZGVmaW5lIE1BVENIX1NSRVQgMHgxMDIwMDA3MworI2RlZmluZSBNQVNLX1NSRVQgIDB4ZmZmZmZmZmYKKyNkZWZpbmUgTUFUQ0hfTVJFVCAweDMwMjAwMDczCisjZGVmaW5lIE1BU0tfTVJFVCAgMHhmZmZmZmZmZgorI2RlZmluZSBNQVRDSF9EUkVUIDB4N2IyMDAwNzMKKyNkZWZpbmUgTUFTS19EUkVUICAweGZmZmZmZmZmCisjZGVmaW5lIE1BVENIX1NGRU5DRV9WTUEgMHgxMjAwMDA3MworI2RlZmluZSBNQVNLX1NGRU5DRV9WTUEgIDB4ZmUwMDdmZmYKKyNkZWZpbmUgTUFUQ0hfV0ZJIDB4MTA1MDAwNzMKKyNkZWZpbmUgTUFTS19XRkkgIDB4ZmZmZmZmZmYKKyNkZWZpbmUgTUFUQ0hfQ1NSUlcgMHgxMDczCisjZGVmaW5lIE1BU0tfQ1NSUlcgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DU1JSUyAweDIwNzMKKyNkZWZpbmUgTUFTS19DU1JSUyAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NTUlJDIDB4MzA3MworI2RlZmluZSBNQVNLX0NTUlJDICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQ1NSUldJIDB4NTA3MworI2RlZmluZSBNQVNLX0NTUlJXSSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NTUlJTSSAweDYwNzMKKyNkZWZpbmUgTUFTS19DU1JSU0kgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DU1JSQ0kgMHg3MDczCisjZGVmaW5lIE1BU0tfQ1NSUkNJICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkFERF9TIDB4NTMKKyNkZWZpbmUgTUFTS19GQUREX1MgIDB4ZmUwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRlNVQl9TIDB4ODAwMDA1MworI2RlZmluZSBNQVNLX0ZTVUJfUyAgMHhmZTAwMDA3ZgorI2RlZmluZSBNQVRDSF9GTVVMX1MgMHgxMDAwMDA1MworI2RlZmluZSBNQVNLX0ZNVUxfUyAgMHhmZTAwMDA3ZgorI2RlZmluZSBNQVRDSF9GRElWX1MgMHgxODAwMDA1MworI2RlZmluZSBNQVNLX0ZESVZfUyAgMHhmZTAwMDA3ZgorI2RlZmluZSBNQVRDSF9GU0dOSl9TIDB4MjAwMDAwNTMKKyNkZWZpbmUgTUFTS19GU0dOSl9TICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZTR05KTl9TIDB4MjAwMDEwNTMKKyNkZWZpbmUgTUFTS19GU0dOSk5fUyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9GU0dOSlhfUyAweDIwMDAyMDUzCisjZGVmaW5lIE1BU0tfRlNHTkpYX1MgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRk1JTl9TIDB4MjgwMDAwNTMKKyNkZWZpbmUgTUFTS19GTUlOX1MgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRk1BWF9TIDB4MjgwMDEwNTMKKyNkZWZpbmUgTUFTS19GTUFYX1MgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRlNRUlRfUyAweDU4MDAwMDUzCisjZGVmaW5lIE1BU0tfRlNRUlRfUyAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQUREX0QgMHgyMDAwMDUzCisjZGVmaW5lIE1BU0tfRkFERF9EICAweGZlMDAwMDdmCisjZGVmaW5lIE1BVENIX0ZTVUJfRCAweGEwMDAwNTMKKyNkZWZpbmUgTUFTS19GU1VCX0QgIDB4ZmUwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk1VTF9EIDB4MTIwMDAwNTMKKyNkZWZpbmUgTUFTS19GTVVMX0QgIDB4ZmUwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkRJVl9EIDB4MWEwMDAwNTMKKyNkZWZpbmUgTUFTS19GRElWX0QgIDB4ZmUwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRlNHTkpfRCAweDIyMDAwMDUzCisjZGVmaW5lIE1BU0tfRlNHTkpfRCAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9GU0dOSk5fRCAweDIyMDAxMDUzCisjZGVmaW5lIE1BU0tfRlNHTkpOX0QgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRlNHTkpYX0QgMHgyMjAwMjA1MworI2RlZmluZSBNQVNLX0ZTR05KWF9EICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZNSU5fRCAweDJhMDAwMDUzCisjZGVmaW5lIE1BU0tfRk1JTl9EICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZNQVhfRCAweDJhMDAxMDUzCisjZGVmaW5lIE1BU0tfRk1BWF9EICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfU19EIDB4NDAxMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1NfRCAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX0RfUyAweDQyMDAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9EX1MgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRlNRUlRfRCAweDVhMDAwMDUzCisjZGVmaW5lIE1BU0tfRlNRUlRfRCAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQUREX1EgMHg2MDAwMDUzCisjZGVmaW5lIE1BU0tfRkFERF9RICAweGZlMDAwMDdmCisjZGVmaW5lIE1BVENIX0ZTVUJfUSAweGUwMDAwNTMKKyNkZWZpbmUgTUFTS19GU1VCX1EgIDB4ZmUwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk1VTF9RIDB4MTYwMDAwNTMKKyNkZWZpbmUgTUFTS19GTVVMX1EgIDB4ZmUwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkRJVl9RIDB4MWUwMDAwNTMKKyNkZWZpbmUgTUFTS19GRElWX1EgIDB4ZmUwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRlNHTkpfUSAweDI2MDAwMDUzCisjZGVmaW5lIE1BU0tfRlNHTkpfUSAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9GU0dOSk5fUSAweDI2MDAxMDUzCisjZGVmaW5lIE1BU0tfRlNHTkpOX1EgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRlNHTkpYX1EgMHgyNjAwMjA1MworI2RlZmluZSBNQVNLX0ZTR05KWF9RICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZNSU5fUSAweDJlMDAwMDUzCisjZGVmaW5lIE1BU0tfRk1JTl9RICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZNQVhfUSAweDJlMDAxMDUzCisjZGVmaW5lIE1BU0tfRk1BWF9RICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfU19RIDB4NDAzMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1NfUSAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX1FfUyAweDQ2MDAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9RX1MgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9EX1EgMHg0MjMwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfRF9RICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfUV9EIDB4NDYxMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1FfRCAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GU1FSVF9RIDB4NWUwMDAwNTMKKyNkZWZpbmUgTUFTS19GU1FSVF9RICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZMRV9TIDB4YTAwMDAwNTMKKyNkZWZpbmUgTUFTS19GTEVfUyAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9GTFRfUyAweGEwMDAxMDUzCisjZGVmaW5lIE1BU0tfRkxUX1MgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkVRX1MgMHhhMDAwMjA1MworI2RlZmluZSBNQVNLX0ZFUV9TICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZMRV9EIDB4YTIwMDAwNTMKKyNkZWZpbmUgTUFTS19GTEVfRCAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9GTFRfRCAweGEyMDAxMDUzCisjZGVmaW5lIE1BU0tfRkxUX0QgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkVRX0QgMHhhMjAwMjA1MworI2RlZmluZSBNQVNLX0ZFUV9EICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZMRV9RIDB4YTYwMDAwNTMKKyNkZWZpbmUgTUFTS19GTEVfUSAgMHhmZTAwNzA3ZgorI2RlZmluZSBNQVRDSF9GTFRfUSAweGE2MDAxMDUzCisjZGVmaW5lIE1BU0tfRkxUX1EgIDB4ZmUwMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkVRX1EgMHhhNjAwMjA1MworI2RlZmluZSBNQVNLX0ZFUV9RICAweGZlMDA3MDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfV19TIDB4YzAwMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1dfUyAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX1dVX1MgMHhjMDEwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfV1VfUyAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX0xfUyAweGMwMjAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9MX1MgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9MVV9TIDB4YzAzMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX0xVX1MgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk1WX1hfVyAweGUwMDAwMDUzCisjZGVmaW5lIE1BU0tfRk1WX1hfVyAgMHhmZmYwNzA3ZgorI2RlZmluZSBNQVRDSF9GQ0xBU1NfUyAweGUwMDAxMDUzCisjZGVmaW5lIE1BU0tfRkNMQVNTX1MgIDB4ZmZmMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9XX0QgMHhjMjAwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfV19EICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfV1VfRCAweGMyMTAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9XVV9EICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfTF9EIDB4YzIyMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX0xfRCAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX0xVX0QgMHhjMjMwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfTFVfRCAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GTVZfWF9EIDB4ZTIwMDAwNTMKKyNkZWZpbmUgTUFTS19GTVZfWF9EICAweGZmZjA3MDdmCisjZGVmaW5lIE1BVENIX0ZDTEFTU19EIDB4ZTIwMDEwNTMKKyNkZWZpbmUgTUFTS19GQ0xBU1NfRCAgMHhmZmYwNzA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX1dfUSAweGM2MDAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9XX1EgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9XVV9RIDB4YzYxMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1dVX1EgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9MX1EgMHhjNjIwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfTF9RICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfTFVfUSAweGM2MzAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9MVV9RICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZNVl9YX1EgMHhlNjAwMDA1MworI2RlZmluZSBNQVNLX0ZNVl9YX1EgIDB4ZmZmMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkNMQVNTX1EgMHhlNjAwMTA1MworI2RlZmluZSBNQVNLX0ZDTEFTU19RICAweGZmZjA3MDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfU19XIDB4ZDAwMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1NfVyAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX1NfV1UgMHhkMDEwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfU19XVSAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX1NfTCAweGQwMjAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9TX0wgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9TX0xVIDB4ZDAzMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1NfTFUgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk1WX1dfWCAweGYwMDAwMDUzCisjZGVmaW5lIE1BU0tfRk1WX1dfWCAgMHhmZmYwNzA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX0RfVyAweGQyMDAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9EX1cgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9EX1dVIDB4ZDIxMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX0RfV1UgIDB4ZmZmMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9EX0wgMHhkMjIwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfRF9MICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfRF9MVSAweGQyMzAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9EX0xVICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZNVl9EX1ggMHhmMjAwMDA1MworI2RlZmluZSBNQVNLX0ZNVl9EX1ggIDB4ZmZmMDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkNWVF9RX1cgMHhkNjAwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfUV9XICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfUV9XVSAweGQ2MTAwMDUzCisjZGVmaW5lIE1BU0tfRkNWVF9RX1dVICAweGZmZjAwMDdmCisjZGVmaW5lIE1BVENIX0ZDVlRfUV9MIDB4ZDYyMDAwNTMKKyNkZWZpbmUgTUFTS19GQ1ZUX1FfTCAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GQ1ZUX1FfTFUgMHhkNjMwMDA1MworI2RlZmluZSBNQVNLX0ZDVlRfUV9MVSAgMHhmZmYwMDA3ZgorI2RlZmluZSBNQVRDSF9GTVZfUV9YIDB4ZjYwMDAwNTMKKyNkZWZpbmUgTUFTS19GTVZfUV9YICAweGZmZjA3MDdmCisjZGVmaW5lIE1BVENIX0ZMVyAweDIwMDcKKyNkZWZpbmUgTUFTS19GTFcgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9GTEQgMHgzMDA3CisjZGVmaW5lIE1BU0tfRkxEICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfRkxRIDB4NDAwNworI2RlZmluZSBNQVNLX0ZMUSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0ZTVyAweDIwMjcKKyNkZWZpbmUgTUFTS19GU1cgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9GU0QgMHgzMDI3CisjZGVmaW5lIE1BU0tfRlNEICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfRlNRIDB4NDAyNworI2RlZmluZSBNQVNLX0ZTUSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0ZNQUREX1MgMHg0MworI2RlZmluZSBNQVNLX0ZNQUREX1MgIDB4NjAwMDA3ZgorI2RlZmluZSBNQVRDSF9GTVNVQl9TIDB4NDcKKyNkZWZpbmUgTUFTS19GTVNVQl9TICAweDYwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk5NU1VCX1MgMHg0YgorI2RlZmluZSBNQVNLX0ZOTVNVQl9TICAweDYwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk5NQUREX1MgMHg0ZgorI2RlZmluZSBNQVNLX0ZOTUFERF9TICAweDYwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk1BRERfRCAweDIwMDAwNDMKKyNkZWZpbmUgTUFTS19GTUFERF9EICAweDYwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk1TVUJfRCAweDIwMDAwNDcKKyNkZWZpbmUgTUFTS19GTVNVQl9EICAweDYwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk5NU1VCX0QgMHgyMDAwMDRiCisjZGVmaW5lIE1BU0tfRk5NU1VCX0QgIDB4NjAwMDA3ZgorI2RlZmluZSBNQVRDSF9GTk1BRERfRCAweDIwMDAwNGYKKyNkZWZpbmUgTUFTS19GTk1BRERfRCAgMHg2MDAwMDdmCisjZGVmaW5lIE1BVENIX0ZNQUREX1EgMHg2MDAwMDQzCisjZGVmaW5lIE1BU0tfRk1BRERfUSAgMHg2MDAwMDdmCisjZGVmaW5lIE1BVENIX0ZNU1VCX1EgMHg2MDAwMDQ3CisjZGVmaW5lIE1BU0tfRk1TVUJfUSAgMHg2MDAwMDdmCisjZGVmaW5lIE1BVENIX0ZOTVNVQl9RIDB4NjAwMDA0YgorI2RlZmluZSBNQVNLX0ZOTVNVQl9RICAweDYwMDAwN2YKKyNkZWZpbmUgTUFUQ0hfRk5NQUREX1EgMHg2MDAwMDRmCisjZGVmaW5lIE1BU0tfRk5NQUREX1EgIDB4NjAwMDA3ZgorI2RlZmluZSBNQVRDSF9DX05PUCAweDEKKyNkZWZpbmUgTUFTS19DX05PUCAgMHhmZmZmCisjZGVmaW5lIE1BVENIX0NfQURESTE2U1AgMHg2MTAxCisjZGVmaW5lIE1BU0tfQ19BRERJMTZTUCAgMHhlZjgzCisjZGVmaW5lIE1BVENIX0NfSlIgMHg4MDAyCisjZGVmaW5lIE1BU0tfQ19KUiAgMHhmMDdmCisjZGVmaW5lIE1BVENIX0NfSkFMUiAweDkwMDIKKyNkZWZpbmUgTUFTS19DX0pBTFIgIDB4ZjA3ZgorI2RlZmluZSBNQVRDSF9DX0VCUkVBSyAweDkwMDIKKyNkZWZpbmUgTUFTS19DX0VCUkVBSyAgMHhmZmZmCisjZGVmaW5lIE1BVENIX0NfTEQgMHg2MDAwCisjZGVmaW5lIE1BU0tfQ19MRCAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfU0QgMHhlMDAwCisjZGVmaW5lIE1BU0tfQ19TRCAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfQURESVcgMHgyMDAxCisjZGVmaW5lIE1BU0tfQ19BRERJVyAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfTERTUCAweDYwMDIKKyNkZWZpbmUgTUFTS19DX0xEU1AgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX1NEU1AgMHhlMDAyCisjZGVmaW5lIE1BU0tfQ19TRFNQICAweGUwMDMKKyNkZWZpbmUgTUFUQ0hfQ19BRERJNFNQTiAweDAKKyNkZWZpbmUgTUFTS19DX0FEREk0U1BOICAweGUwMDMKKyNkZWZpbmUgTUFUQ0hfQ19GTEQgMHgyMDAwCisjZGVmaW5lIE1BU0tfQ19GTEQgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0xXIDB4NDAwMAorI2RlZmluZSBNQVNLX0NfTFcgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0ZMVyAweDYwMDAKKyNkZWZpbmUgTUFTS19DX0ZMVyAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfRlNEIDB4YTAwMAorI2RlZmluZSBNQVNLX0NfRlNEICAweGUwMDMKKyNkZWZpbmUgTUFUQ0hfQ19TVyAweGMwMDAKKyNkZWZpbmUgTUFTS19DX1NXICAweGUwMDMKKyNkZWZpbmUgTUFUQ0hfQ19GU1cgMHhlMDAwCisjZGVmaW5lIE1BU0tfQ19GU1cgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0FEREkgMHgxCisjZGVmaW5lIE1BU0tfQ19BRERJICAweGUwMDMKKyNkZWZpbmUgTUFUQ0hfQ19KQUwgMHgyMDAxCisjZGVmaW5lIE1BU0tfQ19KQUwgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0xJIDB4NDAwMQorI2RlZmluZSBNQVNLX0NfTEkgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0xVSSAweDYwMDEKKyNkZWZpbmUgTUFTS19DX0xVSSAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfU1JMSSAweDgwMDEKKyNkZWZpbmUgTUFTS19DX1NSTEkgIDB4ZWMwMworI2RlZmluZSBNQVRDSF9DX1NSQUkgMHg4NDAxCisjZGVmaW5lIE1BU0tfQ19TUkFJICAweGVjMDMKKyNkZWZpbmUgTUFUQ0hfQ19BTkRJIDB4ODgwMQorI2RlZmluZSBNQVNLX0NfQU5ESSAgMHhlYzAzCisjZGVmaW5lIE1BVENIX0NfU1VCIDB4OGMwMQorI2RlZmluZSBNQVNLX0NfU1VCICAweGZjNjMKKyNkZWZpbmUgTUFUQ0hfQ19YT1IgMHg4YzIxCisjZGVmaW5lIE1BU0tfQ19YT1IgIDB4ZmM2MworI2RlZmluZSBNQVRDSF9DX09SIDB4OGM0MQorI2RlZmluZSBNQVNLX0NfT1IgIDB4ZmM2MworI2RlZmluZSBNQVRDSF9DX0FORCAweDhjNjEKKyNkZWZpbmUgTUFTS19DX0FORCAgMHhmYzYzCisjZGVmaW5lIE1BVENIX0NfU1VCVyAweDljMDEKKyNkZWZpbmUgTUFTS19DX1NVQlcgIDB4ZmM2MworI2RlZmluZSBNQVRDSF9DX0FERFcgMHg5YzIxCisjZGVmaW5lIE1BU0tfQ19BRERXICAweGZjNjMKKyNkZWZpbmUgTUFUQ0hfQ19KIDB4YTAwMQorI2RlZmluZSBNQVNLX0NfSiAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfQkVRWiAweGMwMDEKKyNkZWZpbmUgTUFTS19DX0JFUVogIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0JORVogMHhlMDAxCisjZGVmaW5lIE1BU0tfQ19CTkVaICAweGUwMDMKKyNkZWZpbmUgTUFUQ0hfQ19TTExJIDB4MgorI2RlZmluZSBNQVNLX0NfU0xMSSAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfRkxEU1AgMHgyMDAyCisjZGVmaW5lIE1BU0tfQ19GTERTUCAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfTFdTUCAweDQwMDIKKyNkZWZpbmUgTUFTS19DX0xXU1AgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0ZMV1NQIDB4NjAwMgorI2RlZmluZSBNQVNLX0NfRkxXU1AgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX01WIDB4ODAwMgorI2RlZmluZSBNQVNLX0NfTVYgIDB4ZjAwMworI2RlZmluZSBNQVRDSF9DX0FERCAweDkwMDIKKyNkZWZpbmUgTUFTS19DX0FERCAgMHhmMDAzCisjZGVmaW5lIE1BVENIX0NfRlNEU1AgMHhhMDAyCisjZGVmaW5lIE1BU0tfQ19GU0RTUCAgMHhlMDAzCisjZGVmaW5lIE1BVENIX0NfU1dTUCAweGMwMDIKKyNkZWZpbmUgTUFTS19DX1NXU1AgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DX0ZTV1NQIDB4ZTAwMgorI2RlZmluZSBNQVNLX0NfRlNXU1AgIDB4ZTAwMworI2RlZmluZSBNQVRDSF9DVVNUT00wIDB4YgorI2RlZmluZSBNQVNLX0NVU1RPTTAgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00wX1JTMSAweDIwMGIKKyNkZWZpbmUgTUFTS19DVVNUT00wX1JTMSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTBfUlMxX1JTMiAweDMwMGIKKyNkZWZpbmUgTUFTS19DVVNUT00wX1JTMV9SUzIgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00wX1JEIDB4NDAwYgorI2RlZmluZSBNQVNLX0NVU1RPTTBfUkQgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00wX1JEX1JTMSAweDYwMGIKKyNkZWZpbmUgTUFTS19DVVNUT00wX1JEX1JTMSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTBfUkRfUlMxX1JTMiAweDcwMGIKKyNkZWZpbmUgTUFTS19DVVNUT00wX1JEX1JTMV9SUzIgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00xIDB4MmIKKyNkZWZpbmUgTUFTS19DVVNUT00xICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQ1VTVE9NMV9SUzEgMHgyMDJiCisjZGVmaW5lIE1BU0tfQ1VTVE9NMV9SUzEgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00xX1JTMV9SUzIgMHgzMDJiCisjZGVmaW5lIE1BU0tfQ1VTVE9NMV9SUzFfUlMyICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQ1VTVE9NMV9SRCAweDQwMmIKKyNkZWZpbmUgTUFTS19DVVNUT00xX1JEICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQ1VTVE9NMV9SRF9SUzEgMHg2MDJiCisjZGVmaW5lIE1BU0tfQ1VTVE9NMV9SRF9SUzEgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00xX1JEX1JTMV9SUzIgMHg3MDJiCisjZGVmaW5lIE1BU0tfQ1VTVE9NMV9SRF9SUzFfUlMyICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQ1VTVE9NMiAweDViCisjZGVmaW5lIE1BU0tfQ1VTVE9NMiAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTJfUlMxIDB4MjA1YgorI2RlZmluZSBNQVNLX0NVU1RPTTJfUlMxICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQ1VTVE9NMl9SUzFfUlMyIDB4MzA1YgorI2RlZmluZSBNQVNLX0NVU1RPTTJfUlMxX1JTMiAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTJfUkQgMHg0MDViCisjZGVmaW5lIE1BU0tfQ1VTVE9NMl9SRCAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTJfUkRfUlMxIDB4NjA1YgorI2RlZmluZSBNQVNLX0NVU1RPTTJfUkRfUlMxICAweDcwN2YKKyNkZWZpbmUgTUFUQ0hfQ1VTVE9NMl9SRF9SUzFfUlMyIDB4NzA1YgorI2RlZmluZSBNQVNLX0NVU1RPTTJfUkRfUlMxX1JTMiAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTMgMHg3YgorI2RlZmluZSBNQVNLX0NVU1RPTTMgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00zX1JTMSAweDIwN2IKKyNkZWZpbmUgTUFTS19DVVNUT00zX1JTMSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTNfUlMxX1JTMiAweDMwN2IKKyNkZWZpbmUgTUFTS19DVVNUT00zX1JTMV9SUzIgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00zX1JEIDB4NDA3YgorI2RlZmluZSBNQVNLX0NVU1RPTTNfUkQgIDB4NzA3ZgorI2RlZmluZSBNQVRDSF9DVVNUT00zX1JEX1JTMSAweDYwN2IKKyNkZWZpbmUgTUFTS19DVVNUT00zX1JEX1JTMSAgMHg3MDdmCisjZGVmaW5lIE1BVENIX0NVU1RPTTNfUkRfUlMxX1JTMiAweDcwN2IKKyNkZWZpbmUgTUFTS19DVVNUT00zX1JEX1JTMV9SUzIgIDB4NzA3ZgorI2RlZmluZSBDU1JfRkZMQUdTIDB4MQorI2RlZmluZSBDU1JfRlJNIDB4MgorI2RlZmluZSBDU1JfRkNTUiAweDMKKyNkZWZpbmUgQ1NSX0NZQ0xFIDB4YzAwCisjZGVmaW5lIENTUl9USU1FIDB4YzAxCisjZGVmaW5lIENTUl9JTlNUUkVUIDB4YzAyCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMyAweGMwMworI2RlZmluZSBDU1JfSFBNQ09VTlRFUjQgMHhjMDQKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVI1IDB4YzA1CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSNiAweGMwNgorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjcgMHhjMDcKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVI4IDB4YzA4CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSOSAweGMwOQorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjEwIDB4YzBhCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTEgMHhjMGIKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVIxMiAweGMwYworI2RlZmluZSBDU1JfSFBNQ09VTlRFUjEzIDB4YzBkCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTQgMHhjMGUKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVIxNSAweGMwZgorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjE2IDB4YzEwCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTcgMHhjMTEKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVIxOCAweGMxMgorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjE5IDB4YzEzCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjAgMHhjMTQKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVIyMSAweGMxNQorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjIyIDB4YzE2CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjMgMHhjMTcKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVIyNCAweGMxOAorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjI1IDB4YzE5CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjYgMHhjMWEKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVIyNyAweGMxYgorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjI4IDB4YzFjCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjkgMHhjMWQKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVIzMCAweGMxZQorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjMxIDB4YzFmCisjZGVmaW5lIENTUl9TU1RBVFVTIDB4MTAwCisjZGVmaW5lIENTUl9TSUUgMHgxMDQKKyNkZWZpbmUgQ1NSX1NUVkVDIDB4MTA1CisjZGVmaW5lIENTUl9TQ09VTlRFUkVOIDB4MTA2CisjZGVmaW5lIENTUl9TU0NSQVRDSCAweDE0MAorI2RlZmluZSBDU1JfU0VQQyAweDE0MQorI2RlZmluZSBDU1JfU0NBVVNFIDB4MTQyCisjZGVmaW5lIENTUl9TQkFEQUREUiAweDE0MworI2RlZmluZSBDU1JfU0lQIDB4MTQ0CisjZGVmaW5lIENTUl9TUFRCUiAweDE4MAorI2RlZmluZSBDU1JfTVNUQVRVUyAweDMwMAorI2RlZmluZSBDU1JfTUlTQSAweDMwMQorI2RlZmluZSBDU1JfTUVERUxFRyAweDMwMgorI2RlZmluZSBDU1JfTUlERUxFRyAweDMwMworI2RlZmluZSBDU1JfTUlFIDB4MzA0CisjZGVmaW5lIENTUl9NVFZFQyAweDMwNQorI2RlZmluZSBDU1JfTUNPVU5URVJFTiAweDMwNgorI2RlZmluZSBDU1JfTVNDUkFUQ0ggMHgzNDAKKyNkZWZpbmUgQ1NSX01FUEMgMHgzNDEKKyNkZWZpbmUgQ1NSX01DQVVTRSAweDM0MgorI2RlZmluZSBDU1JfTUJBREFERFIgMHgzNDMKKyNkZWZpbmUgQ1NSX01JUCAweDM0NAorI2RlZmluZSBDU1JfUE1QQ0ZHMCAweDNhMAorI2RlZmluZSBDU1JfUE1QQ0ZHMSAweDNhMQorI2RlZmluZSBDU1JfUE1QQ0ZHMiAweDNhMgorI2RlZmluZSBDU1JfUE1QQ0ZHMyAweDNhMworI2RlZmluZSBDU1JfUE1QQUREUjAgMHgzYjAKKyNkZWZpbmUgQ1NSX1BNUEFERFIxIDB4M2IxCisjZGVmaW5lIENTUl9QTVBBRERSMiAweDNiMgorI2RlZmluZSBDU1JfUE1QQUREUjMgMHgzYjMKKyNkZWZpbmUgQ1NSX1BNUEFERFI0IDB4M2I0CisjZGVmaW5lIENTUl9QTVBBRERSNSAweDNiNQorI2RlZmluZSBDU1JfUE1QQUREUjYgMHgzYjYKKyNkZWZpbmUgQ1NSX1BNUEFERFI3IDB4M2I3CisjZGVmaW5lIENTUl9QTVBBRERSOCAweDNiOAorI2RlZmluZSBDU1JfUE1QQUREUjkgMHgzYjkKKyNkZWZpbmUgQ1NSX1BNUEFERFIxMCAweDNiYQorI2RlZmluZSBDU1JfUE1QQUREUjExIDB4M2JiCisjZGVmaW5lIENTUl9QTVBBRERSMTIgMHgzYmMKKyNkZWZpbmUgQ1NSX1BNUEFERFIxMyAweDNiZAorI2RlZmluZSBDU1JfUE1QQUREUjE0IDB4M2JlCisjZGVmaW5lIENTUl9QTVBBRERSMTUgMHgzYmYKKyNkZWZpbmUgQ1NSX1RTRUxFQ1QgMHg3YTAKKyNkZWZpbmUgQ1NSX1REQVRBMSAweDdhMQorI2RlZmluZSBDU1JfVERBVEEyIDB4N2EyCisjZGVmaW5lIENTUl9UREFUQTMgMHg3YTMKKyNkZWZpbmUgQ1NSX0RDU1IgMHg3YjAKKyNkZWZpbmUgQ1NSX0RQQyAweDdiMQorI2RlZmluZSBDU1JfRFNDUkFUQ0ggMHg3YjIKKyNkZWZpbmUgQ1NSX01DWUNMRSAweGIwMAorI2RlZmluZSBDU1JfTUlOU1RSRVQgMHhiMDIKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMyAweGIwMworI2RlZmluZSBDU1JfTUhQTUNPVU5URVI0IDB4YjA0CisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjUgMHhiMDUKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSNiAweGIwNgorI2RlZmluZSBDU1JfTUhQTUNPVU5URVI3IDB4YjA3CisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjggMHhiMDgKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSOSAweGIwOQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxMCAweGIwYQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxMSAweGIwYgorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxMiAweGIwYworI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxMyAweGIwZAorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxNCAweGIwZQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxNSAweGIwZgorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxNiAweGIxMAorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxNyAweGIxMQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxOCAweGIxMgorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxOSAweGIxMworI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyMCAweGIxNAorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyMSAweGIxNQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyMiAweGIxNgorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyMyAweGIxNworI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyNCAweGIxOAorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyNSAweGIxOQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyNiAweGIxYQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyNyAweGIxYgorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyOCAweGIxYworI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyOSAweGIxZAorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIzMCAweGIxZQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIzMSAweGIxZgorI2RlZmluZSBDU1JfTUhQTUVWRU5UMyAweDMyMworI2RlZmluZSBDU1JfTUhQTUVWRU5UNCAweDMyNAorI2RlZmluZSBDU1JfTUhQTUVWRU5UNSAweDMyNQorI2RlZmluZSBDU1JfTUhQTUVWRU5UNiAweDMyNgorI2RlZmluZSBDU1JfTUhQTUVWRU5UNyAweDMyNworI2RlZmluZSBDU1JfTUhQTUVWRU5UOCAweDMyOAorI2RlZmluZSBDU1JfTUhQTUVWRU5UOSAweDMyOQorI2RlZmluZSBDU1JfTUhQTUVWRU5UMTAgMHgzMmEKKyNkZWZpbmUgQ1NSX01IUE1FVkVOVDExIDB4MzJiCisjZGVmaW5lIENTUl9NSFBNRVZFTlQxMiAweDMyYworI2RlZmluZSBDU1JfTUhQTUVWRU5UMTMgMHgzMmQKKyNkZWZpbmUgQ1NSX01IUE1FVkVOVDE0IDB4MzJlCisjZGVmaW5lIENTUl9NSFBNRVZFTlQxNSAweDMyZgorI2RlZmluZSBDU1JfTUhQTUVWRU5UMTYgMHgzMzAKKyNkZWZpbmUgQ1NSX01IUE1FVkVOVDE3IDB4MzMxCisjZGVmaW5lIENTUl9NSFBNRVZFTlQxOCAweDMzMgorI2RlZmluZSBDU1JfTUhQTUVWRU5UMTkgMHgzMzMKKyNkZWZpbmUgQ1NSX01IUE1FVkVOVDIwIDB4MzM0CisjZGVmaW5lIENTUl9NSFBNRVZFTlQyMSAweDMzNQorI2RlZmluZSBDU1JfTUhQTUVWRU5UMjIgMHgzMzYKKyNkZWZpbmUgQ1NSX01IUE1FVkVOVDIzIDB4MzM3CisjZGVmaW5lIENTUl9NSFBNRVZFTlQyNCAweDMzOAorI2RlZmluZSBDU1JfTUhQTUVWRU5UMjUgMHgzMzkKKyNkZWZpbmUgQ1NSX01IUE1FVkVOVDI2IDB4MzNhCisjZGVmaW5lIENTUl9NSFBNRVZFTlQyNyAweDMzYgorI2RlZmluZSBDU1JfTUhQTUVWRU5UMjggMHgzM2MKKyNkZWZpbmUgQ1NSX01IUE1FVkVOVDI5IDB4MzNkCisjZGVmaW5lIENTUl9NSFBNRVZFTlQzMCAweDMzZQorI2RlZmluZSBDU1JfTUhQTUVWRU5UMzEgMHgzM2YKKyNkZWZpbmUgQ1NSX01WRU5ET1JJRCAweGYxMQorI2RlZmluZSBDU1JfTUFSQ0hJRCAweGYxMgorI2RlZmluZSBDU1JfTUlNUElEIDB4ZjEzCisjZGVmaW5lIENTUl9NSEFSVElEIDB4ZjE0CisjZGVmaW5lIENTUl9DWUNMRUggMHhjODAKKyNkZWZpbmUgQ1NSX1RJTUVIIDB4YzgxCisjZGVmaW5lIENTUl9JTlNUUkVUSCAweGM4MgorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjNIIDB4YzgzCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSNEggMHhjODQKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVI1SCAweGM4NQorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjZIIDB4Yzg2CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSN0ggMHhjODcKKyNkZWZpbmUgQ1NSX0hQTUNPVU5URVI4SCAweGM4OAorI2RlZmluZSBDU1JfSFBNQ09VTlRFUjlIIDB4Yzg5CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTBIIDB4YzhhCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTFIIDB4YzhiCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTJIIDB4YzhjCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTNIIDB4YzhkCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTRIIDB4YzhlCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTVIIDB4YzhmCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTZIIDB4YzkwCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTdIIDB4YzkxCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMThIIDB4YzkyCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMTlIIDB4YzkzCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjBIIDB4Yzk0CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjFIIDB4Yzk1CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjJIIDB4Yzk2CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjNIIDB4Yzk3CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjRIIDB4Yzk4CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjVIIDB4Yzk5CisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjZIIDB4YzlhCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjdIIDB4YzliCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjhIIDB4YzljCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMjlIIDB4YzlkCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMzBIIDB4YzllCisjZGVmaW5lIENTUl9IUE1DT1VOVEVSMzFIIDB4YzlmCisjZGVmaW5lIENTUl9NQ1lDTEVIIDB4YjgwCisjZGVmaW5lIENTUl9NSU5TVFJFVEggMHhiODIKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSM0ggMHhiODMKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSNEggMHhiODQKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSNUggMHhiODUKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSNkggMHhiODYKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSN0ggMHhiODcKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSOEggMHhiODgKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSOUggMHhiODkKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMTBIIDB4YjhhCisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjExSCAweGI4YgorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxMkggMHhiOGMKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMTNIIDB4YjhkCisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjE0SCAweGI4ZQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxNUggMHhiOGYKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMTZIIDB4YjkwCisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjE3SCAweGI5MQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIxOEggMHhiOTIKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMTlIIDB4YjkzCisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjIwSCAweGI5NAorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyMUggMHhiOTUKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMjJIIDB4Yjk2CisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjIzSCAweGI5NworI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyNEggMHhiOTgKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMjVIIDB4Yjk5CisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjI2SCAweGI5YQorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIyN0ggMHhiOWIKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMjhIIDB4YjljCisjZGVmaW5lIENTUl9NSFBNQ09VTlRFUjI5SCAweGI5ZAorI2RlZmluZSBDU1JfTUhQTUNPVU5URVIzMEggMHhiOWUKKyNkZWZpbmUgQ1NSX01IUE1DT1VOVEVSMzFIIDB4YjlmCisjZGVmaW5lIENBVVNFX01JU0FMSUdORURfRkVUQ0ggMHgwCisjZGVmaW5lIENBVVNFX0ZFVENIX0FDQ0VTUyAweDEKKyNkZWZpbmUgQ0FVU0VfSUxMRUdBTF9JTlNUUlVDVElPTiAweDIKKyNkZWZpbmUgQ0FVU0VfQlJFQUtQT0lOVCAweDMKKyNkZWZpbmUgQ0FVU0VfTUlTQUxJR05FRF9MT0FEIDB4NAorI2RlZmluZSBDQVVTRV9MT0FEX0FDQ0VTUyAweDUKKyNkZWZpbmUgQ0FVU0VfTUlTQUxJR05FRF9TVE9SRSAweDYKKyNkZWZpbmUgQ0FVU0VfU1RPUkVfQUNDRVNTIDB4NworI2RlZmluZSBDQVVTRV9VU0VSX0VDQUxMIDB4OAorI2RlZmluZSBDQVVTRV9TVVBFUlZJU09SX0VDQUxMIDB4OQorI2RlZmluZSBDQVVTRV9IWVBFUlZJU09SX0VDQUxMIDB4YQorI2RlZmluZSBDQVVTRV9NQUNISU5FX0VDQUxMIDB4YgorI2RlZmluZSBDQVVTRV9GRVRDSF9QQUdFX0ZBVUxUIDB4YworI2RlZmluZSBDQVVTRV9MT0FEX1BBR0VfRkFVTFQgMHhkCisjZGVmaW5lIENBVVNFX1NUT1JFX1BBR0VfRkFVTFQgMHhmCisjZW5kaWYKKyNpZmRlZiBERUNMQVJFX0lOU04KK0RFQ0xBUkVfSU5TTihiZXEsIE1BVENIX0JFUSwgTUFTS19CRVEpCitERUNMQVJFX0lOU04oYm5lLCBNQVRDSF9CTkUsIE1BU0tfQk5FKQorREVDTEFSRV9JTlNOKGJsdCwgTUFUQ0hfQkxULCBNQVNLX0JMVCkKK0RFQ0xBUkVfSU5TTihiZ2UsIE1BVENIX0JHRSwgTUFTS19CR0UpCitERUNMQVJFX0lOU04oYmx0dSwgTUFUQ0hfQkxUVSwgTUFTS19CTFRVKQorREVDTEFSRV9JTlNOKGJnZXUsIE1BVENIX0JHRVUsIE1BU0tfQkdFVSkKK0RFQ0xBUkVfSU5TTihqYWxyLCBNQVRDSF9KQUxSLCBNQVNLX0pBTFIpCitERUNMQVJFX0lOU04oamFsLCBNQVRDSF9KQUwsIE1BU0tfSkFMKQorREVDTEFSRV9JTlNOKGx1aSwgTUFUQ0hfTFVJLCBNQVNLX0xVSSkKK0RFQ0xBUkVfSU5TTihhdWlwYywgTUFUQ0hfQVVJUEMsIE1BU0tfQVVJUEMpCitERUNMQVJFX0lOU04oYWRkaSwgTUFUQ0hfQURESSwgTUFTS19BRERJKQorREVDTEFSRV9JTlNOKHNsbGksIE1BVENIX1NMTEksIE1BU0tfU0xMSSkKK0RFQ0xBUkVfSU5TTihzbHRpLCBNQVRDSF9TTFRJLCBNQVNLX1NMVEkpCitERUNMQVJFX0lOU04oc2x0aXUsIE1BVENIX1NMVElVLCBNQVNLX1NMVElVKQorREVDTEFSRV9JTlNOKHhvcmksIE1BVENIX1hPUkksIE1BU0tfWE9SSSkKK0RFQ0xBUkVfSU5TTihzcmxpLCBNQVRDSF9TUkxJLCBNQVNLX1NSTEkpCitERUNMQVJFX0lOU04oc3JhaSwgTUFUQ0hfU1JBSSwgTUFTS19TUkFJKQorREVDTEFSRV9JTlNOKG9yaSwgTUFUQ0hfT1JJLCBNQVNLX09SSSkKK0RFQ0xBUkVfSU5TTihhbmRpLCBNQVRDSF9BTkRJLCBNQVNLX0FOREkpCitERUNMQVJFX0lOU04oYWRkLCBNQVRDSF9BREQsIE1BU0tfQUREKQorREVDTEFSRV9JTlNOKHN1YiwgTUFUQ0hfU1VCLCBNQVNLX1NVQikKK0RFQ0xBUkVfSU5TTihzbGwsIE1BVENIX1NMTCwgTUFTS19TTEwpCitERUNMQVJFX0lOU04oc2x0LCBNQVRDSF9TTFQsIE1BU0tfU0xUKQorREVDTEFSRV9JTlNOKHNsdHUsIE1BVENIX1NMVFUsIE1BU0tfU0xUVSkKK0RFQ0xBUkVfSU5TTih4b3IsIE1BVENIX1hPUiwgTUFTS19YT1IpCitERUNMQVJFX0lOU04oc3JsLCBNQVRDSF9TUkwsIE1BU0tfU1JMKQorREVDTEFSRV9JTlNOKHNyYSwgTUFUQ0hfU1JBLCBNQVNLX1NSQSkKK0RFQ0xBUkVfSU5TTihvciwgTUFUQ0hfT1IsIE1BU0tfT1IpCitERUNMQVJFX0lOU04oYW5kLCBNQVRDSF9BTkQsIE1BU0tfQU5EKQorREVDTEFSRV9JTlNOKGFkZGl3LCBNQVRDSF9BRERJVywgTUFTS19BRERJVykKK0RFQ0xBUkVfSU5TTihzbGxpdywgTUFUQ0hfU0xMSVcsIE1BU0tfU0xMSVcpCitERUNMQVJFX0lOU04oc3JsaXcsIE1BVENIX1NSTElXLCBNQVNLX1NSTElXKQorREVDTEFSRV9JTlNOKHNyYWl3LCBNQVRDSF9TUkFJVywgTUFTS19TUkFJVykKK0RFQ0xBUkVfSU5TTihhZGR3LCBNQVRDSF9BRERXLCBNQVNLX0FERFcpCitERUNMQVJFX0lOU04oc3VidywgTUFUQ0hfU1VCVywgTUFTS19TVUJXKQorREVDTEFSRV9JTlNOKHNsbHcsIE1BVENIX1NMTFcsIE1BU0tfU0xMVykKK0RFQ0xBUkVfSU5TTihzcmx3LCBNQVRDSF9TUkxXLCBNQVNLX1NSTFcpCitERUNMQVJFX0lOU04oc3JhdywgTUFUQ0hfU1JBVywgTUFTS19TUkFXKQorREVDTEFSRV9JTlNOKGxiLCBNQVRDSF9MQiwgTUFTS19MQikKK0RFQ0xBUkVfSU5TTihsaCwgTUFUQ0hfTEgsIE1BU0tfTEgpCitERUNMQVJFX0lOU04obHcsIE1BVENIX0xXLCBNQVNLX0xXKQorREVDTEFSRV9JTlNOKGxkLCBNQVRDSF9MRCwgTUFTS19MRCkKK0RFQ0xBUkVfSU5TTihsYnUsIE1BVENIX0xCVSwgTUFTS19MQlUpCitERUNMQVJFX0lOU04obGh1LCBNQVRDSF9MSFUsIE1BU0tfTEhVKQorREVDTEFSRV9JTlNOKGx3dSwgTUFUQ0hfTFdVLCBNQVNLX0xXVSkKK0RFQ0xBUkVfSU5TTihzYiwgTUFUQ0hfU0IsIE1BU0tfU0IpCitERUNMQVJFX0lOU04oc2gsIE1BVENIX1NILCBNQVNLX1NIKQorREVDTEFSRV9JTlNOKHN3LCBNQVRDSF9TVywgTUFTS19TVykKK0RFQ0xBUkVfSU5TTihzZCwgTUFUQ0hfU0QsIE1BU0tfU0QpCitERUNMQVJFX0lOU04oZmVuY2UsIE1BVENIX0ZFTkNFLCBNQVNLX0ZFTkNFKQorREVDTEFSRV9JTlNOKGZlbmNlX2ksIE1BVENIX0ZFTkNFX0ksIE1BU0tfRkVOQ0VfSSkKK0RFQ0xBUkVfSU5TTihtdWwsIE1BVENIX01VTCwgTUFTS19NVUwpCitERUNMQVJFX0lOU04obXVsaCwgTUFUQ0hfTVVMSCwgTUFTS19NVUxIKQorREVDTEFSRV9JTlNOKG11bGhzdSwgTUFUQ0hfTVVMSFNVLCBNQVNLX01VTEhTVSkKK0RFQ0xBUkVfSU5TTihtdWxodSwgTUFUQ0hfTVVMSFUsIE1BU0tfTVVMSFUpCitERUNMQVJFX0lOU04oZGl2LCBNQVRDSF9ESVYsIE1BU0tfRElWKQorREVDTEFSRV9JTlNOKGRpdnUsIE1BVENIX0RJVlUsIE1BU0tfRElWVSkKK0RFQ0xBUkVfSU5TTihyZW0sIE1BVENIX1JFTSwgTUFTS19SRU0pCitERUNMQVJFX0lOU04ocmVtdSwgTUFUQ0hfUkVNVSwgTUFTS19SRU1VKQorREVDTEFSRV9JTlNOKG11bHcsIE1BVENIX01VTFcsIE1BU0tfTVVMVykKK0RFQ0xBUkVfSU5TTihkaXZ3LCBNQVRDSF9ESVZXLCBNQVNLX0RJVlcpCitERUNMQVJFX0lOU04oZGl2dXcsIE1BVENIX0RJVlVXLCBNQVNLX0RJVlVXKQorREVDTEFSRV9JTlNOKHJlbXcsIE1BVENIX1JFTVcsIE1BU0tfUkVNVykKK0RFQ0xBUkVfSU5TTihyZW11dywgTUFUQ0hfUkVNVVcsIE1BU0tfUkVNVVcpCitERUNMQVJFX0lOU04oYW1vYWRkX3csIE1BVENIX0FNT0FERF9XLCBNQVNLX0FNT0FERF9XKQorREVDTEFSRV9JTlNOKGFtb3hvcl93LCBNQVRDSF9BTU9YT1JfVywgTUFTS19BTU9YT1JfVykKK0RFQ0xBUkVfSU5TTihhbW9vcl93LCBNQVRDSF9BTU9PUl9XLCBNQVNLX0FNT09SX1cpCitERUNMQVJFX0lOU04oYW1vYW5kX3csIE1BVENIX0FNT0FORF9XLCBNQVNLX0FNT0FORF9XKQorREVDTEFSRV9JTlNOKGFtb21pbl93LCBNQVRDSF9BTU9NSU5fVywgTUFTS19BTU9NSU5fVykKK0RFQ0xBUkVfSU5TTihhbW9tYXhfdywgTUFUQ0hfQU1PTUFYX1csIE1BU0tfQU1PTUFYX1cpCitERUNMQVJFX0lOU04oYW1vbWludV93LCBNQVRDSF9BTU9NSU5VX1csIE1BU0tfQU1PTUlOVV9XKQorREVDTEFSRV9JTlNOKGFtb21heHVfdywgTUFUQ0hfQU1PTUFYVV9XLCBNQVNLX0FNT01BWFVfVykKK0RFQ0xBUkVfSU5TTihhbW9zd2FwX3csIE1BVENIX0FNT1NXQVBfVywgTUFTS19BTU9TV0FQX1cpCitERUNMQVJFX0lOU04obHJfdywgTUFUQ0hfTFJfVywgTUFTS19MUl9XKQorREVDTEFSRV9JTlNOKHNjX3csIE1BVENIX1NDX1csIE1BU0tfU0NfVykKK0RFQ0xBUkVfSU5TTihhbW9hZGRfZCwgTUFUQ0hfQU1PQUREX0QsIE1BU0tfQU1PQUREX0QpCitERUNMQVJFX0lOU04oYW1veG9yX2QsIE1BVENIX0FNT1hPUl9ELCBNQVNLX0FNT1hPUl9EKQorREVDTEFSRV9JTlNOKGFtb29yX2QsIE1BVENIX0FNT09SX0QsIE1BU0tfQU1PT1JfRCkKK0RFQ0xBUkVfSU5TTihhbW9hbmRfZCwgTUFUQ0hfQU1PQU5EX0QsIE1BU0tfQU1PQU5EX0QpCitERUNMQVJFX0lOU04oYW1vbWluX2QsIE1BVENIX0FNT01JTl9ELCBNQVNLX0FNT01JTl9EKQorREVDTEFSRV9JTlNOKGFtb21heF9kLCBNQVRDSF9BTU9NQVhfRCwgTUFTS19BTU9NQVhfRCkKK0RFQ0xBUkVfSU5TTihhbW9taW51X2QsIE1BVENIX0FNT01JTlVfRCwgTUFTS19BTU9NSU5VX0QpCitERUNMQVJFX0lOU04oYW1vbWF4dV9kLCBNQVRDSF9BTU9NQVhVX0QsIE1BU0tfQU1PTUFYVV9EKQorREVDTEFSRV9JTlNOKGFtb3N3YXBfZCwgTUFUQ0hfQU1PU1dBUF9ELCBNQVNLX0FNT1NXQVBfRCkKK0RFQ0xBUkVfSU5TTihscl9kLCBNQVRDSF9MUl9ELCBNQVNLX0xSX0QpCitERUNMQVJFX0lOU04oc2NfZCwgTUFUQ0hfU0NfRCwgTUFTS19TQ19EKQorREVDTEFSRV9JTlNOKGVjYWxsLCBNQVRDSF9FQ0FMTCwgTUFTS19FQ0FMTCkKK0RFQ0xBUkVfSU5TTihlYnJlYWssIE1BVENIX0VCUkVBSywgTUFTS19FQlJFQUspCitERUNMQVJFX0lOU04odXJldCwgTUFUQ0hfVVJFVCwgTUFTS19VUkVUKQorREVDTEFSRV9JTlNOKHNyZXQsIE1BVENIX1NSRVQsIE1BU0tfU1JFVCkKK0RFQ0xBUkVfSU5TTihtcmV0LCBNQVRDSF9NUkVULCBNQVNLX01SRVQpCitERUNMQVJFX0lOU04oZHJldCwgTUFUQ0hfRFJFVCwgTUFTS19EUkVUKQorREVDTEFSRV9JTlNOKHNmZW5jZV92bWEsIE1BVENIX1NGRU5DRV9WTUEsIE1BU0tfU0ZFTkNFX1ZNQSkKK0RFQ0xBUkVfSU5TTih3ZmksIE1BVENIX1dGSSwgTUFTS19XRkkpCitERUNMQVJFX0lOU04oY3NycncsIE1BVENIX0NTUlJXLCBNQVNLX0NTUlJXKQorREVDTEFSRV9JTlNOKGNzcnJzLCBNQVRDSF9DU1JSUywgTUFTS19DU1JSUykKK0RFQ0xBUkVfSU5TTihjc3JyYywgTUFUQ0hfQ1NSUkMsIE1BU0tfQ1NSUkMpCitERUNMQVJFX0lOU04oY3NycndpLCBNQVRDSF9DU1JSV0ksIE1BU0tfQ1NSUldJKQorREVDTEFSRV9JTlNOKGNzcnJzaSwgTUFUQ0hfQ1NSUlNJLCBNQVNLX0NTUlJTSSkKK0RFQ0xBUkVfSU5TTihjc3JyY2ksIE1BVENIX0NTUlJDSSwgTUFTS19DU1JSQ0kpCitERUNMQVJFX0lOU04oZmFkZF9zLCBNQVRDSF9GQUREX1MsIE1BU0tfRkFERF9TKQorREVDTEFSRV9JTlNOKGZzdWJfcywgTUFUQ0hfRlNVQl9TLCBNQVNLX0ZTVUJfUykKK0RFQ0xBUkVfSU5TTihmbXVsX3MsIE1BVENIX0ZNVUxfUywgTUFTS19GTVVMX1MpCitERUNMQVJFX0lOU04oZmRpdl9zLCBNQVRDSF9GRElWX1MsIE1BU0tfRkRJVl9TKQorREVDTEFSRV9JTlNOKGZzZ25qX3MsIE1BVENIX0ZTR05KX1MsIE1BU0tfRlNHTkpfUykKK0RFQ0xBUkVfSU5TTihmc2duam5fcywgTUFUQ0hfRlNHTkpOX1MsIE1BU0tfRlNHTkpOX1MpCitERUNMQVJFX0lOU04oZnNnbmp4X3MsIE1BVENIX0ZTR05KWF9TLCBNQVNLX0ZTR05KWF9TKQorREVDTEFSRV9JTlNOKGZtaW5fcywgTUFUQ0hfRk1JTl9TLCBNQVNLX0ZNSU5fUykKK0RFQ0xBUkVfSU5TTihmbWF4X3MsIE1BVENIX0ZNQVhfUywgTUFTS19GTUFYX1MpCitERUNMQVJFX0lOU04oZnNxcnRfcywgTUFUQ0hfRlNRUlRfUywgTUFTS19GU1FSVF9TKQorREVDTEFSRV9JTlNOKGZhZGRfZCwgTUFUQ0hfRkFERF9ELCBNQVNLX0ZBRERfRCkKK0RFQ0xBUkVfSU5TTihmc3ViX2QsIE1BVENIX0ZTVUJfRCwgTUFTS19GU1VCX0QpCitERUNMQVJFX0lOU04oZm11bF9kLCBNQVRDSF9GTVVMX0QsIE1BU0tfRk1VTF9EKQorREVDTEFSRV9JTlNOKGZkaXZfZCwgTUFUQ0hfRkRJVl9ELCBNQVNLX0ZESVZfRCkKK0RFQ0xBUkVfSU5TTihmc2dual9kLCBNQVRDSF9GU0dOSl9ELCBNQVNLX0ZTR05KX0QpCitERUNMQVJFX0lOU04oZnNnbmpuX2QsIE1BVENIX0ZTR05KTl9ELCBNQVNLX0ZTR05KTl9EKQorREVDTEFSRV9JTlNOKGZzZ25qeF9kLCBNQVRDSF9GU0dOSlhfRCwgTUFTS19GU0dOSlhfRCkKK0RFQ0xBUkVfSU5TTihmbWluX2QsIE1BVENIX0ZNSU5fRCwgTUFTS19GTUlOX0QpCitERUNMQVJFX0lOU04oZm1heF9kLCBNQVRDSF9GTUFYX0QsIE1BU0tfRk1BWF9EKQorREVDTEFSRV9JTlNOKGZjdnRfc19kLCBNQVRDSF9GQ1ZUX1NfRCwgTUFTS19GQ1ZUX1NfRCkKK0RFQ0xBUkVfSU5TTihmY3Z0X2RfcywgTUFUQ0hfRkNWVF9EX1MsIE1BU0tfRkNWVF9EX1MpCitERUNMQVJFX0lOU04oZnNxcnRfZCwgTUFUQ0hfRlNRUlRfRCwgTUFTS19GU1FSVF9EKQorREVDTEFSRV9JTlNOKGZhZGRfcSwgTUFUQ0hfRkFERF9RLCBNQVNLX0ZBRERfUSkKK0RFQ0xBUkVfSU5TTihmc3ViX3EsIE1BVENIX0ZTVUJfUSwgTUFTS19GU1VCX1EpCitERUNMQVJFX0lOU04oZm11bF9xLCBNQVRDSF9GTVVMX1EsIE1BU0tfRk1VTF9RKQorREVDTEFSRV9JTlNOKGZkaXZfcSwgTUFUQ0hfRkRJVl9RLCBNQVNLX0ZESVZfUSkKK0RFQ0xBUkVfSU5TTihmc2dual9xLCBNQVRDSF9GU0dOSl9RLCBNQVNLX0ZTR05KX1EpCitERUNMQVJFX0lOU04oZnNnbmpuX3EsIE1BVENIX0ZTR05KTl9RLCBNQVNLX0ZTR05KTl9RKQorREVDTEFSRV9JTlNOKGZzZ25qeF9xLCBNQVRDSF9GU0dOSlhfUSwgTUFTS19GU0dOSlhfUSkKK0RFQ0xBUkVfSU5TTihmbWluX3EsIE1BVENIX0ZNSU5fUSwgTUFTS19GTUlOX1EpCitERUNMQVJFX0lOU04oZm1heF9xLCBNQVRDSF9GTUFYX1EsIE1BU0tfRk1BWF9RKQorREVDTEFSRV9JTlNOKGZjdnRfc19xLCBNQVRDSF9GQ1ZUX1NfUSwgTUFTS19GQ1ZUX1NfUSkKK0RFQ0xBUkVfSU5TTihmY3Z0X3FfcywgTUFUQ0hfRkNWVF9RX1MsIE1BU0tfRkNWVF9RX1MpCitERUNMQVJFX0lOU04oZmN2dF9kX3EsIE1BVENIX0ZDVlRfRF9RLCBNQVNLX0ZDVlRfRF9RKQorREVDTEFSRV9JTlNOKGZjdnRfcV9kLCBNQVRDSF9GQ1ZUX1FfRCwgTUFTS19GQ1ZUX1FfRCkKK0RFQ0xBUkVfSU5TTihmc3FydF9xLCBNQVRDSF9GU1FSVF9RLCBNQVNLX0ZTUVJUX1EpCitERUNMQVJFX0lOU04oZmxlX3MsIE1BVENIX0ZMRV9TLCBNQVNLX0ZMRV9TKQorREVDTEFSRV9JTlNOKGZsdF9zLCBNQVRDSF9GTFRfUywgTUFTS19GTFRfUykKK0RFQ0xBUkVfSU5TTihmZXFfcywgTUFUQ0hfRkVRX1MsIE1BU0tfRkVRX1MpCitERUNMQVJFX0lOU04oZmxlX2QsIE1BVENIX0ZMRV9ELCBNQVNLX0ZMRV9EKQorREVDTEFSRV9JTlNOKGZsdF9kLCBNQVRDSF9GTFRfRCwgTUFTS19GTFRfRCkKK0RFQ0xBUkVfSU5TTihmZXFfZCwgTUFUQ0hfRkVRX0QsIE1BU0tfRkVRX0QpCitERUNMQVJFX0lOU04oZmxlX3EsIE1BVENIX0ZMRV9RLCBNQVNLX0ZMRV9RKQorREVDTEFSRV9JTlNOKGZsdF9xLCBNQVRDSF9GTFRfUSwgTUFTS19GTFRfUSkKK0RFQ0xBUkVfSU5TTihmZXFfcSwgTUFUQ0hfRkVRX1EsIE1BU0tfRkVRX1EpCitERUNMQVJFX0lOU04oZmN2dF93X3MsIE1BVENIX0ZDVlRfV19TLCBNQVNLX0ZDVlRfV19TKQorREVDTEFSRV9JTlNOKGZjdnRfd3VfcywgTUFUQ0hfRkNWVF9XVV9TLCBNQVNLX0ZDVlRfV1VfUykKK0RFQ0xBUkVfSU5TTihmY3Z0X2xfcywgTUFUQ0hfRkNWVF9MX1MsIE1BU0tfRkNWVF9MX1MpCitERUNMQVJFX0lOU04oZmN2dF9sdV9zLCBNQVRDSF9GQ1ZUX0xVX1MsIE1BU0tfRkNWVF9MVV9TKQorREVDTEFSRV9JTlNOKGZtdl94X3csIE1BVENIX0ZNVl9YX1csIE1BU0tfRk1WX1hfVykKK0RFQ0xBUkVfSU5TTihmY2xhc3NfcywgTUFUQ0hfRkNMQVNTX1MsIE1BU0tfRkNMQVNTX1MpCitERUNMQVJFX0lOU04oZmN2dF93X2QsIE1BVENIX0ZDVlRfV19ELCBNQVNLX0ZDVlRfV19EKQorREVDTEFSRV9JTlNOKGZjdnRfd3VfZCwgTUFUQ0hfRkNWVF9XVV9ELCBNQVNLX0ZDVlRfV1VfRCkKK0RFQ0xBUkVfSU5TTihmY3Z0X2xfZCwgTUFUQ0hfRkNWVF9MX0QsIE1BU0tfRkNWVF9MX0QpCitERUNMQVJFX0lOU04oZmN2dF9sdV9kLCBNQVRDSF9GQ1ZUX0xVX0QsIE1BU0tfRkNWVF9MVV9EKQorREVDTEFSRV9JTlNOKGZtdl94X2QsIE1BVENIX0ZNVl9YX0QsIE1BU0tfRk1WX1hfRCkKK0RFQ0xBUkVfSU5TTihmY2xhc3NfZCwgTUFUQ0hfRkNMQVNTX0QsIE1BU0tfRkNMQVNTX0QpCitERUNMQVJFX0lOU04oZmN2dF93X3EsIE1BVENIX0ZDVlRfV19RLCBNQVNLX0ZDVlRfV19RKQorREVDTEFSRV9JTlNOKGZjdnRfd3VfcSwgTUFUQ0hfRkNWVF9XVV9RLCBNQVNLX0ZDVlRfV1VfUSkKK0RFQ0xBUkVfSU5TTihmY3Z0X2xfcSwgTUFUQ0hfRkNWVF9MX1EsIE1BU0tfRkNWVF9MX1EpCitERUNMQVJFX0lOU04oZmN2dF9sdV9xLCBNQVRDSF9GQ1ZUX0xVX1EsIE1BU0tfRkNWVF9MVV9RKQorREVDTEFSRV9JTlNOKGZtdl94X3EsIE1BVENIX0ZNVl9YX1EsIE1BU0tfRk1WX1hfUSkKK0RFQ0xBUkVfSU5TTihmY2xhc3NfcSwgTUFUQ0hfRkNMQVNTX1EsIE1BU0tfRkNMQVNTX1EpCitERUNMQVJFX0lOU04oZmN2dF9zX3csIE1BVENIX0ZDVlRfU19XLCBNQVNLX0ZDVlRfU19XKQorREVDTEFSRV9JTlNOKGZjdnRfc193dSwgTUFUQ0hfRkNWVF9TX1dVLCBNQVNLX0ZDVlRfU19XVSkKK0RFQ0xBUkVfSU5TTihmY3Z0X3NfbCwgTUFUQ0hfRkNWVF9TX0wsIE1BU0tfRkNWVF9TX0wpCitERUNMQVJFX0lOU04oZmN2dF9zX2x1LCBNQVRDSF9GQ1ZUX1NfTFUsIE1BU0tfRkNWVF9TX0xVKQorREVDTEFSRV9JTlNOKGZtdl93X3gsIE1BVENIX0ZNVl9XX1gsIE1BU0tfRk1WX1dfWCkKK0RFQ0xBUkVfSU5TTihmY3Z0X2RfdywgTUFUQ0hfRkNWVF9EX1csIE1BU0tfRkNWVF9EX1cpCitERUNMQVJFX0lOU04oZmN2dF9kX3d1LCBNQVRDSF9GQ1ZUX0RfV1UsIE1BU0tfRkNWVF9EX1dVKQorREVDTEFSRV9JTlNOKGZjdnRfZF9sLCBNQVRDSF9GQ1ZUX0RfTCwgTUFTS19GQ1ZUX0RfTCkKK0RFQ0xBUkVfSU5TTihmY3Z0X2RfbHUsIE1BVENIX0ZDVlRfRF9MVSwgTUFTS19GQ1ZUX0RfTFUpCitERUNMQVJFX0lOU04oZm12X2RfeCwgTUFUQ0hfRk1WX0RfWCwgTUFTS19GTVZfRF9YKQorREVDTEFSRV9JTlNOKGZjdnRfcV93LCBNQVRDSF9GQ1ZUX1FfVywgTUFTS19GQ1ZUX1FfVykKK0RFQ0xBUkVfSU5TTihmY3Z0X3Ffd3UsIE1BVENIX0ZDVlRfUV9XVSwgTUFTS19GQ1ZUX1FfV1UpCitERUNMQVJFX0lOU04oZmN2dF9xX2wsIE1BVENIX0ZDVlRfUV9MLCBNQVNLX0ZDVlRfUV9MKQorREVDTEFSRV9JTlNOKGZjdnRfcV9sdSwgTUFUQ0hfRkNWVF9RX0xVLCBNQVNLX0ZDVlRfUV9MVSkKK0RFQ0xBUkVfSU5TTihmbXZfcV94LCBNQVRDSF9GTVZfUV9YLCBNQVNLX0ZNVl9RX1gpCitERUNMQVJFX0lOU04oZmx3LCBNQVRDSF9GTFcsIE1BU0tfRkxXKQorREVDTEFSRV9JTlNOKGZsZCwgTUFUQ0hfRkxELCBNQVNLX0ZMRCkKK0RFQ0xBUkVfSU5TTihmbHEsIE1BVENIX0ZMUSwgTUFTS19GTFEpCitERUNMQVJFX0lOU04oZnN3LCBNQVRDSF9GU1csIE1BU0tfRlNXKQorREVDTEFSRV9JTlNOKGZzZCwgTUFUQ0hfRlNELCBNQVNLX0ZTRCkKK0RFQ0xBUkVfSU5TTihmc3EsIE1BVENIX0ZTUSwgTUFTS19GU1EpCitERUNMQVJFX0lOU04oZm1hZGRfcywgTUFUQ0hfRk1BRERfUywgTUFTS19GTUFERF9TKQorREVDTEFSRV9JTlNOKGZtc3ViX3MsIE1BVENIX0ZNU1VCX1MsIE1BU0tfRk1TVUJfUykKK0RFQ0xBUkVfSU5TTihmbm1zdWJfcywgTUFUQ0hfRk5NU1VCX1MsIE1BU0tfRk5NU1VCX1MpCitERUNMQVJFX0lOU04oZm5tYWRkX3MsIE1BVENIX0ZOTUFERF9TLCBNQVNLX0ZOTUFERF9TKQorREVDTEFSRV9JTlNOKGZtYWRkX2QsIE1BVENIX0ZNQUREX0QsIE1BU0tfRk1BRERfRCkKK0RFQ0xBUkVfSU5TTihmbXN1Yl9kLCBNQVRDSF9GTVNVQl9ELCBNQVNLX0ZNU1VCX0QpCitERUNMQVJFX0lOU04oZm5tc3ViX2QsIE1BVENIX0ZOTVNVQl9ELCBNQVNLX0ZOTVNVQl9EKQorREVDTEFSRV9JTlNOKGZubWFkZF9kLCBNQVRDSF9GTk1BRERfRCwgTUFTS19GTk1BRERfRCkKK0RFQ0xBUkVfSU5TTihmbWFkZF9xLCBNQVRDSF9GTUFERF9RLCBNQVNLX0ZNQUREX1EpCitERUNMQVJFX0lOU04oZm1zdWJfcSwgTUFUQ0hfRk1TVUJfUSwgTUFTS19GTVNVQl9RKQorREVDTEFSRV9JTlNOKGZubXN1Yl9xLCBNQVRDSF9GTk1TVUJfUSwgTUFTS19GTk1TVUJfUSkKK0RFQ0xBUkVfSU5TTihmbm1hZGRfcSwgTUFUQ0hfRk5NQUREX1EsIE1BU0tfRk5NQUREX1EpCitERUNMQVJFX0lOU04oY19ub3AsIE1BVENIX0NfTk9QLCBNQVNLX0NfTk9QKQorREVDTEFSRV9JTlNOKGNfYWRkaTE2c3AsIE1BVENIX0NfQURESTE2U1AsIE1BU0tfQ19BRERJMTZTUCkKK0RFQ0xBUkVfSU5TTihjX2pyLCBNQVRDSF9DX0pSLCBNQVNLX0NfSlIpCitERUNMQVJFX0lOU04oY19qYWxyLCBNQVRDSF9DX0pBTFIsIE1BU0tfQ19KQUxSKQorREVDTEFSRV9JTlNOKGNfZWJyZWFrLCBNQVRDSF9DX0VCUkVBSywgTUFTS19DX0VCUkVBSykKK0RFQ0xBUkVfSU5TTihjX2xkLCBNQVRDSF9DX0xELCBNQVNLX0NfTEQpCitERUNMQVJFX0lOU04oY19zZCwgTUFUQ0hfQ19TRCwgTUFTS19DX1NEKQorREVDTEFSRV9JTlNOKGNfYWRkaXcsIE1BVENIX0NfQURESVcsIE1BU0tfQ19BRERJVykKK0RFQ0xBUkVfSU5TTihjX2xkc3AsIE1BVENIX0NfTERTUCwgTUFTS19DX0xEU1ApCitERUNMQVJFX0lOU04oY19zZHNwLCBNQVRDSF9DX1NEU1AsIE1BU0tfQ19TRFNQKQorREVDTEFSRV9JTlNOKGNfYWRkaTRzcG4sIE1BVENIX0NfQURESTRTUE4sIE1BU0tfQ19BRERJNFNQTikKK0RFQ0xBUkVfSU5TTihjX2ZsZCwgTUFUQ0hfQ19GTEQsIE1BU0tfQ19GTEQpCitERUNMQVJFX0lOU04oY19sdywgTUFUQ0hfQ19MVywgTUFTS19DX0xXKQorREVDTEFSRV9JTlNOKGNfZmx3LCBNQVRDSF9DX0ZMVywgTUFTS19DX0ZMVykKK0RFQ0xBUkVfSU5TTihjX2ZzZCwgTUFUQ0hfQ19GU0QsIE1BU0tfQ19GU0QpCitERUNMQVJFX0lOU04oY19zdywgTUFUQ0hfQ19TVywgTUFTS19DX1NXKQorREVDTEFSRV9JTlNOKGNfZnN3LCBNQVRDSF9DX0ZTVywgTUFTS19DX0ZTVykKK0RFQ0xBUkVfSU5TTihjX2FkZGksIE1BVENIX0NfQURESSwgTUFTS19DX0FEREkpCitERUNMQVJFX0lOU04oY19qYWwsIE1BVENIX0NfSkFMLCBNQVNLX0NfSkFMKQorREVDTEFSRV9JTlNOKGNfbGksIE1BVENIX0NfTEksIE1BU0tfQ19MSSkKK0RFQ0xBUkVfSU5TTihjX2x1aSwgTUFUQ0hfQ19MVUksIE1BU0tfQ19MVUkpCitERUNMQVJFX0lOU04oY19zcmxpLCBNQVRDSF9DX1NSTEksIE1BU0tfQ19TUkxJKQorREVDTEFSRV9JTlNOKGNfc3JhaSwgTUFUQ0hfQ19TUkFJLCBNQVNLX0NfU1JBSSkKK0RFQ0xBUkVfSU5TTihjX2FuZGksIE1BVENIX0NfQU5ESSwgTUFTS19DX0FOREkpCitERUNMQVJFX0lOU04oY19zdWIsIE1BVENIX0NfU1VCLCBNQVNLX0NfU1VCKQorREVDTEFSRV9JTlNOKGNfeG9yLCBNQVRDSF9DX1hPUiwgTUFTS19DX1hPUikKK0RFQ0xBUkVfSU5TTihjX29yLCBNQVRDSF9DX09SLCBNQVNLX0NfT1IpCitERUNMQVJFX0lOU04oY19hbmQsIE1BVENIX0NfQU5ELCBNQVNLX0NfQU5EKQorREVDTEFSRV9JTlNOKGNfc3VidywgTUFUQ0hfQ19TVUJXLCBNQVNLX0NfU1VCVykKK0RFQ0xBUkVfSU5TTihjX2FkZHcsIE1BVENIX0NfQUREVywgTUFTS19DX0FERFcpCitERUNMQVJFX0lOU04oY19qLCBNQVRDSF9DX0osIE1BU0tfQ19KKQorREVDTEFSRV9JTlNOKGNfYmVxeiwgTUFUQ0hfQ19CRVFaLCBNQVNLX0NfQkVRWikKK0RFQ0xBUkVfSU5TTihjX2JuZXosIE1BVENIX0NfQk5FWiwgTUFTS19DX0JORVopCitERUNMQVJFX0lOU04oY19zbGxpLCBNQVRDSF9DX1NMTEksIE1BU0tfQ19TTExJKQorREVDTEFSRV9JTlNOKGNfZmxkc3AsIE1BVENIX0NfRkxEU1AsIE1BU0tfQ19GTERTUCkKK0RFQ0xBUkVfSU5TTihjX2x3c3AsIE1BVENIX0NfTFdTUCwgTUFTS19DX0xXU1ApCitERUNMQVJFX0lOU04oY19mbHdzcCwgTUFUQ0hfQ19GTFdTUCwgTUFTS19DX0ZMV1NQKQorREVDTEFSRV9JTlNOKGNfbXYsIE1BVENIX0NfTVYsIE1BU0tfQ19NVikKK0RFQ0xBUkVfSU5TTihjX2FkZCwgTUFUQ0hfQ19BREQsIE1BU0tfQ19BREQpCitERUNMQVJFX0lOU04oY19mc2RzcCwgTUFUQ0hfQ19GU0RTUCwgTUFTS19DX0ZTRFNQKQorREVDTEFSRV9JTlNOKGNfc3dzcCwgTUFUQ0hfQ19TV1NQLCBNQVNLX0NfU1dTUCkKK0RFQ0xBUkVfSU5TTihjX2Zzd3NwLCBNQVRDSF9DX0ZTV1NQLCBNQVNLX0NfRlNXU1ApCitERUNMQVJFX0lOU04oY3VzdG9tMCwgTUFUQ0hfQ1VTVE9NMCwgTUFTS19DVVNUT00wKQorREVDTEFSRV9JTlNOKGN1c3RvbTBfcnMxLCBNQVRDSF9DVVNUT00wX1JTMSwgTUFTS19DVVNUT00wX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20wX3JzMV9yczIsIE1BVENIX0NVU1RPTTBfUlMxX1JTMiwgTUFTS19DVVNUT00wX1JTMV9SUzIpCitERUNMQVJFX0lOU04oY3VzdG9tMF9yZCwgTUFUQ0hfQ1VTVE9NMF9SRCwgTUFTS19DVVNUT00wX1JEKQorREVDTEFSRV9JTlNOKGN1c3RvbTBfcmRfcnMxLCBNQVRDSF9DVVNUT00wX1JEX1JTMSwgTUFTS19DVVNUT00wX1JEX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20wX3JkX3JzMV9yczIsIE1BVENIX0NVU1RPTTBfUkRfUlMxX1JTMiwgTUFTS19DVVNUT00wX1JEX1JTMV9SUzIpCitERUNMQVJFX0lOU04oY3VzdG9tMSwgTUFUQ0hfQ1VTVE9NMSwgTUFTS19DVVNUT00xKQorREVDTEFSRV9JTlNOKGN1c3RvbTFfcnMxLCBNQVRDSF9DVVNUT00xX1JTMSwgTUFTS19DVVNUT00xX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20xX3JzMV9yczIsIE1BVENIX0NVU1RPTTFfUlMxX1JTMiwgTUFTS19DVVNUT00xX1JTMV9SUzIpCitERUNMQVJFX0lOU04oY3VzdG9tMV9yZCwgTUFUQ0hfQ1VTVE9NMV9SRCwgTUFTS19DVVNUT00xX1JEKQorREVDTEFSRV9JTlNOKGN1c3RvbTFfcmRfcnMxLCBNQVRDSF9DVVNUT00xX1JEX1JTMSwgTUFTS19DVVNUT00xX1JEX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20xX3JkX3JzMV9yczIsIE1BVENIX0NVU1RPTTFfUkRfUlMxX1JTMiwgTUFTS19DVVNUT00xX1JEX1JTMV9SUzIpCitERUNMQVJFX0lOU04oY3VzdG9tMiwgTUFUQ0hfQ1VTVE9NMiwgTUFTS19DVVNUT00yKQorREVDTEFSRV9JTlNOKGN1c3RvbTJfcnMxLCBNQVRDSF9DVVNUT00yX1JTMSwgTUFTS19DVVNUT00yX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20yX3JzMV9yczIsIE1BVENIX0NVU1RPTTJfUlMxX1JTMiwgTUFTS19DVVNUT00yX1JTMV9SUzIpCitERUNMQVJFX0lOU04oY3VzdG9tMl9yZCwgTUFUQ0hfQ1VTVE9NMl9SRCwgTUFTS19DVVNUT00yX1JEKQorREVDTEFSRV9JTlNOKGN1c3RvbTJfcmRfcnMxLCBNQVRDSF9DVVNUT00yX1JEX1JTMSwgTUFTS19DVVNUT00yX1JEX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20yX3JkX3JzMV9yczIsIE1BVENIX0NVU1RPTTJfUkRfUlMxX1JTMiwgTUFTS19DVVNUT00yX1JEX1JTMV9SUzIpCitERUNMQVJFX0lOU04oY3VzdG9tMywgTUFUQ0hfQ1VTVE9NMywgTUFTS19DVVNUT00zKQorREVDTEFSRV9JTlNOKGN1c3RvbTNfcnMxLCBNQVRDSF9DVVNUT00zX1JTMSwgTUFTS19DVVNUT00zX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20zX3JzMV9yczIsIE1BVENIX0NVU1RPTTNfUlMxX1JTMiwgTUFTS19DVVNUT00zX1JTMV9SUzIpCitERUNMQVJFX0lOU04oY3VzdG9tM19yZCwgTUFUQ0hfQ1VTVE9NM19SRCwgTUFTS19DVVNUT00zX1JEKQorREVDTEFSRV9JTlNOKGN1c3RvbTNfcmRfcnMxLCBNQVRDSF9DVVNUT00zX1JEX1JTMSwgTUFTS19DVVNUT00zX1JEX1JTMSkKK0RFQ0xBUkVfSU5TTihjdXN0b20zX3JkX3JzMV9yczIsIE1BVENIX0NVU1RPTTNfUkRfUlMxX1JTMiwgTUFTS19DVVNUT00zX1JEX1JTMV9SUzIpCisjZW5kaWYKKyNpZmRlZiBERUNMQVJFX0NTUgorREVDTEFSRV9DU1IoZmZsYWdzLCBDU1JfRkZMQUdTKQorREVDTEFSRV9DU1IoZnJtLCBDU1JfRlJNKQorREVDTEFSRV9DU1IoZmNzciwgQ1NSX0ZDU1IpCitERUNMQVJFX0NTUihjeWNsZSwgQ1NSX0NZQ0xFKQorREVDTEFSRV9DU1IodGltZSwgQ1NSX1RJTUUpCitERUNMQVJFX0NTUihpbnN0cmV0LCBDU1JfSU5TVFJFVCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIzLCBDU1JfSFBNQ09VTlRFUjMpCitERUNMQVJFX0NTUihocG1jb3VudGVyNCwgQ1NSX0hQTUNPVU5URVI0KQorREVDTEFSRV9DU1IoaHBtY291bnRlcjUsIENTUl9IUE1DT1VOVEVSNSkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXI2LCBDU1JfSFBNQ09VTlRFUjYpCitERUNMQVJFX0NTUihocG1jb3VudGVyNywgQ1NSX0hQTUNPVU5URVI3KQorREVDTEFSRV9DU1IoaHBtY291bnRlcjgsIENTUl9IUE1DT1VOVEVSOCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXI5LCBDU1JfSFBNQ09VTlRFUjkpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTAsIENTUl9IUE1DT1VOVEVSMTApCitERUNMQVJFX0NTUihocG1jb3VudGVyMTEsIENTUl9IUE1DT1VOVEVSMTEpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTIsIENTUl9IUE1DT1VOVEVSMTIpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTMsIENTUl9IUE1DT1VOVEVSMTMpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTQsIENTUl9IUE1DT1VOVEVSMTQpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTUsIENTUl9IUE1DT1VOVEVSMTUpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTYsIENTUl9IUE1DT1VOVEVSMTYpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTcsIENTUl9IUE1DT1VOVEVSMTcpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTgsIENTUl9IUE1DT1VOVEVSMTgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTksIENTUl9IUE1DT1VOVEVSMTkpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjAsIENTUl9IUE1DT1VOVEVSMjApCitERUNMQVJFX0NTUihocG1jb3VudGVyMjEsIENTUl9IUE1DT1VOVEVSMjEpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjIsIENTUl9IUE1DT1VOVEVSMjIpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjMsIENTUl9IUE1DT1VOVEVSMjMpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjQsIENTUl9IUE1DT1VOVEVSMjQpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjUsIENTUl9IUE1DT1VOVEVSMjUpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjYsIENTUl9IUE1DT1VOVEVSMjYpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjcsIENTUl9IUE1DT1VOVEVSMjcpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjgsIENTUl9IUE1DT1VOVEVSMjgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjksIENTUl9IUE1DT1VOVEVSMjkpCitERUNMQVJFX0NTUihocG1jb3VudGVyMzAsIENTUl9IUE1DT1VOVEVSMzApCitERUNMQVJFX0NTUihocG1jb3VudGVyMzEsIENTUl9IUE1DT1VOVEVSMzEpCitERUNMQVJFX0NTUihzc3RhdHVzLCBDU1JfU1NUQVRVUykKK0RFQ0xBUkVfQ1NSKHNpZSwgQ1NSX1NJRSkKK0RFQ0xBUkVfQ1NSKHN0dmVjLCBDU1JfU1RWRUMpCitERUNMQVJFX0NTUihzY291bnRlcmVuLCBDU1JfU0NPVU5URVJFTikKK0RFQ0xBUkVfQ1NSKHNzY3JhdGNoLCBDU1JfU1NDUkFUQ0gpCitERUNMQVJFX0NTUihzZXBjLCBDU1JfU0VQQykKK0RFQ0xBUkVfQ1NSKHNjYXVzZSwgQ1NSX1NDQVVTRSkKK0RFQ0xBUkVfQ1NSKHNiYWRhZGRyLCBDU1JfU0JBREFERFIpCitERUNMQVJFX0NTUihzaXAsIENTUl9TSVApCitERUNMQVJFX0NTUihzcHRiciwgQ1NSX1NQVEJSKQorREVDTEFSRV9DU1IobXN0YXR1cywgQ1NSX01TVEFUVVMpCitERUNMQVJFX0NTUihtaXNhLCBDU1JfTUlTQSkKK0RFQ0xBUkVfQ1NSKG1lZGVsZWcsIENTUl9NRURFTEVHKQorREVDTEFSRV9DU1IobWlkZWxlZywgQ1NSX01JREVMRUcpCitERUNMQVJFX0NTUihtaWUsIENTUl9NSUUpCitERUNMQVJFX0NTUihtdHZlYywgQ1NSX01UVkVDKQorREVDTEFSRV9DU1IobWNvdW50ZXJlbiwgQ1NSX01DT1VOVEVSRU4pCitERUNMQVJFX0NTUihtc2NyYXRjaCwgQ1NSX01TQ1JBVENIKQorREVDTEFSRV9DU1IobWVwYywgQ1NSX01FUEMpCitERUNMQVJFX0NTUihtY2F1c2UsIENTUl9NQ0FVU0UpCitERUNMQVJFX0NTUihtYmFkYWRkciwgQ1NSX01CQURBRERSKQorREVDTEFSRV9DU1IobWlwLCBDU1JfTUlQKQorREVDTEFSRV9DU1IocG1wY2ZnMCwgQ1NSX1BNUENGRzApCitERUNMQVJFX0NTUihwbXBjZmcxLCBDU1JfUE1QQ0ZHMSkKK0RFQ0xBUkVfQ1NSKHBtcGNmZzIsIENTUl9QTVBDRkcyKQorREVDTEFSRV9DU1IocG1wY2ZnMywgQ1NSX1BNUENGRzMpCitERUNMQVJFX0NTUihwbXBhZGRyMCwgQ1NSX1BNUEFERFIwKQorREVDTEFSRV9DU1IocG1wYWRkcjEsIENTUl9QTVBBRERSMSkKK0RFQ0xBUkVfQ1NSKHBtcGFkZHIyLCBDU1JfUE1QQUREUjIpCitERUNMQVJFX0NTUihwbXBhZGRyMywgQ1NSX1BNUEFERFIzKQorREVDTEFSRV9DU1IocG1wYWRkcjQsIENTUl9QTVBBRERSNCkKK0RFQ0xBUkVfQ1NSKHBtcGFkZHI1LCBDU1JfUE1QQUREUjUpCitERUNMQVJFX0NTUihwbXBhZGRyNiwgQ1NSX1BNUEFERFI2KQorREVDTEFSRV9DU1IocG1wYWRkcjcsIENTUl9QTVBBRERSNykKK0RFQ0xBUkVfQ1NSKHBtcGFkZHI4LCBDU1JfUE1QQUREUjgpCitERUNMQVJFX0NTUihwbXBhZGRyOSwgQ1NSX1BNUEFERFI5KQorREVDTEFSRV9DU1IocG1wYWRkcjEwLCBDU1JfUE1QQUREUjEwKQorREVDTEFSRV9DU1IocG1wYWRkcjExLCBDU1JfUE1QQUREUjExKQorREVDTEFSRV9DU1IocG1wYWRkcjEyLCBDU1JfUE1QQUREUjEyKQorREVDTEFSRV9DU1IocG1wYWRkcjEzLCBDU1JfUE1QQUREUjEzKQorREVDTEFSRV9DU1IocG1wYWRkcjE0LCBDU1JfUE1QQUREUjE0KQorREVDTEFSRV9DU1IocG1wYWRkcjE1LCBDU1JfUE1QQUREUjE1KQorREVDTEFSRV9DU1IodHNlbGVjdCwgQ1NSX1RTRUxFQ1QpCitERUNMQVJFX0NTUih0ZGF0YTEsIENTUl9UREFUQTEpCitERUNMQVJFX0NTUih0ZGF0YTIsIENTUl9UREFUQTIpCitERUNMQVJFX0NTUih0ZGF0YTMsIENTUl9UREFUQTMpCitERUNMQVJFX0NTUihkY3NyLCBDU1JfRENTUikKK0RFQ0xBUkVfQ1NSKGRwYywgQ1NSX0RQQykKK0RFQ0xBUkVfQ1NSKGRzY3JhdGNoLCBDU1JfRFNDUkFUQ0gpCitERUNMQVJFX0NTUihtY3ljbGUsIENTUl9NQ1lDTEUpCitERUNMQVJFX0NTUihtaW5zdHJldCwgQ1NSX01JTlNUUkVUKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIzLCBDU1JfTUhQTUNPVU5URVIzKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI0LCBDU1JfTUhQTUNPVU5URVI0KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI1LCBDU1JfTUhQTUNPVU5URVI1KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI2LCBDU1JfTUhQTUNPVU5URVI2KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI3LCBDU1JfTUhQTUNPVU5URVI3KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI4LCBDU1JfTUhQTUNPVU5URVI4KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI5LCBDU1JfTUhQTUNPVU5URVI5KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIxMCwgQ1NSX01IUE1DT1VOVEVSMTApCitERUNMQVJFX0NTUihtaHBtY291bnRlcjExLCBDU1JfTUhQTUNPVU5URVIxMSkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMTIsIENTUl9NSFBNQ09VTlRFUjEyKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIxMywgQ1NSX01IUE1DT1VOVEVSMTMpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjE0LCBDU1JfTUhQTUNPVU5URVIxNCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMTUsIENTUl9NSFBNQ09VTlRFUjE1KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIxNiwgQ1NSX01IUE1DT1VOVEVSMTYpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjE3LCBDU1JfTUhQTUNPVU5URVIxNykKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMTgsIENTUl9NSFBNQ09VTlRFUjE4KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIxOSwgQ1NSX01IUE1DT1VOVEVSMTkpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjIwLCBDU1JfTUhQTUNPVU5URVIyMCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMjEsIENTUl9NSFBNQ09VTlRFUjIxKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIyMiwgQ1NSX01IUE1DT1VOVEVSMjIpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjIzLCBDU1JfTUhQTUNPVU5URVIyMykKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMjQsIENTUl9NSFBNQ09VTlRFUjI0KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIyNSwgQ1NSX01IUE1DT1VOVEVSMjUpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjI2LCBDU1JfTUhQTUNPVU5URVIyNikKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMjcsIENTUl9NSFBNQ09VTlRFUjI3KQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIyOCwgQ1NSX01IUE1DT1VOVEVSMjgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjI5LCBDU1JfTUhQTUNPVU5URVIyOSkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMzAsIENTUl9NSFBNQ09VTlRFUjMwKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIzMSwgQ1NSX01IUE1DT1VOVEVSMzEpCitERUNMQVJFX0NTUihtaHBtZXZlbnQzLCBDU1JfTUhQTUVWRU5UMykKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDQsIENTUl9NSFBNRVZFTlQ0KQorREVDTEFSRV9DU1IobWhwbWV2ZW50NSwgQ1NSX01IUE1FVkVOVDUpCitERUNMQVJFX0NTUihtaHBtZXZlbnQ2LCBDU1JfTUhQTUVWRU5UNikKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDcsIENTUl9NSFBNRVZFTlQ3KQorREVDTEFSRV9DU1IobWhwbWV2ZW50OCwgQ1NSX01IUE1FVkVOVDgpCitERUNMQVJFX0NTUihtaHBtZXZlbnQ5LCBDU1JfTUhQTUVWRU5UOSkKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDEwLCBDU1JfTUhQTUVWRU5UMTApCitERUNMQVJFX0NTUihtaHBtZXZlbnQxMSwgQ1NSX01IUE1FVkVOVDExKQorREVDTEFSRV9DU1IobWhwbWV2ZW50MTIsIENTUl9NSFBNRVZFTlQxMikKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDEzLCBDU1JfTUhQTUVWRU5UMTMpCitERUNMQVJFX0NTUihtaHBtZXZlbnQxNCwgQ1NSX01IUE1FVkVOVDE0KQorREVDTEFSRV9DU1IobWhwbWV2ZW50MTUsIENTUl9NSFBNRVZFTlQxNSkKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDE2LCBDU1JfTUhQTUVWRU5UMTYpCitERUNMQVJFX0NTUihtaHBtZXZlbnQxNywgQ1NSX01IUE1FVkVOVDE3KQorREVDTEFSRV9DU1IobWhwbWV2ZW50MTgsIENTUl9NSFBNRVZFTlQxOCkKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDE5LCBDU1JfTUhQTUVWRU5UMTkpCitERUNMQVJFX0NTUihtaHBtZXZlbnQyMCwgQ1NSX01IUE1FVkVOVDIwKQorREVDTEFSRV9DU1IobWhwbWV2ZW50MjEsIENTUl9NSFBNRVZFTlQyMSkKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDIyLCBDU1JfTUhQTUVWRU5UMjIpCitERUNMQVJFX0NTUihtaHBtZXZlbnQyMywgQ1NSX01IUE1FVkVOVDIzKQorREVDTEFSRV9DU1IobWhwbWV2ZW50MjQsIENTUl9NSFBNRVZFTlQyNCkKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDI1LCBDU1JfTUhQTUVWRU5UMjUpCitERUNMQVJFX0NTUihtaHBtZXZlbnQyNiwgQ1NSX01IUE1FVkVOVDI2KQorREVDTEFSRV9DU1IobWhwbWV2ZW50MjcsIENTUl9NSFBNRVZFTlQyNykKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDI4LCBDU1JfTUhQTUVWRU5UMjgpCitERUNMQVJFX0NTUihtaHBtZXZlbnQyOSwgQ1NSX01IUE1FVkVOVDI5KQorREVDTEFSRV9DU1IobWhwbWV2ZW50MzAsIENTUl9NSFBNRVZFTlQzMCkKK0RFQ0xBUkVfQ1NSKG1ocG1ldmVudDMxLCBDU1JfTUhQTUVWRU5UMzEpCitERUNMQVJFX0NTUihtdmVuZG9yaWQsIENTUl9NVkVORE9SSUQpCitERUNMQVJFX0NTUihtYXJjaGlkLCBDU1JfTUFSQ0hJRCkKK0RFQ0xBUkVfQ1NSKG1pbXBpZCwgQ1NSX01JTVBJRCkKK0RFQ0xBUkVfQ1NSKG1oYXJ0aWQsIENTUl9NSEFSVElEKQorREVDTEFSRV9DU1IoY3ljbGVoLCBDU1JfQ1lDTEVIKQorREVDTEFSRV9DU1IodGltZWgsIENTUl9USU1FSCkKK0RFQ0xBUkVfQ1NSKGluc3RyZXRoLCBDU1JfSU5TVFJFVEgpCitERUNMQVJFX0NTUihocG1jb3VudGVyM2gsIENTUl9IUE1DT1VOVEVSM0gpCitERUNMQVJFX0NTUihocG1jb3VudGVyNGgsIENTUl9IUE1DT1VOVEVSNEgpCitERUNMQVJFX0NTUihocG1jb3VudGVyNWgsIENTUl9IUE1DT1VOVEVSNUgpCitERUNMQVJFX0NTUihocG1jb3VudGVyNmgsIENTUl9IUE1DT1VOVEVSNkgpCitERUNMQVJFX0NTUihocG1jb3VudGVyN2gsIENTUl9IUE1DT1VOVEVSN0gpCitERUNMQVJFX0NTUihocG1jb3VudGVyOGgsIENTUl9IUE1DT1VOVEVSOEgpCitERUNMQVJFX0NTUihocG1jb3VudGVyOWgsIENTUl9IUE1DT1VOVEVSOUgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTBoLCBDU1JfSFBNQ09VTlRFUjEwSCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIxMWgsIENTUl9IUE1DT1VOVEVSMTFIKQorREVDTEFSRV9DU1IoaHBtY291bnRlcjEyaCwgQ1NSX0hQTUNPVU5URVIxMkgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTNoLCBDU1JfSFBNQ09VTlRFUjEzSCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIxNGgsIENTUl9IUE1DT1VOVEVSMTRIKQorREVDTEFSRV9DU1IoaHBtY291bnRlcjE1aCwgQ1NSX0hQTUNPVU5URVIxNUgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTZoLCBDU1JfSFBNQ09VTlRFUjE2SCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIxN2gsIENTUl9IUE1DT1VOVEVSMTdIKQorREVDTEFSRV9DU1IoaHBtY291bnRlcjE4aCwgQ1NSX0hQTUNPVU5URVIxOEgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMTloLCBDU1JfSFBNQ09VTlRFUjE5SCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIyMGgsIENTUl9IUE1DT1VOVEVSMjBIKQorREVDTEFSRV9DU1IoaHBtY291bnRlcjIxaCwgQ1NSX0hQTUNPVU5URVIyMUgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjJoLCBDU1JfSFBNQ09VTlRFUjIySCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIyM2gsIENTUl9IUE1DT1VOVEVSMjNIKQorREVDTEFSRV9DU1IoaHBtY291bnRlcjI0aCwgQ1NSX0hQTUNPVU5URVIyNEgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjVoLCBDU1JfSFBNQ09VTlRFUjI1SCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIyNmgsIENTUl9IUE1DT1VOVEVSMjZIKQorREVDTEFSRV9DU1IoaHBtY291bnRlcjI3aCwgQ1NSX0hQTUNPVU5URVIyN0gpCitERUNMQVJFX0NTUihocG1jb3VudGVyMjhoLCBDU1JfSFBNQ09VTlRFUjI4SCkKK0RFQ0xBUkVfQ1NSKGhwbWNvdW50ZXIyOWgsIENTUl9IUE1DT1VOVEVSMjlIKQorREVDTEFSRV9DU1IoaHBtY291bnRlcjMwaCwgQ1NSX0hQTUNPVU5URVIzMEgpCitERUNMQVJFX0NTUihocG1jb3VudGVyMzFoLCBDU1JfSFBNQ09VTlRFUjMxSCkKK0RFQ0xBUkVfQ1NSKG1jeWNsZWgsIENTUl9NQ1lDTEVIKQorREVDTEFSRV9DU1IobWluc3RyZXRoLCBDU1JfTUlOU1RSRVRIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIzaCwgQ1NSX01IUE1DT1VOVEVSM0gpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjRoLCBDU1JfTUhQTUNPVU5URVI0SCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyNWgsIENTUl9NSFBNQ09VTlRFUjVIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI2aCwgQ1NSX01IUE1DT1VOVEVSNkgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjdoLCBDU1JfTUhQTUNPVU5URVI3SCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyOGgsIENTUl9NSFBNQ09VTlRFUjhIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXI5aCwgQ1NSX01IUE1DT1VOVEVSOUgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjEwaCwgQ1NSX01IUE1DT1VOVEVSMTBIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIxMWgsIENTUl9NSFBNQ09VTlRFUjExSCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMTJoLCBDU1JfTUhQTUNPVU5URVIxMkgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjEzaCwgQ1NSX01IUE1DT1VOVEVSMTNIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIxNGgsIENTUl9NSFBNQ09VTlRFUjE0SCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMTVoLCBDU1JfTUhQTUNPVU5URVIxNUgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjE2aCwgQ1NSX01IUE1DT1VOVEVSMTZIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIxN2gsIENTUl9NSFBNQ09VTlRFUjE3SCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMThoLCBDU1JfTUhQTUNPVU5URVIxOEgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjE5aCwgQ1NSX01IUE1DT1VOVEVSMTlIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIyMGgsIENTUl9NSFBNQ09VTlRFUjIwSCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMjFoLCBDU1JfTUhQTUNPVU5URVIyMUgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjIyaCwgQ1NSX01IUE1DT1VOVEVSMjJIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIyM2gsIENTUl9NSFBNQ09VTlRFUjIzSCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMjRoLCBDU1JfTUhQTUNPVU5URVIyNEgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjI1aCwgQ1NSX01IUE1DT1VOVEVSMjVIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIyNmgsIENTUl9NSFBNQ09VTlRFUjI2SCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMjdoLCBDU1JfTUhQTUNPVU5URVIyN0gpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjI4aCwgQ1NSX01IUE1DT1VOVEVSMjhIKQorREVDTEFSRV9DU1IobWhwbWNvdW50ZXIyOWgsIENTUl9NSFBNQ09VTlRFUjI5SCkKK0RFQ0xBUkVfQ1NSKG1ocG1jb3VudGVyMzBoLCBDU1JfTUhQTUNPVU5URVIzMEgpCitERUNMQVJFX0NTUihtaHBtY291bnRlcjMxaCwgQ1NSX01IUE1DT1VOVEVSMzFIKQorI2VuZGlmCisjaWZkZWYgREVDTEFSRV9DQVVTRQorREVDTEFSRV9DQVVTRSgibWlzYWxpZ25lZCBmZXRjaCIsIENBVVNFX01JU0FMSUdORURfRkVUQ0gpCitERUNMQVJFX0NBVVNFKCJmZXRjaCBhY2Nlc3MiLCBDQVVTRV9GRVRDSF9BQ0NFU1MpCitERUNMQVJFX0NBVVNFKCJpbGxlZ2FsIGluc3RydWN0aW9uIiwgQ0FVU0VfSUxMRUdBTF9JTlNUUlVDVElPTikKK0RFQ0xBUkVfQ0FVU0UoImJyZWFrcG9pbnQiLCBDQVVTRV9CUkVBS1BPSU5UKQorREVDTEFSRV9DQVVTRSgibWlzYWxpZ25lZCBsb2FkIiwgQ0FVU0VfTUlTQUxJR05FRF9MT0FEKQorREVDTEFSRV9DQVVTRSgibG9hZCBhY2Nlc3MiLCBDQVVTRV9MT0FEX0FDQ0VTUykKK0RFQ0xBUkVfQ0FVU0UoIm1pc2FsaWduZWQgc3RvcmUiLCBDQVVTRV9NSVNBTElHTkVEX1NUT1JFKQorREVDTEFSRV9DQVVTRSgic3RvcmUgYWNjZXNzIiwgQ0FVU0VfU1RPUkVfQUNDRVNTKQorREVDTEFSRV9DQVVTRSgidXNlcl9lY2FsbCIsIENBVVNFX1VTRVJfRUNBTEwpCitERUNMQVJFX0NBVVNFKCJzdXBlcnZpc29yX2VjYWxsIiwgQ0FVU0VfU1VQRVJWSVNPUl9FQ0FMTCkKK0RFQ0xBUkVfQ0FVU0UoImh5cGVydmlzb3JfZWNhbGwiLCBDQVVTRV9IWVBFUlZJU09SX0VDQUxMKQorREVDTEFSRV9DQVVTRSgibWFjaGluZV9lY2FsbCIsIENBVVNFX01BQ0hJTkVfRUNBTEwpCitERUNMQVJFX0NBVVNFKCJmZXRjaCBwYWdlIGZhdWx0IiwgQ0FVU0VfRkVUQ0hfUEFHRV9GQVVMVCkKK0RFQ0xBUkVfQ0FVU0UoImxvYWQgcGFnZSBmYXVsdCIsIENBVVNFX0xPQURfUEFHRV9GQVVMVCkKK0RFQ0xBUkVfQ0FVU0UoInN0b3JlIHBhZ2UgZmF1bHQiLCBDQVVTRV9TVE9SRV9QQUdFX0ZBVUxUKQorI2VuZGlmCisKKyNpbmNsdWRlICJzY3IxX3NwZWNpZmljLmgiCmRpZmYgLS1naXQgYS92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL3Jpc2N2X21hY3Jvcy5oIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9yaXNjdl9tYWNyb3MuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzkwYThjCi0tLSAvZGV2L251bGwKKysrIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9yaXNjdl9tYWNyb3MuaApAQCAtMCwwICsxLDgxOSBAQAorLy8gU2VlIExJQ0VOU0UgZm9yIGxpY2Vuc2UgZGV0YWlscy4KKworI2lmbmRlZiBfX1JJU0NWX01BQ1JPU19ICisjZGVmaW5lIF9fUklTQ1ZfTUFDUk9TX0gKKworI2luY2x1ZGUgInJpc2N2X2Nzcl9lbmNvZGluZy5oIgorI2luY2x1ZGUgInNjX3Rlc3QuaCIKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gQmVnaW4gTWFjcm8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBSVlRFU1RfUlY2NFUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAubWFjcm8gaW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAuZW5kbQorCisjZGVmaW5lIFJWVEVTVF9SVjY0VUYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC5tYWNybyBpbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIFJWVEVTVF9GUF9FTkFCTEU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC5lbmRtCisKKyNkZWZpbmUgUlZURVNUX1JWMzJVICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLm1hY3JvIGluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLmVuZG0KKworI2RlZmluZSBSVlRFU1RfUlYzMlVGICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAubWFjcm8gaW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBSVlRFU1RfRlBfRU5BQkxFOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAuZW5kbQorCisjZGVmaW5lIFJWVEVTVF9SVjY0TSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC5tYWNybyBpbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIFJWVEVTVF9FTkFCTEVfTUFDSElORTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC5lbmRtCisKKyNkZWZpbmUgUlZURVNUX1JWNjRTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLm1hY3JvIGluaXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgUlZURVNUX0VOQUJMRV9TVVBFUlZJU09SOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLmVuZG0KKworI2RlZmluZSBSVlRFU1RfUlYzMk0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAubWFjcm8gaW5pdDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBSVlRFU1RfRU5BQkxFX01BQ0hJTkU7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAuZW5kbQorCisjZGVmaW5lIFJWVEVTVF9SVjMyUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC5tYWNybyBpbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIFJWVEVTVF9FTkFCTEVfU1VQRVJWSVNPUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC5lbmRtCisKKyNpZiBfX3Jpc2N2X3hsZW4gPT0gNjQKKyMgZGVmaW5lIENIRUNLX1hMRU4gbGkgYTAsIDE7IHNsbGkgYTAsIGEwLCAzMTsgYmdleiBhMCwgMWY7IFJWVEVTVF9QQVNTOyAxOgorI2Vsc2UKKyMgZGVmaW5lIENIRUNLX1hMRU4gbGkgYTAsIDE7IHNsbGkgYTAsIGEwLCAzMTsgYmx0eiBhMCwgMWY7IFJWVEVTVF9QQVNTOyAxOgorI2VuZGlmCisKKyNkZWZpbmUgSU5JVF9QTVAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbGEgdDAsIDFmOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY3NydyBtdHZlYywgdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbGkgdDAsIC0xOyAgICAgICAgLyogU2V0IHVwIGEgUE1QIHRvIHBlcm1pdCBhbGwgYWNjZXNzZXMgKi8gICAgICAgICAgIFwKKyAgY3NydyBwbXBhZGRyMCwgdDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbGkgdDAsIFBNUF9OQVBPVCB8IFBNUF9SIHwgUE1QX1cgfCBQTVBfWDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY3NydyBwbXBjZmcwLCB0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgLmJhbGlnbiA0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisxOgorCisjZGVmaW5lIElOSVRfU1BUQlIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGxhIHQwLCAxZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNzcncgbXR2ZWMsIHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNzcndpIHNwdGJyLCAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIC5iYWxpZ24gNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorMToKKworI2RlZmluZSBERUxFR0FURV9OT19UUkFQUworCisjZGVmaW5lIFJWVEVTVF9FTkFCTEVfU1VQRVJWSVNPUiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGxpIGEwLCBNU1RBVFVTX01QUCAmIChNU1RBVFVTX01QUCA+PiAxKTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNzcnMgbXN0YXR1cywgYTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGxpIGEwLCBTSVBfU1NJUCB8IFNJUF9TVElQOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgIGNzcnMgbWlkZWxlZywgYTA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisKKyNkZWZpbmUgUlZURVNUX0VOQUJMRV9NQUNISU5FICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgbGkgYTAsIE1TVEFUVVNfTVBQOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY3NycyBtc3RhdHVzLCBhMDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKworI2RlZmluZSBSVlRFU1RfRlBfRU5BQkxFICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBsaSBhMCwgTVNUQVRVU19GUyAmIChNU1RBVFVTX0ZTID4+IDEpOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjc3JzIG1zdGF0dXMsIGEwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICBjc3J3aSBmY3NyLCAwCisKKyNkZWZpbmUgUklTQ1ZfTVVMVElDT1JFX0RJU0FCTEUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgY3NyciBhMCwgbWhhcnRpZDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgMTogYm5leiBhMCwgMWIKKworI2RlZmluZSBFWFRSQV9UVkVDX1VTRVIKKyNkZWZpbmUgRVhUUkFfVFZFQ19TVVBFUlZJU09SCisjZGVmaW5lIEVYVFJBX1RWRUNfSFlQRVJWSVNPUgorI2RlZmluZSBFWFRSQV9UVkVDX01BQ0hJTkUKKyNkZWZpbmUgRVhUUkFfSU5JVAorI2RlZmluZSBFWFRSQV9JTklUX1RJTUVSCisKKyNkZWZpbmUgSU5URVJSVVBUX0hBTkRMRVIgaiBvdGhlcl9leGNlcHRpb24gLyogTm8gaW50ZXJydXB0cyBzaG91bGQgb2NjdXIgKi8KKworI2RlZmluZSBSVlRFU1RfQ09ERV9CRUdJTiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAuc2VjdGlvbiAudGV4dC5pbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAub3JnIDB4QzAsIDB4MDA7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAuYmFsaWduICA2NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAud2VhayBzdHZlY19oYW5kbGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAud2VhayBtdHZlY19oYW5kbGVyOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAordHJhcF92ZWN0b3I6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiB0ZXN0IHdoZXRoZXIgdGhlIHRlc3QgY2FtZSBmcm9tIHBhc3MvZmFpbCAqLyAgICAgICAgICAgICAgICAgXAorICAgICAgICBjc3JyIGE0LCBtY2F1c2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsaSBhNSwgQ0FVU0VfVVNFUl9FQ0FMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBiZXEgYTQsIGE1LCBfcmVwb3J0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsaSBhNSwgQ0FVU0VfU1VQRVJWSVNPUl9FQ0FMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBiZXEgYTQsIGE1LCBfcmVwb3J0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsaSBhNSwgQ0FVU0VfTUFDSElORV9FQ0FMTDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBiZXEgYTQsIGE1LCBfcmVwb3J0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBpZiBhbiBtdHZlY19oYW5kbGVyIGlzIGRlZmluZWQsIGp1bXAgdG8gaXQgKi8gICAgICAgICAgICAgICAgXAorICAgICAgICBsYSBhNCwgbXR2ZWNfaGFuZGxlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBiZXF6IGE0LCAxZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBqciBhNDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiB3YXMgaXQgYW4gaW50ZXJydXB0IG9yIGFuIGV4Y2VwdGlvbj8gKi8gICAgICAgICAgICAgICAgICAgICAgXAorMTogICAgICBjc3JyIGE0LCBtY2F1c2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBiZ2V6IGE0LCBoYW5kbGVfZXhjZXB0aW9uOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBJTlRFUlJVUFRfSEFORExFUjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAoraGFuZGxlX2V4Y2VwdGlvbjogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiB3ZSBkb24ndCBrbm93IGhvdyB0byBoYW5kbGUgd2hhdGV2ZXIgdGhlIGV4Y2VwdGlvbiB3YXMgKi8gICAgXAorb3RoZXJfZXhjZXB0aW9uOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBzb21lIHVuaGFuZGxhYmxlIGV4Y2VwdGlvbiBvY2N1cnJlZCAqLyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsaSAgIGEwLCAweDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorX3JlcG9ydDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBqIHNjX2V4aXQ7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAuYmFsaWduICA2NDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAuZ2xvYmwgX3N0YXJ0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorX3N0YXJ0OiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBSSVNDVl9NVUxUSUNPUkVfRElTQUJMRTsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKklOSVRfU1BUQlI7Ki8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKklOSVRfUE1QOyovICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBERUxFR0FURV9OT19UUkFQUzsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsaSBURVNUTlVNLCAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsYSB0MCwgdHJhcF92ZWN0b3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjc3J3IG10dmVjLCB0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBDSEVDS19YTEVOOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAvKiBpZiBhbiBzdHZlY19oYW5kbGVyIGlzIGRlZmluZWQsIGRlbGVnYXRlIGV4Y2VwdGlvbnMgdG8gaXQgKi8gXAorICAgICAgICBsYSB0MCwgc3R2ZWNfaGFuZGxlcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBiZXF6IHQwLCAxZjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjc3J3IHN0dmVjLCB0MDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsaSB0MCwgKDEgPDwgQ0FVU0VfTE9BRF9QQUdFX0ZBVUxUKSB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKDEgPDwgQ0FVU0VfU1RPUkVfUEFHRV9GQVVMVCkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKDEgPDwgQ0FVU0VfRkVUQ0hfUEFHRV9GQVVMVCkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKDEgPDwgQ0FVU0VfTUlTQUxJR05FRF9GRVRDSCkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKDEgPDwgQ0FVU0VfVVNFUl9FQ0FMTCkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAgICAgKDEgPDwgQ0FVU0VfQlJFQUtQT0lOVCk7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjc3J3IG1lZGVsZWcsIHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjc3JyIHQxLCBtZWRlbGVnOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBibmUgdDAsIHQxLCBvdGhlcl9leGNlcHRpb247ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorMTogICAgICBjc3J3aSBtc3RhdHVzLCAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBpbml0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFWFRSQV9JTklUOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBFWFRSQV9JTklUX1RJTUVSOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBsYSB0MCwgX3J1bl90ZXN0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjc3J3IG1lcGMsIHQwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBjc3JyIGEwLCBtaGFydGlkOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICBtcmV0OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAuc2VjdGlvbiAudGV4dDsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorX3J1bl90ZXN0OgorCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisvLyBFbmQgTWFjcm8KKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBSVlRFU1RfQ09ERV9FTkQgZWNhbGw6IGVjYWxsCisKKy8vLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKy8vIFBhc3MvRmFpbCBNYWNybworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIFJWVEVTVF9QQVNTICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGZlbmNlOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIG12IGExLCBURVNUTlVNOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGxpICBhMCwgMHgwOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIGVjYWxsCisKKyNkZWZpbmUgVEVTVE5VTSB4MjgKKyNkZWZpbmUgUlZURVNUX0ZBSUwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZmVuY2U7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbXYgYTEsIFRFU1ROVU07ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgbGkgIGEwLCAweDE7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgZWNhbGwKKworLy8tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLy8gRGF0YSBTZWN0aW9uIE1hY3JvCisvLy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgRVhUUkFfREFUQQorCisjZGVmaW5lIFJWVEVTVF9EQVRBX0JFR0lOICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgRVhUUkFfREFUQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAucHVzaHNlY3Rpb24gLnRvaG9zdCwiYXciLEBwcm9nYml0czsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5iYWxpZ24gNjQ7IC5nbG9iYWwgdG9ob3N0OyB0b2hvc3Q6IC5kd29yZCAwOyAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLmJhbGlnbiA2NDsgLmdsb2JhbCBmcm9taG9zdDsgZnJvbWhvc3Q6IC5kd29yZCAwOyAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAucG9wc2VjdGlvbjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5iYWxpZ24gMTY7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgLmdsb2JhbCBiZWdpbl9yZWdzdGF0ZTsgIGJlZ2luX3JlZ3N0YXRlOiAuZHdvcmQgMDsgLmR3b3JkIDA7IC5kd29yZCAwOyAgXAorICAgICAgICAuYmFsaWduIDE2OyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgIC5nbG9iYWwgYmVnaW5fc2lnbmF0dXJlOyBiZWdpbl9zaWduYXR1cmU6CisKKyNkZWZpbmUgUlZURVNUX0RBVEFfRU5EIC5iYWxpZ24gMTY7IC5nbG9iYWwgZW5kX3NpZ25hdHVyZTsgZW5kX3NpZ25hdHVyZToKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIEhlbHBlciBtYWNyb3MKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIE1BU0tfWExFTih4KSAoKHgpICYgKCgxIDw8IChfX3Jpc2N2X3hsZW4gLSAxKSA8PCAxKSAtIDEpKQorCisjZGVmaW5lIFRFU1RfQ0FTRSggdGVzdG51bSwgdGVzdHJlZywgY29ycmVjdHZhbCwgY29kZS4uLiApIFwKK3Rlc3RfICMjIHRlc3RudW06IFwKKyAgICBjb2RlOyBcCisgICAgbGkgIHgyOSwgTUFTS19YTEVOKGNvcnJlY3R2YWwpOyBcCisgICAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgICBibmUgdGVzdHJlZywgeDI5LCBmYWlsOworCisjIFdlIHVzZSBhIG1hY3JvIGhhY2sgdG8gc2ltcGlmeSBjb2RlIGdlbmVyYXRpb24gZm9yIHZhcmlvdXMgbnVtYmVycworIyBvZiBidWJibGUgY3ljbGVzLgorCisjZGVmaW5lIFRFU1RfSU5TRVJUX05PUFNfMAorI2RlZmluZSBURVNUX0lOU0VSVF9OT1BTXzEgIG5vcDsgVEVTVF9JTlNFUlRfTk9QU18wCisjZGVmaW5lIFRFU1RfSU5TRVJUX05PUFNfMiAgbm9wOyBURVNUX0lOU0VSVF9OT1BTXzEKKyNkZWZpbmUgVEVTVF9JTlNFUlRfTk9QU18zICBub3A7IFRFU1RfSU5TRVJUX05PUFNfMgorI2RlZmluZSBURVNUX0lOU0VSVF9OT1BTXzQgIG5vcDsgVEVTVF9JTlNFUlRfTk9QU18zCisjZGVmaW5lIFRFU1RfSU5TRVJUX05PUFNfNSAgbm9wOyBURVNUX0lOU0VSVF9OT1BTXzQKKyNkZWZpbmUgVEVTVF9JTlNFUlRfTk9QU182ICBub3A7IFRFU1RfSU5TRVJUX05PUFNfNQorI2RlZmluZSBURVNUX0lOU0VSVF9OT1BTXzcgIG5vcDsgVEVTVF9JTlNFUlRfTk9QU182CisjZGVmaW5lIFRFU1RfSU5TRVJUX05PUFNfOCAgbm9wOyBURVNUX0lOU0VSVF9OT1BTXzcKKyNkZWZpbmUgVEVTVF9JTlNFUlRfTk9QU185ICBub3A7IFRFU1RfSU5TRVJUX05PUFNfOAorI2RlZmluZSBURVNUX0lOU0VSVF9OT1BTXzEwIG5vcDsgVEVTVF9JTlNFUlRfTk9QU185CisKKworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisjIFJWNjRVSSBNQUNST1MKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgZm9yIGluc3RydWN0aW9ucyB3aXRoIGltbWVkaWF0ZSBvcGVyYW5kCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBTRVhUX0lNTSh4KSAoKHgpIHwgKC0oKCh4KSA+PiAxMSkgJiAxKSA8PCAxMSkpCisKKyNkZWZpbmUgVEVTVF9JTU1fT1AoIHRlc3RudW0sIGluc3QsIHJlc3VsdCwgdmFsMSwgaW1tICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDMsIHJlc3VsdCwgXAorICAgICAgbGkgIHgxLCBNQVNLX1hMRU4odmFsMSk7IFwKKyAgICAgIGluc3QgeDMsIHgxLCBTRVhUX0lNTShpbW0pOyBcCisgICAgKQorCisjZGVmaW5lIFRFU1RfSU1NX09QX1JWQyggdGVzdG51bSwgaW5zdCwgcmVzdWx0LCB2YWwxLCBpbW0gKSBcCisgICAgVEVTVF9DQVNFKCB0ZXN0bnVtLCB4MSwgcmVzdWx0LCBcCisgICAgICBsaSAgeDEsIHZhbDE7IFwKKyAgICAgIGluc3QgeDEsIGltbTsgXAorICAgICkKKworI2RlZmluZSBURVNUX0lNTV9TUkMxX0VRX0RFU1QoIHRlc3RudW0sIGluc3QsIHJlc3VsdCwgdmFsMSwgaW1tICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDEsIHJlc3VsdCwgXAorICAgICAgbGkgIHgxLCBNQVNLX1hMRU4odmFsMSk7IFwKKyAgICAgIGluc3QgeDEsIHgxLCBTRVhUX0lNTShpbW0pOyBcCisgICAgKQorCisjZGVmaW5lIFRFU1RfSU1NX0RFU1RfQllQQVNTKCB0ZXN0bnVtLCBub3BfY3ljbGVzLCBpbnN0LCByZXN1bHQsIHZhbDEsIGltbSApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHg2LCByZXN1bHQsIFwKKyAgICAgIGxpICB4NCwgMDsgXAorMTogICAgbGkgIHgxLCBNQVNLX1hMRU4odmFsMSk7IFwKKyAgICAgIGluc3QgeDMsIHgxLCBTRVhUX0lNTShpbW0pOyBcCisgICAgICBURVNUX0lOU0VSVF9OT1BTXyAjIyBub3BfY3ljbGVzIFwKKyAgICAgIGFkZGkgIHg2LCB4MywgMDsgXAorICAgICAgYWRkaSAgeDQsIHg0LCAxOyBcCisgICAgICBsaSAgeDUsIDI7IFwKKyAgICAgIGJuZSB4NCwgeDUsIDFiIFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9JTU1fU1JDMV9CWVBBU1MoIHRlc3RudW0sIG5vcF9jeWNsZXMsIGluc3QsIHJlc3VsdCwgdmFsMSwgaW1tICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDMsIHJlc3VsdCwgXAorICAgICAgbGkgIHg0LCAwOyBcCisxOiAgICBsaSAgeDEsIE1BU0tfWExFTih2YWwxKTsgXAorICAgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgbm9wX2N5Y2xlcyBcCisgICAgICBpbnN0IHgzLCB4MSwgU0VYVF9JTU0oaW1tKTsgXAorICAgICAgYWRkaSAgeDQsIHg0LCAxOyBcCisgICAgICBsaSAgeDUsIDI7IFwKKyAgICAgIGJuZSB4NCwgeDUsIDFiIFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9JTU1fWkVST1NSQzEoIHRlc3RudW0sIGluc3QsIHJlc3VsdCwgaW1tICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDEsIHJlc3VsdCwgXAorICAgICAgaW5zdCB4MSwgeDAsIFNFWFRfSU1NKGltbSk7IFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9JTU1fWkVST0RFU1QoIHRlc3RudW0sIGluc3QsIHZhbDEsIGltbSApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHgwLCAwLCBcCisgICAgICBsaSAgeDEsIE1BU0tfWExFTih2YWwxKTsgXAorICAgICAgaW5zdCB4MCwgeDEsIFNFWFRfSU1NKGltbSk7IFwKKyAgICApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyBmb3IgdmVjdG9yIGNvbmZpZyBpbnN0cnVjdGlvbnMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIFRFU1RfVlNFVENGR0lWTCggdGVzdG51bSwgbnhwciwgbmZwciwgYmFuaywgdmwsIHJlc3VsdCApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHgxLCByZXN1bHQsIFwKKyAgICAgIGxpIHgxLCAoYmFuayA8PCAxMik7IFwKKyAgICAgIHZzZXRjZmcgeDEsbnhwcixuZnByOyBcCisgICAgICBsaSB4MSwgdmw7IFwKKyAgICAgIHZzZXR2bCB4MSx4MTsgXAorICAgICkKKworI2RlZmluZSBURVNUX1ZWQ0ZHKCB0ZXN0bnVtLCBueHByLCBuZnByLCBiYW5rLCB2bCwgcmVzdWx0ICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDEsIHJlc3VsdCwgXAorICAgICAgbGkgeDEsIChiYW5rIDw8IDEyKSB8IChuZnByIDw8IDYpIHwgbnhwcjsgXAorICAgICAgdnNldGNmZyB4MTsgXAorICAgICAgbGkgeDEsIHZsOyBcCisgICAgICB2c2V0dmwgeDEseDE7IFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9WU0VUVkwoIHRlc3RudW0sIG54cHIsIG5mcHIsIGJhbmssIHZsLCByZXN1bHQgKSBcCisgICAgVEVTVF9DQVNFKCB0ZXN0bnVtLCB4MSwgcmVzdWx0LCBcCisgICAgICBsaSB4MSwgKGJhbmsgPDwgMTIpOyBcCisgICAgICB2c2V0Y2ZnIHgxLG54cHIsbmZwcjsgXAorICAgICAgbGkgeDEsIHZsOyBcCisgICAgICB2c2V0dmwgeDEsIHgxOyBcCisgICAgKQorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdHMgZm9yIGFuIGluc3RydWN0aW9uIHdpdGggcmVnaXN0ZXIgb3BlcmFuZHMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIFRFU1RfUl9PUCggdGVzdG51bSwgaW5zdCwgcmVzdWx0LCB2YWwxICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDMsIHJlc3VsdCwgXAorICAgICAgbGkgIHgxLCB2YWwxOyBcCisgICAgICBpbnN0IHgzLCB4MTsgXAorICAgICkKKworI2RlZmluZSBURVNUX1JfU1JDMV9FUV9ERVNUKCB0ZXN0bnVtLCBpbnN0LCByZXN1bHQsIHZhbDEgKSBcCisgICAgVEVTVF9DQVNFKCB0ZXN0bnVtLCB4MSwgcmVzdWx0LCBcCisgICAgICBsaSAgeDEsIHZhbDE7IFwKKyAgICAgIGluc3QgeDEsIHgxOyBcCisgICAgKQorCisjZGVmaW5lIFRFU1RfUl9ERVNUX0JZUEFTUyggdGVzdG51bSwgbm9wX2N5Y2xlcywgaW5zdCwgcmVzdWx0LCB2YWwxICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDYsIHJlc3VsdCwgXAorICAgICAgbGkgIHg0LCAwOyBcCisxOiAgICBsaSAgeDEsIHZhbDE7IFwKKyAgICAgIGluc3QgeDMsIHgxOyBcCisgICAgICBURVNUX0lOU0VSVF9OT1BTXyAjIyBub3BfY3ljbGVzIFwKKyAgICAgIGFkZGkgIHg2LCB4MywgMDsgXAorICAgICAgYWRkaSAgeDQsIHg0LCAxOyBcCisgICAgICBsaSAgeDUsIDI7IFwKKyAgICAgIGJuZSB4NCwgeDUsIDFiIFwKKyAgICApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyBmb3IgYW4gaW5zdHJ1Y3Rpb24gd2l0aCByZWdpc3Rlci1yZWdpc3RlciBvcGVyYW5kcworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyNkZWZpbmUgVEVTVF9SUl9PUCggdGVzdG51bSwgaW5zdCwgcmVzdWx0LCB2YWwxLCB2YWwyICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDMsIHJlc3VsdCwgXAorICAgICAgbGkgIHgxLCBNQVNLX1hMRU4odmFsMSk7IFwKKyAgICAgIGxpICB4MiwgTUFTS19YTEVOKHZhbDIpOyBcCisgICAgICBpbnN0IHgzLCB4MSwgeDI7IFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9SUl9TUkMxX0VRX0RFU1QoIHRlc3RudW0sIGluc3QsIHJlc3VsdCwgdmFsMSwgdmFsMiApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHgxLCByZXN1bHQsIFwKKyAgICAgIGxpICB4MSwgTUFTS19YTEVOKHZhbDEpOyBcCisgICAgICBsaSAgeDIsIE1BU0tfWExFTih2YWwyKTsgXAorICAgICAgaW5zdCB4MSwgeDEsIHgyOyBcCisgICAgKQorCisjZGVmaW5lIFRFU1RfUlJfU1JDMl9FUV9ERVNUKCB0ZXN0bnVtLCBpbnN0LCByZXN1bHQsIHZhbDEsIHZhbDIgKSBcCisgICAgVEVTVF9DQVNFKCB0ZXN0bnVtLCB4MiwgcmVzdWx0LCBcCisgICAgICBsaSAgeDEsIE1BU0tfWExFTih2YWwxKTsgXAorICAgICAgbGkgIHgyLCBNQVNLX1hMRU4odmFsMik7IFwKKyAgICAgIGluc3QgeDIsIHgxLCB4MjsgXAorICAgICkKKworI2RlZmluZSBURVNUX1JSX1NSQzEyX0VRX0RFU1QoIHRlc3RudW0sIGluc3QsIHJlc3VsdCwgdmFsMSApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHgxLCByZXN1bHQsIFwKKyAgICAgIGxpICB4MSwgTUFTS19YTEVOKHZhbDEpOyBcCisgICAgICBpbnN0IHgxLCB4MSwgeDE7IFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9SUl9ERVNUX0JZUEFTUyggdGVzdG51bSwgbm9wX2N5Y2xlcywgaW5zdCwgcmVzdWx0LCB2YWwxLCB2YWwyICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDYsIHJlc3VsdCwgXAorICAgICAgbGkgIHg0LCAwOyBcCisxOiAgICBsaSAgeDEsIE1BU0tfWExFTih2YWwxKTsgXAorICAgICAgbGkgIHgyLCBNQVNLX1hMRU4odmFsMik7IFwKKyAgICAgIGluc3QgeDMsIHgxLCB4MjsgXAorICAgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgbm9wX2N5Y2xlcyBcCisgICAgICBhZGRpICB4NiwgeDMsIDA7IFwKKyAgICAgIGFkZGkgIHg0LCB4NCwgMTsgXAorICAgICAgbGkgIHg1LCAyOyBcCisgICAgICBibmUgeDQsIHg1LCAxYiBcCisgICAgKQorCisjZGVmaW5lIFRFU1RfUlJfU1JDMTJfQllQQVNTKCB0ZXN0bnVtLCBzcmMxX25vcHMsIHNyYzJfbm9wcywgaW5zdCwgcmVzdWx0LCB2YWwxLCB2YWwyICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDMsIHJlc3VsdCwgXAorICAgICAgbGkgIHg0LCAwOyBcCisxOiAgICBsaSAgeDEsIE1BU0tfWExFTih2YWwxKTsgXAorICAgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgc3JjMV9ub3BzIFwKKyAgICAgIGxpICB4MiwgTUFTS19YTEVOKHZhbDIpOyBcCisgICAgICBURVNUX0lOU0VSVF9OT1BTXyAjIyBzcmMyX25vcHMgXAorICAgICAgaW5zdCB4MywgeDEsIHgyOyBcCisgICAgICBhZGRpICB4NCwgeDQsIDE7IFwKKyAgICAgIGxpICB4NSwgMjsgXAorICAgICAgYm5lIHg0LCB4NSwgMWIgXAorICAgICkKKworI2RlZmluZSBURVNUX1JSX1NSQzIxX0JZUEFTUyggdGVzdG51bSwgc3JjMV9ub3BzLCBzcmMyX25vcHMsIGluc3QsIHJlc3VsdCwgdmFsMSwgdmFsMiApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHgzLCByZXN1bHQsIFwKKyAgICAgIGxpICB4NCwgMDsgXAorMTogICAgbGkgIHgyLCBNQVNLX1hMRU4odmFsMik7IFwKKyAgICAgIFRFU1RfSU5TRVJUX05PUFNfICMjIHNyYzFfbm9wcyBcCisgICAgICBsaSAgeDEsIE1BU0tfWExFTih2YWwxKTsgXAorICAgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgc3JjMl9ub3BzIFwKKyAgICAgIGluc3QgeDMsIHgxLCB4MjsgXAorICAgICAgYWRkaSAgeDQsIHg0LCAxOyBcCisgICAgICBsaSAgeDUsIDI7IFwKKyAgICAgIGJuZSB4NCwgeDUsIDFiIFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9SUl9aRVJPU1JDMSggdGVzdG51bSwgaW5zdCwgcmVzdWx0LCB2YWwgKSBcCisgICAgVEVTVF9DQVNFKCB0ZXN0bnVtLCB4MiwgcmVzdWx0LCBcCisgICAgICBsaSB4MSwgTUFTS19YTEVOKHZhbCk7IFwKKyAgICAgIGluc3QgeDIsIHgwLCB4MTsgXAorICAgICkKKworI2RlZmluZSBURVNUX1JSX1pFUk9TUkMyKCB0ZXN0bnVtLCBpbnN0LCByZXN1bHQsIHZhbCApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHgyLCByZXN1bHQsIFwKKyAgICAgIGxpIHgxLCBNQVNLX1hMRU4odmFsKTsgXAorICAgICAgaW5zdCB4MiwgeDEsIHgwOyBcCisgICAgKQorCisjZGVmaW5lIFRFU1RfUlJfWkVST1NSQzEyKCB0ZXN0bnVtLCBpbnN0LCByZXN1bHQgKSBcCisgICAgVEVTVF9DQVNFKCB0ZXN0bnVtLCB4MSwgcmVzdWx0LCBcCisgICAgICBpbnN0IHgxLCB4MCwgeDA7IFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9SUl9aRVJPREVTVCggdGVzdG51bSwgaW5zdCwgdmFsMSwgdmFsMiApIFwKKyAgICBURVNUX0NBU0UoIHRlc3RudW0sIHgwLCAwLCBcCisgICAgICBsaSB4MSwgTUFTS19YTEVOKHZhbDEpOyBcCisgICAgICBsaSB4MiwgTUFTS19YTEVOKHZhbDIpOyBcCisgICAgICBpbnN0IHgwLCB4MSwgeDI7IFwKKyAgICApCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IG1lbW9yeSBpbnN0cnVjdGlvbnMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIFRFU1RfTERfT1AoIHRlc3RudW0sIGluc3QsIHJlc3VsdCwgb2Zmc2V0LCBiYXNlICkgXAorICAgIFRFU1RfQ0FTRSggdGVzdG51bSwgeDMsIHJlc3VsdCwgXAorICAgICAgbGEgIHgxLCBiYXNlOyBcCisgICAgICBpbnN0IHgzLCBvZmZzZXQoeDEpOyBcCisgICAgKQorCisjZGVmaW5lIFRFU1RfU1RfT1AoIHRlc3RudW0sIGxvYWRfaW5zdCwgc3RvcmVfaW5zdCwgcmVzdWx0LCBvZmZzZXQsIGJhc2UgKSBcCisgICAgVEVTVF9DQVNFKCB0ZXN0bnVtLCB4MywgcmVzdWx0LCBcCisgICAgICBsYSAgeDEsIGJhc2U7IFwKKyAgICAgIGxpICB4MiwgcmVzdWx0OyBcCisgICAgICBzdG9yZV9pbnN0IHgyLCBvZmZzZXQoeDEpOyBcCisgICAgICBsb2FkX2luc3QgeDMsIG9mZnNldCh4MSk7IFwKKyAgICApCisKKyNkZWZpbmUgVEVTVF9MRF9ERVNUX0JZUEFTUyggdGVzdG51bSwgbm9wX2N5Y2xlcywgaW5zdCwgcmVzdWx0LCBvZmZzZXQsIGJhc2UgKSBcCit0ZXN0XyAjIyB0ZXN0bnVtOiBcCisgICAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgICBsaSAgeDQsIDA7IFwKKzE6ICBsYSAgeDEsIGJhc2U7IFwKKyAgICBpbnN0IHgzLCBvZmZzZXQoeDEpOyBcCisgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgbm9wX2N5Y2xlcyBcCisgICAgYWRkaSAgeDYsIHgzLCAwOyBcCisgICAgbGkgIHgyOSwgcmVzdWx0OyBcCisgICAgYm5lIHg2LCB4MjksIGZhaWw7IFwKKyAgICBhZGRpICB4NCwgeDQsIDE7IFwKKyAgICBsaSAgeDUsIDI7IFwKKyAgICBibmUgeDQsIHg1LCAxYjsgXAorCisjZGVmaW5lIFRFU1RfTERfU1JDMV9CWVBBU1MoIHRlc3RudW0sIG5vcF9jeWNsZXMsIGluc3QsIHJlc3VsdCwgb2Zmc2V0LCBiYXNlICkgXAordGVzdF8gIyMgdGVzdG51bTogXAorICAgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgICAgbGkgIHg0LCAwOyBcCisxOiAgbGEgIHgxLCBiYXNlOyBcCisgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgbm9wX2N5Y2xlcyBcCisgICAgaW5zdCB4Mywgb2Zmc2V0KHgxKTsgXAorICAgIGxpICB4MjksIHJlc3VsdDsgXAorICAgIGJuZSB4MywgeDI5LCBmYWlsOyBcCisgICAgYWRkaSAgeDQsIHg0LCAxOyBcCisgICAgbGkgIHg1LCAyOyBcCisgICAgYm5lIHg0LCB4NSwgMWIgXAorCisjZGVmaW5lIFRFU1RfU1RfU1JDMTJfQllQQVNTKCB0ZXN0bnVtLCBzcmMxX25vcHMsIHNyYzJfbm9wcywgbG9hZF9pbnN0LCBzdG9yZV9pbnN0LCByZXN1bHQsIG9mZnNldCwgYmFzZSApIFwKK3Rlc3RfICMjIHRlc3RudW06IFwKKyAgICBsaSAgVEVTVE5VTSwgdGVzdG51bTsgXAorICAgIGxpICB4NCwgMDsgXAorMTogIGxpICB4MSwgcmVzdWx0OyBcCisgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgc3JjMV9ub3BzIFwKKyAgICBsYSAgeDIsIGJhc2U7IFwKKyAgICBURVNUX0lOU0VSVF9OT1BTXyAjIyBzcmMyX25vcHMgXAorICAgIHN0b3JlX2luc3QgeDEsIG9mZnNldCh4Mik7IFwKKyAgICBsb2FkX2luc3QgeDMsIG9mZnNldCh4Mik7IFwKKyAgICBsaSAgeDI5LCByZXN1bHQ7IFwKKyAgICBibmUgeDMsIHgyOSwgZmFpbDsgXAorICAgIGFkZGkgIHg0LCB4NCwgMTsgXAorICAgIGxpICB4NSwgMjsgXAorICAgIGJuZSB4NCwgeDUsIDFiIFwKKworI2RlZmluZSBURVNUX1NUX1NSQzIxX0JZUEFTUyggdGVzdG51bSwgc3JjMV9ub3BzLCBzcmMyX25vcHMsIGxvYWRfaW5zdCwgc3RvcmVfaW5zdCwgcmVzdWx0LCBvZmZzZXQsIGJhc2UgKSBcCit0ZXN0XyAjIyB0ZXN0bnVtOiBcCisgICAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgICBsaSAgeDQsIDA7IFwKKzE6ICBsYSAgeDIsIGJhc2U7IFwKKyAgICBURVNUX0lOU0VSVF9OT1BTXyAjIyBzcmMxX25vcHMgXAorICAgIGxpICB4MSwgcmVzdWx0OyBcCisgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgc3JjMl9ub3BzIFwKKyAgICBzdG9yZV9pbnN0IHgxLCBvZmZzZXQoeDIpOyBcCisgICAgbG9hZF9pbnN0IHgzLCBvZmZzZXQoeDIpOyBcCisgICAgbGkgIHgyOSwgcmVzdWx0OyBcCisgICAgYm5lIHgzLCB4MjksIGZhaWw7IFwKKyAgICBhZGRpICB4NCwgeDQsIDE7IFwKKyAgICBsaSAgeDUsIDI7IFwKKyAgICBibmUgeDQsIHg1LCAxYiBcCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGJyYW5jaCBpbnN0cnVjdGlvbnMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIFRFU1RfQlIxX09QX1RBS0VOKCB0ZXN0bnVtLCBpbnN0LCB2YWwxICkgXAordGVzdF8gIyMgdGVzdG51bTogXAorICAgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgICAgbGkgIHgxLCB2YWwxOyBcCisgICAgaW5zdCB4MSwgMmY7IFwKKyAgICBibmUgeDAsIFRFU1ROVU0sIGZhaWw7IFwKKzE6ICBibmUgeDAsIFRFU1ROVU0sIDNmOyBcCisyOiAgaW5zdCB4MSwgMWI7IFwKKyAgICBibmUgeDAsIFRFU1ROVU0sIGZhaWw7IFwKKzM6CisKKyNkZWZpbmUgVEVTVF9CUjFfT1BfTk9UVEFLRU4oIHRlc3RudW0sIGluc3QsIHZhbDEgKSBcCit0ZXN0XyAjIyB0ZXN0bnVtOiBcCisgICAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgICBsaSAgeDEsIHZhbDE7IFwKKyAgICBpbnN0IHgxLCAxZjsgXAorICAgIGJuZSB4MCwgVEVTVE5VTSwgMmY7IFwKKzE6ICBibmUgeDAsIFRFU1ROVU0sIGZhaWw7IFwKKzI6ICBpbnN0IHgxLCAxYjsgXAorMzoKKworI2RlZmluZSBURVNUX0JSMV9TUkMxX0JZUEFTUyggdGVzdG51bSwgbm9wX2N5Y2xlcywgaW5zdCwgdmFsMSApIFwKK3Rlc3RfICMjIHRlc3RudW06IFwKKyAgICBsaSAgVEVTVE5VTSwgdGVzdG51bTsgXAorICAgIGxpICB4NCwgMDsgXAorMTogIGxpICB4MSwgdmFsMTsgXAorICAgIFRFU1RfSU5TRVJUX05PUFNfICMjIG5vcF9jeWNsZXMgXAorICAgIGluc3QgeDEsIGZhaWw7IFwKKyAgICBhZGRpICB4NCwgeDQsIDE7IFwKKyAgICBsaSAgeDUsIDI7IFwKKyAgICBibmUgeDQsIHg1LCAxYiBcCisKKyNkZWZpbmUgVEVTVF9CUjJfT1BfVEFLRU4oIHRlc3RudW0sIGluc3QsIHZhbDEsIHZhbDIgKSBcCit0ZXN0XyAjIyB0ZXN0bnVtOiBcCisgICAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgICBsaSAgeDEsIHZhbDE7IFwKKyAgICBsaSAgeDIsIHZhbDI7IFwKKyAgICBpbnN0IHgxLCB4MiwgMmY7IFwKKyAgICBibmUgeDAsIFRFU1ROVU0sIGZhaWw7IFwKKzE6ICBibmUgeDAsIFRFU1ROVU0sIDNmOyBcCisyOiAgaW5zdCB4MSwgeDIsIDFiOyBcCisgICAgYm5lIHgwLCBURVNUTlVNLCBmYWlsOyBcCiszOgorCisjZGVmaW5lIFRFU1RfQlIyX09QX05PVFRBS0VOKCB0ZXN0bnVtLCBpbnN0LCB2YWwxLCB2YWwyICkgXAordGVzdF8gIyMgdGVzdG51bTogXAorICAgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgICAgbGkgIHgxLCB2YWwxOyBcCisgICAgbGkgIHgyLCB2YWwyOyBcCisgICAgaW5zdCB4MSwgeDIsIDFmOyBcCisgICAgYm5lIHgwLCBURVNUTlVNLCAyZjsgXAorMTogIGJuZSB4MCwgVEVTVE5VTSwgZmFpbDsgXAorMjogIGluc3QgeDEsIHgyLCAxYjsgXAorMzoKKworI2RlZmluZSBURVNUX0JSMl9TUkMxMl9CWVBBU1MoIHRlc3RudW0sIHNyYzFfbm9wcywgc3JjMl9ub3BzLCBpbnN0LCB2YWwxLCB2YWwyICkgXAordGVzdF8gIyMgdGVzdG51bTogXAorICAgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgICAgbGkgIHg0LCAwOyBcCisxOiAgbGkgIHgxLCB2YWwxOyBcCisgICAgVEVTVF9JTlNFUlRfTk9QU18gIyMgc3JjMV9ub3BzIFwKKyAgICBsaSAgeDIsIHZhbDI7IFwKKyAgICBURVNUX0lOU0VSVF9OT1BTXyAjIyBzcmMyX25vcHMgXAorICAgIGluc3QgeDEsIHgyLCBmYWlsOyBcCisgICAgYWRkaSAgeDQsIHg0LCAxOyBcCisgICAgbGkgIHg1LCAyOyBcCisgICAgYm5lIHg0LCB4NSwgMWIgXAorCisjZGVmaW5lIFRFU1RfQlIyX1NSQzIxX0JZUEFTUyggdGVzdG51bSwgc3JjMV9ub3BzLCBzcmMyX25vcHMsIGluc3QsIHZhbDEsIHZhbDIgKSBcCit0ZXN0XyAjIyB0ZXN0bnVtOiBcCisgICAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgICBsaSAgeDQsIDA7IFwKKzE6ICBsaSAgeDIsIHZhbDI7IFwKKyAgICBURVNUX0lOU0VSVF9OT1BTXyAjIyBzcmMxX25vcHMgXAorICAgIGxpICB4MSwgdmFsMTsgXAorICAgIFRFU1RfSU5TRVJUX05PUFNfICMjIHNyYzJfbm9wcyBcCisgICAgaW5zdCB4MSwgeDIsIGZhaWw7IFwKKyAgICBhZGRpICB4NCwgeDQsIDE7IFwKKyAgICBsaSAgeDUsIDI7IFwKKyAgICBibmUgeDQsIHg1LCAxYiBcCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0IGp1bXAgaW5zdHJ1Y3Rpb25zCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBURVNUX0pSX1NSQzFfQllQQVNTKCB0ZXN0bnVtLCBub3BfY3ljbGVzLCBpbnN0ICkgXAordGVzdF8gIyMgdGVzdG51bTogXAorICAgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgICAgbGkgIHg0LCAwOyBcCisxOiAgbGEgIHg2LCAyZjsgXAorICAgIFRFU1RfSU5TRVJUX05PUFNfICMjIG5vcF9jeWNsZXMgXAorICAgIGluc3QgeDY7IFwKKyAgICBibmUgeDAsIFRFU1ROVU0sIGZhaWw7IFwKKzI6ICBhZGRpICB4NCwgeDQsIDE7IFwKKyAgICBsaSAgeDUsIDI7IFwKKyAgICBibmUgeDQsIHg1LCAxYiBcCisKKyNkZWZpbmUgVEVTVF9KQUxSX1NSQzFfQllQQVNTKCB0ZXN0bnVtLCBub3BfY3ljbGVzLCBpbnN0ICkgXAordGVzdF8gIyMgdGVzdG51bTogXAorICAgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgICAgbGkgIHg0LCAwOyBcCisxOiAgbGEgIHg2LCAyZjsgXAorICAgIFRFU1RfSU5TRVJUX05PUFNfICMjIG5vcF9jeWNsZXMgXAorICAgIGluc3QgeDE5LCB4NiwgMDsgXAorICAgIGJuZSB4MCwgVEVTVE5VTSwgZmFpbDsgXAorMjogIGFkZGkgIHg0LCB4NCwgMTsgXAorICAgIGxpICB4NSwgMjsgXAorICAgIGJuZSB4NCwgeDUsIDFiIFwKKworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUlY2NFVGIE1BQ1JPUworIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIyBUZXN0cyBmbG9hdGluZy1wb2ludCBpbnN0cnVjdGlvbnMKKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIHFOYU5mIDBmOjdmYzAwMDAwCisjZGVmaW5lIHNOYU5mIDBmOjdmODAwMDAxCisjZGVmaW5lIHFOYU4gMGQ6N2ZmODAwMDAwMDAwMDAwMAorI2RlZmluZSBzTmFOIDBkOjdmZjAwMDAwMDAwMDAwMDEKKworI2RlZmluZSBURVNUX0ZQX09QX1NfSU5URVJOQUwoIHRlc3RudW0sIGZsYWdzLCByZXN1bHQsIHZhbDEsIHZhbDIsIHZhbDMsIGNvZGUuLi4gKSBcCit0ZXN0XyAjIyB0ZXN0bnVtOiBcCisgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgIGxhICBhMCwgdGVzdF8gIyMgdGVzdG51bSAjIyBfZGF0YSA7XAorICBmbHcgZjAsIDAoYTApOyBcCisgIGZsdyBmMSwgNChhMCk7IFwKKyAgZmx3IGYyLCA4KGEwKTsgXAorICBsdyAgYTMsIDEyKGEwKTsgXAorICBjb2RlOyBcCisgIGZzZmxhZ3MgYTEsIHgwOyBcCisgIGxpIGEyLCBmbGFnczsgXAorICBibmUgYTAsIGEzLCBmYWlsOyBcCisgIGJuZSBhMSwgYTIsIGZhaWw7IFwKKyAgaiAyZjsgXAorICAuYmFsaWduIDQ7IFwKKyAgLmRhdGE7IFwKKyAgdGVzdF8gIyMgdGVzdG51bSAjIyBfZGF0YTogXAorICAuZmxvYXQgdmFsMTsgXAorICAuZmxvYXQgdmFsMjsgXAorICAuZmxvYXQgdmFsMzsgXAorICAucmVzdWx0OyBcCisgIC50ZXh0OyBcCisyOgorCisjZGVmaW5lIFRFU1RfRlBfT1BfRF9JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIHJlc3VsdCwgdmFsMSwgdmFsMiwgdmFsMywgY29kZS4uLiApIFwKK3Rlc3RfICMjIHRlc3RudW06IFwKKyAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgbGEgIGEwLCB0ZXN0XyAjIyB0ZXN0bnVtICMjIF9kYXRhIDtcCisgIGZsZCBmMCwgMChhMCk7IFwKKyAgZmxkIGYxLCA4KGEwKTsgXAorICBmbGQgZjIsIDE2KGEwKTsgXAorICBsZCAgYTMsIDI0KGEwKTsgXAorICBjb2RlOyBcCisgIGZzZmxhZ3MgYTEsIHgwOyBcCisgIGxpIGEyLCBmbGFnczsgXAorICBibmUgYTAsIGEzLCBmYWlsOyBcCisgIGJuZSBhMSwgYTIsIGZhaWw7IFwKKyAgaiAyZjsgXAorICAuZGF0YTsgXAorICAuYmFsaWduIDg7IFwKKyAgdGVzdF8gIyMgdGVzdG51bSAjIyBfZGF0YTogXAorICAuZG91YmxlIHZhbDE7IFwKKyAgLmRvdWJsZSB2YWwyOyBcCisgIC5kb3VibGUgdmFsMzsgXAorICAucmVzdWx0OyBcCisgIC50ZXh0OyBcCisyOgorCisjZGVmaW5lIFRFU1RfRkNWVF9TX0QoIHRlc3RudW0sIHJlc3VsdCwgdmFsMSApIFwKKyAgVEVTVF9GUF9PUF9EX0lOVEVSTkFMKCB0ZXN0bnVtLCAwLCBkb3VibGUgcmVzdWx0LCB2YWwxLCAwLjAsIDAuMCwgXAorICAgICAgICAgICAgICAgICAgICBmY3Z0LnMuZCBmMywgZjA7IGZjdnQuZC5zIGYzLCBmMzsgZm12LnguZCBhMCwgZjMpCisKKyNkZWZpbmUgVEVTVF9GQ1ZUX0RfUyggdGVzdG51bSwgcmVzdWx0LCB2YWwxICkgXAorICBURVNUX0ZQX09QX1NfSU5URVJOQUwoIHRlc3RudW0sIDAsIGZsb2F0IHJlc3VsdCwgdmFsMSwgMC4wLCAwLjAsIFwKKyAgICAgICAgICAgICAgICAgICAgZmN2dC5kLnMgZjMsIGYwOyBmY3Z0LnMuZCBmMywgZjM7IGZtdi54LnMgYTAsIGYzKQorCisjZGVmaW5lIFRFU1RfRlBfT1AxX1MoIHRlc3RudW0sIGluc3QsIGZsYWdzLCByZXN1bHQsIHZhbDEgKSBcCisgIFRFU1RfRlBfT1BfU19JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIGZsb2F0IHJlc3VsdCwgdmFsMSwgMC4wLCAwLjAsIFwKKyAgICAgICAgICAgICAgICAgICAgaW5zdCBmMywgZjA7IGZtdi54LnMgYTAsIGYzKQorCisjZGVmaW5lIFRFU1RfRlBfT1AxX0QoIHRlc3RudW0sIGluc3QsIGZsYWdzLCByZXN1bHQsIHZhbDEgKSBcCisgIFRFU1RfRlBfT1BfRF9JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIGRvdWJsZSByZXN1bHQsIHZhbDEsIDAuMCwgMC4wLCBcCisgICAgICAgICAgICAgICAgICAgIGluc3QgZjMsIGYwOyBmbXYueC5kIGEwLCBmMykKKworI2RlZmluZSBURVNUX0ZQX09QMV9TX0RXT1JEX1JFU1VMVCggdGVzdG51bSwgaW5zdCwgZmxhZ3MsIHJlc3VsdCwgdmFsMSApIFwKKyAgVEVTVF9GUF9PUF9TX0lOVEVSTkFMKCB0ZXN0bnVtLCBmbGFncywgZHdvcmQgcmVzdWx0LCB2YWwxLCAwLjAsIDAuMCwgXAorICAgICAgICAgICAgICAgICAgICBpbnN0IGYzLCBmMDsgZm12LngucyBhMCwgZjMpCisKKyNkZWZpbmUgVEVTVF9GUF9PUDFfRF9EV09SRF9SRVNVTFQoIHRlc3RudW0sIGluc3QsIGZsYWdzLCByZXN1bHQsIHZhbDEgKSBcCisgIFRFU1RfRlBfT1BfRF9JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIGR3b3JkIHJlc3VsdCwgdmFsMSwgMC4wLCAwLjAsIFwKKyAgICAgICAgICAgICAgICAgICAgaW5zdCBmMywgZjA7IGZtdi54LmQgYTAsIGYzKQorCisjZGVmaW5lIFRFU1RfRlBfT1AyX1MoIHRlc3RudW0sIGluc3QsIGZsYWdzLCByZXN1bHQsIHZhbDEsIHZhbDIgKSBcCisgIFRFU1RfRlBfT1BfU19JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIGZsb2F0IHJlc3VsdCwgdmFsMSwgdmFsMiwgMC4wLCBcCisgICAgICAgICAgICAgICAgICAgIGluc3QgZjMsIGYwLCBmMTsgZm12LngucyBhMCwgZjMpCisKKyNkZWZpbmUgVEVTVF9GUF9PUDJfRCggdGVzdG51bSwgaW5zdCwgZmxhZ3MsIHJlc3VsdCwgdmFsMSwgdmFsMiApIFwKKyAgVEVTVF9GUF9PUF9EX0lOVEVSTkFMKCB0ZXN0bnVtLCBmbGFncywgZG91YmxlIHJlc3VsdCwgdmFsMSwgdmFsMiwgMC4wLCBcCisgICAgICAgICAgICAgICAgICAgIGluc3QgZjMsIGYwLCBmMTsgZm12LnguZCBhMCwgZjMpCisKKyNkZWZpbmUgVEVTVF9GUF9PUDNfUyggdGVzdG51bSwgaW5zdCwgZmxhZ3MsIHJlc3VsdCwgdmFsMSwgdmFsMiwgdmFsMyApIFwKKyAgVEVTVF9GUF9PUF9TX0lOVEVSTkFMKCB0ZXN0bnVtLCBmbGFncywgZmxvYXQgcmVzdWx0LCB2YWwxLCB2YWwyLCB2YWwzLCBcCisgICAgICAgICAgICAgICAgICAgIGluc3QgZjMsIGYwLCBmMSwgZjI7IGZtdi54LnMgYTAsIGYzKQorCisjZGVmaW5lIFRFU1RfRlBfT1AzX0QoIHRlc3RudW0sIGluc3QsIGZsYWdzLCByZXN1bHQsIHZhbDEsIHZhbDIsIHZhbDMgKSBcCisgIFRFU1RfRlBfT1BfRF9JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIGRvdWJsZSByZXN1bHQsIHZhbDEsIHZhbDIsIHZhbDMsIFwKKyAgICAgICAgICAgICAgICAgICAgaW5zdCBmMywgZjAsIGYxLCBmMjsgZm12LnguZCBhMCwgZjMpCisKKyNkZWZpbmUgVEVTVF9GUF9JTlRfT1BfUyggdGVzdG51bSwgaW5zdCwgZmxhZ3MsIHJlc3VsdCwgdmFsMSwgcm0gKSBcCisgIFRFU1RfRlBfT1BfU19JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIHdvcmQgcmVzdWx0LCB2YWwxLCAwLjAsIDAuMCwgXAorICAgICAgICAgICAgICAgICAgICBpbnN0IGEwLCBmMCwgcm0pCisKKyNkZWZpbmUgVEVTVF9GUF9JTlRfT1BfRCggdGVzdG51bSwgaW5zdCwgZmxhZ3MsIHJlc3VsdCwgdmFsMSwgcm0gKSBcCisgIFRFU1RfRlBfT1BfRF9JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIGR3b3JkIHJlc3VsdCwgdmFsMSwgMC4wLCAwLjAsIFwKKyAgICAgICAgICAgICAgICAgICAgaW5zdCBhMCwgZjAsIHJtKQorCisjZGVmaW5lIFRFU1RfRlBfQ01QX09QX1MoIHRlc3RudW0sIGluc3QsIGZsYWdzLCByZXN1bHQsIHZhbDEsIHZhbDIgKSBcCisgIFRFU1RfRlBfT1BfU19JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIHdvcmQgcmVzdWx0LCB2YWwxLCB2YWwyLCAwLjAsIFwKKyAgICAgICAgICAgICAgICAgICAgaW5zdCBhMCwgZjAsIGYxKQorCisjZGVmaW5lIFRFU1RfRlBfQ01QX09QX0QoIHRlc3RudW0sIGluc3QsIGZsYWdzLCByZXN1bHQsIHZhbDEsIHZhbDIgKSBcCisgIFRFU1RfRlBfT1BfRF9JTlRFUk5BTCggdGVzdG51bSwgZmxhZ3MsIGR3b3JkIHJlc3VsdCwgdmFsMSwgdmFsMiwgMC4wLCBcCisgICAgICAgICAgICAgICAgICAgIGluc3QgYTAsIGYwLCBmMSkKKworI2RlZmluZSBURVNUX0ZDTEFTU19TKHRlc3RudW0sIGNvcnJlY3QsIGlucHV0KSBcCisgIFRFU1RfQ0FTRSh0ZXN0bnVtLCBhMCwgY29ycmVjdCwgbGkgYTAsIGlucHV0OyBmbXYucy54IGZhMCwgYTA7IFwKKyAgICAgICAgICAgICAgICAgICAgZmNsYXNzLnMgYTAsIGZhMCkKKworI2RlZmluZSBURVNUX0ZDTEFTU19EKHRlc3RudW0sIGNvcnJlY3QsIGlucHV0KSBcCisgIFRFU1RfQ0FTRSh0ZXN0bnVtLCBhMCwgY29ycmVjdCwgbGkgYTAsIGlucHV0OyBmbXYuZC54IGZhMCwgYTA7IFwKKyAgICAgICAgICAgICAgICAgICAgZmNsYXNzLmQgYTAsIGZhMCkKKworI2RlZmluZSBURVNUX0lOVF9GUF9PUF9TKCB0ZXN0bnVtLCBpbnN0LCByZXN1bHQsIHZhbDEgKSBcCit0ZXN0XyAjIyB0ZXN0bnVtOiBcCisgIGxpICBURVNUTlVNLCB0ZXN0bnVtOyBcCisgIGxhICBhMCwgdGVzdF8gIyMgdGVzdG51bSAjIyBfZGF0YSA7XAorICBsdyAgYTMsIDAoYTApOyBcCisgIGxpICBhMCwgdmFsMTsgXAorICBpbnN0IGYwLCBhMDsgXAorICBmc2ZsYWdzIHgwOyBcCisgIGZtdi54LnMgYTAsIGYwOyBcCisgIGJuZSBhMCwgYTMsIGZhaWw7IFwKKyAgaiAxZjsgXAorICAuYmFsaWduIDQ7IFwKKyAgdGVzdF8gIyMgdGVzdG51bSAjIyBfZGF0YTogXAorICAuZmxvYXQgcmVzdWx0OyBcCisxOgorCisjZGVmaW5lIFRFU1RfSU5UX0ZQX09QX0QoIHRlc3RudW0sIGluc3QsIHJlc3VsdCwgdmFsMSApIFwKK3Rlc3RfICMjIHRlc3RudW06IFwKKyAgbGkgIFRFU1ROVU0sIHRlc3RudW07IFwKKyAgbGEgIGEwLCB0ZXN0XyAjIyB0ZXN0bnVtICMjIF9kYXRhIDtcCisgIGxkICBhMywgMChhMCk7IFwKKyAgbGkgIGEwLCB2YWwxOyBcCisgIGluc3QgZjAsIGEwOyBcCisgIGZzZmxhZ3MgeDA7IFwKKyAgZm12LnguZCBhMCwgZjA7IFwKKyAgYm5lIGEwLCBhMywgZmFpbDsgXAorICBqIDFmOyBcCisgIC5iYWxpZ24gODsgXAorICB0ZXN0XyAjIyB0ZXN0bnVtICMjIF9kYXRhOiBcCisgIC5kb3VibGUgcmVzdWx0OyBcCisxOgorCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgUGFzcyBhbmQgZmFpbCBjb2RlIChhc3N1bWVzIHRlc3QgbnVtIGlzIGluIFRFU1ROVU0pCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKworI2RlZmluZSBURVNUX1BBU1NGQUlMIFwKKyAgICAgICAgYm5lIHgwLCBURVNUTlVNLCBwYXNzOyBcCitmYWlsOiBcCisgICAgICAgIFJWVEVTVF9GQUlMOyBcCitwYXNzOiBcCisgICAgICAgIFJWVEVTVF9QQVNTIFwKKworCisjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyMgVGVzdCBkYXRhIHNlY3Rpb24KKyMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorCisjZGVmaW5lIFRFU1RfREFUQQorCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9zY19wcmludC5jIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9zY19wcmludC5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNhZjlkMjMKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL3NjX3ByaW50LmMKQEAgLTAsMCArMSwyODIgQEAKKy8vLyBDb3B5cmlnaHQgYnkgU3ludGFjb3JlIExMQyDCqSAyMDE2LCAyMDE3LiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscworLy8vIEBmaWxlICAgICAgIDxzY19wcmludC5jPgorLy8vCisKKyNpbmNsdWRlIDxzdHJpbmcuaD4KKyNpbmNsdWRlIDxzdGRhcmcuaD4KKyNpbmNsdWRlICJzY19wcmludC5oIgorCisjZGVmaW5lIFNDX1NJTV9PVVRQT1JUICgweGYwMDAwMDAwKQorI2RlZmluZSBDSEFSX0JJVCAoOCkKKworc3RhdGljIHZvaWQKK3NjX3B1dHMobG9uZyBzdHIsIGxvbmcgc3RybGVuKSB7CisJdm9sYXRpbGUgY2hhciAqb3V0X3B0ciA9ICh2b2xhdGlsZSBjaGFyKilTQ19TSU1fT1VUUE9SVDsKKwljb25zdCBjaGFyICppbl9wdHIgPSAoY29uc3QgY2hhciopc3RyOworCWZvciAobG9uZyBsZW4gPSBzdHJsZW47IGxlbiA+IDA7IC0tbGVuKQorCSAgKm91dF9wdHIgPSAqaW5fcHRyKys7Cit9CisKKyN1bmRlZiBwdXRjaGFyCitpbnQKK3B1dGNoYXIoaW50IGNoKSB7CisJc3RhdGljIF9fdGhyZWFkIGNoYXIgYnVmWzY0XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDY0KSkpOworICAgIHN0YXRpYyBfX3RocmVhZCBpbnQgYnVmbGVuID0gMDsKKworICAgIGJ1ZltidWZsZW4rK10gPSBjaDsKKworCWlmICggY2ggPT0gJ1xuJyB8fCBidWZsZW4gPT0gc2l6ZW9mKGJ1ZikgKSB7CisgICAgICAgIHNjX3B1dHMoKGxvbmcpYnVmLCBidWZsZW4pOworICAgICAgICBidWZsZW4gPSAwOworICAgIH0KKworICAgIHJldHVybiAwOworfQorCitzdGF0aWMgdm9pZAorcHJpbnRmX3B1dGNoKGludCBjaCwgdm9pZCoqIGRhdGEpCit7CisgICAgcHV0Y2hhcihjaCk7Cit9CisKK3N0YXRpYyB2b2lkCitwcmludChjb25zdCBjaGFyICpzdHIpCit7CisgIHNjX3B1dHMoKGxvbmcpc3RyLCBzdHJsZW4oc3RyKSk7Cit9CisKKworc3RhdGljIGxvbmcgbG9uZworZ2V0aW50KHZhX2xpc3QgKmFwLCBpbnQgbGZsYWcpCit7CisgICAgaWYgKCBsZmxhZyA+PSAyICkKKyAgICAgICAgcmV0dXJuIHZhX2FyZygqYXAsIGxvbmcgbG9uZyk7CisgICAgZWxzZSBpZiAoIGxmbGFnICkKKyAgICAgICAgcmV0dXJuIHZhX2FyZygqYXAsIGxvbmcpOworICAgIGVsc2UKKyAgICAgICAgcmV0dXJuIHZhX2FyZygqYXAsIGludCk7Cit9CisKKworc3RhdGljIHVuc2lnbmVkIGxvbmcgbG9uZworZ2V0dWludCh2YV9saXN0ICphcCwgaW50IGxmbGFnKQoreworICAgIGlmICggbGZsYWcgPj0gMiApCisgICAgICAgIHJldHVybiB2YV9hcmcoKmFwLCB1bnNpZ25lZCBsb25nIGxvbmcpOworICAgIGVsc2UgaWYgKCBsZmxhZyApCisgICAgICAgIHJldHVybiB2YV9hcmcoKmFwLCB1bnNpZ25lZCBsb25nKTsKKyAgICBlbHNlCisgICAgICAgIHJldHVybiB2YV9hcmcoKmFwLCB1bnNpZ25lZCBpbnQpOworfQorCitzdGF0aWMgaW5saW5lIHZvaWQKK3ByaW50bnVtKHZvaWQoKnB1dGNoKShpbnQsIHZvaWQqKiksCit2b2lkICoqcHV0ZGF0LAordW5zaWduZWQgbG9uZyBsb25nIG51bSwKK3Vuc2lnbmVkIGJhc2UsCitpbnQgd2lkdGgsCitpbnQgcGFkYywKK2ludCBoZXhfQSkKK3sKKyAgICB1bnNpZ25lZCBkaWdzW3NpemVvZihudW0pICogQ0hBUl9CSVRdOworICAgIGludCBwb3MgPSAwOworCisgICAgZm9yICggOzsgKSB7CisgICAgICAgIGRpZ3NbcG9zKytdID0gbnVtICUgYmFzZTsKKyAgICAgICAgaWYgKCBudW0gPCBiYXNlICkKKyAgICAgICAgICAgIGJyZWFrOworICAgICAgICBudW0gLz0gYmFzZTsKKyAgICB9CisKKyAgICB3aGlsZSAoIHdpZHRoLS0gPiBwb3MgKQorICAgICAgICBwdXRjaChwYWRjLCBwdXRkYXQpOworCisgICAgd2hpbGUgKCBwb3MtLSA+IDAgKQorICAgICAgICBwdXRjaChkaWdzW3Bvc10gKyAoZGlnc1twb3NdID49IDEwID8gaGV4X0EgLSAxMCA6ICcwJyksIHB1dGRhdCk7Cit9CisKK3N0YXRpYyB2b2lkCit2cHJpbnRmbXQodm9pZCgqcHV0Y2gpKGludCwgdm9pZCoqKSwgdm9pZCAqKnB1dGRhdCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQoreworICAgIHJlZ2lzdGVyIGNvbnN0IGNoYXIqIHA7CisgICAgY29uc3QgY2hhciogbGFzdF9mbXQ7CisgICAgcmVnaXN0ZXIgaW50IGNoOworICAgIGludCBlcnI7CisgICAgdW5zaWduZWQgbG9uZyBsb25nIG51bTsKKyAgICBpbnQgYmFzZTsKKyAgICBpbnQgbGZsYWc7CisgICAgaW50IHdpZHRoOworICAgIGludCBwcmVjaXNpb247CisgICAgaW50IGFsdGZsYWc7CisgICAgY2hhciBwYWRjOworICAgIGludCBoZXhfQSA9ICdhJzsKKyAgICBmb3IgKCA7OyApIHsKKyAgICAgICAgd2hpbGUgKCAoY2ggPSAqKHVuc2lnbmVkIGNoYXIgKilmbXQpICE9ICclJyApIHsKKyAgICAgICAgICAgIGlmICggY2ggPT0gJ1wwJyApCisgICAgICAgICAgICAgICAgcmV0dXJuOworICAgICAgICAgICAgKytmbXQ7CisgICAgICAgICAgICBwdXRjaChjaCwgcHV0ZGF0KTsKKyAgICAgICAgfQorICAgICAgICArK2ZtdDsKKworICAgICAgICAvLyBQcm9jZXNzIGEgJS1lc2NhcGUgc2VxdWVuY2UKKyAgICAgICAgbGFzdF9mbXQgPSBmbXQ7CisgICAgICAgIHBhZGMgPSAnICc7CisgICAgICAgIHdpZHRoID0gLTE7CisgICAgICAgIHByZWNpc2lvbiA9IC0xOworICAgICAgICBsZmxhZyA9IDA7CisgICAgICAgIGFsdGZsYWcgPSAwOworCityZXN3aXRjaDoKKyAgICAgICAgc3dpdGNoICggY2ggPSAqKHVuc2lnbmVkIGNoYXIgKilmbXQrKyApIHsKKyAgICAgICAgICAgIC8vIGZsYWcgdG8gcGFkIG9uIHRoZSByaWdodAorICAgICAgICAgICAgY2FzZSAnLSc6CisgICAgICAgICAgICAgICAgcGFkYyA9ICctJzsKKyAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworCisgICAgICAgICAgICAgICAgLy8gZmxhZyB0byBwYWQgd2l0aCAwJ3MgaW5zdGVhZCBvZiBzcGFjZXMKKyAgICAgICAgICAgIGNhc2UgJzAnOgorICAgICAgICAgICAgICAgIHBhZGMgPSAnMCc7CisgICAgICAgICAgICAgICAgZ290byByZXN3aXRjaDsKKworICAgICAgICAgICAgICAgIC8vIHdpZHRoIGZpZWxkCisgICAgICAgICAgICBjYXNlICcxJzoKKyAgICAgICAgICAgIGNhc2UgJzInOgorICAgICAgICAgICAgY2FzZSAnMyc6CisgICAgICAgICAgICBjYXNlICc0JzoKKyAgICAgICAgICAgIGNhc2UgJzUnOgorICAgICAgICAgICAgY2FzZSAnNic6CisgICAgICAgICAgICBjYXNlICc3JzoKKyAgICAgICAgICAgIGNhc2UgJzgnOgorICAgICAgICAgICAgY2FzZSAnOSc6CisgICAgICAgICAgICAgICAgZm9yICggcHJlY2lzaW9uID0gMDs7ICsrZm10ICkgeworICAgICAgICAgICAgICAgICAgICBwcmVjaXNpb24gPSBwcmVjaXNpb24gKiAxMCArIGNoIC0gJzAnOworICAgICAgICAgICAgICAgICAgICBjaCA9ICpmbXQ7CisgICAgICAgICAgICAgICAgICAgIGlmICggY2ggPCAnMCcgfHwgY2ggPiAnOScgKQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIGdvdG8gcHJvY2Vzc19wcmVjaXNpb247CisKKyAgICAgICAgICAgIGNhc2UgJyonOgorICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IHZhX2FyZyhhcCwgaW50KTsKKyAgICAgICAgICAgICAgICBnb3RvIHByb2Nlc3NfcHJlY2lzaW9uOworCisgICAgICAgICAgICBjYXNlICcuJzoKKyAgICAgICAgICAgICAgICBpZiAoIHdpZHRoIDwgMCApCisgICAgICAgICAgICAgICAgICAgIHdpZHRoID0gMDsKKyAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworCisgICAgICAgICAgICBjYXNlICcjJzoKKyAgICAgICAgICAgICAgICBhbHRmbGFnID0gMTsKKyAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworCitwcm9jZXNzX3ByZWNpc2lvbjoKKyAgICAgICAgICAgICAgICBpZiAoIHdpZHRoIDwgMCApIHsKKyAgICAgICAgICAgICAgICAgICAgd2lkdGggPSBwcmVjaXNpb247CisgICAgICAgICAgICAgICAgICAgIHByZWNpc2lvbiA9IC0xOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBnb3RvIHJlc3dpdGNoOworCisgICAgICAgICAgICAgICAgLy8gbG9uZyBmbGFnIChkb3VibGVkIGZvciBsb25nIGxvbmcpCisgICAgICAgICAgICBjYXNlICdsJzoKKyAgICAgICAgICAgICAgICBsZmxhZysrOworICAgICAgICAgICAgICAgIGdvdG8gcmVzd2l0Y2g7CisKKyAgICAgICAgICAgICAgICAvLyBjaGFyYWN0ZXIKKyAgICAgICAgICAgIGNhc2UgJ2MnOgorICAgICAgICAgICAgICAgIHB1dGNoKHZhX2FyZyhhcCwgaW50KSwgcHV0ZGF0KTsKKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIC8vIHN0cmluZworICAgICAgICAgICAgY2FzZSAncyc6CisgICAgICAgICAgICAgICAgaWYgKCAocCA9IHZhX2FyZyhhcCwgY2hhciAqKSkgPT0gTlVMTCApCisgICAgICAgICAgICAgICAgICAgIHAgPSAiKG51bGwpIjsKKyAgICAgICAgICAgICAgICBpZiAoIHdpZHRoID4gMCAmJiBwYWRjICE9ICctJyApCisgICAgICAgICAgICAgICAgICAgIGZvciAoIHdpZHRoIC09IHN0cm5sZW4ocCwgcHJlY2lzaW9uKTsgd2lkdGggPiAwOyB3aWR0aC0tICkKKyAgICAgICAgICAgICAgICAgICAgICAgIHB1dGNoKHBhZGMsIHB1dGRhdCk7CisgICAgICAgICAgICAgICAgZm9yICggOyAoY2ggPSAqcCkgIT0gJ1wwJyAmJiAocHJlY2lzaW9uIDwgMCB8fCAtLXByZWNpc2lvbiA+PSAwKTsgd2lkdGgtLSApIHsKKyAgICAgICAgICAgICAgICAgICAgcHV0Y2goY2gsIHB1dGRhdCk7CisgICAgICAgICAgICAgICAgICAgIHArKzsKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgZm9yICggOyB3aWR0aCA+IDA7IHdpZHRoLS0gKQorICAgICAgICAgICAgICAgICAgICBwdXRjaCgnICcsIHB1dGRhdCk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyAoc2lnbmVkKSBkZWNpbWFsCisgICAgICAgICAgICBjYXNlICdkJzoKKyAgICAgICAgICAgICAgICBudW0gPSBnZXRpbnQoJmFwLCBsZmxhZyk7CisgICAgICAgICAgICAgICAgaWYgKCAobG9uZyBsb25nKW51bSA8IDAgKSB7CisgICAgICAgICAgICAgICAgICAgIHB1dGNoKCctJywgcHV0ZGF0KTsKKyAgICAgICAgICAgICAgICAgICAgbnVtID0gLShsb25nIGxvbmcpbnVtOworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBiYXNlID0gMTA7CisgICAgICAgICAgICAgICAgZ290byBzaWduZWRfbnVtYmVyOworCisgICAgICAgICAgICBjYXNlICdmJzoKKyAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgIC8vICNpZm5kZWYgbm9wZmxvYXQKKyAgICAgICAgICAgICAgICAgICAgLy8gZG91YmxlIG51bSA9IGdldGRvdWJsZSgmYXAsIGxmbGFnKTsKKyAgICAgICAgICAgICAgICAgICAgLy8gcHJpbnRkb3VibGVGKHB1dGNoLCBwdXRkYXQsIG51bSwgd2lkdGgsIHByZWNpc2lvbiwgcGFkYyk7CisgICAgICAgICAgICAgICAgICAgIC8vICNlbmRpZgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICBicmVhazsKKworICAgICAgICAgICAgICAgIC8vIHVuc2lnbmVkIGRlY2ltYWwKKyAgICAgICAgICAgIGNhc2UgJ3UnOgorICAgICAgICAgICAgICAgIGJhc2UgPSAxMDsKKyAgICAgICAgICAgICAgICBnb3RvIHVuc2lnbmVkX251bWJlcjsKKworICAgICAgICAgICAgICAgIC8vICh1bnNpZ25lZCkgb2N0YWwKKyAgICAgICAgICAgIGNhc2UgJ28nOgorICAgICAgICAgICAgICAgIC8vIHNob3VsZCBkbyBzb21ldGhpbmcgd2l0aCBwYWRkaW5nIHNvIGl0J3MgYWx3YXlzIDMgb2N0aXRzCisgICAgICAgICAgICAgICAgYmFzZSA9IDg7CisgICAgICAgICAgICAgICAgZ290byB1bnNpZ25lZF9udW1iZXI7CisKKyAgICAgICAgICAgICAgICAvLyBwb2ludGVyCisgICAgICAgICAgICBjYXNlICdwJzoKKyAgICAgICAgICAgICAgICAvLyBzdGF0aWNfYXNzZXJ0KHNpemVvZihsb25nKSA9PSBzaXplb2Yodm9pZCopKTsKKyAgICAgICAgICAgICAgICBsZmxhZyA9IDE7CisgICAgICAgICAgICAgICAgcHV0Y2goJzAnLCBwdXRkYXQpOworICAgICAgICAgICAgICAgIHB1dGNoKCd4JywgcHV0ZGF0KTsKKyAgICAgICAgICAgICAgICAvKiBmYWxsIHRocm91Z2ggdG8gJ3gnICovCisKKyAgICAgICAgICAgICAgICAvLyAodW5zaWduZWQpIGhleGFkZWNpbWFsCisgICAgICAgICAgICBjYXNlICd4JzoKKyAgICAgICAgICAgICAgICBoZXhfQSA9ICdhJzsKKyAgICAgICAgICAgICAgICBiYXNlID0gMTY7CisgICAgICAgICAgICAgICAgZ290byB1bnNpZ25lZF9udW1iZXI7CisKKyAgICAgICAgICAgIGNhc2UgJ1gnOgorICAgICAgICAgICAgICAgIGhleF9BID0gJ0EnOworICAgICAgICAgICAgICAgIGJhc2UgPSAxNjsKK3Vuc2lnbmVkX251bWJlcjoKKyAgICAgICAgICAgICAgICBudW0gPSBnZXR1aW50KCZhcCwgbGZsYWcpOworc2lnbmVkX251bWJlcjoKKyAgICAgICAgICAgICAgICBwcmludG51bShwdXRjaCwgcHV0ZGF0LCBudW0sIGJhc2UsIHdpZHRoLCBwYWRjLCBoZXhfQSk7CisgICAgICAgICAgICAgICAgYnJlYWs7CisKKyAgICAgICAgICAgICAgICAvLyBlc2NhcGVkICclJyBjaGFyYWN0ZXIKKyAgICAgICAgICAgIGNhc2UgJyUnOgorICAgICAgICAgICAgICAgIHB1dGNoKGNoLCBwdXRkYXQpOworICAgICAgICAgICAgICAgIGJyZWFrOworCisgICAgICAgICAgICAgICAgLy8gdW5yZWNvZ25pemVkIGVzY2FwZSBzZXF1ZW5jZSAtIGp1c3QgcHJpbnQgaXQgbGl0ZXJhbGx5CisgICAgICAgICAgICBkZWZhdWx0OgorICAgICAgICAgICAgICAgIHB1dGNoKCclJywgcHV0ZGF0KTsKKyAgICAgICAgICAgICAgICBmbXQgPSBsYXN0X2ZtdDsKKyAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgfQorICAgIH0KK30KKworaW50CitzY19wcmludGYoY29uc3QgY2hhciogZm10LCAuLi4pCit7CisgICAgdmFfbGlzdCBhcDsKKyAgICB2YV9zdGFydChhcCwgZm10KTsKKworICAgIHZwcmludGZtdChwcmludGZfcHV0Y2gsIE5VTEwsIGZtdCwgYXApOworCisgICAgdmFfZW5kKGFwKTsKKyAgICByZXR1cm4gMDsgLy8gaW5jb3JyZWN0IHJldHVybiB2YWx1ZSwgYnV0IHdobyBjYXJlcywgYW55d2F5PworfQpkaWZmIC0tZ2l0IGEvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9zY19wcmludC5oIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9zY19wcmludC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxNzU0MTcKLS0tIC9kZXYvbnVsbAorKysgYi92ZXJpbG9nL3J0bC9zeW50YWNvcmUvc2NyMS9zaW0vdGVzdHMvY29tbW9uL3NjX3ByaW50LmgKQEAgLTAsMCArMSwxMCBAQAorLy8vIENvcHlyaWdodCBieSBTeW50YWNvcmUgTExDIMKpIDIwMTYsIDIwMTcuIFNlZSBMSUNFTlNFIGZvciBkZXRhaWxzCisvLy8gQGZpbGUgICAgICAgPHNjX3ByaW50Lmg+CisvLy8KKworI2lmbmRlZiBTQ19QUklOVF9ICisjZGVmaW5lIFNDX1BSSU5UX0gKKworZXh0ZXJuIGludCBzY19wcmludGYoY29uc3QgY2hhciogZm10LCAuLi4pOworCisjZW5kaWYgLy8gU0NfUFJJTlRfSApcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vc2NfdGVzdC5oIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9zY190ZXN0LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODQ4MjdhYQotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vc2NfdGVzdC5oCkBAIC0wLDAgKzEsNDggQEAKKy8vLyBDb3B5cmlnaHQgYnkgU3ludGFjb3JlIExMQyDCqSAyMDE2LCAyMDE3LiBTZWUgTElDRU5TRSBmb3IgZGV0YWlscworLy8vIEBmaWxlICAgICAgIDxzY190ZXN0Lmg+CisvLy8KKworI2lmbmRlZiBTQ19URVNUX0gKKyNkZWZpbmUgU0NfVEVTVF9ICisKKyNpZiBkZWZpbmVkKF9fQVNTRU1CTEVSX18pCisuYWx0bWFjcm8KKworLm1hY3JvIHplcm9faW50X3JlZyByZWduCittdiAgIHhccmVnbiwgemVybworLmVuZG0KKworLm1hY3JvIHplcm9faW50X3JlZ3MgcmVnX2ZpcnN0LCByZWdfbGFzdAorLnNldCByZWduLCBccmVnX2ZpcnN0CisucmVwdCBccmVnX2xhc3QgLSBccmVnX2ZpcnN0ICsgMQoremVyb19pbnRfcmVnICUocmVnbikKKy5zZXQgcmVnbiwgcmVnbisxCisuZW5kcgorLmVuZG0KKworI2RlZmluZSByZXBvcnRfcmVzdWx0cyhyZXN1bHQpIFwKK2xpICBhMCwgcmVzdWx0OyAgXAorbGEgdDAsIHNjX2V4aXQ7ICBcCitqcgkgdDA7CisKKy5wdXNoc2VjdGlvbiBzY190ZXN0X3NlY3Rpb24sICJheCIKK3NjX2V4aXQ6IGxhIHQwLCBTSU1fRVhJVDsganIgdDA7CisuYmFsaWduIDMyCisucG9wc2VjdGlvbgorI2RlZmluZSBzY19wYXNzIHJlcG9ydF9yZXN1bHRzKDB4MCkKKyNkZWZpbmUgc2NfZmFpbCByZXBvcnRfcmVzdWx0cygweDEpCisKKyNlbHNlCisKK2V4dGVybiB2b2lkIHNjX2V4aXQodW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCByZXMwLCB1bnNpZ25lZCByZXMxLCB1bnNpZ25lZCByZXMyLCB1bnNpZ25lZCByZXMzKQorICAgIF9fYXR0cmlidXRlX18gKChub2lubGluZSwgbm9yZXR1cm4pKTsKKworc3RhdGljIGlubGluZSB2b2lkICBfX2F0dHJpYnV0ZV9fICgobm9yZXR1cm4pKQorcmVwb3J0X3Jlc3VsdHModW5zaWduZWQgcmVzdWx0LCB1bnNpZ25lZCByZXMwLCB1bnNpZ25lZCByZXMxLCB1bnNpZ25lZCByZXMyLCB1bnNpZ25lZCByZXMzKQoreworICAgIHNjX2V4aXQocmVzdWx0LCByZXMwLCByZXMxLCByZXMyLCByZXMzKTsKK30KKworI2VuZGlmCisKKyNlbmRpZiAvLyBTQ19URVNUX0gKZGlmZiAtLWdpdCBhL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vc2NyMV9zcGVjaWZpYy5oIGIvdmVyaWxvZy9ydGwvc3ludGFjb3JlL3NjcjEvc2ltL3Rlc3RzL2NvbW1vbi9zY3IxX3NwZWNpZmljLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjk2NTg4MAotLS0gL2Rldi9udWxsCisrKyBiL3Zlcmlsb2cvcnRsL3N5bnRhY29yZS9zY3IxL3NpbS90ZXN0cy9jb21tb24vc2NyMV9zcGVjaWZpYy5oCkBAIC0wLDAgKzEsMjAgQEAKKyNpZm5kZWYgX19TQ1IxX19TUEVDSUZJQworI2RlZmluZSBfX1NDUjFfX1NQRUNJRklDCisKKyNkZWZpbmUgbWNvdW50ZW4gICAgICAgIDB4N0UwCisKKy8vIE1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzCisjZGVmaW5lIG10aW1lX2N0cmwgICAgICAweDAwNDkwMDAwCisjZGVmaW5lIG10aW1lX2RpdiAgICAgICAweDAwNDkwMDA0CisjZGVmaW5lIG10aW1lICAgICAgICAgICAweDAwNDkwMDA4CisjZGVmaW5lIG10aW1laCAgICAgICAgICAweDAwNDkwMDBDCisjZGVmaW5lIG10aW1lY21wICAgICAgICAweDAwNDkwMDEwCisjZGVmaW5lIG10aW1lY21waCAgICAgICAweDAwNDkwMDE0CisKKyNkZWZpbmUgU0NSMV9NVElNRV9DVFJMX0VOICAgICAgICAgIDAKKyNkZWZpbmUgU0NSMV9NVElNRV9DVFJMX0NMS1NSQyAgICAgIDEKKworI2RlZmluZSBTQ1IxX01USU1FX0NUUkxfV1JfTUFTSyAgICAgMHgzCisjZGVmaW5lIFNDUjFfTVRJTUVfRElWX1dSX01BU0sgICAgICAweDNGRgorCisjZW5kaWYgLy8gX1NDUjFfX1NQRUNJRklDCg==