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: Than Ngo To: git-commits@fedoraproject.org Subject: [rpms/chromium] epel9-next: - update to 124.0.6367.155 Date: Fri, 07 Aug 2026 16:06:22 GMT Message-ID: <178611878263.1.4477515162229701408.rpms-chromium-a85a4df5dc78@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: a85a4df5dc78b511d11e04a8431f556a1ffd6833 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvY2hyb21pdW0KICAgICAgICAgICAgQnJhbmNoIDogZXBlbDktbmV4dAogICAg ICAgICAgICBDb21taXQgOiBhODVhNGRmNWRjNzhiNTExZDExZTA0YTg0MzFmNTU2YTFmZmQ2ODMz CiAgICAgICAgICAgIEF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+CiAgICAgICAg ICAgIERhdGUgICA6IDIwMjQtMDUtMDhUMTE6MzM6MjUrMDI6MDAKICAgICAgICAgICAgU3RhdHMg IDogKzIxOTMvLTIxMjQgaW4gMTcgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczov L3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2Nocm9taXVtL2MvYTg1YTRkZjVkYzc4YjUxMWQx MWUwNGE4NDMxZjU1NmExZmZkNjgzMz9icmFuY2g9ZXBlbDktbmV4dAoKICAgICAgICAgICAgTG9n OgogICAgICAgICAgICAtIHVwZGF0ZSB0byAxMjQuMC42MzY3LjE1NQogICogSGlnaCBDVkUtMjAy NC00NTU4OiBVc2UgYWZ0ZXIgZnJlZSBpbiBBTkdMRQogICogSGlnaCBDVkUtMjAyNC00NTU5OiBI ZWFwIGJ1ZmZlciBvdmVyZmxvdyBpbiBXZWJBdWRpbwotIHJlZnJlc2hlZCBwYXRjaGVzCgotLS0K ZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMS1udWxscHRyX3Qtd2l0aG91dC1uYW1lc3BhY2Utc3Rk LnBhdGNoIGIvY2hyb21pdW0tMTIxLW51bGxwdHJfdC13aXRob3V0LW5hbWVzcGFjZS1zdGQucGF0 Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkZWZjMzkuLjAwMDAwMDAKLS0tIGEv Y2hyb21pdW0tMTIxLW51bGxwdHJfdC13aXRob3V0LW5hbWVzcGFjZS1zdGQucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjAuMC42MDk5LjU2 L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvcGFpbnQvZnJhZ21lbnRfZGF0YV9pdGVy YXRvci5oLnRoYW4gY2hyb21pdW0tMTIwLjAuNjA5OS41Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9jb3JlL3BhaW50L2ZyYWdtZW50X2RhdGFfaXRlcmF0b3IuaAotLS0tIGNocm9taXVtLTEy MC4wLjYwOTkuNTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9mcmFnbWVu dF9kYXRhX2l0ZXJhdG9yLmgudGhhbgkyMDIzLTEyLTA0IDEwOjIwOjQ1LjM1MDU0MDg5NyArMDEw MAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv Y29yZS9wYWludC9mcmFnbWVudF9kYXRhX2l0ZXJhdG9yLmgJMjAyMy0xMi0wNCAxMDoyMzoxNy4z MzUzMzk2NzAgKzAxMDAKLUBAIC0yMSw3ICsyMSw3IEBAIGNsYXNzIEZyYWdtZW50RGF0YUl0ZXJh dG9yQmFzZSB7Ci0gCi0gIHB1YmxpYzoKLSAgIGV4cGxpY2l0IEZyYWdtZW50RGF0YUl0ZXJhdG9y QmFzZShIZWFkJiBoZWFkKSA6IGZyYWdtZW50X2hlYWRfKGhlYWQpIHt9Ci0tICBleHBsaWNpdCBG cmFnbWVudERhdGFJdGVyYXRvckJhc2UobnVsbHB0cl90KSB7fQotKyAgZXhwbGljaXQgRnJhZ21l bnREYXRhSXRlcmF0b3JCYXNlKHN0ZDo6bnVsbHB0cl90KSB7fQotIAotICAgRGF0YSogR2V0RnJh Z21lbnREYXRhKCkgY29uc3QgewotICAgICByZXR1cm4gIUlzRG9uZSgpID8gJmZyYWdtZW50X2hl YWRfLmF0KGlkeF8pIDogbnVsbHB0cjsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjItcnVzdC1j bGFuZ19saWIucGF0Y2ggYi9jaHJvbWl1bS0xMjItcnVzdC1jbGFuZ19saWIucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExMWI1NzAuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0t MTIyLXJ1c3QtY2xhbmdfbGliLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAot ZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9idWlsZC9jb25maWcvY2xhbmcvQlVJTEQu Z24ucnVzdC1jbGFuZ19saWIgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9idWlsZC9jb25maWcvY2xh bmcvQlVJTEQuZ24KLS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2J1aWxkL2NvbmZpZy9jbGFu Zy9CVUlMRC5nbi5ydXN0LWNsYW5nX2xpYgkyMDI0LTAxLTEwIDE2OjQzOjAxLjAwMDAwMDAwMCAr MDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvYnVpbGQvY29uZmlnL2NsYW5nL0JVSUxE LmduCTIwMjQtMDEtMjAgMTk6NTE6MzguNDgxOTkyNzk5ICswMTAwCi1AQCAtMTEyLDYgKzExMiw3 IEBAIHRlbXBsYXRlKCJjbGFuZ19saWIiKSB7Ci0gICAgICAgX3ByZWZpeCA9ICJsaWIiCi0gICAg ICAgX3N1ZmZpeCA9ICIiCi0gICAgICAgX2V4dCA9ICJhIgotKyAgICAgIF9saWJwcmVmaXggPSAi IgotICAgICAgIGlmIChpc193aW4pIHsKLSAgICAgICAgIF9kaXIgPSAid2luZG93cyIKLSAgICAg ICAgIF9wcmVmaXggPSAiIgotQEAgLTEyNyw3ICsxMjgsMzMgQEAgdGVtcGxhdGUoImNsYW5nX2xp YiIpIHsKLSAgICAgICAgIH0KLSAgICAgICB9IGVsc2UgaWYgKGlzX2FwcGxlKSB7Ci0gICAgICAg ICBfZGlyID0gImRhcndpbiIKLS0gICAgICB9IGVsc2UgaWYgKGlzX2xpbnV4IHx8IGlzX2Nocm9t ZW9zKSB7Ci0rICAgICAgfSBlbHNlIGlmIChpc19saW51eCkgewotKyAgICAgICAgaWYgKGN1cnJl bnRfY3B1ID09ICJ4NjQiKSB7Ci0rICAgICAgICAgIF9kaXIgPSAieDg2XzY0LXJlZGhhdC1saW51 eC1nbnUiCi0rICAgICAgICAgIF9zdWZmaXggPSIteDg2XzY0IgotKyAgICAgICAgfSBlbHNlIGlm IChjdXJyZW50X2NwdSA9PSAieDg2IikgewotKyAgICAgICAgICBfZGlyID0gImkzODYtcmVkaGF0 LWxpbnV4LWdudSIKLSsgICAgICAgICAgX3N1ZmZpeCA9ICItaTM4NiIKLSsgICAgICAgIH0gZWxz ZSBpZiAoY3VycmVudF9jcHUgPT0gImFybTY0IikgewotKyAgICAgICAgICBfZGlyID0gImFhcmNo NjQtcmVkaGF0LWxpbnV4LWdudSIKLSsgICAgICAgICAgX3N1ZmZpeCA9ICItYWFyY2g2NCIKLSsg ICAgICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gImFybSIpIHsKLSsgICAgICAgICAgX2Rp ciA9ICJhcm1oZi1yZWRoYXQtbGludXgtZ251IgotKyAgICAgICAgICBfc3VmZml4ID0gIi1hcm1o ZiIKLSsgICAgICAgIH0gZWxzZSBpZiAoY3VycmVudF9jcHUgPT0gInBwYzY0IikgewotKyAgICAg ICAgICBfZGlyID0gInBwYzY0bGUtcmVkaGF0LWxpbnV4LWdudSIKLSsgICAgICAgICAgX3N1ZmZp eCA9ICItcHBjNjRsZSIKLSsgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgIGFzc2VydChmYWxz ZSkgICMgVW5oYW5kbGVkIGNwdSB0eXBlCi0rICAgICAgICB9Ci0rICAgICAgICAjIGRpZmZlcmVu dCBjbGFuZyBsaWIgZGlyIGluIGZlZG9yYS9lcGVsCi0rICAgICAgICBpZiAoY2xhbmdfdmVyc2lv biA9PSAiMTciIHx8IGNsYW5nX3ZlcnNpb24gPT0gIjE4IikgewotKyAgICAgICAgICBfc3VmZml4 ID0gIiIKLSsgICAgICAgIH0gZWxzZSBpZiAoY2xhbmdfdmVyc2lvbiA9PSAiMTYiIHx8IGNsYW5n X3ZlcnNpb24gPT0gIjE0IikgewotKyAgICAgICAgICBfbGlicHJlZml4ID0gIjY0IgotKyAgICAg ICAgICBfZGlyID0gIiIKLSsgICAgICAgIH0KLSsgICAgICB9IGVsc2UgaWYgKGlzX2Nocm9tZW9z KSB7Ci0gICAgICAgICBpZiAoY3VycmVudF9jcHUgPT0gIng2NCIpIHsKLSAgICAgICAgICAgX2Rp ciA9ICJ4ODZfNjQtdW5rbm93bi1saW51eC1nbnUiCi0gICAgICAgICB9IGVsc2UgaWYgKGN1cnJl bnRfY3B1ID09ICJ4ODYiKSB7Ci1AQCAtMTY2LDcgKzE5Myw3IEBAIHRlbXBsYXRlKCJjbGFuZ19s aWIiKSB7Ci0gICAgICAgICBhc3NlcnQoZmFsc2UpICAjIFVuaGFuZGxlZCB0YXJnZXQgcGxhdGZv cm0KLSAgICAgICB9Ci0gCi0tICAgICAgX2NsYW5nX2xpYl9kaXIgPSAiJGNsYW5nX2Jhc2VfcGF0 aC9saWIvY2xhbmcvJGNsYW5nX3ZlcnNpb24vbGliIgotKyAgICAgIF9jbGFuZ19saWJfZGlyID0g IiRjbGFuZ19iYXNlX3BhdGgvbGliJHtfbGlicHJlZml4fS9jbGFuZy8kY2xhbmdfdmVyc2lvbi9s aWIiCi0gICAgICAgX2xpYl9maWxlID0gIiR7X3ByZWZpeH1jbGFuZ19ydC4ke19saWJuYW1lfSR7 X3N1ZmZpeH0uJHtfZXh0fSIKLSAgICAgICBsaWJzID0gWyAiJF9jbGFuZ19saWJfZGlyLyRfZGly LyRfbGliX2ZpbGUiIF0KLSAgICAgfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMy1jb25zdGV4 cHIucGF0Y2ggYi9jaHJvbWl1bS0xMjMtY29uc3RleHByLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCBhYTU5YzNlLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyMy1jb25zdGV4 cHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1 bS0xMjIuMC42MjYxLjI5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9jb21tb24vdW5pcXVlX2lk cy5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Nv bW1vbi91bmlxdWVfaWRzLmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2NvbXBvbmVudHMv YXV0b2ZpbGwvY29yZS9jb21tb24vdW5pcXVlX2lkcy5oLm1lCTIwMjQtMDItMTMgMTM6MDc6MjQu OTgyMTg0NDg1ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvY29tbW9uL3VuaXF1ZV9pZHMuaAkyMDI0LTAyLTEzIDEzOjA3OjQ1LjUxMDU1 MTU4OSArMDEwMAotQEAgLTEzNyw3ICsxMzcsNyBAQCBzdHJ1Y3QgR2xvYmFsSWQgewotIAotICAg ZnJpZW5kIGNvbnN0ZXhwciBhdXRvIG9wZXJhdG9yPD0+KGNvbnN0IEdsb2JhbElkPFJlbmRlcmVy SWQ+JiBsaHMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgR2xv YmFsSWQ8UmVuZGVyZXJJZD4mIHJocykgPSBkZWZhdWx0OwotLSAgZnJpZW5kIGNvbnN0ZXhwciBi b29sIG9wZXJhdG9yPT0oY29uc3QgR2xvYmFsSWQ8UmVuZGVyZXJJZD4mIGxocywKLSsgIGZyaWVu ZCBib29sIG9wZXJhdG9yPT0oY29uc3QgR2xvYmFsSWQ8UmVuZGVyZXJJZD4mIGxocywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdsb2JhbElkPFJlbmRlcmVySWQ+ JiByaHMpID0gZGVmYXVsdDsKLSB9OwotIAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS4y OS9iYXNlL3R5cGVzL3N0cm9uZ19hbGlhcy5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvYmFz ZS90eXBlcy9zdHJvbmdfYWxpYXMuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvYmFzZS90 eXBlcy9zdHJvbmdfYWxpYXMuaC5tZQkyMDI0LTAyLTEzIDE0OjEzOjIwLjMxMTM3NDI4OCArMDEw MAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuMjkvYmFzZS90eXBlcy9zdHJvbmdfYWxpYXMuaAky MDI0LTAyLTEzIDEyOjMwOjM4LjU5NjkxMzk1MSArMDEwMAotQEAgLTExMCw3ICsxMTAsNyBAQCBj bGFzcyBTdHJvbmdBbGlhcyB7Ci0gICAvLyBhIGBTdHJvbmdBbGlhczxXPmAuCi0gICBmcmllbmQg Y29uc3RleHByIGF1dG8gb3BlcmF0b3I8PT4oY29uc3QgU3Ryb25nQWxpYXMmIGxocywKLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTdHJvbmdBbGlhcyYgcmhzKSA9 IGRlZmF1bHQ7Ci0tICBmcmllbmQgY29uc3RleHByIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJv bmdBbGlhcyYgbGhzLAotKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBTdHJvbmdBbGlh cyYgbGhzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Ryb25n QWxpYXMmIHJocykgPSBkZWZhdWx0OwotIAotICAgLy8gSGFzaGVyIHRvIHVzZSBpbiBzdGQ6OnVu b3JkZXJlZF9tYXAsIHN0ZDo6dW5vcmRlcmVkX3NldCwgZXRjLgotZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvcmVzb3VyY2VfYXR0 cmlidXRpb24vcXVlcnlfcGFyYW1zLmguY29uc3RleHByIGNocm9taXVtLTEyMi4wLjYyNjEuMjkv Y29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3Jlc291cmNlX2F0dHJpYnV0aW9uL3F1ZXJ5 X3BhcmFtcy5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4yOS9jb21wb25lbnRzL3BlcmZvcm1h bmNlX21hbmFnZXIvcmVzb3VyY2VfYXR0cmlidXRpb24vcXVlcnlfcGFyYW1zLmguY29uc3RleHBy CTIwMjQtMDItMDcgMTk6NDk6MzEuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAu NjI2MS4yOS9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvcmVzb3VyY2VfYXR0cmlidXRp b24vcXVlcnlfcGFyYW1zLmgJMjAyNC0wMi0xMyAxMToxMjo1Mi45MTMzMzg2OTkgKzAxMDAKLUBA IC02Nyw3ICs2Nyw3IEBAIHN0cnVjdCBRdWVyeVBhcmFtcyB7Ci0gICBRdWVyeVBhcmFtcyhjb25z dCBRdWVyeVBhcmFtcyYgb3RoZXIpOwotICAgUXVlcnlQYXJhbXMmIG9wZXJhdG9yPShjb25zdCBR dWVyeVBhcmFtcyYgb3RoZXIpOwotIAotLSAgZnJpZW5kIGNvbnN0ZXhwciBib29sIG9wZXJhdG9y PT0oY29uc3QgUXVlcnlQYXJhbXMmLAotKyAgZnJpZW5kIGJvb2wgb3BlcmF0b3I9PShjb25zdCBR dWVyeVBhcmFtcyYsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBR dWVyeVBhcmFtcyYpID0gZGVmYXVsdDsKLSAKLSAgIC8vIFJlc291cmNlIHR5cGVzIHRvIG1lYXN1 cmUuCi1kaWZmIC11cCBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbXBvbmVudHMvcGVyZm9ybWFu Y2VfbWFuYWdlci9yZXNvdXJjZV9hdHRyaWJ1dGlvbi9jb250ZXh0X2NvbGxlY3Rpb24uaC5tZSBj aHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci9yZXNv dXJjZV9hdHRyaWJ1dGlvbi9jb250ZXh0X2NvbGxlY3Rpb24uaAotLS0tIGNocm9taXVtLTEyMy4w LjYzMTIuNDYvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3Jlc291cmNlX2F0dHJpYnV0 aW9uL2NvbnRleHRfY29sbGVjdGlvbi5oLm1lCTIwMjQtMDMtMTcgMTE6NTc6MjIuMDk3MTYxNTY1 ICswMTAwCi0rKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb21wb25lbnRzL3BlcmZvcm1hbmNl X21hbmFnZXIvcmVzb3VyY2VfYXR0cmlidXRpb24vY29udGV4dF9jb2xsZWN0aW9uLmgJMjAyNC0w My0xNyAyMjoxODoyNS40NDIxMDE4MjUgKzAxMDAKLUBAIC0yOCw3ICsyOCw3IEBAIGNsYXNzIENv bnRleHRDb2xsZWN0aW9uIHsKLSAgIENvbnRleHRDb2xsZWN0aW9uKGNvbnN0IENvbnRleHRDb2xs ZWN0aW9uJiBvdGhlcik7Ci0gICBDb250ZXh0Q29sbGVjdGlvbiYgb3BlcmF0b3I9KGNvbnN0IENv bnRleHRDb2xsZWN0aW9uJiBvdGhlcik7Ci0gCi0tICBmcmllbmQgY29uc3RleHByIGJvb2wgb3Bl cmF0b3I9PShjb25zdCBDb250ZXh0Q29sbGVjdGlvbiYsCi0rICBmcmllbmQgYm9vbCBvcGVyYXRv cj09KGNvbnN0IENvbnRleHRDb2xsZWN0aW9uJiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNvbnN0IENvbnRleHRDb2xsZWN0aW9uJikgPSBkZWZhdWx0OwotIAotICAgLy8g QWRkcyBgY29udGV4dGAgdG8gdGhlIGNvbGxlY3Rpb24uCi1kaWZmIC11cCBjaHJvbWl1bS0xMjMu MC42MzEyLjQ2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2 ZW50LmgubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci9tZXRyaWNzL2xvZ19ldmVudC5oCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9j b21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19ldmVudC5oLm1lCTIw MjQtMDMtMTYgMjM6Mzg6MTAuNDM3MTI4MjQ5ICswMTAwCi0rKysgY2hyb21pdW0tMTIzLjAuNjMx Mi40Ni9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19ldmVudC5o CTIwMjQtMDMtMTYgMjM6NTk6NTAuODY4MDgwNjUyICswMTAwCi1AQCAtNTcsNyArNTcsNyBAQCBz dHJ1Y3QgSXNSZXF1aXJlZCB7Ci0gICAvLyBUaGlzIGZ1bmN0aW9uIGlzIG5vdCBkZWZpbmVkIGFu ZCBjb25zdGV2YWwuIFRoZXJlZm9yZSwgYW55IGV2YWx1YXRpb24gd2lsbAotICAgLy8gZmFpbCBh bmQgZmFpbCBhdCBjb21waWxlIHRpbWUuCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS0gIGNv bnN0ZXZhbCBvcGVyYXRvciBUKCk7ICAvLyBOT0xJTlQKLSsgIG9wZXJhdG9yIFQoKTsgIC8vIE5P TElOVAotIH07Ci0gCi0gfSAgLy8gbmFtZXNwYWNlIGludGVybmFsCgpkaWZmIC0tZ2l0IGEvY2hy b21pdW0tMTIzLW5vX21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoIGIvY2hyb21pdW0tMTIzLW5v X21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCA0YjI5MTcwLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyMy1ub19tYXRjaGluZ19jb25zdHJ1 Y3Rvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNjQgKzAsMCBAQAotZGlmZiAtdXAgY2hy b21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxs b2NhdG9yLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL21ldHJpY3MvcGVyc2lz dGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9i YXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjLnRoYW4JMjAyNC0w Mi0yMiAyMjo0Mjo0My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MJMjAyNC0wMi0y NCAxMzoxMzozMi40ODQ1MDM3MzUgKzAxMDAKLUBAIC0yMTgsMTMgKzIxOCwxMyBAQCBQZXJzaXN0 ZW50U3BhcnNlSGlzdG9ncmFtRGF0YU1hbmFnZXI6OkxvCi0gICAgIC8vIFRoZSBzYW1wbGUtcmVj b3JkIGNvdWxkIGJlIGZvciBhbnkgc3BhcnNlIGhpc3RvZ3JhbS4gQWRkIHRoZSByZWZlcmVuY2UK LSAgICAgLy8gdG8gdGhlIGFwcHJvcHJpYXRlIGNvbGxlY3Rpb24gZm9yIGxhdGVyIHVzZS4KLSAg ICAgaWYgKGZvdW5kX2lkID09IG1hdGNoX2lkKSB7Ci0tICAgICAgZm91bmRfcmVjb3Jkcy5lbXBs YWNlX2JhY2socmVmLCB2YWx1ZSk7Ci0rICAgICAgZm91bmRfcmVjb3Jkcy5lbXBsYWNlX2JhY2so KSA9IHtyZWYsIHZhbHVlfTsKLSAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgIH0gZWxzZSB7Ci0g ICAgICAgc3RkOjp2ZWN0b3I8UmVmZXJlbmNlQW5kU2FtcGxlPiogc2FtcGxlcyA9Ci0gICAgICAg ICAgIEdldFNhbXBsZU1hcFJlY29yZHNXaGlsZUxvY2tlZChmb3VuZF9pZCk7Ci0gICAgICAgQ0hF Q0soc2FtcGxlcyk7Ci0tICAgICAgc2FtcGxlcy0+ZW1wbGFjZV9iYWNrKHJlZiwgdmFsdWUpOwot KyAgICAgIHNhbXBsZXMtPmVtcGxhY2VfYmFjaygpID0ge3JlZiwgdmFsdWV9OwotICAgICB9Ci0g ICB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uvbml4L21pbWVfdXRp bF94ZGcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uvbml4L21pbWVfdXRpbF94 ZGcuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcu Y2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvYmFzZS9uaXgvbWltZV91dGlsX3hkZy5jYwkyMDI0LTAyLTI0IDEzOjEz OjQ0LjE1ODcxMjc1NiArMDEwMAotQEAgLTU2LDcgKzU2LDcgQEAgdm9pZCBMb2FkQWxsTWltZUNh Y2hlRmlsZXMoTWltZVR5cGVNYXAmCi0gICBmb3IgKGNvbnN0IGF1dG8mIHBhdGggOiBHZXRYREdE YXRhU2VhcmNoTG9jYXRpb25zKGVudi5nZXQoKSkpIHsKLSAgICAgRmlsZVBhdGggbWltZV9jYWNo ZSA9IHBhdGguQXBwZW5kKCJtaW1lL21pbWUuY2FjaGUiKTsKLSAgICAgaWYgKEdldEZpbGVJbmZv KG1pbWVfY2FjaGUsICZpbmZvKSAmJiBQYXJzZU1pbWVUeXBlcyhtaW1lX2NhY2hlLCBtYXApKSB7 Ci0tICAgICAgZmlsZXMuZW1wbGFjZV9iYWNrKG1pbWVfY2FjaGUsIGluZm8ubGFzdF9tb2RpZmll ZCk7Ci0rICAgICAgZmlsZXMuZW1wbGFjZV9iYWNrKCkgPSB7bWltZV9jYWNoZSwgaW5mby5sYXN0 X21vZGlmaWVkfTsKLSAgICAgfQotICAgfQotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjCi0tLS0gY2hyb21pdW0tMTIyLjAu NjI2MS42OS9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYy50aGFuCTIwMjQtMDItMjIgMjI6 NDI6NDMuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL3Ry YWNlX2V2ZW50L3RyYWNlX2xvZy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NDUwMzczNSArMDEw MAotQEAgLTIxOTgsOCArMjE5OCw4IEBAIHZvaWQgVHJhY2VMb2c6OlNldFRyYWNlQnVmZmVyRm9y VGVzdGluZygKLSAjaWYgQlVJTERGTEFHKFVTRV9QRVJGRVRUT19DTElFTlRfTElCUkFSWSkKLSB2 b2lkIFRyYWNlTG9nOjpPblNldHVwKGNvbnN0IHBlcmZldHRvOjpEYXRhU291cmNlQmFzZTo6U2V0 dXBBcmdzJiBhcmdzKSB7Ci0gICBBdXRvTG9jayBsb2NrKHRyYWNrX2V2ZW50X2xvY2tfKTsKLS0g IHRyYWNrX2V2ZW50X3Nlc3Npb25zXy5lbXBsYWNlX2JhY2soYXJncy5pbnRlcm5hbF9pbnN0YW5j ZV9pbmRleCwgKmFyZ3MuY29uZmlnLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhcmdzLmJhY2tlbmRfdHlwZSk7Ci0rICB0cmFja19ldmVudF9zZXNzaW9uc18uZW1wbGFj ZV9iYWNrKCkgPSB7YXJncy5pbnRlcm5hbF9pbnN0YW5jZV9pbmRleCwgKmFyZ3MuY29uZmlnLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmJhY2tlbmRfdHlwZX07 Ci0gfQotIAotIHZvaWQgVHJhY2VMb2c6Ok9uU3RhcnQoY29uc3QgcGVyZmV0dG86OkRhdGFTb3Vy Y2VCYXNlOjpTdGFydEFyZ3MmKSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2No cm9tZS9icm93c2VyL2NvbnRlbnRfc2V0dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRl ci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvY29udGVudF9z ZXR0aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjCi0tLS0gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1p c3Npb25fcHJvdmlkZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjUwLjAwMDAwMDAwMCArMDEw MAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0 aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjCTIwMjQtMDItMjQgMTM6MTM6MzIu NDg1NTAzNzUyICswMTAwCi1AQCAtMjUyLDggKzI1Miw4IEBAIHZvaWQgT25lVGltZVBlcm1pc3Np b25Qcm92aWRlcjo6T25TdXNwZW4KLSAKLSAgICAgICB3aGlsZSAocnVsZV9pdGVyYXRvciAmJiBy dWxlX2l0ZXJhdG9yLT5IYXNOZXh0KCkpIHsKLSAgICAgICAgIGF1dG8gcnVsZSA9IHJ1bGVfaXRl cmF0b3ItPk5leHQoKTsKLS0gICAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2so c2V0dGluZ190eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRlcm4sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuKTsKLSsgICAgICAg IHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2soKSA9IHtzZXR0aW5nX3R5cGUsIHJ1bGUt PnByaW1hcnlfcGF0dGVybiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59OwotICAgICAgICAgcGVybWlzc2lvbnM6OlBlcm1p c3Npb25VbWFVdGlsOjpSZWNvcmRPbmVUaW1lUGVybWlzc2lvbkV2ZW50KAotICAgICAgICAgICAg IHNldHRpbmdfdHlwZSwKLSAgICAgICAgICAgICBwZXJtaXNzaW9uczo6T25lVGltZVBlcm1pc3Np b25FdmVudDo6RVhQSVJFRF9PTl9TVVNQRU5EKTsKLUBAIC0zNTUsOCArMzU1LDggQEAgdm9pZCBP bmVUaW1lUGVybWlzc2lvblByb3ZpZGVyOjpEZWxldGVFbgotICAgICBhdXRvIHJ1bGUgPSBydWxl X2l0ZXJhdG9yLT5OZXh0KCk7Ci0gICAgIGlmIChydWxlLT5wcmltYXJ5X3BhdHRlcm4uTWF0Y2hl cyhvcmlnaW5fZ3VybCkgJiYKLSAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuLk1hdGNo ZXMob3JpZ2luX2d1cmwpKSB7Ci0tICAgICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFj aygKLS0gICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVy biwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm4pOwotKyAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5l bXBsYWNlX2JhY2soKSA9IHsKLSsgICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1bGUt PnByaW1hcnlfcGF0dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59OwotICAgICAgIHBlcm1p c3Npb25zOjpQZXJtaXNzaW9uVW1hVXRpbDo6UmVjb3JkT25lVGltZVBlcm1pc3Npb25FdmVudCgK LSAgICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHRyaWdnZXJfZXZlbnQpOwotICAgICB9 Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2VudGVycHJp c2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90 dGxlLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9lbnRlcnBy aXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJv dHRsZS5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZW50ZXJw cmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhy b3R0bGUuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21h bmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUuY2MJMjAyNC0w Mi0yNCAxMzoxMzozMi40ODU1MDM3NTIgKzAxMDAKLUBAIC02Nyw4ICs2Nyw4IEBAIGJhc2U6OmZs YXRfbWFwPHN0ZDo6c3RyaW5nLCBTQU1MUHJvZmlsZUEKLSAgIC8vIFRPRE8oY3JidWcuY29tLzE0 NDUwNzIpOiBBZGQgYWN0dWFsIGRvbWFpbnMgd2l0aCBhdHRyaWJ1dGUgbmFtZXMuCi0gICBwcm9m aWxlX2F0dHJpYnV0ZXMtPmluc2VydChzdGQ6Om1ha2VfcGFpcigKLSAgICAgICAic3VwcG9ydGVk LnRlc3QiLAotLSAgICAgIFNBTUxQcm9maWxlQXR0cmlidXRlcygicGxhY2Vob2xkZXJOYW1lIiwg InBsYWNlaG9sZGVyRG9tYWluIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgInBsYWNl aG9sZGVyVG9rZW4iKSkpOwotKyAgICAgIFNBTUxQcm9maWxlQXR0cmlidXRlc3sicGxhY2Vob2xk ZXJOYW1lIiwgInBsYWNlaG9sZGVyRG9tYWluIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAg ICAgInBsYWNlaG9sZGVyVG9rZW4ifSkpOwotIAotICAgLy8gRXh0cmFjdCBkb21haW5zIGFuZCBh dHRyaWJ1dGVzIGZyb20gdGhlIGNvbW1hbmQgbGluZSBzd2l0Y2guCi0gICBjb25zdCBiYXNlOjpD b21tYW5kTGluZSYgY29tbWFuZF9saW5lID0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lv bl9wcm9tcHRfYXNrX3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Fz a192aWV3LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92 aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYy50 aGFuCTIwMjQtMDItMjIgMjI6NDI6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9w ZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NjUwMzc3 MCArMDEwMAotQEAgLTYwLDEyICs2MCwxMiBAQCBzdGQ6OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Np b25Qcm9tcHRBc2tWCi0gRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0QXNrVmlldzo6R2V0QnV0dG9u c0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7Ci0gICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0 aW9uPiBidXR0b25zOwotICAgaWYgKGJhc2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJsZWQocGVybWlz c2lvbnM6OmZlYXR1cmVzOjprT25lVGltZVBlcm1pc3Npb24pKSB7Ci0tICAgIGJ1dHRvbnMuZW1w bGFjZV9iYWNrKAotKyAgICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICAgbDEw bl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPV19USElTX1RJTUUpLAot LSAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1Rv bmFsKTsKLSsgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5 bGU6OmtUb25hbH07Ci0gICB9Ci0tICBidXR0b25zLmVtcGxhY2VfYmFjayhsMTBuX3V0aWw6Okdl dFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKLS0gICAgICAgICAgICAgICAgICAg ICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd0lk KTsKLSsgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7bDEwbl91dGlsOjpHZXRTdHJpbmdVVEYx NihJRFNfUEVSTUlTU0lPTl9BTExPVyksCi0rICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25U eXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dJZH07Ci0gICByZXR1 cm4gYnV0dG9uczsKLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0 X2Jhc2Vfdmlldy5oLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91 aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3ZpZXcu aAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVy bWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3LmgudGhhbgkyMDI0 LTAyLTIyIDIyOjQyOjU1LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lv bl9wcm9tcHRfYmFzZV92aWV3LmgJMjAyNC0wMi0yNCAxMzoxMzozMi40ODY1MDM3NzAgKzAxMDAK LUBAIC04Nyw2ICs4Nyw3IEBAIGNsYXNzIEVtYmVkZGVkUGVybWlzc2lvblByb21wdEJhc2VWaWV3 IDoKLSAgIHN0cnVjdCBSZXF1ZXN0TGluZUNvbmZpZ3VyYXRpb24gewotICAgICBjb25zdCByYXdf cHRyPGNvbnN0IGdmeDo6VmVjdG9ySWNvbj4gaWNvbjsKLSAgICAgc3RkOjp1MTZzdHJpbmcgbWVz c2FnZTsKLSsgICAgUmVxdWVzdExpbmVDb25maWd1cmF0aW9uKGF1dG8gaSwgYXV0byBtKSA6IGlj b24oaSksIG1lc3NhZ2UobSkgeyB9Ci0gICB9OwotIAotICAgc3RydWN0IEJ1dHRvbkNvbmZpZ3Vy YXRpb24gewotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91 aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmll dy5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3Mv cGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2MKLS0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Np b25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3BvbGljeV92aWV3LmNjLnRoYW4JMjAyNC0w Mi0yMiAyMjo0Mjo1NS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25f cHJvbXB0X3BvbGljeV92aWV3LmNjCTIwMjQtMDItMjQgMTM6MTM6MzIuNDg2NTAzNzcwICswMTAw Ci1AQCAtNjQsOCArNjQsOCBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3OjpH ZXRSCi0gc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6QnV0 dG9uQ29uZmlndXJhdGlvbj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3OjpH ZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNv bmZpZ3VyYXRpb24+IGJ1dHRvbnM7Ci0tICBidXR0b25zLmVtcGxhY2VfYmFjayhsMTBuX3V0aWw6 OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfT0tfTEFCRUwpLAotLSAgICAgICAg ICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a1BvbGljeU9LLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCk7Ci0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5n VVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9PS19MQUJFTCksCi0rICAgICAgICAgICAgICAgICAg ICAgICBCdXR0b25UeXBlOjprUG9saWN5T0ssIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAg IHJldHVybiBidXR0b25zOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9w cm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lv bl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlz c2lvbl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5jYy50aGFuCTIwMjQtMDItMjIgMjI6 NDI6NTUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv YnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9w cmV2aW91c2x5X2RlbmllZF92aWV3LmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUzNzEyNjY3ICsw MTAwCi1AQCAtNzksMTcgKzc5LDE3IEBAIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3Vz bHlEZW5pZWQKLSBzdGQ6OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5 RGVuaWVkVmlldzo6QnV0dG9uQ29uZmlndXJhdGlvbj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9t cHRQcmV2aW91c2x5RGVuaWVkVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7 Ci0gICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwotLSAgYnV0dG9u cy5lbXBsYWNlX2JhY2soCi0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwx MG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9DT05USU5VRV9OT1Rf QUxMT1dJTkcpLAotLSAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZU5vdEFsbG93aW5nLCB1aTo6 QnV0dG9uU3R5bGU6OmtUb25hbCk7Ci0rICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlTm90QWxs b3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAKLSAgIGlmIChiYXNlOjpGZWF0dXJl TGlzdDo6SXNFbmFibGVkKHBlcm1pc3Npb25zOjpmZWF0dXJlczo6a09uZVRpbWVQZXJtaXNzaW9u KSkgewotLSAgICBidXR0b25zLmVtcGxhY2VfYmFjaygKLSsgICAgYnV0dG9ucy5lbXBsYWNlX2Jh Y2soKSA9IHsKLSAgICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJ T05fQUxMT1dfVEhJU19USU1FKSwKLS0gICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1l LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga0FsbG93VGhpc1RpbWVJZCk7Ci0rICAgICAgICBC dXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxv d1RoaXNUaW1lSWR9OwotICAgfSBlbHNlIHsKLS0gICAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEw bl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCi0tICAgICAgICAg ICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9u YWwpOwotKyAgICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5n VVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBC dXR0b25UeXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAgIH0KLSAgIHJl dHVybiBidXR0b25zOwotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRf cHJldmlvdXNseV9ncmFudGVkX3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJv bXB0X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9u X3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRfdmlldy5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6 NTUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJv d3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2 aW91c2x5X2dyYW50ZWRfdmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyArMDEw MAotQEAgLTc0LDEyICs3NCwxMiBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5 R3JhbnRlCi0gc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseUdy YW50ZWRWaWV3OjpCdXR0b25Db25maWd1cmF0aW9uPgotIEVtYmVkZGVkUGVybWlzc2lvblByb21w dFByZXZpb3VzbHlHcmFudGVkVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7 Ci0gICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwotLSAgYnV0dG9u cy5lbXBsYWNlX2JhY2soCi0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwx MG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9DT05USU5VRV9BTExP V0lORyksCi0tICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVpOjpCdXR0b25T dHlsZTo6a1RvbmFsKTsKLSsgICAgICBCdXR0b25UeXBlOjprQ29udGludWVBbGxvd2luZywgdWk6 OkJ1dHRvblN0eWxlOjprVG9uYWx9OwotIAotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCi0rICBi dXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRG MTYoSURTX0VNQkVEREVEX1BST01QVF9TVE9QX0FMTE9XSU5HKSwKLS0gICAgICBCdXR0b25UeXBl OjprU3RvcEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga1N0b3BBbGxvd2luZ0lk KTsKLSsgICAgICBCdXR0b25UeXBlOjprU3RvcEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCwga1N0b3BBbGxvd2luZ0lkfTsKLSAgIHJldHVybiBidXR0b25zOwotIH0KLWRpZmYgLXVw IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFiaWxp dGllcy5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL3Rlc3QvY2hyb21lZHJp dmVyL2NhcGFiaWxpdGllcy5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL3Rl c3QvY2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTYu MDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvdGVzdC9j aHJvbWVkcml2ZXIvY2FwYWJpbGl0aWVzLmNjCTIwMjQtMDItMjQgMTM6MTM6MzIuNDg2NTAzNzcw ICswMTAwCi1AQCAtMzQ2LDcgKzM0Niw3IEBAIFN0YXR1cyBQYXJzZU1vYmlsZUVtdWxhdGlvbihj b25zdCBiYXNlOjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAiJ3ZlcnNpb24nIGZpZWxkIG9m IHR5cGUgc3RyaW5nIik7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICBicmFuZHMuZW1wbGFjZV9i YWNrKCpicmFuZCwgKnZlcnNpb24pOwotKyAgICAgICAgYnJhbmRzLmVtcGxhY2VfYmFjaygpID0g eypicmFuZCwgKnZlcnNpb259OwotICAgICAgIH0KLSAKLSAgICAgICBjbGllbnRfaGludHMuYnJh bmRzID0gc3RkOjptb3ZlKGJyYW5kcyk7Ci1AQCAtMzg0LDcgKzM4NCw3IEBAIFN0YXR1cyBQYXJz ZU1vYmlsZUVtdWxhdGlvbihjb25zdCBiYXNlOjoKLSAgICAgICAgICAgICAgICAgICAgICAgICAi YSAndmVyc2lvbicgZmllbGQgb2YgdHlwZSBzdHJpbmciKTsKLSAgICAgICAgIH0KLSAKLS0gICAg ICAgIGZ1bGxfdmVyc2lvbl9saXN0LmVtcGxhY2VfYmFjaygqYnJhbmQsICp2ZXJzaW9uKTsKLSsg ICAgICAgIGZ1bGxfdmVyc2lvbl9saXN0LmVtcGxhY2VfYmFjaygpID0geypicmFuZCwgKnZlcnNp b259OwotICAgICAgIH0KLSAKLSAgICAgICBjbGllbnRfaGludHMuZnVsbF92ZXJzaW9uX2xpc3Qg PSBzdGQ6Om1vdmUoZnVsbF92ZXJzaW9uX2xpc3QpOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3Jk X21hbmFnZXIuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGFzc3dv cmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFzc3dvcmRfbWFuYWdlci5jYwotLS0tIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9w YXNzd29yZF9tYW5hZ2VyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowMi4wMDAwMDAwMDAgKzAx MDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdl ci9jb3JlL2Jyb3dzZXIvcGFzc3dvcmRfbWFuYWdlci5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1 NDcxMjY4NSArMDEwMAotQEAgLTY3Myw3ICs2NzMsNyBAQCB2b2lkIFBhc3N3b3JkTWFuYWdlcjo6 T25Vc2VyTW9kaWZpZWROb25QCi0gICAgIGl0LT5zZWNvbmQubGFzdF9jaGFuZ2UgPSBiYXNlOjpU aW1lOjpOb3coKTsKLSAgIH0gZWxzZSB7Ci0gICAgIHBvc3NpYmxlX3VzZXJuYW1lc18uUHV0KAot LSAgICAgICAgUG9zc2libGVVc2VybmFtZUZpZWxkSWRlbnRpZmllcihkcml2ZXJfaWQsIHJlbmRl cmVyX2lkKSwKLSsgICAgICAgIFBvc3NpYmxlVXNlcm5hbWVGaWVsZElkZW50aWZpZXJ7ZHJpdmVy X2lkLCByZW5kZXJlcl9pZH0sCi0gICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRGF0YShHZXRTaWdu b25SZWFsbShkcml2ZXItPkdldExhc3RDb21taXR0ZWRVUkwoKSksCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICByZW5kZXJlcl9pZCwgdmFsdWUsIGJhc2U6OlRpbWU6Ok5vdygpLCBkcml2 ZXJfaWQsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGVfYXR0cmli dXRlX2hhc191c2VybmFtZSwKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9u ZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjLnRoYW4gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNo ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGVyZm9ybWFuY2Vf bWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDIuMDAwMDAw MDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3BlcmZvcm1h bmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTg3MTI3 NTYgKzAxMDAKLUBAIC0yMzksNyArMjM5LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbldvcmtl ckNyZWF0ZWQoCi0gICBEQ0hFQ0soaW5zZXJ0aW9uX3Jlc3VsdC5zZWNvbmQpOwotIAotICAgYWJz bDo6dmlzaXQoCi0tICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9h ZGVkewotICAgICAgICAgICBbJiwKLSAgICAgICAgICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okds b2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAg ICAgIEFkZEZyYW1lQ2xpZW50Q29ubmVjdGlvbihpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNv bmQuZ2V0KCksCi1AQCAtMjQ4LDcgKzI0OCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Xb3Jr ZXJDcmVhdGVkKAotICAgICAgICAgICBbJiwgdGhpc10oYmxpbms6OkRlZGljYXRlZFdvcmtlclRv a2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICBDb25uZWN0RGVkaWNh dGVkV29ya2VyQ2xpZW50KGluc2VydGlvbl9yZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZGljYXRlZF93b3JrZXJf dG9rZW4pOwotLSAgICAgICAgICB9KSwKLSsgICAgICAgICAgfX0sCi0gICAgICAgY3JlYXRvcik7 Ci0gfQotIAotQEAgLTI2NSw3ICsyNjUsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQmVmb3Jl V29ya2VyRGVzdHJvCi0gICAvLyBGaXJzdCBkaXNjb25uZWN0IHRoZSBjcmVhdG9yJ3Mgbm9kZSBm cm9tIHRoaXMgd29ya2VyIG5vZGUuCi0gCi0gICBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpP dmVybG9hZGVkKAotKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFsmLAotICAg ICAgICAgICAgdGhpc10oY29uc3QgY29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJl bmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAgUmVtb3ZlRnJhbWVDbGllbnRDb25u ZWN0aW9uKHdvcmtlcl9ub2RlLmdldCgpLAotQEAgLTI3NCw3ICsyNzQsNyBAQCB2b2lkIFdvcmtl cldhdGNoZXI6Ok9uQmVmb3JlV29ya2VyRGVzdHJvCi0gICAgICAgICAgIFsmLCB0aGlzXShibGlu azo6RGVkaWNhdGVkV29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgewotICAgICAg ICAgICAgIERpc2Nvbm5lY3REZWRpY2F0ZWRXb3JrZXJDbGllbnQod29ya2VyX25vZGUuZ2V0KCks Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRf d29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgIGNy ZWF0b3IpOwotIAotICAgLy8gRGlzY29ubmVjdCBhbGwgY2hpbGQgd29ya2VycyBiZWZvcmUgZGVz dHJveWluZyB0aGUgbm9kZS4KLUBAIC00NDYsNyArNDQ2LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVy OjpPbkNvbnRyb2xsZWVBZGRlZCgKLSAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIGNsaWVudF91dWlk LAotICAgICBjb25zdCBjb250ZW50OjpTZXJ2aWNlV29ya2VyQ2xpZW50SW5mbyYgY2xpZW50X2lu Zm8pIHsKLSAgIGFic2w6OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAg YmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2JhbFJl bmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAgLy8g Rm9yIHdpbmRvdyBjbGllbnRzLCBpdCBpcyBuZWNlc3NhcnkgdG8gd2FpdCB1bnRpbCB0aGUgbmF2 aWdhdGlvbgotICAgICAgICAgICAgIC8vIGhhcyBjb21taXR0ZWQgdG8gYSBSZW5kZXJGcmFtZUhv c3QuCi1AQCAtNDg0LDcgKzQ4NCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Db250cm9sbGVl QWRkZWQoCi0gICAgICAgICAgICAgICBDb25uZWN0U2hhcmVkV29ya2VyQ2xpZW50KHNlcnZpY2Vf d29ya2VyX25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo YXJlZF93b3JrZXJfdG9rZW4pOwotICAgICAgICAgICAgIH0KLS0gICAgICAgICAgfSksCi0rICAg ICAgICAgIH19LAotICAgICAgIGNsaWVudF9pbmZvKTsKLSB9Ci0gCi1AQCAtNTI0LDcgKzUyNCw3 IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Db250cm9sbGVlUmVtb3ZlZCgKLSAgICAgcmV0dXJu OwotIAotICAgYWJzbDo6dmlzaXQoCi0tICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKLSsgICAgICBi YXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICBbJiwgdGhpc10oY29udGVudDo6R2xvYmFsUmVu ZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICBSZW1v dmVGcmFtZUNsaWVudENvbm5lY3Rpb24od29ya2VyX25vZGUsIHJlbmRlcl9mcmFtZV9ob3N0X2lk KTsKLSAgICAgICAgICAgfSwKLUBAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVy OjpPbkNvbnRyb2xsZWVSZW1vdmVkKAotICAgICAgICAgICB9LAotICAgICAgICAgICBbJiwgdGhp c10oYmxpbms6OlNoYXJlZFdvcmtlclRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAg ICAgICAgICBEaXNjb25uZWN0U2hhcmVkV29ya2VyQ2xpZW50KHdvcmtlcl9ub2RlLCBzaGFyZWRf d29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgIGNs aWVudCk7Ci0gfQotIAotQEAgLTgxMCw3ICs4MTAsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkNv bm5lY3RBbGxTZXJ2aWNlV29yCi0gCi0gICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29u ZCkgewotICAgICBhYnNsOjp2aXNpdCgKLS0gICAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAg ICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpH bG9iYWxSZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAg ICAgICAgQWRkRnJhbWVDbGllbnRDb25uZWN0aW9uKHNlcnZpY2Vfd29ya2VyX25vZGUsCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVuZGVyX2ZyYW1lX2hvc3RfaWQp OwotQEAgLTgyMiw3ICs4MjIsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkNvbm5lY3RBbGxTZXJ2 aWNlV29yCi0gICAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBz aGFyZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAgICAgICBDb25uZWN0U2hhcmVkV29ya2Vy Q2xpZW50KHNlcnZpY2Vfd29ya2VyX25vZGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIHNoYXJlZF93b3JrZXJfdG9rZW4pOwotLSAgICAgICAgICAgIH0pLAotKyAg ICAgICAgICAgIH19LAotICAgICAgICAga3Yuc2Vjb25kKTsKLSAgIH0KLSB9Ci1AQCAtODM3LDcg KzgzNyw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6RGlzY29ubmVjdEFsbFNlcnZpY2UKLSAKLSAg IGZvciAoY29uc3QgYXV0byYga3YgOiBpdC0+c2Vjb25kKSB7Ci0gICAgIGFic2w6OnZpc2l0KAot LSAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKLSsgICAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Ci0g ICAgICAgICAgICAgWyYsIHRoaXNdKAotICAgICAgICAgICAgICAgICBjb25zdCBjb250ZW50OjpH bG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAg ICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9ub2RlLAot QEAgLTg1MSw3ICs4NTEsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2 aWNlCi0gICAgICAgICAgICAgWyYsIHRoaXNdKGNvbnN0IGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tl biYgc2hhcmVkX3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAgICAgRGlzY29ubmVjdFNoYXJl ZFdvcmtlckNsaWVudChzZXJ2aWNlX3dvcmtlcl9ub2RlLAotICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAg ICB9KSwKLSsgICAgICAgICAgICB9fSwKLSAgICAgICAgIGt2LnNlY29uZCk7Ci0gICB9Ci0gfQot ZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rp c3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYy50aGFuIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5X2VtYmVk ZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2MKLS0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9lbWJlZGRlci9za2lhX291 dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvdml6L3Nl cnZpY2UvZGlzcGxheV9lbWJlZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNj CTIwMjQtMDItMjQgMTM6MTM6NDQuMTUxNzEyNjMyICswMTAwCi1AQCAtMTU3Myw3ICsxNTczLDcg QEAgdm9pZCBTa2lhT3V0cHV0U3VyZmFjZUltcGxPbkdwdTo6Q29weU91dAotIAotICAgICAgIC8v IElzc3VlIHJlYWRiYWNrcyBmcm9tIHRoZSBzdXJmYWNlczoKLSAgICAgICBmb3IgKHNpemVfdCBp ID0gMDsgaSA8IENvcHlPdXRwdXRSZXN1bHQ6OmtOVjEyTWF4UGxhbmVzOyArK2kpIHsKLS0gICAg ICAgIFNrSVNpemUgc2l6ZShwbGFuZV9zdXJmYWNlc1tpXS0+d2lkdGgoKSwgcGxhbmVfc3VyZmFj ZXNbaV0tPmhlaWdodCgpKTsKLSsgICAgICAgIFNrSVNpemUgc2l6ZXtwbGFuZV9zdXJmYWNlc1tp XS0+d2lkdGgoKSwgcGxhbmVfc3VyZmFjZXNbaV0tPmhlaWdodCgpfTsKLSAgICAgICAgIFNrSW1h Z2VJbmZvIGRzdF9pbmZvID0gU2tJbWFnZUluZm86Ok1ha2UoCi0gICAgICAgICAgICAgc2l6ZSwg KGkgPT0gMCkgPyBrQWxwaGFfOF9Ta0NvbG9yVHlwZSA6IGtSOEc4X3Vub3JtX1NrQ29sb3JUeXBl LAotICAgICAgICAgICAgIGtVbnByZW11bF9Ta0FscGhhVHlwZSk7Ci1kaWZmIC11cCBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9kb3dubG9hZC9zYXZlX3BhY2thZ2UuY2Mu dGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9kb3dubG9hZC9zYXZl X3BhY2thZ2UuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9k b3dubG9hZC9zYXZlX3BhY2thZ2UuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjA1LjAwMDAwMDAw MCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2Rvd25s b2FkL3NhdmVfcGFja2FnZS5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MTcxMjYzMiArMDEwMAot QEAgLTgwMSw4ICs4MDEsOCBAQCB2b2lkIFNhdmVQYWNrYWdlOjpGaW5pc2goKSB7Ci0gICBpZiAo ZG93bmxvYWRfKSB7Ci0gICAgIHN0ZDo6dmVjdG9yPGRvd25sb2FkOjpEb3dubG9hZFNhdmVJdGVt RGF0YTo6SXRlbUluZm8+IGZpbGVzOwotICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzYXZlZF9zdWNj ZXNzX2l0ZW1zXykgewotLSAgICAgIGZpbGVzLmVtcGxhY2VfYmFjayhpdGVtLnNlY29uZC0+ZnVs bF9wYXRoKCksIGl0ZW0uc2Vjb25kLT51cmwoKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAg aXRlbS5zZWNvbmQtPnJlZmVycmVyKCkudXJsKTsKLSsgICAgICBmaWxlcy5lbXBsYWNlX2JhY2so KSA9IHtpdGVtLnNlY29uZC0+ZnVsbF9wYXRoKCksIGl0ZW0uc2Vjb25kLT51cmwoKSwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWNvbmQtPnJlZmVycmVyKCkudXJsfTsKLSAgICAg fQotICAgICBkb3dubG9hZDo6RG93bmxvYWRTYXZlSXRlbURhdGE6OkF0dGFjaEl0ZW1EYXRhKGRv d25sb2FkXywgc3RkOjptb3ZlKGZpbGVzKSk7Ci0gICB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3Nl dF9wYXJzZXIuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9m aXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MKLS0tLSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5 X3NldF9wYXJzZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjA1LjAwMDAwMDAwMCArMDEwMAot KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3Nl dHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1ODcxMjc1 NiArMDEwMAotQEAgLTc3Myw3ICs3NzMsNyBAQCBGaXJzdFBhcnR5U2V0UGFyc2VyOjpQYXJzZVNl dHNGcm9tRW50ZXJwCi0gICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5HZXRQb2xpY3lTZXRz RnJvbUxpc3QoCi0gICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5GaW5kTGlzdChrRmly c3RQYXJ0eVNldFBvbGljeUFkZGl0aW9uc0ZpZWxkKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgUG9saWN5U2V0VHlwZTo6a0FkZGl0aW9uKSk7Ci0tICAgIHJldHVybiBQYXJzZWRQb2xpY3lT ZXRMaXN0cyhzdGQ6Om1vdmUocmVwbGFjZW1lbnRzKSwgc3RkOjptb3ZlKGFkZGl0aW9ucykpOwot KyAgICByZXR1cm4gUGFyc2VkUG9saWN5U2V0TGlzdHN7c3RkOjptb3ZlKHJlcGxhY2VtZW50cyks IHN0ZDo6bW92ZShhZGRpdGlvbnMpfTsKLSAgIH0oKTsKLSAKLSAgIGNvbnRleHQuUG9zdFByb2Nl c3NTZXRMaXN0cyhzZXRfbGlzdHMpOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9z aWduYWxzLmgudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRl cmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuaAotLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9k aXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5oLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9p bnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuaAkyMDI0LTAy LTI0IDEzOjEzOjQ0LjE1ODcxMjc1NiArMDEwMAotQEAgLTEzMyw2ICsxMzMsNyBAQCBjbGFzcyBD T05URU5UX0VYUE9SVCBIZWFkZXJEaXJlY3RGcm9tU2VsCi0gCi0gICAgIC8vIFRoZSBBZC1BdWN0 aW9uLVNpZ25hbHMgcmVzcG9uc2Ugc2VydmVkIGJ5IGBvcmlnaW5gLgotICAgICBzdGQ6OnN0cmlu ZyByZXNwb25zZV9qc29uOwotKyAgICBVbnByb2Nlc3NlZFJlc3BvbnNlKGF1dG8gdSwgYXV0byBz KSA6IG9yaWdpbih1KSwgcmVzcG9uc2VfanNvbihzKSB7IH0KLSAgIH07Ci0gCi0gICAvLyBJbmZv cm1hdGlvbiBmcm9tIFBhcnNlQW5kRmluZCgpIGNhbGxzIHVzZWQgYnkgUGFyc2VBbmRGaW5kQ29t cGxldGVkLgotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv aW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYy50aGFuIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3Vw X3N0b3JhZ2UuY2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9p bnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjLnRoYW4JMjAyNC0wMi0yMiAy Mjo0MzowNS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRl bnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCTIwMjQt MDItMjQgMTM6MTM6NDQuMTUyNzEyNjQ5ICswMTAwCi1AQCAtMzQ2MSwxMCArMzQ2MSwxMCBAQCBE b0dldEtBbm9ueW1pdHlEYXRhKHNxbDo6RGF0YWJhc2UmIGRiLAotIAotICAgc3RkOjp2ZWN0b3I8 U3RvcmFnZUludGVyZXN0R3JvdXA6OktBbm9ueW1pdHlEYXRhPiBrX2Fub25fZGF0YTsKLSAgIHdo aWxlIChpbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5TdGVwKCkpIHsKLS0gICAga19hbm9uX2Rh dGEuZW1wbGFjZV9iYWNrKAotKyAgICBrX2Fub25fZGF0YS5lbXBsYWNlX2JhY2soKSA9IHsKLSAg ICAgICAgIC8qa2V5PSovaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuQ29sdW1uU3RyaW5nKDAp LAotICAgICAgICAgLyppc19rX2Fub255bW91cz0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5 LkNvbHVtbkJvb2woMSksCi0tICAgICAgICAvKmxhc3RfdXBkYXRlZD0qL2ludGVyZXN0X2dyb3Vw X2thbm9uX3F1ZXJ5LkNvbHVtblRpbWUoMikpOwotKyAgICAgICAgLypsYXN0X3VwZGF0ZWQ9Ki9p bnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5UaW1lKDIpfTsKLSAgIH0KLSAgIGlmICgh aW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3VjY2VlZGVkKCkpIHsKLSAgICAgcmV0dXJuIHN0 ZDo6bnVsbG9wdDsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93 c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYy50aGFuIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1l X2hvc3RfaW1wbC5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYy50aGFuCTIwMjQtMDItMjQg MTM6MTM6NDQuMTU3NzEyNzM5ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjCTIwMjQt MDItMjQgMTM6MTg6MzkuNDgwMTE5NDQ3ICswMTAwCi1AQCAtODYzMiw3ICs4NjMyLDcgQEAgdm9p ZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpTZW5kRmVuY2VkRnJhbQotICAgZm9yIChjb25zdCBibGlu azo6RmVuY2VkRnJhbWU6OlJlcG9ydGluZ0Rlc3RpbmF0aW9uJiBkZXN0aW5hdGlvbiA6Ci0gICAg ICAgIGRlc3RpbmF0aW9ucykgewotICAgICBTZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFjb25J bnRlcm5hbCgKLS0gICAgICAgIERlc3RpbmF0aW9uRW51bUV2ZW50KGV2ZW50X3R5cGUsIGV2ZW50 X2RhdGEpLCBkZXN0aW5hdGlvbik7Ci0rICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVudHtldmVu dF90eXBlLCBldmVudF9kYXRhfSwgZGVzdGluYXRpb24pOwotICAgfQotIH0KLSAKLUBAIC04NjYx LDcgKzg2NjEsNyBAQCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6OlNlbmRGZW5jZWRGcmFtCi0g ICB9Ci0gCi0gICBTZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFjb25JbnRlcm5hbCgKLS0gICAg ICBEZXN0aW5hdGlvblVSTEV2ZW50KGRlc3RpbmF0aW9uX3VybCksCi0rICAgICAgRGVzdGluYXRp b25VUkxFdmVudHtkZXN0aW5hdGlvbl91cmx9LAotICAgICAgIGJsaW5rOjpGZW5jZWRGcmFtZTo6 UmVwb3J0aW5nRGVzdGluYXRpb246OmtCdXllcik7Ci0gfQotIAotQEAgLTg3OTIsNyArODc5Miw3 IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6TWF5YmVTZW5kRmVuY2UKLSAgICAgICAgIGRh dGEgPSBpbmZvLT5kYXRhOwotICAgICAgIH0KLSAgICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVu Y2VkRnJhbWVSZXBvcnRpbmdCZWFjb25JbnRlcm5hbCgKLS0gICAgICAgICAgQXV0b21hdGljQmVh Y29uRXZlbnQoZXZlbnRfdHlwZSwgZGF0YSksIGRlc3RpbmF0aW9uLAotKyAgICAgICAgICBBdXRv bWF0aWNCZWFjb25FdmVudHtldmVudF90eXBlLCBkYXRhfSwgZGVzdGluYXRpb24sCi0gICAgICAg ICAgIG5hdmlnYXRpb25fcmVxdWVzdC5HZXROYXZpZ2F0aW9uSWQoKSk7Ci0gICAgIH0KLSAgIH0g ZWxzZSB7Ci1AQCAtODgwMyw3ICs4ODAzLDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpN YXliZVNlbmRGZW5jZQotICAgICBmb3IgKGJsaW5rOjpGZW5jZWRGcmFtZTo6UmVwb3J0aW5nRGVz dGluYXRpb24gZGVzdGluYXRpb24gOgotICAgICAgICAgIGluZm8tPmRlc3RpbmF0aW9ucykgewot ICAgICAgIGluaXRpYXRvcl9yZmgtPlNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVy bmFsKAotLSAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudChldmVudF90eXBlLCBpbmZvLT5k YXRhKSwgZGVzdGluYXRpb24sCi0rICAgICAgICAgIEF1dG9tYXRpY0JlYWNvbkV2ZW50e2V2ZW50 X3R5cGUsIGluZm8tPmRhdGF9LCBkZXN0aW5hdGlvbiwKLSAgICAgICAgICAgbmF2aWdhdGlvbl9y ZXF1ZXN0LkdldE5hdmlnYXRpb25JZCgpKTsKLSAgICAgfQotICAgfQotZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93 b3JrZXJfY29udGFpbmVyX2hvc3QuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRl bnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5j YwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29y a2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRhaW5lcl9ob3N0LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0 MzowNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQv YnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYwky MDI0LTAyLTI0IDEzOjEzOjQ0LjE1OTcxMjc3NCArMDEwMAotQEAgLTg3MCw3ICs4NzAsNyBAQCBT ZXJ2aWNlV29ya2VyQ29udGFpbmVySG9zdDo6R2V0Q2xpZW50VHlwCi0gICBEQ0hFQ0tfQ0FMTEVE X09OX1ZBTElEX1NFUVVFTkNFKHNlcXVlbmNlX2NoZWNrZXJfKTsKLSAgIERDSEVDSyhjbGllbnRf aW5mb18pOwotICAgcmV0dXJuIGFic2w6OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQo Ci0rICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgW10oR2xvYmFsUmVuZGVyRnJh bWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICByZXR1cm4gYmxp bms6Om1vam9tOjpTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6a1dpbmRvdzsKLSAgICAgICAgICAg fSwKLUBAIC04NzksNyArODc5LDcgQEAgU2VydmljZVdvcmtlckNvbnRhaW5lckhvc3Q6OkdldENs aWVudFR5cAotICAgICAgICAgICB9LAotICAgICAgICAgICBbXShibGluazo6U2hhcmVkV29ya2Vy VG9rZW4gc2hhcmVkX3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAgIHJldHVybiBibGluazo6 bW9qb206OlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjprU2hhcmVkV29ya2VyOwotLSAgICAgICAg ICB9KSwKLSsgICAgICAgICAgfX0sCi0gICAgICAgKmNsaWVudF9pbmZvXyk7Ci0gfQotIAotZGlm ZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3Jr ZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MudGhh biBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9z ZXJ2aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYwotLS0tIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZp Y2Vfd29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjLnRoYW4JMjAyNC0w Mi0yMiAyMjo0MzowNi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9tYWluX3Jlc291 cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1OTcxMjc3NCAr MDEwMAotQEAgLTM2MywxMCArMzYzLDEwIEBAIFNlcnZpY2VXb3JrZXJNYWluUmVzb3VyY2VMb2Fk ZXJJbnRlcmNlcHQKLSAgIH0KLSAgIGF1dG8qIHN0b3JhZ2VfcGFydGl0aW9uID0gcHJvY2Vzcy0+ R2V0U3RvcmFnZVBhcnRpdGlvbigpOwotIAotLSAgcmV0dXJuIGFic2w6OnZpc2l0KGJhc2U6Ok92 ZXJsb2FkZWQoWyYsIHRoaXNdKGF1dG8gdG9rZW4pIHsKLSsgIHJldHVybiBhYnNsOjp2aXNpdChi YXNlOjpPdmVybG9hZGVke1smLCB0aGlzXShhdXRvIHRva2VuKSB7Ci0gICAgICAgICAgICAgICAg ICAgICAgICByZXR1cm4gR2V0U3RvcmFnZUtleUZyb21Xb3JrZXJIb3N0KHN0b3JhZ2VfcGFydGl0 aW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB0b2tlbiwgb3JpZ2luKTsKLS0gICAgICAgICAgICAgICAgICAgICB9KSwKLSsgICAg ICAgICAgICAgICAgICAgICB9fSwKLSAgICAgICAgICAgICAgICAgICAgICAqd29ya2VyX3Rva2Vu Xyk7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dz ZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjLnRoYW4gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9o b3N0LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvd29ya2Vy X2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNi4w MDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nl ci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2MJMjAyNC0wMi0yNCAxMzoxMzo0 NC4xNTk3MTI3NzQgKzAxMDAKLUBAIC0yNTIsNyArMjUyLDcgQEAgdm9pZCBEZWRpY2F0ZWRXb3Jr ZXJIb3N0OjpTdGFydFNjcmlwdExvYQotICAgUmVuZGVyRnJhbWVIb3N0SW1wbCogY3JlYXRvcl9y ZW5kZXJfZnJhbWVfaG9zdCA9IG51bGxwdHI7Ci0gICBEZWRpY2F0ZWRXb3JrZXJIb3N0KiBjcmVh dG9yX3dvcmtlciA9IG51bGxwdHI7Ci0gCi0tICBhYnNsOjp2aXNpdChiYXNlOjpPdmVybG9hZGVk KAotKyAgYWJzbDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgICAgICAgICBb Jl0oY29uc3QgR2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7 Ci0gICAgICAgICAgICAgICAgICAgICBjcmVhdG9yX3JlbmRlcl9mcmFtZV9ob3N0ID0KLSAgICAg ICAgICAgICAgICAgICAgICAgICBSZW5kZXJGcmFtZUhvc3RJbXBsOjpGcm9tSUQocmVuZGVyX2Zy YW1lX2hvc3RfaWQpOwotQEAgLTI2MCw3ICsyNjAsNyBAQCB2b2lkIERlZGljYXRlZFdvcmtlckhv c3Q6OlN0YXJ0U2NyaXB0TG9hCi0gICAgICAgICAgICAgICAgICAgWyZdKGJsaW5rOjpEZWRpY2F0 ZWRXb3JrZXJUb2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAgICAgICAg ICAgICBjcmVhdG9yX3dvcmtlciA9IHNlcnZpY2VfLT5HZXREZWRpY2F0ZWRXb3JrZXJIb3N0RnJv bVRva2VuKAotICAgICAgICAgICAgICAgICAgICAgICAgIGRlZGljYXRlZF93b3JrZXJfdG9rZW4p OwotLSAgICAgICAgICAgICAgICAgIH0pLAotKyAgICAgICAgICAgICAgICAgIH19LAotICAgICAg ICAgICAgICAgY3JlYXRvcl8pOwotIAotICAgaWYgKCFjcmVhdG9yX3JlbmRlcl9mcmFtZV9ob3N0 ICYmICFjcmVhdG9yX3dvcmtlcikgewotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9u ZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mzox Ny4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L25ldC9kbnMvaG9z dF9yZXNvbHZlcl9jYWNoZS5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAot QEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIEhvc3RSZXNvbHZlckNhY2hlOjpTZXQoCi0gCi0gICBz dGQ6OnN0cmluZyBkb21haW5fbmFtZSA9IHJlc3VsdC0+ZG9tYWluX25hbWUoKTsKLSAgIGVudHJp ZXNfLmVtcGxhY2UoCi0tICAgICAgS2V5KHN0ZDo6bW92ZShkb21haW5fbmFtZSksIG5ldHdvcmtf YW5vbnltaXphdGlvbl9rZXkpLAotKyAgICAgIEtleXtzdGQ6Om1vdmUoZG9tYWluX25hbWUpLCBu ZXR3b3JrX2Fub255bWl6YXRpb25fa2V5fSwKLSAgICAgICBFbnRyeShzdGQ6Om1vdmUocmVzdWx0 KSwgc291cmNlLCBzZWN1cmUsIHN0YWxlbmVzc19nZW5lcmF0aW9uKSk7Ci0gCi0gICBpZiAoZW50 cmllc18uc2l6ZSgpID4gbWF4X2VudHJpZXNfKSB7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVf aW50ZXJwb2xhdGlvbi5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjCi0t LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0 Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQz OjI1LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNj CTIwMjQtMDItMjQgMTM6MTM6NDQuMTUyNzEyNjQ5ICswMTAwCi1AQCAtMzEsNyArMzEsNyBAQCBW ZWN0b3I8Rm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGU+Ci0gICAgICAgICBjb2xvcl9p bnRlcnBvbGF0aW9uX3NwYWNlLCBodWVfaW50ZXJwb2xhdGlvbl9tZXRob2QsIHN0YXJ0X2NvbG9y LAotICAgICAgICAgZW5kX2NvbG9yLCBwZXJjZW50YWdlLCBhbHBoYV9tdWx0aXBsaWVyKTsKLSAK LS0gICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGUgcmVzdWx0X2NvbG9yX3JlY29y ZChpLCByZXN1bHRfY29sb3IpOwotKyAgICBGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVPdmVycmlk ZSByZXN1bHRfY29sb3JfcmVjb3Jke3N0YXRpY19jYXN0PGludD4oaSksIHJlc3VsdF9jb2xvcn07 Ci0gICAgIHJlc3VsdF9jb2xvcl9yZWNvcmRzLnB1c2hfYmFjayhyZXN1bHRfY29sb3JfcmVjb3Jk KTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHRfY29sb3JfcmVjb3JkczsKLWRpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIv Y3BkZl9yZW5kZXJzdGF0dXMuY3BwLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9w YXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAKLS0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkv cmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNwcC50aGFuCTIwMjQtMDItMjIgMjI6NDU6MDIuMDAw MDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZp dW0vY29yZS9mcGRmYXBpL3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAJMjAyNC0wMi0yNCAx MzoxMzo0NC4xNTM3MTI2NjcgKzAxMDAKLUBAIC01MDcsNyArNTA3LDcgQEAgdm9pZCBDUERGX1Jl bmRlclN0YXR1czo6UHJvY2Vzc0NsaXBQYXRoKAotICAgICB9IGVsc2UgewotICAgICAgIG1fcERl dmljZS0+U2V0Q2xpcF9QYXRoRmlsbCgKLSAgICAgICAgICAgKnBQYXRoLCAmbXRPYmoyRGV2aWNl LAotLSAgICAgICAgICBDRlhfRmlsbFJlbmRlck9wdGlvbnMoQ2xpcFBhdGguR2V0Q2xpcFR5cGUo aSkpKTsKLSsgICAgICAgICAgQ0ZYX0ZpbGxSZW5kZXJPcHRpb25ze0NsaXBQYXRoLkdldENsaXBU eXBlKGkpfSk7Ci0gICAgIH0KLSAgIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oLnRoYW4gY2hyb21pdW0tMTIy LjAuNjI2MS42OS91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgKLS0tLSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaC50 aGFuCTIwMjQtMDItMjIgMjI6NDQ6MTIuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIy LjAuNjI2MS42OS91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgJMjAyNC0wMi0y NCAxMzoxMzo0NC4xNTM3MTI2NjcgKzAxMDAKLUBAIC01Miw1MyArNTIsNTMgQEAgY29uc3RleHBy IGF1dG8ga0Nocm9tYXRpY2l0eU1hcCA9IGJhc2U6OgotICAgICB6Y3JfY29sb3JfbWFuYWdlcl92 MV9jaHJvbWF0aWNpdHlfbmFtZXMsCi0gICAgIFByaW1hcnlWZXJzaW9uPigKLSAgICAge3taQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ2MDFfNTI1X0xJTkUsCi0tICAg ICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcwTSwK LS0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgIFBy aW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCi0rICAg ICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ2MDFfNjI1X0xJTkUsCi0tICAgICAg UHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNDcwQkcsCi0tICAg ICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5 VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0NzBCRywKLSsgICAgICAgICAg ICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTE3ME0sCi0tICAgICAgUHJpbWFyeVZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcwTSwKLS0gICAgICAgICAgICAg ICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgIFByaW1hcnlWZXJzaW9ue2dm eDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCi0rICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9D SFJPTUFUSUNJVFlfTkFNRVNfQlQ3MDksCi0tICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAg IFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1 bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfQlQyMDIwLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 UHJpbWFyeUlEOjpCVDIwMjAsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgUHJpbWFy eVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUMjAyMCwga0RlZmF1bHRTaW5j ZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFN RVNfU1JHQiwKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJ RDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgUHJpbWFyeVZlcnNpb257 Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19 LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19ESVNQTEFZ UDMsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlAz LCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29s b3JTcGFjZTo6UHJpbWFyeUlEOjpQMywga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHta Q1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQURPQkVSR0IsCi0tICAgICAg UHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkFET0JFX1JHQiwKLS0g ICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgIFByaW1h cnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpBRE9CRV9SR0IsCi0rICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfV0lERV9HQU1VVF9DT0xPUl9TUElOLAotLSAg ICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBn Zng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6V0lERV9HQU1VVF9DT0xPUl9TUElOLAotLSAgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfV0lERV9HQU1VVF9D T0xPUl9TUElOX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRfQ09MT1JfU1BJTl9TSU5DRV9WRVJTSU9O fX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNDcw TSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAg ICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNDcwTSwKLS0gICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNDcwTV9TSU5DRV9WRVJTSU9O KX0sCi0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19C VDQ3ME1fU0lOQ0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9N QVRJQ0lUWV9OQU1FU19TTVBURTI0ME0sCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAg UHJpbWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpT TVBURTI0ME0sCi0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9O QU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT059fSwKLSAg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfWFlaX0Q1MCwKLS0g ICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAg Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlhZWl9ENTAsCi0tICAgICAgICAgIFpDUl9DT0xP Ul9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpfRDUwX1NJTkNFX1ZFUlNJT04pfSwK LSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9E NTBfU0lOQ0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJ Q0lUWV9OQU1FU19TTVBURVNUNDI4XzEsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAg UHJpbWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpT TVBURVNUNDI4XzEsCi0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lU WV9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJ T059fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01Q VEVTVDQzMV8yLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9u ewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEVTVDQzMV8yLAot LSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVT VDQzMV8yX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf Q0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MzFfMl9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0ZJTE0sCi0tICAgICAgUHJp bWFyeVZlcnNpb24oCi0rICAgICAgUHJpbWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29s b3JTcGFjZTo6UHJpbWFyeUlEOjpGSUxNLAotLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9DSFJPTUFUSUNJVFlfTkFNRVNfRklMTV9TSU5DRV9WRVJTSU9OKX19KTsKLSsgICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0ZJTE1fU0lOQ0VfVkVSU0lP Tn19fSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB0aGUgemNyX2NvbG9yX21hbmFnZXJfdjEgZW90Zl9u YW1lcyBlbnVtIHZhbHVlcwotIC8vIHJlcHJlc2VudGluZyB3ZWxsLWtub3duIEVPVEZzLCB0byB0 aGVpciBlcXVpdmFsZW50IFRyYW5zZmVySURzLgotQEAgLTEwNyw2OCArMTA3LDY4IEBAIGNvbnN0 ZXhwciBhdXRvIGtFb3RmTWFwID0gYmFzZTo6TWFrZUZpeGUKLSAgICAgemNyX2NvbG9yX21hbmFn ZXJfdjFfZW90Zl9uYW1lcywKLSAgICAgVHJhbnNmZXJWZXJzaW9uPih7Ci0gICAgIHtaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xJTkVBUiwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihn Zng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxJTkVBUiwKLS0gICAgICAgICAgICAgICAgICAg ICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29s b3JTcGFjZTo6VHJhbnNmZXJJRDo6TElORUFSLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZh dWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X1NSR0IsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklE OjpTUkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dm eDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwK LSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFIsCi0tICAgICBU cmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCX0hEUiwKLS0g ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0Jf SERSX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3Bh Y2U6OlRyYW5zZmVySUQ6OlNSR0JfSERSLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOSwKLS0gICAgIFRyYW5zZmVyVmVy c2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUNzA5LAotLSAgICAgICAgICAgICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lP Til9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6 QlQ3MDksCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0JUMjA4NywKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6 OlRyYW5zZmVySUQ6OkdBTU1BMjQsCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5j ZVZlcnNpb24pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5z ZmVySUQ6OkdBTU1BMjQsCi0rICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQURPQkVSR0IsCi0g ICAgICAvLyBUaGlzIGlzIGV2ZXIgc28gc2xpZ2h0bHkgaW5hY2N1cmF0ZS4gVGhlIG51bWJlciBv dWdodCB0byBiZQotICAgICAgLy8gMi4xOTkyMTg3NWYsIG5vdCAyLjIKLS0gICAgIFRyYW5zZmVy VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMjIsCi0tICAgICAgICAg ICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lv bntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMjIsCi0rICAgICAgICAgICAgICAg ICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfUFEsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpQUSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgIFRyYW5zZmVyVmVy c2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlBRLCBrRGVmYXVsdFNpbmNlVmVyc2lv bn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEcsCi0tICAgICBU cmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpITEcsCi0tICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0Vf VkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNm ZXJJRDo6SExHLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfU01QVEUxNzBNLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6VHJhbnNmZXJJRDo6U01QVEUxNzBNLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUxNzBNX1NJTkNFX1ZFUlNJT04pfSwKLSsg ICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMTcw TSwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X1NNUFRFMTcwTV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX1NNUFRFMjQwTSwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6OlRyYW5zZmVySUQ6OlNNUFRFMjQwTSwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTI0ME0s Ci0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19T TVBURTI0ME1fU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19TTVBURVNUNDI4XzEsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oCi0rICAgICBUcmFu c2ZlclZlcnNpb257Ci0gICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBU RVNUNDI4XzEsCi0tICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBU RVNUNDI4XzFfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRy YW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPRywKLSsgICAgICAg ICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19TSU5DRV9W RVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19TUVJU LAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9H X1NRUlQsCi0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19MT0dfU1FSVF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4 OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0dfU1FSVCwKLSsgICAgICAgICAgICAgICAgICAg ICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19TUVJUX1NJTkNFX1ZFUlNJT059 fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSUVDNjE5NjZfMl80LAot LSAgICAgVHJhbnNmZXJWZXJzaW9uKAotKyAgICAgVHJhbnNmZXJWZXJzaW9uewotICAgICAgICAg IGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6SUVDNjE5NjZfMl80LAotLSAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSUVDNjE5NjZfMl80X1NJTkNFX1ZFUlNJT04p fSwKLSsgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lFQzYxOTY2XzJf NF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0JUMTM2MV9FQ0csCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpCVDEzNjFfRUNHLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfQlQxMzYxX0VDR19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFu c2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDEzNjFfRUNHLAotKyAg ICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQxMzYx X0VDR19TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX0JUMjAyMF8xMCwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OkJUMjAyMF8xMCwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFu c2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIwMjBfMTAsCi0rICAg ICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBf MTBfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19CVDIwMjBfMTIsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpCVDIwMjBfMTIsCi0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNm ZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEyLAotKyAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEy X1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf U0NSR0JfTElORUFSXzgwX05JVFMsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oCi0rICAgICBUcmFu c2ZlclZlcnNpb257Ci0gICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTQ1JH Ql9MSU5FQVJfODBfTklUUywKLS0gICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX1NDUkdCX0xJTkVBUl84MF9OSVRTX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NDUkdCX0xJTkVBUl84MF9OSVRTX1NJTkNFX1ZF UlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUExOCwK LS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1B MTgsCi0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19HQU1NQTE4X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMTgsCi0rICAgICAgICAgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTE4X1NJTkNFX1ZFUlNJT059fSwKLSAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOCwKLS0gICAgIFRyYW5z ZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMjgsCi0tICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTI4X1NJ TkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OkdBTU1BMjgsCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19HQU1NQTI4X1NJTkNFX1ZFUlNJT059fSwKLSB9KTsKLSAKLSAvLyBB IG1hcCBmcm9tIHRoZSBTRFIgemNyX2NvbG9yX21hbmFnZXJfdjEgZW90Zl9uYW1lcyBlbnVtIHZh bHVlcwotQEAgLTE3NywxOCArMTc3LDE4IEBAIGNvbnN0ZXhwciBhdXRvIGtFb3RmTWFwID0gYmFz ZTo6TWFrZUZpeGUKLSBjb25zdGV4cHIgYXV0byBrVHJhbnNmZXJNYXAgPQotICAgICBiYXNlOjpN YWtlRml4ZWRGbGF0TWFwPHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2VvdGZfbmFtZXMsIFRyYW5zZmVy Rm5WZXJzaW9uPih7Ci0gICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19M SU5FQVIsCi0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm46OmtM aW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgVHJhbnNmZXJGblZlcnNp b257U2tOYW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0g ICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCLAotLSAgICAgICAg IFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQiwga0RlZmF1bHRT aW5jZVZlcnNpb24pfSwKLSsgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNm ZXJGbkV4dDo6a1NSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOSwKLS0gICAgICAgICBUcmFuc2ZlckZuVmVy c2lvbigKLSsgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbnsKLSAgICAgICAgICAgICAgU2tOYW1l ZFRyYW5zZmVyRm5FeHQ6OmtSZWM3MDksCi0tICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT059fSwKLSAgICAg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjA4NywKLS0gICAgICAgICBU cmFuc2ZlckZuVmVyc2lvbihnYW1tYTI0LCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAg ICAgIFRyYW5zZmVyRm5WZXJzaW9ue2dhbW1hMjQsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0g ICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19BRE9CRVJHQiwKLS0gICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbkV4dDo6a0E5OFJHQiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAg ICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuRXh0OjprQTk4UkdCLAotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIH0p OwotIAotIC8vIEEgbWFwIGZyb20gdGhlIEhEUiB6Y3JfY29sb3JfbWFuYWdlcl92MSBlb3RmX25h bWVzIGVudW0gdmFsdWVzCi1AQCAtMTk3LDcwICsxOTcsNzAgQEAgY29uc3RleHByIGF1dG8ga1Ry YW5zZmVyTWFwID0KLSBjb25zdGV4cHIgYXV0byBrSERSVHJhbnNmZXJNYXAgPQotICAgICBiYXNl OjpNYWtlRml4ZWRGbGF0TWFwPHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2VvdGZfbmFtZXMsIFRyYW5z ZmVyRm5WZXJzaW9uPigKLSAgICAgICAgIHt7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19MSU5FQVIsCi0tICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZu OjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBUcmFuc2ZlckZu VmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb259 fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUiwK LS0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oCi0rICAgICAgICAgIFRyYW5zZmVyRm5WZXJz aW9uewotICAgICAgICAgICAgICAgU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCLAotLSAgICAg ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9W RVJTSU9OKX0sCi0rICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X1NSR0JfSERSX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19QUSwKLS0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRy YW5zZmVyRm46OmtQUSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgVHJhbnNm ZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtQUSwga0RlZmF1bHRTaW5jZVZlcnNpb259 fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEcsCi0tICAg ICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuOjprSExHLAotLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hM R19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRU cmFuc2ZlckZuOjprSExHLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURTUkdCMTAsCi0tICAgICAgICAg IFRyYW5zZmVyRm5WZXJzaW9uKAotKyAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbnsKLSAgICAg ICAgICAgICAgIFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQkV4dGVuZGVkMTAyM092ZXI1MTAs Ci0tICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VYVEVOREVE U1JHQjEwX1NJTkNFX1ZFUlNJT04pfX0pOwotKyAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0IxMF9TSU5DRV9WRVJTSU9OfX19KTsKLSAKLSAv LyBBIG1hcCBmcm9tIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIG1hdHJpeF9uYW1lcyBlbnVtIHZhbHVl cyB0bwotIC8vIGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SURzLgotIGNvbnN0ZXhwciBhdXRvIGtN YXRyaXhNYXAgPQotICAgICBiYXNlOjpNYWtlRml4ZWRGbGF0TWFwPHpjcl9jb2xvcl9tYW5hZ2Vy X3YxX21hdHJpeF9uYW1lcywgTWF0cml4VmVyc2lvbj4oCi0gICAgICAgICB7e1pDUl9DT0xPUl9N QU5BR0VSX1YxX01BVFJJWF9OQU1FU19SR0IsCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4 OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6UkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAg ICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlJHQiwga0Rl ZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFU UklYX05BTUVTX0JUNzA5LAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6TWF0cml4SUQ6OkJUNzA5LAotLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2lu Y2VWZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpN YXRyaXhJRDo6QlQ3MDksCi0rICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JU NDcwQkcsCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oCi0rICAgICAgICAgIE1hdHJpeFZlcnNp b257Ci0gICAgICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDQ3MEJHLAot LSAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUNDcwQkdf U0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFU UklYX05BTUVTX0JUNDcwQkdfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQyMDIwX05DTCwKLS0gICAgICAgICAgTWF0cml4VmVy c2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfTkNMLAotLSAgICAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX05DTCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09M T1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQyMDIwX0NMLAotLSAgICAgICAgICBNYXRyaXhW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9DTCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRyaXhW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9DTCwKLSsgICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09M T1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfRkNDLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkZDQywga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK LSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpGQ0Ms IGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X01BVFJJWF9OQU1FU19ZQ09DRywKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9y U3BhY2U6Ok1hdHJpeElEOjpZQ09DRywKLS0gICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWUNPQ0dfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAg ICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllDT0NHLAotKyAg ICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19Z Q09DR19TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01B VFJJWF9OQU1FU19ZRFpEWCwKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6Ok1hdHJpeElEOjpZRFpEWCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWURaRFhfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAg ICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllEWkRYLAotKyAgICAg ICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZRFpE WF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJ WF9OQU1FU19HQlIsCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpN YXRyaXhJRDo6R0JSLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX01BVFJJWF9OQU1FU19HQlJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBNYXRyaXhW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkdCUiwKLSsgICAgICAgICAgICAgICAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfR0JSX1NJTkNFX1ZFUlNJ T059fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1NNUFRF MTcwTSwKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElE OjpTTVBURTE3ME0sCi0tICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b24pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElE OjpTTVBURTE3ME0sCi0rICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1NNUFRF MjQwTSwKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElE OjpTTVBURTI0ME0sCi0tICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b24pfX0pOwotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4 SUQ6OlNNUFRFMjQwTSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVy c2lvbn19fSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB6Y3JfY29sb3JfbWFuYWdlcl92MSByYW5nZV9u YW1lcyBlbnVtIHZhbHVlcyB0bwotIC8vIGdmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRHMuCi0gY29u c3RleHByIGF1dG8ga1JhbmdlTWFwID0KLSAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3Jf Y29sb3JfbWFuYWdlcl92MV9yYW5nZV9uYW1lcywgUmFuZ2VWZXJzaW9uPigKLSAgICAgICAgIHt7 WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFOR0VfTkFNRVNfTElNSVRFRCwKLS0gICAgICAgICAgUmFu Z2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6TElNSVRFRCwKLS0gICAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIFJhbmdlVmVy c2lvbntnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkxJTUlURUQsCi0rICAgICAgICAgICAgICAg ICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFO QUdFUl9WMV9SQU5HRV9OQU1FU19GVUxMLAotLSAgICAgICAgICBSYW5nZVZlcnNpb24oZ2Z4OjpD b2xvclNwYWNlOjpSYW5nZUlEOjpGVUxMLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAg ICAgICBSYW5nZVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpGVUxMLCBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9SQU5HRV9O QU1FU19ERVJJVkVELAotLSAgICAgICAgICBSYW5nZVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpS YW5nZUlEOjpERVJJVkVELAotLSAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb24pfX0pOwotKyAgICAgICAgICBSYW5nZVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5n ZUlEOjpERVJJVkVELAotKyAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b259fX0pOwotIAotIHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2Nocm9tYXRpY2l0eV9uYW1lcyBUb0Nv bG9yTWFuYWdlckNocm9tYXRpY2l0eSgKLSAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQg cHJpbWFyeUlELAotQEAgLTI4Myw0ICsyODMsNCBAQCB6Y3JfY29sb3JfbWFuYWdlcl92MV9lb3Rm X25hbWVzIFRvQ29sb3JNCi0gCi0gfSAgLy8gbmFtZXNwYWNlIHVpOjp3YXlsYW5kCi0gCi0tI2Vu ZGlmICAvLyBVSV9CQVNFX1dBWUxBTkRfQ09MT1JfTUFOQUdFUl9VVElMX0hfCi1cIEtlaW4gWmVp bGVudW1icnVjaCBhbSBEYXRlaWVuZGUuCi0rI2VuZGlmICAvLyBVSV9CQVNFX1dBWUxBTkRfQ09M T1JfTUFOQUdFUl9VVElMX0hfCi1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3VpL2d0 ay9ndGtfdWkuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3VpL2d0ay9ndGtfdWkuY2MK LS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3VpL2d0ay9ndGtfdWkuY2MudGhhbgkyMDI0LTAy LTIyIDIyOjQ0OjEzLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv dWkvZ3RrL2d0a191aS5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyArMDEwMAotQEAg LTEwMDcsMTEgKzEwMDcsMTEgQEAgdWk6OkRpc3BsYXlDb25maWcgR3RrVWk6OkdldERpc3BsYXlD b25maQotICAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnk7Ci0gICAgIGdka19tb25pdG9yX2dldF9n ZW9tZXRyeShtb25pdG9yLCAmZ2VvbWV0cnkpOwotICAgICBpbnQgbW9uaXRvcl9zY2FsZSA9IHN0 ZDo6bWF4KDEsIGdka19tb25pdG9yX2dldF9zY2FsZV9mYWN0b3IobW9uaXRvcikpOwotLSAgICBj b25maWcuZGlzcGxheV9nZW9tZXRyaWVzLmVtcGxhY2VfYmFjaygKLSsgICAgY29uZmlnLmRpc3Bs YXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAgIGdmeDo6UmVjdChtb25p dG9yX3NjYWxlICogZ2VvbWV0cnkueCwgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LnksCi0gICAg ICAgICAgICAgICAgICAgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LndpZHRoLAotICAgICAgICAg ICAgICAgICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS5oZWlnaHQpLAotLSAgICAgICAgbW9u aXRvcl9zY2FsZSAqIGZvbnRfc2NhbGUpOwotKyAgICAgICAgc3RhdGljX2Nhc3Q8ZmxvYXQ+KG1v bml0b3Jfc2NhbGUgKiBmb250X3NjYWxlKX07Ci0gICB9Ci0gICByZXR1cm4gY29uZmlnOwotIH0K LWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9tZW1vcnlfcHJlc3N1 cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY29tcG9uZW50cy9tZW1vcnlfcHJlc3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9y LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL21lbW9yeV9wcmVzc3Vy ZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MubWUJMjAyNC0wMi0yNCAxODowNjo0Ni41 MDkzOTMwMzIgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvbWVt b3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5jYwkyMDI0LTAyLTI0IDE4 OjA3OjExLjI1ODk0ODI0MSArMDEwMAotQEAgLTkyLDggKzkyLDggQEAgdm9pZCBVbm5lY2Vzc2Fy eURpc2NhcmRNb25pdG9yOjpPbkRpc2NhcgotICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFV RU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7Ci0gICBpZiAoY3VycmVudF9yZWNsYWltX2V2ZW50Xykg ewotICAgICAvLyBDYWNoZSB0aGlzIGtpbGwgZXZlbnQgYWxvbmcgd2l0aCB0aGUgdGltZSBpdCB0 b29rIHBsYWNlLgotLSAgICBjdXJyZW50X3JlY2xhaW1fZXZlbnRfa2lsbHNfLmVtcGxhY2VfYmFj ayhtZW1vcnlfZnJlZWRfa2IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGRpc2NhcmRfY29tcGxldGVfdGltZSk7Ci0rICAgIGN1cnJlbnRfcmVjbGFpbV9l dmVudF9raWxsc18uZW1wbGFjZV9iYWNrKCkgPSB7bWVtb3J5X2ZyZWVkX2tiLAotKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJkX2NvbXBsZXRlX3Rp bWV9OwotICAgfQotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9u ZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRv ZmlsbF90YWJsZS5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2Zp bGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0b2ZpbGxfdGFibGUu Y2MKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9i cm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0b2ZpbGxfdGFibGUuY2MubWUJMjAy NC0wMi0yNCAxOTo1ODowOS45MjkzNzE3OTEgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2Fk ZHJlc3NfYXV0b2ZpbGxfdGFibGUuY2MJMjAyNC0wMi0yNCAxOTo1OTowNy4xNDk1MjQ4NjIgKzAx MDAKLUBAIC02MzEsMTAgKzYzMSwxMCBAQCBzdGQ6OnVuaXF1ZV9wdHI8QXV0b2ZpbGxQcm9maWxl PiBBZGRyZXNzCi0gICAgIH0KLSAKLSAgICAgYmFzZTo6c3Bhbjxjb25zdCB1aW50OF90PiBvYnNl cnZhdGlvbnNfZGF0YSA9IHMuQ29sdW1uQmxvYigzKTsKLS0gICAgZmllbGRfdHlwZV92YWx1ZXMu ZW1wbGFjZV9iYWNrKAotKyAgICBmaWVsZF90eXBlX3ZhbHVlcy5lbXBsYWNlX2JhY2soKSA9IHsK LSAgICAgICAgIHR5cGUsIHMuQ29sdW1uU3RyaW5nMTYoMSksIHMuQ29sdW1uSW50KDIpLAotICAg ICAgICAgc3RkOjp2ZWN0b3I8dWludDhfdD4ob2JzZXJ2YXRpb25zX2RhdGEuYmVnaW4oKSwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmF0aW9uc19kYXRhLmVuZCgpKSk7Ci0r ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhdGlvbnNfZGF0YS5lbmQoKSl9Owot IAotICAgICBpZiAodHlwZSA9PSBBRERSRVNTX0hPTUVfQ09VTlRSWSkgewotICAgICAgIGNvdW50 cnlfY29kZSA9IGJhc2U6OlVURjE2VG9VVEY4KHMuQ29sdW1uU3RyaW5nMTYoMSkpOwotZGlmZiAt dXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nl ci93ZWJkYXRhL2FkZHJlc3Nlcy9jb250YWN0X2luZm9fc3luY191dGlsLmNjLm1lIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9h ZGRyZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMv Y29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYy5tZQkyMDI0LTAyLTI0IDE5OjUyOjAyLjE3MzY4MjA2 MCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9j b3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYwky MDI0LTAyLTI0IDE5OjUyOjI1LjI0NzIxNjMyOSArMDEwMAotQEAgLTE5Miw5ICsxOTIsOSBAQCBj bGFzcyBDb250YWN0SW5mb1Byb2ZpbGVTZXR0ZXIgewotICAgICAgIENIRUNLKG9ic2VydmF0aW9u cy5lbXB0eSgpKTsKLSAgICAgICBmb3IgKGNvbnN0IHN5bmNfcGI6OkNvbnRhY3RJbmZvU3BlY2lm aWNzOjpPYnNlcnZhdGlvbiYgcHJvdG9fb2JzZXJ2YXRpb24gOgotICAgICAgICAgICAgbWV0YWRh dGEub2JzZXJ2YXRpb25zKCkpIHsKLS0gICAgICAgIG9ic2VydmF0aW9ucy5lbXBsYWNlX2JhY2so cHJvdG9fb2JzZXJ2YXRpb24udHlwZSgpLAotKyAgICAgICAgb2JzZXJ2YXRpb25zLmVtcGxhY2Vf YmFjaygpID0ge3Byb3RvX29ic2VydmF0aW9uLnR5cGUoKSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgUHJvZmlsZVRva2VuUXVhbGl0eTo6Rm9ybVNpZ25hdHVyZUhhc2goCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b19vYnNlcnZhdGlvbi5m b3JtX2hhc2goKSkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJv dG9fb2JzZXJ2YXRpb24uZm9ybV9oYXNoKCkpfTsKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLWRp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZlbmNlZF9mcmFt ZS9mZW5jZWRfZnJhbWVfY29uZmlnLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVu dC9icm93c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJhbWVfY29uZmlnLmNjCi0tLS0gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFt ZV9jb25maWcuY2MubWUJMjAyNC0wMi0yNSAwMDoxNDoyNi44MzAzMjMzNjUgKzAxMDAKLSsrKyBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2Vk X2ZyYW1lX2NvbmZpZy5jYwkyMDI0LTAyLTI1IDAwOjE1OjE3LjkzOTI0MTA5MSArMDEwMAotQEAg LTQwMiw3ICs0MDIsNyBAQCB2b2lkIEZlbmNlZEZyYW1lUHJvcGVydGllczo6VXBkYXRlUGFyZW50 Ci0gICAgICAgICBmZWF0dXJlLCBhbGxvd19saXN0LkFsbG93ZWRPcmlnaW5zKCksIGFsbG93X2xp c3QuU2VsZklmTWF0Y2hlcygpLAotICAgICAgICAgYWxsb3dfbGlzdC5NYXRjaGVzQWxsKCksIGFs bG93X2xpc3QuTWF0Y2hlc09wYXF1ZVNyYygpKTsKLSAgIH0KLS0gIHBhcmVudF9wZXJtaXNzaW9u c19pbmZvXy5lbXBsYWNlKHBhcnNlZF9wb2xpY2llcywgcGFyZW50X29yaWdpbik7Ci0rICBwYXJl bnRfcGVybWlzc2lvbnNfaW5mb18uZW1wbGFjZSgpID0ge3BhcnNlZF9wb2xpY2llcywgcGFyZW50 X29yaWdpbn07Ci0gfQotIAotIH0gIC8vIG5hbWVzcGFjZSBjb250ZW50Ci1kaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVz dF9ncm91cF9zdG9yYWdlLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93 c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MKLS0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9n cm91cF9zdG9yYWdlLmNjLm1lCTIwMjQtMDItMjUgMDA6MTc6MzEuNzk5NjQ0NjkxICswMTAwCi0r KysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAv aW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYwkyMDI0LTAyLTI1IDAwOjE4OjU0LjE1NzEyMzUxOSAr MDEwMAotQEAgLTMzMzIsOSArMzMzMiw5IEBAIHN0ZDo6b3B0aW9uYWw8RGVidWdSZXBvcnRDb29s ZG93bj4gRG9HZXQKLSAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgIH0KLSAKLS0gIHJldHVy biBEZWJ1Z1JlcG9ydENvb2xkb3duKGNvb2xkb3duX2RlYnVnZ2luZ19vbmx5X3JlcG9ydC5Db2x1 bW5UaW1lKDApLAotKyAgcmV0dXJuIERlYnVnUmVwb3J0Q29vbGRvd257Y29vbGRvd25fZGVidWdn aW5nX29ubHlfcmVwb3J0LkNvbHVtblRpbWUoMCksCi0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBzdGF0aWNfY2FzdDxEZWJ1Z1JlcG9ydENvb2xkb3duVHlwZT4oCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29vbGRvd25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNvbHVt bkludCgxKSkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvb2xkb3duX2Rl YnVnZ2luZ19vbmx5X3JlcG9ydC5Db2x1bW5JbnQoMSkpfTsKLSB9Ci0gCi0gdm9pZCBEb0dldERl YnVnUmVwb3J0Q29vbGRvd25zKAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJv bWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0aW9uX3NlcnZpY2UuaC5tZSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9u b3RpZmljYXRpb25fc2VydmljZS5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv YnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0aW9uX3NlcnZpY2UuaC5tZQkyMDI0 LTAyLTI1IDE1OjM0OjE2LjE0MDc2ODQ0NSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNl LmgJMjAyNC0wMi0yNSAxNTozNzo0Ny43ODk2NjU4MzUgKzAxMDAKLUBAIC0yNCw2ICsyNCw3IEBA IHN0cnVjdCBNZW51Tm90aWZpY2F0aW9uRW50cnkgewotICAgaW50IGNvbW1hbmQgPSAwOwotICAg c3RkOjp1MTZzdHJpbmcgbGFiZWw7Ci0gICBzYWZldHlfaHViOjpTYWZldHlIdWJNb2R1bGVUeXBl IG1vZHVsZTsKLSsgIE1lbnVOb3RpZmljYXRpb25FbnRyeShhdXRvIGMsIGF1dG8gbCwgYXV0byBt KSA6IGNvbW1hbmQoYyksIGxhYmVsKGwpLCBtb2R1bGUobSkgeyB9Ci0gfTsKLSAKLSBuYW1lc3Bh Y2UgewotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92 aWV3cy90YWJzL3RhYl9zdHlsZV92aWV3cy5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjCi0tLS0gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHlsZV92 aWV3cy5jYy5tZQkyMDI0LTAyLTI1IDE2OjIyOjQ2LjYwMTIwOTI2OSArMDEwMAotKysrIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJfc3R5bGVf dmlld3MuY2MJMjAyNC0wMi0yNSAxNjoyNDo0OC4xMTA2MTg0NzUgKzAxMDAKLUBAIC0xMjE0LDEw ICsxMjE0LDEwIEBAIFNrUGF0aCBDaHJvbWVSZWZyZXNoMjAyM1RhYlN0eWxlVmlld3M6OkcKLSAK LSAgICAgLy8gUmFkaWkgYXJlIGNsb2Nrd2lzZSBmcm9tIHRvcCBsZWZ0LgotICAgICBjb25zdCBT a1ZlY3RvciByYWRpaVs0XSA9IHsKLS0gICAgICAgIFNrVmVjdG9yKHRvcF9jb250ZW50X2Nvcm5l cl9yYWRpdXMsIHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAotLSAgICAgICAgU2tWZWN0b3Io dG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cyksCi0t ICAgICAgICBTa1ZlY3Rvcihib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzLCBib3R0b21fY29u dGVudF9jb3JuZXJfcmFkaXVzKSwKLS0gICAgICAgIFNrVmVjdG9yKGJvdHRvbV9jb250ZW50X2Nv cm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMpfTsKLSsgICAgICAgIFNr VmVjdG9ye3RvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9jb250ZW50X2Nvcm5lcl9yYWRp dXN9LAotKyAgICAgICAgU2tWZWN0b3J7dG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2Nv bnRlbnRfY29ybmVyX3JhZGl1c30sCi0rICAgICAgICBTa1ZlY3Rvcntib3R0b21fY29udGVudF9j b3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzfSwKLSsgICAgICAgIFNr VmVjdG9ye2JvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5l cl9yYWRpdXN9fTsKLSAgICAgU2tSUmVjdCBycmVjdDsKLSAgICAgcnJlY3Quc2V0UmVjdFJhZGlp KFNrUmVjdDo6TWFrZUxUUkIobGVmdCwgdG9wLCByaWdodCwgYm90dG9tKSwgcmFkaWkpOwotICAg ICBTa1BhdGggcGF0aDsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvZmlsZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlz c2lvbl9jb250ZXh0LmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIv ZmlsZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9j b250ZXh0LmNjCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9maWxl X3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRl eHQuY2MubWUJMjAyNC0wMi0yNSAxODo0OTozMi41MTIwODAwODUgKzAxMDAKLSsrKyBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVf ZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1pc3Npb25fY29udGV4dC5jYwkyMDI0LTAyLTI1IDE5OjA3 OjM2LjUxODcxMTY5MyArMDEwMAotQEAgLTM4Niw3ICszODYsNyBAQCBib29sIFNob3VsZEJsb2Nr QWNjZXNzVG9QYXRoKGNvbnN0IGJhc2U6Ci0gICAgICAgRENIRUNLKGJsb2NrLnBhdGgpOwotICAg ICAgIGJsb2NrZWRfcGF0aCA9IGJhc2U6OkZpbGVQYXRoKGJsb2NrLnBhdGgpOwotICAgICB9Ci0t ICAgIHJ1bGVzLmVtcGxhY2VfYmFjayhibG9ja2VkX3BhdGgsIGJsb2NrLnR5cGUpOwotKyAgICBy dWxlcy5lbXBsYWNlX2JhY2soKSA9IHtibG9ja2VkX3BhdGgsIGJsb2NrLnR5cGV9OwotICAgfQot IAotICAgYmFzZTo6RmlsZVBhdGggbmVhcmVzdF9hbmNlc3RvcjsKLUBAIC0xNTc1LDExICsxNTc1 LDExIEBAIHZvaWQgQ2hyb21lRmlsZVN5c3RlbUFjY2Vzc1Blcm1pc3Npb25Db24KLSAgIC8vIHBy b2ZpbGUncyBkaXJlY3RvcnksIGFzc3VtaW5nIHRoZSBwcm9maWxlIGRpciBpcyBhIGNoaWxkIG9m IHRoZSB1c2VyIGRhdGEKLSAgIC8vIGRpci4KLSAgIHN0ZDo6dmVjdG9yPEJsb2NrUGF0aFJ1bGU+ IGV4dHJhX3J1bGVzOwotLSAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNrKHByb2ZpbGVfLT5HZXRQ YXRoKCkuRGlyTmFtZSgpLCBrQmxvY2tBbGxDaGlsZHJlbik7Ci0rICBleHRyYV9ydWxlcy5lbXBs YWNlX2JhY2soKSA9IHtwcm9maWxlXy0+R2V0UGF0aCgpLkRpck5hbWUoKSwga0Jsb2NrQWxsQ2hp bGRyZW59OwotICAgaWYgKGdfYnJvd3Nlcl9wcm9jZXNzLT5wcm9maWxlX21hbmFnZXIoKSkgewot LSAgICBleHRyYV9ydWxlcy5lbXBsYWNlX2JhY2soCi0rICAgIGV4dHJhX3J1bGVzLmVtcGxhY2Vf YmFjaygpID0gewotICAgICAgICAgZ19icm93c2VyX3Byb2Nlc3MtPnByb2ZpbGVfbWFuYWdlcigp LT51c2VyX2RhdGFfZGlyKCksCi0tICAgICAgICBrQmxvY2tBbGxDaGlsZHJlbik7Ci0rICAgICAg ICBrQmxvY2tBbGxDaGlsZHJlbn07Ci0gICB9Ci0gCi0gICBiYXNlOjpUaHJlYWRQb29sOjpQb3N0 VGFza0FuZFJlcGx5V2l0aFJlc3VsdCgKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y2hyb21lL2Jyb3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdlci9tZWNoYW5pc21zL3BhZ2VfZGlzY2Fy ZGVyLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcGVyZm9ybWFu Y2VfbWFuYWdlci9tZWNoYW5pc21zL3BhZ2VfZGlzY2FyZGVyLmNjCi0tLS0gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5hZ2VyL21lY2hhbmlzbXMv cGFnZV9kaXNjYXJkZXIuY2MubWUJMjAyNC0wMi0yNSAxOToxNDoxNi4yMjc4NDMxNDggKzAxMDAK LSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3BlcmZvcm1hbmNlX21h bmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRlci5jYwkyMDI0LTAyLTI1IDE5OjE1OjA0LjU4 OTMwNzQ2OCArMDEwMAotQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjp2ZWN0b3I8UGFnZURpc2NhcmRl cjo6RGlzY2FyZEV2ZW50PgotICAgICBpZiAobGlmZWN5Y2xlX3VuaXQtPkRpc2NhcmRUYWIoCi0g ICAgICAgICAgICAgZGlzY2FyZF9yZWFzb24sCi0gICAgICAgICAgICAgLyptZW1vcnlfZm9vdHBy aW50X2VzdGltYXRlPSovcHJveHkuc2Vjb25kKSkgewotLSAgICAgIGRpc2NhcmRfZXZlbnRzLmVt cGxhY2VfYmFjayhiYXNlOjpUaW1lVGlja3M6Ok5vdygpLCBwcm94eS5zZWNvbmQpOwotKyAgICAg IGRpc2NhcmRfZXZlbnRzLmVtcGxhY2VfYmFjaygpID0ge2Jhc2U6OlRpbWVUaWNrczo6Tm93KCks IHByb3h5LnNlY29uZH07Ci0gICAgIH0KLSAgIH0KLSAgIHJldHVybiBkaXNjYXJkX2V2ZW50czsK LWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZp Y2Vfd29ya2VyX3Rhc2tfcXVldWUuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2V4dGVuc2lv bnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmgKLS0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmgu bWUJMjAyNC0wMi0yNSAxNzoyNjoyNS42MjM1NzI0NTggKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmgJ MjAyNC0wMi0yNSAxNzoyOTo1Mi45ODMzNDUyODAgKzAxMDAKLUBAIC0yMDQsNiArMjA0LDcgQEAg Y2xhc3MgU2VydmljZVdvcmtlclRhc2tRdWV1ZSA6IHB1YmxpYyBLZQotICAgICByYXdfcHRyPGNv bnRlbnQ6OkJyb3dzZXJDb250ZXh0PiBicm93c2VyX2NvbnRleHQ7Ci0gICAgIGJhc2U6OlVuZ3Vl c3NhYmxlVG9rZW4gdG9rZW47Ci0gCi0rICAgIFNlcXVlbmNlZENvbnRleHRJZChhdXRvIGUsIGF1 dG8gYiwgYXV0byB0KSA6IGV4dGVuc2lvbl9pZChlKSwgYnJvd3Nlcl9jb250ZXh0KGIpLCB0b2tl bih0KSB7IH0KLSAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgU2VxdWVuY2VkQ29udGV4dElkJiBy aHMpIGNvbnN0IHsKLSAgICAgICByZXR1cm4gc3RkOjp0aWUoZXh0ZW5zaW9uX2lkLCBicm93c2Vy X2NvbnRleHQsIHRva2VuKSA8Ci0gICAgICAgICAgICAgIHN0ZDo6dGllKHJocy5leHRlbnNpb25f aWQsIHJocy5icm93c2VyX2NvbnRleHQsIHJocy50b2tlbik7Ci1kaWZmIC11cCBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3JlbmRlcmVyX2NvbnRleHRfbWVudS9yZW5kZXJf dmlld19jb250ZXh0X21lbnUuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJv d3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjCi0t LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0 X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjLm1lCTIwMjQtMDItMjUgMjA6MDU6NDAu NTY3ODkxMDc3ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nl ci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjCTIwMjQt MDItMjUgMjA6MDU6NDYuNDA3MDAxOTk3ICswMTAwCi1AQCAtMzk5MywxMCArMzk5MywxMCBAQCB2 b2lkIFJlbmRlclZpZXdDb250ZXh0TWVudTo6RXhlY09wZW5Db21wCi0gICAgIGF1dG9maWxsOjpM b2NhbEZyYW1lVG9rZW4gZnJhbWVfdG9rZW4gPSBkcml2ZXItPkdldEZyYW1lVG9rZW4oKTsKLSAg ICAgY2xpZW50LT5HZXRNYW5hZ2VyKCkuT3BlbkNvbXBvc2UoCi0gICAgICAgICAqZHJpdmVyLAot LSAgICAgICAgYXV0b2ZpbGw6OkZvcm1HbG9iYWxJZCgKLS0gICAgICAgICAgICBmcmFtZV90b2tl biwgYXV0b2ZpbGw6OkZvcm1SZW5kZXJlcklkKHBhcmFtc18uZm9ybV9yZW5kZXJlcl9pZCkpLAot LSAgICAgICAgYXV0b2ZpbGw6OkZpZWxkR2xvYmFsSWQoCi0tICAgICAgICAgICAgZnJhbWVfdG9r ZW4sIGF1dG9maWxsOjpGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5kZXJlcl9pZCkp LAotKyAgICAgICAgYXV0b2ZpbGw6OkZvcm1HbG9iYWxJZHsKLSsgICAgICAgICAgICBmcmFtZV90 b2tlbiwgYXV0b2ZpbGw6OkZvcm1SZW5kZXJlcklkKHBhcmFtc18uZm9ybV9yZW5kZXJlcl9pZCl9 LAotKyAgICAgICAgYXV0b2ZpbGw6OkZpZWxkR2xvYmFsSWR7Ci0rICAgICAgICAgICAgZnJhbWVf dG9rZW4sIGF1dG9maWxsOjpGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5kZXJlcl9p ZCl9LAotICAgICAgICAgY29tcG9zZTo6Q29tcG9zZU1hbmFnZXJJbXBsOjpVaUVudHJ5UG9pbnQ6 OmtDb250ZXh0TWVudSk7Ci0gICAgIG5ld19iYWRnZV90cmFja2VyXy5BY3Rpb25QZXJmb3JtZWQo ImNvbXBvc2VfbWVudV9pdGVtX2FjdGl2YXRlZCIpOwotICAgfSBlbHNlIHsKLS0tLSBjaHJvbWl1 bS0xMjMuMC42MzEyLjQ2L2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hf Y2xpZW50LmNjLm1lCTIwMjQtMDMtMTUgMTU6MTY6NDYuOTgwMTIzODA2ICswMTAwCi0rKysgY2hy b21pdW0tMTIzLjAuNjMxMi40Ni9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5p Ym94X2NsaWVudC5jYwkyMDI0LTAzLTE1IDE1OjE4OjM5LjAyNDA0MjU2MCArMDEwMAotQEAgLTQ3 NCwxMCArNDc0LDEwIEBACi0gICAgICAgICAgICAgICBhbHRlcm5hdGl2ZV9uYXZfbWF0Y2gpOwot IAotICAgLy8gU3RvcmUgdGhlIGRldGFpbHMgbmVjZXNzYXJ5IHRvIG9wZW4gdGhlIG9tbmlib3gg bWF0Y2ggdmlhIGJyb3dzZXIgY29tbWFuZHMuCi0tICBsb2NhdGlvbl9iYXJfLT5zZXRfbmF2aWdh dGlvbl9wYXJhbXMoTG9jYXRpb25CYXI6Ok5hdmlnYXRpb25QYXJhbXMoCi0rICBsb2NhdGlvbl9i YXJfLT5zZXRfbmF2aWdhdGlvbl9wYXJhbXMoTG9jYXRpb25CYXI6Ok5hdmlnYXRpb25QYXJhbXN7 Ci0gICAgICAgZGVzdGluYXRpb25fdXJsLCBkaXNwb3NpdGlvbiwgdHJhbnNpdGlvbiwgbWF0Y2hf c2VsZWN0aW9uX3RpbWVzdGFtcCwKLSAgICAgICBkZXN0aW5hdGlvbl91cmxfZW50ZXJlZF93aXRo b3V0X3NjaGVtZSwKLS0gICAgICBkZXN0aW5hdGlvbl91cmxfZW50ZXJlZF93aXRoX2h0dHBfc2No ZW1lLCBtYXRjaC5leHRyYV9oZWFkZXJzKSk7Ci0rICAgICAgZGVzdGluYXRpb25fdXJsX2VudGVy ZWRfd2l0aF9odHRwX3NjaGVtZSwgbWF0Y2guZXh0cmFfaGVhZGVyc30pOwotIAotICAgaWYgKGJy b3dzZXJfKSB7Ci0gICAgIGF1dG8gbmF2aWdhdGlvbiA9IGNocm9tZTo6T3BlbkN1cnJlbnRVUkwo YnJvd3Nlcl8pOwotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2lu dGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX2F1Y3Rpb24uY2MubWUJMjAyNC0wMy0xNSAxNTox Njo0Ny4wMDQxMjQ0MzEgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQv YnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNjCTIwMjQtMDMt MTUgMTU6MjE6NTcuNzk0MjI5NTIxICswMTAwCi1AQCAtNTY1LDcgKzU2NSw3IEBACi0gICAgICAg IGJsaW5rOjpmZWF0dXJlczo6a0ZsZWRnZURlYnVnUmVwb3J0UmVzdHJpY3RlZENvb2xkb3duLkdl dCgpICE9Ci0gICAgICAgICAgICBiYXNlOjpNaWxsaXNlY29uZHMoMCkpKSB7Ci0gICAgIG5ld19k ZWJ1Z19yZXBvcnRfbG9ja291dF9hbmRfY29vbGRvd25zLmRlYnVnX3JlcG9ydF9jb29sZG93bl9t YXBbb3JpZ2luXSA9Ci0tICAgICAgICBEZWJ1Z1JlcG9ydENvb2xkb3duKG5vd19uZWFyZXN0X25l eHRfaG91ciwgY29vbGRvd25fdHlwZSk7Ci0rICAgICAgICBEZWJ1Z1JlcG9ydENvb2xkb3due25v d19uZWFyZXN0X25leHRfaG91ciwgY29vbGRvd25fdHlwZX07Ci0gICB9Ci0gCi0gICByZXR1cm4g Y2FuX3NlbmRfZGVidWdfcmVwb3J0OwotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY2hyb21l L2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wMy0xNSAxNTo1NTo1MS4zNTE4Nzg4MjkgKzAxMDAK LSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Nocm9tZS9icm93c2VyL3VpL2F1dG9maWxsL2F1 dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjCTIwMjQtMDMtMTUgMTY6MTk6NDguODYyMTg5 NDYzICswMTAwCi1AQCAtMjc3LDggKzI3Nyw4IEBACi0gICAgIEF1dG9maWxsTWFuYWdlciYgbWFu YWdlcikgewotICAgYXV0byYgZHJpdmVyID0gc3RhdGljX2Nhc3Q8Q29udGVudEF1dG9maWxsRHJp dmVyJj4obWFuYWdlci5kcml2ZXIoKSk7Ci0gICBkcml2ZXIuYnJvd3Nlcl9ldmVudHMoKS5SZW5k ZXJlclNob3VsZFRyaWdnZXJTdWdnZXN0aW9ucygKLS0gICAgICBGaWVsZEdsb2JhbElkKGRyaXZl ci5HZXRGcmFtZVRva2VuKCksCi0tICAgICAgICAgICAgICAgICAgICBGaWVsZFJlbmRlcmVySWQo cGFyYW1zXy5maWVsZF9yZW5kZXJlcl9pZCkpLAotKyAgICAgIEZpZWxkR2xvYmFsSWR7ZHJpdmVy LkdldEZyYW1lVG9rZW4oKSwKLSsgICAgICAgICAgICAgICAgICAgIEZpZWxkUmVuZGVyZXJJZChw YXJhbXNfLmZpZWxkX3JlbmRlcmVyX2lkKX0sCi0gICAgICAgQXV0b2ZpbGxTdWdnZXN0aW9uVHJp Z2dlclNvdXJjZTo6a01hbnVhbEZhbGxiYWNrUGF5bWVudHMpOwotICAgTG9nTWFudWFsRmFsbGJh Y2tDb250ZXh0TWVudUVudHJ5QWNjZXB0ZWQoCi0gICAgICAgc3RhdGljX2Nhc3Q8QnJvd3NlckF1 dG9maWxsTWFuYWdlciY+KG1hbmFnZXIpLAotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY2hy b21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19zZXJ2aWNlX2ltcGwuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wMy0xMyAyMDozNTo0MC4wMDAwMDAwMDAgKzAx MDAKLSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Nocm9tZS9icm93c2VyL3VpL3dlYl9hcHBs aWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBsLmNjCTIwMjQtMDMtMTUgMTY6MjA6NDUuODQ2 OTE5ODIwICswMTAwCi1AQCAtMTA3LDcgKzEwNyw3IEBACi0gICAgICAgICAgICAgICAgICAgICAg Q29udmVydFBhdGhUb1VybChzdWJfYXBwLT5tYW5pZmVzdF9pZF9wYXRoLCBvcmlnaW4pKTsKLSAg ICAgQVNTSUdOX09SX1JFVFVSTihHVVJMIGluc3RhbGxfdXJsLAotICAgICAgICAgICAgICAgICAg ICAgIENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+aW5zdGFsbF91cmxfcGF0aCwgb3JpZ2luKSk7 Ci0tICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUobWFuaWZlc3RfaWQpLCBzdGQ6 Om1vdmUoaW5zdGFsbF91cmwpKTsKLSsgICAgc3ViX2FwcHMuZW1wbGFjZV9iYWNrKCkgPSB7c3Rk Ojptb3ZlKG1hbmlmZXN0X2lkKSwgc3RkOjptb3ZlKGluc3RhbGxfdXJsKX07Ci0gICB9Ci0gICBy ZXR1cm4gc3ViX2FwcHM7Ci0gfQotQEAgLTQzOSw3ICs0MzksNyBAQAotICAgICAgICAgYmFzZTo6 QmluZE9uY2UoCi0gICAgICAgICAgICAgW10od2ViYXBwczo6TWFuaWZlc3RJZCBtYW5pZmVzdF9p ZCwgY29uc3Qgd2ViYXBwczo6QXBwSWQmIGFwcF9pZCwKLSAgICAgICAgICAgICAgICB3ZWJhcHBz OjpJbnN0YWxsUmVzdWx0Q29kZSByZXN1bHRfY29kZSkgewotLSAgICAgICAgICAgICAgcmV0dXJu IFN1YkFwcEluc3RhbGxSZXN1bHQobWFuaWZlc3RfaWQsIGFwcF9pZCwgcmVzdWx0X2NvZGUpOwot KyAgICAgICAgICAgICAgcmV0dXJuIFN1YkFwcEluc3RhbGxSZXN1bHR7bWFuaWZlc3RfaWQsIGFw cF9pZCwgcmVzdWx0X2NvZGV9OwotICAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAgbWFuaWZl c3RfaWQpCi0gICAgICAgICAgICAgLlRoZW4oY29uY3VycmVudC5DcmVhdGVDYWxsYmFjaygpKSk7 Ci0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9w bGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0 LTAzLTEzIDIwOjM1OjU3LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMy4wLjYzMTIu NDYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRl LmgJMjAyNC0wMy0xNSAxNjoyNDo1Ny44OTk1NDA5NDEgKzAxMDAKLUBAIC05Niw3ICs5Niw3IEBA Ci0gICAgICAgQ29sb3I6OkNvbG9yU3BhY2UgY29sb3JfaW50ZXJwb2xhdGlvbl9zcGFjZSwKLSAg ICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yOjpIdWVJbnRlcnBvbGF0aW9uTWV0aG9kPiBodWVfaW50 ZXJwb2xhdGlvbl9tZXRob2QpIHsKLSAgICAgcmV0dXJuIGJhc2U6OkFkb3B0UmVmKG5ldyBGb250 UGFsZXR0ZSgKLS0gICAgICAgIHN0YXJ0LCBlbmQsIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlcyhz dGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZSksCi0rICAgICAgICBzdGFydCwgZW5kLCBO b25Ob3JtYWxpemVkUGVyY2VudGFnZXN7c3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2V9 LAotICAgICAgICAgbm9ybWFsaXplZF9wZXJjZW50YWdlLCBhbHBoYV9tdWx0aXBsaWVyLCBjb2xv cl9pbnRlcnBvbGF0aW9uX3NwYWNlLAotICAgICAgICAgaHVlX2ludGVycG9sYXRpb25fbWV0aG9k KSk7Ci0gICB9Ci1AQCAtMTcwLDcgKzE3MCw3IEBACi0gICAgICAgZG91YmxlIG5vcm1hbGl6ZWRf cGVyY2VudGFnZSkgewotICAgICBkb3VibGUgZW5kX3BlcmNlbnRhZ2UgPSBub3JtYWxpemVkX3Bl cmNlbnRhZ2UgKiAxMDAuMDsKLSAgICAgZG91YmxlIHN0YXJ0X3BlcmNlbnRhZ2UgPSAxMDAuMCAt IGVuZF9wZXJjZW50YWdlOwotLSAgICByZXR1cm4gTm9uTm9ybWFsaXplZFBlcmNlbnRhZ2VzKHN0 YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKTsKLSsgICAgcmV0dXJuIE5vbk5vcm1hbGl6 ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZX07Ci0gICB9Ci0g Ci0gICBkb3VibGUgR2V0QWxwaGFNdWx0aXBsaWVyKCkgY29uc3QgewotZGlmZiAtdXAgY2hyb21p dW0tMTIzLjAuNjMxMi40Ni9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9w YXJ0aXRpb25fYWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYy5tZSBjaHJvbWl1bS0xMjMu MC42MzEyLjQ2L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlv bl9hbGxvYy9saWdodHdlaWdodF9xdWFyYW50aW5lLmNjCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMx Mi40Ni9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxs b2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYy5tZQkyMDI0LTAzLTE1IDE5OjAxOjA3Ljc2NTgz MjgwMSArMDEwMAotKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvYmFzZS9hbGxvY2F0b3IvcGFy dGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2xpZ2h0d2VpZ2h0X3F1YXJhbnRp bmUuY2MJMjAyNC0wMy0xNSAxOTowMTo1Mi45MTg2ODc3NDIgKzAxMDAKLUBAIC02Miw3ICs2Miw3 IEBAIGJvb2wgTGlnaHR3ZWlnaHRRdWFyYW50aW5lQnJhbmNoOjpRdWFyYW4KLSAgICAgYnJhbmNo X3NpemVfaW5fYnl0ZXNfICs9IHVzYWJsZV9zaXplOwotICAgICBQQV9EQ0hFQ0soYnJhbmNoX3Np emVfaW5fYnl0ZXNfIDw9IGNhcGFjaXR5X2luX2J5dGVzKTsKLSAKLS0gICAgc2xvdHNfLmVtcGxh Y2VfYmFjayhzbG90X3N0YXJ0LCB1c2FibGVfc2l6ZSk7Ci0rICAgIHNsb3RzXy5lbXBsYWNlX2Jh Y2soKSA9IHtzbG90X3N0YXJ0LCB1c2FibGVfc2l6ZX07Ci0gCi0gICAgIC8vIFN3YXAgcmFuZG9t bHkgc28gdGhhdCB0aGUgcXVhcmFudGluZSBsaXN0IHJlbWFpbiBzaHVmZmxlZC4KLSAgICAgLy8g VGhpcyBpcyBub3QgdW5pZm9ybWx5IHJhbmRvbSwgYnV0IHN1ZmZpY2llbnRseSByYW5kb20uCi1k aWZmIC11cCBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2dwdS9pcGMvY2xpZW50L2NsaWVudF9zaGFy ZWRfaW1hZ2VfaW50ZXJmYWNlLmNjLm1lIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvZ3B1L2lwYy9j bGllbnQvY2xpZW50X3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MKLS0tLSBjaHJvbWl1bS0xMjMu MC42MzEyLjQ2L2dwdS9pcGMvY2xpZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNj Lm1lCTIwMjQtMDMtMTYgMTg6NDM6MTcuODYzMzI4NTA3ICswMTAwCi0rKysgY2hyb21pdW0tMTIz LjAuNjMxMi40Ni9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5j YwkyMDI0LTAzLTE2IDE4OjUxOjAwLjQ0OTI3NzE1MiArMDEwMAotQEAgLTEwNiw4ICsxMDYsOCBA QCBzY29wZWRfcmVmcHRyPENsaWVudFNoYXJlZEltYWdlPiBDbGllbnRTCi0gICAgICAgQWRkTWFp bGJveChwcm94eV8tPkNyZWF0ZVNoYXJlZEltYWdlKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2Us Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2Vfb3Jp Z2luLCBhbHBoYV90eXBlLCB1c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVidWdfbGFiZWwpKSwKLS0gICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0 YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCi0tICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKLSsgICAgICBD bGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3Vy ZmFjZV9vcmlnaW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5 cGUsIHVzYWdlfSwKLSAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhvbGRlcl8pOwot IH0KLSAKLUBAIC0xMzcsOCArMTM3LDggQEAgc2NvcGVkX3JlZnB0cjxDbGllbnRTaGFyZWRJbWFn ZT4gQ2xpZW50UwotIAotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJl ZEltYWdlPigKLSAgICAgICBBZGRNYWlsYm94KG1haWxib3gpLAotLSAgICAgIENsaWVudFNoYXJl ZEltYWdlOjpNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdp biwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2Up LAotKyAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9y X3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwg aG9sZGVyXyk7Ci0gfQotIAotQEAgLTE2NSw4ICsxNjUsOCBAQCBzY29wZWRfcmVmcHRyPENsaWVu dFNoYXJlZEltYWdlPiBDbGllbnRTCi0gICBDSEVDSyghYnVmZmVyX2hhbmRsZS5pc19udWxsKCkp OwotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAg ICAgICBBZGRNYWlsYm94KG1haWxib3gpLAotLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRh ZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgIENs aWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJm YWNlX29yaWdpbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlw ZSwgdXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwKLSAgICAgICBHcHVN ZW1vcnlCdWZmZXJIYW5kbGVJbmZvKHN0ZDo6bW92ZShidWZmZXJfaGFuZGxlKSwgZm9ybWF0LCBz aXplLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3VzYWdlKSwKLUBA IC0xOTIsOCArMTkyLDggQEAgc2NvcGVkX3JlZnB0cjxDbGllbnRTaGFyZWRJbWFnZT4gQ2xpZW50 UwotIAotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigK LSAgICAgICBtYWlsYm94LAotLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YShmb3Jt YXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgIENsaWVudFNoYXJl ZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdp biwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9 LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwKLSAgICAgICBHcHVNZW1vcnlCdWZm ZXJIYW5kbGVJbmZvKHN0ZDo6bW92ZShjbGllbnRfYnVmZmVyX2hhbmRsZSksIGZvcm1hdCwgc2l6 ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZmZlcl91c2FnZSksCi1AQCAt MjE5LDggKzIxOSw4IEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVudFMK LSAgICAgICBBZGRNYWlsYm94KHByb3h5Xy0+Q3JlYXRlU2hhcmVkSW1hZ2UoCi0gICAgICAgICAg IGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLCBhbHBoYV90eXBlLCB1 c2FnZSwKLSAgICAgICAgICAgZGVidWdfbGFiZWwsIHN0ZDo6bW92ZShidWZmZXJfaGFuZGxlKSkp LAotLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9y X3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0 YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAgICAgIEdlblVu dmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7Ci0gfQotIAotQEAgLTI3Myw4ICsyNzMsOCBA QCBDbGllbnRTaGFyZWRJbWFnZUludGVyZmFjZTo6Q3JlYXRlU2hhcmVkCi0gICAgICAgQWRkTWFp bGJveChwcm94eV8tPkNyZWF0ZVNoYXJlZEltYWdlKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2Us Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN1cmZhY2Vfb3Jp Z2luLCBhbHBoYV90eXBlLCB1c2FnZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgZGVidWdfbGFiZWwsIHN0ZDo6bW92ZShoYW5kbGUpKSksCi0tICAgICAgQ2xp ZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZh Y2Vfb3JpZ2luLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBl LCB1c2FnZSksCi0rICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6 ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAotKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZX0sCi0gICAgICAgR2VuVW52ZXJpZmllZFN5bmNU b2tlbigpLCBob2xkZXJfKTsKLSAgIHJldHVybiBzaGFyZWRfaW1hZ2VfbWFwcGluZzsKLSB9Ci1A QCAtMjk2LDEwICsyOTYsMTAgQEAgc2NvcGVkX3JlZnB0cjxDbGllbnRTaGFyZWRJbWFnZT4gQ2xp ZW50UwotICAgICAgICAgICBidWZmZXJfZm9ybWF0LCBwbGFuZSwgZ3B1X21lbW9yeV9idWZmZXIt PkdldFNpemUoKSwgY29sb3Jfc3BhY2UsCi0gICAgICAgICAgIHN1cmZhY2Vfb3JpZ2luLCBhbHBo YV90eXBlLCB1c2FnZSwgZGVidWdfbGFiZWwsCi0gICAgICAgICAgIGdwdV9tZW1vcnlfYnVmZmVy LT5DbG9uZUhhbmRsZSgpKSksCi0tICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhKAot KyAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXsKLSAgICAgICAgICAgdml6OjpHZXRT aW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KGJ1ZmZlcl9mb3JtYXQpLAotICAgICAgICAgICBn cHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4s IGFscGhhX3R5cGUsCi0tICAgICAgICAgIHVzYWdlKSwKLSsgICAgICAgICAgdXNhZ2V9LAotICAg ICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7Ci0gfQotIAotQEAgLTMzNCwx MyArMzM0LDEzIEBAIENsaWVudFNoYXJlZEltYWdlSW50ZXJmYWNlOjpDcmVhdGVTd2FwQ2gKLSAg IHJldHVybiBDbGllbnRTaGFyZWRJbWFnZUludGVyZmFjZTo6U3dhcENoYWluU2hhcmVkSW1hZ2Vz KAotICAgICAgIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAgICAg ICAgICAgbWFpbGJveGVzLmZyb250X2J1ZmZlciwKLS0gICAgICAgICAgQ2xpZW50U2hhcmVkSW1h Z2U6Ok1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2Up LAotKyAgICAgICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBj b2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZX0sCi0gICAgICAgICAgIHN5bmNfdG9rZW4sIGhv bGRlcl8pLAotICAgICAgIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigK LSAgICAgICAgICAgbWFpbGJveGVzLmJhY2tfYnVmZmVyLAotLSAgICAgICAgICBDbGllbnRTaGFy ZWRJbWFnZTo6TWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmln aW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1 c2FnZSksCi0rICAgICAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNp emUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLSsgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKLSAgICAgICAgICAgc3luY190b2tl biwgaG9sZGVyXykpOwotIH0KLSAKLUBAIC0zODAsOCArMzgwLDggQEAgQ2xpZW50U2hhcmVkSW1h Z2VJbnRlcmZhY2U6OkFkZFJlZmVyZW5jZQotIAotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3Vu dGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAgICAgICBtYWlsYm94LAotLSAgICAgIENsaWVudFNo YXJlZEltYWdlOjpNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29y aWdpbiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNh Z2UpLAotKyAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNv bG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAgICAgIHN5bmNfdG9rZW4sIGhvbGRlcl8pOwot IH0KLSAKLUBAIC00MDIsOCArNDAyLDggQEAgc2NvcGVkX3JlZnB0cjxDbGllbnRTaGFyZWRJbWFn ZT4gQ2xpZW50UwotIAotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJl ZEltYWdlPigKLSAgICAgICBtYWlsYm94LAotLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRh ZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgIENs aWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJm YWNlX29yaWdpbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlw ZSwgdXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7Ci0g fQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9ncHUvY29tbWFuZF9idWZmZXIv Y2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40 Ni9ncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MKLS0t LSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2dwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvc2hhcmVk X2ltYWdlX2ludGVyZmFjZS5jYy5tZQkyMDI0LTAzLTE2IDE4OjU5OjIwLjE3NTg4Mjg5NCArMDEw MAotKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9z aGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjCTIwMjQtMDMtMTYgMTk6MDM6MDUuMDAxNzU0NjA5ICsw MTAwCi1AQCAtNDEsOCArNDEsOCBAQCBzY29wZWRfcmVmcHRyPENsaWVudFNoYXJlZEltYWdlPiBT aGFyZWRJCi0gICBOT1RSRUFDSEVEKCk7Ci0gICByZXR1cm4gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8 Q2xpZW50U2hhcmVkSW1hZ2U+KAotICAgICAgIE1haWxib3goKSwKLS0gICAgICBDbGllbnRTaGFy ZWRJbWFnZTo6TWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmln aW4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdl KSwKLSsgICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xv cl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKLSAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCks IGhvbGRlcl8pOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvZ3B1L2Nv bW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlX2ludGVyZmFjZV9pbl9wcm9jZXNzLmNj Lm1lIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hh cmVkX2ltYWdlX2ludGVyZmFjZV9pbl9wcm9jZXNzLmNjCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMx Mi40Ni9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2lu X3Byb2Nlc3MuY2MubWUJMjAyNC0wMy0xNiAxOTowNjozMi4xMDIzMzAxNTUgKzAxMDAKLSsrKyBj aHJvbWl1bS0xMjMuMC42MzEyLjQ2L2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL3NoYXJlZF9p bWFnZV9pbnRlcmZhY2VfaW5fcHJvY2Vzcy5jYwkyMDI0LTAzLTE2IDE5OjExOjU5LjYyNzAwODA2 MyArMDEwMAotQEAgLTIzOCw4ICsyMzgsOCBAQCBTaGFyZWRJbWFnZUludGVyZmFjZUluUHJvY2Vz czo6Q3JlYXRlU2hhCi0gICB9Ci0gICByZXR1cm4gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50 U2hhcmVkSW1hZ2U+KAotICAgICAgIG1haWxib3gsCi0tICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6 Ok1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAotLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCi0rICAg ICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2Us IHN1cmZhY2Vfb3JpZ2luLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBo YV90eXBlLCB1c2FnZX0sCi0gICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xkZXJf KTsKLSB9Ci0gCi1AQCAtMzAxLDggKzMwMSw4IEBAIFNoYXJlZEltYWdlSW50ZXJmYWNlSW5Qcm9j ZXNzOjpDcmVhdGVTaGEKLSAgIH0KLSAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGll bnRTaGFyZWRJbWFnZT4oCi0gICAgICAgbWFpbGJveCwKLS0gICAgICBDbGllbnRTaGFyZWRJbWFn ZTo6TWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCi0t ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKLSsg ICAgICBDbGllbnRTaGFyZWRJbWFnZTo6TWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFj ZSwgc3VyZmFjZV9vcmlnaW4sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFs cGhhX3R5cGUsIHVzYWdlfSwKLSAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhvbGRl cl8pOwotIH0KLSAKLUBAIC0zNjUsOCArMzY1LDggQEAgU2hhcmVkSW1hZ2VJbnRlcmZhY2VJblBy b2Nlc3M6OkNyZWF0ZVNoYQotIAotICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVu dFNoYXJlZEltYWdlPigKLSAgICAgICBtYWlsYm94LAotLSAgICAgIENsaWVudFNoYXJlZEltYWdl OjpNZXRhZGF0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAg ICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNl LCBzdXJmYWNlX29yaWdpbiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxw aGFfdHlwZSwgdXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgR2V0R3B1 TWVtb3J5QnVmZmVySGFuZGxlSW5mbyhtYWlsYm94KSwgaG9sZGVyXyk7Ci0gfQotIAotQEAgLTQ4 MSw4ICs0ODEsOCBAQCBTaGFyZWRJbWFnZUludGVyZmFjZUluUHJvY2Vzczo6Q3JlYXRlU2hhCi0g Ci0gICByZXR1cm4gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAotICAg ICAgIG1haWxib3gsCi0tICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhKGZvcm1hdCwg c2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCi0rICAgICAgQ2xpZW50U2hhcmVkSW1h Z2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAot KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZX0sCi0g ICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLAotICAgICAgIEdwdU1lbW9yeUJ1ZmZlckhh bmRsZUluZm8oc3RkOjptb3ZlKGNsaWVudF9idWZmZXJfaGFuZGxlKSwgZm9ybWF0LCBzaXplLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmZmVyX3VzYWdlKSwKLUBAIC01MjQs OCArNTI0LDggQEAgU2hhcmVkSW1hZ2VJbnRlcmZhY2VJblByb2Nlc3M6OkNyZWF0ZVNoYQotIAot ICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAgICAg ICBtYWlsYm94LAotLSAgICAgIENsaWVudFNoYXJlZEltYWdlOjpNZXRhZGF0YShmb3JtYXQsIHNp emUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0gICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgIENsaWVudFNoYXJlZEltYWdl OjpNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLSsg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAg ICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7Ci0gfQotIFNoYXJlZEltYWdl SW50ZXJmYWNlOjpTaGFyZWRJbWFnZU1hcHBpbmcKLUBAIC01ODksOCArNTg5LDggQEAgU2hhcmVk SW1hZ2VJbnRlcmZhY2VJblByb2Nlc3M6OkNyZWF0ZVNoYQotICAgfQotICAgc2hhcmVkX2ltYWdl X21hcHBpbmcuc2hhcmVkX2ltYWdlID0gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVk SW1hZ2U+KAotICAgICAgIG1haWxib3gsCi0tICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFk YXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAotLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCi0rICAgICAgQ2xp ZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZh Y2Vfb3JpZ2luLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBl LCB1c2FnZX0sCi0gICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xkZXJfKTsKLSAK LSAgIHJldHVybiBzaGFyZWRfaW1hZ2VfbWFwcGluZzsKLUBAIC02NjQsMTAgKzY2NCwxMCBAQCBT aGFyZWRJbWFnZUludGVyZmFjZUluUHJvY2Vzczo6Q3JlYXRlU2hhCi0gCi0gICByZXR1cm4gYmFz ZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAotICAgICAgIG1haWxib3gsCi0t ICAgICAgQ2xpZW50U2hhcmVkSW1hZ2U6Ok1ldGFkYXRhKAotKyAgICAgIENsaWVudFNoYXJlZElt YWdlOjpNZXRhZGF0YXsKLSAgICAgICAgICAgdml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdl Rm9ybWF0KGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRGb3JtYXQoKSksCi0gICAgICAgICAgIGdwdV9t ZW1vcnlfYnVmZmVyLT5HZXRTaXplKCksIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwgYWxw aGFfdHlwZSwKLS0gICAgICAgICAgdXNhZ2UpLAotKyAgICAgICAgICB1c2FnZX0sCi0gICAgICAg R2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xkZXJfKTsKLSB9Ci0gCi1kaWZmIC11cCBjaHJv bWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcv YXR0cmlidXRpb25fbWFuYWdlcl9pbXBsLmNjLm1lIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29u dGVudC9icm93c2VyL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9hdHRyaWJ1dGlvbl9tYW5hZ2VyX2lt cGwuY2MKLS0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9hdHRyaWJ1 dGlvbl9yZXBvcnRpbmcvYXR0cmlidXRpb25fbWFuYWdlcl9pbXBsLmNjLm1lCTIwMjQtMDMtMTcg MDA6NDI6MzEuMTgzMjI2MjExICswMTAwCi0rKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250 ZW50L2Jyb3dzZXIvYXR0cmlidXRpb25fcmVwb3J0aW5nL2F0dHJpYnV0aW9uX21hbmFnZXJfaW1w bC5jYwkyMDI0LTAzLTE3IDAwOjU1OjU2LjY4OTUxMjQzMCArMDEwMAotQEAgLTE1MDcsNyArMTUw Nyw3IEBAIHZvaWQgQXR0cmlidXRpb25NYW5hZ2VySW1wbDo6UHJlcGFyZU5leHQKLSAgICAgICAg ICAgICAgICAgICAgICAgICAgICBSZW5kZXJGcmFtZUhvc3Q6OkZyb21JRChldmVudC5yZW5kZXJf ZnJhbWVfaWQpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9vcmlnaW4sIGRl c3RpbmF0aW9uX29yaWdpbiwgJnJlcG9ydGluZ19vcmlnaW4sCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgJmNhbl9ieXBhc3NfY29va2llX2NoZWNrKSkgewotLSAgICAgIG5lZWRfdG9fY2hl Y2tfY29va2llLmVtcGxhY2VfYmFjayh1cmw6Ok9yaWdpbjo6Q3JlYXRlKGl0ZW0udXJsKSwgaSk7 Ci0rICAgICAgbmVlZF90b19jaGVja19jb29raWUuZW1wbGFjZV9iYWNrKCkgPSB7dXJsOjpPcmln aW46OkNyZWF0ZShpdGVtLnVybCksIGl9OwotICAgICB9IGVsc2UgewotICAgICAgIGFsbG93ZWQu YXQoaSkgPSBjYW5fYnlwYXNzX2Nvb2tpZV9jaGVjazsKLSAgICAgfQotZGlmZiAtdXAgY2hyb21p dW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3Rf Z3JvdXBfc3RvcmFnZS5jYy5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nl ci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCi0tLS0gY2hyb21pdW0t MTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3Jv dXBfc3RvcmFnZS5jYy5tZQkyMDI0LTAzLTE3IDAwOjI0OjQxLjQyMDgzNzg4NCArMDEwMAotKysr IGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2lu dGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MJMjAyNC0wMy0xNyAwMDoyNjo0MC4yNzMzNjQ2MzggKzAx MDAKLUBAIC0zOTkzLDcgKzM5OTMsNyBAQCBEb0dldEJpZGRpbmdBbmRBdWN0aW9uU2VydmVyS2V5 cyhzcWw6OkRhCi0gICAgIHN0ZDo6dmVjdG9yPEJpZGRpbmdBbmRBdWN0aW9uU2VydmVyS2V5PiBr ZXlzOwotICAgICBrZXlzLnJlc2VydmUoa2V5X3Byb3Rvcy5rZXlzX3NpemUoKSk7Ci0gICAgIGZv ciAoYXV0byYga2V5X3Byb3RvIDogKmtleV9wcm90b3MubXV0YWJsZV9rZXlzKCkpIHsKLS0gICAg ICBrZXlzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoKmtleV9wcm90by5tdXRhYmxlX2tleSgpKSwg a2V5X3Byb3RvLmlkKCkpOwotKyAgICAgIGtleXMuZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3Zl KCprZXlfcHJvdG8ubXV0YWJsZV9rZXkoKSksIGtleV9wcm90by5pZCgpfTsKLSAgICAgfQotICAg ICByZXR1cm4ge2V4cGlyYXRpb24sIGtleXN9OwotICAgfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVt LTEyMy10eXBlbmFtZS5wYXRjaCBiL2Nocm9taXVtLTEyMy10eXBlbmFtZS5wYXRjaApkZWxldGVk IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWViYmQxOC4uMDAwMDAwMAotLS0gYS9jaHJvbWl1bS0x MjMtdHlwZW5hbWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MDYgKzAsMCBAQAotCi1maXhl ZCBlcnJvcjogbWlzc2luZyAndHlwZW5hbWUnIHByaW9yIHRvIGRlcGVuZGVudCB0eXBlIG5hbWUK LQotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2NvbnRhaW5lcnMvbWFwX3V0 aWwuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvY29udGFpbmVycy9tYXBf dXRpbC5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2NvbnRhaW5lcnMvbWFwX3V0 aWwuaC50eXBlbmFtZQkyMDI0LTAyLTIyIDIyOjQyOjQzLjAwMDAwMDAwMCArMDEwMAotKysrIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJzL21hcF91dGlsLmgJMjAyNC0wMi0y NCAxNTowNTowMC44ODI1OTI3MDUgKzAxMDAKLUBAIC00Miw3ICs0Miw3IEBAIGNvbnN0ZXhwciBp bnRlcm5hbDo6TWFwcGVkVHlwZTxNYXA+KiBGaW4KLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwLAot ICAgICAgICAgICB0eXBlbmFtZSBLZXksCi0gICAgICAgICAgIHR5cGVuYW1lIE1hcHBlZEVsZW1l bnRUeXBlID0KLS0gICAgICAgICAgICAgIHN0ZDo6cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1h cHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4KLSsgICAgICAgICAgICAgIHR5cGVuYW1lIHN0 ZDo6cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1hcHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlw ZT4KLSBjb25zdGV4cHIgY29uc3QgTWFwcGVkRWxlbWVudFR5cGUqIEZpbmRQdHJPck51bGwoY29u c3QgTWFwJiBtYXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IEtleSYga2V5KSB7Ci0gICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsKLUBA IC01OCw3ICs1OCw3IEBAIGNvbnN0ZXhwciBjb25zdCBNYXBwZWRFbGVtZW50VHlwZSogRmluZFAK LSB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwLAotICAgICAgICAgICB0eXBlbmFtZSBLZXksCi0gICAg ICAgICAgIHR5cGVuYW1lIE1hcHBlZEVsZW1lbnRUeXBlID0KLS0gICAgICAgICAgICAgIHN0ZDo6 cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1hcHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4K LSsgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1h cHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4KLSBjb25zdGV4cHIgTWFwcGVkRWxlbWVudFR5 cGUqIEZpbmRQdHJPck51bGwoTWFwJiBtYXAsIGNvbnN0IEtleSYga2V5KSB7Ci0gICBhdXRvIGl0 ID0gbWFwLmZpbmQoa2V5KTsKLSAgIHJldHVybiBpdCAhPSBtYXAuZW5kKCkgPyBzdGQ6OnRvX2Fk ZHJlc3MoaXQtPnNlY29uZCkgOiBudWxscHRyOwotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9iYXNlL2Z1bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5oLnR5cGVuYW1lIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvYmFzZS9mdW5jdGlvbmFsL2JpbmRfaW50ZXJuYWwuaAotLS0tIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvYmFzZS9mdW5jdGlvbmFsL2JpbmRfaW50ZXJuYWwuaC50eXBlbmFtZQky MDI0LTAyLTI0IDE1OjA1OjAwLjg4MzU5MjcyNCArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvYmFzZS9mdW5jdGlvbmFsL2JpbmRfaW50ZXJuYWwuaAkyMDI0LTAyLTI0IDE1OjEzOjQ5 Ljc1NTIyMzUzMyArMDEwMAotQEAgLTE0MDAsMTEgKzE0MDAsMTEgQEAgdGVtcGxhdGUgPGludCBp LAotICAgICAgICAgICB0eXBlbmFtZSBQYXJhbT4KLSBzdHJ1Y3QgUGFyYW1DYW5CZUJvdW5kIHsK LSAgcHJpdmF0ZToKLS0gIHVzaW5nIFVud3JhcHBlZFBhcmFtID0gQmluZEFyZ3VtZW50PGk+Ojp0 ZW1wbGF0ZSBGb3J3YXJkZWRBczwKLSsgIHVzaW5nIFVud3JhcHBlZFBhcmFtID0gdHlwZW5hbWUg QmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBGb3J3YXJkZWRBczwKLSAgICAgICBVbndyYXBwZWQ+ Ojp0ZW1wbGF0ZSBUb1BhcmFtV2l0aFR5cGU8UGFyYW0+OwotLSAgdXNpbmcgUGFyYW1TdG9yYWdl ID0gQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBUb1BhcmFtV2l0aFR5cGU8Ci0rICB1c2luZyBQ YXJhbVN0b3JhZ2UgPSB0eXBlbmFtZSBCaW5kQXJndW1lbnQ8aT46OnRlbXBsYXRlIFRvUGFyYW1X aXRoVHlwZTwKLSAgICAgICBQYXJhbT46OnRlbXBsYXRlIFN0b3JlZEFzPFN0b3JhZ2U+OwotLSAg dXNpbmcgQm91bmRTdG9yYWdlID0KLSsgIHVzaW5nIEJvdW5kU3RvcmFnZSA9IHR5cGVuYW1lCi0g ICAgICAgQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBCb3VuZEFzPEFyZz46OnRlbXBsYXRlIFN0 b3JlZEFzPFN0b3JhZ2U+OwotIAotICAgdGVtcGxhdGUgPGJvb2wgdiA9ICFVbndyYXBwZWRQYXJh bTo6a1Jhd1B0ciB8fAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJv d3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRfYnViYmxlX3VwZGF0ZV9zZXJ2aWNlLmNjLnR5 cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZG93bmxvYWQvYnVi YmxlL2Rvd25sb2FkX2J1YmJsZV91cGRhdGVfc2VydmljZS5jYwotLS0tIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZG93bmxvYWQvYnViYmxlL2Rvd25sb2FkX2J1YmJsZV91 cGRhdGVfc2VydmljZS5jYy50eXBlbmFtZQkyMDI0LTAyLTIyIDIyOjQyOjUwLjAwMDAwMDAwMCAr MDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZG93bmxvYWQv YnViYmxlL2Rvd25sb2FkX2J1YmJsZV91cGRhdGVfc2VydmljZS5jYwkyMDI0LTAyLTI0IDE1OjA1 OjAwLjg4MjU5MjcwNSArMDEwMAotQEAgLTkwLDcgKzkwLDcgQEAgSXRlbVNvcnRLZXkgR2V0U29y dEtleShjb25zdCBJdGVtJiBpdGVtKQotIC8vIEhlbHBlciB0byBnZXQgYW4gaXRlcmF0b3IgdG8g dGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgY2FjaGUuIFRoZSBjYWNoZQotIC8vIG11c3Qgbm90IGJl IGVtcHR5LgotIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVtPgotLVNvcnRlZEl0ZW1zPEl0ZW0+Ojpj b25zdF9pdGVyYXRvciBHZXRMYXN0SXRlcihjb25zdCBTb3J0ZWRJdGVtczxJdGVtPiYgY2FjaGUp IHsKLSt0eXBlbmFtZSBTb3J0ZWRJdGVtczxJdGVtPjo6Y29uc3RfaXRlcmF0b3IgR2V0TGFzdEl0 ZXIoY29uc3QgU29ydGVkSXRlbXM8SXRlbT4mIGNhY2hlKSB7Ci0gICBDSEVDSyghY2FjaGUuZW1w dHkoKSk7Ci0gICBhdXRvIGl0ID0gY2FjaGUuZW5kKCk7Ci0gICByZXR1cm4gc3RkOjpwcmV2KGl0 KTsKLUBAIC0xMDkwLDkgKzEwOTAsOSBAQCBib29sIERvd25sb2FkQnViYmxlVXBkYXRlU2Vydmlj ZTo6Q2FjaGVNCi0gfQotIAotIHRlbXBsYXRlIDx0eXBlbmFtZSBJZCwgdHlwZW5hbWUgSXRlbT4K LS1Tb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0b3IKLSt0eXBlbmFtZSBTb3J0ZWRJdGVtczxJdGVt Pjo6aXRlcmF0b3IKLSBEb3dubG9hZEJ1YmJsZVVwZGF0ZVNlcnZpY2U6OkNhY2hlTWFuYWdlcjo6 UmVtb3ZlSXRlbUZyb21DYWNoZUJ5SXRlcigKLS0gICAgU29ydGVkSXRlbXM8SXRlbT46Oml0ZXJh dG9yIGl0ZXIsCi0rICAgIHR5cGVuYW1lIFNvcnRlZEl0ZW1zPEl0ZW0+OjppdGVyYXRvciBpdGVy LAotICAgICBTb3J0ZWRJdGVtczxJdGVtPiYgY2FjaGUsCi0gICAgIEl0ZXJNYXA8SWQsIEl0ZW0+ JiBpdGVyX21hcCkgewotICAgQ0hFQ0soaXRlciAhPSBjYWNoZS5lbmQoKSk7Ci1kaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUv bW9kZWxfZXhlY3V0aW9uL21vZGVsX2V4ZWN1dGlvbl91dGlsLmgudHlwZW5hbWUgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4 ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2Rl bF9leGVjdXRpb25fdXRpbC5oLnR5cGVuYW1lCTIwMjQtMDItMjIgMjI6NDM6MDEuMDAwMDAwMDAw ICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlv bl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oCTIwMjQt MDItMjQgMTU6MDU6MDAuODg0NTkyNzQyICswMTAwCi1AQCAtMjUsNyArMjUsNyBAQCB2b2lkIFNl dEV4ZWN1dGlvblJlcXVlc3RUZW1wbGF0ZSgKLSAKLSAgIC8vIFJlcXVlc3QgaXMgc2V0IGJ5IHRo ZSBmZWF0dXJlIGFuZCBzaG91bGQgYWx3YXlzIGJlIHR5cGVkLgotICAgYXV0byB0eXBlZF9yZXF1 ZXN0ID0KLS0gICAgICBzdGF0aWNfY2FzdDxjb25zdCBGZWF0dXJlVHlwZTo6UmVxdWVzdCY+KHJl cXVlc3RfbWV0YWRhdGEpOwotKyAgICAgIHN0YXRpY19jYXN0PGNvbnN0IHR5cGVuYW1lIEZlYXR1 cmVUeXBlOjpSZXF1ZXN0Jj4ocmVxdWVzdF9tZXRhZGF0YSk7Ci0gICAqKGxvZ2dpbmdfZGF0YS0+ bXV0YWJsZV9yZXF1ZXN0X2RhdGEoKSkgPSB0eXBlZF9yZXF1ZXN0OwotIH0KLSAKLWRpZmYgLXVw IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29y ZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgudHlwZW5hbWUgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVs X3F1YWxpdHkvbW9kZWxfcXVhbGl0eV9sb2dfZW50cnkuaAotLS0tIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21v ZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgudHlwZW5hbWUJMjAyNC0wMi0yMiAyMjo0MzowMS4wMDAw MDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0aW1p emF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xvZ19lbnRyeS5o CTIwMjQtMDItMjQgMTU6MDU6MDAuODg0NTkyNzQyICswMTAwCi1AQCAtMjksNyArMjksNyBAQCBj bGFzcyBNb2RlbFF1YWxpdHlMb2dFbnRyeSB7Ci0gICB9Ci0gCi0gICB0ZW1wbGF0ZSA8dHlwZW5h bWUgRmVhdHVyZVR5cGU+Ci0tICBGZWF0dXJlVHlwZTo6UXVhbGl0eSogcXVhbGl0eV9kYXRhKCkg ewotKyAgdHlwZW5hbWUgRmVhdHVyZVR5cGU6OlF1YWxpdHkqIHF1YWxpdHlfZGF0YSgpIHsKLSAg ICAgcmV0dXJuIEZlYXR1cmVUeXBlOjpHZXRMb2dnaW5nRGF0YSgqbG9nX2FpX2RhdGFfcmVxdWVz dF8pCi0gICAgICAgICAtPm11dGFibGVfcXVhbGl0eV9kYXRhKCk7Ci0gICB9Ci1kaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9hcnJheV90cmFp dHMuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5k aW5ncy9hcnJheV90cmFpdHMuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJs aWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0cy5oLnR5cGVuYW1lCTIwMjQtMDItMjIgMjI6NDM6 MTUuMDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1Ymxp Yy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgJMjAyNC0wMi0yNCAxNTowNTowMC44ODQ1OTI3 NDIgKzAxMDAKLUBAIC05MCw3ICs5MCw3IEBAIHRlbXBsYXRlIDx0eXBlbmFtZSBDb250YWluZXI+ Ci0gICAgIHsgY1tpXSB9IC0+IHN0ZDo6c2FtZV9hczx0eXBlbmFtZSBDb250YWluZXI6OnJlZmVy ZW5jZT47Ci0gICB9Ci0gc3RydWN0IEFycmF5VHJhaXRzPENvbnRhaW5lcj4gewotLSAgdXNpbmcg RWxlbWVudCA9IENvbnRhaW5lcjo6dmFsdWVfdHlwZTsKLSsgIHVzaW5nIEVsZW1lbnQgPSB0eXBl bmFtZSBDb250YWluZXI6OnZhbHVlX3R5cGU7Ci0gCi0gICAvLyB2ZWN0b3ItbGlrZSBjb250YWlu ZXJzIGhhdmUgbm8gYnVpbHQtaW4gbnVsbC4KLSAgIHN0YXRpYyBib29sIElzTnVsbChjb25zdCBD b250YWluZXImIGMpIHsgcmV0dXJuIGZhbHNlOyB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNf aXRlcmFibGUuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNfaXRlcmFibGUuaAotLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29y ZS92OC9hc3luY19pdGVyYWJsZS5oLnR5cGVuYW1lCTIwMjQtMDItMjIgMjI6NDM6MjAuMDAwMDAw MDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9y ZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgJMjAyNC0wMi0yNCAxNTow NTowMC44ODM1OTI3MjQgKzAxMDAKLUBAIC0yMTgsNyArMjE4LDcgQEAgY2xhc3MgUGFpckFzeW5j SXRlcmFibGUgewotICBwcml2YXRlOgotICAgdmlydHVhbCBJdGVyYXRpb25Tb3VyY2UqIENyZWF0 ZUl0ZXJhdGlvblNvdXJjZSgKLSAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0X3N0YXRlLAotLSAg ICAgIEl0ZXJhdGlvblNvdXJjZTo6S2luZCBraW5kLAotKyAgICAgIHR5cGVuYW1lIEl0ZXJhdGlv blNvdXJjZTo6S2luZCBraW5kLAotICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3Rh dGUpID0gMDsKLSB9OwotIAotQEAgLTI2MCw3ICsyNjAsNyBAQCBjbGFzcyBWYWx1ZUFzeW5jSXRl cmFibGUgewotICBwcml2YXRlOgotICAgdmlydHVhbCBJdGVyYXRpb25Tb3VyY2UqIENyZWF0ZUl0 ZXJhdGlvblNvdXJjZSgKLSAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0X3N0YXRlLAotLSAgICAg IEl0ZXJhdGlvblNvdXJjZTo6S2luZCBraW5kLAotKyAgICAgIHR5cGVuYW1lIEl0ZXJhdGlvblNv dXJjZTo6S2luZCBraW5kLAotICAgICAgIEV4Y2VwdGlvblN0YXRlJiBleGNlcHRpb25fc3RhdGUp ID0gMDsKLSB9OwotIAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9jb3JlL2h0bWwvcGFyc2VyL2h0bWxfZG9jdW1lbnRfcGFyc2VyX2Zh c3RwYXRoLmNjLnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvY29yZS9odG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0cGF0 aC5jYwotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvY29yZS9odG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0cGF0aC5jYy50eXBl bmFtZQkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4MjU5MjcwNSArMDEwMAotKysrIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9odG1sL3BhcnNlci9o dG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0cGF0aC5jYwkyMDI0LTAyLTI0IDE1OjEyOjI3Ljc0Mjcy NDg0OSArMDEwMAotQEAgLTIxMSw3ICsyMTEsNyBAQCBjbGFzcyBIVE1MRmFzdFBhdGhQYXJzZXIg ewotICAgdXNpbmcgU3BhbiA9IGJhc2U6OnNwYW48Y29uc3QgQ2hhcj47Ci0gICB1c2luZyBVU3Bh biA9IGJhc2U6OnNwYW48Y29uc3QgVUNoYXI+OwotICAgLy8gMzIgbWF0Y2hlcyB0aGF0IHVzZWQg YnkgSFRNTFRva2VuOjpBdHRyaWJ1dGUuCi0tICB0eXBlZGVmIHN0ZDo6Y29uZGl0aW9uYWw8c3Rk Ojppc19zYW1lX3Y8Q2hhciwgVUNoYXI+LAotKyAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6OmNvbmRp dGlvbmFsPHN0ZDo6aXNfc2FtZV92PENoYXIsIFVDaGFyPiwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICBVQ2hhckxpdGVyYWxCdWZmZXI8MzI+LAotICAgICAgICAgICAgICAgICAgICAgICAg ICAgIExDaGFyTGl0ZXJhbEJ1ZmZlcjwzMj4+Ojp0eXBlIExpdGVyYWxCdWZmZXJUeXBlOwotICAg c3RhdGljX2Fzc2VydChzdGQ6OmlzX3NhbWVfdjxDaGFyLCBVQ2hhcj4gfHwgc3RkOjppc19zYW1l X3Y8Q2hhciwgTENoYXI+KTsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9vYmplY3RfcGFpbnRfcHJvcGVydGllc19z cGFyc2UuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL2NvcmUvcGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXNfc3BhcnNlLmgKLS0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv cGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXNfc3BhcnNlLmgudHlwZW5hbWUJMjAyNC0wMi0y MiAyMjo0MzoyMS4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvcGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRp ZXNfc3BhcnNlLmgJMjAyNC0wMi0yNCAxNTowNTowMC44ODM1OTI3MjQgKzAxMDAKLUBAIC0yNzIs OCArMjcyLDggQEAgY2xhc3MgQ09SRV9FWFBPUlQgT2JqZWN0UGFpbnRQcm9wZXJ0aWVzUwotICAg ICAgIE5vZGVMaXN0JiBub2RlcywKLSAgICAgICBOb2RlSWQgbm9kZV9pZCwKLSAgICAgICBjb25z dCBQYXJlbnRUeXBlJiBwYXJlbnQsCi0tICAgICAgTm9kZVR5cGU6OlN0YXRlJiYgc3RhdGUsCi0t ICAgICAgY29uc3QgTm9kZVR5cGU6OkFuaW1hdGlvblN0YXRlJiBhbmltYXRpb25fc3RhdGUgPQot KyAgICAgIHR5cGVuYW1lIE5vZGVUeXBlOjpTdGF0ZSYmIHN0YXRlLAotKyAgICAgIGNvbnN0IHR5 cGVuYW1lIE5vZGVUeXBlOjpBbmltYXRpb25TdGF0ZSYgYW5pbWF0aW9uX3N0YXRlID0KLSAgICAg ICAgICAgTm9kZVR5cGU6OkFuaW1hdGlvblN0YXRlKCkpIHsKLSAgICAgLy8gRmlyc3QsIGNoZWNr IGlmIHdlIG5lZWQgdG8gYWRkIGEgbmV3IG5vZGUuCi0gICAgIGlmICghbm9kZXMuSGFzRmllbGQo bm9kZV9pZCkpIHsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9hbGxvY2F0 b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9j YXRvci5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvci5oCi0tLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9y L3NyYy9wYXJ0aXRpb25fYWxsb2MvaW50ZXJuYWxfYWxsb2NhdG9yLmgubWUJMjAyNC0wMi0yNCAx Njo1MTo0MS4yOTIzMTA1NTQgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uv YWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5h bF9hbGxvY2F0b3IuaAkyMDI0LTAyLTI0IDE2OjUyOjEwLjAyMjg5NjA2MyArMDEwMAotQEAgLTI2 LDcgKzI2LDcgQEAgUGFydGl0aW9uUm9vdCYgSW50ZXJuYWxBbGxvY2F0b3JSb290KCk7Ci0gCi0g Ly8gQSBjbGFzcyB0aGF0IG1lZXRzIEMrKyBuYW1lZCByZXF1aXJlbWVudHMsIEFsbG9jYXRvci4K LSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KLS1JbnRlcm5hbEFsbG9jYXRvcjxUPjo6dmFsdWVfdHlw ZSogSW50ZXJuYWxBbGxvY2F0b3I8VD46OmFsbG9jYXRlKAotK3R5cGVuYW1lIEludGVybmFsQWxs b2NhdG9yPFQ+Ojp2YWx1ZV90eXBlKiBJbnRlcm5hbEFsbG9jYXRvcjxUPjo6YWxsb2NhdGUoCi0g ICAgIHN0ZDo6c2l6ZV90IGNvdW50KSB7Ci0gICBQQV9DSEVDSyhjb3VudCA8PQotICAgICAgICAg ICAgc3RkOjpudW1lcmljX2xpbWl0czxzdGQ6OnNpemVfdD46Om1heCgpIC8gc2l6ZW9mKHZhbHVl X3R5cGUpKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJz L2hlYXBfYXJyYXkuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvY29udGFpbmVycy9o ZWFwX2FycmF5LmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvY29udGFpbmVycy9o ZWFwX2FycmF5LmgubWUJMjAyNC0wMi0yNCAxODowMjozNC40NjM5MjE1NjggKzAxMDAKLSsrKyBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvY29udGFpbmVycy9oZWFwX2FycmF5LmgJMjAyNC0w Mi0yNCAxODowNDowMS45MjI4NTA1NzEgKzAxMDAKLUBAIC0zMiw4ICszMiw4IEBAIGNsYXNzIFRS SVZJQUxfQUJJIEdTTF9PV05FUiBIZWFwQXJyYXkgewotICAgc3RhdGljX2Fzc2VydCghc3RkOjpp c19yZWZlcmVuY2VfdjxUPiwKLSAgICAgICAgICAgICAgICAgIkhlYXBBcnJheSBjYW5ub3QgaG9s ZCByZWZlcmVuY2UgdHlwZXMiKTsKLSAKLS0gIHVzaW5nIGl0ZXJhdG9yID0gYmFzZTo6c3BhbjxU Pjo6aXRlcmF0b3I7Ci0tICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGJhc2U6OnNwYW48Y29uc3Qg VD46Oml0ZXJhdG9yOwotKyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBiYXNlOjpzcGFuPFQ+ OjppdGVyYXRvcjsKLSsgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgYmFzZTo6c3Bh bjxjb25zdCBUPjo6aXRlcmF0b3I7Ci0gCi0gICAvLyBBbGxvY2F0ZXMgaW5pdGlhbGl6ZWQgbWVt b3J5IGNhcGFibGUgb2YgaG9sZGluZyBgc2l6ZWAgZWxlbWVudHMuIE5vIG1lbW9yeQotICAgLy8g aXMgYWxsb2NhdGVkIGZvciB6ZXJvLXNpemVkIGFycmF5cy4KLWRpZmYgLXVwIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL3R5cGVfY29udmVydGVyLmgubWUg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvdHlwZV9jb252 ZXJ0ZXIuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRp bmdzL3R5cGVfY29udmVydGVyLmgubWUJMjAyNC0wMi0yNCAxODo1MTowNi45NTcwODc0NjQgKzAx MDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90 eXBlX2NvbnZlcnRlci5oCTIwMjQtMDItMjQgMTg6NTE6MjcuNzc4NDg4NDkwICswMTAwCi1AQCAt MTI1LDcgKzEyNSw3IEBAIHVzaW5nIFZlY1ZhbHVlVHlwZSA9IHR5cGVuYW1lIFZlYzo6dmFsdWUK LSAKLSB0ZW1wbGF0ZSA8dHlwZW5hbWUgVmVjPgotIHVzaW5nIFZlY1B0ckxpa2VVbmRlcmx5aW5n VmFsdWVUeXBlID0KLS0gICAgc3RkOjpwb2ludGVyX3RyYWl0czxWZWNWYWx1ZVR5cGU8VmVjPj46 OmVsZW1lbnRfdHlwZTsKLSsgICAgdHlwZW5hbWUgc3RkOjpwb2ludGVyX3RyYWl0czxWZWNWYWx1 ZVR5cGU8VmVjPj46OmVsZW1lbnRfdHlwZTsKLSAKLSB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwK LSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9oYXNoX3RhYmxlLmgKLS0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL3d0Zi9oYXNoX3RhYmxlLmgubWUJMjAyNC0wMi0yNCAxOTo0NToxMy42MjA5MzQyMTUgKzAx MDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L3BsYXRmb3JtL3d0Zi9oYXNoX3RhYmxlLmgJMjAyNC0wMi0yNCAxOTo0NjowOC44MTc5NDA5NjIg KzAxMDAKLUBAIC0yMDA1LDcgKzIwMDUsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRv ckFkYXB0ZXIgewotICAgc3RhdGljX2Fzc2VydCghSXNUcmFjZWFibGU8dHlwZW5hbWUgVHJhaXRz OjpUcmFpdFR5cGU+Ojp2YWx1ZSk7Ci0gCi0gICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHN0 ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7Ci0tICB1c2luZyB2YWx1ZV90eXBlID0gSGFz aFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIEhh c2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHB0cmRp ZmZfdDsKLSAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKLSAgIHVzaW5nIHJlZmVyZW5j ZSA9IHZhbHVlX3R5cGUmOwotQEAgLTIwNTcsNyArMjA1Nyw3IEBAIHN0cnVjdCBIYXNoVGFibGVD b25zdEl0ZXJhdG9yQWRhcHRlcjwKLSAKLSAgcHVibGljOgotICAgdXNpbmcgaXRlcmF0b3JfY2F0 ZWdvcnkgPSBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOwotLSAgdXNpbmcgdmFsdWVf dHlwZSA9IEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSsgIHVzaW5nIHZhbHVlX3R5cGUgPSB0 eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7Ci0gICB1c2luZyBkaWZmZXJlbmNlX3R5 cGUgPSBwdHJkaWZmX3Q7Ci0gICB1c2luZyBwb2ludGVyID0gdmFsdWVfdHlwZSo7Ci0gICB1c2lu ZyByZWZlcmVuY2UgPSB2YWx1ZV90eXBlJjsKLUBAIC0yMTExLDcgKzIxMTEsNyBAQCBzdHJ1Y3Qg SGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyIHsKLSAgIHN0YXRpY19hc3NlcnQoIUlzVHJhY2VhYmxl PHR5cGVuYW1lIFRyYWl0czo6VHJhaXRUeXBlPjo6dmFsdWUpOwotIAotICAgdXNpbmcgaXRlcmF0 b3JfY2F0ZWdvcnkgPSBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOwotLSAgdXNpbmcg dmFsdWVfdHlwZSA9IEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSsgIHVzaW5nIHZhbHVlX3R5 cGUgPSB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7Ci0gICB1c2luZyBkaWZmZXJl bmNlX3R5cGUgPSBwdHJkaWZmX3Q7Ci0gICB1c2luZyBwb2ludGVyID0gdmFsdWVfdHlwZSo7Ci0g ICB1c2luZyByZWZlcmVuY2UgPSB2YWx1ZV90eXBlJjsKLUBAIC0yMTU5LDcgKzIxNTksNyBAQCBz dHJ1Y3QgSGFzaFRhYmxlSXRlcmF0b3JBZGFwdGVyPAotIAotICBwdWJsaWM6Ci0gICB1c2luZyBp dGVyYXRvcl9jYXRlZ29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7Ci0tICB1 c2luZyB2YWx1ZV90eXBlID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOwotKyAgdXNpbmcgdmFs dWVfdHlwZSA9IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKLSAgIHVzaW5nIGRp ZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZfdDsKLSAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBl KjsKLSAgIHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUmOwotZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9iYXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgubWUgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9iYXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaC5tZQkyMDI0LTAyLTI1IDExOjIyOjU5LjgxOTU5 MDUyOSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90eXBlcy9maXhlZF9h cnJheS5oCTIwMjQtMDItMjUgMTE6MjQ6MTIuNDI0OTUzMDMxICswMTAwCi1AQCAtMjcsOCArMjcs OCBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgVCwKLSBjbGFzcyBGaXhlZEFycmF5IDogcHVibGljIGFi c2w6OkZpeGVkQXJyYXk8VCwgTiwgQT4gewotICBwdWJsaWM6Ci0gICB1c2luZyBhYnNsOjpGaXhl ZEFycmF5PFQsIE4sIEE+OjpGaXhlZEFycmF5OwotLSAgZXhwbGljaXQgRml4ZWRBcnJheShhYnNs OjpGaXhlZEFycmF5PFQsIE4sIEE+OjpzaXplX3R5cGUgbiwKLS0gICAgICAgICAgICAgICAgICAg ICAgY29uc3QgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2NhdG9yX3R5cGUmIGEgPQot KyAgZXhwbGljaXQgRml4ZWRBcnJheSh0eXBlbmFtZSBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+ OjpzaXplX3R5cGUgbiwKLSsgICAgICAgICAgICAgICAgICAgICAgY29uc3QgdHlwZW5hbWUgYWJz bDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2NhdG9yX3R5cGUmIGEgPQotICAgICAgICAgICAg ICAgICAgICAgICAgICAgdHlwZW5hbWUgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6YWxsb2Nh dG9yX3R5cGUoKSkKLSAgICAgICA6IEZpeGVkQXJyYXkobiwgVCgpLCBhKSB7fQotIH07Ci1kaWZm IC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlv bnMvY29tbWFuZHMvaW50ZXJuYWwvY29tbWFuZF9pbnRlcm5hbC5oLm1lIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy9pbnRlcm5h bC9jb21tYW5kX2ludGVybmFsLmgKLS0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvaW50ZXJuYWwvY29tbWFuZF9pbnRlcm5h bC5oLm1lCTIwMjQtMDItMjUgMTU6MDQ6NTYuNzc1ODk3NzEzICswMTAwCi0rKysgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL2lu dGVybmFsL2NvbW1hbmRfaW50ZXJuYWwuaAkyMDI0LTAyLTI1IDE1OjA1OjM0Ljg4NDU3OTI3OSAr MDEwMAotQEAgLTEyMSw3ICsxMjEsNyBAQCBjbGFzcyBDb21tYW5kQmFzZSB7Ci0gdGVtcGxhdGUg PHR5cGVuYW1lIExvY2tUeXBlPgotIGNsYXNzIENvbW1hbmRXaXRoTG9jayA6IHB1YmxpYyBDb21t YW5kQmFzZSB7Ci0gIHB1YmxpYzoKLS0gIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IExvY2tUeXBl OjpMb2NrRGVzY3JpcHRpb247Ci0rICB1c2luZyBMb2NrRGVzY3JpcHRpb24gPSB0eXBlbmFtZSBM b2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uOwotICAgZXhwbGljaXQgQ29tbWFuZFdpdGhMb2NrKGNv bnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIExvY2tE ZXNjcmlwdGlvbiBpbml0aWFsX2xvY2tfcmVxdWVzdCk7Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFuZHMvd2Vi X2FwcF9jb21tYW5kLmgubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93 ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL3dlYl9hcHBfY29tbWFuZC5oCi0tLS0gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL3dl Yl9hcHBfY29tbWFuZC5oLm1lCTIwMjQtMDItMjUgMTU6MDU6NDYuODg1NzkzODI4ICswMTAwCi0r KysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25z L2NvbW1hbmRzL3dlYl9hcHBfY29tbWFuZC5oCTIwMjQtMDItMjUgMTU6MDY6MTIuMzM0MjQ4NzI1 ICswMTAwCi1AQCAtMTA2LDcgKzEwNiw3IEBAIGNsYXNzIFdlYkFwcExvY2tNYW5hZ2VyOwotIHRl bXBsYXRlIDx0eXBlbmFtZSBMb2NrVHlwZSwgdHlwZW5hbWUuLi4gQ2FsbGJhY2tBcmdzPgotIGNs YXNzIFdlYkFwcENvbW1hbmQgOiBwdWJsaWMgaW50ZXJuYWw6OkNvbW1hbmRXaXRoTG9jazxMb2Nr VHlwZT4gewotICBwdWJsaWM6Ci0tICB1c2luZyBMb2NrRGVzY3JpcHRpb24gPSBMb2NrVHlwZTo6 TG9ja0Rlc2NyaXB0aW9uOwotKyAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9uID0gdHlwZW5hbWUgTG9j a1R5cGU6OkxvY2tEZXNjcmlwdGlvbjsKLSAgIHVzaW5nIENhbGxiYWNrVHlwZSA9IGJhc2U6Ok9u Y2VDYWxsYmFjazx2b2lkKENhbGxiYWNrQXJncy4uLik+OwotICAgdXNpbmcgU2h1dGRvd25Bcmd1 bWVudHNUdXBsZSA9IHN0ZDo6dHVwbGU8c3RkOjpkZWNheV90PENhbGxiYWNrQXJncz4uLi4+Owot IAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBw bGljYXRpb25zL3dlYl9hcHBfY29tbWFuZF9zY2hlZHVsZXIuaC5tZSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3Nj aGVkdWxlci5oCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJf YXBwbGljYXRpb25zL3dlYl9hcHBfY29tbWFuZF9zY2hlZHVsZXIuaC5tZQkyMDI0LTAyLTI1IDE1 OjA2OjE3Ljg5NjM0ODE0OSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1hbmRfc2NoZWR1bGVyLmgJMjAy NC0wMi0yNSAxNTowNjo1OC44NDEwNzY3NDYgKzAxMDAKLUBAIC0zNTUsNyArMzU1LDcgQEAgY2xh c3MgV2ViQXBwQ29tbWFuZFNjaGVkdWxlciB7Ci0gICAvLyBjb21tYW5kIHN5c3RlbS4KLSAgIHRl bXBsYXRlIDx0eXBlbmFtZSBMb2NrVHlwZT4KLSAgIHZvaWQgU2NoZWR1bGVDYWxsYmFjayhjb25z dCBzdGQ6OnN0cmluZyYgb3BlcmF0aW9uX25hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAg TG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbiBsb2NrX2Rlc2NyaXB0aW9uLAotKyAgICAgICAgICAg ICAgICAgICAgICAgIHR5cGVuYW1lIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRpb24gbG9ja19kZXNj cmlwdGlvbiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBDYWxsYmFja0NvbW1hbmQ8TG9ja1R5 cGUsIHZvaWQ+IGNhbGxiYWNrLAotICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6Ok9uY2VD bG9zdXJlIG9uX2NvbXBsZXRlLAotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6 OkxvY2F0aW9uJiBsb2NhdGlvbiA9IEZST01fSEVSRSkgewotQEAgLTM3Myw3ICszNzMsNyBAQCBj bGFzcyBXZWJBcHBDb21tYW5kU2NoZWR1bGVyIHsKLSAgICAgICAgICAgICB0eXBlbmFtZSBDYWxs YmFja1JldHVyblZhbHVlID0gc3RkOjpkZWNheV90PENvbXBsZXRpb25DYWxsYmFja0FyZz4+Ci0g ICB2b2lkIFNjaGVkdWxlQ2FsbGJhY2tXaXRoUmVzdWx0KAotICAgICAgIGNvbnN0IHN0ZDo6c3Ry aW5nJiBvcGVyYXRpb25fbmFtZSwKLS0gICAgICBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uIGxv Y2tfZGVzY3JpcHRpb24sCi0rICAgICAgdHlwZW5hbWUgTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlv biBsb2NrX2Rlc2NyaXB0aW9uLAotICAgICAgIENhbGxiYWNrQ29tbWFuZDxMb2NrVHlwZSwgQ2Fs bGJhY2tSZXR1cm5WYWx1ZT4gY2FsbGJhY2ssCi0gICAgICAgYmFzZTo6T25jZUNhbGxiYWNrPHZv aWQoQ29tcGxldGlvbkNhbGxiYWNrQXJnKT4gb25fY29tcGxldGUsCi0gICAgICAgQ2FsbGJhY2tS ZXR1cm5WYWx1ZSBhcmdfZm9yX3NodXRkb3duLAotZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hl ci5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIv Y29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuaAotLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuaC5t ZQkyMDI0LTAyLTI1IDE1OjEyOjUzLjgzNTQwOTM5MiArMDEwMAotKysrIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2Zl dGNoZXIuaAkyMDI0LTAyLTI1IDE1OjE2OjAzLjE3MTkzMTAzMyArMDEwMAotQEAgLTQyNCw3ICs0 MjQsNyBAQCBjbGFzcyBSZXRyeWluZ0ZldGNoZXJJbXBsIGZpbmFsIDogcHVibGljCi0gICBSZXRy eWluZ0ZldGNoZXJJbXBsKGNvbnN0IFJldHJ5aW5nRmV0Y2hlckltcGwmKSA9IGRlbGV0ZTsKLSAg IFJldHJ5aW5nRmV0Y2hlckltcGwmIG9wZXJhdG9yPShjb25zdCBSZXRyeWluZ0ZldGNoZXJJbXBs JikgPSBkZWxldGU7Ci0gCi0tICB2b2lkIFN0YXJ0KFByb3RvRmV0Y2hlcjxSZXNwb25zZT46OkNh bGxiYWNrIGNhbGxiYWNrKSBvdmVycmlkZSB7Ci0rICB2b2lkIFN0YXJ0KHR5cGVuYW1lIFByb3Rv RmV0Y2hlcjxSZXNwb25zZT46OkNhbGxiYWNrIGNhbGxiYWNrKSBvdmVycmlkZSB7Ci0gICAgIGNh bGxiYWNrXyA9IHN0ZDo6bW92ZShjYWxsYmFjayk7Ci0gICAgIFJldHJ5KCk7Ci0gICB9Ci1AQCAt NDY5LDcgKzQ2OSw3IEBAIGNsYXNzIFJldHJ5aW5nRmV0Y2hlckltcGwgZmluYWwgOiBwdWJsaWMK LSAgIH0KLSAKLSAgIC8vIENsaWVudCBjYWxsYmFjay4KLS0gIFR5cGVkUHJvdG9GZXRjaGVyPFJl c3BvbnNlPjo6Q2FsbGJhY2sgY2FsbGJhY2tfOwotKyAgdHlwZW5hbWUgVHlwZWRQcm90b0ZldGNo ZXI8UmVzcG9uc2U+OjpDYWxsYmFjayBjYWxsYmFja187Ci0gCi0gICAvLyBSZXRyeSBjb250cm9s cy4KLSAgIGJhc2U6Ok9uZVNob3RUaW1lciB0aW1lcl87Ci1AQCAtNDkwLDcgKzQ5MCw3IEBAIGNs YXNzIFBhcmFsbGVsRmV0Y2hNYW5hZ2VyIHsKLSAgIC8vIERlZmVycmVkIGZldGNoZXIgaXMgcmVx dWlyZWQgYmVjYXVzZSBpdCBzaG91bGQgYmUgc3RhcnRlZCBhZnRlciBpdCBpcwotICAgLy8gc3Rv cmVkIGludGVybmFsbHkuCi0gICB1c2luZyBGZXRjaGVyID0gUHJvdG9GZXRjaGVyPFJlc3BvbnNl PjsKLS0gIHVzaW5nIEtleVR5cGUgPSBiYXNlOjpJRE1hcDxzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hl cj4+OjpLZXlUeXBlOwotKyAgdXNpbmcgS2V5VHlwZSA9IHR5cGVuYW1lIGJhc2U6OklETWFwPHN0 ZDo6dW5pcXVlX3B0cjxGZXRjaGVyPj46OktleVR5cGU7Ci0gCi0gIHB1YmxpYzoKLSAgIC8vIFBy b3ZpZGVzIGZyZXNoIGluc3RhbmNlcyBvZiBhIGRlZmVycmVkIGZldGNoZXIgZm9yIGVhY2ggZmV0 Y2guCi1AQCAtNTA2LDcgKzUwNiw3IEBAIGNsYXNzIFBhcmFsbGVsRmV0Y2hNYW5hZ2VyIHsKLSAK LSAgIC8vIFN0YXJ0cyB0aGUgZmV0Y2guIFVuZGVybHlpbmcgZmV0Y2hlciBpcyBzdG9yZWQgaW50 ZXJuYWxseSwgYW5kIHdpbGwgYmUKLSAgIC8vIGNsZWFuZWQgdXAgYWZ0ZXIgZmluaXNoIG9yIHdo ZW4gdGhpcyBtYW5hZ2VyIGlzIGRlc3Ryb3llZC4KLS0gIHZvaWQgRmV0Y2goY29uc3QgUmVxdWVz dCYgcmVxdWVzdCwgRmV0Y2hlcjo6Q2FsbGJhY2sgY2FsbGJhY2spIHsKLSsgIHZvaWQgRmV0Y2go Y29uc3QgUmVxdWVzdCYgcmVxdWVzdCwgdHlwZW5hbWUgRmV0Y2hlcjo6Q2FsbGJhY2sgY2FsbGJh Y2spIHsKLSAgICAgQ0hFQ0soY2FsbGJhY2spIDw8ICJVc2UgYmFzZTo6RG9Ob3RoaW5nKCkgaW5z dGVhZCBvZiBlbXB0eSBjYWxsYmFjay4iOwotICAgICBLZXlUeXBlIGtleSA9IHJlcXVlc3RzX2lu X2ZsaWdodF8uQWRkKE1ha2VGZXRjaGVyKHJlcXVlc3QpKTsKLSAgICAgcmVxdWVzdHNfaW5fZmxp Z2h0Xy5Mb29rdXAoa2V5KS0+U3RhcnQoCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb21w b25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL3RmbGl0ZV9tb2RlbF9leGVjdXRvci5oLm9y aWcJMjAyNC0wMy0xMyAyMDozNTo0NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjMu MC42MzEyLjQ2L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVs X2V4ZWN1dG9yLmgJMjAyNC0wMy0xNSAxNTo0NTo0Ny4wNjcxNTY4MjYgKzAxMDAKLUBAIC0yNDIs NyArMjQyLDcgQEAKLSAgIHZvaWQgU2VuZEZvckJhdGNoRXhlY3V0aW9uKAotICAgICAgIEJhdGNo RXhlY3V0aW9uQ2FsbGJhY2sgY2FsbGJhY2tfb25fY29tcGxldGUsCi0gICAgICAgYmFzZTo6VGlt ZVRpY2tzIHN0YXJ0X3RpbWUsCi0tICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1 dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cykKLSsgICAgICB0eXBlbmFtZSBNb2Rl bEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5w dXRzKQotICAgICAgIG92ZXJyaWRlIHsKLSAgICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5l cl8tPlJ1bnNUYXNrc0luQ3VycmVudFNlcXVlbmNlKCkpOwotICAgICBEQ0hFQ0tfQ0FMTEVEX09O X1ZBTElEX1NFUVVFTkNFKHNlcXVlbmNlX2NoZWNrZXJfKTsKLUBAIC0yNjQsNyArMjY0LDcgQEAK LSAgIC8vIFN0YXJ0cyB0aGUgc3luY2hyb25vdXMgZXhlY3V0aW9uIG9mIHRoZSBtb2RlbC4gUmV0 dXJucyBtb2RlbCBvdXRwdXRzLgotICAgLy8gTW9kZWwgbmVlZHMgdG8gYmUgbG9hZGVkLiBTeW5j aHJvbm91cyBjYWxscyBkbyBub3QgbG9hZCBvciB1bmxvYWQgbW9kZWwuCi0gICBzdGQ6OnZlY3Rv cjxzdGQ6Om9wdGlvbmFsPE91dHB1dFR5cGU+PiBTZW5kRm9yQmF0Y2hFeGVjdXRpb25TeW5jKAot LSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1 dFZlY3RvciBpbnB1dHMpCi0rICAgICAgdHlwZW5hbWUgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBl LCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cykKLSAgICAgICBvdmVycmlk ZSB7Ci0gICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJl bnRTZXF1ZW5jZSgpKTsKLSAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1 ZW5jZV9jaGVja2VyXyk7Ci1AQCAtNDIyLDcgKzQyMiw3IEBACi0gICAvLyBleGVjdXRlcyBpdCBv biB0aGUgbW9kZWwgZXhlY3V0aW9uIHRocmVhZC4KLSAgIHZvaWQgTG9hZE1vZGVsRmlsZUFuZEJh dGNoRXhlY3V0ZSgKLSAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrX29uX2Nv bXBsZXRlLAotLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29u c3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpIHsKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9y PE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKSB7Ci0g ICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1 ZW5jZSgpKTsKLSAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9j aGVja2VyXyk7Ci0gCi1AQCAtNDM5LDcgKzQzOSw3IEBACi0gCi0gICAvLyBCYXRjaCBleGVjdXRl cyB0aGUgbG9hZGVkIG1vZGVsIGZvciBpbnB1dHMuCi0gICB2b2lkIEJhdGNoRXhlY3V0ZUxvYWRl ZE1vZGVsKAotLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29u c3RSZWZJbnB1dFZlY3RvciBpbnB1dHMsCi0rICAgICAgdHlwZW5hbWUgTW9kZWxFeGVjdXRvcjxP dXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cywKLSAgICAg ICBzdGQ6OnZlY3RvcjxzdGQ6Om9wdGlvbmFsPE91dHB1dFR5cGU+Piogb3V0cHV0cykgewotICAg ICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVu Y2UoKSk7Ci0gICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hl Y2tlcl8pOwotQEAgLTQ5OSw3ICs0OTksNyBAQAotICAgLy8gVW5sb2FkcyB0aGUgbW9kZWwgaWYg bmVlZGVkLgotICAgdm9pZCBCYXRjaEV4ZWN1dGVMb2FkZWRNb2RlbEFuZFJ1bkNhbGxiYWNrKAot ICAgICAgIEJhdGNoRXhlY3V0aW9uQ2FsbGJhY2sgY2FsbGJhY2tfb25fY29tcGxldGUsCi0tICAg ICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVj dG9yIGlucHV0cywKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElu cHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAotICAgICAgIEV4ZWN1dGlvblN0 YXR1cyBleGVjdXRpb25fc3RhdHVzKSB7Ci0gICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5u ZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5jZSgpKTsKLSAgICAgRENIRUNLX0NBTExFRF9P Tl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7Ci0tLS0gY2hyb21pdW0tMTIzLjAu NjMxMi40Ni9iYXNlL2Z1bmN0aW9uYWwvZnVuY3Rpb25fcmVmLmgub3JpZwkyMDI0LTAzLTE1IDE1 OjQzOjMyLjMyOTc4Njk3NCArMDEwMAotKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvYmFzZS9m dW5jdGlvbmFsL2Z1bmN0aW9uX3JlZi5oCTIwMjQtMDMtMTUgMTU6NDY6NTcuMjc4ODEzNTAwICsw MTAwCi1AQCAtNjQsNyArNjQsNyBAQAotIHRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZS4u LiBBcmdzPgotIGNsYXNzIEZ1bmN0aW9uUmVmPFIoQXJncy4uLik+IHsKLSAgIHRlbXBsYXRlIDx0 eXBlbmFtZSBGdW5jdG9yLAotLSAgICAgICAgICAgIHR5cGVuYW1lIFJ1blR5cGUgPSBpbnRlcm5h bDo6RnVuY3RvclRyYWl0czxGdW5jdG9yPjo6UnVuVHlwZT4KLSsgICAgICAgICAgICB0eXBlbmFt ZSBSdW5UeXBlID0gdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0b3JUcmFpdHM8RnVuY3Rvcj46OlJ1 blR5cGU+Ci0gICBzdGF0aWMgY29uc3RleHByIGJvb2wga0NvbXBhdGlibGVGdW5jdG9yID0KLSAg ICAgICBzdGQ6OmNvbnZlcnRpYmxlX3RvPGludGVybmFsOjpFeHRyYWN0UmV0dXJuVHlwZTxSdW5U eXBlPiwgUj4gJiYKLSAgICAgICBzdGQ6OnNhbWVfYXM8aW50ZXJuYWw6OkV4dHJhY3RBcmdzPFJ1 blR5cGU+LCBpbnRlcm5hbDo6VHlwZUxpc3Q8QXJncy4uLj4+OwotZGlmZiAtdXAgY2hyb21pdW0t MTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4 L3NjcmlwdF9wcm9taXNlX3Byb3BlcnR5LmgubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L3NjcmlwdF9wcm9taXNlX3By b3BlcnR5LmgKLS0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3Byb21pc2VfcHJvcGVydHkuaC5tZQkyMDI0 LTAzLTE2IDIyOjU1OjAxLjM4NzI2NTQ3OCArMDEwMAotKysrIGNocm9taXVtLTEyMy4wLjYzMTIu NDYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJv bWlzZV9wcm9wZXJ0eS5oCTIwMjQtMDMtMTYgMjI6NTU6MTguNzUyNTY4MzEwICswMTAwCi1AQCAt MTczLDcgKzE3Myw3IEBAIGNsYXNzIFNjcmlwdFByb21pc2VQcm9wZXJ0eSBmaW5hbAotICAgdGVt cGxhdGUgPHR5cGVuYW1lIFQ+Ci0gICAgIHJlcXVpcmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIGJp bmRpbmdzOjpFbnVtZXJhdGlvbkJhc2U+Ci0gICBzdGF0aWMgVCBEZWZhdWx0UHJvbWlzZVJlc3Vs dFZhbHVlKCkgewotLSAgICByZXR1cm4gVChzdGF0aWNfY2FzdDxUOjpFbnVtPigwKSk7Ci0rICAg IHJldHVybiBUKHN0YXRpY19jYXN0PHR5cGVuYW1lIFQ6OkVudW0+KDApKTsKLSAgIH0KLSAKLSAg IFN0YXRlIHN0YXRlXyA9IGtQZW5kaW5nOwotZGlmZiAtdXAgY2hyb21pdW0tMTIzLjAuNjMxMi40 Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L3NjcmlwdF9wcm9t aXNlX3Jlc29sdmVyLmgubWUgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L3NjcmlwdF9wcm9taXNlX3Jlc29sdmVyLmgKLS0t LSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRp bmdzL2NvcmUvdjgvc2NyaXB0X3Byb21pc2VfcmVzb2x2ZXIuaC5tZQkyMDI0LTAzLTE2IDIyOjQx OjUwLjYzNDUxMDAxOSArMDEwMAotKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9yZXNvbHZl ci5oCTIwMjQtMDMtMTYgMjI6NTQ6NTEuMjE1MDg4MDg3ICswMTAwCi1AQCAtNDc3LDcgKzQ3Nyw3 IEBAIGNsYXNzIFNjcmlwdFByb21pc2VSZXNvbHZlclR5cGVkIDogcHVibGkKLSAKLSAgcHJpdmF0 ZToKLSAgIHVzaW5nIFR5cGVkUmVzb2x2ZXIgPQotLSAgICAgIFNjcmlwdFByb21pc2VUeXBlZDxJ RExSZXNvbHZlZFR5cGU+OjpJbnRlcm5hbFJlc29sdmVyVHlwZWQ7Ci0rICAgICAgdHlwZW5hbWUg U2NyaXB0UHJvbWlzZVR5cGVkPElETFJlc29sdmVkVHlwZT46OkludGVybmFsUmVzb2x2ZXJUeXBl ZDsKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBibGluawoKZGlmZiAtLWdpdCBhL2Nocm9taXVt LTEyMy13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2ggYi9jaHJv bWl1bS0xMjMtd29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoCmRl bGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5OThmYmFkLi4wMDAwMDAwCi0tLSBhL2Nocm9t aXVtLTEyMy13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSw3OCArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41Nzkw LjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1 Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2Nk bV9wcm9taXNlX2FkYXB0ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jh c2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVk X2JpbmRpbmcJMjAyMy0wNi0wNyAyMTo0ODozNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1 bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYwkyMDIzLTA2 LTE3IDE2OjUzOjIwLjIxNjYyODU1NyArMDIwMAotQEAgLTk0LDcgKzk0LDkgQEAgdm9pZCBDZG1Q cm9taXNlQWRhcHRlcjo6UmVqZWN0UHJvbWlzZSh1aQotIHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6 OkNsZWFyKENsZWFyUmVhc29uIHJlYXNvbikgewotICAgLy8gUmVqZWN0IGFsbCBvdXRzdGFuZGlu ZyBwcm9taXNlcy4KLSAgIERDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVh ZCgpKTsKLS0gIGZvciAoYXV0byYgW3Byb21pc2VfaWQsIHByb21pc2VdIDogcHJvbWlzZXNfKSB7 Ci0rICBmb3IgKGF1dG8mIFtwX2ksIHBfZV0gOiBwcm9taXNlc18pIHsKLSsgICAgYXV0byYgcHJv bWlzZV9pZCA9IHBfaTsKLSsgICAgYXV0byYgcHJvbWlzZSA9IHBfZTsKLSAgICAgVFJBQ0VfRVZF TlRfTkVTVEFCTEVfQVNZTkNfRU5EMSgKLSAgICAgICAgICJtZWRpYSIsICJDZG1Qcm9taXNlIiwg VFJBQ0VfSURfV0lUSF9TQ09QRSgiQ2RtUHJvbWlzZSIsIHByb21pc2VfaWQpLAotICAgICAgICAg InN0YXR1cyIsICJjbGVhcmVkIik7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjMyL2Nv bnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250ZXh0X3dyYXBw ZXIuY2MubWUgY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93 b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNjCi0tLS0gY2hyb21pdW0tMTE1 LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJf Y29udGV4dF93cmFwcGVyLmNjLm1lCTIwMjMtMDYtMTkgMDg6MDQ6MDIuMjg3MDcyNzIyICswMjAw Ci0rKysgY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3Jr ZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNjCTIwMjMtMDYtMTkgMDg6MTg6MjQu NTc2ODE0OTUwICswMjAwCi1AQCAtMTM5Myw3ICsxMzkzLDggQEAgdm9pZCBTZXJ2aWNlV29ya2Vy Q29udGV4dFdyYXBwZXI6Ok1heWJlUAotICAgICByZXR1cm47Ci0gICB9Ci0gCi0tICBhdXRvIFtk b2N1bWVudF91cmwsIGtleSwgY2FsbGJhY2tdID0gc3RkOjptb3ZlKCpyZXF1ZXN0KTsKLSsgIGF1 dG8gW2RfdSwga2V5LCBjYWxsYmFja10gPSBzdGQ6Om1vdmUoKnJlcXVlc3QpOwotKyAgYXV0byBk b2N1bWVudF91cmwgPSBkX3U7Ci0gCi0gICBEQ0hFQ0soZG9jdW1lbnRfdXJsLmlzX3ZhbGlkKCkp OwotICAgVFJBQ0VfRVZFTlQxKCJTZXJ2aWNlV29ya2VyIiwKLWRpZmYgLXVwIGNocm9taXVtLTEy MS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9n cmlkX2xheW91dF9hbGdvcml0aG0uY2MudGhhbiBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3Jp dGhtLmNjCi0tLS0gY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYy50aGFuCTIwMjMt MTItMTkgMTc6NTc6NTYuMjA1MTk3MjQ2ICswMTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4x Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0 X2FsZ29yaXRobS5jYwkyMDIzLTEyLTE5IDE4OjEwOjEzLjc3ODYzNDUzMSArMDEwMAotQEAgLTM1 MjcsOCArMzUyNyw4IEBAIHZvaWQgR3JpZExheW91dEFsZ29yaXRobTo6UGxhY2VHcmlkSXRlbXMK LSAgIERDSEVDSyhvdXRfcm93X2JyZWFrX2JldHdlZW4pOwotIAotICAgY29uc3QgYXV0byYgY29u dGFpbmVyX3NwYWNlID0gR2V0Q29uc3RyYWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3Jp ZF9pdGVtcywgbGF5b3V0X2RhdGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERh dGEoKTsKLS0KLSsgIGNvbnN0IGF1dG8mIFtncmlkX2l0ZW1zLCBsX2QsIHRyZWVfc2l6ZV0gPSBz aXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLSsgIGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0g bF9kOwotICAgY29uc3QgYXV0byogY2FjaGVkX2xheW91dF9zdWJ0cmVlID0gY29udGFpbmVyX3Nw YWNlLkdldEdyaWRMYXlvdXRTdWJ0cmVlKCk7Ci0gICBjb25zdCBhdXRvIGNvbnRhaW5lcl93cml0 aW5nX2RpcmVjdGlvbiA9Ci0gICAgICAgY29udGFpbmVyX3NwYWNlLkdldFdyaXRpbmdEaXJlY3Rp b24oKTsKLUBAIC0zNjkxLDggKzM2OTEsOSBAQCB2b2lkIEdyaWRMYXlvdXRBbGdvcml0aG06OlBs YWNlR3JpZEl0ZW1zCi0gCi0gICAvLyBUT0RPKGlraWxwYXRyaWNrKTogVXBkYXRlIHxTZXRIYXNT ZWVuQWxsQ2hpbGRyZW58IGFuZCBlYXJseSBleGl0IGlmIHRydWUuCi0gICBjb25zdCBhdXRvJiBj b25zdHJhaW50X3NwYWNlID0gR2V0Q29uc3RyYWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBb Z3JpZF9pdGVtcywgbGF5b3V0X2RhdGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9v dERhdGEoKTsKLS0KLSsgIGNvbnN0IGF1dG8mIFtnX2ksIGxfZCwgdHJlZV9zaXplXSA9IHNpemlu Z190cmVlLlRyZWVSb290RGF0YSgpOwotKyAgY29uc3QgYXV0byYgZ3JpZF9pdGVtcyA9IGdfaTsK LSsgIGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9kOwotICAgY29uc3QgYXV0byogY2FjaGVk X2xheW91dF9zdWJ0cmVlID0gY29uc3RyYWludF9zcGFjZS5HZXRHcmlkTGF5b3V0U3VidHJlZSgp OwotICAgY29uc3QgYXV0byBjb250YWluZXJfd3JpdGluZ19kaXJlY3Rpb24gPQotICAgICAgIGNv bnN0cmFpbnRfc3BhY2UuR2V0V3JpdGluZ0RpcmVjdGlvbigpOwotZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9wcmVkaWN0b3JzL2xjcF9jcml0aWNhbF9wYXRo X3ByZWRpY3Rvci9wcmV3YXJtX2h0dHBfZGlza19jYWNoZV9tYW5hZ2VyLmNjLm1lIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJlZGljdG9ycy9sY3BfY3JpdGljYWxfcGF0 aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2FjaGVfbWFuYWdlci5jYwotLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJlZGljdG9ycy9sY3BfY3JpdGljYWxf cGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2FjaGVfbWFuYWdlci5jYy5tZQkyMDI0 LTAyLTI1IDE4OjAzOjUxLjY1NDU3OTU3OSArMDEwMAotKysrIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvcHJlZGljdG9ycy9sY3BfY3JpdGljYWxfcGF0aF9wcmVkaWN0b3Iv cHJld2FybV9odHRwX2Rpc2tfY2FjaGVfbWFuYWdlci5jYwkyMDI0LTAyLTI1IDE4OjEyOjQ1LjE0 NDI4Nzc1MCArMDEwMAotQEAgLTEzNiw3ICsxMzYsOCBAQCB2b2lkIFByZXdhcm1IdHRwRGlza0Nh Y2hlTWFuYWdlcjo6TWF5YmVQCi0gICBzdGQ6OnBhaXI8dXJsOjpPcmlnaW4sIEdVUkw+IG9yaWdp bl9hbmRfdXJsOwotICAgc3RkOjpzd2FwKG9yaWdpbl9hbmRfdXJsLCBxdWV1ZWRfam9ic18uZnJv bnQoKSk7Ci0gICBxdWV1ZWRfam9ic18ucG9wKCk7Ci0tICBjb25zdCBhdXRvJiBbb3JpZ2luLCB1 cmxdID0gb3JpZ2luX2FuZF91cmw7Ci0rICBjb25zdCBhdXRvJiBbb3JpZ2luLCB1XSA9IG9yaWdp bl9hbmRfdXJsOwotKyAgY29uc3QgYXV0byYgdXJsID0gdTsKLSAgIFRSQUNFX0VWRU5UX1dJVEhf RkxPVzEoCi0gICAgICAgImxvYWRpbmciLCAiUHJld2FybUh0dHBEaXNrQ2FjaGVNYW5hZ2VyOjpN YXliZVByb2Nlc3NOZXh0UXVldWVkSm9iIiwKLSAgICAgICBUUkFDRV9JRF9MT0NBTCh0aGlzKSwK LS0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvY29tbW9uL3NlcnZpY2Vfd29ya2Vy L3JhY2VfbmV0d29ya19yZXF1ZXN0X3VybF9sb2FkZXJfY2xpZW50LmNjLm9yaWcJMjAyNC0wMy0x NSAxNTozNzo1OC4yMDEyMDkzNTQgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Nv bnRlbnQvY29tbW9uL3NlcnZpY2Vfd29ya2VyL3JhY2VfbmV0d29ya19yZXF1ZXN0X3VybF9sb2Fk ZXJfY2xpZW50LmNjCTIwMjQtMDMtMTUgMTU6NDA6MzUuMDAzMjUwNzIzICswMTAwCi1AQCAtNjM5 LDcgKzYzOSw4IEBACi0gICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7Ci0gICB9Ci0gCi0tICBhdXRv IFtyZXN1bHQsIHJlYWRfYnVmZmVyXSA9IEJlZ2luUmVhZERhdGEoKTsKLSsgIGF1dG8gW3IsIHJl YWRfYnVmZmVyXSA9IEJlZ2luUmVhZERhdGEoKTsKLSsgIGF1dG8gcmVzdWx0ID0gcjsKLSAgIFRS QUNFX0VWRU5UX1dJVEhfRkxPVzIoCi0gICAgICAgIlNlcnZpY2VXb3JrZXIiLAotICAgICAgICJT ZXJ2aWNlV29ya2VyUmFjZU5ldHdvcmtSZXF1ZXN0VVJMTG9hZGVyQ2xpZW50OjpSZWFkQW5kV3Jp dGUiLAoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNC1lbDctY29uc3RleHByLnBhdGNoIGIvY2hy b21pdW0tMTI0LWVsNy1jb25zdGV4cHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uNzM1ZDM0MwotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyNC1lbDctY29u c3RleHByLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYz NjcuMTE4L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2RhdGFfbW9kZWwvYXV0b2Zp bGxfaTE4bl9hcGkuaC5tZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9m aWxsL2NvcmUvYnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmgKKy0tLSBjaHJv bWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9kYXRh X21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmgubWUJMjAyNC0wNS0wNyAwNzo1ODoxMC4yMDI5NjAy OTggKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxs L2NvcmUvYnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmgJMjAyNC0wNS0wNyAw Nzo1OToyOS40MTM0MTE3NjcgKzAyMDAKK0BAIC0xNiw4ICsxNiw4IEBAIG5hbWVzcGFjZSBhdXRv ZmlsbDo6aTE4bl9tb2RlbF9kZWZpbml0aW8KKyAvLyBDb3VudHJ5IGNvZGUgdGhhdCByZXByZXNl bnRzIGF1dG9maWxsJ3MgbGVnYWN5IGFkZHJlc3MgaGllcmFyY2h5IG1vZGVsIGFzCisgLy8gc3Rv cmVkIGBrQXV0b2ZpbGxNb2RlbFJ1bGVzYC4gQXMgYSB3b3JrYXJvdW5kIGZvciBHQ0Mgd2UgZGVj bGFyZSB0aGUKKyAvLyBzdGQ6OnN0cmluZyBjb25zdGV4cHIgZmlyc3QuCistY29uc3RleHByIGlu bGluZSBzdGQ6OnN0cmluZyBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGVTdHJpbmd7IlhYIn07 CistY29uc3RleHByIEFkZHJlc3NDb3VudHJ5Q29kZSBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNv ZGUgPQorK2NvbnN0IGlubGluZSBzdGQ6OnN0cmluZyBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNv ZGVTdHJpbmd7IlhYIn07CisrY29uc3QgQWRkcmVzc0NvdW50cnlDb2RlIGtMZWdhY3lIaWVyYXJj aHlDb3VudHJ5Q29kZSA9CisgICAgIEFkZHJlc3NDb3VudHJ5Q29kZShrTGVnYWN5SGllcmFyY2h5 Q291bnRyeUNvZGVTdHJpbmcpOworIAorIC8vIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFk ZHJlc3MgaGllcmFyY2h5IG1vZGVsIGNvcnJlc3BvbmRpbmcgdG8gdGhlCitkaWZmIC11cCBjaHJv bWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRy aWNzL2xvZ19ldmVudC5oLm1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXV0 b2ZpbGwvY29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2ZW50LmgKKy0tLSBjaHJvbWl1bS0xMjQu MC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19l dmVudC5oLm1lCTIwMjQtMDUtMDcgMDc6NTk6MzguMjM5NTczNDk3ICswMjAwCisrKysgY2hyb21p dW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmlj cy9sb2dfZXZlbnQuaAkyMDI0LTA1LTA3IDA4OjAwOjU1LjU3ODk5MDY1OSArMDIwMAorQEAgLTU3 LDcgKzU3LDcgQEAgc3RydWN0IElzUmVxdWlyZWQgeworICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBu b3QgZGVmaW5lZCBhbmQgY29uc3RldmFsLiBUaGVyZWZvcmUsIGFueSBldmFsdWF0aW9uIHdpbGwK KyAgIC8vIGZhaWwgYW5kIGZhaWwgYXQgY29tcGlsZSB0aW1lLgorICAgdGVtcGxhdGUgPHR5cGVu YW1lIFQ+CistICBjb25zdGV2YWwgb3BlcmF0b3IgVCgpOyAgLy8gTk9MSU5UCisrICBvcGVyYXRv ciBUKCk7ICAvLyBOT0xJTlQKKyB9OworIAorIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAorZGlm ZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9oaXN0b3J5L2NvcmUvYnJv d3Nlci9oaXN0b3J5X3R5cGVzLmgubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50 cy9oaXN0b3J5L2NvcmUvYnJvd3Nlci9oaXN0b3J5X3R5cGVzLmgKKy0tLSBjaHJvbWl1bS0xMjQu MC42MzY3LjExOC9jb21wb25lbnRzL2hpc3RvcnkvY29yZS9icm93c2VyL2hpc3RvcnlfdHlwZXMu aC5tZQkyMDI0LTA1LTA2IDE4OjAxOjI4LjYwNjg0NTU1NCArMDIwMAorKysrIGNocm9taXVtLTEy NC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90eXBl cy5oCTIwMjQtMDUtMDYgMTg6MDY6MTUuNDkyNzUxMjUyICswMjAwCitAQCAtNzAsNyArNzAsNyBA QCBjb25zdGV4cHIgVmlzaXRlZExpbmtJRCBrSW52YWxpZFZpc2l0ZWRMCisgdHlwZWRlZiBzdGQ6 Om1hcDxWaXNpdElELCBWaXNpdFNvdXJjZT4gVmlzaXRTb3VyY2VNYXA7CisgCisgLy8gQ29uc3Rh bnQgdXNlZCB0byByZXByZXNlbnQgdGhhdCBubyBhcHBfaWQgaXMgdXNlZCBmb3IgbWF0Y2hpbmcu CistaW5saW5lIGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBrTm9BcHBJZEZp bHRlciA9IHN0ZDo6bnVsbG9wdDsKKytpbmxpbmUgY29uc3Qgc3RkOjpvcHRpb25hbDxzdGQ6OnN0 cmluZz4ga05vQXBwSWRGaWx0ZXIgPSBzdGQ6Om51bGxvcHQ7CisgCisgLy8gVmlzaXRSb3cgLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvc2VydmljZXMvbmV0 d29yay9zaGFyZWRfZGljdGlvbmFyeS9zaW1wbGVfdXJsX3BhdHRlcm5fbWF0Y2hlci5jYy5tZSBj aHJvbWl1bS0xMjQuMC42MzY3LjExOC9zZXJ2aWNlcy9uZXR3b3JrL3NoYXJlZF9kaWN0aW9uYXJ5 L3NpbXBsZV91cmxfcGF0dGVybl9tYXRjaGVyLmNjCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4x MTgvc2VydmljZXMvbmV0d29yay9zaGFyZWRfZGljdGlvbmFyeS9zaW1wbGVfdXJsX3BhdHRlcm5f bWF0Y2hlci5jYy5tZQkyMDI0LTA1LTA3IDAwOjA3OjE1LjcyMDU3Mzc5NCArMDIwMAorKysrIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVkX2RpY3Rpb25hcnkv c2ltcGxlX3VybF9wYXR0ZXJuX21hdGNoZXIuY2MJMjAyNC0wNS0wNyAwMDowODowNy42MzM1MTk2 MDQgKzAyMDAKK0BAIC0yOCwxNyArMjgsMTcgQEAgbmFtZXNwYWNlIG5ldHdvcmsgeworIG5hbWVz cGFjZSB7CisgCisgLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdnLm9yZy8jZGVmYXVs dC1vcHRpb25zCistY29uc3RleHByIGxpYnVybHBhdHRlcm46Ok9wdGlvbnMga0RlZmF1bHRPcHRp b25zID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIiLAorK2NvbnN0IGxpYnVybHBhdHRlcm46Ok9wdGlv bnMga0RlZmF1bHRPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZml4X2xpc3QgPSAi IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg LnNlbnNpdGl2ZSA9IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC5zdHJpY3QgPSB0cnVlfTsKKyAvLyBodHRwczovL3VybHBhdHRlcm4u c3BlYy53aGF0d2cub3JnLyNob3N0bmFtZS1vcHRpb25zCistY29uc3RleHByIGxpYnVybHBhdHRl cm46Ok9wdGlvbnMga0hvc3RuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiLiIsCisr Y29uc3QgbGlidXJscGF0dGVybjo6T3B0aW9ucyBrSG9zdG5hbWVPcHRpb25zID0gey5kZWxpbWl0 ZXJfbGlzdCA9ICIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIC5wcmVmaXhfbGlzdCA9ICIiLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlbnNpdGl2ZSA9IHRydWUsCisgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RyaWN0ID0g dHJ1ZX07CisgLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdnLm9yZy8jcGF0aG5hbWUt b3B0aW9ucworLWNvbnN0ZXhwciBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtQYXRobmFtZU9wdGlv bnMgPSB7LmRlbGltaXRlcl9saXN0ID0gIi8iLAorK2NvbnN0IGxpYnVybHBhdHRlcm46Ok9wdGlv bnMga1BhdGhuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiLyIsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZml4X2xpc3Qg PSAiLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAuc2Vuc2l0aXZlID0gdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIC5zdHJpY3QgPSB0cnVlfTsKK2RpZmYgLXVwIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zvcm1fcGFy c2luZy90cmFuc3BpbGVfcmVnZXhfcGF0dGVybnMucHkubWUxIGNocm9taXVtLTEyNC4wLjYzNjcu MTE4L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zvcm1fcGFyc2luZy90cmFuc3Bp bGVfcmVnZXhfcGF0dGVybnMucHkKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25l bnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3Bh dHRlcm5zLnB5Lm1lMQkyMDI0LTA1LTA3IDEwOjU4OjEzLjMxNjc1NjkyNiArMDIwMAorKysrIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zv cm1fcGFyc2luZy90cmFuc3BpbGVfcmVnZXhfcGF0dGVybnMucHkJMjAyNC0wNS0wNyAxMDo1ODoz MC44MjEwODMwNjEgKzAyMDAKK0BAIC01NCw3ICs1NCw3IEBAIGRlZiBnZW5lcmF0ZV9tYXRjaGlu Z19wYXR0ZXJuX2VxdWFscyhuYW0KKyAgIHlpZWxkICcvLyBDaGVja3MgaWYgYWxsIHRoZSBtYXRj aGluZyBwYXR0ZXJucyBmb3IgdGhlIGdpdmVuIFBhdHRlcm5Tb3VyY2VzJworICAgeWllbGQgJy8v IGFuZCBsYW5ndWFnZSBhcmUgdGhlIHNhbWUgLSBtZWFuaW5nIHRoYXQgY29tcHV0aW5nIHByZWRp Y3Rpb25zIGZvcicKKyAgIHlpZWxkICcvLyBib3RoIGlzIHVubmVjZXNzYXJ5LCBzaW5jZSBpdCB3 aWxsIHlpZWxkIHRoZSBzYW1lIHJlc3VsdC4nCistICB5aWVsZCAnY29uc3RleHByIGJvb2wgQXJl TWF0Y2hpbmdQYXR0ZXJuc0VxdWFsSW1wbChQYXR0ZXJuU291cmNlIGEsJworKyAgeWllbGQgJ2Nv bnN0IGJvb2wgQXJlTWF0Y2hpbmdQYXR0ZXJuc0VxdWFsSW1wbChQYXR0ZXJuU291cmNlIGEsJwor ICAgeWllbGQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0 dGVyblNvdXJjZSBiLCcKKyAgIHlpZWxkICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIExhbmd1YWdlQ29kZSBsYW5nX2NvZGUpIHsnCisgICB5aWVsZCAnICBpZiAo YSA9PSBiKSB7JwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNC1lbDctcG93Zi5wYXRjaCBiL2No cm9taXVtLTEyNC1lbDctcG93Zi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAw MDAwLi43Yjg3NjJiCi0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI0LWVsNy1wb3dmLnBh dGNoCkBAIC0wLDAgKzEsMTggQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3Ro aXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxrYW4vRnJhbWVidWZmZXJW ay5jcHAubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvYW5nbGUvc3JjL2xp YkFOR0xFL3JlbmRlcmVyL3Z1bGthbi9GcmFtZWJ1ZmZlclZrLmNwcAorLS0tIGNocm9taXVtLTEy NC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2FuZ2xlL3NyYy9saWJBTkdMRS9yZW5kZXJlci92dWxr YW4vRnJhbWVidWZmZXJWay5jcHAubWUJMjAyNC0wNS0wNSAxNzoyOTozOC45MDc1NTkyMTAgKzAy MDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9hbmdsZS9zcmMvbGli QU5HTEUvcmVuZGVyZXIvdnVsa2FuL0ZyYW1lYnVmZmVyVmsuY3BwCTIwMjQtMDUtMDUgMTc6NTE6 MjYuNjY1MDgwNzQyICswMjAwCitAQCAtMTcyNiwxMCArMTcyNiwxMCBAQCBhbmdsZTo6UmVzdWx0 IEZyYW1lYnVmZmVyVms6OmdlbmVyYXRlRnJhCisgICAgICAgICAgICAgICAgIGZvciAodWludDMy X3QgcG9pbnQgPSAwOyBwb2ludCA8IGFjdGl2ZUZvY2FsUG9pbnRzLnNpemUoKTsgcG9pbnQrKykK KyAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgZmxvYXQgZGVuc2l0eSA9 CistICAgICAgICAgICAgICAgICAgICAgICAgMS4wZiAvIHN0ZDo6bWF4KHN0ZDo6cG93ZihhY3Rp dmVGb2NhbFBvaW50c1twb2ludF0uZm9jYWxYIC0gcHgsIDIpICoKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6OnBvd2YoYWN0aXZlRm9jYWxQb2lu dHNbcG9pbnRdLmdhaW5YLCAyKSArCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzdGQ6OnBvd2YoYWN0aXZlRm9jYWxQb2ludHNbcG9pbnRdLmZvY2FsWSAtIHB5 LCAyKSAqCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c3RkOjpwb3dmKGFjdGl2ZUZvY2FsUG9pbnRzW3BvaW50XS5nYWluWSwgMikgLQorKyAgICAgICAg ICAgICAgICAgICAgICAgIDEuMGYgLyBzdGQ6Om1heChwb3dmKGFjdGl2ZUZvY2FsUG9pbnRzW3Bv aW50XS5mb2NhbFggLSBweCwgMikgKgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHBvd2YoYWN0aXZlRm9jYWxQb2ludHNbcG9pbnRdLmdhaW5YLCAyKSAr CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwb3dmKGFjdGl2 ZUZvY2FsUG9pbnRzW3BvaW50XS5mb2NhbFkgLSBweSwgMikgKgorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvd2YoYWN0aXZlRm9jYWxQb2ludHNbcG9p bnRdLmdhaW5ZLCAyKSAtCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhY3RpdmVGb2NhbFBvaW50c1twb2ludF0uZm92ZWFBcmVhLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAxLjBmKTsKKyAKCmRpZmYgLS1naXQgYS9jaHJvbWl1 bS0xMjQtZWw3LXNpemVfdC5wYXRjaCBiL2Nocm9taXVtLTEyNC1lbDctc2l6ZV90LnBhdGNoCm5l dyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNjYTg0ZWUKLS0tIC9kZXYvbnVsbAor KysgYi9jaHJvbWl1bS0xMjQtZWw3LXNpemVfdC5wYXRjaApAQCAtMCwwICsxLDE2IEBACitkaWZm IC11cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvdHJh Y2luZy9jb3JlL2lkX2FsbG9jYXRvci5oLm1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJk X3BhcnR5L3BlcmZldHRvL3NyYy90cmFjaW5nL2NvcmUvaWRfYWxsb2NhdG9yLmgKKy0tLSBjaHJv bWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9wZXJmZXR0by9zcmMvdHJhY2luZy9jb3Jl L2lkX2FsbG9jYXRvci5oLm1lCTIwMjQtMDUtMDYgMDg6MzI6MDkuNjM3MjEwOTU4ICswMjAwCisr KysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvcGVyZmV0dG8vc3JjL3RyYWNp bmcvY29yZS9pZF9hbGxvY2F0b3IuaAkyMDI0LTA1LTA2IDA4OjMyOjI2LjQ4NTUxODQ0OCArMDIw MAorQEAgLTYzLDEwICs2MywxMCBAQCBjbGFzcyBJZEFsbG9jYXRvciA6IHB1YmxpYyBJZEFsbG9j YXRvckdlCisgCisgICAvLyBUcmllcyB0byBhbGxvY2F0ZSBgbmAgSURzLiBSZXR1cm5zIGEgdmVj dG9yIG9mIGBuYCB2YWxpZCBJRHMgb3IgYW4gZW1wdHkKKyAgIC8vIHZlY3RvciwgaWYgbm90IGVu b3VnaCBJRHMgYXJlIGF2YWlsYWJsZS4KKy0gIHN0ZDo6dmVjdG9yPFQ+IEFsbG9jYXRlTXVsdGlw bGUoc2l6ZV90IG4pIHsKKysgIHN0ZDo6dmVjdG9yPFQ+IEFsbG9jYXRlTXVsdGlwbGUoc3RkOjpz aXplX3QgbikgeworICAgICBzdGQ6OnZlY3RvcjxUPiByZXM7CisgICAgIHJlcy5yZXNlcnZlKG4p OworLSAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IG47IGkrKykgeworKyAgICBmb3IgKHN0ZDo6 c2l6ZV90IGkgPSAwOyBpIDwgbjsgaSsrKSB7CisgICAgICAgVCBpZCA9IEFsbG9jYXRlKCk7Cisg ICAgICAgaWYgKGlkKSB7CisgICAgICAgICByZXMucHVzaF9iYWNrKGlkKTsKCmRpZmYgLS1naXQg YS9jaHJvbWl1bS0xMjQtbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2ggYi9jaHJvbWl1bS0x MjQtbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5k ZXggMDAwMDAwMC4uMGM2MDg1OAotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyNC1ub19t YXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRjaApAQCAtMCwwICsxLDEzOTIgQEAKK2RpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFtX2Fs bG9jYXRvci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9tZXRyaWNzL3BlcnNp c3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRvci5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv YmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRvci5jYy50aGFuCTIwMjQt MDItMjIgMjI6NDI6NDMuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9iYXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjCTIwMjQtMDIt MjQgMTM6MTM6MzIuNDg0NTAzNzM1ICswMTAwCitAQCAtMjE4LDEzICsyMTgsMTMgQEAgUGVyc2lz dGVudFNwYXJzZUhpc3RvZ3JhbURhdGFNYW5hZ2VyOjpMbworICAgICAvLyBUaGUgc2FtcGxlLXJl Y29yZCBjb3VsZCBiZSBmb3IgYW55IHNwYXJzZSBoaXN0b2dyYW0uIEFkZCB0aGUgcmVmZXJlbmNl CisgICAgIC8vIHRvIHRoZSBhcHByb3ByaWF0ZSBjb2xsZWN0aW9uIGZvciBsYXRlciB1c2UuCisg ICAgIGlmIChmb3VuZF9pZCA9PSBtYXRjaF9pZCkgeworLSAgICAgIGZvdW5kX3JlY29yZHMuZW1w bGFjZV9iYWNrKHJlZiwgdmFsdWUpOworKyAgICAgIGZvdW5kX3JlY29yZHMuZW1wbGFjZV9iYWNr KCkgPSB7cmVmLCB2YWx1ZX07CisgICAgICAgZm91bmQgPSB0cnVlOworICAgICB9IGVsc2Ugewor ICAgICAgIHN0ZDo6dmVjdG9yPFJlZmVyZW5jZUFuZFNhbXBsZT4qIHNhbXBsZXMgPQorICAgICAg ICAgICBHZXRTYW1wbGVNYXBSZWNvcmRzV2hpbGVMb2NrZWQoZm91bmRfaWQpOworICAgICAgIENI RUNLKHNhbXBsZXMpOworLSAgICAgIHNhbXBsZXMtPmVtcGxhY2VfYmFjayhyZWYsIHZhbHVlKTsK KysgICAgICBzYW1wbGVzLT5lbXBsYWNlX2JhY2soKSA9IHtyZWYsIHZhbHVlfTsKKyAgICAgfQor ICAgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0 aWxfeGRnLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0aWxf eGRnLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL25peC9taW1lX3V0aWxfeGRn LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcuY2MJMjAyNC0wMi0yNCAxMzox Mzo0NC4xNTg3MTI3NTYgKzAxMDAKK0BAIC01Niw3ICs1Niw3IEBAIHZvaWQgTG9hZEFsbE1pbWVD YWNoZUZpbGVzKE1pbWVUeXBlTWFwJgorICAgZm9yIChjb25zdCBhdXRvJiBwYXRoIDogR2V0WERH RGF0YVNlYXJjaExvY2F0aW9ucyhlbnYuZ2V0KCkpKSB7CisgICAgIEZpbGVQYXRoIG1pbWVfY2Fj aGUgPSBwYXRoLkFwcGVuZCgibWltZS9taW1lLmNhY2hlIik7CisgICAgIGlmIChHZXRGaWxlSW5m byhtaW1lX2NhY2hlLCAmaW5mbykgJiYgUGFyc2VNaW1lVHlwZXMobWltZV9jYWNoZSwgbWFwKSkg eworLSAgICAgIGZpbGVzLmVtcGxhY2VfYmFjayhtaW1lX2NhY2hlLCBpbmZvLmxhc3RfbW9kaWZp ZWQpOworKyAgICAgIGZpbGVzLmVtcGxhY2VfYmFjaygpID0ge21pbWVfY2FjaGUsIGluZm8ubGFz dF9tb2RpZmllZH07CisgICAgIH0KKyAgIH0KKyB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAu NjI2MS42OS9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYworLS0tIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MudGhhbgkyMDI0LTAyLTIyIDIy OjQyOjQzLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90 cmFjZV9ldmVudC90cmFjZV9sb2cuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODQ1MDM3MzUgKzAx MDAKK0BAIC0yMTk4LDggKzIxOTgsOCBAQCB2b2lkIFRyYWNlTG9nOjpTZXRUcmFjZUJ1ZmZlckZv clRlc3RpbmcoCisgI2lmIEJVSUxERkxBRyhVU0VfUEVSRkVUVE9fQ0xJRU5UX0xJQlJBUlkpCisg dm9pZCBUcmFjZUxvZzo6T25TZXR1cChjb25zdCBwZXJmZXR0bzo6RGF0YVNvdXJjZUJhc2U6OlNl dHVwQXJncyYgYXJncykgeworICAgQXV0b0xvY2sgbG9jayh0cmFja19ldmVudF9sb2NrXyk7Cist ICB0cmFja19ldmVudF9zZXNzaW9uc18uZW1wbGFjZV9iYWNrKGFyZ3MuaW50ZXJuYWxfaW5zdGFu Y2VfaW5kZXgsICphcmdzLmNvbmZpZywKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgYXJncy5iYWNrZW5kX3R5cGUpOworKyAgdHJhY2tfZXZlbnRfc2Vzc2lvbnNfLmVtcGxh Y2VfYmFjaygpID0ge2FyZ3MuaW50ZXJuYWxfaW5zdGFuY2VfaW5kZXgsICphcmdzLmNvbmZpZywK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5iYWNrZW5kX3R5cGV9 OworIH0KKyAKKyB2b2lkIFRyYWNlTG9nOjpPblN0YXJ0KGNvbnN0IHBlcmZldHRvOjpEYXRhU291 cmNlQmFzZTo6U3RhcnRBcmdzJikgeworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlk ZXIuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2NvbnRlbnRf c2V0dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYworLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5ncy9vbmVfdGltZV9wZXJt aXNzaW9uX3Byb3ZpZGVyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1MC4wMDAwMDAwMDAgKzAx MDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2NvbnRlbnRfc2V0 dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYwkyMDI0LTAyLTI0IDEzOjEzOjMy LjQ4NTUwMzc1MiArMDEwMAorQEAgLTI1Miw4ICsyNTIsOCBAQCB2b2lkIE9uZVRpbWVQZXJtaXNz aW9uUHJvdmlkZXI6Ok9uU3VzcGVuCisgCisgICAgICAgd2hpbGUgKHJ1bGVfaXRlcmF0b3IgJiYg cnVsZV9pdGVyYXRvci0+SGFzTmV4dCgpKSB7CisgICAgICAgICBhdXRvIHJ1bGUgPSBydWxlX2l0 ZXJhdG9yLT5OZXh0KCk7CistICAgICAgICBwYXR0ZXJuc190b19kZWxldGUuZW1wbGFjZV9iYWNr KHNldHRpbmdfdHlwZSwgcnVsZS0+cHJpbWFyeV9wYXR0ZXJuLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybik7CisrICAgICAg ICBwYXR0ZXJuc190b19kZWxldGUuZW1wbGFjZV9iYWNrKCkgPSB7c2V0dGluZ190eXBlLCBydWxl LT5wcmltYXJ5X3BhdHRlcm4sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJufTsKKyAgICAgICAgIHBlcm1pc3Npb25zOjpQZXJt aXNzaW9uVW1hVXRpbDo6UmVjb3JkT25lVGltZVBlcm1pc3Npb25FdmVudCgKKyAgICAgICAgICAg ICBzZXR0aW5nX3R5cGUsCisgICAgICAgICAgICAgcGVybWlzc2lvbnM6Ok9uZVRpbWVQZXJtaXNz aW9uRXZlbnQ6OkVYUElSRURfT05fU1VTUEVORCk7CitAQCAtMzU1LDggKzM1NSw4IEBAIHZvaWQg T25lVGltZVBlcm1pc3Npb25Qcm92aWRlcjo6RGVsZXRlRW4KKyAgICAgYXV0byBydWxlID0gcnVs ZV9pdGVyYXRvci0+TmV4dCgpOworICAgICBpZiAocnVsZS0+cHJpbWFyeV9wYXR0ZXJuLk1hdGNo ZXMob3JpZ2luX2d1cmwpICYmCisgICAgICAgICBydWxlLT5zZWNvbmRhcnlfcGF0dGVybi5NYXRj aGVzKG9yaWdpbl9ndXJsKSkgeworLSAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2Jh Y2soCistICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRl cm4sIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuKTsKKysgICAgICBwYXR0ZXJuc190b19kZWxldGUu ZW1wbGFjZV9iYWNrKCkgPSB7CisrICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCBydWxl LT5wcmltYXJ5X3BhdHRlcm4sIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJufTsKKyAgICAgICBwZXJt aXNzaW9uczo6UGVybWlzc2lvblVtYVV0aWw6OlJlY29yZE9uZVRpbWVQZXJtaXNzaW9uRXZlbnQo CisgICAgICAgICAgIGNvbnRlbnRfc2V0dGluZ190eXBlLCB0cmlnZ2VyX2V2ZW50KTsKKyAgICAg fQorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9lbnRlcnBy aXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJv dHRsZS5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZW50ZXJw cmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhy b3R0bGUuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2VudGVy cHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Ro cm90dGxlLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1MC4wMDAwMDAwMDAgKzAxMDAKKysrKyBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9t YW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxlLmNjCTIwMjQt MDItMjQgMTM6MTM6MzIuNDg1NTAzNzUyICswMTAwCitAQCAtNjcsOCArNjcsOCBAQCBiYXNlOjpm bGF0X21hcDxzdGQ6OnN0cmluZywgU0FNTFByb2ZpbGVBCisgICAvLyBUT0RPKGNyYnVnLmNvbS8x NDQ1MDcyKTogQWRkIGFjdHVhbCBkb21haW5zIHdpdGggYXR0cmlidXRlIG5hbWVzLgorICAgcHJv ZmlsZV9hdHRyaWJ1dGVzLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCisgICAgICAgInN1cHBvcnRl ZC50ZXN0IiwKKy0gICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXMoInBsYWNlaG9sZGVyTmFtZSIs ICJwbGFjZWhvbGRlckRvbWFpbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICJwbGFj ZWhvbGRlclRva2VuIikpKTsKKysgICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXN7InBsYWNlaG9s ZGVyTmFtZSIsICJwbGFjZWhvbGRlckRvbWFpbiIsCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgICJwbGFjZWhvbGRlclRva2VuIn0pKTsKKyAKKyAgIC8vIEV4dHJhY3QgZG9tYWlucyBhbmQg YXR0cmlidXRlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUgc3dpdGNoLgorICAgY29uc3QgYmFzZTo6 Q29tbWFuZExpbmUmIGNvbW1hbmRfbGluZSA9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X2Fza192aWV3LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv YnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9h c2tfdmlldy5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mu dGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODY1MDM3 NzAgKzAxMDAKK0BAIC02MCwxMiArNjAsMTIgQEAgc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNz aW9uUHJvbXB0QXNrVgorIEVtYmVkZGVkUGVybWlzc2lvblByb21wdEFza1ZpZXc6OkdldEJ1dHRv bnNDb25maWd1cmF0aW9uKCkgY29uc3QgeworICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJh dGlvbj4gYnV0dG9uczsKKyAgIGlmIChiYXNlOjpGZWF0dXJlTGlzdDo6SXNFbmFibGVkKHBlcm1p c3Npb25zOjpmZWF0dXJlczo6a09uZVRpbWVQZXJtaXNzaW9uKSkgeworLSAgICBidXR0b25zLmVt cGxhY2VfYmFjaygKKysgICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAgIGwx MG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1dfVEhJU19USU1FKSwK Ky0gICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCk7CisrICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0 eWxlOjprVG9uYWx9OworICAgfQorLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGlsOjpH ZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCistICAgICAgICAgICAgICAgICAg ICAgICBCdXR0b25UeXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dJ ZCk7CisrICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRG MTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAorKyAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9u VHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga0FsbG93SWR9OworICAgcmV0 dXJuIGJ1dHRvbnM7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21w dF9iYXNlX3ZpZXcuaC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3 LmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Bl cm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oLnRoYW4JMjAy NC0wMi0yMiAyMjo0Mjo1NS4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X2Jhc2Vfdmlldy5oCTIwMjQtMDItMjQgMTM6MTM6MzIuNDg2NTAzNzcwICswMTAw CitAQCAtODcsNiArODcsNyBAQCBjbGFzcyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRCYXNlVmll dyA6CisgICBzdHJ1Y3QgUmVxdWVzdExpbmVDb25maWd1cmF0aW9uIHsKKyAgICAgY29uc3QgcmF3 X3B0cjxjb25zdCBnZng6OlZlY3Rvckljb24+IGljb247CisgICAgIHN0ZDo6dTE2c3RyaW5nIG1l c3NhZ2U7CisrICAgIFJlcXVlc3RMaW5lQ29uZmlndXJhdGlvbihhdXRvIGksIGF1dG8gbSkgOiBp Y29uKGkpLCBtZXNzYWdlKG0pIHsgfQorICAgfTsKKyAKKyAgIHN0cnVjdCBCdXR0b25Db25maWd1 cmF0aW9uIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3Zp ZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdz L3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3BvbGljeV92aWV3LmNjCist LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNz aW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmlldy5jYy50aGFuCTIwMjQt MDItMjIgMjI6NDI6NTUuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9u X3Byb21wdF9wb2xpY3lfdmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NjUwMzc3MCArMDEw MAorQEAgLTY0LDggKzY0LDggQEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6 R2V0UgorIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21wdFBvbGljeVZpZXc6OkJ1 dHRvbkNvbmZpZ3VyYXRpb24+CisgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6 R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7CisgICBzdGQ6OnZlY3RvcjxCdXR0b25D b25maWd1cmF0aW9uPiBidXR0b25zOworLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGls OjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBUX09LX0xBQkVMKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtQb2xpY3lPSywgdWk6OkJ1dHRvblN0eWxlOjpr VG9uYWwpOworKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmlu Z1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfT0tfTEFCRUwpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgQnV0dG9uVHlwZTo6a1BvbGljeU9LLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07Cisg ICByZXR1cm4gYnV0dG9uczsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25f cHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1p c3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVkX3ZpZXcuY2MudGhhbgkyMDI0LTAyLTIyIDIy OjQyOjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRf cHJldmlvdXNseV9kZW5pZWRfdmlldy5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyAr MDEwMAorQEAgLTc5LDE3ICs3OSwxNyBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91 c2x5RGVuaWVkCisgc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNs eURlbmllZFZpZXc6OkJ1dHRvbkNvbmZpZ3VyYXRpb24+CisgRW1iZWRkZWRQZXJtaXNzaW9uUHJv bXB0UHJldmlvdXNseURlbmllZFZpZXc6OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3Qg eworICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlvbj4gYnV0dG9uczsKKy0gIGJ1dHRv bnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBs MTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfTk9U X0FMTE9XSU5HKSwKKy0gICAgICBCdXR0b25UeXBlOjprQ29udGludWVOb3RBbGxvd2luZywgdWk6 OkJ1dHRvblN0eWxlOjprVG9uYWwpOworKyAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZU5vdEFs bG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07CisgCisgICBpZiAoYmFzZTo6RmVhdHVy ZUxpc3Q6OklzRW5hYmxlZChwZXJtaXNzaW9uczo6ZmVhdHVyZXM6OmtPbmVUaW1lUGVybWlzc2lv bikpIHsKKy0gICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCisrICAgIGJ1dHRvbnMuZW1wbGFjZV9i YWNrKCkgPSB7CisgICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNT SU9OX0FMTE9XX1RISVNfVElNRSksCistICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGlt ZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd1RoaXNUaW1lSWQpOworKyAgICAgICAg QnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxs b3dUaGlzVGltZUlkfTsKKyAgIH0gZWxzZSB7CistICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKGwx MG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAorLSAgICAgICAg ICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1Rv bmFsKTsKKysgICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmlu Z1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAg QnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07CisgICB9CisgICBy ZXR1cm4gYnV0dG9uczsKKyB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0 X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3By b21wdF9wcmV2aW91c2x5X2dyYW50ZWRfdmlldy5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lv bl9wcm9tcHRfcHJldmlvdXNseV9ncmFudGVkX3ZpZXcuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQy OjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJl dmlvdXNseV9ncmFudGVkX3ZpZXcuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTM3MTI2NjcgKzAx MDAKK0BAIC03NCwxMiArNzQsMTIgQEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNs eUdyYW50ZQorIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlH cmFudGVkVmlldzo6QnV0dG9uQ29uZmlndXJhdGlvbj4KKyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9t cHRQcmV2aW91c2x5R3JhbnRlZFZpZXc6OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3Qg eworICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlvbj4gYnV0dG9uczsKKy0gIGJ1dHRv bnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBs MTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfQUxM T1dJTkcpLAorLSAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZUFsbG93aW5nLCB1aTo6QnV0dG9u U3R5bGU6OmtUb25hbCk7CisrICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVp OjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKKyAKKy0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAorKyAg YnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VU RjE2KElEU19FTUJFRERFRF9QUk9NUFRfU1RPUF9BTExPV0lORyksCistICAgICAgQnV0dG9uVHlw ZTo6a1N0b3BBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtTdG9wQWxsb3dpbmdJ ZCk7CisrICAgICAgQnV0dG9uVHlwZTo6a1N0b3BBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjpr VG9uYWwsIGtTdG9wQWxsb3dpbmdJZH07CisgICByZXR1cm4gYnV0dG9uczsKKyB9CitkaWZmIC11 cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmls aXRpZXMuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90ZXN0L2Nocm9tZWRy aXZlci9jYXBhYmlsaXRpZXMuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90 ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU2 LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL3Rlc3Qv Y2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NjUwMzc3 MCArMDEwMAorQEAgLTM0Niw3ICszNDYsNyBAQCBTdGF0dXMgUGFyc2VNb2JpbGVFbXVsYXRpb24o Y29uc3QgYmFzZTo6CisgICAgICAgICAgICAgICAgICAgICAgICAgIid2ZXJzaW9uJyBmaWVsZCBv ZiB0eXBlIHN0cmluZyIpOworICAgICAgICAgfQorIAorLSAgICAgICAgYnJhbmRzLmVtcGxhY2Vf YmFjaygqYnJhbmQsICp2ZXJzaW9uKTsKKysgICAgICAgIGJyYW5kcy5lbXBsYWNlX2JhY2soKSA9 IHsqYnJhbmQsICp2ZXJzaW9ufTsKKyAgICAgICB9CisgCisgICAgICAgY2xpZW50X2hpbnRzLmJy YW5kcyA9IHN0ZDo6bW92ZShicmFuZHMpOworQEAgLTM4NCw3ICszODQsNyBAQCBTdGF0dXMgUGFy c2VNb2JpbGVFbXVsYXRpb24oY29uc3QgYmFzZTo6CisgICAgICAgICAgICAgICAgICAgICAgICAg ImEgJ3ZlcnNpb24nIGZpZWxkIG9mIHR5cGUgc3RyaW5nIik7CisgICAgICAgICB9CisgCistICAg ICAgICBmdWxsX3ZlcnNpb25fbGlzdC5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVyc2lvbik7Cisr ICAgICAgICBmdWxsX3ZlcnNpb25fbGlzdC5lbXBsYWNlX2JhY2soKSA9IHsqYnJhbmQsICp2ZXJz aW9ufTsKKyAgICAgICB9CisgCisgICAgICAgY2xpZW50X2hpbnRzLmZ1bGxfdmVyc2lvbl9saXN0 ID0gc3RkOjptb3ZlKGZ1bGxfdmVyc2lvbl9saXN0KTsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29y ZF9tYW5hZ2VyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bhc3N3 b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MKKy0tLSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIv cGFzc3dvcmRfbWFuYWdlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDIuMDAwMDAwMDAwICsw MTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFn ZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4x NTQ3MTI2ODUgKzAxMDAKK0BAIC02NzMsNyArNjczLDcgQEAgdm9pZCBQYXNzd29yZE1hbmFnZXI6 Ok9uVXNlck1vZGlmaWVkTm9uUAorICAgICBpdC0+c2Vjb25kLmxhc3RfY2hhbmdlID0gYmFzZTo6 VGltZTo6Tm93KCk7CisgICB9IGVsc2UgeworICAgICBwb3NzaWJsZV91c2VybmFtZXNfLlB1dCgK Ky0gICAgICAgIFBvc3NpYmxlVXNlcm5hbWVGaWVsZElkZW50aWZpZXIoZHJpdmVyX2lkLCByZW5k ZXJlcl9pZCksCisrICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlmaWVye2RyaXZl cl9pZCwgcmVuZGVyZXJfaWR9LAorICAgICAgICAgUG9zc2libGVVc2VybmFtZURhdGEoR2V0U2ln bm9uUmVhbG0oZHJpdmVyLT5HZXRMYXN0Q29tbWl0dGVkVVJMKCkpLAorICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgcmVuZGVyZXJfaWQsIHZhbHVlLCBiYXNlOjpUaW1lOjpOb3coKSwgZHJp dmVyX2lkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlX2F0dHJp YnV0ZV9oYXNfdXNlcm5hbWUsCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBv bmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYy50aGFuIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRj aGVyLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3BlcmZvcm1hbmNl X21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjAyLjAwMDAw MDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wZXJmb3Jt YW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTU4NzEy NzU2ICswMTAwCitAQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Xb3Jr ZXJDcmVhdGVkKAorICAgRENIRUNLKGluc2VydGlvbl9yZXN1bHQuc2Vjb25kKTsKKyAKKyAgIGFi c2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgYmFzZTo6T3Zlcmxv YWRlZHsKKyAgICAgICAgICAgWyYsCisgICAgICAgICAgICB0aGlzXShjb25zdCBjb250ZW50OjpH bG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAgICAg ICAgICBBZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oaW5zZXJ0aW9uX3Jlc3VsdC5maXJzdC0+c2Vj b25kLmdldCgpLAorQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uV29y a2VyQ3JlYXRlZCgKKyAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0ZWRXb3JrZXJU b2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7CisgICAgICAgICAgICAgQ29ubmVjdERlZGlj YXRlZFdvcmtlckNsaWVudChpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCksCisg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2Vy X3Rva2VuKTsKKy0gICAgICAgICAgfSksCisrICAgICAgICAgIH19LAorICAgICAgIGNyZWF0b3Ip OworIH0KKyAKK0BAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkJlZm9y ZVdvcmtlckRlc3RybworICAgLy8gRmlyc3QgZGlzY29ubmVjdCB0aGUgY3JlYXRvcidzIG5vZGUg ZnJvbSB0aGlzIHdvcmtlciBub2RlLgorIAorICAgYWJzbDo6dmlzaXQoCistICAgICAgYmFzZTo6 T3ZlcmxvYWRlZCgKKysgICAgICBiYXNlOjpPdmVybG9hZGVkeworICAgICAgICAgICBbJiwKKyAg ICAgICAgICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiBy ZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50Q29u bmVjdGlvbih3b3JrZXJfbm9kZS5nZXQoKSwKK0BAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBXb3Jr ZXJXYXRjaGVyOjpPbkJlZm9yZVdvcmtlckRlc3RybworICAgICAgICAgICBbJiwgdGhpc10oYmxp bms6OkRlZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAg ICAgICAgICBEaXNjb25uZWN0RGVkaWNhdGVkV29ya2VyQ2xpZW50KHdvcmtlcl9ub2RlLmdldCgp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVk X3dvcmtlcl90b2tlbik7CistICAgICAgICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAgICBj cmVhdG9yKTsKKyAKKyAgIC8vIERpc2Nvbm5lY3QgYWxsIGNoaWxkIHdvcmtlcnMgYmVmb3JlIGRl c3Ryb3lpbmcgdGhlIG5vZGUuCitAQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgV29ya2VyV2F0Y2hl cjo6T25Db250cm9sbGVlQWRkZWQoCisgICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjbGllbnRfdXVp ZCwKKyAgICAgY29uc3QgY29udGVudDo6U2VydmljZVdvcmtlckNsaWVudEluZm8mIGNsaWVudF9p bmZvKSB7CisgICBhYnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAgICAg IGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9iYWxS ZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIC8v IEZvciB3aW5kb3cgY2xpZW50cywgaXQgaXMgbmVjZXNzYXJ5IHRvIHdhaXQgdW50aWwgdGhlIG5h dmlnYXRpb24KKyAgICAgICAgICAgICAvLyBoYXMgY29tbWl0dGVkIHRvIGEgUmVuZGVyRnJhbWVI b3N0LgorQEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxl ZUFkZGVkKAorICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNsaWVudChzZXJ2aWNl X3dvcmtlcl9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBz aGFyZWRfd29ya2VyX3Rva2VuKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgIH0pLAorKyAg ICAgICAgICB9fSwKKyAgICAgICBjbGllbnRfaW5mbyk7CisgfQorIAorQEAgLTUyNCw3ICs1MjQs NyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCisgICAgIHJldHVy bjsKKyAKKyAgIGFic2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAg YmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2JhbFJl bmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAgICAgICAgUmVt b3ZlRnJhbWVDbGllbnRDb25uZWN0aW9uKHdvcmtlcl9ub2RlLCByZW5kZXJfZnJhbWVfaG9zdF9p ZCk7CisgICAgICAgICAgIH0sCitAQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hl cjo6T25Db250cm9sbGVlUmVtb3ZlZCgKKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgWyYsIHRo aXNdKGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7CisgICAg ICAgICAgICAgRGlzY29ubmVjdFNoYXJlZFdvcmtlckNsaWVudCh3b3JrZXJfbm9kZSwgc2hhcmVk X3dvcmtlcl90b2tlbik7CistICAgICAgICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAgICBj bGllbnQpOworIH0KKyAKK0BAIC04MTAsNyArODEwLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpD b25uZWN0QWxsU2VydmljZVdvcgorIAorICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0LT5zZWNv bmQpIHsKKyAgICAgYWJzbDo6dmlzaXQoCistICAgICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAg ICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgICBbJiwgdGhpc10oY29udGVudDo6 R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAgICAg ICAgICAgIEFkZEZyYW1lQ2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9ub2RlLAorICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9mcmFtZV9ob3N0X2lk KTsKK0BAIC04MjIsNyArODIyLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25uZWN0QWxsU2Vy dmljZVdvcgorICAgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4g c2hhcmVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtl ckNsaWVudChzZXJ2aWNlX3dvcmtlcl9ub2RlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKKy0gICAgICAgICAgICB9KSwKKysg ICAgICAgICAgICB9fSwKKyAgICAgICAgIGt2LnNlY29uZCk7CisgICB9CisgfQorQEAgLTgzNyw3 ICs4MzcsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2aWNlCisgCisg ICBmb3IgKGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29uZCkgeworICAgICBhYnNsOjp2aXNpdCgK Ky0gICAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgICBiYXNlOjpPdmVybG9hZGVkewor ICAgICAgICAgICAgIFsmLCB0aGlzXSgKKyAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudDo6 R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAg ICAgICAgICBSZW1vdmVGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3JrZXJfbm9kZSwK K0BAIC04NTEsNyArODUxLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25uZWN0QWxsU2Vy dmljZQorICAgICAgICAgICAgIFsmLCB0aGlzXShjb25zdCBibGluazo6U2hhcmVkV29ya2VyVG9r ZW4mIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAgICAgICAgICAgIERpc2Nvbm5lY3RTaGFy ZWRXb3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7CistICAgICAgICAg ICAgfSksCisrICAgICAgICAgICAgfX0sCisgICAgICAgICBrdi5zZWNvbmQpOworICAgfQorIH0K K2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92aXovc2VydmljZS9k aXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2MudGhhbiBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9lbWJl ZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjCistLS0gY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9v dXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAw MDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9z ZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5j YwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MTcxMjYzMiArMDEwMAorQEAgLTE1NzMsNyArMTU3Myw3 IEBAIHZvaWQgU2tpYU91dHB1dFN1cmZhY2VJbXBsT25HcHU6OkNvcHlPdXQKKyAKKyAgICAgICAv LyBJc3N1ZSByZWFkYmFja3MgZnJvbSB0aGUgc3VyZmFjZXM6CisgICAgICAgZm9yIChzaXplX3Qg aSA9IDA7IGkgPCBDb3B5T3V0cHV0UmVzdWx0OjprTlYxMk1heFBsYW5lczsgKytpKSB7CistICAg ICAgICBTa0lTaXplIHNpemUocGxhbmVfc3VyZmFjZXNbaV0tPndpZHRoKCksIHBsYW5lX3N1cmZh Y2VzW2ldLT5oZWlnaHQoKSk7CisrICAgICAgICBTa0lTaXplIHNpemV7cGxhbmVfc3VyZmFjZXNb aV0tPndpZHRoKCksIHBsYW5lX3N1cmZhY2VzW2ldLT5oZWlnaHQoKX07CisgICAgICAgICBTa0lt YWdlSW5mbyBkc3RfaW5mbyA9IFNrSW1hZ2VJbmZvOjpNYWtlKAorICAgICAgICAgICAgIHNpemUs IChpID09IDApID8ga0FscGhhXzhfU2tDb2xvclR5cGUgOiBrUjhHOF91bm9ybV9Ta0NvbG9yVHlw ZSwKKyAgICAgICAgICAgICBrVW5wcmVtdWxfU2tBbHBoYVR5cGUpOworZGlmZiAtdXAgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNj LnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2 ZV9wYWNrYWdlLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv ZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNS4wMDAwMDAw MDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9kb3du bG9hZC9zYXZlX3BhY2thZ2UuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTE3MTI2MzIgKzAxMDAK K0BAIC04MDEsOCArODAxLDggQEAgdm9pZCBTYXZlUGFja2FnZTo6RmluaXNoKCkgeworICAgaWYg KGRvd25sb2FkXykgeworICAgICBzdGQ6OnZlY3Rvcjxkb3dubG9hZDo6RG93bmxvYWRTYXZlSXRl bURhdGE6Okl0ZW1JbmZvPiBmaWxlczsKKyAgICAgZm9yIChhdXRvJiBpdGVtIDogc2F2ZWRfc3Vj Y2Vzc19pdGVtc18pIHsKKy0gICAgICBmaWxlcy5lbXBsYWNlX2JhY2soaXRlbS5zZWNvbmQtPmZ1 bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJsKCksCistICAgICAgICAgICAgICAgICAgICAgICAg IGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVybCk7CisrICAgICAgZmlsZXMuZW1wbGFjZV9iYWNr KCkgPSB7aXRlbS5zZWNvbmQtPmZ1bGxfcGF0aCgpLCBpdGVtLnNlY29uZC0+dXJsKCksCisrICAg ICAgICAgICAgICAgICAgICAgICAgIGl0ZW0uc2Vjb25kLT5yZWZlcnJlcigpLnVybH07CisgICAg IH0KKyAgICAgZG93bmxvYWQ6OkRvd25sb2FkU2F2ZUl0ZW1EYXRhOjpBdHRhY2hJdGVtRGF0YShk b3dubG9hZF8sIHN0ZDo6bW92ZShmaWxlcykpOworICAgfQorZGlmZiAtdXAgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9z ZXRfcGFyc2VyLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv Zmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRfcGFyc2VyLmNjCistLS0gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0 eV9zZXRfcGFyc2VyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowNS4wMDAwMDAwMDAgKzAxMDAK KysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9z ZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTg3MTI3 NTYgKzAxMDAKK0BAIC03NzMsNyArNzczLDcgQEAgRmlyc3RQYXJ0eVNldFBhcnNlcjo6UGFyc2VT ZXRzRnJvbUVudGVycAorICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQuR2V0UG9saWN5U2V0 c0Zyb21MaXN0KAorICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3kuRmluZExpc3Qoa0Zp cnN0UGFydHlTZXRQb2xpY3lBZGRpdGlvbnNGaWVsZCksCisgICAgICAgICAgICAgICAgICAgICAg ICAgIFBvbGljeVNldFR5cGU6OmtBZGRpdGlvbikpOworLSAgICByZXR1cm4gUGFyc2VkUG9saWN5 U2V0TGlzdHMoc3RkOjptb3ZlKHJlcGxhY2VtZW50cyksIHN0ZDo6bW92ZShhZGRpdGlvbnMpKTsK KysgICAgcmV0dXJuIFBhcnNlZFBvbGljeVNldExpc3Rze3N0ZDo6bW92ZShyZXBsYWNlbWVudHMp LCBzdGQ6Om1vdmUoYWRkaXRpb25zKX07CisgICB9KCk7CisgCisgICBjb250ZXh0LlBvc3RQcm9j ZXNzU2V0TGlzdHMoc2V0X2xpc3RzKTsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJf c2lnbmFscy5oLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50 ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgKKy0tLSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJf ZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuaC50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAw MDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv aW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgJMjAyNC0w Mi0yNCAxMzoxMzo0NC4xNTg3MTI3NTYgKzAxMDAKK0BAIC0xMzMsNiArMTMzLDcgQEAgY2xhc3Mg Q09OVEVOVF9FWFBPUlQgSGVhZGVyRGlyZWN0RnJvbVNlbAorIAorICAgICAvLyBUaGUgQWQtQXVj dGlvbi1TaWduYWxzIHJlc3BvbnNlIHNlcnZlZCBieSBgb3JpZ2luYC4KKyAgICAgc3RkOjpzdHJp bmcgcmVzcG9uc2VfanNvbjsKKysgICAgVW5wcm9jZXNzZWRSZXNwb25zZShhdXRvIHUsIGF1dG8g cykgOiBvcmlnaW4odSksIHJlc3BvbnNlX2pzb24ocykgeyB9CisgICB9OworIAorICAgLy8gSW5m b3JtYXRpb24gZnJvbSBQYXJzZUFuZEZpbmQoKSBjYWxscyB1c2VkIGJ5IFBhcnNlQW5kRmluZENv bXBsZXRlZC4KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MudGhhbiBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91 cF9zdG9yYWdlLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv aW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYy50aGFuCTIwMjQtMDItMjIg MjI6NDM6MDUuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYwkyMDI0 LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAorQEAgLTM0NjEsMTAgKzM0NjEsMTAgQEAg RG9HZXRLQW5vbnltaXR5RGF0YShzcWw6OkRhdGFiYXNlJiBkYiwKKyAKKyAgIHN0ZDo6dmVjdG9y PFN0b3JhZ2VJbnRlcmVzdEdyb3VwOjpLQW5vbnltaXR5RGF0YT4ga19hbm9uX2RhdGE7CisgICB3 aGlsZSAoaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3RlcCgpKSB7CistICAgIGtfYW5vbl9k YXRhLmVtcGxhY2VfYmFjaygKKysgICAga19hbm9uX2RhdGEuZW1wbGFjZV9iYWNrKCkgPSB7Cisg ICAgICAgICAvKmtleT0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblN0cmluZygw KSwKKyAgICAgICAgIC8qaXNfa19hbm9ueW1vdXM9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVy eS5Db2x1bW5Cb29sKDEpLAorLSAgICAgICAgLypsYXN0X3VwZGF0ZWQ9Ki9pbnRlcmVzdF9ncm91 cF9rYW5vbl9xdWVyeS5Db2x1bW5UaW1lKDIpKTsKKysgICAgICAgIC8qbGFzdF91cGRhdGVkPSov aW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuQ29sdW1uVGltZSgyKX07CisgICB9CisgICBpZiAo IWludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LlN1Y2NlZWRlZCgpKSB7CisgICAgIHJldHVybiBz dGQ6Om51bGxvcHQ7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJv d3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhhbiBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFt ZV9ob3N0X2ltcGwuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nl ci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhhbgkyMDI0LTAyLTI0 IDEzOjEzOjQ0LjE1NzcxMjczOSArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYwkyMDI0 LTAyLTI0IDEzOjE4OjM5LjQ4MDExOTQ0NyArMDEwMAorQEAgLTg2MzIsNyArODYzMiw3IEBAIHZv aWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0KKyAgIGZvciAoY29uc3QgYmxp bms6OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdEZXN0aW5hdGlvbiYgZGVzdGluYXRpb24gOgorICAg ICAgICBkZXN0aW5hdGlvbnMpIHsKKyAgICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29u SW50ZXJuYWwoCistICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVudChldmVudF90eXBlLCBldmVu dF9kYXRhKSwgZGVzdGluYXRpb24pOworKyAgICAgICAgRGVzdGluYXRpb25FbnVtRXZlbnR7ZXZl bnRfdHlwZSwgZXZlbnRfZGF0YX0sIGRlc3RpbmF0aW9uKTsKKyAgIH0KKyB9CisgCitAQCAtODY2 MSw3ICs4NjYxLDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpTZW5kRmVuY2VkRnJhbQor ICAgfQorIAorICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCistICAg ICAgRGVzdGluYXRpb25VUkxFdmVudChkZXN0aW5hdGlvbl91cmwpLAorKyAgICAgIERlc3RpbmF0 aW9uVVJMRXZlbnR7ZGVzdGluYXRpb25fdXJsfSwKKyAgICAgICBibGluazo6RmVuY2VkRnJhbWU6 OlJlcG9ydGluZ0Rlc3RpbmF0aW9uOjprQnV5ZXIpOworIH0KKyAKK0BAIC04NzkyLDcgKzg3OTIs NyBAQCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6Ok1heWJlU2VuZEZlbmNlCisgICAgICAgICBk YXRhID0gaW5mby0+ZGF0YTsKKyAgICAgICB9CisgICAgICAgaW5pdGlhdG9yX3JmaC0+U2VuZEZl bmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCistICAgICAgICAgIEF1dG9tYXRpY0Jl YWNvbkV2ZW50KGV2ZW50X3R5cGUsIGRhdGEpLCBkZXN0aW5hdGlvbiwKKysgICAgICAgICAgQXV0 b21hdGljQmVhY29uRXZlbnR7ZXZlbnRfdHlwZSwgZGF0YX0sIGRlc3RpbmF0aW9uLAorICAgICAg ICAgICBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOworICAgICB9CisgICB9 IGVsc2UgeworQEAgLTg4MDMsNyArODgwMyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6 TWF5YmVTZW5kRmVuY2UKKyAgICAgZm9yIChibGluazo6RmVuY2VkRnJhbWU6OlJlcG9ydGluZ0Rl c3RpbmF0aW9uIGRlc3RpbmF0aW9uIDoKKyAgICAgICAgICBpbmZvLT5kZXN0aW5hdGlvbnMpIHsK KyAgICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFjb25JbnRl cm5hbCgKKy0gICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnQoZXZlbnRfdHlwZSwgaW5mby0+ ZGF0YSksIGRlc3RpbmF0aW9uLAorKyAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudHtldmVu dF90eXBlLCBpbmZvLT5kYXRhfSwgZGVzdGluYXRpb24sCisgICAgICAgICAgIG5hdmlnYXRpb25f cmVxdWVzdC5HZXROYXZpZ2F0aW9uSWQoKSk7CisgICAgIH0KKyAgIH0KK2RpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vf d29ya2VyX2NvbnRhaW5lcl9ob3N0LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3Qu Y2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dv cmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYy50aGFuCTIwMjQtMDItMjIgMjI6 NDM6MDYuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50 L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2MJ MjAyNC0wMi0yNCAxMzoxMzo0NC4xNTk3MTI3NzQgKzAxMDAKK0BAIC04NzAsNyArODcwLDcgQEAg U2VydmljZVdvcmtlckNvbnRhaW5lckhvc3Q6OkdldENsaWVudFR5cAorICAgRENIRUNLX0NBTExF RF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7CisgICBEQ0hFQ0soY2xpZW50 X2luZm9fKTsKKyAgIHJldHVybiBhYnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpPdmVybG9hZGVk KAorKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgIFtdKEdsb2JhbFJlbmRlckZy YW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAgICAgICAgcmV0dXJuIGJs aW5rOjptb2pvbTo6U2VydmljZVdvcmtlckNsaWVudFR5cGU6OmtXaW5kb3c7CisgICAgICAgICAg IH0sCitAQCAtODc5LDcgKzg3OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXJIb3N0OjpHZXRD bGllbnRUeXAKKyAgICAgICAgICAgfSwKKyAgICAgICAgICAgW10oYmxpbms6OlNoYXJlZFdvcmtl clRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAgICAgICAgICByZXR1cm4gYmxpbms6 Om1vam9tOjpTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZTo6a1NoYXJlZFdvcmtlcjsKKy0gICAgICAg ICAgfSksCisrICAgICAgICAgIH19LAorICAgICAgICpjbGllbnRfaW5mb18pOworIH0KKyAKK2Rp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29y a2VyL3NlcnZpY2Vfd29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjLnRo YW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIv c2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MKKy0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2 aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYy50aGFuCTIwMjQt MDItMjIgMjI6NDM6MDYuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNv dXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTk3MTI3NzQg KzAxMDAKK0BAIC0zNjMsMTAgKzM2MywxMCBAQCBTZXJ2aWNlV29ya2VyTWFpblJlc291cmNlTG9h ZGVySW50ZXJjZXB0CisgICB9CisgICBhdXRvKiBzdG9yYWdlX3BhcnRpdGlvbiA9IHByb2Nlc3Mt PkdldFN0b3JhZ2VQYXJ0aXRpb24oKTsKKyAKKy0gIHJldHVybiBhYnNsOjp2aXNpdChiYXNlOjpP dmVybG9hZGVkKFsmLCB0aGlzXShhdXRvIHRva2VuKSB7CisrICByZXR1cm4gYWJzbDo6dmlzaXQo YmFzZTo6T3ZlcmxvYWRlZHtbJiwgdGhpc10oYXV0byB0b2tlbikgeworICAgICAgICAgICAgICAg ICAgICAgICAgcmV0dXJuIEdldFN0b3JhZ2VLZXlGcm9tV29ya2VySG9zdChzdG9yYWdlX3BhcnRp dGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgdG9rZW4sIG9yaWdpbik7CistICAgICAgICAgICAgICAgICAgICAgfSksCisrICAg ICAgICAgICAgICAgICAgICAgfX0sCisgICAgICAgICAgICAgICAgICAgICAgKndvcmtlcl90b2tl bl8pOworIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93 c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYy50aGFuIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJf aG9zdC5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3dvcmtl cl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDYu MDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dz ZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCTIwMjQtMDItMjQgMTM6MTM6 NDQuMTU5NzEyNzc0ICswMTAwCitAQCAtMjUyLDcgKzI1Miw3IEBAIHZvaWQgRGVkaWNhdGVkV29y a2VySG9zdDo6U3RhcnRTY3JpcHRMb2EKKyAgIFJlbmRlckZyYW1lSG9zdEltcGwqIGNyZWF0b3Jf cmVuZGVyX2ZyYW1lX2hvc3QgPSBudWxscHRyOworICAgRGVkaWNhdGVkV29ya2VySG9zdCogY3Jl YXRvcl93b3JrZXIgPSBudWxscHRyOworIAorLSAgYWJzbDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRl ZCgKKysgIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgICAgICAgICAg WyZdKGNvbnN0IEdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkg eworICAgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCA9CisgICAg ICAgICAgICAgICAgICAgICAgICAgUmVuZGVyRnJhbWVIb3N0SW1wbDo6RnJvbUlEKHJlbmRlcl9m cmFtZV9ob3N0X2lkKTsKK0BAIC0yNjAsNyArMjYwLDcgQEAgdm9pZCBEZWRpY2F0ZWRXb3JrZXJI b3N0OjpTdGFydFNjcmlwdExvYQorICAgICAgICAgICAgICAgICAgIFsmXShibGluazo6RGVkaWNh dGVkV29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgICAg ICAgICAgY3JlYXRvcl93b3JrZXIgPSBzZXJ2aWNlXy0+R2V0RGVkaWNhdGVkV29ya2VySG9zdEZy b21Ub2tlbigKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rva2Vu KTsKKy0gICAgICAgICAgICAgICAgICB9KSwKKysgICAgICAgICAgICAgICAgICB9fSwKKyAgICAg ICAgICAgICAgIGNyZWF0b3JfKTsKKyAKKyAgIGlmICghY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9z dCAmJiAhY3JlYXRvcl93b3JrZXIpIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv bmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6 MTcuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9uZXQvZG5zL2hv c3RfcmVzb2x2ZXJfY2FjaGUuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTI3MTI2NDkgKzAxMDAK K0BAIC0zNjgsNyArMzY4LDcgQEAgdm9pZCBIb3N0UmVzb2x2ZXJDYWNoZTo6U2V0KAorIAorICAg c3RkOjpzdHJpbmcgZG9tYWluX25hbWUgPSByZXN1bHQtPmRvbWFpbl9uYW1lKCk7CisgICBlbnRy aWVzXy5lbXBsYWNlKAorLSAgICAgIEtleShzdGQ6Om1vdmUoZG9tYWluX25hbWUpLCBuZXR3b3Jr X2Fub255bWl6YXRpb25fa2V5KSwKKysgICAgICBLZXl7c3RkOjptb3ZlKGRvbWFpbl9uYW1lKSwg bmV0d29ya19hbm9ueW1pemF0aW9uX2tleX0sCisgICAgICAgRW50cnkoc3RkOjptb3ZlKHJlc3Vs dCksIHNvdXJjZSwgc2VjdXJlLCBzdGFsZW5lc3NfZ2VuZXJhdGlvbikpOworIAorICAgaWYgKGVu dHJpZXNfLnNpemUoKSA+IG1heF9lbnRyaWVzXykgeworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAu NjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRl X2ludGVycG9sYXRpb24uY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYwor LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxh dGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0 MzoyNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5j YwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAorQEAgLTMxLDcgKzMxLDcgQEAg VmVjdG9yPEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlPgorICAgICAgICAgY29sb3Jf aW50ZXJwb2xhdGlvbl9zcGFjZSwgaHVlX2ludGVycG9sYXRpb25fbWV0aG9kLCBzdGFydF9jb2xv ciwKKyAgICAgICAgIGVuZF9jb2xvciwgcGVyY2VudGFnZSwgYWxwaGFfbXVsdGlwbGllcik7Cisg CistICAgIEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlIHJlc3VsdF9jb2xvcl9yZWNv cmQoaSwgcmVzdWx0X2NvbG9yKTsKKysgICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJp ZGUgcmVzdWx0X2NvbG9yX3JlY29yZHtzdGF0aWNfY2FzdDxpbnQ+KGkpLCByZXN1bHRfY29sb3J9 OworICAgICByZXN1bHRfY29sb3JfcmVjb3Jkcy5wdXNoX2JhY2socmVzdWx0X2NvbG9yX3JlY29y ZCk7CisgICB9CisgICByZXR1cm4gcmVzdWx0X2NvbG9yX3JlY29yZHM7CitkaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVy L2NwZGZfcmVuZGVyc3RhdHVzLmNwcC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRf cGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwCist LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBp L3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAudGhhbgkyMDI0LTAyLTIyIDIyOjQ1OjAyLjAw MDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvcGRm aXVtL2NvcmUvZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwCTIwMjQtMDItMjQg MTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCitAQCAtNTA3LDcgKzUwNyw3IEBAIHZvaWQgQ1BERl9S ZW5kZXJTdGF0dXM6OlByb2Nlc3NDbGlwUGF0aCgKKyAgICAgfSBlbHNlIHsKKyAgICAgICBtX3BE ZXZpY2UtPlNldENsaXBfUGF0aEZpbGwoCisgICAgICAgICAgICpwUGF0aCwgJm10T2JqMkRldmlj ZSwKKy0gICAgICAgICAgQ0ZYX0ZpbGxSZW5kZXJPcHRpb25zKENsaXBQYXRoLkdldENsaXBUeXBl KGkpKSk7CisrICAgICAgICAgIENGWF9GaWxsUmVuZGVyT3B0aW9uc3tDbGlwUGF0aC5HZXRDbGlw VHlwZShpKX0pOworICAgICB9CisgICB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaC50aGFuIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCistLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgu dGhhbgkyMDI0LTAyLTIyIDIyOjQ0OjEyLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCTIwMjQtMDIt MjQgMTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCitAQCAtNTIsNTMgKzUyLDUzIEBAIGNvbnN0ZXhw ciBhdXRvIGtDaHJvbWF0aWNpdHlNYXAgPSBiYXNlOjoKKyAgICAgemNyX2NvbG9yX21hbmFnZXJf djFfY2hyb21hdGljaXR5X25hbWVzLAorICAgICBQcmltYXJ5VmVyc2lvbj4oCisgICAgIHt7WkNS X0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNjAxXzUyNV9MSU5FLAorLSAg ICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0s CistICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQ cmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAorKyAg ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNjAxXzYyNV9MSU5FLAorLSAgICAg IFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3MEJHLAorLSAg ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJpbWFy eVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNDcwQkcsCisrICAgICAgICAg ICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFO QUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUxNzBNLAorLSAgICAgIFByaW1hcnlWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCistICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmltYXJ5VmVyc2lvbntn Zng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAorKyAgICAgICAgICAgICAgICAg ICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf Q0hST01BVElDSVRZX05BTUVTX0JUNzA5LAorLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29s b3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZh dWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElD SVRZX05BTUVTX0JUMjAyMCwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6 OlByaW1hcnlJRDo6QlQyMDIwLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgIFByaW1h cnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDIwMjAsIGtEZWZhdWx0U2lu Y2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05B TUVTX1NSR0IsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5 SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgIFByaW1hcnlWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb259 fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRElTUExB WVAzLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpQ Mywga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlByaW1hcnlJRDo6UDMsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0FET0JFUkdCLAorLSAgICAg IFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpBRE9CRV9SR0IsCist ICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmlt YXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QURPQkVfUkdCLAorKyAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRfQ09MT1JfU1BJTiwKKy0g ICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lvbnsKKyAgICAgICAgICAg Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OldJREVfR0FNVVRfQ09MT1JfU1BJTiwKKy0gICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRf Q09MT1JfU1BJTl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NPTE9SX1NQSU5fU0lOQ0VfVkVSU0lP Tn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDQ3 ME0sCistICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257CisgICAg ICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3ME0sCistICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDQ3ME1fU0lOQ0VfVkVSU0lP Til9LAorKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNf QlQ0NzBNX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJP TUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAg IFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 U01QVEUyNDBNLAorLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlf TkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OfX0sCisg ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9ENTAsCist ICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257CisgICAgICAgICAg IGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpYWVpfRDUwLAorLSAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfWFlaX0Q1MF9TSU5DRV9WRVJTSU9OKX0s CisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpf RDUwX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFU SUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAg IFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6 U01QVEVTVDQyOF8xLAorLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJ VFlfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJT SU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NN UFRFU1Q0MzFfMiwKKy0gICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lv bnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFU1Q0MzFfMiwK Ky0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRF U1Q0MzFfMl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDMxXzJfU0lOQ0VfVkVSU0lPTn19LAorICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNLAorLSAgICAgIFBy aW1hcnlWZXJzaW9uKAorKyAgICAgIFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6OkNv bG9yU3BhY2U6OlByaW1hcnlJRDo6RklMTSwKKy0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX0ZJTE1fU0lOQ0VfVkVSU0lPTil9fSk7CisrICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJ T059fX0pOworIAorIC8vIEEgbWFwIGZyb20gdGhlIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZf bmFtZXMgZW51bSB2YWx1ZXMKKyAvLyByZXByZXNlbnRpbmcgd2VsbC1rbm93biBFT1RGcywgdG8g dGhlaXIgZXF1aXZhbGVudCBUcmFuc2ZlcklEcy4KK0BAIC0xMDcsNjggKzEwNyw2OCBAQCBjb25z dGV4cHIgYXV0byBrRW90Zk1hcCA9IGJhc2U6Ok1ha2VGaXhlCisgICAgIHpjcl9jb2xvcl9tYW5h Z2VyX3YxX2VvdGZfbmFtZXMsCisgICAgIFRyYW5zZmVyVmVyc2lvbj4oeworICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MSU5FQVIsCistICAgICBUcmFuc2ZlclZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMSU5FQVIsCistICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxJTkVBUiwKKysgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TUkdCLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJ RDo6U1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntn Zng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0s CisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSLAorLSAgICAg VHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQl9IRFIsCist ICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdC X0hEUl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNw YWNlOjpUcmFuc2ZlcklEOjpTUkdCX0hEUiwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSX1NJTkNFX1ZFUlNJT059fSwKKyAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDksCistICAgICBUcmFuc2ZlclZl cnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDcwOSwKKy0gICAgICAgICAgICAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJ T04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OkJUNzA5LAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf RU9URl9OQU1FU19CVDIwODcsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpHQU1NQTI0LAorLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2lu Y2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpHQU1NQTI0LAorKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9ufX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0FET0JFUkdCLAor ICAgICAgLy8gVGhpcyBpcyBldmVyIHNvIHNsaWdodGx5IGluYWNjdXJhdGUuIFRoZSBudW1iZXIg b3VnaHQgdG8gYmUKKyAgICAgIC8vIDIuMTk5MjE4NzVmLCBub3QgMi4yCistICAgICBUcmFuc2Zl clZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTIyLAorLSAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZlcnNp b257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTIyLAorKyAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1BRLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6UFEsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpQUSwga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHLAorLSAgICAg VHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6SExHLAorLSAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNF X1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5z ZmVySUQ6OkhMRywKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1NNUFRFMTcwTSwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9y U3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMTcwTSwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMTcwTV9TSU5DRV9WRVJTSU9OKX0sCisr ICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTE3 ME0sCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TTVBURTE3ME1fU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf RU9URl9OQU1FU19TTVBURTI0ME0sCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNw YWNlOjpUcmFuc2ZlcklEOjpTTVBURTI0ME0sCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lPTil9LAorKyAg ICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUyNDBN LAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf U01QVEUyNDBNX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU01QVEVTVDQyOF8xLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKAorKyAgICAgVHJh bnNmZXJWZXJzaW9ueworICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01Q VEVTVDQyOF8xLAorLSAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01Q VEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPRywKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPRywKKy0gICAgICAgICAgICAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19TSU5DRV9WRVJTSU9OKX0sCisrICAgICBU cmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0csCisrICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU0lOQ0Vf VkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU1FS VCwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxP R19TUVJULAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfTE9HX1NRUlRfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dm eDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HX1NRUlQsCisrICAgICAgICAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU1FSVF9TSU5DRV9WRVJTSU9O fX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lFQzYxOTY2XzJfNCwK Ky0gICAgIFRyYW5zZmVyVmVyc2lvbigKKysgICAgIFRyYW5zZmVyVmVyc2lvbnsKKyAgICAgICAg ICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OklFQzYxOTY2XzJfNCwKKy0gICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0lFQzYxOTY2XzJfNF9TSU5DRV9WRVJTSU9O KX0sCisrICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8y XzRfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19CVDEzNjFfRUNHLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6QlQxMzYxX0VDRywKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0dfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJh bnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQxMzYxX0VDRywKKysg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2 MV9FQ0dfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19CVDIwMjBfMTAsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpCVDIwMjBfMTAsCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTBfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJh bnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEwLAorKyAg ICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIw XzEwX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfQlQyMDIwXzEyLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6QlQyMDIwXzEyLAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEyX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5z ZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMiwKKysgICAg ICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8x Ml9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X1NDUkdCX0xJTkVBUl84MF9OSVRTLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKAorKyAgICAgVHJh bnNmZXJWZXJzaW9ueworICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U0NS R0JfTElORUFSXzgwX05JVFMsCistICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5DRV9W RVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMTgs CistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1N QTE4LAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpD b2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTE4LAorKyAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OfX0sCisg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMjgsCistICAgICBUcmFu c2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI4LAorLSAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9T SU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpHQU1NQTI4LAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9TSU5DRV9WRVJTSU9OfX0sCisgfSk7CisgCisgLy8g QSBtYXAgZnJvbSB0aGUgU0RSIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2 YWx1ZXMKK0BAIC0xNzcsMTggKzE3NywxOCBAQCBjb25zdGV4cHIgYXV0byBrRW90Zk1hcCA9IGJh c2U6Ok1ha2VGaXhlCisgY29uc3RleHByIGF1dG8ga1RyYW5zZmVyTWFwID0KKyAgICAgYmFzZTo6 TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLCBUcmFuc2Zl ckZuVmVyc2lvbj4oeworICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf TElORUFSLAorLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuOjpr TGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJz aW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQiwKKy0gICAgICAg ICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0IsIGtEZWZhdWx0 U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5z ZmVyRm5FeHQ6OmtTUkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAge1pDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDksCistICAgICAgICAgVHJhbnNmZXJGblZl cnNpb24oCisrICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257CisgICAgICAgICAgICAgIFNrTmFt ZWRUcmFuc2ZlckZuRXh0OjprUmVjNzA5LAorLSAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OfX0sCisgICAg ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwODcsCistICAgICAgICAg VHJhbnNmZXJGblZlcnNpb24oZ2FtbWEyNCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbntnYW1tYTI0LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQURPQkVSR0IsCistICAg ICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtBOThSR0IsCist ICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbkV4dDo6a0E5OFJHQiwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB9 KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHRoZSBIRFIgemNyX2NvbG9yX21hbmFnZXJfdjEgZW90Zl9u YW1lcyBlbnVtIHZhbHVlcworQEAgLTE5Nyw3MCArMTk3LDcwIEBAIGNvbnN0ZXhwciBhdXRvIGtU cmFuc2Zlck1hcCA9CisgY29uc3RleHByIGF1dG8ga0hEUlRyYW5zZmVyTWFwID0KKyAgICAgYmFz ZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLCBUcmFu c2ZlckZuVmVyc2lvbj4oCisgICAgICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfTElORUFSLAorLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJG bjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgVHJhbnNmZXJG blZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9u fX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFIs CistICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKAorKyAgICAgICAgICBUcmFuc2ZlckZuVmVy c2lvbnsKKyAgICAgICAgICAgICAgIFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQiwKKy0gICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0Vf VkVSU0lPTil9LAorKyAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OfX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfUFEsCistICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRU cmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAgIFRyYW5z ZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VWZXJzaW9u fX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHLAorLSAg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a0hMRywKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19I TEdfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVk VHJhbnNmZXJGbjo6a0hMRywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHta Q1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VYVEVOREVEU1JHQjEwLAorLSAgICAgICAg ICBUcmFuc2ZlckZuVmVyc2lvbigKKysgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257CisgICAg ICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0JFeHRlbmRlZDEwMjNPdmVyNTEw LAorLSAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRF RFNSR0IxMF9TSU5DRV9WRVJTSU9OKX19KTsKKysgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURTUkdCMTBfU0lOQ0VfVkVSU0lPTn19fSk7CisgCisg Ly8gQSBtYXAgZnJvbSB6Y3JfY29sb3JfbWFuYWdlcl92MSBtYXRyaXhfbmFtZXMgZW51bSB2YWx1 ZXMgdG8KKyAvLyBnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEcy4KKyBjb25zdGV4cHIgYXV0byBr TWF0cml4TWFwID0KKyAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdl cl92MV9tYXRyaXhfbmFtZXMsIE1hdHJpeFZlcnNpb24+KAorICAgICAgICAge3taQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfUkdCLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlJHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysg ICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtE ZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01B VFJJWF9OQU1FU19CVDcwOSwKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6Ok1hdHJpeElEOjpCVDcwOSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNp bmNlVmVyc2lvbil9LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OkJUNzA5LAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19C VDQ3MEJHLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKAorKyAgICAgICAgICBNYXRyaXhWZXJz aW9ueworICAgICAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQ0NzBCRywK Ky0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3MEJH X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01B VFJJWF9OQU1FU19CVDQ3MEJHX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAyMF9OQ0wsCistICAgICAgICAgIE1hdHJpeFZl cnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX05DTCwKKy0gICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgICBNYXRyaXhW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9OQ0wsCisrICAgICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAyMF9DTCwKKy0gICAgICAgICAgTWF0cml4 VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfQ0wsCistICAgICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgTWF0cml4 VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfQ0wsCisrICAgICAgICAg ICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0ZDQywKKy0gICAgICAgICAgTWF0cml4VmVyc2lv bihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpGQ0MsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s CisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6RkND LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9NQVRSSVhfTkFNRVNfWUNPQ0csCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpNYXRyaXhJRDo6WUNPQ0csCistICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NHX1NJTkNFX1ZFUlNJT04pfSwKKysgICAg ICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZQ09DRywKKysg ICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNf WUNPQ0dfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9N QVRSSVhfTkFNRVNfWURaRFgsCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNw YWNlOjpNYXRyaXhJRDo6WURaRFgsCistICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRYX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAg ICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZRFpEWCwKKysgICAg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWURa RFhfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRS SVhfTkFNRVNfR0JSLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OkdCUiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9NQVRSSVhfTkFNRVNfR0JSX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgTWF0cml4 VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpHQlIsCisrICAgICAgICAgICAgICAg ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUl9TSU5DRV9WRVJT SU9OfX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19TTVBU RTE3ME0sCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6U01QVEUxNzBNLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6U01QVEUxNzBNLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19TTVBU RTI0ME0sCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6U01QVEUyNDBNLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9uKX19KTsKKysgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEOjpTTVBURTI0ME0sCisrICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb259fX0pOworIAorIC8vIEEgbWFwIGZyb20gemNyX2NvbG9yX21hbmFnZXJfdjEgcmFuZ2Vf bmFtZXMgZW51bSB2YWx1ZXMgdG8KKyAvLyBnZng6OkNvbG9yU3BhY2U6OlJhbmdlSURzLgorIGNv bnN0ZXhwciBhdXRvIGtSYW5nZU1hcCA9CisgICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNy X2NvbG9yX21hbmFnZXJfdjFfcmFuZ2VfbmFtZXMsIFJhbmdlVmVyc2lvbj4oCisgICAgICAgICB7 e1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVTX0xJTUlURUQsCistICAgICAgICAgIFJh bmdlVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkxJTUlURUQsCistICAgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgICBSYW5nZVZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpMSU1JVEVELAorKyAgICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfUkFOR0VfTkFNRVNfRlVMTCwKKy0gICAgICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAg ICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1 bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFOR0Vf TkFNRVNfREVSSVZFRCwKKy0gICAgICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 UmFuZ2VJRDo6REVSSVZFRCwKKy0gICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX19KTsKKysgICAgICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFu Z2VJRDo6REVSSVZFRCwKKysgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9ufX19KTsKKyAKKyB6Y3JfY29sb3JfbWFuYWdlcl92MV9jaHJvbWF0aWNpdHlfbmFtZXMgVG9D b2xvck1hbmFnZXJDaHJvbWF0aWNpdHkoCisgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlE IHByaW1hcnlJRCwKK0BAIC0yODMsNCArMjgzLDQgQEAgemNyX2NvbG9yX21hbmFnZXJfdjFfZW90 Zl9uYW1lcyBUb0NvbG9yTQorIAorIH0gIC8vIG5hbWVzcGFjZSB1aTo6d2F5bGFuZAorIAorLSNl bmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NPTE9SX01BTkFHRVJfVVRJTF9IXworXCBLZWluIFpl aWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlLgorKyNlbmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NP TE9SX01BTkFHRVJfVVRJTF9IXworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9n dGsvZ3RrX3VpLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9ndGsvZ3RrX3VpLmNj CistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9ndGsvZ3RrX3VpLmNjLnRoYW4JMjAyNC0w Mi0yMiAyMjo0NDoxMy4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L3VpL2d0ay9ndGtfdWkuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTM3MTI2NjcgKzAxMDAKK0BA IC0xMDA3LDExICsxMDA3LDExIEBAIHVpOjpEaXNwbGF5Q29uZmlnIEd0a1VpOjpHZXREaXNwbGF5 Q29uZmkKKyAgICAgR2RrUmVjdGFuZ2xlIGdlb21ldHJ5OworICAgICBnZGtfbW9uaXRvcl9nZXRf Z2VvbWV0cnkobW9uaXRvciwgJmdlb21ldHJ5KTsKKyAgICAgaW50IG1vbml0b3Jfc2NhbGUgPSBz dGQ6Om1heCgxLCBnZGtfbW9uaXRvcl9nZXRfc2NhbGVfZmFjdG9yKG1vbml0b3IpKTsKKy0gICAg Y29uZmlnLmRpc3BsYXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soCisrICAgIGNvbmZpZy5kaXNw bGF5X2dlb21ldHJpZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgICBnZng6OlJlY3QobW9u aXRvcl9zY2FsZSAqIGdlb21ldHJ5LngsIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS55LAorICAg ICAgICAgICAgICAgICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS53aWR0aCwKKyAgICAgICAg ICAgICAgICAgICBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkuaGVpZ2h0KSwKKy0gICAgICAgIG1v bml0b3Jfc2NhbGUgKiBmb250X3NjYWxlKTsKKysgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Piht b25pdG9yX3NjYWxlICogZm9udF9zY2FsZSl9OworICAgfQorICAgcmV0dXJuIGNvbmZpZzsKKyB9 CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNz dXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRv ci5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9tZW1vcnlfcHJlc3N1 cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjLm1lCTIwMjQtMDItMjQgMTg6MDY6NDYu NTA5MzkzMDMyICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL21l bW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MJMjAyNC0wMi0yNCAx ODowNzoxMS4yNTg5NDgyNDEgKzAxMDAKK0BAIC05Miw4ICs5Miw4IEBAIHZvaWQgVW5uZWNlc3Nh cnlEaXNjYXJkTW9uaXRvcjo6T25EaXNjYXIKKyAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VR VUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworICAgaWYgKGN1cnJlbnRfcmVjbGFpbV9ldmVudF8p IHsKKyAgICAgLy8gQ2FjaGUgdGhpcyBraWxsIGV2ZW50IGFsb25nIHdpdGggdGhlIHRpbWUgaXQg dG9vayBwbGFjZS4KKy0gICAgY3VycmVudF9yZWNsYWltX2V2ZW50X2tpbGxzXy5lbXBsYWNlX2Jh Y2sobWVtb3J5X2ZyZWVkX2tiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBkaXNjYXJkX2NvbXBsZXRlX3RpbWUpOworKyAgICBjdXJyZW50X3JlY2xhaW1f ZXZlbnRfa2lsbHNfLmVtcGxhY2VfYmFjaygpID0ge21lbW9yeV9mcmVlZF9rYiwKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzY2FyZF9jb21wbGV0ZV90 aW1lfTsKKyAgIH0KKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBv bmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0 b2ZpbGxfdGFibGUuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9m aWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxl LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjLm1lCTIw MjQtMDItMjQgMTk6NTg6MDkuOTI5MzcxNzkxICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9h ZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjCTIwMjQtMDItMjQgMTk6NTk6MDcuMTQ5NTI0ODYyICsw MTAwCitAQCAtNjMxLDEwICs2MzEsMTAgQEAgc3RkOjp1bmlxdWVfcHRyPEF1dG9maWxsUHJvZmls ZT4gQWRkcmVzcworICAgICB9CisgCisgICAgIGJhc2U6OnNwYW48Y29uc3QgdWludDhfdD4gb2Jz ZXJ2YXRpb25zX2RhdGEgPSBzLkNvbHVtbkJsb2IoMyk7CistICAgIGZpZWxkX3R5cGVfdmFsdWVz LmVtcGxhY2VfYmFjaygKKysgICAgZmllbGRfdHlwZV92YWx1ZXMuZW1wbGFjZV9iYWNrKCkgPSB7 CisgICAgICAgICB0eXBlLCBzLkNvbHVtblN0cmluZzE2KDEpLCBzLkNvbHVtbkludCgyKSwKKyAg ICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KG9ic2VydmF0aW9uc19kYXRhLmJlZ2luKCksCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhdGlvbnNfZGF0YS5lbmQoKSkpOwor KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YXRpb25zX2RhdGEuZW5kKCkpfTsK KyAKKyAgICAgaWYgKHR5cGUgPT0gQUREUkVTU19IT01FX0NPVU5UUlkpIHsKKyAgICAgICBjb3Vu dHJ5X2NvZGUgPSBiYXNlOjpVVEYxNlRvVVRGOChzLkNvbHVtblN0cmluZzE2KDEpKTsKK2RpZmYg LXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dz ZXIvd2ViZGF0YS9hZGRyZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRpbC5jYy5tZSBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEv YWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2Vz L2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MubWUJMjAyNC0wMi0yNCAxOTo1MjowMi4xNzM2ODIw NjAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwv Y29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MJ MjAyNC0wMi0yNCAxOTo1MjoyNS4yNDcyMTYzMjkgKzAxMDAKK0BAIC0xOTIsOSArMTkyLDkgQEAg Y2xhc3MgQ29udGFjdEluZm9Qcm9maWxlU2V0dGVyIHsKKyAgICAgICBDSEVDSyhvYnNlcnZhdGlv bnMuZW1wdHkoKSk7CisgICAgICAgZm9yIChjb25zdCBzeW5jX3BiOjpDb250YWN0SW5mb1NwZWNp Zmljczo6T2JzZXJ2YXRpb24mIHByb3RvX29ic2VydmF0aW9uIDoKKyAgICAgICAgICAgIG1ldGFk YXRhLm9ic2VydmF0aW9ucygpKSB7CistICAgICAgICBvYnNlcnZhdGlvbnMuZW1wbGFjZV9iYWNr KHByb3RvX29ic2VydmF0aW9uLnR5cGUoKSwKKysgICAgICAgIG9ic2VydmF0aW9ucy5lbXBsYWNl X2JhY2soKSA9IHtwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFByb2ZpbGVUb2tlblF1YWxpdHk6OkZvcm1TaWduYXR1cmVIYXNoKAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9fb2JzZXJ2YXRpb24u Zm9ybV9oYXNoKCkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy b3RvX29ic2VydmF0aW9uLmZvcm1faGFzaCgpKX07CisgICAgICAgfQorICAgICB9CisgICB9Citk aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJh bWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRl bnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYworLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJh bWVfY29uZmlnLmNjLm1lCTIwMjQtMDItMjUgMDA6MTQ6MjYuODMwMzIzMzY1ICswMTAwCisrKysg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNl ZF9mcmFtZV9jb25maWcuY2MJMjAyNC0wMi0yNSAwMDoxNToxNy45MzkyNDEwOTEgKzAxMDAKK0BA IC00MDIsNyArNDAyLDcgQEAgdm9pZCBGZW5jZWRGcmFtZVByb3BlcnRpZXM6OlVwZGF0ZVBhcmVu dAorICAgICAgICAgZmVhdHVyZSwgYWxsb3dfbGlzdC5BbGxvd2VkT3JpZ2lucygpLCBhbGxvd19s aXN0LlNlbGZJZk1hdGNoZXMoKSwKKyAgICAgICAgIGFsbG93X2xpc3QuTWF0Y2hlc0FsbCgpLCBh bGxvd19saXN0Lk1hdGNoZXNPcGFxdWVTcmMoKSk7CisgICB9CistICBwYXJlbnRfcGVybWlzc2lv bnNfaW5mb18uZW1wbGFjZShwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9vcmlnaW4pOworKyAgcGFy ZW50X3Blcm1pc3Npb25zX2luZm9fLmVtcGxhY2UoKSA9IHtwYXJzZWRfcG9saWNpZXMsIHBhcmVu dF9vcmlnaW59OworIH0KKyAKKyB9ICAvLyBuYW1lc3BhY2UgY29udGVudAorZGlmZiAtdXAgY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJl c3RfZ3JvdXBfc3RvcmFnZS5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJv d3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCistLS0gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3Rf Z3JvdXBfc3RvcmFnZS5jYy5tZQkyMDI0LTAyLTI1IDAwOjE3OjMxLjc5OTY0NDY5MSArMDEwMAor KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3Vw L2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MJMjAyNC0wMi0yNSAwMDoxODo1NC4xNTcxMjM1MTkg KzAxMDAKK0BAIC0zMzMyLDkgKzMzMzIsOSBAQCBzdGQ6Om9wdGlvbmFsPERlYnVnUmVwb3J0Q29v bGRvd24+IERvR2V0CisgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CisgICB9CisgCistICByZXR1 cm4gRGVidWdSZXBvcnRDb29sZG93bihjb29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29s dW1uVGltZSgwKSwKKysgIHJldHVybiBEZWJ1Z1JlcG9ydENvb2xkb3due2Nvb2xkb3duX2RlYnVn Z2luZ19vbmx5X3JlcG9ydC5Db2x1bW5UaW1lKDApLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgc3RhdGljX2Nhc3Q8RGVidWdSZXBvcnRDb29sZG93blR5cGU+KAorLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvb2xkb3duX2RlYnVnZ2luZ19vbmx5X3JlcG9ydC5Db2x1 bW5JbnQoMSkpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29sZG93bl9k ZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uSW50KDEpKX07CisgfQorIAorIHZvaWQgRG9HZXRE ZWJ1Z1JlcG9ydENvb2xkb3ducygKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hy b21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgubWUg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVf bm90aWZpY2F0aW9uX3NlcnZpY2UuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgubWUJMjAy NC0wMi0yNSAxNTozNDoxNi4xNDA3Njg0NDUgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2Vydmlj ZS5oCTIwMjQtMDItMjUgMTU6Mzc6NDcuNzg5NjY1ODM1ICswMTAwCitAQCAtMjQsNiArMjQsNyBA QCBzdHJ1Y3QgTWVudU5vdGlmaWNhdGlvbkVudHJ5IHsKKyAgIGludCBjb21tYW5kID0gMDsKKyAg IHN0ZDo6dTE2c3RyaW5nIGxhYmVsOworICAgc2FmZXR5X2h1Yjo6U2FmZXR5SHViTW9kdWxlVHlw ZSBtb2R1bGU7CisrICBNZW51Tm90aWZpY2F0aW9uRW50cnkoYXV0byBjLCBhdXRvIGwsIGF1dG8g bSkgOiBjb21tYW5kKGMpLCBsYWJlbChsKSwgbW9kdWxlKG0pIHsgfQorIH07CisgCisgbmFtZXNw YWNlIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvdGFicy90YWJfc3R5bGVfdmlld3MuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j aHJvbWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHlsZV92aWV3cy5jYworLS0tIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvdGFicy90YWJfc3R5bGVf dmlld3MuY2MubWUJMjAyNC0wMi0yNSAxNjoyMjo0Ni42MDEyMDkyNjkgKzAxMDAKKysrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxl X3ZpZXdzLmNjCTIwMjQtMDItMjUgMTY6MjQ6NDguMTEwNjE4NDc1ICswMTAwCitAQCAtMTIxNCwx MCArMTIxNCwxMCBAQCBTa1BhdGggQ2hyb21lUmVmcmVzaDIwMjNUYWJTdHlsZVZpZXdzOjpHCisg CisgICAgIC8vIFJhZGlpIGFyZSBjbG9ja3dpc2UgZnJvbSB0b3AgbGVmdC4KKyAgICAgY29uc3Qg U2tWZWN0b3IgcmFkaWlbNF0gPSB7CistICAgICAgICBTa1ZlY3Rvcih0b3BfY29udGVudF9jb3Ju ZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzKSwKKy0gICAgICAgIFNrVmVjdG9y KHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAor LSAgICAgICAgU2tWZWN0b3IoYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2Nv bnRlbnRfY29ybmVyX3JhZGl1cyksCistICAgICAgICBTa1ZlY3Rvcihib3R0b21fY29udGVudF9j b3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzKX07CisrICAgICAgICBT a1ZlY3Rvcnt0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFk aXVzfSwKKysgICAgICAgIFNrVmVjdG9ye3RvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9j b250ZW50X2Nvcm5lcl9yYWRpdXN9LAorKyAgICAgICAgU2tWZWN0b3J7Ym90dG9tX2NvbnRlbnRf Y29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1c30sCisrICAgICAgICBT a1ZlY3Rvcntib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3Ju ZXJfcmFkaXVzfX07CisgICAgIFNrUlJlY3QgcnJlY3Q7CisgICAgIHJyZWN0LnNldFJlY3RSYWRp aShTa1JlY3Q6Ok1ha2VMVFJCKGxlZnQsIHRvcCwgcmlnaHQsIGJvdHRvbSksIHJhZGlpKTsKKyAg ICAgU2tQYXRoIHBhdGg7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1p c3Npb25fY29udGV4dC5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2Vy L2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1pc3Npb25f Y29udGV4dC5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZmls ZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9jb250 ZXh0LmNjLm1lCTIwMjQtMDItMjUgMTg6NDk6MzIuNTEyMDgwMDg1ICswMTAwCisrKysgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21l X2ZpbGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MJMjAyNC0wMi0yNSAxOTow NzozNi41MTg3MTE2OTMgKzAxMDAKK0BAIC0zODYsNyArMzg2LDcgQEAgYm9vbCBTaG91bGRCbG9j a0FjY2Vzc1RvUGF0aChjb25zdCBiYXNlOgorICAgICAgIERDSEVDSyhibG9jay5wYXRoKTsKKyAg ICAgICBibG9ja2VkX3BhdGggPSBiYXNlOjpGaWxlUGF0aChibG9jay5wYXRoKTsKKyAgICAgfQor LSAgICBydWxlcy5lbXBsYWNlX2JhY2soYmxvY2tlZF9wYXRoLCBibG9jay50eXBlKTsKKysgICAg cnVsZXMuZW1wbGFjZV9iYWNrKCkgPSB7YmxvY2tlZF9wYXRoLCBibG9jay50eXBlfTsKKyAgIH0K KyAKKyAgIGJhc2U6OkZpbGVQYXRoIG5lYXJlc3RfYW5jZXN0b3I7CitAQCAtMTU3NSwxMSArMTU3 NSwxMSBAQCB2b2lkIENocm9tZUZpbGVTeXN0ZW1BY2Nlc3NQZXJtaXNzaW9uQ29uCisgICAvLyBw cm9maWxlJ3MgZGlyZWN0b3J5LCBhc3N1bWluZyB0aGUgcHJvZmlsZSBkaXIgaXMgYSBjaGlsZCBv ZiB0aGUgdXNlciBkYXRhCisgICAvLyBkaXIuCisgICBzdGQ6OnZlY3RvcjxCbG9ja1BhdGhSdWxl PiBleHRyYV9ydWxlczsKKy0gIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjayhwcm9maWxlXy0+R2V0 UGF0aCgpLkRpck5hbWUoKSwga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgZXh0cmFfcnVsZXMuZW1w bGFjZV9iYWNrKCkgPSB7cHJvZmlsZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtCbG9ja0FsbENo aWxkcmVufTsKKyAgIGlmIChnX2Jyb3dzZXJfcHJvY2Vzcy0+cHJvZmlsZV9tYW5hZ2VyKCkpIHsK Ky0gICAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNrKAorKyAgICBleHRyYV9ydWxlcy5lbXBsYWNl X2JhY2soKSA9IHsKKyAgICAgICAgIGdfYnJvd3Nlcl9wcm9jZXNzLT5wcm9maWxlX21hbmFnZXIo KS0+dXNlcl9kYXRhX2RpcigpLAorLSAgICAgICAga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgICAg ICAga0Jsb2NrQWxsQ2hpbGRyZW59OworICAgfQorIAorICAgYmFzZTo6VGhyZWFkUG9vbDo6UG9z dFRhc2tBbmRSZXBseVdpdGhSZXN1bHQoCistLS0gY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jaHJv bWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5pYm94X2NsaWVudC5jYy5tZQkyMDI0LTAz LTE1IDE1OjE2OjQ2Ljk4MDEyMzgwNiArMDEwMAorKysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYv Y2hyb21lL2Jyb3dzZXIvdWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9jbGllbnQuY2MJMjAyNC0w My0xNSAxNToxODozOS4wMjQwNDI1NjAgKzAxMDAKK0BAIC00NzQsMTAgKzQ3NCwxMCBAQAorICAg ICAgICAgICAgICAgYWx0ZXJuYXRpdmVfbmF2X21hdGNoKTsKKyAKKyAgIC8vIFN0b3JlIHRoZSBk ZXRhaWxzIG5lY2Vzc2FyeSB0byBvcGVuIHRoZSBvbW5pYm94IG1hdGNoIHZpYSBicm93c2VyIGNv bW1hbmRzLgorLSAgbG9jYXRpb25fYmFyXy0+c2V0X25hdmlnYXRpb25fcGFyYW1zKExvY2F0aW9u QmFyOjpOYXZpZ2F0aW9uUGFyYW1zKAorKyAgbG9jYXRpb25fYmFyXy0+c2V0X25hdmlnYXRpb25f cGFyYW1zKExvY2F0aW9uQmFyOjpOYXZpZ2F0aW9uUGFyYW1zeworICAgICAgIGRlc3RpbmF0aW9u X3VybCwgZGlzcG9zaXRpb24sIHRyYW5zaXRpb24sIG1hdGNoX3NlbGVjdGlvbl90aW1lc3RhbXAs CisgICAgICAgZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aG91dF9zY2hlbWUsCistICAgICAg ZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aF9odHRwX3NjaGVtZSwgbWF0Y2guZXh0cmFfaGVh ZGVycykpOworKyAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhfaHR0cF9zY2hlbWUs IG1hdGNoLmV4dHJhX2hlYWRlcnN9KTsKKyAKKyAgIGlmIChicm93c2VyXykgeworICAgICBhdXRv IG5hdmlnYXRpb24gPSBjaHJvbWU6Ok9wZW5DdXJyZW50VVJMKGJyb3dzZXJfKTsKKy0tLSBjaHJv bWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVz dF9ncm91cF9hdWN0aW9uLmNjLm1lCTIwMjQtMDMtMTUgMTU6MTY6NDcuMDA0MTI0NDMxICswMTAw CisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3Jv dXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYwkyMDI0LTAzLTE1IDE1OjIxOjU3Ljc5NDIyOTUy MSArMDEwMAorQEAgLTU2NSw3ICs1NjUsNyBAQAorICAgICAgICBibGluazo6ZmVhdHVyZXM6OmtG bGVkZ2VEZWJ1Z1JlcG9ydFJlc3RyaWN0ZWRDb29sZG93bi5HZXQoKSAhPQorICAgICAgICAgICAg YmFzZTo6TWlsbGlzZWNvbmRzKDApKSkgeworICAgICBuZXdfZGVidWdfcmVwb3J0X2xvY2tvdXRf YW5kX2Nvb2xkb3ducy5kZWJ1Z19yZXBvcnRfY29vbGRvd25fbWFwW29yaWdpbl0gPQorLSAgICAg ICAgRGVidWdSZXBvcnRDb29sZG93bihub3dfbmVhcmVzdF9uZXh0X2hvdXIsIGNvb2xkb3duX3R5 cGUpOworKyAgICAgICAgRGVidWdSZXBvcnRDb29sZG93bntub3dfbmVhcmVzdF9uZXh0X2hvdXIs IGNvb2xkb3duX3R5cGV9OworICAgfQorIAorICAgcmV0dXJuIGNhbl9zZW5kX2RlYnVnX3JlcG9y dDsKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2Nocm9tZS9icm93c2VyL3VpL2F1dG9maWxs L2F1dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDMtMTUgMTU6NTU6NTEuMzUxODc4ODI5ICswMTAwCisrKysgY2hyb21pdW0tMTIzLjAu NjMxMi40Ni9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRvZmlsbF9jb250ZXh0X21lbnVf bWFuYWdlci5jYwkyMDI0LTAzLTE1IDE2OjE5OjQ4Ljg2MjE4OTQ2MyArMDEwMAorQEAgLTI3Nyw4 ICsyNzcsOCBAQAorICAgICBBdXRvZmlsbE1hbmFnZXImIG1hbmFnZXIpIHsKKyAgIGF1dG8mIGRy aXZlciA9IHN0YXRpY19jYXN0PENvbnRlbnRBdXRvZmlsbERyaXZlciY+KG1hbmFnZXIuZHJpdmVy KCkpOworICAgZHJpdmVyLmJyb3dzZXJfZXZlbnRzKCkuUmVuZGVyZXJTaG91bGRUcmlnZ2VyU3Vn Z2VzdGlvbnMoCistICAgICAgRmllbGRHbG9iYWxJZChkcml2ZXIuR2V0RnJhbWVUb2tlbigpLAor LSAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVuZGVy ZXJfaWQpKSwKKysgICAgICBGaWVsZEdsb2JhbElke2RyaXZlci5HZXRGcmFtZVRva2VuKCksCisr ICAgICAgICAgICAgICAgICAgICBGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5kZXJl cl9pZCl9LAorICAgICAgIEF1dG9maWxsU3VnZ2VzdGlvblRyaWdnZXJTb3VyY2U6OmtNYW51YWxG YWxsYmFja1BheW1lbnRzKTsKKyAgIExvZ01hbnVhbEZhbGxiYWNrQ29udGV4dE1lbnVFbnRyeUFj Y2VwdGVkKAorICAgICAgIHN0YXRpY19jYXN0PEJyb3dzZXJBdXRvZmlsbE1hbmFnZXImPihtYW5h Z2VyKSwKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDMtMTMgMjA6MzU6NTcuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIzLjAu NjMxMi40Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3Bh bGV0dGUuaAkyMDI0LTAzLTE1IDE2OjI0OjU3Ljg5OTU0MDk0MSArMDEwMAorQEAgLTk2LDcgKzk2 LDcgQEAKKyAgICAgICBDb2xvcjo6Q29sb3JTcGFjZSBjb2xvcl9pbnRlcnBvbGF0aW9uX3NwYWNl LAorICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I6Okh1ZUludGVycG9sYXRpb25NZXRob2Q+IGh1 ZV9pbnRlcnBvbGF0aW9uX21ldGhvZCkgeworICAgICByZXR1cm4gYmFzZTo6QWRvcHRSZWYobmV3 IEZvbnRQYWxldHRlKAorLSAgICAgICAgc3RhcnQsIGVuZCwgTm9uTm9ybWFsaXplZFBlcmNlbnRh Z2VzKHN0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKSwKKysgICAgICAgIHN0YXJ0LCBl bmQsIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2Vu dGFnZX0sCisgICAgICAgICBub3JtYWxpemVkX3BlcmNlbnRhZ2UsIGFscGhhX211bHRpcGxpZXIs IGNvbG9yX2ludGVycG9sYXRpb25fc3BhY2UsCisgICAgICAgICBodWVfaW50ZXJwb2xhdGlvbl9t ZXRob2QpKTsKKyAgIH0KK0BAIC0xNzAsNyArMTcwLDcgQEAKKyAgICAgICBkb3VibGUgbm9ybWFs aXplZF9wZXJjZW50YWdlKSB7CisgICAgIGRvdWJsZSBlbmRfcGVyY2VudGFnZSA9IG5vcm1hbGl6 ZWRfcGVyY2VudGFnZSAqIDEwMC4wOworICAgICBkb3VibGUgc3RhcnRfcGVyY2VudGFnZSA9IDEw MC4wIC0gZW5kX3BlcmNlbnRhZ2U7CistICAgIHJldHVybiBOb25Ob3JtYWxpemVkUGVyY2VudGFn ZXMoc3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2UpOworKyAgICByZXR1cm4gTm9uTm9y bWFsaXplZFBlcmNlbnRhZ2Vze3N0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlfTsKKyAg IH0KKyAKKyAgIGRvdWJsZSBHZXRBbHBoYU11bHRpcGxpZXIoKSBjb25zdCB7CitkaWZmIC11cCBj aHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9hdHRyaWJ1dGlvbl9yZXBvcnRp bmcvYXR0cmlidXRpb25fbWFuYWdlcl9pbXBsLmNjLm1lIGNocm9taXVtLTEyMy4wLjYzMTIuNDYv Y29udGVudC9icm93c2VyL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9hdHRyaWJ1dGlvbl9tYW5hZ2Vy X2ltcGwuY2MKKy0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJvd3Nlci9hdHRy aWJ1dGlvbl9yZXBvcnRpbmcvYXR0cmlidXRpb25fbWFuYWdlcl9pbXBsLmNjLm1lCTIwMjQtMDMt MTcgMDA6NDI6MzEuMTgzMjI2MjExICswMTAwCisrKysgY2hyb21pdW0tMTIzLjAuNjMxMi40Ni9j b250ZW50L2Jyb3dzZXIvYXR0cmlidXRpb25fcmVwb3J0aW5nL2F0dHJpYnV0aW9uX21hbmFnZXJf aW1wbC5jYwkyMDI0LTAzLTE3IDAwOjU1OjU2LjY4OTUxMjQzMCArMDEwMAorQEAgLTE1MDcsNyAr MTUwNyw3IEBAIHZvaWQgQXR0cmlidXRpb25NYW5hZ2VySW1wbDo6UHJlcGFyZU5leHQKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJGcmFtZUhvc3Q6OkZyb21JRChldmVudC5yZW5k ZXJfZnJhbWVfaWQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZV9vcmlnaW4s IGRlc3RpbmF0aW9uX29yaWdpbiwgJnJlcG9ydGluZ19vcmlnaW4sCisgICAgICAgICAgICAgICAg ICAgICAgICAgICAgJmNhbl9ieXBhc3NfY29va2llX2NoZWNrKSkgeworLSAgICAgIG5lZWRfdG9f Y2hlY2tfY29va2llLmVtcGxhY2VfYmFjayh1cmw6Ok9yaWdpbjo6Q3JlYXRlKGl0ZW0udXJsKSwg aSk7CisrICAgICAgbmVlZF90b19jaGVja19jb29raWUuZW1wbGFjZV9iYWNrKCkgPSB7dXJsOjpP cmlnaW46OkNyZWF0ZShpdGVtLnVybCksIGl9OworICAgICB9IGVsc2UgeworICAgICAgIGFsbG93 ZWQuYXQoaSkgPSBjYW5fYnlwYXNzX2Nvb2tpZV9jaGVjazsKKyAgICAgfQorZGlmZiAtdXAgY2hy b21pdW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJl c3RfZ3JvdXBfc3RvcmFnZS5jYy5tZSBjaHJvbWl1bS0xMjMuMC42MzEyLjQ2L2NvbnRlbnQvYnJv d3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCistLS0gY2hyb21p dW0tMTIzLjAuNjMxMi40Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3Rf Z3JvdXBfc3RvcmFnZS5jYy5tZQkyMDI0LTAzLTE3IDAwOjI0OjQxLjQyMDgzNzg4NCArMDEwMAor KysrIGNocm9taXVtLTEyMy4wLjYzMTIuNDYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3Vw L2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MJMjAyNC0wMy0xNyAwMDoyNjo0MC4yNzMzNjQ2Mzgg KzAxMDAKK0BAIC0zOTkzLDcgKzM5OTMsNyBAQCBEb0dldEJpZGRpbmdBbmRBdWN0aW9uU2VydmVy S2V5cyhzcWw6OkRhCisgICAgIHN0ZDo6dmVjdG9yPEJpZGRpbmdBbmRBdWN0aW9uU2VydmVyS2V5 PiBrZXlzOworICAgICBrZXlzLnJlc2VydmUoa2V5X3Byb3Rvcy5rZXlzX3NpemUoKSk7CisgICAg IGZvciAoYXV0byYga2V5X3Byb3RvIDogKmtleV9wcm90b3MubXV0YWJsZV9rZXlzKCkpIHsKKy0g ICAgICBrZXlzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoKmtleV9wcm90by5tdXRhYmxlX2tleSgp KSwga2V5X3Byb3RvLmlkKCkpOworKyAgICAgIGtleXMuZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjpt b3ZlKCprZXlfcHJvdG8ubXV0YWJsZV9rZXkoKSksIGtleV9wcm90by5pZCgpfTsKKyAgICAgfQor ICAgICByZXR1cm4ge2V4cGlyYXRpb24sIGtleXN9OworICAgfQorLS0tIGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L2Nocm9tZS9icm93c2VyL3JlbmRlcmVyX2NvbnRleHRfbWVudS9yZW5kZXJfdmll d19jb250ZXh0X21lbnUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0wNSAxMToy MToyNS44NjkzMDc0MzQgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jaHJvbWUv YnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNj CTIwMjQtMDUtMDUgMTI6MTE6MDcuNTc1NjkwNzg0ICswMjAwCitAQCAtNDA0MywxMCArNDA0Mywx MCBAQAorICAgICBhdXRvZmlsbDo6TG9jYWxGcmFtZVRva2VuIGZyYW1lX3Rva2VuID0gZHJpdmVy LT5HZXRGcmFtZVRva2VuKCk7CisgICAgIGNsaWVudC0+R2V0TWFuYWdlcigpLk9wZW5Db21wb3Nl KAorICAgICAgICAgKmRyaXZlciwKKy0gICAgICAgIGF1dG9maWxsOjpGb3JtR2xvYmFsSWQoCist ICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJZChwYXJhbXNf LmZvcm1fcmVuZGVyZXJfaWQpKSwKKy0gICAgICAgIGF1dG9maWxsOjpGaWVsZEdsb2JhbElkKAor LSAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6RmllbGRSZW5kZXJlcklkKHBhcmFt c18uZmllbGRfcmVuZGVyZXJfaWQpKSwKKysgICAgICAgIGF1dG9maWxsOjpGb3JtR2xvYmFsSWR7 CisrICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJZChwYXJh bXNfLmZvcm1fcmVuZGVyZXJfaWQpfSwKKysgICAgICAgIGF1dG9maWxsOjpGaWVsZEdsb2JhbElk eworKyAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6RmllbGRSZW5kZXJlcklkKHBh cmFtc18uZmllbGRfcmVuZGVyZXJfaWQpfSwKKyAgICAgICAgIGNvbXBvc2U6OkNvbXBvc2VNYW5h Z2VySW1wbDo6VWlFbnRyeVBvaW50OjprQ29udGV4dE1lbnUpOworICAgICBHZXRCcm93c2VyKCkt PndpbmRvdygpLT5Ob3RpZnlQcm9tb0ZlYXR1cmVVc2VkKAorICAgICAgICAgY29tcG9zZTo6ZmVh dHVyZXM6OmtFbmFibGVDb21wb3NlKTsKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jaHJv bWUvYnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25zL3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYy5u b19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTAxIDAxOjQ2OjQ4LjAwMDAwMDAwMCArMDIw MAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nocm9tZS9icm93c2VyL3VpL3dlYl9hcHBs aWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBsLmNjCTIwMjQtMDUtMDUgMTI6MTM6MjIuODE0 ODM5Nzc5ICswMjAwCitAQCAtMTA4LDcgKzEwOCw3IEBACisgICAgICAgICAgICAgICAgICAgICAg Q29udmVydFBhdGhUb1VybChzdWJfYXBwLT5tYW5pZmVzdF9pZF9wYXRoLCBvcmlnaW4pKTsKKyAg ICAgQVNTSUdOX09SX1JFVFVSTihHVVJMIGluc3RhbGxfdXJsLAorICAgICAgICAgICAgICAgICAg ICAgIENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+aW5zdGFsbF91cmxfcGF0aCwgb3JpZ2luKSk7 CistICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUobWFuaWZlc3RfaWQpLCBzdGQ6 Om1vdmUoaW5zdGFsbF91cmwpKTsKKysgICAgc3ViX2FwcHMuZW1wbGFjZV9iYWNrKCkgPSB7c3Rk Ojptb3ZlKG1hbmlmZXN0X2lkKSwgc3RkOjptb3ZlKGluc3RhbGxfdXJsKX07CisgICB9CisgICBy ZXR1cm4gc3ViX2FwcHM7CisgfQorQEAgLTQ0MCw3ICs0NDAsNyBAQAorICAgICAgICAgYmFzZTo6 QmluZE9uY2UoCisgICAgICAgICAgICAgW10od2ViYXBwczo6TWFuaWZlc3RJZCBtYW5pZmVzdF9p ZCwgY29uc3Qgd2ViYXBwczo6QXBwSWQmIGFwcF9pZCwKKyAgICAgICAgICAgICAgICB3ZWJhcHBz OjpJbnN0YWxsUmVzdWx0Q29kZSByZXN1bHRfY29kZSkgeworLSAgICAgICAgICAgICAgcmV0dXJu IFN1YkFwcEluc3RhbGxSZXN1bHQobWFuaWZlc3RfaWQsIGFwcF9pZCwgcmVzdWx0X2NvZGUpOwor KyAgICAgICAgICAgICAgcmV0dXJuIFN1YkFwcEluc3RhbGxSZXN1bHR7bWFuaWZlc3RfaWQsIGFw cF9pZCwgcmVzdWx0X2NvZGV9OworICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgbWFuaWZl c3RfaWQpCisgICAgICAgICAgICAgLlRoZW4oY29uY3VycmVudC5DcmVhdGVDYWxsYmFjaygpKSwK Ky0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxs b2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTA1IDExOjIxOjI1Ljg4ODMwNzc0MyArMDIwMAor KysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxv Y2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9saWdodHdlaWdodF9xdWFyYW50aW5lLmNjCTIwMjQt MDUtMDUgMTI6MTc6MDcuNjU4MDg3MTAwICswMjAwCitAQCAtNzMsNyArNzMsNyBAQAorICAgICAv LyBzeW5jaHJvbml6YXRpb24gYmV0d2VlbiB0aGUgcm9vdCBhbmQgYnJhbmNoLCBzbyBgYnJhbmNo X3NpemVfaW5fYnl0ZXNfYAorICAgICAvLyBtYXkgYmUgbGFyZ2VyIHRoYW4gYHJvb3RfLmNhcGFj aXR5X2luX2J5dGVzX2AgYXQgdGhpcyBwb2ludC4KKyAKKy0gICAgc2xvdHNfLmVtcGxhY2VfYmFj ayhzbG90X3N0YXJ0LCB1c2FibGVfc2l6ZSk7CisrICAgIHNsb3RzXy5lbXBsYWNlX2JhY2soKSA9 IHtzbG90X3N0YXJ0LCB1c2FibGVfc2l6ZX07CisgCisgICAgIC8vIFN3YXAgcmFuZG9tbHkgc28g dGhhdCB0aGUgcXVhcmFudGluZSBsaXN0IHJlbWFpbiBzaHVmZmxlZC4KKyAgICAgLy8gVGhpcyBp cyBub3QgdW5pZm9ybWx5IHJhbmRvbSwgYnV0IHN1ZmZpY2llbnRseSByYW5kb20uCitkaWZmIC11 cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3JlcG9ydGlu Zy9yZWdpc3RyYXRpb25faW5mby5jYy5tZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25l bnRzL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9yZWdpc3RyYXRpb25faW5mby5jYworLS0tIGNocm9t aXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0aW5nL3JlZ2lz dHJhdGlvbl9pbmZvLmNjLm1lCTIwMjQtMDUtMDYgMTI6MDA6NTIuOTQ3NjUyMTIyICswMjAwCisr KysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdHRyaWJ1dGlvbl9yZXBvcnRp bmcvcmVnaXN0cmF0aW9uX2luZm8uY2MJMjAyNC0wNS0wNiAxMjowMTowNi44Mjk5NzAxMzcgKzAy MDAKK0BAIC05Niw3ICs5Niw3IEBAIFJlZ2lzdHJhdGlvbkluZm86OlBhcnNlSW5mbyhjb25zdCBu ZXQ6OnMKKyAKKyAgIEFTU0lHTl9PUl9SRVRVUk4oYm9vbCByZXBvcnRfaGVhZGVyX2Vycm9ycywg UGFyc2VSZXBvcnRIZWFkZXJFcnJvcnMoZGljdCkpOworIAorLSAgcmV0dXJuIFJlZ2lzdHJhdGlv bkluZm8ocHJlZmVycmVkX3BsYXRmb3JtLCByZXBvcnRfaGVhZGVyX2Vycm9ycyk7CisrICByZXR1 cm4gUmVnaXN0cmF0aW9uSW5mb3twcmVmZXJyZWRfcGxhdGZvcm0sIHJlcG9ydF9oZWFkZXJfZXJy b3JzfTsKKyB9CisgCisgfSAgLy8gbmFtZXNwYWNlIGF0dHJpYnV0aW9uX3JlcG9ydGluZworZGlm ZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9z aGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmgubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvZ3B1L2Nv bW1hbmRfYnVmZmVyL2NsaWVudC9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmgKKy0tLSBjaHJvbWl1 bS0xMjQuMC42MzY3LjExOC9ncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L3NoYXJlZF9pbWFnZV9p bnRlcmZhY2UuaC5tZQkyMDI0LTA1LTA2IDA5OjUzOjEwLjc1NTc4MTM5MiArMDIwMAorKysrIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4L2dwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvc2hhcmVkX2lt YWdlX2ludGVyZmFjZS5oCTIwMjQtMDUtMDYgMDk6NTQ6NDIuMjgwNTg2Mjc1ICswMjAwCitAQCAt NjQsMTkgKzY0LDE5IEBAIHN0cnVjdCBTaGFyZWRJbWFnZUluZm8geworICAgICAgICAgICAgICAg ICAgIFNrQWxwaGFUeXBlIGFscGhhX3R5cGUsCisgICAgICAgICAgICAgICAgICAgdWludDMyX3Qg dXNhZ2UsCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJpbmdfdmlldyBkZWJ1Z19sYWJlbCkK Ky0gICAgICA6IG1ldGEoZm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4s IGFscGhhX3R5cGUsIHVzYWdlKSwKKysgICAgICA6IG1ldGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9z cGFjZSwgc3VyZmFjZV9vcmlnaW4sIGFscGhhX3R5cGUsIHVzYWdlfSwKKyAgICAgICAgIGRlYnVn X2xhYmVsKGRlYnVnX2xhYmVsKSB7fQorICAgU2hhcmVkSW1hZ2VJbmZvKGNvbnN0IHZpejo6U2hh cmVkSW1hZ2VGb3JtYXQmIGZvcm1hdCwKKyAgICAgICAgICAgICAgICAgICBnZng6OlNpemUgc2l6 ZSwKKyAgICAgICAgICAgICAgICAgICBjb25zdCBnZng6OkNvbG9yU3BhY2UmIGNvbG9yX3NwYWNl LAorICAgICAgICAgICAgICAgICAgIHVpbnQzMl90IHVzYWdlLAorICAgICAgICAgICAgICAgICAg IHN0ZDo6c3RyaW5nX3ZpZXcgZGVidWdfbGFiZWwpCistICAgICAgOiBtZXRhKGZvcm1hdCwKKysg ICAgICA6IG1ldGF7Zm9ybWF0LAorICAgICAgICAgICAgICBzaXplLAorICAgICAgICAgICAgICBj b2xvcl9zcGFjZSwKKyAgICAgICAgICAgICAga1RvcExlZnRfR3JTdXJmYWNlT3JpZ2luLAorICAg ICAgICAgICAgICBrUHJlbXVsX1NrQWxwaGFUeXBlLAorLSAgICAgICAgICAgICB1c2FnZSksCisr ICAgICAgICAgICAgIHVzYWdlfSwKKyAgICAgICAgIGRlYnVnX2xhYmVsKGRlYnVnX2xhYmVsKSB7 fQorICAgLy8gVGhpcyBjb25zdHJ1Y3RvciBleGlzdHMgb25seSB0byBzdXBwb3J0IHRoZSBERVBS RUNBVEVEIENyZWFyZVNoYXJlZEltYWdlCisgICAvLyBjYWxsIGJlbG93IHRoYXQgYWNjZXB0cyBh IEdwdU1lbW9yeUJ1ZmZlci4gVGhpcyBzaG91bGQgYmUgcmVtb3ZlZCB3aGVuIHRoYXQKK2RpZmYg LXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL3No YXJlZF9pbWFnZV9pbnRlcmZhY2VfaW5fcHJvY2Vzcy5jYy5tZSBjaHJvbWl1bS0xMjQuMC42MzY3 LjExOC9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2lu X3Byb2Nlc3MuY2MKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9ncHUvY29tbWFuZF9idWZm ZXIvc2VydmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nlc3MuY2MubWUJMjAyNC0w NS0wNiAxMTowNTozNi45NzQzNTAwNjEgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjEx OC9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3By b2Nlc3MuY2MJMjAyNC0wNS0wNiAxMTowNjowNS44NDgwNDU2OTcgKzAyMDAKK0BAIC01NzksMTEg KzU3OSwxMSBAQCBTaGFyZWRJbWFnZUludGVyZmFjZUluUHJvY2Vzczo6Q3JlYXRlU2hhCisgCisg ICByZXR1cm4gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAorICAgICAg IG1haWxib3gsCistICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YSgKKysgICAgICBTaGFyZWRJbWFn ZU1ldGFkYXRheworICAgICAgICAgICB2aXo6OkdldFNpbmdsZVBsYW5lU2hhcmVkSW1hZ2VGb3Jt YXQoZ3B1X21lbW9yeV9idWZmZXItPkdldEZvcm1hdCgpKSwKKyAgICAgICAgICAgZ3B1X21lbW9y eV9idWZmZXItPkdldFNpemUoKSwgc2lfaW5mby5tZXRhLmNvbG9yX3NwYWNlLAorICAgICAgICAg ICBzaV9pbmZvLm1ldGEuc3VyZmFjZV9vcmlnaW4sIHNpX2luZm8ubWV0YS5hbHBoYV90eXBlLAor LSAgICAgICAgICBzaV9pbmZvLm1ldGEudXNhZ2UpLAorKyAgICAgICAgICBzaV9pbmZvLm1ldGEu dXNhZ2V9LAorICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXyk7CisgfQor IAorZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvZ3B1L2lwYy9jbGllbnQvY2xpZW50 X3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvZ3B1 L2lwYy9jbGllbnQvY2xpZW50X3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MKKy0tLSBjaHJvbWl1 bS0xMjQuMC42MzY3LjExOC9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hhcmVkX2ltYWdlX2ludGVy ZmFjZS5jYy5tZQkyMDI0LTA1LTA2IDEwOjEyOjQ3LjA2NzkyNTM2NSArMDIwMAorKysrIGNocm9t aXVtLTEyNC4wLjYzNjcuMTE4L2dwdS9pcGMvY2xpZW50L2NsaWVudF9zaGFyZWRfaW1hZ2VfaW50 ZXJmYWNlLmNjCTIwMjQtMDUtMDYgMTA6MTM6NTYuNTY4NjI3MTkwICswMjAwCitAQCAtMjM4LDEx ICsyMzgsMTEgQEAgc2NvcGVkX3JlZnB0cjxDbGllbnRTaGFyZWRJbWFnZT4gQ2xpZW50UworICAg ICAgIEFkZE1haWxib3gocHJveHlfLT5DcmVhdGVTaGFyZWRJbWFnZSgKKyAgICAgICAgICAgYnVm ZmVyX2Zvcm1hdCwgcGxhbmUsIGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRTaXplKCksIHNpX2luZm8s CisgICAgICAgICAgIGdwdV9tZW1vcnlfYnVmZmVyLT5DbG9uZUhhbmRsZSgpKSksCistICAgICAg U2hhcmVkSW1hZ2VNZXRhZGF0YSh2aXo6OkdldFNpbmdsZVBsYW5lU2hhcmVkSW1hZ2VGb3JtYXQo CisrICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YXt2aXo6OkdldFNpbmdsZVBsYW5lU2hhcmVkSW1h Z2VGb3JtYXQoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2V0UGxhbmVCdWZmZXJG b3JtYXQocGxhbmUsIGJ1ZmZlcl9mb3JtYXQpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg IGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRTaXplKCksCisgICAgICAgICAgICAgICAgICAgICAgICAg ICBzaV9pbmZvLm1ldGEuY29sb3Jfc3BhY2UsIHNpX2luZm8ubWV0YS5zdXJmYWNlX29yaWdpbiwK Ky0gICAgICAgICAgICAgICAgICAgICAgICAgIHNpX2luZm8ubWV0YS5hbHBoYV90eXBlLCBzaV9p bmZvLm1ldGEudXNhZ2UpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2lfaW5mby5tZXRh LmFscGhhX3R5cGUsIHNpX2luZm8ubWV0YS51c2FnZX0sCisgICAgICAgR2VuVW52ZXJpZmllZFN5 bmNUb2tlbigpLCBob2xkZXJfLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0VHlwZSgpKTsKKyB9Cisg CitAQCAtMjc3LDEzICsyNzcsMTMgQEAgQ2xpZW50U2hhcmVkSW1hZ2VJbnRlcmZhY2U6OkNyZWF0 ZVN3YXBDaAorICAgcmV0dXJuIENsaWVudFNoYXJlZEltYWdlSW50ZXJmYWNlOjpTd2FwQ2hhaW5T aGFyZWRJbWFnZXMoCisgICAgICAgYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1h Z2U+KAorICAgICAgICAgICBtYWlsYm94ZXMuZnJvbnRfYnVmZmVyLAorLSAgICAgICAgICBTaGFy ZWRJbWFnZU1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2lu LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysg ICAgICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBz dXJmYWNlX29yaWdpbiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBl LCB1c2FnZX0sCisgICAgICAgICAgIHN5bmNfdG9rZW4sIGhvbGRlcl8pLAorICAgICAgIGJhc2U6 Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKKyAgICAgICAgICAgbWFpbGJveGVz LmJhY2tfYnVmZmVyLAorLSAgICAgICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhKGZvcm1hdCwgc2l6 ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGFscGhhX3R5cGUsIHVzYWdlKSwKKysgICAgICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0 YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZX0sCisgICAgICAgICAgIHN5bmNf dG9rZW4sIGhvbGRlcl8pKTsKKyB9CisgCitAQCAtMzM5LDggKzMzOSw4IEBAIHNjb3BlZF9yZWZw dHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVudFMKKyAKKyAgIHJldHVybiBiYXNlOjpNYWtlUmVm Q291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCisgICAgICAgbWFpbGJveCwKKy0gICAgICBTaGFy ZWRJbWFnZU1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2lu LCBhbHBoYV90eXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2UpLAorKyAgICAg IFNoYXJlZEltYWdlTWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9v cmlnaW4sIGFscGhhX3R5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICB1c2FnZX0sCisg ICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xkZXJfKTsKKyB9CisgCitkaWZmIC11 cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb250ZW50L2Jyb3dzZXIvZ3B1L2NvbXBvc2l0b3Jf dXRpbC5jYy5tZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb250ZW50L2Jyb3dzZXIvZ3B1L2Nv bXBvc2l0b3JfdXRpbC5jYworLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbnRlbnQvYnJv d3Nlci9ncHUvY29tcG9zaXRvcl91dGlsLmNjLm1lCTIwMjQtMDUtMDcgMTM6MzQ6MzAuMzg0NTgw OTA1ICswMjAwCisrKysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29udGVudC9icm93c2VyL2dw dS9jb21wb3NpdG9yX3V0aWwuY2MJMjAyNC0wNS0wNyAxMzozOToyNC4yMTkxMzI3MzMgKzAyMDAK K0BAIC0xMDgsNyArMTA4LDcgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZl YXR1cgorICAgICAgICpiYXNlOjpDb21tYW5kTGluZTo6Rm9yQ3VycmVudFByb2Nlc3MoKTsKKyAK KyAgIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBmZWF0dXJlczsKKy0gIGZlYXR1cmVzLmVt cGxhY2VfYmFjaygKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICIyZF9j YW52YXMiLAorICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBncHVfZmVh dHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTLAor QEAgLTExNiwxMyArMTE2LDEzIEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVG ZWF0dXIKKyAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAgICAgICAgICAgIkFjY2VsZXJh dGVkIDJEIGNhbnZhcyBpcyB1bmF2YWlsYWJsZTogZWl0aGVyIGRpc2FibGVkICIKKyAgICAgICAg ICAgInZpYSBibG9ja2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0gICAgICB0cnVlKTsK Ky0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsKKysgIGZlYXR1cmVzLmVt cGxhY2VfYmFjaygpID0geworICAgICAgICJjYW52YXNfb29wX3Jhc3Rlcml6YXRpb24iLAorICAg ICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBn cHU6OkdQVV9GRUFUVVJFX1RZUEVfQ0FOVkFTX09PUF9SQVNURVJJWkFUSU9OLAorLSAgICAgICAg ICBjb21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJsZUFjY2VsZXJhdGVkMmRD YW52YXMpKSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICAgICAgICAgIGNvbW1hbmRf bGluZS5IYXNTd2l0Y2goc3dpdGNoZXM6OmtEaXNhYmxlQWNjZWxlcmF0ZWQyZENhbnZhcykpfTsK KysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJncHVfY29tcG9zaXRpbmci LAorICAgICAgIC8vIFRPRE8ocml2cik6IFJlcGxhY2Ugd2l0aCBhIGNoZWNrIHRvIHNlZSB3aGlj aCBiYWNrZW5kIGlzIHVzZWQgZm9yCisgICAgICAgLy8gY29tcG9zaXRpbmc7IGRvIHRoZSBzYW1l IGZvciBHUFUgcmFzdGVyaXphdGlvbiBpZiBpdCdzIGVuYWJsZWQuIEZvcgorQEAgLTEzNiwxNiAr MTM2LDE2IEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKKyAgICAg ICAgICAgImFib3V0OmZsYWdzICIKKyAgICAgICAgICAgIm9yIHRoZSBjb21tYW5kIGxpbmUuIFRo ZSBicm93c2VyIHdpbGwgZmFsbCBiYWNrIHRvIHNvZnR3YXJlICIKKyAgICAgICAgICAgImNvbXBv c2l0aW5nIGFuZCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gd2lsbCBiZSB1bmF2YWlsYWJsZS4iKSwK Ky0gICAgICB0cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsK KysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJ3ZWJnbCIsCisgICAgICAg U2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfV0VCR0wsCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLkhhc1N3aXRjaChzd2l0Y2hlczo6 a0Rpc2FibGVXZWJHTCkpLAorICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAorICAgICAgICAg ICAiV2ViR0wgaGFzIGJlZW4gZGlzYWJsZWQgdmlhIGJsb2NrbGlzdCBvciB0aGUgY29tbWFuZCBs aW5lLiIpLAorLSAgICAgIGZhbHNlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAg ICBmYWxzZX07CisrICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAidmlkZW9f ZGVjb2RlIiwKKyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKKyAgICAgICAgICAgZ3B1X2Zl YXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1ZJREVPX0RFQ09E RSwKK0BAIC0xNTYsOCArMTU2LDggQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdw dUZlYXR1cgorICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAorICAgICAgICAgICAiQWNjZWxl cmF0ZWQgdmlkZW8gZGVjb2RlIGhhcyBiZWVuIGRpc2FibGVkLCBlaXRoZXIgdmlhIGJsb2NrbGlz dCwgIgorICAgICAgICAgICAiYWJvdXQ6ZmxhZ3Mgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0g ICAgICB0cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsKKysg IGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJ2aWRlb19lbmNvZGUiLAorICAg ICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBn cHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfVklERU9fRU5DT0RFLAorQEAgLTE2OSwz MyArMTY5LDMzIEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKKyAg ICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAgICAgICAgICAgIkFjY2VsZXJhdGVkIHZpZGVv IGVuY29kZSBoYXMgYmVlbiBkaXNhYmxlZCwgZWl0aGVyIHZpYSBibG9ja2xpc3QsICIKKyAgICAg ICAgICAgImFib3V0OmZsYWdzIG9yIHRoZSBjb21tYW5kIGxpbmUuIiksCistICAgICAgdHJ1ZSk7 CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICAgICAgdHJ1ZX07CisrICBmZWF0dXJlcy5l bXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAicmFzdGVyaXphdGlvbiIsCisgICAgICAgU2FmZUdl dEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBncHU6OkdQVV9GRUFUVVJFX1RZUEVfR1BVX1RJTEVfUkFTVEVSSVpBVElPTiksCisgICAg ICAgRGlzYWJsZUluZm86OlByb2JsZW0oCisgICAgICAgICAgICJBY2NlbGVyYXRlZCByYXN0ZXJp emF0aW9uIGhhcyBiZWVuIGRpc2FibGVkLCBlaXRoZXIgdmlhIGJsb2NrbGlzdCwgIgorICAgICAg ICAgICAiYWJvdXQ6ZmxhZ3Mgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0gICAgICB0cnVlKTsK Ky0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVlfTsKKysgIGZlYXR1cmVzLmVt cGxhY2VfYmFjaygpID0geworICAgICAgICJvcGVuZ2wiLCBTYWZlR2V0RmVhdHVyZVN0YXR1cyhn cHVfZmVhdHVyZV9pbmZvLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBn cHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfR0wpKTsKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX0dM KX07CisgI2lmIEJVSUxERkxBRyhFTkFCTEVfVlVMS0FOKQorLSAgZmVhdHVyZXMuZW1wbGFjZV9i YWNrKAorKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgInZ1bGthbiIsCist ICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVB VFVSRV9UWVBFX1ZVTEtBTikpOworKyAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0 dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9WVUxLQU4pfTsKKyAjZW5kaWYKKy0gIGZl YXR1cmVzLmVtcGxhY2VfYmFjaygKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAg ICAgICJtdWx0aXBsZV9yYXN0ZXJfdGhyZWFkcyIsCistICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0 dXMoTnVtYmVyT2ZSZW5kZXJlclJhc3RlclRocmVhZHMoKSA+IDEpKTsKKysgICAgICBHZXRGYWtl RmVhdHVyZVN0YXR1cyhOdW1iZXJPZlJlbmRlcmVyUmFzdGVyVGhyZWFkcygpID4gMSl9OworICNp ZiBCVUlMREZMQUcoSVNfQU5EUk9JRCkKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgIGZl YXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJzdXJmYWNlX2NvbnRyb2wiLAorICAg ICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FORFJPSURfU1VSRkFDRV9DT05U Uk9MKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBF X0FORFJPSURfU1VSRkFDRV9DT05UUk9MKX07CisgI2VuZGlmCistICBmZWF0dXJlcy5lbXBsYWNl X2JhY2soCisrICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAid2ViZ2wyIiwK KyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKKyAgICAgICAgICAgZ3B1X2ZlYXR1cmVfaW5m bywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1dFQkdMMiwKK0BAIC0yMDMsMTIg KzIwMywxMiBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4gR2V0R3B1RmVhdHVyCisgICAg ICAgICAgICAgICBjb21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJsZVdlYkdM MikpLAorICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAorICAgICAgICAgICAiV2ViR0wyIGhh cyBiZWVuIGRpc2FibGVkIHZpYSBibG9ja2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKKy0g ICAgICBmYWxzZSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soInJhd19kcmF3IiwKKy0gICAg ICAgICAgICAgICAgICAgICAgICBHZXRGYWtlRmVhdHVyZVN0YXR1cyhmZWF0dXJlczo6SXNVc2lu Z1Jhd0RyYXcoKSkpOworLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCJkaXJlY3RfcmVuZGVyaW5n X2Rpc3BsYXlfY29tcG9zaXRvciIsCistICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZl YXR1cmVTdGF0dXMoZmVhdHVyZXM6OklzRHJEY0VuYWJsZWQoKSkpOworLSAgZmVhdHVyZXMuZW1w bGFjZV9iYWNrKAorKyAgICAgIGZhbHNlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0g eyJyYXdfZHJhdyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0 dXMoZmVhdHVyZXM6OklzVXNpbmdSYXdEcmF3KCkpfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFj aygpID0geyJkaXJlY3RfcmVuZGVyaW5nX2Rpc3BsYXlfY29tcG9zaXRvciIsCisrICAgICAgICAg ICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVhdHVyZXM6OklzRHJEY0VuYWJs ZWQoKSl9OworKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgIndlYmdwdSIs CisgICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoCisgICAgICAgICAgIGdwdV9mZWF0dXJlX2lu Zm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9BQ0NFTEVSQVRFRF9XRUJHUFUsCitAQCAtMjE2LDE0 ICsyMTYsMTQgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1cgorICAg ICAgICAgICAgICAgIWJhc2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJsZWQoOjpmZWF0dXJlczo6a1dl YkdQVVNlcnZpY2UpKSwKKyAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAgICAgICAgICAg IldlYkdQVSBoYXMgYmVlbiBkaXNhYmxlZCB2aWEgYmxvY2tsaXN0IG9yIHRoZSBjb21tYW5kIGxp bmUuIiksCistICAgICAgZmFsc2UpOworLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAorKyAgICAg IGZhbHNlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJza2lhX2dy YXBoaXRlIiwKKyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cyhncHVfZmVhdHVyZV9pbmZvLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9TS0lBX0dS QVBISVRFKSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1NLSUFfR1JBUEhJVEUpfTsKKysgIGZlYXR1 cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJ3ZWJubiIsCistICAgICAgU2FmZUdldEZl YXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1dFQk5O KSk7CisrICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpH UFVfRkVBVFVSRV9UWVBFX1dFQk5OKX07CisgICByZXR1cm4gZmVhdHVyZXM7CisgfQorIAorZGlm ZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv bW9kdWxlcy9tZWRpYS9hdWRpby9hdWRpb19yZW5kZXJlcl9taXhlcl9tYW5hZ2VyLmNjLm1lIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMv bWVkaWEvYXVkaW8vYXVkaW9fcmVuZGVyZXJfbWl4ZXJfbWFuYWdlci5jYworLS0tIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWEv YXVkaW8vYXVkaW9fcmVuZGVyZXJfbWl4ZXJfbWFuYWdlci5jYy5tZQkyMDI0LTA1LTA3IDE3OjM2 OjU0Ljg4NDMwMzU2MSArMDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWEvYXVkaW8vYXVkaW9fcmVuZGVyZXJfbWl4 ZXJfbWFuYWdlci5jYwkyMDI0LTA1LTA3IDE3OjM4OjI2Ljk1NDE1NzkyOCArMDIwMAorQEAgLTE3 MSw4ICsxNzEsOCBAQCBBdWRpb1JlbmRlcmVyTWl4ZXIqIEF1ZGlvUmVuZGVyZXJNaXhlck1hCisg ICAgIERWTE9HKDEpIDw8ICJOb3QgcmV1c2luZyBtaXhlciB3aXRoIGVycm9yczogIiA8PCBpdC0+ c2Vjb25kLm1peGVyOworIAorICAgICAvLyBNb3ZlIGJhZCBtaXhlcnMgb3V0IG9mIHRoZSByZXVz ZSBtYXAuCistICAgIGRlYWRfbWl4ZXJzXy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGl0LT5zZWNv bmQubWl4ZXIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0LT5zZWNvbmQucmVm X2NvdW50KTsKKysgICAgZGVhZF9taXhlcnNfLmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShp dC0+c2Vjb25kLm1peGVyKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+c2Vj b25kLnJlZl9jb3VudH07CisgICAgIG1peGVyc18uZXJhc2UoaXQpOworICAgfQorIAorQEAgLTIx OCw3ICsyMTgsNyBAQCB2b2lkIEF1ZGlvUmVuZGVyZXJNaXhlck1hbmFnZXI6OlJldHVybk1pCisg ICAgIH0KKyAgIH0gZWxzZSBpZiAoZGVhZF9pdCA9PSBkZWFkX21peGVyc18uZW5kKCkgJiYgbWl4 ZXJfcmVmLm1peGVyLT5IYXNTaW5rRXJyb3IoKSkgeworICAgICAvLyBNb3ZlIGJhZCBtaXhlcnMg b3V0IG9mIHRoZSByZXVzZSBtYXAuCistICAgIGRlYWRfbWl4ZXJzXy5lbXBsYWNlX2JhY2soc3Rk Ojptb3ZlKG1peGVyX3JlZi5taXhlciksIG1peGVyX3JlZi5yZWZfY291bnQpOworKyAgICBkZWFk X21peGVyc18uZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKG1peGVyX3JlZi5taXhlciksIG1p eGVyX3JlZi5yZWZfY291bnR9OworICAgICBtaXhlcnNfLmVyYXNlKGl0KTsKKyAgIH0KKyB9Cgpk aWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI0LXB5dGhvbjMtYXNzaWdubWVudC1leHByZXNzaW9ucy5w YXRjaCBiL2Nocm9taXVtLTEyNC1weXRob24zLWFzc2lnbm1lbnQtZXhwcmVzc2lvbnMucGF0Y2gK ZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYxY2UwMzcuLjAwMDAwMDAKLS0tIGEvY2hy b21pdW0tMTI0LXB5dGhvbjMtYXNzaWdubWVudC1leHByZXNzaW9ucy5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDEzICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNTcvdG9v bHMvanNvbl90b19zdHJ1Y3QvanNvbl90b19zdHJ1Y3QucHkubWUgY2hyb21pdW0tMTIyLjAuNjI2 MS41Ny90b29scy9qc29uX3RvX3N0cnVjdC9qc29uX3RvX3N0cnVjdC5weQotLS0tIGNocm9taXVt LTEyMi4wLjYyNjEuNTcvdG9vbHMvanNvbl90b19zdHJ1Y3QvanNvbl90b19zdHJ1Y3QucHkubWUJ MjAyNC0wMi0yMyAxMjowNDo0NS40NTE0MjM5OTUgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42 MjYxLjU3L3Rvb2xzL2pzb25fdG9fc3RydWN0L2pzb25fdG9fc3RydWN0LnB5CTIwMjQtMDItMjMg MTI6MTg6MDQuMDk5ODI0MzkyICswMTAwCi1AQCAtMTI0LDcgKzEyNCw4IEBAIGRlZiBfR2VuZXJh dGVIKGJhc2VwYXRoLCBmaWxlcm9vdCwgaGVhZCwKLSAgICAgZi53cml0ZSh1JyNpbmNsdWRlIDxj c3RkZGVmPlxuJykKLSAgICAgZi53cml0ZSh1J1xuJykKLSAKLS0gICAgaWYgc3lzdGVtX2hlYWRl cnMgOj0gc2NoZW1hLmdldCh1J3N5c3RlbS1oZWFkZXJzJywgW10pOgotKyAgICBzeXN0ZW1faGVh ZGVycyA9IHNjaGVtYS5nZXQodSdzeXN0ZW0taGVhZGVycycsIFtdKQotKyAgICBpZiBzeXN0ZW1f aGVhZGVyczoKLSAgICAgICBmb3IgaGVhZGVyIGluIHN5c3RlbV9oZWFkZXJzOgotICAgICAgICAg Zi53cml0ZSh1JyNpbmNsdWRlIDwlcz5cbicgJSBoZWFkZXIpCi0gICAgICAgZi53cml0ZSh1J1xu JykKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjQtcnVzdC1jbGFuZ19saWIucGF0Y2ggYi9jaHJv bWl1bS0xMjQtcnVzdC1jbGFuZ19saWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXgg MDAwMDAwMC4uY2MxNTJlYwotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyNC1ydXN0LWNs YW5nX2xpYi5wYXRjaApAQCAtMCwwICsxLDU1IEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjEuMC42 MTY3LjU3L2J1aWxkL2NvbmZpZy9jbGFuZy9CVUlMRC5nbi5ydXN0LWNsYW5nX2xpYiBjaHJvbWl1 bS0xMjEuMC42MTY3LjU3L2J1aWxkL2NvbmZpZy9jbGFuZy9CVUlMRC5nbgorLS0tIGNocm9taXVt LTEyMS4wLjYxNjcuNTcvYnVpbGQvY29uZmlnL2NsYW5nL0JVSUxELmduLnJ1c3QtY2xhbmdfbGli CTIwMjQtMDEtMTAgMTY6NDM6MDEuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIxLjAu NjE2Ny41Ny9idWlsZC9jb25maWcvY2xhbmcvQlVJTEQuZ24JMjAyNC0wMS0yMCAxOTo1MTozOC40 ODE5OTI3OTkgKzAxMDAKK0BAIC0xMTIsNiArMTEyLDcgQEAgdGVtcGxhdGUoImNsYW5nX2xpYiIp IHsKKyAgICAgICBfcHJlZml4ID0gImxpYiIKKyAgICAgICBfc3VmZml4ID0gIiIKKyAgICAgICBf ZXh0ID0gImEiCisrICAgICAgX2xpYnByZWZpeCA9ICIiCisgICAgICAgaWYgKGlzX3dpbikgewor ICAgICAgICAgX2RpciA9ICJ3aW5kb3dzIgorICAgICAgICAgX3ByZWZpeCA9ICIiCitAQCAtMTI3 LDcgKzEyOCwzMyBAQCB0ZW1wbGF0ZSgiY2xhbmdfbGliIikgeworICAgICAgICAgfQorICAgICAg IH0gZWxzZSBpZiAoaXNfYXBwbGUpIHsKKyAgICAgICAgIF9kaXIgPSAiZGFyd2luIgorLSAgICAg IH0gZWxzZSBpZiAoaXNfbGludXggfHwgaXNfY2hyb21lb3MpIHsKKysgICAgICB9IGVsc2UgaWYg KGlzX2xpbnV4KSB7CisrICAgICAgICBpZiAoY3VycmVudF9jcHUgPT0gIng2NCIpIHsKKysgICAg ICAgICAgX2RpciA9ICJ4ODZfNjQtcmVkaGF0LWxpbnV4LWdudSIKKysgICAgICAgICAgX3N1ZmZp eCA9Ii14ODZfNjQiCisrICAgICAgICB9IGVsc2UgaWYgKGN1cnJlbnRfY3B1ID09ICJ4ODYiKSB7 CisrICAgICAgICAgIF9kaXIgPSAiaTM4Ni1yZWRoYXQtbGludXgtZ251IgorKyAgICAgICAgICBf c3VmZml4ID0gIi1pMzg2IgorKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50X2NwdSA9PSAiYXJt NjQiKSB7CisrICAgICAgICAgIF9kaXIgPSAiYWFyY2g2NC1yZWRoYXQtbGludXgtZ251IgorKyAg ICAgICAgICBfc3VmZml4ID0gIi1hYXJjaDY0IgorKyAgICAgICAgfSBlbHNlIGlmIChjdXJyZW50 X2NwdSA9PSAiYXJtIikgeworKyAgICAgICAgICBfZGlyID0gImFybWhmLXJlZGhhdC1saW51eC1n bnUiCisrICAgICAgICAgIF9zdWZmaXggPSAiLWFybWhmIgorKyAgICAgICAgfSBlbHNlIGlmIChj dXJyZW50X2NwdSA9PSAicHBjNjQiKSB7CisrICAgICAgICAgIF9kaXIgPSAicHBjNjRsZS1yZWRo YXQtbGludXgtZ251IgorKyAgICAgICAgICBfc3VmZml4ID0gIi1wcGM2NGxlIgorKyAgICAgICAg fSBlbHNlIHsKKysgICAgICAgICAgYXNzZXJ0KGZhbHNlKSAgIyBVbmhhbmRsZWQgY3B1IHR5cGUK KysgICAgICAgIH0KKysgICAgICAgICMgZGlmZmVyZW50IGNsYW5nIGxpYiBkaXIgaW4gZmVkb3Jh L2VwZWwKKysgICAgICAgIGlmIChjbGFuZ192ZXJzaW9uID09ICIxNyIgfHwgY2xhbmdfdmVyc2lv biA9PSAiMTgiKSB7CisrICAgICAgICAgIF9zdWZmaXggPSAiIgorKyAgICAgICAgfSBlbHNlIGlm IChjbGFuZ192ZXJzaW9uID09ICIxNCIgfHwgY2xhbmdfdmVyc2lvbiA9PSAiMTUiIHx8IGNsYW5n X3ZlcnNpb24gPT0gIjE2IikgeworKyAgICAgICAgICBfbGlicHJlZml4ID0gIjY0IgorKyAgICAg ICAgICBfZGlyID0gIiIKKysgICAgICAgIH0KKysgICAgICB9IGVsc2UgaWYgKGlzX2Nocm9tZW9z KSB7CisgICAgICAgICBpZiAoY3VycmVudF9jcHUgPT0gIng2NCIpIHsKKyAgICAgICAgICAgX2Rp ciA9ICJ4ODZfNjQtdW5rbm93bi1saW51eC1nbnUiCisgICAgICAgICB9IGVsc2UgaWYgKGN1cnJl bnRfY3B1ID09ICJ4ODYiKSB7CitAQCAtMTY2LDcgKzE5Myw3IEBAIHRlbXBsYXRlKCJjbGFuZ19s aWIiKSB7CisgICAgICAgICBhc3NlcnQoZmFsc2UpICAjIFVuaGFuZGxlZCB0YXJnZXQgcGxhdGZv cm0KKyAgICAgICB9CisgCistICAgICAgX2NsYW5nX2xpYl9kaXIgPSAiJGNsYW5nX2Jhc2VfcGF0 aC9saWIvY2xhbmcvJGNsYW5nX3ZlcnNpb24vbGliIgorKyAgICAgIF9jbGFuZ19saWJfZGlyID0g IiRjbGFuZ19iYXNlX3BhdGgvbGliJHtfbGlicHJlZml4fS9jbGFuZy8kY2xhbmdfdmVyc2lvbi9s aWIiCisgICAgICAgX2xpYl9maWxlID0gIiR7X3ByZWZpeH1jbGFuZ19ydC4ke19saWJuYW1lfSR7 X3N1ZmZpeH0uJHtfZXh0fSIKKyAgICAgICBsaWJzID0gWyAiJF9jbGFuZ19saWJfZGlyLyRfZGly LyRfbGliX2ZpbGUiIF0KKyAgICAgfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNC10eXBlbmFt ZS5wYXRjaCBiL2Nocm9taXVtLTEyNC10eXBlbmFtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi5hNGM3MzY0Ci0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI0 LXR5cGVuYW1lLnBhdGNoCkBAIC0wLDAgKzEsNDI5IEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjQu MC42MzY3LjExOC9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRp b25fYWxsb2MvaW50ZXJuYWxfYWxsb2NhdG9yLmgudHlwZW5hbWUgY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2Fs bG9jL2ludGVybmFsX2FsbG9jYXRvci5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvYmFz ZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2ludGVy bmFsX2FsbG9jYXRvci5oLnR5cGVuYW1lCTIwMjQtMDUtMDEgMDE6NDY6NDAuMDAwMDAwMDAwICsw MjAwCisrKysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9u X2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvci5oCTIwMjQt MDUtMDUgMTY6MzI6NTcuMzc3NjU0MDQzICswMjAwCitAQCAtMjYsNyArMjYsNyBAQCBQYXJ0aXRp b25Sb290JiBJbnRlcm5hbEFsbG9jYXRvclJvb3QoKTsKKyAKKyAvLyBBIGNsYXNzIHRoYXQgbWVl dHMgQysrIG5hbWVkIHJlcXVpcmVtZW50cywgQWxsb2NhdG9yLgorIHRlbXBsYXRlIDx0eXBlbmFt ZSBUPgorLUludGVybmFsQWxsb2NhdG9yPFQ+Ojp2YWx1ZV90eXBlKiBJbnRlcm5hbEFsbG9jYXRv cjxUPjo6YWxsb2NhdGUoCisrdHlwZW5hbWUgSW50ZXJuYWxBbGxvY2F0b3I8VD46OnZhbHVlX3R5 cGUqIEludGVybmFsQWxsb2NhdG9yPFQ+OjphbGxvY2F0ZSgKKyAgICAgc3RkOjpzaXplX3QgY291 bnQpIHsKKyAgIFBBX0NIRUNLKGNvdW50IDw9CisgICAgICAgICAgICBzdGQ6Om51bWVyaWNfbGlt aXRzPHN0ZDo6c2l6ZV90Pjo6bWF4KCkgLyBzaXplb2YodmFsdWVfdHlwZSkpOworZGlmZiAtdXAg Y2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvYmFzZS9jb250YWluZXJzL2hlYXBfYXJyYXkuaC50eXBl bmFtZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9iYXNlL2NvbnRhaW5lcnMvaGVhcF9hcnJheS5o CistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvYmFzZS9jb250YWluZXJzL2hlYXBfYXJyYXku aC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2OjQwLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9t aXVtLTEyNC4wLjYzNjcuMTE4L2Jhc2UvY29udGFpbmVycy9oZWFwX2FycmF5LmgJMjAyNC0wNS0w NSAxNjozMjo1Ny4zNzc2NTQwNDMgKzAyMDAKK0BAIC0zMiw4ICszMiw4IEBAIGNsYXNzIFRSSVZJ QUxfQUJJIEdTTF9PV05FUiBIZWFwQXJyYXkgeworICAgc3RhdGljX2Fzc2VydCghc3RkOjppc19y ZWZlcmVuY2VfdjxUPiwKKyAgICAgICAgICAgICAgICAgIkhlYXBBcnJheSBjYW5ub3QgaG9sZCBy ZWZlcmVuY2UgdHlwZXMiKTsKKyAKKy0gIHVzaW5nIGl0ZXJhdG9yID0gYmFzZTo6c3BhbjxUPjo6 aXRlcmF0b3I7CistICB1c2luZyBjb25zdF9pdGVyYXRvciA9IGJhc2U6OnNwYW48Y29uc3QgVD46 Oml0ZXJhdG9yOworKyAgdXNpbmcgaXRlcmF0b3IgPSB0eXBlbmFtZSBiYXNlOjpzcGFuPFQ+Ojpp dGVyYXRvcjsKKysgIHVzaW5nIGNvbnN0X2l0ZXJhdG9yID0gdHlwZW5hbWUgYmFzZTo6c3Bhbjxj b25zdCBUPjo6aXRlcmF0b3I7CisgCisgICAvLyBBbGxvY2F0ZXMgaW5pdGlhbGl6ZWQgbWVtb3J5 IGNhcGFibGUgb2YgaG9sZGluZyBgc2l6ZWAgZWxlbWVudHMuIE5vIG1lbW9yeQorICAgLy8gaXMg YWxsb2NhdGVkIGZvciB6ZXJvLXNpemVkIGFycmF5cy4KK2RpZmYgLXVwIGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L2Jhc2UvY29udGFpbmVycy9tYXBfdXRpbC5oLnR5cGVuYW1lIGNocm9taXVtLTEy NC4wLjYzNjcuMTE4L2Jhc2UvY29udGFpbmVycy9tYXBfdXRpbC5oCistLS0gY2hyb21pdW0tMTI0 LjAuNjM2Ny4xMTgvYmFzZS9jb250YWluZXJzL21hcF91dGlsLmgudHlwZW5hbWUJMjAyNC0wNS0w MSAwMTo0Njo0MC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9i YXNlL2NvbnRhaW5lcnMvbWFwX3V0aWwuaAkyMDI0LTA1LTA1IDE2OjM2OjE1LjA2MjIyODU5NiAr MDIwMAorQEAgLTQ0LDcgKzQ0LDcgQEAgY29uc3RleHByIGludGVybmFsOjpNYXBwZWRUeXBlPE1h cD4qIEZpbgorIHRlbXBsYXRlIDx0eXBlbmFtZSBNYXAsCisgICAgICAgICAgIHR5cGVuYW1lIEtl eSwKKyAgICAgICAgICAgdHlwZW5hbWUgTWFwcGVkRWxlbWVudFR5cGUgPQorLSAgICAgICAgICAg ICAgc3RkOjpwb2ludGVyX3RyYWl0czxpbnRlcm5hbDo6TWFwcGVkVHlwZTxNYXA+Pjo6ZWxlbWVu dF90eXBlPgorKyAgICAgICAgICAgICAgdHlwZW5hbWUgc3RkOjpwb2ludGVyX3RyYWl0czxpbnRl cm5hbDo6TWFwcGVkVHlwZTxNYXA+Pjo6ZWxlbWVudF90eXBlPgorIGNvbnN0ZXhwciBjb25zdCBN YXBwZWRFbGVtZW50VHlwZSogRmluZFB0ck9yTnVsbChjb25zdCBNYXAmIG1hcCwKKyAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgS2V5JiBrZXkp IHsKKyAgIGF1dG8gaXQgPSBtYXAuZmluZChrZXkpOworQEAgLTYwLDcgKzYwLDcgQEAgY29uc3Rl eHByIGNvbnN0IE1hcHBlZEVsZW1lbnRUeXBlKiBGaW5kUAorIHRlbXBsYXRlIDx0eXBlbmFtZSBN YXAsCisgICAgICAgICAgIHR5cGVuYW1lIEtleSwKKyAgICAgICAgICAgdHlwZW5hbWUgTWFwcGVk RWxlbWVudFR5cGUgPQorLSAgICAgICAgICAgICAgc3RkOjpwb2ludGVyX3RyYWl0czxpbnRlcm5h bDo6TWFwcGVkVHlwZTxNYXA+Pjo6ZWxlbWVudF90eXBlPgorKyAgICAgICAgICAgICAgdHlwZW5h bWUgc3RkOjpwb2ludGVyX3RyYWl0czxpbnRlcm5hbDo6TWFwcGVkVHlwZTxNYXA+Pjo6ZWxlbWVu dF90eXBlPgorIGNvbnN0ZXhwciBNYXBwZWRFbGVtZW50VHlwZSogRmluZFB0ck9yTnVsbChNYXAm IG1hcCwgY29uc3QgS2V5JiBrZXkpIHsKKyAgIGF1dG8gaXQgPSBtYXAuZmluZChrZXkpOworICAg cmV0dXJuIGl0ICE9IG1hcC5lbmQoKSA/IGJhc2U6OnRvX2FkZHJlc3MoaXQtPnNlY29uZCkgOiBu dWxscHRyOworZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvYmFzZS9mdW5jdGlvbmFs L2JpbmRfaW50ZXJuYWwuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9iYXNlL2Z1 bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvYmFz ZS9mdW5jdGlvbmFsL2JpbmRfaW50ZXJuYWwuaC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2OjQw LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Jhc2UvZnVuY3Rp b25hbC9iaW5kX2ludGVybmFsLmgJMjAyNC0wNS0wNSAxNjozMjo1Ny4zNzU2NTM5OTIgKzAyMDAK K0BAIC0xNTA1LDExICsxNTA1LDExIEBAIHRlbXBsYXRlIDxpbnQgaSwKKyAgICAgICAgICAgdHlw ZW5hbWUgUGFyYW0+Cisgc3RydWN0IFBhcmFtQ2FuQmVCb3VuZCB7CisgIHByaXZhdGU6CistICB1 c2luZyBVbndyYXBwZWRQYXJhbSA9IEJpbmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgRm9yd2FyZGVk QXM8CisrICB1c2luZyBVbndyYXBwZWRQYXJhbSA9IHR5cGVuYW1lIEJpbmRBcmd1bWVudDxpPjo6 dGVtcGxhdGUgRm9yd2FyZGVkQXM8CisgICAgICAgVW53cmFwcGVkPjo6dGVtcGxhdGUgVG9QYXJh bVdpdGhUeXBlPFBhcmFtPjsKKy0gIHVzaW5nIFBhcmFtU3RvcmFnZSA9IEJpbmRBcmd1bWVudDxp Pjo6dGVtcGxhdGUgVG9QYXJhbVdpdGhUeXBlPAorKyAgdXNpbmcgUGFyYW1TdG9yYWdlID0gdHlw ZW5hbWUgQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBUb1BhcmFtV2l0aFR5cGU8CisgICAgICAg UGFyYW0+Ojp0ZW1wbGF0ZSBTdG9yZWRBczxTdG9yYWdlPjsKKy0gIHVzaW5nIEJvdW5kU3RvcmFn ZSA9CisrICB1c2luZyBCb3VuZFN0b3JhZ2UgPSB0eXBlbmFtZQorICAgICAgIEJpbmRBcmd1bWVu dDxpPjo6dGVtcGxhdGUgQm91bmRBczxBcmc+Ojp0ZW1wbGF0ZSBTdG9yZWRBczxTdG9yYWdlPjsK KyAKKyAgIHRlbXBsYXRlIDxib29sIHYgPSAhVW53cmFwcGVkUGFyYW06OmtSYXdQdHIgfHwKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9y ZWYuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9iYXNlL2Z1bmN0aW9uYWwvZnVu Y3Rpb25fcmVmLmgKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9iYXNlL2Z1bmN0aW9uYWwv ZnVuY3Rpb25fcmVmLmgudHlwZW5hbWUJMjAyNC0wNS0wMSAwMTo0Njo0MC4wMDAwMDAwMDAgKzAy MDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9iYXNlL2Z1bmN0aW9uYWwvZnVuY3Rpb25f cmVmLmgJMjAyNC0wNS0wNSAxNjozMjo1Ny4zNzk2NTQwOTMgKzAyMDAKK0BAIC02NCw3ICs2NCw3 IEBAIGNsYXNzIEZ1bmN0aW9uUmVmOworIHRlbXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZS4u LiBBcmdzPgorIGNsYXNzIEZ1bmN0aW9uUmVmPFIoQXJncy4uLik+IHsKKyAgIHRlbXBsYXRlIDx0 eXBlbmFtZSBGdW5jdG9yLAorLSAgICAgICAgICAgIHR5cGVuYW1lIFJ1blR5cGUgPSBpbnRlcm5h bDo6RnVuY3RvclRyYWl0czxGdW5jdG9yPjo6UnVuVHlwZT4KKysgICAgICAgICAgICB0eXBlbmFt ZSBSdW5UeXBlID0gdHlwZW5hbWUgaW50ZXJuYWw6OkZ1bmN0b3JUcmFpdHM8RnVuY3Rvcj46OlJ1 blR5cGU+CisgICBzdGF0aWMgY29uc3RleHByIGJvb2wga0NvbXBhdGlibGVGdW5jdG9yID0KKyAg ICAgICBzdGQ6OmNvbnZlcnRpYmxlX3RvPGludGVybmFsOjpFeHRyYWN0UmV0dXJuVHlwZTxSdW5U eXBlPiwgUj4gJiYKKyAgICAgICBzdGQ6OnNhbWVfYXM8aW50ZXJuYWw6OkV4dHJhY3RBcmdzPFJ1 blR5cGU+LCBpbnRlcm5hbDo6VHlwZUxpc3Q8QXJncy4uLj4+OworZGlmZiAtdXAgY2hyb21pdW0t MTI0LjAuNjM2Ny4xMTgvYmFzZS90eXBlcy9maXhlZF9hcnJheS5oLnR5cGVuYW1lIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaAorLS0tIGNocm9taXVtLTEy NC4wLjYzNjcuMTE4L2Jhc2UvdHlwZXMvZml4ZWRfYXJyYXkuaC50eXBlbmFtZQkyMDI0LTA1LTAx IDAxOjQ2OjQxLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Jh c2UvdHlwZXMvZml4ZWRfYXJyYXkuaAkyMDI0LTA1LTA1IDE2OjMyOjU3LjM3ODY1NDA2OCArMDIw MAorQEAgLTI3LDggKzI3LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCisgY2xhc3MgRml4ZWRB cnJheSA6IHB1YmxpYyBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+IHsKKyAgcHVibGljOgorICAg dXNpbmcgYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6Rml4ZWRBcnJheTsKKy0gIGV4cGxpY2l0 IEZpeGVkQXJyYXkoYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6c2l6ZV90eXBlIG4sCistICAg ICAgICAgICAgICAgICAgICAgIGNvbnN0IGFic2w6OkZpeGVkQXJyYXk8VCwgTiwgQT46OmFsbG9j YXRvcl90eXBlJiBhID0KKysgIGV4cGxpY2l0IEZpeGVkQXJyYXkodHlwZW5hbWUgYWJzbDo6Rml4 ZWRBcnJheTxULCBOLCBBPjo6c2l6ZV90eXBlIG4sCisrICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IHR5cGVuYW1lIGFic2w6OkZpeGVkQXJyYXk8VCwgTiwgQT46OmFsbG9jYXRvcl90eXBlJiBh ID0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGFic2w6OkZpeGVkQXJyYXk8 VCwgTiwgQT46OmFsbG9jYXRvcl90eXBlKCkpCisgICAgICAgOiBGaXhlZEFycmF5KG4sIFQoKSwg YSkge30KKyB9OworZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY2hyb21lL2Jyb3dz ZXIvZG93bmxvYWQvYnViYmxlL2Rvd25sb2FkX2J1YmJsZV91cGRhdGVfc2VydmljZS5jYy50eXBl bmFtZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJi bGUvZG93bmxvYWRfYnViYmxlX3VwZGF0ZV9zZXJ2aWNlLmNjCistLS0gY2hyb21pdW0tMTI0LjAu NjM2Ny4xMTgvY2hyb21lL2Jyb3dzZXIvZG93bmxvYWQvYnViYmxlL2Rvd25sb2FkX2J1YmJsZV91 cGRhdGVfc2VydmljZS5jYy50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2OjQ1LjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nocm9tZS9icm93c2VyL2Rvd25sb2Fk L2J1YmJsZS9kb3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MJMjAyNC0wNS0wNSAxNjoz Mjo1Ny4zNzU2NTM5OTIgKzAyMDAKK0BAIC05NSw3ICs5NSw3IEBAIEl0ZW1Tb3J0S2V5IEdldFNv cnRLZXkoY29uc3QgSXRlbSYgaXRlbSkKKyAvLyBIZWxwZXIgdG8gZ2V0IGFuIGl0ZXJhdG9yIHRv IHRoZSBsYXN0IGVsZW1lbnQgaW4gdGhlIGNhY2hlLiBUaGUgY2FjaGUKKyAvLyBtdXN0IG5vdCBi ZSBlbXB0eS4KKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlbT4KKy1Tb3J0ZWRJdGVtczxJdGVtPjo6 Y29uc3RfaXRlcmF0b3IgR2V0TGFzdEl0ZXIoY29uc3QgU29ydGVkSXRlbXM8SXRlbT4mIGNhY2hl KSB7CisrdHlwZW5hbWUgU29ydGVkSXRlbXM8SXRlbT46OmNvbnN0X2l0ZXJhdG9yIEdldExhc3RJ dGVyKGNvbnN0IFNvcnRlZEl0ZW1zPEl0ZW0+JiBjYWNoZSkgeworICAgQ0hFQ0soIWNhY2hlLmVt cHR5KCkpOworICAgYXV0byBpdCA9IGNhY2hlLmVuZCgpOworICAgcmV0dXJuIHN0ZDo6cHJldihp dCk7CitAQCAtMTE3OSw5ICsxMTc5LDkgQEAgYm9vbCBEb3dubG9hZEJ1YmJsZVVwZGF0ZVNlcnZp Y2U6OkNhY2hlTQorIH0KKyAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgSWQsIHR5cGVuYW1lIEl0ZW0+ CistU29ydGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yCisrdHlwZW5hbWUgU29ydGVkSXRlbXM8SXRl bT46Oml0ZXJhdG9yCisgRG93bmxvYWRCdWJibGVVcGRhdGVTZXJ2aWNlOjpDYWNoZU1hbmFnZXI6 OlJlbW92ZUl0ZW1Gcm9tQ2FjaGVCeUl0ZXIoCistICAgIFNvcnRlZEl0ZW1zPEl0ZW0+OjppdGVy YXRvciBpdGVyLAorKyAgICB0eXBlbmFtZSBTb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0b3IgaXRl ciwKKyAgICAgU29ydGVkSXRlbXM8SXRlbT4mIGNhY2hlLAorICAgICBJdGVyTWFwPElkLCBJdGVt PiYgaXRlcl9tYXApIHsKKyAgIENIRUNLKGl0ZXIgIT0gY2FjaGUuZW5kKCkpOworZGlmZiAtdXAg Y2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9j b21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2ludGVybmFsLmgudHlwZW5hbWUgY2hyb21pdW0tMTI0 LjAuNjM2Ny4xMTgvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy9pbnRl cm5hbC9jb21tYW5kX2ludGVybmFsLmgKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jaHJv bWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL2ludGVybmFsL2NvbW1hbmRfaW50 ZXJuYWwuaC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2OjQ4LjAwMDAwMDAwMCArMDIwMAorKysr IGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMv Y29tbWFuZHMvaW50ZXJuYWwvY29tbWFuZF9pbnRlcm5hbC5oCTIwMjQtMDUtMDUgMTY6MzI6NTcu Mzc4NjU0MDY4ICswMjAwCitAQCAtMTIxLDcgKzEyMSw3IEBAIGNsYXNzIENvbW1hbmRCYXNlIHsK KyB0ZW1wbGF0ZSA8dHlwZW5hbWUgTG9ja1R5cGU+CisgY2xhc3MgQ29tbWFuZFdpdGhMb2NrIDog cHVibGljIENvbW1hbmRCYXNlIHsKKyAgcHVibGljOgorLSAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9u ID0gTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbjsKKysgIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9 IHR5cGVuYW1lIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRpb247CisgICBleHBsaWNpdCBDb21tYW5k V2l0aExvY2soY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgTG9ja0Rlc2NyaXB0aW9uIGluaXRpYWxfbG9ja19yZXF1ZXN0KTsKKyAKK2RpZmYgLXVw IGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMv Y29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgudHlwZW5hbWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4x MTgvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy93ZWJfYXBwX2NvbW1h bmQuaAorLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nocm9tZS9icm93c2VyL3dlYl9hcHBs aWNhdGlvbnMvY29tbWFuZHMvd2ViX2FwcF9jb21tYW5kLmgudHlwZW5hbWUJMjAyNC0wNS0wMSAw MTo0Njo0OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jaHJv bWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL3dlYl9hcHBfY29tbWFuZC5oCTIw MjQtMDUtMDUgMTY6MzI6NTcuMzc4NjU0MDY4ICswMjAwCitAQCAtMTA2LDcgKzEwNiw3IEBAIGNs YXNzIFdlYkFwcExvY2tNYW5hZ2VyOworIHRlbXBsYXRlIDx0eXBlbmFtZSBMb2NrVHlwZSwgdHlw ZW5hbWUuLi4gQ2FsbGJhY2tBcmdzPgorIGNsYXNzIFdlYkFwcENvbW1hbmQgOiBwdWJsaWMgaW50 ZXJuYWw6OkNvbW1hbmRXaXRoTG9jazxMb2NrVHlwZT4geworICBwdWJsaWM6CistICB1c2luZyBM b2NrRGVzY3JpcHRpb24gPSBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uOworKyAgdXNpbmcgTG9j a0Rlc2NyaXB0aW9uID0gdHlwZW5hbWUgTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbjsKKyAgIHVz aW5nIENhbGxiYWNrVHlwZSA9IGJhc2U6Ok9uY2VDYWxsYmFjazx2b2lkKENhbGxiYWNrQXJncy4u Lik+OworICAgdXNpbmcgU2h1dGRvd25Bcmd1bWVudHNUdXBsZSA9IHN0ZDo6dHVwbGU8c3RkOjpk ZWNheV90PENhbGxiYWNrQXJncz4uLi4+OworIAorZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1hbmRfc2No ZWR1bGVyLmgudHlwZW5hbWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY2hyb21lL2Jyb3dzZXIv d2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1hbmRfc2NoZWR1bGVyLmgKKy0tLSBjaHJvbWl1 bS0xMjQuMC42MzY3LjExOC9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL3dlYl9hcHBf Y29tbWFuZF9zY2hlZHVsZXIuaC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2OjQ4LjAwMDAwMDAw MCArMDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nocm9tZS9icm93c2VyL3dlYl9h cHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVkdWxlci5oCTIwMjQtMDUtMDUgMTY6MzI6 NTcuMzc5NjU0MDkzICswMjAwCitAQCAtMzY5LDcgKzM2OSw3IEBAIGNsYXNzIFdlYkFwcENvbW1h bmRTY2hlZHVsZXIgeworICAgLy8gY29tbWFuZCBzeXN0ZW0uCisgICB0ZW1wbGF0ZSA8dHlwZW5h bWUgTG9ja1R5cGU+CisgICB2b2lkIFNjaGVkdWxlQ2FsbGJhY2soY29uc3Qgc3RkOjpzdHJpbmcm IG9wZXJhdGlvbl9uYW1lLAorLSAgICAgICAgICAgICAgICAgICAgICAgIExvY2tUeXBlOjpMb2Nr RGVzY3JpcHRpb24gbG9ja19kZXNjcmlwdGlvbiwKKysgICAgICAgICAgICAgICAgICAgICAgICB0 eXBlbmFtZSBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uIGxvY2tfZGVzY3JpcHRpb24sCisgICAg ICAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2tDb21tYW5kPExvY2tUeXBlLCB2b2lkPiBjYWxs YmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpPbmNlQ2xvc3VyZSBvbl9jb21w bGV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpMb2NhdGlvbiYgbG9j YXRpb24gPSBGUk9NX0hFUkUpIHsKK0BAIC0zODcsNyArMzg3LDcgQEAgY2xhc3MgV2ViQXBwQ29t bWFuZFNjaGVkdWxlciB7CisgICAgICAgICAgICAgdHlwZW5hbWUgQ2FsbGJhY2tSZXR1cm5WYWx1 ZSA9IHN0ZDo6ZGVjYXlfdDxDb21wbGV0aW9uQ2FsbGJhY2tBcmc+PgorICAgdm9pZCBTY2hlZHVs ZUNhbGxiYWNrV2l0aFJlc3VsdCgKKyAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYgb3BlcmF0aW9u X25hbWUsCistICAgICAgTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbiBsb2NrX2Rlc2NyaXB0aW9u LAorKyAgICAgIHR5cGVuYW1lIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRpb24gbG9ja19kZXNjcmlw dGlvbiwKKyAgICAgICBDYWxsYmFja0NvbW1hbmQ8TG9ja1R5cGUsIENhbGxiYWNrUmV0dXJuVmFs dWU+IGNhbGxiYWNrLAorICAgICAgIGJhc2U6Ok9uY2VDYWxsYmFjazx2b2lkKENvbXBsZXRpb25D YWxsYmFja0FyZyk+IG9uX2NvbXBsZXRlLAorICAgICAgIENhbGxiYWNrUmV0dXJuVmFsdWUgYXJn X2Zvcl9zaHV0ZG93biwKK2RpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVu dHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfZXhlY3V0aW9uL21vZGVsX2V4ZWN1dGlv bl91dGlsLmgudHlwZW5hbWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9vcHRp bWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9leGVjdXRpb24vbW9kZWxfZXhlY3V0aW9uX3V0aWwu aAorLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1 aWRlL2NvcmUvbW9kZWxfZXhlY3V0aW9uL21vZGVsX2V4ZWN1dGlvbl91dGlsLmgudHlwZW5hbWUJ MjAyNC0wNS0wMSAwMTo0Njo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42 MzY3LjExOC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlv bi9tb2RlbF9leGVjdXRpb25fdXRpbC5oCTIwMjQtMDUtMDUgMTY6MzI6NTcuMzc2NjU0MDE4ICsw MjAwCitAQCAtMjYsNyArMjYsNyBAQCB2b2lkIFNldEV4ZWN1dGlvblJlcXVlc3RUZW1wbGF0ZSgK KyAKKyAgIC8vIFJlcXVlc3QgaXMgc2V0IGJ5IHRoZSBmZWF0dXJlIGFuZCBzaG91bGQgYWx3YXlz IGJlIHR5cGVkLgorICAgYXV0byB0eXBlZF9yZXF1ZXN0ID0KKy0gICAgICBzdGF0aWNfY2FzdDxj b25zdCBGZWF0dXJlVHlwZTo6UmVxdWVzdCY+KHJlcXVlc3RfbWV0YWRhdGEpOworKyAgICAgIHN0 YXRpY19jYXN0PGNvbnN0IHR5cGVuYW1lIEZlYXR1cmVUeXBlOjpSZXF1ZXN0Jj4ocmVxdWVzdF9t ZXRhZGF0YSk7CisgICAqKGxvZ2dpbmdfZGF0YS0+bXV0YWJsZV9yZXF1ZXN0X2RhdGEoKSkgPSB0 eXBlZF9yZXF1ZXN0OworIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nv bXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFs aXR5X2xvZ19lbnRyeS5oLnR5cGVuYW1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVu dHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xv Z19lbnRyeS5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9vcHRpbWl6 YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5Lmgu dHlwZW5hbWUJMjAyNC0wNS0wMSAwMTo0Njo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVs X3F1YWxpdHkvbW9kZWxfcXVhbGl0eV9sb2dfZW50cnkuaAkyMDI0LTA1LTA1IDE2OjMyOjU3LjM3 NjY1NDAxOCArMDIwMAorQEAgLTMzLDcgKzMzLDcgQEAgY2xhc3MgTW9kZWxRdWFsaXR5TG9nRW50 cnkgeworICAgfQorIAorICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZlYXR1cmVUeXBlPgorLSAgRmVh dHVyZVR5cGU6OlF1YWxpdHkqIHF1YWxpdHlfZGF0YSgpIHsKKysgIHR5cGVuYW1lIEZlYXR1cmVU eXBlOjpRdWFsaXR5KiBxdWFsaXR5X2RhdGEoKSB7CisgICAgIHJldHVybiBGZWF0dXJlVHlwZTo6 R2V0TG9nZ2luZ0RhdGEoKmxvZ19haV9kYXRhX3JlcXVlc3RfKQorICAgICAgICAgLT5tdXRhYmxl X3F1YWxpdHlfZGF0YSgpOworICAgfQorZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgv Y29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS90ZmxpdGVfbW9kZWxfZXhlY3V0b3Iu aC50eXBlbmFtZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL29wdGltaXphdGlv bl9ndWlkZS9jb3JlL3RmbGl0ZV9tb2RlbF9leGVjdXRvci5oCistLS0gY2hyb21pdW0tMTI0LjAu NjM2Ny4xMTgvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS90ZmxpdGVfbW9kZWxf ZXhlY3V0b3IuaC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2OjUyLjAwMDAwMDAwMCArMDIwMAor KysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRl L2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgJMjAyNC0wNS0wNSAxNjozMjo1Ny4zNzk2NTQw OTMgKzAyMDAKK0BAIC0yNDIsNyArMjQyLDcgQEAgY2xhc3MgVEZMaXRlTW9kZWxFeGVjdXRvciA6 IHB1YmxpYyBNb2RlbAorICAgdm9pZCBTZW5kRm9yQmF0Y2hFeGVjdXRpb24oCisgICAgICAgQmF0 Y2hFeGVjdXRpb25DYWxsYmFjayBjYWxsYmFja19vbl9jb21wbGV0ZSwKKyAgICAgICBiYXNlOjpU aW1lVGlja3Mgc3RhcnRfdGltZSwKKy0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElu cHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQorKyAgICAgIHR5cGVuYW1lIE1v ZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBp bnB1dHMpCisgICAgICAgb3ZlcnJpZGUgeworICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVu bmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7CisgICAgIERDSEVDS19DQUxMRURf T05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworQEAgLTI2NCw3ICsyNjQsNyBA QCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGljIE1vZGVsCisgICAvLyBTdGFydHMg dGhlIHN5bmNocm9ub3VzIGV4ZWN1dGlvbiBvZiB0aGUgbW9kZWwuIFJldHVybnMgbW9kZWwgb3V0 cHV0cy4KKyAgIC8vIE1vZGVsIG5lZWRzIHRvIGJlIGxvYWRlZC4gU3luY2hyb25vdXMgY2FsbHMg ZG8gbm90IGxvYWQgb3IgdW5sb2FkIG1vZGVsLgorICAgc3RkOjp2ZWN0b3I8c3RkOjpvcHRpb25h bDxPdXRwdXRUeXBlPj4gU2VuZEZvckJhdGNoRXhlY3V0aW9uU3luYygKKy0gICAgICBNb2RlbEV4 ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRz KQorKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6 Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpCisgICAgICAgb3ZlcnJpZGUgeworICAgICBEQ0hF Q0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7 CisgICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8p OworQEAgLTQyMiw3ICs0MjIsNyBAQCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGlj IE1vZGVsCisgICAvLyBleGVjdXRlcyBpdCBvbiB0aGUgbW9kZWwgZXhlY3V0aW9uIHRocmVhZC4K KyAgIHZvaWQgTG9hZE1vZGVsRmlsZUFuZEJhdGNoRXhlY3V0ZSgKKyAgICAgICBCYXRjaEV4ZWN1 dGlvbkNhbGxiYWNrIGNhbGxiYWNrX29uX2NvbXBsZXRlLAorLSAgICAgIE1vZGVsRXhlY3V0b3I8 T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpIHsKKysg ICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0 UmVmSW5wdXRWZWN0b3IgaW5wdXRzKSB7CisgICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5u ZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5jZSgpKTsKKyAgICAgRENIRUNLX0NBTExFRF9P Tl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7CisgCitAQCAtNDM5LDcgKzQzOSw3 IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0b3IgOiBwdWJsaWMgTW9kZWwKKyAKKyAgIC8vIEJh dGNoIGV4ZWN1dGVzIHRoZSBsb2FkZWQgbW9kZWwgZm9yIGlucHV0cy4KKyAgIHZvaWQgQmF0Y2hF eGVjdXRlTG9hZGVkTW9kZWwoCistICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1 dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cywKKysgICAgICB0eXBlbmFtZSBNb2Rl bEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5w dXRzLAorICAgICAgIHN0ZDo6dmVjdG9yPHN0ZDo6b3B0aW9uYWw8T3V0cHV0VHlwZT4+KiBvdXRw dXRzKSB7CisgICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1 cnJlbnRTZXF1ZW5jZSgpKTsKKyAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShz ZXF1ZW5jZV9jaGVja2VyXyk7CitAQCAtNDk5LDcgKzQ5OSw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVs RXhlY3V0b3IgOiBwdWJsaWMgTW9kZWwKKyAgIC8vIFVubG9hZHMgdGhlIG1vZGVsIGlmIG5lZWRl ZC4KKyAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9hZGVkTW9kZWxBbmRSdW5DYWxsYmFjaygKKyAgICAg ICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrX29uX2NvbXBsZXRlLAorLSAgICAgIE1v ZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBp bnB1dHMsCisrICAgICAgdHlwZW5hbWUgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5 cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cywKKyAgICAgICBFeGVjdXRpb25TdGF0dXMg ZXhlY3V0aW9uX3N0YXR1cykgeworICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+ UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7CisgICAgIERDSEVDS19DQUxMRURfT05fVkFM SURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAu NjM2Ny4xMTgvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2Zl dGNoZXIuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL3N1cGVy dmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oCistLS0gY2hyb21pdW0tMTI0 LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3Rv X2ZldGNoZXIuaC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2OjU0LjAwMDAwMDAwMCArMDIwMAor KysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvc3VwZXJ2aXNlZF91c2VyL2Nv cmUvYnJvd3Nlci9wcm90b19mZXRjaGVyLmgJMjAyNC0wNS0wNSAxNjozMjo1Ny4zNzk2NTQwOTMg KzAyMDAKK0BAIC00MjQsNyArNDI0LDcgQEAgY2xhc3MgUmV0cnlpbmdGZXRjaGVySW1wbCBmaW5h bCA6IHB1YmxpYworICAgUmV0cnlpbmdGZXRjaGVySW1wbChjb25zdCBSZXRyeWluZ0ZldGNoZXJJ bXBsJikgPSBkZWxldGU7CisgICBSZXRyeWluZ0ZldGNoZXJJbXBsJiBvcGVyYXRvcj0oY29uc3Qg UmV0cnlpbmdGZXRjaGVySW1wbCYpID0gZGVsZXRlOworIAorLSAgdm9pZCBTdGFydChQcm90b0Zl dGNoZXI8UmVzcG9uc2U+OjpDYWxsYmFjayBjYWxsYmFjaykgb3ZlcnJpZGUgeworKyAgdm9pZCBT dGFydCh0eXBlbmFtZSBQcm90b0ZldGNoZXI8UmVzcG9uc2U+OjpDYWxsYmFjayBjYWxsYmFjaykg b3ZlcnJpZGUgeworICAgICBjYWxsYmFja18gPSBzdGQ6Om1vdmUoY2FsbGJhY2spOworICAgICBS ZXRyeSgpOworICAgfQorQEAgLTQ2OSw3ICs0NjksNyBAQCBjbGFzcyBSZXRyeWluZ0ZldGNoZXJJ bXBsIGZpbmFsIDogcHVibGljCisgICB9CisgCisgICAvLyBDbGllbnQgY2FsbGJhY2suCistICBU eXBlZFByb3RvRmV0Y2hlcjxSZXNwb25zZT46OkNhbGxiYWNrIGNhbGxiYWNrXzsKKysgIHR5cGVu YW1lIFR5cGVkUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2FsbGJhY2tfOworIAor ICAgLy8gUmV0cnkgY29udHJvbHMuCisgICBiYXNlOjpPbmVTaG90VGltZXIgdGltZXJfOworQEAg LTQ5MCw3ICs0OTAsNyBAQCBjbGFzcyBQYXJhbGxlbEZldGNoTWFuYWdlciB7CisgICAvLyBEZWZl cnJlZCBmZXRjaGVyIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQgc2hvdWxkIGJlIHN0YXJ0ZWQgYWZ0 ZXIgaXQgaXMKKyAgIC8vIHN0b3JlZCBpbnRlcm5hbGx5LgorICAgdXNpbmcgRmV0Y2hlciA9IFBy b3RvRmV0Y2hlcjxSZXNwb25zZT47CistICB1c2luZyBLZXlUeXBlID0gYmFzZTo6SURNYXA8c3Rk Ojp1bmlxdWVfcHRyPEZldGNoZXI+Pjo6S2V5VHlwZTsKKysgIHVzaW5nIEtleVR5cGUgPSB0eXBl bmFtZSBiYXNlOjpJRE1hcDxzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hlcj4+OjpLZXlUeXBlOworIAor ICBwdWJsaWM6CisgICAvLyBQcm92aWRlcyBmcmVzaCBpbnN0YW5jZXMgb2YgYSBkZWZlcnJlZCBm ZXRjaGVyIGZvciBlYWNoIGZldGNoLgorQEAgLTUwNiw3ICs1MDYsNyBAQCBjbGFzcyBQYXJhbGxl bEZldGNoTWFuYWdlciB7CisgCisgICAvLyBTdGFydHMgdGhlIGZldGNoLiBVbmRlcmx5aW5nIGZl dGNoZXIgaXMgc3RvcmVkIGludGVybmFsbHksIGFuZCB3aWxsIGJlCisgICAvLyBjbGVhbmVkIHVw IGFmdGVyIGZpbmlzaCBvciB3aGVuIHRoaXMgbWFuYWdlciBpcyBkZXN0cm95ZWQuCistICB2b2lk IEZldGNoKGNvbnN0IFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoZXI6OkNhbGxiYWNrIGNhbGxiYWNr KSB7CisrICB2b2lkIEZldGNoKGNvbnN0IFJlcXVlc3QmIHJlcXVlc3QsIHR5cGVuYW1lIEZldGNo ZXI6OkNhbGxiYWNrIGNhbGxiYWNrKSB7CisgICAgIENIRUNLKGNhbGxiYWNrKSA8PCAiVXNlIGJh c2U6OkRvTm90aGluZygpIGluc3RlYWQgb2YgZW1wdHkgY2FsbGJhY2suIjsKKyAgICAgS2V5VHlw ZSBrZXkgPSByZXF1ZXN0c19pbl9mbGlnaHRfLkFkZChNYWtlRmV0Y2hlcihyZXF1ZXN0KSk7Cisg ICAgIHJlcXVlc3RzX2luX2ZsaWdodF8uTG9va3VwKGtleSktPlN0YXJ0KAorZGlmZiAtdXAgY2hy b21pdW0tMTI0LjAuNjM2Ny4xMTgvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0 cy5oLnR5cGVuYW1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L21vam8vcHVibGljL2NwcC9iaW5k aW5ncy9hcnJheV90cmFpdHMuaAorLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L21vam8vcHVi bGljL2NwcC9iaW5kaW5ncy9hcnJheV90cmFpdHMuaC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ2 OjU5LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L21vam8vcHVi bGljL2NwcC9iaW5kaW5ncy9hcnJheV90cmFpdHMuaAkyMDI0LTA1LTA1IDE2OjMyOjU3LjM3NjY1 NDAxOCArMDIwMAorQEAgLTkwLDcgKzkwLDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRhaW5l cj4KKyAgICAgeyBjW2ldIH0gLT4gc3RkOjpzYW1lX2FzPHR5cGVuYW1lIENvbnRhaW5lcjo6cmVm ZXJlbmNlPjsKKyAgIH0KKyBzdHJ1Y3QgQXJyYXlUcmFpdHM8Q29udGFpbmVyPiB7CistICB1c2lu ZyBFbGVtZW50ID0gQ29udGFpbmVyOjp2YWx1ZV90eXBlOworKyAgdXNpbmcgRWxlbWVudCA9IHR5 cGVuYW1lIENvbnRhaW5lcjo6dmFsdWVfdHlwZTsKKyAKKyAgIC8vIHZlY3Rvci1saWtlIGNvbnRh aW5lcnMgaGF2ZSBubyBidWlsdC1pbiBudWxsLgorICAgc3RhdGljIGJvb2wgSXNOdWxsKGNvbnN0 IENvbnRhaW5lciYgYykgeyByZXR1cm4gZmFsc2U7IH0KK2RpZmYgLXVwIGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90eXBlX2NvbnZlcnRlci5oLnR5cGVu YW1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90eXBl X2NvbnZlcnRlci5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvbW9qby9wdWJsaWMvY3Bw L2JpbmRpbmdzL3R5cGVfY29udmVydGVyLmgudHlwZW5hbWUJMjAyNC0wNS0wMSAwMTo0Njo1OS4w MDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9tb2pvL3B1YmxpYy9j cHAvYmluZGluZ3MvdHlwZV9jb252ZXJ0ZXIuaAkyMDI0LTA1LTA1IDE2OjMyOjU3LjM3NzY1NDA0 MyArMDIwMAorQEAgLTEyNyw3ICsxMjcsNyBAQCB1c2luZyBWZWNWYWx1ZVR5cGUgPSB0eXBlbmFt ZSBWZWM6OnZhbHVlCisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFZlYz4KKyB1c2luZyBWZWNQdHJM aWtlVW5kZXJseWluZ1ZhbHVlVHlwZSA9CistICAgIHN0ZDo6cG9pbnRlcl90cmFpdHM8VmVjVmFs dWVUeXBlPFZlYz4+OjplbGVtZW50X3R5cGU7CisrICAgIHR5cGVuYW1lIHN0ZDo6cG9pbnRlcl90 cmFpdHM8VmVjVmFsdWVUeXBlPFZlYz4+OjplbGVtZW50X3R5cGU7CisgCisgfSAgLy8gbmFtZXNw YWNlIGludGVybmFsCisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgudHlw ZW5hbWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv YmluZGluZ3MvY29yZS92OC9hc3luY19pdGVyYWJsZS5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9hc3luY19p dGVyYWJsZS5oLnR5cGVuYW1lCTIwMjQtMDUtMDUgMTY6MzI6NTcuMzc2NjU0MDE4ICswMjAwCisr KysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmlu ZGluZ3MvY29yZS92OC9hc3luY19pdGVyYWJsZS5oCTIwMjQtMDUtMDUgMTY6Mzk6MDcuMDE1MTU4 MzM1ICswMjAwCitAQCAtMjQ1LDcgKzI0NSw3IEBAIGNsYXNzIFBhaXJBc3luY0l0ZXJhYmxlIHsK KyAgcHJpdmF0ZToKKyAgIHZpcnR1YWwgSXRlcmF0aW9uU291cmNlKiBDcmVhdGVJdGVyYXRpb25T b3VyY2UoCisgICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdF9zdGF0ZSwKKy0gICAgICBJdGVyYXRp b25Tb3VyY2U6OktpbmQga2luZCwKKysgICAgICB0eXBlbmFtZSBJdGVyYXRpb25Tb3VyY2U6Oktp bmQga2luZCwKKyAgICAgICBJbml0QXJncy4uLiBhcmdzLAorICAgICAgIEV4Y2VwdGlvblN0YXRl JiBleGNlcHRpb25fc3RhdGUpID0gMDsKKyB9OworQEAgLTI5MSw3ICsyOTEsNyBAQCBjbGFzcyBW YWx1ZUFzeW5jSXRlcmFibGUgeworICBwcml2YXRlOgorICAgdmlydHVhbCBJdGVyYXRpb25Tb3Vy Y2UqIENyZWF0ZUl0ZXJhdGlvblNvdXJjZSgKKyAgICAgICBTY3JpcHRTdGF0ZSogc2NyaXB0X3N0 YXRlLAorLSAgICAgIEl0ZXJhdGlvblNvdXJjZTo6S2luZCBraW5kLAorKyAgICAgIHR5cGVuYW1l IEl0ZXJhdGlvblNvdXJjZTo6S2luZCBraW5kLAorICAgICAgIEluaXRBcmdzLi4uIGFyZ3MsCisg ICAgICAgRXhjZXB0aW9uU3RhdGUmIGV4Y2VwdGlvbl9zdGF0ZSkgPSAwOworIH07CitkaWZmIC11 cCBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5k aW5ncy9jb3JlL3Y4L3NjcmlwdF9wcm9taXNlX3Byb3BlcnR5LmgudHlwZW5hbWUgY2hyb21pdW0t MTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92 OC9zY3JpcHRfcHJvbWlzZV9wcm9wZXJ0eS5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgv dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlz ZV9wcm9wZXJ0eS5oLnR5cGVuYW1lCTIwMjQtMDUtMDEgMDE6NDc6MDMuMDAwMDAwMDAwICswMjAw CisrKysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv YmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9wcm9wZXJ0eS5oCTIwMjQtMDUtMDUgMTY6 MzI6NTcuMzgwNjU0MTE4ICswMjAwCitAQCAtMTczLDcgKzE3Myw3IEBAIGNsYXNzIFNjcmlwdFBy b21pc2VQcm9wZXJ0eSBmaW5hbAorICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CisgICAgIHJlcXVp cmVzIHN0ZDo6ZGVyaXZlZF9mcm9tPFQsIGJpbmRpbmdzOjpFbnVtZXJhdGlvbkJhc2U+CisgICBz dGF0aWMgVCBEZWZhdWx0UHJvbWlzZVJlc3VsdFZhbHVlKCkgeworLSAgICByZXR1cm4gVChzdGF0 aWNfY2FzdDxUOjpFbnVtPigwKSk7CisrICAgIHJldHVybiBUKHN0YXRpY19jYXN0PHR5cGVuYW1l IFQ6OkVudW0+KDApKTsKKyAgIH0KKyAKKyAgIFN0YXRlIHN0YXRlXyA9IGtQZW5kaW5nOworZGlm ZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv YmluZGluZ3MvY29yZS92OC9zY3JpcHRfcHJvbWlzZV9yZXNvbHZlci5oLnR5cGVuYW1lIGNocm9t aXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2Nv cmUvdjgvc2NyaXB0X3Byb21pc2VfcmVzb2x2ZXIuaAorLS0tIGNocm9taXVtLTEyNC4wLjYzNjcu MTE4L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3By b21pc2VfcmVzb2x2ZXIuaC50eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ3OjAzLjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL2JpbmRpbmdzL2NvcmUvdjgvc2NyaXB0X3Byb21pc2VfcmVzb2x2ZXIuaAkyMDI0LTA1LTA1 IDE2OjMyOjU3LjM4MDY1NDExOCArMDIwMAorQEAgLTM4OSw3ICszODksNyBAQCBjbGFzcyBTY3Jp cHRQcm9taXNlUmVzb2x2ZXJUeXBlZCA6IHB1YmxpCisgCisgIHByaXZhdGU6CisgICB1c2luZyBU eXBlZFJlc29sdmVyID0KKy0gICAgICBTY3JpcHRQcm9taXNlVHlwZWQ8SURMUmVzb2x2ZWRUeXBl Pjo6SW50ZXJuYWxSZXNvbHZlclR5cGVkOworKyAgICAgIHR5cGVuYW1lIFNjcmlwdFByb21pc2VU eXBlZDxJRExSZXNvbHZlZFR5cGU+OjpJbnRlcm5hbFJlc29sdmVyVHlwZWQ7CisgfTsKKyAKKyB9 ICAvLyBuYW1lc3BhY2UgYmxpbmsKK2RpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3Ro aXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9w YXJzZXJfZmFzdHBhdGguY2MudHlwZW5hbWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9odG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3BhcnNl cl9mYXN0cGF0aC5jYworLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFzdHBh dGguY2MudHlwZW5hbWUJMjAyNC0wNS0wMSAwMTo0NzowNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBj aHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2h0 bWwvcGFyc2VyL2h0bWxfZG9jdW1lbnRfcGFyc2VyX2Zhc3RwYXRoLmNjCTIwMjQtMDUtMDUgMTY6 MzI6NTcuMzc2NjU0MDE4ICswMjAwCitAQCAtMjEwLDcgKzIxMCw3IEBAIGNsYXNzIEhUTUxGYXN0 UGF0aFBhcnNlciB7CisgICB1c2luZyBTcGFuID0gYmFzZTo6c3Bhbjxjb25zdCBDaGFyPjsKKyAg IHVzaW5nIFVTcGFuID0gYmFzZTo6c3Bhbjxjb25zdCBVQ2hhcj47CisgICAvLyAzMiBtYXRjaGVz IHRoYXQgdXNlZCBieSBIVE1MVG9rZW46OkF0dHJpYnV0ZS4KKy0gIHR5cGVkZWYgc3RkOjpjb25k aXRpb25hbDxzdGQ6OmlzX3NhbWVfdjxDaGFyLCBVQ2hhcj4sCisrICB0eXBlZGVmIHR5cGVuYW1l IHN0ZDo6Y29uZGl0aW9uYWw8c3RkOjppc19zYW1lX3Y8Q2hhciwgVUNoYXI+LAorICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFVDaGFyTGl0ZXJhbEJ1ZmZlcjwzMj4sCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgTENoYXJMaXRlcmFsQnVmZmVyPDMyPj46OnR5cGUgTGl0ZXJhbEJ1ZmZl clR5cGU7CisgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfc2FtZV92PENoYXIsIFVDaGFyPiB8fCBz dGQ6OmlzX3NhbWVfdjxDaGFyLCBMQ2hhcj4pOworZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUu aC50eXBlbmFtZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS93dGYvaGFzaF90YWJsZS5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4x MTgvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vd3RmL2hhc2hfdGFibGUuaC50 eXBlbmFtZQkyMDI0LTA1LTAxIDAxOjQ3OjA1LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9o YXNoX3RhYmxlLmgJMjAyNC0wNS0wNSAxNjozMjo1Ny4zNzg2NTQwNjggKzAyMDAKK0BAIC0yMDA2 LDcgKzIwMDYsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXIgeworICAg c3RhdGljX2Fzc2VydCghSXNUcmFjZWFibGU8dHlwZW5hbWUgVHJhaXRzOjpUcmFpdFR5cGU+Ojp2 YWx1ZSk7CisgCisgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29yeSA9IHN0ZDo6YmlkaXJlY3Rpb25h bF9pdGVyYXRvcl90YWc7CistICB1c2luZyB2YWx1ZV90eXBlID0gSGFzaFRhYmxlVHlwZTo6VmFs dWVUeXBlOworKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVuYW1lIEhhc2hUYWJsZVR5cGU6OlZh bHVlVHlwZTsKKyAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9IHB0cmRpZmZfdDsKKyAgIHVzaW5n IHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAgIHVzaW5nIHJlZmVyZW5jZSA9IHZhbHVlX3R5cGUm OworQEAgLTIwNTgsNyArMjA1OCw3IEBAIHN0cnVjdCBIYXNoVGFibGVDb25zdEl0ZXJhdG9yQWRh cHRlcjwKKyAKKyAgcHVibGljOgorICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBzdGQ6OmJp ZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOworLSAgdXNpbmcgdmFsdWVfdHlwZSA9IEhhc2hUYWJs ZVR5cGU6OlZhbHVlVHlwZTsKKysgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBIYXNoVGFi bGVUeXBlOjpWYWx1ZVR5cGU7CisgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJkaWZmX3Q7 CisgICB1c2luZyBwb2ludGVyID0gdmFsdWVfdHlwZSo7CisgICB1c2luZyByZWZlcmVuY2UgPSB2 YWx1ZV90eXBlJjsKK0BAIC0yMTEyLDcgKzIxMTIsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxlSXRlcmF0 b3JBZGFwdGVyIHsKKyAgIHN0YXRpY19hc3NlcnQoIUlzVHJhY2VhYmxlPHR5cGVuYW1lIFRyYWl0 czo6VHJhaXRUeXBlPjo6dmFsdWUpOworIAorICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBz dGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOworLSAgdXNpbmcgdmFsdWVfdHlwZSA9IEhh c2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKKysgIHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBI YXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7CisgICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJk aWZmX3Q7CisgICB1c2luZyBwb2ludGVyID0gdmFsdWVfdHlwZSo7CisgICB1c2luZyByZWZlcmVu Y2UgPSB2YWx1ZV90eXBlJjsKK0BAIC0yMTYwLDcgKzIxNjAsNyBAQCBzdHJ1Y3QgSGFzaFRhYmxl SXRlcmF0b3JBZGFwdGVyPAorIAorICBwdWJsaWM6CisgICB1c2luZyBpdGVyYXRvcl9jYXRlZ29y eSA9IHN0ZDo6YmlkaXJlY3Rpb25hbF9pdGVyYXRvcl90YWc7CistICB1c2luZyB2YWx1ZV90eXBl ID0gSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworKyAgdXNpbmcgdmFsdWVfdHlwZSA9IHR5cGVu YW1lIEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKKyAgIHVzaW5nIGRpZmZlcmVuY2VfdHlwZSA9 IHB0cmRpZmZfdDsKKyAgIHVzaW5nIHBvaW50ZXIgPSB2YWx1ZV90eXBlKjsKKyAgIHVzaW5nIHJl ZmVyZW5jZSA9IHZhbHVlX3R5cGUmOworZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgv YmFzZS9jb250YWluZXJzL3RvX3ZlY3Rvci5oLm1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Jh c2UvY29udGFpbmVycy90b192ZWN0b3IuaAorLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Jh c2UvY29udGFpbmVycy90b192ZWN0b3IuaC5tZQkyMDI0LTA1LTA2IDEyOjM5OjU4LjMxMjg5OTQ1 NSArMDIwMAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Jhc2UvY29udGFpbmVycy90b192 ZWN0b3IuaAkyMDI0LTA1LTA2IDEyOjQwOjIyLjAxNDYzNTcxNSArMDIwMAorQEAgLTMwLDcgKzMw LDcgQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFJhbmdlLCB0eXBlbmFtZSBQcm9qCisgICAgICAgICAg ICBzdGQ6OmluZGlyZWN0bHlfdW5hcnlfaW52b2NhYmxlPFByb2osIHJhbmdlczo6aXRlcmF0b3Jf dDxSYW5nZT4+CisgYXV0byBUb1ZlY3RvcihSYW5nZSYmIHJhbmdlLCBQcm9qIHByb2ogPSB7fSkg eworICAgdXNpbmcgUHJvamVjdGVkVHlwZSA9CistICAgICAgc3RkOjpwcm9qZWN0ZWQ8cmFuZ2Vz OjppdGVyYXRvcl90PFJhbmdlPiwgUHJvaj46OnZhbHVlX3R5cGU7CisrICAgICAgdHlwZW5hbWUg c3RkOjpwcm9qZWN0ZWQ8cmFuZ2VzOjppdGVyYXRvcl90PFJhbmdlPiwgUHJvaj46OnZhbHVlX3R5 cGU7CisgICBzdGQ6OnZlY3RvcjxQcm9qZWN0ZWRUeXBlPiBjb250YWluZXI7CisgICBjb250YWlu ZXIucmVzZXJ2ZShzdGQ6OnNpemUocmFuZ2UpKTsKKyAgIHJhbmdlczo6dHJhbnNmb3JtKHN0ZDo6 Zm9yd2FyZDxSYW5nZT4ocmFuZ2UpLCBzdGQ6OmJhY2tfaW5zZXJ0ZXIoY29udGFpbmVyKSwKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1 aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X3V0aWwuaC5tZSBjaHJvbWl1bS0x MjQuMC42MzY3LjExOC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX3F1 YWxpdHkvbW9kZWxfcXVhbGl0eV91dGlsLmgKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9j b21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX3F1YWxpdHkvbW9kZWxfcXVh bGl0eV91dGlsLmgubWUJMjAyNC0wNS0wNiAyMDoxMzoyOS4wNjc4MDAzMDkgKzAyMDAKKysrKyBj aHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3Jl L21vZGVsX3F1YWxpdHkvbW9kZWxfcXVhbGl0eV91dGlsLmgJMjAyNC0wNS0wNiAyMDoxMzo0NC42 NzEwODQyMjIgKzAyMDAKK0BAIC0xOSw3ICsxOSw3IEBAIHByb3RvOjpNb2RlbEV4ZWN1dGlvbkZl YXR1cmUgR2V0TW9kZWxFeGUKKyAvLyBIZWxwZXIgbWV0aG9kIHRvIGdldCB0aGUgcXVhbGl0eV9k YXRhIGZyb20gYGxvZ19haV9kYXRhX3JlcXVlc3RgIGZvcgorIC8vIGRpZmZlcmVudCBmZWF0dXJl cy4KKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmVhdHVyZVR5cGU+CistRmVhdHVyZVR5cGU6OlF1YWxp dHkqIEdldE1vZGVsUXVhbGl0eURhdGEoCisrdHlwZW5hbWUgRmVhdHVyZVR5cGU6OlF1YWxpdHkq IEdldE1vZGVsUXVhbGl0eURhdGEoCisgICAgIHByb3RvOjpMb2dBaURhdGFSZXF1ZXN0KiBsb2df YWlfZGF0YV9yZXF1ZXN0KSB7CisgICByZXR1cm4gRmVhdHVyZVR5cGU6OkdldExvZ2dpbmdEYXRh KCpsb2dfYWlfZGF0YV9yZXF1ZXN0KQorICAgICAgIC0+bXV0YWJsZV9xdWFsaXR5X2RhdGEoKTsK K2RpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL2NvcmUvcGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXMuaC5tZSBjaHJvbWl1bS0xMjQu MC42MzY3LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29iamVjdF9w YWludF9wcm9wZXJ0aWVzLmgKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29iamVjdF9wYWludF9wcm9wZXJ0aWVzLmgubWUJ MjAyNC0wNS0wNyAwODo1NDo0Mi4wOTkzMTYwMjAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjQuMC42 MzY3LjExOC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29iamVjdF9wYWlu dF9wcm9wZXJ0aWVzLmgJMjAyNC0wNS0wNyAwODo1NzoxOC4zMDQwMjI2NzIgKzAyMDAKK0BAIC00 NDUsOCArNDQ1LDggQEAgY2xhc3MgQ09SRV9FWFBPUlQgT2JqZWN0UGFpbnRQcm9wZXJ0aWVzCisg ICBQYWludFByb3BlcnR5Q2hhbmdlVHlwZSBVcGRhdGUoCisgICAgICAgTm9kZUlkIG5vZGVfaWQs CisgICAgICAgY29uc3QgUGFyZW50VHlwZSYgcGFyZW50LAorLSAgICAgIE5vZGVUeXBlOjpTdGF0 ZSYmIHN0YXRlLAorLSAgICAgIGNvbnN0IE5vZGVUeXBlOjpBbmltYXRpb25TdGF0ZSYgYW5pbWF0 aW9uX3N0YXRlID0KKysgICAgICB0eXBlbmFtZSBOb2RlVHlwZTo6U3RhdGUmJiBzdGF0ZSwKKysg ICAgICBjb25zdCB0eXBlbmFtZSBOb2RlVHlwZTo6QW5pbWF0aW9uU3RhdGUmIGFuaW1hdGlvbl9z dGF0ZSA9CisgICAgICAgICAgIE5vZGVUeXBlOjpBbmltYXRpb25TdGF0ZSgpKSB7CisgICAgIC8v IEZpcnN0LCBjaGVjayBpZiB3ZSBuZWVkIHRvIGFkZCBhIG5ldyBub2RlLgorICAgICBpZiAoIW5v ZGVzXy5IYXNGaWVsZChub2RlX2lkKSkgewoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNC13b3Jr YXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2ggYi9jaHJvbWl1bS0xMjQt d29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyN2U0ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJv bWl1bS0xMjQtd29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoCkBA IC0wLDAgKzEsNzggQEAKK2RpZmYgLXVwIGNocm9taXVtLTExNS4wLjU3OTAuMjQvbWVkaWEvYmFz ZS9jZG1fcHJvbWlzZV9hZGFwdGVyLmNjLndvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRf YmluZGluZyBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRh cHRlci5jYworLS0tIGNocm9taXVtLTExNS4wLjU3OTAuMjQvbWVkaWEvYmFzZS9jZG1fcHJvbWlz ZV9hZGFwdGVyLmNjLndvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZwkyMDIz LTA2LTA3IDIxOjQ4OjM3LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTExNS4wLjU3OTAu MjQvbWVkaWEvYmFzZS9jZG1fcHJvbWlzZV9hZGFwdGVyLmNjCTIwMjMtMDYtMTcgMTY6NTM6MjAu MjE2NjI4NTU3ICswMjAwCitAQCAtOTQsNyArOTQsOSBAQCB2b2lkIENkbVByb21pc2VBZGFwdGVy OjpSZWplY3RQcm9taXNlKHVpCisgdm9pZCBDZG1Qcm9taXNlQWRhcHRlcjo6Q2xlYXIoQ2xlYXJS ZWFzb24gcmVhc29uKSB7CisgICAvLyBSZWplY3QgYWxsIG91dHN0YW5kaW5nIHByb21pc2VzLgor ICAgRENIRUNLKHRocmVhZF9jaGVja2VyXy5DYWxsZWRPblZhbGlkVGhyZWFkKCkpOworLSAgZm9y IChhdXRvJiBbcHJvbWlzZV9pZCwgcHJvbWlzZV0gOiBwcm9taXNlc18pIHsKKysgIGZvciAoYXV0 byYgW3BfaSwgcF9lXSA6IHByb21pc2VzXykgeworKyAgICBhdXRvJiBwcm9taXNlX2lkID0gcF9p OworKyAgICBhdXRvJiBwcm9taXNlID0gcF9lOworICAgICBUUkFDRV9FVkVOVF9ORVNUQUJMRV9B U1lOQ19FTkQxKAorICAgICAgICAgIm1lZGlhIiwgIkNkbVByb21pc2UiLCBUUkFDRV9JRF9XSVRI X1NDT1BFKCJDZG1Qcm9taXNlIiwgcHJvbWlzZV9pZCksCisgICAgICAgICAic3RhdHVzIiwgImNs ZWFyZWQiKTsKK2RpZmYgLXVwIGNocm9taXVtLTExNS4wLjU3OTAuMzIvY29udGVudC9icm93c2Vy L3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRleHRfd3JhcHBlci5jYy5tZSBjaHJv bWl1bS0xMTUuMC41NzkwLjMyL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNl X3dvcmtlcl9jb250ZXh0X3dyYXBwZXIuY2MKKy0tLSBjaHJvbWl1bS0xMTUuMC41NzkwLjMyL2Nv bnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250ZXh0X3dyYXBw ZXIuY2MubWUJMjAyMy0wNi0xOSAwODowNDowMi4yODcwNzI3MjIgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMTUuMC41NzkwLjMyL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dv cmtlcl9jb250ZXh0X3dyYXBwZXIuY2MJMjAyMy0wNi0xOSAwODoxODoyNC41NzY4MTQ5NTAgKzAy MDAKK0BAIC0xMzkzLDcgKzEzOTMsOCBAQCB2b2lkIFNlcnZpY2VXb3JrZXJDb250ZXh0V3JhcHBl cjo6TWF5YmVQCisgICAgIHJldHVybjsKKyAgIH0KKyAKKy0gIGF1dG8gW2RvY3VtZW50X3VybCwg a2V5LCBjYWxsYmFja10gPSBzdGQ6Om1vdmUoKnJlcXVlc3QpOworKyAgYXV0byBbZF91LCBrZXks IGNhbGxiYWNrXSA9IHN0ZDo6bW92ZSgqcmVxdWVzdCk7CisrICBhdXRvIGRvY3VtZW50X3VybCA9 IGRfdTsKKyAKKyAgIERDSEVDSyhkb2N1bWVudF91cmwuaXNfdmFsaWQoKSk7CisgICBUUkFDRV9F VkVOVDEoIlNlcnZpY2VXb3JrZXIiLAorZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90 aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2Fs Z29yaXRobS5jYy50aGFuIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlkX2xheW91dF9hbGdvcml0aG0uY2MKKy0tLSBj aHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5 b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGhtLmNjLnRoYW4JMjAyMy0xMi0xOSAxNzo1Nzo1 Ni4yMDUxOTcyNDYgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGhtLmNj CTIwMjMtMTItMTkgMTg6MTA6MTMuNzc4NjM0NTMxICswMTAwCitAQCAtMzUyNyw4ICszNTI3LDgg QEAgdm9pZCBHcmlkTGF5b3V0QWxnb3JpdGhtOjpQbGFjZUdyaWRJdGVtcworICAgRENIRUNLKG91 dF9yb3dfYnJlYWtfYmV0d2Vlbik7CisgCisgICBjb25zdCBhdXRvJiBjb250YWluZXJfc3BhY2Ug PSBHZXRDb25zdHJhaW50U3BhY2UoKTsKKy0gIGNvbnN0IGF1dG8mIFtncmlkX2l0ZW1zLCBsYXlv dXRfZGF0YSwgdHJlZV9zaXplXSA9IHNpemluZ190cmVlLlRyZWVSb290RGF0YSgpOworLQorKyAg Y29uc3QgYXV0byYgW2dyaWRfaXRlbXMsIGxfZCwgdHJlZV9zaXplXSA9IHNpemluZ190cmVlLlRy ZWVSb290RGF0YSgpOworKyAgY29uc3QgYXV0byYgbGF5b3V0X2RhdGEgPSBsX2Q7CisgICBjb25z dCBhdXRvKiBjYWNoZWRfbGF5b3V0X3N1YnRyZWUgPSBjb250YWluZXJfc3BhY2UuR2V0R3JpZExh eW91dFN1YnRyZWUoKTsKKyAgIGNvbnN0IGF1dG8gY29udGFpbmVyX3dyaXRpbmdfZGlyZWN0aW9u ID0KKyAgICAgICBjb250YWluZXJfc3BhY2UuR2V0V3JpdGluZ0RpcmVjdGlvbigpOworQEAgLTM2 OTEsOCArMzY5MSw5IEBAIHZvaWQgR3JpZExheW91dEFsZ29yaXRobTo6UGxhY2VHcmlkSXRlbXMK KyAKKyAgIC8vIFRPRE8oaWtpbHBhdHJpY2spOiBVcGRhdGUgfFNldEhhc1NlZW5BbGxDaGlsZHJl bnwgYW5kIGVhcmx5IGV4aXQgaWYgdHJ1ZS4KKyAgIGNvbnN0IGF1dG8mIGNvbnN0cmFpbnRfc3Bh Y2UgPSBHZXRDb25zdHJhaW50U3BhY2UoKTsKKy0gIGNvbnN0IGF1dG8mIFtncmlkX2l0ZW1zLCBs YXlvdXRfZGF0YSwgdHJlZV9zaXplXSA9IHNpemluZ190cmVlLlRyZWVSb290RGF0YSgpOworLQor KyAgY29uc3QgYXV0byYgW2dfaSwgbF9kLCB0cmVlX3NpemVdID0gc2l6aW5nX3RyZWUuVHJlZVJv b3REYXRhKCk7CisrICBjb25zdCBhdXRvJiBncmlkX2l0ZW1zID0gZ19pOworKyAgY29uc3QgYXV0 byYgbGF5b3V0X2RhdGEgPSBsX2Q7CisgICBjb25zdCBhdXRvKiBjYWNoZWRfbGF5b3V0X3N1YnRy ZWUgPSBjb25zdHJhaW50X3NwYWNlLkdldEdyaWRMYXlvdXRTdWJ0cmVlKCk7CisgICBjb25zdCBh dXRvIGNvbnRhaW5lcl93cml0aW5nX2RpcmVjdGlvbiA9CisgICAgICAgY29uc3RyYWludF9zcGFj ZS5HZXRXcml0aW5nRGlyZWN0aW9uKCk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMvbGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3By ZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFnZXIuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci9wcmVkaWN0b3JzL2xjcF9jcml0aWNhbF9wYXRoX3ByZWRpY3Rvci9w cmV3YXJtX2h0dHBfZGlza19jYWNoZV9tYW5hZ2VyLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jaHJvbWUvYnJvd3Nlci9wcmVkaWN0b3JzL2xjcF9jcml0aWNhbF9wYXRoX3ByZWRpY3Rv ci9wcmV3YXJtX2h0dHBfZGlza19jYWNoZV9tYW5hZ2VyLmNjLm1lCTIwMjQtMDItMjUgMTg6MDM6 NTEuNjU0NTc5NTc5ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJv d3Nlci9wcmVkaWN0b3JzL2xjcF9jcml0aWNhbF9wYXRoX3ByZWRpY3Rvci9wcmV3YXJtX2h0dHBf ZGlza19jYWNoZV9tYW5hZ2VyLmNjCTIwMjQtMDItMjUgMTg6MTI6NDUuMTQ0Mjg3NzUwICswMTAw CitAQCAtMTM2LDcgKzEzNiw4IEBAIHZvaWQgUHJld2FybUh0dHBEaXNrQ2FjaGVNYW5hZ2VyOjpN YXliZVAKKyAgIHN0ZDo6cGFpcjx1cmw6Ok9yaWdpbiwgR1VSTD4gb3JpZ2luX2FuZF91cmw7Cisg ICBzdGQ6OnN3YXAob3JpZ2luX2FuZF91cmwsIHF1ZXVlZF9qb2JzXy5mcm9udCgpKTsKKyAgIHF1 ZXVlZF9qb2JzXy5wb3AoKTsKKy0gIGNvbnN0IGF1dG8mIFtvcmlnaW4sIHVybF0gPSBvcmlnaW5f YW5kX3VybDsKKysgIGNvbnN0IGF1dG8mIFtvcmlnaW4sIHVdID0gb3JpZ2luX2FuZF91cmw7Cisr ICBjb25zdCBhdXRvJiB1cmwgPSB1OworICAgVFJBQ0VfRVZFTlRfV0lUSF9GTE9XMSgKKyAgICAg ICAibG9hZGluZyIsICJQcmV3YXJtSHR0cERpc2tDYWNoZU1hbmFnZXI6Ok1heWJlUHJvY2Vzc05l eHRRdWV1ZWRKb2IiLAorICAgICAgIFRSQUNFX0lEX0xPQ0FMKHRoaXMpLAorLS0tIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L2NvbnRlbnQvY29tbW9uL3NlcnZpY2Vfd29ya2VyL3JhY2VfbmV0d29y a19yZXF1ZXN0X3VybF9sb2FkZXJfY2xpZW50LmNjLndvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVj dHVyZWRfYmluZGluZwkyMDI0LTA1LTA1IDE2OjIyOjQ3LjU4MTA3MDg2OCArMDIwMAorKysrIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbnRlbnQvY29tbW9uL3NlcnZpY2Vfd29ya2VyL3JhY2Vf bmV0d29ya19yZXF1ZXN0X3VybF9sb2FkZXJfY2xpZW50LmNjCTIwMjQtMDUtMDUgMTY6Mjc6MTgu ODU5OTcyNDgxICswMjAwCitAQCAtNDE3LDcgKzQxNyw4IEBACisgICB9CisgCisgICBTQ09QRURf Q1JBU0hfS0VZX1NUUklORzI1NigiU1dSYWNlIiwgInJlcXVlc3RfdXJsIiwgcmVxdWVzdF8udXJs LnNwZWMoKSk7CistICBhdXRvIFtyZWFkX3Jlc3VsdCwgcmVhZF9idWZmZXJdID0gcmVhZF9idWZm ZXJfbWFuYWdlcl8tPlJlYWREYXRhKCk7CisrICBhdXRvIFtyLCByZWFkX2J1ZmZlcl0gPSByZWFk X2J1ZmZlcl9tYW5hZ2VyXy0+UmVhZERhdGEoKTsKKysgIGF1dG8gcmVhZF9yZXN1bHQgPSByOwor ICAgVFJBQ0VfRVZFTlRfV0lUSF9GTE9XMigiU2VydmljZVdvcmtlciIsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICJTZXJ2aWNlV29ya2VyUmFjZU5ldHdvcmtSZXF1ZXN0VVJMTG9hZGVyQ2xp ZW50OjpSZWFkIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgVFJBQ0VfSURfTE9DQUwodGhp cyksCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0uc3BlYyBiL2Nocm9taXVtLnNwZWMKaW5kZXggYmJj NzExOC4uNTAzMTU3NiAxMDA2NDQKLS0tIGEvY2hyb21pdW0uc3BlYworKysgYi9jaHJvbWl1bS5z cGVjCkBAIC03MSw3ICs3MSw3IEBACiAlZW5kaWYKIAogJWlmIDAlez9yaGVsfSA9PSA3Ci0lZ2xv YmFsIGNocm9taXVtX3B5YmluIC91c3IvYmluL3B5dGhvbjMKKyVnbG9iYWwgY2hyb21pdW1fcHli aW4gL29wdC9yaC9yaC1weXRob24zOC9yb290L3Vzci9iaW4vcHl0aG9uCiAlZWxzZQogJWlmIDAl ez9yaGVsfSA9PSA4CiAlZ2xvYmFsIGNocm9taXVtX3B5YmluIC91c3IvYmluL3B5dGhvbjMuOQpA QCAtMTg0LDEzICsxODQsMTcgQEAKICVlbmRpZgogCiAjIGVuYWJsZSBxdCBiYWNrZW5kCi0laWYg MCV7P3JoZWx9ID4gOSB8fCAwJXs/ZmVkb3JhfQogJWdsb2JhbCB1c2VfcXQ2IDAKKyVnbG9iYWwg dXNlX3F0IDAKKworJWlmIDAlez9yaGVsfSA+IDkgfHwgMCV7P2ZlZG9yYX0KKyVnbG9iYWwgdXNl X3F0NiAxCiAlZ2xvYmFsIHVzZV9xdCAxCiAlZWxzZQotJWdsb2JhbCB1c2VfcXQ2IDAKKyVpZiAw JXs/cmhlbH0gPT0gOAogJWdsb2JhbCB1c2VfcXQgMQogJWVuZGlmCislZW5kaWYKIAogIyBDaHJv bWl1bSdzIGZvcmsgb2YgSUNVIGlzIG5vdyBzb21ldGhpbmcgd2UgY2FuJ3QgdW5idW5kbGUuCiAj IFRoaXMgaXMgbGVmdCBoZXJlIHRvIGVhc2UgdGhlIGNoYW5nZSBpZiB0aGF0IGV2ZXIgc3dpdGNo ZXMuCkBAIC0zMDksOCArMzEzLDggQEAKICVlbmRpZgogCiBOYW1lOgljaHJvbWl1bSV7Y2hyb21p dW1fY2hhbm5lbH0KLVZlcnNpb246IDEyNC4wLjYzNjcuMTE4Ci1SZWxlYXNlOiAyJXs/ZGlzdH0K K1ZlcnNpb246IDEyNC4wLjYzNjcuMTU1CitSZWxlYXNlOiAxJXs/ZGlzdH0KIFN1bW1hcnk6IEEg V2ViS2l0IChCbGluaykgcG93ZXJlZCB3ZWIgYnJvd3NlciB0aGF0IEdvb2dsZSBkb2Vzbid0IHdh bnQgeW91IHRvIHVzZQogVXJsOiBodHRwOi8vd3d3LmNocm9taXVtLm9yZy9Ib21lCiBMaWNlbnNl OiBCU0QtMy1DbGF1c2UgQU5EIExHUEwtMi4xLW9yLWxhdGVyIEFORCBBcGFjaGUtMi4wIEFORCBJ SkcgQU5EIE1JVCBBTkQgR1BMLTIuMC1vci1sYXRlciBBTkQgSVNDIEFORCBPcGVuU1NMIEFORCAo TVBMLTEuMSBPUiBHUEwtMi4wLW9ubHkgT1IgTEdQTC0yLjAtb25seSkKQEAgLTQwMSw1MCArNDA1 LDUxIEBAIFBhdGNoMTA4OiBjaHJvbWl1bS0xMTgtZWw3X3Y0bDJfcXVhbnRpemF0aW9uLnBhdGNo CiBQYXRjaDEwOTogY2hyb21pdW0tMTE0LXdpcmVsZXNzLWVsNy5wYXRjaAogUGF0Y2gxMTA6IGNo cm9taXVtLTExNS1idWlsZGZsYWctZWw3LnBhdGNoCiBQYXRjaDExMTogY2hyb21pdW0tMTIyLWVs Ny1pbmxpbmUtZnVuY3Rpb24ucGF0Y2gKK1BhdGNoMTEyOiBjaHJvbWl1bS0xMjQtZWw3LXBvd2Yu cGF0Y2gKIFBhdGNoMTEzOiBjaHJvbWl1bS0xMjEtZWw3LWNsYW5nLXZlcnNpb24td2FybmluZy5w YXRjaAogUGF0Y2gxMTQ6IGNocm9taXVtLTEyMy1lbDctY2xhbmctYnVpbGQtZmFpbHVyZS5wYXRj aAorUGF0Y2gxMTU6IGNocm9taXVtLTEyNC1lbDctc2l6ZV90LnBhdGNoCisKKyMgZml4ZXMgZm9y IG9sZCBjbGFuZyB2ZXJzaW9uIGluIGVsNyAoY2xhbmcgPD0gMTUpCisjIGNvbXBpbGVyIGJ1aWxk IGVycm9ycywgbm8gbWF0Y2hpbmcgY29uc3RydWN0b3IgZm9yIGluaXRpYWxpemF0aW9uCitQYXRj aDExNjogY2hyb21pdW0tMTI0LW5vX21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoCitQYXRjaDEx NzogY2hyb21pdW0tMTE1LWNvbXBpbGVyLVNrQ29sb3I0Zi5wYXRjaAorCisjIHdvcmthcm91bmQg Zm9yIGNsYW5nIGJ1ZywgaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2lzc3Vl cy81NzgyNgorUGF0Y2gxMTg6IGNocm9taXVtLTEyNC13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1 Y3R1cmVkX2JpbmRpbmcucGF0Y2gKKworIyBtaXNzaW5nIHR5cGVuYW1lCitQYXRjaDExOTogY2hy b21pdW0tMTI0LXR5cGVuYW1lLnBhdGNoCisKKyMgZXJyb3I6IGludmFsaWQgb3BlcmFuZHMgdG8g YmluYXJ5IGV4cHJlc3Npb24KK1BhdGNoMTIwOiBjaHJvbWl1bS0xMTctc3RyaW5nLWNvbnZlcnQu cGF0Y2gKK1BhdGNoMTIxOiBjaHJvbWl1bS0xMTktYXNzZXJ0LnBhdGNoCitQYXRjaDEyMjogY2hy b21pdW0tMTI0LWVsNy1jb25zdGV4cHIucGF0Y2gKIAogIyBzeXN0ZW0gZmZtcGVnCiAjIG5lZWQg Zm9yIG9sZCBmZm1wZWcgNS54IG9uIGVwZWw5Ci1QYXRjaDExNTogY2hyb21pdW0tMTA3LWZmbXBl Zy01LngtZHVyYXRpb24ucGF0Y2gKK1BhdGNoMTMwOiBjaHJvbWl1bS0xMDctZmZtcGVnLTUueC1k dXJhdGlvbi5wYXRjaAogIyBkaXNhYmxlIHRoZSBjaGVjawotUGF0Y2gxMTY6IGNocm9taXVtLTEw Ny1wcm9wcmlldGFyeS1jb2RlY3MucGF0Y2gKK1BhdGNoMTMxOiBjaHJvbWl1bS0xMDctcHJvcHJp ZXRhcnktY29kZWNzLnBhdGNoCiAjIGZpeCB0YWIgY3Jhc2ggd2l0aCBTSUdUUkFQIGVycm9yIHdo ZW4gdXNpbmcgc3lzdGVtIGZmbXBlZwotUGF0Y2gxMTc6IGNocm9taXVtLTExOC1zaWd0cmFwX3N5 c3RlbV9mZm1wZWcucGF0Y2gKK1BhdGNoMTMyOiBjaHJvbWl1bS0xMTgtc2lndHJhcF9zeXN0ZW1f ZmZtcGVnLnBhdGNoCiAjIG5lZWQgZm9yIG9sZCBmZm1wZWcgNi4wLzUueCBvbiBlcGVsOSBhbmQg ZmVkb3JhIDwgNDAKLVBhdGNoMTE4OiBjaHJvbWl1bS0xMjEtc3lzdGVtLW9sZC1mZm1wZWcucGF0 Y2gKK1BhdGNoMTMzOiBjaHJvbWl1bS0xMjEtc3lzdGVtLW9sZC1mZm1wZWcucGF0Y2gKIAotIyBy ZXZlcnQgQVYxIFZBQVBJIHZpZGVvIGVuY29kZSBkdWUgdG8gb2xkIGxpYnZhIG9uIGVsOQotUGF0 Y2gxMzA6IGNocm9taXVtLTEyMi1yZXZlcnQtYXYxZW5jLWVsOS5wYXRjaAorIyByZXZlcnQgQVYx IFZBQVBJIHZpZGVvIGVuY29kZSBkdWUgdG8gb2xkIGxpYnZhIG9uIGVsOSAocmhlbDkuMykKK1Bh dGNoMTQwOiBjaHJvbWl1bS0xMjItcmV2ZXJ0LWF2MWVuYy1lbDkucGF0Y2gKIAogIyBmaWxlIGNv bmZsaWN0IHdpdGggb2xkIGtlcm5lbCBvbiBlbDgvZWw5Ci1QYXRjaDE0MDogY2hyb21pdW0tMTE4 LWRtYV9idWZfZXhwb3J0X3N5bmNfZmlsZS1jb25mbGljdC5wYXRjaAotCi0jIGZpeGVzIGZvciBv bGQgY2xhbmcgdmVyc2lvbiBpbiBmZWRvcmEgPCAzOCBlbmQgZXBlbCA8IDggKG9sZCBjbGFuZyA8 PSAxNSkKLSMgY29tcGlsZXIgYnVpbGQgZXJyb3JzLCBubyBtYXRjaGluZyBjb25zdHJ1Y3RvciBm b3IgaW5pdGlhbGl6YXRpb24KLVBhdGNoMzAwOiBjaHJvbWl1bS0xMjMtbm9fbWF0Y2hpbmdfY29u c3RydWN0b3IucGF0Y2gKLVBhdGNoMzAxOiBjaHJvbWl1bS0xMTUtY29tcGlsZXItU2tDb2xvcjRm LnBhdGNoCi0KLSMgd29ya2Fyb3VuZCBmb3IgY2xhbmcgYnVnLCBodHRwczovL2dpdGh1Yi5jb20v bGx2bS9sbHZtLXByb2plY3QvaXNzdWVzLzU3ODI2Ci1QYXRjaDMwMjogY2hyb21pdW0tMTIzLXdv cmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZy5wYXRjaAotCi0jIG1pc3Npbmcg dHlwZW5hbWUKLVBhdGNoMzAzOiBjaHJvbWl1bS0xMjMtdHlwZW5hbWUucGF0Y2gKLQotIyBlcnJv cjogaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgZXhwcmVzc2lvbgotUGF0Y2gzMDQ6IGNocm9t aXVtLTExNy1zdHJpbmctY29udmVydC5wYXRjaAorUGF0Y2gxNDE6IGNocm9taXVtLTExOC1kbWFf YnVmX2V4cG9ydF9zeW5jX2ZpbGUtY29uZmxpY3QucGF0Y2gKIAogIyBkaXNhYmxlIG1lbW9yeSB0 YWdnaW5nIGluIGVwZWw3IGFuZCBlcGVsOCBvbiBhYXJjaDY0IGR1ZSB0byBuZXcgZmVhdHVyZSBJ RlVOQy1SZXNvbHZlcgogIyBub3Qgc3VwcG9ydGVkIGluIG9sZCBnbGliYyA8IDIuMzAsIGVycm9y OiBmYXRhbCBlcnJvcjogJ3N5cy9pZnVuYy5oJyBmaWxlIG5vdCBmb3VuZAogUGF0Y2gzMDU6IGNo cm9taXVtLTEyNC1hcm02NC1tZW1vcnlfdGFnZ2luZy5wYXRjaAogCi1QYXRjaDMwNjogY2hyb21p dW0tMTE5LWFzc2VydC5wYXRjaAotCiAjIGNvbXBpbGVyIGVycm9ycyBvbiBlcGVsCiAjIHJldmVy dCBpdCBmb3Igb2xkIGNsYW5nIG9uIHJoZWwgYW5kIGYzOAogUGF0Y2gzMDc6IGNocm9taXVtLTEy MS12OC1jKysyMC1wMS5wYXRjaAogUGF0Y2gzMDg6IGNocm9taXVtLTEyMy12OC1jKysyMC5wYXRj aAotUGF0Y2gzMDk6IGNocm9taXVtLTEyMy1jb25zdGV4cHIucGF0Y2gKIAogIyBtaXNzaW5nIGlu Y2x1ZGUgaGVhZGVyIGZpbGVzCiBQYXRjaDMxMDogY2hyb21pdW0tMTIzLW1pc3NpbmctaGVhZGVy LWZpbGVzLnBhdGNoCkBAIC00NTcsOSArNDYyLDYgQEAgUGF0Y2gzMTM6IGNocm9taXVtLTEyMy1y dXN0LWNsYXBfbGV4LnBhdGNoCiAKIFBhdGNoMzE0OiBjaHJvbWl1bS0xMjQtY2xhbmcxNi1idWls ZGZsYWdzLnBhdGNoCiAKLSMgYXNzaWdubWVudC1leHByZXNzaW9ucyBub3Qgc3Vwb3J0IGluIHB5 dGhvbiA8IDMuOCBvbiBlbCA3LzgKLVBhdGNoMzE1OiBjaHJvbWl1bS0xMjQtcHl0aG9uMy1hc3Np Z25tZW50LWV4cHJlc3Npb25zLnBhdGNoCi0KICMgYWRkIC1mdHJpdmlhbC1hdXRvLXZhci1pbml0 PXplcm8gYW5kIC1md3JhcHYKIFBhdGNoMzE2OiBjaHJvbWl1bS0xMjItY2xhbmctYnVpbGQtZmxh Z3MucGF0Y2gKIApAQCAtNDc0LDkgKzQ3Niw2IEBAIFBhdGNoMzUyOiBjaHJvbWl1bS0xMTctd29y a2Fyb3VuZF9mb3JfY3Jhc2hfb25fQlRJX2NhcGFibGVfc3lzdGVtLnBhdGNoCiAjIHJlbW92ZSBm bGFnIHNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludCwgaXQnIG5vdCBzdXBwb3J0ZWQg aW4gY2xhbmcgPD0gMTcKIFBhdGNoMzU0OiBjaHJvbWl1bS0xMjAtc3BsaXQtdGhyZXNob2xkLWZv ci1yZWctd2l0aC1oaW50LnBhdGNoCiAKLSMgZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdudWxs cHRyX3QnCi1QYXRjaDM1NTogY2hyb21pdW0tMTIxLW51bGxwdHJfdC13aXRob3V0LW5hbWVzcGFj ZS1zdGQucGF0Y2gKLQogIyBkaXNhYmxlIEZGbXBlZ0FsbG93TGlzdHMgYnkgZGVmYXVsdCB0byBh bGxvdyBleHRlcm5hbCBmZm1wZWcKIHBhdGNoMzU2OiBjaHJvbWl1bS0xMjItZGlzYWJsZS1GRm1w ZWdBbGxvd0xpc3RzLnBhdGNoCiAKQEAgLTQ4NCw3ICs0ODMsNyBAQCBwYXRjaDM1NjogY2hyb21p dW0tMTIyLWRpc2FibGUtRkZtcGVnQWxsb3dMaXN0cy5wYXRjaAogUGF0Y2gzNTc6IGNocm9taXVt LTEyMi1jbGFuZzE2LWRpc2FibGUtYXV0by11cGdyYWRlLWRlYnVnLWluZm8ucGF0Y2gKIAogIyBz ZXQgY2xhbmdfbGliIHBhdGgKLVBhdGNoMzU4OiBjaHJvbWl1bS0xMjItcnVzdC1jbGFuZ19saWIu cGF0Y2gKK1BhdGNoMzU4OiBjaHJvbWl1bS0xMjQtcnVzdC1jbGFuZ19saWIucGF0Y2gKIAogIyBF UlJPUiBVbnJlc29sdmVkIGRlcGVuZGVuY2llcwogUGF0Y2gzNTk6IGNocm9taXVtLTEyNC1saWJh dmlmLWRlcHMucGF0Y2gKQEAgLTYwMCw2ICs1OTksMTAgQEAgU291cmNlMTU6IGh0dHBzOi8vcmVn aXN0cnkubnBtanMub3JnL0Blc2J1aWxkL2xpbnV4LWFybTY0Ly0vbGludXgtYXJtNjQtJXtlc2J1 aWwKIEJ1aWxkUmVxdWlyZXM6IGdvbGFuZy1naXRodWItZXZhbnctZXNidWlsZAogJWVuZGlmCiAK KyVpZiAwJXs/cmhlbH0gPT0gNworQnVpbGRSZXF1aXJlczogcmgtcHl0aG9uMzgKKyVlbmRpZgor CiAlaWYgJXtjbGFuZ30KICVpZiAwJXs/cmhlbH0gPT0gNwogQnVpbGRSZXF1aXJlczogbGx2bS10 b29sc2V0LSV7bGx2bV90b29sc2V0X3ZlcnNpb259CkBAIC0xMTY5LDExICsxMTcyLDExIEBAIHVk ZXYuCiAKICVpZiAhICV7YnVuZGxlZmZtcGVnZnJlZX0KICVpZiAwJXs/cmhlbH0gPT0gOQotJXBh dGNoIC1QMTE1IC1wMSAtYiAuZmZtcGVnLTUueC1kdXJhdGlvbgorJXBhdGNoIC1QMTMwIC1wMSAt YiAuZmZtcGVnLTUueC1kdXJhdGlvbgogJWVuZGlmCi0lcGF0Y2ggLVAxMTYgLXAxIC1iIC5wcm9w LWNvZGVjcwotJXBhdGNoIC1QMTE3IC1wMSAtYiAuc2lndHJhcF9zeXN0ZW1fZmZtcGVnCi0lcGF0 Y2ggLVAxMTggLXAxIC1iIC5zeXN0ZW0tb2xkLWZmbXBlZworJXBhdGNoIC1QMTMxIC1wMSAtYiAu cHJvcC1jb2RlY3MKKyVwYXRjaCAtUDEzMiAtcDEgLWIgLnNpZ3RyYXBfc3lzdGVtX2ZmbXBlZwor JXBhdGNoIC1QMTMzIC1wMSAtYiAuc3lzdGVtLW9sZC1mZm1wZWcKICVlbmRpZgogCiAjIEVQRUwg c3BlY2lmaWMgcGF0Y2hlcwpAQCAtMTE5MCwyNiArMTE5MywyOCBAQCB1ZGV2LgogJXBhdGNoIC1Q MTA5IC1wMSAtYiAud2lyZWxlc3MKICVwYXRjaCAtUDExMCAtcDEgLWIgLmJ1aWxkZmxhZy1lbDcK ICVwYXRjaCAtUDExMSAtcDEgLWIgLmlubGluZS1mdW5jdGlvbi1lbDcKKyVwYXRjaCAtUDExMiAt cDEgLWIgLmVsNy1wb3dmCiAlcGF0Y2ggLVAxMTMgLXAxIC1iIC5lbDctY2xhbmctdmVyc2lvbi13 YXJuaW5nCiAlcGF0Y2ggLVAxMTQgLXAxIC1iIC5jbGFuZy1idWlsZC1mYWlsdXJlCi0lcGF0Y2gg LVAzMDAgLXAxIC1iIC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgotJXBhdGNoIC1QMzAxIC1wMSAt YiAud29ya2Fyb3VuZF9jbGFuZy1Ta0NvbG9yNGYKLSVwYXRjaCAtUDMwMiAtcDEgLWIgLndvcmth cm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZwotJXBhdGNoIC1QMzAzIC1wMSAtYiAu dHlwZW5hbWUKLSVwYXRjaCAtUDMwNCAtcDEgLWIgLnN0cmluZy1jb252ZXJ0Ci0lcGF0Y2ggLVAz MDYgLXAxIC1iIC5hc3NlcnQKKyVwYXRjaCAtUDExNSAtcDEgLWIgLmVsNy1zaXplX3QKKyVwYXRj aCAtUDExNiAtcDEgLWIgLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCislcGF0Y2ggLVAxMTcgLXAx IC1iIC53b3JrYXJvdW5kX2NsYW5nLVNrQ29sb3I0ZgorJXBhdGNoIC1QMTE4IC1wMSAtYiAud29y a2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nCislcGF0Y2ggLVAxMTkgLXAxIC1i IC50eXBlbmFtZQorJXBhdGNoIC1QMTIwIC1wMSAtYiAuc3RyaW5nLWNvbnZlcnQKKyVwYXRjaCAt UDEyMSAtcDEgLWIgLmFzc2VydAorJXBhdGNoIC1QMTIyIC1wMSAtYiAuY29uc3RleHByCiAlZW5k aWYKIAotJWlmIDAlez9yaGVsfSA9PSA4IHx8IDAlez9yaGVsfSA9PSA5Ci0lcGF0Y2ggLVAxNDAg LXAxIC1iIC5kbWFfYnVmX2V4cG9ydF9zeW5jX2ZpbGUtY29uZmxpY3QKKyVpZiAwJXs/cmhlbH0g PT0gOQorJXBhdGNoIC1QMTQwIC1wMSAtYiAucmV2ZXJ0LWF2MWVuYwogJWVuZGlmCiAKLSVpZiAw JXs/cmhlbH0gPT0gOQotJXBhdGNoIC1QMTMwIC1wMSAtYiAucmV2ZXJ0LWF2MWVuYworJWlmIDAl ez9yaGVsfSA9PSA4IHx8IDAlez9yaGVsfSA9PSA5CislcGF0Y2ggLVAxNDEgLXAxIC1iIC5kbWFf YnVmX2V4cG9ydF9zeW5jX2ZpbGUtY29uZmxpY3QKICVlbmRpZgogCiAlaWYgMCV7P3JoZWx9ICYm IDAlez9yaGVsfSA8PSA4Ci0lcGF0Y2ggLVAzMTUgLXAxIC1iIC5hc3NpZ25tZW50LWV4cHJlc3Np b25zCiAlaWZhcmNoIGFhcmNoNjQKICVwYXRjaCAtUDMwNSAtcDEgLWIgLm1lbW9yeV90YWdnaW5n CiAlcGF0Y2ggLVAzMTcgLXAxIC1iIC5saWJkYXYxZC1hYXJjaDY0CkBAIC0xMjM4LDkgKzEyNDMs NiBAQCB1ZGV2LgogJWVuZGlmCiAKICVwYXRjaCAtUDM1NCAtcDEgLWIgLnJldmVydC1zcGxpdC10 aHJlc2hvbGQtZm9yLXJlZy13aXRoLWhpbnQKLSVpZiAhICV7dXNlX2N1c3RvbV9saWJjeHh9Ci0l cGF0Y2ggLVAzNTUgLXAxIC1iIC5udWxscHRyX3Qtd2l0aG91dC1uYW1lc3BhY2Utc3RkCi0lZW5k aWYKICVwYXRjaCAtUDM1NiAtcDEgLWIgLmRpc2FibGUtRkZtcGVnQWxsb3dMaXN0cwogJXBhdGNo IC1QMzU3IC1wMSAtYiAuY2xhbmcxNi1kaXNhYmxlLWF1dG8tdXBncmFkZS1kZWJ1Zy1pbmZvCiAl cGF0Y2ggLVAzNTggLXAxIC1iIC5ydXN0LWNsYW5nX2xpYgpAQCAtMTM4MSwxMSArMTM4Myw2IEBA IGNwIC1hIHRoaXJkX3BhcnR5L2RhdjFkL3ZlcnNpb24vdmVyc2lvbi5oIHRoaXJkX3BhcnR5L2Rh djFkL2xpYmRhdjFkL2luY2x1ZGUvZGF2CiAlZW5kaWYKIAogJWJ1aWxkCi0jIHV0ZjggaXNzdWUg b24gZXBlbDcsIEludGVybmFsIHBhcnNpbmcgZXJyb3IgJ2FzY2lpJyBjb2RlYyBjYW4ndAotIyBk ZWNvZGUgYnl0ZSAweGUyIGluIHBvc2l0aW9uIDQ3NDogb3JkaW5hbCBub3QgaW4gcmFuZ2UoMTI4 KQotJWlmIDAlez9yaGVsfSA9PSA3Ci1leHBvcnQgTEFORz1lbl9VUy5VVEYtOAotJWVuZGlmCiAK ICMgcmVkdWNlIHdhcm5pbmdzCiAlaWYgJXtjbGFuZ30KQEAgLTE0MzgsNiArMTQzNSw3IEBAIGV4 cG9ydCBSVVNURkxBR1MKIAogIyBlbmFibGUgdG9vbHNldCBvbiBlbDcKICVpZiAwJXs/cmhlbH0g PT0gNworLiAvb3B0L3JoL3JoLXB5dGhvbjM4L2VuYWJsZQogJWlmICV7Y2xhbmd9CiAuIC9vcHQv cmgvbGx2bS10b29sc2V0LSV7bGx2bV90b29sc2V0X3ZlcnNpb259L2VuYWJsZQogJWVsc2UKQEAg LTIxMTUsNiArMjExMywxMSBAQCBnZXRlbnQgZ3JvdXAgY2hyb21lLXJlbW90ZS1kZXNrdG9wID4v ZGV2L251bGwgfHwgZ3JvdXBhZGQgLXIgY2hyb21lLXJlbW90ZS1kZXNrdAogJWVuZGlmCiAKICVj aGFuZ2Vsb2cKKyogV2VkIE1heSAwOCAyMDI0IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+IC0g MTI0LjAuNjM2Ny4xNTUtMQorLSB1cGRhdGUgdG8gMTI0LjAuNjM2Ny4xNTUKKyAgKiBIaWdoIENW RS0yMDI0LTQ1NTg6IFVzZSBhZnRlciBmcmVlIGluIEFOR0xFCisgICogSGlnaCBDVkUtMjAyNC00 NTU5OiBIZWFwIGJ1ZmZlciBvdmVyZmxvdyBpbiBXZWJBdWRpbworCiAqIFN1biBNYXkgMDUgMjAy NCBUaGFuIE5nbyA8dGhhbkByZWRoYXQuY29tPiAtIDEyNC4wLjYzNjcuMTE4LTIKIC0gZml4ZWQg YnVpbGQgZXJyb3JzIG9uIGVsOAogLSByZWZyZXNoZWQgY2xlYW5fZmZtcGVnLnNoCgpkaWZmIC0t Z2l0IGEvc2tpYS12c3gtaW5zdHJ1Y3Rpb25zLnBhdGNoIGIvc2tpYS12c3gtaW5zdHJ1Y3Rpb25z LnBhdGNoCmluZGV4IDFjZWMzMWUuLmZhOWQ1YzcgMTAwNjQ0Ci0tLSBhL3NraWEtdnN4LWluc3Ry dWN0aW9ucy5wYXRjaAorKysgYi9za2lhLXZzeC1pbnN0cnVjdGlvbnMucGF0Y2gKQEAgLTEsNyAr MSw3IEBACi1JbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL0JV SUxELmduCitJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvc2tpYS9C VUlMRC5nbgogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PQotLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuNjAub3JpZy90aGly ZF9wYXJ0eS9za2lhL0JVSUxELmduCi0rKysgY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9w YXJ0eS9za2lhL0JVSUxELmduCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgub3JpZy90aGly ZF9wYXJ0eS9za2lhL0JVSUxELmduCisrKysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRf cGFydHkvc2tpYS9CVUlMRC5nbgogQEAgLTE5MSw2ICsxOTEsMTIgQEAgb3B0cygic2t4Iikgewog ICAgfQogIH0KQEAgLTM1LDEwICszNSwxMCBAQCBJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42 MC90aGlyZF9wYXJ0eS9za2lhL0JVSUxELmduCiAgCiAgICBzb3VyY2VzID0gW10KICAgIHNvdXJj ZXMgKz0gc2tpYV9wYXRob3BzX3NvdXJjZXMKLUluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYw L3RoaXJkX3BhcnR5L3NraWEvZ24vc2tpYS9CVUlMRC5nbgorSW5kZXg6IGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L3RoaXJkX3BhcnR5L3NraWEvZ24vc2tpYS9CVUlMRC5nbgogPT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot LS0tIGNocm9taXVtLTEyNC4wLjYzNjcuNjAub3JpZy90aGlyZF9wYXJ0eS9za2lhL2duL3NraWEv QlVJTEQuZ24KLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvZ24v c2tpYS9CVUlMRC5nbgorLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4Lm9yaWcvdGhpcmRfcGFy dHkvc2tpYS9nbi9za2lhL0JVSUxELmduCisrKysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhp cmRfcGFydHkvc2tpYS9nbi9za2lhL0JVSUxELmduCiBAQCAtMTYzLDYgKzE2Myw4IEBAIGNvbmZp ZygiZGVmYXVsdCIpIHsKICAgICAgICAiLW1mcG1hdGg9c3NlIiwKICAgICAgXQpAQCAtNDgsMTAg KzQ4LDEwIEBAIEluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEv Z24vc2tpYS9CVUlMRC5nbgogICAgfQogIAogICAgaWYgKG1hbGxvYyAhPSAiIiAmJiAhaXNfd2lu KSB7Ci1JbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL2luY2x1 ZGUvY29yZS9Ta1R5cGVzLmgKK0luZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9w YXJ0eS9za2lhL2luY2x1ZGUvY29yZS9Ta1R5cGVzLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1 bS0xMjQuMC42MzY3LjYwLm9yaWcvdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL2NvcmUvU2tUeXBl cy5oCi0rKysgY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUv Y29yZS9Ta1R5cGVzLmgKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC5vcmlnL3RoaXJkX3Bh cnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrVHlwZXMuaAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcu MTE4L3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9jb3JlL1NrVHlwZXMuaAogQEAgLTE5NSw1ICsx OTUsNDQgQEAgc3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBTS19JbnZhbGlkR2VuSQogICovCiAg c3RhdGljIGNvbnN0ZXhwciB1aW50MzJfdCBTS19JbnZhbGlkVW5pcXVlSUQgPSAwOwpAQCAtOTcs MTAgKzk3LDEwIEBAIEluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3Nr aWEvaW5jbHVkZS9jb3JlL1NrVHlwZXMuaAogKwogIAogICNlbmRpZgotSW5kZXg6IGNocm9taXVt LTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMvYmFzZS9Ta1NwaW5sb2NrLmNwcAor SW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3NraWEvc3JjL2Jhc2Uv U2tTcGlubG9jay5jcHAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjYwLm9y aWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvYmFzZS9Ta1NwaW5sb2NrLmNwcAotKysrIGNocm9taXVt LTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMvYmFzZS9Ta1NwaW5sb2NrLmNwcAor LS0tIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4Lm9yaWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvYmFz ZS9Ta1NwaW5sb2NrLmNwcAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5 L3NraWEvc3JjL2Jhc2UvU2tTcGlubG9jay5jcHAKIEBAIC0zMyw3ICszMyw4IEBACiAgI2VuZGlm CiAgCkBAIC0xMTEsMTAgKzExMSwxMCBAQCBJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90 aGlyZF9wYXJ0eS9za2lhL3NyYy9iYXNlL1NrU3BpbmxvY2suY3BwCiAgICAgICNpbmNsdWRlIDxl bW1pbnRyaW4uaD4KICAgICAgc3RhdGljIHZvaWQgZG9fcGF1c2UoKSB7IF9tbV9wYXVzZSgpOyB9 CiAgI2Vsc2UKLUluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEv c3JjL29wdHMvU2tCaXRtYXBQcm9jU3RhdGVfb3B0cy5oCitJbmRleDogY2hyb21pdW0tMTI0LjAu NjM2Ny4xMTgvdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta0JpdG1hcFByb2NTdGF0ZV9vcHRz LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjYwLm9yaWcvdGhpcmRfcGFy dHkvc2tpYS9zcmMvb3B0cy9Ta0JpdG1hcFByb2NTdGF0ZV9vcHRzLmgKLSsrKyBjaHJvbWl1bS0x MjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tCaXRtYXBQcm9jU3RhdGVf b3B0cy5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgub3JpZy90aGlyZF9wYXJ0eS9za2lh L3NyYy9vcHRzL1NrQml0bWFwUHJvY1N0YXRlX29wdHMuaAorKysrIGNocm9taXVtLTEyNC4wLjYz NjcuMTE4L3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tCaXRtYXBQcm9jU3RhdGVfb3B0cy5o CiBAQCAtMjEsNyArMjEsMTMgQEAKICAvLyBUaGUgcmVzdCBhcmUgc2NhdHRlcnNob3QgYXQgdGhl IG1vbWVudCBidXQgSSB3YW50IHRvIGdldCB0aGVtCiAgLy8gYWxsIG1pZ3JhdGVkIHRvIGJlIG5v cm1hbCBjb2RlIGluc2lkZSBTa0JpdG1hcFByb2NTdGF0ZS5jcHAuCkBAIC0xMzAsMTAgKzEzMCwx MCBAQCBJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9v cHRzL1NrQml0bWFwUHJvY1N0YXRlX29wdHMuaAogICAgICAjaW5jbHVkZSA8aW1taW50cmluLmg+ CiAgI2VsaWYgZGVmaW5lZChTS19BUk1fSEFTX05FT04pCiAgICAgICNpbmNsdWRlIDxhcm1fbmVv bi5oPgotSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMv b3B0cy9Ta0JsaXRSb3dfb3B0cy5oCitJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhp cmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta0JsaXRSb3dfb3B0cy5oCiA9PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0g Y2hyb21pdW0tMTI0LjAuNjM2Ny42MC5vcmlnL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tC bGl0Um93X29wdHMuaAotKysrIGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tp YS9zcmMvb3B0cy9Ta0JsaXRSb3dfb3B0cy5oCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgu b3JpZy90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrQmxpdFJvd19vcHRzLmgKKysrKyBjaHJv bWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrQmxpdFJvd19v cHRzLmgKIEBAIC02OSw3ICs2OSw3IEBACiAgI2VuZGlmCiAgCkBAIC0xNDMsMTAgKzE0MywxMCBA QCBJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRz L1NrQmxpdFJvd19vcHRzLmgKICAKICAgICAgc3RhdGljIGlubGluZSBfX20xMjhpIFNrUE1TcmNP dmVyX1NTRTIoY29uc3QgX19tMTI4aSYgc3JjLCBjb25zdCBfX20xMjhpJiBkc3QpIHsKICAgICAg ICAgIF9fbTEyOGkgc2NhbGUgPSBfbW1fc3ViX2VwaTMyKF9tbV9zZXQxX2VwaTMyKDI1NiksCi1J bmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1Nr UmFzdGVyUGlwZWxpbmVfb3B0cy5oCitJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhp cmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta1Jhc3RlclBpcGVsaW5lX29wdHMuaAogPT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PQotLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuNjAub3JpZy90aGlyZF9wYXJ0eS9za2lhL3NyYy9v cHRzL1NrUmFzdGVyUGlwZWxpbmVfb3B0cy5oCi0rKysgY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90 aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFzdGVyUGlwZWxpbmVfb3B0cy5oCistLS0gY2hy b21pdW0tMTI0LjAuNjM2Ny4xMTgub3JpZy90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFz dGVyUGlwZWxpbmVfb3B0cy5oCisrKysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFy dHkvc2tpYS9zcmMvb3B0cy9Ta1Jhc3RlclBpcGVsaW5lX29wdHMuaAogQEAgLTEsNSArMSw2IEBA CiAgLyoKICAgKiBDb3B5cmlnaHQgMjAxOCBHb29nbGUgSW5jLgpAQCAtMjI3LDcgKzIyNyw3IEBA IEluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMv U2tSYXN0ZXJQaXBlbGluZV9vcHRzLmgKICsgICAgfQogKwogKyAgICBTSSBGICAgICBtYWQoRiBm LCBGIG0sIEYgYSkgeyByZXR1cm4gdmVjX21hZGQoZixtLGEpOyB9Ci0rICAgIFNJIEYgICAgbm1h ZChGIGYsIEYgbSwgRiBhKSB7IHJldHVybiB2ZWNfbXN1YihmLG0sYSk7IH0KKysgICAgU0kgRiAg ICBubWFkKEYgZiwgRiBtLCBGIGEpIHsgcmV0dXJuIHZlY19ubXN1YihmLG0sYSk7IH0KICsgICAg U0kgRiAgZmxvb3JfKEYgdikgeyByZXR1cm4gdmVjX2Zsb29yKHYpOyB9CiArICAgIFNJIEYgICBj ZWlsXyhGIHYpIHsgcmV0dXJuIHZlY19jZWlsKHYpOyB9CiArICAgIFNJIEYgICBzcXJ0XyhGIHYp IHsgcmV0dXJuIHZlY19zcXJ0KHYpOyB9CkBAIC01MjQsMTAgKzUyNCwxMCBAQCBJbmRleDogY2hy b21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrUmFzdGVyUGlw ZWxpbmVfb3B0cy5oCiAgICAgIH07CiAgCiAgICAgIHIgPSBsZXJwWSh0b3BSLCBib3R0b21SKTsK LUluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3JjL2Jhc2Uv U2tWeC5oCitJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvc2tpYS9z cmMvYmFzZS9Ta1Z4LmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjYwLm9y aWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvYmFzZS9Ta1Z4LmgKLSsrKyBjaHJvbWl1bS0xMjQuMC42 MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3JjL2Jhc2UvU2tWeC5oCistLS0gY2hyb21pdW0tMTI0 LjAuNjM2Ny4xMTgub3JpZy90aGlyZF9wYXJ0eS9za2lhL3NyYy9iYXNlL1NrVnguaAorKysrIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3NraWEvc3JjL2Jhc2UvU2tWeC5oCiBA QCAtNDIsNyArNDIsMTMgQEAKICAKICAjaWYgU0tWWF9VU0VfU0lNRApAQCAtNTQzLDEwICs1NDMs MTAgQEAgSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMv YmFzZS9Ta1Z4LmgKICAgICAgI2VsaWYgZGVmaW5lZChTS19BUk1fSEFTX05FT04pCiAgICAgICAg ICAjaW5jbHVkZSA8YXJtX25lb24uaD4KICAgICAgI2VsaWYgZGVmaW5lZChfX3dhc21fc2ltZDEy OF9fKQotSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMv Y29yZS9Ta0JsaXRNYXNrX29wdHNfc3NzZTMuY3BwCitJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0JsaXRNYXNrX29wdHNfc3NzZTMuY3Bw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny42MC5vcmlnL3RoaXJkX3BhcnR5 L3NraWEvc3JjL2NvcmUvU2tCbGl0TWFza19vcHRzX3Nzc2UzLmNwcAotKysrIGNocm9taXVtLTEy NC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0JsaXRNYXNrX29wdHNfc3Nz ZTMuY3BwCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgub3JpZy90aGlyZF9wYXJ0eS9za2lh L3NyYy9jb3JlL1NrQmxpdE1hc2tfb3B0c19zc3NlMy5jcHAKKysrKyBjaHJvbWl1bS0xMjQuMC42 MzY3LjExOC90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQmxpdE1hc2tfb3B0c19zc3NlMy5j cHAKIEBAIC05LDcgKzksNyBAQAogICNpbmNsdWRlICJzcmMvY29yZS9Ta0JsaXRNYXNrLmgiCiAg I2luY2x1ZGUgInNyYy9jb3JlL1NrT3B0c1RhcmdldHMuaCIKQEAgLTU1NiwxMCArNTU2LDEwIEBA IEluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUv U2tCbGl0TWFza19vcHRzX3Nzc2UzLmNwCiAgCiAgLy8gVGhlIG9yZGVyIG9mIHRoZXNlIGluY2x1 ZGVzIGlzIGltcG9ydGFudDoKICAvLyAxKSBTZWxlY3QgdGhlIHRhcmdldCBDUFUgYXJjaGl0ZWN0 dXJlIGJ5IGRlZmluaW5nIFNLX09QVFNfVEFSR0VUIGFuZCBpbmNsdWRpbmcgU2tPcHRzX1NldFRh cmdldAotSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMv Y29yZS9Ta1N3aXp6bGVyX29wdHNfc3NzZTMuY3BwCitJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2 Ny4xMTgvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta1N3aXp6bGVyX29wdHNfc3NzZTMuY3Bw CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09Ci0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny42MC5vcmlnL3RoaXJkX3BhcnR5 L3NraWEvc3JjL2NvcmUvU2tTd2l6emxlcl9vcHRzX3Nzc2UzLmNwcAotKysrIGNocm9taXVtLTEy NC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta1N3aXp6bGVyX29wdHNfc3Nz ZTMuY3BwCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgub3JpZy90aGlyZF9wYXJ0eS9za2lh L3NyYy9jb3JlL1NrU3dpenpsZXJfb3B0c19zc3NlMy5jcHAKKysrKyBjaHJvbWl1bS0xMjQuMC42 MzY3LjExOC90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrU3dpenpsZXJfb3B0c19zc3NlMy5j cHAKIEBAIC0xMCw3ICsxMCw3IEBACiAgI2luY2x1ZGUgInNyYy9jb3JlL1NrT3B0c1RhcmdldHMu aCIKICAjaW5jbHVkZSAic3JjL2NvcmUvU2tTd2l6emxlUHJpdi5oIgpAQCAtNTY5LDEwICs1Njks MTAgQEAgSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMv Y29yZS9Ta1N3aXp6bGVyX29wdHNfc3NzZTMuY3AKICAgICAgIWRlZmluZWQoU0tfRU5BQkxFX09Q VElNSVpFX1NJWkUpICYmIFwKICAgICAgU0tfQ1BVX1NTRV9MRVZFTCA8IFNLX0NQVV9TU0VfTEVW RUxfU1NTRTMKICAKLUluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3Nr aWEvc3JjL2NvcmUvU2tCbGl0TWFza19vcHRzLmNwcAorSW5kZXg6IGNocm9taXVtLTEyNC4wLjYz NjcuMTE4L3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tCbGl0TWFza19vcHRzLmNwcAogPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQotLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuNjAub3JpZy90aGlyZF9wYXJ0eS9za2lh L3NyYy9jb3JlL1NrQmxpdE1hc2tfb3B0cy5jcHAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjYw L3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tCbGl0TWFza19vcHRzLmNwcAorLS0tIGNocm9t aXVtLTEyNC4wLjYzNjcuMTE4Lm9yaWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0JsaXRN YXNrX29wdHMuY3BwCisrKysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvc2tp YS9zcmMvY29yZS9Ta0JsaXRNYXNrX29wdHMuY3BwCiBAQCAtMjUsNyArMjUsNyBAQCBuYW1lc3Bh Y2UgU2tPcHRzIHsKICAgICAgc3RhdGljIGJvb2wgaW5pdCgpIHsKICAgICAgI2lmIGRlZmluZWQo U0tfRU5BQkxFX09QVElNSVpFX1NJWkUpCkBAIC01ODIsMTAgKzU4MiwxMCBAQCBJbmRleDogY2hy b21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQmxpdE1hc2tf b3B0cy5jcHAKICAgICAgICAgICNpZiBTS19DUFVfU1NFX0xFVkVMIDwgU0tfQ1BVX1NTRV9MRVZF TF9TU1NFMwogICAgICAgICAgICAgIGlmIChTa0NwdTo6U3VwcG9ydHMoU2tDcHU6OlNTU0UzKSkg eyBJbml0X0JsaXRNYXNrX3Nzc2UzKCk7IH0KICAgICAgICAgICNlbmRpZgotSW5kZXg6IGNocm9t aXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0JpdG1hcFByb2NT dGF0ZV9vcHRzLmNwcAorSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5 L3NraWEvc3JjL2NvcmUvU2tCaXRtYXBQcm9jU3RhdGVfb3B0cy5jcHAKID09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t LSBjaHJvbWl1bS0xMjQuMC42MzY3LjYwLm9yaWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9T a0JpdG1hcFByb2NTdGF0ZV9vcHRzLmNwcAotKysrIGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhp cmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0JpdG1hcFByb2NTdGF0ZV9vcHRzLmNwcAorLS0tIGNo cm9taXVtLTEyNC4wLjYzNjcuMTE4Lm9yaWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0Jp dG1hcFByb2NTdGF0ZV9vcHRzLmNwcAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJk X3BhcnR5L3NraWEvc3JjL2NvcmUvU2tCaXRtYXBQcm9jU3RhdGVfb3B0cy5jcHAKIEBAIC0yNSw3 ICsyNSw3IEBAIG5hbWVzcGFjZSBTa09wdHMgewogICAgICBzdGF0aWMgYm9vbCBpbml0KCkgewog ICAgICAjaWYgZGVmaW5lZChTS19FTkFCTEVfT1BUSU1JWkVfU0laRSkKQEAgLTU5NSwxMCArNTk1 LDEwIEBAIEluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3Jj L2NvcmUvU2tCaXRtYXBQcm9jU3RhdGVfb3B0cy5jCiAgICAgICAgICAjaWYgU0tfQ1BVX1NTRV9M RVZFTCA8IFNLX0NQVV9TU0VfTEVWRUxfU1NTRTMKICAgICAgICAgICAgICBpZiAoU2tDcHU6OlN1 cHBvcnRzKFNrQ3B1OjpTU1NFMykpIHsgSW5pdF9CaXRtYXBQcm9jU3RhdGVfc3NzZTMoKTsgfQog ICAgICAgICAgI2VuZGlmCi1JbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0 eS9za2lhL3NyYy9jb3JlL1NrQ3B1LmgKK0luZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90 aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQ3B1LmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1 bS0xMjQuMC42MzY3LjYwLm9yaWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0NwdS5oCi0r KysgY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQ3B1 LmgKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC5vcmlnL3RoaXJkX3BhcnR5L3NraWEvc3Jj L2NvcmUvU2tDcHUuaAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3Nr aWEvc3JjL2NvcmUvU2tDcHUuaAogQEAgLTU1LDcgKzU1LDcgQEAgaW5saW5lIGJvb2wgU2tDcHU6 OlN1cHBvcnRzKHVpbnQzMl90IG1hcwogIAogICAgICAvLyBJZiB3ZSBtYXNrIGluIGNvbXBpbGUt dGltZSBrbm93biBsb3dlciBsaW1pdHMsIHRoZSBjb21waWxlciBjYW4KQEAgLTYwOCwxMCArNjA4 LDEwIEBAIEluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3Jj L2NvcmUvU2tDcHUuaAogICAgICAjaWYgU0tfQ1BVX1NTRV9MRVZFTCA+PSBTS19DUFVfU1NFX0xF VkVMX1NTRTEKICAgICAgZmVhdHVyZXMgfD0gU1NFMTsKICAgICAgI2VuZGlmCi1JbmRleDogY2hy b21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQml0bWFwUHJv Y1N0YXRlX29wdHNfc3NzZTMuY3BwCitJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhp cmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0JpdG1hcFByb2NTdGF0ZV9vcHRzX3Nzc2UzLmNwcAog PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PQotLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuNjAub3JpZy90aGlyZF9wYXJ0eS9z a2lhL3NyYy9jb3JlL1NrQml0bWFwUHJvY1N0YXRlX29wdHNfc3NzZTMuY3BwCi0rKysgY2hyb21p dW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQml0bWFwUHJvY1N0 YXRlX29wdHNfc3NzZTMuY3BwCistLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgub3JpZy90aGly ZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQml0bWFwUHJvY1N0YXRlX29wdHNfc3NzZTMuY3BwCisr KysgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0Jp dG1hcFByb2NTdGF0ZV9vcHRzX3Nzc2UzLmNwcAogQEAgLTgsNyArOCw3IEBACiAgI2luY2x1ZGUg ImluY2x1ZGUvcHJpdmF0ZS9iYXNlL1NrRmVhdHVyZXMuaCIKICAjaW5jbHVkZSAic3JjL2NvcmUv U2tPcHRzVGFyZ2V0cy5oIgpAQCAtNjIxLDEwICs2MjEsMTAgQEAgSW5kZXg6IGNocm9taXVtLTEy NC4wLjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9zcmMvY29yZS9Ta0JpdG1hcFByb2NTdGF0ZV9v cHRzX3MKICAKICAvLyBUaGUgb3JkZXIgb2YgdGhlc2UgaW5jbHVkZXMgaXMgaW1wb3J0YW50Ogog IC8vIDEpIFNlbGVjdCB0aGUgdGFyZ2V0IENQVSBhcmNoaXRlY3R1cmUgYnkgZGVmaW5pbmcgU0tf T1BUU19UQVJHRVQgYW5kIGluY2x1ZGluZyBTa09wdHNfU2V0VGFyZ2V0Ci1JbmRleDogY2hyb21p dW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvcHJpdmF0ZS9iYXNlL1Nr RmVhdHVyZXMuaAorSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3Nr aWEvaW5jbHVkZS9wcml2YXRlL2Jhc2UvU2tGZWF0dXJlcy5oCiA9PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY2hy b21pdW0tMTI0LjAuNjM2Ny42MC5vcmlnL3RoaXJkX3BhcnR5L3NraWEvaW5jbHVkZS9wcml2YXRl L2Jhc2UvU2tGZWF0dXJlcy5oCi0rKysgY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0 eS9za2lhL2luY2x1ZGUvcHJpdmF0ZS9iYXNlL1NrRmVhdHVyZXMuaAorLS0tIGNocm9taXVtLTEy NC4wLjYzNjcuMTE4Lm9yaWcvdGhpcmRfcGFydHkvc2tpYS9pbmNsdWRlL3ByaXZhdGUvYmFzZS9T a0ZlYXR1cmVzLmgKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9za2lh L2luY2x1ZGUvcHJpdmF0ZS9iYXNlL1NrRmVhdHVyZXMuaAogQEAgLTYzLDYgKzYzLDggQEAKICAK ICAjaWYgZGVmaW5lZChfX2kzODYpIHx8IGRlZmluZWQoX01fSVg4NikgfHwgIGRlZmluZWQoX194 ODZfNjRfXykgfHwgZGVmaW5lZChfTV9YNjQpCkBAIC02MzQsMTAgKzYzNCwxMCBAQCBJbmRleDog Y2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL2luY2x1ZGUvcHJpdmF0ZS9i YXNlL1NrRmVhdHVyZXMuaAogICNlbmRpZgogIAogIC8qKgotSW5kZXg6IGNocm9taXVtLTEyNC4w LjYzNjcuNjAvdGhpcmRfcGFydHkvc2tpYS9tb2R1bGVzL3NrY21zL3NyYy9za2Ntc19pbnRlcm5h bHMuaAorSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3NraWEvbW9k dWxlcy9za2Ntcy9zcmMvc2tjbXNfaW50ZXJuYWxzLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1 bS0xMjQuMC42MzY3LjYwLm9yaWcvdGhpcmRfcGFydHkvc2tpYS9tb2R1bGVzL3NrY21zL3NyYy9z a2Ntc19pbnRlcm5hbHMuaAotKysrIGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhpcmRfcGFydHkv c2tpYS9tb2R1bGVzL3NrY21zL3NyYy9za2Ntc19pbnRlcm5hbHMuaAorLS0tIGNocm9taXVtLTEy NC4wLjYzNjcuMTE4Lm9yaWcvdGhpcmRfcGFydHkvc2tpYS9tb2R1bGVzL3NrY21zL3NyYy9za2Nt c19pbnRlcm5hbHMuaAorKysrIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L3RoaXJkX3BhcnR5L3Nr aWEvbW9kdWxlcy9za2Ntcy9zcmMvc2tjbXNfaW50ZXJuYWxzLmgKIEBAIC00Nyw2ICs0Nyw3IEBA IGV4dGVybiAiQyIgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAmJiAhZGVmaW5lZChfX0VNU0NSSVBURU5fXykgXAogICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhZGVmaW5lZChfX2FybV9fKSBcCkBA IC02NDYsMTAgKzY0NiwxMCBAQCBJbmRleDogY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9w YXJ0eS9za2lhL21vZHVsZXMvc2tjbXMvc3JjL3NrY21zX2ludGVybmFscwogICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiAhZGVmaW5lZChfX2xvb25n YXJjaF9fKSBcCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICYmICFkZWZpbmVkKF9XSU4zMikgJiYgIWRlZmluZWQoX19TWU1CSUFOMzJfXykKICAgICAg ICAgICAgICAjZGVmaW5lIFNLQ01TX0hBU19NVVNUVEFJTCAxCi1JbmRleDogY2hyb21pdW0tMTI0 LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrU3dpenpsZXJfb3B0cy5pbmMK K0luZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRz L1NrU3dpenpsZXJfb3B0cy5pbmMKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3 LjYwLm9yaWcvdGhpcmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta1N3aXp6bGVyX29wdHMuaW5jCi0r KysgY2hyb21pdW0tMTI0LjAuNjM2Ny42MC90aGlyZF9wYXJ0eS9za2lhL3NyYy9vcHRzL1NrU3dp enpsZXJfb3B0cy5pbmMKKy0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC5vcmlnL3RoaXJkX3Bh cnR5L3NraWEvc3JjL29wdHMvU2tTd2l6emxlcl9vcHRzLmluYworKysrIGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L3RoaXJkX3BhcnR5L3NraWEvc3JjL29wdHMvU2tTd2l6emxlcl9vcHRzLmluYwog QEAgLTE0LDcgKzE0LDEwIEBACiAgI2luY2x1ZGUgPGNtYXRoPgogICNpbmNsdWRlIDx1dGlsaXR5 PgpAQCAtNjk2LDMyICs2OTYsMjQgQEAgSW5kZXg6IGNocm9taXVtLTEyNC4wLjYzNjcuNjAvdGhp cmRfcGFydHkvc2tpYS9zcmMvb3B0cy9Ta1N3aXp6bGVyX29wdHMuaW5jCiAgI2VsaWYgU0tfQ1BV X1NTRV9MRVZFTCA+PSBTS19DUFVfU1NFX0xFVkVMX1NTRTEgJiYgKGRlZmluZWQoX19jbGFuZ19f KSB8fCAhZGVmaW5lZChfTVNDX1ZFUikpCiAgLy8gLS0gU1NFIC0tIEhhcmRlbiBhZ2FpbnN0IHRp bWluZyBhdHRhY2tzIC0tIE1TVkMgaXMgbm90IHN1cHBvcnRlZC4KICB1c2luZyBGNCA9IF9fbTEy ODsKLUluZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJkX3BhcnR5L3NraWEvc3JjL2Nv cmUvU2tCbGl0dGVyX0FSR0IzMi5jcHAKK0luZGV4OiBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90 aGlyZF9wYXJ0eS9za2lhL3NyYy9jb3JlL1NrQmxpdHRlcl9BUkdCMzIuY3BwCiA9PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 Ci0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny42MC5vcmlnL3RoaXJkX3BhcnR5L3NraWEvc3JjL2Nv cmUvU2tCbGl0dGVyX0FSR0IzMi5jcHAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjYwL3RoaXJk X3BhcnR5L3NraWEvc3JjL2NvcmUvU2tCbGl0dGVyX0FSR0IzMi5jcHAKLUBAIC0zNzIsNyArMzcy LDExIEBAIHN0YXRpYyBpbmxpbmUgU2tQTUNvbG9yIGJsZW5kX2xjZDE2X29wYXEKLSAgICAgICAg ICAgICAgICAgLy8gTG9hZCBmb3VyIGRlc3RpbmF0aW9uIHBpeGVscyBpbnRvIGRzdF9zc2UuCi0g ICAgICAgICAgICAgICAgIF9fbTEyOGkgZHN0X3NzZSA9IF9tbV9sb2FkX3NpMTI4KGQpOwotICAg ICAgICAgICAgICAgICAvLyBMb2FkIGZvdXIgMTYtYml0IG1hc2tzIGludG8gbG93ZXIgaGFsZiBv ZiBtYXNrX3NzZS4KLSsjaWYgZGVmaW5lZChTS19DUFVfUFBDNjQpCi0rICAgICAgICAgICAgICAg IF9fbTEyOGkgbWFza19zc2UgPSBfbW1fbG9hZGxfZXBpNjQocmVpbnRlcnByZXRfY2FzdDxjb25z dCBfX20xMjhpKj4obWFzaykpOwotKyNlbHNlCi0gICAgICAgICAgICAgICAgIF9fbTEyOGkgbWFz a19zc2UgPSBfbW1fbG9hZHVfc2k2NChtYXNrKTsKLSsjZW5kaWYKKy0tLSBjaHJvbWl1bS0xMjQu MC42MzY3LjExOC5vcmlnL3RoaXJkX3BhcnR5L3NraWEvc3JjL2NvcmUvU2tCbGl0dGVyX0FSR0Iz Mi5jcHAKKysrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC90aGlyZF9wYXJ0eS9za2lhL3NyYy9j b3JlL1NrQmxpdHRlcl9BUkdCMzIuY3BwCitAQCAtMTI2LDYgKzEyNiwxNiBAQCBzdGF0aWMgaW5s aW5lIFNrUE1Db2xvciBibGVuZF9sY2QxNl9vcGFxCisgI2lmIFNLX0NQVV9TU0VfTEVWRUwgPj0g U0tfQ1BVX1NTRV9MRVZFTF9TU0UyCisgICAgICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KICAKLSAg ICAgICAgICAgICAgICAgLy8gQ2hlY2sgd2hldGhlciBtYXNrcyBhcmUgZXF1YWwgdG8gMCBhbmQg Z2V0IHRoZSBoaWdoZXN0IGJpdAotICAgICAgICAgICAgICAgICAvLyBvZiBlYWNoIGJ5dGUgb2Yg cmVzdWx0LCBpZiBtYXNrcyBhcmUgYWxsIHplcm8sIHdlIHdpbGwgZ2V0Ci1AQCAtNDM4LDcgKzQ0 MiwxMiBAQCBzdGF0aWMgaW5saW5lIFNrUE1Db2xvciBibGVuZF9sY2QxNl9vcGFxCi0gICAgICAg ICAgICAgICAgIC8vIExvYWQgZm91ciBkZXN0aW5hdGlvbiBwaXhlbHMgaW50byBkc3Rfc3NlLgot ICAgICAgICAgICAgICAgICBfX20xMjhpIGRzdF9zc2UgPSBfbW1fbG9hZF9zaTEyOChkKTsKLSAg ICAgICAgICAgICAgICAgLy8gTG9hZCBmb3VyIDE2LWJpdCBtYXNrcyBpbnRvIGxvd2VyIGhhbGYg b2YgbWFza19zc2UuCiArI2lmIGRlZmluZWQoU0tfQ1BVX1BQQzY0KQotKyAgICAgICAgICAgICAg ICBfX20xMjhpIG1hc2tfc3NlID0gX21tX2xvYWRsX2VwaTY0KHJlaW50ZXJwcmV0X2Nhc3Q8Y29u c3QgX19tMTI4aSo+KG1hc2spKTsKLSsjZWxzZQotICAgICAgICAgICAgICAgICBfX20xMjhpIG1h c2tfc3NlID0gX21tX2xvYWR1X3NpNjQobWFzayk7CisrICAgIC8qIExvYWQgc2lnbmVkIDY0LWJp dCBpbnRlZ2VyIGZyb20gUCBpbnRvIHZlY3RvciBlbGVtZW50IDAuICBUaGUgYWRkcmVzcyBuZWVk IG5vdCBiZSAxNi1ieXRlIGFsaWduZWQuICAqLworKyAgICBleHRlcm4gX19pbmxpbmUgX19tMTI4 aQorKyAgICAgICAgX19hdHRyaWJ1dGVfXygoX19nbnVfaW5saW5lX18sIF9fYWx3YXlzX2lubGlu ZV9fLCBfX2FydGlmaWNpYWxfXykpCisrICAgICAgICBfbW1fbG9hZHVfc2k2NCAodm9pZCBjb25z dCAqX19QKQorKyAgICB7CisrICAgICAgcmV0dXJuIF9tbV9zZXRfZXBpNjQoKF9fbTY0KTBMTCwg KihfX202NCAqKV9fUCk7CisrICAgIH0KICsjZW5kaWYKICsKLSAKLSAgICAgICAgICAgICAgICAg Ly8gQ2hlY2sgd2hldGhlciBtYXNrcyBhcmUgZXF1YWwgdG8gMCBhbmQgZ2V0IHRoZSBoaWdoZXN0 IGJpdAotICAgICAgICAgICAgICAgICAvLyBvZiBlYWNoIGJ5dGUgb2YgcmVzdWx0LCBpZiBtYXNr cyBhcmUgYWxsIHplcm8sIHdlIHdpbGwgZ2V0CisgICAgIC8vIFRoZSBmb2xsb3dpbmcgKGxlZnQp IHNoaWZ0cyBjYXVzZSB0aGUgdG9wIDUgYml0cyBvZiB0aGUgbWFzayBjb21wb25lbnRzIHRvCisg ICAgIC8vIGxpbmUgdXAgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBjb21wb25lbnRzIGluIGFuIFNr UE1Db2xvci4KKyAgICAgLy8gTm90ZSB0aGF0IHRoZSBtYXNrJ3MgUkdCMTYgb3JkZXIgbWF5IGRp ZmZlciBmcm9tIHRoZSBTa1BNQ29sb3Igb3JkZXIuCgpkaWZmIC0tZ2l0IGEvc291cmNlcyBiL3Nv dXJjZXMKaW5kZXggYjdhZmQ2Ni4uZWNkYjczNiAxMDA2NDQKLS0tIGEvc291cmNlcworKysgYi9z b3VyY2VzCkBAIC0yLDQgKzIsNCBAQCBTSEE1MTIgKG5vZGUtdjIwLjYuMS1saW51eC1hcm02NC50 YXIueHopID0gYWRmY2FmMmMyMjYxNDc5N2ZkNjlmYjQ2ZDk0YzFjYmY2NGRlYQogU0hBNTEyIChu b2RlLXYyMC42LjEtbGludXgteDY0LnRhci54eikgPSA3ZTE1YzA1MDQxYTlhNTBmMDA0NjI2NmFh ZGIyZTA5MmE1YWVmYmVjMTliZTFjN2M4MDk0NzFhZGQ1MjBjYjU3YzdkZjNjNDdkODhiMTg4OGIy OWJmMjk3OWRjYTNjOTJhZGRkZmQ5NjUzNzBmYTJhOWRhNGVhMDIxODY0NjRmZAogU0hBNTEyIChs aW51eC1hcm02NC0wLjE5LjIudGd6KSA9IDhhMGQ4ZmVjNjc4NmZmZmNkNjk1NGQwMDgyMDAzN2E1 NWQ2MWU2MDc2MmM3NDMwMGRmMDgwMWY4ZGIyNzA1NzU2MmMyMjFhMDYzYmVkZmI4ZGY1NmFmOWJh ODBhYmIzNjYzMzY5ODdlODgxNzgyYzU5OTZlNmY4NzFhYmQzZGM2CiBTSEE1MTIgKGxpbnV4LXg2 NC0wLjE5LjIudGd6KSA9IGEzMWNjNzRjNGJmYTU0ZjliNzVkNzM1YTFjZmM5NDRkM2I1ZWZiN2Mw NmJmYmE5NTQyZGE5YTY0MmFlMGIyZDIzNWVhMDBhZTg0ZDNhZDA1NzJjNDA2NDA1MTEwZmU3YjYx Mzc3YWYwZmQxNTgwMzgwNmVmNzhkMjBmYzZmMDVkCi1TSEE1MTIgKGNocm9taXVtLTEyNC4wLjYz NjcuMTE4LWNsZWFuLnRhci54eikgPSA3NzAwNjBhODEwNTFjZGFjZTRjNjBhZTRmYzMyYzFkY2Iy MzNiZmFjNjFiMWVjMTQ5ZDY0MDczNmMwZGI0YmZiNmQ1MDY5MjAzM2Q2YjkyN2NhNmZhNGEwNDM3 ZmM0MzI1MzdjYzBiZDZkMzQ2ODI1NDE2ODIzOWYzODM2YTA2ZQorU0hBNTEyIChjaHJvbWl1bS0x MjQuMC42MzY3LjE1NS1jbGVhbi50YXIueHopID0gZGVkOGRhOGJiZWYzNDc5Y2VkNTFlNWU4NDQz NmNkNDc3MmM5YzM1MTNkNjQzYzI1OGQ3YWY1MmZlNTVlMjAxZjE5MmM5NjA5NjFiZDYwMWExNjY4 YTEyYzJjNWUzMzUxNDUyZmZmM2ZiMzg5ZDk1ODU1ZmUwOTFjYzUwNmRiYTYK