From mboxrd@z Thu Jan 1 00:00:00 1970 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: base64 From: Rich Mattes To: git-commits@fedoraproject.org Subject: [rpms/pcl] f44: Update to release 1.7.2 Date: Thu, 25 Jun 2026 05:49:23 GMT Message-ID: <178236656327.1.262304445198967118.rpms-pcl-a8ed99ca87c0@fedoraproject.org> List-ID: X-Git-Repo: rpms/pcl X-Git-Branch: f44 X-Git-Rev: a8ed99ca87c0d035bb0076e2136e2037302c56ee QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvcGNsCkJyYW5jaCA6 IGY0NApDb21taXQgOiBhOGVkOTljYTg3YzBkMDM1YmIwMDc2ZTIxMzZlMjAzNzMwMmM1NmVlCkF1 dGhvciA6IFJpY2ggTWF0dGVzIDxyaWNobWF0dGVzQGdtYWlsLmNvbT4KRGF0ZSAgIDogMjAxNC0x Mi0xNlQxOTo1Njo0My0wNTowMApTdGF0cyAgOiArODMvLTEzNDQgaW4gOSBmaWxlKHMpClVSTCAg ICA6IGh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JwbXMvcGNsL2MvYThlZDk5Y2E4N2Mw ZDAzNWJiMDA3NmUyMTM2ZTIwMzczMDJjNTZlZT9icmFuY2g9ZjQ0CgpMb2c6ClVwZGF0ZSB0byBy ZWxlYXNlIDEuNy4yCgotLS0KZGlmZiAtLWdpdCBhLy5naXRpZ25vcmUgYi8uZ2l0aWdub3JlCmlu ZGV4IGQ4YjY4YjEuLjJjYThlOWQgMTAwNjQ0Ci0tLSBhLy5naXRpZ25vcmUKKysrIGIvLmdpdGln bm9yZQpAQCAtOCwzICs4LDQgQEAKIC9QQ0wtMS42LjAtU291cmNlLnRhci5iejIKIC9wY2wtMS43 LjAudGFyLmd6CiAvcGNsLTEuNy4xLnRhci5negorL3BjbC0wZGRmMTFhNmFkMTE3NWI2ZjFjMjUz ZGEwMDNkZTIwYzEyOTVjZGUwLnRhci5negoKZGlmZiAtLWdpdCBhL3BjbC0xLjcuMS1mZWRvcmEu cGF0Y2ggYi9wY2wtMS43LjEtZmVkb3JhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NApp bmRleCAyNzVmODQzLi4wMDAwMDAwCi0tLSBhL3BjbC0xLjcuMS1mZWRvcmEucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1kaWZmIC11cCAuL1BDTENvbmZpZy5jbWFrZS5pbi5m ZWRvcmEgLi9QQ0xDb25maWcuY21ha2UuaW4KLS0tLSAuL1BDTENvbmZpZy5jbWFrZS5pbi5mZWRv cmEJMjAxMy0xMC0wNyAwOTowOTozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL1BDTENvbmZpZy5j bWFrZS5pbgkyMDE0LTAzLTIxIDE2OjQwOjAxLjA1NzIxNjYyNyAtMDQwMAotQEAgLTI2Nyw3ICsy NjcsNyBAQCBtYWNybyhmaW5kX1ZUSykKLSAgIGVuZGlmKFBDTF9BTExfSU5fT05FX0lOU1RBTExF UikKLSAgIGZpbmRfcGFja2FnZShWVEsgJHtRVUlFVF99KQotICAgaWYgKFZUS19GT1VORCBBTkQg Tk9UIEFORFJPSUQpCi0tICAgIHNldChWVEtfTElCUkFSSUVTIHZ0a0NvbW1vbiB2dGtSZW5kZXJp bmcgdnRrSHlicmlkIHZ0a0NoYXJ0cykKLSsgICAgc2V0KFZUS19MSUJSQVJJRVMgdnRrQ29tbW9u Q29yZSB2dGtSZW5kZXJpbmdDb3JlKQotICAgZW5kaWYoVlRLX0ZPVU5EIEFORCBOT1QgQU5EUk9J RCkKLSBlbmRtYWNybyhmaW5kX1ZUSykKLSAKLUBAIC00MjMsOSArNDIzLDkgQEAgbWFjcm8oZmlu ZF9leHRlcm5hbF9saWJyYXJ5IF9jb21wb25lbnQgXwotICAgICBpZigke0xJQn1fTElCUkFSSUVT KQotICAgICAgIGxpc3QoQVBQRU5EIFBDTF8ke0NPTVBPTkVOVH1fTElCUkFSSUVTICIkeyR7TElC fV9MSUJSQVJJRVN9IikKLSAgICAgZW5kaWYoJHtMSUJ9X0xJQlJBUklFUykKLS0gICAgaWYoJHtM SUJ9X0RFRklOSVRJT05TKQotKyAgICBpZigke0xJQn1fREVGSU5JVElPTlMgQU5EIE5PVCAke0xJ Qn0gU1RSRVFVQUwgIlZUSyIpCi0gICAgICAgbGlzdChBUFBFTkQgUENMXyR7Q09NUE9ORU5UfV9E RUZJTklUSU9OUyAkeyR7TElCfV9ERUZJTklUSU9OU30pCi0tICAgIGVuZGlmKCR7TElCfV9ERUZJ TklUSU9OUykKLSsgICAgZW5kaWYoJHtMSUJ9X0RFRklOSVRJT05TIEFORCBOT1QgJHtMSUJ9IFNU UkVRVUFMICJWVEsiKQotICAgZWxzZSgke0xJQn1fRk9VTkQpCi0gICAgIGlmKCIke19pc19vcHRp b25hbH0iIFNUUkVRVUFMICJPUFRJT05BTCIpCi0gICAgICAgYWRkX2RlZmluaXRpb25zKCItRERJ U0FCTEVfJHtMSUJ9IikKLUBAIC00OTAsOCArNDkwLDcgQEAgaWYoV0lOMzIgQU5EIE5PVCBNSU5H VykKLSAgIGdldF9maWxlbmFtZV9jb21wb25lbnQoUENMX1JPT1QgIiR7UENMX0RJUn0iIFBBVEgp Ci0gZWxzZShXSU4zMiBBTkQgTk9UIE1JTkdXKQotICMgUENMQ29uZmlnLmNtYWtlIGlzIGluc3Rh bGxlZCB0byBQQ0xfUk9PVC9zaGFyZS9wY2wteC55Ci0tICBnZXRfZmlsZW5hbWVfY29tcG9uZW50 KFBDTF9ST09UICIke1BDTF9ESVJ9IiBQQVRIKQotLSAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChQ Q0xfUk9PVCAiJHtQQ0xfUk9PVH0iIFBBVEgpCi0rICBzZXQoUENMX1JPT1QgIkBDTUFLRV9JTlNU QUxMX1BSRUZJWEAiKQotIGVuZGlmKFdJTjMyIEFORCBOT1QgTUlOR1cpCi0gCi0gIyBjaGVjayB3 aGV0aGVyIFBDTENvbmZpZy5jbWFrZSBpcyBmb3VuZCBpbnRvIGEgUENMIGluc3RhbGxhdGlvbiBv ciBpbiBhIGJ1aWxkIHRyZWUKCmRpZmYgLS1naXQgYS9wY2wtMS43LjEtbWV0c2xpYi5wYXRjaCBi L3BjbC0xLjcuMS1tZXRzbGliLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBm MjM2NmI0Li4wMDAwMDAwCi0tLSBhL3BjbC0xLjcuMS1tZXRzbGliLnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsODEgKzAsMCBAQAotZGlmZiAtdXAgLi9DTWFrZUxpc3RzLnR4dC5tZXRzbGliIC4v Q01ha2VMaXN0cy50eHQKLS0tLSAuL0NNYWtlTGlzdHMudHh0Lm1ldHNsaWIJMjAxMy0xMC0wNyAw OTowOTozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyAuL0NNYWtlTGlzdHMudHh0CTIwMTMtMTAtMjYg MTE6MTM6MDAuNzAyNDc0NzMzIC0wNDAwCi1AQCAtMTQsNiArMTQsOSBAQCBzdHJpbmcoVE9MT1dF UiAke1BST0pFQ1RfTkFNRX0gUFJPSkVDVF9OCi0gIyMjIC0tLVsgRmluZCB1bml2ZXJzYWwgZGVw ZW5kZW5jaWVzCi0gc2V0KENNQUtFX01PRFVMRV9QQVRIICIke0NNQUtFX1NPVVJDRV9ESVJ9L2Nt YWtlL01vZHVsZXMvIiAke0NNQUtFX01PRFVMRV9QQVRIfSkKLSAKLSsjIC0tLVsgSW5jbHVkZSBw a2djb25maWcKLStpbmNsdWRlIChGaW5kUGtnQ29uZmlnKQotKwotICMgLS0tWyBSZWxlYXNlL0Rl YnVnIHNwZWNpZmljIGZsYWdzCi0gaWYoQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiUmVsZWFz ZSIgT1IgQ01BS0VfQlVJTERfVFlQRSBTVFJFUVVBTCAiUmVsV2l0aERlYkluZm8iKQotICAgYWRk X2RlZmluaXRpb25zKCItREJPT1NUX0RJU0FCTEVfQVNTRVJUUyAtREVJR0VOX05PX0RFQlVHIikK LUBAIC0yNzQsNiArMjc3LDE0IEBAIGlmIChQTkdfRk9VTkQpCi0gICBpbmNsdWRlX2RpcmVjdG9y aWVzKCR7UE5HX0lOQ0xVREVfRElSfSkKLSBlbmRpZihQTkdfRk9VTkQpCi0gCi0rIyBtZXRzbGli Ci0raWYgKFBLR19DT05GSUdfRk9VTkQpCi0rICBwa2dfY2hlY2tfbW9kdWxlcyhNRVRTTElCIG1l dHNsaWIpCi0rICBpZiAoTUVUU0xJQl9GT1VORCkKLSsgICAgc2V0IChIQVZFX01FVFNMSUIgT04p Ci0rICBlbmRpZigpCi0rZW5kaWYoKQotKwotICMgUWh1bGwKLSBpZihOT1QgUENMX1NIQVJFRF9M SUJTIE9SIFdJTjMyKQotICAgc2V0KFFIVUxMX1VTRV9TVEFUSUMgT04pCi1kaWZmIC11cCAuL3Jl Y29nbml0aW9uL0NNYWtlTGlzdHMudHh0Lm1ldHNsaWIgLi9yZWNvZ25pdGlvbi9DTWFrZUxpc3Rz LnR4dAotLS0tIC4vcmVjb2duaXRpb24vQ01ha2VMaXN0cy50eHQubWV0c2xpYgkyMDEzLTEwLTA3 IDA5OjA5OjM1LjAwMDAwMDAwMCAtMDQwMAotKysrIC4vcmVjb2duaXRpb24vQ01ha2VMaXN0cy50 eHQJMjAxMy0xMC0yNiAxMToxMjowNC40MjEzMTAzNDggLTA0MDAKLUBAIC0xMjcsNiArMTI3LDkg QEAgaWYoYnVpbGQpCi0gCQkgICAgc3JjL2ltcGxpY2l0X3NoYXBlX21vZGVsLmNwcAotICAgICAg ICAgKQotICAgICAgICAgCi0rICAgIGlmIChIQVZFX01FVFNMSUIpCi0rICAgIHNldChtZXRzbGli X2luY3MgIiIpCi0rICAgIGVsc2UoKQotICAgICBzZXQobWV0c2xpYl9pbmNzCi0gICAgICAgICBp bmNsdWRlL3BjbC8ke1NVQlNZU19OQU1FfS8zcmRwYXJ0eS9tZXRzbGliL2Fic3RyYWN0LXNlYXJj aC5oaAotICAgICAgICAgaW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vM3JkcGFydHkvbWV0c2xp Yi9sb2NhbC1zZWFyY2guaGgKLUBAIC0xMzgsOSArMTQxLDE0IEBAIGlmKGJ1aWxkKQotICAgICAg ICAgaW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vM3JkcGFydHkvbWV0c2xpYi90YWJ1LXNlYXJj aC5oaAotICAgICAgICAgaW5jbHVkZS9wY2wvJHtTVUJTWVNfTkFNRX0vM3JkcGFydHkvbWV0c2xp Yi90ZXJtaW5hdGlvbi1jcml0ZXJpYS5oaAotICAgICApCi0tCi0rICAgIGVuZGlmKCkKLSAgICAg c2V0KExJQl9OQU1FIHBjbF8ke1NVQlNZU19OQU1FfSkKLSAgICAgaW5jbHVkZV9kaXJlY3Rvcmll cygke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vaW5jbHVkZSkKLSsgICAgaWYgKEhBVkVfTUVU U0xJQikKLSsgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7TUVUU0xJQl9JTkNMVURFX0RJUlN9 KQotKyAgICBlbHNlKCkKLSsgICAgICBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7Q01BS0VfQ1VSUkVO VF9TT1VSQ0VfRElSfS9pbmNsdWRlL3BjbC9yZWNvZ25pdGlvbi8zcmRwYXJ0eS8pCi0rICAgIGVu ZGlmKCkKLSAgICAgUENMX0FERF9MSUJSQVJZKCR7TElCX05BTUV9ICR7U1VCU1lTX05BTUV9ICR7 c3Jjc30gJHtpbmNzfSAke2ltcGxfaW5jc30gJHtyYW5zYWNfYmFzZWRfaW5jc30gJHtyYW5zYWNf YmFzZWRfaW1wbF9pbmNzfSAke2h2X2luY3N9ICR7aHZfaW1wbF9pbmNzfSAke2NnX2luY3N9ICR7 Y2dfaW1wbF9pbmNzfSAke21ldHNsaWJfaW5jc30pCi0gICAgIHRhcmdldF9saW5rX2xpYnJhcmll cygke0xJQl9OQU1FfSBwY2xfY29tbW9uIHBjbF9rZHRyZWUgcGNsX29jdHJlZSBwY2xfc2VhcmNo IHBjbF9mZWF0dXJlcyBwY2xfcmVnaXN0cmF0aW9uIHBjbF9zYW1wbGVfY29uc2Vuc3VzIHBjbF9m aWx0ZXJzIHBjbF9pbykKLSAgICAgUENMX01BS0VfUEtHQ09ORklHKCR7TElCX05BTUV9ICR7U1VC U1lTX05BTUV9ICIke1NVQlNZU19ERVNDfSIgIiR7U1VCU1lTX0RFUFN9IiAiIiAiIiAiIiAiIikK LWRpZmYgLXVwIC4vcmVjb2duaXRpb24vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24vaHYvaHZfZ28u aC5tZXRzbGliIC4vcmVjb2duaXRpb24vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24vaHYvaHZfZ28u aAotLS0tIC4vcmVjb2duaXRpb24vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24vaHYvaHZfZ28uaC5t ZXRzbGliCTIwMTMtMTAtMDcgMDk6MDk6MzUuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9yZWNvZ25p dGlvbi9pbmNsdWRlL3BjbC9yZWNvZ25pdGlvbi9odi9odl9nby5oCTIwMTMtMTAtMjYgMTE6MTI6 MDQuNDIxMzEwMzQ4IC0wNDAwCi1AQCAtMTEsNyArMTEsNyBAQAotICNpbmNsdWRlIDxwY2wvcGNs X21hY3Jvcy5oPgotICNpbmNsdWRlIDxwY2wvcmVjb2duaXRpb24vaHYvaHlwb3RoZXNlc192ZXJp ZmljYXRpb24uaD4KLSAjaW5jbHVkZSA8cGNsL2NvbW1vbi9jb21tb24uaD4KLS0jaW5jbHVkZSAi cGNsL3JlY29nbml0aW9uLzNyZHBhcnR5L21ldHNsaWIvbWV0cy5oaCIKLSsjaW5jbHVkZSAibWV0 c2xpYi9tZXRzLmhoIgotICNpbmNsdWRlIDxwY2wvZmVhdHVyZXMvbm9ybWFsXzNkLmg+Ci0gI2lu Y2x1ZGUgPGJvb3N0L2dyYXBoL2dyYXBoX3RyYWl0cy5ocHA+Ci0gI2luY2x1ZGUgPGJvb3N0L2dy YXBoL2FkamFjZW5jeV9saXN0LmhwcD4KLWRpZmYgLXVwIC4vcmVjb2duaXRpb24vaW5jbHVkZS9w Y2wvcmVjb2duaXRpb24vaW1wbC9odi9odl9nby5ocHAubWV0c2xpYiAuL3JlY29nbml0aW9uL2lu Y2x1ZGUvcGNsL3JlY29nbml0aW9uL2ltcGwvaHYvaHZfZ28uaHBwCi0tLS0gLi9yZWNvZ25pdGlv bi9pbmNsdWRlL3BjbC9yZWNvZ25pdGlvbi9pbXBsL2h2L2h2X2dvLmhwcC5tZXRzbGliCTIwMTMt MTAtMDcgMDk6MDk6MzUuMDAwMDAwMDAwIC0wNDAwCi0rKysgLi9yZWNvZ25pdGlvbi9pbmNsdWRl L3BjbC9yZWNvZ25pdGlvbi9pbXBsL2h2L2h2X2dvLmhwcAkyMDEzLTEwLTI2IDExOjEyOjA0LjQy MjMxMDM4NyAtMDQwMAotQEAgLTQ0NSw3ICs0NDUsNyBAQCB2b2lkIHBjbDo6R2xvYmFsSHlwb3Ro ZXNlc1ZlcmlmaWNhdGlvbjxNCi0gICBtZXRzOjpub2ltcHJvdmVfdGVybWluYXRpb25fY3JpdGVy aWEgbm9pbXByb3ZlIChtYXhfaXRlcmF0aW9uc18pOwotICAgbWV0czo6bGluZWFyX2Nvb2xpbmcg bGluZWFyX2Nvb2xpbmc7Ci0gICBtZXRzOjpzaW11bGF0ZWRfYW5uZWFsaW5nPG1vdmVfbWFuYWdl cj4gc2EgKG1vZGVsLCBiZXN0X3JlY29yZGVyLCBuZWlnaCwgbm9pbXByb3ZlLCBsaW5lYXJfY29v bGluZywgaW5pdGlhbF90ZW1wXywgMWUtNywgMik7Ci0tICBzYS5zZXRBcHBseUFuZEV2YWx1YXRl KHRydWUpOwotKyAgLy9zYS5zZXRBcHBseUFuZEV2YWx1YXRlKHRydWUpOwotIAotICAgewotICAg ICBwY2w6OlNjb3BlVGltZSB0ICgiU0Egc2VhcmNoLi4uIik7CgpkaWZmIC0tZ2l0IGEvcGNsLTEu Ny4yLWZlZG9yYS5wYXRjaCBiL3BjbC0xLjcuMi1mZWRvcmEucGF0Y2gKbmV3IGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggMDAwMDAwMC4uYzdhMjY1YgotLS0gL2Rldi9udWxsCisrKyBiL3BjbC0xLjcu Mi1mZWRvcmEucGF0Y2gKQEAgLTAsMCArMSwxMyBAQAorZGlmZiAtdXAgLi9QQ0xDb25maWcuY21h a2UuaW4uZmVkb3JhIC4vUENMQ29uZmlnLmNtYWtlLmluCistLS0gLi9QQ0xDb25maWcuY21ha2Uu aW4uZmVkb3JhCTIwMTMtMTAtMDcgMDk6MDk6MzUuMDAwMDAwMDAwIC0wNDAwCisrKysgLi9QQ0xD b25maWcuY21ha2UuaW4JMjAxNC0wMy0yMSAxNjo0MDowMS4wNTcyMTY2MjcgLTA0MDAKK0BAIC00 OTAsOCArNDkwLDcgQEAgaWYoV0lOMzIgQU5EIE5PVCBNSU5HVykKKyAgIGdldF9maWxlbmFtZV9j b21wb25lbnQoUENMX1JPT1QgIiR7UENMX0RJUn0iIFBBVEgpCisgZWxzZShXSU4zMiBBTkQgTk9U IE1JTkdXKQorICMgUENMQ29uZmlnLmNtYWtlIGlzIGluc3RhbGxlZCB0byBQQ0xfUk9PVC9zaGFy ZS9wY2wteC55CistICBnZXRfZmlsZW5hbWVfY29tcG9uZW50KFBDTF9ST09UICIke1BDTF9ESVJ9 IiBQQVRIKQorLSAgZ2V0X2ZpbGVuYW1lX2NvbXBvbmVudChQQ0xfUk9PVCAiJHtQQ0xfUk9PVH0i IFBBVEgpCisrICBzZXQoUENMX1JPT1QgIkBDTUFLRV9JTlNUQUxMX1BSRUZJWEAiKQorIGVuZGlm KFdJTjMyIEFORCBOT1QgTUlOR1cpCisgCisgIyBjaGVjayB3aGV0aGVyIFBDTENvbmZpZy5jbWFr ZSBpcyBmb3VuZCBpbnRvIGEgUENMIGluc3RhbGxhdGlvbiBvciBpbiBhIGJ1aWxkIHRyZWUKCmRp ZmYgLS1naXQgYS9wY2wtMS43LjItbWV0c2xpYi5wYXRjaCBiL3BjbC0xLjcuMi1tZXRzbGliLnBh dGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMTMzMmEKLS0tIC9kZXYv bnVsbAorKysgYi9wY2wtMS43LjItbWV0c2xpYi5wYXRjaApAQCAtMCwwICsxLDEyIEBACitkaWZm IC11cCAuL3JlY29nbml0aW9uL2luY2x1ZGUvcGNsL3JlY29nbml0aW9uL2ltcGwvaHYvaHZfZ28u aHBwLm1ldHNsaWIgLi9yZWNvZ25pdGlvbi9pbmNsdWRlL3BjbC9yZWNvZ25pdGlvbi9pbXBsL2h2 L2h2X2dvLmhwcAorLS0tIC4vcmVjb2duaXRpb24vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24vaW1w bC9odi9odl9nby5ocHAubWV0c2xpYgkyMDEzLTEwLTA3IDA5OjA5OjM1LjAwMDAwMDAwMCAtMDQw MAorKysrIC4vcmVjb2duaXRpb24vaW5jbHVkZS9wY2wvcmVjb2duaXRpb24vaW1wbC9odi9odl9n by5ocHAJMjAxMy0xMC0yNiAxMToxMjowNC40MjIzMTAzODcgLTA0MDAKK0BAIC00NDUsNyArNDQ1 LDcgQEAgdm9pZCBwY2w6Okdsb2JhbEh5cG90aGVzZXNWZXJpZmljYXRpb248TQorICAgbWV0czo6 bm9pbXByb3ZlX3Rlcm1pbmF0aW9uX2NyaXRlcmlhIG5vaW1wcm92ZSAobWF4X2l0ZXJhdGlvbnNf KTsKKyAgIG1ldHM6OmxpbmVhcl9jb29saW5nIGxpbmVhcl9jb29saW5nOworICAgbWV0czo6c2lt dWxhdGVkX2FubmVhbGluZzxtb3ZlX21hbmFnZXI+IHNhIChtb2RlbCwgYmVzdF9yZWNvcmRlciwg bmVpZ2gsIG5vaW1wcm92ZSwgbGluZWFyX2Nvb2xpbmcsIGluaXRpYWxfdGVtcF8sIDFlLTcsIDIp OworLSAgc2Euc2V0QXBwbHlBbmRFdmFsdWF0ZSh0cnVlKTsKKysgIC8vc2Euc2V0QXBwbHlBbmRF dmFsdWF0ZSh0cnVlKTsKKyAKKyAgIHsKKyAgICAgcGNsOjpTY29wZVRpbWUgdCAoIlNBIHNlYXJj aC4uLiIpOwoKZGlmZiAtLWdpdCBhL3BjbC0xLjcuMi1zc2UyLnBhdGNoIGIvcGNsLTEuNy4yLXNz ZTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTI1YjA2NwotLS0g L2Rldi9udWxsCisrKyBiL3BjbC0xLjcuMi1zc2UyLnBhdGNoCkBAIC0wLDAgKzEsMjEgQEAKK2Rp ZmYgLXVwIC4vY21ha2UvcGNsX2ZpbmRfc3NlLmNtYWtlLnNzZTIgLi9jbWFrZS9wY2xfZmluZF9z c2UuY21ha2UKKy0tLSAuL2NtYWtlL3BjbF9maW5kX3NzZS5jbWFrZS5zc2UyCTIwMTQtMTItMTUg MjA6Mjk6MzIuMDM0MDk5MTQyIC0wNTAwCisrKysgLi9jbWFrZS9wY2xfZmluZF9zc2UuY21ha2UJ MjAxNC0xMi0xNSAyMDozMzozNy4xNjIzMjI5NDAgLTA1MDAKK0BAIC0xNTAsMTYgKzE1MCw4IEBA IG1hY3JvKFBDTF9DSEVDS19GT1JfU1NFKQorICAgICBzZXQoQ01BS0VfUkVRVUlSRURfRkxBR1Mp CisgCisgICAgIGlmKENNQUtFX0NPTVBJTEVSX0lTX0dOVUNDIE9SIENNQUtFX0NPTVBJTEVSX0lT X0dOVUNYWCBPUiBDTUFLRV9DT01QSUxFUl9JU19DTEFORykKKy0gICAgICAgIGlmKEhBVkVfU1NF NF8yX0VYVEVOU0lPTlMpCistICAgICAgICAgICAgU0VUKFNTRV9GTEFHUyAiJHtTU0VfRkxBR1N9 IC1tc3NlNC4yIC1tZnBtYXRoPXNzZSIpCistICAgICAgICBlbHNlaWYoSEFWRV9TU0U0XzFfRVhU RU5TSU9OUykKKy0gICAgICAgICAgICBTRVQoU1NFX0ZMQUdTICIke1NTRV9GTEFHU30gLW1zc2U0 LjEgLW1mcG1hdGg9c3NlIikKKy0gICAgICAgIGVsc2VpZihIQVZFX1NTRTNfRVhURU5TSU9OUykK Ky0gICAgICAgICAgICBTRVQoU1NFX0ZMQUdTICIke1NTRV9GTEFHU30gLW1zc2UzIC1tZnBtYXRo PXNzZSIpCistICAgICAgICBlbHNlaWYoSEFWRV9TU0UyX0VYVEVOU0lPTlMpCisrICAgICAgICBp ZihIQVZFX1NTRTJfRVhURU5TSU9OUyBBTkQgJHtDTUFLRV9TWVNURU1fUFJPQ0VTU09SfSBTVFJF UVVBTCAieDg2XzY0IikKKyAgICAgICAgICAgICBTRVQoU1NFX0ZMQUdTICIke1NTRV9GTEFHU30g LW1zc2UyIC1tZnBtYXRoPXNzZSIpCistICAgICAgICBlbHNlaWYoSEFWRV9TU0VfRVhURU5TSU9O UykKKy0gICAgICAgICAgICBTRVQoU1NFX0ZMQUdTICIke1NTRV9GTEFHU30gLW1zc2UgLW1mcG1h dGg9c3NlIikKKyAgICAgICAgIGVsc2UoKQorICAgICAgICAgICAgICMgU2V0dGluZyAtZmZsb2F0 LXN0b3JlIHRvIGFsbGV2aWF0ZSAzMmJpdCB2cyA2NGJpdCBkaXNjcmVwYW5jaWVzIG9uIG5vbi1T U0UKKyAgICAgICAgICAgICAjIHBsYXRmb3Jtcy4KCmRpZmYgLS1naXQgYS9wY2wtdnRrNi5wYXRj aCBiL3BjbC12dGs2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMGNhMGMy Li4wMDAwMDAwCi0tLSBhL3BjbC12dGs2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE4NCAr MCwwIEBACi1kaWZmIC11cCAuL2FwcHMvc3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVy ZS5jcHAudnRrNiAuL2FwcHMvc3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5jcHAK LS0tLSAuL2FwcHMvc3JjL3JlbmRlcl92aWV3c190ZXNzZWxhdGVkX3NwaGVyZS5jcHAudnRrNgky MDEzLTA3LTIzIDE3OjIxOjAyLjAwMDAwMDAwMCArMDAwMAotKysrIC4vYXBwcy9zcmMvcmVuZGVy X3ZpZXdzX3Rlc3NlbGF0ZWRfc3BoZXJlLmNwcAkyMDEzLTA4LTIxIDAwOjQ1OjU5LjAwOTg0NDc3 NyArMDAwMAotQEAgLTYxLDcgKzYxLDcgQEAgcGNsOjphcHBzOjpSZW5kZXJWaWV3c1Rlc3NlbGF0 ZWRTcGhlcmU6OgotIAotICAgdnRrU21hcnRQb2ludGVyPHZ0a1RyYW5zZm9ybUZpbHRlcj4gdHJh bnNfZmlsdGVyX2NlbnRlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtUcmFuc2Zvcm1GaWx0ZXI+OjpO ZXcgKCk7Ci0gICB0cmFuc19maWx0ZXJfY2VudGVyLT5TZXRUcmFuc2Zvcm0gKHRyYW5zX2NlbnRl cik7Ci0tICB0cmFuc19maWx0ZXJfY2VudGVyLT5TZXRJbnB1dCAocG9seWRhdGFfKTsKLSsgIHRy YW5zX2ZpbHRlcl9jZW50ZXItPlNldElucHV0RGF0YSAocG9seWRhdGFfKTsKLSAgIHRyYW5zX2Zp bHRlcl9jZW50ZXItPlVwZGF0ZSAoKTsKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0 YU1hcHBlcj4gbWFwcGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhTWFwcGVyPjo6TmV3 ICgpOwotZGlmZiAtdXAgLi9jb21tb24vQ01ha2VMaXN0cy50eHQudnRrNiAuL2NvbW1vbi9DTWFr ZUxpc3RzLnR4dAotZGlmZiAtdXAgLi9pby9DTWFrZUxpc3RzLnR4dC52dGs2IC4vaW8vQ01ha2VM aXN0cy50eHQKLS0tLSAuL2lvL0NNYWtlTGlzdHMudHh0LnZ0azYJMjAxMy0wOC0yMSAwMTowMDow NS41NDIxMzAyNjIgKzAwMDAKLSsrKyAuL2lvL0NNYWtlTGlzdHMudHh0CTIwMTMtMDgtMjEgMDE6 MDg6MDMuNjM2MTc0MzQyICswMDAwCi1AQCAtOTQsNyArOTQsOCBAQCBpZihidWlsZCkKLSAgICAg ICAgICAgICBzcmMvdnRrX2xpYl9pby5jcHAKLSAgICAgICAgICAgICBzcmMvcG5nX2lvLmNwcAot ICAgICAgICAgICAgKQotLSAgICAgICAgc2V0KFZUS19JT19UQVJHRVRfTElOS19MSUJSQVJJRVMg dnRrQ29tbW9uIHZ0a1dpZGdldHMgdnRrSU8gdnRrSW1hZ2luZyB2dGtIeWJyaWQgdnRrR3JhcGhp Y3MgdnRrUmVuZGVyaW5nIHZ0a0ZpbHRlcmluZyB2dGtWb2x1bWVSZW5kZXJpbmcpCi0rICAgICAg ICBzZXQoVlRLX0lPX1RBUkdFVF9MSU5LX0xJQlJBUklFUyB2dGtDb21tb25Db3JlIHZ0a0lPQ29y ZSB2dGtJT0ltYWdlIHZ0a0lPTGVnYWN5IHZ0a0lPUExZIHZ0a0ltYWdpbmdDb3JlKQotKyAgICAg ICAgI3NldChWVEtfSU9fVEFSR0VUX0xJTktfTElCUkFSSUVTIHZ0a0NvbW1vbkNvcmUgdnRrSW50 ZXJhY3Rpb25XaWRnZXRzIHZ0a0lPQ29yZSB2dGtJbWFnaW5nIHZ0a0h5YnJpZCB2dGtHcmFwaGlj cyB2dGtSZW5kZXJpbmcgdnRrRmlsdGVyaW5nIHZ0a1ZvbHVtZVJlbmRlcmluZykKLSAgICAgICAg ICMgSW5kaWNhdGVzIHRoYXQgd2UgY2FuIHJlbHkgb24gVlRLIHRvIGJlIHByZXNlbnQKLSAgICAg ICAgIHNldChWVEtfREVGSU5FUyAtRFBDTF9CVUlMVF9XSVRIX1ZUSykKLSAgICAgZW5kaWYgKCkK LWRpZmYgLXVwIC4vaW8vc3JjL3Z0a19saWJfaW8uY3BwLnZ0azYgLi9pby9zcmMvdnRrX2xpYl9p by5jcHAKLS0tLSAuL2lvL3NyYy92dGtfbGliX2lvLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6 MDIuMDAwMDAwMDAwICswMDAwCi0rKysgLi9pby9zcmMvdnRrX2xpYl9pby5jcHAJMjAxMy0wOC0y MSAwMDo1NjoyOC40MTg0ODgwMzAgKzAwMDAKLUBAIC0xNzgsNyArMTc4LDcgQEAgcGNsOjppbzo6 c2F2ZVBvbHlnb25GaWxlVlRLIChjb25zdCBzdGQ6OgotICAgcGNsOjppbzo6bWVzaDJ2dGsgKG1l c2gsIHBvbHlfZGF0YSk7Ci0gCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFXcml0ZXI+ IHBvbHlfd3JpdGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhV3JpdGVyPjo6TmV3ICgp OwotLSAgcG9seV93cml0ZXItPlNldElucHV0IChwb2x5X2RhdGEpOwotKyAgcG9seV93cml0ZXIt PlNldElucHV0RGF0YSAocG9seV9kYXRhKTsKLSAgIHBvbHlfd3JpdGVyLT5TZXRGaWxlTmFtZSAo ZmlsZV9uYW1lLmNfc3RyICgpKTsKLSAgIHBvbHlfd3JpdGVyLT5Xcml0ZSAoKTsKLSAKLUBAIC0x OTQsNyArMTk0LDcgQEAgcGNsOjppbzo6c2F2ZVBvbHlnb25GaWxlUExZIChjb25zdCBzdGQ6Ogot ICAgcGNsOjppbzo6bWVzaDJ2dGsgKG1lc2gsIHBvbHlfZGF0YSk7Ci0gCi0gICB2dGtTbWFydFBv aW50ZXI8dnRrUExZV3JpdGVyPiBwb2x5X3dyaXRlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQTFlX cml0ZXI+OjpOZXcgKCk7Ci0tICBwb2x5X3dyaXRlci0+U2V0SW5wdXQgKHBvbHlfZGF0YSk7Ci0r ICBwb2x5X3dyaXRlci0+U2V0SW5wdXREYXRhIChwb2x5X2RhdGEpOwotICAgcG9seV93cml0ZXIt PlNldEZpbGVOYW1lIChmaWxlX25hbWUuY19zdHIgKCkpOwotIAlwb2x5X3dyaXRlci0+U2V0QXJy YXlOYW1lICgiQ29sb3JzIik7Ci0gICBwb2x5X3dyaXRlci0+V3JpdGUgKCk7Ci1AQCAtMjA5LDkg KzIwOSw5IEBAIHBjbDo6aW86OnNhdmVQb2x5Z29uRmlsZVNUTCAoY29uc3Qgc3RkOjoKLSAgIHZ0 a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YT4gcG9seV9kYXRhID0gdnRrU21hcnRQb2ludGVyPHZ0 a1BvbHlEYXRhPjo6TmV3ICgpOwotIAotICAgcGNsOjppbzo6bWVzaDJ2dGsgKG1lc2gsIHBvbHlf ZGF0YSk7Ci0tICBwb2x5X2RhdGEtPlVwZGF0ZSAoKTsKLSsgIAotICAgdnRrU21hcnRQb2ludGVy PHZ0a1NUTFdyaXRlcj4gcG9seV93cml0ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrU1RMV3JpdGVy Pjo6TmV3ICgpOwotLSAgcG9seV93cml0ZXItPlNldElucHV0IChwb2x5X2RhdGEpOwotKyAgcG9s eV93cml0ZXItPlNldElucHV0RGF0YSAocG9seV9kYXRhKTsKLSAgIHBvbHlfd3JpdGVyLT5TZXRG aWxlTmFtZSAoZmlsZV9uYW1lLmNfc3RyICgpKTsKLSAgIHBvbHlfd3JpdGVyLT5Xcml0ZSAoKTsK LSAKLUBAIC00ODMsOSArNDgzLDcgQEAgcGNsOjppbzo6c2F2ZVJhbmdlSW1hZ2VQbGFuYXJGaWxl UE5HICgKLSB7Ci0gICB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VEYXRhPiBpbWFnZSA9IHZ0a1Nt YXJ0UG9pbnRlcjx2dGtJbWFnZURhdGE+OjpOZXcoKTsKLSAgIGltYWdlLT5TZXREaW1lbnNpb25z KHJhbmdlX2ltYWdlLndpZHRoLCByYW5nZV9pbWFnZS5oZWlnaHQsIDEpOwotLSAgaW1hZ2UtPlNl dE51bWJlck9mU2NhbGFyQ29tcG9uZW50cygxKTsKLS0gIGltYWdlLT5TZXRTY2FsYXJUeXBlVG9G bG9hdCgpOwotLSAgaW1hZ2UtPkFsbG9jYXRlU2NhbGFycygpOwotKyAgaW1hZ2UtPkFsbG9jYXRl U2NhbGFycyhWVEtfRkxPQVQsIDEpOwotIAotICAgaW50KiBkaW1zID0gaW1hZ2UtPkdldERpbWVu c2lvbnMoKTsKLSAKLUBAIC01MDQsNyArNTAyLDcgQEAgcGNsOjppbzo6c2F2ZVJhbmdlSW1hZ2VQ bGFuYXJGaWxlUE5HICgKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtJbWFnZVNoaWZ0U2NhbGU+ IHNoaWZ0U2NhbGVGaWx0ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VTaGlmdFNjYWxlPjo6 TmV3KCk7Ci0gICBzaGlmdFNjYWxlRmlsdGVyLT5TZXRPdXRwdXRTY2FsYXJUeXBlVG9VbnNpZ25l ZENoYXIoKTsKLS0gIHNoaWZ0U2NhbGVGaWx0ZXItPlNldElucHV0Q29ubmVjdGlvbihpbWFnZS0+ R2V0UHJvZHVjZXJQb3J0KCkpOwotKyAgc2hpZnRTY2FsZUZpbHRlci0+U2V0SW5wdXREYXRhKGlt YWdlKTsKLSAgIHNoaWZ0U2NhbGVGaWx0ZXItPlNldFNoaWZ0KC0xLjBmICogaW1hZ2UtPkdldFNj YWxhclJhbmdlKClbMF0pOyAvLyBicmluZ3MgdGhlIGxvd2VyIGJvdW5kIHRvIDAKLSAgIHNoaWZ0 U2NhbGVGaWx0ZXItPlNldFNjYWxlKG5ld1JhbmdlL29sZFJhbmdlKTsKLSAgIHNoaWZ0U2NhbGVG aWx0ZXItPlVwZGF0ZSgpOwotZGlmZiAtdXAgLi9vdXRvZmNvcmUvaW5jbHVkZS9wY2wvb3V0b2Zj b3JlL3Zpc3VhbGl6YXRpb24vYXhlcy5oLnZ0azYgLi9vdXRvZmNvcmUvaW5jbHVkZS9wY2wvb3V0 b2Zjb3JlL3Zpc3VhbGl6YXRpb24vYXhlcy5oCi0tLS0gLi9vdXRvZmNvcmUvaW5jbHVkZS9wY2wv b3V0b2Zjb3JlL3Zpc3VhbGl6YXRpb24vYXhlcy5oLnZ0azYJMjAxMy0wOC0yMSAwMzowMDo0MC42 MTcxNjU4MDYgKzAwMDAKLSsrKyAuL291dG9mY29yZS9pbmNsdWRlL3BjbC9vdXRvZmNvcmUvdmlz dWFsaXphdGlvbi9heGVzLmgJMjAxMy0wOC0yMSAwMzowMToyNS43NDExMDYxOTYgKzAwMDAKLUBA IC00MiwxNyArNDIsMTcgQEAgcHVibGljOgotICAgICBheGVzX2NvbG9ycy0+SW5zZXJ0TmV4dFZh bHVlICgxLjApOwotIAotICAgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGE+IGF4ZXNfZGF0 YSA9IGF4ZXNfLT5HZXRPdXRwdXQgKCk7Ci0tICAgIGF4ZXNfZGF0YS0+VXBkYXRlICgpOwotKyAg ICBheGVzXy0+VXBkYXRlICgpOwotICAgICBheGVzX2RhdGEtPkdldFBvaW50RGF0YSAoKS0+U2V0 U2NhbGFycyAoYXhlc19jb2xvcnMpOwotIAotICAgICB2dGtTbWFydFBvaW50ZXI8dnRrVHViZUZp bHRlcj4gYXhlc190dWJlcyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtUdWJlRmlsdGVyPjo6TmV3ICgp OwotLSAgICBheGVzX3R1YmVzLT5TZXRJbnB1dCAoYXhlc19kYXRhKTsKLSsgICAgYXhlc190dWJl cy0+U2V0SW5wdXREYXRhIChheGVzX2RhdGEpOwotICAgICBheGVzX3R1YmVzLT5TZXRSYWRpdXMg KGF4ZXNfLT5HZXRTY2FsZUZhY3RvciAoKSAvIDEwMC4wKTsKLSAgICAgYXhlc190dWJlcy0+U2V0 TnVtYmVyT2ZTaWRlcyAoNik7Ci0gCi0gICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YU1h cHBlcj4gYXhlc19tYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpO ZXcgKCk7Ci0gICAgIGF4ZXNfbWFwcGVyLT5TZXRTY2FsYXJNb2RlVG9Vc2VQb2ludERhdGEgKCk7 Ci0tICAgIGF4ZXNfbWFwcGVyLT5TZXRJbnB1dCAoYXhlc190dWJlcy0+R2V0T3V0cHV0ICgpKTsK LSsgICAgYXhlc19tYXBwZXItPlNldElucHV0RGF0YSAoYXhlc190dWJlcy0+R2V0T3V0cHV0ICgp KTsKLSAKLSAgICAgYXhlc19hY3Rvcl8gPSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcg KCk7Ci0gICAgIGF4ZXNfYWN0b3JfLT5HZXRQcm9wZXJ0eSAoKS0+U2V0TGlnaHRpbmcgKGZhbHNl KTsKLWRpZmYgLXVwIC4vb3V0b2Zjb3JlL3NyYy92aXN1YWxpemF0aW9uL291dG9mY29yZV9jbG91 ZC5jcHAudnRrNiAuL291dG9mY29yZS9zcmMvdmlzdWFsaXphdGlvbi9vdXRvZmNvcmVfY2xvdWQu Y3BwCi0tLS0gLi9vdXRvZmNvcmUvc3JjL3Zpc3VhbGl6YXRpb24vb3V0b2Zjb3JlX2Nsb3VkLmNw cC52dGs2CTIwMTMtMDgtMjEgMDM6MDI6MzUuODQ3NTc1NDIyICswMDAwCi0rKysgLi9vdXRvZmNv cmUvc3JjL3Zpc3VhbGl6YXRpb24vb3V0b2Zjb3JlX2Nsb3VkLmNwcAkyMDEzLTA4LTIxIDAzOjAy OjUwLjE4NTg3NTkxMiArMDAwMAotQEAgLTE1OSwxMCArMTU5LDEwIEBAIE91dG9mY29yZUNsb3Vk Ojp1cGRhdGVWb3hlbERhdGEgKCkKLSAgICAgZG91YmxlIHkgPSB2b3hlbF9jZW50ZXJzW2ldLnk7 Ci0gICAgIGRvdWJsZSB6ID0gdm94ZWxfY2VudGVyc1tpXS56OwotIAotLSAgICB2b3hlbF9kYXRh LT5BZGRJbnB1dCAoZ2V0VnRrQ3ViZSAoeCAtIHMsIHggKyBzLCB5IC0gcywgeSArIHMsIHogLSBz LCB6ICsgcykpOwotKyAgICB2b3hlbF9kYXRhLT5BZGRJbnB1dERhdGEgKGdldFZ0a0N1YmUgKHgg LSBzLCB4ICsgcywgeSAtIHMsIHkgKyBzLCB6IC0gcywgeiArIHMpKTsKLSAgIH0KLSAKLS0gIHZv eGVsX21hcHBlci0+U2V0SW5wdXQgKHZveGVsX2RhdGEtPkdldE91dHB1dCAoKSk7Ci0rICB2b3hl bF9tYXBwZXItPlNldElucHV0RGF0YSAodm94ZWxfZGF0YS0+R2V0T3V0cHV0ICgpKTsKLSAKLSAg IHZveGVsX2FjdG9yXy0+U2V0TWFwcGVyICh2b3hlbF9tYXBwZXIpOwotICAgdm94ZWxfYWN0b3Jf LT5HZXRQcm9wZXJ0eSAoKS0+U2V0UmVwcmVzZW50YXRpb25Ub1dpcmVmcmFtZSAoKTsKLWRpZmYg LXVwIC4vc3VyZmFjZS9DTWFrZUxpc3RzLnR4dC52dGs2IC4vc3VyZmFjZS9DTWFrZUxpc3RzLnR4 dAotLS0tIC4vc3VyZmFjZS9DTWFrZUxpc3RzLnR4dC52dGs2CTIwMTMtMDgtMjEgMTE6NDY6NTku MjM5MjUwMTM3ICswMDAwCi0rKysgLi9zdXJmYWNlL0NNYWtlTGlzdHMudHh0CTIwMTMtMDgtMjEg MTE6NTg6NTguMjQ1ODU1NTc4ICswMDAwCi1AQCAtNDQsNyArNDQsNyBAQCBpZihidWlsZCkKLSAg ICAgICAgICAgICBzcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9xdWFkcmljX2RlY2ltYXRpb24u Y3BwCi0gICAgICAgICAgICAgc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21lc2hfc21vb3RoaW5nX2xh cGxhY2lhbi5jcHAKLSAgICAgICAgICAgICBzcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9v dGhpbmdfd2luZG93ZWRfc2luYy5jcHApCi0tICAgICAgICBzZXQoVlRLX1NNT09USElOR19UQVJH RVRfTElOS19MSUJSQVJJRVMgdnRrQ29tbW9uIHZ0a1dpZGdldHMgdnRrR3JhcGhpY3MpCi0rICAg ICAgICBzZXQoVlRLX1NNT09USElOR19UQVJHRVRfTElOS19MSUJSQVJJRVMgdnRrQ29tbW9uQ29y ZSB2dGtGaWx0ZXJzTW9kZWxpbmcpCi0gICAgIGVuZGlmKCkKLSAgICAgCi0gICAgIFNFVChCVUlM RF9zdXJmYWNlX29uX251cmJzIDAgQ0FDSEUgQk9PTCAiRml0dGluZyBOVVJCUyB0byBwb2ludC1j bG91ZHMgdXNpbmcgb3Blbk5VUkJTIiApCi1kaWZmIC11cCAuL3N1cmZhY2Uvc3JjL3Z0a19zbW9v dGhpbmcvdnRrX21lc2hfcXVhZHJpY19kZWNpbWF0aW9uLmNwcC52dGs2IC4vc3VyZmFjZS9zcmMv dnRrX3Ntb290aGluZy92dGtfbWVzaF9xdWFkcmljX2RlY2ltYXRpb24uY3BwCi0tLS0gLi9zdXJm YWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a19tZXNoX3F1YWRyaWNfZGVjaW1hdGlvbi5jcHAudnRr NgkyMDEzLTA4LTIxIDExOjQ0OjE3LjA3NjA5MjYzNiArMDAwMAotKysrIC4vc3VyZmFjZS9zcmMv dnRrX3Ntb290aGluZy92dGtfbWVzaF9xdWFkcmljX2RlY2ltYXRpb24uY3BwCTIwMTMtMDgtMjEg MTE6NDQ6MzEuOTY1MzgxNzI5ICswMDAwCi1AQCAtNTksNyArNTksNyBAQCBwY2w6Ok1lc2hRdWFk cmljRGVjaW1hdGlvblZUSzo6cGVyZm9ybVByCi0gICAvLyBBcHBseSB0aGUgVlRLIGFsZ29yaXRo bQotICAgdnRrU21hcnRQb2ludGVyPHZ0a1F1YWRyaWNEZWNpbWF0aW9uPiB2dGtfcXVhZHJpY19k ZWNpbWF0aW9uX2ZpbHRlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtRdWFkcmljRGVjaW1hdGlvbj46 Ok5ldygpOwotICAgdnRrX3F1YWRyaWNfZGVjaW1hdGlvbl9maWx0ZXItPlNldFRhcmdldFJlZHVj dGlvbiAodGFyZ2V0X3JlZHVjdGlvbl9mYWN0b3JfKTsKLS0gIHZ0a19xdWFkcmljX2RlY2ltYXRp b25fZmlsdGVyLT5TZXRJbnB1dCAodnRrX3BvbHlnb25zXyk7Ci0rICB2dGtfcXVhZHJpY19kZWNp bWF0aW9uX2ZpbHRlci0+U2V0SW5wdXREYXRhICh2dGtfcG9seWdvbnNfKTsKLSAgIHZ0a19xdWFk cmljX2RlY2ltYXRpb25fZmlsdGVyLT5VcGRhdGUgKCk7Ci0gCi0gICB2dGtfcG9seWdvbnNfID0g dnRrX3F1YWRyaWNfZGVjaW1hdGlvbl9maWx0ZXItPkdldE91dHB1dCAoKTsKLWRpZmYgLXVwIC4v c3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhpbmdfbGFwbGFjaWFuLmNw cC52dGs2IC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9vdGhpbmdfbGFw bGFjaWFuLmNwcAotLS0tIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9v dGhpbmdfbGFwbGFjaWFuLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICsw MDAwCi0rKysgLi9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ19s YXBsYWNpYW4uY3BwCTIwMTMtMDgtMjEgMDA6NDU6NTkuMDA5ODQ0Nzc3ICswMDAwCi1AQCAtNTEs NyArNTEsNyBAQCBwY2w6Ok1lc2hTbW9vdGhpbmdMYXBsYWNpYW5WVEs6OnBlcmZvcm1QCi0gCi0g ICAvLyBBcHBseSB0aGUgVlRLIGFsZ29yaXRobQotICAgdnRrU21hcnRQb2ludGVyPHZ0a1Ntb290 aFBvbHlEYXRhRmlsdGVyPiB2dGtfc21vb3RoZXIgPSB2dGtTbW9vdGhQb2x5RGF0YUZpbHRlcjo6 TmV3ICgpOwotLSAgdnRrX3Ntb290aGVyLT5TZXRJbnB1dCAodnRrX3BvbHlnb25zXyk7Ci0rICB2 dGtfc21vb3RoZXItPlNldElucHV0RGF0YSAodnRrX3BvbHlnb25zXyk7Ci0gICB2dGtfc21vb3Ro ZXItPlNldE51bWJlck9mSXRlcmF0aW9ucyAobnVtX2l0ZXJfKTsKLSAgIGlmIChjb252ZXJnZW5j ZV8gIT0gMC4wZikKLSAgICAgdnRrX3Ntb290aGVyLT5TZXRDb252ZXJnZW5jZSAoY29udmVyZ2Vu Y2VfKTsKLWRpZmYgLXVwIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfbWVzaF9zbW9v dGhpbmdfd2luZG93ZWRfc2luYy5jcHAudnRrNiAuL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcv dnRrX21lc2hfc21vb3RoaW5nX3dpbmRvd2VkX3NpbmMuY3BwCi0tLS0gLi9zdXJmYWNlL3NyYy92 dGtfc21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ193aW5kb3dlZF9zaW5jLmNwcC52dGs2CTIw MTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICswMDAwCi0rKysgLi9zdXJmYWNlL3NyYy92dGtf c21vb3RoaW5nL3Z0a19tZXNoX3Ntb290aGluZ193aW5kb3dlZF9zaW5jLmNwcAkyMDEzLTA4LTIx IDAwOjQ1OjU5LjAwOTg0NDc3NyArMDAwMAotQEAgLTUxLDcgKzUxLDcgQEAgcGNsOjpNZXNoU21v b3RoaW5nV2luZG93ZWRTaW5jVlRLOjpwZXJmbwotIAotICAgLy8gQXBwbHkgdGhlIFZUSyBhbGdv cml0aG0KLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtXaW5kb3dlZFNpbmNQb2x5RGF0YUZpbHRlcj4g dnRrX3Ntb290aGVyID0gdnRrV2luZG93ZWRTaW5jUG9seURhdGFGaWx0ZXI6Ok5ldyAoKTsKLS0g IHZ0a19zbW9vdGhlci0+U2V0SW5wdXQgKHZ0a19wb2x5Z29uc18pOwotKyAgdnRrX3Ntb290aGVy LT5TZXRJbnB1dERhdGEgKHZ0a19wb2x5Z29uc18pOwotICAgdnRrX3Ntb290aGVyLT5TZXROdW1i ZXJPZkl0ZXJhdGlvbnMgKG51bV9pdGVyXyk7Ci0gICB2dGtfc21vb3RoZXItPlNldFBhc3NCYW5k IChwYXNzX2JhbmRfKTsKLSAgIHZ0a19zbW9vdGhlci0+U2V0Tm9ybWFsaXplQ29vcmRpbmF0ZXMg KG5vcm1hbGl6ZV9jb29yZGluYXRlc18pOwotZGlmZiAtdXAgLi9zdXJmYWNlL3NyYy92dGtfc21v b3RoaW5nL3Z0a19tZXNoX3N1YmRpdmlzaW9uLmNwcC52dGs2IC4vc3VyZmFjZS9zcmMvdnRrX3Nt b290aGluZy92dGtfbWVzaF9zdWJkaXZpc2lvbi5jcHAKLS0tLSAuL3N1cmZhY2Uvc3JjL3Z0a19z bW9vdGhpbmcvdnRrX21lc2hfc3ViZGl2aXNpb24uY3BwLnZ0azYJMjAxMy0wNy0yMyAxNzoyMTow Mi4wMDAwMDAwMDAgKzAwMDAKLSsrKyAuL3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX21l c2hfc3ViZGl2aXNpb24uY3BwCTIwMTMtMDgtMjEgMDA6NDU6NTkuMDA5ODQ0Nzc3ICswMDAwCi1A QCAtNzgsNyArNzgsNyBAQCBwY2w6Ok1lc2hTdWJkaXZpc2lvblZUSzo6cGVyZm9ybVByb2Nlc3Np Ci0gICAgICAgYnJlYWs7Ci0gICB9Ci0gCi0tICB2dGtfc3ViZGl2aXNpb25fZmlsdGVyLT5TZXRJ bnB1dCAodnRrX3BvbHlnb25zXyk7Ci0rICB2dGtfc3ViZGl2aXNpb25fZmlsdGVyLT5TZXRJbnB1 dERhdGEgKHZ0a19wb2x5Z29uc18pOwotICAgdnRrX3N1YmRpdmlzaW9uX2ZpbHRlci0+VXBkYXRl ICgpOwotIAotICAgdnRrX3BvbHlnb25zXyA9IHZ0a19zdWJkaXZpc2lvbl9maWx0ZXItPkdldE91 dHB1dCAoKTsKLWRpZmYgLXVwIC4vc3VyZmFjZS9zcmMvdnRrX3Ntb290aGluZy92dGtfdXRpbHMu Y3BwLnZ0azYgLi9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5nL3Z0a191dGlscy5jcHAKLS0tLSAu L3N1cmZhY2Uvc3JjL3Z0a19zbW9vdGhpbmcvdnRrX3V0aWxzLmNwcC52dGs2CTIwMTMtMDctMjMg MTc6MjE6MDIuMDAwMDAwMDAwICswMDAwCi0rKysgLi9zdXJmYWNlL3NyYy92dGtfc21vb3RoaW5n L3Z0a191dGlscy5jcHAJMjAxMy0wOC0yMSAwMDo0NTo1OS4wMDk4NDQ3NzcgKzAwMDAKLUBAIC02 Myw3ICs2Myw3IEBAIHBjbDo6VlRLVXRpbHM6OmNvbnZlcnRUb1ZUSyAoY29uc3QgcGNsOjoKLSAg IG1lc2gydnRrICh0cmlhbmdsZXMsIHZ0a19wb2x5Z29ucyk7Ci0gCi0gICB2dGtTbWFydFBvaW50 ZXI8dnRrVHJpYW5nbGVGaWx0ZXI+IHZ0a190cmlhbmdsZXMgPSB2dGtUcmlhbmdsZUZpbHRlcjo6 TmV3ICgpOwotLSAgdnRrX3RyaWFuZ2xlcy0+U2V0SW5wdXQgKHZ0a19wb2x5Z29ucyk7Ci0rICB2 dGtfdHJpYW5nbGVzLT5TZXRJbnB1dERhdGEgKHZ0a19wb2x5Z29ucyk7Ci0gICB2dGtfdHJpYW5n bGVzLT5VcGRhdGUoKTsKLSAKLSAgIHRyaWFuZ2xlc19vdXRfdnRrID0gdnRrX3RyaWFuZ2xlcy0+ R2V0T3V0cHV0ICgpOwotZGlmZiAtdXAgLi90b29scy9DTWFrZUxpc3RzLnR4dC52dGs2IC4vdG9v bHMvQ01ha2VMaXN0cy50eHQKLS0tLSAuL3Rvb2xzL0NNYWtlTGlzdHMudHh0LnZ0azYJMjAxMy0w OC0yMSAxMjowMzoxOC44ODk1NzE0OTAgKzAwMDAKLSsrKyAuL3Rvb2xzL0NNYWtlTGlzdHMudHh0 CTIwMTMtMDgtMjEgMjE6NTI6MzEuOTc3ODE2NDQ1ICswMDAwCi1AQCAtMTU3LDcgKzE1Nyw3IEBA IGlmIChidWlsZCkKLSAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMgKHBjbF9vcmdhbml6ZWRf cGNkX3RvX3BuZyBwY2xfY29tbW9uIHBjbF9pbykKLSAKLSAgICAgICBQQ0xfQUREX0VYRUNVVEFC TEUocGNsX3RpZmYycGNkICR7U1VCU1lTX05BTUV9IHRpZmYycGNkLmNwcCkKLS0gICAgICB0YXJn ZXRfbGlua19saWJyYXJpZXMocGNsX3RpZmYycGNkIHBjbF9jb21tb24gcGNsX2lvKQotKyAgICAg IHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdGlmZjJwY2QgcGNsX2NvbW1vbiBwY2xfaW8gdnRr UmVuZGVyaW5nQ29yZSB2dGtSZW5kZXJpbmdPcGVuR0wgdnRrUmVuZGVyaW5nRnJlZVR5cGUgdnRr UmVuZGVyaW5nRnJlZVR5cGVPcGVuR0wgdnRrUmVuZGVyaW5nVm9sdW1lIHZ0a1JlbmRlcmluZ1Zv bHVtZU9wZW5HTCB2dGtGaWx0ZXJzU3RhdGlzdGljcyB2dGtGaWx0ZXJzU3RhdGlzdGljc0dudVIg dnRrSW50ZXJhY3Rpb25TdHlsZSB2dGtGaWx0ZXJzU3RhdGlzdGljcykKLSAgICAgICAgICAgCi0g ICAgICAgUENMX0FERF9FWEVDVVRBQkxFKHBjbF9wbHkydnRrICR7U1VCU1lTX05BTUV9IHBseTJ2 dGsuY3BwKQotICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfcGx5MnZ0ayBwY2xfY29t bW9uIHBjbF9pbykKLUBAIC0xNzIsNyArMTcyLDcgQEAgaWYgKGJ1aWxkKQotICAgICAgIHRhcmdl dF9saW5rX2xpYnJhcmllcyhwY2xfb2JqMnZ0ayBwY2xfY29tbW9uIHBjbF9pbykKLSAKLSAgICAg ICBQQ0xfQUREX0VYRUNVVEFCTEUocGNsX3Z0azJwY2QgJHtTVUJTWVNfTkFNRX0gdnRrMnBjZC5j cHApCi0tICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF92dGsycGNkIHBjbF9jb21tb24g cGNsX2lvKQotKyAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdnRrMnBjZCBwY2xfY29t bW9uIHBjbF9pbyB2dGtGaWx0ZXJzQ29yZSkKLSAKLSAgICAgICBpZihCVUlMRF92aXN1YWxpemF0 aW9uKQotICAgCi1AQCAtMjA2LDEzICsyMDYsMTMgQEAgaWYgKGJ1aWxkKQotICAgICAgICAgdGFy Z2V0X2xpbmtfbGlicmFyaWVzKHBjbF9vY3RyZWVfdmlld2VyIHBjbF9jb21tb24gcGNsX2lvIHBj bF9vY3RyZWUgcGNsX3Zpc3VhbGl6YXRpb24gcGNsX2tkdHJlZSBwY2xfZmlsdGVycykKLSAKLSAg ICAgICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfbWVzaDJwY2QgJHtTVUJTWVNfTkFNRX0gbWVz aDJwY2QuY3BwKQotLSAgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKHBjbF9tZXNoMnBjZCBw Y2xfY29tbW9uIHBjbF9pbyBwY2xfdmlzdWFsaXphdGlvbiBwY2xfZmlsdGVycyB2dGtDb21tb24p Ci0rICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMocGNsX21lc2gycGNkIHBjbF9jb21tb24g cGNsX2lvIHBjbF92aXN1YWxpemF0aW9uIHBjbF9maWx0ZXJzIHZ0a0NvbW1vbkNvcmUpCi0gICAg ICAgICAKLSAgICAgICAgIFBDTF9BRERfRVhFQ1VUQUJMRShwY2xfbWVzaF9zYW1wbGluZyAke1NV QlNZU19OQU1FfSBtZXNoX3NhbXBsaW5nLmNwcCkKLS0gICAgICAgIHRhcmdldF9saW5rX2xpYnJh cmllcyhwY2xfbWVzaF9zYW1wbGluZyBwY2xfY29tbW9uIHBjbF9pbyBwY2xfdmlzdWFsaXphdGlv biBwY2xfZmlsdGVycyB2dGtDb21tb24pCi0rICAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMo cGNsX21lc2hfc2FtcGxpbmcgcGNsX2NvbW1vbiBwY2xfaW8gcGNsX3Zpc3VhbGl6YXRpb24gcGNs X2ZpbHRlcnMgdnRrQ29tbW9uQ29yZSkKLSAgICAgICAgIAotICAgICAgICAgUENMX0FERF9FWEVD VVRBQkxFKHBjbF92aXJ0dWFsX3NjYW5uZXIgJHtTVUJTWVNfTkFNRX0gdmlydHVhbF9zY2FubmVy LmNwcCkKLS0gICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdmlydHVhbF9zY2FubmVy IHBjbF9jb21tb24gcGNsX2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9uIHZ0a0NvbW1v biB2dGtHcmFwaGljcykKLSsgICAgICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhwY2xfdmlydHVh bF9zY2FubmVyIHBjbF9jb21tb24gcGNsX2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9u IHZ0a0NvbW1vbkNvcmUgdnRrUmVuZGVyaW5nQ29yZSkKLSAKLSAgICAgICAgIFBDTF9BRERfRVhF Q1VUQUJMRSAocGNsX3ZveGVsX2dyaWRfb2NjbHVzaW9uX2VzdGltYXRpb24gJHtTVUJTWVNfTkFN RX0gdm94ZWxfZ3JpZF9vY2NsdXNpb25fZXN0aW1hdGlvbi5jcHApCi0gICAgICAgICB0YXJnZXRf bGlua19saWJyYXJpZXMgKHBjbF92b3hlbF9ncmlkX29jY2x1c2lvbl9lc3RpbWF0aW9uIHBjbF9j b21tb24gcGNsX2lvIHBjbF9maWx0ZXJzIHBjbF92aXN1YWxpemF0aW9uKQotZGlmZiAtdXAgLi90 b29scy9tZXNoMnBjZC5jcHAudnRrNiAuL3Rvb2xzL21lc2gycGNkLmNwcAotLS0tIC4vdG9vbHMv bWVzaDJwY2QuY3BwLnZ0azYJMjAxMy0wOC0yMSAxMjowMjoyOC41MzM2NDA5MDkgKzAwMDAKLSsr KyAuL3Rvb2xzL21lc2gycGNkLmNwcAkyMDEzLTA4LTIxIDEyOjAyOjU3LjY0ODE3Nzk4NCArMDAw MAotQEAgLTExMiwxNCArMTEyLDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAg ICAgdnRrU21hcnRQb2ludGVyPHZ0a1BMWVJlYWRlcj4gcmVhZGVyUXVlcnkgPSB2dGtTbWFydFBv aW50ZXI8dnRrUExZUmVhZGVyPjo6TmV3ICgpOwotICAgICByZWFkZXJRdWVyeS0+U2V0RmlsZU5h bWUgKGFyZ3ZbcGx5X2ZpbGVfaW5kaWNlc1swXV0pOwotICAgICBwb2x5ZGF0YTEgPSByZWFkZXJR dWVyeS0+R2V0T3V0cHV0ICgpOwotLSAgICBwb2x5ZGF0YTEtPlVwZGF0ZSAoKTsKLSsgICAgcmVh ZGVyUXVlcnktPlVwZGF0ZSAoKTsKLSAgIH0KLSAgIGVsc2UgaWYgKG9ial9maWxlX2luZGljZXMu c2l6ZSAoKSA9PSAxKQotICAgewotICAgICB2dGtTbWFydFBvaW50ZXI8dnRrT0JKUmVhZGVyPiBy ZWFkZXJRdWVyeSA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtPQkpSZWFkZXI+OjpOZXcgKCk7Ci0gICAg IHJlYWRlclF1ZXJ5LT5TZXRGaWxlTmFtZSAoYXJndltvYmpfZmlsZV9pbmRpY2VzWzBdXSk7Ci0g ICAgIHBvbHlkYXRhMSA9IHJlYWRlclF1ZXJ5LT5HZXRPdXRwdXQgKCk7Ci0tICAgIHBvbHlkYXRh MS0+VXBkYXRlICgpOwotKyAgICByZWFkZXJRdWVyeS0+VXBkYXRlICgpOwotICAgfQotIAotICAg Ym9vbCBJTlRFUl9WSVMgPSBmYWxzZTsKLWRpZmYgLXVwIC4vdG9vbHMvbWVzaF9zYW1wbGluZy5j cHAudnRrNiAuL3Rvb2xzL21lc2hfc2FtcGxpbmcuY3BwCi0tLS0gLi90b29scy9tZXNoX3NhbXBs aW5nLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICswMDAwCi0rKysgLi90 b29scy9tZXNoX3NhbXBsaW5nLmNwcAkyMDEzLTA4LTIxIDEyOjA0OjQ4LjkyNDI1Mzc4MiArMDAw MAotQEAgLTE5NywxOSArMTk3LDE5IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAg ICAgdnRrU21hcnRQb2ludGVyPHZ0a09CSlJlYWRlcj4gcmVhZGVyUXVlcnkgPSB2dGtTbWFydFBv aW50ZXI8dnRrT0JKUmVhZGVyPjo6TmV3ICgpOwotICAgICByZWFkZXJRdWVyeS0+U2V0RmlsZU5h bWUgKGFyZ3Zbb2JqX2ZpbGVfaW5kaWNlc1swXV0pOwotICAgICBwb2x5ZGF0YTEgPSByZWFkZXJR dWVyeS0+R2V0T3V0cHV0ICgpOwotLSAgICBwb2x5ZGF0YTEtPlVwZGF0ZSAoKTsKLSsgICAgcmVh ZGVyUXVlcnktPlVwZGF0ZSAoKTsKLSAgIH0KLSAKLSAgIC8vbWFrZSBzdXJlIHRoYXQgdGhlIHBv bHlnb25zIGFyZSB0cmlhbmdsZXMhCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrVHJpYW5nbGVGaWx0 ZXI+IHRyaWFuZ2xlRmlsdGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1RyaWFuZ2xlRmlsdGVyPjo6 TmV3ICgpOwotLSAgdHJpYW5nbGVGaWx0ZXItPlNldElucHV0IChwb2x5ZGF0YTEpOwotKyAgdHJp YW5nbGVGaWx0ZXItPlNldElucHV0RGF0YSAocG9seWRhdGExKTsKLSAgIHRyaWFuZ2xlRmlsdGVy LT5VcGRhdGUgKCk7Ci0gCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+IHRy aWFuZ2xlTWFwcGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhTWFwcGVyPjo6TmV3ICgp OwotICAgdHJpYW5nbGVNYXBwZXItPlNldElucHV0Q29ubmVjdGlvbiAodHJpYW5nbGVGaWx0ZXIt PkdldE91dHB1dFBvcnQgKCkpOwotICAgdHJpYW5nbGVNYXBwZXItPlVwZGF0ZSgpOwotICAgcG9s eWRhdGExID0gdHJpYW5nbGVNYXBwZXItPkdldElucHV0KCk7Ci0tICBwb2x5ZGF0YTEtPlVwZGF0 ZSAoKTsKLSsgIHRyaWFuZ2xlTWFwcGVyLT5VcGRhdGUgKCk7Ci0gCi0gICBib29sIElOVEVSX1ZJ UyA9IGZhbHNlOwotICAgYm9vbCBWSVMgPSB0cnVlOwotZGlmZiAtdXAgLi90b29scy9vYmoydnRr LmNwcC52dGs2IC4vdG9vbHMvb2JqMnZ0ay5jcHAKLS0tLSAuL3Rvb2xzL29iajJ2dGsuY3BwLnZ0 azYJMjAxMy0wOC0yMSAxMjoxOTowOS40MTUyMDM5MzggKzAwMDAKLSsrKyAuL3Rvb2xzL29iajJ2 dGsuY3BwCTIwMTMtMDgtMjEgMTI6MjA6NTMuNDIyMzA4NDAwICswMDAwCi1AQCAtNzcsMTEgKzc3 LDExIEBAIG1haW4gKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2 dGtPQkpSZWFkZXI+IHJlYWRlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtPQkpSZWFkZXI+OjpOZXcg KCk7Ci0gICByZWFkZXItPlNldEZpbGVOYW1lIChhcmd2W29ial9maWxlX2luZGljZXNbMF1dKTsK LSAgIHBvbHlkYXRhID0gcmVhZGVyLT5HZXRPdXRwdXQgKCk7Ci0tICBwb2x5ZGF0YS0+VXBkYXRl ICgpOwotKyAgcmVhZGVyLT5VcGRhdGUgKCk7Ci0gCi0gICAvLyBDb252ZXJ0IHRvIFZUSyBhbmQg c2F2ZQotICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhV3JpdGVyPiB3cml0ZXIgPSB2dGtT bWFydFBvaW50ZXI8dnRrUG9seURhdGFXcml0ZXI+OjpOZXcgKCk7Ci0tICB3cml0ZXItPlNldElu cHV0IChwb2x5ZGF0YSk7Ci0rICB3cml0ZXItPlNldElucHV0RGF0YSAocG9seWRhdGEpOwotICAg d3JpdGVyLT5TZXRGaWxlTmFtZSAoYXJndlt2dGtfZmlsZV9pbmRpY2VzWzBdXSk7Ci0gICB3cml0 ZXItPldyaXRlICgpOwotIH0KLWRpZmYgLXVwIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNfYWNjZXB0 ZWRfaHlwb3RoZXNlcy5jcHAudnRrNiAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX2FjY2VwdGVkX2h5 cG90aGVzZXMuY3BwCi0tLS0gLi90b29scy9vYmpfcmVjX3JhbnNhY19hY2NlcHRlZF9oeXBvdGhl c2VzLmNwcC52dGs2CTIwMTMtMDgtMjEgMTI6MjE6MzYuOTIwMTg3ODY3ICswMDAwCi0rKysgLi90 b29scy9vYmpfcmVjX3JhbnNhY19hY2NlcHRlZF9oeXBvdGhlc2VzLmNwcAkyMDEzLTA4LTIxIDEy OjIxOjU1LjU4MTU2NTA3MyArMDAwMAotQEAgLTMyMywxMyArMzIzLDEzIEBAIHVwZGF0ZSAoQ2Fs bGJhY2tQYXJhbWV0ZXJzKiBwYXJhbXMpCi0gICAgIC8vIFNldHVwIHRoZSB0cmFuc2Zvcm1hdG9y Ci0gICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtUcmFuc2Zvcm1Qb2x5RGF0YUZpbHRlcj4gdnRrX3Ry YW5zZm9ybWF0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrVHJhbnNmb3JtUG9seURhdGFGaWx0ZXI+ OjpOZXcgKCk7Ci0gICAgIHZ0a190cmFuc2Zvcm1hdG9yLT5TZXRUcmFuc2Zvcm0gKHZ0a190cmFu c2Zvcm0pOwotLSAgICB2dGtfdHJhbnNmb3JtYXRvci0+U2V0SW5wdXQgKHZ0a19tb2RlbCk7Ci0r ICAgIHZ0a190cmFuc2Zvcm1hdG9yLT5TZXRJbnB1dERhdGEgKHZ0a19tb2RlbCk7Ci0gICAgIHZ0 a190cmFuc2Zvcm1hdG9yLT5VcGRhdGUgKCk7Ci0gCi0gICAgIC8vIFZpc3VhbGl6ZQotICAgICB2 dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+IHZ0a19hY3RvciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtB Y3Rvcj46Ok5ldygpOwotICAgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+IHZ0 a19tYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7Ci0t ICAgIHZ0a19tYXBwZXItPlNldElucHV0KHZ0a190cmFuc2Zvcm1hdG9yLT5HZXRPdXRwdXQgKCkp OwotKyAgICB2dGtfbWFwcGVyLT5TZXRJbnB1dERhdGEodnRrX3RyYW5zZm9ybWF0b3ItPkdldE91 dHB1dCAoKSk7Ci0gICAgIHZ0a19hY3Rvci0+U2V0TWFwcGVyKHZ0a19tYXBwZXIpOwotICAgICAv LyBTZXQgdGhlIGFwcGVhcmFuY2UgJiBhZGQgdG8gdGhlIHJlbmRlcmVyCi0gICAgIHZ0a19hY3Rv ci0+R2V0UHJvcGVydHkgKCktPlNldENvbG9yICgwLjYsIDAuNywgMC45KTsKLWRpZmYgLXVwIC4v dG9vbHMvb2JqX3JlY19yYW5zYWNfbW9kZWxfb3Bwcy5jcHAudnRrNiAuL3Rvb2xzL29ial9yZWNf cmFuc2FjX21vZGVsX29wcHMuY3BwCi0tLS0gLi90b29scy9vYmpfcmVjX3JhbnNhY19tb2RlbF9v cHBzLmNwcC52dGs2CTIwMTMtMDgtMjEgMTI6MjI6NTAuMzg1NjcyNDUzICswMDAwCi0rKysgLi90 b29scy9vYmpfcmVjX3JhbnNhY19tb2RlbF9vcHBzLmNwcAkyMDEzLTA4LTIxIDEyOjIzOjA0LjI1 NTk1MjYyMSArMDAwMAotQEAgLTIxNSw3ICsyMTUsNyBAQCB2b2lkIHNob3dNb2RlbE9wcHMgKFBD TFZpc3VhbGl6ZXImIHZpeiwKLSAgIC8vIFNhdmUgdGhlIG5vcm1hbHMKLSAgIHZ0a19vcHBzLT5H ZXRQb2ludERhdGEgKCktPlNldE5vcm1hbHMgKHZ0a19ub3JtYWxzKTsKLSAgIC8vIFNldHVwIHRo ZSBoZWRnZSBob2cgb2JqZWN0Ci0tICB2dGtfaGVkZ2VfaG9nLT5TZXRJbnB1dCAodnRrX29wcHMp OwotKyAgdnRrX2hlZGdlX2hvZy0+U2V0SW5wdXREYXRhICh2dGtfb3Bwcyk7Ci0gICB2dGtfaGVk Z2VfaG9nLT5TZXRWZWN0b3JNb2RlVG9Vc2VOb3JtYWwgKCk7Ci0gICB2dGtfaGVkZ2VfaG9nLT5T ZXRTY2FsZUZhY3RvciAoMC41ZipwYWlyX3dpZHRoKTsKLSAgIHZ0a19oZWRnZV9ob2ctPlVwZGF0 ZSAoKTsKLWRpZmYgLXVwIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNfb3JyX29jdHJlZS5jcHAudnRr NiAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX29ycl9vY3RyZWUuY3BwCi0tLS0gLi90b29scy9vYmpf cmVjX3JhbnNhY19vcnJfb2N0cmVlLmNwcC52dGs2CTIwMTMtMDgtMjEgMTI6MjM6NTkuNjAyMDcw MjYyICswMDAwCi0rKysgLi90b29scy9vYmpfcmVjX3JhbnNhY19vcnJfb2N0cmVlLmNwcAkyMDEz LTA4LTIxIDEyOjI0OjIxLjYyMzUxNDgxMCArMDAwMAotQEAgLTMwNCw3ICszMDQsNyBAQCB2b2lk IG5vZGVfdG9fY3ViZSAoT1JST2N0cmVlOjpOb2RlKiBub2RlCi0gICBjdWJlLT5TZXRCb3VuZHMg KGJbMF0sIGJbMV0sIGJbMl0sIGJbM10sIGJbNF0sIGJbNV0pOwotICAgY3ViZS0+VXBkYXRlICgp OwotIAotLSAgYWRkaXRpdmVfb2N0cmVlLT5BZGRJbnB1dCAoY3ViZS0+R2V0T3V0cHV0ICgpKTsK LSsgIGFkZGl0aXZlX29jdHJlZS0+QWRkSW5wdXREYXRhIChjdWJlLT5HZXRPdXRwdXQgKCkpOwot IH0KLSAKLSAvLz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT0KLUBAIC0zNjMsNyArMzYzLDcgQEAgdm9pZCBzaG93X29j dHJlZSAoT1JST2N0cmVlKiBvY3RyZWUsIFBDTAotICAgdnRrUmVuZGVyZXIgKnJlbmRlcmVyID0g dml6LmdldFJlbmRlcldpbmRvdyAoKS0+R2V0UmVuZGVyZXJzICgpLT5HZXRGaXJzdFJlbmRlcmVy ICgpOwotICAgdnRrU21hcnRQb2ludGVyPHZ0a0FjdG9yPiBvY3RyZWVfYWN0b3IgPSB2dGtTbWFy dFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcoKTsKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0 TWFwcGVyPiBtYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46Ok5ldyAo KTsKLS0gIG1hcHBlci0+U2V0SW5wdXQodnRrX29jdHJlZSk7Ci0rICBtYXBwZXItPlNldElucHV0 RGF0YSh2dGtfb2N0cmVlKTsKLSAgIG9jdHJlZV9hY3Rvci0+U2V0TWFwcGVyKG1hcHBlcik7Ci0g Ci0gICAvLyBTZXQgdGhlIGFwcGVhcmFuY2UgJiBhZGQgdG8gdGhlIHJlbmRlcmVyCi1kaWZmIC11 cCAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX29ycl9vY3RyZWVfenByb2plY3Rpb24uY3BwLnZ0azYg Li90b29scy9vYmpfcmVjX3JhbnNhY19vcnJfb2N0cmVlX3pwcm9qZWN0aW9uLmNwcAotLS0tIC4v dG9vbHMvb2JqX3JlY19yYW5zYWNfb3JyX29jdHJlZV96cHJvamVjdGlvbi5jcHAudnRrNgkyMDEz LTA4LTIxIDIxOjI2OjI2LjA5MDMyNTQ4NSArMDAwMAotKysrIC4vdG9vbHMvb2JqX3JlY19yYW5z YWNfb3JyX29jdHJlZV96cHJvamVjdGlvbi5jcHAJMjAxMy0wOC0yMSAyMToyNzoxNS41MDEzNjAz OTQgKzAwMDAKLUBAIC0yMDYsNyArMjA2LDcgQEAgdm9pZCBzaG93X29jdHJlZSAoT1JST2N0cmVl KiBvY3RyZWUsIFBDTAotICAgdnRrUmVuZGVyZXIgKnJlbmRlcmVyID0gdml6LmdldFJlbmRlcldp bmRvdyAoKS0+R2V0UmVuZGVyZXJzICgpLT5HZXRGaXJzdFJlbmRlcmVyICgpOwotICAgdnRrU21h cnRQb2ludGVyPHZ0a0FjdG9yPiBvY3RyZWVfYWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0 b3I+OjpOZXcoKTsKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVyPiBtYXBwZXIg PSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46Ok5ldyAoKTsKLS0gIG1hcHBlci0+ U2V0SW5wdXQodnRrX29jdHJlZSk7Ci0rICBtYXBwZXItPlNldElucHV0RGF0YSh2dGtfb2N0cmVl KTsKLSAgIG9jdHJlZV9hY3Rvci0+U2V0TWFwcGVyKG1hcHBlcik7Ci0gCi0gICAvLyBTZXQgdGhl IGFwcGVhcmFuY2UgJiBhZGQgdG8gdGhlIHJlbmRlcmVyCi1AQCAtMjUwLDkgKzI1MCw5IEBAIHZv aWQgc2hvd19vY3RyZWVfenByb2ogKE9SUk9jdHJlZVpQcm9qZWMKLSAgIHZ0a1JlbmRlcmVyICpy ZW5kZXJlciA9IHZpei5nZXRSZW5kZXJXaW5kb3cgKCktPkdldFJlbmRlcmVycyAoKS0+R2V0Rmly c3RSZW5kZXJlciAoKTsKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtBY3Rvcj4gdXBwZXJfYWN0b3Ig PSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcoKSwgbG93ZXJfYWN0b3IgPSB2dGtTbWFy dFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcoKTsKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0 TWFwcGVyPiB1cHBlcl9tYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46 Ok5ldyAoKSwgbG93ZXJfbWFwcGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+ OjpOZXcgKCk7Ci0tICB1cHBlcl9tYXBwZXItPlNldElucHV0KHVwcGVyX2JvdW5kLT5HZXRPdXRw dXQgKCkpOwotKyAgdXBwZXJfbWFwcGVyLT5TZXRJbnB1dERhdGEodXBwZXJfYm91bmQtPkdldE91 dHB1dCAoKSk7Ci0gICB1cHBlcl9hY3Rvci0+U2V0TWFwcGVyKHVwcGVyX21hcHBlcik7Ci0tICBs b3dlcl9tYXBwZXItPlNldElucHV0KGxvd2VyX2JvdW5kLT5HZXRPdXRwdXQgKCkpOwotKyAgbG93 ZXJfbWFwcGVyLT5TZXRJbnB1dERhdGEobG93ZXJfYm91bmQtPkdldE91dHB1dCAoKSk7Ci0gICBs b3dlcl9hY3Rvci0+U2V0TWFwcGVyKGxvd2VyX21hcHBlcik7Ci0gCi0gICAvLyBTZXQgdGhlIGFw cGVhcmFuY2UgJiBhZGQgdG8gdGhlIHJlbmRlcmVyCi1AQCAtMjcyLDcgKzI3Miw3IEBAIHZvaWQg bm9kZV90b19jdWJlIChPUlJPY3RyZWU6Ok5vZGUqIG5vZGUKLSAgIGN1YmUtPlNldEJvdW5kcyAo YlswXSwgYlsxXSwgYlsyXSwgYlszXSwgYls0XSwgYls1XSk7Ci0gICBjdWJlLT5VcGRhdGUgKCk7 Ci0gCi0tICBhZGRpdGl2ZV9vY3RyZWUtPkFkZElucHV0IChjdWJlLT5HZXRPdXRwdXQgKCkpOwot KyAgYWRkaXRpdmVfb2N0cmVlLT5BZGRJbnB1dERhdGEgKGN1YmUtPkdldE91dHB1dCAoKSk7Ci0g fQotIAotIC8vPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PQotQEAgLTI4NCw3ICsyODQsNyBAQCB2b2lkIHJlY3Rhbmds ZV90b192dGsgKGZsb2F0IHgxLCBmbG9hdCB4Ci0gICBjdWJlLT5TZXRCb3VuZHMgKHgxLCB4Miwg eTEsIHkyLCB6LCB6KTsKLSAgIGN1YmUtPlVwZGF0ZSAoKTsKLSAKLS0gIGFkZGl0aXZlX3JlY3Rh bmdsZS0+QWRkSW5wdXQgKGN1YmUtPkdldE91dHB1dCAoKSk7Ci0rICBhZGRpdGl2ZV9yZWN0YW5n bGUtPkFkZElucHV0RGF0YSAoY3ViZS0+R2V0T3V0cHV0ICgpKTsKLSB9Ci0gCi0gLy89PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09Ci1kaWZmIC11cCAuL3Rvb2xzL29ial9yZWNfcmFuc2FjX3Jlc3VsdC5jcHAudnRrNiAu L3Rvb2xzL29ial9yZWNfcmFuc2FjX3Jlc3VsdC5jcHAKLS0tLSAuL3Rvb2xzL29ial9yZWNfcmFu c2FjX3Jlc3VsdC5jcHAudnRrNgkyMDEzLTA4LTIxIDIxOjI3OjQ5LjIxMDA2NjQwMSArMDAwMAot KysrIC4vdG9vbHMvb2JqX3JlY19yYW5zYWNfcmVzdWx0LmNwcAkyMDEzLTA4LTIxIDIxOjI4OjA0 LjY4MTM5MDQzMCArMDAwMAotQEAgLTI4MSwxMyArMjgxLDEzIEBAIHVwZGF0ZSAoQ2FsbGJhY2tQ YXJhbWV0ZXJzKiBwYXJhbXMpCi0gICAgIC8vIFNldHVwIHRoZSB0cmFuc2Zvcm1hdG9yCi0gICAg IHZ0a1NtYXJ0UG9pbnRlcjx2dGtUcmFuc2Zvcm1Qb2x5RGF0YUZpbHRlcj4gdnRrX3RyYW5zZm9y bWF0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrVHJhbnNmb3JtUG9seURhdGFGaWx0ZXI+OjpOZXcg KCk7Ci0gICAgIHZ0a190cmFuc2Zvcm1hdG9yLT5TZXRUcmFuc2Zvcm0gKHZ0a190cmFuc2Zvcm0p OwotLSAgICB2dGtfdHJhbnNmb3JtYXRvci0+U2V0SW5wdXQgKHZ0a19tb2RlbCk7Ci0rICAgIHZ0 a190cmFuc2Zvcm1hdG9yLT5TZXRJbnB1dERhdGEgKHZ0a19tb2RlbCk7Ci0gICAgIHZ0a190cmFu c2Zvcm1hdG9yLT5VcGRhdGUgKCk7Ci0gCi0gICAgIC8vIFZpc3VhbGl6ZQotICAgICB2dGtTbWFy dFBvaW50ZXI8dnRrQWN0b3I+IHZ0a19hY3RvciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtBY3Rvcj46 Ok5ldygpOwotICAgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+IHZ0a19tYXBw ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7Ci0tICAgIHZ0 a19tYXBwZXItPlNldElucHV0KHZ0a190cmFuc2Zvcm1hdG9yLT5HZXRPdXRwdXQgKCkpOwotKyAg ICB2dGtfbWFwcGVyLT5TZXRJbnB1dERhdGEodnRrX3RyYW5zZm9ybWF0b3ItPkdldE91dHB1dCAo KSk7Ci0gICAgIHZ0a19hY3Rvci0+U2V0TWFwcGVyKHZ0a19tYXBwZXIpOwotICAgICAvLyBTZXQg dGhlIGFwcGVhcmFuY2UgJiBhZGQgdG8gdGhlIHJlbmRlcmVyCi0gICAgIHZ0a19hY3Rvci0+R2V0 UHJvcGVydHkgKCktPlNldENvbG9yICgwLjYsIDAuNywgMC45KTsKLWRpZmYgLXVwIC4vdG9vbHMv b2JqX3JlY19yYW5zYWNfc2NlbmVfb3Bwcy5jcHAudnRrNiAuL3Rvb2xzL29ial9yZWNfcmFuc2Fj X3NjZW5lX29wcHMuY3BwCi0tLS0gLi90b29scy9vYmpfcmVjX3JhbnNhY19zY2VuZV9vcHBzLmNw cC52dGs2CTIwMTMtMDgtMjEgMjE6Mjk6MjEuOTA5MDA3ODcwICswMDAwCi0rKysgLi90b29scy9v YmpfcmVjX3JhbnNhY19zY2VuZV9vcHBzLmNwcAkyMDEzLTA4LTIxIDIxOjI5OjMyLjY5ODIzMzgz OSArMDAwMAotQEAgLTE3Myw3ICsxNzMsNyBAQCB2b2lkIHVwZGF0ZSAoQ2FsbGJhY2tQYXJhbWV0 ZXJzKiBwYXJhbXMpCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrSGVkZ2VIb2c+IHZ0a19oaCA9IHZ0 a1NtYXJ0UG9pbnRlcjx2dGtIZWRnZUhvZz46Ok5ldyAoKTsKLSAgIHZ0a19oaC0+U2V0VmVjdG9y TW9kZVRvVXNlTm9ybWFsICgpOwotICAgdnRrX2hoLT5TZXRTY2FsZUZhY3RvciAoMC41ZipwYXJh bXMtPm9ianJlY18uZ2V0UGFpcldpZHRoICgpKTsKLS0gIHZ0a19oaC0+U2V0SW5wdXQgKHZ0a19v cHBzKTsKLSsgIHZ0a19oaC0+U2V0SW5wdXREYXRhICh2dGtfb3Bwcyk7Ci0gICB2dGtfaGgtPlVw ZGF0ZSAoKTsKLSAKLSAgIC8vIFRoZSBsaW5lcwotZGlmZiAtdXAgLi90b29scy9vY3RyZWVfdmll d2VyLmNwcC52dGs2IC4vdG9vbHMvb2N0cmVlX3ZpZXdlci5jcHAKLS0tLSAuL3Rvb2xzL29jdHJl ZV92aWV3ZXIuY3BwLnZ0azYJMjAxMy0wNy0yMyAxNzoyMTowMi4wMDAwMDAwMDAgKzAwMDAKLSsr KyAuL3Rvb2xzL29jdHJlZV92aWV3ZXIuY3BwCTIwMTMtMDgtMjEgMjE6MzA6MDkuNDI4MDAzMDgw ICswMDAwCi1AQCAtMjk0LDEzICsyOTQsMTMgQEAgcHJpdmF0ZToKLSAgICAgICBkb3VibGUgeSA9 IGRpc3BsYXlDbG91ZC0+cG9pbnRzW2ldLnk7Ci0gICAgICAgZG91YmxlIHogPSBkaXNwbGF5Q2xv dWQtPnBvaW50c1tpXS56OwotIAotLSAgICAgIHRyZWVXaXJlZnJhbWUtPkFkZElucHV0KEdldEN1 Ym9pZCh4IC0gcywgeCArIHMsIHkgLSBzLCB5ICsgcywgeiAtIHMsIHogKyBzKSk7Ci0rICAgICAg dHJlZVdpcmVmcmFtZS0+QWRkSW5wdXREYXRhKEdldEN1Ym9pZCh4IC0gcywgeCArIHMsIHkgLSBz LCB5ICsgcywgeiAtIHMsIHogKyBzKSk7Ci0gICAgIH0KLSAKLSAgICAgdnRrU21hcnRQb2ludGVy PHZ0a0FjdG9yPiB0cmVlQWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcoKTsK LSAKLSAgICAgdnRrU21hcnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+IG1hcHBlciA9IHZ0a1Nt YXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVyPjo6TmV3KCk7Ci0tICAgIG1hcHBlci0+U2V0SW5w dXQodHJlZVdpcmVmcmFtZS0+R2V0T3V0cHV0KCkpOwotKyAgICBtYXBwZXItPlNldElucHV0Q29u bmVjdGlvbih0cmVlV2lyZWZyYW1lLT5HZXRPdXRwdXRQb3J0KCkpOwotICAgICB0cmVlQWN0b3It PlNldE1hcHBlcihtYXBwZXIpOwotIAotICAgICB0cmVlQWN0b3ItPkdldFByb3BlcnR5KCktPlNl dENvbG9yKDEuMCwgMS4wLCAxLjApOwotZGlmZiAtdXAgLi90b29scy9wbHkydnRrLmNwcC52dGs2 IC4vdG9vbHMvcGx5MnZ0ay5jcHAKLS0tLSAuL3Rvb2xzL3BseTJ2dGsuY3BwLnZ0azYJMjAxMy0w OC0yMSAyMTozMzowMy44OTQ2NTY4NDEgKzAwMDAKLSsrKyAuL3Rvb2xzL3BseTJ2dGsuY3BwCTIw MTMtMDgtMjEgMjE6MzM6NTIuOTIyNjgzNTY1ICswMDAwCi1AQCAtNzcsMTIgKzc3LDEyIEBAIG1h aW4gKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQTFlSZWFk ZXI+IHJlYWRlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQTFlSZWFkZXI+OjpOZXcgKCk7Ci0gICBy ZWFkZXItPlNldEZpbGVOYW1lIChhcmd2W3BseV9maWxlX2luZGljZXNbMF1dKTsKLSAgIHBvbHlk YXRhID0gcmVhZGVyLT5HZXRPdXRwdXQgKCk7Ci0tICBwb2x5ZGF0YS0+VXBkYXRlICgpOwotKyAg cmVhZGVyLT5VcGRhdGUgKCk7Ci0gICBwcmludF9pbmZvICgiTG9hZGVkICVzIHdpdGggJXp1IHBv aW50cy92ZXJ0aWNlcy5cbiIsIGFyZ3ZbcGx5X2ZpbGVfaW5kaWNlc1swXV0sIHBvbHlkYXRhLT5H ZXROdW1iZXJPZlBvaW50cyAoKSk7Ci0gCi0gICAvLyBDb252ZXJ0IHRvIFZUSyBhbmQgc2F2ZQot ICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhV3JpdGVyPiB3cml0ZXIgPSB2dGtTbWFydFBv aW50ZXI8dnRrUG9seURhdGFXcml0ZXI+OjpOZXcgKCk7Ci0tICB3cml0ZXItPlNldElucHV0IChw b2x5ZGF0YSk7Ci0rICB3cml0ZXItPlNldElucHV0RGF0YSAocG9seWRhdGEpOwotICAgd3JpdGVy LT5TZXRGaWxlTmFtZSAoYXJndlt2dGtfZmlsZV9pbmRpY2VzWzBdXSk7Ci0gICB3cml0ZXItPlNl dEZpbGVUeXBlVG9CaW5hcnkgKCk7Ci0gICB3cml0ZXItPldyaXRlICgpOwotZGlmZiAtdXAgLi90 b29scy9wbmcycGNkLmNwcC52dGs2IC4vdG9vbHMvcG5nMnBjZC5jcHAKLS0tLSAuL3Rvb2xzL3Bu ZzJwY2QuY3BwLnZ0azYJMjAxMy0wOC0yMSAyMTozODo1MS4yMzI5MzAyODYgKzAwMDAKLSsrKyAu L3Rvb2xzL3BuZzJwY2QuY3BwCTIwMTMtMDgtMjEgMjE6Mzk6MDcuOTMwMjc5OTE1ICswMDAwCi1A QCAtMTM1LDcgKzEzNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyKiogYXJndikKLSAgIHZ0a1Nt YXJ0UG9pbnRlcjx2dGtQTkdSZWFkZXI+IHJlYWRlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQTkdS ZWFkZXI+OjpOZXcgKCk7Ci0gICByZWFkZXItPlNldEZpbGVOYW1lIChhcmd2W3BuZ19maWxlX2lu ZGljZXNbMF1dKTsKLSAgIGltYWdlX2RhdGEgPSByZWFkZXItPkdldE91dHB1dCAoKTsKLS0gIGlt YWdlX2RhdGEtPlVwZGF0ZSAoKTsKLSsgIHJlYWRlci0+VXBkYXRlICgpOwotIAotICAgLy8gUmV0 cmlldmUgdGhlIGVudHJpZXMgZnJvbSB0aGUgaW1hZ2UgZGF0YSBhbmQgY29weSB0aGVtIGludG8g dGhlIG91dHB1dCBSR0IgY2xvdWQKLSAgIGludCBjb21wb25lbnRzID0gaW1hZ2VfZGF0YS0+R2V0 TnVtYmVyT2ZTY2FsYXJDb21wb25lbnRzKCk7Ci1kaWZmIC11cCAuL3Rvb2xzL3RpZmYycGNkLmNw cC52dGs2IC4vdG9vbHMvdGlmZjJwY2QuY3BwCi0tLS0gLi90b29scy90aWZmMnBjZC5jcHAudnRr NgkyMDEzLTA4LTIxIDIxOjQwOjQwLjY2MTIyMTU4MyArMDAwMAotKysrIC4vdG9vbHMvdGlmZjJw Y2QuY3BwCTIwMTMtMDgtMjEgMjE6NDE6MDQuODM3NzI3ODEyICswMDAwCi1AQCAtMzQzLDcgKzM0 Myw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCi0gICAgIHsKLSAgICAgICBy ZWFkZXItPlNldEZpbGVOYW1lICh0aWZmX3JnYl9maWxlc1tpXS5jX3N0cigpKTsKLSAgICAgICBy Z2JfZGF0YSA9IHJlYWRlci0+R2V0T3V0cHV0ICgpOwotLSAgICAgIHJnYl9kYXRhLT5VcGRhdGUg KCk7Ci0rICAgICAgcmVhZGVyLT5VcGRhdGUgKCk7Ci0gCi0gICAgICAgc3RkOjpzdHJpbmcgcmdi X2ZpbGVuYW1lID0gdGlmZl9yZ2JfcGF0aHNbaV0uZmlsZW5hbWUoKS5zdHJpbmcoKTsKLSAgICAg ICBzdGQ6OnN0cmluZyByZ2JfdGltZSA9IHJnYl9maWxlbmFtZS5zdWJzdHIoNiwyMik7Ci1AQCAt MzgxLDcgKzM4MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqIGFyZ3YpCi0gICAgICAg ICAgIHsKLSAgICAgICAgICAgICBkZXB0aF9yZWFkZXItPlNldEZpbGVOYW1lICh0aWZmX2RlcHRo X2ZpbGVzW2pdLmNfc3RyKCkpOwotICAgICAgICAgICAgIGRlcHRoX2RhdGEgPSBkZXB0aF9yZWFk ZXItPkdldE91dHB1dCAoKTsKLS0gICAgICAgICAgICBkZXB0aF9kYXRhLT5VcGRhdGUgKCk7Ci0r ICAgICAgICAgICAgZGVwdGhfcmVhZGVyLT5VcGRhdGUgKCk7Ci0gCi0gICAgICAgICAgICAgcHJv Y2Vzc0FuZFNhdmUoZGVwdGhfZGF0YSwgcmdiX2RhdGEsIGRlcHRoX3RpbWUsIGZvY2FsX2xlbmd0 aCwgZm9ybWF0LCBjb2xvciwgZGVwdGgsIHVzZV9vdXRwdXRfcGF0aCwgb3V0cHV0X3BhdGhfKTsK LSAgICAgICAgICAgfQotZGlmZiAtdXAgLi90b29scy92aXJ0dWFsX3NjYW5uZXIuY3BwLnZ0azYg Li90b29scy92aXJ0dWFsX3NjYW5uZXIuY3BwCi0tLS0gLi90b29scy92aXJ0dWFsX3NjYW5uZXIu Y3BwLnZ0azYJMjAxMy0wOC0yMSAyMTo0NjoxOC43MDMxNjA5OTUgKzAwMDAKLSsrKyAuL3Rvb2xz L3ZpcnR1YWxfc2Nhbm5lci5jcHAJMjAxMy0wOC0yMSAyMTo0NjozNi41Mzc1MjYyMzAgKzAwMDAK LUBAIC0yMjEsNyArMjIxLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotIAotICAg Ly8gR2V0IGNhbWVyYSBwb3NpdGlvbnMKLSAgIHZ0a1BvbHlEYXRhICpzcGhlcmUgPSBzdWJkaXZp ZGUtPkdldE91dHB1dCAoKTsKLS0gIHNwaGVyZS0+VXBkYXRlICgpOwotKyAgc3ViZGl2aWRlLT5V cGRhdGUgKCk7Ci0gICBpZiAoIXNpbmdsZV92aWV3KQotICAgICBQQ0xfSU5GTyAoIkNyZWF0ZWQg JWxkIGNhbWVyYSBwb3NpdGlvbiBwb2ludHMuXG4iLCBzcGhlcmUtPkdldE51bWJlck9mUG9pbnRz ICgpKTsKLSAKLWRpZmYgLXVwIC4vdG9vbHMvdm94ZWxfZ3JpZF9vY2NsdXNpb25fZXN0aW1hdGlv bi5jcHAudnRrNiAuL3Rvb2xzL3ZveGVsX2dyaWRfb2NjbHVzaW9uX2VzdGltYXRpb24uY3BwCi0t LS0gLi90b29scy92b3hlbF9ncmlkX29jY2x1c2lvbl9lc3RpbWF0aW9uLmNwcC52dGs2CTIwMTMt MDgtMjEgMjE6NDg6NTIuMTYzMzA1NTUwICswMDAwCi0rKysgLi90b29scy92b3hlbF9ncmlkX29j Y2x1c2lvbl9lc3RpbWF0aW9uLmNwcAkyMDEzLTA4LTIxIDIxOjUwOjU4LjA0Mzg4Nzg0OCArMDAw MAotQEAgLTk5LDEzICs5OSwxMyBAQCBnZXRWb3hlbEFjdG9ycyAocGNsOjpQb2ludENsb3VkPHBj bDo6UG9pCi0gICAgIGRvdWJsZSB5ID0gdm94ZWxDZW50ZXJzLnBvaW50c1tpXS55OwotICAgICBk b3VibGUgeiA9IHZveGVsQ2VudGVycy5wb2ludHNbaV0uejsKLSAgICAgCi0tICAgIHRyZWVXaXJl ZnJhbWUtPkFkZElucHV0IChnZXRDdWJvaWQgKHggLSBzLCB4ICsgcywgeSAtIHMsIHkgKyBzLCB6 IC0gcywgeiArIHMpKTsKLSsgICAgdHJlZVdpcmVmcmFtZS0+QWRkSW5wdXREYXRhIChnZXRDdWJv aWQgKHggLSBzLCB4ICsgcywgeSAtIHMsIHkgKyBzLCB6IC0gcywgeiArIHMpKTsKLSAgIH0KLSAK LSAgIHZ0a1NtYXJ0UG9pbnRlciA8IHZ0a0xPREFjdG9yID4gdHJlZUFjdG9yID0gdnRrU21hcnRQ b2ludGVyPHZ0a0xPREFjdG9yPjo6TmV3ICgpOwotICAgCi0gICB2dGtTbWFydFBvaW50ZXIgPCB2 dGtEYXRhU2V0TWFwcGVyID4gbWFwcGVyID0gdnRrU21hcnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBw ZXI+OjpOZXcgKCk7Ci0tICBtYXBwZXItPlNldElucHV0ICh0cmVlV2lyZWZyYW1lLT5HZXRPdXRw dXQgKCkpOwotKyAgbWFwcGVyLT5TZXRJbnB1dERhdGEgKHRyZWVXaXJlZnJhbWUtPkdldE91dHB1 dCAoKSk7Ci0gICB0cmVlQWN0b3ItPlNldE1hcHBlciAobWFwcGVyKTsKLSAgIAotICAgdHJlZUFj dG9yLT5HZXRQcm9wZXJ0eSAoKS0+U2V0UmVwcmVzZW50YXRpb25Ub1dpcmVmcmFtZSAoKTsKLUBA IC0xMTksMTIgKzExOSwxMiBAQCBkaXNwbGF5Qm91bmRpbmdCb3ggKEVpZ2VuOjpWZWN0b3IzZiYg bWluCi0gICAgICAgICAgICAgICAgICAgICB2dGtTbWFydFBvaW50ZXI8dnRrQWN0b3JDb2xsZWN0 aW9uPiBjb2xsKQotIHsKLSAgIHZ0a1NtYXJ0UG9pbnRlciA8IHZ0a0FwcGVuZFBvbHlEYXRhID4g dHJlZVdpcmVmcmFtZSA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtBcHBlbmRQb2x5RGF0YT46Ok5ldyAo KTsKLS0gIHRyZWVXaXJlZnJhbWUtPkFkZElucHV0IChnZXRDdWJvaWQgKG1pbl9iWzBdLCBtYXhf YlswXSwgbWluX2JbMV0sIG1heF9iWzFdLCBtaW5fYlsyXSwgbWF4X2JbMl0pKTsKLSsgIHRyZWVX aXJlZnJhbWUtPkFkZElucHV0RGF0YSAoZ2V0Q3Vib2lkIChtaW5fYlswXSwgbWF4X2JbMF0sIG1p bl9iWzFdLCBtYXhfYlsxXSwgbWluX2JbMl0sIG1heF9iWzJdKSk7Ci0gCi0gICB2dGtTbWFydFBv aW50ZXIgPCB2dGtBY3RvciA+IHRyZWVBY3RvciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtBY3Rvcj46 Ok5ldyAoKTsKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlciA8IHZ0a0RhdGFTZXRNYXBwZXIgPiBtYXBw ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj46Ok5ldyAoKTsKLS0gIG1hcHBl ci0+U2V0SW5wdXQgKHRyZWVXaXJlZnJhbWUtPkdldE91dHB1dCAoKSk7Ci0rICBtYXBwZXItPlNl dElucHV0RGF0YSAodHJlZVdpcmVmcmFtZS0+R2V0T3V0cHV0ICgpKTsKLSAgIHRyZWVBY3Rvci0+ U2V0TWFwcGVyIChtYXBwZXIpOwotIAotICAgdHJlZUFjdG9yLT5HZXRQcm9wZXJ0eSAoKS0+U2V0 UmVwcmVzZW50YXRpb25Ub1dpcmVmcmFtZSAoKTsKLWRpZmYgLXVwIC4vdG9vbHMvdnRrMnBjZC5j cHAudnRrNiAuL3Rvb2xzL3Z0azJwY2QuY3BwCi0tLS0gLi90b29scy92dGsycGNkLmNwcC52dGs2 CTIwMTMtMDgtMjEgMjE6NTE6MDguMTYzMDk1NTY0ICswMDAwCi0rKysgLi90b29scy92dGsycGNk LmNwcAkyMDEzLTA4LTIxIDIxOjUxOjE4LjA4OTI5OTMwNSArMDAwMAotQEAgLTEwNyw3ICsxMDcs NyBAQCBtYWluIChpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi0gICBpZiAoY29weV9ub3JtYWxzKQot ICAgewotICAgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFOb3JtYWxzPiBuZyA9IHZ0a1Nt YXJ0UG9pbnRlcjx2dGtQb2x5RGF0YU5vcm1hbHM+OjpOZXcgKCk7Ci0tICAgIG5nLT5TZXRJbnB1 dCAocG9seWRhdGEpOwotKyAgICBuZy0+U2V0SW5wdXREYXRhIChwb2x5ZGF0YSk7Ci0gICAgIG5n LT5Db21wdXRlUG9pbnROb3JtYWxzT24gKCk7Ci0gICAgIG5nLT5Db21wdXRlQ2VsbE5vcm1hbHNP ZmYgKCk7Ci0gICAgIG5nLT5VcGRhdGUgKCk7Ci1kaWZmIC11cCAuL3Rvb2xzL3Z0azJwbHkuY3Bw LnZ0azYgLi90b29scy92dGsycGx5LmNwcAotLS0tIC4vdG9vbHMvdnRrMnBseS5jcHAudnRrNgky MDEzLTA4LTIxIDIxOjUyOjU3LjI5MzMzNjQwMSArMDAwMAotKysrIC4vdG9vbHMvdnRrMnBseS5j cHAJMjAxMy0wOC0yMSAyMTo1MzoxNi44NDc3MzgxMTAgKzAwMDAKLUBAIC03NywxMiArNzcsMTIg QEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQotICAgdnRrU21hcnRQb2ludGVyPHZ0a1Bv bHlEYXRhUmVhZGVyPiByZWFkZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFSZWFkZXI+ OjpOZXcgKCk7Ci0gICByZWFkZXItPlNldEZpbGVOYW1lIChhcmd2W3Z0a19maWxlX2luZGljZXNb MF1dKTsKLSAgIHBvbHlkYXRhID0gcmVhZGVyLT5HZXRPdXRwdXQgKCk7Ci0tICBwb2x5ZGF0YS0+ VXBkYXRlICgpOwotKyAgcmVhZGVyLT5VcGRhdGUgKCk7Ci0gICBwcmludF9pbmZvICgiTG9hZGVk ICVzIHdpdGggJXp1IHBvaW50cy92ZXJ0aWNlcy5cbiIsIGFyZ3ZbdnRrX2ZpbGVfaW5kaWNlc1sw XV0sIHBvbHlkYXRhLT5HZXROdW1iZXJPZlBvaW50cyAoKSk7Ci0gCi0gICAvLyBDb252ZXJ0IHRv IFBMWSBhbmQgc2F2ZQotICAgdnRrU21hcnRQb2ludGVyPHZ0a1BMWVdyaXRlcj4gd3JpdGVyID0g dnRrU21hcnRQb2ludGVyPHZ0a1BMWVdyaXRlcj46Ok5ldyAoKTsKLS0gIHdyaXRlci0+U2V0SW5w dXQgKHBvbHlkYXRhKTsKLSsgIHdyaXRlci0+U2V0SW5wdXREYXRhIChwb2x5ZGF0YSk7Ci0gICB3 cml0ZXItPlNldEFycmF5TmFtZSAoIkNvbG9ycyIpOwotICAgd3JpdGVyLT5TZXRGaWxlVHlwZVRv QVNDSUkgKCk7Ci0gICB3cml0ZXItPlNldEZpbGVOYW1lIChhcmd2W3BseV9maWxlX2luZGljZXNb MF1dKTsKLWRpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9DTWFrZUxpc3RzLnR4dC52dGs2IC4vdmlz dWFsaXphdGlvbi9DTWFrZUxpc3RzLnR4dAotLS0tIC4vdmlzdWFsaXphdGlvbi9DTWFrZUxpc3Rz LnR4dC52dGs2CTIwMTMtMDgtMjEgMDI6NDM6MTUuMzc1NTI1NzgwICswMDAwCi0rKysgLi92aXN1 YWxpemF0aW9uL0NNYWtlTGlzdHMudHh0CTIwMTMtMDgtMjEgMDI6NTc6NTUuNTM2NzMzNTczICsw MDAwCi1AQCAtMTUyLDggKzE1MiwxMCBAQCBpZihidWlsZCkKLSAgICAgIAotICAgICBpZigiJHtW VEtfTUFKT1JfVkVSU0lPTn0uJHtWVEtfTUlOT1JfVkVSU0lPTn0iIFZFUlNJT05fTEVTUyAiNS42 IikKLSAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMoJHtMSUJfTkFNRX0gcGNsX2NvbW1vbiBw Y2xfaW8gcGNsX2tkdHJlZSB2dGtDb21tb24gdnRrV2lkZ2V0cyB2dGtIeWJyaWQgdnRrRmlsdGVy aW5nIHZ0a1JlbmRlcmluZyAke09QRU5HTF9MSUJSQVJJRVN9KQotLSAgICBlbHNlKCkKLSsgICAg ZWxzZWlmKCR7VlRLX01BSk9SX1ZFUlNJT059IExFU1MgNikKLSAgICAgICB0YXJnZXRfbGlua19s aWJyYXJpZXMoJHtMSUJfTkFNRX0gcGNsX2NvbW1vbiBwY2xfaW8gcGNsX2tkdHJlZSB2dGtDb21t b24gdnRrV2lkZ2V0cyB2dGtIeWJyaWQgdnRrQ2hhcnRzIHZ0a0ZpbHRlcmluZyB2dGtSZW5kZXJp bmcgJHtPUEVOR0xfTElCUkFSSUVTfSkKLSsgICAgZWxzZSgpCi0rICAgICAgdGFyZ2V0X2xpbmtf bGlicmFyaWVzKCR7TElCX05BTUV9IHBjbF9jb21tb24gcGNsX2lvIHBjbF9rZHRyZWUgdnRrQ29t bW9uQ29yZSB2dGtDaGFydHNDb3JlIHZ0a0ludGVyYWN0aW9uU3R5bGUgdnRrSW1hZ2luZ1NvdXJj ZXMgdnRrUmVuZGVyaW5nQ29yZSB2dGtSZW5kZXJpbmdDb250ZXh0MkQgdnRrUmVuZGVyaW5nQW5u b3RhdGlvbiB2dGtSZW5kZXJpbmdMT0QgdnRrUmVuZGVyaW5nVm9sdW1lIHZ0a1JlbmRlcmluZ09w ZW5HTCB2dGtSZW5kZXJpbmdWb2x1bWVPcGVuR0wgdnRrUmVuZGVyaW5nRnJlZVR5cGUgdnRrUmVu ZGVyaW5nRnJlZVR5cGVPcGVuR0wgdnRrSW50ZXJhY3Rpb25XaWRnZXRzIHZ0a0ZpbHRlcnNTdGF0 aXN0aWNzIHZ0a0ZpbHRlcnNTdGF0aXN0aWNzR251UiB2dGtWaWV3c0NvbnRleHQyRCAke09QRU5H TF9MSUJSQVJJRVN9KQotICAgICBlbmRpZigpCi0gCi0gICAgIHNldChFWFRfREVQUyAiIikKLWRp ZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2NvbW1vbi9p bXBsL3NoYXBlcy5ocHAudnRrNiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXph dGlvbi9jb21tb24vaW1wbC9zaGFwZXMuaHBwCi0tLS0gLi92aXN1YWxpemF0aW9uL2luY2x1ZGUv cGNsL3Zpc3VhbGl6YXRpb24vY29tbW9uL2ltcGwvc2hhcGVzLmhwcC52dGs2CTIwMTMtMDgtMjEg MDE6NDQ6MjguMTM1NzYzOTE1ICswMDAwCi0rKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNs L3Zpc3VhbGl6YXRpb24vY29tbW9uL2ltcGwvc2hhcGVzLmhwcAkyMDEzLTA4LTIxIDAxOjUyOjQz LjUwNzA0Mjc0MCArMDAwMAotQEAgLTY3LDcgKzY3LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpj cmVhdGVQb2x5Z29uIChjb25zdAotICAgcG9seV9ncmlkLT5BbGxvY2F0ZSAoMSwgMSk7Ci0gICBw b2x5X2dyaWQtPkluc2VydE5leHRDZWxsIChwb2x5Z29uLT5HZXRDZWxsVHlwZSAoKSwgcG9seWdv bi0+R2V0UG9pbnRJZHMgKCkpOwotICAgcG9seV9ncmlkLT5TZXRQb2ludHMgKHBvbHlfcG9pbnRz KTsKLS0gIHBvbHlfZ3JpZC0+VXBkYXRlICgpOwotKyAgLy9wb2x5X2dyaWQtPlVwZGF0ZSAoKTsK LSAKLSAgIHJldHVybiAocG9seV9ncmlkKTsKLSB9Ci1AQCAtMTA0LDcgKzEwNCw3IEBAIHBjbDo6 dmlzdWFsaXphdGlvbjo6Y3JlYXRlUG9seWdvbiAoY29uc3QKLSAgIHBvbHlfZ3JpZC0+QWxsb2Nh dGUgKDEsIDEpOwotICAgcG9seV9ncmlkLT5JbnNlcnROZXh0Q2VsbCAocG9seWdvbi0+R2V0Q2Vs bFR5cGUgKCksIHBvbHlnb24tPkdldFBvaW50SWRzICgpKTsKLSAgIHBvbHlfZ3JpZC0+U2V0UG9p bnRzIChwb2x5X3BvaW50cyk7Ci0tICBwb2x5X2dyaWQtPlVwZGF0ZSAoKTsKLSsgIC8vcG9seV9n cmlkLT5VcGRhdGUgKCk7Ci0gCi0gICByZXR1cm4gKHBvbHlfZ3JpZCk7Ci0gfQotZGlmZiAtdXAg Li92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1hZ2Vfdmlld2VyLmgu dnRrNiAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbWFnZV92aWV3 ZXIuaAotLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltYWdl X3ZpZXdlci5oLnZ0azYJMjAxMy0wOC0yMSAyMzoxMTowMi42Mjc5NDk3NjIgKzAwMDAKLSsrKyAu L3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXphdGlvbi9pbWFnZV92aWV3ZXIuaAky MDEzLTA4LTIxIDAyOjI5OjIxLjIyOTEyMDE0MyArMDAwMAotQEAgLTk1Miw3ICs5NTIsNyBAQCBu YW1lc3BhY2UgcGNsCi0gICAgICAgICAvKiogXGJyaWVmIFRoZSByZW5kZXJlci4gKi8KLSAgICAg ICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtSZW5kZXJlcj4gcmVuXzsKLSAKLS0jaWYgKChWVEtfTUFK T1JfVkVSU0lPTiA9PSA1KSAmJiAoVlRLX01JTk9SX1ZFUlNJT04gPj0gMTApKQotKyNpZiAoKChW VEtfTUFKT1JfVkVSU0lPTiA9PSA1KSAmJiAoVlRLX01JTk9SX1ZFUlNJT04gPj0gMTApKSB8fCAo VlRLX01BSk9SX1ZFUlNJT04gPiA1KSkKLSAgICAgICAgIC8qKiBcYnJpZWYgR2xvYmFsIHByb3Au IFRoaXMgaXMgdGhlIGFjdHVhbCAiYWN0b3IiLiAqLwotICAgICAgICAgdnRrU21hcnRQb2ludGVy PHZ0a0ltYWdlU2xpY2U+IHNsaWNlXzsKLSAjZW5kaWYKLWRpZmYgLXVwIC4vdmlzdWFsaXphdGlv bi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltcGwvaW1hZ2Vfdmlld2VyLmhwcC52dGs2IC4v dmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltcGwvaW1hZ2Vfdmlld2Vy LmhwcAotLS0tIC4vdmlzdWFsaXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltcGwv aW1hZ2Vfdmlld2VyLmhwcC52dGs2CTIwMTMtMDgtMjEgMDI6MjI6NDIuOTg3NzQ1MzMxICswMDAw Ci0rKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1wbC9pbWFn ZV92aWV3ZXIuaHBwCTIwMTMtMDgtMjEgMDI6MjM6MDguMTgyMjc4NDIxICswMDAwCi1AQCAtNDM1 LDkgKzQzNSw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6SW1hZ2VWaWV3ZXI6OnNob3dDb3IKLSAg IAotICAgdnRrU21hcnRQb2ludGVyPHZ0a0ltYWdlRGF0YT4gaW1hZ2UgPSB2dGtTbWFydFBvaW50 ZXI8dnRrSW1hZ2VEYXRhPjo6TmV3ICgpOwotICAgaW1hZ2UtPlNldERpbWVuc2lvbnMgKHNvdXJj ZV9pbWcud2lkdGggKyB0YXJnZXRfaW1nLndpZHRoLCBzdGQ6Om1heCAoc291cmNlX2ltZy5oZWln aHQsIHRhcmdldF9pbWcuaGVpZ2h0KSwgMSk7Ci0tICBpbWFnZS0+U2V0U2NhbGFyVHlwZVRvVW5z aWduZWRDaGFyICgpOwotLSAgaW1hZ2UtPlNldE51bWJlck9mU2NhbGFyQ29tcG9uZW50cyAoMyk7 Ci0tICBpbWFnZS0+QWxsb2NhdGVTY2FsYXJzICgpOwotKyAgaW1hZ2UtPkFsbG9jYXRlU2NhbGFy cyAoVlRLX1VOU0lHTkVEX0NIQVIsIDMpOwotICAgaW1hZ2UtPkdldFBvaW50RGF0YSAoKS0+R2V0 U2NhbGFycyAoKS0+U2V0Vm9pZEFycmF5IChkYXRhLCBkYXRhX3NpemVfLCAxKTsKLSAgIHZ0a1Nt YXJ0UG9pbnRlcjxQQ0xDb250ZXh0SW1hZ2VJdGVtPiBpbWFnZV9pdGVtID0gdnRrU21hcnRQb2lu dGVyPFBDTENvbnRleHRJbWFnZUl0ZW0+OjpOZXcgKCk7Ci0gI2lmICgoVlRLX01BSk9SX1ZFUlNJ T04gPT0gNSkgJiYgKFZUS19NSU5PUl9WRVJTSU9OIDw9IDEwKSkKLWRpZmYgLXVwIC4vdmlzdWFs aXphdGlvbi9pbmNsdWRlL3BjbC92aXN1YWxpemF0aW9uL2ltcGwvcGNsX3Zpc3VhbGl6ZXIuaHBw LnZ0azYgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRpb24vaW1wbC9wY2xf dmlzdWFsaXplci5ocHAKLS0tLSAuL3Zpc3VhbGl6YXRpb24vaW5jbHVkZS9wY2wvdmlzdWFsaXph dGlvbi9pbXBsL3BjbF92aXN1YWxpemVyLmhwcC52dGs2CTIwMTMtMDgtMjEgMDE6NTM6MTkuNTU1 Nzg5MjcyICswMDAwCi0rKysgLi92aXN1YWxpemF0aW9uL2luY2x1ZGUvcGNsL3Zpc3VhbGl6YXRp b24vaW1wbC9wY2xfdmlzdWFsaXplci5ocHAJMjAxMy0wOC0yMSAwMjoxNToxNS43MjMyNzM3MDAg KzAwMDAKLUBAIC0zMjIsMTMgKzMyMiwxMyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3Vh bGl6ZXI6OmFkZFBvCi0gICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtBcHBlbmRQb2x5RGF0YT4gYWxs X2RhdGEgPSB2dGtTbWFydFBvaW50ZXI8dnRrQXBwZW5kUG9seURhdGE+OjpOZXcgKCk7Ci0gICAg IAotICAgICAvLyBBZGQgb2xkIGRhdGEKLS0gICAgYWxsX2RhdGEtPkFkZElucHV0IChyZWludGVy cHJldF9jYXN0PHZ0a1BvbHlEYXRhTWFwcGVyKj4gKCh2dGtBY3Rvcjo6U2FmZURvd25DYXN0IChh bV9pdC0+c2Vjb25kKSktPkdldE1hcHBlciAoKSktPkdldElucHV0ICgpKTsKLSsgICAgYWxsX2Rh dGEtPkFkZElucHV0RGF0YSAocmVpbnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1hcHBlcio+ICgo dnRrQWN0b3I6OlNhZmVEb3duQ2FzdCAoYW1faXQtPnNlY29uZCkpLT5HZXRNYXBwZXIgKCkpLT5H ZXRJbnB1dCAoKSk7Ci0gICAgCi0gICAgIC8vIEFkZCBuZXcgZGF0YQotICAgICB2dGtTbWFydFBv aW50ZXI8dnRrRGF0YVNldFN1cmZhY2VGaWx0ZXI+IHN1cmZhY2VfZmlsdGVyID0gdnRrU21hcnRQ b2ludGVyPHZ0a0RhdGFTZXRTdXJmYWNlRmlsdGVyPjo6TmV3ICgpOwotLSAgICBzdXJmYWNlX2Zp bHRlci0+U2V0SW5wdXQgKHZ0a1Vuc3RydWN0dXJlZEdyaWQ6OlNhZmVEb3duQ2FzdCAoZGF0YSkp OwotKyAgICBzdXJmYWNlX2ZpbHRlci0+U2V0SW5wdXREYXRhICh2dGtVbnN0cnVjdHVyZWRHcmlk OjpTYWZlRG93bkNhc3QgKGRhdGEpKTsKLSAgICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRh PiBwb2x5X2RhdGEgPSBzdXJmYWNlX2ZpbHRlci0+R2V0T3V0cHV0ICgpOwotLSAgICBhbGxfZGF0 YS0+QWRkSW5wdXQgKHBvbHlfZGF0YSk7Ci0rICAgIGFsbF9kYXRhLT5BZGRJbnB1dERhdGEgKHBv bHlfZGF0YSk7Ci0gCi0gICAgIC8vIENyZWF0ZSBhbiBBY3RvcgotICAgICB2dGtTbWFydFBvaW50 ZXI8dnRrQWN0b3I+IGFjdG9yOwotQEAgLTM3NiwxMyArMzc2LDEzIEBAIHBjbDo6dmlzdWFsaXph dGlvbjo6UENMVmlzdWFsaXplcjo6YWRkUG8KLSAgICAgdnRrU21hcnRQb2ludGVyPHZ0a0FwcGVu ZFBvbHlEYXRhPiBhbGxfZGF0YSA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtBcHBlbmRQb2x5RGF0YT46 Ok5ldyAoKTsKLSAKLSAgICAgLy8gQWRkIG9sZCBkYXRhCi0tICAgIGFsbF9kYXRhLT5BZGRJbnB1 dCAocmVpbnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1hcHBlcio+ICgodnRrQWN0b3I6OlNhZmVE b3duQ2FzdCAoYW1faXQtPnNlY29uZCkpLT5HZXRNYXBwZXIgKCkpLT5HZXRJbnB1dCAoKSk7Ci0r ICAgIGFsbF9kYXRhLT5BZGRJbnB1dERhdGEgKHJlaW50ZXJwcmV0X2Nhc3Q8dnRrUG9seURhdGFN YXBwZXIqPiAoKHZ0a0FjdG9yOjpTYWZlRG93bkNhc3QgKGFtX2l0LT5zZWNvbmQpKS0+R2V0TWFw cGVyICgpKS0+R2V0SW5wdXQgKCkpOwotIAotICAgICAvLyBBZGQgbmV3IGRhdGEKLSAgICAgdnRr U21hcnRQb2ludGVyPHZ0a0RhdGFTZXRTdXJmYWNlRmlsdGVyPiBzdXJmYWNlX2ZpbHRlciA9IHZ0 a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0U3VyZmFjZUZpbHRlcj46Ok5ldyAoKTsKLS0gICAgc3Vy ZmFjZV9maWx0ZXItPlNldElucHV0ICh2dGtVbnN0cnVjdHVyZWRHcmlkOjpTYWZlRG93bkNhc3Qg KGRhdGEpKTsKLSsgICAgc3VyZmFjZV9maWx0ZXItPlNldElucHV0RGF0YSAodnRrVW5zdHJ1Y3R1 cmVkR3JpZDo6U2FmZURvd25DYXN0IChkYXRhKSk7Ci0gICAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQ b2x5RGF0YT4gcG9seV9kYXRhID0gc3VyZmFjZV9maWx0ZXItPkdldE91dHB1dCAoKTsKLS0gICAg YWxsX2RhdGEtPkFkZElucHV0IChwb2x5X2RhdGEpOwotKyAgICBhbGxfZGF0YS0+QWRkSW5wdXRE YXRhIChwb2x5X2RhdGEpOwotIAotICAgICAvLyBDcmVhdGUgYW4gQWN0b3IKLSAgICAgdnRrU21h cnRQb2ludGVyPHZ0a0FjdG9yPiBhY3RvcjsKLUBAIC02MTMsNyArNjEzLDcgQEAgcGNsOjp2aXN1 YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjp1cGRhdAotICAgLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KLSAg IC8vIEdldCB0aGUgYWN0b3IgcG9pbnRlcgotICAgdnRrTE9EQWN0b3IqIGFjdG9yID0gdnRrTE9E QWN0b3I6OlNhZmVEb3duQ2FzdCAoYW1faXQtPnNlY29uZCk7Ci0tICB2dGtBbGdvcml0aG0gKmFs Z28gPSBhY3Rvci0+R2V0TWFwcGVyICgpLT5HZXRJbnB1dCAoKS0+R2V0UHJvZHVjZXJQb3J0ICgp LT5HZXRQcm9kdWNlciAoKTsKLSsgIHZ0a0FsZ29yaXRobSAqYWxnbyA9IGFjdG9yLT5HZXRNYXBw ZXIgKCktPkdldElucHV0ICgpOwotICAgdnRrU3BoZXJlU291cmNlICpzcmMgPSB2dGtTcGhlcmVT b3VyY2U6OlNhZmVEb3duQ2FzdCAoYWxnbyk7Ci0gCi0gICBzcmMtPlNldENlbnRlciAoZG91Ymxl IChjZW50ZXIueCksIGRvdWJsZSAoY2VudGVyLnkpLCBkb3VibGUgKGNlbnRlci56KSk7Ci1AQCAt Nzk2LDcgKzc5Niw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkUG8K LSAgIHBvbHlEYXRhLT5TZXRMaW5lcyAobGluZXMpOwotIAotICAgdnRrU21hcnRQb2ludGVyPHZ0 a0RhdGFTZXRNYXBwZXI+IG1hcHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVy Pjo6TmV3ICgpOwotLSAgbWFwcGVyLT5TZXRJbnB1dCAocG9seURhdGEpOwotKyAgbWFwcGVyLT5T ZXRJbnB1dERhdGEgKHBvbHlEYXRhKTsKLSAgIG1hcHBlci0+U2V0Q29sb3JNb2RlVG9NYXBTY2Fs YXJzKCk7Ci0gICBtYXBwZXItPlNldFNjYWxhck1vZGVUb1VzZVBvaW50RGF0YSgpOwotIAotQEAg LTg3MSw3ICs4NzEsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZFBv Ci0gICBwb2x5RGF0YS0+U2V0TGluZXMobGluZXMpOwotIAotICAgdnRrU21hcnRQb2ludGVyPHZ0 a0RhdGFTZXRNYXBwZXI+IG1hcHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhU2V0TWFwcGVy Pjo6TmV3ICgpOwotLSAgbWFwcGVyLT5TZXRJbnB1dCAocG9seURhdGEpOwotKyAgbWFwcGVyLT5T ZXRJbnB1dERhdGEgKHBvbHlEYXRhKTsKLSAgIG1hcHBlci0+U2V0Q29sb3JNb2RlVG9NYXBTY2Fs YXJzKCk7Ci0gICBtYXBwZXItPlNldFNjYWxhck1vZGVUb1VzZVBvaW50RGF0YSgpOwotIAotQEAg LTk3MCw3ICs5NzAsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZENv Ci0gICBsaW5lX2RhdGEtPlNldExpbmVzIChsaW5lX2NlbGxzKTsKLSAgIGxpbmVfZGF0YS0+R2V0 UG9pbnREYXRhICgpLT5TZXRUQ29vcmRzIChsaW5lX3Rjb29yZHMpOwotICAgbGluZV9kYXRhLT5H ZXRDZWxsRGF0YSAoKS0+U2V0U2NhbGFycyAobGluZV9jb2xvcnMpOwotLSAgbGluZV9kYXRhLT5V cGRhdGUgKCk7Ci0rICAvL2xpbmVfZGF0YS0+VXBkYXRlICgpOwotIAotICAgLy8gQ3JlYXRlIGFu IEFjdG9yCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+IGFjdG9yOwotQEAgLTEwNzUs NyArMTA3NSw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkQ28KLSAg IGxpbmVfZGF0YS0+U2V0TGluZXMgKGxpbmVfY2VsbHMpOwotICAgbGluZV9kYXRhLT5HZXRQb2lu dERhdGEgKCktPlNldFRDb29yZHMgKGxpbmVfdGNvb3Jkcyk7Ci0gICBsaW5lX2RhdGEtPkdldENl bGxEYXRhICgpLT5TZXRTY2FsYXJzIChsaW5lX2NvbG9ycyk7Ci0tICBsaW5lX2RhdGEtPlVwZGF0 ZSAoKTsKLSsgIC8vbGluZV9kYXRhLT5VcGRhdGUgKCk7Ci0gCi0gICAvLyBDcmVhdGUgYW4gQWN0 b3IKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtMT0RBY3Rvcj4gYWN0b3I7Ci1AQCAtMTE3OCwxMCAr MTE3OCwxMCBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0Ci0gICBs aW5lX2RhdGEtPlNldExpbmVzIChsaW5lX2NlbGxzKTsKLSAgIGxpbmVfZGF0YS0+R2V0UG9pbnRE YXRhICgpLT5TZXRUQ29vcmRzIChsaW5lX3Rjb29yZHMpOwotICAgbGluZV9kYXRhLT5HZXRDZWxs RGF0YSAoKS0+U2V0U2NhbGFycyAobGluZV9jb2xvcnMpOwotLSAgbGluZV9kYXRhLT5VcGRhdGUg KCk7Ci0rICAvL2xpbmVfZGF0YS0+VXBkYXRlICgpOwotIAotICAgLy8gVXBkYXRlIHRoZSBtYXBw ZXIKLS0gIHJlaW50ZXJwcmV0X2Nhc3Q8dnRrUG9seURhdGFNYXBwZXIqPihhY3Rvci0+R2V0TWFw cGVyICgpKS0+U2V0SW5wdXQgKGxpbmVfZGF0YSk7Ci0rICByZWludGVycHJldF9jYXN0PHZ0a1Bv bHlEYXRhTWFwcGVyKj4oYWN0b3ItPkdldE1hcHBlciAoKSktPlNldElucHV0RGF0YSAobGluZV9k YXRhKTsKLSAKLSAgIHJldHVybiAodHJ1ZSk7Ci0gfQotQEAgLTEyMTMsNyArMTIxMyw3IEBAIHBj bDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6ZnJvbUgKLSAgIC8vIENvbnZlcnQgdGhl IFBvaW50Q2xvdWQgdG8gVlRLIFBvbHlEYXRhCi0gICBjb252ZXJ0UG9pbnRDbG91ZFRvVlRLUG9s eURhdGE8UG9pbnRUPiAoZ2VvbWV0cnlfaGFuZGxlciwgcG9seWRhdGEsIGluaXRjZWxscyk7Ci0g ICAvLyB1c2UgdGhlIGdpdmVuIGdlb21ldHJ5IGhhbmRsZXIKLS0gIHBvbHlkYXRhLT5VcGRhdGUg KCk7Ci0rICAvL3BvbHlkYXRhLT5VcGRhdGUgKCk7Ci0gCi0gICAvLyBHZXQgdGhlIGNvbG9ycyBm cm9tIHRoZSBoYW5kbGVyCi0gICBib29sIGhhc19jb2xvcnMgPSBmYWxzZTsKLUBAIC0xMjc3LDcg KzEyNzcsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmZyb21ICi0gICAv LyBDb252ZXJ0IHRoZSBQb2ludENsb3VkIHRvIFZUSyBQb2x5RGF0YQotICAgY29udmVydFBvaW50 Q2xvdWRUb1ZUS1BvbHlEYXRhPFBvaW50VD4gKGdlb21ldHJ5X2hhbmRsZXIsIHBvbHlkYXRhLCBp bml0Y2VsbHMpOwotICAgLy8gdXNlIHRoZSBnaXZlbiBnZW9tZXRyeSBoYW5kbGVyCi0tICBwb2x5 ZGF0YS0+VXBkYXRlICgpOwotKyAgLy9wb2x5ZGF0YS0+VXBkYXRlICgpOwotIAotICAgLy8gR2V0 IHRoZSBjb2xvcnMgZnJvbSB0aGUgaGFuZGxlcgotICAgYm9vbCBoYXNfY29sb3JzID0gZmFsc2U7 Ci1AQCAtMTM0Miw3ICsxMzQyLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVy Ojpmcm9tSAotICAgLy8gQ29udmVydCB0aGUgUG9pbnRDbG91ZCB0byBWVEsgUG9seURhdGEKLSAg IGNvbnZlcnRQb2ludENsb3VkVG9WVEtQb2x5RGF0YSAoZ2VvbWV0cnlfaGFuZGxlciwgcG9seWRh dGEsIGluaXRjZWxscyk7Ci0gICAvLyB1c2UgdGhlIGdpdmVuIGdlb21ldHJ5IGhhbmRsZXIKLS0g IHBvbHlkYXRhLT5VcGRhdGUgKCk7Ci0rICAvL3BvbHlkYXRhLT5VcGRhdGUgKCk7Ci0gCi0gICAv LyBHZXQgdGhlIGNvbG9ycyBmcm9tIHRoZSBoYW5kbGVyCi0gICBib29sIGhhc19jb2xvcnMgPSBm YWxzZTsKLUBAIC0xMzk0LDEyICsxMzk0LDEyIEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlz dWFsaXplcjo6dXBkYXQKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YT4gcG9seWRhdGEg PSByZWludGVycHJldF9jYXN0PHZ0a1BvbHlEYXRhTWFwcGVyKj4oYW1faXQtPnNlY29uZC5hY3Rv ci0+R2V0TWFwcGVyICgpKS0+R2V0SW5wdXQgKCk7Ci0gICAvLyBDb252ZXJ0IHRoZSBQb2ludENs b3VkIHRvIFZUSyBQb2x5RGF0YQotICAgY29udmVydFBvaW50Q2xvdWRUb1ZUS1BvbHlEYXRhPFBv aW50VD4gKGNsb3VkLCBwb2x5ZGF0YSwgYW1faXQtPnNlY29uZC5jZWxscyk7Ci0tICBwb2x5ZGF0 YS0+VXBkYXRlICgpOwotKyAgLy9wb2x5ZGF0YS0+VXBkYXRlICgpOwotIAotICAgLy8gU2V0IHNj YWxhcnMgdG8gYmxhbmssIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4gdXBkYXRlIHRoZW0g aGVyZS4KLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhQXJyYXk+IHNjYWxhcnM7Ci0gICBwb2x5 ZGF0YS0+R2V0UG9pbnREYXRhICgpLT5TZXRTY2FsYXJzIChzY2FsYXJzKTsKLS0gIHBvbHlkYXRh LT5VcGRhdGUgKCk7Ci0rICAvL3BvbHlkYXRhLT5VcGRhdGUgKCk7Ci0gICBkb3VibGUgbWlubWF4 WzJdOwotICAgbWlubWF4WzBdID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4gKCk7 Ci0gICBtaW5tYXhbMV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCAoKTsKLUBA IC0xNDA3LDcgKzE0MDcsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVw ZGF0Ci0gICBhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCktPlNldFNjYWxhclJhbmdl IChtaW5tYXgpOwotIAotICAgLy8gVXBkYXRlIHRoZSBtYXBwZXIKLS0gIHJlaW50ZXJwcmV0X2Nh c3Q8dnRrUG9seURhdGFNYXBwZXIqPihhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCkp LT5TZXRJbnB1dCAocG9seWRhdGEpOwotKyAgcmVpbnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1h cHBlcio+KGFtX2l0LT5zZWNvbmQuYWN0b3ItPkdldE1hcHBlciAoKSktPlNldElucHV0RGF0YSAo cG9seWRhdGEpOwotICAgcmV0dXJuICh0cnVlKTsKLSB9Ci0gCi1AQCAtMTQzMiw3ICsxNDMyLDcg QEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjp1cGRhdAotICAgLy8gU2V0IHNj YWxhcnMgdG8gYmxhbmssIHNpbmNlIHRoZXJlIGlzIG5vIHdheSB3ZSBjYW4gdXBkYXRlIHRoZW0g aGVyZS4KLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtEYXRhQXJyYXk+IHNjYWxhcnM7Ci0gICBwb2x5 ZGF0YS0+R2V0UG9pbnREYXRhICgpLT5TZXRTY2FsYXJzIChzY2FsYXJzKTsKLS0gIHBvbHlkYXRh LT5VcGRhdGUgKCk7Ci0rICAvL3BvbHlkYXRhLT5VcGRhdGUgKCk7Ci0gICBkb3VibGUgbWlubWF4 WzJdOwotICAgbWlubWF4WzBdID0gc3RkOjpudW1lcmljX2xpbWl0czxkb3VibGU+OjptaW4gKCk7 Ci0gICBtaW5tYXhbMV0gPSBzdGQ6Om51bWVyaWNfbGltaXRzPGRvdWJsZT46Om1heCAoKTsKLUBA IC0xNDQwLDcgKzE0NDAsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVw ZGF0Ci0gICBhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCktPlNldFNjYWxhclJhbmdl IChtaW5tYXgpOwotIAotICAgLy8gVXBkYXRlIHRoZSBtYXBwZXIKLS0gIHJlaW50ZXJwcmV0X2Nh c3Q8dnRrUG9seURhdGFNYXBwZXIqPihhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCkp LT5TZXRJbnB1dCAocG9seWRhdGEpOwotKyAgcmVpbnRlcnByZXRfY2FzdDx2dGtQb2x5RGF0YU1h cHBlcio+KGFtX2l0LT5zZWNvbmQuYWN0b3ItPkdldE1hcHBlciAoKSktPlNldElucHV0RGF0YSAo cG9seWRhdGEpOwotICAgcmV0dXJuICh0cnVlKTsKLSB9Ci0gCi1AQCAtMTUwNywxMyArMTUwNywx MyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0Ci0gICBzY2FsYXJz LT5HZXRSYW5nZSAobWlubWF4KTsKLSAgIC8vIFVwZGF0ZSB0aGUgZGF0YQotICAgcG9seWRhdGEt PkdldFBvaW50RGF0YSAoKS0+U2V0U2NhbGFycyAoc2NhbGFycyk7Ci0tICBwb2x5ZGF0YS0+VXBk YXRlICgpOwotKyAgLy9wb2x5ZGF0YS0+VXBkYXRlICgpOwotIAotICAgYW1faXQtPnNlY29uZC5h Y3Rvci0+R2V0TWFwcGVyICgpLT5JbW1lZGlhdGVNb2RlUmVuZGVyaW5nT2ZmICgpOwotICAgYW1f aXQtPnNlY29uZC5hY3Rvci0+R2V0TWFwcGVyICgpLT5TZXRTY2FsYXJSYW5nZSAobWlubWF4KTsK LSAKLSAgIC8vIFVwZGF0ZSB0aGUgbWFwcGVyCi0tICByZWludGVycHJldF9jYXN0PHZ0a1BvbHlE YXRhTWFwcGVyKj4oYW1faXQtPnNlY29uZC5hY3Rvci0+R2V0TWFwcGVyICgpKS0+U2V0SW5wdXQg KHBvbHlkYXRhKTsKLSsgIHJlaW50ZXJwcmV0X2Nhc3Q8dnRrUG9seURhdGFNYXBwZXIqPihhbV9p dC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCkpLT5TZXRJbnB1dERhdGEgKHBvbHlkYXRhKTsK LSAgIHJldHVybiAodHJ1ZSk7Ci0gfQotIAotQEAgLTE2NjgsNyArMTY2OCw3IEBAIHBjbDo6dmlz dWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkUG8KLSAgICAgcG9seV9ncmlkLT5BbGxvY2F0 ZSAoMSwgMSk7Ci0gICAgIHBvbHlfZ3JpZC0+SW5zZXJ0TmV4dENlbGwgKHBvbHlnb24tPkdldENl bGxUeXBlICgpLCBwb2x5Z29uLT5HZXRQb2ludElkcyAoKSk7Ci0gICAgIHBvbHlfZ3JpZC0+U2V0 UG9pbnRzIChwb2ludHMpOwotLSAgICBwb2x5X2dyaWQtPlVwZGF0ZSAoKTsKLSsgICAgLy9wb2x5 X2dyaWQtPlVwZGF0ZSAoKTsKLSAgICAgaWYgKGNvbG9ycykKLSAgICAgICBwb2x5X2dyaWQtPkdl dFBvaW50RGF0YSAoKS0+U2V0U2NhbGFycyAoY29sb3JzKTsKLSAKLUBAIC0xODEzLDcgKzE4MTMs NyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnVwZGF0Ci0gICBjZWxscy0+ U3F1ZWV6ZSAoKTsKLSAgIC8vIFNldCB0aGUgdGhlIHZlcnRpY2VzCi0gICBwb2x5ZGF0YS0+U2V0 U3RyaXBzIChjZWxscyk7Ci0tICBwb2x5ZGF0YS0+VXBkYXRlICgpOwotKyAgLy9wb2x5ZGF0YS0+ VXBkYXRlICgpOwotIAotICAgcmV0dXJuICh0cnVlKTsKLSB9Ci1kaWZmIC11cCAuL3Zpc3VhbGl6 YXRpb24vc3JjLy52dGs2IC4vdmlzdWFsaXphdGlvbi9zcmMvCi1kaWZmIC11cCAuL3Zpc3VhbGl6 YXRpb24vc3JjL2NvbW1vbi9pby5jcHAudnRrNiAuL3Zpc3VhbGl6YXRpb24vc3JjL2NvbW1vbi9p by5jcHAKLS0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL2NvbW1vbi9pby5jcHAudnRrNgkyMDEzLTA3 LTIzIDE3OjIxOjAyLjAwMDAwMDAwMCArMDAwMAotKysrIC4vdmlzdWFsaXphdGlvbi9zcmMvY29t bW9uL2lvLmNwcAkyMDEzLTA4LTIxIDAwOjQ1OjU5LjAxMDg0NDgwMCArMDAwMAotQEAgLTg5LDcg Kzg5LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpzYXZlUG9pbnREYXRhICh2dGtQbwotICAgLy8g Q2xlYW4gdGhlIGRhdGEgKG5vIGR1cGxpY2F0ZXMhKQotICAgdnRrU21hcnRQb2ludGVyPHZ0a0Ns ZWFuUG9seURhdGE+IGNsZWFuZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrQ2xlYW5Qb2x5RGF0YT46 Ok5ldyAoKTsKLSAgIGNsZWFuZXItPlNldFRvbGVyYW5jZSAoMC4wKTsKLS0gIGNsZWFuZXItPlNl dElucHV0IChkYXRhKTsKLSsgIGNsZWFuZXItPlNldElucHV0RGF0YSAoZGF0YSk7Ci0gICBjbGVh bmVyLT5Db252ZXJ0TGluZXNUb1BvaW50c09mZiAoKTsKLSAgIGNsZWFuZXItPkNvbnZlcnRQb2x5 c1RvTGluZXNPZmYgKCk7Ci0gICBjbGVhbmVyLT5Db252ZXJ0U3RyaXBzVG9Qb2x5c09mZiAoKTsK LWRpZmYgLXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvY29tbW9uL3NoYXBlcy5jcHAudnRrNiAuL3Zp c3VhbGl6YXRpb24vc3JjL2NvbW1vbi9zaGFwZXMuY3BwCi0tLS0gLi92aXN1YWxpemF0aW9uL3Ny Yy9jb21tb24vc2hhcGVzLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICsw MDAwCi0rKysgLi92aXN1YWxpemF0aW9uL3NyYy9jb21tb24vc2hhcGVzLmNwcAkyMDEzLTA4LTIx IDAwOjQ1OjU5LjAxMDg0NDgwMCArMDAwMAotQEAgLTIyNCw3ICsyMjQsNyBAQCBwY2w6OnZpc3Vh bGl6YXRpb246OmNyZWF0ZTJEQ2lyY2xlIChjb25zCi0gICBjaXJjbGUtPlNldE51bWJlck9mU2lk ZXMgKDEwMCk7Ci0gICAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtUdWJlRmlsdGVyPiB0dWJlID0g dnRrU21hcnRQb2ludGVyPHZ0a1R1YmVGaWx0ZXI+OjpOZXcoKTsKLS0gIHR1YmUtPlNldElucHV0 IChjaXJjbGUtPkdldE91dHB1dCgpKTsKLSsgIHR1YmUtPlNldElucHV0Q29ubmVjdGlvbiAoY2ly Y2xlLT5HZXRPdXRwdXRQb3J0KCkpOwotICAgdHViZS0+U2V0TnVtYmVyT2ZTaWRlcyAoMjUpOwot ICAgdHViZS0+U2V0UmFkaXVzICgwLjAwMSk7Ci0gICAqLyAKLWRpZmYgLXVwIC4vdmlzdWFsaXph dGlvbi9zcmMvaGlzdG9ncmFtX3Zpc3VhbGl6ZXIuY3BwLnZ0azYgLi92aXN1YWxpemF0aW9uL3Ny Yy9oaXN0b2dyYW1fdmlzdWFsaXplci5jcHAKLS0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL2hpc3Rv Z3JhbV92aXN1YWxpemVyLmNwcC52dGs2CTIwMTMtMDgtMjEgMDI6MTg6MjcuNDk0MzM2NzM1ICsw MDAwCi0rKysgLi92aXN1YWxpemF0aW9uL3NyYy9oaXN0b2dyYW1fdmlzdWFsaXplci5jcHAJMjAx My0wOC0yMSAwMjoyMjoyOS41NTM0NjEwNTcgKzAwMDAKLUBAIC0yNjAsNyArMjYwLDcgQEAgcGNs Ojp2aXN1YWxpemF0aW9uOjpQQ0xIaXN0b2dyYW1WaXN1YWxpegotICAgICBjb25zdCB2dGtTbWFy dFBvaW50ZXI8dnRrRG91YmxlQXJyYXk+ICZ4eV9hcnJheSwgUmVuV2luSW50ZXJhY3QqIHJlbndp bnVwZCwgY29uc3QgaW50IGhzaXplKQotIHsKLSAgIHJlbndpbnVwZC0+cmVuXy0+UmVtb3ZlQWN0 b3IyRCAocmVud2ludXBkLT54eV9wbG90Xyk7Ci0tICByZW53aW51cGQtPnh5X3Bsb3RfLT5SZW1v dmVBbGxJbnB1dHMgKCk7Ci0rICByZW53aW51cGQtPnh5X3Bsb3RfLT5SZW1vdmVBbGxEYXRhU2V0 SW5wdXRDb25uZWN0aW9ucyAoKTsKLSAgIAotICAgZG91YmxlIG1pbl9tYXhbMl07Ci0gICB4eV9h cnJheS0+R2V0UmFuZ2UgKG1pbl9tYXgsIDEpOwotZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL3Ny Yy9pbWFnZV92aWV3ZXIuY3BwLnZ0azYgLi92aXN1YWxpemF0aW9uL3NyYy9pbWFnZV92aWV3ZXIu Y3BwCi0tLS0gLi92aXN1YWxpemF0aW9uL3NyYy9pbWFnZV92aWV3ZXIuY3BwLnZ0azYJMjAxMy0w OC0yMSAwMjoyNDowMS44MDE0MTI4MDAgKzAwMDAKLSsrKyAuL3Zpc3VhbGl6YXRpb24vc3JjL2lt YWdlX3ZpZXdlci5jcHAJMjAxMy0wOC0yMSAwMjozMTo1MC44ODkyMzk4NTIgKzAwMDAKLUBAIC0z Nyw2ICszNyw4IEBACi0gICovCi0gCi0gI2luY2x1ZGUgPHZ0a0ltYWdlVmlld2VyLmg+Ci0rI2lu Y2x1ZGUgPHZ0a0ltYWdlU2xpY2UuaD4KLSsjaW5jbHVkZSA8dnRrSW1hZ2VTbGljZU1hcHBlci5o PgotICNpbmNsdWRlIDx2dGtDYWxsYmFja0NvbW1hbmQuaD4KLSAjaW5jbHVkZSA8dnRrUmVuZGVy ZXIuaD4KLSAjaW5jbHVkZSA8dnRrQ2FtZXJhLmg+Ci1AQCAtMTE3LDcgKzExOSw3IEBAIHBjbDo6 dmlzdWFsaXphdGlvbjo6SW1hZ2VWaWV3ZXI6OkltYWdlVmkKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRl cjx2dGtJbWFnZURhdGE+IGVtcHR5X2ltYWdlID0gdnRrU21hcnRQb2ludGVyPHZ0a0ltYWdlRGF0 YT46Ok5ldyAoKTsKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtJbWFnZVNsaWNlTWFwcGVyPiBtYXAg PSB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VTbGljZU1hcHBlcj46Ok5ldyAoKTsKLS0gIG1hcC0+ U2V0SW5wdXQgKGVtcHR5X2ltYWdlKTsKLSsgIG1hcC0+U2V0SW5wdXREYXRhIChlbXB0eV9pbWFn ZSk7Ci0gICBzbGljZV8tPlNldE1hcHBlciAobWFwKTsKLSAgIHJlbl8tPkFkZFZpZXdQcm9wIChz bGljZV8pOwotICAgaW50ZXJhY3Rvcl8tPlNldEludGVyYWN0b3JTdHlsZSAoaW50ZXJhY3Rvcl9z dHlsZV8pOwotQEAgLTE4MCw5ICsxODIsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OkltYWdlVmll d2VyOjphZGRSR0JJCi0gCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VEYXRhPiBpbWFnZSA9 IHZ0a1NtYXJ0UG9pbnRlcjx2dGtJbWFnZURhdGE+OjpOZXcgKCk7Ci0gICBpbWFnZS0+U2V0RXh0 ZW50ICgwLCB3aWR0aCAtIDEsIDAsIGhlaWdodCAtIDEsIDAsIDApOwotLSAgaW1hZ2UtPlNldFNj YWxhclR5cGVUb1Vuc2lnbmVkQ2hhciAoKTsKLS0gIGltYWdlLT5TZXROdW1iZXJPZlNjYWxhckNv bXBvbmVudHMgKDMpOwotLSAgaW1hZ2UtPkFsbG9jYXRlU2NhbGFycyAoKTsKLSsgIGltYWdlLT5B bGxvY2F0ZVNjYWxhcnMgKFZUS19VTlNJR05FRF9DSEFSLCAzKTsKLSAgIGltYWdlLT5HZXRQb2lu dERhdGEgKCktPkdldFNjYWxhcnMgKCktPlNldFZvaWRBcnJheSAoZGF0YSwgMyAqIHdpZHRoICog aGVpZ2h0LCAxKTsKLSAjaWYgKChWVEtfTUFKT1JfVkVSU0lPTiA9PSA1KSAmJiAoVlRLX01JTk9S X1ZFUlNJT04gPD0gMTApKQotICAgLy8gTm93IGNyZWF0ZSBmaWx0ZXIgYW5kIHNldCBwcmV2aW91 c2x5IGNyZWF0ZWQgdHJhbnNmb3JtYXRpb24KLUBAIC0yMzEsOSArMjMxLDcgQEAgcGNsOjp2aXN1 YWxpemF0aW9uOjpJbWFnZVZpZXdlcjo6YWRkTW9ubwotIAotICAgdnRrU21hcnRQb2ludGVyPHZ0 a0ltYWdlRGF0YT4gaW1hZ2UgPSB2dGtTbWFydFBvaW50ZXI8dnRrSW1hZ2VEYXRhPjo6TmV3ICgp OwotICAgaW1hZ2UtPlNldEV4dGVudCAoMCwgd2lkdGggLSAxLCAwLCBoZWlnaHQgLSAxLCAwLCAw KTsKLS0gIGltYWdlLT5TZXRTY2FsYXJUeXBlVG9VbnNpZ25lZENoYXIgKCk7Ci0tICBpbWFnZS0+ U2V0TnVtYmVyT2ZTY2FsYXJDb21wb25lbnRzICgxKTsKLS0gIGltYWdlLT5BbGxvY2F0ZVNjYWxh cnMgKCk7Ci0rICBpbWFnZS0+QWxsb2NhdGVTY2FsYXJzIChWVEtfVU5TSUdORURfQ0hBUiwgMSk7 Ci0gICBpbWFnZS0+R2V0UG9pbnREYXRhICgpLT5HZXRTY2FsYXJzICgpLT5TZXRWb2lkQXJyYXkg KGRhdGEsIHdpZHRoICogaGVpZ2h0LCAxKTsKLSAKLSAjaWYgKChWVEtfTUFKT1JfVkVSU0lPTiA9 PSA1KSAmJiAoVlRLX01JTk9SX1ZFUlNJT04gPD0gMTApKQotZGlmZiAtdXAgLi92aXN1YWxpemF0 aW9uL3NyYy9pbnRlcmFjdG9yX3N0eWxlLmNwcC52dGs2IC4vdmlzdWFsaXphdGlvbi9zcmMvaW50 ZXJhY3Rvcl9zdHlsZS5jcHAKLS0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL2ludGVyYWN0b3Jfc3R5 bGUuY3BwLnZ0azYJMjAxMy0wOC0yMSAwMToxNTo0Ny4zMDg5MDA0ODQgKzAwMDAKLSsrKyAuL3Zp c3VhbGl6YXRpb24vc3JjL2ludGVyYWN0b3Jfc3R5bGUuY3BwCTIwMTMtMDgtMjEgMDE6MTg6NDIu MDQ4NjM5OTM4ICswMDAwCi1AQCAtMzU3LDcgKzM1Nyw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6 UENMVmlzdWFsaXplckludGVyYWMKLSAgICAgICAgIGVsc2UKLSAgICAgICAgIHsKLSAgICAgICAg ICAgdnRrUG9seURhdGFNYXBwZXIqIG1hcHBlciA9IHN0YXRpY19jYXN0PHZ0a1BvbHlEYXRhTWFw cGVyKj4oYWN0LT5hY3Rvci0+R2V0TWFwcGVyICgpKTsKLS0gICAgICAgICAgbWFwcGVyLT5TZXRJ bnB1dCAoZGF0YSk7Ci0rICAgICAgICAgIG1hcHBlci0+U2V0SW5wdXREYXRhIChkYXRhKTsKLSAg ICAgICAgICAgLy8gTW9kaWZ5IHRoZSBhY3RvcgotICAgICAgICAgICBhY3QtPmFjdG9yLT5TZXRN YXBwZXIgKG1hcHBlcik7Ci0gICAgICAgICB9Ci1AQCAtMzg2LDcgKzM4Niw3IEBAIHBjbDo6dmlz dWFsaXphdGlvbjo6UENMVmlzdWFsaXplckludGVyYWMKLSAgICAgICAgIC8vIFVwZGF0ZSB0aGUg ZGF0YQotICAgICAgICAgdnRrUG9seURhdGEgKmRhdGEgPSBzdGF0aWNfY2FzdDx2dGtQb2x5RGF0 YSo+KGFjdC0+YWN0b3ItPkdldE1hcHBlciAoKS0+R2V0SW5wdXQgKCkpOwotICAgICAgICAgZGF0 YS0+R2V0UG9pbnREYXRhICgpLT5TZXRTY2FsYXJzIChzY2FsYXJzKTsKLS0gICAgICAgIGRhdGEt PlVwZGF0ZSAoKTsKLSsgICAgICAgIC8vZGF0YS0+VXBkYXRlICgpOwotICAgICAgICAgLy8gTW9k aWZ5IHRoZSBtYXBwZXIKLSAgICAgICAgIGlmICh1c2VfdmJvc18pCi0gICAgICAgICB7Ci1AQCAt NDAyLDcgKzQwMiw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplckludGVyYWMK LSAgICAgICAgICAgdnRrUG9seURhdGFNYXBwZXIqIG1hcHBlciA9IHN0YXRpY19jYXN0PHZ0a1Bv bHlEYXRhTWFwcGVyKj4oYWN0LT5hY3Rvci0+R2V0TWFwcGVyICgpKTsKLSAgICAgICAgICAgbWFw cGVyLT5TZXRTY2FsYXJSYW5nZSAobWlubWF4KTsKLSAgICAgICAgICAgbWFwcGVyLT5TZXRTY2Fs YXJNb2RlVG9Vc2VQb2ludERhdGEgKCk7Ci0tICAgICAgICAgIG1hcHBlci0+U2V0SW5wdXQgKGRh dGEpOwotKyAgICAgICAgICBtYXBwZXItPlNldElucHV0RGF0YSAoZGF0YSk7Ci0gICAgICAgICAg IC8vIE1vZGlmeSB0aGUgYWN0b3IKLSAgICAgICAgICAgYWN0LT5hY3Rvci0+U2V0TWFwcGVyICht YXBwZXIpOwotICAgICAgICAgfQotZGlmZiAtdXAgLi92aXN1YWxpemF0aW9uL3NyYy9wY2xfcGxv dHRlci5jcHAudnRrNiAuL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF9wbG90dGVyLmNwcAotLS0tIC4v dmlzdWFsaXphdGlvbi9zcmMvcGNsX3Bsb3R0ZXIuY3BwLnZ0azYJMjAxMy0wOC0yMSAwMjo0Mjo0 MC41ODQ3OTkwNTEgKzAwMDAKLSsrKyAuL3Zpc3VhbGl6YXRpb24vc3JjL3BjbF9wbG90dGVyLmNw cAkyMDEzLTA4LTIxIDAyOjQyOjU2LjUxMzEzMTc2NCArMDAwMAotQEAgLTEyMCw3ICsxMjAsNyBA QCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFBsb3R0ZXI6OmFkZFBsb3RECi0gICAvL2FkZGluZyB0 byBjaGFydAotICAgLy92dGtQbG90ICpsaW5lID0gY2hhcnRfLT5BZGRQbG90KHZ0a0NoYXJ0OjpM SU5FKTsKLSAgIHZ0a1Bsb3QgKmxpbmUgPSBjaGFydF8tPkFkZFBsb3QgKHR5cGUpOwotLSAgbGlu ZS0+U2V0SW5wdXQgKHRhYmxlLCAwLCAxKTsKLSsgIGxpbmUtPlNldElucHV0RGF0YSAodGFibGUs IDAsIDEpOwotICAgbGluZS0+U2V0V2lkdGggKDEpOwotIAotICAgaWYgKGNvbG9yID09IE5VTEwp ICAgIC8vY29sb3IgYXV0b21hdGljYWxseSBiYXNlZCBvbiB0aGUgQ29sb3JTY2hlbWUKLWRpZmYg LXVwIC4vdmlzdWFsaXphdGlvbi9zcmMvcGNsX3Zpc3VhbGl6ZXIuY3BwLnZ0azYgLi92aXN1YWxp emF0aW9uL3NyYy9wY2xfdmlzdWFsaXplci5jcHAKLS0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL3Bj bF92aXN1YWxpemVyLmNwcC52dGs2CTIwMTMtMDctMjMgMTc6MjE6MDIuMDAwMDAwMDAwICswMDAw Ci0rKysgLi92aXN1YWxpemF0aW9uL3NyYy9wY2xfdmlzdWFsaXplci5jcHAJMjAxMy0wOC0yMSAw MjoxODowNy40MTA5MTEzNzIgKzAwMDAKLUBAIC01MDgsMTcgKzUwOCwxNyBAQCBwY2w6OnZpc3Vh bGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZENvCi0gICBheGVzX2NvbG9ycy0+SW5zZXJ0TmV4 dFZhbHVlICgxLjApOwotIAotICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhPiBheGVzX2Rh dGEgPSBheGVzLT5HZXRPdXRwdXQgKCk7Ci0tICBheGVzX2RhdGEtPlVwZGF0ZSAoKTsKLSsgIGF4 ZXMtPlVwZGF0ZSAoKTsKLSAgIGF4ZXNfZGF0YS0+R2V0UG9pbnREYXRhICgpLT5TZXRTY2FsYXJz IChheGVzX2NvbG9ycyk7Ci0gCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrVHViZUZpbHRlcj4gYXhl c190dWJlcyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtUdWJlRmlsdGVyPjo6TmV3ICgpOwotLSAgYXhl c190dWJlcy0+U2V0SW5wdXQgKGF4ZXNfZGF0YSk7Ci0rICBheGVzX3R1YmVzLT5TZXRJbnB1dERh dGEgKGF4ZXNfZGF0YSk7Ci0gICBheGVzX3R1YmVzLT5TZXRSYWRpdXMgKGF4ZXMtPkdldFNjYWxl RmFjdG9yICgpIC8gNTAuMCk7Ci0gICBheGVzX3R1YmVzLT5TZXROdW1iZXJPZlNpZGVzICg2KTsK LSAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YU1hcHBlcj4gYXhlc19tYXBwZXIgPSB2 dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7Ci0gICBheGVzX21hcHBl ci0+U2V0U2NhbGFyTW9kZVRvVXNlUG9pbnREYXRhICgpOwotLSAgYXhlc19tYXBwZXItPlNldElu cHV0IChheGVzX3R1YmVzLT5HZXRPdXRwdXQgKCkpOwotKyAgYXhlc19tYXBwZXItPlNldElucHV0 Q29ubmVjdGlvbiAoYXhlc190dWJlcy0+R2V0T3V0cHV0UG9ydCAoKSk7Ci0gCi0gICB2dGtTbWFy dFBvaW50ZXI8dnRrTE9EQWN0b3I+IGF4ZXNfYWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrTE9E QWN0b3I+OjpOZXcgKCk7Ci0gICBheGVzX2FjdG9yLT5TZXRNYXBwZXIgKGF4ZXNfbWFwcGVyKTsK LUBAIC01NDcsMTcgKzU0NywxNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6 OmFkZENvCi0gICBheGVzX2NvbG9ycy0+SW5zZXJ0TmV4dFZhbHVlICgxLjApOwotIAotICAgdnRr U21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhPiBheGVzX2RhdGEgPSBheGVzLT5HZXRPdXRwdXQgKCk7 Ci0tICBheGVzX2RhdGEtPlVwZGF0ZSAoKTsKLSsgIGF4ZXMtPlVwZGF0ZSAoKTsKLSAgIGF4ZXNf ZGF0YS0+R2V0UG9pbnREYXRhICgpLT5TZXRTY2FsYXJzIChheGVzX2NvbG9ycyk7Ci0gCi0gICB2 dGtTbWFydFBvaW50ZXI8dnRrVHViZUZpbHRlcj4gYXhlc190dWJlcyA9IHZ0a1NtYXJ0UG9pbnRl cjx2dGtUdWJlRmlsdGVyPjo6TmV3ICgpOwotLSAgYXhlc190dWJlcy0+U2V0SW5wdXQgKGF4ZXNf ZGF0YSk7Ci0rICBheGVzX3R1YmVzLT5TZXRJbnB1dERhdGEgKGF4ZXNfZGF0YSk7Ci0gICBheGVz X3R1YmVzLT5TZXRSYWRpdXMgKGF4ZXMtPkdldFNjYWxlRmFjdG9yICgpIC8gNTAuMCk7Ci0gICBh eGVzX3R1YmVzLT5TZXROdW1iZXJPZlNpZGVzICg2KTsKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2 dGtQb2x5RGF0YU1hcHBlcj4gYXhlc19tYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURh dGFNYXBwZXI+OjpOZXcgKCk7Ci0gICBheGVzX21hcHBlci0+U2V0U2NhbGFyTW9kZVRvVXNlUG9p bnREYXRhICgpOwotLSAgYXhlc19tYXBwZXItPlNldElucHV0IChheGVzX3R1YmVzLT5HZXRPdXRw dXQgKCkpOwotKyAgYXhlc19tYXBwZXItPlNldElucHV0Q29ubmVjdGlvbiAoYXhlc190dWJlcy0+ R2V0T3V0cHV0UG9ydCAoKSk7Ci0gCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+IGF4 ZXNfYWN0b3IgPSB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+OjpOZXcgKCk7Ci0gICBheGVz X2FjdG9yLT5TZXRNYXBwZXIgKGF4ZXNfbWFwcGVyKTsKLUBAIC02MTcsMTcgKzYxNywxNyBAQCBw Y2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZENvCi0gICBheGVzX2NvbG9ycy0+ SW5zZXJ0TmV4dFZhbHVlICgxLjApOwotIAotICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRh PiBheGVzX2RhdGEgPSBheGVzLT5HZXRPdXRwdXQgKCk7Ci0tICBheGVzX2RhdGEtPlVwZGF0ZSAo KTsKLSsgIGF4ZXMtPlVwZGF0ZSAoKTsKLSAgIGF4ZXNfZGF0YS0+R2V0UG9pbnREYXRhICgpLT5T ZXRTY2FsYXJzIChheGVzX2NvbG9ycyk7Ci0gCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrVHViZUZp bHRlcj4gYXhlc190dWJlcyA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtUdWJlRmlsdGVyPjo6TmV3ICgp OwotLSAgYXhlc190dWJlcy0+U2V0SW5wdXQgKGF4ZXNfZGF0YSk7Ci0rICBheGVzX3R1YmVzLT5T ZXRJbnB1dERhdGEgKGF4ZXNfZGF0YSk7Ci0gICBheGVzX3R1YmVzLT5TZXRSYWRpdXMgKGF4ZXMt PkdldFNjYWxlRmFjdG9yICgpIC8gNTAuMCk7Ci0gICBheGVzX3R1YmVzLT5TZXROdW1iZXJPZlNp ZGVzICg2KTsKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YU1hcHBlcj4gYXhlc19t YXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7Ci0gICBh eGVzX21hcHBlci0+U2V0U2NhbGFyTW9kZVRvVXNlUG9pbnREYXRhICgpOwotLSAgYXhlc19tYXBw ZXItPlNldElucHV0IChheGVzX3R1YmVzLT5HZXRPdXRwdXQgKCkpOwotKyAgYXhlc19tYXBwZXIt PlNldElucHV0Q29ubmVjdGlvbiAoYXhlc190dWJlcy0+R2V0T3V0cHV0UG9ydCAoKSk7Ci0gCi0g ICB2dGtTbWFydFBvaW50ZXI8dnRrTE9EQWN0b3I+IGF4ZXNfYWN0b3IgPSB2dGtTbWFydFBvaW50 ZXI8dnRrTE9EQWN0b3I+OjpOZXcgKCk7Ci0gICBheGVzX2FjdG9yLT5TZXRNYXBwZXIgKGF4ZXNf bWFwcGVyKTsKLUBAIC04MzUsNyArODM1LDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1 YWxpemVyOjphZGRQbwotICAgICBsaW5lXzEtPlNldFBvaW50MSAoY2xvdWQtPnBvaW50c1tpXS54 LCBjbG91ZC0+cG9pbnRzW2ldLnksIGNsb3VkLT5wb2ludHNbaV0ueik7Ci0gICAgIGxpbmVfMS0+ U2V0UG9pbnQyIChwLngsIHAueSwgcC56KTsKLSAgICAgbGluZV8xLT5VcGRhdGUgKCk7Ci0tICAg IHBvbHlkYXRhXzEtPkFkZElucHV0IChsaW5lXzEtPkdldE91dHB1dCAoKSk7Ci0rICAgIHBvbHlk YXRhXzEtPkFkZElucHV0RGF0YSAobGluZV8xLT5HZXRPdXRwdXQgKCkpOwotICAgICBsaW5lXzFf Y29sb3JzLT5JbnNlcnROZXh0VHVwbGVWYWx1ZSAoZ3JlZW4pOwotICAgfQotICAgcG9seWRhdGFf MS0+VXBkYXRlICgpOwotQEAgLTg2Miw3ICs4NjIsNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBD TFZpc3VhbGl6ZXI6OmFkZFBvCi0gICAgIGxpbmVfMi0+U2V0UG9pbnQxIChjbG91ZC0+cG9pbnRz W2ldLngsIGNsb3VkLT5wb2ludHNbaV0ueSwgY2xvdWQtPnBvaW50c1tpXS56KTsKLSAgICAgbGlu ZV8yLT5TZXRQb2ludDIgKHAueCwgcC55LCBwLnopOwotICAgICBsaW5lXzItPlVwZGF0ZSAoKTsK LS0gICAgcG9seWRhdGFfMi0+QWRkSW5wdXQgKGxpbmVfMi0+R2V0T3V0cHV0ICgpKTsKLSsgICAg cG9seWRhdGFfMi0+QWRkSW5wdXREYXRhIChsaW5lXzItPkdldE91dHB1dCAoKSk7Ci0gICAgIGxp bmVfMl9jb2xvcnMtPkluc2VydE5leHRUdXBsZVZhbHVlIChibHVlKTsKLSAgIH0KLSAgIHBvbHlk YXRhXzItPlVwZGF0ZSAoKTsKLUBAIC04NzEsOCArODcxLDggQEAgcGNsOjp2aXN1YWxpemF0aW9u OjpQQ0xWaXN1YWxpemVyOjphZGRQbwotIAotICAgLy8gQXNzZW1ibGUgdGhlIHR3byBzZXRzIG9m IGxpbmVzCi0gICB2dGtTbWFydFBvaW50ZXI8dnRrQXBwZW5kUG9seURhdGE+IGFsbGRhdGEgPSB2 dGtTbWFydFBvaW50ZXI8dnRrQXBwZW5kUG9seURhdGE+OjpOZXcgKCk7Ci0tICBhbGxkYXRhLT5B ZGRJbnB1dCAobGluZV8xX2RhdGEpOwotLSAgYWxsZGF0YS0+QWRkSW5wdXQgKGxpbmVfMl9kYXRh KTsKLSsgIGFsbGRhdGEtPkFkZElucHV0RGF0YSAobGluZV8xX2RhdGEpOwotKyAgYWxsZGF0YS0+ QWRkSW5wdXREYXRhIChsaW5lXzJfZGF0YSk7Ci0gCi0gICAvLyBDcmVhdGUgYW4gQWN0b3IKLSAg IHZ0a1NtYXJ0UG9pbnRlcjx2dGtMT0RBY3Rvcj4gYWN0b3I7Ci1AQCAtMTA5NCw3ICsxMDk0LDcg QEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVyOjpjcmVhdAotICAgZWxzZQotICAg ewotICAgICB2dGtTbWFydFBvaW50ZXI8dnRrRGF0YVNldE1hcHBlcj4gbWFwcGVyID0gdnRrU21h cnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+OjpOZXcgKCk7Ci0tICAgIG1hcHBlci0+U2V0SW5w dXQgKGRhdGEpOwotKyAgICBtYXBwZXItPlNldElucHV0RGF0YSAoZGF0YSk7Ci0gCi0gICAgIGlm ICh1c2Vfc2NhbGFycykKLSAgICAgewotQEAgLTExNjgsNyArMTE2OCw3IEBAIHBjbDo6dmlzdWFs aXphdGlvbjo6UENMVmlzdWFsaXplcjo6Y3JlYXQKLSAgIGVsc2UKLSAgIHsKLSAgICAgdnRrU21h cnRQb2ludGVyPHZ0a0RhdGFTZXRNYXBwZXI+IG1hcHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtE YXRhU2V0TWFwcGVyPjo6TmV3ICgpOwotLSAgICBtYXBwZXItPlNldElucHV0IChkYXRhKTsKLSsg ICAgbWFwcGVyLT5TZXRJbnB1dERhdGEgKGRhdGEpOwotIAotICAgICBpZiAodXNlX3NjYWxhcnMp Ci0gICAgIHsKLUBAIC0xNTQ4LDkgKzE1NDgsOSBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZp c3VhbGl6ZXI6OnNldFNoCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBQQ0xfSU5GTyAoIltw Y2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnNldFNoYXBlUmVuZGVyaW5nUHJvcGVy dGllc10gTm9ybWFscyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFzZXQsIGJ1dCBHb3VyYXVkIHNo YWRpbmcgd2FzIHJlcXVlc3RlZC4gRXN0aW1hdGluZyBub3JtYWxzLi4uXG4iKTsKLSAgICAgICAg ICAgICB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFOb3JtYWxzPiBub3JtYWxzID0gdnRrU21h cnRQb2ludGVyPHZ0a1BvbHlEYXRhTm9ybWFscz46Ok5ldyAoKTsKLS0gICAgICAgICAgICBub3Jt YWxzLT5TZXRJbnB1dCAoYWN0b3ItPkdldE1hcHBlciAoKS0+R2V0SW5wdXQgKCkpOwotKyAgICAg ICAgICAgIG5vcm1hbHMtPlNldElucHV0RGF0YSAoYWN0b3ItPkdldE1hcHBlciAoKS0+R2V0SW5w dXQgKCkpOwotICAgICAgICAgICAgIG5vcm1hbHMtPlVwZGF0ZSAoKTsKLS0gICAgICAgICAgICB2 dGtEYXRhU2V0TWFwcGVyOjpTYWZlRG93bkNhc3QgKGFjdG9yLT5HZXRNYXBwZXIgKCkpLT5TZXRJ bnB1dCAobm9ybWFscy0+R2V0T3V0cHV0ICgpKTsKLSsgICAgICAgICAgICB2dGtEYXRhU2V0TWFw cGVyOjpTYWZlRG93bkNhc3QgKGFjdG9yLT5HZXRNYXBwZXIgKCkpLT5TZXRJbnB1dERhdGEgKG5v cm1hbHMtPkdldE91dHB1dCAoKSk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgYWN0b3ItPkdl dFByb3BlcnR5ICgpLT5TZXRJbnRlcnBvbGF0aW9uVG9Hb3VyYXVkICgpOwotICAgICAgICAgICBi cmVhazsKLUBAIC0xNTYxLDkgKzE1NjEsOSBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3Vh bGl6ZXI6OnNldFNoCi0gICAgICAgICAgIHsKLSAgICAgICAgICAgICBQQ0xfSU5GTyAoIltwY2w6 OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OnNldFNoYXBlUmVuZGVyaW5nUHJvcGVydGll c10gTm9ybWFscyBkbyBub3QgZXhpc3QgaW4gdGhlIGRhdGFzZXQsIGJ1dCBQaG9uZyBzaGFkaW5n IHdhcyByZXF1ZXN0ZWQuIEVzdGltYXRpbmcgbm9ybWFscy4uLlxuIik7Ci0gICAgICAgICAgICAg dnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhTm9ybWFscz4gbm9ybWFscyA9IHZ0a1NtYXJ0UG9p bnRlcjx2dGtQb2x5RGF0YU5vcm1hbHM+OjpOZXcgKCk7Ci0tICAgICAgICAgICAgbm9ybWFscy0+ U2V0SW5wdXQgKGFjdG9yLT5HZXRNYXBwZXIgKCktPkdldElucHV0ICgpKTsKLSsgICAgICAgICAg ICBub3JtYWxzLT5TZXRJbnB1dERhdGEgKGFjdG9yLT5HZXRNYXBwZXIgKCktPkdldElucHV0KCkg KTsKLSAgICAgICAgICAgICBub3JtYWxzLT5VcGRhdGUgKCk7Ci0tICAgICAgICAgICAgdnRrRGF0 YVNldE1hcHBlcjo6U2FmZURvd25DYXN0IChhY3Rvci0+R2V0TWFwcGVyICgpKS0+U2V0SW5wdXQg KG5vcm1hbHMtPkdldE91dHB1dCAoKSk7Ci0rICAgICAgICAgICAgdnRrRGF0YVNldE1hcHBlcjo6 U2FmZURvd25DYXN0IChhY3Rvci0+R2V0TWFwcGVyICgpKS0+U2V0SW5wdXREYXRhIChub3JtYWxz LT5HZXRPdXRwdXQgKCkpOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIGFjdG9yLT5HZXRQcm9w ZXJ0eSAoKS0+U2V0SW50ZXJwb2xhdGlvblRvUGhvbmcgKCk7Ci0gICAgICAgICAgIGJyZWFrOwot QEAgLTIyNzcsNyArMjI3Nyw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6 YWRkTW8KLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlciA8dnRrVHJhbnNmb3JtRmlsdGVyPiB0cmFuc19m aWx0ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrVHJhbnNmb3JtRmlsdGVyPjo6TmV3ICgpOwotICAg dHJhbnNfZmlsdGVyLT5TZXRUcmFuc2Zvcm0gKHRyYW5zZm9ybSk7Ci0tICB0cmFuc19maWx0ZXIt PlNldElucHV0IChwb2x5ZGF0YSk7Ci0rICB0cmFuc19maWx0ZXItPlNldElucHV0RGF0YSAocG9s eWRhdGEpOwotICAgdHJhbnNfZmlsdGVyLT5VcGRhdGUoKTsKLSAKLSAgIC8vIENyZWF0ZSBhbiBB Y3RvcgotQEAgLTI3NTEsNyArMjc1MSw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFs aXplcjo6dXBkYXQKLSAgIC8vIFVwZGF0ZSB0aGUgZGF0YQotICAgdnRrUG9seURhdGEgKmRhdGEg PSBzdGF0aWNfY2FzdDx2dGtQb2x5RGF0YSo+KGFtX2l0LT5zZWNvbmQuYWN0b3ItPkdldE1hcHBl ciAoKS0+R2V0SW5wdXQgKCkpOwotICAgZGF0YS0+R2V0UG9pbnREYXRhICgpLT5TZXRTY2FsYXJz IChzY2FsYXJzKTsKLS0gIGRhdGEtPlVwZGF0ZSAoKTsKLSsgIC8vY29sb3JfaGFuZGxlci0+VXBk YXRlICgpOwotICAgLy8gTW9kaWZ5IHRoZSBtYXBwZXIKLSAgIGlmICh1c2VfdmJvc18pCi0gICB7 Ci1AQCAtMjc3MSw3ICsyNzcxLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVy Ojp1cGRhdAotICAgICB2dGtQb2x5RGF0YU1hcHBlciogbWFwcGVyID0gc3RhdGljX2Nhc3Q8dnRr UG9seURhdGFNYXBwZXIqPihhbV9pdC0+c2Vjb25kLmFjdG9yLT5HZXRNYXBwZXIgKCkpOwotICAg ICBtYXBwZXItPlNldFNjYWxhclJhbmdlIChtaW5tYXgpOwotICAgICBtYXBwZXItPlNldFNjYWxh ck1vZGVUb1VzZVBvaW50RGF0YSAoKTsKLS0gICAgbWFwcGVyLT5TZXRJbnB1dCAoZGF0YSk7Ci0r ICAgIG1hcHBlci0+U2V0SW5wdXREYXRhIChkYXRhKTsKLSAgICAgLy8gTW9kaWZ5IHRoZSBhY3Rv cgotICAgICBhbV9pdC0+c2Vjb25kLmFjdG9yLT5TZXRNYXBwZXIgKG1hcHBlcik7Ci0gICAgIGFt X2l0LT5zZWNvbmQuYWN0b3ItPk1vZGlmaWVkICgpOwotQEAgLTI4NzYsNyArMjg3Niw3IEBAIHBj bDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6YWRkUG8KLSAgICAgcG9seV9ncmlkLT5B bGxvY2F0ZSAoMSwgMSk7Ci0gICAgIHBvbHlfZ3JpZC0+SW5zZXJ0TmV4dENlbGwgKHBvbHlnb24t PkdldENlbGxUeXBlICgpLCBwb2x5Z29uLT5HZXRQb2ludElkcyAoKSk7Ci0gICAgIHBvbHlfZ3Jp ZC0+U2V0UG9pbnRzIChwb2x5X3BvaW50cyk7Ci0tICAgIHBvbHlfZ3JpZC0+VXBkYXRlICgpOwot KyAgICAvL3BvbHlfZ3JpZC0+VXBkYXRlICgpOwotIAotICAgICBjcmVhdGVBY3RvckZyb21WVEtE YXRhU2V0IChwb2x5X2dyaWQsIGFjdG9yKTsKLSAgICAgYWN0b3ItPkdldFByb3BlcnR5ICgpLT5T ZXRSZXByZXNlbnRhdGlvblRvV2lyZWZyYW1lICgpOwotQEAgLTMwMDEsNyArMzAwMSw3IEBAIHBj bDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXplcjo6dXBkYXQKLSAgIGNlbGxzLT5TcXVlZXpl ICgpOwotICAgLy8gU2V0IHRoZSB0aGUgdmVydGljZXMKLSAgIHBvbHlkYXRhLT5TZXRTdHJpcHMg KGNlbGxzKTsKLS0gIHBvbHlkYXRhLT5VcGRhdGUgKCk7Ci0rICAvL3BvbHlkYXRhLT5VcGRhdGUg KCk7Ci0gCi0gICByZXR1cm4gKHRydWUpOwotIH0KLUBAIC0zMDU2LDcgKzMwNTYsNyBAQCBwY2w6 OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmFkZFBvCi0gCi0gICAvLyBTZXR1cCBhY3Rv ciBhbmQgbWFwcGVyCi0gICB2dGtTbWFydFBvaW50ZXIgPCB2dGtQb2x5RGF0YU1hcHBlciA+IG1h cHBlciA9IHZ0a1NtYXJ0UG9pbnRlcjx2dGtQb2x5RGF0YU1hcHBlcj46Ok5ldyAoKTsKLS0gIG1h cHBlci0+U2V0SW5wdXQgKHBvbHlEYXRhKTsKLSsgIG1hcHBlci0+U2V0SW5wdXREYXRhKHBvbHlE YXRhKTsKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlciA8IHZ0a0FjdG9yID4gYWN0b3IgPSB2dGtTbWFy dFBvaW50ZXI8dnRrQWN0b3I+OjpOZXcgKCk7Ci0gICBhY3Rvci0+U2V0TWFwcGVyIChtYXBwZXIp OwotQEAgLTMxOTcsNyArMzE5Nyw3IEBAIHBjbDo6dmlzdWFsaXphdGlvbjo6UENMVmlzdWFsaXpl cjo6cmVuZGUKLSAKLSAgIHZ0a1NtYXJ0UG9pbnRlcjx2dGtUcmFuc2Zvcm1GaWx0ZXI+IHRyYW5z X2ZpbHRlcl9jZW50ZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrVHJhbnNmb3JtRmlsdGVyPjo6TmV3 ICgpOwotICAgdHJhbnNfZmlsdGVyX2NlbnRlci0+U2V0VHJhbnNmb3JtICh0cmFuc19jZW50ZXIp OwotLSAgdHJhbnNfZmlsdGVyX2NlbnRlci0+U2V0SW5wdXQgKHBvbHlkYXRhKTsKLSsgIHRyYW5z X2ZpbHRlcl9jZW50ZXItPlNldElucHV0RGF0YSAocG9seWRhdGEpOwotICAgdHJhbnNfZmlsdGVy X2NlbnRlci0+VXBkYXRlICgpOwotIAotICAgdnRrU21hcnRQb2ludGVyPHZ0a1BvbHlEYXRhTWFw cGVyPiBtYXBwZXIgPSB2dGtTbWFydFBvaW50ZXI8dnRrUG9seURhdGFNYXBwZXI+OjpOZXcgKCk7 Ci1AQCAtMzI1Miw3ICszMjUyLDcgQEAgcGNsOjp2aXN1YWxpemF0aW9uOjpQQ0xWaXN1YWxpemVy OjpyZW5kZQotIAotICAgLy8gR2V0IGNhbWVyYSBwb3NpdGlvbnMKLSAgIHZ0a1BvbHlEYXRhICpz cGhlcmUgPSBzdWJkaXZpZGUtPkdldE91dHB1dCAoKTsKLS0gIHNwaGVyZS0+VXBkYXRlICgpOwot KyAgc3ViZGl2aWRlLT5VcGRhdGUgKCk7Ci0gCi0gICBzdGQ6OnZlY3RvcjxFaWdlbjo6VmVjdG9y M2Y+IGNhbV9wb3NpdGlvbnM7Ci0gICBpZiAoIXVzZV92ZXJ0aWNlcykKLUBAIC0zNjc5LDcgKzM2 NzksNyBAQCBwY2w6OnZpc3VhbGl6YXRpb246OlBDTFZpc3VhbGl6ZXI6OmZyb21ICi0gICAvLyBD b252ZXJ0IHRoZSBQb2ludENsb3VkIHRvIFZUSyBQb2x5RGF0YQotICAgY29udmVydFBvaW50Q2xv dWRUb1ZUS1BvbHlEYXRhIChnZW9tZXRyeV9oYW5kbGVyLCBwb2x5ZGF0YSwgaW5pdGNlbGxzKTsK LSAgIC8vIHVzZSB0aGUgZ2l2ZW4gZ2VvbWV0cnkgaGFuZGxlcgotLSAgcG9seWRhdGEtPlVwZGF0 ZSAoKTsKLSsgIC8vcG9seWRhdGEtPlVwZGF0ZSAoKTsKLSAKLSAgIC8vIEdldCB0aGUgY29sb3Jz IGZyb20gdGhlIGhhbmRsZXIKLSAgIGJvb2wgaGFzX2NvbG9ycyA9IGZhbHNlOwotZGlmZiAtdXAg Li92aXN1YWxpemF0aW9uL3NyYy92dGsvdnRrVmVydGV4QnVmZmVyT2JqZWN0TWFwcGVyLmN4eC52 dGs2IC4vdmlzdWFsaXphdGlvbi9zcmMvdnRrL3Z0a1ZlcnRleEJ1ZmZlck9iamVjdE1hcHBlci5j eHgKLS0tLSAuL3Zpc3VhbGl6YXRpb24vc3JjL3Z0ay92dGtWZXJ0ZXhCdWZmZXJPYmplY3RNYXBw ZXIuY3h4LnZ0azYJMjAxMy0wOC0yMSAwMjozMjo1MS4wMjc0OTM4ODEgKzAwMDAKLSsrKyAuL3Zp c3VhbGl6YXRpb24vc3JjL3Z0ay92dGtWZXJ0ZXhCdWZmZXJPYmplY3RNYXBwZXIuY3h4CTIwMTMt MDgtMjEgMDI6NDI6MzAuMTQwNTgwODk3ICswMDAwCi1AQCAtMTQ2LDcgKzE0Niw3IEBAIHZvaWQg dnRrVmVydGV4QnVmZmVyT2JqZWN0TWFwcGVyOjpTZXRJbnAKLSAvLyAgc3RkOjpjb3V0IDw8ICJT ZXRJbnB1dCIgPDwgZW5kbDsKLSAgIGlmKGlucHV0KQotICAgewotLSAgICB0aGlzLT5TZXRJbnB1 dENvbm5lY3Rpb24oMCwgaW5wdXQtPkdldFByb2R1Y2VyUG9ydCgpKTsKLSsgICAgdGhpcy0+U2V0 SW5wdXQoaW5wdXQpOwotICAgfQotICAgZWxzZQotICAgewotQEAgLTE2Miw3ICsxNjIsNyBAQCB2 b2lkIHZ0a1ZlcnRleEJ1ZmZlck9iamVjdE1hcHBlcjo6U2V0SW5wCi0gLy8gIHN0ZDo6Y291dCA8 PCAiU2V0SW5wdXQiIDw8IGVuZGw7Ci0gICBpZihpbnB1dCkKLSAgIHsKLS0gICAgdGhpcy0+U2V0 SW5wdXRDb25uZWN0aW9uKDAsIGlucHV0LT5HZXRQcm9kdWNlclBvcnQoKSk7Ci0rICAgIHRoaXMt PlNldElucHV0KGlucHV0KTsKLSAgIH0KLSAgIGVsc2UKLSAgIHsKCmRpZmYgLS1naXQgYS9wY2wu c3BlYyBiL3BjbC5zcGVjCmluZGV4IDRjN2U1NjIuLmFmNGU0ZTcgMTAwNjQ0Ci0tLSBhL3BjbC5z cGVjCisrKyBiL3BjbC5zcGVjCkBAIC0xLDIwICsxLDIzIEBACiAlZ2xvYmFsIGFwaXZlcnNpb24g MS43CislZ2xvYmFsIGNvbW1pdCAwZGRmMTFhNmFkMTE3NWI2ZjFjMjUzZGEwMDNkZTIwYzEyOTVj ZGUwCislZ2xvYmFsIHNob3J0Y29tbWl0ICUoYz0le2NvbW1pdH07IGVjaG8gJHtjOjA6N30pCiAK IE5hbWU6ICAgICAgICAgICBwY2wKLVZlcnNpb246ICAgICAgICAxLjcuMQotUmVsZWFzZTogICAg ICAgIDUlez9kaXN0fQorVmVyc2lvbjogICAgICAgIDEuNy4yCitSZWxlYXNlOiAgICAgICAgMSV7 P2Rpc3R9CiBTdW1tYXJ5OiAgICAgICAgTGlicmFyeSBmb3IgcG9pbnQgY2xvdWQgcHJvY2Vzc2lu ZwogCiBHcm91cDogICAgICAgICAgU3lzdGVtIEVudmlyb25tZW50L0xpYnJhcmllcwogTGljZW5z ZTogICAgICAgIEJTRAogVVJMOiAgICAgICAgICAgIGh0dHA6Ly9wb2ludGNsb3Vkcy5vcmcvCi1T b3VyY2UwOiAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1BvaW50Q2xvdWRMaWJyYXJ5L3BjbC9h cmNoaXZlL3BjbC0le3ZlcnNpb259LnRhci5negotIyBQYXRjaCB0byBjb21waWxlIGFnYWluc3Qg dnRrIDYuMC4wCi1QYXRjaDA6ICAgICAgICAgJXtuYW1lfS12dGs2LnBhdGNoCitTb3VyY2UwOiAg ICAgICAgaHR0cHM6Ly9naXRodWIuY29tL1BvaW50Q2xvdWRMaWJyYXJ5LyV7bmFtZX0vYXJjaGl2 ZS8le2NvbW1pdH0vJXtuYW1lfS0le2NvbW1pdH0udGFyLmd6CisjIE9ubHkgZW5hYmxlIHNzZTIs IGFuZCBvbmx5IG9uIHg4Nl82NAorUGF0Y2gwOiAgICAgICAgICV7bmFtZX0tMS43LjItc3NlMi5w YXRjaAogIyBQYXRjaCB0byBjb21waWxlIGFnYWluc3Qgc3lzdGVtIG1ldHNsaWIKLVBhdGNoMTog ICAgICAgICAle25hbWV9LTEuNy4xLW1ldHNsaWIucGF0Y2gKK1BhdGNoMTogICAgICAgICAle25h bWV9LTEuNy4yLW1ldHNsaWIucGF0Y2gKICMgUGF0Y2ggZm9yIFBDTENvbmZpZy5jbWFrZSB0byBm aW5kIHBjbAogUGF0Y2gyOiAgICAgICAgICV7bmFtZX0tMS43LjEtZmVkb3JhLnBhdGNoCisKICMg Rm9yIHBsYWluIGJ1aWxkaW5nCiBCdWlsZFJlcXVpcmVzOiAgY21ha2UsIGdjYy1jKyssIGJvb3N0 LWRldmVsCiAjIERvY3VtZW50YXRpb24KQEAgLTI2LDcgKzI5LDcgQEAgQnVpbGRSZXF1aXJlczog IHRldGV4LWxhdGV4CiAlZW5kaWYKIAogIyBtYW5kYXRvcnkKLUJ1aWxkUmVxdWlyZXM6ICBlaWdl bjMtc3RhdGljLCBmbGFubi1kZXZlbCwgY21pbnBhY2stZGV2ZWwsIHZ0ay1kZXZlbCwgZ2wycHMt ZGV2ZWwsIGhkZjUtZGV2ZWwsIHB5dGhvbi1kZXZlbCwgbGlieG1sMi1kZXZlbCwgbWV0c2xpYi1z dGF0aWMKK0J1aWxkUmVxdWlyZXM6ICBlaWdlbjMtc3RhdGljLCBmbGFubi1kZXZlbCwgY21pbnBh Y2stZGV2ZWwsIHZ0ay1kZXZlbCwgZ2wycHMtZGV2ZWwsIGhkZjUtZGV2ZWwsIHB5dGhvbi1kZXZl bCwgbGlieG1sMi1kZXZlbCwgbWV0c2xpYi1zdGF0aWMsIG5ldGNkZi1jeHgtZGV2ZWwsIGpzb25j cHAtZGV2ZWwKICMgb3B0aW9uYWwKIEJ1aWxkUmVxdWlyZXM6ICBxaHVsbC1kZXZlbCwgbGlidXNi MS1kZXZlbCwgZ3Rlc3QtZGV2ZWwsIHF0d2Via2l0LWRldmVsLCBweXRob24tc3BoaW54CiAlaWZh cmNoICV7aXg4Nn0geDg2XzY0CkBAIC03OSw4ICs4Miw4IEBAIExpYnJhcnkuCiAKIAogJXByZXAK LSVzZXR1cCAtcSAtbiAle25hbWV9LSV7bmFtZX0tJXt2ZXJzaW9ufQotJXBhdGNoMCAtcDEgLWIg LnZ0azYKKyVzZXR1cCAtcW4gJXtuYW1lfS0le2NvbW1pdH0KKyVwYXRjaDAgLXAxIC1iIC5zc2Uy CiAlcGF0Y2gxIC1wMCAtYiAubWV0c2xpYgogJXBhdGNoMiAtcDAgLWIgLmZlZG9yYQogIyBKdXN0 IHRvIG1ha2UgaXQgb2J2aW91cyB3ZSdyZSBub3QgdXNpbmcgYW55IG9mIHRoZXNlCkBAIC05NSwx MCArOTgsMTQgQEAgc2VkIC1pICJzLywgJ3NwaGlueGNvbnRyaWIuZG94eWxpbmsuZG94eWxpbmsn Ly9nIiBkb2MvYWR2YW5jZWQvY29udGVudC9jb25mLnB5IGQKIG1rZGlyIGJ1aWxkCiBwdXNoZCBi dWlsZAogJWNtYWtlIFwKKyAgLURXSVRIX0RPQ1M9T04gXAorICAtRFdJVEhfVFVUT1JJQUxTPU9O IFwKICAgLURDTUFLRV9CVUlMRF9UWVBFPU5PTkUgXAorICAtREJVSUxEX2FwcHM9T04gXAorICAt REJVSUxEX2dsb2JhbF90ZXN0cz1PRkYgXAogICAtRE9QRU5OSV9JTkNMVURFX0RJUjpQQVRIPS91 c3IvaW5jbHVkZS9uaSBcCi0gIC1ETElCX0lOU1RBTExfRElSPSQoZWNobyAle19saWJkaXJ9IHwg c2VkIC1lICdzfCV7X3ByZWZpeH0vfHwnKSBcCi0laWZhcmNoIHg4Nl82NAorICAtRExJQl9JTlNU QUxMX0RJUj0le19saWJ9IFwKKyVpZmFyY2ggeDg2XzY0ICAlez9peDg2fToKICAgLURQQ0xfRU5B QkxFX1NTRT1PTiBcCiAlZWxzZQogICAtRFBDTF9FTkFCTEVfU1NFPU9GRiBcCkBAIC0xMDksNDAg KzExNiwzMiBAQCBwdXNoZCBidWlsZAogICAuLgogCiAjIERvbid0IHVzZSBtZmxhZ3MsIHdlJ3Jl IGhpdHRpbmcgb3V0IG9mIG1lbW9yeSBlcnJvcnMgb24gdGhlIGtvamkgYnVpbGRlcnMKLW1ha2Ug LWogMwotbWFrZSBkb2MKLXBvcGQKLQotcHVzaGQgZG9jL292ZXJ2aWV3Ci1tYWtlCi1wb3BkCi0K LXB1c2hkIGRvYy90dXRvcmlhbHMKLXNlZCAtaSAicy8sICdzcGhpbnhjb250cmliLmRveHlsaW5r LmRveHlsaW5rJy8vIiBjb250ZW50L2NvbmYucHkKLW1ha2UKK21ha2UgJXs/X3NtcF9tZmxhZ3N9 CittYWtlIGRvYyB0dXRvcmlhbHMgYWR2YW5jZWQKIHBvcGQKIAotcHVzaGQgZG9jL2FkdmFuY2Vk Ci1tYWtlCi1wb3BkCi0KLQogJWluc3RhbGwKIHB1c2hkIGJ1aWxkCiBtYWtlIGluc3RhbGwgREVT VERJUj0kUlBNX0JVSUxEX1JPT1QKKworIyBSZW1vdmUgbGlidG9vbCBhcmNoaXZlcwogZmluZCAk UlBNX0JVSUxEX1JPT1QgLW5hbWUgJyoubGEnIC1leGVjIHJtIC1mIHt9ICc7JwogCiAjIEp1c3Qg YSBkdW1teSB0ZXN0CiBybSAtZiAkUlBNX0JVSUxEX1JPT1Qle19iaW5kaXJ9L3RpbWVkX3RyaWdn ZXJfdGVzdAogCi0jbXYgJFJQTV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZG9jLyV7bmFtZX0gJFJQ TV9CVUlMRF9ST09UJXtfZGF0YWRpcn0vZG9jLyV7bmFtZX0tJXt2ZXJzaW9ufQotcm0gLXJmICRS UE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2RvYy8le25hbWV9CisjIFJlbW92ZSBpbnN0YWxsZWQg ZG9jdW1lbnRhdGlvbiAod2lsbCB1c2UgJWRvYykKK3JtIC1yZiAkUlBNX0JVSUxEX1JPT1Qle19k YXRhZGlyfS9kb2MKKworIyBSZW5hbWUgdGhlIGRvY3VtZW50YXRpb24gZm9sZGVycyBmcm9tICJo dG1sIgogbXYgZG9jL2RveHlnZW4vaHRtbCBkb2MvZG94eWdlbi9hcGkKK212IGRvYy90dXRvcmlh bHMvaHRtbCBkb2MvdHV0b3JpYWxzL3R1dG9yaWFscworbXYgZG9jL2FkdmFuY2VkL2h0bWwgZG9j L2FkdmFuY2VkL2FkdmFuY2VkCiAKK2NwIC1mciAuLi9kb2MvYWR2YW5jZWQvY29udGVudC9maWxl cy8qIGRvYy9hZHZhbmNlZC9hZHZhbmNlZAorY3AgLWZyIC4uL2RvYy90dXRvcmlhbHMvY29udGVu dC9zb3VyY2VzIGRvYy90dXRvcmlhbHMvdHV0b3JpYWxzCiBwb3BkCiAKLW12IGRvYy90dXRvcmlh bHMvaHRtbCBkb2MvdHV0b3JpYWxzL3R1dG9yaWFscwotCiBmb3IgZiBpbiAkUlBNX0JVSUxEX1JP T1Qle19iaW5kaXJ9L3tvcGVubmlfaW1hZ2UscGNkX2dyYWJiZXJfdmlld2VyLHBjZF92aWV3ZXIs b3Blbm5pX3ZpZXdlcixvbmlfdmlld2VyfTsgZG8KIAlpZiBbIC1mICRmIF07IHRoZW4KIAkJbXYg JGYgJFJQTV9CVUlMRF9ST09UJXtfYmluZGlyfS9wY2xfJChiYXNlbmFtZSAkZikKQEAgLTE1Mywx NyArMTUyLDYgQEAgcm0gJFJQTV9CVUlMRF9ST09UJXtfYmluZGlyfS97b3Blbm5pX2Zhc3RfbWVz aCxvcGVubmlfaWlfbm9ybWFsX2VzdGltYXRpb24sb3Blbm4KIG1rZGlyIC1wICRSUE1fQlVJTERf Uk9PVCV7X2xpYmRpcn0vY21ha2UvcGNsCiBtdiAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS8l e25hbWV9LSovKi5jbWFrZSAkUlBNX0JVSUxEX1JPT1Qle19saWJkaXJ9L2NtYWtlL3BjbAogCi0j IFJlbW92ZSBpbnN0YWxsZWQgZG9jdW1lbnRhdGlvbiwgd2lsbCBhZGQgd2l0aCBkb2MgdGFncyBs YXRlcgotcm0gLXJmICRSUE1fQlVJTERfUk9PVCV7X2RhdGFkaXJ9L2RvYy8le25hbWV9LSV7YXBp dmVyc2lvbn0KLQotI212ICRSUE1fQlVJTERfUk9PVCV7X2xpYmRpcn0vcGNsLyouY21ha2UgJFJQ TV9CVUlMRF9ST09UJXtfbGliZGlyfS9jbWFrZS9wY2wKLSNybWRpciAkUlBNX0JVSUxEX1JPT1Ql e19saWJkaXJ9L3BjbAotCi0jIFRoaXMgaXMgcmVxdWlyZWQgdG8gZml4IGNyYXNoZXMgaW4gcHJv Z3JhbXMgbGlua2VkIGFnYWluc3QgcGNsX3Zpc3VhbGl6YXRpb24gbGliCi0jc2VkIC1pIC1lICdz L3Z0a1dpZGdldHMvdnRrUmVuZGVyaW5nLycgJFJQTV9CVUlMRF9ST09UJXtfbGliZGlyfS9jbWFr ZS9wY2wvUENMRGVwZW5kcy1yZWxlYXNlLmNtYWtlCi0KLSMgQXQgdGhlIG1vbWVudCBmYWlscyBk dWUgdG8gUlBBVEggcHJvYmxlbQotIyAoUlBBVEggbm90IGJ1aWx0IGludG8gdGVzdCBhcHBzIGFz IHJlcXVpcmVkKQogIyVjaGVjawogI21ha2UgLUMgYnVpbGQgdGVzdCB8fCB0cnVlCiAKQEAgLTE5 MCwxMCArMTc4LDEzIEBAIHJtIC1yZiAkUlBNX0JVSUxEX1JPT1Qle19kYXRhZGlyfS9kb2MvJXtu YW1lfS0le2FwaXZlcnNpb259CiAKICVmaWxlcyBkb2MKICVkb2MgYnVpbGQvZG9jL2RveHlnZW4v YXBpCi0lZG9jIGRvYy90dXRvcmlhbHMvdHV0b3JpYWxzCi0KKyVkb2MgYnVpbGQvZG9jL3R1dG9y aWFscy90dXRvcmlhbHMKKyVkb2MgYnVpbGQvZG9jL2FkdmFuY2VkL2FkdmFuY2VkCiAKICVjaGFu Z2Vsb2cKKyogVHVlIERlYyAxNiAyMDE0IFJpY2ggTWF0dGVzIDxyaWNobWF0dGVzQGdtYWlsLmNv bT4gLSAxLjcuMi0xCistIFVwZGF0ZSB0byByZWxlYXNlIDEuNy4yCisKICogU3VuIEF1ZyAxNyAy MDE0IEZlZG9yYSBSZWxlYXNlIEVuZ2luZWVyaW5nIDxyZWwtZW5nQGxpc3RzLmZlZG9yYXByb2pl Y3Qub3JnPiAtIDEuNy4xLTUKIC0gUmVidWlsdCBmb3IgaHR0cHM6Ly9mZWRvcmFwcm9qZWN0Lm9y Zy93aWtpL0ZlZG9yYV8yMV8yMl9NYXNzX1JlYnVpbGQKIAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMg Yi9zb3VyY2VzCmluZGV4IGU2ZjYzNDYuLjU0ODQyOGEgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysr IGIvc291cmNlcwpAQCAtMSArMSBAQAotY2U4ZmExNzY2MjU0NGViNGJiN2IwODQxOTFhNjFhZDUg IHBjbC0xLjcuMS50YXIuZ3oKK2UzMGM4OTU0YmNkNjAwOThiMzZlZjc0ZGMwMThhMWZmICBwY2wt MGRkZjExYTZhZDExNzViNmYxYzI1M2RhMDAzZGUyMGMxMjk1Y2RlMC50YXIuZ3oK