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: Nicolas Chauvet To: git-commits@fedoraproject.org Subject: [rpms/opencv] opencv5: Drop merged patches Date: Fri, 28 Aug 2026 13:33:17 GMT Message-ID: <178792399772.1.10060832993435832879.rpms-opencv-46410edc7690@fedoraproject.org> List-ID: X-Git-Repo: rpms/opencv X-Git-Branch: opencv5 X-Git-Rev: 46410edc7690c9cbb1117315dd335584aa869b3f QSBuZXcgY29tbWl0IGhhcyBiZWVuIHB1c2hlZC4KClJlcG8gICA6IHJwbXMvb3BlbmN2CkJyYW5j aCA6IG9wZW5jdjUKQ29tbWl0IDogNDY0MTBlZGM3NjkwYzljYmIxMTE3MzE1ZGQzMzU1ODRhYTg2 OWIzZgpBdXRob3IgOiBOaWNvbGFzIENoYXV2ZXQgPGt3aXphcnRAZ21haWwuY29tPgpEYXRlICAg OiAyMDI2LTAxLTI4VDE3OjIwOjU0KzAxOjAwClN0YXRzICA6ICswLy0yMDIwIGluIDE1IGZpbGUo cykKVVJMICAgIDogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9vcGVuY3YvYy80 NjQxMGVkYzc2OTBjOWNiYjExMTczMTVkZDMzNTU4NGFhODY5YjNmP2JyYW5jaD1vcGVuY3Y1CgpM b2c6CkRyb3AgbWVyZ2VkIHBhdGNoZXMKCi0tLQpkaWZmIC0tZ2l0IGEvMDAwMS1NZXJnZS1wdWxs LXJlcXVlc3QtMjY3MzktZnJvbS12cmFiYXVkLXBuZ19sZWFrLnBhdGNoIGIvMDAwMS1NZXJnZS1w dWxsLXJlcXVlc3QtMjY3MzktZnJvbS12cmFiYXVkLXBuZ19sZWFrLnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBhMjRlZmY5Li4wMDAwMDAwCi0tLSBhLzAwMDEtTWVyZ2UtcHVs bC1yZXF1ZXN0LTI2NzM5LWZyb20tdnJhYmF1ZC1wbmdfbGVhay5wYXRjaAorKysgL2Rldi9udWxs CkBAIC0xLDE1NSArMCwwIEBACi1Gcm9tIGMzOTkyMDNlOTg2MWJmM2ZmNWI5NzZjZDU5N2I5ODIw ZWVlNWQ5M2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWaW5jZW50IFJhYmF1ZCA8 dnJhYmF1ZEBnb29nbGUuY29tPgotRGF0ZTogRnJpLCAxMCBKYW4gMjAyNSAwOTozMzo0MyArMDEw MAotU3ViamVjdDogW1BBVENIIDAxLzEwXSBNZXJnZSBwdWxsIHJlcXVlc3QgIzI2NzM5IGZyb20g dnJhYmF1ZDpwbmdfbGVhawotCi1BZGQgbW9yZSBib3VuZGFyeSBjaGVja3MuICMyNjczOQotCi1B bHNvIGZpeCBhIGJ1ZyBpbiByZWFkX2NodW5rIHdoZXJlIHdlIGNvdWxkIGVuZCB1cCB3aXRoIHBu Z19nZXRfdWludF8zMihsZW4pICsgMTIgPCA0Ci0KLSMjIyBQdWxsIFJlcXVlc3QgUmVhZGluZXNz IENoZWNrbGlzdAotCi1TZWUgZGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2L29w ZW5jdi93aWtpL0hvd190b19jb250cmlidXRlI21ha2luZy1hLWdvb2QtcHVsbC1yZXF1ZXN0Ci0K LS0gW3hdIEkgYWdyZWUgdG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdCB1bmRlciBBcGFjaGUg MiBMaWNlbnNlLgotLSBbeF0gVG8gdGhlIGJlc3Qgb2YgbXkga25vd2xlZGdlLCB0aGUgcHJvcG9z ZWQgcGF0Y2ggaXMgbm90IGJhc2VkIG9uIGEgY29kZSB1bmRlciBHUEwgb3IgYW5vdGhlciBsaWNl bnNlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggT3BlbkNWCi0tIFt4XSBUaGUgUFIgaXMgcHJv cG9zZWQgdG8gdGhlIHByb3BlciBicmFuY2gKLS0gWyBdIFRoZXJlIGlzIGEgcmVmZXJlbmNlIHRv IHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0IGFuZCByZWxhdGVkIHdvcmsKLS0gWyBdIFRoZXJlIGlz IGFjY3VyYWN5IHRlc3QsIHBlcmZvcm1hbmNlIHRlc3QgYW5kIHRlc3QgZGF0YSBpbiBvcGVuY3Zf ZXh0cmEgcmVwb3NpdG9yeSwgaWYgYXBwbGljYWJsZQotICAgICAgUGF0Y2ggdG8gb3BlbmN2X2V4 dHJhIGhhcyB0aGUgc2FtZSBicmFuY2ggbmFtZS4KLS0gWyBdIFRoZSBmZWF0dXJlIGlzIHdlbGwg ZG9jdW1lbnRlZCBhbmQgc2FtcGxlIGNvZGUgY2FuIGJlIGJ1aWx0IHdpdGggdGhlIHByb2plY3Qg Q01ha2UKLS0tLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwIHwgNTQgKysr KysrKysrKysrKysrKystLS0tLS0tLS0tLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRf cG5nLmhwcCB8ICAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAyMyBk ZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9w bmcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKLWluZGV4IDZiNGNl YTQwNWMuLjc0NGYyNDRhMjAgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3Jm bXRfcG5nLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKLUBA IC0yNTUsMTEgKzI1NSwxNCBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFkSGVhZGVyKCkKLSAgICAg ICAgICAgICAgICAgcG5nX2luaXRfaW8ocG5nX3B0ciwgbV9mKTsKLSAgICAgICAgICAgICB9Ci0g Ci0tICAgICAgICAgICAgaWYgKHJlYWRfZnJvbV9pbygmc2lnLCA4LCAxKSAhPSAxKQotKyAgICAg ICAgICAgIC8vIFJlYWQgUE5HIGhlYWRlcjogMTM3IDgwIDc4IDcxIDEzIDEwIDI2IDEwCi0rICAg ICAgICAgICAgaWYgKCFyZWFkX2Zyb21faW8oJnNpZywgOCkpCi0gICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAKLSAgICAgICAgICAgICBpZCA9IHJlYWRfY2h1bmsobV9jaHVua0lIRFIp OwotLSAgICAgICAgICAgIGlmICghKGlkID09IGlkX0lIRFIgJiYgbV9jaHVua0lIRFIucC5zaXpl KCkgPT0gMjUpKQotKyAgICAgICAgICAgIC8vIDg9SERSK3NpemUsIDEzPXNpemUgb2YgSUhEUiBj aHVuaywgND1DUkMKLSsgICAgICAgICAgICAvLyBodHRwOi8vd3d3LmxpYnBuZy5vcmcvcHViL3Bu Zy9zcGVjLzEuMi9QTkctQ2h1bmtzLmh0bWwjQy5JSERSCi0rICAgICAgICAgICAgaWYgKCEoaWQg PT0gaWRfSUhEUiAmJiBtX2NodW5rSUhEUi5wLnNpemUoKSA9PSA4ICsgMTMgKyA0KSkKLSAgICAg ICAgICAgICB7Ci0gICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICB9 Ci1AQCAtMjgzLDIzICsyODYsMjUgQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCi0g ICAgICAgICAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgICAgICAgICAgfQotIAotLSAgICAg ICAgICAgICAgICBpZiAoaWQgPT0gaWRfYWNUTCAmJiBjaHVuay5wLnNpemUoKSA9PSAyMCkKLSsg ICAgICAgICAgICAgICAgaWYgKGlkID09IGlkX2FjVEwpCi0gICAgICAgICAgICAgICAgIHsKLSsg ICAgICAgICAgICAgICAgICAgIC8vIDg9SERSK3NpemUsIDg9c2l6ZSBvZiBhY1RMIGNodW5rLCA0 PUNSQwotKyAgICAgICAgICAgICAgICAgICAgLy8gaHR0cHM6Ly93aWtpLm1vemlsbGEub3JnL0FQ TkdfU3BlY2lmaWNhdGlvbiMlNjBhY1RMJTYwOl9UaGVfQW5pbWF0aW9uX0NvbnRyb2xfQ2h1bmsK LSsgICAgICAgICAgICAgICAgICAgIGlmIChjaHVuay5wLnNpemUoKSAhPSA4ICsgOCArIDQpCi0r ICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgICAgICAg ICAgbV9hbmltYXRpb24ubG9vcF9jb3VudCA9IHBuZ19nZXRfdWludF8zMigmY2h1bmsucFsxMl0p OwotIAotLSAgICAgICAgICAgICAgICAgICAgaWYgKGNodW5rLnBbOF0gPiAwKQotLSAgICAgICAg ICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rLnBbOF0gPSAwOwot LSAgICAgICAgICAgICAgICAgICAgICAgIGNodW5rLnBbOV0gPSAwOwotLSAgICAgICAgICAgICAg ICAgICAgICAgIG1fZnJhbWVfY291bnQgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBbOF0pOwot LSAgICAgICAgICAgICAgICAgICAgICAgIG1fZnJhbWVfY291bnQrKzsKLS0gICAgICAgICAgICAg ICAgICAgIH0KLS0gICAgICAgICAgICAgICAgICAgIGVsc2UKLS0gICAgICAgICAgICAgICAgICAg ICAgICBtX2ZyYW1lX2NvdW50ID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzhdKTsKLSsgICAg ICAgICAgICAgICAgICAgIG1fZnJhbWVfY291bnQgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBb OF0pOwotKyAgICAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVfY291bnQgPT0gMCkKLSsgICAg ICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0gICAgICAgICAgICAgICAgIH0KLSAK LSAgICAgICAgICAgICAgICAgaWYgKGlkID09IGlkX2ZjVEwpCi0gICAgICAgICAgICAgICAgIHsK LSsgICAgICAgICAgICAgICAgICAgIC8vIDg9SERSK3NpemUsIDI2PXNpemUgb2YgZmNUTCBjaHVu aywgND1DUkMKLSsgICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9y Zy9BUE5HX1NwZWNpZmljYXRpb24jJTYwZmNUTCU2MDpfVGhlX0ZyYW1lX0NvbnRyb2xfQ2h1bmsK LSsgICAgICAgICAgICAgICAgICAgIGlmIChjaHVuay5wLnNpemUoKSAhPSA4ICsgMjYgKyA0KQot KyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgICAgICAgICAgICAg ICAgIG1faXNfZmNUTF9sb2FkZWQgPSB0cnVlOwotICAgICAgICAgICAgICAgICAgICAgdzAgPSBw bmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBbMTJdKTsKLSAgICAgICAgICAgICAgICAgICAgIGgwID0g cG5nX2dldF91aW50XzMyKCZjaHVuay5wWzE2XSk7Ci1AQCAtMzEzLDYgKzMxOCwxMSBAQCBib29s ICBQbmdEZWNvZGVyOjpyZWFkSGVhZGVyKCkKLSAKLSAgICAgICAgICAgICAgICAgaWYgKGlkID09 IGlkX2JLR0QpCi0gICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICAgIC8vIDg9 SERSK3NpemUsID8/PXNpemUgb2YgYktHRCBjaHVuaywgND1DUkMKLSsgICAgICAgICAgICAgICAg ICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVhbGx5IG1vcmUgY29tcGxleDogaHR0cDovL3d3dy5saWJw bmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuYktHRAotKyAgICAgICAg ICAgICAgICAgICAgLy8gVE9ETzogd2Ugb25seSBjaGVjayB0aGF0IDQgYnl0ZXMgY2FuIGJlIHJl YWQgZnJvbSAmY2h1bmsucFs4XS4gRml4LgotKyAgICAgICAgICAgICAgICAgICAgaWYgKGNodW5r LnAuc2l6ZSgpIDwgOCArIDQpCi0rICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNl OwotICAgICAgICAgICAgICAgICAgICAgaW50IGJnY29sb3IgPSBwbmdfZ2V0X3VpbnRfMzIoJmNo dW5rLnBbOF0pOwotICAgICAgICAgICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclszXSA9 IChiZ2NvbG9yID4+IDI0KSAmIDB4RkY7Ci0gICAgICAgICAgICAgICAgICAgICBtX2FuaW1hdGlv bi5iZ2NvbG9yWzJdID0gKGJnY29sb3IgPj4gMTYpICYgMHhGRjsKLUBAIC02NjksMzQgKzY3OSwz NCBAQCB2b2lkIFBuZ0RlY29kZXI6OmNvbXBvc2VfZnJhbWUoc3RkOjp2ZWN0b3I8cG5nX2J5dGVw PiYgcm93c19kc3QsIGNvbnN0IHN0ZDo6dmVjdAotICAgICAgICAgICAgIH0pOwotIH0KLSAKLS1z aXplX3QgUG5nRGVjb2Rlcjo6cmVhZF9mcm9tX2lvKHZvaWQqIF9CdWZmZXIsIHNpemVfdCBfRWxl bWVudFNpemUsIHNpemVfdCBfRWxlbWVudENvdW50KQotK2Jvb2wgUG5nRGVjb2Rlcjo6cmVhZF9m cm9tX2lvKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IG51bV9ieXRlcykKLSB7Ci0gICAgIGlmIChtX2Yp Ci0tICAgICAgICByZXR1cm4gZnJlYWQoX0J1ZmZlciwgX0VsZW1lbnRTaXplLCBfRWxlbWVudENv dW50LCBtX2YpOwotKyAgICAgICAgcmV0dXJuIGZyZWFkKGJ1ZmZlciwgMSwgbnVtX2J5dGVzLCBt X2YpID09IG51bV9ieXRlczsKLSAKLS0gICAgaWYgKG1fYnVmX3BvcyArIF9FbGVtZW50U2l6ZSA+ IG1fYnVmLmNvbHMgKiBtX2J1Zi5yb3dzICogbV9idWYuZWxlbVNpemUoKSkgewotKyAgICBpZiAo bV9idWZfcG9zICsgbnVtX2J5dGVzID4gbV9idWYuY29scyAqIG1fYnVmLnJvd3MgKiBtX2J1Zi5l bGVtU2l6ZSgpKSB7Ci0gICAgICAgICBDVl9MT0dfV0FSTklORyhOVUxMLCAiUE5HIGlucHV0IGJ1 ZmZlciBpcyBpbmNvbXBsZXRlIik7Ci0tICAgICAgICByZXR1cm4gMDsKLSsgICAgICAgIHJldHVy biBmYWxzZTsKLSAgICAgfQotIAotLSAgICBtZW1jcHkoIF9CdWZmZXIsIG1fYnVmLnB0cigpICsg bV9idWZfcG9zLCBfRWxlbWVudFNpemUgKTsKLS0gICAgbV9idWZfcG9zICs9IF9FbGVtZW50U2l6 ZTsKLS0gICAgcmV0dXJuIDE7Ci0rICAgIG1lbWNweSggYnVmZmVyLCBtX2J1Zi5wdHIoKSArIG1f YnVmX3BvcywgbnVtX2J5dGVzICk7Ci0rICAgIG1fYnVmX3BvcyArPSBudW1fYnl0ZXM7Ci0rICAg IHJldHVybiB0cnVlOwotIH0KLSAKLSB1aW50MzJfdCBQbmdEZWNvZGVyOjpyZWFkX2NodW5rKENo dW5rJiBjaHVuaykKLSB7Ci0gICAgIHVuc2lnbmVkIGNoYXIgbGVuWzRdOwotLSAgICBpZiAocmVh ZF9mcm9tX2lvKCZsZW4sIDQsIDEpID09IDEpCi0rICAgIGlmIChyZWFkX2Zyb21faW8oJmxlbiwg NCkpCi0gICAgIHsKLS0gICAgICAgIGNvbnN0IHNpemVfdCBzaXplID0gcG5nX2dldF91aW50XzMy KGxlbikgKyAxMjsKLSsgICAgICAgIGNvbnN0IHNpemVfdCBzaXplID0gc3RhdGljX2Nhc3Q8c2l6 ZV90PihwbmdfZ2V0X3VpbnRfMzIobGVuKSkgKyAxMjsKLSAgICAgICAgIGlmIChzaXplID4gUE5H X1VTRVJfQ0hVTktfTUFMTE9DX01BWCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBDVl9MT0df V0FSTklORyhOVUxMLCAiY2h1bmsgZGF0YSBpcyB0b28gbGFyZ2UiKTsKLSAgICAgICAgIH0KLSAg ICAgICAgIGNodW5rLnAucmVzaXplKHNpemUpOwotICAgICAgICAgbWVtY3B5KGNodW5rLnAuZGF0 YSgpLCBsZW4sIDQpOwotLSAgICAgICAgaWYgKHJlYWRfZnJvbV9pbygmY2h1bmsucFs0XSwgY2h1 bmsucC5zaXplKCkgLSA0LCAxKSA9PSAxKQotKyAgICAgICAgaWYgKHJlYWRfZnJvbV9pbygmY2h1 bmsucFs0XSwgY2h1bmsucC5zaXplKCkgLSA0KSkKLSAgICAgICAgICAgICByZXR1cm4gKih1aW50 MzJfdCopKCZjaHVuay5wWzRdKTsKLSAgICAgfQotICAgICByZXR1cm4gMDsKLWRpZmYgLS1naXQg YS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmhwcCBiL21vZHVsZXMvaW1nY29kZWNz L3NyYy9ncmZtdF9wbmcuaHBwCi1pbmRleCBhOTUwYjllOTQxLi5kZWMyY2QwYjYxIDEwMDY0NAot LS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5ocHAKLSsrKyBiL21vZHVsZXMv aW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuaHBwCi1AQCAtMTM3LDcgKzEzNyw3IEBAIHByb3RlY3Rl ZDoKLSAgICAgYm9vbCBwcm9jZXNzaW5nX3N0YXJ0KHZvaWQqIGZyYW1lX3B0ciwgY29uc3QgTWF0 JiBpbWcpOwotICAgICBib29sIHByb2Nlc3NpbmdfZmluaXNoKCk7Ci0gICAgIHZvaWQgY29tcG9z ZV9mcmFtZShzdGQ6OnZlY3RvcjxwbmdfYnl0ZXA+JiByb3dzX2RzdCwgY29uc3Qgc3RkOjp2ZWN0 b3I8cG5nX2J5dGVwPiYgcm93c19zcmMsIHVuc2lnbmVkIGNoYXIgYm9wLCB1aW50MzJfdCB4LCB1 aW50MzJfdCB5LCB1aW50MzJfdCB3LCB1aW50MzJfdCBoLCBNYXQmIGltZyk7Ci0tICAgIHNpemVf dCByZWFkX2Zyb21faW8odm9pZCogX0J1ZmZlciwgc2l6ZV90IF9FbGVtZW50U2l6ZSwgc2l6ZV90 IF9FbGVtZW50Q291bnQpOwotKyAgICBib29sIHJlYWRfZnJvbV9pbyh2b2lkKiBidWZmZXIsIHNp emVfdCBudW1fYnl0ZXMpOwotICAgICB1aW50MzJfdCAgcmVhZF9jaHVuayhDaHVuayYgY2h1bmsp OwotIAotICAgICBzdHJ1Y3QgUG5nUHRycyB7Ci0tLSAKLTIuNDguMQotCgpkaWZmIC0tZ2l0IGEv MDAwMi1GaXgtcmVtYWluaW5nLWJ1Z3MtaW4tUE5HLXJlYWRlci5wYXRjaCBiLzAwMDItRml4LXJl bWFpbmluZy1idWdzLWluLVBORy1yZWFkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0 CmluZGV4IGY0ODA0ZTYuLjAwMDAwMDAKLS0tIGEvMDAwMi1GaXgtcmVtYWluaW5nLWJ1Z3MtaW4t UE5HLXJlYWRlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gYjdi ODRlYzYzNjQ4MDkzMDY3NzZiNDgyMDZhZDM2MjY2Mjc0YzI5NyBNb24gU2VwIDE3IDAwOjAwOjAw IDIwMDEKLUZyb206IFZpbmNlbnQgUmFiYXVkIDx2cmFiYXVkQGdvb2dsZS5jb20+Ci1EYXRlOiBG cmksIDEwIEphbiAyMDI1IDE0OjU3OjM5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMDIvMTBdIEZp eCByZW1haW5pbmcgYnVncyBpbiBQTkcgcmVhZGVyCi0KLS0gZnJlZSBjaHVuayBiZWZvcmUgYSBw b3RlbnRpYWwgbG9uZ2ptcAotLSBkbyBub3QgdHJ5IHRvIGFsbG9jYXRlIHdoZW4gdGhlIGNodW5r IGlzID4gUE5HX1VTRVJfQ0hVTktfTUFMTE9DX01BWAotLS0tCi0gbW9kdWxlcy9pbWdjb2RlY3Mv c3JjL2dyZm10X3BuZy5jcHAgfCA1ICsrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9u cygrKQotCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAg Yi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAotaW5kZXggNzQ0ZjI0NGEyMC4u MWVjYzAxZjE3ZiAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcu Y3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAotQEAgLTMzOSw2 ICszMzksMTAgQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCi0gICAgICAgICAgICAg cG5nX2J5dGVwIHRyYW5zOwotICAgICAgICAgICAgIHBuZ19jb2xvcl8xNnAgdHJhbnNfdmFsdWVz OwotIAotKyAgICAgICAgICAgIC8vIEZyZWUgY2h1bmsgaW4gY2FzZSBwbmdfcmVhZF9pbmZvIHVz ZXMgbG9uZ2ptcC4KLSsgICAgICAgICAgICBjaHVuay5wLmNsZWFyKCk7Ci0rICAgICAgICAgICAg Y2h1bmsucC5zaHJpbmtfdG9fZml0KCk7Ci0rCi0gICAgICAgICAgICAgcG5nX3JlYWRfaW5mbygg cG5nX3B0ciwgaW5mb19wdHIgKTsKLSAgICAgICAgICAgICBwbmdfZ2V0X0lIRFIocG5nX3B0ciwg aW5mb19wdHIsICZ3ZHRoLCAmaGdodCwKLSAgICAgICAgICAgICAgICAgJmJpdF9kZXB0aCwgJmNv bG9yX3R5cGUsIDAsIDAsIDApOwotQEAgLTcwMyw2ICs3MDcsNyBAQCB1aW50MzJfdCBQbmdEZWNv ZGVyOjpyZWFkX2NodW5rKENodW5rJiBjaHVuaykKLSAgICAgICAgIGlmIChzaXplID4gUE5HX1VT RVJfQ0hVTktfTUFMTE9DX01BWCkKLSAgICAgICAgIHsKLSAgICAgICAgICAgICBDVl9MT0dfV0FS TklORyhOVUxMLCAiY2h1bmsgZGF0YSBpcyB0b28gbGFyZ2UiKTsKLSsgICAgICAgICAgICByZXR1 cm4gMDsKLSAgICAgICAgIH0KLSAgICAgICAgIGNodW5rLnAucmVzaXplKHNpemUpOwotICAgICAg ICAgbWVtY3B5KGNodW5rLnAuZGF0YSgpLCBsZW4sIDQpOwotLS0gCi0yLjQ4LjEKLQoKZGlmZiAt LWdpdCBhLzAwMDMtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2NzgyLWZyb20tdnJhYmF1ZC1wbmdfbGVh ay5wYXRjaCBiLzAwMDMtTWVyZ2UtcHVsbC1yZXF1ZXN0LTI2NzgyLWZyb20tdnJhYmF1ZC1wbmdf bGVhay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQxMTczMC4uMDAwMDAw MAotLS0gYS8wMDAzLU1lcmdlLXB1bGwtcmVxdWVzdC0yNjc4Mi1mcm9tLXZyYWJhdWQtcG5nX2xl YWsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NTQgKzAsMCBAQAotRnJvbSBjMjlkZTdjYzRi ODljODBmN2VlOTEwZjMxOGRmYzFiYzQ2MmQ1NzZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQot RnJvbTogVmluY2VudCBSYWJhdWQgPHZyYWJhdWRAZ29vZ2xlLmNvbT4KLURhdGU6IFdlZCwgMjIg SmFuIDIwMjUgMTI6NDc6MjggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xMF0gTWVyZ2UgcHVs bCByZXF1ZXN0ICMyNjc4MiBmcm9tIHZyYWJhdWQ6cG5nX2xlYWsKLQotRml4IHBvdGVudGlhbCBS RUFEIG1lbW9yeSBhY2Nlc3MgIzI2NzgyCi0KLVRoaXMgZml4ZXMgaHR0cHM6Ly9vc3MtZnV6ei5j b20vdGVzdGNhc2UtZGV0YWlsLzQ5MjM2NzE4ODEyNTI4NjQgYW5kIGh0dHBzOi8vb3NzLWZ1enou Y29tL3Rlc3RjYXNlLWRldGFpbC81MDQ4NjUwMTI3OTY2MjA4Ci0KLSMjIyBQdWxsIFJlcXVlc3Qg UmVhZGluZXNzIENoZWNrbGlzdAotCi1TZWUgZGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20v b3BlbmN2L29wZW5jdi93aWtpL0hvd190b19jb250cmlidXRlI21ha2luZy1hLWdvb2QtcHVsbC1y ZXF1ZXN0Ci0KLS0gW3hdIEkgYWdyZWUgdG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdCB1bmRl ciBBcGFjaGUgMiBMaWNlbnNlLgotLSBbeF0gVG8gdGhlIGJlc3Qgb2YgbXkga25vd2xlZGdlLCB0 aGUgcHJvcG9zZWQgcGF0Y2ggaXMgbm90IGJhc2VkIG9uIGEgY29kZSB1bmRlciBHUEwgb3IgYW5v dGhlciBsaWNlbnNlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggT3BlbkNWCi0tIFt4XSBUaGUg UFIgaXMgcHJvcG9zZWQgdG8gdGhlIHByb3BlciBicmFuY2gKLS0gW3hdIFRoZXJlIGlzIGEgcmVm ZXJlbmNlIHRvIHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0IGFuZCByZWxhdGVkIHdvcmsKLS0gWyBd IFRoZXJlIGlzIGFjY3VyYWN5IHRlc3QsIHBlcmZvcm1hbmNlIHRlc3QgYW5kIHRlc3QgZGF0YSBp biBvcGVuY3ZfZXh0cmEgcmVwb3NpdG9yeSwgaWYgYXBwbGljYWJsZQotICAgICAgUGF0Y2ggdG8g b3BlbmN2X2V4dHJhIGhhcyB0aGUgc2FtZSBicmFuY2ggbmFtZS4KLS0gWyBdIFRoZSBmZWF0dXJl IGlzIHdlbGwgZG9jdW1lbnRlZCBhbmQgc2FtcGxlIGNvZGUgY2FuIGJlIGJ1aWx0IHdpdGggdGhl IHByb2plY3QgQ01ha2UKLS0tLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3Bw IHwgMzk0ICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9z cmMvZ3JmbXRfcG5nLmhwcCB8ICA1MyArLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMDYgaW5zZXJ0 aW9ucygrKSwgMjQxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2Rl Y3Mvc3JjL2dyZm10X3BuZy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNw cAotaW5kZXggMWVjYzAxZjE3Zi4uMTA1Mjg4YzVlNSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3Jm bXRfcG5nLmNwcAotQEAgLTE5OCw2ICsxOTgsNyBAQCBQbmdEZWNvZGVyOjpQbmdEZWNvZGVyKCkK LSAKLSBQbmdEZWNvZGVyOjp+UG5nRGVjb2RlcigpCi0gewotKyAgICBDbGVhclBuZ1B0cigpOwot ICAgICBpZiggbV9mICkKLSAgICAgewotICAgICAgICAgZmNsb3NlKCBtX2YgKTsKLUBAIC0yMDUs NiArMjA2LDI2IEBAIFBuZ0RlY29kZXI6On5QbmdEZWNvZGVyKCkKLSAgICAgfQotIH0KLSAKLSti b29sIFBuZ0RlY29kZXI6OkluaXRQbmdQdHIoKSB7Ci0rICAgIENsZWFyUG5nUHRyKCk7Ci0rCi0r ICAgIG1fcG5nX3B0ciA9IHBuZ19jcmVhdGVfcmVhZF9zdHJ1Y3QoUE5HX0xJQlBOR19WRVJfU1RS SU5HLCAwLCAwLCAwKTsKLSsgICAgaWYgKCFtX3BuZ19wdHIpCi0rICAgICAgICByZXR1cm4gZmFs c2U7Ci0rCi0rICAgIG1faW5mb19wdHIgPSBwbmdfY3JlYXRlX2luZm9fc3RydWN0KG1fcG5nX3B0 cik7Ci0rICAgIG1fZW5kX2luZm8gPSBwbmdfY3JlYXRlX2luZm9fc3RydWN0KG1fcG5nX3B0cik7 Ci0rICAgIHJldHVybiAobV9pbmZvX3B0ciAmJiBtX2VuZF9pbmZvKTsKLSt9Ci0rCi0rdm9pZCBQ bmdEZWNvZGVyOjpDbGVhclBuZ1B0cigpIHsKLSsgICAgaWYgKG1fcG5nX3B0cikKLSsgICAgICAg IHBuZ19kZXN0cm95X3JlYWRfc3RydWN0KCZtX3BuZ19wdHIsICZtX2luZm9fcHRyLCAmbV9lbmRf aW5mbyk7Ci0rICAgIG1fcG5nX3B0ciA9IG51bGxwdHI7Ci0rICAgIG1faW5mb19wdHIgPSBudWxs cHRyOwotKyAgICBtX2VuZF9pbmZvID0gbnVsbHB0cjsKLSt9Ci0rCi0gSW1hZ2VEZWNvZGVyIFBu Z0RlY29kZXI6Om5ld0RlY29kZXIoKSBjb25zdAotIHsKLSAgICAgcmV0dXJuIG1ha2VQdHI8UG5n RGVjb2Rlcj4oKTsKLUBAIC0yMjcsMTY3ICsyNDgsMTY0IEBAIHZvaWQgIFBuZ0RlY29kZXI6OnJl YWREYXRhRnJvbUJ1Ziggdm9pZCogX3BuZ19wdHIsIHVuc2lnbmVkIGNoYXIqIGRzdCwgc2l6ZV90 IHNpCi0gCi0gYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCi0gewotLSAgICB2b2xhdGls ZSBib29sIHJlc3VsdCA9IGZhbHNlOwotKyAgICAvLyBEZWNsYXJlIGR5bmFtaWMgdmFyaWFibGVz IGJlZm9yZSBhIHBvdGVudGlhbCBsb25nam1wLgotKyAgICBDaHVuayBjaHVuazsKLSsKLSsgICAg aWYgKCFJbml0UG5nUHRyKCkpCi0rICAgICAgICByZXR1cm4gZmFsc2U7Ci0rCi0rICAgIGlmIChz ZXRqbXAocG5nX2ptcGJ1ZihtX3BuZ19wdHIpKSkKLSsgICAgICAgIHJldHVybiBmYWxzZTsKLSAK LS0gICAgUG5nUHRycyBwbmdfcHRyczsKLS0gICAgcG5nX3N0cnVjdHAgcG5nX3B0ciA9IHBuZ19w dHJzLmdldFBuZygpOwotLSAgICBwbmdfaW5mb3AgaW5mb19wdHIgPSBwbmdfcHRycy5nZXRJbmZv KCk7Ci0tICAgIHBuZ19pbmZvcCBlbmRfaW5mbyA9IHBuZ19wdHJzLmdldEVuZEluZm8oKTsKLSsg ICAgbV9idWZfcG9zID0gMDsKLSsgICAgdW5zaWduZWQgY2hhciBzaWdbOF07Ci0rICAgIHVpbnQz Ml90IGlkID0gMDsKLSAKLS0gICAgaWYoIHBuZ19wdHIgJiYgaW5mb19wdHIgJiYgZW5kX2luZm8g KQotKyAgICBpZiggIW1fYnVmLmVtcHR5KCkgKQotKyAgICAgICAgcG5nX3NldF9yZWFkX2ZuKG1f cG5nX3B0ciwgdGhpcywgKHBuZ19yd19wdHIpcmVhZERhdGFGcm9tQnVmICk7Ci0rICAgIGVsc2UK LSAgICAgewotLSAgICAgICAgbV9idWZfcG9zID0gMDsKLS0gICAgICAgIGlmKCBzZXRqbXAoIHBu Z19qbXBidWYoIHBuZ19wdHIgKSApID09IDAgKQotKyAgICAgICAgbV9mID0gZm9wZW4obV9maWxl bmFtZS5jX3N0cigpLCAicmIiKTsKLSsgICAgICAgIGlmICghbV9mKQotICAgICAgICAgewotLSAg ICAgICAgICAgIHVuc2lnbmVkIGNoYXIgc2lnWzhdOwotLSAgICAgICAgICAgIHVpbnQzMl90IGlk ID0gMDsKLS0gICAgICAgICAgICBDaHVuayBjaHVuazsKLSsgICAgICAgICAgICByZXR1cm4gZmFs c2U7Ci0rICAgICAgICB9Ci0rICAgICAgICBwbmdfaW5pdF9pbyhtX3BuZ19wdHIsIG1fZik7Ci0r ICAgIH0KLSAKLS0gICAgICAgICAgICBpZiggIW1fYnVmLmVtcHR5KCkgKQotLSAgICAgICAgICAg ICAgICBwbmdfc2V0X3JlYWRfZm4ocG5nX3B0ciwgdGhpcywgKHBuZ19yd19wdHIpcmVhZERhdGFG cm9tQnVmICk7Ci0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAg ICAgICAgbV9mID0gZm9wZW4obV9maWxlbmFtZS5jX3N0cigpLCAicmIiKTsKLS0gICAgICAgICAg ICAgICAgaWYgKCFtX2YpCi0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAg IHJldHVybiBmYWxzZTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICBwbmdf aW5pdF9pbyhwbmdfcHRyLCBtX2YpOwotLSAgICAgICAgICAgIH0KLSsgICAgLy8gUmVhZCBQTkcg aGVhZGVyOiAxMzcgODAgNzggNzEgMTMgMTAgMjYgMTAKLSsgICAgaWYgKCFyZWFkX2Zyb21faW8o JnNpZywgOCkpCi0rICAgICAgICByZXR1cm4gZmFsc2U7Ci0gCi0tICAgICAgICAgICAgLy8gUmVh ZCBQTkcgaGVhZGVyOiAxMzcgODAgNzggNzEgMTMgMTAgMjYgMTAKLS0gICAgICAgICAgICBpZiAo IXJlYWRfZnJvbV9pbygmc2lnLCA4KSkKLS0gICAgICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwot KyAgICBpZCA9IHJlYWRfY2h1bmsobV9jaHVua0lIRFIpOwotKyAgICAvLyA4PUhEUitzaXplLCAx Mz1zaXplIG9mIElIRFIgY2h1bmssIDQ9Q1JDCi0rICAgIC8vIGh0dHA6Ly93d3cubGlicG5nLm9y Zy9wdWIvcG5nL3NwZWMvMS4yL1BORy1DaHVua3MuaHRtbCNDLklIRFIKLSsgICAgaWYgKCEoaWQg PT0gaWRfSUhEUiAmJiBtX2NodW5rSUhEUi5wLnNpemUoKSA9PSA4ICsgMTMgKyA0KSkKLSsgICAg ewotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICB9Ci0gCi0tICAgICAgICAgICAgaWQgPSBy ZWFkX2NodW5rKG1fY2h1bmtJSERSKTsKLS0gICAgICAgICAgICAvLyA4PUhEUitzaXplLCAxMz1z aXplIG9mIElIRFIgY2h1bmssIDQ9Q1JDCi0tICAgICAgICAgICAgLy8gaHR0cDovL3d3dy5saWJw bmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuSUhEUgotLSAgICAgICAg ICAgIGlmICghKGlkID09IGlkX0lIRFIgJiYgbV9jaHVua0lIRFIucC5zaXplKCkgPT0gOCArIDEz ICsgNCkpCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0t ICAgICAgICAgICAgfQotKyAgICBtX2lzX2ZjVExfbG9hZGVkID0gZmFsc2U7Ci0rICAgIHdoaWxl ICh0cnVlKQotKyAgICB7Ci0rICAgICAgICBpZCA9IHJlYWRfY2h1bmsoY2h1bmspOwotIAotLSAg ICAgICAgICAgIHdoaWxlICh0cnVlKQotLSAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAg bV9pc19mY1RMX2xvYWRlZCA9IGZhbHNlOwotLSAgICAgICAgICAgICAgICBpZCA9IHJlYWRfY2h1 bmsoY2h1bmspOwotKyAgICAgICAgaWYgKCFpZCB8fCAobV9mICYmIGZlb2YobV9mKSkgfHwgKCFt X2J1Zi5lbXB0eSgpICYmIG1fYnVmX3BvcyA+IG1fYnVmLnRvdGFsKCkpKQotKyAgICAgICAgewot KyAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgIH0KLSAKLS0gICAgICAgICAgICAg ICAgaWYgKCFpZCB8fCAobV9mICYmIGZlb2YobV9mKSkgfHwgKCFtX2J1Zi5lbXB0eSgpICYmIG1f YnVmX3BvcyA+IG1fYnVmLnRvdGFsKCkpKQotLSAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAg ICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0tICAgICAgICAgICAgICAgIH0KLSsgICAgICAgIGlm IChpZCA9PSBpZF9JREFUKQotKyAgICAgICAgewotKyAgICAgICAgICAgIGlmIChtX2YpCi0rICAg ICAgICAgICAgICAgIGZzZWVrKG1fZiwgMCwgU0VFS19TRVQpOwotKyAgICAgICAgICAgIGVsc2UK LSsgICAgICAgICAgICAgICAgbV9idWZfcG9zID0gMDsKLSsgICAgICAgICAgICBicmVhazsKLSsg ICAgICAgIH0KLSAKLS0gICAgICAgICAgICAgICAgaWYgKGlkID09IGlkX0lEQVQpCi0tICAgICAg ICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAgICAgIGlmIChtX2YpCi0tICAgICAgICAgICAg ICAgICAgICAgICAgZnNlZWsobV9mLCAwLCBTRUVLX1NFVCk7Ci0tICAgICAgICAgICAgICAgICAg ICBlbHNlCi0tICAgICAgICAgICAgICAgICAgICAgICAgbV9idWZfcG9zID0gMDsKLS0gICAgICAg ICAgICAgICAgICAgIGJyZWFrOwotLSAgICAgICAgICAgICAgICB9Ci0rICAgICAgICBpZiAoaWQg PT0gaWRfYWNUTCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAvLyA4PUhEUitzaXplLCA4PXNp emUgb2YgYWNUTCBjaHVuaywgND1DUkMKLSsgICAgICAgICAgICAvLyBodHRwczovL3dpa2kubW96 aWxsYS5vcmcvQVBOR19TcGVjaWZpY2F0aW9uIyU2MGFjVEwlNjA6X1RoZV9BbmltYXRpb25fQ29u dHJvbF9DaHVuawotKyAgICAgICAgICAgIGlmIChjaHVuay5wLnNpemUoKSAhPSA4ICsgOCArIDQp Ci0rICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLSsgICAgICAgICAgICBtX2FuaW1hdGlv bi5sb29wX2NvdW50ID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzEyXSk7Ci0gCi0tICAgICAg ICAgICAgICAgIGlmIChpZCA9PSBpZF9hY1RMKQotLSAgICAgICAgICAgICAgICB7Ci0tICAgICAg ICAgICAgICAgICAgICAvLyA4PUhEUitzaXplLCA4PXNpemUgb2YgYWNUTCBjaHVuaywgND1DUkMK LS0gICAgICAgICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9BUE5HX1Nw ZWNpZmljYXRpb24jJTYwYWNUTCU2MDpfVGhlX0FuaW1hdGlvbl9Db250cm9sX0NodW5rCi0tICAg ICAgICAgICAgICAgICAgICBpZiAoY2h1bmsucC5zaXplKCkgIT0gOCArIDggKyA0KQotLSAgICAg ICAgICAgICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKLS0gICAgICAgICAgICAgICAgICAgIG1f YW5pbWF0aW9uLmxvb3BfY291bnQgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBbMTJdKTsKLS0K LS0gICAgICAgICAgICAgICAgICAgIG1fZnJhbWVfY291bnQgPSBwbmdfZ2V0X3VpbnRfMzIoJmNo dW5rLnBbOF0pOwotLSAgICAgICAgICAgICAgICAgICAgaWYgKG1fZnJhbWVfY291bnQgPT0gMCkK LS0gICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gZmFsc2U7Ci0tICAgICAgICAgICAgICAg IH0KLSsgICAgICAgICAgICBtX2ZyYW1lX2NvdW50ID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5w WzhdKTsKLSsgICAgICAgICAgICBpZiAobV9mcmFtZV9jb3VudCA9PSAwKQotKyAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Ci0rICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgICAgIGlmIChp ZCA9PSBpZF9mY1RMKQotLSAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICAv LyA4PUhEUitzaXplLCAyNj1zaXplIG9mIGZjVEwgY2h1bmssIDQ9Q1JDCi0tICAgICAgICAgICAg ICAgICAgICAvLyBodHRwczovL3dpa2kubW96aWxsYS5vcmcvQVBOR19TcGVjaWZpY2F0aW9uIyU2 MGZjVEwlNjA6X1RoZV9GcmFtZV9Db250cm9sX0NodW5rCi0tICAgICAgICAgICAgICAgICAgICBp ZiAoY2h1bmsucC5zaXplKCkgIT0gOCArIDI2ICsgNCkKLS0gICAgICAgICAgICAgICAgICAgICAg ICByZXR1cm4gZmFsc2U7Ci0tICAgICAgICAgICAgICAgICAgICBtX2lzX2ZjVExfbG9hZGVkID0g dHJ1ZTsKLS0gICAgICAgICAgICAgICAgICAgIHcwID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5w WzEyXSk7Ci0tICAgICAgICAgICAgICAgICAgICBoMCA9IHBuZ19nZXRfdWludF8zMigmY2h1bmsu cFsxNl0pOwotLSAgICAgICAgICAgICAgICAgICAgeDAgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5r LnBbMjBdKTsKLS0gICAgICAgICAgICAgICAgICAgIHkwID0gcG5nX2dldF91aW50XzMyKCZjaHVu ay5wWzI0XSk7Ci0tICAgICAgICAgICAgICAgICAgICBkZWxheV9udW0gPSBwbmdfZ2V0X3VpbnRf MTYoJmNodW5rLnBbMjhdKTsKLS0gICAgICAgICAgICAgICAgICAgIGRlbGF5X2RlbiA9IHBuZ19n ZXRfdWludF8xNigmY2h1bmsucFszMF0pOwotLSAgICAgICAgICAgICAgICAgICAgZG9wID0gY2h1 bmsucFszMl07Ci0tICAgICAgICAgICAgICAgICAgICBib3AgPSBjaHVuay5wWzMzXTsKLS0gICAg ICAgICAgICAgICAgfQotKyAgICAgICAgaWYgKGlkID09IGlkX2ZjVEwpCi0rICAgICAgICB7Ci0r ICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgMjY9c2l6ZSBvZiBmY1RMIGNodW5rLCA0PUNSQwot KyAgICAgICAgICAgIC8vIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9BUE5HX1NwZWNpZmljYXRp b24jJTYwZmNUTCU2MDpfVGhlX0ZyYW1lX0NvbnRyb2xfQ2h1bmsKLSsgICAgICAgICAgICBpZiAo Y2h1bmsucC5zaXplKCkgIT0gOCArIDI2ICsgNCkKLSsgICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOwotKyAgICAgICAgICAgIG1faXNfZmNUTF9sb2FkZWQgPSB0cnVlOwotKyAgICAgICAgICAg IHcwID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzEyXSk7Ci0rICAgICAgICAgICAgaDAgPSBw bmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBbMTZdKTsKLSsgICAgICAgICAgICB4MCA9IHBuZ19nZXRf dWludF8zMigmY2h1bmsucFsyMF0pOwotKyAgICAgICAgICAgIHkwID0gcG5nX2dldF91aW50XzMy KCZjaHVuay5wWzI0XSk7Ci0rICAgICAgICAgICAgZGVsYXlfbnVtID0gcG5nX2dldF91aW50XzE2 KCZjaHVuay5wWzI4XSk7Ci0rICAgICAgICAgICAgZGVsYXlfZGVuID0gcG5nX2dldF91aW50XzE2 KCZjaHVuay5wWzMwXSk7Ci0rICAgICAgICAgICAgZG9wID0gY2h1bmsucFszMl07Ci0rICAgICAg ICAgICAgYm9wID0gY2h1bmsucFszM107Ci0rICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgICAg IGlmIChpZCA9PSBpZF9iS0dEKQotLSAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAg ICAgICAvLyA4PUhEUitzaXplLCA/Pz1zaXplIG9mIGJLR0QgY2h1bmssIDQ9Q1JDCi0tICAgICAg ICAgICAgICAgICAgICAvLyBUaGUgc3BlYyBpcyBhY3R1YWxseSBtb3JlIGNvbXBsZXg6IGh0dHA6 Ly93d3cubGlicG5nLm9yZy9wdWIvcG5nL3NwZWMvMS4yL1BORy1DaHVua3MuaHRtbCNDLmJLR0QK LS0gICAgICAgICAgICAgICAgICAgIC8vIFRPRE86IHdlIG9ubHkgY2hlY2sgdGhhdCA0IGJ5dGVz IGNhbiBiZSByZWFkIGZyb20gJmNodW5rLnBbOF0uIEZpeC4KLS0gICAgICAgICAgICAgICAgICAg IGlmIChjaHVuay5wLnNpemUoKSA8IDggKyA0KQotLSAgICAgICAgICAgICAgICAgICAgICAgIHJl dHVybiBmYWxzZTsKLS0gICAgICAgICAgICAgICAgICAgIGludCBiZ2NvbG9yID0gcG5nX2dldF91 aW50XzMyKCZjaHVuay5wWzhdKTsKLS0gICAgICAgICAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJn Y29sb3JbM10gPSAoYmdjb2xvciA+PiAyNCkgJiAweEZGOwotLSAgICAgICAgICAgICAgICAgICAg bV9hbmltYXRpb24uYmdjb2xvclsyXSA9IChiZ2NvbG9yID4+IDE2KSAmIDB4RkY7Ci0tICAgICAg ICAgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzFdID0gKGJnY29sb3IgPj4gOCkgJiAw eEZGOwotLSAgICAgICAgICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclswXSA9IGJnY29s b3IgJiAweEZGOwotLSAgICAgICAgICAgICAgICB9Ci0rICAgICAgICBpZiAoaWQgPT0gaWRfYktH RCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgICAvLyA4PUhEUitzaXplLCA/Pz1zaXplIG9mIGJL R0QgY2h1bmssIDQ9Q1JDCi0rICAgICAgICAgICAgLy8gVGhlIHNwZWMgaXMgYWN0dWFsbHkgbW9y ZSBjb21wbGV4OiBodHRwOi8vd3d3LmxpYnBuZy5vcmcvcHViL3BuZy9zcGVjLzEuMi9QTkctQ2h1 bmtzLmh0bWwjQy5iS0dECi0rICAgICAgICAgICAgLy8gVE9ETzogd2Ugb25seSBjaGVjayB0aGF0 IDQgYnl0ZXMgY2FuIGJlIHJlYWQgZnJvbSAmY2h1bmsucFs4XS4gRml4LgotKyAgICAgICAgICAg IGlmIChjaHVuay5wLnNpemUoKSA8IDggKyA0KQotKyAgICAgICAgICAgICAgICByZXR1cm4gZmFs c2U7Ci0rICAgICAgICAgICAgaW50IGJnY29sb3IgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBb OF0pOwotKyAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbM10gPSAoYmdjb2xvciA+PiAy NCkgJiAweEZGOwotKyAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbMl0gPSAoYmdjb2xv ciA+PiAxNikgJiAweEZGOwotKyAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbMV0gPSAo Ymdjb2xvciA+PiA4KSAmIDB4RkY7Ci0rICAgICAgICAgICAgbV9hbmltYXRpb24uYmdjb2xvclsw XSA9IGJnY29sb3IgJiAweEZGOwotKyAgICAgICAgfQotIAotLSAgICAgICAgICAgICAgICBpZiAo aWQgPT0gaWRfUExURSB8fCBpZCA9PSBpZF90Uk5TKQotLSAgICAgICAgICAgICAgICAgICAgbV9j aHVua3NJbmZvLnB1c2hfYmFjayhjaHVuayk7Ci0tICAgICAgICAgICAgfQotKyAgICAgICAgaWYg KGlkID09IGlkX1BMVEUgfHwgaWQgPT0gaWRfdFJOUykKLSsgICAgICAgICAgICBtX2NodW5rc0lu Zm8ucHVzaF9iYWNrKGNodW5rKTsKLSsgICAgfQotIAotLSAgICAgICAgICAgIHBuZ191aW50XzMy IHdkdGgsIGhnaHQ7Ci0tICAgICAgICAgICAgaW50IGJpdF9kZXB0aCwgY29sb3JfdHlwZSwgbnVt X3RyYW5zPTA7Ci0tICAgICAgICAgICAgcG5nX2J5dGVwIHRyYW5zOwotLSAgICAgICAgICAgIHBu Z19jb2xvcl8xNnAgdHJhbnNfdmFsdWVzOwotKyAgICBwbmdfdWludF8zMiB3ZHRoLCBoZ2h0Owot KyAgICBpbnQgYml0X2RlcHRoLCBjb2xvcl90eXBlLCBudW1fdHJhbnM9MDsKLSsgICAgcG5nX2J5 dGVwIHRyYW5zOwotKyAgICBwbmdfY29sb3JfMTZwIHRyYW5zX3ZhbHVlczsKLSAKLS0gICAgICAg ICAgICAvLyBGcmVlIGNodW5rIGluIGNhc2UgcG5nX3JlYWRfaW5mbyB1c2VzIGxvbmdqbXAuCi0t ICAgICAgICAgICAgY2h1bmsucC5jbGVhcigpOwotLSAgICAgICAgICAgIGNodW5rLnAuc2hyaW5r X3RvX2ZpdCgpOwotKyAgICAvLyBGcmVlIGNodW5rIGluIGNhc2UgcG5nX3JlYWRfaW5mbyB1c2Vz IGxvbmdqbXAuCi0rICAgIGNodW5rLnAuY2xlYXIoKTsKLSsgICAgY2h1bmsucC5zaHJpbmtfdG9f Zml0KCk7Ci0gCi0tICAgICAgICAgICAgcG5nX3JlYWRfaW5mbyggcG5nX3B0ciwgaW5mb19wdHIg KTsKLS0gICAgICAgICAgICBwbmdfZ2V0X0lIRFIocG5nX3B0ciwgaW5mb19wdHIsICZ3ZHRoLCAm aGdodCwKLS0gICAgICAgICAgICAgICAgJmJpdF9kZXB0aCwgJmNvbG9yX3R5cGUsIDAsIDAsIDAp OwotKyAgICBwbmdfcmVhZF9pbmZvKCBtX3BuZ19wdHIsIG1faW5mb19wdHIgKTsKLSsgICAgcG5n X2dldF9JSERSKG1fcG5nX3B0ciwgbV9pbmZvX3B0ciwgJndkdGgsICZoZ2h0LAotKyAgICAgICAg JmJpdF9kZXB0aCwgJmNvbG9yX3R5cGUsIDAsIDAsIDApOwotIAotLSAgICAgICAgICAgIG1fd2lk dGggPSAoaW50KXdkdGg7Ci0tICAgICAgICAgICAgbV9oZWlnaHQgPSAoaW50KWhnaHQ7Ci0tICAg ICAgICAgICAgbV9jb2xvcl90eXBlID0gY29sb3JfdHlwZTsKLS0gICAgICAgICAgICBtX2JpdF9k ZXB0aCA9IGJpdF9kZXB0aDsKLSsgICAgbV93aWR0aCA9IChpbnQpd2R0aDsKLSsgICAgbV9oZWln aHQgPSAoaW50KWhnaHQ7Ci0rICAgIG1fY29sb3JfdHlwZSA9IGNvbG9yX3R5cGU7Ci0rICAgIG1f Yml0X2RlcHRoID0gYml0X2RlcHRoOwotIAotLSAgICAgICAgICAgIGlmIChiaXRfZGVwdGggPD0g OCB8fCBiaXRfZGVwdGggPT0gMTYpCi0tICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBz d2l0Y2ggKGNvbG9yX3R5cGUpCi0tICAgICAgICAgICAgICAgIHsKLS0gICAgICAgICAgICAgICAg Y2FzZSBQTkdfQ09MT1JfVFlQRV9SR0I6Ci0tICAgICAgICAgICAgICAgIGNhc2UgUE5HX0NPTE9S X1RZUEVfUEFMRVRURToKLS0gICAgICAgICAgICAgICAgICAgIHBuZ19nZXRfdFJOUyhwbmdfcHRy LCBpbmZvX3B0ciwgJnRyYW5zLCAmbnVtX3RyYW5zLCAmdHJhbnNfdmFsdWVzKTsKLS0gICAgICAg ICAgICAgICAgICAgIGlmIChudW1fdHJhbnMgPiAwKQotLSAgICAgICAgICAgICAgICAgICAgICAg IG1fdHlwZSA9IENWXzhVQzQ7Ci0tICAgICAgICAgICAgICAgICAgICBlbHNlCi0tICAgICAgICAg ICAgICAgICAgICAgICAgbV90eXBlID0gQ1ZfOFVDMzsKLS0gICAgICAgICAgICAgICAgICAgIGJy ZWFrOwotLSAgICAgICAgICAgICAgICBjYXNlIFBOR19DT0xPUl9UWVBFX0dSQVlfQUxQSEE6Ci0t ICAgICAgICAgICAgICAgIGNhc2UgUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBOgotLSAgICAgICAg ICAgICAgICAgICAgbV90eXBlID0gQ1ZfOFVDNDsKLS0gICAgICAgICAgICAgICAgICAgIGJyZWFr OwotLSAgICAgICAgICAgICAgICBkZWZhdWx0OgotLSAgICAgICAgICAgICAgICAgICAgbV90eXBl ID0gQ1ZfOFVDMTsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgICAgICBpZiAoYml0 X2RlcHRoID09IDE2KQotLSAgICAgICAgICAgICAgICAgICAgbV90eXBlID0gQ1ZfTUFLRVRZUEUo Q1ZfMTZVLCBDVl9NQVRfQ04obV90eXBlKSk7Ci0tICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRy dWU7Ci0tICAgICAgICAgICAgfQotLSAgICAgICAgfQotLSAgICB9Ci0rICAgIGlmIChtX2lzX2Zj VExfbG9hZGVkICYmIChpbnQoeDAgKyB3MCkgPiBtX3dpZHRoIHx8IGludCh5MCArIGgwKSA+IG1f aGVpZ2h0IHx8IGRvcCA+IDIgfHwgYm9wID4gMSkpCi0rICAgICAgICByZXR1cm4gZmFsc2U7Ci0g Ci0tICAgIGlmKHJlc3VsdCkKLSsgICAgaWYgKGJpdF9kZXB0aCA8PSA4IHx8IGJpdF9kZXB0aCA9 PSAxNikKLSAgICAgewotLSAgICAgICAgbV9wbmdfcHRycyA9IHN0ZDo6bW92ZShwbmdfcHRycyk7 Ci0rICAgICAgICBzd2l0Y2ggKGNvbG9yX3R5cGUpCi0rICAgICAgICB7Ci0rICAgICAgICBjYXNl IFBOR19DT0xPUl9UWVBFX1JHQjoKLSsgICAgICAgIGNhc2UgUE5HX0NPTE9SX1RZUEVfUEFMRVRU RToKLSsgICAgICAgICAgICBwbmdfZ2V0X3RSTlMobV9wbmdfcHRyLCBtX2luZm9fcHRyLCAmdHJh bnMsICZudW1fdHJhbnMsICZ0cmFuc192YWx1ZXMpOwotKyAgICAgICAgICAgIGlmIChudW1fdHJh bnMgPiAwKQotKyAgICAgICAgICAgICAgICBtX3R5cGUgPSBDVl84VUM0OwotKyAgICAgICAgICAg IGVsc2UKLSsgICAgICAgICAgICAgICAgbV90eXBlID0gQ1ZfOFVDMzsKLSsgICAgICAgICAgICBi cmVhazsKLSsgICAgICAgIGNhc2UgUE5HX0NPTE9SX1RZUEVfR1JBWV9BTFBIQToKLSsgICAgICAg IGNhc2UgUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBOgotKyAgICAgICAgICAgIG1fdHlwZSA9IENW XzhVQzQ7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rICAgICAgICBkZWZhdWx0OgotKyAgICAgICAg ICAgIG1fdHlwZSA9IENWXzhVQzE7Ci0rICAgICAgICB9Ci0rICAgICAgICBpZiAoYml0X2RlcHRo ID09IDE2KQotKyAgICAgICAgICAgIG1fdHlwZSA9IENWX01BS0VUWVBFKENWXzE2VSwgQ1ZfTUFU X0NOKG1fdHlwZSkpOwotICAgICB9Ci0gCi0tICAgIHJldHVybiByZXN1bHQ7Ci0rICAgIHJldHVy biB0cnVlOwotIH0KLSAKLSBib29sICBQbmdEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQot IHsKLSsgICAgLy8gRGVjbGFyZSBkeW5hbWljIHZhcmlhYmxlcyBiZWZvcmUgYSBwb3RlbnRpYWwg bG9uZ2ptcC4KLSsgICAgQXV0b0J1ZmZlcjx1bnNpZ25lZCBjaGFyKj4gX2J1ZmZlcihtX2hlaWdo dCk7Ci0rICAgIHVuc2lnbmVkIGNoYXIqKiBidWZmZXIgPSBfYnVmZmVyLmRhdGEoKTsKLSsgICAg Q2h1bmsgY2h1bms7Ci0rCi0gICAgIGlmIChtX2ZyYW1lX2NvdW50ID4gMSkKLSAgICAgewotICAg ICAgICAgTWF0IG1hdF9jdXIgPSBNYXQ6Onplcm9zKGltZy5yb3dzLCBpbWcuY29scywgbV90eXBl KTsKLUBAIC00MTIsMTMgKzQzMCwxNCBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFkRGF0YSggTWF0 JiBpbWcgKQotIAotICAgICAgICAgZnJhbWVDdXIuc2V0TWF0KG1hdF9jdXIpOwotIAotLSAgICAg ICAgcHJvY2Vzc2luZ19zdGFydCgodm9pZCopJmZyYW1lUmF3LCBtYXRfY3VyKTsKLS0gICAgICAg IHBuZ19zdHJ1Y3RwIHBuZ19wdHIgPSBtX3BuZ19wdHJzLmdldFBuZygpOwotLSAgICAgICAgcG5n X2luZm9wIGluZm9fcHRyID0gbV9wbmdfcHRycy5nZXRJbmZvKCk7Ci0rICAgICAgICBpZiAoIXBy b2Nlc3Npbmdfc3RhcnQoKHZvaWQqKSZmcmFtZVJhdywgbWF0X2N1cikpCi0rICAgICAgICAgICAg cmV0dXJuIGZhbHNlOwotKwotKyAgICAgICAgaWYoc2V0am1wKHBuZ19qbXBidWYobV9wbmdfcHRy KSkpCi0rICAgICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotICAgICAgICAgd2hpbGUgKHRydWUp Ci0gICAgICAgICB7Ci0tICAgICAgICAgICAgQ2h1bmsgY2h1bms7Ci0gICAgICAgICAgICAgaWQg PSByZWFkX2NodW5rKGNodW5rKTsKLSAgICAgICAgICAgICBpZiAoIWlkKQotICAgICAgICAgICAg ICAgICByZXR1cm4gZmFsc2U7Ci1AQCAtNDgyLDE0ICs1MDEsMTQgQEAgYm9vbCAgUG5nRGVjb2Rl cjo6cmVhZERhdGEoIE1hdCYgaW1nICkKLSAgICAgICAgICAgICBlbHNlIGlmIChpZCA9PSBpZF9J REFUKQotICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgbV9pc19JREFUX2xvYWRlZCA9 IHRydWU7Ci0tICAgICAgICAgICAgICAgIHBuZ19wcm9jZXNzX2RhdGEocG5nX3B0ciwgaW5mb19w dHIsIGNodW5rLnAuZGF0YSgpLCBjaHVuay5wLnNpemUoKSk7Ci0rICAgICAgICAgICAgICAgIHBu Z19wcm9jZXNzX2RhdGEobV9wbmdfcHRyLCBtX2luZm9fcHRyLCBjaHVuay5wLmRhdGEoKSwgY2h1 bmsucC5zaXplKCkpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBlbHNlIGlmIChpZCA9 PSBpZF9mZEFUICYmIG1faXNfZmNUTF9sb2FkZWQpCi0gICAgICAgICAgICAgewotICAgICAgICAg ICAgICAgICBtX2lzX0lEQVRfbG9hZGVkID0gdHJ1ZTsKLSAgICAgICAgICAgICAgICAgcG5nX3Nh dmVfdWludF8zMigmY2h1bmsucFs0XSwgc3RhdGljX2Nhc3Q8dWludDMyX3Q+KGNodW5rLnAuc2l6 ZSgpIC0gMTYpKTsKLSAgICAgICAgICAgICAgICAgbWVtY3B5KCZjaHVuay5wWzhdLCAiSURBVCIs IDQpOwotLSAgICAgICAgICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKHBuZ19wdHIsIGluZm9fcHRy LCAmY2h1bmsucFs0XSwgY2h1bmsucC5zaXplKCkgLSA0KTsKLSsgICAgICAgICAgICAgICAgcG5n X3Byb2Nlc3NfZGF0YShtX3BuZ19wdHIsIG1faW5mb19wdHIsICZjaHVuay5wWzRdLCBjaHVuay5w LnNpemUoKSAtIDQpOwotICAgICAgICAgICAgIH0KLSAgICAgICAgICAgICBlbHNlIGlmIChpZCA9 PSBpZF9JRU5EKQotICAgICAgICAgICAgIHsKLUBAIC01MTMsMzAgKzUzMiwyNCBAQCBib29sICBQ bmdEZWNvZGVyOjpyZWFkRGF0YSggTWF0JiBpbWcgKQotICAgICAgICAgICAgICAgICByZXR1cm4g dHJ1ZTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAg ICBwbmdfcHJvY2Vzc19kYXRhKHBuZ19wdHIsIGluZm9fcHRyLCBjaHVuay5wLmRhdGEoKSwgY2h1 bmsucC5zaXplKCkpOwotKyAgICAgICAgICAgICAgICBwbmdfcHJvY2Vzc19kYXRhKG1fcG5nX3B0 ciwgbV9pbmZvX3B0ciwgY2h1bmsucC5kYXRhKCksIGNodW5rLnAuc2l6ZSgpKTsKLSAgICAgICAg IH0KLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgfQotIAotICAgICB2b2xhdGlsZSBib29s IHJlc3VsdCA9IGZhbHNlOwotLSAgICBBdXRvQnVmZmVyPHVuc2lnbmVkIGNoYXIqPiBfYnVmZmVy KG1faGVpZ2h0KTsKLS0gICAgdW5zaWduZWQgY2hhcioqIGJ1ZmZlciA9IF9idWZmZXIuZGF0YSgp OwotICAgICBib29sIGNvbG9yID0gaW1nLmNoYW5uZWxzKCkgPiAxOwotIAotLSAgICBwbmdfc3Ry dWN0cCBwbmdfcHRyID0gbV9wbmdfcHRycy5nZXRQbmcoKTsKLS0gICAgcG5nX2luZm9wIGluZm9f cHRyID0gbV9wbmdfcHRycy5nZXRJbmZvKCk7Ci0tICAgIHBuZ19pbmZvcCBlbmRfaW5mbyA9IG1f cG5nX3B0cnMuZ2V0RW5kSW5mbygpOwotLQotLSAgICBpZiggcG5nX3B0ciAmJiBpbmZvX3B0ciAm JiBlbmRfaW5mbyAmJiBtX3dpZHRoICYmIG1faGVpZ2h0ICkKLSsgICAgaWYoIG1fcG5nX3B0ciAm JiBtX2luZm9fcHRyICYmIG1fZW5kX2luZm8gJiYgbV93aWR0aCAmJiBtX2hlaWdodCApCi0gICAg IHsKLS0gICAgICAgIGlmKCBzZXRqbXAoIHBuZ19qbXBidWYgKCBwbmdfcHRyICkgKSA9PSAwICkK LSsgICAgICAgIGlmKCBzZXRqbXAoIHBuZ19qbXBidWYgKCBtX3BuZ19wdHIgKSApID09IDAgKQot ICAgICAgICAgewotICAgICAgICAgICAgIGludCB5OwotIAotICAgICAgICAgICAgIGlmKCBpbWcu ZGVwdGgoKSA9PSBDVl84VSAmJiBtX2JpdF9kZXB0aCA9PSAxNiApCi0tICAgICAgICAgICAgICAg IHBuZ19zZXRfc3RyaXBfMTYoIHBuZ19wdHIgKTsKLSsgICAgICAgICAgICAgICAgcG5nX3NldF9z dHJpcF8xNiggbV9wbmdfcHRyICk7Ci0gICAgICAgICAgICAgZWxzZSBpZiggIWlzQmlnRW5kaWFu KCkgKQotLSAgICAgICAgICAgICAgICBwbmdfc2V0X3N3YXAoIHBuZ19wdHIgKTsKLSsgICAgICAg ICAgICAgICAgcG5nX3NldF9zd2FwKCBtX3BuZ19wdHIgKTsKLSAKLSAgICAgICAgICAgICBpZihp bWcuY2hhbm5lbHMoKSA8IDQpCi0gICAgICAgICAgICAgewotQEAgLTU0OCw0NiArNTYxLDQ2IEBA IGJvb2wgIFBuZ0RlY29kZXI6OnJlYWREYXRhKCBNYXQmIGltZyApCi0gICAgICAgICAgICAgICAg ICAqIGluZGljYXRlIHRoYXQgaXQgaXMgYSBnb29kIGlkZWEgdG8gYWx3YXlzIGFzayBmb3IKLSAg ICAgICAgICAgICAgICAgICogc3RyaXBwaW5nIGFscGhhLi4gIDE4LjExLjIwMDQgQXhlbCBXYWx0 aGVsbQotICAgICAgICAgICAgICAgICAgKi8KLS0gICAgICAgICAgICAgICAgIHBuZ19zZXRfc3Ry aXBfYWxwaGEoIHBuZ19wdHIgKTsKLSsgICAgICAgICAgICAgICAgIHBuZ19zZXRfc3RyaXBfYWxw aGEoIG1fcG5nX3B0ciApOwotICAgICAgICAgICAgIH0gZWxzZQotLSAgICAgICAgICAgICAgICBw bmdfc2V0X3RSTlNfdG9fYWxwaGEoIHBuZ19wdHIgKTsKLSsgICAgICAgICAgICAgICAgcG5nX3Nl dF90Uk5TX3RvX2FscGhhKCBtX3BuZ19wdHIgKTsKLSAKLSAgICAgICAgICAgICBpZiggbV9jb2xv cl90eXBlID09IFBOR19DT0xPUl9UWVBFX1BBTEVUVEUgKQotLSAgICAgICAgICAgICAgICBwbmdf c2V0X3BhbGV0dGVfdG9fcmdiKCBwbmdfcHRyICk7Ci0rICAgICAgICAgICAgICAgIHBuZ19zZXRf cGFsZXR0ZV90b19yZ2IoIG1fcG5nX3B0ciApOwotIAotICAgICAgICAgICAgIGlmKCAobV9jb2xv cl90eXBlICYgUE5HX0NPTE9SX01BU0tfQ09MT1IpID09IDAgJiYgbV9iaXRfZGVwdGggPCA4ICkK LSAjaWYgKFBOR19MSUJQTkdfVkVSX01BSk9SKjEwMDAwICsgUE5HX0xJQlBOR19WRVJfTUlOT1Iq MTAwICsgUE5HX0xJQlBOR19WRVJfUkVMRUFTRSA+PSAxMDIwOSkgfHwgXAotICAgICAoUE5HX0xJ QlBOR19WRVJfTUFKT1IgPT0gMSAmJiBQTkdfTElCUE5HX1ZFUl9NSU5PUiA9PSAwICYmIFBOR19M SUJQTkdfVkVSX1JFTEVBU0UgPj0gMTgpCi0tICAgICAgICAgICAgICAgIHBuZ19zZXRfZXhwYW5k X2dyYXlfMV8yXzRfdG9fOCggcG5nX3B0ciApOwotKyAgICAgICAgICAgICAgICBwbmdfc2V0X2V4 cGFuZF9ncmF5XzFfMl80X3RvXzgoIG1fcG5nX3B0ciApOwotICNlbHNlCi0gICAgICAgICAgICAg ICAgIHBuZ19zZXRfZ3JheV8xXzJfNF90b184KCBwbmdfcHRyICk7Ci0gI2VuZGlmCi0gCi0gICAg ICAgICAgICAgaWYoIChtX2NvbG9yX3R5cGUgJiBQTkdfQ09MT1JfTUFTS19DT0xPUikgJiYgY29s b3IgJiYgIW1fdXNlX3JnYikKLS0gICAgICAgICAgICAgICAgcG5nX3NldF9iZ3IoIHBuZ19wdHIg KTsgLy8gY29udmVydCBSR0IgdG8gQkdSCi0rICAgICAgICAgICAgICAgIHBuZ19zZXRfYmdyKCBt X3BuZ19wdHIgKTsgLy8gY29udmVydCBSR0IgdG8gQkdSCi0gICAgICAgICAgICAgZWxzZSBpZigg Y29sb3IgKQotLSAgICAgICAgICAgICAgICBwbmdfc2V0X2dyYXlfdG9fcmdiKCBwbmdfcHRyICk7 IC8vIEdyYXktPlJHQgotKyAgICAgICAgICAgICAgICBwbmdfc2V0X2dyYXlfdG9fcmdiKCBtX3Bu Z19wdHIgKTsgLy8gR3JheS0+UkdCCi0gICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAg ICBwbmdfc2V0X3JnYl90b19ncmF5KCBwbmdfcHRyLCAxLCAwLjI5OSwgMC41ODcgKTsgLy8gUkdC LT5HcmF5Ci0rICAgICAgICAgICAgICAgIHBuZ19zZXRfcmdiX3RvX2dyYXkoIG1fcG5nX3B0ciwg MSwgMC4yOTksIDAuNTg3ICk7IC8vIFJHQi0+R3JheQotIAotLSAgICAgICAgICAgIHBuZ19zZXRf aW50ZXJsYWNlX2hhbmRsaW5nKCBwbmdfcHRyICk7Ci0tICAgICAgICAgICAgcG5nX3JlYWRfdXBk YXRlX2luZm8oIHBuZ19wdHIsIGluZm9fcHRyICk7Ci0rICAgICAgICAgICAgcG5nX3NldF9pbnRl cmxhY2VfaGFuZGxpbmcoIG1fcG5nX3B0ciApOwotKyAgICAgICAgICAgIHBuZ19yZWFkX3VwZGF0 ZV9pbmZvKCBtX3BuZ19wdHIsIG1faW5mb19wdHIgKTsKLSAKLSAgICAgICAgICAgICBmb3IoIHkg PSAwOyB5IDwgbV9oZWlnaHQ7IHkrKyApCi0gICAgICAgICAgICAgICAgIGJ1ZmZlclt5XSA9IGlt Zy5kYXRhICsgeSppbWcuc3RlcDsKLSAKLS0gICAgICAgICAgICBwbmdfcmVhZF9pbWFnZSggcG5n X3B0ciwgYnVmZmVyICk7Ci0tICAgICAgICAgICAgcG5nX3JlYWRfZW5kKCBwbmdfcHRyLCBlbmRf aW5mbyApOwotKyAgICAgICAgICAgIHBuZ19yZWFkX2ltYWdlKCBtX3BuZ19wdHIsIGJ1ZmZlciAp OwotKyAgICAgICAgICAgIHBuZ19yZWFkX2VuZCggbV9wbmdfcHRyLCBtX2VuZF9pbmZvICk7Ci0g Ci0gI2lmZGVmIFBOR19lWElmX1NVUFBPUlRFRAotICAgICAgICAgICAgIHBuZ191aW50XzMyIG51 bV9leGlmID0gMDsKLSAgICAgICAgICAgICBwbmdfYnl0ZXAgZXhpZiA9IDA7Ci0gCi0gICAgICAg ICAgICAgLy8gRXhpZiBpbmZvIGNvdWxkIGJlIGluIGluZm9fcHRyIChpbnRyb19pbmZvKSBvciBl bmRfaW5mbyBwZXIgc3BlY2lmaWNhdGlvbgotLSAgICAgICAgICAgIGlmKCBwbmdfZ2V0X3ZhbGlk KHBuZ19wdHIsIGluZm9fcHRyLCBQTkdfSU5GT19lWElmKSApCi0tICAgICAgICAgICAgICAgIHBu Z19nZXRfZVhJZl8xKHBuZ19wdHIsIGluZm9fcHRyLCAmbnVtX2V4aWYsICZleGlmKTsKLS0gICAg ICAgICAgICBlbHNlIGlmKCBwbmdfZ2V0X3ZhbGlkKHBuZ19wdHIsIGVuZF9pbmZvLCBQTkdfSU5G T19lWElmKSApCi0tICAgICAgICAgICAgICAgIHBuZ19nZXRfZVhJZl8xKHBuZ19wdHIsIGVuZF9p bmZvLCAmbnVtX2V4aWYsICZleGlmKTsKLSsgICAgICAgICAgICBpZiggcG5nX2dldF92YWxpZCht X3BuZ19wdHIsIG1faW5mb19wdHIsIFBOR19JTkZPX2VYSWYpICkKLSsgICAgICAgICAgICAgICAg cG5nX2dldF9lWElmXzEobV9wbmdfcHRyLCBtX2luZm9fcHRyLCAmbnVtX2V4aWYsICZleGlmKTsK LSsgICAgICAgICAgICBlbHNlIGlmKCBwbmdfZ2V0X3ZhbGlkKG1fcG5nX3B0ciwgbV9lbmRfaW5m bywgUE5HX0lORk9fZVhJZikgKQotKyAgICAgICAgICAgICAgICBwbmdfZ2V0X2VYSWZfMShtX3Bu Z19wdHIsIG1fZW5kX2luZm8sICZudW1fZXhpZiwgJmV4aWYpOwotIAotICAgICAgICAgICAgIGlm KCBleGlmICYmIG51bV9leGlmID4gMCApCi0gICAgICAgICAgICAgewotQEAgLTcxOSw0MiArNzMy LDM0IEBAIHVpbnQzMl90IFBuZ0RlY29kZXI6OnJlYWRfY2h1bmsoQ2h1bmsmIGNodW5rKQotIAot IGJvb2wgUG5nRGVjb2Rlcjo6cHJvY2Vzc2luZ19zdGFydCh2b2lkKiBmcmFtZV9wdHIsIGNvbnN0 IE1hdCYgaW1nKQotIHsKLS0gICAgc3RhdGljIHVpbnQ4X3QgaGVhZGVyWzhdID0geyAxMzcsIDgw LCA3OCwgNzEsIDEzLCAxMCwgMjYsIDEwIH07Ci0tCi0tICAgIFBuZ1B0cnMgcG5nX3B0cnM7Ci0t ICAgIHBuZ19zdHJ1Y3RwIHBuZ19wdHIgPSBwbmdfcHRycy5nZXRQbmcoKTsKLS0gICAgcG5nX2lu Zm9wIGluZm9fcHRyID0gcG5nX3B0cnMuZ2V0SW5mbygpOwotLQotLSAgICBpZiAoIXBuZ19wdHIg fHwgIWluZm9fcHRyKSB7Ci0rICAgIGlmICghSW5pdFBuZ1B0cigpKQotICAgICAgICAgcmV0dXJu IGZhbHNlOwotLSAgICB9Ci0gCi0tICAgIGlmIChzZXRqbXAocG5nX2ptcGJ1ZihwbmdfcHRyKSkp Ci0tICAgIHsKLSsgICAgaWYgKHNldGptcChwbmdfam1wYnVmKG1fcG5nX3B0cikpKQotICAgICAg ICAgcmV0dXJuIGZhbHNlOwotLSAgICB9Ci0gCi0tICAgIG1fcG5nX3B0cnMgPSBzdGQ6Om1vdmUo cG5nX3B0cnMpOwotLSAgICBwbmdfc2V0X2NyY19hY3Rpb24ocG5nX3B0ciwgUE5HX0NSQ19RVUlF VF9VU0UsIFBOR19DUkNfUVVJRVRfVVNFKTsKLS0gICAgcG5nX3NldF9wcm9ncmVzc2l2ZV9yZWFk X2ZuKHBuZ19wdHIsIGZyYW1lX3B0ciwgKHBuZ19wcm9ncmVzc2l2ZV9pbmZvX3B0cilpbmZvX2Zu LCByb3dfZm4sIE5VTEwpOwotKyAgICBzdGF0aWMgdWludDhfdCBoZWFkZXJbOF0gPSB7IDEzNywg ODAsIDc4LCA3MSwgMTMsIDEwLCAyNiwgMTAgfTsKLSsKLSsgICAgcG5nX3NldF9jcmNfYWN0aW9u KG1fcG5nX3B0ciwgUE5HX0NSQ19RVUlFVF9VU0UsIFBOR19DUkNfUVVJRVRfVVNFKTsKLSsgICAg cG5nX3NldF9wcm9ncmVzc2l2ZV9yZWFkX2ZuKG1fcG5nX3B0ciwgZnJhbWVfcHRyLCAocG5nX3By b2dyZXNzaXZlX2luZm9fcHRyKWluZm9fZm4sIHJvd19mbiwgTlVMTCk7Ci0gCi0gICAgIGlmIChp bWcuY2hhbm5lbHMoKSA8IDQpCi0tICAgICAgICBwbmdfc2V0X3N0cmlwX2FscGhhKHBuZ19wdHIp OwotKyAgICAgICAgcG5nX3NldF9zdHJpcF9hbHBoYShtX3BuZ19wdHIpOwotICAgICBlbHNlCi0t ICAgICAgICBwbmdfc2V0X3RSTlNfdG9fYWxwaGEocG5nX3B0cik7Ci0rICAgICAgICBwbmdfc2V0 X3RSTlNfdG9fYWxwaGEobV9wbmdfcHRyKTsKLSAKLS0gICAgcG5nX3Byb2Nlc3NfZGF0YShwbmdf cHRyLCBpbmZvX3B0ciwgaGVhZGVyLCA4KTsKLS0gICAgcG5nX3Byb2Nlc3NfZGF0YShwbmdfcHRy LCBpbmZvX3B0ciwgbV9jaHVua0lIRFIucC5kYXRhKCksIG1fY2h1bmtJSERSLnAuc2l6ZSgpKTsK LSsgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZ19wdHIsIG1faW5mb19wdHIsIGhlYWRlciwgOCk7 Ci0rICAgIHBuZ19wcm9jZXNzX2RhdGEobV9wbmdfcHRyLCBtX2luZm9fcHRyLCBtX2NodW5rSUhE Ui5wLmRhdGEoKSwgbV9jaHVua0lIRFIucC5zaXplKCkpOwotIAotICAgICBpZiAoKG1fY29sb3Jf dHlwZSAmIFBOR19DT0xPUl9NQVNLX0NPTE9SKSAmJiBpbWcuY2hhbm5lbHMoKSA+IDEgJiYgIW1f dXNlX3JnYikKLS0gICAgICAgIHBuZ19zZXRfYmdyKHBuZ19wdHIpOyAvLyBjb252ZXJ0IFJHQiB0 byBCR1IKLSsgICAgICAgIHBuZ19zZXRfYmdyKG1fcG5nX3B0cik7IC8vIGNvbnZlcnQgUkdCIHRv IEJHUgotICAgICBlbHNlIGlmIChpbWcuY2hhbm5lbHMoKSA+IDEpCi0tICAgICAgICBwbmdfc2V0 X2dyYXlfdG9fcmdiKHBuZ19wdHIpOyAvLyBHcmF5LT5SR0IKLSsgICAgICAgIHBuZ19zZXRfZ3Jh eV90b19yZ2IobV9wbmdfcHRyKTsgLy8gR3JheS0+UkdCCi0gICAgIGVsc2UKLS0gICAgICAgIHBu Z19zZXRfcmdiX3RvX2dyYXkocG5nX3B0ciwgMSwgMC4yOTksIDAuNTg3KTsgLy8gUkdCLT5HcmF5 Ci0rICAgICAgICBwbmdfc2V0X3JnYl90b19ncmF5KG1fcG5nX3B0ciwgMSwgMC4yOTksIDAuNTg3 KTsgLy8gUkdCLT5HcmF5Ci0gCi0gICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbV9jaHVua3NJ bmZvLnNpemUoKTsgaSsrKQotLSAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShwbmdfcHRyLCBpbmZv X3B0ciwgbV9jaHVua3NJbmZvW2ldLnAuZGF0YSgpLCBtX2NodW5rc0luZm9baV0ucC5zaXplKCkp OwotKyAgICAgICAgcG5nX3Byb2Nlc3NfZGF0YShtX3BuZ19wdHIsIG1faW5mb19wdHIsIG1fY2h1 bmtzSW5mb1tpXS5wLmRhdGEoKSwgbV9jaHVua3NJbmZvW2ldLnAuc2l6ZSgpKTsKLSAKLSAgICAg cmV0dXJuIHRydWU7Ci0gfQotQEAgLTc2MywyMiArNzY4LDE3IEBAIGJvb2wgUG5nRGVjb2Rlcjo6 cHJvY2Vzc2luZ19maW5pc2goKQotIHsKLSAgICAgc3RhdGljIHVpbnQ4X3QgZm9vdGVyWzEyXSA9 IHsgMCwgMCwgMCwgMCwgNzMsIDY5LCA3OCwgNjgsIDE3NCwgNjYsIDk2LCAxMzAgfTsKLSAKLS0g ICAgcG5nX3N0cnVjdHAgcG5nX3B0ciA9IG1fcG5nX3B0cnMuZ2V0UG5nKCk7Ci0tICAgIHBuZ19p bmZvcCBpbmZvX3B0ciA9IG1fcG5nX3B0cnMuZ2V0SW5mbygpOwotLQotLSAgICBpZiAoIXBuZ19w dHIpIHsKLS0gICAgICAgIG1fcG5nX3B0cnMuY2xlYXIoKTsKLSsgICAgaWYgKCFtX3BuZ19wdHIp IHsKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAgICAgfQotIAotLSAgICBpZiAoc2V0am1wKHBu Z19qbXBidWYocG5nX3B0cikpKQotKyAgICBpZiAoc2V0am1wKHBuZ19qbXBidWYobV9wbmdfcHRy KSkpCi0gICAgIHsKLS0gICAgICAgIG1fcG5nX3B0cnMuY2xlYXIoKTsKLSAgICAgICAgIHJldHVy biBmYWxzZTsKLSAgICAgfQotIAotLSAgICBwbmdfcHJvY2Vzc19kYXRhKHBuZ19wdHIsIGluZm9f cHRyLCBmb290ZXIsIDEyKTsKLS0gICAgbV9wbmdfcHRycy5jbGVhcigpOwotKyAgICBwbmdfcHJv Y2Vzc19kYXRhKG1fcG5nX3B0ciwgbV9pbmZvX3B0ciwgZm9vdGVyLCAxMik7Ci0rICAgIENsZWFy UG5nUHRyKCk7Ci0gCi0gICAgIHJldHVybiB0cnVlOwotIH0KLWRpZmYgLS1naXQgYS9tb2R1bGVz L2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmhwcCBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZt dF9wbmcuaHBwCi1pbmRleCBkZWMyY2QwYjYxLi41ZGZjODZlZmNjIDEwMDY0NAotLS0tIGEvbW9k dWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5ocHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNz L3NyYy9ncmZtdF9wbmcuaHBwCi1AQCAtMTMwLDU2ICsxMzAsMjEgQEAgcHVibGljOgotIAotICAg ICBJbWFnZURlY29kZXIgbmV3RGVjb2RlcigpIGNvbnN0IENWX09WRVJSSURFOwotIAotLXByb3Rl Y3RlZDoKLStwcml2YXRlOgotICAgICBzdGF0aWMgdm9pZCByZWFkRGF0YUZyb21CdWYodm9pZCog cG5nX3B0ciwgdWNoYXIqIGRzdCwgc2l6ZV90IHNpemUpOwotICAgICBzdGF0aWMgdm9pZCBpbmZv X2ZuKHBuZ19zdHJ1Y3RwIHBuZ19wdHIsIHBuZ19pbmZvcCBpbmZvX3B0cik7Ci0gICAgIHN0YXRp YyB2b2lkIHJvd19mbihwbmdfc3RydWN0cCBwbmdfcHRyLCBwbmdfYnl0ZXAgbmV3X3JvdywgcG5n X3VpbnRfMzIgcm93X251bSwgaW50IHBhc3MpOwotLSAgICBib29sIHByb2Nlc3Npbmdfc3RhcnQo dm9pZCogZnJhbWVfcHRyLCBjb25zdCBNYXQmIGltZyk7Ci0tICAgIGJvb2wgcHJvY2Vzc2luZ19m aW5pc2goKTsKLSsgICAgQ1ZfTk9ESVNDQVJEX1NURCBib29sIHByb2Nlc3Npbmdfc3RhcnQodm9p ZCogZnJhbWVfcHRyLCBjb25zdCBNYXQmIGltZyk7Ci0rICAgIENWX05PRElTQ0FSRF9TVEQgYm9v bCBwcm9jZXNzaW5nX2ZpbmlzaCgpOwotICAgICB2b2lkIGNvbXBvc2VfZnJhbWUoc3RkOjp2ZWN0 b3I8cG5nX2J5dGVwPiYgcm93c19kc3QsIGNvbnN0IHN0ZDo6dmVjdG9yPHBuZ19ieXRlcD4mIHJv d3Nfc3JjLCB1bnNpZ25lZCBjaGFyIGJvcCwgdWludDMyX3QgeCwgdWludDMyX3QgeSwgdWludDMy X3QgdywgdWludDMyX3QgaCwgTWF0JiBpbWcpOwotLSAgICBib29sIHJlYWRfZnJvbV9pbyh2b2lk KiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpOwotKyAgICBDVl9OT0RJU0NBUkRfU1REIGJvb2wg cmVhZF9mcm9tX2lvKHZvaWQqIGJ1ZmZlciwgc2l6ZV90IG51bV9ieXRlcyk7Ci0gICAgIHVpbnQz Ml90ICByZWFkX2NodW5rKENodW5rJiBjaHVuayk7Ci0rICAgIENWX05PRElTQ0FSRF9TVEQgYm9v bCBJbml0UG5nUHRyKCk7Ci0rICAgIHZvaWQgQ2xlYXJQbmdQdHIoKTsKLSAKLS0gICAgc3RydWN0 IFBuZ1B0cnMgewotLSAgICAgICAgcHVibGljOgotLSAgICAgICAgICAgIFBuZ1B0cnMoKSB7Ci0t ICAgICAgICAgICAgICAgIHBuZ19wdHIgPSBwbmdfY3JlYXRlX3JlYWRfc3RydWN0KCBQTkdfTElC UE5HX1ZFUl9TVFJJTkcsIDAsIDAsIDAgKTsKLS0gICAgICAgICAgICAgICAgaWYgKHBuZ19wdHIp IHsKLS0gICAgICAgICAgICAgICAgICAgIGluZm9fcHRyID0gcG5nX2NyZWF0ZV9pbmZvX3N0cnVj dCggcG5nX3B0ciApOwotLSAgICAgICAgICAgICAgICAgICAgZW5kX2luZm8gPSBwbmdfY3JlYXRl X2luZm9fc3RydWN0KCBwbmdfcHRyICk7Ci0tICAgICAgICAgICAgICAgIH0gZWxzZSB7Ci0tICAg ICAgICAgICAgICAgICAgICBpbmZvX3B0ciA9IGVuZF9pbmZvID0gbnVsbHB0cjsKLS0gICAgICAg ICAgICAgICAgfQotLSAgICAgICAgICAgIH0KLS0gICAgICAgICAgICB+UG5nUHRycygpIHsKLS0g ICAgICAgICAgICAgICAgY2xlYXIoKTsKLS0gICAgICAgICAgICB9Ci0tICAgICAgICAgICAgUG5n UHRycyYgb3BlcmF0b3I9KFBuZ1B0cnMmJiBvdGhlcikgewotLSAgICAgICAgICAgICAgICBjbGVh cigpOwotLSAgICAgICAgICAgICAgICBwbmdfcHRyID0gb3RoZXIucG5nX3B0cjsKLS0gICAgICAg ICAgICAgICAgaW5mb19wdHIgPSBvdGhlci5pbmZvX3B0cjsKLS0gICAgICAgICAgICAgICAgZW5k X2luZm8gPSBvdGhlci5lbmRfaW5mbzsKLS0gICAgICAgICAgICAgICAgb3RoZXIucG5nX3B0ciA9 IG51bGxwdHI7Ci0tICAgICAgICAgICAgICAgIG90aGVyLmluZm9fcHRyID0gb3RoZXIuZW5kX2lu Zm8gPSBudWxscHRyOwotLSAgICAgICAgICAgICAgICByZXR1cm4gKnRoaXM7Ci0tICAgICAgICAg ICAgfQotLSAgICAgICAgICAgIHZvaWQgY2xlYXIoKSB7Ci0tICAgICAgICAgICAgICAgIGlmIChw bmdfcHRyKSB7Ci0tICAgICAgICAgICAgICAgICAgICBwbmdfZGVzdHJveV9yZWFkX3N0cnVjdCgm cG5nX3B0ciwgJmluZm9fcHRyLCAmZW5kX2luZm8pOwotLSAgICAgICAgICAgICAgICAgICAgcG5n X3B0ciA9IG51bGxwdHI7Ci0tICAgICAgICAgICAgICAgICAgICBpbmZvX3B0ciA9IGVuZF9pbmZv ID0gbnVsbHB0cjsKLS0gICAgICAgICAgICAgICAgfQotLSAgICAgICAgICAgIH0KLS0gICAgICAg ICAgICBwbmdfc3RydWN0cCBnZXRQbmcoKSBjb25zdCB7IHJldHVybiBwbmdfcHRyOyB9Ci0tICAg ICAgICAgICAgcG5nX2luZm9wIGdldEluZm8oKSBjb25zdCB7IHJldHVybiBpbmZvX3B0cjsgfQot LSAgICAgICAgICAgIHBuZ19pbmZvcCBnZXRFbmRJbmZvKCkgY29uc3QgeyByZXR1cm4gZW5kX2lu Zm87IH0KLS0gICAgICAgIHByaXZhdGU6Ci0tICAgICAgICAgICAgcG5nX3N0cnVjdHAgcG5nX3B0 cjsgLy8gcG9pbnRlciB0byBkZWNvbXByZXNzaW9uIHN0cnVjdHVyZQotLSAgICAgICAgICAgIHBu Z19pbmZvcCBpbmZvX3B0cjsgLy8gcG9pbnRlciB0byBpbWFnZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1 cmUKLS0gICAgICAgICAgICBwbmdfaW5mb3AgZW5kX2luZm87IC8vIHBvaW50ZXIgdG8gb25lIG1v cmUgaW1hZ2UgaW5mb3JtYXRpb24gc3RydWN0dXJlCi0tICAgIH07Ci0tCi0tICAgIFBuZ1B0cnMg bV9wbmdfcHRyczsKLSsgICAgcG5nX3N0cnVjdHAgbV9wbmdfcHRyID0gbnVsbHB0cjsgLy8gcG9p bnRlciB0byBkZWNvbXByZXNzaW9uIHN0cnVjdHVyZQotKyAgICBwbmdfaW5mb3AgbV9pbmZvX3B0 ciA9IG51bGxwdHI7IC8vIHBvaW50ZXIgdG8gaW1hZ2UgaW5mb3JtYXRpb24gc3RydWN0dXJlCi0r ICAgIHBuZ19pbmZvcCBtX2VuZF9pbmZvID0gbnVsbHB0cjsgLy8gcG9pbnRlciB0byBvbmUgbW9y ZSBpbWFnZSBpbmZvcm1hdGlvbiBzdHJ1Y3R1cmUKLSAgICAgaW50ICAgbV9iaXRfZGVwdGg7Ci0g ICAgIEZJTEUqIG1fZjsKLSAgICAgaW50ICAgbV9jb2xvcl90eXBlOwotLS0gCi0yLjQ4LjEKLQoK ZGlmZiAtLWdpdCBhLzAwMDQtTW92ZS10aGUtY2hlY2tzLXRvLXJlYWRfY2h1bmsucGF0Y2ggYi8w MDA0LU1vdmUtdGhlLWNoZWNrcy10by1yZWFkX2NodW5rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2Rl IDEwMDY0NAppbmRleCA1MTM3ODcyLi4wMDAwMDAwCi0tLSBhLzAwMDQtTW92ZS10aGUtY2hlY2tz LXRvLXJlYWRfY2h1bmsucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjEgKzAsMCBAQAotRnJv bSBlYmExYTg5NTVmOWQ3ZjhhYThjNmIzZGRlZTQ1NjVlZTQxODUxMzZjIE1vbiBTZXAgMTcgMDA6 MDA6MDAgMjAwMQotRnJvbTogVmluY2VudCBSYWJhdWQgPHZyYWJhdWRAZ29vZ2xlLmNvbT4KLURh dGU6IFRodSwgMjMgSmFuIDIwMjUgMTY6MzA6MzggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8x MF0gTW92ZSB0aGUgY2hlY2tzIHRvIHJlYWRfY2h1bmsuCi0KLU9ubHkgdXNlciBjaHVua3MgbmVl ZCB0byBiZSBjb21wYXJlZCB0byBQTkdfVVNFUl9DSFVOS19NQUxMT0NfTUFYCi0tLS0KLSBtb2R1 bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcCB8IDYwICsrKysrKysrKysrKysrKysrLS0t LS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDI0IGRlbGV0aW9u cygtKQotCi1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAg Yi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAotaW5kZXggMTA1Mjg4YzVlNS4u NjRlZjU2YzhjNSAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcu Y3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAotQEAgLTI3OCwx MiArMjc4LDggQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCi0gICAgICAgICByZXR1 cm4gZmFsc2U7Ci0gCi0gICAgIGlkID0gcmVhZF9jaHVuayhtX2NodW5rSUhEUik7Ci0tICAgIC8v IDg9SERSK3NpemUsIDEzPXNpemUgb2YgSUhEUiBjaHVuaywgND1DUkMKLS0gICAgLy8gaHR0cDov L3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuSUhEUgot LSAgICBpZiAoIShpZCA9PSBpZF9JSERSICYmIG1fY2h1bmtJSERSLnAuc2l6ZSgpID09IDggKyAx MyArIDQpKQotLSAgICB7Ci0rICAgIGlmIChpZCAhPSBpZF9JSERSKQotICAgICAgICAgcmV0dXJu IGZhbHNlOwotLSAgICB9Ci0gCi0gICAgIG1faXNfZmNUTF9sb2FkZWQgPSBmYWxzZTsKLSAgICAg d2hpbGUgKHRydWUpCi1AQCAtMzA2LDEwICszMDIsNyBAQCBib29sICBQbmdEZWNvZGVyOjpyZWFk SGVhZGVyKCkKLSAKLSAgICAgICAgIGlmIChpZCA9PSBpZF9hY1RMKQotICAgICAgICAgewotLSAg ICAgICAgICAgIC8vIDg9SERSK3NpemUsIDg9c2l6ZSBvZiBhY1RMIGNodW5rLCA0PUNSQwotICAg ICAgICAgICAgIC8vIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9BUE5HX1NwZWNpZmljYXRpb24j JTYwYWNUTCU2MDpfVGhlX0FuaW1hdGlvbl9Db250cm9sX0NodW5rCi0tICAgICAgICAgICAgaWYg KGNodW5rLnAuc2l6ZSgpICE9IDggKyA4ICsgNCkKLS0gICAgICAgICAgICAgICAgcmV0dXJuIGZh bHNlOwotICAgICAgICAgICAgIG1fYW5pbWF0aW9uLmxvb3BfY291bnQgPSBwbmdfZ2V0X3VpbnRf MzIoJmNodW5rLnBbMTJdKTsKLSAKLSAgICAgICAgICAgICBtX2ZyYW1lX2NvdW50ID0gcG5nX2dl dF91aW50XzMyKCZjaHVuay5wWzhdKTsKLUBAIC0zMTksMTAgKzMxMiw3IEBAIGJvb2wgIFBuZ0Rl Y29kZXI6OnJlYWRIZWFkZXIoKQotIAotICAgICAgICAgaWYgKGlkID09IGlkX2ZjVEwpCi0gICAg ICAgICB7Ci0tICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgMjY9c2l6ZSBvZiBmY1RMIGNodW5r LCA0PUNSQwotICAgICAgICAgICAgIC8vIGh0dHBzOi8vd2lraS5tb3ppbGxhLm9yZy9BUE5HX1Nw ZWNpZmljYXRpb24jJTYwZmNUTCU2MDpfVGhlX0ZyYW1lX0NvbnRyb2xfQ2h1bmsKLS0gICAgICAg ICAgICBpZiAoY2h1bmsucC5zaXplKCkgIT0gOCArIDI2ICsgNCkKLS0gICAgICAgICAgICAgICAg cmV0dXJuIGZhbHNlOwotICAgICAgICAgICAgIG1faXNfZmNUTF9sb2FkZWQgPSB0cnVlOwotICAg ICAgICAgICAgIHcwID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzEyXSk7Ci0gICAgICAgICAg ICAgaDAgPSBwbmdfZ2V0X3VpbnRfMzIoJmNodW5rLnBbMTZdKTsKLUBAIC0zMzYsMTEgKzMyNiw3 IEBAIGJvb2wgIFBuZ0RlY29kZXI6OnJlYWRIZWFkZXIoKQotIAotICAgICAgICAgaWYgKGlkID09 IGlkX2JLR0QpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgPz89c2l6 ZSBvZiBiS0dEIGNodW5rLCA0PUNSQwotICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVh bGx5IG1vcmUgY29tcGxleDogaHR0cDovL3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIv UE5HLUNodW5rcy5odG1sI0MuYktHRAotLSAgICAgICAgICAgIC8vIFRPRE86IHdlIG9ubHkgY2hl Y2sgdGhhdCA0IGJ5dGVzIGNhbiBiZSByZWFkIGZyb20gJmNodW5rLnBbOF0uIEZpeC4KLS0gICAg ICAgICAgICBpZiAoY2h1bmsucC5zaXplKCkgPCA4ICsgNCkKLS0gICAgICAgICAgICAgICAgcmV0 dXJuIGZhbHNlOwotICAgICAgICAgICAgIGludCBiZ2NvbG9yID0gcG5nX2dldF91aW50XzMyKCZj aHVuay5wWzhdKTsKLSAgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzNdID0gKGJnY29s b3IgPj4gMjQpICYgMHhGRjsKLSAgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzJdID0g KGJnY29sb3IgPj4gMTYpICYgMHhGRjsKLUBAIC03MTMsMjAgKzY5OSw0NiBAQCBib29sIFBuZ0Rl Y29kZXI6OnJlYWRfZnJvbV9pbyh2b2lkKiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMpCi0gCi0g dWludDMyX3QgUG5nRGVjb2Rlcjo6cmVhZF9jaHVuayhDaHVuayYgY2h1bmspCi0gewotLSAgICB1 bnNpZ25lZCBjaGFyIGxlbls0XTsKLS0gICAgaWYgKHJlYWRfZnJvbV9pbygmbGVuLCA0KSkKLS0g ICAgewotLSAgICAgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2FzdDxzaXplX3Q+KHBu Z19nZXRfdWludF8zMihsZW4pKSArIDEyOwotKyAgICB1bnNpZ25lZCBjaGFyIHNpemVfaWRbOF07 Ci0rICAgIGlmICghcmVhZF9mcm9tX2lvKCZzaXplX2lkLCA4KSkKLSsgICAgICAgIHJldHVybiAw OwotKyAgICBjb25zdCBzaXplX3Qgc2l6ZSA9IHN0YXRpY19jYXN0PHNpemVfdD4ocG5nX2dldF91 aW50XzMyKHNpemVfaWQpKSArIDEyOwotKwotKyAgICBjb25zdCB1aW50MzJfdCBpZCA9ICoodWlu dDMyX3QqKSgmc2l6ZV9pZFs0XSk7Ci0rICAgIGlmIChpZCA9PSBpZF9JSERSKSB7Ci0rICAgICAg ICAvLyA4PUhEUitzaXplLCAxMz1zaXplIG9mIElIRFIgY2h1bmssIDQ9Q1JDCi0rICAgICAgICAv LyBodHRwOi8vd3d3LmxpYnBuZy5vcmcvcHViL3BuZy9zcGVjLzEuMi9QTkctQ2h1bmtzLmh0bWwj Qy5JSERSCi0rICAgICAgICBpZiAoc2l6ZSAhPSA4ICsgMTMgKyA0KQotKyAgICAgICAgICAgIHJl dHVybiAwOwotKyAgICB9IGVsc2UgaWYgKGlkID09IGlkX2FjVEwpIHsKLSsgICAgICAgIC8vIDg9 SERSK3NpemUsIDg9c2l6ZSBvZiBhY1RMIGNodW5rLCA0PUNSQwotKyAgICAgICAgLy8gaHR0cHM6 Ly93aWtpLm1vemlsbGEub3JnL0FQTkdfU3BlY2lmaWNhdGlvbiMlNjBhY1RMJTYwOl9UaGVfQW5p bWF0aW9uX0NvbnRyb2xfQ2h1bmsKLSsgICAgICAgIGlmIChzaXplICE9IDggKyA4ICsgNCkKLSsg ICAgICAgICAgICByZXR1cm4gMDsKLSsgICAgfSBlbHNlIGlmIChpZCA9PSBpZF9mY1RMKSB7Ci0r ICAgICAgICAvLyA4PUhEUitzaXplLCAyNj1zaXplIG9mIGZjVEwgY2h1bmssIDQ9Q1JDCi0rICAg ICAgICAvLyBodHRwczovL3dpa2kubW96aWxsYS5vcmcvQVBOR19TcGVjaWZpY2F0aW9uIyU2MGZj VEwlNjA6X1RoZV9GcmFtZV9Db250cm9sX0NodW5rCi0rICAgICAgICBpZiAoc2l6ZSAhPSA4ICsg MjYgKyA0KQotKyAgICAgICAgICAgIHJldHVybiAwOwotKyAgICB9IGVsc2UgaWYgKGlkID09IGlk X2JLR0QpIHsKLSsgICAgICAgIC8vIDg9SERSK3NpemUsID8/PXNpemUgb2YgYktHRCBjaHVuaywg ND1DUkMKLSsgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVhbGx5IG1vcmUgY29tcGxleDoKLSsg ICAgICAgIC8vIGh0dHA6Ly93d3cubGlicG5nLm9yZy9wdWIvcG5nL3NwZWMvMS4yL1BORy1DaHVu a3MuaHRtbCNDLmJLR0QKLSsgICAgICAgIC8vIFRPRE86IHdlIG9ubHkgY2hlY2sgdGhhdCA0IGJ5 dGVzIGNhbiBiZSByZWFkIGZyb20gJmNodW5rLnBbOF0uIEZpeC4KLSsgICAgICAgIGlmIChzaXpl IDwgOCArIDQpCi0rICAgICAgICAgICAgcmV0dXJuIDA7Ci0rICAgIH0gZWxzZSBpZiAoaWQgIT0g aWRfZmRBVCAmJiBpZCAhPSBpZF9JREFUICYmIGlkICE9IGlkX0lFTkQgJiYgaWQgIT0gaWRfUExU RSAmJiBpZCAhPSBpZF90Uk5TKSB7Ci0gICAgICAgICBpZiAoc2l6ZSA+IFBOR19VU0VSX0NIVU5L X01BTExPQ19NQVgpCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgQ1ZfTE9HX1dBUk5JTkcoTlVM TCwgImNodW5rIGRhdGEgaXMgdG9vIGxhcmdlIik7Ci0rICAgICAgICAgICAgQ1ZfTE9HX1dBUk5J TkcoTlVMTCwgInVzZXIgY2h1bmsgZGF0YSBpcyB0b28gbGFyZ2UiKTsKLSAgICAgICAgICAgICBy ZXR1cm4gMDsKLSAgICAgICAgIH0KLS0gICAgICAgIGNodW5rLnAucmVzaXplKHNpemUpOwotLSAg ICAgICAgbWVtY3B5KGNodW5rLnAuZGF0YSgpLCBsZW4sIDQpOwotLSAgICAgICAgaWYgKHJlYWRf ZnJvbV9pbygmY2h1bmsucFs0XSwgY2h1bmsucC5zaXplKCkgLSA0KSkKLS0gICAgICAgICAgICBy ZXR1cm4gKih1aW50MzJfdCopKCZjaHVuay5wWzRdKTsKLSAgICAgfQotKwotKyAgICBjaHVuay5w LnJlc2l6ZShzaXplKTsKLSsgICAgbWVtY3B5KGNodW5rLnAuZGF0YSgpLCBzaXplX2lkLCA4KTsK LSsgICAgaWYgKHJlYWRfZnJvbV9pbygmY2h1bmsucFs4XSwgY2h1bmsucC5zaXplKCkgLSA4KSkK LSsgICAgICAgIHJldHVybiBpZDsKLSAgICAgcmV0dXJuIDA7Ci0gfQotIAotLS0gCi0yLjQ4LjEK LQoKZGlmZiAtLWdpdCBhLzAwMDUtbWlub3ItaW1wcm92ZW1lbnQtZm9yLWJldHRlci1jb2RlLXJl YWRpYmlsaXR5LnBhdGNoIGIvMDAwNS1taW5vci1pbXByb3ZlbWVudC1mb3ItYmV0dGVyLWNvZGUt cmVhZGliaWxpdHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NzdjMzMu LjAwMDAwMDAKLS0tIGEvMDAwNS1taW5vci1pbXByb3ZlbWVudC1mb3ItYmV0dGVyLWNvZGUtcmVh ZGliaWxpdHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNzAgKzAsMCBAQAotRnJvbSA0OWMz YTVlY2E1ODI3NmRhY2E0MjA3YzM4YTE1NzkwODBhYWRlMjNlIE1vbiBTZXAgMTcgMDA6MDA6MDAg MjAwMQotRnJvbTogU3VsZXltYW4gVFVSS01FTiA8c3R1cmttZW5AaG90bWFpbC5jb20+Ci1EYXRl OiBGcmksIDI0IEphbiAyMDI1IDE1OjMxOjUzICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTBd IG1pbm9yIGltcHJvdmVtZW50IGZvciBiZXR0ZXIgY29kZSByZWFkaWJpbGl0eQotCi0tLS0KLSBt b2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcCB8IDQxICsrKysrKysrKysrKysrKysr Ky0tLS0tLS0tLS0tCi0gbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5ocHAgfCAyNyAr KysrKysrKysrKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAx OCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZt dF9wbmcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKLWluZGV4IDY0 ZWY1NmM4YzUuLjA4ZTM3ZWMwYzMgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMv Z3JmbXRfcG5nLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAK LUBAIC0yNzQsNyArMjc0LDcgQEAgYm9vbCAgUG5nRGVjb2Rlcjo6cmVhZEhlYWRlcigpCi0gICAg IH0KLSAKLSAgICAgLy8gUmVhZCBQTkcgaGVhZGVyOiAxMzcgODAgNzggNzEgMTMgMTAgMjYgMTAK LS0gICAgaWYgKCFyZWFkX2Zyb21faW8oJnNpZywgOCkpCi0rICAgIGlmICghcmVhZEZyb21TdHJl YW1PckJ1ZmZlcigmc2lnLCA4KSkKLSAgICAgICAgIHJldHVybiBmYWxzZTsKLSAKLSAgICAgaWQg PSByZWFkX2NodW5rKG1fY2h1bmtJSERSKTsKLUBAIC02ODIsNyArNjgyLDcgQEAgdm9pZCBQbmdE ZWNvZGVyOjpjb21wb3NlX2ZyYW1lKHN0ZDo6dmVjdG9yPHBuZ19ieXRlcD4mIHJvd3NfZHN0LCBj b25zdCBzdGQ6OnZlY3QKLSAgICAgICAgICAgICB9KTsKLSB9Ci0gCi0tYm9vbCBQbmdEZWNvZGVy OjpyZWFkX2Zyb21faW8odm9pZCogYnVmZmVyLCBzaXplX3QgbnVtX2J5dGVzKQotK2Jvb2wgUG5n RGVjb2Rlcjo6cmVhZEZyb21TdHJlYW1PckJ1ZmZlcih2b2lkKiBidWZmZXIsIHNpemVfdCBudW1f Ynl0ZXMpCi0gewotICAgICBpZiAobV9mKQotICAgICAgICAgcmV0dXJuIGZyZWFkKGJ1ZmZlciwg MSwgbnVtX2J5dGVzLCBtX2YpID09IG51bV9ieXRlczsKLUBAIC03MDAsNyArNzAwLDcgQEAgYm9v bCBQbmdEZWNvZGVyOjpyZWFkX2Zyb21faW8odm9pZCogYnVmZmVyLCBzaXplX3QgbnVtX2J5dGVz KQotIHVpbnQzMl90IFBuZ0RlY29kZXI6OnJlYWRfY2h1bmsoQ2h1bmsmIGNodW5rKQotIHsKLSAg ICAgdW5zaWduZWQgY2hhciBzaXplX2lkWzhdOwotLSAgICBpZiAoIXJlYWRfZnJvbV9pbygmc2l6 ZV9pZCwgOCkpCi0rICAgIGlmICghcmVhZEZyb21TdHJlYW1PckJ1ZmZlcigmc2l6ZV9pZCwgOCkp Ci0gICAgICAgICByZXR1cm4gMDsKLSAgICAgY29uc3Qgc2l6ZV90IHNpemUgPSBzdGF0aWNfY2Fz dDxzaXplX3Q+KHBuZ19nZXRfdWludF8zMihzaXplX2lkKSkgKyAxMjsKLSAKLUBAIC03MzcsNyAr NzM3LDcgQEAgdWludDMyX3QgUG5nRGVjb2Rlcjo6cmVhZF9jaHVuayhDaHVuayYgY2h1bmspCi0g Ci0gICAgIGNodW5rLnAucmVzaXplKHNpemUpOwotICAgICBtZW1jcHkoY2h1bmsucC5kYXRhKCks IHNpemVfaWQsIDgpOwotLSAgICBpZiAocmVhZF9mcm9tX2lvKCZjaHVuay5wWzhdLCBjaHVuay5w LnNpemUoKSAtIDgpKQotKyAgICBpZiAocmVhZEZyb21TdHJlYW1PckJ1ZmZlcigmY2h1bmsucFs4 XSwgY2h1bmsucC5zaXplKCkgLSA4KSkKLSAgICAgICAgIHJldHVybiBpZDsKLSAgICAgcmV0dXJu IDA7Ci0gfQotQEAgLTk2MCwxNSArOTYwLDI0IEBAIGJvb2wgIFBuZ0VuY29kZXI6OndyaXRlKCBj b25zdCBNYXQmIGltZywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcGFyYW1zICkKLSAgICAgcmV0 dXJuIHJlc3VsdDsKLSB9Ci0gCi0tc2l6ZV90IFBuZ0VuY29kZXI6OndyaXRlX3RvX2lvKHZvaWQg Y29uc3QqIF9CdWZmZXIsIHNpemVfdCAgX0VsZW1lbnRTaXplLCBzaXplX3QgX0VsZW1lbnRDb3Vu dCwgRklMRSAqIF9TdHJlYW0pCi0rc2l6ZV90IFBuZ0VuY29kZXI6OndyaXRlVG9TdHJlYW1PckJ1 ZmZlcih2b2lkIGNvbnN0KiBidWZmZXIsIHNpemVfdCBudW1fYnl0ZXMsIEZJTEUqIHN0cmVhbSkK LSB7Ci0tICAgIGlmIChfU3RyZWFtKQotLSAgICAgICAgcmV0dXJuIGZ3cml0ZShfQnVmZmVyLCBf RWxlbWVudFNpemUsIF9FbGVtZW50Q291bnQsIF9TdHJlYW0pOwotKyAgICBpZiAoIWJ1ZmZlciB8 fCAhbnVtX2J5dGVzKQotKyAgICAgICAgcmV0dXJuIDA7IC8vIEhhbmRsZSBudWxsIGJ1ZmZlciBv ciBlbXB0eSB3cml0ZXMKLSsKLSsgICAgaWYgKHN0cmVhbSkKLSsgICAgewotKyAgICAgICAgc2l6 ZV90IHdyaXR0ZW4gPSBmd3JpdGUoYnVmZmVyLCAxLCBudW1fYnl0ZXMsIHN0cmVhbSk7Ci0rICAg ICAgICByZXR1cm4gd3JpdHRlbjsgLy8gZndyaXRlIGhhbmRsZXMgdGhlIHdyaXRlIGNvdW50Ci0r ICAgIH0KLSAKLSAgICAgc2l6ZV90IGN1cnN6ID0gbV9idWYtPnNpemUoKTsKLS0gICAgbV9idWYt PnJlc2l6ZShjdXJzeiArIF9FbGVtZW50Q291bnQpOwotLSAgICBtZW1jcHkoICYoKm1fYnVmKVtj dXJzel0sIF9CdWZmZXIsIF9FbGVtZW50Q291bnQgKTsKLS0gICAgcmV0dXJuIF9FbGVtZW50Q291 bnQ7Ci0rICAgIGlmIChjdXJzeiArIG51bV9ieXRlcyA+IG1fYnVmLT5tYXhfc2l6ZSgpKQotKyAg ICAgICAgdGhyb3cgc3RkOjpydW50aW1lX2Vycm9yKCJCdWZmZXIgc2l6ZSBleGNlZWRzIG1heGlt dW0gY2FwYWNpdHkiKTsKLSsKLSsgICAgbV9idWYtPnJlc2l6ZShjdXJzeiArIG51bV9ieXRlcyk7 Ci0rICAgIG1lbWNweSgmKCptX2J1ZilbY3Vyc3pdLCBidWZmZXIsIG51bV9ieXRlcyk7Ci0rICAg IHJldHVybiBudW1fYnl0ZXM7Ci0gfQotIAotIHZvaWQgUG5nRW5jb2Rlcjo6d3JpdGVDaHVuayhG SUxFKiBmLCBjb25zdCBjaGFyKiBuYW1lLCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1aW50MzJfdCBs ZW5ndGgpCi1AQCAtOTc3LDI2ICs5ODYsMjYgQEAgdm9pZCBQbmdFbmNvZGVyOjp3cml0ZUNodW5r KEZJTEUqIGYsIGNvbnN0IGNoYXIqIG5hbWUsIHVuc2lnbmVkIGNoYXIqIGRhdGEsIHVpbnQKLSAg ICAgdWludDMyX3QgY3JjID0gY3JjMzIoMCwgWl9OVUxMLCAwKTsKLSAKLSAgICAgcG5nX3NhdmVf dWludF8zMihidWYsIGxlbmd0aCk7Ci0tICAgIHdyaXRlX3RvX2lvKGJ1ZiwgMSwgNCwgZik7Ci0t ICAgIHdyaXRlX3RvX2lvKG5hbWUsIDEsIDQsIGYpOwotKyAgICB3cml0ZVRvU3RyZWFtT3JCdWZm ZXIoYnVmLCA0LCBmKTsKLSsgICAgd3JpdGVUb1N0cmVhbU9yQnVmZmVyKG5hbWUsIDQsIGYpOwot ICAgICBjcmMgPSBjcmMzMihjcmMsIChjb25zdCBCeXRlZiopbmFtZSwgNCk7Ci0gCi0gICAgIGlm IChtZW1jbXAobmFtZSwgImZkQVQiLCA0KSA9PSAwKQotICAgICB7Ci0gICAgICAgICBwbmdfc2F2 ZV91aW50XzMyKGJ1ZiwgbmV4dF9zZXFfbnVtKyspOwotLSAgICAgICAgd3JpdGVfdG9faW8oYnVm LCAxLCA0LCBmKTsKLSsgICAgICAgIHdyaXRlVG9TdHJlYW1PckJ1ZmZlcihidWYsIDQsIGYpOwot ICAgICAgICAgY3JjID0gY3JjMzIoY3JjLCBidWYsIDQpOwotICAgICAgICAgbGVuZ3RoIC09IDQ7 Ci0gICAgIH0KLSAKLSAgICAgaWYgKGRhdGEgIT0gTlVMTCAmJiBsZW5ndGggPiAwKQotICAgICB7 Ci0tICAgICAgICB3cml0ZV90b19pbyhkYXRhLCAxLCBsZW5ndGgsIGYpOwotKyAgICAgICAgd3Jp dGVUb1N0cmVhbU9yQnVmZmVyKGRhdGEsIGxlbmd0aCwgZik7Ci0gICAgICAgICBjcmMgPSBjcmMz MihjcmMsIGRhdGEsIGxlbmd0aCk7Ci0gICAgIH0KLSAKLSAgICAgcG5nX3NhdmVfdWludF8zMihi dWYsIGNyYyk7Ci0tICAgIHdyaXRlX3RvX2lvKGJ1ZiwgMSwgNCwgZik7Ci0rICAgIHdyaXRlVG9T dHJlYW1PckJ1ZmZlcihidWYsIDQsIGYpOwotIH0KLSAKLSB2b2lkIFBuZ0VuY29kZXI6OndyaXRl SURBVHMoRklMRSogZiwgaW50IGZyYW1lLCB1bnNpZ25lZCBjaGFyKiBkYXRhLCB1aW50MzJfdCBs ZW5ndGgsIHVpbnQzMl90IGlkYXRfc2l6ZSkKLUBAIC0xNTIxLDcgKzE1MzAsNyBAQCBib29sIFBu Z0VuY29kZXI6OndyaXRlYW5pbWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25z dCBzdGQ6OnZlY3RvcjxpbgotICAgICAgICAgcG5nX3NhdmVfdWludF8zMihidWZfYWNUTCwgbnVt X2ZyYW1lcyAtIGZpcnN0KTsKLSAgICAgICAgIHBuZ19zYXZlX3VpbnRfMzIoYnVmX2FjVEwgKyA0 LCBsb29wcyk7Ci0gCi0tICAgICAgICB3cml0ZV90b19pbyhoZWFkZXIsIDEsIDgsIG1fZik7Ci0r ICAgICAgICB3cml0ZVRvU3RyZWFtT3JCdWZmZXIoaGVhZGVyLCA4LCBtX2YpOwotIAotICAgICAg ICAgd3JpdGVDaHVuayhtX2YsICJJSERSIiwgYnVmX0lIRFIsIDEzKTsKLSAKLWRpZmYgLS1naXQg YS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmhwcCBiL21vZHVsZXMvaW1nY29kZWNz L3NyYy9ncmZtdF9wbmcuaHBwCi1pbmRleCA1ZGZjODZlZmNjLi42ZTFhMDY0NzNkIDEwMDY0NAot LS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5ocHAKLSsrKyBiL21vZHVsZXMv aW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuaHBwCi1AQCAtMTM3LDcgKzEzNywxMyBAQCBwcml2YXRl OgotICAgICBDVl9OT0RJU0NBUkRfU1REIGJvb2wgcHJvY2Vzc2luZ19zdGFydCh2b2lkKiBmcmFt ZV9wdHIsIGNvbnN0IE1hdCYgaW1nKTsKLSAgICAgQ1ZfTk9ESVNDQVJEX1NURCBib29sIHByb2Nl c3NpbmdfZmluaXNoKCk7Ci0gICAgIHZvaWQgY29tcG9zZV9mcmFtZShzdGQ6OnZlY3Rvcjxwbmdf Ynl0ZXA+JiByb3dzX2RzdCwgY29uc3Qgc3RkOjp2ZWN0b3I8cG5nX2J5dGVwPiYgcm93c19zcmMs IHVuc2lnbmVkIGNoYXIgYm9wLCB1aW50MzJfdCB4LCB1aW50MzJfdCB5LCB1aW50MzJfdCB3LCB1 aW50MzJfdCBoLCBNYXQmIGltZyk7Ci0tICAgIENWX05PRElTQ0FSRF9TVEQgYm9vbCByZWFkX2Zy b21faW8odm9pZCogYnVmZmVyLCBzaXplX3QgbnVtX2J5dGVzKTsKLSsgICAgLyoqCi0rICAgICAq IEBicmllZiBSZWFkcyBkYXRhIGZyb20gYW4gSS9PIHNvdXJjZSBpbnRvIHRoZSBwcm92aWRlZCBi dWZmZXIuCi0rICAgICAqIEBwYXJhbSBidWZmZXIgUG9pbnRlciB0byB0aGUgYnVmZmVyIHdoZXJl IHRoZSBkYXRhIHdpbGwgYmUgc3RvcmVkLgotKyAgICAgKiBAcGFyYW0gbnVtX2J5dGVzIE51bWJl ciBvZiBieXRlcyB0byByZWFkIGludG8gdGhlIGJ1ZmZlci4KLSsgICAgICogQHJldHVybiB0cnVl IGlmIHRoZSBvcGVyYXRpb24gaXMgc3VjY2Vzc2Z1bCwgZmFsc2Ugb3RoZXJ3aXNlLgotKyAgICAg Ki8KLSsgICAgQ1ZfTk9ESVNDQVJEX1NURCBib29sIHJlYWRGcm9tU3RyZWFtT3JCdWZmZXIodm9p ZCogYnVmZmVyLCBzaXplX3QgbnVtX2J5dGVzKTsKLSAgICAgdWludDMyX3QgIHJlYWRfY2h1bmso Q2h1bmsmIGNodW5rKTsKLSAgICAgQ1ZfTk9ESVNDQVJEX1NURCBib29sIEluaXRQbmdQdHIoKTsK LSAgICAgdm9pZCBDbGVhclBuZ1B0cigpOwotQEAgLTE4NSw3ICsxOTEsMjQgQEAgcHVibGljOgot IHByb3RlY3RlZDoKLSAgICAgc3RhdGljIHZvaWQgd3JpdGVEYXRhVG9CdWYodm9pZCogcG5nX3B0 ciwgdW5zaWduZWQgY2hhciogc3JjLCBzaXplX3Qgc2l6ZSk7Ci0gICAgIHN0YXRpYyB2b2lkIGZs dXNoQnVmKHZvaWQqIHBuZ19wdHIpOwotLSAgICBzaXplX3Qgd3JpdGVfdG9faW8odm9pZCBjb25z dCogX0J1ZmZlciwgc2l6ZV90ICBfRWxlbWVudFNpemUsIHNpemVfdCBfRWxlbWVudENvdW50LCBG SUxFKiBfU3RyZWFtKTsKLSsgICAgLyoqCi0rICAgICogQGJyaWVmIFdyaXRlcyBkYXRhIHRvIGFu IG91dHB1dCBkZXN0aW5hdGlvbiwgZWl0aGVyIGEgZmlsZSBzdHJlYW0gb3IgYW4gaW4tbWVtb3J5 IGJ1ZmZlci4KLSsgICAgKgotKyAgICAqIFRoaXMgZnVuY3Rpb24gaGFuZGxlcyB0d28gb3V0cHV0 IHNjZW5hcmlvczoKLSsgICAgKiAxLiBJZiBhIGZpbGUgc3RyZWFtIGlzIHByb3ZpZGVkLCB0aGUg ZGF0YSBpcyB3cml0dGVuIHRvIHRoZSBzdHJlYW0gdXNpbmcgYGZ3cml0ZWAuCi0rICAgICogMi4g SWYgYHN0cmVhbWAgaXMgbnVsbCwgdGhlIGRhdGEgaXMgd3JpdHRlbiB0byBhbiBpbi1tZW1vcnkg YnVmZmVyIChgbV9idWZgKSwgd2hpY2ggaXMgcmVzaXplZCBhcyBuZWVkZWQuCi0rICAgICoKLSsg ICAgKiBAcGFyYW0gYnVmZmVyIFBvaW50ZXIgdG8gdGhlIGRhdGEgdG8gYmUgd3JpdHRlbi4KLSsg ICAgKiBAcGFyYW0gbnVtX2J5dGVzIFRoZSBudW1iZXIgb2YgYnl0ZXMgdG8gYmUgd3JpdHRlbi4K LSsgICAgKiBAcGFyYW0gc3RyZWFtIFBvaW50ZXIgdG8gdGhlIGZpbGUgc3RyZWFtIGZvciB3cml0 aW5nLiBJZiBudWxsLCB0aGUgZGF0YSBpcyB3cml0dGVuIHRvIHRoZSBpbi1tZW1vcnkgYnVmZmVy LgotKyAgICAqIEByZXR1cm4gVGhlIG51bWJlciBvZiBieXRlcyBzdWNjZXNzZnVsbHkgd3JpdHRl bi4KLSsgICAgKiAgICAgICAgIC0gRm9yIGZpbGUtYmFzZWQgd3JpdGVzLCB0aGlzIGlzIHRoZSBu dW1iZXIgb2YgYnl0ZXMgd3JpdHRlbiB0byB0aGUgc3RyZWFtLgotKyAgICAqICAgICAgICAgLSBG b3IgYnVmZmVyLWJhc2VkIHdyaXRlcywgdGhpcyBpcyB0aGUgdG90YWwgbnVtYmVyIG9mIGJ5dGVz IGFkZGVkIHRvIHRoZSBidWZmZXIuCi0rICAgICoKLSsgICAgKiBAdGhyb3dzIHN0ZDo6cnVudGlt ZV9lcnJvciBJZiB0aGUgaW4tbWVtb3J5IGJ1ZmZlciAoYG1fYnVmYCkgZXhjZWVkcyBpdHMgbWF4 aW11bSBjYXBhY2l0eS4KLSsgICAgKiBAbm90ZSBJZiBgbnVtX2J5dGVzYCBpcyAwIG9yIGBidWZm ZXJgIGlzIG51bGwsIHRoZSBmdW5jdGlvbiByZXR1cm5zIDAuCi0rICAgICovCi0rICAgIHNpemVf dCB3cml0ZVRvU3RyZWFtT3JCdWZmZXIodm9pZCBjb25zdCogYnVmZmVyLCBzaXplX3QgIG51bV9i eXRlcywgRklMRSogc3RyZWFtKTsKLSAKLSBwcml2YXRlOgotICAgICB2b2lkIHdyaXRlQ2h1bmso RklMRSogZiwgY29uc3QgY2hhciogbmFtZSwgdW5zaWduZWQgY2hhciogZGF0YSwgdWludDMyX3Qg bGVuZ3RoKTsKLS0tIAotMi40OC4xCi0KCmRpZmYgLS1naXQgYS8wMDA2LU1lcmdlLXB1bGwtcmVx dWVzdC0yNjgzNS1mcm9tLXN0dXJrbWVuNzItcGF0Y2gtNC5wYXRjaCBiLzAwMDYtTWVyZ2UtcHVs bC1yZXF1ZXN0LTI2ODM1LWZyb20tc3R1cmttZW43Mi1wYXRjaC00LnBhdGNoCmRlbGV0ZWQgZmls ZSBtb2RlIDEwMDY0NAppbmRleCBiYTVjNDZmLi4wMDAwMDAwCi0tLSBhLzAwMDYtTWVyZ2UtcHVs bC1yZXF1ZXN0LTI2ODM1LWZyb20tc3R1cmttZW43Mi1wYXRjaC00LnBhdGNoCisrKyAvZGV2L251 bGwKQEAgLTEsMTMzICswLDAgQEAKLUZyb20gODEzMWUyN2U4MjQ3NDBhZmE0NDdhMTI5ZTcyYTJm NmEzODc2Y2JjOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN1bGV5bWFuIFRVUktN RU4gPHN0dXJrbWVuQGhvdG1haWwuY29tPgotRGF0ZTogU2F0LCAyNSBKYW4gMjAyNSAwOTozMTow MCArMDMwMAotU3ViamVjdDogW1BBVENIIDA2LzEwXSBNZXJnZSBwdWxsIHJlcXVlc3QgIzI2ODM1 IGZyb20gc3R1cmttZW43MjpwYXRjaC00Ci0KLUNvcnJlY3Rpb25zIG9uIGJLR0QgY2h1bmsgd3Jp dGluZyBhbmQgcmVhZGluZyBpbiBQTkcgIzI2ODM1Ci0KLSMjIyBQdWxsIFJlcXVlc3QgUmVhZGlu ZXNzIENoZWNrbGlzdAotCi1TZWUgZGV0YWlscyBhdCBodHRwczovL2dpdGh1Yi5jb20vb3BlbmN2 L29wZW5jdi93aWtpL0hvd190b19jb250cmlidXRlI21ha2luZy1hLWdvb2QtcHVsbC1yZXF1ZXN0 Ci0KLS0gW3hdIEkgYWdyZWUgdG8gY29udHJpYnV0ZSB0byB0aGUgcHJvamVjdCB1bmRlciBBcGFj aGUgMiBMaWNlbnNlLgotLSBbeF0gVG8gdGhlIGJlc3Qgb2YgbXkga25vd2xlZGdlLCB0aGUgcHJv cG9zZWQgcGF0Y2ggaXMgbm90IGJhc2VkIG9uIGEgY29kZSB1bmRlciBHUEwgb3IgYW5vdGhlciBs aWNlbnNlIHRoYXQgaXMgaW5jb21wYXRpYmxlIHdpdGggT3BlbkNWCi0tIFt4XSBUaGUgUFIgaXMg cHJvcG9zZWQgdG8gdGhlIHByb3BlciBicmFuY2gKLS0gWyBdIFRoZXJlIGlzIGEgcmVmZXJlbmNl IHRvIHRoZSBvcmlnaW5hbCBidWcgcmVwb3J0IGFuZCByZWxhdGVkIHdvcmsKLS0gWyBdIFRoZXJl IGlzIGFjY3VyYWN5IHRlc3QsIHBlcmZvcm1hbmNlIHRlc3QgYW5kIHRlc3QgZGF0YSBpbiBvcGVu Y3ZfZXh0cmEgcmVwb3NpdG9yeSwgaWYgYXBwbGljYWJsZQotICAgICAgUGF0Y2ggdG8gb3BlbmN2 X2V4dHJhIGhhcyB0aGUgc2FtZSBicmFuY2ggbmFtZS4KLS0gWyBdIFRoZSBmZWF0dXJlIGlzIHdl bGwgZG9jdW1lbnRlZCBhbmQgc2FtcGxlIGNvZGUgY2FuIGJlIGJ1aWx0IHdpdGggdGhlIHByb2pl Y3QgQ01ha2UKLS0tLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwICAgICAg IHwgMjYgKysrKysrKystLS0tLS0tLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rlc3RfYW5p bWF0aW9uLmNwcCB8IDM1ICsrKysrKysrKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2Vk LCA0NiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVs ZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dy Zm10X3BuZy5jcHAKLWluZGV4IDA4ZTM3ZWMwYzMuLjRlYzMyODA2MDcgMTAwNjQ0Ci0tLS0gYS9t b2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2Rl Y3Mvc3JjL2dyZm10X3BuZy5jcHAKLUBAIC0zMjcsMTEgKzMyNywxMCBAQCBib29sICBQbmdEZWNv ZGVyOjpyZWFkSGVhZGVyKCkKLSAgICAgICAgIGlmIChpZCA9PSBpZF9iS0dEKQotICAgICAgICAg ewotICAgICAgICAgICAgIC8vIFRoZSBzcGVjIGlzIGFjdHVhbGx5IG1vcmUgY29tcGxleDogaHR0 cDovL3d3dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuYktH RAotLSAgICAgICAgICAgIGludCBiZ2NvbG9yID0gcG5nX2dldF91aW50XzMyKCZjaHVuay5wWzhd KTsKLS0gICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzNdID0gKGJnY29sb3IgPj4gMjQp ICYgMHhGRjsKLS0gICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzJdID0gKGJnY29sb3Ig Pj4gMTYpICYgMHhGRjsKLS0gICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzFdID0gKGJn Y29sb3IgPj4gOCkgJiAweEZGOwotLSAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbMF0g PSBiZ2NvbG9yICYgMHhGRjsKLSsgICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzBdID0g cG5nX2dldF91aW50XzE2KCZjaHVuay5wWzhdKTsKLSsgICAgICAgICAgICBtX2FuaW1hdGlvbi5i Z2NvbG9yWzFdID0gcG5nX2dldF91aW50XzE2KCZjaHVuay5wWzEwXSk7Ci0rICAgICAgICAgICAg bV9hbmltYXRpb24uYmdjb2xvclsyXSA9IHBuZ19nZXRfdWludF8xNigmY2h1bmsucFsxMl0pOwot KyAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbM10gPSAwOwotICAgICAgICAgfQotIAot ICAgICAgICAgaWYgKGlkID09IGlkX1BMVEUgfHwgaWQgPT0gaWRfdFJOUykKLUBAIC03MjEsMTEg KzcyMCwxMCBAQCB1aW50MzJfdCBQbmdEZWNvZGVyOjpyZWFkX2NodW5rKENodW5rJiBjaHVuaykK LSAgICAgICAgIGlmIChzaXplICE9IDggKyAyNiArIDQpCi0gICAgICAgICAgICAgcmV0dXJuIDA7 Ci0gICAgIH0gZWxzZSBpZiAoaWQgPT0gaWRfYktHRCkgewotLSAgICAgICAgLy8gOD1IRFIrc2l6 ZSwgPz89c2l6ZSBvZiBiS0dEIGNodW5rLCA0PUNSQwotKyAgICAgICAgLy8gOD1IRFIrc2l6ZSwg KDEsIDIgb3IgNik9c2l6ZSBvZiBiS0dEIGNodW5rLCA0PUNSQwotICAgICAgICAgLy8gVGhlIHNw ZWMgaXMgYWN0dWFsbHkgbW9yZSBjb21wbGV4OgotICAgICAgICAgLy8gaHR0cDovL3d3dy5saWJw bmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuYktHRAotLSAgICAgICAg Ly8gVE9ETzogd2Ugb25seSBjaGVjayB0aGF0IDQgYnl0ZXMgY2FuIGJlIHJlYWQgZnJvbSAmY2h1 bmsucFs4XS4gRml4LgotLSAgICAgICAgaWYgKHNpemUgPCA4ICsgNCkKLSsgICAgICAgIGlmIChz aXplICE9IDggKyAxICsgNCAmJiBzaXplICE9IDggKyAyICsgNCAmJiBzaXplICE9IDggKyA2ICsg NCkKLSAgICAgICAgICAgICByZXR1cm4gMDsKLSAgICAgfSBlbHNlIGlmIChpZCAhPSBpZF9mZEFU ICYmIGlkICE9IGlkX0lEQVQgJiYgaWQgIT0gaWRfSUVORCAmJiBpZCAhPSBpZF9QTFRFICYmIGlk ICE9IGlkX3RSTlMpIHsKLSAgICAgICAgIGlmIChzaXplID4gUE5HX1VTRVJfQ0hVTktfTUFMTE9D X01BWCkKLUBAIC0xNTQyLDEzICsxNTQwLDEzIEBAIGJvb2wgUG5nRW5jb2Rlcjo6d3JpdGVhbmlt YXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IHN0ZDo6dmVjdG9yPGluCi0g ICAgICAgICBpZiAocGFsc2l6ZSA+IDApCi0gICAgICAgICAgICAgd3JpdGVDaHVuayhtX2YsICJQ TFRFIiwgKHVuc2lnbmVkIGNoYXIqKSgmcGFsZXR0ZSksIHBhbHNpemUgKiAzKTsKLSAKLS0gICAg ICAgIGlmICgoYW5pbWF0aW9uLmJnY29sb3IgIT0gU2NhbGFyKCkpICYmIChhbmltYXRpb24uZnJh bWVzLnNpemUoKSA+IDEpKQotKyAgICAgICAgaWYgKChhbmltYXRpb24uYmdjb2xvciAhPSBTY2Fs YXIoKSkgJiYgY29sdHlwZSkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICB1aW50NjRfdCBiZ3Zh bHVlID0gKHN0YXRpY19jYXN0PGludD4oYW5pbWF0aW9uLmJnY29sb3JbMF0pICYgMHhGRikgPDwg MjQgfAotLSAgICAgICAgICAgICAgICAoc3RhdGljX2Nhc3Q8aW50PihhbmltYXRpb24uYmdjb2xv clsxXSkgJiAweEZGKSA8PCAxNiB8Ci0tICAgICAgICAgICAgICAgIChzdGF0aWNfY2FzdDxpbnQ+ KGFuaW1hdGlvbi5iZ2NvbG9yWzJdKSAmIDB4RkYpIDw8IDggfAotLSAgICAgICAgICAgICAgICAo c3RhdGljX2Nhc3Q8aW50PihhbmltYXRpb24uYmdjb2xvclszXSkgJiAweEZGKTsKLS0gICAgICAg ICAgICB3cml0ZUNodW5rKG1fZiwgImJLR0QiLCAodW5zaWduZWQgY2hhciopKCZiZ3ZhbHVlKSwg Nik7IC8vdGhlIGJLR0QgY2h1bmsgbXVzdCBwcmVjZWRlIHRoZSBmaXJzdCBJREFUIGNodW5rLCBh bmQgbXVzdCBmb2xsb3cgdGhlIFBMVEUgY2h1bmsuCi0rICAgICAgICAgICAgdW5zaWduZWQgY2hh ciBiZ3ZhbHVlWzZdID0ge307Ci0rICAgICAgICAgICAgYmd2YWx1ZVsxXSA9IGFuaW1hdGlvbi5i Z2NvbG9yWzBdOwotKyAgICAgICAgICAgIGJndmFsdWVbM10gPSBhbmltYXRpb24uYmdjb2xvclsx XTsKLSsgICAgICAgICAgICBiZ3ZhbHVlWzVdID0gYW5pbWF0aW9uLmJnY29sb3JbMl07Ci0rICAg ICAgICAgICAgd3JpdGVDaHVuayhtX2YsICJiS0dEIiwgYmd2YWx1ZSwgNik7IC8vdGhlIGJLR0Qg Y2h1bmsgbXVzdCBwcmVjZWRlIHRoZSBmaXJzdCBJREFUIGNodW5rLCBhbmQgbXVzdCBmb2xsb3cg dGhlIFBMVEUgY2h1bmsuCi0gICAgICAgICB9Ci0gCi0gICAgICAgICBpZiAodHJuc3NpemUgPiAw KQotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Rlc3QvdGVzdF9hbmltYXRpb24uY3Bw IGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2FuaW1hdGlvbi5jcHAKLWluZGV4IGU4YzQy Y2JjYzAuLmRmMGEwMGE4YjEgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy90ZXN0L3Rl c3RfYW5pbWF0aW9uLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3MvdGVzdC90ZXN0X2FuaW1h dGlvbi5jcHAKLUBAIC00MjUsNiArNDI1LDM5IEBAIFRFU1QoSW1nY29kZWNzX0FQTkcsIGltd3Jp dGVhbmltYXRpb25fcmdiKQotICAgICBFWFBFQ1RfRVEoMCwgcmVtb3ZlKG91dHB1dC5jX3N0cigp KSk7Ci0gfQotIAotK1RFU1QoSW1nY29kZWNzX0FQTkcsIGltd3JpdGVhbmltYXRpb25fZ3JheSkK LSt7Ci0rICAgIEFuaW1hdGlvbiBzX2FuaW1hdGlvbiwgbF9hbmltYXRpb247Ci0rICAgIEVYUEVD VF9UUlVFKGZpbGxGcmFtZXMoc19hbmltYXRpb24sIGZhbHNlKSk7Ci0rCi0rICAgIGZvciAoc2l6 ZV90IGkgPSAwOyBpIDwgc19hbmltYXRpb24uZnJhbWVzLnNpemUoKTsgaSsrKQotKyAgICB7Ci0r ICAgICAgICBjdnRDb2xvcihzX2FuaW1hdGlvbi5mcmFtZXNbaV0sIHNfYW5pbWF0aW9uLmZyYW1l c1tpXSwgQ09MT1JfQkdSMkdSQVkpOwotKyAgICB9Ci0rCi0rICAgIHNfYW5pbWF0aW9uLmJnY29s b3IgPSBTY2FsYXIoNTAsIDEwMCwgMTUwKTsKLSsgICAgc3RyaW5nIG91dHB1dCA9IGN2Ojp0ZW1w ZmlsZSgiLnBuZyIpOwotKyAgICAvLyBXcml0ZSB0aGUgYW5pbWF0aW9uIHRvIGEgLnBuZyBmaWxl IGFuZCB2ZXJpZnkgc3VjY2Vzcy4KLSsgICAgRVhQRUNUX1RSVUUoaW13cml0ZWFuaW1hdGlvbihv dXRwdXQsIHNfYW5pbWF0aW9uKSk7Ci0rCi0rICAgIC8vIFJlYWQgdGhlIGFuaW1hdGlvbiBiYWNr IGFuZCBjb21wYXJlIHdpdGggdGhlIG9yaWdpbmFsLgotKyAgICBFWFBFQ1RfVFJVRShpbXJlYWRh bmltYXRpb24ob3V0cHV0LCBsX2FuaW1hdGlvbikpOwotKwotKyAgICBFWFBFQ1RfRVEoU2NhbGFy KCksIGxfYW5pbWF0aW9uLmJnY29sb3IpOwotKyAgICBzaXplX3QgZXhwZWN0ZWRfZnJhbWVfY291 bnQgPSBzX2FuaW1hdGlvbi5mcmFtZXMuc2l6ZSgpIC0gMjsKLSsKLSsgICAgLy8gVmVyaWZ5IHRo YXQgdGhlIG51bWJlciBvZiBmcmFtZXMgbWF0Y2hlcyB0aGUgZXhwZWN0ZWQgY291bnQuCi0rICAg IEVYUEVDVF9FUShleHBlY3RlZF9mcmFtZV9jb3VudCwgaW1jb3VudChvdXRwdXQpKTsKLSsgICAg RVhQRUNUX0VRKGV4cGVjdGVkX2ZyYW1lX2NvdW50LCBsX2FuaW1hdGlvbi5mcmFtZXMuc2l6ZSgp KTsKLSsKLSsgICAgRVhQRUNUX0VRKDAsIHJlbW92ZShvdXRwdXQuY19zdHIoKSkpOwotKwotKyAg ICBmb3IgKHNpemVfdCBpID0gMDsgaSA8IGxfYW5pbWF0aW9uLmZyYW1lcy5zaXplKCk7IGkrKykK LSsgICAgewotKyAgICAgICAgRVhQRUNUX0VRKDAsIGN2dGVzdDo6bm9ybShzX2FuaW1hdGlvbi5m cmFtZXNbaV0sIGxfYW5pbWF0aW9uLmZyYW1lc1tpXSwgTk9STV9JTkYpKTsKLSsgICAgfQotK30K LSsKLSBURVNUKEltZ2NvZGVjc19BUE5HLCBpbXdyaXRlbXVsdGlfcmdiYSkKLSB7Ci0gICAgIEFu aW1hdGlvbiBzX2FuaW1hdGlvbjsKLUBAIC00OTIsNyArNTI1LDcgQEAgVEVTVChJbWdjb2RlY3Nf QVBORywgaW13cml0ZWFuaW1hdGlvbl9iZ2NvbG9yKQotIHsKLSAgICAgQW5pbWF0aW9uIHNfYW5p bWF0aW9uLCBsX2FuaW1hdGlvbjsKLSAgICAgRVhQRUNUX1RSVUUoZmlsbEZyYW1lcyhzX2FuaW1h dGlvbiwgdHJ1ZSwgMikpOwotLSAgICBzX2FuaW1hdGlvbi5iZ2NvbG9yID0gU2NhbGFyKDUwLCAx MDAsIDE1MCwgMTI4KTsgLy8gZGlmZmVyZW50IHZhbHVlcyBmb3IgdGVzdCBwdXJwb3NlLgotKyAg ICBzX2FuaW1hdGlvbi5iZ2NvbG9yID0gU2NhbGFyKDUwLCAxMDAsIDE1MCk7IC8vIHdpbGwgYmUg d3JpdHRlbiBpbiBiS0dEIGNodW5rIGFzIFJHQi4KLSAKLSAgICAgLy8gQ3JlYXRlIGEgdGVtcG9y YXJ5IG91dHB1dCBmaWxlbmFtZSBmb3Igc2F2aW5nIHRoZSBhbmltYXRpb24uCi0gICAgIHN0cmlu ZyBvdXRwdXQgPSBjdjo6dGVtcGZpbGUoIi5wbmciKTsKLS0tIAotMi40OC4xCi0KCmRpZmYgLS1n aXQgYS8wMDA3LWZpeC1mb3ItbGFyZ2UtdEVYdC1jaHVuay5wYXRjaCBiLzAwMDctZml4LWZvci1s YXJnZS10RVh0LWNodW5rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMDE5 M2NiLi4wMDAwMDAwCi0tLSBhLzAwMDctZml4LWZvci1sYXJnZS10RVh0LWNodW5rLnBhdGNoCisr KyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotRnJvbSBkNmM0YWMyZTVlOWNiN2VhNjA3ZWNi OGU3MDg4NGEzYzVhMDY2NTRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3VsZXlt YW4gVFVSS01FTiA8c3R1cmttZW5AaG90bWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI4IEphbiAyMDI1 IDAxOjA2OjQxICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTBdIGZpeCBmb3IgbGFyZ2UgdEVY dCBjaHVuawotCi0tLS0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcCB8IDkg KysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMo LSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwIGIv bW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKLWluZGV4IDRlYzMyODA2MDcuLjkw OWE5MDE3YjIgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfcG5nLmNw cAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKLUBAIC0xMjYsOSAr MTI2LDEwIEBAIGNvbnN0IHVpbnQzMl90IGlkX2FjVEwgPSAweDRDNTQ2MzYxOyAvLyBBbmltYXRp b24gY29udHJvbCBjaHVuawotIGNvbnN0IHVpbnQzMl90IGlkX2ZjVEwgPSAweDRDNTQ2MzY2OyAv LyBGcmFtZSBjb250cm9sIGNodW5rCi0gY29uc3QgdWludDMyX3QgaWRfSURBVCA9IDB4NTQ0MTQ0 NDk7IC8vIGZpcnN0IGZyYW1lIGFuZC9vciBkZWZhdWx0IGltYWdlCi0gY29uc3QgdWludDMyX3Qg aWRfZmRBVCA9IDB4NTQ0MTY0NjY7IC8vIEZyYW1lIGRhdGEgY2h1bmsKLS1jb25zdCB1aW50MzJf dCBpZF9QTFRFID0gMHg0NTU0NEM1MDsKLS1jb25zdCB1aW50MzJfdCBpZF9iS0dEID0gMHg0NDQ3 NEI2MjsKLS1jb25zdCB1aW50MzJfdCBpZF90Uk5TID0gMHg1MzRFNTI3NDsKLStjb25zdCB1aW50 MzJfdCBpZF9QTFRFID0gMHg0NTU0NEM1MDsgLy8gVGhlIFBMVEUgY2h1bmsgY29udGFpbnMgYSBj b2xvciBwYWxldHRlIGZvciBpbmRleGVkLWNvbG9yIGltYWdlcwotK2NvbnN0IHVpbnQzMl90IGlk X2JLR0QgPSAweDQ0NDc0QjYyOyAvLyBUaGUgYktHRCBjaHVuayBzcGVjaWZpZXMgYSBkZWZhdWx0 IGJhY2tncm91bmQgY29sb3IgZm9yIHRoZSBpbWFnZQotK2NvbnN0IHVpbnQzMl90IGlkX3RSTlMg PSAweDUzNEU1Mjc0OyAvLyBUaGUgdFJOUyBjaHVuayBwcm92aWRlcyB0cmFuc3BhcmVuY3kgaW5m b3JtYXRpb24KLStjb25zdCB1aW50MzJfdCBpZF90RVh0ID0gMHg3NDU4NDU3NDsgLy8gVGhlIHRF WHQgY2h1bmsgc3RvcmVzIG1ldGFkYXRhIGFzIHRleHQgaW4ga2V5LXZhbHVlIHBhaXJzCi0gY29u c3QgdWludDMyX3QgaWRfSUVORCA9IDB4NDQ0RTQ1NDk7IC8vIGVuZC9mb290ZXIgY2h1bmsKLSAK LSBBUE5HRnJhbWU6OkFQTkdGcmFtZSgpCi1AQCAtNzI1LDcgKzcyNiw3IEBAIHVpbnQzMl90IFBu Z0RlY29kZXI6OnJlYWRfY2h1bmsoQ2h1bmsmIGNodW5rKQotICAgICAgICAgLy8gaHR0cDovL3d3 dy5saWJwbmcub3JnL3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuYktHRAotICAg ICAgICAgaWYgKHNpemUgIT0gOCArIDEgKyA0ICYmIHNpemUgIT0gOCArIDIgKyA0ICYmIHNpemUg IT0gOCArIDYgKyA0KQotICAgICAgICAgICAgIHJldHVybiAwOwotLSAgICB9IGVsc2UgaWYgKGlk ICE9IGlkX2ZkQVQgJiYgaWQgIT0gaWRfSURBVCAmJiBpZCAhPSBpZF9JRU5EICYmIGlkICE9IGlk X1BMVEUgJiYgaWQgIT0gaWRfdFJOUykgewotKyAgICB9IGVsc2UgaWYgKGlkICE9IGlkX2ZkQVQg JiYgaWQgIT0gaWRfSURBVCAmJiBpZCAhPSBpZF9JRU5EICYmIGlkICE9IGlkX1BMVEUgJiYgaWQg IT0gaWRfdEVYdCAmJiBpZCAhPSBpZF90Uk5TKSB7Ci0gICAgICAgICBpZiAoc2l6ZSA+IFBOR19V U0VSX0NIVU5LX01BTExPQ19NQVgpCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgQ1ZfTE9HX1dB Uk5JTkcoTlVMTCwgInVzZXIgY2h1bmsgZGF0YSBpcyB0b28gbGFyZ2UiKTsKLS0tIAotMi40OC4x Ci0KCmRpZmYgLS1naXQgYS8wMDA4LU1lcmdlLXB1bGwtcmVxdWVzdC0yNjg1NC1mcm9tLXZyYWJh dWQtcG5nX2xlYWsucGF0Y2ggYi8wMDA4LU1lcmdlLXB1bGwtcmVxdWVzdC0yNjg1NC1mcm9tLXZy YWJhdWQtcG5nX2xlYWsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2NzNk MmYuLjAwMDAwMDAKLS0tIGEvMDAwOC1NZXJnZS1wdWxsLXJlcXVlc3QtMjY4NTQtZnJvbS12cmFi YXVkLXBuZ19sZWFrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTAgKzAsMCBAQAotRnJvbSAw ZDk5YzQyODM2MjA2NzFiZTMwMDllYzAwZWIyNjBlNWE3NTljYzM5IE1vbiBTZXAgMTcgMDA6MDA6 MDAgMjAwMQotRnJvbTogVmluY2VudCBSYWJhdWQgPHZyYWJhdWRAZ29vZ2xlLmNvbT4KLURhdGU6 IEZyaSwgMzEgSmFuIDIwMjUgMDk6MDA6MjMgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8xMF0g TWVyZ2UgcHVsbCByZXF1ZXN0ICMyNjg1NCBmcm9tIHZyYWJhdWQ6cG5nX2xlYWsKLQotRml4IG9z cy1mdXp6IGJ1Z3MgMzkxOTM0MDgxIGFuZCAzOTIzMTg4OTIgIzI2ODU0Ci0KLS0gZml4IGEgcG90 ZW50aWFsIG92ZXJmbG93IGluIHgwK3cwCi0tIHVzZSB0aGUgcHJvcGVyIGZ1bmN0aW9uIHRvIGRl YWwgd2l0aCBiYWNrZ3JvdW5kIGNvbG9yIHRvIGRlYWwgd2l0aCBhbGwgY2FzZXMgb2YgdGhlIHNw ZWMKLS0gdXNlIEJHUiBsYXlvdXQgZm9yIEFQTkcgYmFja2dyb3VuZCBjb2xvcgotCi0jIyMgUHVs bCBSZXF1ZXN0IFJlYWRpbmVzcyBDaGVja2xpc3QKLQotU2VlIGRldGFpbHMgYXQgaHR0cHM6Ly9n aXRodWIuY29tL29wZW5jdi9vcGVuY3Yvd2lraS9Ib3dfdG9fY29udHJpYnV0ZSNtYWtpbmctYS1n b29kLXB1bGwtcmVxdWVzdAotCi0tIFt4XSBJIGFncmVlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIHBy b2plY3QgdW5kZXIgQXBhY2hlIDIgTGljZW5zZS4KLS0gW3hdIFRvIHRoZSBiZXN0IG9mIG15IGtu b3dsZWRnZSwgdGhlIHByb3Bvc2VkIHBhdGNoIGlzIG5vdCBiYXNlZCBvbiBhIGNvZGUgdW5kZXIg R1BMIG9yIGFub3RoZXIgbGljZW5zZSB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIE9wZW5DVgot LSBbeF0gVGhlIFBSIGlzIHByb3Bvc2VkIHRvIHRoZSBwcm9wZXIgYnJhbmNoCi0tIFt4XSBUaGVy ZSBpcyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydCBhbmQgcmVsYXRlZCB3 b3JrCi0tIFsgXSBUaGVyZSBpcyBhY2N1cmFjeSB0ZXN0LCBwZXJmb3JtYW5jZSB0ZXN0IGFuZCB0 ZXN0IGRhdGEgaW4gb3BlbmN2X2V4dHJhIHJlcG9zaXRvcnksIGlmIGFwcGxpY2FibGUKLSAgICAg IFBhdGNoIHRvIG9wZW5jdl9leHRyYSBoYXMgdGhlIHNhbWUgYnJhbmNoIG5hbWUuCi0tIFsgXSBU aGUgZmVhdHVyZSBpcyB3ZWxsIGRvY3VtZW50ZWQgYW5kIHNhbXBsZSBjb2RlIGNhbiBiZSBidWls dCB3aXRoIHRoZSBwcm9qZWN0IENNYWtlCi0tLS0KLSAuLi4vaW1nY29kZWNzL2luY2x1ZGUvb3Bl bmN2Mi9pbWdjb2RlY3MuaHBwICAgfCAgMiArLQotIG1vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZt dF9wbmcuY3BwICAgICAgICAgICB8IDE5ICsrKysrKystLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNo YW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9t b2R1bGVzL2ltZ2NvZGVjcy9pbmNsdWRlL29wZW5jdjIvaW1nY29kZWNzLmhwcCBiL21vZHVsZXMv aW1nY29kZWNzL2luY2x1ZGUvb3BlbmN2Mi9pbWdjb2RlY3MuaHBwCi1pbmRleCBjZDY0OGMyYzZl Li5jODAyMDMzZTZiIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3MvaW5jbHVkZS9vcGVu Y3YyL2ltZ2NvZGVjcy5ocHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL2luY2x1ZGUvb3BlbmN2 Mi9pbWdjb2RlY3MuaHBwCi1AQCAtMjYzLDcgKzI2Myw3IEBAIHN0cnVjdCBDVl9FWFBPUlRTX1df U0lNUExFIEFuaW1hdGlvbgotICAgICAtIElmIGEgbmVnYXRpdmUgdmFsdWUgb3IgYSB2YWx1ZSBi ZXlvbmQgdGhlIG1heGltdW0gb2YgYDB4ZmZmZmAgKDY1NTM1KSBpcyBwcm92aWRlZCwgaXQgaXMg cmVzZXQgdG8gYDBgCi0gICAgIChpbmZpbml0ZSBsb29waW5nKSB0byBtYWludGFpbiB2YWxpZCBi b3VuZHMuCi0gCi0tICAgIEBwYXJhbSBiZ0NvbG9yIEEgYFNjYWxhcmAgb2JqZWN0IHJlcHJlc2Vu dGluZyB0aGUgYmFja2dyb3VuZCBjb2xvciBpbiBCR1JBIGZvcm1hdDoKLSsgICAgQHBhcmFtIGJn Q29sb3IgQSBgU2NhbGFyYCBvYmplY3QgcmVwcmVzZW50aW5nIHRoZSBiYWNrZ3JvdW5kIGNvbG9y IGluIEJHUiBmb3JtYXQ6Ci0gICAgIC0gRGVmYXVsdHMgdG8gYFNjYWxhcigpYCwgaW5kaWNhdGlu ZyBhbiBlbXB0eSBjb2xvciAodXN1YWxseSB0cmFuc3BhcmVudCBpZiBzdXBwb3J0ZWQpLgotICAg ICAtIFRoaXMgYmFja2dyb3VuZCBjb2xvciBwcm92aWRlcyBhIHNvbGlkIGZpbGwgYmVoaW5kIGZy YW1lcyB0aGF0IGhhdmUgdHJhbnNwYXJlbmN5LCBlbnN1cmluZyBhIGNvbnNpc3RlbnQgZGlzcGxh eSBhcHBlYXJhbmNlLgotICAgICAqLwotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Ny Yy9ncmZtdF9wbmcuY3BwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAKLWlu ZGV4IDkwOWE5MDE3YjIuLmY3YTE5YzJiZjUgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVj cy9zcmMvZ3JmbXRfcG5nLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3Bu Zy5jcHAKLUBAIC0zMjUsMTUgKzMyNSw2IEBAIGJvb2wgIFBuZ0RlY29kZXI6OnJlYWRIZWFkZXIo KQotICAgICAgICAgICAgIGJvcCA9IGNodW5rLnBbMzNdOwotICAgICAgICAgfQotIAotLSAgICAg ICAgaWYgKGlkID09IGlkX2JLR0QpCi0tICAgICAgICB7Ci0tICAgICAgICAgICAgLy8gVGhlIHNw ZWMgaXMgYWN0dWFsbHkgbW9yZSBjb21wbGV4OiBodHRwOi8vd3d3LmxpYnBuZy5vcmcvcHViL3Bu Zy9zcGVjLzEuMi9QTkctQ2h1bmtzLmh0bWwjQy5iS0dECi0tICAgICAgICAgICAgbV9hbmltYXRp b24uYmdjb2xvclswXSA9IHBuZ19nZXRfdWludF8xNigmY2h1bmsucFs4XSk7Ci0tICAgICAgICAg ICAgbV9hbmltYXRpb24uYmdjb2xvclsxXSA9IHBuZ19nZXRfdWludF8xNigmY2h1bmsucFsxMF0p OwotLSAgICAgICAgICAgIG1fYW5pbWF0aW9uLmJnY29sb3JbMl0gPSBwbmdfZ2V0X3VpbnRfMTYo JmNodW5rLnBbMTJdKTsKLS0gICAgICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yWzNdID0gMDsK LS0gICAgICAgIH0KLS0KLSAgICAgICAgIGlmIChpZCA9PSBpZF9QTFRFIHx8IGlkID09IGlkX3RS TlMpCi0gICAgICAgICAgICAgbV9jaHVua3NJbmZvLnB1c2hfYmFjayhjaHVuayk7Ci0gICAgIH0K LUBAIC0zNTYsOSArMzQ3LDEzIEBAIGJvb2wgIFBuZ0RlY29kZXI6OnJlYWRIZWFkZXIoKQotICAg ICBtX2NvbG9yX3R5cGUgPSBjb2xvcl90eXBlOwotICAgICBtX2JpdF9kZXB0aCA9IGJpdF9kZXB0 aDsKLSAKLS0gICAgaWYgKG1faXNfZmNUTF9sb2FkZWQgJiYgKGludCh4MCArIHcwKSA+IG1fd2lk dGggfHwgaW50KHkwICsgaDApID4gbV9oZWlnaHQgfHwgZG9wID4gMiB8fCBib3AgPiAxKSkKLSsg ICAgaWYgKG1faXNfZmNUTF9sb2FkZWQgJiYgKChsb25nIGxvbmcgaW50KXgwICsgdzAgPiBtX3dp ZHRoIHx8IChsb25nIGxvbmcgaW50KXkwICsgaDAgPiBtX2hlaWdodCB8fCBkb3AgPiAyIHx8IGJv cCA+IDEpKQotICAgICAgICAgcmV0dXJuIGZhbHNlOwotIAotKyAgICBwbmdfY29sb3JfMTZwIGJh Y2tncm91bmRfY29sb3I7Ci0rICAgIGlmIChwbmdfZ2V0X2JLR0QobV9wbmdfcHRyLCBtX2luZm9f cHRyLCAmYmFja2dyb3VuZF9jb2xvcikpCi0rICAgICAgICBtX2FuaW1hdGlvbi5iZ2NvbG9yID0g U2NhbGFyKGJhY2tncm91bmRfY29sb3ItPmJsdWUsIGJhY2tncm91bmRfY29sb3ItPmdyZWVuLCBi YWNrZ3JvdW5kX2NvbG9yLT5yZWQpOwotKwotICAgICBpZiAoYml0X2RlcHRoIDw9IDggfHwgYml0 X2RlcHRoID09IDE2KQotICAgICB7Ci0gICAgICAgICBzd2l0Y2ggKGNvbG9yX3R5cGUpCi1AQCAt MTU0NCw5ICsxNTM5LDkgQEAgYm9vbCBQbmdFbmNvZGVyOjp3cml0ZWFuaW1hdGlvbihjb25zdCBB bmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3Qgc3RkOjp2ZWN0b3I8aW4KLSAgICAgICAgIGlmICgo YW5pbWF0aW9uLmJnY29sb3IgIT0gU2NhbGFyKCkpICYmIGNvbHR5cGUpCi0gICAgICAgICB7Ci0g ICAgICAgICAgICAgdW5zaWduZWQgY2hhciBiZ3ZhbHVlWzZdID0ge307Ci0tICAgICAgICAgICAg Ymd2YWx1ZVsxXSA9IGFuaW1hdGlvbi5iZ2NvbG9yWzBdOwotKyAgICAgICAgICAgIGJndmFsdWVb MV0gPSBhbmltYXRpb24uYmdjb2xvclsyXTsKLSAgICAgICAgICAgICBiZ3ZhbHVlWzNdID0gYW5p bWF0aW9uLmJnY29sb3JbMV07Ci0tICAgICAgICAgICAgYmd2YWx1ZVs1XSA9IGFuaW1hdGlvbi5i Z2NvbG9yWzJdOwotKyAgICAgICAgICAgIGJndmFsdWVbNV0gPSBhbmltYXRpb24uYmdjb2xvclsw XTsKLSAgICAgICAgICAgICB3cml0ZUNodW5rKG1fZiwgImJLR0QiLCBiZ3ZhbHVlLCA2KTsgLy90 aGUgYktHRCBjaHVuayBtdXN0IHByZWNlZGUgdGhlIGZpcnN0IElEQVQgY2h1bmssIGFuZCBtdXN0 IGZvbGxvdyB0aGUgUExURSBjaHVuay4KLSAgICAgICAgIH0KLSAKLS0tIAotMi40OC4xCi0KCmRp ZmYgLS1naXQgYS8wMDA5LU1lcmdlLXB1bGwtcmVxdWVzdC0yNjg3Mi1mcm9tLXN0dXJrbWVuNzIt SW1hZ2VFbmNvZGUucGF0Y2ggYi8wMDA5LU1lcmdlLXB1bGwtcmVxdWVzdC0yNjg3Mi1mcm9tLXN0 dXJrbWVuNzItSW1hZ2VFbmNvZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4 IDNiNDA0YjMuLjAwMDAwMDAKLS0tIGEvMDAwOS1NZXJnZS1wdWxsLXJlcXVlc3QtMjY4NzItZnJv bS1zdHVya21lbjcyLUltYWdlRW5jb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzY3ICsw LDAgQEAKLUZyb20gOGFhMTA4NmFiNDc1ZWYwMDQwZDM4NjVlNDllZGQ2ZmViYTRlYjdkMyBNb24g U2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFN1bGV5bWFuIFRVUktNRU4gPHN0dXJrbWVuQGhv dG1haWwuY29tPgotRGF0ZTogVHVlLCA0IEZlYiAyMDI1IDEyOjIxOjU1ICswMzAwCi1TdWJqZWN0 OiBbUEFUQ0ggMDkvMTBdIE1lcmdlIHB1bGwgcmVxdWVzdCAjMjY4NzIgZnJvbQotIHN0dXJrbWVu NzI6SW1hZ2VFbmNvZGVyc19yZXZpc2lvbnMKLQotUGVyZm9ybWFuY2UgdGVzdHMgZm9yIGltYWdl IGVuY29kZXJzIGFuZCBkZWNvZGVycyBhbmQgY29kZSBjbGVhbnVwICMyNjg3MgotCi0jIyMgUHVs bCBSZXF1ZXN0IFJlYWRpbmVzcyBDaGVja2xpc3QKLQotU2VlIGRldGFpbHMgYXQgaHR0cHM6Ly9n aXRodWIuY29tL29wZW5jdi9vcGVuY3Yvd2lraS9Ib3dfdG9fY29udHJpYnV0ZSNtYWtpbmctYS1n b29kLXB1bGwtcmVxdWVzdAotCi0tIFt4XSBJIGFncmVlIHRvIGNvbnRyaWJ1dGUgdG8gdGhlIHBy b2plY3QgdW5kZXIgQXBhY2hlIDIgTGljZW5zZS4KLS0gW3hdIFRvIHRoZSBiZXN0IG9mIG15IGtu b3dsZWRnZSwgdGhlIHByb3Bvc2VkIHBhdGNoIGlzIG5vdCBiYXNlZCBvbiBhIGNvZGUgdW5kZXIg R1BMIG9yIGFub3RoZXIgbGljZW5zZSB0aGF0IGlzIGluY29tcGF0aWJsZSB3aXRoIE9wZW5DVgot LSBbeF0gVGhlIFBSIGlzIHByb3Bvc2VkIHRvIHRoZSBwcm9wZXIgYnJhbmNoCi0tIFsgXSBUaGVy ZSBpcyBhIHJlZmVyZW5jZSB0byB0aGUgb3JpZ2luYWwgYnVnIHJlcG9ydCBhbmQgcmVsYXRlZCB3 b3JrCi0tIFsgXSBUaGVyZSBpcyBhY2N1cmFjeSB0ZXN0LCBwZXJmb3JtYW5jZSB0ZXN0IGFuZCB0 ZXN0IGRhdGEgaW4gb3BlbmN2X2V4dHJhIHJlcG9zaXRvcnksIGlmIGFwcGxpY2FibGUKLSAgICAg IFBhdGNoIHRvIG9wZW5jdl9leHRyYSBoYXMgdGhlIHNhbWUgYnJhbmNoIG5hbWUuCi0tIFsgXSBU aGUgZmVhdHVyZSBpcyB3ZWxsIGRvY3VtZW50ZWQgYW5kIHNhbXBsZSBjb2RlIGNhbiBiZSBidWls dCB3aXRoIHRoZSBwcm9qZWN0IENNYWtlCi0tLS0KLSBtb2R1bGVzL2hpZ2hndWkvc3JjL3dpbmRv d193MzIuY3BwICAgICAgICAgICAgfCAgMTAgKy0KLSBtb2R1bGVzL2ltZ2NvZGVjcy9wZXJmL3Bl cmZfZGVjb2RlX2VuY29kZS5jcHAgfCAxMzEgKysrKysrKysrKysrKysrKysrCi0gbW9kdWxlcy9p bWdjb2RlY3Mvc3JjL2dyZm10X2F2aWYuY3BwICAgICAgICAgIHwgICA1IC0KLSBtb2R1bGVzL2lt Z2NvZGVjcy9zcmMvZ3JmbXRfYXZpZi5ocHAgICAgICAgICAgfCAgIDEgLQotIG1vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9iYXNlLmNwcCAgICAgICAgICB8ICAgOCArLQotIG1vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9iYXNlLmhwcCAgICAgICAgICB8ICAgNSArLQotIG1vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9naWYuY3BwICAgICAgICAgICB8ICAxMCArLQotIG1vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9naWYuaHBwICAgICAgICAgICB8ICAgMyAtCi0gbW9kdWxlcy9pbWdj b2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAgICAgICAgICAgIHwgICA2ICstCi0gbW9kdWxlcy9pbWdj b2RlY3Mvc3JjL2xvYWRzYXZlLmNwcCAgICAgICAgICAgIHwgICAyICstCi0gMTAgZmlsZXMgY2hh bmdlZCwgMTU1IGluc2VydGlvbnMoKyksIDI2IGRlbGV0aW9ucygtKQotIGNyZWF0ZSBtb2RlIDEw MDY0NCBtb2R1bGVzL2ltZ2NvZGVjcy9wZXJmL3BlcmZfZGVjb2RlX2VuY29kZS5jcHAKLQotZGlm ZiAtLWdpdCBhL21vZHVsZXMvaGlnaGd1aS9zcmMvd2luZG93X3czMi5jcHAgYi9tb2R1bGVzL2hp Z2hndWkvc3JjL3dpbmRvd193MzIuY3BwCi1pbmRleCAyNTQzYzgxYzZhLi44ZTA0MWM5NjA5IDEw MDY0NAotLS0tIGEvbW9kdWxlcy9oaWdoZ3VpL3NyYy93aW5kb3dfdzMyLmNwcAotKysrIGIvbW9k dWxlcy9oaWdoZ3VpL3NyYy93aW5kb3dfdzMyLmNwcAotQEAgLTIxNzAsOSArMjE3MCwxNSBAQCBz dGF0aWMgdm9pZCBzaG93U2F2ZURpYWxvZyhDdldpbmRvdyYgd2luZG93KQotICNpZmRlZiBIQVZF X1dFQlAKLSAgICAgICAgICAgICAgICAgICAgICAgIldlYlAgZmlsZXMgKCoud2VicClcMCoud2Vi cFwwIgotICNlbmRpZgotLSAgICAgICAgICAgICAgICAgICAgICAiUG9ydGFibGUgaW1hZ2UgZm9y bWF0ICgqLnBibTsqLnBnbTsqLnBwbTsqLnB4bTsqLnBubSlcMCoucGJtOyoucGdtOyoucHBtOyou cHhtOyoucG5tXDAiCi0rICAgICAgICAgICAgICAgICAgICAgICJQb3J0YWJsZSBpbWFnZSBmb3Jt YXQgKCoucGJtOyoucGdtOyoucHBtOyoucG5tOyoucGFtKVwwKi5wYm07Ki5wZ207Ki5wcG07Ki5w bm07Ki5wYW1cMCIKLSAjaWZkZWYgSEFWRV9PUEVORVhSCi0gICAgICAgICAgICAgICAgICAgICAg ICJPcGVuRVhSIEltYWdlIGZpbGVzICgqLmV4cilcMCouZXhyXDAiCi0rI2VuZGlmCi0rI2lmZGVm IEhBVkVfQVZJRgotKyAgICAgICAgICAgICAgICAgICAgICAiQVZJRiBmaWxlcyAoKi5hdmlmKVww Ki5hdmlmXDAiCi0rI2VuZGlmCi0rI2lmZGVmIEhBVkVfSU1HQ09ERUNfR0lGCi0rICAgICAgICAg ICAgICAgICAgICAgICJHcmFwaGljcyBJbnRlcmNoYW5nZSBGb3JtYXQgODlhKCouZ2lmKVwwKi5n aWZcMCIKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgIlJhZGlhbmNlIEhEUiAoKi5o ZHI7Ki5waWMpXDAqLmhkcjsqLnBpY1wwIgotICAgICAgICAgICAgICAgICAgICAgICAiU3VuIHJh c3RlciBmaWxlcyAoKi5zcjsqLnJhcylcMCouc3I7Ki5yYXNcMCIKLUBAIC0yMTk0LDcgKzIyMDAs NyBAQCBzdGF0aWMgdm9pZCBzaG93U2F2ZURpYWxvZyhDdldpbmRvdyYgd2luZG93KQotICAgICB9 Ci0gI2Vsc2UKLSAgICAgQ1ZfVU5VU0VEKHdpbmRvdyk7Ci0tICAgIENWX0xPR19XQVJOSU5HKCJT YXZlIGRpYWxvZyByZXF1aXJlcyBlbmFibGVkICdpbWdjb2RlY3MnIG1vZHVsZS4iKTsKLSsgICAg Q1ZfTE9HX1dBUk5JTkcoTlVMTCwgIlNhdmUgZGlhbG9nIHJlcXVpcmVzIGVuYWJsZWQgJ2ltZ2Nv ZGVjcycgbW9kdWxlLiIpOwotICAgICByZXR1cm47Ci0gI2VuZGlmCi0gfQotZGlmZiAtLWdpdCBh L21vZHVsZXMvaW1nY29kZWNzL3BlcmYvcGVyZl9kZWNvZGVfZW5jb2RlLmNwcCBiL21vZHVsZXMv aW1nY29kZWNzL3BlcmYvcGVyZl9kZWNvZGVfZW5jb2RlLmNwcAotbmV3IGZpbGUgbW9kZSAxMDA2 NDQKLWluZGV4IDAwMDAwMDAwMDAuLmNlNjkzY2I4NzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL21v ZHVsZXMvaW1nY29kZWNzL3BlcmYvcGVyZl9kZWNvZGVfZW5jb2RlLmNwcAotQEAgLTAsMCArMSwx MzEgQEAKLSsvLyBUaGlzIGZpbGUgaXMgcGFydCBvZiBPcGVuQ1YgcHJvamVjdC4KLSsvLyBJdCBp cyBzdWJqZWN0IHRvIHRoZSBsaWNlbnNlIHRlcm1zIGluIHRoZSBMSUNFTlNFIGZpbGUgZm91bmQg aW4gdGhlIHRvcC1sZXZlbCBkaXJlY3RvcnkKLSsvLyBvZiB0aGlzIGRpc3RyaWJ1dGlvbiBhbmQg YXQgaHR0cDovL29wZW5jdi5vcmcvbGljZW5zZS5odG1sCi0rCi0rI2luY2x1ZGUgInBlcmZfcHJl Y29tcC5ocHAiCi0rCi0rbmFtZXNwYWNlIG9wZW5jdl90ZXN0Ci0rewotKwotKyNpZmRlZiBIQVZF X1BORwotKwotK3VzaW5nIG5hbWVzcGFjZSBwZXJmOwotKwotK3R5cGVkZWYgcGVyZjo6VGVzdEJh c2VXaXRoUGFyYW08c3RkOjpzdHJpbmc+IERlY29kZTsKLSt0eXBlZGVmIHBlcmY6OlRlc3RCYXNl V2l0aFBhcmFtPHN0ZDo6c3RyaW5nPiBFbmNvZGU7Ci0rCi0rY29uc3Qgc3RyaW5nIGV4dHNbXSA9 IHsKLSsjaWZkZWYgSEFWRV9BVklGCi0rICAgICIuYXZpZiIsCi0rI2VuZGlmCi0rICAgICIuYm1w IiwKLSsjaWZkZWYgSEFWRV9JTUdDT0RFQ19HSUYKLSsgICAgIi5naWYiLAotKyNlbmRpZgotKyNp ZiAoZGVmaW5lZChIQVZFX0pBU1BFUikgJiYgZGVmaW5lZChPUEVOQ1ZfSU1HQ09ERUNTX0VOQUJM RV9KQVNQRVJfVEVTVFMpKSBcCi0rICAgIHx8IGRlZmluZWQoSEFWRV9PUEVOSlBFRykKLSsgICAg Ii5qcDIiLAotKyNlbmRpZgotKyNpZmRlZiBIQVZFX0pQRUcKLSsgICAgIi5qcGciLAotKyNlbmRp ZgotKyNpZmRlZiBIQVZFX0pQRUdYTAotKyAgICAiLmp4bCIsCi0rI2VuZGlmCi0rICAgICIucG5n IiwKLSsjaWZkZWYgSEFWRV9JTUdDT0RFQ19QWE0KLSsgICAgIi5wcG0iLAotKyNlbmRpZgotKyNp ZmRlZiBIQVZFX0lNR0NPREVDX1NVTlJBU1RFUgotKyAgICAiLnJhcyIsCi0rI2VuZGlmCi0rI2lm ZGVmIEhBVkVfVElGRgotKyAgICAiLnRpZmYiLAotKyNlbmRpZgotKyNpZmRlZiBIQVZFX1dFQlAK LSsgICAgIi53ZWJwIiwKLSsjZW5kaWYKLSt9OwotKwotK2NvbnN0IHN0cmluZyBleHRzX211bHRp W10gPSB7Ci0rI2lmZGVmIEhBVkVfQVZJRgotKyAgICAiLmF2aWYiLAotKyNlbmRpZgotKyNpZmRl ZiBIQVZFX0lNR0NPREVDX0dJRgotKyAgICAiLmdpZiIsCi0rI2VuZGlmCi0rICAgICIucG5nIiwK LSsjaWZkZWYgSEFWRV9USUZGCi0rICAgICIudGlmZiIsCi0rI2VuZGlmCi0rI2lmZGVmIEhBVkVf V0VCUAotKyAgICAiLndlYnAiLAotKyNlbmRpZgotK307Ci0rCi0rUEVSRl9URVNUX1AoRGVjb2Rl LCBiZ3IsIHRlc3Rpbmc6OlZhbHVlc0luKGV4dHMpKQotK3sKLSsgICAgU3RyaW5nIGZpbGVuYW1l ID0gZ2V0RGF0YVBhdGgoInBlcmYvMTkyMHgxMDgwLnBuZyIpOwotKwotKyAgICBNYXQgc3JjID0g aW1yZWFkKGZpbGVuYW1lKTsKLSsgICAgRVhQRUNUX0ZBTFNFKHNyYy5lbXB0eSgpKSA8PCAiQ2Fu bm90IG9wZW4gdGVzdCBpbWFnZSBwZXJmLzE5MjB4MTA4MC5wbmciOwotKyAgICB2ZWN0b3I8dWNo YXI+IGJ1ZjsKLSsgICAgRVhQRUNUX1RSVUUoaW1lbmNvZGUoR2V0UGFyYW0oKSwgc3JjLCBidWYp KTsKLSsKLSsgICAgVEVTVF9DWUNMRSgpIGltZGVjb2RlKGJ1ZiwgSU1SRUFEX1VOQ0hBTkdFRCk7 Ci0rCi0rICAgIFNBTklUWV9DSEVDS19OT1RISU5HKCk7Ci0rfQotKwotK1BFUkZfVEVTVF9QKERl Y29kZSwgcmdiLCB0ZXN0aW5nOjpWYWx1ZXNJbihleHRzKSkKLSt7Ci0rICAgIFN0cmluZyBmaWxl bmFtZSA9IGdldERhdGFQYXRoKCJwZXJmLzE5MjB4MTA4MC5wbmciKTsKLSsKLSsgICAgTWF0IHNy YyA9IGltcmVhZChmaWxlbmFtZSk7Ci0rICAgIEVYUEVDVF9GQUxTRShzcmMuZW1wdHkoKSkgPDwg IkNhbm5vdCBvcGVuIHRlc3QgaW1hZ2UgcGVyZi8xOTIweDEwODAucG5nIjsKLSsgICAgdmVjdG9y PHVjaGFyPiBidWY7Ci0rICAgIEVYUEVDVF9UUlVFKGltZW5jb2RlKEdldFBhcmFtKCksIHNyYywg YnVmKSk7Ci0rCi0rICAgIFRFU1RfQ1lDTEUoKSBpbWRlY29kZShidWYsIElNUkVBRF9DT0xPUl9S R0IpOwotKwotKyAgICBTQU5JVFlfQ0hFQ0tfTk9USElORygpOwotK30KLSsKLStQRVJGX1RFU1Rf UChFbmNvZGUsIGJnciwgdGVzdGluZzo6VmFsdWVzSW4oZXh0cykpCi0rewotKyAgICBTdHJpbmcg ZmlsZW5hbWUgPSBnZXREYXRhUGF0aCgicGVyZi8xOTIweDEwODAucG5nIik7Ci0rCi0rICAgIE1h dCBzcmMgPSBpbXJlYWQoZmlsZW5hbWUpOwotKyAgICBFWFBFQ1RfRkFMU0Uoc3JjLmVtcHR5KCkp IDw8ICJDYW5ub3Qgb3BlbiB0ZXN0IGltYWdlIHBlcmYvMTkyMHgxMDgwLnBuZyI7Ci0rICAgIHZl Y3Rvcjx1Y2hhcj4gYnVmOwotKwotKyAgICBURVNUX0NZQ0xFKCkgaW1lbmNvZGUoR2V0UGFyYW0o KSwgc3JjLCBidWYpOwotKwotKyAgICBzdGQ6OmNvdXQgPDwgIkVuY29kZWQgYnVmZmVyIHNpemU6 ICIgPDwgYnVmLnNpemUoKQotKyAgICAgICAgPDwgIiBieXRlcywgQ29tcHJlc3Npb24gcmF0aW86 ICIgPDwgc3RkOjpmaXhlZCA8PCBzdGQ6OnNldHByZWNpc2lvbigyKQotKyAgICAgICAgPDwgKHN0 YXRpY19jYXN0PGRvdWJsZT4oYnVmLnNpemUoKSkgLyAoc3JjLnRvdGFsKCkgKiBzcmMuY2hhbm5l bHMoKSkpICogMTAwLjAgPDwgIiUiIDw8IHN0ZDo6ZW5kbDsKLSsKLSsgICAgU0FOSVRZX0NIRUNL X05PVEhJTkcoKTsKLSt9Ci0rCi0rUEVSRl9URVNUX1AoRW5jb2RlLCBtdWx0aSwgdGVzdGluZzo6 VmFsdWVzSW4oZXh0c19tdWx0aSkpCi0rewotKyAgICBTdHJpbmcgZmlsZW5hbWUgPSBnZXREYXRh UGF0aCgicGVyZi8xOTIweDEwODAucG5nIik7Ci0rICAgIHZlY3RvcjxNYXQ+IHZlYzsKLSsgICAg RVhQRUNUX1RSVUUoaW1yZWFkbXVsdGkoZmlsZW5hbWUsIHZlYykpOwotKyAgICB2ZWMucHVzaF9i YWNrKHZlYy5iYWNrKCkuY2xvbmUoKSk7Ci0rICAgIGNpcmNsZSh2ZWMuYmFjaygpLCBQb2ludCgx MDAsIDEwMCksIDQ1LCBTY2FsYXIoMCwgMCwgMjU1LCAwKSwgMiwgTElORV9BQSk7Ci0rICAgIHZl Y3Rvcjx1Y2hhcj4gYnVmOwotKyAgICBFWFBFQ1RfVFJVRShpbXdyaXRlKCJ0ZXN0IiArIEdldFBh cmFtKCksIHZlYykpOwotKwotKyAgICBURVNUX0NZQ0xFKCkgaW1lbmNvZGUoR2V0UGFyYW0oKSwg dmVjLCBidWYpOwotKwotKyAgICBzdGQ6OmNvdXQgPDwgIkVuY29kZWQgYnVmZmVyIHNpemU6ICIg PDwgYnVmLnNpemUoKQotKyAgICAgICAgPDwgIiBieXRlcywgQ29tcHJlc3Npb24gcmF0aW86ICIg PDwgc3RkOjpmaXhlZCA8PCBzdGQ6OnNldHByZWNpc2lvbigyKQotKyAgICAgICAgPDwgKHN0YXRp Y19jYXN0PGRvdWJsZT4oYnVmLnNpemUoKSkgLyAodmVjWzBdLnRvdGFsKCkgKiB2ZWNbMF0uY2hh bm5lbHMoKSkpICogMTAwLjAgPDwgIiUiIDw8IHN0ZDo6ZW5kbDsKLSsKLSsgICAgU0FOSVRZX0NI RUNLX05PVEhJTkcoKTsKLSt9Ci0rI2VuZGlmIC8vIEhBVkVfUE5HCi0rCi0rfSAvLyBuYW1lc3Bh Y2UKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYXZpZi5jcHAgYi9t b2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYXZpZi5jcHAKLWluZGV4IGQzZmI1MDA2MDQuLmMz NWViNTAzMDYgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYXZpZi5j cHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9hdmlmLmNwcAotQEAgLTI5OCwx MSArMjk4LDYgQEAgYm9vbCBBdmlmRW5jb2Rlcjo6aXNGb3JtYXRTdXBwb3J0ZWQoaW50IGRlcHRo KSBjb25zdCB7Ci0gICByZXR1cm4gKGRlcHRoID09IENWXzhVIHx8IGRlcHRoID09IENWXzE2VSk7 Ci0gfQotIAotLWJvb2wgQXZpZkVuY29kZXI6OndyaXRlKGNvbnN0IE1hdCAmaW1nLCBjb25zdCBz dGQ6OnZlY3RvcjxpbnQ+ICZwYXJhbXMpIHsKLS0gIHN0ZDo6dmVjdG9yPE1hdD4gaW1nX3ZlYygx LCBpbWcpOwotLSAgcmV0dXJuIHdyaXRlbXVsdGkoaW1nX3ZlYywgcGFyYW1zKTsKLS19Ci0tCi0g Ym9vbCBBdmlmRW5jb2Rlcjo6d3JpdGVhbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRp b24sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgc3RkOjp2ZWN0b3I8 aW50PiAmcGFyYW1zKSB7Ci0gICBpbnQgYml0X2RlcHRoID0gODsKLWRpZmYgLS1naXQgYS9tb2R1 bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYXZpZi5ocHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMv Z3JmbXRfYXZpZi5ocHAKLWluZGV4IDg3Yjc2NTYxOWUuLjlmMDk3YWFmNTUgMTAwNjQ0Ci0tLS0g YS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYXZpZi5ocHAKLSsrKyBiL21vZHVsZXMvaW1n Y29kZWNzL3NyYy9ncmZtdF9hdmlmLmhwcAotQEAgLTQxLDcgKzQxLDYgQEAgY2xhc3MgQXZpZkVu Y29kZXIgQ1ZfRklOQUwgOiBwdWJsaWMgQmFzZUltYWdlRW5jb2RlciB7Ci0gICB+QXZpZkVuY29k ZXIoKSBDVl9PVkVSUklERTsKLSAKLSAgIGJvb2wgaXNGb3JtYXRTdXBwb3J0ZWQoaW50IGRlcHRo KSBjb25zdCBDVl9PVkVSUklERTsKLS0gIGJvb2wgd3JpdGUoY29uc3QgTWF0JiBpbWcsIGNvbnN0 IHN0ZDo6dmVjdG9yPGludD4mIHBhcmFtcykgQ1ZfT1ZFUlJJREU7Ci0gICBib29sIHdyaXRlYW5p bWF0aW9uKGNvbnN0IEFuaW1hdGlvbiYgYW5pbWF0aW9uLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+ JiBwYXJhbXMpIENWX09WRVJSSURFOwotIAotICAgSW1hZ2VFbmNvZGVyIG5ld0VuY29kZXIoKSBj b25zdCBDVl9PVkVSUklERTsKLWRpZmYgLS1naXQgYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3Jm bXRfYmFzZS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfYmFzZS5jcHAKLWluZGV4 IDFlMDk4ODI3ODAuLmRjM2QwN2FiNzggMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9z cmMvZ3JmbXRfYmFzZS5jcHAKLSsrKyBiL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9iYXNl LmNwcAotQEAgLTE0MCw2ICsxNDAsMTEgQEAgYm9vbCBCYXNlSW1hZ2VFbmNvZGVyOjpzZXREZXN0 aW5hdGlvbiggc3RkOjp2ZWN0b3I8dWNoYXI+JiBidWYgKQotICAgICByZXR1cm4gdHJ1ZTsKLSB9 Ci0gCi0rYm9vbCBCYXNlSW1hZ2VFbmNvZGVyOjp3cml0ZShjb25zdCBNYXQgJmltZywgY29uc3Qg c3RkOjp2ZWN0b3I8aW50PiAmcGFyYW1zKSB7Ci0rICAgIHN0ZDo6dmVjdG9yPE1hdD4gaW1nX3Zl YygxLCBpbWcpOwotKyAgICByZXR1cm4gd3JpdGVtdWx0aShpbWdfdmVjLCBwYXJhbXMpOwotK30K LSsKLSBib29sIEJhc2VJbWFnZUVuY29kZXI6OndyaXRlbXVsdGkoY29uc3Qgc3RkOjp2ZWN0b3I8 TWF0PiYgaW1nX3ZlYywgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcGFyYW1zKQotIHsKLSAgICAg aWYoaW1nX3ZlYy5zaXplKCkgPiAxKQotQEAgLTE1Nyw2ICsxNjIsNyBAQCBib29sIEJhc2VJbWFn ZUVuY29kZXI6OndyaXRlbXVsdGkoY29uc3Qgc3RkOjp2ZWN0b3I8TWF0PiYgaW1nX3ZlYywgY29u c3Qgc3RkOjp2ZQotIAotIGJvb2wgQmFzZUltYWdlRW5jb2Rlcjo6d3JpdGVhbmltYXRpb24oY29u c3QgQW5pbWF0aW9uJiwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgKQotIHsKLSsgICAgQ1ZfTE9H X1dBUk5JTkcoTlVMTCwgIk5vIEFuaW1hdGlvbiBlbmNvZGVyIGZvciBzcGVjaWZpZWQgZmlsZSBl eHRlbnNpb24iKTsKLSAgICAgcmV0dXJuIGZhbHNlOwotIH0KLSAKLUBAIC0xNjUsNyArMTcxLDcg QEAgSW1hZ2VFbmNvZGVyIEJhc2VJbWFnZUVuY29kZXI6Om5ld0VuY29kZXIoKSBjb25zdAotICAg ICByZXR1cm4gSW1hZ2VFbmNvZGVyKCk7Ci0gfQotIAotLXZvaWQgQmFzZUltYWdlRW5jb2Rlcjo6 dGhyb3dPbkVyb3IoKSBjb25zdAotK3ZvaWQgQmFzZUltYWdlRW5jb2Rlcjo6dGhyb3dPbkVycm9y KCkgY29uc3QKLSB7Ci0gICAgIGlmKCFtX2xhc3RfZXJyb3IuZW1wdHkoKSkKLSAgICAgewotZGlm ZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9iYXNlLmhwcCBiL21vZHVsZXMv aW1nY29kZWNzL3NyYy9ncmZtdF9iYXNlLmhwcAotaW5kZXggYTkwYmQ4YTNkZS4uYWU1NjIyNTI4 YyAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9iYXNlLmhwcAotKysr IGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2Jhc2UuaHBwCi1AQCAtMjAyLDEyICsyMDIs MTEgQEAgcHVibGljOgotIAotICAgICAvKioKLSAgICAgICogQGJyaWVmIEVuY29kZSBhbmQgd3Jp dGUgdGhlIGltYWdlIGRhdGEuCi0tICAgICAqIFRoaXMgaXMgYSBwdXJlIHZpcnR1YWwgZnVuY3Rp b24gdGhhdCBtdXN0IGJlIGltcGxlbWVudGVkIGJ5IGRlcml2ZWQgY2xhc3Nlcy4KLSAgICAgICog QHBhcmFtIGltZyBUaGUgTWF0IG9iamVjdCBjb250YWluaW5nIHRoZSBpbWFnZSBkYXRhIHRvIGJl IGVuY29kZWQuCi0gICAgICAqIEBwYXJhbSBwYXJhbXMgQSB2ZWN0b3Igb2YgcGFyYW1ldGVycyBj b250cm9sbGluZyB0aGUgZW5jb2RpbmcgcHJvY2VzcyAoZS5nLiwgY29tcHJlc3Npb24gbGV2ZWwp LgotICAgICAgKiBAcmV0dXJuIHRydWUgaWYgdGhlIGltYWdlIHdhcyBzdWNjZXNzZnVsbHkgd3Jp dHRlbiwgZmFsc2Ugb3RoZXJ3aXNlLgotICAgICAgKi8KLS0gICAgdmlydHVhbCBib29sIHdyaXRl KGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3RvcjxpbnQ+JiBwYXJhbXMpID0gMDsKLSsg ICAgdmlydHVhbCBib29sIHdyaXRlKGNvbnN0IE1hdCYgaW1nLCBjb25zdCBzdGQ6OnZlY3Rvcjxp bnQ+JiBwYXJhbXMpOwotIAotICAgICAvKioKLSAgICAgICogQGJyaWVmIEVuY29kZSBhbmQgd3Jp dGUgbXVsdGlwbGUgaW1hZ2VzIChlLmcuLCBmb3IgYW5pbWF0ZWQgZm9ybWF0cykuCi1AQCAtMjM2 LDcgKzIzNSw3IEBAIHB1YmxpYzoKLSAgICAgICogQGJyaWVmIFRocm93IGFuIGV4Y2VwdGlvbiBi YXNlZCBvbiB0aGUgbGFzdCBlcnJvciBlbmNvdW50ZXJlZCBkdXJpbmcgZW5jb2RpbmcuCi0gICAg ICAqIFRoaXMgbWV0aG9kIGNhbiBiZSB1c2VkIHRvIHByb3BhZ2F0ZSBlcnJvciBjb25kaXRpb25z IGJhY2sgdG8gdGhlIGNhbGxlci4KLSAgICAgICovCi0tICAgIHZpcnR1YWwgdm9pZCB0aHJvd09u RXJvcigpIGNvbnN0OwotKyAgICB2aXJ0dWFsIHZvaWQgdGhyb3dPbkVycm9yKCkgY29uc3Q7Ci0g Ci0gcHJvdGVjdGVkOgotICAgICBTdHJpbmcgbV9kZXNjcmlwdGlvbjsgICAgLy8vPCBEZXNjcmlw dGlvbiBvZiB0aGUgZW5jb2RlciAoZS5nLiwgZm9ybWF0IG5hbWUsIGNhcGFiaWxpdGllcykuCi1k aWZmIC0tZ2l0IGEvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2dpZi5jcHAgYi9tb2R1bGVz L2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZ2lmLmNwcAotaW5kZXggNWE2NWFlMDRiMS4uYjA1MzNiNjQ0 ZiAxMDA2NDQKLS0tLSBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9naWYuY3BwCi0rKysg Yi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRfZ2lmLmNwcAotQEAgLTQ4OCwxOSArNDg4LDEx IEBAIEdpZkVuY29kZXI6On5HaWZFbmNvZGVyKCkgewotICAgICBjbG9zZSgpOwotIH0KLSAKLS1i b29sIEdpZkVuY29kZXI6OmlzRm9ybWF0U3VwcG9ydGVkKGludCBkZXB0aCkgY29uc3QgewotLSAg ICByZXR1cm4gZGVwdGggPT0gQ1ZfOFU7Ci0tfQotLQotLWJvb2wgR2lmRW5jb2Rlcjo6d3JpdGUo Y29uc3QgTWF0ICZpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4gJnBhcmFtcykgewotLSAgICBz dGQ6OnZlY3RvcjxNYXQ+IGltZ192ZWMoMSwgaW1nKTsKLS0gICAgcmV0dXJuIHdyaXRlbXVsdGko aW1nX3ZlYywgcGFyYW1zKTsKLS19Ci0tCi0gYm9vbCBHaWZFbmNvZGVyOjp3cml0ZWFuaW1hdGlv bihjb25zdCBBbmltYXRpb24mIGFuaW1hdGlvbiwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcGFy YW1zKSB7Ci0gICAgIGlmIChhbmltYXRpb24uZnJhbWVzLmVtcHR5KCkpIHsKLSAgICAgICAgIHJl dHVybiBmYWxzZTsKLSAgICAgfQotKyAgICBDVl9DaGVja0RlcHRoRVEoYW5pbWF0aW9uLmZyYW1l c1swXS5kZXB0aCgpLCBDVl84VSwgIkdJRiBlbmNvZGVyIHN1cHBvcnRzIG9ubHkgOC1iaXQgdW5z aWduZWQgaW1hZ2VzIik7Ci0gCi0gICAgIGlmIChtX2J1ZikgewotICAgICAgICAgaWYgKCFzdHJt Lm9wZW4oKm1fYnVmKSkgewotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZt dF9naWYuaHBwIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2dpZi5ocHAKLWluZGV4IDhm NTIwNzQ1YmEuLjg1NTI3MThkMDAgMTAwNjQ0Ci0tLS0gYS9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMv Z3JmbXRfZ2lmLmhwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X2dpZi5ocHAK LUBAIC04Myw5ICs4Myw2IEBAIHB1YmxpYzoKLSAgICAgR2lmRW5jb2RlcigpOwotICAgICB+R2lm RW5jb2RlcigpIENWX09WRVJSSURFOwotIAotLSAgICBib29sIGlzRm9ybWF0U3VwcG9ydGVkKGlu dCBkZXB0aCkgY29uc3QgQ1ZfT1ZFUlJJREU7Ci0tCi0tICAgIGJvb2wgd3JpdGUoY29uc3QgTWF0 JiBpbWcsIGNvbnN0IHN0ZDo6dmVjdG9yPGludD4mIHBhcmFtcykgQ1ZfT1ZFUlJJREU7Ci0gICAg IGJvb2wgd3JpdGVhbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRpb24sIGNvbnN0IHN0 ZDo6dmVjdG9yPGludD4mIHBhcmFtcykgQ1ZfT1ZFUlJJREU7Ci0gCi0gICAgIEltYWdlRW5jb2Rl ciBuZXdFbmNvZGVyKCkgY29uc3QgQ1ZfT1ZFUlJJREU7Ci1kaWZmIC0tZ2l0IGEvbW9kdWxlcy9p bWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvZ3JmbXRf cG5nLmNwcAotaW5kZXggZjdhMTljMmJmNS4uODI1MTIyMzA0YSAxMDA2NDQKLS0tLSBhL21vZHVs ZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2NvZGVjcy9z cmMvZ3JmbXRfcG5nLmNwcAotQEAgLTE0MTIsNiArMTQxMiw5IEBAIHZvaWQgUG5nRW5jb2Rlcjo6 ZGVmbGF0ZVJlY3RGaW4odW5zaWduZWQgY2hhciogemJ1ZiwgdWludDMyX3QqIHpzaXplLCBpbnQg YnBwLCBpCi0gCi0gYm9vbCBQbmdFbmNvZGVyOjp3cml0ZWFuaW1hdGlvbihjb25zdCBBbmltYXRp b24mIGFuaW1hdGlvbiwgY29uc3Qgc3RkOjp2ZWN0b3I8aW50PiYgcGFyYW1zKQotIHsKLSsgICAg aW50IGZyYW1lX3R5cGUgPSBhbmltYXRpb24uZnJhbWVzWzBdLnR5cGUoKTsKLSsgICAgaW50IGZy YW1lX2RlcHRoID0gYW5pbWF0aW9uLmZyYW1lc1swXS5kZXB0aCgpOwotKyAgICBDVl9DaGVja1R5 cGUoZnJhbWVfdHlwZSwgZnJhbWVfZGVwdGggPT0gQ1ZfOFUgfHwgZnJhbWVfZGVwdGggPT0gQ1Zf MTZVLCAiQVBORyBkZWNvZGVyIHN1cHBvcnRzIG9ubHkgOCBvciAxNiBiaXQgdW5zaWduZWQgaW1h Z2VzIik7Ci0gICAgIGludCBjb21wcmVzc2lvbl9sZXZlbCA9IDY7Ci0gICAgIGludCBjb21wcmVz c2lvbl9zdHJhdGVneSA9IElNV1JJVEVfUE5HX1NUUkFURUdZX1JMRTsgLy8gRGVmYXVsdCBzdHJh dGVneQotICAgICBib29sIGlzQmlsZXZlbCA9IGZhbHNlOwotQEAgLTE0MzUsNyArMTQzOCw4IEBA IGJvb2wgUG5nRW5jb2Rlcjo6d3JpdGVhbmltYXRpb24oY29uc3QgQW5pbWF0aW9uJiBhbmltYXRp b24sIGNvbnN0IHN0ZDo6dmVjdG9yPGluCi0gICAgICAgICB9Ci0gICAgIH0KLSAKLS0gICAgQ1Zf VU5VU0VEKGlzQmlsZXZlbCk7Ci0rICAgIGlmIChpc0JpbGV2ZWwpCi0rICAgICAgICBDVl9MT0df V0FSTklORyhOVUxMLCAiSU1XUklURV9QTkdfQklMRVZFTCBwYXJhbWV0ZXIgaXMgbm90IHN1cHBv cnRlZCB5ZXQuIik7Ci0gICAgIHVpbnQzMl90IGZpcnN0ID0wOwotICAgICB1aW50MzJfdCBsb29w cz0gYW5pbWF0aW9uLmxvb3BfY291bnQ7Ci0gICAgIHVpbnQzMl90IGNvbHR5cGU9IGFuaW1hdGlv bi5mcmFtZXNbMF0uY2hhbm5lbHMoKSA9PSAxID8gUE5HX0NPTE9SX1RZUEVfR1JBWSA6IGFuaW1h dGlvbi5mcmFtZXNbMF0uY2hhbm5lbHMoKSA9PSAzID8gUE5HX0NPTE9SX1RZUEVfUkdCIDogUE5H X0NPTE9SX1RZUEVfUkdCX0FMUEhBOwotZGlmZiAtLWdpdCBhL21vZHVsZXMvaW1nY29kZWNzL3Ny Yy9sb2Fkc2F2ZS5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMvbG9hZHNhdmUuY3BwCi1pbmRl eCBlYzI1ZjhjNjEwLi4zN2IwNzAxYzhhIDEwMDY0NAotLS0tIGEvbW9kdWxlcy9pbWdjb2RlY3Mv c3JjL2xvYWRzYXZlLmNwcAotKysrIGIvbW9kdWxlcy9pbWdjb2RlY3Mvc3JjL2xvYWRzYXZlLmNw cAotQEAgLTEzNzIsNyArMTM3Miw3IEBAIGJvb2wgaW1lbmNvZGUoIGNvbnN0IFN0cmluZyYgZXh0 LCBJbnB1dEFycmF5IF9pbWcsCi0gICAgICAgICBlbHNlCi0gICAgICAgICAgICAgY29kZSA9IGVu Y29kZXItPndyaXRlbXVsdGkod3JpdGVfdmVjLCBwYXJhbXMpOwotIAotLSAgICAgICAgZW5jb2Rl ci0+dGhyb3dPbkVyb3IoKTsKLSsgICAgICAgIGVuY29kZXItPnRocm93T25FcnJvcigpOwotICAg ICAgICAgQ1ZfQXNzZXJ0KCBjb2RlICk7Ci0gICAgIH0KLSAgICAgY2F0Y2ggKGNvbnN0IGN2OjpF eGNlcHRpb24mIGUpCi0tLSAKLTIuNDguMQotCgpkaWZmIC0tZ2l0IGEvMDAxMC1NZXJnZS1wdWxs LXJlcXVlc3QtMjY5MTUtZnJvbS1tc2hhYnVuaW4tZml4LXBuZy1iZS5wYXRjaCBiLzAwMTAtTWVy Z2UtcHVsbC1yZXF1ZXN0LTI2OTE1LWZyb20tbXNoYWJ1bmluLWZpeC1wbmctYmUucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3ZjQ5NTUuLjAwMDAwMDAKLS0tIGEvMDAxMC1N ZXJnZS1wdWxsLXJlcXVlc3QtMjY5MTUtZnJvbS1tc2hhYnVuaW4tZml4LXBuZy1iZS5wYXRjaAor KysgL2Rldi9udWxsCkBAIC0xLDU0ICswLDAgQEAKLUZyb20gYWIwYTQxNjcwNTdkYWRjZmM0OTdm MGQ0ZDY1M2I1ZWVjN2ZkNTg2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1ha3Np bSBTaGFidW5pbiA8bWFrc2ltLnNoYWJ1bmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgRmVi IDIwMjUgMTY6NTg6MTUgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMF0gTWVyZ2UgcHVsbCBy ZXF1ZXN0ICMyNjkxNSBmcm9tIG1zaGFidW5pbjpmaXgtcG5nLWJlCi0KLVJlc29sdmVzICMyNjkx MwotUmVsYXRlZCg/KTogIzI1NzE1ICMyNjgzMgotLS0tCi0gbW9kdWxlcy9pbWdjb2RlY3Mvc3Jj L2dyZm10X3BuZy5jcHAgfCAyMiArKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5n ZWQsIDExIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbW9k dWxlcy9pbWdjb2RlY3Mvc3JjL2dyZm10X3BuZy5jcHAgYi9tb2R1bGVzL2ltZ2NvZGVjcy9zcmMv Z3JmbXRfcG5nLmNwcAotaW5kZXggODI1MTIyMzA0YS4uODRkZjk3NTQ3MSAxMDA2NDQKLS0tLSBh L21vZHVsZXMvaW1nY29kZWNzL3NyYy9ncmZtdF9wbmcuY3BwCi0rKysgYi9tb2R1bGVzL2ltZ2Nv ZGVjcy9zcmMvZ3JmbXRfcG5nLmNwcAotQEAgLTEyMSwxNiArMTIxLDE2IEBACi0gbmFtZXNwYWNl IGN2Ci0gewotIAotLWNvbnN0IHVpbnQzMl90IGlkX0lIRFIgPSAweDUyNDQ0ODQ5OyAvLyBQTkcg aGVhZGVyCi0tY29uc3QgdWludDMyX3QgaWRfYWNUTCA9IDB4NEM1NDYzNjE7IC8vIEFuaW1hdGlv biBjb250cm9sIGNodW5rCi0tY29uc3QgdWludDMyX3QgaWRfZmNUTCA9IDB4NEM1NDYzNjY7IC8v IEZyYW1lIGNvbnRyb2wgY2h1bmsKLS1jb25zdCB1aW50MzJfdCBpZF9JREFUID0gMHg1NDQxNDQ0 OTsgLy8gZmlyc3QgZnJhbWUgYW5kL29yIGRlZmF1bHQgaW1hZ2UKLS1jb25zdCB1aW50MzJfdCBp ZF9mZEFUID0gMHg1NDQxNjQ2NjsgLy8gRnJhbWUgZGF0YSBjaHVuawotLWNvbnN0IHVpbnQzMl90 IGlkX1BMVEUgPSAweDQ1NTQ0QzUwOyAvLyBUaGUgUExURSBjaHVuayBjb250YWlucyBhIGNvbG9y IHBhbGV0dGUgZm9yIGluZGV4ZWQtY29sb3IgaW1hZ2VzCi0tY29uc3QgdWludDMyX3QgaWRfYktH RCA9IDB4NDQ0NzRCNjI7IC8vIFRoZSBiS0dEIGNodW5rIHNwZWNpZmllcyBhIGRlZmF1bHQgYmFj a2dyb3VuZCBjb2xvciBmb3IgdGhlIGltYWdlCi0tY29uc3QgdWludDMyX3QgaWRfdFJOUyA9IDB4 NTM0RTUyNzQ7IC8vIFRoZSB0Uk5TIGNodW5rIHByb3ZpZGVzIHRyYW5zcGFyZW5jeSBpbmZvcm1h dGlvbgotLWNvbnN0IHVpbnQzMl90IGlkX3RFWHQgPSAweDc0NTg0NTc0OyAvLyBUaGUgdEVYdCBj aHVuayBzdG9yZXMgbWV0YWRhdGEgYXMgdGV4dCBpbiBrZXktdmFsdWUgcGFpcnMKLS1jb25zdCB1 aW50MzJfdCBpZF9JRU5EID0gMHg0NDRFNDU0OTsgLy8gZW5kL2Zvb3RlciBjaHVuawotK2NvbnN0 IHVpbnQzMl90IGlkX0lIRFIgPSAweDQ5NDg0NDUyOyAvLyBQTkcgaGVhZGVyCi0rY29uc3QgdWlu dDMyX3QgaWRfYWNUTCA9IDB4NjE2MzU0NEM7IC8vIEFuaW1hdGlvbiBjb250cm9sIGNodW5rCi0r Y29uc3QgdWludDMyX3QgaWRfZmNUTCA9IDB4NjY2MzU0NEM7IC8vIEZyYW1lIGNvbnRyb2wgY2h1 bmsKLStjb25zdCB1aW50MzJfdCBpZF9JREFUID0gMHg0OTQ0NDE1NDsgLy8gZmlyc3QgZnJhbWUg YW5kL29yIGRlZmF1bHQgaW1hZ2UKLStjb25zdCB1aW50MzJfdCBpZF9mZEFUID0gMHg2NjY0NDE1 NDsgLy8gRnJhbWUgZGF0YSBjaHVuawotK2NvbnN0IHVpbnQzMl90IGlkX1BMVEUgPSAweDUwNEM1 NDQ1OyAvLyBUaGUgUExURSBjaHVuayBjb250YWlucyBhIGNvbG9yIHBhbGV0dGUgZm9yIGluZGV4 ZWQtY29sb3IgaW1hZ2VzCi0rY29uc3QgdWludDMyX3QgaWRfYktHRCA9IDB4NjI0QjQ3NDQ7IC8v IFRoZSBiS0dEIGNodW5rIHNwZWNpZmllcyBhIGRlZmF1bHQgYmFja2dyb3VuZCBjb2xvciBmb3Ig dGhlIGltYWdlCi0rY29uc3QgdWludDMyX3QgaWRfdFJOUyA9IDB4NzQ1MjRFNTM7IC8vIFRoZSB0 Uk5TIGNodW5rIHByb3ZpZGVzIHRyYW5zcGFyZW5jeSBpbmZvcm1hdGlvbgotK2NvbnN0IHVpbnQz Ml90IGlkX3RFWHQgPSAweDc0NDU1ODc0OyAvLyBUaGUgdEVYdCBjaHVuayBzdG9yZXMgbWV0YWRh dGEgYXMgdGV4dCBpbiBrZXktdmFsdWUgcGFpcnMKLStjb25zdCB1aW50MzJfdCBpZF9JRU5EID0g MHg0OTQ1NEU0NDsgLy8gZW5kL2Zvb3RlciBjaHVuawotIAotIEFQTkdGcmFtZTo6QVBOR0ZyYW1l KCkKLSB7Ci1AQCAtNjk5LDcgKzY5OSw3IEBAIHVpbnQzMl90IFBuZ0RlY29kZXI6OnJlYWRfY2h1 bmsoQ2h1bmsmIGNodW5rKQotICAgICAgICAgcmV0dXJuIDA7Ci0gICAgIGNvbnN0IHNpemVfdCBz aXplID0gc3RhdGljX2Nhc3Q8c2l6ZV90PihwbmdfZ2V0X3VpbnRfMzIoc2l6ZV9pZCkpICsgMTI7 Ci0gCi0tICAgIGNvbnN0IHVpbnQzMl90IGlkID0gKih1aW50MzJfdCopKCZzaXplX2lkWzRdKTsK LSsgICAgY29uc3QgdWludDMyX3QgaWQgPSBwbmdfZ2V0X3VpbnRfMzIoc2l6ZV9pZCArIDQpOwot ICAgICBpZiAoaWQgPT0gaWRfSUhEUikgewotICAgICAgICAgLy8gOD1IRFIrc2l6ZSwgMTM9c2l6 ZSBvZiBJSERSIGNodW5rLCA0PUNSQwotICAgICAgICAgLy8gaHR0cDovL3d3dy5saWJwbmcub3Jn L3B1Yi9wbmcvc3BlYy8xLjIvUE5HLUNodW5rcy5odG1sI0MuSUhEUgotLS0gCi0yLjQ4LjEKLQoK ZGlmZiAtLWdpdCBhLzI2NzUwLnBhdGNoIGIvMjY3NTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUg MTAwNjQ0CmluZGV4IDRhMmZkYzAuLjAwMDAwMDAKLS0tIGEvMjY3NTAucGF0Y2gKKysrIC9kZXYv bnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDk3ZjNmMzkwNjYxZjJmZDExNjgzMzY4MjBiODll YjQzODNjZTg1MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYWtzaW0gU2hhYnVu aW4gPG1ha3NpbS5zaGFidW5pbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDEwIEphbiAyMDI1IDE4 OjM0OjExICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvcmU6IGZpeGVkIFZTWCBpbnRyaW5zaWNz IGltcGxlbWVudGF0aW9uCi0KLS0tLQotIG1vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29y ZS9oYWwvaW50cmluX3ZzeC5ocHAgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUg aW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21vZHVsZXMvY29y ZS9pbmNsdWRlL29wZW5jdjIvY29yZS9oYWwvaW50cmluX3ZzeC5ocHAgYi9tb2R1bGVzL2NvcmUv aW5jbHVkZS9vcGVuY3YyL2NvcmUvaGFsL2ludHJpbl92c3guaHBwCi1pbmRleCAyMTU3ZTFlODcw NjMuLjBhMDkxNWEyMmZjNCAxMDA2NDQKLS0tLSBhL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5j djIvY29yZS9oYWwvaW50cmluX3ZzeC5ocHAKLSsrKyBiL21vZHVsZXMvY29yZS9pbmNsdWRlL29w ZW5jdjIvY29yZS9oYWwvaW50cmluX3ZzeC5ocHAKLUBAIC0yNjIsNyArMjYyLDcgQEAgT1BFTkNW X0hBTF9JTVBMX1ZTWF9FWFRSQUNUX04odl9mbG9hdDY0eDIsIGRvdWJsZSkKLSBpbmxpbmUgX1Rw dmVjIHZfc2V0emVyb18jI3N1ZmZpeCgpIHsgcmV0dXJuIF9UcHZlYyh2ZWNfc3BsYXRzKChfVHAp MCkpOyB9ICAgICAgICAgICAgIFwKLSBpbmxpbmUgX1RwdmVjIHZfc2V0YWxsXyMjc3VmZml4KF9U cCB2KSB7IHJldHVybiBfVHB2ZWModmVjX3NwbGF0cygoX1RwKXYpKTt9ICAgICAgICAgIFwKLSB0 ZW1wbGF0ZSA8PiBpbmxpbmUgX1RwdmVjIHZfc2V0emVyb18oKSB7IHJldHVybiB2X3NldHplcm9f IyNzdWZmaXgoKTsgfSAgICAgICAgICAgICAgIFwKLS10ZW1wbGF0ZSA8PiBpbmxpbmUgX1RwdmVj IHZfc2V0YWxsXyhfVHAgdikgeyByZXR1cm4gdl9zZXRhbGxfIyNzdWZmaXgoX1RwIHYpOyB9ICAg ICAgIFwKLSt0ZW1wbGF0ZSA8PiBpbmxpbmUgX1RwdmVjIHZfc2V0YWxsXyhfVHAgdikgeyByZXR1 cm4gdl9zZXRhbGxfIyNzdWZmaXgodik7IH0gICAgICAgXAotIHRlbXBsYXRlPHR5cGVuYW1lIF9U cHZlYzA+IGlubGluZSBfVHB2ZWMgdl9yZWludGVycHJldF9hc18jI3N1ZmZpeChjb25zdCBfVHB2 ZWMwICZhKSAgXAotIHsgcmV0dXJuIF9UcHZlYygoY2FzdClhLnZhbCk7IH0KLSAKLUBAIC02NTAs MTEgKzY1MCwxMSBAQCBPUEVOQ1ZfSEFMX0lNUExfVlNYX1NFTEVDVCh2X2Zsb2F0NjR4MiwgdmVj X2Jkd29yZDJfYykKLSAjZGVmaW5lIE9QRU5DVl9IQUxfSU1QTF9WU1hfSU5UX0NNUF9PUChfVHB2 ZWMpICAgICAgICAgICAgICAgICBcCi0gaW5saW5lIF9UcHZlYyB2X2VxKGNvbnN0IF9UcHZlYyYg YSwgY29uc3QgX1RwdmVjJiBiKSAgICAgICAgICAgXAotIHsgcmV0dXJuIF9UcHZlYyh2ZWNfY21w ZXEoYS52YWwsIGIudmFsKSk7IH0gICAgICAgICAgICAgICAgICAgIFwKLS1pbmxpbmUgX1RwdmVj IFZfbmUoY29uc3QgX1RwdmVjJiBhLCBjb25zdCBfVHB2ZWMmIGIpICAgICAgICAgICBcCi0raW5s aW5lIF9UcHZlYyB2X25lKGNvbnN0IF9UcHZlYyYgYSwgY29uc3QgX1RwdmVjJiBiKSAgICAgICAg ICAgXAotIHsgcmV0dXJuIF9UcHZlYyh2ZWNfY21wbmUoYS52YWwsIGIudmFsKSk7IH0gICAgICAg ICAgICAgICAgICAgIFwKLSBpbmxpbmUgX1RwdmVjIHZfbHQoY29uc3QgX1RwdmVjJiBhLCBjb25z dCBfVHB2ZWMmIGIpICAgICAgICAgICBcCi0geyByZXR1cm4gX1RwdmVjKHZlY19jbXBsdChhLnZh bCwgYi52YWwpKTsgfSAgICAgICAgICAgICAgICAgICAgXAotLWlubGluZSBfVHB2ZWMgVl9ndChj b25zdCBfVHB2ZWMmIGEsIGNvbnN0IF9UcHZlYyYgYikgICAgICAgICAgIFwKLStpbmxpbmUgX1Rw dmVjIHZfZ3QoY29uc3QgX1RwdmVjJiBhLCBjb25zdCBfVHB2ZWMmIGIpICAgICAgICAgICBcCi0g eyByZXR1cm4gX1RwdmVjKHZlY19jbXBndChhLnZhbCwgYi52YWwpKTsgfSAgICAgICAgICAgICAg ICAgICAgXAotIGlubGluZSBfVHB2ZWMgdl9sZShjb25zdCBfVHB2ZWMmIGEsIGNvbnN0IF9UcHZl YyYgYikgICAgICAgICAgIFwKLSB7IHJldHVybiBfVHB2ZWModmVjX2NtcGxlKGEudmFsLCBiLnZh bCkpOyB9ICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTUwNyw3ICsxNTA3LDcgQEAgaW5saW5l IHZfZmxvYXQ2NHgyIHZfZG90cHJvZF9leHBhbmQoY29uc3Qgdl9pbnQzMng0JiBhLCBjb25zdCB2 X2ludDMyeDQmIGIsIGNvbnMKLSBpbmxpbmUgdl9pbnQzMng0IHZfZG90cHJvZF9mYXN0KGNvbnN0 IHZfaW50MTZ4OCYgYSwgY29uc3Qgdl9pbnQxNng4JiBiKQotIHsgcmV0dXJuIHZfZG90cHJvZChh LCBiKTsgfQotIGlubGluZSB2X2ludDMyeDQgdl9kb3Rwcm9kX2Zhc3QoY29uc3Qgdl9pbnQxNng4 JiBhLCBjb25zdCB2X2ludDE2eDgmIGIsIGNvbnN0IHZfaW50MzJ4NCYgYykKLS17IHJldHVybiB2 X2ludDMyeDQodmVjX21zdW0oYS52YWwsIGIudmFsLCB2ZWNfaW50NF96KSkgKyBjOyB9Ci0reyBy ZXR1cm4gdl9hZGQodl9pbnQzMng0KHZlY19tc3VtKGEudmFsLCBiLnZhbCwgdmVjX2ludDRfeikp LCBjKTsgfQotIC8vIDMyID4+IDY0Ci0gaW5saW5lIHZfaW50NjR4MiB2X2RvdHByb2RfZmFzdChj b25zdCB2X2ludDMyeDQmIGEsIGNvbnN0IHZfaW50MzJ4NCYgYikKLSB7IHJldHVybiB2X2RvdHBy b2QoYSwgYik7IH0KLUBAIC0xNTE4LDcgKzE1MTgsNyBAQCBpbmxpbmUgdl9pbnQ2NHgyIHZfZG90 cHJvZF9mYXN0KGNvbnN0IHZfaW50MzJ4NCYgYSwgY29uc3Qgdl9pbnQzMng0JiBiLCBjb25zdCB2 XwotIGlubGluZSB2X3VpbnQzMng0IHZfZG90cHJvZF9leHBhbmRfZmFzdChjb25zdCB2X3VpbnQ4 eDE2JiBhLCBjb25zdCB2X3VpbnQ4eDE2JiBiKQotIHsgcmV0dXJuIHZfZG90cHJvZF9leHBhbmQo YSwgYik7IH0KLSBpbmxpbmUgdl91aW50MzJ4NCB2X2RvdHByb2RfZXhwYW5kX2Zhc3QoY29uc3Qg dl91aW50OHgxNiYgYSwgY29uc3Qgdl91aW50OHgxNiYgYiwgY29uc3Qgdl91aW50MzJ4NCYgYykK LS17IHJldHVybiB2X3VpbnQzMng0KHZlY19tc3VtKGEudmFsLCBiLnZhbCwgdmVjX3VpbnQ0X3op KSArIGM7IH0KLSt7IHJldHVybiB2X2FkZCh2X3VpbnQzMng0KHZlY19tc3VtKGEudmFsLCBiLnZh bCwgdmVjX3VpbnQ0X3opKSwgYyk7IH0KLSAKLSBpbmxpbmUgdl9pbnQzMng0IHZfZG90cHJvZF9l eHBhbmRfZmFzdChjb25zdCB2X2ludDh4MTYmIGEsIGNvbnN0IHZfaW50OHgxNiYgYikKLSB7Cgpk aWZmIC0tZ2l0IGEvMjY3ODYucGF0Y2ggYi8yNjc4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAx MDA2NDQKaW5kZXggM2FlM2QzZS4uMDAwMDAwMAotLS0gYS8yNjc4Ni5wYXRjaAorKysgL2Rldi9u dWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gNjNlZjc4NmEzYTBhZmNkNDRiZjg0MmY5Njc2NTYw NTJkNTJkZGUwOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1ha3NpbSBTaGFidW5p biA8bWFrc2ltLnNoYWJ1bmluQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTYgSmFuIDIwMjUgMjM6 NDg6MjkgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29yZTogZml4ZWQgVlNYIGJ1aWxkIHdpdGgg R0NDIDE1Ci0KLS0tLQotIG1vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS92c3hfdXRp bHMuaHBwIHwgOCArKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDYg ZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3Yy L2NvcmUvdnN4X3V0aWxzLmhwcCBiL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS92 c3hfdXRpbHMuaHBwCi1pbmRleCA3OWExMDc0ZDU5ZmYuLjRkNWE2OTRiYWU4ZSAxMDA2NDQKLS0t LSBhL21vZHVsZXMvY29yZS9pbmNsdWRlL29wZW5jdjIvY29yZS92c3hfdXRpbHMuaHBwCi0rKysg Yi9tb2R1bGVzL2NvcmUvaW5jbHVkZS9vcGVuY3YyL2NvcmUvdnN4X3V0aWxzLmhwcAotQEAgLTI1 Nyw4ICsyNTcsOCBAQCBWU1hfSU1QTF8xVlJHKHZlY191ZHdvcmQyLCB2ZWNfdWR3b3JkMiwgdnBv cGNudGQsIHZlY19wb3BjbnR1KQotIFZTWF9JTVBMXzFWUkcodmVjX3Vkd29yZDIsIHZlY19kd29y ZDIsICB2cG9wY250ZCwgdmVjX3BvcGNudHUpCi0gCi0gLy8gY29udmVydHMgYmV0d2VlbiBzaW5n bGUgYW5kIGRvdWJsZS1wcmVjaXNpb24KLS1WU1hfUkVESVJFQ1RfMVJHKHZlY19mbG9hdDQsICB2 ZWNfZG91YmxlMiwgdmVjX2N2Zm8sIF9fYnVpbHRpbl92c3hfeHZjdmRwc3ApCi0tVlNYX1JFRElS RUNUXzFSRyh2ZWNfZG91YmxlMiwgdmVjX2Zsb2F0NCwgIHZlY19jdmZvLCBfX2J1aWx0aW5fdnN4 X3h2Y3ZzcGRwKQotK1ZTWF9SRURJUkVDVF8xUkcodmVjX2Zsb2F0NCwgIHZlY19kb3VibGUyLCB2 ZWNfY3ZmbywgdmVjX2Zsb2F0ZSkKLStWU1hfUkVESVJFQ1RfMVJHKHZlY19kb3VibGUyLCB2ZWNf ZmxvYXQ0LCAgdmVjX2N2Zm8sIHZlY19kb3VibGVvKQotIAotIC8vIGNvbnZlcnRzIHdvcmQgYW5k IGRvdWJsZXdvcmQgdG8gZG91YmxlLXByZWNpc2lvbgotICN1bmRlZiB2ZWNfY3RkCi1AQCAtMzk5 LDEwICszOTksNiBAQCBWU1hfUkVESVJFQ1RfMVJHKHZlY191c2hvcnQ4LCB2ZWNfdXNob3J0OCwg dmVjX3BvcGNudHUsIHZlY19wb3BjbnQpCi0gVlNYX1JFRElSRUNUXzFSRyh2ZWNfdWludDQsICAg dmVjX3VpbnQ0LCAgIHZlY19wb3BjbnR1LCB2ZWNfcG9wY250KQotIFZTWF9SRURJUkVDVF8xUkco dmVjX3Vkd29yZDIsIHZlY191ZHdvcmQyLCB2ZWNfcG9wY250dSwgdmVjX3BvcGNudCkKLSAKLS0v LyBjb252ZXJ0cyBiZXR3ZWVuIHNpbmdsZSBhbmQgZG91YmxlIHByZWNpc2lvbgotLVZTWF9SRURJ UkVDVF8xUkcodmVjX2Zsb2F0NCwgIHZlY19kb3VibGUyLCB2ZWNfY3ZmbywgX19idWlsdGluX3Zz eF94dmN2ZHBzcCkKLS1WU1hfUkVESVJFQ1RfMVJHKHZlY19kb3VibGUyLCB2ZWNfZmxvYXQ0LCAg dmVjX2N2Zm8sIF9fYnVpbHRpbl92c3hfeHZjdnNwZHApCi0tCi0gLy8gY29udmVydHMgd29yZCBh bmQgZG91Ymxld29yZCB0byBkb3VibGUtcHJlY2lzaW9uCi0gI2lmZGVmIHZlY19jdGQKLSAjICAg dW5kZWYgdmVjX2N0ZAoKZGlmZiAtLWdpdCBhLzI3NTM2LnBhdGNoIGIvMjc1MzYucGF0Y2gKZGVs ZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBiN2E0Y2UuLjAwMDAwMDAKLS0tIGEvMjc1MzYu cGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIDM1M2I0ZGRmNTJkYjQ4 YmE4NWQyZWZhYTMzMzEwYWZhMGViNzNhNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9t OiBLdW1hdGFybyA8S3VtYXRhcm9AdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogU3Vu LCAxMyBKdWwgMjAyNSAwODoxMTowNiArMDkwMAotU3ViamVjdDogW1BBVENIIDEvMl0gZWlnZW46 IGZpeCB0byBnZXQgdmVyc2lvbiBmcm9tIGVpZ2VuIG1hc3RlciBicmFuY2gKLQotLS0tCi0gY21h a2UvT3BlbkNWRmluZExpYnNQZXJmLmNtYWtlIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwg NiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jbWFrZS9PcGVuQ1ZGaW5kTGlic1BlcmYu Y21ha2UgYi9jbWFrZS9PcGVuQ1ZGaW5kTGlic1BlcmYuY21ha2UKLWluZGV4IGRmYzk0NTk3YmJi YS4uNTVhMDhmNzJkMDBkIDEwMDY0NAotLS0tIGEvY21ha2UvT3BlbkNWRmluZExpYnNQZXJmLmNt YWtlCi0rKysgYi9jbWFrZS9PcGVuQ1ZGaW5kTGlic1BlcmYuY21ha2UKLUBAIC04NCw2ICs4NCwx MiBAQCBpZihXSVRIX0VJR0VOIEFORCBOT1QgSEFWRV9FSUdFTikKLSAgICAgICAgIHNldChFSUdF Tl9XT1JMRF9WRVJTSU9OICR7RUlHRU4zX1dPUkxEX1ZFUlNJT059KQotICAgICAgICAgc2V0KEVJ R0VOX01BSk9SX1ZFUlNJT04gJHtFSUdFTjNfTUFKT1JfVkVSU0lPTn0pCi0gICAgICAgICBzZXQo RUlHRU5fTUlOT1JfVkVSU0lPTiAke0VJR0VOM19NSU5PUl9WRVJTSU9OfSkKLSsgICAgICBlbHNl aWYoREVGSU5FRCBFaWdlbjNfVkVSU0lPTl9NQUpPUikKLSsgICAgICAgICMgc2VlIGh0dHBzOi8v Z2l0aHViLmNvbS9vcGVuY3Yvb3BlbmN2L2lzc3Vlcy8yNzUzMAotKyAgICAgICAgIyBDYXNlIHNl bnNpdGl2ZSBpcyBuZWVkZWQgdG8gc3VwcG9ydCBFaWdlbiBvbiBNYXN0ZXIgYnJhbmNoIGF0IDEz IEp1bHksMjAyNS4KLSsgICAgICAgIHNldChFSUdFTl9XT1JMRF9WRVJTSU9OICR7RWlnZW4zX1ZF UlNJT05fTUFKT1J9KQotKyAgICAgICAgc2V0KEVJR0VOX01BSk9SX1ZFUlNJT04gJHtFaWdlbjNf VkVSU0lPTl9NSU5PUn0pCi0rICAgICAgICBzZXQoRUlHRU5fTUlOT1JfVkVSU0lPTiAke0VpZ2Vu M19WRVJTSU9OX1BBVENIfSkKLSAgICAgICBlbHNlKCkgICMgRWlnZW4gY29uZmlnIGZpbGUKLSAg ICAgICAgIHNldChFSUdFTl9XT1JMRF9WRVJTSU9OICR7RUlHRU4zX1ZFUlNJT05fTUFKT1J9KQot ICAgICAgICAgc2V0KEVJR0VOX01BSk9SX1ZFUlNJT04gJHtFSUdFTjNfVkVSU0lPTl9NSU5PUn0p Ci0KLUZyb20gOTRlOTA5ZDRhNjgxMWJiZDQ3NzRiYWFlODcyMmRmNzlkMDU3YTJiYyBNb24gU2Vw IDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEt1bWF0YXJvIDxLdW1hdGFyb0B1c2Vycy5ub3JlcGx5 LmdpdGh1Yi5jb20+Ci1EYXRlOiBNb24sIDE0IEp1bCAyMDI1IDIxOjI1OjUyICswOTAwCi1TdWJq ZWN0OiBbUEFUQ0ggMi8yXSBhZGQgcG9pbnRlciB0byBFaWdlbiBjb21taXQKLQotLS0tCi0gY21h a2UvT3BlbkNWRmluZExpYnNQZXJmLmNtYWtlIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwg MyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY21ha2UvT3Bl bkNWRmluZExpYnNQZXJmLmNtYWtlIGIvY21ha2UvT3BlbkNWRmluZExpYnNQZXJmLmNtYWtlCi1p bmRleCA1NWEwOGY3MmQwMGQuLjg2MWEzOWM0N2Y5YiAxMDA2NDQKLS0tLSBhL2NtYWtlL09wZW5D VkZpbmRMaWJzUGVyZi5jbWFrZQotKysrIGIvY21ha2UvT3BlbkNWRmluZExpYnNQZXJmLmNtYWtl Ci1AQCAtODQsMTMgKzg0LDEzIEBAIGlmKFdJVEhfRUlHRU4gQU5EIE5PVCBIQVZFX0VJR0VOKQot ICAgICAgICAgc2V0KEVJR0VOX1dPUkxEX1ZFUlNJT04gJHtFSUdFTjNfV09STERfVkVSU0lPTn0p Ci0gICAgICAgICBzZXQoRUlHRU5fTUFKT1JfVkVSU0lPTiAke0VJR0VOM19NQUpPUl9WRVJTSU9O fSkKLSAgICAgICAgIHNldChFSUdFTl9NSU5PUl9WRVJTSU9OICR7RUlHRU4zX01JTk9SX1ZFUlNJ T059KQotLSAgICAgIGVsc2VpZihERUZJTkVEIEVpZ2VuM19WRVJTSU9OX01BSk9SKQotKyAgICAg IGVsc2VpZihERUZJTkVEIEVpZ2VuM19WRVJTSU9OX01BSk9SKSAjIFJlY29tbWVuZGVkIHBhY2th Z2UgY29uZmlnIHZhcmlhYmxlcwotICAgICAgICAgIyBzZWUgaHR0cHM6Ly9naXRodWIuY29tL29w ZW5jdi9vcGVuY3YvaXNzdWVzLzI3NTMwCi0tICAgICAgICAjIENhc2Ugc2Vuc2l0aXZlIGlzIG5l ZWRlZCB0byBzdXBwb3J0IEVpZ2VuIG9uIE1hc3RlciBicmFuY2ggYXQgMTMgSnVseSwyMDI1Lgot ICAgICAgICAgc2V0KEVJR0VOX1dPUkxEX1ZFUlNJT04gJHtFaWdlbjNfVkVSU0lPTl9NQUpPUn0p Ci0gICAgICAgICBzZXQoRUlHRU5fTUFKT1JfVkVSU0lPTiAke0VpZ2VuM19WRVJTSU9OX01JTk9S fSkKLSAgICAgICAgIHNldChFSUdFTl9NSU5PUl9WRVJTSU9OICR7RWlnZW4zX1ZFUlNJT05fUEFU Q0h9KQotLSAgICAgIGVsc2UoKSAgIyBFaWdlbiBjb25maWcgZmlsZQotKyAgICAgIGVsc2UoKSAg IyBEZXByZWNhdGVkIHBhY2thZ2UgY29uZmlnIHZhcmlhYmxlcwotKyAgICAgICAgIyBSZW1vdmVk IG9uIG1hc3RlciBhdCBodHRwczovL2dpdGxhYi5jb20vbGliZWlnZW4vZWlnZW4vLS9jb21taXQv ZjI5ODRjZDA3NzhkZDBhMWQ3ZTc0MjE2ZDgyNmVhZmYyYmM2YmZhYgotICAgICAgICAgc2V0KEVJ R0VOX1dPUkxEX1ZFUlNJT04gJHtFSUdFTjNfVkVSU0lPTl9NQUpPUn0pCi0gICAgICAgICBzZXQo RUlHRU5fTUFKT1JfVkVSU0lPTiAke0VJR0VOM19WRVJTSU9OX01JTk9SfSkKLSAgICAgICAgIHNl dChFSUdFTl9NSU5PUl9WRVJTSU9OICR7RUlHRU4zX1ZFUlNJT05fUEFUQ0h9KQoKZGlmZiAtLWdp dCBhLzI3NjkxLnBhdGNoIGIvMjc2OTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Cmlu ZGV4IGMwOGI4ODIuLjAwMDAwMDAKLS0tIGEvMjc2OTEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAt MSw0MyArMCwwIEBACi1Gcm9tIDkwYzQ0NGFiZDM4N2ZmYTcwYjJlNzJhMzQ5MjI5MDNhMmYwZjRm NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgU21vcmthbG92IDxh bGV4YW5kZXIuc21vcmthbG92QG9wZW5jdi5haT4KLURhdGU6IFdlZCwgMjAgQXVnIDIwMjUgMTA6 NTM6NTEgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gRkZtcGVnIDguMCBzdXBwb3J0LgotCi0tLS0K LSBtb2R1bGVzL3ZpZGVvaW8vc3JjL2NhcF9mZm1wZWdfaW1wbC5ocHAgfCAxNCArKysrKysrKysr KysrKwotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9t b2R1bGVzL3ZpZGVvaW8vc3JjL2NhcF9mZm1wZWdfaW1wbC5ocHAgYi9tb2R1bGVzL3ZpZGVvaW8v c3JjL2NhcF9mZm1wZWdfaW1wbC5ocHAKLWluZGV4IDQ4OWRiZTU2NWQzZC4uNTc4MGI0YzExMzYx IDEwMDY0NAotLS0tIGEvbW9kdWxlcy92aWRlb2lvL3NyYy9jYXBfZmZtcGVnX2ltcGwuaHBwCi0r KysgYi9tb2R1bGVzL3ZpZGVvaW8vc3JjL2NhcF9mZm1wZWdfaW1wbC5ocHAKLUBAIC02ODUsNyAr Njg1LDEwIEBAIHZvaWQgQ3ZDYXB0dXJlX0ZGTVBFRzo6Y2xvc2UoKQotICAgICBpZiggdmlkZW9f c3QgKQotICAgICB7Ci0gI2lmZGVmIENWX0ZGTVBFR19DT0RFQ1BBUgotKy8vIGF2Y29kZWNfY2xv c2UgcmVtb3ZlZCBpbiBGRm1wZWcgcmVsZWFzZSA4LjAKLSsjIGlmIChMSUJBVkNPREVDX0JVSUxE IDwgQ0FMQ19GRk1QRUdfVkVSU0lPTig2MiwgMTEsIDEwMCkpCi0gICAgICAgICBhdmNvZGVjX2Ns b3NlKCBjb250ZXh0ICk7Ci0rIyBlbmRpZgotICNlbmRpZgotICAgICAgICAgdmlkZW9fc3QgPSBO VUxMOwotICAgICB9Ci1AQCAtMjAwNSw3ICsyMDA4LDE4IEBAIHZvaWQgQ3ZDYXB0dXJlX0ZGTVBF Rzo6Z2V0X3JvdGF0aW9uX2FuZ2xlKCkKLSAgICAgcm90YXRpb25fYW5nbGUgPSAwOwotICNpZiBM SUJBVkZPUk1BVF9CVUlMRCA+PSBDQUxDX0ZGTVBFR19WRVJTSU9OKDU3LCA2OCwgMTAwKQotICAg ICBjb25zdCB1aW50OF90ICpkYXRhID0gMDsKLSsgICAgLy8gYXZfc3RyZWFtX2dldF9zaWRlX2Rh dGEgcmVtb3ZlZCBpbiBGRm1wZWcgcmVsZWFzZSA4LjAKLSsjIGlmIChMSUJBVkNPREVDX0JVSUxE IDwgQ0FMQ19GRk1QRUdfVkVSU0lPTig2MiwgMTEsIDEwMCkpCi0gICAgIGRhdGEgPSBhdl9zdHJl YW1fZ2V0X3NpZGVfZGF0YSh2aWRlb19zdCwgQVZfUEtUX0RBVEFfRElTUExBWU1BVFJJWCwgTlVM TCk7Ci0rIyBlbHNlCi0rICAgIEFWUGFja2V0U2lkZURhdGEqIHNkID0gdmlkZW9fc3QtPmNvZGVj cGFyLT5jb2RlZF9zaWRlX2RhdGE7Ci0rICAgIGludCBuYl9zZCA9IHZpZGVvX3N0LT5jb2RlY3Bh ci0+bmJfY29kZWRfc2lkZV9kYXRhOwotKyAgICBpZiAoc2QgJiYgbmJfc2QgPiAwKQotKyAgICB7 Ci0rICAgICAgICBjb25zdCBBVlBhY2tldFNpZGVEYXRhKiBtdHggPSBhdl9wYWNrZXRfc2lkZV9k YXRhX2dldChzZCwgIG5iX3NkLCBBVl9QS1RfREFUQV9ESVNQTEFZTUFUUklYKTsKLSsgICAgICAg IGRhdGEgPSBtdHgtPmRhdGE7Ci0rICAgIH0KLSsjIGVuZGlmCi0gICAgIGlmIChkYXRhKQotICAg ICB7Ci0gICAgICAgICByb3RhdGlvbl9hbmdsZSA9IC1jdlJvdW5kKGF2X2Rpc3BsYXlfcm90YXRp b25fZ2V0KChjb25zdCBpbnQzMl90KilkYXRhKSk7CgpkaWZmIC0tZ2l0IGEvcXQ2OS5wYXRjaCBi L3F0NjkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhNTk5OTEuLjAwMDAw MDAKLS0tIGEvcXQ2OS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLS0tLSBv cGVuY3YtNC4xMS4wL21vZHVsZXMvaGlnaGd1aS9DTWFrZUxpc3RzLnR4dAkyMDI1LTAxLTA4IDA0 OjQ3OjQ2LjAwMDAwMDAwMCAtMDgwMAotKysrIG9wZW5jdi00LjExLjAvbW9kdWxlcy9oaWdoZ3Vp L0NNYWtlTGlzdHMudHh0Lm5ldwkyMDI1LTA3LTA4IDE1OjU0OjEwLjEzODA3ODI4NSAtMDcwMAot QEAgLTEyNSw3ICsxMjUsNyBAQAotICAgICBlbmRpZigpCi0gCi0gICAgIGZvcmVhY2goZHRfZGVw ICR7cXRfZGVwc30pCi0tICAgICAgYWRkX2RlZmluaXRpb25zKCR7UXQke1FUX1ZFUlNJT05fTUFK T1J9JHtkdF9kZXB9X0RFRklOSVRJT05TfSkKLSsgICAgICBsaW5rX2xpYnJhcmllcygke1F0JHtR VF9WRVJTSU9OX01BSk9SfSR7ZHRfZGVwfX0pCi0gICAgICAgaW5jbHVkZV9kaXJlY3Rvcmllcygk e1F0JHtRVF9WRVJTSU9OX01BSk9SfSR7ZHRfZGVwfV9JTkNMVURFX0RJUlN9KQotICAgICAgIGxp c3QoQVBQRU5EIEhJR0hHVUlfTElCUkFSSUVTICR7UXQke1FUX1ZFUlNJT05fTUFKT1J9JHtkdF9k ZXB9X0xJQlJBUklFU30pCi0gICAgIGVuZGZvcmVhY2goKQo=