ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggYTEwYWI2OS4uNWZlNTMxMCAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsNSArMSw1IEBACiAKLUxpYnBuZyAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAKK0xpYnBuZyAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKIAogVGhpcyBpcyBhIHB1YmxpYyByZWxlYXNlIG9mIGxpYnBuZywgaW50ZW5kZWQgZm9yIHVzZSBpbiBwcm9kdWN0aW9uIGNvZGVzLgogCkBAIC0zNSw2ICszNSwxNSBAQAogICBDaGFuZ2UgcG5nX2NodW5rX3dhcm5pbmcgdG8gcG5nX3dhcm5pbmcgaW4gcG5nX2NoZWNrX2tleXdvcmQoKS4KICAgSW5jcmVhc2VkIHRoZSBmaXJzdCBwYXJ0IG9mIG1zZyBidWZmZXIgZnJvbSAxNiB0byAxOCBpbiBwbmdfY2h1bmtfZXJyb3IoKS4KICAgQWRkZWQgc3VwcG9ydCBmb3IgZmlsdGVyIG1ldGhvZCA2NCAoZm9yIFBORyBkYXRhc3RyZWFtcyBlbWJlZGRlZCBpbiBNTkcpCisgIFJldmlzZWQgcG5nX3NldF9maWx0ZXIoKSB0byBhY2NlcHQgZmlsdGVyIG1ldGhvZCA2NCB3aGVuIGFwcHJvcHJpYXRlLgorICBBZGRlZCBuZXcgUE5HX0hBVkVfUE5HX1NJR05BVFVSRSBiaXQgdG8gcG5nX3B0ci0+bW9kZSBhbmQgdXNlIGl0IHRvCisgICAgaGVscCBwcmV2ZW50IGFwcGxpY2F0aW9ucyBmcm9tIHVzaW5nIE1ORyBmZWF0dXJlcyBpbiBQTkcgZGF0YXN0cmVhbXMuCisgIFJldmlzZWQgbGlicG5nLjMvbGlicG5nLnR4dC4gIENoYW5nZWQgImZpbHRlciB0eXBlIiB0byAiZmlsdGVyIG1ldGhvZCIuCisKK1NlbmQgY29tbWVudHMvY29ycmVjdGlvbnMvY29tbWVuZGF0aW9ucyB0bworcG5nLWltcGxlbWVudEBjY3JjLnd1c3RsLmVkdSBvciB0byByYW5kZWdAYWx1bS5ycGkuZWR1CisKK0dsZW5uIFItUAogCiBTZW5kIGNvbW1lbnRzL2NvcnJlY3Rpb25zL2NvbW1lbmRhdGlvbnMgdG8KIHBuZy1pbXBsZW1lbnRAY2NyYy53dXN0bC5lZHUgb3IgdG8gcmFuZGVnQGFsdW0ucnBpLmVkdQpkaWZmIC0tZ2l0IGEvQ0hBTkdFUyBiL0NIQU5HRVMKaW5kZXggN2ZhOGZhNi4uM2JjMzMyMSAxMDA2NDQKLS0tIGEvQ0hBTkdFUworKysgYi9DSEFOR0VTCkBAIC04NTcsNiArODU3LDExIEBACiAgIEluY3JlYXNlZCB0aGUgZmlyc3QgcGFydCBvZiBtc2cgYnVmZmVyIGZyb20gMTYgdG8gMTggaW4gcG5nX2NodW5rX2Vycm9yKCkuCiB2ZXJzaW9uIDEuMC45YmV0YTUgW0RlY2VtYmVyIDE1LCAyMDAwXQogICBBZGRlZCBzdXBwb3J0IGZvciBmaWx0ZXIgbWV0aG9kIDY0IChmb3IgUE5HIGRhdGFzdHJlYW1zIGVtYmVkZGVkIGluIE1ORykKK3ZlcnNpb24gMS4wLjliZXRhNiBbRGVjZW1iZXIgMTgsIDIwMDBdCisgIFJldmlzZWQgcG5nX3NldF9maWx0ZXIoKSB0byBhY2NlcHQgZmlsdGVyIG1ldGhvZCA2NCB3aGVuIGFwcHJvcHJpYXRlLgorICBBZGRlZCBuZXcgUE5HX0hBVkVfUE5HX1NJR05BVFVSRSBiaXQgdG8gcG5nX3B0ci0+bW9kZSBhbmQgdXNlIGl0IHRvCisgICAgaGVscCBwcmV2ZW50IGFwcGxpY2F0aW9ucyBmcm9tIHVzaW5nIE1ORyBmZWF0dXJlcyBpbiBQTkcgZGF0YXN0cmVhbXMuCisgIFJldmlzZWQgbGlicG5nLjMvbGlicG5nLnR4dC4gIENoYW5nZWQgImZpbHRlciB0eXBlIiB0byAiZmlsdGVyIG1ldGhvZCIuCiAKIFNlbmQgY29tbWVudHMvY29ycmVjdGlvbnMvY29tbWVuZGF0aW9ucyB0bwogcG5nLWltcGxlbWVudEBjY3JjLnd1c3RsLmVkdSBvciB0byByYW5kZWdAYWx1bS5ycGkuZWR1CmRpZmYgLS1naXQgYS9JTlNUQUxMIGIvSU5TVEFMTAppbmRleCBjZTA5ODRjLi5jZmEwNDUxIDEwMDY0NAotLS0gYS9JTlNUQUxMCisrKyBiL0lOU1RBTEwKQEAgLTEsNSArMSw1IEBACiAKLUluc3RhbGxpbmcgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCitJbnN0YWxsaW5nIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogCiBCZWZvcmUgaW5zdGFsbGluZyBsaWJwbmcsIHlvdSBtdXN0IGZpcnN0IGluc3RhbGwgemxpYi4gIHpsaWIKIGNhbiB1c3VhbGx5IGJlIGZvdW5kIHdoZXJldmVyIHlvdSBnb3QgbGlicG5nLiAgemxpYiBjYW4gYmUKQEAgLTEwLDcgKzEwLDcgQEAKIHZlcnNpb24gb2YgemxpYiB0aGF0J3MgaW5zdGFsbGVkLgogCiBZb3UgY2FuIHJlbmFtZSB0aGUgZGlyZWN0b3JpZXMgdGhhdCB5b3UgZG93bmxvYWRlZCAodGhleQotbWlnaHQgYmUgY2FsbGVkICJsaWJwbmctMS4wLjliZXRhNSIgb3IgImxwbmcxMDkiIGFuZCAiemxpYi0xLjEuMyIKK21pZ2h0IGJlIGNhbGxlZCAibGlicG5nLTEuMC45YmV0YTYiIG9yICJscG5nMTA5IiBhbmQgInpsaWItMS4xLjMiCiBvciAiemxpYjExMyIpIHNvIHRoYXQgeW91IGhhdmUgZGlyZWN0b3JpZXMgY2FsbGVkICJ6bGliIiBhbmQgImxpYnBuZyIuCiAKIFlvdXIgZGlyZWN0b3J5IHN0cnVjdHVyZSBzaG91bGQgbG9vayBsaWtlIHRoaXM6CkBAIC01OSw4ICs1OSw4IEBACiBpbmNsdWRlCiAKICBtYWtlZmlsZS5zdGQgICAgICA9PiAgR2VuZXJpYyBVTklYIG1ha2VmaWxlIChjYywgY3JlYXRlcyBzdGF0aWMgbGlicG5nLmEpCi0gbWFrZWZpbGUubGludXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTUpCi0gbWFrZWZpbGUuZ2NtbXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTUsCisgbWFrZWZpbGUubGludXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTYpCisgbWFrZWZpbGUuZ2NtbXggICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTYsCiAgICAgICAgICAgICAgICAgICAgICAgIHVzZXMgYXNzZW1ibGVyIGNvZGUgdHVuZWQgZm9yIEludGVsIE1NWCBwbGF0Zm9ybSkKICBtYWtlZmlsZS5nY2MgICAgICA9PiAgR2VuZXJpYyBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIHN0YXRpYyBsaWJwbmcuYSkKICBtYWtlZmlsZS5rbnIgICAgICA9PiAgQXJjaGFpYyBVTklYIE1ha2VmaWxlIHRoYXQgY29udmVydHMgZmlsZXMgd2l0aApAQCAtNzUsOSArNzUsOSBAQAogIGxpYnBuZy5pY2MgICAgICAgID0+ICBQcm9qZWN0IGZpbGUgZm9yIElCTSBWaXN1YWxBZ2UvQysrIHZlcnNpb24gNC4wIG9yIGxhdGVyCiAgbWFrZWZpbGUubWFjb3N4ICAgPT4gIE1BQ09TIFggTWFrZWZpbGUKICBtYWtlZmlsZS5zZ2kgICAgICA9PiAgU2lsaWNvbiBHcmFwaGljcyBJUklYIG1ha2VmaWxlIChjYywgY3JlYXRlcyBzdGF0aWMgbGliKQotIG1ha2VmaWxlLnNnZ2NjICAgID0+ICBTaWxpY29uIEdyYXBoaWNzIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjliZXRhNSkKKyBtYWtlZmlsZS5zZ2djYyAgICA9PiAgU2lsaWNvbiBHcmFwaGljcyAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTYpCiAgbWFrZWZpbGUuc3Vub3MgICAgPT4gIFN1biBtYWtlZmlsZQotIG1ha2VmaWxlLnNvbGFyaXMgID0+ICBTb2xhcmlzIDIuWCBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTUpCisgbWFrZWZpbGUuc29sYXJpcyAgPT4gIFNvbGFyaXMgMi5YIG1ha2VmaWxlIChnY2MsIGNyZWF0ZXMgbGlicG5nLnNvLjIuMS4wLjliZXRhNikKICBtYWtlZmlsZS5zY28gICAgICA9PiAgRm9yIFNDTyBPU3I1ICBFTEYgYW5kIFVuaXh3YXJlIDcgd2l0aCBOYXRpdmUgY2MKICBtYWtlZmlsZS5taXBzICAgICA9PiAgTUlQUyBtYWtlZmlsZQogIG1ha2VmaWxlLmFjb3JuICAgID0+ICBBY29ybiBtYWtlZmlsZQpkaWZmIC0tZ2l0IGEvTElDRU5TRSBiL0xJQ0VOU0UKaW5kZXggODQyMzg0Yi4uYjdmMWRkOSAxMDA2NDQKLS0tIGEvTElDRU5TRQorKysgYi9MSUNFTlNFCkBAIC04LDcgKzgsNyBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggMS4wLjliZXRhNSwgRGVjZW1iZXIgMTUsIDIwMDAsIGFyZQorbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggMS4wLjliZXRhNiwgRGVjZW1iZXIgMTgsIDIwMDAsIGFyZQogQ29weXJpZ2h0IChjKSAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogYW5kIGFyZSBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwpAQCAtOTksNCArOTksNCBAQAogCiBHbGVubiBSYW5kZXJzLVBlaHJzb24KIHJhbmRlZ0BhbHVtLnJwaS5lZHUKLURlY2VtYmVyIDE1LCAyMDAwCitEZWNlbWJlciAxOCwgMjAwMApkaWZmIC0tZ2l0IGEvUkVBRE1FIGIvUkVBRE1FCmluZGV4IGJmZGFmNDAuLmU2YjA3MmYgMTAwNjQ0Ci0tLSBhL1JFQURNRQorKysgYi9SRUFETUUKQEAgLTEsNCArMSw0IEBACi1SRUFETUUgZm9yIGxpYnBuZyAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAgKHNoYXJlZCBsaWJyYXJ5IDIuMSkKK1JFQURNRSBmb3IgbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMCAoc2hhcmVkIGxpYnJhcnkgMi4xKQogU2VlIHRoZSBub3RlIGFib3V0IHZlcnNpb24gbnVtYmVycyBuZWFyIHRoZSB0b3Agb2YgcG5nLmgKIAogU2VlIElOU1RBTEwgZm9yIGluc3RydWN0aW9ucyBvbiBob3cgdG8gaW5zdGFsbCBsaWJwbmcuCkBAIC0xODIsOSArMTgyLDkgQEAKICAgICAgICBkZXNjcmlwLm1tcyAgICAgID0+ICBWTVMgbWFrZWZpbGUgZm9yIE1NUyBvciBNTUsKICAgICAgICBtYWtlZmlsZS5zdGQgICAgID0+ICBHZW5lcmljIFVOSVggbWFrZWZpbGUgKGNjLCBjcmVhdGVzIHN0YXRpYyBsaWJwbmcuYSkKICAgICAgICBtYWtlZmlsZS5saW51eCAgID0+ICBMaW51eC9FTEYgbWFrZWZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGE2KQogICAgICAgIG1ha2VmaWxlLmdjbW14ICAgPT4gIExpbnV4L0VMRiBtYWtlZmlsZSAoZ2NjLCBjcmVhdGVzCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicG5nLnNvLjIuMS4wLjliZXRhNSwgdXNlcyBhc3NlbWJsZXIgY29kZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnBuZy5zby4yLjEuMC45YmV0YTYsIHVzZXMgYXNzZW1ibGVyIGNvZGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0dW5lZCBmb3IgSW50ZWwgTU1YIHBsYXRmb3JtKQogICAgICAgIG1ha2VmaWxlLmdjYyAgICAgPT4gIEdlbmVyaWMgbWFrZWZpbGUgKGdjYywgY3JlYXRlcyBzdGF0aWMgbGlicG5nLmEpCiAgICAgICAgbWFrZWZpbGUua25yICAgICA9PiAgQXJjaGFpYyBVTklYIE1ha2VmaWxlIHRoYXQgY29udmVydHMgZmlsZXMgd2l0aApAQCAtMTk5LDEwICsxOTksMTAgQEAKICAgICAgICBsaWJwbmcuaWNjICAgICAgID0+ICBQcm9qZWN0IGZpbGUsIElCTSBWaXN1YWxBZ2UvQysrIDQuMCBvciBsYXRlcgogICAgICAgIG1ha2VmaWxlLm1hY29zeCAgPT4gIE1BQ09TIFggTWFrZWZpbGUKICAgICAgICBtYWtlZmlsZS5zZ2kgICAgID0+ICBTaWxpY29uIEdyYXBoaWNzIElSSVggKGNjLCBjcmVhdGVzIHN0YXRpYyBsaWIpCi0gICAgICAgbWFrZWZpbGUuc2dnY2MgICA9PiAgU2lsaWNvbiBHcmFwaGljcyAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTUpCisgICAgICAgbWFrZWZpbGUuc2dnY2MgICA9PiAgU2lsaWNvbiBHcmFwaGljcyAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTYpCiAgICAgICAgbWFrZWZpbGUuc3Vub3MgICA9PiAgU3VuIG1ha2VmaWxlCiAgICAgICAgbWFrZWZpbGUuc29sYXJpcyA9PiAgU29sYXJpcyAyLlggbWFrZWZpbGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZ2NjLCBjcmVhdGVzIGxpYnBuZy5zby4yLjEuMC45YmV0YTUpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGdjYywgY3JlYXRlcyBsaWJwbmcuc28uMi4xLjAuOWJldGE2KQogICAgICAgIG1ha2VmaWxlLnNjbyAgICAgPT4gIEZvciBTQ08gT1NyNSAgRUxGIGFuZCBVbml4d2FyZSA3IHdpdGggTmF0aXZlIGNjCiAgICAgICAgbWFrZWZpbGUubWlwcyAgICA9PiAgTUlQUyBtYWtlZmlsZQogICAgICAgIG1ha2VmaWxlLmFjb3JuICAgPT4gIEFjb3JuIG1ha2VmaWxlCmRpZmYgLS1naXQgYS9ZMktJTkZPIGIvWTJLSU5GTwppbmRleCBhZTM1Mzc4Li5jMmZlZjQwIDEwMDY0NAotLS0gYS9ZMktJTkZPCisrKyBiL1kyS0lORk8KQEAgLTEsMTMgKzEsMTMgQEAKICAgIFkySyBjb21wbGlhbmNlIGluIGxpYnBuZzoKICAgID09PT09PT09PT09PT09PT09PT09PT09PT0KIAotICAgICAgRGVjZW1iZXIgMTUsIDIwMDAKKyAgICAgIERlY2VtYmVyIDE4LCAyMDAwCiAKICAgICAgIFNpbmNlIHRoZSBQTkcgRGV2ZWxvcG1lbnQgZ3JvdXAgaXMgYW4gYWQtaG9jIGJvZHksIHdlIGNhbid0IG1ha2UKICAgICAgIGFuIG9mZmljaWFsIGRlY2xhcmF0aW9uLgogCiAgICAgICBUaGlzIGlzIHlvdXIgdW5vZmZpY2lhbCBhc3N1cmFuY2UgdGhhdCBsaWJwbmcgZnJvbSB2ZXJzaW9uIDAuNzEgYW5kCi0gICAgICB1cHdhcmQgdGhyb3VnaCAxLjAuOWJldGE1IGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgorICAgICAgdXB3YXJkIHRocm91Z2ggMS4wLjliZXRhNiBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKICAgICAgIHZlcnNpb25zIHdlcmUgYWxzbyBZMksgY29tcGxpYW50LgogCiAgICAgICBMaWJwbmcgb25seSBoYXMgdGhyZWUgeWVhciBmaWVsZHMuICBPbmUgaXMgYSAyLWJ5dGUgdW5zaWduZWQgaW50ZWdlcgpkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCmluZGV4IDBmMzM2ODIuLmE0ZWMzODQgMTAwNzU1Ci0tLSBhL2NvbmZpZ3VyZQorKysgYi9jb25maWd1cmUKQEAgLTEsNSArMSw1IEBACiBlY2hvICIKLSAgVGhlcmUgaXMgbm8gXCJjb25maWd1cmVcIiBzY3JpcHQgZm9yIExpYnBuZy0xLjAuOWJldGE1LiAgSW5zdGVhZCwgcGxlYXNlCisgIFRoZXJlIGlzIG5vIFwiY29uZmlndXJlXCIgc2NyaXB0IGZvciBMaWJwbmctMS4wLjliZXRhNi4gIEluc3RlYWQsIHBsZWFzZQogICBjb3B5IHRoZSBhcHByb3ByaWF0ZSBtYWtlZmlsZSBmb3IgeW91ciBzeXN0ZW0gZnJvbSB0aGUgXCJzY3JpcHRzXCIKICAgZGlyZWN0b3J5LiAgUmVhZCB0aGUgSU5TVEFMTCBmaWxlIGZvciBtb3JlIGRldGFpbHMuCiAiCmRpZmYgLS1naXQgYS9saWJwbmcuMyBiL2xpYnBuZy4zCmluZGV4IGI1MTVmYjUuLjJmYjc2YWUgMTAwNjQ0Ci0tLSBhL2xpYnBuZy4zCisrKyBiL2xpYnBuZy4zCkBAIC0xLDYgKzEsNiBAQAotLlRIIExJQlBORyAzICJEZWNlbWJlciAxNSwgMjAwMCIKKy5USCBMSUJQTkcgMyAiRGVjZW1iZXIgMTgsIDIwMDAiCiAuU0ggTkFNRQotbGlicG5nIFwtIFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgKFBORykgUmVmZXJlbmNlIExpYnJhcnkgMS4wLjliZXRhNQorbGlicG5nIFwtIFBvcnRhYmxlIE5ldHdvcmsgR3JhcGhpY3MgKFBORykgUmVmZXJlbmNlIExpYnJhcnkgMS4wLjliZXRhNgogLlNIIFNZTk9QU0lTCiBcZklcZkIKIApAQCAtNzQ3LDcgKzc0Nyw3IEBACiAuU0ggTElCUE5HLlRYVAogbGlicG5nLnR4dCAtIEEgZGVzY3JpcHRpb24gb24gaG93IHRvIHVzZSBhbmQgbW9kaWZ5IGxpYnBuZwogCi0gbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCisgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwCiAgVXBkYXRlZCBhbmQgZGlzdHJpYnV0ZWQgYnkgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgPHJhbmRlZ0BhbHVtLnJwaS5lZHU+CiAgQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgpAQCAtMTE0Nyw3ICsxMTQ3LDcgQEAKIAogICAgIHBuZ19nZXRfSUhEUihwbmdfcHRyLCBpbmZvX3B0ciwgJndpZHRoLCAmaGVpZ2h0LAogICAgICAgICZiaXRfZGVwdGgsICZjb2xvcl90eXBlLCAmaW50ZXJsYWNlX3R5cGUsCi0gICAgICAgJmNvbXByZXNzaW9uX3R5cGUsICZmaWx0ZXJfdHlwZSk7CisgICAgICAgJmNvbXByZXNzaW9uX3R5cGUsICZmaWx0ZXJfbWV0aG9kKTsKIAogICAgIHdpZHRoICAgICAgICAgIC0gaG9sZHMgdGhlIHdpZHRoIG9mIHRoZSBpbWFnZQogICAgICAgICAgICAgICAgICAgICAgaW4gcGl4ZWxzICh1cCB0byAyXjMxKS4KQEAgLTExNzUsMTUgKzExNzUsMTggQEAKICAgICAgICAgICAgICAgICAgICAgIFBOR19DT0xPUl9NQVNLX0NPTE9SCiAgICAgICAgICAgICAgICAgICAgICBQTkdfQ09MT1JfTUFTS19BTFBIQQogCi0gICAgZmlsdGVyX3R5cGUgICAgLSAobXVzdCBiZSBQTkdfRklMVEVSX1RZUEVfQkFTRQotICAgICAgICAgICAgICAgICAgICAgZm9yIFBORyAxLjApCisgICAgZmlsdGVyX21ldGhvZCAgLSAobXVzdCBiZSBQTkdfRklMVEVSX1RZUEVfQkFTRQorICAgICAgICAgICAgICAgICAgICAgZm9yIFBORyAxLjAsIGFuZCBjYW4gYWxzbyBiZQorICAgICAgICAgICAgICAgICAgICAgUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HIGlmCisgICAgICAgICAgICAgICAgICAgICB0aGUgUE5HIGRhdGFzdHJlYW0gaXMgZW1iZWRkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgIGEgTU5HLTEuMCBkYXRhc3RyZWFtKQogICAgIGNvbXByZXNzaW9uX3R5cGUgLSAobXVzdCBiZSBQTkdfQ09NUFJFU1NJT05fVFlQRV9CQVNFCiAgICAgICAgICAgICAgICAgICAgICBmb3IgUE5HIDEuMCkKICAgICBpbnRlcmxhY2VfdHlwZSAtIChQTkdfSU5URVJMQUNFX05PTkUgb3IKICAgICAgICAgICAgICAgICAgICAgIFBOR19JTlRFUkxBQ0VfQURBTTcpCiAgICAgQW55IG9yIGFsbCBvZiBpbnRlcmxhY2VfdHlwZSwgY29tcHJlc3Npb25fdHlwZSwgb2YKLSAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl90eXBlIGNhbiBiZSBOVUxMIGlmIHlvdSBhcmUgbm90Ci0gICAgICAgICAgICAgICAgICAgICBpbnRlcmVzdGVkIGluIHRoZWlyIHZhbHVlcy4KKyAgICAgICAgICAgICAgICAgICAgIGZpbHRlcl9tZXRob2QgY2FuIGJlIE5VTEwgaWYgeW91IGFyZQorICAgICAgICAgICAgICAgICAgICAgbm90IGludGVyZXN0ZWQgaW4gdGhlaXIgdmFsdWVzLgogCiAgICAgY2hhbm5lbHMgPSBwbmdfZ2V0X2NoYW5uZWxzKHBuZ19wdHIsIGluZm9fcHRyKTsKICAgICBjaGFubmVscyAgICAgICAtIG51bWJlciBvZiBjaGFubmVscyBvZiBpbmZvIGZvciB0aGUKQEAgLTEyMTMsNyArMTIxNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19wdHIpOwogICAgIGNvbG9yX3R5cGUgICAgICAgPSBwbmdfZ2V0X2NvbG9yX3R5cGUocG5nX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX3B0cik7Ci0gICAgZmlsdGVyX3R5cGUgICAgICA9IHBuZ19nZXRfZmlsdGVyX3R5cGUocG5nX3B0ciwKKyAgICBmaWx0ZXJfbWV0aG9kICAgID0gcG5nX2dldF9maWx0ZXJfdHlwZShwbmdfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fcHRyKTsKICAgICBjb21wcmVzc2lvbl90eXBlID0gcG5nX2dldF9jb21wcmVzc2lvbl90eXBlKHBuZ19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19wdHIpOwpAQCAtMjI4NiwxMCArMjI4OSwxMSBAQAogaGF2ZSBubyBzcGVjaWFsIG5lZWRzIGluIHRoaXMgYXJlYSwgbGV0IHRoZSBsaWJyYXJ5IGRvIHdoYXQgaXQgd2FudHMgYnkKIG5vdCBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gYXQgYWxsLCBhcyBpdCBoYXMgYmVlbiB0dW5lZCB0byBkZWxpdmVyIGEgZ29vZAogc3BlZWQvY29tcHJlc3Npb24gcmF0aW8uIFRoZSBzZWNvbmQgcGFyYW1ldGVyIHRvIHBuZ19zZXRfZmlsdGVyKCkgaXMKLXRoZSBmaWx0ZXIgbWV0aG9kLCBmb3Igd2hpY2ggdGhlIG9ubHkgdmFsaWQgdmFsdWUgaXMgJzAnIChhcyBvZiB0aGUKLUp1bHkgMTk5OSBQTkcgc3BlY2lmaWNhdGlvbiwgdmVyc2lvbiAxLjIpLiAgVGhlIHRoaXJkIHBhcmFtZXRlciBpcyBhCi1mbGFnIHRoYXQgaW5kaWNhdGVzIHdoaWNoIGZpbHRlciB0eXBlKHMpIGFyZSB0byBiZSB0ZXN0ZWQgZm9yIGVhY2gKLXNjYW5saW5lLiAgU2VlIHRoZSBQTkcgc3BlY2lmaWNhdGlvbiBmb3IgZGV0YWlscyBvbiB0aGUgc3BlY2lmaWMgZmlsdGVyCit0aGUgZmlsdGVyIG1ldGhvZCwgZm9yIHdoaWNoIHRoZSBvbmx5IHZhbGlkIHZhbHVlcyBhcmUgMCAoYXMgb2YgdGhlCitKdWx5IDE5OTkgUE5HIHNwZWNpZmljYXRpb24sIHZlcnNpb24gMS4yKSBvciA2NCAoaWYgeW91IGFyZSB3cml0aW5nCithIFBORyBkYXRhc3RyZWFtIHRoYXQgaXMgdG8gYmUgZW1iZWRkZWQgaW4gYSBNTkcgZGF0YXN0cmVhbSkuICBUaGUgdGhpcmQKK3BhcmFtZXRlciBpcyBhIGZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hpY2ggZmlsdGVyIHR5cGUocykgYXJlIHRvIGJlIHRlc3RlZAorZm9yIGVhY2ggc2NhbmxpbmUuICBTZWUgdGhlIFBORyBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBzcGVjaWZpYyBmaWx0ZXIKIHR5cGVzLgogCiAKQEAgLTIzMTAsNiArMjMxNCw5IEBACiByb3cgb2YgcGl4ZWxzIHdpbGwgYmUgc3RvcmVkIGluIGNhc2UgaXQncyBuZWVkZWQgbGF0ZXIpLCBhbmQgdGhlbiBhZGQKIGFuZCByZW1vdmUgdGhlbSBhZnRlciB0aGUgc3RhcnQgb2YgY29tcHJlc3Npb24uCiAKK0lmIHlvdSBhcmUgd3JpdGluZyBhIFBORyBkYXRhc3RyZWFtIHRoYXQgaXMgdG8gYmUgZW1iZWRkZWQgaW4gYSBNTkcKK2RhdGFzdHJlYW0sIHRoZSBzZWNvbmQgcGFyYW1ldGVyIGNhbiBiZSBlaXRoZXIgMCBvciA2NC4KKwogVGhlIHBuZ19zZXRfY29tcHJlc3Npb25fKigpIGZ1bmN0aW9ucyBpbnRlcmZhY2UgdG8gdGhlIHpsaWIgY29tcHJlc3Npb24KIGxpYnJhcnksIGFuZCBzaG91bGQgbW9zdGx5IGJlIGlnbm9yZWQgdW5sZXNzIHlvdSByZWFsbHkga25vdyB3aGF0IHlvdSBhcmUKIGRvaW5nLiAgVGhlIG9ubHkgZ2VuZXJhbGx5IHVzZWZ1bCBjYWxsIGlzIHBuZ19zZXRfY29tcHJlc3Npb25fbGV2ZWwoKQpAQCAtMjM0OCw3ICsyMzU1LDcgQEAKIAogICAgIHBuZ19zZXRfSUhEUihwbmdfcHRyLCBpbmZvX3B0ciwgd2lkdGgsIGhlaWdodCwKICAgICAgICBiaXRfZGVwdGgsIGNvbG9yX3R5cGUsIGludGVybGFjZV90eXBlLAotICAgICAgIGNvbXByZXNzaW9uX3R5cGUsIGZpbHRlcl90eXBlKQorICAgICAgIGNvbXByZXNzaW9uX3R5cGUsIGZpbHRlcl9tZXRob2QpCiAgICAgd2lkdGggICAgICAgICAgLSBob2xkcyB0aGUgd2lkdGggb2YgdGhlIGltYWdlCiAgICAgICAgICAgICAgICAgICAgICBpbiBwaXhlbHMgKHVwIHRvIDJeMzEpLgogICAgIGhlaWdodCAgICAgICAgIC0gaG9sZHMgdGhlIGhlaWdodCBvZiB0aGUgaW1hZ2UKQEAgLTIzODAsNyArMjM4NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgUE5HX0lOVEVSTEFDRV9BREFNNwogICAgIGNvbXByZXNzaW9uX3R5cGUgLSAobXVzdCBiZQogICAgICAgICAgICAgICAgICAgICAgUE5HX0NPTVBSRVNTSU9OX1RZUEVfREVGQVVMVCkKLSAgICBmaWx0ZXJfdHlwZSAgICAtIChtdXN0IGJlIFBOR19GSUxURVJfVFlQRV9ERUZBVUxUKQorICAgIGZpbHRlcl9tZXRob2QgIC0gKG11c3QgYmUgUE5HX0ZJTFRFUl9UWVBFX0RFRkFVTFQKKyAgICAgICAgICAgICAgICAgICAgIG9yLCBpZiB5b3UgYXJlIHdyaXRpbmcgYSBQTkcgdG8KKyAgICAgICAgICAgICAgICAgICAgIGJlIGVtYmVkZGVkIGluIGEgTU5HIGRhdGFzdHJlYW0sCisgICAgICAgICAgICAgICAgICAgICBjYW4gYWxzbyBiZQorICAgICAgICAgICAgICAgICAgICAgUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HKQogCiAgICAgcG5nX3NldF9QTFRFKHBuZ19wdHIsIGluZm9fcHRyLCBwYWxldHRlLAogICAgICAgIG51bV9wYWxldHRlKTsKQEAgLTMyMTcsNiArMzIyOCwxMCBAQAogCiAgICAgcG5nX3NldF9maWx0ZXIocG5nX3B0ciwgUE5HX0ZJTFRFUl9UWVBFX0JBU0UsCiAgICAgICAgZmlsdGVycyk7CisgICAgICAgICAgICAgIFRoZSBzZWNvbmQgcGFyYW1ldGVyIGNhbiBhbHNvIGJlIFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORworICAgICAgICAgICAgICBpZiB5b3UgYXJlIHdyaXRpbmcgYSBQTkcgdG8gYmUgZW1iZWRkZWQgaW4gYSBNTkcKKyAgICAgICAgICAgICAgZGF0YXN0cmVhbS4gIFRoaXMgcGFyYW1ldGVyIG11c3QgYmUgdGhlIHNhbWUgYXMgdGhlCisgICAgICAgICAgICAgIHZhbHVlIG9mIGZpbHRlcl9tZXRob2QgdXNlZCBpbiBwbmdfc2V0X0lIRFIoKS4KIAogSXQgaXMgYWxzbyBwb3NzaWJsZSB0byBpbmZsdWVuY2UgaG93IGxpYnBuZyBjaG9vc2VzIGZyb20gYW1vbmcgdGhlCiBhdmFpbGFibGUgZmlsdGVycy4gIFRoaXMgaXMgZG9uZSBpbiB0d28gd2F5cyAtIGJ5IHRlbGxpbmcgaXQgaG93CkBAIC0zMzQ1LDYgKzMzNjAsMTEgQEAKICAgICAgIHlvdXIgbWFzayB3aXRoIHRoZSBzZXQgb2YgTU5HIGZlYXR1cmVzIHRoYXQgaXMKICAgICAgIHN1cHBvcnRlZCBieSB0aGUgdmVyc2lvbiBvZiBsaWJwbmcgdGhhdCB5b3UgYXJlIHVzaW5nLgogCitJdCBpcyBhbiBlcnJvciB0byB1c2UgdGhpcyBmdW5jdGlvbiB3aGVuIHJlYWRpbmcgb3Igd3JpdGluZyBhIHN0YW5kYWxvbmUKK1BORyBmaWxlIHdpdGggdGhlIFBORyA4LWJ5dGUgc2lnbmF0dXJlLiAgVGhlIFBORyBkYXRhc3RyZWFtIG11c3QgYmUgd3JhcHBlZAoraW4gYSBNTkcgZGF0YXN0cmVhbSAoYXMgYSBtaW5pbXVtLCBpdCBtdXN0IGhhdmUgdGhlIE1ORyA4LWJ5dGUgc2lnbmF0dXJlCithbmQgdGhlIE1IRFIgYW5kIE1FTkQgY2h1bmtzKS4KKwogLlNIIFZJSS4gIENoYW5nZXMgdG8gTGlicG5nIGZyb20gdmVyc2lvbiAwLjg4CiAKIEl0IHNob3VsZCBiZSBub3RlZCB0aGF0IHZlcnNpb25zIG9mIGxpYnBuZyBsYXRlciB0aGFuIDAuOTYgYXJlIG5vdApAQCAtMzM5NiwxMyArMzQxNiwxMyBAQAogCiAuU0ggVklJSS4gWTJLIENvbXBsaWFuY2UgaW4gbGlicG5nCiAKLURlY2VtYmVyIDE1LCAyMDAwCitEZWNlbWJlciAxOCwgMjAwMAogCiBTaW5jZSB0aGUgUE5HIERldmVsb3BtZW50IGdyb3VwIGlzIGFuIGFkLWhvYyBib2R5LCB3ZSBjYW4ndCBtYWtlCiBhbiBvZmZpY2lhbCBkZWNsYXJhdGlvbi4KIAogVGhpcyBpcyB5b3VyIHVub2ZmaWNpYWwgYXNzdXJhbmNlIHRoYXQgbGlicG5nIGZyb20gdmVyc2lvbiAwLjcxIGFuZAotdXB3YXJkIHRocm91Z2ggMS4wLjliZXRhNSBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKK3Vwd2FyZCB0aHJvdWdoIDEuMC45YmV0YTYgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCiB2ZXJzaW9ucyB3ZXJlIGFsc28gWTJLIGNvbXBsaWFudC4KIAogTGlicG5nIG9ubHkgaGFzIHRocmVlIHllYXIgZmllbGRzLiAgT25lIGlzIGEgMi1ieXRlIHVuc2lnbmVkIGludGVnZXIgdGhhdApAQCAtMzU0Myw3ICszNTYzLDcgQEAKIAogVGhhbmtzIHRvIEZyYW5rIEouIFQuIFdvamNpayBmb3IgaGVscGluZyB3aXRoIHRoZSBkb2N1bWVudGF0aW9uLgogCi1MaWJwbmcgdmVyc2lvbiAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDA6CitMaWJwbmcgdmVyc2lvbiAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDA6CiBJbml0aWFsbHkgY3JlYXRlZCBpbiAxOTk1IGJ5IEd1eSBFcmljIFNjaGFsbmF0LCB0aGVuIG9mIEdyb3VwIDQyLCBJbmMuCiBDdXJyZW50bHkgbWFpbnRhaW5lZCBieSBHbGVubiBSYW5kZXJzLVBlaHJzb24gKHJhbmRlZ0BhbHVtLnJwaS5lZHUpLgogCkBAIC0zNTYwLDcgKzM1ODAsNyBAQAogSWYgeW91IG1vZGlmeSBsaWJwbmcgeW91IG1heSBpbnNlcnQgYWRkaXRpb25hbCBub3RpY2VzIGltbWVkaWF0ZWx5IGZvbGxvd2luZwogdGhpcyBzZW50ZW5jZS4KIAotbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggIDEuMC45YmV0YTUsIERlY2VtYmVyIDE1LCAyMDAwLCBhcmUKK2xpYnBuZyB2ZXJzaW9ucyAxLjAuNywgSnVseSAxLCAyMDAwLCB0aHJvdWdoICAxLjAuOWJldGE2LCBEZWNlbWJlciAxOCwgMjAwMCwgYXJlCiBDb3B5cmlnaHQgKGMpIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCiBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwpAQCAtMzY1MSw3ICszNjcxLDcgQEAKIAogR2xlbm4gUmFuZGVycy1QZWhyc29uCiByYW5kZWdAYWx1bS5ycGkuZWR1Ci1EZWNlbWJlciAxNSwgMjAwMAorRGVjZW1iZXIgMTgsIDIwMDAKIAogLlwiIGVuZCBvZiBtYW4gcGFnZQogCmRpZmYgLS1naXQgYS9saWJwbmcudHh0IGIvbGlicG5nLnR4dAppbmRleCA2ZTRjMjU3Li4yMWI3YWVjIDEwMDY0NAotLS0gYS9saWJwbmcudHh0CisrKyBiL2xpYnBuZy50eHQKQEAgLTEsNiArMSw2IEBACiBsaWJwbmcudHh0IC0gQSBkZXNjcmlwdGlvbiBvbiBob3cgdG8gdXNlIGFuZCBtb2RpZnkgbGlicG5nCiAKLSBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAKKyBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKICBVcGRhdGVkIGFuZCBkaXN0cmlidXRlZCBieSBHbGVubiBSYW5kZXJzLVBlaHJzb24KICA8cmFuZGVnQGFsdW0ucnBpLmVkdT4KICBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCkBAIC00MDAsNyArNDAwLDcgQEAKIAogICAgIHBuZ19nZXRfSUhEUihwbmdfcHRyLCBpbmZvX3B0ciwgJndpZHRoLCAmaGVpZ2h0LAogICAgICAgICZiaXRfZGVwdGgsICZjb2xvcl90eXBlLCAmaW50ZXJsYWNlX3R5cGUsCi0gICAgICAgJmNvbXByZXNzaW9uX3R5cGUsICZmaWx0ZXJfdHlwZSk7CisgICAgICAgJmNvbXByZXNzaW9uX3R5cGUsICZmaWx0ZXJfbWV0aG9kKTsKIAogICAgIHdpZHRoICAgICAgICAgIC0gaG9sZHMgdGhlIHdpZHRoIG9mIHRoZSBpbWFnZQogICAgICAgICAgICAgICAgICAgICAgaW4gcGl4ZWxzICh1cCB0byAyXjMxKS4KQEAgLTQyOCwxNSArNDI4LDE4IEBACiAgICAgICAgICAgICAgICAgICAgICBQTkdfQ09MT1JfTUFTS19DT0xPUgogICAgICAgICAgICAgICAgICAgICAgUE5HX0NPTE9SX01BU0tfQUxQSEEKIAotICAgIGZpbHRlcl90eXBlICAgIC0gKG11c3QgYmUgUE5HX0ZJTFRFUl9UWVBFX0JBU0UKLSAgICAgICAgICAgICAgICAgICAgIGZvciBQTkcgMS4wKQorICAgIGZpbHRlcl9tZXRob2QgIC0gKG11c3QgYmUgUE5HX0ZJTFRFUl9UWVBFX0JBU0UKKyAgICAgICAgICAgICAgICAgICAgIGZvciBQTkcgMS4wLCBhbmQgY2FuIGFsc28gYmUKKyAgICAgICAgICAgICAgICAgICAgIFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORyBpZgorICAgICAgICAgICAgICAgICAgICAgdGhlIFBORyBkYXRhc3RyZWFtIGlzIGVtYmVkZGVkIGluCisgICAgICAgICAgICAgICAgICAgICBhIE1ORy0xLjAgZGF0YXN0cmVhbSkKICAgICBjb21wcmVzc2lvbl90eXBlIC0gKG11c3QgYmUgUE5HX0NPTVBSRVNTSU9OX1RZUEVfQkFTRQogICAgICAgICAgICAgICAgICAgICAgZm9yIFBORyAxLjApCiAgICAgaW50ZXJsYWNlX3R5cGUgLSAoUE5HX0lOVEVSTEFDRV9OT05FIG9yCiAgICAgICAgICAgICAgICAgICAgICBQTkdfSU5URVJMQUNFX0FEQU03KQogICAgIEFueSBvciBhbGwgb2YgaW50ZXJsYWNlX3R5cGUsIGNvbXByZXNzaW9uX3R5cGUsIG9mCi0gICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfdHlwZSBjYW4gYmUgTlVMTCBpZiB5b3UgYXJlIG5vdAotICAgICAgICAgICAgICAgICAgICAgaW50ZXJlc3RlZCBpbiB0aGVpciB2YWx1ZXMuCisgICAgICAgICAgICAgICAgICAgICBmaWx0ZXJfbWV0aG9kIGNhbiBiZSBOVUxMIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgIG5vdCBpbnRlcmVzdGVkIGluIHRoZWlyIHZhbHVlcy4KIAogICAgIGNoYW5uZWxzID0gcG5nX2dldF9jaGFubmVscyhwbmdfcHRyLCBpbmZvX3B0cik7CiAgICAgY2hhbm5lbHMgICAgICAgLSBudW1iZXIgb2YgY2hhbm5lbHMgb2YgaW5mbyBmb3IgdGhlCkBAIC00NjYsNyArNDY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX3B0cik7CiAgICAgY29sb3JfdHlwZSAgICAgICA9IHBuZ19nZXRfY29sb3JfdHlwZShwbmdfcHRyLAogICAgICAgICAgICAgICAgICAgICAgICAgIGluZm9fcHRyKTsKLSAgICBmaWx0ZXJfdHlwZSAgICAgID0gcG5nX2dldF9maWx0ZXJfdHlwZShwbmdfcHRyLAorICAgIGZpbHRlcl9tZXRob2QgICAgPSBwbmdfZ2V0X2ZpbHRlcl90eXBlKHBuZ19wdHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgaW5mb19wdHIpOwogICAgIGNvbXByZXNzaW9uX3R5cGUgPSBwbmdfZ2V0X2NvbXByZXNzaW9uX3R5cGUocG5nX3B0ciwKICAgICAgICAgICAgICAgICAgICAgICAgICBpbmZvX3B0cik7CkBAIC0xNTM5LDEwICsxNTQyLDExIEBACiBoYXZlIG5vIHNwZWNpYWwgbmVlZHMgaW4gdGhpcyBhcmVhLCBsZXQgdGhlIGxpYnJhcnkgZG8gd2hhdCBpdCB3YW50cyBieQogbm90IGNhbGxpbmcgdGhpcyBmdW5jdGlvbiBhdCBhbGwsIGFzIGl0IGhhcyBiZWVuIHR1bmVkIHRvIGRlbGl2ZXIgYSBnb29kCiBzcGVlZC9jb21wcmVzc2lvbiByYXRpby4gVGhlIHNlY29uZCBwYXJhbWV0ZXIgdG8gcG5nX3NldF9maWx0ZXIoKSBpcwotdGhlIGZpbHRlciBtZXRob2QsIGZvciB3aGljaCB0aGUgb25seSB2YWxpZCB2YWx1ZSBpcyAnMCcgKGFzIG9mIHRoZQotSnVseSAxOTk5IFBORyBzcGVjaWZpY2F0aW9uLCB2ZXJzaW9uIDEuMikuICBUaGUgdGhpcmQgcGFyYW1ldGVyIGlzIGEKLWZsYWcgdGhhdCBpbmRpY2F0ZXMgd2hpY2ggZmlsdGVyIHR5cGUocykgYXJlIHRvIGJlIHRlc3RlZCBmb3IgZWFjaAotc2NhbmxpbmUuICBTZWUgdGhlIFBORyBzcGVjaWZpY2F0aW9uIGZvciBkZXRhaWxzIG9uIHRoZSBzcGVjaWZpYyBmaWx0ZXIKK3RoZSBmaWx0ZXIgbWV0aG9kLCBmb3Igd2hpY2ggdGhlIG9ubHkgdmFsaWQgdmFsdWVzIGFyZSAwIChhcyBvZiB0aGUKK0p1bHkgMTk5OSBQTkcgc3BlY2lmaWNhdGlvbiwgdmVyc2lvbiAxLjIpIG9yIDY0IChpZiB5b3UgYXJlIHdyaXRpbmcKK2EgUE5HIGRhdGFzdHJlYW0gdGhhdCBpcyB0byBiZSBlbWJlZGRlZCBpbiBhIE1ORyBkYXRhc3RyZWFtKS4gIFRoZSB0aGlyZAorcGFyYW1ldGVyIGlzIGEgZmxhZyB0aGF0IGluZGljYXRlcyB3aGljaCBmaWx0ZXIgdHlwZShzKSBhcmUgdG8gYmUgdGVzdGVkCitmb3IgZWFjaCBzY2FubGluZS4gIFNlZSB0aGUgUE5HIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbHMgb24gdGhlIHNwZWNpZmljIGZpbHRlcgogdHlwZXMuCiAKIApAQCAtMTU2Myw2ICsxNTY3LDkgQEAKIHJvdyBvZiBwaXhlbHMgd2lsbCBiZSBzdG9yZWQgaW4gY2FzZSBpdCdzIG5lZWRlZCBsYXRlciksIGFuZCB0aGVuIGFkZAogYW5kIHJlbW92ZSB0aGVtIGFmdGVyIHRoZSBzdGFydCBvZiBjb21wcmVzc2lvbi4KIAorSWYgeW91IGFyZSB3cml0aW5nIGEgUE5HIGRhdGFzdHJlYW0gdGhhdCBpcyB0byBiZSBlbWJlZGRlZCBpbiBhIE1ORworZGF0YXN0cmVhbSwgdGhlIHNlY29uZCBwYXJhbWV0ZXIgY2FuIGJlIGVpdGhlciAwIG9yIDY0LgorCiBUaGUgcG5nX3NldF9jb21wcmVzc2lvbl8qKCkgZnVuY3Rpb25zIGludGVyZmFjZSB0byB0aGUgemxpYiBjb21wcmVzc2lvbgogbGlicmFyeSwgYW5kIHNob3VsZCBtb3N0bHkgYmUgaWdub3JlZCB1bmxlc3MgeW91IHJlYWxseSBrbm93IHdoYXQgeW91IGFyZQogZG9pbmcuICBUaGUgb25seSBnZW5lcmFsbHkgdXNlZnVsIGNhbGwgaXMgcG5nX3NldF9jb21wcmVzc2lvbl9sZXZlbCgpCkBAIC0xNjAxLDcgKzE2MDgsNyBAQAogCiAgICAgcG5nX3NldF9JSERSKHBuZ19wdHIsIGluZm9fcHRyLCB3aWR0aCwgaGVpZ2h0LAogICAgICAgIGJpdF9kZXB0aCwgY29sb3JfdHlwZSwgaW50ZXJsYWNlX3R5cGUsCi0gICAgICAgY29tcHJlc3Npb25fdHlwZSwgZmlsdGVyX3R5cGUpCisgICAgICAgY29tcHJlc3Npb25fdHlwZSwgZmlsdGVyX21ldGhvZCkKICAgICB3aWR0aCAgICAgICAgICAtIGhvbGRzIHRoZSB3aWR0aCBvZiB0aGUgaW1hZ2UKICAgICAgICAgICAgICAgICAgICAgIGluIHBpeGVscyAodXAgdG8gMl4zMSkuCiAgICAgaGVpZ2h0ICAgICAgICAgLSBob2xkcyB0aGUgaGVpZ2h0IG9mIHRoZSBpbWFnZQpAQCAtMTYzMyw3ICsxNjQwLDExIEBACiAgICAgICAgICAgICAgICAgICAgICBQTkdfSU5URVJMQUNFX0FEQU03CiAgICAgY29tcHJlc3Npb25fdHlwZSAtIChtdXN0IGJlCiAgICAgICAgICAgICAgICAgICAgICBQTkdfQ09NUFJFU1NJT05fVFlQRV9ERUZBVUxUKQotICAgIGZpbHRlcl90eXBlICAgIC0gKG11c3QgYmUgUE5HX0ZJTFRFUl9UWVBFX0RFRkFVTFQpCisgICAgZmlsdGVyX21ldGhvZCAgLSAobXVzdCBiZSBQTkdfRklMVEVSX1RZUEVfREVGQVVMVAorICAgICAgICAgICAgICAgICAgICAgb3IsIGlmIHlvdSBhcmUgd3JpdGluZyBhIFBORyB0bworICAgICAgICAgICAgICAgICAgICAgYmUgZW1iZWRkZWQgaW4gYSBNTkcgZGF0YXN0cmVhbSwKKyAgICAgICAgICAgICAgICAgICAgIGNhbiBhbHNvIGJlCisgICAgICAgICAgICAgICAgICAgICBQTkdfSU5UUkFQSVhFTF9ESUZGRVJFTkNJTkcpCiAKICAgICBwbmdfc2V0X1BMVEUocG5nX3B0ciwgaW5mb19wdHIsIHBhbGV0dGUsCiAgICAgICAgbnVtX3BhbGV0dGUpOwpAQCAtMjQ3MCw2ICsyNDgxLDEwIEBACiAKICAgICBwbmdfc2V0X2ZpbHRlcihwbmdfcHRyLCBQTkdfRklMVEVSX1RZUEVfQkFTRSwKICAgICAgICBmaWx0ZXJzKTsKKyAgICAgICAgICAgICAgVGhlIHNlY29uZCBwYXJhbWV0ZXIgY2FuIGFsc28gYmUgUE5HX0lOVFJBUElYRUxfRElGRkVSRU5DSU5HCisgICAgICAgICAgICAgIGlmIHlvdSBhcmUgd3JpdGluZyBhIFBORyB0byBiZSBlbWJlZGRlZCBpbiBhIE1ORworICAgICAgICAgICAgICBkYXRhc3RyZWFtLiAgVGhpcyBwYXJhbWV0ZXIgbXVzdCBiZSB0aGUgc2FtZSBhcyB0aGUKKyAgICAgICAgICAgICAgdmFsdWUgb2YgZmlsdGVyX21ldGhvZCB1c2VkIGluIHBuZ19zZXRfSUhEUigpLgogCiBJdCBpcyBhbHNvIHBvc3NpYmxlIHRvIGluZmx1ZW5jZSBob3cgbGlicG5nIGNob29zZXMgZnJvbSBhbW9uZyB0aGUKIGF2YWlsYWJsZSBmaWx0ZXJzLiAgVGhpcyBpcyBkb25lIGluIHR3byB3YXlzIC0gYnkgdGVsbGluZyBpdCBob3cKQEAgLTI1OTgsNiArMjYxMywxMSBAQAogICAgICAgeW91ciBtYXNrIHdpdGggdGhlIHNldCBvZiBNTkcgZmVhdHVyZXMgdGhhdCBpcwogICAgICAgc3VwcG9ydGVkIGJ5IHRoZSB2ZXJzaW9uIG9mIGxpYnBuZyB0aGF0IHlvdSBhcmUgdXNpbmcuCiAKK0l0IGlzIGFuIGVycm9yIHRvIHVzZSB0aGlzIGZ1bmN0aW9uIHdoZW4gcmVhZGluZyBvciB3cml0aW5nIGEgc3RhbmRhbG9uZQorUE5HIGZpbGUgd2l0aCB0aGUgUE5HIDgtYnl0ZSBzaWduYXR1cmUuICBUaGUgUE5HIGRhdGFzdHJlYW0gbXVzdCBiZSB3cmFwcGVkCitpbiBhIE1ORyBkYXRhc3RyZWFtIChhcyBhIG1pbmltdW0sIGl0IG11c3QgaGF2ZSB0aGUgTU5HIDgtYnl0ZSBzaWduYXR1cmUKK2FuZCB0aGUgTUhEUiBhbmQgTUVORCBjaHVua3MpLgorCiBWSUkuICBDaGFuZ2VzIHRvIExpYnBuZyBmcm9tIHZlcnNpb24gMC44OAogCiBJdCBzaG91bGQgYmUgbm90ZWQgdGhhdCB2ZXJzaW9ucyBvZiBsaWJwbmcgbGF0ZXIgdGhhbiAwLjk2IGFyZSBub3QKQEAgLTI2NDksMTMgKzI2NjksMTMgQEAKIAogVklJSS4gWTJLIENvbXBsaWFuY2UgaW4gbGlicG5nCiAKLURlY2VtYmVyIDE1LCAyMDAwCitEZWNlbWJlciAxOCwgMjAwMAogCiBTaW5jZSB0aGUgUE5HIERldmVsb3BtZW50IGdyb3VwIGlzIGFuIGFkLWhvYyBib2R5LCB3ZSBjYW4ndCBtYWtlCiBhbiBvZmZpY2lhbCBkZWNsYXJhdGlvbi4KIAogVGhpcyBpcyB5b3VyIHVub2ZmaWNpYWwgYXNzdXJhbmNlIHRoYXQgbGlicG5nIGZyb20gdmVyc2lvbiAwLjcxIGFuZAotdXB3YXJkIHRocm91Z2ggMS4wLjliZXRhNSBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKK3Vwd2FyZCB0aHJvdWdoIDEuMC45YmV0YTYgYXJlIFkySyBjb21wbGlhbnQuICBJdCBpcyBteSBiZWxpZWYgdGhhdCBlYXJsaWVyCiB2ZXJzaW9ucyB3ZXJlIGFsc28gWTJLIGNvbXBsaWFudC4KIAogTGlicG5nIG9ubHkgaGFzIHRocmVlIHllYXIgZmllbGRzLiAgT25lIGlzIGEgMi1ieXRlIHVuc2lnbmVkIGludGVnZXIgdGhhdApkaWZmIC0tZ2l0IGEvbGlicG5ncGYuMyBiL2xpYnBuZ3BmLjMKaW5kZXggYmIyOTNmZC4uMGE4NTg0NyAxMDA2NDQKLS0tIGEvbGlicG5ncGYuMworKysgYi9saWJwbmdwZi4zCkBAIC0xLDYgKzEsNiBAQAotLlRIIExJQlBOR1BGIDMgIkRlY2VtYmVyIDE1LCAyMDAwIgorLlRIIExJQlBOR1BGIDMgIkRlY2VtYmVyIDE4LCAyMDAwIgogLlNIIE5BTUUKLWxpYnBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIFJlZmVyZW5jZSBMaWJyYXJ5IDEuMC45YmV0YTUKK2xpYnBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIFJlZmVyZW5jZSBMaWJyYXJ5IDEuMC45YmV0YTYKIChwcml2YXRlIGZ1bmN0aW9ucykKIC5TSCBTWU5PUFNJUwogXGZCI2luY2x1ZGUgPHBuZy5oPlxmUApkaWZmIC0tZ2l0IGEvcG5nLjUgYi9wbmcuNQppbmRleCAwOGQ2MDc5Li43NzE2ZTkxIDEwMDY0NAotLS0gYS9wbmcuNQorKysgYi9wbmcuNQpAQCAtMSw0ICsxLDQgQEAKLS5USCBQTkcgNSAiRGVjZW1iZXIgMTUsIDIwMDAiCisuVEggUE5HIDUgIkRlY2VtYmVyIDE4LCAyMDAwIgogLlNIIE5BTUUKIHBuZyBcLSBQb3J0YWJsZSBOZXR3b3JrIEdyYXBoaWNzIChQTkcpIGZvcm1hdAogLlNIIERFU0NSSVBUSU9OCmRpZmYgLS1naXQgYS9wbmcuYyBiL3BuZy5jCmluZGV4IDliYWYxN2IuLmMwNGIxNzggMTAwNjQ0Ci0tLSBhL3BuZy5jCisrKyBiL3BuZy5jCkBAIC0xLDcgKzEsNyBAQAogCiAvKiBwbmcuYyAtIGxvY2F0aW9uIGZvciBnZW5lcmFsIHB1cnBvc2UgbGlicG5nIGZ1bmN0aW9ucwogICoKLSAqIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKICAqIChWZXJzaW9uIDAuODggQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLikKQEAgLTEzLDE0ICsxMywxNCBAQAogI2luY2x1ZGUgInBuZy5oIgogCiAvKiBHZW5lcmF0ZSBhIGNvbXBpbGVyIGVycm9yIGlmIHRoZXJlIGlzIGFuIG9sZCBwbmcuaCBpbiB0aGUgc2VhcmNoIHBhdGguICovCi10eXBlZGVmIHZlcnNpb25fMV8wXzliZXRhNSBZb3VyX3BuZ19oX2lzX25vdF92ZXJzaW9uXzFfMF85YmV0YTU7Cit0eXBlZGVmIHZlcnNpb25fMV8wXzliZXRhNiBZb3VyX3BuZ19oX2lzX25vdF92ZXJzaW9uXzFfMF85YmV0YTY7CiAKIC8qIFZlcnNpb24gaW5mb3JtYXRpb24gZm9yIEMgZmlsZXMuICBUaGlzIGhhZCBiZXR0ZXIgbWF0Y2ggdGhlIHZlcnNpb24KICAqIHN0cmluZyBkZWZpbmVkIGluIHBuZy5oLiAgKi8KIAogI2lmZGVmIFBOR19VU0VfR0xPQkFMX0FSUkFZUwogLyogcG5nX2xpYnBuZ192ZXIgd2FzIGNoYW5nZWQgdG8gYSBmdW5jdGlvbiBpbiB2ZXJzaW9uIDEuMC41YyAqLwotY29uc3QgY2hhciBwbmdfbGlicG5nX3ZlclsxOF0gPSAiMS4wLjliZXRhNSI7Citjb25zdCBjaGFyIHBuZ19saWJwbmdfdmVyWzE4XSA9ICIxLjAuOWJldGE2IjsKIAogLyogcG5nX3NpZyB3YXMgY2hhbmdlZCB0byBhIGZ1bmN0aW9uIGluIHZlcnNpb24gMS4wLjVjICovCiAvKiBQbGFjZSB0byBob2xkIHRoZSBzaWduYXR1cmUgc3RyaW5nIGZvciBhIFBORyBmaWxlLiAqLwpAQCAtNjI2LDcgKzYyNiw3IEBACiBwbmdfZ2V0X2NvcHlyaWdodChwbmdfc3RydWN0cCBwbmdfcHRyKQogewogICAgaWYgKHBuZ19wdHIgIT0gTlVMTCB8fCBwbmdfcHRyID09IE5VTEwpICAvKiBzaWxlbmNlIGNvbXBpbGVyIHdhcm5pbmcgKi8KLSAgIHJldHVybiAoKHBuZ19jaGFycCkgIlxuIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMFxuXAorICAgcmV0dXJuICgocG5nX2NoYXJwKSAiXG4gbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwXG5cCiAgICBDb3B5cmlnaHQgKGMpIDE5OTgtMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb25cblwKICAgIENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlclxuXAogICAgQ29weXJpZ2h0IChjKSAxOTk1LCAxOTk2IEd1eSBFcmljIFNjaGFsbmF0LCBHcm91cCA0MiwgSW5jLlxuIik7CkBAIC02NDQsOCArNjQ0LDggQEAKIHsKICAgIC8qIFZlcnNpb24gb2YgKi5jIGZpbGVzIHVzZWQgd2hlbiBidWlsZGluZyBsaWJwbmcgKi8KICAgIGlmKHBuZ19wdHIgIT0gTlVMTCkgLyogc2lsZW5jZSBjb21waWxlciB3YXJuaW5nIGFib3V0IHVudXNlZCBwbmdfcHRyICovCi0gICAgICByZXR1cm4oKHBuZ19jaGFycCkgIjEuMC45YmV0YTUiKTsKLSAgIHJldHVybigocG5nX2NoYXJwKSAiMS4wLjliZXRhNSIpOworICAgICAgcmV0dXJuKChwbmdfY2hhcnApICIxLjAuOWJldGE2Iik7CisgICByZXR1cm4oKHBuZ19jaGFycCkgIjEuMC45YmV0YTYiKTsKIH0KIAogcG5nX2NoYXJwIFBOR0FQSQpkaWZmIC0tZ2l0IGEvcG5nLmggYi9wbmcuaAppbmRleCBiNTg5NTI4Li4wOTQ5YWVlIDEwMDY0NAotLS0gYS9wbmcuaAorKysgYi9wbmcuaApAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nLmggLSBoZWFkZXIgZmlsZSBmb3IgUE5HIHJlZmVyZW5jZSBsaWJyYXJ5CiAgKgotICogbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCisgKiBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKICAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQogICogKFZlcnNpb24gMC44OCBDb3B5cmlnaHQgKGMpIDE5OTUsIDE5OTYgR3V5IEVyaWMgU2NoYWxuYXQsIEdyb3VwIDQyLCBJbmMuKQpAQCAtOSw3ICs5LDcgQEAKICAqIEF1dGhvcnMgYW5kIG1haW50YWluZXJzOgogICogIGxpYnBuZyB2ZXJzaW9ucyAwLjcxLCBNYXkgMTk5NSwgdGhyb3VnaCAwLjg4LCBKYW51YXJ5IDE5OTY6IEd1eSBTY2hhbG5hdAogICogIGxpYnBuZyB2ZXJzaW9ucyAwLjg5YywgSnVuZSAxOTk2LCB0aHJvdWdoIDAuOTYsIE1heSAxOTk3OiBBbmRyZWFzIERpbGdlcgotICogIGxpYnBuZyB2ZXJzaW9ucyAwLjk3LCBKYW51YXJ5IDE5OTgsIHRocm91Z2ggMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwOiBHbGVubgorICogIGxpYnBuZyB2ZXJzaW9ucyAwLjk3LCBKYW51YXJ5IDE5OTgsIHRocm91Z2ggMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwOiBHbGVubgogICogIFNlZSBhbHNvICJDb250cmlidXRpbmcgQXV0aG9ycyIsIGJlbG93LgogICoKICAqIE5vdGUgYWJvdXQgbGlicG5nIHZlcnNpb24gbnVtYmVyczoKQEAgLTU4LDcgKzU4LDcgQEAKICAqICAgIDEuMC44YmV0YTEtNCAgICAgICAgICAgICAgICAgIDEwMDA4ICAyLjEuMC44YmV0YTEtNAogICogICAgMS4wLjhyYzEgICAgICAgICAgICAgICAgICAgICAgMTAwMDggIDIuMS4wLjhyYzEKICAqICAgIDEuMC44ICAgICAgICAgICAgICAgICAgICAgICAgIDEwMDA4ICAyLjEuMC44Ci0gKiAgICAxLjAuOWJldGExLTUgICAgICAgICAgICAgICAgICAxMDAwOSAgMi4xLjAuOWJldGExLTUKKyAqICAgIDEuMC45YmV0YTEtNiAgICAgICAgICAgICAgICAgIDEwMDA5ICAyLjEuMC45YmV0YTEtNgogICoKICAqICAgIEhlbmNlZm9ydGggdGhlIHNvdXJjZSB2ZXJzaW9uIHdpbGwgbWF0Y2ggdGhlIHNoYXJlZC1saWJyYXJ5IG1ham9yCiAgKiAgICBhbmQgbWlub3IgbnVtYmVyczsgdGhlIHNoYXJlZC1saWJyYXJ5IG1ham9yIHZlcnNpb24gbnVtYmVyIHdpbGwgYmUKQEAgLTg1LDcgKzg1LDcgQEAKICAqIElmIHlvdSBtb2RpZnkgbGlicG5nIHlvdSBtYXkgaW5zZXJ0IGFkZGl0aW9uYWwgbm90aWNlcyBpbW1lZGlhdGVseSBmb2xsb3dpbmcKICAqIHRoaXMgc2VudGVuY2UuCiAgKgotICogbGlicG5nIHZlcnNpb25zIDEuMC43LCBKdWx5IDEsIDIwMDAsIHRocm91Z2ggIDEuMC45YmV0YTUsIERlY2VtYmVyIDE1LCAyMDAwLCBhcmUKKyAqIGxpYnBuZyB2ZXJzaW9ucyAxLjAuNywgSnVseSAxLCAyMDAwLCB0aHJvdWdoICAxLjAuOWJldGE2LCBEZWNlbWJlciAxOCwgMjAwMCwgYXJlCiAgKiBDb3B5cmlnaHQgKGMpIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uLCBhbmQgYXJlCiAgKiBkaXN0cmlidXRlZCBhY2NvcmRpbmcgdG8gdGhlIHNhbWUgZGlzY2xhaW1lciBhbmQgbGljZW5zZSBhcyBsaWJwbmctMS4wLjYKICAqIHdpdGggdGhlIGZvbGxvd2luZyBpbmRpdmlkdWFscyBhZGRlZCB0byB0aGUgbGlzdCBvZiBDb250cmlidXRpbmcgQXV0aG9ycwpAQCAtMTkwLDEzICsxOTAsMTMgQEAKICAqIFkySyBjb21wbGlhbmNlIGluIGxpYnBuZzoKICAqID09PT09PT09PT09PT09PT09PT09PT09PT0KICAqCi0gKiAgICBEZWNlbWJlciAxNSwgMjAwMAorICogICAgRGVjZW1iZXIgMTgsIDIwMDAKICAqCiAgKiAgICBTaW5jZSB0aGUgUE5HIERldmVsb3BtZW50IGdyb3VwIGlzIGFuIGFkLWhvYyBib2R5LCB3ZSBjYW4ndCBtYWtlCiAgKiAgICBhbiBvZmZpY2lhbCBkZWNsYXJhdGlvbi4KICAqCiAgKiAgICBUaGlzIGlzIHlvdXIgdW5vZmZpY2lhbCBhc3N1cmFuY2UgdGhhdCBsaWJwbmcgZnJvbSB2ZXJzaW9uIDAuNzEgYW5kCi0gKiAgICB1cHdhcmQgdGhyb3VnaCAxLjAuOWJldGE1IGFyZSBZMksgY29tcGxpYW50LiAgSXQgaXMgbXkgYmVsaWVmIHRoYXQgZWFybGllcgorICogICAgdXB3YXJkIHRocm91Z2ggMS4wLjliZXRhNiBhcmUgWTJLIGNvbXBsaWFudC4gIEl0IGlzIG15IGJlbGllZiB0aGF0IGVhcmxpZXIKICAqICAgIHZlcnNpb25zIHdlcmUgYWxzbyBZMksgY29tcGxpYW50LgogICoKICAqICAgIExpYnBuZyBvbmx5IGhhcyB0aHJlZSB5ZWFyIGZpZWxkcy4gIE9uZSBpcyBhIDItYnl0ZSB1bnNpZ25lZCBpbnRlZ2VyCkBAIC0yNTIsNyArMjUyLDcgQEAKICAqLwogCiAvKiBWZXJzaW9uIGluZm9ybWF0aW9uIGZvciBwbmcuaCAtIHRoaXMgc2hvdWxkIG1hdGNoIHRoZSB2ZXJzaW9uIGluIHBuZy5jICovCi0jZGVmaW5lIFBOR19MSUJQTkdfVkVSX1NUUklORyAiMS4wLjliZXRhNSIKKyNkZWZpbmUgUE5HX0xJQlBOR19WRVJfU1RSSU5HICIxLjAuOWJldGE2IgogCiAjZGVmaW5lIFBOR19MSUJQTkdfVkVSX1NPTlVNICAgMgogCkBAIC0yNjMsNyArMjYzLDcgQEAKIC8qIFRoaXMgc2hvdWxkIG1hdGNoIHRoZSBudW1lcmljIHBhcnQgb2YgdGhlIGZpbmFsIGNvbXBvbmVudCBvZgogICogUE5HX0xJQlBOR19WRVJfU1RSSU5HLCBvbWl0dGluZyBhbnkgbGVhZGluZyB6ZXJvOiAqLwogCi0jZGVmaW5lIFBOR19MSUJQTkdfVkVSX0JVSUxEICA1CisjZGVmaW5lIFBOR19MSUJQTkdfVkVSX0JVSUxEICA2CiAKICNkZWZpbmUgUE5HX0xJQlBOR19CVUlMRF9BTFBIQSAgICAxCiAjZGVmaW5lIFBOR19MSUJQTkdfQlVJTERfQkVUQSAgICAgMgpAQCAtOTIwLDkgKzkyMCw4IEBACiAKIC8qIEZsYWdzIGZvciBNTkcgc3VwcG9ydGVkIGZlYXR1cmVzICovCiAjZGVmaW5lIFBOR19GTEFHX01OR19FTVBUWV9QTFRFICAgICAweDAxCi0jZGVmaW5lIFBOR19NT0RFX0VNQkVEREVEX0lOX01ORyAgICAweDAyCiAjZGVmaW5lIFBOR19GTEFHX01OR19GSUxURVJfNjQgICAgICAweDA0Ci0jZGVmaW5lIFBOR19BTExfTU5HX0ZFQVRVUkVTICAgICAgICAweDA3CisjZGVmaW5lIFBOR19BTExfTU5HX0ZFQVRVUkVTICAgICAgICAweDA1CiAKIHR5cGVkZWYgcG5nX3ZvaWRwICgqcG5nX21hbGxvY19wdHIpIFBOR0FSRygocG5nX3N0cnVjdHAsIHBuZ19zaXplX3QpKTsKIHR5cGVkZWYgdm9pZCAoKnBuZ19mcmVlX3B0cikgUE5HQVJHKChwbmdfc3RydWN0cCwgcG5nX3ZvaWRwKSk7CkBAIC0xMTczLDkgKzExNzIsOSBAQAogfTsKIAogLyogVGhpcyBwcmV2ZW50cyBhIGNvbXBpbGVyIGVycm9yIGluIHBuZ19nZXRfY29weXJpZ2h0KCkgaW4gcG5nLmMgaWYgcG5nLmMKLWFuZCBwbmcuaCBhcmUgYm90aCBhdCAqIHZlcnNpb24gMS4wLjliZXRhNQorYW5kIHBuZy5oIGFyZSBib3RoIGF0ICogdmVyc2lvbiAxLjAuOWJldGE2CiAgKi8KLXR5cGVkZWYgcG5nX3N0cnVjdHAgdmVyc2lvbl8xXzBfOWJldGE1OwordHlwZWRlZiBwbmdfc3RydWN0cCB2ZXJzaW9uXzFfMF85YmV0YTY7CiAKIHR5cGVkZWYgcG5nX3N0cnVjdCBGQVIgKiBGQVIgKiBwbmdfc3RydWN0cHA7CiAKQEAgLTIyMTYsNyArMjIxNSw3IEBACiAjZW5kaWYKIAogI2RlZmluZSBQTkdfSEVBREVSX1ZFUlNJT05fU1RSSU5HIFwKLSAgICIgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwIChoZWFkZXIpXG4iCisgICAiIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMCAoaGVhZGVyKVxuIgogCiAjaWZkZWYgUE5HX1JFQURfQ09NUE9TSVRFX05PRElWX1NVUFBPUlRFRAogLyogV2l0aCB0aGVzZSByb3V0aW5lcyB3ZSBhdm9pZCBhbiBpbnRlZ2VyIGRpdmlkZSwgd2hpY2ggd2lsbCBiZSBzbG93ZXIgb24KQEAgLTIyODIsNiArMjI4MSw3IEBACiAjZGVmaW5lIFBOR19XUk9URV90SU1FICAgICAgICAgICAgIDB4MjAwCiAjZGVmaW5lIFBOR19XUk9URV9JTkZPX0JFRk9SRV9QTFRFIDB4NDAwCiAjZGVmaW5lIFBOR19CQUNLR1JPVU5EX0lTX0dSQVkgICAgIDB4ODAwCisjZGVmaW5lIFBOR19IQVZFX1BOR19TSUdOQVRVUkUgICAgMHgxMDAwCiAKIC8qIGZsYWdzIGZvciB0aGUgdHJhbnNmb3JtYXRpb25zIHRoZSBQTkcgbGlicmFyeSBkb2VzIG9uIHRoZSBpbWFnZSBkYXRhICovCiAjZGVmaW5lIFBOR19CR1IgICAgICAgICAgICAgICAgMHgwMDAxCmRpZmYgLS1naXQgYS9wbmdhc21yZC5oIGIvcG5nYXNtcmQuaAppbmRleCBhMGQ1MDE2Li41OTAzNTljIDEwMDY0NAotLS0gYS9wbmdhc21yZC5oCisrKyBiL3BuZ2FzbXJkLmgKQEAgLTEsNiArMSw2IEBACiAvKiBwbmdhc21yZC5oIC0gYXNzZW1ibGVyIHZlcnNpb24gb2YgdXRpbGl0aWVzIHRvIHJlYWQgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAKKyAqIGxpYnBuZyAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICoKZGlmZiAtLWdpdCBhL3BuZ2NvbmYuaCBiL3BuZ2NvbmYuaAppbmRleCBiNDhjNDFhLi5iODgxNDk5IDEwMDY0NAotLS0gYS9wbmdjb25mLmgKKysrIGIvcG5nY29uZi5oCkBAIC0xLDYgKzEsNiBAQAogLyogcG5nY29uZi5oIC0gbWFjaGluZSBjb25maWd1cmFibGUgZmlsZSBmb3IgbGlicG5nCiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTQ5MSw5ICs0OTEsMTIgQEAKICNlbmRpZgogI2VuZGlmCiAKKy8qIERpc2FibGUgaWYgeW91IGRvbid0IG5lZWQgdG8gc3VwcG9ydCBQTkdzIHRoYXQgYXJlIGVtYmVkZGVkIGluIE1ORworICAgZGF0YXN0cmVhbXMgKi8KICNpZm5kZWYgUE5HX05PX01OR19GRUFUVVJFUwotI2RlZmluZSBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCAgLyogVXNlZnVsIGZvciBNTkcgYXBwbGljYXRpb25zICovCisjZGVmaW5lIFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVECiAjZW5kaWYKKwogLyogRGVwcmVjYXRlZCwgd2lsbCBiZSByZW1vdmVkICovCiAjaWZuZGVmIFBOR19OT19SRUFEX0VNUFRZX1BMVEUKICNkZWZpbmUgUE5HX1JFQURfRU1QVFlfUExURV9TVVBQT1JURUQKZGlmZiAtLWdpdCBhL3BuZ2Vycm9yLmMgYi9wbmdlcnJvci5jCmluZGV4IDAwNjY4ZmIuLjMyN2NlM2MgMTAwNjQ0Ci0tLSBhL3BuZ2Vycm9yLmMKKysrIGIvcG5nZXJyb3IuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nZXJyb3IuYyAtIHN0dWIgZnVuY3Rpb25zIGZvciBpL28gYW5kIG1lbW9yeSBhbGxvY2F0aW9uCiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ2djY3JkLmMgYi9wbmdnY2NyZC5jCmluZGV4IDliOGVlY2MuLmNjNTVkYzggMTAwNjQ0Ci0tLSBhL3BuZ2djY3JkLmMKKysrIGIvcG5nZ2NjcmQuYwpAQCAtNiw3ICs2LDcgQEAKICAqICAgICBhbmQgaHR0cDovL3d3dy5pbnRlbC5jb20vZHJnL3BlbnRpdW1JSS9hcHBub3Rlcy85MjMvOTIzLmh0bQogICogICAgIGZvciBJbnRlbCdzIHBlcmZvcm1hbmNlIGFuYWx5c2lzIG9mIHRoZSBNTVggdnMuIG5vbi1NTVggY29kZS4KICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCisgKiBsaWJwbmcgMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIENvcHlyaWdodCAoYykgMTk5OCwgSW50ZWwgQ29ycG9yYXRpb24KZGlmZiAtLWdpdCBhL3BuZ2dldC5jIGIvcG5nZ2V0LmMKaW5kZXggZWRmYzhlYS4uODc2YzYzZCAxMDA2NDQKLS0tIGEvcG5nZ2V0LmMKKysrIGIvcG5nZ2V0LmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ2dldC5jIC0gcmV0cmlldmFsIG9mIHZhbHVlcyBmcm9tIGluZm8gc3RydWN0CiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ21lbS5jIGIvcG5nbWVtLmMKaW5kZXggMzM2YzRmMy4uNzI1MmZmYSAxMDA2NDQKLS0tIGEvcG5nbWVtLmMKKysrIGIvcG5nbWVtLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ21lbS5jIC0gc3R1YiBmdW5jdGlvbnMgZm9yIG1lbW9yeSBhbGxvY2F0aW9uCiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ3ByZWFkLmMgYi9wbmdwcmVhZC5jCmluZGV4IDU3NjZiMzcuLjc2NTk2NDEgMTAwNjQ0Ci0tLSBhL3BuZ3ByZWFkLmMKKysrIGIvcG5ncHJlYWQuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5ncHJlYWQuYyAtIHJlYWQgYSBwbmcgZmlsZSBpbiBwdXNoIG1vZGUKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCisgKiBsaWJwbmcgMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQpkaWZmIC0tZ2l0IGEvcG5ncmVhZC5jIGIvcG5ncmVhZC5jCmluZGV4IGIyY2VkOWIuLmVjYzczNmIgMTAwNjQ0Ci0tLSBhL3BuZ3JlYWQuYworKysgYi9wbmdyZWFkLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ3JlYWQuYyAtIHJlYWQgYSBQTkcgZmlsZQogICoKLSAqIGxpYnBuZyAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAKKyAqIGxpYnBuZyAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCkBAIC0yNDYsNiArMjQ2LDggQEAKICAgICAgICAgIGVsc2UKICAgICAgICAgICAgIHBuZ19lcnJvcihwbmdfcHRyLCAiUE5HIGZpbGUgY29ycnVwdGVkIGJ5IEFTQ0lJIGNvbnZlcnNpb24iKTsKICAgICAgIH0KKyAgICAgIGlmIChudW1fY2hlY2tlZCA8IDMpCisgICAgICAgICBwbmdfcHRyLT5tb2RlIHw9IFBOR19IQVZFX1BOR19TSUdOQVRVUkU7CiAgICB9CiAKICAgIGZvcig7OykKQEAgLTcxMCw3ICs3MTIsNyBAQAogICogbm90IGNhbGxlZCBwbmdfc2V0X2ludGVybGFjZV9oYW5kbGluZygpLCB0aGUgZGlzcGxheV9yb3cgYnVmZmVyIHdpbGwKICAqIGJlIGlnbm9yZWQsIHNvIHBhc3MgTlVMTCB0byBpdC4KICAqCi0gKiBbKl0gcG5nX2hhbmRsZV9hbHBoYSgpIGRvZXMgbm90IGV4aXN0IHlldCwgYXMgb2YgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNQorICogWypdIHBuZ19oYW5kbGVfYWxwaGEoKSBkb2VzIG5vdCBleGlzdCB5ZXQsIGFzIG9mIGxpYnBuZyB2ZXJzaW9uIDEuMC45YmV0YTYKICAqLwogCiB2b2lkIFBOR0FQSQpAQCAtNzU5LDcgKzc2MSw3IEBACiAgKiBvbmx5IGNhbGwgdGhpcyBmdW5jdGlvbiBvbmNlLiAgSWYgeW91IGRlc2lyZSB0byBoYXZlIGFuIGltYWdlIGZvcgogICogZWFjaCBwYXNzIG9mIGEgaW50ZXJsYWNlZCBpbWFnZSwgdXNlIHBuZ19yZWFkX3Jvd3MoKSBpbnN0ZWFkLgogICoKLSAqIFsqXSBwbmdfaGFuZGxlX2FscGhhKCkgZG9lcyBub3QgZXhpc3QgeWV0LCBhcyBvZiBsaWJwbmcgdmVyc2lvbiAxLjAuOWJldGE1CisgKiBbKl0gcG5nX2hhbmRsZV9hbHBoYSgpIGRvZXMgbm90IGV4aXN0IHlldCwgYXMgb2YgbGlicG5nIHZlcnNpb24gMS4wLjliZXRhNgogICovCiB2b2lkIFBOR0FQSQogcG5nX3JlYWRfaW1hZ2UocG5nX3N0cnVjdHAgcG5nX3B0ciwgcG5nX2J5dGVwcCBpbWFnZSkKZGlmZiAtLWdpdCBhL3BuZ3Jpby5jIGIvcG5ncmlvLmMKaW5kZXggYzcwMjgyNy4uNzMyMTcxNCAxMDA2NDQKLS0tIGEvcG5ncmlvLmMKKysrIGIvcG5ncmlvLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ3Jpby5jIC0gZnVuY3Rpb25zIGZvciBkYXRhIGlucHV0CiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ3J0cmFuLmMgYi9wbmdydHJhbi5jCmluZGV4IDkwNjRiNDguLjA0MzIwZGIgMTAwNjQ0Ci0tLSBhL3BuZ3J0cmFuLmMKKysrIGIvcG5ncnRyYW4uYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5ncnRyYW4uYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgZm9yIFBORyByZWFkZXJzCiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ3J1dGlsLmMgYi9wbmdydXRpbC5jCmluZGV4IDcxNWMyMGQuLjdkNWIxNGIgMTAwNjQ0Ci0tLSBhL3BuZ3J1dGlsLmMKKysrIGIvcG5ncnV0aWwuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5ncnV0aWwuYyAtIHV0aWxpdGllcyB0byByZWFkIGEgUE5HIGZpbGUKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCisgKiBsaWJwbmcgMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQpAQCAtMzUzLDE1ICszNTMsMzEgQEAKICAgIGlmIChjb21wcmVzc2lvbl90eXBlICE9IFBOR19DT01QUkVTU0lPTl9UWVBFX0JBU0UpCiAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIlVua25vd24gY29tcHJlc3Npb24gbWV0aG9kIGluIElIRFIiKTsKIAotICAgaWYoCiAjaWYgZGVmaW5lZChQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCkKLSAgICAgICEoKHBuZ19wdHItPm1uZ19mZWF0dXJlc19wZXJtaXR0ZWQgJiBQTkdfRkxBR19NTkdfRklMVEVSXzY0KSAmJgorICAgLyogQWNjZXB0IGZpbHRlcl9tZXRob2QgNjQgKGludHJhcGl4ZWwgZGlmZmVyZW5jaW5nKSBvbmx5IGlmCisgICAgKiAxLiBMaWJwbmcgd2FzIGNvbXBpbGVkIHdpdGggUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQgYW5kCisgICAgKiAyLiBMaWJwbmcgZGlkIG5vdCByZWFkIGEgUE5HIHNpZ25hdHVyZSAodGhpcyBmaWx0ZXJfbWV0aG9kIGlzIG9ubHkKKyAgICAqICAgIHVzZWQgaW4gUE5HIGRhdGFzdHJlYW1zIHRoYXQgYXJlIGVtYmVkZGVkIGluIE1ORyBkYXRhc3RyZWFtcykgYW5kCisgICAgKiAzLiBUaGUgYXBwbGljYXRpb24gY2FsbGVkIHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzIHdpdGggYSBtYXNrIHRoYXQKKyAgICAqICAgIGluY2x1ZGVkIFBOR19GTEFHX01OR19GSUxURVJfNjQgYW5kCisgICAgKiA0LiBUaGUgZmlsdGVyX21ldGhvZCBpcyA2NCBhbmQKKyAgICAqIDUuIFRoZSBjb2xvcl90eXBlIGlzIFJHQiBvciBSR0JBCisgICAgKi8KKyAgIGlmKChwbmdfcHRyLT5tb2RlJlBOR19IQVZFX1BOR19TSUdOQVRVUkUpJiZwbmdfcHRyLT5tbmdfZmVhdHVyZXNfcGVybWl0dGVkKQorICAgICAgcG5nX3dhcm5pbmcocG5nX3B0ciwiTU5HIGZlYXR1cmVzIGFyZSBub3QgYWxsb3dlZCBpbiBhIFBORyBkYXRhc3RyZWFtXG4iKTsKKyAgIGlmKCEoKHBuZ19wdHItPm1uZ19mZWF0dXJlc19wZXJtaXR0ZWQgJiBQTkdfRkxBR19NTkdfRklMVEVSXzY0KSAmJgogICAgICAgKGZpbHRlcl90eXBlID09IFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORykgJiYKKyAgICAgICgocG5nX3B0ci0+bW9kZSZQTkdfSEFWRV9QTkdfU0lHTkFUVVJFKSA9PSAwKSAmJgogICAgICAgKGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCIHx8IAogICAgICAgIGNvbG9yX3R5cGUgPT0gUE5HX0NPTE9SX1RZUEVfUkdCX0FMUEhBKSkgJiYKLSNlbmRpZgotICAgICAgZmlsdGVyX3R5cGUgIT0gUE5HX0ZJTFRFUl9UWVBFX0JBU0UpCisgICAgICAgZmlsdGVyX3R5cGUgIT0gUE5HX0ZJTFRFUl9UWVBFX0JBU0UpCiAgICAgICBwbmdfZXJyb3IocG5nX3B0ciwgIlVua25vd24gZmlsdGVyIG1ldGhvZCBpbiBJSERSIik7CisgICBpZihmaWx0ZXJfdHlwZSAhPSBQTkdfRklMVEVSX1RZUEVfQkFTRSkKKyAgICAgIHBuZ193YXJuaW5nKHBuZ19wdHIsICJJbnZhbGlkIGZpbHRlciBtZXRob2QgaW4gSUhEUiIpOworI2Vsc2UKKyAgIGlmKGZpbHRlcl90eXBlICE9IFBOR19GSUxURVJfVFlQRV9CQVNFKQorICAgICAgcG5nX2Vycm9yKHBuZ19wdHIsICJVbmtub3duIGZpbHRlciBtZXRob2QgaW4gSUhEUiIpOworI2VuZGlmCiAKICAgIC8qIHNldCBpbnRlcm5hbCB2YXJpYWJsZXMgKi8KICAgIHBuZ19wdHItPndpZHRoID0gd2lkdGg7CmRpZmYgLS1naXQgYS9wbmdzZXQuYyBiL3BuZ3NldC5jCmluZGV4IGI4YjA1ODkuLjA1YjI5MDggMTAwNjQ0Ci0tLSBhL3BuZ3NldC5jCisrKyBiL3BuZ3NldC5jCkBAIC0xLDcgKzEsNyBAQAogCiAvKiBwbmdzZXQuYyAtIHN0b3JhZ2Ugb2YgaW1hZ2UgaW5mb3JtYXRpb24gaW50byBpbmZvIHN0cnVjdAogICoKLSAqIGxpYnBuZyAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAKKyAqIGxpYnBuZyAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCmRpZmYgLS1naXQgYS9wbmd0ZXN0LmMgYi9wbmd0ZXN0LmMKaW5kZXggYWY1NDgxMy4uYzhkMWY0MCAxMDA2NDQKLS0tIGEvcG5ndGVzdC5jCisrKyBiL3BuZ3Rlc3QuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5ndGVzdC5jIC0gYSBzaW1wbGUgdGVzdCBwcm9ncmFtIHRvIHRlc3QgbGlicG5nCiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTE0NDksNCArMTQ0OSw0IEBACiB9CiAKIC8qIEdlbmVyYXRlIGEgY29tcGlsZXIgZXJyb3IgaWYgdGhlcmUgaXMgYW4gb2xkIHBuZy5oIGluIHRoZSBzZWFyY2ggcGF0aC4gKi8KLXR5cGVkZWYgdmVyc2lvbl8xXzBfOWJldGE1IHlvdXJfcG5nX2hfaXNfbm90X3ZlcnNpb25fMV8wXzliZXRhNTsKK3R5cGVkZWYgdmVyc2lvbl8xXzBfOWJldGE2IHlvdXJfcG5nX2hfaXNfbm90X3ZlcnNpb25fMV8wXzliZXRhNjsKZGlmZiAtLWdpdCBhL3BuZ3RyYW5zLmMgYi9wbmd0cmFucy5jCmluZGV4IDNlNDAwNzQuLmM1YzdmYzMgMTAwNjQ0Ci0tLSBhL3BuZ3RyYW5zLmMKKysrIGIvcG5ndHJhbnMuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5ndHJhbnMuYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgKHVzZWQgYnkgYm90aCByZWFkZXJzIGFuZCB3cml0ZXJzKQogICoKLSAqIGxpYnBuZyAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAKKyAqIGxpYnBuZyAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCmRpZmYgLS1naXQgYS9wbmd2Y3JkLmMgYi9wbmd2Y3JkLmMKaW5kZXggZmRjM2QzZi4uMmRhYTRmZSAxMDA2NDQKLS0tIGEvcG5ndmNyZC5jCisrKyBiL3BuZ3ZjcmQuYwpAQCAtMiw3ICsyLDcgQEAKICAqCiAgKiBGb3IgSW50ZWwgeDg2IENQVSBhbmQgTWljcm9zb2Z0IFZpc3VhbCBDKysgY29tcGlsZXIKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCisgKiBsaWJwbmcgMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIENvcHlyaWdodCAoYykgMTk5OCwgSW50ZWwgQ29ycG9yYXRpb24KZGlmZiAtLWdpdCBhL3BuZ3dpby5jIGIvcG5nd2lvLmMKaW5kZXggOGJhYWNlYS4uMThiNDlmZiAxMDA2NDQKLS0tIGEvcG5nd2lvLmMKKysrIGIvcG5nd2lvLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ3dpby5jIC0gZnVuY3Rpb25zIGZvciBkYXRhIG91dHB1dAogICoKLSAqIGxpYnBuZyAxLjAuOWJldGE1IC0gRGVjZW1iZXIgMTUsIDIwMDAKKyAqIGxpYnBuZyAxLjAuOWJldGE2IC0gRGVjZW1iZXIgMTgsIDIwMDAKICAqIEZvciBjb25kaXRpb25zIG9mIGRpc3RyaWJ1dGlvbiBhbmQgdXNlLCBzZWUgY29weXJpZ2h0IG5vdGljZSBpbiBwbmcuaAogICogQ29weXJpZ2h0IChjKSAxOTk4LCAxOTk5LCAyMDAwIEdsZW5uIFJhbmRlcnMtUGVocnNvbgogICogKFZlcnNpb24gMC45NiBDb3B5cmlnaHQgKGMpIDE5OTYsIDE5OTcgQW5kcmVhcyBEaWxnZXIpCmRpZmYgLS1naXQgYS9wbmd3cml0ZS5jIGIvcG5nd3JpdGUuYwppbmRleCBmMWYxZDNhLi5iMDA0YTA2IDEwMDY0NAotLS0gYS9wbmd3cml0ZS5jCisrKyBiL3BuZ3dyaXRlLmMKQEAgLTEsNyArMSw3IEBACiAKIC8qIHBuZ3dyaXRlLmMgLSBnZW5lcmFsIHJvdXRpbmVzIHRvIHdyaXRlIGEgUE5HIGZpbGUKICAqCi0gKiBsaWJwbmcgMS4wLjliZXRhNSAtIERlY2VtYmVyIDE1LCAyMDAwCisgKiBsaWJwbmcgMS4wLjliZXRhNiAtIERlY2VtYmVyIDE4LCAyMDAwCiAgKiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKICAqIENvcHlyaWdodCAoYykgMTk5OCwgMTk5OSwgMjAwMCBHbGVubiBSYW5kZXJzLVBlaHJzb24KICAqIChWZXJzaW9uIDAuOTYgQ29weXJpZ2h0IChjKSAxOTk2LCAxOTk3IEFuZHJlYXMgRGlsZ2VyKQpAQCAtMjgsNiArMjgsMTMgQEAKICAgIGlmICghKHBuZ19wdHItPm1vZGUgJiBQTkdfV1JPVEVfSU5GT19CRUZPUkVfUExURSkpCiAgICB7CiAgICBwbmdfd3JpdGVfc2lnKHBuZ19wdHIpOyAvKiB3cml0ZSBQTkcgc2lnbmF0dXJlICovCisjaWYgZGVmaW5lZChQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCkKKyAgIGlmKChwbmdfcHRyLT5tb2RlJlBOR19IQVZFX1BOR19TSUdOQVRVUkUpJiYocG5nX3B0ci0+bW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCkpCisgICB7CisgICAgICBwbmdfd2FybmluZyhwbmdfcHRyLCJNTkcgZmVhdHVyZXMgYXJlIG5vdCBhbGxvd2VkIGluIGEgUE5HIGRhdGFzdHJlYW1cbiIpOworICAgICAgcG5nX3B0ci0+bW5nX2ZlYXR1cmVzX3Blcm1pdHRlZD0wOworICAgfQorI2VuZGlmCiAgICAvKiB3cml0ZSBJSERSIGluZm9ybWF0aW9uLiAqLwogICAgcG5nX3dyaXRlX0lIRFIocG5nX3B0ciwgaW5mb19wdHItPndpZHRoLCBpbmZvX3B0ci0+aGVpZ2h0LAogICAgICAgaW5mb19wdHItPmJpdF9kZXB0aCwgaW5mb19wdHItPmNvbG9yX3R5cGUsIGluZm9fcHRyLT5jb21wcmVzc2lvbl90eXBlLApAQCAtNzc0LDYgKzc4MSwxNSBAQAogICAgICAgcG5nX2RvX3dyaXRlX3RyYW5zZm9ybWF0aW9ucyhwbmdfcHRyKTsKIAogI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCisgICAvKiBXcml0ZSBmaWx0ZXJfbWV0aG9kIDY0IChpbnRyYXBpeGVsIGRpZmZlcmVuY2luZykgb25seSBpZgorICAgICogMS4gTGlicG5nIHdhcyBjb21waWxlZCB3aXRoIFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEIGFuZAorICAgICogMi4gTGlicG5nIGRpZCBub3Qgd3JpdGUgYSBQTkcgc2lnbmF0dXJlICh0aGlzIGZpbHRlcl9tZXRob2QgaXMgb25seQorICAgICogICAgdXNlZCBpbiBQTkcgZGF0YXN0cmVhbXMgdGhhdCBhcmUgZW1iZWRkZWQgaW4gTU5HIGRhdGFzdHJlYW1zKSBhbmQKKyAgICAqIDMuIFRoZSBhcHBsaWNhdGlvbiBjYWxsZWQgcG5nX3Blcm1pdF9tbmdfZmVhdHVyZXMgd2l0aCBhIG1hc2sgdGhhdAorICAgICogICAgaW5jbHVkZWQgUE5HX0ZMQUdfTU5HX0ZJTFRFUl82NCBhbmQKKyAgICAqIDQuIFRoZSBmaWx0ZXJfbWV0aG9kIGlzIDY0IGFuZAorICAgICogNS4gVGhlIGNvbG9yX3R5cGUgaXMgUkdCIG9yIFJHQkEKKyAgICAqLwogICAgaWYoKHBuZ19wdHItPm1uZ19mZWF0dXJlc19wZXJtaXR0ZWQgJiBQTkdfRkxBR19NTkdfRklMVEVSXzY0KSAmJgogICAgICAgKHBuZ19wdHItPmZpbHRlcl90eXBlID09IFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORykpCiAgICB7CkBAIC05NzcsNiArOTkzLDExIEBACiBwbmdfc2V0X2ZpbHRlcihwbmdfc3RydWN0cCBwbmdfcHRyLCBpbnQgbWV0aG9kLCBpbnQgZmlsdGVycykKIHsKICAgIHBuZ19kZWJ1ZygxLCAiaW4gcG5nX3NldF9maWx0ZXJcbiIpOworI2lmIGRlZmluZWQoUE5HX01OR19GRUFUVVJFU19TVVBQT1JURUQpCisgICAgICBpZigocG5nX3B0ci0+bW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCAmIFBOR19GTEFHX01OR19GSUxURVJfNjQpICYmCisgICAgICAobWV0aG9kID09IFBOR19JTlRSQVBJWEVMX0RJRkZFUkVOQ0lORykpCisgICAgICAgICBtZXRob2QgPSBQTkdfRklMVEVSX1RZUEVfQkFTRTsKKyNlbmRpZgogICAgaWYgKG1ldGhvZCA9PSBQTkdfRklMVEVSX1RZUEVfQkFTRSkKICAgIHsKICAgICAgIHN3aXRjaCAoZmlsdGVycyAmIChQTkdfQUxMX0ZJTFRFUlMgfCAweDA3KSkKZGlmZiAtLWdpdCBhL3BuZ3d0cmFuLmMgYi9wbmd3dHJhbi5jCmluZGV4IDVkZDcwMDcuLmIzM2Y1ZTkgMTAwNjQ0Ci0tLSBhL3BuZ3d0cmFuLmMKKysrIGIvcG5nd3RyYW4uYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nd3RyYW4uYyAtIHRyYW5zZm9ybXMgdGhlIGRhdGEgaW4gYSByb3cgZm9yIFBORyB3cml0ZXJzCiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKZGlmZiAtLWdpdCBhL3BuZ3d1dGlsLmMgYi9wbmd3dXRpbC5jCmluZGV4IDRkNjY5ZGEuLjUzMDM5YTUgMTAwNjQ0Ci0tLSBhL3BuZ3d1dGlsLmMKKysrIGIvcG5nd3V0aWwuYwpAQCAtMSw3ICsxLDcgQEAKIAogLyogcG5nd3V0aWwuYyAtIHV0aWxpdGllcyB0byB3cml0ZSBhIFBORyBmaWxlCiAgKgotICogbGlicG5nIDEuMC45YmV0YTUgLSBEZWNlbWJlciAxNSwgMjAwMAorICogbGlicG5nIDEuMC45YmV0YTYgLSBEZWNlbWJlciAxOCwgMjAwMAogICogRm9yIGNvbmRpdGlvbnMgb2YgZGlzdHJpYnV0aW9uIGFuZCB1c2UsIHNlZSBjb3B5cmlnaHQgbm90aWNlIGluIHBuZy5oCiAgKiBDb3B5cmlnaHQgKGMpIDE5OTgsIDE5OTksIDIwMDAgR2xlbm4gUmFuZGVycy1QZWhyc29uCiAgKiAoVmVyc2lvbiAwLjk2IENvcHlyaWdodCAoYykgMTk5NiwgMTk5NyBBbmRyZWFzIERpbGdlcikKQEAgLTEzMSw2ICsxMzEsOCBAQAogICAgLyogd3JpdGUgdGhlIHJlc3Qgb2YgdGhlIDggYnl0ZSBzaWduYXR1cmUgKi8KICAgIHBuZ193cml0ZV9kYXRhKHBuZ19wdHIsICZwbmdfc2lnbmF0dXJlW3BuZ19wdHItPnNpZ19ieXRlc10sCiAgICAgICAocG5nX3NpemVfdCk4IC0gcG5nX3B0ci0+c2lnX2J5dGVzKTsKKyAgIGlmKHBuZ19wdHItPnNpZ19ieXRlcyA8IDMpCisgICAgICBwbmdfcHRyLT5tb2RlIHw9IFBOR19IQVZFX1BOR19TSUdOQVRVUkU7CiB9CiAKICNpZiBkZWZpbmVkKFBOR19XUklURV9URVhUX1NVUFBPUlRFRCkgfHwgZGVmaW5lZChQTkdfV1JJVEVfaUNDUF9TVVBQT1JURUQpCkBAIC00MTksOSArNDIxLDIxIEBACiAgICAgICBjb21wcmVzc2lvbl90eXBlID0gUE5HX0NPTVBSRVNTSU9OX1RZUEVfQkFTRTsKICAgIH0KIAorICAgLyogV3JpdGUgZmlsdGVyX21ldGhvZCA2NCAoaW50cmFwaXhlbCBkaWZmZXJlbmNpbmcpIG9ubHkgaWYKKyAgICAqIDEuIExpYnBuZyB3YXMgY29tcGlsZWQgd2l0aCBQTkdfTU5HX0ZFQVRVUkVTX1NVUFBPUlRFRCBhbmQKKyAgICAqIDIuIExpYnBuZyBkaWQgbm90IHdyaXRlIGEgUE5HIHNpZ25hdHVyZSAodGhpcyBmaWx0ZXJfbWV0aG9kIGlzIG9ubHkKKyAgICAqICAgIHVzZWQgaW4gUE5HIGRhdGFzdHJlYW1zIHRoYXQgYXJlIGVtYmVkZGVkIGluIE1ORyBkYXRhc3RyZWFtcykgYW5kCisgICAgKiAzLiBUaGUgYXBwbGljYXRpb24gY2FsbGVkIHBuZ19wZXJtaXRfbW5nX2ZlYXR1cmVzIHdpdGggYSBtYXNrIHRoYXQKKyAgICAqICAgIGluY2x1ZGVkIFBOR19GTEFHX01OR19GSUxURVJfNjQgYW5kCisgICAgKiA0LiBUaGUgZmlsdGVyX21ldGhvZCBpcyA2NCBhbmQKKyAgICAqIDUuIFRoZSBjb2xvcl90eXBlIGlzIFJHQiBvciBSR0JBCisgICAgKi8KICAgIGlmICgKICNpZiBkZWZpbmVkKFBOR19NTkdfRkVBVFVSRVNfU1VQUE9SVEVEKQogICAgICAgISgocG5nX3B0ci0+bW5nX2ZlYXR1cmVzX3Blcm1pdHRlZCAmIFBOR19GTEFHX01OR19GSUxURVJfNjQpICYmCisgICAgICAoKHBuZ19wdHItPm1vZGUmUE5HX0hBVkVfUE5HX1NJR05BVFVSRSkgPT0gMCkgJiYKKyAgICAgIChjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQiB8fCAKKyAgICAgICBjb2xvcl90eXBlID09IFBOR19DT0xPUl9UWVBFX1JHQl9BTFBIQSkgJiYKICAgICAgIChmaWx0ZXJfdHlwZSA9PSBQTkdfSU5UUkFQSVhFTF9ESUZGRVJFTkNJTkcpKSAmJgogI2VuZGlmCiAgICAgICBmaWx0ZXJfdHlwZSAhPSBQTkdfRklMVEVSX1RZUEVfQkFTRSkKZGlmZiAtLWdpdCBhL3Byb2plY3RzL21zdmMvUkVBRE1FLnR4dCBiL3Byb2plY3RzL21zdmMvUkVBRE1FLnR4dAppbmRleCBkZWJkMmRkLi5lMmVjNDVjIDEwMDY0NAotLS0gYS9wcm9qZWN0cy9tc3ZjL1JFQURNRS50eHQKKysrIGIvcHJvamVjdHMvbXN2Yy9SRUFETUUudHh0CkBAIC0xLDUgKzEsNSBAQAogTWljcm9zb2Z0IERldmVsb3BlciBTdHVkaW8gQnVpbGQgRmlsZSwgRm9ybWF0IFZlcnNpb24gNi4wMCBmb3IKLWxpYnBuZyAxLjAuOWJldGE1IChEZWNlbWJlciAxNSwgMjAwMCkgYW5kIHpsaWIKK2xpYnBuZyAxLjAuOWJldGE2IChEZWNlbWJlciAxOCwgMjAwMCkgYW5kIHpsaWIKIAogQ29weXJpZ2h0IChDKSAyMDAwIFNpbW9uLVBpZXJyZSBDYWRpZXV4CiBGb3IgY29uZGl0aW9ucyBvZiBkaXN0cmlidXRpb24gYW5kIHVzZSwgc2VlIGNvcHlyaWdodCBub3RpY2UgaW4gcG5nLmgKZGlmZiAtLWdpdCBhL3Byb2plY3RzL21zdmMvcG5nMzJtcy5kZWYgYi9wcm9qZWN0cy9tc3ZjL3BuZzMybXMuZGVmCmluZGV4IGNjODUzMzIuLjkxOWJlMDMgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL21zdmMvcG5nMzJtcy5kZWYKKysrIGIvcHJvamVjdHMvbXN2Yy9wbmczMm1zLmRlZgpAQCAtNiw3ICs2LDcgQEAKIERFU0NSSVBUSU9OICJQTkcgaW1hZ2UgY29tcHJlc3Npb24gbGlicmFyeSBmb3IgV2luZG93cyIKIAogRVhQT1JUUwotO1ZlcnNpb24gMS4wLjliZXRhNQorO1ZlcnNpb24gMS4wLjliZXRhNgogICBwbmdfYnVpbGRfZ3JheXNjYWxlX3BhbGV0dGUgIEAxCiAgIHBuZ19jaGVja19zaWcgICAgICAgIEAyCiAgIHBuZ19jaHVua19lcnJvciAgICAgIEAzCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93aW5jZS9SRUFETUVFLldDRSBiL3Byb2plY3RzL3dpbmNlL1JFQURNRUUuV0NFCmluZGV4IDVhZjdiNjQuLmEyOTQ2ZDAgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL3dpbmNlL1JFQURNRUUuV0NFCisrKyBiL3Byb2plY3RzL3dpbmNlL1JFQURNRUUuV0NFCkBAIC04LDkgKzgsOSBAQAogCiBJbnRyb2R1Y3Rpb24KID09PT09PT09PT09PQotVGhpcyBpcyBsaWJwbmcgMS4wLjliZXRhNSBwb3J0ZWQgdG8gV2luZG93c0NFIDIuMCBhbmQgMi4xMS4KLWxpYnBuZyAxLjAuOWJldGE1IGlzIGEgUE5HIHJlZmVyZW5jZSBsaWJyYXJ5LgotU2VlIFJFQURNRSwgYSBkb2N1bWVudCBvZiBvcmlnaW5hbCBsaWJwbmcgMS4wLjliZXRhNS4KK1RoaXMgaXMgbGlicG5nIDEuMC45YmV0YTYgcG9ydGVkIHRvIFdpbmRvd3NDRSAyLjAgYW5kIDIuMTEuCitsaWJwbmcgMS4wLjliZXRhNiBpcyBhIFBORyByZWZlcmVuY2UgbGlicmFyeS4KK1NlZSBSRUFETUUsIGEgZG9jdW1lbnQgb2Ygb3JpZ2luYWwgbGlicG5nIDEuMC45YmV0YTYuCiAKIHpsaWIgZm9yIFdpbmRvd3NDRQogPT09PT09PT09PT09PT09PT09CkBAIC0yMyw3ICsyMyw3IEBACiB3YXJyYW50eS4gIEluIG5vIGV2ZW50IHdpbGwgdGhlIGF1dGhvcnMgYmUgaGVsZCBsaWFibGUgZm9yIGFueSBkYW1hZ2VzCiBhcmlzaW5nIGZyb20gdGhlIHVzZSBvZiB0aGlzIHNvZnR3YXJlLgogCi1TZWUgUkVBRE1FIGFuZCBMSUNFTlNFLCBkb2N1bWVudHMgb2Ygb3JpZ2luYWwgbGlicG5nIDEuMC45YmV0YTUsIGZvciBjb25kaXRpb25zCitTZWUgUkVBRE1FIGFuZCBMSUNFTlNFLCBkb2N1bWVudHMgb2Ygb3JpZ2luYWwgbGlicG5nIDEuMC45YmV0YTYsIGZvciBjb25kaXRpb25zCiBvZiB1c2UgYW5kIGRpc3RyaWJ1dGlvbi4KIAogRmlsZXMKZGlmZiAtLWdpdCBhL3Byb2plY3RzL3dpbmNlL1JFQURNRUouV0NFIGIvcHJvamVjdHMvd2luY2UvUkVBRE1FSi5XQ0UKaW5kZXggODdlMTBlMC4uZTc1MjI4NiAxMDA2NDQKLS0tIGEvcHJvamVjdHMvd2luY2UvUkVBRE1FSi5XQ0UKKysrIGIvcHJvamVjdHMvd2luY2UvUkVBRE1FSi5XQ0UKQEAgLTI0LDcgKzI0LDcgQEAKIILJgsiCwYK9gqKCqYLIgumU7YpRgsmCwoKigsSC4IFBjeyO0oFBlHqVeo7SgUGCu4LMkbyXmJdwjtKIyIpPgsyQbJWogUEKIJJjkcyCyZDTlEOC8ILGgumLYJaxgs2CyIKiguCCzILGgrWC3IK3gUIKIAotgruCzJG8gUGCsYLMg1yDdINng0WDRoNBgsyXmJdwj/CMj4LJgsKCooLEgs2BQYy0lMWCxYKggukgbGlicG5nIDEuMC45YmV0YTWCyQorgruCzJG8gUGCsYLMg1yDdINng0WDRoNBgsyXmJdwj/CMj4LJgsKCooLEgs2BQYy0lMWCxYKggukgbGlicG5nIDEuMC45YmV0YTaCyQogj4CLkoK3gumC4ILMgsaCtYLcgreBQo/agrWCrYLNgUGVdJGugswgUkVBRE1FLExJQ0VOU0UggvCCqJPHgt2CrYK+grOCooFCCiAKII77mF6T4JdlCmRpZmYgLS1naXQgYS9wcm9qZWN0cy93aW5jZS9wbmczMmNlLmRlZiBiL3Byb2plY3RzL3dpbmNlL3BuZzMyY2UuZGVmCmluZGV4IDI3OTM3OTkuLmFiYmE1MWEgMTAwNjQ0Ci0tLSBhL3Byb2plY3RzL3dpbmNlL3BuZzMyY2UuZGVmCisrKyBiL3Byb2plY3RzL3dpbmNlL3BuZzMyY2UuZGVmCkBAIC01LDcgKzUsNyBAQAogTElCUkFSWSBscG5nY2UKIAogRVhQT1JUUwotO1ZlcnNpb24gMS4wLjliZXRhNQorO1ZlcnNpb24gMS4wLjliZXRhNgogICBwbmdfYnVpbGRfZ3JheXNjYWxlX3BhbGV0dGUgIEAxCiAgIHBuZ19jaGVja19zaWcgICAgICAgIEAyCiAgIHBuZ19jaHVua19lcnJvciAgICAgIEAzCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmFpeCBiL3NjcmlwdHMvbWFrZWZpbGUuYWl4CmluZGV4IDVjYTQyODYuLjM0NTZmNDUgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuYWl4CisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuYWl4CkBAIC0xOCw3ICsxOCw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuOWJldGE1CitQTkdNSU4gPSAxLjAuOWJldGE2CiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIHByZWZpeD0vdXNyL2xvY2FsCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmJlb3MgYi9zY3JpcHRzL21ha2VmaWxlLmJlb3MKaW5kZXggOTI4ZWIzYS4uODA3NjJmNCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5iZW9zCisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuYmVvcwpAQCAtMzEsNyArMzEsNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjliZXRhNQorUE5HTUlOID0gMS4wLjliZXRhNgogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiAjIHdoZXJlIG1ha2UgaW5zdGFsbCBwdXRzIGxpYnBuZy5hLCBsaWJwbmcuc28qLCBhbmQgcG5nLmgKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuY3lnd2luIGIvc2NyaXB0cy9tYWtlZmlsZS5jeWd3aW4KaW5kZXggZjM5YTExZi4uY2NmOTU5MSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5jeWd3aW4KKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5jeWd3aW4KQEAgLTM4LDcgKzM4LDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC45YmV0YTUKK1BOR01JTiA9IDEuMC45YmV0YTYKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogU0hBUkVETElCPWN5Z3BuZyQoUE5HTUFKKS5kbGwKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuZGVjIGIvc2NyaXB0cy9tYWtlZmlsZS5kZWMKaW5kZXggNDFlMTE4ZS4uYzc1NGQ2NSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5kZWMKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5kZWMKQEAgLTE3LDcgKzE3LDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC45YmV0YTUKK1BOR01JTiA9IDEuMC45YmV0YTYKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogQ0M9Y2MKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuZ2NtbXggYi9zY3JpcHRzL21ha2VmaWxlLmdjbW14CmluZGV4IDY5ODNjZDEuLjk0NDVkOWIgMTAwNjQ0Ci0tLSBhL3NjcmlwdHMvbWFrZWZpbGUuZ2NtbXgKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5nY21teApAQCAtMzcsNyArMzcsNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjliZXRhNQorUE5HTUlOID0gMS4wLjliZXRhNgogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiBJTkNQQVRIPSQocHJlZml4KS9pbmNsdWRlCmRpZmYgLS1naXQgYS9zY3JpcHRzL21ha2VmaWxlLmhwdXggYi9zY3JpcHRzL21ha2VmaWxlLmhwdXgKaW5kZXggMzQ0NWJjNC4uMTJjNWNiZSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5ocHV4CisrKyBiL3NjcmlwdHMvbWFrZWZpbGUuaHB1eApAQCAtMTgsNyArMTgsNyBAQAogIyByZWFkIGxpYnBuZy50eHQgb3IgcG5nLmggdG8gc2VlIHdoeSBQTkdNQUogaXMgMi4gIFlvdSBzaG91bGQgbm90CiAjIGhhdmUgdG8gY2hhbmdlIGl0LgogUE5HTUFKID0gMgotUE5HTUlOID0gMS4wLjliZXRhNQorUE5HTUlOID0gMS4wLjliZXRhNgogUE5HVkVSID0gJChQTkdNQUopLiQoUE5HTUlOKQogCiAjIHdoZXJlIG1ha2UgaW5zdGFsbCBwdXRzIGxpYnBuZy5hIGFuZCBwbmcuaApkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5saW51eCBiL3NjcmlwdHMvbWFrZWZpbGUubGludXgKaW5kZXggOGU1MjRhMS4uYzg2ZmVhOCAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5saW51eAorKysgYi9zY3JpcHRzL21ha2VmaWxlLmxpbnV4CkBAIC0zNCw3ICszNCw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuOWJldGE1CitQTkdNSU4gPSAxLjAuOWJldGE2CiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIElOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuc2NvIGIvc2NyaXB0cy9tYWtlZmlsZS5zY28KaW5kZXggMTViZmEzNi4uNWQ3YjRiNSAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zY28KKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5zY28KQEAgLTI1LDcgKzI1LDcgQEAKICMgcmVhZCBsaWJwbmcudHh0IG9yIHBuZy5oIHRvIHNlZSB3aHkgUE5HTUFKIGlzIDIuICBZb3Ugc2hvdWxkIG5vdAogIyBoYXZlIHRvIGNoYW5nZSBpdC4KIFBOR01BSiA9IDIKLVBOR01JTiA9IDEuMC45YmV0YTUKK1BOR01JTiA9IDEuMC45YmV0YTYKIFBOR1ZFUiA9ICQoUE5HTUFKKS4kKFBOR01JTikKIAogSU5DUEFUSD0kKHByZWZpeCkvaW5jbHVkZQpkaWZmIC0tZ2l0IGEvc2NyaXB0cy9tYWtlZmlsZS5zZ2djYyBiL3NjcmlwdHMvbWFrZWZpbGUuc2dnY2MKaW5kZXggMDhlNGNiNy4uY2Q2NTI2NyAxMDA2NDQKLS0tIGEvc2NyaXB0cy9tYWtlZmlsZS5zZ2djYworKysgYi9zY3JpcHRzL21ha2VmaWxlLnNnZ2NjCkBAIC0xOSw4ICsxOSw4IEBACiBMREZMQUdTPS1MLiAtTCQoWkxJQkxJQikgLWxwbmcgLWx6IC1sbQogTERTSEFSRUQ9Z2NjIC1zaGFyZWQKIAotVkVSPTEuMC45YmV0YTUKLUxJQlM9bGlicG5nLnNvLjEuMC45YmV0YTUKK1ZFUj0xLjAuOWJldGE2CitMSUJTPWxpYnBuZy5zby4xLjAuOWJldGE2CiBTSEFSRURMSUI9bGlicG5nLnNvCiBsaWJkaXI9JChwcmVmaXgpL2xpYjMyCiAKZGlmZiAtLWdpdCBhL3NjcmlwdHMvbWFrZWZpbGUuc29sYXJpcyBiL3NjcmlwdHMvbWFrZWZpbGUuc29sYXJpcwppbmRleCBjMDA0NzJmLi4xMjczZjY1IDEwMDY0NAotLS0gYS9zY3JpcHRzL21ha2VmaWxlLnNvbGFyaXMKKysrIGIvc2NyaXB0cy9tYWtlZmlsZS5zb2xhcmlzCkBAIC0zMSw3ICszMSw3IEBACiAjIHJlYWQgbGlicG5nLnR4dCBvciBwbmcuaCB0byBzZWUgd2h5IFBOR01BSiBpcyAyLiAgWW91IHNob3VsZCBub3QKICMgaGF2ZSB0byBjaGFuZ2UgaXQuCiBQTkdNQUogPSAyCi1QTkdNSU4gPSAxLjAuOWJldGE1CitQTkdNSU4gPSAxLjAuOWJldGE2CiBQTkdWRVIgPSAkKFBOR01BSikuJChQTkdNSU4pCiAKIElOQ1BBVEg9JChwcmVmaXgpL2luY2x1ZGUKZGlmZiAtLWdpdCBhL3NjcmlwdHMvcG5nZGVmLnBhcyBiL3NjcmlwdHMvcG5nZGVmLnBhcwppbmRleCA3MDdmOTZiLi40ZTg4ZDM0IDEwMDY0NAotLS0gYS9zY3JpcHRzL3BuZ2RlZi5wYXMKKysrIGIvc2NyaXB0cy9wbmdkZWYucGFzCkBAIC01LDcgKzUsNyBAQAogaW50ZXJmYWNlCiAKIGNvbnN0Ci0gIFBOR19MSUJQTkdfVkVSX1NUUklORyA9ICcxLjAuOWJldGE1JzsKKyAgUE5HX0xJQlBOR19WRVJfU1RSSU5HID0gJzEuMC45YmV0YTYnOwogICBQTkdfTElCUE5HX1ZFUiAgICAgICAgPSAgMTAwMDk7CiAKIHR5cGUK