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: fixed many build failures on el7 Date: Fri, 07 Aug 2026 16:06:05 GMT Message-ID: <178611876560.1.14251593532365996259.rpms-chromium-08a22e283e15@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: 08a22e283e151ba14030a7acedc737081e31ac1c QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvY2hyb21pdW0KQnJh bmNoIDogZXBlbDktbmV4dApDb21taXQgOiAwOGEyMmUyODNlMTUxYmExNDAzMGE3YWNlZGM3Mzcw ODFlMzFhYzFjCkF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQHJlZGhhdC5jb20+CkRhdGUgICA6IDIw MjQtMDItMjVUMjE6NDk6MzkrMDE6MDAKU3RhdHMgIDogKzE3NDIvLTE0MjMgaW4gMTQgZmlsZShz KQpVUkwgICAgOiBodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9ycG1zL2Nocm9taXVtL2Mv MDhhMjJlMjgzZTE1MWJhMTQwMzBhN2FjZWRjNzM3MDgxZTMxYWMxYz9icmFuY2g9ZXBlbDktbmV4 dAoKTG9nOgpmaXhlZCBtYW55IGJ1aWxkIGZhaWx1cmVzIG9uIGVsNwoKLS0tCmRpZmYgLS1naXQg YS9jaHJvbWl1bS0xMTYtY29uc3RleHByLnBhdGNoIGIvY2hyb21pdW0tMTE2LWNvbnN0ZXhwci5w YXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDhiNTkzMC4uMDAwMDAwMAotLS0g YS9jaHJvbWl1bS0xMTYtY29uc3RleHByLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjUgKzAs MCBAQAotZGlmZiAtdXAgY2hyb21pdW0tMTE2LjAuNTg0NS45Ni9jYy9wYWludC9wYWludF9vcF93 cml0ZXIuaC5tZSBjaHJvbWl1bS0xMTYuMC41ODQ1Ljk2L2NjL3BhaW50L3BhaW50X29wX3dyaXRl ci5oCi0tLS0gY2hyb21pdW0tMTE2LjAuNTg0NS45Ni9jYy9wYWludC9wYWludF9vcF93cml0ZXIu aC5tZQkyMDIzLTA4LTE2IDE5OjA5OjQ4Ljk5ODE3MzI4NSArMDIwMAotKysrIGNocm9taXVtLTEx Ni4wLjU4NDUuOTYvY2MvcGFpbnQvcGFpbnRfb3Bfd3JpdGVyLmgJMjAyMy0wOC0xNiAyMToxMzo0 NC40NDI0MzE1MjcgKzAyMDAKLUBAIC0xMDQsNyArMTA0LDE2IEBAIGNsYXNzIENDX1BBSU5UX0VY UE9SVCBQYWludE9wV3JpdGVyIHsKLSAKLSAgcHJpdmF0ZToKLSAgIHRlbXBsYXRlIDx0eXBlbmFt ZSBUPgotLSAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgU2VyaWFsaXplZFNpemVTaW1wbGUoKTsK LSsgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IFNlcmlhbGl6ZWRTaXplU2ltcGxlKCkgewotKyAg ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3BvaW50ZXJfdjxUPik7Ci0rICAgIHJldHVybiBiYXNl OjpiaXRzOjpBbGlnblVwKHNpemVvZihUKSwga0RlZmF1bHRBbGlnbm1lbnQpOwotKyAgfQotKyAg Ly8gc2l6ZV90IGlzIGFsd2F5cyBzZXJpYWxpemVkIGFzIHVpbnQ2NF90IHRvIG1ha2UgdGhlIHNl cmlhbGl6ZWQgcmVzdWx0Ci0rICAvLyBwb3J0YWJsZSBiZXR3ZWVuIDMyYml0IGFuZCA2NGJpdCBw cm9jZXNzZXMuCi0rICB0ZW1wbGF0ZSA8PgotKyAgY29uc3RleHByIHNpemVfdCBTZXJpYWxpemVk U2l6ZVNpbXBsZTxzaXplX3Q+KCkgewotKyAgICByZXR1cm4gYmFzZTo6Yml0czo6QWxpZ25VcChz aXplb2YodWludDY0X3QpLCBrRGVmYXVsdEFsaWdubWVudCk7Ci0rICB9Ci0gCi0gIHB1YmxpYzoK LSAgIC8vIFNlcmlhbGl6ZWRTaXplKCkgcmV0dXJucyB0aGUgbWF4aW11bSBzZXJpYWxpemVkIHNp emUgb2YgdGhlIGdpdmVuIHR5cGUgb3IKLUBAIC0xMTUsNyArMTI0LDEwIEBAIGNsYXNzIENDX1BB SU5UX0VYUE9SVCBQYWludE9wV3JpdGVyIHsKLSAgIC8vIGRlc2VyaWFsaXphdGlvbiwgYW5kIG1h a2UgaXQgcG9zc2libGUgdG8gYWxsb3cgZHluYW1pYyBzaXppbmcgZm9yIHNvbWUKLSAgIC8vIGRh dGEgdHlwZXMgKHNlZSB0aGUgc3BlY2lhbGl6ZWQvb3ZlcmxvYWRlZCBmdW5jdGlvbnMpLgotICAg dGVtcGxhdGUgPHR5cGVuYW1lIFQ+Ci0tICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBTZXJpYWxp emVkU2l6ZSgpOwotKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgU2VyaWFsaXplZFNpemUoKSB7 Ci0rICAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljX3Y8VD4gfHwgc3RkOjppc19l bnVtX3Y8VD4pOwotKyAgICByZXR1cm4gU2VyaWFsaXplZFNpemVTaW1wbGU8VD4oKTsKLSsgIH0K LSAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgotICAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgU2Vy aWFsaXplZFNpemUoY29uc3QgVCYgZGF0YSk7Ci0gICBzdGF0aWMgc2l6ZV90IFNlcmlhbGl6ZWRT aXplKGNvbnN0IFBhaW50SW1hZ2UmIGltYWdlKTsKLUBAIC0zNjAsMTkgKzM3Miw2IEBAIGNsYXNz IENDX1BBSU5UX0VYUE9SVCBQYWludE9wV3JpdGVyIHsKLSAgIGNvbnN0IGJvb2wgZW5hYmxlX3Nl Y3VyaXR5X2NvbnN0cmFpbnRzXzsKLSB9OwotIAotLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotLWNv bnN0ZXhwciBzaXplX3QgUGFpbnRPcFdyaXRlcjo6U2VyaWFsaXplZFNpemVTaW1wbGUoKSB7Ci0t ICBzdGF0aWNfYXNzZXJ0KCFzdGQ6OmlzX3BvaW50ZXJfdjxUPik7Ci0tICByZXR1cm4gYmFzZTo6 Yml0czo6QWxpZ25VcChzaXplb2YoVCksIGtEZWZhdWx0QWxpZ25tZW50KTsKLS19Ci0tCi0tLy8g c2l6ZV90IGlzIGFsd2F5cyBzZXJpYWxpemVkIGFzIHR3byB1aW50MzJfdHMgdG8gbWFrZSB0aGUg c2VyaWFsaXplZCByZXN1bHQKLS0vLyBwb3J0YWJsZSBiZXR3ZWVuIDMyYml0IGFuZCA2NGJpdCBw cm9jZXNzZXMuCi0tdGVtcGxhdGUgPD4KLS1jb25zdGV4cHIgc2l6ZV90IFBhaW50T3BXcml0ZXI6 OlNlcmlhbGl6ZWRTaXplU2ltcGxlPHNpemVfdD4oKSB7Ci0tICByZXR1cm4gYmFzZTo6Yml0czo6 QWxpZ25VcCgyICogc2l6ZW9mKHVpbnQzMl90KSwga0RlZmF1bHRBbGlnbm1lbnQpOwotLX0KLS0K LSB0ZW1wbGF0ZSA8PgotIGNvbnN0ZXhwciBzaXplX3QgUGFpbnRPcFdyaXRlcjo6U2VyaWFsaXpl ZFNpemU8U2tHYWlubWFwSW5mbz4oKSB7Ci0gICByZXR1cm4gU2VyaWFsaXplZFNpemVTaW1wbGU8 U2tDb2xvcjRmPigpICsgIC8vIGZHYWlubWFwUmF0aW9NaW4KLUBAIC0zODYsMTEgKzM4NSw2IEBA IGNvbnN0ZXhwciBzaXplX3QgUGFpbnRPcFdyaXRlcjo6U2VyaWFsaXoKLSB9Ci0gCi0gdGVtcGxh dGUgPHR5cGVuYW1lIFQ+Ci0tY29uc3RleHByIHNpemVfdCBQYWludE9wV3JpdGVyOjpTZXJpYWxp emVkU2l6ZSgpIHsKLS0gIHN0YXRpY19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljX3Y8VD4gfHwg c3RkOjppc19lbnVtX3Y8VD4pOwotLSAgcmV0dXJuIFNlcmlhbGl6ZWRTaXplU2ltcGxlPFQ+KCk7 Ci0tfQotLXRlbXBsYXRlIDx0eXBlbmFtZSBUPgotIGNvbnN0ZXhwciBzaXplX3QgUGFpbnRPcFdy aXRlcjo6U2VyaWFsaXplZFNpemUoY29uc3QgVCYgZGF0YSkgewotICAgcmV0dXJuIFNlcmlhbGl6 ZWRTaXplU2ltcGxlPFQ+KCk7Ci0gfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMC1lbDctZXh0 cmEtb3BlcmF0b3IucGF0Y2ggYi9jaHJvbWl1bS0xMjAtZWw3LWV4dHJhLW9wZXJhdG9yLnBhdGNo CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjZlODVmLi4wMDAwMDAwCi0tLSBhL2No cm9taXVtLTEyMC1lbDctZXh0cmEtb3BlcmF0b3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwy NiArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMjAuMC42MDk5LjM1L2Jhc2UvYWxsb2NhdG9y L3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9zdGFyc2Nhbi9tZXRhZGF0 YV9hbGxvY2F0b3IuaC5tZSBjaHJvbWl1bS0xMjAuMC42MDk5LjM1L2Jhc2UvYWxsb2NhdG9yL3Bh cnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlvbl9hbGxvYy9zdGFyc2Nhbi9tZXRhZGF0YV9h bGxvY2F0b3IuaAotLS0tIGNocm9taXVtLTEyMC4wLjYwOTkuMzUvYmFzZS9hbGxvY2F0b3IvcGFy dGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL3N0YXJzY2FuL21ldGFkYXRhX2Fs bG9jYXRvci5oLm1lCTIwMjMtMTEtMjYgMTM6MzM6MTEuNTQ3NDA5NzEzICswMTAwCi0rKysgY2hy b21pdW0tMTIwLjAuNjA5OS4zNS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxsb2NhdG9yL3Ny Yy9wYXJ0aXRpb25fYWxsb2Mvc3RhcnNjYW4vbWV0YWRhdGFfYWxsb2NhdG9yLmgJMjAyMy0xMS0y NiAxMzozNTowMi42NzkzNjMxNjcgKzAxMDAKLUBAIC00MCw2ICs0MCwxMSBAQCBjbGFzcyBNZXRh ZGF0YUFsbG9jYXRvciB7Ci0gICB9Ci0gCi0gICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSsgIGJv b2wgb3BlcmF0b3I9PShjb25zdCBNZXRhZGF0YUFsbG9jYXRvcjxVPiYpIGNvbnN0IHsKLSsgICAg cmV0dXJuIHRydWU7Ci0rICB9Ci0rCi0rICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVT4KLSAgIGJvb2wg b3BlcmF0b3IhPShjb25zdCBNZXRhZGF0YUFsbG9jYXRvcjxVPiYgbykgewotICAgICByZXR1cm4g IW9wZXJhdG9yPT0obyk7Ci0gICB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjAuMC42MDk5LjM1L3Ro aXJkX3BhcnR5L3BkZml1bS9jb3JlL2Z4Y3J0L2Z4X21lbW9yeV93cmFwcGVycy5oLm1lIGNocm9t aXVtLTEyMC4wLjYwOTkuMzUvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnhjcnQvZnhfbWVtb3J5 X3dyYXBwZXJzLmgKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjM1L3RoaXJkX3BhcnR5L3BkZml1 bS9jb3JlL2Z4Y3J0L2Z4X21lbW9yeV93cmFwcGVycy5oLm1lCTIwMjMtMTEtMjIgMjA6MzQ6MTEu MDAwMDAwMDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIwLjAuNjA5OS4zNS90aGlyZF9wYXJ0eS9w ZGZpdW0vY29yZS9meGNydC9meF9tZW1vcnlfd3JhcHBlcnMuaAkyMDIzLTExLTI2IDEzOjMwOjM4 Ljk2MTcyNDY1MyArMDEwMAotQEAgLTgyLDYgKzgyLDcgQEAgc3RydWN0IEZ4UGFydGl0aW9uQWxs b2NBbGxvY2F0b3IgewotICAgfQotIAotICAgLy8gVGhlcmUncyBubyBzdGF0ZSwgc28gdGhleSBh cmUgYWxsIHRoZSBzYW1lLAotKyAgYm9vbCBvcGVyYXRvcj09KGNvbnN0IEZ4UGFydGl0aW9uQWxs b2NBbGxvY2F0b3ImKSBjb25zdCB7IHJldHVybiB0cnVlOyB9Ci0gICBib29sIG9wZXJhdG9yPT0o Y29uc3QgRnhQYXJ0aXRpb25BbGxvY0FsbG9jYXRvciYgdGhhdCkgeyByZXR1cm4gdHJ1ZTsgfQot ICAgYm9vbCBvcGVyYXRvciE9KGNvbnN0IEZ4UGFydGl0aW9uQWxsb2NBbGxvY2F0b3ImIHRoYXQp IHsgcmV0dXJuIGZhbHNlOyB9Ci0gfTsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjEtZWw3LWRl ZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbi5wYXRjaCBiL2Nocm9t aXVtLTEyMS1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9u LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDhjODFjLi4wMDAwMDAwCi0t LSBhL2Nocm9taXVtLTEyMS1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnlt b3VzLXVuaW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotZGlmZiAtdXAg Y2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVh ZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmNjLm1lIGNocm9taXVtLTEyMS4wLjYxNjcu NTcvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxs ZXJfc2lnbmFscy5jYwotLS0tIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvY29udGVudC9icm93c2Vy L2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5jYy5tZQky MDI0LTAxLTIzIDE1OjEzOjExLjQ2OTEwNDY5NCArMDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYx NjcuNTcvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9z ZWxsZXJfc2lnbmFscy5jYwkyMDI0LTAxLTIzIDE1OjExOjQwLjExNzg0MjAxNSArMDEwMAotQEAg LTQ2LDcgKzQ2LDcgQEAgc2l6ZV90IEdldFJlc3VsdFNpemVCeXRlcyhjb25zdCBIZWFkZXJEaQot IAotIH0gIC8vIG5hbWVzcGFjZQotIAotLUhlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxzOjpS ZXN1bHQ6OlJlc3VsdCgpID0gZGVmYXVsdDsKLStIZWFkZXJEaXJlY3RGcm9tU2VsbGVyU2lnbmFs czo6UmVzdWx0OjpSZXN1bHQoKSB7fQotIAotIEhlYWRlckRpcmVjdEZyb21TZWxsZXJTaWduYWxz OjpSZXN1bHQ6OlJlc3VsdCgKLSAgICAgYWJzbDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IHNlbGxl cl9zaWduYWxzLAotZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb21wb25lbnRzL3Zh cmlhdGlvbnMvc2VydmljZS91aV9zdHJpbmdfb3ZlcnJpZGVyLmNjLm1lIGNocm9taXVtLTEyMS4w LjYxNjcuNTcvY29tcG9uZW50cy92YXJpYXRpb25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJyaWRl ci5jYwotLS0tIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvY29tcG9uZW50cy92YXJpYXRpb25zL3Nl cnZpY2UvdWlfc3RyaW5nX292ZXJyaWRlci5jYy5tZQkyMDI0LTAxLTI0IDA4OjA3OjUwLjE5MTE4 ODM5NyArMDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvY29tcG9uZW50cy92YXJpYXRp b25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJyaWRlci5jYwkyMDI0LTAxLTI0IDA4OjA4OjU1Ljkw NTY3NjYzNCArMDEwMAotQEAgLTEyLDcgKzEyLDcgQEAKLSAKLSBuYW1lc3BhY2UgdmFyaWF0aW9u cyB7Ci0gCi0tVUlTdHJpbmdPdmVycmlkZXI6OlVJU3RyaW5nT3ZlcnJpZGVyKCkgPSBkZWZhdWx0 OwotK1VJU3RyaW5nT3ZlcnJpZGVyOjpVSVN0cmluZ092ZXJyaWRlcigpIHt9Ci0gCi0gVUlTdHJp bmdPdmVycmlkZXI6OlVJU3RyaW5nT3ZlcnJpZGVyKGJhc2U6OnNwYW48Y29uc3QgdWludDMyX3Q+ IHJlc291cmNlX2hhc2hlcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YmFzZTo6c3Bhbjxjb25zdCBpbnQ+IHJlc291cmNlX2luZGljZXMpCgpkaWZmIC0tZ2l0IGEvY2hy b21pdW0tMTIxLW5vX21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoIGIvY2hyb21pdW0tMTIxLW5v X21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRl eCAyMzFjZGQzLi4wMDAwMDAwCi0tLSBhL2Nocm9taXVtLTEyMS1ub19tYXRjaGluZ19jb25zdHJ1 Y3Rvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk4MCArMCwwIEBACi1kaWZmIC11cCBjaHJv bWl1bS0xMjAuMC42MDk5LjU2L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxv Y2F0b3IuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9i YXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjCi0tLS0gY2hyb21p dW0tMTIwLjAuNjA5OS41Ni9iYXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2Nh dG9yLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjMtMTEtMjkgMjI6Mzk6NDAuMDAwMDAw MDAwICswMTAwCi0rKysgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9iYXNlL21ldHJpY3MvcGVyc2lz dGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzQ4NDIwMTg5 ICswMTAwCi1AQCAtMjE4LDEzICsyMTgsMTMgQEAgUGVyc2lzdGVudFNwYXJzZUhpc3RvZ3JhbURh dGFNYW5hZ2VyOjpMbwotICAgICAvLyBUaGUgc2FtcGxlLXJlY29yZCBjb3VsZCBiZSBmb3IgYW55 IHNwYXJzZSBoaXN0b2dyYW0uIEFkZCB0aGUgcmVmZXJlbmNlCi0gICAgIC8vIHRvIHRoZSBhcHBy b3ByaWF0ZSBjb2xsZWN0aW9uIGZvciBsYXRlciB1c2UuCi0gICAgIGlmIChmb3VuZF9pZCA9PSBt YXRjaF9pZCkgewotLSAgICAgIGZvdW5kX3JlY29yZHMuZW1wbGFjZV9iYWNrKHJlZiwgdmFsdWUp OwotKyAgICAgIGZvdW5kX3JlY29yZHMuZW1wbGFjZV9iYWNrKCkgPSB7cmVmLCB2YWx1ZX07Ci0g ICAgICAgZm91bmQgPSB0cnVlOwotICAgICB9IGVsc2UgewotICAgICAgIHN0ZDo6dmVjdG9yPFJl ZmVyZW5jZUFuZFNhbXBsZT4qIHNhbXBsZXMgPQotICAgICAgICAgICBHZXRTYW1wbGVNYXBSZWNv cmRzV2hpbGVMb2NrZWQoZm91bmRfaWQpOwotICAgICAgIENIRUNLKHNhbXBsZXMpOwotLSAgICAg IHNhbXBsZXMtPmVtcGxhY2VfYmFjayhyZWYsIHZhbHVlKTsKLSsgICAgICBzYW1wbGVzLT5lbXBs YWNlX2JhY2soKSA9IHtyZWYsIHZhbHVlfTsKLSAgICAgfQotICAgfQotIAotZGlmZiAtdXAgY2hy b21pdW0tMTIwLjAuNjA5OS41Ni9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYy5ub19tYXRj aGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Jhc2UvdHJhY2VfZXZlbnQv dHJhY2VfbG9nLmNjCi0tLS0gY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9iYXNlL3RyYWNlX2V2ZW50 L3RyYWNlX2xvZy5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDIzLTExLTI5IDIyOjM5OjQw LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvYmFzZS90cmFjZV9l dmVudC90cmFjZV9sb2cuY2MJMjAyMy0xMi0wMyAxNzozMToyNS43NDk0MjAyMDggKzAxMDAKLUBA IC0yMTkxLDggKzIxOTEsOCBAQCB2b2lkIFRyYWNlTG9nOjpTZXRUcmFjZUJ1ZmZlckZvclRlc3Rp bmcoCi0gI2lmIEJVSUxERkxBRyhVU0VfUEVSRkVUVE9fQ0xJRU5UX0xJQlJBUlkpCi0gdm9pZCBU cmFjZUxvZzo6T25TZXR1cChjb25zdCBwZXJmZXR0bzo6RGF0YVNvdXJjZUJhc2U6OlNldHVwQXJn cyYgYXJncykgewotICAgQXV0b0xvY2sgbG9jayh0cmFja19ldmVudF9sb2NrXyk7Ci0tICB0cmFj a19ldmVudF9zZXNzaW9uc18uZW1wbGFjZV9iYWNrKGFyZ3MuaW50ZXJuYWxfaW5zdGFuY2VfaW5k ZXgsICphcmdzLmNvbmZpZywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg YXJncy5iYWNrZW5kX3R5cGUpOwotKyAgdHJhY2tfZXZlbnRfc2Vzc2lvbnNfLmVtcGxhY2VfYmFj aygpID0ge2FyZ3MuaW50ZXJuYWxfaW5zdGFuY2VfaW5kZXgsICphcmdzLmNvbmZpZywKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5iYWNrZW5kX3R5cGV9OwotIH0K LSAKLSB2b2lkIFRyYWNlTG9nOjpPblN0YXJ0KGNvbnN0IHBlcmZldHRvOjpEYXRhU291cmNlQmFz ZTo6U3RhcnRBcmdzJikgewotZGlmZiAtdXAgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jaHJvbWUv YnJvd3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2Mu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJv d3Nlci9jb250ZW50X3NldHRpbmdzL29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2MKLS0t LSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Nocm9tZS9icm93c2VyL2NvbnRlbnRfc2V0dGluZ3Mv b25lX3RpbWVfcGVybWlzc2lvbl9wcm92aWRlci5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rvcgky MDIzLTExLTI5IDIyOjM5OjQ3LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYw OTkuNTYvY2hyb21lL2Jyb3dzZXIvY29udGVudF9zZXR0aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9u X3Byb3ZpZGVyLmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzQ5NDIwMjA4ICswMTAwCi1AQCAtMjI2 LDggKzIyNiw4IEBAIHZvaWQgT25lVGltZVBlcm1pc3Npb25Qcm92aWRlcjo6T25TdXNwZW4KLSAK LSAgICAgICB3aGlsZSAocnVsZV9pdGVyYXRvciAmJiBydWxlX2l0ZXJhdG9yLT5IYXNOZXh0KCkp IHsKLSAgICAgICAgIGF1dG8gcnVsZSA9IHJ1bGVfaXRlcmF0b3ItPk5leHQoKTsKLS0gICAgICAg IHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2soc2V0dGluZ190eXBlLCBydWxlLT5wcmlt YXJ5X3BhdHRlcm4sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1 bGUtPnNlY29uZGFyeV9wYXR0ZXJuKTsKLSsgICAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBs YWNlX2JhY2soKSA9IHtzZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVybiwKLSsgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVsZS0+c2Vjb25kYXJ5X3BhdHRl cm59OwotICAgICAgICAgcGVybWlzc2lvbnM6OlBlcm1pc3Npb25VbWFVdGlsOjpSZWNvcmRPbmVU aW1lUGVybWlzc2lvbkV2ZW50KAotICAgICAgICAgICAgIHNldHRpbmdfdHlwZSwKLSAgICAgICAg ICAgICBwZXJtaXNzaW9uczo6T25lVGltZVBlcm1pc3Npb25FdmVudDo6RVhQSVJFRF9PTl9TVVNQ RU5EKTsKLUBAIC0zMjksOCArMzI5LDggQEAgdm9pZCBPbmVUaW1lUGVybWlzc2lvblByb3ZpZGVy OjpEZWxldGVFbgotICAgICBhdXRvIHJ1bGUgPSBydWxlX2l0ZXJhdG9yLT5OZXh0KCk7Ci0gICAg IGlmIChydWxlLT5wcmltYXJ5X3BhdHRlcm4uTWF0Y2hlcyhvcmlnaW5fZ3VybCkgJiYKLSAgICAg ICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0ZXJuLk1hdGNoZXMob3JpZ2luX2d1cmwpKSB7Ci0tICAg ICAgcGF0dGVybnNfdG9fZGVsZXRlLmVtcGxhY2VfYmFjaygKLS0gICAgICAgICAgY29udGVudF9z ZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRl cm4pOwotKyAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2soKSA9IHsKLSsgICAg ICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVybiwgcnVsZS0+ c2Vjb25kYXJ5X3BhdHRlcm59OwotICAgICAgIHBlcm1pc3Npb25zOjpQZXJtaXNzaW9uVW1hVXRp bDo6UmVjb3JkT25lVGltZVBlcm1pc3Npb25FdmVudCgKLSAgICAgICAgICAgY29udGVudF9zZXR0 aW5nX3R5cGUsIHRyaWdnZXJfZXZlbnQpOwotICAgICB9Ci1kaWZmIC11cCBjaHJvbWl1bS0xMjAu MC42MDk5LjU2L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3By b2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxlLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY2hyb21lL2Jyb3dzZXIvZW50ZXJwcmlzZS9w cm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhyb3R0bGUu Y2MKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Nocm9tZS9icm93c2VyL2VudGVycHJpc2Uv cHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9uYXZpZ2F0aW9uX3Rocm90dGxl LmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yCTIwMjMtMTEtMjkgMjI6Mzk6NDguMDAwMDAwMDAw ICswMTAwCi0rKysgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJvd3Nlci9lbnRlcnBy aXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRfbmF2aWdhdGlvbl90aHJv dHRsZS5jYwkyMDIzLTEyLTAzIDE3OjMxOjI1Ljc0OTQyMDIwOCArMDEwMAotQEAgLTY3LDggKzY3 LDggQEAgYmFzZTo6ZmxhdF9tYXA8c3RkOjpzdHJpbmcsIFNBTUxQcm9maWxlQQotICAgLy8gVE9E TyhjcmJ1Zy5jb20vMTQ0NTA3Mik6IEFkZCBhY3R1YWwgZG9tYWlucyB3aXRoIGF0dHJpYnV0ZSBu YW1lcy4KLSAgIHByb2ZpbGVfYXR0cmlidXRlcy0+aW5zZXJ0KHN0ZDo6bWFrZV9wYWlyKAotICAg ICAgICJzdXBwb3J0ZWQudGVzdCIsCi0tICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1dGVzKCJwbGFj ZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiIpKSk7Ci0rICAgICAgU0FNTFByb2ZpbGVBdHRyaWJ1 dGVzeyJwbGFjZWhvbGRlck5hbWUiLCAicGxhY2Vob2xkZXJEb21haW4iLAotKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAicGxhY2Vob2xkZXJUb2tlbiJ9KSk7Ci0gCi0gICAvLyBFeHRyYWN0 IGRvbWFpbnMgYW5kIGF0dHJpYnV0ZXMgZnJvbSB0aGUgY29tbWFuZCBsaW5lIHN3aXRjaC4KLSAg IGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjb21tYW5kX2xpbmUgPQotZGlmZiAtdXAgY2hyb21p dW0tMTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5pYm94 X2NsaWVudC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJvbWl1bS0xMjAuMC42MDk5LjU2 L2Nocm9tZS9icm93c2VyL3VpL29tbmlib3gvY2hyb21lX29tbmlib3hfY2xpZW50LmNjCi0tLS0g Y2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9v bW5pYm94X2NsaWVudC5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDIzLTExLTI5IDIyOjM5 OjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY2hyb21lL2Jy b3dzZXIvdWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9jbGllbnQuY2MJMjAyMy0xMi0wMyAxNzoz MToyNS43NDk0MjAyMDggKzAxMDAKLUBAIC00NzQsMTAgKzQ3NCwxMCBAQCB2b2lkIENocm9tZU9t bmlib3hDbGllbnQ6Ok9uQXV0b2NvbXBsZXRlCi0gICAgICAgICAgICAgICBhbHRlcm5hdGl2ZV9u YXZfbWF0Y2gpOwotIAotICAgLy8gU3RvcmUgdGhlIGRldGFpbHMgbmVjZXNzYXJ5IHRvIG9wZW4g dGhlIG9tbmlib3ggbWF0Y2ggdmlhIGJyb3dzZXIgY29tbWFuZHMuCi0tICBsb2NhdGlvbl9iYXJf LT5zZXRfbmF2aWdhdGlvbl9wYXJhbXMoTG9jYXRpb25CYXI6Ok5hdmlnYXRpb25QYXJhbXMoCi0r ICBsb2NhdGlvbl9iYXJfLT5zZXRfbmF2aWdhdGlvbl9wYXJhbXMoTG9jYXRpb25CYXI6Ok5hdmln YXRpb25QYXJhbXN7Ci0gICAgICAgZGVzdGluYXRpb25fdXJsLCBkaXNwb3NpdGlvbiwgdHJhbnNp dGlvbiwgbWF0Y2hfc2VsZWN0aW9uX3RpbWVzdGFtcCwKLSAgICAgICBkZXN0aW5hdGlvbl91cmxf ZW50ZXJlZF93aXRob3V0X3NjaGVtZSwKLS0gICAgICBkZXN0aW5hdGlvbl91cmxfZW50ZXJlZF93 aXRoX2h0dHBfc2NoZW1lKSk7Ci0rICAgICAgZGVzdGluYXRpb25fdXJsX2VudGVyZWRfd2l0aF9o dHRwX3NjaGVtZX0pOwotIAotICAgaWYgKGJyb3dzZXJfKSB7Ci0gICAgIGF1dG8gbmF2aWdhdGlv biA9IGNocm9tZTo6T3BlbkN1cnJlbnRVUkwoYnJvd3Nlcl8pOwotZGlmZiAtdXAgY2hyb21pdW0t MTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0 aW9uX3NlcnZpY2UuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTIwLjAuNjA5 OS41Ni9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0aW9uX3NlcnZp Y2UuY2MKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0 eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2VydmljZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv cgkyMDIzLTExLTI5IDIyOjM5OjUyLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4w LjYwOTkuNTYvY2hyb21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9z ZXJ2aWNlLmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzU2NDIwMzQyICswMTAwCi1AQCAtMTQ4LDgg KzE0OCw4IEBAIFNhZmV0eUh1Yk1lbnVOb3RpZmljYXRpb25TZXJ2aWNlOjpHZXROb3QKLSAgIC8v IFRoZSBpbmZvcm1hdGlvbiByZWxhdGVkIHRvIHNob3dpbmcgdGhlIG5vdGlmaWNhdGlvbiBuZWVk cyB0byBiZSBwZXJzaXN0ZWQKLSAgIC8vIGFzIHdlbGwuCi0gICBTYXZlTm90aWZpY2F0aW9uc1Rv UHJlZnMoKTsKLS0gIHJldHVybiBNZW51Tm90aWZpY2F0aW9uRW50cnkobm90aWZpY2F0aW9uX3Rv X3Nob3ctPkdldE5vdGlmaWNhdGlvbkNvbW1hbmRJZCgpLAotLSAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBub3RpZmljYXRpb25fdG9fc2hvdy0+R2V0Tm90aWZpY2F0aW9uU3RyaW5nKCkp OwotKyAgcmV0dXJuIE1lbnVOb3RpZmljYXRpb25FbnRyeXtub3RpZmljYXRpb25fdG9fc2hvdy0+ R2V0Tm90aWZpY2F0aW9uQ29tbWFuZElkKCksCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgIG5vdGlmaWNhdGlvbl90b19zaG93LT5HZXROb3RpZmljYXRpb25TdHJpbmcoKX07Ci0gfQot IAotIGFic2w6Om9wdGlvbmFsPFJlc3VsdE1hcD4KLWRpZmYgLXVwIGNocm9taXVtLTEyMC4wLjYw OTkuNTYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlz c2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0t MTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRl ZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYwotLS0tIGNocm9taXVtLTEyMC4wLjYwOTku NTYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lv bl9wcm9tcHRfYXNrX3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyMy0xMS0yOSAy MjozOTo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Nocm9t ZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0 X2Fza192aWV3LmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzQ5NDIwMjA4ICswMTAwCi1AQCAtNTUs MTIgKzU1LDEyIEBAIHN0ZDo6dmVjdG9yPEVtYmVkZGVkUGVybWlzc2lvblByb21wdEFza1YKLSBF bWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRBc2tWaWV3OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigp IGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1dHRvbkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7Ci0g ICBpZiAoYmFzZTo6RmVhdHVyZUxpc3Q6OklzRW5hYmxlZChwZXJtaXNzaW9uczo6ZmVhdHVyZXM6 OmtPbmVUaW1lUGVybWlzc2lvbikpIHsKLS0gICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCi0rICAg IGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICBsMTBuX3V0aWw6OkdldFN0cmlu Z1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XX1RISVNfVElNRSksCi0tICAgICAgICBCdXR0b25U eXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOwotKyAgICAgICAg QnV0dG9uVHlwZTo6a0FsbG93VGhpc1RpbWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAg IH0KLS0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURT X1BFUk1JU1NJT05fQUxMT1cpLAotLSAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6 a0FsbG93LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga0FsbG93SWQpOwotKyAgYnV0dG9ucy5l bXBsYWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9O X0FMTE9XKSwKLSsgICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6 OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd0lkfTsKLSAgIHJldHVybiBidXR0b25zOwotIH0K LSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY2hyb21lL2Jyb3dzZXIvdWkvdmll d3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3Lmgubm9f bWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJvd3Nl ci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3Zp ZXcuaAotLS0tIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3Mv cGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3Lmgubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IJMjAyMy0xMS0yOSAyMjozOTo1My4wMDAwMDAwMDAgKzAxMDAKLSsr KyBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Np b25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oCTIwMjMtMTItMDMgMTc6 MzE6MjUuNzUwNDIwMjI3ICswMTAwCi1AQCAtODYsNiArODYsNyBAQCBjbGFzcyBFbWJlZGRlZFBl cm1pc3Npb25Qcm9tcHRCYXNlVmlldyA6Ci0gICBzdHJ1Y3QgUmVxdWVzdExpbmVDb25maWd1cmF0 aW9uIHsKLSAgICAgY29uc3QgcmF3X3B0cjxjb25zdCBnZng6OlZlY3Rvckljb24+IGljb247Ci0g ICAgIHN0ZDo6dTE2c3RyaW5nIG1lc3NhZ2U7Ci0rICAgIFJlcXVlc3RMaW5lQ29uZmlndXJhdGlv bihhdXRvIGksIGF1dG8gbSkgOiBpY29uKGkpLCBtZXNzYWdlKG0pIHsgfQotICAgfTsKLSAKLSAg IHN0cnVjdCBCdXR0b25Db25maWd1cmF0aW9uIHsKLWRpZmYgLXVwIGNocm9taXVtLTEyMC4wLjYw OTkuNTYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlz c2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTIwLjAuNjA5OS41Ni9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJl ZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmlldy5jYwotLS0tIGNocm9taXVtLTEyMC4w LjYwOTkuNTYvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVy bWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy My0xMS0yOSAyMjozOTo1My4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjAuMC42MDk5 LjU2L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Np b25fcHJvbXB0X3BvbGljeV92aWV3LmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzUwNDIwMjI3ICsw MTAwCi1AQCAtNDgsOCArNDgsOCBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3 OjpHZXRSCi0gc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6 QnV0dG9uQ29uZmlndXJhdGlvbj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQb2xpY3lWaWV3 OjpHZXRCdXR0b25zQ29uZmlndXJhdGlvbigpIGNvbnN0IHsKLSAgIHN0ZDo6dmVjdG9yPEJ1dHRv bkNvbmZpZ3VyYXRpb24+IGJ1dHRvbnM7Ci0tICBidXR0b25zLmVtcGxhY2VfYmFjayhsMTBuX3V0 aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRfT0tfTEFCRUwpLAotLSAgICAg ICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a1BvbGljeU9LLCB1aTo6QnV0dG9uU3R5bGU6 OmtUb25hbCk7Ci0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3Ry aW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9PS19MQUJFTCksCi0rICAgICAgICAgICAgICAg ICAgICAgICBCdXR0b25UeXBlOjprUG9saWN5T0ssIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsK LSAgIHJldHVybiBidXR0b25zOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMC4wLjYwOTku NTYvY2hyb21lL3Rlc3QvY2hyb21lZHJpdmVyL2NhcGFiaWxpdGllcy5jYy5ub19tYXRjaGluZ19j b25zdHJ1Y3RvciBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZl ci9jYXBhYmlsaXRpZXMuY2MKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Nocm9tZS90ZXN0 L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAy My0xMS0yOSAyMjozOTo1NC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjAuMC42MDk5 LjU2L2Nocm9tZS90ZXN0L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MJMjAyMy0xMi0wMyAx NzozMToyNS43NTA0MjAyMjcgKzAxMDAKLUBAIC0zNDYsNyArMzQ2LDcgQEAgU3RhdHVzIFBhcnNl TW9iaWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgotICAgICAgICAgICAgICAgICAgICAgICAgICIn dmVyc2lvbicgZmllbGQgb2YgdHlwZSBzdHJpbmciKTsKLSAgICAgICAgIH0KLSAKLS0gICAgICAg IGJyYW5kcy5lbXBsYWNlX2JhY2soKmJyYW5kLCAqdmVyc2lvbik7Ci0rICAgICAgICBicmFuZHMu ZW1wbGFjZV9iYWNrKCkgPSB7KmJyYW5kLCAqdmVyc2lvbn07Ci0gICAgICAgfQotIAotICAgICAg IGNsaWVudF9oaW50cy5icmFuZHMgPSBzdGQ6Om1vdmUoYnJhbmRzKTsKLUBAIC0zODQsNyArMzg0 LDcgQEAgU3RhdHVzIFBhcnNlTW9iaWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgotICAgICAgICAg ICAgICAgICAgICAgICAgICJhICd2ZXJzaW9uJyBmaWVsZCBvZiB0eXBlIHN0cmluZyIpOwotICAg ICAgICAgfQotIAotLSAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCpicmFu ZCwgKnZlcnNpb24pOwotKyAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCkg PSB7KmJyYW5kLCAqdmVyc2lvbn07Ci0gICAgICAgfQotIAotICAgICAgIGNsaWVudF9oaW50cy5m dWxsX3ZlcnNpb25fbGlzdCA9IHN0ZDo6bW92ZShmdWxsX3ZlcnNpb25fbGlzdCk7Ci1kaWZmIC11 cCBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2Vy L2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2Mubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21p dW0tMTIwLjAuNjA5OS41Ni9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9jb250YWN0 X2luZm9fc3luY191dGlsLmNjCi0tLS0gY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jb21wb25lbnRz L2F1dG9maWxsL2NvcmUvYnJvd3Nlci9jb250YWN0X2luZm9fc3luY191dGlsLmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yCTIwMjMtMTEtMjkgMjI6Mzk6NTcuMDAwMDAwMDAwICswMTAwCi0rKysg Y2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci9j b250YWN0X2luZm9fc3luY191dGlsLmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzUwNDIwMjI3ICsw MTAwCi1AQCAtMTk3LDkgKzE5Nyw5IEBAIGNsYXNzIENvbnRhY3RJbmZvUHJvZmlsZVNldHRlciB7 Ci0gICAgICAgQ0hFQ0sob2JzZXJ2YXRpb25zLmVtcHR5KCkpOwotICAgICAgIGZvciAoY29uc3Qg c3luY19wYjo6Q29udGFjdEluZm9TcGVjaWZpY3M6Ok9ic2VydmF0aW9uJiBwcm90b19vYnNlcnZh dGlvbiA6Ci0gICAgICAgICAgICBtZXRhZGF0YS5vYnNlcnZhdGlvbnMoKSkgewotLSAgICAgICAg b2JzZXJ2YXRpb25zLmVtcGxhY2VfYmFjayhwcm90b19vYnNlcnZhdGlvbi50eXBlKCksCi0rICAg ICAgICBvYnNlcnZhdGlvbnMuZW1wbGFjZV9iYWNrKCkgPSB7c3RhdGljX2Nhc3Q8dW5zaWduZWQg Y2hhcj4ocHJvdG9fb2JzZXJ2YXRpb24udHlwZSgpKSwKLSAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgUHJvZmlsZVRva2VuUXVhbGl0eTo6Rm9ybVNpZ25hdHVyZUhhc2goCi0tICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b19vYnNlcnZhdGlvbi5mb3Jt X2hhc2goKSkpOwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvdG9f b2JzZXJ2YXRpb24uZm9ybV9oYXNoKCkpfTsKLSAgICAgICB9Ci0gICAgIH0KLSAgIH0KLWRpZmYg LXVwIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dz ZXIvd2ViZGF0YS9hdXRvZmlsbF90YWJsZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvciBjaHJv bWl1bS0xMjAuMC42MDk5LjU2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRh dGEvYXV0b2ZpbGxfdGFibGUuY2MKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2NvbXBvbmVu dHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dlYmRhdGEvYXV0b2ZpbGxfdGFibGUuY2Mubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IJMjAyMy0xMS0yOSAyMjozOTo1Ny4wMDAwMDAwMDAgKzAxMDAKLSsr KyBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2Vy L3dlYmRhdGEvYXV0b2ZpbGxfdGFibGUuY2MJMjAyMy0xMi0wMyAxNzozMToyNS43NTE0MjAyNDYg KzAxMDAKLUBAIC0xNzYzLDEwICsxNzYzLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZmlsbFBy b2ZpbGU+IEF1dG9maWwKLSAgICAgfQotIAotICAgICBiYXNlOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+ IG9ic2VydmF0aW9uc19kYXRhID0gcy5Db2x1bW5CbG9iKDMpOwotLSAgICBmaWVsZF90eXBlX3Zh bHVlcy5lbXBsYWNlX2JhY2soCi0rICAgIGZpZWxkX3R5cGVfdmFsdWVzLmVtcGxhY2VfYmFjaygp ID0gewotICAgICAgICAgdHlwZSwgcy5Db2x1bW5TdHJpbmcxNigxKSwgcy5Db2x1bW5JbnQoMiks Ci0gICAgICAgICBzdGQ6OnZlY3Rvcjx1aW50OF90PihvYnNlcnZhdGlvbnNfZGF0YS5iZWdpbigp LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YXRpb25zX2RhdGEuZW5kKCkp KTsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmF0aW9uc19kYXRhLmVuZCgp KX07Ci0gCi0gICAgIGlmICh0eXBlID09IEFERFJFU1NfSE9NRV9DT1VOVFJZKSB7Ci0gICAgICAg Y291bnRyeV9jb2RlID0gYmFzZTo6VVRGMTZUb1VURjgocy5Db2x1bW5TdHJpbmcxNigxKSk7Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlz cGxheV9lbWJlZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjLm5vX21hdGNo aW5nX2NvbnN0cnVjdG9yIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY29tcG9uZW50cy92aXovc2Vy dmljZS9kaXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2MK LS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2NvbXBvbmVudHMvdml6L3NlcnZpY2UvZGlzcGxh eV9lbWJlZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjMtMTEtMjkgMjI6NDA6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgY2hy b21pdW0tMTIwLjAuNjA5OS41Ni9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1iZWRk ZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYwkyMDIzLTEyLTAzIDE3OjMxOjI1 Ljc1MTQyMDI0NiArMDEwMAotQEAgLTE1NjcsNyArMTU2Nyw3IEBAIHZvaWQgU2tpYU91dHB1dFN1 cmZhY2VJbXBsT25HcHU6OkNvcHlPdXQKLSAKLSAgICAgICAvLyBJc3N1ZSByZWFkYmFja3MgZnJv bSB0aGUgc3VyZmFjZXM6Ci0gICAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBDb3B5T3V0cHV0 UmVzdWx0OjprTlYxMk1heFBsYW5lczsgKytpKSB7Ci0tICAgICAgICBTa0lTaXplIHNpemUocGxh bmVfc3VyZmFjZXNbaV0tPndpZHRoKCksIHBsYW5lX3N1cmZhY2VzW2ldLT5oZWlnaHQoKSk7Ci0r ICAgICAgICBTa0lTaXplIHNpemV7cGxhbmVfc3VyZmFjZXNbaV0tPndpZHRoKCksIHBsYW5lX3N1 cmZhY2VzW2ldLT5oZWlnaHQoKX07Ci0gICAgICAgICBTa0ltYWdlSW5mbyBkc3RfaW5mbyA9IFNr SW1hZ2VJbmZvOjpNYWtlKAotICAgICAgICAgICAgIHNpemUsIChpID09IDApID8ga0FscGhhXzhf U2tDb2xvclR5cGUgOiBrUjhHOF91bm9ybV9Ta0NvbG9yVHlwZSwKLSAgICAgICAgICAgICBrVW5w cmVtdWxfU2tBbHBoYVR5cGUpOwotZGlmZiAtdXAgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9jb250 ZW50L2Jyb3dzZXIvZG93bmxvYWQvc2F2ZV9wYWNrYWdlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVj dG9yIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVf cGFja2FnZS5jYwotLS0tIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY29udGVudC9icm93c2VyL2Rv d25sb2FkL3NhdmVfcGFja2FnZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDIzLTExLTI5 IDIyOjQwOjAxLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvY29u dGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYwkyMDIzLTEyLTAzIDE3OjMxOjI1 Ljc1MjQyMDI2NSArMDEwMAotQEAgLTc2Nyw4ICs3NjcsOCBAQCB2b2lkIFNhdmVQYWNrYWdlOjpG aW5pc2goKSB7Ci0gICBpZiAoZG93bmxvYWRfKSB7Ci0gICAgIHN0ZDo6dmVjdG9yPGRvd25sb2Fk OjpEb3dubG9hZFNhdmVJdGVtRGF0YTo6SXRlbUluZm8+IGZpbGVzOwotICAgICBmb3IgKGF1dG8m IGl0ZW0gOiBzYXZlZF9zdWNjZXNzX2l0ZW1zXykgewotLSAgICAgIGZpbGVzLmVtcGxhY2VfYmFj ayhpdGVtLnNlY29uZC0+ZnVsbF9wYXRoKCksIGl0ZW0uc2Vjb25kLT51cmwoKSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICAgaXRlbS5zZWNvbmQtPnJlZmVycmVyKCkudXJsKTsKLSsgICAgICBm aWxlcy5lbXBsYWNlX2JhY2soKSA9IHtpdGVtLnNlY29uZC0+ZnVsbF9wYXRoKCksIGl0ZW0uc2Vj b25kLT51cmwoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgaXRlbS5zZWNvbmQtPnJlZmVy cmVyKCkudXJsfTsKLSAgICAgfQotICAgICBkb3dubG9hZDo6RG93bmxvYWRTYXZlSXRlbURhdGE6 OkF0dGFjaEl0ZW1EYXRhKGRvd25sb2FkXywgc3RkOjptb3ZlKGZpbGVzKSk7Ci0gICB9Ci1kaWZm IC11cCBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91 cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNocm9t aXVtLTEyMC4wLjYwOTkuNTYvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0 X2dyb3VwX3N0b3JhZ2UuY2MKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2NvbnRlbnQvYnJv d3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjLm5vX21hdGNoaW5n X2NvbnN0cnVjdG9yCTIwMjMtMTEtMjkgMjI6NDA6MDEuMDAwMDAwMDAwICswMTAwCi0rKysgY2hy b21pdW0tMTIwLjAuNjA5OS41Ni9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJl c3RfZ3JvdXBfc3RvcmFnZS5jYwkyMDIzLTEyLTAzIDE3OjMxOjI1Ljc1MjQyMDI2NSArMDEwMAot QEAgLTMwMDIsMTAgKzMwMDIsMTAgQEAgRG9HZXRLQW5vbnltaXR5RGF0YShzcWw6OkRhdGFiYXNl JiBkYiwKLSAKLSAgIHN0ZDo6dmVjdG9yPFN0b3JhZ2VJbnRlcmVzdEdyb3VwOjpLQW5vbnltaXR5 RGF0YT4ga19hbm9uX2RhdGE7Ci0gICB3aGlsZSAoaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnku U3RlcCgpKSB7Ci0tICAgIGtfYW5vbl9kYXRhLmVtcGxhY2VfYmFjaygKLSsgICAga19hbm9uX2Rh dGEuZW1wbGFjZV9iYWNrKCkgPSB7Ci0gICAgICAgICAvKmtleT0qL2ludGVyZXN0X2dyb3VwX2th bm9uX3F1ZXJ5LkNvbHVtblN0cmluZygwKSwKLSAgICAgICAgIC8qaXNfa19hbm9ueW1vdXM9Ki9p bnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5Cb29sKDEpLAotLSAgICAgICAgLypsYXN0 X3VwZGF0ZWQ9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5UaW1lKDIpKTsKLSsg ICAgICAgIC8qbGFzdF91cGRhdGVkPSovaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVlcnkuQ29sdW1u VGltZSgyKX07Ci0gICB9Ci0gICBpZiAoIWludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LlN1Y2Nl ZWRlZCgpKSB7Ci0gICAgIHJldHVybiBhYnNsOjpudWxsb3B0OwotZGlmZiAtdXAgY2hyb21pdW0t MTIwLjAuNjA5OS41Ni9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJf Y2FjaGUuY2MKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L25ldC9kbnMvaG9zdF9yZXNvbHZl cl9jYWNoZS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDIzLTExLTI5IDIyOjQwOjA3LjAw MDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvbmV0L2Rucy9ob3N0X3Jl c29sdmVyX2NhY2hlLmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzU0NDIwMzAzICswMTAwCi1AQCAt MzY4LDcgKzM2OCw3IEBAIHZvaWQgSG9zdFJlc29sdmVyQ2FjaGU6OlNldCgKLSAKLSAgIHN0ZDo6 c3RyaW5nIGRvbWFpbl9uYW1lID0gcmVzdWx0LT5kb21haW5fbmFtZSgpOwotICAgZW50cmllc18u ZW1wbGFjZSgKLS0gICAgICBLZXkoc3RkOjptb3ZlKGRvbWFpbl9uYW1lKSwgbmV0d29ya19hbm9u eW1pemF0aW9uX2tleSksCi0rICAgICAgS2V5e3N0ZDo6bW92ZShkb21haW5fbmFtZSksIG5ldHdv cmtfYW5vbnltaXphdGlvbl9rZXl9LAotICAgICAgIEVudHJ5KHN0ZDo6bW92ZShyZXN1bHQpLCBz b3VyY2UsIHNlY3VyZSwgc3RhbGVuZXNzX2dlbmVyYXRpb24pKTsKLSAKLSAgIGlmIChlbnRyaWVz Xy5zaXplKCkgPiBtYXhfZW50cmllc18pIHsKLWRpZmYgLXVwIGNocm9taXVtLTEyMC4wLjYwOTku NTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9udF9wYWxldHRl Lmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni90aGlyZF9w YXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3BhbGV0dGUuaAotLS0tIGNo cm9taXVtLTEyMC4wLjYwOTkuNTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0v Zm9udHMvZm9udF9wYWxldHRlLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyMy0xMS0yOSAy Mjo0MDoxMi4wMDAwMDAwMDAgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5oCTIwMjMt MTItMDMgMTc6MzE6MjUuNzU0NDIwMzAzICswMTAwCi1AQCAtOTYsNyArOTYsNyBAQCBjbGFzcyBQ TEFURk9STV9FWFBPUlQgRm9udFBhbGV0dGUgOiBwdWJsCi0gICAgICAgQ29sb3I6OkNvbG9yU3Bh Y2UgY29sb3JfaW50ZXJwb2xhdGlvbl9zcGFjZSwKLSAgICAgICBhYnNsOjpvcHRpb25hbDxDb2xv cjo6SHVlSW50ZXJwb2xhdGlvbk1ldGhvZD4gaHVlX2ludGVycG9sYXRpb25fbWV0aG9kKSB7Ci0g ICAgIHJldHVybiBiYXNlOjpBZG9wdFJlZihuZXcgRm9udFBhbGV0dGUoCi0tICAgICAgICBzdGFy dCwgZW5kLCBOb25Ob3JtYWxpemVkUGVyY2VudGFnZXMoc3RhcnRfcGVyY2VudGFnZSwgZW5kX3Bl cmNlbnRhZ2UpLAotKyAgICAgICAgc3RhcnQsIGVuZCwgTm9uTm9ybWFsaXplZFBlcmNlbnRhZ2Vz e3N0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlfSwKLSAgICAgICAgIG5vcm1hbGl6ZWRf cGVyY2VudGFnZSwgYWxwaGFfbXVsdGlwbGllciwgY29sb3JfaW50ZXJwb2xhdGlvbl9zcGFjZSwK LSAgICAgICAgIGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhvZCkpOwotICAgfQotQEAgLTE3MCw3ICsx NzAsNyBAQCBjbGFzcyBQTEFURk9STV9FWFBPUlQgRm9udFBhbGV0dGUgOiBwdWJsCi0gICAgICAg ZG91YmxlIG5vcm1hbGl6ZWRfcGVyY2VudGFnZSkgewotICAgICBkb3VibGUgZW5kX3BlcmNlbnRh Z2UgPSBub3JtYWxpemVkX3BlcmNlbnRhZ2UgKiAxMDAuMDsKLSAgICAgZG91YmxlIHN0YXJ0X3Bl cmNlbnRhZ2UgPSAxMDAuMCAtIGVuZF9wZXJjZW50YWdlOwotLSAgICByZXR1cm4gTm9uTm9ybWFs aXplZFBlcmNlbnRhZ2VzKHN0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKTsKLSsgICAg cmV0dXJuIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVy Y2VudGFnZX07Ci0gICB9Ci0gCi0gICBkb3VibGUgR2V0QWxwaGFNdWx0aXBsaWVyKCkgY29uc3Qg ewotZGlmZiAtdXAgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2Mubm9fbWF0Y2hpbmdf Y29uc3RydWN0b3IgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2MKLS0tLSBjaHJvbWl1 bS0xMjAuMC42MDk5LjU2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL2ZvbnRz L3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDIzLTEx LTI5IDIyOjQwOjEyLjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYv dGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRlcnBv bGF0aW9uLmNjCTIwMjMtMTItMDMgMTc6MzE6MjUuNzU1NDIwMzIzICswMTAwCi1AQCAtMzEsNyAr MzEsNyBAQCBWZWN0b3I8Rm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGU+Ci0gICAgICAg ICBjb2xvcl9pbnRlcnBvbGF0aW9uX3NwYWNlLCBodWVfaW50ZXJwb2xhdGlvbl9tZXRob2QsIHN0 YXJ0X2NvbG9yLAotICAgICAgICAgZW5kX2NvbG9yLCBwZXJjZW50YWdlLCBhbHBoYV9tdWx0aXBs aWVyKTsKLSAKLS0gICAgRm9udFBhbGV0dGU6OkZvbnRQYWxldHRlT3ZlcnJpZGUgcmVzdWx0X2Nv bG9yX3JlY29yZChpLCByZXN1bHRfY29sb3IpOwotKyAgICBGb250UGFsZXR0ZTo6Rm9udFBhbGV0 dGVPdmVycmlkZSByZXN1bHRfY29sb3JfcmVjb3Jke3N0YXRpY19jYXN0PGludD4oaSksIHJlc3Vs dF9jb2xvcn07Ci0gICAgIHJlc3VsdF9jb2xvcl9yZWNvcmRzLnB1c2hfYmFjayhyZXN1bHRfY29s b3JfcmVjb3JkKTsKLSAgIH0KLSAgIHJldHVybiByZXN1bHRfY29sb3JfcmVjb3JkczsKLWRpZmYg LXVwIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFw aS9yZW5kZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwLm5vX21hdGNoaW5nX2NvbnN0cnVjdG9yIGNo cm9taXVtLTEyMC4wLjYwOTkuNTYvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5k ZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwCi0tLS0gY2hyb21pdW0tMTIwLjAuNjA5OS41Ni90aGly ZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9jcGRmX3JlbmRlcnN0YXR1cy5jcHAu bm9fbWF0Y2hpbmdfY29uc3RydWN0b3IJMjAyMy0xMS0yOSAyMjo0MTo0Ni4wMDAwMDAwMDAgKzAx MDAKLSsrKyBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L3RoaXJkX3BhcnR5L3BkZml1bS9jb3JlL2Zw ZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNwcAkyMDIzLTEyLTAzIDE3OjMxOjI1Ljc1 NjQyMDM0MiArMDEwMAotQEAgLTQ5MSw3ICs0OTEsNyBAQCB2b2lkIENQREZfUmVuZGVyU3RhdHVz OjpQcm9jZXNzQ2xpcFBhdGgoCi0gICAgIH0gZWxzZSB7Ci0gICAgICAgbV9wRGV2aWNlLT5TZXRD bGlwX1BhdGhGaWxsKAotICAgICAgICAgICAqcFBhdGgsICZtdE9iajJEZXZpY2UsCi0tICAgICAg ICAgIENGWF9GaWxsUmVuZGVyT3B0aW9ucyhDbGlwUGF0aC5HZXRDbGlwVHlwZShpKSkpOwotKyAg ICAgICAgICBDRlhfRmlsbFJlbmRlck9wdGlvbnN7Q2xpcFBhdGguR2V0Q2xpcFR5cGUoaSl9KTsK LSAgICAgfQotICAgfQotIAotZGlmZiAtdXAgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni91aS9iYXNl L3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgubm9fbWF0Y2hpbmdfY29uc3RydWN0b3IgY2hy b21pdW0tMTIwLjAuNjA5OS41Ni91aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgK LS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2Vy X3V0aWwuaC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgkyMDIzLTExLTI5IDIyOjQwOjQ0LjAwMDAw MDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvdWkvYmFzZS93YXlsYW5kL2Nv bG9yX21hbmFnZXJfdXRpbC5oCTIwMjMtMTItMDMgMTc6MzE6MjUuNzU1NDIwMzIzICswMTAwCi1A QCAtNTIsNTMgKzUyLDUzIEBAIGNvbnN0ZXhwciBhdXRvIGtDaHJvbWF0aWNpdHlNYXAgPSBiYXNl OjoKLSAgICAgemNyX2NvbG9yX21hbmFnZXJfdjFfY2hyb21hdGljaXR5X25hbWVzLAotICAgICBQ cmltYXJ5VmVyc2lvbj4oCi0gICAgIHt7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZ X05BTUVTX0JUNjAxXzUyNV9MSU5FLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JT cGFjZTo6UHJpbWFyeUlEOjpTTVBURTE3ME0sCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1 bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6 OlByaW1hcnlJRDo6U01QVEUxNzBNLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2lu Y2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05B TUVTX0JUNjAxXzYyNV9MSU5FLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6UHJpbWFyeUlEOjpCVDQ3MEJHLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2lu Y2VWZXJzaW9uKX0sCi0rICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmlt YXJ5SUQ6OkJUNDcwQkcsCi0rICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNp b259fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01Q VEUxNzBNLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlE OjpTTVBURTE3ME0sCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24p fSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01Q VEUxNzBNLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0g ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNzA5LAotLSAg ICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDcwOSwga0Rl ZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3Bh Y2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUMjAyMCwKLS0gICAgICBQcmlt YXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQyMDIwLCBrRGVmYXVsdFNp bmNlVmVyc2lvbil9LAotKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJp bWFyeUlEOjpCVDIwMjAsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9S X01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NSR0IsCi0tICAgICAgUHJpbWFyeVZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5LCBrRGVmYXVsdFNpbmNlVmVyc2lv bil9LAotKyAgICAgIFByaW1hcnlWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpC VDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9DSFJPTUFUSUNJVFlfTkFNRVNfRElTUExBWVAzLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdm eDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpQMywga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsg ICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6UDMsIGtEZWZh dWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElD SVRZX05BTUVTX0FET0JFUkdCLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6UHJpbWFyeUlEOjpBRE9CRV9SR0IsCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRT aW5jZVZlcnNpb24pfSwKLSsgICAgICBQcmltYXJ5VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlBy aW1hcnlJRDo6QURPQkVfUkdCLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VW ZXJzaW9ufX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X1dJREVfR0FNVVRfQ09MT1JfU1BJTiwKLS0gICAgICBQcmltYXJ5VmVyc2lvbigKLSsgICAgICBQ cmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OldJ REVfR0FNVVRfQ09MT1JfU1BJTiwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hS T01BVElDSVRZX05BTUVTX1dJREVfR0FNVVRfQ09MT1JfU1BJTl9TSU5DRV9WRVJTSU9OKX0sCi0r ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dB TVVUX0NPTE9SX1NQSU5fU0lOQ0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDQ3ME0sCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0r ICAgICAgUHJpbWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFy eUlEOjpCVDQ3ME0sCi0tICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lU WV9OQU1FU19CVDQ3ME1fU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ0NzBNX1NJTkNFX1ZFUlNJT059fSwKLSAgICAg IHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNLAotLSAg ICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBn Zng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUyNDBNLAotLSAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT04p fSwKLSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NN UFRFMjQwTV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hS T01BVElDSVRZX05BTUVTX1hZWl9ENTAsCi0tICAgICAgUHJpbWFyeVZlcnNpb24oCi0rICAgICAg UHJpbWFyeVZlcnNpb257Ci0gICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpY WVpfRDUwLAotLSAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFN RVNfWFlaX0Q1MF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpfRDUwX1NJTkNFX1ZFUlNJT059fSwKLSAgICAgIHta Q1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xLAotLSAg ICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlWZXJzaW9uewotICAgICAgICAgICBn Zng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEVTVDQyOF8xLAotLSAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZF UlNJT04pfSwKLSsgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05B TUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICB7WkNSX0NPTE9SX01BTkFH RVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MzFfMiwKLS0gICAgICBQcmltYXJ5VmVy c2lvbigKLSsgICAgICBQcmltYXJ5VmVyc2lvbnsKLSAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNl OjpQcmltYXJ5SUQ6OlNNUFRFU1Q0MzFfMiwKLS0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFU1Q0MzFfMl9TSU5DRV9WRVJTSU9OKX0sCi0rICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDMx XzJfU0lOQ0VfVkVSU0lPTn19LAotICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJ Q0lUWV9OQU1FU19GSUxNLAotLSAgICAgIFByaW1hcnlWZXJzaW9uKAotKyAgICAgIFByaW1hcnlW ZXJzaW9uewotICAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6RklMTSwKLS0g ICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0ZJTE1fU0lO Q0VfVkVSU0lPTil9fSk7Ci0rICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJ Q0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJT059fX0pOwotIAotIC8vIEEgbWFwIGZyb20gdGhl IHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2YWx1ZXMKLSAvLyByZXByZXNl bnRpbmcgd2VsbC1rbm93biBFT1RGcywgdG8gdGhlaXIgZXF1aXZhbGVudCBUcmFuc2ZlcklEcy4K LUBAIC0xMDcsNjggKzEwNyw2OCBAQCBjb25zdGV4cHIgYXV0byBrRW90Zk1hcCA9IGJhc2U6Ok1h a2VGaXhlCi0gICAgIHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2VvdGZfbmFtZXMsCi0gICAgIFRyYW5z ZmVyVmVyc2lvbj4oewotICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19MSU5F QVIsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpM SU5FQVIsCi0tICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsg ICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxJTkVBUiwK LSsgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCLAotLSAgICAgVHJhbnNmZXJWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb24p fSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNS R0IsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX1NSR0JfSERSLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6VHJhbnNmZXJJRDo6U1JHQl9IRFIsCi0tICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBU cmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCX0hEUiwKLSsg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0Jf SERSX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFN RVNfQlQ3MDksCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2Zl cklEOjpCVDcwOSwKLS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntn Zng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUNzA5LAotKyAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTn19LAot ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwODcsCi0tICAgICBUcmFu c2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI0LAotLSAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI0LAotKyAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdF Ul9WMV9FT1RGX05BTUVTX0FET0JFUkdCLAotICAgICAgLy8gVGhpcyBpcyBldmVyIHNvIHNsaWdo dGx5IGluYWNjdXJhdGUuIFRoZSBudW1iZXIgb3VnaHQgdG8gYmUKLSAgICAgIC8vIDIuMTk5MjE4 NzVmLCBub3QgMi4yCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFu c2ZlcklEOjpHQU1NQTIyLAotLSAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJz aW9uKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklE OjpHQU1NQTIyLAotKyAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0s Ci0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1BRLAotLSAgICAgVHJhbnNm ZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6UFEsIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2Zl cklEOjpQUSwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfSExHLAotLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6VHJhbnNmZXJJRDo6SExHLAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVy c2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkhMRywKLSsgICAgICAgICAgICAgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMR19TSU5DRV9WRVJTSU9OfX0s Ci0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFMTcwTSwKLS0gICAg IFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMTcwTSwK LS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NN UFRFMTcwTV9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTE3ME0sCi0rICAgICAgICAgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME1fU0lOQ0VfVkVSU0lPTn19LAot ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTI0ME0sCi0tICAgICBU cmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTTVBURTI0ME0sCi0t ICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBU RTI0ME1fU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JT cGFjZTo6VHJhbnNmZXJJRDo6U01QVEUyNDBNLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT059fSwKLSAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEVTVDQyOF8xLAotLSAgICAg VHJhbnNmZXJWZXJzaW9uKAotKyAgICAgVHJhbnNmZXJWZXJzaW9uewotICAgICAgICAgIGdmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEVTVDQyOF8xLAotLSAgICAgICAgIFpDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEVTVDQyOF8xX1NJTkNFX1ZFUlNJT04pfSwKLSsg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFU1Q0MjhfMV9TSU5D RV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xPRywK LS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPRywK LS0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xP R19TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpMT0csCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19MT0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU1FSVCwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6 OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPR19TUVJULAotLSAgICAgICAgICAgICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NRUlRfU0lOQ0VfVkVSU0lPTil9 LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9H X1NRUlQsCi0rICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19MT0dfU1FSVF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0lFQzYxOTY2XzJfNCwKLS0gICAgIFRyYW5zZmVyVmVyc2lvbigKLSsgICAg IFRyYW5zZmVyVmVyc2lvbnsKLSAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6 OklFQzYxOTY2XzJfNCwKLS0gICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0lFQzYxOTY2XzJfNF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICAgICAgWkNSX0NPTE9SX01BTkFH RVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8yXzRfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7WkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDEzNjFfRUNHLAotLSAgICAgVHJhbnNmZXJW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQxMzYxX0VDRywKLS0gICAgICAg ICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0df U0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6QlQxMzYxX0VDRywKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMTM2MV9FQ0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTAsCi0tICAgICBUcmFuc2Zl clZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIwMjBfMTAsCi0tICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTBf U0lOQ0VfVkVSU0lPTil9LAotKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6QlQyMDIwXzEwLAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwX1NJTkNFX1ZFUlNJT059fSwKLSAgICAge1pD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEyLAotLSAgICAgVHJhbnNmZXJW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQyMDIwXzEyLAotLSAgICAgICAg ICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEyX1NJ TkNFX1ZFUlNJT04pfSwKLSsgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRy YW5zZmVySUQ6OkJUMjAyMF8xMiwKLSsgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMl9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NDUkdCX0xJTkVBUl84MF9OSVRTLAotLSAgICAg VHJhbnNmZXJWZXJzaW9uKAotKyAgICAgVHJhbnNmZXJWZXJzaW9uewotICAgICAgICAgIGdmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U0NSR0JfTElORUFSXzgwX05JVFMsCi0tICAgICAgICAg WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TQ1JHQl9MSU5FQVJfODBfTklUU19TSU5D RV9WRVJTSU9OKX0sCi0rICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19T Q1JHQl9MSU5FQVJfODBfTklUU19TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFO QUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMTgsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpD b2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTE4LAotLSAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUExOF9TSU5DRV9WRVJTSU9OKX0sCi0r ICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTE4 LAotKyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf R0FNTUExOF9TSU5DRV9WRVJTSU9OfX0sCi0gICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RG X05BTUVTX0dBTU1BMjgsCi0tICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpU cmFuc2ZlcklEOjpHQU1NQTI4LAotLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9TSU5DRV9WRVJTSU9OKX0sCi0rICAgICBUcmFuc2Zl clZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpHQU1NQTI4LAotKyAgICAgICAg ICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfR0FNTUEyOF9TSU5D RV9WRVJTSU9OfX0sCi0gfSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB0aGUgU0RSIHpjcl9jb2xvcl9t YW5hZ2VyX3YxIGVvdGZfbmFtZXMgZW51bSB2YWx1ZXMKLUBAIC0xNzcsMTggKzE3NywxOCBAQCBj b25zdGV4cHIgYXV0byBrRW90Zk1hcCA9IGJhc2U6Ok1ha2VGaXhlCi0gY29uc3RleHByIGF1dG8g a1RyYW5zZmVyTWFwID0KLSAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFu YWdlcl92MV9lb3RmX25hbWVzLCBUcmFuc2ZlckZuVmVyc2lvbj4oewotICAgICAgICAge1pDUl9D T0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAotLSAgICAgICAgIFRyYW5zZmVyRm5W ZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9 LAotKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFy LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfU1JHQiwKLS0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJh bnNmZXJGbkV4dDo6a1NSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgVHJh bnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCLCBrRGVmYXVsdFNpbmNl VmVyc2lvbn19LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3 MDksCi0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oCi0rICAgICAgICAgVHJhbnNmZXJGblZl cnNpb257Ci0gICAgICAgICAgICAgIFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprUmVjNzA5LAotLSAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5X1NJTkNFX1ZF UlNJT04pfSwKLSsgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19C VDcwOV9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19CVDIwODcsCi0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oZ2FtbWEyNCwga0Rl ZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntnYW1tYTI0 LCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfQURPQkVSR0IsCi0tICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1l ZFRyYW5zZmVyRm5FeHQ6OmtBOThSR0IsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAga0Rl ZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVk VHJhbnNmZXJGbkV4dDo6a0E5OFJHQiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICBrRGVm YXVsdFNpbmNlVmVyc2lvbn19LAotICAgICB9KTsKLSAKLSAvLyBBIG1hcCBmcm9tIHRoZSBIRFIg emNyX2NvbG9yX21hbmFnZXJfdjEgZW90Zl9uYW1lcyBlbnVtIHZhbHVlcwotQEAgLTE5Nyw3MCAr MTk3LDcwIEBAIGNvbnN0ZXhwciBhdXRvIGtUcmFuc2Zlck1hcCA9Ci0gY29uc3RleHByIGF1dG8g a0hEUlRyYW5zZmVyTWFwID0KLSAgICAgYmFzZTo6TWFrZUZpeGVkRmxhdE1hcDx6Y3JfY29sb3Jf bWFuYWdlcl92MV9lb3RmX25hbWVzLCBUcmFuc2ZlckZuVmVyc2lvbj4oCi0gICAgICAgICB7e1pD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAotLSAgICAgICAgICBUcmFuc2Zl ckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNp b24pfSwKLSsgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm46OmtM aW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFIsCi0tICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9u KAotKyAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbnsKLSAgICAgICAgICAgICAgIFNrTmFtZWRU cmFuc2ZlckZuRXh0OjprU1JHQiwKLS0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1Yx X0VPVEZfTkFNRVNfU1JHQl9IRFJfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAgICAgICAgWkNS X0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OfX0sCi0g ICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfUFEsCi0tICAgICAgICAg IFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuOjprUFEsIGtEZWZhdWx0U2luY2VW ZXJzaW9uKX0sCi0rICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZu OjprUFEsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfSExHLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05h bWVkVHJhbnNmZXJGbjo6a0hMRywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lOQ0VfVkVSU0lPTil9LAotKyAgICAgICAg ICBUcmFuc2ZlckZuVmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a0hMRywKLSsgICAgICAgICAg ICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19ITEdfU0lO Q0VfVkVSU0lPTn19LAotICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0VYVEVOREVEU1JHQjEwLAotLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbigKLSsgICAgICAg ICAgVHJhbnNmZXJGblZlcnNpb257Ci0gICAgICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4 dDo6a1NSR0JFeHRlbmRlZDEwMjNPdmVyNTEwLAotLSAgICAgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0IxMF9TSU5DRV9WRVJTSU9OKX19KTsKLSsg ICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURTUkdC MTBfU0lOQ0VfVkVSU0lPTn19fSk7Ci0gCi0gLy8gQSBtYXAgZnJvbSB6Y3JfY29sb3JfbWFuYWdl cl92MSBtYXRyaXhfbmFtZXMgZW51bSB2YWx1ZXMgdG8KLSAvLyBnZng6OkNvbG9yU3BhY2U6Ok1h dHJpeElEcy4KLSBjb25zdGV4cHIgYXV0byBrTWF0cml4TWFwID0KLSAgICAgYmFzZTo6TWFrZUZp eGVkRmxhdE1hcDx6Y3JfY29sb3JfbWFuYWdlcl92MV9tYXRyaXhfbmFtZXMsIE1hdHJpeFZlcnNp b24+KAotICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfUkdCLAot LSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlJHQiwg a0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNv bG9yU3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAg ICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDcwOSwKLS0gICAgICAgICAg TWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDcwOSwKLS0gICAgICAg ICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAotKyAgICAgICAgICBNYXRy aXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUNzA5LAotKyAgICAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xP Ul9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3MEJHLAotLSAgICAgICAgICBNYXRyaXhWZXJz aW9uKAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9uewotICAgICAgICAgICAgICAgZ2Z4OjpDb2xv clNwYWNlOjpNYXRyaXhJRDo6QlQ0NzBCRywKLS0gICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3MEJHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDQ3MEJHX1NJTkNFX1ZFUlNJ T059fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JUMjAy MF9OQ0wsCi0tICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJ RDo6QlQyMDIwX05DTCwKLS0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVy c2lvbil9LAotKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4 SUQ6OkJUMjAyMF9OQ0wsCi0rICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0JU MjAyMF9DTCwKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEOjpCVDIwMjBfQ0wsCi0tICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb24pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEOjpCVDIwMjBfQ0wsCi0rICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb259fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX0ZD QywKLS0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpG Q0MsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4 OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6RkNDLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAotICAg ICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWUNPQ0csCi0tICAgICAg ICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WUNPQ0csCi0tICAg ICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lD T0NHX1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9y U3BhY2U6Ok1hdHJpeElEOjpZQ09DRywKLSsgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWUNPQ0dfU0lOQ0VfVkVSU0lPTn19LAotICAgICAg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWURaRFgsCi0tICAgICAgICAg IE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WURaRFgsCi0tICAgICAg ICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRY X1NJTkNFX1ZFUlNJT04pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3Bh Y2U6Ok1hdHJpeElEOjpZRFpEWCwKLSsgICAgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfWURaRFhfU0lOQ0VfVkVSU0lPTn19LAotICAgICAgICAg IHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfR0JSLAotLSAgICAgICAgICBNYXRy aXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkdCUiwKLS0gICAgICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfR0JSX1NJTkNFX1ZF UlNJT04pfSwKLSsgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEOjpHQlIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf TUFUUklYX05BTUVTX0dCUl9TSU5DRV9WRVJTSU9OfX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX01BVFJJWF9OQU1FU19TTVBURTE3ME0sCi0tICAgICAgICAgIE1hdHJpeFZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6U01QVEUxNzBNLAotLSAgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCi0rICAgICAgICAgIE1hdHJpeFZlcnNp b257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6U01QVEUxNzBNLAotKyAgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCi0gICAgICAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX01BVFJJWF9OQU1FU19TTVBURTI0ME0sCi0tICAgICAgICAgIE1hdHJpeFZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6U01QVEUyNDBNLAotLSAgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX19KTsKLSsgICAgICAgICAgTWF0cml4VmVy c2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpTTVBURTI0ME0sCi0rICAgICAgICAgICAg ICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fX0pOwotIAotIC8vIEEgbWFwIGZyb20g emNyX2NvbG9yX21hbmFnZXJfdjEgcmFuZ2VfbmFtZXMgZW51bSB2YWx1ZXMgdG8KLSAvLyBnZng6 OkNvbG9yU3BhY2U6OlJhbmdlSURzLgotIGNvbnN0ZXhwciBhdXRvIGtSYW5nZU1hcCA9Ci0gICAg IGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfcmFuZ2VfbmFtZXMs IFJhbmdlVmVyc2lvbj4oCi0gICAgICAgICB7e1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05B TUVTX0xJTUlURUQsCi0tICAgICAgICAgIFJhbmdlVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJh bmdlSUQ6OkxJTUlURUQsCi0tICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVy c2lvbil9LAotKyAgICAgICAgICBSYW5nZVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlE OjpMSU1JVEVELAotKyAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259 fSwKLSAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFOR0VfTkFNRVNfRlVMTCwKLS0g ICAgICAgICAgUmFuZ2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6RlVMTCwga0Rl ZmF1bHRTaW5jZVZlcnNpb24pfSwKLSsgICAgICAgICAgUmFuZ2VWZXJzaW9ue2dmeDo6Q29sb3JT cGFjZTo6UmFuZ2VJRDo6RlVMTCwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKLSAgICAgICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfUkFOR0VfTkFNRVNfREVSSVZFRCwKLS0gICAgICAgICAgUmFu Z2VWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6REVSSVZFRCwKLS0gICAgICAgICAg ICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX19KTsKLSsgICAgICAgICAgUmFuZ2VW ZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6REVSSVZFRCwKLSsgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX19KTsKLSAKLSB6Y3JfY29sb3JfbWFuYWdl cl92MV9jaHJvbWF0aWNpdHlfbmFtZXMgVG9Db2xvck1hbmFnZXJDaHJvbWF0aWNpdHkoCi0gICAg IGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEIHByaW1hcnlJRCwKLUBAIC0yODMsNCArMjgzLDQg QEAgemNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9uYW1lcyBUb0NvbG9yTQotIAotIH0gIC8vIG5h bWVzcGFjZSB1aTo6d2F5bGFuZAotIAotLSNlbmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NPTE9S X01BTkFHRVJfVVRJTF9IXwotXCBLZWluIFplaWxlbnVtYnJ1Y2ggYW0gRGF0ZWllbmRlLgotKyNl bmRpZiAgLy8gVUlfQkFTRV9XQVlMQU5EX0NPTE9SX01BTkFHRVJfVVRJTF9IXwotZGlmZiAtdXAg Y2hyb21pdW0tMTIwLjAuNjA5OS41Ni91aS9ndGsvZ3RrX3VpLmNjLm5vX21hdGNoaW5nX2NvbnN0 cnVjdG9yIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvdWkvZ3RrL2d0a191aS5jYwotLS0tIGNocm9t aXVtLTEyMC4wLjYwOTkuNTYvdWkvZ3RrL2d0a191aS5jYy5ub19tYXRjaGluZ19jb25zdHJ1Y3Rv cgkyMDIzLTExLTI5IDIyOjQwOjQ0LjAwMDAwMDAwMCArMDEwMAotKysrIGNocm9taXVtLTEyMC4w LjYwOTkuNTYvdWkvZ3RrL2d0a191aS5jYwkyMDIzLTEyLTAzIDE3OjMxOjI1Ljc1NjQyMDM0MiAr MDEwMAotQEAgLTEwMTMsMTEgKzEwMTMsMTEgQEAgdWk6OkRpc3BsYXlDb25maWcgR3RrVWk6Okdl dERpc3BsYXlDb25maQotICAgICBHZGtSZWN0YW5nbGUgZ2VvbWV0cnk7Ci0gICAgIGdka19tb25p dG9yX2dldF9nZW9tZXRyeShtb25pdG9yLCAmZ2VvbWV0cnkpOwotICAgICBpbnQgbW9uaXRvcl9z Y2FsZSA9IHN0ZDo6bWF4KDEsIGdka19tb25pdG9yX2dldF9zY2FsZV9mYWN0b3IobW9uaXRvcikp OwotLSAgICBjb25maWcuZGlzcGxheV9nZW9tZXRyaWVzLmVtcGxhY2VfYmFjaygKLSsgICAgY29u ZmlnLmRpc3BsYXlfZ2VvbWV0cmllcy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAgICAgIGdmeDo6 UmVjdChtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkueCwgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5 LnksCi0gICAgICAgICAgICAgICAgICAgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LndpZHRoLAot ICAgICAgICAgICAgICAgICAgIG1vbml0b3Jfc2NhbGUgKiBnZW9tZXRyeS5oZWlnaHQpLAotLSAg ICAgICAgbW9uaXRvcl9zY2FsZSAqIGZvbnRfc2NhbGUpOwotKyAgICAgICAgc3RhdGljX2Nhc3Q8 ZmxvYXQ+KG1vbml0b3Jfc2NhbGUgKiBmb250X3NjYWxlKX07Ci0gICB9Ci0gICByZXR1cm4gY29u ZmlnOwotIH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvY2hyb21lL2Jyb3dzZXIv dWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNs eV9kZW5pZWRfdmlldy5jYy50aGFuIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvY2hyb21lL2Jyb3dz ZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlv dXNseV9kZW5pZWRfdmlldy5jYwotLS0tIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvY2hyb21lL2Jy b3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJl dmlvdXNseV9kZW5pZWRfdmlldy5jYy50aGFuCTIwMjMtMTItMTkgMTc6MTM6MTUuMTE2OTQ5ODE0 ICswMTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3 cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2Rlbmll ZF92aWV3LmNjCTIwMjMtMTItMTkgMTc6Mjc6MTguODA3MTAyNzE2ICswMTAwCi1AQCAtNjYsMTcg KzY2LDE3IEBAIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlEZW5pZWQKLSBzdGQ6 OnZlY3RvcjxFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5RGVuaWVkVmlldzo6QnV0 dG9uQ29uZmlndXJhdGlvbj4KLSBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5RGVu aWVkVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7Ci0gICBzdGQ6OnZlY3Rv cjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2so Ci0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3Ry aW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9DT05USU5VRV9OT1RfQUxMT1dJTkcpLAotLSAg ICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZU5vdEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtU b25hbCk7Ci0rICAgICAgQnV0dG9uVHlwZTo6a0NvbnRpbnVlTm90QWxsb3dpbmcsIHVpOjpCdXR0 b25TdHlsZTo6a1RvbmFsfTsKLSAKLSAgIGlmIChiYXNlOjpGZWF0dXJlTGlzdDo6SXNFbmFibGVk KHBlcm1pc3Npb25zOjpmZWF0dXJlczo6a09uZVRpbWVQZXJtaXNzaW9uKSkgewotLSAgICBidXR0 b25zLmVtcGxhY2VfYmFjaygKLSsgICAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKLSAgICAg ICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1dfVEhJU19U SU1FKSwKLS0gICAgICAgIEJ1dHRvblR5cGU6OmtBbGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5 bGU6OmtUb25hbCwga0FsbG93VGhpc1RpbWVJZCk7Ci0rICAgICAgICBCdXR0b25UeXBlOjprQWxs b3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtBbGxvd1RoaXNUaW1lSWR9Owot ICAgfSBlbHNlIHsKLS0gICAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGlsOjpHZXRTdHJp bmdVVEYxNihJRFNfUEVSTUlTU0lPTl9BTExPVyksCi0tICAgICAgICAgICAgICAgICAgICAgICAg IEJ1dHRvblR5cGU6OmtBbGxvdywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOwotKyAgICBidXR0 b25zLmVtcGxhY2VfYmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1J U1NJT05fQUxMT1cpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprQWxs b3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsKLSAgIH0KLSAgIHJldHVybiBidXR0b25zOwot IH0KLWRpZmYgLXVwIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvY2hyb21lL2Jyb3dzZXIvdWkvdmll d3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9ncmFu dGVkX3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L2Nocm9tZS9icm93c2VyL3Vp L3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlf Z3JhbnRlZF92aWV3LmNjCi0tLS0gY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi9jaHJvbWUvYnJvd3Nl ci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91 c2x5X2dyYW50ZWRfdmlldy5jYy50aGFuCTIwMjMtMTItMTkgMTc6Mzk6MTcuODE4ODM0MDIwICsw MTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9w ZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRf dmlldy5jYwkyMDIzLTEyLTE5IDE3OjQ0OjE1LjM0NjMzNzg3NiArMDEwMAotQEAgLTYxLDEzICs2 MSwxMyBAQCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5R3JhbnRlCi0gc3RkOjp2 ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseUdyYW50ZWRWaWV3OjpCdXR0 b25Db25maWd1cmF0aW9uPgotIEVtYmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlHcmFu dGVkVmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24oKSBjb25zdCB7Ci0gICBzdGQ6OnZlY3Rv cjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2so Ci0rICBidXR0b25zLmVtcGxhY2VfYmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3Ry aW5nVVRGMTYoSURTX0VNQkVEREVEX1BST01QVF9DT05USU5VRV9BTExPV0lORyksCi0tICAgICAg QnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsKTsK LSsgICAgICBCdXR0b25UeXBlOjprQ29udGludWVBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjpr VG9uYWx9OwotIAotLSAgYnV0dG9ucy5lbXBsYWNlX2JhY2soCi0rICBidXR0b25zLmVtcGxhY2Vf YmFjaygpID0gewotICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX0VNQkVEREVE X1BST01QVF9TVE9QX0FMTE9XSU5HKSwKLS0gICAgICBCdXR0b25UeXBlOjprU3RvcEFsbG93aW5n LCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga1N0b3BBbGxvd2luZ0lkKTsKLSsgICAgICBCdXR0 b25UeXBlOjprU3RvcEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCwga1N0b3BBbGxv d2luZ0lkfTsKLSAgIHJldHVybiBidXR0b25zOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEy MS4wLjYxNjcuMTYvY29tcG9uZW50cy9wYXNzd29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNz d29yZF9tYW5hZ2VyLmNjLnRoYW4gY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi9jb21wb25lbnRzL3Bh c3N3b3JkX21hbmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MKLS0tLSBjaHJv bWl1bS0xMjEuMC42MTY3LjE2L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dz ZXIvcGFzc3dvcmRfbWFuYWdlci5jYy50aGFuCTIwMjMtMTItMTkgMTc6Mzk6MTcuODE5ODM0MDM5 ICswMTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi9jb21wb25lbnRzL3Bhc3N3b3JkX21h bmFnZXIvY29yZS9icm93c2VyL3Bhc3N3b3JkX21hbmFnZXIuY2MJMjAyMy0xMi0xOSAxNzo0ODoz My4xNDQzODkwODEgKzAxMDAKLUBAIC02NjYsNyArNjY2LDcgQEAgdm9pZCBQYXNzd29yZE1hbmFn ZXI6Ok9uVXNlck1vZGlmaWVkTm9uUAotICAgICBpdC0+c2Vjb25kLmxhc3RfY2hhbmdlID0gYmFz ZTo6VGltZTo6Tm93KCk7Ci0gICB9IGVsc2UgewotICAgICBwb3NzaWJsZV91c2VybmFtZXNfLlB1 dCgKLS0gICAgICAgIFBvc3NpYmxlVXNlcm5hbWVGaWVsZElkZW50aWZpZXIoZHJpdmVyX2lkLCBy ZW5kZXJlcl9pZCksCi0rICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlmaWVye2Ry aXZlcl9pZCwgcmVuZGVyZXJfaWR9LAotICAgICAgICAgUG9zc2libGVVc2VybmFtZURhdGEoR2V0 U2lnbm9uUmVhbG0oZHJpdmVyLT5HZXRMYXN0Q29tbWl0dGVkVVJMKCkpLAotICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcmVuZGVyZXJfaWQsIHZhbHVlLCBiYXNlOjpUaW1lOjpOb3coKSwg ZHJpdmVyX2lkLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b2NvbXBsZXRlX2F0 dHJpYnV0ZV9oYXNfdXNlcm5hbWUsCi1kaWZmIC11cCBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L2Nv bnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhh biBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L2NvbnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3Jl bmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MKLS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L2NvbnRl bnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MudGhhbgky MDIzLTEyLTE5IDE3OjM5OjE3LjgyNTgzNDE1NiArMDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYx NjcuMTYvY29udGVudC9icm93c2VyL3JlbmRlcmVyX2hvc3QvcmVuZGVyX2ZyYW1lX2hvc3RfaW1w bC5jYwkyMDIzLTEyLTE5IDE3OjUzOjQzLjE1MzI4Mzg0NyArMDEwMAotQEAgLTg1NjEsNyArODU2 MSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0KLSAgIGZvciAo Y29uc3QgYmxpbms6OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdEZXN0aW5hdGlvbiYgZGVzdGluYXRp b24gOgotICAgICAgICBkZXN0aW5hdGlvbnMpIHsKLSAgICAgU2VuZEZlbmNlZEZyYW1lUmVwb3J0 aW5nQmVhY29uSW50ZXJuYWwoCi0tICAgICAgICBEZXN0aW5hdGlvbkVudW1FdmVudChldmVudF90 eXBlLCBldmVudF9kYXRhKSwgZGVzdGluYXRpb24sCi0rICAgICAgICBEZXN0aW5hdGlvbkVudW1F dmVudHtldmVudF90eXBlLCBldmVudF9kYXRhfSwgZGVzdGluYXRpb24sCi0gICAgICAgICBhdHRy aWJ1dGlvbl9yZXBvcnRpbmdfcnVudGltZV9mZWF0dXJlcyk7Ci0gICB9Ci0gfQotQEAgLTg1OTMs NyArODU5Myw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0KLSAg IH0KLSAKLSAgIFNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVybmFsKAotLSAgICAg IERlc3RpbmF0aW9uVVJMRXZlbnQoZGVzdGluYXRpb25fdXJsKSwKLSsgICAgICBEZXN0aW5hdGlv blVSTEV2ZW50e2Rlc3RpbmF0aW9uX3VybH0sCi0gICAgICAgYmxpbms6OkZlbmNlZEZyYW1lOjpS ZXBvcnRpbmdEZXN0aW5hdGlvbjo6a0J1eWVyLAotICAgICAgIGF0dHJpYnV0aW9uX3JlcG9ydGlu Z19ydW50aW1lX2ZlYXR1cmVzKTsKLSB9Ci1AQCAtODczMCw3ICs4NzMwLDcgQEAgdm9pZCBSZW5k ZXJGcmFtZUhvc3RJbXBsOjpNYXliZVNlbmRGZW5jZQotICAgICAgICAgZGF0YSA9IGluZm8tPmRh dGE7Ci0gICAgICAgfQotICAgICAgIGluaXRpYXRvcl9yZmgtPlNlbmRGZW5jZWRGcmFtZVJlcG9y dGluZ0JlYWNvbkludGVybmFsKAotLSAgICAgICAgICBBdXRvbWF0aWNCZWFjb25FdmVudChldmVu dF90eXBlLCBkYXRhKSwgZGVzdGluYXRpb24sCi0rICAgICAgICAgIEF1dG9tYXRpY0JlYWNvbkV2 ZW50e2V2ZW50X3R5cGUsIGRhdGF9LCBkZXN0aW5hdGlvbiwKLSAgICAgICAgICAgYXR0cmlidXRp b25fcmVwb3J0aW5nX2ZlYXR1cmVzLCBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklk KCkpOwotICAgICB9Ci0gICB9IGVsc2UgewotQEAgLTg3NDEsNyArODc0MSw3IEBAIHZvaWQgUmVu ZGVyRnJhbWVIb3N0SW1wbDo6TWF5YmVTZW5kRmVuY2UKLSAgICAgZm9yIChibGluazo6RmVuY2Vk RnJhbWU6OlJlcG9ydGluZ0Rlc3RpbmF0aW9uIGRlc3RpbmF0aW9uIDoKLSAgICAgICAgICBpbmZv LT5kZXN0aW5hdGlvbnMpIHsKLSAgICAgICBpbml0aWF0b3JfcmZoLT5TZW5kRmVuY2VkRnJhbWVS ZXBvcnRpbmdCZWFjb25JbnRlcm5hbCgKLS0gICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnQo ZXZlbnRfdHlwZSwgaW5mby0+ZGF0YSksIGRlc3RpbmF0aW9uLAotKyAgICAgICAgICBBdXRvbWF0 aWNCZWFjb25FdmVudHtldmVudF90eXBlLCBpbmZvLT5kYXRhfSwgZGVzdGluYXRpb24sCi0gICAg ICAgICAgIGluZm8tPmF0dHJpYnV0aW9uX3JlcG9ydGluZ19ydW50aW1lX2ZlYXR1cmVzLAotICAg ICAgICAgICBuYXZpZ2F0aW9uX3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOwotICAgICB9Ci1k aWZmIC11cCBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2Jhc2Uvbml4L21pbWVfdXRpbF94ZGcuY2Mu bWUgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9iYXNlL25peC9taW1lX3V0aWxfeGRnLmNjCi0tLS0g Y2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9iYXNlL25peC9taW1lX3V0aWxfeGRnLmNjLm1lCTIwMjQt MDEtMjEgMTY6NTQ6MTUuMjYxODQ0NDQ4ICswMTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny41 Ny9iYXNlL25peC9taW1lX3V0aWxfeGRnLmNjCTIwMjQtMDEtMjEgMTY6NTU6NDguNzA1NTc3NDI0 ICswMTAwCi1AQCAtNTYsNyArNTYsNyBAQCB2b2lkIExvYWRBbGxNaW1lQ2FjaGVGaWxlcyhNaW1l VHlwZU1hcCYKLSAgIGZvciAoY29uc3QgYXV0byYgcGF0aCA6IEdldFhER0RhdGFTZWFyY2hMb2Nh dGlvbnMoZW52LmdldCgpKSkgewotICAgICBGaWxlUGF0aCBtaW1lX2NhY2hlID0gcGF0aC5BcHBl bmQoIm1pbWUvbWltZS5jYWNoZSIpOwotICAgICBpZiAoR2V0RmlsZUluZm8obWltZV9jYWNoZSwg JmluZm8pICYmIFBhcnNlTWltZVR5cGVzKG1pbWVfY2FjaGUsIG1hcCkpIHsKLS0gICAgICBmaWxl cy5lbXBsYWNlX2JhY2sobWltZV9jYWNoZSwgaW5mby5sYXN0X21vZGlmaWVkKTsKLSsgICAgICBm aWxlcy5lbXBsYWNlX2JhY2soKSA9IHttaW1lX2NhY2hlLCBpbmZvLmxhc3RfbW9kaWZpZWR9Owot ICAgICB9Ci0gICB9Ci0gfQotZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb21wb25l bnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MubWUgY2hyb21pdW0tMTIx LjAuNjE2Ny41Ny9jb21wb25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIu Y2MKLS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFu YWdlci93b3JrZXJfd2F0Y2hlci5jYy5tZQkyMDI0LTAxLTIxIDE4OjExOjMxLjM5Nzg1OTYwOCAr MDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvY29tcG9uZW50cy9wZXJmb3JtYW5jZV9t YW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjCTIwMjQtMDEtMjEgMTg6MjA6MDcuNzE1NDE1MDM3ICsw MTAwCi1AQCAtMjM5LDcgKzIzOSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25Xb3JrZXJDcmVh dGVkKAotICAgRENIRUNLKGluc2VydGlvbl9yZXN1bHQuc2Vjb25kKTsKLSAKLSAgIGFic2w6OnZp c2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsK LSAgICAgICAgICAgWyYsCi0gICAgICAgICAgICB0aGlzXShjb25zdCBjb250ZW50OjpHbG9iYWxS ZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICBB ZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oaW5zZXJ0aW9uX3Jlc3VsdC5maXJzdC0+c2Vjb25kLmdl dCgpLAotQEAgLTI0OCw3ICsyNDgsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uV29ya2VyQ3Jl YXRlZCgKLSAgICAgICAgICAgWyYsIHRoaXNdKGJsaW5rOjpEZWRpY2F0ZWRXb3JrZXJUb2tlbiBk ZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAgICAgQ29ubmVjdERlZGljYXRlZFdv cmtlckNsaWVudChpbnNlcnRpb25fcmVzdWx0LmZpcnN0LT5zZWNvbmQuZ2V0KCksCi0gICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWRpY2F0ZWRfd29ya2VyX3Rva2Vu KTsKLS0gICAgICAgICAgfSksCi0rICAgICAgICAgIH19LAotICAgICAgIGNyZWF0b3IpOwotIH0K LSAKLUBAIC0yNjUsNyArMjY1LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkJlZm9yZVdvcmtl ckRlc3RybwotICAgLy8gRmlyc3QgZGlzY29ubmVjdCB0aGUgY3JlYXRvcidzIG5vZGUgZnJvbSB0 aGlzIHdvcmtlciBub2RlLgotIAotICAgYWJzbDo6dmlzaXQoCi0tICAgICAgYmFzZTo6T3Zlcmxv YWRlZCgKLSsgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAgICAgICBbJiwKLSAgICAgICAg ICAgIHRoaXNdKGNvbnN0IGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJf ZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAgICAgIFJlbW92ZUZyYW1lQ2xpZW50Q29ubmVjdGlv bih3b3JrZXJfbm9kZS5nZXQoKSwKLUBAIC0yNzQsNyArMjc0LDcgQEAgdm9pZCBXb3JrZXJXYXRj aGVyOjpPbkJlZm9yZVdvcmtlckRlc3RybwotICAgICAgICAgICBbJiwgdGhpc10oYmxpbms6OkRl ZGljYXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAg ICBEaXNjb25uZWN0RGVkaWNhdGVkV29ya2VyQ2xpZW50KHdvcmtlcl9ub2RlLmdldCgpLAotICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVkX3dvcmtl cl90b2tlbik7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwKLSAgICAgICBjcmVhdG9y KTsKLSAKLSAgIC8vIERpc2Nvbm5lY3QgYWxsIGNoaWxkIHdvcmtlcnMgYmVmb3JlIGRlc3Ryb3lp bmcgdGhlIG5vZGUuCi1AQCAtNDQ2LDcgKzQ0Niw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25D b250cm9sbGVlQWRkZWQoCi0gICAgIGNvbnN0IHN0ZDo6c3RyaW5nJiBjbGllbnRfdXVpZCwKLSAg ICAgY29uc3QgY29udGVudDo6U2VydmljZVdvcmtlckNsaWVudEluZm8mIGNsaWVudF9pbmZvKSB7 Ci0gICBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAgIGJhc2U6 Ok92ZXJsb2FkZWR7Ci0gICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9iYWxSZW5kZXJG cmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgewotICAgICAgICAgICAgIC8vIEZvciB3 aW5kb3cgY2xpZW50cywgaXQgaXMgbmVjZXNzYXJ5IHRvIHdhaXQgdW50aWwgdGhlIG5hdmlnYXRp b24KLSAgICAgICAgICAgICAvLyBoYXMgY29tbWl0dGVkIHRvIGEgUmVuZGVyRnJhbWVIb3N0Lgot QEAgLTQ4NCw3ICs0ODQsNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZUFkZGVk KAotICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNsaWVudChzZXJ2aWNlX3dvcmtl cl9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaGFyZWRf d29ya2VyX3Rva2VuKTsKLSAgICAgICAgICAgICB9Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAg ICB9fSwKLSAgICAgICBjbGllbnRfaW5mbyk7Ci0gfQotIAotQEAgLTUyNCw3ICs1MjQsNyBAQCB2 b2lkIFdvcmtlcldhdGNoZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCi0gICAgIHJldHVybjsKLSAK LSAgIGFic2w6OnZpc2l0KAotLSAgICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgYmFzZTo6 T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6Okdsb2JhbFJlbmRlckZy YW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAgUmVtb3ZlRnJh bWVDbGllbnRDb25uZWN0aW9uKHdvcmtlcl9ub2RlLCByZW5kZXJfZnJhbWVfaG9zdF9pZCk7Ci0g ICAgICAgICAgIH0sCi1AQCAtNTM0LDcgKzUzNCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25D b250cm9sbGVlUmVtb3ZlZCgKLSAgICAgICAgICAgfSwKLSAgICAgICAgICAgWyYsIHRoaXNdKGJs aW5rOjpTaGFyZWRXb3JrZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7Ci0gICAgICAgICAg ICAgRGlzY29ubmVjdFNoYXJlZFdvcmtlckNsaWVudCh3b3JrZXJfbm9kZSwgc2hhcmVkX3dvcmtl cl90b2tlbik7Ci0tICAgICAgICAgIH0pLAotKyAgICAgICAgICB9fSwKLSAgICAgICBjbGllbnQp OwotIH0KLSAKLUBAIC04MTAsNyArODEwLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25uZWN0 QWxsU2VydmljZVdvcgotIAotICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0LT5zZWNvbmQpIHsK LSAgICAgYWJzbDo6dmlzaXQoCi0tICAgICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAgICAg YmFzZTo6T3ZlcmxvYWRlZHsKLSAgICAgICAgICAgICBbJiwgdGhpc10oY29udGVudDo6R2xvYmFs UmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKLSAgICAgICAgICAgICAg IEFkZEZyYW1lQ2xpZW50Q29ubmVjdGlvbihzZXJ2aWNlX3dvcmtlcl9ub2RlLAotICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbmRlcl9mcmFtZV9ob3N0X2lkKTsKLUBA IC04MjIsNyArODIyLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpDb25uZWN0QWxsU2VydmljZVdv cgotICAgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4gc2hhcmVk X3dvcmtlcl90b2tlbikgewotICAgICAgICAgICAgICAgQ29ubmVjdFNoYXJlZFdvcmtlckNsaWVu dChzZXJ2aWNlX3dvcmtlcl9ub2RlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICBzaGFyZWRfd29ya2VyX3Rva2VuKTsKLS0gICAgICAgICAgICB9KSwKLSsgICAgICAg ICAgICB9fSwKLSAgICAgICAgIGt2LnNlY29uZCk7Ci0gICB9Ci0gfQotQEAgLTgzNyw3ICs4Mzcs NyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6OkRpc2Nvbm5lY3RBbGxTZXJ2aWNlCi0gCi0gICBmb3Ig KGNvbnN0IGF1dG8mIGt2IDogaXQtPnNlY29uZCkgewotICAgICBhYnNsOjp2aXNpdCgKLS0gICAg ICAgIGJhc2U6Ok92ZXJsb2FkZWQoCi0rICAgICAgICBiYXNlOjpPdmVybG9hZGVkewotICAgICAg ICAgICAgIFsmLCB0aGlzXSgKLSAgICAgICAgICAgICAgICAgY29uc3QgY29udGVudDo6R2xvYmFs UmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAg ICBSZW1vdmVGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3JrZXJfbm9kZSwKLUBAIC04 NTEsNyArODUxLDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25uZWN0QWxsU2VydmljZQot ICAgICAgICAgICAgIFsmLCB0aGlzXShjb25zdCBibGluazo6U2hhcmVkV29ya2VyVG9rZW4mIHNo YXJlZF93b3JrZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICAgIERpc2Nvbm5lY3RTaGFyZWRXb3Jr ZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7Ci0tICAgICAgICAgICAgfSks Ci0rICAgICAgICAgICAgfX0sCi0gICAgICAgICBrdi5zZWNvbmQpOwotICAgfQotIH0KLWRpZmYg LXVwIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3Nl dHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYy5tZSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2Nv bnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MK LS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbnRlbnQvYnJvd3Nlci9maXJzdF9wYXJ0eV9z ZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MubWUJMjAyNC0wMS0yMSAxODo0MDo1Mi4yODQz ODkyODYgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbnRlbnQvYnJvd3Nlci9m aXJzdF9wYXJ0eV9zZXRzL2ZpcnN0X3BhcnR5X3NldF9wYXJzZXIuY2MJMjAyNC0wMS0yMSAxODo0 MToxNy4yNzY4NDAyMjIgKzAxMDAKLUBAIC03NjQsNyArNzY0LDcgQEAgRmlyc3RQYXJ0eVNldFBh cnNlcjo6UGFyc2VTZXRzRnJvbUVudGVycAotICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQu R2V0UG9saWN5U2V0c0Zyb21MaXN0KAotICAgICAgICAgICAgICAgICAgICAgICAgICBwb2xpY3ku RmluZExpc3Qoa0ZpcnN0UGFydHlTZXRQb2xpY3lBZGRpdGlvbnNGaWVsZCksCi0gICAgICAgICAg ICAgICAgICAgICAgICAgIFBvbGljeVNldFR5cGU6OmtBZGRpdGlvbikpOwotLSAgICByZXR1cm4g UGFyc2VkUG9saWN5U2V0TGlzdHMoc3RkOjptb3ZlKHJlcGxhY2VtZW50cyksIHN0ZDo6bW92ZShh ZGRpdGlvbnMpKTsKLSsgICAgcmV0dXJuIFBhcnNlZFBvbGljeVNldExpc3Rze3N0ZDo6bW92ZShy ZXBsYWNlbWVudHMpLCBzdGQ6Om1vdmUoYWRkaXRpb25zKX07Ci0gICB9KCk7Ci0gCi0gICBjb250 ZXh0LlBvc3RQcm9jZXNzU2V0TGlzdHMoc2V0X2xpc3RzKTsKLWRpZmYgLXVwIGNocm9taXVtLTEy MS4wLjYxNjcuNTcvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3Rf ZnJvbV9zZWxsZXJfc2lnbmFscy5oLm1lIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvY29udGVudC9i cm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5o Ci0tLS0gY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3Jv dXAvaGVhZGVyX2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgubWUJMjAyNC0wMS0yMSAxOToz MDowMC41MzYzODc4NDQgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbnRlbnQv YnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMu aAkyMDI0LTAxLTIxIDIwOjI5OjUwLjIzNjI4NzUxNCArMDEwMAotQEAgLTEzMyw2ICsxMzMsNyBA QCBjbGFzcyBDT05URU5UX0VYUE9SVCBIZWFkZXJEaXJlY3RGcm9tU2VsCi0gCi0gICAgIC8vIFRo ZSBBZC1BdWN0aW9uLVNpZ25hbHMgcmVzcG9uc2Ugc2VydmVkIGJ5IGBvcmlnaW5gLgotICAgICBz dGQ6OnN0cmluZyByZXNwb25zZV9qc29uOwotKyAgICBVbnByb2Nlc3NlZFJlc3BvbnNlKGF1dG8g dSwgYXV0byBzKSA6IG9yaWdpbih1KSwgcmVzcG9uc2VfanNvbihzKSB7IH0KLSAgIH07Ci0gCi0g ICAvLyBJbmZvcm1hdGlvbiBmcm9tIFBhcnNlQW5kRmluZCgpIGNhbGxzIHVzZWQgYnkgUGFyc2VB bmRGaW5kQ29tcGxldGVkLgotZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb250ZW50 L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2Fk ZXJfaW50ZXJjZXB0b3IuY2MubWUgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb250ZW50L2Jyb3dz ZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50 ZXJjZXB0b3IuY2MKLS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbnRlbnQvYnJvd3Nlci9z ZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNl cHRvci5jYy5tZQkyMDI0LTAxLTIxIDIxOjU4OjQ4Ljc3MzM2NjMwMSArMDEwMAotKysrIGNocm9t aXVtLTEyMS4wLjYxNjcuNTcvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vf d29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCTIwMjQtMDEtMjEgMjI6 MDI6MTcuOTU2MDg2MTY3ICswMTAwCi1AQCAtMzYwLDEwICszNjAsMTAgQEAgU2VydmljZVdvcmtl ck1haW5SZXNvdXJjZUxvYWRlckludGVyY2VwdAotICAgfQotICAgYXV0byogc3RvcmFnZV9wYXJ0 aXRpb24gPSBwcm9jZXNzLT5HZXRTdG9yYWdlUGFydGl0aW9uKCk7Ci0gCi0tICByZXR1cm4gYWJz bDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZChbJiwgdGhpc10oYXV0byB0b2tlbikgewotKyAgcmV0 dXJuIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2FkZWR7WyYsIHRoaXNdKGF1dG8gdG9rZW4pIHsK LSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBHZXRTdG9yYWdlS2V5RnJvbVdvcmtlckhv c3Qoc3RvcmFnZV9wYXJ0aXRpb24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHRva2VuLCBvcmlnaW4pOwotLSAgICAgICAgICAgICAg ICAgICAgIH0pLAotKyAgICAgICAgICAgICAgICAgICAgIH19LAotICAgICAgICAgICAgICAgICAg ICAgICp3b3JrZXJfdG9rZW5fKTsKLSB9Ci0gCi1kaWZmIC11cCBjaHJvbWl1bS0xMjEuMC42MTY3 LjU3L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWlu ZXJfaG9zdC5jYy5tZSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbnRlbnQvYnJvd3Nlci9zZXJ2 aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250YWluZXJfaG9zdC5jYwotLS0tIGNocm9taXVt LTEyMS4wLjYxNjcuNTcvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29y a2VyX2NvbnRhaW5lcl9ob3N0LmNjLm1lCTIwMjQtMDEtMjEgMjI6MDQ6MzAuNDQ2NDU0Njk3ICsw MTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93 b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2MJMjAyNC0wMS0yMSAyMjowNToy Mi44NDczOTE0ODEgKzAxMDAKLUBAIC04NzAsNyArODcwLDcgQEAgU2VydmljZVdvcmtlckNvbnRh aW5lckhvc3Q6OkdldENsaWVudFR5cAotICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5D RShzZXF1ZW5jZV9jaGVja2VyXyk7Ci0gICBEQ0hFQ0soY2xpZW50X2luZm9fKTsKLSAgIHJldHVy biBhYnNsOjp2aXNpdCgKLS0gICAgICBiYXNlOjpPdmVybG9hZGVkKAotKyAgICAgIGJhc2U6Ok92 ZXJsb2FkZWR7Ci0gICAgICAgICAgIFtdKEdsb2JhbFJlbmRlckZyYW1lSG9zdElkIHJlbmRlcl9m cmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAgcmV0dXJuIGJsaW5rOjptb2pvbTo6U2Vydmlj ZVdvcmtlckNsaWVudFR5cGU6OmtXaW5kb3c7Ci0gICAgICAgICAgIH0sCi1AQCAtODc5LDcgKzg3 OSw3IEBAIFNlcnZpY2VXb3JrZXJDb250YWluZXJIb3N0OjpHZXRDbGllbnRUeXAKLSAgICAgICAg ICAgfSwKLSAgICAgICAgICAgW10oYmxpbms6OlNoYXJlZFdvcmtlclRva2VuIHNoYXJlZF93b3Jr ZXJfdG9rZW4pIHsKLSAgICAgICAgICAgICByZXR1cm4gYmxpbms6Om1vam9tOjpTZXJ2aWNlV29y a2VyQ2xpZW50VHlwZTo6a1NoYXJlZFdvcmtlcjsKLS0gICAgICAgICAgfSksCi0rICAgICAgICAg IH19LAotICAgICAgICpjbGllbnRfaW5mb18pOwotIH0KLSAKLWRpZmYgLXVwIGNocm9taXVtLTEy MS4wLjYxNjcuNTcvY29udGVudC9icm93c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJf aG9zdC5jYy5tZSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbnRlbnQvYnJvd3Nlci93b3JrZXJf aG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2MKLS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3 L2NvbnRlbnQvYnJvd3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2MubWUJ MjAyNC0wMS0yMSAyMjozNzowMC45Njk0MTYxNDggKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjEuMC42 MTY3LjU3L2NvbnRlbnQvYnJvd3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3Qu Y2MJMjAyNC0wMS0yMSAyMjozODowNy43NTQ1MjgzMzUgKzAxMDAKLUBAIC0yNTEsNyArMjUxLDcg QEAgdm9pZCBEZWRpY2F0ZWRXb3JrZXJIb3N0OjpTdGFydFNjcmlwdExvYQotICAgUmVuZGVyRnJh bWVIb3N0SW1wbCogY3JlYXRvcl9yZW5kZXJfZnJhbWVfaG9zdCA9IG51bGxwdHI7Ci0gICBEZWRp Y2F0ZWRXb3JrZXJIb3N0KiBjcmVhdG9yX3dvcmtlciA9IG51bGxwdHI7Ci0gCi0tICBhYnNsOjp2 aXNpdChiYXNlOjpPdmVybG9hZGVkKAotKyAgYWJzbDo6dmlzaXQoYmFzZTo6T3ZlcmxvYWRlZHsK LSAgICAgICAgICAgICAgICAgICBbJl0oY29uc3QgR2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJl bmRlcl9mcmFtZV9ob3N0X2lkKSB7Ci0gICAgICAgICAgICAgICAgICAgICBjcmVhdG9yX3JlbmRl cl9mcmFtZV9ob3N0ID0KLSAgICAgICAgICAgICAgICAgICAgICAgICBSZW5kZXJGcmFtZUhvc3RJ bXBsOjpGcm9tSUQocmVuZGVyX2ZyYW1lX2hvc3RfaWQpOwotQEAgLTI1OSw3ICsyNTksNyBAQCB2 b2lkIERlZGljYXRlZFdvcmtlckhvc3Q6OlN0YXJ0U2NyaXB0TG9hCi0gICAgICAgICAgICAgICAg ICAgWyZdKGJsaW5rOjpEZWRpY2F0ZWRXb3JrZXJUb2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rva2Vu KSB7Ci0gICAgICAgICAgICAgICAgICAgICBjcmVhdG9yX3dvcmtlciA9IHNlcnZpY2VfLT5HZXRE ZWRpY2F0ZWRXb3JrZXJIb3N0RnJvbVRva2VuKAotICAgICAgICAgICAgICAgICAgICAgICAgIGRl ZGljYXRlZF93b3JrZXJfdG9rZW4pOwotLSAgICAgICAgICAgICAgICAgIH0pLAotKyAgICAgICAg ICAgICAgICAgIH19LAotICAgICAgICAgICAgICAgY3JlYXRvcl8pOwotIAotICAgaWYgKCFjcmVh dG9yX3JlbmRlcl9mcmFtZV9ob3N0ICYmICFjcmVhdG9yX3dvcmtlcikgewotZGlmZiAtdXAgY2hy b21pdW0tMTIxLjAuNjE2Ny4xMzkvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxf Y29udGV4dF9tZW51X21hbmFnZXIuY2MubWUgY2hyb21pdW0tMTIxLjAuNjE2Ny4xMzkvY2hyb21l L2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxfY29udGV4dF9tZW51X21hbmFnZXIuY2MKLS0t LSBjaHJvbWl1bS0xMjEuMC42MTY3LjEzOS9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRv ZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYy5tZQkyMDI0LTAyLTAyIDIxOjA3OjQyLjg1MjA5 NjQ2NiArMDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYxNjcuMTM5L2Nocm9tZS9icm93c2VyL3Vp L2F1dG9maWxsL2F1dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjCTIwMjQtMDItMDIgMjE6 MDc6NDkuMzM2MjEyNjk3ICswMTAwCi1AQCAtMjQ5LDggKzI0OSw4IEBAIHZvaWQgQXV0b2ZpbGxD b250ZXh0TWVudU1hbmFnZXI6OkV4ZWN1dGUKLSAgICAgQXV0b2ZpbGxNYW5hZ2VyJiBtYW5hZ2Vy KSB7Ci0gICBhdXRvJiBkcml2ZXIgPSBzdGF0aWNfY2FzdDxDb250ZW50QXV0b2ZpbGxEcml2ZXIm PihtYW5hZ2VyLmRyaXZlcigpKTsKLSAgIGRyaXZlci5icm93c2VyX2V2ZW50cygpLlJlbmRlcmVy U2hvdWxkVHJpZ2dlclN1Z2dlc3Rpb25zKAotLSAgICAgIEZpZWxkR2xvYmFsSWQoZHJpdmVyLkdl dEZyYW1lVG9rZW4oKSwKLS0gICAgICAgICAgICAgICAgICAgIEZpZWxkUmVuZGVyZXJJZChwYXJh bXNfLmZpZWxkX3JlbmRlcmVyX2lkKSksCi0rICAgICAgRmllbGRHbG9iYWxJZHtkcml2ZXIuR2V0 RnJhbWVUb2tlbigpLAotKyAgICAgICAgICAgICAgICAgICAgRmllbGRSZW5kZXJlcklkKHBhcmFt c18uZmllbGRfcmVuZGVyZXJfaWQpfSwKLSAgICAgICBBdXRvZmlsbFN1Z2dlc3Rpb25UcmlnZ2Vy U291cmNlOjprTWFudWFsRmFsbGJhY2tQYXltZW50cyk7Ci0gfQotIAotZGlmZiAtdXAgY2hyb21p dW0tMTIxLjAuNjE2Ny4xMzkvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJf YXBwc19zZXJ2aWNlX2ltcGwuY2MubWUgY2hyb21pdW0tMTIxLjAuNjE2Ny4xMzkvY2hyb21lL2Jy b3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19zZXJ2aWNlX2ltcGwuY2MKLS0tLSBj aHJvbWl1bS0xMjEuMC42MTY3LjEzOS9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBwbGljYXRpb25z L3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYy5tZQkyMDI0LTAyLTAyIDIyOjI0OjI4LjE2NzE1MzAz MSArMDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYxNjcuMTM5L2Nocm9tZS9icm93c2VyL3VpL3dl Yl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBsLmNjCTIwMjQtMDItMDIgMjI6MjY6 NDMuOTk0MTQ0MzQwICswMTAwCi1AQCAtMTAyLDcgKzEwMiw3IEBAIEFkZE9wdGlvbnNGcm9tTW9q bygKLSAgICAgICAgICAgICAgICAgICAgICBDb252ZXJ0UGF0aFRvVXJsKHN1Yl9hcHAtPm1hbmlm ZXN0X2lkX3BhdGgsIG9yaWdpbikpOwotICAgICBBU1NJR05fT1JfUkVUVVJOKEdVUkwgaW5zdGFs bF91cmwsCi0gICAgICAgICAgICAgICAgICAgICAgQ29udmVydFBhdGhUb1VybChzdWJfYXBwLT5p bnN0YWxsX3VybF9wYXRoLCBvcmlnaW4pKTsKLS0gICAgc3ViX2FwcHMuZW1wbGFjZV9iYWNrKHN0 ZDo6bW92ZShtYW5pZmVzdF9pZCksIHN0ZDo6bW92ZShpbnN0YWxsX3VybCkpOwotKyAgICBzdWJf YXBwcy5lbXBsYWNlX2JhY2soKSA9IHtzdGQ6Om1vdmUobWFuaWZlc3RfaWQpLCBzdGQ6Om1vdmUo aW5zdGFsbF91cmwpfTsKLSAgIH0KLSAgIHJldHVybiBzdWJfYXBwczsKLSB9Ci1AQCAtMzg5LDcg KzM4OSw3IEBAIHZvaWQgU3ViQXBwc1NlcnZpY2VJbXBsOjpTY2hlZHVsZVN1YkFwcEkKLSAgICAg ICAgIGJhc2U6OkJpbmRPbmNlKAotICAgICAgICAgICAgIFtdKHdlYmFwcHM6Ok1hbmlmZXN0SWQg bWFuaWZlc3RfaWQsIGNvbnN0IHdlYmFwcHM6OkFwcElkJiBhcHBfaWQsCi0gICAgICAgICAgICAg ICAgd2ViYXBwczo6SW5zdGFsbFJlc3VsdENvZGUgcmVzdWx0X2NvZGUpIHsKLS0gICAgICAgICAg ICAgIHJldHVybiBTdWJBcHBJbnN0YWxsUmVzdWx0KG1hbmlmZXN0X2lkLCBhcHBfaWQsIHJlc3Vs dF9jb2RlKTsKLSsgICAgICAgICAgICAgIHJldHVybiBTdWJBcHBJbnN0YWxsUmVzdWx0e21hbmlm ZXN0X2lkLCBhcHBfaWQsIHJlc3VsdF9jb2RlfTsKLSAgICAgICAgICAgICB9LAotICAgICAgICAg ICAgIG1hbmlmZXN0X2lkKQotICAgICAgICAgICAgIC5UaGVuKGluc3RhbGxfcmVzdWx0c19jb2xs ZWN0b3IpKTsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjEtdHlwZW5hbWUucGF0Y2ggYi9jaHJv bWl1bS0xMjEtdHlwZW5hbWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4 M2U2MmMuLjAwMDAwMDAKLS0tIGEvY2hyb21pdW0tMTIxLXR5cGVuYW1lLnBhdGNoCisrKyAvZGV2 L251bGwKQEAgLTEsMjU5ICswLDAgQEAKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L2Jhc2Uv Y29udGFpbmVycy9tYXBfdXRpbC5oLm1lCTIwMjMtMTItMDIgMTk6MDA6MTkuNjk2ODAxNTYzICsw MTAwCi0rKysgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni9iYXNlL2NvbnRhaW5lcnMvbWFwX3V0aWwu aAkyMDIzLTEyLTAyIDE5OjAwOjQ3LjA0OTMzNzU0NyArMDEwMAotQEAgLTQyLDcgKzQyLDcgQEAK LSB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwLAotICAgICAgICAgICB0eXBlbmFtZSBLZXksCi0gICAg ICAgICAgIHR5cGVuYW1lIE1hcHBlZEVsZW1lbnRUeXBlID0KLS0gICAgICAgICAgICAgIHN0ZDo6 cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1hcHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4K LSsgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1h cHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4KLSBjb25zdGV4cHIgY29uc3QgTWFwcGVkRWxl bWVudFR5cGUqIEZpbmRQdHJPck51bGwoY29uc3QgTWFwJiBtYXAsCi0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEtleSYga2V5KSB7Ci0gICBh dXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsKLUBAIC01OCw3ICs1OCw3IEBACi0gdGVtcGxhdGUgPHR5 cGVuYW1lIE1hcCwKLSAgICAgICAgICAgdHlwZW5hbWUgS2V5LAotICAgICAgICAgICB0eXBlbmFt ZSBNYXBwZWRFbGVtZW50VHlwZSA9Ci0tICAgICAgICAgICAgICBzdGQ6OnBvaW50ZXJfdHJhaXRz PGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+OjplbGVtZW50X3R5cGU+Ci0rICAgICAgICAgICAg ICB0eXBlbmFtZSBzdGQ6OnBvaW50ZXJfdHJhaXRzPGludGVybmFsOjpNYXBwZWRUeXBlPE1hcD4+ OjplbGVtZW50X3R5cGU+Ci0gY29uc3RleHByIE1hcHBlZEVsZW1lbnRUeXBlKiBGaW5kUHRyT3JO dWxsKE1hcCYgbWFwLCBjb25zdCBLZXkmIGtleSkgewotICAgYXV0byBpdCA9IG1hcC5maW5kKGtl eSk7Ci0gICByZXR1cm4gaXQgIT0gbWFwLmVuZCgpID8gc3RkOjp0b19hZGRyZXNzKGl0LT5zZWNv bmQpIDogbnVsbHB0cjsKLWRpZmYgLXVwIGNocm9taXVtLTExNS4wLjU3OTAuMjQvY2hyb21lL2Jy b3dzZXIvZG93bmxvYWQvYnViYmxlL2Rvd25sb2FkX2J1YmJsZV91cGRhdGVfc2VydmljZS5jYy5t ZSBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L2Nocm9tZS9icm93c2VyL2Rvd25sb2FkL2J1YmJsZS9k b3dubG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MKLS0tLSBjaHJvbWl1bS0xMTUuMC41Nzkw LjI0L2Nocm9tZS9icm93c2VyL2Rvd25sb2FkL2J1YmJsZS9kb3dubG9hZF9idWJibGVfdXBkYXRl X3NlcnZpY2UuY2MubWUJMjAyMy0wNi0xNyAxNDo1MDo1Ni4zNDI1OTE3MDIgKzAyMDAKLSsrKyBj aHJvbWl1bS0xMTUuMC41NzkwLjI0L2Nocm9tZS9icm93c2VyL2Rvd25sb2FkL2J1YmJsZS9kb3du bG9hZF9idWJibGVfdXBkYXRlX3NlcnZpY2UuY2MJMjAyMy0wNi0xNyAxNDo1Nzo0OC4wMjQzNzcz NzUgKzAyMDAKLUBAIC05MSw3ICs5MSw3IEBAIEl0ZW1Tb3J0S2V5IEdldFNvcnRLZXkoY29uc3Qg SXRlbSYgaXRlbSkKLSAvLyBIZWxwZXIgdG8gZ2V0IGFuIGl0ZXJhdG9yIHRvIHRoZSBsYXN0IGVs ZW1lbnQgaW4gdGhlIGNhY2hlLiBUaGUgY2FjaGUKLSAvLyBtdXN0IG5vdCBiZSBlbXB0eS4KLSB0 ZW1wbGF0ZSA8dHlwZW5hbWUgSXRlbT4KLS1Tb3J0ZWRJdGVtczxJdGVtPjo6Y29uc3RfaXRlcmF0 b3IgR2V0TGFzdEl0ZXIoY29uc3QgU29ydGVkSXRlbXM8SXRlbT4mIGNhY2hlKSB7Ci0rdHlwZW5h bWUgU29ydGVkSXRlbXM8SXRlbT46OmNvbnN0X2l0ZXJhdG9yIEdldExhc3RJdGVyKGNvbnN0IFNv cnRlZEl0ZW1zPEl0ZW0+JiBjYWNoZSkgewotICAgQ0hFQ0soIWNhY2hlLmVtcHR5KCkpOwotICAg YXV0byBpdCA9IGNhY2hlLmVuZCgpOwotICAgcmV0dXJuIHN0ZDo6cHJldihpdCk7Ci1AQCAtOTY3 LDkgKzk2Nyw5IEBAIGJvb2wgRG93bmxvYWRCdWJibGVVcGRhdGVTZXJ2aWNlOjpDYWNoZU0KLSB9 Ci0gCi0gdGVtcGxhdGUgPHR5cGVuYW1lIElkLCB0eXBlbmFtZSBJdGVtPgotLVNvcnRlZEl0ZW1z PEl0ZW0+OjppdGVyYXRvcgotK3R5cGVuYW1lIFNvcnRlZEl0ZW1zPEl0ZW0+OjppdGVyYXRvcgot IERvd25sb2FkQnViYmxlVXBkYXRlU2VydmljZTo6Q2FjaGVNYW5hZ2VyOjpSZW1vdmVJdGVtRnJv bUNhY2hlQnlJdGVyKAotLSAgICBTb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0b3IgaXRlciwKLSsg ICAgdHlwZW5hbWUgU29ydGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yIGl0ZXIsCi0gICAgIFNvcnRl ZEl0ZW1zPEl0ZW0+JiBjYWNoZSwKLSAgICAgSXRlck1hcDxJZCwgSXRlbT4mIGl0ZXJfbWFwKSB7 Ci0gICBDSEVDSyhpdGVyICE9IGNhY2hlLmVuZCgpKTsKLWRpZmYgLXVwIGNocm9taXVtLTExNS4w LjU3OTAuMzIvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS90ZmxpdGVfbW9kZWxf ZXhlY3V0b3IuaC5tZSBjaHJvbWl1bS0xMTUuMC41NzkwLjMyL2NvbXBvbmVudHMvb3B0aW1pemF0 aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgKLS0tLSBjaHJvbWl1bS0xMTUu MC41NzkwLjMyL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVs X2V4ZWN1dG9yLmgubWUJMjAyMy0wNi0xOCAyMTo1Mjo1My41MTU2MjUyMzcgKzAyMDAKLSsrKyBj aHJvbWl1bS0xMTUuMC41NzkwLjMyL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUv dGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgJMjAyMy0wNi0xOCAyMTo1MzowNi44ODE4ODEyOTMgKzAy MDAKLUBAIC0xODksNyArMTg5LDcgQEAgY2xhc3MgVEZMaXRlTW9kZWxFeGVjdXRvciA6IHB1Ymxp YyBNb2RlbAotICAgdm9pZCBTZW5kRm9yQmF0Y2hFeGVjdXRpb24oCi0gICAgICAgQmF0Y2hFeGVj dXRpb25DYWxsYmFjayBjYWxsYmFja19vbl9jb21wbGV0ZSwKLSAgICAgICBiYXNlOjpUaW1lVGlj a3Mgc3RhcnRfdGltZSwKLS0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlw ZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQotKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhl Y3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMp Ci0gICAgICAgb3ZlcnJpZGUgewotICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+ UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7Ci0gICAgIERDSEVDS19DQUxMRURfT05fVkFM SURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotZGlmZiAtdXAgY2hyb21pdW0tMTE1LjAu NTc5MC4zMi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2h0bWwvcGFyc2VyL2h0bWxf ZG9jdW1lbnRfcGFyc2VyX2Zhc3RwYXRoLmNjLm1lIGNocm9taXVtLTExNS4wLjU3OTAuMzIvdGhp cmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9odG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3Bh cnNlcl9mYXN0cGF0aC5jYwotLS0tIGNocm9taXVtLTExNS4wLjU3OTAuMzIvdGhpcmRfcGFydHkv YmxpbmsvcmVuZGVyZXIvY29yZS9odG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0 cGF0aC5jYy5tZQkyMDIzLTA2LTE5IDEwOjAzOjMyLjMxOTIxODY3OCArMDIwMAotKysrIGNocm9t aXVtLTExNS4wLjU3OTAuMzIvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9odG1sL3Bh cnNlci9odG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0cGF0aC5jYwkyMDIzLTA2LTE5IDEwOjA0OjEy LjAyMzk0MjIzMiArMDIwMAotQEAgLTE2OSw3ICsxNjksNyBAQCBjbGFzcyBIVE1MRmFzdFBhdGhQ YXJzZXIgewotICAgdXNpbmcgU3BhbiA9IGJhc2U6OnNwYW48Y29uc3QgQ2hhcj47Ci0gICB1c2lu ZyBVU3BhbiA9IGJhc2U6OnNwYW48Y29uc3QgVUNoYXI+OwotICAgLy8gMzIgbWF0Y2hlcyB0aGF0 IHVzZWQgYnkgSFRNTFRva2VuOjpBdHRyaWJ1dGUuCi0tICB0eXBlZGVmIHN0ZDo6Y29uZGl0aW9u YWw8c3RkOjppc19zYW1lX3Y8Q2hhciwgVUNoYXI+LAotKyAgdHlwZWRlZiB0eXBlbmFtZSBzdGQ6 OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZV92PENoYXIsIFVDaGFyPiwKLSAgICAgICAgICAgICAg ICAgICAgICAgICAgICBVQ2hhckxpdGVyYWxCdWZmZXI8MzI+LAotICAgICAgICAgICAgICAgICAg ICAgICAgICAgIExDaGFyTGl0ZXJhbEJ1ZmZlcjwzMj4+Ojp0eXBlIExpdGVyYWxCdWZmZXJUeXBl OwotICAgdHlwZWRlZiBVQ2hhckxpdGVyYWxCdWZmZXI8MzI+IFVDaGFyTGl0ZXJhbEJ1ZmZlclR5 cGU7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMTYuMC41ODQ1LjUwL2NvbnRlbnQvcHVibGljL2Jyb3dz ZXIvd2ViX3VpX2Jyb3dzZXJfaW50ZXJmYWNlX2Jyb2tlcl9yZWdpc3RyeS5oLm1lIGNocm9taXVt LTExNi4wLjU4NDUuNTAvY29udGVudC9wdWJsaWMvYnJvd3Nlci93ZWJfdWlfYnJvd3Nlcl9pbnRl cmZhY2VfYnJva2VyX3JlZ2lzdHJ5LmgKLS0tLSBjaHJvbWl1bS0xMTYuMC41ODQ1LjUwL2NvbnRl bnQvcHVibGljL2Jyb3dzZXIvd2ViX3VpX2Jyb3dzZXJfaW50ZXJmYWNlX2Jyb2tlcl9yZWdpc3Ry eS5oLm1lCTIwMjMtMDgtMDIgMTY6MTg6MzAuMzgwMTA4MTI1ICswMjAwCi0rKysgY2hyb21pdW0t MTE2LjAuNTg0NS41MC9jb250ZW50L3B1YmxpYy9icm93c2VyL3dlYl91aV9icm93c2VyX2ludGVy ZmFjZV9icm9rZXJfcmVnaXN0cnkuaAkyMDIzLTA4LTAyIDE2OjIwOjU5LjY2MDAyNDU3OCArMDIw MAotQEAgLTEyNywxMCArMTI3LDEwIEBAIGNsYXNzIENPTlRFTlRfRVhQT1JUIFdlYlVJQnJvd3Nl ckludGVyZmEKLSAgIC8vCi0gICAvLyBUT0RPKGNyYnVnLmNvbS8xNDA3OTM2KTogUG9pbnQgdG8g V2ViVUlKc0JyaWRnZSBkb2N1bWVudGF0aW9uLgotICAgdGVtcGxhdGUgPHR5cGVuYW1lIENvbnRy b2xsZXJUeXBlPgotLSAgSnNCcmlkZ2VUcmFpdHM8Q29udHJvbGxlclR5cGU+OjpCaW5kZXJJbml0 aWFsaXplciYgRm9yV2ViVUlXaXRoSnNCcmlkZ2UoKSB7Ci0rICB0eXBlbmFtZSBKc0JyaWRnZVRy YWl0czxDb250cm9sbGVyVHlwZT46OkJpbmRlckluaXRpYWxpemVyJiBGb3JXZWJVSVdpdGhKc0Jy aWRnZSgpIHsKLSAgICAgdXNpbmcgVHJhaXRzID0gSnNCcmlkZ2VUcmFpdHM8Q29udHJvbGxlclR5 cGU+OwotLSAgICB1c2luZyBJbnRlcmZhY2UgPSBUcmFpdHM6OkludGVyZmFjZTsKLS0gICAgdXNp bmcgSnNCcmlkZ2VCaW5kZXJJbml0aWFsaXplciA9IFRyYWl0czo6QmluZGVySW5pdGlhbGl6ZXI7 Ci0rICAgIHVzaW5nIEludGVyZmFjZSA9IHR5cGVuYW1lIFRyYWl0czo6SW50ZXJmYWNlOwotKyAg ICB1c2luZyBKc0JyaWRnZUJpbmRlckluaXRpYWxpemVyID0gdHlwZW5hbWUgVHJhaXRzOjpCaW5k ZXJJbml0aWFsaXplcjsKLSAKLSAgICAgLy8gV2ViVUlDb250cm9sbGVyOjpHZXRUeXBlKCkgcmVx dWlyZXMgYW4gaW5zdGFudGlhdGVkIFdlYlVJQ29udHJvbGxlcgotICAgICAvLyAoYmVjYXVzZSBp dCdzIGEgdmlydHVhbCBtZXRob2QgYW5kIGNhbid0IGJlIHN0YXRpYykuIEhlcmUgd2Ugb25seSBo YXZlCi1kaWZmIC11cCBjaHJvbWl1bS0xMTYuMC41ODQ1LjUwL3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL2NvcmUvcGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXNfc3BhcnNlLmgubWUgY2hy b21pdW0tMTE2LjAuNTg0NS41MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50 L29iamVjdF9wYWludF9wcm9wZXJ0aWVzX3NwYXJzZS5oCi0tLS0gY2hyb21pdW0tMTE2LjAuNTg0 NS41MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29iamVjdF9wYWludF9w cm9wZXJ0aWVzX3NwYXJzZS5oLm1lCTIwMjMtMDgtMDIgMjA6NDE6MjMuOTg0NzI5NDYyICswMjAw Ci0rKysgY2hyb21pdW0tMTE2LjAuNTg0NS41MC90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9j b3JlL3BhaW50L29iamVjdF9wYWludF9wcm9wZXJ0aWVzX3NwYXJzZS5oCTIwMjMtMDgtMDIgMjA6 NDE6NTMuNzM3NTgzMDkzICswMjAwCi1AQCAtMjcwLDggKzI3MCw4IEBAIGNsYXNzIENPUkVfRVhQ T1JUIE9iamVjdFBhaW50UHJvcGVydGllc1MKLSAgICAgICBOb2RlTGlzdCYgbm9kZXMsCi0gICAg ICAgTm9kZUlkIG5vZGVfaWQsCi0gICAgICAgY29uc3QgUGFyZW50VHlwZSYgcGFyZW50LAotLSAg ICAgIE5vZGVUeXBlOjpTdGF0ZSYmIHN0YXRlLAotLSAgICAgIGNvbnN0IE5vZGVUeXBlOjpBbmlt YXRpb25TdGF0ZSYgYW5pbWF0aW9uX3N0YXRlID0KLSsgICAgICB0eXBlbmFtZSBOb2RlVHlwZTo6 U3RhdGUmJiBzdGF0ZSwKLSsgICAgICBjb25zdCB0eXBlbmFtZSBOb2RlVHlwZTo6QW5pbWF0aW9u U3RhdGUmIGFuaW1hdGlvbl9zdGF0ZSA9Ci0gICAgICAgICAgIE5vZGVUeXBlOjpBbmltYXRpb25T dGF0ZSgpKSB7Ci0gICAgIC8vIEZpcnN0LCBjaGVjayBpZiB3ZSBuZWVkIHRvIGFkZCBhIG5ldyBu b2RlLgotICAgICBpZiAoIW5vZGVzLkhhc0ZpZWxkKG5vZGVfaWQpKSB7Ci1kaWZmIC11cCBjaHJv bWl1bS0xMTcuMC41OTM4LjYyL2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZs aXRlX21vZGVsX2V4ZWN1dG9yLmgubWUgY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9jb21wb25lbnRz L29wdGltaXphdGlvbl9ndWlkZS9jb3JlL3RmbGl0ZV9tb2RlbF9leGVjdXRvci5oCi0tLS0gY2hy b21pdW0tMTE3LjAuNTkzOC42Mi9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL3Rm bGl0ZV9tb2RlbF9leGVjdXRvci5oLm1lCTIwMjMtMDktMTUgMTA6MjI6NTEuODg5Njk4NDAyICsw MjAwCi0rKysgY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9jb21wb25lbnRzL29wdGltaXphdGlvbl9n dWlkZS9jb3JlL3RmbGl0ZV9tb2RlbF9leGVjdXRvci5oCTIwMjMtMDktMTUgMTA6Mjg6MjYuNzAy NzE2MjI0ICswMjAwCi1AQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0 b3IgOiBwdWJsaWMgTW9kZWwKLSAgIC8vIFN0YXJ0cyB0aGUgc3luY2hyb25vdXMgZXhlY3V0aW9u IG9mIHRoZSBtb2RlbC4gUmV0dXJucyBtb2RlbCBvdXRwdXRzLgotICAgLy8gTW9kZWwgbmVlZHMg dG8gYmUgbG9hZGVkLiBTeW5jaHJvbm91cyBjYWxscyBkbyBub3QgbG9hZCBvciB1bmxvYWQgbW9k ZWwuCi0gICBzdGQ6OnZlY3RvcjxhYnNsOjpvcHRpb25hbDxPdXRwdXRUeXBlPj4gU2VuZEZvckJh dGNoRXhlY3V0aW9uU3luYygKLS0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0 VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQotKyAgICAgIHR5cGVuYW1lIE1vZGVs RXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1 dHMpCi0gICAgICAgb3ZlcnJpZGUgewotICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVy Xy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7Ci0gICAgIERDSEVDS19DQUxMRURfT05f VkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotQEAgLTM4OSw3ICszODksNyBAQCBj bGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGljIE1vZGVsCi0gICAvLyBleGVjdXRlcyBp dCBvbiB0aGUgbW9kZWwgZXhlY3V0aW9uIHRocmVhZC4KLSAgIHZvaWQgTG9hZE1vZGVsRmlsZUFu ZEJhdGNoRXhlY3V0ZSgKLSAgICAgICBCYXRjaEV4ZWN1dGlvbkNhbGxiYWNrIGNhbGxiYWNrX29u X2NvbXBsZXRlLAotLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6 Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpIHsKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1 dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKSB7 Ci0gICAgIERDSEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRT ZXF1ZW5jZSgpKTsKLSAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5j ZV9jaGVja2VyXyk7Ci0gCi1AQCAtNDA2LDcgKzQwNiw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhl Y3V0b3IgOiBwdWJsaWMgTW9kZWwKLSAKLSAgIC8vIEJhdGNoIGV4ZWN1dGVzIHRoZSBsb2FkZWQg bW9kZWwgZm9yIGlucHV0cy4KLSAgIHZvaWQgQmF0Y2hFeGVjdXRlTG9hZGVkTW9kZWwoCi0tICAg ICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVj dG9yIGlucHV0cywKLSsgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElu cHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAotICAgICAgIHN0ZDo6dmVjdG9y PGFic2w6Om9wdGlvbmFsPE91dHB1dFR5cGU+Piogb3V0cHV0cykgewotICAgICBEQ0hFQ0soZXhl Y3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJyZW50U2VxdWVuY2UoKSk7Ci0gICAg IERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOwotQEAg LTQ2Niw3ICs0NjYsNyBAQCBjbGFzcyBURkxpdGVNb2RlbEV4ZWN1dG9yIDogcHVibGljIE1vZGVs Ci0gICAvLyBVbmxvYWRzIHRoZSBtb2RlbCBpZiBuZWVkZWQuCi0gICB2b2lkIEJhdGNoRXhlY3V0 ZUxvYWRlZE1vZGVsQW5kUnVuQ2FsbGJhY2soCi0gICAgICAgQmF0Y2hFeGVjdXRpb25DYWxsYmFj ayBjYWxsYmFja19vbl9jb21wbGV0ZSwKLS0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUs IElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzLAotKyAgICAgIHR5cGVuYW1l IE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3Rv ciBpbnB1dHMsCi0gICAgICAgRXhlY3V0aW9uU3RhdHVzIGV4ZWN1dGlvbl9zdGF0dXMpIHsKLSAg ICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5lcl8tPlJ1bnNUYXNrc0luQ3VycmVudFNlcXVl bmNlKCkpOwotICAgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNFKHNlcXVlbmNlX2No ZWNrZXJfKTsKLWRpZmYgLXVwIGNocm9taXVtLTExNy4wLjU5MzguNjIvY29tcG9uZW50cy9zdXBl cnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuY2MubWUgY2hyb21pdW0tMTE3 LjAuNTkzOC42Mi9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9f ZmV0Y2hlci5jYwotLS0tIGNocm9taXVtLTExNy4wLjU5MzguNjIvY29tcG9uZW50cy9zdXBlcnZp c2VkX3VzZXIvY29yZS9icm93c2VyL3Byb3RvX2ZldGNoZXIuY2MubWUJMjAyMy0wOS0xNSAxNzoy MDoyMi41NTA2NTc1ODYgKzAyMDAKLSsrKyBjaHJvbWl1bS0xMTcuMC41OTM4LjYyL2NvbXBvbmVu dHMvc3VwZXJ2aXNlZF91c2VyL2NvcmUvYnJvd3Nlci9wcm90b19mZXRjaGVyLmNjCTIwMjMtMDkt MTUgMTc6MjQ6MTEuMzk2NzE2NzM0ICswMjAwCi1AQCAtMzk5LDcgKzM5OSw3IEBAIGNsYXNzIFJl dHJ5aW5nRmV0Y2hlckltcGwgZmluYWwgOiBwdWJsaWMKLSAgIFJldHJ5aW5nRmV0Y2hlckltcGwo Y29uc3QgUmV0cnlpbmdGZXRjaGVySW1wbCYpID0gZGVsZXRlOwotICAgUmV0cnlpbmdGZXRjaGVy SW1wbCYgb3BlcmF0b3I9KGNvbnN0IFJldHJ5aW5nRmV0Y2hlckltcGwmKSA9IGRlbGV0ZTsKLSAK LS0gIHZvaWQgU3RhcnQoUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2FsbGJhY2sp IG92ZXJyaWRlIHsKLSsgIHZvaWQgU3RhcnQodHlwZW5hbWUgUHJvdG9GZXRjaGVyPFJlc3BvbnNl Pjo6Q2FsbGJhY2sgY2FsbGJhY2spIG92ZXJyaWRlIHsKLSAgICAgY2FsbGJhY2tfID0gc3RkOjpt b3ZlKGNhbGxiYWNrKTsKLSAgICAgUmV0cnkoKTsKLSAgIH0KLUBAIC00MzUsNyArNDM1LDcgQEAg Y2xhc3MgUmV0cnlpbmdGZXRjaGVySW1wbCBmaW5hbCA6IHB1YmxpYwotICAgfQotIAotICAgLy8g Q2xpZW50IGNhbGxiYWNrLgotLSAgUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2Fs bGJhY2tfOwotKyAgdHlwZW5hbWUgUHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2Fs bGJhY2tfOwotIAotICAgLy8gUmV0cnkgY29udHJvbHMuCi0gICBiYXNlOjpPbmVTaG90VGltZXIg dGltZXJfOwotQEAgLTU3OCw3ICs1NzgsNyBAQCBQYXJhbGxlbEZldGNoTWFuYWdlcjxSZXF1ZXN0 LCBSZXNwb25zZT46Ci0gdGVtcGxhdGUgPHR5cGVuYW1lIFJlcXVlc3QsIHR5cGVuYW1lIFJlc3Bv bnNlPgotIHZvaWQgUGFyYWxsZWxGZXRjaE1hbmFnZXI8UmVxdWVzdCwgUmVzcG9uc2U+OjpGZXRj aCgKLSAgICAgY29uc3QgUmVxdWVzdCYgcmVxdWVzdCwKLS0gICAgRmV0Y2hlcjo6Q2FsbGJhY2sg Y2FsbGJhY2spIHsKLSsgICAgdHlwZW5hbWUgRmV0Y2hlcjo6Q2FsbGJhY2sgY2FsbGJhY2spIHsK LSAgIENIRUNLKGNhbGxiYWNrKSA8PCAiVXNlIGJhc2U6OkRvTm90aGluZygpIGluc3RlYWQgb2Yg ZW1wdHkgY2FsbGJhY2suIjsKLSAgIEtleVR5cGUga2V5ID0gcmVxdWVzdHNfaW5fZmxpZ2h0Xy5B ZGQoTWFrZUZldGNoZXIocmVxdWVzdCkpOwotICAgcmVxdWVzdHNfaW5fZmxpZ2h0Xy5Mb29rdXAo a2V5KS0+U3RhcnQoCi1kaWZmIC11cCBjaHJvbWl1bS0xMTcuMC41OTM4LjYyL2NvbXBvbmVudHMv c3VwZXJ2aXNlZF91c2VyL2NvcmUvYnJvd3Nlci9wcm90b19mZXRjaGVyLmgubWUgY2hyb21pdW0t MTE3LjAuNTkzOC42Mi9jb21wb25lbnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJv dG9fZmV0Y2hlci5oCi0tLS0gY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9jb21wb25lbnRzL3N1cGVy dmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oLm1lCTIwMjMtMDktMTUgMTc6 MjA6NTYuNTQwNDYwMzkxICswMjAwCi0rKysgY2hyb21pdW0tMTE3LjAuNTkzOC42Mi9jb21wb25l bnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oCTIwMjMtMDkt MTUgMTc6MjI6MTguMjQ2MjM3ODE3ICswMjAwCi1AQCAtMTY1LDEwICsxNjUsMTAgQEAgY2xhc3Mg UGFyYWxsZWxGZXRjaE1hbmFnZXIgewotIAotICAgLy8gU3RhcnRzIHRoZSBmZXRjaC4gVW5kZXJs eWluZyBmZXRjaGVyIGlzIHN0b3JlZCBpbnRlcm5hbGx5LCBhbmQgd2lsbCBiZQotICAgLy8gY2xl YW5lZCB1cCBhZnRlciBmaW5pc2ggb3Igd2hlbiB0aGlzIG1hbmFnZXIgaXMgZGVzdHJveWVkLgot LSAgdm9pZCBGZXRjaChjb25zdCBSZXF1ZXN0JiByZXF1ZXN0LCBGZXRjaGVyOjpDYWxsYmFjayBj YWxsYmFjayk7Ci0rICB2b2lkIEZldGNoKGNvbnN0IFJlcXVlc3QmIHJlcXVlc3QsIHR5cGVuYW1l IEZldGNoZXI6OkNhbGxiYWNrIGNhbGxiYWNrKTsKLSAKLSAgcHJpdmF0ZToKLS0gIHVzaW5nIEtl eVR5cGUgPSBiYXNlOjpJRE1hcDxzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hlcj4+OjpLZXlUeXBlOwot KyAgdXNpbmcgS2V5VHlwZSA9IHR5cGVuYW1lIGJhc2U6OklETWFwPHN0ZDo6dW5pcXVlX3B0cjxG ZXRjaGVyPj46OktleVR5cGU7Ci0gCi0gICAvLyBSZW1vdmUgZmV0Y2hlciB1bmRlciBrZXkgZnJv bSByZXF1ZXN0c19pbl9mbGlnaHRfLgotICAgdm9pZCBSZW1vdmUoS2V5VHlwZSBrZXkpOwotZGlm ZiAtdXAgY2hyb21pdW0tMTIwLjAuNjA5OS41Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9i aW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgubWUgY2hyb21pdW0tMTIwLjAuNjA5OS41 Ni90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJh YmxlLmgKLS0tLSBjaHJvbWl1bS0xMjAuMC42MDk5LjU2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNfaXRlcmFibGUuaC5tZQkyMDIzLTEyLTA0IDAwOjI5 OjM1LjE5NzIwOTUzOCArMDEwMAotKysrIGNocm9taXVtLTEyMC4wLjYwOTkuNTYvdGhpcmRfcGFy dHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92OC9hc3luY19pdGVyYWJsZS5oCTIwMjMt MTItMDQgMDA6MzA6MjQuNDM2MjMzMjQ5ICswMTAwCi1AQCAtMjIwLDcgKzIyMCw3IEBAIGNsYXNz IFBhaXJBc3luY0l0ZXJhYmxlIHsKLSAgcHJpdmF0ZToKLSAgIHZpcnR1YWwgSXRlcmF0aW9uU291 cmNlKiBDcmVhdGVJdGVyYXRpb25Tb3VyY2UoCi0gICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdF9z dGF0ZSwKLS0gICAgICBJdGVyYXRpb25Tb3VyY2U6OktpbmQga2luZCwKLSsgICAgICB0eXBlbmFt ZSBJdGVyYXRpb25Tb3VyY2U6OktpbmQga2luZCwKLSAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhj ZXB0aW9uX3N0YXRlKSA9IDA7Ci0gfTsKLSAKLUBAIC0yNjIsNyArMjYyLDcgQEAgY2xhc3MgVmFs dWVBc3luY0l0ZXJhYmxlIHsKLSAgcHJpdmF0ZToKLSAgIHZpcnR1YWwgSXRlcmF0aW9uU291cmNl KiBDcmVhdGVJdGVyYXRpb25Tb3VyY2UoCi0gICAgICAgU2NyaXB0U3RhdGUqIHNjcmlwdF9zdGF0 ZSwKLS0gICAgICBJdGVyYXRpb25Tb3VyY2U6OktpbmQga2luZCwKLSsgICAgICB0eXBlbmFtZSBJ dGVyYXRpb25Tb3VyY2U6OktpbmQga2luZCwKLSAgICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0 aW9uX3N0YXRlKSA9IDA7Ci0gfTsKLSAKLWRpZmYgLXVwIGNocm9taXVtLTEyMS4wLjYxNjcuNTcv YmFzZS9mdW5jdGlvbmFsL2JpbmRfaW50ZXJuYWwuaC5tZSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3 L2Jhc2UvZnVuY3Rpb25hbC9iaW5kX2ludGVybmFsLmgKLS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3 LjU3L2Jhc2UvZnVuY3Rpb25hbC9iaW5kX2ludGVybmFsLmgubWUJMjAyNC0wMS0yMSAxNjoxMDow OS44MDkwMzc1ODEgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2Jhc2UvZnVuY3Rp b25hbC9iaW5kX2ludGVybmFsLmgJMjAyNC0wMS0yMSAxNjo0NjozMy43NTkzOTczMDMgKzAxMDAK LUBAIC0xNTMzLDExICsxNTMzLDExIEBAIHRlbXBsYXRlIDxpbnQgaSwKLSAgICAgICAgICAgdHlw ZW5hbWUgUGFyYW0+Ci0gc3RydWN0IFBhcmFtQ2FuQmVCb3VuZCB7Ci0gIHByaXZhdGU6Ci0tICB1 c2luZyBVbndyYXBwZWRQYXJhbSA9IEJpbmRBcmd1bWVudDxpPjo6dGVtcGxhdGUgRm9yd2FyZGVk QXM8Ci0rICB1c2luZyBVbndyYXBwZWRQYXJhbSA9IHR5cGVuYW1lIEJpbmRBcmd1bWVudDxpPjo6 dGVtcGxhdGUgRm9yd2FyZGVkQXM8Ci0gICAgICAgVW53cmFwcGVkPjo6dGVtcGxhdGUgVG9QYXJh bVdpdGhUeXBlPFBhcmFtPjsKLS0gIHVzaW5nIFBhcmFtU3RvcmFnZSA9IEJpbmRBcmd1bWVudDxp Pjo6dGVtcGxhdGUgVG9QYXJhbVdpdGhUeXBlPAotKyAgdXNpbmcgUGFyYW1TdG9yYWdlID0gdHlw ZW5hbWUgQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBUb1BhcmFtV2l0aFR5cGU8Ci0gICAgICAg UGFyYW0+Ojp0ZW1wbGF0ZSBTdG9yZWRBczxTdG9yYWdlPjsKLS0gIHVzaW5nIEJvdW5kU3RvcmFn ZSA9Ci0rICB1c2luZyBCb3VuZFN0b3JhZ2UgPSB0eXBlbmFtZQotICAgICAgIEJpbmRBcmd1bWVu dDxpPjo6dGVtcGxhdGUgQm91bmRBczxBcmc+Ojp0ZW1wbGF0ZSBTdG9yZWRBczxTdG9yYWdlPjsK LSAKLSAgIC8vIFdlIGZvcmJpZCBjYWxsYmFja3MgZnJvbSB1c2luZyByYXdfcHRyIGFzIGEgcGFy YW1ldGVyLiBIb3dldmVyLCB3ZSBhbGxvdwotZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny41 Ny9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgubWUgY2hyb21pdW0tMTIx LjAuNjE2Ny41Ny9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgKLS0tLSBj aHJvbWl1bS0xMjEuMC42MTY3LjU3L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9hcnJheV90cmFp dHMuaC5tZQkyMDI0LTAxLTIxIDE3OjIzOjM3Ljc4NjYwNjQyOCArMDEwMAotKysrIGNocm9taXVt LTEyMS4wLjYxNjcuNTcvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3RyYWl0cy5oCTIw MjQtMDEtMjEgMTc6MjM6NTguNTgyMTI3MTAzICswMTAwCi1AQCAtOTAsNyArOTAsNyBAQCB0ZW1w bGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgotICAgICB7IGNbaV0gfSAtPiBzdGQ6OnNhbWVfYXM8 dHlwZW5hbWUgQ29udGFpbmVyOjpyZWZlcmVuY2U+OwotICAgfQotIHN0cnVjdCBBcnJheVRyYWl0 czxDb250YWluZXI+IHsKLS0gIHVzaW5nIEVsZW1lbnQgPSBDb250YWluZXI6OnZhbHVlX3R5cGU7 Ci0rICB1c2luZyBFbGVtZW50ID0gdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90eXBlOwotIAot ICAgLy8gdmVjdG9yLWxpa2UgY29udGFpbmVycyBoYXZlIG5vIGJ1aWx0LWluIG51bGwuCi0gICBz dGF0aWMgYm9vbCBJc051bGwoY29uc3QgQ29udGFpbmVyJiBjKSB7IHJldHVybiBmYWxzZTsgfQot ZGlmZiAtdXAgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb21wb25lbnRzL29wdGltaXphdGlvbl9n dWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oLm1lIGNocm9t aXVtLTEyMS4wLjYxNjcuNTcvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2Rl bF9leGVjdXRpb24vbW9kZWxfZXhlY3V0aW9uX3V0aWwuaAotLS0tIGNocm9taXVtLTEyMS4wLjYx NjcuNTcvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9leGVjdXRpb24v bW9kZWxfZXhlY3V0aW9uX3V0aWwuaC5tZQkyMDI0LTAxLTIxIDE3OjMzOjQwLjAzMDg5NzgzOCAr MDEwMAotKysrIGNocm9taXVtLTEyMS4wLjYxNjcuNTcvY29tcG9uZW50cy9vcHRpbWl6YXRpb25f Z3VpZGUvY29yZS9tb2RlbF9leGVjdXRpb24vbW9kZWxfZXhlY3V0aW9uX3V0aWwuaAkyMDI0LTAx LTIxIDE3OjM0OjExLjUxODcwNTI2NiArMDEwMAotQEAgLTI1LDcgKzI1LDcgQEAgdm9pZCBTZXRF eGVjdXRpb25SZXF1ZXN0VGVtcGxhdGUoCi0gCi0gICAvLyBSZXF1ZXN0IGlzIHNldCBieSB0aGUg ZmVhdHVyZSBhbmQgc2hvdWxkIGFsd2F5cyBiZSB0eXBlZC4KLSAgIGF1dG8gdHlwZWRfcmVxdWVz dCA9Ci0tICAgICAgc3RhdGljX2Nhc3Q8Y29uc3QgRmVhdHVyZVR5cGU6OlJlcXVlc3QmPihyZXF1 ZXN0X21ldGFkYXRhKTsKLSsgICAgICBzdGF0aWNfY2FzdDxjb25zdCB0eXBlbmFtZSBGZWF0dXJl VHlwZTo6UmVxdWVzdCY+KHJlcXVlc3RfbWV0YWRhdGEpOwotICAgKihsb2dnaW5nX2RhdGEtPm11 dGFibGVfcmVxdWVzdF9kYXRhKCkpID0gdHlwZWRfcmVxdWVzdDsKLSB9Ci0gCi1kaWZmIC11cCBj aHJvbWl1bS0xMjEuMC42MTY3LjU3L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUv bW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFsaXR5X2xvZ19lbnRyeS5oLm1lIGNocm9taXVtLTEyMS4w LjYxNjcuNTcvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5 L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgKLS0tLSBjaHJvbWl1bS0xMjEuMC42MTY3LjU3L2Nv bXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2RlbF9xdWFs aXR5X2xvZ19lbnRyeS5oLm1lCTIwMjQtMDEtMjEgMTc6MzI6NDIuMzY3NDE3NjE5ICswMTAwCi0r KysgY2hyb21pdW0tMTIxLjAuNjE2Ny41Ny9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9j b3JlL21vZGVsX3F1YWxpdHkvbW9kZWxfcXVhbGl0eV9sb2dfZW50cnkuaAkyMDI0LTAxLTIxIDE3 OjMzOjI1LjczMjUzMTE5OCArMDEwMAotQEAgLTI5LDcgKzI5LDcgQEAgY2xhc3MgTW9kZWxRdWFs aXR5TG9nRW50cnkgewotICAgfQotIAotICAgdGVtcGxhdGUgPHR5cGVuYW1lIEZlYXR1cmVUeXBl PgotLSAgRmVhdHVyZVR5cGU6OlF1YWxpdHkqIHF1YWxpdHlfZGF0YSgpIHsKLSsgIHR5cGVuYW1l IEZlYXR1cmVUeXBlOjpRdWFsaXR5KiBxdWFsaXR5X2RhdGEoKSB7Ci0gICAgIHJldHVybiBGZWF0 dXJlVHlwZTo6R2V0TG9nZ2luZ0RhdGEoKmxvZ19haV9kYXRhX3JlcXVlc3RfKQotICAgICAgICAg LT5tdXRhYmxlX3F1YWxpdHlfZGF0YSgpOwotICAgfQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEy MS13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2ggYi9jaHJvbWl1 bS0xMjEtd29ya2Fyb3VuZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoCmRlbGV0 ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOTJiMDY5Li4wMDAwMDAwCi0tLSBhL2Nocm9taXVt LTEyMS13b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcucGF0Y2gKKysrIC9k ZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1kaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjI0 L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1z dHJ1Y3R1cmVkX2JpbmRpbmcgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9w cm9taXNlX2FkYXB0ZXIuY2MKLS0tLSBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2Uv Y2RtX3Byb21pc2VfYWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2Jp bmRpbmcJMjAyMy0wNi0wNyAyMTo0ODozNy4wMDAwMDAwMDAgKzAyMDAKLSsrKyBjaHJvbWl1bS0x MTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYwkyMDIzLTA2LTE3 IDE2OjUzOjIwLjIxNjYyODU1NyArMDIwMAotQEAgLTk0LDcgKzk0LDkgQEAgdm9pZCBDZG1Qcm9t aXNlQWRhcHRlcjo6UmVqZWN0UHJvbWlzZSh1aQotIHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6OkNs ZWFyKENsZWFyUmVhc29uIHJlYXNvbikgewotICAgLy8gUmVqZWN0IGFsbCBvdXRzdGFuZGluZyBw cm9taXNlcy4KLSAgIERDSEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgp KTsKLS0gIGZvciAoYXV0byYgW3Byb21pc2VfaWQsIHByb21pc2VdIDogcHJvbWlzZXNfKSB7Ci0r ICBmb3IgKGF1dG8mIFtwX2ksIHBfZV0gOiBwcm9taXNlc18pIHsKLSsgICAgYXV0byYgcHJvbWlz ZV9pZCA9IHBfaTsKLSsgICAgYXV0byYgcHJvbWlzZSA9IHBfZTsKLSAgICAgVFJBQ0VfRVZFTlRf TkVTVEFCTEVfQVNZTkNfRU5EMSgKLSAgICAgICAgICJtZWRpYSIsICJDZG1Qcm9taXNlIiwgVFJB Q0VfSURfV0lUSF9TQ09QRSgiQ2RtUHJvbWlzZSIsIHByb21pc2VfaWQpLAotICAgICAgICAgInN0 YXR1cyIsICJjbGVhcmVkIik7Ci1kaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjMyL2NvbnRl bnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250ZXh0X3dyYXBwZXIu Y2MubWUgY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3Jr ZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNjCi0tLS0gY2hyb21pdW0tMTE1LjAu NTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29u dGV4dF93cmFwcGVyLmNjLm1lCTIwMjMtMDYtMTkgMDg6MDQ6MDIuMjg3MDcyNzIyICswMjAwCi0r KysgY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIv c2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNjCTIwMjMtMDYtMTkgMDg6MTg6MjQuNTc2 ODE0OTUwICswMjAwCi1AQCAtMTM5Myw3ICsxMzkzLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29u dGV4dFdyYXBwZXI6Ok1heWJlUAotICAgICByZXR1cm47Ci0gICB9Ci0gCi0tICBhdXRvIFtkb2N1 bWVudF91cmwsIGtleSwgY2FsbGJhY2tdID0gc3RkOjptb3ZlKCpyZXF1ZXN0KTsKLSsgIGF1dG8g W2RfdSwga2V5LCBjYWxsYmFja10gPSBzdGQ6Om1vdmUoKnJlcXVlc3QpOwotKyAgYXV0byBkb2N1 bWVudF91cmwgPSBkX3U7Ci0gCi0gICBEQ0hFQ0soZG9jdW1lbnRfdXJsLmlzX3ZhbGlkKCkpOwot ICAgVFJBQ0VfRVZFTlQxKCJTZXJ2aWNlV29ya2VyIiwKLWRpZmYgLXVwIGNocm9taXVtLTEyMS4w LjYxNjcuMTYvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlk X2xheW91dF9hbGdvcml0aG0uY2MudGhhbiBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3Bh cnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGht LmNjCi0tLS0gY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYy50aGFuCTIwMjMtMTIt MTkgMTc6NTc6NTYuMjA1MTk3MjQ2ICswMTAwCi0rKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90 aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2Fs Z29yaXRobS5jYwkyMDIzLTEyLTE5IDE4OjEwOjEzLjc3ODYzNDUzMSArMDEwMAotQEAgLTM1Mjcs OCArMzUyNyw4IEBAIHZvaWQgR3JpZExheW91dEFsZ29yaXRobTo6UGxhY2VHcmlkSXRlbXMKLSAg IERDSEVDSyhvdXRfcm93X2JyZWFrX2JldHdlZW4pOwotIAotICAgY29uc3QgYXV0byYgY29udGFp bmVyX3NwYWNlID0gR2V0Q29uc3RyYWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3JpZF9p dGVtcywgbGF5b3V0X2RhdGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEo KTsKLS0KLSsgIGNvbnN0IGF1dG8mIFtncmlkX2l0ZW1zLCBsX2QsIHRyZWVfc2l6ZV0gPSBzaXpp bmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKLSsgIGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9k OwotICAgY29uc3QgYXV0byogY2FjaGVkX2xheW91dF9zdWJ0cmVlID0gY29udGFpbmVyX3NwYWNl LkdldEdyaWRMYXlvdXRTdWJ0cmVlKCk7Ci0gICBjb25zdCBhdXRvIGNvbnRhaW5lcl93cml0aW5n X2RpcmVjdGlvbiA9Ci0gICAgICAgY29udGFpbmVyX3NwYWNlLkdldFdyaXRpbmdEaXJlY3Rpb24o KTsKLUBAIC0zNjkxLDggKzM2OTEsOSBAQCB2b2lkIEdyaWRMYXlvdXRBbGdvcml0aG06OlBsYWNl R3JpZEl0ZW1zCi0gCi0gICAvLyBUT0RPKGlraWxwYXRyaWNrKTogVXBkYXRlIHxTZXRIYXNTZWVu QWxsQ2hpbGRyZW58IGFuZCBlYXJseSBleGl0IGlmIHRydWUuCi0gICBjb25zdCBhdXRvJiBjb25z dHJhaW50X3NwYWNlID0gR2V0Q29uc3RyYWludFNwYWNlKCk7Ci0tICBjb25zdCBhdXRvJiBbZ3Jp ZF9pdGVtcywgbGF5b3V0X2RhdGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERh dGEoKTsKLS0KLSsgIGNvbnN0IGF1dG8mIFtnX2ksIGxfZCwgdHJlZV9zaXplXSA9IHNpemluZ190 cmVlLlRyZWVSb290RGF0YSgpOwotKyAgY29uc3QgYXV0byYgZ3JpZF9pdGVtcyA9IGdfaTsKLSsg IGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9kOwotICAgY29uc3QgYXV0byogY2FjaGVkX2xh eW91dF9zdWJ0cmVlID0gY29uc3RyYWludF9zcGFjZS5HZXRHcmlkTGF5b3V0U3VidHJlZSgpOwot ICAgY29uc3QgYXV0byBjb250YWluZXJfd3JpdGluZ19kaXJlY3Rpb24gPQotICAgICAgIGNvbnN0 cmFpbnRfc3BhY2UuR2V0V3JpdGluZ0RpcmVjdGlvbigpOwoKZGlmZiAtLWdpdCBhL2Nocm9taXVt LTEyMi1lbDctZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uLnBh dGNoIGIvY2hyb21pdW0tMTIyLWVsNy1kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1hbm9u eW1vdXMtdW5pb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmUz Y2RmOAotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMi1lbDctZGVmYXVsdC1jb25zdHJ1 Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uLnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK2Rp ZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92YXJpYXRpb25zL3NlcnZp Y2UvdWlfc3RyaW5nX292ZXJyaWRlci5jYy5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1h bm9ueW1vdXMtdW5pb24gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3ZhcmlhdGlv bnMvc2VydmljZS91aV9zdHJpbmdfb3ZlcnJpZGVyLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jb21wb25lbnRzL3ZhcmlhdGlvbnMvc2VydmljZS91aV9zdHJpbmdfb3ZlcnJpZGVyLmNj LmRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2aW5nLWFub255bW91cy11bmlvbgkyMDI0LTAyLTIy IDIyOjQzOjA1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29t cG9uZW50cy92YXJpYXRpb25zL3NlcnZpY2UvdWlfc3RyaW5nX292ZXJyaWRlci5jYwkyMDI0LTAy LTI1IDEwOjUyOjE2LjA3MTYwMjUwMyArMDEwMAorQEAgLTEyLDcgKzEyLDcgQEAKKyAKKyBuYW1l c3BhY2UgdmFyaWF0aW9ucyB7CisgCistVUlTdHJpbmdPdmVycmlkZXI6OlVJU3RyaW5nT3ZlcnJp ZGVyKCkgPSBkZWZhdWx0OworK1VJU3RyaW5nT3ZlcnJpZGVyOjpVSVN0cmluZ092ZXJyaWRlcigp IHt9CisgCisgVUlTdHJpbmdPdmVycmlkZXI6OlVJU3RyaW5nT3ZlcnJpZGVyKGJhc2U6OnNwYW48 Y29uc3QgdWludDMyX3Q+IHJlc291cmNlX2hhc2hlcywKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgYmFzZTo6c3Bhbjxjb25zdCBpbnQ+IHJlc291cmNlX2luZGljZXMpCitk aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9n cm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuY2MuZGVmYXVsdC1jb25zdHJ1 Y3Rvci1pbnZvbHZpbmctYW5vbnltb3VzLXVuaW9uIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2ln bmFscy5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVy ZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5jYy5kZWZhdWx0LWNv bnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24JMjAyNC0wMi0yNSAxMDo1MjoxNi4w NzA2MDI0NzggKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nl ci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVyX3NpZ25hbHMuY2MJMjAy NC0wMi0yNSAxMToyMDozNi41ODMxNDgyMjYgKzAxMDAKK0BAIC00Niw3ICs0Niw3IEBAIHNpemVf dCBHZXRSZXN1bHRTaXplQnl0ZXMoY29uc3QgSGVhZGVyRGkKKyAKKyB9ICAvLyBuYW1lc3BhY2UK KyAKKy1IZWFkZXJEaXJlY3RGcm9tU2VsbGVyU2lnbmFsczo6UmVzdWx0OjpSZXN1bHQoKSA9IGRl ZmF1bHQ7CisrSGVhZGVyRGlyZWN0RnJvbVNlbGxlclNpZ25hbHM6OlJlc3VsdDo6UmVzdWx0KCkg e30KKyAKKyBIZWFkZXJEaXJlY3RGcm9tU2VsbGVyU2lnbmFsczo6UmVzdWx0OjpSZXN1bHQoCisg ICAgIHN0ZDo6b3B0aW9uYWw8c3RkOjpzdHJpbmc+IHNlbGxlcl9zaWduYWxzLAoKZGlmZiAtLWdp dCBhL2Nocm9taXVtLTEyMi1lbDctZXh0cmEtb3BlcmF0b3IucGF0Y2ggYi9jaHJvbWl1bS0xMjIt ZWw3LWV4dHJhLW9wZXJhdG9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAw MDAuLjBmNjU2ODEKLS0tIC9kZXYvbnVsbAorKysgYi9jaHJvbWl1bS0xMjItZWw3LWV4dHJhLW9w ZXJhdG9yLnBhdGNoCkBAIC0wLDAgKzEsMTEgQEAKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnhjcnQvZnhfbWVtb3J5X3dyYXBwZXJzLmgu bWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9meGNydC9m eF9tZW1vcnlfd3JhcHBlcnMuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFy dHkvcGRmaXVtL2NvcmUvZnhjcnQvZnhfbWVtb3J5X3dyYXBwZXJzLmgubWUJMjAyNC0wMi0yNCAx MzowMjo1OC45MzE1ODYwMDMgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJk X3BhcnR5L3BkZml1bS9jb3JlL2Z4Y3J0L2Z4X21lbW9yeV93cmFwcGVycy5oCTIwMjQtMDItMjQg MTM6MDM6MzMuMTUyMjUxNTQ2ICswMTAwCitAQCAtODIsNiArODIsNyBAQCBzdHJ1Y3QgRnhQYXJ0 aXRpb25BbGxvY0FsbG9jYXRvciB7CisgICB9CisgCisgICAvLyBUaGVyZSdzIG5vIHN0YXRlLCBz byB0aGV5IGFyZSBhbGwgdGhlIHNhbWUsCisrICBib29sIG9wZXJhdG9yPT0oY29uc3QgRnhQYXJ0 aXRpb25BbGxvY0FsbG9jYXRvciYpIGNvbnN0IHsgcmV0dXJuIHRydWU7IH0KKyAgIGJvb2wgb3Bl cmF0b3I9PShjb25zdCBGeFBhcnRpdGlvbkFsbG9jQWxsb2NhdG9yJiB0aGF0KSB7IHJldHVybiB0 cnVlOyB9CisgICBib29sIG9wZXJhdG9yIT0oY29uc3QgRnhQYXJ0aXRpb25BbGxvY0FsbG9jYXRv ciYgdGhhdCkgeyByZXR1cm4gZmFsc2U7IH0KKyB9OwoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEy Mi1lbDctaW5saW5lLWZ1bmN0aW9uLnBhdGNoIGIvY2hyb21pdW0tMTIyLWVsNy1pbmxpbmUtZnVu Y3Rpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmEzNjg5Ywot LS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMi1lbDctaW5saW5lLWZ1bmN0aW9uLnBhdGNo CkBAIC0wLDAgKzEsNjIgQEAKKworbGQubGxkOiBlcnJvcjogdW5kZWZpbmVkIHN5bWJvbDogdW5z aWduZWQgbG9uZyBjYzo6UGFpbnRPcFdyaXRlcjo6U2VyaWFsaXplZFNpemU8dW5zaWduZWQgbG9u Zz4oKQorCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NjL3BhaW50L3BhaW50X29w X3dyaXRlci5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2MvcGFpbnQvcGFpbnRfb3Bfd3Jp dGVyLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NjL3BhaW50L3BhaW50X29wX3dyaXRl ci5oLm1lCTIwMjQtMDItMjUgMTI6MDQ6MDcuMDA4MTc3NjAzICswMTAwCisrKysgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jYy9wYWludC9wYWludF9vcF93cml0ZXIuaAkyMDI0LTAyLTI1IDEyOjE0 OjQ1Ljk3MjExNzUyMiArMDEwMAorQEAgLTExMiw3ICsxMTIsMTcgQEAgY2xhc3MgQ0NfUEFJTlRf RVhQT1JUIFBhaW50T3BXcml0ZXIgeworIAorICBwcml2YXRlOgorICAgdGVtcGxhdGUgPHR5cGVu YW1lIFQ+CistICBzdGF0aWMgY29uc3RleHByIHNpemVfdCBTZXJpYWxpemVkU2l6ZVNpbXBsZSgp OworKyAgc3RhdGljIGNvbnN0ZXhwciBzaXplX3QgU2VyaWFsaXplZFNpemVTaW1wbGUoKSB7Cisr ICAgIHN0YXRpY19hc3NlcnQoIXN0ZDo6aXNfcG9pbnRlcl92PFQ+KTsKKysgICAgcmV0dXJuIGJh c2U6OmJpdHM6OkFsaWduVXAoc2l6ZW9mKFQpLCBrRGVmYXVsdEFsaWdubWVudCk7CisrICB9Cisr CisrICAvLyBzaXplX3QgaXMgYWx3YXlzIHNlcmlhbGl6ZWQgYXMgdHdvIHVpbnQzMl90cyB0byBt YWtlIHRoZSBzZXJpYWxpemVkIHJlc3VsdAorKyAgLy8gcG9ydGFibGUgYmV0d2VlbiAzMmJpdCBh bmQgNjRiaXQgcHJvY2Vzc2VzLgorKyAgdGVtcGxhdGUgPD4KKysgICAgY29uc3RleHByIHNpemVf dCBTZXJpYWxpemVkU2l6ZVNpbXBsZTxzaXplX3Q+KCkgeworKyAgICByZXR1cm4gYmFzZTo6Yml0 czo6QWxpZ25VcCgyICogc2l6ZW9mKHVpbnQzMl90KSwga0RlZmF1bHRBbGlnbm1lbnQpOworKyAg fQorIAorICBwdWJsaWM6CisgICAvLyBTZXJpYWxpemVkU2l6ZSgpIHJldHVybnMgdGhlIG1heGlt dW0gc2VyaWFsaXplZCBzaXplIG9mIHRoZSBnaXZlbiB0eXBlIG9yCitAQCAtMTIzLDcgKzEzMywx MCBAQCBjbGFzcyBDQ19QQUlOVF9FWFBPUlQgUGFpbnRPcFdyaXRlciB7CisgICAvLyBkZXNlcmlh bGl6YXRpb24sIGFuZCBtYWtlIGl0IHBvc3NpYmxlIHRvIGFsbG93IGR5bmFtaWMgc2l6aW5nIGZv ciBzb21lCisgICAvLyBkYXRhIHR5cGVzIChzZWUgdGhlIHNwZWNpYWxpemVkL292ZXJsb2FkZWQg ZnVuY3Rpb25zKS4KKyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBUPgorLSAgc3RhdGljIGNvbnN0ZXhw ciBzaXplX3QgU2VyaWFsaXplZFNpemUoKTsKKysgIHN0YXRpYyBjb25zdGV4cHIgc2l6ZV90IFNl cmlhbGl6ZWRTaXplKCkgeworKyAgICBzdGF0aWNfYXNzZXJ0KHN0ZDo6aXNfYXJpdGhtZXRpY192 PFQ+IHx8IHN0ZDo6aXNfZW51bV92PFQ+KTsKKysgICAgcmV0dXJuIFNlcmlhbGl6ZWRTaXplU2lt cGxlPFQ+KCk7CisrICB9CisgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKyAgIHN0YXRpYyBjb25z dGV4cHIgc2l6ZV90IFNlcmlhbGl6ZWRTaXplKGNvbnN0IFQmIGRhdGEpOworICAgc3RhdGljIHNp emVfdCBTZXJpYWxpemVkU2l6ZShjb25zdCBQYWludEltYWdlJiBpbWFnZSk7CitAQCAtNDM5LDI0 ICs0NTIsNiBAQCBjbGFzcyBDQ19QQUlOVF9FWFBPUlQgUGFpbnRPcFdyaXRlciB7CisgfTsKKyAK KyB0ZW1wbGF0ZSA8dHlwZW5hbWUgVD4KKy1jb25zdGV4cHIgc2l6ZV90IFBhaW50T3BXcml0ZXI6 OlNlcmlhbGl6ZWRTaXplU2ltcGxlKCkgeworLSAgc3RhdGljX2Fzc2VydCghc3RkOjppc19wb2lu dGVyX3Y8VD4pOworLSAgcmV0dXJuIGJhc2U6OmJpdHM6OkFsaWduVXAoc2l6ZW9mKFQpLCBrRGVm YXVsdEFsaWdubWVudCk7CistfQorLQorLS8vIHNpemVfdCBpcyBhbHdheXMgc2VyaWFsaXplZCBh cyB0d28gdWludDMyX3RzIHRvIG1ha2UgdGhlIHNlcmlhbGl6ZWQgcmVzdWx0CistLy8gcG9ydGFi bGUgYmV0d2VlbiAzMmJpdCBhbmQgNjRiaXQgcHJvY2Vzc2VzLgorLXRlbXBsYXRlIDw+CistY29u c3RleHByIHNpemVfdCBQYWludE9wV3JpdGVyOjpTZXJpYWxpemVkU2l6ZVNpbXBsZTxzaXplX3Q+ KCkgeworLSAgcmV0dXJuIGJhc2U6OmJpdHM6OkFsaWduVXAoMiAqIHNpemVvZih1aW50MzJfdCks IGtEZWZhdWx0QWxpZ25tZW50KTsKKy19CistCistdGVtcGxhdGUgPHR5cGVuYW1lIFQ+CistY29u c3RleHByIHNpemVfdCBQYWludE9wV3JpdGVyOjpTZXJpYWxpemVkU2l6ZSgpIHsKKy0gIHN0YXRp Y19hc3NlcnQoc3RkOjppc19hcml0aG1ldGljX3Y8VD4gfHwgc3RkOjppc19lbnVtX3Y8VD4pOwor LSAgcmV0dXJuIFNlcmlhbGl6ZWRTaXplU2ltcGxlPFQ+KCk7CistfQorLXRlbXBsYXRlIDx0eXBl bmFtZSBUPgorIGNvbnN0ZXhwciBzaXplX3QgUGFpbnRPcFdyaXRlcjo6U2VyaWFsaXplZFNpemUo Y29uc3QgVCYgZGF0YSkgeworICAgcmV0dXJuIFNlcmlhbGl6ZWRTaXplU2ltcGxlPFQ+KCk7Cisg fQoKZGlmZiAtLWdpdCBhL2Nocm9taXVtLTEyMi1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRj aCBiL2Nocm9taXVtLTEyMi1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRjaApuZXcgZmlsZSBt b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41OGVmZTkwCi0tLSAvZGV2L251bGwKKysrIGIvY2hy b21pdW0tMTIyLW5vX21hdGNoaW5nX2NvbnN0cnVjdG9yLnBhdGNoCkBAIC0wLDAgKzEsMTExNiBA QAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL21ldHJpY3MvcGVyc2lzdGVu dF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNl L21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9yLmNjCistLS0gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9iYXNlL21ldHJpY3MvcGVyc2lzdGVudF9oaXN0b2dyYW1fYWxsb2NhdG9y LmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo0My4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Jhc2UvbWV0cmljcy9wZXJzaXN0ZW50X2hpc3RvZ3JhbV9hbGxvY2F0 b3IuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODQ1MDM3MzUgKzAxMDAKK0BAIC0yMTgsMTMgKzIx OCwxMyBAQCBQZXJzaXN0ZW50U3BhcnNlSGlzdG9ncmFtRGF0YU1hbmFnZXI6OkxvCisgICAgIC8v IFRoZSBzYW1wbGUtcmVjb3JkIGNvdWxkIGJlIGZvciBhbnkgc3BhcnNlIGhpc3RvZ3JhbS4gQWRk IHRoZSByZWZlcmVuY2UKKyAgICAgLy8gdG8gdGhlIGFwcHJvcHJpYXRlIGNvbGxlY3Rpb24gZm9y IGxhdGVyIHVzZS4KKyAgICAgaWYgKGZvdW5kX2lkID09IG1hdGNoX2lkKSB7CistICAgICAgZm91 bmRfcmVjb3Jkcy5lbXBsYWNlX2JhY2socmVmLCB2YWx1ZSk7CisrICAgICAgZm91bmRfcmVjb3Jk cy5lbXBsYWNlX2JhY2soKSA9IHtyZWYsIHZhbHVlfTsKKyAgICAgICBmb3VuZCA9IHRydWU7Cisg ICAgIH0gZWxzZSB7CisgICAgICAgc3RkOjp2ZWN0b3I8UmVmZXJlbmNlQW5kU2FtcGxlPiogc2Ft cGxlcyA9CisgICAgICAgICAgIEdldFNhbXBsZU1hcFJlY29yZHNXaGlsZUxvY2tlZChmb3VuZF9p ZCk7CisgICAgICAgQ0hFQ0soc2FtcGxlcyk7CistICAgICAgc2FtcGxlcy0+ZW1wbGFjZV9iYWNr KHJlZiwgdmFsdWUpOworKyAgICAgIHNhbXBsZXMtPmVtcGxhY2VfYmFjaygpID0ge3JlZiwgdmFs dWV9OworICAgICB9CisgICB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jh c2Uvbml4L21pbWVfdXRpbF94ZGcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uv bml4L21pbWVfdXRpbF94ZGcuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uvbml4 L21pbWVfdXRpbF94ZGcuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjQzLjAwMDAwMDAwMCArMDEw MAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9uaXgvbWltZV91dGlsX3hkZy5jYwky MDI0LTAyLTI0IDEzOjEzOjQ0LjE1ODcxMjc1NiArMDEwMAorQEAgLTU2LDcgKzU2LDcgQEAgdm9p ZCBMb2FkQWxsTWltZUNhY2hlRmlsZXMoTWltZVR5cGVNYXAmCisgICBmb3IgKGNvbnN0IGF1dG8m IHBhdGggOiBHZXRYREdEYXRhU2VhcmNoTG9jYXRpb25zKGVudi5nZXQoKSkpIHsKKyAgICAgRmls ZVBhdGggbWltZV9jYWNoZSA9IHBhdGguQXBwZW5kKCJtaW1lL21pbWUuY2FjaGUiKTsKKyAgICAg aWYgKEdldEZpbGVJbmZvKG1pbWVfY2FjaGUsICZpbmZvKSAmJiBQYXJzZU1pbWVUeXBlcyhtaW1l X2NhY2hlLCBtYXApKSB7CistICAgICAgZmlsZXMuZW1wbGFjZV9iYWNrKG1pbWVfY2FjaGUsIGlu Zm8ubGFzdF9tb2RpZmllZCk7CisrICAgICAgZmlsZXMuZW1wbGFjZV9iYWNrKCkgPSB7bWltZV9j YWNoZSwgaW5mby5sYXN0X21vZGlmaWVkfTsKKyAgICAgfQorICAgfQorIH0KK2RpZmYgLXVwIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90cmFjZV9ldmVudC90cmFjZV9sb2cuY2MudGhhbiBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvdHJhY2VfZXZlbnQvdHJhY2VfbG9nLmNjCistLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYy50aGFu CTIwMjQtMDItMjIgMjI6NDI6NDMuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9iYXNlL3RyYWNlX2V2ZW50L3RyYWNlX2xvZy5jYwkyMDI0LTAyLTI0IDEzOjEzOjMy LjQ4NDUwMzczNSArMDEwMAorQEAgLTIxOTgsOCArMjE5OCw4IEBAIHZvaWQgVHJhY2VMb2c6OlNl dFRyYWNlQnVmZmVyRm9yVGVzdGluZygKKyAjaWYgQlVJTERGTEFHKFVTRV9QRVJGRVRUT19DTElF TlRfTElCUkFSWSkKKyB2b2lkIFRyYWNlTG9nOjpPblNldHVwKGNvbnN0IHBlcmZldHRvOjpEYXRh U291cmNlQmFzZTo6U2V0dXBBcmdzJiBhcmdzKSB7CisgICBBdXRvTG9jayBsb2NrKHRyYWNrX2V2 ZW50X2xvY2tfKTsKKy0gIHRyYWNrX2V2ZW50X3Nlc3Npb25zXy5lbXBsYWNlX2JhY2soYXJncy5p bnRlcm5hbF9pbnN0YW5jZV9pbmRleCwgKmFyZ3MuY29uZmlnLAorLSAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBhcmdzLmJhY2tlbmRfdHlwZSk7CisrICB0cmFja19ldmVudF9z ZXNzaW9uc18uZW1wbGFjZV9iYWNrKCkgPSB7YXJncy5pbnRlcm5hbF9pbnN0YW5jZV9pbmRleCwg KmFyZ3MuY29uZmlnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdz LmJhY2tlbmRfdHlwZX07CisgfQorIAorIHZvaWQgVHJhY2VMb2c6Ok9uU3RhcnQoY29uc3QgcGVy ZmV0dG86OkRhdGFTb3VyY2VCYXNlOjpTdGFydEFyZ3MmKSB7CitkaWZmIC11cCBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2NvbnRlbnRfc2V0dGluZ3Mvb25lX3RpbWVfcGVy bWlzc2lvbl9wcm92aWRlci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvY29udGVudF9zZXR0aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjCist LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9jb250ZW50X3NldHRpbmdz L29uZV90aW1lX3Blcm1pc3Npb25fcHJvdmlkZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjUw LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvY29udGVudF9zZXR0aW5ncy9vbmVfdGltZV9wZXJtaXNzaW9uX3Byb3ZpZGVyLmNjCTIwMjQt MDItMjQgMTM6MTM6MzIuNDg1NTAzNzUyICswMTAwCitAQCAtMjUyLDggKzI1Miw4IEBAIHZvaWQg T25lVGltZVBlcm1pc3Npb25Qcm92aWRlcjo6T25TdXNwZW4KKyAKKyAgICAgICB3aGlsZSAocnVs ZV9pdGVyYXRvciAmJiBydWxlX2l0ZXJhdG9yLT5IYXNOZXh0KCkpIHsKKyAgICAgICAgIGF1dG8g cnVsZSA9IHJ1bGVfaXRlcmF0b3ItPk5leHQoKTsKKy0gICAgICAgIHBhdHRlcm5zX3RvX2RlbGV0 ZS5lbXBsYWNlX2JhY2soc2V0dGluZ190eXBlLCBydWxlLT5wcmltYXJ5X3BhdHRlcm4sCistICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bGUtPnNlY29uZGFyeV9wYXR0 ZXJuKTsKKysgICAgICAgIHBhdHRlcm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2soKSA9IHtzZXR0 aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVybiwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59OworICAgICAgICAgcGVy bWlzc2lvbnM6OlBlcm1pc3Npb25VbWFVdGlsOjpSZWNvcmRPbmVUaW1lUGVybWlzc2lvbkV2ZW50 KAorICAgICAgICAgICAgIHNldHRpbmdfdHlwZSwKKyAgICAgICAgICAgICBwZXJtaXNzaW9uczo6 T25lVGltZVBlcm1pc3Npb25FdmVudDo6RVhQSVJFRF9PTl9TVVNQRU5EKTsKK0BAIC0zNTUsOCAr MzU1LDggQEAgdm9pZCBPbmVUaW1lUGVybWlzc2lvblByb3ZpZGVyOjpEZWxldGVFbgorICAgICBh dXRvIHJ1bGUgPSBydWxlX2l0ZXJhdG9yLT5OZXh0KCk7CisgICAgIGlmIChydWxlLT5wcmltYXJ5 X3BhdHRlcm4uTWF0Y2hlcyhvcmlnaW5fZ3VybCkgJiYKKyAgICAgICAgIHJ1bGUtPnNlY29uZGFy eV9wYXR0ZXJuLk1hdGNoZXMob3JpZ2luX2d1cmwpKSB7CistICAgICAgcGF0dGVybnNfdG9fZGVs ZXRlLmVtcGxhY2VfYmFjaygKKy0gICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHJ1bGUt PnByaW1hcnlfcGF0dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm4pOworKyAgICAgIHBhdHRl cm5zX3RvX2RlbGV0ZS5lbXBsYWNlX2JhY2soKSA9IHsKKysgICAgICAgICAgY29udGVudF9zZXR0 aW5nX3R5cGUsIHJ1bGUtPnByaW1hcnlfcGF0dGVybiwgcnVsZS0+c2Vjb25kYXJ5X3BhdHRlcm59 OworICAgICAgIHBlcm1pc3Npb25zOjpQZXJtaXNzaW9uVW1hVXRpbDo6UmVjb3JkT25lVGltZVBl cm1pc3Npb25FdmVudCgKKyAgICAgICAgICAgY29udGVudF9zZXR0aW5nX3R5cGUsIHRyaWdnZXJf ZXZlbnQpOworICAgICB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL2VudGVycHJpc2UvcHJvZmlsZV9tYW5hZ2VtZW50L3Byb2ZpbGVfbWFuYWdlbWVudF9u YXZpZ2F0aW9uX3Rocm90dGxlLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv YnJvd3Nlci9lbnRlcnByaXNlL3Byb2ZpbGVfbWFuYWdlbWVudC9wcm9maWxlX21hbmFnZW1lbnRf bmF2aWdhdGlvbl90aHJvdHRsZS5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvZW50ZXJwcmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50 X25hdmlnYXRpb25fdGhyb3R0bGUuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjUwLjAwMDAwMDAw MCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZW50ZXJw cmlzZS9wcm9maWxlX21hbmFnZW1lbnQvcHJvZmlsZV9tYW5hZ2VtZW50X25hdmlnYXRpb25fdGhy b3R0bGUuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODU1MDM3NTIgKzAxMDAKK0BAIC02Nyw4ICs2 Nyw4IEBAIGJhc2U6OmZsYXRfbWFwPHN0ZDo6c3RyaW5nLCBTQU1MUHJvZmlsZUEKKyAgIC8vIFRP RE8oY3JidWcuY29tLzE0NDUwNzIpOiBBZGQgYWN0dWFsIGRvbWFpbnMgd2l0aCBhdHRyaWJ1dGUg bmFtZXMuCisgICBwcm9maWxlX2F0dHJpYnV0ZXMtPmluc2VydChzdGQ6Om1ha2VfcGFpcigKKyAg ICAgICAic3VwcG9ydGVkLnRlc3QiLAorLSAgICAgIFNBTUxQcm9maWxlQXR0cmlidXRlcygicGxh Y2Vob2xkZXJOYW1lIiwgInBsYWNlaG9sZGVyRG9tYWluIiwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgInBsYWNlaG9sZGVyVG9rZW4iKSkpOworKyAgICAgIFNBTUxQcm9maWxlQXR0cmli dXRlc3sicGxhY2Vob2xkZXJOYW1lIiwgInBsYWNlaG9sZGVyRG9tYWluIiwKKysgICAgICAgICAg ICAgICAgICAgICAgICAgICAgInBsYWNlaG9sZGVyVG9rZW4ifSkpOworIAorICAgLy8gRXh0cmFj dCBkb21haW5zIGFuZCBhdHRyaWJ1dGVzIGZyb20gdGhlIGNvbW1hbmQgbGluZSBzd2l0Y2guCisg ICBjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY29tbWFuZF9saW5lID0KK2RpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvYXV0b2ZpbGwvYXV0b2ZpbGxfY29u dGV4dF9tZW51X21hbmFnZXIuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9i cm93c2VyL3VpL2F1dG9maWxsL2F1dG9maWxsX2NvbnRleHRfbWVudV9tYW5hZ2VyLmNjCistLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9hdXRvZmlsbC9hdXRvZmls bF9jb250ZXh0X21lbnVfbWFuYWdlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTQuMDAwMDAw MDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9h dXRvZmlsbC9hdXRvZmlsbF9jb250ZXh0X21lbnVfbWFuYWdlci5jYwkyMDI0LTAyLTI0IDEzOjEz OjQ0LjE1OTcxMjc3NCArMDEwMAorQEAgLTI4Myw4ICsyODMsOCBAQCB2b2lkIEF1dG9maWxsQ29u dGV4dE1lbnVNYW5hZ2VyOjpFeGVjdXRlCisgICAgIEF1dG9maWxsTWFuYWdlciYgbWFuYWdlcikg eworICAgYXV0byYgZHJpdmVyID0gc3RhdGljX2Nhc3Q8Q29udGVudEF1dG9maWxsRHJpdmVyJj4o bWFuYWdlci5kcml2ZXIoKSk7CisgICBkcml2ZXIuYnJvd3Nlcl9ldmVudHMoKS5SZW5kZXJlclNo b3VsZFRyaWdnZXJTdWdnZXN0aW9ucygKKy0gICAgICBGaWVsZEdsb2JhbElkKGRyaXZlci5HZXRG cmFtZVRva2VuKCksCistICAgICAgICAgICAgICAgICAgICBGaWVsZFJlbmRlcmVySWQocGFyYW1z Xy5maWVsZF9yZW5kZXJlcl9pZCkpLAorKyAgICAgIEZpZWxkR2xvYmFsSWR7ZHJpdmVyLkdldEZy YW1lVG9rZW4oKSwKKysgICAgICAgICAgICAgICAgICAgIEZpZWxkUmVuZGVyZXJJZChwYXJhbXNf LmZpZWxkX3JlbmRlcmVyX2lkKX0sCisgICAgICAgQXV0b2ZpbGxTdWdnZXN0aW9uVHJpZ2dlclNv dXJjZTo6a01hbnVhbEZhbGxiYWNrUGF5bWVudHMpOworIH0KKyAKK2RpZmYgLXVwIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvb21uaWJveC9jaHJvbWVfb21uaWJveF9j bGllbnQuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL29t bmlib3gvY2hyb21lX29tbmlib3hfY2xpZW50LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5pYm94X2NsaWVudC5jYy50aGFu CTIwMjQtMDItMjIgMjI6NDI6NTUuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9vbW5pYm94L2Nocm9tZV9vbW5pYm94X2NsaWVudC5j YwkyMDI0LTAyLTI0IDEzOjEzOjMyLjQ4NTUwMzc1MiArMDEwMAorQEAgLTQ3NCwxMCArNDc0LDEw IEBAIHZvaWQgQ2hyb21lT21uaWJveENsaWVudDo6T25BdXRvY29tcGxldGUKKyAgICAgICAgICAg ICAgIGFsdGVybmF0aXZlX25hdl9tYXRjaCk7CisgCisgICAvLyBTdG9yZSB0aGUgZGV0YWlscyBu ZWNlc3NhcnkgdG8gb3BlbiB0aGUgb21uaWJveCBtYXRjaCB2aWEgYnJvd3NlciBjb21tYW5kcy4K Ky0gIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3BhcmFtcyhMb2NhdGlvbkJhcjo6TmF2 aWdhdGlvblBhcmFtcygKKysgIGxvY2F0aW9uX2Jhcl8tPnNldF9uYXZpZ2F0aW9uX3BhcmFtcyhM b2NhdGlvbkJhcjo6TmF2aWdhdGlvblBhcmFtc3sKKyAgICAgICBkZXN0aW5hdGlvbl91cmwsIGRp c3Bvc2l0aW9uLCB0cmFuc2l0aW9uLCBtYXRjaF9zZWxlY3Rpb25fdGltZXN0YW1wLAorICAgICAg IGRlc3RpbmF0aW9uX3VybF9lbnRlcmVkX3dpdGhvdXRfc2NoZW1lLAorLSAgICAgIGRlc3RpbmF0 aW9uX3VybF9lbnRlcmVkX3dpdGhfaHR0cF9zY2hlbWUpKTsKKysgICAgICBkZXN0aW5hdGlvbl91 cmxfZW50ZXJlZF93aXRoX2h0dHBfc2NoZW1lfSk7CisgCisgICBpZiAoYnJvd3Nlcl8pIHsKKyAg ICAgYXV0byBuYXZpZ2F0aW9uID0gY2hyb21lOjpPcGVuQ3VycmVudFVSTChicm93c2VyXyk7Citk aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3NhZmV0eV9o dWIvbWVudV9ub3RpZmljYXRpb25fc2VydmljZS5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY2hyb21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlmaWNhdGlvbl9zZXJ2aWNl LmNjCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3Zp ZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Fza192aWV3LmNjLnRo YW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNz aW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9hc2tfdmlldy5jYworLS0tIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRk ZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3ZpZXcuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1 LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYXNrX3Zp ZXcuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODY1MDM3NzAgKzAxMDAKK0BAIC02MCwxMiArNjAs MTIgQEAgc3RkOjp2ZWN0b3I8RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0QXNrVgorIEVtYmVkZGVk UGVybWlzc2lvblByb21wdEFza1ZpZXc6OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3Qg eworICAgc3RkOjp2ZWN0b3I8QnV0dG9uQ29uZmlndXJhdGlvbj4gYnV0dG9uczsKKyAgIGlmIChi YXNlOjpGZWF0dXJlTGlzdDo6SXNFbmFibGVkKHBlcm1pc3Npb25zOjpmZWF0dXJlczo6a09uZVRp bWVQZXJtaXNzaW9uKSkgeworLSAgICBidXR0b25zLmVtcGxhY2VfYmFjaygKKysgICAgYnV0dG9u cy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICAgIGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYo SURTX1BFUk1JU1NJT05fQUxMT1dfVEhJU19USU1FKSwKKy0gICAgICAgIEJ1dHRvblR5cGU6OmtB bGxvd1RoaXNUaW1lLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCk7CisrICAgICAgICBCdXR0b25U eXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWx9OworICAgfQorLSAg YnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfUEVSTUlT U0lPTl9BTExPVyksCistICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25UeXBlOjprQWxsb3cs IHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dJZCk7CisrICBidXR0b25zLmVtcGxhY2Vf YmFjaygpID0ge2wxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYoSURTX1BFUk1JU1NJT05fQUxMT1cp LAorKyAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6QnV0dG9u U3R5bGU6OmtUb25hbCwga0FsbG93SWR9OworICAgcmV0dXJuIGJ1dHRvbnM7CisgfQorIAorZGlm ZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJt aXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9iYXNlX3ZpZXcuaC50aGFuIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1i ZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfYmFzZV92aWV3LmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1p c3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1NS4wMDAwMDAw MDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3Zp ZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X2Jhc2Vfdmlldy5oCTIw MjQtMDItMjQgMTM6MTM6MzIuNDg2NTAzNzcwICswMTAwCitAQCAtODcsNiArODcsNyBAQCBjbGFz cyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRCYXNlVmlldyA6CisgICBzdHJ1Y3QgUmVxdWVzdExp bmVDb25maWd1cmF0aW9uIHsKKyAgICAgY29uc3QgcmF3X3B0cjxjb25zdCBnZng6OlZlY3Rvcklj b24+IGljb247CisgICAgIHN0ZDo6dTE2c3RyaW5nIG1lc3NhZ2U7CisrICAgIFJlcXVlc3RMaW5l Q29uZmlndXJhdGlvbihhdXRvIGksIGF1dG8gbSkgOiBpY29uKGkpLCBtZXNzYWdlKG0pIHsgfQor ICAgfTsKKyAKKyAgIHN0cnVjdCBCdXR0b25Db25maWd1cmF0aW9uIHsKK2RpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lvbnMvZW1i ZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcG9saWN5X3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Bl cm1pc3Npb25fcHJvbXB0X3BvbGljeV92aWV3LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9u X3Byb21wdF9wb2xpY3lfdmlldy5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDI6NTUuMDAwMDAwMDAw ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3 cy9wZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wb2xpY3lfdmlldy5jYwky MDI0LTAyLTI0IDEzOjEzOjMyLjQ4NjUwMzc3MCArMDEwMAorQEAgLTY0LDggKzY0LDggQEAgRW1i ZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6R2V0UgorIHN0ZDo6dmVjdG9yPEVtYmVk ZGVkUGVybWlzc2lvblByb21wdFBvbGljeVZpZXc6OkJ1dHRvbkNvbmZpZ3VyYXRpb24+CisgRW1i ZWRkZWRQZXJtaXNzaW9uUHJvbXB0UG9saWN5Vmlldzo6R2V0QnV0dG9uc0NvbmZpZ3VyYXRpb24o KSBjb25zdCB7CisgICBzdGQ6OnZlY3RvcjxCdXR0b25Db25maWd1cmF0aW9uPiBidXR0b25zOwor LSAgYnV0dG9ucy5lbXBsYWNlX2JhY2sobDEwbl91dGlsOjpHZXRTdHJpbmdVVEYxNihJRFNfRU1C RURERURfUFJPTVBUX09LX0xBQkVMKSwKKy0gICAgICAgICAgICAgICAgICAgICAgIEJ1dHRvblR5 cGU6OmtQb2xpY3lPSywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOworKyAgYnV0dG9ucy5lbXBs YWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9N UFRfT0tfTEFCRUwpLAorKyAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a1BvbGlj eU9LLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbH07CisgICByZXR1cm4gYnV0dG9uczsKKyB9Cisg CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdz L3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZGVuaWVk X3ZpZXcuY2MudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3Zp ZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZGVu aWVkX3ZpZXcuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3Vp L3ZpZXdzL3Blcm1pc3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlf ZGVuaWVkX3ZpZXcuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1LjAwMDAwMDAwMCArMDEwMAor KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlz c2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9kZW5pZWRfdmlldy5j YwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MzcxMjY2NyArMDEwMAorQEAgLTc5LDE3ICs3OSwxNyBA QCBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5RGVuaWVkCisgc3RkOjp2ZWN0b3I8 RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseURlbmllZFZpZXc6OkJ1dHRvbkNvbmZp Z3VyYXRpb24+CisgRW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseURlbmllZFZpZXc6 OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3QgeworICAgc3RkOjp2ZWN0b3I8QnV0dG9u Q29uZmlndXJhdGlvbj4gYnV0dG9uczsKKy0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0 dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2 KElEU19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfTk9UX0FMTE9XSU5HKSwKKy0gICAgICBCdXR0 b25UeXBlOjprQ29udGludWVOb3RBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwpOwor KyAgICAgIEJ1dHRvblR5cGU6OmtDb250aW51ZU5vdEFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6 OmtUb25hbH07CisgCisgICBpZiAoYmFzZTo6RmVhdHVyZUxpc3Q6OklzRW5hYmxlZChwZXJtaXNz aW9uczo6ZmVhdHVyZXM6OmtPbmVUaW1lUGVybWlzc2lvbikpIHsKKy0gICAgYnV0dG9ucy5lbXBs YWNlX2JhY2soCisrICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKCkgPSB7CisgICAgICAgICBsMTBu X3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FMTE9XX1RISVNfVElNRSksCist ICAgICAgICBCdXR0b25UeXBlOjprQWxsb3dUaGlzVGltZSwgdWk6OkJ1dHRvblN0eWxlOjprVG9u YWwsIGtBbGxvd1RoaXNUaW1lSWQpOworKyAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93VGhpc1Rp bWUsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsLCBrQWxsb3dUaGlzVGltZUlkfTsKKyAgIH0gZWxz ZSB7CistICAgIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKGwxMG5fdXRpbDo6R2V0U3RyaW5nVVRGMTYo SURTX1BFUk1JU1NJT05fQUxMT1cpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICBCdXR0b25U eXBlOjprQWxsb3csIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsKTsKKysgICAgYnV0dG9ucy5lbXBs YWNlX2JhY2soKSA9IHtsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19QRVJNSVNTSU9OX0FM TE9XKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgQnV0dG9uVHlwZTo6a0FsbG93LCB1aTo6 QnV0dG9uU3R5bGU6OmtUb25hbH07CisgICB9CisgICByZXR1cm4gYnV0dG9uczsKKyB9CitkaWZm IC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Blcm1p c3Npb25zL2VtYmVkZGVkX3Blcm1pc3Npb25fcHJvbXB0X3ByZXZpb3VzbHlfZ3JhbnRlZF92aWV3 LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy9w ZXJtaXNzaW9ucy9lbWJlZGRlZF9wZXJtaXNzaW9uX3Byb21wdF9wcmV2aW91c2x5X2dyYW50ZWRf dmlldy5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmll d3MvcGVybWlzc2lvbnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9ncmFu dGVkX3ZpZXcuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1LjAwMDAwMDAwMCArMDEwMAorKysr IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3MvcGVybWlzc2lv bnMvZW1iZWRkZWRfcGVybWlzc2lvbl9wcm9tcHRfcHJldmlvdXNseV9ncmFudGVkX3ZpZXcuY2MJ MjAyNC0wMi0yNCAxMzoxMzo0NC4xNTM3MTI2NjcgKzAxMDAKK0BAIC03NCwxMiArNzQsMTIgQEAg RW1iZWRkZWRQZXJtaXNzaW9uUHJvbXB0UHJldmlvdXNseUdyYW50ZQorIHN0ZDo6dmVjdG9yPEVt YmVkZGVkUGVybWlzc2lvblByb21wdFByZXZpb3VzbHlHcmFudGVkVmlldzo6QnV0dG9uQ29uZmln dXJhdGlvbj4KKyBFbWJlZGRlZFBlcm1pc3Npb25Qcm9tcHRQcmV2aW91c2x5R3JhbnRlZFZpZXc6 OkdldEJ1dHRvbnNDb25maWd1cmF0aW9uKCkgY29uc3QgeworICAgc3RkOjp2ZWN0b3I8QnV0dG9u Q29uZmlndXJhdGlvbj4gYnV0dG9uczsKKy0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0 dG9ucy5lbXBsYWNlX2JhY2soKSA9IHsKKyAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2 KElEU19FTUJFRERFRF9QUk9NUFRfQ09OVElOVUVfQUxMT1dJTkcpLAorLSAgICAgIEJ1dHRvblR5 cGU6OmtDb250aW51ZUFsbG93aW5nLCB1aTo6QnV0dG9uU3R5bGU6OmtUb25hbCk7CisrICAgICAg QnV0dG9uVHlwZTo6a0NvbnRpbnVlQWxsb3dpbmcsIHVpOjpCdXR0b25TdHlsZTo6a1RvbmFsfTsK KyAKKy0gIGJ1dHRvbnMuZW1wbGFjZV9iYWNrKAorKyAgYnV0dG9ucy5lbXBsYWNlX2JhY2soKSA9 IHsKKyAgICAgICBsMTBuX3V0aWw6OkdldFN0cmluZ1VURjE2KElEU19FTUJFRERFRF9QUk9NUFRf U1RPUF9BTExPV0lORyksCistICAgICAgQnV0dG9uVHlwZTo6a1N0b3BBbGxvd2luZywgdWk6OkJ1 dHRvblN0eWxlOjprVG9uYWwsIGtTdG9wQWxsb3dpbmdJZCk7CisrICAgICAgQnV0dG9uVHlwZTo6 a1N0b3BBbGxvd2luZywgdWk6OkJ1dHRvblN0eWxlOjprVG9uYWwsIGtTdG9wQWxsb3dpbmdJZH07 CisgICByZXR1cm4gYnV0dG9uczsKKyB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Nocm9tZS9icm93c2VyL3VpL3dlYl9hcHBsaWNhdGlvbnMvc3ViX2FwcHNfc2VydmljZV9pbXBs LmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS93ZWJfYXBw bGljYXRpb25zL3N1Yl9hcHBzX3NlcnZpY2VfaW1wbC5jYworLS0tIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9zdWJfYXBwc19zZXJ2aWNl X2ltcGwuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQyOjU1LjAwMDAwMDAwMCArMDEwMAorKysrIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvd2ViX2FwcGxpY2F0aW9ucy9z dWJfYXBwc19zZXJ2aWNlX2ltcGwuY2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTk3MTI3NzQgKzAx MDAKK0BAIC0xMDIsNyArMTAyLDcgQEAgQWRkT3B0aW9uc0Zyb21Nb2pvKAorICAgICAgICAgICAg ICAgICAgICAgIENvbnZlcnRQYXRoVG9Vcmwoc3ViX2FwcC0+bWFuaWZlc3RfaWRfcGF0aCwgb3Jp Z2luKSk7CisgICAgIEFTU0lHTl9PUl9SRVRVUk4oR1VSTCBpbnN0YWxsX3VybCwKKyAgICAgICAg ICAgICAgICAgICAgICBDb252ZXJ0UGF0aFRvVXJsKHN1Yl9hcHAtPmluc3RhbGxfdXJsX3BhdGgs IG9yaWdpbikpOworLSAgICBzdWJfYXBwcy5lbXBsYWNlX2JhY2soc3RkOjptb3ZlKG1hbmlmZXN0 X2lkKSwgc3RkOjptb3ZlKGluc3RhbGxfdXJsKSk7CisrICAgIHN1Yl9hcHBzLmVtcGxhY2VfYmFj aygpID0ge3N0ZDo6bW92ZShtYW5pZmVzdF9pZCksIHN0ZDo6bW92ZShpbnN0YWxsX3VybCl9Owor ICAgfQorICAgcmV0dXJuIHN1Yl9hcHBzOworIH0KK0BAIC0zOTEsNyArMzkxLDcgQEAgdm9pZCBT dWJBcHBzU2VydmljZUltcGw6OlNjaGVkdWxlU3ViQXBwSQorICAgICAgICAgYmFzZTo6QmluZE9u Y2UoCisgICAgICAgICAgICAgW10od2ViYXBwczo6TWFuaWZlc3RJZCBtYW5pZmVzdF9pZCwgY29u c3Qgd2ViYXBwczo6QXBwSWQmIGFwcF9pZCwKKyAgICAgICAgICAgICAgICB3ZWJhcHBzOjpJbnN0 YWxsUmVzdWx0Q29kZSByZXN1bHRfY29kZSkgeworLSAgICAgICAgICAgICAgcmV0dXJuIFN1YkFw cEluc3RhbGxSZXN1bHQobWFuaWZlc3RfaWQsIGFwcF9pZCwgcmVzdWx0X2NvZGUpOworKyAgICAg ICAgICAgICAgcmV0dXJuIFN1YkFwcEluc3RhbGxSZXN1bHR7bWFuaWZlc3RfaWQsIGFwcF9pZCwg cmVzdWx0X2NvZGV9OworICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgbWFuaWZlc3RfaWQp CisgICAgICAgICAgICAgLlRoZW4oaW5zdGFsbF9yZXN1bHRzX2NvbGxlY3RvcikpOworZGlmZiAt dXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvdGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJp bGl0aWVzLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvdGVzdC9jaHJvbWVk cml2ZXIvY2FwYWJpbGl0aWVzLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUv dGVzdC9jaHJvbWVkcml2ZXIvY2FwYWJpbGl0aWVzLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0Mjo1 Ni4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS90ZXN0 L2Nocm9tZWRyaXZlci9jYXBhYmlsaXRpZXMuY2MJMjAyNC0wMi0yNCAxMzoxMzozMi40ODY1MDM3 NzAgKzAxMDAKK0BAIC0zNDYsNyArMzQ2LDcgQEAgU3RhdHVzIFBhcnNlTW9iaWxlRW11bGF0aW9u KGNvbnN0IGJhc2U6OgorICAgICAgICAgICAgICAgICAgICAgICAgICIndmVyc2lvbicgZmllbGQg b2YgdHlwZSBzdHJpbmciKTsKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGJyYW5kcy5lbXBsYWNl X2JhY2soKmJyYW5kLCAqdmVyc2lvbik7CisrICAgICAgICBicmFuZHMuZW1wbGFjZV9iYWNrKCkg PSB7KmJyYW5kLCAqdmVyc2lvbn07CisgICAgICAgfQorIAorICAgICAgIGNsaWVudF9oaW50cy5i cmFuZHMgPSBzdGQ6Om1vdmUoYnJhbmRzKTsKK0BAIC0zODQsNyArMzg0LDcgQEAgU3RhdHVzIFBh cnNlTW9iaWxlRW11bGF0aW9uKGNvbnN0IGJhc2U6OgorICAgICAgICAgICAgICAgICAgICAgICAg ICJhICd2ZXJzaW9uJyBmaWVsZCBvZiB0eXBlIHN0cmluZyIpOworICAgICAgICAgfQorIAorLSAg ICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCpicmFuZCwgKnZlcnNpb24pOwor KyAgICAgICAgZnVsbF92ZXJzaW9uX2xpc3QuZW1wbGFjZV9iYWNrKCkgPSB7KmJyYW5kLCAqdmVy c2lvbn07CisgICAgICAgfQorIAorICAgICAgIGNsaWVudF9oaW50cy5mdWxsX3ZlcnNpb25fbGlz dCA9IHN0ZDo6bW92ZShmdWxsX3ZlcnNpb25fbGlzdCk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbXBvbmVudHMvcGFzc3dvcmRfbWFuYWdlci9jb3JlL2Jyb3dzZXIvcGFzc3dv cmRfbWFuYWdlci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wYXNz d29yZF9tYW5hZ2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2VyLmNjCistLS0gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Bhc3N3b3JkX21hbmFnZXIvY29yZS9icm93c2Vy L3Bhc3N3b3JkX21hbmFnZXIuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjAyLjAwMDAwMDAwMCAr MDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wYXNzd29yZF9tYW5h Z2VyL2NvcmUvYnJvd3Nlci9wYXNzd29yZF9tYW5hZ2VyLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQu MTU0NzEyNjg1ICswMTAwCitAQCAtNjczLDcgKzY3Myw3IEBAIHZvaWQgUGFzc3dvcmRNYW5hZ2Vy OjpPblVzZXJNb2RpZmllZE5vblAKKyAgICAgaXQtPnNlY29uZC5sYXN0X2NoYW5nZSA9IGJhc2U6 OlRpbWU6Ok5vdygpOworICAgfSBlbHNlIHsKKyAgICAgcG9zc2libGVfdXNlcm5hbWVzXy5QdXQo CistICAgICAgICBQb3NzaWJsZVVzZXJuYW1lRmllbGRJZGVudGlmaWVyKGRyaXZlcl9pZCwgcmVu ZGVyZXJfaWQpLAorKyAgICAgICAgUG9zc2libGVVc2VybmFtZUZpZWxkSWRlbnRpZmllcntkcml2 ZXJfaWQsIHJlbmRlcmVyX2lkfSwKKyAgICAgICAgIFBvc3NpYmxlVXNlcm5hbWVEYXRhKEdldFNp Z25vblJlYWxtKGRyaXZlci0+R2V0TGFzdENvbW1pdHRlZFVSTCgpKSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIHJlbmRlcmVyX2lkLCB2YWx1ZSwgYmFzZTo6VGltZTo6Tm93KCksIGRy aXZlcl9pZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF1dG9jb21wbGV0ZV9hdHRy aWJ1dGVfaGFzX3VzZXJuYW1lLAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21w b25lbnRzL3BlcmZvcm1hbmNlX21hbmFnZXIvd29ya2VyX3dhdGNoZXIuY2MudGhhbiBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGVyZm9ybWFuY2VfbWFuYWdlci93b3JrZXJfd2F0 Y2hlci5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9wZXJmb3JtYW5j ZV9tYW5hZ2VyL3dvcmtlcl93YXRjaGVyLmNjLnRoYW4JMjAyNC0wMi0yMiAyMjo0MzowMi4wMDAw MDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvcGVyZm9y bWFuY2VfbWFuYWdlci93b3JrZXJfd2F0Y2hlci5jYwkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1ODcx Mjc1NiArMDEwMAorQEAgLTIzOSw3ICsyMzksNyBAQCB2b2lkIFdvcmtlcldhdGNoZXI6Ok9uV29y a2VyQ3JlYXRlZCgKKyAgIERDSEVDSyhpbnNlcnRpb25fcmVzdWx0LnNlY29uZCk7CisgCisgICBh YnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAgICAgIGJhc2U6Ok92ZXJs b2FkZWR7CisgICAgICAgICAgIFsmLAorICAgICAgICAgICAgdGhpc10oY29uc3QgY29udGVudDo6 R2xvYmFsUmVuZGVyRnJhbWVIb3N0SWQmIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAg ICAgICAgQWRkRnJhbWVDbGllbnRDb25uZWN0aW9uKGluc2VydGlvbl9yZXN1bHQuZmlyc3QtPnNl Y29uZC5nZXQoKSwKK0BAIC0yNDgsNyArMjQ4LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbldv cmtlckNyZWF0ZWQoCisgICAgICAgICAgIFsmLCB0aGlzXShibGluazo6RGVkaWNhdGVkV29ya2Vy VG9rZW4gZGVkaWNhdGVkX3dvcmtlcl90b2tlbikgeworICAgICAgICAgICAgIENvbm5lY3REZWRp Y2F0ZWRXb3JrZXJDbGllbnQoaW5zZXJ0aW9uX3Jlc3VsdC5maXJzdC0+c2Vjb25kLmdldCgpLAor ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVkX3dvcmtl cl90b2tlbik7CistICAgICAgICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAgICBjcmVhdG9y KTsKKyB9CisgCitAQCAtMjY1LDcgKzI2NSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6T25CZWZv cmVXb3JrZXJEZXN0cm8KKyAgIC8vIEZpcnN0IGRpc2Nvbm5lY3QgdGhlIGNyZWF0b3IncyBub2Rl IGZyb20gdGhpcyB3b3JrZXIgbm9kZS4KKyAKKyAgIGFic2w6OnZpc2l0KAorLSAgICAgIGJhc2U6 Ok92ZXJsb2FkZWQoCisrICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsKKyAgICAgICAgICAgWyYsCisg ICAgICAgICAgICB0aGlzXShjb25zdCBjb250ZW50OjpHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYg cmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAgICAgICAgICBSZW1vdmVGcmFtZUNsaWVudENv bm5lY3Rpb24od29ya2VyX25vZGUuZ2V0KCksCitAQCAtMjc0LDcgKzI3NCw3IEBAIHZvaWQgV29y a2VyV2F0Y2hlcjo6T25CZWZvcmVXb3JrZXJEZXN0cm8KKyAgICAgICAgICAgWyYsIHRoaXNdKGJs aW5rOjpEZWRpY2F0ZWRXb3JrZXJUb2tlbiBkZWRpY2F0ZWRfd29ya2VyX3Rva2VuKSB7CisgICAg ICAgICAgICAgRGlzY29ubmVjdERlZGljYXRlZFdvcmtlckNsaWVudCh3b3JrZXJfbm9kZS5nZXQo KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZGljYXRl ZF93b3JrZXJfdG9rZW4pOworLSAgICAgICAgICB9KSwKKysgICAgICAgICAgfX0sCisgICAgICAg Y3JlYXRvcik7CisgCisgICAvLyBEaXNjb25uZWN0IGFsbCBjaGlsZCB3b3JrZXJzIGJlZm9yZSBk ZXN0cm95aW5nIHRoZSBub2RlLgorQEAgLTQ0Niw3ICs0NDYsNyBAQCB2b2lkIFdvcmtlcldhdGNo ZXI6Ok9uQ29udHJvbGxlZUFkZGVkKAorICAgICBjb25zdCBzdGQ6OnN0cmluZyYgY2xpZW50X3V1 aWQsCisgICAgIGNvbnN0IGNvbnRlbnQ6OlNlcnZpY2VXb3JrZXJDbGllbnRJbmZvJiBjbGllbnRf aW5mbykgeworICAgYWJzbDo6dmlzaXQoCistICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKKysgICAg ICBiYXNlOjpPdmVybG9hZGVkeworICAgICAgICAgICBbJiwgdGhpc10oY29udGVudDo6R2xvYmFs UmVuZGVyRnJhbWVIb3N0SWQgcmVuZGVyX2ZyYW1lX2hvc3RfaWQpIHsKKyAgICAgICAgICAgICAv LyBGb3Igd2luZG93IGNsaWVudHMsIGl0IGlzIG5lY2Vzc2FyeSB0byB3YWl0IHVudGlsIHRoZSBu YXZpZ2F0aW9uCisgICAgICAgICAgICAgLy8gaGFzIGNvbW1pdHRlZCB0byBhIFJlbmRlckZyYW1l SG9zdC4KK0BAIC00ODQsNyArNDg0LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkNvbnRyb2xs ZWVBZGRlZCgKKyAgICAgICAgICAgICAgIENvbm5lY3RTaGFyZWRXb3JrZXJDbGllbnQoc2Vydmlj ZV93b3JrZXJfbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg c2hhcmVkX3dvcmtlcl90b2tlbik7CisgICAgICAgICAgICAgfQorLSAgICAgICAgICB9KSwKKysg ICAgICAgICAgfX0sCisgICAgICAgY2xpZW50X2luZm8pOworIH0KKyAKK0BAIC01MjQsNyArNTI0 LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpPbkNvbnRyb2xsZWVSZW1vdmVkKAorICAgICByZXR1 cm47CisgCisgICBhYnNsOjp2aXNpdCgKKy0gICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAgICAg IGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgIFsmLCB0aGlzXShjb250ZW50OjpHbG9iYWxS ZW5kZXJGcmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIFJl bW92ZUZyYW1lQ2xpZW50Q29ubmVjdGlvbih3b3JrZXJfbm9kZSwgcmVuZGVyX2ZyYW1lX2hvc3Rf aWQpOworICAgICAgICAgICB9LAorQEAgLTUzNCw3ICs1MzQsNyBAQCB2b2lkIFdvcmtlcldhdGNo ZXI6Ok9uQ29udHJvbGxlZVJlbW92ZWQoCisgICAgICAgICAgIH0sCisgICAgICAgICAgIFsmLCB0 aGlzXShibGluazo6U2hhcmVkV29ya2VyVG9rZW4gc2hhcmVkX3dvcmtlcl90b2tlbikgeworICAg ICAgICAgICAgIERpc2Nvbm5lY3RTaGFyZWRXb3JrZXJDbGllbnQod29ya2VyX25vZGUsIHNoYXJl ZF93b3JrZXJfdG9rZW4pOworLSAgICAgICAgICB9KSwKKysgICAgICAgICAgfX0sCisgICAgICAg Y2xpZW50KTsKKyB9CisgCitAQCAtODEwLDcgKzgxMCw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6 Q29ubmVjdEFsbFNlcnZpY2VXb3IKKyAKKyAgIGZvciAoY29uc3QgYXV0byYga3YgOiBpdC0+c2Vj b25kKSB7CisgICAgIGFic2w6OnZpc2l0KAorLSAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZCgKKysg ICAgICAgIGJhc2U6Ok92ZXJsb2FkZWR7CisgICAgICAgICAgICAgWyYsIHRoaXNdKGNvbnRlbnQ6 Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkIHJlbmRlcl9mcmFtZV9ob3N0X2lkKSB7CisgICAgICAg ICAgICAgICBBZGRGcmFtZUNsaWVudENvbm5lY3Rpb24oc2VydmljZV93b3JrZXJfbm9kZSwKKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZW5kZXJfZnJhbWVfaG9zdF9p ZCk7CitAQCAtODIyLDcgKzgyMiw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6Q29ubmVjdEFsbFNl cnZpY2VXb3IKKyAgICAgICAgICAgICBbJiwgdGhpc10oYmxpbms6OlNoYXJlZFdvcmtlclRva2Vu IHNoYXJlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAgICAgICAgICAgIENvbm5lY3RTaGFyZWRXb3Jr ZXJDbGllbnQoc2VydmljZV93b3JrZXJfbm9kZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgc2hhcmVkX3dvcmtlcl90b2tlbik7CistICAgICAgICAgICAgfSksCisr ICAgICAgICAgICAgfX0sCisgICAgICAgICBrdi5zZWNvbmQpOworICAgfQorIH0KK0BAIC04Mzcs NyArODM3LDcgQEAgdm9pZCBXb3JrZXJXYXRjaGVyOjpEaXNjb25uZWN0QWxsU2VydmljZQorIAor ICAgZm9yIChjb25zdCBhdXRvJiBrdiA6IGl0LT5zZWNvbmQpIHsKKyAgICAgYWJzbDo6dmlzaXQo CistICAgICAgICBiYXNlOjpPdmVybG9hZGVkKAorKyAgICAgICAgYmFzZTo6T3ZlcmxvYWRlZHsK KyAgICAgICAgICAgICBbJiwgdGhpc10oCisgICAgICAgICAgICAgICAgIGNvbnN0IGNvbnRlbnQ6 Okdsb2JhbFJlbmRlckZyYW1lSG9zdElkJiByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAg ICAgICAgICAgUmVtb3ZlRnJhbWVDbGllbnRDb25uZWN0aW9uKHNlcnZpY2Vfd29ya2VyX25vZGUs CitAQCAtODUxLDcgKzg1MSw3IEBAIHZvaWQgV29ya2VyV2F0Y2hlcjo6RGlzY29ubmVjdEFsbFNl cnZpY2UKKyAgICAgICAgICAgICBbJiwgdGhpc10oY29uc3QgYmxpbms6OlNoYXJlZFdvcmtlclRv a2VuJiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7CisgICAgICAgICAgICAgICBEaXNjb25uZWN0U2hh cmVkV29ya2VyQ2xpZW50KHNlcnZpY2Vfd29ya2VyX25vZGUsCisgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIHNoYXJlZF93b3JrZXJfdG9rZW4pOworLSAgICAgICAg ICAgIH0pLAorKyAgICAgICAgICAgIH19LAorICAgICAgICAga3Yuc2Vjb25kKTsKKyAgIH0KKyB9 CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvdml6L3NlcnZpY2Uv ZGlzcGxheV9lbWJlZGRlci9za2lhX291dHB1dF9zdXJmYWNlX2ltcGxfb25fZ3B1LmNjLnRoYW4g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL3Zpei9zZXJ2aWNlL2Rpc3BsYXlfZW1i ZWRkZXIvc2tpYV9vdXRwdXRfc3VyZmFjZV9pbXBsX29uX2dwdS5jYworLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY29tcG9uZW50cy92aXovc2VydmljZS9kaXNwbGF5X2VtYmVkZGVyL3NraWFf b3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjA1LjAw MDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy92aXov c2VydmljZS9kaXNwbGF5X2VtYmVkZGVyL3NraWFfb3V0cHV0X3N1cmZhY2VfaW1wbF9vbl9ncHUu Y2MJMjAyNC0wMi0yNCAxMzoxMzo0NC4xNTE3MTI2MzIgKzAxMDAKK0BAIC0xNTczLDcgKzE1NzMs NyBAQCB2b2lkIFNraWFPdXRwdXRTdXJmYWNlSW1wbE9uR3B1OjpDb3B5T3V0CisgCisgICAgICAg Ly8gSXNzdWUgcmVhZGJhY2tzIGZyb20gdGhlIHN1cmZhY2VzOgorICAgICAgIGZvciAoc2l6ZV90 IGkgPSAwOyBpIDwgQ29weU91dHB1dFJlc3VsdDo6a05WMTJNYXhQbGFuZXM7ICsraSkgeworLSAg ICAgICAgU2tJU2l6ZSBzaXplKHBsYW5lX3N1cmZhY2VzW2ldLT53aWR0aCgpLCBwbGFuZV9zdXJm YWNlc1tpXS0+aGVpZ2h0KCkpOworKyAgICAgICAgU2tJU2l6ZSBzaXple3BsYW5lX3N1cmZhY2Vz W2ldLT53aWR0aCgpLCBwbGFuZV9zdXJmYWNlc1tpXS0+aGVpZ2h0KCl9OworICAgICAgICAgU2tJ bWFnZUluZm8gZHN0X2luZm8gPSBTa0ltYWdlSW5mbzo6TWFrZSgKKyAgICAgICAgICAgICBzaXpl LCAoaSA9PSAwKSA/IGtBbHBoYV84X1NrQ29sb3JUeXBlIDoga1I4RzhfdW5vcm1fU2tDb2xvclR5 cGUsCisgICAgICAgICAgICAga1VucHJlbXVsX1NrQWxwaGFUeXBlKTsKK2RpZmYgLXVwIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3NhdmVfcGFja2FnZS5j Yy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2Rvd25sb2FkL3Nh dmVfcGFja2FnZS5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L2Rvd25sb2FkL3NhdmVfcGFja2FnZS5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAwMDAw MDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZG93 bmxvYWQvc2F2ZV9wYWNrYWdlLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUxNzEyNjMyICswMTAw CitAQCAtODAxLDggKzgwMSw4IEBAIHZvaWQgU2F2ZVBhY2thZ2U6OkZpbmlzaCgpIHsKKyAgIGlm IChkb3dubG9hZF8pIHsKKyAgICAgc3RkOjp2ZWN0b3I8ZG93bmxvYWQ6OkRvd25sb2FkU2F2ZUl0 ZW1EYXRhOjpJdGVtSW5mbz4gZmlsZXM7CisgICAgIGZvciAoYXV0byYgaXRlbSA6IHNhdmVkX3N1 Y2Nlc3NfaXRlbXNfKSB7CistICAgICAgZmlsZXMuZW1wbGFjZV9iYWNrKGl0ZW0uc2Vjb25kLT5m dWxsX3BhdGgoKSwgaXRlbS5zZWNvbmQtPnVybCgpLAorLSAgICAgICAgICAgICAgICAgICAgICAg ICBpdGVtLnNlY29uZC0+cmVmZXJyZXIoKS51cmwpOworKyAgICAgIGZpbGVzLmVtcGxhY2VfYmFj aygpID0ge2l0ZW0uc2Vjb25kLT5mdWxsX3BhdGgoKSwgaXRlbS5zZWNvbmQtPnVybCgpLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICBpdGVtLnNlY29uZC0+cmVmZXJyZXIoKS51cmx9OworICAg ICB9CisgICAgIGRvd25sb2FkOjpEb3dubG9hZFNhdmVJdGVtRGF0YTo6QXR0YWNoSXRlbURhdGEo ZG93bmxvYWRfLCBzdGQ6Om1vdmUoZmlsZXMpKTsKKyAgIH0KK2RpZmYgLXVwIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlf c2V0X3BhcnNlci5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFydHlfc2V0X3BhcnNlci5jYworLS0tIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZpcnN0X3BhcnR5X3NldHMvZmlyc3RfcGFy dHlfc2V0X3BhcnNlci5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MDUuMDAwMDAwMDAwICswMTAw CisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmlyc3RfcGFydHlf c2V0cy9maXJzdF9wYXJ0eV9zZXRfcGFyc2VyLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTU4NzEy NzU2ICswMTAwCitAQCAtNzczLDcgKzc3Myw3IEBAIEZpcnN0UGFydHlTZXRQYXJzZXI6OlBhcnNl U2V0c0Zyb21FbnRlcnAKKyAgICAgICAgICAgICAgICAgICAgICBjb250ZXh0LkdldFBvbGljeVNl dHNGcm9tTGlzdCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcG9saWN5LkZpbmRMaXN0KGtG aXJzdFBhcnR5U2V0UG9saWN5QWRkaXRpb25zRmllbGQpLAorICAgICAgICAgICAgICAgICAgICAg ICAgICBQb2xpY3lTZXRUeXBlOjprQWRkaXRpb24pKTsKKy0gICAgcmV0dXJuIFBhcnNlZFBvbGlj eVNldExpc3RzKHN0ZDo6bW92ZShyZXBsYWNlbWVudHMpLCBzdGQ6Om1vdmUoYWRkaXRpb25zKSk7 CisrICAgIHJldHVybiBQYXJzZWRQb2xpY3lTZXRMaXN0c3tzdGQ6Om1vdmUocmVwbGFjZW1lbnRz KSwgc3RkOjptb3ZlKGFkZGl0aW9ucyl9OworICAgfSgpOworIAorICAgY29udGV4dC5Qb3N0UHJv Y2Vzc1NldExpc3RzKHNldF9saXN0cyk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9oZWFkZXJfZGlyZWN0X2Zyb21fc2VsbGVy X3NpZ25hbHMuaC50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2lu dGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5oCistLS0gY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaGVhZGVy X2RpcmVjdF9mcm9tX3NlbGxlcl9zaWduYWxzLmgudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjA1LjAw MDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L2ludGVyZXN0X2dyb3VwL2hlYWRlcl9kaXJlY3RfZnJvbV9zZWxsZXJfc2lnbmFscy5oCTIwMjQt MDItMjQgMTM6MTM6NDQuMTU4NzEyNzU2ICswMTAwCitAQCAtMTMzLDYgKzEzMyw3IEBAIGNsYXNz IENPTlRFTlRfRVhQT1JUIEhlYWRlckRpcmVjdEZyb21TZWwKKyAKKyAgICAgLy8gVGhlIEFkLUF1 Y3Rpb24tU2lnbmFscyByZXNwb25zZSBzZXJ2ZWQgYnkgYG9yaWdpbmAuCisgICAgIHN0ZDo6c3Ry aW5nIHJlc3BvbnNlX2pzb247CisrICAgIFVucHJvY2Vzc2VkUmVzcG9uc2UoYXV0byB1LCBhdXRv IHMpIDogb3JpZ2luKHUpLCByZXNwb25zZV9qc29uKHMpIHsgfQorICAgfTsKKyAKKyAgIC8vIElu Zm9ybWF0aW9uIGZyb20gUGFyc2VBbmRGaW5kKCkgY2FsbHMgdXNlZCBieSBQYXJzZUFuZEZpbmRD b21wbGV0ZWQuCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nl ci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9zdG9yYWdlLmNjLnRoYW4gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3Jv dXBfc3RvcmFnZS5jYworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2Vy L2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MudGhhbgkyMDI0LTAyLTIy IDIyOjQzOjA1LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3VwX3N0b3JhZ2UuY2MJMjAy NC0wMi0yNCAxMzoxMzo0NC4xNTI3MTI2NDkgKzAxMDAKK0BAIC0zNDYxLDEwICszNDYxLDEwIEBA IERvR2V0S0Fub255bWl0eURhdGEoc3FsOjpEYXRhYmFzZSYgZGIsCisgCisgICBzdGQ6OnZlY3Rv cjxTdG9yYWdlSW50ZXJlc3RHcm91cDo6S0Fub255bWl0eURhdGE+IGtfYW5vbl9kYXRhOworICAg d2hpbGUgKGludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LlN0ZXAoKSkgeworLSAgICBrX2Fub25f ZGF0YS5lbXBsYWNlX2JhY2soCisrICAgIGtfYW5vbl9kYXRhLmVtcGxhY2VfYmFjaygpID0gewor ICAgICAgICAgLyprZXk9Ki9pbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5Db2x1bW5TdHJpbmco MCksCisgICAgICAgICAvKmlzX2tfYW5vbnltb3VzPSovaW50ZXJlc3RfZ3JvdXBfa2Fub25fcXVl cnkuQ29sdW1uQm9vbCgxKSwKKy0gICAgICAgIC8qbGFzdF91cGRhdGVkPSovaW50ZXJlc3RfZ3Jv dXBfa2Fub25fcXVlcnkuQ29sdW1uVGltZSgyKSk7CisrICAgICAgICAvKmxhc3RfdXBkYXRlZD0q L2ludGVyZXN0X2dyb3VwX2thbm9uX3F1ZXJ5LkNvbHVtblRpbWUoMil9OworICAgfQorICAgaWYg KCFpbnRlcmVzdF9ncm91cF9rYW5vbl9xdWVyeS5TdWNjZWVkZWQoKSkgeworICAgICByZXR1cm4g c3RkOjpudWxsb3B0OworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jy b3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjLnRoYW4gY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJh bWVfaG9zdF9pbXBsLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dz ZXIvcmVuZGVyZXJfaG9zdC9yZW5kZXJfZnJhbWVfaG9zdF9pbXBsLmNjLnRoYW4JMjAyNC0wMi0y NCAxMzoxMzo0NC4xNTc3MTI3MzkgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nv bnRlbnQvYnJvd3Nlci9yZW5kZXJlcl9ob3N0L3JlbmRlcl9mcmFtZV9ob3N0X2ltcGwuY2MJMjAy NC0wMi0yNCAxMzoxODozOS40ODAxMTk0NDcgKzAxMDAKK0BAIC04NjMyLDcgKzg2MzIsNyBAQCB2 b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6OlNlbmRGZW5jZWRGcmFtCisgICBmb3IgKGNvbnN0IGJs aW5rOjpGZW5jZWRGcmFtZTo6UmVwb3J0aW5nRGVzdGluYXRpb24mIGRlc3RpbmF0aW9uIDoKKyAg ICAgICAgZGVzdGluYXRpb25zKSB7CisgICAgIFNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNv bkludGVybmFsKAorLSAgICAgICAgRGVzdGluYXRpb25FbnVtRXZlbnQoZXZlbnRfdHlwZSwgZXZl bnRfZGF0YSksIGRlc3RpbmF0aW9uKTsKKysgICAgICAgIERlc3RpbmF0aW9uRW51bUV2ZW50e2V2 ZW50X3R5cGUsIGV2ZW50X2RhdGF9LCBkZXN0aW5hdGlvbik7CisgICB9CisgfQorIAorQEAgLTg2 NjEsNyArODY2MSw3IEBAIHZvaWQgUmVuZGVyRnJhbWVIb3N0SW1wbDo6U2VuZEZlbmNlZEZyYW0K KyAgIH0KKyAKKyAgIFNlbmRGZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVybmFsKAorLSAg ICAgIERlc3RpbmF0aW9uVVJMRXZlbnQoZGVzdGluYXRpb25fdXJsKSwKKysgICAgICBEZXN0aW5h dGlvblVSTEV2ZW50e2Rlc3RpbmF0aW9uX3VybH0sCisgICAgICAgYmxpbms6OkZlbmNlZEZyYW1l OjpSZXBvcnRpbmdEZXN0aW5hdGlvbjo6a0J1eWVyKTsKKyB9CisgCitAQCAtODc5Miw3ICs4Nzky LDcgQEAgdm9pZCBSZW5kZXJGcmFtZUhvc3RJbXBsOjpNYXliZVNlbmRGZW5jZQorICAgICAgICAg ZGF0YSA9IGluZm8tPmRhdGE7CisgICAgICAgfQorICAgICAgIGluaXRpYXRvcl9yZmgtPlNlbmRG ZW5jZWRGcmFtZVJlcG9ydGluZ0JlYWNvbkludGVybmFsKAorLSAgICAgICAgICBBdXRvbWF0aWNC ZWFjb25FdmVudChldmVudF90eXBlLCBkYXRhKSwgZGVzdGluYXRpb24sCisrICAgICAgICAgIEF1 dG9tYXRpY0JlYWNvbkV2ZW50e2V2ZW50X3R5cGUsIGRhdGF9LCBkZXN0aW5hdGlvbiwKKyAgICAg ICAgICAgbmF2aWdhdGlvbl9yZXF1ZXN0LkdldE5hdmlnYXRpb25JZCgpKTsKKyAgICAgfQorICAg fSBlbHNlIHsKK0BAIC04ODAzLDcgKzg4MDMsNyBAQCB2b2lkIFJlbmRlckZyYW1lSG9zdEltcGw6 Ok1heWJlU2VuZEZlbmNlCisgICAgIGZvciAoYmxpbms6OkZlbmNlZEZyYW1lOjpSZXBvcnRpbmdE ZXN0aW5hdGlvbiBkZXN0aW5hdGlvbiA6CisgICAgICAgICAgaW5mby0+ZGVzdGluYXRpb25zKSB7 CisgICAgICAgaW5pdGlhdG9yX3JmaC0+U2VuZEZlbmNlZEZyYW1lUmVwb3J0aW5nQmVhY29uSW50 ZXJuYWwoCistICAgICAgICAgIEF1dG9tYXRpY0JlYWNvbkV2ZW50KGV2ZW50X3R5cGUsIGluZm8t PmRhdGEpLCBkZXN0aW5hdGlvbiwKKysgICAgICAgICAgQXV0b21hdGljQmVhY29uRXZlbnR7ZXZl bnRfdHlwZSwgaW5mby0+ZGF0YX0sIGRlc3RpbmF0aW9uLAorICAgICAgICAgICBuYXZpZ2F0aW9u X3JlcXVlc3QuR2V0TmF2aWdhdGlvbklkKCkpOworICAgICB9CisgICB9CitkaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlci9zZXJ2aWNl X3dvcmtlcl9jb250YWluZXJfaG9zdC5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29u dGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRhaW5lcl9ob3N0 LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93 b3JrZXIvc2VydmljZV93b3JrZXJfY29udGFpbmVyX2hvc3QuY2MudGhhbgkyMDI0LTAyLTIyIDIy OjQzOjA2LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVu dC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX2NvbnRhaW5lcl9ob3N0LmNj CTIwMjQtMDItMjQgMTM6MTM6NDQuMTU5NzEyNzc0ICswMTAwCitAQCAtODcwLDcgKzg3MCw3IEBA IFNlcnZpY2VXb3JrZXJDb250YWluZXJIb3N0OjpHZXRDbGllbnRUeXAKKyAgIERDSEVDS19DQUxM RURfT05fVkFMSURfU0VRVUVOQ0Uoc2VxdWVuY2VfY2hlY2tlcl8pOworICAgRENIRUNLKGNsaWVu dF9pbmZvXyk7CisgICByZXR1cm4gYWJzbDo6dmlzaXQoCistICAgICAgYmFzZTo6T3ZlcmxvYWRl ZCgKKysgICAgICBiYXNlOjpPdmVybG9hZGVkeworICAgICAgICAgICBbXShHbG9iYWxSZW5kZXJG cmFtZUhvc3RJZCByZW5kZXJfZnJhbWVfaG9zdF9pZCkgeworICAgICAgICAgICAgIHJldHVybiBi bGluazo6bW9qb206OlNlcnZpY2VXb3JrZXJDbGllbnRUeXBlOjprV2luZG93OworICAgICAgICAg ICB9LAorQEAgLTg3OSw3ICs4NzksNyBAQCBTZXJ2aWNlV29ya2VyQ29udGFpbmVySG9zdDo6R2V0 Q2xpZW50VHlwCisgICAgICAgICAgIH0sCisgICAgICAgICAgIFtdKGJsaW5rOjpTaGFyZWRXb3Jr ZXJUb2tlbiBzaGFyZWRfd29ya2VyX3Rva2VuKSB7CisgICAgICAgICAgICAgcmV0dXJuIGJsaW5r Ojptb2pvbTo6U2VydmljZVdvcmtlckNsaWVudFR5cGU6OmtTaGFyZWRXb3JrZXI7CistICAgICAg ICAgIH0pLAorKyAgICAgICAgICB9fSwKKyAgICAgICAqY2xpZW50X2luZm9fKTsKKyB9CisgCitk aWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9zZXJ2aWNlX3dv cmtlci9zZXJ2aWNlX3dvcmtlcl9tYWluX3Jlc291cmNlX2xvYWRlcl9pbnRlcmNlcHRvci5jYy50 aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2Vy L3NlcnZpY2Vfd29ya2VyX21haW5fcmVzb3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCistLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2Vy dmljZV93b3JrZXJfbWFpbl9yZXNvdXJjZV9sb2FkZXJfaW50ZXJjZXB0b3IuY2MudGhhbgkyMDI0 LTAyLTIyIDIyOjQzOjA2LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvY29udGVudC9icm93c2VyL3NlcnZpY2Vfd29ya2VyL3NlcnZpY2Vfd29ya2VyX21haW5fcmVz b3VyY2VfbG9hZGVyX2ludGVyY2VwdG9yLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTU5NzEyNzc0 ICswMTAwCitAQCAtMzYzLDEwICszNjMsMTAgQEAgU2VydmljZVdvcmtlck1haW5SZXNvdXJjZUxv YWRlckludGVyY2VwdAorICAgfQorICAgYXV0byogc3RvcmFnZV9wYXJ0aXRpb24gPSBwcm9jZXNz LT5HZXRTdG9yYWdlUGFydGl0aW9uKCk7CisgCistICByZXR1cm4gYWJzbDo6dmlzaXQoYmFzZTo6 T3ZlcmxvYWRlZChbJiwgdGhpc10oYXV0byB0b2tlbikgeworKyAgcmV0dXJuIGFic2w6OnZpc2l0 KGJhc2U6Ok92ZXJsb2FkZWR7WyYsIHRoaXNdKGF1dG8gdG9rZW4pIHsKKyAgICAgICAgICAgICAg ICAgICAgICAgIHJldHVybiBHZXRTdG9yYWdlS2V5RnJvbVdvcmtlckhvc3Qoc3RvcmFnZV9wYXJ0 aXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgIHRva2VuLCBvcmlnaW4pOworLSAgICAgICAgICAgICAgICAgICAgIH0pLAorKyAg ICAgICAgICAgICAgICAgICAgIH19LAorICAgICAgICAgICAgICAgICAgICAgICp3b3JrZXJfdG9r ZW5fKTsKKyB9CisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJv d3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2MudGhhbiBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci93b3JrZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2Vy X2hvc3QuY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci93b3Jr ZXJfaG9zdC9kZWRpY2F0ZWRfd29ya2VyX2hvc3QuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQzOjA2 LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93 c2VyL3dvcmtlcl9ob3N0L2RlZGljYXRlZF93b3JrZXJfaG9zdC5jYwkyMDI0LTAyLTI0IDEzOjEz OjQ0LjE1OTcxMjc3NCArMDEwMAorQEAgLTI1Miw3ICsyNTIsNyBAQCB2b2lkIERlZGljYXRlZFdv cmtlckhvc3Q6OlN0YXJ0U2NyaXB0TG9hCisgICBSZW5kZXJGcmFtZUhvc3RJbXBsKiBjcmVhdG9y X3JlbmRlcl9mcmFtZV9ob3N0ID0gbnVsbHB0cjsKKyAgIERlZGljYXRlZFdvcmtlckhvc3QqIGNy ZWF0b3Jfd29ya2VyID0gbnVsbHB0cjsKKyAKKy0gIGFic2w6OnZpc2l0KGJhc2U6Ok92ZXJsb2Fk ZWQoCisrICBhYnNsOjp2aXNpdChiYXNlOjpPdmVybG9hZGVkeworICAgICAgICAgICAgICAgICAg IFsmXShjb25zdCBHbG9iYWxSZW5kZXJGcmFtZUhvc3RJZCYgcmVuZGVyX2ZyYW1lX2hvc3RfaWQp IHsKKyAgICAgICAgICAgICAgICAgICAgIGNyZWF0b3JfcmVuZGVyX2ZyYW1lX2hvc3QgPQorICAg ICAgICAgICAgICAgICAgICAgICAgIFJlbmRlckZyYW1lSG9zdEltcGw6OkZyb21JRChyZW5kZXJf ZnJhbWVfaG9zdF9pZCk7CitAQCAtMjYwLDcgKzI2MCw3IEBAIHZvaWQgRGVkaWNhdGVkV29ya2Vy SG9zdDo6U3RhcnRTY3JpcHRMb2EKKyAgICAgICAgICAgICAgICAgICBbJl0oYmxpbms6OkRlZGlj YXRlZFdvcmtlclRva2VuIGRlZGljYXRlZF93b3JrZXJfdG9rZW4pIHsKKyAgICAgICAgICAgICAg ICAgICAgIGNyZWF0b3Jfd29ya2VyID0gc2VydmljZV8tPkdldERlZGljYXRlZFdvcmtlckhvc3RG cm9tVG9rZW4oCisgICAgICAgICAgICAgICAgICAgICAgICAgZGVkaWNhdGVkX3dvcmtlcl90b2tl bik7CistICAgICAgICAgICAgICAgICAgfSksCisrICAgICAgICAgICAgICAgICAgfX0sCisgICAg ICAgICAgICAgICBjcmVhdG9yXyk7CisgCisgICBpZiAoIWNyZWF0b3JfcmVuZGVyX2ZyYW1lX2hv c3QgJiYgIWNyZWF0b3Jfd29ya2VyKSB7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L25ldC9kbnMvaG9zdF9yZXNvbHZlcl9jYWNoZS5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvbmV0L2Rucy9ob3N0X3Jlc29sdmVyX2NhY2hlLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9uZXQvZG5zL2hvc3RfcmVzb2x2ZXJfY2FjaGUuY2MudGhhbgkyMDI0LTAyLTIyIDIyOjQz OjE3LjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbmV0L2Rucy9o b3N0X3Jlc29sdmVyX2NhY2hlLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUyNzEyNjQ5ICswMTAw CitAQCAtMzY4LDcgKzM2OCw3IEBAIHZvaWQgSG9zdFJlc29sdmVyQ2FjaGU6OlNldCgKKyAKKyAg IHN0ZDo6c3RyaW5nIGRvbWFpbl9uYW1lID0gcmVzdWx0LT5kb21haW5fbmFtZSgpOworICAgZW50 cmllc18uZW1wbGFjZSgKKy0gICAgICBLZXkoc3RkOjptb3ZlKGRvbWFpbl9uYW1lKSwgbmV0d29y a19hbm9ueW1pemF0aW9uX2tleSksCisrICAgICAgS2V5e3N0ZDo6bW92ZShkb21haW5fbmFtZSks IG5ldHdvcmtfYW5vbnltaXphdGlvbl9rZXl9LAorICAgICAgIEVudHJ5KHN0ZDo6bW92ZShyZXN1 bHQpLCBzb3VyY2UsIHNlY3VyZSwgc3RhbGVuZXNzX2dlbmVyYXRpb24pKTsKKyAKKyAgIGlmIChl bnRyaWVzXy5zaXplKCkgPiBtYXhfZW50cmllc18pIHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4w LjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvZm9udF9w YWxldHRlLmgudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3Jl bmRlcmVyL3BsYXRmb3JtL2ZvbnRzL2ZvbnRfcGFsZXR0ZS5oCistLS0gY2hyb21pdW0tMTIyLjAu NjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9mb250X3Bh bGV0dGUuaC50aGFuCTIwMjQtMDItMjIgMjI6NDM6MjUuMDAwMDAwMDAwICswMTAwCisrKysgY2hy b21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS9m b250cy9mb250X3BhbGV0dGUuaAkyMDI0LTAyLTI0IDEzOjEzOjQ0LjE1MjcxMjY0OSArMDEwMAor QEAgLTk2LDcgKzk2LDcgQEAgY2xhc3MgUExBVEZPUk1fRVhQT1JUIEZvbnRQYWxldHRlIDogcHVi bAorICAgICAgIENvbG9yOjpDb2xvclNwYWNlIGNvbG9yX2ludGVycG9sYXRpb25fc3BhY2UsCisg ICAgICAgYWJzbDo6b3B0aW9uYWw8Q29sb3I6Okh1ZUludGVycG9sYXRpb25NZXRob2Q+IGh1ZV9p bnRlcnBvbGF0aW9uX21ldGhvZCkgeworICAgICByZXR1cm4gYmFzZTo6QWRvcHRSZWYobmV3IEZv bnRQYWxldHRlKAorLSAgICAgICAgc3RhcnQsIGVuZCwgTm9uTm9ybWFsaXplZFBlcmNlbnRhZ2Vz KHN0YXJ0X3BlcmNlbnRhZ2UsIGVuZF9wZXJjZW50YWdlKSwKKysgICAgICAgIHN0YXJ0LCBlbmQs IE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlc3tzdGFydF9wZXJjZW50YWdlLCBlbmRfcGVyY2VudGFn ZX0sCisgICAgICAgICBub3JtYWxpemVkX3BlcmNlbnRhZ2UsIGFscGhhX211bHRpcGxpZXIsIGNv bG9yX2ludGVycG9sYXRpb25fc3BhY2UsCisgICAgICAgICBodWVfaW50ZXJwb2xhdGlvbl9tZXRo b2QpKTsKKyAgIH0KK0BAIC0xNzAsNyArMTcwLDcgQEAgY2xhc3MgUExBVEZPUk1fRVhQT1JUIEZv bnRQYWxldHRlIDogcHVibAorICAgICAgIGRvdWJsZSBub3JtYWxpemVkX3BlcmNlbnRhZ2UpIHsK KyAgICAgZG91YmxlIGVuZF9wZXJjZW50YWdlID0gbm9ybWFsaXplZF9wZXJjZW50YWdlICogMTAw LjA7CisgICAgIGRvdWJsZSBzdGFydF9wZXJjZW50YWdlID0gMTAwLjAgLSBlbmRfcGVyY2VudGFn ZTsKKy0gICAgcmV0dXJuIE5vbk5vcm1hbGl6ZWRQZXJjZW50YWdlcyhzdGFydF9wZXJjZW50YWdl LCBlbmRfcGVyY2VudGFnZSk7CisrICAgIHJldHVybiBOb25Ob3JtYWxpemVkUGVyY2VudGFnZXN7 c3RhcnRfcGVyY2VudGFnZSwgZW5kX3BlcmNlbnRhZ2V9OworICAgfQorIAorICAgZG91YmxlIEdl dEFscGhhTXVsdGlwbGllcigpIGNvbnN0IHsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEu NjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvcGxhdGZvcm0vZm9udHMvcGFsZXR0ZV9pbnRl cnBvbGF0aW9uLmNjLnRoYW4gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2MKKy0tLSBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3Jt L2ZvbnRzL3BhbGV0dGVfaW50ZXJwb2xhdGlvbi5jYy50aGFuCTIwMjQtMDItMjIgMjI6NDM6MjUu MDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9i bGluay9yZW5kZXJlci9wbGF0Zm9ybS9mb250cy9wYWxldHRlX2ludGVycG9sYXRpb24uY2MJMjAy NC0wMi0yNCAxMzoxMzo0NC4xNTI3MTI2NDkgKzAxMDAKK0BAIC0zMSw3ICszMSw3IEBAIFZlY3Rv cjxGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVPdmVycmlkZT4KKyAgICAgICAgIGNvbG9yX2ludGVy cG9sYXRpb25fc3BhY2UsIGh1ZV9pbnRlcnBvbGF0aW9uX21ldGhvZCwgc3RhcnRfY29sb3IsCisg ICAgICAgICBlbmRfY29sb3IsIHBlcmNlbnRhZ2UsIGFscGhhX211bHRpcGxpZXIpOworIAorLSAg ICBGb250UGFsZXR0ZTo6Rm9udFBhbGV0dGVPdmVycmlkZSByZXN1bHRfY29sb3JfcmVjb3JkKGks IHJlc3VsdF9jb2xvcik7CisrICAgIEZvbnRQYWxldHRlOjpGb250UGFsZXR0ZU92ZXJyaWRlIHJl c3VsdF9jb2xvcl9yZWNvcmR7c3RhdGljX2Nhc3Q8aW50PihpKSwgcmVzdWx0X2NvbG9yfTsKKyAg ICAgcmVzdWx0X2NvbG9yX3JlY29yZHMucHVzaF9iYWNrKHJlc3VsdF9jb2xvcl9yZWNvcmQpOwor ICAgfQorICAgcmV0dXJuIHJlc3VsdF9jb2xvcl9yZWNvcmRzOworZGlmZiAtdXAgY2hyb21pdW0t MTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9wZGZpdW0vY29yZS9mcGRmYXBpL3JlbmRlci9jcGRm X3JlbmRlcnN0YXR1cy5jcHAudGhhbiBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5 L3BkZml1bS9jb3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNwcAorLS0tIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvcGRmaXVtL2NvcmUvZnBkZmFwaS9yZW5k ZXIvY3BkZl9yZW5kZXJzdGF0dXMuY3BwLnRoYW4JMjAyNC0wMi0yMiAyMjo0NTowMi4wMDAwMDAw MDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L3BkZml1bS9j b3JlL2ZwZGZhcGkvcmVuZGVyL2NwZGZfcmVuZGVyc3RhdHVzLmNwcAkyMDI0LTAyLTI0IDEzOjEz OjQ0LjE1MzcxMjY2NyArMDEwMAorQEAgLTUwNyw3ICs1MDcsNyBAQCB2b2lkIENQREZfUmVuZGVy U3RhdHVzOjpQcm9jZXNzQ2xpcFBhdGgoCisgICAgIH0gZWxzZSB7CisgICAgICAgbV9wRGV2aWNl LT5TZXRDbGlwX1BhdGhGaWxsKAorICAgICAgICAgICAqcFBhdGgsICZtdE9iajJEZXZpY2UsCist ICAgICAgICAgIENGWF9GaWxsUmVuZGVyT3B0aW9ucyhDbGlwUGF0aC5HZXRDbGlwVHlwZShpKSkp OworKyAgICAgICAgICBDRlhfRmlsbFJlbmRlck9wdGlvbnN7Q2xpcFBhdGguR2V0Q2xpcFR5cGUo aSl9KTsKKyAgICAgfQorICAgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS91 aS9iYXNlL3dheWxhbmQvY29sb3JfbWFuYWdlcl91dGlsLmgudGhhbiBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaAorLS0tIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvdWkvYmFzZS93YXlsYW5kL2NvbG9yX21hbmFnZXJfdXRpbC5oLnRoYW4J MjAyNC0wMi0yMiAyMjo0NDoxMi4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L3VpL2Jhc2Uvd2F5bGFuZC9jb2xvcl9tYW5hZ2VyX3V0aWwuaAkyMDI0LTAyLTI0IDEz OjEzOjQ0LjE1MzcxMjY2NyArMDEwMAorQEAgLTUyLDUzICs1Miw1MyBAQCBjb25zdGV4cHIgYXV0 byBrQ2hyb21hdGljaXR5TWFwID0gYmFzZTo6CisgICAgIHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2No cm9tYXRpY2l0eV9uYW1lcywKKyAgICAgUHJpbWFyeVZlcnNpb24+KAorICAgICB7e1pDUl9DT0xP Ul9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV81MjVfTElORSwKKy0gICAgICBQ cmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAorLSAg ICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJpbWFy eVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcwTSwKKysgICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19CVDYwMV82MjVfTElORSwKKy0gICAgICBQcmlt YXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0NzBCRywKKy0gICAgICAg ICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgIFByaW1hcnlWZXJz aW9ue2dmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpCVDQ3MEJHLAorKyAgICAgICAgICAgICAg ICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJf VjFfQ0hST01BVElDSVRZX05BTUVTX1NNUFRFMTcwTSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihn Zng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6U01QVEUxNzBNLAorLSAgICAgICAgICAgICAgICAg ICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpD b2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRFMTcwTSwKKysgICAgICAgICAgICAgICAgICAgICBr RGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9N QVRJQ0lUWV9OQU1FU19CVDcwOSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3Bh Y2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJp bWFyeVZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkJUNzA5LCBrRGVmYXVsdFNp bmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9O QU1FU19CVDIwMjAsCistICAgICAgUHJpbWFyeVZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpQcmlt YXJ5SUQ6OkJUMjAyMCwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmltYXJ5VmVy c2lvbntnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQyMDIwLCBrRGVmYXVsdFNpbmNlVmVy c2lvbn19LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19T UkdCLAorLSAgICAgIFByaW1hcnlWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpC VDcwOSwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICBQcmltYXJ5VmVyc2lvbntnZng6 OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ3MDksIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisg ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0RJU1BMQVlQMywK Ky0gICAgICBQcmltYXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6UDMsIGtE ZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJpbWFyeVZlcnNpb257Z2Z4OjpDb2xvclNw YWNlOjpQcmltYXJ5SUQ6OlAzLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9D T0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19BRE9CRVJHQiwKKy0gICAgICBQcmlt YXJ5VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QURPQkVfUkdCLAorLSAgICAg ICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgUHJpbWFyeVZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OkFET0JFX1JHQiwKKysgICAgICAgICAg ICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NPTE9SX1NQSU4sCistICAgICAg UHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257CisgICAgICAgICAgIGdmeDo6 Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpXSURFX0dBTVVUX0NPTE9SX1NQSU4sCistICAgICAgICAg IFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19XSURFX0dBTVVUX0NPTE9S X1NQSU5fU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9D SFJPTUFUSUNJVFlfTkFNRVNfV0lERV9HQU1VVF9DT0xPUl9TUElOX1NJTkNFX1ZFUlNJT059fSwK KyAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ0NzBNLAor LSAgICAgIFByaW1hcnlWZXJzaW9uKAorKyAgICAgIFByaW1hcnlWZXJzaW9ueworICAgICAgICAg ICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6QlQ0NzBNLAorLSAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfQlQ0NzBNX1NJTkNFX1ZFUlNJT04pfSwK KysgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX0JUNDcw TV9TSU5DRV9WRVJTSU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElD SVRZX05BTUVTX1NNUFRFMjQwTSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmlt YXJ5VmVyc2lvbnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRF MjQwTSwKKy0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVT X1NNUFRFMjQwTV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURTI0ME1fU0lOQ0VfVkVSU0lPTn19LAorICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19YWVpfRDUwLAorLSAgICAg IFByaW1hcnlWZXJzaW9uKAorKyAgICAgIFByaW1hcnlWZXJzaW9ueworICAgICAgICAgICBnZng6 OkNvbG9yU3BhY2U6OlByaW1hcnlJRDo6WFlaX0Q1MCwKKy0gICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfQ0hST01BVElDSVRZX05BTUVTX1hZWl9ENTBfU0lOQ0VfVkVSU0lPTil9LAorKyAg ICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfWFlaX0Q1MF9T SU5DRV9WRVJTSU9OfX0sCisgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZ X05BTUVTX1NNUFRFU1Q0MjhfMSwKKy0gICAgICBQcmltYXJ5VmVyc2lvbigKKysgICAgICBQcmlt YXJ5VmVyc2lvbnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNwYWNlOjpQcmltYXJ5SUQ6OlNNUFRF U1Q0MjhfMSwKKy0gICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfQ0hST01BVElDSVRZX05B TUVTX1NNUFRFU1Q0MjhfMV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTn19 LAorICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNU NDMxXzIsCistICAgICAgUHJpbWFyeVZlcnNpb24oCisrICAgICAgUHJpbWFyeVZlcnNpb257Cisg ICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6UHJpbWFyeUlEOjpTTVBURVNUNDMxXzIsCistICAg ICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NIUk9NQVRJQ0lUWV9OQU1FU19TTVBURVNUNDMx XzJfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9DSFJP TUFUSUNJVFlfTkFNRVNfU01QVEVTVDQzMV8yX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklMTSwKKy0gICAgICBQcmltYXJ5 VmVyc2lvbigKKysgICAgICBQcmltYXJ5VmVyc2lvbnsKKyAgICAgICAgICAgZ2Z4OjpDb2xvclNw YWNlOjpQcmltYXJ5SUQ6OkZJTE0sCistICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0NI Uk9NQVRJQ0lUWV9OQU1FU19GSUxNX1NJTkNFX1ZFUlNJT04pfX0pOworKyAgICAgICAgICBaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9DSFJPTUFUSUNJVFlfTkFNRVNfRklMTV9TSU5DRV9WRVJTSU9OfX19 KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHRoZSB6Y3JfY29sb3JfbWFuYWdlcl92MSBlb3RmX25hbWVz IGVudW0gdmFsdWVzCisgLy8gcmVwcmVzZW50aW5nIHdlbGwta25vd24gRU9URnMsIHRvIHRoZWly IGVxdWl2YWxlbnQgVHJhbnNmZXJJRHMuCitAQCAtMTA3LDY4ICsxMDcsNjggQEAgY29uc3RleHBy IGF1dG8ga0VvdGZNYXAgPSBiYXNlOjpNYWtlRml4ZQorICAgICB6Y3JfY29sb3JfbWFuYWdlcl92 MV9lb3RmX25hbWVzLAorICAgICBUcmFuc2ZlclZlcnNpb24+KHsKKyAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX0VPVEZfTkFNRVNfTElORUFSLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6 Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TElORUFSLAorLSAgICAgICAgICAgICAgICAgICAgIGtE ZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNw YWNlOjpUcmFuc2ZlcklEOjpMSU5FQVIsCisrICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRT aW5jZVZlcnNpb259fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JH QiwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNS R0IsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpD b2xvclNwYWNlOjpUcmFuc2ZlcklEOjpTUkdCLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAg ICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUiwKKy0gICAgIFRyYW5z ZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNSR0JfSERSLAorLSAgICAg ICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JHQl9IRFJf U0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6U1JHQl9IRFIsCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19TUkdCX0hEUl9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1Jf Q09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAorLSAgICAgVHJhbnNmZXJWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6QlQ3MDksCistICAgICAgICAgICAgICAgICAg ICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OKX0s CisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDcw OSwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0JUNzA5X1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfQlQyMDg3LAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJh bnNmZXJJRDo6R0FNTUEyNCwKKy0gICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVy c2lvbil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJ RDo6R0FNTUEyNCwKKysgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19 LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19BRE9CRVJHQiwKKyAgICAg IC8vIFRoaXMgaXMgZXZlciBzbyBzbGlnaHRseSBpbmFjY3VyYXRlLiBUaGUgbnVtYmVyIG91Z2h0 IHRvIGJlCisgICAgICAvLyAyLjE5OTIxODc1Ziwgbm90IDIuMgorLSAgICAgVHJhbnNmZXJWZXJz aW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyMiwKKy0gICAgICAgICAgICAg ICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dm eDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyMiwKKysgICAgICAgICAgICAgICAgICAg ICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19QUSwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5z ZmVySUQ6OlBRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6UFEsIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0s CisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMRywKKy0gICAgIFRyYW5z ZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkhMRywKKy0gICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMR19TSU5DRV9WRVJT SU9OKX0sCisrICAgICBUcmFuc2ZlclZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklE OjpITEcsCisrICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9O QU1FU19ITEdfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19TTVBURTE3ME0sCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNl OjpUcmFuc2ZlcklEOjpTTVBURTE3ME0sCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19TTVBURTE3ME1fU0lOQ0VfVkVSU0lPTil9LAorKyAgICAg VHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6U01QVEUxNzBNLAor KyAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU01Q VEUxNzBNX1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZf TkFNRVNfU01QVEUyNDBNLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 VHJhbnNmZXJJRDo6U01QVEUyNDBNLAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX0VPVEZfTkFNRVNfU01QVEUyNDBNX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRy YW5zZmVyVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFMjQwTSwKKysg ICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRF MjQwTV9TSU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05B TUVTX1NNUFRFU1Q0MjhfMSwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbigKKysgICAgIFRyYW5zZmVy VmVyc2lvbnsKKyAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNNUFRFU1Q0 MjhfMSwKKy0gICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NNUFRFU1Q0 MjhfMV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9U Rl9OQU1FU19TTVBURVNUNDI4XzFfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01B TkFHRVJfVjFfRU9URl9OQU1FU19MT0csCistICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xv clNwYWNlOjpUcmFuc2ZlcklEOjpMT0csCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9S X01BTkFHRVJfVjFfRU9URl9OQU1FU19MT0dfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNm ZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6TE9HLAorKyAgICAgICAgICAg ICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NJTkNFX1ZFUlNJ T059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NRUlQsCist ICAgICBUcmFuc2ZlclZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpMT0dfU1FS VCwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVT X0xPR19TUVJUX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVyVmVyc2lvbntnZng6OkNv bG9yU3BhY2U6OlRyYW5zZmVySUQ6OkxPR19TUVJULAorKyAgICAgICAgICAgICAgICAgICAgIFpD Ul9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfTE9HX1NRUlRfU0lOQ0VfVkVSU0lPTn19LAor ICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8yXzQsCistICAg ICBUcmFuc2ZlclZlcnNpb24oCisrICAgICBUcmFuc2ZlclZlcnNpb257CisgICAgICAgICAgZ2Z4 OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpJRUM2MTk2Nl8yXzQsCistICAgICAgICAgWkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19JRUM2MTk2Nl8yXzRfU0lOQ0VfVkVSU0lPTil9LAor KyAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSUVDNjE5NjZfMl80X1NJ TkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQx MzYxX0VDRywKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OkJUMTM2MV9FQ0csCistICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJf VjFfRU9URl9OQU1FU19CVDEzNjFfRUNHX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVy VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMTM2MV9FQ0csCisrICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDEzNjFfRUNH X1NJTkNFX1ZFUlNJT059fSwKKyAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf QlQyMDIwXzEwLAorLSAgICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNm ZXJJRDo6QlQyMDIwXzEwLAorLSAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VS X1YxX0VPVEZfTkFNRVNfQlQyMDIwXzEwX1NJTkNFX1ZFUlNJT04pfSwKKysgICAgIFRyYW5zZmVy VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OkJUMjAyMF8xMCwKKysgICAgICAg ICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUMjAyMF8xMF9T SU5DRV9WRVJTSU9OfX0sCisgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0JU MjAyMF8xMiwKKy0gICAgIFRyYW5zZmVyVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVy SUQ6OkJUMjAyMF8xMiwKKy0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0JUMjAyMF8xMl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICBUcmFuc2ZlclZl cnNpb257Z2Z4OjpDb2xvclNwYWNlOjpUcmFuc2ZlcklEOjpCVDIwMjBfMTIsCisrICAgICAgICAg ICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19CVDIwMjBfMTJfU0lO Q0VfVkVSU0lPTn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19TQ1JH Ql9MSU5FQVJfODBfTklUUywKKy0gICAgIFRyYW5zZmVyVmVyc2lvbigKKysgICAgIFRyYW5zZmVy VmVyc2lvbnsKKyAgICAgICAgICBnZng6OkNvbG9yU3BhY2U6OlRyYW5zZmVySUQ6OlNDUkdCX0xJ TkVBUl84MF9OSVRTLAorLSAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNf U0NSR0JfTElORUFSXzgwX05JVFNfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgICAgIFpDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU0NSR0JfTElORUFSXzgwX05JVFNfU0lOQ0VfVkVSU0lP Tn19LAorICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTE4LAorLSAg ICAgVHJhbnNmZXJWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUExOCwK Ky0gICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dB TU1BMThfU0lOQ0VfVkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JT cGFjZTo6VHJhbnNmZXJJRDo6R0FNTUExOCwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09M T1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMThfU0lOQ0VfVkVSU0lPTn19LAorICAgICB7 WkNSX0NPTE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19HQU1NQTI4LAorLSAgICAgVHJhbnNmZXJW ZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6VHJhbnNmZXJJRDo6R0FNTUEyOCwKKy0gICAgICAgICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0dBTU1BMjhfU0lOQ0Vf VkVSU0lPTil9LAorKyAgICAgVHJhbnNmZXJWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6VHJhbnNm ZXJJRDo6R0FNTUEyOCwKKysgICAgICAgICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0dBTU1BMjhfU0lOQ0VfVkVSU0lPTn19LAorIH0pOworIAorIC8vIEEgbWFw IGZyb20gdGhlIFNEUiB6Y3JfY29sb3JfbWFuYWdlcl92MSBlb3RmX25hbWVzIGVudW0gdmFsdWVz CitAQCAtMTc3LDE4ICsxNzcsMTggQEAgY29uc3RleHByIGF1dG8ga0VvdGZNYXAgPSBiYXNlOjpN YWtlRml4ZQorIGNvbnN0ZXhwciBhdXRvIGtUcmFuc2Zlck1hcCA9CisgICAgIGJhc2U6Ok1ha2VG aXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9uYW1lcywgVHJhbnNmZXJGblZl cnNpb24+KHsKKyAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xJTkVB UiwKKy0gICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNmZXJGbjo6a0xpbmVh ciwga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbntT a05hbWVkVHJhbnNmZXJGbjo6a0xpbmVhciwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0IsCistICAgICAgICAgVHJh bnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCLCBrRGVmYXVsdFNpbmNl VmVyc2lvbil9LAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ue1NrTmFtZWRUcmFuc2ZlckZu RXh0OjprU1JHQiwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgIHtaQ1JfQ09MT1Jf TUFOQUdFUl9WMV9FT1RGX05BTUVTX0JUNzA5LAorLSAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9u KAorKyAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ueworICAgICAgICAgICAgICBTa05hbWVkVHJh bnNmZXJGbkV4dDo6a1JlYzcwOSwKKy0gICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf RU9URl9OQU1FU19CVDcwOV9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgICAgIFpDUl9DT0xP Ul9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQ3MDlfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAg e1pDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfQlQyMDg3LAorLSAgICAgICAgIFRyYW5z ZmVyRm5WZXJzaW9uKGdhbW1hMjQsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAg VHJhbnNmZXJGblZlcnNpb257Z2FtbWEyNCwga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAg ICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0FET0JFUkdCLAorLSAgICAgICAg IFRyYW5zZmVyRm5WZXJzaW9uKFNrTmFtZWRUcmFuc2ZlckZuRXh0OjprQTk4UkdCLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAg VHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtBOThSR0IsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgfSk7Cisg CisgLy8gQSBtYXAgZnJvbSB0aGUgSERSIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIGVvdGZfbmFtZXMg ZW51bSB2YWx1ZXMKK0BAIC0xOTcsNzAgKzE5Nyw3MCBAQCBjb25zdGV4cHIgYXV0byBrVHJhbnNm ZXJNYXAgPQorIGNvbnN0ZXhwciBhdXRvIGtIRFJUcmFuc2Zlck1hcCA9CisgICAgIGJhc2U6Ok1h a2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFfZW90Zl9uYW1lcywgVHJhbnNmZXJG blZlcnNpb24+KAorICAgICAgICAge3taQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0xJ TkVBUiwKKy0gICAgICAgICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm46OmtM aW5lYXIsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAgIFRyYW5zZmVyRm5WZXJz aW9ue1NrTmFtZWRUcmFuc2ZlckZuOjprTGluZWFyLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSLAorLSAg ICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbigKKysgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257 CisgICAgICAgICAgICAgICBTa05hbWVkVHJhbnNmZXJGbkV4dDo6a1NSR0IsCistICAgICAgICAg ICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX1NSR0JfSERSX1NJTkNFX1ZFUlNJ T04pfSwKKysgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfU1JH Ql9IRFJfU0lOQ0VfVkVSU0lPTn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9F T1RGX05BTUVTX1BRLAorLSAgICAgICAgICBUcmFuc2ZlckZuVmVyc2lvbihTa05hbWVkVHJhbnNm ZXJGbjo6a1BRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAgICAgICAgICBUcmFuc2ZlckZu VmVyc2lvbntTa05hbWVkVHJhbnNmZXJGbjo6a1BRLCBrRGVmYXVsdFNpbmNlVmVyc2lvbn19LAor ICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9FT1RGX05BTUVTX0hMRywKKy0gICAgICAg ICAgVHJhbnNmZXJGblZlcnNpb24oU2tOYW1lZFRyYW5zZmVyRm46OmtITEcsCistICAgICAgICAg ICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJ TkNFX1ZFUlNJT04pfSwKKysgICAgICAgICAgVHJhbnNmZXJGblZlcnNpb257U2tOYW1lZFRyYW5z ZmVyRm46OmtITEcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX0VPVEZfTkFNRVNfSExHX1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NP TE9SX01BTkFHRVJfVjFfRU9URl9OQU1FU19FWFRFTkRFRFNSR0IxMCwKKy0gICAgICAgICAgVHJh bnNmZXJGblZlcnNpb24oCisrICAgICAgICAgIFRyYW5zZmVyRm5WZXJzaW9ueworICAgICAgICAg ICAgICAgU2tOYW1lZFRyYW5zZmVyRm5FeHQ6OmtTUkdCRXh0ZW5kZWQxMDIzT3ZlcjUxMCwKKy0g ICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX0VPVEZfTkFNRVNfRVhURU5ERURTUkdC MTBfU0lOQ0VfVkVSU0lPTil9fSk7CisrICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9W MV9FT1RGX05BTUVTX0VYVEVOREVEU1JHQjEwX1NJTkNFX1ZFUlNJT059fX0pOworIAorIC8vIEEg bWFwIGZyb20gemNyX2NvbG9yX21hbmFnZXJfdjEgbWF0cml4X25hbWVzIGVudW0gdmFsdWVzIHRv CisgLy8gZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRHMuCisgY29uc3RleHByIGF1dG8ga01hdHJp eE1hcCA9CisgICAgIGJhc2U6Ok1ha2VGaXhlZEZsYXRNYXA8emNyX2NvbG9yX21hbmFnZXJfdjFf bWF0cml4X25hbWVzLCBNYXRyaXhWZXJzaW9uPigKKyAgICAgICAgIHt7WkNSX0NPTE9SX01BTkFH RVJfVjFfTUFUUklYX05BTUVTX1JHQiwKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNv bG9yU3BhY2U6Ok1hdHJpeElEOjpSR0IsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAg ICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6UkdCLCBrRGVmYXVs dFNpbmNlVmVyc2lvbn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhf TkFNRVNfQlQ3MDksCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpN YXRyaXhJRDo6QlQ3MDksCistICAgICAgICAgICAgICAgICAgICAgICAga0RlZmF1bHRTaW5jZVZl cnNpb24pfSwKKysgICAgICAgICAgTWF0cml4VmVyc2lvbntnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEOjpCVDcwOSwKKysgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lv bn19LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQ0NzBC RywKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbigKKysgICAgICAgICAgTWF0cml4VmVyc2lvbnsK KyAgICAgICAgICAgICAgIGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUNDcwQkcsCistICAg ICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfQlQ0NzBCR19TSU5D RV9WRVJTSU9OKX0sCisrICAgICAgICAgICAgICBaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhf TkFNRVNfQlQ0NzBCR19TSU5DRV9WRVJTSU9OfX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5B R0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfTkNMLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9u KGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkJUMjAyMF9OQ0wsCistICAgICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgTWF0cml4VmVyc2lv bntnZng6OkNvbG9yU3BhY2U6Ok1hdHJpeElEOjpCVDIwMjBfTkNMLAorKyAgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX01BVFJJWF9OQU1FU19CVDIwMjBfQ0wsCistICAgICAgICAgIE1hdHJpeFZlcnNp b24oZ2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NMLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNp b257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6QlQyMDIwX0NMLAorKyAgICAgICAgICAgICAg ICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9N QU5BR0VSX1YxX01BVFJJWF9OQU1FU19GQ0MsCistICAgICAgICAgIE1hdHJpeFZlcnNpb24oZ2Z4 OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6RkNDLCBrRGVmYXVsdFNpbmNlVmVyc2lvbil9LAorKyAg ICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OkZDQywga0Rl ZmF1bHRTaW5jZVZlcnNpb259fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFU UklYX05BTUVTX1lDT0NHLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFj ZTo6TWF0cml4SUQ6OllDT0NHLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9N QU5BR0VSX1YxX01BVFJJWF9OQU1FU19ZQ09DR19TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAg IE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WUNPQ0csCisrICAgICAg ICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lDT0NH X1NJTkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklY X05BTUVTX1lEWkRYLAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6 TWF0cml4SUQ6OllEWkRYLAorLSAgICAgICAgICAgICAgICAgICAgICAgIFpDUl9DT0xPUl9NQU5B R0VSX1YxX01BVFJJWF9OQU1FU19ZRFpEWF9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIE1h dHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6WURaRFgsCisrICAgICAgICAg ICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05BTUVTX1lEWkRYX1NJ TkNFX1ZFUlNJT059fSwKKyAgICAgICAgICB7WkNSX0NPTE9SX01BTkFHRVJfVjFfTUFUUklYX05B TUVTX0dCUiwKKy0gICAgICAgICAgTWF0cml4VmVyc2lvbihnZng6OkNvbG9yU3BhY2U6Ok1hdHJp eElEOjpHQlIsCistICAgICAgICAgICAgICAgICAgICAgICAgWkNSX0NPTE9SX01BTkFHRVJfVjFf TUFUUklYX05BTUVTX0dCUl9TSU5DRV9WRVJTSU9OKX0sCisrICAgICAgICAgIE1hdHJpeFZlcnNp b257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6R0JSLAorKyAgICAgICAgICAgICAgICAgICAg ICAgIFpDUl9DT0xPUl9NQU5BR0VSX1YxX01BVFJJWF9OQU1FU19HQlJfU0lOQ0VfVkVSU0lPTn19 LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfU01QVEUxNzBN LAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlNN UFRFMTcwTSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9 LAorKyAgICAgICAgICBNYXRyaXhWZXJzaW9ue2dmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlNN UFRFMTcwTSwKKysgICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19 LAorICAgICAgICAgIHtaQ1JfQ09MT1JfTUFOQUdFUl9WMV9NQVRSSVhfTkFNRVNfU01QVEUyNDBN LAorLSAgICAgICAgICBNYXRyaXhWZXJzaW9uKGdmeDo6Q29sb3JTcGFjZTo6TWF0cml4SUQ6OlNN UFRFMjQwTSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbil9 fSk7CisrICAgICAgICAgIE1hdHJpeFZlcnNpb257Z2Z4OjpDb2xvclNwYWNlOjpNYXRyaXhJRDo6 U01QVEUyNDBNLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGtEZWZhdWx0U2luY2VWZXJzaW9u fX19KTsKKyAKKyAvLyBBIG1hcCBmcm9tIHpjcl9jb2xvcl9tYW5hZ2VyX3YxIHJhbmdlX25hbWVz IGVudW0gdmFsdWVzIHRvCisgLy8gZ2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEcy4KKyBjb25zdGV4 cHIgYXV0byBrUmFuZ2VNYXAgPQorICAgICBiYXNlOjpNYWtlRml4ZWRGbGF0TWFwPHpjcl9jb2xv cl9tYW5hZ2VyX3YxX3JhbmdlX25hbWVzLCBSYW5nZVZlcnNpb24+KAorICAgICAgICAge3taQ1Jf Q09MT1JfTUFOQUdFUl9WMV9SQU5HRV9OQU1FU19MSU1JVEVELAorLSAgICAgICAgICBSYW5nZVZl cnNpb24oZ2Z4OjpDb2xvclNwYWNlOjpSYW5nZUlEOjpMSU1JVEVELAorLSAgICAgICAgICAgICAg ICAgICAgICAga0RlZmF1bHRTaW5jZVZlcnNpb24pfSwKKysgICAgICAgICAgUmFuZ2VWZXJzaW9u e2dmeDo6Q29sb3JTcGFjZTo6UmFuZ2VJRDo6TElNSVRFRCwKKysgICAgICAgICAgICAgICAgICAg ICAgIGtEZWZhdWx0U2luY2VWZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VS X1YxX1JBTkdFX05BTUVTX0ZVTEwsCistICAgICAgICAgIFJhbmdlVmVyc2lvbihnZng6OkNvbG9y U3BhY2U6OlJhbmdlSUQ6OkZVTEwsIGtEZWZhdWx0U2luY2VWZXJzaW9uKX0sCisrICAgICAgICAg IFJhbmdlVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6OkZVTEwsIGtEZWZhdWx0U2lu Y2VWZXJzaW9ufX0sCisgICAgICAgICAge1pDUl9DT0xPUl9NQU5BR0VSX1YxX1JBTkdFX05BTUVT X0RFUklWRUQsCistICAgICAgICAgIFJhbmdlVmVyc2lvbihnZng6OkNvbG9yU3BhY2U6OlJhbmdl SUQ6OkRFUklWRUQsCistICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lv bil9fSk7CisrICAgICAgICAgIFJhbmdlVmVyc2lvbntnZng6OkNvbG9yU3BhY2U6OlJhbmdlSUQ6 OkRFUklWRUQsCisrICAgICAgICAgICAgICAgICAgICAgICBrRGVmYXVsdFNpbmNlVmVyc2lvbn19 fSk7CisgCisgemNyX2NvbG9yX21hbmFnZXJfdjFfY2hyb21hdGljaXR5X25hbWVzIFRvQ29sb3JN YW5hZ2VyQ2hyb21hdGljaXR5KAorICAgICBnZng6OkNvbG9yU3BhY2U6OlByaW1hcnlJRCBwcmlt YXJ5SUQsCitAQCAtMjgzLDQgKzI4Myw0IEBAIHpjcl9jb2xvcl9tYW5hZ2VyX3YxX2VvdGZfbmFt ZXMgVG9Db2xvck0KKyAKKyB9ICAvLyBuYW1lc3BhY2UgdWk6OndheWxhbmQKKyAKKy0jZW5kaWYg IC8vIFVJX0JBU0VfV0FZTEFORF9DT0xPUl9NQU5BR0VSX1VUSUxfSF8KK1wgS2VpbiBaZWlsZW51 bWJydWNoIGFtIERhdGVpZW5kZS4KKysjZW5kaWYgIC8vIFVJX0JBU0VfV0FZTEFORF9DT0xPUl9N QU5BR0VSX1VUSUxfSF8KK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdWkvZ3RrL2d0 a191aS5jYy50aGFuIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdWkvZ3RrL2d0a191aS5jYworLS0t IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdWkvZ3RrL2d0a191aS5jYy50aGFuCTIwMjQtMDItMjIg MjI6NDQ6MTMuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS91aS9n dGsvZ3RrX3VpLmNjCTIwMjQtMDItMjQgMTM6MTM6NDQuMTUzNzEyNjY3ICswMTAwCitAQCAtMTAw NywxMSArMTAwNywxMSBAQCB1aTo6RGlzcGxheUNvbmZpZyBHdGtVaTo6R2V0RGlzcGxheUNvbmZp CisgICAgIEdka1JlY3RhbmdsZSBnZW9tZXRyeTsKKyAgICAgZ2RrX21vbml0b3JfZ2V0X2dlb21l dHJ5KG1vbml0b3IsICZnZW9tZXRyeSk7CisgICAgIGludCBtb25pdG9yX3NjYWxlID0gc3RkOjpt YXgoMSwgZ2RrX21vbml0b3JfZ2V0X3NjYWxlX2ZhY3Rvcihtb25pdG9yKSk7CistICAgIGNvbmZp Zy5kaXNwbGF5X2dlb21ldHJpZXMuZW1wbGFjZV9iYWNrKAorKyAgICBjb25maWcuZGlzcGxheV9n ZW9tZXRyaWVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICAgZ2Z4OjpSZWN0KG1vbml0b3Jf c2NhbGUgKiBnZW9tZXRyeS54LCBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkueSwKKyAgICAgICAg ICAgICAgICAgICBtb25pdG9yX3NjYWxlICogZ2VvbWV0cnkud2lkdGgsCisgICAgICAgICAgICAg ICAgICAgbW9uaXRvcl9zY2FsZSAqIGdlb21ldHJ5LmhlaWdodCksCistICAgICAgICBtb25pdG9y X3NjYWxlICogZm9udF9zY2FsZSk7CisrICAgICAgICBzdGF0aWNfY2FzdDxmbG9hdD4obW9uaXRv cl9zY2FsZSAqIGZvbnRfc2NhbGUpfTsKKyAgIH0KKyAgIHJldHVybiBjb25maWc7CisgfQorZGlm ZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL21lbW9yeV9wcmVzc3VyZS91 bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b21wb25lbnRzL21lbW9yeV9wcmVzc3VyZS91bm5lY2Vzc2FyeV9kaXNjYXJkX21vbml0b3IuY2MK Ky0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvbWVtb3J5X3ByZXNzdXJlL3Vu bmVjZXNzYXJ5X2Rpc2NhcmRfbW9uaXRvci5jYy5tZQkyMDI0LTAyLTI0IDE4OjA2OjQ2LjUwOTM5 MzAzMiArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9tZW1vcnlf cHJlc3N1cmUvdW5uZWNlc3NhcnlfZGlzY2FyZF9tb25pdG9yLmNjCTIwMjQtMDItMjQgMTg6MDc6 MTEuMjU4OTQ4MjQxICswMTAwCitAQCAtOTIsOCArOTIsOCBAQCB2b2lkIFVubmVjZXNzYXJ5RGlz Y2FyZE1vbml0b3I6Ok9uRGlzY2FyCisgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNF KHNlcXVlbmNlX2NoZWNrZXJfKTsKKyAgIGlmIChjdXJyZW50X3JlY2xhaW1fZXZlbnRfKSB7Cisg ICAgIC8vIENhY2hlIHRoaXMga2lsbCBldmVudCBhbG9uZyB3aXRoIHRoZSB0aW1lIGl0IHRvb2sg cGxhY2UuCistICAgIGN1cnJlbnRfcmVjbGFpbV9ldmVudF9raWxsc18uZW1wbGFjZV9iYWNrKG1l bW9yeV9mcmVlZF9rYiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgZGlzY2FyZF9jb21wbGV0ZV90aW1lKTsKKysgICAgY3VycmVudF9yZWNsYWltX2V2ZW50 X2tpbGxzXy5lbXBsYWNlX2JhY2soKSA9IHttZW1vcnlfZnJlZWRfa2IsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRpc2NhcmRfY29tcGxldGVfdGltZX07 CisgICB9CisgfQorIAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRz L2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9hZGRyZXNzX2F1dG9maWxs X3RhYmxlLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9j b3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRvZmlsbF90YWJsZS5jYwor LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dz ZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVzc19hdXRvZmlsbF90YWJsZS5jYy5tZQkyMDI0LTAy LTI0IDE5OjU4OjA5LjkyOTM3MTc5MSArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y29tcG9uZW50cy9hdXRvZmlsbC9jb3JlL2Jyb3dzZXIvd2ViZGF0YS9hZGRyZXNzZXMvYWRkcmVz c19hdXRvZmlsbF90YWJsZS5jYwkyMDI0LTAyLTI0IDE5OjU5OjA3LjE0OTUyNDg2MiArMDEwMAor QEAgLTYzMSwxMCArNjMxLDEwIEBAIHN0ZDo6dW5pcXVlX3B0cjxBdXRvZmlsbFByb2ZpbGU+IEFk ZHJlc3MKKyAgICAgfQorIAorICAgICBiYXNlOjpzcGFuPGNvbnN0IHVpbnQ4X3Q+IG9ic2VydmF0 aW9uc19kYXRhID0gcy5Db2x1bW5CbG9iKDMpOworLSAgICBmaWVsZF90eXBlX3ZhbHVlcy5lbXBs YWNlX2JhY2soCisrICAgIGZpZWxkX3R5cGVfdmFsdWVzLmVtcGxhY2VfYmFjaygpID0geworICAg ICAgICAgdHlwZSwgcy5Db2x1bW5TdHJpbmcxNigxKSwgcy5Db2x1bW5JbnQoMiksCisgICAgICAg ICBzdGQ6OnZlY3Rvcjx1aW50OF90PihvYnNlcnZhdGlvbnNfZGF0YS5iZWdpbigpLAorLSAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgb2JzZXJ2YXRpb25zX2RhdGEuZW5kKCkpKTsKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgIG9ic2VydmF0aW9uc19kYXRhLmVuZCgpKX07CisgCisg ICAgIGlmICh0eXBlID09IEFERFJFU1NfSE9NRV9DT1VOVFJZKSB7CisgICAgICAgY291bnRyeV9j b2RlID0gYmFzZTo6VVRGMTZUb1VURjgocy5Db2x1bW5TdHJpbmcxNigxKSk7CitkaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvYXV0b2ZpbGwvY29yZS9icm93c2VyL3dl YmRhdGEvYWRkcmVzc2VzL2NvbnRhY3RfaW5mb19zeW5jX3V0aWwuY2MubWUgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJl c3Nlcy9jb250YWN0X2luZm9fc3luY191dGlsLmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUvYnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9jb250 YWN0X2luZm9fc3luY191dGlsLmNjLm1lCTIwMjQtMDItMjQgMTk6NTI6MDIuMTczNjgyMDYwICsw MTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL2F1dG9maWxsL2NvcmUv YnJvd3Nlci93ZWJkYXRhL2FkZHJlc3Nlcy9jb250YWN0X2luZm9fc3luY191dGlsLmNjCTIwMjQt MDItMjQgMTk6NTI6MjUuMjQ3MjE2MzI5ICswMTAwCitAQCAtMTkyLDkgKzE5Miw5IEBAIGNsYXNz IENvbnRhY3RJbmZvUHJvZmlsZVNldHRlciB7CisgICAgICAgQ0hFQ0sob2JzZXJ2YXRpb25zLmVt cHR5KCkpOworICAgICAgIGZvciAoY29uc3Qgc3luY19wYjo6Q29udGFjdEluZm9TcGVjaWZpY3M6 Ok9ic2VydmF0aW9uJiBwcm90b19vYnNlcnZhdGlvbiA6CisgICAgICAgICAgICBtZXRhZGF0YS5v YnNlcnZhdGlvbnMoKSkgeworLSAgICAgICAgb2JzZXJ2YXRpb25zLmVtcGxhY2VfYmFjayhwcm90 b19vYnNlcnZhdGlvbi50eXBlKCksCisrICAgICAgICBvYnNlcnZhdGlvbnMuZW1wbGFjZV9iYWNr KCkgPSB7cHJvdG9fb2JzZXJ2YXRpb24udHlwZSgpLAorICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBQcm9maWxlVG9rZW5RdWFsaXR5OjpGb3JtU2lnbmF0dXJlSGFzaCgKKy0gICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3RvX29ic2VydmF0aW9uLmZvcm1f aGFzaCgpKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwcm90b19v YnNlcnZhdGlvbi5mb3JtX2hhc2goKSl9OworICAgICAgIH0KKyAgICAgfQorICAgfQorZGlmZiAt dXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIvZmVuY2VkX2ZyYW1lL2Zl bmNlZF9mcmFtZV9jb25maWcuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jy b3dzZXIvZmVuY2VkX2ZyYW1lL2ZlbmNlZF9mcmFtZV9jb25maWcuY2MKKy0tLSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9mZW5jZWRfZnJhbWUvZmVuY2VkX2ZyYW1lX2Nv bmZpZy5jYy5tZQkyMDI0LTAyLTI1IDAwOjE0OjI2LjgzMDMyMzM2NSArMDEwMAorKysrIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ZlbmNlZF9mcmFtZS9mZW5jZWRfZnJh bWVfY29uZmlnLmNjCTIwMjQtMDItMjUgMDA6MTU6MTcuOTM5MjQxMDkxICswMTAwCitAQCAtNDAy LDcgKzQwMiw3IEBAIHZvaWQgRmVuY2VkRnJhbWVQcm9wZXJ0aWVzOjpVcGRhdGVQYXJlbnQKKyAg ICAgICAgIGZlYXR1cmUsIGFsbG93X2xpc3QuQWxsb3dlZE9yaWdpbnMoKSwgYWxsb3dfbGlzdC5T ZWxmSWZNYXRjaGVzKCksCisgICAgICAgICBhbGxvd19saXN0Lk1hdGNoZXNBbGwoKSwgYWxsb3df bGlzdC5NYXRjaGVzT3BhcXVlU3JjKCkpOworICAgfQorLSAgcGFyZW50X3Blcm1pc3Npb25zX2lu Zm9fLmVtcGxhY2UocGFyc2VkX3BvbGljaWVzLCBwYXJlbnRfb3JpZ2luKTsKKysgIHBhcmVudF9w ZXJtaXNzaW9uc19pbmZvXy5lbXBsYWNlKCkgPSB7cGFyc2VkX3BvbGljaWVzLCBwYXJlbnRfb3Jp Z2lufTsKKyB9CisgCisgfSAgLy8gbmFtZXNwYWNlIGNvbnRlbnQKK2RpZmYgLXVwIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dy b3VwX3N0b3JhZ2UuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2Jyb3dzZXIv aW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfc3RvcmFnZS5jYworLS0tIGNocm9taXVtLTEy Mi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0X2dyb3Vw X3N0b3JhZ2UuY2MubWUJMjAyNC0wMi0yNSAwMDoxNzozMS43OTk2NDQ2OTEgKzAxMDAKKysrKyBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRl cmVzdF9ncm91cF9zdG9yYWdlLmNjCTIwMjQtMDItMjUgMDA6MTg6NTQuMTU3MTIzNTE5ICswMTAw CitAQCAtMzMzMiw5ICszMzMyLDkgQEAgc3RkOjpvcHRpb25hbDxEZWJ1Z1JlcG9ydENvb2xkb3du PiBEb0dldAorICAgICByZXR1cm4gc3RkOjpudWxsb3B0OworICAgfQorIAorLSAgcmV0dXJuIERl YnVnUmVwb3J0Q29vbGRvd24oY29vbGRvd25fZGVidWdnaW5nX29ubHlfcmVwb3J0LkNvbHVtblRp bWUoMCksCisrICByZXR1cm4gRGVidWdSZXBvcnRDb29sZG93bntjb29sZG93bl9kZWJ1Z2dpbmdf b25seV9yZXBvcnQuQ29sdW1uVGltZSgwKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IHN0YXRpY19jYXN0PERlYnVnUmVwb3J0Q29vbGRvd25UeXBlPigKKy0gICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICBjb29sZG93bl9kZWJ1Z2dpbmdfb25seV9yZXBvcnQuQ29sdW1uSW50 KDEpKSk7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29vbGRvd25fZGVidWdn aW5nX29ubHlfcmVwb3J0LkNvbHVtbkludCgxKSl9OworIH0KKyAKKyB2b2lkIERvR2V0RGVidWdS ZXBvcnRDb29sZG93bnMoCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQv YnJvd3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNjLm1lIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9icm93c2VyL2ludGVyZXN0X2dyb3VwL2ludGVyZXN0 X2dyb3VwX2F1Y3Rpb24uY2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvYnJv d3Nlci9pbnRlcmVzdF9ncm91cC9pbnRlcmVzdF9ncm91cF9hdWN0aW9uLmNjLm1lCTIwMjQtMDIt MjUgMDA6MjA6MzMuNTM1OTA3OTgxICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b250ZW50L2Jyb3dzZXIvaW50ZXJlc3RfZ3JvdXAvaW50ZXJlc3RfZ3JvdXBfYXVjdGlvbi5jYwky MDI0LTAyLTI1IDAwOjIxOjAxLjA4MjQwMjYxMCArMDEwMAorQEAgLTUwMSw3ICs1MDEsNyBAQCBi b29sIFNhbXBsZURlYnVnUmVwb3J0KAorICAgICAgICAgICA/IERlYnVnUmVwb3J0Q29vbGRvd25U eXBlOjprU2hvcnRDb29sZG93bgorICAgICAgICAgICA6IERlYnVnUmVwb3J0Q29vbGRvd25UeXBl OjprUmVzdHJpY3RlZENvb2xkb3duOworICAgbmV3X2RlYnVnX3JlcG9ydF9sb2Nrb3V0X2FuZF9j b29sZG93bnMuZGVidWdfcmVwb3J0X2Nvb2xkb3duX21hcFtvcmlnaW5dID0KKy0gICAgICBEZWJ1 Z1JlcG9ydENvb2xkb3duKG5vdywgY29vbGRvd25fdHlwZSk7CisrICAgICAgRGVidWdSZXBvcnRD b29sZG93bntub3csIGNvb2xkb3duX3R5cGV9OworICAgYmFzZTo6VW1hSGlzdG9ncmFtRW51bWVy YXRpb24oCisgICAgICAgIkFkcy5JbnRlcmVzdEdyb3VwLkF1Y3Rpb24uRm9yRGVidWdnaW5nT25s eUNvb2xkb3duVHlwZSIsIGNvb2xkb3duX3R5cGUpOworIAorZGlmZiAtdXAgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0aW9u X3NlcnZpY2UuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3Nh ZmV0eV9odWIvbWVudV9ub3RpZmljYXRpb25fc2VydmljZS5oCistLS0gY2hyb21pdW0tMTIyLjAu NjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS9zYWZldHlfaHViL21lbnVfbm90aWZpY2F0aW9uX3Nl cnZpY2UuaC5tZQkyMDI0LTAyLTI1IDE1OjM0OjE2LjE0MDc2ODQ0NSArMDEwMAorKysrIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvc2FmZXR5X2h1Yi9tZW51X25vdGlm aWNhdGlvbl9zZXJ2aWNlLmgJMjAyNC0wMi0yNSAxNTozNzo0Ny43ODk2NjU4MzUgKzAxMDAKK0BA IC0yNCw2ICsyNCw3IEBAIHN0cnVjdCBNZW51Tm90aWZpY2F0aW9uRW50cnkgeworICAgaW50IGNv bW1hbmQgPSAwOworICAgc3RkOjp1MTZzdHJpbmcgbGFiZWw7CisgICBzYWZldHlfaHViOjpTYWZl dHlIdWJNb2R1bGVUeXBlIG1vZHVsZTsKKysgIE1lbnVOb3RpZmljYXRpb25FbnRyeShhdXRvIGMs IGF1dG8gbCwgYXV0byBtKSA6IGNvbW1hbmQoYyksIGxhYmVsKGwpLCBtb2R1bGUobSkgeyB9Cisg fTsKKyAKKyBuYW1lc3BhY2UgeworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJv bWUvYnJvd3Nlci91aS92aWV3cy90YWJzL3RhYl9zdHlsZV92aWV3cy5jYy5tZSBjaHJvbWl1bS0x MjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3RhYnMvdGFiX3N0eWxlX3ZpZXdz LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90 YWJzL3RhYl9zdHlsZV92aWV3cy5jYy5tZQkyMDI0LTAyLTI1IDE2OjIyOjQ2LjYwMTIwOTI2OSAr MDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvdWkvdmlld3Mv dGFicy90YWJfc3R5bGVfdmlld3MuY2MJMjAyNC0wMi0yNSAxNjoyNDo0OC4xMTA2MTg0NzUgKzAx MDAKK0BAIC0xMjE0LDEwICsxMjE0LDEwIEBAIFNrUGF0aCBDaHJvbWVSZWZyZXNoMjAyM1RhYlN0 eWxlVmlld3M6OkcKKyAKKyAgICAgLy8gUmFkaWkgYXJlIGNsb2Nrd2lzZSBmcm9tIHRvcCBsZWZ0 LgorICAgICBjb25zdCBTa1ZlY3RvciByYWRpaVs0XSA9IHsKKy0gICAgICAgIFNrVmVjdG9yKHRv cF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMpLAorLSAg ICAgICAgU2tWZWN0b3IodG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1cywgdG9wX2NvbnRlbnRfY29y bmVyX3JhZGl1cyksCistICAgICAgICBTa1ZlY3Rvcihib3R0b21fY29udGVudF9jb3JuZXJfcmFk aXVzLCBib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzKSwKKy0gICAgICAgIFNrVmVjdG9yKGJv dHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMp fTsKKysgICAgICAgIFNrVmVjdG9ye3RvcF9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIHRvcF9jb250 ZW50X2Nvcm5lcl9yYWRpdXN9LAorKyAgICAgICAgU2tWZWN0b3J7dG9wX2NvbnRlbnRfY29ybmVy X3JhZGl1cywgdG9wX2NvbnRlbnRfY29ybmVyX3JhZGl1c30sCisrICAgICAgICBTa1ZlY3Rvcnti b3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVzLCBib3R0b21fY29udGVudF9jb3JuZXJfcmFkaXVz fSwKKysgICAgICAgIFNrVmVjdG9ye2JvdHRvbV9jb250ZW50X2Nvcm5lcl9yYWRpdXMsIGJvdHRv bV9jb250ZW50X2Nvcm5lcl9yYWRpdXN9fTsKKyAgICAgU2tSUmVjdCBycmVjdDsKKyAgICAgcnJl Y3Quc2V0UmVjdFJhZGlpKFNrUmVjdDo6TWFrZUxUUkIobGVmdCwgdG9wLCByaWdodCwgYm90dG9t KSwgcmFkaWkpOworICAgICBTa1BhdGggcGF0aDsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYy NjEuNjkvY2hyb21lL2Jyb3dzZXIvZmlsZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3Rl bV9hY2Nlc3NfcGVybWlzc2lvbl9jb250ZXh0LmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv Y2hyb21lL2Jyb3dzZXIvZmlsZV9zeXN0ZW1fYWNjZXNzL2Nocm9tZV9maWxlX3N5c3RlbV9hY2Nl c3NfcGVybWlzc2lvbl9jb250ZXh0LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJv bWUvYnJvd3Nlci9maWxlX3N5c3RlbV9hY2Nlc3MvY2hyb21lX2ZpbGVfc3lzdGVtX2FjY2Vzc19w ZXJtaXNzaW9uX2NvbnRleHQuY2MubWUJMjAyNC0wMi0yNSAxODo0OTozMi41MTIwODAwODUgKzAx MDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL2ZpbGVfc3lzdGVt X2FjY2Vzcy9jaHJvbWVfZmlsZV9zeXN0ZW1fYWNjZXNzX3Blcm1pc3Npb25fY29udGV4dC5jYwky MDI0LTAyLTI1IDE5OjA3OjM2LjUxODcxMTY5MyArMDEwMAorQEAgLTM4Niw3ICszODYsNyBAQCBi b29sIFNob3VsZEJsb2NrQWNjZXNzVG9QYXRoKGNvbnN0IGJhc2U6CisgICAgICAgRENIRUNLKGJs b2NrLnBhdGgpOworICAgICAgIGJsb2NrZWRfcGF0aCA9IGJhc2U6OkZpbGVQYXRoKGJsb2NrLnBh dGgpOworICAgICB9CistICAgIHJ1bGVzLmVtcGxhY2VfYmFjayhibG9ja2VkX3BhdGgsIGJsb2Nr LnR5cGUpOworKyAgICBydWxlcy5lbXBsYWNlX2JhY2soKSA9IHtibG9ja2VkX3BhdGgsIGJsb2Nr LnR5cGV9OworICAgfQorIAorICAgYmFzZTo6RmlsZVBhdGggbmVhcmVzdF9hbmNlc3RvcjsKK0BA IC0xNTc1LDExICsxNTc1LDExIEBAIHZvaWQgQ2hyb21lRmlsZVN5c3RlbUFjY2Vzc1Blcm1pc3Np b25Db24KKyAgIC8vIHByb2ZpbGUncyBkaXJlY3RvcnksIGFzc3VtaW5nIHRoZSBwcm9maWxlIGRp ciBpcyBhIGNoaWxkIG9mIHRoZSB1c2VyIGRhdGEKKyAgIC8vIGRpci4KKyAgIHN0ZDo6dmVjdG9y PEJsb2NrUGF0aFJ1bGU+IGV4dHJhX3J1bGVzOworLSAgZXh0cmFfcnVsZXMuZW1wbGFjZV9iYWNr KHByb2ZpbGVfLT5HZXRQYXRoKCkuRGlyTmFtZSgpLCBrQmxvY2tBbGxDaGlsZHJlbik7CisrICBl eHRyYV9ydWxlcy5lbXBsYWNlX2JhY2soKSA9IHtwcm9maWxlXy0+R2V0UGF0aCgpLkRpck5hbWUo KSwga0Jsb2NrQWxsQ2hpbGRyZW59OworICAgaWYgKGdfYnJvd3Nlcl9wcm9jZXNzLT5wcm9maWxl X21hbmFnZXIoKSkgeworLSAgICBleHRyYV9ydWxlcy5lbXBsYWNlX2JhY2soCisrICAgIGV4dHJh X3J1bGVzLmVtcGxhY2VfYmFjaygpID0geworICAgICAgICAgZ19icm93c2VyX3Byb2Nlc3MtPnBy b2ZpbGVfbWFuYWdlcigpLT51c2VyX2RhdGFfZGlyKCksCistICAgICAgICBrQmxvY2tBbGxDaGls ZHJlbik7CisrICAgICAgICBrQmxvY2tBbGxDaGlsZHJlbn07CisgICB9CisgCisgICBiYXNlOjpU aHJlYWRQb29sOjpQb3N0VGFza0FuZFJlcGx5V2l0aFJlc3VsdCgKK2RpZmYgLXVwIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdlci9tZWNoYW5p c21zL3BhZ2VfZGlzY2FyZGVyLmNjLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvcGVyZm9ybWFuY2VfbWFuYWdlci9tZWNoYW5pc21zL3BhZ2VfZGlzY2FyZGVyLmNjCist LS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9wZXJmb3JtYW5jZV9tYW5h Z2VyL21lY2hhbmlzbXMvcGFnZV9kaXNjYXJkZXIuY2MubWUJMjAyNC0wMi0yNSAxOToxNDoxNi4y Mjc4NDMxNDggKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2Vy L3BlcmZvcm1hbmNlX21hbmFnZXIvbWVjaGFuaXNtcy9wYWdlX2Rpc2NhcmRlci5jYwkyMDI0LTAy LTI1IDE5OjE1OjA0LjU4OTMwNzQ2OCArMDEwMAorQEAgLTUzLDcgKzUzLDcgQEAgc3RkOjp2ZWN0 b3I8UGFnZURpc2NhcmRlcjo6RGlzY2FyZEV2ZW50PgorICAgICBpZiAobGlmZWN5Y2xlX3VuaXQt PkRpc2NhcmRUYWIoCisgICAgICAgICAgICAgZGlzY2FyZF9yZWFzb24sCisgICAgICAgICAgICAg LyptZW1vcnlfZm9vdHByaW50X2VzdGltYXRlPSovcHJveHkuc2Vjb25kKSkgeworLSAgICAgIGRp c2NhcmRfZXZlbnRzLmVtcGxhY2VfYmFjayhiYXNlOjpUaW1lVGlja3M6Ok5vdygpLCBwcm94eS5z ZWNvbmQpOworKyAgICAgIGRpc2NhcmRfZXZlbnRzLmVtcGxhY2VfYmFjaygpID0ge2Jhc2U6OlRp bWVUaWNrczo6Tm93KCksIHByb3h5LnNlY29uZH07CisgICAgIH0KKyAgIH0KKyAgIHJldHVybiBk aXNjYXJkX2V2ZW50czsKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvZXh0ZW5zaW9u cy9icm93c2VyL3NlcnZpY2Vfd29ya2VyX3Rhc2tfcXVldWUuaC5tZSBjaHJvbWl1bS0xMjIuMC42 MjYxLjY5L2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtlcl90YXNrX3F1ZXVlLmgKKy0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtl cl90YXNrX3F1ZXVlLmgubWUJMjAyNC0wMi0yNSAxNzoyNjoyNS42MjM1NzI0NTggKzAxMDAKKysr KyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2V4dGVuc2lvbnMvYnJvd3Nlci9zZXJ2aWNlX3dvcmtl cl90YXNrX3F1ZXVlLmgJMjAyNC0wMi0yNSAxNzoyOTo1Mi45ODMzNDUyODAgKzAxMDAKK0BAIC0y MDQsNiArMjA0LDcgQEAgY2xhc3MgU2VydmljZVdvcmtlclRhc2tRdWV1ZSA6IHB1YmxpYyBLZQor ICAgICByYXdfcHRyPGNvbnRlbnQ6OkJyb3dzZXJDb250ZXh0PiBicm93c2VyX2NvbnRleHQ7Cisg ICAgIGJhc2U6OlVuZ3Vlc3NhYmxlVG9rZW4gdG9rZW47CisgCisrICAgIFNlcXVlbmNlZENvbnRl eHRJZChhdXRvIGUsIGF1dG8gYiwgYXV0byB0KSA6IGV4dGVuc2lvbl9pZChlKSwgYnJvd3Nlcl9j b250ZXh0KGIpLCB0b2tlbih0KSB7IH0KKyAgICAgYm9vbCBvcGVyYXRvcjwoY29uc3QgU2VxdWVu Y2VkQ29udGV4dElkJiByaHMpIGNvbnN0IHsKKyAgICAgICByZXR1cm4gc3RkOjp0aWUoZXh0ZW5z aW9uX2lkLCBicm93c2VyX2NvbnRleHQsIHRva2VuKSA8CisgICAgICAgICAgICAgIHN0ZDo6dGll KHJocy5leHRlbnNpb25faWQsIHJocy5icm93c2VyX2NvbnRleHQsIHJocy50b2tlbik7CitkaWZm IC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3JlbmRlcmVyX2NvbnRl eHRfbWVudS9yZW5kZXJfdmlld19jb250ZXh0X21lbnUuY2MubWUgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29u dGV4dF9tZW51LmNjCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9y ZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4dF9tZW51LmNjLm1lCTIwMjQt MDItMjUgMjA6MDU6NDAuNTY3ODkxMDc3ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci9yZW5kZXJlcl9jb250ZXh0X21lbnUvcmVuZGVyX3ZpZXdfY29udGV4 dF9tZW51LmNjCTIwMjQtMDItMjUgMjA6MDU6NDYuNDA3MDAxOTk3ICswMTAwCitAQCAtMzk5Mywx MCArMzk5MywxMCBAQCB2b2lkIFJlbmRlclZpZXdDb250ZXh0TWVudTo6RXhlY09wZW5Db21wCisg ICAgIGF1dG9maWxsOjpMb2NhbEZyYW1lVG9rZW4gZnJhbWVfdG9rZW4gPSBkcml2ZXItPkdldEZy YW1lVG9rZW4oKTsKKyAgICAgY2xpZW50LT5HZXRNYW5hZ2VyKCkuT3BlbkNvbXBvc2UoCisgICAg ICAgICAqZHJpdmVyLAorLSAgICAgICAgYXV0b2ZpbGw6OkZvcm1HbG9iYWxJZCgKKy0gICAgICAg ICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZvcm1SZW5kZXJlcklkKHBhcmFtc18uZm9ybV9y ZW5kZXJlcl9pZCkpLAorLSAgICAgICAgYXV0b2ZpbGw6OkZpZWxkR2xvYmFsSWQoCistICAgICAg ICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5maWVs ZF9yZW5kZXJlcl9pZCkpLAorKyAgICAgICAgYXV0b2ZpbGw6OkZvcm1HbG9iYWxJZHsKKysgICAg ICAgICAgICBmcmFtZV90b2tlbiwgYXV0b2ZpbGw6OkZvcm1SZW5kZXJlcklkKHBhcmFtc18uZm9y bV9yZW5kZXJlcl9pZCl9LAorKyAgICAgICAgYXV0b2ZpbGw6OkZpZWxkR2xvYmFsSWR7CisrICAg ICAgICAgICAgZnJhbWVfdG9rZW4sIGF1dG9maWxsOjpGaWVsZFJlbmRlcmVySWQocGFyYW1zXy5m aWVsZF9yZW5kZXJlcl9pZCl9LAorICAgICAgICAgY29tcG9zZTo6Q29tcG9zZU1hbmFnZXJJbXBs OjpVaUVudHJ5UG9pbnQ6OmtDb250ZXh0TWVudSk7CisgICAgIG5ld19iYWRnZV90cmFja2VyXy5B Y3Rpb25QZXJmb3JtZWQoImNvbXBvc2VfbWVudV9pdGVtX2FjdGl2YXRlZCIpOworICAgfSBlbHNl IHsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjItdHlwZW5hbWUucGF0Y2ggYi9jaHJvbWl1bS0x MjItdHlwZW5hbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWZj ODA3OQotLS0gL2Rldi9udWxsCisrKyBiL2Nocm9taXVtLTEyMi10eXBlbmFtZS5wYXRjaApAQCAt MCwwICsxLDM4NSBAQAorCitmaXhlZCBlcnJvcjogbWlzc2luZyAndHlwZW5hbWUnIHByaW9yIHRv IGRlcGVuZGVudCB0eXBlIG5hbWUKKworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9i YXNlL2NvbnRhaW5lcnMvbWFwX3V0aWwuaC50eXBlbmFtZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5 L2Jhc2UvY29udGFpbmVycy9tYXBfdXRpbC5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9i YXNlL2NvbnRhaW5lcnMvbWFwX3V0aWwuaC50eXBlbmFtZQkyMDI0LTAyLTIyIDIyOjQyOjQzLjAw MDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9jb250YWluZXJz L21hcF91dGlsLmgJMjAyNC0wMi0yNCAxNTowNTowMC44ODI1OTI3MDUgKzAxMDAKK0BAIC00Miw3 ICs0Miw3IEBAIGNvbnN0ZXhwciBpbnRlcm5hbDo6TWFwcGVkVHlwZTxNYXA+KiBGaW4KKyB0ZW1w bGF0ZSA8dHlwZW5hbWUgTWFwLAorICAgICAgICAgICB0eXBlbmFtZSBLZXksCisgICAgICAgICAg IHR5cGVuYW1lIE1hcHBlZEVsZW1lbnRUeXBlID0KKy0gICAgICAgICAgICAgIHN0ZDo6cG9pbnRl cl90cmFpdHM8aW50ZXJuYWw6Ok1hcHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4KKysgICAg ICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1hcHBlZFR5 cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4KKyBjb25zdGV4cHIgY29uc3QgTWFwcGVkRWxlbWVudFR5 cGUqIEZpbmRQdHJPck51bGwoY29uc3QgTWFwJiBtYXAsCisgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEtleSYga2V5KSB7CisgICBhdXRvIGl0 ID0gbWFwLmZpbmQoa2V5KTsKK0BAIC01OCw3ICs1OCw3IEBAIGNvbnN0ZXhwciBjb25zdCBNYXBw ZWRFbGVtZW50VHlwZSogRmluZFAKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgTWFwLAorICAgICAgICAg ICB0eXBlbmFtZSBLZXksCisgICAgICAgICAgIHR5cGVuYW1lIE1hcHBlZEVsZW1lbnRUeXBlID0K Ky0gICAgICAgICAgICAgIHN0ZDo6cG9pbnRlcl90cmFpdHM8aW50ZXJuYWw6Ok1hcHBlZFR5cGU8 TWFwPj46OmVsZW1lbnRfdHlwZT4KKysgICAgICAgICAgICAgIHR5cGVuYW1lIHN0ZDo6cG9pbnRl cl90cmFpdHM8aW50ZXJuYWw6Ok1hcHBlZFR5cGU8TWFwPj46OmVsZW1lbnRfdHlwZT4KKyBjb25z dGV4cHIgTWFwcGVkRWxlbWVudFR5cGUqIEZpbmRQdHJPck51bGwoTWFwJiBtYXAsIGNvbnN0IEtl eSYga2V5KSB7CisgICBhdXRvIGl0ID0gbWFwLmZpbmQoa2V5KTsKKyAgIHJldHVybiBpdCAhPSBt YXAuZW5kKCkgPyBzdGQ6OnRvX2FkZHJlc3MoaXQtPnNlY29uZCkgOiBudWxscHRyOworZGlmZiAt dXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2Z1bmN0aW9uYWwvYmluZF9pbnRlcm5hbC5o LnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9mdW5jdGlvbmFsL2JpbmRfaW50 ZXJuYWwuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9mdW5jdGlvbmFsL2JpbmRf aW50ZXJuYWwuaC50eXBlbmFtZQkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4MzU5MjcyNCArMDEwMAor KysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9mdW5jdGlvbmFsL2JpbmRfaW50ZXJuYWwu aAkyMDI0LTAyLTI0IDE1OjEzOjQ5Ljc1NTIyMzUzMyArMDEwMAorQEAgLTE0MDAsMTEgKzE0MDAs MTEgQEAgdGVtcGxhdGUgPGludCBpLAorICAgICAgICAgICB0eXBlbmFtZSBQYXJhbT4KKyBzdHJ1 Y3QgUGFyYW1DYW5CZUJvdW5kIHsKKyAgcHJpdmF0ZToKKy0gIHVzaW5nIFVud3JhcHBlZFBhcmFt ID0gQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBGb3J3YXJkZWRBczwKKysgIHVzaW5nIFVud3Jh cHBlZFBhcmFtID0gdHlwZW5hbWUgQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBGb3J3YXJkZWRB czwKKyAgICAgICBVbndyYXBwZWQ+Ojp0ZW1wbGF0ZSBUb1BhcmFtV2l0aFR5cGU8UGFyYW0+Owor LSAgdXNpbmcgUGFyYW1TdG9yYWdlID0gQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBUb1BhcmFt V2l0aFR5cGU8CisrICB1c2luZyBQYXJhbVN0b3JhZ2UgPSB0eXBlbmFtZSBCaW5kQXJndW1lbnQ8 aT46OnRlbXBsYXRlIFRvUGFyYW1XaXRoVHlwZTwKKyAgICAgICBQYXJhbT46OnRlbXBsYXRlIFN0 b3JlZEFzPFN0b3JhZ2U+OworLSAgdXNpbmcgQm91bmRTdG9yYWdlID0KKysgIHVzaW5nIEJvdW5k U3RvcmFnZSA9IHR5cGVuYW1lCisgICAgICAgQmluZEFyZ3VtZW50PGk+Ojp0ZW1wbGF0ZSBCb3Vu ZEFzPEFyZz46OnRlbXBsYXRlIFN0b3JlZEFzPFN0b3JhZ2U+OworIAorICAgdGVtcGxhdGUgPGJv b2wgdiA9ICFVbndyYXBwZWRQYXJhbTo6a1Jhd1B0ciB8fAorZGlmZiAtdXAgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci9kb3dubG9hZC9idWJibGUvZG93bmxvYWRfYnViYmxl X3VwZGF0ZV9zZXJ2aWNlLmNjLnR5cGVuYW1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvZG93bmxvYWQvYnViYmxlL2Rvd25sb2FkX2J1YmJsZV91cGRhdGVfc2VydmljZS5j YworLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvZG93bmxvYWQvYnVi YmxlL2Rvd25sb2FkX2J1YmJsZV91cGRhdGVfc2VydmljZS5jYy50eXBlbmFtZQkyMDI0LTAyLTIy IDIyOjQyOjUwLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hy b21lL2Jyb3dzZXIvZG93bmxvYWQvYnViYmxlL2Rvd25sb2FkX2J1YmJsZV91cGRhdGVfc2Vydmlj ZS5jYwkyMDI0LTAyLTI0IDE1OjA1OjAwLjg4MjU5MjcwNSArMDEwMAorQEAgLTkwLDcgKzkwLDcg QEAgSXRlbVNvcnRLZXkgR2V0U29ydEtleShjb25zdCBJdGVtJiBpdGVtKQorIC8vIEhlbHBlciB0 byBnZXQgYW4gaXRlcmF0b3IgdG8gdGhlIGxhc3QgZWxlbWVudCBpbiB0aGUgY2FjaGUuIFRoZSBj YWNoZQorIC8vIG11c3Qgbm90IGJlIGVtcHR5LgorIHRlbXBsYXRlIDx0eXBlbmFtZSBJdGVtPgor LVNvcnRlZEl0ZW1zPEl0ZW0+Ojpjb25zdF9pdGVyYXRvciBHZXRMYXN0SXRlcihjb25zdCBTb3J0 ZWRJdGVtczxJdGVtPiYgY2FjaGUpIHsKKyt0eXBlbmFtZSBTb3J0ZWRJdGVtczxJdGVtPjo6Y29u c3RfaXRlcmF0b3IgR2V0TGFzdEl0ZXIoY29uc3QgU29ydGVkSXRlbXM8SXRlbT4mIGNhY2hlKSB7 CisgICBDSEVDSyghY2FjaGUuZW1wdHkoKSk7CisgICBhdXRvIGl0ID0gY2FjaGUuZW5kKCk7Cisg ICByZXR1cm4gc3RkOjpwcmV2KGl0KTsKK0BAIC0xMDkwLDkgKzEwOTAsOSBAQCBib29sIERvd25s b2FkQnViYmxlVXBkYXRlU2VydmljZTo6Q2FjaGVNCisgfQorIAorIHRlbXBsYXRlIDx0eXBlbmFt ZSBJZCwgdHlwZW5hbWUgSXRlbT4KKy1Tb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0b3IKKyt0eXBl bmFtZSBTb3J0ZWRJdGVtczxJdGVtPjo6aXRlcmF0b3IKKyBEb3dubG9hZEJ1YmJsZVVwZGF0ZVNl cnZpY2U6OkNhY2hlTWFuYWdlcjo6UmVtb3ZlSXRlbUZyb21DYWNoZUJ5SXRlcigKKy0gICAgU29y dGVkSXRlbXM8SXRlbT46Oml0ZXJhdG9yIGl0ZXIsCisrICAgIHR5cGVuYW1lIFNvcnRlZEl0ZW1z PEl0ZW0+OjppdGVyYXRvciBpdGVyLAorICAgICBTb3J0ZWRJdGVtczxJdGVtPiYgY2FjaGUsCisg ICAgIEl0ZXJNYXA8SWQsIEl0ZW0+JiBpdGVyX21hcCkgeworICAgQ0hFQ0soaXRlciAhPSBjYWNo ZS5lbmQoKSk7CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0 aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfZXhlY3V0aW9uL21vZGVsX2V4ZWN1dGlvbl91dGls LmgudHlwZW5hbWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlv bl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oCistLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3Jl L21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9leGVjdXRpb25fdXRpbC5oLnR5cGVuYW1lCTIwMjQtMDIt MjIgMjI6NDM6MDEuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9j b21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL21vZGVsX2V4ZWN1dGlvbi9tb2RlbF9l eGVjdXRpb25fdXRpbC5oCTIwMjQtMDItMjQgMTU6MDU6MDAuODg0NTkyNzQyICswMTAwCitAQCAt MjUsNyArMjUsNyBAQCB2b2lkIFNldEV4ZWN1dGlvblJlcXVlc3RUZW1wbGF0ZSgKKyAKKyAgIC8v IFJlcXVlc3QgaXMgc2V0IGJ5IHRoZSBmZWF0dXJlIGFuZCBzaG91bGQgYWx3YXlzIGJlIHR5cGVk LgorICAgYXV0byB0eXBlZF9yZXF1ZXN0ID0KKy0gICAgICBzdGF0aWNfY2FzdDxjb25zdCBGZWF0 dXJlVHlwZTo6UmVxdWVzdCY+KHJlcXVlc3RfbWV0YWRhdGEpOworKyAgICAgIHN0YXRpY19jYXN0 PGNvbnN0IHR5cGVuYW1lIEZlYXR1cmVUeXBlOjpSZXF1ZXN0Jj4ocmVxdWVzdF9tZXRhZGF0YSk7 CisgICAqKGxvZ2dpbmdfZGF0YS0+bXV0YWJsZV9yZXF1ZXN0X2RhdGEoKSkgPSB0eXBlZF9yZXF1 ZXN0OworIH0KKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9v cHRpbWl6YXRpb25fZ3VpZGUvY29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2Vu dHJ5LmgudHlwZW5hbWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXph dGlvbl9ndWlkZS9jb3JlL21vZGVsX3F1YWxpdHkvbW9kZWxfcXVhbGl0eV9sb2dfZW50cnkuaAor LS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9vcHRpbWl6YXRpb25fZ3VpZGUv Y29yZS9tb2RlbF9xdWFsaXR5L21vZGVsX3F1YWxpdHlfbG9nX2VudHJ5LmgudHlwZW5hbWUJMjAy NC0wMi0yMiAyMjo0MzowMS4wMDAwMDAwMDAgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2NvbXBvbmVudHMvb3B0aW1pemF0aW9uX2d1aWRlL2NvcmUvbW9kZWxfcXVhbGl0eS9tb2Rl bF9xdWFsaXR5X2xvZ19lbnRyeS5oCTIwMjQtMDItMjQgMTU6MDU6MDAuODg0NTkyNzQyICswMTAw CitAQCAtMjksNyArMjksNyBAQCBjbGFzcyBNb2RlbFF1YWxpdHlMb2dFbnRyeSB7CisgICB9Cisg CisgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgRmVhdHVyZVR5cGU+CistICBGZWF0dXJlVHlwZTo6UXVh bGl0eSogcXVhbGl0eV9kYXRhKCkgeworKyAgdHlwZW5hbWUgRmVhdHVyZVR5cGU6OlF1YWxpdHkq IHF1YWxpdHlfZGF0YSgpIHsKKyAgICAgcmV0dXJuIEZlYXR1cmVUeXBlOjpHZXRMb2dnaW5nRGF0 YSgqbG9nX2FpX2RhdGFfcmVxdWVzdF8pCisgICAgICAgICAtPm11dGFibGVfcXVhbGl0eV9kYXRh KCk7CisgICB9CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvb3B0 aW1pemF0aW9uX2d1aWRlL2NvcmUvdGZsaXRlX21vZGVsX2V4ZWN1dG9yLmgudHlwZW5hbWUgY2hy b21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL3Rm bGl0ZV9tb2RlbF9leGVjdXRvci5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25l bnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL3RmbGl0ZV9tb2RlbF9leGVjdXRvci5oLnR5cGVu YW1lCTIwMjQtMDItMjIgMjI6NDM6MDEuMDAwMDAwMDAwICswMTAwCisrKysgY2hyb21pdW0tMTIy LjAuNjI2MS42OS9jb21wb25lbnRzL29wdGltaXphdGlvbl9ndWlkZS9jb3JlL3RmbGl0ZV9tb2Rl bF9leGVjdXRvci5oCTIwMjQtMDItMjQgMTU6MDU6MDAuODgzNTkyNzI0ICswMTAwCitAQCAtMjQx LDcgKzI0MSw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0b3IgOiBwdWJsaWMgTW9kZWwKKyAg IHZvaWQgU2VuZEZvckJhdGNoRXhlY3V0aW9uKAorICAgICAgIEJhdGNoRXhlY3V0aW9uQ2FsbGJh Y2sgY2FsbGJhY2tfb25fY29tcGxldGUsCisgICAgICAgYmFzZTo6VGltZVRpY2tzIHN0YXJ0X3Rp bWUsCistICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJl ZklucHV0VmVjdG9yIGlucHV0cykKKysgICAgICB0eXBlbmFtZSBNb2RlbEV4ZWN1dG9yPE91dHB1 dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVmSW5wdXRWZWN0b3IgaW5wdXRzKQorICAgICAgIG92 ZXJyaWRlIHsKKyAgICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5lcl8tPlJ1bnNUYXNrc0lu Q3VycmVudFNlcXVlbmNlKCkpOworICAgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNF KHNlcXVlbmNlX2NoZWNrZXJfKTsKK0BAIC0yNjMsNyArMjYzLDcgQEAgY2xhc3MgVEZMaXRlTW9k ZWxFeGVjdXRvciA6IHB1YmxpYyBNb2RlbAorICAgLy8gU3RhcnRzIHRoZSBzeW5jaHJvbm91cyBl eGVjdXRpb24gb2YgdGhlIG1vZGVsLiBSZXR1cm5zIG1vZGVsIG91dHB1dHMuCisgICAvLyBNb2Rl bCBuZWVkcyB0byBiZSBsb2FkZWQuIFN5bmNocm9ub3VzIGNhbGxzIGRvIG5vdCBsb2FkIG9yIHVu bG9hZCBtb2RlbC4KKyAgIHN0ZDo6dmVjdG9yPGFic2w6Om9wdGlvbmFsPE91dHB1dFR5cGU+PiBT ZW5kRm9yQmF0Y2hFeGVjdXRpb25TeW5jKAorLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0cHV0VHlw ZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMpCisrICAgICAgdHlwZW5h bWUgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklucHV0VmVj dG9yIGlucHV0cykKKyAgICAgICBvdmVycmlkZSB7CisgICAgIERDSEVDSyhleGVjdXRpb25fdGFz a19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5jZSgpKTsKKyAgICAgRENIRUNLX0NB TExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2VyXyk7CitAQCAtNDIxLDcgKzQy MSw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0b3IgOiBwdWJsaWMgTW9kZWwKKyAgIC8vIGV4 ZWN1dGVzIGl0IG9uIHRoZSBtb2RlbCBleGVjdXRpb24gdGhyZWFkLgorICAgdm9pZCBMb2FkTW9k ZWxGaWxlQW5kQmF0Y2hFeGVjdXRlKAorICAgICAgIEJhdGNoRXhlY3V0aW9uQ2FsbGJhY2sgY2Fs bGJhY2tfb25fY29tcGxldGUsCistICAgICAgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1 dFR5cGU+OjpDb25zdFJlZklucHV0VmVjdG9yIGlucHV0cykgeworKyAgICAgIHR5cGVuYW1lIE1v ZGVsRXhlY3V0b3I8T3V0cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBp bnB1dHMpIHsKKyAgICAgRENIRUNLKGV4ZWN1dGlvbl90YXNrX3J1bm5lcl8tPlJ1bnNUYXNrc0lu Q3VycmVudFNlcXVlbmNlKCkpOworICAgICBEQ0hFQ0tfQ0FMTEVEX09OX1ZBTElEX1NFUVVFTkNF KHNlcXVlbmNlX2NoZWNrZXJfKTsKKyAKK0BAIC00MzgsNyArNDM4LDcgQEAgY2xhc3MgVEZMaXRl TW9kZWxFeGVjdXRvciA6IHB1YmxpYyBNb2RlbAorIAorICAgLy8gQmF0Y2ggZXhlY3V0ZXMgdGhl IGxvYWRlZCBtb2RlbCBmb3IgaW5wdXRzLgorICAgdm9pZCBCYXRjaEV4ZWN1dGVMb2FkZWRNb2Rl bCgKKy0gICAgICBNb2RlbEV4ZWN1dG9yPE91dHB1dFR5cGUsIElucHV0VHlwZT46OkNvbnN0UmVm SW5wdXRWZWN0b3IgaW5wdXRzLAorKyAgICAgIHR5cGVuYW1lIE1vZGVsRXhlY3V0b3I8T3V0cHV0 VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMsCisgICAgICAgc3Rk Ojp2ZWN0b3I8YWJzbDo6b3B0aW9uYWw8T3V0cHV0VHlwZT4+KiBvdXRwdXRzKSB7CisgICAgIERD SEVDSyhleGVjdXRpb25fdGFza19ydW5uZXJfLT5SdW5zVGFza3NJbkN1cnJlbnRTZXF1ZW5jZSgp KTsKKyAgICAgRENIRUNLX0NBTExFRF9PTl9WQUxJRF9TRVFVRU5DRShzZXF1ZW5jZV9jaGVja2Vy Xyk7CitAQCAtNDk4LDcgKzQ5OCw3IEBAIGNsYXNzIFRGTGl0ZU1vZGVsRXhlY3V0b3IgOiBwdWJs aWMgTW9kZWwKKyAgIC8vIFVubG9hZHMgdGhlIG1vZGVsIGlmIG5lZWRlZC4KKyAgIHZvaWQgQmF0 Y2hFeGVjdXRlTG9hZGVkTW9kZWxBbmRSdW5DYWxsYmFjaygKKyAgICAgICBCYXRjaEV4ZWN1dGlv bkNhbGxiYWNrIGNhbGxiYWNrX29uX2NvbXBsZXRlLAorLSAgICAgIE1vZGVsRXhlY3V0b3I8T3V0 cHV0VHlwZSwgSW5wdXRUeXBlPjo6Q29uc3RSZWZJbnB1dFZlY3RvciBpbnB1dHMsCisrICAgICAg dHlwZW5hbWUgTW9kZWxFeGVjdXRvcjxPdXRwdXRUeXBlLCBJbnB1dFR5cGU+OjpDb25zdFJlZklu cHV0VmVjdG9yIGlucHV0cywKKyAgICAgICBFeGVjdXRpb25TdGF0dXMgZXhlY3V0aW9uX3N0YXR1 cykgeworICAgICBEQ0hFQ0soZXhlY3V0aW9uX3Rhc2tfcnVubmVyXy0+UnVuc1Rhc2tzSW5DdXJy ZW50U2VxdWVuY2UoKSk7CisgICAgIERDSEVDS19DQUxMRURfT05fVkFMSURfU0VRVUVOQ0Uoc2Vx dWVuY2VfY2hlY2tlcl8pOworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb21wb25l bnRzL3N1cGVydmlzZWRfdXNlci9jb3JlL2Jyb3dzZXIvcHJvdG9fZmV0Y2hlci5oLnR5cGVuYW1l IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9i cm93c2VyL3Byb3RvX2ZldGNoZXIuaAorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9t b2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgudHlwZW5hbWUgY2hyb21pdW0t MTIyLjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAvYmluZGluZ3MvYXJyYXlfdHJhaXRzLmgKKy0t LSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy9hcnJheV90 cmFpdHMuaC50eXBlbmFtZQkyMDI0LTAyLTIyIDIyOjQzOjE1LjAwMDAwMDAwMCArMDEwMAorKysr IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdzL2FycmF5X3Ry YWl0cy5oCTIwMjQtMDItMjQgMTU6MDU6MDAuODg0NTkyNzQyICswMTAwCitAQCAtOTAsNyArOTAs NyBAQCB0ZW1wbGF0ZSA8dHlwZW5hbWUgQ29udGFpbmVyPgorICAgICB7IGNbaV0gfSAtPiBzdGQ6 OnNhbWVfYXM8dHlwZW5hbWUgQ29udGFpbmVyOjpyZWZlcmVuY2U+OworICAgfQorIHN0cnVjdCBB cnJheVRyYWl0czxDb250YWluZXI+IHsKKy0gIHVzaW5nIEVsZW1lbnQgPSBDb250YWluZXI6OnZh bHVlX3R5cGU7CisrICB1c2luZyBFbGVtZW50ID0gdHlwZW5hbWUgQ29udGFpbmVyOjp2YWx1ZV90 eXBlOworIAorICAgLy8gdmVjdG9yLWxpa2UgY29udGFpbmVycyBoYXZlIG5vIGJ1aWx0LWluIG51 bGwuCisgICBzdGF0aWMgYm9vbCBJc051bGwoY29uc3QgQ29udGFpbmVyJiBjKSB7IHJldHVybiBm YWxzZTsgfQorZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9iaW5kaW5ncy9jb3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgudHlwZW5hbWUgY2hy b21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9iaW5kaW5ncy9j b3JlL3Y4L2FzeW5jX2l0ZXJhYmxlLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJk X3BhcnR5L2JsaW5rL3JlbmRlcmVyL2JpbmRpbmdzL2NvcmUvdjgvYXN5bmNfaXRlcmFibGUuaC50 eXBlbmFtZQkyMDI0LTAyLTIyIDIyOjQzOjIwLjAwMDAwMDAwMCArMDEwMAorKysrIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvYmluZGluZ3MvY29yZS92 OC9hc3luY19pdGVyYWJsZS5oCTIwMjQtMDItMjQgMTU6MDU6MDAuODgzNTkyNzI0ICswMTAwCitA QCAtMjE4LDcgKzIxOCw3IEBAIGNsYXNzIFBhaXJBc3luY0l0ZXJhYmxlIHsKKyAgcHJpdmF0ZToK KyAgIHZpcnR1YWwgSXRlcmF0aW9uU291cmNlKiBDcmVhdGVJdGVyYXRpb25Tb3VyY2UoCisgICAg ICAgU2NyaXB0U3RhdGUqIHNjcmlwdF9zdGF0ZSwKKy0gICAgICBJdGVyYXRpb25Tb3VyY2U6Oktp bmQga2luZCwKKysgICAgICB0eXBlbmFtZSBJdGVyYXRpb25Tb3VyY2U6OktpbmQga2luZCwKKyAg ICAgICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSA9IDA7CisgfTsKKyAKK0BAIC0y NjAsNyArMjYwLDcgQEAgY2xhc3MgVmFsdWVBc3luY0l0ZXJhYmxlIHsKKyAgcHJpdmF0ZToKKyAg IHZpcnR1YWwgSXRlcmF0aW9uU291cmNlKiBDcmVhdGVJdGVyYXRpb25Tb3VyY2UoCisgICAgICAg U2NyaXB0U3RhdGUqIHNjcmlwdF9zdGF0ZSwKKy0gICAgICBJdGVyYXRpb25Tb3VyY2U6OktpbmQg a2luZCwKKysgICAgICB0eXBlbmFtZSBJdGVyYXRpb25Tb3VyY2U6OktpbmQga2luZCwKKyAgICAg ICBFeGNlcHRpb25TdGF0ZSYgZXhjZXB0aW9uX3N0YXRlKSA9IDA7CisgfTsKKyAKK2RpZmYgLXVw IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvdGhpcmRfcGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9o dG1sL3BhcnNlci9odG1sX2RvY3VtZW50X3BhcnNlcl9mYXN0cGF0aC5jYy50eXBlbmFtZSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9w YXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFzdHBhdGguY2MKKy0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRt bF9kb2N1bWVudF9wYXJzZXJfZmFzdHBhdGguY2MudHlwZW5hbWUJMjAyNC0wMi0yNCAxNTowNTow MC44ODI1OTI3MDUgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL2NvcmUvaHRtbC9wYXJzZXIvaHRtbF9kb2N1bWVudF9wYXJzZXJfZmFz dHBhdGguY2MJMjAyNC0wMi0yNCAxNToxMjoyNy43NDI3MjQ4NDkgKzAxMDAKK0BAIC0yMTEsNyAr MjExLDcgQEAgY2xhc3MgSFRNTEZhc3RQYXRoUGFyc2VyIHsKKyAgIHVzaW5nIFNwYW4gPSBiYXNl OjpzcGFuPGNvbnN0IENoYXI+OworICAgdXNpbmcgVVNwYW4gPSBiYXNlOjpzcGFuPGNvbnN0IFVD aGFyPjsKKyAgIC8vIDMyIG1hdGNoZXMgdGhhdCB1c2VkIGJ5IEhUTUxUb2tlbjo6QXR0cmlidXRl LgorLSAgdHlwZWRlZiBzdGQ6OmNvbmRpdGlvbmFsPHN0ZDo6aXNfc2FtZV92PENoYXIsIFVDaGFy PiwKKysgIHR5cGVkZWYgdHlwZW5hbWUgc3RkOjpjb25kaXRpb25hbDxzdGQ6OmlzX3NhbWVfdjxD aGFyLCBVQ2hhcj4sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVUNoYXJMaXRlcmFsQnVm ZmVyPDMyPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMQ2hhckxpdGVyYWxCdWZmZXI8 MzI+Pjo6dHlwZSBMaXRlcmFsQnVmZmVyVHlwZTsKKyAgIHN0YXRpY19hc3NlcnQoc3RkOjppc19z YW1lX3Y8Q2hhciwgVUNoYXI+IHx8IHN0ZDo6aXNfc2FtZV92PENoYXIsIExDaGFyPik7CitkaWZm IC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRlcmVyL2Nv cmUvcGFpbnQvb2JqZWN0X3BhaW50X3Byb3BlcnRpZXNfc3BhcnNlLmgudHlwZW5hbWUgY2hyb21p dW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29i amVjdF9wYWludF9wcm9wZXJ0aWVzX3NwYXJzZS5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL3BhaW50L29iamVjdF9wYWludF9wcm9w ZXJ0aWVzX3NwYXJzZS5oLnR5cGVuYW1lCTIwMjQtMDItMjIgMjI6NDM6MjEuMDAwMDAwMDAwICsw MTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJl ci9jb3JlL3BhaW50L29iamVjdF9wYWludF9wcm9wZXJ0aWVzX3NwYXJzZS5oCTIwMjQtMDItMjQg MTU6MDU6MDAuODgzNTkyNzI0ICswMTAwCitAQCAtMjcyLDggKzI3Miw4IEBAIGNsYXNzIENPUkVf RVhQT1JUIE9iamVjdFBhaW50UHJvcGVydGllc1MKKyAgICAgICBOb2RlTGlzdCYgbm9kZXMsCisg ICAgICAgTm9kZUlkIG5vZGVfaWQsCisgICAgICAgY29uc3QgUGFyZW50VHlwZSYgcGFyZW50LAor LSAgICAgIE5vZGVUeXBlOjpTdGF0ZSYmIHN0YXRlLAorLSAgICAgIGNvbnN0IE5vZGVUeXBlOjpB bmltYXRpb25TdGF0ZSYgYW5pbWF0aW9uX3N0YXRlID0KKysgICAgICB0eXBlbmFtZSBOb2RlVHlw ZTo6U3RhdGUmJiBzdGF0ZSwKKysgICAgICBjb25zdCB0eXBlbmFtZSBOb2RlVHlwZTo6QW5pbWF0 aW9uU3RhdGUmIGFuaW1hdGlvbl9zdGF0ZSA9CisgICAgICAgICAgIE5vZGVUeXBlOjpBbmltYXRp b25TdGF0ZSgpKSB7CisgICAgIC8vIEZpcnN0LCBjaGVjayBpZiB3ZSBuZWVkIHRvIGFkZCBhIG5l dyBub2RlLgorICAgICBpZiAoIW5vZGVzLkhhc0ZpZWxkKG5vZGVfaWQpKSB7CitkaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Iv c3JjL3BhcnRpdGlvbl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3IuaC5tZSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2Jhc2UvYWxsb2NhdG9yL3BhcnRpdGlvbl9hbGxvY2F0b3Ivc3JjL3BhcnRpdGlv bl9hbGxvYy9pbnRlcm5hbF9hbGxvY2F0b3IuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkv YmFzZS9hbGxvY2F0b3IvcGFydGl0aW9uX2FsbG9jYXRvci9zcmMvcGFydGl0aW9uX2FsbG9jL2lu dGVybmFsX2FsbG9jYXRvci5oLm1lCTIwMjQtMDItMjQgMTY6NTE6NDEuMjkyMzEwNTU0ICswMTAw CisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2FsbG9jYXRvci9wYXJ0aXRpb25fYWxs b2NhdG9yL3NyYy9wYXJ0aXRpb25fYWxsb2MvaW50ZXJuYWxfYWxsb2NhdG9yLmgJMjAyNC0wMi0y NCAxNjo1MjoxMC4wMjI4OTYwNjMgKzAxMDAKK0BAIC0yNiw3ICsyNiw3IEBAIFBhcnRpdGlvblJv b3QmIEludGVybmFsQWxsb2NhdG9yUm9vdCgpOworIAorIC8vIEEgY2xhc3MgdGhhdCBtZWV0cyBD KysgbmFtZWQgcmVxdWlyZW1lbnRzLCBBbGxvY2F0b3IuCisgdGVtcGxhdGUgPHR5cGVuYW1lIFQ+ CistSW50ZXJuYWxBbGxvY2F0b3I8VD46OnZhbHVlX3R5cGUqIEludGVybmFsQWxsb2NhdG9yPFQ+ OjphbGxvY2F0ZSgKKyt0eXBlbmFtZSBJbnRlcm5hbEFsbG9jYXRvcjxUPjo6dmFsdWVfdHlwZSog SW50ZXJuYWxBbGxvY2F0b3I8VD46OmFsbG9jYXRlKAorICAgICBzdGQ6OnNpemVfdCBjb3VudCkg eworICAgUEFfQ0hFQ0soY291bnQgPD0KKyAgICAgICAgICAgIHN0ZDo6bnVtZXJpY19saW1pdHM8 c3RkOjpzaXplX3Q+OjptYXgoKSAvIHNpemVvZih2YWx1ZV90eXBlKSk7CitkaWZmIC11cCBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9yZWYuaC5tZSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvZnVuY3Rpb25hbC9mdW5jdGlvbl9yZWYuaAorLS0tIGNo cm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS9mdW5jdGlvbmFsL2Z1bmN0aW9uX3JlZi5oLm1lCTIw MjQtMDItMjQgMTc6NTk6MzUuMTE5NTgyNTQ5ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2 MS42OS9iYXNlL2Z1bmN0aW9uYWwvZnVuY3Rpb25fcmVmLmgJMjAyNC0wMi0yNCAxODowMDoyNy4x MDc5MzgzOTkgKzAxMDAKK0BAIC02NCw3ICs2NCw3IEBAIGNsYXNzIEZ1bmN0aW9uUmVmOworIHRl bXBsYXRlIDx0eXBlbmFtZSBSLCB0eXBlbmFtZS4uLiBBcmdzPgorIGNsYXNzIEZ1bmN0aW9uUmVm PFIoQXJncy4uLik+IHsKKyAgIHRlbXBsYXRlIDx0eXBlbmFtZSBGdW5jdG9yLAorLSAgICAgICAg ICAgIHR5cGVuYW1lIFJ1blR5cGUgPSBpbnRlcm5hbDo6TWFrZUZ1bmN0b3JUcmFpdHM8RnVuY3Rv cj46OlJ1blR5cGU+CisrICAgICAgICAgICAgdHlwZW5hbWUgUnVuVHlwZSA9IHR5cGVuYW1lIGlu dGVybmFsOjpNYWtlRnVuY3RvclRyYWl0czxGdW5jdG9yPjo6UnVuVHlwZT4KKyAgIHN0YXRpYyBj b25zdGV4cHIgYm9vbCBrQ29tcGF0aWJsZUZ1bmN0b3IgPQorICAgICAgIHN0ZDo6Y29udmVydGli bGVfdG88aW50ZXJuYWw6OkV4dHJhY3RSZXR1cm5UeXBlPFJ1blR5cGU+LCBSPiAmJgorICAgICAg IHN0ZDo6c2FtZV9hczxpbnRlcm5hbDo6RXh0cmFjdEFyZ3M8UnVuVHlwZT4sIGludGVybmFsOjpU eXBlTGlzdDxBcmdzLi4uPj47CitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2Uv Y29udGFpbmVycy9oZWFwX2FycmF5LmgubWUgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2Nv bnRhaW5lcnMvaGVhcF9hcnJheS5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2Nv bnRhaW5lcnMvaGVhcF9hcnJheS5oLm1lCTIwMjQtMDItMjQgMTg6MDI6MzQuNDYzOTIxNTY4ICsw MTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9iYXNlL2NvbnRhaW5lcnMvaGVhcF9hcnJh eS5oCTIwMjQtMDItMjQgMTg6MDQ6MDEuOTIyODUwNTcxICswMTAwCitAQCAtMzIsOCArMzIsOCBA QCBjbGFzcyBUUklWSUFMX0FCSSBHU0xfT1dORVIgSGVhcEFycmF5IHsKKyAgIHN0YXRpY19hc3Nl cnQoIXN0ZDo6aXNfcmVmZXJlbmNlX3Y8VD4sCisgICAgICAgICAgICAgICAgICJIZWFwQXJyYXkg Y2Fubm90IGhvbGQgcmVmZXJlbmNlIHR5cGVzIik7CisgCistICB1c2luZyBpdGVyYXRvciA9IGJh c2U6OnNwYW48VD46Oml0ZXJhdG9yOworLSAgdXNpbmcgY29uc3RfaXRlcmF0b3IgPSBiYXNlOjpz cGFuPGNvbnN0IFQ+OjppdGVyYXRvcjsKKysgIHVzaW5nIGl0ZXJhdG9yID0gdHlwZW5hbWUgYmFz ZTo6c3BhbjxUPjo6aXRlcmF0b3I7CisrICB1c2luZyBjb25zdF9pdGVyYXRvciA9IHR5cGVuYW1l IGJhc2U6OnNwYW48Y29uc3QgVD46Oml0ZXJhdG9yOworIAorICAgLy8gQWxsb2NhdGVzIGluaXRp YWxpemVkIG1lbW9yeSBjYXBhYmxlIG9mIGhvbGRpbmcgYHNpemVgIGVsZW1lbnRzLiBObyBtZW1v cnkKKyAgIC8vIGlzIGFsbG9jYXRlZCBmb3IgemVyby1zaXplZCBhcnJheXMuCitkaWZmIC11cCBj aHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGljL2NwcC9iaW5kaW5ncy90eXBlX2NvbnZl cnRlci5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvbW9qby9wdWJsaWMvY3BwL2JpbmRpbmdz L3R5cGVfY29udmVydGVyLmgKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L21vam8vcHVibGlj L2NwcC9iaW5kaW5ncy90eXBlX2NvbnZlcnRlci5oLm1lCTIwMjQtMDItMjQgMTg6NTE6MDYuOTU3 MDg3NDY0ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9tb2pvL3B1YmxpYy9jcHAv YmluZGluZ3MvdHlwZV9jb252ZXJ0ZXIuaAkyMDI0LTAyLTI0IDE4OjUxOjI3Ljc3ODQ4ODQ5MCAr MDEwMAorQEAgLTEyNSw3ICsxMjUsNyBAQCB1c2luZyBWZWNWYWx1ZVR5cGUgPSB0eXBlbmFtZSBW ZWM6OnZhbHVlCisgCisgdGVtcGxhdGUgPHR5cGVuYW1lIFZlYz4KKyB1c2luZyBWZWNQdHJMaWtl VW5kZXJseWluZ1ZhbHVlVHlwZSA9CistICAgIHN0ZDo6cG9pbnRlcl90cmFpdHM8VmVjVmFsdWVU eXBlPFZlYz4+OjplbGVtZW50X3R5cGU7CisrICAgIHR5cGVuYW1lIHN0ZDo6cG9pbnRlcl90cmFp dHM8VmVjVmFsdWVUeXBlPFZlYz4+OjplbGVtZW50X3R5cGU7CisgCisgfSAgLy8gbmFtZXNwYWNl IGludGVybmFsCisgCitkaWZmIC11cCBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L3RoaXJkX3BhcnR5 L2JsaW5rL3JlbmRlcmVyL3BsYXRmb3JtL3d0Zi9oYXNoX3RhYmxlLmgubWUgY2hyb21pdW0tMTIy LjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvaGFzaF90 YWJsZS5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGluay9yZW5k ZXJlci9wbGF0Zm9ybS93dGYvaGFzaF90YWJsZS5oLm1lCTIwMjQtMDItMjQgMTk6NDU6MTMuNjIw OTM0MjE1ICswMTAwCisrKysgY2hyb21pdW0tMTIyLjAuNjI2MS42OS90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9wbGF0Zm9ybS93dGYvaGFzaF90YWJsZS5oCTIwMjQtMDItMjQgMTk6NDY6MDgu ODE3OTQwOTYyICswMTAwCitAQCAtMjAwNSw3ICsyMDA1LDcgQEAgc3RydWN0IEhhc2hUYWJsZUNv bnN0SXRlcmF0b3JBZGFwdGVyIHsKKyAgIHN0YXRpY19hc3NlcnQoIUlzVHJhY2VhYmxlPHR5cGVu YW1lIFRyYWl0czo6VHJhaXRUeXBlPjo6dmFsdWUpOworIAorICAgdXNpbmcgaXRlcmF0b3JfY2F0 ZWdvcnkgPSBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3JfdGFnOworLSAgdXNpbmcgdmFsdWVf dHlwZSA9IEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKKysgIHVzaW5nIHZhbHVlX3R5cGUgPSB0 eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7CisgICB1c2luZyBkaWZmZXJlbmNlX3R5 cGUgPSBwdHJkaWZmX3Q7CisgICB1c2luZyBwb2ludGVyID0gdmFsdWVfdHlwZSo7CisgICB1c2lu ZyByZWZlcmVuY2UgPSB2YWx1ZV90eXBlJjsKK0BAIC0yMDU3LDcgKzIwNTcsNyBAQCBzdHJ1Y3Qg SGFzaFRhYmxlQ29uc3RJdGVyYXRvckFkYXB0ZXI8CisgCisgIHB1YmxpYzoKKyAgIHVzaW5nIGl0 ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsKKy0gIHVz aW5nIHZhbHVlX3R5cGUgPSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7CisrICB1c2luZyB2YWx1 ZV90eXBlID0gdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworICAgdXNpbmcgZGlm ZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAgdXNpbmcgcG9pbnRlciA9IHZhbHVlX3R5cGUq OworICAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlwZSY7CitAQCAtMjExMSw3ICsyMTExLDcg QEAgc3RydWN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlciB7CisgICBzdGF0aWNfYXNzZXJ0KCFJ c1RyYWNlYWJsZTx0eXBlbmFtZSBUcmFpdHM6OlRyYWl0VHlwZT46OnZhbHVlKTsKKyAKKyAgIHVz aW5nIGl0ZXJhdG9yX2NhdGVnb3J5ID0gc3RkOjpiaWRpcmVjdGlvbmFsX2l0ZXJhdG9yX3RhZzsK Ky0gIHVzaW5nIHZhbHVlX3R5cGUgPSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7CisrICB1c2lu ZyB2YWx1ZV90eXBlID0gdHlwZW5hbWUgSGFzaFRhYmxlVHlwZTo6VmFsdWVUeXBlOworICAgdXNp bmcgZGlmZmVyZW5jZV90eXBlID0gcHRyZGlmZl90OworICAgdXNpbmcgcG9pbnRlciA9IHZhbHVl X3R5cGUqOworICAgdXNpbmcgcmVmZXJlbmNlID0gdmFsdWVfdHlwZSY7CitAQCAtMjE1OSw3ICsy MTU5LDcgQEAgc3RydWN0IEhhc2hUYWJsZUl0ZXJhdG9yQWRhcHRlcjwKKyAKKyAgcHVibGljOgor ICAgdXNpbmcgaXRlcmF0b3JfY2F0ZWdvcnkgPSBzdGQ6OmJpZGlyZWN0aW9uYWxfaXRlcmF0b3Jf dGFnOworLSAgdXNpbmcgdmFsdWVfdHlwZSA9IEhhc2hUYWJsZVR5cGU6OlZhbHVlVHlwZTsKKysg IHVzaW5nIHZhbHVlX3R5cGUgPSB0eXBlbmFtZSBIYXNoVGFibGVUeXBlOjpWYWx1ZVR5cGU7Cisg ICB1c2luZyBkaWZmZXJlbmNlX3R5cGUgPSBwdHJkaWZmX3Q7CisgICB1c2luZyBwb2ludGVyID0g dmFsdWVfdHlwZSo7CisgICB1c2luZyByZWZlcmVuY2UgPSB2YWx1ZV90eXBlJjsKK2RpZmYgLXVw IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90eXBlcy9maXhlZF9hcnJheS5oLm1lIGNocm9t aXVtLTEyMi4wLjYyNjEuNjkvYmFzZS90eXBlcy9maXhlZF9hcnJheS5oCistLS0gY2hyb21pdW0t MTIyLjAuNjI2MS42OS9iYXNlL3R5cGVzL2ZpeGVkX2FycmF5LmgubWUJMjAyNC0wMi0yNSAxMToy Mjo1OS44MTk1OTA1MjkgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Jhc2UvdHlw ZXMvZml4ZWRfYXJyYXkuaAkyMDI0LTAyLTI1IDExOjI0OjEyLjQyNDk1MzAzMSArMDEwMAorQEAg LTI3LDggKzI3LDggQEAgdGVtcGxhdGUgPHR5cGVuYW1lIFQsCisgY2xhc3MgRml4ZWRBcnJheSA6 IHB1YmxpYyBhYnNsOjpGaXhlZEFycmF5PFQsIE4sIEE+IHsKKyAgcHVibGljOgorICAgdXNpbmcg YWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6Rml4ZWRBcnJheTsKKy0gIGV4cGxpY2l0IEZpeGVk QXJyYXkoYWJzbDo6Rml4ZWRBcnJheTxULCBOLCBBPjo6c2l6ZV90eXBlIG4sCistICAgICAgICAg ICAgICAgICAgICAgIGNvbnN0IGFic2w6OkZpeGVkQXJyYXk8VCwgTiwgQT46OmFsbG9jYXRvcl90 eXBlJiBhID0KKysgIGV4cGxpY2l0IEZpeGVkQXJyYXkodHlwZW5hbWUgYWJzbDo6Rml4ZWRBcnJh eTxULCBOLCBBPjo6c2l6ZV90eXBlIG4sCisrICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IHR5 cGVuYW1lIGFic2w6OkZpeGVkQXJyYXk8VCwgTiwgQT46OmFsbG9jYXRvcl90eXBlJiBhID0KKyAg ICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGVuYW1lIGFic2w6OkZpeGVkQXJyYXk8VCwgTiwg QT46OmFsbG9jYXRvcl90eXBlKCkpCisgICAgICAgOiBGaXhlZEFycmF5KG4sIFQoKSwgYSkge30K KyB9OworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJf YXBwbGljYXRpb25zL2NvbW1hbmRzL2ludGVybmFsL2NvbW1hbmRfaW50ZXJuYWwuaC5tZSBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvY29tbWFu ZHMvaW50ZXJuYWwvY29tbWFuZF9pbnRlcm5hbC5oCistLS0gY2hyb21pdW0tMTIyLjAuNjI2MS42 OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2NvbW1hbmRzL2ludGVybmFsL2NvbW1h bmRfaW50ZXJuYWwuaC5tZQkyMDI0LTAyLTI1IDE1OjA0OjU2Ljc3NTg5NzcxMyArMDEwMAorKysr IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9j b21tYW5kcy9pbnRlcm5hbC9jb21tYW5kX2ludGVybmFsLmgJMjAyNC0wMi0yNSAxNTowNTozNC44 ODQ1NzkyNzkgKzAxMDAKK0BAIC0xMjEsNyArMTIxLDcgQEAgY2xhc3MgQ29tbWFuZEJhc2Ugewor IHRlbXBsYXRlIDx0eXBlbmFtZSBMb2NrVHlwZT4KKyBjbGFzcyBDb21tYW5kV2l0aExvY2sgOiBw dWJsaWMgQ29tbWFuZEJhc2UgeworICBwdWJsaWM6CistICB1c2luZyBMb2NrRGVzY3JpcHRpb24g PSBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9uOworKyAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9uID0g dHlwZW5hbWUgTG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbjsKKyAgIGV4cGxpY2l0IENvbW1hbmRX aXRoTG9jayhjb25zdCBzdGQ6OnN0cmluZyYgbmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAg ICAgICBMb2NrRGVzY3JpcHRpb24gaW5pdGlhbF9sb2NrX3JlcXVlc3QpOworIAorZGlmZiAtdXAg Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL2Nv bW1hbmRzL3dlYl9hcHBfY29tbWFuZC5oLm1lIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21l L2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9jb21tYW5kcy93ZWJfYXBwX2NvbW1hbmQuaAorLS0t IGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2FwcGxpY2F0aW9ucy9j b21tYW5kcy93ZWJfYXBwX2NvbW1hbmQuaC5tZQkyMDI0LTAyLTI1IDE1OjA1OjQ2Ljg4NTc5Mzgy OCArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvd2ViX2Fw cGxpY2F0aW9ucy9jb21tYW5kcy93ZWJfYXBwX2NvbW1hbmQuaAkyMDI0LTAyLTI1IDE1OjA2OjEy LjMzNDI0ODcyNSArMDEwMAorQEAgLTEwNiw3ICsxMDYsNyBAQCBjbGFzcyBXZWJBcHBMb2NrTWFu YWdlcjsKKyB0ZW1wbGF0ZSA8dHlwZW5hbWUgTG9ja1R5cGUsIHR5cGVuYW1lLi4uIENhbGxiYWNr QXJncz4KKyBjbGFzcyBXZWJBcHBDb21tYW5kIDogcHVibGljIGludGVybmFsOjpDb21tYW5kV2l0 aExvY2s8TG9ja1R5cGU+IHsKKyAgcHVibGljOgorLSAgdXNpbmcgTG9ja0Rlc2NyaXB0aW9uID0g TG9ja1R5cGU6OkxvY2tEZXNjcmlwdGlvbjsKKysgIHVzaW5nIExvY2tEZXNjcmlwdGlvbiA9IHR5 cGVuYW1lIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRpb247CisgICB1c2luZyBDYWxsYmFja1R5cGUg PSBiYXNlOjpPbmNlQ2FsbGJhY2s8dm9pZChDYWxsYmFja0FyZ3MuLi4pPjsKKyAgIHVzaW5nIFNo dXRkb3duQXJndW1lbnRzVHVwbGUgPSBzdGQ6OnR1cGxlPHN0ZDo6ZGVjYXlfdDxDYWxsYmFja0Fy Z3M+Li4uPjsKKyAKK2RpZmYgLXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dz ZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1hbmRfc2NoZWR1bGVyLmgubWUgY2hyb21p dW0tMTIyLjAuNjI2MS42OS9jaHJvbWUvYnJvd3Nlci93ZWJfYXBwbGljYXRpb25zL3dlYl9hcHBf Y29tbWFuZF9zY2hlZHVsZXIuaAorLS0tIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jy b3dzZXIvd2ViX2FwcGxpY2F0aW9ucy93ZWJfYXBwX2NvbW1hbmRfc2NoZWR1bGVyLmgubWUJMjAy NC0wMi0yNSAxNTowNjoxNy44OTYzNDgxNDkgKzAxMDAKKysrKyBjaHJvbWl1bS0xMjIuMC42MjYx LjY5L2Nocm9tZS9icm93c2VyL3dlYl9hcHBsaWNhdGlvbnMvd2ViX2FwcF9jb21tYW5kX3NjaGVk dWxlci5oCTIwMjQtMDItMjUgMTU6MDY6NTguODQxMDc2NzQ2ICswMTAwCitAQCAtMzU1LDcgKzM1 NSw3IEBAIGNsYXNzIFdlYkFwcENvbW1hbmRTY2hlZHVsZXIgeworICAgLy8gY29tbWFuZCBzeXN0 ZW0uCisgICB0ZW1wbGF0ZSA8dHlwZW5hbWUgTG9ja1R5cGU+CisgICB2b2lkIFNjaGVkdWxlQ2Fs bGJhY2soY29uc3Qgc3RkOjpzdHJpbmcmIG9wZXJhdGlvbl9uYW1lLAorLSAgICAgICAgICAgICAg ICAgICAgICAgIExvY2tUeXBlOjpMb2NrRGVzY3JpcHRpb24gbG9ja19kZXNjcmlwdGlvbiwKKysg ICAgICAgICAgICAgICAgICAgICAgICB0eXBlbmFtZSBMb2NrVHlwZTo6TG9ja0Rlc2NyaXB0aW9u IGxvY2tfZGVzY3JpcHRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgQ2FsbGJhY2tDb21t YW5kPExvY2tUeXBlLCB2b2lkPiBjYWxsYmFjaywKKyAgICAgICAgICAgICAgICAgICAgICAgICBi YXNlOjpPbmNlQ2xvc3VyZSBvbl9jb21wbGV0ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBiYXNlOjpMb2NhdGlvbiYgbG9jYXRpb24gPSBGUk9NX0hFUkUpIHsKK0BAIC0zNzMsNyAr MzczLDcgQEAgY2xhc3MgV2ViQXBwQ29tbWFuZFNjaGVkdWxlciB7CisgICAgICAgICAgICAgdHlw ZW5hbWUgQ2FsbGJhY2tSZXR1cm5WYWx1ZSA9IHN0ZDo6ZGVjYXlfdDxDb21wbGV0aW9uQ2FsbGJh Y2tBcmc+PgorICAgdm9pZCBTY2hlZHVsZUNhbGxiYWNrV2l0aFJlc3VsdCgKKyAgICAgICBjb25z dCBzdGQ6OnN0cmluZyYgb3BlcmF0aW9uX25hbWUsCistICAgICAgTG9ja1R5cGU6OkxvY2tEZXNj cmlwdGlvbiBsb2NrX2Rlc2NyaXB0aW9uLAorKyAgICAgIHR5cGVuYW1lIExvY2tUeXBlOjpMb2Nr RGVzY3JpcHRpb24gbG9ja19kZXNjcmlwdGlvbiwKKyAgICAgICBDYWxsYmFja0NvbW1hbmQ8TG9j a1R5cGUsIENhbGxiYWNrUmV0dXJuVmFsdWU+IGNhbGxiYWNrLAorICAgICAgIGJhc2U6Ok9uY2VD YWxsYmFjazx2b2lkKENvbXBsZXRpb25DYWxsYmFja0FyZyk+IG9uX2NvbXBsZXRlLAorICAgICAg IENhbGxiYWNrUmV0dXJuVmFsdWUgYXJnX2Zvcl9zaHV0ZG93biwKK2RpZmYgLXVwIGNocm9taXVt LTEyMi4wLjYyNjEuNjkvY29tcG9uZW50cy9zdXBlcnZpc2VkX3VzZXIvY29yZS9icm93c2VyL3By b3RvX2ZldGNoZXIuaC5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvc3VwZXJ2 aXNlZF91c2VyL2NvcmUvYnJvd3Nlci9wcm90b19mZXRjaGVyLmgKKy0tLSBjaHJvbWl1bS0xMjIu MC42MjYxLjY5L2NvbXBvbmVudHMvc3VwZXJ2aXNlZF91c2VyL2NvcmUvYnJvd3Nlci9wcm90b19m ZXRjaGVyLmgubWUJMjAyNC0wMi0yNSAxNToxMjo1My44MzU0MDkzOTIgKzAxMDAKKysrKyBjaHJv bWl1bS0xMjIuMC42MjYxLjY5L2NvbXBvbmVudHMvc3VwZXJ2aXNlZF91c2VyL2NvcmUvYnJvd3Nl ci9wcm90b19mZXRjaGVyLmgJMjAyNC0wMi0yNSAxNToxNjowMy4xNzE5MzEwMzMgKzAxMDAKK0BA IC00MjQsNyArNDI0LDcgQEAgY2xhc3MgUmV0cnlpbmdGZXRjaGVySW1wbCBmaW5hbCA6IHB1Ymxp YworICAgUmV0cnlpbmdGZXRjaGVySW1wbChjb25zdCBSZXRyeWluZ0ZldGNoZXJJbXBsJikgPSBk ZWxldGU7CisgICBSZXRyeWluZ0ZldGNoZXJJbXBsJiBvcGVyYXRvcj0oY29uc3QgUmV0cnlpbmdG ZXRjaGVySW1wbCYpID0gZGVsZXRlOworIAorLSAgdm9pZCBTdGFydChQcm90b0ZldGNoZXI8UmVz cG9uc2U+OjpDYWxsYmFjayBjYWxsYmFjaykgb3ZlcnJpZGUgeworKyAgdm9pZCBTdGFydCh0eXBl bmFtZSBQcm90b0ZldGNoZXI8UmVzcG9uc2U+OjpDYWxsYmFjayBjYWxsYmFjaykgb3ZlcnJpZGUg eworICAgICBjYWxsYmFja18gPSBzdGQ6Om1vdmUoY2FsbGJhY2spOworICAgICBSZXRyeSgpOwor ICAgfQorQEAgLTQ2OSw3ICs0NjksNyBAQCBjbGFzcyBSZXRyeWluZ0ZldGNoZXJJbXBsIGZpbmFs IDogcHVibGljCisgICB9CisgCisgICAvLyBDbGllbnQgY2FsbGJhY2suCistICBUeXBlZFByb3Rv RmV0Y2hlcjxSZXNwb25zZT46OkNhbGxiYWNrIGNhbGxiYWNrXzsKKysgIHR5cGVuYW1lIFR5cGVk UHJvdG9GZXRjaGVyPFJlc3BvbnNlPjo6Q2FsbGJhY2sgY2FsbGJhY2tfOworIAorICAgLy8gUmV0 cnkgY29udHJvbHMuCisgICBiYXNlOjpPbmVTaG90VGltZXIgdGltZXJfOworQEAgLTQ5MCw3ICs0 OTAsNyBAQCBjbGFzcyBQYXJhbGxlbEZldGNoTWFuYWdlciB7CisgICAvLyBEZWZlcnJlZCBmZXRj aGVyIGlzIHJlcXVpcmVkIGJlY2F1c2UgaXQgc2hvdWxkIGJlIHN0YXJ0ZWQgYWZ0ZXIgaXQgaXMK KyAgIC8vIHN0b3JlZCBpbnRlcm5hbGx5LgorICAgdXNpbmcgRmV0Y2hlciA9IFByb3RvRmV0Y2hl cjxSZXNwb25zZT47CistICB1c2luZyBLZXlUeXBlID0gYmFzZTo6SURNYXA8c3RkOjp1bmlxdWVf cHRyPEZldGNoZXI+Pjo6S2V5VHlwZTsKKysgIHVzaW5nIEtleVR5cGUgPSB0eXBlbmFtZSBiYXNl OjpJRE1hcDxzdGQ6OnVuaXF1ZV9wdHI8RmV0Y2hlcj4+OjpLZXlUeXBlOworIAorICBwdWJsaWM6 CisgICAvLyBQcm92aWRlcyBmcmVzaCBpbnN0YW5jZXMgb2YgYSBkZWZlcnJlZCBmZXRjaGVyIGZv ciBlYWNoIGZldGNoLgorQEAgLTUwNiw3ICs1MDYsNyBAQCBjbGFzcyBQYXJhbGxlbEZldGNoTWFu YWdlciB7CisgCisgICAvLyBTdGFydHMgdGhlIGZldGNoLiBVbmRlcmx5aW5nIGZldGNoZXIgaXMg c3RvcmVkIGludGVybmFsbHksIGFuZCB3aWxsIGJlCisgICAvLyBjbGVhbmVkIHVwIGFmdGVyIGZp bmlzaCBvciB3aGVuIHRoaXMgbWFuYWdlciBpcyBkZXN0cm95ZWQuCistICB2b2lkIEZldGNoKGNv bnN0IFJlcXVlc3QmIHJlcXVlc3QsIEZldGNoZXI6OkNhbGxiYWNrIGNhbGxiYWNrKSB7CisrICB2 b2lkIEZldGNoKGNvbnN0IFJlcXVlc3QmIHJlcXVlc3QsIHR5cGVuYW1lIEZldGNoZXI6OkNhbGxi YWNrIGNhbGxiYWNrKSB7CisgICAgIENIRUNLKGNhbGxiYWNrKSA8PCAiVXNlIGJhc2U6OkRvTm90 aGluZygpIGluc3RlYWQgb2YgZW1wdHkgY2FsbGJhY2suIjsKKyAgICAgS2V5VHlwZSBrZXkgPSBy ZXF1ZXN0c19pbl9mbGlnaHRfLkFkZChNYWtlRmV0Y2hlcihyZXF1ZXN0KSk7CisgICAgIHJlcXVl c3RzX2luX2ZsaWdodF8uTG9va3VwKGtleSktPlN0YXJ0KAoKZGlmZiAtLWdpdCBhL2Nocm9taXVt LTEyMi11bmlxdWVfcHRyLnBhdGNoIGIvY2hyb21pdW0tMTIyLXVuaXF1ZV9wdHIucGF0Y2gKbmV3 IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ2MmFlNgotLS0gL2Rldi9udWxsCisr KyBiL2Nocm9taXVtLTEyMi11bmlxdWVfcHRyLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK2NvbW1p dCA1NTE3ZDE2N2MwODM4ODU4NDdhMDhhODNiOTZkYTAzYjFlYjJiYzNlCitBdXRob3I6IEpvc2Ug RGFwZW5hIFBheiA8amRhcGVuYUBpZ2FsaWEuY29tPgorRGF0ZTogICBUdWUgSmFuIDIzIDE1OjM0 OjM1IDIwMjQgKzAwMDAKKworICAgIGxpYnN0ZGMrKzogZG8gbm90IHJlcXVpcmUgaW5jbHVkaW5n IHVuaXF1ZV9wdHIgaW4gaGVhZGVyCisgICAgCisgICAgSW5jbHVkaW5nIHN0ZDo6dW5pcXVlX3B0 ciBkZWNsYXJhdGlvbiBpbml0aWFsIHZhbHVlIHJlcXVpcmVzCisgICAgZGVjbGFyYXRpb24gb2Yg Y29udGFpbmVkIHR5cGUuCisgICAgCisgICAgQnVnOiA5NTc1MTkKKyAgICBDaGFuZ2UtSWQ6IElm OWIwMzYyYjZjZWE0OGEzOTUwNDFmYWE4MmY4M2I2ZjQ4Yjk4NDAzCisgICAgUmV2aWV3ZWQtb246 IGh0dHBzOi8vY2hyb21pdW0tcmV2aWV3Lmdvb2dsZXNvdXJjZS5jb20vYy9jaHJvbWl1bS9zcmMv Ky81MjI1MTM3CisgICAgUmV2aWV3ZWQtYnk6IENhcm9saW5lIFJpc2luZyA8Y29yaXNpbmdAY2hy b21pdW0ub3JnPgorICAgIENvbW1pdC1RdWV1ZTogSm9zw6kgRGFwZW5hIFBheiA8amRhcGVuYUBp Z2FsaWEuY29tPgorICAgIENyLUNvbW1pdC1Qb3NpdGlvbjogcmVmcy9oZWFkcy9tYWluQHsjMTI1 MDgyNn0KKworZGlmZiAtLWdpdCBhL2Nocm9tZS9icm93c2VyL3VpL3ZpZXdzL3Rvb2xiYXIvdG9v bGJhcl92aWV3LmggYi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy90b29sYmFyL3Rvb2xiYXJfdmll dy5oCitpbmRleCBlYzNlMzRhODZmNGM1Li4zMmNhMjdiNmQxMjZiIDEwMDY0NAorLS0tIGEvY2hy b21lL2Jyb3dzZXIvdWkvdmlld3MvdG9vbGJhci90b29sYmFyX3ZpZXcuaAorKysrIGIvY2hyb21l L2Jyb3dzZXIvdWkvdmlld3MvdG9vbGJhci90b29sYmFyX3ZpZXcuaAorQEAgLTMxMSw4ICszMTEs NyBAQCBjbGFzcyBUb29sYmFyVmlldyA6IHB1YmxpYyB2aWV3czo6QWNjZXNzaWJsZVBhbmVWaWV3 LAorICAgQXBwTWVudUljb25Db250cm9sbGVyIGFwcF9tZW51X2ljb25fY29udHJvbGxlcl87Cisg CisgICBzdGQ6OnVuaXF1ZV9wdHI8Q2hyb21lTGFic01vZGVsPiBjaHJvbWVfbGFic19tb2RlbF87 CistICBzdGQ6OnVuaXF1ZV9wdHI8RXh0ZW5zaW9uc1Rvb2xiYXJDb29yZGluYXRvcj4KKy0gICAg ICBleHRlbnNpb25zX3Rvb2xiYXJfY29vcmRpbmF0b3JfID0gbnVsbHB0cjsKKysgIHN0ZDo6dW5p cXVlX3B0cjxFeHRlbnNpb25zVG9vbGJhckNvb3JkaW5hdG9yPiBleHRlbnNpb25zX3Rvb2xiYXJf Y29vcmRpbmF0b3JfOworIAorICAgLy8gQ29udHJvbHMgd2hldGhlciBvciBub3QgYSBob21lIGJ1 dHRvbiBzaG91bGQgYmUgc2hvd24gb24gdGhlIHRvb2xiYXIuCisgICBCb29sZWFuUHJlZk1lbWJl ciBzaG93X2hvbWVfYnV0dG9uXzsKK2RpZmYgLS1naXQgYS9jaHJvbWUvYnJvd3Nlci91aS92aWV3 cy93ZWJfYXBwcy9mcmFtZV90b29sYmFyL3dlYl9hcHBfdG9vbGJhcl9idXR0b25fY29udGFpbmVy LmggYi9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy93ZWJfYXBwcy9mcmFtZV90b29sYmFyL3dlYl9h cHBfdG9vbGJhcl9idXR0b25fY29udGFpbmVyLmgKK2luZGV4IDMwNDZjNTQzYzdjOGUuLjQ2ZmY1 ZDQwZmZhZDMgMTAwNjQ0CistLS0gYS9jaHJvbWUvYnJvd3Nlci91aS92aWV3cy93ZWJfYXBwcy9m cmFtZV90b29sYmFyL3dlYl9hcHBfdG9vbGJhcl9idXR0b25fY29udGFpbmVyLmgKKysrKyBiL2No cm9tZS9icm93c2VyL3VpL3ZpZXdzL3dlYl9hcHBzL2ZyYW1lX3Rvb2xiYXIvd2ViX2FwcF90b29s YmFyX2J1dHRvbl9jb250YWluZXIuaAorQEAgLTE1MCw4ICsxNTAsNyBAQCBjbGFzcyBXZWJBcHBU b29sYmFyQnV0dG9uQ29udGFpbmVyIDogcHVibGljIHZpZXdzOjpWaWV3LAorICAgc3RkOjp1bmlx dWVfcHRyPFBhZ2VBY3Rpb25JY29uQ29udHJvbGxlcj4gcGFnZV9hY3Rpb25faWNvbl9jb250cm9s bGVyXzsKKyAgIGludCBwYWdlX2FjdGlvbl9pbnNlcnRpb25fcG9pbnRfID0gMDsKKyAKKy0gIHN0 ZDo6dW5pcXVlX3B0cjxFeHRlbnNpb25zVG9vbGJhckNvb3JkaW5hdG9yPgorLSAgICAgIGV4dGVu c2lvbnNfdG9vbGJhcl9jb29yZGluYXRvcl8gPSBudWxscHRyOworKyAgc3RkOjp1bmlxdWVfcHRy PEV4dGVuc2lvbnNUb29sYmFyQ29vcmRpbmF0b3I+IGV4dGVuc2lvbnNfdG9vbGJhcl9jb29yZGlu YXRvcl87CisgCisgICAvLyBBbGwgcmVtYWluaW5nIG1lbWJlcnMgYXJlIG93bmVkIGJ5IHRoZSB2 aWV3cyBoaWVyYXJjaHkuCisgICByYXdfcHRyPFdlYkFwcE9yaWdpblRleHQ+IHdlYl9hcHBfb3Jp Z2luX3RleHRfID0gbnVsbHB0cjsKCmRpZmYgLS1naXQgYS9jaHJvbWl1bS0xMjItd29ya2Fyb3Vu ZF9jbGFuZ19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoIGIvY2hyb21pdW0tMTIyLXdvcmth cm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEw MDY0NAppbmRleCAwMDAwMDAwLi42NTI2ZTZhCi0tLSAvZGV2L251bGwKKysrIGIvY2hyb21pdW0t MTIyLXdvcmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZy5wYXRjaApAQCAtMCww ICsxLDc5IEBACitkaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2Rt X3Byb21pc2VfYWRhcHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRp bmcgY2hyb21pdW0tMTE1LjAuNTc5MC4yNC9tZWRpYS9iYXNlL2NkbV9wcm9taXNlX2FkYXB0ZXIu Y2MKKy0tLSBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21lZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRh cHRlci5jYy53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1Y3R1cmVkX2JpbmRpbmcJMjAyMy0wNi0w NyAyMTo0ODozNy4wMDAwMDAwMDAgKzAyMDAKKysrKyBjaHJvbWl1bS0xMTUuMC41NzkwLjI0L21l ZGlhL2Jhc2UvY2RtX3Byb21pc2VfYWRhcHRlci5jYwkyMDIzLTA2LTE3IDE2OjUzOjIwLjIxNjYy ODU1NyArMDIwMAorQEAgLTk0LDcgKzk0LDkgQEAgdm9pZCBDZG1Qcm9taXNlQWRhcHRlcjo6UmVq ZWN0UHJvbWlzZSh1aQorIHZvaWQgQ2RtUHJvbWlzZUFkYXB0ZXI6OkNsZWFyKENsZWFyUmVhc29u IHJlYXNvbikgeworICAgLy8gUmVqZWN0IGFsbCBvdXRzdGFuZGluZyBwcm9taXNlcy4KKyAgIERD SEVDSyh0aHJlYWRfY2hlY2tlcl8uQ2FsbGVkT25WYWxpZFRocmVhZCgpKTsKKy0gIGZvciAoYXV0 byYgW3Byb21pc2VfaWQsIHByb21pc2VdIDogcHJvbWlzZXNfKSB7CisrICBmb3IgKGF1dG8mIFtw X2ksIHBfZV0gOiBwcm9taXNlc18pIHsKKysgICAgYXV0byYgcHJvbWlzZV9pZCA9IHBfaTsKKysg ICAgYXV0byYgcHJvbWlzZSA9IHBfZTsKKyAgICAgVFJBQ0VfRVZFTlRfTkVTVEFCTEVfQVNZTkNf RU5EMSgKKyAgICAgICAgICJtZWRpYSIsICJDZG1Qcm9taXNlIiwgVFJBQ0VfSURfV0lUSF9TQ09Q RSgiQ2RtUHJvbWlzZSIsIHByb21pc2VfaWQpLAorICAgICAgICAgInN0YXR1cyIsICJjbGVhcmVk Iik7CitkaWZmIC11cCBjaHJvbWl1bS0xMTUuMC41NzkwLjMyL2NvbnRlbnQvYnJvd3Nlci9zZXJ2 aWNlX3dvcmtlci9zZXJ2aWNlX3dvcmtlcl9jb250ZXh0X3dyYXBwZXIuY2MubWUgY2hyb21pdW0t MTE1LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3Jr ZXJfY29udGV4dF93cmFwcGVyLmNjCistLS0gY2hyb21pdW0tMTE1LjAuNTc5MC4zMi9jb250ZW50 L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJfY29udGV4dF93cmFwcGVyLmNj Lm1lCTIwMjMtMDYtMTkgMDg6MDQ6MDIuMjg3MDcyNzIyICswMjAwCisrKysgY2hyb21pdW0tMTE1 LjAuNTc5MC4zMi9jb250ZW50L2Jyb3dzZXIvc2VydmljZV93b3JrZXIvc2VydmljZV93b3JrZXJf Y29udGV4dF93cmFwcGVyLmNjCTIwMjMtMDYtMTkgMDg6MTg6MjQuNTc2ODE0OTUwICswMjAwCitA QCAtMTM5Myw3ICsxMzkzLDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyQ29udGV4dFdyYXBwZXI6Ok1h eWJlUAorICAgICByZXR1cm47CisgICB9CisgCistICBhdXRvIFtkb2N1bWVudF91cmwsIGtleSwg Y2FsbGJhY2tdID0gc3RkOjptb3ZlKCpyZXF1ZXN0KTsKKysgIGF1dG8gW2RfdSwga2V5LCBjYWxs YmFja10gPSBzdGQ6Om1vdmUoKnJlcXVlc3QpOworKyAgYXV0byBkb2N1bWVudF91cmwgPSBkX3U7 CisgCisgICBEQ0hFQ0soZG9jdW1lbnRfdXJsLmlzX3ZhbGlkKCkpOworICAgVFJBQ0VfRVZFTlQx KCJTZXJ2aWNlV29ya2VyIiwKK2RpZmYgLXVwIGNocm9taXVtLTEyMS4wLjYxNjcuMTYvdGhpcmRf cGFydHkvYmxpbmsvcmVuZGVyZXIvY29yZS9sYXlvdXQvZ3JpZC9ncmlkX2xheW91dF9hbGdvcml0 aG0uY2MudGhhbiBjaHJvbWl1bS0xMjEuMC42MTY3LjE2L3RoaXJkX3BhcnR5L2JsaW5rL3JlbmRl cmVyL2NvcmUvbGF5b3V0L2dyaWQvZ3JpZF9sYXlvdXRfYWxnb3JpdGhtLmNjCistLS0gY2hyb21p dW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGluay9yZW5kZXJlci9jb3JlL2xheW91dC9n cmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYy50aGFuCTIwMjMtMTItMTkgMTc6NTc6NTYuMjA1 MTk3MjQ2ICswMTAwCisrKysgY2hyb21pdW0tMTIxLjAuNjE2Ny4xNi90aGlyZF9wYXJ0eS9ibGlu ay9yZW5kZXJlci9jb3JlL2xheW91dC9ncmlkL2dyaWRfbGF5b3V0X2FsZ29yaXRobS5jYwkyMDIz LTEyLTE5IDE4OjEwOjEzLjc3ODYzNDUzMSArMDEwMAorQEAgLTM1MjcsOCArMzUyNyw4IEBAIHZv aWQgR3JpZExheW91dEFsZ29yaXRobTo6UGxhY2VHcmlkSXRlbXMKKyAgIERDSEVDSyhvdXRfcm93 X2JyZWFrX2JldHdlZW4pOworIAorICAgY29uc3QgYXV0byYgY29udGFpbmVyX3NwYWNlID0gR2V0 Q29uc3RyYWludFNwYWNlKCk7CistICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5b3V0X2Rh dGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKKy0KKysgIGNvbnN0 IGF1dG8mIFtncmlkX2l0ZW1zLCBsX2QsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9v dERhdGEoKTsKKysgIGNvbnN0IGF1dG8mIGxheW91dF9kYXRhID0gbF9kOworICAgY29uc3QgYXV0 byogY2FjaGVkX2xheW91dF9zdWJ0cmVlID0gY29udGFpbmVyX3NwYWNlLkdldEdyaWRMYXlvdXRT dWJ0cmVlKCk7CisgICBjb25zdCBhdXRvIGNvbnRhaW5lcl93cml0aW5nX2RpcmVjdGlvbiA9Cisg ICAgICAgY29udGFpbmVyX3NwYWNlLkdldFdyaXRpbmdEaXJlY3Rpb24oKTsKK0BAIC0zNjkxLDgg KzM2OTEsOSBAQCB2b2lkIEdyaWRMYXlvdXRBbGdvcml0aG06OlBsYWNlR3JpZEl0ZW1zCisgCisg ICAvLyBUT0RPKGlraWxwYXRyaWNrKTogVXBkYXRlIHxTZXRIYXNTZWVuQWxsQ2hpbGRyZW58IGFu ZCBlYXJseSBleGl0IGlmIHRydWUuCisgICBjb25zdCBhdXRvJiBjb25zdHJhaW50X3NwYWNlID0g R2V0Q29uc3RyYWludFNwYWNlKCk7CistICBjb25zdCBhdXRvJiBbZ3JpZF9pdGVtcywgbGF5b3V0 X2RhdGEsIHRyZWVfc2l6ZV0gPSBzaXppbmdfdHJlZS5UcmVlUm9vdERhdGEoKTsKKy0KKysgIGNv bnN0IGF1dG8mIFtnX2ksIGxfZCwgdHJlZV9zaXplXSA9IHNpemluZ190cmVlLlRyZWVSb290RGF0 YSgpOworKyAgY29uc3QgYXV0byYgZ3JpZF9pdGVtcyA9IGdfaTsKKysgIGNvbnN0IGF1dG8mIGxh eW91dF9kYXRhID0gbF9kOworICAgY29uc3QgYXV0byogY2FjaGVkX2xheW91dF9zdWJ0cmVlID0g Y29uc3RyYWludF9zcGFjZS5HZXRHcmlkTGF5b3V0U3VidHJlZSgpOworICAgY29uc3QgYXV0byBj b250YWluZXJfd3JpdGluZ19kaXJlY3Rpb24gPQorICAgICAgIGNvbnN0cmFpbnRfc3BhY2UuR2V0 V3JpdGluZ0RpcmVjdGlvbigpOworZGlmZiAtdXAgY2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250 ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNlX25ldHdvcmtfcmVxdWVzdF91cmxfbG9hZGVy X2NsaWVudC5jYy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2NvbnRlbnQvY29tbW9uL3NlcnZp Y2Vfd29ya2VyL3JhY2VfbmV0d29ya19yZXF1ZXN0X3VybF9sb2FkZXJfY2xpZW50LmNjCistLS0g Y2hyb21pdW0tMTIyLjAuNjI2MS42OS9jb250ZW50L2NvbW1vbi9zZXJ2aWNlX3dvcmtlci9yYWNl X25ldHdvcmtfcmVxdWVzdF91cmxfbG9hZGVyX2NsaWVudC5jYy5tZQkyMDI0LTAyLTI1IDEwOjA3 OjI4LjMxMjY0Njg1MyArMDEwMAorKysrIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY29udGVudC9j b21tb24vc2VydmljZV93b3JrZXIvcmFjZV9uZXR3b3JrX3JlcXVlc3RfdXJsX2xvYWRlcl9jbGll bnQuY2MJMjAyNC0wMi0yNSAxMDoxMTowNy4wMTg0ODE5ODAgKzAxMDAKK0BAIC00MTYsNyArNDE2 LDggQEAgdm9pZCBTZXJ2aWNlV29ya2VyUmFjZU5ldHdvcmtSZXF1ZXN0VVJMTAorICAgfQorIAor ICAgdWludDMyX3QgbnVtX2J5dGVzX3RvX2NvbnN1bWUgPSAwOworLSAgYXV0byBbcmVzdWx0LCBy ZWFkX2J1ZmZlcl0gPSBCZWdpblJlYWREYXRhKCk7CisrICBhdXRvIFtyLCByZWFkX2J1ZmZlcl0g PSBCZWdpblJlYWREYXRhKCk7CisrICBhdXRvIHJlc3VsdCA9IHI7CisgICBUUkFDRV9FVkVOVF9X SVRIX0ZMT1cyKAorICAgICAgICJTZXJ2aWNlV29ya2VyIiwKKyAgICAgICAiU2VydmljZVdvcmtl clJhY2VOZXR3b3JrUmVxdWVzdFVSTExvYWRlckNsaWVudDo6UmVhZEFuZFdyaXRlIiwKK2RpZmYg LXVwIGNocm9taXVtLTEyMi4wLjYyNjEuNjkvY2hyb21lL2Jyb3dzZXIvcHJlZGljdG9ycy9sY3Bf Y3JpdGljYWxfcGF0aF9wcmVkaWN0b3IvcHJld2FybV9odHRwX2Rpc2tfY2FjaGVfbWFuYWdlci5j Yy5tZSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMvbGNw X2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFnZXIu Y2MKKy0tLSBjaHJvbWl1bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMv bGNwX2NyaXRpY2FsX3BhdGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFn ZXIuY2MubWUJMjAyNC0wMi0yNSAxODowMzo1MS42NTQ1Nzk1NzkgKzAxMDAKKysrKyBjaHJvbWl1 bS0xMjIuMC42MjYxLjY5L2Nocm9tZS9icm93c2VyL3ByZWRpY3RvcnMvbGNwX2NyaXRpY2FsX3Bh dGhfcHJlZGljdG9yL3ByZXdhcm1faHR0cF9kaXNrX2NhY2hlX21hbmFnZXIuY2MJMjAyNC0wMi0y NSAxODoxMjo0NS4xNDQyODc3NTAgKzAxMDAKK0BAIC0xMzYsNyArMTM2LDggQEAgdm9pZCBQcmV3 YXJtSHR0cERpc2tDYWNoZU1hbmFnZXI6Ok1heWJlUAorICAgc3RkOjpwYWlyPHVybDo6T3JpZ2lu LCBHVVJMPiBvcmlnaW5fYW5kX3VybDsKKyAgIHN0ZDo6c3dhcChvcmlnaW5fYW5kX3VybCwgcXVl dWVkX2pvYnNfLmZyb250KCkpOworICAgcXVldWVkX2pvYnNfLnBvcCgpOworLSAgY29uc3QgYXV0 byYgW29yaWdpbiwgdXJsXSA9IG9yaWdpbl9hbmRfdXJsOworKyAgY29uc3QgYXV0byYgW29yaWdp biwgdV0gPSBvcmlnaW5fYW5kX3VybDsKKysgIGNvbnN0IGF1dG8mIHVybCA9IHU7CisgICBUUkFD RV9FVkVOVF9XSVRIX0ZMT1cxKAorICAgICAgICJsb2FkaW5nIiwgIlByZXdhcm1IdHRwRGlza0Nh Y2hlTWFuYWdlcjo6TWF5YmVQcm9jZXNzTmV4dFF1ZXVlZEpvYiIsCisgICAgICAgVFJBQ0VfSURf TE9DQUwodGhpcyksCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0uc3BlYyBiL2Nocm9taXVtLnNwZWMK aW5kZXggZDNiNThhYS4uZDk2MTkxYyAxMDA2NDQKLS0tIGEvY2hyb21pdW0uc3BlYworKysgYi9j aHJvbWl1bS5zcGVjCkBAIC0zNjYsNyArMzY2LDcgQEAgUGF0Y2gxMDE6IGNocm9taXVtLTEwOC1l bDctd2F5bGFuZC1zdHJuZHVwLWVycm9yLnBhdGNoCiAKICMgV29ya2Fyb3VuZCBmb3Igb2xkIGNs YW5nCiAjIGVycm9yOiBkZWZhdWx0aW5nIHRoaXMgZGVmYXVsdCBjb25zdHJ1Y3RvciB3b3VsZCBk ZWxldGUgaXQgYWZ0ZXIgaXRzIGZpcnN0IGRlY2xhcmF0aW9uCi1QYXRjaDEwMjogY2hyb21pdW0t MTIxLWVsNy1kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9sdmluZy1hbm9ueW1vdXMtdW5pb24ucGF0 Y2gKK1BhdGNoMTAyOiBjaHJvbWl1bS0xMjItZWw3LWRlZmF1bHQtY29uc3RydWN0b3ItaW52b2x2 aW5nLWFub255bW91cy11bmlvbi5wYXRjaAogCiAjIFdvcmsgYXJvdW5kIG9sZCBhbmQgbWlzc2lu ZyBoZWFkZXJzIG9uIEVQRUw3CiBQYXRjaDEwMzogY2hyb21pdW0tMTEwLWVwZWw3LW9sZC1oZWFk ZXJzLXdvcmthcm91bmRzLnBhdGNoCkBAIC0zODUsMTUgKzM4NSwxMyBAQCBQYXRjaDEwNTogY2hy b21pdW0tMTIwLWVsNy1vbGQtbGliZHJtLnBhdGNoCiBQYXRjaDEwNjogY2hyb21pdW0tOTguMC40 NzU4LjgwLWVwZWw3LWVyYXNlLWZpeC5wYXRjaAogCiAjIEFkZCBhZGRpdGlvbmFsIG9wZXJhdG9y PT0gdG8gbWFrZSBlbDcgaGFwcHkuCi1QYXRjaDEwNzogY2hyb21pdW0tMTIwLWVsNy1leHRyYS1v cGVyYXRvci5wYXRjaAorUGF0Y2gxMDc6IGNocm9taXVtLTEyMi1lbDctZXh0cmEtb3BlcmF0b3Iu cGF0Y2gKICMgb2xkIHY0bDIgb24gZWw3CiBQYXRjaDEwODogY2hyb21pdW0tMTE4LWVsN192NGwy X3F1YW50aXphdGlvbi5wYXRjaCAKLSMgd29ya2Fyb3VuZCBmb3IgY2xhbmcgYnVnIG9uIGVsNwor IyB3b3JrYXJvdW5kIGZvciBvbGQgY2xhbmcgb24gZWw3CiBQYXRjaDEwOTogY2hyb21pdW0tMTE0 LXdpcmVsZXNzLWVsNy5wYXRjaAogUGF0Y2gxMTA6IGNocm9taXVtLTExNS1idWlsZGZsYWctZWw3 LnBhdGNoCi1QYXRjaDExMTogY2hyb21pdW0tMTE2LWNvbnN0ZXhwci5wYXRjaAotIyBvbGQgY2xh bmcgb24gZWw3Ci0KK1BhdGNoMTExOiBjaHJvbWl1bS0xMjItZWw3LWlubGluZS1mdW5jdGlvbi5w YXRjaAogUGF0Y2gxMTM6IGNocm9taXVtLTEyMS1lbDctY2xhbmctdmVyc2lvbi13YXJuaW5nLnBh dGNoCiBQYXRjaDExNDogY2hyb21pdW0tMTIwLWVsNy1jbGFuZy1idWlsZC1mYWlsdXJlLnBhdGNo CiAKQEAgLTQxNSwxNCArNDEzLDE0IEBAIFBhdGNoMTQwOiBjaHJvbWl1bS0xMTgtZG1hX2J1Zl9l eHBvcnRfc3luY19maWxlLWNvbmZsaWN0LnBhdGNoCiAKICMgZml4ZXMgZm9yIG9sZCBjbGFuZyB2 ZXJzaW9uIGluIGZlZG9yYSA8IDM4IGVuZCBlcGVsIDwgOCAob2xkIGNsYW5nIDw9IDE1KQogIyBj b21waWxlciBidWlsZCBlcnJvcnMsIG5vIG1hdGNoaW5nIGNvbnN0cnVjdG9yIGZvciBpbml0aWFs aXphdGlvbgotUGF0Y2gzMDA6IGNocm9taXVtLTEyMS1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5w YXRjaAorUGF0Y2gzMDA6IGNocm9taXVtLTEyMi1ub19tYXRjaGluZ19jb25zdHJ1Y3Rvci5wYXRj aAogUGF0Y2gzMDE6IGNocm9taXVtLTExNS1jb21waWxlci1Ta0NvbG9yNGYucGF0Y2gKIAogIyB3 b3JrYXJvdW5kIGZvciBjbGFuZyBidWcsIGh0dHBzOi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJv amVjdC9pc3N1ZXMvNTc4MjYKLVBhdGNoMzAyOiBjaHJvbWl1bS0xMjEtd29ya2Fyb3VuZF9jbGFu Z19idWctc3RydWN0dXJlZF9iaW5kaW5nLnBhdGNoCitQYXRjaDMwMjogY2hyb21pdW0tMTIyLXdv cmthcm91bmRfY2xhbmdfYnVnLXN0cnVjdHVyZWRfYmluZGluZy5wYXRjaAogCiAjIG1pc3Npbmcg dHlwZW5hbWUKLVBhdGNoMzAzOiBjaHJvbWl1bS0xMjEtdHlwZW5hbWUucGF0Y2gKK1BhdGNoMzAz OiBjaHJvbWl1bS0xMjItdHlwZW5hbWUucGF0Y2gKIAogIyBlcnJvcjogaW52YWxpZCBvcGVyYW5k cyB0byBiaW5hcnkgZXhwcmVzc2lvbgogUGF0Y2gzMDQ6IGNocm9taXVtLTExNy1zdHJpbmctY29u dmVydC5wYXRjaApAQCAtNDQ4LDggKzQ0Niw5IEBAIFBhdGNoMzExOiBjaHJvbWl1bS0xMTUtY2xh bmctd2FybmluZ3MucGF0Y2gKICMgZW5hYmxlIGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nCiBQYXRj aDMxMjogY2hyb21pdW0tMTE5LWZzdGFjay1wcm90ZWN0b3Itc3Ryb25nLnBhdGNoCiAKLSMgZml4 ZWQgc3RhdGljIGFzc2VydCBlcnJvcgorIyB1cHN0cmVhbTogbGlic3RkYysrOiBmaXggc3RhdGlj IGFzc2VydGlvbiBpbiBOb2RlVXVpZEVxdWFsaXR5CiBQYXRjaDMxMzogY2hyb21pdW0tMTIyLXN0 YXRpYy1hc3NlcnQucGF0Y2gKKwogUGF0Y2gzMTQ6IGNocm9taXVtLTEyMi1jbGFuZzE2LWJ1aWxk ZmxhZ3MucGF0Y2gKIAogIyBhc3NpZ25tZW50LWV4cHJlc3Npb25zIG5vdCBzdXBvcnQgaW4gcHl0 aG9uIDwgMy44IG9uIGVsIDcvOApAQCAtNDU4LDYgKzQ1Nyw5IEBAIFBhdGNoMzE1OiBjaHJvbWl1 bS0xMjItcHl0aG9uMy1hc3NpZ25tZW50LWV4cHJlc3Npb25zLnBhdGNoCiAjIGFkZCAtZnRyaXZp YWwtYXV0by12YXItaW5pdD16ZXJvIGFuZCAtZndyYXB2CiBQYXRjaDMxNjogY2hyb21pdW0tMTIy LWNsYW5nLWJ1aWxkLWZsYWdzLnBhdGNoCiAKKyMgdXBzdHJlYW06IGlic3RkYysrOiBkbyBub3Qg cmVxdWlyZSBpbmNsdWRpbmcgdW5pcXVlX3B0ciBpbiBoZWFkZXIKK1BhdGNoMzE3OiBjaHJvbWl1 bS0xMjItdW5pcXVlX3B0ci5wYXRjaAorCiAjIGJ1aWxkIGVycm9yCiBQYXRjaDM1MTogY2hyb21p dW0tMTIxLW1uZW1vbmljLWVycm9yLnBhdGNoCiAKQEAgLTEwOTcsMjIgKzEwOTksMjIgQEAgdWRl di4KICVpZiAwJXs/cmhlbH0gPT0gNwogJXBhdGNoIC1QMTAwIC1wMSAtYiAuZWw3LW1lbWZkLWZj bnRsLWluY2x1ZGUKICVwYXRjaCAtUDEwMSAtcDEgLWIgLndheWxhbmQtc3RybmR1cC1lcnJvcgot I3BhdGNoIC1QMTAyIC1wMSAtYiAuZGVmYXVsdC1jb25zdHJ1Y3Rvci1pbnZvbHZpbmctYW5vbnlt b3VzLXVuaW9uCislcGF0Y2ggLVAxMDIgLXAxIC1iIC5kZWZhdWx0LWNvbnN0cnVjdG9yLWludm9s dmluZy1hbm9ueW1vdXMtdW5pb24KICVwYXRjaCAtUDEwMyAtcDEgLWIgLmVwZWw3LWhlYWRlci13 b3JrYXJvdW5kcwogJXBhdGNoIC1QMTA0IC1wMSAtYiAuZWw3Y3VwcwogJXBhdGNoIC1QMTA1IC1w MSAtYiAuZWw3LW9sZC1saWJkcm0KICVwYXRjaCAtUDEwNiAtcDEgLWIgLmVsNy1lcmFzZS1maXgK LSNwYXRjaCAtUDEwNyAtcDEgLWIgLmVsNy1leHRyYS1vcGVyYXRvci1lcXVhbGVxdWFsCislcGF0 Y2ggLVAxMDcgLXAxIC1iIC5lbDctZXh0cmEtb3BlcmF0b3ItZXF1YWxlcXVhbAogJXBhdGNoIC1Q MTA4IC1wMSAtYiAuZWw3X3Y0bDJfcXVhbnRpemF0aW9uCiAlcGF0Y2ggLVAxMDkgLXAxIC1iIC53 aXJlbGVzcwogJXBhdGNoIC1QMTEwIC1wMSAtYiAuYnVpbGRmbGFnLWVsNwotI3BhdGNoIC1QMTEx IC1wMSAtYiAuY29uc3RleHByCislcGF0Y2ggLVAxMTEgLXAxIC1iIC5pbmxpbmUtZnVuY3Rpb24t ZWw3CiAlcGF0Y2ggLVAxMTMgLXAxIC1iIC5lbDctY2xhbmctdmVyc2lvbi13YXJuaW5nCiAlcGF0 Y2ggLVAxMTQgLXAxIC1SIC1iIC5jbGFuZy1idWlsZC1mYWlsdXJlCi0jcGF0Y2ggLVAzMDAgLXAx IC1iIC5ub19tYXRjaGluZ19jb25zdHJ1Y3RvcgorJXBhdGNoIC1QMzAwIC1wMSAtYiAubm9fbWF0 Y2hpbmdfY29uc3RydWN0b3IKICVwYXRjaCAtUDMwMSAtcDEgLWIgLndvcmthcm91bmRfY2xhbmct U2tDb2xvcjRmCiAlcGF0Y2ggLVAzMDIgLXAxIC1iIC53b3JrYXJvdW5kX2NsYW5nX2J1Zy1zdHJ1 Y3R1cmVkX2JpbmRpbmcKLSNwYXRjaCAtUDMwMyAtcDEgLWIgLnR5cGVuYW1lCislcGF0Y2ggLVAz MDMgLXAxIC1iIC50eXBlbmFtZQogJXBhdGNoIC1QMzA0IC1wMSAtYiAuc3RyaW5nLWNvbnZlcnQK ICVwYXRjaCAtUDMwNiAtcDEgLWIgLmFzc2VydAogJWVuZGlmCkBAIC0xMTQzLDggKzExNDUsMTEg QEAgdWRldi4KICVwYXRjaCAtUDMxMCAtcDEgLWIgLm1pc3NpbmctaGVhZGVyLWZpbGVzCiAlcGF0 Y2ggLVAzMTEgLXAxIC1iIC5jbGFuZy13YXJuaW5ncwogJXBhdGNoIC1QMzEyIC1wMSAtYiAuZnN0 YWNrLXByb3RlY3Rvci1zdHJvbmcKLSVwYXRjaCAtUDMxNiAtcDEgLWIgLmNsYW5nLWJ1aWxkLWZs YWdzCislcGF0Y2ggLVAzMTcgLXAxIC1iIC51bmlxdWVfcHRyLnBhdGNoCiAKKyVpZiAwJXs/cmhl bH0gPj0gOCB8fCAwJXs/ZmVkb3JhfQorJXBhdGNoIC1QMzE2IC1wMSAtYiAuY2xhbmctYnVpbGQt ZmxhZ3MKKyVlbmRpZgogJXBhdGNoIC1QMzUxIC1wMSAtYiAubW5lbW9uaWMtZXJyb3IKIAogJWlm ICV7ZGlzYWJsZV9idGl9Cg==