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: Merge #46 `Fix flatpak build` Date: Fri, 07 Aug 2026 16:07:18 GMT Message-ID: <178611883888.1.6420532743217227663.rpms-chromium-0c209b92ae81@fedoraproject.org> List-ID: X-Git-Repo: rpms/chromium X-Git-Branch: epel9-next X-Git-Rev: 0c209b92ae8148011ecc9a6989f01c27077fd09c QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvY2hyb21pdW0KQnJh bmNoIDogZXBlbDktbmV4dApDb21taXQgOiAwYzIwOWI5MmFlODE0ODAxMWVjYzlhNjk4OWYwMWMy NzA3N2ZkMDljCkF1dGhvciA6IFRoYW4gTmdvIDx0aGFuQGZlZG9yYXByb2plY3Qub3JnPgpEYXRl ICAgOiAyMDI1LTAxLTI3VDE2OjEzOjI1KzAwOjAwClN0YXRzICA6ICsxNzg0Ly03MCBpbiA3IGZp bGUocykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9jaHJvbWl1 bS9jLzBjMjA5YjkyYWU4MTQ4MDExZWNjOWE2OTg5ZjAxYzI3MDc3ZmQwOWM/YnJhbmNoPWVwZWw5 LW5leHQKCkxvZzoKTWVyZ2UgIzQ2IGBGaXggZmxhdHBhayBidWlsZGAKCi0tLQpkaWZmIC0tZ2l0 IGEvY2hyb21pdW0uc3BlYyBiL2Nocm9taXVtLnNwZWMKaW5kZXggZDM2ZGNiMi4uMDM1OWEyOSAx MDA2NDQKLS0tIGEvY2hyb21pdW0uc3BlYworKysgYi9jaHJvbWl1bS5zcGVjCkBAIC0zNywxMiAr MzcsMTggQEAKIAogIyBlbmFibGV8ZGlzYWJsZSBjaHJvbWVkcml2ZXIKICVnbG9iYWwgYnVpbGRf Y2hyb21lZHJpdmVyIDEKKyVpZiAwJXs/ZmxhdHBha30KKyVnbG9iYWwgYnVpbGRfY2hyb21lZHJp dmVyIDAKKyVlbmRpZgogCiAjIGVuYWJsZXxkaXNhYmxlIGhlYWRsZXNzIGNsaWVudCBidWlsZAog JWdsb2JhbCBidWlsZF9oZWFkbGVzcyAxCiAlaWZhcmNoIHBwYzY0bGUKICVnbG9iYWwgYnVpbGRf aGVhZGxlc3MgMAogJWVuZGlmCislaWYgMCV7P2ZsYXRwYWt9CislZ2xvYmFsIGJ1aWxkX2hlYWRs ZXNzIDAKKyVlbmRpZgogCiAjIGVuYWJsZXxkaXNhYmxlIGNocm9tZS1yZW1vdGUtZGVza3RvcCBi dWlsZAogJWdsb2JhbCBidWlsZF9yZW1vdGluZyAwCkBAIC00MzksNiArNDQ1LDEyIEBAIFBhdGNo NDEzOiBmaXgtdW5rbm93bi13YXJuaW5nLW9wdGlvbi1tZXNzYWdlcy5kaWZmCiBQYXRjaDQxNDog Y2FyZ28tYWRkLXBwYzY0LmRpZmYKIFBhdGNoNDE1OiBhZGQtcHBjNjQtcHRocmVhZC1zdGFjay1z aXplLnBhdGNoCiAKKyMgZmxhdHBhayBzYW5kYm94IHBhdGNoZXMgZnJvbQorIyBodHRwczovL2dp dGh1Yi5jb20vZmxhdGh1Yi9vcmcuY2hyb21pdW0uQ2hyb21pdW0vdHJlZS9tYXN0ZXIvcGF0Y2hl cy9jaHJvbWl1bQorUGF0Y2g0MTY6IGZsYXRwYWstQWRkLWluaXRpYWwtc2FuZGJveC1zdXBwb3J0 LnBhdGNoCitQYXRjaDQxNzogZmxhdHBhay1BZGp1c3QtcGF0aHMtZm9yLXRoZS1zYW5kYm94LnBh dGNoCitQYXRjaDQxODogZmxhdHBhay1FeHBvc2UtV2lkZXZpbmUtaW50by10aGUtc2FuZGJveC5w YXRjaAorCiAjIHVwc3RyZWFtIHBhdGNoZXMKIAogIyBVc2UgY2hyb21pdW0tbGF0ZXN0LnB5IHRv IGdlbmVyYXRlIGNsZWFuIHRhcmJhbGwgZnJvbSByZWxlYXNlZCBidWlsZCB0YXJiYWxscywgZm91 bmQgaGVyZToKQEAgLTY2Myw3ICs2NzUsNyBAQCBCdWlsZFJlcXVpcmVzOiBsaWJYTlZDdHJsLWRl dmVsCiAlZW5kaWYKIAogIyBPbmUgb2YgdGhlIHB5dGhvbiBzY3JpcHRzIGludm9rZXMgZ2l0IHRv IGxvb2sgZm9yIGEgaGFzaC4gU28gaGVscGZ1bC4KLUJ1aWxkUmVxdWlyZXM6CS91c3IvYmluL2dp dAorQnVpbGRSZXF1aXJlczoJZ2l0LWNvcmUKIEJ1aWxkUmVxdWlyZXM6CWh3ZGF0YQogQnVpbGRS ZXF1aXJlczoJa2VybmVsLWhlYWRlcnMKICVpZiAhICV7YnVuZGxlbGliZXZlbnR9CkBAIC03Nzks NyArNzkxLDcgQEAgUmVxdWlyZXM6IG5zcy1tZG5zJXtfaXNhfQogIyBHVEsgbW9kdWxlcyBpdCBl eHBlY3RzIHRvIGZpbmQgZm9yIHNvbWUgcmVhc29uLgogUmVxdWlyZXM6IGxpYmNhbmJlcnJhLWd0 azMle19pc2F9CiAKLSVpZiAwJXs/ZmVkb3JhfQorJWlmIDAlez9mZWRvcmF9ICYmICV7dW5kZWZp bmVkIGZsYXRwYWt9CiAjIFRoaXMgZW5hYmxlcyBzdXBwb3J0IGZvciB1MmYgdG9rZW5zCiBSZXF1 aXJlczogdTJmLWhpZHJhdy1wb2xpY3kKICVlbmRpZgpAQCAtOTIwLDkgKzkzMiwxMSBAQCBQcm92 aWRlczogYnVuZGxlZCh4ZGctbWltZSkKIFByb3ZpZGVzOiBidW5kbGVkKHhkZy11c2VyLWRpcnMp CiAjIFByb3ZpZGVzOiBidW5kbGVkKHpsaWIpID0gMS4yLjExCiAKKyVpZiAle3VuZGVmaW5lZCBm bGF0cGFrfQogIyBGb3Igc2VsaW51eCBzY3JpcHRsZXQKIFJlcXVpcmVzKHBvc3QpOiAvdXNyL3Ni aW4vc2VtYW5hZ2UKIFJlcXVpcmVzKHBvc3QpOiAvdXNyL3NiaW4vcmVzdG9yZWNvbgorJWVuZGlm CiAKICVkZXNjcmlwdGlvbgogQ2hyb21pdW0gaXMgYW4gb3Blbi1zb3VyY2Ugd2ViIGJyb3dzZXIs IHBvd2VyZWQgYnkgV2ViS2l0IChCbGluaykuCkBAIC0xMTMxLDYgKzExNDUsMTIgQEAgUXQ2IFVJ IGZvciBjaHJvbWl1bS4KICVwYXRjaCAtUDQxNSAtcDEgLWIgLmFkZC1wcGM2NC1wdGhyZWFkLXN0 YWNrLXNpemUKICVlbmRpZgogCislaWYgMCV7P2ZsYXRwYWt9CislcGF0Y2ggLVA0MTYgLXAxIC1i IC5mbGF0cGFrLWluaXRpYWwtc2FuZGJveAorJXBhdGNoIC1QNDE3IC1wMSAtYiAuZmxhdHBhay1z YW5kYm94LXBhdGhzCislcGF0Y2ggLVA0MTggLXAxIC1iIC5mbGF0cGFrLXdpZGV2aW5lCislZW5k aWYKKwogIyBDaGFuZ2Ugc2hlYmFuZyBpbiBhbGwgcmVsZXZhbnQgZmlsZXMgaW4gdGhpcyBkaXJl Y3RvcnkgYW5kIGFsbCBzdWJkaXJlY3RvcmllcwogIyBTZWUgYG1hbiBmaW5kYCBmb3IgaG93IHRo ZSBgLWV4ZWMgY29tbWFuZCB7fSArYCBzeW50YXggd29ya3MKIGZpbmQgLXR5cGUgZiBcKCAtaW5h bWUgIioucHkiIFwpIC1leGVjIHNlZCAtaSAnMXM9XiMhICovdXNyL2Jpbi9cKHB5dGhvblx8ZW52 IHB5dGhvblwpWzIzXVw/PSMhJXtjaHJvbWl1bV9weWJpbn09JyB7fSArCkBAIC0xMTUxLDEyICsx MTcxLDEyIEBAIGZpbmQgLXR5cGUgZiBcKCAtaW5hbWUgIioucHkiIFwpIC1leGVjIHNlZCAtaSAn MXM9XiMhICovdXNyL2Jpbi9cKHB5dGhvblx8ZW52IHB5CiBwb3BkCiAlZWxzZQogICBta2RpciAt cCB0aGlyZF9wYXJ0eS9ub2RlL2xpbnV4L25vZGUtbGludXgteDY0L2JpbgotICBsbiAtcyAle19i aW5kaXJ9L25vZGUgdGhpcmRfcGFydHkvbm9kZS9saW51eC9ub2RlLWxpbnV4LXg2NC9iaW4vbm9k ZQorICBsbiAtcyAkKHdoaWNoIG5vZGUpIHRoaXJkX3BhcnR5L25vZGUvbGludXgvbm9kZS1saW51 eC14NjQvYmluL25vZGUKICVlbmRpZgogCiAjIEdldCByaWQgb2YgdGhlIGJ1bmRsZWQgZXNidWls ZAogJWlmIDAlez9mZWRvcmF9Ci0gIGxuIC1zZiAle19iaW5kaXJ9L2VzYnVpbGQgdGhpcmRfcGFy dHkvZGV2dG9vbHMtZnJvbnRlbmQvc3JjL3RoaXJkX3BhcnR5L2VzYnVpbGQvZXNidWlsZAorICBs biAtc2YgJCh3aGljaCBlc2J1aWxkKSB0aGlyZF9wYXJ0eS9kZXZ0b29scy1mcm9udGVuZC9zcmMv dGhpcmRfcGFydHkvZXNidWlsZC9lc2J1aWxkCiAlZWxzZQogICAlaWZhcmNoIHg4Nl82NAogICAg IHRhciAtenhmICV7U09VUkNFMTR9IC0tZGlyZWN0b3J5ICV7X3RtcHBhdGh9CkBAIC0xMTcxLDcg KzExOTEsNyBAQCBwb3BkCiBybSAtcmYgYnVpbGR0b29scy90aGlyZF9wYXJ0eS9ldS1zdHJpcC9i aW4vZXUtc3RyaXAKICAgCiAjIFJlcGxhY2UgaXQgd2l0aCBhIHN5bWxpbmsgdG8gdGhlIEZlZG9y YSBjb3B5Ci1sbiAtcyAle19iaW5kaXJ9L2V1LXN0cmlwIGJ1aWxkdG9vbHMvdGhpcmRfcGFydHkv ZXUtc3RyaXAvYmluL2V1LXN0cmlwCitsbiAtcyAkKHdoaWNoIGV1LXN0cmlwKSBidWlsZHRvb2xz L3RoaXJkX3BhcnR5L2V1LXN0cmlwL2Jpbi9ldS1zdHJpcAogCiAlaWYgJXtidW5kbGVsaWJ1c2J4 fQogIyBubyBoYWNraXR5IGhhY2sgaGFjawpAQCAtMTE3OSw3ICsxMTk5LDcgQEAgbG4gLXMgJXtf YmluZGlyfS9ldS1zdHJpcCBidWlsZHRvb2xzL3RoaXJkX3BhcnR5L2V1LXN0cmlwL2Jpbi9ldS1z dHJpcAogIyBoYWNraXR5IGhhY2sgaGFjawogcm0gLXJmIHRoaXJkX3BhcnR5L2xpYnVzYi9zcmMv bGlidXNiL2xpYnVzYi5oCiAjIHdlIF9zaG91bGRuJ3QgbmVlZCB0byBkbyB0aGlzLCBidXQgaXQg bG9va3MgbGlrZSB3ZSBkby4KLWNwIC1hICV7X2luY2x1ZGVkaXJ9L2xpYnVzYi0xLjAvbGlidXNi LmggdGhpcmRfcGFydHkvbGlidXNiL3NyYy9saWJ1c2IvbGlidXNiLmgKK2NwIC1hICQocGtnLWNv bmZpZyAtLXZhcmlhYmxlPWluY2x1ZGVkaXIgbGlidXNiLTEuMCkvbGlidXNiLTEuMC9saWJ1c2Iu aCB0aGlyZF9wYXJ0eS9saWJ1c2Ivc3JjL2xpYnVzYi9saWJ1c2IuaAogJWVuZGlmCiAKICMgSGFy ZCBjb2RlIGV4dHJhIHZlcnNpb24KQEAgLTEyNDMsNyArMTI2Myw4IEBAIGV4cG9ydCBSVVNUQ19C T09UU1RSQVA9MQogIyBzZXQgcnVzdGMgdmVyc2lvbgogcnVzdGNfdmVyc2lvbj0iJChydXN0YyAt LXZlcnNpb24pIgogIyBzZXQgcnVzdCBiaW5kZ2VuIHJvb3QKLXJ1c3RfYmluZGdlbl9yb290PSIl e19wcmVmaXh9IgorcnVzdF9iaW5kZ2VuX3Jvb3Q9IiQod2hpY2ggYmluZGdlbiB8IHNlZCAncyMv YmluLy4qIyMnKSIKK3J1c3Rfc3lzcm9vdF9hYnNvbHV0ZT0iJChydXN0YyAtLXByaW50IHN5c3Jv b3QpIgogCiAjIHNldCBjbGFuZyB2ZXJzaW9uCiBjbGFuZ192ZXJzaW9uPSIkKGNsYW5nIC0tdmVy c2lvbiB8IHNlZCAtbiAncy9jbGFuZyB2ZXJzaW9uIC8vcCcgfCBjdXQgLWQuIC1mMSkiCkBAIC0x Mjg3LDcgKzEzMDgsNyBAQCBDSFJPTUlVTV9DT1JFX0dOX0RFRklORVMrPScgY2xhbmdfdXNlX2No cm9tZV9wbHVnaW5zPWZhbHNlJwogQ0hST01JVU1fQ09SRV9HTl9ERUZJTkVTKz0nIHVzZV9sbGQ9 dHJ1ZScKIAogIyBlbmFibGUgc3lzdGVtIHJ1c3QKLUNIUk9NSVVNX0NPUkVfR05fREVGSU5FUys9 JyBydXN0X3N5c3Jvb3RfYWJzb2x1dGU9IiV7X3ByZWZpeH0iJworQ0hST01JVU1fQ09SRV9HTl9E RUZJTkVTKz0iIHJ1c3Rfc3lzcm9vdF9hYnNvbHV0ZT1cIiRydXN0X3N5c3Jvb3RfYWJzb2x1dGVc IiIKIENIUk9NSVVNX0NPUkVfR05fREVGSU5FUys9IiBydXN0X2JpbmRnZW5fcm9vdD1cIiRydXN0 X2JpbmRnZW5fcm9vdFwiIgogQ0hST01JVU1fQ09SRV9HTl9ERUZJTkVTKz0iIHJ1c3RjX3ZlcnNp b249XCIkcnVzdGNfdmVyc2lvblwiIgogCkBAIC0xMzM5LDEzICsxMzYwLDEzIEBAIENIUk9NSVVN X0JST1dTRVJfR05fREVGSU5FUys9JyBydGNfdXNlX2gyNjQ9ZmFsc2UnCiBDSFJPTUlVTV9CUk9X U0VSX0dOX0RFRklORVMrPScgdXNlX2tlcmJlcm9zPXRydWUnCiAKICVpZiAle3VzZV9xdH0KLUNI Uk9NSVVNX0JST1dTRVJfR05fREVGSU5FUys9JyB1c2VfcXQ9dHJ1ZSBtb2NfcXQ1X3BhdGg9IiV7 X2xpYmRpcn0vcXQ1L2Jpbi8iJworQ0hST01JVU1fQlJPV1NFUl9HTl9ERUZJTkVTKz0iIHVzZV9x dD10cnVlIG1vY19xdDVfcGF0aD1cIiQoJXtfcXQ1X3FtYWtlfSAtcXVlcnkgUVRfSE9TVF9CSU5T KVwiIgogJWVsc2UKIENIUk9NSVVNX0JST1dTRVJfR05fREVGSU5FUys9JyB1c2VfcXQ9ZmFsc2Un CiAlZW5kaWYKIAogJWlmICV7dXNlX3F0Nn0KLUNIUk9NSVVNX0JST1dTRVJfR05fREVGSU5FUys9 JyB1c2VfcXQ2PXRydWUgbW9jX3F0Nl9wYXRoPSIle19saWJkaXJ9L3F0Ni9saWJleGVjLyInCitD SFJPTUlVTV9CUk9XU0VSX0dOX0RFRklORVMrPSIgdXNlX3F0Nj10cnVlIG1vY19xdDZfcGF0aD1c IiQoJXtfcXQ2X3FtYWtlfSAtcXVlcnkgUVRfSE9TVF9MSUJFWEVDUylcIiIKICVlbHNlCiBDSFJP TUlVTV9CUk9XU0VSX0dOX0RFRklORVMrPScgdXNlX3F0Nj1mYWxzZScKICVlbmRpZgpAQCAtMTUx NCw3ICsxNTM1LDcgQEAgZmkKICVpZiAle2Jvb3RzdHJhcH0KIHRvb2xzL2duL2Jvb3RzdHJhcC9i b290c3RyYXAucHkgLS1nbi1nZW4tYXJncz0iJENIUk9NSVVNX0NPUkVfR05fREVGSU5FUyAkQ0hS T01JVU1fQlJPV1NFUl9HTl9ERUZJTkVTIgogJWVsc2UKLW1rZGlyIC1wICV7Y2hyb21lYnVpbGRk aXJ9ICYmIGNwIC1hICV7X2JpbmRpcn0vZ24gJXtjaHJvbWVidWlsZGRpcn0vCitta2RpciAtcCAl e2Nocm9tZWJ1aWxkZGlyfSAmJiBjcCAtYSAkKHdoaWNoIGduKSAle2Nocm9tZWJ1aWxkZGlyfS8K ICVlbmRpZgogCiAle2Nocm9tZWJ1aWxkZGlyfS9nbiAtLXNjcmlwdC1leGVjdXRhYmxlPSV7Y2hy b21pdW1fcHliaW59IGdlbiAtLWFyZ3M9IiRDSFJPTUlVTV9DT1JFX0dOX0RFRklORVMgJENIUk9N SVVNX0JST1dTRVJfR05fREVGSU5FUyIgJXtjaHJvbWVidWlsZGRpcn0KQEAgLTE3MzgsNiArMTc1 OSw3IEBAIGNwIC1hICV7U09VUkNFOX0gJXtidWlsZHJvb3R9JXtfZGF0YWRpcn0vZ25vbWUtY29u dHJvbC1jZW50ZXIvZGVmYXVsdC1hcHBzLwogIyBSRUFETUUuZmVkb3JhCiBjcCAle1NPVVJDRTF9 IC4KIAorJWlmICV7dW5kZWZpbmVkIGZsYXRwYWt9CiAlcG9zdAogIyBTZXQgU0VMaW51eCBsYWJl bHMgLSBzZW1hbmFnZSBpdHNlbGYgd2lsbCBhZGp1c3QgdGhlIGxpYiBkaXJlY3RvcnkgbmFtaW5n CiAjIEJ1dCBvbmx5IGRvIGl0IHdoZW4gc2VsaW51eCBpcyBlbmFibGVkLCBvdGhlcndpc2UsIGl0 IGdldHMgbm9pc3kuCkBAIC0xNzQ3LDYgKzE3NjksNyBAQCBpZiBzZWxpbnV4ZW5hYmxlZDsgdGhl bgogCXNlbWFuYWdlIGZjb250ZXh0IC1hIC10IGNocm9tZV9zYW5kYm94X2V4ZWNfdCAvdXNyL2xp Yi9jaHJvbWUtc2FuZGJveCAmPi9kZXYvbnVsbCB8fCA6CiAJcmVzdG9yZWNvbiAtUiAtdiAle2No cm9taXVtX3BhdGh9LyV7Y2hyb21pdW1fYnJvd3Nlcl9jaGFubmVsfSAmPi9kZXYvbnVsbCB8fCA6 CiBmaQorJWVuZGlmCiAKICVpZiAle2J1aWxkX3JlbW90aW5nfQogJXByZXRyYW5zIC1uIGNocm9t ZS1yZW1vdGUtZGVza3RvcCAtcCA8bHVhPiAKCmRpZmYgLS1naXQgYS9mbGF0cGFrLUFkZC1pbml0 aWFsLXNhbmRib3gtc3VwcG9ydC5wYXRjaCBiL2ZsYXRwYWstQWRkLWluaXRpYWwtc2FuZGJveC1z dXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZTJkOTQK LS0tIC9kZXYvbnVsbAorKysgYi9mbGF0cGFrLUFkZC1pbml0aWFsLXNhbmRib3gtc3VwcG9ydC5w YXRjaApAQCAtMCwwICsxLDEzMjUgQEAKK0Zyb20gYWIxMTUyOGYyNmEyMTI0MTdiMGI2MDg0YjUy YzAyZTk5MmZlNDNmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJ5YW4gR29uemFs ZXogPHJ5bWcxOUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE3IE1hciAyMDIwIDEzOjE4OjI3IC0w NTAwCitTdWJqZWN0OiBbUEFUQ0hdIGZsYXRwYWs6IEFkZCBpbml0aWFsIHNhbmRib3ggc3VwcG9y dAorCistLS0KKyAuZ2l0aWdub3JlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg fCAgIDEgKworIGJhc2UvdGhyZWFkaW5nL3RocmVhZF9yZXN0cmljdGlvbnMuaCAgICAgICAgICB8 ICAgNSArCisgLi4uL3NhbmRib3hfaW50ZXJuYWxzL3NhbmRib3hfaW50ZXJuYWxzLnRzICAgIHwg ICA0ICsKKyAuLi4vdWkvd2VidWkvc2FuZGJveC9zYW5kYm94X2ludGVybmFsc191aS5jYyAgfCAg IDYgKy0KKyBjb250ZW50L2Jyb3dzZXIvY2hpbGRfcHJvY2Vzc19ob3N0X2ltcGwuY2MgICAgfCAg IDggKy0KKyAuLi4venlnb3RlX2hvc3Qvenlnb3RlX2hvc3RfaW1wbF9saW51eC5jYyAgICAgfCAg MzkgKy0KKyAuLi4venlnb3RlX2hvc3Qvenlnb3RlX2hvc3RfaW1wbF9saW51eC5oICAgICAgfCAg IDEgKworIGNvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5jYyAgICAgICAgICAgICAgICB8ICAg NiArLQorIGNvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5oICAgICAgICAgICAgICAgICB8ICAg MiArCisgY29udGVudC96eWdvdGUvenlnb3RlX21haW5fbGludXguY2MgICAgICAgICAgIHwgIDE2 ICstCisgc2FuZGJveC9saW51eC9CVUlMRC5nbiAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEw ICstCisgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3BpZF9tYXAuY2MgICAgIHwgIDU3 ICsrCisgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3BpZF9tYXAuaCAgICAgIHwgIDQ2 ICsrCisgc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guY2MgICAgIHwgNTc2 ICsrKysrKysrKysrKysrKysrKworIHNhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5k Ym94LmggICAgICB8IDExOCArKysrCisgc2FuZGJveC9wb2xpY3kvQlVJTEQuZ24gICAgICAgICAg ICAgICAgICAgICAgIHwgICAzICsKKyBzYW5kYm94L3BvbGljeS9saW51eC9zYW5kYm94X2xpbnV4 LmNjICAgICAgICAgfCAgIDggKworIHNhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfbGludXgu aCAgICAgICAgICB8ICAgOCArCisgLi4uL3NlcnZpY2VfcHJvY2Vzc19sYXVuY2hlci5jYyAgICAg ICAgICAgICAgIHwgIDEyICstCisgMTkgZmlsZXMgY2hhbmdlZCwgOTA3IGluc2VydGlvbnMoKyks IDE5IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW5kYm94L2xpbnV4L3NlcnZp Y2VzL2ZsYXRwYWtfcGlkX21hcC5jYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzYW5kYm94L2xpbnV4 L3NlcnZpY2VzL2ZsYXRwYWtfcGlkX21hcC5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNhbmRib3gv bGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmNjCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHNh bmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmgKKworZGlmZiAtLWdpdCBhLy5n aXRpZ25vcmUgYi8uZ2l0aWdub3JlCitpbmRleCA5MDU2MDMwNTIzODA3Li4yYzEzZDBhZDVmMWM3 IDEwMDY0NAorLS0tIGEvLmdpdGlnbm9yZQorKysrIGIvLmdpdGlnbm9yZQorQEAgLTc1LDYgKzc1 LDcgQEAgdnMtY2hyb21pdW0tcHJvamVjdC50eHQKKyAvLmFuZHJvaWRfZW11bGF0b3IvCisgLy5j bGFuZ2QvCisgLy5jbGFuZ2QtaW5kZXgvCisrLy5mbGF0cGFrLWJ1aWxkZXIvCisgIyBTZXR0aW5n cyBkaXJlY3RvcmllcyBmb3IgZWNsaXBzZQorIC8uZXh0ZXJuYWxUb29sQnVpbGRlcnMvCisgLy5z ZXR0aW5ncy8KK2RpZmYgLS1naXQgYS9iYXNlL3RocmVhZGluZy90aHJlYWRfcmVzdHJpY3Rpb25z LmggYi9iYXNlL3RocmVhZGluZy90aHJlYWRfcmVzdHJpY3Rpb25zLmgKK2luZGV4IDE0OTgzOGJl NzI1ZjIuLjgxMDM0YWNjNzFlOTcgMTAwNjQ0CistLS0gYS9iYXNlL3RocmVhZGluZy90aHJlYWRf cmVzdHJpY3Rpb25zLmgKKysrKyBiL2Jhc2UvdGhyZWFkaW5nL3RocmVhZF9yZXN0cmljdGlvbnMu aAorQEAgLTQwNyw2ICs0MDcsOSBAQCBjbGFzcyBTY29wZWRBbGxvd1RocmVhZEpvaW5Gb3JXZWJS dGNUcmFuc3BvcnQ7CisgbmFtZXNwYWNlIHJsel9saWIgeworIGNsYXNzIEZpbmFuY2lhbFBpbmc7 CisgfQorK25hbWVzcGFjZSBzYW5kYm94IHsKKytjbGFzcyBGbGF0cGFrU2FuZGJveDsKKyt9Cisg bmFtZXNwYWNlIHNlcnZpY2VfbWFuYWdlciB7CisgY2xhc3MgU2VydmljZVByb2Nlc3NMYXVuY2hl cjsKKyB9CitAQCAtNjQ5LDYgKzY1Miw3IEBAIGNsYXNzIEJBU0VfRVhQT1JUIFNjb3BlZEFsbG93 QmxvY2tpbmcgeworICAgZnJpZW5kIGNsYXNzIHJlbW90aW5nOjoKKyAgICAgICBTY29wZWRCeXBh c3NJT1RocmVhZFJlc3RyaWN0aW9uczsgIC8vIGh0dHA6Ly9jcmJ1Zy5jb20vMTE0NDE2MQorICAg ZnJpZW5kIGNsYXNzIHJlbW90aW5nOjpTY29wZWRBbGxvd0Jsb2NraW5nRm9yQ3Jhc2hSZXBvcnRp bmc7CisrICBmcmllbmQgY2xhc3Mgc2FuZGJveDo6RmxhdHBha1NhbmRib3g7CisgICBmcmllbmQg Y2xhc3MgdWk6OkRybURpc3BsYXlIb3N0TWFuYWdlcjsKKyAgIGZyaWVuZCBjbGFzcyB1aTo6U2Nv cGVkQWxsb3dCbG9ja2luZ0ZvckdibVN1cmZhY2U7CisgICBmcmllbmQgY2xhc3MgdWk6OlNlbGVj dEZpbGVEaWFsb2dMaW51eDsKK0BAIC03OTIsNiArNzk2LDcgQEAgY2xhc3MgQkFTRV9FWFBPUlQg U2NvcGVkQWxsb3dCYXNlU3luY1ByaW1pdGl2ZXMgeworICAgZnJpZW5kIGNsYXNzIHJsel9saWI6 OkZpbmFuY2lhbFBpbmc7CisgICBmcmllbmQgY2xhc3Mgc2hlbGxfaW50ZWdyYXRpb25fbGludXg6 OgorICAgICAgIExhdW5jaFhkZ1V0aWxpdHlTY29wZWRBbGxvd0Jhc2VTeW5jUHJpbWl0aXZlczsK KysgIGZyaWVuZCBjbGFzcyBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDsKKyAgIGZyaWVuZCBjbGFz cyBzdG9yYWdlOjpPYmZ1c2NhdGVkRmlsZVV0aWw7CisgICBmcmllbmQgY2xhc3Mgc3luY2VyOjpI dHRwQnJpZGdlOworICAgZnJpZW5kIGNsYXNzIHN5bmNlcjo6R2V0TG9jYWxDaGFuZ2VzUmVxdWVz dDsKK2RpZmYgLS1naXQgYS9jaHJvbWUvYnJvd3Nlci9yZXNvdXJjZXMvc2FuZGJveF9pbnRlcm5h bHMvc2FuZGJveF9pbnRlcm5hbHMudHMgYi9jaHJvbWUvYnJvd3Nlci9yZXNvdXJjZXMvc2FuZGJv eF9pbnRlcm5hbHMvc2FuZGJveF9pbnRlcm5hbHMudHMKK2luZGV4IGY2ZDJmM2YwYmM0MWMuLmZj YzU4YzY3MzVlYWEgMTAwNjQ0CistLS0gYS9jaHJvbWUvYnJvd3Nlci9yZXNvdXJjZXMvc2FuZGJv eF9pbnRlcm5hbHMvc2FuZGJveF9pbnRlcm5hbHMudHMKKysrKyBiL2Nocm9tZS9icm93c2VyL3Jl c291cmNlcy9zYW5kYm94X2ludGVybmFscy9zYW5kYm94X2ludGVybmFscy50cworQEAgLTE0MCw2 ICsxNDAsNyBAQCBmdW5jdGlvbiBhZGRHb29kQmFkUm93KG5hbWU6IHN0cmluZywgcmVzdWx0OiBi b29sZWFuKTogSFRNTEVsZW1lbnQgeworIGZ1bmN0aW9uIGxpbnV4SGFuZGxlcigpIHsKKyAgIGNv bnN0IHN1aWRTYW5kYm94ID0gbG9hZFRpbWVEYXRhLmdldEJvb2xlYW4oJ3N1aWQnKTsKKyAgIGNv bnN0IG5zU2FuZGJveCA9IGxvYWRUaW1lRGF0YS5nZXRCb29sZWFuKCd1c2VyTnMnKTsKKysgIGNv bnN0IGZsYXRwYWtTYW5kYm94ID0gbG9hZFRpbWVEYXRhLmdldEJvb2xlYW4oJ2ZsYXRwYWsnKTsK KyAKKyAgIGxldCBsYXllcjFTYW5kYm94VHlwZSA9ICdOb25lJzsKKyAgIGxldCBsYXllcjFTYW5k Ym94Q3NzQ2xhc3MgPSBTdGF0dXNDbGFzcy5CQUQ7CitAQCAtMTQ5LDYgKzE1MCw5IEBAIGZ1bmN0 aW9uIGxpbnV4SGFuZGxlcigpIHsKKyAgIH0gZWxzZSBpZiAobnNTYW5kYm94KSB7CisgICAgIGxh eWVyMVNhbmRib3hUeXBlID0gJ05hbWVzcGFjZSc7CisgICAgIGxheWVyMVNhbmRib3hDc3NDbGFz cyA9IFN0YXR1c0NsYXNzLkdPT0Q7CisrICB9IGVsc2UgaWYgKGZsYXRwYWtTYW5kYm94KSB7Cisr ICAgIGxheWVyMVNhbmRib3hUeXBlID0gJ0ZsYXRwYWsnOworKyAgICBsYXllcjFTYW5kYm94Q3Nz Q2xhc3MgPSBTdGF0dXNDbGFzcy5HT09EOworICAgfQorIAorICAgYWRkU3RhdHVzUm93KCdMYXll ciAxIFNhbmRib3gnLCBsYXllcjFTYW5kYm94VHlwZSwgbGF5ZXIxU2FuZGJveENzc0NsYXNzKTsK K2RpZmYgLS1naXQgYS9jaHJvbWUvYnJvd3Nlci91aS93ZWJ1aS9zYW5kYm94L3NhbmRib3hfaW50 ZXJuYWxzX3VpLmNjIGIvY2hyb21lL2Jyb3dzZXIvdWkvd2VidWkvc2FuZGJveC9zYW5kYm94X2lu dGVybmFsc191aS5jYworaW5kZXggODJhYTI3Nzg3YTVlMC4uMzJiZjY3NGYzM2RhNiAxMDA2NDQK Ky0tLSBhL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NhbmRib3gvc2FuZGJveF9pbnRlcm5hbHNf dWkuY2MKKysrKyBiL2Nocm9tZS9icm93c2VyL3VpL3dlYnVpL3NhbmRib3gvc2FuZGJveF9pbnRl cm5hbHNfdWkuY2MKK0BAIC0yMCw2ICsyMCw3IEBACisgI2luY2x1ZGUgImNvbnRlbnQvcHVibGlj L2Jyb3dzZXIvd2ViX2NvbnRlbnRzLmgiCisgI2luY2x1ZGUgImNvbnRlbnQvcHVibGljL2Jyb3dz ZXIvd2ViX3VpLmgiCisgI2luY2x1ZGUgImNvbnRlbnQvcHVibGljL2Jyb3dzZXIvd2ViX3VpX2Rh dGFfc291cmNlLmgiCisrI2luY2x1ZGUgInNhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfbGlu dXguaCIKKyAjaW5jbHVkZSAic2VydmljZXMvbmV0d29yay9wdWJsaWMvbW9qb20vY29udGVudF9z ZWN1cml0eV9wb2xpY3kubW9qb20uaCIKKyAKKyAjaWYgQlVJTERGTEFHKElTX1dJTikKK0BAIC00 Niw2ICs0Nyw4IEBAIHN0YXRpYyB2b2lkIFNldFNhbmRib3hTdGF0dXNEYXRhKGNvbnRlbnQ6Oldl YlVJRGF0YVNvdXJjZSogc291cmNlKSB7CisgCisgICBzb3VyY2UtPkFkZEJvb2xlYW4oInN1aWQi LCBzdGF0dXMgJiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRib3hMaW51eDo6a1NVSUQpOworICAgc291 cmNlLT5BZGRCb29sZWFuKCJ1c2VyTnMiLCBzdGF0dXMgJiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRi b3hMaW51eDo6a1VzZXJOUyk7CisrICBzb3VyY2UtPkFkZEJvb2xlYW4oImZsYXRwYWsiLAorKyAg ICAgICAgICAgICAgICAgICAgIHN0YXR1cyAmIHNhbmRib3g6OnBvbGljeTo6U2FuZGJveExpbnV4 OjprRmxhdHBhayk7CisgICBzb3VyY2UtPkFkZEJvb2xlYW4oInBpZE5zIiwgc3RhdHVzICYgc2Fu ZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtQSUROUyk7CisgICBzb3VyY2UtPkFkZEJvb2xl YW4oIm5ldE5zIiwgc3RhdHVzICYgc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtOZXRO Uyk7CisgICBzb3VyY2UtPkFkZEJvb2xlYW4oInNlY2NvbXBCcGYiLAorQEAgLTYzLDcgKzY2LDgg QEAgc3RhdGljIHZvaWQgU2V0U2FuZGJveFN0YXR1c0RhdGEoY29udGVudDo6V2ViVUlEYXRhU291 cmNlKiBzb3VyY2UpIHsKKyAKKyAgIC8vIFJlcXVpcmUgZWl0aGVyIHRoZSBzZXR1aWQgb3IgbmFt ZXNwYWNlIHNhbmRib3ggZm9yIG91ciBmaXJzdC1sYXllciBzYW5kYm94LgorICAgYm9vbCBnb29k X2xheWVyMSA9IChzdGF0dXMgJiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRib3hMaW51eDo6a1NVSUQg fHwKKy0gICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICYgc2FuZGJveDo6cG9saWN5OjpTYW5k Ym94TGludXg6OmtVc2VyTlMpICYmCisrICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cyAmIHNh bmRib3g6OnBvbGljeTo6U2FuZGJveExpbnV4OjprVXNlck5TIHx8CisrICAgICAgICAgICAgICAg ICAgICAgIHN0YXR1cyAmIHNhbmRib3g6OnBvbGljeTo6U2FuZGJveExpbnV4OjprRmxhdHBhaykg JiYKKyAgICAgICAgICAgICAgICAgICAgICBzdGF0dXMgJiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRi b3hMaW51eDo6a1BJRE5TICYmCisgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzICYgc2FuZGJv eDo6cG9saWN5OjpTYW5kYm94TGludXg6OmtOZXROUzsKKyAgIC8vIEEgc2Vjb25kLWxheWVyIHNh bmRib3ggaXMgYWxzbyByZXF1aXJlZCB0byBiZSBhZGVxdWF0ZWx5IHNhbmRib3hlZC4KK2RpZmYg LS1naXQgYS9jb250ZW50L2Jyb3dzZXIvY2hpbGRfcHJvY2Vzc19ob3N0X2ltcGwuY2MgYi9jb250 ZW50L2Jyb3dzZXIvY2hpbGRfcHJvY2Vzc19ob3N0X2ltcGwuY2MKK2luZGV4IDk1ZGY1NzY1ODBh OWUuLjhkNWUwNjk0NjYwYjYgMTAwNjQ0CistLS0gYS9jb250ZW50L2Jyb3dzZXIvY2hpbGRfcHJv Y2Vzc19ob3N0X2ltcGwuY2MKKysrKyBiL2NvbnRlbnQvYnJvd3Nlci9jaGlsZF9wcm9jZXNzX2hv c3RfaW1wbC5jYworQEAgLTQ1LDYgKzQ1LDcgQEAKKyAKKyAjaWYgQlVJTERGTEFHKElTX0xJTlVY KSB8fCBCVUlMREZMQUcoSVNfQ0hST01FT1MpCisgI2luY2x1ZGUgImJhc2UvbGludXhfdXRpbC5o IgorKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5oIgor ICNlbGlmIEJVSUxERkxBRyhJU19NQUMpCisgI2luY2x1ZGUgImJhc2UvYXBwbGUvZm91bmRhdGlv bl91dGlsLmgiCisgI2luY2x1ZGUgImNvbnRlbnQvYnJvd3Nlci9tYWNfaGVscGVycy5oIgorQEAg LTc4LDcgKzc5LDEyIEBAIGJhc2U6OkZpbGVQYXRoIENoaWxkUHJvY2Vzc0hvc3Q6OkdldENoaWxk UGF0aChpbnQgZmxhZ3MpIHsKKyAjaWYgQlVJTERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZMQUco SVNfQ0hST01FT1MpCisgICAvLyBVc2UgL3Byb2Mvc2VsZi9leGUgcmF0aGVyIHRoYW4gb3VyIGtu b3duIGJpbmFyeSBwYXRoIHNvIHVwZGF0ZXMKKyAgIC8vIGNhbid0IHN3YXAgb3V0IHRoZSBiaW5h cnkgZnJvbSB1bmRlcm5lYXRoIHVzLgorLSAgaWYgKGNoaWxkX3BhdGguZW1wdHkoKSAmJiBmbGFn cyAmIENISUxEX0FMTE9XX1NFTEYpIHsKKysgIC8vIFRoaXMgaXMgbm90IG5lZWRlZCBmb3IgRmxh dHBha3MsIHdoZXJlIHVwZGF0ZXMgYXJlIGdvaW5nIHRvIGJlIGluCisrICAvLyBhIG5ldyBoYXJk bGluayB0cmVlLgorKyAgaWYgKChjaGlsZF9wYXRoLmVtcHR5KCkgJiYKKysgICAgICAgc2FuZGJv eDo6RmxhdHBha1NhbmRib3g6OkdldEluc3RhbmNlKCktPkdldFNhbmRib3hMZXZlbCgpID09Cisr ICAgICAgICAgICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6U2FuZGJveExldmVsOjprTm9uZSkg JiYKKysgICAgICBmbGFncyAmIENISUxEX0FMTE9XX1NFTEYpIHsKKyAgICAgY2hpbGRfcGF0aCA9 IGJhc2U6OkZpbGVQYXRoKGJhc2U6OmtQcm9jU2VsZkV4ZSk7CisgICB9CisgI2VuZGlmCitkaWZm IC0tZ2l0IGEvY29udGVudC9icm93c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGlu dXguY2MgYi9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hvc3Qvenlnb3RlX2hvc3RfaW1wbF9saW51 eC5jYworaW5kZXggOGVjYTkxOGI2NWNiZS4uMTcwM2ZiNmFkZTA0NCAxMDA2NDQKKy0tLSBhL2Nv bnRlbnQvYnJvd3Nlci96eWdvdGVfaG9zdC96eWdvdGVfaG9zdF9pbXBsX2xpbnV4LmNjCisrKysg Yi9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hvc3Qvenlnb3RlX2hvc3RfaW1wbF9saW51eC5jYwor QEAgLTEyLDYgKzEyLDcgQEAKKyAjaW5jbHVkZSAiYmFzZS9sb2dnaW5nLmgiCisgI2luY2x1ZGUg ImJhc2UvcG9zaXgvdW5peF9kb21haW5fc29ja2V0LmgiCisgI2luY2x1ZGUgImJhc2UvcHJvY2Vz cy9raWxsLmgiCisrI2luY2x1ZGUgImJhc2UvcHJvY2Vzcy9sYXVuY2guaCIKKyAjaW5jbHVkZSAi YmFzZS9wcm9jZXNzL21lbW9yeS5oIgorICNpbmNsdWRlICJiYXNlL3N0cmluZ3Mvc3RyaW5nX251 bWJlcl9jb252ZXJzaW9ucy5oIgorICNpbmNsdWRlICJiYXNlL3R5cGVzL2ZpeGVkX2FycmF5Lmgi CitAQCAtMjIsNiArMjMsNyBAQAorICNpbmNsdWRlICJjb250ZW50L2NvbW1vbi96eWdvdGUvenln b3RlX2hhbmRsZV9pbXBsX2xpbnV4LmgiCisgI2luY2x1ZGUgImNvbnRlbnQvcHVibGljL2NvbW1v bi96eWdvdGUvenlnb3RlX2hhbmRsZS5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZp Y2VzL2NyZWRlbnRpYWxzLmgiCisrI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvZmxh dHBha19zYW5kYm94LmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvbmFtZXNw YWNlX3NhbmRib3guaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zdWlkL2NsaWVudC9zZXR1 aWRfc2FuZGJveF9ob3N0LmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3VpZC9jb21tb24v c2FuZGJveC5oIgorQEAgLTcyLDYgKzc0LDcgQEAgWnlnb3RlSG9zdEltcGw6Olp5Z290ZUhvc3RJ bXBsKCkKKyAgICAgOiB1c2VfbmFtZXNwYWNlX3NhbmRib3hfKGZhbHNlKSwKKyAgICAgICB1c2Vf c3VpZF9zYW5kYm94XyhmYWxzZSksCisgICAgICAgdXNlX3N1aWRfc2FuZGJveF9mb3JfYWRqX29v bV9zY29yZV8oZmFsc2UpLAorKyAgICAgIHVzZV9mbGF0cGFrX3NhbmRib3hfKGZhbHNlKSwKKyAg ICAgICBzYW5kYm94X2JpbmFyeV8oKSwKKyAgICAgICB6eWdvdGVfcGlkc19sb2NrXygpLAorICAg ICAgIHp5Z290ZV9waWRzXygpIHt9CitAQCAtMTEwLDkgKzExMywxMiBAQCB2b2lkIFp5Z290ZUhv c3RJbXBsOjpJbml0KGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjb21tYW5kX2xpbmUpIHsKKyAg ICAgc2FuZGJveF9iaW5hcnlfID0gc2V0dWlkX3NhbmRib3hfaG9zdC0+R2V0U2FuZGJveEJpbmFy eVBhdGgoKS52YWx1ZSgpOworICAgfQorIAorLSAgaWYgKCFjb21tYW5kX2xpbmUuSGFzU3dpdGNo KAorLSAgICAgICAgICBzYW5kYm94Ojpwb2xpY3k6OnN3aXRjaGVzOjprRGlzYWJsZU5hbWVzcGFj ZVNhbmRib3gpICYmCistICAgICAgc2FuZGJveDo6Q3JlZGVudGlhbHM6OkNhbkNyZWF0ZVByb2Nl c3NJbk5ld1VzZXJOUygpKSB7CisrICBpZiAoc2FuZGJveDo6RmxhdHBha1NhbmRib3g6OkdldElu c3RhbmNlKCktPkdldFNhbmRib3hMZXZlbCgpICE9CisrICAgICAgc2FuZGJveDo6RmxhdHBha1Nh bmRib3g6OlNhbmRib3hMZXZlbDo6a05vbmUpIHsKKysgICAgdXNlX2ZsYXRwYWtfc2FuZGJveF8g PSB0cnVlOworKyAgfSBlbHNlIGlmICghY29tbWFuZF9saW5lLkhhc1N3aXRjaCgKKysgICAgICAg ICAgICAgICAgIHNhbmRib3g6OnBvbGljeTo6c3dpdGNoZXM6OmtEaXNhYmxlTmFtZXNwYWNlU2Fu ZGJveCkgJiYKKysgICAgICAgICAgICAgc2FuZGJveDo6Q3JlZGVudGlhbHM6OkNhbkNyZWF0ZVBy b2Nlc3NJbk5ld1VzZXJOUygpKSB7CisgICAgIHVzZV9uYW1lc3BhY2Vfc2FuZGJveF8gPSB0cnVl OworICAgfSBlbHNlIGlmICghY29tbWFuZF9saW5lLkhhc1N3aXRjaCgKKyAgICAgICAgICAgICAg ICAgIHNhbmRib3g6OnBvbGljeTo6c3dpdGNoZXM6OmtEaXNhYmxlU2V0dWlkU2FuZGJveCkgJiYK K0BAIC0xODMsMTAgKzE4OSwxNiBAQCBwaWRfdCBaeWdvdGVIb3N0SW1wbDo6TGF1bmNoWnlnb3Rl KAorICAgICBzYW5kYm94X2hvc3QtPlNldHVwTGF1bmNoRW52aXJvbm1lbnQoKTsKKyAgIH0KKyAK Ky0gIGJhc2U6OlByb2Nlc3MgcHJvY2VzcyA9CistICAgICAgKGlzX3NhbmRib3hlZF96eWdvdGUg JiYgdXNlX25hbWVzcGFjZV9zYW5kYm94XykKKy0gICAgICAgICAgPyBzYW5kYm94OjpOYW1lc3Bh Y2VTYW5kYm94OjpMYXVuY2hQcm9jZXNzKCpjbWRfbGluZSwgb3B0aW9ucykKKy0gICAgICAgICAg OiBiYXNlOjpMYXVuY2hQcm9jZXNzKCpjbWRfbGluZSwgb3B0aW9ucyk7CisrICBiYXNlOjpQcm9j ZXNzIHByb2Nlc3M7CisrICBpZiAoaXNfc2FuZGJveGVkX3p5Z290ZSAmJiB1c2VfbmFtZXNwYWNl X3NhbmRib3hfKSB7CisrICAgIHByb2Nlc3MgPSBzYW5kYm94OjpOYW1lc3BhY2VTYW5kYm94OjpM YXVuY2hQcm9jZXNzKCpjbWRfbGluZSwgb3B0aW9ucyk7CisrICB9IGVsc2UgaWYgKGlzX3NhbmRi b3hlZF96eWdvdGUgJiYgdXNlX2ZsYXRwYWtfc2FuZGJveF8pIHsKKysgICAgcHJvY2VzcyA9IHNh bmRib3g6OkZsYXRwYWtTYW5kYm94OjpHZXRJbnN0YW5jZSgpLT5MYXVuY2hQcm9jZXNzKCpjbWRf bGluZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgIG9wdGlvbnMpOworKyAgfSBlbHNlIHsKKysgICAgcHJvY2VzcyA9 IGJhc2U6OkxhdW5jaFByb2Nlc3MoKmNtZF9saW5lLCBvcHRpb25zKTsKKysgIH0KKysKKyAgIENI RUNLKHByb2Nlc3MuSXNWYWxpZCgpKSA8PCAiRmFpbGVkIHRvIGxhdW5jaCB6eWdvdGUgcHJvY2Vz cyI7CisgCisgICBkdW1teV9mZC5yZXNldCgpOworQEAgLTE5NSw3ICsyMDcsOCBAQCBwaWRfdCBa eWdvdGVIb3N0SW1wbDo6TGF1bmNoWnlnb3RlKAorIAorICAgcGlkX3QgcGlkID0gcHJvY2Vzcy5Q aWQoKTsKKyAKKy0gIGlmIChpc19zYW5kYm94ZWRfenlnb3RlICYmICh1c2VfbmFtZXNwYWNlX3Nh bmRib3hfIHx8IHVzZV9zdWlkX3NhbmRib3hfKSkgeworKyAgaWYgKGlzX3NhbmRib3hlZF96eWdv dGUgJiYKKysgICAgICAodXNlX25hbWVzcGFjZV9zYW5kYm94XyB8fCB1c2Vfc3VpZF9zYW5kYm94 XyB8fCB1c2VfZmxhdHBha19zYW5kYm94XykpIHsKKyAgICAgLy8gVGhlIG5hbWVzcGFjZSBhbmQg U1VJRCBzYW5kYm94IHdpbGwgZXhlY3V0ZSB0aGUgenlnb3RlIGluIGEgbmV3CisgICAgIC8vIFBJ RCBuYW1lc3BhY2UsIGFuZCB0aGUgbWFpbiB6eWdvdGUgcHJvY2VzcyB3aWxsIHRoZW4gZm9yayBm cm9tCisgICAgIC8vIHRoZXJlLiBXYXRjaCBub3cgb3VyIGVsYWJvcmF0ZSBkYW5jZSB0byBmaW5k IGFuZCB2YWxpZGF0ZSB0aGUKK0BAIC0yMjMsNyArMjM2LDExIEBAIHBpZF90IFp5Z290ZUhvc3RJ bXBsOjpMYXVuY2haeWdvdGUoCisgCisgICAgIGlmIChyZWFsX3BpZCAhPSBwaWQpIHsKKyAgICAg ICAvLyBSZWFwIHRoZSBzYW5kYm94LgorLSAgICAgIGJhc2U6OkVuc3VyZVByb2Nlc3NHZXRzUmVh cGVkKHN0ZDo6bW92ZShwcm9jZXNzKSk7CisrICAgICAgaWYgKHVzZV9mbGF0cGFrX3NhbmRib3hf KSB7CisrICAgICAgICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6R2V0SW5zdGFuY2UoKS0+SWdu b3JlRXhpdFN0YXR1cyhwaWQpOworKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBiYXNlOjpFbnN1 cmVQcm9jZXNzR2V0c1JlYXBlZChiYXNlOjpQcm9jZXNzKHBpZCkpOworKyAgICAgIH0KKyAgICAg fQorICAgICBwaWQgPSByZWFsX3BpZDsKKyAgIH0KK0BAIC0yNzQsNiArMjkxLDEwIEBAIHZvaWQg Wnlnb3RlSG9zdEltcGw6OkFkanVzdFJlbmRlcmVyT09NU2NvcmUoYmFzZTo6UHJvY2Vzc0hhbmRs ZSBwaWQsCisgICAgIHNlbGludXhfdmFsaWQgPSB0cnVlOworICAgfQorIAorKyAgLy8gRmxhdHBh a3MgY2Fubm90IG1vZGlmeSB0aGVpciBPT00gc2NvcmUuCisrICBpZiAodXNlX2ZsYXRwYWtfc2Fu ZGJveF8pCisrICAgIHJldHVybjsKKysKKyAgIGlmICghdXNlX3N1aWRfc2FuZGJveF9mb3JfYWRq X29vbV9zY29yZV8pIHsKKyAgICAgaWYgKCFiYXNlOjpBZGp1c3RPT01TY29yZShwaWQsIHNjb3Jl KSkKKyAgICAgICBQTE9HKEVSUk9SKSA8PCAiRmFpbGVkIHRvIGFkanVzdCBPT00gc2NvcmUgb2Yg cmVuZGVyZXIgd2l0aCBwaWQgIiA8PCBwaWQ7CitkaWZmIC0tZ2l0IGEvY29udGVudC9icm93c2Vy L3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGludXguaCBiL2NvbnRlbnQvYnJvd3Nlci96 eWdvdGVfaG9zdC96eWdvdGVfaG9zdF9pbXBsX2xpbnV4LmgKK2luZGV4IDcyMGQ4MjNkNGE2OTUu LmFkNDcwOTYzNjkzYzQgMTAwNjQ0CistLS0gYS9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hvc3Qv enlnb3RlX2hvc3RfaW1wbF9saW51eC5oCisrKysgYi9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hv c3Qvenlnb3RlX2hvc3RfaW1wbF9saW51eC5oCitAQCAtNzAsNiArNzAsNyBAQCBjbGFzcyBDT05U RU5UX0VYUE9SVCBaeWdvdGVIb3N0SW1wbCA6IHB1YmxpYyBaeWdvdGVIb3N0IHsKKyAgIGJvb2wg dXNlX25hbWVzcGFjZV9zYW5kYm94XzsKKyAgIGJvb2wgdXNlX3N1aWRfc2FuZGJveF87CisgICBi b29sIHVzZV9zdWlkX3NhbmRib3hfZm9yX2Fkal9vb21fc2NvcmVfOworKyAgYm9vbCB1c2VfZmxh dHBha19zYW5kYm94XzsKKyAgIHN0ZDo6c3RyaW5nIHNhbmRib3hfYmluYXJ5XzsKKyAKKyAgIC8v IFRoaXMgbG9jayBwcm90ZWN0cyB0aGUgfHp5Z290ZV9waWRzX3wgc2V0LgorZGlmZiAtLWdpdCBh L2NvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5jYyBiL2NvbnRlbnQvenlnb3RlL3p5Z290ZV9s aW51eC5jYworaW5kZXggYmRjYjM2ZjdlYjJmZS4uMjM5YTY0NjJlNGI0MSAxMDA2NDQKKy0tLSBh L2NvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5jYworKysrIGIvY29udGVudC96eWdvdGUvenln b3RlX2xpbnV4LmNjCitAQCAtMTI3LDcgKzEyNyw3IEBAIGJvb2wgWnlnb3RlOjpQcm9jZXNzUmVx dWVzdHMoKSB7CisgICBQQ0hFQ0soc2lnYWRkc2V0KCZzaWdzZXQsIFNJR0NITEQpID09IDApOwor ICAgUENIRUNLKHNpZ3Byb2NtYXNrKFNJR19CTE9DSywgJnNpZ3NldCwgJm9yaWdfc2lnbWFzaykg PT0gMCk7CisgCistICBpZiAoVXNpbmdTVUlEU2FuZGJveCgpIHx8IFVzaW5nTlNTYW5kYm94KCkp IHsKKysgIGlmIChVc2luZ1NVSURTYW5kYm94KCkgfHwgVXNpbmdOU1NhbmRib3goKSB8fCBVc2lu Z0ZsYXRwYWtTYW5kYm94KCkpIHsKKyAgICAgLy8gTGV0IHRoZSBaeWdvdGVIb3N0IGtub3cgd2Ug YXJlIHJlYWR5IHRvIGdvLgorICAgICAvLyBUaGUgcmVjZWl2aW5nIGNvZGUgaXMgaW4KKyAgICAg Ly8gY29udGVudC9icm93c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxfbGludXguY2Mu CitAQCAtMjMzLDYgKzIzMywxMCBAQCBib29sIFp5Z290ZTo6VXNpbmdOU1NhbmRib3goKSBjb25z dCB7CisgICByZXR1cm4gc2FuZGJveF9mbGFnc18gJiBzYW5kYm94Ojpwb2xpY3k6OlNhbmRib3hM aW51eDo6a1VzZXJOUzsKKyB9CisgCisrYm9vbCBaeWdvdGU6OlVzaW5nRmxhdHBha1NhbmRib3go KSBjb25zdCB7CisrICByZXR1cm4gc2FuZGJveF9mbGFnc18gJiBzYW5kYm94Ojpwb2xpY3k6OlNh bmRib3hMaW51eDo6a0ZsYXRwYWs7CisrfQorKworIGJvb2wgWnlnb3RlOjpIYW5kbGVSZXF1ZXN0 RnJvbUJyb3dzZXIoaW50IGZkKSB7CisgICBzdGQ6OnZlY3RvcjxiYXNlOjpTY29wZWRGRD4gZmRz OworICAgdWludDhfdCBidWZba1p5Z290ZU1heE1lc3NhZ2VMZW5ndGhdOworZGlmZiAtLWdpdCBh L2NvbnRlbnQvenlnb3RlL3p5Z290ZV9saW51eC5oIGIvY29udGVudC96eWdvdGUvenlnb3RlX2xp bnV4LmgKK2luZGV4IDE2NWI3NThlZmM4OTkuLjk2MWFmYTczZjY2ZjUgMTAwNjQ0CistLS0gYS9j b250ZW50L3p5Z290ZS96eWdvdGVfbGludXguaAorKysrIGIvY29udGVudC96eWdvdGUvenlnb3Rl X2xpbnV4LmgKK0BAIC02NCw2ICs2NCw4IEBAIGNsYXNzIFp5Z290ZSB7CisgICBib29sIFVzaW5n U1VJRFNhbmRib3goKSBjb25zdDsKKyAgIC8vIFJldHVybnMgdHJ1ZSBpZiB0aGUgTlMgc2FuZGJv eCBpcyBhY3RpdmUuCisgICBib29sIFVzaW5nTlNTYW5kYm94KCkgY29uc3Q7CisrICAvLyBSZXR1 cm5zIHRydWUgaWYgdGhlIEZsYXRwYWsgc2FuZGJveCBpcyBhY3RpdmUuCisrICBib29sIFVzaW5n RmxhdHBha1NhbmRib3goKSBjb25zdDsKKyAKKyAgIC8vIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0t LS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICAg Ly8gUmVxdWVzdHMgZnJvbSB0aGUgYnJvd3Nlci4uLgorZGlmZiAtLWdpdCBhL2NvbnRlbnQvenln b3RlL3p5Z290ZV9tYWluX2xpbnV4LmNjIGIvY29udGVudC96eWdvdGUvenlnb3RlX21haW5fbGlu dXguY2MKK2luZGV4IGM3ZWU5MTg3OGU2ZGQuLjljMmM3YTA0YmQ5NjggMTAwNjQ0CistLS0gYS9j b250ZW50L3p5Z290ZS96eWdvdGVfbWFpbl9saW51eC5jYworKysrIGIvY29udGVudC96eWdvdGUv enlnb3RlX21haW5fbGludXguY2MKK0BAIC0zNSw2ICszNSw3IEBACisgI2luY2x1ZGUgImNvbnRl bnQvcHVibGljL2NvbW1vbi96eWdvdGUvenlnb3RlX2ZvcmtfZGVsZWdhdGVfbGludXguaCIKKyAj aW5jbHVkZSAiY29udGVudC96eWdvdGUvenlnb3RlX2xpbnV4LmgiCisgI2luY2x1ZGUgInNhbmRi b3gvbGludXgvc2VydmljZXMvY3JlZGVudGlhbHMuaCIKKysjaW5jbHVkZSAic2FuZGJveC9saW51 eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9z ZXJ2aWNlcy9pbml0X3Byb2Nlc3NfcmVhcGVyLmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgv c2VydmljZXMvbGliY19pbnRlcmNlcHRvci5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3Nl cnZpY2VzL25hbWVzcGFjZV9zYW5kYm94LmgiCitAQCAtMTM1LDYgKzEzNiw3IEBAIHN0YXRpYyB2 b2lkIEVudGVyTmFtZXNwYWNlU2FuZGJveChzYW5kYm94Ojpwb2xpY3k6OlNhbmRib3hMaW51eCog bGludXhfc2FuZGJveCwKKyAKKyBzdGF0aWMgdm9pZCBFbnRlckxheWVyT25lU2FuZGJveChzYW5k Ym94Ojpwb2xpY3k6OlNhbmRib3hMaW51eCogbGludXhfc2FuZGJveCwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICBjb25zdCBib29sIHVzaW5nX2xheWVyMV9zYW5kYm94LAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wgdXNpbmdfZmxhdHBha19z YW5kYm94LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6Ok9uY2VDbG9z dXJlIHBvc3RfZm9ya19wYXJlbnRfY2FsbGJhY2spIHsKKyAgIERDSEVDSyhsaW51eF9zYW5kYm94 KTsKKyAKK0BAIC0xNTQsNyArMTU2LDggQEAgc3RhdGljIHZvaWQgRW50ZXJMYXllck9uZVNhbmRi b3goc2FuZGJveDo6cG9saWN5OjpTYW5kYm94TGludXgqIGxpbnV4X3NhbmRib3gsCisgICB9IGVs c2UgaWYgKHNhbmRib3g6Ok5hbWVzcGFjZVNhbmRib3g6OkluTmV3VXNlck5hbWVzcGFjZSgpKSB7 CisgICAgIEVudGVyTmFtZXNwYWNlU2FuZGJveChsaW51eF9zYW5kYm94LCBzdGQ6Om1vdmUocG9z dF9mb3JrX3BhcmVudF9jYWxsYmFjaykpOworICAgfSBlbHNlIHsKKy0gICAgQ0hFQ0soIXVzaW5n X2xheWVyMV9zYW5kYm94KTsKKysgICAgLy8gVGhlIEZsYXRwYWsgc2FuZGJveCBtZWFucyB0aGF0 IHdlJ3JlIGZ1bGx5IHNhbmRib3hlZCBmcm9tIHRoZSBzdGFydC4KKysgICAgQ0hFQ0soIXVzaW5n X2xheWVyMV9zYW5kYm94IHx8IHVzaW5nX2ZsYXRwYWtfc2FuZGJveCk7CisgICB9CisgfQorIAor QEAgLTE3OCw4ICsxODEsMTEgQEAgYm9vbCBaeWdvdGVNYWluKAorICAgICAgIGxpbnV4X3NhbmRi b3gtPnNldHVpZF9zYW5kYm94X2NsaWVudCgpLT5Jc1N1aWRTYW5kYm94Q2hpbGQoKTsKKyAgIGNv bnN0IGJvb2wgdXNpbmdfbmFtZXNwYWNlX3NhbmRib3ggPQorICAgICAgIHNhbmRib3g6Ok5hbWVz cGFjZVNhbmRib3g6OkluTmV3VXNlck5hbWVzcGFjZSgpOworKyAgY29uc3QgYm9vbCB1c2luZ19m bGF0cGFrX3NhbmRib3ggPQorKyAgICAgIHNhbmRib3g6OkZsYXRwYWtTYW5kYm94OjpHZXRJbnN0 YW5jZSgpLT5HZXRTYW5kYm94TGV2ZWwoKSA9PQorKyAgICAgIHNhbmRib3g6OkZsYXRwYWtTYW5k Ym94OjpTYW5kYm94TGV2ZWw6OmtSZXN0cmljdGVkOworICAgY29uc3QgYm9vbCB1c2luZ19sYXll cjFfc2FuZGJveCA9CistICAgICAgdXNpbmdfc2V0dWlkX3NhbmRib3ggfHwgdXNpbmdfbmFtZXNw YWNlX3NhbmRib3g7CisrICAgICAgdXNpbmdfc2V0dWlkX3NhbmRib3ggfHwgdXNpbmdfbmFtZXNw YWNlX3NhbmRib3ggfHwgdXNpbmdfZmxhdHBha19zYW5kYm94OworIAorICAgaWYgKHVzaW5nX3Nl dHVpZF9zYW5kYm94KSB7CisgICAgIGxpbnV4X3NhbmRib3gtPnNldHVpZF9zYW5kYm94X2NsaWVu dCgpLT5DbG9zZUR1bW15RmlsZSgpOworQEAgLTIwNiw3ICsyMTIsNyBAQCBib29sIFp5Z290ZU1h aW4oCisgCisgICAvLyBUdXJuIG9uIHRoZSBmaXJzdCBsYXllciBvZiB0aGUgc2FuZGJveCBpZiB0 aGUgY29uZmlndXJhdGlvbiB3YXJyYW50cyBpdC4KKyAgIEVudGVyTGF5ZXJPbmVTYW5kYm94KAor LSAgICAgIGxpbnV4X3NhbmRib3gsIHVzaW5nX2xheWVyMV9zYW5kYm94LAorKyAgICAgIGxpbnV4 X3NhbmRib3gsIHVzaW5nX2xheWVyMV9zYW5kYm94LCB1c2luZ19mbGF0cGFrX3NhbmRib3gsCisg ICAgICAgYmFzZTo6QmluZE9uY2UoQ2xvc2VGZHMsIGxpbnV4X3NhbmRib3gtPkdldEZpbGVEZXNj cmlwdG9yc1RvQ2xvc2UoKSkpOworIAorICAgY29uc3QgaW50IHNhbmRib3hfZmxhZ3MgPSBsaW51 eF9zYW5kYm94LT5HZXRTdGF0dXMoKTsKK0BAIC0yMTgsNiArMjI0LDEwIEBAIGJvb2wgWnlnb3Rl TWFpbigKKyAgICAgICAhIShzYW5kYm94X2ZsYWdzICYgc2FuZGJveDo6cG9saWN5OjpTYW5kYm94 TGludXg6OmtVc2VyTlMpOworICAgQ0hFQ0tfRVEodXNpbmdfbmFtZXNwYWNlX3NhbmRib3gsIG5h bWVzcGFjZV9zYW5kYm94X2VuZ2FnZWQpOworIAorKyAgY29uc3QgYm9vbCBmbGF0cGFrX3NhbmRi b3hfZW5nYWdlZCA9CisrICAgICAgISEoc2FuZGJveF9mbGFncyAmIHNhbmRib3g6OnBvbGljeTo6 U2FuZGJveExpbnV4OjprRmxhdHBhayk7CisrICBDSEVDS19FUSh1c2luZ19mbGF0cGFrX3NhbmRi b3gsIGZsYXRwYWtfc2FuZGJveF9lbmdhZ2VkKTsKKysKKyAgIFp5Z290ZSB6eWdvdGUoc2FuZGJv eF9mbGFncywgc3RkOjptb3ZlKGZvcmtfZGVsZWdhdGVzKSwKKyAgICAgICAgICAgICAgICAgYmFz ZTo6R2xvYmFsRGVzY3JpcHRvcnM6OkRlc2NyaXB0b3IoCisgICAgICAgICAgICAgICAgICAgICBz dGF0aWNfY2FzdDx1aW50MzJfdD4oa1NhbmRib3hJUENDaGFubmVsKSwgR2V0U2FuZGJveEZEKCkp KTsKK2RpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L0JVSUxELmduIGIvc2FuZGJveC9saW51eC9C VUlMRC5nbgoraW5kZXggOTdlM2RlZWQ0ZjJiOS4uNjE5MTZlZDk4MDVkMyAxMDA2NDQKKy0tLSBh L3NhbmRib3gvbGludXgvQlVJTEQuZ24KKysrKyBiL3NhbmRib3gvbGludXgvQlVJTEQuZ24KK0BA IC0zMTEsNiArMzExLDEwIEBAIGlmIChpc19saW51eCB8fCBpc19jaHJvbWVvcykgeworIAorIGNv bXBvbmVudCgic2FuZGJveF9zZXJ2aWNlcyIpIHsKKyAgIHNvdXJjZXMgPSBbCisrICAgICJzZXJ2 aWNlcy9mbGF0cGFrX3BpZF9tYXAuY2MiLAorKyAgICAic2VydmljZXMvZmxhdHBha19waWRfbWFw LmgiLAorKyAgICAic2VydmljZXMvZmxhdHBha19zYW5kYm94LmNjIiwKKysgICAgInNlcnZpY2Vz L2ZsYXRwYWtfc2FuZGJveC5oIiwKKyAgICAgInNlcnZpY2VzL2luaXRfcHJvY2Vzc19yZWFwZXIu Y2MiLAorICAgICAic2VydmljZXMvaW5pdF9wcm9jZXNzX3JlYXBlci5oIiwKKyAgICAgInNlcnZp Y2VzL3Byb2NfdXRpbC5jYyIsCitAQCAtMzI5LDggKzMzMywxMCBAQCBjb21wb25lbnQoInNhbmRi b3hfc2VydmljZXMiKSB7CisgCisgICBkZWZpbmVzID0gWyAiU0FOREJPWF9JTVBMRU1FTlRBVElP TiIgXQorIAorLSAgcHVibGljX2RlcHMgPSBbICIvL3NhbmRib3g6c2FuZGJveF9leHBvcnQiIF0K Ky0gIGRlcHMgPSBbICIvL2Jhc2UiIF0KKysgIHB1YmxpY19kZXBzID0gWworKyAgICAiLy9kYnVz IiwKKysgICAgIi8vc2FuZGJveDpzYW5kYm94X2V4cG9ydCIsCisrICBdCisgCisgICBpZiAoY29t cGlsZV9jcmVkZW50aWFscykgeworICAgICBzb3VyY2VzICs9IFsKK2RpZmYgLS1naXQgYS9zYW5k Ym94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfcGlkX21hcC5jYyBiL3NhbmRib3gvbGludXgvc2Vy dmljZXMvZmxhdHBha19waWRfbWFwLmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAw MDAwMDAwMDAwMC4uNThiMmFiNTUyMzg1YgorLS0tIC9kZXYvbnVsbAorKysrIGIvc2FuZGJveC9s aW51eC9zZXJ2aWNlcy9mbGF0cGFrX3BpZF9tYXAuY2MKK0BAIC0wLDAgKzEsNTcgQEAKKysvLyBD b3B5cmlnaHQgMjAyMCBUaGUgQ2hyb21pdW0gQXV0aG9ycy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4K KysvLyBVc2Ugb2YgdGhpcyBzb3VyY2UgY29kZSBpcyBnb3Zlcm5lZCBieSBhIEJTRC1zdHlsZSBs aWNlbnNlIHRoYXQgY2FuIGJlCisrLy8gZm91bmQgaW4gdGhlIExJQ0VOU0UgZmlsZS4KKysKKysj aW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3BpZF9tYXAuaCIKKysKKytu YW1lc3BhY2Ugc2FuZGJveCB7CisrCisrYm9vbCBGbGF0cGFrUGlkTWFwOjpJbnNlcnQoUGlkUGFp ciBwYWlyKSB7CisrICBpZiAoZXh0ZXJuYWxfdG9fcmVsYXRpdmVfLmNvbnRhaW5zKHBhaXIuZXh0 ZXJuYWwpIHx8CisrICAgICAgcmVsYXRpdmVfdG9fZXh0ZXJuYWxfLmNvbnRhaW5zKHBhaXIucmVs YXRpdmUpKSB7CisrICAgIHJldHVybiBmYWxzZTsKKysgIH0KKysKKysgIGV4dGVybmFsX3RvX3Jl bGF0aXZlX1twYWlyLmV4dGVybmFsXSA9IHBhaXIucmVsYXRpdmU7CisrICByZWxhdGl2ZV90b19l eHRlcm5hbF9bcGFpci5yZWxhdGl2ZV0gPSBwYWlyLmV4dGVybmFsOworKyAgcmV0dXJuIHRydWU7 CisrfQorKworK2Fic2w6Om9wdGlvbmFsPHBpZF90PiBGbGF0cGFrUGlkTWFwOjpGaW5kUmVsYXRp dmVCeUV4dGVybmFsKHBpZF90IGV4dGVybmFsKSB7CisrICByZXR1cm4gRmluZEltcGwoJmV4dGVy bmFsX3RvX3JlbGF0aXZlXywgZXh0ZXJuYWwpOworK30KKysKKythYnNsOjpvcHRpb25hbDxwaWRf dD4gRmxhdHBha1BpZE1hcDo6RmluZEV4dGVybmFsQnlSZWxhdGl2ZShwaWRfdCByZWxhdGl2ZSkg eworKyAgcmV0dXJuIEZpbmRJbXBsKCZyZWxhdGl2ZV90b19leHRlcm5hbF8sIHJlbGF0aXZlKTsK Kyt9CisrCisrYWJzbDo6b3B0aW9uYWw8cGlkX3Q+IEZsYXRwYWtQaWRNYXA6OkRlbGV0ZUJ5RXh0 ZXJuYWwocGlkX3QgZXh0ZXJuYWwpIHsKKysgIHJldHVybiBEZWxldGVJbXBsKCZleHRlcm5hbF90 b19yZWxhdGl2ZV8sICZyZWxhdGl2ZV90b19leHRlcm5hbF8sIGV4dGVybmFsKTsKKyt9CisrCisr YWJzbDo6b3B0aW9uYWw8cGlkX3Q+IEZsYXRwYWtQaWRNYXA6OkRlbGV0ZUJ5UmVsYXRpdmUocGlk X3QgcmVsYXRpdmUpIHsKKysgIHJldHVybiBEZWxldGVJbXBsKCZyZWxhdGl2ZV90b19leHRlcm5h bF8sICZleHRlcm5hbF90b19yZWxhdGl2ZV8sIHJlbGF0aXZlKTsKKyt9CisrCisrYWJzbDo6b3B0 aW9uYWw8cGlkX3Q+IEZsYXRwYWtQaWRNYXA6OkZpbmRJbXBsKGJhc2U6OmZsYXRfbWFwPHBpZF90 LCBwaWRfdD4qIG1hcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgcGlkX3Qga2V5KSB7CisrICBhdXRvIGl0ID0gbWFwLT5maW5kKGtleSk7CisrICByZXR1 cm4gaXQgIT0gbWFwLT5lbmQoKSA/IGl0LT5zZWNvbmQgOiBhYnNsOjpvcHRpb25hbDxwaWRfdD4o KTsKKyt9CisrCisrYWJzbDo6b3B0aW9uYWw8cGlkX3Q+IEZsYXRwYWtQaWRNYXA6OkRlbGV0ZUlt cGwoCisrICAgIGJhc2U6OmZsYXRfbWFwPHBpZF90LCBwaWRfdD4qIG1hcCwKKysgICAgYmFzZTo6 ZmxhdF9tYXA8cGlkX3QsIHBpZF90PiogcmV2ZXJzZWQsCisrICAgIHBpZF90IGtleSkgeworKyAg YXV0byBpdCA9IG1hcC0+ZmluZChrZXkpOworKyAgaWYgKGl0ID09IG1hcC0+ZW5kKCkpIHsKKysg ICAgcmV0dXJuIGFic2w6Om9wdGlvbmFsPHBpZF90PigpOworKyAgfQorKworKyAgcGlkX3QgdmFs dWUgPSBpdC0+c2Vjb25kOworKyAgcmV2ZXJzZWQtPmVyYXNlKHZhbHVlKTsKKysgIG1hcC0+ZXJh c2UoaXQpOworKyAgcmV0dXJuIHZhbHVlOworK30KKysKKyt9ICAvLyBuYW1lc3BhY2Ugc2FuZGJv eAorZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19waWRfbWFwLmgg Yi9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfcGlkX21hcC5oCituZXcgZmlsZSBtb2Rl IDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAwMC4uMjI3OTllYjQyZjc4MgorLS0tIC9kZXYvbnVs bAorKysrIGIvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3BpZF9tYXAuaAorQEAgLTAs MCArMSw0NiBAQAorKy8vIENvcHlyaWdodCAyMDIwIFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwg cmlnaHRzIHJlc2VydmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVk IGJ5IGEgQlNELXN0eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElD RU5TRSBmaWxlLgorKworKyNpZm5kZWYgU0FOREJPWF9MSU5VWF9TRVJWSUNFU19GTEFUUEFLX1BJ RF9NQVBfSF8KKysjZGVmaW5lIFNBTkRCT1hfTElOVVhfU0VSVklDRVNfRkxBVFBBS19QSURfTUFQ X0hfCisrCisrI2luY2x1ZGUgImJhc2UvY29udGFpbmVycy9mbGF0X21hcC5oIgorKyNpbmNsdWRl ICJ0aGlyZF9wYXJ0eS9hYnNlaWwtY3BwL2Fic2wvdHlwZXMvb3B0aW9uYWwuaCIKKysKKytuYW1l c3BhY2Ugc2FuZGJveCB7CisrCisrLy8gQSBiaWRpcmVjdGlvbmFsIG1hcCBvZiBleHRlcm5hbCBQ SURzIGFuZCByZWxhdGl2ZSBQSURzIGZvciB0aGUgRmxhdHBhaworKy8vIHNhbmRib3guICJFeHRl cm5hbCIgUElEcyBhcmUgdGhlIFBJRCB2YWx1ZXMgdGhhdCBGbGF0cGFrJ3MgU3Bhd24gQVBJIHJl dHVybnMsCisrLy8gcmVsYXRpdmUgdG8gdGhlIGhvc3Qgc3lzdGVtLCBhbmQgInJlbGF0aXZlIiBQ SURzIGFyZSB0aGUgUElEcyB0aG9zZSBwcm9jZXNzZXMKKysvLyBhcmUga25vd24gYnkgZnJvbSBp bnNpZGUgdGhlIHNhbmRib3guCisrY2xhc3MgRmxhdHBha1BpZE1hcCB7CisrIHB1YmxpYzoKKysg IHN0cnVjdCBQaWRQYWlyIHsKKysgICAgcGlkX3QgZXh0ZXJuYWw7CisrICAgIHBpZF90IHJlbGF0 aXZlOworKyAgfTsKKysKKysgIEZsYXRwYWtQaWRNYXAoKSA9IGRlZmF1bHQ7CisrCisrICBib29s IEluc2VydChQaWRQYWlyIHBhaXIpOworKworKyAgYWJzbDo6b3B0aW9uYWw8cGlkX3Q+IEZpbmRS ZWxhdGl2ZUJ5RXh0ZXJuYWwocGlkX3QgZXh0ZXJuYWwpOworKyAgYWJzbDo6b3B0aW9uYWw8cGlk X3Q+IEZpbmRFeHRlcm5hbEJ5UmVsYXRpdmUocGlkX3QgcmVsYXRpdmUpOworKworKyAgYWJzbDo6 b3B0aW9uYWw8cGlkX3Q+IERlbGV0ZUJ5UmVsYXRpdmUocGlkX3QgcmVsYXRpdmUpOworKyAgYWJz bDo6b3B0aW9uYWw8cGlkX3Q+IERlbGV0ZUJ5RXh0ZXJuYWwocGlkX3QgZXh0ZXJuYWwpOworKwor KyBwcml2YXRlOgorKyAgYWJzbDo6b3B0aW9uYWw8cGlkX3Q+IEZpbmRJbXBsKGJhc2U6OmZsYXRf bWFwPHBpZF90LCBwaWRfdD4qIG1hcCwgcGlkX3Qga2V5KTsKKysgIGFic2w6Om9wdGlvbmFsPHBp ZF90PiBEZWxldGVJbXBsKGJhc2U6OmZsYXRfbWFwPHBpZF90LCBwaWRfdD4qIG1hcCwKKysgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OmZsYXRfbWFwPHBpZF90LCBwaWRf dD4qIHJldmVyc2VkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGlkX3Qg a2V5KTsKKysKKysgIGJhc2U6OmZsYXRfbWFwPHBpZF90LCBwaWRfdD4gZXh0ZXJuYWxfdG9fcmVs YXRpdmVfOworKyAgYmFzZTo6ZmxhdF9tYXA8cGlkX3QsIHBpZF90PiByZWxhdGl2ZV90b19leHRl cm5hbF87CisrfTsgIC8vIG5hbWVzcGFjZSBzYW5kYm94CisrCisrfSAgLy8gbmFtZXNwYWNlIHNh bmRib3gKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2Zs YXRwYWtfc2FuZGJveC5jYyBiL3NhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94 LmNjCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMDAwMC4uMmE5MTVhNWI5 ZmExMQorLS0tIC9kZXYvbnVsbAorKysrIGIvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFr X3NhbmRib3guY2MKK0BAIC0wLDAgKzEsNTc2IEBACisrLy8gQ29weXJpZ2h0IDIwMTkgVGhlIENo cm9taXVtIEF1dGhvcnMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisrLy8gVXNlIG9mIHRoaXMgc291 cmNlIGNvZGUgaXMgZ292ZXJuZWQgYnkgYSBCU0Qtc3R5bGUgbGljZW5zZSB0aGF0IGNhbiBiZQor Ky8vIGZvdW5kIGluIHRoZSBMSUNFTlNFIGZpbGUuCisrCisrI2luY2x1ZGUgInNhbmRib3gvbGlu dXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmgiCisrCisrI2luY2x1ZGUgPHNpZ25hbC5oPgor KyNpbmNsdWRlIDxzc3RyZWFtPgorKyNpbmNsdWRlIDxzdHJpbmc+CisrCisrI2luY2x1ZGUgImJh c2UvZmlsZXMvZmlsZV9wYXRoLmgiCisrI2luY2x1ZGUgImJhc2UvZmlsZXMvZmlsZV91dGlsLmgi CisrI2luY2x1ZGUgImJhc2UvZnVuY3Rpb25hbC9iaW5kLmgiCisrI2luY2x1ZGUgImJhc2UvbG9n Z2luZy5oIgorKyNpbmNsdWRlICJiYXNlL3Byb2Nlc3MvcHJvY2Vzc19oYW5kbGUuaCIKKysjaW5j bHVkZSAiYmFzZS9zdHJpbmdzL3N0cmluZ19udW1iZXJfY29udmVyc2lvbnMuaCIKKysjaW5jbHVk ZSAiYmFzZS9zdHJpbmdzL3N0cmluZ191dGlsLmgiCisrI2luY2x1ZGUgImJhc2Uvc3luY2hyb25p emF0aW9uL2xvY2suaCIKKysjaW5jbHVkZSAiYmFzZS90aHJlYWRpbmcvc2NvcGVkX2Jsb2NraW5n X2NhbGwuaCIKKysjaW5jbHVkZSAiYmFzZS90aHJlYWRpbmcvdGhyZWFkX3Jlc3RyaWN0aW9ucy5o IgorKyNpbmNsdWRlICJkYnVzL2J1cy5oIgorKyNpbmNsdWRlICJkYnVzL21lc3NhZ2UuaCIKKysj aW5jbHVkZSAiZGJ1cy9vYmplY3RfcGF0aC5oIgorKyNpbmNsdWRlICJkYnVzL29iamVjdF9wcm94 eS5oIgorKyNpbmNsdWRlICJkYnVzL3Byb3BlcnR5LmgiCisrI2luY2x1ZGUgInNhbmRib3gvbGlu dXgvc2VydmljZXMvZmxhdHBha19waWRfbWFwLmgiCisrCisrbmFtZXNwYWNlIHNhbmRib3ggewor KworK25hbWVzcGFjZSB7CisrY29uc3QgYmFzZTo6RmlsZVBhdGgga0ZsYXRwYWtBcHBQYXRoKCIv YXBwIik7CisrY29uc3QgYmFzZTo6RmlsZVBhdGgga0ZsYXRwYWtJbmZvUGF0aCgiLy5mbGF0cGFr LWluZm8iKTsKKysKKytjb25zdCBjaGFyIGtGbGF0cGFrUG9ydGFsU2VydmljZU5hbWVbXSA9ICJv cmcuZnJlZWRlc2t0b3AucG9ydGFsLkZsYXRwYWsiOworK2NvbnN0IGNoYXIga0ZsYXRwYWtQb3J0 YWxPYmplY3RQYXRoW10gPSAiL29yZy9mcmVlZGVza3RvcC9wb3J0YWwvRmxhdHBhayI7CisrY29u c3QgY2hhciBrRmxhdHBha1BvcnRhbEludGVyZmFjZU5hbWVbXSA9ICJvcmcuZnJlZWRlc2t0b3Au cG9ydGFsLkZsYXRwYWsiOworKworKyNpZm5kZWYgTkRFQlVHCisrY29uc3QgY2hhciBrRGlzYWJs ZUZ1bGxGbGF0cGFrU2FuZGJveFtdID0gImRpc2FibGUtZnVsbC1mbGF0cGFrLXNhbmRib3giOwor KyNlbmRpZgorKworK3N0cnVjdCBQb3J0YWxQcm9wZXJ0aWVzIDogZGJ1czo6UHJvcGVydHlTZXQg eworKyAgZGJ1czo6UHJvcGVydHk8dWludDMyX3Q+IHZlcnNpb247CisrICBkYnVzOjpQcm9wZXJ0 eTx1aW50MzJfdD4gc3VwcG9ydHM7CisrCisrICBlbnVtIEZsYXRwYWtQb3J0YWxTdXBwb3J0cyB7 CisrICAgIGtGbGF0cGFrUG9ydGFsX0V4cG9zZVBpZHMgPSAxIDw8IDAsCisrICB9OworKworKyAg ZXhwbGljaXQgUG9ydGFsUHJvcGVydGllcyhkYnVzOjpPYmplY3RQcm94eSogb2JqZWN0X3Byb3h5 KQorKyAgICAgIDogZGJ1czo6UHJvcGVydHlTZXQob2JqZWN0X3Byb3h5LCBrRmxhdHBha1BvcnRh bEludGVyZmFjZU5hbWUsIHt9KSB7CisrICAgIFJlZ2lzdGVyUHJvcGVydHkoInZlcnNpb24iLCAm dmVyc2lvbik7CisrICAgIFJlZ2lzdGVyUHJvcGVydHkoInN1cHBvcnRzIiwgJnN1cHBvcnRzKTsK KysgIH0KKysKKysgIH5Qb3J0YWxQcm9wZXJ0aWVzKCkgb3ZlcnJpZGUgPSBkZWZhdWx0OworK307 CisrCisrdm9pZCBXcml0ZVN0cmluZ0FzQnl0ZUFycmF5KGRidXM6Ok1lc3NhZ2VXcml0ZXIqIHdy aXRlciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHN0 cikgeworKyAgd3JpdGVyLT5BcHBlbmRBcnJheU9mQnl0ZXMoYmFzZTo6bWFrZV9zcGFuKAorKyAg ICAgIHJlaW50ZXJwcmV0X2Nhc3Q8Y29uc3QgdWludDhfdCo+KHN0ci5jX3N0cigpKSwgc3RyLnNp emUoKSArIDEpKTsKKyt9CisrCisrdm9pZCBXcml0ZUZkUGFpck1hcChkYnVzOjpNZXNzYWdlV3Jp dGVyKiB3cml0ZXIsIGludCBzb3VyY2VfZmQsIGludCBkZXN0X2ZkKSB7CisrICBkYnVzOjpNZXNz YWdlV3JpdGVyIGVudHJ5X3dyaXRlcihudWxscHRyKTsKKysgIHdyaXRlci0+T3BlbkRpY3RFbnRy eSgmZW50cnlfd3JpdGVyKTsKKysKKysgIGVudHJ5X3dyaXRlci5BcHBlbmRVaW50MzIoZGVzdF9m ZCk7CisrICBlbnRyeV93cml0ZXIuQXBwZW5kRmlsZURlc2NyaXB0b3Ioc291cmNlX2ZkKTsKKysK KysgIHdyaXRlci0+Q2xvc2VDb250YWluZXIoJmVudHJ5X3dyaXRlcik7CisrfQorKworK30gIC8v IG5hbWVzcGFjZQorKworK2VudW0gRmxhdHBha1NwYXduRmxhZ3MgeworKyAga0ZsYXRwYWtTcGF3 bl9DbGVhckVudmlyb25tZW50ID0gMSA8PCAwLAorKyAga0ZsYXRwYWtTcGF3bl9MYXRlc3QgPSAx IDw8IDEsCisrICBrRmxhdHBha1NwYXduX1NhbmRib3ggPSAxIDw8IDIsCisrICBrRmxhdHBha1Nw YXduX05vTmV0d29yayA9IDEgPDwgMywKKysgIGtGbGF0cGFrU3Bhd25fV2F0Y2hCdXMgPSAxIDw8 IDQsCisrICBrRmxhdHBha1NwYXduX0V4cG9zZVBpZHMgPSAxIDw8IDUsCisrICBrRmxhdHBha1Nw YXduX05vdGlmeVN0YXJ0ID0gMSA8PCA2LAorK307CisrCisrZW51bSBGbGF0cGFrU3Bhd25TYW5k Ym94RmxhZ3MgeworKyAga0ZsYXRwYWtTcGF3blNhbmRib3hfU2hhcmVEaXNwbGF5ID0gMSA8PCAw LAorKyAga0ZsYXRwYWtTcGF3blNhbmRib3hfU2hhcmVTb3VuZCA9IDEgPDwgMSwKKysgIGtGbGF0 cGFrU3Bhd25TYW5kYm94X1NoYXJlR3B1ID0gMSA8PCAyLAorKyAga0ZsYXRwYWtTcGF3blNhbmRi b3hfU2hhcmVTZXNzaW9uQnVzID0gMSA8PCAzLAorKyAga0ZsYXRwYWtTcGF3blNhbmRib3hfU2hh cmVBMTF5QnVzID0gMSA8PCA0LAorK307CisrCisrRmxhdHBha1NhbmRib3g6OkZsYXRwYWtTYW5k Ym94KCkKKysgICAgOiBidXNfdGhyZWFkXygiRmxhdHBha1BvcnRhbEJ1cyIpLCBwcm9jZXNzX2lu Zm9fY3ZfKCZwcm9jZXNzX2luZm9fbG9ja18pIHt9CisrCisrLy8gc3RhdGljCisrRmxhdHBha1Nh bmRib3gqIEZsYXRwYWtTYW5kYm94OjpHZXRJbnN0YW5jZSgpIHsKKysgIHN0YXRpYyBiYXNlOjpO b0Rlc3RydWN0b3I8RmxhdHBha1NhbmRib3g+IGluc3RhbmNlOworKyAgcmV0dXJuIGluc3RhbmNl LmdldCgpOworK30KKysKKytGbGF0cGFrU2FuZGJveDo6U2FuZGJveExldmVsIEZsYXRwYWtTYW5k Ym94OjpHZXRTYW5kYm94TGV2ZWwoKSB7CisrICBpZiAoc2FuZGJveF9sZXZlbF8pIHsKKysgICAg cmV0dXJuICpzYW5kYm94X2xldmVsXzsKKysgIH0KKysKKysgIC8vIFhYWDogVGhlc2Ugb3BlcmF0 aW9ucyBzaG91bGRuJ3QgYWN0dWFsbHkgaGF2ZSBhIG1ham9yIGJsb2NraW5nIHRpbWUsCisrICAv LyBhcyAuZmxhdHBhay1pbmZvIGlzIG9uIGEgdG1wZnMuCisrICBiYXNlOjpTY29wZWRBbGxvd0Js b2NraW5nIHNjb3BlZF9hbGxvd19ibG9ja2luZzsKKysKKysgIGlmICghYmFzZTo6UGF0aEV4aXN0 cyhrRmxhdHBha0luZm9QYXRoKSkgeworKyAgICBzYW5kYm94X2xldmVsXyA9IFNhbmRib3hMZXZl bDo6a05vbmU7CisrICB9IGVsc2UgeworKyAgICAvLyBjaHJvbWUgaGFzIGFuIElOSSBwYXJzZXIs IGJ1dCBzYW5kYm94IGNhbid0IGRlcGVuZCBvbiBhbnl0aGluZyBpbnNpZGUKKysgICAgLy8gY2hy b21lLCBzbyB0aGUgLmZsYXRwYWstaW5mbyBJTkkgaXMgbWFudWFsbHkgY2hlY2tlZCBmb3IgdGhl IHNhbmRib3gKKysgICAgLy8gb3B0aW9uLgorKworKyAgICBzdGQ6OnN0cmluZyBjb250ZW50czsK KysgICAgQ0hFQ0soUmVhZEZpbGVUb1N0cmluZyhrRmxhdHBha0luZm9QYXRoLCAmY29udGVudHMp KTsKKysgICAgRENIRUNLKCFjb250ZW50cy5lbXB0eSgpKTsKKysKKysgICAgc3RkOjppc3RyaW5n c3RyZWFtIGlzcyhjb250ZW50cyk7CisrICAgIHN0ZDo6c3RyaW5nIGxpbmU7CisrICAgIGJvb2wg aW5faW5zdGFuY2UgPSBmYWxzZTsKKysgICAgd2hpbGUgKHN0ZDo6Z2V0bGluZShpc3MsIGxpbmUp KSB7CisrICAgICAgaWYgKCFsaW5lLmVtcHR5KCkgJiYgbGluZVswXSA9PSAnWycpIHsKKysgICAg ICAgIERDSEVDSyhsaW5lLmJhY2soKSA9PSAnXScpOworKworKyAgICAgICAgaWYgKGxpbmUgPT0g IltJbnN0YW5jZV0iKSB7CisrICAgICAgICAgIERDSEVDSyghaW5faW5zdGFuY2UpOworKyAgICAg ICAgICBpbl9pbnN0YW5jZSA9IHRydWU7CisrICAgICAgICB9IGVsc2UgaWYgKGluX2luc3RhbmNl KSB7CisrICAgICAgICAgIC8vIExlYXZpbmcgdGhlIEluc3RhbmNlIHNlY3Rpb24sIHNhbmRib3g9 dHJ1ZSBjYW4ndCBjb21lIG5vdy4KKysgICAgICAgICAgYnJlYWs7CisrICAgICAgICB9CisrICAg ICAgfSBlbHNlIGlmIChpbl9pbnN0YW5jZSAmJiBsaW5lID09ICJzYW5kYm94PXRydWUiKSB7Cisr ICAgICAgICBzYW5kYm94X2xldmVsXyA9IFNhbmRib3hMZXZlbDo6a1Jlc3RyaWN0ZWQ7CisrICAg ICAgICBicmVhazsKKysgICAgICB9CisrICAgIH0KKysKKysgICAgaWYgKCFzYW5kYm94X2xldmVs XykgeworKyAgICAgIHNhbmRib3hfbGV2ZWxfID0gU2FuZGJveExldmVsOjprRmxhdHBhazsKKysg ICAgfQorKyAgfQorKworKyNpZm5kZWYgTkRFQlVHCisrICBpZiAoc2FuZGJveF9sZXZlbF8gPT0g U2FuZGJveExldmVsOjprRmxhdHBhayAmJgorKyAgICAgIGJhc2U6OkNvbW1hbmRMaW5lOjpGb3JD dXJyZW50UHJvY2VzcygpLT5IYXNTd2l0Y2goCisrICAgICAgICAgIGtEaXNhYmxlRnVsbEZsYXRw YWtTYW5kYm94KSkgeworKyAgICBzYW5kYm94X2xldmVsXyA9IFNhbmRib3hMZXZlbDo6a1Jlc3Ry aWN0ZWQ7CisrICB9CisrI2VuZGlmCisrCisrICByZXR1cm4gKnNhbmRib3hfbGV2ZWxfOworK30K KysKKytib29sIEZsYXRwYWtTYW5kYm94OjpJc1BpZFNhbmRib3hlZChiYXNlOjpQcm9jZXNzSWQg cmVsYXRpdmVfcGlkKSB7CisrICBiYXNlOjpTY29wZWRCbG9ja2luZ0NhbGwgc2NvcGVkX2Jsb2Nr aW5nX2NhbGwoRlJPTV9IRVJFLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgIGJhc2U6OkJsb2NraW5nVHlwZTo6TUFZX0JMT0NLKTsKKysKKysgIGJhc2U6 OkF1dG9Mb2NrIGxvY2tlcihwcm9jZXNzX2luZm9fbG9ja18pOworKworKyAgcmV0dXJuIHJ1bm5p bmdfcHJvY2Vzc2VzXy5GaW5kRXh0ZXJuYWxCeVJlbGF0aXZlKHJlbGF0aXZlX3BpZCkuaGFzX3Zh bHVlKCk7CisrfQorKworK2Jhc2U6OlByb2Nlc3MgRmxhdHBha1NhbmRib3g6OkxhdW5jaFByb2Nl c3MoCisrICAgIGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAorKyAgICBjb25zdCBi YXNlOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucykgeworKyAgYmFzZTo6UHJvY2Vzc0lk IGV4dGVybmFsX3BpZCA9IFNwYXduKGNtZGxpbmUsIGxhdW5jaF9vcHRpb25zKTsKKysgIGlmIChl eHRlcm5hbF9waWQgPT0gYmFzZTo6a051bGxQcm9jZXNzSWQpIHsKKysgICAgcmV0dXJuIGJhc2U6 OlByb2Nlc3MoKTsKKysgIH0KKysKKysgIGJhc2U6OlByb2Nlc3NJZCByZWxhdGl2ZV9waWQgPSBH ZXRSZWxhdGl2ZVBpZChleHRlcm5hbF9waWQpOworKyAgaWYgKHJlbGF0aXZlX3BpZCA9PSBiYXNl OjprTnVsbFByb2Nlc3NJZCkgeworKyAgICAvLyBUcmVhdCBlYXJseSBzdG9wcyBhcyBhIGxhdW5j aCBmYWlsdXJlLgorKyAgICByZXR1cm4gYmFzZTo6UHJvY2VzcygpOworKyAgfQorKworKyAgcmV0 dXJuIGJhc2U6OlByb2Nlc3MocmVsYXRpdmVfcGlkKTsKKyt9CisrCisrYm9vbCBGbGF0cGFrU2Fu ZGJveDo6V2FpdChiYXNlOjpQcm9jZXNzSWQgcmVsYXRpdmVfcGlkLCBpbnQqIGV4aXRfY29kZSkg eworKyAgYmFzZTo6U2NvcGVkQmxvY2tpbmdDYWxsIHNjb3BlZF9ibG9ja2luZ19jYWxsKEZST01f SEVSRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBi YXNlOjpCbG9ja2luZ1R5cGU6Ok1BWV9CTE9DSyk7CisrCisrICBiYXNlOjpBdXRvTG9jayBsb2Nr ZXIocHJvY2Vzc19pbmZvX2xvY2tfKTsKKysKKysgIGZvciAoOzspIHsKKysgICAgaWYgKHJ1bm5p bmdfcHJvY2Vzc2VzXy5GaW5kRXh0ZXJuYWxCeVJlbGF0aXZlKHJlbGF0aXZlX3BpZCkpIHsKKysg ICAgICAvLyBQcm9jZXNzIGlzIHN0aWxsIHJ1bm5pbmcuCisrICAgICAgcHJvY2Vzc19pbmZvX2N2 Xy5XYWl0KCk7CisrICAgICAgY29udGludWU7CisrICAgIH0KKysKKysgICAgYXV0byBpdCA9IGV4 aXRlZF9wcm9jZXNzX3N0YXR1c2VzXy5maW5kKHJlbGF0aXZlX3BpZCk7CisrICAgIGlmIChpdCA9 PSBleGl0ZWRfcHJvY2Vzc19zdGF0dXNlc18uZW5kKCkpIHsKKysgICAgICAvLyBUaGlzIHNob3Vs ZCBvbmx5IGhhcHBlbiBpZiBhbm90aGVyIGNhbGxlciBoYWQgbWFya2VkIHRoZSBleGl0IHN0YXR1 cworKyAgICAgIC8vIHRvIGJlIGlnbm9yZWQuIFRyZWF0IGl0IGxpa2Ugd2FpdHBpZCByZXR1cm5p bmcgRVNSQ0guCisrICAgICAgTE9HKEVSUk9SKSA8PCAiUElEICIgPDwgcmVsYXRpdmVfcGlkIDw8 ICIgaGFkIG5vIGV4aXQgc3RhdHVzIjsKKysgICAgICByZXR1cm4gZmFsc2U7CisrICAgIH0KKysK KysgICAgaWYgKGV4aXRfY29kZSkgeworKyAgICAgICpleGl0X2NvZGUgPSBpdC0+c2Vjb25kOwor KyAgICB9CisrICAgIGV4aXRlZF9wcm9jZXNzX3N0YXR1c2VzXy5lcmFzZShpdCk7CisrICAgIHJl dHVybiB0cnVlOworKyAgfQorK30KKysKKyt2b2lkIEZsYXRwYWtTYW5kYm94OjpJZ25vcmVFeGl0 U3RhdHVzKGJhc2U6OlByb2Nlc3NJZCByZWxhdGl2ZV9waWQpIHsKKysgIGJhc2U6OlNjb3BlZEJs b2NraW5nQ2FsbCBzY29wZWRfYmxvY2tpbmdfY2FsbChGUk9NX0hFUkUsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6QmxvY2tpbmdUeXBlOjpN QVlfQkxPQ0spOworKworKyAgYmFzZTo6QXV0b0xvY2sgbG9ja2VyKHByb2Nlc3NfaW5mb19sb2Nr Xyk7CisrCisrICBDSEVDSyhydW5uaW5nX3Byb2Nlc3Nlc18uRmluZEV4dGVybmFsQnlSZWxhdGl2 ZShyZWxhdGl2ZV9waWQpKTsKKysgIGlnbm9yZV9zdGF0dXNfLmluc2VydChyZWxhdGl2ZV9waWQp OworK30KKysKKyt2b2lkIEZsYXRwYWtTYW5kYm94OjpTdGFydEJ1c1RocmVhZCgpIHsKKysgIGlm ICghYnVzX3RocmVhZF8uSXNSdW5uaW5nKCkpIHsKKysgICAgYmFzZTo6VGhyZWFkOjpPcHRpb25z IG9wdGlvbnM7CisrICAgIG9wdGlvbnMubWVzc2FnZV9wdW1wX3R5cGUgPSBiYXNlOjpNZXNzYWdl UHVtcFR5cGU6OklPOworKyAgICBDSEVDSyhidXNfdGhyZWFkXy5TdGFydFdpdGhPcHRpb25zKHN0 ZDo6bW92ZShvcHRpb25zKSkpOworKworKyAgICBidXNfdGhyZWFkXy50YXNrX3J1bm5lcigpLT5Q b3N0VGFzaygKKysgICAgICAgIEZST01fSEVSRSwgYmFzZTo6QmluZE9uY2UoJkZsYXRwYWtTYW5k Ym94OjpJbml0aWFsaXplQnVzVGhyZWFkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICBiYXNlOjpVbnJldGFpbmVkKHRoaXMpKSk7CisrICB9CisrfQorKworK2RidXM6OkJ1cyog RmxhdHBha1NhbmRib3g6OkFjcXVpcmVCdXNGcm9tQnVzVGhyZWFkKCkgeworKyAgLy8gTm90ZSB0 aGF0IGRlc3RydWN0aW9uIG9mIHRoZSBidXMgaXMgbm90IGEgY29uY2VybiwgYmVjYXVzZSBvbmNl IHRoZQorKyAgLy8gdGhyZWFkIGRpZXMgaXRzIGJ1cyBjb25uZWN0aW9uIHdpbGwgYmUgdGVybWlu YXRlZCBhbnl3YXkgYW5kIHRoZQorKyAgLy8gcG9ydGFsIHdpbGwgbm90aWNlLgorKyAgc3RhdGlj IGJhc2U6Ok5vRGVzdHJ1Y3RvcjxzY29wZWRfcmVmcHRyPGRidXM6OkJ1cz4+IGJ1cyhbXSB7Cisr ICAgIGRidXM6OkJ1czo6T3B0aW9ucyBvcHRpb25zOworKyAgICBvcHRpb25zLmJ1c190eXBlID0g ZGJ1czo6QnVzOjpTRVNTSU9OOworKyAgICBvcHRpb25zLmNvbm5lY3Rpb25fdHlwZSA9IGRidXM6 OkJ1czo6UFJJVkFURTsKKysgICAgb3B0aW9ucy5kYnVzX3Rhc2tfcnVubmVyID0gYmFzZTo6U2Vx dWVuY2VkVGFza1J1bm5lcjo6R2V0Q3VycmVudERlZmF1bHQoKTsKKysKKysgICAgcmV0dXJuIGJh c2U6Ok1ha2VSZWZDb3VudGVkPGRidXM6OkJ1cz4ob3B0aW9ucyk7CisrICB9KCkpOworKworKyAg cmV0dXJuIGJ1cy0+Z2V0KCk7CisrfQorKworK2RidXM6Ok9iamVjdFByb3h5KiBGbGF0cGFrU2Fu ZGJveDo6R2V0UG9ydGFsT2JqZWN0UHJveHkoKSB7CisrICByZXR1cm4gQWNxdWlyZUJ1c0Zyb21C dXNUaHJlYWQoKS0+R2V0T2JqZWN0UHJveHkoCisrICAgICAga0ZsYXRwYWtQb3J0YWxTZXJ2aWNl TmFtZSwgZGJ1czo6T2JqZWN0UGF0aChrRmxhdHBha1BvcnRhbE9iamVjdFBhdGgpKTsKKyt9Cisr Cisrdm9pZCBGbGF0cGFrU2FuZGJveDo6SW5pdGlhbGl6ZUJ1c1RocmVhZCgpIHsKKysgIGRidXM6 Ok9iamVjdFByb3h5KiBvYmplY3RfcHJveHkgPSBHZXRQb3J0YWxPYmplY3RQcm94eSgpOworKwor KyAgUG9ydGFsUHJvcGVydGllcyBwcm9wZXJ0aWVzKG9iamVjdF9wcm94eSk7CisrICBwcm9wZXJ0 aWVzLkNvbm5lY3RTaWduYWxzKCk7CisrCisrICBDSEVDSyhwcm9wZXJ0aWVzLkdldEFuZEJsb2Nr KCZwcm9wZXJ0aWVzLnZlcnNpb24pKQorKyAgICAgIDw8ICJGYWlsZWQgdG8gZ2V0IHBvcnRhbCB2 ZXJzaW9uIjsKKysgIENIRUNLKHByb3BlcnRpZXMuR2V0QW5kQmxvY2soJnByb3BlcnRpZXMuc3Vw cG9ydHMpKQorKyAgICAgIDw8ICJGYWlsZWQgdG8gZ2V0IHBvcnRhbCBzdXBwb3J0cyI7CisrCisr ICBpZiAocHJvcGVydGllcy52ZXJzaW9uLnZhbHVlKCkgPCA0KSB7CisrICAgIExPRyhGQVRBTCkg PDwgIllvdXIgRmxhdHBhayB2ZXJzaW9uIGlzIHRvbyBvbGQsIHBsZWFzZSB1cGRhdGUgaXQiOwor KyAgfQorKworKyAgaWYgKCEocHJvcGVydGllcy5zdXBwb3J0cy52YWx1ZSgpICYKKysgICAgICAg IFBvcnRhbFByb3BlcnRpZXM6OmtGbGF0cGFrUG9ydGFsX0V4cG9zZVBpZHMpKSB7CisrICAgIExP RyhGQVRBTCkgPDwgIllvdXIgRmxhdHBhayBpbnN0YWxsYXRpb24gaXMgc2V0dWlkLCB3aGljaCBp cyBub3Qgc3VwcG9ydGVkIjsKKysgIH0KKysKKysgIG9iamVjdF9wcm94eS0+Q29ubmVjdFRvU2ln bmFsKAorKyAgICAgIGtGbGF0cGFrUG9ydGFsSW50ZXJmYWNlTmFtZSwgIlNwYXduU3RhcnRlZCIs CisrICAgICAgYmFzZTo6QmluZFJlcGVhdGluZygmRmxhdHBha1NhbmRib3g6Ok9uU3Bhd25TdGFy dGVkU2lnbmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZCh0 aGlzKSksCisrICAgICAgYmFzZTo6QmluZE9uY2UoJkZsYXRwYWtTYW5kYm94OjpPblNpZ25hbENv bm5lY3RlZCwKKysgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKHRoaXMpKSk7 CisrCisrICBvYmplY3RfcHJveHktPkNvbm5lY3RUb1NpZ25hbCgKKysgICAgICBrRmxhdHBha1Bv cnRhbEludGVyZmFjZU5hbWUsICJTcGF3bkV4aXRlZCIsCisrICAgICAgYmFzZTo6QmluZFJlcGVh dGluZygmRmxhdHBha1NhbmRib3g6Ok9uU3Bhd25FeGl0ZWRTaWduYWwsCisrICAgICAgICAgICAg ICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKHRoaXMpKSwKKysgICAgICBiYXNlOjpCaW5k T25jZSgmRmxhdHBha1NhbmRib3g6Ok9uU2lnbmFsQ29ubmVjdGVkLAorKyAgICAgICAgICAgICAg ICAgICAgIGJhc2U6OlVucmV0YWluZWQodGhpcykpKTsKKyt9CisrCisrdm9pZCBGbGF0cGFrU2Fu ZGJveDo6T25TaWduYWxDb25uZWN0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGludGVyZmFjZSwKKysg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBzdGQ6OnN0cmluZyYg c2lnbmFsLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvb2wgY29u bmVjdGVkKSB7CisrICAvLyBJdCdzIG5vdCBzYWZlIHRvIHNwYXduIHByb2Nlc3NlcyB3aXRob3V0 IGJlaW5nIGFibGUgdG8gdHJhY2sgdGhlaXIgZGVhdGhzLgorKyAgQ0hFQ0soY29ubmVjdGVkKSA8 PCAiRmFpbGVkIHRvIGNvbm5lY3QgdG8gc2lnbmFsICIgPDwgc2lnbmFsOworK30KKysKKyt2b2lk IEZsYXRwYWtTYW5kYm94OjpPblNwYXduU3RhcnRlZFNpZ25hbChkYnVzOjpTaWduYWwqIHNpZ25h bCkgeworKyAgZGJ1czo6TWVzc2FnZVJlYWRlciByZWFkZXIoc2lnbmFsKTsKKysgIHVpbnQzMl90 IGV4dGVybmFsX3BpZCwgcmVsYXRpdmVfcGlkOworKworKyAgaWYgKCFyZWFkZXIuUG9wVWludDMy KCZleHRlcm5hbF9waWQpIHx8ICFyZWFkZXIuUG9wVWludDMyKCZyZWxhdGl2ZV9waWQpKSB7Cisr ICAgIExPRyhFUlJPUikgPDwgIkludmFsaWQgU3Bhd25TdGFydGVkIHNpZ25hbCI7CisrICAgIHJl dHVybjsKKysgIH0KKysKKysgIFZMT0coMSkgPDwgIlJlY2VpdmVkIFNwYXduU3RhcnRlZDogIiA8 PCBleHRlcm5hbF9waWQgPDwgJyAnIDw8IHJlbGF0aXZlX3BpZDsKKysKKysgIGJhc2U6OkF1dG9M b2NrIGxvY2tlcihwcm9jZXNzX2luZm9fbG9ja18pOworKworKyAgYXV0byBpdCA9IHVubWFwcGVk X3Byb2Nlc3Nlc18uZmluZChleHRlcm5hbF9waWQpOworKyAgaWYgKGl0ID09IHVubWFwcGVkX3By b2Nlc3Nlc18uZW5kKCkpIHsKKysgICAgTE9HKEVSUk9SKSA8PCAiUHJvY2VzcyAiIDw8IGV4dGVy bmFsX3BpZAorKyAgICAgICAgICAgICAgIDw8ICIgaXMgYWxyZWFkeSBkZWFkIG9yIG5vdCB0cmFj a2VkIjsKKysgICAgcmV0dXJuOworKyAgfQorKworKyAgdW5tYXBwZWRfcHJvY2Vzc2VzXy5lcmFz ZShpdCk7CisrCisrICAvLyBEb24ndCB0cnkgdG8gbWFwIHRoZW0gaWYgdGhlIHByb2Nlc3MgZGll ZCB0b28gcXVpY2tseSAod2hpY2ggaXMgdGhlIGNhdXNlCisrICAvLyBvZiByZWxhdGl2ZV9waWQg PT0gMCkuCisrICBpZiAocmVsYXRpdmVfcGlkICE9IDApIHsKKysgICAgRmxhdHBha1BpZE1hcDo6 UGlkUGFpciBwYWlyOworKyAgICBwYWlyLmV4dGVybmFsID0gZXh0ZXJuYWxfcGlkOworKyAgICBw YWlyLnJlbGF0aXZlID0gcmVsYXRpdmVfcGlkOworKyAgICBydW5uaW5nX3Byb2Nlc3Nlc18uSW5z ZXJ0KHBhaXIpOworKyAgfQorKworKyAgcHJvY2Vzc19pbmZvX2N2Xy5Ccm9hZGNhc3QoKTsKKyt9 CisrCisrdm9pZCBGbGF0cGFrU2FuZGJveDo6T25TcGF3bkV4aXRlZFNpZ25hbChkYnVzOjpTaWdu YWwqIHNpZ25hbCkgeworKyAgZGJ1czo6TWVzc2FnZVJlYWRlciByZWFkZXIoc2lnbmFsKTsKKysg IHVpbnQzMl90IGV4dGVybmFsX3BpZCwgZXhpdF9zdGF0dXM7CisrCisrICBpZiAoIXJlYWRlci5Q b3BVaW50MzIoJmV4dGVybmFsX3BpZCkgfHwgIXJlYWRlci5Qb3BVaW50MzIoJmV4aXRfc3RhdHVz KSkgeworKyAgICBMT0coRVJST1IpIDw8ICJJbnZhbGlkIFNwYXduRXhpdGVkIHNpZ25hbCI7Cisr ICAgIHJldHVybjsKKysgIH0KKysKKysgIFZMT0coMSkgPDwgIlJlY2VpdmVkIFNwYXduRXhpdGVk OiAiIDw8IGV4dGVybmFsX3BpZCA8PCAnICcgPDwgZXhpdF9zdGF0dXM7CisrCisrICBiYXNlOjpB dXRvTG9jayBsb2NrZXIocHJvY2Vzc19pbmZvX2xvY2tfKTsKKysKKysgIGF1dG8gcmVsYXRpdmVf cGlkID0gcnVubmluZ19wcm9jZXNzZXNfLkRlbGV0ZUJ5RXh0ZXJuYWwoZXh0ZXJuYWxfcGlkKTsK KysgIC8vIElmIHRoaXMgaXNuJ3QgZm91bmQsIGl0IGxpa2VseSBuZXZlciByYW4gbG9uZyBlbm91 Z2ggZm9yIFNwYXduU3RhcnRlZCB0byBiZQorKyAgLy8gZW1pdHRlZCwgc28gd2UgbmV2ZXIgYm90 aGVyIHNhdmluZyB0aGUgZXhpdCBzdGF0dXMuCisrICBpZiAocmVsYXRpdmVfcGlkKSB7CisrICAg IGF1dG8gaWdub3JlX2l0ID0gaWdub3JlX3N0YXR1c18uZmluZCgqcmVsYXRpdmVfcGlkKTsKKysg ICAgaWYgKGlnbm9yZV9pdCAhPSBpZ25vcmVfc3RhdHVzXy5lbmQoKSkgeworKyAgICAgIC8vIE1h a2Ugc3VyZSB0aGUgZXhpdCBzdGF0dXMgaXMgbm90IHNldC4KKysgICAgICByZWxhdGl2ZV9waWQu cmVzZXQoKTsKKysgICAgICBpZ25vcmVfc3RhdHVzXy5lcmFzZShpZ25vcmVfaXQpOworKyAgICB9 CisrICB9CisrCisrICBpZiAocmVsYXRpdmVfcGlkKSB7CisrICAgIGV4aXRlZF9wcm9jZXNzX3N0 YXR1c2VzX1sqcmVsYXRpdmVfcGlkXSA9IGV4aXRfc3RhdHVzOworKyAgfQorKworKyAgcHJvY2Vz c19pbmZvX2N2Xy5Ccm9hZGNhc3QoKTsKKyt9CisrCisrYmFzZTo6UHJvY2Vzc0lkIEZsYXRwYWtT YW5kYm94OjpTcGF3bigKKysgICAgY29uc3QgYmFzZTo6Q29tbWFuZExpbmUmIGNtZGxpbmUsCisr ICAgIGNvbnN0IGJhc2U6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaF9vcHRpb25zKSB7CisrICBiYXNl OjpTY29wZWRCbG9ja2luZ0NhbGwgc2NvcGVkX2Jsb2NraW5nX2NhbGwoRlJPTV9IRVJFLAorKyAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhc2U6OkJsb2Nr aW5nVHlwZTo6TUFZX0JMT0NLKTsKKysgIGJhc2U6OlNjb3BlZEFsbG93QmFzZVN5bmNQcmltaXRp dmVzIGFsbG93X3dhaXQ7CisrCisrICBTdGFydEJ1c1RocmVhZCgpOworKworKyAgVkxPRygxKSA8 PCAiUnVubmluZyB2aWEgRmxhdHBhazogIiA8PCBjbWRsaW5lLkdldENvbW1hbmRMaW5lU3RyaW5n KCk7CisrCisrICBEQ0hFQ0soR2V0U2FuZGJveExldmVsKCkgIT0gU2FuZGJveExldmVsOjprTm9u ZSk7CisrCisrICAvLyBUaGVzZSBvcHRpb25zIGFyZSBub3Qgc3VwcG9ydGVkIHdpdGggdGhlIEZs YXRwYWsgc2FuZGJveC4KKysgIERDSEVDSyhsYXVuY2hfb3B0aW9ucy5jbG9uZV9mbGFncyA9PSAw KTsKKysgIERDSEVDSyghbGF1bmNoX29wdGlvbnMud2FpdCk7CisrICBEQ0hFQ0soIWxhdW5jaF9v cHRpb25zLmFsbG93X25ld19wcml2cyk7CisrICBEQ0hFQ0sobGF1bmNoX29wdGlvbnMucmVhbF9w YXRoLmVtcHR5KCkpOworKyAgRENIRUNLKGxhdW5jaF9vcHRpb25zLnByZV9leGVjX2RlbGVnYXRl ID09IG51bGxwdHIpOworKyAgRENIRUNLKGxhdW5jaF9vcHRpb25zLm1heGltaXplX3JsaW1pdHMg PT0gbnVsbHB0cik7CisrCisrICBiYXNlOjpQcm9jZXNzSWQgZXh0ZXJuYWxfcGlkID0gYmFzZTo6 a051bGxQcm9jZXNzSWQ7CisrICBiYXNlOjpXYWl0YWJsZUV2ZW50IGV2ZW50OworKworKyAgYnVz X3RocmVhZF8udGFza19ydW5uZXIoKS0+UG9zdFRhc2soCisrICAgICAgRlJPTV9IRVJFLAorKyAg ICAgIGJhc2U6OkJpbmRPbmNlKCZGbGF0cGFrU2FuZGJveDo6U3Bhd25PbkJ1c1RocmVhZCwgYmFz ZTo6VW5yZXRhaW5lZCh0aGlzKSwKKysgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFp bmVkKCZleHRlcm5hbF9waWQpLCBiYXNlOjpVbnJldGFpbmVkKCZldmVudCksCisrICAgICAgICAg ICAgICAgICAgICAgY21kbGluZSwgbGF1bmNoX29wdGlvbnMpKTsKKysgIGV2ZW50LldhaXQoKTsK KysKKysgIHJldHVybiBleHRlcm5hbF9waWQ7CisrfQorKworK3ZvaWQgRmxhdHBha1NhbmRib3g6 OlNwYXduT25CdXNUaHJlYWQoCisrICAgIGJhc2U6OlByb2Nlc3NJZCogb3V0X2V4dGVybmFsX3Bp ZCwKKysgICAgYmFzZTo6V2FpdGFibGVFdmVudCogZXZlbnQsCisrICAgIGNvbnN0IGJhc2U6OkNv bW1hbmRMaW5lJiBjbWRsaW5lLAorKyAgICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25zJiBsYXVu Y2hfb3B0aW9ucykgeworKyAgZGJ1czo6T2JqZWN0UHJveHkqIG9iamVjdF9wcm94eSA9IEdldFBv cnRhbE9iamVjdFByb3h5KCk7CisrICBkYnVzOjpNZXRob2RDYWxsIG1ldGhvZF9jYWxsKGtGbGF0 cGFrUG9ydGFsSW50ZXJmYWNlTmFtZSwgIlNwYXduIik7CisrICBkYnVzOjpNZXNzYWdlV3JpdGVy IHdyaXRlcigmbWV0aG9kX2NhbGwpOworKworKyAgY29uc3QgYmFzZTo6RmlsZVBhdGgmIGN1cnJl bnRfZGlyZWN0b3J5ID0KKysgICAgICAhbGF1bmNoX29wdGlvbnMuY3VycmVudF9kaXJlY3Rvcnku ZW1wdHkoKQorKyAgICAgICAgICA/IGxhdW5jaF9vcHRpb25zLmN1cnJlbnRfZGlyZWN0b3J5Cisr ICAgICAgICAgIC8vIENoYW5nZSB0byAvYXBwIHNpbmNlIGl0J3MgZ3VhcmFudGVlZCB0byBhbHdh eXMgYmUgcHJlc2VudCBpbgorKyAgICAgICAgICAvLyB0aGUgc2FuZGJveC4KKysgICAgICAgICAg OiBrRmxhdHBha0FwcFBhdGg7CisrICBXcml0ZVN0cmluZ0FzQnl0ZUFycmF5KCZ3cml0ZXIsIGN1 cnJlbnRfZGlyZWN0b3J5LnZhbHVlKCkpOworKworKyAgZGJ1czo6TWVzc2FnZVdyaXRlciBhcmd2 X3dyaXRlcihudWxscHRyKTsKKysgIHdyaXRlci5PcGVuQXJyYXkoImF5IiwgJmFyZ3Zfd3JpdGVy KTsKKysKKysgIGZvciAoY29uc3Qgc3RkOjpzdHJpbmcmIGFyZyA6IGNtZGxpbmUuYXJndigpKSB7 CisrICAgIFdyaXRlU3RyaW5nQXNCeXRlQXJyYXkoJmFyZ3Zfd3JpdGVyLCBhcmcpOworKyAgfQor KworKyNpZm5kZWYgTkRFQlVHCisrICBpZiAoYmFzZTo6Q29tbWFuZExpbmU6OkZvckN1cnJlbnRQ cm9jZXNzKCktPkhhc1N3aXRjaCgKKysgICAgICAgICAga0Rpc2FibGVGdWxsRmxhdHBha1NhbmRi b3gpKSB7CisrICAgIHN0ZDo6c3RyaW5nIGFyZyA9ICItLSI7CisrICAgIGFyZyArPSBrRGlzYWJs ZUZ1bGxGbGF0cGFrU2FuZGJveDsKKysgICAgV3JpdGVTdHJpbmdBc0J5dGVBcnJheSgmYXJndl93 cml0ZXIsIGFyZyk7CisrICB9CisrI2VuZGlmCisrCisrICB3cml0ZXIuQ2xvc2VDb250YWluZXIo JmFyZ3Zfd3JpdGVyKTsKKysKKysgIGRidXM6Ok1lc3NhZ2VXcml0ZXIgZmRzX3dyaXRlcihudWxs cHRyKTsKKysgIHdyaXRlci5PcGVuQXJyYXkoInt1aH0iLCAmZmRzX3dyaXRlcik7CisrCisrICBX cml0ZUZkUGFpck1hcCgmZmRzX3dyaXRlciwgU1RESU5fRklMRU5PLCBTVERJTl9GSUxFTk8pOwor KyAgV3JpdGVGZFBhaXJNYXAoJmZkc193cml0ZXIsIFNURE9VVF9GSUxFTk8sIFNURE9VVF9GSUxF Tk8pOworKyAgV3JpdGVGZFBhaXJNYXAoJmZkc193cml0ZXIsIFNUREVSUl9GSUxFTk8sIFNUREVS Ul9GSUxFTk8pOworKworKyAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbGF1bmNoX29wdGlvbnMu ZmRzX3RvX3JlbWFwKSB7CisrICAgIFdyaXRlRmRQYWlyTWFwKCZmZHNfd3JpdGVyLCBwYWlyLmZp cnN0LCBwYWlyLnNlY29uZCk7CisrICB9CisrCisrICB3cml0ZXIuQ2xvc2VDb250YWluZXIoJmZk c193cml0ZXIpOworKworKyAgZGJ1czo6TWVzc2FnZVdyaXRlciBlbnZfd3JpdGVyKG51bGxwdHIp OworKyAgd3JpdGVyLk9wZW5BcnJheSgie3NzfSIsICZlbnZfd3JpdGVyKTsKKysKKysgIGZvciAo Y29uc3QgYXV0byYgcGFpciA6IGxhdW5jaF9vcHRpb25zLmVudmlyb25tZW50KSB7CisrICAgIGRi dXM6Ok1lc3NhZ2VXcml0ZXIgZW50cnlfd3JpdGVyKG51bGxwdHIpOworKyAgICBlbnZfd3JpdGVy Lk9wZW5EaWN0RW50cnkoJmVudHJ5X3dyaXRlcik7CisrCisrICAgIGVudHJ5X3dyaXRlci5BcHBl bmRTdHJpbmcocGFpci5maXJzdCk7CisrICAgIGVudHJ5X3dyaXRlci5BcHBlbmRTdHJpbmcocGFp ci5zZWNvbmQpOworKworKyAgICBlbnZfd3JpdGVyLkNsb3NlQ29udGFpbmVyKCZlbnRyeV93cml0 ZXIpOworKyAgfQorKworKyAgd3JpdGVyLkNsb3NlQ29udGFpbmVyKCZlbnZfd3JpdGVyKTsKKysK KysgIGludCBzcGF3bl9mbGFncyA9IGtGbGF0cGFrU3Bhd25fU2FuZGJveCB8IGtGbGF0cGFrU3Bh d25fRXhwb3NlUGlkcyB8CisrICAgICAgICAgICAgICAgICAgICBrRmxhdHBha1NwYXduX05vdGlm eVN0YXJ0OworKyAgaW50IHNhbmRib3hfZmxhZ3MgPSAwOworKworKyNpZm5kZWYgTkRFQlVHCisr ICBpZiAoYmFzZTo6Q29tbWFuZExpbmU6OkZvckN1cnJlbnRQcm9jZXNzKCktPkhhc1N3aXRjaCgK KysgICAgICAgICAga0Rpc2FibGVGdWxsRmxhdHBha1NhbmRib3gpKSB7CisrICAgIHNwYXduX2Zs YWdzICY9IH5rRmxhdHBha1NwYXduX1NhbmRib3g7CisrICB9CisrI2Vsc2UKKysjZW5kaWYKKysK KysgIGlmIChsYXVuY2hfb3B0aW9ucy5jbGVhcl9lbnZpcm9ubWVudCkgeworKyAgICBzcGF3bl9m bGFncyB8PSBrRmxhdHBha1NwYXduX0NsZWFyRW52aXJvbm1lbnQ7CisrICB9CisrCisrICBpZiAo bGF1bmNoX29wdGlvbnMua2lsbF9vbl9wYXJlbnRfZGVhdGgpIHsKKysgICAgc3Bhd25fZmxhZ3Mg fD0ga0ZsYXRwYWtTcGF3bl9XYXRjaEJ1czsKKysgIH0KKysKKysgIHdyaXRlci5BcHBlbmRVaW50 MzIoc3Bhd25fZmxhZ3MpOworKworKyAgZGJ1czo6TWVzc2FnZVdyaXRlciBvcHRpb25zX3dyaXRl cihudWxscHRyKTsKKysgIHdyaXRlci5PcGVuQXJyYXkoIntzdn0iLCAmb3B0aW9uc193cml0ZXIp OworKworKyAgaWYgKHNhbmRib3hfZmxhZ3MgIT0gMCkgeworKyAgICBkYnVzOjpNZXNzYWdlV3Jp dGVyIGVudHJ5X3dyaXRlcihudWxscHRyKTsKKysgICAgb3B0aW9uc193cml0ZXIuT3BlbkRpY3RF bnRyeSgmZW50cnlfd3JpdGVyKTsKKysKKysgICAgZW50cnlfd3JpdGVyLkFwcGVuZFN0cmluZygi c2FuZGJveC1mbGFncyIpOworKworKyAgICBkYnVzOjpNZXNzYWdlV3JpdGVyIHZhcmlhbnRfd3Jp dGVyKG51bGxwdHIpOworKyAgICBlbnRyeV93cml0ZXIuT3BlblZhcmlhbnQoInUiLCAmdmFyaWFu dF93cml0ZXIpOworKworKyAgICB2YXJpYW50X3dyaXRlci5BcHBlbmRVaW50MzIoc2FuZGJveF9m bGFncyk7CisrCisrICAgIGVudHJ5X3dyaXRlci5DbG9zZUNvbnRhaW5lcigmdmFyaWFudF93cml0 ZXIpOworKyAgICBvcHRpb25zX3dyaXRlci5DbG9zZUNvbnRhaW5lcigmZW50cnlfd3JpdGVyKTsK KysgIH0KKysKKysgIHdyaXRlci5DbG9zZUNvbnRhaW5lcigmb3B0aW9uc193cml0ZXIpOworKwor KyAgb2JqZWN0X3Byb3h5LT5DYWxsTWV0aG9kV2l0aEVycm9yUmVzcG9uc2UoCisrICAgICAgJm1l dGhvZF9jYWxsLCBkYnVzOjpPYmplY3RQcm94eTo6VElNRU9VVF9JTkZJTklURSwKKysgICAgICBi YXNlOjpCaW5kT25jZSgmRmxhdHBha1NhbmRib3g6Ok9uU3Bhd25SZXNwb25zZSwgYmFzZTo6VW5y ZXRhaW5lZCh0aGlzKSwKKysgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKG91 dF9leHRlcm5hbF9waWQpLAorKyAgICAgICAgICAgICAgICAgICAgIGJhc2U6OlVucmV0YWluZWQo ZXZlbnQpKSk7CisrfQorKworK3ZvaWQgRmxhdHBha1NhbmRib3g6Ok9uU3Bhd25SZXNwb25zZShi YXNlOjpQcm9jZXNzSWQqIG91dF9leHRlcm5hbF9waWQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGJhc2U6OldhaXRhYmxlRXZlbnQqIGV2ZW50LAorKyAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICBkYnVzOjpSZXNwb25zZSogcmVzcG9uc2UsCisrICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRidXM6OkVycm9yUmVzcG9uc2UqIGVy cm9yX3Jlc3BvbnNlKSB7CisrICBpZiAocmVzcG9uc2UpIHsKKysgICAgZGJ1czo6TWVzc2FnZVJl YWRlciByZWFkZXIocmVzcG9uc2UpOworKyAgICB1aW50MzJfdCBleHRlcm5hbF9waWQ7CisrICAg IGlmICghcmVhZGVyLlBvcFVpbnQzMigmZXh0ZXJuYWxfcGlkKSkgeworKyAgICAgIExPRyhFUlJP UikgPDwgIkludmFsaWQgU3Bhd24oKSByZXNwb25zZSI7CisrICAgIH0gZWxzZSB7CisrICAgICAg VkxPRygxKSA8PCAiU3Bhd24oKSByZXR1cm5lZCBQSUQgIiA8PCBleHRlcm5hbF9waWQ7CisrICAg ICAgaWYgKG91dF9leHRlcm5hbF9waWQgIT0gbnVsbHB0cikgeworKyAgICAgICAgKm91dF9leHRl cm5hbF9waWQgPSBleHRlcm5hbF9waWQ7CisrICAgICAgfQorKworKyAgICAgIGJhc2U6OkF1dG9M b2NrIGxvY2tlcihwcm9jZXNzX2luZm9fbG9ja18pOworKyAgICAgIHVubWFwcGVkX3Byb2Nlc3Nl c18uaW5zZXJ0KGV4dGVybmFsX3BpZCk7CisrICAgIH0KKysgIH0gZWxzZSBpZiAoZXJyb3JfcmVz cG9uc2UpIHsKKysgICAgc3RkOjpzdHJpbmcgZXJyb3JfbmFtZSA9IGVycm9yX3Jlc3BvbnNlLT5H ZXRFcnJvck5hbWUoKTsKKysgICAgc3RkOjpzdHJpbmcgZXJyb3JfbWVzc2FnZTsKKysgICAgZGJ1 czo6TWVzc2FnZVJlYWRlciByZWFkZXIoZXJyb3JfcmVzcG9uc2UpOworKyAgICByZWFkZXIuUG9w U3RyaW5nKCZlcnJvcl9tZXNzYWdlKTsKKysKKysgICAgTE9HKEVSUk9SKSA8PCAiRXJyb3IgY2Fs bGluZyBTcGF3bigpOiAiIDw8IGVycm9yX25hbWUgPDwgIjogIgorKyAgICAgICAgICAgICAgIDw8 IGVycm9yX21lc3NhZ2U7CisrICB9IGVsc2UgeworKyAgICBMT0coRVJST1IpIDw8ICJVbmtub3du IGVycm9yIG9jY3VycmVkIGNhbGxpbmcgU3Bhd24oKSI7CisrICB9CisrCisrICBpZiAoZXZlbnQg IT0gbnVsbHB0cikgeworKyAgICBldmVudC0+U2lnbmFsKCk7CisrICB9CisrfQorKworK2Jhc2U6 OlByb2Nlc3NJZCBGbGF0cGFrU2FuZGJveDo6R2V0UmVsYXRpdmVQaWQoYmFzZTo6UHJvY2Vzc0lk IGV4dGVybmFsX3BpZCkgeworKyAgYmFzZTo6U2NvcGVkQmxvY2tpbmdDYWxsIHNjb3BlZF9ibG9j a2luZ19jYWxsKEZST01fSEVSRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICBiYXNlOjpCbG9ja2luZ1R5cGU6Ok1BWV9CTE9DSyk7CisrICBiYXNlOjpT Y29wZWRBbGxvd0Jhc2VTeW5jUHJpbWl0aXZlcyBhbGxvd193YWl0OworKworKyAgYmFzZTo6QXV0 b0xvY2sgbG9ja2VyKHByb2Nlc3NfaW5mb19sb2NrXyk7CisrCisrICBmb3IgKDs7KSB7CisrICAg IGF1dG8gdW5tYXBwZWRfaXQgPSB1bm1hcHBlZF9wcm9jZXNzZXNfLmZpbmQoZXh0ZXJuYWxfcGlk KTsKKysgICAgaWYgKHVubWFwcGVkX2l0ICE9IHVubWFwcGVkX3Byb2Nlc3Nlc18uZW5kKCkpIHsK KysgICAgICAvLyBObyByZWxhdGl2ZSBQSUQgaXMga25vd24geWV0LgorKyAgICAgIFZMT0coMSkg PDwgIldhaXRpbmcgZm9yICIgPDwgZXh0ZXJuYWxfcGlkOworKyAgICAgIHByb2Nlc3NfaW5mb19j dl8uV2FpdCgpOworKyAgICAgIGNvbnRpbnVlOworKyAgICB9CisrCisrICAgIGF1dG8gcmVsYXRp dmVfcGlkID0gcnVubmluZ19wcm9jZXNzZXNfLkZpbmRSZWxhdGl2ZUJ5RXh0ZXJuYWwoZXh0ZXJu YWxfcGlkKTsKKysgICAgaWYgKCFyZWxhdGl2ZV9waWQpIHsKKysgICAgICBleGl0ZWRfcHJvY2Vz c19zdGF0dXNlc18uZXJhc2UoZXh0ZXJuYWxfcGlkKTsKKysKKysgICAgICBMT0coSU5GTykgPDwg IkFscmVhZHkgZGllZDogIiA8PCBleHRlcm5hbF9waWQ7CisrICAgICAgcmV0dXJuIGJhc2U6OmtO dWxsUHJvY2Vzc0lkOworKyAgICB9CisrCisrICAgIFZMT0coMSkgPDwgIkdvdCAiIDw8IGV4dGVy bmFsX3BpZCA8PCAiID0+ICIgPDwgKnJlbGF0aXZlX3BpZDsKKysgICAgcmV0dXJuICpyZWxhdGl2 ZV9waWQ7CisrICB9CisrfQorKworK30gIC8vIG5hbWVzcGFjZSBzYW5kYm94CitkaWZmIC0tZ2l0 IGEvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guaCBiL3NhbmRib3gvbGlu dXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRl eCAwMDAwMDAwMDAwMDAwLi4xNjdiYmM4NTk0NWFkCistLS0gL2Rldi9udWxsCisrKysgYi9zYW5k Ym94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5oCitAQCAtMCwwICsxLDExOCBAQAor Ky8vIENvcHlyaWdodCAyMDE5IFRoZSBDaHJvbWl1bSBBdXRob3JzLiBBbGwgcmlnaHRzIHJlc2Vy dmVkLgorKy8vIFVzZSBvZiB0aGlzIHNvdXJjZSBjb2RlIGlzIGdvdmVybmVkIGJ5IGEgQlNELXN0 eWxlIGxpY2Vuc2UgdGhhdCBjYW4gYmUKKysvLyBmb3VuZCBpbiB0aGUgTElDRU5TRSBmaWxlLgor KworKyNpZm5kZWYgU0FOREJPWF9MSU5VWF9TRVJWSUNFU19GTEFUUEFLX1NBTkRCT1hfSF8KKysj ZGVmaW5lIFNBTkRCT1hfTElOVVhfU0VSVklDRVNfRkxBVFBBS19TQU5EQk9YX0hfCisrCisrI2lu Y2x1ZGUgImJhc2UvY29tbWFuZF9saW5lLmgiCisrI2luY2x1ZGUgImJhc2UvY29tcGlsZXJfc3Bl Y2lmaWMuaCIKKysjaW5jbHVkZSAiYmFzZS9jb250YWluZXJzL2ZsYXRfbWFwLmgiCisrI2luY2x1 ZGUgImJhc2UvY29udGFpbmVycy9mbGF0X3NldC5oIgorKyNpbmNsdWRlICJiYXNlL25vX2Rlc3Ry dWN0b3IuaCIKKysjaW5jbHVkZSAiYmFzZS9wcm9jZXNzL2tpbGwuaCIKKysjaW5jbHVkZSAiYmFz ZS9wcm9jZXNzL2xhdW5jaC5oIgorKyNpbmNsdWRlICJiYXNlL3Byb2Nlc3MvcHJvY2Vzc19oYW5k bGUuaCIKKysjaW5jbHVkZSAiYmFzZS9zeW5jaHJvbml6YXRpb24vY29uZGl0aW9uX3ZhcmlhYmxl LmgiCisrI2luY2x1ZGUgImJhc2Uvc3luY2hyb25pemF0aW9uL2xvY2suaCIKKysjaW5jbHVkZSAi YmFzZS9zeW5jaHJvbml6YXRpb24vd2FpdGFibGVfZXZlbnQuaCIKKysjaW5jbHVkZSAiYmFzZS90 aHJlYWRpbmcvdGhyZWFkLmgiCisrI2luY2x1ZGUgImRidXMvYnVzLmgiCisrI2luY2x1ZGUgImRi dXMvbWVzc2FnZS5oIgorKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtf cGlkX21hcC5oIgorKyNpbmNsdWRlICJzYW5kYm94L3NhbmRib3hfZXhwb3J0LmgiCisrI2luY2x1 ZGUgInRoaXJkX3BhcnR5L2Fic2VpbC1jcHAvYWJzbC90eXBlcy9vcHRpb25hbC5oIgorKworK25h bWVzcGFjZSBzYW5kYm94IHsKKysKKysvLyBNYW5hZ2VzIHRoZSBzdGF0ZSBvZiBhbmQgYWNjZXNz IHRvIHRoZSBGbGF0cGFrIHNhbmRib3guCisrLy8gTm90ZSB0aGF0IHRoZXJlIGlzIGEgZGlzdGlu Y3Rpb24gYmV0d2VlbiBleHRlcm5hbCBhbmQgaW50ZXJuYWwgUElEczoKKysvLyAtIEV4dGVybmFs IFBJRHMgYXJlIHRoZSBQSURzIHJlbGF0aXZlIHRvIHRoZSB3b3JsZCBvdXRzaWRlIHRoZSBzYW5k Ym94LgorKy8vIC0gSW50ZXJuYWwgUElEcyBhcmUgdGhlIFBJRHMgcmVsYXRpdmUgdG8gdGhlIGN1 cnJlbnQgUElEIG5hbWVzcGFjZS4KKysvLyBGbGF0cGFrJ3Mgc2FuZGJveCBBUElzIHdvcmsgcHJp bWFyaWx5IHdpdGggZXh0ZXJuYWwgUElEcywgYW5kIGFuCisrLy8gaW50ZXJuYWwgUElEIG11c3Qg YmUgcmV0cmlldmVkIGZyb20gdGhlIFNwYXduU3RhcnRlZCBzaWduYWwgYmVmb3JlCisrLy8gaXQg aXMga25vd24gaW5zaWRlIHRoZSBzYW5kYm94J3MgUElEIG5hbWVzcGFjZS4KKytjbGFzcyBTQU5E Qk9YX0VYUE9SVCBGbGF0cGFrU2FuZGJveCB7CisrIHB1YmxpYzoKKysgIHN0YXRpYyBGbGF0cGFr U2FuZGJveCogR2V0SW5zdGFuY2UoKTsKKysKKysgIC8vIFJlcHJlc2VudHMgdGhlIGxldmVsIG9m IHNhbmRib3hpbmcgaW5zaWRlIGEgRmxhdHBhay4ga05vbmUgbWVhbnMgdGhpcyBpcworKyAgLy8g bm90IGEgRmxhdHBhaywga0ZsYXRwYWsgbWVhbnMgaXQncyBpbnNpZGUgYSBGbGF0cGFrIHNhbmRi b3gsIGFuZAorKyAgLy8ga1Jlc3RyaWN0ZWQgbWVhbnMgdGhhdCB0aGlzIGlzIGluc2lkZSBhIG5l c3RlZCBGbGF0cGFrIHNhbmRib3ggd2l0aCBtb3N0CisrICAvLyBwZXJtaXNzaW9ucyByZXZva2Vk LgorKyAgZW51bSBjbGFzcyBTYW5kYm94TGV2ZWwgeyBrTm9uZSwga0ZsYXRwYWssIGtSZXN0cmlj dGVkIH07CisrCisrICAvLyBHZXQgdGhlIGN1cnJlbnQgbGV2ZWwgb2Ygc2FuZGJveGluZyBpbiB0 aGlzIEZsYXRwYWsuCisrICBTYW5kYm94TGV2ZWwgR2V0U2FuZGJveExldmVsKCk7CisrCisrICAv LyBSZXR1cm5zIHdoZXRoZXIgb3Igbm90IHRoZSBnaXZlbiBQSUQgd2FzIHNwYXduZWQgdmlhIHRo ZSBGbGF0cGFrIHNhbmRib3guCisrICBib29sIElzUGlkU2FuZGJveGVkKGJhc2U6OlByb2Nlc3NJ ZCByZWxhdGl2ZV9waWQpOworKworKyAgLy8gTGF1bmNoIHRoZSBnaXZlbiBwcm9jZXNzIGluc2lk ZSBvZiBhIEZsYXRwYWsgc2FuZGJveC4gSWYgYWxsb3dfeDExIGlzIHRydWUsCisrICAvLyB0aGVu IHRoZSBwcm9jZXNzIHdpbGwgYmUgZ2l2ZW4gYWNjZXNzIHRvIHRoZSBob3N0J3MgWDExIGRpc3Bs YXkuIE9uCisrICAvLyBmYWlsdXJlLCByZXR1cm5zIGtOdWxsUHJvY2Vzc0lkLiBOb3RlIHRoYXQg dGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgUElECisrICAvLyByZWxhdGl2ZSB0byB0aGUgaG9zdCBp LmUuIG91dHNpZGUgdGhlIHNhbmRib3gsIHRvIGdldCB0aGUgaW50ZXJuYWwgb25lIGNhbGwKKysg IC8vIEdldFJlbGF0aXZlUGlkLiBUaGlzIGlzIHRoZSByZWFzb24gd2h5IGEgdmFuaWxsYSBQcm9j ZXNzSWQgaXMgcmV0dXJuZWQKKysgIC8vIHJhdGhlciB0aGFuIGEgYmFzZTo6UHJvY2VzcyBpbnN0 YW5jZS4KKysgIGJhc2U6OlByb2Nlc3MgTGF1bmNoUHJvY2Vzcyhjb25zdCBiYXNlOjpDb21tYW5k TGluZSYgY21kbGluZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNl OjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucyk7CisrCisrICAvLyBJbmRlZmluaXRlbHkg d2FpdHMgZm9yIHRoZSBnaXZlbiBwcm9jZXNzIGFuZCBmaWxscyB0aGUgZXhpdCBjb2RlIHBvaW50 ZXIKKysgIC8vIGlmIGdpdmVuIGFuZCBub24tbnVsbC4gUmV0dXJucyBmYWxzZSBvbiB3YWl0IGZh aWx1cmUuCisrICBib29sIFdhaXQoYmFzZTo6UHJvY2Vzc0lkIHJlbGF0aXZlX3BpZCwgaW50KiBl eGl0X2NvZGUpOworKworKyAgLy8gU2tpcHMgc3RvcmluZyB0aGUgZXhpdCBzdGF0dXMgb2YgdGhl IGdpdmVuIFBJRC4KKysgIHZvaWQgSWdub3JlRXhpdFN0YXR1cyhiYXNlOjpQcm9jZXNzSWQgcmVs YXRpdmVfcGlkKTsKKysKKysgcHJpdmF0ZToKKysgIGZyaWVuZCBjbGFzcyBiYXNlOjpOb0Rlc3Ry dWN0b3I8RmxhdHBha1NhbmRib3g+OworKworKyAgRmxhdHBha1NhbmRib3goKTsKKysgIEZsYXRw YWtTYW5kYm94KGNvbnN0IEZsYXRwYWtTYW5kYm94JikgPSBkZWxldGU7CisrICBGbGF0cGFrU2Fu ZGJveChGbGF0cGFrU2FuZGJveCYmKSA9IGRlbGV0ZTsKKysgIH5GbGF0cGFrU2FuZGJveCgpOwor KworKyAgdm9pZCBTdGFydEJ1c1RocmVhZCgpOworKyAgZGJ1czo6QnVzKiBBY3F1aXJlQnVzRnJv bUJ1c1RocmVhZCgpOworKyAgZGJ1czo6T2JqZWN0UHJveHkqIEdldFBvcnRhbE9iamVjdFByb3h5 KCk7CisrCisrICB2b2lkIEluaXRpYWxpemVCdXNUaHJlYWQoKTsKKysgIHZvaWQgT25TaWduYWxD b25uZWN0ZWQoY29uc3Qgc3RkOjpzdHJpbmcmIGludGVyZmFjZSwKKysgICAgICAgICAgICAgICAg ICAgICAgICAgY29uc3Qgc3RkOjpzdHJpbmcmIHNpZ25hbCwKKysgICAgICAgICAgICAgICAgICAg ICAgICAgYm9vbCBjb25uZWN0ZWQpOworKyAgdm9pZCBPblNwYXduU3RhcnRlZFNpZ25hbChkYnVz OjpTaWduYWwqIHNpZ25hbCk7CisrICB2b2lkIE9uU3Bhd25FeGl0ZWRTaWduYWwoZGJ1czo6U2ln bmFsKiBzaWduYWwpOworKworKyAgYmFzZTo6UHJvY2Vzc0lkIFNwYXduKGNvbnN0IGJhc2U6OkNv bW1hbmRMaW5lJiBjbWRsaW5lLAorKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6 OkxhdW5jaE9wdGlvbnMmIGxhdW5jaF9vcHRpb25zKTsKKysgIHZvaWQgU3Bhd25PbkJ1c1RocmVh ZChiYXNlOjpQcm9jZXNzSWQqIG91dF9leHRlcm5hbF9waWQsCisrICAgICAgICAgICAgICAgICAg ICAgICAgYmFzZTo6V2FpdGFibGVFdmVudCogZXZlbnQsCisrICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgYmFzZTo6Q29tbWFuZExpbmUmIGNtZGxpbmUsCisrICAgICAgICAgICAgICAgICAg ICAgICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoX29wdGlvbnMpOworKyAgdm9p ZCBPblNwYXduUmVzcG9uc2UoYmFzZTo6UHJvY2Vzc0lkKiBvdXRfZXh0ZXJuYWxfcGlkLAorKyAg ICAgICAgICAgICAgICAgICAgICAgYmFzZTo6V2FpdGFibGVFdmVudCogZXZlbnQsCisrICAgICAg ICAgICAgICAgICAgICAgICBkYnVzOjpSZXNwb25zZSogcmVzcG9uc2UsCisrICAgICAgICAgICAg ICAgICAgICAgICBkYnVzOjpFcnJvclJlc3BvbnNlKiBlcnJvcl9yZXNwb25zZSk7CisrCisrICBi YXNlOjpQcm9jZXNzSWQgR2V0UmVsYXRpdmVQaWQoYmFzZTo6UHJvY2Vzc0lkIGV4dGVybmFsX3Bp ZCk7CisrCisrICBhYnNsOjpvcHRpb25hbDxTYW5kYm94TGV2ZWw+IHNhbmRib3hfbGV2ZWxfOwor KyAgYmFzZTo6VGhyZWFkIGJ1c190aHJlYWRfOworKworKyAgYmFzZTo6TG9jayBwcm9jZXNzX2lu Zm9fbG9ja187CisrICAvLyBOb3RlIHRoYXQgYnJvYWRjYXN0IGlzIHVzZWQgaW4gdGhlIHNvdXJj ZSwgYmVjYXVzZSBpbiBnZW5lcmFsCisrICAvLyB2ZXJ5IGZldyB0aHJlYWRzIHdpbGwgYmUgY29u dGVuZGluZyBmb3IgdGhlIGxvY2suCisrICBiYXNlOjpDb25kaXRpb25WYXJpYWJsZSBwcm9jZXNz X2luZm9fY3ZfOworKyAgLy8gU2V0IG9mIHByb2Nlc3NlcyB0aGF0IGhhdmUgbm8gYXNzb2NpYXRl ZCByZWxhdGl2ZSBQSUQgeWV0LgorKyAgYmFzZTo6ZmxhdF9zZXQ8YmFzZTo6UHJvY2Vzc0lkPiB1 bm1hcHBlZF9wcm9jZXNzZXNfOworKyAgLy8gTWFwIG9mIHJ1bm5pbmcgcHJvY2Vzc2VzLgorKyAg RmxhdHBha1BpZE1hcCBydW5uaW5nX3Byb2Nlc3Nlc187CisrICAvLyBNYXAgb2YgYSByZWxhdGl2 ZSBwcm9jZXNzIElEIHRoYXQgaGFzIGV4aXRlZCB0byBpdHMgd2FpdHBpZCBzdGF0dXMuCisrICBz dGQ6Om1hcDxiYXNlOjpQcm9jZXNzSWQsIGludD4gZXhpdGVkX3Byb2Nlc3Nfc3RhdHVzZXNfOwor KyAgLy8gUmVsYXRpdmUgcHJvY2VzcyBJRHMgdGhhdCBzaG91bGQgaGF2ZSB0aGVpciBzdGF0dXNl cyBpZ25vcmVkIG9uIGV4aXQuCisrICBzdGQ6OnNldDxiYXNlOjpQcm9jZXNzSWQ+IGlnbm9yZV9z dGF0dXNfOworK307CisrCisrfSAgLy8gbmFtZXNwYWNlIHNhbmRib3gKKysKKysjZW5kaWYgIC8v IFNBTkRCT1hfTElOVVhfU0VSVklDRVNfRkxBVFBBS19TQU5EQk9YX0hfCitkaWZmIC0tZ2l0IGEv c2FuZGJveC9wb2xpY3kvQlVJTEQuZ24gYi9zYW5kYm94L3BvbGljeS9CVUlMRC5nbgoraW5kZXgg NGZlNTNiMDQ3YjlhYS4uNzk0ZTFhZDE4MDVkOCAxMDA2NDQKKy0tLSBhL3NhbmRib3gvcG9saWN5 L0JVSUxELmduCisrKysgYi9zYW5kYm94L3BvbGljeS9CVUlMRC5nbgorQEAgLTEyOSw2ICsxMjks OSBAQCBjb21wb25lbnQoInBvbGljeSIpIHsKKyAgICAgICAiLy9zYW5kYm94L2xpbnV4OnN1aWRf c2FuZGJveF9jbGllbnQiLAorICAgICBdCisgICB9CisrICBpZiAoaXNfbGludXgpIHsKKysgICAg cHVibGljX2RlcHMgKz0gWyAiLy9zYW5kYm94L2xpbnV4OnNhbmRib3hfc2VydmljZXMiIF0KKysg IH0KKyAgIGlmIChpc19jaHJvbWVvc19hc2gpIHsKKyAgICAgc291cmNlcyArPSBbCisgICAgICAg ImxpbnV4L2JwZl9pbWVfcG9saWN5X2xpbnV4LmNjIiwKK2RpZmYgLS1naXQgYS9zYW5kYm94L3Bv bGljeS9saW51eC9zYW5kYm94X2xpbnV4LmNjIGIvc2FuZGJveC9wb2xpY3kvbGludXgvc2FuZGJv eF9saW51eC5jYworaW5kZXggYzczMTM0MTZlNjE4My4uMGNiODA0M2YwYWM3MiAxMDA2NDQKKy0t LSBhL3NhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfbGludXguY2MKKysrKyBiL3NhbmRib3gv cG9saWN5L2xpbnV4L3NhbmRib3hfbGludXguY2MKK0BAIC0zNyw2ICszNyw3IEBACisgI2luY2x1 ZGUgInNhbmRib3gvY29uc3RhbnRzLmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VjY29t cC1icGYtaGVscGVycy9zaWdzeXNfaGFuZGxlcnMuaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51 eC9zZXJ2aWNlcy9jcmVkZW50aWFscy5oIgorKyNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZp Y2VzL2ZsYXRwYWtfc2FuZGJveC5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2Vz L2xpYmNfaW50ZXJjZXB0b3IuaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9u YW1lc3BhY2Vfc2FuZGJveC5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3NlcnZpY2VzL3By b2NfdXRpbC5oIgorQEAgLTIzNiw2ICsyMzcsOSBAQCB2b2lkIFNhbmRib3hMaW51eDo6UHJlaW5p dGlhbGl6ZVNhbmRib3goKSB7CisgICBjb25zdCBpbnQgeWFtYV9zdGF0dXMgPSBZYW1hOjpHZXRT dGF0dXMoKTsKKyAgIHlhbWFfaXNfZW5mb3JjaW5nXyA9ICh5YW1hX3N0YXR1cyAmIFlhbWE6OlNU QVRVU19QUkVTRU5UKSAmJgorICAgICAgICAgICAgICAgICAgICAgICAgKHlhbWFfc3RhdHVzICYg WWFtYTo6U1RBVFVTX0VORk9SQ0lORyk7CisrCisrICBmbGF0cGFrX3NhbmRib3hfbGV2ZWxfID0K KysgICAgICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6R2V0SW5zdGFuY2UoKS0+R2V0U2FuZGJv eExldmVsKCk7CisgICBwcmVfaW5pdGlhbGl6ZWRfID0gdHJ1ZTsKKyB9CisgCitAQCAtMjc0LDYg KzI3OCwxMCBAQCBpbnQgU2FuZGJveExpbnV4OjpHZXRTdGF0dXMoKSB7CisgICAgICAgICBzYW5k Ym94X3N0YXR1c19mbGFnc18gfD0ga1BJRE5TOworICAgICAgIGlmIChOYW1lc3BhY2VTYW5kYm94 OjpJbk5ld05ldE5hbWVzcGFjZSgpKQorICAgICAgICAgc2FuZGJveF9zdGF0dXNfZmxhZ3NfIHw9 IGtOZXROUzsKKysgICAgfSBlbHNlIGlmIChmbGF0cGFrX3NhbmRib3hfbGV2ZWxfID09CisrICAg ICAgICAgICAgICAgc2FuZGJveDo6RmxhdHBha1NhbmRib3g6OlNhbmRib3hMZXZlbDo6a1Jlc3Ry aWN0ZWQpIHsKKysgICAgICAvLyBGbGF0cGFrIHNhbmRib3hlcyBhbHdheXMgdXNlIG5ldyBuYW1l c3BhY2VzLgorKyAgICAgIHNhbmRib3hfc3RhdHVzX2ZsYWdzXyB8PSBrRmxhdHBhayB8IGtQSURO UyB8IGtOZXROUzsKKyAgICAgfQorIAorICAgICAvLyBXZSByZXBvcnQgd2hldGhlciB0aGUgc2Fu ZGJveCB3aWxsIGJlIGFjdGl2YXRlZCB3aGVuIHJlbmRlcmVycywgd29ya2VycworZGlmZiAtLWdp dCBhL3NhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfbGludXguaCBiL3NhbmRib3gvcG9saWN5 L2xpbnV4L3NhbmRib3hfbGludXguaAoraW5kZXggMGU0Zjc4YjllNmNiNy4uOTFiNjM4ZDhhOTZl MCAxMDA2NDQKKy0tLSBhL3NhbmRib3gvcG9saWN5L2xpbnV4L3NhbmRib3hfbGludXguaAorKysr IGIvc2FuZGJveC9wb2xpY3kvbGludXgvc2FuZGJveF9saW51eC5oCitAQCAtMTMsNiArMTMsNyBA QAorICNpbmNsdWRlICJiYXNlL21lbW9yeS9yYXdfcHRyLmgiCisgI2luY2x1ZGUgImJhc2UvcG9z aXgvZ2xvYmFsX2Rlc2NyaXB0b3JzLmgiCisgI2luY2x1ZGUgImJhc2Uvc2FuaXRpemVyX2J1aWxk ZmxhZ3MuaCIKKysjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRi b3guaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zeXNjYWxsX2Jyb2tlci9icm9rZXJfY29t bWFuZC5oIgorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3N5c2NhbGxfYnJva2VyL2Jyb2tlcl9m aWxlX3Blcm1pc3Npb24uaCIKKyAjaW5jbHVkZSAic2FuZGJveC9wb2xpY3kvZXhwb3J0LmgiCitA QCAtOTEsNiArOTIsOSBAQCBjbGFzcyBTQU5EQk9YX1BPTElDWV9FWFBPUlQgU2FuZGJveExpbnV4 IHsKKyAgICAgLy8gVXNlciBuYW1lc3BhY2Ugc2FuZGJveCBhY3RpdmUuCisgICAgIGtVc2VyTlMg PSAxIDw8IDYsCisgCisrICAgIC8vIEZsYXRwYWsgc2FuZGJveCBhY3RpdmUuCisrICAgIGtGbGF0 cGFrID0gMSA8PCA3LAorKworICAgICAvLyBBIGZsYWcgdGhhdCBkZW5vdGVzIGFuIGludmFsaWQg c2FuZGJveCBzdGF0dXMuCisgICAgIGtJbnZhbGlkID0gMSA8PCAzMSwKKyAgIH07CitAQCAtMjky LDYgKzI5NiwxMCBAQCBjbGFzcyBTQU5EQk9YX1BPTElDWV9FWFBPUlQgU2FuZGJveExpbnV4IHsK KyAgIGJvb2wgc2VjY29tcF9icGZfd2l0aF90c3luY19zdXBwb3J0ZWRfOyAgLy8gQWNjdXJhdGUg aWYgcHJlX2luaXRpYWxpemVkXy4KKyAgIGJvb2wgeWFtYV9pc19lbmZvcmNpbmdfOyAgICAgICAg ICAgICAgICAgLy8gQWNjdXJhdGUgaWYgcHJlX2luaXRpYWxpemVkXy4KKyAgIGJvb2wgaW5pdGlh bGl6ZV9zYW5kYm94X3Jhbl87ICAgICAgICAgICAgLy8gSW5pdGlhbGl6ZVNhbmRib3goKSB3YXMg Y2FsbGVkLgorKyAgLy8gQWNjdXJhdGUgaWYgcHJlX2luaXRpYWxpemVkXywgdXNlZCB0byBzYXZl IHRoZSBzdGF0ZSBvZiB0aGUgRmxhdHBhaworKyAgLy8gc2FuZGJveCwgYXMgb25jZSB3ZSdyZSBp biB0aGUgQlBGIHNhbmRib3ggYW55IGF0dGVtcHRzIHRvIGNoZWNrIHRoZSBGbGF0cGFrCisrICAv LyBzdGF0ZSB3aWxsIGNhdXNlIEVQRVJNIGVycm9ycy4KKysgIHNhbmRib3g6OkZsYXRwYWtTYW5k Ym94OjpTYW5kYm94TGV2ZWwgZmxhdHBha19zYW5kYm94X2xldmVsXzsKKyAgIHN0ZDo6dW5pcXVl X3B0cjxTZXR1aWRTYW5kYm94Q2xpZW50PiBzZXR1aWRfc2FuZGJveF9jbGllbnRfOworICNpZiBC VUlMREZMQUcoVVNJTkdfU0FOSVRJWkVSKQorICAgc3RkOjp1bmlxdWVfcHRyPF9fc2FuaXRpemVy X3NhbmRib3hfYXJndW1lbnRzPiBzYW5pdGl6ZXJfYXJnc187CitkaWZmIC0tZ2l0IGEvc2Vydmlj ZXMvc2VydmljZV9tYW5hZ2VyL3NlcnZpY2VfcHJvY2Vzc19sYXVuY2hlci5jYyBiL3NlcnZpY2Vz L3NlcnZpY2VfbWFuYWdlci9zZXJ2aWNlX3Byb2Nlc3NfbGF1bmNoZXIuY2MKK2luZGV4IGUyNGEy NjJmZTkwZDUuLmMyMGZkYmQ4OGExYTYgMTAwNjQ0CistLS0gYS9zZXJ2aWNlcy9zZXJ2aWNlX21h bmFnZXIvc2VydmljZV9wcm9jZXNzX2xhdW5jaGVyLmNjCisrKysgYi9zZXJ2aWNlcy9zZXJ2aWNl X21hbmFnZXIvc2VydmljZV9wcm9jZXNzX2xhdW5jaGVyLmNjCitAQCAtNDEsNiArNDEsNyBAQAor ICNlbmRpZgorIAorICNpZiBCVUlMREZMQUcoSVNfTElOVVgpIHx8IEJVSUxERkxBRyhJU19DSFJP TUVPUykKKysjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3gu aCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9uYW1lc3BhY2Vfc2FuZGJveC5o IgorICNlbmRpZgorIAorQEAgLTI4Niw4ICsyODcsMTUgQEAgdm9pZCBTZXJ2aWNlUHJvY2Vzc0xh dW5jaGVyOjpQcm9jZXNzU3RhdGU6OlN0b3BJbkJhY2tncm91bmQoKSB7CisgICAgIHJldHVybjsK KyAKKyAgIGludCBydiA9IC0xOworLSAgTE9HX0lGKEVSUk9SLCAhY2hpbGRfcHJvY2Vzc18uV2Fp dEZvckV4aXQoJnJ2KSkKKy0gICAgICA8PCAiRmFpbGVkIHRvIHdhaXQgZm9yIGNoaWxkIHByb2Nl c3MiOworKyAgYm9vbCBzdWNjZXNzID0gZmFsc2U7CisrICBhdXRvKiBmbGF0cGFrX3NhbmRib3gg PSBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6R2V0SW5zdGFuY2UoKTsKKysgIGlmIChmbGF0cGFr X3NhbmRib3gtPklzUGlkU2FuZGJveGVkKGNoaWxkX3Byb2Nlc3NfLlBpZCgpKSkgeworKyAgICBz dWNjZXNzID0gZmxhdHBha19zYW5kYm94LT5XYWl0KGNoaWxkX3Byb2Nlc3NfLlBpZCgpLCAmcnYp OworKyAgfSBlbHNlIHsKKysgICAgc3VjY2VzcyA9IGNoaWxkX3Byb2Nlc3NfLldhaXRGb3JFeGl0 KCZydik7CisrICB9CisrICBMT0dfSUYoRVJST1IsIHN1Y2Nlc3MpIDw8ICJGYWlsZWQgdG8gd2Fp dCBmb3IgY2hpbGQgcHJvY2VzcyI7CisrCisgICBjaGlsZF9wcm9jZXNzXy5DbG9zZSgpOworIH0K KyAKKy0tIAorMi40Ni4xCisKCmRpZmYgLS1naXQgYS9mbGF0cGFrLUFkanVzdC1wYXRocy1mb3It dGhlLXNhbmRib3gucGF0Y2ggYi9mbGF0cGFrLUFkanVzdC1wYXRocy1mb3ItdGhlLXNhbmRib3gu cGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2IxODYzZAotLS0gL2Rl di9udWxsCisrKyBiL2ZsYXRwYWstQWRqdXN0LXBhdGhzLWZvci10aGUtc2FuZGJveC5wYXRjaApA QCAtMCwwICsxLDg2IEBACitGcm9tIDk5N2M5ZGM0MTYwYzQ2OGYyNmFjYjg1MWViNjU0MDhmNDFl MmEwOTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSeWFuIEdvbnphbGV6IDxyeW1n MTlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAyNSBBdWcgMjAyMCAxOToyNjowNyAtMDUwMAorU3Vi amVjdDogW1BBVENIXSBmbGF0cGFrOiBBZGp1c3QgcGF0aHMgZm9yIHRoZSBzYW5kYm94CisKKy0t LQorIGNocm9tZS9jb21tb24vQlVJTEQuZ24gICAgICAgIHwgIDQgKysrKworIGNocm9tZS9jb21t b24vY2hyb21lX3BhdGhzLmNjIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKysrKy0KKyAyIGZp bGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdp dCBhL2Nocm9tZS9jb21tb24vQlVJTEQuZ24gYi9jaHJvbWUvY29tbW9uL0JVSUxELmduCitpbmRl eCA3NmNmNmE1OTg1OTkwLi40MDQ0Yzg3YjY1NmM0IDEwMDY0NAorLS0tIGEvY2hyb21lL2NvbW1v bi9CVUlMRC5nbgorKysrIGIvY2hyb21lL2NvbW1vbi9CVUlMRC5nbgorQEAgLTY0Miw2ICs2NDIs MTAgQEAgc3RhdGljX2xpYnJhcnkoImNvbnN0YW50cyIpIHsKKyAgICAgICAiLy90aGlyZF9wYXJ0 eS93aWRldmluZS9jZG06aGVhZGVycyIsCisgICAgIF0KKyAgIH0KKysKKysgIGlmIChpc19saW51 eCkgeworKyAgICBkZXBzICs9IFsgIi8vc2FuZGJveC9saW51eDpzYW5kYm94X3NlcnZpY2VzIiBd CisrICB9CisgfQorIAorICMgVXNlIGEgc3RhdGljIGxpYnJhcnkgaGVyZSBiZWNhdXNlIG1hbnkg dGVzdCBiaW5hcmllcyBkZXBlbmQgb24gdGhpcyBidXQgZG9uJ3QKK2RpZmYgLS1naXQgYS9jaHJv bWUvY29tbW9uL2Nocm9tZV9wYXRocy5jYyBiL2Nocm9tZS9jb21tb24vY2hyb21lX3BhdGhzLmNj CitpbmRleCBlYzA5ODAzZmZhYmNmLi5lY2JjMzAwYjk5ZTFkIDEwMDY0NAorLS0tIGEvY2hyb21l L2NvbW1vbi9jaHJvbWVfcGF0aHMuY2MKKysrKyBiL2Nocm9tZS9jb21tb24vY2hyb21lX3BhdGhz LmNjCitAQCAtMzgsNiArMzgsMTAgQEAKKyAjaW5jbHVkZSAiYmFzZS93aW4vcmVnaXN0cnkuaCIK KyAjZW5kaWYKKyAKKysjaWYgQlVJTERGTEFHKElTX0xJTlVYKQorKyNpbmNsdWRlICJzYW5kYm94 L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5oIgorKyNlbmRpZgorKworICNpZiBCVUlM REZMQUcoRU5BQkxFX1dJREVWSU5FKQorICNpbmNsdWRlICJ0aGlyZF9wYXJ0eS93aWRldmluZS9j ZG0vd2lkZXZpbmVfY2RtX2NvbW1vbi5oIiAgLy8gbm9nbmNoZWNrCisgI2VuZGlmCitAQCAtNTM3 LDYgKzU0MSwxNCBAQCBib29sIFBhdGhQcm92aWRlcihpbnQga2V5LCBiYXNlOjpGaWxlUGF0aCog cmVzdWx0KSB7CisgICAgICAgYnJlYWs7CisgI2lmIEJVSUxERkxBRyhJU19QT1NJWCkgJiYgIUJV SUxERkxBRyhJU19NQUMpICYmICFCVUlMREZMQUcoSVNfT1BFTkJTRCkKKyAgICAgY2FzZSBjaHJv bWU6OkRJUl9QT0xJQ1lfRklMRVM6IHsKKysjaWYgZGVmaW5lZChPU19MSU5VWCkKKysgICAgICBp ZiAoc2FuZGJveDo6RmxhdHBha1NhbmRib3g6OkdldEluc3RhbmNlKCktPkdldFNhbmRib3hMZXZl bCgpID4KKysgICAgICAgICAgc2FuZGJveDo6RmxhdHBha1NhbmRib3g6OlNhbmRib3hMZXZlbDo6 a05vbmUpIHsKKysgICAgICAgIGN1ciA9IGJhc2U6OkZpbGVQYXRoKAorKyAgICAgICAgICAgIEZJ TEVfUEFUSF9MSVRFUkFMKCIvYXBwL2Nocm9taXVtL2V4dGVuc2lvbnMvcG9saWNpZXMiKSk7Cisr ICAgICAgICBicmVhazsKKysgICAgICB9CisrI2VuZGlmCisgICAgICAgY3VyID0gYmFzZTo6Rmls ZVBhdGgocG9saWN5OjprUG9saWN5UGF0aCk7CisgICAgICAgYnJlYWs7CisgICAgIH0KK0BAIC01 NTcsNyArNTY5LDEzIEBAIGJvb2wgUGF0aFByb3ZpZGVyKGludCBrZXksIGJhc2U6OkZpbGVQYXRo KiByZXN1bHQpIHsKKyAjZW5kaWYKKyAjaWYgQlVJTERGTEFHKElTX0xJTlVYKSB8fCBCVUlMREZM QUcoSVNfQ0hST01FT1MpCisgICAgIGNhc2UgY2hyb21lOjpESVJfU1RBTkRBTE9ORV9FWFRFUk5B TF9FWFRFTlNJT05TOiB7CistICAgICAgY3VyID0gYmFzZTo6RmlsZVBhdGgoa0ZpbGVwYXRoU2lu Z2xlUHJlZkV4dGVuc2lvbnMpOworKyAgICAgIGlmIChzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6 R2V0SW5zdGFuY2UoKS0+R2V0U2FuZGJveExldmVsKCkgPgorKyAgICAgICAgICBzYW5kYm94OjpG bGF0cGFrU2FuZGJveDo6U2FuZGJveExldmVsOjprTm9uZSkgeworKyAgICAgICAgY3VyID0gYmFz ZTo6RmlsZVBhdGgoCisrICAgICAgICAgICAgRklMRV9QQVRIX0xJVEVSQUwoIi9hcHAvY2hyb21p dW0vZXh0ZW5zaW9ucy9leHRlbnNpb25zIikpOworKyAgICAgIH0gZWxzZSB7CisrICAgICAgICBj dXIgPSBiYXNlOjpGaWxlUGF0aChrRmlsZXBhdGhTaW5nbGVQcmVmRXh0ZW5zaW9ucyk7CisrICAg ICAgfQorICAgICAgIGJyZWFrOworICAgICB9CisgI2VuZGlmCitAQCAtNjA0LDYgKzYyMiwxMiBA QCBib29sIFBhdGhQcm92aWRlcihpbnQga2V5LCBiYXNlOjpGaWxlUGF0aCogcmVzdWx0KSB7Cisg ICAgICAgICAgICIvTGlicmFyeS9BcHBsaWNhdGlvbiBTdXBwb3J0L0Nocm9taXVtL05hdGl2ZU1l c3NhZ2luZ0hvc3RzIikpOworICNlbmRpZgorICNlbHNlICAvLyBCVUlMREZMQUcoSVNfTUFDKQor KyAgICAgIGlmIChzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6R2V0SW5zdGFuY2UoKS0+R2V0U2Fu ZGJveExldmVsKCkgPgorKyAgICAgICAgICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6U2FuZGJv eExldmVsOjprTm9uZSkgeworKyAgICAgICAgY3VyID0gYmFzZTo6RmlsZVBhdGgoRklMRV9QQVRI X0xJVEVSQUwoCisrICAgICAgICAgICAgIi9hcHAvY2hyb21pdW0vZXh0ZW5zaW9ucy9uYXRpdmUt bWVzc2FnaW5nLWhvc3RzIikpOworKyAgICAgICAgYnJlYWs7CisrICAgICAgfQorICNpZiBCVUlM REZMQUcoR09PR0xFX0NIUk9NRV9CUkFORElORykKKyAgICAgICBjdXIgPSBiYXNlOjpGaWxlUGF0 aCgKKyAgICAgICAgICAgRklMRV9QQVRIX0xJVEVSQUwoIi9ldGMvb3B0L2Nocm9tZS9uYXRpdmUt bWVzc2FnaW5nLWhvc3RzIikpOworLS0gCisyLjQ2LjEKKwoKZGlmZiAtLWdpdCBhL2ZsYXRwYWst RXhwb3NlLVdpZGV2aW5lLWludG8tdGhlLXNhbmRib3gucGF0Y2ggYi9mbGF0cGFrLUV4cG9zZS1X aWRldmluZS1pbnRvLXRoZS1zYW5kYm94LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDAwMDAwMDAuLmI2Zjk1M2QKLS0tIC9kZXYvbnVsbAorKysgYi9mbGF0cGFrLUV4cG9zZS1XaWRl dmluZS1pbnRvLXRoZS1zYW5kYm94LnBhdGNoCkBAIC0wLDAgKzEsMzI2IEBACitGcm9tIDA0NDZi MzQzMmM5MGJiYWI4OTNjN2JkZTIyYTVlNjY0ZTE0NzUzYWYgTW9uIFNlcCAxNyAwMDowMDowMCAy MDAxCitGcm9tOiBSeWFuIEdvbnphbGV6IDxyeW1nMTlAZ21haWwuY29tPgorRGF0ZTogVHVlLCAx NyBOb3YgMjAyMCAxMzowMDozOSAtMDYwMAorU3ViamVjdDogW1BBVENIXSBmbGF0cGFrOiBFeHBv c2UgV2lkZXZpbmUgaW50byB0aGUgc2FuZGJveAorCistLS0KKyAuLi4venlnb3RlX2hvc3Qvenln b3RlX2hvc3RfaW1wbF9saW51eC5jYyAgICAgfCA1NCArKysrKysrKysrKysrLQorIHNhbmRib3gv bGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmNjICAgICB8IDc0ICsrKysrKysrKysrKysr LS0tLS0KKyBzYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5oICAgICAgfCAy NyArKysrKystCisgMyBmaWxlcyBjaGFuZ2VkLCAxMzEgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRp b25zKC0pCisKK2RpZmYgLS1naXQgYS9jb250ZW50L2Jyb3dzZXIvenlnb3RlX2hvc3Qvenlnb3Rl X2hvc3RfaW1wbF9saW51eC5jYyBiL2NvbnRlbnQvYnJvd3Nlci96eWdvdGVfaG9zdC96eWdvdGVf aG9zdF9pbXBsX2xpbnV4LmNjCitpbmRleCAxNzAzZmI2YWRlMDQ0Li4zZThlYjg3OTgxMjMwIDEw MDY0NAorLS0tIGEvY29udGVudC9icm93c2VyL3p5Z290ZV9ob3N0L3p5Z290ZV9ob3N0X2ltcGxf bGludXguY2MKKysrKyBiL2NvbnRlbnQvYnJvd3Nlci96eWdvdGVfaG9zdC96eWdvdGVfaG9zdF9p bXBsX2xpbnV4LmNjCitAQCAtOSw3ICs5LDEwIEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgor IAorICNpbmNsdWRlICJiYXNlL2ZpbGVzL2ZpbGVfZW51bWVyYXRvci5oIgorKyNpbmNsdWRlICJi YXNlL2ZpbGVzL2ZpbGVfdXRpbC5oIgorICNpbmNsdWRlICJiYXNlL2xvZ2dpbmcuaCIKKysjaW5j bHVkZSAiYmFzZS9uaXgveGRnX3V0aWwuaCIKKysjaW5jbHVkZSAiYmFzZS9wYXRoX3NlcnZpY2Uu aCIKKyAjaW5jbHVkZSAiYmFzZS9wb3NpeC91bml4X2RvbWFpbl9zb2NrZXQuaCIKKyAjaW5jbHVk ZSAiYmFzZS9wcm9jZXNzL2tpbGwuaCIKKyAjaW5jbHVkZSAiYmFzZS9wcm9jZXNzL2xhdW5jaC5o IgorQEAgLTE4LDkgKzIxLDEyIEBACisgI2luY2x1ZGUgImJhc2UvdHlwZXMvZml4ZWRfYXJyYXku aCIKKyAjaW5jbHVkZSAiYnVpbGQvYnVpbGRfY29uZmlnLmgiCisgI2luY2x1ZGUgImJ1aWxkL2No cm9tZW9zX2J1aWxkZmxhZ3MuaCIKKysjaW5jbHVkZSAiY2hyb21lL2NvbW1vbi9jaHJvbWVfcGF0 aHMuaCIgIC8vIG5vZ25jaGVjaworICNpbmNsdWRlICJjb250ZW50L2NvbW1vbi96eWdvdGUvenln b3RlX2NvbW1hbmRzX2xpbnV4LmgiCisgI2luY2x1ZGUgImNvbnRlbnQvY29tbW9uL3p5Z290ZS96 eWdvdGVfY29tbXVuaWNhdGlvbl9saW51eC5oIgorICNpbmNsdWRlICJjb250ZW50L2NvbW1vbi96 eWdvdGUvenlnb3RlX2hhbmRsZV9pbXBsX2xpbnV4LmgiCisrI2luY2x1ZGUgImNvbnRlbnQvcHVi bGljL2NvbW1vbi9jZG1faW5mby5oIgorKyNpbmNsdWRlICJjb250ZW50L3B1YmxpYy9jb21tb24v Y29udGVudF9jbGllbnQuaCIKKyAjaW5jbHVkZSAiY29udGVudC9wdWJsaWMvY29tbW9uL3p5Z290 ZS96eWdvdGVfaGFuZGxlLmgiCisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc2VydmljZXMvY3Jl ZGVudGlhbHMuaCIKKyAjaW5jbHVkZSAic2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3Nh bmRib3guaCIKK0BAIC0yOSw2ICszNSw3IEBACisgI2luY2x1ZGUgInNhbmRib3gvbGludXgvc3Vp ZC9jb21tb24vc2FuZGJveC5oIgorICNpbmNsdWRlICJzYW5kYm94L3BvbGljeS9saW51eC9zYW5k Ym94X2xpbnV4LmgiCisgI2luY2x1ZGUgInNhbmRib3gvcG9saWN5L3N3aXRjaGVzLmgiCisrI2lu Y2x1ZGUgInRoaXJkX3BhcnR5L3dpZGV2aW5lL2NkbS9idWlsZGZsYWdzLmgiICAvLyBub2duY2hl Y2sKKyAKKyAjaWYgQlVJTERGTEFHKElTX0NIUk9NRU9TKQorICNpbmNsdWRlICJjb250ZW50L2Nv bW1vbi96eWdvdGUvenlnb3RlX2NvbW11bmljYXRpb25fbGludXguaCIKK0BAIC0xOTMsOCArMjAw LDUxIEBAIHBpZF90IFp5Z290ZUhvc3RJbXBsOjpMYXVuY2haeWdvdGUoCisgICBpZiAoaXNfc2Fu ZGJveGVkX3p5Z290ZSAmJiB1c2VfbmFtZXNwYWNlX3NhbmRib3hfKSB7CisgICAgIHByb2Nlc3Mg PSBzYW5kYm94OjpOYW1lc3BhY2VTYW5kYm94OjpMYXVuY2hQcm9jZXNzKCpjbWRfbGluZSwgb3B0 aW9ucyk7CisgICB9IGVsc2UgaWYgKGlzX3NhbmRib3hlZF96eWdvdGUgJiYgdXNlX2ZsYXRwYWtf c2FuZGJveF8pIHsKKy0gICAgcHJvY2VzcyA9IHNhbmRib3g6OkZsYXRwYWtTYW5kYm94OjpHZXRJ bnN0YW5jZSgpLT5MYXVuY2hQcm9jZXNzKCpjbWRfbGluZSwKKy0gICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbnMp OworKyAgICBzYW5kYm94OjpGbGF0cGFrU2FuZGJveDo6U3Bhd25PcHRpb25zIHNwYXduX29wdGlv bnM7CisrCisrI2lmIEJVSUxERkxBRyhFTkFCTEVfTElCUkFSWV9DRE1TKQorKyAgICAvLyBFeHBv c2UgdGhlIENETSBwYXRocyBpbnRvIHRoZSBzYW5kYm94LiBUaGlzIGlzIHNpbWlsYXIgdG8gUHJl U2FuZGJveEluaXQKKysgICAgLy8gaW4gY29udGVudF9tYWluX3J1bm5lcl9pbXBsLmNjLgorKyAg ICBzdGQ6OnZlY3RvcjxDZG1JbmZvPiBjZG1zOworKyAgICBHZXRDb250ZW50Q2xpZW50KCktPkFk ZENvbnRlbnREZWNyeXB0aW9uTW9kdWxlcygmY2RtcywgbnVsbHB0cik7CisrICAgIGZvciAoY29u c3QgYXV0byYgY2RtIDogY2RtcykgeworKyAgICAgIGlmICghc3Bhd25fb3B0aW9ucy5FeHBvc2VQ YXRoUm8oY2RtLnBhdGgpKSB7CisrICAgICAgICBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gZXhw b3NlIENETSBtb2R1bGUiOworKyAgICAgIH0KKysgICAgfQorKyNlbmRpZgorKworKyNpZiBCVUlM REZMQUcoRU5BQkxFX1dJREVWSU5FX0NETV9DT01QT05FTlQpCisrICAgIC8vIE1ha2Ugc3VyZSB3 ZSBhbHNvIGV4cG9zZSB0aGUgZnVsbCBXaWRldmluZSBDRE0gZm9sZGVyIHNvIGl0IGNhbiBiZQor KyAgICAvLyBkZXRlY3RlZC4KKysgICAgLy8gVE9ETzogUmVtb3ZlIHRoZSBleHBsaWNpdCBkZXBl bmRlbmNpZXMgb24gY2hyb21lOjouCisrICAgIGJhc2U6OkZpbGVQYXRoIHdpZGV2aW5lX2NkbV9w YXRoOworKyAgICBpZiAoIWJhc2U6OlBhdGhTZXJ2aWNlOjpHZXQoY2hyb21lOjpESVJfQ09NUE9O RU5UX1VQREFURURfV0lERVZJTkVfQ0RNLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg ICAgJndpZGV2aW5lX2NkbV9wYXRoKSkgeworKyAgICAgIExPRyhFUlJPUikgPDwgIkZhaWxlZCB0 byBnZXQgV2lkZXZpbmUgQ0RNIGZvbGRlciBmb3Igc2FuZGJveCBmb3J3YXJkaW5nIjsKKysgICAg fQorKworKyAgICBMT0coSU5GTykgPDwgIldpZGV2aW5lIENETSBwYXRoIElTOiAiIDw8IHdpZGV2 aW5lX2NkbV9wYXRoOworKworKyAgICBpZiAoIXdpZGV2aW5lX2NkbV9wYXRoLmVtcHR5KCkgJiYg YmFzZTo6UGF0aEV4aXN0cyh3aWRldmluZV9jZG1fcGF0aCkpIHsKKysgICAgICBpZiAoIXNwYXdu X29wdGlvbnMuRXhwb3NlUGF0aFJvKHdpZGV2aW5lX2NkbV9wYXRoKSkgeworKyAgICAgICAgTE9H KEVSUk9SKSA8PCAiRmFpbGVkIHRvIGV4cG9zZSB1cGRhdGVkIFdpZGV2aW5lIENETSBwYXRoIjsK KysgICAgICB9CisrICAgIH0KKysKKysgICAgLy8gVGhlIFdpZGV2aW5lIGRhdGEgaXMgZm91bmQg cmVsYXRpdmUgdG8gJFhER19DT05GSUdfSE9NRSwgd2hpY2ggaXMgbm90IHNldAorKyAgICAvLyBi eSBkZWZhdWx0IHdoZW4gcnVubmluZyBhIHNhbmRib3hlZCBwcm9jZXNzLgorKyAgICBhdXRvIGVu diA9IGJhc2U6OkVudmlyb25tZW50OjpDcmVhdGUoKTsKKysgICAgYmFzZTo6RmlsZVBhdGggeGRn Q29uZmlnSG9tZSA9IGJhc2U6Om5peDo6R2V0WERHRGlyZWN0b3J5KAorKyAgICAgICAgZW52Lmdl dCgpLCBiYXNlOjpuaXg6OmtYZGdDb25maWdIb21lRW52VmFyLCBudWxscHRyKTsKKysgICAgaWYg KCF4ZGdDb25maWdIb21lLmVtcHR5KCkpIHsKKysgICAgICBvcHRpb25zLmVudmlyb25tZW50W2Jh c2U6Om5peDo6a1hkZ0NvbmZpZ0hvbWVFbnZWYXJdID0KKysgICAgICAgICAgeGRnQ29uZmlnSG9t ZS52YWx1ZSgpOworKyAgICB9CisrI2VuZGlmCisrCisrICAgIHByb2Nlc3MgPSBzYW5kYm94OjpG bGF0cGFrU2FuZGJveDo6R2V0SW5zdGFuY2UoKS0+TGF1bmNoUHJvY2VzcygKKysgICAgICAgICpj bWRfbGluZSwgb3B0aW9ucywgc3Bhd25fb3B0aW9ucyk7CisgICB9IGVsc2UgeworICAgICBwcm9j ZXNzID0gYmFzZTo6TGF1bmNoUHJvY2VzcygqY21kX2xpbmUsIG9wdGlvbnMpOworICAgfQorZGlm ZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc2VydmljZXMvZmxhdHBha19zYW5kYm94LmNjIGIvc2Fu ZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guY2MKK2luZGV4IDJhOTE1YTViOWZh MTEuLmVkOGQ0YzA1NTZmNjMgMTAwNjQ0CistLS0gYS9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2Zs YXRwYWtfc2FuZGJveC5jYworKysrIGIvc2FuZGJveC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3Nh bmRib3guY2MKK0BAIC00LDYgKzQsNyBAQAorIAorICNpbmNsdWRlICJzYW5kYm94L2xpbnV4L3Nl cnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5oIgorIAorKyNpbmNsdWRlIDxmY250bC5oPgorICNpbmNs dWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8c3N0cmVhbT4KKyAjaW5jbHVkZSA8c3RyaW5nPgor QEAgLTkyLDYgKzkzLDE4IEBAIGVudW0gRmxhdHBha1NwYXduU2FuZGJveEZsYWdzIHsKKyAgIGtG bGF0cGFrU3Bhd25TYW5kYm94X1NoYXJlQTExeUJ1cyA9IDEgPDwgNCwKKyB9OworIAorK2Jvb2wg RmxhdHBha1NhbmRib3g6OlNwYXduT3B0aW9uczo6RXhwb3NlUGF0aFJvKGJhc2U6OkZpbGVQYXRo IHBhdGgpIHsKKysgIGJhc2U6OlNjb3BlZEZEIGZkKAorKyAgICAgIEhBTkRMRV9FSU5UUihvcGVu KHBhdGgudmFsdWUoKS5jX3N0cigpLCBPX1BBVEggfCBPX05PRk9MTE9XKSkpOworKyAgaWYgKCFm ZC5pc192YWxpZCgpKSB7CisrICAgIFBMT0coRVJST1IpIDw8ICJGYWlsZWQgdG8gZXhwb3NlIHBh dGggIiA8PCBwYXRoOworKyAgICByZXR1cm4gZmFsc2U7CisrICB9CisrCisrICBzYW5kYm94X2V4 cG9zZV9yby5wdXNoX2JhY2soc3RkOjptb3ZlKGZkKSk7CisrICByZXR1cm4gdHJ1ZTsKKyt9Cisr CisgRmxhdHBha1NhbmRib3g6OkZsYXRwYWtTYW5kYm94KCkKKyAgICAgOiBidXNfdGhyZWFkXygi RmxhdHBha1BvcnRhbEJ1cyIpLCBwcm9jZXNzX2luZm9fY3ZfKCZwcm9jZXNzX2luZm9fbG9ja18p IHt9CisgCitAQCAtMTY4LDggKzE4MSw5IEBAIGJvb2wgRmxhdHBha1NhbmRib3g6OklzUGlkU2Fu ZGJveGVkKGJhc2U6OlByb2Nlc3NJZCByZWxhdGl2ZV9waWQpIHsKKyAKKyBiYXNlOjpQcm9jZXNz IEZsYXRwYWtTYW5kYm94OjpMYXVuY2hQcm9jZXNzKAorICAgICBjb25zdCBiYXNlOjpDb21tYW5k TGluZSYgY21kbGluZSwKKy0gICAgY29uc3QgYmFzZTo6TGF1bmNoT3B0aW9ucyYgbGF1bmNoX29w dGlvbnMpIHsKKy0gIGJhc2U6OlByb2Nlc3NJZCBleHRlcm5hbF9waWQgPSBTcGF3bihjbWRsaW5l LCBsYXVuY2hfb3B0aW9ucyk7CisrICAgIGNvbnN0IGJhc2U6OkxhdW5jaE9wdGlvbnMmIGxhdW5j aF9vcHRpb25zLAorKyAgICBjb25zdCBTcGF3bk9wdGlvbnMmIHNwYXduX29wdGlvbnMgLyo9IHt9 Ki8pIHsKKysgIGJhc2U6OlByb2Nlc3NJZCBleHRlcm5hbF9waWQgPSBTcGF3bihjbWRsaW5lLCBs YXVuY2hfb3B0aW9ucywgc3Bhd25fb3B0aW9ucyk7CisgICBpZiAoZXh0ZXJuYWxfcGlkID09IGJh c2U6OmtOdWxsUHJvY2Vzc0lkKSB7CisgICAgIHJldHVybiBiYXNlOjpQcm9jZXNzKCk7CisgICB9 CitAQCAtMzYzLDkgKzM3Nyw5IEBAIHZvaWQgRmxhdHBha1NhbmRib3g6Ok9uU3Bhd25FeGl0ZWRT aWduYWwoZGJ1czo6U2lnbmFsKiBzaWduYWwpIHsKKyAgIHByb2Nlc3NfaW5mb19jdl8uQnJvYWRj YXN0KCk7CisgfQorIAorLWJhc2U6OlByb2Nlc3NJZCBGbGF0cGFrU2FuZGJveDo6U3Bhd24oCist ICAgIGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAorLSAgICBjb25zdCBiYXNlOjpM YXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucykgeworK2Jhc2U6OlByb2Nlc3NJZCBGbGF0cGFr U2FuZGJveDo6U3Bhd24oY29uc3QgYmFzZTo6Q29tbWFuZExpbmUmIGNtZGxpbmUsCisrICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25z JiBsYXVuY2hfb3B0aW9ucywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg IGNvbnN0IFNwYXduT3B0aW9ucyYgc3Bhd25fb3B0aW9ucykgeworICAgYmFzZTo6U2NvcGVkQmxv Y2tpbmdDYWxsIHNjb3BlZF9ibG9ja2luZ19jYWxsKEZST01fSEVSRSwKKyAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpCbG9ja2luZ1R5cGU6Ok1B WV9CTE9DSyk7CisgICBiYXNlOjpTY29wZWRBbGxvd0Jhc2VTeW5jUHJpbWl0aXZlcyBhbGxvd193 YWl0OworQEAgLTM5MSwyNCArNDA1LDI2IEBAIGJhc2U6OlByb2Nlc3NJZCBGbGF0cGFrU2FuZGJv eDo6U3Bhd24oCisgICAgICAgRlJPTV9IRVJFLAorICAgICAgIGJhc2U6OkJpbmRPbmNlKCZGbGF0 cGFrU2FuZGJveDo6U3Bhd25PbkJ1c1RocmVhZCwgYmFzZTo6VW5yZXRhaW5lZCh0aGlzKSwKKyAg ICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKCZleHRlcm5hbF9waWQpLCBiYXNl OjpVbnJldGFpbmVkKCZldmVudCksCistICAgICAgICAgICAgICAgICAgICAgY21kbGluZSwgbGF1 bmNoX29wdGlvbnMpKTsKKysgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKCZj bWRsaW5lKSwKKysgICAgICAgICAgICAgICAgICAgICBiYXNlOjpVbnJldGFpbmVkKCZsYXVuY2hf b3B0aW9ucyksCisrICAgICAgICAgICAgICAgICAgICAgYmFzZTo6VW5yZXRhaW5lZCgmc3Bhd25f b3B0aW9ucykpKTsKKyAgIGV2ZW50LldhaXQoKTsKKyAKKyAgIHJldHVybiBleHRlcm5hbF9waWQ7 CisgfQorIAorLXZvaWQgRmxhdHBha1NhbmRib3g6OlNwYXduT25CdXNUaHJlYWQoCistICAgIGJh c2U6OlByb2Nlc3NJZCogb3V0X2V4dGVybmFsX3BpZCwKKy0gICAgYmFzZTo6V2FpdGFibGVFdmVu dCogZXZlbnQsCistICAgIGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAorLSAgICBj b25zdCBiYXNlOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucykgeworK3ZvaWQgRmxhdHBh a1NhbmRib3g6OlNwYXduT25CdXNUaHJlYWQoYmFzZTo6UHJvY2Vzc0lkKiBvdXRfZXh0ZXJuYWxf cGlkLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzZTo6V2FpdGFi bGVFdmVudCogZXZlbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBj b25zdCBiYXNlOjpDb21tYW5kTGluZSogY21kbGluZSwKKysgICAgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6OkxhdW5jaE9wdGlvbnMqIGxhdW5jaF9vcHRpb25z LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgU3Bhd25PcHRp b25zKiBzcGF3bl9vcHRpb25zKSB7CisgICBkYnVzOjpPYmplY3RQcm94eSogb2JqZWN0X3Byb3h5 ID0gR2V0UG9ydGFsT2JqZWN0UHJveHkoKTsKKyAgIGRidXM6Ok1ldGhvZENhbGwgbWV0aG9kX2Nh bGwoa0ZsYXRwYWtQb3J0YWxJbnRlcmZhY2VOYW1lLCAiU3Bhd24iKTsKKyAgIGRidXM6Ok1lc3Nh Z2VXcml0ZXIgd3JpdGVyKCZtZXRob2RfY2FsbCk7CisgCisgICBjb25zdCBiYXNlOjpGaWxlUGF0 aCYgY3VycmVudF9kaXJlY3RvcnkgPQorLSAgICAgICFsYXVuY2hfb3B0aW9ucy5jdXJyZW50X2Rp cmVjdG9yeS5lbXB0eSgpCistICAgICAgICAgID8gbGF1bmNoX29wdGlvbnMuY3VycmVudF9kaXJl Y3RvcnkKKysgICAgICAhbGF1bmNoX29wdGlvbnMtPmN1cnJlbnRfZGlyZWN0b3J5LmVtcHR5KCkK KysgICAgICAgICAgPyBsYXVuY2hfb3B0aW9ucy0+Y3VycmVudF9kaXJlY3RvcnkKKyAgICAgICAg ICAgLy8gQ2hhbmdlIHRvIC9hcHAgc2luY2UgaXQncyBndWFyYW50ZWVkIHRvIGFsd2F5cyBiZSBw cmVzZW50IGluCisgICAgICAgICAgIC8vIHRoZSBzYW5kYm94LgorICAgICAgICAgICA6IGtGbGF0 cGFrQXBwUGF0aDsKK0BAIC00MTcsNyArNDMzLDcgQEAgdm9pZCBGbGF0cGFrU2FuZGJveDo6U3Bh d25PbkJ1c1RocmVhZCgKKyAgIGRidXM6Ok1lc3NhZ2VXcml0ZXIgYXJndl93cml0ZXIobnVsbHB0 cik7CisgICB3cml0ZXIuT3BlbkFycmF5KCJheSIsICZhcmd2X3dyaXRlcik7CisgCistICBmb3Ig KGNvbnN0IHN0ZDo6c3RyaW5nJiBhcmcgOiBjbWRsaW5lLmFyZ3YoKSkgeworKyAgZm9yIChjb25z dCBzdGQ6OnN0cmluZyYgYXJnIDogY21kbGluZS0+YXJndigpKSB7CisgICAgIFdyaXRlU3RyaW5n QXNCeXRlQXJyYXkoJmFyZ3Zfd3JpdGVyLCBhcmcpOworICAgfQorIAorQEAgLTQzOSw3ICs0NTUs NyBAQCB2b2lkIEZsYXRwYWtTYW5kYm94OjpTcGF3bk9uQnVzVGhyZWFkKAorICAgV3JpdGVGZFBh aXJNYXAoJmZkc193cml0ZXIsIFNURE9VVF9GSUxFTk8sIFNURE9VVF9GSUxFTk8pOworICAgV3Jp dGVGZFBhaXJNYXAoJmZkc193cml0ZXIsIFNUREVSUl9GSUxFTk8sIFNUREVSUl9GSUxFTk8pOwor IAorLSAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbGF1bmNoX29wdGlvbnMuZmRzX3RvX3JlbWFw KSB7CisrICBmb3IgKGNvbnN0IGF1dG8mIHBhaXIgOiBsYXVuY2hfb3B0aW9ucy0+ZmRzX3RvX3Jl bWFwKSB7CisgICAgIFdyaXRlRmRQYWlyTWFwKCZmZHNfd3JpdGVyLCBwYWlyLmZpcnN0LCBwYWly LnNlY29uZCk7CisgICB9CisgCitAQCAtNDQ4LDcgKzQ2NCw3IEBAIHZvaWQgRmxhdHBha1NhbmRi b3g6OlNwYXduT25CdXNUaHJlYWQoCisgICBkYnVzOjpNZXNzYWdlV3JpdGVyIGVudl93cml0ZXIo bnVsbHB0cik7CisgICB3cml0ZXIuT3BlbkFycmF5KCJ7c3N9IiwgJmVudl93cml0ZXIpOworIAor LSAgZm9yIChjb25zdCBhdXRvJiBwYWlyIDogbGF1bmNoX29wdGlvbnMuZW52aXJvbm1lbnQpIHsK KysgIGZvciAoY29uc3QgYXV0byYgcGFpciA6IGxhdW5jaF9vcHRpb25zLT5lbnZpcm9ubWVudCkg eworICAgICBkYnVzOjpNZXNzYWdlV3JpdGVyIGVudHJ5X3dyaXRlcihudWxscHRyKTsKKyAgICAg ZW52X3dyaXRlci5PcGVuRGljdEVudHJ5KCZlbnRyeV93cml0ZXIpOworIAorQEAgLTQ3MiwxMSAr NDg4LDExIEBAIHZvaWQgRmxhdHBha1NhbmRib3g6OlNwYXduT25CdXNUaHJlYWQoCisgI2Vsc2UK KyAjZW5kaWYKKyAKKy0gIGlmIChsYXVuY2hfb3B0aW9ucy5jbGVhcl9lbnZpcm9ubWVudCkgewor KyAgaWYgKGxhdW5jaF9vcHRpb25zLT5jbGVhcl9lbnZpcm9ubWVudCkgeworICAgICBzcGF3bl9m bGFncyB8PSBrRmxhdHBha1NwYXduX0NsZWFyRW52aXJvbm1lbnQ7CisgICB9CisgCistICBpZiAo bGF1bmNoX29wdGlvbnMua2lsbF9vbl9wYXJlbnRfZGVhdGgpIHsKKysgIGlmIChsYXVuY2hfb3B0 aW9ucy0+a2lsbF9vbl9wYXJlbnRfZGVhdGgpIHsKKyAgICAgc3Bhd25fZmxhZ3MgfD0ga0ZsYXRw YWtTcGF3bl9XYXRjaEJ1czsKKyAgIH0KKyAKK0BAIC00ODUsNiArNTAxLDI4IEBAIHZvaWQgRmxh dHBha1NhbmRib3g6OlNwYXduT25CdXNUaHJlYWQoCisgICBkYnVzOjpNZXNzYWdlV3JpdGVyIG9w dGlvbnNfd3JpdGVyKG51bGxwdHIpOworICAgd3JpdGVyLk9wZW5BcnJheSgie3N2fSIsICZvcHRp b25zX3dyaXRlcik7CisgCisrICBpZiAoIXNwYXduX29wdGlvbnMtPnNhbmRib3hfZXhwb3NlX3Jv LmVtcHR5KCkpIHsKKysgICAgZGJ1czo6TWVzc2FnZVdyaXRlciBlbnRyeV93cml0ZXIobnVsbHB0 cik7CisrICAgIG9wdGlvbnNfd3JpdGVyLk9wZW5EaWN0RW50cnkoJmVudHJ5X3dyaXRlcik7Cisr CisrICAgIGVudHJ5X3dyaXRlci5BcHBlbmRTdHJpbmcoInNhbmRib3gtZXhwb3NlLWZkLXJvIik7 CisrCisrICAgIGRidXM6Ok1lc3NhZ2VXcml0ZXIgdmFyaWFudF93cml0ZXIobnVsbHB0cik7Cisr ICAgIGVudHJ5X3dyaXRlci5PcGVuVmFyaWFudCgiYWgiLCAmdmFyaWFudF93cml0ZXIpOworKwor KyAgICBkYnVzOjpNZXNzYWdlV3JpdGVyIGZkc193cml0ZXIobnVsbHB0cik7CisrICAgIHZhcmlh bnRfd3JpdGVyLk9wZW5BcnJheSgiaCIsICZmZHNfd3JpdGVyKTsKKysKKysgICAgZm9yIChjb25z dCBiYXNlOjpTY29wZWRGRCYgZmQgOiBzcGF3bl9vcHRpb25zLT5zYW5kYm94X2V4cG9zZV9ybykg eworKyAgICAgIENIRUNLKGZkLmlzX3ZhbGlkKCkpIDw8ICJJbnZhbGlkIHNwYXduIGV4cG9zZSBm ZCI7CisrICAgICAgZmRzX3dyaXRlci5BcHBlbmRGaWxlRGVzY3JpcHRvcihmZC5nZXQoKSk7Cisr ICAgIH0KKysKKysgICAgdmFyaWFudF93cml0ZXIuQ2xvc2VDb250YWluZXIoJmZkc193cml0ZXIp OworKyAgICBlbnRyeV93cml0ZXIuQ2xvc2VDb250YWluZXIoJnZhcmlhbnRfd3JpdGVyKTsKKysg ICAgb3B0aW9uc193cml0ZXIuQ2xvc2VDb250YWluZXIoJmVudHJ5X3dyaXRlcik7CisrICB9Cisr CisgICBpZiAoc2FuZGJveF9mbGFncyAhPSAwKSB7CisgICAgIGRidXM6Ok1lc3NhZ2VXcml0ZXIg ZW50cnlfd3JpdGVyKG51bGxwdHIpOworICAgICBvcHRpb25zX3dyaXRlci5PcGVuRGljdEVudHJ5 KCZlbnRyeV93cml0ZXIpOworZGlmZiAtLWdpdCBhL3NhbmRib3gvbGludXgvc2VydmljZXMvZmxh dHBha19zYW5kYm94LmggYi9zYW5kYm94L2xpbnV4L3NlcnZpY2VzL2ZsYXRwYWtfc2FuZGJveC5o CitpbmRleCAxNjdiYmM4NTk0NWFkLi5kZThlNzE2NWI0NTczIDEwMDY0NAorLS0tIGEvc2FuZGJv eC9saW51eC9zZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guaAorKysrIGIvc2FuZGJveC9saW51eC9z ZXJ2aWNlcy9mbGF0cGFrX3NhbmRib3guaAorQEAgLTksNiArOSw4IEBACisgI2luY2x1ZGUgImJh c2UvY29tcGlsZXJfc3BlY2lmaWMuaCIKKyAjaW5jbHVkZSAiYmFzZS9jb250YWluZXJzL2ZsYXRf bWFwLmgiCisgI2luY2x1ZGUgImJhc2UvY29udGFpbmVycy9mbGF0X3NldC5oIgorKyNpbmNsdWRl ICJiYXNlL2ZpbGVzL2ZpbGVfcGF0aC5oIgorKyNpbmNsdWRlICJiYXNlL2ZpbGVzL3Njb3BlZF9m aWxlLmgiCisgI2luY2x1ZGUgImJhc2Uvbm9fZGVzdHJ1Y3Rvci5oIgorICNpbmNsdWRlICJiYXNl L3Byb2Nlc3Mva2lsbC5oIgorICNpbmNsdWRlICJiYXNlL3Byb2Nlc3MvbGF1bmNoLmgiCitAQCAt MzQsNiArMzYsMjAgQEAgbmFtZXNwYWNlIHNhbmRib3ggeworIC8vIGl0IGlzIGtub3duIGluc2lk ZSB0aGUgc2FuZGJveCdzIFBJRCBuYW1lc3BhY2UuCisgY2xhc3MgU0FOREJPWF9FWFBPUlQgRmxh dHBha1NhbmRib3ggeworICBwdWJsaWM6CisrICBjbGFzcyBTcGF3bk9wdGlvbnMgeworKyAgIHB1 YmxpYzoKKysgICAgU3Bhd25PcHRpb25zKCkgPSBkZWZhdWx0OworKyAgICBTcGF3bk9wdGlvbnMo Y29uc3QgU3Bhd25PcHRpb25zJiBvdGhlcikgPSBkZWxldGU7CisrICAgIFNwYXduT3B0aW9ucyhT cGF3bk9wdGlvbnMmJiBvdGhlcikgPSBkZWxldGU7CisrCisrICAgIGJvb2wgRXhwb3NlUGF0aFJv KGJhc2U6OkZpbGVQYXRoIHBhdGgpOworKworKyAgIHByaXZhdGU6CisrICAgIGZyaWVuZCBjbGFz cyBGbGF0cGFrU2FuZGJveDsKKysKKysgICAgc3RkOjp2ZWN0b3I8YmFzZTo6U2NvcGVkRkQ+IHNh bmRib3hfZXhwb3NlX3JvOworKyAgfTsKKysKKyAgIHN0YXRpYyBGbGF0cGFrU2FuZGJveCogR2V0 SW5zdGFuY2UoKTsKKyAKKyAgIC8vIFJlcHJlc2VudHMgdGhlIGxldmVsIG9mIHNhbmRib3hpbmcg aW5zaWRlIGEgRmxhdHBhay4ga05vbmUgbWVhbnMgdGhpcyBpcworQEAgLTU1LDcgKzcxLDggQEAg Y2xhc3MgU0FOREJPWF9FWFBPUlQgRmxhdHBha1NhbmRib3ggeworICAgLy8gR2V0UmVsYXRpdmVQ aWQuIFRoaXMgaXMgdGhlIHJlYXNvbiB3aHkgYSB2YW5pbGxhIFByb2Nlc3NJZCBpcyByZXR1cm5l ZAorICAgLy8gcmF0aGVyIHRoYW4gYSBiYXNlOjpQcm9jZXNzIGluc3RhbmNlLgorICAgYmFzZTo6 UHJvY2VzcyBMYXVuY2hQcm9jZXNzKGNvbnN0IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAor LSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJhc2U6OkxhdW5jaE9wdGlvbnMm IGxhdW5jaF9vcHRpb25zKTsKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBi YXNlOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucywKKysgICAgICAgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBTcGF3bk9wdGlvbnMmIHNwYXduX29wdGlvbnMgPSB7fSk7CisgCisg ICAvLyBJbmRlZmluaXRlbHkgd2FpdHMgZm9yIHRoZSBnaXZlbiBwcm9jZXNzIGFuZCBmaWxscyB0 aGUgZXhpdCBjb2RlIHBvaW50ZXIKKyAgIC8vIGlmIGdpdmVuIGFuZCBub24tbnVsbC4gUmV0dXJu cyBmYWxzZSBvbiB3YWl0IGZhaWx1cmUuCitAQCAtODQsMTEgKzEwMSwxMyBAQCBjbGFzcyBTQU5E Qk9YX0VYUE9SVCBGbGF0cGFrU2FuZGJveCB7CisgICB2b2lkIE9uU3Bhd25FeGl0ZWRTaWduYWwo ZGJ1czo6U2lnbmFsKiBzaWduYWwpOworIAorICAgYmFzZTo6UHJvY2Vzc0lkIFNwYXduKGNvbnN0 IGJhc2U6OkNvbW1hbmRMaW5lJiBjbWRsaW5lLAorLSAgICAgICAgICAgICAgICAgICAgICAgIGNv bnN0IGJhc2U6OkxhdW5jaE9wdGlvbnMmIGxhdW5jaF9vcHRpb25zKTsKKysgICAgICAgICAgICAg ICAgICAgICAgICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25zJiBsYXVuY2hfb3B0aW9ucywKKysg ICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBTcGF3bk9wdGlvbnMmIHNwYXduX29wdGlvbnMp OworICAgdm9pZCBTcGF3bk9uQnVzVGhyZWFkKGJhc2U6OlByb2Nlc3NJZCogb3V0X2V4dGVybmFs X3BpZCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBiYXNlOjpXYWl0YWJsZUV2ZW50KiBldmVu dCwKKy0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpDb21tYW5kTGluZSYgY21k bGluZSwKKy0gICAgICAgICAgICAgICAgICAgICAgICBjb25zdCBiYXNlOjpMYXVuY2hPcHRpb25z JiBsYXVuY2hfb3B0aW9ucyk7CisrICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFzZTo6 Q29tbWFuZExpbmUqIGNtZGxpbmUsCisrICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYmFz ZTo6TGF1bmNoT3B0aW9ucyogbGF1bmNoX29wdGlvbnMsCisrICAgICAgICAgICAgICAgICAgICAg ICAgY29uc3QgU3Bhd25PcHRpb25zKiBzcGF3bl9vcHRpb25zKTsKKyAgIHZvaWQgT25TcGF3blJl c3BvbnNlKGJhc2U6OlByb2Nlc3NJZCogb3V0X2V4dGVybmFsX3BpZCwKKyAgICAgICAgICAgICAg ICAgICAgICAgIGJhc2U6OldhaXRhYmxlRXZlbnQqIGV2ZW50LAorICAgICAgICAgICAgICAgICAg ICAgICAgZGJ1czo6UmVzcG9uc2UqIHJlc3BvbnNlLAorLS0gCisyLjQ2LjEKKwoKZGlmZiAtLWdp dCBhL2Nocm9taXVtLTEzMi1lbDgtZmZtcGVnLnBhdGNoIGIvY2hyb21pdW0tMTMyLWVsOC1mZm1w ZWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4MjRkNjkuLjAwMDAwMDAK LS0tIGEvY2hyb21pdW0tMTMyLWVsOC1mZm1wZWcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1 MiArMCwwIEBACi0tLS0gL2Rldi9udWxsCTIwMjUtMDEtMTUgMTc6NTk6MzEuMTA1OTk5OTg2ICsw MTAwCi0rKysgY2hyb21pdW0tMTMyLjAuNjgzNC44My90aGlyZF9wYXJ0eS9mZm1wZWcvbGliYXZj b2RlYy9hYXJjaDY0L2F1dG9yZW5hbWVfbGliYXZjb2RlY19hYXJjaDY0X3ZvcmJpc2RzcF9pbml0 LmMJMjAyNS0wMS0wNyAyMDo0OTowMS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMiBAQAot Ky8vIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIG9uIFR1ZSBPY3QgMjIgMTc6NTY6MDEgMjAyNC4g U2VlIGNyYnVnLmNvbS80OTU4MzMuCi0rI2luY2x1ZGUgInZvcmJpc2RzcF9pbml0LmMiCi0tLS0g L2Rldi9udWxsCTIwMjUtMDEtMTUgMjM6MDg6MzAuOTg1MzQ0NDg1ICswMTAwCi0rKysgY2hyb21p dW0tMTMyLjAuNjgzNC44My90aGlyZF9wYXJ0eS9mZm1wZWcvbGliYXZ1dGlsL2FhcmNoNjQvYXV0 b3JlbmFtZV9saWJhdnV0aWxfYWFyY2g2NF9jcHUuYwkyMDI1LTAxLTA3IDIwOjQ5OjAxLjAwMDAw MDAwMCArMDEwMAotQEAgLTAsMCArMSwyIEBACi0rLy8gQXV0b21hdGljYWxseSBnZW5lcmF0ZWQg b24gVHVlIE9jdCAyMiAxNzo1NjowMSAyMDI0LiBTZWUgY3JidWcuY29tLzQ5NTgzMy4KLSsjaW5j bHVkZSAiY3B1LmMiCi0tLS0gL2Rldi9udWxsCTIwMjUtMDEtMTYgMDg6NTA6NDQuOTA2MDAwMzUx ICswMTAwCi0rKysgY2hyb21pdW0tMTMyLjAuNjgzNC44My90aGlyZF9wYXJ0eS9mZm1wZWcvbGli YXZ1dGlsL2FhcmNoNjQvYXV0b3JlbmFtZV9saWJhdnV0aWxfYWFyY2g2NF9mbG9hdF9kc3BfaW5p dC5jCTIwMjUtMDEtMDcgMjA6NDk6MDEuMDAwMDAwMDAwICswMTAwCi1AQCAtMCwwICsxLDIgQEAK LSsvLyBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBvbiBUdWUgT2N0IDIyIDE3OjU2OjAxIDIwMjQu IFNlZSBjcmJ1Zy5jb20vNDk1ODMzLgotKyNpbmNsdWRlICJmbG9hdF9kc3BfaW5pdC5jIgotLS0t IC9kZXYvbnVsbAkyMDI1LTAxLTE2IDA4OjUwOjQ0LjkwNjAwMDM1MSArMDEwMAotKysrIGNocm9t aXVtLTEzMi4wLjY4MzQuODMvdGhpcmRfcGFydHkvZmZtcGVnL2xpYmF2Y29kZWMvYWFyY2g2NC9h dXRvcmVuYW1lX2xpYmF2Y29kZWNfYWFyY2g2NF92aWRlb2RzcF9pbml0LmMJMjAyNS0wMS0wNyAy MDo0OTowMS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMiBAQAotKy8vIEF1dG9tYXRpY2Fs bHkgZ2VuZXJhdGVkIG9uIFR1ZSBPY3QgMjIgMTc6NTY6MDEgMjAyNC4gU2VlIGNyYnVnLmNvbS80 OTU4MzMuCi0rI2luY2x1ZGUgInZpZGVvZHNwX2luaXQuYyIKLS0tLSAvZGV2L251bGwJMjAyNS0w MS0xNiAxMDo0MjowNy4wODY5OTk5ODYgKzAxMDAKLSsrKyBjaHJvbWl1bS0xMzIuMC42ODM0Ljgz L3RoaXJkX3BhcnR5L2ZmbXBlZy9saWJhdnV0aWwvYWFyY2g2NC9jcHVfc3ZlLlMJMjAyNS0wMS0w NyAyMDo0OTowMS4wMDAwMDAwMDAgKzAxMDAKLUBAIC0wLDAgKzEsMjkgQEAKLSsvKgotKyAqIENv cHlyaWdodCAoYykgMjAyMyBNYXJ0aW4gU3RvcnNqbwotKyAqCi0rICogVGhpcyBmaWxlIGlzIHBh cnQgb2YgRkZtcGVnLgotKyAqCi0rICogRkZtcGVnIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4g cmVkaXN0cmlidXRlIGl0IGFuZC9vcgotKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2Yg dGhlIEdOVSBMZXNzZXIgR2VuZXJhbCBQdWJsaWMKLSsgKiBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBi eSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIKLSsgKiB2ZXJzaW9uIDIuMSBv ZiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsg KgotKyAqIEZGbXBlZyBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUg dXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBp bXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEg UEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgKiBMZXNzZXIgR2VuZXJhbCBQdWJs aWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqCi0rICogWW91IHNob3VsZCBoYXZlIHJl Y2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYwotKyAqIExpY2Vu c2UgYWxvbmcgd2l0aCBGRm1wZWc7IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUK LSsgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBC b3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCi0rICovCi0rCi0rI2luY2x1ZGUgImNvbmZpZy5oIgot KyNpbmNsdWRlICJhc20uUyIKLSsKLStFTkFCTEVfU1ZFCi0rCi0rZnVuY3Rpb24gZmZfYWFyY2g2 NF9zdmVfbGVuZ3RoLCBleHBvcnQ9MQotKyAgICAgICAgY250YiAgICAgICAgICAgIHgwCi0rICAg ICAgICByZXQKLStlbmRmdW5jCgpkaWZmIC0tZ2l0IGEvY2hyb21pdW0uc3BlYyBiL2Nocm9taXVt LnNwZWMKaW5kZXggYjAzZjc4Ni4uMDM1OWEyOSAxMDA2NDQKLS0tIGEvY2hyb21pdW0uc3BlYwor KysgYi9jaHJvbWl1bS5zcGVjCkBAIC0yODIsOCArMjgyLDggQEAKICVlbmRpZgogCiBOYW1lOglj aHJvbWl1bSV7Y2hyb21pdW1fY2hhbm5lbH0KLVZlcnNpb246IDEzMi4wLjY4MzQuODMKLVJlbGVh c2U6IDIlez9kaXN0fQorVmVyc2lvbjogMTMyLjAuNjgzNC4xMTAKK1JlbGVhc2U6IDElez9kaXN0 fQogU3VtbWFyeTogQSBXZWJLaXQgKEJsaW5rKSBwb3dlcmVkIHdlYiBicm93c2VyIHRoYXQgR29v Z2xlIGRvZXNuJ3Qgd2FudCB5b3UgdG8gdXNlCiBVcmw6IGh0dHA6Ly93d3cuY2hyb21pdW0ub3Jn L0hvbWUKIExpY2Vuc2U6IEJTRC0zLUNsYXVzZSBBTkQgTEdQTC0yLjEtb3ItbGF0ZXIgQU5EIEFw YWNoZS0yLjAgQU5EIElKRyBBTkQgTUlUIEFORCBHUEwtMi4wLW9yLWxhdGVyIEFORCBJU0MgQU5E IE9wZW5TU0wgQU5EIChNUEwtMS4xIE9SIEdQTC0yLjAtb25seSBPUiBMR1BMLTIuMC1vbmx5KQpA QCAtMzM3LDkgKzMzNyw2IEBAIFBhdGNoMTUxOiBjaHJvbWl1bS0xMzEtcXQtdWkucGF0Y2gKICMg cmV2ZXJ0LCBpdCBjYXVzZXMgcmFtZG9tIGNyYXNoIG9uIGFhcmNoNjQKIFBhdGNoMzAwOiBjaHJv bWl1bS0xMzEtcmV2ZXJ0LWRlY29tbWl0LXBvb2xlZC1wYWdlcy1ieS1kZWZhdWx0LnBhdGNoCiAK LSMgV29ya2Fyb3VuZCBmb3IgYnVpbGQgZXJyb3Igb24gZWw4IGFhcmNoNjQKLVBhdGNoMzA0OiBj aHJvbWl1bS0xMzItZWw4LWZmbXBlZy5wYXRjaAotCiAjIGRpc2FibGUgbWVtb3J5IHRhZ2dpbmcg KGVwZWw4IG9uIGFhcmNoNjQpIGR1ZSB0byBuZXcgZmVhdHVyZSBJRlVOQy1SZXNvbHZlcgogIyBp dCBpcyBub3Qgc3VwcG9ydGVkIGluIG9sZCBnbGliYyA8IDIuMzAsIGVycm9yOiBmYXRhbCBlcnJv cjogJ3N5cy9pZnVuYy5oJyBmaWxlIG5vdCBmb3VuZAogUGF0Y2gzMDU6IGNocm9taXVtLTEyNC1l bDgtYXJtNjQtbWVtb3J5X3RhZ2dpbmcucGF0Y2gKQEAgLTEwNjAsNyArMTA1Nyw2IEBAIFF0NiBV SSBmb3IgY2hyb21pdW0uCiAKICVpZiAwJXs/cmhlbH0gPT0gOAogJWlmYXJjaCBhYXJjaDY0Ci0l cGF0Y2ggLVAzMDQgLXAxIC1iIC5lbDgtZmZtcGVnCiAlcGF0Y2ggLVAzMDUgLXAxIC1iIC5lbDgt bWVtb3J5X3RhZ2dpbmcKICVwYXRjaCAtUDMwNiAtcDEgLWIgLmVsOC1pZnVuYy1oZWFkZXIKICVl bmRpZgpAQCAtMTk0Niw2ICsxOTQyLDExIEBAIGdldGVudCBncm91cCBjaHJvbWUtcmVtb3RlLWRl c2t0b3AgPi9kZXYvbnVsbCB8fCBncm91cGFkZCAtciBjaHJvbWUtcmVtb3RlLWRlc2t0CiAlZW5k aWYKIAogJWNoYW5nZWxvZworKiBUaHUgSmFuIDIzIDIwMjUgVGhhbiBOZ28gPHRoYW5AcmVkaGF0 LmNvbT4gLSAxMzIuMC42ODM0LjExMC0xCistIFVwZGF0ZSB0byAxMzIuMC42ODM0LjExMAorICAq IEhpZ2ggQ1ZFLTIwMjUtMDYxMTogT2JqZWN0IGNvcnJ1cHRpb24gaW4gVjgKKyAgKiBIaWdoIENW RS0yMDI1LTA2MTI6IE91dCBvZiBib3VuZHMgbWVtb3J5IGFjY2VzcyBpbiBWOAorCiAqIFRodSBK YW4gMTYgMjAyNSBGZWRvcmEgUmVsZWFzZSBFbmdpbmVlcmluZyA8cmVsZW5nQGZlZG9yYXByb2pl Y3Qub3JnPiAtIDEzMi4wLjY4MzQuODMtMgogLSBSZWJ1aWx0IGZvciBodHRwczovL2ZlZG9yYXBy b2plY3Qub3JnL3dpa2kvRmVkb3JhXzQyX01hc3NfUmVidWlsZAogCgpkaWZmIC0tZ2l0IGEvY2xl YW5fZmZtcGVnLnNoIGIvY2xlYW5fZmZtcGVnLnNoCmluZGV4IDRiM2RlOGEuLmYyNmIyZmUgMTAw NzU1Ci0tLSBhL2NsZWFuX2ZmbXBlZy5zaAorKysgYi9jbGVhbl9mZm1wZWcuc2gKQEAgLTIzNiw2 ICsyMzYsOCBAQCBtYW51YWxfZmlsZXM9IiBsaWJhdmNvZGVjL2FhcmNoNjQvaDI2NHByZWRfbmVv bi5TIFwKIAkJbGliYXZjb2RlYy9hYXJjaDY0L25lb24uUyBcCiAJCWxpYmF2Y29kZWMvYWFyY2g2 NC92b3JiaXNkc3BfbmVvbi5TIFwKIAkJbGliYXZjb2RlYy9hYXJjaDY0L2F1dG9yZW5hbWVfbGli YXZjb2RlY19hYXJjaDY0X3ZvcmJpc2RzcF9uZW9uLlMgXAorCQlsaWJhdmNvZGVjL2FhcmNoNjQv YXV0b3JlbmFtZV9saWJhdmNvZGVjX2FhcmNoNjRfdm9yYmlzZHNwX2luaXQuYyBcCisJCWxpYmF2 Y29kZWMvYWFyY2g2NC9hdXRvcmVuYW1lX2xpYmF2Y29kZWNfYWFyY2g2NF92aWRlb2RzcF9pbml0 LmMgXAogCQlsaWJhdmNvZGVjL2FhcmNoNjQvdm9yYmlzZHNwX2luaXQuYyBcCiAJCWxpYmF2Y29k ZWMvYWFyY2g2NC92cDhkc3BfbmVvbi5TIFwKIAkJbGliYXZjb2RlYy94ODYvaHBlbGRzcC5hc20g XApAQCAtMjcxLDggKzI3MywxMSBAQCBtYW51YWxfZmlsZXM9IiBsaWJhdmNvZGVjL2FhcmNoNjQv aDI2NHByZWRfbmVvbi5TIFwKIAkJbGliYXZmb3JtYXQvdmVyc2lvbi5jIFwKIAkJbGliYXZ1dGls L2FhcmNoNjQvYXNtLlMgXAogCQlsaWJhdnV0aWwvYWFyY2g2NC9jcHUuYyBcCisJCWxpYmF2dXRp bC9hYXJjaDY0L2NwdV9zdmUuUyBcCiAJCWxpYmF2dXRpbC9hYXJjaDY0L2Zsb2F0X2RzcF9pbml0 LmMgXAogCQlsaWJhdnV0aWwvYWFyY2g2NC9mbG9hdF9kc3BfbmVvbi5TIFwKKwkJbGliYXZ1dGls L2FhcmNoNjQvYXV0b3JlbmFtZV9saWJhdnV0aWxfYWFyY2g2NF9jcHUuYyBcCisJCWxpYmF2dXRp bC9hYXJjaDY0L2F1dG9yZW5hbWVfbGliYXZ1dGlsX2FhcmNoNjRfZmxvYXRfZHNwX2luaXQuYyBc CiAJCWxpYmF2dXRpbC9hYXJjaDY0L2F1dG9yZW5hbWVfbGliYXZ1dGlsX2FhcmNoNjRfZmxvYXRf ZHNwX25lb24uUyBcCiAJCWxpYmF2dXRpbC9hYXJjaDY0L3R4X2Zsb2F0X25lb24uUyBcCiAJCWxp YmF2dXRpbC9hYXJjaDY0L3RpbWVyLmggXAoKZGlmZiAtLWdpdCBhL3NvdXJjZXMgYi9zb3VyY2Vz CmluZGV4IDY4OTIwN2EuLjAzMmQyNzUgMTAwNjQ0Ci0tLSBhL3NvdXJjZXMKKysrIGIvc291cmNl cwpAQCAtMiw0ICsyLDQgQEAgU0hBNTEyIChub2RlLXYyMC42LjEtbGludXgtYXJtNjQudGFyLnh6 KSA9IGFkZmNhZjJjMjI2MTQ3OTdmZDY5ZmI0NmQ5NGMxY2JmNjRkZWEKIFNIQTUxMiAobm9kZS12 MjAuNi4xLWxpbnV4LXg2NC50YXIueHopID0gN2UxNWMwNTA0MWE5YTUwZjAwNDYyNjZhYWRiMmUw OTJhNWFlZmJlYzE5YmUxYzdjODA5NDcxYWRkNTIwY2I1N2M3ZGYzYzQ3ZDg4YjE4ODhiMjliZjI5 NzlkY2EzYzkyYWRkZGZkOTY1MzcwZmEyYTlkYTRlYTAyMTg2NDY0ZmQKIFNIQTUxMiAobGludXgt YXJtNjQtMC4xOS4yLnRneikgPSA4YTBkOGZlYzY3ODZmZmZjZDY5NTRkMDA4MjAwMzdhNTVkNjFl NjA3NjJjNzQzMDBkZjA4MDFmOGRiMjcwNTc1NjJjMjIxYTA2M2JlZGZiOGRmNTZhZjliYTgwYWJi MzY2MzM2OTg3ZTg4MTc4MmM1OTk2ZTZmODcxYWJkM2RjNgogU0hBNTEyIChsaW51eC14NjQtMC4x OS4yLnRneikgPSBhMzFjYzc0YzRiZmE1NGY5Yjc1ZDczNWExY2ZjOTQ0ZDNiNWVmYjdjMDZiZmJh OTU0MmRhOWE2NDJhZTBiMmQyMzVlYTAwYWU4NGQzYWQwNTcyYzQwNjQwNTExMGZlN2I2MTM3N2Fm MGZkMTU4MDM4MDZlZjc4ZDIwZmM2ZjA1ZAotU0hBNTEyIChjaHJvbWl1bS0xMzIuMC42ODM0Ljgz LWNsZWFuLnRhci54eikgPSBhZjMyY2EwOGRjZjllNGE5ZDJjMDU1MzA3OWJkM2RmZTlkMjdlY2Iy ZmM3NTcyODQzMTkyZjUxOWYzNzM2NGQ3ZDRjY2FhZDk4NzI1MGI0NWM4ZmYwYzE5YjljMWJiOWM4 MzkzMGNiYjE3OTJlM2EzZWYwMDFjZmY4Yzk3NjVhNworU0hBNTEyIChjaHJvbWl1bS0xMzIuMC42 ODM0LjExMC1jbGVhbi50YXIueHopID0gMDcwZWJmZjE5YWM0YzdkM2YwMGYxNDkzZDY1NTQ2ZTA5 ZTQ5YTRlYTFkZjY3NWU1OGFmMDQ1YTA3OWEwMjRlY2FiZjJmYTVhYWZlMjk0NWVjMDQ4N2RhMjM3 MDQ1MTZjN2EzYjE1NWViYzQ5NzI3NWMzMjFlZWNhOTU2NjRhMDgK