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 126.0.6478.55 Date: Fri, 07 Aug 2026 16:06:33 GMT Message-ID: <178611879336.1.10553680138219319160.rpms-chromium-53321af48cdb@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: 53321af48cdbb4d1409f5942ec7c38826098db31 ICAgICAgICAgICAgQSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KCiAgICAgICAgICAgIFJl cG8gICA6IHJwbXMvY2hyb21pdW0KICAgICAgICAgICAgQnJhbmNoIDogZXBlbDktbmV4dAogICAg ICAgICAgICBDb21taXQgOiA1MzMyMWFmNDhjZGJiNGQxNDA5ZjU5NDJlYzdjMzg4MjYwOThkYjMx CiAgICAgICAgICAgIEF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+CiAgICAgICAg ICAgIERhdGUgICA6IDIwMjQtMDYtMTJUMTE6NTk6MzYrMDI6MDAKICAgICAgICAgICAgU3RhdHMg IDogKzU3ODIvLTQwOTAgaW4gMzIgZmlsZShzKQogICAgICAgICAgICBVUkwgICAgOiBodHRwczov L3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2Nocm9taXVtL2MvNTMzMjFhZjQ4Y2RiYjRkMTQw OWY1OTQyZWM3YzM4ODI2MDk4ZGIzMT9icmFuY2g9ZXBlbDktbmV4dAoKICAgICAgICAgICAgTG9n OgogICAgICAgICAgICAtIHVwZGF0ZSB0byAxMjYuMC42NDc4LjU1CiAgKiBIaWdoIENWRS0yMDI0 LTU4MzA6IFR5cGUgQ29uZnVzaW9uIGluIFY4CiAgKiBIaWdoIENWRS0yMDI0LTU4MzE6IFVzZSBh ZnRlciBmcmVlIGluIERhd24KICAqIEhpZ2ggQ1ZFLTIwMjQtNTgzMjogVXNlIGFmdGVyIGZyZWUg aW4gRGF3bgogICogSGlnaCBDVkUtMjAyNC01ODMzOiBUeXBlIENvbmZ1c2lvbiBpbiBWOAogICog SGlnaCBDVkUtMjAyNC01ODM0OiBJbmFwcHJvcHJpYXRlIGltcGxlbWVudGF0aW9uIGluIERhd24K ICAqIEhpZ2ggQ1ZFLTIwMjQtNTgzNTogSGVhcCBidWZmZXIgb3ZlcmZsb3cgaW4gVGFiIEdyb3Vw cwogICogSGlnaCBDVkUtMjAyNC01ODM2OiBJbmFwcHJvcHJpYXRlIEltcGxlbWVudGF0aW9uIGlu IERldlRvb2xzCiAgKiBIaWdoIENWRS0yMDI0LTU4Mzc6IFR5cGUgQ29uZnVzaW9uIGluIFY4CiAg KiBIaWdoIENWRS0yMDI0LTU4Mzg6IFR5cGUgQ29uZnVzaW9uIGluIFY4CiAgKiBNZWRpdW0gQ1ZF LTIwMjQtNTgzOTogSW5hcHByb3ByaWF0ZSBJbXBsZW1lbnRhdGlvbiBpbiBNZW1vcnkgQWxsb2Nh dG9yCiAgKiBNZWRpdW0gQ1ZFLTIwMjQtNTg0MDogUG9saWN5IEJ5cGFzcyBpbiBDT1JTCiAgKiBN ZWRpdW0gQ1ZFLTIwMjQtNTg0MTogVXNlIGFmdGVyIGZyZWUgaW4gVjgKICAqIE1lZGl1bSBDVkUt MjAyNC01ODQyOiBVc2UgYWZ0ZXIgZnJlZSBpbiBCcm93c2VyIFVJCiAgKiBNZWRpdW0gQ1ZFLTIw MjQtNTg0MzogSW5hcHByb3ByaWF0ZSBpbXBsZW1lbnRhdGlvbiBpbiBEb3dubG9hZHMKICAqIE1l ZGl1bSBDVkUtMjAyNC01ODQ0OiBIZWFwIGJ1ZmZlciBvdmVyZmxvdyBpbiBUYWIgU3RyaXAKICAq IE1lZGl1bSBDVkUtMjAyNC01ODQ1OiBVc2UgYWZ0ZXIgZnJlZSBpbiBBdWRpbwogICogTWVkaXVt IENWRS0yMDI0LTU4NDY6IFVzZSBhZnRlciBmcmVlIGluIFBERml1bQogICogTWVkaXVtIENWRS0y MDI0LTU4NDc6IFVzZSBhZnRlciBmcmVlIGluIFBERml1bQotIHJlZnJlc2hlZCBwYXRjaGVzCi0g ZHJvcHBlZCBhIHdvcmthcm91bmQgZm9yIGEgYnVnIGluIG5ldyBsbHZtIG9uIGY0MC9yYXdoaWRl IChwcGM2NGxlKQotIHR3ZWFrZWQgc3lzdGVtIGJ1aWxkIGZsYWdzCgotLS0KZGlmZiAtLWdpdCBh LzAwMDEtQWRkLXByZWdlbmVyYXRlZC1jb25maWctZm9yLWxpYmFvbS1vbi1wcGM2NC5wYXRjaCBi LzAwMDEtQWRkLXByZWdlbmVyYXRlZC1jb25maWctZm9yLWxpYmFvbS1vbi1wcGM2NC5wYXRjaApp bmRleCA4NTkxYzI4Li4yOTI3Yjg3IDEwMDY0NAotLS0gYS8wMDAxLUFkZC1wcmVnZW5lcmF0ZWQt Y29uZmlnLWZvci1saWJhb20tb24tcHBjNjQucGF0Y2gKKysrIGIvMDAwMS1BZGQtcHJlZ2VuZXJh dGVkLWNvbmZpZy1mb3ItbGliYW9tLW9uLXBwYzY0LnBhdGNoCkBAIC0xLDggKzEsOCBAQAotSW5k ZXg6IGNocm9taXVtLTEyMy4wLjYzMTIuNTgvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25m aWcvbGludXgvcHBjNjQvY29uZmlnL2FvbV9jb25maWcuYXNtCitJbmRleDogY2hyb21pdW0tMTI2 LjAuNjQ3OC41Ny90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9j b25maWcvYW9tX2NvbmZpZy5hc20KID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBjaHJv bWl1bS0xMjMuMC42MzEyLjU4L3RoaXJkX3BhcnR5L2xpYmFvbS9zb3VyY2UvY29uZmlnL2xpbnV4 L3BwYzY0L2NvbmZpZy9hb21fY29uZmlnLmFzbQotQEAgLTAsMCArMSw5MyBAQAorKysrIGNocm9t aXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGludXgv cHBjNjQvY29uZmlnL2FvbV9jb25maWcuYXNtCitAQCAtMCwwICsxLDk1IEBACiArOwogKzsgQ29w eXJpZ2h0IChjKSAyMDI0LCBBbGxpYW5jZSBmb3IgT3BlbiBNZWRpYS4gQWxsIHJpZ2h0cyByZXNl cnZlZAogKzsKQEAgLTIwLDcgKzIwLDcgQEAgSW5kZXg6IGNocm9taXVtLTEyMy4wLjYzMTIuNTgv dGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGludXgvcHBjNjQvY29uZmkKICtBT01f QVJDSF9YODZfNjQgZXF1IDAKICtDT05GSUdfQUNDT1VOVElORyBlcXUgMAogK0NPTkZJR19BTkFM WVpFUiBlcXUgMAotK0NPTkZJR19BVjFfREVDT0RFUiBlcXUgMQorK0NPTkZJR19BVjFfREVDT0RF UiBlcXUgMAogK0NPTkZJR19BVjFfRU5DT0RFUiBlcXUgMQogK0NPTkZJR19BVjFfSElHSEJJVERF UFRIIGVxdSAwCiArQ09ORklHX0FWMV9URU1QT1JBTF9ERU5PSVNJTkcgZXF1IDEKQEAgLTQ3LDE2 ICs0NywxNyBAQCBJbmRleDogY2hyb21pdW0tMTIzLjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJh b20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9jb25maQogK0NPTkZJR19JTlRFUl9TVEFUU19P TkxZIGVxdSAwCiArQ09ORklHX0xJQlZNQUZfUFNOUl9QRUFLIGVxdSAxCiArQ09ORklHX0xJQllV ViBlcXUgMAotK0NPTkZJR19NQVhfREVDT0RFX1BST0ZJTEUgZXF1IDAKKytDT05GSUdfTUFYX0RF Q09ERV9QUk9GSUxFIGVxdSAyCiArQ09ORklHX01JU01BVENIX0RFQlVHIGVxdSAwCiArQ09ORklH X01VTFRJVEhSRUFEIGVxdSAxCiArQ09ORklHX05OX1YyIGVxdSAwCi0rQ09ORklHX05PUk1BTF9U SUxFX01PREUgZXF1IDEKKytDT05GSUdfTk9STUFMX1RJTEVfTU9ERSBlcXUgMAogK0NPTkZJR19P UFRJQ0FMX0ZMT1dfQVBJIGVxdSAwCiArQ09ORklHX09TX1NVUFBPUlQgZXF1IDEKICtDT05GSUdf T1VUUFVUX0ZSQU1FX1NJWkUgZXF1IDAKICtDT05GSUdfUEFSVElUSU9OX1NFQVJDSF9PUkRFUiBl cXUgMAogK0NPTkZJR19QSUMgZXF1IDEKKytDT05GSUdfUVVBTlRfTUFUUklYIGVxdSAwCiArQ09O RklHX1JBVEVDVFJMX0xPRyBlcXUgMAogK0NPTkZJR19SRF9DT01NQU5EIGVxdSAwCiArQ09ORklH X1JEX0RFQlVHIGVxdSAwCkBAIC05MiwxNCArOTMsMTUgQEAgSW5kZXg6IGNocm9taXVtLTEyMy4w LjYzMTIuNTgvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGludXgvcHBjNjQvY29u ZmkKICtIQVZFX1NTRTRfMiBlcXUgMAogK0hBVkVfU1NTRTMgZXF1IDAKICtIQVZFX1NWRSBlcXUg MAorK0hBVkVfU1ZFMiBlcXUgMAogK0hBVkVfVU5JU1REX0ggZXF1IDEKICtIQVZFX1ZTWCBlcXUg MQogK0hBVkVfV1hXSURHRVRTIGVxdSAwCiArU1RBVElDX0xJTktfSlhMIGVxdSAwCi1JbmRleDog Y2hyb21pdW0tMTIzLjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9s aW51eC9wcGM2NC9jb25maWcvYW9tX2NvbmZpZy5jCitJbmRleDogY2hyb21pdW0tMTI2LjAuNjQ3 OC41Ny90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcv YW9tX2NvbmZpZy5jCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgY2hyb21pdW0tMTIz LjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9j b25maWcvYW9tX2NvbmZpZy5jCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny90aGlyZF9wYXJ0 eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcvYW9tX2NvbmZpZy5jCiBA QCAtMCwwICsxLDEzIEBACiArLyoKICsgKiBDb3B5cmlnaHQgKGMpIDIwMjQsIEFsbGlhbmNlIGZv ciBPcGVuIE1lZGlhLiBBbGwgcmlnaHRzIHJlc2VydmVkCkBAIC0xMTIsMTMgKzExNCwxMyBAQCBJ bmRleDogY2hyb21pdW0tMTIzLjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2Nv bmZpZy9saW51eC9wcGM2NC9jb25maQogKyAqIFBBVEVOVFMgZmlsZSwgeW91IGNhbiBvYnRhaW4g aXQgYXQgd3d3LmFvbWVkaWEub3JnL2xpY2Vuc2UvcGF0ZW50LgogKyAqLwogKyNpbmNsdWRlICJh b20vYW9tX2NvZGVjLmgiCi0rc3RhdGljIGNvbnN0IGNoYXIqIGNvbnN0IGNmZyA9ICJjbWFrZSAu Li9zb3VyY2UvbGliYW9tIC1HIFwiVW5peCBNYWtlZmlsZXNcIiAtRENNQUtFX1RPT0xDSEFJTl9G SUxFPVwiLi4vc291cmNlL2xpYmFvbS9idWlsZC9jbWFrZS90b29sY2hhaW5zL3BwYy1saW51eC1n Y2MuY21ha2VcIiAtRENPTkZJR19BVjFfRU5DT0RFUj0xIC1EQ09ORklHX0xJQllVVj0wIC1EQ09O RklHX0FWMV9ISUdIQklUREVQVEg9MCAtRENPTkZJR19BVjFfVEVNUE9SQUxfREVOT0lTSU5HPTEg LURDT05GSUdfUkVBTFRJTUVfT05MWT0xIC1EQ09ORklHX01BWF9ERUNPREVfUFJPRklMRT0wIC1E Q09ORklHX05PUk1BTF9USUxFX01PREU9MSAtRENPTkZJR19TSVpFX0xJTUlUPTEgLURERUNPREVf SEVJR0hUX0xJTUlUPTE2Mzg0IC1EREVDT0RFX1dJRFRIX0xJTUlUPTE2Mzg0IjsKKytzdGF0aWMg Y29uc3QgY2hhciogY29uc3QgY2ZnID0gImNtYWtlIC4uL3NvdXJjZS9saWJhb20gLUcgXCJVbml4 IE1ha2VmaWxlc1wiIC1EQ01BS0VfVE9PTENIQUlOX0ZJTEU9XCIuLi9zb3VyY2UvbGliYW9tL2J1 aWxkL2NtYWtlL3Rvb2xjaGFpbnMvcHBjLWxpbnV4LWdjYy5jbWFrZVwiIC1EQ09ORklHX0FWMV9E RUNPREVSPTAgLURDT05GSUdfQVYxX0VOQ09ERVI9MSAtRENPTkZJR19MSUJZVVY9MCAtRENPTkZJ R19BVjFfSElHSEJJVERFUFRIPTAgLURDT05GSUdfQVYxX1RFTVBPUkFMX0RFTk9JU0lORz0xIC1E Q09ORklHX1FVQU5UX01BVFJJWD0wIC1EQ09ORklHX1JFQUxUSU1FX09OTFk9MSAtRENPTkZJR19T SVpFX0xJTUlUPTEgLURERUNPREVfSEVJR0hUX0xJTUlUPTE2Mzg0IC1EREVDT0RFX1dJRFRIX0xJ TUlUPTE2Mzg0IjsKICtjb25zdCBjaGFyICphb21fY29kZWNfYnVpbGRfY29uZmlnKHZvaWQpIHty ZXR1cm4gY2ZnO30KLUluZGV4OiBjaHJvbWl1bS0xMjMuMC42MzEyLjU4L3RoaXJkX3BhcnR5L2xp YmFvbS9zb3VyY2UvY29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpZy9hb21fY29uZmlnLmgKK0luZGV4 OiBjaHJvbWl1bS0xMjYuMC42NDc4LjU3L3RoaXJkX3BhcnR5L2xpYmFvbS9zb3VyY2UvY29uZmln L2xpbnV4L3BwYzY0L2NvbmZpZy9hb21fY29uZmlnLmgKID09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251 bGwKLSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjU4L3RoaXJkX3BhcnR5L2xpYmFvbS9zb3VyY2Uv Y29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpZy9hb21fY29uZmlnLmgKLUBAIC0wLDAgKzEsOTcgQEAK KysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjU3L3RoaXJkX3BhcnR5L2xpYmFvbS9zb3VyY2UvY29u ZmlnL2xpbnV4L3BwYzY0L2NvbmZpZy9hb21fY29uZmlnLmgKK0BAIC0wLDAgKzEsOTkgQEAKICsv KgogKyAqIENvcHlyaWdodCAoYykgMjAyNCwgQWxsaWFuY2UgZm9yIE9wZW4gTWVkaWEuIEFsbCBy aWdodHMgcmVzZXJ2ZWQKICsgKgpAQCAtMTM4LDcgKzE0MCw3IEBAIEluZGV4OiBjaHJvbWl1bS0x MjMuMC42MzEyLjU4L3RoaXJkX3BhcnR5L2xpYmFvbS9zb3VyY2UvY29uZmlnL2xpbnV4L3BwYzY0 L2NvbmZpCiArI2RlZmluZSBBT01fQVJDSF9YODZfNjQgMAogKyNkZWZpbmUgQ09ORklHX0FDQ09V TlRJTkcgMAogKyNkZWZpbmUgQ09ORklHX0FOQUxZWkVSIDAKLSsjZGVmaW5lIENPTkZJR19BVjFf REVDT0RFUiAxCisrI2RlZmluZSBDT05GSUdfQVYxX0RFQ09ERVIgMAogKyNkZWZpbmUgQ09ORklH X0FWMV9FTkNPREVSIDEKICsjZGVmaW5lIENPTkZJR19BVjFfSElHSEJJVERFUFRIIDAKICsjZGVm aW5lIENPTkZJR19BVjFfVEVNUE9SQUxfREVOT0lTSU5HIDEKQEAgLTE2NSwxNiArMTY3LDE3IEBA IEluZGV4OiBjaHJvbWl1bS0xMjMuMC42MzEyLjU4L3RoaXJkX3BhcnR5L2xpYmFvbS9zb3VyY2Uv Y29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpCiArI2RlZmluZSBDT05GSUdfSU5URVJfU1RBVFNfT05M WSAwCiArI2RlZmluZSBDT05GSUdfTElCVk1BRl9QU05SX1BFQUsgMQogKyNkZWZpbmUgQ09ORklH X0xJQllVViAwCi0rI2RlZmluZSBDT05GSUdfTUFYX0RFQ09ERV9QUk9GSUxFIDAKKysjZGVmaW5l IENPTkZJR19NQVhfREVDT0RFX1BST0ZJTEUgMgogKyNkZWZpbmUgQ09ORklHX01JU01BVENIX0RF QlVHIDAKICsjZGVmaW5lIENPTkZJR19NVUxUSVRIUkVBRCAxCiArI2RlZmluZSBDT05GSUdfTk5f VjIgMAotKyNkZWZpbmUgQ09ORklHX05PUk1BTF9USUxFX01PREUgMQorKyNkZWZpbmUgQ09ORklH X05PUk1BTF9USUxFX01PREUgMAogKyNkZWZpbmUgQ09ORklHX09QVElDQUxfRkxPV19BUEkgMAog KyNkZWZpbmUgQ09ORklHX09TX1NVUFBPUlQgMQogKyNkZWZpbmUgQ09ORklHX09VVFBVVF9GUkFN RV9TSVpFIDAKICsjZGVmaW5lIENPTkZJR19QQVJUSVRJT05fU0VBUkNIX09SREVSIDAKICsjZGVm aW5lIENPTkZJR19QSUMgMQorKyNkZWZpbmUgQ09ORklHX1FVQU5UX01BVFJJWCAwCiArI2RlZmlu ZSBDT05GSUdfUkFURUNUUkxfTE9HIDAKICsjZGVmaW5lIENPTkZJR19SRF9DT01NQU5EIDAKICsj ZGVmaW5lIENPTkZJR19SRF9ERUJVRyAwCkBAIC0yMTAsMTYgKzIxMywxNyBAQCBJbmRleDogY2hy b21pdW0tMTIzLjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51 eC9wcGM2NC9jb25maQogKyNkZWZpbmUgSEFWRV9TU0U0XzIgMAogKyNkZWZpbmUgSEFWRV9TU1NF MyAwCiArI2RlZmluZSBIQVZFX1NWRSAwCisrI2RlZmluZSBIQVZFX1NWRTIgMAogKyNkZWZpbmUg SEFWRV9VTklTVERfSCAxCiArI2RlZmluZSBIQVZFX1ZTWCAxCiArI2RlZmluZSBIQVZFX1dYV0lE R0VUUyAwCiArI2RlZmluZSBJTkxJTkUgaW5saW5lCiArI2RlZmluZSBTVEFUSUNfTElOS19KWEwg MAogKyNlbmRpZiAgLy8gQU9NX0NPTkZJR19IXwotSW5kZXg6IGNocm9taXVtLTEyMy4wLjYzMTIu NTgvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGludXgvcHBjNjQvY29uZmlnL2Fv bV9kc3BfcnRjZC5oCitJbmRleDogY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny90aGlyZF9wYXJ0eS9s aWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcvYW9tX2RzcF9ydGNkLmgKID09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsrKyBjaHJvbWl1bS0xMjMuMC42MzEyLjU4L3RoaXJk X3BhcnR5L2xpYmFvbS9zb3VyY2UvY29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpZy9hb21fZHNwX3J0 Y2QuaAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJj ZS9jb25maWcvbGludXgvcHBjNjQvY29uZmlnL2FvbV9kc3BfcnRjZC5oCiBAQCAtMCwwICsxLDE1 NDEgQEAKICsvLyBUaGlzIGZpbGUgaXMgZ2VuZXJhdGVkLiBEbyBub3QgZWRpdC4KICsjaWZuZGVm IEFPTV9EU1BfUlRDRF9IXwpAQCAtMTc2MiwxMCArMTc2NiwxMCBAQCBJbmRleDogY2hyb21pdW0t MTIzLjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2 NC9jb25maQogKyNlbmRpZgogKwogKyNlbmRpZgotSW5kZXg6IGNocm9taXVtLTEyMy4wLjYzMTIu NTgvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGludXgvcHBjNjQvY29uZmlnL2Fv bV9zY2FsZV9ydGNkLmgKK0luZGV4OiBjaHJvbWl1bS0xMjYuMC42NDc4LjU3L3RoaXJkX3BhcnR5 L2xpYmFvbS9zb3VyY2UvY29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpZy9hb21fc2NhbGVfcnRjZC5o CiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CiAtLS0gL2Rldi9udWxsCi0rKysgY2hyb21pdW0tMTIzLjAuNjMxMi41OC90 aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcvYW9tX3Nj YWxlX3J0Y2QuaAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFydHkvbGliYW9t L3NvdXJjZS9jb25maWcvbGludXgvcHBjNjQvY29uZmlnL2FvbV9zY2FsZV9ydGNkLmgKIEBAIC0w LDAgKzEsMTA3IEBACiArLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZC4gRG8gbm90IGVkaXQuCiAr I2lmbmRlZiBBT01fU0NBTEVfUlRDRF9IXwpAQCAtMTc4NSw3ICsxNzg5LDcgQEAgSW5kZXg6IGNo cm9taXVtLTEyMy4wLjYzMTIuNTgvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGlu dXgvcHBjNjQvY29uZmkKICtleHRlcm4gIkMiIHsKICsjZW5kaWYKICsKLSt2b2lkIGFvbV9leHRl bmRfZnJhbWVfYm9yZGVyc19jKHN0cnVjdCB5djEyX2J1ZmZlcl9jb25maWcgKnliZiwgY29uc3Qg aW50IG51bV9wbGFuZXMpOworK3ZvaWQgYW9tX2V4dGVuZF9mcmFtZV9ib3JkZXJzX2Moc3RydWN0 IHl2MTJfYnVmZmVyX2NvbmZpZyAqeWJmLCBpbnQgbnVtX3BsYW5lcyk7CiArI2RlZmluZSBhb21f ZXh0ZW5kX2ZyYW1lX2JvcmRlcnMgYW9tX2V4dGVuZF9mcmFtZV9ib3JkZXJzX2MKICsKICt2b2lk IGFvbV9leHRlbmRfZnJhbWVfYm9yZGVyc19wbGFuZV9yb3dfYyhjb25zdCBzdHJ1Y3QgeXYxMl9i dWZmZXJfY29uZmlnICp5YmYsIGludCBwbGFuZSwgaW50IHZfc3RhcnQsIGludCB2X2VuZCk7CkBA IC0xODc0LDExICsxODc4LDExIEBAIEluZGV4OiBjaHJvbWl1bS0xMjMuMC42MzEyLjU4L3RoaXJk X3BhcnR5L2xpYmFvbS9zb3VyY2UvY29uZmlnL2xpbnV4L3BwYzY0L2NvbmZpCiArI2VuZGlmCiAr CiArI2VuZGlmCi1JbmRleDogY2hyb21pdW0tMTIzLjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJh b20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2NC9jb25maWcvYXYxX3J0Y2QuaAorSW5kZXg6IGNo cm9taXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGlu dXgvcHBjNjQvY29uZmlnL2F2MV9ydGNkLmgKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSAvZGV2L251bGwKLSsr KyBjaHJvbWl1bS0xMjMuMC42MzEyLjU4L3RoaXJkX3BhcnR5L2xpYmFvbS9zb3VyY2UvY29uZmln L2xpbnV4L3BwYzY0L2NvbmZpZy9hdjFfcnRjZC5oCi1AQCAtMCwwICsxLDQ3OCBAQAorKysrIGNo cm9taXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFydHkvbGliYW9tL3NvdXJjZS9jb25maWcvbGlu dXgvcHBjNjQvY29uZmlnL2F2MV9ydGNkLmgKK0BAIC0wLDAgKzEsNDg0IEBACiArLy8gVGhpcyBm aWxlIGlzIGdlbmVyYXRlZC4gRG8gbm90IGVkaXQuCiArI2lmbmRlZiBBVjFfUlRDRF9IXwogKyNk ZWZpbmUgQVYxX1JUQ0RfSF8KQEAgLTIyNTYsNiArMjI2MCwxMiBAQCBJbmRleDogY2hyb21pdW0t MTIzLjAuNjMxMi41OC90aGlyZF9wYXJ0eS9saWJhb20vc291cmNlL2NvbmZpZy9saW51eC9wcGM2 NC9jb25maQogK3ZvaWQgYXYxX3Jlc2l6ZV9hbmRfZXh0ZW5kX2ZyYW1lX2MoY29uc3QgWVYxMl9C VUZGRVJfQ09ORklHICpzcmMsIFlWMTJfQlVGRkVSX0NPTkZJRyAqZHN0LCBjb25zdCBJbnRlcnBG aWx0ZXIgZmlsdGVyLCBjb25zdCBpbnQgcGhhc2UsIGNvbnN0IGludCBudW1fcGxhbmVzKTsKICsj ZGVmaW5lIGF2MV9yZXNpemVfYW5kX2V4dGVuZF9mcmFtZSBhdjFfcmVzaXplX2FuZF9leHRlbmRf ZnJhbWVfYwogKworK3ZvaWQgYXYxX3Jlc2l6ZV9ob3J6X2Rpcl9jKGNvbnN0IHVpbnQ4X3QgKmNv bnN0IGlucHV0LCBpbnQgaW5fc3RyaWRlLCB1aW50OF90ICppbnRidWYsIGludCBoZWlnaHQsIGlu dCBmaWx0ZXJlZGxlbmd0aCwgaW50IHdpZHRoMik7CisrI2RlZmluZSBhdjFfcmVzaXplX2hvcnpf ZGlyIGF2MV9yZXNpemVfaG9yel9kaXJfYworKworK2Jvb2wgYXYxX3Jlc2l6ZV92ZXJ0X2Rpcl9j KHVpbnQ4X3QgKmludGJ1ZiwgdWludDhfdCAqb3V0cHV0LCBpbnQgb3V0X3N0cmlkZSwgaW50IGhl aWdodCwgaW50IGhlaWdodDIsIGludCB3aWR0aDIsIGludCBzdGFydF9jb2wpOworKyNkZWZpbmUg YXYxX3Jlc2l6ZV92ZXJ0X2RpciBhdjFfcmVzaXplX3ZlcnRfZGlyX2MKKysKICt2b2lkIGF2MV9y b3VuZF9zaGlmdF9hcnJheV9jKGludDMyX3QgKmFyciwgaW50IHNpemUsIGludCBiaXQpOwogKyNk ZWZpbmUgYXYxX3JvdW5kX3NoaWZ0X2FycmF5IGF2MV9yb3VuZF9zaGlmdF9hcnJheV9jCiArCgpk aWZmIC0tZ2l0IGEvMDAwMi1BZGQtUFBDNjQtZ2VuZXJhdGVkLWZpbGVzLWZvci1ib3Jpbmdzc2wu cGF0Y2ggYi8wMDAyLUFkZC1QUEM2NC1nZW5lcmF0ZWQtZmlsZXMtZm9yLWJvcmluZ3NzbC5wYXRj aAppbmRleCA1YWI1ZjE2Li40ZDEzNTVmIDEwMDY0NAotLS0gYS8wMDAyLUFkZC1QUEM2NC1nZW5l cmF0ZWQtZmlsZXMtZm9yLWJvcmluZ3NzbC5wYXRjaAorKysgYi8wMDAyLUFkZC1QUEM2NC1nZW5l cmF0ZWQtZmlsZXMtZm9yLWJvcmluZ3NzbC5wYXRjaApAQCAtMSw2ICsxLDcgQEAKLWRpZmYgLXVy TiBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuLm9y aWcvYmNtL2Flc3A4LXBwYy1saW51eC5TIGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFy dHkvYm9yaW5nc3NsL3NyYy9nZW4vYmNtL2Flc3A4LXBwYy1saW51eC5TCi0tLS0gY2hyb21pdW0t MTI1LjAuNjQyMi40MS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi5vcmlnL2JjbS9hZXNw OC1wcGMtbGludXguUwkxOTcwLTAxLTAxIDAwOjAwOjAwLjAwMDAwMDAwMCArMDAwMAotKysrIGNo cm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4vYmNtL2Fl c3A4LXBwYy1saW51eC5TCTIwMjQtMDUtMTQgMTc6NTU6MTYuMTk4MjUwODY5ICswMDAwCitJbmRl eDogY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi9i Y20vYWVzcDgtcHBjLWxpbnV4LlMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSAvZGV2L251bGwKKysrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjU3L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuL2JjbS9hZXNw OC1wcGMtbGludXguUwogQEAgLTAsMCArMSwzNjczIEBACiArLy8gVGhpcyBmaWxlIGlzIGdlbmVy YXRlZCBmcm9tIGEgc2ltaWxhcmx5LW5hbWVkIFBlcmwgc2NyaXB0IGluIHRoZSBCb3JpbmdTU0wK ICsvLyBzb3VyY2UgdHJlZS4gRG8gbm90IGVkaXQgYnkgaGFuZC4KQEAgLTM2NzUsOSArMzY3Niwx MCBAQCBkaWZmIC11ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGlyZF9wYXJ0eS9ib3Jpbmdz c2wvc3JjL2dlbi5vcmlnL2JjbS9hZXNwOC1wcAogKy8vIFNlZSBodHRwczovL3d3dy5haXJzLmNv bS9ibG9nL2FyY2hpdmVzLzUxOC4KICsuc2VjdGlvbiAubm90ZS5HTlUtc3RhY2ssIiIsJXByb2di aXRzCiArI2VuZGlmCi1kaWZmIC11ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGlyZF9wYXJ0 eS9ib3Jpbmdzc2wvc3JjL2dlbi5vcmlnL2JjbS9naGFzaHA4LXBwYy1saW51eC5TIGNocm9taXVt LTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4vYmNtL2doYXNocDgt cHBjLWxpbnV4LlMKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2Jvcmlu Z3NzbC9zcmMvZ2VuLm9yaWcvYmNtL2doYXNocDgtcHBjLWxpbnV4LlMJMTk3MC0wMS0wMSAwMDow MDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3Bh cnR5L2JvcmluZ3NzbC9zcmMvZ2VuL2JjbS9naGFzaHA4LXBwYy1saW51eC5TCTIwMjQtMDUtMTQg MTc6NTU6MTYuMDg2MjYzNjc4ICswMDAwCitJbmRleDogY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny90 aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi9iY20vZ2hhc2hwOC1wcGMtbGludXguUworPT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguNTcvdGhpcmRf cGFydHkvYm9yaW5nc3NsL3NyYy9nZW4vYmNtL2doYXNocDgtcHBjLWxpbnV4LlMKIEBAIC0wLDAg KzEsNTkwIEBACiArLy8gVGhpcyBmaWxlIGlzIGdlbmVyYXRlZCBmcm9tIGEgc2ltaWxhcmx5LW5h bWVkIFBlcmwgc2NyaXB0IGluIHRoZSBCb3JpbmdTU0wKICsvLyBzb3VyY2UgdHJlZS4gRG8gbm90 IGVkaXQgYnkgaGFuZC4KQEAgLTQyNjksMTAgKzQyNzEsMTEgQEAgZGlmZiAtdXJOIGNocm9taXVt LTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3JpZy9iY20vZ2hh c2hwOC0KICsvLyBTZWUgaHR0cHM6Ly93d3cuYWlycy5jb20vYmxvZy9hcmNoaXZlcy81MTguCiAr LnNlY3Rpb24gLm5vdGUuR05VLXN0YWNrLCIiLCVwcm9nYml0cwogKyNlbmRpZgotZGlmZiAtdXJO IGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3Jp Zy9zb3VyY2VzLmNtYWtlIGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5n c3NsL3NyYy9nZW4vc291cmNlcy5jbWFrZQotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3JpZy9zb3VyY2VzLmNtYWtlCTIwMjQtMDUtMDgg MjA6MzA6MzguMDAwMDAwMDAwICswMDAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGly ZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi9zb3VyY2VzLmNtYWtlCTIwMjQtMDUtMTQgMTc6NTU6 MTYuMDE4MjcxNDU1ICswMDAwCi1AQCAtMTEwLDYgKzExMCw3IEBACitJbmRleDogY2hyb21pdW0t MTI2LjAuNjQ3OC41Ny90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi9zb3VyY2VzLmNtYWtl Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09CistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny5vcmlnL3RoaXJkX3BhcnR5 L2JvcmluZ3NzbC9zcmMvZ2VuL3NvdXJjZXMuY21ha2UKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4 LjU3L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuL3NvdXJjZXMuY21ha2UKK0BAIC0xMTAs NiArMTEwLDcgQEAgc2V0KAogICAgZ2VuL2JjbS9hZXNuaS14ODYtbGludXguUwogICAgZ2VuL2Jj bS9hZXNuaS14ODZfNjQtYXBwbGUuUwogICAgZ2VuL2JjbS9hZXNuaS14ODZfNjQtbGludXguUwpA QCAtNDI4MCw3ICs0MjgzLDcgQEAgZGlmZiAtdXJOIGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3JpZy9zb3VyY2VzLmNtYWsKICAgIGdlbi9iY20v YWVzdjgtYXJtdjctbGludXguUwogICAgZ2VuL2JjbS9hZXN2OC1hcm12OC1hcHBsZS5TCiAgICBn ZW4vYmNtL2Flc3Y4LWFybXY4LWxpbnV4LlMKLUBAIC0xNDEsNiArMTQyLDcgQEAKK0BAIC0xNDEs NiArMTQyLDcgQEAgc2V0KAogICAgZ2VuL2JjbS9naGFzaC14ODYtbGludXguUwogICAgZ2VuL2Jj bS9naGFzaC14ODZfNjQtYXBwbGUuUwogICAgZ2VuL2JjbS9naGFzaC14ODZfNjQtbGludXguUwpA QCAtNDI4OCw3ICs0MjkxLDcgQEAgZGlmZiAtdXJOIGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhp cmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3JpZy9zb3VyY2VzLmNtYWsKICAgIGdlbi9iY20v Z2hhc2h2OC1hcm12Ny1saW51eC5TCiAgICBnZW4vYmNtL2doYXNodjgtYXJtdjgtYXBwbGUuUwog ICAgZ2VuL2JjbS9naGFzaHY4LWFybXY4LWxpbnV4LlMKLUBAIC0zMzYsNiArMzM4LDcgQEAKK0BA IC0zMzYsNiArMzM4LDcgQEAgc2V0KAogICAgY3J5cHRvL2NwdV9hcm1fZnJlZWJzZC5jCiAgICBj cnlwdG8vY3B1X2FybV9saW51eC5jCiAgICBjcnlwdG8vY3B1X2ludGVsLmMKQEAgLTQyOTYsNyAr NDI5OSw3IEBAIGRpZmYgLXVyTiBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2Jv cmluZ3NzbC9zcmMvZ2VuLm9yaWcvc291cmNlcy5jbWFrCiAgICBjcnlwdG8vY3J5cHRvLmMKICAg IGNyeXB0by9jdXJ2ZTI1NTE5L2N1cnZlMjU1MTkuYwogICAgY3J5cHRvL2N1cnZlMjU1MTkvY3Vy dmUyNTUxOV82NF9hZHguYwotQEAgLTc3NSwzNyArNzc4LDYgQEAKK0BAIC03NzUsMzcgKzc3OCw2 IEBAIHNldCgKICAgIENSWVBUT19URVNUX0RBVEEKICAKICAgIGNyeXB0by9ibGFrZTIvYmxha2Uy YjI1Nl90ZXN0cy50eHQKQEAgLTQzMzQsNyArNDMzNyw3IEBAIGRpZmYgLXVyTiBjaHJvbWl1bS0x MjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuLm9yaWcvc291cmNlcy5j bWFrCiAgICBjcnlwdG8vY3VydmUyNTUxOS9lZDI1NTE5X3Rlc3RzLnR4dAogICAgY3J5cHRvL2Vj ZGhfZXh0cmEvZWNkaF90ZXN0cy50eHQKICAgIGNyeXB0by9ldnAvZXZwX3Rlc3RzLnR4dAotQEAg LTExODIsMTQwMSArMTE1NCw2IEBACitAQCAtMTE4OSwxNDEzICsxMTYxLDYgQEAgc2V0KAogIHNl dCgKICAgIFBLSV9URVNUX0RBVEEKICAKQEAgLTUzMDYsMTQgKzUzMDksMTggQEAgZGlmZiAtdXJO IGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3Jp Zy9zb3VyY2VzLmNtYWsKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5f dW5pdHRlc3QvaW50ZXJtZWRpYXRlLWJhc2ljLWNvbnN0cmFpbnRzLW5vdC1jcml0aWNhbC9tYWlu LnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3Qv aW50ZXJtZWRpYXRlLWVrdS1hbnktYW5kLWNsaWVudGF1dGgvYW55LnRlc3QKIC0gIHBraS90ZXN0 ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50ZXJtZWRpYXRlLWVrdS1h bnktYW5kLWNsaWVudGF1dGgvY2hhaW4ucGVtCistICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRp ZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtYW55LWFuZC1jbGllbnRhdXRo L2NsaWVudGF1dGgtc3RyaWN0LWxlYWYudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0 aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWFueS1hbmQtY2xpZW50YXV0 aC9jbGllbnRhdXRoLXN0cmljdC50ZXN0CiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmlj YXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtYW55LWFuZC1jbGllbnRhdXRoL2Ns aWVudGF1dGgudGVzdAorLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91 bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWFueS1hbmQtY2xpZW50YXV0aC9zZXJ2ZXJhdXRoLXN0 cmljdC1sZWFmLnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5f dW5pdHRlc3QvaW50ZXJtZWRpYXRlLWVrdS1hbnktYW5kLWNsaWVudGF1dGgvc2VydmVyYXV0aC1z dHJpY3QudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0 dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWFueS1hbmQtY2xpZW50YXV0aC9zZXJ2ZXJhdXRoLnRlc3QK IC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50ZXJt ZWRpYXRlLWVrdS1jbGllbnRhdXRoL2FueS50ZXN0CiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2Nl cnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtY2xpZW50YXV0aC9jaGFp bi5wZW0KKy0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3Qv aW50ZXJtZWRpYXRlLWVrdS1jbGllbnRhdXRoL2NsaWVudGF1dGgtc3RyaWN0LWxlYWYudGVzdAog LSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1l ZGlhdGUtZWt1LWNsaWVudGF1dGgvY2xpZW50YXV0aC1zdHJpY3QudGVzdAogLSAgcGtpL3Rlc3Rk YXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWNs aWVudGF1dGgvY2xpZW50YXV0aC50ZXN0CistICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmlj YXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtY2xpZW50YXV0aC9zZXJ2ZXJhdXRo LXN0cmljdC1sZWFmLnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hh aW5fdW5pdHRlc3QvaW50ZXJtZWRpYXRlLWVrdS1jbGllbnRhdXRoL3NlcnZlcmF1dGgtc3RyaWN0 LnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3Qv aW50ZXJtZWRpYXRlLWVrdS1jbGllbnRhdXRoL3NlcnZlcmF1dGgudGVzdAogLSAgcGtpL3Rlc3Rk YXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LXNl cnZlci1nYXRlZC1jcnlwdG8vc2hhMS1jaGFpbi5wZW0KQEAgLTUzMjgsNiArNTMzNSw4IEBAIGRp ZmYgLXVyTiBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv Z2VuLm9yaWcvc291cmNlcy5jbWFrCiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRl X2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3Utc2VydmVyLWdhdGVkLWNyeXB0by9zaGEy NTYtZWt1LWNsaWVudEF1dGgudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0 ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LXNlcnZlci1nYXRlZC1jcnlwdG8vc2hh MjU2LWVrdS1zZXJ2ZXJBdXRoLXN0cmljdC50ZXN0CiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2Nl cnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3Utc2VydmVyLWdhdGVkLWNy eXB0by9zaGEyNTYtZWt1LXNlcnZlckF1dGgudGVzdAorLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9j ZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtaW52YWxpZC1zcGtpL2NoYWlu LnBlbQorLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9p bnRlcm1lZGlhdGUtaW52YWxpZC1zcGtpL21haW4udGVzdAogLSAgcGtpL3Rlc3RkYXRhL3Zlcmlm eV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtbGFja3MtYmFzaWMtY29u c3RyYWludHMvY2hhaW4ucGVtCiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2No YWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1sYWNrcy1iYXNpYy1jb25zdHJhaW50cy9tYWluLnRl c3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50 ZXJtZWRpYXRlLWxhY2tzLXNpZ25pbmcta2V5LXVzYWdlL2NoYWluLnBlbQpAQCAtNTUyNyw4ICs1 NTM2LDEwIEBAIGRpZmYgLXVyTiBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2Jv cmluZ3NzbC9zcmMvZ2VuLm9yaWcvc291cmNlcy5jbWFrCiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5 X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1hbmQtaW50ZXJtZWRpYXRlL3Vuc3Bl Y2lmaWVkLXRydXN0LXJvb3QudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0 ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LWFueS9hbnkudGVzdAogLSAgcGtpL3Rlc3RkYXRh L3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LWFueS9jaGFpbi5w ZW0KKy0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFy Z2V0LWVrdS1hbnkvY2xpZW50YXV0aC1zdHJpY3QtbGVhZi50ZXN0CiAtICBwa2kvdGVzdGRhdGEv dmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3UtYW55L2NsaWVudGF1 dGgtc3RyaWN0LnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5f dW5pdHRlc3QvdGFyZ2V0LWVrdS1hbnkvY2xpZW50YXV0aC50ZXN0CistICBwa2kvdGVzdGRhdGEv dmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3UtYW55L3NlcnZlcmF1 dGgtc3RyaWN0LWxlYWYudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9j aGFpbl91bml0dGVzdC90YXJnZXQtZWt1LWFueS9zZXJ2ZXJhdXRoLXN0cmljdC50ZXN0CiAtICBw a2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3Ut YW55L3NlcnZlcmF1dGgudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9j aGFpbl91bml0dGVzdC90YXJnZXQtZWt1LWNsaWVudGF1dGgvYW55LnRlc3QKQEAgLTU1MzksMTIg KzU1NTAsMTUgQEAgZGlmZiAtdXJOIGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkv Ym9yaW5nc3NsL3NyYy9nZW4ub3JpZy9zb3VyY2VzLmNtYWsKIC0gIHBraS90ZXN0ZGF0YS92ZXJp ZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LWVrdS1jbGllbnRhdXRoL3NlcnZl cmF1dGgudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0 dGVzdC90YXJnZXQtZWt1LW1hbnkvYW55LnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2Vy dGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LWVrdS1tYW55L2NoYWluLnBlbQorLSAgcGtp L3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW1h bnkvY2xpZW50YXV0aC1zdHJpY3QtbGVhZi50ZXN0CiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2Nl cnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3UtbWFueS9jbGllbnRhdXRoLXN0cmlj dC50ZXN0CiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0 L3RhcmdldC1la3UtbWFueS9jbGllbnRhdXRoLnRlc3QKKy0gIHBraS90ZXN0ZGF0YS92ZXJpZnlf Y2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LWVrdS1tYW55L3NlcnZlcmF1dGgtc3Ry aWN0LWxlYWYudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91 bml0dGVzdC90YXJnZXQtZWt1LW1hbnkvc2VydmVyYXV0aC1zdHJpY3QudGVzdAogLSAgcGtpL3Rl c3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW1hbnkv c2VydmVyYXV0aC50ZXN0CiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWlu X3VuaXR0ZXN0L3RhcmdldC1la3Utbm9uZS9hbnkudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3Zlcmlm eV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW5vbmUvY2hhaW4ucGVtCist ICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1l a3Utbm9uZS9jbGllbnRhdXRoLXN0cmljdC1sZWFmLnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJp ZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LWVrdS1ub25lL2NsaWVudGF1dGgt c3RyaWN0LnRlc3QKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5p dHRlc3QvdGFyZ2V0LWVrdS1ub25lL2NsaWVudGF1dGgudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3Zl cmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW5vbmUvc2VydmVyYXV0 aC1zdHJpY3QudGVzdApAQCAtNTU2Nyw2ICs1NTgxLDcgQEAgZGlmZiAtdXJOIGNocm9taXVtLTEy NS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3JpZy9zb3VyY2VzLmNt YWsKIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFy Z2V0LW1zYXBwbGljYXRpb25wb2xpY2llcy1uby1la3UvbWFpbi50ZXN0CiAtICBwa2kvdGVzdGRh dGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1ub3QtZW5kLWVudGl0 eS9jaGFpbi5wZW0KIC0gIHBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5p dHRlc3QvdGFyZ2V0LW5vdC1lbmQtZW50aXR5L21haW4udGVzdAorLSAgcGtpL3Rlc3RkYXRhL3Zl cmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtbm90LWVuZC1lbnRpdHkvc3Ry aWN0LWxlYWYudGVzdAogLSAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91 bml0dGVzdC90YXJnZXQtbm90LWVuZC1lbnRpdHkvc3RyaWN0LnRlc3QKIC0gIHBraS90ZXN0ZGF0 YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LW9ubHkvY2hhaW4ucGVt CiAtICBwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3Rhcmdl dC1vbmx5L3RydXN0ZWRfYW5jaG9yLnRlc3QKQEAgLTU3MzYsNyArNTc1MSw3IEBAIGRpZmYgLXVy TiBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuLm9y aWcvc291cmNlcy5jbWFrCiAgICBwa2kvdGVzdGRhdGEvdmVyaWZ5X3VuaXR0ZXN0L2dvb2dsZS1s ZWFmLmRlcgogICAgcGtpL3Rlc3RkYXRhL3ZlcmlmeV91bml0dGVzdC9zZWxmLWlzc3VlZC5wZW0K ICApCi1AQCAtMjY4OSw2ICsxMjY2LDcgQEAKK0BAIC0yNzA4LDYgKzEyNzMsNyBAQCBzZXQoCiAg ICBnZW4vdGVzdF9zdXBwb3J0L3RyYW1wb2xpbmUtYXJtdjgtYXBwbGUuUwogICAgZ2VuL3Rlc3Rf c3VwcG9ydC90cmFtcG9saW5lLWFybXY4LWxpbnV4LlMKICAgIGdlbi90ZXN0X3N1cHBvcnQvdHJh bXBvbGluZS1hcm12OC13aW4uUwpAQCAtNTc0NCw5ICs1NzU5LDEwIEBAIGRpZmYgLXVyTiBjaHJv bWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuLm9yaWcvc291 cmNlcy5jbWFrCiAgICBnZW4vdGVzdF9zdXBwb3J0L3RyYW1wb2xpbmUteDg2LWFwcGxlLlMKICAg IGdlbi90ZXN0X3N1cHBvcnQvdHJhbXBvbGluZS14ODYtbGludXguUwogICAgZ2VuL3Rlc3Rfc3Vw cG9ydC90cmFtcG9saW5lLXg4Nl82NC1hcHBsZS5TCi1kaWZmIC11ck4gY2hyb21pdW0tMTI1LjAu NjQyMi40MS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi5vcmlnL3NvdXJjZXMuanNvbiBj aHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuL3NvdXJj ZXMuanNvbgotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3Ns L3NyYy9nZW4ub3JpZy9zb3VyY2VzLmpzb24JMjAyNC0wNS0wOCAyMDozMDozOC4wMDAwMDAwMDAg KzAwMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9z cmMvZ2VuL3NvdXJjZXMuanNvbgkyMDI0LTA1LTE0IDE3OjU1OjE2LjAyMjI3MDk5NyArMDAwMAor SW5kZXg6IGNocm9taXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9n ZW4vc291cmNlcy5qc29uCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny5v cmlnL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuL3NvdXJjZXMuanNvbgorKysrIGNocm9t aXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4vc291cmNlcy5q c29uCiBAQCAtODgsNiArODgsNyBAQAogICAgICAgICJnZW4vYmNtL2Flc25pLXg4Ni1saW51eC5T IiwKICAgICAgICAiZ2VuL2JjbS9hZXNuaS14ODZfNjQtYXBwbGUuUyIsCkBAIC01ODA5LDcgKzU4 MjUsNyBAQCBkaWZmIC11ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2dlbi5vcmlnL3NvdXJjZXMuanNvbgogICAgICAgICJjcnlwdG8vY3VydmUyNTUx OS9lZDI1NTE5X3Rlc3RzLnR4dCIsCiAgICAgICAgImNyeXB0by9lY2RoX2V4dHJhL2VjZGhfdGVz dHMudHh0IiwKICAgICAgICAiY3J5cHRvL2V2cC9ldnBfdGVzdHMudHh0IiwKLUBAIC0xMTIzLDE0 MDEgKzEwOTUsNiBAQAorQEAgLTExMjcsMTQxMyArMTA5OSw2IEBACiAgICAgICAgInBraS92ZXJp Znlfc2lnbmVkX2RhdGFfdW5pdHRlc3QuY2MiCiAgICAgIF0sCiAgICAgICJkYXRhIjogWwpAQCAt Njc4MSwxNCArNjc5NywxOCBAQCBkaWZmIC11ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGly ZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi5vcmlnL3NvdXJjZXMuanNvbgogLSAgICAgICJwa2kv dGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1i YXNpYy1jb25zdHJhaW50cy1ub3QtY3JpdGljYWwvbWFpbi50ZXN0IiwKIC0gICAgICAicGtpL3Rl c3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1 LWFueS1hbmQtY2xpZW50YXV0aC9hbnkudGVzdCIsCiAtICAgICAgInBraS90ZXN0ZGF0YS92ZXJp ZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50ZXJtZWRpYXRlLWVrdS1hbnktYW5kLWNs aWVudGF1dGgvY2hhaW4ucGVtIiwKKy0gICAgICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZp Y2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWFueS1hbmQtY2xpZW50YXV0aC9j bGllbnRhdXRoLXN0cmljdC1sZWFmLnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5 X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtYW55LWFuZC1jbGll bnRhdXRoL2NsaWVudGF1dGgtc3RyaWN0LnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVy aWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtYW55LWFuZC1j bGllbnRhdXRoL2NsaWVudGF1dGgudGVzdCIsCistICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlf Y2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50ZXJtZWRpYXRlLWVrdS1hbnktYW5kLWNsaWVu dGF1dGgvc2VydmVyYXV0aC1zdHJpY3QtbGVhZi50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRh L3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWFueS1h bmQtY2xpZW50YXV0aC9zZXJ2ZXJhdXRoLXN0cmljdC50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3Rk YXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWFu eS1hbmQtY2xpZW50YXV0aC9zZXJ2ZXJhdXRoLnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRhdGEv dmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtY2xpZW50 YXV0aC9hbnkudGVzdCIsCiAtICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVf Y2hhaW5fdW5pdHRlc3QvaW50ZXJtZWRpYXRlLWVrdS1jbGllbnRhdXRoL2NoYWluLnBlbSIsCist ICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50 ZXJtZWRpYXRlLWVrdS1jbGllbnRhdXRoL2NsaWVudGF1dGgtc3RyaWN0LWxlYWYudGVzdCIsCiAt ICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50 ZXJtZWRpYXRlLWVrdS1jbGllbnRhdXRoL2NsaWVudGF1dGgtc3RyaWN0LnRlc3QiLAogLSAgICAg ICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVk aWF0ZS1la3UtY2xpZW50YXV0aC9jbGllbnRhdXRoLnRlc3QiLAorLSAgICAgICJwa2kvdGVzdGRh dGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtY2xp ZW50YXV0aC9zZXJ2ZXJhdXRoLXN0cmljdC1sZWFmLnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRh dGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3UtY2xp ZW50YXV0aC9zZXJ2ZXJhdXRoLXN0cmljdC50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRhL3Zl cmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LWNsaWVudGF1 dGgvc2VydmVyYXV0aC50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZp Y2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtZWt1LXNlcnZlci1nYXRlZC1jcnlwdG8v c2hhMS1jaGFpbi5wZW0iLApAQCAtNjgwMyw2ICs2ODIzLDggQEAgZGlmZiAtdXJOIGNocm9taXVt LTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4ub3JpZy9zb3VyY2Vz Lmpzb24KIC0gICAgICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0 dGVzdC9pbnRlcm1lZGlhdGUtZWt1LXNlcnZlci1nYXRlZC1jcnlwdG8vc2hhMjU2LWVrdS1jbGll bnRBdXRoLnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2No YWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3Utc2VydmVyLWdhdGVkLWNyeXB0by9zaGEyNTYt ZWt1LXNlcnZlckF1dGgtc3RyaWN0LnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5 X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1la3Utc2VydmVyLWdhdGVk LWNyeXB0by9zaGEyNTYtZWt1LXNlcnZlckF1dGgudGVzdCIsCistICAgICAgInBraS90ZXN0ZGF0 YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvaW50ZXJtZWRpYXRlLWludmFsaWQt c3BraS9jaGFpbi5wZW0iLAorLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRl X2NoYWluX3VuaXR0ZXN0L2ludGVybWVkaWF0ZS1pbnZhbGlkLXNwa2kvbWFpbi50ZXN0IiwKIC0g ICAgICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRl cm1lZGlhdGUtbGFja3MtYmFzaWMtY29uc3RyYWludHMvY2hhaW4ucGVtIiwKIC0gICAgICAicGtp L3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUt bGFja3MtYmFzaWMtY29uc3RyYWludHMvbWFpbi50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRh L3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC9pbnRlcm1lZGlhdGUtbGFja3Mtc2ln bmluZy1rZXktdXNhZ2UvY2hhaW4ucGVtIiwKQEAgLTcwMDIsOCArNzAyNCwxMCBAQCBkaWZmIC11 ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi5v cmlnL3NvdXJjZXMuanNvbgogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRl X2NoYWluX3VuaXR0ZXN0L3RhcmdldC1hbmQtaW50ZXJtZWRpYXRlL3Vuc3BlY2lmaWVkLXRydXN0 LXJvb3QudGVzdCIsCiAtICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hh aW5fdW5pdHRlc3QvdGFyZ2V0LWVrdS1hbnkvYW55LnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRh dGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3UtYW55L2NoYWlu LnBlbSIsCistICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5p dHRlc3QvdGFyZ2V0LWVrdS1hbnkvY2xpZW50YXV0aC1zdHJpY3QtbGVhZi50ZXN0IiwKIC0gICAg ICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQt ZWt1LWFueS9jbGllbnRhdXRoLXN0cmljdC50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRhL3Zl cmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LWFueS9jbGllbnRhdXRo LnRlc3QiLAorLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3Vu aXR0ZXN0L3RhcmdldC1la3UtYW55L3NlcnZlcmF1dGgtc3RyaWN0LWxlYWYudGVzdCIsCiAtICAg ICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0 LWVrdS1hbnkvc2VydmVyYXV0aC1zdHJpY3QudGVzdCIsCiAtICAgICAgInBraS90ZXN0ZGF0YS92 ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LWVrdS1hbnkvc2VydmVyYXV0 aC50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91 bml0dGVzdC90YXJnZXQtZWt1LWNsaWVudGF1dGgvYW55LnRlc3QiLApAQCAtNzAxNCwxMiArNzAz OCwxNSBAQCBkaWZmIC11ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2dlbi5vcmlnL3NvdXJjZXMuanNvbgogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVy aWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3UtY2xpZW50YXV0aC9zZXJ2 ZXJhdXRoLnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2No YWluX3VuaXR0ZXN0L3RhcmdldC1la3UtbWFueS9hbnkudGVzdCIsCiAtICAgICAgInBraS90ZXN0 ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LWVrdS1tYW55L2No YWluLnBlbSIsCistICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5f dW5pdHRlc3QvdGFyZ2V0LWVrdS1tYW55L2NsaWVudGF1dGgtc3RyaWN0LWxlYWYudGVzdCIsCiAt ICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFy Z2V0LWVrdS1tYW55L2NsaWVudGF1dGgtc3RyaWN0LnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRh dGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3UtbWFueS9jbGll bnRhdXRoLnRlc3QiLAorLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2No YWluX3VuaXR0ZXN0L3RhcmdldC1la3UtbWFueS9zZXJ2ZXJhdXRoLXN0cmljdC1sZWFmLnRlc3Qi LAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0 L3RhcmdldC1la3UtbWFueS9zZXJ2ZXJhdXRoLXN0cmljdC50ZXN0IiwKIC0gICAgICAicGtpL3Rl c3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW1hbnkv c2VydmVyYXV0aC50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0 ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW5vbmUvYW55LnRlc3QiLAogLSAgICAgICJwa2kv dGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1la3Utbm9u ZS9jaGFpbi5wZW0iLAorLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2No YWluX3VuaXR0ZXN0L3RhcmdldC1la3Utbm9uZS9jbGllbnRhdXRoLXN0cmljdC1sZWFmLnRlc3Qi LAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0 L3RhcmdldC1la3Utbm9uZS9jbGllbnRhdXRoLXN0cmljdC50ZXN0IiwKIC0gICAgICAicGtpL3Rl c3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW5vbmUv Y2xpZW50YXV0aC50ZXN0IiwKIC0gICAgICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV9jZXJ0aWZpY2F0 ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtZWt1LW5vbmUvc2VydmVyYXV0aC1zdHJpY3QudGVzdCIs CkBAIC03MDQyLDYgKzcwNjksNyBAQCBkaWZmIC11ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90 aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvc3JjL2dlbi5vcmlnL3NvdXJjZXMuanNvbgogLSAgICAgICJw a2kvdGVzdGRhdGEvdmVyaWZ5X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1tc2Fw cGxpY2F0aW9ucG9saWNpZXMtbm8tZWt1L21haW4udGVzdCIsCiAtICAgICAgInBraS90ZXN0ZGF0 YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LW5vdC1lbmQtZW50aXR5 L2NoYWluLnBlbSIsCiAtICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hh aW5fdW5pdHRlc3QvdGFyZ2V0LW5vdC1lbmQtZW50aXR5L21haW4udGVzdCIsCistICAgICAgInBr aS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5pdHRlc3QvdGFyZ2V0LW5vdC1l bmQtZW50aXR5L3N0cmljdC1sZWFmLnRlc3QiLAogLSAgICAgICJwa2kvdGVzdGRhdGEvdmVyaWZ5 X2NlcnRpZmljYXRlX2NoYWluX3VuaXR0ZXN0L3RhcmdldC1ub3QtZW5kLWVudGl0eS9zdHJpY3Qu dGVzdCIsCiAtICAgICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfY2VydGlmaWNhdGVfY2hhaW5fdW5p dHRlc3QvdGFyZ2V0LW9ubHkvY2hhaW4ucGVtIiwKIC0gICAgICAicGtpL3Rlc3RkYXRhL3Zlcmlm eV9jZXJ0aWZpY2F0ZV9jaGFpbl91bml0dGVzdC90YXJnZXQtb25seS90cnVzdGVkX2FuY2hvci50 ZXN0IiwKQEAgLTcyMTEsNyArNzIzOSw3IEBAIGRpZmYgLXVyTiBjaHJvbWl1bS0xMjUuMC42NDIy LjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuLm9yaWcvc291cmNlcy5qc29uCiAgICAg ICAgInBraS90ZXN0ZGF0YS92ZXJpZnlfdW5pdHRlc3QvZ29vZ2xlLWxlYWYuZGVyIiwKICAgICAg ICAicGtpL3Rlc3RkYXRhL3ZlcmlmeV91bml0dGVzdC9zZWxmLWlzc3VlZC5wZW0iCiAgICAgIF0K LUBAIC0yNjE1LDYgKzExOTIsNyBAQAorQEAgLTI2MzEsNiArMTE5Niw3IEBACiAgICAgICAgImdl bi90ZXN0X3N1cHBvcnQvdHJhbXBvbGluZS1hcm12OC1hcHBsZS5TIiwKICAgICAgICAiZ2VuL3Rl c3Rfc3VwcG9ydC90cmFtcG9saW5lLWFybXY4LWxpbnV4LlMiLAogICAgICAgICJnZW4vdGVzdF9z dXBwb3J0L3RyYW1wb2xpbmUtYXJtdjgtd2luLlMiLApAQCAtNzIxOSw5ICs3MjQ3LDEwIEBAIGRp ZmYgLXVyTiBjaHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMv Z2VuLm9yaWcvc291cmNlcy5qc29uCiAgICAgICAgImdlbi90ZXN0X3N1cHBvcnQvdHJhbXBvbGlu ZS14ODYtYXBwbGUuUyIsCiAgICAgICAgImdlbi90ZXN0X3N1cHBvcnQvdHJhbXBvbGluZS14ODYt bGludXguUyIsCiAgICAgICAgImdlbi90ZXN0X3N1cHBvcnQvdHJhbXBvbGluZS14ODZfNjQtYXBw bGUuUyIsCi1kaWZmIC11ck4gY2hyb21pdW0tMTI1LjAuNjQyMi40MS90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2dlbi5vcmlnL3Rlc3Rfc3VwcG9ydC90cmFtcG9saW5lLXBwYy1saW51eC5TIGNo cm9taXVtLTEyNS4wLjY0MjIuNDEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL3NyYy9nZW4vdGVzdF9z dXBwb3J0L3RyYW1wb2xpbmUtcHBjLWxpbnV4LlMKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjQx L3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuLm9yaWcvdGVzdF9zdXBwb3J0L3RyYW1wb2xp bmUtcHBjLWxpbnV4LlMJMTk3MC0wMS0wMSAwMDowMDowMC4wMDAwMDAwMDAgKzAwMDAKLSsrKyBj aHJvbWl1bS0xMjUuMC42NDIyLjQxL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9zcmMvZ2VuL3Rlc3Rf c3VwcG9ydC90cmFtcG9saW5lLXBwYy1saW51eC5TCTIwMjQtMDUtMTQgMTc6NTU6MTYuMDkwMjYz MjIxICswMDAwCitJbmRleDogY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny90aGlyZF9wYXJ0eS9ib3Jp bmdzc2wvc3JjL2dlbi90ZXN0X3N1cHBvcnQvdHJhbXBvbGluZS1wcGMtbGludXguUworPT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PQorLS0tIC9kZXYvbnVsbAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguNTcvdGhpcmRfcGFy dHkvYm9yaW5nc3NsL3NyYy9nZW4vdGVzdF9zdXBwb3J0L3RyYW1wb2xpbmUtcHBjLWxpbnV4LlMK IEBAIC0wLDAgKzEsMTQxMyBAQAogKy8vIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgZnJvbSBhIHNp bWlsYXJseS1uYW1lZCBQZXJsIHNjcmlwdCBpbiB0aGUgQm9yaW5nU1NMCiArLy8gc291cmNlIHRy ZWUuIERvIG5vdCBlZGl0IGJ5IGhhbmQuCgpkaWZmIC0tZ2l0IGEvMDAwOC1zYW5kYm94LWZpeC1w cGM2NGxlLWdsaWJjMjM0LnBhdGNoIGIvMDAwOC1zYW5kYm94LWZpeC1wcGM2NGxlLWdsaWJjMjM0 LnBhdGNoCmluZGV4IDE4NWFlZmMuLmRmZGE5ZTggMTAwNjQ0Ci0tLSBhLzAwMDgtc2FuZGJveC1m aXgtcHBjNjRsZS1nbGliYzIzNC5wYXRjaAorKysgYi8wMDA4LXNhbmRib3gtZml4LXBwYzY0bGUt Z2xpYmMyMzQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1JbmRleDogY2hyb21pdW0tMTIwLjAuNjA5 OS43MS9zYW5kYm94L3BvbGljeS9saW51eC9icGZfdXRpbGl0eV9wb2xpY3lfbGludXguY2MKK0lu ZGV4OiBjaHJvbWl1bS0xMjYuMC42NDc4LjU3L3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl91dGls aXR5X3BvbGljeV9saW51eC5jYwogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNocm9taXVtLTEyMC4wLjYwOTku NzEub3JpZy9zYW5kYm94L3BvbGljeS9saW51eC9icGZfdXRpbGl0eV9wb2xpY3lfbGludXguY2MK LSsrKyBjaHJvbWl1bS0xMjAuMC42MDk5LjcxL3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl91dGls aXR5X3BvbGljeV9saW51eC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguNTcub3JpZy9zYW5k Ym94L3BvbGljeS9saW51eC9icGZfdXRpbGl0eV9wb2xpY3lfbGludXguY2MKKysrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjU3L3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl91dGlsaXR5X3BvbGljeV9s aW51eC5jYwogQEAgLTM0LDcgKzM0LDcgQEAgUmVzdWx0RXhwciBVdGlsaXR5UHJvY2Vzc1BvbGlj eTo6RXZhbHVhdAogICAgICBjYXNlIF9fTlJfZmRhdGFzeW5jOgogICAgICBjYXNlIF9fTlJfZnN5 bmM6CkBAIC0xMSwxMCArMTEsMTAgQEAgSW5kZXg6IGNocm9taXVtLTEyMC4wLjYwOTkuNzEvc2Fu ZGJveC9wb2xpY3kvbGludXgvYnBmX3V0aWxpdHlfcG9saWN5X2xpbnV4LmNjCiAgICAgIGNhc2Ug X19OUl9nZXRybGltaXQ6CiAgI2VuZGlmCiAgI2lmIGRlZmluZWQoX19pMzg2X18pIHx8IGRlZmlu ZWQoX19hcm1fXykKLUluZGV4OiBjaHJvbWl1bS0xMjAuMC42MDk5LjcxL3NhbmRib3gvcG9saWN5 L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXguY2MKK0luZGV4OiBjaHJvbWl1bS0xMjYu MC42NDc4LjU3L3NhbmRib3gvcG9saWN5L2xpbnV4L2JwZl9yZW5kZXJlcl9wb2xpY3lfbGludXgu Y2MKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT0KLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjcxLm9yaWcvc2FuZGJveC9w b2xpY3kvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51eC5jYwotKysrIGNocm9taXVtLTEy MC4wLjYwOTkuNzEvc2FuZGJveC9wb2xpY3kvbGludXgvYnBmX3JlbmRlcmVyX3BvbGljeV9saW51 eC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguNTcub3JpZy9zYW5kYm94L3BvbGljeS9saW51 eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC41 Ny9zYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVuZGVyZXJfcG9saWN5X2xpbnV4LmNjCiBAQCAt ODcsNyArODcsNyBAQCBSZXN1bHRFeHByIFJlbmRlcmVyUHJvY2Vzc1BvbGljeTo6RXZhbHVhCiAg ICAgIGNhc2UgX19OUl9mdHJ1bmNhdGU2NDoKICAjZW5kaWYKQEAgLTI0LDEwICsyNCwxMCBAQCBJ bmRleDogY2hyb21pdW0tMTIwLjAuNjA5OS43MS9zYW5kYm94L3BvbGljeS9saW51eC9icGZfcmVu ZGVyZXJfcG9saWN5X2xpbnV4LmNjCiAgICAgIGNhc2UgX19OUl9nZXRybGltaXQ6CiAgICAgIGNh c2UgX19OUl9zZXRybGltaXQ6CiAgLy8gV2UgYWxsb3cgc2V0cmxpbWl0IHRvIGR5bmFtaWNhbGx5 IGFkanVzdCB0aGUgYWRkcmVzcyBzcGFjZSBsaW1pdCBhcwotSW5kZXg6IGNocm9taXVtLTEyMC4w LjYwOTkuNzEvc2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKK0lu ZGV4OiBjaHJvbWl1bS0xMjYuMC42NDc4LjU3L3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9z eXNjYWxsX3Jhbmdlcy5oCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY2hyb21pdW0tMTIwLjAuNjA5OS43MS5v cmlnL3NhbmRib3gvbGludXgvYnBmX2RzbC9saW51eF9zeXNjYWxsX3Jhbmdlcy5oCi0rKysgY2hy b21pdW0tMTIwLjAuNjA5OS43MS9zYW5kYm94L2xpbnV4L2JwZl9kc2wvbGludXhfc3lzY2FsbF9y YW5nZXMuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguNTcub3JpZy9zYW5kYm94L2xpbnV4L2Jw Zl9kc2wvbGludXhfc3lzY2FsbF9yYW5nZXMuaAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguNTcv c2FuZGJveC9saW51eC9icGZfZHNsL2xpbnV4X3N5c2NhbGxfcmFuZ2VzLmgKIEBAIC01OCw5ICs1 OCw5IEBACiAgCiAgI2VsaWYgZGVmaW5lZChfX3Bvd2VycGM2NF9fKQpAQCAtNDAsMzcgKzQwLDM2 IEBAIEluZGV4OiBjaHJvbWl1bS0xMjAuMC42MDk5LjcxL3NhbmRib3gvbGludXgvYnBmX2RzbC9s aW51eF9zeXNjYWxsX3Jhbmdlcy5oCiAgI2RlZmluZSBNQVhfU1lTQ0FMTCBNQVhfUFVCTElDX1NZ U0NBTEwKICAKICAjZWxzZQotSW5kZXg6IGNocm9taXVtLTEyMC4wLjYwOTkuNzEvc2FuZGJveC9s aW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYworSW5kZXg6IGNocm9taXVtLTEyNi4wLjY0Nzgu NTcvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5jYwogPT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0t IGNocm9taXVtLTEyMC4wLjYwOTkuNzEub3JpZy9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2NyZWRl bnRpYWxzLmNjCi0rKysgY2hyb21pdW0tMTIwLjAuNjA5OS43MS9zYW5kYm94L2xpbnV4L3NlcnZp Y2VzL2NyZWRlbnRpYWxzLmNjCi1AQCAtODksNyArODksOSBAQCBib29sIENocm9vdFRvU2FmZUVt cHR5RGlyKCkgeworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguNTcub3JpZy9zYW5kYm94L2xpbnV4 L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC41Ny9zYW5k Ym94L2xpbnV4L3NlcnZpY2VzL2NyZWRlbnRpYWxzLmNjCitAQCAtODksNyArODksOCBAQCBib29s IENocm9vdFRvU2FmZUVtcHR5RGlyKCkgewogIAogICAgaW50IGNsb25lX2ZsYWdzID0gQ0xPTkVf RlMgfCBMSU5VWF9TSUdDSExEOwogICAgdm9pZCogdGxzID0gbnVsbHB0cjsKIC0jaWYgKGRlZmlu ZWQoQVJDSF9DUFVfWDg2XzY0KSB8fCBkZWZpbmVkKEFSQ0hfQ1BVX0FSTV9GQU1JTFkpKSAmJiBc Ci0rLy8gUkFKQSB0aGlzIG1pZ2h0IGJlIGl0Li4uCiArI2lmIChkZWZpbmVkKEFSQ0hfQ1BVX1g4 Nl82NCkgfHwgZGVmaW5lZChBUkNIX0NQVV9BUk1fRkFNSUxZKSB8fCBcCiArICAgIGRlZmluZWQo QVJDSF9DUFVfUFBDNjRfRkFNSUxZKSkgJiYgXAogICAgICAhZGVmaW5lZChNRU1PUllfU0FOSVRJ WkVSKQogICAgLy8gVXNlIENMT05FX1ZNIHwgQ0xPTkVfVkZPUksgYXMgYW4gb3B0aW1pemF0aW9u IHRvIGF2b2lkIGNvcHlpbmcgcGFnZSB0YWJsZXMuCiAgICAvLyBTaW5jZSBjbG9uZSB3cml0ZXMg dG8gdGhlIG5ldyBjaGlsZCdzIFRMUyBiZWZvcmUgcmV0dXJuaW5nLCB3ZSBtdXN0IHNldCBhCi1A QCAtOTcsNiArOTksMTEgQEAgYm9vbCBDaHJvb3RUb1NhZmVFbXB0eURpcigpIHsKK0BAIC05Nyw2 ICs5OCwxMSBAQCBib29sIENocm9vdFRvU2FmZUVtcHR5RGlyKCkgewogICAgLy8gZ2xpYmMgcGVy Zm9ybXMgc3lzY2FsbHMgYnkgY2FsbGluZyBhIGZ1bmN0aW9uIHBvaW50ZXIgaW4gVExTLCBzbyB3 ZSBkbyBub3QKICAgIC8vIGF0dGVtcHQgdGhpcyBvcHRpbWl6YXRpb24uCi0gICAvLyBUT0RPKGNy YnVnLmNvbS8xMjQ3NDU4KSBCcm9rZW4gaW4gTVNhbiBidWlsZHMgYWZ0ZXIgTExWTSBmMWJiMzBh NDk1NmYuCisgICAvLyBUT0RPKGNyYnVnLmNvbS80MDE5Njg2OSkgQnJva2VuIGluIE1TYW4gYnVp bGRzIGFmdGVyIExMVk0gZjFiYjMwYTQ5NTZmLgogKyAgLy8KICsgIC8vIE5PVEU6IFdpdGhvdXQg Q0xPTkVfVk0sIGZvbnRjb25maWcgd2lsbCBhdHRlbXB0IHRvIHJlbG9hZCBjb25maWd1cmF0aW9u CiArICAvLyBpbiBldmVyeSB0aHJlYWQuICBTaW5jZSB0aGUgcmVuZGVyZWQgdGhyZWFkcyBhcmUg c2FuZGJveGVkIHdpdGhvdXQKICsgIC8vIGZpbGVzeXN0ZW0gYWNjZXNzIChlLmcuIHRvIC9ldGMv Zm9udHMvZm9udHMuY29uZikgdGhpcyB3aWxsIGNhdXNlIGZvbnQKLSsgIC8vIGNvbmZpZ3VyYWl0 b24gbG9hZGluZyBmYWlsdXJlcyBhbmQgbm8gZm9udHMgd2lsbCBiZSBkaXNwbGF5ZWQhCisrICAv LyBjb25maWd1cmF0aW9uIGxvYWRpbmcgZmFpbHVyZXMgYW5kIG5vIGZvbnRzIHdpbGwgYmUgZGlz cGxheWVkIQogICAgY2xvbmVfZmxhZ3MgfD0gQ0xPTkVfVk0gfCBDTE9ORV9WRk9SSyB8IENMT05F X1NFVFRMUzsKICAKICAgIC8vIFBUSFJFQURfU1RBQ0tfTUlOIGNhbiBiZSBkeW5hbWljIGluIGds aWJjMi4zNCssIHNvIGl0IGlzIG5vdCBwb3NzaWJsZSB0bwotSW5kZXg6IGNocm9taXVtLTEyMC4w LjYwOTkuNzEvc2FuZGJveC9saW51eC9zZWNjb21wLWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVy cy5jYworSW5kZXg6IGNocm9taXVtLTEyNi4wLjY0NzguNTcvc2FuZGJveC9saW51eC9zZWNjb21w LWJwZi1oZWxwZXJzL3NpZ3N5c19oYW5kbGVycy5jYwogPT09PT09PT09PT09PT09PT09PT09PT09 PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNocm9taXVt LTEyMC4wLjYwOTkuNzEub3JpZy9zYW5kYm94L2xpbnV4L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2ln c3lzX2hhbmRsZXJzLmNjCi0rKysgY2hyb21pdW0tMTIwLjAuNjA5OS43MS9zYW5kYm94L2xpbnV4 L3NlY2NvbXAtYnBmLWhlbHBlcnMvc2lnc3lzX2hhbmRsZXJzLmNjCistLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC41Ny5vcmlnL3NhbmRib3gvbGludXgvc2VjY29tcC1icGYtaGVscGVycy9zaWdzeXNf aGFuZGxlcnMuY2MKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjU3L3NhbmRib3gvbGludXgvc2Vj Y29tcC1icGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuY2MKIEBAIC0zNTcsNyArMzU3LDE2IEBA IGludHB0cl90IFNJR1NZU0ZzdGF0YXRIYW5kbGVyKGNvbnN0IHN0cnUKICAgIGlmIChhcmdzLm5y ID09IF9fTlJfZnN0YXRhdF9kZWZhdWx0KSB7CiAgICAgIGlmICgqcmVpbnRlcnByZXRfY2FzdDxj b25zdCBjaGFyKj4oYXJncy5hcmdzWzFdKSA9PSAnXDAnICYmCgpkaWZmIC0tZ2l0IGEvY2hyb21p dW0tMTE2LWVsNy1pbmNsdWRlLWZjbnRsLW1lbWZkLnBhdGNoIGIvY2hyb21pdW0tMTE2LWVsNy1p bmNsdWRlLWZjbnRsLW1lbWZkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBk MjM3NDVlLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTExNi1lbDctaW5jbHVkZS1mY250bC1tZW1m ZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVt LTEwOC4wLjUzNTkuMTI0L3RoaXJkX3BhcnR5L3dheWxhbmQvc3JjL3NyYy93YXlsYW5kLXNobS5j Lm1lIGNocm9taXVtLTEwOC4wLjUzNTkuMTI0L3RoaXJkX3BhcnR5L3dheWxhbmQvc3JjL3NyYy93 YXlsYW5kLXNobS5jCi0tLS0gY2hyb21pdW0tMTA4LjAuNTM1OS4xMjQvdGhpcmRfcGFydHkvd2F5 bGFuZC9zcmMvc3JjL3dheWxhbmQtc2htLmMubWUJMjAyMi0xMi0yNCAxMTowODowMy4yMTIzMzM0 NzYgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMDguMC41MzU5LjEyNC90aGlyZF9wYXJ0eS93YXlsYW5k L3NyYy9zcmMvd2F5bGFuZC1zaG0uYwkyMDIyLTEyLTI0IDExOjA4OjE4LjMxNjYwNjE1NSArMDEw MAotQEAgLTQ0LDcgKzQ0LDcgQEAKLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHB0 aHJlYWQuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLS0jaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5j bHVkZSA8bGludXgvZmNudGwuaD4KLSAKLSAjaW5jbHVkZSAid2F5bGFuZC1vcy5oIgotICNpbmNs dWRlICJ3YXlsYW5kLXV0aWwuaCIKLWRpZmYgLXVwIGNocm9taXVtLTEwMi4wLjUwMDUuMTE1L3Y4 L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNjLmVsNy1tZW1mZC1pbmNsdWRlIGNo cm9taXVtLTEwMi4wLjUwMDUuMTE1L3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4 LmNjCi0tLS0gY2hyb21pdW0tMTAyLjAuNTAwNS4xMTUvdjgvc3JjL2Jhc2UvcGxhdGZvcm0vcGxh dGZvcm0tcG9zaXguY2MuZWw3LW1lbWZkLWluY2x1ZGUJMjAyMi0wNi0xNSAxMDo1Mjo0OS41NTM4 MTcwMzEgLTA0MDAKLSsrKyBjaHJvbWl1bS0xMDIuMC41MDA1LjExNS92OC9zcmMvYmFzZS9wbGF0 Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYwkyMDIyLTA2LTE1IDEwOjU2OjE1Ljc3NTE3MzAxMyAtMDQw MAotQEAgLTU2LDYgKzU2LDcgQEAKLSAKLSAjaWYgVjhfT1NfTElOVVgKLSAjaW5jbHVkZSA8c3lz L3ByY3RsLmg+ICAvLyBmb3IgcHJjdGwKLSsjaW5jbHVkZSA8bGludXgvbWVtZmQuaD4gLy8gZm9y IE1GRF9DTE9FWEVDCi0gI2VuZGlmCi0gCi0gI2lmIGRlZmluZWQoVjhfT1NfRlVDSFNJQSkKLWRp ZmYgLXVwIGlyaWRpdW0tYnJvd3Nlci0yMDIyLjEyLjEwOC4xL3RoaXJkX3BhcnR5L3dheWxhbmQv c3JjL2N1cnNvci9vcy1jb21wYXRpYmlsaXR5LmMubWUgaXJpZGl1bS1icm93c2VyLTIwMjIuMTIu MTA4LjEvdGhpcmRfcGFydHkvd2F5bGFuZC9zcmMvY3Vyc29yL29zLWNvbXBhdGliaWxpdHkuYwot LS0tIGlyaWRpdW0tYnJvd3Nlci0yMDIyLjEyLjEwOC4xL3RoaXJkX3BhcnR5L3dheWxhbmQvc3Jj L2N1cnNvci9vcy1jb21wYXRpYmlsaXR5LmMubWUJMjAyMi0xMi0wOCAyMTo1OTo0My41MDIyMDA5 ODQgKzAxMDAKLSsrKyBpcmlkaXVtLWJyb3dzZXItMjAyMi4xMi4xMDguMS90aGlyZF9wYXJ0eS93 YXlsYW5kL3NyYy9jdXJzb3Ivb3MtY29tcGF0aWJpbGl0eS5jCTIwMjItMTItMDggMjI6MTM6NTMu Mzc1NjUzMzQzICswMTAwCi1AQCAtMjksNyArMjksOCBAQAotIAotICNpbmNsdWRlIDxzeXMvdHlw ZXMuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0tI2luY2x1ZGUgPGZjbnRsLmg+Ci0rI2luY2x1 ZGUgPGxpbnV4L2ZjbnRsLmg+IC8vIGZvciBGX1NFQUxfU0hSSU5LLCBGX0FERF9TRUFMUywgRl9T RUFMX1NFQUwKLSsjaW5jbHVkZSA8bGludXgvbWVtZmQuaD4gLy8gZm9yIE1GRF9DTE9FWEVDCi0g I2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDxzdHJp bmcuaD4KLWRpZmYgLXVwIGNocm9taXVtLTExNi4wLjU4NDUuOTYvdWkvb3pvbmUvcGxhdGZvcm0v d2F5bGFuZC9ob3N0L3p3cF90ZXh0X2lucHV0X3dyYXBwZXJfdjEuY2MubWUgY2hyb21pdW0tMTE2 LjAuNTg0NS45Ni91aS9vem9uZS9wbGF0Zm9ybS93YXlsYW5kL2hvc3QvendwX3RleHRfaW5wdXRf d3JhcHBlcl92MS5jYwotLS0tIGNocm9taXVtLTExNi4wLjU4NDUuOTYvdWkvb3pvbmUvcGxhdGZv cm0vd2F5bGFuZC9ob3N0L3p3cF90ZXh0X2lucHV0X3dyYXBwZXJfdjEuY2MubWUJMjAyMy0wOC0x NyAwNjozMjozMi40ODQ1Mzg4NDkgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMTYuMC41ODQ1Ljk2L3Vp L296b25lL3BsYXRmb3JtL3dheWxhbmQvaG9zdC96d3BfdGV4dF9pbnB1dF93cmFwcGVyX3YxLmNj CTIwMjMtMDgtMTcgMDc6MDI6MDEuOTY1MTY4MzI4ICswMjAwCi1AQCAtNSw2ICs1LDcgQEAKLSAj aW5jbHVkZSAidWkvb3pvbmUvcGxhdGZvcm0vd2F5bGFuZC9ob3N0L3p3cF90ZXh0X2lucHV0X3dy YXBwZXJfdjEuaCIKLSAKLSAjaW5jbHVkZSA8c3lzL21tYW4uaD4KLSsjaW5jbHVkZSA8bGludXgv bWVtZmQuaD4KLSAKLSAjaW5jbHVkZSA8c3RyaW5nPgotICNpbmNsdWRlIDx1dGlsaXR5PgoKZGlm ZiAtLWdpdCBhL2Nocm9taXVtLTEyMC1zcGxpdC10aHJlc2hvbGQtZm9yLXJlZy13aXRoLWhpbnQu cGF0Y2ggYi9jaHJvbWl1bS0xMjAtc3BsaXQtdGhyZXNob2xkLWZvci1yZWctd2l0aC1oaW50LnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODBlZDcxLi4wMDAwMDAwCi0tLSBh L2Nocm9taXVtLTEyMC1zcGxpdC10aHJlc2hvbGQtZm9yLXJlZy13aXRoLWhpbnQucGF0Y2gKKysr IC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjAuMC42MDk5 LjM1L2J1aWxkL2NvbmZpZy9jb21waWxlci9CVUlMRC5nbi50aGFuIGNocm9taXVtLTEyMC4wLjYw OTkuMzUvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduCi0tLS0gY2hyb21pdW0tMTIwLjAu NjA5OS4zNS9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24udGhhbgkyMDIzLTExLTI2IDE3 OjAyOjI1LjY0NzAyMjc0NiArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuMzUvYnVpbGQv Y29uZmlnL2NvbXBpbGVyL0JVSUxELmduCTIwMjMtMTEtMjYgMTc6MTU6NTguMDI1NTg1MzU4ICsw MTAwCi1AQCAtNjE2LDI0ICs2MTYsNiBAQCBjb25maWcoImNvbXBpbGVyIikgewotICAgICAgIH0K LSAgICAgfQotIAotLSAgICAjIFRPRE8oY3JidWcuY29tLzE0ODgzNzQpOiBUaGlzIGNhdXNlcyBi aW5hcnkgc2l6ZSBncm93dGggYW5kIHBvdGVudGlhbGx5Ci0tICAgICMgb3RoZXIgcHJvYmxlbXMu Ci0tICAgICMgVE9ETyhjcmJ1Zy5jb20vMTQ5MTAzNik6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIGJ5 IENyb25ldCdzIG1haW5saW5lIGxsdm0gdmVyc2lvbi4KLS0gICAgaWYgKGRlZmF1bHRfdG9vbGNo YWluICE9ICIvL2J1aWxkL3Rvb2xjaGFpbi9jcm9zOnRhcmdldCIgJiYKLS0gICAgICAgICFsbHZt X2FuZHJvaWRfbWFpbmxpbmUpIHsKLS0gICAgICBjZmxhZ3MgKz0gWwotLSAgICAgICAgIi1tbGx2 bSIsCi0tICAgICAgICAiLXNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludD0wIiwKLS0g ICAgICBdCi0tICAgICAgaWYgKHVzZV90aGluX2x0byAmJiBpc19hX3RhcmdldF90b29sY2hhaW4p IHsKLS0gICAgICAgIGlmIChpc193aW4pIHsKLS0gICAgICAgICAgbGRmbGFncyArPSBbICItbWxs dm06LXNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludD0wIiBdCi0tICAgICAgICB9IGVs c2UgewotLSAgICAgICAgICBsZGZsYWdzICs9IFsgIi1XbCwtbWxsdm0sLXNwbGl0LXRocmVzaG9s ZC1mb3ItcmVnLXdpdGgtaGludD0wIiBdCi0tICAgICAgICB9Ci0tICAgICAgfQotLSAgICB9Ci0t Ci0gICAgICMgVE9ETyhjcmJ1Zy5jb20vMTIzNTE0NSk6IEludmVzdGlnYXRlIHdoeS9pZiB0aGlz IHNob3VsZCBiZSBuZWVkZWQuCi0gICAgIGlmIChpc193aW4pIHsKLSAgICAgICBjZmxhZ3MgKz0g WyAiL2NsYW5nOi1mZnAtY29udHJhY3Q9b2ZmIiBdCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTIy LWNsYW5nMTYtZGlzYWJsZS1hdXRvLXVwZ3JhZGUtZGVidWctaW5mby5wYXRjaCBiL2Nocm9taXVt LTEyMi1jbGFuZzE2LWRpc2FibGUtYXV0by11cGdyYWRlLWRlYnVnLWluZm8ucGF0Y2gKZGVsZXRl ZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4MzBjYWEuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0t MTIyLWNsYW5nMTYtZGlzYWJsZS1hdXRvLXVwZ3JhZGUtZGVidWctaW5mby5wYXRjaAorKysgL2Rl di9udWxsCkBAIC0xLDEyICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuMjkv YnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuMjkv YnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduCi0tLS0gY2hyb21pdW0tMTIyLjAuNjI2MS4y OS9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24ubWUJMjAyNC0wMi0xMiAxNDo0Njo1Mi42 OTE5OTIyODIgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjI5L2J1aWxkL2NvbmZpZy9j b21waWxlci9CVUlMRC5nbgkyMDI0LTAyLTEyIDE0OjQ4OjU0LjI1NjI3NDA2OCArMDEwMAotQEAg LTc4Nyw3ICs3ODcsNyBAQCBjb25maWcoImNvbXBpbGVyIikgewotIAotICAgICAgICMgV2Ugb25s eSB1c2Ugb25lIHZlcnNpb24gb2YgTExWTSB3aXRoaW4gYSBidWlsZCBzbyB0aGVyZSdzIG5vIG5l ZWQgdG8KLSAgICAgICAjIHVwZ3JhZGUgZGVidWcgaW5mbywgd2hpY2ggY2FuIGJlIGV4cGVuc2l2 ZSBzaW5jZSBpdCBydW5zIHRoZSB2ZXJpZmllci4KLS0gICAgICBsZGZsYWdzICs9IFsgIi1XbCwt bWxsdm0sLWRpc2FibGUtYXV0by11cGdyYWRlLWRlYnVnLWluZm8iIF0KLSsgICAgICBsZGZsYWdz ICs9IFsgIiIgXQotICAgICB9Ci0gCi0gICAgICMgVE9ETyhodHRwczovL2NyYnVnLmNvbS8xMjEx MTU1KTogaW52ZXN0aWdhdGUgd2h5IHRoaXMgaXNuJ3QgZWZmZWN0aXZlIG9uCgpkaWZmIC0tZ2l0 IGEvY2hyb21pdW0tMTI0LWNsYW5nMTYtYnVpbGRmbGFncy5wYXRjaCBiL2Nocm9taXVtLTEyNC1j bGFuZzE2LWJ1aWxkZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1 M2IyYTguLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTI0LWNsYW5nMTYtYnVpbGRmbGFncy5wYXRj aAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVtLTEyNC4w LjYzNjcuNDkvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduLm9yaWcgY2hyb21pdW0tMTI0 LjAuNjM2Ny40OS9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24KLS0tLSBjaHJvbWl1bS0x MjQuMC42MzY3LjQ5L2J1aWxkL2NvbmZpZy9jb21waWxlci9CVUlMRC5nbi5vcmlnCTIwMjQtMDQt MTQgMjI6NDM6MDIuOTA2NTc4OTQ4ICswMjAwCi0rKysgY2hyb21pdW0tMTI0LjAuNjM2Ny40OS9i dWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24JMjAyNC0wNC0xNCAyMjo0NjoxOS41MTMzNTM4 MDkgKzAyMDAKLUBAIC0xODkwLDkgKzE4OTAsNiBAQCBjb25maWcoImRlZmF1bHRfd2FybmluZ3Mi KSB7Ci0gCi0gICAgICAgICAjIFRPRE8oY3JidWcuY29tLzE0OTQ4MDkpOiBFdmFsdWF0ZSBhbmQg cG9zc2libHkgZW5hYmxlLgotICAgICAgICAgIi1Xbm8tdmxhLWV4dGVuc2lvbiIsCi0tCi0tICAg ICAgICAjIFRPRE8oaHR0cHM6Ly9jcmJ1Zy5jb20vMTQ5MDYwNyk6IEZpeCBhbmQgcmUtZW5hYmxl LgotLSAgICAgICAgIi1Xbm8tdGhyZWFkLXNhZmV0eS1yZWZlcmVuY2UtcmV0dXJuIiwKLSAgICAg ICBdCi0gCi0gICAgICAgY2ZsYWdzX2NjICs9IFsKLUBAIC0xOTAzLDcgKzE5MDAsNyBAQCBjb25m aWcoImRlZmF1bHRfd2FybmluZ3MiKSB7Ci0gICAgICAgaWYgKCFpc19uYWNsKSB7Ci0gICAgICAg ICBjZmxhZ3NfY2MgKz0gWwotICAgICAgICAgICAjIFRPRE8oaHR0cHM6Ly9jcmJ1Zy5jb20vMTUx MzcyNCk6IEZpeCBhbmQgcmUtZW5hYmxlLgotLSAgICAgICAgICAiLVduby1jKysxMS1uYXJyb3dp bmctY29uc3QtcmVmZXJlbmNlIiwKLSsgICAgICAgICAgIi1Xbm8tYysrMTEtbmFycm93aW5nIiwK LSAgICAgICAgIF0KLSAgICAgICB9Ci0gICAgIH0KCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjQt bGliYXZpZi1kZXBzLnBhdGNoIGIvY2hyb21pdW0tMTI0LWxpYmF2aWYtZGVwcy5wYXRjaApkZWxl dGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjI5ODIxNy4uMDAwMDAwMAotLS0gYS9jaHJvbWl1 bS0xMjQtbGliYXZpZi1kZXBzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAot ZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny40OS90aGlyZF9wYXJ0eS9saWJhdmlmL0JVSUxE LmduLm1lIGNocm9taXVtLTEyNC4wLjYzNjcuNDkvdGhpcmRfcGFydHkvbGliYXZpZi9CVUlMRC5n bgotLS0tIGNocm9taXVtLTEyNC4wLjYzNjcuNDkvdGhpcmRfcGFydHkvbGliYXZpZi9CVUlMRC5n bi5tZQkyMDI0LTA0LTE1IDIyOjI5OjI4LjAyNDI4NzMyOCArMDIwMAotKysrIGNocm9taXVtLTEy NC4wLjYzNjcuNDkvdGhpcmRfcGFydHkvbGliYXZpZi9CVUlMRC5nbgkyMDI0LTA0LTE1IDIyOjI5 OjMzLjIwNTQxMTA2NiArMDIwMAotQEAgLTg1LDcgKzg1LDYgQEAgY29tcG9uZW50KCJsaWJhdmlm X2VuYyIpIHsKLSAgIGNvbmZpZ3MgKz0gWyAiOmF2aWZfY29uZmlnIiBdCi0gCi0gICBkZXBzID0g WwotLSAgICAiLy90aGlyZF9wYXJ0eS9saWJ3ZWJwOmxpYndlYnBfc2hhcnB5dXYiLAotICAgICAi Ly90aGlyZF9wYXJ0eS9saWJ5dXYiLAotICAgXQotICAgZGVmaW5lcyA9IFsgIkFWSUZfTElCU0hB UlBZVVZfRU5BQkxFRCIgXQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1kZXZ0b29scy1idWls ZC1kZXBlbmRlbmN5LnBhdGNoIGIvY2hyb21pdW0tMTI1LWRldnRvb2xzLWJ1aWxkLWRlcGVuZGVu Y3kucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFmMTZhYzEuLjAwMDAwMDAK LS0tIGEvY2hyb21pdW0tMTI1LWRldnRvb2xzLWJ1aWxkLWRlcGVuZGVuY3kucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1jb21taXQgYTk3NmNiMDViNDAyNGI3YTY0NTJkMTU0 MTM3OGQ3MThjZGZlMzNlNgotQXV0aG9yOiBUYWt1dG8gSWt1dGEgPHRpa3V0YUBjaHJvbWl1bS5v cmc+Ci1EYXRlOiAgIFRodSBBcHIgMjUgMDc6MjU6MzIgMjAyNCArMDAwMAotCi0gICAgW2RldnRv b2xzXSBmaXggYSBtaXNzaW5nIGJ1aWxkIGRlcGVuZGVuY3kgdG8gYSBnZW5lcmF0ZWQgZmlsZQot ICAgIAotICAgIEJ1ZzogMzM2OTExNDk4Ci0gICAgQ2hhbmdlLUlkOiBJNmU2ZDNhZmFmMzNhY2U1 M2E2ODI3MWI3MDE2NWI4YzNhYjU5NjM0MAotICAgIFJldmlld2VkLW9uOiBodHRwczovL2Nocm9t aXVtLXJldmlldy5nb29nbGVzb3VyY2UuY29tL2MvY2hyb21pdW0vc3JjLysvNTQ4NzUzOAotICAg IEF1dG8tU3VibWl0OiBUYWt1dG8gSWt1dGEgPHRpa3V0YUBjaHJvbWl1bS5vcmc+Ci0gICAgQ29t bWl0LVF1ZXVlOiBUYWt1dG8gSWt1dGEgPHRpa3V0YUBjaHJvbWl1bS5vcmc+Ci0gICAgUmV2aWV3 ZWQtYnk6IERhbmlsIFNvbXNpa292IDxkc3ZAY2hyb21pdW0ub3JnPgotICAgIENvbW1pdC1RdWV1 ZTogRGFuaWwgU29tc2lrb3YgPGRzdkBjaHJvbWl1bS5vcmc+Ci0gICAgQ3ItQ29tbWl0LVBvc2l0 aW9uOiByZWZzL2hlYWRzL21haW5AeyMxMjkyMzAwfQotCi1kaWZmIC0tZ2l0IGEvY2hyb21lL2Jy b3dzZXIvZGV2dG9vbHMvQlVJTEQuZ24gYi9jaHJvbWUvYnJvd3Nlci9kZXZ0b29scy9CVUlMRC5n bgotaW5kZXggZjBjMDdjYWQ4Y2ZiNC4uMDUzMTk5ZTQ2MmY1NSAxMDA2NDQKLS0tLSBhL2Nocm9t ZS9icm93c2VyL2RldnRvb2xzL0JVSUxELmduCi0rKysgYi9jaHJvbWUvYnJvd3Nlci9kZXZ0b29s cy9CVUlMRC5nbgotQEAgLTExNyw2ICsxMTcsNyBAQCBzdGF0aWNfbGlicmFyeSgiZGV2dG9vbHMi KSB7Ci0gICAgICIvL2Nocm9tZS9icm93c2VyL2F1dG9maWxsOmF1dG9maWxsIiwKLSAgICAgIi8v Y29tcG9uZW50cy9hdXRvZmlsbC9jb250ZW50L2Jyb3dzZXI6YnJvd3NlciIsCi0gICAgICIvL2Nv bXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyOmJyb3dzZXIiLAotKyAgICAiLy9jb21wb25l bnRzL2VudGVycHJpc2UvYnVpbGRmbGFncyIsCi0gICAgICIvL2NvbXBvbmVudHMvcGFpbnRfcHJl dmlldy9idWlsZGZsYWdzOmJ1aWxkZmxhZ3MiLAotICAgICAiLy9jb21wb25lbnRzL3ZhcmlhdGlv bnMvc2VydmljZTpzZXJ2aWNlIiwKLSAgICAgIi8vY29tcG9uZW50cy93ZWJhcHBzL2NvbW1vbjpj b21tb24iLAoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1lbDctY29uc3RleHByLnBhdGNoIGIv Y2hyb21pdW0tMTI1LWVsNy1jb25zdGV4cHIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IDAxODNiYjMuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTI1LWVsNy1jb25zdGV4cHIu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNDIgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9jb21tZXJjZS9zaG9wcGluZ19p bnNpZ2h0c19zaWRlX3BhbmVsX3VpLmguY29uc3QgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJv bWUvYnJvd3Nlci91aS93ZWJ1aS9jb21tZXJjZS9zaG9wcGluZ19pbnNpZ2h0c19zaWRlX3BhbmVs X3VpLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVp L2NvbW1lcmNlL3Nob3BwaW5nX2luc2lnaHRzX3NpZGVfcGFuZWxfdWkuaC5jb25zdAkyMDI0LTA1 LTE4IDE4OjU3OjM3LjA5OTIwMzMxNCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv Y2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvY29tbWVyY2Uvc2hvcHBpbmdfaW5zaWdodHNfc2lkZV9w YW5lbF91aS5oCTIwMjQtMDUtMTggMjI6MTY6NTIuODc5NjAzMDUxICswMjAwCi1AQCAtNDIsNyAr NDIsNyBAQCBjbGFzcyBTaG9wcGluZ0luc2lnaHRzU2lkZVBhbmVsVUkKLSAgICAgICBtb2pvOjpQ ZW5kaW5nUmVjZWl2ZXI8Ci0gICAgICAgICAgIHNob3BwaW5nX3NlcnZpY2U6Om1vam9tOjpTaG9w cGluZ1NlcnZpY2VIYW5kbGVyRmFjdG9yeT4gcmVjZWl2ZXIpOwotIAotLSAgc3RhdGljIGNvbnN0 ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpz dHJpbmcgR2V0V2ViVUlOYW1lKCkgewotICAgICByZXR1cm4gIlNob3BwaW5nSW5zaWdodHNTaWRl UGFuZWwiOwotICAgfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUv YnJvd3Nlci91aS93ZWJ1aS9jb21wb3NlL2NvbXBvc2VfdW50cnVzdGVkX3VpLmguY29uc3QgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9jb21wb3NlL2NvbXBv c2VfdW50cnVzdGVkX3VpLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93 c2VyL3VpL3dlYnVpL2NvbXBvc2UvY29tcG9zZV91bnRydXN0ZWRfdWkuaC5jb25zdAkyMDI0LTA1 LTE4IDE5OjAzOjEzLjk5OTI1NTQ3MSArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv Y2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvY29tcG9zZS9jb21wb3NlX3VudHJ1c3RlZF91aS5oCTIw MjQtMDUtMTggMjI6MTY6NTIuODgzNjAzMTI0ICswMjAwCi1AQCAtNTgsNyArNTgsNyBAQCBjbGFz cyBDb21wb3NlVW50cnVzdGVkVUkKLSAgICAgdHJpZ2dlcmluZ193ZWJfY29udGVudHNfID0gd2Vi X2NvbnRlbnRzLT5HZXRXZWFrUHRyKCk7Ci0gICB9Ci0gCi0tICBzdGF0aWMgY29uc3RleHByIHN0 ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJDb21wb3NlIjsgfQotKyAgc3RhdGlj IGNvbnN0IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJDb21wb3NlIjsgfQot IAotICBwcml2YXRlOgotICAgdm9pZCBDcmVhdGVDb21wb3NlU2Vzc2lvblVudHJ1c3RlZFBhZ2VI YW5kbGVyKAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91 aS93ZWJ1aS9sZW5zL2xlbnNfdW50cnVzdGVkX3VpLmguY29uc3QgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9sZW5zL2xlbnNfdW50cnVzdGVkX3VpLmgKLS0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL2xlbnMvbGVu c191bnRydXN0ZWRfdWkuaC5jb25zdAkyMDI0LTA1LTE4IDE4OjU5OjE2Ljg1OTk5NTQzMiArMDIw MAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbGVu cy9sZW5zX3VudHJ1c3RlZF91aS5oCTIwMjQtMDUtMTggMjI6MTY6NTIuODgzNjAzMTI0ICswMjAw Ci1AQCAtNDcsNyArNDcsNyBAQCBjbGFzcyBMZW5zVW50cnVzdGVkVUkgOiBwdWJsaWMgVW50cnVz dGVkCi0gICAgICAgbW9qbzo6UGVuZGluZ1JlY2VpdmVyPGNvbG9yX2NoYW5nZV9saXN0ZW5lcjo6 bW9qb206OlBhZ2VIYW5kbGVyPgotICAgICAgICAgICByZWNlaXZlcik7Ci0gCi0tICBzdGF0aWMg Y29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJMZW5zVW50cnVz dGVkIjsgfQotKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0 dXJuICJMZW5zVW50cnVzdGVkIjsgfQotIAotICBwcml2YXRlOgotICAgLy8gbGVuczo6bW9qb206 OkxlbnNQYWdlSGFuZGxlckZhY3Rvcnk6Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL2xlbnMvc2VhcmNoX2J1YmJsZV91aS5oLmNvbnN0IGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbGVucy9zZWFyY2hf YnViYmxlX3VpLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL2xlbnMvc2VhcmNoX2J1YmJsZV91aS5oLmNvbnN0CTIwMjQtMDUtMTggMTg6NTk6NDku MDIwNTczMTc3ICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci91aS93ZWJ1aS9sZW5zL3NlYXJjaF9idWJibGVfdWkuaAkyMDI0LTA1LTE4IDIyOjE2OjUyLjg4 MzYwMzEyNCArMDIwMAotQEAgLTI2LDcgKzI2LDcgQEAgY2xhc3MgU2VhcmNoQnViYmxlVUkgOiBw dWJsaWMgVG9wQ2hyb21lVwotICAgICAgIG1vam86OlBlbmRpbmdSZWNlaXZlcjxsZW5zOjptb2pv bTo6U2VhcmNoQnViYmxlUGFnZUhhbmRsZXJGYWN0b3J5PgotICAgICAgICAgICByZWNlaXZlcik7 Ci0gCi0tICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0 dXJuICJMZW5zU2VhcmNoQnViYmxlIjsgfQotKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIEdl dFdlYlVJTmFtZSgpIHsgcmV0dXJuICJMZW5zU2VhcmNoQnViYmxlIjsgfQotIAotICBwcml2YXRl OgotICAgLy8gbGVuczo6bW9qb206OlNlYXJjaEJ1YmJsZVBhZ2VIYW5kbGVyRmFjdG9yeQotZGlm ZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRl X3BhbmVsL2Jvb2ttYXJrcy9ib29rbWFya3Nfc2lkZV9wYW5lbF91aS5oLmNvbnN0IGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9ib29rbWFy a3MvYm9va21hcmtzX3NpZGVfcGFuZWxfdWkuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv Y2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9ib29rbWFya3MvYm9va21hcmtzX3Np ZGVfcGFuZWxfdWkuaC5jb25zdAkyMDI0LTA1LTE4IDE5OjAwOjA4LjY4NjkyNjQ3MSArMDIwMAot KysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9w YW5lbC9ib29rbWFya3MvYm9va21hcmtzX3NpZGVfcGFuZWxfdWkuaAkyMDI0LTA1LTE4IDIyOjE2 OjUyLjg4MzYwMzEyNCArMDIwMAotQEAgLTYzLDcgKzYzLDcgQEAgY2xhc3MgQm9va21hcmtzU2lk ZVBhbmVsVUkKLSAgIGNvbW1lcmNlOjpTaG9wcGluZ0xpc3RDb250ZXh0TWVudUNvbnRyb2xsZXIq Ci0gICBHZXRTaG9wcGluZ0xpc3RDb250ZXh0TWVudUNvbnRyb2xsZXIoKTsKLSAKLS0gIHN0YXRp YyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIkJvb2ttYXJr c1NpZGVQYW5lbCI7IH0KLSsgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUo KSB7IHJldHVybiAiQm9va21hcmtzU2lkZVBhbmVsIjsgfQotIAotICBwcml2YXRlOgotICAgLy8g c2lkZV9wYW5lbDo6bW9qb206OkJvb2ttYXJrc1BhZ2VIYW5kbGVyRmFjdG9yeToKLWRpZmYgLXVw IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5l bC9jb21wYW5pb24vY29tcGFuaW9uX3NpZGVfcGFuZWxfdW50cnVzdGVkX3VpLmguY29uc3QgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2Nv bXBhbmlvbi9jb21wYW5pb25fc2lkZV9wYW5lbF91bnRydXN0ZWRfdWkuaAotLS0tIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9jb21wYW5p b24vY29tcGFuaW9uX3NpZGVfcGFuZWxfdW50cnVzdGVkX3VpLmguY29uc3QJMjAyNC0wNS0xOCAx OTowMDozNi4zNTE0MjM0NDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9t ZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvY29tcGFuaW9uL2NvbXBhbmlvbl9zaWRlX3Bh bmVsX3VudHJ1c3RlZF91aS5oCTIwMjQtMDUtMTggMjI6MTY6NTIuODg0NjAzMTQzICswMjAwCi1A QCAtMzQsNyArMzQsNyBAQCBjbGFzcyBDb21wYW5pb25TaWRlUGFuZWxVbnRydXN0ZWRVSQotICAg Ly8gR2V0cyBhIHdlYWsgcG9pbnRlciB0byB0aGlzIG9iamVjdC4KLSAgIGJhc2U6OldlYWtQdHI8 Q29tcGFuaW9uU2lkZVBhbmVsVW50cnVzdGVkVUk+IEdldFdlYWtQdHIoKTsKLSAKLS0gIHN0YXRp YyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgewotKyAgc3RhdGljIGNvbnN0 IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsKLSAgICAgcmV0dXJuICJDb21wYW5pb25TaWRl UGFuZWxVbnRydXN0ZWQiOwotICAgfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2N1c3RvbWl6ZV9jaHJvbWUvY3Vz dG9taXplX2Nocm9tZV91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jy b3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9jdXN0b21pemVfY2hyb21lL2N1c3RvbWl6ZV9jaHJv bWVfdWkuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi dWkvc2lkZV9wYW5lbC9jdXN0b21pemVfY2hyb21lL2N1c3RvbWl6ZV9jaHJvbWVfdWkuaC5jb25z dAkyMDI0LTA1LTE4IDE5OjAwOjU2LjA4ODc3ODAxMiArMDIwMAotKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9jdXN0b21pemVfY2hy b21lL2N1c3RvbWl6ZV9jaHJvbWVfdWkuaAkyMDI0LTA1LTE4IDIyOjE2OjUyLjg4NDYwMzE0MyAr MDIwMAotQEAgLTEwMiw3ICsxMDIsNyBAQCBjbGFzcyBDdXN0b21pemVDaHJvbWVVSQotICAgICAg ICAgICBzaWRlX3BhbmVsOjpjdXN0b21pemVfY2hyb21lOjptb2pvbTo6V2FsbHBhcGVyU2VhcmNo SGFuZGxlckZhY3Rvcnk+Ci0gICAgICAgICAgIHBlbmRpbmdfcmVjZWl2ZXIpOwotIAotLSAgc3Rh dGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiQ3VzdG9t aXplQ2hyb21lIjsgfQotKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgp IHsgcmV0dXJuICJDdXN0b21pemVDaHJvbWUiOyB9Ci0gCi0gIHByaXZhdGU6Ci0gICAvLyBzaWRl X3BhbmVsOjptb2pvbTo6Q3VzdG9taXplQ2hyb21lUGFnZUhhbmRsZXJGYWN0b3J5Ci1kaWZmIC11 cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFu ZWwvaGlzdG9yeV9jbHVzdGVycy9oaXN0b3J5X2NsdXN0ZXJzX3NpZGVfcGFuZWxfdWkuaC5jb25z dCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFu ZWwvaGlzdG9yeV9jbHVzdGVycy9oaXN0b3J5X2NsdXN0ZXJzX3NpZGVfcGFuZWxfdWkuaAotLS0t IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5l bC9oaXN0b3J5X2NsdXN0ZXJzL2hpc3RvcnlfY2x1c3RlcnNfc2lkZV9wYW5lbF91aS5oLmNvbnN0 CTIwMjQtMDUtMTggMTk6MDE6MTUuOTg2MTM1NDQ2ICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2hpc3RvcnlfY2x1c3Rl cnMvaGlzdG9yeV9jbHVzdGVyc19zaWRlX3BhbmVsX3VpLmgJMjAyNC0wNS0xOCAyMjoxNjo1Mi44 ODQ2MDMxNDMgKzAyMDAKLUBAIC03MCw3ICs3MCw3IEBAIGNsYXNzIEhpc3RvcnlDbHVzdGVyc1Np ZGVQYW5lbFVJIDogcHVibGkKLSAgIHZvaWQgRGlkRmluaXNoTmF2aWdhdGlvbigKLSAgICAgICBj b250ZW50OjpOYXZpZ2F0aW9uSGFuZGxlKiBuYXZpZ2F0aW9uX2hhbmRsZSkgb3ZlcnJpZGU7Ci0g Ci0tICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsKLSsgIHN0 YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7Ci0gICAgIHJldHVybiAiSGlz dG9yeUNsdXN0ZXJzU2lkZVBhbmVsIjsKLSAgIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9wZXJmb3JtYW5jZV9j b250cm9scy9wZXJmb3JtYW5jZV9zaWRlX3BhbmVsX3VpLmguY29uc3QgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3BlcmZvcm1hbmNlX2Nv bnRyb2xzL3BlcmZvcm1hbmNlX3NpZGVfcGFuZWxfdWkuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9wZXJmb3JtYW5jZV9jb250 cm9scy9wZXJmb3JtYW5jZV9zaWRlX3BhbmVsX3VpLmguY29uc3QJMjAyNC0wNS0xOCAxOTowMToz NC4yNzQ0NjM5ODIgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93 c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcGVyZm9ybWFuY2VfY29udHJvbHMvcGVyZm9ybWFuY2Vf c2lkZV9wYW5lbF91aS5oCTIwMjQtMDUtMTggMjI6MTY6NTIuODg0NjAzMTQzICswMjAwCi1AQCAt NDEsNyArNDEsNyBAQCBjbGFzcyBQZXJmb3JtYW5jZVNpZGVQYW5lbFVJCi0gICAgICAgbW9qbzo6 UGVuZGluZ1JlY2VpdmVyPGNvbG9yX2NoYW5nZV9saXN0ZW5lcjo6bW9qb206OlBhZ2VIYW5kbGVy PgotICAgICAgICAgICBwZW5kaW5nX3JlY2VpdmVyKTsKLSAKLS0gIHN0YXRpYyBjb25zdGV4cHIg c3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIlBlcmZvcm1hbmNlU2lkZVBhbmVs IjsgfQotKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJu ICJQZXJmb3JtYW5jZVNpZGVQYW5lbCI7IH0KLSAKLSAgcHJpdmF0ZToKLSAgIC8vIHNpZGVfcGFu ZWw6Om1vam9tOjpQZXJmb3JtYW5jZVBhZ2VIYW5kbGVyRmFjdG9yeToKLWRpZmYgLXVwIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9yZWFk X2FueXRoaW5nL3JlYWRfYW55dGhpbmdfdW50cnVzdGVkX3VpLmguY29uc3QgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3JlYWRfYW55dGhp bmcvcmVhZF9hbnl0aGluZ191bnRydXN0ZWRfdWkuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9yZWFkX2FueXRoaW5nL3JlYWRf YW55dGhpbmdfdW50cnVzdGVkX3VpLmguY29uc3QJMjAyNC0wNS0xOCAxOTowMTo1Mi44NDI3OTc1 NTYgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL3NpZGVfcGFuZWwvcmVhZF9hbnl0aGluZy9yZWFkX2FueXRoaW5nX3VudHJ1c3RlZF91aS5o CTIwMjQtMDUtMTggMjI6MTY6NTIuODg0NjAzMTQzICswMjAwCi1AQCAtNTUsNyArNTUsNyBAQCBj bGFzcyBSZWFkQW55dGhpbmdVbnRydXN0ZWRVSQotICAgICAgIG1vam86OlBlbmRpbmdSZWNlaXZl cjxyZWFkX2FueXRoaW5nOjptb2pvbTo6VW50cnVzdGVkUGFnZUhhbmRsZXJGYWN0b3J5PgotICAg ICAgICAgICByZWNlaXZlcik7Ci0gCi0tICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdl dFdlYlVJTmFtZSgpIHsKLSsgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUo KSB7Ci0gICAgIHJldHVybiAiUmVhZEFueXRoaW5nVW50cnVzdGVkIjsKLSAgIH0KLSAKLWRpZmYg LXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9w YW5lbC9yZWFkaW5nX2xpc3QvcmVhZGluZ19saXN0X3VpLmguY29uc3QgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3JlYWRpbmdfbGlzdC9y ZWFkaW5nX2xpc3RfdWkuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dz ZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9yZWFkaW5nX2xpc3QvcmVhZGluZ19saXN0X3VpLmguY29u c3QJMjAyNC0wNS0xOCAxOTowMjoxNy4zODEyMzgzNzUgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZGluZ19saXN0 L3JlYWRpbmdfbGlzdF91aS5oCTIwMjQtMDUtMTggMjI6MTY6NTIuODg1NjAzMTYyICswMjAwCi1A QCAtNDcsNyArNDcsNyBAQCBjbGFzcyBSZWFkaW5nTGlzdFVJIDogcHVibGljIFRvcENocm9tZVdl Ci0gCi0gICB2b2lkIFNldEFjdGl2ZVRhYlVSTChjb25zdCBHVVJMJiB1cmwpOwotIAotLSAgc3Rh dGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiUmVhZGlu Z0xpc3QiOyB9Ci0rICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyBy ZXR1cm4gIlJlYWRpbmdMaXN0IjsgfQotIAotICBwcml2YXRlOgotICAgLy8gcmVhZGluZ19saXN0 Ojptb2pvbTo6UGFnZUhhbmRsZXJGYWN0b3J5OgotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3VzZXJfbm90ZXMvdXNlcl9u b3Rlc19zaWRlX3BhbmVsX3VpLmguY29uc3QgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUv YnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3VzZXJfbm90ZXMvdXNlcl9ub3Rlc19zaWRlX3Bh bmVsX3VpLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL3NpZGVfcGFuZWwvdXNlcl9ub3Rlcy91c2VyX25vdGVzX3NpZGVfcGFuZWxfdWkuaC5jb25z dAkyMDI0LTA1LTE4IDE5OjAyOjM0LjQxMzU0NDM0MSArMDIwMAotKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC91c2VyX25vdGVzL3Vz ZXJfbm90ZXNfc2lkZV9wYW5lbF91aS5oCTIwMjQtMDUtMTggMjI6MTY6NTIuODg1NjAzMTYyICsw MjAwCi1AQCAtMzUsNyArMzUsNyBAQCBjbGFzcyBVc2VyTm90ZXNTaWRlUGFuZWxVSQotIAotICAg dm9pZCBzZXRfYnJvd3NlcihCcm93c2VyKiBicm93c2VyKSB7IGJyb3dzZXJfID0gYnJvd3Nlcjsg fQotIAotLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJl dHVybiAiVXNlck5vdGVzU2lkZVBhbmVsIjsgfQotKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5n IEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJVc2VyTm90ZXNTaWRlUGFuZWwiOyB9Ci0gCi0gIHBy aXZhdGU6Ci0gICAvLyB1c2VyX25vdGVzOjptb2pvbTo6VXNlck5vdGVzUGFnZUhhbmRsZXJGYWN0 b3J5Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL3RhYl9zZWFyY2gvdGFiX3NlYXJjaF91aS5oLmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvdGFiX3NlYXJjaC90YWJfc2VhcmNoX3VpLmgKLS0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3RhYl9zZWFy Y2gvdGFiX3NlYXJjaF91aS5oLmNvbnN0CTIwMjQtMDUtMTggMTk6MDI6NTIuMjYxODY0OTY1ICsw MjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS90 YWJfc2VhcmNoL3RhYl9zZWFyY2hfdWkuaAkyMDI0LTA1LTE4IDIyOjE2OjUyLjg4NTYwMzE2MiAr MDIwMAotQEAgLTQ2LDcgKzQ2LDcgQEAgY2xhc3MgVGFiU2VhcmNoVUkgOiBwdWJsaWMgVG9wQ2hy b21lV2ViVQotICAgICByZXR1cm4gcGFnZV9oYW5kbGVyXy5nZXQoKTsKLSAgIH0KLSAKLS0gIHN0 YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyByZXR1cm4gIlRhYlNl YXJjaCI7IH0KLSsgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJl dHVybiAiVGFiU2VhcmNoIjsgfQotIAotICBwcml2YXRlOgotICAgLy8gdGFiX3NlYXJjaDo6bW9q b206OlBhZ2VIYW5kbGVyRmFjdG9yeQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j b21wb25lbnRzL29tbmlib3gvYnJvd3Nlci9vbl9kZXZpY2VfdGFpbF9tb2RlbF9zZXJ2aWNlLmNj LmNvbnN0IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vbW5pYm94L2Jyb3dzZXIv b25fZGV2aWNlX3RhaWxfbW9kZWxfc2VydmljZS5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9vbW5pYm94L2Jyb3dzZXIvb25fZGV2aWNlX3RhaWxfbW9kZWxfc2Vydmlj ZS5jYy5jb25zdAkyMDI0LTA1LTE4IDIzOjA2OjIyLjA3MTU4NjkwOSArMDIwMAotKysrIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9vbW5pYm94L2Jyb3dzZXIvb25fZGV2aWNlX3Rh aWxfbW9kZWxfc2VydmljZS5jYwkyMDI0LTA1LTE4IDIzOjA2OjQ0LjgyNzEzMzQ2MSArMDIwMAot QEAgLTMwLDcgKzMwLDcgQEAgbmFtZXNwYWNlIHsKLSAvLyBUaGUgbWF4aW11bSBpZGxlIHRpbWUg YmVmb3JlIHRoZSBtb2RlbCBleGVjdXRvciBpcyB1bmxvYWRlZCBmcm9tIG1lbW9yeS4KLSBjb25z dGV4cHIgYmFzZTo6VGltZURlbHRhIGtNYXhFeGVjdXRvcklkbGVTZWNvbmRzID0gYmFzZTo6U2Vj b25kcyg2MCk7Ci0gLy8gQ29uc3RhbnRzIGZvciBURmxpdGUgbW9kZWwgdmFsaWRhdGlvbi4KLS1j b25zdGV4cHIgc3RkOjpzdHJpbmcga1Rlc3RQcmVmaXggPSAiZmFjZSI7Ci0rY29uc3Qgc3RkOjpz dHJpbmcga1Rlc3RQcmVmaXggPSAiZmFjZSI7Ci0gY29uc3RleHByIHN0ZDo6c3RyaW5nX3ZpZXcg a01vZGVsVmFsaWRhdGlvblN3aXRjaE5hbWUgPQotICAgICAib21uaWJveC1vbi1kZXZpY2UtdGFp bC1tb2RlbC12YWxpZGF0aW9uIjsKLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4 L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2RhdGFfbW9kZWwvYXV0b2ZpbGxfaTE4 bl9hcGkuaC5tZSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2Nv cmUvYnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmgKLS0tLSBjaHJvbWl1bS0x MjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9kYXRhX21vZGVs L2F1dG9maWxsX2kxOG5fYXBpLmgubWUJMjAyNC0wNS0wNyAwNzo1ODoxMC4yMDI5NjAyOTggKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmgJMjAyNC0wNS0wNyAwNzo1OToy OS40MTM0MTE3NjcgKzAyMDAKLUBAIC0xNiw4ICsxNiw4IEBAIG5hbWVzcGFjZSBhdXRvZmlsbDo6 aTE4bl9tb2RlbF9kZWZpbml0aW8KLSAvLyBDb3VudHJ5IGNvZGUgdGhhdCByZXByZXNlbnRzIGF1 dG9maWxsJ3MgbGVnYWN5IGFkZHJlc3MgaGllcmFyY2h5IG1vZGVsIGFzCi0gLy8gc3RvcmVkIGBr QXV0b2ZpbGxNb2RlbFJ1bGVzYC4gQXMgYSB3b3JrYXJvdW5kIGZvciBHQ0Mgd2UgZGVjbGFyZSB0 aGUKLSAvLyBzdGQ6OnN0cmluZyBjb25zdGV4cHIgZmlyc3QuCi0tY29uc3RleHByIGlubGluZSBz dGQ6OnN0cmluZyBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGVTdHJpbmd7IlhYIn07Ci0tY29u c3RleHByIEFkZHJlc3NDb3VudHJ5Q29kZSBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGUgPQot K2NvbnN0IGlubGluZSBzdGQ6OnN0cmluZyBrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGVTdHJp bmd7IlhYIn07Ci0rY29uc3QgQWRkcmVzc0NvdW50cnlDb2RlIGtMZWdhY3lIaWVyYXJjaHlDb3Vu dHJ5Q29kZSA9Ci0gICAgIEFkZHJlc3NDb3VudHJ5Q29kZShrTGVnYWN5SGllcmFyY2h5Q291bnRy eUNvZGVTdHJpbmcpOwotIAotIC8vIENyZWF0ZXMgYW4gaW5zdGFuY2Ugb2YgdGhlIGFkZHJlc3Mg aGllcmFyY2h5IG1vZGVsIGNvcnJlc3BvbmRpbmcgdG8gdGhlCi1kaWZmIC11cCBjaHJvbWl1bS0x MjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xv Z19ldmVudC5oLm1lIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXV0b2ZpbGwv Y29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2ZW50LmgKLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3 LjExOC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9tZXRyaWNzL2xvZ19ldmVudC5o Lm1lCTIwMjQtMDUtMDcgMDc6NTk6MzguMjM5NTczNDk3ICswMjAwCi0rKysgY2hyb21pdW0tMTI0 LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmljcy9sb2df ZXZlbnQuaAkyMDI0LTA1LTA3IDA4OjAwOjU1LjU3ODk5MDY1OSArMDIwMAotQEAgLTU3LDcgKzU3 LDcgQEAgc3RydWN0IElzUmVxdWlyZWQgewotICAgLy8gVGhpcyBmdW5jdGlvbiBpcyBub3QgZGVm aW5lZCBhbmQgY29uc3RldmFsLiBUaGVyZWZvcmUsIGFueSBldmFsdWF0aW9uIHdpbGwKLSAgIC8v IGZhaWwgYW5kIGZhaWwgYXQgY29tcGlsZSB0aW1lLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ Ci0tICBjb25zdGV2YWwgb3BlcmF0b3IgVCgpOyAgLy8gTk9MSU5UCi0rICBvcGVyYXRvciBUKCk7 ICAvLyBOT0xJTlQKLSB9OwotIAotIH0gIC8vIG5hbWVzcGFjZSBpbnRlcm5hbAotZGlmZiAtdXAg Y2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9oaXN0b3J5L2NvcmUvYnJvd3Nlci9o aXN0b3J5X3R5cGVzLmgubWUgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvY29tcG9uZW50cy9oaXN0 b3J5L2NvcmUvYnJvd3Nlci9oaXN0b3J5X3R5cGVzLmgKLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3 LjExOC9jb21wb25lbnRzL2hpc3RvcnkvY29yZS9icm93c2VyL2hpc3RvcnlfdHlwZXMuaC5tZQky MDI0LTA1LTA2IDE4OjAxOjI4LjYwNjg0NTU1NCArMDIwMAotKysrIGNocm9taXVtLTEyNC4wLjYz NjcuMTE4L2NvbXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90eXBlcy5oCTIw MjQtMDUtMDYgMTg6MDY6MTUuNDkyNzUxMjUyICswMjAwCi1AQCAtNzAsNyArNzAsNyBAQCBjb25z dGV4cHIgVmlzaXRlZExpbmtJRCBrSW52YWxpZFZpc2l0ZWRMCi0gdHlwZWRlZiBzdGQ6Om1hcDxW aXNpdElELCBWaXNpdFNvdXJjZT4gVmlzaXRTb3VyY2VNYXA7Ci0gCi0gLy8gQ29uc3RhbnQgdXNl ZCB0byByZXByZXNlbnQgdGhhdCBubyBhcHBfaWQgaXMgdXNlZCBmb3IgbWF0Y2hpbmcuCi0taW5s aW5lIGNvbnN0ZXhwciBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBrTm9BcHBJZEZpbHRlciA9 IHN0ZDo6bnVsbG9wdDsKLStpbmxpbmUgY29uc3Qgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4g a05vQXBwSWRGaWx0ZXIgPSBzdGQ6Om51bGxvcHQ7Ci0gCi0gLy8gVmlzaXRSb3cgLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvc2VydmljZXMvbmV0d29yay9z aGFyZWRfZGljdGlvbmFyeS9zaW1wbGVfdXJsX3BhdHRlcm5fbWF0Y2hlci5jYy5tZSBjaHJvbWl1 bS0xMjQuMC42MzY3LjExOC9zZXJ2aWNlcy9uZXR3b3JrL3NoYXJlZF9kaWN0aW9uYXJ5L3NpbXBs ZV91cmxfcGF0dGVybl9tYXRjaGVyLmNjCi0tLS0gY2hyb21pdW0tMTI0LjAuNjM2Ny4xMTgvc2Vy dmljZXMvbmV0d29yay9zaGFyZWRfZGljdGlvbmFyeS9zaW1wbGVfdXJsX3BhdHRlcm5fbWF0Y2hl ci5jYy5tZQkyMDI0LTA1LTA3IDAwOjA3OjE1LjcyMDU3Mzc5NCArMDIwMAotKysrIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVkX2RpY3Rpb25hcnkvc2ltcGxl X3VybF9wYXR0ZXJuX21hdGNoZXIuY2MJMjAyNC0wNS0wNyAwMDowODowNy42MzM1MTk2MDQgKzAy MDAKLUBAIC0yOCwxNyArMjgsMTcgQEAgbmFtZXNwYWNlIG5ldHdvcmsgewotIG5hbWVzcGFjZSB7 Ci0gCi0gLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdnLm9yZy8jZGVmYXVsdC1vcHRp b25zCi0tY29uc3RleHByIGxpYnVybHBhdHRlcm46Ok9wdGlvbnMga0RlZmF1bHRPcHRpb25zID0g ey5kZWxpbWl0ZXJfbGlzdCA9ICIiLAotK2NvbnN0IGxpYnVybHBhdHRlcm46Ok9wdGlvbnMga0Rl ZmF1bHRPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIiLAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZml4X2xpc3QgPSAiIiwKLSAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlbnNp dGl2ZSA9IHRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIC5zdHJpY3QgPSB0cnVlfTsKLSAvLyBodHRwczovL3VybHBhdHRlcm4uc3BlYy53 aGF0d2cub3JnLyNob3N0bmFtZS1vcHRpb25zCi0tY29uc3RleHByIGxpYnVybHBhdHRlcm46Ok9w dGlvbnMga0hvc3RuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiLiIsCi0rY29uc3Qg bGlidXJscGF0dGVybjo6T3B0aW9ucyBrSG9zdG5hbWVPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlz dCA9ICIuIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIC5wcmVmaXhfbGlzdCA9ICIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgLnNlbnNpdGl2ZSA9IHRydWUsCi0gICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAuc3RyaWN0ID0gdHJ1ZX07 Ci0gLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdnLm9yZy8jcGF0aG5hbWUtb3B0aW9u cwotLWNvbnN0ZXhwciBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtQYXRobmFtZU9wdGlvbnMgPSB7 LmRlbGltaXRlcl9saXN0ID0gIi8iLAotK2NvbnN0IGxpYnVybHBhdHRlcm46Ok9wdGlvbnMga1Bh dGhuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiLyIsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJlZml4X2xpc3QgPSAiLyIs Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu c2Vuc2l0aXZlID0gdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIC5zdHJpY3QgPSB0cnVlfTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNC4w LjYzNjcuMTE4L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zvcm1fcGFyc2luZy90 cmFuc3BpbGVfcmVnZXhfcGF0dGVybnMucHkubWUxIGNocm9taXVtLTEyNC4wLjYzNjcuMTE4L2Nv bXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zvcm1fcGFyc2luZy90cmFuc3BpbGVfcmVn ZXhfcGF0dGVybnMucHkKLS0tLSBjaHJvbWl1bS0xMjQuMC42MzY3LjExOC9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvYnJvd3Nlci9mb3JtX3BhcnNpbmcvdHJhbnNwaWxlX3JlZ2V4X3BhdHRlcm5z LnB5Lm1lMQkyMDI0LTA1LTA3IDEwOjU4OjEzLjMxNjc1NjkyNiArMDIwMAotKysrIGNocm9taXVt LTEyNC4wLjYzNjcuMTE4L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zvcm1fcGFy c2luZy90cmFuc3BpbGVfcmVnZXhfcGF0dGVybnMucHkJMjAyNC0wNS0wNyAxMDo1ODozMC44MjEw ODMwNjEgKzAyMDAKLUBAIC01NCw3ICs1NCw3IEBAIGRlZiBnZW5lcmF0ZV9tYXRjaGluZ19wYXR0 ZXJuX2VxdWFscyhuYW0KLSAgIHlpZWxkICcvLyBDaGVja3MgaWYgYWxsIHRoZSBtYXRjaGluZyBw YXR0ZXJucyBmb3IgdGhlIGdpdmVuIFBhdHRlcm5Tb3VyY2VzJwotICAgeWllbGQgJy8vIGFuZCBs YW5ndWFnZSBhcmUgdGhlIHNhbWUgLSBtZWFuaW5nIHRoYXQgY29tcHV0aW5nIHByZWRpY3Rpb25z IGZvcicKLSAgIHlpZWxkICcvLyBib3RoIGlzIHVubmVjZXNzYXJ5LCBzaW5jZSBpdCB3aWxsIHlp ZWxkIHRoZSBzYW1lIHJlc3VsdC4nCi0tICB5aWVsZCAnY29uc3RleHByIGJvb2wgQXJlTWF0Y2hp bmdQYXR0ZXJuc0VxdWFsSW1wbChQYXR0ZXJuU291cmNlIGEsJwotKyAgeWllbGQgJ2NvbnN0IGJv b2wgQXJlTWF0Y2hpbmdQYXR0ZXJuc0VxdWFsSW1wbChQYXR0ZXJuU291cmNlIGEsJwotICAgeWll bGQgJyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUGF0dGVyblNv dXJjZSBiLCcKLSAgIHlpZWxkICcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIExhbmd1YWdlQ29kZSBsYW5nX2NvZGUpIHsnCi0gICB5aWVsZCAnICBpZiAoYSA9PSBi KSB7JwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1lbDctbm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IucGF0Y2ggYi9jaHJvbWl1bS0xMjUtZWw3LW5vX21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNmFjY2E0Li4wMDAwMDAwCi0tLSBhL2No cm9taXVtLTEyNS1lbDctbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwxNzU0ICswLDAgQEAKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFz ZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2xpZ2h0 d2VpZ2h0X3F1YXJhbnRpbmUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRp b25fYWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2Fs bG9jL2xpZ2h0d2VpZ2h0X3F1YXJhbnRpbmUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy NC0wNS0xNSAyMzo0NTo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxv Yy9saWdodHdlaWdodF9xdWFyYW50aW5lLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzA3NjUwMzg1 ICswMjAwCi1AQCAtNzMsNyArNzMsNyBAQCBib29sIExpZ2h0d2VpZ2h0UXVhcmFudGluZUJyYW5j aDo6UXVhcmFuCi0gICAgIC8vIHN5bmNocm9uaXphdGlvbiBiZXR3ZWVuIHRoZSByb290IGFuZCBi cmFuY2gsIHNvIGBicmFuY2hfc2l6ZV9pbl9ieXRlc19gCi0gICAgIC8vIG1heSBiZSBsYXJnZXIg dGhhbiBgcm9vdF8uY2FwYWNpdHlfaW5fYnl0ZXNfYCBhdCB0aGlzIHBvaW50LgotIAotLSAgICBz bG90c18uZW1wbGFjZV9iYWNrKHNsb3Rfc3RhcnQsIHVzYWJsZV9zaXplKTsKLSsgICAgc2xvdHNf LmVtcGxhY2VfYmFjaygpID0ge3Nsb3Rfc3RhcnQsIHVzYWJsZV9zaXplfTsKLSAKLSAgICAgLy8g U3dhcCByYW5kb21seSBzbyB0aGF0IHRoZSBxdWFyYW50aW5lIGxpc3QgcmVtYWluIHNodWZmbGVk LgotICAgICAvLyBUaGlzIGlzIG5vdCB1bmlmb3JtbHkgcmFuZG9tLCBidXQgc3VmZmljaWVudGx5 IHJhbmRvbS4KLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvYmFzZS9tZXRyaWNzL3Bl cnNpc3RlbnRfaGlzdG9ncmFtX2FsbG9jYXRvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9h bGxvY2F0b3IuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvbWV0cmljcy9wZXJz aXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy NC0wNS0xNSAyMzo0NTo1MC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MJMjAyNC0w NS0xNyAxMjozMzo1OC43MDg2NTA0MDYgKzAyMDAKLUBAIC0yMjAsMTMgKzIyMCwxMyBAQCBQZXJz aXN0ZW50U3BhcnNlSGlzdG9ncmFtRGF0YU1hbmFnZXI6OkxvCi0gICAgIC8vIFRoZSBzYW1wbGUt cmVjb3JkIGNvdWxkIGJlIGZvciBhbnkgc3BhcnNlIGhpc3RvZ3JhbS4gQWRkIHRoZSByZWZlcmVu Y2UKLSAgICAgLy8gdG8gdGhlIGFwcHJvcHJpYXRlIGNvbGxlY3Rpb24gZm9yIGxhdGVyIHVzZS4K LSAgICAgaWYgKGZvdW5kX2lkID09IG1hdGNoX2lkKSB7Ci0tICAgICAgZm91bmRfcmVjb3Jkcy5l bXBsYWNlX2JhY2socmVmLCB2YWx1ZSk7Ci0rICAgICAgZm91bmRfcmVjb3Jkcy5lbXBsYWNlX2Jh Y2soKSA9IHtyZWYsIHZhbHVlfTsKLSAgICAgICBmb3VuZCA9IHRydWU7Ci0gICAgIH0gZWxzZSB7 Ci0gICAgICAgc3RkOjp2ZWN0b3I8UmVmZXJlbmNlQW5kU2FtcGxlPiogc2FtcGxlcyA9Ci0gICAg ICAgICAgIEdldFNhbXBsZU1hcFJlY29yZHNXaGlsZUxvY2tlZChmb3VuZF9pZCk7Ci0gICAgICAg Q0hFQ0soc2FtcGxlcyk7Ci0tICAgICAgc2FtcGxlcy0+ZW1wbGFjZV9iYWNrKHJlZiwgdmFsdWUp OwotKyAgICAgIHNhbXBsZXMtPmVtcGxhY2VfYmFjaygpID0ge3JlZiwgdmFsdWV9OwotICAgICB9 Ci0gICB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2Uvbml4L21pbWVf dXRpbF94ZGcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9iYXNlL25peC9taW1lX3V0aWxfeGRnLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9i YXNlL25peC9taW1lX3V0aWxfeGRnLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUt MTUgMjM6NDU6NTAuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9i YXNlL25peC9taW1lX3V0aWxfeGRnLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzA4NjUwNDA2ICsw MjAwCi1AQCAtNTYsNyArNTYsNyBAQCB2b2lkIExvYWRBbGxNaW1lQ2FjaGVGaWxlcyhNaW1lVHlw ZU1hcCYKLSAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IEdldFhER0RhdGFTZWFyY2hMb2NhdGlv bnMoZW52LmdldCgpKSkgewotICAgICBGaWxlUGF0aCBtaW1lX2NhY2hlID0gcGF0aC5BcHBlbmQo Im1pbWUvbWltZS5jYWNoZSIpOwotICAgICBpZiAoR2V0RmlsZUluZm8obWltZV9jYWNoZSwgJmlu Zm8pICYmIFBhcnNlTWltZVR5cGVzKG1pbWVfY2FjaGUsIG1hcCkpIHsKLS0gICAgICBmaWxlcy5l bXBsYWNlX2JhY2sobWltZV9jYWNoZSwgaW5mby5sYXN0X21vZGlmaWVkKTsKLSsgICAgICBmaWxl cy5lbXBsYWNlX2JhY2soKSA9IHttaW1lX2NhY2hlLCBpbmZvLmxhc3RfbW9kaWZpZWR9OwotICAg ICB9Ci0gICB9Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNlL3RyYWNl X2V2ZW50L3RyYWNlX2xvZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjCi0tLS0gY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYy5ub19tYXRjaGluZ19jb25z dHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ1OjUwLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MJMjAyNC0wNS0xNyAx MjozMzo1OC43MDk2NTA0MjcgKzAyMDAKLUBAIC0yMTk4LDggKzIxOTgsOCBAQCB2b2lkIFRyYWNl TG9nOjpTZXRUcmFjZUJ1ZmZlckZvclRlc3RpbmcoCi0gI2lmIEJVSUxERkxBRyhVU0VfUEVSRkVU VE9fQ0xJRU5UX0xJQlJBUlkpCi0gdm9pZCBUcmFjZUxvZzo6T25TZXR1cChjb25zdCBwZXJmZXR0 bzo6RGF0YVNvdXJjZUJhc2U6OlNldHVwQXJncyYgYXJncykgewotICAgQXV0b0xvY2sgbG9jayh0 cmFja19ldmVudF9sb2NrXyk7Ci0tICB0cmFja19ldmVudF9zZXNzaW9uc18uZW1wbGFjZV9iYWNr KGFyZ3MuaW50ZXJuYWxfaW5zdGFuY2VfaW5kZXgsICphcmdzLmNvbmZpZywKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5iYWNrZW5kX3R5cGUpOwotKyAgdHJhY2tf ZXZlbnRfc2Vzc2lvbnNfLmVtcGxhY2VfYmFjaygpID0ge2FyZ3MuaW50ZXJuYWxfaW5zdGFuY2Vf aW5kZXgsICphcmdzLmNvbmZpZywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXJncy5iYWNrZW5kX3R5cGV9OwotIH0KLSAKLSB2b2lkIFRyYWNlTG9nOjpPblN0YXJ0KGNv bnN0IHBlcmZldHRvOjpEYXRhU291cmNlQmFzZTo6U3RhcnRBcmdzJikgewotZGlmZiAtdXAgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90 aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1l X3Blcm1pc3Npb25fcHJvdmlkZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9t ZS9icm93c2VyL2NvbnRlbnRfc2V0dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjAwLjAwMDAwMDAwMCAr MDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvY29udGVudF9z ZXR0aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjCTIwMjQtMDUtMTcgMTI6MzM6 NTguNzA5NjUwNDI3ICswMjAwCi1AQCAtMjU4LDggKzI1OCw4IEBAIHZvaWQgT25lVGltZVBlcm1p c3Npb25Qcm92aWRlcjo6T25TdXNwZW4KLSAKLSAgICAgICB3aGlsZSAocnVsZV9pdGVyYXRvciAm JiBydWxlX2l0ZXJhdG9yLT5IYXNOZXh0KCkpIHsKLSAgICAgICAgIGF1dG8gcnVsZSA9IHJ1bGVf aXRlcmF0b3ItPk5leHQoKTsKLS0gICAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2Jh Y2soc2V0dGluZ190eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRlcm4sCi0tICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuKTsKLSsgICAg ICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2soKSA9IHtzZXR0aW5nX3R5cGUsIHJ1 bGUtPnByaW1hcnlfcGF0dGVybiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59OwotICAgICAgICAgcGVybWlzc2lvbnM6OlBl cm1pc3Npb25VbWFVdGlsOjpSZWNvcmRPbmVUaW1lUGVybWlzc2lvbkV2ZW50KAotICAgICAgICAg ICAgIHNldHRpbmdfdHlwZSwKLSAgICAgICAgICAgICBwZXJtaXNzaW9uczo6T25lVGltZVBlcm1p c3Npb25FdmVudDo6RVhQSVJFRF9PTl9TVVNQRU5EKTsKLUBAIC0zNjEsOCArMzYxLDggQEAgdm9p ZCBPbmVUaW1lUGVybWlzc2lvblByb3ZpZGVyOjpEZWxldGVFbgotICAgICBhdXRvIHJ1bGUgPSBy dWxlX2l0ZXJhdG9yLT5OZXh0KCk7Ci0gICAgIGlmIChydWxlLT5wcmltYXJ5X3BhdHRlcm4uTWF0 Y2hlcyhvcmlnaW5fZ3VybCkgJiYKLSAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuLk1h dGNoZXMob3JpZ2luX2d1cmwpKSB7Ci0tICAgICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2Vf YmFjaygKLS0gICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0 dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm4pOwotKyAgICAgIHBhdHRlcm5zX3RvX2RlbGV0 ZS5lbXBsYWNlX2JhY2soKSA9IHsKLSsgICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1 bGUtPnByaW1hcnlfcGF0dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59OwotICAgICAgIHBl cm1pc3Npb25zOjpQZXJtaXNzaW9uVW1hVXRpbDo6UmVjb3JkT25lVGltZVBlcm1pc3Npb25FdmVu dCgKLSAgICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHRyaWdnZXJfZXZlbnQpOwotICAg ICB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL2VudGVy cHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Ro cm90dGxlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv Y2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5h Z2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFu YWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMTUgMjM6NDY6MDAuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jaHJvbWUvYnJvd3Nlci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxl X21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJvdHRsZS5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4Ljcw OTY1MDQyNyArMDIwMAotQEAgLTY3LDggKzY3LDggQEAgYmFzZTo6ZmxhdF9tYXA8c3RkOjpzdHJp bmcsIFNBTUxQcm9maWxlQQotICAgLy8gVE9ETyhjcmJ1Zy5jb20vMTQ0NTA3Mik6IEFkZCBhY3R1 YWwgZG9tYWlucyB3aXRoIGF0dHJpYnV0ZSBuYW1lcy4KLSAgIHByb2ZpbGVfYXR0cmlidXRlcy0+ aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKAotICAgICAgICJzdXBwb3J0ZWQudGVzdCIsCi0tICAgICAg U0FNTFByb2ZpbGVBdHRyaWJ1dGVzKCJwbGFjZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21h aW4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiIpKSk7 Ci0rICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1dGVzeyJwbGFjZWhvbGRlck5hbWUiLCAicGxhY2Vo b2xkZXJEb21haW4iLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicGxhY2Vob2xkZXJU b2tlbiJ9KSk7Ci0gCi0gICAvLyBFeHRyYWN0IGRvbWFpbnMgYW5kIGF0dHJpYnV0ZXMgZnJvbSB0 aGUgY29tbWFuZCBsaW5lIHN3aXRjaC4KLSAgIGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjb21t YW5kX2xpbmUgPQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9u X2NvbnRleHQuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lzdGVtX2Fj Y2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNz X3Blcm1pc3Npb25fY29udGV4dC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1 IDIzOjQ2OjAxLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hy b21lL2Jyb3dzZXIvZmlsZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nlc3Nf cGVybWlzc2lvbl9jb250ZXh0LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzEwNjUwNDQ3ICswMjAw Ci1AQCAtMzg3LDcgKzM4Nyw3IEBAIGJvb2wgU2hvdWxkQmxvY2tBY2Nlc3NUb1BhdGgoY29uc3Qg YmFzZToKLSAgICAgICBEQ0hFQ0soYmxvY2sucGF0aCk7Ci0gICAgICAgYmxvY2tlZF9wYXRoID0g YmFzZTo6RmlsZVBhdGgoYmxvY2sucGF0aCk7Ci0gICAgIH0KLS0gICAgcnVsZXMuZW1wbGFjZV9i YWNrKGJsb2NrZWRfcGF0aCwgYmxvY2sudHlwZSk7Ci0rICAgIHJ1bGVzLmVtcGxhY2VfYmFjaygp ID0ge2Jsb2NrZWRfcGF0aCwgYmxvY2sudHlwZX07Ci0gICB9Ci0gCi0gICBiYXNlOjpGaWxlUGF0 aCBuZWFyZXN0X2FuY2VzdG9yOwotQEAgLTE2ODgsMTEgKzE2ODgsMTEgQEAgdm9pZCBDaHJvbWVG aWxlU3lzdGVtQWNjZXNzUGVybWlzc2lvbkNvbgotICAgLy8gcHJvZmlsZSdzIGRpcmVjdG9yeSwg YXNzdW1pbmcgdGhlIHByb2ZpbGUgZGlyIGlzIGEgY2hpbGQgb2YgdGhlIHVzZXIgZGF0YQotICAg Ly8gZGlyLgotICAgc3RkOjp2ZWN0b3I8QmxvY2tQYXRoUnVsZT4gZXh0cmFfcnVsZXM7Ci0tICBl eHRyYV9ydWxlcy5lbXBsYWNlX2JhY2socHJvZmlsZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtC bG9ja0FsbENoaWxkcmVuKTsKLSsgIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjaygpID0ge3Byb2Zp bGVfLT5HZXRQYXRoKCkuRGlyTmFtZSgpLCBrQmxvY2tBbGxDaGlsZHJlbn07Ci0gICBpZiAoZ19i cm93c2VyX3Byb2Nlc3MtPnByb2ZpbGVfbWFuYWdlcigpKSB7Ci0tICAgIGV4dHJhX3J1bGVzLmVt cGxhY2VfYmFjaygKLSsgICAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAg ICBnX2Jyb3dzZXJfcHJvY2Vzcy0+cHJvZmlsZV9tYW5hZ2VyKCktPnVzZXJfZGF0YV9kaXIoKSwK LS0gICAgICAgIGtCbG9ja0FsbENoaWxkcmVuKTsKLSsgICAgICAgIGtCbG9ja0FsbENoaWxkcmVu fTsKLSAgIH0KLSAKLSAgIGJhc2U6OlRocmVhZFBvb2w6OlBvc3RUYXNrQW5kUmVwbHlXaXRoUmVz dWx0KAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9wZXJm b3JtYW5jZV9tYW5hZ2VyL21lY2hhbmlzbXMvcGFnZV9kaXNjYXJkZXIuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci9wZXJmb3Jt YW5jZV9tYW5hZ2VyL21lY2hhbmlzbXMvcGFnZV9kaXNjYXJkZXIuY2MKLS0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3BlcmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNt cy9wYWdlX2Rpc2NhcmRlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE4IDE5 OjA4OjM1LjQxNTAyNjgyMyArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21l L2Jyb3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdlci9tZWNoYW5pc21zL3BhZ2VfZGlzY2FyZGVyLmNj CTIwMjQtMDUtMTggMTk6MTA6MDUuNTI3NjQ0NzA4ICswMjAwCi1AQCAtNTMsNyArNTMsNyBAQCBz dGQ6OnZlY3RvcjxQYWdlRGlzY2FyZGVyOjpEaXNjYXJkRXZlbnQ+Ci0gICAgIGlmIChsaWZlY3lj bGVfdW5pdC0+RGlzY2FyZFRhYigKLSAgICAgICAgICAgICBkaXNjYXJkX3JlYXNvbiwKLSAgICAg ICAgICAgICAvKm1lbW9yeV9mb290cHJpbnRfZXN0aW1hdGU9Ki9wcm94eS5zZWNvbmQpKSB7Ci0t ICAgICAgZGlzY2FyZF9ldmVudHMuZW1wbGFjZV9iYWNrKGJhc2U6OlRpbWVUaWNrczo6Tm93KCks IHByb3h5LnNlY29uZCk7Ci0rICAgICAgZGlzY2FyZF9ldmVudHMuZW1wbGFjZV9iYWNrKCkgPSB7 YmFzZTo6VGltZVRpY2tzOjpOb3coKSwgcHJveHkuc2Vjb25kfTsKLSAgICAgfQotICAgfQotICAg cmV0dXJuIGRpc2NhcmRfZXZlbnRzOwotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j aHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9t ZW51LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hy b21lL2Jyb3dzZXIvcmVuZGVyZXJfY29udGV4dF9tZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVu dS5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvcmVuZGVyZXJf Y29udGV4dF9tZW51L3JlbmRlcl92aWV3X2NvbnRleHRfbWVudS5jYy5ub19tYXRjaGluZ19jb25z dHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjAyLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvcmVuZGVyZXJfY29udGV4dF9tZW51L3JlbmRl cl92aWV3X2NvbnRleHRfbWVudS5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxMTY1MDQ2OCArMDIw MAotQEAgLTQwNDksMTAgKzQwNDksMTAgQEAgdm9pZCBSZW5kZXJWaWV3Q29udGV4dE1lbnU6OkV4 ZWNPcGVuQ29tcAotICAgICBhdXRvZmlsbDo6TG9jYWxGcmFtZVRva2VuIGZyYW1lX3Rva2VuID0g ZHJpdmVyLT5HZXRGcmFtZVRva2VuKCk7Ci0gICAgIGNsaWVudC0+R2V0TWFuYWdlcigpLk9wZW5D b21wb3NlKAotICAgICAgICAgKmRyaXZlciwKLS0gICAgICAgIGF1dG9maWxsOjpGb3JtR2xvYmFs SWQoCi0tICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJZChw YXJhbXNfLmZvcm1fcmVuZGVyZXJfaWQpKSwKLS0gICAgICAgIGF1dG9maWxsOjpGaWVsZEdsb2Jh bElkKAotLSAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6RmllbGRSZW5kZXJlcklk KHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQpKSwKLSsgICAgICAgIGF1dG9maWxsOjpGb3JtR2xv YmFsSWR7Ci0rICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpGb3JtUmVuZGVyZXJJ ZChwYXJhbXNfLmZvcm1fcmVuZGVyZXJfaWQpfSwKLSsgICAgICAgIGF1dG9maWxsOjpGaWVsZEds b2JhbElkewotKyAgICAgICAgICAgIGZyYW1lX3Rva2VuLCBhdXRvZmlsbDo6RmllbGRSZW5kZXJl cklkKHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQpfSwKLSAgICAgICAgIGNvbXBvc2U6OkNvbXBv c2VNYW5hZ2VySW1wbDo6VWlFbnRyeVBvaW50OjprQ29udGV4dE1lbnUpOwotICAgICBHZXRCcm93 c2VyKCktPndpbmRvdygpLT5Ob3RpZnlQcm9tb0ZlYXR1cmVVc2VkKAotICAgICAgICAgY29tcG9z ZTo6ZmVhdHVyZXM6OmtFbmFibGVDb21wb3NlKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxfY29udGV4dF9tZW51X21h bmFnZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j aHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRvZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5j YwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwv YXV0b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJ MjAyNC0wNS0xNSAyMzo0NjowNS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL2F1dG9maWxsL2F1dG9maWxsX2NvbnRleHRfbWVudV9t YW5hZ2VyLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzExNjUwNDY4ICswMjAwCi1AQCAtMzY1LDgg KzM2NSw4IEBAIHZvaWQgQXV0b2ZpbGxDb250ZXh0TWVudU1hbmFnZXI6OkV4ZWN1dGUKLSAgICAg QXV0b2ZpbGxNYW5hZ2VyJiBtYW5hZ2VyKSB7Ci0gICBhdXRvJiBkcml2ZXIgPSBzdGF0aWNfY2Fz dDxDb250ZW50QXV0b2ZpbGxEcml2ZXImPihtYW5hZ2VyLmRyaXZlcigpKTsKLSAgIGRyaXZlci5i cm93c2VyX2V2ZW50cygpLlJlbmRlcmVyU2hvdWxkVHJpZ2dlclN1Z2dlc3Rpb25zKAotLSAgICAg IEZpZWxkR2xvYmFsSWQoZHJpdmVyLkdldEZyYW1lVG9rZW4oKSwKLS0gICAgICAgICAgICAgICAg ICAgIEZpZWxkUmVuZGVyZXJJZChwYXJhbXNfLmZpZWxkX3JlbmRlcmVyX2lkKSksCi0rICAgICAg RmllbGRHbG9iYWxJZHtkcml2ZXIuR2V0RnJhbWVUb2tlbigpLAotKyAgICAgICAgICAgICAgICAg ICAgRmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVuZGVyZXJfaWQpfSwKLSAgICAgICBB dXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOjprTWFudWFsRmFsbGJhY2tQYXltZW50cyk7 Ci0gICBMb2dNYW51YWxGYWxsYmFja0NvbnRleHRNZW51RW50cnlBY2NlcHRlZCgKLSAgICAgICBz dGF0aWNfY2FzdDxCcm93c2VyQXV0b2ZpbGxNYW5hZ2VyJj4obWFuYWdlciksCi1kaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29t bmlib3hfY2xpZW50LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9jbGllbnQuY2MK LS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hy b21lX29tbmlib3hfY2xpZW50LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUg MjM6NDY6MDUuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJv bWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5pYm94X2NsaWVudC5jYwkyMDI0LTA1LTE3 IDEyOjMzOjU4LjcxMjY1MDQ4OSArMDIwMAotQEAgLTUxMywxMCArNTEzLDEwIEBAIHZvaWQgQ2hy b21lT21uaWJveENsaWVudDo6T25BdXRvY29tcGxldGUKLSAgICAgICAgICAgICAgIGFsdGVybmF0 aXZlX25hdl9tYXRjaCk7Ci0gCi0gICAvLyBTdG9yZSB0aGUgZGV0YWlscyBuZWNlc3NhcnkgdG8g b3BlbiB0aGUgb21uaWJveCBtYXRjaCB2aWEgYnJvd3NlciBjb21tYW5kcy4KLS0gIGxvY2F0aW9u X2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3BhcmFtcyhMb2NhdGlvbkJhcjo6TmF2aWdhdGlvblBhcmFt cygKLSsgIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3BhcmFtcyhMb2NhdGlvbkJhcjo6 TmF2aWdhdGlvblBhcmFtc3sKLSAgICAgICBkZXN0aW5hdGlvbl91cmwsIGRpc3Bvc2l0aW9uLCB0 cmFuc2l0aW9uLCBtYXRjaF9zZWxlY3Rpb25fdGltZXN0YW1wLAotICAgICAgIGRlc3RpbmF0aW9u X3VybF9lbnRlcmVkX3dpdGhvdXRfc2NoZW1lLAotLSAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRl cmVkX3dpdGhfaHR0cF9zY2hlbWUsIG1hdGNoLmV4dHJhX2hlYWRlcnMpKTsKLSsgICAgICBkZXN0 aW5hdGlvbl91cmxfZW50ZXJlZF93aXRoX2h0dHBfc2NoZW1lLCBtYXRjaC5leHRyYV9oZWFkZXJz fSk7Ci0gCi0gICBpZiAoYnJvd3Nlcl8pIHsKLSAgICAgYXV0byBuYXZpZ2F0aW9uID0gY2hyb21l OjpPcGVuQ3VycmVudFVSTChicm93c2VyXyk7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2Vydmlj ZS5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21l L2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgKLS0tLSBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9u b3RpZmljYXRpb25fc2VydmljZS5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUg MjM6NDY6MDUuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJv bWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0aW9uX3NlcnZpY2UuaAkyMDI0 LTA1LTE3IDEyOjMzOjU4LjcxMjY1MDQ4OSArMDIwMAotQEAgLTI0LDYgKzI0LDcgQEAgc3RydWN0 IE1lbnVOb3RpZmljYXRpb25FbnRyeSB7Ci0gICBpbnQgY29tbWFuZCA9IDA7Ci0gICBzdGQ6OnUx NnN0cmluZyBsYWJlbDsKLSAgIHNhZmV0eV9odWI6OlNhZmV0eUh1Yk1vZHVsZVR5cGUgbW9kdWxl OwotKyAgTWVudU5vdGlmaWNhdGlvbkVudHJ5KGF1dG8gYywgYXV0byBsLCBhdXRvIG0pIDogY29t bWFuZChjKSwgbGFiZWwobCksIG1vZHVsZShtKSB7IH0KLSB9OwotIAotIG5hbWVzcGFjZSB7Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL2Zy YW1lL2NvbnRlbnRzX2xheW91dF9tYW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvZnJhbWUvY29udGVu dHNfbGF5b3V0X21hbmFnZXIuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9i cm93c2VyL3VpL3ZpZXdzL2ZyYW1lL2NvbnRlbnRzX2xheW91dF9tYW5hZ2VyLmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTggMTk6NTM6MDQuNjY1MzgyOTQ5ICswMjAwCi0rKysg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9mcmFtZS9jb250 ZW50c19sYXlvdXRfbWFuYWdlci5jYwkyMDI0LTA1LTE4IDE5OjU0OjM5LjYwMTY0Mzg5MCArMDIw MAotQEAgLTQ0LDIwICs0NCwyMCBAQCB2aWV3czo6UHJvcG9zZWRMYXlvdXQgQ29udGVudHNMYXlv dXRNYW5hCi0gCi0gICAvLyBEZXZUb29scyBjYXJlcyBhYm91dCB0aGUgc3BlY2lmaWMgcG9zaXRp b24sIHNvIHdlIGhhdmUgdG8gY29tcGVuc2F0ZSBSVEwKLSAgIC8vIGxheW91dCBoZXJlLgotLSAg bGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKLSsgIGxheW91dHMuY2hpbGRfbGF5 b3V0cy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICBkZXZ0b29sc192aWV3Xy5nZXQoKSwgZGV2 dG9vbHNfdmlld18tPkdldFZpc2libGUoKSwKLSAgICAgICBob3N0X3ZpZXcoKS0+R2V0TWlycm9y ZWRSZWN0KG5ld19kZXZ0b29sc19ib3VuZHMpLAotLSAgICAgIHZpZXdzOjpTaXplQm91bmRzKGNv bnRhaW5lcl9zaXplKSk7Ci0tICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAot KyAgICAgIHZpZXdzOjpTaXplQm91bmRzKGNvbnRhaW5lcl9zaXplKX07Ci0rICBsYXlvdXRzLmNo aWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgY29udGVudHNfdmlld18uZ2V0 KCksIGNvbnRlbnRzX3ZpZXdfLT5HZXRWaXNpYmxlKCksCi0gICAgICAgaG9zdF92aWV3KCktPkdl dE1pcnJvcmVkUmVjdChuZXdfY29udGVudHNfYm91bmRzKSwKLS0gICAgICB2aWV3czo6U2l6ZUJv dW5kcyhjb250YWluZXJfc2l6ZSkpOwotKyAgICAgIHZpZXdzOjpTaXplQm91bmRzKGNvbnRhaW5l cl9zaXplKX07Ci0gCi0gICAvLyBFbnRlcnByaXNlIHdhdGVybWFyayB2aWV3IGlzIGFsd2F5cyBv dmVybGFpZCwgZXZlbiB3aGVuIGVtcHR5LgotICAgaWYgKHdhdGVybWFya192aWV3XykgewotLSAg ICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAotKyAgICBsYXlvdXRzLmNoaWxk X2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICB3YXRlcm1hcmtfdmlld18uZ2V0 KCksIHdhdGVybWFya192aWV3Xy0+R2V0VmlzaWJsZSgpLAotLSAgICAgICAgZ2Z4OjpSZWN0KDAs IDAsIHdpZHRoLCBoZWlnaHQpLCB2aWV3czo6U2l6ZUJvdW5kcyhjb250YWluZXJfc2l6ZSkpOwot KyAgICAgICAgZ2Z4OjpSZWN0KDAsIDAsIHdpZHRoLCBoZWlnaHQpLCB2aWV3czo6U2l6ZUJvdW5k cyhjb250YWluZXJfc2l6ZSl9OwotICAgfQotICAgbGF5b3V0cy5ob3N0X3NpemUgPSBnZng6OlNp emUod2lkdGgsIGhlaWdodCk7Ci0gICByZXR1cm4gbGF5b3V0czsKLWRpZmYgLXVwIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRk ZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3Ig Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9u cy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYwotLS0tIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy NC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X2Fza192aWV3LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzEzNjUwNTA5ICswMjAw Ci1AQCAtNjAsMTIgKzYwLDEyIEBAIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21w dEFza1YKLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRBc2tWaWV3OjpHZXRCdXR0b25zQ29uZmln dXJhdGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1 dHRvbnM7Ci0gICBpZiAoYmFzZTo6RmVhdHVyZUxpc3Q6OklzRW5hYmxlZChwZXJtaXNzaW9uczo6 ZmVhdHVyZXM6OmtPbmVUaW1lUGVybWlzc2lvbikpIHsKLS0gICAgYnV0dG9ucy5lbXBsYWNlX2Jh Y2soCi0rICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBsMTBuX3V0aWw6 OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XX1RISVNfVElNRSksCi0tICAgICAg ICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOwot KyAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1Rv bmFsfTsKLSAgIH0KLS0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKGwxMG5fdXRpbDo6R2V0U3RyaW5n VVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAotLSAgICAgICAgICAgICAgICAgICAgICAgQnV0 dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga0FsbG93SWQpOwotKyAg YnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19Q RVJNSVNTSU9OX0FMTE9XKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtB bGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd0lkfTsKLSAgIHJldHVybiBidXR0 b25zOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dz ZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92 aWV3Lmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21w dF9iYXNlX3ZpZXcuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3 Lmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAg KzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdz L3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oCTIwMjQt MDUtMTcgMTI6MzM6NTguNzEzNjUwNTA5ICswMjAwCi1AQCAtODcsNiArODcsNyBAQCBjbGFzcyBF bWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRCYXNlVmlldyA6Ci0gICBzdHJ1Y3QgUmVxdWVzdExpbmVD b25maWd1cmF0aW9uIHsKLSAgICAgY29uc3QgcmF3X3B0cjxjb25zdCBnZng6OlZlY3Rvckljb24+ IGljb247Ci0gICAgIHN0ZDo6dTE2c3RyaW5nIG1lc3NhZ2U7Ci0rICAgIFJlcXVlc3RMaW5lQ29u ZmlndXJhdGlvbihhdXRvIGksIGF1dG8gbSkgOiBpY29uKGkpLCBtZXNzYWdlKG0pIHsgfQotICAg fTsKLSAKLSAgIHN0cnVjdCBCdXR0b25Db25maWd1cmF0aW9uIHsKLWRpZmYgLXVwIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRk ZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNz aW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmlldy5jYwotLS0tIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1i ZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowNi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVk X3Blcm1pc3Npb25fcHJvbXB0X3BvbGljeV92aWV3LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzEz NjUwNTA5ICswMjAwCi1AQCAtNjQsOCArNjQsOCBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQ b2xpY3lWaWV3OjpHZXRSCi0gc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9s aWN5Vmlldzo6QnV0dG9uQ29uZmlndXJhdGlvbj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQ b2xpY3lWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVj dG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7Ci0tICBidXR0b25zLmVtcGxhY2VfYmFj ayhsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfT0tfTEFCRUwp LAotLSAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a1BvbGljeU9LLCB1aTo6QnV0 dG9uU3R5bGU6OmtUb25hbCk7Ci0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRp bDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9PS19MQUJFTCksCi0rICAgICAg ICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprUG9saWN5T0ssIHVpOjpCdXR0b25TdHlsZTo6 a1RvbmFsfTsKLSAgIHJldHVybiBidXR0b25zOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5jYy5ub19tYXRjaGluZ19j b25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdz L3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVk X3ZpZXcuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3Zp ZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZGVu aWVkX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjowNi4w MDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2Vy L3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3Vz bHlfZGVuaWVkX3ZpZXcuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTM2NTA1MDkgKzAyMDAKLUBA IC03OSwxNyArNzksMTcgQEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseURlbmll ZAotIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlEZW5pZWRW aWV3OjpCdXR0b25Db25maWd1cmF0aW9uPgotIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZp b3VzbHlEZW5pZWRWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNvbnN0IHsKLSAgIHN0 ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7Ci0tICBidXR0b25zLmVtcGxh Y2VfYmFjaygKLSsgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgbDEwbl91dGls OjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBUX0NPTlRJTlVFX05PVF9BTExPV0lO RyksCi0tICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlTm90QWxsb3dpbmcsIHVpOjpCdXR0b25T dHlsZTo6a1RvbmFsKTsKLSsgICAgICBCdXR0b25UeXBlOjprQ29udGludWVOb3RBbGxvd2luZywg dWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9OwotIAotICAgaWYgKGJhc2U6OkZlYXR1cmVMaXN0OjpJ c0VuYWJsZWQocGVybWlzc2lvbnM6OmZlYXR1cmVzOjprT25lVGltZVBlcm1pc3Npb24pKSB7Ci0t ICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAotKyAgICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0g ewotICAgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExP V19USElTX1RJTUUpLAotLSAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpC dXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dUaGlzVGltZUlkKTsKLSsgICAgICAgIEJ1dHRvblR5 cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga0FsbG93VGhpc1Rp bWVJZH07Ci0gICB9IGVsc2UgewotLSAgICBidXR0b25zLmVtcGxhY2VfYmFjayhsMTBuX3V0aWw6 OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKLS0gICAgICAgICAgICAgICAg ICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCk7Ci0r ICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7bDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJ RFNfUEVSTUlTU0lPTl9BTExPVyksCi0rICAgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvblR5 cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9OwotICAgfQotICAgcmV0dXJuIGJ1 dHRvbnM7Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91 c2x5X2dyYW50ZWRfdmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Bl cm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3LmNjCi0tLS0gY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRl ZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRfdmlldy5jYy5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMv ZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9ncmFudGVkX3ZpZXcuY2MJMjAy NC0wNS0xNyAxMjozMzo1OC43MTM2NTA1MDkgKzAyMDAKLUBAIC03NCwxMiArNzQsMTIgQEAgRW1i ZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseUdyYW50ZQotIHN0ZDo6dmVjdG9yPEVtYmVk ZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlHcmFudGVkVmlldzo6QnV0dG9uQ29uZmlndXJh dGlvbj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5R3JhbnRlZFZpZXc6Okdl dEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3QgewotICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29u ZmlndXJhdGlvbj4gYnV0dG9uczsKLS0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAotKyAgYnV0dG9u cy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElE U19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfQUxMT1dJTkcpLAotLSAgICAgIEJ1dHRvblR5cGU6 OmtDb250aW51ZUFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCk7Ci0rICAgICAgQnV0 dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAK LS0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAotKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsK LSAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfU1RP UF9BTExPV0lORyksCi0tICAgICAgQnV0dG9uVHlwZTo6a1N0b3BBbGxvd2luZywgdWk6OkJ1dHRv blN0eWxlOjprVG9uYWwsIGtTdG9wQWxsb3dpbmdJZCk7Ci0rICAgICAgQnV0dG9uVHlwZTo6a1N0 b3BBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtTdG9wQWxsb3dpbmdJZH07Ci0g ICByZXR1cm4gYnV0dG9uczsKLSB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvdWkvdmll d3MvdGFicy90YWJfc3R5bGVfdmlld3MuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MDYuMDAwMDAwMDAwICswMjAwCi0rKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHls ZV92aWV3cy5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxNDY1MDUzMCArMDIwMAotQEAgLTEyMTQs MTAgKzEyMTQsMTAgQEAgU2tQYXRoIENocm9tZVJlZnJlc2gyMDIzVGFiU3R5bGVWaWV3czo6Rwot IAotICAgICAvLyBSYWRpaSBhcmUgY2xvY2t3aXNlIGZyb20gdG9wIGxlZnQuCi0gICAgIGNvbnN0 IFNrVmVjdG9yIHJhZGlpWzRdID0gewotLSAgICAgICAgU2tWZWN0b3IodG9wX2NvbnRlbnRfY29y bmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cyksCi0tICAgICAgICBTa1ZlY3Rv cih0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzKSwK LS0gICAgICAgIFNrVmVjdG9yKGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9j b250ZW50X2Nvcm5lcl9yYWRpdXMpLAotLSAgICAgICAgU2tWZWN0b3IoYm90dG9tX2NvbnRlbnRf Y29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cyl9OwotKyAgICAgICAg U2tWZWN0b3J7dG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3Jh ZGl1c30sCi0rICAgICAgICBTa1ZlY3Rvcnt0b3BfY29udGVudF9jb3JuZXJfcmFkaXVzLCB0b3Bf Y29udGVudF9jb3JuZXJfcmFkaXVzfSwKLSsgICAgICAgIFNrVmVjdG9ye2JvdHRvbV9jb250ZW50 X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXN9LAotKyAgICAgICAg U2tWZWN0b3J7Ym90dG9tX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgYm90dG9tX2NvbnRlbnRfY29y bmVyX3JhZGl1c319OwotICAgICBTa1JSZWN0IHJyZWN0OwotICAgICBycmVjdC5zZXRSZWN0UmFk aWkoU2tSZWN0OjpNYWtlTFRSQihsZWZ0LCB0b3AsIHJpZ2h0LCBib3R0b20pLCByYWRpaSk7Ci0g ICAgIFNrUGF0aCBwYXRoOwotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUv YnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25zL3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2Vy L3VpL3dlYl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBsLmNjCi0tLS0gY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25zL3N1Yl9h cHBzX3NlcnZpY2VfaW1wbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIz OjQ2OjA2LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21l L2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19zZXJ2aWNlX2ltcGwuY2MJMjAy NC0wNS0xNyAxMjozMzo1OC43MTQ2NTA1MzAgKzAyMDAKLUBAIC0xMDgsNyArMTA4LDcgQEAgQWRk T3B0aW9uc0Zyb21Nb2pvKAotICAgICAgICAgICAgICAgICAgICAgIENvbnZlcnRQYXRoVG9Vcmwo c3ViX2FwcC0+bWFuaWZlc3RfaWRfcGF0aCwgb3JpZ2luKSk7Ci0gICAgIEFTU0lHTl9PUl9SRVRV Uk4oR1VSTCBpbnN0YWxsX3VybCwKLSAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0UGF0aFRv VXJsKHN1Yl9hcHAtPmluc3RhbGxfdXJsX3BhdGgsIG9yaWdpbikpOwotLSAgICBzdWJfYXBwcy5l bXBsYWNlX2JhY2soc3RkOjptb3ZlKG1hbmlmZXN0X2lkKSwgc3RkOjptb3ZlKGluc3RhbGxfdXJs KSk7Ci0rICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShtYW5pZmVzdF9p ZCksIHN0ZDo6bW92ZShpbnN0YWxsX3VybCl9OwotICAgfQotICAgcmV0dXJuIHN1Yl9hcHBzOwot IH0KLUBAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBTdWJBcHBzU2VydmljZUltcGw6OlNjaGVkdWxl U3ViQXBwSQotICAgICAgICAgYmFzZTo6QmluZE9uY2UoCi0gICAgICAgICAgICAgW10od2ViYXBw czo6TWFuaWZlc3RJZCBtYW5pZmVzdF9pZCwgY29uc3Qgd2ViYXBwczo6QXBwSWQmIGFwcF9pZCwK LSAgICAgICAgICAgICAgICB3ZWJhcHBzOjpJbnN0YWxsUmVzdWx0Q29kZSByZXN1bHRfY29kZSkg ewotLSAgICAgICAgICAgICAgcmV0dXJuIFN1YkFwcEluc3RhbGxSZXN1bHQobWFuaWZlc3RfaWQs IGFwcF9pZCwgcmVzdWx0X2NvZGUpOwotKyAgICAgICAgICAgICAgcmV0dXJuIFN1YkFwcEluc3Rh bGxSZXN1bHR7bWFuaWZlc3RfaWQsIGFwcF9pZCwgcmVzdWx0X2NvZGV9OwotICAgICAgICAgICAg IH0sCi0gICAgICAgICAgICAgbWFuaWZlc3RfaWQpCi0gICAgICAgICAgICAgLlRoZW4oY29uY3Vy cmVudC5DcmVhdGVDYWxsYmFjaygpKSwKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv Y2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYy5ub19tYXRjaGluZ19jb25z dHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9j YXBhYmlsaXRpZXMuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS90ZXN0L2No cm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0w NS0xNSAyMzo0NjowNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MJMjAyNC0wNS0xNyAxMjoz Mzo1OC43MTU2NTA1NTEgKzAyMDAKLUBAIC0zNDYsNyArMzQ2LDcgQEAgU3RhdHVzIFBhcnNlTW9i aWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgotICAgICAgICAgICAgICAgICAgICAgICAgICIndmVy c2lvbicgZmllbGQgb2YgdHlwZSBzdHJpbmciKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIGJy YW5kcy5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVyc2lvbik7Ci0rICAgICAgICBicmFuZHMuZW1w bGFjZV9iYWNrKCkgPSB7KmJyYW5kLCAqdmVyc2lvbn07Ci0gICAgICAgfQotIAotICAgICAgIGNs aWVudF9oaW50cy5icmFuZHMgPSBzdGQ6Om1vdmUoYnJhbmRzKTsKLUBAIC0zODQsNyArMzg0LDcg QEAgU3RhdHVzIFBhcnNlTW9iaWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgotICAgICAgICAgICAg ICAgICAgICAgICAgICJhICd2ZXJzaW9uJyBmaWVsZCBvZiB0eXBlIHN0cmluZyIpOwotICAgICAg ICAgfQotIAotLSAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCpicmFuZCwg KnZlcnNpb24pOwotKyAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCkgPSB7 KmJyYW5kLCAqdmVyc2lvbn07Ci0gICAgICAgfQotIAotICAgICAgIGNsaWVudF9oaW50cy5mdWxs X3ZlcnNpb25fbGlzdCA9IHN0ZDo6bW92ZShmdWxsX3ZlcnNpb25fbGlzdCk7Ci1kaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0aW5nL2Fn Z3JlZ2F0YWJsZV91dGlscy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0aW5nL2FnZ3JlZ2F0YWJsZV91 dGlscy5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9hdHRyaWJ1dGlv bl9yZXBvcnRpbmcvYWdncmVnYXRhYmxlX3V0aWxzLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDUtMTcgMTU6NTA6MjEuMTg1MDU0Mzg5ICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3JlcG9ydGluZy9hZ2dyZWdhdGFibGVfdXRp bHMuY2MJMjAyNC0wNS0xNyAxNTo1MTo0MC40MTQ4ODEwNTMgKzAyMDAKLUBAIC0zMyw3ICszMyw3 IEBAIHN0ZDo6dmVjdG9yPE51bGxBZ2dyZWdhdGFibGVSZXBvcnQ+IEdldE4KLSAgICAgfQotIAot ICAgICBpZiAoZ2VuZXJhdGVfZnVuYyhpKSkgewotLSAgICAgIHJlcG9ydHMuZW1wbGFjZV9iYWNr KGZha2Vfc291cmNlX3RpbWUpOwotKyAgICAgIHJlcG9ydHMuZW1wbGFjZV9iYWNrKCkgPSB7ZmFr ZV9zb3VyY2VfdGltZX07Ci0gICAgIH0KLSAgIH0KLSAgIHJldHVybiByZXBvcnRzOwotZGlmZiAt dXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3JlcG9ydGlu Zy9yZWdpc3RyYXRpb25faW5mby5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0aW5nL3JlZ2lzdHJhdGlv bl9pbmZvLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F0dHJpYnV0 aW9uX3JlcG9ydGluZy9yZWdpc3RyYXRpb25faW5mby5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv cgkyMDI0LTA1LTE1IDIzOjQ2OjExLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY29tcG9uZW50cy9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcvcmVnaXN0cmF0aW9uX2lu Zm8uY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTU2NTA1NTEgKzAyMDAKLUBAIC05Niw3ICs5Niw3 IEBAIFJlZ2lzdHJhdGlvbkluZm86OlBhcnNlSW5mbyhjb25zdCBuZXQ6OnMKLSAKLSAgIEFTU0lH Tl9PUl9SRVRVUk4oYm9vbCByZXBvcnRfaGVhZGVyX2Vycm9ycywgUGFyc2VSZXBvcnRIZWFkZXJF cnJvcnMoZGljdCkpOwotIAotLSAgcmV0dXJuIFJlZ2lzdHJhdGlvbkluZm8ocHJlZmVycmVkX3Bs YXRmb3JtLCByZXBvcnRfaGVhZGVyX2Vycm9ycyk7Ci0rICByZXR1cm4gUmVnaXN0cmF0aW9uSW5m b3twcmVmZXJyZWRfcGxhdGZvcm0sIHJlcG9ydF9oZWFkZXJfZXJyb3JzfTsKLSB9Ci0gCi0gfSAg Ly8gbmFtZXNwYWNlIGF0dHJpYnV0aW9uX3JlcG9ydGluZwotZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb21wb25lbnRzL2F1dG9maWxsL2NvbnRlbnQvcmVuZGVyZXIvZm9ybV9hdXRv ZmlsbF91dGlsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9hdXRvZmlsbC9jb250ZW50L3JlbmRlcmVyL2Zvcm1fYXV0b2ZpbGxfdXRp bC5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9hdXRvZmlsbC9jb250 ZW50L3JlbmRlcmVyL2Zvcm1fYXV0b2ZpbGxfdXRpbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv cgkyMDI0LTA1LTE4IDIyOjMzOjMxLjQzNDYwNjM2NyArMDIwMAotKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY29tcG9uZW50cy9hdXRvZmlsbC9jb250ZW50L3JlbmRlcmVyL2Zvcm1fYXV0b2Zp bGxfdXRpbC5jYwkyMDI0LTA1LTE4IDIyOjM0OjAwLjYwNDQ1OTYyNyArMDIwMAotQEAgLTIyNzQs NyArMjI3NCw3IEBAIHN0ZDo6dmVjdG9yPHN0ZDo6cGFpcjxGaWVsZFJlZiwgV2ViQXV0b2YKLSAg ICAgaWYgKGVsZW1lbnQuRm9jdXNlZCgpKSB7Ci0gICAgICAgZm9jdXNlZF9maWVsZCA9IHsmZmll bGQsIGVsZW1lbnR9OwotICAgICB9IGVsc2UgewotLSAgICAgIHVuZm9jdXNlZF9maWVsZHMuZW1w bGFjZV9iYWNrKCZmaWVsZCwgZWxlbWVudCk7Ci0rICAgICAgdW5mb2N1c2VkX2ZpZWxkcy5lbXBs YWNlX2JhY2soKSA9IHsmZmllbGQsIGVsZW1lbnR9OwotICAgICB9Ci0gICB9Ci0gCi1kaWZmIC11 cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2Vy L3dlYmRhdGEvYWRkcmVzc2VzL2FkZHJlc3NfYXV0b2ZpbGxfdGFibGUuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F1dG9maWxsL2Nv cmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjCi0t LS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nl ci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MTEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJk YXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3RhYmxlLmNjCTIwMjQtMDUtMTcgMTI6MzM6 NTguNzE1NjUwNTUxICswMjAwCi1AQCAtNjM1LDEwICs2MzUsMTAgQEAgc3RkOjp1bmlxdWVfcHRy PEF1dG9maWxsUHJvZmlsZT4gQWRkcmVzcwotICAgICB9Ci0gCi0gICAgIGJhc2U6OnNwYW48Y29u c3QgdWludDhfdD4gb2JzZXJ2YXRpb25zX2RhdGEgPSBzLkNvbHVtbkJsb2IoMyk7Ci0tICAgIGZp ZWxkX3R5cGVfdmFsdWVzLmVtcGxhY2VfYmFjaygKLSsgICAgZmllbGRfdHlwZV92YWx1ZXMuZW1w bGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICB0eXBlLCBzLkNvbHVtblN0cmluZzE2KDEpLCBzLkNv bHVtbkludCgyKSwKLSAgICAgICAgIHN0ZDo6dmVjdG9yPHVpbnQ4X3Q+KG9ic2VydmF0aW9uc19k YXRhLmJlZ2luKCksCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvYnNlcnZhdGlvbnNf ZGF0YS5lbmQoKSkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YXRpb25z X2RhdGEuZW5kKCkpfTsKLSAKLSAgICAgaWYgKHR5cGUgPT0gQUREUkVTU19IT01FX0NPVU5UUlkp IHsKLSAgICAgICBjb3VudHJ5X2NvZGUgPSBiYXNlOjpVVEYxNlRvVVRGOChzLkNvbHVtblN0cmlu ZzE2KDEpKTsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9hdXRv ZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvY29udGFjdF9pbmZvX3N5bmNfdXRp bC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBv bmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5m b19zeW5jX3V0aWwuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXV0 b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0 aWwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjoxMS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvYXV0b2ZpbGwv Y29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MJ MjAyNC0wNS0xNyAxMjozMzo1OC43MTU2NTA1NTEgKzAyMDAKLUBAIC0xNjksOSArMTY5LDkgQEAg Y2xhc3MgQ29udGFjdEluZm9Qcm9maWxlU2V0dGVyIHsKLSAgICAgICBDSEVDSyhvYnNlcnZhdGlv bnMuZW1wdHkoKSk7Ci0gICAgICAgZm9yIChjb25zdCBzeW5jX3BiOjpDb250YWN0SW5mb1NwZWNp Zmljczo6T2JzZXJ2YXRpb24mIHByb3RvX29ic2VydmF0aW9uIDoKLSAgICAgICAgICAgIG1ldGFk YXRhLm9ic2VydmF0aW9ucygpKSB7Ci0tICAgICAgICBvYnNlcnZhdGlvbnMuZW1wbGFjZV9iYWNr KHByb3RvX29ic2VydmF0aW9uLnR5cGUoKSwKLSsgICAgICAgIG9ic2VydmF0aW9ucy5lbXBsYWNl X2JhY2soKSA9IHtwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCi0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIFByb2ZpbGVUb2tlblF1YWxpdHk6OkZvcm1TaWduYXR1cmVIYXNoKAot LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9fb2JzZXJ2YXRpb24u Zm9ybV9oYXNoKCkpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBy b3RvX29ic2VydmF0aW9uLmZvcm1faGFzaCgpKX07Ci0gICAgICAgfQotICAgICB9Ci0gICB9Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvaW52YWxpZGF0aW9uL2lt cGwvZmNtX2ludmFsaWRhdGlvbl9zZXJ2aWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9pbnZhbGlkYXRpb24vaW1wbC9mY21faW52 YWxpZGF0aW9uX3NlcnZpY2UuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVu dHMvaW52YWxpZGF0aW9uL2ltcGwvZmNtX2ludmFsaWRhdGlvbl9zZXJ2aWNlLmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTcgMTY6MjQ6MjkuOTkzNjg5ODM4ICswMjAwCi0rKysg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2ludmFsaWRhdGlvbi9pbXBsL2ZjbV9p bnZhbGlkYXRpb25fc2VydmljZS5jYwkyMDI0LTA1LTE3IDE2OjI0OjQ4LjQwMjA3MzgzMCArMDIw MAotQEAgLTk4LDcgKzk4LDcgQEAgYm9vbCBGQ01JbnZhbGlkYXRpb25TZXJ2aWNlOjpVcGRhdGVJ bnRlcgotICAgRFZMT0coMikgPDwgIlN1YnNjcmliaW5nIHRvIHRvcGljczogIiA8PCB0b3BpY19z ZXQuc2l6ZSgpOwotICAgVG9waWNNYXAgdG9waWNfbWFwOwotICAgZm9yIChjb25zdCBhdXRvJiB0 b3BpY19uYW1lIDogdG9waWNfc2V0KSB7Ci0tICAgIHRvcGljX21hcFt0b3BpY19uYW1lXSA9IFRv cGljTWV0YWRhdGEoaGFuZGxlci0+SXNQdWJsaWNUb3BpYyh0b3BpY19uYW1lKSk7Ci0rICAgIHRv cGljX21hcFt0b3BpY19uYW1lXSA9IFRvcGljTWV0YWRhdGF7aGFuZGxlci0+SXNQdWJsaWNUb3Bp Yyh0b3BpY19uYW1lKX07Ci0gICB9Ci0gICAvLyBUT0RPKGNyYnVnLmNvbS80MDY3NTcwOCk6IFVw ZGF0ZVJlZ2lzdGVyZWRUb3BpY3MoKSBzaG91bGQgYmUgcmVuYW1lZCB0bwotICAgLy8gY2xhcmlm eSB0aGF0IGl0IGFjdHVhbGx5IHVwZGF0ZXMgd2hldGhlciB0b3BpY3MgbmVlZCBzdWJzY3JpcHRp b24gKGFrYQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL21lbW9y eV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL21lbW9yeV9wcmVzc3Vy ZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRv ci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjEyLjAwMDAwMDAw MCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9tZW1vcnlfcHJl c3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTgu NzE1NjUwNTUxICswMjAwCi1AQCAtOTIsOCArOTIsOCBAQCB2b2lkIFVubmVjZXNzYXJ5RGlzY2Fy ZE1vbml0b3I6Ok9uRGlzY2FyCi0gICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNFKHNl cXVlbmNlX2NoZWNrZXJfKTsKLSAgIGlmIChjdXJyZW50X3JlY2xhaW1fZXZlbnRfKSB7Ci0gICAg IC8vIENhY2hlIHRoaXMga2lsbCBldmVudCBhbG9uZyB3aXRoIHRoZSB0aW1lIGl0IHRvb2sgcGxh Y2UuCi0tICAgIGN1cnJlbnRfcmVjbGFpbV9ldmVudF9raWxsc18uZW1wbGFjZV9iYWNrKG1lbW9y eV9mcmVlZF9rYiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgZGlzY2FyZF9jb21wbGV0ZV90aW1lKTsKLSsgICAgY3VycmVudF9yZWNsYWltX2V2ZW50X2tp bGxzXy5lbXBsYWNlX2JhY2soKSA9IHttZW1vcnlfZnJlZWRfa2IsCi0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NhcmRfY29tcGxldGVfdGltZX07Ci0g ICB9Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Bh c3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2Mubm9fbWF0Y2hp bmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Bhc3N3b3Jk X21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MKLS0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFz c3dvcmRfbWFuYWdlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2 OjEzLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50 cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2VyLmNjCTIwMjQt MDUtMTcgMTI6MzM6NTguNzE2NjUwNTcyICswMjAwCi1AQCAtNjg2LDcgKzY4Niw3IEBAIHZvaWQg UGFzc3dvcmRNYW5hZ2VyOjpPblVzZXJNb2RpZmllZE5vblAKLSAgICAgaXQtPnNlY29uZC5sYXN0 X2NoYW5nZSA9IGJhc2U6OlRpbWU6Ok5vdygpOwotICAgfSBlbHNlIHsKLSAgICAgcG9zc2libGVf dXNlcm5hbWVzXy5QdXQoCi0tICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlmaWVy KGRyaXZlcl9pZCwgcmVuZGVyZXJfaWQpLAotKyAgICAgICAgUG9zc2libGVVc2VybmFtZUZpZWxk SWRlbnRpZmllcntkcml2ZXJfaWQsIHJlbmRlcmVyX2lkfSwKLSAgICAgICAgIFBvc3NpYmxlVXNl cm5hbWVEYXRhKEdldFNpZ25vblJlYWxtKGRyaXZlci0+R2V0TGFzdENvbW1pdHRlZFVSTCgpKSwK LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcmVyX2lkLCB2YWx1ZSwgYmFzZTo6 VGltZTo6Tm93KCksIGRyaXZlcl9pZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1 dG9jb21wbGV0ZV9hdHRyaWJ1dGVfaGFzX3VzZXJuYW1lLAotZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3 b3JkX3N1Z2dlc3Rpb25fZ2VuZXJhdG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nl ci9wYXNzd29yZF9zdWdnZXN0aW9uX2dlbmVyYXRvci5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9z dWdnZXN0aW9uX2dlbmVyYXRvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE3 IDIzOjA5OjQ5Ljg2OTIxMzA3NiArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29t cG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9zdWdnZXN0aW9u X2dlbmVyYXRvci5jYwkyMDI0LTA1LTE3IDIzOjIyOjM4LjU5OTE2ODQyMCArMDIwMAotQEAgLTE1 Nyw3ICsxNTcsNyBAQCB2b2lkIE1heWJlQXBwZW5kTWFuYWdlUGFzc3dvcmRzRW50cnkoCi0gICBz dWdnZXN0aW9uLmljb24gPSBhdXRvZmlsbDo6U3VnZ2VzdGlvbjo6SWNvbjo6a1NldHRpbmdzOwot ICAgLy8gVGhlIFVJIGNvZGUgd2lsbCBwaWNrIHVwIGFuIGljb24gZnJvbSB0aGUgcmVzb3VyY2Vz IGJhc2VkIG9uIHRoZSBzdHJpbmcuCi0gICBzdWdnZXN0aW9uLnRyYWlsaW5nX2ljb24gPSBhdXRv ZmlsbDo6U3VnZ2VzdGlvbjo6SWNvbjo6a0dvb2dsZVBhc3N3b3JkTWFuYWdlcjsKLS0gIHN1Z2dl c3Rpb25zLT5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHN1Z2dlc3Rpb24pKTsKLSsgIHN1Z2dlc3Rp b25zLT5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUoc3VnZ2VzdGlvbil9OwotIH0KLSAKLSAv LyBJZiB8ZmllbGRfc3VnZ2VzdGlvbnwgbWF0Y2hlcyB8ZmllbGRfY29udGVudHwsIGNyZWF0ZXMg YSBTdWdnZXN0aW9uIG91dCBvZiBpdAotQEAgLTIwNSw3ICsyMDUsNyBAQCB2b2lkIEFwcGVuZFN1 Z2dlc3Rpb25JZk1hdGNoaW5nKAotICAgICAgIHN1Z2dlc3Rpb24udHJhaWxpbmdfaWNvbiA9IENy ZWF0ZVN0b3JlSWNvbihmcm9tX2FjY291bnRfc3RvcmUpOwotICAgICB9Ci0gI2VuZGlmCi0tICAg IHN1Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHN1Z2dlc3Rpb24pKTsKLSsgICAg c3VnZ2VzdGlvbnMtPmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShzdWdnZXN0aW9uKX07Ci0g ICB9Ci0gfQotIAotQEAgLTIzNyw4ICsyMzcsOCBAQCB2b2lkIEdldFN1Z2dlc3Rpb25zKGNvbnN0 IGF1dG9maWxsOjpQYXNzCi0gCi0gdm9pZCBBZGRQYXNzd29yZFVzZXJuYW1lQ2hpbGRTdWdnZXN0 aW9uKGNvbnN0IHN0ZDo6dTE2c3RyaW5nJiB1c2VybmFtZSwKLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgYXV0b2ZpbGw6OlN1Z2dlc3Rpb24mIHN1Z2dlc3Rpb24pIHsK LS0gIHN1Z2dlc3Rpb24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKAotLSAgICAgIHVzZXJuYW1lLCBh dXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtQYXNzd29yZEZpZWxkQnlGaWVsZEZpbGxpbmcpOwotKyAg c3VnZ2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soKSA9Ci0rICAgICAge3VzZXJuYW1lLCBh dXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtQYXNzd29yZEZpZWxkQnlGaWVsZEZpbGxpbmd9OwotIH0K LSAKLSB2b2lkIEFkZEZpbGxQYXNzd29yZENoaWxkU3VnZ2VzdGlvbihhdXRvZmlsbDo6U3VnZ2Vz dGlvbiYgc3VnZ2VzdGlvbiwKLUBAIC0yNDgsOCArMjQ4LDggQEAgdm9pZCBBZGRGaWxsUGFzc3dv cmRDaGlsZFN1Z2dlc3Rpb24oYXV0bwotICAgICAgICAgICBJRFNfUEFTU1dPUkRfTUFOQUdFUl9N QU5VQUxfRkFMTEJBQ0tfRklMTF9QQVNTV09SRF9FTlRSWSksCi0gICAgICAgYXV0b2ZpbGw6OlBv cHVwSXRlbUlkOjprRmlsbFBhc3N3b3JkKTsKLSAgIGZpbGxfcGFzc3dvcmQucGF5bG9hZCA9Ci0t ICAgICAgYXV0b2ZpbGw6OlN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFpbHMocGFz c3dvcmQpOwotLSAgc3VnZ2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKGZp bGxfcGFzc3dvcmQpKTsKLSsgICAgICBhdXRvZmlsbDo6U3VnZ2VzdGlvbjo6UGFzc3dvcmRTdWdn ZXN0aW9uRGV0YWlsc3twYXNzd29yZH07Ci0rICBzdWdnZXN0aW9uLmNoaWxkcmVuLmVtcGxhY2Vf YmFjaygpID0ge3N0ZDo6bW92ZShmaWxsX3Bhc3N3b3JkKX07Ci0gfQotIAotIHZvaWQgQWRkVmll d1Bhc3N3b3JkRGV0YWlsc0NoaWxkU3VnZ2VzdGlvbihhdXRvZmlsbDo6U3VnZ2VzdGlvbiYgc3Vn Z2VzdGlvbikgewotQEAgLTI1OCw3ICsyNTgsNyBAQCB2b2lkIEFkZFZpZXdQYXNzd29yZERldGFp bHNDaGlsZFN1Z2dlc3RpCi0gICAgICAgICAgIElEU19QQVNTV09SRF9NQU5BR0VSX01BTlVBTF9G QUxMQkFDS19WSUVXX0RFVEFJTFNfRU5UUlkpLAotICAgICAgIGF1dG9maWxsOjpQb3B1cEl0ZW1J ZDo6a1ZpZXdQYXNzd29yZERldGFpbHMpOwotICAgdmlld19wYXNzd29yZF9kZXRhaWxzLmljb24g PSBhdXRvZmlsbDo6U3VnZ2VzdGlvbjo6SWNvbjo6a0tleTsKLS0gIHN1Z2dlc3Rpb24uY2hpbGRy ZW4uZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZSh2aWV3X3Bhc3N3b3JkX2RldGFpbHMpKTsKLSsgIHN1 Z2dlc3Rpb24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKHZpZXdfcGFzc3dv cmRfZGV0YWlscyl9OwotIH0KLSAKLSBhdXRvZmlsbDo6U3VnZ2VzdGlvbiBHZXRNYW51YWxGYWxs YmFja1N1Z2dlc3Rpb24oCi1AQCAtMjczLDcgKzI3Myw3IEBAIGF1dG9maWxsOjpTdWdnZXN0aW9u IEdldE1hbnVhbEZhbGxiYWNrU3UKLSAgIHN1Z2dlc3Rpb24uYWRkaXRpb25hbF9sYWJlbCA9IG1h eWJlX3VzZXJuYW1lOwotICAgc3VnZ2VzdGlvbi5pY29uID0gYXV0b2ZpbGw6OlN1Z2dlc3Rpb246 Okljb246OmtHbG9iZTsKLSAgIHN1Z2dlc3Rpb24ucGF5bG9hZCA9Ci0tICAgICAgYXV0b2ZpbGw6 OlN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFpbHMoY3JlZGVudGlhbC5wYXNzd29y ZCk7Ci0rICAgICAgYXV0b2ZpbGw6OlN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFp bHN7Y3JlZGVudGlhbC5wYXNzd29yZH07Ci0gICBzdWdnZXN0aW9uLmlzX2FjY2VwdGFibGUgPSBv bl9wYXNzd29yZF9mb3JtLnZhbHVlKCk7Ci0gCi0gICBpZiAoIXJlcGxhY2VkKSB7Ci1AQCAtMzU1 LDI3ICszNTUsMjcgQEAgUGFzc3dvcmRTdWdnZXN0aW9uR2VuZXJhdG9yOjpHZXRTdWdnZXN0aQot ICAgaWYgKHVzZXNfcGFzc2tleXMgJiYgZGVsZWdhdGUtPk9mZmVyUGFzc2tleXNGcm9tQW5vdGhl ckRldmljZU9wdGlvbigpKSB7Ci0gICAgIGJvb2wgbGlzdGVkX3Bhc3NrZXlzID0gZGVsZWdhdGUt PkdldFBhc3NrZXlzKCkuaGFzX3ZhbHVlKCkgJiYKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICBkZWxlZ2F0ZS0+R2V0UGFzc2tleXMoKS0+c2l6ZSgpID4gMDsKLS0gICAgc3VnZ2VzdGlvbnMu ZW1wbGFjZV9iYWNrKENyZWF0ZVdlYkF1dGhuRW50cnkobGlzdGVkX3Bhc3NrZXlzKSk7Ci0rICAg IHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygpID0ge0NyZWF0ZVdlYkF1dGhuRW50cnkobGlzdGVk X3Bhc3NrZXlzKX07Ci0gICB9Ci0gI2VuZGlmCi0gCi0gICAvLyBBZGQgcGFzc3dvcmQgZ2VuZXJh dGlvbiBlbnRyeSwgaWYgYXZhaWxhYmxlLgotICAgaWYgKG9mZmVyc19nZW5lcmF0aW9uKSB7Ci0t ICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygKLS0gICAgICAgIHNob3dfYWNjb3VudF9zdG9y YWdlX29wdGluCi0rICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygpID0KLSsgICAgICAgIHtz aG93X2FjY291bnRfc3RvcmFnZV9vcHRpbgotICAgICAgICAgICAgID8gQ3JlYXRlRW50cnlUb09w dEluVG9BY2NvdW50U3RvcmFnZVRoZW5HZW5lcmF0ZSgpCi0tICAgICAgICAgICAgOiBDcmVhdGVH ZW5lcmF0aW9uRW50cnkoKSk7Ci0rICAgICAgICAgICAgOiBDcmVhdGVHZW5lcmF0aW9uRW50cnko KX07Ci0gICB9Ci0gCi0gICAvLyBBZGQgYnV0dG9uIHRvIG9wdCBpbnRvIHVzaW5nIHRoZSBhY2Nv dW50IHN0b3JhZ2UgZm9yIHBhc3N3b3JkcyBhbmQgdGhlbgotICAgLy8gc3VnZ2VzdC4KLSAgIGlm IChzaG93X2FjY291bnRfc3RvcmFnZV9vcHRpbikgewotLSAgICBzdWdnZXN0aW9ucy5lbXBsYWNl X2JhY2soQ3JlYXRlRW50cnlUb09wdEluVG9BY2NvdW50U3RvcmFnZVRoZW5GaWxsKCkpOwotKyAg ICBzdWdnZXN0aW9ucy5lbXBsYWNlX2JhY2soKSA9IHtDcmVhdGVFbnRyeVRvT3B0SW5Ub0FjY291 bnRTdG9yYWdlVGhlbkZpbGwoKX07Ci0gICB9Ci0gCi0gICAvLyBBZGQgYnV0dG9uIHRvIHNpZ24t aW4gd2hpY2ggdW5sb2NrcyB0aGUgcHJldmlvdXNseSB1c2VkIGFjY291bnQgc3RvcmUuCi0gICBp ZiAoc2hvd19hY2NvdW50X3N0b3JhZ2VfcmVzaWduaW4pIHsKLS0gICAgc3VnZ2VzdGlvbnMuZW1w bGFjZV9iYWNrKENyZWF0ZUVudHJ5VG9SZVNpZ25pbigpKTsKLSsgICAgc3VnZ2VzdGlvbnMuZW1w bGFjZV9iYWNrKCkgPSB7Q3JlYXRlRW50cnlUb1JlU2lnbmluKCl9OwotICAgfQotIAotICAgLy8g QWRkICJNYW5hZ2UgYWxsIHBhc3N3b3JkcyIgbGluayB0byBzZXR0aW5ncy4KLUBAIC0zOTMsMzAg KzM5MywzMCBAQCBQYXNzd29yZFN1Z2dlc3Rpb25HZW5lcmF0b3I6OkdldE1hbnVhbEZhCi0gICBj b25zdCBib29sIGdlbmVyYXRlX3NlY3Rpb25zID0KLSAgICAgICAhc3VnZ2VzdGVkX2NyZWRlbnRp YWxzLmVtcHR5KCkgJiYgIWNyZWRlbnRpYWxzLmVtcHR5KCk7Ci0gICBpZiAoZ2VuZXJhdGVfc2Vj dGlvbnMpIHsKLS0gICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKAotLSAgICAgICAgbDEwbl91 dGlsOjpHZXRTdHJpbmdVVEYxNigKLSsgICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKCkgPQot KyAgICAgICAge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoCi0gICAgICAgICAgICAgSURTX1BB U1NXT1JEX01BTkFHRVJfTUFOVUFMX0ZBTExCQUNLX1NVR0dFU1RFRF9QQVNTV09SRFNfU0VDVElP Tl9USVRMRSksCi0tICAgICAgICBhdXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtUaXRsZSk7Ci0rICAg ICAgICBhdXRvZmlsbDo6UG9wdXBJdGVtSWQ6OmtUaXRsZX07Ci0gICB9Ci0gCi0gICBmb3IgKGNv bnN0IGF1dG8mIGZvcm0gOiBzdWdnZXN0ZWRfY3JlZGVudGlhbHMpIHsKLS0gICAgc3VnZ2VzdGlv bnMuZW1wbGFjZV9iYWNrKAotLSAgICAgICAgR2V0TWFudWFsRmFsbGJhY2tTdWdnZXN0aW9uKENy ZWRlbnRpYWxVSUVudHJ5KGZvcm0pLCBvbl9wYXNzd29yZF9mb3JtKSk7Ci0rICAgIHN1Z2dlc3Rp b25zLmVtcGxhY2VfYmFjaygpID0KLSsgICAgICAgIHtHZXRNYW51YWxGYWxsYmFja1N1Z2dlc3Rp b24oQ3JlZGVudGlhbFVJRW50cnkoZm9ybSksIG9uX3Bhc3N3b3JkX2Zvcm0pfTsKLSAgIH0KLSAK LSAgIGlmIChnZW5lcmF0ZV9zZWN0aW9ucykgewotLSAgICBzdWdnZXN0aW9ucy5lbXBsYWNlX2Jh Y2soCi0tICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KAotKyAgICBzdWdnZXN0aW9u cy5lbXBsYWNlX2JhY2soKSA9Ci0rICAgICAgICB7bDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNigK LSAgICAgICAgICAgICBJRFNfUEFTU1dPUkRfTUFOQUdFUl9NQU5VQUxfRkFMTEJBQ0tfQUxMX1BB U1NXT1JEU19TRUNUSU9OX1RJVExFKSwKLS0gICAgICAgIGF1dG9maWxsOjpQb3B1cEl0ZW1JZDo6 a1RpdGxlKTsKLSsgICAgICAgIGF1dG9maWxsOjpQb3B1cEl0ZW1JZDo6a1RpdGxlfTsKLSAgIH0K LSAKLSAgIC8vIE9ubHkgdGhlICJBbGwgcGFzc3dvcmRzIiBzZWN0aW9uIHNob3VsZCBiZSBzb3J0 ZWQgYWxwaGFiZXRpY2FsbHkuCi0gICBjb25zdCBzaXplX3QgcmVsZXZhbnRfc2VjdGlvbl9vZmZz ZXQgPSBzdWdnZXN0aW9ucy5zaXplKCk7Ci0gCi0gICBmb3IgKGNvbnN0IENyZWRlbnRpYWxVSUVu dHJ5JiBjcmVkZW50aWFsIDogY3JlZGVudGlhbHMpIHsKLS0gICAgc3VnZ2VzdGlvbnMuZW1wbGFj ZV9iYWNrKAotLSAgICAgICAgR2V0TWFudWFsRmFsbGJhY2tTdWdnZXN0aW9uKGNyZWRlbnRpYWws IG9uX3Bhc3N3b3JkX2Zvcm0pKTsKLSsgICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKCkgPQot KyAgICAgICAge0dldE1hbnVhbEZhbGxiYWNrU3VnZ2VzdGlvbihjcmVkZW50aWFsLCBvbl9wYXNz d29yZF9mb3JtKX07Ci0gICB9Ci0gCi0gICBiYXNlOjpyYW5nZXM6OnNvcnQoc3VnZ2VzdGlvbnMu YmVnaW4oKSArIHJlbGV2YW50X3NlY3Rpb25fb2Zmc2V0LAotZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25l bnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MKLS0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hl ci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjEzLjAwMDAwMDAw MCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9wZXJmb3JtYW5j ZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzE2NjUwNTcy ICswMjAwCi1AQCAtMjQyLDcgKzI0Miw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Xb3JrZXJD cmVhdGVkKAotICAgRENIRUNLKGluc2VydGlvbl9yZXN1bHQuc2Vjb25kKTsKLSAKLSAgIGFic2w6 OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFzZTo6T3ZlcmxvYWRl ZHsKLSAgICAgICAgICAgWyYsCi0gICAgICAgICAgICB0aGlzXShjb25zdCBjb250ZW50OjpHbG9i YWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAg ICBBZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oaW5zZXJ0aW9uX3Jlc3VsdC5maXJzdC0+c2Vjb25k LmdldCgpLAotQEAgLTI1MSw3ICsyNTEsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uV29ya2Vy Q3JlYXRlZCgKLSAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0ZWRXb3JrZXJUb2tl biBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAgICAgQ29ubmVjdERlZGljYXRl ZFdvcmtlckNsaWVudChpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCksCi0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rv a2VuKTsKLS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgIGNyZWF0b3IpOwot IH0KLSAKLUBAIC0yNjgsNyArMjY4LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkJlZm9yZVdv cmtlckRlc3RybwotICAgLy8gRmlyc3QgZGlzY29ubmVjdCB0aGUgY3JlYXRvcidzIG5vZGUgZnJv bSB0aGlzIHdvcmtlciBub2RlLgotIAotICAgYWJzbDo6dmlzaXQoCi0tICAgICAgYmFzZTo6T3Zl cmxvYWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICBbJiwKLSAgICAg ICAgICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5k ZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50Q29ubmVj dGlvbih3b3JrZXJfbm9kZS5nZXQoKSwKLUBAIC0yNzcsNyArMjc3LDcgQEAgdm9pZCBXb3JrZXJX YXRjaGVyOjpPbkJlZm9yZVdvcmtlckRlc3RybwotICAgICAgICAgICBbJiwgdGhpc10oYmxpbms6 OkRlZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAg ICAgICBEaXNjb25uZWN0RGVkaWNhdGVkV29ya2VyQ2xpZW50KHdvcmtlcl9ub2RlLmdldCgpLAot ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVkX3dv cmtlcl90b2tlbik7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwKLSAgICAgICBjcmVh dG9yKTsKLSAKLSAgIC8vIERpc2Nvbm5lY3QgYWxsIGNoaWxkIHdvcmtlcnMgYmVmb3JlIGRlc3Ry b3lpbmcgdGhlIG5vZGUuCi1AQCAtNDQ5LDcgKzQ0OSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6 T25Db250cm9sbGVlQWRkZWQoCi0gICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjbGllbnRfdXVpZCwK LSAgICAgY29uc3QgY29udGVudDo6U2VydmljZVdvcmtlckNsaWVudEluZm8mIGNsaWVudF9pbmZv KSB7Ci0gICBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAgIGJh c2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9iYWxSZW5k ZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAgICAgIC8vIEZv ciB3aW5kb3cgY2xpZW50cywgaXQgaXMgbmVjZXNzYXJ5IHRvIHdhaXQgdW50aWwgdGhlIG5hdmln YXRpb24KLSAgICAgICAgICAgICAvLyBoYXMgY29tbWl0dGVkIHRvIGEgUmVuZGVyRnJhbWVIb3N0 LgotQEAgLTQ4Nyw3ICs0ODcsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZUFk ZGVkKAotICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNsaWVudChzZXJ2aWNlX3dv cmtlcl9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFy ZWRfd29ya2VyX3Rva2VuKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgIH0pLAotKyAgICAg ICAgICB9fSwKLSAgICAgICBjbGllbnRfaW5mbyk7Ci0gfQotIAotQEAgLTUyNyw3ICs1MjcsNyBA QCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCi0gICAgIHJldHVybjsK LSAKLSAgIGFic2w6OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFz ZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2JhbFJlbmRl ckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAgUmVtb3Zl RnJhbWVDbGllbnRDb25uZWN0aW9uKHdvcmtlcl9ub2RlLCByZW5kZXJfZnJhbWVfaG9zdF9pZCk7 Ci0gICAgICAgICAgIH0sCi1AQCAtNTM3LDcgKzUzNyw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6 T25Db250cm9sbGVlUmVtb3ZlZCgKLSAgICAgICAgICAgfSwKLSAgICAgICAgICAgWyYsIHRoaXNd KGJsaW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAg ICAgICAgRGlzY29ubmVjdFNoYXJlZFdvcmtlckNsaWVudCh3b3JrZXJfbm9kZSwgc2hhcmVkX3dv cmtlcl90b2tlbik7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwKLSAgICAgICBjbGll bnQpOwotIH0KLSAKLUBAIC04MTMsNyArODEzLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25u ZWN0QWxsU2VydmljZVdvcgotIAotICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0LT5zZWNvbmQp IHsKLSAgICAgYWJzbDo6dmlzaXQoCi0tICAgICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAg ICAgYmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgICBbJiwgdGhpc10oY29udGVudDo6R2xv YmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAg ICAgIEFkZEZyYW1lQ2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9ub2RlLAotICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9mcmFtZV9ob3N0X2lkKTsK LUBAIC04MjUsNyArODI1LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25uZWN0QWxsU2Vydmlj ZVdvcgotICAgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4gc2hh cmVkX3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNs aWVudChzZXJ2aWNlX3dvcmtlcl9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAgICB9KSwKLSsgICAg ICAgICAgICB9fSwKLSAgICAgICAgIGt2LnNlY29uZCk7Ci0gICB9Ci0gfQotQEAgLTg0MCw3ICs4 NDAsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2aWNlCi0gCi0gICBm b3IgKGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29uZCkgewotICAgICBhYnNsOjp2aXNpdCgKLS0g ICAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAg ICAgICAgICAgIFsmLCB0aGlzXSgKLSAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudDo6R2xv YmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAg ICAgICBSZW1vdmVGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3JrZXJfbm9kZSwKLUBA IC04NTQsNyArODU0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25uZWN0QWxsU2Vydmlj ZQotICAgICAgICAgICAgIFsmLCB0aGlzXShjb25zdCBibGluazo6U2hhcmVkV29ya2VyVG9rZW4m IHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICAgIERpc2Nvbm5lY3RTaGFyZWRX b3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7Ci0tICAgICAgICAgICAg fSksCi0rICAgICAgICAgICAgfX0sCi0gICAgICAgICBrdi5zZWNvbmQpOwotICAgfQotIH0KLWRp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNw bGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2Mubm9fbWF0Y2hp bmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Zpei9zZXJ2 aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5 X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9lbWJlZGRl ci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTgu NzE2NjUwNTcyICswMjAwCi1AQCAtMTcyMCw3ICsxNzIwLDcgQEAgdm9pZCBTa2lhT3V0cHV0U3Vy ZmFjZUltcGxPbkdwdTo6Q29weU91dAotIAotICAgICAgIC8vIElzc3VlIHJlYWRiYWNrcyBmcm9t IHRoZSBzdXJmYWNlczoKLSAgICAgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IENvcHlPdXRwdXRS ZXN1bHQ6OmtOVjEyTWF4UGxhbmVzOyArK2kpIHsKLS0gICAgICAgIFNrSVNpemUgc2l6ZShwbGFu ZV9zdXJmYWNlc1tpXS0+d2lkdGgoKSwgcGxhbmVfc3VyZmFjZXNbaV0tPmhlaWdodCgpKTsKLSsg ICAgICAgIFNrSVNpemUgc2l6ZXtwbGFuZV9zdXJmYWNlc1tpXS0+d2lkdGgoKSwgcGxhbmVfc3Vy ZmFjZXNbaV0tPmhlaWdodCgpfTsKLSAgICAgICAgIFNrSW1hZ2VJbmZvIGRzdF9pbmZvID0gU2tJ bWFnZUluZm86Ok1ha2UoCi0gICAgICAgICAgICAgc2l6ZSwgKGkgPT0gMCkgPyBrQWxwaGFfOF9T a0NvbG9yVHlwZSA6IGtSOEc4X3Vub3JtX1NrQ29sb3JUeXBlLAotICAgICAgICAgICAgIGtVbnBy ZW11bF9Ta0FscGhhVHlwZSk7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBv bmVudHMvd2ViX3BhY2thZ2Uvc2lnbmVkX3dlYl9idW5kbGVzL3NpZ25lZF93ZWJfYnVuZGxlX3Np Z25hdHVyZV92ZXJpZmllci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL2NvbXBvbmVudHMvd2ViX3BhY2thZ2Uvc2lnbmVkX3dlYl9idW5kbGVzL3NpZ25l ZF93ZWJfYnVuZGxlX3NpZ25hdHVyZV92ZXJpZmllci5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY29tcG9uZW50cy93ZWJfcGFja2FnZS9zaWduZWRfd2ViX2J1bmRsZXMvc2lnbmVkX3dl Yl9idW5kbGVfc2lnbmF0dXJlX3ZlcmlmaWVyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMTcgMTc6MTg6NDcuODQxNDc5Njk3ICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jb21wb25lbnRzL3dlYl9wYWNrYWdlL3NpZ25lZF93ZWJfYnVuZGxlcy9zaWduZWRfd2Vi X2J1bmRsZV9zaWduYXR1cmVfdmVyaWZpZXIuY2MJMjAyNC0wNS0xNyAxODoyMzo0MS42NzkwNTQ3 ODUgKzAyMDAKLUBAIC0xODEsOSArMTgxLDkgQEAgdm9pZCBTaWduZWRXZWJCdW5kbGVTaWduYXR1 cmVWZXJpZmllcjo6TwotICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL1dJQ0cvd2VicGFja2FnZS9i bG9iLzNmOTVlYzM2NWI4N2VkMTlkMmNiNTE4NmU0NzNjY2M0ZDAxMWUyYWYvZXhwbGFpbmVycy9p bnRlZ3JpdHktc2lnbmF0dXJlLm1kCi0gICBzdGQ6OnZlY3Rvcjx1aW50OF90PiBwYXlsb2FkX3Rv X3ZlcmlmeSA9IENyZWF0ZVNpZ25hdHVyZVBheWxvYWQoewotICAgICAgIC51bnNpZ25lZF93ZWJf YnVuZGxlX2hhc2ggPSBhYnNsOjp2aXNpdCgKLS0gICAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZChb XShjb25zdCBhdXRvJiBkaWdlc3QpIC0+IGJhc2U6OnNwYW48Y29uc3QgdWludDhfdD4gewotKyAg ICAgICAgICBiYXNlOjpPdmVybG9hZGVke1tdKGNvbnN0IGF1dG8mIGRpZ2VzdCkgLT4gYmFzZTo6 c3Bhbjxjb25zdCB1aW50OF90PiB7Ci0gICAgICAgICAgICAgcmV0dXJuIGRpZ2VzdDsKLS0gICAg ICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgICAgICAqdW5zaWduZWRfd2ViX2J1bmRs ZV9oYXNoKSwKLSAgICAgICAuaW50ZWdyaXR5X2Jsb2NrX2Nib3IgPSBDcmVhdGVJbnRlZ3JpdHlC bG9ja0NCT1IoKSwKLSAgICAgICAuYXR0cmlidXRlc19jYm9yID0gc2lnbmF0dXJlX3N0YWNrX2Vu dHJ5LmF0dHJpYnV0ZXNfY2JvcigpLAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j b250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3Nh dmVfcGFja2FnZS5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2Vy L2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1 LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv Y29udGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYwkyMDI0LTA1LTE3IDEyOjMz OjU4LjcxNzY1MDU5MiArMDIwMAotQEAgLTgwMiw4ICs4MDIsOCBAQCB2b2lkIFNhdmVQYWNrYWdl OjpGaW5pc2goKSB7Ci0gICBpZiAoZG93bmxvYWRfKSB7Ci0gICAgIHN0ZDo6dmVjdG9yPGRvd25s b2FkOjpEb3dubG9hZFNhdmVJdGVtRGF0YTo6SXRlbUluZm8+IGZpbGVzOwotICAgICBmb3IgKGF1 dG8mIGl0ZW0gOiBzYXZlZF9zdWNjZXNzX2l0ZW1zXykgewotLSAgICAgIGZpbGVzLmVtcGxhY2Vf YmFjayhpdGVtLnNlY29uZC0+ZnVsbF9wYXRoKCksIGl0ZW0uc2Vjb25kLT51cmwoKSwKLS0gICAg ICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWNvbmQtPnJlZmVycmVyKCkudXJsKTsKLSsgICAg ICBmaWxlcy5lbXBsYWNlX2JhY2soKSA9IHtpdGVtLnNlY29uZC0+ZnVsbF9wYXRoKCksIGl0ZW0u c2Vjb25kLT51cmwoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWNvbmQtPnJl ZmVycmVyKCkudXJsfTsKLSAgICAgfQotICAgICBkb3dubG9hZDo6RG93bmxvYWRTYXZlSXRlbURh dGE6OkF0dGFjaEl0ZW1EYXRhKGRvd25sb2FkXywgc3RkOjptb3ZlKGZpbGVzKSk7Ci0gICB9Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJh bWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2ZyYW1l X2NvbmZpZy5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2Zl bmNlZF9mcmFtZS9mZW5jZWRfZnJhbWVfY29uZmlnLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDUtMTUgMjM6NDY6MTcuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9jb25maWcu Y2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTc2NTA1OTIgKzAyMDAKLUBAIC00MDcsNyArNDA3LDcg QEAgdm9pZCBGZW5jZWRGcmFtZVByb3BlcnRpZXM6OlVwZGF0ZVBhcmVudAotICAgICAgICAgZmVh dHVyZSwgYWxsb3dfbGlzdC5BbGxvd2VkT3JpZ2lucygpLCBhbGxvd19saXN0LlNlbGZJZk1hdGNo ZXMoKSwKLSAgICAgICAgIGFsbG93X2xpc3QuTWF0Y2hlc0FsbCgpLCBhbGxvd19saXN0Lk1hdGNo ZXNPcGFxdWVTcmMoKSk7Ci0gICB9Ci0tICBwYXJlbnRfcGVybWlzc2lvbnNfaW5mb18uZW1wbGFj ZShwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9vcmlnaW4pOwotKyAgcGFyZW50X3Blcm1pc3Npb25z X2luZm9fLmVtcGxhY2UoKSA9IHtwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9vcmlnaW59OwotIH0K LSAKLSB9ICAvLyBuYW1lc3BhY2UgY29udGVudAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRfcGFy c2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29u dGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3Nl dHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0 LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNl ci5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxODY1MDYxNCArMDIwMAotQEAgLTc3NCw3ICs3NzQs NyBAQCBGaXJzdFBhcnR5U2V0UGFyc2VyOjpQYXJzZVNldHNGcm9tRW50ZXJwCi0gICAgICAgICAg ICAgICAgICAgICAgY29udGV4dC5HZXRQb2xpY3lTZXRzRnJvbUxpc3QoCi0gICAgICAgICAgICAg ICAgICAgICAgICAgIHBvbGljeS5GaW5kTGlzdChrRmlyc3RQYXJ0eVNldFBvbGljeUFkZGl0aW9u c0ZpZWxkKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgUG9saWN5U2V0VHlwZTo6a0FkZGl0 aW9uKSk7Ci0tICAgIHJldHVybiBQYXJzZWRQb2xpY3lTZXRMaXN0cyhzdGQ6Om1vdmUocmVwbGFj ZW1lbnRzKSwgc3RkOjptb3ZlKGFkZGl0aW9ucykpOwotKyAgICByZXR1cm4gUGFyc2VkUG9saWN5 U2V0TGlzdHN7c3RkOjptb3ZlKHJlcGxhY2VtZW50cyksIHN0ZDo6bW92ZShhZGRpdGlvbnMpfTsK LSAgIH0oKTsKLSAKLSAgIGNvbnRleHQuUG9zdFByb2Nlc3NTZXRMaXN0cyhzZXRfbGlzdHMpOwot ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZ3B1L2NvbXBv c2l0b3JfdXRpbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbnRlbnQvYnJvd3Nlci9ncHUvY29tcG9zaXRvcl91dGlsLmNjCi0tLS0gY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZ3B1L2NvbXBvc2l0b3JfdXRpbC5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCArMDIwMAot KysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2dwdS9jb21wb3NpdG9y X3V0aWwuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MTg2NTA2MTQgKzAyMDAKLUBAIC0xMDgsNyAr MTA4LDcgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1cgotICAgICAg ICpiYXNlOjpDb21tYW5kTGluZTo6Rm9yQ3VycmVudFByb2Nlc3MoKTsKLSAKLSAgIHN0ZDo6dmVj dG9yPEdwdUZlYXR1cmVEYXRhPiBmZWF0dXJlczsKLS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygK LSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICIyZF9jYW52YXMiLAotICAg ICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAotICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBn cHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfMkRfQ0FOVkFTLAotQEAgLTExNiwxMyAr MTE2LDEzIEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKLSAgICAg ICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKLSAgICAgICAgICAgIkFjY2VsZXJhdGVkIDJEIGNhbnZh cyBpcyB1bmF2YWlsYWJsZTogZWl0aGVyIGRpc2FibGVkICIKLSAgICAgICAgICAgInZpYSBibG9j a2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKLS0gICAgICB0cnVlKTsKLS0gIGZlYXR1cmVz LmVtcGxhY2VfYmFjaygKLSsgICAgICB0cnVlfTsKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygp ID0gewotICAgICAgICJjYW52YXNfb29wX3Jhc3Rlcml6YXRpb24iLAotICAgICAgIFNhZmVHZXRG ZWF0dXJlU3RhdHVzKAotICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFU VVJFX1RZUEVfQ0FOVkFTX09PUF9SQVNURVJJWkFUSU9OLAotLSAgICAgICAgICBjb21tYW5kX2xp bmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJsZUFjY2VsZXJhdGVkMmRDYW52YXMpKSk7Ci0t ICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICAgICAgICAgIGNvbW1hbmRfbGluZS5IYXNTd2l0 Y2goc3dpdGNoZXM6OmtEaXNhYmxlQWNjZWxlcmF0ZWQyZENhbnZhcykpfTsKLSsgIGZlYXR1cmVz LmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICJncHVfY29tcG9zaXRpbmciLAotICAgICAgIC8v IFRPRE8ocml2cik6IFJlcGxhY2Ugd2l0aCBhIGNoZWNrIHRvIHNlZSB3aGljaCBiYWNrZW5kIGlz IHVzZWQgZm9yCi0gICAgICAgLy8gY29tcG9zaXRpbmc7IGRvIHRoZSBzYW1lIGZvciBHUFUgcmFz dGVyaXphdGlvbiBpZiBpdCdzIGVuYWJsZWQuIEZvcgotQEAgLTEzNiwxNiArMTM2LDE2IEBAIHN0 ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKLSAgICAgICAgICAgImFib3V0 OmZsYWdzICIKLSAgICAgICAgICAgIm9yIHRoZSBjb21tYW5kIGxpbmUuIFRoZSBicm93c2VyIHdp bGwgZmFsbCBiYWNrIHRvIHNvZnR3YXJlICIKLSAgICAgICAgICAgImNvbXBvc2l0aW5nIGFuZCBo YXJkd2FyZSBhY2NlbGVyYXRpb24gd2lsbCBiZSB1bmF2YWlsYWJsZS4iKSwKLS0gICAgICB0cnVl KTsKLS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKLSsgICAgICB0cnVlfTsKLSsgIGZlYXR1cmVz LmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICJ3ZWJnbCIsCi0gICAgICAgU2FmZUdldEZlYXR1 cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBn cHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfV0VCR0wsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgY29tbWFuZF9saW5lLkhhc1N3aXRjaChzd2l0Y2hlczo6a0Rpc2FibGVXZWJH TCkpLAotICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAotICAgICAgICAgICAiV2ViR0wgaGFz IGJlZW4gZGlzYWJsZWQgdmlhIGJsb2NrbGlzdCBvciB0aGUgY29tbWFuZCBsaW5lLiIpLAotLSAg ICAgIGZhbHNlKTsKLS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKLSsgICAgICBmYWxzZX07Ci0r ICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAidmlkZW9fZGVjb2RlIiwKLSAg ICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKLSAgICAgICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywg Z3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1ZJREVPX0RFQ09ERSwKLUBAIC0xNTYs OCArMTU2LDggQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1cgotICAg ICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAotICAgICAgICAgICAiQWNjZWxlcmF0ZWQgdmlkZW8g ZGVjb2RlIGhhcyBiZWVuIGRpc2FibGVkLCBlaXRoZXIgdmlhIGJsb2NrbGlzdCwgIgotICAgICAg ICAgICAiYWJvdXQ6ZmxhZ3Mgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKLS0gICAgICB0cnVlKTsK LS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKLSsgICAgICB0cnVlfTsKLSsgIGZlYXR1cmVzLmVt cGxhY2VfYmFjaygpID0gewotICAgICAgICJ2aWRlb19lbmNvZGUiLAotICAgICAgIFNhZmVHZXRG ZWF0dXJlU3RhdHVzKAotICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFU VVJFX1RZUEVfQUNDRUxFUkFURURfVklERU9fRU5DT0RFLAotQEAgLTE2OSwzMyArMTY5LDMzIEBA IHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKLSAgICAgICBEaXNhYmxl SW5mbzo6UHJvYmxlbSgKLSAgICAgICAgICAgIkFjY2VsZXJhdGVkIHZpZGVvIGVuY29kZSBoYXMg YmVlbiBkaXNhYmxlZCwgZWl0aGVyIHZpYSBibG9ja2xpc3QsICIKLSAgICAgICAgICAgImFib3V0 OmZsYWdzIG9yIHRoZSBjb21tYW5kIGxpbmUuIiksCi0tICAgICAgdHJ1ZSk7Ci0tICBmZWF0dXJl cy5lbXBsYWNlX2JhY2soCi0rICAgICAgdHJ1ZX07Ci0rICBmZWF0dXJlcy5lbXBsYWNlX2JhY2so KSA9IHsKLSAgICAgICAicmFzdGVyaXphdGlvbiIsCi0gICAgICAgU2FmZUdldEZlYXR1cmVTdGF0 dXMoZ3B1X2ZlYXR1cmVfaW5mbywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHU6OkdQ VV9GRUFUVVJFX1RZUEVfR1BVX1RJTEVfUkFTVEVSSVpBVElPTiksCi0gICAgICAgRGlzYWJsZUlu Zm86OlByb2JsZW0oCi0gICAgICAgICAgICJBY2NlbGVyYXRlZCByYXN0ZXJpemF0aW9uIGhhcyBi ZWVuIGRpc2FibGVkLCBlaXRoZXIgdmlhIGJsb2NrbGlzdCwgIgotICAgICAgICAgICAiYWJvdXQ6 ZmxhZ3Mgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKLS0gICAgICB0cnVlKTsKLS0gIGZlYXR1cmVz LmVtcGxhY2VfYmFjaygKLSsgICAgICB0cnVlfTsKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygp ID0gewotICAgICAgICJvcGVuZ2wiLCBTYWZlR2V0RmVhdHVyZVN0YXR1cyhncHVfZmVhdHVyZV9p bmZvLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHU6OkdQVV9GRUFU VVJFX1RZUEVfQUNDRUxFUkFURURfR0wpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX0dMKX07Ci0gI2lmIEJV SUxERkxBRyhFTkFCTEVfVlVMS0FOKQotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAotKyAgZmVh dHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgInZ1bGthbiIsCi0tICAgICAgU2FmZUdl dEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1ZV TEtBTikpOwotKyAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sIGdw dTo6R1BVX0ZFQVRVUkVfVFlQRV9WVUxLQU4pfTsKLSAjZW5kaWYKLS0gIGZlYXR1cmVzLmVtcGxh Y2VfYmFjaygKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICJtdWx0aXBs ZV9yYXN0ZXJfdGhyZWFkcyIsCi0tICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoTnVtYmVyT2ZS ZW5kZXJlclJhc3RlclRocmVhZHMoKSA+IDEpKTsKLSsgICAgICBHZXRGYWtlRmVhdHVyZVN0YXR1 cyhOdW1iZXJPZlJlbmRlcmVyUmFzdGVyVGhyZWFkcygpID4gMSl9OwotICNpZiBCVUlMREZMQUco SVNfQU5EUk9JRCkKLS0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKLSsgIGZlYXR1cmVzLmVtcGxh Y2VfYmFjaygpID0gewotICAgICAgICJzdXJmYWNlX2NvbnRyb2wiLAotICAgICAgIFNhZmVHZXRG ZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sCi0tICAgICAgICAgICAgICAgICAgICAgICAg ICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FORFJPSURfU1VSRkFDRV9DT05UUk9MKSk7Ci0rICAg ICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FORFJPSURfU1VS RkFDRV9DT05UUk9MKX07Ci0gI2VuZGlmCi0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICBm ZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAid2ViZ2wyIiwKLSAgICAgICBTYWZl R2V0RmVhdHVyZVN0YXR1cygKLSAgICAgICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVf RkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1dFQkdMMiwKLUBAIC0yMDMsMTIgKzIwMywxMiBAQCBz dGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4gR2V0R3B1RmVhdHVyCi0gICAgICAgICAgICAgICBj b21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlzYWJsZVdlYkdMMikpLAotICAgICAg IERpc2FibGVJbmZvOjpQcm9ibGVtKAotICAgICAgICAgICAiV2ViR0wyIGhhcyBiZWVuIGRpc2Fi bGVkIHZpYSBibG9ja2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4iKSwKLS0gICAgICBmYWxzZSk7 Ci0tICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soInJhd19kcmF3IiwKLS0gICAgICAgICAgICAgICAg ICAgICAgICBHZXRGYWtlRmVhdHVyZVN0YXR1cyhmZWF0dXJlczo6SXNVc2luZ1Jhd0RyYXcoKSkp OwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCJkaXJlY3RfcmVuZGVyaW5nX2Rpc3BsYXlfY29t cG9zaXRvciIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMo ZmVhdHVyZXM6OklzRHJEY0VuYWJsZWQoKSkpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAot KyAgICAgIGZhbHNlfTsKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geyJyYXdfZHJhdyIs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVhdHVyZXM6 OklzVXNpbmdSYXdEcmF3KCkpfTsKLSsgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geyJkaXJl Y3RfcmVuZGVyaW5nX2Rpc3BsYXlfY29tcG9zaXRvciIsCi0rICAgICAgICAgICAgICAgICAgICAg ICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVhdHVyZXM6OklzRHJEY0VuYWJsZWQoKSl9OwotKyAg ZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgIndlYmdwdSIsCi0gICAgICAgU2Fm ZUdldEZlYXR1cmVTdGF0dXMoCi0gICAgICAgICAgIGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BV X0ZFQVRVUkVfVFlQRV9BQ0NFTEVSQVRFRF9XRUJHUFUsCi1AQCAtMjE2LDE0ICsyMTYsMTQgQEAg c3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1cgotICAgICAgICAgICAgICAg IWJhc2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJsZWQoOjpmZWF0dXJlczo6a1dlYkdQVVNlcnZpY2Up KSwKLSAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKLSAgICAgICAgICAgIldlYkdQVSBoYXMg YmVlbiBkaXNhYmxlZCB2aWEgYmxvY2tsaXN0IG9yIHRoZSBjb21tYW5kIGxpbmUuIiksCi0tICAg ICAgZmFsc2UpOwotLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAotKyAgICAgIGZhbHNlfTsKLSsg IGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgICJza2lhX2dyYXBoaXRlIiwKLSAg ICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cyhncHVfZmVhdHVyZV9pbmZvLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9TS0lBX0dSQVBISVRFKSk7Ci0t ICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1 OjpHUFVfRkVBVFVSRV9UWVBFX1NLSUFfR1JBUEhJVEUpfTsKLSsgIGZlYXR1cmVzLmVtcGxhY2Vf YmFjaygpID0gewotICAgICAgICJ3ZWJubiIsCi0tICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMo Z3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1dFQk5OKSk7Ci0rICAgICAg U2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9U WVBFX1dFQk5OKX07Ci0gICByZXR1cm4gZmVhdHVyZXM7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2Rp cmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2Rp cmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3Np Z25hbHMuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAw MDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2lu dGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5oCTIwMjQtMDUt MTcgMTI6MzM6NTguNzE4NjUwNjE0ICswMjAwCi1AQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNzIENP TlRFTlRfRVhQT1JUIEhlYWRlckRpcmVjdEZyb21TZWwKLSAKLSAgICAgLy8gVGhlIEFkLUF1Y3Rp b24tU2lnbmFscyByZXNwb25zZSBzZXJ2ZWQgYnkgYG9yaWdpbmAuCi0gICAgIHN0ZDo6c3RyaW5n IHJlc3BvbnNlX2pzb247Ci0rICAgIFVucHJvY2Vzc2VkUmVzcG9uc2UoYXV0byB1LCBhdXRvIHMp IDogb3JpZ2luKHUpLCByZXNwb25zZV9qc29uKHMpIHsgfQotICAgfTsKLSAKLSAgIC8vIEluZm9y bWF0aW9uIGZyb20gUGFyc2VBbmRGaW5kKCkgY2FsbHMgdXNlZCBieSBQYXJzZUFuZEZpbmRDb21w bGV0ZWQuCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9p bnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dy b3VwL2ludGVyZXN0X2dyb3VwX2F1Y3Rpb24uY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNj Lm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MTcuMDAwMDAwMDAwICsw MjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3Rf Z3JvdXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcxOTY1 MDYzNCArMDIwMAotQEAgLTYwMCw3ICs2MDAsNyBAQCBib29sIFNhbXBsZURlYnVnUmVwb3J0KAot ICAgICAgICBibGluazo6ZmVhdHVyZXM6OmtGbGVkZ2VEZWJ1Z1JlcG9ydFJlc3RyaWN0ZWRDb29s ZG93bi5HZXQoKSAhPQotICAgICAgICAgICAgYmFzZTo6TWlsbGlzZWNvbmRzKDApKSkgewotICAg ICBuZXdfZGVidWdfcmVwb3J0X2xvY2tvdXRfYW5kX2Nvb2xkb3ducy5kZWJ1Z19yZXBvcnRfY29v bGRvd25fbWFwW29yaWdpbl0gPQotLSAgICAgICAgRGVidWdSZXBvcnRDb29sZG93bihub3dfbmVh cmVzdF9uZXh0X2hvdXIsIGNvb2xkb3duX3R5cGUpOwotKyAgICAgICAgRGVidWdSZXBvcnRDb29s ZG93bntub3dfbmVhcmVzdF9uZXh0X2hvdXIsIGNvb2xkb3duX3R5cGV9OwotICAgfQotIAotICAg cmV0dXJuIGNhbl9zZW5kX2RlYnVnX3JlcG9ydDsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3Jh Z2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250 ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYwotLS0t IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2lu dGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0x NSAyMzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCTIw MjQtMDUtMTcgMTI6MzM6NTguNzIxNjUwNjc2ICswMjAwCi1AQCAtMzQxMiw5ICszNDEyLDkgQEAg c3RkOjpvcHRpb25hbDxEZWJ1Z1JlcG9ydENvb2xkb3duPiBEb0dldAotICAgICByZXR1cm4gc3Rk OjpudWxsb3B0OwotICAgfQotIAotLSAgcmV0dXJuIERlYnVnUmVwb3J0Q29vbGRvd24oY29vbGRv d25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNvbHVtblRpbWUoMCksCi0rICByZXR1cm4gRGVidWdS ZXBvcnRDb29sZG93bntjb29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uVGltZSgw KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PERlYnVnUmVwb3J0 Q29vbGRvd25UeXBlPigKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb29sZG93 bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uSW50KDEpKSk7Ci0rICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29vbGRvd25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNvbHVtbklu dCgxKSl9OwotIH0KLSAKLSB2b2lkIERvR2V0RGVidWdSZXBvcnRDb29sZG93bnMoCi1AQCAtMzU0 MiwxMCArMzU0MiwxMCBAQCBEb0dldEtBbm9ueW1pdHlEYXRhKHNxbDo6RGF0YWJhc2UmIGRiLAot IAotICAgc3RkOjp2ZWN0b3I8U3RvcmFnZUludGVyZXN0R3JvdXA6OktBbm9ueW1pdHlEYXRhPiBr X2Fub25fZGF0YTsKLSAgIHdoaWxlIChpbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5TdGVwKCkp IHsKLS0gICAga19hbm9uX2RhdGEuZW1wbGFjZV9iYWNrKAotKyAgICBrX2Fub25fZGF0YS5lbXBs YWNlX2JhY2soKSA9IHsKLSAgICAgICAgIC8qa2V5PSovaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVl cnkuQ29sdW1uU3RyaW5nKDApLAotICAgICAgICAgLyppc19rX2Fub255bW91cz0qL2ludGVyZXN0 X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtbkJvb2woMSksCi0tICAgICAgICAvKmxhc3RfdXBkYXRl ZD0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblRpbWUoMikpOwotKyAgICAgICAg LypsYXN0X3VwZGF0ZWQ9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5UaW1lKDIp fTsKLSAgIH0KLSAgIGlmICghaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3VjY2VlZGVkKCkp IHsKLSAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLUBAIC00MzM4LDcgKzQzMzgsNyBAQCBEb0dl dEJpZGRpbmdBbmRBdWN0aW9uU2VydmVyS2V5cyhzcWw6OkRhCi0gICAgIHN0ZDo6dmVjdG9yPEJp ZGRpbmdBbmRBdWN0aW9uU2VydmVyS2V5PiBrZXlzOwotICAgICBrZXlzLnJlc2VydmUoa2V5X3By b3Rvcy5rZXlzX3NpemUoKSk7Ci0gICAgIGZvciAoYXV0byYga2V5X3Byb3RvIDogKmtleV9wcm90 b3MubXV0YWJsZV9rZXlzKCkpIHsKLS0gICAgICBrZXlzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUo KmtleV9wcm90by5tdXRhYmxlX2tleSgpKSwga2V5X3Byb3RvLmlkKCkpOwotKyAgICAgIGtleXMu ZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKCprZXlfcHJvdG8ubXV0YWJsZV9rZXkoKSksIGtl eV9wcm90by5pZCgpfTsKLSAgICAgfQotICAgICByZXR1cm4ge2V4cGlyYXRpb24sIGtleXN9Owot ICAgfQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvcmVu ZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3Qv cmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29u dGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE3LjAwMDAwMDAwMCArMDIwMAot KysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3Qv cmVuZGVyX2ZyYW1lX2hvc3RfaW1wbC5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4LjcyMzY1MDcxNyAr MDIwMAotQEAgLTg3OTYsNyArODc5Niw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2Vu ZEZlbmNlZEZyYW0KLSAgIGZvciAoY29uc3QgYmxpbms6OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdE ZXN0aW5hdGlvbiYgZGVzdGluYXRpb24gOgotICAgICAgICBkZXN0aW5hdGlvbnMpIHsKLSAgICAg U2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICBEZXN0aW5h dGlvbkVudW1FdmVudChldmVudF90eXBlLCBldmVudF9kYXRhLCBjcm9zc19vcmlnaW5fZXhwb3Nl ZCksCi0rICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVudHtldmVudF90eXBlLCBldmVudF9kYXRh LCBjcm9zc19vcmlnaW5fZXhwb3NlZH0sCi0gICAgICAgICBkZXN0aW5hdGlvbik7Ci0gICB9Ci0g fQotQEAgLTg4MjcsNyArODgyNyw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZl bmNlZEZyYW0KLSAgIH0KLSAKLSAgIFNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVy bmFsKAotLSAgICAgIERlc3RpbmF0aW9uVVJMRXZlbnQoZGVzdGluYXRpb25fdXJsLCBjcm9zc19v cmlnaW5fZXhwb3NlZCksCi0rICAgICAgRGVzdGluYXRpb25VUkxFdmVudHtkZXN0aW5hdGlvbl91 cmwsIGNyb3NzX29yaWdpbl9leHBvc2VkfSwKLSAgICAgICBibGluazo6RmVuY2VkRnJhbWU6OlJl cG9ydGluZ0Rlc3RpbmF0aW9uOjprQnV5ZXIpOwotIH0KLSAKLUBAIC04OTU4LDcgKzg5NTgsNyBA QCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6Ok1heWJlU2VuZEZlbmNlCi0gICAgICAgICBkYXRh ID0gaW5mby0+ZGF0YTsKLSAgICAgICB9Ci0gICAgICAgaW5pdGlhdG9yX3JmaC0+U2VuZEZlbmNl ZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICAgIEF1dG9tYXRpY0JlYWNv bkV2ZW50KGV2ZW50X3R5cGUsIGRhdGEpLCBkZXN0aW5hdGlvbiwKLSsgICAgICAgICAgQXV0b21h dGljQmVhY29uRXZlbnR7ZXZlbnRfdHlwZSwgZGF0YX0sIGRlc3RpbmF0aW9uLAotICAgICAgICAg ICBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOwotICAgICB9Ci0gICB9IGVs c2UgewotQEAgLTg5NjksNyArODk2OSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6TWF5 YmVTZW5kRmVuY2UKLSAgICAgZm9yIChibGluazo6RmVuY2VkRnJhbWU6OlJlcG9ydGluZ0Rlc3Rp bmF0aW9uIGRlc3RpbmF0aW9uIDoKLSAgICAgICAgICBpbmZvLT5kZXN0aW5hdGlvbnMpIHsKLSAg ICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFjb25JbnRlcm5h bCgKLS0gICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnQoZXZlbnRfdHlwZSwgaW5mby0+ZGF0 YSksIGRlc3RpbmF0aW9uLAotKyAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudHtldmVudF90 eXBlLCBpbmZvLT5kYXRhfSwgZGVzdGluYXRpb24sCi0gICAgICAgICAgIG5hdmlnYXRpb25fcmVx dWVzdC5HZXROYXZpZ2F0aW9uSWQoKSk7Ci0gICAgIH0KLSAgIH0KLWRpZmYgLXVwIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29y a2VyX2NvbnRhaW5lcl9ob3N0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2Vy X2NvbnRhaW5lcl9ob3N0LmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jy b3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NjoxOC4wMDAwMDAwMDAgKzAyMDAK LSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtl ci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYwkyMDI0LTA1LTE3IDEyOjMzOjU4Ljcy NDY1MDczOCArMDIwMAotQEAgLTk0Nyw3ICs5NDcsNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVy SG9zdDo6R2V0Q2xpZW50VHlwCi0gICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNFKHNl cXVlbmNlX2NoZWNrZXJfKTsKLSAgIERDSEVDSyhjbGllbnRfaW5mb18pOwotICAgcmV0dXJuIGFi c2w6OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFzZTo6T3Zlcmxv YWRlZHsKLSAgICAgICAgICAgW10oR2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1l X2hvc3RfaWQpIHsKLSAgICAgICAgICAgICByZXR1cm4gYmxpbms6Om1vam9tOjpTZXJ2aWNlV29y a2VyQ2xpZW50VHlwZTo6a1dpbmRvdzsKLSAgICAgICAgICAgfSwKLUBAIC05NTYsNyArOTU2LDcg QEAgU2VydmljZVdvcmtlckNvbnRhaW5lckhvc3Q6OkdldENsaWVudFR5cAotICAgICAgICAgICB9 LAotICAgICAgICAgICBbXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4gc2hhcmVkX3dvcmtlcl90 b2tlbikgewotICAgICAgICAgICAgIHJldHVybiBibGluazo6bW9qb206OlNlcnZpY2VXb3JrZXJD bGllbnRUeXBlOjprU2hhcmVkV29ya2VyOwotLSAgICAgICAgICB9KSwKLSsgICAgICAgICAgfX0s Ci0gICAgICAgKmNsaWVudF9pbmZvXyk7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFp bl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3Ig Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2Vy dmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MKLS0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNl X3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYy5ub19tYXRjaGluZ19j b25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjE4LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vf d29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCTIwMjQtMDUtMTcgMTI6 MzM6NTguNzI0NjUwNzM4ICswMjAwCi1AQCAtMzY3LDEwICszNjcsMTAgQEAgU2VydmljZVdvcmtl ck1haW5SZXNvdXJjZUxvYWRlckludGVyY2VwdAotICAgfQotICAgYXV0byogc3RvcmFnZV9wYXJ0 aXRpb24gPSBwcm9jZXNzLT5HZXRTdG9yYWdlUGFydGl0aW9uKCk7Ci0gCi0tICByZXR1cm4gYWJz bDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZChbJiwgdGhpc10oYXV0byB0b2tlbikgewotKyAgcmV0 dXJuIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7WyYsIHRoaXNdKGF1dG8gdG9rZW4pIHsK LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXRTdG9yYWdlS2V5RnJvbVdvcmtlckhv c3Qoc3RvcmFnZV9wYXJ0aXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBvcmlnaW4pOwotLSAgICAgICAgICAgICAg ICAgICAgIH0pLAotKyAgICAgICAgICAgICAgICAgICAgIH19LAotICAgICAgICAgICAgICAgICAg ICAgICp3b3JrZXJfdG9rZW5fKTsKLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbnRlbnQvYnJvd3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jy b3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCi0tLS0gY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtl cl9ob3N0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTUgMjM6NDY6MTguMDAw MDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIv d29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCTIwMjQtMDUtMTcgMTI6MzM6NTgu NzI1NjUwNzU5ICswMjAwCi1AQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRGVkaWNhdGVkV29ya2Vy SG9zdDo6U3RhcnRTY3JpcHRMb2EKLSAgIFJlbmRlckZyYW1lSG9zdEltcGwqIGNyZWF0b3JfcmVu ZGVyX2ZyYW1lX2hvc3QgPSBudWxscHRyOwotICAgRGVkaWNhdGVkV29ya2VySG9zdCogY3JlYXRv cl93b3JrZXIgPSBudWxscHRyOwotIAotLSAgYWJzbDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZCgK LSsgIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgICAgICAgICAgWyZd KGNvbnN0IEdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewot ICAgICAgICAgICAgICAgICAgICAgY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCA9Ci0gICAgICAg ICAgICAgICAgICAgICAgICAgUmVuZGVyRnJhbWVIb3N0SW1wbDo6RnJvbUlEKHJlbmRlcl9mcmFt ZV9ob3N0X2lkKTsKLUBAIC0yNjYsNyArMjY2LDcgQEAgdm9pZCBEZWRpY2F0ZWRXb3JrZXJIb3N0 OjpTdGFydFNjcmlwdExvYQotICAgICAgICAgICAgICAgICAgIFsmXShibGluazo6RGVkaWNhdGVk V29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAgICAgICAg ICAgY3JlYXRvcl93b3JrZXIgPSBzZXJ2aWNlXy0+R2V0RGVkaWNhdGVkV29ya2VySG9zdEZyb21U b2tlbigKLSAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKTsK LS0gICAgICAgICAgICAgICAgICB9KSwKLSsgICAgICAgICAgICAgICAgICB9fSwKLSAgICAgICAg ICAgICAgIGNyZWF0b3JfKTsKLSAKLSAgIGlmICghY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCAm JiAhY3JlYXRvcl93b3JrZXIpIHsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZXh0 ZW5zaW9ucy9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tfcXVldWUu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9leHRlbnNp b25zL2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1ZS5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZpY2Vfd29y a2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tfcXVldWUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJ MjAyNC0wNS0xOCAyMzo0MzoyNS45ODQ3Njc0NTggKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl90 YXNrX3F1ZXVlLmNjCTIwMjQtMDUtMTggMjM6NDc6NDMuOTgxMjU0NzA4ICswMjAwCi1AQCAtMzk2 LDggKzM5Niw4IEBAIGJvb2wgU2VydmljZVdvcmtlclRhc2tRdWV1ZTo6SXNSZWFkeVRvUnUKLSAg ICAgcmV0dXJuIGZhbHNlOwotICAgfQotIAotLSAgY29uc3QgU2VxdWVuY2VkQ29udGV4dElkIGNv bnRleHRfaWQoZXh0ZW5zaW9uLT5pZCgpLCBicm93c2VyX2NvbnRleHRfLAotLSAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFjdGl2YXRpb25fdG9rZW4pOwotKyAgY29uc3Qg U2VxdWVuY2VkQ29udGV4dElkIGNvbnRleHRfaWR7ZXh0ZW5zaW9uLT5pZCgpLCBicm93c2VyX2Nv bnRleHRfLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFjdGl2YXRp b25fdG9rZW59OwotICAgY29uc3QgV29ya2VyU3RhdGUqIHdvcmtlcl9zdGF0ZSA9IEdldFdvcmtl clN0YXRlKGNvbnRleHRfaWQpOwotIAotICAgaWYgKCF3b3JrZXJfc3RhdGUgfHwgIXdvcmtlcl9z dGF0ZS0+d29ya2VyX2lkXykgewotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9ncHUv Y29tbWFuZF9idWZmZXIvY2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuaC5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9jb21tYW5kX2J1ZmZlci9j bGllbnQvc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5oCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42 MC9ncHUvY29tbWFuZF9idWZmZXIvY2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuaC5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjIyLjAwMDAwMDAwMCArMDIwMAot KysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9zaGFy ZWRfaW1hZ2VfaW50ZXJmYWNlLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43MjU2NTA3NTkgKzAyMDAK LUBAIC02NCwxOSArNjQsMTkgQEAgc3RydWN0IFNoYXJlZEltYWdlSW5mbyB7Ci0gICAgICAgICAg ICAgICAgICAgU2tBbHBoYVR5cGUgYWxwaGFfdHlwZSwKLSAgICAgICAgICAgICAgICAgICB1aW50 MzJfdCB1c2FnZSwKLSAgICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ192aWV3IGRlYnVnX2xh YmVsKQotLSAgICAgIDogbWV0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29y aWdpbiwgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgIDogbWV0YXtmb3JtYXQsIHNpemUsIGNv bG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAgICAgICAg ZGVidWdfbGFiZWwoZGVidWdfbGFiZWwpIHt9Ci0gICBTaGFyZWRJbWFnZUluZm8oY29uc3Qgdml6 OjpTaGFyZWRJbWFnZUZvcm1hdCYgZm9ybWF0LAotICAgICAgICAgICAgICAgICAgIGdmeDo6U2l6 ZSBzaXplLAotICAgICAgICAgICAgICAgICAgIGNvbnN0IGdmeDo6Q29sb3JTcGFjZSYgY29sb3Jf c3BhY2UsCi0gICAgICAgICAgICAgICAgICAgdWludDMyX3QgdXNhZ2UsCi0gICAgICAgICAgICAg ICAgICAgc3RkOjpzdHJpbmdfdmlldyBkZWJ1Z19sYWJlbCkKLS0gICAgICA6IG1ldGEoZm9ybWF0 LAotKyAgICAgIDogbWV0YXtmb3JtYXQsCi0gICAgICAgICAgICAgIHNpemUsCi0gICAgICAgICAg ICAgIGNvbG9yX3NwYWNlLAotICAgICAgICAgICAgICBrVG9wTGVmdF9HclN1cmZhY2VPcmlnaW4s Ci0gICAgICAgICAgICAgIGtQcmVtdWxfU2tBbHBoYVR5cGUsCi0tICAgICAgICAgICAgIHVzYWdl KSwKLSsgICAgICAgICAgICAgdXNhZ2V9LAotICAgICAgICAgZGVidWdfbGFiZWwoZGVidWdfbGFi ZWwpIHt9Ci0gICAvLyBUaGlzIGNvbnN0cnVjdG9yIGV4aXN0cyBvbmx5IHRvIHN1cHBvcnQgdGhl IERFUFJFQ0FURUQgQ3JlYXJlU2hhcmVkSW1hZ2UKLSAgIC8vIGNhbGwgYmVsb3cgdGhhdCBhY2Nl cHRzIGEgR3B1TWVtb3J5QnVmZmVyLiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhhdAot ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9ncHUvY29tbWFuZF9idWZmZXIvc2Vydmlj ZS9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nlc3MuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9z aGFyZWRfaW1hZ2VfaW50ZXJmYWNlX2luX3Byb2Nlc3MuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2dwdS9jb21tYW5kX2J1ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZV9pbnRlcmZhY2Vf aW5fcHJvY2Vzcy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjIy LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1L2NvbW1hbmRf YnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlX2ludGVyZmFjZV9pbl9wcm9jZXNzLmNjCTIwMjQt MDUtMTcgMTI6MzM6NTguNzI1NjUwNzU5ICswMjAwCi1AQCAtNjAxLDEyICs2MDEsMTIgQEAgU2hh cmVkSW1hZ2VJbnRlcmZhY2VJblByb2Nlc3M6OkNyZWF0ZVNoYQotIAotICAgcmV0dXJuIGJhc2U6 Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAgICAgICBtYWlsYm94LAotLSAg ICAgIFNoYXJlZEltYWdlTWV0YWRhdGEoCi0rICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YXsKLSAg ICAgICAgICAgdml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAotICAgICAgICAg ICAgICAgR2V0UGxhbmVCdWZmZXJGb3JtYXQocGxhbmUsIGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRG b3JtYXQoKSkpLAotICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLCBzaV9p bmZvLm1ldGEuY29sb3Jfc3BhY2UsCi0gICAgICAgICAgIHNpX2luZm8ubWV0YS5zdXJmYWNlX29y aWdpbiwgc2lfaW5mby5tZXRhLmFscGhhX3R5cGUsCi0tICAgICAgICAgIHNpX2luZm8ubWV0YS51 c2FnZSksCi0rICAgICAgICAgIHNpX2luZm8ubWV0YS51c2FnZX0sCi0gICAgICAgR2VuVW52ZXJp ZmllZFN5bmNUb2tlbigpLCBob2xkZXJfLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0VHlwZSgpKTsK LSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9pcGMvY2xpZW50L2Ns aWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1L2lwYy9jbGllbnQvY2xpZW50X3NoYXJlZF9pbWFnZV9p bnRlcmZhY2UuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9pcGMvY2xpZW50L2Ns aWVudF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMTUgMjM6NDY6MjIuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9ncHUvaXBjL2NsaWVudC9jbGllbnRfc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5jYwkyMDI0 LTA1LTE3IDE1OjE3OjMzLjUyNzU1MjgzNyArMDIwMAotQEAgLTI0NywxMSArMjQ3LDExIEBAIHNj b3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVudFMKLSAgICAgICBBZGRNYWlsYm94 KHByb3h5Xy0+Q3JlYXRlU2hhcmVkSW1hZ2UoCi0gICAgICAgICAgIGJ1ZmZlcl9mb3JtYXQsIHBs YW5lLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLCBzaV9pbmZvLAotICAgICAgICAgICBn cHVfbWVtb3J5X2J1ZmZlci0+Q2xvbmVIYW5kbGUoKSkpLAotLSAgICAgIFNoYXJlZEltYWdlTWV0 YWRhdGEodml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAotKyAgICAgIFNoYXJl ZEltYWdlTWV0YWRhdGF7dml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldFBsYW5lQnVmZmVyRm9ybWF0KHBsYW5lLCBi dWZmZXJfZm9ybWF0KSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBncHVfbWVtb3J5X2J1 ZmZlci0+R2V0U2l6ZSgpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lfaW5mby5tZXRh LmNvbG9yX3NwYWNlLCBzaV9pbmZvLm1ldGEuc3VyZmFjZV9vcmlnaW4sCi0tICAgICAgICAgICAg ICAgICAgICAgICAgICBzaV9pbmZvLm1ldGEuYWxwaGFfdHlwZSwgc2lfaW5mby5tZXRhLnVzYWdl KSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIHNpX2luZm8ubWV0YS5hbHBoYV90eXBlLCBz aV9pbmZvLm1ldGEudXNhZ2V9LAotICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9s ZGVyXywgZ3B1X21lbW9yeV9idWZmZXItPkdldFR5cGUoKSk7Ci0gfQotIAotQEAgLTI4NiwxMyAr Mjg2LDEzIEBAIENsaWVudFNoYXJlZEltYWdlSW50ZXJmYWNlOjpDcmVhdGVTd2FwQ2gKLSAgIHJl dHVybiBDbGllbnRTaGFyZWRJbWFnZUludGVyZmFjZTo6U3dhcENoYWluU2hhcmVkSW1hZ2VzKAot ICAgICAgIGJhc2U6Ok1ha2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKLSAgICAgICAg ICAgbWFpbGJveGVzLmZyb250X2J1ZmZlciwKLS0gICAgICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0 YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhbHBoYV90eXBlLCB1c2FnZSksCi0rICAgICAgICAgIFNoYXJl ZEltYWdlTWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4s Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAotICAg ICAgICAgICBzeW5jX3Rva2VuLCBob2xkZXJfLCBnZng6OkVNUFRZX0JVRkZFUiksCi0gICAgICAg YmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAotICAgICAgICAgICBtYWls Ym94ZXMuYmFja19idWZmZXIsCi0tICAgICAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEoZm9ybWF0 LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2UpLAotKyAgICAgICAgICBTaGFyZWRJbWFnZU1l dGFkYXRhe2Zvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAotKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKLSAgICAgICAgICAg c3luY190b2tlbiwgaG9sZGVyXywgZ2Z4OjpFTVBUWV9CVUZGRVIpKTsKLSB9Ci0gCi1AQCAtMzUw LDggKzM1MCw4IEBAIHNjb3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVudFMKLSAK LSAgIHJldHVybiBiYXNlOjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCi0gICAg ICAgbWFpbGJveCwKLS0gICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29s b3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLCBhbHBoYV90eXBlLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgdXNhZ2UpLAotKyAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7Zm9ybWF0LCBzaXpl LCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sIGFscGhhX3R5cGUsCi0rICAgICAgICAgICAg ICAgICAgICAgICAgICB1c2FnZX0sCi0gICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBo b2xkZXJfLCBnZng6OkVNUFRZX0JVRkZFUik7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2Fj aGUuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL25ldC9kbnMvaG9zdF9yZXNvbHZlcl9j YWNoZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjMxLjAwMDAw MDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbmV0L2Rucy9ob3N0X3Jlc29s dmVyX2NhY2hlLmNjCTIwMjQtMDUtMTcgMTI6MzM6NTguNzI2NjUwNzc5ICswMjAwCi1AQCAtMzY4 LDcgKzM2OCw3IEBAIHZvaWQgSG9zdFJlc29sdmVyQ2FjaGU6OlNldCgKLSAKLSAgIHN0ZDo6c3Ry aW5nIGRvbWFpbl9uYW1lID0gcmVzdWx0LT5kb21haW5fbmFtZSgpOwotICAgZW50cmllc18uZW1w bGFjZSgKLS0gICAgICBLZXkoc3RkOjptb3ZlKGRvbWFpbl9uYW1lKSwgbmV0d29ya19hbm9ueW1p emF0aW9uX2tleSksCi0rICAgICAgS2V5e3N0ZDo6bW92ZShkb21haW5fbmFtZSksIG5ldHdvcmtf YW5vbnltaXphdGlvbl9rZXl9LAotICAgICAgIEVudHJ5KHN0ZDo6bW92ZShyZXN1bHQpLCBzb3Vy Y2UsIHNlY3VyZSwgc3RhbGVuZXNzX2dlbmVyYXRpb24pKTsKLSAKLSAgIGlmIChlbnRyaWVzXy5z aXplKCkgPiBtYXhfZW50cmllc18pIHsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9jc3MvcHJvcGVydGllcy9jc3NfcGFyc2lu Z191dGlscy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvY3NzL3Byb3BlcnRpZXMvY3NzX3BhcnNp bmdfdXRpbHMuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5r L3JlbmRlcmVyL2NvcmUvY3NzL3Byb3BlcnRpZXMvY3NzX3BhcnNpbmdfdXRpbHMuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xOCAxMTozNToyOC42ODk3OTE2MjggKzAyMDAKLSsr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv Y3NzL3Byb3BlcnRpZXMvY3NzX3BhcnNpbmdfdXRpbHMuY2MJMjAyNC0wNS0xOCAxMTozNTo1Mi4y OTQzMzQ3OTAgKzAyMDAKLUBAIC03NTA5LDcgKzc1MDksNyBAQCBzdGQ6Om9wdGlvbmFsPEluc2V0 QXJlYUtleXdvcmQ+IENvbnN1bWVJCi0gICAgIGRlZmF1bHQ6Ci0gICAgICAgcmV0dXJuIHN0ZDo6 bnVsbG9wdDsKLSAgIH0KLS0gIHJldHVybiBJbnNldEFyZWFLZXl3b3JkKGNzc19wYXJzaW5nX3V0 aWxzOjpDb25zdW1lSWRlbnQocmFuZ2UpLCB0eXBlKTsKLSsgIHJldHVybiBJbnNldEFyZWFLZXl3 b3Jke2Nzc19wYXJzaW5nX3V0aWxzOjpDb25zdW1lSWRlbnQocmFuZ2UpLCB0eXBlfTsKLSB9Ci0g Ci0gfSAgLy8gbmFtZXNwYWNlCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2FuY2hvcl9ldmFsdWF0b3JfaW1wbC5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2FuY2hvcl9ldmFsdWF0b3JfaW1wbC5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29y ZS9sYXlvdXQvYW5jaG9yX2V2YWx1YXRvcl9pbXBsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDUtMTggMTE6MjM6MzMuMDM2ODc1MzQ3ICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9hbmNob3JfZXZh bHVhdG9yX2ltcGwuY2MJMjAyNC0wNS0xOCAxMToyNDowNS42OTc2ODQ0NTkgKzAyMDAKLUBAIC02 MDEsNyArNjAxLDcgQEAgQW5jaG9yRXZhbHVhdG9ySW1wbDo6Q29tcHV0ZUluc2V0QXJlYU9mZgot ICAgICByaWdodCA9IEV2YWx1YXRlKHF1ZXJ5LnZhbHVlKCksIHBvc2l0aW9uX2FuY2hvciwKLSAg ICAgICAgICAgICAgICAgICAgICAvKiBpbnNldF9hcmVhX29mZnNldHMgKi8gc3RkOjpudWxsb3B0 KTsKLSAgIH0KLS0gIHJldHVybiBJbnNldEFyZWFPZmZzZXRzKHRvcCwgYm90dG9tLCBsZWZ0LCBy aWdodCk7Ci0rICByZXR1cm4gSW5zZXRBcmVhT2Zmc2V0c3t0b3AsIGJvdHRvbSwgbGVmdCwgcmln aHR9OwotIH0KLSAKLSBQaHlzaWNhbFJlY3QgQW5jaG9yRXZhbHVhdG9ySW1wbDo6SW5zZXRBcmVh TW9kaWZpZWRDb250YWluaW5nQmxvY2soCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWEvYXVkaW8vYXVkaW9fcmVu ZGVyZXJfbWl4ZXJfbWFuYWdlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWEvYXVk aW8vYXVkaW9fcmVuZGVyZXJfbWl4ZXJfbWFuYWdlci5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9tZWRpYS9hdWRpby9hdWRp b19yZW5kZXJlcl9taXhlcl9tYW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQt MDUtMTUgMjM6NDY6NDIuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL21lZGlhL2F1ZGlvL2F1ZGlvX3Jl bmRlcmVyX21peGVyX21hbmFnZXIuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43MjY2NTA3NzkgKzAy MDAKLUBAIC0xODEsOCArMTgxLDggQEAgQXVkaW9SZW5kZXJlck1peGVyKiBBdWRpb1JlbmRlcmVy TWl4ZXJNYQotICAgICBEVkxPRygxKSA8PCAiTm90IHJldXNpbmcgbWl4ZXIgd2l0aCBlcnJvcnM6 ICIgPDwgaXQtPnNlY29uZC5taXhlcjsKLSAKLSAgICAgLy8gTW92ZSBiYWQgbWl4ZXJzIG91dCBv ZiB0aGUgcmV1c2UgbWFwLgotLSAgICBkZWFkX21peGVyc18uZW1wbGFjZV9iYWNrKHN0ZDo6bW92 ZShpdC0+c2Vjb25kLm1peGVyKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdC0+ c2Vjb25kLnJlZl9jb3VudCk7Ci0rICAgIGRlYWRfbWl4ZXJzXy5lbXBsYWNlX2JhY2soKSA9IHtz dGQ6Om1vdmUoaXQtPnNlY29uZC5taXhlciksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgaXQtPnNlY29uZC5yZWZfY291bnR9OwotICAgICBtaXhlcnNfLmVyYXNlKGl0KTsKLSAgIH0K LSAKLUBAIC0yMjgsNyArMjI4LDcgQEAgdm9pZCBBdWRpb1JlbmRlcmVyTWl4ZXJNYW5hZ2VyOjpS ZXR1cm5NaQotICAgICB9Ci0gICB9IGVsc2UgaWYgKGRlYWRfaXQgPT0gZGVhZF9taXhlcnNfLmVu ZCgpICYmIG1peGVyX3JlZi5taXhlci0+SGFzU2lua0Vycm9yKCkpIHsKLSAgICAgLy8gTW92ZSBi YWQgbWl4ZXJzIG91dCBvZiB0aGUgcmV1c2UgbWFwLgotLSAgICBkZWFkX21peGVyc18uZW1wbGFj ZV9iYWNrKHN0ZDo6bW92ZShtaXhlcl9yZWYubWl4ZXIpLCBtaXhlcl9yZWYucmVmX2NvdW50KTsK LSsgICAgZGVhZF9taXhlcnNfLmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShtaXhlcl9yZWYu bWl4ZXIpLCBtaXhlcl9yZWYucmVmX2NvdW50fTsKLSAgICAgbWl4ZXJzXy5lcmFzZShpdCk7Ci0g ICB9Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUuaC5ub19tYXRjaGluZ19jb25z dHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5oCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42 MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUu aC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE1IDIzOjQ2OjQyLjAwMDAwMDAwMCAr MDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVy ZXIvcGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRlLmgJMjAyNC0wNS0xNyAxMjozMzo1OC43MjY2 NTA3NzkgKzAyMDAKLUBAIC05Niw3ICs5Niw3IEBAIGNsYXNzIFBMQVRGT1JNX0VYUE9SVCBGb250 UGFsZXR0ZSA6IHB1YmwKLSAgICAgICBDb2xvcjo6Q29sb3JTcGFjZSBjb2xvcl9pbnRlcnBvbGF0 aW9uX3NwYWNlLAotICAgICAgIHN0ZDo6b3B0aW9uYWw8Q29sb3I6Okh1ZUludGVycG9sYXRpb25N ZXRob2Q+IGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhvZCkgewotICAgICByZXR1cm4gYmFzZTo6QWRv cHRSZWYobmV3IEZvbnRQYWxldHRlKAotLSAgICAgICAgc3RhcnQsIGVuZCwgTm9uTm9ybWFsaXpl ZFBlcmNlbnRhZ2VzKHN0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKSwKLSsgICAgICAg IHN0YXJ0LCBlbmQsIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBl bmRfcGVyY2VudGFnZX0sCi0gICAgICAgICBub3JtYWxpemVkX3BlcmNlbnRhZ2UsIGFscGhhX211 bHRpcGxpZXIsIGNvbG9yX2ludGVycG9sYXRpb25fc3BhY2UsCi0gICAgICAgICBodWVfaW50ZXJw b2xhdGlvbl9tZXRob2QpKTsKLSAgIH0KLUBAIC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgUExBVEZP Uk1fRVhQT1JUIEZvbnRQYWxldHRlIDogcHVibAotICAgICAgIGRvdWJsZSBub3JtYWxpemVkX3Bl cmNlbnRhZ2UpIHsKLSAgICAgZG91YmxlIGVuZF9wZXJjZW50YWdlID0gbm9ybWFsaXplZF9wZXJj ZW50YWdlICogMTAwLjA7Ci0gICAgIGRvdWJsZSBzdGFydF9wZXJjZW50YWdlID0gMTAwLjAgLSBl bmRfcGVyY2VudGFnZTsKLS0gICAgcmV0dXJuIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlcyhzdGFy dF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZSk7Ci0rICAgIHJldHVybiBOb25Ob3JtYWxpemVk UGVyY2VudGFnZXN7c3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2V9OwotICAgfQotIAot ICAgZG91YmxlIEdldEFscGhhTXVsdGlwbGllcigpIGNvbnN0IHsKLWRpZmYgLXVwIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMv cGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMv cGFsZXR0ZV9pbnRlcnBvbGF0aW9uLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGly ZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRp b24uY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0Njo0Mi4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYwkyMDI0LTA1LTE3 IDEyOjMzOjU4LjcyNzY1MDgwMCArMDIwMAotQEAgLTMxLDcgKzMxLDcgQEAgVmVjdG9yPEZvbnRQ YWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlPgotICAgICAgICAgY29sb3JfaW50ZXJwb2xhdGlv bl9zcGFjZSwgaHVlX2ludGVycG9sYXRpb25fbWV0aG9kLCBzdGFydF9jb2xvciwKLSAgICAgICAg IGVuZF9jb2xvciwgcGVyY2VudGFnZSwgYWxwaGFfbXVsdGlwbGllcik7Ci0gCi0tICAgIEZvbnRQ YWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlIHJlc3VsdF9jb2xvcl9yZWNvcmQoaSwgcmVzdWx0 X2NvbG9yKTsKLSsgICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGUgcmVzdWx0X2Nv bG9yX3JlY29yZHtzdGF0aWNfY2FzdDxpbnQ+KGkpLCByZXN1bHRfY29sb3J9OwotICAgICByZXN1 bHRfY29sb3JfcmVjb3Jkcy5wdXNoX2JhY2socmVzdWx0X2NvbG9yX3JlY29yZCk7Ci0gICB9Ci0g ICByZXR1cm4gcmVzdWx0X2NvbG9yX3JlY29yZHM7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVy c3RhdHVzLmNwcC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVz LmNwcAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUv ZnBkZmFwaS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yCTIwMjQtMDUtMTUgMjM6NDg6MTIuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9jcGRmX3Jl bmRlcnN0YXR1cy5jcHAJMjAyNC0wNS0xNyAxMjozMzo1OC43Mjc2NTA4MDAgKzAyMDAKLUBAIC01 MDcsNyArNTA3LDcgQEAgdm9pZCBDUERGX1JlbmRlclN0YXR1czo6UHJvY2Vzc0NsaXBQYXRoKAot ICAgICB9IGVsc2UgewotICAgICAgIG1fcERldmljZS0+U2V0Q2xpcF9QYXRoRmlsbCgKLSAgICAg ICAgICAgKnBQYXRoLCAmbXRPYmoyRGV2aWNlLAotLSAgICAgICAgICBDRlhfRmlsbFJlbmRlck9w dGlvbnMoQ2xpcFBhdGguR2V0Q2xpcFR5cGUoaSkpKTsKLSsgICAgICAgICAgQ0ZYX0ZpbGxSZW5k ZXJPcHRpb25ze0NsaXBQYXRoLkdldENsaXBUeXBlKGkpfSk7Ci0gICAgIH0KLSAgIH0KLSAKLWRp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFn ZXJfdXRpbC5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv dWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oCi0tLS0gY2hyb21pdW0tMTI1LjAu NjQyMi42MC91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0NzozMi4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaAky MDI0LTA1LTE3IDEyOjMzOjU4LjcyODY1MDgyMSArMDIwMAotQEAgLTUyLDUzICs1Miw1MyBAQCBj b25zdGV4cHIgYXV0byBrQ2hyb21hdGljaXR5TWFwID0gYmFzZTo6Ci0gICAgIHpjcl9jb2xvcl9t YW5hZ2VyX3YxX2Nocm9tYXRpY2l0eV9uYW1lcywKLSAgICAgUHJpbWFyeVZlcnNpb24+KAotICAg ICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV81MjVfTElO RSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01Q VEUxNzBNLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0r ICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcw TSwKLSsgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV82MjVfTElORSwK LS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0NzBC RywKLS0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAg IFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3MEJHLAotKyAg ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMTcwTSwKLS0gICAgICBQcmlt YXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAotLSAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgUHJpbWFyeVZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcwTSwKLSsgICAgICAgICAg ICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDcwOSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbihn Zng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s Ci0rICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5 LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NI Uk9NQVRJQ0lUWV9OQU1FU19CVDIwMjAsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpQcmltYXJ5SUQ6OkJUMjAyMCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAg ICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQyMDIwLCBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJ Q0lUWV9OQU1FU19TUkdCLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 UHJpbWFyeUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5 VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X0RJU1BMQVlQMywKLS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1h cnlJRDo6UDMsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgUHJpbWFyeVZlcnNpb257 Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlAzLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAot ICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19BRE9CRVJHQiwK LS0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QURPQkVf UkdCLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAg ICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkFET0JFX1JHQiwK LSsgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NPTE9SX1NQ SU4sCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAgUHJpbWFyeVZlcnNpb257Ci0gICAg ICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpXSURFX0dBTVVUX0NPTE9SX1NQSU4s Ci0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURF X0dBTVVUX0NPTE9SX1NQSU5fU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfV0lERV9HQU1VVF9DT0xPUl9TUElOX1NJTkNF X1ZFUlNJT059fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFN RVNfQlQ0NzBNLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9u ewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0NzBNLAotLSAgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ0NzBNX1NJTkNF X1ZFUlNJT04pfSwKLSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZ X05BTUVTX0JUNDcwTV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMjQwTSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbigK LSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmlt YXJ5SUQ6OlNNUFRFMjQwTSwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lP Tn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpf RDUwLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9uewotICAg ICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6WFlaX0Q1MCwKLS0gICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9ENTBfU0lOQ0VfVkVS U0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFN RVNfWFlaX0Q1MF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf Q0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMSwKLS0gICAgICBQcmltYXJ5VmVyc2lvbigK LSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmlt YXJ5SUQ6OlNNUFRFU1Q0MjhfMSwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hS T01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDI4XzFfU0lO Q0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9O QU1FU19TTVBURVNUNDMxXzIsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAgUHJpbWFy eVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURVNU NDMxXzIsCi0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1F U19TTVBURVNUNDMxXzJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQzMV8yX1NJTkNFX1ZFUlNJT059fSwK LSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklMTSwKLS0g ICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAg Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkZJTE0sCi0tICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJT04pfX0pOwotKyAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklMTV9TSU5D RV9WRVJTSU9OfX19KTsKLSAKLSAvLyBBIG1hcCBmcm9tIHRoZSB6Y3JfY29sb3JfbWFuYWdlcl92 MSBlb3RmX25hbWVzIGVudW0gdmFsdWVzCi0gLy8gcmVwcmVzZW50aW5nIHdlbGwta25vd24gRU9U RnMsIHRvIHRoZWlyIGVxdWl2YWxlbnQgVHJhbnNmZXJJRHMuCi1AQCAtMTA3LDY4ICsxMDcsNjgg QEAgY29uc3RleHByIGF1dG8ga0VvdGZNYXAgPSBiYXNlOjpNYWtlRml4ZQotICAgICB6Y3JfY29s b3JfbWFuYWdlcl92MV9lb3RmX25hbWVzLAotICAgICBUcmFuc2ZlclZlcnNpb24+KHsKLSAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAotLSAgICAgVHJhbnNmZXJW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TElORUFSLAotLSAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257 Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMSU5FQVIsCi0rICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU1JHQiwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OlNSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCLCBrRGVmYXVsdFNpbmNlVmVy c2lvbn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUiwK LS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNSR0Jf SERSLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQl9IRFIsCi0rICAgICAgICAgICAgICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OfX0s Ci0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAotLSAgICAgVHJh bnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQ3MDksCi0tICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5D RV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpCVDcwOSwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfQlQyMDg3LAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29s b3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyNCwKLS0gICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFj ZTo6VHJhbnNmZXJJRDo6R0FNTUEyNCwKLSsgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNp bmNlVmVyc2lvbn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19BRE9C RVJHQiwKLSAgICAgIC8vIFRoaXMgaXMgZXZlciBzbyBzbGlnaHRseSBpbmFjY3VyYXRlLiBUaGUg bnVtYmVyIG91Z2h0IHRvIGJlCi0gICAgICAvLyAyLjE5OTIxODc1Ziwgbm90IDIuMgotLSAgICAg VHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyMiwKLS0g ICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgVHJhbnNm ZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyMiwKLSsgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19QUSwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9y U3BhY2U6OlRyYW5zZmVySUQ6OlBRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgVHJh bnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6UFEsIGtEZWZhdWx0U2lu Y2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMRywK LS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkhMRywK LS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hM R19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpITEcsCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME0sCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4 OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTE3ME0sCi0tICAgICAgICAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME1fU0lOQ0VfVkVSU0lP Til9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6 U01QVEUxNzBNLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU01QVEUxNzBNX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUyNDBNLAotLSAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT04p fSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNN UFRFMjQwTSwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMSwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbigKLSsg ICAgIFRyYW5zZmVyVmVyc2lvbnsKLSAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OlNNUFRFU1Q0MjhfMSwKLS0gICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0csCi0tICAgICBUcmFuc2ZlclZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0csCi0tICAgICAgICAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU0lOQ0VfVkVSU0lPTil9LAot KyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HLAot KyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9H X1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf TE9HX1NRUlQsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2Zl cklEOjpMT0dfU1FSVCwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0xPR19TUVJUX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVy c2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPR19TUVJULAotKyAgICAgICAgICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NRUlRfU0lOQ0Vf VkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2 Nl8yXzQsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oCi0rICAgICBUcmFuc2ZlclZlcnNpb257Ci0g ICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpJRUM2MTk2Nl8yXzQsCi0tICAg ICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8yXzRfU0lOQ0Vf VkVSU0lPTil9LAotKyAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSUVD NjE5NjZfMl80X1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfQlQxMzYxX0VDRywKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6OlRyYW5zZmVySUQ6OkJUMTM2MV9FQ0csCi0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDEzNjFfRUNHX1NJTkNFX1ZFUlNJT04pfSwKLSsg ICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMTM2MV9F Q0csCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19CVDEzNjFfRUNHX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfQlQyMDIwXzEwLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEwLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwX1NJTkNFX1ZFUlNJT04pfSwKLSsg ICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8x MCwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0JUMjAyMF8xMF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0JUMjAyMF8xMiwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMiwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMl9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIwMjBfMTIs Ci0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19C VDIwMjBfMTJfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUUywKLS0gICAgIFRyYW5zZmVyVmVyc2lvbigKLSsg ICAgIFRyYW5zZmVyVmVyc2lvbnsKLSAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OlNDUkdCX0xJTkVBUl84MF9OSVRTLAotLSAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgwX05JVFNfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgwX05JVFNf U0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19H QU1NQTE4LAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJ RDo6R0FNTUExOCwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0dBTU1BMThfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUExOCwKLSsgICAgICAgICAgICAgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMThfU0lOQ0VfVkVSU0lP Tn19LAotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTI4LAotLSAg ICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyOCwK LS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dB TU1BMjhfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JT cGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyOCwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMjhfU0lOQ0VfVkVSU0lPTn19LAotIH0pOwot IAotIC8vIEEgbWFwIGZyb20gdGhlIFNEUiB6Y3JfY29sb3JfbWFuYWdlcl92MSBlb3RmX25hbWVz IGVudW0gdmFsdWVzCi1AQCAtMTc3LDE4ICsxNzcsMTggQEAgY29uc3RleHByIGF1dG8ga0VvdGZN YXAgPSBiYXNlOjpNYWtlRml4ZQotIGNvbnN0ZXhwciBhdXRvIGtUcmFuc2Zlck1hcCA9Ci0gICAg IGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9uYW1lcywg VHJhbnNmZXJGblZlcnNpb24+KHsKLSAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX0xJTkVBUiwKLS0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNm ZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICBUcmFuc2Zl ckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0IsCi0t ICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCLCBr RGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFt ZWRUcmFuc2ZlckZuRXh0OjprU1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAg IHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAotLSAgICAgICAgIFRyYW5z ZmVyRm5WZXJzaW9uKAotKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uewotICAgICAgICAgICAg ICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1JlYzcwOSwKLS0gICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTn19 LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDg3LAotLSAg ICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKGdhbW1hMjQsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s Ci0rICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257Z2FtbWEyNCwga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0FET0JFUkdC LAotLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprQTk4 UkdCLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s Ci0rICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtBOThS R0IsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwK LSAgICAgfSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB0aGUgSERSIHpjcl9jb2xvcl9tYW5hZ2VyX3Yx IGVvdGZfbmFtZXMgZW51bSB2YWx1ZXMKLUBAIC0xOTcsNzAgKzE5Nyw3MCBAQCBjb25zdGV4cHIg YXV0byBrVHJhbnNmZXJNYXAgPQotIGNvbnN0ZXhwciBhdXRvIGtIRFJUcmFuc2Zlck1hcCA9Ci0g ICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9uYW1l cywgVHJhbnNmZXJGblZlcnNpb24+KAotICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0xJTkVBUiwKLS0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRy YW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIFRy YW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNl VmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NS R0JfSERSLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbigKLSsgICAgICAgICAgVHJhbnNm ZXJGblZlcnNpb257Ci0gICAgICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0Is Ci0tICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERS X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX1BRLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihT a05hbWVkVHJhbnNmZXJGbjo6a1BRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAg ICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a1BRLCBrRGVmYXVsdFNpbmNl VmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hM RywKLS0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm46OmtITEcs Ci0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfSExHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257 U2tOYW1lZFRyYW5zZmVyRm46OmtITEcsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT059fSwKLSAgICAg ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0IxMCwKLS0g ICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oCi0rICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9u ewotICAgICAgICAgICAgICAgU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCRXh0ZW5kZWQxMDIz T3ZlcjUxMCwKLS0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf RVhURU5ERURTUkdCMTBfU0lOQ0VfVkVSU0lPTil9fSk7Ci0rICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0VYVEVOREVEU1JHQjEwX1NJTkNFX1ZFUlNJT059fX0p OwotIAotIC8vIEEgbWFwIGZyb20gemNyX2NvbG9yX21hbmFnZXJfdjEgbWF0cml4X25hbWVzIGVu dW0gdmFsdWVzIHRvCi0gLy8gZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRHMuCi0gY29uc3RleHBy IGF1dG8ga01hdHJpeE1hcCA9Ci0gICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9y X21hbmFnZXJfdjFfbWF0cml4X25hbWVzLCBNYXRyaXhWZXJzaW9uPigKLSAgICAgICAgIHt7WkNS X0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1JHQiwKLS0gICAgICAgICAgTWF0cml4VmVy c2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9u KX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6 UkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9NQVRSSVhfTkFNRVNfQlQ3MDksCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpD b2xvclNwYWNlOjpNYXRyaXhJRDo6QlQ3MDksCi0tICAgICAgICAgICAgICAgICAgICAgICAga0Rl ZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9y U3BhY2U6Ok1hdHJpeElEOjpCVDcwOSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhf TkFNRVNfQlQ0NzBCRywKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbigKLSsgICAgICAgICAgTWF0 cml4VmVyc2lvbnsKLSAgICAgICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJU NDcwQkcsCi0tICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNf QlQ0NzBCR19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9NQVRSSVhfTkFNRVNfQlQ0NzBCR19TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfTkNMLAotLSAgICAgICAgICBN YXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9OQ0wsCi0tICAg ICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAg TWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfTkNMLAotKyAg ICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfQ0wsCi0tICAgICAgICAg IE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NMLAotLSAg ICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAg IE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NMLAotKyAg ICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19GQ0MsCi0tICAgICAgICAgIE1hdHJp eFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6RkNDLCBrRGVmYXVsdFNpbmNlVmVy c2lvbil9LAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4 SUQ6OkZDQywga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NHLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllDT0NHLAotLSAgICAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZQ09DR19TSU5DRV9WRVJTSU9OKX0s Ci0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WUNP Q0csCi0rICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklY X05BTUVTX1lDT0NHX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFH RVJfVjFfTUFUUklYX05BTUVTX1lEWkRYLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6TWF0cml4SUQ6OllEWkRYLAotLSAgICAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZRFpEWF9TSU5DRV9WRVJTSU9OKX0sCi0r ICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WURaRFgs Ci0rICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05B TUVTX1lEWkRYX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfTUFUUklYX05BTUVTX0dCUiwKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9y U3BhY2U6Ok1hdHJpeElEOjpHQlIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0dCUl9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAg IE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6R0JSLAotKyAgICAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19HQlJfU0lO Q0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFN RVNfU01QVEUxNzBNLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OlNNUFRFMTcwTSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNp bmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OlNNUFRFMTcwTSwKLSsgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNp bmNlVmVyc2lvbn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFN RVNfU01QVEUyNDBNLAotLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OlNNUFRFMjQwTSwKLS0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNp bmNlVmVyc2lvbil9fSk7Ci0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNl OjpNYXRyaXhJRDo6U01QVEUyNDBNLAotKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0 U2luY2VWZXJzaW9ufX19KTsKLSAKLSAvLyBBIG1hcCBmcm9tIHpjcl9jb2xvcl9tYW5hZ2VyX3Yx IHJhbmdlX25hbWVzIGVudW0gdmFsdWVzIHRvCi0gLy8gZ2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlE cy4KLSBjb25zdGV4cHIgYXV0byBrUmFuZ2VNYXAgPQotICAgICBiYXNlOjpNYWtlRml4ZWRGbGF0 TWFwPHpjcl9jb2xvcl9tYW5hZ2VyX3YxX3JhbmdlX25hbWVzLCBSYW5nZVZlcnNpb24+KAotICAg ICAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9SQU5HRV9OQU1FU19MSU1JVEVELAotLSAgICAg ICAgICBSYW5nZVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpMSU1JVEVELAotLSAg ICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAg UmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6TElNSVRFRCwKLSsgICAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9D T0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVTX0ZVTEwsCi0tICAgICAgICAgIFJhbmdlVmVyc2lv bihnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkZVTEwsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0s Ci0rICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkZVTEws IGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X1JBTkdFX05BTUVTX0RFUklWRUQsCi0tICAgICAgICAgIFJhbmdlVmVyc2lvbihnZng6OkNvbG9y U3BhY2U6OlJhbmdlSUQ6OkRFUklWRUQsCi0tICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVs dFNpbmNlVmVyc2lvbil9fSk7Ci0rICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNvbG9yU3Bh Y2U6OlJhbmdlSUQ6OkRFUklWRUQsCi0rICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNp bmNlVmVyc2lvbn19fSk7Ci0gCi0gemNyX2NvbG9yX21hbmFnZXJfdjFfY2hyb21hdGljaXR5X25h bWVzIFRvQ29sb3JNYW5hZ2VyQ2hyb21hdGljaXR5KAotICAgICBnZng6OkNvbG9yU3BhY2U6OlBy aW1hcnlJRCBwcmltYXJ5SUQsCi1AQCAtMjgzLDQgKzI4Myw0IEBAIHpjcl9jb2xvcl9tYW5hZ2Vy X3YxX2VvdGZfbmFtZXMgVG9Db2xvck0KLSAKLSB9ICAvLyBuYW1lc3BhY2UgdWk6OndheWxhbmQK LSAKLS0jZW5kaWYgIC8vIFVJX0JBU0VfV0FZTEFORF9DT0xPUl9NQU5BR0VSX1VUSUxfSF8KLVwg S2VpbiBaZWlsZW51bWJydWNoIGFtIERhdGVpZW5kZS4KLSsjZW5kaWYgIC8vIFVJX0JBU0VfV0FZ TEFORF9DT0xPUl9NQU5BR0VSX1VUSUxfSF8KLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvdWkvZ3RrL2d0a191aS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL3VpL2d0ay9ndGtfdWkuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3Vp L2d0ay9ndGtfdWkuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0xNSAyMzo0Nzoz My4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL2d0ay9ndGtf dWkuY2MJMjAyNC0wNS0xNyAxMjozMzo1OC43Mjg2NTA4MjEgKzAyMDAKLUBAIC0xMDAxLDExICsx MDAxLDExIEBAIGRpc3BsYXk6OkRpc3BsYXlDb25maWcgR3RrVWk6OkdldERpc3BsYXkKLSAgICAg R2RrUmVjdGFuZ2xlIGdlb21ldHJ5OwotICAgICBnZGtfbW9uaXRvcl9nZXRfZ2VvbWV0cnkobW9u aXRvciwgJmdlb21ldHJ5KTsKLSAgICAgaW50IG1vbml0b3Jfc2NhbGUgPSBzdGQ6Om1heCgxLCBn ZGtfbW9uaXRvcl9nZXRfc2NhbGVfZmFjdG9yKG1vbml0b3IpKTsKLS0gICAgY29uZmlnLmRpc3Bs YXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soCi0rICAgIGNvbmZpZy5kaXNwbGF5X2dlb21ldHJp ZXMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBnZng6OlJlY3QobW9uaXRvcl9zY2FsZSAq IGdlb21ldHJ5LngsIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS55LAotICAgICAgICAgICAgICAg ICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS53aWR0aCwKLSAgICAgICAgICAgICAgICAgICBt b25pdG9yX3NjYWxlICogZ2VvbWV0cnkuaGVpZ2h0KSwKLS0gICAgICAgIG1vbml0b3Jfc2NhbGUg KiBmb250X3NjYWxlKTsKLSsgICAgICAgIHN0YXRpY19jYXN0PGZsb2F0Pihtb25pdG9yX3NjYWxl ICogZm9udF9zY2FsZSl9OwotICAgfQotICAgcmV0dXJuIGNvbmZpZzsKLSB9Ci1kaWZmIC11cCBj aHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL3ZpZXdzL2NvbnRyb2xzL2J1dHRvbi9sYWJlbF9idXR0 b24uY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92 aWV3cy9jb250cm9scy9idXR0b24vbGFiZWxfYnV0dG9uLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAu NjQyMi42MC91aS92aWV3cy9jb250cm9scy9idXR0b24vbGFiZWxfYnV0dG9uLmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMTggMjM6MTg6NTAuMzYxMTA3ODcyICswMjAwCi0rKysg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy9jb250cm9scy9idXR0b24vbGFiZWxfYnV0 dG9uLmNjCTIwMjQtMDUtMTggMjM6MjA6MDMuODA3NTAyNjEzICswMjAwCi1AQCAtMzkxLDExICsz OTEsMTEgQEAgUHJvcG9zZWRMYXlvdXQgTGFiZWxCdXR0b246OkNhbGN1bGF0ZVBybwotIAotICAg Z2Z4OjpSZWN0IGltYWdlX2FyZWEgPSBHZXRMb2NhbEJvdW5kcygpOwotIAotLSAgbGF5b3V0cy5j aGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKLSsgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBs YWNlX2JhY2soKSA9IHsKLSAgICAgICBpbmtfZHJvcF9jb250YWluZXJfLmdldCgpLAotICAgICAg IHN0YXRpY19jYXN0PERlbGVnYXRpbmdMYXlvdXRNYW5hZ2VyKj4oR2V0TGF5b3V0TWFuYWdlcigp KQotICAgICAgICAgICAtPkNhbkJlVmlzaWJsZShpbmtfZHJvcF9jb250YWluZXJfLmdldCgpKSwK LS0gICAgICBpbWFnZV9hcmVhLCBTaXplQm91bmRzKCkpOwotKyAgICAgIGltYWdlX2FyZWEsIFNp emVCb3VuZHMoKX07Ci0gCi0gICBnZng6Okluc2V0cyBpbnNldHMgPSBHZXRJbnNldHMoKTsKLSAg IC8vIElmIHRoZSBidXR0b24gaGF2ZSBhIGxpbWl0ZWQgc3BhY2UgdG8gZml0IGluLCB0aGUgaW1h Z2UgYW5kIHRoZSBsYWJlbAotQEAgLTQ0NywxMSArNDQ3LDExIEBAIFByb3Bvc2VkTGF5b3V0IExh YmVsQnV0dG9uOjpDYWxjdWxhdGVQcm8KLSAgIH0gZWxzZSBpZiAoaG9yaXpvbnRhbF9hbGlnbm1l bnQgPT0gZ2Z4OjpBTElHTl9SSUdIVCkgewotICAgICBpbWFnZV9vcmlnaW4uT2Zmc2V0KGltYWdl X2FyZWEud2lkdGgoKSAtIGltYWdlX3NpemUud2lkdGgoKSwgMCk7Ci0gICB9Ci0tICBsYXlvdXRz LmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAotKyAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVt cGxhY2VfYmFjaygpID0gewotICAgICAgIGNvbnN0X2Nhc3Q8TGFiZWxCdXR0b24qPih0aGlzKS0+ aW1hZ2VfY29udGFpbmVyX3ZpZXcoKSwKLSAgICAgICBzdGF0aWNfY2FzdDxEZWxlZ2F0aW5nTGF5 b3V0TWFuYWdlcio+KEdldExheW91dE1hbmFnZXIoKSkKLSAgICAgICAgICAgLT5DYW5CZVZpc2li bGUoaW1hZ2VfY29udGFpbmVyX3ZpZXcoKSksCi0tICAgICAgZ2Z4OjpSZWN0KGltYWdlX29yaWdp biwgaW1hZ2Vfc2l6ZSksIFNpemVCb3VuZHMoKSk7Ci0rICAgICAgZ2Z4OjpSZWN0KGltYWdlX29y aWdpbiwgaW1hZ2Vfc2l6ZSksIFNpemVCb3VuZHMoKX07Ci0gCi0gICBnZng6OlJlY3QgbGFiZWxf Ym91bmRzID0gbGFiZWxfYXJlYTsKLSAgIGlmIChsYWJlbF9hcmVhLndpZHRoKCkgPT0gbGFiZWxf c2l6ZS53aWR0aCgpKSB7Ci1AQCAtNDY1LDExICs0NjUsMTEgQEAgUHJvcG9zZWRMYXlvdXQgTGFi ZWxCdXR0b246OkNhbGN1bGF0ZVBybwotICAgICB9Ci0gICB9Ci0gCi0tICBsYXlvdXRzLmNoaWxk X2xheW91dHMuZW1wbGFjZV9iYWNrKAotKyAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2Vf YmFjaygpID0gewotICAgICAgIGxhYmVsXy5nZXQoKSwKLSAgICAgICBzdGF0aWNfY2FzdDxEZWxl Z2F0aW5nTGF5b3V0TWFuYWdlcio+KEdldExheW91dE1hbmFnZXIoKSkKLSAgICAgICAgICAgLT5D YW5CZVZpc2libGUobGFiZWxfLmdldCgpKSwKLS0gICAgICBsYWJlbF9ib3VuZHMsIFNpemVCb3Vu ZHMoKSk7Ci0rICAgICAgbGFiZWxfYm91bmRzLCBTaXplQm91bmRzKCl9OwotICAgbGF5b3V0cy5o b3N0X3NpemUgPQotICAgICAgIGdmeDo6U2l6ZShzaXplX2JvdW5kcy53aWR0aCgpLnZhbHVlKCks IHNpemVfYm91bmRzLmhlaWdodCgpLnZhbHVlKCkpOwotIAotZGlmZiAtdXAgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC91aS92aWV3cy9jb250cm9scy9lZGl0YWJsZV9jb21ib2JveC9lZGl0YWJsZV9j b21ib2JveC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3VpL3ZpZXdzL2NvbnRyb2xzL2VkaXRhYmxlX2NvbWJvYm94L2VkaXRhYmxlX2NvbWJvYm94LmNj Ci0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy9jb250cm9scy9lZGl0YWJsZV9j b21ib2JveC9lZGl0YWJsZV9jb21ib2JveC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0 LTA1LTE4IDIzOjQ3OjUzLjgzODQ5MTM0NyArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvdWkvdmlld3MvY29udHJvbHMvZWRpdGFibGVfY29tYm9ib3gvZWRpdGFibGVfY29tYm9ib3gu Y2MJMjAyNC0wNS0xOCAyMzo0OTowNi4xODYzMTI2MzAgKzAyMDAKLUBAIC00OTIsMTYgKzQ5Miwx NiBAQCBQcm9wb3NlZExheW91dCBFZGl0YWJsZUNvbWJvYm94OjpDYWxjdWxhCi0gICAgIGxheW91 dC5ob3N0X3NpemUgPQotICAgICAgICAgZ2Z4OjpTaXplKHNpemVfYm91bmRzLndpZHRoKCkudmFs dWUoKSwgc2l6ZV9ib3VuZHMuaGVpZ2h0KCkudmFsdWUoKSk7Ci0gICB9Ci0tICBsYXlvdXQuY2hp bGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soCi0rICBsYXlvdXQuY2hpbGRfbGF5b3V0cy5lbXBsYWNl X2JhY2soKSA9IHsKLSAgICAgICB0ZXh0ZmllbGRfLmdldCgpLCB0ZXh0ZmllbGRfLT5HZXRWaXNp YmxlKCksCi0tICAgICAgZ2Z4OjpSZWN0KDAsIDAsIGxheW91dC5ob3N0X3NpemUud2lkdGgoKSwg bGF5b3V0Lmhvc3Rfc2l6ZS5oZWlnaHQoKSkpOwotKyAgICAgIGdmeDo6UmVjdCgwLCAwLCBsYXlv dXQuaG9zdF9zaXplLndpZHRoKCksIGxheW91dC5ob3N0X3NpemUuaGVpZ2h0KCkpfTsKLSAgIGNv bnN0IGludCBwcmVmZXJyZWRfd2lkdGggPQotICAgICAgIGNvbnRyb2xfZWxlbWVudHNfY29udGFp bmVyXy0+R2V0UHJlZmVycmVkU2l6ZSh7fSkud2lkdGgoKTsKLS0gIGxheW91dC5jaGlsZF9sYXlv dXRzLmVtcGxhY2VfYmFjaygKLSsgIGxheW91dC5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygp ID0gewotICAgICAgIGNvbnRyb2xfZWxlbWVudHNfY29udGFpbmVyXy5nZXQoKSwKLSAgICAgICBj b250cm9sX2VsZW1lbnRzX2NvbnRhaW5lcl8tPkdldFZpc2libGUoKSwKLSAgICAgICBnZng6OlJl Y3QobGF5b3V0Lmhvc3Rfc2l6ZS53aWR0aCgpIC0gcHJlZmVycmVkX3dpZHRoLCAwLCBwcmVmZXJy ZWRfd2lkdGgsCi0tICAgICAgICAgICAgICAgIGxheW91dC5ob3N0X3NpemUuaGVpZ2h0KCkpKTsK LSsgICAgICAgICAgICAgICAgbGF5b3V0Lmhvc3Rfc2l6ZS5oZWlnaHQoKSl9OwotICAgcmV0dXJu IGxheW91dDsKLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3VpL3ZpZXdz L2xheW91dC9ib3hfbGF5b3V0LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvdWkvdmlld3MvbGF5b3V0L2JveF9sYXlvdXQuY2MKLS0tLSBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL3VpL3ZpZXdzL2xheW91dC9ib3hfbGF5b3V0LmNjLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yCTIwMjQtMDUtMTggMjM6MjA6NTMuNDQ0MjcyNTg2ICswMjAwCi0rKysgY2hyb21p dW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy9sYXlvdXQvYm94X2xheW91dC5jYwkyMDI0LTA1LTE4 IDIzOjIxOjEzLjMzOTY3MzI1MyArMDIwMAotQEAgLTMyNSw3ICszMjUsNyBAQCB2b2lkIEJveExh eW91dDo6SW5pdGlhbGl6ZUNoaWxkRGF0YShCb3hMCi0gICAgIGRhdGEuY2hpbGRfZGF0YS5lbXBs YWNlX2JhY2soKTsKLSAgICAgQm94Q2hpbGREYXRhJiBjaGlsZF9kYXRhID0gZGF0YS5jaGlsZF9k YXRhLmJhY2soKTsKLSAKLS0gICAgZGF0YS5sYXlvdXQuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2Jh Y2soY2hpbGQsIHRydWUpOwotKyAgICBkYXRhLmxheW91dC5jaGlsZF9sYXlvdXRzLmVtcGxhY2Vf YmFjaygpID0ge2NoaWxkLCB0cnVlfTsKLSAKLSAgICAgZ2Z4OjpJbnNldHMqIG1hcmdpbnMgPSBj aGlsZCA/IGNoaWxkLT5HZXRQcm9wZXJ0eShrTWFyZ2luc0tleSkgOiBudWxscHRyOwotICAgICBp ZiAobWFyZ2lucykgewotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS92aWV3cy93 aW5kb3cvZGlhbG9nX2NsaWVudF92aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvdWkvdmlld3Mvd2luZG93L2RpYWxvZ19jbGllbnRfdmlldy5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvdmlld3Mvd2luZG93L2RpYWxvZ19jbGllbnRf dmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTE4IDIzOjUxOjA1LjM4NTI3 OTM4MiArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvdmlld3Mvd2luZG93L2Rp YWxvZ19jbGllbnRfdmlldy5jYwkyMDI0LTA1LTE4IDIzOjUxOjQwLjE0NjA5NjcxOSArMDIwMAot QEAgLTIwNSwxNiArMjA1LDE2IEBAIFByb3Bvc2VkTGF5b3V0IERpYWxvZ0NsaWVudFZpZXc6OkNh bGN1bGEKLSAgIGNvbnN0IGludCBjb250YWluZXJfaGVpZ2h0ID0KLSAgICAgICBidXR0b25fcm93 X2NvbnRhaW5lcl8tPkdldEhlaWdodEZvcldpZHRoKHNpemVfYm91bmRzLndpZHRoKCkudmFsdWUo KSk7Ci0gICBjb25zdCBpbnQgY29udGFpbmVyX3kgPSBzaXplX2JvdW5kcy5oZWlnaHQoKS52YWx1 ZSgpIC0gY29udGFpbmVyX2hlaWdodDsKLS0gIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNl X2JhY2soCi0rICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAg ICAgYnV0dG9uX3Jvd19jb250YWluZXJfLmdldCgpLCBidXR0b25fcm93X2NvbnRhaW5lcl8tPkdl dFZpc2libGUoKSwKLSAgICAgICBnZng6OlJlY3QoMCwgY29udGFpbmVyX3ksIHNpemVfYm91bmRz LndpZHRoKCkudmFsdWUoKSwgY29udGFpbmVyX2hlaWdodCksCi0tICAgICAgc2l6ZV9ib3VuZHMp OwotKyAgICAgIHNpemVfYm91bmRzfTsKLSAgIGlmIChjb250ZW50c192aWV3KCkpIHsKLSAgICAg Z2Z4OjpSZWN0IGNvbnRlbnRzX2JvdW5kcyhzaXplX2JvdW5kcy53aWR0aCgpLnZhbHVlKCksIGNv bnRhaW5lcl95KTsKLSAgICAgY29udGVudHNfYm91bmRzLkluc2V0KEdldERpYWxvZ0RlbGVnYXRl KCktPm1hcmdpbnMoKSk7Ci0tICAgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2so Y29udGVudHNfdmlldygpLAotKyAgICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNr KCkgPSB7Y29udGVudHNfdmlldygpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnRlbnRzX3ZpZXcoKS0+R2V0VmlzaWJsZSgpLAotLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX2JvdW5kcywgc2l6ZV9ib3VuZHMpOwotKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRzX2JvdW5kcywgc2l6 ZV9ib3VuZHN9OwotICAgfQotICAgbGF5b3V0cy5ob3N0X3NpemUgPQotICAgICAgIGdmeDo6U2l6 ZShzaXplX2JvdW5kcy53aWR0aCgpLnZhbHVlKCksIHNpemVfYm91bmRzLmhlaWdodCgpLnZhbHVl KCkpOwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNS1lbDctcnVzdC1wcm9jLW1hY3JvMi5wYXRj aCBiL2Nocm9taXVtLTEyNS1lbDctcnVzdC1wcm9jLW1hY3JvMi5wYXRjaApkZWxldGVkIGZpbGUg bW9kZSAxMDA2NDQKaW5kZXggNjRhNjk3OC4uMDAwMDAwMAotLS0gYS9jaHJvbWl1bS0xMjUtZWw3 LXJ1c3QtcHJvYy1tYWNybzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3NDcgKzAsMCBAQAot ZGlmZiAtTnVyIGNocm9taXVtLTEyMy4wLjYzMTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21p dW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvYnVpbGQucnMgY2hyb21pdW0t MTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Iv cHJvYy1tYWNybzItMS4wLjgwL2J1aWxkLnJzCi0tLS0gY2hyb21pdW0tMTIzLjAuNjMxMi4xMjIv dGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEu MC43OC9idWlsZC5ycwkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MC9idWlsZC5ycwkyMDI0LTA1LTE1IDIzOjQ3OjI0LjAw MDAwMDAwMCArMDIwMAotQEAgLTM2LDEwICszNiwxMCBAQAotIAotIHVzZSBzdGQ6OmVudjsKLSB1 c2Ugc3RkOjpmZmk6Ok9zU3RyaW5nOwotK3VzZSBzdGQ6Oml0ZXI7Ci0gdXNlIHN0ZDo6cGF0aDo6 UGF0aDsKLSB1c2Ugc3RkOjpwcm9jZXNzOjp7c2VsZiwgQ29tbWFuZCwgU3RkaW99OwotIHVzZSBz dGQ6OnN0cjsKLS11c2Ugc3RkOjp1MzI7Ci0gCi0gZm4gbWFpbigpIHsKLSAgICAgbGV0IHJ1c3Rj ID0gcnVzdGNfbWlub3JfdmVyc2lvbigpLnVud3JhcF9vcih1MzI6Ok1BWCk7Ci1AQCAtNjMsNiAr NjMsMTEgQEAKLSAgICAgICAgIHByaW50bG4hKCJjYXJnbzpydXN0Yy1jZmc9bm9fc291cmNlX3Rl eHQiKTsKLSAgICAgfQotIAotKyAgICBpZiBydXN0YyA8IDc5IHsKLSsgICAgICAgIHByaW50bG4h KCJjYXJnbzpydXN0Yy1jZmc9bm9fbGl0ZXJhbF9ieXRlX2NoYXJhY3RlciIpOwotKyAgICAgICAg cHJpbnRsbiEoImNhcmdvOnJ1c3RjLWNmZz1ub19saXRlcmFsX2Nfc3RyaW5nIik7Ci0rICAgIH0K LSsKLSAgICAgaWYgIWNmZyEoZmVhdHVyZSA9ICJwcm9jLW1hY3JvIikgewotICAgICAgICAgcHJp bnRsbiEoImNhcmdvOnJlcnVuLWlmLWNoYW5nZWQ9YnVpbGQucnMiKTsKLSAgICAgICAgIHJldHVy bjsKLUBAIC0xMzgsMTUgKzE0MywxNSBAQAotICAgICBsZXQgb3V0X2RpciA9IGNhcmdvX2Vudl92 YXIoIk9VVF9ESVIiKTsKLSAgICAgbGV0IHByb2JlZmlsZSA9IFBhdGg6Om5ldygiYnVpbGQiKS5q b2luKCJwcm9iZS5ycyIpOwotIAotLSAgICAvLyBNYWtlIHN1cmUgdG8gcGljayB1cCBDYXJnbyBy dXN0YyBjb25maWd1cmF0aW9uLgotLSAgICBsZXQgbXV0IGNtZCA9IGlmIGxldCBTb21lKHdyYXBw ZXIpID0gZW52Ojp2YXJfb3MoIlJVU1RDX1dSQVBQRVIiKSB7Ci0tICAgICAgICBsZXQgbXV0IGNt ZCA9IENvbW1hbmQ6Om5ldyh3cmFwcGVyKTsKLS0gICAgICAgIC8vIFRoZSB3cmFwcGVyJ3MgZmly c3QgYXJndW1lbnQgaXMgc3VwcG9zZWQgdG8gYmUgdGhlIHBhdGggdG8gcnVzdGMuCi0tICAgICAg ICBjbWQuYXJnKHJ1c3RjKTsKLS0gICAgICAgIGNtZAotLSAgICB9IGVsc2UgewotLSAgICAgICAg Q29tbWFuZDo6bmV3KHJ1c3RjKQotLSAgICB9OwotKyAgICBsZXQgcnVzdGNfd3JhcHBlciA9IGVu djo6dmFyX29zKCJSVVNUQ19XUkFQUEVSIikuZmlsdGVyKHx3cmFwcGVyfCAhd3JhcHBlci5pc19l bXB0eSgpKTsKLSsgICAgbGV0IHJ1c3RjX3dvcmtzcGFjZV93cmFwcGVyID0KLSsgICAgICAgIGVu djo6dmFyX29zKCJSVVNUQ19XT1JLU1BBQ0VfV1JBUFBFUiIpLmZpbHRlcih8d3JhcHBlcnwgIXdy YXBwZXIuaXNfZW1wdHkoKSk7Ci0rICAgIGxldCBtdXQgcnVzdGMgPSBydXN0Y193cmFwcGVyCi0r ICAgICAgICAuaW50b19pdGVyKCkKLSsgICAgICAgIC5jaGFpbihydXN0Y193b3Jrc3BhY2Vfd3Jh cHBlcikKLSsgICAgICAgIC5jaGFpbihpdGVyOjpvbmNlKHJ1c3RjKSk7Ci0rICAgIGxldCBtdXQg Y21kID0gQ29tbWFuZDo6bmV3KHJ1c3RjLm5leHQoKS51bndyYXAoKSk7Ci0rICAgIGNtZC5hcmdz KHJ1c3RjKTsKLSAKLSAgICAgaWYgIXJ1c3RjX2Jvb3RzdHJhcCB7Ci0gICAgICAgICBjbWQuZW52 X3JlbW92ZSgiUlVTVENfQk9PVFNUUkFQIik7Ci1AQCAtMTU2LDYgKzE2MSw3IEBACi0gICAgICAg ICAuYXJnKCItLWVkaXRpb249MjAyMSIpCi0gICAgICAgICAuYXJnKCItLWNyYXRlLW5hbWU9cHJv Y19tYWNybzIiKQotICAgICAgICAgLmFyZygiLS1jcmF0ZS10eXBlPWxpYiIpCi0rICAgICAgICAu YXJnKCItLWNhcC1saW50cz1hbGxvdyIpCi0gICAgICAgICAuYXJnKCItLWVtaXQ9ZGVwLWluZm8s bWV0YWRhdGEiKQotICAgICAgICAgLmFyZygiLS1vdXQtZGlyIikKLSAgICAgICAgIC5hcmcob3V0 X2RpcikKLWRpZmYgLU51ciBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0 L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L0NhcmdvLnRvbWwg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19p by92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgwL0NhcmdvLnRvbWwKLS0tLSBjaHJvbWl1bS0xMjMu MC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJv Yy1tYWNybzItMS4wLjc4L0NhcmdvLnRvbWwJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAg KzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21p dW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODAvQ2FyZ28udG9tbAkyMDI0LTA1 LTE1IDIzOjQ3OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTEzLDcgKzEzLDcgQEAKLSBlZGl0aW9u ID0gIjIwMjEiCi0gcnVzdC12ZXJzaW9uID0gIjEuNTYiCi0gbmFtZSA9ICJwcm9jLW1hY3JvMiIK LS12ZXJzaW9uID0gIjEuMC43OCIKLSt2ZXJzaW9uID0gIjEuMC44MCIKLSBhdXRob3JzID0gWwot ICAgICAiRGF2aWQgVG9sbmF5IDxkdG9sbmF5QGdtYWlsLmNvbT4iLAotICAgICAiQWxleCBDcmlj aHRvbiA8YWxleEBhbGV4Y3JpY2h0b24uY29tPiIsCi1kaWZmIC1OdXIgY2hyb21pdW0tMTIzLjAu NjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2Mt bWFjcm8yLTEuMC43OC9DYXJnby50b21sLm9yaWcgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGly ZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgw L0NhcmdvLnRvbWwub3JpZwotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuMTIyL3RoaXJkX3BhcnR5 L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvQ2FyZ28u dG9tbC5vcmlnCTIwMjQtMDQtMTAgMjM6MjU6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21p dW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5k b3IvcHJvYy1tYWNybzItMS4wLjgwL0NhcmdvLnRvbWwub3JpZwkyMDI0LTA1LTE1IDIzOjQ3OjI0 LjAwMDAwMDAwMCArMDIwMAotQEAgLTEsNiArMSw2IEBACi0gW3BhY2thZ2VdCi0gbmFtZSA9ICJw cm9jLW1hY3JvMiIKLS12ZXJzaW9uID0gIjEuMC43OCIKLSt2ZXJzaW9uID0gIjEuMC44MCIKLSBh dXRob3JzID0gWyJEYXZpZCBUb2xuYXkgPGR0b2xuYXlAZ21haWwuY29tPiIsICJBbGV4IENyaWNo dG9uIDxhbGV4QGFsZXhjcmljaHRvbi5jb20+Il0KLSBhdXRvYmVuY2hlcyA9IGZhbHNlCi0gY2F0 ZWdvcmllcyA9IFsiZGV2ZWxvcG1lbnQtdG9vbHM6OnByb2NlZHVyYWwtbWFjcm8taGVscGVycyJd Ci1kaWZmIC1OdXIgY2hyb21pdW0tMTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJv bWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC8uY2FyZ29fdmNzX2luZm8u anNvbiBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3Jh dGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODAvLmNhcmdvX3Zjc19pbmZvLmpzb24KLS0t LSBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRl c19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4Ly5jYXJnb192Y3NfaW5mby5qc29uCTIwMjQt MDQtMTAgMjM6MjU6MjEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzIt MS4wLjgwLy5jYXJnb192Y3NfaW5mby5qc29uCTIwMjQtMDUtMTUgMjM6NDc6MjQuMDAwMDAwMDAw ICswMjAwCi1AQCAtMSw2ICsxLDYgQEAKLSB7Ci0gICAiZ2l0IjogewotLSAgICAic2hhMSI6ICJk ODUwYTFkYjVlM2ZlNzczMmQ2MmNhY2JmYzQxNDVlNDk2YzJhODBlIgotKyAgICAic2hhMSI6ICJk YTUxZjhkMDA1Y2M1ZDgyOTljMTg3MmZhZDliYmU2M2IwN2MzMWM3IgotICAgfSwKLSAgICJwYXRo X2luX3ZjcyI6ICIiCi0gfQotXCBLZWluIFplaWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlLgotZGlm ZiAtTnVyIGNocm9taXVtLTEyMy4wLjYzMTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1f Y3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvLmdpdGh1Yi93b3JrZmxvd3MvY2ku eW1sIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0 ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MC8uZ2l0aHViL3dvcmtmbG93cy9jaS55bWwK LS0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2Ny YXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4Ly5naXRodWIvd29ya2Zsb3dzL2NpLnlt bAkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2Mt bWFjcm8yLTEuMC44MC8uZ2l0aHViL3dvcmtmbG93cy9jaS55bWwJMjAyNC0wNS0xNSAyMzo0Nzoy NC4wMDAwMDAwMDAgKzAyMDAKLUBAIC0xOTgsNiArMTk4LDcgQEAKLSAgICAgdGltZW91dC1taW51 dGVzOiA0NQotICAgICBzdGVwczoKLSAgICAgICAtIHVzZXM6IGFjdGlvbnMvY2hlY2tvdXRAdjQK LSsgICAgICAtIHVzZXM6IGR0b2xuYXkvcnVzdC10b29sY2hhaW5Ac3RhYmxlCi0gICAgICAgLSB1 c2VzOiBkdG9sbmF5L2luc3RhbGxAY2FyZ28tb3V0ZGF0ZWQKLSAgICAgICAtIHJ1bjogY2FyZ28g b3V0ZGF0ZWQgLS13b3Jrc3BhY2UgLS1leGl0LWNvZGUgMQotICAgICAgIC0gcnVuOiBjYXJnbyBv dXRkYXRlZCAtLW1hbmlmZXN0LXBhdGggZnV6ei9DYXJnby50b21sIC0tZXhpdC1jb2RlIDEKLWRp ZmYgLU51ciBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVt X2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3NyYy9mYWxsYmFjay5ycyBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3Zl bmRvci9wcm9jLW1hY3JvMi0xLjAuODAvc3JjL2ZhbGxiYWNrLnJzCi0tLS0gY2hyb21pdW0tMTIz LjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3By b2MtbWFjcm8yLTEuMC43OC9zcmMvZmFsbGJhY2sucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAw MDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODAvc3JjL2ZhbGxiYWNr LnJzCTIwMjQtMDUtMTUgMjM6NDc6MjQuMDAwMDAwMDAwICswMjAwCi1AQCAtMTUsNyArMTUsOSBA QAotIHVzZSBjb3JlOjpvcHM6OlJhbmdlOwotIHVzZSBjb3JlOjpvcHM6OlJhbmdlQm91bmRzOwot IHVzZSBjb3JlOjpwdHI7Ci0tdXNlIGNvcmU6OnN0cjo6RnJvbVN0cjsKLSt1c2UgY29yZTo6c3Ry Ojp7c2VsZiwgRnJvbVN0cn07Ci0rdXNlIHN0ZDo6ZmZpOjpDU3RyOwotKyNbY2ZnKHByb2NtYWNy bzJfc2VtdmVyX2V4ZW1wdCldCi0gdXNlIHN0ZDo6cGF0aDo6UGF0aEJ1ZjsKLSAKLSAvLy8gRm9y Y2UgdXNlIG9mIHByb2MtbWFjcm8yJ3MgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFQ SSBmb3Igbm93LCBldmVuCi1AQCAtMjk3LDExICsyOTksMTMgQEAKLSAgICAgfQotIH0KLSAKLSsj W2NmZyhwcm9jbWFjcm8yX3NlbXZlcl9leGVtcHQpXQotICNbZGVyaXZlKENsb25lLCBQYXJ0aWFs RXEsIEVxKV0KLSBwdWIoY3JhdGUpIHN0cnVjdCBTb3VyY2VGaWxlIHsKLSAgICAgcGF0aDogUGF0 aEJ1ZiwKLSB9Ci0gCi0rI1tjZmcocHJvY21hY3JvMl9zZW12ZXJfZXhlbXB0KV0KLSBpbXBsIFNv dXJjZUZpbGUgewotICAgICAvLy8gR2V0IHRoZSBwYXRoIHRvIHRoaXMgc291cmNlIGZpbGUgYXMg YSBzdHJpbmcuCi0gICAgIHB1YiBmbiBwYXRoKCZzZWxmKSAtPiBQYXRoQnVmIHsKLUBAIC0zMTMs NiArMzE3LDcgQEAKLSAgICAgfQotIH0KLSAKLSsjW2NmZyhwcm9jbWFjcm8yX3NlbXZlcl9leGVt cHQpXQotIGltcGwgRGVidWcgZm9yIFNvdXJjZUZpbGUgewotICAgICBmbiBmbXQoJnNlbGYsIGY6 ICZtdXQgZm10OjpGb3JtYXR0ZXIpIC0+IGZtdDo6UmVzdWx0IHsKLSAgICAgICAgIGYuZGVidWdf c3RydWN0KCJTb3VyY2VGaWxlIikKLUBAIC05MjIsNyArOTI3LDcgQEAKLSAKLSAjW2Rlcml2ZShD bG9uZSldCi0gcHViKGNyYXRlKSBzdHJ1Y3QgTGl0ZXJhbCB7Ci0tICAgIHJlcHI6IFN0cmluZywK LSsgICAgcHViKGNyYXRlKSByZXByOiBTdHJpbmcsCi0gICAgIHNwYW46IFNwYW4sCi0gfQotIAot QEAgLTEwMDMsNzEgKzEwMDgsOTggQEAKLSAgICAgICAgIExpdGVyYWw6Ol9uZXcocykKLSAgICAg fQotIAotLSAgICBwdWIgZm4gc3RyaW5nKHQ6ICZzdHIpIC0+IExpdGVyYWwgewotLSAgICAgICAg bGV0IG11dCByZXByID0gU3RyaW5nOjp3aXRoX2NhcGFjaXR5KHQubGVuKCkgKyAyKTsKLSsgICAg cHViIGZuIHN0cmluZyhzdHJpbmc6ICZzdHIpIC0+IExpdGVyYWwgewotKyAgICAgICAgbGV0IG11 dCByZXByID0gU3RyaW5nOjp3aXRoX2NhcGFjaXR5KHN0cmluZy5sZW4oKSArIDIpOwotICAgICAg ICAgcmVwci5wdXNoKCciJyk7Ci0tICAgICAgICBsZXQgbXV0IGNoYXJzID0gdC5jaGFycygpOwot LSAgICAgICAgd2hpbGUgbGV0IFNvbWUoY2gpID0gY2hhcnMubmV4dCgpIHsKLS0gICAgICAgICAg ICBpZiBjaCA9PSAnXDAnIHsKLS0gICAgICAgICAgICAgICAgcmVwci5wdXNoX3N0cigKLS0gICAg ICAgICAgICAgICAgICAgIGlmIGNoYXJzCi0tICAgICAgICAgICAgICAgICAgICAgICAgLmFzX3N0 cigpCi0tICAgICAgICAgICAgICAgICAgICAgICAgLnN0YXJ0c193aXRoKHxuZXh0fCAnMCcgPD0g bmV4dCAmJiBuZXh0IDw9ICc3JykKLS0gICAgICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAg ICAgICAgICAgICAgICAvLyBjaXJjdW12ZW50IGNsaXBweTo6b2N0YWxfZXNjYXBlcyBsaW50Ci0t ICAgICAgICAgICAgICAgICAgICAgICAgIlxceDAwIgotLSAgICAgICAgICAgICAgICAgICAgfSBl bHNlIHsKLS0gICAgICAgICAgICAgICAgICAgICAgICAiXFwwIgotLSAgICAgICAgICAgICAgICAg ICAgfSwKLS0gICAgICAgICAgICAgICAgKTsKLS0gICAgICAgICAgICB9IGVsc2UgaWYgY2ggPT0g J1wnJyB7Ci0tICAgICAgICAgICAgICAgIC8vIGVzY2FwZV9kZWJ1ZyB0dXJucyB0aGlzIGludG8g IlwnIiB3aGljaCBpcyB1bm5lY2Vzc2FyeS4KLS0gICAgICAgICAgICAgICAgcmVwci5wdXNoKGNo KTsKLS0gICAgICAgICAgICB9IGVsc2UgewotLSAgICAgICAgICAgICAgICByZXByLmV4dGVuZChj aC5lc2NhcGVfZGVidWcoKSk7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgfQotKyAgICAgICAg ZXNjYXBlX3V0Zjgoc3RyaW5nLCAmbXV0IHJlcHIpOwotICAgICAgICAgcmVwci5wdXNoKCciJyk7 Ci0gICAgICAgICBMaXRlcmFsOjpfbmV3KHJlcHIpCi0gICAgIH0KLSAKLS0gICAgcHViIGZuIGNo YXJhY3Rlcih0OiBjaGFyKSAtPiBMaXRlcmFsIHsKLSsgICAgcHViIGZuIGNoYXJhY3RlcihjaDog Y2hhcikgLT4gTGl0ZXJhbCB7Ci0gICAgICAgICBsZXQgbXV0IHJlcHIgPSBTdHJpbmc6Om5ldygp OwotICAgICAgICAgcmVwci5wdXNoKCdcJycpOwotLSAgICAgICAgaWYgdCA9PSAnIicgewotKyAg ICAgICAgaWYgY2ggPT0gJyInIHsKLSAgICAgICAgICAgICAvLyBlc2NhcGVfZGVidWcgdHVybnMg dGhpcyBpbnRvICdcIicgd2hpY2ggaXMgdW5uZWNlc3NhcnkuCi0tICAgICAgICAgICAgcmVwci5w dXNoKHQpOwotKyAgICAgICAgICAgIHJlcHIucHVzaChjaCk7Ci0gICAgICAgICB9IGVsc2Ugewot LSAgICAgICAgICAgIHJlcHIuZXh0ZW5kKHQuZXNjYXBlX2RlYnVnKCkpOwotKyAgICAgICAgICAg IHJlcHIuZXh0ZW5kKGNoLmVzY2FwZV9kZWJ1ZygpKTsKLSsgICAgICAgIH0KLSsgICAgICAgIHJl cHIucHVzaCgnXCcnKTsKLSsgICAgICAgIExpdGVyYWw6Ol9uZXcocmVwcikKLSsgICAgfQotKwot KyAgICBwdWIgZm4gYnl0ZV9jaGFyYWN0ZXIoYnl0ZTogdTgpIC0+IExpdGVyYWwgewotKyAgICAg ICAgbGV0IG11dCByZXByID0gImInIi50b19zdHJpbmcoKTsKLSsgICAgICAgICNbYWxsb3coY2xp cHB5OjptYXRjaF9vdmVybGFwcGluZ19hcm0pXQotKyAgICAgICAgbWF0Y2ggYnl0ZSB7Ci0rICAg ICAgICAgICAgYidcMCcgPT4gcmVwci5wdXNoX3N0cihyIlwwIiksCi0rICAgICAgICAgICAgYidc dCcgPT4gcmVwci5wdXNoX3N0cihyIlx0IiksCi0rICAgICAgICAgICAgYidcbicgPT4gcmVwci5w dXNoX3N0cihyIlxuIiksCi0rICAgICAgICAgICAgYidccicgPT4gcmVwci5wdXNoX3N0cihyIlxy IiksCi0rICAgICAgICAgICAgYidcJycgPT4gcmVwci5wdXNoX3N0cihyIlwnIiksCi0rICAgICAg ICAgICAgYidcXCcgPT4gcmVwci5wdXNoX3N0cihyIlxcIiksCi0rICAgICAgICAgICAgYidceDIw Jy4uPWInXHg3RScgPT4gcmVwci5wdXNoKGJ5dGUgYXMgY2hhciksCi0rICAgICAgICAgICAgXyA9 PiB7Ci0rICAgICAgICAgICAgICAgIGxldCBfID0gd3JpdGUhKHJlcHIsIHIiXHh7OjAyWH0iLCBi eXRlKTsKLSsgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgICAgICByZXByLnB1c2goJ1wn Jyk7Ci0gICAgICAgICBMaXRlcmFsOjpfbmV3KHJlcHIpCi0gICAgIH0KLSAKLSAgICAgcHViIGZu IGJ5dGVfc3RyaW5nKGJ5dGVzOiAmW3U4XSkgLT4gTGl0ZXJhbCB7Ci0tICAgICAgICBsZXQgbXV0 IGVzY2FwZWQgPSAiYlwiIi50b19zdHJpbmcoKTsKLSsgICAgICAgIGxldCBtdXQgcmVwciA9ICJi XCIiLnRvX3N0cmluZygpOwotICAgICAgICAgbGV0IG11dCBieXRlcyA9IGJ5dGVzLml0ZXIoKTsK LSAgICAgICAgIHdoaWxlIGxldCBTb21lKCZiKSA9IGJ5dGVzLm5leHQoKSB7Ci0gICAgICAgICAg ICAgI1thbGxvdyhjbGlwcHk6Om1hdGNoX292ZXJsYXBwaW5nX2FybSldCi0gICAgICAgICAgICAg bWF0Y2ggYiB7Ci0tICAgICAgICAgICAgICAgIGInXDAnID0+IGVzY2FwZWQucHVzaF9zdHIobWF0 Y2ggYnl0ZXMuYXNfc2xpY2UoKS5maXJzdCgpIHsKLSsgICAgICAgICAgICAgICAgYidcMCcgPT4g cmVwci5wdXNoX3N0cihtYXRjaCBieXRlcy5hc19zbGljZSgpLmZpcnN0KCkgewotICAgICAgICAg ICAgICAgICAgICAgLy8gY2lyY3VtdmVudCBjbGlwcHk6Om9jdGFsX2VzY2FwZXMgbGludAotICAg ICAgICAgICAgICAgICAgICAgU29tZShiJzAnLi49Yic3JykgPT4gciJceDAwIiwKLSAgICAgICAg ICAgICAgICAgICAgIF8gPT4gciJcMCIsCi0gICAgICAgICAgICAgICAgIH0pLAotLSAgICAgICAg ICAgICAgICBiJ1x0JyA9PiBlc2NhcGVkLnB1c2hfc3RyKHIiXHQiKSwKLS0gICAgICAgICAgICAg ICAgYidcbicgPT4gZXNjYXBlZC5wdXNoX3N0cihyIlxuIiksCi0tICAgICAgICAgICAgICAgIGIn XHInID0+IGVzY2FwZWQucHVzaF9zdHIociJcciIpLAotLSAgICAgICAgICAgICAgICBiJyInID0+ IGVzY2FwZWQucHVzaF9zdHIoIlxcXCIiKSwKLS0gICAgICAgICAgICAgICAgYidcXCcgPT4gZXNj YXBlZC5wdXNoX3N0cigiXFxcXCIpLAotLSAgICAgICAgICAgICAgICBiJ1x4MjAnLi49YidceDdF JyA9PiBlc2NhcGVkLnB1c2goYiBhcyBjaGFyKSwKLSsgICAgICAgICAgICAgICAgYidcdCcgPT4g cmVwci5wdXNoX3N0cihyIlx0IiksCi0rICAgICAgICAgICAgICAgIGInXG4nID0+IHJlcHIucHVz aF9zdHIociJcbiIpLAotKyAgICAgICAgICAgICAgICBiJ1xyJyA9PiByZXByLnB1c2hfc3RyKHIi XHIiKSwKLSsgICAgICAgICAgICAgICAgYiciJyA9PiByZXByLnB1c2hfc3RyKCJcXFwiIiksCi0r ICAgICAgICAgICAgICAgIGInXFwnID0+IHJlcHIucHVzaF9zdHIociJcXCIpLAotKyAgICAgICAg ICAgICAgICBiJ1x4MjAnLi49YidceDdFJyA9PiByZXByLnB1c2goYiBhcyBjaGFyKSwKLSAgICAg ICAgICAgICAgICAgXyA9PiB7Ci0tICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHdyaXRlIShl c2NhcGVkLCAiXFx4ezowMlh9IiwgYik7Ci0rICAgICAgICAgICAgICAgICAgICBsZXQgXyA9IHdy aXRlIShyZXByLCByIlx4ezowMlh9IiwgYik7Ci0gICAgICAgICAgICAgICAgIH0KLSAgICAgICAg ICAgICB9Ci0gICAgICAgICB9Ci0tICAgICAgICBlc2NhcGVkLnB1c2goJyInKTsKLS0gICAgICAg IExpdGVyYWw6Ol9uZXcoZXNjYXBlZCkKLSsgICAgICAgIHJlcHIucHVzaCgnIicpOwotKyAgICAg ICAgTGl0ZXJhbDo6X25ldyhyZXByKQotKyAgICB9Ci0rCi0rICAgIHB1YiBmbiBjX3N0cmluZyhz dHJpbmc6ICZDU3RyKSAtPiBMaXRlcmFsIHsKLSsgICAgICAgIGxldCBtdXQgcmVwciA9ICJjXCIi LnRvX3N0cmluZygpOwotKyAgICAgICAgbGV0IG11dCBieXRlcyA9IHN0cmluZy50b19ieXRlcygp OwotKyAgICAgICAgd2hpbGUgIWJ5dGVzLmlzX2VtcHR5KCkgewotKyAgICAgICAgICAgIGxldCAo dmFsaWQsIGludmFsaWQpID0gbWF0Y2ggc3RyOjpmcm9tX3V0ZjgoYnl0ZXMpIHsKLSsgICAgICAg ICAgICAgICAgT2soYWxsX3ZhbGlkKSA9PiB7Ci0rICAgICAgICAgICAgICAgICAgICBieXRlcyA9 IGIiIjsKLSsgICAgICAgICAgICAgICAgICAgIChhbGxfdmFsaWQsIGJ5dGVzKQotKyAgICAgICAg ICAgICAgICB9Ci0rICAgICAgICAgICAgICAgIEVycih1dGY4X2Vycm9yKSA9PiB7Ci0rICAgICAg ICAgICAgICAgICAgICBsZXQgKHZhbGlkLCByZXN0KSA9IGJ5dGVzLnNwbGl0X2F0KHV0ZjhfZXJy b3IudmFsaWRfdXBfdG8oKSk7Ci0rICAgICAgICAgICAgICAgICAgICBsZXQgdmFsaWQgPSBzdHI6 OmZyb21fdXRmOCh2YWxpZCkudW53cmFwKCk7Ci0rICAgICAgICAgICAgICAgICAgICBsZXQgaW52 YWxpZCA9IHV0ZjhfZXJyb3IKLSsgICAgICAgICAgICAgICAgICAgICAgICAuZXJyb3JfbGVuKCkK LSsgICAgICAgICAgICAgICAgICAgICAgICAubWFwX29yKHJlc3QsIHxlcnJvcl9sZW58ICZyZXN0 Wy4uZXJyb3JfbGVuXSk7Ci0rICAgICAgICAgICAgICAgICAgICBieXRlcyA9ICZieXRlc1t2YWxp ZC5sZW4oKSArIGludmFsaWQubGVuKCkuLl07Ci0rICAgICAgICAgICAgICAgICAgICAodmFsaWQs IGludmFsaWQpCi0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICB9OwotKyAgICAgICAg ICAgIGVzY2FwZV91dGY4KHZhbGlkLCAmbXV0IHJlcHIpOwotKyAgICAgICAgICAgIGZvciAmYnl0 ZSBpbiBpbnZhbGlkIHsKLSsgICAgICAgICAgICAgICAgbGV0IF8gPSB3cml0ZSEocmVwciwgciJc eHs6MDJYfSIsIGJ5dGUpOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSsgICAgICAgIHJl cHIucHVzaCgnIicpOwotKyAgICAgICAgTGl0ZXJhbDo6X25ldyhyZXByKQotICAgICB9Ci0gCi0g ICAgIHB1YiBmbiBzcGFuKCZzZWxmKSAtPiBTcGFuIHsKLUBAIC0xMTY4LDMgKzEyMDAsMjcgQEAK LSAgICAgICAgIGRlYnVnLmZpbmlzaCgpCi0gICAgIH0KLSB9Ci0rCi0rZm4gZXNjYXBlX3V0Zjgo c3RyaW5nOiAmc3RyLCByZXByOiAmbXV0IFN0cmluZykgewotKyAgICBsZXQgbXV0IGNoYXJzID0g c3RyaW5nLmNoYXJzKCk7Ci0rICAgIHdoaWxlIGxldCBTb21lKGNoKSA9IGNoYXJzLm5leHQoKSB7 Ci0rICAgICAgICBpZiBjaCA9PSAnXDAnIHsKLSsgICAgICAgICAgICByZXByLnB1c2hfc3RyKAot KyAgICAgICAgICAgICAgICBpZiBjaGFycwotKyAgICAgICAgICAgICAgICAgICAgLmFzX3N0cigp Ci0rICAgICAgICAgICAgICAgICAgICAuc3RhcnRzX3dpdGgofG5leHR8ICcwJyA8PSBuZXh0ICYm IG5leHQgPD0gJzcnKQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICAv LyBjaXJjdW12ZW50IGNsaXBweTo6b2N0YWxfZXNjYXBlcyBsaW50Ci0rICAgICAgICAgICAgICAg ICAgICByIlx4MDAiCi0rICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0rICAgICAgICAgICAgICAg ICAgICByIlwwIgotKyAgICAgICAgICAgICAgICB9LAotKyAgICAgICAgICAgICk7Ci0rICAgICAg ICB9IGVsc2UgaWYgY2ggPT0gJ1wnJyB7Ci0rICAgICAgICAgICAgLy8gZXNjYXBlX2RlYnVnIHR1 cm5zIHRoaXMgaW50byAiXCciIHdoaWNoIGlzIHVubmVjZXNzYXJ5LgotKyAgICAgICAgICAgIHJl cHIucHVzaChjaCk7Ci0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgIHJlcHIuZXh0ZW5k KGNoLmVzY2FwZV9kZWJ1ZygpKTsKLSsgICAgICAgIH0KLSsgICAgfQotK30KLWRpZmYgLU51ciBj aHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19p by92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3NyYy9saWIucnMgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNy bzItMS4wLjgwL3NyYy9saWIucnMKLS0tLSBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9w YXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3Ny Yy9saWIucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRv ci9wcm9jLW1hY3JvMi0xLjAuODAvc3JjL2xpYi5ycwkyMDI0LTA1LTE1IDIzOjQ3OjI0LjAwMDAw MDAwMCArMDIwMAotQEAgLTg2LDcgKzg2LDcgQEAKLSAvLyEgYSBkaWZmZXJlbnQgdGhyZWFkLgot IAotIC8vIFByb2MtbWFjcm8yIHR5cGVzIGluIHJ1c3Rkb2Mgb2Ygb3RoZXIgY3JhdGVzIGdldCBs aW5rZWQgdG8gaGVyZS4KLS0jIVtkb2MoaHRtbF9yb290X3VybCA9ICJodHRwczovL2RvY3MucnMv cHJvYy1tYWNybzIvMS4wLjc4IildCi0rIyFbZG9jKGh0bWxfcm9vdF91cmwgPSAiaHR0cHM6Ly9k b2NzLnJzL3Byb2MtbWFjcm8yLzEuMC44MCIpXQotICMhW2NmZ19hdHRyKGFueShwcm9jX21hY3Jv X3NwYW4sIHN1cGVyX3Vuc3RhYmxlKSwgZmVhdHVyZShwcm9jX21hY3JvX3NwYW4pKV0KLSAjIVtj ZmdfYXR0cihzdXBlcl91bnN0YWJsZSwgZmVhdHVyZShwcm9jX21hY3JvX2RlZl9zaXRlKSldCi0g IyFbY2ZnX2F0dHIoZG9jX2NmZywgZmVhdHVyZShkb2NfY2ZnKSldCi1AQCAtOTYsNiArOTYsNyBA QAotICAgICBjbGlwcHk6OmNhc3RfcG9zc2libGVfdHJ1bmNhdGlvbiwKLSAgICAgY2xpcHB5Ojpj aGVja2VkX2NvbnZlcnNpb25zLAotICAgICBjbGlwcHk6OmRvY19tYXJrZG93biwKLSsgICAgY2xp cHB5OjppbmNvbXBhdGlibGVfbXNydiwKLSAgICAgY2xpcHB5OjppdGVtc19hZnRlcl9zdGF0ZW1l bnRzLAotICAgICBjbGlwcHk6Oml0ZXJfd2l0aG91dF9pbnRvX2l0ZXIsCi0gICAgIGNsaXBweTo6 bGV0X3VuZGVyc2NvcmVfdW50eXBlZCwKLUBAIC0xNjksNiArMTcwLDcgQEAKLSB1c2UgY29yZTo6 b3BzOjpSYW5nZUJvdW5kczsKLSB1c2UgY29yZTo6c3RyOjpGcm9tU3RyOwotIHVzZSBzdGQ6OmVy cm9yOjpFcnJvcjsKLSt1c2Ugc3RkOjpmZmk6OkNTdHI7Ci0gI1tjZmcocHJvY21hY3JvMl9zZW12 ZXJfZXhlbXB0KV0KLSB1c2Ugc3RkOjpwYXRoOjpQYXRoQnVmOwotIAotQEAgLTEyMzMsOSArMTIz NSwxOSBAQAotICAgICAgICAgTGl0ZXJhbDo6X25ldyhpbXA6OkxpdGVyYWw6OmNoYXJhY3Rlcihj aCkpCi0gICAgIH0KLSAKLSsgICAgLy8vIEJ5dGUgY2hhcmFjdGVyIGxpdGVyYWwuCi0rICAgIHB1 YiBmbiBieXRlX2NoYXJhY3RlcihieXRlOiB1OCkgLT4gTGl0ZXJhbCB7Ci0rICAgICAgICBMaXRl cmFsOjpfbmV3KGltcDo6TGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYnl0ZSkpCi0rICAgIH0KLSsK LSAgICAgLy8vIEJ5dGUgc3RyaW5nIGxpdGVyYWwuCi0tICAgIHB1YiBmbiBieXRlX3N0cmluZyhz OiAmW3U4XSkgLT4gTGl0ZXJhbCB7Ci0tICAgICAgICBMaXRlcmFsOjpfbmV3KGltcDo6TGl0ZXJh bDo6Ynl0ZV9zdHJpbmcocykpCi0rICAgIHB1YiBmbiBieXRlX3N0cmluZyhieXRlczogJlt1OF0p IC0+IExpdGVyYWwgewotKyAgICAgICAgTGl0ZXJhbDo6X25ldyhpbXA6OkxpdGVyYWw6OmJ5dGVf c3RyaW5nKGJ5dGVzKSkKLSsgICAgfQotKwotKyAgICAvLy8gQyBzdHJpbmcgbGl0ZXJhbC4KLSsg ICAgcHViIGZuIGNfc3RyaW5nKHN0cmluZzogJkNTdHIpIC0+IExpdGVyYWwgewotKyAgICAgICAg TGl0ZXJhbDo6X25ldyhpbXA6OkxpdGVyYWw6OmNfc3RyaW5nKHN0cmluZykpCi0gICAgIH0KLSAK LSAgICAgLy8vIFJldHVybnMgdGhlIHNwYW4gZW5jb21wYXNzaW5nIHRoaXMgbGl0ZXJhbC4KLWRp ZmYgLU51ciBjaHJvbWl1bS0xMjMuMC42MzEyLjEyMi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVt X2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3NyYy93cmFwcGVyLnJzIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVu ZG9yL3Byb2MtbWFjcm8yLTEuMC44MC9zcmMvd3JhcHBlci5ycwotLS0tIGNocm9taXVtLTEyMy4w LjYzMTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9j LW1hY3JvMi0xLjAuNzgvc3JjL3dyYXBwZXIucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1c3QvY2hy b21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODAvc3JjL3dyYXBwZXIucnMJ MjAyNC0wNS0xNSAyMzo0NzoyNC4wMDAwMDAwMDAgKzAyMDAKLUBAIC03LDYgKzcsNyBAQAotIHVz ZSBjb3JlOjpvcHM6OlJhbmdlOwotIHVzZSBjb3JlOjpvcHM6OlJhbmdlQm91bmRzOwotIHVzZSBj b3JlOjpzdHI6OkZyb21TdHI7Ci0rdXNlIHN0ZDo6ZmZpOjpDU3RyOwotIHVzZSBzdGQ6OnBhbmlj OwotICNbY2ZnKHN1cGVyX3Vuc3RhYmxlKV0KLSB1c2Ugc3RkOjpwYXRoOjpQYXRoQnVmOwotQEAg LTg0NiwxOSArODQ3LDM4IEBACi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAgcHViIGZuIHN0 cmluZyh0OiAmc3RyKSAtPiBMaXRlcmFsIHsKLSsgICAgcHViIGZuIHN0cmluZyhzdHJpbmc6ICZz dHIpIC0+IExpdGVyYWwgewotICAgICAgICAgaWYgaW5zaWRlX3Byb2NfbWFjcm8oKSB7Ci0tICAg ICAgICAgICAgTGl0ZXJhbDo6Q29tcGlsZXIocHJvY19tYWNybzo6TGl0ZXJhbDo6c3RyaW5nKHQp KQotKyAgICAgICAgICAgIExpdGVyYWw6OkNvbXBpbGVyKHByb2NfbWFjcm86OkxpdGVyYWw6OnN0 cmluZyhzdHJpbmcpKQotICAgICAgICAgfSBlbHNlIHsKLS0gICAgICAgICAgICBMaXRlcmFsOjpG YWxsYmFjayhmYWxsYmFjazo6TGl0ZXJhbDo6c3RyaW5nKHQpKQotKyAgICAgICAgICAgIExpdGVy YWw6OkZhbGxiYWNrKGZhbGxiYWNrOjpMaXRlcmFsOjpzdHJpbmcoc3RyaW5nKSkKLSAgICAgICAg IH0KLSAgICAgfQotIAotLSAgICBwdWIgZm4gY2hhcmFjdGVyKHQ6IGNoYXIpIC0+IExpdGVyYWwg ewotKyAgICBwdWIgZm4gY2hhcmFjdGVyKGNoOiBjaGFyKSAtPiBMaXRlcmFsIHsKLSAgICAgICAg IGlmIGluc2lkZV9wcm9jX21hY3JvKCkgewotLSAgICAgICAgICAgIExpdGVyYWw6OkNvbXBpbGVy KHByb2NfbWFjcm86OkxpdGVyYWw6OmNoYXJhY3Rlcih0KSkKLSsgICAgICAgICAgICBMaXRlcmFs OjpDb21waWxlcihwcm9jX21hY3JvOjpMaXRlcmFsOjpjaGFyYWN0ZXIoY2gpKQotICAgICAgICAg fSBlbHNlIHsKLS0gICAgICAgICAgICBMaXRlcmFsOjpGYWxsYmFjayhmYWxsYmFjazo6TGl0ZXJh bDo6Y2hhcmFjdGVyKHQpKQotKyAgICAgICAgICAgIExpdGVyYWw6OkZhbGxiYWNrKGZhbGxiYWNr OjpMaXRlcmFsOjpjaGFyYWN0ZXIoY2gpKQotKyAgICAgICAgfQotKyAgICB9Ci0rCi0rICAgIHB1 YiBmbiBieXRlX2NoYXJhY3RlcihieXRlOiB1OCkgLT4gTGl0ZXJhbCB7Ci0rICAgICAgICBpZiBp bnNpZGVfcHJvY19tYWNybygpIHsKLSsgICAgICAgICAgICBMaXRlcmFsOjpDb21waWxlcih7Ci0r ICAgICAgICAgICAgICAgICNbY2ZnKG5vdChub19saXRlcmFsX2J5dGVfY2hhcmFjdGVyKSldCi0r ICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIHByb2NfbWFjcm86OkxpdGVy YWw6OmJ5dGVfY2hhcmFjdGVyKGJ5dGUpCi0rICAgICAgICAgICAgICAgIH0KLSsKLSsgICAgICAg ICAgICAgICAgI1tjZmcobm9fbGl0ZXJhbF9ieXRlX2NoYXJhY3RlcildCi0rICAgICAgICAgICAg ICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGZhbGxiYWNrOjpMaXRl cmFsOjpieXRlX2NoYXJhY3RlcihieXRlKTsKLSsgICAgICAgICAgICAgICAgICAgIGZhbGxiYWNr LnJlcHIucGFyc2U6Ojxwcm9jX21hY3JvOjpMaXRlcmFsPigpLnVud3JhcCgpCi0rICAgICAgICAg ICAgICAgIH0KLSsgICAgICAgICAgICB9KQotKyAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgICAg ICBMaXRlcmFsOjpGYWxsYmFjayhmYWxsYmFjazo6TGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYnl0 ZSkpCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLUBAIC04NzAsNiArODkwLDI1IEBACi0gICAgICAg ICB9Ci0gICAgIH0KLSAKLSsgICAgcHViIGZuIGNfc3RyaW5nKHN0cmluZzogJkNTdHIpIC0+IExp dGVyYWwgewotKyAgICAgICAgaWYgaW5zaWRlX3Byb2NfbWFjcm8oKSB7Ci0rICAgICAgICAgICAg TGl0ZXJhbDo6Q29tcGlsZXIoewotKyAgICAgICAgICAgICAgICAjW2NmZyhub3Qobm9fbGl0ZXJh bF9jX3N0cmluZykpXQotKyAgICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICAgICBw cm9jX21hY3JvOjpMaXRlcmFsOjpjX3N0cmluZyhzdHJpbmcpCi0rICAgICAgICAgICAgICAgIH0K LSsKLSsgICAgICAgICAgICAgICAgI1tjZmcobm9fbGl0ZXJhbF9jX3N0cmluZyldCi0rICAgICAg ICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIGxldCBmYWxsYmFjayA9IGZhbGxiYWNr OjpMaXRlcmFsOjpjX3N0cmluZyhzdHJpbmcpOwotKyAgICAgICAgICAgICAgICAgICAgZmFsbGJh Y2sucmVwci5wYXJzZTo6PHByb2NfbWFjcm86OkxpdGVyYWw+KCkudW53cmFwKCkKLSsgICAgICAg ICAgICAgICAgfQotKyAgICAgICAgICAgIH0pCi0rICAgICAgICB9IGVsc2UgewotKyAgICAgICAg ICAgIExpdGVyYWw6OkZhbGxiYWNrKGZhbGxiYWNrOjpMaXRlcmFsOjpjX3N0cmluZyhzdHJpbmcp KQotKyAgICAgICAgfQotKyAgICB9Ci0rCi0gICAgIHB1YiBmbiBzcGFuKCZzZWxmKSAtPiBTcGFu IHsKLSAgICAgICAgIG1hdGNoIHNlbGYgewotICAgICAgICAgICAgIExpdGVyYWw6OkNvbXBpbGVy KGxpdCkgPT4gU3Bhbjo6Q29tcGlsZXIobGl0LnNwYW4oKSksCi1kaWZmIC1OdXIgY2hyb21pdW0t MTIzLjAuNjMxMi4xMjIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3Byb2MtbWFjcm8yLTEuMC43OC90ZXN0cy9tYXJrZXIucnMgY2hyb21pdW0tMTI1LjAuNjQyMi42 MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzIt MS4wLjgwL3Rlc3RzL21hcmtlci5ycwotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuMTIyL3RoaXJk X3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgv dGVzdHMvbWFya2VyLnJzCTIwMjQtMDQtMTAgMjM6MjU6MjEuMDAwMDAwMDAwICswMjAwCi0rKysg Y2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19p by92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgwL3Rlc3RzL21hcmtlci5ycwkyMDI0LTA1LTE1IDIz OjQ3OjI0LjAwMDAwMDAwMCArMDIwMAotQEAgLTIxLDYgKzIxLDcgQEAKLSAgICAgICAgICAgICAk KAotICAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICAvLyBJbXBsZW1lbnRl ZCBmb3IgdHlwZXMgdGhhdCBpbXBsZW1lbnQgJG1hcmtlci4KLSsgICAgICAgICAgICAgICAgICAg ICNbYWxsb3coZGVhZF9jb2RlKV0KLSAgICAgICAgICAgICAgICAgICAgIHRyYWl0IElzTm90SW1w bGVtZW50ZWQgewotICAgICAgICAgICAgICAgICAgICAgICAgIGZuIGFzc2VydF9ub3RfaW1wbGVt ZW50ZWQoKSB7fQotICAgICAgICAgICAgICAgICAgICAgfQotZGlmZiAtTnVyIGNocm9taXVtLTEy My4wLjYzMTIuMTIyL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9w cm9jLW1hY3JvMi0xLjAuNzgvdGVzdHMvdGVzdC5ycyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3Ro aXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAu ODAvdGVzdHMvdGVzdC5ycwotLS0tIGNocm9taXVtLTEyMy4wLjYzMTIuMTIyL3RoaXJkX3BhcnR5 L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvdGVzdHMv dGVzdC5ycwkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3Byb2MtbWFjcm8yLTEuMC44MC90ZXN0cy90ZXN0LnJzCTIwMjQtMDUtMTUgMjM6NDc6MjQuMDAw MDAwMDAwICswMjAwCi1AQCAtMSwxMSArMSwxNCBAQAotICMhW2FsbG93KAotICAgICBjbGlwcHk6 OmFzc2VydGlvbnNfb25fcmVzdWx0X3N0YXRlcywKLSAgICAgY2xpcHB5OjppdGVtc19hZnRlcl9z dGF0ZW1lbnRzLAotKyAgICBjbGlwcHk6Om5lZWRsZXNzX3Bhc3NfYnlfdmFsdWUsCi0rICAgIGNs aXBweTo6bmVlZGxlc3NfcmF3X3N0cmluZ19oYXNoZXMsCi0gICAgIGNsaXBweTo6bm9uX2FzY2lp X2xpdGVyYWwsCi0gICAgIGNsaXBweTo6b2N0YWxfZXNjYXBlcwotICldCi0gCi0gdXNlIHByb2Nf bWFjcm8yOjp7SWRlbnQsIExpdGVyYWwsIFB1bmN0LCBTcGFjaW5nLCBTcGFuLCBUb2tlblN0cmVh bSwgVG9rZW5UcmVlfTsKLSt1c2Ugc3RkOjpmZmk6OkNTdHI7Ci0gdXNlIHN0ZDo6aXRlcjsKLSB1 c2Ugc3RkOjpzdHI6OntzZWxmLCBGcm9tU3RyfTsKLSAKLUBAIC05NiwxMiArOTksMjIgQEAKLSAK LSAjW3Rlc3RdCi0gZm4gbGl0ZXJhbF9zdHJpbmcoKSB7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJh bDo6c3RyaW5nKCJmb28iKS50b19zdHJpbmcoKSwgIlwiZm9vXCIiKTsKLS0gICAgYXNzZXJ0X2Vx IShMaXRlcmFsOjpzdHJpbmcoIlwiIikudG9fc3RyaW5nKCksICJcIlxcXCJcIiIpOwotLSAgICBh c3NlcnRfZXEhKExpdGVyYWw6OnN0cmluZygiZGlkbid0IikudG9fc3RyaW5nKCksICJcImRpZG4n dFwiIik7Ci0tICAgIGFzc2VydF9lcSEoCi0tICAgICAgICBMaXRlcmFsOjpzdHJpbmcoImFcMDBi XDA3Y1wwOGRcMGVcMCIpLnRvX3N0cmluZygpLAotLSAgICAgICAgIlwiYVxceDAwMGJcXHgwMDdj XFwwOGRcXDBlXFwwXCIiLAotKyAgICAjW3RyYWNrX2NhbGxlcl0KLSsgICAgZm4gYXNzZXJ0KGxp dGVyYWw6IExpdGVyYWwsIGV4cGVjdGVkOiAmc3RyKSB7Ci0rICAgICAgICBhc3NlcnRfZXEhKGxp dGVyYWwudG9fc3RyaW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7Ci0rICAgIH0KLSsKLSsgICAgYXNz ZXJ0KExpdGVyYWw6OnN0cmluZygiIiksIHIjIiAgIiIgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVy YWw6OnN0cmluZygiYUEiKSwgciMiICAiYUEiICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpz dHJpbmcoIlx0IiksIHIjIiAgIlx0IiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3RyaW5n KCLinaQiKSwgciMiICAi4p2kIiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3RyaW5nKCIn IiksIHIjIiAgIiciICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpzdHJpbmcoIlwiIiksIHIj IiAgIlwiIiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3RyaW5nKCJcMCIpLCByIyIgICJc MCIgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygiXHV7MX0iKSwgciMiICAiXHV7 MX0iICAiIyk7Ci0rICAgIGFzc2VydCgKLSsgICAgICAgIExpdGVyYWw6OnN0cmluZygiYVwwMGJc MDdjXDA4ZFwwZVwwIiksCi0rICAgICAgICByIyIgICJhXHgwMDBiXHgwMDdjXDA4ZFwwZVwwIiAg IiMsCi0gICAgICk7Ci0gCi0gICAgICJcIlxcXHJcbiAgICB4XCIiLnBhcnNlOjo8VG9rZW5TdHJl YW0+KCkudW53cmFwKCk7Ci1AQCAtMTMzLDE1ICsxNDYsNDIgQEAKLSB9Ci0gCi0gI1t0ZXN0XQot K2ZuIGxpdGVyYWxfYnl0ZV9jaGFyYWN0ZXIoKSB7Ci0rICAgICNbdHJhY2tfY2FsbGVyXQotKyAg ICBmbiBhc3NlcnQobGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKLSsgICAgICAg IGFzc2VydF9lcSEobGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQudHJpbSgpKTsKLSsgICAg fQotKwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYidhJyksIHIjIiAgYidh JyAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYidcMCcpLCByIyIg IGInXDAnICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX2NoYXJhY3RlcihiJ1x0Jyks IHIjIiAgYidcdCcgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGIn XG4nKSwgciMiICBiJ1xuJyAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0 ZXIoYidccicpLCByIyIgIGInXHInICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX2No YXJhY3RlcihiJ1wnJyksIHIjIiAgYidcJycgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5 dGVfY2hhcmFjdGVyKGInXFwnKSwgciMiICBiJ1xcJyAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJh bDo6Ynl0ZV9jaGFyYWN0ZXIoYidceDFmJyksIHIjIiAgYidceDFGJyAgIiMpOwotKyAgICBhc3Nl cnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYiciJyksIHIjIiAgYiciJyAgIiMpOwotK30KLSsK LSsjW3Rlc3RdCi0gZm4gbGl0ZXJhbF9ieXRlX3N0cmluZygpIHsKLS0gICAgYXNzZXJ0X2VxIShM aXRlcmFsOjpieXRlX3N0cmluZyhiIiIpLnRvX3N0cmluZygpLCAiYlwiXCIiKTsKLS0gICAgYXNz ZXJ0X2VxISgKLS0gICAgICAgIExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXDBcdFxuXHJcIlxcMlx4 MTAiKS50b19zdHJpbmcoKSwKLS0gICAgICAgICJiXCJcXDBcXHRcXG5cXHJcXFwiXFxcXDJcXHgx MFwiIiwKLS0gICAgKTsKLS0gICAgYXNzZXJ0X2VxISgKLS0gICAgICAgIExpdGVyYWw6OmJ5dGVf c3RyaW5nKGIiYVwwMGJcMDdjXDA4ZFwwZVwwIikudG9fc3RyaW5nKCksCi0tICAgICAgICAiYlwi YVxceDAwMGJcXHgwMDdjXFwwOGRcXDBlXFwwXCIiLAotKyAgICAjW3RyYWNrX2NhbGxlcl0KLSsg ICAgZm4gYXNzZXJ0KGxpdGVyYWw6IExpdGVyYWwsIGV4cGVjdGVkOiAmc3RyKSB7Ci0rICAgICAg ICBhc3NlcnRfZXEhKGxpdGVyYWwudG9fc3RyaW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7Ci0rICAg IH0KLSsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiIiksIHIjIiAgYiIiICAi Iyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIlwwIiksIHIjIiAgYiJcMCIg ICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXHQiKSwgciMiICBiIlx0 IiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJcbiIpLCByIyIgIGIi XG4iICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIlxyIiksIHIjIiAg YiJcciIgICIjKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXCIiKSwgciMi ICBiIlwiIiAgIiMpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJcXCIpLCBy IyIgIGIiXFwiICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhiIlx4MWYi KSwgciMiICBiIlx4MUYiICAiIyk7Ci0rICAgIGFzc2VydChMaXRlcmFsOjpieXRlX3N0cmluZyhi IiciKSwgciMiICBiIiciICAiIyk7Ci0rICAgIGFzc2VydCgKLSsgICAgICAgIExpdGVyYWw6OmJ5 dGVfc3RyaW5nKGIiYVwwMGJcMDdjXDA4ZFwwZVwwIiksCi0rICAgICAgICByIyIgIGIiYVx4MDAw Ylx4MDA3Y1wwOGRcMGVcMCIgICIjLAotICAgICApOwotIAotICAgICAiYlwiXFxcclxuICAgIHhc IiIucGFyc2U6OjxUb2tlblN0cmVhbT4oKS51bndyYXAoKTsKLUBAIC0xNTIsNiArMTkyLDQxIEBA Ci0gCi0gI1t0ZXN0XQotIGZuIGxpdGVyYWxfY19zdHJpbmcoKSB7Ci0rICAgICNbdHJhY2tfY2Fs bGVyXQotKyAgICBmbiBhc3NlcnQobGl0ZXJhbDogTGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsK LSsgICAgICAgIGFzc2VydF9lcSEobGl0ZXJhbC50b19zdHJpbmcoKSwgZXhwZWN0ZWQudHJpbSgp KTsKLSsgICAgfQotKwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6Y19zdHJpbmcoPCZDU3RyPjo6ZGVm YXVsdCgpKSwgciMiICBjIiIgICIjKTsKLSsgICAgYXNzZXJ0KAotKyAgICAgICAgTGl0ZXJhbDo6 Y19zdHJpbmcoQ1N0cjo6ZnJvbV9ieXRlc193aXRoX251bChiImFBXDAiKS51bndyYXAoKSksCi0r ICAgICAgICByIyIgIGMiYUEiICAiIywKLSsgICAgKTsKLSsgICAgYXNzZXJ0KAotKyAgICAgICAg TGl0ZXJhbDo6Y19zdHJpbmcoQ1N0cjo6ZnJvbV9ieXRlc193aXRoX251bChiImFBXDAiKS51bndy YXAoKSksCi0rICAgICAgICByIyIgIGMiYUEiICAiIywKLSsgICAgKTsKLSsgICAgYXNzZXJ0KAot KyAgICAgICAgTGl0ZXJhbDo6Y19zdHJpbmcoQ1N0cjo6ZnJvbV9ieXRlc193aXRoX251bChiIlx0 XDAiKS51bndyYXAoKSksCi0rICAgICAgICByIyIgIGMiXHQiICAiIywKLSsgICAgKTsKLSsgICAg YXNzZXJ0KAotKyAgICAgICAgTGl0ZXJhbDo6Y19zdHJpbmcoQ1N0cjo6ZnJvbV9ieXRlc193aXRo X251bChiIlx4RTJceDlEXHhBNFwwIikudW53cmFwKCkpLAotKyAgICAgICAgciMiICBjIuKdpCIg ICIjLAotKyAgICApOwotKyAgICBhc3NlcnQoCi0rICAgICAgICBMaXRlcmFsOjpjX3N0cmluZyhD U3RyOjpmcm9tX2J5dGVzX3dpdGhfbnVsKGIiJ1wwIikudW53cmFwKCkpLAotKyAgICAgICAgciMi ICBjIiciICAiIywKLSsgICAgKTsKLSsgICAgYXNzZXJ0KAotKyAgICAgICAgTGl0ZXJhbDo6Y19z dHJpbmcoQ1N0cjo6ZnJvbV9ieXRlc193aXRoX251bChiIlwiXDAiKS51bndyYXAoKSksCi0rICAg ICAgICByIyIgIGMiXCIiICAiIywKLSsgICAgKTsKLSsgICAgYXNzZXJ0KAotKyAgICAgICAgTGl0 ZXJhbDo6Y19zdHJpbmcoQ1N0cjo6ZnJvbV9ieXRlc193aXRoX251bChiIlx4N0ZceEZGXHhGRVx4 Q0NceEIzXDAiKS51bndyYXAoKSksCi0rICAgICAgICByIyIgIGMiXHV7N2Z9XHhGRlx4RkVcdXsz MzN9IiAgIiMsCi0rICAgICk7Ci0rCi0gICAgIGxldCBzdHJpbmdzID0gciMjIyIKLSAgICAgICAg IGMiaGVsbG9ceDgw5oiR5Y+rXHV7MUY5ODB9IiAgLy8gZnJvbSB0aGUgUkZDCi0gICAgICAgICBj ciJcIgotQEAgLTE4OCw0OSArMjYzLDgwIEBACi0gCi0gI1t0ZXN0XQotIGZuIGxpdGVyYWxfY2hh cmFjdGVyKCkgewotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmNoYXJhY3RlcigneCcpLnRvX3N0 cmluZygpLCAiJ3gnIik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6Y2hhcmFjdGVyKCdcJycp LnRvX3N0cmluZygpLCAiJ1xcJyciKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpjaGFyYWN0 ZXIoJyInKS50b19zdHJpbmcoKSwgIidcIiciKTsKLSsgICAgI1t0cmFja19jYWxsZXJdCi0rICAg IGZuIGFzc2VydChsaXRlcmFsOiBMaXRlcmFsLCBleHBlY3RlZDogJnN0cikgewotKyAgICAgICAg YXNzZXJ0X2VxIShsaXRlcmFsLnRvX3N0cmluZygpLCBleHBlY3RlZC50cmltKCkpOwotKyAgICB9 Ci0rCi0rICAgIGFzc2VydChMaXRlcmFsOjpjaGFyYWN0ZXIoJ2EnKSwgciMiICAnYScgICIjKTsK LSsgICAgYXNzZXJ0KExpdGVyYWw6OmNoYXJhY3RlcignXHQnKSwgciMiICAnXHQnICAiIyk7Ci0r ICAgIGFzc2VydChMaXRlcmFsOjpjaGFyYWN0ZXIoJ+KdpCcpLCByIyIgICfinaQnICAiIyk7Ci0r ICAgIGFzc2VydChMaXRlcmFsOjpjaGFyYWN0ZXIoJ1wnJyksIHIjIiAgJ1wnJyAgIiMpOwotKyAg ICBhc3NlcnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCciJyksIHIjIiAgJyInICAiIyk7Ci0rICAgIGFz c2VydChMaXRlcmFsOjpjaGFyYWN0ZXIoJ1wwJyksIHIjIiAgJ1wwJyAgIiMpOwotKyAgICBhc3Nl cnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCdcdXsxfScpLCByIyIgICdcdXsxfScgICIjKTsKLSB9Ci0g Ci0gI1t0ZXN0XQotIGZuIGxpdGVyYWxfaW50ZWdlcigpIHsKLS0gICAgYXNzZXJ0X2VxIShMaXRl cmFsOjp1OF9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHU4Iik7Ci0tICAgIGFzc2VydF9l cSEoTGl0ZXJhbDo6dTE2X3N1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwdTE2Iik7Ci0tICAg IGFzc2VydF9lcSEoTGl0ZXJhbDo6dTMyX3N1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwdTMy Iik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dTY0X3N1ZmZpeGVkKDEwKS50b19zdHJpbmco KSwgIjEwdTY0Iik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dTEyOF9zdWZmaXhlZCgxMCku dG9fc3RyaW5nKCksICIxMHUxMjgiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjp1c2l6ZV9z dWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHVzaXplIik7Ci0tCi0tICAgIGFzc2VydF9lcSEo TGl0ZXJhbDo6aThfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpOCIpOwotLSAgICBhc3Nl cnRfZXEhKExpdGVyYWw6OmkxNl9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMGkxNiIpOwot LSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmkzMl9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIx MGkzMiIpOwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6Omk2NF9zdWZmaXhlZCgxMCkudG9fc3Ry aW5nKCksICIxMGk2NCIpOwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmkxMjhfc3VmZml4ZWQo MTApLnRvX3N0cmluZygpLCAiMTBpMTI4Iik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6aXNp emVfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpc2l6ZSIpOwotLQotLSAgICBhc3NlcnRf ZXEhKExpdGVyYWw6OnU4X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKLS0gICAg YXNzZXJ0X2VxIShMaXRlcmFsOjp1MTZfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIp OwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnUzMl91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmco KSwgIjEwIik7Ci0tICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dTY0X3Vuc3VmZml4ZWQoMTApLnRv X3N0cmluZygpLCAiMTAiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjp1MTI4X3Vuc3VmZml4 ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjp1c2l6 ZV91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7Ci0tCi0tICAgIGFzc2VydF9lcSEo TGl0ZXJhbDo6aThfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOwotLSAgICBhc3Nl cnRfZXEhKExpdGVyYWw6OmkxNl91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7Ci0t ICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6aTMyX3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAi MTAiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppNjRfdW5zdWZmaXhlZCgxMCkudG9fc3Ry aW5nKCksICIxMCIpOwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmkxMjhfdW5zdWZmaXhlZCgx MCkudG9fc3RyaW5nKCksICIxMCIpOwotLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmlzaXplX3Vu c3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKLSsgICAgI1t0cmFja19jYWxsZXJdCi0r ICAgIGZuIGFzc2VydChsaXRlcmFsOiBMaXRlcmFsLCBleHBlY3RlZDogJnN0cikgewotKyAgICAg ICAgYXNzZXJ0X2VxIShsaXRlcmFsLnRvX3N0cmluZygpLCBleHBlY3RlZCk7Ci0rICAgIH0KLSsK LSsgICAgYXNzZXJ0KExpdGVyYWw6OnU4X3N1ZmZpeGVkKDEwKSwgIjEwdTgiKTsKLSsgICAgYXNz ZXJ0KExpdGVyYWw6OnUxNl9zdWZmaXhlZCgxMCksICIxMHUxNiIpOwotKyAgICBhc3NlcnQoTGl0 ZXJhbDo6dTMyX3N1ZmZpeGVkKDEwKSwgIjEwdTMyIik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjp1 NjRfc3VmZml4ZWQoMTApLCAiMTB1NjQiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnUxMjhfc3Vm Zml4ZWQoMTApLCAiMTB1MTI4Iik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjp1c2l6ZV9zdWZmaXhl ZCgxMCksICIxMHVzaXplIik7Ci0rCi0rICAgIGFzc2VydChMaXRlcmFsOjppOF9zdWZmaXhlZCgx MCksICIxMGk4Iik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjppMTZfc3VmZml4ZWQoMTApLCAiMTBp MTYiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmkzMl9zdWZmaXhlZCgxMCksICIxMGkzMiIpOwot KyAgICBhc3NlcnQoTGl0ZXJhbDo6aTY0X3N1ZmZpeGVkKDEwKSwgIjEwaTY0Iik7Ci0rICAgIGFz c2VydChMaXRlcmFsOjppMTI4X3N1ZmZpeGVkKDEwKSwgIjEwaTEyOCIpOwotKyAgICBhc3NlcnQo TGl0ZXJhbDo6aXNpemVfc3VmZml4ZWQoMTApLCAiMTBpc2l6ZSIpOwotKwotKyAgICBhc3NlcnQo TGl0ZXJhbDo6dThfdW5zdWZmaXhlZCgxMCksICIxMCIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6 dTE2X3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OnUzMl91bnN1 ZmZpeGVkKDEwKSwgIjEwIik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjp1NjRfdW5zdWZmaXhlZCgx MCksICIxMCIpOwotKyAgICBhc3NlcnQoTGl0ZXJhbDo6dTEyOF91bnN1ZmZpeGVkKDEwKSwgIjEw Iik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjp1c2l6ZV91bnN1ZmZpeGVkKDEwKSwgIjEwIik7Ci0r Ci0rICAgIGFzc2VydChMaXRlcmFsOjppOF91bnN1ZmZpeGVkKDEwKSwgIjEwIik7Ci0rICAgIGFz c2VydChMaXRlcmFsOjppMTZfdW5zdWZmaXhlZCgxMCksICIxMCIpOwotKyAgICBhc3NlcnQoTGl0 ZXJhbDo6aTMyX3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6Omk2 NF91bnN1ZmZpeGVkKDEwKSwgIjEwIik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjppMTI4X3Vuc3Vm Zml4ZWQoMTApLCAiMTAiKTsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmlzaXplX3Vuc3VmZml4ZWQo MTApLCAiMTAiKTsKLSsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmkzMl9zdWZmaXhlZCgtMTApLCAi LTEwaTMyIik7Ci0rICAgIGFzc2VydChMaXRlcmFsOjppMzJfdW5zdWZmaXhlZCgtMTApLCAiLTEw Iik7Ci0gfQotIAotICNbdGVzdF0KLSBmbiBsaXRlcmFsX2Zsb2F0KCkgewotLSAgICBhc3NlcnRf ZXEhKExpdGVyYWw6OmYzMl9zdWZmaXhlZCgxMC4wKS50b19zdHJpbmcoKSwgIjEwZjMyIik7Ci0t ICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6ZjY0X3N1ZmZpeGVkKDEwLjApLnRvX3N0cmluZygpLCAi MTBmNjQiKTsKLS0KLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpmMzJfdW5zdWZmaXhlZCgxMC4w KS50b19zdHJpbmcoKSwgIjEwLjAiKTsKLS0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpmNjRfdW5z dWZmaXhlZCgxMC4wKS50b19zdHJpbmcoKSwgIjEwLjAiKTsKLSsgICAgI1t0cmFja19jYWxsZXJd Ci0rICAgIGZuIGFzc2VydChsaXRlcmFsOiBMaXRlcmFsLCBleHBlY3RlZDogJnN0cikgewotKyAg ICAgICAgYXNzZXJ0X2VxIShsaXRlcmFsLnRvX3N0cmluZygpLCBleHBlY3RlZCk7Ci0rICAgIH0K LSsKLSsgICAgYXNzZXJ0KExpdGVyYWw6OmYzMl9zdWZmaXhlZCgxMC4wKSwgIjEwZjMyIik7Ci0r ICAgIGFzc2VydChMaXRlcmFsOjpmMzJfc3VmZml4ZWQoLTEwLjApLCAiLTEwZjMyIik7Ci0rICAg IGFzc2VydChMaXRlcmFsOjpmNjRfc3VmZml4ZWQoMTAuMCksICIxMGY2NCIpOwotKyAgICBhc3Nl cnQoTGl0ZXJhbDo6ZjY0X3N1ZmZpeGVkKC0xMC4wKSwgIi0xMGY2NCIpOwotKwotKyAgICBhc3Nl cnQoTGl0ZXJhbDo6ZjMyX3Vuc3VmZml4ZWQoMTAuMCksICIxMC4wIik7Ci0rICAgIGFzc2VydChM aXRlcmFsOjpmMzJfdW5zdWZmaXhlZCgtMTAuMCksICItMTAuMCIpOwotKyAgICBhc3NlcnQoTGl0 ZXJhbDo6ZjY0X3Vuc3VmZml4ZWQoMTAuMCksICIxMC4wIik7Ci0rICAgIGFzc2VydChMaXRlcmFs OjpmNjRfdW5zdWZmaXhlZCgtMTAuMCksICItMTAuMCIpOwotKwotKyAgICBhc3NlcnQoCi0rICAg ICAgICBMaXRlcmFsOjpmNjRfdW5zdWZmaXhlZCgxZTEwMCksCi0rICAgICAgICAiMTAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAuMCIsCi0rICAgICk7Ci0gfQotIAot ICNbdGVzdF0KLUBAIC0yNDgsOSArMzU0LDEzIEBACi0gICAgIGFzc2VydF9lcSEodG9rZW5fY291 bnQoIjEuX20iKSwgMyk7Ci0gICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoIlwiXCJzIiksIDEp OwotICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJyXCJcInIiKSwgMSk7Ci0rICAgIGFzc2Vy dF9lcSEodG9rZW5fY291bnQoInIjXCJcIiNyIiksIDEpOwotICAgICBhc3NlcnRfZXEhKHRva2Vu X2NvdW50KCJiXCJcImIiKSwgMSk7Ci0gICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoImJyXCJc ImJyIiksIDEpOwotLSAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJyI1wiXCIjciIpLCAxKTsK LSsgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiYnIjXCJcIiNiciIpLCAxKTsKLSsgICAgYXNz ZXJ0X2VxISh0b2tlbl9jb3VudCgiY1wiXCJjIiksIDEpOwotKyAgICBhc3NlcnRfZXEhKHRva2Vu X2NvdW50KCJjclwiXCJjciIpLCAxKTsKLSsgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiY3Ij XCJcIiNjciIpLCAxKTsKLSAgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiJ2MnYyIpLCAxKTsK LSAgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiYidiJ2IiKSwgMSk7Ci0gICAgIGFzc2VydF9l cSEodG9rZW5fY291bnQoIjBFIiksIDEpOwotQEAgLTM3OCw3ICs0ODgsNyBAQAotICAgICByb3Vu ZHRyaXAoIidhIik7Ci0gICAgIHJvdW5kdHJpcCgiJ18iKTsKLSAgICAgcm91bmR0cmlwKCInc3Rh dGljIik7Ci0tICAgIHJvdW5kdHJpcCgiJ1xcdXsxMF9fRkZGRn0nIik7Ci0rICAgIHJvdW5kdHJp cChyIidcdXsxMF9fRkZGRn0nIik7Ci0gICAgIHJvdW5kdHJpcCgiXCJcXHV7MTBfRjBGRl9ffWZv b1xcdXsxXzBfMF8wX199XCIiKTsKLSB9Ci0gCi1AQCAtNDAxLDYgKzUxMSw3IEBACi0gICAgIGZh aWwoIlwiXFxcciAgXCIiKTsgLy8gYmFja3NsYXNoIGNhcnJpYWdlIHJldHVybgotICAgICBmYWls KCInYWEnYWEiKTsKLSAgICAgZmFpbCgiYnIjI1wiXCIjIik7Ci0rICAgIGZhaWwoImNyIyNcIlwi IyIpOwotICAgICBmYWlsKCJcIlxcXG5cdXs4NX1cclwiIik7Ci0gfQotIAoKZGlmZiAtLWdpdCBh L2Nocm9taXVtLTEyNS1lbDctdHlwZS1hbGlhcy5wYXRjaCBiL2Nocm9taXVtLTEyNS1lbDctdHlw ZS1hbGlhcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRhOTA1MC4uMDAw MDAwMAotLS0gYS9jaHJvbWl1bS0xMjUtZWw3LXR5cGUtYWxpYXMucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSwzMCArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBv bmVudHMvcGx1c19hZGRyZXNzZXMvcGx1c19hZGRyZXNzX3NlcnZpY2UuY2MuZWw3IGNocm9taXVt LTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9wbHVzX2FkZHJlc3Nlcy9wbHVzX2FkZHJlc3Nfc2Vy dmljZS5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9wbHVzX2FkZHJl c3Nlcy9wbHVzX2FkZHJlc3Nfc2VydmljZS5jYy5lbDcJMjAyNC0wNS0xOCAxNDoxMjowNi41MTA4 NjM0NTYgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvcGx1c19h ZGRyZXNzZXMvcGx1c19hZGRyZXNzX3NlcnZpY2UuY2MJMjAyNC0wNS0xOCAxNDoxMzozOS42NzA2 NjYzNTIgKzAyMDAKLUBAIC0xNjUsNyArMTY1LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4g UGx1c0FkZHJlc3NTZXJ2aQotICAgICBib29sIGlzX29mZl90aGVfcmVjb3JkLAotICAgICBzdGQ6 OnUxNnN0cmluZ192aWV3IGZvY3VzZWRfZmllbGRfdmFsdWUsCi0gICAgIGF1dG9maWxsOjpBdXRv ZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlIHRyaWdnZXJfc291cmNlKSB7Ci0tICB1c2luZyBl bnVtIGF1dG9maWxsOjpBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOwotKyAgdXNpbmcg YXV0b2ZpbGw6OkF1dG9maWxsU3VnZ2VzdGlvblRyaWdnZXJTb3VyY2U7Ci0gICBpZiAoIVN1cHBv cnRzUGx1c0FkZHJlc3NlcyhsYXN0X2NvbW1pdHRlZF9wcmltYXJ5X21haW5fZnJhbWVfb3JpZ2lu LAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfb2ZmX3RoZV9yZWNvcmQpKSB7Ci0g ICAgIHJldHVybiB7fTsKLUBAIC0xNzYsNyArMTc2LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlv bj4gUGx1c0FkZHJlc3NTZXJ2aQotICAgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWF5YmVf YWRkcmVzcyA9Ci0gICAgICAgR2V0UGx1c0FkZHJlc3MobGFzdF9jb21taXR0ZWRfcHJpbWFyeV9t YWluX2ZyYW1lX29yaWdpbik7Ci0gICBpZiAobWF5YmVfYWRkcmVzcyA9PSBzdGQ6Om51bGxvcHQp IHsKLS0gICAgaWYgKHRyaWdnZXJfc291cmNlICE9IGtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNz ZXMgJiYKLSsgICAgaWYgKHRyaWdnZXJfc291cmNlICE9IEF1dG9maWxsU3VnZ2VzdGlvblRyaWdn ZXJTb3VyY2U6OmtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYKLSAgICAgICAgICFub3Jt YWxpemVkX2ZpZWxkX3ZhbHVlLmVtcHR5KCkpIHsKLSAgICAgICByZXR1cm4ge307Ci0gICAgIH0K LUBAIC0xOTEsNyArMTkxLDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4gUGx1c0FkZHJlc3NT ZXJ2aQotIAotICAgLy8gT25seSBzdWdnZXN0IGZpbGxpbmcgYSBwbHVzIGFkZHJlc3Mgd2hvc2Ug cHJlZml4IG1hdGNoZXMgdGhlIGZpZWxkJ3MgdmFsdWUuCi0gICBzdGQ6OnUxNnN0cmluZyBhZGRy ZXNzID0gYmFzZTo6VVRGOFRvVVRGMTYoKm1heWJlX2FkZHJlc3MpOwotLSAgaWYgKHRyaWdnZXJf c291cmNlICE9IGtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYKLSsgIGlmICh0cmlnZ2Vy X3NvdXJjZSAhPSBBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOjprTWFudWFsRmFsbGJh Y2tQbHVzQWRkcmVzc2VzICYmCi0gICAgICAgIWFkZHJlc3Muc3RhcnRzX3dpdGgobm9ybWFsaXpl ZF9maWVsZF92YWx1ZSkpIHsKLSAgICAgcmV0dXJuIHt9OwotICAgfQoKZGlmZiAtLWdpdCBhL2No cm9taXVtLTEyNS1taXNzaW5nLWluY2x1ZGUtRmllbGREYXRhTWFuYWdlci5wYXRjaCBiL2Nocm9t aXVtLTEyNS1taXNzaW5nLWluY2x1ZGUtRmllbGREYXRhTWFuYWdlci5wYXRjaApkZWxldGVkIGZp bGUgbW9kZSAxMDA2NDQKaW5kZXggNmRkNzYzYS4uMDAwMDAwMAotLS0gYS9jaHJvbWl1bS0xMjUt bWlzc2luZy1pbmNsdWRlLUZpZWxkRGF0YU1hbmFnZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSwzMiArMCwwIEBACi1jb21taXQgYWE1M2MzYWI4ZGY3ZjdjMWQ0MmMzMGQ0YjE4NGE4ZjhiMGE4 ZTUwZAotQXV0aG9yOiBKb3NlIERhcGVuYSBQYXogPGpkYXBlbmFAaWdhbGlhLmNvbT4KLURhdGU6 ICAgVHVlIEFwciAxNiAxMjoxNDoxNSAyMDI0ICswMDAwCi0KLSAgICBJV1lVOiBhZGQgbWlzc2lu ZyBpbmNsdWRlIGZvciB1c2FnZSBvZiBGaWVsZERhdGFNYW5hZ2VyIGluIGF1dG9maWxsX2FnZW50 LmgKLSAgICAKLSAgICBDaGFuZ2UtSWQ6IEk3MDU3NWQxZGQ3MmI5MzM0ZTNiOGQ0ODA1Nzc5YTdl NDU3ODg5ODllCi0gICAgUmV2aWV3ZWQtb246IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2ds ZXNvdXJjZS5jb20vYy9jaHJvbWl1bS9zcmMvKy81MzkyODQwCi0gICAgUmV2aWV3ZWQtYnk6IEZs b3JpYW4gTGVpbWdydWJlciA8ZmxlaW1ncnViZXJAZ29vZ2xlLmNvbT4KLSAgICBDb21taXQtUXVl dWU6IEpvc8OpIERhcGVuYSBQYXogPGpkYXBlbmFAaWdhbGlhLmNvbT4KLSAgICBDci1Db21taXQt UG9zaXRpb246IHJlZnMvaGVhZHMvbWFpbkB7IzEyODc5Njd9Ci0KLWRpZmYgLS1naXQgYS9jb21w b25lbnRzL2F1dG9maWxsL2NvbnRlbnQvcmVuZGVyZXIvYXV0b2ZpbGxfYWdlbnQuaCBiL2NvbXBv bmVudHMvYXV0b2ZpbGwvY29udGVudC9yZW5kZXJlci9hdXRvZmlsbF9hZ2VudC5oCi1pbmRleCA3 NmEyNWQ3MmM4N2NjLi4wMTQ2MmFlZmRhYWU2IDEwMDY0NAotLS0tIGEvY29tcG9uZW50cy9hdXRv ZmlsbC9jb250ZW50L3JlbmRlcmVyL2F1dG9maWxsX2FnZW50LmgKLSsrKyBiL2NvbXBvbmVudHMv YXV0b2ZpbGwvY29udGVudC9yZW5kZXJlci9hdXRvZmlsbF9hZ2VudC5oCi1AQCAtMjUsNiArMjUs NyBAQAotICNpbmNsdWRlICJjb21wb25lbnRzL2F1dG9maWxsL2NvbnRlbnQvcmVuZGVyZXIvZm9y bV9hdXRvZmlsbF91dGlsLmgiCi0gI2luY2x1ZGUgImNvbXBvbmVudHMvYXV0b2ZpbGwvY29udGVu dC9yZW5kZXJlci9mb3JtX3RyYWNrZXIuaCIKLSAjaW5jbHVkZSAiY29tcG9uZW50cy9hdXRvZmls bC9jb3JlL2NvbW1vbi9hdXRvZmlsbF9mZWF0dXJlcy5oIgotKyNpbmNsdWRlICJjb21wb25lbnRz L2F1dG9maWxsL2NvcmUvY29tbW9uL2ZpZWxkX2RhdGFfbWFuYWdlci5oIgotICNpbmNsdWRlICJj b21wb25lbnRzL2F1dG9maWxsL2NvcmUvY29tbW9uL21vam9tL2F1dG9maWxsX3R5cGVzLm1vam9t LXNoYXJlZC5oIgotICNpbmNsdWRlICJjb21wb25lbnRzL2F1dG9maWxsL2NvcmUvY29tbW9uL3Vu aXF1ZV9pZHMuaCIKLSAjaW5jbHVkZSAiY29udGVudC9wdWJsaWMvcmVuZGVyZXIvcmVuZGVyX2Zy YW1lX29ic2VydmVyLmgiCi1AQCAtNTEsNyArNTIsNiBAQCBuYW1lc3BhY2UgYXV0b2ZpbGwgewot IGNsYXNzIEZvcm1DYWNoZTsKLSBjbGFzcyBQYXNzd29yZEF1dG9maWxsQWdlbnQ7Ci0gY2xhc3Mg UGFzc3dvcmRHZW5lcmF0aW9uQWdlbnQ7Ci0tY2xhc3MgRmllbGREYXRhTWFuYWdlcjsKLSAKLSAv LyBBdXRvZmlsbEFnZW50IGRlYWxzIHdpdGggQXV0b2ZpbGwgcmVsYXRlZCBjb21tdW5pY2F0aW9u cyBiZXR3ZWVuIEJsaW5rIGFuZAotIC8vIHRoZSBicm93c2VyLgoKZGlmZiAtLWdpdCBhL2Nocm9t aXVtLTEyNS1zeXN0ZW0tbGlic3RkYysrLnBhdGNoIGIvY2hyb21pdW0tMTI1LXN5c3RlbS1saWJz dGRjKysucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1OTgwN2QuLjAwMDAw MDAKLS0tIGEvY2hyb21pdW0tMTI1LXN5c3RlbS1saWJzdGRjKysucGF0Y2gKKysrIC9kZXYvbnVs bApAQCAtMSw4OTYgKzAsMCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9iYXNl L2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2Mvc3RhcnNj YW4vc3RhdHNfY29sbGVjdG9yLmguc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxv Yy9zdGFyc2Nhbi9zdGF0c19jb2xsZWN0b3IuaAotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv YmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL3N0 YXJzY2FuL3N0YXRzX2NvbGxlY3Rvci5oLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0 NTo0OS4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Jhc2UvYWxs b2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9zdGFyc2Nhbi9z dGF0c19jb2xsZWN0b3IuaAkyMDI0LTA1LTE5IDA5OjA3OjM4LjE5OTQzNzYxNyArMDIwMAotQEAg LTE0LDcgKzE0LDcgQEAKLSAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KLSAjaW5jbHVkZSA8dXRp bGl0eT4KLSAKLS0jaW5jbHVkZSAicGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvcl9m b3J3YXJkLmgiCi0rI2luY2x1ZGUgInBhcnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3Iu aCIKLSAjaW5jbHVkZSAicGFydGl0aW9uX2FsbG9jL3BhcnRpdGlvbl9hbGxvY19iYXNlL3RocmVh ZGluZy9wbGF0Zm9ybV90aHJlYWQuaCIKLSAjaW5jbHVkZSAicGFydGl0aW9uX2FsbG9jL3BhcnRp dGlvbl9hbGxvY19iYXNlL3RpbWUvdGltZS5oIgotICNpbmNsdWRlICJwYXJ0aXRpb25fYWxsb2Mv cGFydGl0aW9uX2FsbG9jX2NoZWNrLmgiCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L2Nocm9tZS9icm93c2VyL2xlbnMvbGVuc19vdmVybGF5L2xlbnNfb3ZlcmxheV91cmxfYnVpbGRl ci5oLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci9sZW5zL2xlbnNfb3ZlcmxheS9sZW5zX292ZXJsYXlfdXJsX2J1aWxkZXIuaAotLS0tIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvbGVucy9sZW5zX292ZXJsYXkvbGVuc19v dmVybGF5X3VybF9idWlsZGVyLmguc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjAx LjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dz ZXIvbGVucy9sZW5zX292ZXJsYXkvbGVuc19vdmVybGF5X3VybF9idWlsZGVyLmgJMjAyNC0wNS0x OSAwOTowNzozOC4yMDA0Mzc2MzggKzAyMDAKLUBAIC01LDYgKzUsNyBAQAotICNpZm5kZWYgQ0hS T01FX0JST1dTRVJfTEVOU19MRU5TX09WRVJMQVlfTEVOU19PVkVSTEFZX1VSTF9CVUlMREVSX0hf Ci0gI2RlZmluZSBDSFJPTUVfQlJPV1NFUl9MRU5TX0xFTlNfT1ZFUkxBWV9MRU5TX09WRVJMQVlf VVJMX0JVSUxERVJfSF8KLSAKLSsjaW5jbHVkZSA8b3B0aW9uYWw+Ci0gI2luY2x1ZGUgPHN0cmlu Zz4KLSAKLSAjaW5jbHVkZSAidGhpcmRfcGFydHkvbGVuc19zZXJ2ZXJfcHJvdG8vbGVuc19vdmVy bGF5X2NsdXN0ZXJfaW5mby5wYi5oIgotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9j aHJvbWUvYnJvd3Nlci9zeW5jL3Rlc3QvaW50ZWdyYXRpb24vcHJvZHVjdF9zcGVjaWZpY2F0aW9u c19oZWxwZXIuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9t ZS9icm93c2VyL3N5bmMvdGVzdC9pbnRlZ3JhdGlvbi9wcm9kdWN0X3NwZWNpZmljYXRpb25zX2hl bHBlci5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY2hyb21lL2Jyb3dzZXIvc3luYy90 ZXN0L2ludGVncmF0aW9uL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfaGVscGVyLmNjLnN5c3RlbS1s aWJzdGRjKysJMjAyNC0wNS0xOSAxMzoxNjowMS4xNDA0NDI0MjMgKzAyMDAKLSsrKyBjaHJvbWl1 bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3N5bmMvdGVzdC9pbnRlZ3JhdGlvbi9wcm9k dWN0X3NwZWNpZmljYXRpb25zX2hlbHBlci5jYwkyMDI0LTA1LTE5IDEzOjE2OjM4LjAyOTI0NjAx NSArMDIwMAotQEAgLTQxLDkgKzQxLDkgQEAgYm9vbCBQcm9kdWN0U3BlY2lmaWNhdGlvbnNDaGVj a2VyOjpJc0V4aQotIGJvb2wgUHJvZHVjdFNwZWNpZmljYXRpb25zQ2hlY2tlcjo6SXNTcGVjaWZp Y3NBdmFpbGFibGVBbmRFcXVhbCgpIHsKLSAgIGZvciAoY29uc3QgUHJvZHVjdFNwZWNpZmljYXRp b25zU2V0JiBwcm9kdWN0X3NwZWNpZmljYXRpb25zX3NldCA6Ci0gICAgICAgIHNlcnZpY2VfLT5H ZXRBbGxQcm9kdWN0U3BlY2lmaWNhdGlvbnMoKSkgewotLSAgICBzdGQ6OnZlY3Rvcjxjb25zdCBH VVJMPiBzcGVjaWZpY3NfdXJsczsKLSsgICAgc3RkOjp2ZWN0b3I8R1VSTD4gc3BlY2lmaWNzX3Vy bHM7Ci0gICAgIGZvciAoc3luY19wYjo6Q29tcGFyaXNvbkRhdGEgZGF0YSA6IGNvbXBhcmVfc3Bl Y2lmaWNzXy0+ZGF0YSgpKSB7Ci0tICAgICAgc3BlY2lmaWNzX3VybHMucHVzaF9iYWNrKEdVUkwo ZGF0YS51cmwoKSkpOwotKyAgICAgIHNwZWNpZmljc191cmxzLmVtcGxhY2VfYmFjayhkYXRhLnVy bCgpKTsKLSAgICAgfQotICAgICBpZiAocHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zZXQudXVpZCgp LkFzTG93ZXJjYXNlU3RyaW5nKCkgPT0KLSAgICAgICAgICAgICBjb21wYXJlX3NwZWNpZmljc18t PnV1aWQoKSAmJgotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nl ci91aS90YWJzL3RhYl9zdHJpcF9tb2RlbC5oLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS90YWJzL3RhYl9zdHJpcF9tb2RlbC5oCi0tLS0g Y2hyb21pdW0tMTI1LjAuNjQyMi42MC9jaHJvbWUvYnJvd3Nlci91aS90YWJzL3RhYl9zdHJpcF9t b2RlbC5oLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0NjowNS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nocm9tZS9icm93c2VyL3VpL3RhYnMvdGFi X3N0cmlwX21vZGVsLmgJMjAyNC0wNS0xOSAwOTowNzozOC4yMDA0Mzc2MzggKzAyMDAKLUBAIC0x Miw2ICsxMiw3IEBACi0gI2luY2x1ZGUgPG1lbW9yeT4KLSAjaW5jbHVkZSA8b3B0aW9uYWw+Ci0g I2luY2x1ZGUgPHN0cmluZz4KLSsjaW5jbHVkZSA8dmFyaWFudD4KLSAjaW5jbHVkZSA8dmVjdG9y PgotIAotICNpbmNsdWRlICJiYXNlL2NvbnRhaW5lcnMvc3Bhbi5oIgotZGlmZiAtdXAgY2hyb21p dW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZp Y2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3NlcnZpY2UuY2Muc3lzdGVtLWxpYnN0ZGMr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0 X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2VydmljZS5jYwotLS0tIGNo cm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3Bl Y2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zZXJ2aWNlLmNjLnN5c3RlbS1saWJz dGRjKysJMjAyNC0wNS0xOSAxMzowODo0NC45MjA1NzE3NjUgKzAyMDAKLSsrKyBjaHJvbWl1bS0x MjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRp b25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2VydmljZS5jYwkyMDI0LTA1LTE5IDEzOjExOjA4 LjQ1MTc3NTE4OCArMDIwMAotQEAgLTI0LDExICsyNCwxMSBAQCBQcm9kdWN0U3BlY2lmaWNhdGlv bnNTZXJ2aWNlOjpHZXRTeW5jQ29uCi0gICByZXR1cm4gYnJpZGdlXy0+Y2hhbmdlX3Byb2Nlc3Nv cigpLT5HZXRDb250cm9sbGVyRGVsZWdhdGUoKTsKLSB9Ci0gCi0tY29uc3Qgc3RkOjp2ZWN0b3I8 Y29uc3QgUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0PgotK2NvbnN0IHN0ZDo6dmVjdG9yPFByb2R1 Y3RTcGVjaWZpY2F0aW9uc1NldD4KLSBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXJ2aWNlOjpHZXRB bGxQcm9kdWN0U3BlY2lmaWNhdGlvbnMoKSB7Ci0tICBzdGQ6OnZlY3Rvcjxjb25zdCBQcm9kdWN0 U3BlY2lmaWNhdGlvbnNTZXQ+IHByb2R1Y3Rfc3BlY2lmaWNhdGlvbnM7Ci0rICBzdGQ6OnZlY3Rv cjxQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQ+IHByb2R1Y3Rfc3BlY2lmaWNhdGlvbnM7Ci0gICBm b3IgKGF1dG8mIGVudHJ5IDogYnJpZGdlXy0+ZW50cmllcygpKSB7Ci0tICAgIHN0ZDo6dmVjdG9y PGNvbnN0IEdVUkw+IHVybHM7Ci0rICAgIHN0ZDo6dmVjdG9yPEdVUkw+IHVybHM7Ci0gICAgIGZv ciAoYXV0byYgZGF0YSA6IGVudHJ5LnNlY29uZC5kYXRhKCkpIHsKLSAgICAgICB1cmxzLmVtcGxh Y2VfYmFjayhkYXRhLnVybCgpKTsKLSAgICAgfQotQEAgLTQzLDcgKzQzLDcgQEAgUHJvZHVjdFNw ZWNpZmljYXRpb25zU2VydmljZTo6R2V0QWxsUHJvZAotIGNvbnN0IHN0ZDo6b3B0aW9uYWw8Y29u c3QgUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0PgotIFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NlcnZp Y2U6OkFkZFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldCgKLSAgICAgY29uc3Qgc3RkOjpzdHJpbmcm IG5hbWUsCi0tICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IEdVUkw+JiB1cmxzKSB7Ci0rICAg IGNvbnN0IHN0ZDo6dmVjdG9yPEdVUkw+JiB1cmxzKSB7Ci0gICAvLyBUT0RPKGNyYnVnLmNvbS8z MzI1NDUwNjQpIGFkZCBmb3IgYSBwcm9kdWN0IHNwZWNpZmljYXRpb24gc2V0IGJlaW5nIGFkZGVk LgotICAgc3RkOjpvcHRpb25hbDxzeW5jX3BiOjpDb21wYXJlU3BlY2lmaWNzPiBzcGVjaWZpY3Mg PQotICAgICAgIGJyaWRnZV8tPkFkZFByb2R1Y3RTcGVjaWZpY2F0aW9ucyhuYW1lLCB1cmxzKTsK LWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3Jl L3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zZXJ2aWNlLmgu c3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVy Y2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2Vy dmljZS5oCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2Nv cmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3NlcnZpY2Uu aC5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMTUgMjM6NDY6MTEuMDAwMDAwMDAwICswMjAwCi0r KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVj dF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3NlcnZpY2UuaAkyMDI0LTA1 LTE5IDA5OjA3OjM4LjIwMTQzNzY1OSArMDIwMAotQEAgLTI2LDE0ICsyNiwxMyBAQCBjbGFzcyBQ cm9kdWN0U3BlY2lmaWNhdGlvbnNTZXJ2aWNlIDogcHViCi0gICBiYXNlOjpXZWFrUHRyPHN5bmNl cjo6TW9kZWxUeXBlQ29udHJvbGxlckRlbGVnYXRlPgotICAgR2V0U3luY0NvbnRyb2xsZXJEZWxl Z2F0ZSgpOwotIAotLSAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgUHJvZHVjdFNwZWNpZmljYXRp b25zU2V0PgotLSAgR2V0QWxsUHJvZHVjdFNwZWNpZmljYXRpb25zKCk7Ci0rICBjb25zdCBzdGQ6 OnZlY3RvcjxQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQ+IEdldEFsbFByb2R1Y3RTcGVjaWZpY2F0 aW9ucygpOwotIAotICAgLy8gQWRkIG5ldyBwcm9kdWN0IHNwZWNpZmljYXRpb25zIHNldCBjYWxs ZWQgfG5hbWV8IHdpdGggcHJvZHVjdCBwYWdlcwotICAgLy8gY29ycmVzcG9uZGluZyB0byB8dXJs c3wuCi0gICBjb25zdCBzdGQ6Om9wdGlvbmFsPGNvbnN0IFByb2R1Y3RTcGVjaWZpY2F0aW9uc1Nl dD4KLSAgIEFkZFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldChjb25zdCBzdGQ6OnN0cmluZyYgbmFt ZSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnZlY3Rvcjxjb25z dCBHVVJMPiYgdXJscyk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3Rk Ojp2ZWN0b3I8R1VSTD4mIHVybHMpOwotIAotICAgLy8gRGVsZXRlcyBwcm9kdWN0IHNwZWNpZmlj YXRpb24gc2V0IGNvcnJlc3BvbmRpbmcgdG8gaWRlbnRpZmllciB8dXVpZHwuCi0gICB2b2lkIERl bGV0ZVByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldChjb25zdCBzdGQ6OnN0cmluZyYgdXVpZCk7Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9w cm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2VydmljZV91bml0 dGVzdC5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50 cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZpY2F0 aW9uc19zZXJ2aWNlX3VuaXR0ZXN0LmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21w b25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNp ZmljYXRpb25zX3NlcnZpY2VfdW5pdHRlc3QuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE5 IDEzOjEyOjAxLjg0MDAyODg3MyArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29t cG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVj aWZpY2F0aW9uc19zZXJ2aWNlX3VuaXR0ZXN0LmNjCTIwMjQtMDUtMTkgMTM6MTM6NDQuMzYzNDcz OTQ4ICswMjAwCi1AQCAtODIsOSArODIsOSBAQCB2b2lkIEFkZFRlc3RTcGVjaWZpY3MoY29tbWVy Y2U6OlByb2R1Y3RTCi0gfQotIAotIE1BVENIRVJfUChIYXNBbGxQcm9kdWN0U3BlY3MsIGNvbXBh cmVfc3BlY2lmaWNzLCAiIikgewotLSAgc3RkOjp2ZWN0b3I8Y29uc3QgR1VSTD4gc3BlY2lmaWNz X3VybHM7Ci0rICBzdGQ6OnZlY3RvcjxHVVJMPiBzcGVjaWZpY3NfdXJsczsKLSAgIGZvciAoY29u c3Qgc3luY19wYjo6Q29tcGFyaXNvbkRhdGEmIGRhdGEgOiBjb21wYXJlX3NwZWNpZmljcy5kYXRh KCkpIHsKLS0gICAgc3BlY2lmaWNzX3VybHMucHVzaF9iYWNrKEdVUkwoZGF0YS51cmwoKSkpOwot KyAgICBzcGVjaWZpY3NfdXJscy5lbXBsYWNlX2JhY2soZGF0YS51cmwoKSk7Ci0gICB9Ci0gICBy ZXR1cm4gYXJnLnV1aWQoKS5Bc0xvd2VyY2FzZVN0cmluZygpID09IGNvbXBhcmVfc3BlY2lmaWNz LnV1aWQoKSAmJgotICAgICAgICAgIGFyZy5jcmVhdGlvbl90aW1lKCkgPT0KLUBAIC0yMTcsNyAr MjE3LDcgQEAgY2xhc3MgUHJvZHVjdFNwZWNpZmljYXRpb25zU2VydmljZVRlc3QgOgotICAgICAg ICAgICAgICAgICAgIHNwZWNpZmljcy51cGRhdGVfdGltZV91bml4X2Vwb2NoX21pY3JvcygpKSwK LSAgICAgICAgICAgICAgIHNwZWNpZmljYXRpb25zLnVwZGF0ZV90aW1lKCkpOwotICAgICBFWFBF Q1RfRVEoc3BlY2lmaWNzLm5hbWUoKSwgc3BlY2lmaWNhdGlvbnMubmFtZSgpKTsKLS0gICAgc3Rk Ojp2ZWN0b3I8Y29uc3QgR1VSTD4gdXJsczsKLSsgICAgc3RkOjp2ZWN0b3I8R1VSTD4gdXJsczsK LSAgICAgZm9yIChjb25zdCBzeW5jX3BiOjpDb21wYXJpc29uRGF0YSYgZGF0YSA6IHNwZWNpZmlj cy5kYXRhKCkpIHsKLSAgICAgICB1cmxzLmVtcGxhY2VfYmFjayhkYXRhLnVybCgpKTsKLSAgICAg fQotQEAgLTI0Myw3ICsyNDMsNyBAQCBURVNUX0YoUHJvZHVjdFNwZWNpZmljYXRpb25zU2Vydmlj ZVRlc3QsCi0gICBmb3IgKGNvbnN0IHN5bmNfcGI6OkNvbXBhcmVTcGVjaWZpY3MmIHNwZWNpZmlj cyA6IGtDb21wYXJlU3BlY2lmaWNzKSB7Ci0gICAgIGJyaWRnZSgpLT5BZGRDb21wYXJlU3BlY2lm aWNzKHNwZWNpZmljcyk7Ci0gICB9Ci0tICBjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBQcm9kdWN0 U3BlY2lmaWNhdGlvbnNTZXQ+IHNwZWNpZmljYXRpb25zID0KLSsgIGNvbnN0IHN0ZDo6dmVjdG9y PFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldD4gc3BlY2lmaWNhdGlvbnMgPQotICAgICAgIHNlcnZp Y2UoKS0+R2V0QWxsUHJvZHVjdFNwZWNpZmljYXRpb25zKCk7Ci0gICBFWFBFQ1RfRVEoMnUsIHNw ZWNpZmljYXRpb25zLnNpemUoKSk7Ci0gICBmb3IgKHVpbnQ2NF90IGkgPSAwOyBpIDwgc3BlY2lm aWNhdGlvbnMuc2l6ZSgpOyBpKyspIHsKLUBAIC0yNTIsNyArMjUyLDcgQEAgVEVTVF9GKFByb2R1 Y3RTcGVjaWZpY2F0aW9uc1NlcnZpY2VUZXN0LAotIH0KLSAKLSBURVNUX0YoUHJvZHVjdFNwZWNp ZmljYXRpb25zU2VydmljZVRlc3QsIFRlc3RBZGRQcm9kdWN0U3BlY2lmaWNhdGlvbnNTdWNjZXNz KSB7Ci0tICBzdGQ6OnZlY3Rvcjxjb25zdCBHVVJMPiBleHBlY3RlZF9wcm9kdWN0X3VybHN7R1VS TChrUHJvZHVjdE9uZVVybCksCi0rICBzdGQ6OnZlY3RvcjxHVVJMPiBleHBlY3RlZF9wcm9kdWN0 X3VybHN7R1VSTChrUHJvZHVjdE9uZVVybCksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgR1VSTChrUHJvZHVjdFR3b1VybCl9OwotICAgRVhQRUNUX0NB TEwoKm9ic2VydmVyKCksCi0gICAgICAgICAgICAgICBPblByb2R1Y3RTcGVjaWZpY2F0aW9uc1Nl dEFkZGVkKEhhc1Byb2R1Y3RTcGVjc05hbWVVcmwoCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3By b2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2V0LmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9u cy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3NldC5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVj dF9zcGVjaWZpY2F0aW9uc19zZXQuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE5IDEzOjA2 OjIwLjg3MDQ0NTE2MyArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50 cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZpY2F0 aW9uc19zZXQuY2MJMjAyNC0wNS0xOSAxMzowNzo0NC4zODUyNzgyMzMgKzAyMDAKLUBAIC0xMiw3 ICsxMiw3IEBAIFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldDo6UHJvZHVjdFNwZWNpZmkKLSAgICAg Y29uc3Qgc3RkOjpzdHJpbmcmIHV1aWQsCi0gICAgIGNvbnN0IGludDY0X3QgY3JlYXRpb25fdGlt ZV91c2VjX3NpbmNlX2Vwb2NoLAotICAgICBjb25zdCBpbnQ2NF90IHVwZGF0ZV90aW1lX3VzZWNf c2luY2VfZXBvY2gsCi0tICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IEdVUkw+JiB1cmxzLAot KyAgICBjb25zdCBzdGQ6OnZlY3RvcjxHVVJMPiYgdXJscywKLSAgICAgY29uc3Qgc3RkOjpzdHJp bmcmIG5hbWUpCi0gICAgIDogdXVpZF8oYmFzZTo6VXVpZDo6UGFyc2VMb3dlcmNhc2UodXVpZCkp LAotICAgICAgIGNyZWF0aW9uX3RpbWVfKGJhc2U6OlRpbWU6OkZyb21NaWxsaXNlY29uZHNTaW5j ZVVuaXhFcG9jaCgKLUBAIC0zNCw5ICszNCw5IEBAIFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldDo6 flByb2R1Y3RTcGVjaWYKLSAKLSBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQgUHJvZHVjdFNwZWNp ZmljYXRpb25zU2V0OjpGcm9tUHJvdG8oCi0gICAgIGNvbnN0IHN5bmNfcGI6OkNvbXBhcmVTcGVj aWZpY3MmIHNwZWNpZmljcykgewotLSAgc3RkOjp2ZWN0b3I8Y29uc3QgR1VSTD4gdXJsczsKLSsg IHN0ZDo6dmVjdG9yPEdVUkw+IHVybHM7Ci0gICBmb3IgKGNvbnN0IHN5bmNfcGI6OkNvbXBhcmlz b25EYXRhJiBkYXRhIDogc3BlY2lmaWNzLmRhdGEoKSkgewotLSAgICB1cmxzLnB1c2hfYmFjayhH VVJMKGRhdGEudXJsKCkpKTsKLSsgICAgdXJscy5lbXBsYWNlX2JhY2soZGF0YS51cmwoKSk7Ci0g ICB9Ci0gICByZXR1cm4gUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0KAotICAgICAgIHNwZWNpZmlj cy51dWlkKCksIHNwZWNpZmljcy5jcmVhdGlvbl90aW1lX3VuaXhfZXBvY2hfbWljcm9zKCksCi1k aWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9w cm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2V0Lmguc3lzdGVt LWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29y ZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2V0LmgKLS0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0 X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc2V0Lmguc3lzdGVtLWxpYnN0 ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjExLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEy NS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlv bnMvcHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zZXQuaAkyMDI0LTA1LTE5IDA5OjA3OjM4LjIwMTQz NzY1OSArMDIwMAotQEAgLTQzLDcgKzQzLDcgQEAgY2xhc3MgUHJvZHVjdFNwZWNpZmljYXRpb25z U2V0IHsKLSAgIFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldChjb25zdCBzdGQ6OnN0cmluZyYgdXVp ZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBpbnQ2NF90IGNyZWF0aW9uX3Rp bWVfdXNlY19zaW5jZV9lcG9jaCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBp bnQ2NF90IHVwZGF0ZV90aW1lX3VzZWNfc2luY2VfZXBvY2gsCi0tICAgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgR1VSTD4mIHVybHMsCi0rICAgICAgICAg ICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8R1VSTD4mIHVybHMsCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUpOwotIAotICAgUHJv ZHVjdFNwZWNpZmljYXRpb25zU2V0KGNvbnN0IFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldCYpOwot QEAgLTYxLDcgKzYxLDcgQEAgY2xhc3MgUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0IHsKLSAgIGNv bnN0IGJhc2U6OlRpbWUmIHVwZGF0ZV90aW1lKCkgY29uc3QgeyByZXR1cm4gdXBkYXRlX3RpbWVf OyB9Ci0gCi0gICAvLyBQcm9kdWN0IHVybHMgZm9yIGVhY2ggaXRlbSBpbiB0aGUgc2V0Ci0tICBj b25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBHVVJMPiYgdXJscygpIGNvbnN0IHsgcmV0dXJuIHVybHNf OyB9Ci0rICBjb25zdCBzdGQ6OnZlY3RvcjxHVVJMPiYgdXJscygpIGNvbnN0IHsgcmV0dXJuIHVy bHNfOyB9Ci0gCi0gICAvLyBOYW1lIG9mIHRoZSBzZXQKLSAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBu YW1lKCkgY29uc3QgeyByZXR1cm4gbmFtZV87IH0KLUBAIC03Niw3ICs3Niw3IEBAIGNsYXNzIFBy b2R1Y3RTcGVjaWZpY2F0aW9uc1NldCB7Ci0gICBjb25zdCBiYXNlOjpVdWlkIHV1aWRfOwotICAg Y29uc3QgYmFzZTo6VGltZSBjcmVhdGlvbl90aW1lXzsKLSAgIGNvbnN0IGJhc2U6OlRpbWUgdXBk YXRlX3RpbWVfOwotLSAgY29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgR1VSTD4gdXJsc187Ci0rICBj b25zdCBzdGQ6OnZlY3RvcjxHVVJMPiB1cmxzXzsKLSAgIGNvbnN0IHN0ZDo6c3RyaW5nIG5hbWVf OwotIH07Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29t bWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNf c3luY19icmlkZ2UuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3Bl Y2lmaWNhdGlvbnNfc3luY19icmlkZ2UuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2Nv bXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNpZmljYXRpb25zL3Byb2R1Y3Rfc3Bl Y2lmaWNhdGlvbnNfc3luY19icmlkZ2UuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIz OjQ2OjExLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9u ZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZp Y2F0aW9uc19zeW5jX2JyaWRnZS5jYwkyMDI0LTA1LTE5IDA5OjA3OjM4LjIwMTQzNzY1OSArMDIw MAotQEAgLTEzMSw3ICsxMzEsNyBAQCB2b2lkIFByb2R1Y3RTcGVjaWZpY2F0aW9uc1N5bmNCcmlk Z2U6OkdlCi0gY29uc3Qgc3RkOjpvcHRpb25hbDxzeW5jX3BiOjpDb21wYXJlU3BlY2lmaWNzPgot IFByb2R1Y3RTcGVjaWZpY2F0aW9uc1N5bmNCcmlkZ2U6OkFkZFByb2R1Y3RTcGVjaWZpY2F0aW9u cygKLSAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCi0tICAgIGNvbnN0IHN0ZDo6dmVjdG9y PGNvbnN0IEdVUkw+JiB1cmxzKSB7Ci0rICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdVUkw+JiB1cmxz KSB7Ci0gICBpZiAoIWNoYW5nZV9wcm9jZXNzb3IoKS0+SXNUcmFja2luZ01ldGFkYXRhKCkpIHsK LSAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKLSAgIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyNS4w LjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMv cHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zeW5jX2JyaWRnZS5oLnN5c3RlbS1saWJzdGRjKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVj aWZpY2F0aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3N5bmNfYnJpZGdlLmgKLS0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9wcm9kdWN0X3NwZWNp ZmljYXRpb25zL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnNfc3luY19icmlkZ2UuaC5zeXN0ZW0tbGli c3RkYysrCTIwMjQtMDUtMTUgMjM6NDY6MTEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0t MTI1LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0 aW9ucy9wcm9kdWN0X3NwZWNpZmljYXRpb25zX3N5bmNfYnJpZGdlLmgJMjAyNC0wNS0xOSAwOTow NzozOC4yMDE0Mzc2NTkgKzAyMDAKLUBAIC02NCw3ICs2NCw3IEBAIGNsYXNzIFByb2R1Y3RTcGVj aWZpY2F0aW9uc1N5bmNCcmlkZ2UgOgotIAotICAgdmlydHVhbCBjb25zdCBzdGQ6Om9wdGlvbmFs PHN5bmNfcGI6OkNvbXBhcmVTcGVjaWZpY3M+Ci0gICBBZGRQcm9kdWN0U3BlY2lmaWNhdGlvbnMo Y29uc3Qgc3RkOjpzdHJpbmcmIG5hbWUsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u c3Qgc3RkOjp2ZWN0b3I8Y29uc3QgR1VSTD4mIHVybHMpOwotKyAgICAgICAgICAgICAgICAgICAg ICAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPEdVUkw+JiB1cmxzKTsKLSAKLSAgIHZvaWQgRGVsZXRl UHJvZHVjdFNwZWNpZmljYXRpb25zU2V0KGNvbnN0IHN0ZDo6c3RyaW5nJiB1dWlkKTsKLSAKLWRp ZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3By b2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZpY2F0aW9uc19zeW5jX2JyaWRnZV91 bml0dGVzdC5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9u ZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVjdF9zcGVjaWZp Y2F0aW9uc19zeW5jX2JyaWRnZV91bml0dGVzdC5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIu NjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Byb2R1Y3Rfc3BlY2lmaWNhdGlvbnMvcHJvZHVj dF9zcGVjaWZpY2F0aW9uc19zeW5jX2JyaWRnZV91bml0dGVzdC5jYy5zeXN0ZW0tbGlic3RkYysr CTIwMjQtMDUtMTUgMjM6NDY6MTEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvcHJvZHVjdF9zcGVjaWZpY2F0aW9ucy9w cm9kdWN0X3NwZWNpZmljYXRpb25zX3N5bmNfYnJpZGdlX3VuaXR0ZXN0LmNjCTIwMjQtMDUtMTkg MDk6MDc6MzguMjAxNDM3NjU5ICswMjAwCi1AQCAtMTc4LDcgKzE3OCw3IEBAIGNsYXNzIFByb2R1 Y3RTcGVjaWZpY2F0aW9uc1N5bmNCcmlkZ2VUZXMKLSAKLSAgIHN0ZDo6b3B0aW9uYWw8c3luY19w Yjo6Q29tcGFyZVNwZWNpZmljcz4gQWRkUHJvZHVjdFNwZWNpZmljYXRpb25zKAotICAgICAgIGNv bnN0IHN0ZDo6c3RyaW5nJiBuYW1lLAotLSAgICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IEdV Ukw+IHVybHMpIHsKLSsgICAgICBjb25zdCBzdGQ6OnZlY3RvcjxHVVJMPiB1cmxzKSB7Ci0gICAg IHJldHVybiBicmlkZ2UoKS5BZGRQcm9kdWN0U3BlY2lmaWNhdGlvbnMobmFtZSwgdXJscyk7Ci0g ICB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVy Y2UvY29yZS9zaG9wcGluZ19zZXJ2aWNlLmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb21wb25lbnRzL2NvbW1lcmNlL2NvcmUvc2hvcHBpbmdfc2VydmljZS5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3Nob3Bw aW5nX3NlcnZpY2UuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjExLjAwMDAw MDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJj ZS9jb3JlL3Nob3BwaW5nX3NlcnZpY2UuY2MJMjAyNC0wNS0xOSAwOTowNzozOC4yMDE0Mzc2NTkg KzAyMDAKLUBAIC0xNzM0LDcgKzE3MzQsNyBAQCB2b2lkIFNob3BwaW5nU2VydmljZTo6R2V0UHJv ZHVjdElkZW50aWZpCi0gICAgICAgICAgIHN0ZDo6bW92ZShjYWxsYmFjaykpKTsKLSB9Ci0gCi0t Y29uc3Qgc3RkOjp2ZWN0b3I8Y29uc3QgUHJvZHVjdFNwZWNpZmljYXRpb25zU2V0PgotK2NvbnN0 IHN0ZDo6dmVjdG9yPFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldD4KLSBTaG9wcGluZ1NlcnZpY2U6 OkdldEFsbFByb2R1Y3RTcGVjaWZpY2F0aW9uU2V0cygpIHsKLSAgIHJldHVybiBwcm9kdWN0X3Nw ZWNpZmljYXRpb25zX3NlcnZpY2VfLT5HZXRBbGxQcm9kdWN0U3BlY2lmaWNhdGlvbnMoKTsKLSB9 Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29y ZS9zaG9wcGluZ19zZXJ2aWNlLmguc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9zaG9wcGluZ19zZXJ2aWNlLmgKLS0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMvY29tbWVyY2UvY29yZS9zaG9wcGluZ19zZXJ2 aWNlLmguc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjExLjAwMDAwMDAwMCArMDIw MAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9jb21tZXJjZS9jb3JlL3No b3BwaW5nX3NlcnZpY2UuaAkyMDI0LTA1LTE5IDA5OjA3OjM4LjIwMTQzNzY1OSArMDIwMAotQEAg LTYyNCw3ICs2MjQsNyBAQCBjbGFzcyBTaG9wcGluZ1NlcnZpY2UgOiBwdWJsaWMgS2V5ZWRTZXJ2 Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVybFByb2R1Y3RJZGVudGlmaWVy VHVwbGVDYWxsYmFjayBjYWxsYmFjayk7Ci0gCi0gICAvLyBSZXR1cm4gYWxsIFByb2R1Y3RTcGVj aWZpY2F0aW9uc1NldHMgZnJvbSBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXJ2aWNlLgotLSAgdmly dHVhbCBjb25zdCBzdGQ6OnZlY3Rvcjxjb25zdCBQcm9kdWN0U3BlY2lmaWNhdGlvbnNTZXQ+Ci0r ICB2aXJ0dWFsIGNvbnN0IHN0ZDo6dmVjdG9yPFByb2R1Y3RTcGVjaWZpY2F0aW9uc1NldD4KLSAg IEdldEFsbFByb2R1Y3RTcGVjaWZpY2F0aW9uU2V0cygpOwotIAotICAgLy8gVXBkYXRlcyB0aGUg Ym9va21hcmsgbW9kZWwgdXNlZCBmb3Igc3luYyAoYW5kIHNob3BwaW5nKSBpZiBuZWVkZWQuIElu dm9rZWQKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvY29tcG9uZW50cy9zZXJ2aWNl cy9hcHBfc2VydmljZS9wdWJsaWMvY3BwL2FwcF90eXBlcy5oLnN5c3RlbS1saWJzdGRjKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3NlcnZpY2VzL2FwcF9zZXJ2aWNlL3B1Ymxp Yy9jcHAvYXBwX3R5cGVzLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBvbmVudHMv c2VydmljZXMvYXBwX3NlcnZpY2UvcHVibGljL2NwcC9hcHBfdHlwZXMuaC5zeXN0ZW0tbGlic3Rk YysrCTIwMjQtMDUtMTUgMjM6NDY6MTQuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1 LjAuNjQyMi42MC9jb21wb25lbnRzL3NlcnZpY2VzL2FwcF9zZXJ2aWNlL3B1YmxpYy9jcHAvYXBw X3R5cGVzLmgJMjAyNC0wNS0xOSAwOTowNzozOC4yMDI0Mzc2NzkgKzAyMDAKLUBAIC01LDYgKzUs NyBAQAotICNpZm5kZWYgQ09NUE9ORU5UU19TRVJWSUNFU19BUFBfU0VSVklDRV9QVUJMSUNfQ1BQ X0FQUF9UWVBFU19IXwotICNkZWZpbmUgQ09NUE9ORU5UU19TRVJWSUNFU19BUFBfU0VSVklDRV9Q VUJMSUNfQ1BQX0FQUF9UWVBFU19IXwotIAotKyNpbmNsdWRlIDxvcHRpb25hbD4KLSAjaW5jbHVk ZSAiYmFzZS9jb21wb25lbnRfZXhwb3J0LmgiCi0gI2luY2x1ZGUgImNvbXBvbmVudHMvc2Vydmlj ZXMvYXBwX3NlcnZpY2UvcHVibGljL2NwcC9tYWNyb3MuaCIKLSAjaW5jbHVkZSAiY29tcG9uZW50 cy9zZXJ2aWNlcy9hcHBfc2VydmljZS9wdWJsaWMvcHJvdG9zL2FwcF90eXBlcy5wYi5oIgotZGlm ZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3Bs YXkvc3VyZmFjZV9hZ2dyZWdhdG9yLmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXkvc3VyZmFjZV9hZ2dyZWdhdG9y LmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rp c3BsYXkvc3VyZmFjZV9hZ2dyZWdhdG9yLmNjLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAy Mzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbXBv bmVudHMvdml6L3NlcnZpY2UvZGlzcGxheS9zdXJmYWNlX2FnZ3JlZ2F0b3IuY2MJMjAyNC0wNS0x OSAwOTowNzozOC4yMDI0Mzc2NzkgKzAyMDAKLUBAIC0yMjc1LDcgKzIyNzUsNyBAQCBBZ2dyZWdh dGVkRnJhbWUgU3VyZmFjZUFnZ3JlZ2F0b3I6OkFnZ3JlCi0gICByb290X3N1cmZhY2VfaWRfID0g c3VyZmFjZV9pZDsKLSAKLSAgIC8vIFN0YXJ0IHJlY29yZGluZyBuZXcgc3RhdHMgZm9yIHRoaXMg YWdncmVnYXRpb24uCi0tICBzdGF0c18uZW1wbGFjZSgpOwotKyAgc3RhdHNfID0gQWdncmVnYXRl U3RhdGlzdGljc3t9OwotIAotICAgYmFzZTo6RWxhcHNlZFRpbWVyIHByZXdhbGtfdGltZXI7Ci0g ICBSZXNvbHZlZEZyYW1lRGF0YSogcmVzb2x2ZWRfZnJhbWUgPSBHZXRSZXNvbHZlZEZyYW1lKHN1 cmZhY2VfaWQpOwotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dz ZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRzX2hhbmRsZXJfZGF0YWJhc2VfaGVs cGVyLmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jy b3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRzX2hhbmRsZXJfZGF0YWJhc2Vf aGVscGVyLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC9jb250ZW50L2Jyb3dzZXIvZmly c3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRzX2hhbmRsZXJfZGF0YWJhc2VfaGVscGVyLmNj LnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0NjoxNy4wMDAwMDAwMDAgKzAyMDAKLSsr KyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9zZXRz L2ZpcnN0X3BhcnR5X3NldHNfaGFuZGxlcl9kYXRhYmFzZV9oZWxwZXIuY2MJMjAyNC0wNS0xOSAw OTowNzozOC4yMDI0Mzc2NzkgKzAyMDAKLUBAIC0yLDYgKzIsNyBAQAotIC8vIFVzZSBvZiB0aGlz IHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4g YmUKLSAvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgotIAotKyNpbmNsdWRlIDxvcHRpb25h bD4KLSAjaW5jbHVkZSAiY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFy dHlfc2V0c19oYW5kbGVyX2RhdGFiYXNlX2hlbHBlci5oIgotIAotICNpbmNsdWRlICJiYXNlL2Nv bnRhaW5lcnMvY29udGFpbnMuaCIKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvZ3B1 L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlL3NoYXJlZF9pbWFnZV9iYWNraW5n Lmguc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL2dwdS9jb21tYW5kX2J1 ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZS9zaGFyZWRfaW1hZ2VfYmFja2luZy5oCi0tLS0gY2hy b21pdW0tMTI1LjAuNjQyMi42MC9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1h Z2Uvc2hhcmVkX2ltYWdlX2JhY2tpbmcuaC5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMTUgMjM6 NDY6MjIuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9ncHUvY29t bWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2Uvc2hhcmVkX2ltYWdlX2JhY2tpbmcuaAky MDI0LTA1LTE5IDA5OjA3OjM4LjIwMjQzNzY3OSArMDIwMAotQEAgLTExMSw2ICsxMTEsMjUgQEAg dXNpbmcgVmlkZW9EZWNvZGVEZXZpY2UgPSBNaWNyb3NvZnQ6OldSTAotIHVzaW5nIFZpZGVvRGVj b2RlRGV2aWNlID0gdm9pZCo7Ci0gI2VuZGlmICAvLyBCVUlMREZMQUcoSVNfV0lOKQotIAotK2Ns YXNzIFNjb3BlZFdyaXRlVU1BIHsKLSsgcHVibGljOgotKyAgU2NvcGVkV3JpdGVVTUEoKSA9IGRl ZmF1bHQ7Ci0rCi0rICBTY29wZWRXcml0ZVVNQShjb25zdCBTY29wZWRXcml0ZVVNQSYpID0gZGVs ZXRlOwotKyAgU2NvcGVkV3JpdGVVTUEmIG9wZXJhdG9yPShjb25zdCBTY29wZWRXcml0ZVVNQSYp ID0gZGVsZXRlOwotKwotKyAgflNjb3BlZFdyaXRlVU1BKCkgewotKyAgICBVTUFfSElTVE9HUkFN X0JPT0xFQU4oIkdQVS5TaGFyZWRJbWFnZS5Db250ZW50Q29uc3VtZWQiLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgY29udGVudF9jb25zdW1lZF8pOwotKyAgfQotKwotKyAgYm9vbCBjb250 ZW50X2NvbnN1bWVkKCkgY29uc3QgeyByZXR1cm4gY29udGVudF9jb25zdW1lZF87IH0KLSsgIHZv aWQgU2V0Q29uc3VtZWQoKSB7IGNvbnRlbnRfY29uc3VtZWRfID0gdHJ1ZTsgfQotKwotKyBwcml2 YXRlOgotKyAgYm9vbCBjb250ZW50X2NvbnN1bWVkXyA9IGZhbHNlOwotK307Ci0rCi0gLy8gUmVw cmVzZW50cyB0aGUgYWN0dWFsIHN0b3JhZ2UgKEdMIHRleHR1cmUsIFZrSW1hZ2UsIEdNQikgZm9y IGEgU2hhcmVkSW1hZ2UuCi0gLy8gU2hvdWxkIG5vdCBiZSBhY2Nlc3NlZCBkaXJlY3RseSwgaW5z dGVhZCBpcyBhY2Nlc3NlZCB0aHJvdWdoIGEKLSAvLyBTaGFyZWRJbWFnZVJlcHJlc2VudGF0aW9u LgotQEAgLTM3MCwyNSArMzg5LDYgQEAgY2xhc3MgR1BVX0dMRVMyX0VYUE9SVCBTaGFyZWRJbWFn ZUJhY2tpbgotICAgbXV0YWJsZSBzdGQ6Om9wdGlvbmFsPGJhc2U6OkxvY2s+IGxvY2tfOwotIAot ICBwcml2YXRlOgotLSAgY2xhc3MgU2NvcGVkV3JpdGVVTUEgewotLSAgIHB1YmxpYzoKLS0gICAg U2NvcGVkV3JpdGVVTUEoKSA9IGRlZmF1bHQ7Ci0tCi0tICAgIFNjb3BlZFdyaXRlVU1BKGNvbnN0 IFNjb3BlZFdyaXRlVU1BJikgPSBkZWxldGU7Ci0tICAgIFNjb3BlZFdyaXRlVU1BJiBvcGVyYXRv cj0oY29uc3QgU2NvcGVkV3JpdGVVTUEmKSA9IGRlbGV0ZTsKLS0KLS0gICAgflNjb3BlZFdyaXRl VU1BKCkgewotLSAgICAgIFVNQV9ISVNUT0dSQU1fQk9PTEVBTigiR1BVLlNoYXJlZEltYWdlLkNv bnRlbnRDb25zdW1lZCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRlbnRfY29u c3VtZWRfKTsKLS0gICAgfQotLQotLSAgICBib29sIGNvbnRlbnRfY29uc3VtZWQoKSBjb25zdCB7 IHJldHVybiBjb250ZW50X2NvbnN1bWVkXzsgfQotLSAgICB2b2lkIFNldENvbnN1bWVkKCkgeyBj b250ZW50X2NvbnN1bWVkXyA9IHRydWU7IH0KLS0KLS0gICBwcml2YXRlOgotLSAgICBib29sIGNv bnRlbnRfY29uc3VtZWRfID0gZmFsc2U7Ci0tICB9OwotLQotICAgY29uc3QgTWFpbGJveCBtYWls Ym94XzsKLSAgIGNvbnN0IHZpejo6U2hhcmVkSW1hZ2VGb3JtYXQgZm9ybWF0XzsKLSAgIGNvbnN0 IGdmeDo6U2l6ZSBzaXplXzsKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9w dWJsaWMvY3BwL2Jhc2UvcHJvdG9fd3JhcHBlci5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVt LTEyNS4wLjY0MjIuNjAvbW9qby9wdWJsaWMvY3BwL2Jhc2UvcHJvdG9fd3JhcHBlci5jYwotLS0t IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9wdWJsaWMvY3BwL2Jhc2UvcHJvdG9fd3JhcHBl ci5jYy5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMTUgMjM6NDY6MjkuMDAwMDAwMDAwICswMjAw Ci0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9tb2pvL3B1YmxpYy9jcHAvYmFzZS9wcm90b193 cmFwcGVyLmNjCTIwMjQtMDUtMTkgMDk6MDc6MzguMjAzNDM3NzAwICswMjAwCi1AQCAtNTcsNyAr NTcsNyBAQCBib29sIFByb3RvV3JhcHBlcjo6RGVzZXJpYWxpemVUb01lc3NhZ2UoCi0gICAgIC8v IE1ha2UgYW4gaW4tcHJvY2VzcyBjb3B5IGhlcmUgYXMgcHJvdG9idWYgaXMgbm90IGRlc2lnbmVk IHRvCi0gICAgIC8vIHNhZmVseSBwYXJzZSBkYXRhIHRoYXQgbWlnaHQgYmUgY2hhbmdpbmcgdW5k ZXJuZWF0aCBpdC4KLSAgICAgYXV0byBhc19zcGFuID0gYmFzZTo6bWFrZV9zcGFuKGJ5dGVzXy0+ ZGF0YSgpLCBieXRlc18tPnNpemUoKSk7Ci0tICAgIGNvbnN0IHN0ZDo6dmVjdG9yPGNvbnN0IHVp bnQ4X3Q+IGNvcHkoYXNfc3Bhbi5iZWdpbigpLCBhc19zcGFuLmVuZCgpKTsKLSsgICAgY29uc3Qg c3RkOjp2ZWN0b3I8dWludDhfdD4gY29weShhc19zcGFuLmJlZ2luKCksIGFzX3NwYW4uZW5kKCkp OwotICAgICByZXR1cm4gbWVzc2FnZS5QYXJzZUZyb21BcnJheShjb3B5LmRhdGEoKSwgY29weS5z aXplKCkpOwotICAgfQotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9w dWJsaWMvY3BwL2JpbmRpbmdzL2xpYi9iaW5kaW5nc19pbnRlcm5hbC5oLnN5c3RlbS1saWJzdGRj KysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvbGliL2Jp bmRpbmdzX2ludGVybmFsLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8vcHVibGlj L2NwcC9iaW5kaW5ncy9saWIvYmluZGluZ3NfaW50ZXJuYWwuaC5zeXN0ZW0tbGlic3RkYysrCTIw MjQtMDUtMTUgMjM6NDY6MjkuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQy Mi42MC9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvbGliL2JpbmRpbmdzX2ludGVybmFsLmgJMjAy NC0wNS0xOSAwOTowNzozOC4yMDM0Mzc3MDAgKzAyMDAKLUBAIC04LDYgKzgsNyBAQAotICNpbmNs dWRlIDxzdGRpbnQuaD4KLSAKLSAjaW5jbHVkZSA8ZnVuY3Rpb25hbD4KLSsjaW5jbHVkZSA8b3B0 aW9uYWw+Ci0gI2luY2x1ZGUgPHR5cGVfdHJhaXRzPgotICNpbmNsdWRlIDx1dGlsaXR5PgotIAot ZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3Mv bGliL211bHRpcGxleF9yb3V0ZXIuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42 NDIyLjYwL21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9saWIvbXVsdGlwbGV4X3JvdXRlci5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2xpYi9t dWx0aXBsZXhfcm91dGVyLmNjLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0NjoyOS4w MDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL21vam8vcHVibGljL2Nw cC9iaW5kaW5ncy9saWIvbXVsdGlwbGV4X3JvdXRlci5jYwkyMDI0LTA1LTE5IDA5OjA3OjM4LjIw MzQzNzcwMCArMDIwMAotQEAgLTg5Miw3ICs4OTIsNyBAQCBib29sIE11bHRpcGxleFJvdXRlcjo6 RXhjbHVzaXZlU3luY1dhaXRGCi0gICBEQ0hFQ0soIWV4Y2x1c2l2ZV9zeW5jX3dhaXRfKTsKLSAK LSAgIHNjb3BlZF9yZWZwdHI8TXVsdGlwbGV4Um91dGVyPiBrZWVwX2FsaXZlKHRoaXMpOwotLSAg ZXhjbHVzaXZlX3N5bmNfd2FpdF8uZW1wbGFjZSgpOwotKyAgZXhjbHVzaXZlX3N5bmNfd2FpdF8g PSBFeGNsdXNpdmVTeW5jV2FpdEluZm97fTsKLSAgIGV4Y2x1c2l2ZV9zeW5jX3dhaXRfLT5pbnRl cmZhY2VfaWQgPSBpbnRlcmZhY2VfaWQ7Ci0gICBleGNsdXNpdmVfc3luY193YWl0Xy0+cmVxdWVz dF9pZCA9IHJlcXVlc3RfaWQ7Ci0gICB3aGlsZSAoIWV4Y2x1c2l2ZV9zeW5jX3dhaXRfLT5maW5p c2hlZCkgewotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGlu ay9jb21tb24vaW50ZXJlc3RfZ3JvdXAvYXVjdGlvbl9jb25maWdfbW9qb21fdHJhaXRzLmNjLnN5 c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9j b21tb24vaW50ZXJlc3RfZ3JvdXAvYXVjdGlvbl9jb25maWdfbW9qb21fdHJhaXRzLmNjCi0tLS0g Y2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9jb21tb24vaW50ZXJlc3Rf Z3JvdXAvYXVjdGlvbl9jb25maWdfbW9qb21fdHJhaXRzLmNjLnN5c3RlbS1saWJzdGRjKysJMjAy NC0wNS0xNSAyMzo0NjozOC4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL3RoaXJkX3BhcnR5L2JsaW5rL2NvbW1vbi9pbnRlcmVzdF9ncm91cC9hdWN0aW9uX2NvbmZp Z19tb2pvbV90cmFpdHMuY2MJMjAyNC0wNS0xOSAwOTowNzozOC4yMDY0Mzc3NjMgKzAyMDAKLUBA IC0yMTgsOCArMjE4LDYgQEAgYm9vbCBTdHJ1Y3RUcmFpdHM8Ymxpbms6Om1vam9tOjpBdWN0aW9u QQotICAgICAgICFkYXRhLlJlYWRBbGxCdXllcnNQcmlvcml0eVNpZ25hbHMoJm91dC0+YWxsX2J1 eWVyc19wcmlvcml0eV9zaWduYWxzKSB8fAotICAgICAgICFkYXRhLlJlYWRBdWN0aW9uUmVwb3J0 QnV5ZXJLZXlzKCZvdXQtPmF1Y3Rpb25fcmVwb3J0X2J1eWVyX2tleXMpIHx8Ci0gICAgICAgIWRh dGEuUmVhZEF1Y3Rpb25SZXBvcnRCdXllcnMoJm91dC0+YXVjdGlvbl9yZXBvcnRfYnV5ZXJzKSB8 fAotLSAgICAgICFkYXRhLlJlYWRBdWN0aW9uUmVwb3J0QnV5ZXJEZWJ1Z01vZGVDb25maWcoCi0t ICAgICAgICAgICZvdXQtPmF1Y3Rpb25fcmVwb3J0X2J1eWVyX2RlYnVnX21vZGVfY29uZmlnKSB8 fAotICAgICAgICFkYXRhLlJlYWRSZXF1aXJlZFNlbGxlckNhcGFiaWxpdGllcygKLSAgICAgICAg ICAgJm91dC0+cmVxdWlyZWRfc2VsbGVyX2NhcGFiaWxpdGllcykgfHwKLSAgICAgICAhZGF0YS5S ZWFkUmVxdWVzdGVkU2l6ZSgmb3V0LT5yZXF1ZXN0ZWRfc2l6ZSkgfHwKLWRpZmYgLXVwIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sb2FkZXIv aGlzdG9yeV9pdGVtLmNjLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90 aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xvYWRlci9oaXN0b3J5X2l0ZW0uY2MKLS0t LSBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUv bG9hZGVyL2hpc3RvcnlfaXRlbS5jYy5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMTUgMjM6NDY6 NDEuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9jb3JlL2xvYWRlci9oaXN0b3J5X2l0ZW0uY2MJMjAyNC0wNS0xOSAw OTowNzozOC4yMDk0Mzc4MjUgKzAyMDAKLUBAIC0xODIsMjYgKzE4MiwyNiBAQCB2b2lkIEhpc3Rv cnlJdGVtOjpTZXRSZWZlcnJlclBvbGljeShuZXR3Ci0gCi0gdm9pZCBIaXN0b3J5SXRlbTo6U2V0 VmlzdWFsVmlld3BvcnRTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvZmZzZXQpIHsK LSAgIGlmICghdmlld19zdGF0ZV8pCi0tICAgIHZpZXdfc3RhdGVfID0gc3RkOjptYWtlX29wdGlv bmFsPFZpZXdTdGF0ZT4oKTsKLSsgICAgdmlld19zdGF0ZV8gPSBibGluazo6SGlzdG9yeUl0ZW06 OlZpZXdTdGF0ZXt9OwotICAgdmlld19zdGF0ZV8tPnZpc3VhbF92aWV3cG9ydF9zY3JvbGxfb2Zm c2V0XyA9IG9mZnNldDsKLSB9Ci0gCi0gdm9pZCBIaXN0b3J5SXRlbTo6U2V0U2Nyb2xsT2Zmc2V0 KGNvbnN0IFNjcm9sbE9mZnNldCYgb2Zmc2V0KSB7Ci0gICBpZiAoIXZpZXdfc3RhdGVfKQotLSAg ICB2aWV3X3N0YXRlXyA9IHN0ZDo6bWFrZV9vcHRpb25hbDxWaWV3U3RhdGU+KCk7Ci0rICAgIHZp ZXdfc3RhdGVfID0gYmxpbms6Okhpc3RvcnlJdGVtOjpWaWV3U3RhdGV7fTsKLSAgIHZpZXdfc3Rh dGVfLT5zY3JvbGxfb2Zmc2V0XyA9IG9mZnNldDsKLSB9Ci0gCi0gdm9pZCBIaXN0b3J5SXRlbTo6 U2V0UGFnZVNjYWxlRmFjdG9yKGZsb2F0IHNjYWxlX2ZhY3RvcikgewotICAgaWYgKCF2aWV3X3N0 YXRlXykKLS0gICAgdmlld19zdGF0ZV8gPSBzdGQ6Om1ha2Vfb3B0aW9uYWw8Vmlld1N0YXRlPigp OwotKyAgICB2aWV3X3N0YXRlXyA9IGJsaW5rOjpIaXN0b3J5SXRlbTo6Vmlld1N0YXRle307Ci0g ICB2aWV3X3N0YXRlXy0+cGFnZV9zY2FsZV9mYWN0b3JfID0gc2NhbGVfZmFjdG9yOwotIH0KLSAK LSB2b2lkIEhpc3RvcnlJdGVtOjpTZXRTY3JvbGxBbmNob3JEYXRhKAotICAgICBjb25zdCBTY3Jv bGxBbmNob3JEYXRhJiBzY3JvbGxfYW5jaG9yX2RhdGEpIHsKLSAgIGlmICghdmlld19zdGF0ZV8p Ci0tICAgIHZpZXdfc3RhdGVfID0gc3RkOjptYWtlX29wdGlvbmFsPFZpZXdTdGF0ZT4oKTsKLSsg ICAgdmlld19zdGF0ZV8gPSBibGluazo6SGlzdG9yeUl0ZW06OlZpZXdTdGF0ZXt9OwotICAgdmll d19zdGF0ZV8tPnNjcm9sbF9hbmNob3JfZGF0YV8gPSBzY3JvbGxfYW5jaG9yX2RhdGE7Ci0gfQot IAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9jb3JlL3BhaW50L2ZyYWdtZW50X2RhdGFfaXRlcmF0b3IuaC5zeXN0ZW0tbGlic3RkYysr IGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9w YWludC9mcmFnbWVudF9kYXRhX2l0ZXJhdG9yLmgKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvcGFpbnQvZnJhZ21lbnRfZGF0YV9pdGVy YXRvci5oLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0Njo0MS4wMDAwMDAwMDAgKzAy MDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L2NvcmUvcGFpbnQvZnJhZ21lbnRfZGF0YV9pdGVyYXRvci5oCTIwMjQtMDUtMTkgMDk6MDc6Mzgu MjA5NDM3ODI1ICswMjAwCi1AQCAtMjIsNyArMjIsNyBAQCBjbGFzcyBGcmFnbWVudERhdGFJdGVy YXRvckJhc2UgewotIAotICBwdWJsaWM6Ci0gICBleHBsaWNpdCBGcmFnbWVudERhdGFJdGVyYXRv ckJhc2UoSGVhZCYgaGVhZCkgOiBmcmFnbWVudF9oZWFkXyhoZWFkKSB7fQotLSAgZXhwbGljaXQg RnJhZ21lbnREYXRhSXRlcmF0b3JCYXNlKG51bGxwdHJfdCkge30KLSsgIGV4cGxpY2l0IEZyYWdt ZW50RGF0YUl0ZXJhdG9yQmFzZShzdGQ6Om51bGxwdHJfdCkge30KLSAKLSAgIERhdGEqIEdldEZy YWdtZW50RGF0YSgpIGNvbnN0IHsKLSAgICAgcmV0dXJuICFJc0RvbmUoKSA/ICZmcmFnbWVudF9o ZWFkXy5hdChpZHhfKSA6IG51bGxwdHI7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWFfY29udHJvbHMvZWxlbWVu dHMvbWVkaWFfY29udHJvbF90aW1lbGluZV9lbGVtZW50LmNjLnN5c3RlbS1saWJzdGRjKysgY2hy b21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL21l ZGlhX2NvbnRyb2xzL2VsZW1lbnRzL21lZGlhX2NvbnRyb2xfdGltZWxpbmVfZWxlbWVudC5jYwot LS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9k dWxlcy9tZWRpYV9jb250cm9scy9lbGVtZW50cy9tZWRpYV9jb250cm9sX3RpbWVsaW5lX2VsZW1l bnQuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ2OjQyLjAwMDAwMDAwMCArMDIw MAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv bW9kdWxlcy9tZWRpYV9jb250cm9scy9lbGVtZW50cy9tZWRpYV9jb250cm9sX3RpbWVsaW5lX2Vs ZW1lbnQuY2MJMjAyNC0wNS0xOSAwOTowNzozOC4yMTA0Mzc4NDYgKzAyMDAKLUBAIC0xMDEsNyAr MTAxLDcgQEAgdm9pZCBNZWRpYUNvbnRyb2xUaW1lbGluZUVsZW1lbnQ6OlVwZGF0ZQotIHZvaWQg TWVkaWFDb250cm9sVGltZWxpbmVFbGVtZW50OjpTZXRQb3NpdGlvbihkb3VibGUgY3VycmVudF90 aW1lLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBib29s IHN1cHByZXNzX2FyaWEpIHsKLSAgIGlmIChpc19saXZlXyAmJiAhbGl2ZV9hbmNob3JfdGltZV8g JiYgY3VycmVudF90aW1lICE9IDApIHsKLS0gICAgbGl2ZV9hbmNob3JfdGltZV8uZW1wbGFjZSgp OwotKyAgICBsaXZlX2FuY2hvcl90aW1lXyA9IExpdmVBbmNob3JUaW1le307Ci0gICAgIGxpdmVf YW5jaG9yX3RpbWVfLT5jbG9ja190aW1lXyA9IGJhc2U6OlRpbWVUaWNrczo6Tm93KCk7Ci0gICAg IGxpdmVfYW5jaG9yX3RpbWVfLT5tZWRpYV90aW1lXyA9IE1lZGlhRWxlbWVudCgpLmN1cnJlbnRU aW1lKCk7Ci0gICB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL3BhaW50L2dlb21ldHJ5X21hcHBlcl90 cmFuc2Zvcm1fY2FjaGUuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL3BhaW50L2dlb21l dHJ5X21hcHBlcl90cmFuc2Zvcm1fY2FjaGUuY2MKLS0tLSBjaHJvbWl1bS0xMjUuMC42NDIyLjYw L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2dyYXBoaWNzL3BhaW50L2dlb21l dHJ5X21hcHBlcl90cmFuc2Zvcm1fY2FjaGUuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1 IDIzOjQ2OjQyLjAwMDAwMDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvcGFpbnQvZ2VvbWV0cnlf bWFwcGVyX3RyYW5zZm9ybV9jYWNoZS5jYwkyMDI0LTA1LTE5IDA5OjA3OjM4LjIxMDQzNzg0NiAr MDIwMAotQEAgLTcwLDcgKzcwLDcgQEAgdm9pZCBHZW9tZXRyeU1hcHBlclRyYW5zZm9ybUNhY2hl OjpVcGRhdAotICAgICB0b18yZF90cmFuc2xhdGlvbl9yb290XyArPSB0cmFuc2xhdGlvbjsKLSAK LSAgICAgaWYgKHBhcmVudC5wbGFuZV9yb290X3RyYW5zZm9ybV8pIHsKLS0gICAgICBwbGFuZV9y b290X3RyYW5zZm9ybV8uZW1wbGFjZSgpOwotKyAgICAgIHBsYW5lX3Jvb3RfdHJhbnNmb3JtXyA9 IFBsYW5lUm9vdFRyYW5zZm9ybXt9OwotICAgICAgIHBsYW5lX3Jvb3RfdHJhbnNmb3JtXy0+cGxh bmVfcm9vdCA9IHBhcmVudC5wbGFuZV9yb290KCk7Ci0gICAgICAgcGxhbmVfcm9vdF90cmFuc2Zv cm1fLT50b19wbGFuZV9yb290ID0gcGFyZW50LnRvX3BsYW5lX3Jvb3QoKTsKLSAgICAgICBwbGFu ZV9yb290X3RyYW5zZm9ybV8tPnRvX3BsYW5lX3Jvb3QuVHJhbnNsYXRlKHRyYW5zbGF0aW9uLngo KSwKLUBAIC05OCw3ICs5OCw3IEBAIHZvaWQgR2VvbWV0cnlNYXBwZXJUcmFuc2Zvcm1DYWNoZTo6 VXBkYXQKLSAgICAgICAvLyBhcyB0aGUgMmQgdHJhbnNsYXRpb24gcm9vdC4KLSAgICAgICBwbGFu ZV9yb290X3RyYW5zZm9ybV8gPSBzdGQ6Om51bGxvcHQ7Ci0gICAgIH0gZWxzZSB7Ci0tICAgICAg cGxhbmVfcm9vdF90cmFuc2Zvcm1fLmVtcGxhY2UoKTsKLSsgICAgICBwbGFuZV9yb290X3RyYW5z Zm9ybV8gPSBQbGFuZVJvb3RUcmFuc2Zvcm17fTsKLSAgICAgICBwbGFuZV9yb290X3RyYW5zZm9y bV8tPnBsYW5lX3Jvb3QgPSBwYXJlbnQucGxhbmVfcm9vdCgpOwotICAgICAgIHBsYW5lX3Jvb3Rf dHJhbnNmb3JtXy0+dG9fcGxhbmVfcm9vdC5NYWtlSWRlbnRpdHkoKTsKLSAgICAgICBwYXJlbnQu QXBwbHlUb1BsYW5lUm9vdChwbGFuZV9yb290X3RyYW5zZm9ybV8tPnRvX3BsYW5lX3Jvb3QpOwot QEAgLTE0MCw3ICsxNDAsNyBAQCB2b2lkIEdlb21ldHJ5TWFwcGVyVHJhbnNmb3JtQ2FjaGU6OlVw ZGF0Ci0gICBwYXJlbnRfbm9kZS0+VXBkYXRlU2NyZWVuVHJhbnNmb3JtKCk7Ci0gICBjb25zdCBh dXRvJiBwYXJlbnQgPSBwYXJlbnRfbm9kZS0+R2V0VHJhbnNmb3JtQ2FjaGUoKTsKLSAKLS0gIHNj cmVlbl90cmFuc2Zvcm1fLmVtcGxhY2UoKTsKLSsgIHNjcmVlbl90cmFuc2Zvcm1fID0gU2NyZWVu VHJhbnNmb3Jte307Ci0gICBwYXJlbnQuQXBwbHlUb1NjcmVlbihzY3JlZW5fdHJhbnNmb3JtXy0+ dG9fc2NyZWVuKTsKLSAgIGlmIChub2RlLkZsYXR0ZW5zSW5oZXJpdGVkVHJhbnNmb3JtKCkpCi0g ICAgIHNjcmVlbl90cmFuc2Zvcm1fLT50b19zY3JlZW4uRmxhdHRlbigpOwotZGlmZiAtdXAgY2hy b21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS9ydXkvc3JjL3J1eS9wcm9maWxlci9pbnN0 cnVtZW50YXRpb24uaC5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhp cmRfcGFydHkvcnV5L3NyYy9ydXkvcHJvZmlsZXIvaW5zdHJ1bWVudGF0aW9uLmgKLS0tLSBjaHJv bWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1eS9zcmMvcnV5L3Byb2ZpbGVyL2luc3Ry dW1lbnRhdGlvbi5oLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0Nzo0OS4wMDAwMDAw MDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3J1eS9zcmMv cnV5L3Byb2ZpbGVyL2luc3RydW1lbnRhdGlvbi5oCTIwMjQtMDUtMTkgMDk6MDc6MzguMjExNDM3 ODY3ICswMjAwCi1AQCAtMTksNiArMTksNyBAQCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5z ZS4KLSAjaWZkZWYgUlVZX1BST0ZJTEVSCi0gI2luY2x1ZGUgPGNzdGRpbz4KLSAjaW5jbHVkZSA8 bXV0ZXg+Ci0rI2luY2x1ZGUgPHN0cmluZz4KLSAjaW5jbHVkZSA8dmVjdG9yPgotICNlbmRpZgot IAotZGlmZiAtdXAgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS92dWxrYW4tZGVw cy92dWxrYW4tdXRpbGl0eS1saWJyYXJpZXMvc3JjL2luY2x1ZGUvdnVsa2FuL3V0aWxpdHkvdmtf c21hbGxfY29udGFpbmVycy5ocHAuc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL3RoaXJkX3BhcnR5L3Z1bGthbi1kZXBzL3Z1bGthbi11dGlsaXR5LWxpYnJhcmllcy9zcmMv aW5jbHVkZS92dWxrYW4vdXRpbGl0eS92a19zbWFsbF9jb250YWluZXJzLmhwcAotLS0tIGNocm9t aXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkvdnVsa2FuLWRlcHMvdnVsa2FuLXV0aWxpdHkt bGlicmFyaWVzL3NyYy9pbmNsdWRlL3Z1bGthbi91dGlsaXR5L3ZrX3NtYWxsX2NvbnRhaW5lcnMu aHBwLnN5c3RlbS1saWJzdGRjKysJMjAyNC0wNS0xNSAyMzo0ODowNS4wMDAwMDAwMDAgKzAyMDAK LSsrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3BhcnR5L3Z1bGthbi1kZXBzL3Z1bGth bi11dGlsaXR5LWxpYnJhcmllcy9zcmMvaW5jbHVkZS92dWxrYW4vdXRpbGl0eS92a19zbWFsbF9j b250YWluZXJzLmhwcAkyMDI0LTA1LTE5IDA5OjA3OjM4LjIxMTQzNzg2NyArMDIwMAotQEAgLTgs NiArOCw3IEBACi0gCi0gI3ByYWdtYSBvbmNlCi0gCi0rI2luY2x1ZGUgPG1lbW9yeT4KLSAjaW5j bHVkZSA8Y2Fzc2VydD4KLSAjaW5jbHVkZSA8dW5vcmRlcmVkX21hcD4KLSAjaW5jbHVkZSA8dW5v cmRlcmVkX3NldD4KLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdGhpcmRfcGFydHkv d2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVyL2dvb2dfY2MvbG9zc19iYXNlZF9i d2VfdjIuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIyLjYwL3RoaXJkX3Bh cnR5L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdlc3Rpb25fY29udHJvbGxlci9nb29nX2NjL2xvc3NfYmFz ZWRfYndlX3YyLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS93ZWJy dGMvbW9kdWxlcy9jb25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9sb3NzX2Jhc2VkX2J3ZV92 Mi5jYy5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMTUgMjM6NDg6MDkuMDAwMDAwMDAwICswMjAw Ci0rKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9j b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9sb3NzX2Jhc2VkX2J3ZV92Mi5jYwkyMDI0LTA1 LTE5IDA5OjA3OjM4LjIxMjQzNzg4OCArMDIwMAotQEAgLTU0OSw3ICs1NDksNyBAQCBhYnNsOjpv cHRpb25hbDxMb3NzQmFzZWRCd2VWMjo6Q29uZmlnPiBMCi0gICBpZiAoIWVuYWJsZWQuR2V0KCkp IHsKLSAgICAgcmV0dXJuIGNvbmZpZzsKLSAgIH0KLS0gIGNvbmZpZy5lbXBsYWNlKCk7Ci0rICBj b25maWcgPSBDb25maWd7fTsKLSAgIGNvbmZpZy0+YmFuZHdpZHRoX3JhbXB1cF91cHBlcl9ib3Vu ZF9mYWN0b3IgPQotICAgICAgIGJhbmR3aWR0aF9yYW1wdXBfdXBwZXJfYm91bmRfZmFjdG9yLkdl dCgpOwotICAgY29uZmlnLT5iYW5kd2lkdGhfcmFtcHVwX3VwcGVyX2JvdW5kX2ZhY3Rvcl9pbl9o b2xkID0KLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L3gvZ2VuZXJhdGVk X3Byb3Rvcy9yYW5kci5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAv dWkvZ2Z4L3gvZ2VuZXJhdGVkX3Byb3Rvcy9yYW5kci5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0 MjIuNjAvdWkvZ2Z4L3gvZ2VuZXJhdGVkX3Byb3Rvcy9yYW5kci5jYy5zeXN0ZW0tbGlic3RkYysr CTIwMjQtMDUtMTUgMjM6NDc6MzMuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3JhbmRyLmNjCTIwMjQtMDUtMTkgMDk6 MDc6MzguMjEyNDM3ODg4ICswMjAwCi1AQCAtMzA1LDcgKzMwNSw3IEBAIHZvaWQgUmVhZEV2ZW50 PFJhbmRSOjpOb3RpZnlFdmVudD4oUmFuZFIKLSAgIC8vIGRhdGEKLSAgIGF1dG8gZGF0YV9leHBy ID0gc3ViQ29kZTsKLSAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBSYW5kUjo6Tm90aWZ5OjpDcnRj Q2hhbmdlKSkgewotLSAgICBkYXRhLmNjLmVtcGxhY2UoKTsKLSsgICAgZGF0YS5jYyA9IFJhbmRS OjpOb3RpZnlFdmVudDo6Q2N7fTsKLSAgICAgYXV0byYgdGltZXN0YW1wID0gKCpkYXRhLmNjKS50 aW1lc3RhbXA7Ci0gICAgIGF1dG8mIHdpbmRvdyA9ICgqZGF0YS5jYykud2luZG93OwotICAgICBh dXRvJiBjcnRjID0gKCpkYXRhLmNjKS5jcnRjOwotQEAgLTM0OSw3ICszNDksNyBAQCB2b2lkIFJl YWRFdmVudDxSYW5kUjo6Tm90aWZ5RXZlbnQ+KFJhbmRSCi0gICAgIFJlYWQoJmhlaWdodCwgJmJ1 Zik7Ci0gICB9Ci0gICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgUmFuZFI6Ok5vdGlmeTo6T3V0cHV0 Q2hhbmdlKSkgewotLSAgICBkYXRhLm9jLmVtcGxhY2UoKTsKLSsgICAgZGF0YS5vYyA9IFJhbmRS OjpOb3RpZnlFdmVudDo6T2N7fTsKLSAgICAgYXV0byYgdGltZXN0YW1wID0gKCpkYXRhLm9jKS50 aW1lc3RhbXA7Ci0gICAgIGF1dG8mIGNvbmZpZ190aW1lc3RhbXAgPSAoKmRhdGEub2MpLmNvbmZp Z190aW1lc3RhbXA7Ci0gICAgIGF1dG8mIHdpbmRvdyA9ICgqZGF0YS5vYykud2luZG93OwotQEAg LTM5NCw3ICszOTQsNyBAQCB2b2lkIFJlYWRFdmVudDxSYW5kUjo6Tm90aWZ5RXZlbnQ+KFJhbmRS Ci0gICAgIHN1YnBpeGVsX29yZGVyID0gc3RhdGljX2Nhc3Q8UmVuZGVyOjpTdWJQaXhlbD4odG1w Nik7Ci0gICB9Ci0gICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgUmFuZFI6Ok5vdGlmeTo6T3V0cHV0 UHJvcGVydHkpKSB7Ci0tICAgIGRhdGEub3AuZW1wbGFjZSgpOwotKyAgICBkYXRhLm9wID0gUmFu ZFI6Ok5vdGlmeUV2ZW50OjpPcHt9OwotICAgICBhdXRvJiB3aW5kb3cgPSAoKmRhdGEub3ApLndp bmRvdzsKLSAgICAgYXV0byYgb3V0cHV0ID0gKCpkYXRhLm9wKS5vdXRwdXQ7Ci0gICAgIGF1dG8m IGF0b20gPSAoKmRhdGEub3ApLmF0b207Ci1AQCAtNDIyLDcgKzQyMiw3IEBAIHZvaWQgUmVhZEV2 ZW50PFJhbmRSOjpOb3RpZnlFdmVudD4oUmFuZFIKLSAgICAgUGFkKCZidWYsIDExKTsKLSAgIH0K LSAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBSYW5kUjo6Tm90aWZ5OjpQcm92aWRlckNoYW5nZSkp IHsKLS0gICAgZGF0YS5wYy5lbXBsYWNlKCk7Ci0rICAgIGRhdGEucGMgPSBSYW5kUjo6Tm90aWZ5 RXZlbnQ6OlBje307Ci0gICAgIGF1dG8mIHRpbWVzdGFtcCA9ICgqZGF0YS5wYykudGltZXN0YW1w OwotICAgICBhdXRvJiB3aW5kb3cgPSAoKmRhdGEucGMpLndpbmRvdzsKLSAgICAgYXV0byYgcHJv dmlkZXIgPSAoKmRhdGEucGMpLnByb3ZpZGVyOwotQEAgLTQ0MCw3ICs0NDAsNyBAQCB2b2lkIFJl YWRFdmVudDxSYW5kUjo6Tm90aWZ5RXZlbnQ+KFJhbmRSCi0gICAgIFBhZCgmYnVmLCAxNik7Ci0g ICB9Ci0gICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgUmFuZFI6Ok5vdGlmeTo6UHJvdmlkZXJQcm9w ZXJ0eSkpIHsKLS0gICAgZGF0YS5wcC5lbXBsYWNlKCk7Ci0rICAgIGRhdGEucHAgPSBSYW5kUjo6 Tm90aWZ5RXZlbnQ6OlBwe307Ci0gICAgIGF1dG8mIHdpbmRvdyA9ICgqZGF0YS5wcCkud2luZG93 OwotICAgICBhdXRvJiBwcm92aWRlciA9ICgqZGF0YS5wcCkucHJvdmlkZXI7Ci0gICAgIGF1dG8m IGF0b20gPSAoKmRhdGEucHApLmF0b207Ci1AQCAtNDY2LDcgKzQ2Niw3IEBAIHZvaWQgUmVhZEV2 ZW50PFJhbmRSOjpOb3RpZnlFdmVudD4oUmFuZFIKLSAgICAgUGFkKCZidWYsIDExKTsKLSAgIH0K LSAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBSYW5kUjo6Tm90aWZ5OjpSZXNvdXJjZUNoYW5nZSkp IHsKLS0gICAgZGF0YS5yYy5lbXBsYWNlKCk7Ci0rICAgIGRhdGEucmMgPSBSYW5kUjo6Tm90aWZ5 RXZlbnQ6OlJje307Ci0gICAgIGF1dG8mIHRpbWVzdGFtcCA9ICgqZGF0YS5yYykudGltZXN0YW1w OwotICAgICBhdXRvJiB3aW5kb3cgPSAoKmRhdGEucmMpLndpbmRvdzsKLSAKLUBAIC00ODAsNyAr NDgwLDcgQEAgdm9pZCBSZWFkRXZlbnQ8UmFuZFI6Ok5vdGlmeUV2ZW50PihSYW5kUgotICAgICBQ YWQoJmJ1ZiwgMjApOwotICAgfQotICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIFJhbmRSOjpOb3Rp Znk6OkxlYXNlKSkgewotLSAgICBkYXRhLmxjLmVtcGxhY2UoKTsKLSsgICAgZGF0YS5sYyA9IFJh bmRSOjpOb3RpZnlFdmVudDo6TGN7fTsKLSAgICAgYXV0byYgdGltZXN0YW1wID0gKCpkYXRhLmxj KS50aW1lc3RhbXA7Ci0gICAgIGF1dG8mIHdpbmRvdyA9ICgqZGF0YS5sYykud2luZG93OwotICAg ICBhdXRvJiBsZWFzZSA9ICgqZGF0YS5sYykubGVhc2U7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjUu MC42NDIyLjYwL3VpL2dmeC94L2dlbmVyYXRlZF9wcm90b3MveGlucHV0LmNjLnN5c3RlbS1saWJz dGRjKysgY2hyb21pdW0tMTI1LjAuNjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3hp bnB1dC5jYwotLS0tIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L3gvZ2VuZXJhdGVkX3By b3Rvcy94aW5wdXQuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTE1IDIzOjQ3OjMzLjAwMDAw MDAwMCArMDIwMAotKysrIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L3gvZ2VuZXJhdGVk X3Byb3Rvcy94aW5wdXQuY2MJMjAyNC0wNS0xOSAwOTowNzozOC4yMTY0Mzc5NzEgKzAyMDAKLUBA IC01NjcsNyArNTY3LDcgQEAgdm9pZCBSZWFkRXZlbnQ8SW5wdXQ6OkRldmljZUNoYW5nZWRFdmVu dAotICAgICAgIC8vIGRhdGEKLSAgICAgICBhdXRvIGRhdGFfZXhwciA9IHR5cGU7Ci0gICAgICAg aWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6OktleSkpIHsKLS0g ICAgICAgIGRhdGEua2V5LmVtcGxhY2UoKTsKLSsgICAgICAgIGRhdGEua2V5ID0gSW5wdXQ6OkRl dmljZUNsYXNzOjpLZXl7fTsKLSAgICAgICAgIHVpbnQxNl90IG51bV9rZXlze307Ci0gICAgICAg ICBhdXRvJiBrZXlzID0gKCpkYXRhLmtleSkua2V5czsKLSAgICAgICAgIHNpemVfdCBrZXlzX2xl biA9IGtleXMuc2l6ZSgpOwotQEAgLTU4Myw3ICs1ODMsNyBAQCB2b2lkIFJlYWRFdmVudDxJbnB1 dDo6RGV2aWNlQ2hhbmdlZEV2ZW50Ci0gICAgICAgICB9Ci0gICAgICAgfQotICAgICAgIGlmIChD YXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpCdXR0b24pKSB7Ci0tICAg ICAgICBkYXRhLmJ1dHRvbi5lbXBsYWNlKCk7Ci0rICAgICAgICBkYXRhLmJ1dHRvbiA9IElucHV0 OjpEZXZpY2VDbGFzczo6QnV0dG9ue307Ci0gICAgICAgICB1aW50MTZfdCBudW1fYnV0dG9uc3t9 OwotICAgICAgICAgYXV0byYgc3RhdGUgPSAoKmRhdGEuYnV0dG9uKS5zdGF0ZTsKLSAgICAgICAg IHNpemVfdCBzdGF0ZV9sZW4gPSBzdGF0ZS5zaXplKCk7Ci1AQCAtNjA4LDcgKzYwOCw3IEBAIHZv aWQgUmVhZEV2ZW50PElucHV0OjpEZXZpY2VDaGFuZ2VkRXZlbnQKLSAgICAgICAgIH0KLSAgICAg ICB9Ci0gICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6 OlZhbHVhdG9yKSkgewotLSAgICAgICAgZGF0YS52YWx1YXRvci5lbXBsYWNlKCk7Ci0rICAgICAg ICBkYXRhLnZhbHVhdG9yID0gSW5wdXQ6OkRldmljZUNsYXNzOjpWYWx1YXRvcnt9OwotICAgICAg ICAgYXV0byYgbnVtYmVyID0gKCpkYXRhLnZhbHVhdG9yKS5udW1iZXI7Ci0gICAgICAgICBhdXRv JiBsYWJlbCA9ICgqZGF0YS52YWx1YXRvcikubGFiZWw7Ci0gICAgICAgICBhdXRvJiBtaW4gPSAo KmRhdGEudmFsdWF0b3IpLm1pbjsKLUBAIC02NzEsNyArNjcxLDcgQEAgdm9pZCBSZWFkRXZlbnQ8 SW5wdXQ6OkRldmljZUNoYW5nZWRFdmVudAotICAgICAgICAgUGFkKCZidWYsIDMpOwotICAgICAg IH0KLSAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6 U2Nyb2xsKSkgewotLSAgICAgICAgZGF0YS5zY3JvbGwuZW1wbGFjZSgpOwotKyAgICAgICAgZGF0 YS5zY3JvbGwgPSBJbnB1dDo6RGV2aWNlQ2xhc3M6OlNjcm9sbHt9OwotICAgICAgICAgYXV0byYg bnVtYmVyID0gKCpkYXRhLnNjcm9sbCkubnVtYmVyOwotICAgICAgICAgYXV0byYgc2Nyb2xsX3R5 cGUgPSAoKmRhdGEuc2Nyb2xsKS5zY3JvbGxfdHlwZTsKLSAgICAgICAgIGF1dG8mIGZsYWdzID0g KCpkYXRhLnNjcm9sbCkuZmxhZ3M7Ci1AQCAtNzA2LDcgKzcwNiw3IEBAIHZvaWQgUmVhZEV2ZW50 PElucHV0OjpEZXZpY2VDaGFuZ2VkRXZlbnQKLSAgICAgICAgIH0KLSAgICAgICB9Ci0gICAgICAg aWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6OlRvdWNoKSkgewot LSAgICAgICAgZGF0YS50b3VjaC5lbXBsYWNlKCk7Ci0rICAgICAgICBkYXRhLnRvdWNoID0gSW5w dXQ6OkRldmljZUNsYXNzOjpUb3VjaHt9OwotICAgICAgICAgYXV0byYgbW9kZSA9ICgqZGF0YS50 b3VjaCkubW9kZTsKLSAgICAgICAgIGF1dG8mIG51bV90b3VjaGVzID0gKCpkYXRhLnRvdWNoKS5u dW1fdG91Y2hlczsKLSAKLUBAIC03MTksNyArNzE5LDcgQEAgdm9pZCBSZWFkRXZlbnQ8SW5wdXQ6 OkRldmljZUNoYW5nZWRFdmVudAotICAgICAgICAgUmVhZCgmbnVtX3RvdWNoZXMsICZidWYpOwot ICAgICAgIH0KLSAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNz VHlwZTo6R2VzdHVyZSkpIHsKLS0gICAgICAgIGRhdGEuZ2VzdHVyZS5lbXBsYWNlKCk7Ci0rICAg ICAgICBkYXRhLmdlc3R1cmUgPSBJbnB1dDo6RGV2aWNlQ2xhc3M6Okdlc3R1cmV7fTsKLSAgICAg ICAgIGF1dG8mIG51bV90b3VjaGVzID0gKCpkYXRhLmdlc3R1cmUpLm51bV90b3VjaGVzOwotIAot ICAgICAgICAgLy8gbnVtX3RvdWNoZXMKLUBAIC0yMjA2LDcgKzIyMDYsNyBAQCBzdGQ6OnVuaXF1 ZV9wdHI8SW5wdXQ6Okxpc3RJbnB1dERldmljZXNSCi0gICAgICAgLy8gaW5mbwotICAgICAgIGF1 dG8gaW5mb19leHByID0gY2xhc3NfaWQ7Ci0gICAgICAgaWYgKENhc2VFcShpbmZvX2V4cHIsIElu cHV0OjpJbnB1dENsYXNzOjpLZXkpKSB7Ci0tICAgICAgICBpbmZvLmtleS5lbXBsYWNlKCk7Ci0r ICAgICAgICBpbmZvLmtleSA9IElucHV0OjpJbnB1dEluZm86OktleXt9OwotICAgICAgICAgYXV0 byYgbWluX2tleWNvZGUgPSAoKmluZm8ua2V5KS5taW5fa2V5Y29kZTsKLSAgICAgICAgIGF1dG8m IG1heF9rZXljb2RlID0gKCppbmZvLmtleSkubWF4X2tleWNvZGU7Ci0gICAgICAgICBhdXRvJiBu dW1fa2V5cyA9ICgqaW5mby5rZXkpLm51bV9rZXlzOwotQEAgLTIyMjQsMTQgKzIyMjQsMTQgQEAg c3RkOjp1bmlxdWVfcHRyPElucHV0OjpMaXN0SW5wdXREZXZpY2VzUgotICAgICAgICAgUGFkKCZi dWYsIDIpOwotICAgICAgIH0KLSAgICAgICBpZiAoQ2FzZUVxKGluZm9fZXhwciwgSW5wdXQ6Oklu cHV0Q2xhc3M6OkJ1dHRvbikpIHsKLS0gICAgICAgIGluZm8uYnV0dG9uLmVtcGxhY2UoKTsKLSsg ICAgICAgIGluZm8uYnV0dG9uID0gSW5wdXQ6OklucHV0SW5mbzo6QnV0dG9ue307Ci0gICAgICAg ICBhdXRvJiBudW1fYnV0dG9ucyA9ICgqaW5mby5idXR0b24pLm51bV9idXR0b25zOwotIAotICAg ICAgICAgLy8gbnVtX2J1dHRvbnMKLSAgICAgICAgIFJlYWQoJm51bV9idXR0b25zLCAmYnVmKTsK LSAgICAgICB9Ci0gICAgICAgaWYgKENhc2VFcShpbmZvX2V4cHIsIElucHV0OjpJbnB1dENsYXNz OjpWYWx1YXRvcikpIHsKLS0gICAgICAgIGluZm8udmFsdWF0b3IuZW1wbGFjZSgpOwotKyAgICAg ICAgaW5mby52YWx1YXRvciA9IElucHV0OjpJbnB1dEluZm86OlZhbHVhdG9ye307Ci0gICAgICAg ICB1aW50OF90IGF4ZXNfbGVue307Ci0gICAgICAgICBhdXRvJiBtb2RlID0gKCppbmZvLnZhbHVh dG9yKS5tb2RlOwotICAgICAgICAgYXV0byYgbW90aW9uX3NpemUgPSAoKmluZm8udmFsdWF0b3Ip Lm1vdGlvbl9zaXplOwotQEAgLTM4NDQsNyArMzg0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1 dDo6R2V0RmVlZGJhY2tDb250cm8KLSAgICAgICAvLyBkYXRhCi0gICAgICAgYXV0byBkYXRhX2V4 cHIgPSBjbGFzc19pZDsKLSAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkZlZWRi YWNrQ2xhc3M6OktleWJvYXJkKSkgewotLSAgICAgICAgZGF0YS5rZXlib2FyZC5lbXBsYWNlKCk7 Ci0rICAgICAgICBkYXRhLmtleWJvYXJkID0geDExOjpJbnB1dDo6RmVlZGJhY2tTdGF0ZTo6S2V5 Ym9hcmR7fTsKLSAgICAgICAgIGF1dG8mIHBpdGNoID0gKCpkYXRhLmtleWJvYXJkKS5waXRjaDsK LSAgICAgICAgIGF1dG8mIGR1cmF0aW9uID0gKCpkYXRhLmtleWJvYXJkKS5kdXJhdGlvbjsKLSAg ICAgICAgIGF1dG8mIGxlZF9tYXNrID0gKCpkYXRhLmtleWJvYXJkKS5sZWRfbWFzazsKLUBAIC0z ODg2LDcgKzM4ODYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OkdldEZlZWRiYWNrQ29udHJv Ci0gICAgICAgICB9Ci0gICAgICAgfQotICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1 dDo6RmVlZGJhY2tDbGFzczo6UG9pbnRlcikpIHsKLS0gICAgICAgIGRhdGEucG9pbnRlci5lbXBs YWNlKCk7Ci0rICAgICAgICBkYXRhLnBvaW50ZXIgPSB4MTE6OklucHV0OjpGZWVkYmFja1N0YXRl OjpQb2ludGVye307Ci0gICAgICAgICBhdXRvJiBhY2NlbF9udW0gPSAoKmRhdGEucG9pbnRlciku YWNjZWxfbnVtOwotICAgICAgICAgYXV0byYgYWNjZWxfZGVub20gPSAoKmRhdGEucG9pbnRlciku YWNjZWxfZGVub207Ci0gICAgICAgICBhdXRvJiB0aHJlc2hvbGQgPSAoKmRhdGEucG9pbnRlciku dGhyZXNob2xkOwotQEAgLTM5MDQsNyArMzkwNCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6 R2V0RmVlZGJhY2tDb250cm8KLSAgICAgICAgIFJlYWQoJnRocmVzaG9sZCwgJmJ1Zik7Ci0gICAg ICAgfQotICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RmVlZGJhY2tDbGFzczo6 U3RyaW5nKSkgewotLSAgICAgICAgZGF0YS5zdHJpbmcuZW1wbGFjZSgpOwotKyAgICAgICAgZGF0 YS5zdHJpbmcgPSB4MTE6OklucHV0OjpGZWVkYmFja1N0YXRlOjpTdHJpbmd7fTsKLSAgICAgICAg IGF1dG8mIG1heF9zeW1ib2xzID0gKCpkYXRhLnN0cmluZykubWF4X3N5bWJvbHM7Ci0gICAgICAg ICB1aW50MTZfdCBudW1fa2V5c3ltc3t9OwotICAgICAgICAgYXV0byYga2V5c3ltcyA9ICgqZGF0 YS5zdHJpbmcpLmtleXN5bXM7Ci1AQCAtMzkyNCw3ICszOTI0LDcgQEAgc3RkOjp1bmlxdWVfcHRy PElucHV0OjpHZXRGZWVkYmFja0NvbnRybwotICAgICAgICAgfQotICAgICAgIH0KLSAgICAgICBp ZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkZlZWRiYWNrQ2xhc3M6OkludGVnZXIpKSB7Ci0t ICAgICAgICBkYXRhLmludGVnZXIuZW1wbGFjZSgpOwotKyAgICAgICAgZGF0YS5pbnRlZ2VyID0g eDExOjpJbnB1dDo6RmVlZGJhY2tTdGF0ZTo6SW50ZWdlcnt9OwotICAgICAgICAgYXV0byYgcmVz b2x1dGlvbiA9ICgqZGF0YS5pbnRlZ2VyKS5yZXNvbHV0aW9uOwotICAgICAgICAgYXV0byYgbWlu X3ZhbHVlID0gKCpkYXRhLmludGVnZXIpLm1pbl92YWx1ZTsKLSAgICAgICAgIGF1dG8mIG1heF92 YWx1ZSA9ICgqZGF0YS5pbnRlZ2VyKS5tYXhfdmFsdWU7Ci1AQCAtMzkzOSw3ICszOTM5LDcgQEAg c3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXRGZWVkYmFja0NvbnRybwotICAgICAgICAgUmVhZCgm bWF4X3ZhbHVlLCAmYnVmKTsKLSAgICAgICB9Ci0gICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIs IElucHV0OjpGZWVkYmFja0NsYXNzOjpMZWQpKSB7Ci0tICAgICAgICBkYXRhLmxlZC5lbXBsYWNl KCk7Ci0rICAgICAgICBkYXRhLmxlZCA9IHgxMTo6SW5wdXQ6OkZlZWRiYWNrU3RhdGU6OkxlZHt9 OwotICAgICAgICAgYXV0byYgbGVkX21hc2sgPSAoKmRhdGEubGVkKS5sZWRfbWFzazsKLSAgICAg ICAgIGF1dG8mIGxlZF92YWx1ZXMgPSAoKmRhdGEubGVkKS5sZWRfdmFsdWVzOwotIAotQEAgLTM5 NTAsNyArMzk1MCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6R2V0RmVlZGJhY2tDb250cm8K LSAgICAgICAgIFJlYWQoJmxlZF92YWx1ZXMsICZidWYpOwotICAgICAgIH0KLSAgICAgICBpZiAo Q2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkZlZWRiYWNrQ2xhc3M6OkJlbGwpKSB7Ci0tICAgICAg ICBkYXRhLmJlbGwuZW1wbGFjZSgpOwotKyAgICAgICAgZGF0YS5iZWxsID0geDExOjpJbnB1dDo6 RmVlZGJhY2tTdGF0ZTo6QmVsbHt9OwotICAgICAgICAgYXV0byYgcGVyY2VudCA9ICgqZGF0YS5i ZWxsKS5wZXJjZW50OwotICAgICAgICAgYXV0byYgcGl0Y2ggPSAoKmRhdGEuYmVsbCkucGl0Y2g7 Ci0gICAgICAgICBhdXRvJiBkdXJhdGlvbiA9ICgqZGF0YS5iZWxsKS5kdXJhdGlvbjsKLUBAIC00 NzY4LDcgKzQ3NjgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OlF1ZXJ5RGV2aWNlU3RhdGVS Ci0gICAgICAgLy8gZGF0YQotICAgICAgIGF1dG8gZGF0YV9leHByID0gY2xhc3NfaWQ7Ci0gICAg ICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpJbnB1dENsYXNzOjpLZXkpKSB7Ci0tICAg ICAgICBkYXRhLmtleS5lbXBsYWNlKCk7Ci0rICAgICAgICBkYXRhLmtleSA9IHgxMTo6SW5wdXQ6 OklucHV0U3RhdGU6OktleXt9OwotICAgICAgICAgYXV0byYgbnVtX2tleXMgPSAoKmRhdGEua2V5 KS5udW1fa2V5czsKLSAgICAgICAgIGF1dG8mIGtleXMgPSAoKmRhdGEua2V5KS5rZXlzOwotICAg ICAgICAgc2l6ZV90IGtleXNfbGVuID0ga2V5cy5zaXplKCk7Ci1AQCAtNDc4Niw3ICs0Nzg2LDcg QEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpRdWVyeURldmljZVN0YXRlUgotICAgICAgICAgfQot ICAgICAgIH0KLSAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OklucHV0Q2xhc3M6 OkJ1dHRvbikpIHsKLS0gICAgICAgIGRhdGEuYnV0dG9uLmVtcGxhY2UoKTsKLSsgICAgICAgIGRh dGEuYnV0dG9uID0geDExOjpJbnB1dDo6SW5wdXRTdGF0ZTo6QnV0dG9ue307Ci0gICAgICAgICBh dXRvJiBudW1fYnV0dG9ucyA9ICgqZGF0YS5idXR0b24pLm51bV9idXR0b25zOwotICAgICAgICAg YXV0byYgYnV0dG9ucyA9ICgqZGF0YS5idXR0b24pLmJ1dHRvbnM7Ci0gICAgICAgICBzaXplX3Qg YnV0dG9uc19sZW4gPSBidXR0b25zLnNpemUoKTsKLUBAIC00ODA0LDcgKzQ4MDQsNyBAQCBzdGQ6 OnVuaXF1ZV9wdHI8SW5wdXQ6OlF1ZXJ5RGV2aWNlU3RhdGVSCi0gICAgICAgICB9Ci0gICAgICAg fQotICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6SW5wdXRDbGFzczo6VmFsdWF0 b3IpKSB7Ci0tICAgICAgICBkYXRhLnZhbHVhdG9yLmVtcGxhY2UoKTsKLSsgICAgICAgIGRhdGEu dmFsdWF0b3IgPSB4MTE6OklucHV0OjpJbnB1dFN0YXRlOjpWYWx1YXRvcnt9OwotICAgICAgICAg dWludDhfdCBudW1fdmFsdWF0b3Jze307Ci0gICAgICAgICBhdXRvJiBtb2RlID0gKCpkYXRhLnZh bHVhdG9yKS5tb2RlOwotICAgICAgICAgYXV0byYgdmFsdWF0b3JzID0gKCpkYXRhLnZhbHVhdG9y KS52YWx1YXRvcnM7Ci1AQCAtNTA3NSw3ICs1MDc1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0 OjpHZXREZXZpY2VDb250cm9sUgotICAgICAvLyBkYXRhCi0gICAgIGF1dG8gZGF0YV9leHByID0g Y29udHJvbF9pZDsKLSAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDb250 cm9sOjpyZXNvbHV0aW9uKSkgewotLSAgICAgIGRhdGEucmVzb2x1dGlvbi5lbXBsYWNlKCk7Ci0r ICAgICAgZGF0YS5yZXNvbHV0aW9uID0geDExOjpJbnB1dDo6RGV2aWNlU3RhdGU6OlJlc29sdXRp b257fTsKLSAgICAgICB1aW50MzJfdCBudW1fdmFsdWF0b3Jze307Ci0gICAgICAgYXV0byYgcmVz b2x1dGlvbl92YWx1ZXMgPSAoKmRhdGEucmVzb2x1dGlvbikucmVzb2x1dGlvbl92YWx1ZXM7Ci0g ICAgICAgc2l6ZV90IHJlc29sdXRpb25fdmFsdWVzX2xlbiA9IHJlc29sdXRpb25fdmFsdWVzLnNp emUoKTsKLUBAIC01MTA5LDcgKzUxMDksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OkdldERl dmljZUNvbnRyb2xSCi0gICAgICAgfQotICAgICB9Ci0gICAgIGlmIChDYXNlRXEoZGF0YV9leHBy LCBJbnB1dDo6RGV2aWNlQ29udHJvbDo6YWJzX2NhbGliKSkgewotLSAgICAgIGRhdGEuYWJzX2Nh bGliLmVtcGxhY2UoKTsKLSsgICAgICBkYXRhLmFic19jYWxpYiA9IHgxMTo6SW5wdXQ6OkRldmlj ZVN0YXRlOjpBYnNDYWxpYnt9OwotICAgICAgIGF1dG8mIG1pbl94ID0gKCpkYXRhLmFic19jYWxp YikubWluX3g7Ci0gICAgICAgYXV0byYgbWF4X3ggPSAoKmRhdGEuYWJzX2NhbGliKS5tYXhfeDsK LSAgICAgICBhdXRvJiBtaW5feSA9ICgqZGF0YS5hYnNfY2FsaWIpLm1pbl95OwotQEAgLTUxNDQs NyArNTE0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6R2V0RGV2aWNlQ29udHJvbFIKLSAg ICAgICBSZWFkKCZidXR0b25fdGhyZXNob2xkLCAmYnVmKTsKLSAgICAgfQotICAgICBpZiAoQ2Fz ZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNvbnRyb2w6OmNvcmUpKSB7Ci0tICAgICAgZGF0 YS5jb3JlLmVtcGxhY2UoKTsKLSsgICAgICBkYXRhLmNvcmUgPSB4MTE6OklucHV0OjpEZXZpY2VT dGF0ZTo6Q29yZXt9OwotICAgICAgIGF1dG8mIHN0YXR1cyA9ICgqZGF0YS5jb3JlKS5zdGF0dXM7 Ci0gICAgICAgYXV0byYgaXNjb3JlID0gKCpkYXRhLmNvcmUpLmlzY29yZTsKLSAKLUBAIC01MTU4 LDcgKzUxNTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OkdldERldmljZUNvbnRyb2xSCi0g ICAgICAgUGFkKCZidWYsIDIpOwotICAgICB9Ci0gICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJ bnB1dDo6RGV2aWNlQ29udHJvbDo6ZW5hYmxlKSkgewotLSAgICAgIGRhdGEuZW5hYmxlLmVtcGxh Y2UoKTsKLSsgICAgICBkYXRhLmVuYWJsZSA9IHgxMTo6SW5wdXQ6OkRldmljZVN0YXRlOjpFbmFi bGV7fTsKLSAgICAgICBhdXRvJiBlbmFibGUgPSAoKmRhdGEuZW5hYmxlKS5lbmFibGU7Ci0gCi0g ICAgICAgLy8gZW5hYmxlCi1AQCAtNTE2OCw3ICs1MTY4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElu cHV0OjpHZXREZXZpY2VDb250cm9sUgotICAgICAgIFBhZCgmYnVmLCAzKTsKLSAgICAgfQotICAg ICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNvbnRyb2w6OmFic19hcmVhKSkg ewotLSAgICAgIGRhdGEuYWJzX2FyZWEuZW1wbGFjZSgpOwotKyAgICAgIGRhdGEuYWJzX2FyZWEg PSB4MTE6OklucHV0OjpEZXZpY2VTdGF0ZTo6QWJzQXJlYXt9OwotICAgICAgIGF1dG8mIG9mZnNl dF94ID0gKCpkYXRhLmFic19hcmVhKS5vZmZzZXRfeDsKLSAgICAgICBhdXRvJiBvZmZzZXRfeSA9 ICgqZGF0YS5hYnNfYXJlYSkub2Zmc2V0X3k7Ci0gICAgICAgYXV0byYgd2lkdGggPSAoKmRhdGEu YWJzX2FyZWEpLndpZHRoOwotQEAgLTY2NTksNyArNjY1OSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJ bnB1dDo6WElRdWVyeURldmljZVJlcGwKLSAgICAgICAgICAgLy8gZGF0YQotICAgICAgICAgICBh dXRvIGRhdGFfZXhwciA9IHR5cGU7Ci0gICAgICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJ bnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpLZXkpKSB7Ci0tICAgICAgICAgICAgZGF0YS5rZXkuZW1w bGFjZSgpOwotKyAgICAgICAgICAgIGRhdGEua2V5ID0gSW5wdXQ6OkRldmljZUNsYXNzOjpLZXl7 fTsKLSAgICAgICAgICAgICB1aW50MTZfdCBudW1fa2V5c3t9OwotICAgICAgICAgICAgIGF1dG8m IGtleXMgPSAoKmRhdGEua2V5KS5rZXlzOwotICAgICAgICAgICAgIHNpemVfdCBrZXlzX2xlbiA9 IGtleXMuc2l6ZSgpOwotQEAgLTY2NzUsNyArNjY3NSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1 dDo6WElRdWVyeURldmljZVJlcGwKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAg ICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6OkJ1dHRv bikpIHsKLS0gICAgICAgICAgICBkYXRhLmJ1dHRvbi5lbXBsYWNlKCk7Ci0rICAgICAgICAgICAg ZGF0YS5idXR0b24gPSBJbnB1dDo6RGV2aWNlQ2xhc3M6OkJ1dHRvbnt9OwotICAgICAgICAgICAg IHVpbnQxNl90IG51bV9idXR0b25ze307Ci0gICAgICAgICAgICAgYXV0byYgc3RhdGUgPSAoKmRh dGEuYnV0dG9uKS5zdGF0ZTsKLSAgICAgICAgICAgICBzaXplX3Qgc3RhdGVfbGVuID0gc3RhdGUu c2l6ZSgpOwotQEAgLTY3MDAsNyArNjcwMCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6WElR dWVyeURldmljZVJlcGwKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAg aWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6OlZhbHVhdG9yKSkg ewotLSAgICAgICAgICAgIGRhdGEudmFsdWF0b3IuZW1wbGFjZSgpOwotKyAgICAgICAgICAgIGRh dGEudmFsdWF0b3IgPSBJbnB1dDo6RGV2aWNlQ2xhc3M6OlZhbHVhdG9ye307Ci0gICAgICAgICAg ICAgYXV0byYgbnVtYmVyID0gKCpkYXRhLnZhbHVhdG9yKS5udW1iZXI7Ci0gICAgICAgICAgICAg YXV0byYgbGFiZWwgPSAoKmRhdGEudmFsdWF0b3IpLmxhYmVsOwotICAgICAgICAgICAgIGF1dG8m IG1pbiA9ICgqZGF0YS52YWx1YXRvcikubWluOwotQEAgLTY3NjMsNyArNjc2Myw3IEBAIHN0ZDo6 dW5pcXVlX3B0cjxJbnB1dDo6WElRdWVyeURldmljZVJlcGwKLSAgICAgICAgICAgICBQYWQoJmJ1 ZiwgMyk7Ci0gICAgICAgICAgIH0KLSAgICAgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElu cHV0OjpEZXZpY2VDbGFzc1R5cGU6OlNjcm9sbCkpIHsKLS0gICAgICAgICAgICBkYXRhLnNjcm9s bC5lbXBsYWNlKCk7Ci0rICAgICAgICAgICAgZGF0YS5zY3JvbGwgPSBJbnB1dDo6RGV2aWNlQ2xh c3M6OlNjcm9sbHt9OwotICAgICAgICAgICAgIGF1dG8mIG51bWJlciA9ICgqZGF0YS5zY3JvbGwp Lm51bWJlcjsKLSAgICAgICAgICAgICBhdXRvJiBzY3JvbGxfdHlwZSA9ICgqZGF0YS5zY3JvbGwp LnNjcm9sbF90eXBlOwotICAgICAgICAgICAgIGF1dG8mIGZsYWdzID0gKCpkYXRhLnNjcm9sbCku ZmxhZ3M7Ci1AQCAtNjc5OCw3ICs2Nzk4LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpYSVF1 ZXJ5RGV2aWNlUmVwbAotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgfQotICAgICAgICAgICBp ZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6VG91Y2gpKSB7Ci0t ICAgICAgICAgICAgZGF0YS50b3VjaC5lbXBsYWNlKCk7Ci0rICAgICAgICAgICAgZGF0YS50b3Vj aCA9IElucHV0OjpEZXZpY2VDbGFzczo6VG91Y2h7fTsKLSAgICAgICAgICAgICBhdXRvJiBtb2Rl ID0gKCpkYXRhLnRvdWNoKS5tb2RlOwotICAgICAgICAgICAgIGF1dG8mIG51bV90b3VjaGVzID0g KCpkYXRhLnRvdWNoKS5udW1fdG91Y2hlczsKLSAKLUBAIC02ODExLDcgKzY4MTEsNyBAQCBzdGQ6 OnVuaXF1ZV9wdHI8SW5wdXQ6OlhJUXVlcnlEZXZpY2VSZXBsCi0gICAgICAgICAgICAgUmVhZCgm bnVtX3RvdWNoZXMsICZidWYpOwotICAgICAgICAgICB9Ci0gICAgICAgICAgIGlmIChDYXNlRXEo ZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpHZXN0dXJlKSkgewotLSAgICAgICAg ICAgIGRhdGEuZ2VzdHVyZS5lbXBsYWNlKCk7Ci0rICAgICAgICAgICAgZGF0YS5nZXN0dXJlID0g SW5wdXQ6OkRldmljZUNsYXNzOjpHZXN0dXJle307Ci0gICAgICAgICAgICAgYXV0byYgbnVtX3Rv dWNoZXMgPSAoKmRhdGEuZ2VzdHVyZSkubnVtX3RvdWNoZXM7Ci0gCi0gICAgICAgICAgICAgLy8g bnVtX3RvdWNoZXMKLWRpZmYgLXVwIGNocm9taXVtLTEyNS4wLjY0MjIuNjAvdWkvZ2Z4L3gvZ2Vu ZXJhdGVkX3Byb3Rvcy94a2IuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjUuMC42NDIy LjYwL3VpL2dmeC94L2dlbmVyYXRlZF9wcm90b3MveGtiLmNjCi0tLS0gY2hyb21pdW0tMTI1LjAu NjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3hrYi5jYy5zeXN0ZW0tbGlic3RkYysr CTIwMjQtMDUtMTUgMjM6NDc6MzMuMDAwMDAwMDAwICswMjAwCi0rKysgY2hyb21pdW0tMTI1LjAu NjQyMi42MC91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3hrYi5jYwkyMDI0LTA1LTE5IDA5OjA3 OjM4LjIyMDQzODA1NCArMDIwMAotQEAgLTIzNDYsNyArMjM0Niw3IEBAIHN0ZDo6dW5pcXVlX3B0 cjxYa2I6OkdldE1hcFJlcGx5PiBkZXRhaWwKLSAgIC8vIG1hcAotICAgYXV0byBtYXBfZXhwciA9 IHByZXNlbnQ7Ci0gICBpZiAoQ2FzZUFuZChtYXBfZXhwciwgWGtiOjpNYXBQYXJ0OjpLZXlUeXBl cykpIHsKLS0gICAgbWFwLnR5cGVzX3J0cm4uZW1wbGFjZSgpOwotKyAgICBtYXAudHlwZXNfcnRy biA9IHN0ZDo6dmVjdG9yPFhrYjo6S2V5VHlwZT57fTsKLSAgICAgYXV0byYgdHlwZXNfcnRybiA9 ICptYXAudHlwZXNfcnRybjsKLSAgICAgc2l6ZV90IHR5cGVzX3J0cm5fbGVuID0gdHlwZXNfcnRy bi5zaXplKCk7Ci0gCi1AQCAtNTI3Niw3ICs1Mjc2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhrYjo6 R2V0S2JkQnlOYW1lUmVwbHk+Ci0gICBpZiAoQ2FzZUFuZChyZXBsaWVzX2V4cHIsIFhrYjo6R0JO RGV0YWlsOjpUeXBlcykgfHwKLSAgICAgICBDYXNlQW5kKHJlcGxpZXNfZXhwciwgWGtiOjpHQk5E ZXRhaWw6OkNsaWVudFN5bWJvbHMpIHx8Ci0gICAgICAgQ2FzZUFuZChyZXBsaWVzX2V4cHIsIFhr Yjo6R0JORGV0YWlsOjpTZXJ2ZXJTeW1ib2xzKSkgewotLSAgICByZXBsaWVzLnR5cGVzLmVtcGxh Y2UoKTsKLSsgICAgcmVwbGllcy50eXBlcyA9IFhrYjo6R2V0S2JkQnlOYW1lUmVwbHk6OlR5cGVz e307Ci0gICAgIGF1dG8mIGdldG1hcF90eXBlID0gKCpyZXBsaWVzLnR5cGVzKS5nZXRtYXBfdHlw ZTsKLSAgICAgYXV0byYgdHlwZURldmljZUlEID0gKCpyZXBsaWVzLnR5cGVzKS50eXBlRGV2aWNl SUQ7Ci0gICAgIGF1dG8mIGdldG1hcF9zZXF1ZW5jZSA9ICgqcmVwbGllcy50eXBlcykuZ2V0bWFw X3NlcXVlbmNlOwotQEAgLTU3MDgsNyArNTcwOCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxYa2I6Okdl dEtiZEJ5TmFtZVJlcGx5PgotICAgICB9Ci0gICB9Ci0gICBpZiAoQ2FzZUFuZChyZXBsaWVzX2V4 cHIsIFhrYjo6R0JORGV0YWlsOjpDb21wYXRNYXApKSB7Ci0tICAgIHJlcGxpZXMuY29tcGF0X21h cC5lbXBsYWNlKCk7Ci0rICAgIHJlcGxpZXMuY29tcGF0X21hcCA9IFhrYjo6R2V0S2JkQnlOYW1l UmVwbHk6OkNvbXBhdE1hcHt9OwotICAgICBhdXRvJiBjb21wYXRtYXBfdHlwZSA9ICgqcmVwbGll cy5jb21wYXRfbWFwKS5jb21wYXRtYXBfdHlwZTsKLSAgICAgYXV0byYgY29tcGF0RGV2aWNlSUQg PSAoKnJlcGxpZXMuY29tcGF0X21hcCkuY29tcGF0RGV2aWNlSUQ7Ci0gICAgIGF1dG8mIGNvbXBh dG1hcF9zZXF1ZW5jZSA9ICgqcmVwbGllcy5jb21wYXRfbWFwKS5jb21wYXRtYXBfc2VxdWVuY2U7 Ci1AQCAtNTgzMiw3ICs1ODMyLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhrYjo6R2V0S2JkQnlOYW1l UmVwbHk+Ci0gICAgIH0KLSAgIH0KLSAgIGlmIChDYXNlQW5kKHJlcGxpZXNfZXhwciwgWGtiOjpH Qk5EZXRhaWw6OkluZGljYXRvck1hcHMpKSB7Ci0tICAgIHJlcGxpZXMuaW5kaWNhdG9yX21hcHMu ZW1wbGFjZSgpOwotKyAgICByZXBsaWVzLmluZGljYXRvcl9tYXBzID0gWGtiOjpHZXRLYmRCeU5h bWVSZXBseTo6SW5kaWNhdG9yTWFwc3t9OwotICAgICBhdXRvJiBpbmRpY2F0b3JtYXBfdHlwZSA9 ICgqcmVwbGllcy5pbmRpY2F0b3JfbWFwcykuaW5kaWNhdG9ybWFwX3R5cGU7Ci0gICAgIGF1dG8m IGluZGljYXRvckRldmljZUlEID0gKCpyZXBsaWVzLmluZGljYXRvcl9tYXBzKS5pbmRpY2F0b3JE ZXZpY2VJRDsKLSAgICAgYXV0byYgaW5kaWNhdG9ybWFwX3NlcXVlbmNlID0KLUBAIC01OTI2LDcg KzU5MjYsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WGtiOjpHZXRLYmRCeU5hbWVSZXBseT4KLSAgIH0K LSAgIGlmIChDYXNlQW5kKHJlcGxpZXNfZXhwciwgWGtiOjpHQk5EZXRhaWw6OktleU5hbWVzKSB8 fAotICAgICAgIENhc2VBbmQocmVwbGllc19leHByLCBYa2I6OkdCTkRldGFpbDo6T3RoZXJOYW1l cykpIHsKLS0gICAgcmVwbGllcy5rZXlfbmFtZXMuZW1wbGFjZSgpOwotKyAgICByZXBsaWVzLmtl eV9uYW1lcyA9IFhrYjo6R2V0S2JkQnlOYW1lUmVwbHk6OktleU5hbWVze307Ci0gICAgIGF1dG8m IGtleW5hbWVfdHlwZSA9ICgqcmVwbGllcy5rZXlfbmFtZXMpLmtleW5hbWVfdHlwZTsKLSAgICAg YXV0byYga2V5RGV2aWNlSUQgPSAoKnJlcGxpZXMua2V5X25hbWVzKS5rZXlEZXZpY2VJRDsKLSAg ICAgYXV0byYga2V5bmFtZV9zZXF1ZW5jZSA9ICgqcmVwbGllcy5rZXlfbmFtZXMpLmtleW5hbWVf c2VxdWVuY2U7Ci1AQCAtNjE4NSw3ICs2MTg1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhrYjo6R2V0 S2JkQnlOYW1lUmVwbHk+Ci0gICAgIH0KLSAgIH0KLSAgIGlmIChDYXNlQW5kKHJlcGxpZXNfZXhw ciwgWGtiOjpHQk5EZXRhaWw6Okdlb21ldHJ5KSkgewotLSAgICByZXBsaWVzLmdlb21ldHJ5LmVt cGxhY2UoKTsKLSsgICAgcmVwbGllcy5nZW9tZXRyeSA9IFhrYjo6R2V0S2JkQnlOYW1lUmVwbHk6 Okdlb21ldHJ5e307Ci0gICAgIGF1dG8mIGdlb21ldHJ5X3R5cGUgPSAoKnJlcGxpZXMuZ2VvbWV0 cnkpLmdlb21ldHJ5X3R5cGU7Ci0gICAgIGF1dG8mIGdlb21ldHJ5RGV2aWNlSUQgPSAoKnJlcGxp ZXMuZ2VvbWV0cnkpLmdlb21ldHJ5RGV2aWNlSUQ7Ci0gICAgIGF1dG8mIGdlb21ldHJ5X3NlcXVl bmNlID0gKCpyZXBsaWVzLmdlb21ldHJ5KS5nZW9tZXRyeV9zZXF1ZW5jZTsKCmRpZmYgLS1naXQg YS9jaHJvbWl1bS0xMjYtY2xhbmcxNi1idWlsZGZsYWdzLnBhdGNoIGIvY2hyb21pdW0tMTI2LWNs YW5nMTYtYnVpbGRmbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li5jYmEyNWZkCi0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI2LWNsYW5nMTYtYnVpbGRm bGFncy5wYXRjaApAQCAtMCwwICsxLDIyIEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2J1aWxkL2NvbmZpZy9jb21waWxlci9CVUlMRC5nbi5jbGFuZzE2LWJ1aWxkZmxhZyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2J1aWxkL2NvbmZpZy9jb21waWxlci9CVUlMRC5nbgorLS0tIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduLmNsYW5n MTYtYnVpbGRmbGFnCTIwMjQtMDYtMDIgMTQ6NTU6NTUuMjk4MjQyNzgwICswMjAwCisrKysgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24JMjAyNC0w Ni0wMiAxNTowNDo0My44Mzk4ODI2NjkgKzAyMDAKK0BAIC0xODg5LDkgKzE4ODksNiBAQCBjb25m aWcoImRlZmF1bHRfd2FybmluZ3MiKSB7CisgCisgICAgICAgICAjIFRPRE8oY3JidWcuY29tLzQw Mjg2MzE3KTogRXZhbHVhdGUgYW5kIHBvc3NpYmx5IGVuYWJsZS4KKyAgICAgICAgICItV25vLXZs YS1leHRlbnNpb24iLAorLQorLSAgICAgICAgIyBUT0RPKGNyYnVnLmNvbS80MDI4NDc5OSk6IEZp eCBhbmQgcmUtZW5hYmxlLgorLSAgICAgICAgIi1Xbm8tdGhyZWFkLXNhZmV0eS1yZWZlcmVuY2Ut cmV0dXJuIiwKKyAgICAgICBdCisgCisgICAgICAgY2ZsYWdzX2NjICs9IFsKK0BAIC0xOTAyLDcg KzE4OTksNyBAQCBjb25maWcoImRlZmF1bHRfd2FybmluZ3MiKSB7CisgICAgICAgaWYgKCFpc19u YWNsKSB7CisgICAgICAgICBjZmxhZ3NfY2MgKz0gWworICAgICAgICAgICAjIFRPRE8oY3JidWcu Y29tLzQxNDg2MjkyKTogRml4IGFuZCByZS1lbmFibGUuCistICAgICAgICAgICItV25vLWMrKzEx LW5hcnJvd2luZy1jb25zdC1yZWZlcmVuY2UiLAorKyAgICAgICAgICAiLVduby1jKysxMS1uYXJy b3dpbmciLAorICAgICAgICAgXQorICAgICAgIH0KKyAgICAgfQoKZGlmZiAtLWdpdCBhL2Nocm9t aXVtLTEyNi1jbGFuZzE2LWRpc2FibGUtYXV0by11cGdyYWRlLWRlYnVnLWluZm8ucGF0Y2ggYi9j aHJvbWl1bS0xMjYtY2xhbmcxNi1kaXNhYmxlLWF1dG8tdXBncmFkZS1kZWJ1Zy1pbmZvLnBhdGNo Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY3OTE1OTYKLS0tIC9kZXYvbnVs bAorKysgYi9jaHJvbWl1bS0xMjYtY2xhbmcxNi1kaXNhYmxlLWF1dG8tdXBncmFkZS1kZWJ1Zy1p bmZvLnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduLmNsYW5nMTYtZGlzYWJsZS1hdXRvLXVw Z3JhZGUtZGVidWctaW5mbyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2J1aWxkL2NvbmZpZy9jb21w aWxlci9CVUlMRC5nbgorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYnVpbGQvY29uZmlnL2Nv bXBpbGVyL0JVSUxELmduLmNsYW5nMTYtZGlzYWJsZS1hdXRvLXVwZ3JhZGUtZGVidWctaW5mbwky MDI0LTA2LTAyIDE4OjAwOjE3LjkxNDY0MTc2NyArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduCTIwMjQtMDYtMDIgMTg6MDI6MzIu MTUzNTQ0ODkyICswMjAwCitAQCAtNzgwLDcgKzc4MCw3IEBAIGNvbmZpZygiY29tcGlsZXIiKSB7 CisgCisgICAgICAgIyBXZSBvbmx5IHVzZSBvbmUgdmVyc2lvbiBvZiBMTFZNIHdpdGhpbiBhIGJ1 aWxkIHNvIHRoZXJlJ3Mgbm8gbmVlZCB0bworICAgICAgICMgdXBncmFkZSBkZWJ1ZyBpbmZvLCB3 aGljaCBjYW4gYmUgZXhwZW5zaXZlIHNpbmNlIGl0IHJ1bnMgdGhlIHZlcmlmaWVyLgorLSAgICAg IGxkZmxhZ3MgKz0gWyAiLVdsLC1tbGx2bSwtZGlzYWJsZS1hdXRvLXVwZ3JhZGUtZGVidWctaW5m byIgXQorKyAgICAgIGxkZmxhZ3MgKz0gWyAiIiBdCisgICAgIH0KKyAKKyAgICAgIyBUT0RPKGNy YnVnLmNvbS8zMzUzNjUzMjQpOiBFbmFibGUgb24gb3RoZXIgcGxhdGZvcm1zLgoKZGlmZiAtLWdp dCBhL2Nocm9taXVtLTEyNi1lbDctY29sb3JtYXAucGF0Y2ggYi9jaHJvbWl1bS0xMjYtZWw3LWNv bG9ybWFwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjMDAwMmIK LS0tIC9kZXYvbnVsbAorKysgYi9jaHJvbWl1bS0xMjYtZWw3LWNvbG9ybWFwLnBhdGNoCkBAIC0w LDAgKzEsNjgxIEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2FzaC9zdHlsZS9h c2hfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYXNo L3N0eWxlL2FzaF9jb2xvcl9taXhlcl91bml0dGVzdC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvYXNoL3N0eWxlL2FzaF9jb2xvcl9taXhlcl91bml0dGVzdC5jYy5tZWUJMjAyNC0wNS0y OSAxODowMDo0NC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Fz aC9zdHlsZS9hc2hfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41 NDk1Njg4NTQgKzAyMDAKK0BAIC0zNyw2ICszNyw5IEBAIHZvaWQgSW5pdGlhbGl6ZUNvbG9yUHJv dmlkZXIoY29uc3QgdWk6OkMKKyAgIC8vIFJvdWdobHkgbWltaWNzIHRoZSBDb2xvck1peGVyIGNv bmZpZ3VyYXRpb24gZm9yIEFzaC4KKyAgIGFzaDo6QWRkQ3Jvc1N0eWxlc0NvbG9yTWl4ZXIoJmNv bG9yX3Byb3ZpZGVyLCBrZXkpOworICAgYXNoOjpBZGRBc2hDb2xvck1peGVyKCZjb2xvcl9wcm92 aWRlciwga2V5KTsKKysKKysgIC8vIFBvcHVsYXRlcyB0aGUgY29sb3IgbWFwIHdpdGggY29tcHV0 ZWQgY29sb3IgdmFsdWVzLgorKyAgY29sb3JfcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOwor IH0KKyAKKyAvLyBJbml0aWFsaXplcyB0aGUgYGNvbG9yX3Byb3ZpZGVyYCB3aXRoIGBzZWVkX2Nv bG9yYCBhbmQgdGhlIHJlbGV2YW50CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9icm93c2VyL2Nocm9tZV9jb250ZW50X2Jyb3dzZXJfY2xpZW50X2Jyb3dzZXJ0ZXN0LmNj Lm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2Nocm9tZV9jb250ZW50 X2Jyb3dzZXJfY2xpZW50X2Jyb3dzZXJ0ZXN0LmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni9jaHJvbWUvYnJvd3Nlci9jaHJvbWVfY29udGVudF9icm93c2VyX2NsaWVudF9icm93c2VydGVz dC5jYy5tZWUJMjAyNC0wNS0yOSAxODowMDo1Mi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2Nocm9tZV9jb250ZW50X2Jyb3dzZXJfY2xp ZW50X2Jyb3dzZXJ0ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTUwNTY4ODczICswMjAwCitA QCAtNjAyLDYgKzYwMiw3IEBAIGNsYXNzIFByZWZlcnNDb2xvclNjaGVtZVRlc3QKKyAgICAgZXhw bGljaXQgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UoYm9vbCBpc19kYXJrKSB7CisgICAgICAga2V5 Xy5jb2xvcl9tb2RlID0gaXNfZGFyayA/IHVpOjpDb2xvclByb3ZpZGVyS2V5OjpDb2xvck1vZGU6 OmtEYXJrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA6IHVpOjpDb2xvclByb3Zp ZGVyS2V5OjpDb2xvck1vZGU6OmtMaWdodDsKKysgICAgICBwcm92aWRlcl8uR2VuZXJhdGVDb2xv ck1hcCgpOworICAgICB9CisgICAgIE1vY2tDb2xvclByb3ZpZGVyU291cmNlKGNvbnN0IE1vY2tD b2xvclByb3ZpZGVyU291cmNlJikgPSBkZWxldGU7CisgICAgIE1vY2tDb2xvclByb3ZpZGVyU291 cmNlJiBvcGVyYXRvcj0oY29uc3QgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UmKSA9IGRlbGV0ZTsK K2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdGhlbWVzL2Jy b3dzZXJfdGhlbWVfcGFja191bml0dGVzdC5jYy5tZWUgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j aHJvbWUvYnJvd3Nlci90aGVtZXMvYnJvd3Nlcl90aGVtZV9wYWNrX3VuaXR0ZXN0LmNjCistLS0g Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci90aGVtZXMvYnJvd3Nlcl90aGVt ZV9wYWNrX3VuaXR0ZXN0LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAwOjU3LjAwMDAwMDAwMCArMDIw MAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdGhlbWVzL2Jyb3dz ZXJfdGhlbWVfcGFja191bml0dGVzdC5jYwkyMDI0LTA2LTAzIDE2OjIyOjEwLjU1MDU2ODg3MyAr MDIwMAorQEAgLTc1MCw2ICs3NTAsNyBAQCBURVNUX0YoQnJvd3NlclRoZW1lUGFja1Rlc3QsIFRl c3RDcmVhdGVDCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAib21uaWJveF9iYWNr Z3JvdW5kIjogWzEyMCwgMTQwLCAxNjBdIH0pIjsKKyAgIExvYWRDb2xvckpTT04oY29sb3JfanNv bik7CisgICB0aGVtZV9wYWNrKCkuQWRkQ29sb3JNaXhlcnMoJnByb3ZpZGVyLCB1aTo6Q29sb3JQ cm92aWRlcktleSgpKTsKKysgIHByb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKKyAgIEVYUEVD VF9FUShTa0NvbG9yU2V0UkdCKDAsIDIwLCA0MCksIHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRv b2xiYXIpKTsKKyAgIEVYUEVDVF9FUShTa0NvbG9yU2V0UkdCKDYwLCA4MCwgMTAwKSwgcHJvdmlk ZXIuR2V0Q29sb3Ioa0NvbG9yT21uaWJveFRleHQpKTsKKyAgIEVYUEVDVF9FUShTa0NvbG9yU2V0 UkdCKDEyMCwgMTQwLCAxNjApLAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci91aS9jb2xvci9tYXRlcmlhbF9uZXdfdGFiX3BhZ2VfY29sb3JfbWl4ZXJfdW5p dHRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvY29s b3IvbWF0ZXJpYWxfbmV3X3RhYl9wYWdlX2NvbG9yX21peGVyX3VuaXR0ZXN0LmNjCistLS0gY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci9tYXRlcmlhbF9uZXdf dGFiX3BhZ2VfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDA6NTgu MDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nl ci91aS9jb2xvci9tYXRlcmlhbF9uZXdfdGFiX3BhZ2VfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MJ MjAyNC0wNi0wMyAxNjoyMjoxMC41NTE1Njg4OTEgKzAyMDAKK0BAIC0yNiw2ICsyNiw3IEBAIGNs YXNzIE1hdGVyaWFsTmV3VGFiUGFnZUNvbG9yTWl4ZXJUZXN0IDoKKyAgIHZvaWQgQWRkTWF0ZXJp YWxDb2xvck1peGVycygpIHsKKyAgICAgQWRkQ29sb3JNaXhlcnMoJmNvbG9yX3Byb3ZpZGVyXywg Y29sb3JfcHJvdmlkZXJfa2V5Xyk7CisgICAgIEFkZENocm9tZUNvbG9yTWl4ZXJzKCZjb2xvcl9w cm92aWRlcl8sIGNvbG9yX3Byb3ZpZGVyX2tleV8pOworKyAgICBjb2xvcl9wcm92aWRlcl8uR2Vu ZXJhdGVDb2xvck1hcCgpOworICAgfQorIAorICBwcml2YXRlOgorZGlmZiAtdXAgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci9uZXdfdGFiX3BhZ2VfY29sb3Jf bWl4ZXJfdW5pdHRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dz ZXIvdWkvY29sb3IvbmV3X3RhYl9wYWdlX2NvbG9yX21peGVyX3VuaXR0ZXN0LmNjCistLS0gY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci9uZXdfdGFiX3BhZ2Vf Y29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDA6NTguMDAwMDAwMDAw ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xv ci9uZXdfdGFiX3BhZ2VfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MJMjAyNC0wNi0wMyAxNjoyMjox MC41NTE1Njg4OTEgKzAyMDAKK0BAIC0zMyw2ICszMyw3IEBAIFRFU1QoTmV3VGFiUGFnZUNvbG9y TWl4ZXIsIExpZ2h0QW5kRGFya1QKKyAgICAgaWYgKGNvbG9yX3V0aWxzOjpJc0RhcmsodG9vbGJh cl9jb2xvcikpCisgICAgICAga2V5LmNvbG9yX21vZGUgPSB1aTo6Q29sb3JQcm92aWRlcktleTo6 Q29sb3JNb2RlOjprRGFyazsKKyAgICAgQWRkTmV3VGFiUGFnZUNvbG9yTWl4ZXIoJnByb3ZpZGVy LCBrZXkpOworKyAgICBwcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgCisgICAgIEVYUEVD VF9FUShwcm92aWRlci5HZXRDb2xvcihrQ29sb3JUb29sYmFyKSwgdG9vbGJhcl9jb2xvcik7Cisg ICAgIEVYUEVDVF9FUShwcm92aWRlci5HZXRDb2xvcihrQ29sb3JOZXdUYWJQYWdlQmFja2dyb3Vu ZCksIHRvb2xiYXJfY29sb3IpOworQEAgLTUxLDYgKzUyLDcgQEAgVEVTVChOZXdUYWJQYWdlQ29s b3JNaXhlciwgQ3VzdG9tQ29sb3JDbworICAga2V5LmN1c3RvbV90aGVtZSA9CisgICAgICAgYmFz ZTo6V3JhcFJlZkNvdW50ZWQobmV3IEN1c3RvbVRoZW1lU3VwcGxpZXIoVGhlbWVUeXBlOjprQXV0 b2dlbmVyYXRlZCkpOworICAgQWRkTmV3VGFiUGFnZUNvbG9yTWl4ZXIoJnByb3ZpZGVyLCBrZXkp OworKyAgcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOworIAorICAgRVhQRUNUX0VRKHByb3Zp ZGVyLkdldENvbG9yKGtDb2xvclRvb2xiYXIpLCBnZng6OmtHb29nbGVHcmVlbjMwMCk7CisgICBF WFBFQ1RfRVEocHJvdmlkZXIuR2V0Q29sb3Ioa0NvbG9yTmV3VGFiUGFnZUJhY2tncm91bmQpLAor QEAgLTcyLDYgKzc0LDcgQEAgVEVTVChOZXdUYWJQYWdlQ29sb3JNaXhlciwgRGVmYXVsdENvbG9y QworICAga2V5LmN1c3RvbV90aGVtZSA9CisgICAgICAgYmFzZTo6V3JhcFJlZkNvdW50ZWQobmV3 IEN1c3RvbVRoZW1lU3VwcGxpZXIoVGhlbWVUeXBlOjprQXV0b2dlbmVyYXRlZCkpOworICAgQWRk TmV3VGFiUGFnZUNvbG9yTWl4ZXIoJnByb3ZpZGVyLCBrZXkpOworKyAgcHJvdmlkZXIuR2VuZXJh dGVDb2xvck1hcCgpOworIAorICAgRVhQRUNUX0VRKHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRv b2xiYXIpLCBrU2FtcGxlVG9vbGJhckNvbG9yKTsKKyAgIEVYUEVDVF9FUShwcm92aWRlci5HZXRD b2xvcihrQ29sb3JOZXdUYWJQYWdlQmFja2dyb3VuZCksIGtTYW1wbGVUb29sYmFyQ29sb3IpOwor ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci90 b29scy9kdW1wX2NvbG9ycy5jYy5tZWUgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci91aS9jb2xvci90b29scy9kdW1wX2NvbG9ycy5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvY29sb3IvdG9vbHMvZHVtcF9jb2xvcnMuY2MubWVlCTIw MjQtMDUtMjkgMTg6MDA6NTguMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9jb2xvci90b29scy9kdW1wX2NvbG9ycy5jYwkyMDI0LTA2 LTAzIDE2OjIyOjEwLjU1MTU2ODg5MSArMDIwMAorQEAgLTU2LDYgKzU2LDcgQEAgaW50IG1haW4o aW50IGFyZ2MsIGNvbnN0IGNoYXIqIGFyZ3ZbXSkgeworICAgICB1aTo6QWRkQ29sb3JNaXhlcnMo cHJvdmlkZXIsIGtleSk7CisgICAgIGNvbG9yOjpBZGRDb21wb25lbnRzQ29sb3JNaXhlcnMocHJv dmlkZXIsIGtleSk7CisgICAgIEFkZENocm9tZUNvbG9yTWl4ZXJzKHByb3ZpZGVyLCBrZXkpOwor KyAgICBwcm92aWRlci0+R2VuZXJhdGVDb2xvck1hcCgpOworICAgfTsKKyAgIHVpOjpDb2xvclBy b3ZpZGVyIGxpZ2h0X3Byb3ZpZGVyLCBkYXJrX3Byb3ZpZGVyLCBsaWdodF9oaWdoX2NvbnRyYXN0 X3Byb3ZpZGVyLAorICAgICAgIGRhcmtfaGlnaF9jb250cmFzdF9wcm92aWRlcjsKK2RpZmYgLXVw IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbmV3X3RhYl9w YWdlL25ld190YWJfcGFnZV9oYW5kbGVyX3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL25ld190YWJfcGFnZS9uZXdfdGFiX3BhZ2Vf aGFuZGxlcl91bml0dGVzdC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jy b3dzZXIvdWkvd2VidWkvbmV3X3RhYl9wYWdlL25ld190YWJfcGFnZV9oYW5kbGVyX3VuaXR0ZXN0 LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvbmV3X3RhYl9wYWdlL25ld190 YWJfcGFnZV9oYW5kbGVyX3VuaXR0ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTUyNTY4OTEx ICswMjAwCitAQCAtMTE3LDcgKzExNyw3IEBAIGNsYXNzIE1vY2tMb2dvU2VydmljZSA6IHB1Ymxp YyBzZWFyY2hfcHIKKyAKKyBjbGFzcyBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSA6IHB1YmxpYyB1 aTo6Q29sb3JQcm92aWRlclNvdXJjZSB7CisgIHB1YmxpYzoKKy0gIE1vY2tDb2xvclByb3ZpZGVy U291cmNlKCkgPSBkZWZhdWx0OworKyAgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UoKSB7IGNvbG9y X3Byb3ZpZGVyXy5HZW5lcmF0ZUNvbG9yTWFwKCk7IH0KKyAgIE1vY2tDb2xvclByb3ZpZGVyU291 cmNlKGNvbnN0IE1vY2tDb2xvclByb3ZpZGVyU291cmNlJikgPSBkZWxldGU7CisgICBNb2NrQ29s b3JQcm92aWRlclNvdXJjZSYgb3BlcmF0b3I9KGNvbnN0IE1vY2tDb2xvclByb3ZpZGVyU291cmNl JikgPSBkZWxldGU7CisgICB+TW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UoKSBvdmVycmlkZSA9IGRl ZmF1bHQ7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci93 ZWJfY29udGVudHMvd2ViX2NvbnRlbnRzX2ltcGxfYnJvd3NlcnRlc3QuY2MubWVlIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL3dlYl9jb250ZW50cy93ZWJfY29udGVudHNf aW1wbF9icm93c2VydGVzdC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9i cm93c2VyL3dlYl9jb250ZW50cy93ZWJfY29udGVudHNfaW1wbF9icm93c2VydGVzdC5jYy5tZWUJ MjAyNC0wNS0yOSAxODowMToxMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci93ZWJfY29udGVudHMvd2ViX2NvbnRlbnRzX2ltcGxfYnJv d3NlcnRlc3QuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTM1Njg5MjkgKzAyMDAKK0BAIC02MzAw LDcgKzYzMDAsNyBAQCBJTl9QUk9DX0JST1dTRVJfVEVTVF9GKFdlYkNvbnRlbnRzSW1wbFN0Cisg CisgY2xhc3MgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UgOiBwdWJsaWMgdWk6OkNvbG9yUHJvdmlk ZXJTb3VyY2UgeworICBwdWJsaWM6CistICBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSgpID0gZGVm YXVsdDsKKysgIE1vY2tDb2xvclByb3ZpZGVyU291cmNlKCkgeyBwcm92aWRlcl8uR2VuZXJhdGVD b2xvck1hcCgpOyB9CisgICBNb2NrQ29sb3JQcm92aWRlclNvdXJjZShjb25zdCBNb2NrQ29sb3JQ cm92aWRlclNvdXJjZSYpID0gZGVsZXRlOworICAgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UmIG9w ZXJhdG9yPShjb25zdCBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSYpID0gZGVsZXRlOworICAgfk1v Y2tDb2xvclByb3ZpZGVyU291cmNlKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworZGlmZiAtdXAgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvd2ViX2NvbnRlbnRzL3dlYl9jb250 ZW50c19pbXBsX3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQv YnJvd3Nlci93ZWJfY29udGVudHMvd2ViX2NvbnRlbnRzX2ltcGxfdW5pdHRlc3QuY2MKKy0tLSBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci93ZWJfY29udGVudHMvd2ViX2Nv bnRlbnRzX2ltcGxfdW5pdHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDE6MTMuMDAwMDAwMDAw ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvd2ViX2Nv bnRlbnRzL3dlYl9jb250ZW50c19pbXBsX3VuaXR0ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAu NTU0NTY4OTQ5ICswMjAwCitAQCAtMzM3LDcgKzMzNyw3IEBAIGNsYXNzIE1vY2tQYWdlQnJvYWRj YXN0IDogcHVibGljIFRlc3RQYWcKKyAKKyBjbGFzcyBUZXN0Q29sb3JQcm92aWRlclNvdXJjZSA6 IHB1YmxpYyB1aTo6Q29sb3JQcm92aWRlclNvdXJjZSB7CisgIHB1YmxpYzoKKy0gIFRlc3RDb2xv clByb3ZpZGVyU291cmNlKCkgPSBkZWZhdWx0OworKyAgVGVzdENvbG9yUHJvdmlkZXJTb3VyY2Uo KSB7IHByb3ZpZGVyXy5HZW5lcmF0ZUNvbG9yTWFwKCk7IH0KKyAKKyAgIGNvbnN0IHVpOjpDb2xv clByb3ZpZGVyKiBHZXRDb2xvclByb3ZpZGVyKCkgY29uc3Qgb3ZlcnJpZGUgeworICAgICByZXR1 cm4gJnByb3ZpZGVyXzsKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9w dWJsaWMvdGVzdC9yZW5kZXJfdmlld190ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2NvbnRlbnQvcHVibGljL3Rlc3QvcmVuZGVyX3ZpZXdfdGVzdC5jYworLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29udGVudC9wdWJsaWMvdGVzdC9yZW5kZXJfdmlld190ZXN0LmNjLm1lZQky MDI0LTA1LTI5IDE4OjAxOjE0LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY29udGVudC9wdWJsaWMvdGVzdC9yZW5kZXJfdmlld190ZXN0LmNjCTIwMjQtMDYtMDMg MTY6MjI6MTAuNTU0NTY4OTQ5ICswMjAwCitAQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIEZhaWxp bmdVUkxMb2FkZXJGYWN0b3J5IDogcHVibGljIG4KKyAKKyBjbGFzcyBNb2NrQ29sb3JQcm92aWRl clNvdXJjZSA6IHB1YmxpYyB1aTo6Q29sb3JQcm92aWRlclNvdXJjZSB7CisgIHB1YmxpYzoKKy0g IGV4cGxpY2l0IE1vY2tDb2xvclByb3ZpZGVyU291cmNlKCkgPSBkZWZhdWx0OworKyAgZXhwbGlj aXQgTW9ja0NvbG9yUHJvdmlkZXJTb3VyY2UoKSB7IHByb3ZpZGVyXy5HZW5lcmF0ZUNvbG9yTWFw KCk7IH0KKyAgIE1vY2tDb2xvclByb3ZpZGVyU291cmNlKGNvbnN0IE1vY2tDb2xvclByb3ZpZGVy U291cmNlJikgPSBkZWxldGU7CisgICBNb2NrQ29sb3JQcm92aWRlclNvdXJjZSYgb3BlcmF0b3I9 KGNvbnN0IE1vY2tDb2xvclByb3ZpZGVyU291cmNlJikgPSBkZWxldGU7CisgICB+TW9ja0NvbG9y UHJvdmlkZXJTb3VyY2UoKSBvdmVycmlkZSA9IGRlZmF1bHQ7CitkaWZmIC11cCBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2V4dGVuc2lvbnMvYnJvd3Nlci9leHRlbnNpb25faG9zdC5jYy5tZWUgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9leHRlbnNpb25zL2Jyb3dzZXIvZXh0ZW5zaW9uX2hvc3QuY2MK Ky0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2V4dGVuc2lvbnMvYnJvd3Nlci9leHRlbnNpb25f aG9zdC5jYy5tZWUJMjAyNC0wNS0yOSAxODowMToyMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2V4dGVuc2lvbnMvYnJvd3Nlci9leHRlbnNpb25faG9zdC5jYwky MDI0LTA2LTAzIDE2OjIyOjEwLjU1NTU2ODk2NyArMDIwMAorQEAgLTU4LDcgKzU4LDcgQEAgbmFt ZXNwYWNlIHsKKyAvLyB0aGUgVUktbGVzcyBleHRlbnNpb24gYmFja2dyb3VuZCBwYWdlLgorIGNs YXNzIE5vT3BDb2xvclByb3ZpZGVyU291cmNlIDogcHVibGljIHVpOjpDb2xvclByb3ZpZGVyU291 cmNlIHsKKyAgcHVibGljOgorLSAgTm9PcENvbG9yUHJvdmlkZXJTb3VyY2UoKSA9IGRlZmF1bHQ7 CisrICBOb09wQ29sb3JQcm92aWRlclNvdXJjZSgpIHsgY29sb3JfcHJvdmlkZXJfLkdlbmVyYXRl Q29sb3JNYXAoKTsgfQorICAgTm9PcENvbG9yUHJvdmlkZXJTb3VyY2UoY29uc3QgTm9PcENvbG9y UHJvdmlkZXJTb3VyY2UmKSA9IGRlbGV0ZTsKKyAgIE5vT3BDb2xvclByb3ZpZGVyU291cmNlJiBv cGVyYXRvcj0oY29uc3QgTm9PcENvbG9yUHJvdmlkZXJTb3VyY2UmKSA9IGRlbGV0ZTsKKyAgIH5O b09wQ29sb3JQcm92aWRlclNvdXJjZSgpIG92ZXJyaWRlID0gZGVmYXVsdDsKK2RpZmYgLXVwIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlv dXQvbGF5b3V0X3RoZW1lLmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2xheW91dF90aGVtZS5jYworLS0tIGNocm9taXVt LTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvbGF5 b3V0X3RoZW1lLmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAxOjM5LjAwMDAwMDAwMCArMDIwMAorKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9s YXlvdXQvbGF5b3V0X3RoZW1lLmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU1NTY4OTY3ICswMjAw CitAQCAtNjc3LDcgKzY3Nyw3IEBAIENvbG9yIExheW91dFRoZW1lOjpTeXN0ZW1Db2xvckZyb21D b2xvclAKKyAgICAgQ1NTVmFsdWVJRCBjc3NfdmFsdWVfaWQsCisgICAgIG1vam9tOjpibGluazo6 Q29sb3JTY2hlbWUgY29sb3Jfc2NoZW1lLAorICAgICBjb25zdCB1aTo6Q29sb3JQcm92aWRlciog Y29sb3JfcHJvdmlkZXIpIGNvbnN0IHsKKy0gIENIRUNLKGNvbG9yX3Byb3ZpZGVyLT5IYXNNaXhl cnMoKSk7CisrICBDSEVDSyghY29sb3JfcHJvdmlkZXItPklzQ29sb3JNYXBFbXB0eSgpKTsKKyAg IFNrQ29sb3Igc3lzdGVtX3RoZW1lX2NvbG9yOworICAgc3dpdGNoIChjc3NfdmFsdWVfaWQpIHsK KyAgICAgY2FzZSBDU1NWYWx1ZUlEOjprQWN0aXZldGV4dDoKK2RpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdWkvYmFzZS9tb2RlbHMvaW1hZ2VfbW9kZWxfdW5pdHRlc3QuY2MubWVlIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdWkvYmFzZS9tb2RlbHMvaW1hZ2VfbW9kZWxfdW5pdHRlc3Qu Y2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2Jhc2UvbW9kZWxzL2ltYWdlX21vZGVs X3VuaXR0ZXN0LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAyOjMxLjAwMDAwMDAwMCArMDIwMAorKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvYmFzZS9tb2RlbHMvaW1hZ2VfbW9kZWxfdW5pdHRl c3QuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTU1Njg5NjcgKzAyMDAKK0BAIC0yMjQsNiArMjI0 LDcgQEAgVEVTVChJbWFnZU1vZGVsVGVzdCwgU2hvdWxkUmFzdGVyaXplRW1wdAorIAorIFRFU1Qo SW1hZ2VNb2RlbFRlc3QsIFNob3VsZFJhc3Rlcml6ZVZlY3Rvckljb24pIHsKKyAgIHVpOjpDb2xv clByb3ZpZGVyIGNvbG9yX3Byb3ZpZGVyOworKyAgY29sb3JfcHJvdmlkZXIuR2VuZXJhdGVDb2xv ck1hcCgpOworICAgZ2Z4OjpJbWFnZVNraWEgaW1hZ2Vfc2tpYSA9CisgICAgICAgdWk6OkltYWdl TW9kZWw6OkZyb21WZWN0b3JJY29uKHZlY3Rvcl9pY29uczo6a1N5bmNJY29uKQorICAgICAgICAg ICAuUmFzdGVyaXplKCZjb2xvcl9wcm92aWRlcik7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni91aS9jb2xvci9jb2xvcl9wcm92aWRlci5jYy5tZWUJMjAyNC0wNi0wMyAxNjowMzoxNS41OTY0 MzI3NjEgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3By b3ZpZGVyLmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU1NTY4OTY3ICswMjAwCitAQCAtNCw3ICs0 LDYgQEAKKyAKKyAjaW5jbHVkZSAidWkvY29sb3IvY29sb3JfcHJvdmlkZXIuaCIKKyAKKy0jaW5j bHVkZSA8Zm9yd2FyZF9saXN0PgorICNpbmNsdWRlIDxtYXA+CisgI2luY2x1ZGUgPHNldD4KKyAj aW5jbHVkZSA8dXRpbGl0eT4KK0BAIC0xOCwxMDYgKzE3LDYgQEAKKyAKKyBuYW1lc3BhY2UgdWkg eworIAorLS8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCistLy8gQ29sb3JQcm92aWRlcjo6Q29sb3JQ cm92aWRlckludGVybmFsOgorLQorLWNsYXNzIENvbG9yUHJvdmlkZXI6OkNvbG9yUHJvdmlkZXJJ bnRlcm5hbCB7CistIHB1YmxpYzoKKy0gIHVzaW5nIE1peGVycyA9IHN0ZDo6Zm9yd2FyZF9saXN0 PENvbG9yTWl4ZXI+OworLQorLSAgQ29sb3JQcm92aWRlckludGVybmFsKCkgPSBkZWZhdWx0Owor LSAgQ29sb3JQcm92aWRlckludGVybmFsKGNvbnN0IENvbG9yUHJvdmlkZXJJbnRlcm5hbCYpID0g ZGVsZXRlOworLSAgQ29sb3JQcm92aWRlckludGVybmFsJiBvcGVyYXRvcj0oY29uc3QgQ29sb3JQ cm92aWRlckludGVybmFsJikgPSBkZWxldGU7CistICB+Q29sb3JQcm92aWRlckludGVybmFsKCkg PSBkZWZhdWx0OworLQorLSAgQ29sb3JNaXhlciYgQWRkTWl4ZXIoKSB7CistICAgIGNvbG9yX21h cF8uY2xlYXIoKTsKKy0gICAgbWl4ZXJzXy5lbXBsYWNlX2FmdGVyKAorLSAgICAgICAgZmlyc3Rf cG9zdHByb2Nlc3NpbmdfbWl4ZXJfLAorLSAgICAgICAgYmFzZTo6QmluZFJlcGVhdGluZyhbXShj b25zdCBDb2xvck1peGVyKiBtaXhlcikgeyByZXR1cm4gbWl4ZXI7IH0sCistICAgICAgICAgICAg ICAgICAgICAgICAgICAgIEdldExhc3ROb25Qb3N0cHJvY2Vzc2luZ01peGVyKCkpLAorLSAgICAg ICAgYmFzZTo6QmluZFJlcGVhdGluZygmQ29sb3JQcm92aWRlcjo6Q29sb3JQcm92aWRlckludGVy bmFsOjoKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdldExhc3ROb25Qb3N0cHJv Y2Vzc2luZ01peGVyLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFp bmVkKHRoaXMpKSk7CistCistICAgIHJldHVybiAqc3RkOjpuZXh0KGZpcnN0X3Bvc3Rwcm9jZXNz aW5nX21peGVyXywgMSk7CistICB9CistCistICBDb2xvck1peGVyJiBBZGRQb3N0cHJvY2Vzc2lu Z01peGVyKCkgeworLSAgICBjb2xvcl9tYXBfLmNsZWFyKCk7CistICAgIGlmIChmaXJzdF9wb3N0 cHJvY2Vzc2luZ19taXhlcl8gPT0gbWl4ZXJzXy5iZWZvcmVfYmVnaW4oKSkgeworLSAgICAgIC8v IFRoZSBmaXJzdCBwb3N0cHJvY2Vzc2luZyBtaXhlciBwb2ludHMgdG8gdGhlIGxhc3QgcmVndWxh ciBtaXhlci4KKy0gICAgICBhdXRvIHByZXZpb3VzX21peGVyX2dldHRlciA9IGJhc2U6OkJpbmRS ZXBlYXRpbmcoCistICAgICAgICAgICZDb2xvclByb3ZpZGVyOjpDb2xvclByb3ZpZGVySW50ZXJu YWw6OkdldExhc3ROb25Qb3N0cHJvY2Vzc2luZ01peGVyLAorLSAgICAgICAgICBiYXNlOjpVbnJl dGFpbmVkKHRoaXMpKTsKKy0gICAgICBtaXhlcnNfLmVtcGxhY2VfZnJvbnQocHJldmlvdXNfbWl4 ZXJfZ2V0dGVyLCBwcmV2aW91c19taXhlcl9nZXR0ZXIpOworLSAgICAgIGZpcnN0X3Bvc3Rwcm9j ZXNzaW5nX21peGVyXyA9IG1peGVyc18uYmVnaW4oKTsKKy0gICAgfSBlbHNlIHsKKy0gICAgICAv LyBPdGhlciBwb3N0cHJvY2Vzc2luZyBtaXhlcnMgcG9pbnQgdG8gdGhlIG5leHQgcG9zdHByb2Nl c3NpbmcgbWl4ZXIuCistICAgICAgYXV0byBwcmV2aW91c19taXhlcl9nZXR0ZXIgPQorLSAgICAg ICAgICBiYXNlOjpCaW5kUmVwZWF0aW5nKFtdKGNvbnN0IENvbG9yTWl4ZXIqIG1peGVyKSB7IHJl dHVybiBtaXhlcjsgfSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJl dGFpbmVkKCZtaXhlcnNfLmZyb250KCkpKTsKKy0gICAgICBtaXhlcnNfLmVtcGxhY2VfZnJvbnQo cHJldmlvdXNfbWl4ZXJfZ2V0dGVyLCBwcmV2aW91c19taXhlcl9nZXR0ZXIpOworLSAgICB9Cist ICAgIHJldHVybiBtaXhlcnNfLmZyb250KCk7CistICB9CistCistICBTa0NvbG9yIEdldENvbG9y KENvbG9ySWQgaWQpIGNvbnN0IHsKKy0gICAgYXV0byBpID0gY29sb3JfbWFwXy5maW5kKGlkKTsK Ky0gICAgaWYgKGkgPT0gY29sb3JfbWFwXy5lbmQoKSkgeworLSAgICAgIGlmIChtaXhlcnNfLmVt cHR5KCkpIHsKKy0gICAgICAgIERWTE9HKDIpIDw8ICJDb2xvclByb3ZpZGVyOjpHZXRDb2xvcjog Tm8gbWl4ZXJzIGRlZmluZWQhIjsKKy0gICAgICAgIHJldHVybiBnZng6OmtQbGFjZWhvbGRlckNv bG9yOworLSAgICAgIH0KKy0gICAgICBEVkxPRygyKSA8PCAiQ29sb3JQcm92aWRlcjo6R2V0Q29s b3I6IENvbXB1dGluZyBjb2xvciBmb3IgQ29sb3JJZDogIgorLSAgICAgICAgICAgICAgIDw8IENv bG9ySWROYW1lKGlkKTsKKy0gICAgICBjb25zdCBTa0NvbG9yIGNvbG9yID0gbWl4ZXJzXy5mcm9u dCgpLkdldFJlc3VsdENvbG9yKGlkKTsKKy0gICAgICBpZiAoY29sb3IgPT0gZ2Z4OjprUGxhY2Vo b2xkZXJDb2xvcikgeworLSAgICAgICAgcmV0dXJuIGdmeDo6a1BsYWNlaG9sZGVyQ29sb3I7Cist ICAgICAgfQorLSAgICAgIGkgPSBjb2xvcl9tYXBfLmluc2VydCh7aWQsIGNvbG9yfSkuZmlyc3Q7 CistICAgIH0KKy0KKy0gICAgRFZMT0coMikgPDwgIkNvbG9yUHJvdmlkZXI6OkdldENvbG9yOiBD b2xvcklkOiAiIDw8IENvbG9ySWROYW1lKGlkKQorLSAgICAgICAgICAgICA8PCAiIFZhbHVlOiAi IDw8IFNrQ29sb3JOYW1lKGktPnNlY29uZCk7CistICAgIHJldHVybiBpLT5zZWNvbmQ7CistICB9 CistCistICBjb25zdCBDb2xvck1peGVyKiBHZXRMYXN0Tm9uUG9zdHByb2Nlc3NpbmdNaXhlcigp IGNvbnN0IHsKKy0gICAgY29uc3QgYXV0byBpdCA9IHN0ZDo6bmV4dChmaXJzdF9wb3N0cHJvY2Vz c2luZ19taXhlcl8sIDEpOworLSAgICByZXR1cm4gKGl0ID09IG1peGVyc18uY2VuZCgpKSA/IG51 bGxwdHIgOiAmKCppdCk7CistICB9CistCistICBib29sIEhhc01peGVycygpIGNvbnN0IHsgcmV0 dXJuICFtaXhlcnNfLmVtcHR5KCk7IH0KKy0KKy0gIHZvaWQgU2V0Q29sb3JGb3JUZXN0aW5nKENv bG9ySWQgaWQsIFNrQ29sb3IgY29sb3IpIHsgY29sb3JfbWFwX1tpZF0gPSBjb2xvcjsgfQorLQor LSAgdm9pZCBHZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpIHsKKy0gICAgZm9yIChjb25zdCBh dXRvJiBtaXhlciA6IG1peGVyc18pIHsKKy0gICAgICBjb25zdCBhdXRvIG1peGVyX2NvbG9yX2lk cyA9IG1peGVyLkdldERlZmluZWRDb2xvcklkcygpOworLSAgICAgIGZvciAoY29uc3QgYXV0byBj b2xvcl9pZCA6IG1peGVyX2NvbG9yX2lkcykgeworLSAgICAgICAgR2V0Q29sb3IoY29sb3JfaWQp OworLSAgICAgIH0KKy0gICAgfQorLSAgfQorLQorLSAgY29uc3QgQ29sb3JQcm92aWRlcjo6Q29s b3JNYXAmIGNvbG9yX21hcF9mb3JfdGVzdGluZygpIHsgcmV0dXJuIGNvbG9yX21hcF87IH0KKy0K Ky0gcHJpdmF0ZToKKy0gIC8vIFRoZSBlbnRpcmUgY29sb3IgcGlwZWxpbmUsIGluIHJldmVyc2Ug b3JkZXIgKHRoYXQgaXMsIHRoZSAibGFzdCIgbWl4ZXIgaXMKKy0gIC8vIGF0IHRoZSBmcm9udCku CistICBNaXhlcnMgbWl4ZXJzXzsKKy0KKy0gIC8vIFRoZSBmaXJzdCBtaXhlciBpbiB0aGUgY2hh aW4gdGhhdCBpcyBhICJwb3N0cHJvY2Vzc2luZyIgbWl4ZXIuCistICBNaXhlcnM6Oml0ZXJhdG9y IGZpcnN0X3Bvc3Rwcm9jZXNzaW5nX21peGVyXyA9IG1peGVyc18uYmVmb3JlX2JlZ2luKCk7Cist CistICAvLyBBIGNhY2hlZCBtYXAgb2YgQ29sb3JJZCA9PiBTa0NvbG9yIG1hcHBpbmdzIGZvciB0 aGlzIHByb3ZpZGVyLgorLSAgbXV0YWJsZSBDb2xvck1hcCBjb2xvcl9tYXBfOworLX07CistCist Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8v Ly8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKy0vLyBDb2xvclByb3ZpZGVyOgorLQorIENvbG9yUHJv dmlkZXI6OkNvbG9yUHJvdmlkZXIoKSA9IGRlZmF1bHQ7CisgCisgQ29sb3JQcm92aWRlcjo6Q29s b3JQcm92aWRlcihDb2xvclByb3ZpZGVyJiYpID0gZGVmYXVsdDsKK0BAIC0xMjcsMzEgKzI2LDk2 IEBAIENvbG9yUHJvdmlkZXImIENvbG9yUHJvdmlkZXI6Om9wZXJhdG9yPSgKKyBDb2xvclByb3Zp ZGVyOjp+Q29sb3JQcm92aWRlcigpID0gZGVmYXVsdDsKKyAKKyBDb2xvck1peGVyJiBDb2xvclBy b3ZpZGVyOjpBZGRNaXhlcigpIHsKKy0gIHJldHVybiBpbnRlcm5hbF8tPkFkZE1peGVyKCk7Cisr ICBEQ0hFQ0soIWNvbG9yX21hcF8pOworKworKyAgbWl4ZXJzXy5lbXBsYWNlX2FmdGVyKAorKyAg ICAgIGZpcnN0X3Bvc3Rwcm9jZXNzaW5nX21peGVyXywKKysgICAgICBiYXNlOjpCaW5kUmVwZWF0 aW5nKFtdKGNvbnN0IENvbG9yTWl4ZXIqIG1peGVyKSB7IHJldHVybiBtaXhlcjsgfSwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgIEdldExhc3ROb25Qb3N0cHJvY2Vzc2luZ01peGVyKCkpLAor KyAgICAgIGJhc2U6OkJpbmRSZXBlYXRpbmcoJkNvbG9yUHJvdmlkZXI6OkdldExhc3ROb25Qb3N0 cHJvY2Vzc2luZ01peGVyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRh aW5lZCh0aGlzKSkpOworKworKyAgcmV0dXJuICpzdGQ6Om5leHQoZmlyc3RfcG9zdHByb2Nlc3Np bmdfbWl4ZXJfLCAxKTsKKyB9CisgCisgQ29sb3JNaXhlciYgQ29sb3JQcm92aWRlcjo6QWRkUG9z dHByb2Nlc3NpbmdNaXhlcigpIHsKKy0gIHJldHVybiBpbnRlcm5hbF8tPkFkZFBvc3Rwcm9jZXNz aW5nTWl4ZXIoKTsKKysgIERDSEVDSyghY29sb3JfbWFwXyk7CisrCisrICBpZiAoZmlyc3RfcG9z dHByb2Nlc3NpbmdfbWl4ZXJfID09IG1peGVyc18uYmVmb3JlX2JlZ2luKCkpIHsKKysgICAgLy8g VGhlIGZpcnN0IHBvc3Rwcm9jZXNzaW5nIG1peGVyIHBvaW50cyB0byB0aGUgbGFzdCByZWd1bGFy IG1peGVyLgorKyAgICBhdXRvIHByZXZpb3VzX21peGVyX2dldHRlciA9IGJhc2U6OkJpbmRSZXBl YXRpbmcoCisrICAgICAgICAmQ29sb3JQcm92aWRlcjo6R2V0TGFzdE5vblBvc3Rwcm9jZXNzaW5n TWl4ZXIsIGJhc2U6OlVucmV0YWluZWQodGhpcykpOworKyAgICBtaXhlcnNfLmVtcGxhY2VfZnJv bnQocHJldmlvdXNfbWl4ZXJfZ2V0dGVyLCBwcmV2aW91c19taXhlcl9nZXR0ZXIpOworKyAgICBm aXJzdF9wb3N0cHJvY2Vzc2luZ19taXhlcl8gPSBtaXhlcnNfLmJlZ2luKCk7CisrICB9IGVsc2Ug eworKyAgICAvLyBPdGhlciBwb3N0cHJvY2Vzc2luZyBtaXhlcnMgcG9pbnQgdG8gdGhlIG5leHQg cG9zdHByb2Nlc3NpbmcgbWl4ZXIuCisrICAgIGF1dG8gcHJldmlvdXNfbWl4ZXJfZ2V0dGVyID0K KysgICAgICAgIGJhc2U6OkJpbmRSZXBlYXRpbmcoW10oY29uc3QgQ29sb3JNaXhlciogbWl4ZXIp IHsgcmV0dXJuIG1peGVyOyB9LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpV bnJldGFpbmVkKCZtaXhlcnNfLmZyb250KCkpKTsKKysgICAgbWl4ZXJzXy5lbXBsYWNlX2Zyb250 KHByZXZpb3VzX21peGVyX2dldHRlciwgcHJldmlvdXNfbWl4ZXJfZ2V0dGVyKTsKKysgIH0KKysg IHJldHVybiBtaXhlcnNfLmZyb250KCk7CisgfQorIAorIFNrQ29sb3IgQ29sb3JQcm92aWRlcjo6 R2V0Q29sb3IoQ29sb3JJZCBpZCkgY29uc3QgeworLSAgcmV0dXJuIGludGVybmFsXy0+R2V0Q29s b3IoaWQpOworLX0KKysgIENIRUNLKGNvbG9yX21hcF8pOworKyAgYXV0byBpID0gY29sb3JfbWFw Xy0+ZmluZChpZCk7CisrICByZXR1cm4gaSA9PSBjb2xvcl9tYXBfLT5lbmQoKSA/IGdmeDo6a1Bs YWNlaG9sZGVyQ29sb3IgOiBpLT5zZWNvbmQ7CisrfQorKworK3ZvaWQgQ29sb3JQcm92aWRlcjo6 R2VuZXJhdGVDb2xvck1hcCgpIHsKKysgIC8vIFRoaXMgc2hvdWxkIG9ubHkgYmUgY2FsbGVkIHRv IGdlbmVyYXRlIHRoZSBgY29sb3JfbWFwX2Agb25jZS4KKysgIERDSEVDSyghY29sb3JfbWFwXyk7 CisrCisrICBpZiAobWl4ZXJzXy5lbXB0eSgpKQorKyAgICBEVkxPRygyKSA8PCAiQ29sb3JQcm92 aWRlcjo6R2VuZXJhdGVDb2xvck1hcDogTm8gbWl4ZXJzIGRlZmluZWQhIjsKKysKKysgIC8vIEl0 ZXJhdGUgb3ZlciBhc3NvY2lhdGVkIG1peGVycyBhbmQgZXh0cmFjdCB0aGUgQ29sb3JJZHMgZGVm aW5lZCBmb3IgdGhpcworKyAgLy8gcHJvdmlkZXIuCisrICBzdGQ6OnNldDxDb2xvcklkPiBjb2xv cl9pZHM7CisrICBmb3IgKGNvbnN0IGF1dG8mIG1peGVyIDogbWl4ZXJzXykgeworKyAgICBjb25z dCBhdXRvIG1peGVyX2NvbG9yX2lkcyA9IG1peGVyLkdldERlZmluZWRDb2xvcklkcygpOworKyAg ICBjb2xvcl9pZHMuaW5zZXJ0KG1peGVyX2NvbG9yX2lkcy5iZWdpbigpLCBtaXhlcl9jb2xvcl9p ZHMuZW5kKCkpOworKyAgfQorKworKyAgLy8gSXRlcmF0ZSB0aHJvdWdoIGFsbCBkZWZpbmVkIENv bG9ySWRzIGFuZCBzZWVkIHRoZSBgY29sb3JfbWFwYCB3aXRoIHRoZQorKyAgLy8gY29tcHV0ZWQg dmFsdWVzLiBVc2UgYSBzdGQ6Om1hcCByYXRoZXIgdGhhbiBhIGJhc2U6OmZsYXRfbWFwIHNpbmNl IGl0IGhhcworKyAgLy8gZnJlcXVlbnQgaW5zZXJ0cyBhbmQgY291bGQgZ3JvdyB2ZXJ5IGxhcmdl LgorKyAgc3RkOjptYXA8Q29sb3JJZCwgU2tDb2xvcj4gY29sb3JfbWFwOworKyAgZm9yIChjb25z dCBhdXRvJiBjb2xvcl9pZCA6IGNvbG9yX2lkcykgeworKyAgICBTa0NvbG9yIHJlc3VsdGluZ19j b2xvciA9IG1peGVyc18uZnJvbnQoKS5HZXRSZXN1bHRDb2xvcihjb2xvcl9pZCk7CisrICAgIERW TE9HKDIpIDw8ICJHZW5lcmF0ZUNvbG9yTWFwOiIKKysgICAgICAgICAgICAgPDwgIiBDb2xvciBJ ZDogIiA8PCBDb2xvcklkTmFtZShjb2xvcl9pZCkKKysgICAgICAgICAgICAgPDwgIiBSZXN1bHRp bmcgQ29sb3I6ICIgPDwgU2tDb2xvck5hbWUocmVzdWx0aW5nX2NvbG9yKTsKKysgICAgY29sb3Jf bWFwLmluc2VydCh7Y29sb3JfaWQsIHJlc3VsdGluZ19jb2xvcn0pOworKyAgfQorKworKyAgLy8g Q29uc3RydWN0IHRoZSBjb2xvcl9tYXBfLgorKyAgY29sb3JfbWFwXyA9IENvbG9yTWFwKGNvbG9y X21hcC5iZWdpbigpLCBjb2xvcl9tYXAuZW5kKCkpOworIAorLWJvb2wgQ29sb3JQcm92aWRlcjo6 SGFzTWl4ZXJzKCkgY29uc3QgeworLSAgcmV0dXJuIGludGVybmFsXy0+SGFzTWl4ZXJzKCk7Cisr ICAvLyBDbGVhciBhd2F5IGFsbCBhc3NvY2lhdGVkIG1peGVycyBhcyB0aGVzZSBhcmUgbm8gbG9u Z2VyIG5lZWRlZC4KKysgIG1peGVyc18uY2xlYXIoKTsKKysgIGZpcnN0X3Bvc3Rwcm9jZXNzaW5n X21peGVyXyA9IG1peGVyc18uYmVmb3JlX2JlZ2luKCk7CisgfQorIAorLXZvaWQgQ29sb3JQcm92 aWRlcjo6U2V0Q29sb3JGb3JUZXN0aW5nKENvbG9ySWQgaWQsIFNrQ29sb3IgY29sb3IpIHsKKy0g IGludGVybmFsXy0+U2V0Q29sb3JGb3JUZXN0aW5nKGlkLCBjb2xvcik7ICAvLyBJTi1URVNUCisr Ym9vbCBDb2xvclByb3ZpZGVyOjpJc0NvbG9yTWFwRW1wdHkoKSBjb25zdCB7CisrICBEQ0hFQ0so Y29sb3JfbWFwXyk7CisrICByZXR1cm4gY29sb3JfbWFwXy0+ZW1wdHkoKTsKKyB9CisgCistdm9p ZCBDb2xvclByb3ZpZGVyOjpHZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpIHsKKy0gIGludGVy bmFsXy0+R2VuZXJhdGVDb2xvck1hcEZvclRlc3RpbmcoKTsgIC8vIElOLVRFU1QKKyt2b2lkIENv bG9yUHJvdmlkZXI6OlNldENvbG9yRm9yVGVzdGluZyhDb2xvcklkIGlkLCBTa0NvbG9yIGNvbG9y KSB7CisrICBpZiAoY29sb3JfbWFwXykgeworKyAgICAoKmNvbG9yX21hcF8pW2lkXSA9IGNvbG9y OworKyAgfSBlbHNlIHsKKysgICAgaWYgKG1peGVyc18uZW1wdHkoKSkKKysgICAgICBBZGRNaXhl cigpOworKyAgICAoKnN0ZDo6bmV4dChmaXJzdF9wb3N0cHJvY2Vzc2luZ19taXhlcl8sIDEpKVtp ZF0gPSB7Y29sb3J9OworKyAgfQorIH0KKyAKKy1jb25zdCBDb2xvclByb3ZpZGVyOjpDb2xvck1h cCYgQ29sb3JQcm92aWRlcjo6Y29sb3JfbWFwX2Zvcl90ZXN0aW5nKCkgeworLSAgcmV0dXJuIGlu dGVybmFsXy0+Y29sb3JfbWFwX2Zvcl90ZXN0aW5nKCk7ICAvLyBJTi1URVNUCisrY29uc3QgQ29s b3JNaXhlciogQ29sb3JQcm92aWRlcjo6R2V0TGFzdE5vblBvc3Rwcm9jZXNzaW5nTWl4ZXIoKSBj b25zdCB7CisrICBjb25zdCBhdXRvIGl0ID0gc3RkOjpuZXh0KGZpcnN0X3Bvc3Rwcm9jZXNzaW5n X21peGVyXywgMSk7CisrICByZXR1cm4gKGl0ID09IG1peGVyc18uY2VuZCgpKSA/IG51bGxwdHIg OiAmKCppdCk7CisgfQorIAorIH0gIC8vIG5hbWVzcGFjZSB1aQorZGlmZiAtdXAgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlci5oLm1lZSBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmgKKy0tLSBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyLmgubWVlCTIwMjQtMDYtMDMgMTY6MTM6NDgu NzM5MTY2Mjc1ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xv cl9wcm92aWRlci5oCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU1NTY4OTY3ICswMjAwCitAQCAtNSwx MSArNSwxMiBAQAorICNpZm5kZWYgVUlfQ09MT1JfQ09MT1JfUFJPVklERVJfSF8KKyAjZGVmaW5l IFVJX0NPTE9SX0NPTE9SX1BST1ZJREVSX0hfCisgCistI2luY2x1ZGUgPG1hcD4KKysjaW5jbHVk ZSA8Zm9yd2FyZF9saXN0PgorICNpbmNsdWRlIDxtZW1vcnk+CisgI2luY2x1ZGUgPG9wdGlvbmFs PgorIAorICNpbmNsdWRlICJiYXNlL2NvbXBvbmVudF9leHBvcnQuaCIKKysjaW5jbHVkZSAiYmFz ZS9jb250YWluZXJzL2ZsYXRfbWFwLmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L3NraWEvaW5j bHVkZS9jb3JlL1NrQ29sb3IuaCIKKyAjaW5jbHVkZSAidWkvY29sb3IvY29sb3JfaWQuaCIKKyAj aW5jbHVkZSAidWkvY29sb3IvY29sb3JfbWl4ZXIuaCIKK0BAIC0yNCw3ICsyNSw3IEBAIG5hbWVz cGFjZSB1aSB7CisgLy8gVE9ETyhwa2FzdGluZyk6IEZpZ3VyZSBvdXQgb3duZXJzaGlwIG1vZGVs IGFuZCBsaWZldGltZS4KKyBjbGFzcyBDT01QT05FTlRfRVhQT1JUKENPTE9SKSBDb2xvclByb3Zp ZGVyIHsKKyAgcHVibGljOgorLSAgdXNpbmcgQ29sb3JNYXAgPSBzdGQ6Om1hcDxDb2xvcklkLCBT a0NvbG9yPjsKKysgIHVzaW5nIENvbG9yTWFwID0gYmFzZTo6ZmxhdF9tYXA8Q29sb3JJZCwgU2tD b2xvcj47CisgCisgICBDb2xvclByb3ZpZGVyKCk7CisgICBDb2xvclByb3ZpZGVyKGNvbnN0IENv bG9yUHJvdmlkZXImKSA9IGRlbGV0ZTsKK0BAIC00OCwyNSArNDksMzkgQEAgY2xhc3MgQ09NUE9O RU5UX0VYUE9SVChDT0xPUikgQ29sb3JQcm92aQorICAgLy8gfGlkfC4KKyAgIFNrQ29sb3IgR2V0 Q29sb3IoQ29sb3JJZCBpZCkgY29uc3Q7CisgCistICAvLyBSZXR1cm5zIHRydWUgaWYgbWl4ZXJz IGlzIG5vdCBlbXB0eS4gSXQncyB0aGUgY2FzZSBmb3Igc29tZSBicm93c2VyCisrICAvLyBHZW5l cmF0ZXMgdGhlIGBjb2xvcl9tYXBfYCB1c2VkIGJ5IHRoaXMgcHJvdmlkZXIgZm9yIGFsbCBDb2xv cklkcyBkZWZpbmVkCisrICAvLyBieSBhdHRhY2hlZCBtaXhlcnMuIEFmdGVyIHRoZSBtYXAgaXMg Z2VuZXJhdGVkIGF0dGFjaGVkIG1peGVycyBhbmQgdGhlaXIKKysgIC8vIGFzc29jaWF0ZWQgb2Jq ZWN0cyBhcmUgZGlzY2FyZGVkLiBNaXhlcnMgc2hvdWxkIG5vdCBiZSBhZGRlZCB0byB0aGUKKysg IC8vIHByb3ZpZGVyIGFmdGVyIHRoaXMgaGFzIGJlZW4gY2FsbGVkLgorKyAgdm9pZCBHZW5lcmF0 ZUNvbG9yTWFwKCk7CisrCisrICAvLyBSZXR1cm5zIHRydWUgaWYgdGhlIGNvbG9yX21hcF8gaXMg ZW1wdHkuIEl0J3MgdGhlIGNhc2UgZm9yIHNvbWUgYnJvd3NlcgorICAgLy8gdGVzdHMgdGhhdCBy dW4gaW4gc2luZ2xlIHByb2Nlc3MgbW9kZSBidXQgYWNjZXNzIGNvbG9ycyB0aGF0IGFyZQorICAg Ly8gaW5pdGlhbGl6ZWQgb24gcmVuZGVyZXIgcHJvY2VzcyBsYXVuY2gsIGZvciBleGFtcGxlLCBj b250cm9scyBpbgorICAgLy8gTmFpdmVUaGVtZUJhc2UgYW5kIGl0cyBjaGlsZHJlbiBjbGFzc2Vz LiBQbGVhc2Ugc2VlIG1vcmUgZGV0YWlsczoKKyAgIC8vIGh0dHBzOi8vY3JidWcuY29tLzEzNzY3 NzUuCistICBib29sIEhhc01peGVycygpIGNvbnN0OworKyAgYm9vbCBJc0NvbG9yTWFwRW1wdHko KSBjb25zdDsKKyAKKyAgIHZvaWQgU2V0Q29sb3JGb3JUZXN0aW5nKENvbG9ySWQgaWQsIFNrQ29s b3IgY29sb3IpOworLSAgdm9pZCBHZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpOworLSAgY29u c3QgQ29sb3JNYXAmIGNvbG9yX21hcF9mb3JfdGVzdGluZygpOworKyAgY29uc3QgQ29sb3JNYXAm IGNvbG9yX21hcF9mb3JfdGVzdGluZygpIHsgcmV0dXJuICpjb2xvcl9tYXBfOyB9CisgCisgIHBy aXZhdGU6CistICAvLyBDb2xvclByb3ZpZGVySW50ZXJuYWwgcHJvdmlkZXMgdGhlIGFjdHVhbCBp bXBsZW1lbnRhdGlvbiBvZiBDb2xvclByb3ZpZGVyLgorLSAgLy8gSXQncyBub24tbW92YWJsZSBh bmQgbm9uLWNvcHlhYmxlIHNvIHRoYXQgQ29sb3JNaXhlcidzIGNhbGxiYWNrcyBjYW4gc2FmZWx5 CistICAvLyBiaW5kIHRvIGl0LgorLSAgY2xhc3MgQ29sb3JQcm92aWRlckludGVybmFsOworKyAg dXNpbmcgTWl4ZXJzID0gc3RkOjpmb3J3YXJkX2xpc3Q8Q29sb3JNaXhlcj47CisgCistICBzdGQ6 OnVuaXF1ZV9wdHI8Q29sb3JQcm92aWRlckludGVybmFsPiBpbnRlcm5hbF8gPQorLSAgICAgIHN0 ZDo6bWFrZV91bmlxdWU8Q29sb3JQcm92aWRlckludGVybmFsPigpOworKyAgLy8gUmV0dXJucyB0 aGUgbGFzdCBtaXhlciBpbiB0aGUgY2hhaW4gdGhhdCBpcyBub3QgYSAicG9zdHByb2Nlc3Npbmci IG1peGVyLAorKyAgLy8gb3IgbnVsbHB0ci4KKysgIGNvbnN0IENvbG9yTWl4ZXIqIEdldExhc3RO b25Qb3N0cHJvY2Vzc2luZ01peGVyKCkgY29uc3Q7CisrCisrICAvLyBUaGUgZW50aXJlIGNvbG9y IHBpcGVsaW5lLCBpbiByZXZlcnNlIG9yZGVyICh0aGF0IGlzLCB0aGUgImxhc3QiIG1peGVyIGlz CisrICAvLyBhdCB0aGUgZnJvbnQpLgorKyAgTWl4ZXJzIG1peGVyc187CisrCisrICAvLyBUaGUg Zmlyc3QgbWl4ZXIgaW4gdGhlIGNoYWluIHRoYXQgaXMgYSAicG9zdHByb2Nlc3NpbmciIG1peGVy LgorKyAgTWl4ZXJzOjppdGVyYXRvciBmaXJzdF9wb3N0cHJvY2Vzc2luZ19taXhlcl8gPSBtaXhl cnNfLmJlZm9yZV9iZWdpbigpOworKworKyAgLy8gQSBjYWNoZWQgbWFwIG9mIENvbG9ySWQgPT4g U2tDb2xvciBtYXBwaW5ncyBmb3IgdGhpcyBwcm92aWRlci4gVGhpcyB3aWxsIGJlCisrICAvLyBn ZW5lcmF0ZWQgaW4gdGhlIGNhbGwgdG8gYEdlbmVyYXRlQ29sb3JNYXAoKWAuCisrICBzdGQ6Om9w dGlvbmFsPENvbG9yTWFwPiBjb2xvcl9tYXBfOworIH07CisgCisgfSAgLy8gbmFtZXNwYWNlIHVp CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVy X21hbmFnZXIuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJv dmlkZXJfbWFuYWdlci5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29s b3JfcHJvdmlkZXJfbWFuYWdlci5jYy5tZWUJMjAyNC0wNS0yOSAxODowMjozMS4wMDAwMDAwMDAg KzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVy X21hbmFnZXIuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTY1Njg5ODYgKzAyMDAKK0BAIC0xMDks NiArMTA5LDcgQEAgQ29sb3JQcm92aWRlciogQ29sb3JQcm92aWRlck1hbmFnZXI6OkdldAorICAg ICBpZiAoIWluaXRpYWxpemVyX2xpc3RfLT5lbXB0eSgpKQorICAgICAgIGluaXRpYWxpemVyX2xp c3RfLT5Ob3RpZnkocHJvdmlkZXIuZ2V0KCksIGtleSk7CisgCisrICAgIHByb3ZpZGVyLT5HZW5l cmF0ZUNvbG9yTWFwKCk7CisgICAgIFJlY29yZFRpbWVTcGVudEluaXRpYWxpemluZ0NvbG9yUHJv dmlkZXIodGltZXIuRWxhcHNlZCgpKTsKKyAgICAgKytudW1fcHJvdmlkZXJzX2luaXRpYWxpemVk XzsKKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJv dmlkZXJfdW5pdHRlc3QuY2MubWVlIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29s b3JfcHJvdmlkZXJfdW5pdHRlc3QuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2Nv bG9yL2NvbG9yX3Byb3ZpZGVyX3VuaXR0ZXN0LmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAyOjMxLjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3Jf cHJvdmlkZXJfdW5pdHRlc3QuY2MJMjAyNC0wNi0wMyAxNjoyMjoxMC41NTY1Njg5ODYgKzAyMDAK K0BAIC0xNyw2ICsxNyw3IEBAIG5hbWVzcGFjZSB7CisgLy8gVGVzdHMgdGhhdCB3aGVuIHRoZXJl IGFyZSBubyBtaXhlcnMsIEdldENvbG9yKCkgcmV0dXJucyBhIHBsYWNlaG9sZGVyIHZhbHVlLgor IFRFU1QoQ29sb3JQcm92aWRlclRlc3QsIEdldENvbG9yTm9NaXhlcnMpIHsKKyAgIENvbG9yUHJv dmlkZXIgcHJvdmlkZXI7CisrICBwcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgICBFWFBF Q1RfRVEoZ2Z4OjprUGxhY2Vob2xkZXJDb2xvciwgcHJvdmlkZXIuR2V0Q29sb3Ioa0NvbG9yVGVz dDApKTsKKyB9CisgCitAQCAtMjUsNiArMjYsNyBAQCBURVNUKENvbG9yUHJvdmlkZXJUZXN0LCBH ZXRDb2xvck5vTWl4ZXJzCisgVEVTVChDb2xvclByb3ZpZGVyVGVzdCwgU2luZ2xlTWl4ZXIpIHsK KyAgIENvbG9yUHJvdmlkZXIgcHJvdmlkZXI7CisgICBwcm92aWRlci5BZGRNaXhlcigpW2tDb2xv clRlc3QwXSA9IHtTS19Db2xvckdSRUVOfTsKKysgIHByb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAo KTsKKyAgIEVYUEVDVF9FUShTS19Db2xvckdSRUVOLCBwcm92aWRlci5HZXRDb2xvcihrQ29sb3JU ZXN0MCkpOworICAgRVhQRUNUX0VRKGdmeDo6a1BsYWNlaG9sZGVyQ29sb3IsIHByb3ZpZGVyLkdl dENvbG9yKGtDb2xvclRlc3QxKSk7CisgfQorQEAgLTM1LDYgKzM3LDcgQEAgVEVTVChDb2xvclBy b3ZpZGVyVGVzdCwgTm9uT3ZlcmxhcHBpbmdNaQorICAgQ29sb3JQcm92aWRlciBwcm92aWRlcjsK KyAgIHByb3ZpZGVyLkFkZE1peGVyKClba0NvbG9yVGVzdDBdID0ge1NLX0NvbG9yR1JFRU59Owor ICAgcHJvdmlkZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0MV0gPSB7U0tfQ29sb3JSRUR9OworKyAg cHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOworICAgRVhQRUNUX0VRKFNLX0NvbG9yR1JFRU4s IHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRlc3QwKSk7CisgICBFWFBFQ1RfRVEoU0tfQ29sb3JS RUQsIHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRlc3QxKSk7CisgfQorQEAgLTQ1LDYgKzQ4LDcg QEAgVEVTVChDb2xvclByb3ZpZGVyVGVzdCwgT3ZlcmxhcHBpbmdNaXhlcgorICAgQ29sb3JQcm92 aWRlciBwcm92aWRlcjsKKyAgIHByb3ZpZGVyLkFkZE1peGVyKClba0NvbG9yVGVzdDBdID0ge1NL X0NvbG9yR1JFRU59OworICAgcHJvdmlkZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0MF0gPSB7U0tf Q29sb3JSRUR9OworKyAgcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOworICAgRVhQRUNUX0VR KFNLX0NvbG9yUkVELCBwcm92aWRlci5HZXRDb2xvcihrQ29sb3JUZXN0MCkpOworIH0KKyAKK0BA IC01NSw2ICs1OSw3IEBAIFRFU1QoQ29sb3JQcm92aWRlclRlc3QsIFdpdGhQcm9jZXNzaW5nKQor ICAgcHJvdmlkZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0MF0gPSB7U0tfQ29sb3JCTEFDS307Cisg ICBwcm92aWRlci5BZGRQb3N0cHJvY2Vzc2luZ01peGVyKClba0NvbG9yVGVzdDBdID0KKyAgICAg ICBHZXRDb2xvcldpdGhNYXhDb250cmFzdChGcm9tVHJhbnNmb3JtSW5wdXQoKSk7CisrICBwcm92 aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgICBFWFBFQ1RfRVEoU0tfQ29sb3JXSElURSwgcHJv dmlkZXIuR2V0Q29sb3Ioa0NvbG9yVGVzdDApKTsKKyB9CisgCitAQCAtNjUsNiArNzAsNyBAQCBU RVNUKENvbG9yUHJvdmlkZXJUZXN0LCBXaXRoUHJvY2Vzc2luZ0FkCisgICBwcm92aWRlci5BZGRQ b3N0cHJvY2Vzc2luZ01peGVyKClba0NvbG9yVGVzdDBdID0KKyAgICAgICBHZXRDb2xvcldpdGhN YXhDb250cmFzdChGcm9tVHJhbnNmb3JtSW5wdXQoKSk7CisgICBwcm92aWRlci5BZGRNaXhlcigp W2tDb2xvclRlc3QwXSA9IHtTS19Db2xvckJMQUNLfTsKKysgIHByb3ZpZGVyLkdlbmVyYXRlQ29s b3JNYXAoKTsKKyAgIEVYUEVDVF9FUShTS19Db2xvcldISVRFLCBwcm92aWRlci5HZXRDb2xvcihr Q29sb3JUZXN0MCkpOworIH0KKyAKK0BAIC03Niw2ICs4Miw3IEBAIFRFU1QoQ29sb3JQcm92aWRl clRlc3QsIFJlZGVmaW5pdGlvbikgeworICAgbWl4ZXIwW2tDb2xvclRlc3QwXSA9IHtTS19Db2xv ckJMQUNLfTsKKyAgIG1peGVyMFtrQ29sb3JUZXN0MV0gPSBBbHBoYUJsZW5kKFNLX0NvbG9yUkVE LCBrQ29sb3JUZXN0MCwgMHgwMSk7CisgICBwcm92aWRlci5BZGRNaXhlcigpW2tDb2xvclRlc3Qw XSA9IHtTS19Db2xvcldISVRFfTsKKysgIHByb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKKyAg IEVYUEVDVF9FUShTS19Db2xvcldISVRFLCBwcm92aWRlci5HZXRDb2xvcihrQ29sb3JUZXN0MCkp OworICAgRVhQRUNUX0ZBTFNFKGNvbG9yX3V0aWxzOjpJc0RhcmsocHJvdmlkZXIuR2V0Q29sb3Io a0NvbG9yVGVzdDEpKSk7CisgfQorQEAgLTkwLDYgKzk3LDcgQEAgVEVTVChDb2xvclByb3ZpZGVy VGVzdCwgUmVkZWZpbml0aW9uV2l0aAorICAgcHJvdmlkZXIuQWRkTWl4ZXIoKVtrQ29sb3JUZXN0 MF0gPSB7U0tfQ29sb3JXSElURX07CisgICBwcm92aWRlci5BZGRQb3N0cHJvY2Vzc2luZ01peGVy KClba0NvbG9yVGVzdDBdID0KKyAgICAgICBHZXRDb2xvcldpdGhNYXhDb250cmFzdChGcm9tVHJh bnNmb3JtSW5wdXQoKSk7CisrICBwcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgICBFWFBF Q1RfTkUoU0tfQ29sb3JXSElURSwgcHJvdmlkZXIuR2V0Q29sb3Ioa0NvbG9yVGVzdDApKTsKKyAg IEVYUEVDVF9GQUxTRShjb2xvcl91dGlsczo6SXNEYXJrKHByb3ZpZGVyLkdldENvbG9yKGtDb2xv clRlc3QxKSkpOworIH0KK0BAIC05Nyw2ICsxMDUsNyBAQCBURVNUKENvbG9yUHJvdmlkZXJUZXN0 LCBSZWRlZmluaXRpb25XaXRoCisgVEVTVChDb2xvclByb3ZpZGVyVGVzdCwgU2V0Q29sb3JGb3JU ZXN0aW5nKSB7CisgICBDb2xvclByb3ZpZGVyIHByb3ZpZGVyOworICAgcHJvdmlkZXIuU2V0Q29s b3JGb3JUZXN0aW5nKGtDb2xvclRlc3QwLCBTS19Db2xvckdSRUVOKTsKKysgIHByb3ZpZGVyLkdl bmVyYXRlQ29sb3JNYXAoKTsKKyAgIEVYUEVDVF9FUShTS19Db2xvckdSRUVOLCBwcm92aWRlci5H ZXRDb2xvcihrQ29sb3JUZXN0MCkpOworICAgRVhQRUNUX0VRKGdmeDo6a1BsYWNlaG9sZGVyQ29s b3IsIHByb3ZpZGVyLkdldENvbG9yKGtDb2xvclRlc3QxKSk7CisgICBwcm92aWRlci5TZXRDb2xv ckZvclRlc3Rpbmcoa0NvbG9yVGVzdDEsIFNLX0NvbG9yQkxVRSk7CitkaWZmIC11cCBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX3V0aWxzLmNjLm1lZSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX3V0aWxzLmNjCistLS0g Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlcl91dGlscy5jYy5t ZWUJMjAyNC0wNS0yOSAxODowMjozMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L3VpL2NvbG9yL2NvbG9yX3Byb3ZpZGVyX3V0aWxzLmNjCTIwMjQtMDYtMDMgMTY6 MjI6MTAuNTU2NTY4OTg2ICswMjAwCitAQCAtMzY3LDYgKzM2Nyw3IEBAIENvbG9yUHJvdmlkZXIg Q3JlYXRlQ29sb3JQcm92aWRlckZyb21SZW4KKyAKKyAgIGZvciAoY29uc3QgYXV0byYgdGFibGUg OiBrUmVuZGVyZXJDb2xvcklkTWFwKQorICAgICBtaXhlclt0YWJsZS5jb2xvcl9pZF0gPSB7cmVu ZGVyZXJfY29sb3JfbWFwLmF0KHRhYmxlLnJlbmRlcmVyX2NvbG9yX2lkKX07CisrICBjb2xvcl9w cm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgCisgICByZXR1cm4gY29sb3JfcHJvdmlkZXI7 CisgfQorQEAgLTQyNSw2ICs0MjYsNyBAQCBDb2xvclByb3ZpZGVyIENyZWF0ZUVtdWxhdGVkRm9y Y2VkQ29sb3JzCisgICBtaXhlcltrQ29sb3JTZXBhcmF0b3JdID0ge2tDb2xvck1pZGdyb3VuZH07 CisgICBDb21wbGV0ZURlZmF1bHROb25XZWJOYXRpdmVSZW5kZXJlckNvbG9ySWRzRGVmaW5pdGlv bihtaXhlcik7CisgCisrICBjb2xvcl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgICBy ZXR1cm4gY29sb3JfcHJvdmlkZXI7CisgfQorIAorQEAgLTQ3OSw2ICs0ODEsNyBAQCBDb2xvclBy b3ZpZGVyIENyZWF0ZUVtdWxhdGVkRm9yY2VkQ29sb3JzCisgICBtaXhlcltrQ29sb3JXZWJOYXRp dmVDb250cm9sU2xpZGVySG92ZXJlZF0gPSB7U0tfQ29sb3JDWUFOfTsKKyAgIG1peGVyW2tDb2xv cldlYk5hdGl2ZUNvbnRyb2xTbGlkZXJQcmVzc2VkXSA9IHtTS19Db2xvckNZQU59OworIAorKyAg Y29sb3JfcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOworICAgcmV0dXJuIGNvbG9yX3Byb3Zp ZGVyOworIH0KKyAKK0BAIC02NTIsNiArNjU1LDcgQEAgQ29sb3JQcm92aWRlciBDT01QT05FTlRf RVhQT1JUKENPTE9SKQorICAgICAgICAgU2tDb2xvclNldFJHQigweDM3LCAweDkzLCAweEZGKX07 CisgICB9CisgCisrICBjb2xvcl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgICByZXR1 cm4gY29sb3JfcHJvdmlkZXI7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni91aS9jb2xvci9jb2xvcl9wcm92aWRlcl91dGlsc191bml0dGVzdC5jYy5tZWUgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlcl91dGlsc191bml0dGVzdC5jYwor LS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvY29sb3IvY29sb3JfcHJvdmlkZXJfdXRpbHNf dW5pdHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDI6MzEuMDAwMDAwMDAwICswMjAwCisrKysg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xvci9jb2xvcl9wcm92aWRlcl91dGlsc191bml0 dGVzdC5jYwkyMDI0LTA2LTAzIDE2OjIyOjEwLjU1NjU2ODk4NiArMDIwMAorQEAgLTQ5LDYgKzQ5 LDcgQEAgVEVTVF9GKENvbG9yUHJvdmlkZXJVdGlsc1Rlc3QsIFJlbmRlcmVyQworICAgdWk6OkNv bG9yTWl4ZXImIG1peGVyID0gY29sb3JfcHJvdmlkZXIuQWRkTWl4ZXIoKTsKKyAgIGZvciAoaW50 IGkgPSB1aTo6a1VpQ29sb3JzU3RhcnQgKyAxOyBpIDwgdWk6OmtVaUNvbG9yc0VuZDsgKytpKQor ICAgICBtaXhlcltpXSA9IHtzdGF0aWNfY2FzdDxTa0NvbG9yPihpKX07CisrICBjb2xvcl9wcm92 aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgCisgICAvLyBUaGUgc2l6ZSBvZiB0aGUgUmVuZGVy ZXJDb2xvck1hcCBzaG91bGQgbWF0Y2ggbnVtYmVyIG9mIGRlZmluZWQKKyAgIC8vIFJlbmRlcmVy Q29sb3JJZHMuCitAQCAtNjAsNyArNjEsNiBAQCBURVNUX0YoQ29sb3JQcm92aWRlclV0aWxzVGVz dCwgUmVuZGVyZXJDCisgICAvLyBhbHNvIG1hdGNoIHRoZSBudW1iZXIgb2YgZGVmaW5lZCBSZW5k ZXJlckNvbG9ySWRzLgorICAgYXV0byBuZXdfY29sb3JfcHJvdmlkZXIgPQorICAgICAgIHVpOjpD cmVhdGVDb2xvclByb3ZpZGVyRnJvbVJlbmRlcmVyQ29sb3JNYXAocmVuZGVyZXJfY29sb3JfbWFw KTsKKy0gIG5ld19jb2xvcl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwRm9yVGVzdGluZygpOwor ICAgRVhQRUNUX0VRKGtUb3RhbHRSZW5kZXJlckNvbG9ySWRzLAorICAgICAgICAgICAgIG5ld19j b2xvcl9wcm92aWRlci5jb2xvcl9tYXBfZm9yX3Rlc3RpbmcoKS5zaXplKCkpOworIH0KK0BAIC03 Myw2ICs3Myw3IEBAIFRFU1RfRihDb2xvclByb3ZpZGVyVXRpbHNUZXN0LCBDb2xvclByb3YKKyAg IGZvciAoaW50IGkgPSB1aTo6a1VpQ29sb3JzU3RhcnQgKyAxOyBpIDwgdWk6OmtVaUNvbG9yc0Vu ZDsgKytpKSB7CisgICAgIG1peGVyW2ldID0ge3N0YXRpY19jYXN0PFNrQ29sb3I+KGkpfTsKKyAg IH0KKysgIGNvbG9yX3Byb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKKyAKKyAgIC8vIEEgcmVu ZGVyZXIgY29sb3IgbWFwIGdlbmVyYXRlZCBmcm9tIGl0cyBzb3VyY2UgcHJvdmlkZXIgc2hvdWxk IGhhdmUKKyAgIC8vIGVxdWl2YWxlbnQgbWFwcGluZ3MuCitAQCAtODQsNiArODUsNyBAQCBURVNU X0YoQ29sb3JQcm92aWRlclV0aWxzVGVzdCwgQ29sb3JQcm92CisgICAvLyBQcm92aWRlcnMgd2l0 aCBkaWZmZXJlbnQgcmVuZGVyZXIgY29sb3IgbWFwcGluZ3Mgc2hvdWxkIG5vdCBiZSBmbGFnZ2Vk IGFzCisgICAvLyBlcXVpdmFsZW50LgorICAgdWk6OkNvbG9yUHJvdmlkZXIgbmV3X2NvbG9yX3By b3ZpZGVyOworKyAgbmV3X2NvbG9yX3Byb3ZpZGVyLkdlbmVyYXRlQ29sb3JNYXAoKTsKKyAgIEVY UEVDVF9GQUxTRShJc1JlbmRlcmVyQ29sb3JNYXBwaW5nRXF1aXZhbGVudCgmbmV3X2NvbG9yX3By b3ZpZGVyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHJlbmRlcmVyX2NvbG9yX21hcCkpOworIH0KK0BAIC0xMTksNiArMTIxLDcgQEAgVEVTVF9GKENv bG9yUHJvdmlkZXJVdGlsc1Rlc3QsIERlZmF1bHRCbAorICAgdWk6OkNvbG9yUHJvdmlkZXIgcmFu ZG9tX2NvbG9yX3Byb3ZpZGVyOworICAgdWk6OkNvbG9yTWl4ZXImIG1peGVyID0gcmFuZG9tX2Nv bG9yX3Byb3ZpZGVyLkFkZE1peGVyKCk7CisgICBtaXhlclt1aTo6a0NvbG9yUHJpbWFyeUJhY2tn cm91bmRdID0ge1NLX0NvbG9yV0hJVEV9OworKyAgcmFuZG9tX2NvbG9yX3Byb3ZpZGVyLkdlbmVy YXRlQ29sb3JNYXAoKTsKKyAgIHVpOjpSZW5kZXJlckNvbG9yTWFwIHJhbmRvbV9jb2xvcl9tYXAg PQorICAgICAgIHVpOjpDcmVhdGVSZW5kZXJlckNvbG9yTWFwKHJhbmRvbV9jb2xvcl9wcm92aWRl cik7CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL3N5c19jb2xv cl9taXhlcl91bml0dGVzdC5jYy5tZWUgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9jb2xvci9z eXNfY29sb3JfbWl4ZXJfdW5pdHRlc3QuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3Vp L2NvbG9yL3N5c19jb2xvcl9taXhlcl91bml0dGVzdC5jYy5tZWUJMjAyNC0wNS0yOSAxODowMjoz MS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2NvbG9yL3N5 c19jb2xvcl9taXhlcl91bml0dGVzdC5jYwkyMDI0LTA2LTAzIDE2OjIyOjEwLjU1NjU2ODk4NiAr MDIwMAorQEAgLTM2LDYgKzM2LDcgQEAgY2xhc3MgU3lzQ29sb3JNaXhlclRlc3QKKyAKKyAgICAg QWRkUmVmQ29sb3JNaXhlcigmY29sb3JfcHJvdmlkZXJfLCBrZXkpOworICAgICBBZGRTeXNDb2xv ck1peGVyKCZjb2xvcl9wcm92aWRlcl8sIGtleSk7CisrICAgIGNvbG9yX3Byb3ZpZGVyXy5HZW5l cmF0ZUNvbG9yTWFwKCk7CisgICB9CisgCisgIHByb3RlY3RlZDoKK2RpZmYgLXVwIGNocm9taXVt LTEyNi4wLjY0NzguMjYvdWkvbmF0aXZlX3RoZW1lL25hdGl2ZV90aGVtZV9iYXNlLmNjLm1lZSBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL25hdGl2ZV90aGVtZS9uYXRpdmVfdGhlbWVfYmFzZS5j YworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvbmF0aXZlX3RoZW1lL25hdGl2ZV90aGVt ZV9iYXNlLmNjLm1lZQkyMDI0LTA1LTI5IDE4OjAyOjMyLjAwMDAwMDAwMCArMDIwMAorKysrIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdWkvbmF0aXZlX3RoZW1lL25hdGl2ZV90aGVtZV9iYXNlLmNj CTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU2NTY4OTg2ICswMjAwCitAQCAtMTc2Myw5ICsxNzYzLDgg QEAgYm9vbCBOYXRpdmVUaGVtZUJhc2U6OklzQ29sb3JQaXBlbGluZVN1cAorICAgICBDb250cm9s Q29sb3JJZCBjb2xvcl9pZCkgY29uc3QgeworICAgLy8gQ29sb3IgcHJvdmlkZXJzIGFyZSBub3Qg eWV0IHN1cHBvcnRlZCBvbiBBbmRyb2lkIHNvIHdlIG5lZWQgdG8gY2hlY2sgdGhhdAorICAgLy8g dGhlIGNvbG9yX3Byb3ZpZGVyIGlzIG5vdCBudWxsIGhlcmUuCistICBpZiAoIWNvbG9yX3Byb3Zp ZGVyIHx8ICFjb2xvcl9wcm92aWRlci0+SGFzTWl4ZXJzKCkpIHsKKysgIGlmICghY29sb3JfcHJv dmlkZXIgfHwgY29sb3JfcHJvdmlkZXItPklzQ29sb3JNYXBFbXB0eSgpKQorICAgICByZXR1cm4g ZmFsc2U7CistICB9CisgCisgICBzdGF0aWMgY29uc3RleHByIGF1dG8ga0NvbnRyb2xDb2xvcklk c1NldCA9CisgICAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdFNldDxDb250cm9sQ29sb3JJZD4oe2tC b3JkZXIsCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL25hdGl2ZV90aGVtZS9u YXRpdmVfdGhlbWVfZmx1ZW50X3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L3VpL25hdGl2ZV90aGVtZS9uYXRpdmVfdGhlbWVfZmx1ZW50X3VuaXR0ZXN0LmNjCistLS0gY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi91aS9uYXRpdmVfdGhlbWUvbmF0aXZlX3RoZW1lX2ZsdWVudF91 bml0dGVzdC5jYy5tZWUJMjAyNC0wNS0yOSAxODowMjozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL25hdGl2ZV90aGVtZS9uYXRpdmVfdGhlbWVfZmx1ZW50 X3VuaXR0ZXN0LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU2NTY4OTg2ICswMjAwCitAQCAtMTM0 LDYgKzEzNCw3IEBAIFRFU1RfUChOYXRpdmVUaGVtZUZsdWVudFRlc3QsIFZlcmlmeUFycm8KKyBU RVNUX0YoTmF0aXZlVGhlbWVGbHVlbnRUZXN0LCBQYWludFRodW1iUm91bmRlZENvcm5lcnMpIHsK KyAgIGNjOjpSZWNvcmRQYWludENhbnZhcyBjYW52YXM7CisgICBDb2xvclByb3ZpZGVyIGNvbG9y X3Byb3ZpZGVyOworKyAgY29sb3JfcHJvdmlkZXIuR2VuZXJhdGVDb2xvck1hcCgpOworICAgY29u c3RleHByIGdmeDo6UmVjdCBrUmVjdCgxNSwgMTAwKTsKKyAgIC8vIGBpc193ZWJfdGVzdGAgaXMg YGZhbHNlYCBieSBkZWZhdWx0LgorICAgY29uc3QgTmF0aXZlVGhlbWU6OlNjcm9sbGJhclRodW1i RXh0cmFQYXJhbXMgZXh0cmFfcGFyYW1zOworZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni91aS93bS9jb3JlL3NoYWRvd19jb250cm9sbGVyX3VuaXR0ZXN0LmNjLm1lZSBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3VpL3dtL2NvcmUvc2hhZG93X2NvbnRyb2xsZXJfdW5pdHRlc3QuY2MKKy0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3dtL2NvcmUvc2hhZG93X2NvbnRyb2xsZXJfdW5p dHRlc3QuY2MubWVlCTIwMjQtMDUtMjkgMTg6MDI6MzIuMDAwMDAwMDAwICswMjAwCisrKysgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi91aS93bS9jb3JlL3NoYWRvd19jb250cm9sbGVyX3VuaXR0ZXN0 LmNjCTIwMjQtMDYtMDMgMTY6MjI6MTAuNTU2NTY4OTg2ICswMjAwCitAQCAtMjg1LDYgKzI4NSw3 IEBAIFRFU1RfRihTaGFkb3dDb250cm9sbGVyVGVzdCwgU2V0Q29sb3JzTWEKKyAgIG1peGVyW3Vp OjprQ29sb3JTaGFkb3dWYWx1ZUFtYmllbnRTaGFkb3dFbGV2YXRpb25Ud2VsdmVdID0ge1NLX0Nv bG9yUkVEfTsKKyAgIG1peGVyW3VpOjprQ29sb3JTaGFkb3dWYWx1ZUtleVNoYWRvd0VsZXZhdGlv blR3ZW50eUZvdXJdID0ge1NLX0NvbG9yR1JFRU59OworICAgbWl4ZXJbdWk6OmtDb2xvclNoYWRv d1ZhbHVlQW1iaWVudFNoYWRvd0VsZXZhdGlvblR3ZW50eUZvdXJdID0ge1NLX0NvbG9yQkxVRX07 CisrICBjb2xvcl9wcm92aWRlci5HZW5lcmF0ZUNvbG9yTWFwKCk7CisgCisgICBzaGFkb3ctPlNl dEVsZXZhdGlvblRvQ29sb3JzTWFwKAorICAgICAgIFNoYWRvd0NvbnRyb2xsZXI6OkdlbmVyYXRl U2hhZG93Q29sb3JzTWFwKCZjb2xvcl9wcm92aWRlcikpOwoKZGlmZiAtLWdpdCBhL2Nocm9taXVt LTEyNi1lbDctY29uc3RleHByLnBhdGNoIGIvY2hyb21pdW0tMTI2LWVsNy1jb25zdGV4cHIucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUwNDJmZQotLS0gL2Rldi9u dWxsCisrKyBiL2Nocm9taXVtLTEyNi1lbDctY29uc3RleHByLnBhdGNoCkBAIC0wLDAgKzEsMjQ4 IEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL2xl bnMvbGVuc191bnRydXN0ZWRfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j aHJvbWUvYnJvd3Nlci91aS9sZW5zL2xlbnNfdW50cnVzdGVkX3VpLmgKKy0tLSBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL2xlbnMvbGVuc191bnRydXN0ZWRfdWkuaC5j b25zdGV4cHIJMjAyNC0wNS0yOSAxODowMDo1OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL2xlbnMvbGVuc191bnRydXN0ZWRfdWku aAkyMDI0LTA2LTAyIDIzOjUxOjI1LjUzOTkxNjYwNiArMDIwMAorQEAgLTQ3LDcgKzQ3LDcgQEAg Y2xhc3MgTGVuc1VudHJ1c3RlZFVJIDogcHVibGljIFVudHJ1c3RlZAorICAgICAgIG1vam86OlBl bmRpbmdSZWNlaXZlcjxjb2xvcl9jaGFuZ2VfbGlzdGVuZXI6Om1vam9tOjpQYWdlSGFuZGxlcj4K KyAgICAgICAgICAgcmVjZWl2ZXIpOworIAorLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmlu ZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiTGVuc1VudHJ1c3RlZCI7IH0KKysgIHN0YXRpYyBj b25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiTGVuc1VudHJ1c3RlZCI7 IH0KKyAKKyAgcHJpdmF0ZToKKyAgIC8vIGxlbnM6Om1vam9tOjpMZW5zUGFnZUhhbmRsZXJGYWN0 b3J5OgorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9s ZW5zL3NlYXJjaF9idWJibGVfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j aHJvbWUvYnJvd3Nlci91aS9sZW5zL3NlYXJjaF9idWJibGVfdWkuaAorLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvbGVucy9zZWFyY2hfYnViYmxlX3VpLmguY29u c3RleHByCTIwMjQtMDUtMjkgMTg6MDA6NTguMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9sZW5zL3NlYXJjaF9idWJibGVfdWkuaAky MDI0LTA2LTAyIDIzOjUxOjI1LjUzOTkxNjYwNiArMDIwMAorQEAgLTI1LDcgKzI1LDcgQEAgY2xh c3MgU2VhcmNoQnViYmxlVUkgOiBwdWJsaWMgVG9wQ2hyb21lVworICAgICAgIG1vam86OlBlbmRp bmdSZWNlaXZlcjxsZW5zOjptb2pvbTo6U2VhcmNoQnViYmxlUGFnZUhhbmRsZXJGYWN0b3J5Pgor ICAgICAgICAgICByZWNlaXZlcik7CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5n IEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJMZW5zU2VhcmNoQnViYmxlIjsgfQorKyAgc3RhdGlj IGNvbnN0IHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJMZW5zU2VhcmNoQnVi YmxlIjsgfQorIAorICBwcml2YXRlOgorICAgLy8gbGVuczo6bW9qb206OlNlYXJjaEJ1YmJsZVBh Z2VIYW5kbGVyRmFjdG9yeQorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv YnJvd3Nlci91aS93ZWJ1aS9jb21tZXJjZS9zaG9wcGluZ19pbnNpZ2h0c19zaWRlX3BhbmVsX3Vp LmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi dWkvY29tbWVyY2Uvc2hvcHBpbmdfaW5zaWdodHNfc2lkZV9wYW5lbF91aS5oCistLS0gY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9jb21tZXJjZS9zaG9wcGlu Z19pbnNpZ2h0c19zaWRlX3BhbmVsX3VpLmguY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDA6NTku MDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nl ci91aS93ZWJ1aS9jb21tZXJjZS9zaG9wcGluZ19pbnNpZ2h0c19zaWRlX3BhbmVsX3VpLmgJMjAy NC0wNi0wMiAyMzo1MToyNS41Mzk5MTY2MDYgKzAyMDAKK0BAIC01NSw3ICs1NSw3IEBAIGNsYXNz IFNob3BwaW5nSW5zaWdodHNTaWRlUGFuZWxVSQorICAgICAgIG1vam86OlBlbmRpbmdSZWNlaXZl cjwKKyAgICAgICAgICAgc2hvcHBpbmdfc2VydmljZTo6bW9qb206OlNob3BwaW5nU2VydmljZUhh bmRsZXJGYWN0b3J5PiByZWNlaXZlcik7CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3Ry aW5nIEdldFdlYlVJTmFtZSgpIHsKKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJV SU5hbWUoKSB7CisgICAgIHJldHVybiAiU2hvcHBpbmdJbnNpZ2h0c1NpZGVQYW5lbCI7CisgICB9 CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL2NvbXBvc2UvY29tcG9zZV91bnRydXN0ZWRfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9jb21wb3NlL2NvbXBvc2VfdW50cnVz dGVkX3VpLmgKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dl YnVpL2NvbXBvc2UvY29tcG9zZV91bnRydXN0ZWRfdWkuaC5jb25zdGV4cHIJMjAyNC0wNS0yOSAx ODowMDo1OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9t ZS9icm93c2VyL3VpL3dlYnVpL2NvbXBvc2UvY29tcG9zZV91bnRydXN0ZWRfdWkuaAkyMDI0LTA2 LTAyIDIzOjUxOjI1LjU0MDkxNjYzMCArMDIwMAorQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgQ29t cG9zZVVudHJ1c3RlZFVJCisgICAgIHRyaWdnZXJpbmdfd2ViX2NvbnRlbnRzXyA9IHdlYl9jb250 ZW50cy0+R2V0V2Vha1B0cigpOworICAgfQorIAorLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0 cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiQ29tcG9zZSI7IH0KKysgIHN0YXRpYyBjb25z dCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiQ29tcG9zZSI7IH0KKyAKKyAg cHJpdmF0ZToKKyAgIHZvaWQgQ3JlYXRlQ29tcG9zZVNlc3Npb25VbnRydXN0ZWRQYWdlSGFuZGxl cigKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi dWkvc2lkZV9wYW5lbC9ib29rbWFya3MvYm9va21hcmtzX3NpZGVfcGFuZWxfdWkuaC5jb25zdGV4 cHIgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3Bh bmVsL2Jvb2ttYXJrcy9ib29rbWFya3Nfc2lkZV9wYW5lbF91aS5oCistLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2Jvb2ttYXJrcy9i b29rbWFya3Nfc2lkZV9wYW5lbF91aS5oLmNvbnN0ZXhwcgkyMDI0LTA1LTI5IDE4OjAwOjU5LjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvd2VidWkvc2lkZV9wYW5lbC9ib29rbWFya3MvYm9va21hcmtzX3NpZGVfcGFuZWxfdWkuaAky MDI0LTA2LTAyIDIzOjUxOjI1LjU0MDkxNjYzMCArMDIwMAorQEAgLTc1LDcgKzc1LDcgQEAgY2xh c3MgQm9va21hcmtzU2lkZVBhbmVsVUkKKyAgIGNvbW1lcmNlOjpTaG9wcGluZ0xpc3RDb250ZXh0 TWVudUNvbnRyb2xsZXIqCisgICBHZXRTaG9wcGluZ0xpc3RDb250ZXh0TWVudUNvbnRyb2xsZXIo KTsKKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeyBy ZXR1cm4gIkJvb2ttYXJrc1NpZGVQYW5lbCI7IH0KKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmlu ZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiQm9va21hcmtzU2lkZVBhbmVsIjsgfQorIAorICBw cml2YXRlOgorICAgLy8gc2lkZV9wYW5lbDo6bW9qb206OkJvb2ttYXJrc1BhZ2VIYW5kbGVyRmFj dG9yeToKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvc2lkZV9wYW5lbC9jb21wYW5pb24vY29tcGFuaW9uX3NpZGVfcGFuZWxfdW50cnVzdGVk X3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv d2VidWkvc2lkZV9wYW5lbC9jb21wYW5pb24vY29tcGFuaW9uX3NpZGVfcGFuZWxfdW50cnVzdGVk X3VpLmgKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVp L3NpZGVfcGFuZWwvY29tcGFuaW9uL2NvbXBhbmlvbl9zaWRlX3BhbmVsX3VudHJ1c3RlZF91aS5o LmNvbnN0ZXhwcgkyMDI0LTA2LTAzIDE4OjIwOjI4LjUwNDYwNDA3MSArMDIwMAorKysrIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9jb21w YW5pb24vY29tcGFuaW9uX3NpZGVfcGFuZWxfdW50cnVzdGVkX3VpLmgJMjAyNC0wNi0wMyAxODoy MDo0NC41NTkwMTY0OTcgKzAyMDAKK0BAIC0zNCw3ICszNCw3IEBAIGNsYXNzIENvbXBhbmlvblNp ZGVQYW5lbFVudHJ1c3RlZFVJCisgICAvLyBHZXRzIGEgd2VhayBwb2ludGVyIHRvIHRoaXMgb2Jq ZWN0LgorICAgYmFzZTo6V2Vha1B0cjxDb21wYW5pb25TaWRlUGFuZWxVbnRydXN0ZWRVST4gR2V0 V2Vha1B0cigpOworIAorLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJVSU5h bWUoKSB7CisrICBzdGF0aWMgY29uc3Qgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeworICAg ICByZXR1cm4gIkNvbXBhbmlvblNpZGVQYW5lbFVudHJ1c3RlZCI7CisgICB9CisgCitkaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFu ZWwvY3VzdG9taXplX2Nocm9tZS9jdXN0b21pemVfY2hyb21lX3VpLmguY29uc3RleHByIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9jdXN0 b21pemVfY2hyb21lL2N1c3RvbWl6ZV9jaHJvbWVfdWkuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9jdXN0b21pemVfY2hyb21l L2N1c3RvbWl6ZV9jaHJvbWVfdWkuaC5jb25zdGV4cHIJMjAyNC0wNi0wMyAxODoxMzo1Mi43NDEy ODI5NDkgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL3NpZGVfcGFuZWwvY3VzdG9taXplX2Nocm9tZS9jdXN0b21pemVfY2hyb21lX3VpLmgJ MjAyNC0wNi0wMyAxODoxNDozNC43MTg0NDI4ODggKzAyMDAKK0BAIC0xMTEsNyArMTExLDcgQEAg Y2xhc3MgQ3VzdG9taXplQ2hyb21lVUkKKyAgICAgICAgICAgc2lkZV9wYW5lbDo6Y3VzdG9taXpl X2Nocm9tZTo6bW9qb206OkN1c3RvbWl6ZVRvb2xiYXJIYW5kbGVyRmFjdG9yeT4KKyAgICAgICAg ICAgcmVjZWl2ZXIpOworIAorLSAgc3RhdGljIGNvbnN0ZXhwciBzdGQ6OnN0cmluZyBHZXRXZWJV SU5hbWUoKSB7IHJldHVybiAiQ3VzdG9taXplQ2hyb21lIjsgfQorKyAgc3RhdGljIGNvbnN0IHN0 ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJDdXN0b21pemVDaHJvbWUiOyB9Cisg CisgIHByaXZhdGU6CisgICAvLyBzaWRlX3BhbmVsOjptb2pvbTo6Q3VzdG9taXplQ2hyb21lUGFn ZUhhbmRsZXJGYWN0b3J5CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9i cm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvaGlzdG9yeV9jbHVzdGVycy9oaXN0b3J5X2NsdXN0 ZXJzX3NpZGVfcGFuZWxfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL2hpc3RvcnlfY2x1c3RlcnMvaGlzdG9yeV9j bHVzdGVyc19zaWRlX3BhbmVsX3VpLmgKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9t ZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvaGlzdG9yeV9jbHVzdGVycy9oaXN0b3J5X2Ns dXN0ZXJzX3NpZGVfcGFuZWxfdWkuaC5jb25zdGV4cHIJMjAyNC0wNS0yOSAxODowMDo1OS4wMDAw MDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL3NpZGVfcGFuZWwvaGlzdG9yeV9jbHVzdGVycy9oaXN0b3J5X2NsdXN0ZXJzX3NpZGVf cGFuZWxfdWkuaAkyMDI0LTA2LTAyIDIzOjUxOjI1LjU0MDkxNjYzMCArMDIwMAorQEAgLTcwLDcg KzcwLDcgQEAgY2xhc3MgSGlzdG9yeUNsdXN0ZXJzU2lkZVBhbmVsVUkgOiBwdWJsaQorICAgdm9p ZCBEaWRGaW5pc2hOYXZpZ2F0aW9uKAorICAgICAgIGNvbnRlbnQ6Ok5hdmlnYXRpb25IYW5kbGUq IG5hdmlnYXRpb25faGFuZGxlKSBvdmVycmlkZTsKKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIgc3Rk OjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkgeworKyAgc3RhdGljIGNvbnN0IHN0ZDo6c3RyaW5nIEdl dFdlYlVJTmFtZSgpIHsKKyAgICAgcmV0dXJuICJIaXN0b3J5Q2x1c3RlcnNTaWRlUGFuZWwiOwor ICAgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91 aS93ZWJ1aS9zaWRlX3BhbmVsL3BlcmZvcm1hbmNlX2NvbnRyb2xzL3BlcmZvcm1hbmNlX3NpZGVf cGFuZWxfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nl ci91aS93ZWJ1aS9zaWRlX3BhbmVsL3BlcmZvcm1hbmNlX2NvbnRyb2xzL3BlcmZvcm1hbmNlX3Np ZGVfcGFuZWxfdWkuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvd2VidWkvc2lkZV9wYW5lbC9wZXJmb3JtYW5jZV9jb250cm9scy9wZXJmb3JtYW5jZV9zaWRl X3BhbmVsX3VpLmguY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDA6NTkuMDAwMDAwMDAwICswMjAw CisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRl X3BhbmVsL3BlcmZvcm1hbmNlX2NvbnRyb2xzL3BlcmZvcm1hbmNlX3NpZGVfcGFuZWxfdWkuaAky MDI0LTA2LTAyIDIzOjUxOjI1LjU0MDkxNjYzMCArMDIwMAorQEAgLTQxLDcgKzQxLDcgQEAgY2xh c3MgUGVyZm9ybWFuY2VTaWRlUGFuZWxVSQorICAgICAgIG1vam86OlBlbmRpbmdSZWNlaXZlcjxj b2xvcl9jaGFuZ2VfbGlzdGVuZXI6Om1vam9tOjpQYWdlSGFuZGxlcj4KKyAgICAgICAgICAgcGVu ZGluZ19yZWNlaXZlcik7CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdl YlVJTmFtZSgpIHsgcmV0dXJuICJQZXJmb3JtYW5jZVNpZGVQYW5lbCI7IH0KKysgIHN0YXRpYyBj b25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiUGVyZm9ybWFuY2VTaWRl UGFuZWwiOyB9CisgCisgIHByaXZhdGU6CisgICAvLyBzaWRlX3BhbmVsOjptb2pvbTo6UGVyZm9y bWFuY2VQYWdlSGFuZGxlckZhY3Rvcnk6CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZF9hbnl0aGluZy9yZWFkX2Fu eXRoaW5nX3VudHJ1c3RlZF91aS5oLmNvbnN0ZXhwciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvcmVhZF9hbnl0aGluZy9yZWFkX2FueXRo aW5nX3VudHJ1c3RlZF91aS5oCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3JlYWRfYW55dGhpbmcvcmVhZF9hbnl0aGluZ191bnRy dXN0ZWRfdWkuaC5jb25zdGV4cHIJMjAyNC0wNS0yOSAxODowMTowMC4wMDAwMDAwMDAgKzAyMDAK KysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVf cGFuZWwvcmVhZF9hbnl0aGluZy9yZWFkX2FueXRoaW5nX3VudHJ1c3RlZF91aS5oCTIwMjQtMDYt MDIgMjM6NTE6MjUuNTQxOTE2NjU0ICswMjAwCitAQCAtNTUsNyArNTUsNyBAQCBjbGFzcyBSZWFk QW55dGhpbmdVbnRydXN0ZWRVSQorICAgICAgIG1vam86OlBlbmRpbmdSZWNlaXZlcjxyZWFkX2Fu eXRoaW5nOjptb2pvbTo6VW50cnVzdGVkUGFnZUhhbmRsZXJGYWN0b3J5PgorICAgICAgICAgICBy ZWNlaXZlcik7CisgCistICBzdGF0aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFt ZSgpIHsKKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7CisgICAg IHJldHVybiAiUmVhZEFueXRoaW5nVW50cnVzdGVkIjsKKyAgIH0KKyAKK2RpZmYgLXVwIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9yZWFk aW5nX2xpc3QvcmVhZGluZ19saXN0X3VpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9yZWFkaW5nX2xpc3QvcmVhZGlu Z19saXN0X3VpLmgKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL3NpZGVfcGFuZWwvcmVhZGluZ19saXN0L3JlYWRpbmdfbGlzdF91aS5oLmNvbnN0ZXhw cgkyMDI0LTA1LTI5IDE4OjAxOjAwLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4w LjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2lkZV9wYW5lbC9yZWFkaW5nX2xpc3Qv cmVhZGluZ19saXN0X3VpLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41NDE5MTY2NTQgKzAyMDAKK0BA IC01OCw3ICs1OCw3IEBAIGNsYXNzIFJlYWRpbmdMaXN0VUkgOiBwdWJsaWMgVG9wQ2hyb21lV2UK KyAKKyAgIHZvaWQgU2V0QWN0aXZlVGFiVVJMKGNvbnN0IEdVUkwmIHVybCk7CisgCistICBzdGF0 aWMgY29uc3RleHByIHN0ZDo6c3RyaW5nIEdldFdlYlVJTmFtZSgpIHsgcmV0dXJuICJSZWFkaW5n TGlzdCI7IH0KKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJl dHVybiAiUmVhZGluZ0xpc3QiOyB9CisgCisgIHByaXZhdGU6CisgICAvLyByZWFkaW5nX2xpc3Q6 Om1vam9tOjpQYWdlSGFuZGxlckZhY3Rvcnk6CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvdXNlcl9ub3Rlcy91c2VyX25v dGVzX3NpZGVfcGFuZWxfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci91aS93ZWJ1aS9zaWRlX3BhbmVsL3VzZXJfbm90ZXMvdXNlcl9ub3Rlc19zaWRl X3BhbmVsX3VpLmgKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3Vp L3dlYnVpL3NpZGVfcGFuZWwvdXNlcl9ub3Rlcy91c2VyX25vdGVzX3NpZGVfcGFuZWxfdWkuaC5j b25zdGV4cHIJMjAyNC0wNS0yOSAxODowMTowMC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NpZGVfcGFuZWwvdXNlcl9u b3Rlcy91c2VyX25vdGVzX3NpZGVfcGFuZWxfdWkuaAkyMDI0LTA2LTAyIDIzOjUxOjI1LjU0MTkx NjY1NCArMDIwMAorQEAgLTM1LDcgKzM1LDcgQEAgY2xhc3MgVXNlck5vdGVzU2lkZVBhbmVsVUkK KyAKKyAgIHZvaWQgc2V0X2Jyb3dzZXIoQnJvd3NlciogYnJvd3NlcikgeyBicm93c2VyXyA9IGJy b3dzZXI7IH0KKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1l KCkgeyByZXR1cm4gIlVzZXJOb3Rlc1NpZGVQYW5lbCI7IH0KKysgIHN0YXRpYyBjb25zdCBzdGQ6 OnN0cmluZyBHZXRXZWJVSU5hbWUoKSB7IHJldHVybiAiVXNlck5vdGVzU2lkZVBhbmVsIjsgfQor IAorICBwcml2YXRlOgorICAgLy8gdXNlcl9ub3Rlczo6bW9qb206OlVzZXJOb3Rlc1BhZ2VIYW5k bGVyRmFjdG9yeQorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nl ci91aS93ZWJ1aS90YWJfc2VhcmNoL3RhYl9zZWFyY2hfdWkuaC5jb25zdGV4cHIgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS90YWJfc2VhcmNoL3RhYl9zZWFy Y2hfdWkuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi dWkvdGFiX3NlYXJjaC90YWJfc2VhcmNoX3VpLmguY29uc3RleHByCTIwMjQtMDUtMjkgMTg6MDE6 MDAuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci91aS93ZWJ1aS90YWJfc2VhcmNoL3RhYl9zZWFyY2hfdWkuaAkyMDI0LTA2LTAyIDIzOjUx OjI1LjU0MjkxNjY3NyArMDIwMAorQEAgLTU4LDcgKzU4LDcgQEAgY2xhc3MgVGFiU2VhcmNoVUkg OiBwdWJsaWMgVG9wQ2hyb21lV2ViVQorICAgICByZXR1cm4gcGFnZV9oYW5kbGVyXy5nZXQoKTsK KyAgIH0KKyAKKy0gIHN0YXRpYyBjb25zdGV4cHIgc3RkOjpzdHJpbmcgR2V0V2ViVUlOYW1lKCkg eyByZXR1cm4gIlRhYlNlYXJjaCI7IH0KKysgIHN0YXRpYyBjb25zdCBzdGQ6OnN0cmluZyBHZXRX ZWJVSU5hbWUoKSB7IHJldHVybiAiVGFiU2VhcmNoIjsgfQorIAorICBwcml2YXRlOgorICAgLy8g dGFiX3NlYXJjaDo6bW9qb206OlBhZ2VIYW5kbGVyRmFjdG9yeQorZGlmZiAtdXAgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9kYXRhX21vZGVs L2F1dG9maWxsX2kxOG5fYXBpLmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29t cG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZGF0YV9tb2RlbC9hdXRvZmlsbF9pMThuX2Fw aS5oCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5fYXBpLmguY29uc3RleHByCTIwMjQtMDUt MjkgMTg6MDE6MDUuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j b21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9kYXRhX21vZGVsL2F1dG9maWxsX2kxOG5f YXBpLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41NDI5MTY2NzcgKzAyMDAKK0BAIC0xNiw4ICsxNiw4 IEBAIG5hbWVzcGFjZSBhdXRvZmlsbDo6aTE4bl9tb2RlbF9kZWZpbml0aW8KKyAvLyBDb3VudHJ5 IGNvZGUgdGhhdCByZXByZXNlbnRzIGF1dG9maWxsJ3MgbGVnYWN5IGFkZHJlc3MgaGllcmFyY2h5 IG1vZGVsIGFzCisgLy8gc3RvcmVkIGBrQXV0b2ZpbGxNb2RlbFJ1bGVzYC4gQXMgYSB3b3JrYXJv dW5kIGZvciBHQ0Mgd2UgZGVjbGFyZSB0aGUKKyAvLyBzdGQ6OnN0cmluZyBjb25zdGV4cHIgZmly c3QuCistY29uc3RleHByIGlubGluZSBzdGQ6OnN0cmluZyBrTGVnYWN5SGllcmFyY2h5Q291bnRy eUNvZGVTdHJpbmd7IlhYIn07CistY29uc3RleHByIEFkZHJlc3NDb3VudHJ5Q29kZSBrTGVnYWN5 SGllcmFyY2h5Q291bnRyeUNvZGUgPQorK2NvbnN0IGlubGluZSBzdGQ6OnN0cmluZyBrTGVnYWN5 SGllcmFyY2h5Q291bnRyeUNvZGVTdHJpbmd7IlhYIn07CisrY29uc3QgQWRkcmVzc0NvdW50cnlD b2RlIGtMZWdhY3lIaWVyYXJjaHlDb3VudHJ5Q29kZSA9CisgICAgIEFkZHJlc3NDb3VudHJ5Q29k ZShrTGVnYWN5SGllcmFyY2h5Q291bnRyeUNvZGVTdHJpbmcpOworIAorIC8vIENyZWF0ZXMgYW4g aW5zdGFuY2Ugb2YgdGhlIGFkZHJlc3MgaGllcmFyY2h5IG1vZGVsIGNvcnJlc3BvbmRpbmcgdG8g dGhlCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwv Y29yZS9icm93c2VyL2Zvcm1fcGFyc2luZy90cmFuc3BpbGVfcmVnZXhfcGF0dGVybnMucHkuY29u c3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jy b3dzZXIvZm9ybV9wYXJzaW5nL3RyYW5zcGlsZV9yZWdleF9wYXR0ZXJucy5weQorLS0tIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvZm9ybV9w YXJzaW5nL3RyYW5zcGlsZV9yZWdleF9wYXR0ZXJucy5weS5jb25zdGV4cHIJMjAyNC0wNS0yOSAx ODowMTowNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBv bmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL2Zvcm1fcGFyc2luZy90cmFuc3BpbGVfcmVnZXhf cGF0dGVybnMucHkJMjAyNC0wNi0wMiAyMzo1MTozNi4zMjIxNzI3MzkgKzAyMDAKK0BAIC0xLDQg KzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL29wdC9yaC9yaC1weXRob24zOC9y b290L3Vzci9iaW4vcHl0aG9uCisgCisgIyBDb3B5cmlnaHQgMjAyMCBUaGUgQ2hyb21pdW0gQXV0 aG9ycworICMgVXNlIG9mIHRoaXMgc291cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5 bGUgbGljZW5zZSB0aGF0IGNhbiBiZQorQEAgLTU0LDcgKzU0LDcgQEAgZGVmIGdlbmVyYXRlX21h dGNoaW5nX3BhdHRlcm5fZXF1YWxzKG5hbQorICAgeWllbGQgJy8vIENoZWNrcyBpZiBhbGwgdGhl IG1hdGNoaW5nIHBhdHRlcm5zIGZvciB0aGUgZ2l2ZW4gUGF0dGVyblNvdXJjZXMnCisgICB5aWVs ZCAnLy8gYW5kIGxhbmd1YWdlIGFyZSB0aGUgc2FtZSAtIG1lYW5pbmcgdGhhdCBjb21wdXRpbmcg cHJlZGljdGlvbnMgZm9yJworICAgeWllbGQgJy8vIGJvdGggaXMgdW5uZWNlc3NhcnksIHNpbmNl IGl0IHdpbGwgeWllbGQgdGhlIHNhbWUgcmVzdWx0LicKKy0gIHlpZWxkICdjb25zdGV4cHIgYm9v bCBBcmVNYXRjaGluZ1BhdHRlcm5zRXF1YWxJbXBsKFBhdHRlcm5Tb3VyY2UgYSwnCisrICB5aWVs ZCAnY29uc3QgYm9vbCBBcmVNYXRjaGluZ1BhdHRlcm5zRXF1YWxJbXBsKFBhdHRlcm5Tb3VyY2Ug YSwnCisgICB5aWVsZCAnICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBQYXR0ZXJuU291cmNlIGIsJworICAgeWllbGQgJyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgTGFuZ3VhZ2VDb2RlIGxhbmdfY29kZSkgeycKKyAgIHlpZWxkICcg IGlmIChhID09IGIpIHsnCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVu dHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2ZW50LmguY29uc3RleHByIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0 cmljcy9sb2dfZXZlbnQuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9h dXRvZmlsbC9jb3JlL2Jyb3dzZXIvbWV0cmljcy9sb2dfZXZlbnQuaC5jb25zdGV4cHIJMjAyNC0w NS0yOSAxODowMTowNS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL21ldHJpY3MvbG9nX2V2ZW50LmgJMjAy NC0wNi0wMiAyMzo1MToyNS41NDI5MTY2NzcgKzAyMDAKK0BAIC01Nyw3ICs1Nyw3IEBAIHN0cnVj dCBJc1JlcXVpcmVkIHsKKyAgIC8vIFRoaXMgZnVuY3Rpb24gaXMgbm90IGRlZmluZWQgYW5kIGNv bnN0ZXZhbC4gVGhlcmVmb3JlLCBhbnkgZXZhbHVhdGlvbiB3aWxsCisgICAvLyBmYWlsIGFuZCBm YWlsIGF0IGNvbXBpbGUgdGltZS4KKyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLSAgY29uc3Rl dmFsIG9wZXJhdG9yIFQoKTsgIC8vIE5PTElOVAorKyAgb3BlcmF0b3IgVCgpOyAgLy8gTk9MSU5U CisgfTsKKyAKKyB9ICAvLyBuYW1lc3BhY2UgaW50ZXJuYWwKK2RpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29tcG9uZW50cy9oaXN0b3J5L2NvcmUvYnJvd3Nlci9oaXN0b3J5X3R5cGVz LmguY29uc3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9oaXN0b3J5L2Nv cmUvYnJvd3Nlci9oaXN0b3J5X3R5cGVzLmgKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nv bXBvbmVudHMvaGlzdG9yeS9jb3JlL2Jyb3dzZXIvaGlzdG9yeV90eXBlcy5oLmNvbnN0ZXhwcgky MDI0LTA1LTI5IDE4OjAxOjA2LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY29tcG9uZW50cy9oaXN0b3J5L2NvcmUvYnJvd3Nlci9oaXN0b3J5X3R5cGVzLmgJMjAy NC0wNi0wMiAyMzo1MToyNS41NDI5MTY2NzcgKzAyMDAKK0BAIC03MCw3ICs3MCw3IEBAIGNvbnN0 ZXhwciBWaXNpdGVkTGlua0lEIGtJbnZhbGlkVmlzaXRlZEwKKyB0eXBlZGVmIHN0ZDo6bWFwPFZp c2l0SUQsIFZpc2l0U291cmNlPiBWaXNpdFNvdXJjZU1hcDsKKyAKKyAvLyBDb25zdGFudCB1c2Vk IHRvIHJlcHJlc2VudCB0aGF0IG5vIGFwcF9pZCBpcyB1c2VkIGZvciBtYXRjaGluZy4KKy1pbmxp bmUgY29uc3RleHByIHN0ZDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IGtOb0FwcElkRmlsdGVyID0g c3RkOjpudWxsb3B0OworK2lubGluZSBjb25zdCBzdGQ6Om9wdGlvbmFsPHN0ZDo6c3RyaW5nPiBr Tm9BcHBJZEZpbHRlciA9IHN0ZDo6bnVsbG9wdDsKKyAKKyAvLyBWaXNpdFJvdyAtLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvb21uaWJveC9i cm93c2VyL29uX2RldmljZV90YWlsX21vZGVsX3NlcnZpY2UuY2MuY29uc3RleHByIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9vbW5pYm94L2Jyb3dzZXIvb25fZGV2aWNlX3RhaWxf bW9kZWxfc2VydmljZS5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9v bW5pYm94L2Jyb3dzZXIvb25fZGV2aWNlX3RhaWxfbW9kZWxfc2VydmljZS5jYy5jb25zdGV4cHIJ MjAyNC0wNS0yOSAxODowMTowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbXBvbmVudHMvb21uaWJveC9icm93c2VyL29uX2RldmljZV90YWlsX21vZGVsX3Nl cnZpY2UuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41NDM5MTY3MDIgKzAyMDAKK0BAIC0zMCw3ICsz MCw3IEBAIG5hbWVzcGFjZSB7CisgLy8gVGhlIG1heGltdW0gaWRsZSB0aW1lIGJlZm9yZSB0aGUg bW9kZWwgZXhlY3V0b3IgaXMgdW5sb2FkZWQgZnJvbSBtZW1vcnkuCisgY29uc3RleHByIGJhc2U6 OlRpbWVEZWx0YSBrTWF4RXhlY3V0b3JJZGxlU2Vjb25kcyA9IGJhc2U6OlNlY29uZHMoNjApOwor IC8vIENvbnN0YW50cyBmb3IgVEZsaXRlIG1vZGVsIHZhbGlkYXRpb24uCistY29uc3RleHByIHN0 ZDo6c3RyaW5nIGtUZXN0UHJlZml4ID0gImZhY2UiOworK2NvbnN0IHN0ZDo6c3RyaW5nIGtUZXN0 UHJlZml4ID0gImZhY2UiOworIGNvbnN0ZXhwciBzdGQ6OnN0cmluZ192aWV3IGtNb2RlbFZhbGlk YXRpb25Td2l0Y2hOYW1lID0KKyAgICAgIm9tbmlib3gtb24tZGV2aWNlLXRhaWwtbW9kZWwtdmFs aWRhdGlvbiI7CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3NlcnZpY2VzL25l dHdvcmsvc2hhcmVkX2RpY3Rpb25hcnkvc2ltcGxlX3VybF9wYXR0ZXJuX21hdGNoZXIuY2MuY29u c3RleHByIGNocm9taXVtLTEyNi4wLjY0NzguMjYvc2VydmljZXMvbmV0d29yay9zaGFyZWRfZGlj dGlvbmFyeS9zaW1wbGVfdXJsX3BhdHRlcm5fbWF0Y2hlci5jYworLS0tIGNocm9taXVtLTEyNi4w LjY0NzguMjYvc2VydmljZXMvbmV0d29yay9zaGFyZWRfZGljdGlvbmFyeS9zaW1wbGVfdXJsX3Bh dHRlcm5fbWF0Y2hlci5jYy5jb25zdGV4cHIJMjAyNC0wNS0yOSAxODowMTozNi4wMDAwMDAwMDAg KzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3NlcnZpY2VzL25ldHdvcmsvc2hhcmVk X2RpY3Rpb25hcnkvc2ltcGxlX3VybF9wYXR0ZXJuX21hdGNoZXIuY2MJMjAyNC0wNi0wMiAyMzo1 MToyNS41NDM5MTY3MDIgKzAyMDAKK0BAIC0yOCwxNyArMjgsMTcgQEAgbmFtZXNwYWNlIG5ldHdv cmsgeworIG5hbWVzcGFjZSB7CisgCisgLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdn Lm9yZy8jZGVmYXVsdC1vcHRpb25zCistY29uc3RleHByIGxpYnVybHBhdHRlcm46Ok9wdGlvbnMg a0RlZmF1bHRPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIiLAorK2NvbnN0IGxpYnVybHBh dHRlcm46Ok9wdGlvbnMga0RlZmF1bHRPcHRpb25zID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIiLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucHJl Zml4X2xpc3QgPSAiIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgLnNlbnNpdGl2ZSA9IHRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdHJpY3QgPSB0cnVlfTsKKyAvLyBodHRwczov L3VybHBhdHRlcm4uc3BlYy53aGF0d2cub3JnLyNob3N0bmFtZS1vcHRpb25zCistY29uc3RleHBy IGxpYnVybHBhdHRlcm46Ok9wdGlvbnMga0hvc3RuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xp c3QgPSAiLiIsCisrY29uc3QgbGlidXJscGF0dGVybjo6T3B0aW9ucyBrSG9zdG5hbWVPcHRpb25z ID0gey5kZWxpbWl0ZXJfbGlzdCA9ICIuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIC5wcmVmaXhfbGlzdCA9ICIiLAorICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLnNlbnNpdGl2ZSA9IHRy dWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAuc3RyaWN0ID0gdHJ1ZX07CisgLy8gaHR0cHM6Ly91cmxwYXR0ZXJuLnNwZWMud2hhdHdnLm9y Zy8jcGF0aG5hbWUtb3B0aW9ucworLWNvbnN0ZXhwciBsaWJ1cmxwYXR0ZXJuOjpPcHRpb25zIGtQ YXRobmFtZU9wdGlvbnMgPSB7LmRlbGltaXRlcl9saXN0ID0gIi8iLAorK2NvbnN0IGxpYnVybHBh dHRlcm46Ok9wdGlvbnMga1BhdGhuYW1lT3B0aW9ucyA9IHsuZGVsaW1pdGVyX2xpc3QgPSAiLyIs CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAu cHJlZml4X2xpc3QgPSAiLyIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAuc2Vuc2l0aXZlID0gdHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC5zdHJpY3QgPSB0cnVlfTsKCmRpZmYg LS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LWluY2x1ZGUtZmNudGwtbWVtZmQucGF0Y2ggYi9jaHJv bWl1bS0xMjYtZWw3LWluY2x1ZGUtZmNudGwtbWVtZmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2 NDQKaW5kZXggMDAwMDAwMC4uM2JhZmNhNAotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEy Ni1lbDctaW5jbHVkZS1mY250bC1tZW1mZC5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitkaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L3dheWxhbmQvc3JjL2N1cnNvci9v cy1jb21wYXRpYmlsaXR5LmMuZWw3LW1lbWZkLWZjbnRsLWluY2x1ZGUgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi90aGlyZF9wYXJ0eS93YXlsYW5kL3NyYy9jdXJzb3Ivb3MtY29tcGF0aWJpbGl0eS5j CistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS93YXlsYW5kL3NyYy9jdXJz b3Ivb3MtY29tcGF0aWJpbGl0eS5jLmVsNy1tZW1mZC1mY250bC1pbmNsdWRlCTIwMjQtMDUtMjkg MTg6MDM6MDguMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGly ZF9wYXJ0eS93YXlsYW5kL3NyYy9jdXJzb3Ivb3MtY29tcGF0aWJpbGl0eS5jCTIwMjQtMDYtMDIg MTU6MTM6MjEuNjM2NjM4MDY2ICswMjAwCitAQCAtMjksNyArMjksOCBAQAorIAorICNpbmNsdWRl IDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CistI2luY2x1ZGUgPGZjbnRsLmg+ CisrI2luY2x1ZGUgPGxpbnV4L2ZjbnRsLmg+IC8vIGZvciBGX1NFQUxfU0hSSU5LLCBGX0FERF9T RUFMUywgRl9TRUFMX1NFQUwKKysjaW5jbHVkZSA8bGludXgvbWVtZmQuaD4gLy8gZm9yIE1GRF9D TE9FWEVDCisgI2luY2x1ZGUgPGVycm5vLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNs dWRlIDxzdHJpbmcuaD4KK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFy dHkvd2F5bGFuZC9zcmMvc3JjL3dheWxhbmQtc2htLmMuZWw3LW1lbWZkLWZjbnRsLWluY2x1ZGUg Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS93YXlsYW5kL3NyYy9zcmMvd2F5bGFu ZC1zaG0uYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvd2F5bGFuZC9z cmMvc3JjL3dheWxhbmQtc2htLmMuZWw3LW1lbWZkLWZjbnRsLWluY2x1ZGUJMjAyNC0wNS0yOSAx ODowMzowOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJk X3BhcnR5L3dheWxhbmQvc3JjL3NyYy93YXlsYW5kLXNobS5jCTIwMjQtMDYtMDIgMTU6MTM6MjEu NjM1NjM4MDQ1ICswMjAwCitAQCAtNDQsNyArNDQsNyBAQAorICNpbmNsdWRlIDxzaWduYWwuaD4K KyAjaW5jbHVkZSA8cHRocmVhZC5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorLSNpbmNsdWRlIDxm Y250bC5oPgorKyNpbmNsdWRlIDxsaW51eC9mY250bC5oPgorIAorICNpbmNsdWRlICJ3YXlsYW5k LW9zLmgiCisgI2luY2x1ZGUgIndheWxhbmQtdXRpbC5oIgorZGlmZiAtdXAgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi91aS9vem9uZS9wbGF0Zm9ybS93YXlsYW5kL2hvc3QvendwX3RleHRfaW5wdXRf d3JhcHBlcl92MS5jYy5lbDctbWVtZmQtZmNudGwtaW5jbHVkZSBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L3VpL296b25lL3BsYXRmb3JtL3dheWxhbmQvaG9zdC96d3BfdGV4dF9pbnB1dF93cmFwcGVy X3YxLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9vem9uZS9wbGF0Zm9ybS93YXls YW5kL2hvc3QvendwX3RleHRfaW5wdXRfd3JhcHBlcl92MS5jYy5lbDctbWVtZmQtZmNudGwtaW5j bHVkZQkyMDI0LTA2LTAyIDE1OjEzOjIxLjYzNjYzODA2NiArMDIwMAorKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdWkvb3pvbmUvcGxhdGZvcm0vd2F5bGFuZC9ob3N0L3p3cF90ZXh0X2lucHV0 X3dyYXBwZXJfdjEuY2MJMjAyNC0wNi0wMiAxNToxNjoxOC4yMDI2Nzk5MDkgKzAyMDAKK0BAIC01 LDYgKzUsNyBAQAorICNpbmNsdWRlICJ1aS9vem9uZS9wbGF0Zm9ybS93YXlsYW5kL2hvc3Qvendw X3RleHRfaW5wdXRfd3JhcHBlcl92MS5oIgorIAorICNpbmNsdWRlIDxzeXMvbW1hbi5oPgorKyNp bmNsdWRlIDxsaW51eC9tZW1mZC5oPgorIAorICNpbmNsdWRlIDxzdHJpbmc+CisgI2luY2x1ZGUg PHN0cmluZ192aWV3PgorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi92OC9zcmMvYmFz ZS9wbGF0Zm9ybS9wbGF0Zm9ybS1wb3NpeC5jYy5lbDctbWVtZmQtZmNudGwtaW5jbHVkZSBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L3Y4L3NyYy9iYXNlL3BsYXRmb3JtL3BsYXRmb3JtLXBvc2l4LmNj CistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi92OC9zcmMvYmFzZS9wbGF0Zm9ybS9wbGF0Zm9y bS1wb3NpeC5jYy5lbDctbWVtZmQtZmNudGwtaW5jbHVkZQkyMDI0LTA1LTI5IDE4OjAzOjM1LjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdjgvc3JjL2Jhc2UvcGxh dGZvcm0vcGxhdGZvcm0tcG9zaXguY2MJMjAyNC0wNi0wMiAxNToxMzoyMS42MzU2MzgwNDUgKzAy MDAKK0BAIC02MCw2ICs2MCw3IEBACisgCisgI2lmIFY4X09TX0xJTlVYCisgI2luY2x1ZGUgPHN5 cy9wcmN0bC5oPiAgLy8gZm9yIHByY3RsCisrI2luY2x1ZGUgPGxpbnV4L21lbWZkLmg+IC8vIGZv ciBNRkRfQ0xPRVhFQworICNlbmRpZgorIAorICNpZiBkZWZpbmVkKFY4X09TX0ZVQ0hTSUEpCgpk aWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI2LWVsNy1pbnRlcmF0b3IucGF0Y2ggYi9jaHJvbWl1bS0x MjYtZWw3LWludGVyYXRvci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw Li45YjYzMGE4Ci0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI2LWVsNy1pbnRlcmF0b3Iu cGF0Y2gKQEAgLTAsMCArMSwxMiBAQAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9u ZXQvdGhpcmRfcGFydHkvcXVpY2hlL3NyYy9xdWljaGUvcXVpYy9jb3JlL3F1aWNfaW50ZXJ2YWxf ZGVxdWUuaC5tZSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L25ldC90aGlyZF9wYXJ0eS9xdWljaGUv c3JjL3F1aWNoZS9xdWljL2NvcmUvcXVpY19pbnRlcnZhbF9kZXF1ZS5oCistLS0gY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9uZXQvdGhpcmRfcGFydHkvcXVpY2hlL3NyYy9xdWljaGUvcXVpYy9jb3Jl L3F1aWNfaW50ZXJ2YWxfZGVxdWUuaC5tZQkyMDI0LTA2LTAzIDE1OjAxOjU0LjcyNDIwNzMyNCAr MDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvbmV0L3RoaXJkX3BhcnR5L3F1aWNoZS9z cmMvcXVpY2hlL3F1aWMvY29yZS9xdWljX2ludGVydmFsX2RlcXVlLmgJMjAyNC0wNi0wMyAxNDo1 ODoxNi4yNDQxODk3OTQgKzAyMDAKK0BAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgUVVJQ0hFX05P X0VYUE9SVCBRdWljSW50ZXJ2YWxEZXF1ZQorICAgLy8gZm9yIGVmZmljaWVudCBzdGQ6Omxvd2Vy X2JvdW5kKCkgY2FsbHMuCisgICBjbGFzcyBRVUlDSEVfTk9fRVhQT1JUIEl0ZXJhdG9yIHsKKyAg ICBwdWJsaWM6CistICAgIHVzaW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpyYW5kb21fYWNj ZXNzX2l0ZXJhdG9yX3RhZzsKKysgICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBzdGQ6OmZv cndhcmRfaXRlcmF0b3JfdGFnOworICAgICB1c2luZyB2YWx1ZV90eXBlID0gVDsKKyAgICAgdXNp bmcgZGlmZmVyZW5jZV90eXBlID0gc3RkOjpwdHJkaWZmX3Q7CisgICAgIHVzaW5nIHBvaW50ZXIg PSBUKjsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LW5vX21hdGNoaW5nX2NvbnN0cnVj dG9yLnBhdGNoIGIvY2hyb21pdW0tMTI2LWVsNy1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRj aApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGMzNTFhCi0tLSAvZGV2L251 bGwKKysrIGIvY2hyb21pdW0tMTI2LWVsNy1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRjaApA QCAtMCwwICsxLDE5NjEgQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS9h bGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2xpZ2h0d2Vp Z2h0X3F1YXJhbnRpbmUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25f YWxsb2MvbGlnaHR3ZWlnaHRfcXVhcmFudGluZS5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvYmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9j L2xpZ2h0d2VpZ2h0X3F1YXJhbnRpbmUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0w NS0yOSAxODowMDo0NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9s aWdodHdlaWdodF9xdWFyYW50aW5lLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDg3OTE1MzY2ICsw MjAwCitAQCAtODYsNyArODYsNyBAQCBib29sIExpZ2h0d2VpZ2h0UXVhcmFudGluZUJyYW5jaDo6 UXVhcmFuCisgCisgICAgIC8vIFB1dCB0aGUgZW50cnkgb250byB0aGUgbGlzdC4KKyAgICAgYnJh bmNoX3NpemVfaW5fYnl0ZXNfICs9IHVzYWJsZV9zaXplOworLSAgICBzbG90c18uZW1wbGFjZV9i YWNrKHNsb3Rfc3RhcnQsIHVzYWJsZV9zaXplKTsKKysgICAgc2xvdHNfLmVtcGxhY2VfYmFjaygp ID0ge3Nsb3Rfc3RhcnQsIHVzYWJsZV9zaXplfTsKKyAKKyAgICAgLy8gU3dhcCByYW5kb21seSBz byB0aGF0IHRoZSBxdWFyYW50aW5lIGxpc3QgcmVtYWluIHNodWZmbGVkLgorICAgICAvLyBUaGlz IGlzIG5vdCB1bmlmb3JtbHkgcmFuZG9tLCBidXQgc3VmZmljaWVudGx5IHJhbmRvbS4KK2RpZmYg LXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS9tZXRyaWNzL3BlcnNpc3RlbnRfaGlzdG9n cmFtX2FsbG9jYXRvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MKKy0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3Jh bV9hbGxvY2F0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo0 NS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Jhc2UvbWV0cmlj cy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0b3IuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40 ODc5MTUzNjYgKzAyMDAKK0BAIC0yMjUsMTMgKzIyNSwxMyBAQCBQZXJzaXN0ZW50U3BhcnNlSGlz dG9ncmFtRGF0YU1hbmFnZXI6OkxvCisgICAgIC8vIFRoZSBzYW1wbGUtcmVjb3JkIGNvdWxkIGJl IGZvciBhbnkgc3BhcnNlIGhpc3RvZ3JhbS4gQWRkIHRoZSByZWZlcmVuY2UKKyAgICAgLy8gdG8g dGhlIGFwcHJvcHJpYXRlIGNvbGxlY3Rpb24gZm9yIGxhdGVyIHVzZS4KKyAgICAgaWYgKGZvdW5k X2lkID09IG1hdGNoX2lkKSB7CistICAgICAgZm91bmRfcmVjb3Jkcy5lbXBsYWNlX2JhY2socmVm LCB2YWx1ZSk7CisrICAgICAgZm91bmRfcmVjb3Jkcy5lbXBsYWNlX2JhY2soKSA9IHtyZWYsIHZh bHVlfTsKKyAgICAgICBmb3VuZCA9IHRydWU7CisgICAgIH0gZWxzZSB7CisgICAgICAgc3RkOjp2 ZWN0b3I8UmVmZXJlbmNlQW5kU2FtcGxlPiogc2FtcGxlcyA9CisgICAgICAgICAgIEdldFNhbXBs ZU1hcFJlY29yZHNXaGlsZUxvY2tlZChmb3VuZF9pZCk7CisgICAgICAgQ0hFQ0soc2FtcGxlcyk7 CistICAgICAgc2FtcGxlcy0+ZW1wbGFjZV9iYWNrKHJlZiwgdmFsdWUpOworKyAgICAgIHNhbXBs ZXMtPmVtcGxhY2VfYmFjaygpID0ge3JlZiwgdmFsdWV9OworICAgICB9CisgICB9CisgCitkaWZm IC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNlL25peC9taW1l X3V0aWxfeGRnLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNlL25peC9taW1lX3V0 aWxfeGRnLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NDUuMDAw MDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNlL25peC9taW1lX3V0 aWxfeGRnLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDg4OTE1MzkxICswMjAwCitAQCAtNTYsNyAr NTYsNyBAQCB2b2lkIExvYWRBbGxNaW1lQ2FjaGVGaWxlcyhNaW1lVHlwZU1hcCYKKyAgIGZvciAo Y29uc3QgYXV0byYgcGF0aCA6IEdldFhER0RhdGFTZWFyY2hMb2NhdGlvbnMoZW52LmdldCgpKSkg eworICAgICBGaWxlUGF0aCBtaW1lX2NhY2hlID0gcGF0aC5BcHBlbmQoIm1pbWUvbWltZS5jYWNo ZSIpOworICAgICBpZiAoR2V0RmlsZUluZm8obWltZV9jYWNoZSwgJmluZm8pICYmIFBhcnNlTWlt ZVR5cGVzKG1pbWVfY2FjaGUsIG1hcCkpIHsKKy0gICAgICBmaWxlcy5lbXBsYWNlX2JhY2sobWlt ZV9jYWNoZSwgaW5mby5sYXN0X21vZGlmaWVkKTsKKysgICAgICBmaWxlcy5lbXBsYWNlX2JhY2so KSA9IHttaW1lX2NhY2hlLCBpbmZvLmxhc3RfbW9kaWZpZWR9OworICAgICB9CisgICB9CisgfQor ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xv Zy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Jhc2Uv dHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNl L3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1 LTI5IDE4OjAwOjQ1LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYv YmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40ODk5MTU0 MTQgKzAyMDAKK0BAIC0yMDI2LDggKzIwMjYsOCBAQCB2b2lkIFRyYWNlTG9nOjpTZXRUcmFjZUJ1 ZmZlckZvclRlc3RpbmcoCisgCisgdm9pZCBUcmFjZUxvZzo6T25TZXR1cChjb25zdCBwZXJmZXR0 bzo6RGF0YVNvdXJjZUJhc2U6OlNldHVwQXJncyYgYXJncykgeworICAgQXV0b0xvY2sgbG9jayh0 cmFja19ldmVudF9sb2NrXyk7CistICB0cmFja19ldmVudF9zZXNzaW9uc18uZW1wbGFjZV9iYWNr KGFyZ3MuaW50ZXJuYWxfaW5zdGFuY2VfaW5kZXgsICphcmdzLmNvbmZpZywKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5iYWNrZW5kX3R5cGUpOworKyAgdHJhY2tf ZXZlbnRfc2Vzc2lvbnNfLmVtcGxhY2VfYmFjaygpID0ge2FyZ3MuaW50ZXJuYWxfaW5zdGFuY2Vf aW5kZXgsICphcmdzLmNvbmZpZywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgYXJncy5iYWNrZW5kX3R5cGV9OworIH0KKyAKKyB2b2lkIFRyYWNlTG9nOjpPblN0YXJ0KGNv bnN0IHBlcmZldHRvOjpEYXRhU291cmNlQmFzZTo6U3RhcnRBcmdzJikgeworZGlmZiAtdXAgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90 aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1l X3Blcm1pc3Npb25fcHJvdmlkZXIuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9t ZS9icm93c2VyL2NvbnRlbnRfc2V0dGluZ3Mvb25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjUyLjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvY29udGVudF9z ZXR0aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjCTIwMjQtMDYtMDIgMjM6NTE6 MjUuNDg5OTE1NDE0ICswMjAwCitAQCAtMjU5LDggKzI1OSw4IEBAIHZvaWQgT25lVGltZVBlcm1p c3Npb25Qcm92aWRlcjo6T25TdXNwZW4KKyAKKyAgICAgICB3aGlsZSAocnVsZV9pdGVyYXRvciAm JiBydWxlX2l0ZXJhdG9yLT5IYXNOZXh0KCkpIHsKKyAgICAgICAgIGF1dG8gcnVsZSA9IHJ1bGVf aXRlcmF0b3ItPk5leHQoKTsKKy0gICAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2Jh Y2soc2V0dGluZ190eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRlcm4sCistICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuKTsKKysgICAg ICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2soKSA9IHtzZXR0aW5nX3R5cGUsIHJ1 bGUtPnByaW1hcnlfcGF0dGVybiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59OworICAgICAgICAgcGVybWlzc2lvbnM6OlBl cm1pc3Npb25VbWFVdGlsOjpSZWNvcmRPbmVUaW1lUGVybWlzc2lvbkV2ZW50KAorICAgICAgICAg ICAgIHNldHRpbmdfdHlwZSwKKyAgICAgICAgICAgICBwZXJtaXNzaW9uczo6T25lVGltZVBlcm1p c3Npb25FdmVudDo6RVhQSVJFRF9PTl9TVVNQRU5EKTsKK0BAIC0zNjIsOCArMzYyLDggQEAgdm9p ZCBPbmVUaW1lUGVybWlzc2lvblByb3ZpZGVyOjpEZWxldGVFbgorICAgICBhdXRvIHJ1bGUgPSBy dWxlX2l0ZXJhdG9yLT5OZXh0KCk7CisgICAgIGlmIChydWxlLT5wcmltYXJ5X3BhdHRlcm4uTWF0 Y2hlcyhvcmlnaW5fZ3VybCkgJiYKKyAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuLk1h dGNoZXMob3JpZ2luX2d1cmwpKSB7CistICAgICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2Vf YmFjaygKKy0gICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0 dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm4pOworKyAgICAgIHBhdHRlcm5zX3RvX2RlbGV0 ZS5lbXBsYWNlX2JhY2soKSA9IHsKKysgICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1 bGUtPnByaW1hcnlfcGF0dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59OworICAgICAgIHBl cm1pc3Npb25zOjpQZXJtaXNzaW9uVW1hVXRpbDo6UmVjb3JkT25lVGltZVBlcm1pc3Npb25FdmVu dCgKKyAgICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHRyaWdnZXJfZXZlbnQpOworICAg ICB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2RpcHMv ZGlwc19ib3VuY2VfZGV0ZWN0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9kaXBzL2RpcHNfYm91bmNlX2RldGVjdG9yLmNj CistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9kaXBzL2RpcHNfYm91 bmNlX2RldGVjdG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDYtMDMgMjM6Mzk6 MzAuNzc4Mjg1NzA4ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJv d3Nlci9kaXBzL2RpcHNfYm91bmNlX2RldGVjdG9yLmNjCTIwMjQtMDYtMDMgMjM6NDI6MTcuODcz MDM4MjE0ICswMjAwCitAQCAtNTExLDExICs1MTEsMTEgQEAgVXJsQW5kU291cmNlSWQgUmVkaXJl Y3RDaGFpbkRldGVjdG9yOjpHZQorICAgLy8gV2UgY2FuJ3QgdXNlIFJlbmRlckZyYW1lSG9zdDo6 R2V0TGFzdENvbW1pdHRlZFVSTCgpIGJlY2F1c2UgdGhhdCByZXR1cm5zIGFuCisgICAvLyBlbXB0 eSBVUkwgd2hpbGUgdGhlIHRhYiBpcyBjbG9zaW5nIChpLmUuIHdpdGhpbgorICAgLy8gV2ViQ29u dGVudHNPYnNlcnZlcjo6V2ViQ29udGVudHNEZXN0cm95ZWQpCistICByZXR1cm4gVXJsQW5kU291 cmNlSWQoCisrICByZXR1cm4gVXJsQW5kU291cmNlSWR7CisgICAgICAgV2ViQ29udGVudHNPYnNl cnZlcjo6d2ViX2NvbnRlbnRzKCktPkdldExhc3RDb21taXR0ZWRVUkwoKSwKKyAgICAgICBXZWJD b250ZW50c09ic2VydmVyOjp3ZWJfY29udGVudHMoKQorICAgICAgICAgICAtPkdldFByaW1hcnlN YWluRnJhbWUoKQorLSAgICAgICAgICAtPkdldFBhZ2VVa21Tb3VyY2VJZCgpKTsKKysgICAgICAg ICAgLT5HZXRQYWdlVWttU291cmNlSWQoKX07CisgfQorIAorIHZvaWQgUmVkaXJlY3RDaGFpbkRl dGVjdG9yOjpIYW5kbGVSZWRpcmVjdENoYWluKAorQEAgLTYxOSw4ICs2MTksOCBAQCB2b2lkIERJ UFNCb3VuY2VEZXRlY3Rvcjo6RGlkU3RhcnROYXZpZ2F0CisgICAgICAgIWNsaWVudF9kZXRlY3Rp b25fc3RhdGVfLmhhc192YWx1ZSgpKSB7CisgICAgIHNlcnZlcl9ib3VuY2VfZGV0ZWN0aW9uX3N0 YXRlLT5uYXZpZ2F0aW9uX3N0YXJ0ID0KKyAgICAgICAgIGRlbGVnYXRlXy0+R2V0TGFzdENvbW1p dHRlZFVSTCgpLnVybC5pc19lbXB0eSgpCistICAgICAgICAgICAgPyBVcmxBbmRTb3VyY2VJZChu YXZpZ2F0aW9uX2hhbmRsZS0+R2V0SW5pdGlhdG9yKCksCistICAgICAgICAgICAgICAgICAgICAg ICAgICAgICB1a206OmtJbnZhbGlkU291cmNlSWQpCisrICAgICAgICAgICAgPyBVcmxBbmRTb3Vy Y2VJZHtuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0SW5pdGlhdG9yKCksCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICB1a206OmtJbnZhbGlkU291cmNlSWR9CisgICAgICAgICAgICAgOiBkZWxl Z2F0ZV8tPkdldExhc3RDb21taXR0ZWRVUkwoKTsKKyAgICAgcmV0dXJuOworICAgfQorQEAgLTk2 MSw4ICs5NjEsOCBAQCB2b2lkIERJUFNCb3VuY2VEZXRlY3Rvcjo6RGlkRmluaXNoTmF2aWdhCisg CisgICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGFjY2Vzc190eXBlcy5zaXplKCkgLSAxOyBpKysp IHsKKyAgICAgcmVkaXJlY3RzLnB1c2hfYmFjayhzdGQ6Om1ha2VfdW5pcXVlPERJUFNSZWRpcmVj dEluZm8+KAorLSAgICAgICAgLyp1cmw9Ki9VcmxBbmRTb3VyY2VJZChuYXZpZ2F0aW9uX2hhbmRs ZS0+R2V0UmVkaXJlY3RDaGFpbigpW2ldLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICBuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0UmVkaXJlY3RTb3VyY2VJZChpKSksCisrICAgICAgICAv KnVybD0qL1VybEFuZFNvdXJjZUlke25hdmlnYXRpb25faGFuZGxlLT5HZXRSZWRpcmVjdENoYWlu KClbaV0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25faGFuZGxl LT5HZXRSZWRpcmVjdFNvdXJjZUlkKGkpfSwKKyAgICAgICAgIC8qcmVkaXJlY3RfdHlwZT0qL0RJ UFNSZWRpcmVjdFR5cGU6OmtTZXJ2ZXIsCisgICAgICAgICAvKmFjY2Vzc190eXBlPSovYWNjZXNz X3R5cGVzW2ldLAorICAgICAgICAgLyp0aW1lPSovY2xvY2tfLT5Ob3coKSkpOworQEAgLTk3MSwx NiArOTcxLDE2IEBAIHZvaWQgRElQU0JvdW5jZURldGVjdG9yOjpEaWRGaW5pc2hOYXZpZ2EKKyAg IGlmIChuYXZpZ2F0aW9uX2hhbmRsZS0+SGFzQ29tbWl0dGVkKCkpIHsKKyAgICAgY29tbWl0dGVk X3JlZGlyZWN0X2NvbnRleHRfLkFwcGVuZENvbW1pdHRlZCgKKyAgICAgICAgIHN0ZDo6bW92ZShz ZXJ2ZXJfc3RhdGUtPm5hdmlnYXRpb25fc3RhcnQpLCBzdGQ6Om1vdmUocmVkaXJlY3RzKSwKKy0g ICAgICAgIFVybEFuZFNvdXJjZUlkKG5hdmlnYXRpb25faGFuZGxlLT5HZXRVUkwoKSwKKy0gICAg ICAgICAgICAgICAgICAgICAgIG5hdmlnYXRpb25faGFuZGxlLT5HZXROZXh0UGFnZVVrbVNvdXJj ZUlkKCkpLAorKyAgICAgICAgVXJsQW5kU291cmNlSWR7bmF2aWdhdGlvbl9oYW5kbGUtPkdldFVS TCgpLAorKyAgICAgICAgICAgICAgICAgICAgICAgbmF2aWdhdGlvbl9oYW5kbGUtPkdldE5leHRQ YWdlVWttU291cmNlSWQoKX0sCisgICAgICAgICBjdXJyZW50X3BhZ2VfaGFzX3N0aWNreV9hY3Rp dmF0aW9uKTsKKyAgIH0gZWxzZSB7CisgICAgIC8vIEZvciB1bmNvbW1pdHRlZCBuYXZpZ2F0aW9u cywgdHJlYXQgdGhlIGxhc3QgVVJMIHZpc2l0ZWQgYXMgYSBzZXJ2ZXIKKyAgICAgLy8gcmVkaXJl Y3QsIHNvIGl0IGlzIGNvbnNpZGVyZWQgYSBwb3RlbnRpYWwgdHJhY2tlci4KKyAgICAgY29uc3Qg c2l6ZV90IGkgPSBhY2Nlc3NfdHlwZXMuc2l6ZSgpIC0gMTsKKyAgICAgcmVkaXJlY3RzLnB1c2hf YmFjayhzdGQ6Om1ha2VfdW5pcXVlPERJUFNSZWRpcmVjdEluZm8+KAorLSAgICAgICAgLyp1cmw9 Ki9VcmxBbmRTb3VyY2VJZChuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0UmVkaXJlY3RDaGFpbigpW2ld LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuYXZpZ2F0aW9uX2hhbmRsZS0+R2V0 UmVkaXJlY3RTb3VyY2VJZChpKSksCisrICAgICAgICAvKnVybD0qL1VybEFuZFNvdXJjZUlke25h dmlnYXRpb25faGFuZGxlLT5HZXRSZWRpcmVjdENoYWluKClbaV0sCisrICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIG5hdmlnYXRpb25faGFuZGxlLT5HZXRSZWRpcmVjdFNvdXJjZUlkKGkp fSwKKyAgICAgICAgIC8qcmVkaXJlY3RfdHlwZT0qL0RJUFNSZWRpcmVjdFR5cGU6OmtTZXJ2ZXIs CisgICAgICAgICAvKmFjY2Vzc190eXBlPSovYWNjZXNzX3R5cGVzW2ldLAorICAgICAgICAgLyp0 aW1lPSovY2xvY2tfLT5Ob3coKSkpOworZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j aHJvbWUvYnJvd3Nlci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFn ZW1lbnRfbmF2aWdhdGlvbl90aHJvdHRsZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9tYW5h Z2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxlLmNjCistLS0gY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFu YWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJvdHRsZS5jYy5ub19tYXRj aGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjUyLjAwMDAwMDAwMCArMDIwMAorKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9maWxl X21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUuY2MJMjAy NC0wNi0wMiAyMzo1MToyNS40ODk5MTU0MTQgKzAyMDAKK0BAIC02Nyw4ICs2Nyw4IEBAIGJhc2U6 OmZsYXRfbWFwPHN0ZDo6c3RyaW5nLCBTQU1MUHJvZmlsZUEKKyAgIC8vIFRPRE8oY3JidWcuY29t LzQwMjY3OTk2KTogQWRkIGFjdHVhbCBkb21haW5zIHdpdGggYXR0cmlidXRlIG5hbWVzLgorICAg cHJvZmlsZV9hdHRyaWJ1dGVzLT5pbnNlcnQoc3RkOjptYWtlX3BhaXIoCisgICAgICAgInN1cHBv cnRlZC50ZXN0IiwKKy0gICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXMoInBsYWNlaG9sZGVyTmFt ZSIsICJwbGFjZWhvbGRlckRvbWFpbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICJw bGFjZWhvbGRlclRva2VuIikpKTsKKysgICAgICBTQU1MUHJvZmlsZUF0dHJpYnV0ZXN7InBsYWNl aG9sZGVyTmFtZSIsICJwbGFjZWhvbGRlckRvbWFpbiIsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICJwbGFjZWhvbGRlclRva2VuIn0pKTsKKyAKKyAgIC8vIEV4dHJhY3QgZG9tYWlucyBh bmQgYXR0cmlidXRlcyBmcm9tIHRoZSBjb21tYW5kIGxpbmUgc3dpdGNoLgorICAgY29uc3QgYmFz ZTo6Q29tbWFuZExpbmUmIGNvbW1hbmRfbGluZSA9CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2Nocm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0 ZW1fYWNjZXNzX3Blcm1pc3Npb25fY29udGV4dC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL2ZpbGVfc3lzdGVtX2FjY2Vzcy9j aHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1pc3Npb25fY29udGV4dC5jYworLS0tIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvZmlsZV9zeXN0ZW1fYWNjZXNzL2Nocm9t ZV9maWxlX3N5c3RlbV9hY2Nlc3NfcGVybWlzc2lvbl9jb250ZXh0LmNjLm5vX21hdGNoaW5nX2Nv bnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTMuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21l X2ZpbGVfc3lzdGVtX2FjY2Vzc19wZXJtaXNzaW9uX2NvbnRleHQuY2MJMjAyNC0wNi0wMiAyMzo1 MToyNS40OTA5MTU0MzggKzAyMDAKK0BAIC0zODUsNyArMzg1LDcgQEAgYm9vbCBTaG91bGRCbG9j a0FjY2Vzc1RvUGF0aChjb25zdCBiYXNlOgorICAgICAgIERDSEVDSyhibG9jay5wYXRoKTsKKyAg ICAgICBibG9ja2VkX3BhdGggPSBiYXNlOjpGaWxlUGF0aChibG9jay5wYXRoKTsKKyAgICAgfQor LSAgICBydWxlcy5lbXBsYWNlX2JhY2soYmxvY2tlZF9wYXRoLCBibG9jay50eXBlKTsKKysgICAg cnVsZXMuZW1wbGFjZV9iYWNrKCkgPSB7YmxvY2tlZF9wYXRoLCBibG9jay50eXBlfTsKKyAgIH0K KyAKKyAgIGJhc2U6OkZpbGVQYXRoIG5lYXJlc3RfYW5jZXN0b3I7CitAQCAtMTY4NSwxMSArMTY4 NSwxMSBAQCB2b2lkIENocm9tZUZpbGVTeXN0ZW1BY2Nlc3NQZXJtaXNzaW9uQ29uCisgICAvLyBw cm9maWxlJ3MgZGlyZWN0b3J5LCBhc3N1bWluZyB0aGUgcHJvZmlsZSBkaXIgaXMgYSBjaGlsZCBv ZiB0aGUgdXNlciBkYXRhCisgICAvLyBkaXIuCisgICBzdGQ6OnZlY3RvcjxCbG9ja1BhdGhSdWxl PiBleHRyYV9ydWxlczsKKy0gIGV4dHJhX3J1bGVzLmVtcGxhY2VfYmFjayhwcm9maWxlXy0+R2V0 UGF0aCgpLkRpck5hbWUoKSwga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgZXh0cmFfcnVsZXMuZW1w bGFjZV9iYWNrKCkgPSB7cHJvZmlsZV8tPkdldFBhdGgoKS5EaXJOYW1lKCksIGtCbG9ja0FsbENo aWxkcmVufTsKKyAgIGlmIChnX2Jyb3dzZXJfcHJvY2Vzcy0+cHJvZmlsZV9tYW5hZ2VyKCkpIHsK Ky0gICAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNrKAorKyAgICBleHRyYV9ydWxlcy5lbXBsYWNl X2JhY2soKSA9IHsKKyAgICAgICAgIGdfYnJvd3Nlcl9wcm9jZXNzLT5wcm9maWxlX21hbmFnZXIo KS0+dXNlcl9kYXRhX2RpcigpLAorLSAgICAgICAga0Jsb2NrQWxsQ2hpbGRyZW4pOworKyAgICAg ICAga0Jsb2NrQWxsQ2hpbGRyZW59OworICAgfQorIAorICAgYmFzZTo6VGhyZWFkUG9vbDo6UG9z dFRhc2tBbmRSZXBseVdpdGhSZXN1bHQoCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L2Nocm9tZS9icm93c2VyL3BlcmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2Nh cmRlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9icm93c2VyL3BlcmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRl ci5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvcGVyZm9ybWFu Y2VfbWFuYWdlci9tZWNoYW5pc21zL3BhZ2VfZGlzY2FyZGVyLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTQuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5hZ2VyL21lY2hhbmlz bXMvcGFnZV9kaXNjYXJkZXIuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTA5MTU0MzggKzAyMDAK K0BAIC01Myw3ICs1Myw3IEBAIHN0ZDo6dmVjdG9yPFBhZ2VEaXNjYXJkZXI6OkRpc2NhcmRFdmVu dD4KKyAgICAgaWYgKGxpZmVjeWNsZV91bml0LT5EaXNjYXJkVGFiKAorICAgICAgICAgICAgIGRp c2NhcmRfcmVhc29uLAorICAgICAgICAgICAgIC8qbWVtb3J5X2Zvb3RwcmludF9lc3RpbWF0ZT0q L3Byb3h5LnNlY29uZCkpIHsKKy0gICAgICBkaXNjYXJkX2V2ZW50cy5lbXBsYWNlX2JhY2soYmFz ZTo6VGltZVRpY2tzOjpOb3coKSwgcHJveHkuc2Vjb25kKTsKKysgICAgICBkaXNjYXJkX2V2ZW50 cy5lbXBsYWNlX2JhY2soKSA9IHtiYXNlOjpUaW1lVGlja3M6Ok5vdygpLCBwcm94eS5zZWNvbmR9 OworICAgICB9CisgICB9CisgICByZXR1cm4gZGlzY2FyZF9ldmVudHM7CitkaWZmIC11cCBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3JlbmRlcmVyX2NvbnRleHRfbWVudS9y ZW5kZXJfdmlld19jb250ZXh0X21lbnUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVu ZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJv bWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51 LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTQuMDAwMDAwMDAw ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci9yZW5kZXJl cl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjCTIwMjQtMDYtMDIgMjM6 NTE6MjUuNDkyOTE1NDg2ICswMjAwCitAQCAtNDA0NCwxMCArNDA0NCwxMCBAQCB2b2lkIFJlbmRl clZpZXdDb250ZXh0TWVudTo6RXhlY09wZW5Db21wCisgICAgIGF1dG9maWxsOjpMb2NhbEZyYW1l VG9rZW4gZnJhbWVfdG9rZW4gPSBkcml2ZXItPkdldEZyYW1lVG9rZW4oKTsKKyAgICAgY2xpZW50 LT5HZXRNYW5hZ2VyKCkuT3BlbkNvbXBvc2UoCisgICAgICAgICAqZHJpdmVyLAorLSAgICAgICAg YXV0b2ZpbGw6OkZvcm1HbG9iYWxJZCgKKy0gICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2Zp bGw6OkZvcm1SZW5kZXJlcklkKHBhcmFtc18uZm9ybV9yZW5kZXJlcl9pZCkpLAorLSAgICAgICAg YXV0b2ZpbGw6OkZpZWxkR2xvYmFsSWQoCistICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9m aWxsOjpGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5kZXJlcl9pZCkpLAorKyAgICAg ICAgYXV0b2ZpbGw6OkZvcm1HbG9iYWxJZHsKKysgICAgICAgICAgICBmcmFtZV90b2tlbiwgYXV0 b2ZpbGw6OkZvcm1SZW5kZXJlcklkKHBhcmFtc18uZm9ybV9yZW5kZXJlcl9pZCl9LAorKyAgICAg ICAgYXV0b2ZpbGw6OkZpZWxkR2xvYmFsSWR7CisrICAgICAgICAgICAgZnJhbWVfdG9rZW4sIGF1 dG9maWxsOjpGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5kZXJlcl9pZCl9LAorICAg ICAgICAgY29tcG9zZTo6Q29tcG9zZU1hbmFnZXJJbXBsOjpVaUVudHJ5UG9pbnQ6OmtDb250ZXh0 TWVudSk7CisgICAgIEdldEJyb3dzZXIoKS0+d2luZG93KCktPk5vdGlmeVByb21vRmVhdHVyZVVz ZWQoCisgICAgICAgICBjb21wb3NlOjpmZWF0dXJlczo6a0VuYWJsZUNvbXBvc2UpOworZGlmZiAt dXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRv ZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL2F1dG9maWxsL2F1dG9maWxsX2Nv bnRleHRfbWVudV9tYW5hZ2VyLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv YnJvd3Nlci91aS9hdXRvZmlsbC9hdXRvZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjU4LjAwMDAwMDAwMCArMDIwMAor KysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0 b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTI5MTU0 ODYgKzAyMDAKK0BAIC0zODMsOCArMzgzLDggQEAgdm9pZCBBdXRvZmlsbENvbnRleHRNZW51TWFu YWdlcjo6RXhlY3V0ZQorICAgICBBdXRvZmlsbE1hbmFnZXImIG1hbmFnZXIpIHsKKyAgIGF1dG8m IGRyaXZlciA9IHN0YXRpY19jYXN0PENvbnRlbnRBdXRvZmlsbERyaXZlciY+KG1hbmFnZXIuZHJp dmVyKCkpOworICAgZHJpdmVyLmJyb3dzZXJfZXZlbnRzKCkuUmVuZGVyZXJTaG91bGRUcmlnZ2Vy U3VnZ2VzdGlvbnMoCistICAgICAgRmllbGRHbG9iYWxJZChkcml2ZXIuR2V0RnJhbWVUb2tlbigp LAorLSAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklkKHBhcmFtc18uZmllbGRfcmVu ZGVyZXJfaWQpKSwKKysgICAgICBGaWVsZEdsb2JhbElke2RyaXZlci5HZXRGcmFtZVRva2VuKCks CisrICAgICAgICAgICAgICAgICAgICBGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVsZF9yZW5k ZXJlcl9pZCl9LAorICAgICAgIEF1dG9maWxsU3VnZ2VzdGlvblRyaWdnZXJTb3VyY2U6OmtNYW51 YWxGYWxsYmFja1BheW1lbnRzKTsKKyAgIExvZ01hbnVhbEZhbGxiYWNrQ29udGV4dE1lbnVFbnRy eUFjY2VwdGVkKAorICAgICAgIHN0YXRpY19jYXN0PEJyb3dzZXJBdXRvZmlsbE1hbmFnZXImPiht YW5hZ2VyKSwKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9jbGllbnQuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9t ZV9vbW5pYm94X2NsaWVudC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jy b3dzZXIvdWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9jbGllbnQuY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1OC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hf Y2xpZW50LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDkyOTE1NDg2ICswMjAwCitAQCAtNTEyLDEw ICs1MTIsMTAgQEAgdm9pZCBDaHJvbWVPbW5pYm94Q2xpZW50OjpPbkF1dG9jb21wbGV0ZQorICAg ICAgICAgICAgICAgYWx0ZXJuYXRpdmVfbmF2X21hdGNoKTsKKyAKKyAgIC8vIFN0b3JlIHRoZSBk ZXRhaWxzIG5lY2Vzc2FyeSB0byBvcGVuIHRoZSBvbW5pYm94IG1hdGNoIHZpYSBicm93c2VyIGNv bW1hbmRzLgorLSAgbG9jYXRpb25fYmFyXy0+c2V0X25hdmlnYXRpb25fcGFyYW1zKExvY2F0aW9u QmFyOjpOYXZpZ2F0aW9uUGFyYW1zKAorKyAgbG9jYXRpb25fYmFyXy0+c2V0X25hdmlnYXRpb25f cGFyYW1zKExvY2F0aW9uQmFyOjpOYXZpZ2F0aW9uUGFyYW1zeworICAgICAgIGRlc3RpbmF0aW9u X3VybCwgZGlzcG9zaXRpb24sIHRyYW5zaXRpb24sIG1hdGNoX3NlbGVjdGlvbl90aW1lc3RhbXAs CisgICAgICAgZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aG91dF9zY2hlbWUsCistICAgICAg ZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aF9odHRwX3NjaGVtZSwgbWF0Y2guZXh0cmFfaGVh ZGVycykpOworKyAgICAgIGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhfaHR0cF9zY2hlbWUs IG1hdGNoLmV4dHJhX2hlYWRlcnN9KTsKKyAKKyAgIGlmIChicm93c2VyXykgeworICAgICBhdXRv IG5hdmlnYXRpb24gPSBjaHJvbWU6Ok9wZW5DdXJyZW50VVJMKGJyb3dzZXJfKTsKK2RpZmYgLXVw IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51 X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0 aW9uX3NlcnZpY2UuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIv dWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNlLmgubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9odWIvbWVudV9ub3RpZmlj YXRpb25fc2VydmljZS5oCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDkzOTE1NTA5ICswMjAwCitAQCAt MjQsNiArMjQsNyBAQCBzdHJ1Y3QgTWVudU5vdGlmaWNhdGlvbkVudHJ5IHsKKyAgIGludCBjb21t YW5kID0gMDsKKyAgIHN0ZDo6dTE2c3RyaW5nIGxhYmVsOworICAgc2FmZXR5X2h1Yjo6U2FmZXR5 SHViTW9kdWxlVHlwZSBtb2R1bGU7CisrICBNZW51Tm90aWZpY2F0aW9uRW50cnkoYXV0byBjLCBh dXRvIGwsIGF1dG8gbSkgOiBjb21tYW5kKGMpLCBsYWJlbChsKSwgbW9kdWxlKG0pIHsgfQorIH07 CisgCisgbmFtZXNwYWNlIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21l L2Jyb3dzZXIvdWkvdmlld3MvZnJhbWUvY29udGVudHNfbGF5b3V0X21hbmFnZXIuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91 aS92aWV3cy9mcmFtZS9jb250ZW50c19sYXlvdXRfbWFuYWdlci5jYworLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvZnJhbWUvY29udGVudHNfbGF5b3V0 X21hbmFnZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1OS4w MDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2Vy L3VpL3ZpZXdzL2ZyYW1lL2NvbnRlbnRzX2xheW91dF9tYW5hZ2VyLmNjCTIwMjQtMDYtMDIgMjM6 NTE6MjUuNDkzOTE1NTA5ICswMjAwCitAQCAtNDQsMjAgKzQ0LDIwIEBAIHZpZXdzOjpQcm9wb3Nl ZExheW91dCBDb250ZW50c0xheW91dE1hbmEKKyAKKyAgIC8vIERldlRvb2xzIGNhcmVzIGFib3V0 IHRoZSBzcGVjaWZpYyBwb3NpdGlvbiwgc28gd2UgaGF2ZSB0byBjb21wZW5zYXRlIFJUTAorICAg Ly8gbGF5b3V0IGhlcmUuCistICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAor KyAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgIGRldnRv b2xzX3ZpZXdfLmdldCgpLCBkZXZ0b29sc192aWV3Xy0+R2V0VmlzaWJsZSgpLAorICAgICAgIGhv c3RfdmlldygpLT5HZXRNaXJyb3JlZFJlY3QobmV3X2RldnRvb2xzX2JvdW5kcyksCistICAgICAg dmlld3M6OlNpemVCb3VuZHMoY29udGFpbmVyX3NpemUpKTsKKy0gIGxheW91dHMuY2hpbGRfbGF5 b3V0cy5lbXBsYWNlX2JhY2soCisrICAgICAgdmlld3M6OlNpemVCb3VuZHMoY29udGFpbmVyX3Np emUpfTsKKysgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAg ICBjb250ZW50c192aWV3Xy5nZXQoKSwgY29udGVudHNfdmlld18tPkdldFZpc2libGUoKSwKKyAg ICAgICBob3N0X3ZpZXcoKS0+R2V0TWlycm9yZWRSZWN0KG5ld19jb250ZW50c19ib3VuZHMpLAor LSAgICAgIHZpZXdzOjpTaXplQm91bmRzKGNvbnRhaW5lcl9zaXplKSk7CisrICAgICAgdmlld3M6 OlNpemVCb3VuZHMoY29udGFpbmVyX3NpemUpfTsKKyAKKyAgIC8vIEVudGVycHJpc2Ugd2F0ZXJt YXJrIHZpZXcgaXMgYWx3YXlzIG92ZXJsYWlkLCBldmVuIHdoZW4gZW1wdHkuCisgICBpZiAod2F0 ZXJtYXJrX3ZpZXdfKSB7CistICAgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2so CisrICAgIGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAg IHdhdGVybWFya192aWV3Xy5nZXQoKSwgd2F0ZXJtYXJrX3ZpZXdfLT5HZXRWaXNpYmxlKCksCist ICAgICAgICBnZng6OlJlY3QoMCwgMCwgd2lkdGgsIGhlaWdodCksIHZpZXdzOjpTaXplQm91bmRz KGNvbnRhaW5lcl9zaXplKSk7CisrICAgICAgICBnZng6OlJlY3QoMCwgMCwgd2lkdGgsIGhlaWdo dCksIHZpZXdzOjpTaXplQm91bmRzKGNvbnRhaW5lcl9zaXplKX07CisgICB9CisgICBsYXlvdXRz Lmhvc3Rfc2l6ZSA9IGdmeDo6U2l6ZSh3aWR0aCwgaGVpZ2h0KTsKKyAgIHJldHVybiBsYXlvdXRz OworZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3 cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2Vy L3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Fza192aWV3 LmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9w ZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYy5ub19tYXRj aGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAwMDAwMCArMDIwMAorKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lv bnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2MJMjAyNC0wNi0wMyAxODoz MTowMi40NTY4MDQzNDkgKzAyMDAKK0BAIC03OCw4ICs3OCw4IEBAIEVtYmVkZGVkUGVybWlzc2lv blByb21wdEFza1ZpZXc6OkdldEJ1dHQKKyAgICAgICBidXR0b25zLnB1c2hfYmFjayhhbGxvd19h bHdheXMpOworICAgICB9CisgICB9IGVsc2UgeworLSAgICBidXR0b25zLmVtcGxhY2VfYmFjayhs MTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCwga0FsbG93SWQpOworKyAgICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRp bDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cpLAorKyAgICAgICAgICAgICAg ICAgICAgICAgICBCdXR0b25UeXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBr QWxsb3dJZH07CisgICB9CisgICByZXR1cm4gYnV0dG9uczsKKyB9CitkaWZmIC11cCBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVk ZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lv bnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3LmgKKy0tLSBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVk X3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMjkgMTg6MDA6NTkuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNz aW9uX3Byb21wdF9iYXNlX3ZpZXcuaAkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5NDkxNTUzNCArMDIw MAorQEAgLTg3LDYgKzg3LDcgQEAgY2xhc3MgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0QmFzZVZp ZXcgOgorICAgc3RydWN0IFJlcXVlc3RMaW5lQ29uZmlndXJhdGlvbiB7CisgICAgIGNvbnN0IHJh d19wdHI8Y29uc3QgZ2Z4OjpWZWN0b3JJY29uPiBpY29uOworICAgICBzdGQ6OnUxNnN0cmluZyBt ZXNzYWdlOworKyAgICBSZXF1ZXN0TGluZUNvbmZpZ3VyYXRpb24oYXV0byBpLCBhdXRvIG0pIDog aWNvbihpKSwgbWVzc2FnZShtKSB7IH0KKyAgIH07CisgCisgICBzdHJ1Y3QgQnV0dG9uQ29uZmln dXJhdGlvbiB7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2Vy L3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3BvbGljeV92 aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hy b21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9t cHRfcG9saWN5X3ZpZXcuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93 c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3BvbGlj eV92aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTkuMDAw MDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91 aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmll dy5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5NDkxNTUzNCArMDIwMAorQEAgLTg4LDggKzg4LDgg QEAgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6R2V0UgorIHN0ZDo6dmVjdG9y PEVtYmVkZGVkUGVybWlzc2lvblByb21wdFBvbGljeVZpZXc6OkJ1dHRvbkNvbmZpZ3VyYXRpb24+ CisgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6R2V0QnV0dG9uc0NvbmZpZ3Vy YXRpb24oKSBjb25zdCB7CisgICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0 b25zOworLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJ RFNfRU1CRURERURfUFJPTVBUX09LX0xBQkVMKSwKKy0gICAgICAgICAgICAgICAgICAgICAgIEJ1 dHRvblR5cGU6OmtQb2xpY3lPSywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOworKyAgYnV0dG9u cy5lbXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERF RF9QUk9NUFRfT0tfTEFCRUwpLAorKyAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6 a1BvbGljeU9LLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07CisgICByZXR1cm4gYnV0dG9uczsK KyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3Vp L3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlf ZGVuaWVkX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNz aW9uX3Byb21wdF9wcmV2aW91c2x5X2RlbmllZF92aWV3LmNjCistLS0gY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJt aXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2RlbmllZF92aWV3LmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDA6NTkuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRl ZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2RlbmllZF92aWV3LmNjCTIwMjQtMDYtMDIg MjM6NTE6MjUuNDk0OTE1NTM0ICswMjAwCitAQCAtNjYsMTMgKzY2LDEzIEBAIEVtYmVkZGVkUGVy bWlzc2lvblByb21wdFByZXZpb3VzbHlEZW5pZWQKKyBzdGQ6OnZlY3RvcjxFbWJlZGRlZFBlcm1p c3Npb25Qcm9tcHRQcmV2aW91c2x5RGVuaWVkVmlldzo6QnV0dG9uQ29uZmlndXJhdGlvbj4KKyBF bWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5RGVuaWVkVmlldzo6R2V0QnV0dG9uc0Nv bmZpZ3VyYXRpb24oKSBjb25zdCB7CisgICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0aW9u PiBidXR0b25zOworLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCisrICBidXR0b25zLmVtcGxhY2Vf YmFjaygpID0geworICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVE X1BST01QVF9DT05USU5VRV9OT1RfQUxMT1dJTkcpLAorLSAgICAgIEJ1dHRvblR5cGU6OmtDb250 aW51ZU5vdEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCk7CisrICAgICAgQnV0dG9u VHlwZTo6a0NvbnRpbnVlTm90QWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKKyAK Ky0gICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCisrICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkg PSB7CisgICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FM TE9XX1RISVNfVElNRSksCistICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6 OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd1RoaXNUaW1lSWQpOworKyAgICAgICAgQnV0dG9u VHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dUaGlz VGltZUlkfTsKKyAKKyAgIHJldHVybiBidXR0b25zOworIH0KK2RpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRf cGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9ncmFudGVkX3ZpZXcuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3 cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50 ZWRfdmlldy5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9n cmFudGVkX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMDo1 OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9icm93 c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZp b3VzbHlfZ3JhbnRlZF92aWV3LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDk1OTE1NTU3ICswMjAw CitAQCAtNzcsMTMgKzc3LDEzIEBAIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlH cmFudGUKKyBzdGQ6OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5R3Jh bnRlZFZpZXc6OkJ1dHRvbkNvbmZpZ3VyYXRpb24+CisgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0 UHJldmlvdXNseUdyYW50ZWRWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNvbnN0IHsK KyAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7CistICBidXR0b25z LmVtcGxhY2VfYmFjaygKKysgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgbDEw bl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfRU1CRURERURfUFJPTVBUX0NPTlRJTlVFX0FMTE9X SU5HKSwKKyAgICAgICBCdXR0b25UeXBlOjprQ29udGludWVBbGxvd2luZywgdWk6OkJ1dHRvblN0 eWxlOjprVG9uYWwsCistICAgICAga0NvbnRpbnVlQWxsb3dpbmdJZCk7CisrICAgICAga0NvbnRp bnVlQWxsb3dpbmdJZH07CisgCistICBidXR0b25zLmVtcGxhY2VfYmFjaygKKysgIGJ1dHRvbnMu ZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNf RU1CRURERURfUFJPTVBUX1NUT1BfQUxMT1dJTkcpLAorLSAgICAgIEJ1dHRvblR5cGU6OmtTdG9w QWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrU3RvcEFsbG93aW5nSWQpOworKyAg ICAgIEJ1dHRvblR5cGU6OmtTdG9wQWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBr U3RvcEFsbG93aW5nSWR9OworICAgcmV0dXJuIGJ1dHRvbnM7CisgfQorZGlmZiAtdXAgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHlsZV92 aWV3cy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdzLmNjCistLS0gY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHlsZV92 aWV3cy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAwOjU5LjAwMDAw MDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkv dmlld3MvdGFicy90YWJfc3R5bGVfdmlld3MuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTU5MTU1 NTcgKzAyMDAKK0BAIC0xMjE0LDEwICsxMjE0LDEwIEBAIFNrUGF0aCBDaHJvbWVSZWZyZXNoMjAy M1RhYlN0eWxlVmlld3M6OkcKKyAKKyAgICAgLy8gUmFkaWkgYXJlIGNsb2Nrd2lzZSBmcm9tIHRv cCBsZWZ0LgorICAgICBjb25zdCBTa1ZlY3RvciByYWRpaVs0XSA9IHsKKy0gICAgICAgIFNrVmVj dG9yKHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMp LAorLSAgICAgICAgU2tWZWN0b3IodG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRl bnRfY29ybmVyX3JhZGl1cyksCistICAgICAgICBTa1ZlY3Rvcihib3R0b21fY29udGVudF9jb3Ju ZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzKSwKKy0gICAgICAgIFNrVmVj dG9yKGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9y YWRpdXMpfTsKKysgICAgICAgIFNrVmVjdG9ye3RvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRv cF9jb250ZW50X2Nvcm5lcl9yYWRpdXN9LAorKyAgICAgICAgU2tWZWN0b3J7dG9wX2NvbnRlbnRf Y29ybmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1c30sCisrICAgICAgICBTa1Zl Y3Rvcntib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3JuZXJf cmFkaXVzfSwKKysgICAgICAgIFNrVmVjdG9ye2JvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMs IGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXN9fTsKKyAgICAgU2tSUmVjdCBycmVjdDsKKyAg ICAgcnJlY3Quc2V0UmVjdFJhZGlpKFNrUmVjdDo6TWFrZUxUUkIobGVmdCwgdG9wLCByaWdodCwg Ym90dG9tKSwgcmFkaWkpOworICAgICBTa1BhdGggcGF0aDsKK2RpZmYgLXVwIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19z ZXJ2aWNlX2ltcGwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25zL3N1Yl9hcHBzX3NlcnZpY2Vf aW1wbC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvd2Vi X2FwcGxpY2F0aW9ucy9zdWJfYXBwc19zZXJ2aWNlX2ltcGwuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IJMjAyNC0wNS0yOSAxODowMDo1OS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2Nocm9tZS9icm93c2VyL3VpL3dlYl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNf c2VydmljZV9pbXBsLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDk2OTE1NTgxICswMjAwCitAQCAt MTA4LDcgKzEwOCw3IEBAIEFkZE9wdGlvbnNGcm9tTW9qbygKKyAgICAgICAgICAgICAgICAgICAg ICBDb252ZXJ0UGF0aFRvVXJsKHN1Yl9hcHAtPm1hbmlmZXN0X2lkX3BhdGgsIG9yaWdpbikpOwor ICAgICBBU1NJR05fT1JfUkVUVVJOKEdVUkwgaW5zdGFsbF91cmwsCisgICAgICAgICAgICAgICAg ICAgICAgQ29udmVydFBhdGhUb1VybChzdWJfYXBwLT5pbnN0YWxsX3VybF9wYXRoLCBvcmlnaW4p KTsKKy0gICAgc3ViX2FwcHMuZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZShtYW5pZmVzdF9pZCksIHN0 ZDo6bW92ZShpbnN0YWxsX3VybCkpOworKyAgICBzdWJfYXBwcy5lbXBsYWNlX2JhY2soKSA9IHtz dGQ6Om1vdmUobWFuaWZlc3RfaWQpLCBzdGQ6Om1vdmUoaW5zdGFsbF91cmwpfTsKKyAgIH0KKyAg IHJldHVybiBzdWJfYXBwczsKKyB9CitAQCAtNDQwLDcgKzQ0MCw3IEBAIHZvaWQgU3ViQXBwc1Nl cnZpY2VJbXBsOjpTY2hlZHVsZVN1YkFwcEkKKyAgICAgICAgIGJhc2U6OkJpbmRPbmNlKAorICAg ICAgICAgICAgIFtdKHdlYmFwcHM6Ok1hbmlmZXN0SWQgbWFuaWZlc3RfaWQsIGNvbnN0IHdlYmFw cHM6OkFwcElkJiBhcHBfaWQsCisgICAgICAgICAgICAgICAgd2ViYXBwczo6SW5zdGFsbFJlc3Vs dENvZGUgcmVzdWx0X2NvZGUpIHsKKy0gICAgICAgICAgICAgIHJldHVybiBTdWJBcHBJbnN0YWxs UmVzdWx0KG1hbmlmZXN0X2lkLCBhcHBfaWQsIHJlc3VsdF9jb2RlKTsKKysgICAgICAgICAgICAg IHJldHVybiBTdWJBcHBJbnN0YWxsUmVzdWx0e21hbmlmZXN0X2lkLCBhcHBfaWQsIHJlc3VsdF9j b2RlfTsKKyAgICAgICAgICAgICB9LAorICAgICAgICAgICAgIG1hbmlmZXN0X2lkKQorICAgICAg ICAgICAgIC5UaGVuKGNvbmN1cnJlbnQuQ3JlYXRlQ2FsbGJhY2soKSksCitkaWZmIC11cCBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUv dGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJpbGl0aWVzLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jaHJvbWUvdGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJpbGl0aWVzLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MDEuMDAwMDAwMDAwICswMjAwCisrKysgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvdGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJpbGl0aWVz LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDk2OTE1NTgxICswMjAwCitAQCAtMzQ2LDcgKzM0Niw3 IEBAIFN0YXR1cyBQYXJzZU1vYmlsZUVtdWxhdGlvbihjb25zdCBiYXNlOjoKKyAgICAgICAgICAg ICAgICAgICAgICAgICAiJ3ZlcnNpb24nIGZpZWxkIG9mIHR5cGUgc3RyaW5nIik7CisgICAgICAg ICB9CisgCistICAgICAgICBicmFuZHMuZW1wbGFjZV9iYWNrKCpicmFuZCwgKnZlcnNpb24pOwor KyAgICAgICAgYnJhbmRzLmVtcGxhY2VfYmFjaygpID0geypicmFuZCwgKnZlcnNpb259OworICAg ICAgIH0KKyAKKyAgICAgICBjbGllbnRfaGludHMuYnJhbmRzID0gc3RkOjptb3ZlKGJyYW5kcyk7 CitAQCAtMzg0LDcgKzM4NCw3IEBAIFN0YXR1cyBQYXJzZU1vYmlsZUVtdWxhdGlvbihjb25zdCBi YXNlOjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAiYSAndmVyc2lvbicgZmllbGQgb2YgdHlw ZSBzdHJpbmciKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGZ1bGxfdmVyc2lvbl9saXN0LmVt cGxhY2VfYmFjaygqYnJhbmQsICp2ZXJzaW9uKTsKKysgICAgICAgIGZ1bGxfdmVyc2lvbl9saXN0 LmVtcGxhY2VfYmFjaygpID0geypicmFuZCwgKnZlcnNpb259OworICAgICAgIH0KKyAKKyAgICAg ICBjbGllbnRfaGludHMuZnVsbF92ZXJzaW9uX2xpc3QgPSBzdGQ6Om1vdmUoZnVsbF92ZXJzaW9u X2xpc3QpOworZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F0dHJp YnV0aW9uX3JlcG9ydGluZy9hZ2dyZWdhdGFibGVfdXRpbHMuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3JlcG9y dGluZy9hZ2dyZWdhdGFibGVfdXRpbHMuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nv bXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0aW5nL2FnZ3JlZ2F0YWJsZV91dGlscy5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjA1LjAwMDAwMDAwMCArMDIwMAor KysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdHRyaWJ1dGlvbl9yZXBvcnRp bmcvYWdncmVnYXRhYmxlX3V0aWxzLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDk3OTE1NjA0ICsw MjAwCitAQCAtMzMsNyArMzMsNyBAQCBzdGQ6OnZlY3RvcjxOdWxsQWdncmVnYXRhYmxlUmVwb3J0 PiBHZXROCisgICAgIH0KKyAKKyAgICAgaWYgKGdlbmVyYXRlX2Z1bmMoaSkpIHsKKy0gICAgICBy ZXBvcnRzLmVtcGxhY2VfYmFjayhmYWtlX3NvdXJjZV90aW1lKTsKKysgICAgICByZXBvcnRzLmVt cGxhY2VfYmFjaygpID0ge2Zha2Vfc291cmNlX3RpbWV9OworICAgICB9CisgICB9CisgICByZXR1 cm4gcmVwb3J0czsKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9h dHRyaWJ1dGlvbl9yZXBvcnRpbmcvcmVnaXN0cmF0aW9uX2luZm8uY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F0dHJpYnV0aW9uX3Jl cG9ydGluZy9yZWdpc3RyYXRpb25faW5mby5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29tcG9uZW50cy9hdHRyaWJ1dGlvbl9yZXBvcnRpbmcvcmVnaXN0cmF0aW9uX2luZm8uY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTowNS4wMDAwMDAwMDAgKzAyMDAK KysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXR0cmlidXRpb25fcmVwb3J0 aW5nL3JlZ2lzdHJhdGlvbl9pbmZvLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDk3OTE1NjA0ICsw MjAwCitAQCAtOTYsNyArOTYsNyBAQCBSZWdpc3RyYXRpb25JbmZvOjpQYXJzZUluZm8oY29uc3Qg bmV0OjpzCisgCisgICBBU1NJR05fT1JfUkVUVVJOKGJvb2wgcmVwb3J0X2hlYWRlcl9lcnJvcnMs IFBhcnNlUmVwb3J0SGVhZGVyRXJyb3JzKGRpY3QpKTsKKyAKKy0gIHJldHVybiBSZWdpc3RyYXRp b25JbmZvKHByZWZlcnJlZF9wbGF0Zm9ybSwgcmVwb3J0X2hlYWRlcl9lcnJvcnMpOworKyAgcmV0 dXJuIFJlZ2lzdHJhdGlvbkluZm97cHJlZmVycmVkX3BsYXRmb3JtLCByZXBvcnRfaGVhZGVyX2Vy cm9yc307CisgfQorIAorIH0gIC8vIG5hbWVzcGFjZSBhdHRyaWJ1dGlvbl9yZXBvcnRpbmcKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmlsbC9jb250ZW50 L3JlbmRlcmVyL2Zvcm1fYXV0b2ZpbGxfdXRpbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29udGVudC9yZW5kZXJl ci9mb3JtX2F1dG9maWxsX3V0aWwuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBv bmVudHMvYXV0b2ZpbGwvY29udGVudC9yZW5kZXJlci9mb3JtX2F1dG9maWxsX3V0aWwuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTowNS4wMDAwMDAwMDAgKzAyMDAK KysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29udGVudC9y ZW5kZXJlci9mb3JtX2F1dG9maWxsX3V0aWwuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS40OTc5MTU2 MDQgKzAyMDAKK0BAIC0yMjc5LDcgKzIyNzksNyBAQCBzdGQ6OnZlY3RvcjxzdGQ6OnBhaXI8Rmll bGRSZWYsIFdlYkF1dG9mCisgICAgIGlmIChlbGVtZW50LkZvY3VzZWQoKSkgeworICAgICAgIGZv Y3VzZWRfZmllbGQgPSB7JmZpZWxkLCBlbGVtZW50fTsKKyAgICAgfSBlbHNlIHsKKy0gICAgICB1 bmZvY3VzZWRfZmllbGRzLmVtcGxhY2VfYmFjaygmZmllbGQsIGVsZW1lbnQpOworKyAgICAgIHVu Zm9jdXNlZF9maWVsZHMuZW1wbGFjZV9iYWNrKCkgPSB7JmZpZWxkLCBlbGVtZW50fTsKKyAgICAg fQorICAgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1 dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxsX3Rh YmxlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29t cG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19h dXRvZmlsbF90YWJsZS5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9h dXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRvZmlsbF90 YWJsZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjA1LjAwMDAw MDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9hdXRvZmls bC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRvZmlsbF90YWJsZS5j YwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5NzkxNTYwNCArMDIwMAorQEAgLTYzNSwxMCArNjM1LDEw IEBAIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZmlsbFByb2ZpbGU+IEFkZHJlc3MKKyAgICAgfQorIAor ICAgICBiYXNlOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IG9ic2VydmF0aW9uc19kYXRhID0gcy5Db2x1 bW5CbG9iKDMpOworLSAgICBmaWVsZF90eXBlX3ZhbHVlcy5lbXBsYWNlX2JhY2soCisrICAgIGZp ZWxkX3R5cGVfdmFsdWVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICAgdHlwZSwgcy5Db2x1 bW5TdHJpbmcxNigxKSwgcy5Db2x1bW5JbnQoMiksCisgICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50 OF90PihvYnNlcnZhdGlvbnNfZGF0YS5iZWdpbigpLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgb2JzZXJ2YXRpb25zX2RhdGEuZW5kKCkpKTsKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgIG9ic2VydmF0aW9uc19kYXRhLmVuZCgpKX07CisgCisgICAgIGlmICh0eXBlID09IEFE RFJFU1NfSE9NRV9DT1VOVFJZKSB7CisgICAgICAgY291bnRyeV9jb2RlID0gYmFzZTo6VVRGMTZU b1VURjgocy5Db2x1bW5TdHJpbmcxNigxKSk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYWRkcmVzc2VzL2Nv bnRhY3RfaW5mb19zeW5jX3V0aWwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2Fk ZHJlc3Nlcy9jb250YWN0X2luZm9fc3luY191dGlsLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9j b250YWN0X2luZm9fc3luY191dGlsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUt MjkgMTg6MDE6MDUuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j b21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9jb250YWN0 X2luZm9fc3luY191dGlsLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNDk4OTE1NjI5ICswMjAwCitA QCAtMTY5LDkgKzE2OSw5IEBAIGNsYXNzIENvbnRhY3RJbmZvUHJvZmlsZVNldHRlciB7CisgICAg ICAgQ0hFQ0sob2JzZXJ2YXRpb25zLmVtcHR5KCkpOworICAgICAgIGZvciAoY29uc3Qgc3luY19w Yjo6Q29udGFjdEluZm9TcGVjaWZpY3M6Ok9ic2VydmF0aW9uJiBwcm90b19vYnNlcnZhdGlvbiA6 CisgICAgICAgICAgICBtZXRhZGF0YS5vYnNlcnZhdGlvbnMoKSkgeworLSAgICAgICAgb2JzZXJ2 YXRpb25zLmVtcGxhY2VfYmFjayhwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCisrICAgICAgICBv YnNlcnZhdGlvbnMuZW1wbGFjZV9iYWNrKCkgPSB7cHJvdG9fb2JzZXJ2YXRpb24udHlwZSgpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQcm9maWxlVG9rZW5RdWFsaXR5OjpG b3JtU2lnbmF0dXJlSGFzaCgKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHByb3RvX29ic2VydmF0aW9uLmZvcm1faGFzaCgpKSk7CisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBwcm90b19vYnNlcnZhdGlvbi5mb3JtX2hhc2goKSl9OworICAgICAg IH0KKyAgICAgfQorICAgfQorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25l bnRzL2ludmFsaWRhdGlvbi9pbXBsL2ZjbV9pbnZhbGlkYXRpb25fc2VydmljZS5jYy5ub19tYXRj aGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvaW52YWxp ZGF0aW9uL2ltcGwvZmNtX2ludmFsaWRhdGlvbl9zZXJ2aWNlLmNjCistLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jb21wb25lbnRzL2ludmFsaWRhdGlvbi9pbXBsL2ZjbV9pbnZhbGlkYXRpb25f c2VydmljZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjA2LjAw MDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9pbnZh bGlkYXRpb24vaW1wbC9mY21faW52YWxpZGF0aW9uX3NlcnZpY2UuY2MJMjAyNC0wNi0wMiAyMzo1 MToyNS40OTg5MTU2MjkgKzAyMDAKK0BAIC05OCw3ICs5OCw3IEBAIGJvb2wgRkNNSW52YWxpZGF0 aW9uU2VydmljZTo6VXBkYXRlSW50ZXIKKyAgIERWTE9HKDIpIDw8ICJTdWJzY3JpYmluZyB0byB0 b3BpY3M6ICIgPDwgdG9waWNfc2V0LnNpemUoKTsKKyAgIFRvcGljTWFwIHRvcGljX21hcDsKKyAg IGZvciAoY29uc3QgYXV0byYgdG9waWNfbmFtZSA6IHRvcGljX3NldCkgeworLSAgICB0b3BpY19t YXBbdG9waWNfbmFtZV0gPSBUb3BpY01ldGFkYXRhKGhhbmRsZXItPklzUHVibGljVG9waWModG9w aWNfbmFtZSkpOworKyAgICB0b3BpY19tYXBbdG9waWNfbmFtZV0gPSBUb3BpY01ldGFkYXRhe2hh bmRsZXItPklzUHVibGljVG9waWModG9waWNfbmFtZSl9OworICAgfQorICAgLy8gVE9ETyhjcmJ1 Zy5jb20vNDA2NzU3MDgpOiBVcGRhdGVSZWdpc3RlcmVkVG9waWNzKCkgc2hvdWxkIGJlIHJlbmFt ZWQgdG8KKyAgIC8vIGNsYXJpZnkgdGhhdCBpdCBhY3R1YWxseSB1cGRhdGVzIHdoZXRoZXIgdG9w aWNzIG5lZWQgc3Vic2NyaXB0aW9uIChha2EKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29tcG9uZW50cy9tZW1vcnlfcHJlc3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9y LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9u ZW50cy9tZW1vcnlfcHJlc3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjCistLS0g Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL21lbW9yeV9wcmVzc3VyZS91bm5lY2Vz c2FyeV9kaXNjYXJkX21vbml0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0y OSAxODowMTowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nv bXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3VubmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5jYwky MDI0LTA2LTAyIDIzOjUxOjI1LjQ5ODkxNTYyOSArMDIwMAorQEAgLTkyLDggKzkyLDggQEAgdm9p ZCBVbm5lY2Vzc2FyeURpc2NhcmRNb25pdG9yOjpPbkRpc2NhcgorICAgRENIRUNLX0NBTExFRF9P Tl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7CisgICBpZiAoY3VycmVudF9yZWNs YWltX2V2ZW50XykgeworICAgICAvLyBDYWNoZSB0aGlzIGtpbGwgZXZlbnQgYWxvbmcgd2l0aCB0 aGUgdGltZSBpdCB0b29rIHBsYWNlLgorLSAgICBjdXJyZW50X3JlY2xhaW1fZXZlbnRfa2lsbHNf LmVtcGxhY2VfYmFjayhtZW1vcnlfZnJlZWRfa2IsCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRpc2NhcmRfY29tcGxldGVfdGltZSk7CisrICAgIGN1cnJl bnRfcmVjbGFpbV9ldmVudF9raWxsc18uZW1wbGFjZV9iYWNrKCkgPSB7bWVtb3J5X2ZyZWVkX2ti LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkaXNjYXJk X2NvbXBsZXRlX3RpbWV9OworICAgfQorIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9t YW5hZ2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2Vy LmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFn ZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IJMjAyNC0wNS0yOSAxODowMTowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFzc3dv cmRfbWFuYWdlci5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5ODkxNTYyOSArMDIwMAorQEAgLTY4 Niw3ICs2ODYsNyBAQCB2b2lkIFBhc3N3b3JkTWFuYWdlcjo6T25Vc2VyTW9kaWZpZWROb25QCisg ICAgIGl0LT5zZWNvbmQubGFzdF9jaGFuZ2UgPSBiYXNlOjpUaW1lOjpOb3coKTsKKyAgIH0gZWxz ZSB7CisgICAgIHBvc3NpYmxlX3VzZXJuYW1lc18uUHV0KAorLSAgICAgICAgUG9zc2libGVVc2Vy bmFtZUZpZWxkSWRlbnRpZmllcihkcml2ZXJfaWQsIHJlbmRlcmVyX2lkKSwKKysgICAgICAgIFBv c3NpYmxlVXNlcm5hbWVGaWVsZElkZW50aWZpZXJ7ZHJpdmVyX2lkLCByZW5kZXJlcl9pZH0sCisg ICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRGF0YShHZXRTaWdub25SZWFsbShkcml2ZXItPkdldExh c3RDb21taXR0ZWRVUkwoKSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJl cl9pZCwgdmFsdWUsIGJhc2U6OlRpbWU6Ok5vdygpLCBkcml2ZXJfaWQsCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhdXRvY29tcGxldGVfYXR0cmlidXRlX2hhc191c2VybmFtZSwKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2Vy L2NvcmUvYnJvd3Nlci9wYXNzd29yZF9zdWdnZXN0aW9uX2dlbmVyYXRvci5jYy5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGFzc3dvcmRf bWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFzc3dvcmRfc3VnZ2VzdGlvbl9nZW5lcmF0b3IuY2MKKy0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3Jl L2Jyb3dzZXIvcGFzc3dvcmRfc3VnZ2VzdGlvbl9nZW5lcmF0b3IuY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTowNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIv cGFzc3dvcmRfc3VnZ2VzdGlvbl9nZW5lcmF0b3IuY2MJMjAyNC0wNi0wMyAxODowODoxNS42NTA1 NzcxODYgKzAyMDAKK0BAIC0xNTYsNyArMTU2LDcgQEAgdm9pZCBNYXliZUFwcGVuZE1hbmFnZVBh c3N3b3Jkc0VudHJ5KHN0ZAorICAgICAgIFN1Z2dlc3Rpb25UeXBlOjprQWxsU2F2ZWRQYXNzd29y ZHNFbnRyeSk7CisgICAvLyBUaGUgVUkgY29kZSB3aWxsIHBpY2sgdXAgYW4gaWNvbiBmcm9tIHRo ZSByZXNvdXJjZXMgYmFzZWQgb24gdGhlIHN0cmluZy4KKyAgIHN1Z2dlc3Rpb24udHJhaWxpbmdf aWNvbiA9IFN1Z2dlc3Rpb246Okljb246OmtHb29nbGVQYXNzd29yZE1hbmFnZXI7CistICBzdWdn ZXN0aW9ucy0+ZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZShzdWdnZXN0aW9uKSk7CisrICBzdWdnZXN0 aW9ucy0+ZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKHN1Z2dlc3Rpb24pfTsKKyB9CisgCisg Ly8gSWYgfGZpZWxkX3N1Z2dlc3Rpb258IG1hdGNoZXMgfGZpZWxkX2NvbnRlbnR8LCBjcmVhdGVz IGEgU3VnZ2VzdGlvbiBvdXQgb2YgaXQKK0BAIC0yMDEsNyArMjAxLDcgQEAgdm9pZCBBcHBlbmRT dWdnZXN0aW9uSWZNYXRjaGluZyhjb25zdCBzdAorICAgICAgIHN1Z2dlc3Rpb24udHJhaWxpbmdf aWNvbiA9IENyZWF0ZVN0b3JlSWNvbihmcm9tX2FjY291bnRfc3RvcmUpOworICAgICB9CisgI2Vu ZGlmCistICAgIHN1Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHN1Z2dlc3Rpb24p KTsKKysgICAgc3VnZ2VzdGlvbnMtPmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92ZShzdWdnZXN0 aW9uKX07CisgICB9CisgfQorIAorQEAgLTIzMyw4ICsyMzMsOCBAQCB2b2lkIEdldFN1Z2dlc3Rp b25zKGNvbnN0IGF1dG9maWxsOjpQYXNzCisgCisgdm9pZCBBZGRQYXNzd29yZFVzZXJuYW1lQ2hp bGRTdWdnZXN0aW9uKGNvbnN0IHN0ZDo6dTE2c3RyaW5nJiB1c2VybmFtZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3VnZ2VzdGlvbiYgc3VnZ2VzdGlvbikgewor LSAgc3VnZ2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soCistICAgICAgdXNlcm5hbWUsIFN1 Z2dlc3Rpb25UeXBlOjprUGFzc3dvcmRGaWVsZEJ5RmllbGRGaWxsaW5nKTsKKysgIHN1Z2dlc3Rp b24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKCkgPSB7CisrICAgICAgdXNlcm5hbWUsIFN1Z2dlc3Rp b25UeXBlOjprUGFzc3dvcmRGaWVsZEJ5RmllbGRGaWxsaW5nfTsKKyB9CisgCisgdm9pZCBBZGRG aWxsUGFzc3dvcmRDaGlsZFN1Z2dlc3Rpb24oU3VnZ2VzdGlvbiYgc3VnZ2VzdGlvbiwKK0BAIC0y NDQsMTEgKzI0NCwxMSBAQCB2b2lkIEFkZEZpbGxQYXNzd29yZENoaWxkU3VnZ2VzdGlvbihTdWdn CisgICAgICAgbDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNigKKyAgICAgICAgICAgSURTX1BBU1NX T1JEX01BTkFHRVJfTUFOVUFMX0ZBTExCQUNLX0ZJTExfUEFTU1dPUkRfRU5UUlkpLAorICAgICAg IFN1Z2dlc3Rpb25UeXBlOjprRmlsbFBhc3N3b3JkKTsKKy0gIGZpbGxfcGFzc3dvcmQucGF5bG9h ZCA9IFN1Z2dlc3Rpb246OlBhc3N3b3JkU3VnZ2VzdGlvbkRldGFpbHMoCisrICBmaWxsX3Bhc3N3 b3JkLnBheWxvYWQgPSBTdWdnZXN0aW9uOjpQYXNzd29yZFN1Z2dlc3Rpb25EZXRhaWxzeworICAg ICAgIGNyZWRlbnRpYWwucGFzc3dvcmQsCisgICAgICAgR2V0SHVtYW5SZWFkYWJsZVJlYWxtKGNy ZWRlbnRpYWwuR2V0Rmlyc3RTaWdub25SZWFsbSgpKSwKKy0gICAgICBpc19jcm9zc19vcmlnaW4u dmFsdWUoKSk7CistICBzdWdnZXN0aW9uLmNoaWxkcmVuLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUo ZmlsbF9wYXNzd29yZCkpOworKyAgICAgIGlzX2Nyb3NzX29yaWdpbi52YWx1ZSgpfTsKKysgIHN1 Z2dlc3Rpb24uY2hpbGRyZW4uZW1wbGFjZV9iYWNrKCkgPSB7c3RkOjptb3ZlKGZpbGxfcGFzc3dv cmQpfTsKKyB9CisgCisgdm9pZCBBZGRWaWV3UGFzc3dvcmREZXRhaWxzQ2hpbGRTdWdnZXN0aW9u KFN1Z2dlc3Rpb24mIHN1Z2dlc3Rpb24pIHsKK0BAIC0yNTcsNyArMjU3LDcgQEAgdm9pZCBBZGRW aWV3UGFzc3dvcmREZXRhaWxzQ2hpbGRTdWdnZXN0aQorICAgICAgICAgICBJRFNfUEFTU1dPUkRf TUFOQUdFUl9NQU5VQUxfRkFMTEJBQ0tfVklFV19ERVRBSUxTX0VOVFJZKSwKKyAgICAgICBTdWdn ZXN0aW9uVHlwZTo6a1ZpZXdQYXNzd29yZERldGFpbHMpOworICAgdmlld19wYXNzd29yZF9kZXRh aWxzLmljb24gPSBTdWdnZXN0aW9uOjpJY29uOjprS2V5OworLSAgc3VnZ2VzdGlvbi5jaGlsZHJl bi5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHZpZXdfcGFzc3dvcmRfZGV0YWlscykpOworKyAgc3Vn Z2VzdGlvbi5jaGlsZHJlbi5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUodmlld19wYXNzd29y ZF9kZXRhaWxzKX07CisgfQorIAorIHZvaWQgQXBwZW5kTWFudWFsRmFsbGJhY2tTdWdnZXN0aW9u cyhjb25zdCBDcmVkZW50aWFsVUlFbnRyeSYgY3JlZGVudGlhbCwKK0BAIC0yNzgsOSArMjc4LDkg QEAgdm9pZCBBcHBlbmRNYW51YWxGYWxsYmFja1N1Z2dlc3Rpb25zKGNvbgorICAgICBjb25zdCBz dGQ6OnUxNnN0cmluZyBtYXliZV91c2VybmFtZSA9CisgICAgICAgICBSZXBsYWNlRW1wdHlVc2Vy bmFtZShjcmVkZW50aWFsLnVzZXJuYW1lLCAmcmVwbGFjZWQpOworICAgICBzdWdnZXN0aW9uLmFk ZGl0aW9uYWxfbGFiZWwgPSBtYXliZV91c2VybmFtZTsKKy0gICAgc3VnZ2VzdGlvbi5wYXlsb2Fk ID0gU3VnZ2VzdGlvbjo6UGFzc3dvcmRTdWdnZXN0aW9uRGV0YWlscygKKysgICAgc3VnZ2VzdGlv bi5wYXlsb2FkID0gU3VnZ2VzdGlvbjo6UGFzc3dvcmRTdWdnZXN0aW9uRGV0YWlsc3sKKyAgICAg ICAgIGNyZWRlbnRpYWwucGFzc3dvcmQsIGJhc2U6OlVURjhUb1VURjE2KGtEaXNwbGF5U2luZ29u UmVhbG0pLAorLSAgICAgICAgaXNfY3Jvc3Nfb3JpZ2luLnZhbHVlKCkpOworKyAgICAgICAgaXNf Y3Jvc3Nfb3JpZ2luLnZhbHVlKCl9OworICAgICBzdWdnZXN0aW9uLmlzX2FjY2VwdGFibGUgPSBv bl9wYXNzd29yZF9mb3JtLnZhbHVlKCk7CisgCisgICAgIGlmICghcmVwbGFjZWQpIHsKK0BAIC0y OTAsNyArMjkwLDcgQEAgdm9pZCBBcHBlbmRNYW51YWxGYWxsYmFja1N1Z2dlc3Rpb25zKGNvbgor ICAgICBzdWdnZXN0aW9uLmNoaWxkcmVuLmVtcGxhY2VfYmFjayhTdWdnZXN0aW9uVHlwZTo6a1Nl cGFyYXRvcik7CisgICAgIEFkZFZpZXdQYXNzd29yZERldGFpbHNDaGlsZFN1Z2dlc3Rpb24oc3Vn Z2VzdGlvbik7CisgCistICAgIHN1Z2dlc3Rpb25zLT5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKHN1 Z2dlc3Rpb24pKTsKKysgICAgc3VnZ2VzdGlvbnMtPmVtcGxhY2VfYmFjaygpID0ge3N0ZDo6bW92 ZShzdWdnZXN0aW9uKX07CisgICB9CisgfQorIAorQEAgLTM2MywyNyArMzYzLDI3IEBAIHN0ZDo6 dmVjdG9yPFN1Z2dlc3Rpb24+IFBhc3N3b3JkU3VnZ2VzdGkKKyAgIGlmICh1c2VzX3Bhc3NrZXlz ICYmIGRlbGVnYXRlLT5PZmZlclBhc3NrZXlzRnJvbUFub3RoZXJEZXZpY2VPcHRpb24oKSkgewor ICAgICBib29sIGxpc3RlZF9wYXNza2V5cyA9IGRlbGVnYXRlLT5HZXRQYXNza2V5cygpLmhhc192 YWx1ZSgpICYmCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVsZWdhdGUtPkdldFBhc3Nr ZXlzKCktPnNpemUoKSA+IDA7CistICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjayhDcmVhdGVX ZWJBdXRobkVudHJ5KGxpc3RlZF9wYXNza2V5cykpOworKyAgICBzdWdnZXN0aW9ucy5lbXBsYWNl X2JhY2soKSA9IHtDcmVhdGVXZWJBdXRobkVudHJ5KGxpc3RlZF9wYXNza2V5cyl9OworICAgfQor ICNlbmRpZgorIAorICAgLy8gQWRkIHBhc3N3b3JkIGdlbmVyYXRpb24gZW50cnksIGlmIGF2YWls YWJsZS4KKyAgIGlmIChvZmZlcnNfZ2VuZXJhdGlvbikgeworLSAgICBzdWdnZXN0aW9ucy5lbXBs YWNlX2JhY2soCistICAgICAgICBzaG93X2FjY291bnRfc3RvcmFnZV9vcHRpbgorKyAgICBzdWdn ZXN0aW9ucy5lbXBsYWNlX2JhY2soKSA9CisrICAgICAgICB7c2hvd19hY2NvdW50X3N0b3JhZ2Vf b3B0aW4KKyAgICAgICAgICAgICA/IENyZWF0ZUVudHJ5VG9PcHRJblRvQWNjb3VudFN0b3JhZ2VU aGVuR2VuZXJhdGUoKQorLSAgICAgICAgICAgIDogQ3JlYXRlR2VuZXJhdGlvbkVudHJ5KCkpOwor KyAgICAgICAgICAgIDogQ3JlYXRlR2VuZXJhdGlvbkVudHJ5KCl9OworICAgfQorIAorICAgLy8g QWRkIGJ1dHRvbiB0byBvcHQgaW50byB1c2luZyB0aGUgYWNjb3VudCBzdG9yYWdlIGZvciBwYXNz d29yZHMgYW5kIHRoZW4KKyAgIC8vIHN1Z2dlc3QuCisgICBpZiAoc2hvd19hY2NvdW50X3N0b3Jh Z2Vfb3B0aW4pIHsKKy0gICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKENyZWF0ZUVudHJ5VG9P cHRJblRvQWNjb3VudFN0b3JhZ2VUaGVuRmlsbCgpKTsKKysgICAgc3VnZ2VzdGlvbnMuZW1wbGFj ZV9iYWNrKCkgPSB7Q3JlYXRlRW50cnlUb09wdEluVG9BY2NvdW50U3RvcmFnZVRoZW5GaWxsKCl9 OworICAgfQorIAorICAgLy8gQWRkIGJ1dHRvbiB0byBzaWduLWluIHdoaWNoIHVubG9ja3MgdGhl IHByZXZpb3VzbHkgdXNlZCBhY2NvdW50IHN0b3JlLgorICAgaWYgKHNob3dfYWNjb3VudF9zdG9y YWdlX3Jlc2lnbmluKSB7CistICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjayhDcmVhdGVFbnRy eVRvUmVTaWduaW4oKSk7CisrICAgIHN1Z2dlc3Rpb25zLmVtcGxhY2VfYmFjaygpID0ge0NyZWF0 ZUVudHJ5VG9SZVNpZ25pbigpfTsKKyAgIH0KKyAKKyAgIC8vIEFkZCAiTWFuYWdlIGFsbCBwYXNz d29yZHMiIGxpbmsgdG8gc2V0dGluZ3MuCitAQCAtNDAxLDEwICs0MDEsMTAgQEAgUGFzc3dvcmRT dWdnZXN0aW9uR2VuZXJhdG9yOjpHZXRNYW51YWxGYQorICAgY29uc3QgYm9vbCBnZW5lcmF0ZV9z ZWN0aW9ucyA9CisgICAgICAgIXN1Z2dlc3RlZF9jcmVkZW50aWFscy5lbXB0eSgpICYmICFjcmVk ZW50aWFscy5lbXB0eSgpOworICAgaWYgKGdlbmVyYXRlX3NlY3Rpb25zKSB7CistICAgIHN1Z2dl c3Rpb25zLmVtcGxhY2VfYmFjaygKKysgICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKCkgPSB7 CisgICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KAorICAgICAgICAgICAgIElEU19Q QVNTV09SRF9NQU5BR0VSX01BTlVBTF9GQUxMQkFDS19TVUdHRVNURURfUEFTU1dPUkRTX1NFQ1RJ T05fVElUTEUpLAorLSAgICAgICAgU3VnZ2VzdGlvblR5cGU6OmtUaXRsZSk7CisrICAgICAgICBT dWdnZXN0aW9uVHlwZTo6a1RpdGxlfTsKKyAgIH0KKyAKKyAgIHN0ZDo6c2V0PHN0ZDo6c3RyaW5n PiBzdWdnZXN0ZWRfc2lnbm9uX3JlYWxtczsKK0BAIC00MTUsMTAgKzQxNSwxMCBAQCBQYXNzd29y ZFN1Z2dlc3Rpb25HZW5lcmF0b3I6OkdldE1hbnVhbEZhCisgICB9CisgCisgICBpZiAoZ2VuZXJh dGVfc2VjdGlvbnMpIHsKKy0gICAgc3VnZ2VzdGlvbnMuZW1wbGFjZV9iYWNrKAorKyAgICBzdWdn ZXN0aW9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5n VVRGMTYoCisgICAgICAgICAgICAgSURTX1BBU1NXT1JEX01BTkFHRVJfTUFOVUFMX0ZBTExCQUNL X0FMTF9QQVNTV09SRFNfU0VDVElPTl9USVRMRSksCistICAgICAgICBTdWdnZXN0aW9uVHlwZTo6 a1RpdGxlKTsKKysgICAgICAgIFN1Z2dlc3Rpb25UeXBlOjprVGl0bGV9OworICAgfQorIAorICAg Ly8gT25seSB0aGUgIkFsbCBwYXNzd29yZHMiIHNlY3Rpb24gc2hvdWxkIGJlIHNvcnRlZCBhbHBo YWJldGljYWxseS4KK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9w ZXJmb3JtYW5jZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9tYW5hZ2Vy L3dvcmtlcl93YXRjaGVyLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRz L3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IJMjAyNC0wNS0yOSAxODowMTowOC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hl ci5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5OTkxNTY1MyArMDIwMAorQEAgLTI0NCw3ICsyNDQs NyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uV29ya2VyQ3JlYXRlZCgKKyAgIERDSEVDSyhpbnNl cnRpb25fcmVzdWx0LnNlY29uZCk7CisgCisgICBhYnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpP dmVybG9hZGVkKAorKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgIFsmLAorICAg ICAgICAgICAgdGhpc10oY29uc3QgY29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJl bmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAgICAgICAgQWRkRnJhbWVDbGllbnRDb25uZWN0 aW9uKGluc2VydGlvbl9yZXN1bHQuZmlyc3QtPnNlY29uZC5nZXQoKSwKK0BAIC0yNTMsNyArMjUz LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbldvcmtlckNyZWF0ZWQoCisgICAgICAgICAgIFsm LCB0aGlzXShibGluazo6RGVkaWNhdGVkV29ya2VyVG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tl bikgeworICAgICAgICAgICAgIENvbm5lY3REZWRpY2F0ZWRXb3JrZXJDbGllbnQoaW5zZXJ0aW9u X3Jlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgZGVkaWNhdGVkX3dvcmtlcl90b2tlbik7CistICAgICAgICAgIH0pLAor KyAgICAgICAgICB9fSwKKyAgICAgICBjcmVhdG9yKTsKKyB9CisgCitAQCAtMjcwLDcgKzI3MCw3 IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25CZWZvcmVXb3JrZXJEZXN0cm8KKyAgIC8vIEZpcnN0 IGRpc2Nvbm5lY3QgdGhlIGNyZWF0b3IncyBub2RlIGZyb20gdGhpcyB3b3JrZXIgbm9kZS4KKyAK KyAgIGFic2w6OnZpc2l0KAorLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCisrICAgICAgYmFzZTo6 T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgWyYsCisgICAgICAgICAgICB0aGlzXShjb25zdCBjb250 ZW50OjpHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAg ICAgICAgICAgICBSZW1vdmVGcmFtZUNsaWVudENvbm5lY3Rpb24od29ya2VyX25vZGUuZ2V0KCks CitAQCAtMjc5LDcgKzI3OSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25CZWZvcmVXb3JrZXJE ZXN0cm8KKyAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0ZWRXb3JrZXJUb2tlbiBk ZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7CisgICAgICAgICAgICAgRGlzY29ubmVjdERlZGljYXRl ZFdvcmtlckNsaWVudCh3b3JrZXJfbm9kZS5nZXQoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pOworLSAgICAgICAg ICB9KSwKKysgICAgICAgICAgfX0sCisgICAgICAgY3JlYXRvcik7CisgCisgICAvLyBEaXNjb25u ZWN0IGFsbCBjaGlsZCB3b3JrZXJzIGJlZm9yZSBkZXN0cm95aW5nIHRoZSBub2RlLgorQEAgLTQ1 Niw3ICs0NTYsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZUFkZGVkKAorICAg ICBjb25zdCBzdGQ6OnN0cmluZyYgY2xpZW50X3V1aWQsCisgICAgIGNvbnN0IGNvbnRlbnQ6OlNl cnZpY2VXb3JrZXJDbGllbnRJbmZvJiBjbGllbnRfaW5mbykgeworICAgYWJzbDo6dmlzaXQoCist ICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKKysgICAgICBiYXNlOjpPdmVybG9hZGVkeworICAgICAg ICAgICBbJiwgdGhpc10oY29udGVudDo6R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2Zy YW1lX2hvc3RfaWQpIHsKKyAgICAgICAgICAgICAvLyBGb3Igd2luZG93IGNsaWVudHMsIGl0IGlz IG5lY2Vzc2FyeSB0byB3YWl0IHVudGlsIHRoZSBuYXZpZ2F0aW9uCisgICAgICAgICAgICAgLy8g aGFzIGNvbW1pdHRlZCB0byBhIFJlbmRlckZyYW1lSG9zdC4KK0BAIC00OTQsNyArNDk0LDcgQEAg dm9pZCBXb3JrZXJXYXRjaGVyOjpPbkNvbnRyb2xsZWVBZGRlZCgKKyAgICAgICAgICAgICAgIENv bm5lY3RTaGFyZWRXb3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7CisgICAg ICAgICAgICAgfQorLSAgICAgICAgICB9KSwKKysgICAgICAgICAgfX0sCisgICAgICAgY2xpZW50 X2luZm8pOworIH0KKyAKK0BAIC01MzQsNyArNTM0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpP bkNvbnRyb2xsZWVSZW1vdmVkKAorICAgICByZXR1cm47CisgCisgICBhYnNsOjp2aXNpdCgKKy0g ICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAg ICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJh bWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50Q29ubmVjdGlvbih3 b3JrZXJfbm9kZSwgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpOworICAgICAgICAgICB9LAorQEAgLTU0 NCw3ICs1NDQsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCisg ICAgICAgICAgIH0sCisgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9r ZW4gc2hhcmVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgIERpc2Nvbm5lY3RTaGFyZWRX b3JrZXJDbGllbnQod29ya2VyX25vZGUsIHNoYXJlZF93b3JrZXJfdG9rZW4pOworLSAgICAgICAg ICB9KSwKKysgICAgICAgICAgfX0sCisgICAgICAgY2xpZW50KTsKKyB9CisgCitAQCAtODIwLDcg KzgyMCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6Q29ubmVjdEFsbFNlcnZpY2VXb3IKKyAKKyAg IGZvciAoY29uc3QgYXV0byYga3YgOiBpdC0+c2Vjb25kKSB7CisgICAgIGFic2w6OnZpc2l0KAor LSAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKKysgICAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7Cisg ICAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkIHJl bmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAgICAgICAgICBBZGRGcmFtZUNsaWVudENvbm5l Y3Rpb24oc2VydmljZV93b3JrZXJfbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICByZW5kZXJfZnJhbWVfaG9zdF9pZCk7CitAQCAtODMyLDcgKzgzMiw3IEBAIHZv aWQgV29ya2VyV2F0Y2hlcjo6Q29ubmVjdEFsbFNlcnZpY2VXb3IKKyAgICAgICAgICAgICBbJiwg dGhpc10oYmxpbms6OlNoYXJlZFdvcmtlclRva2VuIHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKKyAg ICAgICAgICAgICAgIENvbm5lY3RTaGFyZWRXb3JrZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9k ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtl cl90b2tlbik7CistICAgICAgICAgICAgfSksCisrICAgICAgICAgICAgfX0sCisgICAgICAgICBr di5zZWNvbmQpOworICAgfQorIH0KK0BAIC04NDcsNyArODQ3LDcgQEAgdm9pZCBXb3JrZXJXYXRj aGVyOjpEaXNjb25uZWN0QWxsU2VydmljZQorIAorICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0 LT5zZWNvbmQpIHsKKyAgICAgYWJzbDo6dmlzaXQoCistICAgICAgICBiYXNlOjpPdmVybG9hZGVk KAorKyAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgICBbJiwgdGhpc10oCisg ICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiBy ZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgICAgUmVtb3ZlRnJhbWVDbGllbnRD b25uZWN0aW9uKHNlcnZpY2Vfd29ya2VyX25vZGUsCitAQCAtODYxLDcgKzg2MSw3IEBAIHZvaWQg V29ya2VyV2F0Y2hlcjo6RGlzY29ubmVjdEFsbFNlcnZpY2UKKyAgICAgICAgICAgICBbJiwgdGhp c10oY29uc3QgYmxpbms6OlNoYXJlZFdvcmtlclRva2VuJiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7 CisgICAgICAgICAgICAgICBEaXNjb25uZWN0U2hhcmVkV29ya2VyQ2xpZW50KHNlcnZpY2Vfd29y a2VyX25vZGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNo YXJlZF93b3JrZXJfdG9rZW4pOworLSAgICAgICAgICAgIH0pLAorKyAgICAgICAgICAgIH19LAor ICAgICAgICAga3Yuc2Vjb25kKTsKKyAgIH0KKyB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9lbWJlZGRlci9za2lhX291dHB1 dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5X2VtYmVkZGVyL3Nr aWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxheV9lbWJlZGRlci9za2lhX291dHB1dF9z dXJmYWNlX2ltcGxfb25fZ3B1LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkg MTg6MDE6MTIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21w b25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9p bXBsX29uX2dwdS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjQ5OTkxNTY1MyArMDIwMAorQEAgLTE3 MTksNyArMTcxOSw3IEBAIHZvaWQgU2tpYU91dHB1dFN1cmZhY2VJbXBsT25HcHU6OkNvcHlPdXQK KyAKKyAgICAgICAvLyBJc3N1ZSByZWFkYmFja3MgZnJvbSB0aGUgc3VyZmFjZXM6CisgICAgICAg Zm9yIChzaXplX3QgaSA9IDA7IGkgPCBDb3B5T3V0cHV0UmVzdWx0OjprTlYxMk1heFBsYW5lczsg KytpKSB7CistICAgICAgICBTa0lTaXplIHNpemUocGxhbmVfc3VyZmFjZXNbaV0tPndpZHRoKCks IHBsYW5lX3N1cmZhY2VzW2ldLT5oZWlnaHQoKSk7CisrICAgICAgICBTa0lTaXplIHNpemV7cGxh bmVfc3VyZmFjZXNbaV0tPndpZHRoKCksIHBsYW5lX3N1cmZhY2VzW2ldLT5oZWlnaHQoKX07Cisg ICAgICAgICBTa0ltYWdlSW5mbyBkc3RfaW5mbyA9IFNrSW1hZ2VJbmZvOjpNYWtlKAorICAgICAg ICAgICAgIHNpemUsIChpID09IDApID8ga0FscGhhXzhfU2tDb2xvclR5cGUgOiBrUjhHOF91bm9y bV9Ta0NvbG9yVHlwZSwKKyAgICAgICAgICAgICBrVW5wcmVtdWxfU2tBbHBoYVR5cGUpOworZGlm ZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2 ZV9wYWNrYWdlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYworLS0tIGNocm9taXVt LTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYy5u b19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjEyLjAwMDAwMDAwMCArMDIw MAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3Nh dmVfcGFja2FnZS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUwMDkxNTY3NiArMDIwMAorQEAgLTgw Miw4ICs4MDIsOCBAQCB2b2lkIFNhdmVQYWNrYWdlOjpGaW5pc2goKSB7CisgICBpZiAoZG93bmxv YWRfKSB7CisgICAgIHN0ZDo6dmVjdG9yPGRvd25sb2FkOjpEb3dubG9hZFNhdmVJdGVtRGF0YTo6 SXRlbUluZm8+IGZpbGVzOworICAgICBmb3IgKGF1dG8mIGl0ZW0gOiBzYXZlZF9zdWNjZXNzX2l0 ZW1zXykgeworLSAgICAgIGZpbGVzLmVtcGxhY2VfYmFjayhpdGVtLnNlY29uZC0+ZnVsbF9wYXRo KCksIGl0ZW0uc2Vjb25kLT51cmwoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5z ZWNvbmQtPnJlZmVycmVyKCkudXJsKTsKKysgICAgICBmaWxlcy5lbXBsYWNlX2JhY2soKSA9IHtp dGVtLnNlY29uZC0+ZnVsbF9wYXRoKCksIGl0ZW0uc2Vjb25kLT51cmwoKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgaXRlbS5zZWNvbmQtPnJlZmVycmVyKCkudXJsfTsKKyAgICAgfQorICAg ICBkb3dubG9hZDo6RG93bmxvYWRTYXZlSXRlbURhdGE6OkF0dGFjaEl0ZW1EYXRhKGRvd25sb2Fk Xywgc3RkOjptb3ZlKGZpbGVzKSk7CisgICB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYy5u b19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJv d3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2ZyYW1lX2NvbmZpZy5jYworLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJhbWVfY29u ZmlnLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MTIuMDAwMDAw MDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvZmVu Y2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9jb25maWcuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41MDA5 MTU2NzYgKzAyMDAKK0BAIC00MDcsNyArNDA3LDcgQEAgdm9pZCBGZW5jZWRGcmFtZVByb3BlcnRp ZXM6OlVwZGF0ZVBhcmVudAorICAgICAgICAgZmVhdHVyZSwgYWxsb3dfbGlzdC5BbGxvd2VkT3Jp Z2lucygpLCBhbGxvd19saXN0LlNlbGZJZk1hdGNoZXMoKSwKKyAgICAgICAgIGFsbG93X2xpc3Qu TWF0Y2hlc0FsbCgpLCBhbGxvd19saXN0Lk1hdGNoZXNPcGFxdWVTcmMoKSk7CisgICB9CistICBw YXJlbnRfcGVybWlzc2lvbnNfaW5mb18uZW1wbGFjZShwYXJzZWRfcG9saWNpZXMsIHBhcmVudF9v cmlnaW4pOworKyAgcGFyZW50X3Blcm1pc3Npb25zX2luZm9fLmVtcGxhY2UoKSA9IHtwYXJzZWRf cG9saWNpZXMsIHBhcmVudF9vcmlnaW59OworIH0KKyAKKyB9ICAvLyBuYW1lc3BhY2UgY29udGVu dAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvZmlyc3Rf cGFydHlfc2V0cy9maXJzdF9wYXJ0eV9zZXRfcGFyc2VyLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3Nl dHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjEyLjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ZpcnN0X3Bh cnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUw MTkxNTcwMSArMDIwMAorQEAgLTc3NCw3ICs3NzQsNyBAQCBGaXJzdFBhcnR5U2V0UGFyc2VyOjpQ YXJzZVNldHNGcm9tRW50ZXJwCisgICAgICAgICAgICAgICAgICAgICAgY29udGV4dC5HZXRQb2xp Y3lTZXRzRnJvbUxpc3QoCisgICAgICAgICAgICAgICAgICAgICAgICAgIHBvbGljeS5GaW5kTGlz dChrRmlyc3RQYXJ0eVNldFBvbGljeUFkZGl0aW9uc0ZpZWxkKSwKKyAgICAgICAgICAgICAgICAg ICAgICAgICAgUG9saWN5U2V0VHlwZTo6a0FkZGl0aW9uKSk7CistICAgIHJldHVybiBQYXJzZWRQ b2xpY3lTZXRMaXN0cyhzdGQ6Om1vdmUocmVwbGFjZW1lbnRzKSwgc3RkOjptb3ZlKGFkZGl0aW9u cykpOworKyAgICByZXR1cm4gUGFyc2VkUG9saWN5U2V0TGlzdHN7c3RkOjptb3ZlKHJlcGxhY2Vt ZW50cyksIHN0ZDo6bW92ZShhZGRpdGlvbnMpfTsKKyAgIH0oKTsKKyAKKyAgIGNvbnRleHQuUG9z dFByb2Nlc3NTZXRMaXN0cyhzZXRfbGlzdHMpOworZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jb250ZW50L2Jyb3dzZXIvZ3B1L2NvbXBvc2l0b3JfdXRpbC5jYy5ub19tYXRjaGluZ19j b25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9ncHUvY29t cG9zaXRvcl91dGlsLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dz ZXIvZ3B1L2NvbXBvc2l0b3JfdXRpbC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1 LTI5IDE4OjAxOjEyLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29udGVudC9icm93c2VyL2dwdS9jb21wb3NpdG9yX3V0aWwuY2MJMjAyNC0wNi0wMiAyMzo1MToy NS41MDE5MTU3MDEgKzAyMDAKK0BAIC0xMDgsNyArMTA4LDcgQEAgc3RkOjp2ZWN0b3I8R3B1RmVh dHVyZURhdGE+IEdldEdwdUZlYXR1cgorICAgICAgICpiYXNlOjpDb21tYW5kTGluZTo6Rm9yQ3Vy cmVudFByb2Nlc3MoKTsKKyAKKyAgIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBmZWF0dXJl czsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygp ID0geworICAgICAgICIyZF9jYW52YXMiLAorICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAor ICAgICAgICAgICBncHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxF UkFURURfMkRfQ0FOVkFTLAorQEAgLTExNiwxMyArMTE2LDEzIEBAIHN0ZDo6dmVjdG9yPEdwdUZl YXR1cmVEYXRhPiBHZXRHcHVGZWF0dXIKKyAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAg ICAgICAgICAgIkFjY2VsZXJhdGVkIDJEIGNhbnZhcyBpcyB1bmF2YWlsYWJsZTogZWl0aGVyIGRp c2FibGVkICIKKyAgICAgICAgICAgInZpYSBibG9ja2xpc3Qgb3IgdGhlIGNvbW1hbmQgbGluZS4i KSwKKy0gICAgICB0cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVl fTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJjYW52YXNfb29wX3Jh c3Rlcml6YXRpb24iLAorICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBn cHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQ0FOVkFTX09PUF9SQVNURVJJ WkFUSU9OLAorLSAgICAgICAgICBjb21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRjaGVzOjprRGlz YWJsZUFjY2VsZXJhdGVkMmRDYW52YXMpKSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisr ICAgICAgICAgIGNvbW1hbmRfbGluZS5IYXNTd2l0Y2goc3dpdGNoZXM6OmtEaXNhYmxlQWNjZWxl cmF0ZWQyZENhbnZhcykpfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAg ICJncHVfY29tcG9zaXRpbmciLAorICAgICAgIC8vIFRPRE8ocml2cik6IFJlcGxhY2Ugd2l0aCBh IGNoZWNrIHRvIHNlZSB3aGljaCBiYWNrZW5kIGlzIHVzZWQgZm9yCisgICAgICAgLy8gY29tcG9z aXRpbmc7IGRvIHRoZSBzYW1lIGZvciBHUFUgcmFzdGVyaXphdGlvbiBpZiBpdCdzIGVuYWJsZWQu IEZvcgorQEAgLTEzNiwxNiArMTM2LDE2IEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRhPiBH ZXRHcHVGZWF0dXIKKyAgICAgICAgICAgImFib3V0OmZsYWdzICIKKyAgICAgICAgICAgIm9yIHRo ZSBjb21tYW5kIGxpbmUuIFRoZSBicm93c2VyIHdpbGwgZmFsbCBiYWNrIHRvIHNvZnR3YXJlICIK KyAgICAgICAgICAgImNvbXBvc2l0aW5nIGFuZCBoYXJkd2FyZSBhY2NlbGVyYXRpb24gd2lsbCBi ZSB1bmF2YWlsYWJsZS4iKSwKKy0gICAgICB0cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFj aygKKysgICAgICB0cnVlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAg ICJ3ZWJnbCIsCisgICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywK KyAgICAgICAgICAgICAgICAgICAgICAgICAgICBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxF UkFURURfV0VCR0wsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZF9saW5lLkhh c1N3aXRjaChzd2l0Y2hlczo6a0Rpc2FibGVXZWJHTCkpLAorICAgICAgIERpc2FibGVJbmZvOjpQ cm9ibGVtKAorICAgICAgICAgICAiV2ViR0wgaGFzIGJlZW4gZGlzYWJsZWQgdmlhIGJsb2NrbGlz dCBvciB0aGUgY29tbWFuZCBsaW5lLiIpLAorLSAgICAgIGZhbHNlKTsKKy0gIGZlYXR1cmVzLmVt cGxhY2VfYmFjaygKKysgICAgICBmYWxzZX07CisrICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9 IHsKKyAgICAgICAidmlkZW9fZGVjb2RlIiwKKyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygK KyAgICAgICAgICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VM RVJBVEVEX1ZJREVPX0RFQ09ERSwKK0BAIC0xNTYsOCArMTU2LDggQEAgc3RkOjp2ZWN0b3I8R3B1 RmVhdHVyZURhdGE+IEdldEdwdUZlYXR1cgorICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAor ICAgICAgICAgICAiQWNjZWxlcmF0ZWQgdmlkZW8gZGVjb2RlIGhhcyBiZWVuIGRpc2FibGVkLCBl aXRoZXIgdmlhIGJsb2NrbGlzdCwgIgorICAgICAgICAgICAiYWJvdXQ6ZmxhZ3Mgb3IgdGhlIGNv bW1hbmQgbGluZS4iKSwKKy0gICAgICB0cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygK KysgICAgICB0cnVlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJ2 aWRlb19lbmNvZGUiLAorICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKAorICAgICAgICAgICBn cHVfZmVhdHVyZV9pbmZvLCBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfVklERU9f RU5DT0RFLAorQEAgLTE2OSwzMyArMTY5LDMzIEBAIHN0ZDo6dmVjdG9yPEdwdUZlYXR1cmVEYXRh PiBHZXRHcHVGZWF0dXIKKyAgICAgICBEaXNhYmxlSW5mbzo6UHJvYmxlbSgKKyAgICAgICAgICAg IkFjY2VsZXJhdGVkIHZpZGVvIGVuY29kZSBoYXMgYmVlbiBkaXNhYmxlZCwgZWl0aGVyIHZpYSBi bG9ja2xpc3QsICIKKyAgICAgICAgICAgImFib3V0OmZsYWdzIG9yIHRoZSBjb21tYW5kIGxpbmUu IiksCistICAgICAgdHJ1ZSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICAgICAgdHJ1 ZX07CisrICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAicmFzdGVyaXphdGlv biIsCisgICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywKKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICBncHU6OkdQVV9GRUFUVVJFX1RZUEVfR1BVX1RJTEVfUkFT VEVSSVpBVElPTiksCisgICAgICAgRGlzYWJsZUluZm86OlByb2JsZW0oCisgICAgICAgICAgICJB Y2NlbGVyYXRlZCByYXN0ZXJpemF0aW9uIGhhcyBiZWVuIGRpc2FibGVkLCBlaXRoZXIgdmlhIGJs b2NrbGlzdCwgIgorICAgICAgICAgICAiYWJvdXQ6ZmxhZ3Mgb3IgdGhlIGNvbW1hbmQgbGluZS4i KSwKKy0gICAgICB0cnVlKTsKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgICAgICB0cnVl fTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJvcGVuZ2wiLCBTYWZl R2V0RmVhdHVyZVN0YXR1cyhncHVfZmVhdHVyZV9pbmZvLAorLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBncHU6OkdQVV9GRUFUVVJFX1RZUEVfQUNDRUxFUkFURURfR0wpKTsK KysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9U WVBFX0FDQ0VMRVJBVEVEX0dMKX07CisgI2lmIEJVSUxERkxBRyhFTkFCTEVfVlVMS0FOKQorLSAg ZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAorKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7Cisg ICAgICAgInZ1bGthbiIsCistICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVf aW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1ZVTEtBTikpOworKyAgICAgIFNhZmVHZXRGZWF0 dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9WVUxLQU4p fTsKKyAjZW5kaWYKKy0gIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygKKysgIGZlYXR1cmVzLmVtcGxh Y2VfYmFjaygpID0geworICAgICAgICJtdWx0aXBsZV9yYXN0ZXJfdGhyZWFkcyIsCistICAgICAg R2V0RmFrZUZlYXR1cmVTdGF0dXMoTnVtYmVyT2ZSZW5kZXJlclJhc3RlclRocmVhZHMoKSA+IDEp KTsKKysgICAgICBHZXRGYWtlRmVhdHVyZVN0YXR1cyhOdW1iZXJPZlJlbmRlcmVyUmFzdGVyVGhy ZWFkcygpID4gMSl9OworICNpZiBCVUlMREZMQUcoSVNfQU5EUk9JRCkKKy0gIGZlYXR1cmVzLmVt cGxhY2VfYmFjaygKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJzdXJm YWNlX2NvbnRyb2wiLAorICAgICAgIFNhZmVHZXRGZWF0dXJlU3RhdHVzKGdwdV9mZWF0dXJlX2lu Zm8sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FO RFJPSURfU1VSRkFDRV9DT05UUk9MKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1 OjpHUFVfRkVBVFVSRV9UWVBFX0FORFJPSURfU1VSRkFDRV9DT05UUk9MKX07CisgI2VuZGlmCist ICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisrICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soKSA9IHsK KyAgICAgICAid2ViZ2wyIiwKKyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cygKKyAgICAgICAg ICAgZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX0FDQ0VMRVJBVEVEX1dF QkdMMiwKK0BAIC0yMDMsMTIgKzIwMywxMiBAQCBzdGQ6OnZlY3RvcjxHcHVGZWF0dXJlRGF0YT4g R2V0R3B1RmVhdHVyCisgICAgICAgICAgICAgICBjb21tYW5kX2xpbmUuSGFzU3dpdGNoKHN3aXRj aGVzOjprRGlzYWJsZVdlYkdMMikpLAorICAgICAgIERpc2FibGVJbmZvOjpQcm9ibGVtKAorICAg ICAgICAgICAiV2ViR0wyIGhhcyBiZWVuIGRpc2FibGVkIHZpYSBibG9ja2xpc3Qgb3IgdGhlIGNv bW1hbmQgbGluZS4iKSwKKy0gICAgICBmYWxzZSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2so InJhd19kcmF3IiwKKy0gICAgICAgICAgICAgICAgICAgICAgICBHZXRGYWtlRmVhdHVyZVN0YXR1 cyhmZWF0dXJlczo6SXNVc2luZ1Jhd0RyYXcoKSkpOworLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNr KCJkaXJlY3RfcmVuZGVyaW5nX2Rpc3BsYXlfY29tcG9zaXRvciIsCistICAgICAgICAgICAgICAg ICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVhdHVyZXM6OklzRHJEY0VuYWJsZWQoKSkp OworLSAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKAorKyAgICAgIGZhbHNlfTsKKysgIGZlYXR1cmVz LmVtcGxhY2VfYmFjaygpID0geyJyYXdfZHJhdyIsCisrICAgICAgICAgICAgICAgICAgICAgICAg R2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVhdHVyZXM6OklzVXNpbmdSYXdEcmF3KCkpfTsKKysgIGZl YXR1cmVzLmVtcGxhY2VfYmFjaygpID0geyJkaXJlY3RfcmVuZGVyaW5nX2Rpc3BsYXlfY29tcG9z aXRvciIsCisrICAgICAgICAgICAgICAgICAgICAgICAgR2V0RmFrZUZlYXR1cmVTdGF0dXMoZmVh dHVyZXM6OklzRHJEY0VuYWJsZWQoKSl9OworKyAgZmVhdHVyZXMuZW1wbGFjZV9iYWNrKCkgPSB7 CisgICAgICAgIndlYmdwdSIsCisgICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoCisgICAgICAg ICAgIGdwdV9mZWF0dXJlX2luZm8sIGdwdTo6R1BVX0ZFQVRVUkVfVFlQRV9BQ0NFTEVSQVRFRF9X RUJHUFUsCitAQCAtMjE2LDE0ICsyMTYsMTQgQEAgc3RkOjp2ZWN0b3I8R3B1RmVhdHVyZURhdGE+ IEdldEdwdUZlYXR1cgorICAgICAgICAgICAgICAgIWJhc2U6OkZlYXR1cmVMaXN0OjpJc0VuYWJs ZWQoOjpmZWF0dXJlczo6a1dlYkdQVVNlcnZpY2UpKSwKKyAgICAgICBEaXNhYmxlSW5mbzo6UHJv YmxlbSgKKyAgICAgICAgICAgIldlYkdQVSBoYXMgYmVlbiBkaXNhYmxlZCB2aWEgYmxvY2tsaXN0 IG9yIHRoZSBjb21tYW5kIGxpbmUuIiksCistICAgICAgZmFsc2UpOworLSAgZmVhdHVyZXMuZW1w bGFjZV9iYWNrKAorKyAgICAgIGZhbHNlfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0g eworICAgICAgICJza2lhX2dyYXBoaXRlIiwKKyAgICAgICBTYWZlR2V0RmVhdHVyZVN0YXR1cyhn cHVfZmVhdHVyZV9pbmZvLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGdwdTo6R1BVX0ZF QVRVUkVfVFlQRV9TS0lBX0dSQVBISVRFKSk7CistICBmZWF0dXJlcy5lbXBsYWNlX2JhY2soCisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1NLSUFfR1JB UEhJVEUpfTsKKysgIGZlYXR1cmVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICJ3ZWJubiIs CistICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2ZlYXR1cmVfaW5mbywgZ3B1OjpHUFVf RkVBVFVSRV9UWVBFX1dFQk5OKSk7CisrICAgICAgU2FmZUdldEZlYXR1cmVTdGF0dXMoZ3B1X2Zl YXR1cmVfaW5mbywgZ3B1OjpHUFVfRkVBVFVSRV9UWVBFX1dFQk5OKX07CisgICByZXR1cm4gZmVh dHVyZXM7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jy b3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jy b3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgK Ky0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91 cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuaC5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjEyLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3Rf ZnJvbV9zZWxsZXJfc2lnbmFscy5oCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTAxOTE1NzAxICswMjAw CitAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNzIENPTlRFTlRfRVhQT1JUIEhlYWRlckRpcmVjdEZy b21TZWwKKyAKKyAgICAgLy8gVGhlIEFkLUF1Y3Rpb24tU2lnbmFscyByZXNwb25zZSBzZXJ2ZWQg YnkgYG9yaWdpbmAuCisgICAgIHN0ZDo6c3RyaW5nIHJlc3BvbnNlX2pzb247CisrICAgIFVucHJv Y2Vzc2VkUmVzcG9uc2UoYXV0byB1LCBhdXRvIHMpIDogb3JpZ2luKHUpLCByZXNwb25zZV9qc29u KHMpIHsgfQorICAgfTsKKyAKKyAgIC8vIEluZm9ybWF0aW9uIGZyb20gUGFyc2VBbmRGaW5kKCkg Y2FsbHMgdXNlZCBieSBQYXJzZUFuZEZpbmRDb21wbGV0ZWQuCitkaWZmIC11cCBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91 cF9hdWN0aW9uLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX2F1Y3Rpb24u Y2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9n cm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIw MjQtMDUtMjkgMTg6MDE6MTIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlv bi5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUwMzkxNTc0OCArMDIwMAorQEAgLTYxNiw3ICs2MTYs NyBAQCBib29sIFNhbXBsZURlYnVnUmVwb3J0KAorICAgICAgICBibGluazo6ZmVhdHVyZXM6OmtG bGVkZ2VEZWJ1Z1JlcG9ydFJlc3RyaWN0ZWRDb29sZG93bi5HZXQoKSAhPQorICAgICAgICAgICAg YmFzZTo6TWlsbGlzZWNvbmRzKDApKSkgeworICAgICBuZXdfZGVidWdfcmVwb3J0X2xvY2tvdXRf YW5kX2Nvb2xkb3ducy5kZWJ1Z19yZXBvcnRfY29vbGRvd25fbWFwW29yaWdpbl0gPQorLSAgICAg ICAgRGVidWdSZXBvcnRDb29sZG93bihub3dfbmVhcmVzdF9uZXh0X2hvdXIsIGNvb2xkb3duX3R5 cGUpOworKyAgICAgICAgRGVidWdSZXBvcnRDb29sZG93bntub3dfbmVhcmVzdF9uZXh0X2hvdXIs IGNvb2xkb3duX3R5cGV9OworICAgfQorIAorICAgcmV0dXJuIGNhbl9zZW5kX2RlYnVnX3JlcG9y dDsKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ludGVy ZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0 b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAv aW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2Mubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMToxMi4wMDAwMDAwMDAgKzAyMDAK KysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91 cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjCTIwMjQtMDYtMDQgMTM6MjM6NDguMjc5NTAxMDE3 ICswMjAwCitAQCAtMjA0LDggKzIwNCw4IEBAIGJsaW5rOjpJbnRlcmVzdEdyb3VwOjpBZCBGcm9t SW50ZXJlc3RHcm8KKyAgICAgICBmb3IgKGNvbnN0IGF1dG8mIG9yaWdpbiA6ICptYXliZV9hbGxv d2VkX3JlcG9ydGluZ19vcmlnaW5zKSB7CisgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyogb3Jp Z2luX3N0ciA9IG9yaWdpbi5HZXRJZlN0cmluZygpOworICAgICAgICAgRENIRUNLKG9yaWdpbl9z dHIpOworLSAgICAgICAgYWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2luc192ZWN0b3IuZW1wbGFjZV9i YWNrKAorLSAgICAgICAgICAgIERlc2VyaWFsaXplT3JpZ2luKCpvcmlnaW5fc3RyKSk7CisrICAg ICAgICBhbGxvd2VkX3JlcG9ydGluZ19vcmlnaW5zX3ZlY3Rvci5lbXBsYWNlX2JhY2soKSA9IHsK KysgICAgICAgICAgICBEZXNlcmlhbGl6ZU9yaWdpbigqb3JpZ2luX3N0cil9OworICAgICAgIH0K KyAgICAgICByZXN1bHQuYWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2lucyA9CisgICAgICAgICAgIHN0 ZDo6bW92ZShhbGxvd2VkX3JlcG9ydGluZ19vcmlnaW5zX3ZlY3Rvcik7CitAQCAtMjQ5LDcgKzI0 OSw3IEBAIHN0ZDo6b3B0aW9uYWw8YmFzZTo6ZmxhdF9tYXA8c3RkOjpzdHJpbmcKKyAgICAgaWYg KCFwYWlyLnNlY29uZC5pc19kb3VibGUoKSkgeworICAgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7 CisgICAgIH0KKy0gICAgcGFpcnMuZW1wbGFjZV9iYWNrKHBhaXIuZmlyc3QsIHBhaXIuc2Vjb25k LkdldERvdWJsZSgpKTsKKysgICAgcGFpcnMuZW1wbGFjZV9iYWNrKCkgPSB7cGFpci5maXJzdCwg cGFpci5zZWNvbmQuR2V0RG91YmxlKCl9OworICAgfQorICAgcmV0dXJuIGJhc2U6OmZsYXRfbWFw PHN0ZDo6c3RyaW5nLCBkb3VibGU+KHN0ZDo6bW92ZShwYWlycykpOworIH0KK0BAIC0zMDcsOCAr MzA3LDggQEAgRGVzZXJpYWxpemVJbnRlcmVzdEdyb3VwQWRWZWN0b3JKc29uKGNvbgorICAgZm9y IChjb25zdCBhdXRvJiBhZF92YWx1ZSA6IGFkc192YWx1ZS0+R2V0TGlzdCgpKSB7CisgICAgIGNv bnN0IGJhc2U6OlZhbHVlOjpEaWN0KiBkaWN0ID0gYWRfdmFsdWUuR2V0SWZEaWN0KCk7CisgICAg IGlmIChkaWN0KSB7CistICAgICAgcmVzdWx0LmVtcGxhY2VfYmFjaygKKy0gICAgICAgICAgRnJv bUludGVyZXN0R3JvdXBBZFZhbHVlKHBhc3NrZXksICpkaWN0LCBmb3JfY29tcG9uZW50cykpOwor KyAgICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soKSA9IHsKKysgICAgICAgICAgRnJvbUludGVyZXN0 R3JvdXBBZFZhbHVlKHBhc3NrZXksICpkaWN0LCBmb3JfY29tcG9uZW50cyl9OworICAgICB9Cisg ICB9CisgICByZXR1cm4gcmVzdWx0OworQEAgLTM1Miw4ICszNTIsOCBAQCBEZXNlcmlhbGl6ZUlu dGVyZXN0R3JvdXBBZFZlY3RvclByb3RvKGNvCisgICAgICAgICAgIGFkX3Byb3RvLmFsbG93ZWRf cmVwb3J0aW5nX29yaWdpbnNfc2l6ZSgpKTsKKyAgICAgICBmb3IgKGNvbnN0IHN0ZDo6c3RyaW5n JiBhbGxvd2VkX3JlcG9ydGluZ19vcmlnaW4gOgorICAgICAgICAgICAgYWRfcHJvdG8uYWxsb3dl ZF9yZXBvcnRpbmdfb3JpZ2lucygpKSB7CistICAgICAgICBhbGxvd2VkX3JlcG9ydGluZ19vcmln aW5zX3ZlY3Rvci5lbXBsYWNlX2JhY2soCistICAgICAgICAgICAgRGVzZXJpYWxpemVPcmlnaW4o YWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2luKSk7CisrICAgICAgICBhbGxvd2VkX3JlcG9ydGluZ19v cmlnaW5zX3ZlY3Rvci5lbXBsYWNlX2JhY2soKSA9IHsKKysgICAgICAgICAgICBEZXNlcmlhbGl6 ZU9yaWdpbihhbGxvd2VkX3JlcG9ydGluZ19vcmlnaW4pfTsKKyAgICAgICB9CisgICAgICAgYWQu YWxsb3dlZF9yZXBvcnRpbmdfb3JpZ2lucyA9CisgICAgICAgICAgIHN0ZDo6bW92ZShhbGxvd2Vk X3JlcG9ydGluZ19vcmlnaW5zX3ZlY3Rvcik7CitAQCAtNDAwLDEzICs0MDAsMTMgQEAgRGVzZXJp YWxpemVTdHJpbmdTaXplTWFwKGNvbnN0IHN0ZDo6c3RyaQorICAgICBpZiAoIXdpZHRoX3ZhbCB8 fCAhd2lkdGhfdW5pdHNfdmFsIHx8ICFoZWlnaHRfdmFsIHx8ICFoZWlnaHRfdW5pdHNfdmFsKSB7 CisgICAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgICAgfQorLSAgICByZXN1bHQuZW1wbGFj ZV9iYWNrKGVudHJ5LmZpcnN0LAorKyAgICByZXN1bHQuZW1wbGFjZV9iYWNrKCkgPSB7ZW50cnku Zmlyc3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgYmxpbms6OkFkU2l6ZSh3aWR0aF92YWwt PkdldERvdWJsZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rh dGljX2Nhc3Q8Ymxpbms6OkFkU2l6ZTo6TGVuZ3RoVW5pdD4oCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgd2lkdGhfdW5pdHNfdmFsLT5HZXRJbnQoKSksCisgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWlnaHRfdmFsLT5HZXREb3VibGUo KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0YXRpY19jYXN0PGJs aW5rOjpBZFNpemU6Okxlbmd0aFVuaXQ+KAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGhlaWdodF91bml0c192YWwtPkdldEludCgpKSkpOworKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhlaWdodF91bml0c192YWwtPkdldEludCgp KSl9OworICAgfQorICAgcmV0dXJuIHJlc3VsdDsKKyB9CitAQCAtNDQwLDkgKzQ0MCw5IEBAIERl c2VyaWFsaXplU3RyaW5nU3RyaW5nVmVjdG9yTWFwKGNvbnN0IHMKKyAgICAgRENIRUNLKGxpc3Qg JiYgbGlzdC0+aXNfbGlzdCgpKTsKKyAgICAgc3RkOjp2ZWN0b3I8c3RkOjpzdHJpbmc+IHJlc3Vs dF9zaXplczsKKyAgICAgZm9yIChiYXNlOjpWYWx1ZSYgc2l6ZSA6IGxpc3QtPkdldExpc3QoKSkg eworLSAgICAgIHJlc3VsdF9zaXplcy5lbXBsYWNlX2JhY2soc2l6ZS5HZXRTdHJpbmcoKSk7Cisr ICAgICAgcmVzdWx0X3NpemVzLmVtcGxhY2VfYmFjaygpID0ge3NpemUuR2V0U3RyaW5nKCl9Owor ICAgICB9CistICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soZW50cnkuZmlyc3QsIHJlc3VsdF9zaXpl cyk7CisrICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soKSA9IHtlbnRyeS5maXJzdCwgcmVzdWx0X3Np emVzfTsKKyAgIH0KKyAgIHJldHVybiByZXN1bHQ7CisgfQorQEAgLTUxMiw4ICs1MTIsOCBAQCBE ZXNlcmlhbGl6ZVNlbGxlckNhcGFiaWxpdGllc01hcChjb25zdCBzCisgICAgIGlmICghYmFzZTo6 U3RyaW5nVG9JbnQ2NCgqdmFsdWVfc3RyaW5nLCAmdmFsdWVfYml0bWFzaykpIHsKKyAgICAgICBy ZXR1cm4gc3RkOjpudWxsb3B0OworICAgICB9CistICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soRGVz ZXJpYWxpemVPcmlnaW4oZW50cnkuZmlyc3QpLAorLSAgICAgICAgICAgICAgICAgICAgICAgIERl c2VyaWFsaXplU2VsbGVyQ2FwYWJpbGl0aWVzKHZhbHVlX2JpdG1hc2spKTsKKysgICAgcmVzdWx0 LmVtcGxhY2VfYmFjaygpID0ge0Rlc2VyaWFsaXplT3JpZ2luKGVudHJ5LmZpcnN0KSwKKysgICAg ICAgICAgICAgICAgICAgICAgICBEZXNlcmlhbGl6ZVNlbGxlckNhcGFiaWxpdGllcyh2YWx1ZV9i aXRtYXNrKX07CisgICB9CisgICByZXR1cm4gcmVzdWx0OworIH0KK0BAIC0yNDk5LDcgKzI0OTks NyBAQCBzdGQ6Om9wdGlvbmFsPHN0ZDo6dmVjdG9yPHN0ZDo6c3RyaW5nPj4KKyAgICAgaWYgKCFE b1JlbW92ZUludGVyZXN0R3JvdXAoZGIsIGJsaW5rOjpJbnRlcmVzdEdyb3VwS2V5KG93bmVyLCBu YW1lKSkpIHsKKyAgICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgICB9CistICAgIGNsZWFy ZWRfaW50ZXJlc3RfZ3JvdXBzLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUobmFtZSkpOworKyAgICBj bGVhcmVkX2ludGVyZXN0X2dyb3Vwcy5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUobmFtZSl9 OworICAgfQorICAgaWYgKCF0cmFuc2FjdGlvbi5Db21taXQoKSkgeworICAgICByZXR1cm4gc3Rk OjpudWxsb3B0OworQEAgLTM0MzIsNyArMzQzMiw3IEBAIGJvb2wgRG9SZW1vdmVJbnRlcmVzdEdy b3Vwc01hdGNoaW5nT3duZXIKKyAgIGxvYWQuQmluZFRpbWUoMiwgZXhwaXJpbmdfYWZ0ZXIpOwor IAorICAgd2hpbGUgKGxvYWQuU3RlcCgpKSB7CistICAgIG93bmVyX2pvaW5lcl9uYW1lcy5lbXBs YWNlX2JhY2sobG9hZC5Db2x1bW5TdHJpbmcoMCkpOworKyAgICBvd25lcl9qb2luZXJfbmFtZXMu ZW1wbGFjZV9iYWNrKCkgPSB7bG9hZC5Db2x1bW5TdHJpbmcoMCl9OworICAgfQorIAorICAgZm9y IChjb25zdCBhdXRvJiBuYW1lIDogb3duZXJfam9pbmVyX25hbWVzKSB7CitAQCAtMzQ2Miw4ICsz NDYyLDggQEAgRG9HZXRBbGxJbnRlcmVzdEdyb3VwT3duZXJKb2luZXJQYWlycyhzcQorICAgbG9h ZC5SZXNldCh0cnVlKTsKKyAgIGxvYWQuQmluZFRpbWUoMCwgZXhwaXJpbmdfYWZ0ZXIpOworICAg d2hpbGUgKGxvYWQuU3RlcCgpKSB7CistICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soRGVzZXJpYWxp emVPcmlnaW4obG9hZC5Db2x1bW5TdHJpbmcoMCkpLAorLSAgICAgICAgICAgICAgICAgICAgICAg IERlc2VyaWFsaXplT3JpZ2luKGxvYWQuQ29sdW1uU3RyaW5nKDEpKSk7CisrICAgIHJlc3VsdC5l bXBsYWNlX2JhY2soKSA9IHtEZXNlcmlhbGl6ZU9yaWdpbihsb2FkLkNvbHVtblN0cmluZygwKSks CisrICAgICAgICAgICAgICAgICAgICAgICAgRGVzZXJpYWxpemVPcmlnaW4obG9hZC5Db2x1bW5T dHJpbmcoMSkpfTsKKyAgIH0KKyAgIGlmICghbG9hZC5TdWNjZWVkZWQoKSkgeworICAgICByZXR1 cm4gc3RkOjpudWxsb3B0OworQEAgLTM1OTYsOSArMzU5Niw5IEBAIHN0ZDo6b3B0aW9uYWw8RGVi dWdSZXBvcnRDb29sZG93bj4gRG9HZXQKKyAgICAgcmV0dXJuIHN0ZDo6bnVsbG9wdDsKKyAgIH0K KyAKKy0gIHJldHVybiBEZWJ1Z1JlcG9ydENvb2xkb3duKGNvb2xkb3duX2RlYnVnZ2luZ19vbmx5 X3JlcG9ydC5Db2x1bW5UaW1lKDApLAorKyAgcmV0dXJuIERlYnVnUmVwb3J0Q29vbGRvd257Y29v bGRvd25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNvbHVtblRpbWUoMCksCisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBzdGF0aWNfY2FzdDxEZWJ1Z1JlcG9ydENvb2xkb3duVHlwZT4oCist ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vbGRvd25fZGVidWdnaW5nX29ubHlf cmVwb3J0LkNvbHVtbkludCgxKSkpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvb2xkb3duX2RlYnVnZ2luZ19vbmx5X3JlcG9ydC5Db2x1bW5JbnQoMSkpfTsKKyB9CisgCisg dm9pZCBEb0dldERlYnVnUmVwb3J0Q29vbGRvd25zKAorQEAgLTM3MjYsMTAgKzM3MjYsMTAgQEAg RG9HZXRLQW5vbnltaXR5RGF0YShzcWw6OkRhdGFiYXNlJiBkYiwKKyAKKyAgIHN0ZDo6dmVjdG9y PFN0b3JhZ2VJbnRlcmVzdEdyb3VwOjpLQW5vbnltaXR5RGF0YT4ga19hbm9uX2RhdGE7CisgICB3 aGlsZSAoaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuU3RlcCgpKSB7CistICAgIGtfYW5vbl9k YXRhLmVtcGxhY2VfYmFjaygKKysgICAga19hbm9uX2RhdGEuZW1wbGFjZV9iYWNrKCkgPSB7Cisg ICAgICAgICAvKmhhc2hlZF9rZXk9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5T dHJpbmcoMCksCisgICAgICAgICAvKmlzX2tfYW5vbnltb3VzPSovaW50ZXJlc3RfZ3JvdXBfa2Fu b25fcXVlcnkuQ29sdW1uQm9vbCgxKSwKKy0gICAgICAgIC8qbGFzdF91cGRhdGVkPSovaW50ZXJl c3RfZ3JvdXBfa2Fub25fcXVlcnkuQ29sdW1uVGltZSgyKSk7CisrICAgICAgICAvKmxhc3RfdXBk YXRlZD0qL2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblRpbWUoMil9OworICAgfQor ICAgaWYgKCFpbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5TdWNjZWVkZWQoKSkgeworICAgICBy ZXR1cm4gc3RkOjpudWxsb3B0OworQEAgLTM4MjYsMTIgKzM4MjYsMTIgQEAgRG9HZXRJbnRlcmVz dEdyb3Vwc0ZvclVwZGF0ZShzcWw6OkRhdGFiYQorICAgICAgIGNvbnRpbnVlOworICAgICB9Cisg CistICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soCisrICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soKSA9 IHsKKyAgICAgICAgIGJsaW5rOjpJbnRlcmVzdEdyb3VwS2V5KAorICAgICAgICAgICAgIG93bmVy LCBnZXRfaW50ZXJlc3RfZ3JvdXBfdXBkYXRlX3BhcmFtZXRlcnMuQ29sdW1uU3RyaW5nKDApKSwK KyAgICAgICAgIHVwZGF0ZV91cmwudmFsdWUoKSwKKyAgICAgICAgIERlc2VyaWFsaXplT3JpZ2lu KAorLSAgICAgICAgICAgIGdldF9pbnRlcmVzdF9ncm91cF91cGRhdGVfcGFyYW1ldGVycy5Db2x1 bW5TdHJpbmcoMikpKTsKKysgICAgICAgICAgICBnZXRfaW50ZXJlc3RfZ3JvdXBfdXBkYXRlX3Bh cmFtZXRlcnMuQ29sdW1uU3RyaW5nKDIpKX07CisgICB9CisgICBpZiAoIWdldF9pbnRlcmVzdF9n cm91cF91cGRhdGVfcGFyYW1ldGVycy5TdWNjZWVkZWQoKSkgeworICAgICByZXR1cm4gc3RkOjpu dWxsb3B0OworQEAgLTQwODAsOCArNDA4MCw4IEBAIERvR2V0SW50ZXJlc3RHcm91cE5hbWVzRm9y Sm9pbmluZ09yaWdpbigKKyAgIGxvYWQuQmluZFRpbWUoMSwgbm93KTsKKyAKKyAgIHdoaWxlIChs b2FkLlN0ZXAoKSkgeworLSAgICByZXN1bHQuZW1wbGFjZV9iYWNrKERlc2VyaWFsaXplT3JpZ2lu KGxvYWQuQ29sdW1uU3RyaW5nKDApKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBsb2FkLkNv bHVtblN0cmluZygxKSk7CisrICAgIHJlc3VsdC5lbXBsYWNlX2JhY2soKSA9IHtEZXNlcmlhbGl6 ZU9yaWdpbihsb2FkLkNvbHVtblN0cmluZygwKSksCisrICAgICAgICAgICAgICAgICAgICAgICAg bG9hZC5Db2x1bW5TdHJpbmcoMSl9OworICAgfQorICAgaWYgKCFsb2FkLlN1Y2NlZWRlZCgpKSB7 CisgICAgIHJldHVybiBzdGQ6Om51bGxvcHQ7CitAQCAtNDMxOSw5ICs0MzE5LDkgQEAgYm9vbCBD bGVhckV4cGlyZWRJbnRlcmVzdEdyb3VwcyhzcWw6OkRhdAorICAgZXhwaXJlZF9pbnRlcmVzdF9n cm91cC5CaW5kVGltZSgwLCBleHBpcmF0aW9uX2JlZm9yZSk7CisgICBzdGQ6OnZlY3RvcjxibGlu azo6SW50ZXJlc3RHcm91cEtleT4gZXhwaXJlZF9ncm91cHM7CisgICB3aGlsZSAoZXhwaXJlZF9p bnRlcmVzdF9ncm91cC5TdGVwKCkpIHsKKy0gICAgZXhwaXJlZF9ncm91cHMuZW1wbGFjZV9iYWNr KAorKyAgICBleHBpcmVkX2dyb3Vwcy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAgIERlc2Vy aWFsaXplT3JpZ2luKGV4cGlyZWRfaW50ZXJlc3RfZ3JvdXAuQ29sdW1uU3RyaW5nKDApKSwKKy0g ICAgICAgIGV4cGlyZWRfaW50ZXJlc3RfZ3JvdXAuQ29sdW1uU3RyaW5nKDEpKTsKKysgICAgICAg IGV4cGlyZWRfaW50ZXJlc3RfZ3JvdXAuQ29sdW1uU3RyaW5nKDEpfTsKKyAgIH0KKyAgIGlmICgh ZXhwaXJlZF9pbnRlcmVzdF9ncm91cC5TdWNjZWVkZWQoKSkgeworICAgICBETE9HKEVSUk9SKSA8 PCAiQ2xlYXJFeHBpcmVkSW50ZXJlc3RHcm91cHMgY291bGQgbm90IGdldCBleHBpcmVkIGdyb3Vw cy4iOworQEAgLTQzNzcsOCArNDM3Nyw4IEBAIGJvb2wgQ2xlYXJFeGNlc3NpdmVTdG9yYWdlKHNx bDo6RGF0YWJhc2UKKyAgICAgICBjdW1fc2l6ZSA9IDA7CisgICAgIH0KKyAgICAgaWYgKGN1bV9z aXplICsgZ3JvdXBfc2l6ZSA+IG1heF9vd25lcl9zdG9yYWdlX3NpemUpIHsKKy0gICAgICBncm91 cHNfdG9fcmVtb3ZlLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUoZ3JvdXBfb3duZXIpLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShncm91cF9uYW1lKSk7Cisr ICAgICAgZ3JvdXBzX3RvX3JlbW92ZS5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUoZ3JvdXBf b3duZXIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6bW92ZShn cm91cF9uYW1lKX07CisgICAgIH0gZWxzZSB7CisgICAgICAgY3VtX3NpemUgKz0gZ3JvdXBfc2l6 ZTsKKyAgICAgfQorQEAgLTQ1MjIsNyArNDUyMiw3IEBAIERvR2V0QmlkZGluZ0FuZEF1Y3Rpb25T ZXJ2ZXJLZXlzKHNxbDo6RGEKKyAgICAgc3RkOjp2ZWN0b3I8QmlkZGluZ0FuZEF1Y3Rpb25TZXJ2 ZXJLZXk+IGtleXM7CisgICAgIGtleXMucmVzZXJ2ZShrZXlfcHJvdG9zLmtleXNfc2l6ZSgpKTsK KyAgICAgZm9yIChhdXRvJiBrZXlfcHJvdG8gOiAqa2V5X3Byb3Rvcy5tdXRhYmxlX2tleXMoKSkg eworLSAgICAgIGtleXMuZW1wbGFjZV9iYWNrKHN0ZDo6bW92ZSgqa2V5X3Byb3RvLm11dGFibGVf a2V5KCkpLCBrZXlfcHJvdG8uaWQoKSk7CisrICAgICAga2V5cy5lbXBsYWNlX2JhY2soKSA9IHtz dGQ6Om1vdmUoKmtleV9wcm90by5tdXRhYmxlX2tleSgpKSwga2V5X3Byb3RvLmlkKCl9OworICAg ICB9CisgICAgIHJldHVybiB7ZXhwaXJhdGlvbiwga2V5c307CisgICB9CitkaWZmIC11cCBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9m cmFtZV9ob3N0X2ltcGwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9p bXBsLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvcmVuZGVy ZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9y CTIwMjQtMDUtMjkgMTg6MDE6MTMuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9p bXBsLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTA3OTE1ODQzICswMjAwCitAQCAtODk2NCw3ICs4 OTY0LDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpTZW5kRmVuY2VkRnJhbQorICAgZm9y IChjb25zdCBibGluazo6RmVuY2VkRnJhbWU6OlJlcG9ydGluZ0Rlc3RpbmF0aW9uJiBkZXN0aW5h dGlvbiA6CisgICAgICAgIGRlc3RpbmF0aW9ucykgeworICAgICBTZW5kRmVuY2VkRnJhbWVSZXBv cnRpbmdCZWFjb25JbnRlcm5hbCgKKy0gICAgICAgIERlc3RpbmF0aW9uRW51bUV2ZW50KGV2ZW50 X3R5cGUsIGV2ZW50X2RhdGEsIGNyb3NzX29yaWdpbl9leHBvc2VkKSwKKysgICAgICAgIERlc3Rp bmF0aW9uRW51bUV2ZW50e2V2ZW50X3R5cGUsIGV2ZW50X2RhdGEsIGNyb3NzX29yaWdpbl9leHBv c2VkfSwKKyAgICAgICAgIGRlc3RpbmF0aW9uKTsKKyAgIH0KKyB9CitAQCAtODk5NSw3ICs4OTk1 LDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpTZW5kRmVuY2VkRnJhbQorICAgfQorIAor ICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50ZXJuYWwoCistICAgICAgRGVzdGlu YXRpb25VUkxFdmVudChkZXN0aW5hdGlvbl91cmwsIGNyb3NzX29yaWdpbl9leHBvc2VkKSwKKysg ICAgICBEZXN0aW5hdGlvblVSTEV2ZW50e2Rlc3RpbmF0aW9uX3VybCwgY3Jvc3Nfb3JpZ2luX2V4 cG9zZWR9LAorICAgICAgIGJsaW5rOjpGZW5jZWRGcmFtZTo6UmVwb3J0aW5nRGVzdGluYXRpb246 OmtCdXllcik7CisgfQorIAorQEAgLTkxMjYsNyArOTEyNiw3IEBAIHZvaWQgUmVuZGVyRnJhbWVI b3N0SW1wbDo6TWF5YmVTZW5kRmVuY2UKKyAgICAgICAgIGRhdGEgPSBpbmZvLT5kYXRhOworICAg ICAgIH0KKyAgICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVSZXBvcnRpbmdCZWFj b25JbnRlcm5hbCgKKy0gICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnQoZXZlbnRfdHlwZSwg ZGF0YSksIGRlc3RpbmF0aW9uLAorKyAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudHtldmVu dF90eXBlLCBkYXRhfSwgZGVzdGluYXRpb24sCisgICAgICAgICAgIG5hdmlnYXRpb25fcmVxdWVz dC5HZXROYXZpZ2F0aW9uSWQoKSk7CisgICAgIH0KKyAgIH0gZWxzZSB7CitAQCAtOTEzNyw3ICs5 MTM3LDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpNYXliZVNlbmRGZW5jZQorICAgICBm b3IgKGJsaW5rOjpGZW5jZWRGcmFtZTo6UmVwb3J0aW5nRGVzdGluYXRpb24gZGVzdGluYXRpb24g OgorICAgICAgICAgIGluZm8tPmRlc3RpbmF0aW9ucykgeworICAgICAgIGluaXRpYXRvcl9yZmgt PlNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVybmFsKAorLSAgICAgICAgICBBdXRv bWF0aWNCZWFjb25FdmVudChldmVudF90eXBlLCBpbmZvLT5kYXRhKSwgZGVzdGluYXRpb24sCisr ICAgICAgICAgIEF1dG9tYXRpY0JlYWNvbkV2ZW50e2V2ZW50X3R5cGUsIGluZm8tPmRhdGF9LCBk ZXN0aW5hdGlvbiwKKyAgICAgICAgICAgbmF2aWdhdGlvbl9yZXF1ZXN0LkdldE5hdmlnYXRpb25J ZCgpKTsKKyAgICAgfQorICAgfQorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250 ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3Qu Y2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50 L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2MK Ky0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtl ci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv cgkyMDI0LTA1LTI5IDE4OjAxOjEzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4w LjY0NzguMjYvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2Nv bnRhaW5lcl9ob3N0LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTA4OTE1ODY3ICswMjAwCitAQCAt MTA3Niw3ICsxMDc2LDcgQEAgYmxpbms6Om1vam9tOjpTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSBT ZQorICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7 CisgICBEQ0hFQ0soY2xpZW50X2luZm9fKTsKKyAgIHJldHVybiBhYnNsOjp2aXNpdCgKKy0gICAg ICBiYXNlOjpPdmVybG9hZGVkKAorKyAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAg IFtdKEdsb2JhbFJlbmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAg ICAgICAgICAgcmV0dXJuIGJsaW5rOjptb2pvbTo6U2VydmljZVdvcmtlckNsaWVudFR5cGU6OmtX aW5kb3c7CisgICAgICAgICAgIH0sCitAQCAtMTA4NSw3ICsxMDg1LDcgQEAgYmxpbms6Om1vam9t OjpTZXJ2aWNlV29ya2VyQ2xpZW50VHlwZSBTZQorICAgICAgICAgICB9LAorICAgICAgICAgICBb XShibGluazo6U2hhcmVkV29ya2VyVG9rZW4gc2hhcmVkX3dvcmtlcl90b2tlbikgeworICAgICAg ICAgICAgIHJldHVybiBibGluazo6bW9qb206OlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjprU2hh cmVkV29ya2VyOworLSAgICAgICAgICB9KSwKKysgICAgICAgICAgfX0sCisgICAgICAgKmNsaWVu dF9pbmZvXyk7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50 L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2Fk ZXJfaW50ZXJjZXB0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFp bl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9tYWluX3Jl c291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0 LTA1LTI5IDE4OjAxOjEzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX21haW5fcmVz b3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTA4OTE1ODY3 ICswMjAwCitAQCAtMzcwLDEwICszNzAsMTAgQEAgU2VydmljZVdvcmtlck1haW5SZXNvdXJjZUxv YWRlckludGVyY2VwdAorICAgfQorICAgYXV0byogc3RvcmFnZV9wYXJ0aXRpb24gPSBwcm9jZXNz LT5HZXRTdG9yYWdlUGFydGl0aW9uKCk7CisgCistICByZXR1cm4gYWJzbDo6dmlzaXQoYmFzZTo6 T3ZlcmxvYWRlZChbJiwgdGhpc10oYXV0byB0b2tlbikgeworKyAgcmV0dXJuIGFic2w6OnZpc2l0 KGJhc2U6Ok92ZXJsb2FkZWR7WyYsIHRoaXNdKGF1dG8gdG9rZW4pIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBHZXRTdG9yYWdlS2V5RnJvbVdvcmtlckhvc3Qoc3RvcmFnZV9wYXJ0 aXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRva2VuLCBvcmlnaW4pOworLSAgICAgICAgICAgICAgICAgICAgIH0pLAorKyAg ICAgICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgICAgICAgICp3b3JrZXJfdG9r ZW5fKTsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvYnJv d3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2Mubm9fbWF0Y2hpbmdfY29u c3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvd29ya2VyX2hv c3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j b250ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVkaWNhdGVkX3dvcmtlcl9ob3N0LmNjLm5vX21h dGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MTMuMDAwMDAwMDAwICswMjAwCisr KysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvd29ya2VyX2hvc3QvZGVk aWNhdGVkX3dvcmtlcl9ob3N0LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTA5OTE1ODkxICswMjAw CitAQCAtMjU4LDcgKzI1OCw3IEBAIHZvaWQgRGVkaWNhdGVkV29ya2VySG9zdDo6U3RhcnRTY3Jp cHRMb2EKKyAgIFJlbmRlckZyYW1lSG9zdEltcGwqIGNyZWF0b3JfcmVuZGVyX2ZyYW1lX2hvc3Qg PSBudWxscHRyOworICAgRGVkaWNhdGVkV29ya2VySG9zdCogY3JlYXRvcl93b3JrZXIgPSBudWxs cHRyOworIAorLSAgYWJzbDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZCgKKysgIGFic2w6OnZpc2l0 KGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgICAgICAgICAgWyZdKGNvbnN0IEdsb2JhbFJl bmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgICAg ICAgICAgY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCA9CisgICAgICAgICAgICAgICAgICAgICAg ICAgUmVuZGVyRnJhbWVIb3N0SW1wbDo6RnJvbUlEKHJlbmRlcl9mcmFtZV9ob3N0X2lkKTsKK0BA IC0yNjYsNyArMjY2LDcgQEAgdm9pZCBEZWRpY2F0ZWRXb3JrZXJIb3N0OjpTdGFydFNjcmlwdExv YQorICAgICAgICAgICAgICAgICAgIFsmXShibGluazo6RGVkaWNhdGVkV29ya2VyVG9rZW4gZGVk aWNhdGVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgICAgICAgICAgY3JlYXRvcl93b3Jr ZXIgPSBzZXJ2aWNlXy0+R2V0RGVkaWNhdGVkV29ya2VySG9zdEZyb21Ub2tlbigKKyAgICAgICAg ICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKTsKKy0gICAgICAgICAgICAg ICAgICB9KSwKKysgICAgICAgICAgICAgICAgICB9fSwKKyAgICAgICAgICAgICAgIGNyZWF0b3Jf KTsKKyAKKyAgIGlmICghY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCAmJiAhY3JlYXRvcl93b3Jr ZXIpIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZXh0ZW5zaW9ucy9icm93c2Vy L3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tfcXVldWUuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9leHRlbnNpb25zL2Jyb3dzZXIvc2Vy dmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfdGFza19xdWV1ZS5jYworLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvZXh0ZW5zaW9ucy9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29y a2VyX3Rhc2tfcXVldWUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODow MToyMy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2V4dGVuc2lv bnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmNjCTIw MjQtMDYtMDIgMjM6NTE6MjUuNTA5OTE1ODkxICswMjAwCitAQCAtMzk0LDggKzM5NCw4IEBAIGJv b2wgU2VydmljZVdvcmtlclRhc2tRdWV1ZTo6SXNSZWFkeVRvUnUKKyAgICAgcmV0dXJuIGZhbHNl OworICAgfQorIAorLSAgY29uc3QgU2VxdWVuY2VkQ29udGV4dElkIGNvbnRleHRfaWQoZXh0ZW5z aW9uLT5pZCgpLCBicm93c2VyX2NvbnRleHRfLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgKmFjdGl2YXRpb25fdG9rZW4pOworKyAgY29uc3QgU2VxdWVuY2VkQ29udGV4 dElkIGNvbnRleHRfaWR7ZXh0ZW5zaW9uLT5pZCgpLCBicm93c2VyX2NvbnRleHRfLAorKyAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKmFjdGl2YXRpb25fdG9rZW59OworICAg Y29uc3QgV29ya2VyU3RhdGUqIHdvcmtlcl9zdGF0ZSA9IEdldFdvcmtlclN0YXRlKGNvbnRleHRf aWQpOworIAorICAgaWYgKCF3b3JrZXJfc3RhdGUgfHwgIXdvcmtlcl9zdGF0ZS0+d29ya2VyX2lk XykgeworZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvY29tbWFuZF9idWZmZXIv Y2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9jb21tYW5kX2J1ZmZlci9jbGllbnQvc2hhcmVkX2lt YWdlX2ludGVyZmFjZS5oCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvY29tbWFuZF9i dWZmZXIvY2xpZW50L3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuaC5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjI1LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvZ3B1L2NvbW1hbmRfYnVmZmVyL2NsaWVudC9zaGFyZWRfaW1hZ2VfaW50ZXJm YWNlLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41MTA5MTU5MTQgKzAyMDAKK0BAIC02NCwxOSArNjQs MTkgQEAgc3RydWN0IFNoYXJlZEltYWdlSW5mbyB7CisgICAgICAgICAgICAgICAgICAgU2tBbHBo YVR5cGUgYWxwaGFfdHlwZSwKKyAgICAgICAgICAgICAgICAgICB1aW50MzJfdCB1c2FnZSwKKyAg ICAgICAgICAgICAgICAgICBzdGQ6OnN0cmluZ192aWV3IGRlYnVnX2xhYmVsKQorLSAgICAgIDog bWV0YShmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwgYWxwaGFfdHlw ZSwgdXNhZ2UpLAorKyAgICAgIDogbWV0YXtmb3JtYXQsIHNpemUsIGNvbG9yX3NwYWNlLCBzdXJm YWNlX29yaWdpbiwgYWxwaGFfdHlwZSwgdXNhZ2V9LAorICAgICAgICAgZGVidWdfbGFiZWwoZGVi dWdfbGFiZWwpIHt9CisgICBTaGFyZWRJbWFnZUluZm8oY29uc3Qgdml6OjpTaGFyZWRJbWFnZUZv cm1hdCYgZm9ybWF0LAorICAgICAgICAgICAgICAgICAgIGdmeDo6U2l6ZSBzaXplLAorICAgICAg ICAgICAgICAgICAgIGNvbnN0IGdmeDo6Q29sb3JTcGFjZSYgY29sb3Jfc3BhY2UsCisgICAgICAg ICAgICAgICAgICAgdWludDMyX3QgdXNhZ2UsCisgICAgICAgICAgICAgICAgICAgc3RkOjpzdHJp bmdfdmlldyBkZWJ1Z19sYWJlbCkKKy0gICAgICA6IG1ldGEoZm9ybWF0LAorKyAgICAgIDogbWV0 YXtmb3JtYXQsCisgICAgICAgICAgICAgIHNpemUsCisgICAgICAgICAgICAgIGNvbG9yX3NwYWNl LAorICAgICAgICAgICAgICBrVG9wTGVmdF9HclN1cmZhY2VPcmlnaW4sCisgICAgICAgICAgICAg IGtQcmVtdWxfU2tBbHBoYVR5cGUsCistICAgICAgICAgICAgIHVzYWdlKSwKKysgICAgICAgICAg ICAgdXNhZ2V9LAorICAgICAgICAgZGVidWdfbGFiZWwoZGVidWdfbGFiZWwpIHt9CisgICAvLyBU aGlzIGNvbnN0cnVjdG9yIGV4aXN0cyBvbmx5IHRvIHN1cHBvcnQgdGhlIERFUFJFQ0FURUQgQ3Jl YXJlU2hhcmVkSW1hZ2UKKyAgIC8vIGNhbGwgYmVsb3cgdGhhdCBhY2NlcHRzIGEgR3B1TWVtb3J5 QnVmZmVyLiBUaGlzIHNob3VsZCBiZSByZW1vdmVkIHdoZW4gdGhhdAorZGlmZiAtdXAgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2Vf aW50ZXJmYWNlX2luX3Byb2Nlc3MuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9ncHUvY29tbWFuZF9idWZmZXIvc2VydmljZS9zaGFyZWRfaW1hZ2VfaW50 ZXJmYWNlX2luX3Byb2Nlc3MuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9jb21t YW5kX2J1ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZV9pbnRlcmZhY2VfaW5fcHJvY2Vzcy5jYy5u b19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjI2LjAwMDAwMDAwMCArMDIw MAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uv c2hhcmVkX2ltYWdlX2ludGVyZmFjZV9pbl9wcm9jZXNzLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NTEwOTE1OTE0ICswMjAwCitAQCAtNjIyLDEyICs2MjIsMTIgQEAgU2hhcmVkSW1hZ2VJbnRlcmZh Y2VJblByb2Nlc3M6OkNyZWF0ZVNoYQorIAorICAgcmV0dXJuIGJhc2U6Ok1ha2VSZWZDb3VudGVk PENsaWVudFNoYXJlZEltYWdlPigKKyAgICAgICBtYWlsYm94LAorLSAgICAgIFNoYXJlZEltYWdl TWV0YWRhdGEoCisrICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YXsKKyAgICAgICAgICAgdml6OjpH ZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAorICAgICAgICAgICAgICAgR2V0UGxhbmVC dWZmZXJGb3JtYXQocGxhbmUsIGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRGb3JtYXQoKSkpLAorICAg ICAgICAgICBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgpLCBzaV9pbmZvLm1ldGEuY29sb3Jf c3BhY2UsCisgICAgICAgICAgIHNpX2luZm8ubWV0YS5zdXJmYWNlX29yaWdpbiwgc2lfaW5mby5t ZXRhLmFscGhhX3R5cGUsCistICAgICAgICAgIHNpX2luZm8ubWV0YS51c2FnZSksCisrICAgICAg ICAgIHNpX2luZm8ubWV0YS51c2FnZX0sCisgICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigp LCBob2xkZXJfLCBncHVfbWVtb3J5X2J1ZmZlci0+R2V0VHlwZSgpKTsKKyB9CisgCitkaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9pcGMvY2xpZW50L2NsaWVudF9zaGFyZWRfaW1h Z2VfaW50ZXJmYWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvZ3B1L2lwYy9jbGllbnQvY2xpZW50X3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MKKy0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9pcGMvY2xpZW50L2NsaWVudF9zaGFyZWRfaW1h Z2VfaW50ZXJmYWNlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6 MjYuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvaXBjL2Ns aWVudC9jbGllbnRfc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1 LjUxMDkxNTkxNCArMDIwMAorQEAgLTI1MSwxMSArMjUxLDExIEBAIHNjb3BlZF9yZWZwdHI8Q2xp ZW50U2hhcmVkSW1hZ2U+IENsaWVudFMKKyAgICAgICBBZGRNYWlsYm94KHByb3h5Xy0+Q3JlYXRl U2hhcmVkSW1hZ2UoCisgICAgICAgICAgIGJ1ZmZlcl9mb3JtYXQsIHBsYW5lLCBncHVfbWVtb3J5 X2J1ZmZlci0+R2V0U2l6ZSgpLCBzaV9pbmZvLAorICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZl ci0+Q2xvbmVIYW5kbGUoKSkpLAorLSAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEodml6OjpHZXRT aW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAorKyAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7 dml6OjpHZXRTaW5nbGVQbGFuZVNoYXJlZEltYWdlRm9ybWF0KAorICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIEdldFBsYW5lQnVmZmVyRm9ybWF0KHBsYW5lLCBidWZmZXJfZm9ybWF0KSks CisgICAgICAgICAgICAgICAgICAgICAgICAgICBncHVfbWVtb3J5X2J1ZmZlci0+R2V0U2l6ZSgp LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2lfaW5mby5tZXRhLmNvbG9yX3NwYWNlLCBz aV9pbmZvLm1ldGEuc3VyZmFjZV9vcmlnaW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICBz aV9pbmZvLm1ldGEuYWxwaGFfdHlwZSwgc2lfaW5mby5tZXRhLnVzYWdlKSwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgIHNpX2luZm8ubWV0YS5hbHBoYV90eXBlLCBzaV9pbmZvLm1ldGEudXNh Z2V9LAorICAgICAgIEdlblVudmVyaWZpZWRTeW5jVG9rZW4oKSwgaG9sZGVyXywgZ3B1X21lbW9y eV9idWZmZXItPkdldFR5cGUoKSk7CisgfQorIAorQEAgLTI5NywxMyArMjk3LDEzIEBAIENsaWVu dFNoYXJlZEltYWdlSW50ZXJmYWNlOjpDcmVhdGVTd2FwQ2gKKyAgIHJldHVybiBDbGllbnRTaGFy ZWRJbWFnZUludGVyZmFjZTo6U3dhcENoYWluU2hhcmVkSW1hZ2VzKAorICAgICAgIGJhc2U6Ok1h a2VSZWZDb3VudGVkPENsaWVudFNoYXJlZEltYWdlPigKKyAgICAgICAgICAgbWFpbGJveGVzLmZy b250X2J1ZmZlciwKKy0gICAgICAgICAgU2hhcmVkSW1hZ2VNZXRhZGF0YShmb3JtYXQsIHNpemUs IGNvbG9yX3NwYWNlLCBzdXJmYWNlX29yaWdpbiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBhbHBoYV90eXBlLCB1c2FnZSksCisrICAgICAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7 Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwgc3VyZmFjZV9vcmlnaW4sCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgYWxwaGFfdHlwZSwgdXNhZ2V9LAorICAgICAgICAgICBzeW5jX3Rv a2VuLCBob2xkZXJfLCBnZng6OkVNUFRZX0JVRkZFUiksCisgICAgICAgYmFzZTo6TWFrZVJlZkNv dW50ZWQ8Q2xpZW50U2hhcmVkSW1hZ2U+KAorICAgICAgICAgICBtYWlsYm94ZXMuYmFja19idWZm ZXIsCistICAgICAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGEoZm9ybWF0LCBzaXplLCBjb2xvcl9z cGFjZSwgc3VyZmFjZV9vcmlnaW4sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWxw aGFfdHlwZSwgdXNhZ2UpLAorKyAgICAgICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhe2Zvcm1hdCwg c2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZhY2Vfb3JpZ2luLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGFscGhhX3R5cGUsIHVzYWdlfSwKKyAgICAgICAgICAgc3luY190b2tlbiwgaG9s ZGVyXywgZ2Z4OjpFTVBUWV9CVUZGRVIpKTsKKyB9CisgCitAQCAtMzYxLDggKzM2MSw4IEBAIHNj b3BlZF9yZWZwdHI8Q2xpZW50U2hhcmVkSW1hZ2U+IENsaWVudFMKKyAKKyAgIHJldHVybiBiYXNl OjpNYWtlUmVmQ291bnRlZDxDbGllbnRTaGFyZWRJbWFnZT4oCisgICAgICAgbWFpbGJveCwKKy0g ICAgICBTaGFyZWRJbWFnZU1ldGFkYXRhKGZvcm1hdCwgc2l6ZSwgY29sb3Jfc3BhY2UsIHN1cmZh Y2Vfb3JpZ2luLCBhbHBoYV90eXBlLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgdXNhZ2Up LAorKyAgICAgIFNoYXJlZEltYWdlTWV0YWRhdGF7Zm9ybWF0LCBzaXplLCBjb2xvcl9zcGFjZSwg c3VyZmFjZV9vcmlnaW4sIGFscGhhX3R5cGUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICB1 c2FnZX0sCisgICAgICAgR2VuVW52ZXJpZmllZFN5bmNUb2tlbigpLCBob2xkZXJfLCBnZng6OkVN UFRZX0JVRkZFUik7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUv aXBjL3NlcnZpY2UvZ3B1X2NoYW5uZWxfc2hhcmVkX2ltYWdlX2ludGVyZmFjZS5jYy5ub19tYXRj aGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9pcGMvc2VydmljZS9n cHVfY2hhbm5lbF9zaGFyZWRfaW1hZ2VfaW50ZXJmYWNlLmNjCistLS0gY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi9ncHUvaXBjL3NlcnZpY2UvZ3B1X2NoYW5uZWxfc2hhcmVkX2ltYWdlX2ludGVyZmFj ZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA2LTAzIDE2OjU0OjU4Ljk5ODE5NjYy NiArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1L2lwYy9zZXJ2aWNlL2dwdV9j aGFubmVsX3NoYXJlZF9pbWFnZV9pbnRlcmZhY2UuY2MJMjAyNC0wNi0wMyAxNjo1NToyMy43MjI3 Mjk5NDkgKzAyMDAKK0BAIC0zOTIsMTIgKzM5MiwxMiBAQCBHcHVDaGFubmVsU2hhcmVkSW1hZ2VJ bnRlcmZhY2U6OkNyZWF0ZVNoCisgCisgICByZXR1cm4gYmFzZTo6TWFrZVJlZkNvdW50ZWQ8Q2xp ZW50U2hhcmVkSW1hZ2U+KAorICAgICAgIG1haWxib3gsCistICAgICAgU2hhcmVkSW1hZ2VNZXRh ZGF0YSgKKysgICAgICBTaGFyZWRJbWFnZU1ldGFkYXRheworICAgICAgICAgICB2aXo6OkdldFNp bmdsZVBsYW5lU2hhcmVkSW1hZ2VGb3JtYXQoCisgICAgICAgICAgICAgICBHZXRQbGFuZUJ1ZmZl ckZvcm1hdChwbGFuZSwgZ3B1X21lbW9yeV9idWZmZXItPkdldEZvcm1hdCgpKSksCisgICAgICAg ICAgIGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRTaXplKCksIHNpX2luZm8ubWV0YS5jb2xvcl9zcGFj ZSwKKyAgICAgICAgICAgc2lfaW5mby5tZXRhLnN1cmZhY2Vfb3JpZ2luLCBzaV9pbmZvLm1ldGEu YWxwaGFfdHlwZSwKKy0gICAgICAgICAgc2lfaW5mby5tZXRhLnVzYWdlKSwKKysgICAgICAgICAg c2lfaW5mby5tZXRhLnVzYWdlfSwKKyAgICAgICBHZW5VbnZlcmlmaWVkU3luY1Rva2VuKCksIGhv bGRlcl8sIGdwdV9tZW1vcnlfYnVmZmVyLT5HZXRUeXBlKCkpOworIH0KKyAKK2RpZmYgLXVwIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjLm5vX21h dGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0NzguMjYvbmV0L2Rucy9ob3N0X3Jl c29sdmVyX2NhY2hlLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9uZXQvZG5zL2hvc3Rf cmVzb2x2ZXJfY2FjaGUuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODow MTozNC4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L25ldC9kbnMv aG9zdF9yZXNvbHZlcl9jYWNoZS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUxMTkxNTkzOSArMDIw MAorQEAgLTM2OCw3ICszNjgsNyBAQCB2b2lkIEhvc3RSZXNvbHZlckNhY2hlOjpTZXQoCisgCisg ICBzdGQ6OnN0cmluZyBkb21haW5fbmFtZSA9IHJlc3VsdC0+ZG9tYWluX25hbWUoKTsKKyAgIGVu dHJpZXNfLmVtcGxhY2UoCistICAgICAgS2V5KHN0ZDo6bW92ZShkb21haW5fbmFtZSksIG5ldHdv cmtfYW5vbnltaXphdGlvbl9rZXkpLAorKyAgICAgIEtleXtzdGQ6Om1vdmUoZG9tYWluX25hbWUp LCBuZXR3b3JrX2Fub255bWl6YXRpb25fa2V5fSwKKyAgICAgICBFbnRyeShzdGQ6Om1vdmUocmVz dWx0KSwgc291cmNlLCBzZWN1cmUsIHN0YWxlbmVzc19nZW5lcmF0aW9uKSk7CisgCisgICBpZiAo ZW50cmllc18uc2l6ZSgpID4gbWF4X2VudHJpZXNfKSB7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvY3NzL3Byb3BlcnRpZXMv Y3NzX3BhcnNpbmdfdXRpbHMuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2Nzcy9wcm9wZXJ0aWVz L2Nzc19wYXJzaW5nX3V0aWxzLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2Nzcy9wcm9wZXJ0aWVzL2Nzc19wYXJzaW5nX3V0aWxz LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6MzguMDAwMDAwMDAw ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9jb3JlL2Nzcy9wcm9wZXJ0aWVzL2Nzc19wYXJzaW5nX3V0aWxzLmNjCTIwMjQtMDYtMDIg MjM6NTE6MjUuNTEzOTE1OTg2ICswMjAwCitAQCAtODUzMyw3ICs4NTMzLDcgQEAgc3RkOjpvcHRp b25hbDxJbnNldEFyZWFLZXl3b3JkPiBDb25zdW1lSQorICAgICBkZWZhdWx0OgorICAgICAgIHJl dHVybiBzdGQ6Om51bGxvcHQ7CisgICB9CistICByZXR1cm4gSW5zZXRBcmVhS2V5d29yZChjc3Nf cGFyc2luZ191dGlsczo6Q29uc3VtZUlkZW50KHJhbmdlKSwgdHlwZSk7CisrICByZXR1cm4gSW5z ZXRBcmVhS2V5d29yZHtjc3NfcGFyc2luZ191dGlsczo6Q29uc3VtZUlkZW50KHJhbmdlKSwgdHlw ZX07CisgfQorIAorIH0gIC8vIG5hbWVzcGFjZQorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9hbmNob3JfZXZhbHVh dG9yX2ltcGwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9hbmNob3JfZXZhbHVhdG9y X2ltcGwuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2NvcmUvbGF5b3V0L2FuY2hvcl9ldmFsdWF0b3JfaW1wbC5jYy5ub19tYXRjaGluZ19j b25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjM5LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQv YW5jaG9yX2V2YWx1YXRvcl9pbXBsLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTEzOTE1OTg2ICsw MjAwCitAQCAtNTkxLDcgKzU5MSw3IEBAIEFuY2hvckV2YWx1YXRvckltcGw6OkNvbXB1dGVJbnNl dEFyZWFPZmYKKyAgICAgcmlnaHQgPSBFdmFsdWF0ZShxdWVyeS52YWx1ZSgpLCBwb3NpdGlvbl9h bmNob3IsCisgICAgICAgICAgICAgICAgICAgICAgLyogaW5zZXRfYXJlYV9vZmZzZXRzICovIHN0 ZDo6bnVsbG9wdCk7CisgICB9CistICByZXR1cm4gSW5zZXRBcmVhT2Zmc2V0cyh0b3AsIGJvdHRv bSwgbGVmdCwgcmlnaHQpOworKyAgcmV0dXJuIEluc2V0QXJlYU9mZnNldHN7dG9wLCBib3R0b20s IGxlZnQsIHJpZ2h0fTsKKyB9CisgCisgUGh5c2ljYWxSZWN0IEFuY2hvckV2YWx1YXRvckltcGw6 Okluc2V0QXJlYU1vZGlmaWVkQ29udGFpbmluZ0Jsb2NrKAorZGlmZiAtdXAgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL21lZGlhL2F1ZGlv L2F1ZGlvX3JlbmRlcmVyX21peGVyX21hbmFnZXIuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3Ig Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVz L21lZGlhL2F1ZGlvL2F1ZGlvX3JlbmRlcmVyX21peGVyX21hbmFnZXIuY2MKKy0tLSBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWEv YXVkaW8vYXVkaW9fcmVuZGVyZXJfbWl4ZXJfbWFuYWdlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvcgkyMDI0LTA1LTI5IDE4OjAxOjQwLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9tZWRpYS9hdWRp by9hdWRpb19yZW5kZXJlcl9taXhlcl9tYW5hZ2VyLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTE0 OTE2MDEwICswMjAwCitAQCAtMTgxLDggKzE4MSw4IEBAIEF1ZGlvUmVuZGVyZXJNaXhlciogQXVk aW9SZW5kZXJlck1peGVyTWEKKyAgICAgRFZMT0coMSkgPDwgIk5vdCByZXVzaW5nIG1peGVyIHdp dGggZXJyb3JzOiAiIDw8IGl0LT5zZWNvbmQubWl4ZXI7CisgCisgICAgIC8vIE1vdmUgYmFkIG1p eGVycyBvdXQgb2YgdGhlIHJldXNlIG1hcC4KKy0gICAgZGVhZF9taXhlcnNfLmVtcGxhY2VfYmFj ayhzdGQ6Om1vdmUoaXQtPnNlY29uZC5taXhlciksCistICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgaXQtPnNlY29uZC5yZWZfY291bnQpOworKyAgICBkZWFkX21peGVyc18uZW1wbGFjZV9i YWNrKCkgPSB7c3RkOjptb3ZlKGl0LT5zZWNvbmQubWl4ZXIpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGl0LT5zZWNvbmQucmVmX2NvdW50fTsKKyAgICAgbWl4ZXJzXy5lcmFzZShp dCk7CisgICB9CisgCitAQCAtMjI4LDcgKzIyOCw3IEBAIHZvaWQgQXVkaW9SZW5kZXJlck1peGVy TWFuYWdlcjo6UmV0dXJuTWkKKyAgICAgfQorICAgfSBlbHNlIGlmIChkZWFkX2l0ID09IGRlYWRf bWl4ZXJzXy5lbmQoKSAmJiBtaXhlcl9yZWYubWl4ZXItPkhhc1NpbmtFcnJvcigpKSB7CisgICAg IC8vIE1vdmUgYmFkIG1peGVycyBvdXQgb2YgdGhlIHJldXNlIG1hcC4KKy0gICAgZGVhZF9taXhl cnNfLmVtcGxhY2VfYmFjayhzdGQ6Om1vdmUobWl4ZXJfcmVmLm1peGVyKSwgbWl4ZXJfcmVmLnJl Zl9jb3VudCk7CisrICAgIGRlYWRfbWl4ZXJzXy5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUo bWl4ZXJfcmVmLm1peGVyKSwgbWl4ZXJfcmVmLnJlZl9jb3VudH07CisgICAgIG1peGVyc18uZXJh c2UoaXQpOworICAgfQorIH0KK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRlLmgubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUuaAorLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9u dF9wYWxldHRlLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODowMTo0MS4w MDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2Js aW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5oCTIwMjQtMDYtMDIgMjM6 NTE6MjUuNTE0OTE2MDEwICswMjAwCitAQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBQTEFURk9STV9F WFBPUlQgRm9udFBhbGV0dGUgOiBwdWJsCisgICAgICAgQ29sb3I6OkNvbG9yU3BhY2UgY29sb3Jf aW50ZXJwb2xhdGlvbl9zcGFjZSwKKyAgICAgICBzdGQ6Om9wdGlvbmFsPENvbG9yOjpIdWVJbnRl cnBvbGF0aW9uTWV0aG9kPiBodWVfaW50ZXJwb2xhdGlvbl9tZXRob2QpIHsKKyAgICAgcmV0dXJu IGJhc2U6OkFkb3B0UmVmKG5ldyBGb250UGFsZXR0ZSgKKy0gICAgICAgIHN0YXJ0LCBlbmQsIE5v bk5vcm1hbGl6ZWRQZXJjZW50YWdlcyhzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFnZSks CisrICAgICAgICBzdGFydCwgZW5kLCBOb25Ob3JtYWxpemVkUGVyY2VudGFnZXN7c3RhcnRfcGVy Y2VudGFnZSwgZW5kX3BlcmNlbnRhZ2V9LAorICAgICAgICAgbm9ybWFsaXplZF9wZXJjZW50YWdl LCBhbHBoYV9tdWx0aXBsaWVyLCBjb2xvcl9pbnRlcnBvbGF0aW9uX3NwYWNlLAorICAgICAgICAg aHVlX2ludGVycG9sYXRpb25fbWV0aG9kKSk7CisgICB9CitAQCAtMTcwLDcgKzE3MCw3IEBAIGNs YXNzIFBMQVRGT1JNX0VYUE9SVCBGb250UGFsZXR0ZSA6IHB1YmwKKyAgICAgICBkb3VibGUgbm9y bWFsaXplZF9wZXJjZW50YWdlKSB7CisgICAgIGRvdWJsZSBlbmRfcGVyY2VudGFnZSA9IG5vcm1h bGl6ZWRfcGVyY2VudGFnZSAqIDEwMC4wOworICAgICBkb3VibGUgc3RhcnRfcGVyY2VudGFnZSA9 IDEwMC4wIC0gZW5kX3BlcmNlbnRhZ2U7CistICAgIHJldHVybiBOb25Ob3JtYWxpemVkUGVyY2Vu dGFnZXMoc3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2UpOworKyAgICByZXR1cm4gTm9u Tm9ybWFsaXplZFBlcmNlbnRhZ2Vze3N0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlfTsK KyAgIH0KKyAKKyAgIGRvdWJsZSBHZXRBbHBoYU11bHRpcGxpZXIoKSBjb25zdCB7CitkaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv ciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRm b3JtL2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvcGFsZXR0ZV9p bnRlcnBvbGF0aW9uLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDE6 NDEuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2MJ MjAyNC0wNi0wMiAyMzo1MToyNS41MTU5MTYwMzQgKzAyMDAKK0BAIC0zMSw3ICszMSw3IEBAIFZl Y3RvcjxGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVPdmVycmlkZT4KKyAgICAgICAgIGNvbG9yX2lu dGVycG9sYXRpb25fc3BhY2UsIGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhvZCwgc3RhcnRfY29sb3Is CisgICAgICAgICBlbmRfY29sb3IsIHBlcmNlbnRhZ2UsIGFscGhhX211bHRpcGxpZXIpOworIAor LSAgICBGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVPdmVycmlkZSByZXN1bHRfY29sb3JfcmVjb3Jk KGksIHJlc3VsdF9jb2xvcik7CisrICAgIEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRl IHJlc3VsdF9jb2xvcl9yZWNvcmR7c3RhdGljX2Nhc3Q8aW50PihpKSwgcmVzdWx0X2NvbG9yfTsK KyAgICAgcmVzdWx0X2NvbG9yX3JlY29yZHMucHVzaF9iYWNrKHJlc3VsdF9jb2xvcl9yZWNvcmQp OworICAgfQorICAgcmV0dXJuIHJlc3VsdF9jb2xvcl9yZWNvcmRzOworZGlmZiAtdXAgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9j cGRmX3JlbmRlcnN0YXR1cy5jcHAubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9jcGRmX3Jl bmRlcnN0YXR1cy5jcHAKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L3Bk Zml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNwcC5ub19tYXRjaGlu Z19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAzOjA1LjAwMDAwMDAwMCArMDIwMAorKysrIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5k ZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTE1OTE2MDM0ICsw MjAwCitAQCAtNTEyLDcgKzUxMiw3IEBAIHZvaWQgQ1BERl9SZW5kZXJTdGF0dXM6OlByb2Nlc3ND bGlwUGF0aCgKKyAgICAgfSBlbHNlIHsKKyAgICAgICBtX3BEZXZpY2UtPlNldENsaXBfUGF0aEZp bGwoCisgICAgICAgICAgICpwUGF0aCwgJm10T2JqMkRldmljZSwKKy0gICAgICAgICAgQ0ZYX0Zp bGxSZW5kZXJPcHRpb25zKENsaXBQYXRoLkdldENsaXBUeXBlKGkpKSk7CisrICAgICAgICAgIENG WF9GaWxsUmVuZGVyT3B0aW9uc3tDbGlwUGF0aC5HZXRDbGlwVHlwZShpKX0pOworICAgICB9Cisg ICB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2Jhc2Uvd2F5bGFuZC9j b2xvcl9tYW5hZ2VyX3V0aWwuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaAorLS0tIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oLm5v X21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUtMjkgMTg6MDI6MzEuMDAwMDAwMDAwICswMjAw CisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdl cl91dGlsLmgJMjAyNC0wNi0wMyAxMjo1ODoxMi4yMDU5ODM2OTEgKzAyMDAKK0BAIC01Miw1MyAr NTIsNTMgQEAgY29uc3RleHByIGF1dG8ga0Nocm9tYXRpY2l0eU1hcCA9IGJhc2U6OgorICAgICB6 Y3JfY29sb3JfbWFuYWdlcl92MV9jaHJvbWF0aWNpdHlfbmFtZXMsCisgICAgIFByaW1hcnlWZXJz aW9uPigKKyAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ2 MDFfNTI1X0xJTkUsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmlt YXJ5SUQ6OlNNUFRFMTcwTSwKKy0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVy c2lvbil9LAorKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlE OjpTTVBURTE3ME0sCisrICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259 fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ2MDFf NjI1X0xJTkUsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5 SUQ6OkJUNDcwQkcsCistICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24p fSwKKysgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0 NzBCRywKKysgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTE3ME0sCist ICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcw TSwKKy0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAg IFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCisr ICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ3MDksCistICAgICAgUHJpbWFy eVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNl VmVyc2lvbil9LAorKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFy eUlEOjpCVDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFO QUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQyMDIwLAorLSAgICAgIFByaW1hcnlWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDIwMjAsIGtEZWZhdWx0U2luY2VWZXJzaW9u KX0sCisrICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJU MjAyMCwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9DSFJPTUFUSUNJVFlfTkFNRVNfU1JHQiwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNv bG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAg ICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5LCBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJ Q0lUWV9OQU1FU19ESVNQTEFZUDMsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNw YWNlOjpQcmltYXJ5SUQ6OlAzLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgIFByaW1h cnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpQMywga0RlZmF1bHRTaW5jZVZl cnNpb259fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNf QURPQkVSR0IsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5 SUQ6OkFET0JFX1JHQiwKKy0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lv bil9LAorKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpB RE9CRV9SR0IsCisrICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwK KyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfV0lERV9HQU1V VF9DT0xPUl9TUElOLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAgIFByaW1hcnlWZXJz aW9ueworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6V0lERV9HQU1VVF9D T0xPUl9TUElOLAorLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlf TkFNRVNfV0lERV9HQU1VVF9DT0xPUl9TUElOX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRfQ09MT1Jf U1BJTl9TSU5DRV9WRVJTSU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX0JUNDcwTSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmlt YXJ5VmVyc2lvbnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNDcw TSwKKy0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JU NDcwTV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NI Uk9NQVRJQ0lUWV9OQU1FU19CVDQ3ME1fU0lOQ0VfVkVSU0lPTn19LAorICAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTI0ME0sCistICAgICAgUHJpbWFy eVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257CisgICAgICAgICAgIGdmeDo6Q29sb3JT cGFjZTo6UHJpbWFyeUlEOjpTTVBURTI0ME0sCistICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lPTil9LAorKyAgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNX1NJ TkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlf TkFNRVNfWFlaX0Q1MCwKKy0gICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmltYXJ5VmVy c2lvbnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlhZWl9ENTAsCist ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpfRDUw X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01B VElDSVRZX05BTUVTX1hZWl9ENTBfU0lOQ0VfVkVSU0lPTn19LAorICAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDI4XzEsCistICAgICAgUHJpbWFy eVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257CisgICAgICAgICAgIGdmeDo6Q29sb3JT cGFjZTo6UHJpbWFyeUlEOjpTTVBURVNUNDI4XzEsCistICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTil9LAor KyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVT VDQyOF8xX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJP TUFUSUNJVFlfTkFNRVNfU01QVEVTVDQzMV8yLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAg ICAgIFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJ RDo6U01QVEVTVDQzMV8yLAorLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFU SUNJVFlfTkFNRVNfU01QVEVTVDQzMV8yX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MzFfMl9TSU5DRV9W RVJTSU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X0ZJTE0sCistICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257Cisg ICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpGSUxNLAorLSAgICAgICAgICBa Q1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklMTV9TSU5DRV9WRVJTSU9O KX19KTsKKysgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X0ZJTE1fU0lOQ0VfVkVSU0lPTn19fSk7CisgCisgLy8gQSBtYXAgZnJvbSB0aGUgemNyX2NvbG9y X21hbmFnZXJfdjEgZW90Zl9uYW1lcyBlbnVtIHZhbHVlcworIC8vIHJlcHJlc2VudGluZyB3ZWxs LWtub3duIEVPVEZzLCB0byB0aGVpciBlcXVpdmFsZW50IFRyYW5zZmVySURzLgorQEAgLTEwNyw2 OCArMTA3LDY4IEBAIGNvbnN0ZXhwciBhdXRvIGtFb3RmTWFwID0gYmFzZTo6TWFrZUZpeGUKKyAg ICAgemNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9uYW1lcywKKyAgICAgVHJhbnNmZXJWZXJzaW9u Pih7CisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xJTkVBUiwKKy0gICAg IFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxJTkVBUiwKKy0g ICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgVHJhbnNm ZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TElORUFSLAorKyAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgIHtaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX1NSR0IsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAg VHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQiwga0RlZmF1 bHRTaW5jZVZlcnNpb259fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf U1JHQl9IRFIsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2Zl cklEOjpTUkdCX0hEUiwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX1NSR0JfSERSX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVy c2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNSR0JfSERSLAorKyAgICAgICAgICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0Vf VkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOSwK Ky0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUNzA5 LAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf QlQ3MDlfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JT cGFjZTo6VHJhbnNmZXJJRDo6QlQ3MDksCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjA4NywKKy0gICAgIFRyYW5zZmVyVmVyc2lv bihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMjQsCistICAgICAgICAgICAgICAg ICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMjQsCisrICAgICAgICAgICAgICAgICAgICAg a0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfQURPQkVSR0IsCisgICAgICAvLyBUaGlzIGlzIGV2ZXIgc28gc2xpZ2h0bHkgaW5hY2N1 cmF0ZS4gVGhlIG51bWJlciBvdWdodCB0byBiZQorICAgICAgLy8gMi4xOTkyMTg3NWYsIG5vdCAy LjIKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdB TU1BMjIsCistICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysg ICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMjIs CisrICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfUFEsCistICAgICBUcmFuc2ZlclZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpQUSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK KysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlBRLCBr RGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19ITEcsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2Zl cklEOjpITEcsCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6SExHLAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUxNzBNLAorLSAgICAgVHJhbnNmZXJW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUxNzBNLAorLSAgICAgICAg ICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUxNzBNX1NJ TkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OlNNUFRFMTcwTSwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMTcwTV9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMjQwTSwKKy0gICAgIFRyYW5zZmVyVmVy c2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMjQwTSwKKy0gICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMjQwTV9TSU5D RV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpTTVBURTI0ME0sCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURVNUNDI4XzEsCistICAgICBUcmFuc2ZlclZl cnNpb24oCisrICAgICBUcmFuc2ZlclZlcnNpb257CisgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpTTVBURVNUNDI4XzEsCistICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT059 fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HLAorLSAgICAgVHJh bnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HLAorLSAgICAgICAg ICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NJTkNFX1ZF UlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OkxPRywKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX0xPR19TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0xPR19TUVJULAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6VHJhbnNmZXJJRDo6TE9HX1NRUlQsCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU1FSVF9TSU5DRV9WRVJTSU9OKX0sCisrICAgICBU cmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0dfU1FSVCwKKysg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPR19T UVJUX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfSUVDNjE5NjZfMl80LAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKAorKyAgICAgVHJhbnNmZXJW ZXJzaW9ueworICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6SUVDNjE5NjZf Ml80LAorLSAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSUVDNjE5NjZf Ml80X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX0lFQzYxOTY2XzJfNF9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0csCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4 OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDEzNjFfRUNHLAorLSAgICAgICAgICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQxMzYxX0VDR19TSU5DRV9WRVJT SU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklE OjpCVDEzNjFfRUNHLAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfQlQxMzYxX0VDR19TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMCwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihn Zng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMCwKKy0gICAgICAgICAgICAgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMF9TSU5DRV9WRVJT SU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklE OjpCVDIwMjBfMTAsCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf RU9URl9OQU1FU19CVDIwMjBfMTBfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTIsCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4 OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIwMjBfMTIsCistICAgICAgICAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTJfU0lOQ0VfVkVSU0lP Til9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6 QlQyMDIwXzEyLAorKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfQlQyMDIwXzEyX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgwX05JVFMsCistICAgICBUcmFuc2ZlclZl cnNpb24oCisrICAgICBUcmFuc2ZlclZlcnNpb257CisgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpTQ1JHQl9MSU5FQVJfODBfTklUUywKKy0gICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX1NDUkdCX0xJTkVBUl84MF9OSVRTX1NJTkNFX1ZFUlNJT04p fSwKKysgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NDUkdCX0xJTkVB Ul84MF9OSVRTX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VP VEZfTkFNRVNfR0FNTUExOCwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6 OlRyYW5zZmVySUQ6OkdBTU1BMTgsCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTE4X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5z ZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMTgsCisrICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTE4X1NJ TkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FN TUEyOCwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OkdBTU1BMjgsCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19HQU1NQTI4X1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntn Zng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkdBTU1BMjgsCisrICAgICAgICAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTI4X1NJTkNFX1ZFUlNJT059 fSwKKyB9KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHRoZSBTRFIgemNyX2NvbG9yX21hbmFnZXJfdjEg ZW90Zl9uYW1lcyBlbnVtIHZhbHVlcworQEAgLTE3NywxOCArMTc3LDE4IEBAIGNvbnN0ZXhwciBh dXRvIGtFb3RmTWFwID0gYmFzZTo6TWFrZUZpeGUKKyBjb25zdGV4cHIgYXV0byBrVHJhbnNmZXJN YXAgPQorICAgICBiYXNlOjpNYWtlRml4ZWRGbGF0TWFwPHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2Vv dGZfbmFtZXMsIFRyYW5zZmVyRm5WZXJzaW9uPih7CisgICAgICAgICB7WkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19MSU5FQVIsCistICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tO YW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAg ICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtMaW5lYXIsIGtEZWZhdWx0 U2luY2VWZXJzaW9ufX0sCisgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TUkdCLAorLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuRXh0 OjprU1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICBUcmFuc2ZlckZuVmVy c2lvbntTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0s CisgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOSwKKy0gICAg ICAgICBUcmFuc2ZlckZuVmVyc2lvbigKKysgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbnsKKyAg ICAgICAgICAgICAgU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtSZWM3MDksCistICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTil9LAor KyAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNF X1ZFUlNJT059fSwKKyAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JU MjA4NywKKy0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihnYW1tYTI0LCBrRGVmYXVsdFNpbmNl VmVyc2lvbil9LAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue2dhbW1hMjQsIGtEZWZhdWx0 U2luY2VWZXJzaW9ufX0sCisgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19BRE9CRVJHQiwKKy0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJG bkV4dDo6a0E5OFJHQiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNl VmVyc2lvbil9LAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZu RXh0OjprQTk4UkdCLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCisgICAgIH0pOworIAorIC8vIEEgbWFwIGZyb20gdGhlIEhEUiB6Y3JfY29sb3Jf bWFuYWdlcl92MSBlb3RmX25hbWVzIGVudW0gdmFsdWVzCitAQCAtMTk3LDY3ICsxOTcsNjcgQEAg Y29uc3RleHByIGF1dG8ga1RyYW5zZmVyTWFwID0KKyBjb25zdGV4cHIgYXV0byBrSERSVHJhbnNm ZXJNYXAgPQorICAgICBiYXNlOjpNYWtlRml4ZWRGbGF0TWFwPHpjcl9jb2xvcl9tYW5hZ2VyX3Yx X2VvdGZfbmFtZXMsIFRyYW5zZmVyRm5WZXJzaW9uPigKKyAgICAgICAgIHt7WkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19MSU5FQVIsCistICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9u KFNrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0Rl ZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19TUkdCX0hEUiwKKy0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oCisrICAgICAg ICAgIFRyYW5zZmVyRm5WZXJzaW9ueworICAgICAgICAgICAgICAgU2tOYW1lZFRyYW5zZmVyRm5F eHQ6OmtTUkdCLAorLSAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1F U19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19QUSwKKy0gICAgICAgICAgVHJhbnNmZXJG blZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm46OmtQUSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwK KysgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtQUSwga0Rl ZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19ITEcsCistICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2Zl ckZuOjprSExHLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFRyYW5zZmVy Rm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprSExHLAorKyAgICAgICAgICAgICAgICAgICAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9O fX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURT UkdCMTAsCistICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9uKAorKyAgICAgICAgICBUcmFuc2Zl ckZuVmVyc2lvbnsKKyAgICAgICAgICAgICAgIFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprU1JHQkV4 dGVuZGVkMTAyM092ZXI1MTAsCistICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0VYVEVOREVEU1JHQjEwX1NJTkNFX1ZFUlNJT04pfX0pOworKyAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0IxMF9TSU5DRV9W RVJTSU9OfX19KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIG1hdHJp eF9uYW1lcyBlbnVtIHZhbHVlcyB0bworIC8vIGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SURzLgor IGNvbnN0ZXhwciBhdXRvIGtNYXRyaXhNYXAgPQorICAgICBiYXNlOjpNYWtlRml4ZWRGbGF0TWFw PHpjcl9jb2xvcl9tYW5hZ2VyX3YxX21hdHJpeF9uYW1lcywgTWF0cml4VmVyc2lvbj4oCisgICAg ICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19SR0IsCistICAgICAgICAg IE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6UkdCLCBrRGVmYXVsdFNp bmNlVmVyc2lvbil9LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OlJHQiwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUNzA5LAorLSAgICAgICAgICBNYXRyaXhWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUNzA5LAorLSAgICAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNpb257 Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQ3MDksCisrICAgICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfTUFUUklYX05BTUVTX0JUNDcwQkcsCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oCisrICAg ICAgICAgIE1hdHJpeFZlcnNpb257CisgICAgICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6Ok1h dHJpeElEOjpCVDQ3MEJHLAorLSAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFU UklYX05BTUVTX0JUNDcwQkdfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUNDcwQkdfU0lOQ0VfVkVSU0lPTn19LAorICAg ICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQyMDIwX05DTCwKKy0g ICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBf TkNMLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisr ICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIw X05DTCwKKysgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfRkNDLAorLSAgICAg ICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkZDQywga0RlZmF1 bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3Bh Y2U6Ok1hdHJpeElEOjpGQ0MsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZQ09DRywKKy0gICAgICAgICAgTWF0cml4 VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZQ09DRywKKy0gICAgICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWUNPQ0dfU0lOQ0Vf VkVSU0lPTil9LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0 cml4SUQ6OllDT0NHLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX01BVFJJWF9OQU1FU19ZQ09DR19TSU5DRV9WRVJTSU9OfX0sCisgICAgICAgICAge1pDUl9D T0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZRFpEWCwKKy0gICAgICAgICAgTWF0cml4VmVy c2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpZRFpEWCwKKy0gICAgICAgICAgICAgICAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWURaRFhfU0lOQ0VfVkVS U0lPTil9LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4 SUQ6OllEWkRYLAorKyAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X01BVFJJWF9OQU1FU19ZRFpEWF9TSU5DRV9WRVJTSU9OfX0sCisgICAgICAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19HQlIsCistICAgICAgICAgIE1hdHJpeFZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6R0JSLAorLSAgICAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19HQlJfU0lOQ0VfVkVSU0lPTil9LAor KyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkdCUiwK KysgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFN RVNfR0JSX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf TUFUUklYX05BTUVTX1NNUFRFMTcwTSwKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNv bG9yU3BhY2U6Ok1hdHJpeElEOjpTTVBURTE3ME0sCistICAgICAgICAgICAgICAgICAgICAgICAg a0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNv bG9yU3BhY2U6Ok1hdHJpeElEOjpTTVBURTE3ME0sCisrICAgICAgICAgICAgICAgICAgICAgICAg a0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFf TUFUUklYX05BTUVTX1NNUFRFMjQwTSwKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNv bG9yU3BhY2U6Ok1hdHJpeElEOjpTTVBURTI0ME0sCistICAgICAgICAgICAgICAgICAgICAgICAg a0RlZmF1bHRTaW5jZVZlcnNpb24pfX0pOworKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6 Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlNNUFRFMjQwTSwKKysgICAgICAgICAgICAgICAgICAgICAg ICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19fSk7CisgCisgLy8gQSBtYXAgZnJvbSB6Y3JfY29sb3Jf bWFuYWdlcl92MSByYW5nZV9uYW1lcyBlbnVtIHZhbHVlcyB0bworIC8vIGdmeDo6Q29sb3JTcGFj ZTo6UmFuZ2VJRHMuCisgY29uc3RleHByIGF1dG8ga1JhbmdlTWFwID0KKyAgICAgYmFzZTo6TWFr ZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9yYW5nZV9uYW1lcywgUmFuZ2VWZXJz aW9uPigKKyAgICAgICAgIHt7WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFOR0VfTkFNRVNfTElNSVRF RCwKKy0gICAgICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6TElN SVRFRCwKKy0gICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisr ICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkxJTUlURUQs CisrICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9SQU5HRV9OQU1FU19GVUxMLAorLSAgICAgICAgICBS YW5nZVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpGVUxMLCBrRGVmYXVsdFNpbmNl VmVyc2lvbil9LAorKyAgICAgICAgICBSYW5nZVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5n ZUlEOjpGVUxMLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9SQU5HRV9OQU1FU19ERVJJVkVELAorLSAgICAgICAgICBSYW5nZVZlcnNpb24o Z2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpERVJJVkVELAorLSAgICAgICAgICAgICAgICAgICAg ICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfX0pOworKyAgICAgICAgICBSYW5nZVZlcnNpb257Z2Z4 OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpERVJJVkVELAorKyAgICAgICAgICAgICAgICAgICAgICAg a0RlZmF1bHRTaW5jZVZlcnNpb259fX0pOworIAorIHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2Nocm9t YXRpY2l0eV9uYW1lcyBUb0NvbG9yTWFuYWdlckNocm9tYXRpY2l0eSgKKyAgICAgZ2Z4OjpDb2xv clNwYWNlOjpQcmltYXJ5SUQgcHJpbWFyeUlELAorQEAgLTI4MCw0ICsyODAsNCBAQCB6Y3JfY29s b3JfbWFuYWdlcl92MV9lb3RmX25hbWVzIFRvQ29sb3JNCisgCisgfSAgLy8gbmFtZXNwYWNlIHVp Ojp3YXlsYW5kCisgCistI2VuZGlmICAvLyBVSV9CQVNFX1dBWUxBTkRfQ09MT1JfTUFOQUdFUl9V VElMX0hfCitcIEtlaW4gWmVpbGVudW1icnVjaCBhbSBEYXRlaWVuZGUuCisrI2VuZGlmICAvLyBV SV9CQVNFX1dBWUxBTkRfQ09MT1JfTUFOQUdFUl9VVElMX0hfCitkaWZmIC11cCBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3VpL2d0ay9ndGtfdWkuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi91aS9ndGsvZ3RrX3VpLmNjCistLS0gY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi91aS9ndGsvZ3RrX3VpLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjQtMDUt MjkgMTg6MDI6MzIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91 aS9ndGsvZ3RrX3VpLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTE2OTE2MDU3ICswMjAwCitAQCAt MTAwMSwxMSArMTAwMSwxMSBAQCBkaXNwbGF5OjpEaXNwbGF5Q29uZmlnIEd0a1VpOjpHZXREaXNw bGF5CisgICAgIEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKKyAgICAgZ2RrX21vbml0b3JfZ2V0X2dl b21ldHJ5KG1vbml0b3IsICZnZW9tZXRyeSk7CisgICAgIGludCBtb25pdG9yX3NjYWxlID0gc3Rk OjptYXgoMSwgZ2RrX21vbml0b3JfZ2V0X3NjYWxlX2ZhY3Rvcihtb25pdG9yKSk7CistICAgIGNv bmZpZy5kaXNwbGF5X2dlb21ldHJpZXMuZW1wbGFjZV9iYWNrKAorKyAgICBjb25maWcuZGlzcGxh eV9nZW9tZXRyaWVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICAgZ2Z4OjpSZWN0KG1vbml0 b3Jfc2NhbGUgKiBnZW9tZXRyeS54LCBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkueSwKKyAgICAg ICAgICAgICAgICAgICBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkud2lkdGgsCisgICAgICAgICAg ICAgICAgICAgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LmhlaWdodCksCistICAgICAgICBtb25p dG9yX3NjYWxlICogZm9udF9zY2FsZSk7CisrICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obW9u aXRvcl9zY2FsZSAqIGZvbnRfc2NhbGUpfTsKKyAgIH0KKyAgIHJldHVybiBjb25maWc7CisgfQor ZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS92aWV3cy9jb250cm9scy9idXR0b24v bGFiZWxfYnV0dG9uLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyNi4wLjY0 NzguMjYvdWkvdmlld3MvY29udHJvbHMvYnV0dG9uL2xhYmVsX2J1dHRvbi5jYworLS0tIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvY29udHJvbHMvYnV0dG9uL2xhYmVsX2J1dHRvbi5j Yy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAyOjMyLjAwMDAwMDAwMCAr MDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvY29udHJvbHMvYnV0dG9u L2xhYmVsX2J1dHRvbi5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjUxNjkxNjA1NyArMDIwMAorQEAg LTM5MiwxMSArMzkyLDExIEBAIFByb3Bvc2VkTGF5b3V0IExhYmVsQnV0dG9uOjpDYWxjdWxhdGVQ cm8KKyAKKyAgIGdmeDo6UmVjdCBpbWFnZV9hcmVhID0gR2V0TG9jYWxCb3VuZHMoKTsKKyAKKy0g IGxheW91dHMuY2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soCisrICBsYXlvdXRzLmNoaWxkX2xh eW91dHMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgaW5rX2Ryb3BfY29udGFpbmVyXy5nZXQo KSwKKyAgICAgICBzdGF0aWNfY2FzdDxEZWxlZ2F0aW5nTGF5b3V0TWFuYWdlcio+KEdldExheW91 dE1hbmFnZXIoKSkKKyAgICAgICAgICAgLT5DYW5CZVZpc2libGUoaW5rX2Ryb3BfY29udGFpbmVy Xy5nZXQoKSksCistICAgICAgaW1hZ2VfYXJlYSwgU2l6ZUJvdW5kcygpKTsKKysgICAgICBpbWFn ZV9hcmVhLCBTaXplQm91bmRzKCl9OworIAorICAgZ2Z4OjpJbnNldHMgaW5zZXRzID0gR2V0SW5z ZXRzKCk7CisgICAvLyBJZiB0aGUgYnV0dG9uIGhhdmUgYSBsaW1pdGVkIHNwYWNlIHRvIGZpdCBp biwgdGhlIGltYWdlIGFuZCB0aGUgbGFiZWwKK0BAIC00NDgsMTEgKzQ0OCwxMSBAQCBQcm9wb3Nl ZExheW91dCBMYWJlbEJ1dHRvbjo6Q2FsY3VsYXRlUHJvCisgICB9IGVsc2UgaWYgKGhvcml6b250 YWxfYWxpZ25tZW50ID09IGdmeDo6QUxJR05fUklHSFQpIHsKKyAgICAgaW1hZ2Vfb3JpZ2luLk9m ZnNldChpbWFnZV9hcmVhLndpZHRoKCkgLSBpbWFnZV9zaXplLndpZHRoKCksIDApOworICAgfQor LSAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKKysgIGxheW91dHMuY2hpbGRf bGF5b3V0cy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBjb25zdF9jYXN0PExhYmVsQnV0dG9u Kj4odGhpcyktPmltYWdlX2NvbnRhaW5lcl92aWV3KCksCisgICAgICAgc3RhdGljX2Nhc3Q8RGVs ZWdhdGluZ0xheW91dE1hbmFnZXIqPihHZXRMYXlvdXRNYW5hZ2VyKCkpCisgICAgICAgICAgIC0+ Q2FuQmVWaXNpYmxlKGltYWdlX2NvbnRhaW5lcl92aWV3KCkpLAorLSAgICAgIGdmeDo6UmVjdChp bWFnZV9vcmlnaW4sIGltYWdlX3NpemUpLCBTaXplQm91bmRzKCkpOworKyAgICAgIGdmeDo6UmVj dChpbWFnZV9vcmlnaW4sIGltYWdlX3NpemUpLCBTaXplQm91bmRzKCl9OworIAorICAgZ2Z4OjpS ZWN0IGxhYmVsX2JvdW5kcyA9IGxhYmVsX2FyZWE7CisgICBpZiAobGFiZWxfYXJlYS53aWR0aCgp ID09IGxhYmVsX3NpemUud2lkdGgoKSkgeworQEAgLTQ2NiwxMSArNDY2LDExIEBAIFByb3Bvc2Vk TGF5b3V0IExhYmVsQnV0dG9uOjpDYWxjdWxhdGVQcm8KKyAgICAgfQorICAgfQorIAorLSAgbGF5 b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygKKysgIGxheW91dHMuY2hpbGRfbGF5b3V0 cy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBsYWJlbF8uZ2V0KCksCisgICAgICAgc3RhdGlj X2Nhc3Q8RGVsZWdhdGluZ0xheW91dE1hbmFnZXIqPihHZXRMYXlvdXRNYW5hZ2VyKCkpCisgICAg ICAgICAgIC0+Q2FuQmVWaXNpYmxlKGxhYmVsXy5nZXQoKSksCistICAgICAgbGFiZWxfYm91bmRz LCBTaXplQm91bmRzKCkpOworKyAgICAgIGxhYmVsX2JvdW5kcywgU2l6ZUJvdW5kcygpfTsKKyAg IGxheW91dHMuaG9zdF9zaXplID0KKyAgICAgICBnZng6OlNpemUoc2l6ZV9ib3VuZHMud2lkdGgo KS52YWx1ZSgpLCBzaXplX2JvdW5kcy5oZWlnaHQoKS52YWx1ZSgpKTsKKyAKK2RpZmYgLXVwIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvY29udHJvbHMvZWRpdGFibGVfY29tYm9ib3gv ZWRpdGFibGVfY29tYm9ib3guY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi91aS92aWV3cy9jb250cm9scy9lZGl0YWJsZV9jb21ib2JveC9lZGl0YWJsZV9j b21ib2JveC5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvY29udHJvbHMv ZWRpdGFibGVfY29tYm9ib3gvZWRpdGFibGVfY29tYm9ib3guY2Mubm9fbWF0Y2hpbmdfY29uc3Ry dWN0b3IJMjAyNC0wNS0yOSAxODowMjozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3VpL3ZpZXdzL2NvbnRyb2xzL2VkaXRhYmxlX2NvbWJvYm94L2VkaXRhYmxl X2NvbWJvYm94LmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTE3OTE2MDgxICswMjAwCitAQCAtNDky LDE2ICs0OTIsMTYgQEAgUHJvcG9zZWRMYXlvdXQgRWRpdGFibGVDb21ib2JveDo6Q2FsY3VsYQor ICAgICBsYXlvdXQuaG9zdF9zaXplID0KKyAgICAgICAgIGdmeDo6U2l6ZShzaXplX2JvdW5kcy53 aWR0aCgpLnZhbHVlKCksIHNpemVfYm91bmRzLmhlaWdodCgpLnZhbHVlKCkpOworICAgfQorLSAg bGF5b3V0LmNoaWxkX2xheW91dHMuZW1wbGFjZV9iYWNrKAorKyAgbGF5b3V0LmNoaWxkX2xheW91 dHMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgdGV4dGZpZWxkXy5nZXQoKSwgdGV4dGZpZWxk Xy0+R2V0VmlzaWJsZSgpLAorLSAgICAgIGdmeDo6UmVjdCgwLCAwLCBsYXlvdXQuaG9zdF9zaXpl LndpZHRoKCksIGxheW91dC5ob3N0X3NpemUuaGVpZ2h0KCkpKTsKKysgICAgICBnZng6OlJlY3Qo MCwgMCwgbGF5b3V0Lmhvc3Rfc2l6ZS53aWR0aCgpLCBsYXlvdXQuaG9zdF9zaXplLmhlaWdodCgp KX07CisgICBjb25zdCBpbnQgcHJlZmVycmVkX3dpZHRoID0KKyAgICAgICBjb250cm9sX2VsZW1l bnRzX2NvbnRhaW5lcl8tPkdldFByZWZlcnJlZFNpemUoe30pLndpZHRoKCk7CistICBsYXlvdXQu Y2hpbGRfbGF5b3V0cy5lbXBsYWNlX2JhY2soCisrICBsYXlvdXQuY2hpbGRfbGF5b3V0cy5lbXBs YWNlX2JhY2soKSA9IHsKKyAgICAgICBjb250cm9sX2VsZW1lbnRzX2NvbnRhaW5lcl8uZ2V0KCks CisgICAgICAgY29udHJvbF9lbGVtZW50c19jb250YWluZXJfLT5HZXRWaXNpYmxlKCksCisgICAg ICAgZ2Z4OjpSZWN0KGxheW91dC5ob3N0X3NpemUud2lkdGgoKSAtIHByZWZlcnJlZF93aWR0aCwg MCwgcHJlZmVycmVkX3dpZHRoLAorLSAgICAgICAgICAgICAgICBsYXlvdXQuaG9zdF9zaXplLmhl aWdodCgpKSk7CisrICAgICAgICAgICAgICAgIGxheW91dC5ob3N0X3NpemUuaGVpZ2h0KCkpfTsK KyAgIHJldHVybiBsYXlvdXQ7CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni91aS92aWV3cy9sYXlvdXQvYm94X2xheW91dC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL2xheW91dC9ib3hfbGF5b3V0LmNjCistLS0g Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS92aWV3cy9sYXlvdXQvYm94X2xheW91dC5jYy5ub19t YXRjaGluZ19jb25zdHJ1Y3RvcgkyMDI0LTA1LTI5IDE4OjAyOjMyLjAwMDAwMDAwMCArMDIwMAor KysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvdmlld3MvbGF5b3V0L2JveF9sYXlvdXQuY2MJ MjAyNC0wNi0wMiAyMzo1MToyNS41MTc5MTYwODEgKzAyMDAKK0BAIC0zMjUsNyArMzI1LDcgQEAg dm9pZCBCb3hMYXlvdXQ6OkluaXRpYWxpemVDaGlsZERhdGEoQm94TAorICAgICBkYXRhLmNoaWxk X2RhdGEuZW1wbGFjZV9iYWNrKCk7CisgICAgIEJveENoaWxkRGF0YSYgY2hpbGRfZGF0YSA9IGRh dGEuY2hpbGRfZGF0YS5iYWNrKCk7CisgCistICAgIGRhdGEubGF5b3V0LmNoaWxkX2xheW91dHMu ZW1wbGFjZV9iYWNrKGNoaWxkLCB0cnVlKTsKKysgICAgZGF0YS5sYXlvdXQuY2hpbGRfbGF5b3V0 cy5lbXBsYWNlX2JhY2soKSA9IHtjaGlsZCwgdHJ1ZX07CisgCisgICAgIGdmeDo6SW5zZXRzKiBt YXJnaW5zID0gY2hpbGQgPyBjaGlsZC0+R2V0UHJvcGVydHkoa01hcmdpbnNLZXkpIDogbnVsbHB0 cjsKKyAgICAgaWYgKG1hcmdpbnMpIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYv dWkvdmlld3Mvd2luZG93L2RpYWxvZ19jbGllbnRfdmlldy5jYy5ub19tYXRjaGluZ19jb25zdHJ1 Y3RvciBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL3dpbmRvdy9kaWFsb2dfY2xpZW50 X3ZpZXcuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdzL3dpbmRvdy9kaWFs b2dfY2xpZW50X3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyNC0wNS0yOSAxODow MjozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL3ZpZXdz L3dpbmRvdy9kaWFsb2dfY2xpZW50X3ZpZXcuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41MTg5MTYx MDYgKzAyMDAKK0BAIC0yMDYsMTYgKzIwNiwxNiBAQCBQcm9wb3NlZExheW91dCBEaWFsb2dDbGll bnRWaWV3OjpDYWxjdWxhCisgICBjb25zdCBpbnQgY29udGFpbmVyX2hlaWdodCA9CisgICAgICAg YnV0dG9uX3Jvd19jb250YWluZXJfLT5HZXRIZWlnaHRGb3JXaWR0aChzaXplX2JvdW5kcy53aWR0 aCgpLnZhbHVlKCkpOworICAgY29uc3QgaW50IGNvbnRhaW5lcl95ID0gc2l6ZV9ib3VuZHMuaGVp Z2h0KCkudmFsdWUoKSAtIGNvbnRhaW5lcl9oZWlnaHQ7CistICBsYXlvdXRzLmNoaWxkX2xheW91 dHMuZW1wbGFjZV9iYWNrKAorKyAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVtcGxhY2VfYmFjaygp ID0geworICAgICAgIGJ1dHRvbl9yb3dfY29udGFpbmVyXy5nZXQoKSwgYnV0dG9uX3Jvd19jb250 YWluZXJfLT5HZXRWaXNpYmxlKCksCisgICAgICAgZ2Z4OjpSZWN0KDAsIGNvbnRhaW5lcl95LCBz aXplX2JvdW5kcy53aWR0aCgpLnZhbHVlKCksIGNvbnRhaW5lcl9oZWlnaHQpLAorLSAgICAgIHNp emVfYm91bmRzKTsKKysgICAgICBzaXplX2JvdW5kc307CisgICBpZiAoY29udGVudHNfdmlldygp KSB7CisgICAgIGdmeDo6UmVjdCBjb250ZW50c19ib3VuZHMoc2l6ZV9ib3VuZHMud2lkdGgoKS52 YWx1ZSgpLCBjb250YWluZXJfeSk7CisgICAgIGNvbnRlbnRzX2JvdW5kcy5JbnNldChHZXREaWFs b2dEZWxlZ2F0ZSgpLT5tYXJnaW5zKCkpOworLSAgICBsYXlvdXRzLmNoaWxkX2xheW91dHMuZW1w bGFjZV9iYWNrKGNvbnRlbnRzX3ZpZXcoKSwKKysgICAgbGF5b3V0cy5jaGlsZF9sYXlvdXRzLmVt cGxhY2VfYmFjaygpID0ge2NvbnRlbnRzX3ZpZXcoKSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb250ZW50c192aWV3KCktPkdldFZpc2libGUoKSwKKy0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c19ib3VuZHMsIHNpemVfYm91 bmRzKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50c19i b3VuZHMsIHNpemVfYm91bmRzfTsKKyAgIH0KKyAgIGxheW91dHMuaG9zdF9zaXplID0KKyAgICAg ICBnZng6OlNpemUoc2l6ZV9ib3VuZHMud2lkdGgoKS52YWx1ZSgpLCBzaXplX2JvdW5kcy5oZWln aHQoKS52YWx1ZSgpKTsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LW9sZC1jdXBzLnBh dGNoIGIvY2hyb21pdW0tMTI2LWVsNy1vbGQtY3Vwcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0 NAppbmRleCAwMDAwMDAwLi42ODIxMDg2Ci0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0tMTI2 LWVsNy1vbGQtY3Vwcy5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorZGlmZiAtdXAgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9wcmludGluZy9iYWNrZW5kL2N1cHNfaGVscGVyLmNjLmVsN2N1cHMgY2hy b21pdW0tMTI2LjAuNjQ3OC4yNi9wcmludGluZy9iYWNrZW5kL2N1cHNfaGVscGVyLmNjCistLS0g Y2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9wcmludGluZy9iYWNrZW5kL2N1cHNfaGVscGVyLmNjLmVs N2N1cHMJMjAyNC0wNi0wMyAxNzoxNjozMi4xOTc1MDk2NDMgKzAyMDAKKysrKyBjaHJvbWl1bS0x MjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19oZWxwZXIuY2MJMjAyNC0wNi0wMyAx NzozMjoyMy4wMjgzNzYzMzMgKzAyMDAKK0BAIC00MSwxOCArNDEsNiBAQCBuYW1lc3BhY2UgcHJp bnRpbmcgeworIC8vIFRoaXMgc2VjdGlvbiBjb250YWlucyBoZWxwZXIgY29kZSBmb3IgUFBEIHBh cnNpbmcgZm9yIHNlbWFudGljIGNhcGFiaWxpdGllcy4KKyBuYW1lc3BhY2UgeworIAorLS8vIEZ1 bmN0aW9uIGF2YWlsYWJpbGl0eSBjYW4gYmUgdGVzdGVkIGJ5IGNoZWNraW5nIHdoZXRoZXIgaXRz IGFkZHJlc3MgaXMgbm90CistLy8gbnVsbHB0ci4gV2VhayBzeW1ib2xzIHJlbW92ZSB0aGUgbmVl ZCBmb3IgcGxhdGZvcm0gc3BlY2lmaWMgYnVpbGQgZmxhZ3MgYW5kCistLy8gYWxsb3cgZm9yIGFw cHJvcHJpYXRlIENVUFMgdXNhZ2Ugb24gcGxhdGZvcm1zIHdpdGggbm9uLXVuaWZvcm0gdmVyc2lv bgorLS8vIHN1cHBvcnQsIG5hbWVseSBMaW51eC4KKy0jZGVmaW5lIFdFQUtfQ1VQU19GTih4KSBl eHRlcm4gIkMiIF9fYXR0cmlidXRlX18oKHdlYWspKSBkZWNsdHlwZSh4KSB4CistCistV0VBS19D VVBTX0ZOKGh0dHBDb25uZWN0Mik7CistCistLy8gVGltZW91dCBmb3IgZXN0YWJsaXNoaW5nIGEg Q1VQUyBjb25uZWN0aW9uLiAgSXQgaXMgZXhwZWN0ZWQgdGhhdCBjdXBzZCBpcworLS8vIGFibGUg dG8gc3RhcnQgYW5kIHJlc3BvbmQgb24gYWxsIHN5c3RlbXMgd2l0aGluIHRoaXMgZHVyYXRpb24u CistY29uc3RleHByIGJhc2U6OlRpbWVEZWx0YSBrQ3Vwc1RpbWVvdXQgPSBiYXNlOjpTZWNvbmRz KDUpOworLQorIC8vIENVUFMgZGVmYXVsdCBtYXggY29waWVzIHZhbHVlIChwYXJzZWQgZnJvbSBr Q3Vwc01heENvcGllcyBQUEQgYXR0cmlidXRlKS4KKyBjb25zdGV4cHIgaW50MzJfdCBrRGVmYXVs dE1heENvcGllcyA9IDk5OTk7CisgY29uc3RleHByIGNoYXIga0N1cHNNYXhDb3BpZXNbXSA9ICJj dXBzTWF4Q29waWVzIjsKK0BAIC03NjEsOCArNzQ5LDcgQEAgY29uc3QgaW50IGtEZWZhdWx0SVBQ U2VydmVyUG9ydCA9IDYzMTsKKyAvLyBIZWxwZXIgd3JhcHBlciBhcm91bmQgaHR0cF90IHN0cnVj dHVyZSwgd2l0aCBjb25uZWN0aW9uIGFuZCBjbGVhbnVwCisgLy8gZnVuY3Rpb25hbGl0eS4KKyBI dHRwQ29ubmVjdGlvbkNVUFM6Okh0dHBDb25uZWN0aW9uQ1VQUyhjb25zdCBHVVJMJiBwcmludF9z ZXJ2ZXJfdXJsLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0dHBf ZW5jcnlwdGlvbl90IGVuY3J5cHRpb24sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgYm9vbCBibG9ja2luZykgeworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGh0dHBfZW5jcnlwdGlvbl90IGVuY3J5cHRpb24pIHsKKyAgIC8vIElmIHdlIGhh dmUgYW4gZW1wdHkgdXJsLCB1c2UgZGVmYXVsdCBwcmludCBzZXJ2ZXIuCisgICBpZiAocHJpbnRf c2VydmVyX3VybC5pc19lbXB0eSgpKQorICAgICByZXR1cm47CitAQCAtNzcxLDMxICs3NTgsMjIg QEAgSHR0cENvbm5lY3Rpb25DVVBTOjpIdHRwQ29ubmVjdGlvbkNVUFMoYworICAgaWYgKHBvcnQg PT0gdXJsOjpQT1JUX1VOU1BFQ0lGSUVEKQorICAgICBwb3J0ID0ga0RlZmF1bHRJUFBTZXJ2ZXJQ b3J0OworIAorLSAgaWYgKGh0dHBDb25uZWN0MikgeworLSAgICBodHRwXy5yZXNldChodHRwQ29u bmVjdDIocHJpbnRfc2VydmVyX3VybC5ob3N0KCkuY19zdHIoKSwgcG9ydCwKKy0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgIC8qYWRkcmxpc3Q9Ki9udWxscHRyLCBBRl9VTlNQRUMsIGVuY3J5 cHRpb24sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICBibG9ja2luZyA/IDEgOiAwLCBr Q3Vwc1RpbWVvdXQuSW5NaWxsaXNlY29uZHMoKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAg ICAgIC8qY2FuY2VsPSovbnVsbHB0cikpOworLSAgfSBlbHNlIHsKKy0gICAgLy8gQ29udGludWUg dG8gdXNlIGRlcHJlY2F0ZWQgQ1VQUyBjYWxscyBiZWNhdXNlIGJlY2F1c2Ugb2xkZXIgTGludXgK Ky0gICAgLy8gZGlzdHJpYnV0aW9uIHN1Y2ggYXMgUkhFTC9DZW50T1MgNyBhcmUgc2hpcHBlZCB3 aXRoIENVUFMgMS42LgorLSAgICBodHRwXy5yZXNldCgKKysgIGh0dHBfLnJlc2V0KAorICAgICAg ICAgaHR0cENvbm5lY3RFbmNyeXB0KHByaW50X3NlcnZlcl91cmwuaG9zdCgpLmNfc3RyKCksIHBv cnQsIGVuY3J5cHRpb24pKTsKKy0gIH0KKyAKKyAgIGlmICghaHR0cF8pIHsKKyAgICAgTE9HKEVS Uk9SKSA8PCAiQ1BfQ1VQUzogRmFpbGVkIGNvbm5lY3RpbmcgdG8gcHJpbnQgc2VydmVyOiAiCisg ICAgICAgICAgICAgICAgPDwgcHJpbnRfc2VydmVyX3VybDsKKyAgICAgcmV0dXJuOworICAgfQor LQorLSAgaWYgKCFodHRwQ29ubmVjdDIpIHsKKy0gICAgaHR0cEJsb2NraW5nKGh0dHAoKSwgYmxv Y2tpbmcgPyAxIDogMCk7CistICB9CisgfQorIAorIEh0dHBDb25uZWN0aW9uQ1VQUzo6fkh0dHBD b25uZWN0aW9uQ1VQUygpID0gZGVmYXVsdDsKKyAKKyt2b2lkIEh0dHBDb25uZWN0aW9uQ1VQUzo6 U2V0QmxvY2tpbmcoYm9vbCBibG9ja2luZykgeworKyAgaHR0cEJsb2NraW5nKGh0dHAoKSwgYmxv Y2tpbmcgPyAxIDogMCk7CisrfQorKworIGh0dHBfdCogSHR0cENvbm5lY3Rpb25DVVBTOjpodHRw KCkgeworICAgcmV0dXJuIGh0dHBfLmdldCgpOworIH0KK2RpZmYgLXVwIGNocm9taXVtLTEyNi4w LjY0NzguMjYvcHJpbnRpbmcvYmFja2VuZC9jdXBzX2hlbHBlci5oLmVsN2N1cHMgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9wcmludGluZy9iYWNrZW5kL2N1cHNfaGVscGVyLmgKKy0tLSBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19oZWxwZXIuaC5lbDdjdXBzCTIw MjQtMDYtMDMgMTc6MjM6MzUuOTIzMzA3ODQyICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9wcmludGluZy9iYWNrZW5kL2N1cHNfaGVscGVyLmgJMjAyNC0wNi0wMyAxNzoyNTo1MC44 ODc4NTU0NjAgKzAyMDAKK0BAIC0zNiwxMCArMzYsMTEgQEAgY29uc3RleHByIGN1cHNfcHR5cGVf dCBrRGVzdGluYXRpb25zRmlsdAorIGNsYXNzIENPTVBPTkVOVF9FWFBPUlQoUFJJTlRfQkFDS0VO RCkgSHR0cENvbm5lY3Rpb25DVVBTIHsKKyAgcHVibGljOgorICAgSHR0cENvbm5lY3Rpb25DVVBT KGNvbnN0IEdVUkwmIHByaW50X3NlcnZlcl91cmwsCistICAgICAgICAgICAgICAgICAgICAgaHR0 cF9lbmNyeXB0aW9uX3QgZW5jcnlwdGlvbiwKKy0gICAgICAgICAgICAgICAgICAgICBib29sIGJs b2NraW5nKTsKKysgICAgICAgICAgICAgICAgICAgICBodHRwX2VuY3J5cHRpb25fdCBlbmNyeXB0 aW9uKTsKKyAgIH5IdHRwQ29ubmVjdGlvbkNVUFMoKTsKKyAKKysgIHZvaWQgU2V0QmxvY2tpbmco Ym9vbCBibG9ja2luZyk7CisrCisgICBodHRwX3QqIGh0dHAoKTsKKyAKKyAgcHJpdmF0ZToKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvcHJpbnRpbmcvYmFja2VuZC9wcmludF9iYWNr ZW5kX2N1cHMuY2MuZWw3Y3VwcyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3ByaW50aW5nL2JhY2tl bmQvcHJpbnRfYmFja2VuZF9jdXBzLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9wcmlu dGluZy9iYWNrZW5kL3ByaW50X2JhY2tlbmRfY3Vwcy5jYy5lbDdjdXBzCTIwMjQtMDYtMDMgMTc6 MjY6NDQuNjA3ODcxMTQ5ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9wcmludGlu Zy9iYWNrZW5kL3ByaW50X2JhY2tlbmRfY3Vwcy5jYwkyMDI0LTA2LTAzIDE3OjI5OjE1Ljg4OTgx MDY1MSArMDIwMAorQEAgLTE0OSw3ICsxNDksNyBAQCBtb2pvbTo6UmVzdWx0Q29kZSBQcmludEJh Y2tlbmRDVVBTOjpFbnVtCisgICAvLyBub3Qgc2hvd2luZyBhcyBhdmFpbGFibGUuICBVc2luZyBj dXBzRW51bURlc3RzKCkgYWxsb3dzIHVzIHRvIGRvIG91ciBvd24KKyAgIC8vIGZpbHRlcmluZyBz aG91bGQgYW55IGR1cGxpY2F0ZXMgb2NjdXIuCisgICBDdXBzRGVzdHNEYXRhIGRlc3RzX2RhdGEg PSB7MCwgbnVsbHB0cn07CistICBpcHBfc3RhdHVzX3QgbGFzdF9lcnJvciA9IElQUF9TVEFUVVNf T0s7CisrICBpcHBfc3RhdHVzX3QgbGFzdF9lcnJvciA9IElQUF9PSzsKKyAgIGlmIChwcmludF9z ZXJ2ZXJfdXJsXy5pc19lbXB0eSgpKSB7CisgICAgIFZMT0coMSkgPDwgIkNVUFM6IHVzaW5nIGN1 cHNFbnVtRGVzdHMgdG8gZW51bWVyYXRlIHByaW50ZXJzIjsKKyAgICAgaWYgKCFjdXBzRW51bURl c3RzKENVUFNfREVTVF9GTEFHU19OT05FLCBrQ3Vwc1RpbWVvdXRNcywKK0BAIC0xNzYsNyArMTc2 LDcgQEAgbW9qb206OlJlc3VsdENvZGUgUHJpbnRCYWNrZW5kQ1VQUzo6RW51bQorICAgICAvLyBu byBwcmludGVyIGRyaXZlcnMgaW5zdGFsbGVkLiAgUmVseSB1cG9uIENVUFMgZXJyb3IgY29kZSB0 byBkaXN0aW5ndWlzaAorICAgICAvLyBiZXR3ZWVuIHRoZXNlLgorICAgICBEQ0hFQ0soIWRlc3Rz X2RhdGEuZGVzdHMpOworLSAgICBpZiAobGFzdF9lcnJvciAhPSBJUFBfU1RBVFVTX0VSUk9SX05P VF9GT1VORCkgeworKyAgICBpZiAobGFzdF9lcnJvciAhPSBJUFBfTk9UX0ZPVU5EKSB7CisgICAg ICAgVkxPRygxKSA8PCAiQ1VQUzogRXJyb3IgZ2V0dGluZyBwcmludGVycyBmcm9tIENVUFMgc2Vy dmVyIgorICAgICAgICAgICAgICAgPDwgIiwgc2VydmVyOiAiIDw8IHByaW50X3NlcnZlcl91cmxf CisgICAgICAgICAgICAgICA8PCAiLCBlcnJvcjogIiA8PCBzdGF0aWNfY2FzdDxpbnQ+KGxhc3Rf ZXJyb3IpIDw8ICIgLSAiCitAQCAtMzExLDcgKzMxMSw4IEBAIGludCBQcmludEJhY2tlbmRDVVBT OjpHZXREZXN0cyhjdXBzX2Rlc3QKKyAgIGlmIChwcmludF9zZXJ2ZXJfdXJsXy5pc19lbXB0eSgp KQorICAgICByZXR1cm4gY3Vwc0dldERlc3RzMihDVVBTX0hUVFBfREVGQVVMVCwgZGVzdHMpOwor IAorLSAgSHR0cENvbm5lY3Rpb25DVVBTIGh0dHAocHJpbnRfc2VydmVyX3VybF8sIGN1cHNfZW5j cnlwdGlvbl8sIGJsb2NraW5nXyk7CisrICBIdHRwQ29ubmVjdGlvbkNVUFMgaHR0cChwcmludF9z ZXJ2ZXJfdXJsXywgY3Vwc19lbmNyeXB0aW9uXyk7CisrICBodHRwLlNldEJsb2NraW5nKGJsb2Nr aW5nXyk7CisgCisgICAvLyBUaGlzIGNhbGwgbXVzdCBiZSBtYWRlIGluIHRoZSBzYW1lIHNjb3Bl IGFzIGBodHRwYCBiZWNhdXNlIGl0cyBkZXN0cnVjdG9yCisgICAvLyBjbG9zZXMgdGhlIGNvbm5l Y3Rpb24uCitAQCAtMzM3LDcgKzMzOCw4IEBAIGJhc2U6OkZpbGVQYXRoIFByaW50QmFja2VuZENV UFM6OkdldFBQRCgKKyAgICAgLy8gY29ubmVjdGlvbiB3aWxsIHRpbWVvdXQgYWZ0ZXIgMTAgc2Vj b25kcyBvZiBubyBkYXRhIHBlcmlvZC4gQW5kIGl0IHdpbGwKKyAgICAgLy8gcmV0dXJuIHRoZSBz YW1lIHdheSBhcyBpZiBkYXRhIHdhcyBjb21wbGV0ZWx5IGFuZCBzdWNjZXNzZnVsbHkKKyAgICAg Ly8gZG93bmxvYWRlZC4KKy0gICAgSHR0cENvbm5lY3Rpb25DVVBTIGh0dHAocHJpbnRfc2VydmVy X3VybF8sIGN1cHNfZW5jcnlwdGlvbl8sIGJsb2NraW5nXyk7CisrICAgIEh0dHBDb25uZWN0aW9u Q1VQUyBodHRwKHByaW50X3NlcnZlcl91cmxfLCBjdXBzX2VuY3J5cHRpb25fKTsKKysgICAgaHR0 cC5TZXRCbG9ja2luZyhibG9ja2luZ18pOworICAgICBwcGRfZmlsZV9wYXRoID0gY3Vwc0dldFBQ RDIoaHR0cC5odHRwKCksIG5hbWUpOworICAgICAvLyBDaGVjayBpZiB0aGUgZ2V0IGZ1bGwgUFBE LCBzaW5jZSBub24tYmxvY2tpbmcgY2FsbCBtYXkgc2ltcGx5IHJldHVybgorICAgICAvLyBub3Jt YWxseSBhZnRlciB0aW1lb3V0IGV4cGlyZWQuCitAQCAtMzczLDcgKzM3NSw4IEBAIFNjb3BlZERl c3RpbmF0aW9uIFByaW50QmFja2VuZENVUFM6OkdldE4KKyAgICAgLy8gVXNlIGRlZmF1bHQgKGxv Y2FsKSBwcmludCBzZXJ2ZXIuCisgICAgIGRlc3QgPSBjdXBzR2V0TmFtZWREZXN0KENVUFNfSFRU UF9ERUZBVUxULCBwcmludGVyX25hbWUuY19zdHIoKSwgbnVsbHB0cik7CisgICB9IGVsc2Ugewor LSAgICBIdHRwQ29ubmVjdGlvbkNVUFMgaHR0cChwcmludF9zZXJ2ZXJfdXJsXywgY3Vwc19lbmNy eXB0aW9uXywgYmxvY2tpbmdfKTsKKysgICAgSHR0cENvbm5lY3Rpb25DVVBTIGh0dHAocHJpbnRf c2VydmVyX3VybF8sIGN1cHNfZW5jcnlwdGlvbl8pOworKyAgICBodHRwLlNldEJsb2NraW5nKGJs b2NraW5nXyk7CisgICAgIGRlc3QgPSBjdXBzR2V0TmFtZWREZXN0KGh0dHAuaHR0cCgpLCBwcmlu dGVyX25hbWUuY19zdHIoKSwgbnVsbHB0cik7CisgICB9CisgICByZXR1cm4gU2NvcGVkRGVzdGlu YXRpb24oZGVzdCk7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tMTI2LWVsNy1ydXN0LWNfc3RyaW5n LnBhdGNoIGIvY2hyb21pdW0tMTI2LWVsNy1ydXN0LWNfc3RyaW5nLnBhdGNoCm5ldyBmaWxlIG1v ZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk4ODE3ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJv bWl1bS0xMjYtZWw3LXJ1c3QtY19zdHJpbmcucGF0Y2gKQEAgLTAsMCArMSwxNjY3IEBACityZXBs YWNlIGNfc3RyaW5nIGFzIGl0IGlzIG5vdCBzdXBwb3J0ZWQgYnkgb2xkIHJ1c3QgaW4gZWw3CisK K2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Iv c3luLTIuMC41NS9zcmMvZ2VuL2Nsb25lLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9jbG9uZS5ycworLS0tIGEvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2dlbi9j bG9uZS5ycworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3N5bi0yLjAuNjAvc3JjL2dlbi9jbG9uZS5ycworQEAgLTEzMzgsNiArMTMzOCw3IEBAIGltcGwg Q2xvbmUgZm9yIGNyYXRlOjpMaXQgeworICAgICAgICAgbWF0Y2ggc2VsZiB7CisgICAgICAgICAg ICAgY3JhdGU6OkxpdDo6U3RyKHYwKSA9PiBjcmF0ZTo6TGl0OjpTdHIodjAuY2xvbmUoKSksCisg ICAgICAgICAgICAgY3JhdGU6OkxpdDo6Qnl0ZVN0cih2MCkgPT4gY3JhdGU6OkxpdDo6Qnl0ZVN0 cih2MC5jbG9uZSgpKSwKKysgICAgICAgICAgICBjcmF0ZTo6TGl0OjpDU3RyKHYwKSA9PiBjcmF0 ZTo6TGl0OjpDU3RyKHYwLmNsb25lKCkpLAorICAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGUo djApID0+IGNyYXRlOjpMaXQ6OkJ5dGUodjAuY2xvbmUoKSksCisgICAgICAgICAgICAgY3JhdGU6 OkxpdDo6Q2hhcih2MCkgPT4gY3JhdGU6OkxpdDo6Q2hhcih2MC5jbG9uZSgpKSwKKyAgICAgICAg ICAgICBjcmF0ZTo6TGl0OjpJbnQodjApID0+IGNyYXRlOjpMaXQ6OkludCh2MC5jbG9uZSgpKSwK K2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Iv c3luLTIuMC41NS9zcmMvZ2VuL2RlYnVnLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9kZWJ1Zy5ycworLS0tIGEvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2dlbi9k ZWJ1Zy5ycworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3N5bi0yLjAuNjAvc3JjL2dlbi9kZWJ1Zy5ycworQEAgLTE5NTgsNiArMTk1OCw3IEBAIGltcGwg RGVidWcgZm9yIGNyYXRlOjpMaXQgeworICAgICAgICAgbWF0Y2ggc2VsZiB7CisgICAgICAgICAg ICAgY3JhdGU6OkxpdDo6U3RyKHYwKSA9PiB2MC5kZWJ1Zyhmb3JtYXR0ZXIsICJTdHIiKSwKKyAg ICAgICAgICAgICBjcmF0ZTo6TGl0OjpCeXRlU3RyKHYwKSA9PiB2MC5kZWJ1Zyhmb3JtYXR0ZXIs ICJCeXRlU3RyIiksCisrICAgICAgICAgICAgY3JhdGU6OkxpdDo6Q1N0cih2MCkgPT4gdjAuZGVi dWcoZm9ybWF0dGVyLCAiQ1N0ciIpLAorICAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGUodjAp ID0+IHYwLmRlYnVnKGZvcm1hdHRlciwgIkJ5dGUiKSwKKyAgICAgICAgICAgICBjcmF0ZTo6TGl0 OjpDaGFyKHYwKSA9PiB2MC5kZWJ1Zyhmb3JtYXR0ZXIsICJDaGFyIiksCisgICAgICAgICAgICAg Y3JhdGU6OkxpdDo6SW50KHYwKSA9PiB2MC5kZWJ1Zyhmb3JtYXR0ZXIsICJJbnQiKSwKK2RpZmYg LS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIu MC41NS9zcmMvZ2VuL2VxLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9lcS5ycworLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9j aHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2dlbi9lcS5ycworKysrIGIv dGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3Jj L2dlbi9lcS5ycworQEAgLTEzMDAsNiArMTMwMCw3IEBAIGltcGwgUGFydGlhbEVxIGZvciBjcmF0 ZTo6TGl0IHsKKyAgICAgICAgIG1hdGNoIChzZWxmLCBvdGhlcikgeworICAgICAgICAgICAgIChj cmF0ZTo6TGl0OjpTdHIoc2VsZjApLCBjcmF0ZTo6TGl0OjpTdHIob3RoZXIwKSkgPT4gc2VsZjAg PT0gb3RoZXIwLAorICAgICAgICAgICAgIChjcmF0ZTo6TGl0OjpCeXRlU3RyKHNlbGYwKSwgY3Jh dGU6OkxpdDo6Qnl0ZVN0cihvdGhlcjApKSA9PiBzZWxmMCA9PSBvdGhlcjAsCisrICAgICAgICAg ICAgKGNyYXRlOjpMaXQ6OkNTdHIoc2VsZjApLCBjcmF0ZTo6TGl0OjpDU3RyKG90aGVyMCkpID0+ IHNlbGYwID09IG90aGVyMCwKKyAgICAgICAgICAgICAoY3JhdGU6OkxpdDo6Qnl0ZShzZWxmMCks IGNyYXRlOjpMaXQ6OkJ5dGUob3RoZXIwKSkgPT4gc2VsZjAgPT0gb3RoZXIwLAorICAgICAgICAg ICAgIChjcmF0ZTo6TGl0OjpDaGFyKHNlbGYwKSwgY3JhdGU6OkxpdDo6Q2hhcihvdGhlcjApKSA9 PiBzZWxmMCA9PSBvdGhlcjAsCisgICAgICAgICAgICAgKGNyYXRlOjpMaXQ6OkludChzZWxmMCks IGNyYXRlOjpMaXQ6OkludChvdGhlcjApKSA9PiBzZWxmMCA9PSBvdGhlcjAsCitAQCAtMTMyNSw2 ICsxMzI2LDggQEAgaW1wbCBFcSBmb3IgY3JhdGU6OkxpdEJ5dGUge30KKyAjW2NmZ19hdHRyKGRv Y19jZmcsIGRvYyhjZmcoZmVhdHVyZSA9ICJleHRyYS10cmFpdHMiKSkpXQorIGltcGwgRXEgZm9y IGNyYXRlOjpMaXRCeXRlU3RyIHt9CisgI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1 cmUgPSAiZXh0cmEtdHJhaXRzIikpKV0KKytpbXBsIEVxIGZvciBjcmF0ZTo6TGl0Q1N0ciB7fQor KyNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gImV4dHJhLXRyYWl0cyIpKSld CisgaW1wbCBFcSBmb3IgY3JhdGU6OkxpdENoYXIge30KKyAjW2NmZ19hdHRyKGRvY19jZmcsIGRv YyhjZmcoZmVhdHVyZSA9ICJleHRyYS10cmFpdHMiKSkpXQorIGltcGwgRXEgZm9yIGNyYXRlOjpM aXRGbG9hdCB7fQorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVz X2lvL3ZlbmRvci9zeW4tMi4wLjU1L3NyYy9nZW4vZm9sZC5ycyBiL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjYwL3NyYy9nZW4vZm9sZC5ycworLS0t IGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUv c3JjL2dlbi9mb2xkLnJzCisrKysgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19p by92ZW5kb3Ivc3luLTIuMC42MC9zcmMvZ2VuL2ZvbGQucnMKK0BAIC01ODEsNiArNTgxLDkgQEAg cHViIHRyYWl0IEZvbGQgeworICAgICBmbiBmb2xkX2xpdF9ieXRlX3N0cigmbXV0IHNlbGYsIGk6 IGNyYXRlOjpMaXRCeXRlU3RyKSAtPiBjcmF0ZTo6TGl0Qnl0ZVN0ciB7CisgICAgICAgICBmb2xk X2xpdF9ieXRlX3N0cihzZWxmLCBpKQorICAgICB9CisrICAgIGZuIGZvbGRfbGl0X2NzdHIoJm11 dCBzZWxmLCBpOiBjcmF0ZTo6TGl0Q1N0cikgLT4gY3JhdGU6OkxpdENTdHIgeworKyAgICAgICAg Zm9sZF9saXRfY3N0cihzZWxmLCBpKQorKyAgICB9CisgICAgIGZuIGZvbGRfbGl0X2NoYXIoJm11 dCBzZWxmLCBpOiBjcmF0ZTo6TGl0Q2hhcikgLT4gY3JhdGU6OkxpdENoYXIgeworICAgICAgICAg Zm9sZF9saXRfY2hhcihzZWxmLCBpKQorICAgICB9CitAQCAtMjYyOCw2ICsyNjMxLDcgQEAgd2hl cmUKKyAgICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGVTdHIoX2JpbmRpbmdfMCkgPT4geworICAgICAg ICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGVTdHIoZi5mb2xkX2xpdF9ieXRlX3N0cihfYmluZGluZ18w KSkKKyAgICAgICAgIH0KKysgICAgICAgIGNyYXRlOjpMaXQ6OkNTdHIoX2JpbmRpbmdfMCkgPT4g Y3JhdGU6OkxpdDo6Q1N0cihmLmZvbGRfbGl0X2NzdHIoX2JpbmRpbmdfMCkpLAorICAgICAgICAg Y3JhdGU6OkxpdDo6Qnl0ZShfYmluZGluZ18wKSA9PiBjcmF0ZTo6TGl0OjpCeXRlKGYuZm9sZF9s aXRfYnl0ZShfYmluZGluZ18wKSksCisgICAgICAgICBjcmF0ZTo6TGl0OjpDaGFyKF9iaW5kaW5n XzApID0+IGNyYXRlOjpMaXQ6OkNoYXIoZi5mb2xkX2xpdF9jaGFyKF9iaW5kaW5nXzApKSwKKyAg ICAgICAgIGNyYXRlOjpMaXQ6OkludChfYmluZGluZ18wKSA9PiBjcmF0ZTo6TGl0OjpJbnQoZi5m b2xkX2xpdF9pbnQoX2JpbmRpbmdfMCkpLAorQEAgLTI2NjMsNiArMjY2NywxNSBAQCB3aGVyZQor ICAgICBub2RlLnNldF9zcGFuKHNwYW4pOworICAgICBub2RlCisgfQorK3B1YiBmbiBmb2xkX2xp dF9jc3RyPEY+KGY6ICZtdXQgRiwgbm9kZTogY3JhdGU6OkxpdENTdHIpIC0+IGNyYXRlOjpMaXRD U3RyCisrd2hlcmUKKysgICAgRjogRm9sZCArID9TaXplZCwKKyt7CisrICAgIGxldCBzcGFuID0g Zi5mb2xkX3NwYW4obm9kZS5zcGFuKCkpOworKyAgICBsZXQgbXV0IG5vZGUgPSBub2RlOworKyAg ICBub2RlLnNldF9zcGFuKHNwYW4pOworKyAgICBub2RlCisrfQorIHB1YiBmbiBmb2xkX2xpdF9j aGFyPEY+KGY6ICZtdXQgRiwgbm9kZTogY3JhdGU6OkxpdENoYXIpIC0+IGNyYXRlOjpMaXRDaGFy Cisgd2hlcmUKKyAgICAgRjogRm9sZCArID9TaXplZCwKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0 eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS9zcmMvZ2VuL2hhc2gu cnMgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC42 MC9zcmMvZ2VuL2hhc2gucnMKKy0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVz X2lvL3ZlbmRvci9zeW4tMi4wLjU1L3NyYy9nZW4vaGFzaC5ycworKysrIGIvdGhpcmRfcGFydHkv cnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi9oYXNoLnJz CitAQCAtMTY4MiwyOCArMTY4MiwzMiBAQCBpbXBsIEhhc2ggZm9yIGNyYXRlOjpMaXQgeworICAg ICAgICAgICAgICAgICBzdGF0ZS53cml0ZV91OCgxdTgpOworICAgICAgICAgICAgICAgICB2MC5o YXNoKHN0YXRlKTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgY3JhdGU6OkxpdDo6Qnl0 ZSh2MCkgPT4geworKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkNTdHIodjApID0+IHsKKyAgICAg ICAgICAgICAgICAgc3RhdGUud3JpdGVfdTgoMnU4KTsKKyAgICAgICAgICAgICAgICAgdjAuaGFz aChzdGF0ZSk7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkNoYXIo djApID0+IHsKKysgICAgICAgICAgICBjcmF0ZTo6TGl0OjpCeXRlKHYwKSA9PiB7CisgICAgICAg ICAgICAgICAgIHN0YXRlLndyaXRlX3U4KDN1OCk7CisgICAgICAgICAgICAgICAgIHYwLmhhc2go c3RhdGUpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBjcmF0ZTo6TGl0OjpJbnQodjAp ID0+IHsKKysgICAgICAgICAgICBjcmF0ZTo6TGl0OjpDaGFyKHYwKSA9PiB7CisgICAgICAgICAg ICAgICAgIHN0YXRlLndyaXRlX3U4KDR1OCk7CisgICAgICAgICAgICAgICAgIHYwLmhhc2goc3Rh dGUpOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBjcmF0ZTo6TGl0OjpGbG9hdCh2MCkg PT4geworKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkludCh2MCkgPT4geworICAgICAgICAgICAg ICAgICBzdGF0ZS53cml0ZV91OCg1dTgpOworICAgICAgICAgICAgICAgICB2MC5oYXNoKHN0YXRl KTsKKyAgICAgICAgICAgICB9CistICAgICAgICAgICAgY3JhdGU6OkxpdDo6Qm9vbCh2MCkgPT4g eworKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkZsb2F0KHYwKSA9PiB7CisgICAgICAgICAgICAg ICAgIHN0YXRlLndyaXRlX3U4KDZ1OCk7CisgICAgICAgICAgICAgICAgIHYwLmhhc2goc3RhdGUp OworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBjcmF0ZTo6TGl0OjpWZXJiYXRpbSh2MCkg PT4geworKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OkJvb2wodjApID0+IHsKKyAgICAgICAgICAg ICAgICAgc3RhdGUud3JpdGVfdTgoN3U4KTsKKysgICAgICAgICAgICAgICAgdjAuaGFzaChzdGF0 ZSk7CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIGNyYXRlOjpMaXQ6OlZlcmJhdGltKHYw KSA9PiB7CisrICAgICAgICAgICAgICAgIHN0YXRlLndyaXRlX3U4KDh1OCk7CisgICAgICAgICAg ICAgICAgIHYwLnRvX3N0cmluZygpLmhhc2goc3RhdGUpOworICAgICAgICAgICAgIH0KKyAgICAg ICAgIH0KK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92 ZW5kb3Ivc3luLTIuMC41NS9zcmMvZ2VuL3Zpc2l0LnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJv bWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi92aXNpdC5ycworLS0tIGEv dGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3Jj L2dlbi92aXNpdC5ycworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3N5bi0yLjAuNjAvc3JjL2dlbi92aXNpdC5ycworQEAgLTU0Nyw2ICs1NDcsOSBAQCBw dWIgdHJhaXQgVmlzaXQ8J2FzdD4geworICAgICBmbiB2aXNpdF9saXRfYnl0ZV9zdHIoJm11dCBz ZWxmLCBpOiAmJ2FzdCBjcmF0ZTo6TGl0Qnl0ZVN0cikgeworICAgICAgICAgdmlzaXRfbGl0X2J5 dGVfc3RyKHNlbGYsIGkpOworICAgICB9CisrICAgIGZuIHZpc2l0X2xpdF9jc3RyKCZtdXQgc2Vs ZiwgaTogJidhc3QgY3JhdGU6OkxpdENTdHIpIHsKKysgICAgICAgIHZpc2l0X2xpdF9jc3RyKHNl bGYsIGkpOworKyAgICB9CisgICAgIGZuIHZpc2l0X2xpdF9jaGFyKCZtdXQgc2VsZiwgaTogJidh c3QgY3JhdGU6OkxpdENoYXIpIHsKKyAgICAgICAgIHZpc2l0X2xpdF9jaGFyKHNlbGYsIGkpOwor ICAgICB9CitAQCAtMjY5NCw2ICsyNjk3LDkgQEAgd2hlcmUKKyAgICAgICAgIGNyYXRlOjpMaXQ6 OkJ5dGVTdHIoX2JpbmRpbmdfMCkgPT4geworICAgICAgICAgICAgIHYudmlzaXRfbGl0X2J5dGVf c3RyKF9iaW5kaW5nXzApOworICAgICAgICAgfQorKyAgICAgICAgY3JhdGU6OkxpdDo6Q1N0cihf YmluZGluZ18wKSA9PiB7CisrICAgICAgICAgICAgdi52aXNpdF9saXRfY3N0cihfYmluZGluZ18w KTsKKysgICAgICAgIH0KKyAgICAgICAgIGNyYXRlOjpMaXQ6OkJ5dGUoX2JpbmRpbmdfMCkgPT4g eworICAgICAgICAgICAgIHYudmlzaXRfbGl0X2J5dGUoX2JpbmRpbmdfMCk7CisgICAgICAgICB9 CitAQCAtMjcyOSw2ICsyNzM1LDEwIEBAIHB1YiBmbiB2aXNpdF9saXRfYnl0ZV9zdHI8J2FzdCwg Vj4odjogJm11dCBWLCBub2RlOiAmJ2FzdCBjcmF0ZTo6TGl0Qnl0ZVN0cikKKyB3aGVyZQorICAg ICBWOiBWaXNpdDwnYXN0PiArID9TaXplZCwKKyB7fQorK3B1YiBmbiB2aXNpdF9saXRfY3N0cjwn YXN0LCBWPih2OiAmbXV0IFYsIG5vZGU6ICYnYXN0IGNyYXRlOjpMaXRDU3RyKQorK3doZXJlCisr ICAgIFY6IFZpc2l0PCdhc3Q+ICsgP1NpemVkLAorK3t9CisgcHViIGZuIHZpc2l0X2xpdF9jaGFy PCdhc3QsIFY+KHY6ICZtdXQgViwgbm9kZTogJidhc3QgY3JhdGU6OkxpdENoYXIpCisgd2hlcmUK KyAgICAgVjogVmlzaXQ8J2FzdD4gKyA/U2l6ZWQsCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkv cnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2dlbi92aXNpdF9t dXQucnMgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIu MC42MC9zcmMvZ2VuL3Zpc2l0X211dC5ycworLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1 bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNTUvc3JjL2dlbi92aXNpdF9tdXQucnMKKysrKyBi L3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjYwL3Ny Yy9nZW4vdmlzaXRfbXV0LnJzCitAQCAtNTQ4LDYgKzU0OCw5IEBAIHB1YiB0cmFpdCBWaXNpdE11 dCB7CisgICAgIGZuIHZpc2l0X2xpdF9ieXRlX3N0cl9tdXQoJm11dCBzZWxmLCBpOiAmbXV0IGNy YXRlOjpMaXRCeXRlU3RyKSB7CisgICAgICAgICB2aXNpdF9saXRfYnl0ZV9zdHJfbXV0KHNlbGYs IGkpOworICAgICB9CisrICAgIGZuIHZpc2l0X2xpdF9jc3RyX211dCgmbXV0IHNlbGYsIGk6ICZt dXQgY3JhdGU6OkxpdENTdHIpIHsKKysgICAgICAgIHZpc2l0X2xpdF9jc3RyX211dChzZWxmLCBp KTsKKysgICAgfQorICAgICBmbiB2aXNpdF9saXRfY2hhcl9tdXQoJm11dCBzZWxmLCBpOiAmbXV0 IGNyYXRlOjpMaXRDaGFyKSB7CisgICAgICAgICB2aXNpdF9saXRfY2hhcl9tdXQoc2VsZiwgaSk7 CisgICAgIH0KK0BAIC0yNjk0LDYgKzI2OTcsOSBAQCB3aGVyZQorICAgICAgICAgY3JhdGU6Okxp dDo6Qnl0ZVN0cihfYmluZGluZ18wKSA9PiB7CisgICAgICAgICAgICAgdi52aXNpdF9saXRfYnl0 ZV9zdHJfbXV0KF9iaW5kaW5nXzApOworICAgICAgICAgfQorKyAgICAgICAgY3JhdGU6OkxpdDo6 Q1N0cihfYmluZGluZ18wKSA9PiB7CisrICAgICAgICAgICAgdi52aXNpdF9saXRfY3N0cl9tdXQo X2JpbmRpbmdfMCk7CisrICAgICAgICB9CisgICAgICAgICBjcmF0ZTo6TGl0OjpCeXRlKF9iaW5k aW5nXzApID0+IHsKKyAgICAgICAgICAgICB2LnZpc2l0X2xpdF9ieXRlX211dChfYmluZGluZ18w KTsKKyAgICAgICAgIH0KK0BAIC0yNzI5LDYgKzI3MzUsMTAgQEAgcHViIGZuIHZpc2l0X2xpdF9i eXRlX3N0cl9tdXQ8Vj4odjogJm11dCBWLCBub2RlOiAmbXV0IGNyYXRlOjpMaXRCeXRlU3RyKQor IHdoZXJlCisgICAgIFY6IFZpc2l0TXV0ICsgP1NpemVkLAorIHt9CisrcHViIGZuIHZpc2l0X2xp dF9jc3RyX211dDxWPih2OiAmbXV0IFYsIG5vZGU6ICZtdXQgY3JhdGU6OkxpdENTdHIpCisrd2hl cmUKKysgICAgVjogVmlzaXRNdXQgKyA/U2l6ZWQsCisre30KKyBwdWIgZm4gdmlzaXRfbGl0X2No YXJfbXV0PFY+KHY6ICZtdXQgViwgbm9kZTogJm11dCBjcmF0ZTo6TGl0Q2hhcikKKyB3aGVyZQor ICAgICBWOiBWaXNpdE11dCArID9TaXplZCwKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0 L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS9zcmMvbGliLnJzIGIvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2xpYi5y cworLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0y LjAuNTUvc3JjL2xpYi5ycworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNf aW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2xpYi5ycworQEAgLTQxOCw3ICs0MTgsOSBAQCBtb2Qg bGl0OworICNbZG9jKGhpZGRlbildIC8vIGh0dHBzOi8vZ2l0aHViLmNvbS9kdG9sbmF5L3N5bi9p c3N1ZXMvMTU2NgorIHB1YiB1c2UgY3JhdGU6OmxpdDo6U3RyU3R5bGU7CisgI1tkb2MoaW5saW5l KV0KKy1wdWIgdXNlIGNyYXRlOjpsaXQ6OntMaXQsIExpdEJvb2wsIExpdEJ5dGUsIExpdEJ5dGVT dHIsIExpdENoYXIsIExpdEZsb2F0LCBMaXRJbnQsIExpdFN0cn07CisrcHViIHVzZSBjcmF0ZTo6 bGl0Ojp7CisrICAgIExpdCwgTGl0Qm9vbCwgTGl0Qnl0ZSwgTGl0Qnl0ZVN0ciwgTGl0Q1N0ciwg TGl0Q2hhciwgTGl0RmxvYXQsIExpdEludCwgTGl0U3RyLAorK307CisgCisgI1tjZmcoZmVhdHVy ZSA9ICJwYXJzaW5nIildCisgbW9kIGxvb2thaGVhZDsKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0 eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS9zcmMvbGl0LnJzIGIv dGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3Jj L2xpdC5ycworLS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3N5bi0yLjAuNTUvc3JjL2xpdC5ycworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9j cmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvc3JjL2xpdC5ycworQEAgLTYsNiArNiw3IEBAIHVz ZSBjcmF0ZTo6e0Vycm9yLCBSZXN1bHR9OworIHVzZSBwcm9jX21hY3JvMjo6e0lkZW50LCBMaXRl cmFsLCBTcGFufTsKKyAjW2NmZyhmZWF0dXJlID0gInBhcnNpbmciKV0KKyB1c2UgcHJvY19tYWNy bzI6OntUb2tlblN0cmVhbSwgVG9rZW5UcmVlfTsKKyt1c2Ugc3RkOjpmZmk6OntDU3RyLCBDU3Ry aW5nfTsKKyB1c2Ugc3RkOjpmbXQ6OntzZWxmLCBEaXNwbGF5fTsKKyAjW2NmZyhmZWF0dXJlID0g ImV4dHJhLXRyYWl0cyIpXQorIHVzZSBzdGQ6Omhhc2g6OntIYXNoLCBIYXNoZXJ9OworQEAgLTI3 LDYgKzI4LDkgQEAgYXN0X2VudW1fb2Zfc3RydWN0cyEgeworICAgICAgICAgLy8vIEEgYnl0ZSBz dHJpbmcgbGl0ZXJhbDogYGIiZm9vImAuCisgICAgICAgICBCeXRlU3RyKExpdEJ5dGVTdHIpLAor IAorKyAgICAgICAgLy8vIEEgbnVsLXRlcm1pbmF0ZWQgQy1zdHJpbmcgbGl0ZXJhbDogYGMiZm9v ImAuCisrICAgICAgICBDU3RyKExpdENTdHIpLAorKworICAgICAgICAgLy8vIEEgYnl0ZSBsaXRl cmFsOiBgYidmJ2AuCisgICAgICAgICBCeXRlKExpdEJ5dGUpLAorIAorQEAgLTYzLDYgKzY3LDEz IEBAIGFzdF9zdHJ1Y3QhIHsKKyAgICAgfQorIH0KKyAKKythc3Rfc3RydWN0ISB7CisrICAgIC8v LyBBIG51bC10ZXJtaW5hdGVkIEMtc3RyaW5nIGxpdGVyYWw6IGBjImZvbyJgLgorKyAgICBwdWIg c3RydWN0IExpdENTdHIgeworKyAgICAgICAgcmVwcjogQm94PExpdFJlcHI+LAorKyAgICB9Cisr fQorKworIGFzdF9zdHJ1Y3QhIHsKKyAgICAgLy8vIEEgYnl0ZSBsaXRlcmFsOiBgYidmJ2AuCisg ICAgIHB1YiBzdHJ1Y3QgTGl0Qnl0ZSB7CitAQCAtMjk0LDYgKzMwNSw0MSBAQCBpbXBsIExpdEJ5 dGVTdHIgeworICAgICB9CisgfQorIAorK2ltcGwgTGl0Q1N0ciB7CisrICAgIHB1YiBmbiBuZXco dmFsdWU6ICZDU3RyLCBzcGFuOiBTcGFuKSAtPiBTZWxmIHsKKysgICAgICAgIGxldCBtdXQgdG9r ZW4gPSBMaXRlcmFsOjpjX3N0cmluZyh2YWx1ZSk7CisrICAgICAgICB0b2tlbi5zZXRfc3Bhbihz cGFuKTsKKysgICAgICAgIExpdENTdHIgeworKyAgICAgICAgICAgIHJlcHI6IEJveDo6bmV3KExp dFJlcHIgeworKyAgICAgICAgICAgICAgICB0b2tlbiwKKysgICAgICAgICAgICAgICAgc3VmZml4 OiBCb3g6OjxzdHI+OjpkZWZhdWx0KCksCisrICAgICAgICAgICAgfSksCisrICAgICAgICB9Cisr ICAgIH0KKysKKysgICAgcHViIGZuIHZhbHVlKCZzZWxmKSAtPiBDU3RyaW5nIHsKKysgICAgICAg IGxldCByZXByID0gc2VsZi5yZXByLnRva2VuLnRvX3N0cmluZygpOworKyAgICAgICAgbGV0ICh2 YWx1ZSwgX3N1ZmZpeCkgPSB2YWx1ZTo6cGFyc2VfbGl0X2Nfc3RyKCZyZXByKTsKKysgICAgICAg IHZhbHVlCisrICAgIH0KKysKKysgICAgcHViIGZuIHNwYW4oJnNlbGYpIC0+IFNwYW4geworKyAg ICAgICAgc2VsZi5yZXByLnRva2VuLnNwYW4oKQorKyAgICB9CisrCisrICAgIHB1YiBmbiBzZXRf c3BhbigmbXV0IHNlbGYsIHNwYW46IFNwYW4pIHsKKysgICAgICAgIHNlbGYucmVwci50b2tlbi5z ZXRfc3BhbihzcGFuKTsKKysgICAgfQorKworKyAgICBwdWIgZm4gc3VmZml4KCZzZWxmKSAtPiAm c3RyIHsKKysgICAgICAgICZzZWxmLnJlcHIuc3VmZml4CisrICAgIH0KKysKKysgICAgcHViIGZu IHRva2VuKCZzZWxmKSAtPiBMaXRlcmFsIHsKKysgICAgICAgIHNlbGYucmVwci50b2tlbi5jbG9u ZSgpCisrICAgIH0KKyt9CisrCisgaW1wbCBMaXRCeXRlIHsKKyAgICAgcHViIGZuIG5ldyh2YWx1 ZTogdTgsIHNwYW46IFNwYW4pIC0+IFNlbGYgeworICAgICAgICAgbGV0IG11dCB0b2tlbiA9IExp dGVyYWw6OnU4X3N1ZmZpeGVkKHZhbHVlKTsKK0BAIC0zNjgsNyArNDE0LDcgQEAgaW1wbCBMaXRJ bnQgeworICAgICBwdWIgZm4gbmV3KHJlcHI6ICZzdHIsIHNwYW46IFNwYW4pIC0+IFNlbGYgewor ICAgICAgICAgbGV0IChkaWdpdHMsIHN1ZmZpeCkgPSBtYXRjaCB2YWx1ZTo6cGFyc2VfbGl0X2lu dChyZXByKSB7CisgICAgICAgICAgICAgU29tZShwYXJzZSkgPT4gcGFyc2UsCistICAgICAgICAg ICAgTm9uZSA9PiBwYW5pYyEoIk5vdCBhbiBpbnRlZ2VyIGxpdGVyYWw6IGB7fWAiLCByZXByKSwK KysgICAgICAgICAgICBOb25lID0+IHBhbmljISgibm90IGFuIGludGVnZXIgbGl0ZXJhbDogYHt9 YCIsIHJlcHIpLAorICAgICAgICAgfTsKKyAKKyAgICAgICAgIGxldCBtdXQgdG9rZW46IExpdGVy YWwgPSByZXByLnBhcnNlKCkudW53cmFwKCk7CitAQCAtNDQ3LDcgKzQ5Myw3IEBAIGltcGwgRnJv bTxMaXRlcmFsPiBmb3IgTGl0SW50IHsKKyAgICAgICAgICAgICAgICAgfSksCisgICAgICAgICAg ICAgfQorICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICBwYW5pYyEoIk5vdCBhbiBpbnRl Z2VyIGxpdGVyYWw6IGB7fWAiLCByZXByKTsKKysgICAgICAgICAgICBwYW5pYyEoIm5vdCBhbiBp bnRlZ2VyIGxpdGVyYWw6IGB7fWAiLCByZXByKTsKKyAgICAgICAgIH0KKyAgICAgfQorIH0KK0BA IC00NjIsNyArNTA4LDcgQEAgaW1wbCBMaXRGbG9hdCB7CisgICAgIHB1YiBmbiBuZXcocmVwcjog JnN0ciwgc3BhbjogU3BhbikgLT4gU2VsZiB7CisgICAgICAgICBsZXQgKGRpZ2l0cywgc3VmZml4 KSA9IG1hdGNoIHZhbHVlOjpwYXJzZV9saXRfZmxvYXQocmVwcikgeworICAgICAgICAgICAgIFNv bWUocGFyc2UpID0+IHBhcnNlLAorLSAgICAgICAgICAgIE5vbmUgPT4gcGFuaWMhKCJOb3QgYSBm bG9hdCBsaXRlcmFsOiBge31gIiwgcmVwciksCisrICAgICAgICAgICAgTm9uZSA9PiBwYW5pYyEo Im5vdCBhIGZsb2F0IGxpdGVyYWw6IGB7fWAiLCByZXByKSwKKyAgICAgICAgIH07CisgCisgICAg ICAgICBsZXQgbXV0IHRva2VuOiBMaXRlcmFsID0gcmVwci5wYXJzZSgpLnVud3JhcCgpOworQEAg LTUxOSw3ICs1NjUsNyBAQCBpbXBsIEZyb208TGl0ZXJhbD4gZm9yIExpdEZsb2F0IHsKKyAgICAg ICAgICAgICAgICAgfSksCisgICAgICAgICAgICAgfQorICAgICAgICAgfSBlbHNlIHsKKy0gICAg ICAgICAgICBwYW5pYyEoIk5vdCBhIGZsb2F0IGxpdGVyYWw6IGB7fWAiLCByZXByKTsKKysgICAg ICAgICAgICBwYW5pYyEoIm5vdCBhIGZsb2F0IGxpdGVyYWw6IGB7fWAiLCByZXByKTsKKyAgICAg ICAgIH0KKyAgICAgfQorIH0KK0BAIC01NTUsNyArNjAxLDcgQEAgaW1wbCBMaXRCb29sIHsKKyAK KyAjW2NmZyhmZWF0dXJlID0gImV4dHJhLXRyYWl0cyIpXQorIG1vZCBkZWJ1Z19pbXBscyB7Cist ICAgIHVzZSBjcmF0ZTo6bGl0Ojp7TGl0Qm9vbCwgTGl0Qnl0ZSwgTGl0Qnl0ZVN0ciwgTGl0Q2hh ciwgTGl0RmxvYXQsIExpdEludCwgTGl0U3RyfTsKKysgICAgdXNlIGNyYXRlOjpsaXQ6OntMaXRC b29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBMaXRDU3RyLCBMaXRDaGFyLCBMaXRGbG9hdCwgTGl0 SW50LCBMaXRTdHJ9OworICAgICB1c2Ugc3RkOjpmbXQ6OntzZWxmLCBEZWJ1Z307CisgCisgICAg ICNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gImV4dHJhLXRyYWl0cyIpKSld CitAQCAtNTkwLDYgKzYzNiwyMiBAQCBtb2QgZGVidWdfaW1wbHMgeworICAgICAgICAgfQorICAg ICB9CisgCisrICAgICNbY2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gImV4dHJh LXRyYWl0cyIpKSldCisrICAgIGltcGwgRGVidWcgZm9yIExpdENTdHIgeworKyAgICAgICAgZm4g Zm10KCZzZWxmLCBmb3JtYXR0ZXI6ICZtdXQgZm10OjpGb3JtYXR0ZXIpIC0+IGZtdDo6UmVzdWx0 IHsKKysgICAgICAgICAgICBzZWxmLmRlYnVnKGZvcm1hdHRlciwgIkxpdENTdHIiKQorKyAgICAg ICAgfQorKyAgICB9CisrCisrICAgIGltcGwgTGl0Q1N0ciB7CisrICAgICAgICBwdWIoY3JhdGUp IGZuIGRlYnVnKCZzZWxmLCBmb3JtYXR0ZXI6ICZtdXQgZm10OjpGb3JtYXR0ZXIsIG5hbWU6ICZz dHIpIC0+IGZtdDo6UmVzdWx0IHsKKysgICAgICAgICAgICBmb3JtYXR0ZXIKKysgICAgICAgICAg ICAgICAgLmRlYnVnX3N0cnVjdChuYW1lKQorKyAgICAgICAgICAgICAgICAuZmllbGQoInRva2Vu IiwgJmZvcm1hdF9hcmdzISgie30iLCBzZWxmLnJlcHIudG9rZW4pKQorKyAgICAgICAgICAgICAg ICAuZmluaXNoKCkKKysgICAgICAgIH0KKysgICAgfQorKworICAgICAjW2NmZ19hdHRyKGRvY19j ZmcsIGRvYyhjZmcoZmVhdHVyZSA9ICJleHRyYS10cmFpdHMiKSkpXQorICAgICBpbXBsIERlYnVn IGZvciBMaXRCeXRlIHsKKyAgICAgICAgIGZuIGZtdCgmc2VsZiwgZm9ybWF0dGVyOiAmbXV0IGZt dDo6Rm9ybWF0dGVyKSAtPiBmbXQ6OlJlc3VsdCB7CitAQCAtNzUwLDYgKzgxMiw3IEBAIG1hY3Jv X3J1bGVzISBsaXRfZXh0cmFfdHJhaXRzIHsKKyAKKyBsaXRfZXh0cmFfdHJhaXRzIShMaXRTdHIp OworIGxpdF9leHRyYV90cmFpdHMhKExpdEJ5dGVTdHIpOworK2xpdF9leHRyYV90cmFpdHMhKExp dENTdHIpOworIGxpdF9leHRyYV90cmFpdHMhKExpdEJ5dGUpOworIGxpdF9leHRyYV90cmFpdHMh KExpdENoYXIpOworIGxpdF9leHRyYV90cmFpdHMhKExpdEludCk7CitAQCAtNzkwLDcgKzg1Myw3 IEBAIHB1YihjcmF0ZSkgbW9kIHBhcnNpbmcgeworICAgICB1c2UgY3JhdGU6OmJ1ZmZlcjo6Q3Vy c29yOworICAgICB1c2UgY3JhdGU6OmVycm9yOjpSZXN1bHQ7CisgICAgIHVzZSBjcmF0ZTo6bGl0 Ojp7CistICAgICAgICB2YWx1ZSwgTGl0LCBMaXRCb29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBM aXRDaGFyLCBMaXRGbG9hdCwgTGl0RmxvYXRSZXByLCBMaXRJbnQsCisrICAgICAgICB2YWx1ZSwg TGl0LCBMaXRCb29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBMaXRDU3RyLCBMaXRDaGFyLCBMaXRG bG9hdCwgTGl0RmxvYXRSZXByLCBMaXRJbnQsCisgICAgICAgICBMaXRJbnRSZXByLCBMaXRTdHIs CisgICAgIH07CisgICAgIHVzZSBjcmF0ZTo6cGFyc2U6OntQYXJzZSwgUGFyc2VTdHJlYW19Owor QEAgLTg4OSw2ICs5NTIsMTcgQEAgcHViKGNyYXRlKSBtb2QgcGFyc2luZyB7CisgICAgICAgICB9 CisgICAgIH0KKyAKKysgICAgI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1cmUgPSAi cGFyc2luZyIpKSldCisrICAgIGltcGwgUGFyc2UgZm9yIExpdENTdHIgeworKyAgICAgICAgZm4g cGFyc2UoaW5wdXQ6IFBhcnNlU3RyZWFtKSAtPiBSZXN1bHQ8U2VsZj4geworKyAgICAgICAgICAg IGxldCBoZWFkID0gaW5wdXQuZm9yaygpOworKyAgICAgICAgICAgIG1hdGNoIGlucHV0LnBhcnNl KCkgeworKyAgICAgICAgICAgICAgICBPayhMaXQ6OkNTdHIobGl0KSkgPT4gT2sobGl0KSwKKysg ICAgICAgICAgICAgICAgXyA9PiBFcnIoaGVhZC5lcnJvcigiZXhwZWN0ZWQgQyBzdHJpbmcgbGl0 ZXJhbCIpKSwKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisrICAgIH0KKysKKyAgICAgI1tj ZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1cmUgPSAicGFyc2luZyIpKSldCisgICAgIGlt cGwgUGFyc2UgZm9yIExpdEJ5dGUgeworICAgICAgICAgZm4gcGFyc2UoaW5wdXQ6IFBhcnNlU3Ry ZWFtKSAtPiBSZXN1bHQ8U2VsZj4geworQEAgLTk0Nyw3ICsxMDIxLDcgQEAgcHViKGNyYXRlKSBt b2QgcGFyc2luZyB7CisgCisgI1tjZmcoZmVhdHVyZSA9ICJwcmludGluZyIpXQorIG1vZCBwcmlu dGluZyB7CistICAgIHVzZSBjcmF0ZTo6bGl0Ojp7TGl0Qm9vbCwgTGl0Qnl0ZSwgTGl0Qnl0ZVN0 ciwgTGl0Q2hhciwgTGl0RmxvYXQsIExpdEludCwgTGl0U3RyfTsKKysgICAgdXNlIGNyYXRlOjps aXQ6OntMaXRCb29sLCBMaXRCeXRlLCBMaXRCeXRlU3RyLCBMaXRDU3RyLCBMaXRDaGFyLCBMaXRG bG9hdCwgTGl0SW50LCBMaXRTdHJ9OworICAgICB1c2UgcHJvY19tYWNybzI6OlRva2VuU3RyZWFt OworICAgICB1c2UgcXVvdGU6OntUb1Rva2VucywgVG9rZW5TdHJlYW1FeHR9OworIAorQEAgLTk2 NSw2ICsxMDM5LDEzIEBAIG1vZCBwcmludGluZyB7CisgICAgICAgICB9CisgICAgIH0KKyAKKysg ICAgI1tjZmdfYXR0cihkb2NfY2ZnLCBkb2MoY2ZnKGZlYXR1cmUgPSAicHJpbnRpbmciKSkpXQor KyAgICBpbXBsIFRvVG9rZW5zIGZvciBMaXRDU3RyIHsKKysgICAgICAgIGZuIHRvX3Rva2Vucygm c2VsZiwgdG9rZW5zOiAmbXV0IFRva2VuU3RyZWFtKSB7CisrICAgICAgICAgICAgc2VsZi5yZXBy LnRva2VuLnRvX3Rva2Vucyh0b2tlbnMpOworKyAgICAgICAgfQorKyAgICB9CisrCisgICAgICNb Y2ZnX2F0dHIoZG9jX2NmZywgZG9jKGNmZyhmZWF0dXJlID0gInByaW50aW5nIikpKV0KKyAgICAg aW1wbCBUb1Rva2VucyBmb3IgTGl0Qnl0ZSB7CisgICAgICAgICBmbiB0b190b2tlbnMoJnNlbGYs IHRva2VuczogJm11dCBUb2tlblN0cmVhbSkgeworQEAgLTEwMDQsMTEgKzEwODUsMTMgQEAgbW9k IHByaW50aW5nIHsKKyBtb2QgdmFsdWUgeworICAgICB1c2UgY3JhdGU6OmJpZ2ludDo6QmlnSW50 OworICAgICB1c2UgY3JhdGU6OmxpdDo6eworLSAgICAgICAgTGl0LCBMaXRCb29sLCBMaXRCeXRl LCBMaXRCeXRlU3RyLCBMaXRDaGFyLCBMaXRGbG9hdCwgTGl0RmxvYXRSZXByLCBMaXRJbnQsIExp dEludFJlcHIsCistICAgICAgICBMaXRSZXByLCBMaXRTdHIsCisrICAgICAgICBMaXQsIExpdEJv b2wsIExpdEJ5dGUsIExpdEJ5dGVTdHIsIExpdENTdHIsIExpdENoYXIsIExpdEZsb2F0LCBMaXRG bG9hdFJlcHIsIExpdEludCwKKysgICAgICAgIExpdEludFJlcHIsIExpdFJlcHIsIExpdFN0ciwK KyAgICAgfTsKKyAgICAgdXNlIHByb2NfbWFjcm8yOjp7TGl0ZXJhbCwgU3Bhbn07CisrICAgIHVz ZSBzdGQ6OmFzY2lpOworICAgICB1c2Ugc3RkOjpjaGFyOworKyAgICB1c2Ugc3RkOjpmZmk6OkNT dHJpbmc7CisgICAgIHVzZSBzdGQ6Om9wczo6e0luZGV4LCBSYW5nZUZyb219OworIAorICAgICBp bXBsIExpdCB7CitAQCAtMTA0MSw2ICsxMTI0LDEzIEBAIG1vZCB2YWx1ZSB7CisgICAgICAgICAg ICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICBfID0+IHt9CisgICAgICAgICAgICAg ICAgIH0sCisrICAgICAgICAgICAgICAgIC8vIGMiLi4uIiwgY3IiLi4uIiwgY3IjIi4uLiIjCisr ICAgICAgICAgICAgICAgIGInYycgPT4geworKyAgICAgICAgICAgICAgICAgICAgbGV0IChfLCBz dWZmaXgpID0gcGFyc2VfbGl0X2Nfc3RyKCZyZXByKTsKKysgICAgICAgICAgICAgICAgICAgIHJl dHVybiBMaXQ6OkNTdHIoTGl0Q1N0ciB7CisrICAgICAgICAgICAgICAgICAgICAgICAgcmVwcjog Qm94OjpuZXcoTGl0UmVwciB7IHRva2VuLCBzdWZmaXggfSksCisrICAgICAgICAgICAgICAgICAg ICB9KTsKKysgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAvLyAnLi4uJworICAg ICAgICAgICAgICAgICBiJ1wnJyA9PiB7CisgICAgICAgICAgICAgICAgICAgICBsZXQgKF8sIHN1 ZmZpeCkgPSBwYXJzZV9saXRfY2hhcigmcmVwcik7CitAQCAtMTA3OSwyMCArMTE2OSwxOCBAQCBt b2QgdmFsdWUgeworICAgICAgICAgICAgICAgICAgICAgICAgIH0pOworICAgICAgICAgICAgICAg ICAgICAgfQorICAgICAgICAgICAgICAgICB9CistICAgICAgICAgICAgICAgIC8vIGMiLi4uIiwg Y3IiLi4uIiwgY3IjIi4uLiIjCistICAgICAgICAgICAgICAgIC8vIFRPRE86IGFkZCBhIExpdDo6 Q1N0ciB2YXJpYW50PworLSAgICAgICAgICAgICAgICBiJ2MnID0+IHJldHVybiBMaXQ6OlZlcmJh dGltKHRva2VuKSwKKyAgICAgICAgICAgICAgICAgYicoJyBpZiByZXByID09ICIoLypFUlJPUiov KSIgPT4gcmV0dXJuIExpdDo6VmVyYmF0aW0odG9rZW4pLAorICAgICAgICAgICAgICAgICBfID0+ IHt9CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIHBhbmljISgiVW5yZWNvZ25pemVk IGxpdGVyYWw6IGB7fWAiLCByZXByKTsKKysgICAgICAgICAgICBwYW5pYyEoInVucmVjb2duaXpl ZCBsaXRlcmFsOiBge31gIiwgcmVwcik7CisgICAgICAgICB9CisgCisgICAgICAgICBwdWIgZm4g c3VmZml4KCZzZWxmKSAtPiAmc3RyIHsKKyAgICAgICAgICAgICBtYXRjaCBzZWxmIHsKKyAgICAg ICAgICAgICAgICAgTGl0OjpTdHIobGl0KSA9PiBsaXQuc3VmZml4KCksCisgICAgICAgICAgICAg ICAgIExpdDo6Qnl0ZVN0cihsaXQpID0+IGxpdC5zdWZmaXgoKSwKKysgICAgICAgICAgICAgICAg TGl0OjpDU3RyKGxpdCkgPT4gbGl0LnN1ZmZpeCgpLAorICAgICAgICAgICAgICAgICBMaXQ6OkJ5 dGUobGl0KSA9PiBsaXQuc3VmZml4KCksCisgICAgICAgICAgICAgICAgIExpdDo6Q2hhcihsaXQp ID0+IGxpdC5zdWZmaXgoKSwKKyAgICAgICAgICAgICAgICAgTGl0OjpJbnQobGl0KSA9PiBsaXQu c3VmZml4KCksCitAQCAtMTEwNSw2ICsxMTkzLDcgQEAgbW9kIHZhbHVlIHsKKyAgICAgICAgICAg ICBtYXRjaCBzZWxmIHsKKyAgICAgICAgICAgICAgICAgTGl0OjpTdHIobGl0KSA9PiBsaXQuc3Bh bigpLAorICAgICAgICAgICAgICAgICBMaXQ6OkJ5dGVTdHIobGl0KSA9PiBsaXQuc3BhbigpLAor KyAgICAgICAgICAgICAgICBMaXQ6OkNTdHIobGl0KSA9PiBsaXQuc3BhbigpLAorICAgICAgICAg ICAgICAgICBMaXQ6OkJ5dGUobGl0KSA9PiBsaXQuc3BhbigpLAorICAgICAgICAgICAgICAgICBM aXQ6OkNoYXIobGl0KSA9PiBsaXQuc3BhbigpLAorICAgICAgICAgICAgICAgICBMaXQ6OkludChs aXQpID0+IGxpdC5zcGFuKCksCitAQCAtMTExOCw2ICsxMjA3LDcgQEAgbW9kIHZhbHVlIHsKKyAg ICAgICAgICAgICBtYXRjaCBzZWxmIHsKKyAgICAgICAgICAgICAgICAgTGl0OjpTdHIobGl0KSA9 PiBsaXQuc2V0X3NwYW4oc3BhbiksCisgICAgICAgICAgICAgICAgIExpdDo6Qnl0ZVN0cihsaXQp ID0+IGxpdC5zZXRfc3BhbihzcGFuKSwKKysgICAgICAgICAgICAgICAgTGl0OjpDU3RyKGxpdCkg PT4gbGl0LnNldF9zcGFuKHNwYW4pLAorICAgICAgICAgICAgICAgICBMaXQ6OkJ5dGUobGl0KSA9 PiBsaXQuc2V0X3NwYW4oc3BhbiksCisgICAgICAgICAgICAgICAgIExpdDo6Q2hhcihsaXQpID0+ IGxpdC5zZXRfc3BhbihzcGFuKSwKKyAgICAgICAgICAgICAgICAgTGl0OjpJbnQobGl0KSA9PiBs aXQuc2V0X3NwYW4oc3BhbiksCitAQCAtMTE3MCwxMyArMTI2MCwxMyBAQCBtb2QgdmFsdWUgewor ICAgICAgICAgICAgICAgICAgICAgICAgIGIneCcgPT4geworICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBsZXQgKGJ5dGUsIHJlc3QpID0gYmFja3NsYXNoX3gocyk7CisgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHMgPSByZXN0OworLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBh c3NlcnQhKGJ5dGUgPD0gMHg3RiwgIkludmFsaWQgXFx4IGJ5dGUgaW4gc3RyaW5nIGxpdGVyYWwi KTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXNzZXJ0IShieXRlIDw9IDB4N0YsICJp bnZhbGlkIFxceCBieXRlIGluIHN0cmluZyBsaXRlcmFsIik7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIGNoYXI6OmZyb21fdTMyKHUzMjo6ZnJvbShieXRlKSkudW53cmFwKCkKKyAgICAg ICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgYid1JyA9PiB7 CistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hyLCByZXN0KSA9IGJhY2tzbGFz aF91KHMpOworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsZXQgKGNoLCByZXN0KSA9IGJh Y2tzbGFzaF91KHMpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzID0gcmVzdDsKKy0g ICAgICAgICAgICAgICAgICAgICAgICAgICAgY2hyCisrICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNoCisgICAgICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAg ICAgIGInbicgPT4gJ1xuJywKKyAgICAgICAgICAgICAgICAgICAgICAgICBiJ3InID0+ICdccics CitAQCAtMTE5MiwxMSArMTI4MiwxNCBAQCBtb2QgdmFsdWUgeworICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgXyA9PiBjb250aW51ZSAnb3V0ZXIsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAg ICAgICAgICAgIGIgPT4gcGFuaWMhKCJ1bmV4cGVjdGVkIGJ5dGUgezo/fSBhZnRlciBcXCBjaGFy YWN0ZXIgaW4gYnl0ZSBsaXRlcmFsIiwgYiksCisrICAgICAgICAgICAgICAgICAgICAgICAgYiA9 PiBwYW5pYyEoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGJ5dGUg J3t9JyBhZnRlciBcXCBjaGFyYWN0ZXIgaW4gc3RyaW5nIGxpdGVyYWwiLAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICBhc2NpaTo6ZXNjYXBlX2RlZmF1bHQoYiksCisrICAgICAgICAgICAg ICAgICAgICAgICAgKSwKKyAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAg fQorICAgICAgICAgICAgICAgICBiJ1xyJyA9PiB7CistICAgICAgICAgICAgICAgICAgICBhc3Nl cnRfZXEhKGJ5dGUocywgMSksIGInXG4nLCAiQmFyZSBDUiBub3QgYWxsb3dlZCBpbiBzdHJpbmci KTsKKysgICAgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEoYnl0ZShzLCAxKSwgYidcbicsICJi YXJlIENSIG5vdCBhbGxvd2VkIGluIHN0cmluZyIpOworICAgICAgICAgICAgICAgICAgICAgcyA9 ICZzWzIuLl07CisgICAgICAgICAgICAgICAgICAgICAnXG4nCisgICAgICAgICAgICAgICAgIH0K K0BAIC0xMjgzLDExICsxMzc2LDE0IEBAIG1vZCB2YWx1ZSB7CisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBjb250aW51ZSAnb3V0ZXI7CisgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICAgICAg ICAgIGIgPT4gcGFuaWMhKCJ1bmV4cGVjdGVkIGJ5dGUgezo/fSBhZnRlciBcXCBjaGFyYWN0ZXIg aW4gYnl0ZSBsaXRlcmFsIiwgYiksCisrICAgICAgICAgICAgICAgICAgICAgICAgYiA9PiBwYW5p YyEoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGJ5dGUgJ3t9JyBh ZnRlciBcXCBjaGFyYWN0ZXIgaW4gYnl0ZS1zdHJpbmcgbGl0ZXJhbCIsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGFzY2lpOjplc2NhcGVfZGVmYXVsdChiKSwKKysgICAgICAgICAgICAg ICAgICAgICAgICApLAorICAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICB9 CisgICAgICAgICAgICAgICAgIGInXHInID0+IHsKKy0gICAgICAgICAgICAgICAgICAgIGFzc2Vy dF9lcSEoYnl0ZSh2LCAxKSwgYidcbicsICJCYXJlIENSIG5vdCBhbGxvd2VkIGluIHN0cmluZyIp OworKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShieXRlKHYsIDEpLCBiJ1xuJywgImJh cmUgQ1Igbm90IGFsbG93ZWQgaW4gc3RyaW5nIik7CisgICAgICAgICAgICAgICAgICAgICB2ID0g JnZbMi4uXTsKKyAgICAgICAgICAgICAgICAgICAgIGInXG4nCisgICAgICAgICAgICAgICAgIH0K K0BAIC0xMzEwLDYgKzE0MDYsOTIgQEAgbW9kIHZhbHVlIHsKKyAgICAgICAgIChTdHJpbmc6OmZy b20odmFsdWUpLmludG9fYnl0ZXMoKSwgc3VmZml4KQorICAgICB9CisgCisrICAgIC8vIFJldHVy bnMgKGNvbnRlbnQsIHN1ZmZpeCkuCisrICAgIHB1YihjcmF0ZSkgZm4gcGFyc2VfbGl0X2Nfc3Ry KHM6ICZzdHIpIC0+IChDU3RyaW5nLCBCb3g8c3RyPikgeworKyAgICAgICAgYXNzZXJ0X2VxIShi eXRlKHMsIDApLCBiJ2MnKTsKKysgICAgICAgIG1hdGNoIGJ5dGUocywgMSkgeworKyAgICAgICAg ICAgIGInIicgPT4gcGFyc2VfbGl0X2Nfc3RyX2Nvb2tlZChzKSwKKysgICAgICAgICAgICBiJ3In ID0+IHBhcnNlX2xpdF9jX3N0cl9yYXcocyksCisrICAgICAgICAgICAgXyA9PiB1bnJlYWNoYWJs ZSEoKSwKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICAvLyBDbGlwcHkgZmFsc2UgcG9zaXRp dmUKKysgICAgLy8gaHR0cHM6Ly9naXRodWIuY29tL3J1c3QtbGFuZy1udXJzZXJ5L3J1c3QtY2xp cHB5L2lzc3Vlcy8yMzI5CisrICAgICNbYWxsb3coY2xpcHB5OjpuZWVkbGVzc19jb250aW51ZSld CisrICAgIGZuIHBhcnNlX2xpdF9jX3N0cl9jb29rZWQobXV0IHM6ICZzdHIpIC0+IChDU3RyaW5n LCBCb3g8c3RyPikgeworKyAgICAgICAgYXNzZXJ0X2VxIShieXRlKHMsIDApLCBiJ2MnKTsKKysg ICAgICAgIGFzc2VydF9lcSEoYnl0ZShzLCAxKSwgYiciJyk7CisrICAgICAgICBzID0gJnNbMi4u XTsKKysKKysgICAgICAgIC8vIFdlJ3JlIGdvaW5nIHRvIHdhbnQgdG8gaGF2ZSBzbGljZXMgd2hp Y2ggZG9uJ3QgcmVzcGVjdCBjb2RlcG9pbnQgYm91bmRhcmllcy4KKysgICAgICAgIGxldCBtdXQg diA9IHMuYXNfYnl0ZXMoKTsKKysKKysgICAgICAgIGxldCBtdXQgb3V0ID0gVmVjOjpuZXcoKTsK KysgICAgICAgICdvdXRlcjogbG9vcCB7CisrICAgICAgICAgICAgbGV0IGJ5dGUgPSBtYXRjaCBi eXRlKHYsIDApIHsKKysgICAgICAgICAgICAgICAgYiciJyA9PiBicmVhaywKKysgICAgICAgICAg ICAgICAgYidcXCcgPT4geworKyAgICAgICAgICAgICAgICAgICAgbGV0IGIgPSBieXRlKHYsIDEp OworKyAgICAgICAgICAgICAgICAgICAgdiA9ICZ2WzIuLl07CisrICAgICAgICAgICAgICAgICAg ICBtYXRjaCBiIHsKKysgICAgICAgICAgICAgICAgICAgICAgICBiJ3gnID0+IHsKKysgICAgICAg ICAgICAgICAgICAgICAgICAgICAgbGV0IChiLCByZXN0KSA9IGJhY2tzbGFzaF94KHYpOworKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICBhc3NlcnQhKGIgIT0gMCwgIlxceDAwIGlzIG5vdCBh bGxvd2VkIGluIEMtc3RyaW5nIGxpdGVyYWwiKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAg ICAgdiA9IHJlc3Q7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIKKysgICAgICAgICAg ICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICAgICAgYid1JyA9PiB7CisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2gsIHJlc3QpID0gYmFja3NsYXNoX3Uodik7 CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCEoY2ggIT0gJ1wwJywgIlxcdXt7 MH19IGlzIG5vdCBhbGxvd2VkIGluIEMtc3RyaW5nIGxpdGVyYWwiKTsKKysgICAgICAgICAgICAg ICAgICAgICAgICAgICAgdiA9IHJlc3Q7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91 dC5leHRlbmRfZnJvbV9zbGljZShjaC5lbmNvZGVfdXRmOCgmbXV0IFswdTg7IDRdKS5hc19ieXRl cygpKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUgJ291dGVyOworKyAg ICAgICAgICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgICAgICAgICBiJ24nID0+ IGInXG4nLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGIncicgPT4gYidccicsCisrICAgICAg ICAgICAgICAgICAgICAgICAgYid0JyA9PiBiJ1x0JywKKysgICAgICAgICAgICAgICAgICAgICAg ICBiJ1xcJyA9PiBiJ1xcJywKKysgICAgICAgICAgICAgICAgICAgICAgICBiJ1wnJyA9PiBiJ1wn JywKKysgICAgICAgICAgICAgICAgICAgICAgICBiJyInID0+IGInIicsCisrICAgICAgICAgICAg ICAgICAgICAgICAgYidccicgfCBiJ1xuJyA9PiBsb29wIHsKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgbGV0IGJ5dGUgPSBieXRlKHYsIDApOworKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBpZiBtYXRjaGVzIShieXRlLCBiJyAnIHwgYidcdCcgfCBiJ1xuJyB8IGInXHInKSB7Cisr ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2ID0gJnZbMS4uXTsKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIGNvbnRpbnVlICdvdXRlcjsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgfQorKyAg ICAgICAgICAgICAgICAgICAgICAgIH0sCisrICAgICAgICAgICAgICAgICAgICAgICAgYiA9PiBw YW5pYyEoCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ1bmV4cGVjdGVkIGJ5dGUgJ3t9 JyBhZnRlciBcXCBjaGFyYWN0ZXIgaW4gYnl0ZSBsaXRlcmFsIiwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgICAgYXNjaWk6OmVzY2FwZV9kZWZhdWx0KGIpLAorKyAgICAgICAgICAgICAgICAg ICAgICAgICksCisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgIH0KKysg ICAgICAgICAgICAgICAgYidccicgPT4geworKyAgICAgICAgICAgICAgICAgICAgYXNzZXJ0X2Vx IShieXRlKHYsIDEpLCBiJ1xuJywgImJhcmUgQ1Igbm90IGFsbG93ZWQgaW4gc3RyaW5nIik7Cisr ICAgICAgICAgICAgICAgICAgICB2ID0gJnZbMi4uXTsKKysgICAgICAgICAgICAgICAgICAgIGIn XG4nCisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgYiA9PiB7CisrICAgICAg ICAgICAgICAgICAgICB2ID0gJnZbMS4uXTsKKysgICAgICAgICAgICAgICAgICAgIGIKKysgICAg ICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH07CisrICAgICAgICAgICAgb3V0LnB1c2goYnl0 ZSk7CisrICAgICAgICB9CisrCisrICAgICAgICBhc3NlcnRfZXEhKGJ5dGUodiwgMCksIGInIicp OworKyAgICAgICAgbGV0IHN1ZmZpeCA9IHNbcy5sZW4oKSAtIHYubGVuKCkgKyAxLi5dLnRvX293 bmVkKCkuaW50b19ib3hlZF9zdHIoKTsKKysgICAgICAgIChDU3RyaW5nOjpuZXcob3V0KS51bndy YXAoKSwgc3VmZml4KQorKyAgICB9CisrCisrICAgIGZuIHBhcnNlX2xpdF9jX3N0cl9yYXcoczog JnN0cikgLT4gKENTdHJpbmcsIEJveDxzdHI+KSB7CisrICAgICAgICBhc3NlcnRfZXEhKGJ5dGUo cywgMCksIGInYycpOworKyAgICAgICAgbGV0ICh2YWx1ZSwgc3VmZml4KSA9IHBhcnNlX2xpdF9z dHJfcmF3KCZzWzEuLl0pOworKyAgICAgICAgKENTdHJpbmc6Om5ldyhTdHJpbmc6OmZyb20odmFs dWUpKS51bndyYXAoKSwgc3VmZml4KQorKyAgICB9CisrCisgICAgIC8vIFJldHVybnMgKHZhbHVl LCBzdWZmaXgpLgorICAgICBwdWIoY3JhdGUpIGZuIHBhcnNlX2xpdF9ieXRlKHM6ICZzdHIpIC0+ ICh1OCwgQm94PHN0cj4pIHsKKyAgICAgICAgIGFzc2VydF9lcSEoYnl0ZShzLCAwKSwgYidiJyk7 CitAQCAtMTMzNSw3ICsxNTE3LDEwIEBAIG1vZCB2YWx1ZSB7CisgICAgICAgICAgICAgICAgICAg ICBiJzAnID0+IGInXDAnLAorICAgICAgICAgICAgICAgICAgICAgYidcJycgPT4gYidcJycsCisg ICAgICAgICAgICAgICAgICAgICBiJyInID0+IGInIicsCistICAgICAgICAgICAgICAgICAgICBi ID0+IHBhbmljISgidW5leHBlY3RlZCBieXRlIHs6P30gYWZ0ZXIgXFwgY2hhcmFjdGVyIGluIGJ5 dGUgbGl0ZXJhbCIsIGIpLAorKyAgICAgICAgICAgICAgICAgICAgYiA9PiBwYW5pYyEoCisrICAg ICAgICAgICAgICAgICAgICAgICAgInVuZXhwZWN0ZWQgYnl0ZSAne30nIGFmdGVyIFxcIGNoYXJh Y3RlciBpbiBieXRlIGxpdGVyYWwiLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGFzY2lpOjpl c2NhcGVfZGVmYXVsdChiKSwKKysgICAgICAgICAgICAgICAgICAgICksCisgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgYiA9PiB7CitAQCAtMTM2MiwxMyAr MTU0NywxMyBAQCBtb2QgdmFsdWUgeworICAgICAgICAgICAgICAgICAgICAgYid4JyA9PiB7Cisg ICAgICAgICAgICAgICAgICAgICAgICAgbGV0IChieXRlLCByZXN0KSA9IGJhY2tzbGFzaF94KHMp OworICAgICAgICAgICAgICAgICAgICAgICAgIHMgPSByZXN0OworLSAgICAgICAgICAgICAgICAg ICAgICAgIGFzc2VydCEoYnl0ZSA8PSAweDgwLCAiSW52YWxpZCBcXHggYnl0ZSBpbiBzdHJpbmcg bGl0ZXJhbCIpOworKyAgICAgICAgICAgICAgICAgICAgICAgIGFzc2VydCEoYnl0ZSA8PSAweDdG LCAiaW52YWxpZCBcXHggYnl0ZSBpbiBjaGFyYWN0ZXIgbGl0ZXJhbCIpOworICAgICAgICAgICAg ICAgICAgICAgICAgIGNoYXI6OmZyb21fdTMyKHUzMjo6ZnJvbShieXRlKSkudW53cmFwKCkKKyAg ICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGIndScgPT4geworLSAg ICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2hyLCByZXN0KSA9IGJhY2tzbGFzaF91KHMpOwor KyAgICAgICAgICAgICAgICAgICAgICAgIGxldCAoY2gsIHJlc3QpID0gYmFja3NsYXNoX3Uocyk7 CisgICAgICAgICAgICAgICAgICAgICAgICAgcyA9IHJlc3Q7CistICAgICAgICAgICAgICAgICAg ICAgICAgY2hyCisrICAgICAgICAgICAgICAgICAgICAgICAgY2gKKyAgICAgICAgICAgICAgICAg ICAgIH0KKyAgICAgICAgICAgICAgICAgICAgIGInbicgPT4gJ1xuJywKKyAgICAgICAgICAgICAg ICAgICAgIGIncicgPT4gJ1xyJywKK0BAIC0xMzc3LDcgKzE1NjIsMTAgQEAgbW9kIHZhbHVlIHsK KyAgICAgICAgICAgICAgICAgICAgIGInMCcgPT4gJ1wwJywKKyAgICAgICAgICAgICAgICAgICAg IGInXCcnID0+ICdcJycsCisgICAgICAgICAgICAgICAgICAgICBiJyInID0+ICciJywKKy0gICAg ICAgICAgICAgICAgICAgIGIgPT4gcGFuaWMhKCJ1bmV4cGVjdGVkIGJ5dGUgezo/fSBhZnRlciBc XCBjaGFyYWN0ZXIgaW4gYnl0ZSBsaXRlcmFsIiwgYiksCisrICAgICAgICAgICAgICAgICAgICBi ID0+IHBhbmljISgKKysgICAgICAgICAgICAgICAgICAgICAgICAidW5leHBlY3RlZCBieXRlICd7 fScgYWZ0ZXIgXFwgY2hhcmFjdGVyIGluIGNoYXJhY3RlciBsaXRlcmFsIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICBhc2NpaTo6ZXNjYXBlX2RlZmF1bHQoYiksCisrICAgICAgICAgICAgICAg ICAgICApLAorICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgfQorICAgICAgICAgICAg IF8gPT4geworQEAgLTE0MTQsNyArMTYwMiwxMCBAQCBtb2QgdmFsdWUgeworICAgICAgICAgKGNo LCAmc1syLi5dKQorICAgICB9CisgCistICAgIGZuIGJhY2tzbGFzaF91KG11dCBzOiAmc3RyKSAt PiAoY2hhciwgJnN0cikgeworKyAgICBmbiBiYWNrc2xhc2hfdTxTPihtdXQgczogJlMpIC0+IChj aGFyLCAmUykKKysgICAgd2hlcmUKKysgICAgICAgIFM6IEluZGV4PFJhbmdlRnJvbTx1c2l6ZT4s IE91dHB1dCA9IFM+ICsgQXNSZWY8W3U4XT4gKyA/U2l6ZWQsCisrICAgIHsKKyAgICAgICAgIGlm IGJ5dGUocywgMCkgIT0gYid7JyB7CisgICAgICAgICAgICAgcGFuaWMhKCJ7fSIsICJleHBlY3Rl ZCB7IGFmdGVyIFxcdSIpOworICAgICAgICAgfQorZGlmZiAtLWdpdCBhL3RoaXJkX3BhcnR5L3J1 c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjU1L3NyYy93aGl0ZXNwYWNlLnJz IGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAv c3JjL3doaXRlc3BhY2UucnMKKy0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVz X2lvL3ZlbmRvci9zeW4tMi4wLjU1L3NyYy93aGl0ZXNwYWNlLnJzCisrKysgYi90aGlyZF9wYXJ0 eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC42MC9zcmMvd2hpdGVzcGFj ZS5ycworQEAgLTQxLDExICs0MSwxMSBAQCBwdWIoY3JhdGUpIGZuIHNraXAobXV0IHM6ICZzdHIp IC0+ICZzdHIgeworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAgICAgICAgIG1hdGNoIGJ5 dGUgeworLSAgICAgICAgICAgIGInICcgfCAweDA5Li49MHgwZCA9PiB7CisrICAgICAgICAgICAg YicgJyB8IDB4MDkuLj0weDBEID0+IHsKKyAgICAgICAgICAgICAgICAgcyA9ICZzWzEuLl07Cisg ICAgICAgICAgICAgICAgIGNvbnRpbnVlOworICAgICAgICAgICAgIH0KKy0gICAgICAgICAgICBi IGlmIGIgPD0gMHg3ZiA9PiB7fQorKyAgICAgICAgICAgIGIgaWYgYiA8PSAweDdGID0+IHt9Cisg ICAgICAgICAgICAgXyA9PiB7CisgICAgICAgICAgICAgICAgIGxldCBjaCA9IHMuY2hhcnMoKS5u ZXh0KCkudW53cmFwKCk7CisgICAgICAgICAgICAgICAgIGlmIGlzX3doaXRlc3BhY2UoY2gpIHsK K2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Iv c3luLTIuMC41NS90ZXN0cy9kZWJ1Zy9nZW4ucnMgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVt X2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC42MC90ZXN0cy9kZWJ1Zy9nZW4ucnMKKy0tLSBhL3Ro aXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjU1L3Rlc3Rz L2RlYnVnL2dlbi5ycworKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3N5bi0yLjAuNjAvdGVzdHMvZGVidWcvZ2VuLnJzCitAQCAtMjg2NCw2ICsyODY0LDcg QEAgaW1wbCBEZWJ1ZyBmb3IgTGl0ZTxzeW46OkxpdD4geworICAgICAgICAgbWF0Y2ggJnNlbGYu dmFsdWUgeworICAgICAgICAgICAgIHN5bjo6TGl0OjpTdHIoX3ZhbCkgPT4gd3JpdGUhKGZvcm1h dHRlciwgIns6P30iLCBfdmFsLnZhbHVlKCkpLAorICAgICAgICAgICAgIHN5bjo6TGl0OjpCeXRl U3RyKF92YWwpID0+IHdyaXRlIShmb3JtYXR0ZXIsICJ7Oj99IiwgX3ZhbC52YWx1ZSgpKSwKKysg ICAgICAgICAgICBzeW46OkxpdDo6Q1N0cihfdmFsKSA9PiB3cml0ZSEoZm9ybWF0dGVyLCAiezo/ fSIsIF92YWwudmFsdWUoKSksCisgICAgICAgICAgICAgc3luOjpMaXQ6OkJ5dGUoX3ZhbCkgPT4g d3JpdGUhKGZvcm1hdHRlciwgIns6P30iLCBfdmFsLnZhbHVlKCkpLAorICAgICAgICAgICAgIHN5 bjo6TGl0OjpDaGFyKF92YWwpID0+IHdyaXRlIShmb3JtYXR0ZXIsICJ7Oj99IiwgX3ZhbC52YWx1 ZSgpKSwKKyAgICAgICAgICAgICBzeW46OkxpdDo6SW50KF92YWwpID0+IHdyaXRlIShmb3JtYXR0 ZXIsICJ7fSIsIF92YWwpLAorQEAgLTI5MDEsNiArMjkwMiwxMSBAQCBpbXBsIERlYnVnIGZvciBM aXRlPHN5bjo6TGl0Qnl0ZVN0cj4geworICAgICAgICAgd3JpdGUhKGZvcm1hdHRlciwgIns6P30i LCBzZWxmLnZhbHVlLnZhbHVlKCkpCisgICAgIH0KKyB9CisraW1wbCBEZWJ1ZyBmb3IgTGl0ZTxz eW46OkxpdENTdHI+IHsKKysgICAgZm4gZm10KCZzZWxmLCBmb3JtYXR0ZXI6ICZtdXQgZm10OjpG b3JtYXR0ZXIpIC0+IGZtdDo6UmVzdWx0IHsKKysgICAgICAgIHdyaXRlIShmb3JtYXR0ZXIsICJ7 Oj99Iiwgc2VsZi52YWx1ZS52YWx1ZSgpKQorKyAgICB9CisrfQorIGltcGwgRGVidWcgZm9yIExp dGU8c3luOjpMaXRDaGFyPiB7CisgICAgIGZuIGZtdCgmc2VsZiwgZm9ybWF0dGVyOiAmbXV0IGZt dDo6Rm9ybWF0dGVyKSAtPiBmbXQ6OlJlc3VsdCB7CisgICAgICAgICB3cml0ZSEoZm9ybWF0dGVy LCAiezo/fSIsIHNlbGYudmFsdWUudmFsdWUoKSkKK2RpZmYgLS1naXQgYS90aGlyZF9wYXJ0eS9y dXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Ivc3luLTIuMC41NS90ZXN0cy90ZXN0X2xpdC5y cyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9zeW4tMi4wLjYw L3Rlc3RzL3Rlc3RfbGl0LnJzCistLS0gYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRl c19pby92ZW5kb3Ivc3luLTIuMC41NS90ZXN0cy90ZXN0X2xpdC5ycworKysrIGIvdGhpcmRfcGFy dHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3N5bi0yLjAuNjAvdGVzdHMvdGVzdF9s aXQucnMKK0BAIC0xLDUgKzEsNiBAQAorICMhW2FsbG93KAorICAgICBjbGlwcHk6OmZsb2F0X2Nt cCwKKysgICAgY2xpcHB5OjpuZWVkbGVzc19yYXdfc3RyaW5nX2hhc2hlcywKKyAgICAgY2xpcHB5 Ojpub25fYXNjaWlfbGl0ZXJhbCwKKyAgICAgY2xpcHB5OjpzaW5nbGVfbWF0Y2hfZWxzZSwKKyAg ICAgY2xpcHB5Ojp1bmlubGluZWRfZm9ybWF0X2FyZ3MKK0BAIC0xMCw5ICsxMSwxMSBAQCBtb2Qg bWFjcm9zOworIAorIHVzZSBwcm9jX21hY3JvMjo6e0RlbGltaXRlciwgR3JvdXAsIExpdGVyYWws IFNwYW4sIFRva2VuU3RyZWFtLCBUb2tlblRyZWV9OworIHVzZSBxdW90ZTo6VG9Ub2tlbnM7Cisr dXNlIHN0ZDo6ZmZpOjpDU3RyOworIHVzZSBzdGQ6OnN0cjo6RnJvbVN0cjsKKyB1c2Ugc3luOjp7 TGl0LCBMaXRGbG9hdCwgTGl0SW50LCBMaXRTdHJ9OworIAorKyNbdHJhY2tfY2FsbGVyXQorIGZu IGxpdChzOiAmc3RyKSAtPiBMaXQgeworICAgICBsZXQgbXV0IHRva2VucyA9IFRva2VuU3RyZWFt Ojpmcm9tX3N0cihzKS51bndyYXAoKS5pbnRvX2l0ZXIoKTsKKyAgICAgbWF0Y2ggdG9rZW5zLm5l eHQoKS51bndyYXAoKSB7CitAQCAtMjYsNyArMjksOSBAQCBmbiBsaXQoczogJnN0cikgLT4gTGl0 IHsKKyAKKyAjW3Rlc3RdCisgZm4gc3RyaW5ncygpIHsKKysgICAgI1t0cmFja19jYWxsZXJdCisg ICAgIGZuIHRlc3Rfc3RyaW5nKHM6ICZzdHIsIHZhbHVlOiAmc3RyKSB7CisrICAgICAgICBsZXQg cyA9IHMudHJpbSgpOworICAgICAgICAgbWF0Y2ggbGl0KHMpIHsKKyAgICAgICAgICAgICBMaXQ6 OlN0cihsaXQpID0+IHsKKyAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShsaXQudmFsdWUoKSwg dmFsdWUpOworQEAgLTM5LDE2ICs0NCwxNiBAQCBmbiBzdHJpbmdzKCkgeworICAgICAgICAgfQor ICAgICB9CisgCistICAgIHRlc3Rfc3RyaW5nKCJcImFcIiIsICJhIik7CistICAgIHRlc3Rfc3Ry aW5nKCJcIlxcblwiIiwgIlxuIik7CistICAgIHRlc3Rfc3RyaW5nKCJcIlxcclwiIiwgIlxyIik7 CistICAgIHRlc3Rfc3RyaW5nKCJcIlxcdFwiIiwgIlx0Iik7CistICAgIHRlc3Rfc3RyaW5nKCJc IvCfkJVcIiIsICLwn5CVIik7IC8vIE5PVEU6IFRoaXMgaXMgYW4gZW1vamkKKy0gICAgdGVzdF9z dHJpbmcoIlwiXFxcIlwiIiwgIlwiIik7CistICAgIHRlc3Rfc3RyaW5nKCJcIidcIiIsICInIik7 CistICAgIHRlc3Rfc3RyaW5nKCJcIlwiIiwgIiIpOworLSAgICB0ZXN0X3N0cmluZygiXCJcXHV7 MUY0MTV9XCIiLCAiXHV7MUY0MTV9Iik7CistICAgIHRlc3Rfc3RyaW5nKCJcIlxcdXsxXzJfXzNf fVwiIiwgIlx1ezEyM30iKTsKKysgICAgdGVzdF9zdHJpbmcociMiICAiIiAgIiMsICIiKTsKKysg ICAgdGVzdF9zdHJpbmcociMiICAiYSIgICIjLCAiYSIpOworKyAgICB0ZXN0X3N0cmluZyhyIyIg ICJcbiIgICIjLCAiXG4iKTsKKysgICAgdGVzdF9zdHJpbmcociMiICAiXHIiICAiIywgIlxyIik7 CisrICAgIHRlc3Rfc3RyaW5nKHIjIiAgIlx0IiAgIiMsICJcdCIpOworKyAgICB0ZXN0X3N0cmlu ZyhyIyIgICLwn5CVIiAgIiMsICLwn5CVIik7IC8vIE5PVEU6IFRoaXMgaXMgYW4gZW1vamkKKysg ICAgdGVzdF9zdHJpbmcociMiICAiXCIiICAiIywgIlwiIik7CisrICAgIHRlc3Rfc3RyaW5nKHIj IiAgIiciICAiIywgIiciKTsKKysgICAgdGVzdF9zdHJpbmcociMiICAiXHV7MUY0MTV9IiAgIiMs ICJcdXsxRjQxNX0iKTsKKysgICAgdGVzdF9zdHJpbmcociMiICAiXHV7MV8yX18zX30iICAiIywg Ilx1ezEyM30iKTsKKyAgICAgdGVzdF9zdHJpbmcoCisgICAgICAgICAiXCJjb250YWluc1xubmV3 bGluZXNcXFxuZXNjYXBlZCBuZXdsaW5lc1wiIiwKKyAgICAgICAgICJjb250YWluc1xubmV3bGlu ZXNlc2NhcGVkIG5ld2xpbmVzIiwKK0BAIC02NSw3ICs3MCw5IEBAIGZuIHN0cmluZ3MoKSB7Cisg CisgI1t0ZXN0XQorIGZuIGJ5dGVfc3RyaW5ncygpIHsKKysgICAgI1t0cmFja19jYWxsZXJdCisg ICAgIGZuIHRlc3RfYnl0ZV9zdHJpbmcoczogJnN0ciwgdmFsdWU6ICZbdThdKSB7CisrICAgICAg ICBsZXQgcyA9IHMudHJpbSgpOworICAgICAgICAgbWF0Y2ggbGl0KHMpIHsKKyAgICAgICAgICAg ICBMaXQ6OkJ5dGVTdHIobGl0KSA9PiB7CisgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEobGl0 LnZhbHVlKCksIHZhbHVlKTsKK0BAIC03OCwxMyArODUsMTMgQEAgZm4gYnl0ZV9zdHJpbmdzKCkg eworICAgICAgICAgfQorICAgICB9CisgCistICAgIHRlc3RfYnl0ZV9zdHJpbmcoImJcImFcIiIs IGIiYSIpOworLSAgICB0ZXN0X2J5dGVfc3RyaW5nKCJiXCJcXG5cIiIsIGIiXG4iKTsKKy0gICAg dGVzdF9ieXRlX3N0cmluZygiYlwiXFxyXCIiLCBiIlxyIik7CistICAgIHRlc3RfYnl0ZV9zdHJp bmcoImJcIlxcdFwiIiwgYiJcdCIpOworLSAgICB0ZXN0X2J5dGVfc3RyaW5nKCJiXCJcXFwiXCIi LCBiIlwiIik7CistICAgIHRlc3RfYnl0ZV9zdHJpbmcoImJcIidcIiIsIGIiJyIpOworLSAgICB0 ZXN0X2J5dGVfc3RyaW5nKCJiXCJcIiIsIGIiIik7CisrICAgIHRlc3RfYnl0ZV9zdHJpbmcociMi ICBiIiIgICIjLCBiIiIpOworKyAgICB0ZXN0X2J5dGVfc3RyaW5nKHIjIiAgYiJhIiAgIiMsIGIi YSIpOworKyAgICB0ZXN0X2J5dGVfc3RyaW5nKHIjIiAgYiJcbiIgICIjLCBiIlxuIik7CisrICAg IHRlc3RfYnl0ZV9zdHJpbmcociMiICBiIlxyIiAgIiMsIGIiXHIiKTsKKysgICAgdGVzdF9ieXRl X3N0cmluZyhyIyIgIGIiXHQiICAiIywgYiJcdCIpOworKyAgICB0ZXN0X2J5dGVfc3RyaW5nKHIj IiAgYiJcIiIgICIjLCBiIlwiIik7CisrICAgIHRlc3RfYnl0ZV9zdHJpbmcociMiICBiIiciICAi IywgYiInIik7CisgICAgIHRlc3RfYnl0ZV9zdHJpbmcoCisgICAgICAgICAiYlwiY29udGFpbnNc bm5ld2xpbmVzXFxcbmVzY2FwZWQgbmV3bGluZXNcIiIsCisgICAgICAgICBiImNvbnRhaW5zXG5u ZXdsaW5lc2VzY2FwZWQgbmV3bGluZXMiLAorQEAgLTk1LDkgKzEwMiw1MCBAQCBmbiBieXRlX3N0 cmluZ3MoKSB7CisgICAgIHRlc3RfYnl0ZV9zdHJpbmcoImJyIyNcIi4uLlwiIyNxIiwgYiIuLi4i KTsKKyB9CisgCisrI1t0ZXN0XQorK2ZuIGNfc3RyaW5ncygpIHsKKysgICAgI1t0cmFja19jYWxs ZXJdCisrICAgIGZuIHRlc3RfY19zdHJpbmcoczogJnN0ciwgdmFsdWU6ICZDU3RyKSB7CisrICAg ICAgICBsZXQgcyA9IHMudHJpbSgpOworKyAgICAgICAgbWF0Y2ggbGl0KHMpIHsKKysgICAgICAg ICAgICBMaXQ6OkNTdHIobGl0KSA9PiB7CisrICAgICAgICAgICAgICAgIGFzc2VydF9lcSEoKmxp dC52YWx1ZSgpLCAqdmFsdWUpOworKyAgICAgICAgICAgICAgICBsZXQgYWdhaW4gPSBsaXQuaW50 b190b2tlbl9zdHJlYW0oKS50b19zdHJpbmcoKTsKKysgICAgICAgICAgICAgICAgaWYgYWdhaW4g IT0gcyB7CisrICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nfc3RyaW5nKCZhZ2FpbiwgdmFsdWUp OworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgfQorKyAgICAgICAgICAgIHdyb25n ID0+IHBhbmljISgiezo/fSIsIHdyb25nKSwKKysgICAgICAgIH0KKysgICAgfQorKworKyAgICB0 ZXN0X2Nfc3RyaW5nKHIjIiAgYyIiICAiIywgYyIiKTsKKysgICAgdGVzdF9jX3N0cmluZyhyIyIg IGMiYSIgICIjLCBjImEiKTsKKysgICAgdGVzdF9jX3N0cmluZyhyIyIgIGMiXG4iICAiIywgYyJc biIpOworKyAgICB0ZXN0X2Nfc3RyaW5nKHIjIiAgYyJcciIgICIjLCBjIlxyIik7CisrICAgIHRl c3RfY19zdHJpbmcociMiICBjIlx0IiAgIiMsIGMiXHQiKTsKKysgICAgdGVzdF9jX3N0cmluZyhy IyIgIGMiXFwiICAiIywgYyJcXCIpOworKyAgICB0ZXN0X2Nfc3RyaW5nKHIjIiAgYyJcJyIgICIj LCBjIiciKTsKKysgICAgdGVzdF9jX3N0cmluZyhyIyIgIGMiXCIiICAiIywgYyJcIiIpOworKyAg ICB0ZXN0X2Nfc3RyaW5nKAorKyAgICAgICAgImNcImNvbnRhaW5zXG5uZXdsaW5lc1xcXG5lc2Nh cGVkIG5ld2xpbmVzXCIiLAorKyAgICAgICAgYyJjb250YWluc1xubmV3bGluZXNlc2NhcGVkIG5l d2xpbmVzIiwKKysgICAgKTsKKysgICAgdGVzdF9jX3N0cmluZygiY3JcInJhd1xuc3RyaW5nXFxc bmhlcmVcIiIsIGMicmF3XG5zdHJpbmdcXFxuaGVyZSIpOworKyAgICB0ZXN0X2Nfc3RyaW5nKCJj XCIuLi5cInEiLCBjIi4uLiIpOworKyAgICB0ZXN0X2Nfc3RyaW5nKCJjclwiLi4uXCIiLCBjIi4u LiIpOworKyAgICB0ZXN0X2Nfc3RyaW5nKCJjciMjXCIuLi5cIiMjIiwgYyIuLi4iKTsKKysgICAg dGVzdF9jX3N0cmluZygKKysgICAgICAgIHIjIiAgYyJoZWxsb1x4ODDmiJHlj6tcdXsxRjk4MH0i ICAiIywgLy8gZnJvbSB0aGUgUkZDCisrICAgICAgICBjImhlbGxvXHg4MOaIkeWPq1x1ezFGOTgw fSIsCisrICAgICk7CisrfQorKworICNbdGVzdF0KKyBmbiBieXRlcygpIHsKKysgICAgI1t0cmFj a19jYWxsZXJdCisgICAgIGZuIHRlc3RfYnl0ZShzOiAmc3RyLCB2YWx1ZTogdTgpIHsKKysgICAg ICAgIGxldCBzID0gcy50cmltKCk7CisgICAgICAgICBtYXRjaCBsaXQocykgeworICAgICAgICAg ICAgIExpdDo6Qnl0ZShsaXQpID0+IHsKKyAgICAgICAgICAgICAgICAgYXNzZXJ0X2VxIShsaXQu dmFsdWUoKSwgdmFsdWUpOworQEAgLTEwOCwxOCArMTU2LDIwIEBAIGZuIGJ5dGVzKCkgeworICAg ICAgICAgfQorICAgICB9CisgCistICAgIHRlc3RfYnl0ZSgiYidhJyIsIGInYScpOworLSAgICB0 ZXN0X2J5dGUoImInXFxuJyIsIGInXG4nKTsKKy0gICAgdGVzdF9ieXRlKCJiJ1xcciciLCBiJ1xy Jyk7CistICAgIHRlc3RfYnl0ZSgiYidcXHQnIiwgYidcdCcpOworLSAgICB0ZXN0X2J5dGUoImIn XFwnJyIsIGInXCcnKTsKKy0gICAgdGVzdF9ieXRlKCJiJ1wiJyIsIGInIicpOworLSAgICB0ZXN0 X2J5dGUoImInYSdxIiwgYidhJyk7CisrICAgIHRlc3RfYnl0ZShyIyIgIGInYScgICIjLCBiJ2En KTsKKysgICAgdGVzdF9ieXRlKHIjIiAgYidcbicgICIjLCBiJ1xuJyk7CisrICAgIHRlc3RfYnl0 ZShyIyIgIGInXHInICAiIywgYidccicpOworKyAgICB0ZXN0X2J5dGUociMiICBiJ1x0JyAgIiMs IGInXHQnKTsKKysgICAgdGVzdF9ieXRlKHIjIiAgYidcJycgICIjLCBiJ1wnJyk7CisrICAgIHRl c3RfYnl0ZShyIyIgIGInIicgICIjLCBiJyInKTsKKysgICAgdGVzdF9ieXRlKHIjIiAgYidhJ3Eg ICIjLCBiJ2EnKTsKKyB9CisgCisgI1t0ZXN0XQorIGZuIGNoYXJzKCkgeworKyAgICAjW3RyYWNr X2NhbGxlcl0KKyAgICAgZm4gdGVzdF9jaGFyKHM6ICZzdHIsIHZhbHVlOiBjaGFyKSB7CisrICAg ICAgICBsZXQgcyA9IHMudHJpbSgpOworICAgICAgICAgbWF0Y2ggbGl0KHMpIHsKKyAgICAgICAg ICAgICBMaXQ6OkNoYXIobGl0KSA9PiB7CisgICAgICAgICAgICAgICAgIGFzc2VydF9lcSEobGl0 LnZhbHVlKCksIHZhbHVlKTsKK0BAIC0xMzIsMTkgKzE4MiwyMCBAQCBmbiBjaGFycygpIHsKKyAg ICAgICAgIH0KKyAgICAgfQorIAorLSAgICB0ZXN0X2NoYXIoIidhJyIsICdhJyk7CistICAgIHRl c3RfY2hhcigiJ1xcbiciLCAnXG4nKTsKKy0gICAgdGVzdF9jaGFyKCInXFxyJyIsICdccicpOwor LSAgICB0ZXN0X2NoYXIoIidcXHQnIiwgJ1x0Jyk7CistICAgIHRlc3RfY2hhcigiJ/CfkJUnIiwg J/CfkJUnKTsgLy8gTk9URTogVGhpcyBpcyBhbiBlbW9qaQorLSAgICB0ZXN0X2NoYXIoIidcXCcn IiwgJ1wnJyk7CistICAgIHRlc3RfY2hhcigiJ1wiJyIsICciJyk7CistICAgIHRlc3RfY2hhcigi J1xcdXsxRjQxNX0nIiwgJ1x1ezFGNDE1fScpOworLSAgICB0ZXN0X2NoYXIoIidhJ3EiLCAnYScp OworKyAgICB0ZXN0X2NoYXIociMiICAnYScgICIjLCAnYScpOworKyAgICB0ZXN0X2NoYXIociMi ICAnXG4nICAiIywgJ1xuJyk7CisrICAgIHRlc3RfY2hhcihyIyIgICdccicgICIjLCAnXHInKTsK KysgICAgdGVzdF9jaGFyKHIjIiAgJ1x0JyAgIiMsICdcdCcpOworKyAgICB0ZXN0X2NoYXIociMi ICAn8J+QlScgICIjLCAn8J+QlScpOyAvLyBOT1RFOiBUaGlzIGlzIGFuIGVtb2ppCisrICAgIHRl c3RfY2hhcihyIyIgICdcJycgICIjLCAnXCcnKTsKKysgICAgdGVzdF9jaGFyKHIjIiAgJyInICAi IywgJyInKTsKKysgICAgdGVzdF9jaGFyKHIjIiAgJ1x1ezFGNDE1fScgICIjLCAnXHV7MUY0MTV9 Jyk7CisrICAgIHRlc3RfY2hhcihyIyIgICdhJ3EgICIjLCAnYScpOworIH0KKyAKKyAjW3Rlc3Rd CisgZm4gaW50cygpIHsKKysgICAgI1t0cmFja19jYWxsZXJdCisgICAgIGZuIHRlc3RfaW50KHM6 ICZzdHIsIHZhbHVlOiB1NjQsIHN1ZmZpeDogJnN0cikgeworICAgICAgICAgbWF0Y2ggbGl0KHMp IHsKKyAgICAgICAgICAgICBMaXQ6OkludChsaXQpID0+IHsKK0BAIC0xODUsNiArMjM2LDcgQEAg Zm4gaW50cygpIHsKKyAKKyAjW3Rlc3RdCisgZm4gZmxvYXRzKCkgeworKyAgICAjW3RyYWNrX2Nh bGxlcl0KKyAgICAgZm4gdGVzdF9mbG9hdChzOiAmc3RyLCB2YWx1ZTogZjY0LCBzdWZmaXg6ICZz dHIpIHsKKyAgICAgICAgIG1hdGNoIGxpdChzKSB7CisgICAgICAgICAgICAgTGl0OjpGbG9hdChs aXQpID0+IHsKK0BAIC0yMjQsMTEgKzI3NiwxMyBAQCBmbiBuZWdhdGl2ZSgpIHsKKyAKKyAjW3Rl c3RdCisgZm4gc3VmZml4KCkgeworKyAgICAjW3RyYWNrX2NhbGxlcl0KKyAgICAgZm4gZ2V0X3N1 ZmZpeCh0b2tlbjogJnN0cikgLT4gU3RyaW5nIHsKKyAgICAgICAgIGxldCBsaXQgPSBzeW46OnBh cnNlX3N0cjo6PExpdD4odG9rZW4pLnVud3JhcCgpOworICAgICAgICAgbWF0Y2ggbGl0IHsKKyAg ICAgICAgICAgICBMaXQ6OlN0cihsaXQpID0+IGxpdC5zdWZmaXgoKS50b19vd25lZCgpLAorICAg ICAgICAgICAgIExpdDo6Qnl0ZVN0cihsaXQpID0+IGxpdC5zdWZmaXgoKS50b19vd25lZCgpLAor KyAgICAgICAgICAgIExpdDo6Q1N0cihsaXQpID0+IGxpdC5zdWZmaXgoKS50b19vd25lZCgpLAor ICAgICAgICAgICAgIExpdDo6Qnl0ZShsaXQpID0+IGxpdC5zdWZmaXgoKS50b19vd25lZCgpLAor ICAgICAgICAgICAgIExpdDo6Q2hhcihsaXQpID0+IGxpdC5zdWZmaXgoKS50b19vd25lZCgpLAor ICAgICAgICAgICAgIExpdDo6SW50KGxpdCkgPT4gbGl0LnN1ZmZpeCgpLnRvX293bmVkKCksCitA QCAtMjM5LDkgKzI5MywxMyBAQCBmbiBzdWZmaXgoKSB7CisgCisgICAgIGFzc2VydF9lcSEoZ2V0 X3N1ZmZpeCgiXCJcInMiKSwgInMiKTsKKyAgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJyXCJc InIiKSwgInIiKTsKKysgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJyI1wiXCIjciIpLCAiciIp OworICAgICBhc3NlcnRfZXEhKGdldF9zdWZmaXgoImJcIlwiYiIpLCAiYiIpOworICAgICBhc3Nl cnRfZXEhKGdldF9zdWZmaXgoImJyXCJcImJyIiksICJiciIpOworLSAgICBhc3NlcnRfZXEhKGdl dF9zdWZmaXgoInIjXCJcIiNyIiksICJyIik7CisrICAgIGFzc2VydF9lcSEoZ2V0X3N1ZmZpeCgi YnIjXCJcIiNiciIpLCAiYnIiKTsKKysgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJjXCJcImMi KSwgImMiKTsKKysgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJjclwiXCJjciIpLCAiY3IiKTsK KysgICAgYXNzZXJ0X2VxIShnZXRfc3VmZml4KCJjciNcIlwiI2NyIiksICJjciIpOworICAgICBh c3NlcnRfZXEhKGdldF9zdWZmaXgoIidjJ2MiKSwgImMiKTsKKyAgICAgYXNzZXJ0X2VxIShnZXRf c3VmZml4KCJiJ2InYiIpLCAiYiIpOworICAgICBhc3NlcnRfZXEhKGdldF9zdWZmaXgoIjFpMzIi KSwgImkzMiIpOworZGlmZiAtTnVyIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNf aW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9idWlsZC5ycyBiL3RoaXJkX3BhcnR5L3J1c3Qv Y2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODEvYnVpbGQucnMKKy0t LSBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3Jv Mi0xLjAuNzgvYnVpbGQucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKKysr KyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3Jv Mi0xLjAuODEvYnVpbGQucnMJMjAyNC0wNS0yOSAxODowMjoyNS4wMDAwMDAwMDAgKzAyMDAKK0BA IC0zNiwxMCArMzYsMTAgQEAKKyAKKyB1c2Ugc3RkOjplbnY7CisgdXNlIHN0ZDo6ZmZpOjpPc1N0 cmluZzsKKyt1c2Ugc3RkOjppdGVyOworIHVzZSBzdGQ6OnBhdGg6OlBhdGg7CisgdXNlIHN0ZDo6 cHJvY2Vzczo6e3NlbGYsIENvbW1hbmQsIFN0ZGlvfTsKKyB1c2Ugc3RkOjpzdHI7CistdXNlIHN0 ZDo6dTMyOworIAorIGZuIG1haW4oKSB7CisgICAgIGxldCBydXN0YyA9IHJ1c3RjX21pbm9yX3Zl cnNpb24oKS51bndyYXBfb3IodTMyOjpNQVgpOworQEAgLTYzLDYgKzYzLDExIEBACisgICAgICAg ICBwcmludGxuISgiY2FyZ286cnVzdGMtY2ZnPW5vX3NvdXJjZV90ZXh0Iik7CisgICAgIH0KKyAK KysgICAgaWYgcnVzdGMgPCA3OSB7CisrICAgICAgICBwcmludGxuISgiY2FyZ286cnVzdGMtY2Zn PW5vX2xpdGVyYWxfYnl0ZV9jaGFyYWN0ZXIiKTsKKysgICAgICAgIHByaW50bG4hKCJjYXJnbzpy dXN0Yy1jZmc9bm9fbGl0ZXJhbF9jX3N0cmluZyIpOworKyAgICB9CisrCisgICAgIGlmICFjZmch KGZlYXR1cmUgPSAicHJvYy1tYWNybyIpIHsKKyAgICAgICAgIHByaW50bG4hKCJjYXJnbzpyZXJ1 bi1pZi1jaGFuZ2VkPWJ1aWxkLnJzIik7CisgICAgICAgICByZXR1cm47CitAQCAtMTM4LDE1ICsx NDMsMTUgQEAKKyAgICAgbGV0IG91dF9kaXIgPSBjYXJnb19lbnZfdmFyKCJPVVRfRElSIik7Cisg ICAgIGxldCBwcm9iZWZpbGUgPSBQYXRoOjpuZXcoImJ1aWxkIikuam9pbigicHJvYmUucnMiKTsK KyAKKy0gICAgLy8gTWFrZSBzdXJlIHRvIHBpY2sgdXAgQ2FyZ28gcnVzdGMgY29uZmlndXJhdGlv bi4KKy0gICAgbGV0IG11dCBjbWQgPSBpZiBsZXQgU29tZSh3cmFwcGVyKSA9IGVudjo6dmFyX29z KCJSVVNUQ19XUkFQUEVSIikgeworLSAgICAgICAgbGV0IG11dCBjbWQgPSBDb21tYW5kOjpuZXco d3JhcHBlcik7CistICAgICAgICAvLyBUaGUgd3JhcHBlcidzIGZpcnN0IGFyZ3VtZW50IGlzIHN1 cHBvc2VkIHRvIGJlIHRoZSBwYXRoIHRvIHJ1c3RjLgorLSAgICAgICAgY21kLmFyZyhydXN0Yyk7 CistICAgICAgICBjbWQKKy0gICAgfSBlbHNlIHsKKy0gICAgICAgIENvbW1hbmQ6Om5ldyhydXN0 YykKKy0gICAgfTsKKysgICAgbGV0IHJ1c3RjX3dyYXBwZXIgPSBlbnY6OnZhcl9vcygiUlVTVENf V1JBUFBFUiIpLmZpbHRlcih8d3JhcHBlcnwgIXdyYXBwZXIuaXNfZW1wdHkoKSk7CisrICAgIGxl dCBydXN0Y193b3Jrc3BhY2Vfd3JhcHBlciA9CisrICAgICAgICBlbnY6OnZhcl9vcygiUlVTVENf V09SS1NQQUNFX1dSQVBQRVIiKS5maWx0ZXIofHdyYXBwZXJ8ICF3cmFwcGVyLmlzX2VtcHR5KCkp OworKyAgICBsZXQgbXV0IHJ1c3RjID0gcnVzdGNfd3JhcHBlcgorKyAgICAgICAgLmludG9faXRl cigpCisrICAgICAgICAuY2hhaW4ocnVzdGNfd29ya3NwYWNlX3dyYXBwZXIpCisrICAgICAgICAu Y2hhaW4oaXRlcjo6b25jZShydXN0YykpOworKyAgICBsZXQgbXV0IGNtZCA9IENvbW1hbmQ6Om5l dyhydXN0Yy5uZXh0KCkudW53cmFwKCkpOworKyAgICBjbWQuYXJncyhydXN0Yyk7CisgCisgICAg IGlmICFydXN0Y19ib290c3RyYXAgeworICAgICAgICAgY21kLmVudl9yZW1vdmUoIlJVU1RDX0JP T1RTVFJBUCIpOworQEAgLTE1Niw2ICsxNjEsNyBAQAorICAgICAgICAgLmFyZygiLS1lZGl0aW9u PTIwMjEiKQorICAgICAgICAgLmFyZygiLS1jcmF0ZS1uYW1lPXByb2NfbWFjcm8yIikKKyAgICAg ICAgIC5hcmcoIi0tY3JhdGUtdHlwZT1saWIiKQorKyAgICAgICAgLmFyZygiLS1jYXAtbGludHM9 YWxsb3ciKQorICAgICAgICAgLmFyZygiLS1lbWl0PWRlcC1pbmZvLG1ldGFkYXRhIikKKyAgICAg ICAgIC5hcmcoIi0tb3V0LWRpciIpCisgICAgICAgICAuYXJnKG91dF9kaXIpCitkaWZmIC1OdXIg YS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzIt MS4wLjc4L3NyYy9mYWxsYmFjay5ycyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVz X2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODEvc3JjL2ZhbGxiYWNrLnJzCistLS0gYS90aGly ZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4 L3NyYy9mYWxsYmFjay5ycwkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCArMDIwMAorKysr IGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8y LTEuMC44MS9zcmMvZmFsbGJhY2sucnMJMjAyNC0wNS0yOSAxODowMjoyNS4wMDAwMDAwMDAgKzAy MDAKK0BAIC0xNSw3ICsxNSw5IEBACisgdXNlIGNvcmU6Om9wczo6UmFuZ2U7CisgdXNlIGNvcmU6 Om9wczo6UmFuZ2VCb3VuZHM7CisgdXNlIGNvcmU6OnB0cjsKKy11c2UgY29yZTo6c3RyOjpGcm9t U3RyOworK3VzZSBjb3JlOjpzdHI6OntzZWxmLCBGcm9tU3RyfTsKKyt1c2Ugc3RkOjpmZmk6OkNT dHI7CisrI1tjZmcocHJvY21hY3JvMl9zZW12ZXJfZXhlbXB0KV0KKyB1c2Ugc3RkOjpwYXRoOjpQ YXRoQnVmOworIAorIC8vLyBGb3JjZSB1c2Ugb2YgcHJvYy1tYWNybzIncyBmYWxsYmFjayBpbXBs ZW1lbnRhdGlvbiBvZiB0aGUgQVBJIGZvciBub3csIGV2ZW4KK0BAIC0yOTcsMTEgKzI5OSwxMyBA QAorICAgICB9CisgfQorIAorKyNbY2ZnKHByb2NtYWNybzJfc2VtdmVyX2V4ZW1wdCldCisgI1tk ZXJpdmUoQ2xvbmUsIFBhcnRpYWxFcSwgRXEpXQorIHB1YihjcmF0ZSkgc3RydWN0IFNvdXJjZUZp bGUgeworICAgICBwYXRoOiBQYXRoQnVmLAorIH0KKyAKKysjW2NmZyhwcm9jbWFjcm8yX3NlbXZl cl9leGVtcHQpXQorIGltcGwgU291cmNlRmlsZSB7CisgICAgIC8vLyBHZXQgdGhlIHBhdGggdG8g dGhpcyBzb3VyY2UgZmlsZSBhcyBhIHN0cmluZy4KKyAgICAgcHViIGZuIHBhdGgoJnNlbGYpIC0+ IFBhdGhCdWYgeworQEAgLTMxMyw2ICszMTcsNyBAQAorICAgICB9CisgfQorIAorKyNbY2ZnKHBy b2NtYWNybzJfc2VtdmVyX2V4ZW1wdCldCisgaW1wbCBEZWJ1ZyBmb3IgU291cmNlRmlsZSB7Cisg ICAgIGZuIGZtdCgmc2VsZiwgZjogJm11dCBmbXQ6OkZvcm1hdHRlcikgLT4gZm10OjpSZXN1bHQg eworICAgICAgICAgZi5kZWJ1Z19zdHJ1Y3QoIlNvdXJjZUZpbGUiKQorQEAgLTkyMiw3ICs5Mjcs NyBAQAorIAorICNbZGVyaXZlKENsb25lKV0KKyBwdWIoY3JhdGUpIHN0cnVjdCBMaXRlcmFsIHsK Ky0gICAgcmVwcjogU3RyaW5nLAorKyAgICBwdWIoY3JhdGUpIHJlcHI6IFN0cmluZywKKyAgICAg c3BhbjogU3BhbiwKKyB9CisgCitAQCAtMTAwMyw3MSArMTAwOCw5OCBAQAorICAgICAgICAgTGl0 ZXJhbDo6X25ldyhzKQorICAgICB9CisgCistICAgIHB1YiBmbiBzdHJpbmcodDogJnN0cikgLT4g TGl0ZXJhbCB7CistICAgICAgICBsZXQgbXV0IHJlcHIgPSBTdHJpbmc6OndpdGhfY2FwYWNpdHko dC5sZW4oKSArIDIpOworKyAgICBwdWIgZm4gc3RyaW5nKHN0cmluZzogJnN0cikgLT4gTGl0ZXJh bCB7CisrICAgICAgICBsZXQgbXV0IHJlcHIgPSBTdHJpbmc6OndpdGhfY2FwYWNpdHkoc3RyaW5n LmxlbigpICsgMik7CisgICAgICAgICByZXByLnB1c2goJyInKTsKKy0gICAgICAgIGxldCBtdXQg Y2hhcnMgPSB0LmNoYXJzKCk7CistICAgICAgICB3aGlsZSBsZXQgU29tZShjaCkgPSBjaGFycy5u ZXh0KCkgeworLSAgICAgICAgICAgIGlmIGNoID09ICdcMCcgeworLSAgICAgICAgICAgICAgICBy ZXByLnB1c2hfc3RyKAorLSAgICAgICAgICAgICAgICAgICAgaWYgY2hhcnMKKy0gICAgICAgICAg ICAgICAgICAgICAgICAuYXNfc3RyKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAuc3RhcnRz X3dpdGgofG5leHR8ICcwJyA8PSBuZXh0ICYmIG5leHQgPD0gJzcnKQorLSAgICAgICAgICAgICAg ICAgICAgeworLSAgICAgICAgICAgICAgICAgICAgICAgIC8vIGNpcmN1bXZlbnQgY2xpcHB5Ojpv Y3RhbF9lc2NhcGVzIGxpbnQKKy0gICAgICAgICAgICAgICAgICAgICAgICAiXFx4MDAiCistICAg ICAgICAgICAgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgICAgICAgICAgICAgICJcXDAi CistICAgICAgICAgICAgICAgICAgICB9LAorLSAgICAgICAgICAgICAgICApOworLSAgICAgICAg ICAgIH0gZWxzZSBpZiBjaCA9PSAnXCcnIHsKKy0gICAgICAgICAgICAgICAgLy8gZXNjYXBlX2Rl YnVnIHR1cm5zIHRoaXMgaW50byAiXCciIHdoaWNoIGlzIHVubmVjZXNzYXJ5LgorLSAgICAgICAg ICAgICAgICByZXByLnB1c2goY2gpOworLSAgICAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAg ICAgICAgIHJlcHIuZXh0ZW5kKGNoLmVzY2FwZV9kZWJ1ZygpKTsKKy0gICAgICAgICAgICB9Cist ICAgICAgICB9CisrICAgICAgICBlc2NhcGVfdXRmOChzdHJpbmcsICZtdXQgcmVwcik7CisgICAg ICAgICByZXByLnB1c2goJyInKTsKKyAgICAgICAgIExpdGVyYWw6Ol9uZXcocmVwcikKKyAgICAg fQorIAorLSAgICBwdWIgZm4gY2hhcmFjdGVyKHQ6IGNoYXIpIC0+IExpdGVyYWwgeworKyAgICBw dWIgZm4gY2hhcmFjdGVyKGNoOiBjaGFyKSAtPiBMaXRlcmFsIHsKKyAgICAgICAgIGxldCBtdXQg cmVwciA9IFN0cmluZzo6bmV3KCk7CisgICAgICAgICByZXByLnB1c2goJ1wnJyk7CistICAgICAg ICBpZiB0ID09ICciJyB7CisrICAgICAgICBpZiBjaCA9PSAnIicgeworICAgICAgICAgICAgIC8v IGVzY2FwZV9kZWJ1ZyB0dXJucyB0aGlzIGludG8gJ1wiJyB3aGljaCBpcyB1bm5lY2Vzc2FyeS4K Ky0gICAgICAgICAgICByZXByLnB1c2godCk7CisrICAgICAgICAgICAgcmVwci5wdXNoKGNoKTsK KyAgICAgICAgIH0gZWxzZSB7CistICAgICAgICAgICAgcmVwci5leHRlbmQodC5lc2NhcGVfZGVi dWcoKSk7CisrICAgICAgICAgICAgcmVwci5leHRlbmQoY2guZXNjYXBlX2RlYnVnKCkpOworKyAg ICAgICAgfQorKyAgICAgICAgcmVwci5wdXNoKCdcJycpOworKyAgICAgICAgTGl0ZXJhbDo6X25l dyhyZXByKQorKyAgICB9CisrCisrICAgIHB1YiBmbiBieXRlX2NoYXJhY3RlcihieXRlOiB1OCkg LT4gTGl0ZXJhbCB7CisrICAgICAgICBsZXQgbXV0IHJlcHIgPSAiYiciLnRvX3N0cmluZygpOwor KyAgICAgICAgI1thbGxvdyhjbGlwcHk6Om1hdGNoX292ZXJsYXBwaW5nX2FybSldCisrICAgICAg ICBtYXRjaCBieXRlIHsKKysgICAgICAgICAgICBiJ1wwJyA9PiByZXByLnB1c2hfc3RyKHIiXDAi KSwKKysgICAgICAgICAgICBiJ1x0JyA9PiByZXByLnB1c2hfc3RyKHIiXHQiKSwKKysgICAgICAg ICAgICBiJ1xuJyA9PiByZXByLnB1c2hfc3RyKHIiXG4iKSwKKysgICAgICAgICAgICBiJ1xyJyA9 PiByZXByLnB1c2hfc3RyKHIiXHIiKSwKKysgICAgICAgICAgICBiJ1wnJyA9PiByZXByLnB1c2hf c3RyKHIiXCciKSwKKysgICAgICAgICAgICBiJ1xcJyA9PiByZXByLnB1c2hfc3RyKHIiXFwiKSwK KysgICAgICAgICAgICBiJ1x4MjAnLi49YidceDdFJyA9PiByZXByLnB1c2goYnl0ZSBhcyBjaGFy KSwKKysgICAgICAgICAgICBfID0+IHsKKysgICAgICAgICAgICAgICAgbGV0IF8gPSB3cml0ZSEo cmVwciwgciJceHs6MDJYfSIsIGJ5dGUpOworKyAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAg ICAgICAgIHJlcHIucHVzaCgnXCcnKTsKKyAgICAgICAgIExpdGVyYWw6Ol9uZXcocmVwcikKKyAg ICAgfQorIAorICAgICBwdWIgZm4gYnl0ZV9zdHJpbmcoYnl0ZXM6ICZbdThdKSAtPiBMaXRlcmFs IHsKKy0gICAgICAgIGxldCBtdXQgZXNjYXBlZCA9ICJiXCIiLnRvX3N0cmluZygpOworKyAgICAg ICAgbGV0IG11dCByZXByID0gImJcIiIudG9fc3RyaW5nKCk7CisgICAgICAgICBsZXQgbXV0IGJ5 dGVzID0gYnl0ZXMuaXRlcigpOworICAgICAgICAgd2hpbGUgbGV0IFNvbWUoJmIpID0gYnl0ZXMu bmV4dCgpIHsKKyAgICAgICAgICAgICAjW2FsbG93KGNsaXBweTo6bWF0Y2hfb3ZlcmxhcHBpbmdf YXJtKV0KKyAgICAgICAgICAgICBtYXRjaCBiIHsKKy0gICAgICAgICAgICAgICAgYidcMCcgPT4g ZXNjYXBlZC5wdXNoX3N0cihtYXRjaCBieXRlcy5hc19zbGljZSgpLmZpcnN0KCkgeworKyAgICAg ICAgICAgICAgICBiJ1wwJyA9PiByZXByLnB1c2hfc3RyKG1hdGNoIGJ5dGVzLmFzX3NsaWNlKCku Zmlyc3QoKSB7CisgICAgICAgICAgICAgICAgICAgICAvLyBjaXJjdW12ZW50IGNsaXBweTo6b2N0 YWxfZXNjYXBlcyBsaW50CisgICAgICAgICAgICAgICAgICAgICBTb21lKGInMCcuLj1iJzcnKSA9 PiByIlx4MDAiLAorICAgICAgICAgICAgICAgICAgICAgXyA9PiByIlwwIiwKKyAgICAgICAgICAg ICAgICAgfSksCistICAgICAgICAgICAgICAgIGInXHQnID0+IGVzY2FwZWQucHVzaF9zdHIociJc dCIpLAorLSAgICAgICAgICAgICAgICBiJ1xuJyA9PiBlc2NhcGVkLnB1c2hfc3RyKHIiXG4iKSwK Ky0gICAgICAgICAgICAgICAgYidccicgPT4gZXNjYXBlZC5wdXNoX3N0cihyIlxyIiksCistICAg ICAgICAgICAgICAgIGInIicgPT4gZXNjYXBlZC5wdXNoX3N0cigiXFxcIiIpLAorLSAgICAgICAg ICAgICAgICBiJ1xcJyA9PiBlc2NhcGVkLnB1c2hfc3RyKCJcXFxcIiksCistICAgICAgICAgICAg ICAgIGInXHgyMCcuLj1iJ1x4N0UnID0+IGVzY2FwZWQucHVzaChiIGFzIGNoYXIpLAorKyAgICAg ICAgICAgICAgICBiJ1x0JyA9PiByZXByLnB1c2hfc3RyKHIiXHQiKSwKKysgICAgICAgICAgICAg ICAgYidcbicgPT4gcmVwci5wdXNoX3N0cihyIlxuIiksCisrICAgICAgICAgICAgICAgIGInXHIn ID0+IHJlcHIucHVzaF9zdHIociJcciIpLAorKyAgICAgICAgICAgICAgICBiJyInID0+IHJlcHIu cHVzaF9zdHIoIlxcXCIiKSwKKysgICAgICAgICAgICAgICAgYidcXCcgPT4gcmVwci5wdXNoX3N0 cihyIlxcIiksCisrICAgICAgICAgICAgICAgIGInXHgyMCcuLj1iJ1x4N0UnID0+IHJlcHIucHVz aChiIGFzIGNoYXIpLAorICAgICAgICAgICAgICAgICBfID0+IHsKKy0gICAgICAgICAgICAgICAg ICAgIGxldCBfID0gd3JpdGUhKGVzY2FwZWQsICJcXHh7OjAyWH0iLCBiKTsKKysgICAgICAgICAg ICAgICAgICAgIGxldCBfID0gd3JpdGUhKHJlcHIsIHIiXHh7OjAyWH0iLCBiKTsKKyAgICAgICAg ICAgICAgICAgfQorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0gICAgICAgIGVzY2FwZWQu cHVzaCgnIicpOworLSAgICAgICAgTGl0ZXJhbDo6X25ldyhlc2NhcGVkKQorKyAgICAgICAgcmVw ci5wdXNoKCciJyk7CisrICAgICAgICBMaXRlcmFsOjpfbmV3KHJlcHIpCisrICAgIH0KKysKKysg ICAgcHViIGZuIGNfc3RyaW5nKHN0cmluZzogJkNTdHIpIC0+IExpdGVyYWwgeworKyAgICAgICAg bGV0IG11dCByZXByID0gImNcIiIudG9fc3RyaW5nKCk7CisrICAgICAgICBsZXQgbXV0IGJ5dGVz ID0gc3RyaW5nLnRvX2J5dGVzKCk7CisrICAgICAgICB3aGlsZSAhYnl0ZXMuaXNfZW1wdHkoKSB7 CisrICAgICAgICAgICAgbGV0ICh2YWxpZCwgaW52YWxpZCkgPSBtYXRjaCBzdHI6OmZyb21fdXRm OChieXRlcykgeworKyAgICAgICAgICAgICAgICBPayhhbGxfdmFsaWQpID0+IHsKKysgICAgICAg ICAgICAgICAgICAgIGJ5dGVzID0gYiIiOworKyAgICAgICAgICAgICAgICAgICAgKGFsbF92YWxp ZCwgYnl0ZXMpCisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgRXJyKHV0Zjhf ZXJyb3IpID0+IHsKKysgICAgICAgICAgICAgICAgICAgIGxldCAodmFsaWQsIHJlc3QpID0gYnl0 ZXMuc3BsaXRfYXQodXRmOF9lcnJvci52YWxpZF91cF90bygpKTsKKysgICAgICAgICAgICAgICAg ICAgIGxldCB2YWxpZCA9IHN0cjo6ZnJvbV91dGY4KHZhbGlkKS51bndyYXAoKTsKKysgICAgICAg ICAgICAgICAgICAgIGxldCBpbnZhbGlkID0gdXRmOF9lcnJvcgorKyAgICAgICAgICAgICAgICAg ICAgICAgIC5lcnJvcl9sZW4oKQorKyAgICAgICAgICAgICAgICAgICAgICAgIC5tYXBfb3IocmVz dCwgfGVycm9yX2xlbnwgJnJlc3RbLi5lcnJvcl9sZW5dKTsKKysgICAgICAgICAgICAgICAgICAg IGJ5dGVzID0gJmJ5dGVzW3ZhbGlkLmxlbigpICsgaW52YWxpZC5sZW4oKS4uXTsKKysgICAgICAg ICAgICAgICAgICAgICh2YWxpZCwgaW52YWxpZCkKKysgICAgICAgICAgICAgICAgfQorKyAgICAg ICAgICAgIH07CisrICAgICAgICAgICAgZXNjYXBlX3V0ZjgodmFsaWQsICZtdXQgcmVwcik7Cisr ICAgICAgICAgICAgZm9yICZieXRlIGluIGludmFsaWQgeworKyAgICAgICAgICAgICAgICBsZXQg XyA9IHdyaXRlIShyZXByLCByIlx4ezowMlh9IiwgYnl0ZSk7CisrICAgICAgICAgICAgfQorKyAg ICAgICAgfQorKyAgICAgICAgcmVwci5wdXNoKCciJyk7CisrICAgICAgICBMaXRlcmFsOjpfbmV3 KHJlcHIpCisgICAgIH0KKyAKKyAgICAgcHViIGZuIHNwYW4oJnNlbGYpIC0+IFNwYW4geworQEAg LTExNjgsMyArMTIwMCwyNyBAQAorICAgICAgICAgZGVidWcuZmluaXNoKCkKKyAgICAgfQorIH0K KysKKytmbiBlc2NhcGVfdXRmOChzdHJpbmc6ICZzdHIsIHJlcHI6ICZtdXQgU3RyaW5nKSB7Cisr ICAgIGxldCBtdXQgY2hhcnMgPSBzdHJpbmcuY2hhcnMoKTsKKysgICAgd2hpbGUgbGV0IFNvbWUo Y2gpID0gY2hhcnMubmV4dCgpIHsKKysgICAgICAgIGlmIGNoID09ICdcMCcgeworKyAgICAgICAg ICAgIHJlcHIucHVzaF9zdHIoCisrICAgICAgICAgICAgICAgIGlmIGNoYXJzCisrICAgICAgICAg ICAgICAgICAgICAuYXNfc3RyKCkKKysgICAgICAgICAgICAgICAgICAgIC5zdGFydHNfd2l0aCh8 bmV4dHwgJzAnIDw9IG5leHQgJiYgbmV4dCA8PSAnNycpCisrICAgICAgICAgICAgICAgIHsKKysg ICAgICAgICAgICAgICAgICAgIC8vIGNpcmN1bXZlbnQgY2xpcHB5OjpvY3RhbF9lc2NhcGVzIGxp bnQKKysgICAgICAgICAgICAgICAgICAgIHIiXHgwMCIKKysgICAgICAgICAgICAgICAgfSBlbHNl IHsKKysgICAgICAgICAgICAgICAgICAgIHIiXDAiCisrICAgICAgICAgICAgICAgIH0sCisrICAg ICAgICAgICAgKTsKKysgICAgICAgIH0gZWxzZSBpZiBjaCA9PSAnXCcnIHsKKysgICAgICAgICAg ICAvLyBlc2NhcGVfZGVidWcgdHVybnMgdGhpcyBpbnRvICJcJyIgd2hpY2ggaXMgdW5uZWNlc3Nh cnkuCisrICAgICAgICAgICAgcmVwci5wdXNoKGNoKTsKKysgICAgICAgIH0gZWxzZSB7CisrICAg ICAgICAgICAgcmVwci5leHRlbmQoY2guZXNjYXBlX2RlYnVnKCkpOworKyAgICAgICAgfQorKyAg ICB9CisrfQorZGlmZiAtTnVyIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8v dmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC9zcmMvbGliLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9j aHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MS9zcmMvbGliLnJzCist LS0gYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNy bzItMS4wLjc4L3NyYy9saWIucnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAK KysrKyBiL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1h Y3JvMi0xLjAuODEvc3JjL2xpYi5ycwkyMDI0LTA1LTI5IDE4OjAyOjI1LjAwMDAwMDAwMCArMDIw MAorQEAgLTg2LDcgKzg2LDcgQEAKKyAvLyEgYSBkaWZmZXJlbnQgdGhyZWFkLgorIAorIC8vIFBy b2MtbWFjcm8yIHR5cGVzIGluIHJ1c3Rkb2Mgb2Ygb3RoZXIgY3JhdGVzIGdldCBsaW5rZWQgdG8g aGVyZS4KKy0jIVtkb2MoaHRtbF9yb290X3VybCA9ICJodHRwczovL2RvY3MucnMvcHJvYy1tYWNy bzIvMS4wLjc4IildCisrIyFbZG9jKGh0bWxfcm9vdF91cmwgPSAiaHR0cHM6Ly9kb2NzLnJzL3By b2MtbWFjcm8yLzEuMC44MSIpXQorICMhW2NmZ19hdHRyKGFueShwcm9jX21hY3JvX3NwYW4sIHN1 cGVyX3Vuc3RhYmxlKSwgZmVhdHVyZShwcm9jX21hY3JvX3NwYW4pKV0KKyAjIVtjZmdfYXR0cihz dXBlcl91bnN0YWJsZSwgZmVhdHVyZShwcm9jX21hY3JvX2RlZl9zaXRlKSldCisgIyFbY2ZnX2F0 dHIoZG9jX2NmZywgZmVhdHVyZShkb2NfY2ZnKSldCitAQCAtOTYsNiArOTYsNyBAQAorICAgICBj bGlwcHk6OmNhc3RfcG9zc2libGVfdHJ1bmNhdGlvbiwKKyAgICAgY2xpcHB5OjpjaGVja2VkX2Nv bnZlcnNpb25zLAorICAgICBjbGlwcHk6OmRvY19tYXJrZG93biwKKysgICAgY2xpcHB5OjppbmNv bXBhdGlibGVfbXNydiwKKyAgICAgY2xpcHB5OjppdGVtc19hZnRlcl9zdGF0ZW1lbnRzLAorICAg ICBjbGlwcHk6Oml0ZXJfd2l0aG91dF9pbnRvX2l0ZXIsCisgICAgIGNsaXBweTo6bGV0X3VuZGVy c2NvcmVfdW50eXBlZCwKK0BAIC0xNjksNiArMTcwLDcgQEAKKyB1c2UgY29yZTo6b3BzOjpSYW5n ZUJvdW5kczsKKyB1c2UgY29yZTo6c3RyOjpGcm9tU3RyOworIHVzZSBzdGQ6OmVycm9yOjpFcnJv cjsKKyt1c2Ugc3RkOjpmZmk6OkNTdHI7CisgI1tjZmcocHJvY21hY3JvMl9zZW12ZXJfZXhlbXB0 KV0KKyB1c2Ugc3RkOjpwYXRoOjpQYXRoQnVmOworIAorQEAgLTY3NiwxMiArNjc4LDEyIEBACisg ICAgIEJyYWNlLAorICAgICAvLy8gYFsgLi4uIF1gCisgICAgIEJyYWNrZXQsCistICAgIC8vLyBg w5ggLi4uIMOYYAorKyAgICAvLy8gYOKIhSAuLi4g4oiFYAorICAgICAvLy8KKy0gICAgLy8vIEFu IGltcGxpY2l0IGRlbGltaXRlciwgdGhhdCBtYXksIGZvciBleGFtcGxlLCBhcHBlYXIgYXJvdW5k IHRva2VucworKyAgICAvLy8gQW4gaW52aXNpYmxlIGRlbGltaXRlciwgdGhhdCBtYXksIGZvciBl eGFtcGxlLCBhcHBlYXIgYXJvdW5kIHRva2VucworICAgICAvLy8gY29taW5nIGZyb20gYSAibWFj cm8gdmFyaWFibGUiIGAkdmFyYC4gSXQgaXMgaW1wb3J0YW50IHRvIHByZXNlcnZlCisgICAgIC8v LyBvcGVyYXRvciBwcmlvcml0aWVzIGluIGNhc2VzIGxpa2UgYCR2YXIgKiAzYCB3aGVyZSBgJHZh cmAgaXMgYDEgKyAyYC4KKy0gICAgLy8vIEltcGxpY2l0IGRlbGltaXRlcnMgbWF5IG5vdCBzdXJ2 aXZlIHJvdW5kdHJpcCBvZiBhIHRva2VuIHN0cmVhbSB0aHJvdWdoCisrICAgIC8vLyBJbnZpc2li bGUgZGVsaW1pdGVycyBtYXkgbm90IHN1cnZpdmUgcm91bmR0cmlwIG9mIGEgdG9rZW4gc3RyZWFt IHRocm91Z2gKKyAgICAgLy8vIGEgc3RyaW5nLgorICAgICBOb25lLAorIH0KK0BAIC0xMjMzLDkg KzEyMzUsMTkgQEAKKyAgICAgICAgIExpdGVyYWw6Ol9uZXcoaW1wOjpMaXRlcmFsOjpjaGFyYWN0 ZXIoY2gpKQorICAgICB9CisgCisrICAgIC8vLyBCeXRlIGNoYXJhY3RlciBsaXRlcmFsLgorKyAg ICBwdWIgZm4gYnl0ZV9jaGFyYWN0ZXIoYnl0ZTogdTgpIC0+IExpdGVyYWwgeworKyAgICAgICAg TGl0ZXJhbDo6X25ldyhpbXA6OkxpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGJ5dGUpKQorKyAgICB9 CisrCisgICAgIC8vLyBCeXRlIHN0cmluZyBsaXRlcmFsLgorLSAgICBwdWIgZm4gYnl0ZV9zdHJp bmcoczogJlt1OF0pIC0+IExpdGVyYWwgeworLSAgICAgICAgTGl0ZXJhbDo6X25ldyhpbXA6Okxp dGVyYWw6OmJ5dGVfc3RyaW5nKHMpKQorKyAgICBwdWIgZm4gYnl0ZV9zdHJpbmcoYnl0ZXM6ICZb dThdKSAtPiBMaXRlcmFsIHsKKysgICAgICAgIExpdGVyYWw6Ol9uZXcoaW1wOjpMaXRlcmFsOjpi eXRlX3N0cmluZyhieXRlcykpCisrICAgIH0KKysKKysgICAgLy8vIEMgc3RyaW5nIGxpdGVyYWwu CisrICAgIHB1YiBmbiBjX3N0cmluZyhzdHJpbmc6ICZDU3RyKSAtPiBMaXRlcmFsIHsKKysgICAg ICAgIExpdGVyYWw6Ol9uZXcoaW1wOjpMaXRlcmFsOjpjX3N0cmluZyhzdHJpbmcpKQorICAgICB9 CisgCisgICAgIC8vLyBSZXR1cm5zIHRoZSBzcGFuIGVuY29tcGFzc2luZyB0aGlzIGxpdGVyYWwu CitkaWZmIC1OdXIgYS90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3Iv cHJvYy1tYWNybzItMS4wLjc4L3NyYy93cmFwcGVyLnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJv bWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MS9zcmMvd3JhcHBlci5ycwor LS0tIGEvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFj cm8yLTEuMC43OC9zcmMvd3JhcHBlci5ycwkyMDI0LTA0LTEwIDIzOjI1OjIxLjAwMDAwMDAwMCAr MDIwMAorKysrIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3By b2MtbWFjcm8yLTEuMC44MS9zcmMvd3JhcHBlci5ycwkyMDI0LTA1LTI5IDE4OjAyOjI1LjAwMDAw MDAwMCArMDIwMAorQEAgLTcsNiArNyw3IEBACisgdXNlIGNvcmU6Om9wczo6UmFuZ2U7CisgdXNl IGNvcmU6Om9wczo6UmFuZ2VCb3VuZHM7CisgdXNlIGNvcmU6OnN0cjo6RnJvbVN0cjsKKyt1c2Ug c3RkOjpmZmk6OkNTdHI7CisgdXNlIHN0ZDo6cGFuaWM7CisgI1tjZmcoc3VwZXJfdW5zdGFibGUp XQorIHVzZSBzdGQ6OnBhdGg6OlBhdGhCdWY7CitAQCAtODQ2LDE5ICs4NDcsMzggQEAKKyAgICAg ICAgIH0KKyAgICAgfQorIAorLSAgICBwdWIgZm4gc3RyaW5nKHQ6ICZzdHIpIC0+IExpdGVyYWwg eworKyAgICBwdWIgZm4gc3RyaW5nKHN0cmluZzogJnN0cikgLT4gTGl0ZXJhbCB7CisgICAgICAg ICBpZiBpbnNpZGVfcHJvY19tYWNybygpIHsKKy0gICAgICAgICAgICBMaXRlcmFsOjpDb21waWxl cihwcm9jX21hY3JvOjpMaXRlcmFsOjpzdHJpbmcodCkpCisrICAgICAgICAgICAgTGl0ZXJhbDo6 Q29tcGlsZXIocHJvY19tYWNybzo6TGl0ZXJhbDo6c3RyaW5nKHN0cmluZykpCisgICAgICAgICB9 IGVsc2UgeworLSAgICAgICAgICAgIExpdGVyYWw6OkZhbGxiYWNrKGZhbGxiYWNrOjpMaXRlcmFs OjpzdHJpbmcodCkpCisrICAgICAgICAgICAgTGl0ZXJhbDo6RmFsbGJhY2soZmFsbGJhY2s6Okxp dGVyYWw6OnN0cmluZyhzdHJpbmcpKQorICAgICAgICAgfQorICAgICB9CisgCistICAgIHB1YiBm biBjaGFyYWN0ZXIodDogY2hhcikgLT4gTGl0ZXJhbCB7CisrICAgIHB1YiBmbiBjaGFyYWN0ZXIo Y2g6IGNoYXIpIC0+IExpdGVyYWwgeworICAgICAgICAgaWYgaW5zaWRlX3Byb2NfbWFjcm8oKSB7 CistICAgICAgICAgICAgTGl0ZXJhbDo6Q29tcGlsZXIocHJvY19tYWNybzo6TGl0ZXJhbDo6Y2hh cmFjdGVyKHQpKQorKyAgICAgICAgICAgIExpdGVyYWw6OkNvbXBpbGVyKHByb2NfbWFjcm86Okxp dGVyYWw6OmNoYXJhY3RlcihjaCkpCisgICAgICAgICB9IGVsc2UgeworLSAgICAgICAgICAgIExp dGVyYWw6OkZhbGxiYWNrKGZhbGxiYWNrOjpMaXRlcmFsOjpjaGFyYWN0ZXIodCkpCisrICAgICAg ICAgICAgTGl0ZXJhbDo6RmFsbGJhY2soZmFsbGJhY2s6OkxpdGVyYWw6OmNoYXJhY3RlcihjaCkp CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgcHViIGZuIGJ5dGVfY2hhcmFjdGVyKGJ5dGU6 IHU4KSAtPiBMaXRlcmFsIHsKKysgICAgICAgIGlmIGluc2lkZV9wcm9jX21hY3JvKCkgeworKyAg ICAgICAgICAgIExpdGVyYWw6OkNvbXBpbGVyKHsKKysgICAgICAgICAgICAgICAgI1tjZmcobm90 KG5vX2xpdGVyYWxfYnl0ZV9jaGFyYWN0ZXIpKV0KKysgICAgICAgICAgICAgICAgeworKyAgICAg ICAgICAgICAgICAgICAgcHJvY19tYWNybzo6TGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYnl0ZSkK KysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAjW2NmZyhub19saXRlcmFs X2J5dGVfY2hhcmFjdGVyKV0KKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICAg ICAgbGV0IGZhbGxiYWNrID0gZmFsbGJhY2s6OkxpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGJ5dGUp OworKyAgICAgICAgICAgICAgICAgICAgZmFsbGJhY2sucmVwci5wYXJzZTo6PHByb2NfbWFjcm86 OkxpdGVyYWw+KCkudW53cmFwKCkKKysgICAgICAgICAgICAgICAgfQorKyAgICAgICAgICAgIH0p CisrICAgICAgICB9IGVsc2UgeworKyAgICAgICAgICAgIExpdGVyYWw6OkZhbGxiYWNrKGZhbGxi YWNrOjpMaXRlcmFsOjpieXRlX2NoYXJhY3RlcihieXRlKSkKKyAgICAgICAgIH0KKyAgICAgfQor IAorQEAgLTg3MCw2ICs4OTAsMjUgQEAKKyAgICAgICAgIH0KKyAgICAgfQorIAorKyAgICBwdWIg Zm4gY19zdHJpbmcoc3RyaW5nOiAmQ1N0cikgLT4gTGl0ZXJhbCB7CisrICAgICAgICBpZiBpbnNp ZGVfcHJvY19tYWNybygpIHsKKysgICAgICAgICAgICBMaXRlcmFsOjpDb21waWxlcih7CisrICAg ICAgICAgICAgICAgICNbY2ZnKG5vdChub19saXRlcmFsX2Nfc3RyaW5nKSldCisrICAgICAgICAg ICAgICAgIHsKKysgICAgICAgICAgICAgICAgICAgIHByb2NfbWFjcm86OkxpdGVyYWw6OmNfc3Ry aW5nKHN0cmluZykKKysgICAgICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgICAgICAjW2Nm Zyhub19saXRlcmFsX2Nfc3RyaW5nKV0KKysgICAgICAgICAgICAgICAgeworKyAgICAgICAgICAg ICAgICAgICAgbGV0IGZhbGxiYWNrID0gZmFsbGJhY2s6OkxpdGVyYWw6OmNfc3RyaW5nKHN0cmlu Zyk7CisrICAgICAgICAgICAgICAgICAgICBmYWxsYmFjay5yZXByLnBhcnNlOjo8cHJvY19tYWNy bzo6TGl0ZXJhbD4oKS51bndyYXAoKQorKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAg fSkKKysgICAgICAgIH0gZWxzZSB7CisrICAgICAgICAgICAgTGl0ZXJhbDo6RmFsbGJhY2soZmFs bGJhY2s6OkxpdGVyYWw6OmNfc3RyaW5nKHN0cmluZykpCisrICAgICAgICB9CisrICAgIH0KKysK KyAgICAgcHViIGZuIHNwYW4oJnNlbGYpIC0+IFNwYW4geworICAgICAgICAgbWF0Y2ggc2VsZiB7 CisgICAgICAgICAgICAgTGl0ZXJhbDo6Q29tcGlsZXIobGl0KSA9PiBTcGFuOjpDb21waWxlcihs aXQuc3BhbigpKSwKK2RpZmYgLU51ciBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVz X2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvdGVzdHMvbWFya2VyLnJzIGIvdGhpcmRfcGFy dHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC44MS90ZXN0 cy9tYXJrZXIucnMKKy0tLSBhL3RoaXJkX3BhcnR5L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3Zl bmRvci9wcm9jLW1hY3JvMi0xLjAuNzgvdGVzdHMvbWFya2VyLnJzCTIwMjQtMDQtMTAgMjM6MjU6 MjEuMDAwMDAwMDAwICswMjAwCisrKysgYi90aGlyZF9wYXJ0eS9ydXN0L2Nocm9taXVtX2NyYXRl c19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjgxL3Rlc3RzL21hcmtlci5ycwkyMDI0LTA1LTI5 IDE4OjAyOjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTIxLDYgKzIxLDcgQEAKKyAgICAgICAgICAg ICAkKAorICAgICAgICAgICAgICAgICB7CisgICAgICAgICAgICAgICAgICAgICAvLyBJbXBsZW1l bnRlZCBmb3IgdHlwZXMgdGhhdCBpbXBsZW1lbnQgJG1hcmtlci4KKysgICAgICAgICAgICAgICAg ICAgICNbYWxsb3coZGVhZF9jb2RlKV0KKyAgICAgICAgICAgICAgICAgICAgIHRyYWl0IElzTm90 SW1wbGVtZW50ZWQgeworICAgICAgICAgICAgICAgICAgICAgICAgIGZuIGFzc2VydF9ub3RfaW1w bGVtZW50ZWQoKSB7fQorICAgICAgICAgICAgICAgICAgICAgfQorZGlmZiAtTnVyIGEvdGhpcmRf cGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9yL3Byb2MtbWFjcm8yLTEuMC43OC90 ZXN0cy90ZXN0LnJzIGIvdGhpcmRfcGFydHkvcnVzdC9jaHJvbWl1bV9jcmF0ZXNfaW8vdmVuZG9y L3Byb2MtbWFjcm8yLTEuMC44MS90ZXN0cy90ZXN0LnJzCistLS0gYS90aGlyZF9wYXJ0eS9ydXN0 L2Nocm9taXVtX2NyYXRlc19pby92ZW5kb3IvcHJvYy1tYWNybzItMS4wLjc4L3Rlc3RzL3Rlc3Qu cnMJMjAyNC0wNC0xMCAyMzoyNToyMS4wMDAwMDAwMDAgKzAyMDAKKysrKyBiL3RoaXJkX3BhcnR5 L3J1c3QvY2hyb21pdW1fY3JhdGVzX2lvL3ZlbmRvci9wcm9jLW1hY3JvMi0xLjAuODEvdGVzdHMv dGVzdC5ycwkyMDI0LTA1LTI5IDE4OjAyOjI1LjAwMDAwMDAwMCArMDIwMAorQEAgLTEsMTEgKzEs MTQgQEAKKyAjIVthbGxvdygKKyAgICAgY2xpcHB5Ojphc3NlcnRpb25zX29uX3Jlc3VsdF9zdGF0 ZXMsCisgICAgIGNsaXBweTo6aXRlbXNfYWZ0ZXJfc3RhdGVtZW50cywKKysgICAgY2xpcHB5Ojpu ZWVkbGVzc19wYXNzX2J5X3ZhbHVlLAorKyAgICBjbGlwcHk6Om5lZWRsZXNzX3Jhd19zdHJpbmdf aGFzaGVzLAorICAgICBjbGlwcHk6Om5vbl9hc2NpaV9saXRlcmFsLAorICAgICBjbGlwcHk6Om9j dGFsX2VzY2FwZXMKKyApXQorIAorIHVzZSBwcm9jX21hY3JvMjo6e0lkZW50LCBMaXRlcmFsLCBQ dW5jdCwgU3BhY2luZywgU3BhbiwgVG9rZW5TdHJlYW0sIFRva2VuVHJlZX07CisrdXNlIHN0ZDo6 ZmZpOjpDU3RyOworIHVzZSBzdGQ6Oml0ZXI7CisgdXNlIHN0ZDo6c3RyOjp7c2VsZiwgRnJvbVN0 cn07CisgCitAQCAtOTYsMTIgKzk5LDIyIEBACisgCisgI1t0ZXN0XQorIGZuIGxpdGVyYWxfc3Ry aW5nKCkgeworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnN0cmluZygiZm9vIikudG9fc3RyaW5n KCksICJcImZvb1wiIik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6c3RyaW5nKCJcIiIpLnRv X3N0cmluZygpLCAiXCJcXFwiXCIiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpzdHJpbmco ImRpZG4ndCIpLnRvX3N0cmluZygpLCAiXCJkaWRuJ3RcIiIpOworLSAgICBhc3NlcnRfZXEhKAor LSAgICAgICAgTGl0ZXJhbDo6c3RyaW5nKCJhXDAwYlwwN2NcMDhkXDBlXDAiKS50b19zdHJpbmco KSwKKy0gICAgICAgICJcImFcXHgwMDBiXFx4MDA3Y1xcMDhkXFwwZVxcMFwiIiwKKysgICAgI1t0 cmFja19jYWxsZXJdCisrICAgIGZuIGFzc2VydChsaXRlcmFsOiBMaXRlcmFsLCBleHBlY3RlZDog JnN0cikgeworKyAgICAgICAgYXNzZXJ0X2VxIShsaXRlcmFsLnRvX3N0cmluZygpLCBleHBlY3Rl ZC50cmltKCkpOworKyAgICB9CisrCisrICAgIGFzc2VydChMaXRlcmFsOjpzdHJpbmcoIiIpLCBy IyIgICIiICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpzdHJpbmcoImFBIiksIHIjIiAgImFB IiAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6c3RyaW5nKCJcdCIpLCByIyIgICJcdCIgICIj KTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygi4p2kIiksIHIjIiAgIuKdpCIgICIjKTsK KysgICAgYXNzZXJ0KExpdGVyYWw6OnN0cmluZygiJyIpLCByIyIgICInIiAgIiMpOworKyAgICBh c3NlcnQoTGl0ZXJhbDo6c3RyaW5nKCJcIiIpLCByIyIgICJcIiIgICIjKTsKKysgICAgYXNzZXJ0 KExpdGVyYWw6OnN0cmluZygiXDAiKSwgciMiICAiXDAiICAiIyk7CisrICAgIGFzc2VydChMaXRl cmFsOjpzdHJpbmcoIlx1ezF9IiksIHIjIiAgIlx1ezF9IiAgIiMpOworKyAgICBhc3NlcnQoCisr ICAgICAgICBMaXRlcmFsOjpzdHJpbmcoImFcMDBiXDA3Y1wwOGRcMGVcMCIpLAorKyAgICAgICAg ciMiICAiYVx4MDAwYlx4MDA3Y1wwOGRcMGVcMCIgICIjLAorICAgICApOworIAorICAgICAiXCJc XFxyXG4gICAgeFwiIi5wYXJzZTo6PFRva2VuU3RyZWFtPigpLnVud3JhcCgpOworQEAgLTEzMywx NSArMTQ2LDQyIEBACisgfQorIAorICNbdGVzdF0KKytmbiBsaXRlcmFsX2J5dGVfY2hhcmFjdGVy KCkgeworKyAgICAjW3RyYWNrX2NhbGxlcl0KKysgICAgZm4gYXNzZXJ0KGxpdGVyYWw6IExpdGVy YWwsIGV4cGVjdGVkOiAmc3RyKSB7CisrICAgICAgICBhc3NlcnRfZXEhKGxpdGVyYWwudG9fc3Ry aW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7CisrICAgIH0KKysKKysgICAgYXNzZXJ0KExpdGVyYWw6 OmJ5dGVfY2hhcmFjdGVyKGInYScpLCByIyIgIGInYScgICIjKTsKKysgICAgYXNzZXJ0KExpdGVy YWw6OmJ5dGVfY2hhcmFjdGVyKGInXDAnKSwgciMiICBiJ1wwJyAgIiMpOworKyAgICBhc3NlcnQo TGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYidcdCcpLCByIyIgIGInXHQnICAiIyk7CisrICAgIGFz c2VydChMaXRlcmFsOjpieXRlX2NoYXJhY3RlcihiJ1xuJyksIHIjIiAgYidcbicgICIjKTsKKysg ICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInXHInKSwgciMiICBiJ1xyJyAgIiMp OworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9jaGFyYWN0ZXIoYidcJycpLCByIyIgIGInXCcn ICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpieXRlX2NoYXJhY3RlcihiJ1xcJyksIHIjIiAg YidcXCcgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVyKGInXHgxZicp LCByIyIgIGInXHgxRicgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmJ5dGVfY2hhcmFjdGVy KGInIicpLCByIyIgIGInIicgICIjKTsKKyt9CisrCisrI1t0ZXN0XQorIGZuIGxpdGVyYWxfYnl0 ZV9zdHJpbmcoKSB7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiIiKS50 b19zdHJpbmcoKSwgImJcIlwiIik7CistICAgIGFzc2VydF9lcSEoCistICAgICAgICBMaXRlcmFs OjpieXRlX3N0cmluZyhiIlwwXHRcblxyXCJcXDJceDEwIikudG9fc3RyaW5nKCksCistICAgICAg ICAiYlwiXFwwXFx0XFxuXFxyXFxcIlxcXFwyXFx4MTBcIiIsCistICAgICk7CistICAgIGFzc2Vy dF9lcSEoCistICAgICAgICBMaXRlcmFsOjpieXRlX3N0cmluZyhiImFcMDBiXDA3Y1wwOGRcMGVc MCIpLnRvX3N0cmluZygpLAorLSAgICAgICAgImJcImFcXHgwMDBiXFx4MDA3Y1xcMDhkXFwwZVxc MFwiIiwKKysgICAgI1t0cmFja19jYWxsZXJdCisrICAgIGZuIGFzc2VydChsaXRlcmFsOiBMaXRl cmFsLCBleHBlY3RlZDogJnN0cikgeworKyAgICAgICAgYXNzZXJ0X2VxIShsaXRlcmFsLnRvX3N0 cmluZygpLCBleHBlY3RlZC50cmltKCkpOworKyAgICB9CisrCisrICAgIGFzc2VydChMaXRlcmFs OjpieXRlX3N0cmluZyhiIiIpLCByIyIgIGIiIiAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6 Ynl0ZV9zdHJpbmcoYiJcMCIpLCByIyIgIGIiXDAiICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFs OjpieXRlX3N0cmluZyhiIlx0IiksIHIjIiAgYiJcdCIgICIjKTsKKysgICAgYXNzZXJ0KExpdGVy YWw6OmJ5dGVfc3RyaW5nKGIiXG4iKSwgciMiICBiIlxuIiAgIiMpOworKyAgICBhc3NlcnQoTGl0 ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJcciIpLCByIyIgIGIiXHIiICAiIyk7CisrICAgIGFzc2VydChM aXRlcmFsOjpieXRlX3N0cmluZyhiIlwiIiksIHIjIiAgYiJcIiIgICIjKTsKKysgICAgYXNzZXJ0 KExpdGVyYWw6OmJ5dGVfc3RyaW5nKGIiXFwiKSwgciMiICBiIlxcIiAgIiMpOworKyAgICBhc3Nl cnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiJceDFmIiksIHIjIiAgYiJceDFGIiAgIiMpOworKyAg ICBhc3NlcnQoTGl0ZXJhbDo6Ynl0ZV9zdHJpbmcoYiInIiksIHIjIiAgYiInIiAgIiMpOworKyAg ICBhc3NlcnQoCisrICAgICAgICBMaXRlcmFsOjpieXRlX3N0cmluZyhiImFcMDBiXDA3Y1wwOGRc MGVcMCIpLAorKyAgICAgICAgciMiICBiImFceDAwMGJceDAwN2NcMDhkXDBlXDAiICAiIywKKyAg ICAgKTsKKyAKKyAgICAgImJcIlxcXHJcbiAgICB4XCIiLnBhcnNlOjo8VG9rZW5TdHJlYW0+KCku dW53cmFwKCk7CitAQCAtMTUyLDYgKzE5Miw0MSBAQAorIAorICNbdGVzdF0KKyBmbiBsaXRlcmFs X2Nfc3RyaW5nKCkgeworKyAgICAjW3RyYWNrX2NhbGxlcl0KKysgICAgZm4gYXNzZXJ0KGxpdGVy YWw6IExpdGVyYWwsIGV4cGVjdGVkOiAmc3RyKSB7CisrICAgICAgICBhc3NlcnRfZXEhKGxpdGVy YWwudG9fc3RyaW5nKCksIGV4cGVjdGVkLnRyaW0oKSk7CisrICAgIH0KKysKKysgICAgYXNzZXJ0 KExpdGVyYWw6OmNfc3RyaW5nKDwmQ1N0cj46OmRlZmF1bHQoKSksIHIjIiAgYyIiICAiIyk7Cisr ICAgIGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNf d2l0aF9udWwoYiJhQVwwIikudW53cmFwKCkpLAorKyAgICAgICAgciMiICBjImFBIiAgIiMsCisr ICAgICk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6OmZy b21fYnl0ZXNfd2l0aF9udWwoYiJhQVwwIikudW53cmFwKCkpLAorKyAgICAgICAgciMiICBjImFB IiAgIiMsCisrICAgICk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6OmNfc3RyaW5n KENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJcdFwwIikudW53cmFwKCkpLAorKyAgICAgICAg ciMiICBjIlx0IiAgIiMsCisrICAgICk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6 OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0aF9udWwoYiJceEUyXHg5RFx4QTRcMCIpLnVu d3JhcCgpKSwKKysgICAgICAgIHIjIiAgYyLinaQiICAiIywKKysgICAgKTsKKysgICAgYXNzZXJ0 KAorKyAgICAgICAgTGl0ZXJhbDo6Y19zdHJpbmcoQ1N0cjo6ZnJvbV9ieXRlc193aXRoX251bChi IidcMCIpLnVud3JhcCgpKSwKKysgICAgICAgIHIjIiAgYyInIiAgIiMsCisrICAgICk7CisrICAg IGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21fYnl0ZXNfd2l0 aF9udWwoYiJcIlwwIikudW53cmFwKCkpLAorKyAgICAgICAgciMiICBjIlwiIiAgIiMsCisrICAg ICk7CisrICAgIGFzc2VydCgKKysgICAgICAgIExpdGVyYWw6OmNfc3RyaW5nKENTdHI6OmZyb21f Ynl0ZXNfd2l0aF9udWwoYiJceDdGXHhGRlx4RkVceENDXHhCM1wwIikudW53cmFwKCkpLAorKyAg ICAgICAgciMiICBjIlx1ezdmfVx4RkZceEZFXHV7MzMzfSIgICIjLAorKyAgICApOworKworICAg ICBsZXQgc3RyaW5ncyA9IHIjIyMiCisgICAgICAgICBjImhlbGxvXHg4MOaIkeWPq1x1ezFGOTgw fSIgIC8vIGZyb20gdGhlIFJGQworICAgICAgICAgY3IiXCIKK0BAIC0xODgsNDkgKzI2Myw4MCBA QAorIAorICNbdGVzdF0KKyBmbiBsaXRlcmFsX2NoYXJhY3RlcigpIHsKKy0gICAgYXNzZXJ0X2Vx IShMaXRlcmFsOjpjaGFyYWN0ZXIoJ3gnKS50b19zdHJpbmcoKSwgIid4JyIpOworLSAgICBhc3Nl cnRfZXEhKExpdGVyYWw6OmNoYXJhY3RlcignXCcnKS50b19zdHJpbmcoKSwgIidcXCcnIik7Cist ICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6Y2hhcmFjdGVyKCciJykudG9fc3RyaW5nKCksICInXCIn Iik7CisrICAgICNbdHJhY2tfY2FsbGVyXQorKyAgICBmbiBhc3NlcnQobGl0ZXJhbDogTGl0ZXJh bCwgZXhwZWN0ZWQ6ICZzdHIpIHsKKysgICAgICAgIGFzc2VydF9lcSEobGl0ZXJhbC50b19zdHJp bmcoKSwgZXhwZWN0ZWQudHJpbSgpKTsKKysgICAgfQorKworKyAgICBhc3NlcnQoTGl0ZXJhbDo6 Y2hhcmFjdGVyKCdhJyksIHIjIiAgJ2EnICAiIyk7CisrICAgIGFzc2VydChMaXRlcmFsOjpjaGFy YWN0ZXIoJ1x0JyksIHIjIiAgJ1x0JyAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Y2hhcmFj dGVyKCfinaQnKSwgciMiICAn4p2kJyAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Y2hhcmFj dGVyKCdcJycpLCByIyIgICdcJycgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmNoYXJhY3Rl cignIicpLCByIyIgICciJyAgIiMpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6Y2hhcmFjdGVyKCdc MCcpLCByIyIgICdcMCcgICIjKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmNoYXJhY3RlcignXHV7 MX0nKSwgciMiICAnXHV7MX0nICAiIyk7CisgfQorIAorICNbdGVzdF0KKyBmbiBsaXRlcmFsX2lu dGVnZXIoKSB7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dThfc3VmZml4ZWQoMTApLnRvX3N0 cmluZygpLCAiMTB1OCIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnUxNl9zdWZmaXhlZCgx MCkudG9fc3RyaW5nKCksICIxMHUxNiIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OnUzMl9z dWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHUzMiIpOworLSAgICBhc3NlcnRfZXEhKExpdGVy YWw6OnU2NF9zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMHU2NCIpOworLSAgICBhc3NlcnRf ZXEhKExpdGVyYWw6OnUxMjhfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTB1MTI4Iik7Cist ICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dXNpemVfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAi MTB1c2l6ZSIpOworLQorLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6Omk4X3N1ZmZpeGVkKDEwKS50 b19zdHJpbmcoKSwgIjEwaTgiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppMTZfc3VmZml4 ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpMTYiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpp MzJfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpMzIiKTsKKy0gICAgYXNzZXJ0X2VxIShM aXRlcmFsOjppNjRfc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTBpNjQiKTsKKy0gICAgYXNz ZXJ0X2VxIShMaXRlcmFsOjppMTI4X3N1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwaTEyOCIp OworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmlzaXplX3N1ZmZpeGVkKDEwKS50b19zdHJpbmco KSwgIjEwaXNpemUiKTsKKy0KKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjp1OF91bnN1ZmZpeGVk KDEwKS50b19zdHJpbmcoKSwgIjEwIik7CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dTE2X3Vu c3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFs Ojp1MzJfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOworLSAgICBhc3NlcnRfZXEh KExpdGVyYWw6OnU2NF91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7CistICAgIGFz c2VydF9lcSEoTGl0ZXJhbDo6dTEyOF91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7 CistICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6dXNpemVfdW5zdWZmaXhlZCgxMCkudG9fc3RyaW5n KCksICIxMCIpOworLQorLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6Omk4X3Vuc3VmZml4ZWQoMTAp LnRvX3N0cmluZygpLCAiMTAiKTsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppMTZfdW5zdWZm aXhlZCgxMCkudG9fc3RyaW5nKCksICIxMCIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6Omkz Ml91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwgIjEwIik7CistICAgIGFzc2VydF9lcSEoTGl0 ZXJhbDo6aTY0X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKKy0gICAgYXNzZXJ0 X2VxIShMaXRlcmFsOjppMTI4X3Vuc3VmZml4ZWQoMTApLnRvX3N0cmluZygpLCAiMTAiKTsKKy0g ICAgYXNzZXJ0X2VxIShMaXRlcmFsOjppc2l6ZV91bnN1ZmZpeGVkKDEwKS50b19zdHJpbmcoKSwg IjEwIik7CisrICAgICNbdHJhY2tfY2FsbGVyXQorKyAgICBmbiBhc3NlcnQobGl0ZXJhbDogTGl0 ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKKysgICAgICAgIGFzc2VydF9lcSEobGl0ZXJhbC50b19z dHJpbmcoKSwgZXhwZWN0ZWQpOworKyAgICB9CisrCisrICAgIGFzc2VydChMaXRlcmFsOjp1OF9z dWZmaXhlZCgxMCksICIxMHU4Iik7CisrICAgIGFzc2VydChMaXRlcmFsOjp1MTZfc3VmZml4ZWQo MTApLCAiMTB1MTYiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnUzMl9zdWZmaXhlZCgxMCksICIx MHUzMiIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6dTY0X3N1ZmZpeGVkKDEwKSwgIjEwdTY0Iik7 CisrICAgIGFzc2VydChMaXRlcmFsOjp1MTI4X3N1ZmZpeGVkKDEwKSwgIjEwdTEyOCIpOworKyAg ICBhc3NlcnQoTGl0ZXJhbDo6dXNpemVfc3VmZml4ZWQoMTApLCAiMTB1c2l6ZSIpOworKworKyAg ICBhc3NlcnQoTGl0ZXJhbDo6aThfc3VmZml4ZWQoMTApLCAiMTBpOCIpOworKyAgICBhc3NlcnQo TGl0ZXJhbDo6aTE2X3N1ZmZpeGVkKDEwKSwgIjEwaTE2Iik7CisrICAgIGFzc2VydChMaXRlcmFs OjppMzJfc3VmZml4ZWQoMTApLCAiMTBpMzIiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6Omk2NF9z dWZmaXhlZCgxMCksICIxMGk2NCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6aTEyOF9zdWZmaXhl ZCgxMCksICIxMGkxMjgiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmlzaXplX3N1ZmZpeGVkKDEw KSwgIjEwaXNpemUiKTsKKysKKysgICAgYXNzZXJ0KExpdGVyYWw6OnU4X3Vuc3VmZml4ZWQoMTAp LCAiMTAiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OnUxNl91bnN1ZmZpeGVkKDEwKSwgIjEwIik7 CisrICAgIGFzc2VydChMaXRlcmFsOjp1MzJfdW5zdWZmaXhlZCgxMCksICIxMCIpOworKyAgICBh c3NlcnQoTGl0ZXJhbDo6dTY0X3Vuc3VmZml4ZWQoMTApLCAiMTAiKTsKKysgICAgYXNzZXJ0KExp dGVyYWw6OnUxMjhfdW5zdWZmaXhlZCgxMCksICIxMCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6 dXNpemVfdW5zdWZmaXhlZCgxMCksICIxMCIpOworKworKyAgICBhc3NlcnQoTGl0ZXJhbDo6aThf dW5zdWZmaXhlZCgxMCksICIxMCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6aTE2X3Vuc3VmZml4 ZWQoMTApLCAiMTAiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmkzMl91bnN1ZmZpeGVkKDEwKSwg IjEwIik7CisrICAgIGFzc2VydChMaXRlcmFsOjppNjRfdW5zdWZmaXhlZCgxMCksICIxMCIpOwor KyAgICBhc3NlcnQoTGl0ZXJhbDo6aTEyOF91bnN1ZmZpeGVkKDEwKSwgIjEwIik7CisrICAgIGFz c2VydChMaXRlcmFsOjppc2l6ZV91bnN1ZmZpeGVkKDEwKSwgIjEwIik7CisrCisrICAgIGFzc2Vy dChMaXRlcmFsOjppMzJfc3VmZml4ZWQoLTEwKSwgIi0xMGkzMiIpOworKyAgICBhc3NlcnQoTGl0 ZXJhbDo6aTMyX3Vuc3VmZml4ZWQoLTEwKSwgIi0xMCIpOworIH0KKyAKKyAjW3Rlc3RdCisgZm4g bGl0ZXJhbF9mbG9hdCgpIHsKKy0gICAgYXNzZXJ0X2VxIShMaXRlcmFsOjpmMzJfc3VmZml4ZWQo MTAuMCkudG9fc3RyaW5nKCksICIxMGYzMiIpOworLSAgICBhc3NlcnRfZXEhKExpdGVyYWw6OmY2 NF9zdWZmaXhlZCgxMC4wKS50b19zdHJpbmcoKSwgIjEwZjY0Iik7CistCistICAgIGFzc2VydF9l cSEoTGl0ZXJhbDo6ZjMyX3Vuc3VmZml4ZWQoMTAuMCkudG9fc3RyaW5nKCksICIxMC4wIik7Cist ICAgIGFzc2VydF9lcSEoTGl0ZXJhbDo6ZjY0X3Vuc3VmZml4ZWQoMTAuMCkudG9fc3RyaW5nKCks ICIxMC4wIik7CisrICAgICNbdHJhY2tfY2FsbGVyXQorKyAgICBmbiBhc3NlcnQobGl0ZXJhbDog TGl0ZXJhbCwgZXhwZWN0ZWQ6ICZzdHIpIHsKKysgICAgICAgIGFzc2VydF9lcSEobGl0ZXJhbC50 b19zdHJpbmcoKSwgZXhwZWN0ZWQpOworKyAgICB9CisrCisrICAgIGFzc2VydChMaXRlcmFsOjpm MzJfc3VmZml4ZWQoMTAuMCksICIxMGYzMiIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6ZjMyX3N1 ZmZpeGVkKC0xMC4wKSwgIi0xMGYzMiIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6ZjY0X3N1ZmZp eGVkKDEwLjApLCAiMTBmNjQiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmY2NF9zdWZmaXhlZCgt MTAuMCksICItMTBmNjQiKTsKKysKKysgICAgYXNzZXJ0KExpdGVyYWw6OmYzMl91bnN1ZmZpeGVk KDEwLjApLCAiMTAuMCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6ZjMyX3Vuc3VmZml4ZWQoLTEw LjApLCAiLTEwLjAiKTsKKysgICAgYXNzZXJ0KExpdGVyYWw6OmY2NF91bnN1ZmZpeGVkKDEwLjAp LCAiMTAuMCIpOworKyAgICBhc3NlcnQoTGl0ZXJhbDo6ZjY0X3Vuc3VmZml4ZWQoLTEwLjApLCAi LTEwLjAiKTsKKysKKysgICAgYXNzZXJ0KAorKyAgICAgICAgTGl0ZXJhbDo6ZjY0X3Vuc3VmZml4 ZWQoMWUxMDApLAorKyAgICAgICAgIjEwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAwMDAw MDAwMDAwMDAwLjAiLAorKyAgICApOworIH0KKyAKKyAjW3Rlc3RdCitAQCAtMjQ4LDkgKzM1NCwx MyBAQAorICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCIxLl9tIiksIDMpOworICAgICBhc3Nl cnRfZXEhKHRva2VuX2NvdW50KCJcIlwicyIpLCAxKTsKKyAgICAgYXNzZXJ0X2VxISh0b2tlbl9j b3VudCgiclwiXCJyIiksIDEpOworKyAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJyI1wiXCIj ciIpLCAxKTsKKyAgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiYlwiXCJiIiksIDEpOworICAg ICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCJiclwiXCJiciIpLCAxKTsKKy0gICAgYXNzZXJ0X2Vx ISh0b2tlbl9jb3VudCgiciNcIlwiI3IiKSwgMSk7CisrICAgIGFzc2VydF9lcSEodG9rZW5fY291 bnQoImJyI1wiXCIjYnIiKSwgMSk7CisrICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoImNcIlwi YyIpLCAxKTsKKysgICAgYXNzZXJ0X2VxISh0b2tlbl9jb3VudCgiY3JcIlwiY3IiKSwgMSk7Cisr ICAgIGFzc2VydF9lcSEodG9rZW5fY291bnQoImNyI1wiXCIjY3IiKSwgMSk7CisgICAgIGFzc2Vy dF9lcSEodG9rZW5fY291bnQoIidjJ2MiKSwgMSk7CisgICAgIGFzc2VydF9lcSEodG9rZW5fY291 bnQoImInYidiIiksIDEpOworICAgICBhc3NlcnRfZXEhKHRva2VuX2NvdW50KCIwRSIpLCAxKTsK K0BAIC0zNzgsNyArNDg4LDcgQEAKKyAgICAgcm91bmR0cmlwKCInYSIpOworICAgICByb3VuZHRy aXAoIidfIik7CisgICAgIHJvdW5kdHJpcCgiJ3N0YXRpYyIpOworLSAgICByb3VuZHRyaXAoIidc XHV7MTBfX0ZGRkZ9JyIpOworKyAgICByb3VuZHRyaXAociInXHV7MTBfX0ZGRkZ9JyIpOworICAg ICByb3VuZHRyaXAoIlwiXFx1ezEwX0YwRkZfX31mb29cXHV7MV8wXzBfMF9ffVwiIik7CisgfQor IAorQEAgLTQwMSw2ICs1MTEsNyBAQAorICAgICBmYWlsKCJcIlxcXHIgIFwiIik7IC8vIGJhY2tz bGFzaCBjYXJyaWFnZSByZXR1cm4KKyAgICAgZmFpbCgiJ2FhJ2FhIik7CisgICAgIGZhaWwoImJy IyNcIlwiIyIpOworKyAgICBmYWlsKCJjciMjXCJcIiMiKTsKKyAgICAgZmFpbCgiXCJcXFxuXHV7 ODV9XHJcIiIpOworIH0KKyAKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LXN0ZF92YXJp YW50LnBhdGNoIGIvY2hyb21pdW0tMTI2LWVsNy1zdGRfdmFyaWFudC5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzc1YmZjCi0tLSAvZGV2L251bGwKKysrIGIvY2hy b21pdW0tMTI2LWVsNy1zdGRfdmFyaWFudC5wYXRjaApAQCAtMCwwICsxLDk2IEBACitkaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvdmlzaXRlZF91cmxfcmFua2luZy9p bnRlcm5hbC92aXNpdGVkX3VybF9yYW5raW5nX3NlcnZpY2VfaW1wbC5jYy5zdGRfdmFyaWFudCBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvdmlzaXRlZF91cmxfcmFua2luZy9pbnRl cm5hbC92aXNpdGVkX3VybF9yYW5raW5nX3NlcnZpY2VfaW1wbC5jYworLS0tIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5nL2ludGVybmFsL3Zpc2l0 ZWRfdXJsX3Jhbmtpbmdfc2VydmljZV9pbXBsLmNjLnN0ZF92YXJpYW50CTIwMjQtMDYtMDQgMTI6 MzE6MTAuNjAyMjgyODEzICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25l bnRzL3Zpc2l0ZWRfdXJsX3JhbmtpbmcvaW50ZXJuYWwvdmlzaXRlZF91cmxfcmFua2luZ19zZXJ2 aWNlX2ltcGwuY2MJMjAyNC0wNi0wNCAxMzoyMTo1MC4xMjEzNDUxODMgKzAyMDAKK0BAIC03LDcg KzcsNiBAQAorICNpbmNsdWRlIDxtYXA+CisgI2luY2x1ZGUgPG1lbW9yeT4KKyAjaW5jbHVkZSA8 cXVldWU+CistI2luY2x1ZGUgPHZhcmlhbnQ+CisgI2luY2x1ZGUgPHZlY3Rvcj4KKyAKKyAjaW5j bHVkZSAiYmFzZS9iYXJyaWVyX2NhbGxiYWNrLmgiCitAQCAtNDEsMjAgKzQwLDE2IEBAIHN0ZDo6 dmVjdG9yPFVSTFZpc2l0QWdncmVnYXRlPiBDb21wdXRlVVIKKyAgICAgZm9yIChzdGQ6OnBhaXI8 Y29uc3QgVVJMTWVyZ2VLZXksIFVSTFZpc2l0QWdncmVnYXRlOjpVUkxWaXNpdFZhcmlhbnQ+Jgor ICAgICAgICAgICAgICB1cmxfZGF0YSA6IHJlc3VsdC5kYXRhKSB7CisgICAgICAgVVJMVmlzaXRB Z2dyZWdhdGUmIGFnZ3JlZ2F0ZSA9IHVybF92aXNpdF9tYXBbdXJsX2RhdGEuZmlyc3RdOworLSAg ICAgIHN0ZDo6dmlzaXQoCistICAgICAgICAgIFVSTFZpc2l0VmFyaWFudEhlbHBlcnsKKy0gICAg ICAgICAgICAgIFsmYWdncmVnYXRlXShVUkxWaXNpdEFnZ3JlZ2F0ZTo6VGFiRGF0YSYgdGFiX2Rh dGEpIHsKKy0gICAgICAgICAgICAgICAgYWdncmVnYXRlLmZldGNoZXJfZGF0YV9tYXAuZW1wbGFj ZSgKKy0gICAgICAgICAgICAgICAgICAgIHRhYl9kYXRhLmxhc3RfYWN0aXZlX3RhYi5zZXNzaW9u X25hbWUuaGFzX3ZhbHVlKCkKKy0gICAgICAgICAgICAgICAgICAgICAgICA/IEZldGNoZXI6OmtT ZXNzaW9uCistICAgICAgICAgICAgICAgICAgICAgICAgOiBGZXRjaGVyOjprVGFiTW9kZWwsCist ICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUodGFiX2RhdGEpKTsKKy0gICAgICAgICAgICAg IH0sCistICAgICAgICAgICAgICBbJmFnZ3JlZ2F0ZV0oVVJMVmlzaXRBZ2dyZWdhdGU6Okhpc3Rv cnlEYXRhJiBoaXN0b3J5X2RhdGEpIHsKKy0gICAgICAgICAgICAgICAgYWdncmVnYXRlLmZldGNo ZXJfZGF0YV9tYXAuZW1wbGFjZShGZXRjaGVyOjprSGlzdG9yeSwKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGQ6Om1vdmUoaGlzdG9yeV9kYXRh KSk7CistICAgICAgICAgICAgICB9fSwKKy0gICAgICAgICAgdXJsX2RhdGEuc2Vjb25kKTsKKysg ICAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxVUkxWaXNpdEFnZ3JlZ2F0ZTo6VGFiRGF0 YT4odXJsX2RhdGEuc2Vjb25kKSkgeworKyAgICAgICAgYXV0byYgdGFiX2RhdGEgPSBzdGQ6Omdl dDxVUkxWaXNpdEFnZ3JlZ2F0ZTo6VGFiRGF0YT4odXJsX2RhdGEuc2Vjb25kKTsKKysgICAgICAg IGFnZ3JlZ2F0ZS5mZXRjaGVyX2RhdGFfbWFwLmVtcGxhY2UoCisrICAgICAgICAgICAgdGFiX2Rh dGEubGFzdF9hY3RpdmVfdGFiLnNlc3Npb25fbmFtZS5oYXNfdmFsdWUoKQorKyAgICAgICAgICAg ICAgICA/IEZldGNoZXI6OmtTZXNzaW9uCisrICAgICAgICAgICAgICAgIDogRmV0Y2hlcjo6a1Rh Yk1vZGVsLAorKyAgICAgICAgICAgIHN0ZDo6bW92ZSh0YWJfZGF0YSkpOworKyAgICAgIH0KKysg ICAgICAvLyBUT0RPKGNyYnVnLmNvbS8zMzA1ODAxMDkpOiBBZGQgc3VwcG9ydCBmb3IgaGlzdG9y eSBmZXRjaGVyIGFuZAorKyAgICAgIC8vIGFzc29jaWF0ZWQgYWdncmVnYXRlIGRhdGEgdHlwZS4K KyAgICAgfQorICAgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25l bnRzL3Zpc2l0ZWRfdXJsX3JhbmtpbmcvcHVibGljL3VybF92aXNpdC5jYy5zdGRfdmFyaWFudCBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvdmlzaXRlZF91cmxfcmFua2luZy9wdWJs aWMvdXJsX3Zpc2l0LmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Zp c2l0ZWRfdXJsX3JhbmtpbmcvcHVibGljL3VybF92aXNpdC5jYy5zdGRfdmFyaWFudAkyMDI0LTA2 LTA0IDEyOjI5OjIwLjU5MzI0MDQ5NSArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYv Y29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5nL3B1YmxpYy91cmxfdmlzaXQuY2MJMjAyNC0w Ni0wNCAxMjoyOTo1Ny4yNTM5MjE5NzkgKzAyMDAKK0BAIC0zNywxNCArMzcsMTIgQEAgVVJMVmlz aXRBZ2dyZWdhdGUmIFVSTFZpc2l0QWdncmVnYXRlOjpvcAorIHN0ZDo6c2V0PGNvbnN0IEdVUkwq PiBVUkxWaXNpdEFnZ3JlZ2F0ZTo6R2V0QXNzb2NpYXRlZFVSTHMoKSBjb25zdCB7CisgICBzdGQ6 OnNldDxjb25zdCBHVVJMKj4gdXJscyA9IHt9OworICAgZm9yIChjb25zdCBhdXRvJiBmZXRjaGVy X2VudHJ5IDogZmV0Y2hlcl9kYXRhX21hcCkgeworLSAgICBzdGQ6OnZpc2l0KFVSTFZpc2l0VmFy aWFudEhlbHBlcnsKKy0gICAgICAgICAgICAgICAgICAgWyZ1cmxzXShjb25zdCBVUkxWaXNpdEFn Z3JlZ2F0ZTo6VGFiRGF0YSYgdGFiX2RhdGEpIHsKKy0gICAgICAgICAgICAgICAgICAgICB1cmxz Lmluc2VydCgmdGFiX2RhdGEubGFzdF9hY3RpdmVfdGFiLnZpc2l0LnVybCk7CistICAgICAgICAg ICAgICAgICAgIH0sCistICAgICAgICAgICAgICAgICAgIFsmdXJsc10oY29uc3QgVVJMVmlzaXRB Z2dyZWdhdGU6Okhpc3RvcnlEYXRhJiBoaXN0b3J5X2RhdGEpIHsKKy0gICAgICAgICAgICAgICAg ICAgICB1cmxzLmluc2VydCgmaGlzdG9yeV9kYXRhLmxhc3RfdmlzaXRlZC51cmxfcm93LnVybCgp KTsKKy0gICAgICAgICAgICAgICAgICAgfX0sCistICAgICAgICAgICAgICAgZmV0Y2hlcl9lbnRy eS5zZWNvbmQpOworKyAgICBpZiAoc3RkOjpob2xkc19hbHRlcm5hdGl2ZTxVUkxWaXNpdEFnZ3Jl Z2F0ZTo6VGFiRGF0YT4oCisrICAgICAgICAgICAgZmV0Y2hlcl9lbnRyeS5zZWNvbmQpKSB7Cisr ICAgICAgY29uc3QgYXV0byYgdGFiX2RhdGEgPQorKyAgICAgICAgICBzdGQ6OmdldDxVUkxWaXNp dEFnZ3JlZ2F0ZTo6VGFiRGF0YT4oZmV0Y2hlcl9lbnRyeS5zZWNvbmQpOworKyAgICAgIHVybHMu aW5zZXJ0KCZ0YWJfZGF0YS5sYXN0X2FjdGl2ZV90YWIudmlzaXQudXJsKTsKKysgICAgfQorICAg fQorICAgcmV0dXJuIHVybHM7CisgfQorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9j b21wb25lbnRzL3Zpc2l0ZWRfdXJsX3JhbmtpbmcvcHVibGljL3VybF92aXNpdC5oLnN0ZF92YXJp YW50IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5n L3B1YmxpYy91cmxfdmlzaXQuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50 cy92aXNpdGVkX3VybF9yYW5raW5nL3B1YmxpYy91cmxfdmlzaXQuaC5zdGRfdmFyaWFudAkyMDI0 LTA2LTA0IDExOjA1OjM5LjUwNTg0NzI0MSArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvY29tcG9uZW50cy92aXNpdGVkX3VybF9yYW5raW5nL3B1YmxpYy91cmxfdmlzaXQuaAkyMDI0 LTA2LTA0IDEzOjIyOjI2LjUxODAwNzc0OCArMDIwMAorQEAgLTgsNiArOCw3IEBACisgI2luY2x1 ZGUgPG1lbW9yeT4KKyAjaW5jbHVkZSA8b3B0aW9uYWw+CisgI2luY2x1ZGUgPHNldD4KKysjaW5j bHVkZSA8dmFyaWFudD4KKyAjaW5jbHVkZSA8dmVjdG9yPgorIAorICNpbmNsdWRlICJiYXNlL2Z1 bmN0aW9uYWwvY2FsbGJhY2suaCIKK0BAIC0xNDAsMTggKzE0MSw2IEBAIHN0cnVjdCBVUkxWaXNp dEFnZ3JlZ2F0ZSB7CisgICBib29sIGJvb2ttYXJrZWQgPSBmYWxzZTsKKyB9OworIAorLS8vIEhl bHBlciB0byB2aXNpdCBlYWNoIHZhcmlhbnQgb2YgVVJMVmlzaXRWYXJpYW50LgorLS8vIFVzYWdl OgorLS8vICAgc3RkOjp2aXNpdChVUkxWaXNpdFZhcmlhbnRIZWxwZXJ7CistLy8gICAgICAgICBb XShWYXJpYW50MSYgdmFyaWFudDEpIHt9LAorLS8vICAgICAgICAgW10oVmFyaWFudDImIHZhcmlh bnQxKSB7fSwKKy0vLyAgICAgICAgIFtdKFZhcmlhbnQzJiB2YXJpYW50MSkge30sCistLy8gICAg ICB2YXJpYW50X2RhdGEpOworLXRlbXBsYXRlIDxjbGFzcy4uLiBUcz4KKy1zdHJ1Y3QgVVJMVmlz aXRWYXJpYW50SGVscGVyIDogVHMuLi4geworLSAgdXNpbmcgVHM6Om9wZXJhdG9yKCkuLi47Cist fTsKKy0KKyB9ICAvLyBuYW1lc3BhY2UgdmlzaXRlZF91cmxfcmFua2luZworIAorICNlbmRpZiAg Ly8gQ09NUE9ORU5UU19WSVNJVEVEX1VSTF9SQU5LSU5HX1BVQkxJQ19VUkxfVklTSVRfSF8KCmRp ZmYgLS1naXQgYS9jaHJvbWl1bS0xMjYtZWw3LXN0ZGZvcm1hdC5wYXRjaCBiL2Nocm9taXVtLTEy Ni1lbDctc3RkZm9ybWF0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu LjgwYTJkYTgKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJvbWl1bS0xMjYtZWw3LXN0ZGZvcm1hdC5w YXRjaApAQCAtMCwwICsxLDIxIEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2No cm9tZS9yZW5kZXJlci9hY2Nlc3NpYmlsaXR5L3JlYWRfYW55dGhpbmdfYXBwX21vZGVsLmNjLnN0 ZGZvcm1hdCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9yZW5kZXJlci9hY2Nlc3NpYmls aXR5L3JlYWRfYW55dGhpbmdfYXBwX21vZGVsLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni9jaHJvbWUvcmVuZGVyZXIvYWNjZXNzaWJpbGl0eS9yZWFkX2FueXRoaW5nX2FwcF9tb2RlbC5j Yy5zdGRmb3JtYXQJMjAyNC0wNi0wMyAyMjo1MjoxOC41OTY5MzY3NjcgKzAyMDAKKysrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L2Nocm9tZS9yZW5kZXJlci9hY2Nlc3NpYmlsaXR5L3JlYWRfYW55 dGhpbmdfYXBwX21vZGVsLmNjCTIwMjQtMDYtMDMgMjM6MjY6NDYuMDI0NzM0NDUzICswMjAwCitA QCAtMTA1OSw3ICsxMDU5LDcgQEAgc3RkOjpzdHJpbmcgUmVhZEFueXRoaW5nQXBwTW9kZWw6Okdl dEh0bQorICAgICBpbnQzMl90IGhpZXJhcmNoaWNhbF9sZXZlbCA9CisgICAgICAgICBheF9ub2Rl LT5HZXRJbnRBdHRyaWJ1dGUoYXg6Om1vam9tOjpJbnRBdHRyaWJ1dGU6OmtIaWVyYXJjaGljYWxM ZXZlbCk7CisgICAgIGlmIChoaWVyYXJjaGljYWxfbGV2ZWwpIHsKKy0gICAgICByZXR1cm4gc3Rk Ojpmb3JtYXQoImh7fSIsIGhpZXJhcmNoaWNhbF9sZXZlbCk7CisrICAgICAgcmV0dXJuIHN0ZDo6 c3RyaW5nKCJoIiArIHN0ZDo6dG9fc3RyaW5nKGhpZXJhcmNoaWNhbF9sZXZlbCkpOworICAgICB9 CisgICB9CisgCitAQCAtMTE1OSw3ICsxMTU5LDcgQEAgc3RkOjpzdHJpbmcgUmVhZEFueXRoaW5n QXBwTW9kZWw6OkdldEhlYQorICAgaW50MzJfdCBoaWVyYXJjaGljYWxfbGV2ZWwgPQorICAgICAg IGF4X25vZGUtPkdldEludEF0dHJpYnV0ZShheDo6bW9qb206OkludEF0dHJpYnV0ZTo6a0hpZXJh cmNoaWNhbExldmVsKTsKKyAgIGlmIChoaWVyYXJjaGljYWxfbGV2ZWwpIHsKKy0gICAgcmV0dXJu IHN0ZDo6Zm9ybWF0KCJoe30iLCBoaWVyYXJjaGljYWxfbGV2ZWwpOworKyAgICByZXR1cm4gc3Rk OjpzdHJpbmcoImgiICsgc3RkOjp0b19zdHJpbmcoaGllcmFyY2hpY2FsX2xldmVsKSk7CisgICB9 CisgICByZXR1cm4gaHRtbF90YWc7CisgfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNi1lbDct dHlwZS1hbGlhcy5wYXRjaCBiL2Nocm9taXVtLTEyNi1lbDctdHlwZS1hbGlhcy5wYXRjaApuZXcg ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGU3YmMxCi0tLSAvZGV2L251bGwKKysr IGIvY2hyb21pdW0tMTI2LWVsNy10eXBlLWFsaWFzLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK2Rp ZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy9wbHVzX2FkZHJlc3Nlcy9w bHVzX2FkZHJlc3Nfc2VydmljZS5jYy5lbDctdHlwZS1hbGlhcyBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L2NvbXBvbmVudHMvcGx1c19hZGRyZXNzZXMvcGx1c19hZGRyZXNzX3NlcnZpY2UuY2MKKy0t LSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGx1c19hZGRyZXNzZXMvcGx1c19h ZGRyZXNzX3NlcnZpY2UuY2MuZWw3LXR5cGUtYWxpYXMJMjAyNC0wNS0yOSAxODowMTowOC4wMDAw MDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbXBvbmVudHMvcGx1c19h ZGRyZXNzZXMvcGx1c19hZGRyZXNzX3NlcnZpY2UuY2MJMjAyNC0wNi0wMiAxNzozMjoyOS45MTcx NTMyMDcgKzAyMDAKK0BAIC0xOTYsNyArMTk2LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlvbj4g UGx1c0FkZHJlc3NTZXJ2aQorICAgICBib29sIGlzX29mZl90aGVfcmVjb3JkLAorICAgICBzdGQ6 OnUxNnN0cmluZ192aWV3IGZvY3VzZWRfZmllbGRfdmFsdWUsCisgICAgIGF1dG9maWxsOjpBdXRv ZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlIHRyaWdnZXJfc291cmNlKSB7CistICB1c2luZyBl bnVtIGF1dG9maWxsOjpBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNlOworKyAgdXNpbmcg YXV0b2ZpbGw6OkF1dG9maWxsU3VnZ2VzdGlvblRyaWdnZXJTb3VyY2U7CisgICBpZiAoIVN1cHBv cnRzUGx1c0FkZHJlc3NlcyhsYXN0X2NvbW1pdHRlZF9wcmltYXJ5X21haW5fZnJhbWVfb3JpZ2lu LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXNfb2ZmX3RoZV9yZWNvcmQpKSB7Cisg ICAgIHJldHVybiB7fTsKK0BAIC0yMDcsNyArMjA3LDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlv bj4gUGx1c0FkZHJlc3NTZXJ2aQorICAgc3RkOjpvcHRpb25hbDxzdGQ6OnN0cmluZz4gbWF5YmVf YWRkcmVzcyA9CisgICAgICAgR2V0UGx1c0FkZHJlc3MoT3JpZ2luVG9GYWNldChsYXN0X2NvbW1p dHRlZF9wcmltYXJ5X21haW5fZnJhbWVfb3JpZ2luKSk7CisgICBpZiAobWF5YmVfYWRkcmVzcyA9 PSBzdGQ6Om51bGxvcHQpIHsKKy0gICAgaWYgKHRyaWdnZXJfc291cmNlICE9IGtNYW51YWxGYWxs YmFja1BsdXNBZGRyZXNzZXMgJiYKKysgICAgaWYgKHRyaWdnZXJfc291cmNlICE9IEF1dG9maWxs U3VnZ2VzdGlvblRyaWdnZXJTb3VyY2U6OmtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYK KyAgICAgICAgICFub3JtYWxpemVkX2ZpZWxkX3ZhbHVlLmVtcHR5KCkpIHsKKyAgICAgICByZXR1 cm4ge307CisgICAgIH0KK0BAIC0yMjIsNyArMjIyLDcgQEAgc3RkOjp2ZWN0b3I8U3VnZ2VzdGlv bj4gUGx1c0FkZHJlc3NTZXJ2aQorIAorICAgLy8gT25seSBzdWdnZXN0IGZpbGxpbmcgYSBwbHVz IGFkZHJlc3Mgd2hvc2UgcHJlZml4IG1hdGNoZXMgdGhlIGZpZWxkJ3MgdmFsdWUuCisgICBzdGQ6 OnUxNnN0cmluZyBhZGRyZXNzID0gYmFzZTo6VVRGOFRvVVRGMTYoKm1heWJlX2FkZHJlc3MpOwor LSAgaWYgKHRyaWdnZXJfc291cmNlICE9IGtNYW51YWxGYWxsYmFja1BsdXNBZGRyZXNzZXMgJiYK KysgIGlmICh0cmlnZ2VyX3NvdXJjZSAhPSBBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2VyU291cmNl OjprTWFudWFsRmFsbGJhY2tQbHVzQWRkcmVzc2VzICYmCisgICAgICAgIWFkZHJlc3Muc3RhcnRz X3dpdGgobm9ybWFsaXplZF9maWVsZF92YWx1ZSkpIHsKKyAgICAgcmV0dXJuIHt9OworICAgfQoK ZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNi1zcGxpdC10aHJlc2hvbGQtZm9yLXJlZy13aXRoLWhp bnQucGF0Y2ggYi9jaHJvbWl1bS0xMjYtc3BsaXQtdGhyZXNob2xkLWZvci1yZWctd2l0aC1oaW50 LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRhZTFmMjkKLS0tIC9k ZXYvbnVsbAorKysgYi9jaHJvbWl1bS0xMjYtc3BsaXQtdGhyZXNob2xkLWZvci1yZWctd2l0aC1o aW50LnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduLm1lIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvYnVpbGQvY29uZmlnL2NvbXBpbGVyL0JVSUxELmduCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3 OC4yNi9idWlsZC9jb25maWcvY29tcGlsZXIvQlVJTEQuZ24ubWUJMjAyNC0wNi0wMiAxNDowMjo1 Mi41MTY2MDI1NzQgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2J1aWxkL2NvbmZp Zy9jb21waWxlci9CVUlMRC5nbgkyMDI0LTA2LTAyIDE0OjE3OjI0LjUyNzUwMzU0MCArMDIwMAor QEAgLTU3NSwyNCArNTc1LDYgQEAgY29uZmlnKCJjb21waWxlciIpIHsKKyAgICAgICB9CisgICAg IH0KKyAKKy0gICAgIyBUT0RPKGNyYnVnLmNvbS80MDI4MzU5OCk6IFRoaXMgY2F1c2VzIGJpbmFy eSBzaXplIGdyb3d0aCBhbmQgcG90ZW50aWFsbHkKKy0gICAgIyBvdGhlciBwcm9ibGVtcy4KKy0g ICAgIyBUT0RPKGNyYnVnLmNvbS80MDI4NDkyNSk6IFRoaXMgaXNuJ3Qgc3VwcG9ydGVkIGJ5IENy b25ldCdzIG1haW5saW5lIGxsdm0gdmVyc2lvbi4KKy0gICAgaWYgKGRlZmF1bHRfdG9vbGNoYWlu ICE9ICIvL2J1aWxkL3Rvb2xjaGFpbi9jcm9zOnRhcmdldCIgJiYKKy0gICAgICAgICFsbHZtX2Fu ZHJvaWRfbWFpbmxpbmUpIHsKKy0gICAgICBjZmxhZ3MgKz0gWworLSAgICAgICAgIi1tbGx2bSIs CistICAgICAgICAiLXNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludD0wIiwKKy0gICAg ICBdCistICAgICAgaWYgKHVzZV90aGluX2x0byAmJiBpc19hX3RhcmdldF90b29sY2hhaW4pIHsK Ky0gICAgICAgIGlmIChpc193aW4pIHsKKy0gICAgICAgICAgbGRmbGFncyArPSBbICItbWxsdm06 LXNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludD0wIiBdCistICAgICAgICB9IGVsc2Ug eworLSAgICAgICAgICBsZGZsYWdzICs9IFsgIi1XbCwtbWxsdm0sLXNwbGl0LXRocmVzaG9sZC1m b3ItcmVnLXdpdGgtaGludD0wIiBdCistICAgICAgICB9CistICAgICAgfQorLSAgICB9CistCisg ICAgICMgVE9ETyhjcmJ1Zy5jb20vNDAxOTIyODcpOiBJbnZlc3RpZ2F0ZSB3aHkvaWYgdGhpcyBz aG91bGQgYmUgbmVlZGVkLgorICAgICBpZiAoaXNfd2luKSB7CisgICAgICAgY2ZsYWdzICs9IFsg Ii9jbGFuZzotZmZwLWNvbnRyYWN0PW9mZiIgXQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyNi1z eXN0ZW0tbGlic3RkYysrLnBhdGNoIGIvY2hyb21pdW0tMTI2LXN5c3RlbS1saWJzdGRjKysucGF0 Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzk2ZjQ4ZgotLS0gL2Rldi9u dWxsCisrKyBiL2Nocm9taXVtLTEyNi1zeXN0ZW0tbGlic3RkYysrLnBhdGNoCkBAIC0wLDAgKzEs NjY3IEBACitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2Jhc2UvYWxsb2NhdG9yL3Bh cnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9zdGFyc2Nhbi9zdGF0c19jb2xs ZWN0b3IuaC5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS9hbGxv Y2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL3N0YXJzY2FuL3N0 YXRzX2NvbGxlY3Rvci5oCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9iYXNlL2FsbG9jYXRv ci9wYXJ0aXRpb25fYWxsb2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2Mvc3RhcnNjYW4vc3RhdHNf Y29sbGVjdG9yLmguc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTI5IDE4OjAwOjQ1LjAwMDAwMDAw MCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvYmFzZS9hbGxvY2F0b3IvcGFydGl0 aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL3N0YXJzY2FuL3N0YXRzX2NvbGxlY3Rv ci5oCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTYyOTE3MTU0ICswMjAwCitAQCAtMTQsNyArMTQsNyBA QAorICNpbmNsdWRlIDx1bm9yZGVyZWRfbWFwPgorICNpbmNsdWRlIDx1dGlsaXR5PgorIAorLSNp bmNsdWRlICJwYXJ0aXRpb25fYWxsb2MvaW50ZXJuYWxfYWxsb2NhdG9yX2ZvcndhcmQuaCIKKysj aW5jbHVkZSAicGFydGl0aW9uX2FsbG9jL2ludGVybmFsX2FsbG9jYXRvci5oIgorICNpbmNsdWRl ICJwYXJ0aXRpb25fYWxsb2MvcGFydGl0aW9uX2FsbG9jX2Jhc2UvdGhyZWFkaW5nL3BsYXRmb3Jt X3RocmVhZC5oIgorICNpbmNsdWRlICJwYXJ0aXRpb25fYWxsb2MvcGFydGl0aW9uX2FsbG9jX2Jh c2UvdGltZS90aW1lLmgiCisgI2luY2x1ZGUgInBhcnRpdGlvbl9hbGxvYy9wYXJ0aXRpb25fYWxs b2NfY2hlY2suaCIKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dz ZXIvdWkvdGFicy90YWJfc3RyaXBfbW9kZWwuaC5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEy Ni4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdGFicy90YWJfc3RyaXBfbW9kZWwuaAorLS0t IGNocm9taXVtLTEyNi4wLjY0NzguMjYvY2hyb21lL2Jyb3dzZXIvdWkvdGFicy90YWJfc3RyaXBf bW9kZWwuaC5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMjkgMTg6MDA6NTkuMDAwMDAwMDAwICsw MjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jaHJvbWUvYnJvd3Nlci91aS90YWJzL3Rh Yl9zdHJpcF9tb2RlbC5oCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTYzOTE3MTc4ICswMjAwCitAQCAt MTIsNiArMTIsNyBAQAorICNpbmNsdWRlIDxtZW1vcnk+CisgI2luY2x1ZGUgPG9wdGlvbmFsPgor ICNpbmNsdWRlIDxzdHJpbmc+CisrI2luY2x1ZGUgPHZhcmlhbnQ+CisgI2luY2x1ZGUgPHZlY3Rv cj4KKyAKKyAjaW5jbHVkZSAiYmFzZS9jb250YWluZXJzL3NwYW4uaCIKK2RpZmYgLXVwIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5L3N1cmZhY2Vf YWdncmVnYXRvci5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29t cG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5L3N1cmZhY2VfYWdncmVnYXRvci5jYworLS0tIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5L3N1cmZh Y2VfYWdncmVnYXRvci5jYy5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMjkgMTg6MDE6MTIuMDAw MDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9jb21wb25lbnRzL3Zpei9z ZXJ2aWNlL2Rpc3BsYXkvc3VyZmFjZV9hZ2dyZWdhdG9yLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUu NTYzOTE3MTc4ICswMjAwCitAQCAtMjI5Niw3ICsyMjk2LDcgQEAgQWdncmVnYXRlZEZyYW1lIFN1 cmZhY2VBZ2dyZWdhdG9yOjpBZ2dyZQorICAgcm9vdF9zdXJmYWNlX2lkXyA9IHN1cmZhY2VfaWQ7 CisgCisgICAvLyBTdGFydCByZWNvcmRpbmcgbmV3IHN0YXRzIGZvciB0aGlzIGFnZ3JlZ2F0aW9u LgorLSAgc3RhdHNfLmVtcGxhY2UoKTsKKysgIHN0YXRzXyA9IEFnZ3JlZ2F0ZVN0YXRpc3RpY3N7 fTsKKyAKKyAgIGJhc2U6OkVsYXBzZWRUaW1lciBwcmV3YWxrX3RpbWVyOworICAgUmVzb2x2ZWRG cmFtZURhdGEqIHJlc29sdmVkX2ZyYW1lID0gR2V0UmVzb2x2ZWRGcmFtZShzdXJmYWNlX2lkKTsK K2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ZpcnN0X3Bh cnR5X3NldHMvZmlyc3RfcGFydHlfc2V0c19oYW5kbGVyX2RhdGFiYXNlX2hlbHBlci5jYy5zeXN0 ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ZpcnN0 X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0c19oYW5kbGVyX2RhdGFiYXNlX2hlbHBlci5jYwor LS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3Nl dHMvZmlyc3RfcGFydHlfc2V0c19oYW5kbGVyX2RhdGFiYXNlX2hlbHBlci5jYy5zeXN0ZW0tbGli c3RkYysrCTIwMjQtMDUtMjkgMTg6MDE6MTIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlfc2V0cy9maXJzdF9wYXJ0 eV9zZXRzX2hhbmRsZXJfZGF0YWJhc2VfaGVscGVyLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTYz OTE3MTc4ICswMjAwCitAQCAtMiw2ICsyLDcgQEAKKyAvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29k ZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBsaWNlbnNlIHRoYXQgY2FuIGJlCisgLy8gZm91 bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKyAKKysjaW5jbHVkZSA8b3B0aW9uYWw+CisgI2luY2x1 ZGUgImNvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldHNfaGFu ZGxlcl9kYXRhYmFzZV9oZWxwZXIuaCIKKyAKKyAjaW5jbHVkZSAiYmFzZS9jb250YWluZXJzL2Nv bnRhaW5zLmgiCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2NvbnRlbnQvc2Vydmlj ZXMvYXVjdGlvbl93b3JrbGV0L3JlYWxfdGltZV9yZXBvcnRpbmdfYmluZGluZ3MuaC5zeXN0ZW0t bGlic3RkYysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9zZXJ2aWNlcy9hdWN0aW9u X3dvcmtsZXQvcmVhbF90aW1lX3JlcG9ydGluZ19iaW5kaW5ncy5oCistLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi9jb250ZW50L3NlcnZpY2VzL2F1Y3Rpb25fd29ya2xldC9yZWFsX3RpbWVfcmVw b3J0aW5nX2JpbmRpbmdzLmguc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA2LTA0IDEzOjUyOjQzLjY4 OTU1MzQ1OSArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvY29udGVudC9zZXJ2aWNl cy9hdWN0aW9uX3dvcmtsZXQvcmVhbF90aW1lX3JlcG9ydGluZ19iaW5kaW5ncy5oCTIwMjQtMDYt MDQgMTM6NTI6MDEuMTE3Nzc4OTQzICswMjAwCitAQCAtMTIsNyArMTIsNyBAQAorICNpbmNsdWRl ICJjb250ZW50L2NvbW1vbi9jb250ZW50X2V4cG9ydC5oIgorICNpbmNsdWRlICJjb250ZW50L3Nl cnZpY2VzL2F1Y3Rpb25fd29ya2xldC9hdWN0aW9uX3Y4X2hlbHBlci5oIgorICNpbmNsdWRlICJj b250ZW50L3NlcnZpY2VzL2F1Y3Rpb25fd29ya2xldC9jb250ZXh0X3JlY3ljbGVyLmgiCistI2lu Y2x1ZGUgImNvbnRlbnQvc2VydmljZXMvYXVjdGlvbl93b3JrbGV0L3B1YmxpYy9tb2pvbS9yZWFs X3RpbWVfcmVwb3J0aW5nLm1vam9tLWZvcndhcmQuaCIKKysjaW5jbHVkZSAiY29udGVudC9zZXJ2 aWNlcy9hdWN0aW9uX3dvcmtsZXQvcHVibGljL21vam9tL3JlYWxfdGltZV9yZXBvcnRpbmcubW9q b20uaCIKKyAjaW5jbHVkZSAidjgvaW5jbHVkZS92OC1mb3J3YXJkLmgiCisgCisgbmFtZXNwYWNl IGF1Y3Rpb25fd29ya2xldCB7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L2dwdS9j b21tYW5kX2J1ZmZlci9zZXJ2aWNlL3NoYXJlZF9pbWFnZS9zaGFyZWRfaW1hZ2VfYmFja2luZy5o LnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9ncHUvY29tbWFuZF9idWZm ZXIvc2VydmljZS9zaGFyZWRfaW1hZ2Uvc2hhcmVkX2ltYWdlX2JhY2tpbmcuaAorLS0tIGNocm9t aXVtLTEyNi4wLjY0NzguMjYvZ3B1L2NvbW1hbmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdl L3NoYXJlZF9pbWFnZV9iYWNraW5nLmguc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTI5IDE4OjAx OjI2LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvZ3B1L2NvbW1h bmRfYnVmZmVyL3NlcnZpY2Uvc2hhcmVkX2ltYWdlL3NoYXJlZF9pbWFnZV9iYWNraW5nLmgJMjAy NC0wNi0wMiAyMzo1MToyNS41NjQ5MTcyMDIgKzAyMDAKK0BAIC0xMTEsNiArMTExLDI1IEBAIHVz aW5nIFZpZGVvRGVjb2RlRGV2aWNlID0gTWljcm9zb2Z0OjpXUkwKKyB1c2luZyBWaWRlb0RlY29k ZURldmljZSA9IHZvaWQqOworICNlbmRpZiAgLy8gQlVJTERGTEFHKElTX1dJTikKKyAKKytjbGFz cyBTY29wZWRXcml0ZVVNQSB7CisrIHB1YmxpYzoKKysgIFNjb3BlZFdyaXRlVU1BKCkgPSBkZWZh dWx0OworKworKyAgU2NvcGVkV3JpdGVVTUEoY29uc3QgU2NvcGVkV3JpdGVVTUEmKSA9IGRlbGV0 ZTsKKysgIFNjb3BlZFdyaXRlVU1BJiBvcGVyYXRvcj0oY29uc3QgU2NvcGVkV3JpdGVVTUEmKSA9 IGRlbGV0ZTsKKysKKysgIH5TY29wZWRXcml0ZVVNQSgpIHsKKysgICAgVU1BX0hJU1RPR1JBTV9C T09MRUFOKCJHUFUuU2hhcmVkSW1hZ2UuQ29udGVudENvbnN1bWVkIiwKKysgICAgICAgICAgICAg ICAgICAgICAgICAgIGNvbnRlbnRfY29uc3VtZWRfKTsKKysgIH0KKysKKysgIGJvb2wgY29udGVu dF9jb25zdW1lZCgpIGNvbnN0IHsgcmV0dXJuIGNvbnRlbnRfY29uc3VtZWRfOyB9CisrICB2b2lk IFNldENvbnN1bWVkKCkgeyBjb250ZW50X2NvbnN1bWVkXyA9IHRydWU7IH0KKysKKysgcHJpdmF0 ZToKKysgIGJvb2wgY29udGVudF9jb25zdW1lZF8gPSBmYWxzZTsKKyt9OworKworIC8vIFJlcHJl c2VudHMgdGhlIGFjdHVhbCBzdG9yYWdlIChHTCB0ZXh0dXJlLCBWa0ltYWdlLCBHTUIpIGZvciBh IFNoYXJlZEltYWdlLgorIC8vIFNob3VsZCBub3QgYmUgYWNjZXNzZWQgZGlyZWN0bHksIGluc3Rl YWQgaXMgYWNjZXNzZWQgdGhyb3VnaCBhCisgLy8gU2hhcmVkSW1hZ2VSZXByZXNlbnRhdGlvbi4K K0BAIC0zODQsMjUgKzQwMyw2IEBAIGNsYXNzIEdQVV9HTEVTMl9FWFBPUlQgU2hhcmVkSW1hZ2VC YWNraW4KKyAgIG11dGFibGUgc3RkOjpvcHRpb25hbDxiYXNlOjpMb2NrPiBsb2NrXzsKKyAKKyAg cHJpdmF0ZToKKy0gIGNsYXNzIFNjb3BlZFdyaXRlVU1BIHsKKy0gICBwdWJsaWM6CistICAgIFNj b3BlZFdyaXRlVU1BKCkgPSBkZWZhdWx0OworLQorLSAgICBTY29wZWRXcml0ZVVNQShjb25zdCBT Y29wZWRXcml0ZVVNQSYpID0gZGVsZXRlOworLSAgICBTY29wZWRXcml0ZVVNQSYgb3BlcmF0b3I9 KGNvbnN0IFNjb3BlZFdyaXRlVU1BJikgPSBkZWxldGU7CistCistICAgIH5TY29wZWRXcml0ZVVN QSgpIHsKKy0gICAgICBVTUFfSElTVE9HUkFNX0JPT0xFQU4oIkdQVS5TaGFyZWRJbWFnZS5Db250 ZW50Q29uc3VtZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250ZW50X2NvbnN1 bWVkXyk7CistICAgIH0KKy0KKy0gICAgYm9vbCBjb250ZW50X2NvbnN1bWVkKCkgY29uc3QgeyBy ZXR1cm4gY29udGVudF9jb25zdW1lZF87IH0KKy0gICAgdm9pZCBTZXRDb25zdW1lZCgpIHsgY29u dGVudF9jb25zdW1lZF8gPSB0cnVlOyB9CistCistICAgcHJpdmF0ZToKKy0gICAgYm9vbCBjb250 ZW50X2NvbnN1bWVkXyA9IGZhbHNlOworLSAgfTsKKy0KKyAgIGNvbnN0IE1haWxib3ggbWFpbGJv eF87CisgICBjb25zdCB2aXo6OlNoYXJlZEltYWdlRm9ybWF0IGZvcm1hdF87CisgICBjb25zdCBn Zng6OlNpemUgc2l6ZV87CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L21vam8vcHVi bGljL2NwcC9iaW5kaW5ncy9saWIvbXVsdGlwbGV4X3JvdXRlci5jYy5zeXN0ZW0tbGlic3RkYysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2xpYi9tdWx0 aXBsZXhfcm91dGVyLmNjCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi9tb2pvL3B1YmxpYy9j cHAvYmluZGluZ3MvbGliL211bHRpcGxleF9yb3V0ZXIuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0 LTA1LTI5IDE4OjAxOjMzLjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0Nzgu MjYvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2xpYi9tdWx0aXBsZXhfcm91dGVyLmNjCTIwMjQt MDYtMDIgMjM6NTE6MjUuNTY0OTE3MjAyICswMjAwCitAQCAtODkzLDcgKzg5Myw3IEBAIGJvb2wg TXVsdGlwbGV4Um91dGVyOjpFeGNsdXNpdmVTeW5jV2FpdEYKKyAgIERDSEVDSyghZXhjbHVzaXZl X3N5bmNfd2FpdF8pOworIAorICAgc2NvcGVkX3JlZnB0cjxNdWx0aXBsZXhSb3V0ZXI+IGtlZXBf YWxpdmUodGhpcyk7CistICBleGNsdXNpdmVfc3luY193YWl0Xy5lbXBsYWNlKCk7CisrICBleGNs dXNpdmVfc3luY193YWl0XyA9IEV4Y2x1c2l2ZVN5bmNXYWl0SW5mb3t9OworICAgZXhjbHVzaXZl X3N5bmNfd2FpdF8tPmludGVyZmFjZV9pZCA9IGludGVyZmFjZV9pZDsKKyAgIGV4Y2x1c2l2ZV9z eW5jX3dhaXRfLT5yZXF1ZXN0X2lkID0gcmVxdWVzdF9pZDsKKyAgIHdoaWxlICghZXhjbHVzaXZl X3N5bmNfd2FpdF8tPmZpbmlzaGVkKSB7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2 L3RoaXJkX3BhcnR5L2JsaW5rL2NvbW1vbi9pbnRlcmVzdF9ncm91cC9hdWN0aW9uX2NvbmZpZ19t b2pvbV90cmFpdHMuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3Ro aXJkX3BhcnR5L2JsaW5rL2NvbW1vbi9pbnRlcmVzdF9ncm91cC9hdWN0aW9uX2NvbmZpZ19tb2pv bV90cmFpdHMuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5r L2NvbW1vbi9pbnRlcmVzdF9ncm91cC9hdWN0aW9uX2NvbmZpZ19tb2pvbV90cmFpdHMuY2Muc3lz dGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTI5IDE4OjAxOjM3LjAwMDAwMDAwMCArMDIwMAorKysrIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvY29tbW9uL2ludGVyZXN0X2dy b3VwL2F1Y3Rpb25fY29uZmlnX21vam9tX3RyYWl0cy5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjU2 NTkxNzIyNSArMDIwMAorQEAgLTIyNSw4ICsyMjUsNiBAQCBib29sIFN0cnVjdFRyYWl0czxibGlu azo6bW9qb206OkF1Y3Rpb25BCisgICAgICAgIWRhdGEuUmVhZEFsbEJ1eWVyc1ByaW9yaXR5U2ln bmFscygmb3V0LT5hbGxfYnV5ZXJzX3ByaW9yaXR5X3NpZ25hbHMpIHx8CisgICAgICAgIWRhdGEu UmVhZEF1Y3Rpb25SZXBvcnRCdXllcktleXMoJm91dC0+YXVjdGlvbl9yZXBvcnRfYnV5ZXJfa2V5 cykgfHwKKyAgICAgICAhZGF0YS5SZWFkQXVjdGlvblJlcG9ydEJ1eWVycygmb3V0LT5hdWN0aW9u X3JlcG9ydF9idXllcnMpIHx8CistICAgICAgIWRhdGEuUmVhZEF1Y3Rpb25SZXBvcnRCdXllckRl YnVnTW9kZUNvbmZpZygKKy0gICAgICAgICAgJm91dC0+YXVjdGlvbl9yZXBvcnRfYnV5ZXJfZGVi dWdfbW9kZV9jb25maWcpIHx8CisgICAgICAgIWRhdGEuUmVhZFJlcXVpcmVkU2VsbGVyQ2FwYWJp bGl0aWVzKAorICAgICAgICAgICAmb3V0LT5yZXF1aXJlZF9zZWxsZXJfY2FwYWJpbGl0aWVzKSB8 fAorICAgICAgICFkYXRhLlJlYWRSZXF1ZXN0ZWRTaXplKCZvdXQtPnJlcXVlc3RlZF9zaXplKSB8 fAorZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9jb3JlL2xvYWRlci9oaXN0b3J5X2l0ZW0uY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbG9hZGVyL2hp c3RvcnlfaXRlbS5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvY29yZS9sb2FkZXIvaGlzdG9yeV9pdGVtLmNjLnN5c3RlbS1saWJzdGRjKysJ MjAyNC0wNS0yOSAxODowMTozOS4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMjYuMC42 NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbG9hZGVyL2hpc3RvcnlfaXRl bS5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjU2NTkxNzIyNSArMDIwMAorQEAgLTE4MiwyNiArMTgy LDI2IEBAIHZvaWQgSGlzdG9yeUl0ZW06OlNldFJlZmVycmVyUG9saWN5KG5ldHcKKyAKKyB2b2lk IEhpc3RvcnlJdGVtOjpTZXRWaXN1YWxWaWV3cG9ydFNjcm9sbE9mZnNldChjb25zdCBTY3JvbGxP ZmZzZXQmIG9mZnNldCkgeworICAgaWYgKCF2aWV3X3N0YXRlXykKKy0gICAgdmlld19zdGF0ZV8g PSBzdGQ6Om1ha2Vfb3B0aW9uYWw8Vmlld1N0YXRlPigpOworKyAgICB2aWV3X3N0YXRlXyA9IGJs aW5rOjpIaXN0b3J5SXRlbTo6Vmlld1N0YXRle307CisgICB2aWV3X3N0YXRlXy0+dmlzdWFsX3Zp ZXdwb3J0X3Njcm9sbF9vZmZzZXRfID0gb2Zmc2V0OworIH0KKyAKKyB2b2lkIEhpc3RvcnlJdGVt OjpTZXRTY3JvbGxPZmZzZXQoY29uc3QgU2Nyb2xsT2Zmc2V0JiBvZmZzZXQpIHsKKyAgIGlmICgh dmlld19zdGF0ZV8pCistICAgIHZpZXdfc3RhdGVfID0gc3RkOjptYWtlX29wdGlvbmFsPFZpZXdT dGF0ZT4oKTsKKysgICAgdmlld19zdGF0ZV8gPSBibGluazo6SGlzdG9yeUl0ZW06OlZpZXdTdGF0 ZXt9OworICAgdmlld19zdGF0ZV8tPnNjcm9sbF9vZmZzZXRfID0gb2Zmc2V0OworIH0KKyAKKyB2 b2lkIEhpc3RvcnlJdGVtOjpTZXRQYWdlU2NhbGVGYWN0b3IoZmxvYXQgc2NhbGVfZmFjdG9yKSB7 CisgICBpZiAoIXZpZXdfc3RhdGVfKQorLSAgICB2aWV3X3N0YXRlXyA9IHN0ZDo6bWFrZV9vcHRp b25hbDxWaWV3U3RhdGU+KCk7CisrICAgIHZpZXdfc3RhdGVfID0gYmxpbms6Okhpc3RvcnlJdGVt OjpWaWV3U3RhdGV7fTsKKyAgIHZpZXdfc3RhdGVfLT5wYWdlX3NjYWxlX2ZhY3Rvcl8gPSBzY2Fs ZV9mYWN0b3I7CisgfQorIAorIHZvaWQgSGlzdG9yeUl0ZW06OlNldFNjcm9sbEFuY2hvckRhdGEo CisgICAgIGNvbnN0IFNjcm9sbEFuY2hvckRhdGEmIHNjcm9sbF9hbmNob3JfZGF0YSkgeworICAg aWYgKCF2aWV3X3N0YXRlXykKKy0gICAgdmlld19zdGF0ZV8gPSBzdGQ6Om1ha2Vfb3B0aW9uYWw8 Vmlld1N0YXRlPigpOworKyAgICB2aWV3X3N0YXRlXyA9IGJsaW5rOjpIaXN0b3J5SXRlbTo6Vmll d1N0YXRle307CisgICB2aWV3X3N0YXRlXy0+c2Nyb2xsX2FuY2hvcl9kYXRhXyA9IHNjcm9sbF9h bmNob3JfZGF0YTsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvcGFnZS9wYWdlX3BvcHVwX2NvbnRyb2xsZXIuaC5z eXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsv cmVuZGVyZXIvY29yZS9wYWdlL3BhZ2VfcG9wdXBfY29udHJvbGxlci5oCistLS0gY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhZ2UvcGFnZV9w b3B1cF9jb250cm9sbGVyLmguc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA2LTA0IDE3OjAxOjA1LjA2 NjQ2OTYxMyArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvY29yZS9wYWdlL3BhZ2VfcG9wdXBfY29udHJvbGxlci5oCTIwMjQtMDYtMDQg MTY6NTE6NDEuMDc2ODY5NzQzICswMjAwCitAQCAtMzEsNiArMzEsNyBAQAorICNpZm5kZWYgVEhJ UkRfUEFSVFlfQkxJTktfUkVOREVSRVJfQ09SRV9QQUdFX1BBR0VfUE9QVVBfQ09OVFJPTExFUl9I XworICNkZWZpbmUgVEhJUkRfUEFSVFlfQkxJTktfUkVOREVSRVJfQ09SRV9QQUdFX1BBR0VfUE9Q VVBfQ09OVFJPTExFUl9IXworIAorKyNpbmNsdWRlIDxvcHRpb25hbD4KKyAjaW5jbHVkZSAidGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vYmluZGluZ3Mvc2NyaXB0X3dyYXBwYWJs ZS5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFw L2NvbGxlY3Rpb25fc3VwcG9ydC9oZWFwX3ZlY3Rvci5oIgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0 eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9oZWFwL2dhcmJhZ2VfY29sbGVjdGVkLmgiCitkaWZm IC11cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2Nv cmUvcGFpbnQvZnJhZ21lbnRfZGF0YV9pdGVyYXRvci5oLnN5c3RlbS1saWJzdGRjKysgY2hyb21p dW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L2Zy YWdtZW50X2RhdGFfaXRlcmF0b3IuaAorLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9wYWludC9mcmFnbWVudF9kYXRhX2l0ZXJhdG9yLmgu c3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTI5IDE4OjAxOjQwLjAwMDAwMDAwMCArMDIwMAorKysr IGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9w YWludC9mcmFnbWVudF9kYXRhX2l0ZXJhdG9yLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41NjU5MTcy MjUgKzAyMDAKK0BAIC0yMiw3ICsyMiw3IEBAIGNsYXNzIEZyYWdtZW50RGF0YUl0ZXJhdG9yQmFz ZSB7CisgCisgIHB1YmxpYzoKKyAgIGV4cGxpY2l0IEZyYWdtZW50RGF0YUl0ZXJhdG9yQmFzZShI ZWFkJiBoZWFkKSA6IGZyYWdtZW50X2hlYWRfKGhlYWQpIHt9CistICBleHBsaWNpdCBGcmFnbWVu dERhdGFJdGVyYXRvckJhc2UobnVsbHB0cl90KSB7fQorKyAgZXhwbGljaXQgRnJhZ21lbnREYXRh SXRlcmF0b3JCYXNlKHN0ZDo6bnVsbHB0cl90KSB7fQorIAorICAgRGF0YSogR2V0RnJhZ21lbnRE YXRhKCkgY29uc3QgeworICAgICByZXR1cm4gIUlzRG9uZSgpID8gJmZyYWdtZW50X2hlYWRfLmF0 KGlkeF8pIDogbnVsbHB0cjsKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9lbmNvZGluZy90ZXh0X2RlY29kZXIuaC5zeXN0 ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvbW9kdWxlcy9lbmNvZGluZy90ZXh0X2RlY29kZXIuaAorLS0tIGNocm9taXVtLTEyNi4w LjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvbW9kdWxlcy9lbmNvZGluZy90ZXh0 X2RlY29kZXIuaC5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDYtMDMgMjM6MTQ6MDMuMTM4NzI0ODAy ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9tb2R1bGVzL2VuY29kaW5nL3RleHRfZGVjb2Rlci5oCTIwMjQtMDYtMDMgMjM6MTQ6NDEu Mzk1NjU0NDM1ICswMjAwCitAQCAtMzEsNiArMzEsNyBAQAorICNpZm5kZWYgVEhJUkRfUEFSVFlf QkxJTktfUkVOREVSRVJfTU9EVUxFU19FTkNPRElOR19URVhUX0RFQ09ERVJfSF8KKyAjZGVmaW5l IFRISVJEX1BBUlRZX0JMSU5LX1JFTkRFUkVSX01PRFVMRVNfRU5DT0RJTkdfVEVYVF9ERUNPREVS X0hfCisgCisrI2luY2x1ZGUgPG9wdGlvbmFsPgorICNpbmNsdWRlIDxtZW1vcnk+CisgCisgI2lu Y2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvdjhfdHlw ZWRlZnMuaCIKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxp bmsvcmVuZGVyZXIvbW9kdWxlcy9tZWRpYV9jb250cm9scy9lbGVtZW50cy9tZWRpYV9jb250cm9s X3RpbWVsaW5lX2VsZW1lbnQuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL21vZHVsZXMvbWVkaWFfY29udHJvbHMvZWxl bWVudHMvbWVkaWFfY29udHJvbF90aW1lbGluZV9lbGVtZW50LmNjCistLS0gY2hyb21pdW0tMTI2 LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL21lZGlhX2NvbnRy b2xzL2VsZW1lbnRzL21lZGlhX2NvbnRyb2xfdGltZWxpbmVfZWxlbWVudC5jYy5zeXN0ZW0tbGli c3RkYysrCTIwMjQtMDUtMjkgMTg6MDE6NDAuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0t MTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9tb2R1bGVzL21lZGlhX2Nv bnRyb2xzL2VsZW1lbnRzL21lZGlhX2NvbnRyb2xfdGltZWxpbmVfZWxlbWVudC5jYwkyMDI0LTA2 LTAyIDIzOjUxOjI1LjU2NjkxNzI1MCArMDIwMAorQEAgLTEwMiw3ICsxMDIsNyBAQCB2b2lkIE1l ZGlhQ29udHJvbFRpbWVsaW5lRWxlbWVudDo6VXBkYXRlCisgdm9pZCBNZWRpYUNvbnRyb2xUaW1l bGluZUVsZW1lbnQ6OlNldFBvc2l0aW9uKGRvdWJsZSBjdXJyZW50X3RpbWUsCisgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgc3VwcHJlc3NfYXJpYSkg eworICAgaWYgKGlzX2xpdmVfICYmICFsaXZlX2FuY2hvcl90aW1lXyAmJiBjdXJyZW50X3RpbWUg IT0gMCkgeworLSAgICBsaXZlX2FuY2hvcl90aW1lXy5lbXBsYWNlKCk7CisrICAgIGxpdmVfYW5j aG9yX3RpbWVfID0gTGl2ZUFuY2hvclRpbWV7fTsKKyAgICAgbGl2ZV9hbmNob3JfdGltZV8tPmNs b2NrX3RpbWVfID0gYmFzZTo6VGltZVRpY2tzOjpOb3coKTsKKyAgICAgbGl2ZV9hbmNob3JfdGlt ZV8tPm1lZGlhX3RpbWVfID0gTWVkaWFFbGVtZW50KCkuY3VycmVudFRpbWUoKTsKKyAgIH0KK2Rp ZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIv cGxhdGZvcm0vZm9udHMvc2hhcGluZy9ydW5fc2VnbWVudGVyLmguc3lzdGVtLWxpYnN0ZGMrKyBj aHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3Jt L2ZvbnRzL3NoYXBpbmcvcnVuX3NlZ21lbnRlci5oCistLS0gY2hyb21pdW0tMTI2LjAuNjQ3OC4y Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9zaGFwaW5nL3J1bl9z ZWdtZW50ZXIuaC5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDYtMDQgMTY6NTI6MTUuMjY4NTE2MjU1 ICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9mb250cy9zaGFwaW5nL3J1bl9zZWdtZW50ZXIuaAkyMDI0LTA2LTA0IDE2 OjU2OjIzLjkwNjcwNTMzNyArMDIwMAorQEAgLTcsNiArNyw3IEBACisgCisgI2luY2x1ZGUgPHVu aWNvZGUvdXNjcmlwdC5oPgorICNpbmNsdWRlIDxtZW1vcnk+CisrI2luY2x1ZGUgPG9wdGlvbmFs PgorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9m b250X29yaWVudGF0aW9uLmgiCisgI2luY2x1ZGUgInRoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVy L3BsYXRmb3JtL2ZvbnRzL29yaWVudGF0aW9uX2l0ZXJhdG9yLmgiCisgI2luY2x1ZGUgInRoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL3NjcmlwdF9ydW5faXRlcmF0b3Iu aCIKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvYmxpbmsvcmVu ZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvcGFpbnQvZ2VvbWV0cnlfbWFwcGVyX3RyYW5zZm9ybV9j YWNoZS5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvcGFpbnQvZ2VvbWV0cnlfbWFwcGVy X3RyYW5zZm9ybV9jYWNoZS5jYworLS0tIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZ3JhcGhpY3MvcGFpbnQvZ2VvbWV0cnlfbWFwcGVy X3RyYW5zZm9ybV9jYWNoZS5jYy5zeXN0ZW0tbGlic3RkYysrCTIwMjQtMDUtMjkgMTg6MDE6NDEu MDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9wbGF0Zm9ybS9ncmFwaGljcy9wYWludC9nZW9tZXRyeV9tYXBwZXJfdHJh bnNmb3JtX2NhY2hlLmNjCTIwMjQtMDYtMDIgMjM6NTE6MjUuNTY2OTE3MjUwICswMjAwCitAQCAt NzAsNyArNzAsNyBAQCB2b2lkIEdlb21ldHJ5TWFwcGVyVHJhbnNmb3JtQ2FjaGU6OlVwZGF0Cisg ICAgIHRvXzJkX3RyYW5zbGF0aW9uX3Jvb3RfICs9IHRyYW5zbGF0aW9uOworIAorICAgICBpZiAo cGFyZW50LnBsYW5lX3Jvb3RfdHJhbnNmb3JtXykgeworLSAgICAgIHBsYW5lX3Jvb3RfdHJhbnNm b3JtXy5lbXBsYWNlKCk7CisrICAgICAgcGxhbmVfcm9vdF90cmFuc2Zvcm1fID0gUGxhbmVSb290 VHJhbnNmb3Jte307CisgICAgICAgcGxhbmVfcm9vdF90cmFuc2Zvcm1fLT5wbGFuZV9yb290ID0g cGFyZW50LnBsYW5lX3Jvb3QoKTsKKyAgICAgICBwbGFuZV9yb290X3RyYW5zZm9ybV8tPnRvX3Bs YW5lX3Jvb3QgPSBwYXJlbnQudG9fcGxhbmVfcm9vdCgpOworICAgICAgIHBsYW5lX3Jvb3RfdHJh bnNmb3JtXy0+dG9fcGxhbmVfcm9vdC5UcmFuc2xhdGUodHJhbnNsYXRpb24ueCgpLAorQEAgLTk4 LDcgKzk4LDcgQEAgdm9pZCBHZW9tZXRyeU1hcHBlclRyYW5zZm9ybUNhY2hlOjpVcGRhdAorICAg ICAgIC8vIGFzIHRoZSAyZCB0cmFuc2xhdGlvbiByb290LgorICAgICAgIHBsYW5lX3Jvb3RfdHJh bnNmb3JtXyA9IHN0ZDo6bnVsbG9wdDsKKyAgICAgfSBlbHNlIHsKKy0gICAgICBwbGFuZV9yb290 X3RyYW5zZm9ybV8uZW1wbGFjZSgpOworKyAgICAgIHBsYW5lX3Jvb3RfdHJhbnNmb3JtXyA9IFBs YW5lUm9vdFRyYW5zZm9ybXt9OworICAgICAgIHBsYW5lX3Jvb3RfdHJhbnNmb3JtXy0+cGxhbmVf cm9vdCA9IHBhcmVudC5wbGFuZV9yb290KCk7CisgICAgICAgcGxhbmVfcm9vdF90cmFuc2Zvcm1f LT50b19wbGFuZV9yb290Lk1ha2VJZGVudGl0eSgpOworICAgICAgIHBhcmVudC5BcHBseVRvUGxh bmVSb290KHBsYW5lX3Jvb3RfdHJhbnNmb3JtXy0+dG9fcGxhbmVfcm9vdCk7CitAQCAtMTQwLDcg KzE0MCw3IEBAIHZvaWQgR2VvbWV0cnlNYXBwZXJUcmFuc2Zvcm1DYWNoZTo6VXBkYXQKKyAgIHBh cmVudF9ub2RlLT5VcGRhdGVTY3JlZW5UcmFuc2Zvcm0oKTsKKyAgIGNvbnN0IGF1dG8mIHBhcmVu dCA9IHBhcmVudF9ub2RlLT5HZXRUcmFuc2Zvcm1DYWNoZSgpOworIAorLSAgc2NyZWVuX3RyYW5z Zm9ybV8uZW1wbGFjZSgpOworKyAgc2NyZWVuX3RyYW5zZm9ybV8gPSBTY3JlZW5UcmFuc2Zvcm17 fTsKKyAgIHBhcmVudC5BcHBseVRvU2NyZWVuKHNjcmVlbl90cmFuc2Zvcm1fLT50b19zY3JlZW4p OworICAgaWYgKG5vZGUuRmxhdHRlbnNJbmhlcml0ZWRUcmFuc2Zvcm0oKSkKKyAgICAgc2NyZWVu X3RyYW5zZm9ybV8tPnRvX3NjcmVlbi5GbGF0dGVuKCk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjYu MC42NDc4LjI2L3RoaXJkX3BhcnR5L3J1eS9zcmMvcnV5L3Byb2ZpbGVyL2luc3RydW1lbnRhdGlv bi5oLnN5c3RlbS1saWJzdGRjKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS9y dXkvc3JjL3J1eS9wcm9maWxlci9pbnN0cnVtZW50YXRpb24uaAorLS0tIGNocm9taXVtLTEyNi4w LjY0NzguMjYvdGhpcmRfcGFydHkvcnV5L3NyYy9ydXkvcHJvZmlsZXIvaW5zdHJ1bWVudGF0aW9u Lmguc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTI5IDE4OjAzOjAxLjAwMDAwMDAwMCArMDIwMAor KysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvcnV5L3NyYy9ydXkvcHJvZmls ZXIvaW5zdHJ1bWVudGF0aW9uLmgJMjAyNC0wNi0wMiAyMzo1MToyNS41NjY5MTcyNTAgKzAyMDAK K0BAIC0xOSw2ICsxOSw3IEBAIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorICNpZmRl ZiBSVVlfUFJPRklMRVIKKyAjaW5jbHVkZSA8Y3N0ZGlvPgorICNpbmNsdWRlIDxtdXRleD4KKysj aW5jbHVkZSA8c3RyaW5nPgorICNpbmNsdWRlIDx2ZWN0b3I+CisgI2VuZGlmCisgCitkaWZmIC11 cCBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3RoaXJkX3BhcnR5L3dlYnJ0Yy9tb2R1bGVzL2Nvbmdl c3Rpb25fY29udHJvbGxlci9nb29nX2NjL2xvc3NfYmFzZWRfYndlX3YyLmNjLnN5c3RlbS1saWJz dGRjKysgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi90aGlyZF9wYXJ0eS93ZWJydGMvbW9kdWxlcy9j b25nZXN0aW9uX2NvbnRyb2xsZXIvZ29vZ19jYy9sb3NzX2Jhc2VkX2J3ZV92Mi5jYworLS0tIGNo cm9taXVtLTEyNi4wLjY0NzguMjYvdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlv bl9jb250cm9sbGVyL2dvb2dfY2MvbG9zc19iYXNlZF9id2VfdjIuY2Muc3lzdGVtLWxpYnN0ZGMr KwkyMDI0LTA1LTI5IDE4OjAzOjQ4LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4w LjY0NzguMjYvdGhpcmRfcGFydHkvd2VicnRjL21vZHVsZXMvY29uZ2VzdGlvbl9jb250cm9sbGVy L2dvb2dfY2MvbG9zc19iYXNlZF9id2VfdjIuY2MJMjAyNC0wNi0wMiAyMzo1MToyNS41Njc5MTcy NzMgKzAyMDAKK0BAIC01NDksNyArNTQ5LDcgQEAgYWJzbDo6b3B0aW9uYWw8TG9zc0Jhc2VkQndl VjI6OkNvbmZpZz4gTAorICAgaWYgKCFlbmFibGVkLkdldCgpKSB7CisgICAgIHJldHVybiBjb25m aWc7CisgICB9CistICBjb25maWcuZW1wbGFjZSgpOworKyAgY29uZmlnID0gQ29uZmlne307Cisg ICBjb25maWctPmJhbmR3aWR0aF9yYW1wdXBfdXBwZXJfYm91bmRfZmFjdG9yID0KKyAgICAgICBi YW5kd2lkdGhfcmFtcHVwX3VwcGVyX2JvdW5kX2ZhY3Rvci5HZXQoKTsKKyAgIGNvbmZpZy0+YmFu ZHdpZHRoX3JhbXB1cF91cHBlcl9ib3VuZF9mYWN0b3JfaW5faG9sZCA9CitkaWZmIC11cCBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L3VpL2dmeC94L2dlbmVyYXRlZF9wcm90b3MvcmFuZHIuY2Muc3lz dGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2dmeC94L2dlbmVyYXRlZF9w cm90b3MvcmFuZHIuY2MKKy0tLSBjaHJvbWl1bS0xMjYuMC42NDc4LjI2L3VpL2dmeC94L2dlbmVy YXRlZF9wcm90b3MvcmFuZHIuY2Muc3lzdGVtLWxpYnN0ZGMrKwkyMDI0LTA1LTI5IDE4OjAyOjMy LjAwMDAwMDAwMCArMDIwMAorKysrIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvZ2Z4L3gvZ2Vu ZXJhdGVkX3Byb3Rvcy9yYW5kci5jYwkyMDI0LTA2LTAyIDIzOjUxOjI1LjU2ODkxNzI5NyArMDIw MAorQEAgLTMwNSw3ICszMDUsNyBAQCB2b2lkIFJlYWRFdmVudDxSYW5kUjo6Tm90aWZ5RXZlbnQ+ KFJhbmRSCisgICAvLyBkYXRhCisgICBhdXRvIGRhdGFfZXhwciA9IHN1YkNvZGU7CisgICBpZiAo Q2FzZUVxKGRhdGFfZXhwciwgUmFuZFI6Ok5vdGlmeTo6Q3J0Y0NoYW5nZSkpIHsKKy0gICAgZGF0 YS5jYy5lbXBsYWNlKCk7CisrICAgIGRhdGEuY2MgPSBSYW5kUjo6Tm90aWZ5RXZlbnQ6OkNje307 CisgICAgIGF1dG8mIHRpbWVzdGFtcCA9ICgqZGF0YS5jYykudGltZXN0YW1wOworICAgICBhdXRv JiB3aW5kb3cgPSAoKmRhdGEuY2MpLndpbmRvdzsKKyAgICAgYXV0byYgY3J0YyA9ICgqZGF0YS5j YykuY3J0YzsKK0BAIC0zNDksNyArMzQ5LDcgQEAgdm9pZCBSZWFkRXZlbnQ8UmFuZFI6Ok5vdGlm eUV2ZW50PihSYW5kUgorICAgICBSZWFkKCZoZWlnaHQsICZidWYpOworICAgfQorICAgaWYgKENh c2VFcShkYXRhX2V4cHIsIFJhbmRSOjpOb3RpZnk6Ok91dHB1dENoYW5nZSkpIHsKKy0gICAgZGF0 YS5vYy5lbXBsYWNlKCk7CisrICAgIGRhdGEub2MgPSBSYW5kUjo6Tm90aWZ5RXZlbnQ6Ok9je307 CisgICAgIGF1dG8mIHRpbWVzdGFtcCA9ICgqZGF0YS5vYykudGltZXN0YW1wOworICAgICBhdXRv JiBjb25maWdfdGltZXN0YW1wID0gKCpkYXRhLm9jKS5jb25maWdfdGltZXN0YW1wOworICAgICBh dXRvJiB3aW5kb3cgPSAoKmRhdGEub2MpLndpbmRvdzsKK0BAIC0zOTQsNyArMzk0LDcgQEAgdm9p ZCBSZWFkRXZlbnQ8UmFuZFI6Ok5vdGlmeUV2ZW50PihSYW5kUgorICAgICBzdWJwaXhlbF9vcmRl ciA9IHN0YXRpY19jYXN0PFJlbmRlcjo6U3ViUGl4ZWw+KHRtcDYpOworICAgfQorICAgaWYgKENh c2VFcShkYXRhX2V4cHIsIFJhbmRSOjpOb3RpZnk6Ok91dHB1dFByb3BlcnR5KSkgeworLSAgICBk YXRhLm9wLmVtcGxhY2UoKTsKKysgICAgZGF0YS5vcCA9IFJhbmRSOjpOb3RpZnlFdmVudDo6T3B7 fTsKKyAgICAgYXV0byYgd2luZG93ID0gKCpkYXRhLm9wKS53aW5kb3c7CisgICAgIGF1dG8mIG91 dHB1dCA9ICgqZGF0YS5vcCkub3V0cHV0OworICAgICBhdXRvJiBhdG9tID0gKCpkYXRhLm9wKS5h dG9tOworQEAgLTQyMiw3ICs0MjIsNyBAQCB2b2lkIFJlYWRFdmVudDxSYW5kUjo6Tm90aWZ5RXZl bnQ+KFJhbmRSCisgICAgIFBhZCgmYnVmLCAxMSk7CisgICB9CisgICBpZiAoQ2FzZUVxKGRhdGFf ZXhwciwgUmFuZFI6Ok5vdGlmeTo6UHJvdmlkZXJDaGFuZ2UpKSB7CistICAgIGRhdGEucGMuZW1w bGFjZSgpOworKyAgICBkYXRhLnBjID0gUmFuZFI6Ok5vdGlmeUV2ZW50OjpQY3t9OworICAgICBh dXRvJiB0aW1lc3RhbXAgPSAoKmRhdGEucGMpLnRpbWVzdGFtcDsKKyAgICAgYXV0byYgd2luZG93 ID0gKCpkYXRhLnBjKS53aW5kb3c7CisgICAgIGF1dG8mIHByb3ZpZGVyID0gKCpkYXRhLnBjKS5w cm92aWRlcjsKK0BAIC00NDAsNyArNDQwLDcgQEAgdm9pZCBSZWFkRXZlbnQ8UmFuZFI6Ok5vdGlm eUV2ZW50PihSYW5kUgorICAgICBQYWQoJmJ1ZiwgMTYpOworICAgfQorICAgaWYgKENhc2VFcShk YXRhX2V4cHIsIFJhbmRSOjpOb3RpZnk6OlByb3ZpZGVyUHJvcGVydHkpKSB7CistICAgIGRhdGEu cHAuZW1wbGFjZSgpOworKyAgICBkYXRhLnBwID0gUmFuZFI6Ok5vdGlmeUV2ZW50OjpQcHt9Owor ICAgICBhdXRvJiB3aW5kb3cgPSAoKmRhdGEucHApLndpbmRvdzsKKyAgICAgYXV0byYgcHJvdmlk ZXIgPSAoKmRhdGEucHApLnByb3ZpZGVyOworICAgICBhdXRvJiBhdG9tID0gKCpkYXRhLnBwKS5h dG9tOworQEAgLTQ2Niw3ICs0NjYsNyBAQCB2b2lkIFJlYWRFdmVudDxSYW5kUjo6Tm90aWZ5RXZl bnQ+KFJhbmRSCisgICAgIFBhZCgmYnVmLCAxMSk7CisgICB9CisgICBpZiAoQ2FzZUVxKGRhdGFf ZXhwciwgUmFuZFI6Ok5vdGlmeTo6UmVzb3VyY2VDaGFuZ2UpKSB7CistICAgIGRhdGEucmMuZW1w bGFjZSgpOworKyAgICBkYXRhLnJjID0gUmFuZFI6Ok5vdGlmeUV2ZW50OjpSY3t9OworICAgICBh dXRvJiB0aW1lc3RhbXAgPSAoKmRhdGEucmMpLnRpbWVzdGFtcDsKKyAgICAgYXV0byYgd2luZG93 ID0gKCpkYXRhLnJjKS53aW5kb3c7CisgCitAQCAtNDgwLDcgKzQ4MCw3IEBAIHZvaWQgUmVhZEV2 ZW50PFJhbmRSOjpOb3RpZnlFdmVudD4oUmFuZFIKKyAgICAgUGFkKCZidWYsIDIwKTsKKyAgIH0K KyAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBSYW5kUjo6Tm90aWZ5OjpMZWFzZSkpIHsKKy0gICAg ZGF0YS5sYy5lbXBsYWNlKCk7CisrICAgIGRhdGEubGMgPSBSYW5kUjo6Tm90aWZ5RXZlbnQ6Okxj e307CisgICAgIGF1dG8mIHRpbWVzdGFtcCA9ICgqZGF0YS5sYykudGltZXN0YW1wOworICAgICBh dXRvJiB3aW5kb3cgPSAoKmRhdGEubGMpLndpbmRvdzsKKyAgICAgYXV0byYgbGVhc2UgPSAoKmRh dGEubGMpLmxlYXNlOworZGlmZiAtdXAgY2hyb21pdW0tMTI2LjAuNjQ3OC4yNi91aS9nZngveC9n ZW5lcmF0ZWRfcHJvdG9zL3hpbnB1dC5jYy5zeXN0ZW0tbGlic3RkYysrIGNocm9taXVtLTEyNi4w LjY0NzguMjYvdWkvZ2Z4L3gvZ2VuZXJhdGVkX3Byb3Rvcy94aW5wdXQuY2MKKy0tLSBjaHJvbWl1 bS0xMjYuMC42NDc4LjI2L3VpL2dmeC94L2dlbmVyYXRlZF9wcm90b3MveGlucHV0LmNjLnN5c3Rl bS1saWJzdGRjKysJMjAyNC0wNS0yOSAxODowMjozMi4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJv bWl1bS0xMjYuMC42NDc4LjI2L3VpL2dmeC94L2dlbmVyYXRlZF9wcm90b3MveGlucHV0LmNjCTIw MjQtMDYtMDIgMjM6NTE6MjUuNTY5OTE3MzIxICswMjAwCitAQCAtNTYwLDcgKzU2MCw3IEBAIHZv aWQgUmVhZEV2ZW50PElucHV0OjpEZXZpY2VDaGFuZ2VkRXZlbnQKKyAgICAgICAvLyBkYXRhCisg ICAgICAgYXV0byBkYXRhX2V4cHIgPSB0eXBlOworICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHBy LCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpLZXkpKSB7CistICAgICAgICBkYXRhLmtleS5lbXBs YWNlKCk7CisrICAgICAgICBkYXRhLmtleSA9IElucHV0OjpEZXZpY2VDbGFzczo6S2V5e307Cisg ICAgICAgICB1aW50MTZfdCBudW1fa2V5c3t9OworICAgICAgICAgYXV0byYga2V5cyA9ICgqZGF0 YS5rZXkpLmtleXM7CisgCitAQCAtNTc1LDcgKzU3NSw3IEBAIHZvaWQgUmVhZEV2ZW50PElucHV0 OjpEZXZpY2VDaGFuZ2VkRXZlbnQKKyAgICAgICAgIH0KKyAgICAgICB9CisgICAgICAgaWYgKENh c2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6OkJ1dHRvbikpIHsKKy0gICAg ICAgIGRhdGEuYnV0dG9uLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEuYnV0dG9uID0gSW5wdXQ6 OkRldmljZUNsYXNzOjpCdXR0b257fTsKKyAgICAgICAgIHVpbnQxNl90IG51bV9idXR0b25ze307 CisgICAgICAgICBhdXRvJiBzdGF0ZSA9ICgqZGF0YS5idXR0b24pLnN0YXRlOworICAgICAgICAg YXV0byYgbGFiZWxzID0gKCpkYXRhLmJ1dHRvbikubGFiZWxzOworQEAgLTU5OCw3ICs1OTgsNyBA QCB2b2lkIFJlYWRFdmVudDxJbnB1dDo6RGV2aWNlQ2hhbmdlZEV2ZW50CisgICAgICAgICB9Cisg ICAgICAgfQorICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NU eXBlOjpWYWx1YXRvcikpIHsKKy0gICAgICAgIGRhdGEudmFsdWF0b3IuZW1wbGFjZSgpOworKyAg ICAgICAgZGF0YS52YWx1YXRvciA9IElucHV0OjpEZXZpY2VDbGFzczo6VmFsdWF0b3J7fTsKKyAg ICAgICAgIGF1dG8mIG51bWJlciA9ICgqZGF0YS52YWx1YXRvcikubnVtYmVyOworICAgICAgICAg YXV0byYgbGFiZWwgPSAoKmRhdGEudmFsdWF0b3IpLmxhYmVsOworICAgICAgICAgYXV0byYgbWlu ID0gKCpkYXRhLnZhbHVhdG9yKS5taW47CitAQCAtNjYxLDcgKzY2MSw3IEBAIHZvaWQgUmVhZEV2 ZW50PElucHV0OjpEZXZpY2VDaGFuZ2VkRXZlbnQKKyAgICAgICAgIFBhZCgmYnVmLCAzKTsKKyAg ICAgICB9CisgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5 cGU6OlNjcm9sbCkpIHsKKy0gICAgICAgIGRhdGEuc2Nyb2xsLmVtcGxhY2UoKTsKKysgICAgICAg IGRhdGEuc2Nyb2xsID0gSW5wdXQ6OkRldmljZUNsYXNzOjpTY3JvbGx7fTsKKyAgICAgICAgIGF1 dG8mIG51bWJlciA9ICgqZGF0YS5zY3JvbGwpLm51bWJlcjsKKyAgICAgICAgIGF1dG8mIHNjcm9s bF90eXBlID0gKCpkYXRhLnNjcm9sbCkuc2Nyb2xsX3R5cGU7CisgICAgICAgICBhdXRvJiBmbGFn cyA9ICgqZGF0YS5zY3JvbGwpLmZsYWdzOworQEAgLTY5Niw3ICs2OTYsNyBAQCB2b2lkIFJlYWRF dmVudDxJbnB1dDo6RGV2aWNlQ2hhbmdlZEV2ZW50CisgICAgICAgICB9CisgICAgICAgfQorICAg ICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpUb3VjaCkp IHsKKy0gICAgICAgIGRhdGEudG91Y2guZW1wbGFjZSgpOworKyAgICAgICAgZGF0YS50b3VjaCA9 IElucHV0OjpEZXZpY2VDbGFzczo6VG91Y2h7fTsKKyAgICAgICAgIGF1dG8mIG1vZGUgPSAoKmRh dGEudG91Y2gpLm1vZGU7CisgICAgICAgICBhdXRvJiBudW1fdG91Y2hlcyA9ICgqZGF0YS50b3Vj aCkubnVtX3RvdWNoZXM7CisgCitAQCAtNzA5LDcgKzcwOSw3IEBAIHZvaWQgUmVhZEV2ZW50PElu cHV0OjpEZXZpY2VDaGFuZ2VkRXZlbnQKKyAgICAgICAgIFJlYWQoJm51bV90b3VjaGVzLCAmYnVm KTsKKyAgICAgICB9CisgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VD bGFzc1R5cGU6Okdlc3R1cmUpKSB7CistICAgICAgICBkYXRhLmdlc3R1cmUuZW1wbGFjZSgpOwor KyAgICAgICAgZGF0YS5nZXN0dXJlID0gSW5wdXQ6OkRldmljZUNsYXNzOjpHZXN0dXJle307Cisg ICAgICAgICBhdXRvJiBudW1fdG91Y2hlcyA9ICgqZGF0YS5nZXN0dXJlKS5udW1fdG91Y2hlczsK KyAKKyAgICAgICAgIC8vIG51bV90b3VjaGVzCitAQCAtMjE4Nyw3ICsyMTg3LDcgQEAgc3RkOjp1 bmlxdWVfcHRyPElucHV0OjpMaXN0SW5wdXREZXZpY2VzUgorICAgICAgIC8vIGluZm8KKyAgICAg ICBhdXRvIGluZm9fZXhwciA9IGNsYXNzX2lkOworICAgICAgIGlmIChDYXNlRXEoaW5mb19leHBy LCBJbnB1dDo6SW5wdXRDbGFzczo6S2V5KSkgeworLSAgICAgICAgaW5mby5rZXkuZW1wbGFjZSgp OworKyAgICAgICAgaW5mby5rZXkgPSBJbnB1dDo6SW5wdXRJbmZvOjpLZXl7fTsKKyAgICAgICAg IGF1dG8mIG1pbl9rZXljb2RlID0gKCppbmZvLmtleSkubWluX2tleWNvZGU7CisgICAgICAgICBh dXRvJiBtYXhfa2V5Y29kZSA9ICgqaW5mby5rZXkpLm1heF9rZXljb2RlOworICAgICAgICAgYXV0 byYgbnVtX2tleXMgPSAoKmluZm8ua2V5KS5udW1fa2V5czsKK0BAIC0yMjA1LDE0ICsyMjA1LDE0 IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6TGlzdElucHV0RGV2aWNlc1IKKyAgICAgICAgIFBh ZCgmYnVmLCAyKTsKKyAgICAgICB9CisgICAgICAgaWYgKENhc2VFcShpbmZvX2V4cHIsIElucHV0 OjpJbnB1dENsYXNzOjpCdXR0b24pKSB7CistICAgICAgICBpbmZvLmJ1dHRvbi5lbXBsYWNlKCk7 CisrICAgICAgICBpbmZvLmJ1dHRvbiA9IElucHV0OjpJbnB1dEluZm86OkJ1dHRvbnt9OworICAg ICAgICAgYXV0byYgbnVtX2J1dHRvbnMgPSAoKmluZm8uYnV0dG9uKS5udW1fYnV0dG9uczsKKyAK KyAgICAgICAgIC8vIG51bV9idXR0b25zCisgICAgICAgICBSZWFkKCZudW1fYnV0dG9ucywgJmJ1 Zik7CisgICAgICAgfQorICAgICAgIGlmIChDYXNlRXEoaW5mb19leHByLCBJbnB1dDo6SW5wdXRD bGFzczo6VmFsdWF0b3IpKSB7CistICAgICAgICBpbmZvLnZhbHVhdG9yLmVtcGxhY2UoKTsKKysg ICAgICAgIGluZm8udmFsdWF0b3IgPSBJbnB1dDo6SW5wdXRJbmZvOjpWYWx1YXRvcnt9OworICAg ICAgICAgdWludDhfdCBheGVzX2xlbnt9OworICAgICAgICAgYXV0byYgbW9kZSA9ICgqaW5mby52 YWx1YXRvcikubW9kZTsKKyAgICAgICAgIGF1dG8mIG1vdGlvbl9zaXplID0gKCppbmZvLnZhbHVh dG9yKS5tb3Rpb25fc2l6ZTsKK0BAIC0zODE4LDcgKzM4MTgsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8 SW5wdXQ6OkdldEZlZWRiYWNrQ29udHJvCisgICAgICAgLy8gZGF0YQorICAgICAgIGF1dG8gZGF0 YV9leHByID0gY2xhc3NfaWQ7CisgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpG ZWVkYmFja0NsYXNzOjpLZXlib2FyZCkpIHsKKy0gICAgICAgIGRhdGEua2V5Ym9hcmQuZW1wbGFj ZSgpOworKyAgICAgICAgZGF0YS5rZXlib2FyZCA9IHgxMTo6SW5wdXQ6OkZlZWRiYWNrU3RhdGU6 OktleWJvYXJke307CisgICAgICAgICBhdXRvJiBwaXRjaCA9ICgqZGF0YS5rZXlib2FyZCkucGl0 Y2g7CisgICAgICAgICBhdXRvJiBkdXJhdGlvbiA9ICgqZGF0YS5rZXlib2FyZCkuZHVyYXRpb247 CisgICAgICAgICBhdXRvJiBsZWRfbWFzayA9ICgqZGF0YS5rZXlib2FyZCkubGVkX21hc2s7CitA QCAtMzg1OSw3ICszODU5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXRGZWVkYmFja0Nv bnRybworICAgICAgICAgfQorICAgICAgIH0KKyAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwg SW5wdXQ6OkZlZWRiYWNrQ2xhc3M6OlBvaW50ZXIpKSB7CistICAgICAgICBkYXRhLnBvaW50ZXIu ZW1wbGFjZSgpOworKyAgICAgICAgZGF0YS5wb2ludGVyID0geDExOjpJbnB1dDo6RmVlZGJhY2tT dGF0ZTo6UG9pbnRlcnt9OworICAgICAgICAgYXV0byYgYWNjZWxfbnVtID0gKCpkYXRhLnBvaW50 ZXIpLmFjY2VsX251bTsKKyAgICAgICAgIGF1dG8mIGFjY2VsX2Rlbm9tID0gKCpkYXRhLnBvaW50 ZXIpLmFjY2VsX2Rlbm9tOworICAgICAgICAgYXV0byYgdGhyZXNob2xkID0gKCpkYXRhLnBvaW50 ZXIpLnRocmVzaG9sZDsKK0BAIC0zODc3LDcgKzM4NzcsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5w dXQ6OkdldEZlZWRiYWNrQ29udHJvCisgICAgICAgICBSZWFkKCZ0aHJlc2hvbGQsICZidWYpOwor ICAgICAgIH0KKyAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkZlZWRiYWNrQ2xh c3M6OlN0cmluZykpIHsKKy0gICAgICAgIGRhdGEuc3RyaW5nLmVtcGxhY2UoKTsKKysgICAgICAg IGRhdGEuc3RyaW5nID0geDExOjpJbnB1dDo6RmVlZGJhY2tTdGF0ZTo6U3RyaW5ne307CisgICAg ICAgICBhdXRvJiBtYXhfc3ltYm9scyA9ICgqZGF0YS5zdHJpbmcpLm1heF9zeW1ib2xzOworICAg ICAgICAgdWludDE2X3QgbnVtX2tleXN5bXN7fTsKKyAgICAgICAgIGF1dG8mIGtleXN5bXMgPSAo KmRhdGEuc3RyaW5nKS5rZXlzeW1zOworQEAgLTM4OTYsNyArMzg5Niw3IEBAIHN0ZDo6dW5pcXVl X3B0cjxJbnB1dDo6R2V0RmVlZGJhY2tDb250cm8KKyAgICAgICAgIH0KKyAgICAgICB9CisgICAg ICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpGZWVkYmFja0NsYXNzOjpJbnRlZ2VyKSkg eworLSAgICAgICAgZGF0YS5pbnRlZ2VyLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEuaW50ZWdl ciA9IHgxMTo6SW5wdXQ6OkZlZWRiYWNrU3RhdGU6OkludGVnZXJ7fTsKKyAgICAgICAgIGF1dG8m IHJlc29sdXRpb24gPSAoKmRhdGEuaW50ZWdlcikucmVzb2x1dGlvbjsKKyAgICAgICAgIGF1dG8m IG1pbl92YWx1ZSA9ICgqZGF0YS5pbnRlZ2VyKS5taW5fdmFsdWU7CisgICAgICAgICBhdXRvJiBt YXhfdmFsdWUgPSAoKmRhdGEuaW50ZWdlcikubWF4X3ZhbHVlOworQEAgLTM5MTEsNyArMzkxMSw3 IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6R2V0RmVlZGJhY2tDb250cm8KKyAgICAgICAgIFJl YWQoJm1heF92YWx1ZSwgJmJ1Zik7CisgICAgICAgfQorICAgICAgIGlmIChDYXNlRXEoZGF0YV9l eHByLCBJbnB1dDo6RmVlZGJhY2tDbGFzczo6TGVkKSkgeworLSAgICAgICAgZGF0YS5sZWQuZW1w bGFjZSgpOworKyAgICAgICAgZGF0YS5sZWQgPSB4MTE6OklucHV0OjpGZWVkYmFja1N0YXRlOjpM ZWR7fTsKKyAgICAgICAgIGF1dG8mIGxlZF9tYXNrID0gKCpkYXRhLmxlZCkubGVkX21hc2s7Cisg ICAgICAgICBhdXRvJiBsZWRfdmFsdWVzID0gKCpkYXRhLmxlZCkubGVkX3ZhbHVlczsKKyAKK0BA IC0zOTIyLDcgKzM5MjIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OkdldEZlZWRiYWNrQ29u dHJvCisgICAgICAgICBSZWFkKCZsZWRfdmFsdWVzLCAmYnVmKTsKKyAgICAgICB9CisgICAgICAg aWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpGZWVkYmFja0NsYXNzOjpCZWxsKSkgeworLSAg ICAgICAgZGF0YS5iZWxsLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEuYmVsbCA9IHgxMTo6SW5w dXQ6OkZlZWRiYWNrU3RhdGU6OkJlbGx7fTsKKyAgICAgICAgIGF1dG8mIHBlcmNlbnQgPSAoKmRh dGEuYmVsbCkucGVyY2VudDsKKyAgICAgICAgIGF1dG8mIHBpdGNoID0gKCpkYXRhLmJlbGwpLnBp dGNoOworICAgICAgICAgYXV0byYgZHVyYXRpb24gPSAoKmRhdGEuYmVsbCkuZHVyYXRpb247CitA QCAtNDczNSw3ICs0NzM1LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpRdWVyeURldmljZVN0 YXRlUgorICAgICAgIC8vIGRhdGEKKyAgICAgICBhdXRvIGRhdGFfZXhwciA9IGNsYXNzX2lkOwor ICAgICAgIGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6SW5wdXRDbGFzczo6S2V5KSkgewor LSAgICAgICAgZGF0YS5rZXkuZW1wbGFjZSgpOworKyAgICAgICAgZGF0YS5rZXkgPSB4MTE6Oklu cHV0OjpJbnB1dFN0YXRlOjpLZXl7fTsKKyAgICAgICAgIGF1dG8mIG51bV9rZXlzID0gKCpkYXRh LmtleSkubnVtX2tleXM7CisgICAgICAgICBhdXRvJiBrZXlzID0gKCpkYXRhLmtleSkua2V5czsK KyAKK0BAIC00NzUyLDcgKzQ3NTIsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OlF1ZXJ5RGV2 aWNlU3RhdGVSCisgICAgICAgICB9CisgICAgICAgfQorICAgICAgIGlmIChDYXNlRXEoZGF0YV9l eHByLCBJbnB1dDo6SW5wdXRDbGFzczo6QnV0dG9uKSkgeworLSAgICAgICAgZGF0YS5idXR0b24u ZW1wbGFjZSgpOworKyAgICAgICAgZGF0YS5idXR0b24gPSB4MTE6OklucHV0OjpJbnB1dFN0YXRl OjpCdXR0b257fTsKKyAgICAgICAgIGF1dG8mIG51bV9idXR0b25zID0gKCpkYXRhLmJ1dHRvbiku bnVtX2J1dHRvbnM7CisgICAgICAgICBhdXRvJiBidXR0b25zID0gKCpkYXRhLmJ1dHRvbikuYnV0 dG9uczsKKyAKK0BAIC00NzY5LDcgKzQ3NjksNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OlF1 ZXJ5RGV2aWNlU3RhdGVSCisgICAgICAgICB9CisgICAgICAgfQorICAgICAgIGlmIChDYXNlRXEo ZGF0YV9leHByLCBJbnB1dDo6SW5wdXRDbGFzczo6VmFsdWF0b3IpKSB7CistICAgICAgICBkYXRh LnZhbHVhdG9yLmVtcGxhY2UoKTsKKysgICAgICAgIGRhdGEudmFsdWF0b3IgPSB4MTE6OklucHV0 OjpJbnB1dFN0YXRlOjpWYWx1YXRvcnt9OworICAgICAgICAgdWludDhfdCBudW1fdmFsdWF0b3Jz e307CisgICAgICAgICBhdXRvJiBtb2RlID0gKCpkYXRhLnZhbHVhdG9yKS5tb2RlOworICAgICAg ICAgYXV0byYgdmFsdWF0b3JzID0gKCpkYXRhLnZhbHVhdG9yKS52YWx1YXRvcnM7CitAQCAtNTAz OSw3ICs1MDM5LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXREZXZpY2VDb250cm9sUgor ICAgICAvLyBkYXRhCisgICAgIGF1dG8gZGF0YV9leHByID0gY29udHJvbF9pZDsKKyAgICAgaWYg KENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDb250cm9sOjpyZXNvbHV0aW9uKSkgewor LSAgICAgIGRhdGEucmVzb2x1dGlvbi5lbXBsYWNlKCk7CisrICAgICAgZGF0YS5yZXNvbHV0aW9u ID0geDExOjpJbnB1dDo6RGV2aWNlU3RhdGU6OlJlc29sdXRpb257fTsKKyAgICAgICB1aW50MzJf dCBudW1fdmFsdWF0b3Jze307CisgICAgICAgYXV0byYgcmVzb2x1dGlvbl92YWx1ZXMgPSAoKmRh dGEucmVzb2x1dGlvbikucmVzb2x1dGlvbl92YWx1ZXM7CisgICAgICAgYXV0byYgcmVzb2x1dGlv bl9taW4gPSAoKmRhdGEucmVzb2x1dGlvbikucmVzb2x1dGlvbl9taW47CitAQCAtNTA3MCw3ICs1 MDcwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpHZXREZXZpY2VDb250cm9sUgorICAgICAg IH0KKyAgICAgfQorICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNvbnRy b2w6OmFic19jYWxpYikpIHsKKy0gICAgICBkYXRhLmFic19jYWxpYi5lbXBsYWNlKCk7CisrICAg ICAgZGF0YS5hYnNfY2FsaWIgPSB4MTE6OklucHV0OjpEZXZpY2VTdGF0ZTo6QWJzQ2FsaWJ7fTsK KyAgICAgICBhdXRvJiBtaW5feCA9ICgqZGF0YS5hYnNfY2FsaWIpLm1pbl94OworICAgICAgIGF1 dG8mIG1heF94ID0gKCpkYXRhLmFic19jYWxpYikubWF4X3g7CisgICAgICAgYXV0byYgbWluX3kg PSAoKmRhdGEuYWJzX2NhbGliKS5taW5feTsKK0BAIC01MTA1LDcgKzUxMDUsNyBAQCBzdGQ6OnVu aXF1ZV9wdHI8SW5wdXQ6OkdldERldmljZUNvbnRyb2xSCisgICAgICAgUmVhZCgmYnV0dG9uX3Ro cmVzaG9sZCwgJmJ1Zik7CisgICAgIH0KKyAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0 OjpEZXZpY2VDb250cm9sOjpjb3JlKSkgeworLSAgICAgIGRhdGEuY29yZS5lbXBsYWNlKCk7Cisr ICAgICAgZGF0YS5jb3JlID0geDExOjpJbnB1dDo6RGV2aWNlU3RhdGU6OkNvcmV7fTsKKyAgICAg ICBhdXRvJiBzdGF0dXMgPSAoKmRhdGEuY29yZSkuc3RhdHVzOworICAgICAgIGF1dG8mIGlzY29y ZSA9ICgqZGF0YS5jb3JlKS5pc2NvcmU7CisgCitAQCAtNTExOSw3ICs1MTE5LDcgQEAgc3RkOjp1 bmlxdWVfcHRyPElucHV0OjpHZXREZXZpY2VDb250cm9sUgorICAgICAgIFBhZCgmYnVmLCAyKTsK KyAgICAgfQorICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNvbnRyb2w6 OmVuYWJsZSkpIHsKKy0gICAgICBkYXRhLmVuYWJsZS5lbXBsYWNlKCk7CisrICAgICAgZGF0YS5l bmFibGUgPSB4MTE6OklucHV0OjpEZXZpY2VTdGF0ZTo6RW5hYmxle307CisgICAgICAgYXV0byYg ZW5hYmxlID0gKCpkYXRhLmVuYWJsZSkuZW5hYmxlOworIAorICAgICAgIC8vIGVuYWJsZQorQEAg LTUxMjksNyArNTEyOSw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6R2V0RGV2aWNlQ29udHJv bFIKKyAgICAgICBQYWQoJmJ1ZiwgMyk7CisgICAgIH0KKyAgICAgaWYgKENhc2VFcShkYXRhX2V4 cHIsIElucHV0OjpEZXZpY2VDb250cm9sOjphYnNfYXJlYSkpIHsKKy0gICAgICBkYXRhLmFic19h cmVhLmVtcGxhY2UoKTsKKysgICAgICBkYXRhLmFic19hcmVhID0geDExOjpJbnB1dDo6RGV2aWNl U3RhdGU6OkFic0FyZWF7fTsKKyAgICAgICBhdXRvJiBvZmZzZXRfeCA9ICgqZGF0YS5hYnNfYXJl YSkub2Zmc2V0X3g7CisgICAgICAgYXV0byYgb2Zmc2V0X3kgPSAoKmRhdGEuYWJzX2FyZWEpLm9m ZnNldF95OworICAgICAgIGF1dG8mIHdpZHRoID0gKCpkYXRhLmFic19hcmVhKS53aWR0aDsKK0BA IC02NjEwLDcgKzY2MTAsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OlhJUXVlcnlEZXZpY2VS ZXBsCisgICAgICAgICAgIC8vIGRhdGEKKyAgICAgICAgICAgYXV0byBkYXRhX2V4cHIgPSB0eXBl OworICAgICAgICAgICBpZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlw ZTo6S2V5KSkgeworLSAgICAgICAgICAgIGRhdGEua2V5LmVtcGxhY2UoKTsKKysgICAgICAgICAg ICBkYXRhLmtleSA9IElucHV0OjpEZXZpY2VDbGFzczo6S2V5e307CisgICAgICAgICAgICAgdWlu dDE2X3QgbnVtX2tleXN7fTsKKyAgICAgICAgICAgICBhdXRvJiBrZXlzID0gKCpkYXRhLmtleSku a2V5czsKKyAKK0BAIC02NjI1LDcgKzY2MjUsNyBAQCBzdGQ6OnVuaXF1ZV9wdHI8SW5wdXQ6OlhJ UXVlcnlEZXZpY2VSZXBsCisgICAgICAgICAgICAgfQorICAgICAgICAgICB9CisgICAgICAgICAg IGlmIChDYXNlRXEoZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpCdXR0b24pKSB7 CistICAgICAgICAgICAgZGF0YS5idXR0b24uZW1wbGFjZSgpOworKyAgICAgICAgICAgIGRhdGEu YnV0dG9uID0gSW5wdXQ6OkRldmljZUNsYXNzOjpCdXR0b257fTsKKyAgICAgICAgICAgICB1aW50 MTZfdCBudW1fYnV0dG9uc3t9OworICAgICAgICAgICAgIGF1dG8mIHN0YXRlID0gKCpkYXRhLmJ1 dHRvbikuc3RhdGU7CisgICAgICAgICAgICAgYXV0byYgbGFiZWxzID0gKCpkYXRhLmJ1dHRvbiku bGFiZWxzOworQEAgLTY2NDgsNyArNjY0OCw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxJbnB1dDo6WElR dWVyeURldmljZVJlcGwKKyAgICAgICAgICAgICB9CisgICAgICAgICAgIH0KKyAgICAgICAgICAg aWYgKENhc2VFcShkYXRhX2V4cHIsIElucHV0OjpEZXZpY2VDbGFzc1R5cGU6OlZhbHVhdG9yKSkg eworLSAgICAgICAgICAgIGRhdGEudmFsdWF0b3IuZW1wbGFjZSgpOworKyAgICAgICAgICAgIGRh dGEudmFsdWF0b3IgPSBJbnB1dDo6RGV2aWNlQ2xhc3M6OlZhbHVhdG9ye307CisgICAgICAgICAg ICAgYXV0byYgbnVtYmVyID0gKCpkYXRhLnZhbHVhdG9yKS5udW1iZXI7CisgICAgICAgICAgICAg YXV0byYgbGFiZWwgPSAoKmRhdGEudmFsdWF0b3IpLmxhYmVsOworICAgICAgICAgICAgIGF1dG8m IG1pbiA9ICgqZGF0YS52YWx1YXRvcikubWluOworQEAgLTY3MTEsNyArNjcxMSw3IEBAIHN0ZDo6 dW5pcXVlX3B0cjxJbnB1dDo6WElRdWVyeURldmljZVJlcGwKKyAgICAgICAgICAgICBQYWQoJmJ1 ZiwgMyk7CisgICAgICAgICAgIH0KKyAgICAgICAgICAgaWYgKENhc2VFcShkYXRhX2V4cHIsIElu cHV0OjpEZXZpY2VDbGFzc1R5cGU6OlNjcm9sbCkpIHsKKy0gICAgICAgICAgICBkYXRhLnNjcm9s bC5lbXBsYWNlKCk7CisrICAgICAgICAgICAgZGF0YS5zY3JvbGwgPSBJbnB1dDo6RGV2aWNlQ2xh c3M6OlNjcm9sbHt9OworICAgICAgICAgICAgIGF1dG8mIG51bWJlciA9ICgqZGF0YS5zY3JvbGwp Lm51bWJlcjsKKyAgICAgICAgICAgICBhdXRvJiBzY3JvbGxfdHlwZSA9ICgqZGF0YS5zY3JvbGwp LnNjcm9sbF90eXBlOworICAgICAgICAgICAgIGF1dG8mIGZsYWdzID0gKCpkYXRhLnNjcm9sbCku ZmxhZ3M7CitAQCAtNjc0Niw3ICs2NzQ2LDcgQEAgc3RkOjp1bmlxdWVfcHRyPElucHV0OjpYSVF1 ZXJ5RGV2aWNlUmVwbAorICAgICAgICAgICAgIH0KKyAgICAgICAgICAgfQorICAgICAgICAgICBp ZiAoQ2FzZUVxKGRhdGFfZXhwciwgSW5wdXQ6OkRldmljZUNsYXNzVHlwZTo6VG91Y2gpKSB7Cist ICAgICAgICAgICAgZGF0YS50b3VjaC5lbXBsYWNlKCk7CisrICAgICAgICAgICAgZGF0YS50b3Vj aCA9IElucHV0OjpEZXZpY2VDbGFzczo6VG91Y2h7fTsKKyAgICAgICAgICAgICBhdXRvJiBtb2Rl ID0gKCpkYXRhLnRvdWNoKS5tb2RlOworICAgICAgICAgICAgIGF1dG8mIG51bV90b3VjaGVzID0g KCpkYXRhLnRvdWNoKS5udW1fdG91Y2hlczsKKyAKK0BAIC02NzU5LDcgKzY3NTksNyBAQCBzdGQ6 OnVuaXF1ZV9wdHI8SW5wdXQ6OlhJUXVlcnlEZXZpY2VSZXBsCisgICAgICAgICAgICAgUmVhZCgm bnVtX3RvdWNoZXMsICZidWYpOworICAgICAgICAgICB9CisgICAgICAgICAgIGlmIChDYXNlRXEo ZGF0YV9leHByLCBJbnB1dDo6RGV2aWNlQ2xhc3NUeXBlOjpHZXN0dXJlKSkgeworLSAgICAgICAg ICAgIGRhdGEuZ2VzdHVyZS5lbXBsYWNlKCk7CisrICAgICAgICAgICAgZGF0YS5nZXN0dXJlID0g SW5wdXQ6OkRldmljZUNsYXNzOjpHZXN0dXJle307CisgICAgICAgICAgICAgYXV0byYgbnVtX3Rv dWNoZXMgPSAoKmRhdGEuZ2VzdHVyZSkubnVtX3RvdWNoZXM7CisgCisgICAgICAgICAgICAgLy8g bnVtX3RvdWNoZXMKK2RpZmYgLXVwIGNocm9taXVtLTEyNi4wLjY0NzguMjYvdWkvZ2Z4L3gvZ2Vu ZXJhdGVkX3Byb3Rvcy94a2IuY2Muc3lzdGVtLWxpYnN0ZGMrKyBjaHJvbWl1bS0xMjYuMC42NDc4 LjI2L3VpL2dmeC94L2dlbmVyYXRlZF9wcm90b3MveGtiLmNjCistLS0gY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3hrYi5jYy5zeXN0ZW0tbGlic3RkYysr CTIwMjQtMDUtMjkgMTg6MDI6MzIuMDAwMDAwMDAwICswMjAwCisrKysgY2hyb21pdW0tMTI2LjAu NjQ3OC4yNi91aS9nZngveC9nZW5lcmF0ZWRfcHJvdG9zL3hrYi5jYwkyMDI0LTA2LTAyIDIzOjUx OjI1LjU3MDkxNzM0NSArMDIwMAorQEAgLTIzNDQsNyArMjM0NCw3IEBAIHN0ZDo6dW5pcXVlX3B0 cjxYa2I6OkdldE1hcFJlcGx5PiBkZXRhaWwKKyAgIC8vIG1hcAorICAgYXV0byBtYXBfZXhwciA9 IHByZXNlbnQ7CisgICBpZiAoQ2FzZUFuZChtYXBfZXhwciwgWGtiOjpNYXBQYXJ0OjpLZXlUeXBl cykpIHsKKy0gICAgbWFwLnR5cGVzX3J0cm4uZW1wbGFjZSgpOworKyAgICBtYXAudHlwZXNfcnRy biA9IHN0ZDo6dmVjdG9yPFhrYjo6S2V5VHlwZT57fTsKKyAgICAgYXV0byYgdHlwZXNfcnRybiA9 ICptYXAudHlwZXNfcnRybjsKKyAKKyAgICAgLy8gdHlwZXNfcnRybgorQEAgLTUyMDcsNyArNTIw Nyw3IEBAIHN0ZDo6dW5pcXVlX3B0cjxYa2I6OkdldEtiZEJ5TmFtZVJlcGx5PgorICAgaWYgKENh c2VBbmQocmVwbGllc19leHByLCBYa2I6OkdCTkRldGFpbDo6VHlwZXMpIHx8CisgICAgICAgQ2Fz ZUFuZChyZXBsaWVzX2V4cHIsIFhrYjo6R0JORGV0YWlsOjpDbGllbnRTeW1ib2xzKSB8fAorICAg ICAgIENhc2VBbmQocmVwbGllc19leHByLCBYa2I6OkdCTkRldGFpbDo6U2VydmVyU3ltYm9scykp IHsKKy0gICAgcmVwbGllcy50eXBlcy5lbXBsYWNlKCk7CisrICAgIHJlcGxpZXMudHlwZXMgPSBY a2I6OkdldEtiZEJ5TmFtZVJlcGx5OjpUeXBlc3t9OworICAgICBhdXRvJiBnZXRtYXBfdHlwZSA9 ICgqcmVwbGllcy50eXBlcykuZ2V0bWFwX3R5cGU7CisgICAgIGF1dG8mIHR5cGVEZXZpY2VJRCA9 ICgqcmVwbGllcy50eXBlcykudHlwZURldmljZUlEOworICAgICBhdXRvJiBnZXRtYXBfc2VxdWVu Y2UgPSAoKnJlcGxpZXMudHlwZXMpLmdldG1hcF9zZXF1ZW5jZTsKK0BAIC01NjI2LDcgKzU2MjYs NyBAQCBzdGQ6OnVuaXF1ZV9wdHI8WGtiOjpHZXRLYmRCeU5hbWVSZXBseT4KKyAgICAgfQorICAg fQorICAgaWYgKENhc2VBbmQocmVwbGllc19leHByLCBYa2I6OkdCTkRldGFpbDo6Q29tcGF0TWFw KSkgeworLSAgICByZXBsaWVzLmNvbXBhdF9tYXAuZW1wbGFjZSgpOworKyAgICByZXBsaWVzLmNv bXBhdF9tYXAgPSBYa2I6OkdldEtiZEJ5TmFtZVJlcGx5OjpDb21wYXRNYXB7fTsKKyAgICAgYXV0 byYgY29tcGF0bWFwX3R5cGUgPSAoKnJlcGxpZXMuY29tcGF0X21hcCkuY29tcGF0bWFwX3R5cGU7 CisgICAgIGF1dG8mIGNvbXBhdERldmljZUlEID0gKCpyZXBsaWVzLmNvbXBhdF9tYXApLmNvbXBh dERldmljZUlEOworICAgICBhdXRvJiBjb21wYXRtYXBfc2VxdWVuY2UgPSAoKnJlcGxpZXMuY29t cGF0X21hcCkuY29tcGF0bWFwX3NlcXVlbmNlOworQEAgLTU3NDcsNyArNTc0Nyw3IEBAIHN0ZDo6 dW5pcXVlX3B0cjxYa2I6OkdldEtiZEJ5TmFtZVJlcGx5PgorICAgICB9CisgICB9CisgICBpZiAo Q2FzZUFuZChyZXBsaWVzX2V4cHIsIFhrYjo6R0JORGV0YWlsOjpJbmRpY2F0b3JNYXBzKSkgewor LSAgICByZXBsaWVzLmluZGljYXRvcl9tYXBzLmVtcGxhY2UoKTsKKysgICAgcmVwbGllcy5pbmRp Y2F0b3JfbWFwcyA9IFhrYjo6R2V0S2JkQnlOYW1lUmVwbHk6OkluZGljYXRvck1hcHN7fTsKKyAg ICAgYXV0byYgaW5kaWNhdG9ybWFwX3R5cGUgPSAoKnJlcGxpZXMuaW5kaWNhdG9yX21hcHMpLmlu ZGljYXRvcm1hcF90eXBlOworICAgICBhdXRvJiBpbmRpY2F0b3JEZXZpY2VJRCA9ICgqcmVwbGll cy5pbmRpY2F0b3JfbWFwcykuaW5kaWNhdG9yRGV2aWNlSUQ7CisgICAgIGF1dG8mIGluZGljYXRv cm1hcF9zZXF1ZW5jZSA9CitAQCAtNTg0MCw3ICs1ODQwLDcgQEAgc3RkOjp1bmlxdWVfcHRyPFhr Yjo6R2V0S2JkQnlOYW1lUmVwbHk+CisgICB9CisgICBpZiAoQ2FzZUFuZChyZXBsaWVzX2V4cHIs IFhrYjo6R0JORGV0YWlsOjpLZXlOYW1lcykgfHwKKyAgICAgICBDYXNlQW5kKHJlcGxpZXNfZXhw ciwgWGtiOjpHQk5EZXRhaWw6Ok90aGVyTmFtZXMpKSB7CistICAgIHJlcGxpZXMua2V5X25hbWVz LmVtcGxhY2UoKTsKKysgICAgcmVwbGllcy5rZXlfbmFtZXMgPSBYa2I6OkdldEtiZEJ5TmFtZVJl cGx5OjpLZXlOYW1lc3t9OworICAgICBhdXRvJiBrZXluYW1lX3R5cGUgPSAoKnJlcGxpZXMua2V5 X25hbWVzKS5rZXluYW1lX3R5cGU7CisgICAgIGF1dG8mIGtleURldmljZUlEID0gKCpyZXBsaWVz LmtleV9uYW1lcykua2V5RGV2aWNlSUQ7CisgICAgIGF1dG8mIGtleW5hbWVfc2VxdWVuY2UgPSAo KnJlcGxpZXMua2V5X25hbWVzKS5rZXluYW1lX3NlcXVlbmNlOworQEAgLTYwODcsNyArNjA4Nyw3 IEBAIHN0ZDo6dW5pcXVlX3B0cjxYa2I6OkdldEtiZEJ5TmFtZVJlcGx5PgorICAgICB9CisgICB9 CisgICBpZiAoQ2FzZUFuZChyZXBsaWVzX2V4cHIsIFhrYjo6R0JORGV0YWlsOjpHZW9tZXRyeSkp IHsKKy0gICAgcmVwbGllcy5nZW9tZXRyeS5lbXBsYWNlKCk7CisrICAgIHJlcGxpZXMuZ2VvbWV0 cnkgPSBYa2I6OkdldEtiZEJ5TmFtZVJlcGx5OjpHZW9tZXRyeXt9OworICAgICBhdXRvJiBnZW9t ZXRyeV90eXBlID0gKCpyZXBsaWVzLmdlb21ldHJ5KS5nZW9tZXRyeV90eXBlOworICAgICBhdXRv JiBnZW9tZXRyeURldmljZUlEID0gKCpyZXBsaWVzLmdlb21ldHJ5KS5nZW9tZXRyeURldmljZUlE OworICAgICBhdXRvJiBnZW9tZXRyeV9zZXF1ZW5jZSA9ICgqcmVwbGllcy5nZW9tZXRyeSkuZ2Vv bWV0cnlfc2VxdWVuY2U7CgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0tOTkuMC40ODQ0LjUxLWVwZWw3 LW9sZC1jdXBzLnBhdGNoIGIvY2hyb21pdW0tOTkuMC40ODQ0LjUxLWVwZWw3LW9sZC1jdXBzLnBh dGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzBkZWRjLi4wMDAwMDAwCi0tLSBh L2Nocm9taXVtLTk5LjAuNDg0NC41MS1lcGVsNy1vbGQtY3Vwcy5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE0MiArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS05OS4wLjQ4NDQuNTEvcHJpbnRp bmcvYmFja2VuZC9jdXBzX2hlbHBlci5jYy5lbDdjdXBzIGNocm9taXVtLTk5LjAuNDg0NC41MS9w cmludGluZy9iYWNrZW5kL2N1cHNfaGVscGVyLmNjCi0tLS0gY2hyb21pdW0tOTkuMC40ODQ0LjUx L3ByaW50aW5nL2JhY2tlbmQvY3Vwc19oZWxwZXIuY2MuZWw3Y3VwcwkyMDIyLTAyLTI4IDE5OjA1 OjU1LjAwMDAwMDAwMCAtMDUwMAotKysrIGNocm9taXVtLTk5LjAuNDg0NC41MS9wcmludGluZy9i YWNrZW5kL2N1cHNfaGVscGVyLmNjCTIwMjItMDMtMDUgMTU6MTc6NDUuNTE2ODg3OTg1IC0wNTAw Ci1AQCAtMzQsMTggKzM0LDYgQEAgbmFtZXNwYWNlIHByaW50aW5nIHsKLSAvLyBUaGlzIHNlY3Rp b24gY29udGFpbnMgaGVscGVyIGNvZGUgZm9yIFBQRCBwYXJzaW5nIGZvciBzZW1hbnRpYyBjYXBh YmlsaXRpZXMuCi0gbmFtZXNwYWNlIHsKLSAKLS0vLyBGdW5jdGlvbiBhdmFpbGFiaWxpdHkgY2Fu IGJlIHRlc3RlZCBieSBjaGVja2luZyB3aGV0aGVyIGl0cyBhZGRyZXNzIGlzIG5vdAotLS8vIG51 bGxwdHIuIFdlYWsgc3ltYm9scyByZW1vdmUgdGhlIG5lZWQgZm9yIHBsYXRmb3JtIHNwZWNpZmlj IGJ1aWxkIGZsYWdzIGFuZAotLS8vIGFsbG93IGZvciBhcHByb3ByaWF0ZSBDVVBTIHVzYWdlIG9u IHBsYXRmb3JtcyB3aXRoIG5vbi11bmlmb3JtIHZlcnNpb24KLS0vLyBzdXBwb3J0LCBuYW1lbHkg TGludXguCi0tI2RlZmluZSBXRUFLX0NVUFNfRk4oeCkgZXh0ZXJuICJDIiBfX2F0dHJpYnV0ZV9f KCh3ZWFrKSkgZGVjbHR5cGUoeCkgeAotLQotLVdFQUtfQ1VQU19GTihodHRwQ29ubmVjdDIpOwot LQotLS8vIFRpbWVvdXQgZm9yIGVzdGFibGlzaGluZyBhIENVUFMgY29ubmVjdGlvbi4gIEl0IGlz IGV4cGVjdGVkIHRoYXQgY3Vwc2QgaXMKLS0vLyBhYmxlIHRvIHN0YXJ0IGFuZCByZXNwb25kIG9u IGFsbCBzeXN0ZW1zIHdpdGhpbiB0aGlzIGR1cmF0aW9uLgotLWNvbnN0ZXhwciBiYXNlOjpUaW1l RGVsdGEga0N1cHNUaW1lb3V0ID0gYmFzZTo6U2Vjb25kcyg1KTsKLS0KLSAvLyBDVVBTIGRlZmF1 bHQgbWF4IGNvcGllcyB2YWx1ZSAocGFyc2VkIGZyb20ga0N1cHNNYXhDb3BpZXMgUFBEIGF0dHJp YnV0ZSkuCi0gY29uc3RleHByIGludDMyX3Qga0RlZmF1bHRNYXhDb3BpZXMgPSA5OTk5OwotIGNv bnN0ZXhwciBjaGFyIGtDdXBzTWF4Q29waWVzW10gPSAiY3Vwc01heENvcGllcyI7Ci1AQCAtNTI3 LDggKzUxNSw3IEBAIGNvbnN0IGludCBrRGVmYXVsdElQUFNlcnZlclBvcnQgPSA2MzE7Ci0gLy8g SGVscGVyIHdyYXBwZXIgYXJvdW5kIGh0dHBfdCBzdHJ1Y3R1cmUsIHdpdGggY29ubmVjdGlvbiBh bmQgY2xlYW51cAotIC8vIGZ1bmN0aW9uYWxpdHkuCi0gSHR0cENvbm5lY3Rpb25DVVBTOjpIdHRw Q29ubmVjdGlvbkNVUFMoY29uc3QgR1VSTCYgcHJpbnRfc2VydmVyX3VybCwKLS0gICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBodHRwX2VuY3J5cHRpb25fdCBlbmNyeXB0aW9u LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxvY2tpbmcp Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaHR0cF9lbmNyeXB0aW9u X3QgZW5jcnlwdGlvbikKLSAgICAgOiBodHRwXyhudWxscHRyKSB7Ci0gICAvLyBJZiB3ZSBoYXZl IGFuIGVtcHR5IHVybCwgdXNlIGRlZmF1bHQgcHJpbnQgc2VydmVyLgotICAgaWYgKHByaW50X3Nl cnZlcl91cmwuaXNfZW1wdHkoKSkKLUBAIC01MzgsMTcgKzUyNSwxMCBAQCBIdHRwQ29ubmVjdGlv bkNVUFM6Okh0dHBDb25uZWN0aW9uQ1VQUyhjCi0gICBpZiAocG9ydCA9PSB1cmw6OlBPUlRfVU5T UEVDSUZJRUQpCi0gICAgIHBvcnQgPSBrRGVmYXVsdElQUFNlcnZlclBvcnQ7Ci0gCi0tICBpZiAo aHR0cENvbm5lY3QyKSB7Ci0tICAgIGh0dHBfID0gaHR0cENvbm5lY3QyKHByaW50X3NlcnZlcl91 cmwuaG9zdCgpLmNfc3RyKCksIHBvcnQsCi0tICAgICAgICAgICAgICAgICAgICAgICAgIC8qYWRk cmxpc3Q9Ki9udWxscHRyLCBBRl9VTlNQRUMsIGVuY3J5cHRpb24sCi0tICAgICAgICAgICAgICAg ICAgICAgICAgIGJsb2NraW5nID8gMSA6IDAsIGtDdXBzVGltZW91dC5Jbk1pbGxpc2Vjb25kcygp LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAvKmNhbmNlbD0qL251bGxwdHIpOwotLSAgfSBl bHNlIHsKLS0gICAgLy8gQ29udGludWUgdG8gdXNlIGRlcHJlY2F0ZWQgQ1VQUyBjYWxscyBiZWNh dXNlIGJlY2F1c2Ugb2xkZXIgTGludXgKLS0gICAgLy8gZGlzdHJpYnV0aW9uIHN1Y2ggYXMgUkhF TC9DZW50T1MgNyBhcmUgc2hpcHBlZCB3aXRoIENVUFMgMS42LgotLSAgICBodHRwXyA9Ci0tICAg ICAgICBodHRwQ29ubmVjdEVuY3J5cHQocHJpbnRfc2VydmVyX3VybC5ob3N0KCkuY19zdHIoKSwg cG9ydCwgZW5jcnlwdGlvbik7Ci0tICB9Ci0rICAvLyBDb250aW51ZSB0byB1c2UgZGVwcmVjYXRl ZCBDVVBTIGNhbGxzIGJlY2F1c2UgYmVjYXVzZSBvbGRlciBMaW51eAotKyAgLy8gZGlzdHJpYnV0 aW9uIHN1Y2ggYXMgUkhFTC9DZW50T1MgNyBhcmUgc2hpcHBlZCB3aXRoIENVUFMgMS42LgotKyAg aHR0cF8gPQotKyAgICAgIGh0dHBDb25uZWN0RW5jcnlwdChwcmludF9zZXJ2ZXJfdXJsLmhvc3Qo KS5jX3N0cigpLCBwb3J0LCBlbmNyeXB0aW9uKTsKLSAKLSAgIGlmICghaHR0cF8pIHsKLSAgICAg TE9HKEVSUk9SKSA8PCAiQ1BfQ1VQUzogRmFpbGVkIGNvbm5lY3RpbmcgdG8gcHJpbnQgc2VydmVy OiAiCi1AQCAtNTU2LDggKzUzNiw2IEBAIEh0dHBDb25uZWN0aW9uQ1VQUzo6SHR0cENvbm5lY3Rp b25DVVBTKGMKLSAgICAgcmV0dXJuOwotICAgfQotIAotLSAgaWYgKCFodHRwQ29ubmVjdDIpCi0t ICAgIGh0dHBCbG9ja2luZyhodHRwXywgYmxvY2tpbmcgPyAxIDogMCk7Ci0gfQotIAotIEh0dHBD b25uZWN0aW9uQ1VQUzo6fkh0dHBDb25uZWN0aW9uQ1VQUygpIHsKLUBAIC01NjUsNiArNTQzLDEw IEBAIEh0dHBDb25uZWN0aW9uQ1VQUzo6fkh0dHBDb25uZWN0aW9uQ1VQUygKLSAgICAgaHR0cENs b3NlKGh0dHBfKTsKLSB9Ci0gCi0rdm9pZCBIdHRwQ29ubmVjdGlvbkNVUFM6OlNldEJsb2NraW5n KGJvb2wgYmxvY2tpbmcpIHsKLSsgIGh0dHBCbG9ja2luZyhodHRwXywgYmxvY2tpbmcgPyAxIDog MCk7Ci0rfQotKwotIGh0dHBfdCogSHR0cENvbm5lY3Rpb25DVVBTOjpodHRwKCkgewotICAgcmV0 dXJuIGh0dHBfOwotIH0KLWRpZmYgLXVwIGNocm9taXVtLTk5LjAuNDg0NC41MS9wcmludGluZy9i YWNrZW5kL2N1cHNfaGVscGVyLmguZWw3Y3VwcyBjaHJvbWl1bS05OS4wLjQ4NDQuNTEvcHJpbnRp bmcvYmFja2VuZC9jdXBzX2hlbHBlci5oCi0tLS0gY2hyb21pdW0tOTkuMC40ODQ0LjUxL3ByaW50 aW5nL2JhY2tlbmQvY3Vwc19oZWxwZXIuaC5lbDdjdXBzCTIwMjItMDItMjggMTk6MDU6NTUuMDAw MDAwMDAwIC0wNTAwCi0rKysgY2hyb21pdW0tOTkuMC40ODQ0LjUxL3ByaW50aW5nL2JhY2tlbmQv Y3Vwc19oZWxwZXIuaAkyMDIyLTAzLTA1IDE1OjE3OjQ1LjUxNzg4Nzk5MSAtMDUwMAotQEAgLTM0 LDEwICszNCwxMSBAQCBjb25zdGV4cHIgY3Vwc19wdHlwZV90IGtEZXN0aW5hdGlvbnNGaWx0Ci0g Y2xhc3MgQ09NUE9ORU5UX0VYUE9SVChQUklOVF9CQUNLRU5EKSBIdHRwQ29ubmVjdGlvbkNVUFMg ewotICBwdWJsaWM6Ci0gICBIdHRwQ29ubmVjdGlvbkNVUFMoY29uc3QgR1VSTCYgcHJpbnRfc2Vy dmVyX3VybCwKLS0gICAgICAgICAgICAgICAgICAgICBodHRwX2VuY3J5cHRpb25fdCBlbmNyeXB0 aW9uLAotLSAgICAgICAgICAgICAgICAgICAgIGJvb2wgYmxvY2tpbmcpOwotKyAgICAgICAgICAg ICAgICAgICAgIGh0dHBfZW5jcnlwdGlvbl90IGVuY3J5cHRpb24pOwotICAgfkh0dHBDb25uZWN0 aW9uQ1VQUygpOwotIAotKyAgdm9pZCBTZXRCbG9ja2luZyhib29sIGJsb2NraW5nKTsKLSsKLSAg IGh0dHBfdCogaHR0cCgpOwotIAotICBwcml2YXRlOgotZGlmZiAtdXAgY2hyb21pdW0tOTkuMC40 ODQ0LjUxL3ByaW50aW5nL2JhY2tlbmQvcHJpbnRfYmFja2VuZF9jdXBzLmNjLmVsN2N1cHMgY2hy b21pdW0tOTkuMC40ODQ0LjUxL3ByaW50aW5nL2JhY2tlbmQvcHJpbnRfYmFja2VuZF9jdXBzLmNj Ci0tLS0gY2hyb21pdW0tOTkuMC40ODQ0LjUxL3ByaW50aW5nL2JhY2tlbmQvcHJpbnRfYmFja2Vu ZF9jdXBzLmNjLmVsN2N1cHMJMjAyMi0wMi0yOCAxOTowNTo1NS4wMDAwMDAwMDAgLTA1MDAKLSsr KyBjaHJvbWl1bS05OS4wLjQ4NDQuNTEvcHJpbnRpbmcvYmFja2VuZC9wcmludF9iYWNrZW5kX2N1 cHMuY2MJMjAyMi0wMy0wNSAxNToxNzo0NS41MTc4ODc5OTEgLTA1MDAKLUBAIC0xNDYsNyArMTQ2 LDcgQEAgbW9qb206OlJlc3VsdENvZGUgUHJpbnRCYWNrZW5kQ1VQUzo6RW51bQotICAgLy8gbm90 IHNob3dpbmcgYXMgYXZhaWxhYmxlLiAgVXNpbmcgY3Vwc0VudW1EZXN0cygpIGFsbG93cyB1cyB0 byBkbyBvdXIgb3duCi0gICAvLyBmaWx0ZXJpbmcgc2hvdWxkIGFueSBkdXBsaWNhdGVzIG9jY3Vy LgotICAgQ3Vwc0Rlc3RzRGF0YSBkZXN0c19kYXRhID0gezAsIG51bGxwdHJ9OwotLSAgaXBwX3N0 YXR1c190IGxhc3RfZXJyb3IgPSBJUFBfU1RBVFVTX09LOwotKyAgaXBwX3N0YXR1c190IGxhc3Rf ZXJyb3IgPSBJUFBfT0s7Ci0gICBpZiAocHJpbnRfc2VydmVyX3VybF8uaXNfZW1wdHkoKSkgewot ICAgICBWTE9HKDEpIDw8ICJDVVBTOiB1c2luZyBjdXBzRW51bURlc3RzIHRvIGVudW1lcmF0ZSBw cmludGVycyI7Ci0gICAgIGlmICghY3Vwc0VudW1EZXN0cyhDVVBTX0RFU1RfRkxBR1NfTk9ORSwg a0N1cHNUaW1lb3V0TXMsCi1AQCAtMTczLDcgKzE3Myw3IEBAIG1vam9tOjpSZXN1bHRDb2RlIFBy aW50QmFja2VuZENVUFM6OkVudW0KLSAgICAgLy8gbm8gcHJpbnRlciBkcml2ZXJzIGluc3RhbGxl ZC4gIFJlbHkgdXBvbiBDVVBTIGVycm9yIGNvZGUgdG8gZGlzdGluZ3Vpc2gKLSAgICAgLy8gYmV0 d2VlbiB0aGVzZS4KLSAgICAgRENIRUNLKCFkZXN0c19kYXRhLmRlc3RzKTsKLS0gICAgaWYgKGxh c3RfZXJyb3IgIT0gSVBQX1NUQVRVU19FUlJPUl9OT1RfRk9VTkQpIHsKLSsgICAgaWYgKGxhc3Rf ZXJyb3IgIT0gSVBQX05PVF9GT1VORCkgewotICAgICAgIFZMT0coMSkgPDwgIkNVUFM6IEVycm9y IGdldHRpbmcgcHJpbnRlcnMgZnJvbSBDVVBTIHNlcnZlciIKLSAgICAgICAgICAgICAgIDw8ICIs IHNlcnZlcjogIiA8PCBwcmludF9zZXJ2ZXJfdXJsXwotICAgICAgICAgICAgICAgPDwgIiwgZXJy b3I6ICIgPDwgc3RhdGljX2Nhc3Q8aW50PihsYXN0X2Vycm9yKSA8PCAiIC0gIgotQEAgLTMzNiw3 ICszMzYsOCBAQCBpbnQgUHJpbnRCYWNrZW5kQ1VQUzo6R2V0RGVzdHMoY3Vwc19kZXN0Ci0gICBp ZiAocHJpbnRfc2VydmVyX3VybF8uaXNfZW1wdHkoKSkKLSAgICAgcmV0dXJuIGN1cHNHZXREZXN0 czIoQ1VQU19IVFRQX0RFRkFVTFQsIGRlc3RzKTsKLSAKLS0gIEh0dHBDb25uZWN0aW9uQ1VQUyBo dHRwKHByaW50X3NlcnZlcl91cmxfLCBjdXBzX2VuY3J5cHRpb25fLCBibG9ja2luZ18pOwotKyAg SHR0cENvbm5lY3Rpb25DVVBTIGh0dHAocHJpbnRfc2VydmVyX3VybF8sIGN1cHNfZW5jcnlwdGlv bl8pOwotKyAgaHR0cC5TZXRCbG9ja2luZyhibG9ja2luZ18pOwotIAotICAgLy8gVGhpcyBjYWxs IG11c3QgYmUgbWFkZSBpbiB0aGUgc2FtZSBzY29wZSBhcyBgaHR0cGAgYmVjYXVzZSBpdHMgZGVz dHJ1Y3RvcgotICAgLy8gY2xvc2VzIHRoZSBjb25uZWN0aW9uLgotQEAgLTM2Miw3ICszNjMsOCBA QCBiYXNlOjpGaWxlUGF0aCBQcmludEJhY2tlbmRDVVBTOjpHZXRQUEQoCi0gICAgIC8vIGNvbm5l Y3Rpb24gd2lsbCB0aW1lb3V0IGFmdGVyIDEwIHNlY29uZHMgb2Ygbm8gZGF0YSBwZXJpb2QuIEFu ZCBpdCB3aWxsCi0gICAgIC8vIHJldHVybiB0aGUgc2FtZSB3YXkgYXMgaWYgZGF0YSB3YXMgY29t cGxldGVseSBhbmQgc3VjY2Vzc2Z1bGx5Ci0gICAgIC8vIGRvd25sb2FkZWQuCi0tICAgIEh0dHBD b25uZWN0aW9uQ1VQUyBodHRwKHByaW50X3NlcnZlcl91cmxfLCBjdXBzX2VuY3J5cHRpb25fLCBi bG9ja2luZ18pOwotKyAgICBIdHRwQ29ubmVjdGlvbkNVUFMgaHR0cChwcmludF9zZXJ2ZXJfdXJs XywgY3Vwc19lbmNyeXB0aW9uXyk7Ci0rICAgIGh0dHAuU2V0QmxvY2tpbmcoYmxvY2tpbmdfKTsK LSAgICAgcHBkX2ZpbGVfcGF0aCA9IGN1cHNHZXRQUEQyKGh0dHAuaHR0cCgpLCBuYW1lKTsKLSAg ICAgLy8gQ2hlY2sgaWYgdGhlIGdldCBmdWxsIFBQRCwgc2luY2Ugbm9uLWJsb2NraW5nIGNhbGwg bWF5IHNpbXBseSByZXR1cm4KLSAgICAgLy8gbm9ybWFsbHkgYWZ0ZXIgdGltZW91dCBleHBpcmVk LgotQEAgLTM5OCw3ICs0MDAsOCBAQCBQcmludEJhY2tlbmRDVVBTOjpTY29wZWREZXN0aW5hdGlv biBQcmluCi0gICAgIC8vIFVzZSBkZWZhdWx0IChsb2NhbCkgcHJpbnQgc2VydmVyLgotICAgICBk ZXN0ID0gY3Vwc0dldE5hbWVkRGVzdChDVVBTX0hUVFBfREVGQVVMVCwgcHJpbnRlcl9uYW1lLmNf c3RyKCksIG51bGxwdHIpOwotICAgfSBlbHNlIHsKLS0gICAgSHR0cENvbm5lY3Rpb25DVVBTIGh0 dHAocHJpbnRfc2VydmVyX3VybF8sIGN1cHNfZW5jcnlwdGlvbl8sIGJsb2NraW5nXyk7Ci0rICAg IEh0dHBDb25uZWN0aW9uQ1VQUyBodHRwKHByaW50X3NlcnZlcl91cmxfLCBjdXBzX2VuY3J5cHRp b25fKTsKLSsgICAgaHR0cC5TZXRCbG9ja2luZyhibG9ja2luZ18pOwotICAgICBkZXN0ID0gY3Vw c0dldE5hbWVkRGVzdChodHRwLmh0dHAoKSwgcHJpbnRlcl9uYW1lLmNfc3RyKCksIG51bGxwdHIp OwotICAgfQotICAgcmV0dXJuIFNjb3BlZERlc3RpbmF0aW9uKGRlc3QpOwoKZGlmZiAtLWdpdCBh L2Nocm9taXVtLnNwZWMgYi9jaHJvbWl1bS5zcGVjCmluZGV4IGRlOWY0ZGYuLjllOWZmM2IgMTAw NjQ0Ci0tLSBhL2Nocm9taXVtLnNwZWMKKysrIGIvY2hyb21pdW0uc3BlYwpAQCAtMTgzLDExICsx ODMsNiBAQAogJWVuZGlmCiAlZW5kaWYKIAotJWlmYXJjaCBwcGM2NGxlCi0jIHdvcmthcm91bmQg Zm9yIGEgYnVnIGluIG5ldyBsbHZtIG9uIGY0MC9yYXdoaWRlIChwcGM2NGxlKQotJWdsb2JhbCBj ZmkgMAotJWVuZGlmCi0KICMgc2V0IGNvcnJlY3QgdG9vbGNoYWluCiAlaWYgJXtjbGFuZ30KICVn bG9iYWwgdG9vbGNoYWluIGNsYW5nCkBAIC0yNTYsMTIgKzI1MSwxMyBAQAogJWlmIDAlez9mZWRv cmF9ID4gMzggfHwgMCV7P3JoZWx9ID4gOQogJWdsb2JhbCBidW5kbGVicm90bGkgMAogJWdsb2Jh bCBidW5kbGVpY3UgMAorJWdsb2JhbCBidW5kbGVsaWJ3ZWJwIDAKICVlbHNlCiAlZ2xvYmFsIGJ1 bmRsZWJyb3RsaSAxCiAlZ2xvYmFsIGJ1bmRsZWljdSAxCislZ2xvYmFsIGJ1bmRsZWxpYndlYnAg MQogJWVuZGlmCiAlZ2xvYmFsIGJ1bmRsZWRhdjFkIDAKLSVnbG9iYWwgYnVuZGxlbGlid2VicCAw CiAlZ2xvYmFsIGJ1bmRsZWxpYnBuZyAwCiAlZ2xvYmFsIGJ1bmRsZWxpYmpwZWcgMAogJWdsb2Jh bCBidW5kbGVsaWJkcm0gMApAQCAtMzE0LDcgKzMxMCw3IEBACiAlZW5kaWYKIAogTmFtZToJY2hy b21pdW0le2Nocm9taXVtX2NoYW5uZWx9Ci1WZXJzaW9uOiAxMjUuMC42NDIyLjE0MQorVmVyc2lv bjogMTI2LjAuNjQ3OC41NQogUmVsZWFzZTogMSV7P2Rpc3R9CiBTdW1tYXJ5OiBBIFdlYktpdCAo QmxpbmspIHBvd2VyZWQgd2ViIGJyb3dzZXIgdGhhdCBHb29nbGUgZG9lc24ndCB3YW50IHlvdSB0 byB1c2UKIFVybDogaHR0cDovL3d3dy5jaHJvbWl1bS5vcmcvSG9tZQpAQCAtMzczLDcgKzM2OSw3 IEBAIFBhdGNoOTA6IGNocm9taXVtLTEyMS1zeXN0ZW0tbGlieG1sLnBhdGNoCiBQYXRjaDkxOiBj aHJvbWl1bS0xMDgtc3lzdGVtLW9wdXMucGF0Y2gKIAogIyBuZWVkIHRvIGV4cGxpY2l0bHkgaW5j bHVkZSBhIGtlcm5lbCBoZWFkZXIgb24gRUw3IHRvIHN1cHBvcnQgTUZEX0NMT0VYRUMsIEZfU0VB TF9TSFJJTkssIEZfQUREX1NFQUxTLCBGX1NFQUxfU0VBTAotUGF0Y2gxMDA6IGNocm9taXVtLTEx Ni1lbDctaW5jbHVkZS1mY250bC1tZW1mZC5wYXRjaAorUGF0Y2gxMDA6IGNocm9taXVtLTEyNi1l bDctaW5jbHVkZS1mY250bC1tZW1mZC5wYXRjaAogCiAjIGFkZCBkZWZpbmUgSEFWRV9TVFJORFVQ IG9uIGVwZWw3CiBQYXRjaDEwMTogY2hyb21pdW0tMTA4LWVsNy13YXlsYW5kLXN0cm5kdXAtZXJy b3IucGF0Y2gKQEAgLTM4Nyw3ICszODMsNyBAQCBQYXRjaDEwMzogY2hyb21pdW0tMTEwLWVwZWw3 LW9sZC1oZWFkZXJzLXdvcmthcm91bmRzLnBhdGNoCiAKICMgVXNlIG9sZCBjdXBzIChjaHJvbWl1 bSdzIGNvZGUgd29ya2Fyb3VuZCBicmVha3Mgb24gZ2NjKQogIyBSZXZlcnQ6IGh0dHBzOi8vZ2l0 aHViLmNvbS9jaHJvbWl1bS9jaHJvbWl1bS9jb21taXQvYzMyMTNmODc3OWRkYzQyN2U4OWQ5ODI1 MTQxODVlZDVlNGM5NGU5MQotUGF0Y2gxMDQ6IGNocm9taXVtLTk5LjAuNDg0NC41MS1lcGVsNy1v bGQtY3Vwcy5wYXRjaAorUGF0Y2gxMDQ6IGNocm9taXVtLTEyNi1lbDctb2xkLWN1cHMucGF0Y2gK IAogIyBsaWJkcm0gb24gRUw3IGlzIHJhdGhlciBvbGQgYW5kIGNocm9taXVtIGFzc3VtZXMgbmV3 ZXIKICMgVGhpcyBnZXRzIHVzIGJ5IGZvciBub3cKQEAgLTQwNiwxNCArNDAyLDE0IEBAIFBhdGNo MTA4OiBjaHJvbWl1bS0xMTgtZWw3X3Y0bDJfcXVhbnRpemF0aW9uLnBhdGNoCiBQYXRjaDEwOTog Y2hyb21pdW0tMTE0LXdpcmVsZXNzLWVsNy5wYXRjaAogUGF0Y2gxMTA6IGNocm9taXVtLTExNS1i dWlsZGZsYWctZWw3LnBhdGNoCiBQYXRjaDExMTogY2hyb21pdW0tMTIyLWVsNy1pbmxpbmUtZnVu Y3Rpb24ucGF0Y2gKLVBhdGNoMTEyOiBjaHJvbWl1bS0xMjUtZWw3LXJ1c3QtcHJvYy1tYWNybzIu cGF0Y2gKK1BhdGNoMTEyOiBjaHJvbWl1bS0xMjYtZWw3LXJ1c3QtY19zdHJpbmcucGF0Y2gKIFBh dGNoMTEzOiBjaHJvbWl1bS0xMjEtZWw3LWNsYW5nLXZlcnNpb24td2FybmluZy5wYXRjaAogUGF0 Y2gxMTQ6IGNocm9taXVtLTEyMy1lbDctY2xhbmctYnVpbGQtZmFpbHVyZS5wYXRjaAogUGF0Y2gx MTU6IGNocm9taXVtLTEyNC1lbDctc2l6ZV90LnBhdGNoCiAKICMgZml4ZXMgZm9yIG9sZCBjbGFu ZyB2ZXJzaW9uIGluIGVsNyAoY2xhbmcgPD0gMTUpCiAjIGNvbXBpbGVyIGJ1aWxkIGVycm9ycywg bm8gbWF0Y2hpbmcgY29uc3RydWN0b3IgZm9yIGluaXRpYWxpemF0aW9uCi1QYXRjaDExNjogY2hy b21pdW0tMTI1LWVsNy1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRjaAorUGF0Y2gxMTY6IGNo cm9taXVtLTEyNi1lbDctbm9fbWF0Y2hpbmdfY29uc3RydWN0b3IucGF0Y2gKIFBhdGNoMTE3OiBj aHJvbWl1bS0xMTUtZWw3LWNvbXBpbGVyLVNrQ29sb3I0Zi5wYXRjaAogCiAjIHdvcmthcm91bmQg Zm9yIGNsYW5nIGJ1ZywgaHR0cHM6Ly9naXRodWIuY29tL2xsdm0vbGx2bS1wcm9qZWN0L2lzc3Vl cy81NzgyNgpAQCAtNDI1LDkgKzQyMSwxMyBAQCBQYXRjaDExOTogY2hyb21pdW0tMTI1LWVsNy10 eXBlbmFtZS5wYXRjaAogIyBlcnJvcjogaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgZXhwcmVz c2lvbgogUGF0Y2gxMjA6IGNocm9taXVtLTExNy1lbDctc3RyaW5nLWNvbnZlcnQucGF0Y2gKIFBh dGNoMTIxOiBjaHJvbWl1bS0xMjUtZWw3LWFzc2VydC5wYXRjaAotUGF0Y2gxMjI6IGNocm9taXVt LTEyNS1lbDctY29uc3RleHByLnBhdGNoCi1QYXRjaDEyMzogY2hyb21pdW0tMTI1LWVsNy10eXBl LWFsaWFzLnBhdGNoCitQYXRjaDEyMjogY2hyb21pdW0tMTI2LWVsNy1jb25zdGV4cHIucGF0Y2gK K1BhdGNoMTIzOiBjaHJvbWl1bS0xMjYtZWw3LXR5cGUtYWxpYXMucGF0Y2gKIFBhdGNoMTI0OiBj aHJvbWl1bS0xMjUtZWw3LW9wdGlvbmFsLXdvcmthcm91bmQtYXNzZXJ0LnBhdGNoCitQYXRjaDEy NTogY2hyb21pdW0tMTI2LWVsNy1pbnRlcmF0b3IucGF0Y2gKK1BhdGNoMTI2OiBjaHJvbWl1bS0x MjYtZWw3LWNvbG9ybWFwLnBhdGNoCitQYXRjaDEyNzogY2hyb21pdW0tMTI2LWVsNy1zdGRmb3Jt YXQucGF0Y2gKK1BhdGNoMTI4OiBjaHJvbWl1bS0xMjYtZWw3LXN0ZF92YXJpYW50LnBhdGNoCiAK ICMgc3lzdGVtIGZmbXBlZwogIyBuZWVkIGZvciBvbGQgZmZtcGVnIDUueCBvbiBlcGVsOQpAQCAt NDY1LDEwICs0NjUsMTAgQEAgUGF0Y2gzMTI6IGNocm9taXVtLTEyMy1mc3RhY2stcHJvdGVjdG9y LXN0cm9uZy5wYXRjaAogIyBydXN0IGlzIG9sZCwgZnVuY3Rpb24gb3IgYXNzb2NpYXRlZCBpdGVt IG5vdCBmb3VuZCBpbiBgT3NTdHJgCiBQYXRjaDMxMzogY2hyb21pdW0tMTIzLXJ1c3QtY2xhcF9s ZXgucGF0Y2gKIAotUGF0Y2gzMTQ6IGNocm9taXVtLTEyNC1jbGFuZzE2LWJ1aWxkZmxhZ3MucGF0 Y2gKK1BhdGNoMzE0OiBjaHJvbWl1bS0xMjYtY2xhbmcxNi1idWlsZGZsYWdzLnBhdGNoCiAKICMg cmVtb3ZlIGxkZmxhZ3MgLVdsLC1tbGx2bSwtZGlzYWJsZS1hdXRvLXVwZ3JhZGUtZGVidWctaW5m byB3aGljaCBpcyBub3Qgc3VwcG9ydGVkCi1QYXRjaDMxNTogY2hyb21pdW0tMTIyLWNsYW5nMTYt ZGlzYWJsZS1hdXRvLXVwZ3JhZGUtZGVidWctaW5mby5wYXRjaAorUGF0Y2gzMTU6IGNocm9taXVt LTEyNi1jbGFuZzE2LWRpc2FibGUtYXV0by11cGdyYWRlLWRlYnVnLWluZm8ucGF0Y2gKIAogIyBh ZGQgLWZ0cml2aWFsLWF1dG8tdmFyLWluaXQ9emVybyBhbmQgLWZ3cmFwdgogUGF0Y2gzMTY6IGNo cm9taXVtLTEyMi1jbGFuZy1idWlsZC1mbGFncy5wYXRjaApAQCAtNDgxLDE4ICs0ODEsMTUgQEAg UGF0Y2gzMTc6IGNocm9taXVtLTEyNC1saWJkYXYxZC1hYXJjaDY0LnBhdGNoCiAjIERpc2FibGUg QlRJIHVudGlsIHRoaXMgaXMgZml4ZWQgdXBzdHJlYW0uCiBQYXRjaDM1MjogY2hyb21pdW0tMTE3 LXdvcmthcm91bmRfZm9yX2NyYXNoX29uX0JUSV9jYXBhYmxlX3N5c3RlbS5wYXRjaAogCi0jIHJl bW92ZSBmbGFnIHNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludCwgaXQnIG5vdCBzdXBw b3J0ZWQgaW4gY2xhbmcgPD0gMTcKLVBhdGNoMzU0OiBjaHJvbWl1bS0xMjAtc3BsaXQtdGhyZXNo b2xkLWZvci1yZWctd2l0aC1oaW50LnBhdGNoCisjIHJlbW92ZSBmbGFnIHNwbGl0LXRocmVzaG9s ZC1mb3ItcmVnLXdpdGgtaGludCwgaXQncyBub3Qgc3VwcG9ydGVkIGluIGNsYW5nIDw9IDE3CitQ YXRjaDM1NDogY2hyb21pdW0tMTI2LXNwbGl0LXRocmVzaG9sZC1mb3ItcmVnLXdpdGgtaGludC5w YXRjaAogCiAjIHVzZSBzeXN0ZW0gbGlic3RkYysrCi1QYXRjaDM1NTogY2hyb21pdW0tMTI1LXN5 c3RlbS1saWJzdGRjKysucGF0Y2gKK1BhdGNoMzU1OiBjaHJvbWl1bS0xMjYtc3lzdGVtLWxpYnN0 ZGMrKy5wYXRjaAogCiAjIHNldCBjbGFuZ19saWIgcGF0aAogUGF0Y2gzNTg6IGNocm9taXVtLTEy NC1ydXN0LWNsYW5nX2xpYi5wYXRjaAogCi0jIEVSUk9SIFVucmVzb2x2ZWQgZGVwZW5kZW5jaWVz Ci1QYXRjaDM1OTogY2hyb21pdW0tMTI0LWxpYmF2aWYtZGVwcy5wYXRjaAotCiAjIFBvd2VyUEM2 NCBMRSBzdXBwb3J0CiAjIFBhdGNoZXMgdGFrZW4gZnJvbSBEZWJpYW4sIFRpbW90aHkgUGVhcnNv bidzIHBhdGNoc2V0CiAjIGh0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy9jaHJvbWl1bS10ZWFtL2No cm9taXVtLy0vdHJlZS9tYXN0ZXIvZGViaWFuL3BhdGNoZXMvcHBjNjRsZT9yZWZfdHlwZT1oZWFk cwpAQCAtNTY0LDEwICs1NjEsNiBAQCBQYXRjaDQxMzogZml4LXVua25vd24td2FybmluZy1vcHRp b24tbWVzc2FnZXMuZGlmZgogIyB1cHN0cmVhbSBwYXRjaGVzCiAjIDY0a3BhZ2Ugc3VwcG9ydCBv biBlbDgKIFBhdGNoNTAwOiBjaHJvbWl1bS0xMjQtZWw4LXN1cHBvcnQtNjRrcGFnZS5wYXRjaAot IyBhZGQgbWlzc2luZyBpbmNsdWRlIGZvciB1c2FnZSBvZiBGaWVsZERhdGFNYW5hZ2VyIGluIGF1 dG9maWxsX2FnZW50LmgKLVBhdGNoNTAxOiBjaHJvbWl1bS0xMjUtbWlzc2luZy1pbmNsdWRlLUZp ZWxkRGF0YU1hbmFnZXIucGF0Y2gKLSMgW2RldnRvb2xzXSBmaXggYSBtaXNzaW5nIGJ1aWxkIGRl cGVuZGVuY3kgdG8gYSBnZW5lcmF0ZWQgZmlsZQotUGF0Y2g1MDI6IGNocm9taXVtLTEyNS1kZXZ0 b29scy1idWlsZC1kZXBlbmRlbmN5LnBhdGNoCiAKICMgVXNlIGNocm9taXVtLWxhdGVzdC5weSB0 byBnZW5lcmF0ZSBjbGVhbiB0YXJiYWxsIGZyb20gcmVsZWFzZWQgYnVpbGQgdGFyYmFsbHMsIGZv dW5kIGhlcmU6CiAjIGh0dHA6Ly9idWlsZC5jaHJvbWl1bS5vcmcvYnVpbGRib3Qvb2ZmaWNpYWwv CkBAIC0xMTk1LDcgKzExODgsNyBAQCBjcCAvb3B0L3JoLyV7dG9vbHNldH0tJXtkdHNfdmVyc2lv bn0vcm9vdC91c3IvaW5jbHVkZS9jKysvJXtkdHNfdmVyc2lvbn0vb3B0aW9uYQogJXBhdGNoIC1Q MTA5IC1wMSAtYiAud2lyZWxlc3MKICVwYXRjaCAtUDExMCAtcDEgLWIgLmJ1aWxkZmxhZy1lbDcK ICVwYXRjaCAtUDExMSAtcDEgLWIgLmlubGluZS1mdW5jdGlvbi1lbDcKLSVwYXRjaCAtUDExMiAt cDEgLVIgLWIgIC5ydXN0LXByb2MtbWFjcm8yCislcGF0Y2ggLVAxMTIgLXAxIC1SIC1iIC5ydXN0 LXNfY3RyaW5nCiAlcGF0Y2ggLVAxMTMgLXAxIC1iIC5lbDctY2xhbmctdmVyc2lvbi13YXJuaW5n CiAlcGF0Y2ggLVAxMTQgLXAxIC1iIC5jbGFuZy1idWlsZC1mYWlsdXJlCiAlcGF0Y2ggLVAxMTUg LXAxIC1iIC5lbDctc2l6ZV90CkBAIC0xMjA4LDYgKzEyMDEsMTAgQEAgY3AgL29wdC9yaC8le3Rv b2xzZXR9LSV7ZHRzX3ZlcnNpb259L3Jvb3QvdXNyL2luY2x1ZGUvYysrLyV7ZHRzX3ZlcnNpb259 L29wdGlvbmEKICVwYXRjaCAtUDEyMiAtcDEgLWIgLmNvbnN0ZXhwcgogJXBhdGNoIC1QMTIzIC1w MSAtYiAuZWw3LXR5cGUtYWxpYXMKICVwYXRjaCAtUDEyNCAtcDEgLWIgLmVsNy13b3JrYXJvdW5k LWFzc2VydAorJXBhdGNoIC1QMTI1IC1wMSAtYiAuZWw3LWludGVyYXRvcgorJXBhdGNoIC1QMTI2 IC1wMSAtYiAuZWw3LWNvbG9ybWFwCislcGF0Y2ggLVAxMjcgLXAxIC1iIC5lbDctc3RkZm9ybWF0 CislcGF0Y2ggLVAxMjggLXAxIC1iIC5lbDctc3RkX3ZhcmlhbnQKICVlbmRpZgogCiAlaWYgMCV7 P3JoZWx9ID09IDkKQEAgLTEyNTAsMTIgKzEyNDcsMTQgQEAgY3AgL29wdC9yaC8le3Rvb2xzZXR9 LSV7ZHRzX3ZlcnNpb259L3Jvb3QvdXNyL2luY2x1ZGUvYysrLyV7ZHRzX3ZlcnNpb259L29wdGlv bmEKICVwYXRjaCAtUDM1MiAtcDEgLWIgLndvcmthcm91bmRfZm9yX2NyYXNoX29uX0JUSV9jYXBh YmxlX3N5c3RlbQogJWVuZGlmCiAKLSVwYXRjaCAtUDM1NCAtcDEgLWIgLnJldmVydC1zcGxpdC10 aHJlc2hvbGQtZm9yLXJlZy13aXRoLWhpbnQKKyVpZiAwJXs/cmhlbH0gJiYgMCV7P3JoZWx9IDwg MTAgfHwgMCV7P2ZlZG9yYX0gJiYgMCV7P2ZlZG9yYX0gPCAzOQorJXBhdGNoIC1QMzU0IC1wMSAt YiAuc3BsaXQtdGhyZXNob2xkLWZvci1yZWctd2l0aC1oaW50CislZW5kaWYKKwogJWlmICEgJXt1 c2VfY3VzdG9tX2xpYmN4eH0KICVwYXRjaCAtUDM1NSAtcDEgLWIgLnN5c3RlbS1saWJzdGRjKysK ICVlbmRpZgogJXBhdGNoIC1QMzU4IC1wMSAtYiAucnVzdC1jbGFuZ19saWIKLSVwYXRjaCAtUDM1 OSAtcDEgLWIgLmxpYmF2aWYtZGVwcwogCiAlaWZhcmNoIHBwYzY0bGUKICVwYXRjaCAtUDM2MCAt cDEgLWIgLjAwMDEtbGludXgtc2VjY29tcC1icGYtcHBjNjQtZ2xpYmMtd29ya2Fyb3VuZC1pbi1T SUdTWVMtaApAQCAtMTMyNSw4ICsxMzI0LDYgQEAgY3AgL29wdC9yaC8le3Rvb2xzZXR9LSV7ZHRz X3ZlcnNpb259L3Jvb3QvdXNyL2luY2x1ZGUvYysrLyV7ZHRzX3ZlcnNpb259L29wdGlvbmEKICVw YXRjaCAtUDUwMCAtcDEgLWIgLmVsOC1zdXBwb3J0LTY0a3BhZ2UucGF0Y2gKICVlbmRpZgogJWVu ZGlmCi0lcGF0Y2ggLVA1MDEgLXAxIC1iIC5taXNzaW5nLWluY2x1ZGUtRmllbGREYXRhTWFuYWdl Ci0lcGF0Y2ggLVA1MDIgLXAxIC1iIC5kZXZ0b29scy1idWlsZC1kZXBlbmRlbmN5CiAKICMgQ2hh bmdlIHNoZWJhbmcgaW4gYWxsIHJlbGV2YW50IGZpbGVzIGluIHRoaXMgZGlyZWN0b3J5IGFuZCBh bGwgc3ViZGlyZWN0b3JpZXMKICMgU2VlIGBtYW4gZmluZGAgZm9yIGhvdyB0aGUgYC1leGVjIGNv bW1hbmQge30gK2Agc3ludGF4IHdvcmtzCkBAIC0xNDAyLDExICsxMzk5LDggQEAgRkxBR1MrPScg LVduby11bnVzZWQtY29uc3QtdmFyaWFibGUgLVduby11bm5lZWRlZC1pbnRlcm5hbC1kZWNsYXJh dGlvbiAtV25vLXVua24KICVlbmRpZgogCiAlaWYgJXtzeXN0ZW1fYnVpbGRfZmxhZ3N9Ci1DRkxB R1M9JHtDRkxBR1MvLWcgfQogQ0ZMQUdTPSR7Q0ZMQUdTLy1mZXhjZXB0aW9uc30KIENGTEFHUz0k e0NGTEFHUy8tV3AsLURfR0xJQkNYWF9BU1NFUlRJT05TfQotQ0ZMQUdTPSR7Q0ZMQUdTLy1mY2Yt cHJvdGVjdGlvbn0KLUNGTEFHUz0ke0NGTEFHUy8tZnN0YWNrLWNsYXNoLXByb3RlY3Rpb259CiBD RkxBR1M9IiRDRkxBR1MgJEZMQUdTIgogQ1hYRkxBR1M9IiRDRkxBR1MiCiAlZWxzZQpAQCAtMjEz NSw2ICsyMTI5LDI3IEBAIGdldGVudCBncm91cCBjaHJvbWUtcmVtb3RlLWRlc2t0b3AgPi9kZXYv bnVsbCB8fCBncm91cGFkZCAtciBjaHJvbWUtcmVtb3RlLWRlc2t0CiAlZW5kaWYKIAogJWNoYW5n ZWxvZworKiBXZWQgSnVuIDEyIDIwMjQgVGhhbiBOZ28gPHRoYW5AcmVkaGF0LmNvbT4gLSAxMjYu MC42NDc4LjU1LTEKKy0gdXBkYXRlIHRvIDEyNi4wLjY0NzguNTUKKyAgKiBIaWdoIENWRS0yMDI0 LTU4MzA6IFR5cGUgQ29uZnVzaW9uIGluIFY4CisgICogSGlnaCBDVkUtMjAyNC01ODMxOiBVc2Ug YWZ0ZXIgZnJlZSBpbiBEYXduCisgICogSGlnaCBDVkUtMjAyNC01ODMyOiBVc2UgYWZ0ZXIgZnJl ZSBpbiBEYXduCisgICogSGlnaCBDVkUtMjAyNC01ODMzOiBUeXBlIENvbmZ1c2lvbiBpbiBWOAor ICAqIEhpZ2ggQ1ZFLTIwMjQtNTgzNDogSW5hcHByb3ByaWF0ZSBpbXBsZW1lbnRhdGlvbiBpbiBE YXduCisgICogSGlnaCBDVkUtMjAyNC01ODM1OiBIZWFwIGJ1ZmZlciBvdmVyZmxvdyBpbiBUYWIg R3JvdXBzCisgICogSGlnaCBDVkUtMjAyNC01ODM2OiBJbmFwcHJvcHJpYXRlIEltcGxlbWVudGF0 aW9uIGluIERldlRvb2xzCisgICogSGlnaCBDVkUtMjAyNC01ODM3OiBUeXBlIENvbmZ1c2lvbiBp biBWOAorICAqIEhpZ2ggQ1ZFLTIwMjQtNTgzODogVHlwZSBDb25mdXNpb24gaW4gVjgKKyAgKiBN ZWRpdW0gQ1ZFLTIwMjQtNTgzOTogSW5hcHByb3ByaWF0ZSBJbXBsZW1lbnRhdGlvbiBpbiBNZW1v cnkgQWxsb2NhdG9yCisgICogTWVkaXVtIENWRS0yMDI0LTU4NDA6IFBvbGljeSBCeXBhc3MgaW4g Q09SUworICAqIE1lZGl1bSBDVkUtMjAyNC01ODQxOiBVc2UgYWZ0ZXIgZnJlZSBpbiBWOAorICAq IE1lZGl1bSBDVkUtMjAyNC01ODQyOiBVc2UgYWZ0ZXIgZnJlZSBpbiBCcm93c2VyIFVJCisgICog TWVkaXVtIENWRS0yMDI0LTU4NDM6IEluYXBwcm9wcmlhdGUgaW1wbGVtZW50YXRpb24gaW4gRG93 bmxvYWRzCisgICogTWVkaXVtIENWRS0yMDI0LTU4NDQ6IEhlYXAgYnVmZmVyIG92ZXJmbG93IGlu IFRhYiBTdHJpcAorICAqIE1lZGl1bSBDVkUtMjAyNC01ODQ1OiBVc2UgYWZ0ZXIgZnJlZSBpbiBB dWRpbworICAqIE1lZGl1bSBDVkUtMjAyNC01ODQ2OiBVc2UgYWZ0ZXIgZnJlZSBpbiBQREZpdW0K KyAgKiBNZWRpdW0gQ1ZFLTIwMjQtNTg0NzogVXNlIGFmdGVyIGZyZWUgaW4gUERGaXVtCisKICog RnJpIE1heSAzMSAyMDI0IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+IC0gMTI1LjAuNjQyMi4x NDEtMQogLSB1cGRhdGUgdG8gMTI1LjAuNjQyMi4xNDEKICAgKiBIaWdoIENWRS0yMDI0LTU0OTM6 IEhlYXAgYnVmZmVyIG92ZXJmbG93IGluIFdlYlJUQwoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9z b3VyY2VzCmluZGV4IDRhMWY2YTMuLjM2OTJmNTUgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIv c291cmNlcwpAQCAtMiw0ICsyLDQgQEAgU0hBNTEyIChub2RlLXYyMC42LjEtbGludXgtYXJtNjQu dGFyLnh6KSA9IGFkZmNhZjJjMjI2MTQ3OTdmZDY5ZmI0NmQ5NGMxY2JmNjRkZWEKIFNIQTUxMiAo bm9kZS12MjAuNi4xLWxpbnV4LXg2NC50YXIueHopID0gN2UxNWMwNTA0MWE5YTUwZjAwNDYyNjZh YWRiMmUwOTJhNWFlZmJlYzE5YmUxYzdjODA5NDcxYWRkNTIwY2I1N2M3ZGYzYzQ3ZDg4YjE4ODhi MjliZjI5NzlkY2EzYzkyYWRkZGZkOTY1MzcwZmEyYTlkYTRlYTAyMTg2NDY0ZmQKIFNIQTUxMiAo bGludXgtYXJtNjQtMC4xOS4yLnRneikgPSA4YTBkOGZlYzY3ODZmZmZjZDY5NTRkMDA4MjAwMzdh NTVkNjFlNjA3NjJjNzQzMDBkZjA4MDFmOGRiMjcwNTc1NjJjMjIxYTA2M2JlZGZiOGRmNTZhZjli YTgwYWJiMzY2MzM2OTg3ZTg4MTc4MmM1OTk2ZTZmODcxYWJkM2RjNgogU0hBNTEyIChsaW51eC14 NjQtMC4xOS4yLnRneikgPSBhMzFjYzc0YzRiZmE1NGY5Yjc1ZDczNWExY2ZjOTQ0ZDNiNWVmYjdj MDZiZmJhOTU0MmRhOWE2NDJhZTBiMmQyMzVlYTAwYWU4NGQzYWQwNTcyYzQwNjQwNTExMGZlN2I2 MTM3N2FmMGZkMTU4MDM4MDZlZjc4ZDIwZmM2ZjA1ZAotU0hBNTEyIChjaHJvbWl1bS0xMjUuMC42 NDIyLjE0MS1jbGVhbi50YXIueHopID0gZDM5MzM3MzFjYWQ0Y2EyY2UzMmU1MzQzNzA5ZGNmZjZj NjA3NjliNDNjY2MwYmRiOTgyZjg0NjQ3N2E2NDM5OTc0YWFlZWFmYWM3NDBkZGJkYzQxMzJlOTJl MzUxMGU0NjYzZDkwOTVjYzlhMDJkNGE3Y2FkNjMyNjlhZGViZGIKK1NIQTUxMiAoY2hyb21pdW0t MTI2LjAuNjQ3OC41NS1jbGVhbi50YXIueHopID0gODAzNTk1N2NmZDI4NGY2OTBkOWZkMGUxNjc5 NGExZDUwMGVhZTljMTUwNDJkNzc1NDc4ZGM3YzNmNGVjZmQxYjc1ZWU1ODA0ZGM4NWIwMjhkNjVi NjNlNjYxZWVlNDU0NTJhYTU5YmM3NGQ5MTkxY2FlNTI5MTg4NDdlZTI3ZGIK