ZGlmZiAtLWdpdCBhL2Rldi1saWJzL2xpYnhtbDIvTWFuaWZlc3QgYi9kZXYtbGlicy9saWJ4bWwyL01hbmlmZXN0CmluZGV4IGY0NmFlOGEuLmJjNTdlOTEgMTAwNjQ0Ci0tLSBhL2Rldi1saWJzL2xpYnhtbDIvTWFuaWZlc3QKKysrIGIvZGV2LWxpYnMvbGlieG1sMi9NYW5pZmVzdApAQCAtMSw0ICsxLDQgQEAKLURJU1QgbGlieG1sMi0yLjkuMS50YXIuZ3ogNTE3MjUwMyBTSEEyNTYgZmQzYzY0Y2I2NmYyYzRlYTI3ZTkzNGQyNzU5MDRkOTJjZWM0OTRhOGU4NDA1NjEzNzgwY2JjOGE3MTY4MGZkYiBTSEE1MTIgN2IxMGRlNzQ5NDg1YmMyZWIyMTA4MDYzZTk3ZDg5ZTcwZDZmYmI3OGIxYmYxOTVhYjU1MjhjOGM2NGU3OTQ4M2Q1NTIyM2E0OWQ5NTkzNGY0ZTAwYjAwZTkwNmMxOGJkZDM0MzQ0NzAzZmZlMTU4ZGNmMDgwOTY5MDVhNDRjMWIgV0hJUkxQT09MIDVkMjg3NDUyN2I2MzdlNjY2Y2E2YWZlNzEwOTkxYWVjYjYwYzQ5MGRlMzhlZGJlMDlhNzAzYzhlODBjNzc2ZDNmMTIxNTQ0Y2MzODMxNDZjMzM2ZDQ2YzU3M2YzYTNjOWEyNDkxYzZjOWNkNWYyMmM1NDc0ZDY2ZGNiOGVjZjliCitESVNUIGxpYnhtbDItMi45LjIudGFyLmd6IDU0NDQ5OTEgU0hBMjU2IDUxNzhjMzBiMTUxZDA0NGFlZmIxYjA4YmY1NGMzMDAzYTBhYzU1YzU5Yzg2Njc2Mzk5NzUyOWQ2MDc3MGQ1YmMgU0hBNTEyIGE0ZTNiMjBlMmVmY2VlZDM5YzIwMzc5YjMyYjc0NmQ0YTFjZjY1YzBjZjc3MTlkMjZjOWJmNzQ4M2MxZjA0YTRlNWE0NDJhZTJmMzZkYzRhZThhNGQwMTFiNjdjZmI1OGQ5ZjZkMGJlMDM0ZmEzZTg5N2E0OTA1OWM5Mjg5NTY1IFdISVJMUE9PTCBkN2E3N2NiNmFkNDk1MzNjZjYyZjZhNzU5NjY4ZTI5N2E2MGRkN2Y3MGM5ZTEzYjI5ZjY4MmM2NGRmYjI1YWU0NmViOWRiNTUyNTAwMTMwZjQwZTNmOTY5ODk3YmRhOTk2MDAxZDE4MjM2YTQ2MzBlMzcxM2Y2ZGQ1YWNiZTY4NgogRElTVCB4bWx0czIwMDgwODI3LnRhci5neiA2Mzg5NDAgU0hBMjU2IDk2MTUxNjg1Y2VjOTk3ZTFmOWYzMzg3ZTM2MjZkNjFlNjI4NGQ0ZDZlNjZlMGU0NDBjMjA5Mjg2YzAzZTljYzcgU0hBNTEyIDczMjVkMDk3N2M0NDI3ZmM0OTQ0YjI5MWNjZjg5NmE2NjVmNjU0Y2MyNDM5OWU1NTY1YzEyYTg0OWMyYmMzYWVmNGZhM2VlNDJhMDlhYzExNWFiY2I2NTcwYzUxYThmYmQwNTJjMzhkNjRkMTY0Mjc5ZWNkZWNhZDVhNGU4ODRkIFdISVJMUE9PTCA1MDgzNTM4MGMzZWEyMDhkZjBiZjljZTAzMmVkMmRmNjljNGM2Y2I1YTUzZmZkZDM5YTA4ZmI0ZjFkMTY2ZjMxMWIyZWYyZmUwZDk5MTFhZTFlYmZmOTJhZWI0MmY2ZWE1NWU3MjdkZmUwYjdhM2I5NWU2YzcyNDAzMTViM2VkYQogRElTVCB4c3RzLTIwMDItMDEtMTYudGFyLmd6IDY4OTQ0MzkgU0hBMjU2IDU1ZTVjMDhkYjI5OTQ2YTkxZWE4ZTcwZThmMjQxOGQzZmQzMGQ4YjY3Nzc5NDFkZmJhN2Y1NDcyNmZmZDk5MTQgU0hBNTEyIDQzMzAwYWY2ZDM5YzFlMjIyMWIwZWQ3MzE4ZmUxNGM3NDY0ZWViNmViMDMwZWQxZTIyZWIyOWI0YWIxN2YwMTRlMmE0Yzg4ODdjM2E0NmFlNWQyNDNlMzA3MmRhMjdmMDBmNGUyODU0OThhZTZmMTI4ODE3N2QzOGQxMTA4Mjg4IFdISVJMUE9PTCA4NGRkNTE5NTk0NjBhNGY4YWE1ODJkNTdhZDM5MjI5YzU0NmNhN2ZlMTU1MDEyYzU3YzM2OGI1OWY1ZDMxNDAwZDhiOTQwYTM0M2E3MzIwMDU4MzMwY2E2MTEzMDMxMzljYWNkZmZlZDUxNDc4M2Y5NjQwNmFjNTM2NjAyNmIxMQogRElTVCB4c3RzLTIwMDQtMDEtMTQudGFyLmd6IDI3NjEwODUgU0hBMjU2IDA5YmRmOWY4MWYzODFlYmY5YmMxNThhOTQ3MmU0OThlODk2ZjdhMDJlYjc0NjExNDZlOWFiZTFiOTQ5M2NhMTcgU0hBNTEyIDMyODU0Mzg4ZDdlNzIwYWQ2NzE1NmJhZjUwYmYyYmFlN2JkODc4Y2EzZTM1ZmQ3ZTQ0ZTU3Y2FkM2Y0MzRmNjlkNTZiYmJlZGQ2MTUwOWY4YTFmYWYwMWM5ZWFlNzRhMDc4ZGY4ZmUxMzA3ODBiMTgyYzA1YzA1Y2IxYzM5ZWJlIFdISVJMUE9PTCBjNDZhM2JmN2Q2ZGQ3NzE3NTdmNDMwNDk5NWNjMTc3Y2Y1MWM2Y2RkMGU5Nzc4ODUxZmMxM2QzODA5YzdiOTg0NjkwYjRmMjczYjNlMDc1YWJlMDE4MTEwOTY4ZWI3ZmM3OGY1YjgzMTcwZDNlMThiYWNmMDBhNGVkNjRiMjEzZApkaWZmIC0tZ2l0IGEvZGV2LWxpYnMvbGlieG1sMi9maWxlcy9saWJ4bWwyLTIuOS4wLW1hbnVhbC1weXRob24ucGF0Y2ggYi9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjAtbWFudWFsLXB5dGhvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmViYjRmMC4uMDAwMDAwMAotLS0gYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjAtbWFudWFsLXB5dGhvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gMmE3NGQ0MTMyNWM5ZTgwNDNhMmJlZWM4Yjk1N2RkZjY2ZjU3Y2ZkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRyZSBSb3N0b3Z0c2V2IDx0ZXRyb21pbm9AZ2VudG9vLm9yZz4KLURhdGU6IFR1ZSwgMTggRGVjIDIwMTIgMDI6MDk6MTQgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gYnVpbGQvdGVzdC9pbnN0YWxsIHB5dGhvbiBiaW5kaW5ncyBtYW51YWxseQotCi1UbyBzdXBwb3J0IGJ1aWxkaW5nIGZvciBtdWx0aXBsZSBweXRob24gQUJJcywgd2Ugd2FudCB0byBza2lwIGNoZWNrcyBmb3IKLXB5dGhvbiBpbiBjb25maWd1cmUsIGFuZCBidWlsZC90ZXN0L2luc3RhbGwgcHl0aG9uIGJpbmRpbmdzIG1hbnVhbGx5LgotLS0tCi0gY29uZmlndXJlLmluIHwgNiArKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCAzZDVmNDhiLi5iNDY3YzUxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC03NDgsNyArNzQ4LDcgQEAgUFlUSE9OX0lOQ0xVREVTPQotIFBZVEhPTl9TSVRFX1BBQ0tBR0VTPQotIFBZVEhPTl9URVNUUz0KLSBweXRob25kaXI9Ci0taWYgdGVzdCAiJHdpdGhfcHl0aG9uIiAhPSAibm8iIDsgdGhlbgotK2lmIGZhbHNlIDsgdGhlbgotICAgICBpZiB0ZXN0IC14ICIkd2l0aF9weXRob24vYmluL3B5dGhvbiIKLSAgICAgdGhlbgotICAgICAgICAgZWNobyBGb3VuZCBweXRob24gaW4gJHdpdGhfcHl0aG9uL2Jpbi9weXRob24KLUBAIC04MjMsNyArODIzLDcgQEAgaWYgdGVzdCAiJHdpdGhfcHl0aG9uIiAhPSAibm8iIDsgdGhlbgotIGVsc2UKLSAgICAgUFlUSE9OPQotIGZpCi0tQU1fQ09ORElUSU9OQUwoV0lUSF9QWVRIT04sIHRlc3QgIiRQWVRIT05fSU5DTFVERVMiICE9ICIiKQotK0FNX0NPTkRJVElPTkFMKFdJVEhfUFlUSE9OLCB0ZXN0ICIkd2l0aF9weXRob24iICE9ICJubyIpCi0gaWYgdGVzdCAiJFBZVEhPTl9JTkNMVURFUyIgIT0gIiIKLSB0aGVuCi0gICAgIFBZVEhPTl9TVUJESVI9cHl0aG9uCi1AQCAtMTQyOSw3ICsxNDI5LDcgQEAgZWxzZQotICAgICBlY2hvICJFbmFibGVkIFNjaGVtYXMvUmVsYXgtTkcgc3VwcG9ydCIKLSAgICAgV0lUSF9TQ0hFTUFTPTEKLSAgICAgVEVTVF9TQ0hFTUFTPSJTY2hlbWFzdGVzdHMgUmVsYXh0ZXN0cyIKLS0gICAgaWYgdGVzdCAiJFBZVEhPTl9JTkNMVURFUyIgIT0gIiIgOyB0aGVuCi0rICAgIGlmIHRlc3QgIiR3aXRoX3B5dGhvbiIgIT0gIm5vIiA7IHRoZW4KLSAgICAgICAgIFBZVEhPTl9URVNUUz0iJFBZVEhPTl9URVNUUyBSZWxheE5HUHl0aG9uVGVzdHMgU2NoZW1hc1B5dGhvblRlc3RzIgotICAgICBmaQotICAgICB3aXRoX3JlZ2V4cHM9eWVzCi0tLSAKLTEuOC4wLjIKLQpkaWZmIC0tZ2l0IGEvZGV2LWxpYnMvbGlieG1sMi9maWxlcy9saWJ4bWwyLTIuOS4wLXRocmVhZC1hbGxvYy5wYXRjaCBiL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMC10aHJlYWQtYWxsb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJkMGQ1ZjcuLjAwMDAwMDAKLS0tIGEvZGV2LWxpYnMvbGlieG1sMi9maWxlcy9saWJ4bWwyLTIuOS4wLXRocmVhZC1hbGxvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1ICswLDAgQEAKLUZyb20gMGFkOTQ4ZWRlMmI1MDYwYTE0NGM3MmU0ZTI3YzM4ZDI0YTI3MmVmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRpbSBTdGFybGluZyA8dHN0YXJsaW5nQHdpa2ltZWRpYS5vcmc+Ci1EYXRlOiBNb24sIDI5IE9jdCAyMDEyIDEzOjQxOjU1ICsxMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBMSUJYTUxfVEhSRUFEX0FMTE9DX0VOQUJMRUQgdmlhIHhtbHZlcnNpb24uaAotCi1PdGhlcndpc2UsIGRpcmVjdCBjYWxscyB0byB4bWxGcmVlKCkgZXRjLiBmcm9tIHRoZSBhcHBsaWNhdGlvbiB3aWxsCi11c2UgYSBkaWZmZXJlbnQgc2V0IG9mIGFsbG9jYXRpb24gZnVuY3Rpb25zIHRvIHdoYXQgd2FzIHVzZWQgdG8gYWxsb2NhdGUKLXRoZSBtZW1vcnkgaW50ZXJuYWxseS4KLS0tLQotIGNvbmZpZ3VyZS5pbiAgICAgICAgICAgICAgICAgICB8IDQgKysrLQotIGluY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbiB8IDkgKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDZkYTA1N2MuLjI0NWMwMzMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTk1NCw2ICs5NTQsNyBAQCBXSVRIX1RIUkVBRFM9MAotIFRIUkVBRF9DRkxBR1M9IiIKLSBURVNUX1RIUkVBRFM9IiIKLSBUSFJFQURTX1czMj0iIgotK1dJVEhfVEhSRUFEX0FMTE9DPTAKLSAKLSBpZiB0ZXN0ICIkd2l0aF90aHJlYWRzIiA9ICJubyIgOyB0aGVuCi0gICAgIGVjaG8gRGlzYWJsaW5nIG11bHRpdGhyZWFkZWQgc3VwcG9ydAotQEAgLTEwMTcsNyArMTAxOCw3IEBAIGVsc2UKLSAgICAgZmkKLSBmaQotIGlmIHRlc3QgIiR3aXRoX3RocmVhZF9hbGxvYyIgPSAieWVzIiAtYSAiJFdJVEhfVEhSRUFEUyIgPSAiMSIgOyB0aGVuCi0tICAgIFRIUkVBRF9DRkxBR1M9IiRUSFJFQURfQ0ZMQUdTIC1ETElCWE1MX1RIUkVBRF9BTExPQ19FTkFCTEVEIgotKyAgICBXSVRIX1RIUkVBRF9BTExPQz0xCi0gZmkKLSAKLSBBQ19TVUJTVChUSFJFQURfTElCUykKLUBAIC0xMDI1LDYgKzEwMjYsNyBAQCBBQ19TVUJTVChCQVNFX1RIUkVBRF9MSUJTKQotIEFDX1NVQlNUKFdJVEhfVEhSRUFEUykKLSBBQ19TVUJTVChUSFJFQURfQ0ZMQUdTKQotIEFDX1NVQlNUKFRFU1RfVEhSRUFEUykKLStBQ19TVUJTVChXSVRIX1RIUkVBRF9BTExPQykKLSBBTV9DT05ESVRJT05BTChbVEhSRUFEU19XMzJdLFt0ZXN0IC1uICIkVEhSRUFEU19XMzIiXSkKLSAKLSBkbmwKLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4gYi9pbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4KLWluZGV4IGM5OGU3Y2EuLjAwYTgzNmYgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2xpYnhtbC94bWx2ZXJzaW9uLmguaW4KLSsrKyBiL2luY2x1ZGUvbGlieG1sL3htbHZlcnNpb24uaC5pbgotQEAgLTk4LDYgKzk4LDE1IEBAIFhNTFBVQkZVTiB2b2lkIFhNTENBTEwgeG1sQ2hlY2tWZXJzaW9uKGludCB2ZXJzaW9uKTsKLSAjZW5kaWYKLSAKLSAvKioKLSsgKiBMSUJYTUxfVEhSRUFEX0FMTE9DX0VOQUJMRUQ6Ci0rICoKLSsgKiBXaGV0aGVyIHRoZSBhbGxvY2F0aW9uIGhvb2tzIGFyZSBwZXItdGhyZWFkCi0rICovCi0rI2lmIEBXSVRIX1RIUkVBRF9BTExPQ0AKLSsjZGVmaW5lIExJQlhNTF9USFJFQURfQUxMT0NfRU5BQkxFRAotKyNlbmRpZgotKwotKy8qKgotICAqIExJQlhNTF9UUkVFX0VOQUJMRUQ6Ci0gICoKLSAgKiBXaGV0aGVyIHRoZSBET00gbGlrZSB0cmVlIG1hbmlwdWxhdGlvbiBBUEkgc3VwcG9ydCBpcyBjb25maWd1cmVkIGluCi0tLSAKLTEuOC4wCi0KZGlmZiAtLWdpdCBhL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1jb21wcmVzc2lvbi1kZXRlY3Rpb24ucGF0Y2ggYi9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtY29tcHJlc3Npb24tZGV0ZWN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNmVhNWMxLi4wMDAwMDAwCi0tLSBhL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1jb21wcmVzc2lvbi1kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMjYgKzAsMCBAQAotRnJvbSA2MzU4OGY0NzZmMmRjODlkNGM2ZWY3MGE0NzRkNzIzMGZiZjRkNDVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGFuaWVsIFZlaWxsYXJkIDx2ZWlsbGFyZEByZWRoYXQuY29tPgotRGF0ZTogRnJpLCAxMCBNYXkgMjAxMyAxNDowMTo0NiArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggYSByZWdyZXNzaW9uIGluIHhtbEdldERvY0NvbXByZXNzTW9kZSgpCi0KLVRoZSBzd2l0Y2ggdG8geHpsaWIgaGFkIGZvciBjb25zZXF1ZW5jZSB0aGF0IHRoZSBjb21wcmVzc2lvbgotbGV2ZWwgb2YgdGhlIGlucHV0IHdhcyBub3QgZ2F0aGVyZWQgYW55bW9yZSBpbiBjdHh0LT5pbnB1dC0+YnVmLAotdGhlbiB0aGUgcGFyc2VyIGNvbXByZXNzaW9uIGZsYWdzIHdhcyBsZWZ0IHRvIC0xIGFuZCBwcm9wYWdhdGVkCi10byB0aGUgcmVzdWx0aW5nIGRvY3VtZW50LgotRml4IHRoZSBJL08gbGF5ZXIgdG8gZ2V0IGNvbXByZXNzaW9uIGRldGVjdGlvbiBpbiB4emxpYiwKLXRoZW4gY2FycnkgaXQgaW4gdGhlIGlucHV0IGJ1ZmZlciBhbmQgdGhlIHJlc3VsdGluZyBkb2N1bWVudAotCi0gIFRoaXMgc2hvdWxkIGZpeAotICAgIGh0dHBzOi8vbHNiYnVncy5saW51eGZvdW5kYXRpb24ub3JnL3Nob3dfYnVnLmNnaT9pZD0zNDU2Ci0tLS0KLSBwYXJzZXIuYyB8ICA0ICsrKysKLSB4bWxJTy5jICB8IDE3ICsrKysrKysrKysrKysrKysrCi0geHpsaWIuYyAgfCAyNSArKysrKysrKysrKysrKysrKysrKysrKysrCi0geHpsaWIuaCAgfCAgMSArCi0gNCBmaWxlcyBjaGFuZ2VkLCA0NyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9wYXJzZXIuYyBiL3BhcnNlci5jCi1pbmRleCAxZDQ3OGMzLi40YTQ0MmJiIDEwMDY0NAotLS0tIGEvcGFyc2VyLmMKLSsrKyBiL3BhcnNlci5jCi1AQCAtMTA2ODEsNiArMTA2ODEsMTAgQEAgeG1sUGFyc2VEb2N1bWVudCh4bWxQYXJzZXJDdHh0UHRyIGN0eHQpIHsKLSAgICAgICAgIGN0eHQtPnNheC0+c3RhcnREb2N1bWVudChjdHh0LT51c2VyRGF0YSk7Ci0gICAgIGlmIChjdHh0LT5pbnN0YXRlID09IFhNTF9QQVJTRVJfRU9GKQotIAlyZXR1cm4oLTEpOwotKyAgICBpZiAoKGN0eHQtPm15RG9jICE9IE5VTEwpICYmIChjdHh0LT5pbnB1dCAhPSBOVUxMKSAmJgotKyAgICAgICAgKGN0eHQtPmlucHV0LT5idWYgIT0gTlVMTCkgJiYgKGN0eHQtPmlucHV0LT5idWYtPmNvbXByZXNzZWQgPj0gMCkpIHsKLSsJY3R4dC0+bXlEb2MtPmNvbXByZXNzaW9uID0gY3R4dC0+aW5wdXQtPmJ1Zi0+Y29tcHJlc3NlZDsKLSsgICAgfQotIAotICAgICAvKgotICAgICAgKiBUaGUgTWlzYyBwYXJ0IG9mIHRoZSBQcm9sb2cKLWRpZmYgLS1naXQgYS94bWxJTy5jIGIveG1sSU8uYwotaW5kZXggODQ3Y2I3ZS4uZmM0ZTExMSAxMDA2NDQKLS0tLSBhL3htbElPLmMKLSsrKyBiL3htbElPLmMKLUBAIC0yNjY5LDYgKzI2NjksMTIgQEAgX194bWxQYXJzZXJJbnB1dEJ1ZmZlckNyZWF0ZUZpbGVuYW1lKGNvbnN0IGNoYXIgKlVSSSwgeG1sQ2hhckVuY29kaW5nIGVuYykgewotICNlbmRpZgotIAl9Ci0gI2VuZGlmCi0rI2lmZGVmIEhBVkVfTFpNQV9ICi0rCWlmICgoeG1sSW5wdXRDYWxsYmFja1RhYmxlW2ldLm9wZW5jYWxsYmFjayA9PSB4bWxYemZpbGVPcGVuKSAmJgotKwkJKHN0cmNtcChVUkksICItIikgIT0gMCkpIHsKLSsgICAgICAgICAgICByZXQtPmNvbXByZXNzZWQgPSBfX2xpYnhtbDJfeHpjb21wcmVzc2VkKGNvbnRleHQpOwotKwl9Ci0rI2VuZGlmCi0gICAgIH0KLSAgICAgZWxzZQotICAgICAgIHhtbElucHV0Q2FsbGJhY2tUYWJsZVtpXS5jbG9zZWNhbGxiYWNrIChjb250ZXh0KTsKLUBAIC0zMzI1LDYgKzMzMzEsMTcgQEAgeG1sUGFyc2VySW5wdXRCdWZmZXJHcm93KHhtbFBhcnNlcklucHV0QnVmZmVyUHRyIGluLCBpbnQgbGVuKSB7Ci0gICAgIGlmIChyZXMgPCAwKSB7Ci0gCXJldHVybigtMSk7Ci0gICAgIH0KLSsKLSsgICAgLyoKLSsgICAgICogdHJ5IHRvIGVzdGFibGlzaCBjb21wcmVzc2VkIHN0YXR1cyBvZiBpbnB1dCBpZiBub3QgZG9uZSBhbHJlYWR5Ci0rICAgICAqLwotKyAgICBpZiAoaW4tPmNvbXByZXNzZWQgPT0gLTEpIHsKLSsjaWZkZWYgSEFWRV9MWk1BX0gKLSsJaWYgKGluLT5yZWFkY2FsbGJhY2sgPT0geG1sWHpmaWxlUmVhZCkKLSsgICAgICAgICAgICBpbi0+Y29tcHJlc3NlZCA9IF9fbGlieG1sMl94emNvbXByZXNzZWQoaW4tPmNvbnRleHQpOwotKyNlbmRpZgotKyAgICB9Ci0rCi0gICAgIGxlbiA9IHJlczsKLSAgICAgaWYgKGluLT5lbmNvZGVyICE9IE5VTEwpIHsKLSAgICAgICAgIHVuc2lnbmVkIGludCB1c2U7Ci1kaWZmIC0tZ2l0IGEveHpsaWIuYyBiL3h6bGliLmMKLWluZGV4IDkyOGJkMTcuLjE1MGU4MDMgMTAwNjQ0Ci0tLS0gYS94emxpYi5jCi0rKysgYi94emxpYi5jCi1AQCAtMTgyLDEyICsxODIsMzcgQEAgeHpfb3Blbihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmQsIGNvbnN0IGNoYXIgKm1vZGUgQVRUUklCVVRFX1VOVVNFRCkKLSAgICAgcmV0dXJuICh4ekZpbGUpIHN0YXRlOwotIH0KLSAKLStzdGF0aWMgaW50Ci0reHpfY29tcHJlc3NlZCh4ekZpbGUgZikgewotKyAgICB4el9zdGF0ZXAgc3RhdGU7Ci0rCi0rICAgIGlmIChmID09IE5VTEwpCi0rICAgICAgICByZXR1cm4oLTEpOwotKyAgICBzdGF0ZSA9ICh4el9zdGF0ZXApIGY7Ci0rICAgIGlmIChzdGF0ZS0+aW5pdCA8PSAwKQotKyAgICAgICAgcmV0dXJuKC0xKTsKLSsKLSsgICAgc3dpdGNoIChzdGF0ZS0+aG93KSB7Ci0rICAgICAgICBjYXNlIENPUFk6Ci0rCSAgICByZXR1cm4oMCk7Ci0rCWNhc2UgR1pJUDoKLSsJY2FzZSBMWk1BOgotKwkgICAgcmV0dXJuKDEpOwotKyAgICB9Ci0rICAgIHJldHVybigtMSk7Ci0rfQotKwotIHh6RmlsZQotIF9fbGlieG1sMl94em9wZW4oY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqbW9kZSkKLSB7Ci0gICAgIHJldHVybiB4el9vcGVuKHBhdGgsIC0xLCBtb2RlKTsKLSB9Ci0gCi0raW50Ci0rX19saWJ4bWwyX3h6Y29tcHJlc3NlZCh4ekZpbGUgZikgewotKyAgICByZXR1cm4geHpfY29tcHJlc3NlZChmKTsKLSt9Ci0rCi0geHpGaWxlCi0gX19saWJ4bWwyX3h6ZG9wZW4oaW50IGZkLCBjb25zdCBjaGFyICptb2RlKQotIHsKLWRpZmYgLS1naXQgYS94emxpYi5oIGIveHpsaWIuaAotaW5kZXggNDNjNzVlMS4uMjliYTU1ZSAxMDA2NDQKLS0tLSBhL3h6bGliLmgKLSsrKyBiL3h6bGliLmgKLUBAIC0xNSw0ICsxNSw1IEBAIHh6RmlsZSBfX2xpYnhtbDJfeHpvcGVuKGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKm1vZGUpOwotIHh6RmlsZSBfX2xpYnhtbDJfeHpkb3BlbihpbnQgZmQsIGNvbnN0IGNoYXIgKm1vZGUpOwotIGludCBfX2xpYnhtbDJfeHpyZWFkKHh6RmlsZSBmaWxlLCB2b2lkICpidWYsIHVuc2lnbmVkIGxlbik7Ci0gaW50IF9fbGlieG1sMl94emNsb3NlKHh6RmlsZSBmaWxlKTsKLStpbnQgX19saWJ4bWwyX3h6Y29tcHJlc3NlZCh4ekZpbGUgZik7Ci0gI2VuZGlmIC8qIExJQlhNTDJfWFpMSUJfSCAqLwotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1leHRlcm5hbC1wYXJhbS1lbnRpdGllcy5wYXRjaCBiL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1leHRlcm5hbC1wYXJhbS1lbnRpdGllcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFmNjkyZi4uMDAwMDAwMAotLS0gYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtZXh0ZXJuYWwtcGFyYW0tZW50aXRpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDljZDFjM2NmYmQzMjY1NWQ2MDU3MmMwYTQxM2UwMTcyNjBjODU0ZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYW5pZWwgVmVpbGxhcmQgPHZlaWxsYXJkQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDIyIEFwciAyMDE0IDE1OjMwOjU2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBmZXRjaCBleHRlcm5hbCBwYXJhbWV0ZXIgZW50aXRpZXMKLQotVW5sZXNzIGV4cGxpY2l0ZWx5IGFza2VkIGZvciB3aGVuIHZhbGlkYXRpbmcgb3IgcmVwbGFjaW5nIGVudGl0aWVzCi13aXRoIHRoZWlyIHZhbHVlLiBQcm9ibGVtIHBvaW50ZWQgb3V0IGJ5IERhbmllbCBCZXJyYW5nZSA8YmVycmFuZ2VAcmVkaGF0LmNvbT4KLS0tLQotIHBhcnNlci5jIHwgMTQgKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvcGFyc2VyLmMgYi9wYXJzZXIuYwotaW5kZXggOTM0N2FjOS4uYzBkZWEwNSAxMDA2NDQKLS0tLSBhL3BhcnNlci5jCi0rKysgYi9wYXJzZXIuYwotQEAgLTI1OTgsNiArMjU5OCwyMCBAQCB4bWxQYXJzZXJIYW5kbGVQRVJlZmVyZW5jZSh4bWxQYXJzZXJDdHh0UHRyIGN0eHQpIHsKLSAJCSAgICB4bWxDaGFyRW5jb2RpbmcgZW5jOwotIAotIAkJICAgIC8qCi0rCQkgICAgICogTm90ZTogZXh0ZXJuYWwgcGFyc2VkIGVudGl0aWVzIHdpbGwgbm90IGJlIGxvYWRlZCwgaXQgaXMKLSsJCSAgICAgKiBub3QgcmVxdWlyZWQgZm9yIGEgbm9uLXZhbGlkYXRpbmcgcGFyc2VyLCB1bmxlc3MgdGhlCi0rCQkgICAgICogb3B0aW9uIG9mIHZhbGlkYXRpbmcsIG9yIHN1YnN0aXR1dGluZyBlbnRpdGllcyB3ZXJlCi0rCQkgICAgICogZ2l2ZW4uIERvaW5nIHNvIGlzIGZhciBtb3JlIHNlY3VyZSBhcyB0aGUgcGFyc2VyIHdpbGwKLSsJCSAgICAgKiBvbmx5IHByb2Nlc3MgZGF0YSBjb21pbmcgZnJvbSB0aGUgZG9jdW1lbnQgZW50aXR5IGJ5Ci0rCQkgICAgICogZGVmYXVsdC4KLSsJCSAgICAgKi8KLSsgICAgICAgICAgICAgICAgICAgIGlmICgoZW50aXR5LT5ldHlwZSA9PSBYTUxfRVhURVJOQUxfUEFSQU1FVEVSX0VOVElUWSkgJiYKLSsJCSAgICAgICAgKChjdHh0LT5vcHRpb25zICYgWE1MX1BBUlNFX05PRU5UKSA9PSAwKSAmJgotKwkJCSgoY3R4dC0+b3B0aW9ucyAmIFhNTF9QQVJTRV9EVERWQUxJRCkgPT0gMCkgJiYKLSsJCQkoY3R4dC0+dmFsaWRhdGUgPT0gMCkpCi0rCQkJcmV0dXJuOwotKwotKwkJICAgIC8qCi0gCQkgICAgICogaGFuZGxlIHRoZSBleHRyYSBzcGFjZXMgYWRkZWQgYmVmb3JlIGFuZCBhZnRlcgotIAkJICAgICAqIGMuZi4gaHR0cDovL3d3dy53My5vcmcvVFIvUkVDLXhtbCNhcy1QRQotIAkJICAgICAqIHRoaXMgaXMgZG9uZSBpbmRlcGVuZGVudGx5LgotLS0gCi0xLjkuMgotCmRpZmYgLS1naXQgYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtbWlzc2luZy1icmVhay5wYXRjaCBiL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1taXNzaW5nLWJyZWFrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NzY2NTMyLi4wMDAwMDAwCi0tLSBhL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1taXNzaW5nLWJyZWFrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSAxMGVjMTlhYjBhNDk5MzZjYThjYTBkNjk2MmQyNGQzZjg4OTk2MGE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogZGNiIDxkY2IzMTRAaG90bWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIgTWF5IDIwMTMgMTY6MTE6NDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IG1pc3NpbmcgYnJlYWsgb24gbGFzdCgpIGZ1bmN0aW9uIGZvciBhdHRyaWJ1dGVzCi0KLXBvaW50ZWQgb3V0IGJ5IGNwcGNoZWNrCi0tLS0KLSBweXRob24vbGlieG1sLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9saWJ4bWwuYyBiL3B5dGhvbi9saWJ4bWwuYwotaW5kZXggMDNjZmI5Zi4uMzMzOGI4MyAxMDA2NDQKLS0tLSBhL3B5dGhvbi9saWJ4bWwuYwotKysrIGIvcHl0aG9uL2xpYnhtbC5jCi1AQCAtMjY4Myw2ICsyNjgzLDcgQEAgbGlieG1sX2xhc3QoQVRUUklCVVRFX1VOVVNFRCBQeU9iamVjdCAqIHNlbGYsIFB5T2JqZWN0ICogYXJncykKLSAgICAgICAgICAgICAgICAgeG1sQXR0clB0ciBhdHRyID0gKHhtbEF0dHJQdHIpIGN1cjsKLSAKLSAgICAgICAgICAgICAgICAgcmVzID0gYXR0ci0+bGFzdDsKLSsJCWJyZWFrOwotICAgICAgICAgICAgIH0KLSAgICAgICAgIGRlZmF1bHQ6Ci0gICAgICAgICAgICAgcmVzID0gTlVMTDsKLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtbm9uLWFzY2lpLWNyLWxmLnBhdGNoIGIvZGV2LWxpYnMvbGlieG1sMi9maWxlcy9saWJ4bWwyLTIuOS4xLW5vbi1hc2NpaS1jci1sZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFhOTJhZC4uMDAwMDAwMAotLS0gYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtbm9uLWFzY2lpLWNyLWxmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTY4ICswLDAgQEAKLUZyb20gZGNjMTk1MDMxOTNjNzE1OTYyNzhhMjUyMDY0YThjZTY2MzMxYjNjZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhbmllbCBWZWlsbGFyZCA8dmVpbGxhcmRAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMjIgTWF5IDIwMTMgMjI6NTY6NDUgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGEgcGFyc2luZyBidWcgb24gbm9uLWFzY2lpIGVsZW1lbnQgYW5kIENSL0xGIHVzYWdlCi0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD02OTg1NTAKLQotU29tZWhvdyB0aGUgYmVoYXZpb3VyIG9mIHRoZSBpbnRlcm5hbCBwYXJzZXIgcm91dGluZSBjaGFuZ2VkCi1zbGlnaHRseSB3aGVuIGVuY291bnRlcmluZyBDUi9MRiwgd2hpY2ggbGVkIHRvIGEgYnVnIHdoZW4KLXBhcnNpbmcgZG9jdW1lbnQgd2l0aCBub24tYXNjaWkgTmFtZXMKLS0tLQotIHBhcnNlci5jICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKystCi0gcmVzdWx0L2phcGFuY3JsZi54bWwgICAgICAgfCAgNCArKysrCi0gcmVzdWx0L2phcGFuY3JsZi54bWwucmRlICAgfCAgNyArKysrKysrCi0gcmVzdWx0L2phcGFuY3JsZi54bWwucmRyICAgfCAgNyArKysrKysrCi0gcmVzdWx0L2phcGFuY3JsZi54bWwuc2F4ICAgfCAxMSArKysrKysrKysrKwotIHJlc3VsdC9qYXBhbmNybGYueG1sLnNheDIgIHwgMTEgKysrKysrKysrKysKLSByZXN1bHQvbm9lbnQvamFwYW5jcmxmLnhtbCB8ICA0ICsrKysKLSB0ZXN0L2phcGFuY3JsZi54bWwgICAgICAgICB8ICA2ICsrKysrKwotIDggZmlsZXMgY2hhbmdlZCwgNTUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCByZXN1bHQvamFwYW5jcmxmLnhtbAotIGNyZWF0ZSBtb2RlIDEwMDY0NCByZXN1bHQvamFwYW5jcmxmLnhtbC5yZGUKLSBjcmVhdGUgbW9kZSAxMDA2NDQgcmVzdWx0L2phcGFuY3JsZi54bWwucmRyCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHJlc3VsdC9qYXBhbmNybGYueG1sLnNheAotIGNyZWF0ZSBtb2RlIDEwMDY0NCByZXN1bHQvamFwYW5jcmxmLnhtbC5zYXgyCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHJlc3VsdC9ub2VudC9qYXBhbmNybGYueG1sCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3QvamFwYW5jcmxmLnhtbAotCi1kaWZmIC0tZ2l0IGEvcGFyc2VyLmMgYi9wYXJzZXIuYwotaW5kZXggNGE0NDJiYi4uNDczOWFkZCAxMDA2NDQKLS0tLSBhL3BhcnNlci5jCi0rKysgYi9wYXJzZXIuYwotQEAgLTM0MDQsNiArMzQwNCw3IEBAIHhtbFBhcnNlTkNOYW1lQ29tcGxleCh4bWxQYXJzZXJDdHh0UHRyIGN0eHQpIHsKLSAgICAgaW50IGxlbiA9IDAsIGw7Ci0gICAgIGludCBjOwotICAgICBpbnQgY291bnQgPSAwOwotKyAgICBjb25zdCB4bWxDaGFyICplbmQ7IC8qIG5lZWRlZCBiZWNhdXNlIENVUl9DSEFSKCkgY2FuIG1vdmUgY3VyIG9uIFxyXG4gKi8KLSAKLSAjaWZkZWYgREVCVUcKLSAgICAgbmJQYXJzZU5DTmFtZUNvbXBsZXgrKzsKLUBAIC0zNDEzLDYgKzM0MTQsNyBAQCB4bWxQYXJzZU5DTmFtZUNvbXBsZXgoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gICAgICAqIEhhbmRsZXIgZm9yIG1vcmUgY29tcGxleCBjYXNlcwotICAgICAgKi8KLSAgICAgR1JPVzsKLSsgICAgZW5kID0gY3R4dC0+aW5wdXQtPmN1cjsKLSAgICAgYyA9IENVUl9DSEFSKGwpOwotICAgICBpZiAoKGMgPT0gJyAnKSB8fCAoYyA9PSAnPicpIHx8IChjID09ICcvJykgfHwgLyogYWNjZWxlcmF0b3JzICovCi0gCSgheG1sSXNOYW1lU3RhcnRDaGFyKGN0eHQsIGMpIHx8IChjID09ICc6JykpKSB7Ci1AQCAtMzQzNCwxMiArMzQzNiwxNCBAQCB4bWxQYXJzZU5DTmFtZUNvbXBsZXgoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0KSB7Ci0gCX0KLSAJbGVuICs9IGw7Ci0gCU5FWFRMKGwpOwotKwllbmQgPSBjdHh0LT5pbnB1dC0+Y3VyOwotIAljID0gQ1VSX0NIQVIobCk7Ci0gCWlmIChjID09IDApIHsKLSAJICAgIGNvdW50ID0gMDsKLSAJICAgIEdST1c7Ci0gICAgICAgICAgICAgaWYgKGN0eHQtPmluc3RhdGUgPT0gWE1MX1BBUlNFUl9FT0YpCi0gICAgICAgICAgICAgICAgIHJldHVybihOVUxMKTsKLSsJICAgIGVuZCA9IGN0eHQtPmlucHV0LT5jdXI7Ci0gCSAgICBjID0gQ1VSX0NIQVIobCk7Ci0gCX0KLSAgICAgfQotQEAgLTM0NDgsNyArMzQ1Miw3IEBAIHhtbFBhcnNlTkNOYW1lQ29tcGxleCh4bWxQYXJzZXJDdHh0UHRyIGN0eHQpIHsKLSAgICAgICAgIHhtbEZhdGFsRXJyKGN0eHQsIFhNTF9FUlJfTkFNRV9UT09fTE9ORywgIk5DTmFtZSIpOwotICAgICAgICAgcmV0dXJuKE5VTEwpOwotICAgICB9Ci0tICAgIHJldHVybih4bWxEaWN0TG9va3VwKGN0eHQtPmRpY3QsIGN0eHQtPmlucHV0LT5jdXIgLSBsZW4sIGxlbikpOwotKyAgICByZXR1cm4oeG1sRGljdExvb2t1cChjdHh0LT5kaWN0LCBlbmQgLSBsZW4sIGxlbikpOwotIH0KLSAKLSAvKioKLWRpZmYgLS1naXQgYS9yZXN1bHQvamFwYW5jcmxmLnhtbCBiL3Jlc3VsdC9qYXBhbmNybGYueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjBiMzA3YwotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L2phcGFuY3JsZi54bWwKLUBAIC0wLDAgKzEsNCBAQAotKzw/eG1sIHZlcnNpb249IjEuMCI/PgotKzzlhaXlipvjg6Hjg4Pjgrvjg7zjgrggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmNvcmR5cy5jb20vd2ViYXBwcy8xLjAvYnBtL2M4YzhiODJhLTBhYzAtM2QxOS0wMWUyLWJkYTc0YWY5YjgyNiI+Ci0rCTxjOGM6RWxlIHhtbG5zOmM4Yz0iaHR0cDovL3NjaGVtYXMuY29yZHlzLmNvbS93ZWJhcHBzLzEuMC9icG0vYzhjOGI4MmEtMGFjMC0zZDE5LTAxZTItYmRhNzRhZjliODI2Ii8+Ci0rPC/lhaXlipvjg6Hjg4Pjgrvjg7zjgrg+Ci1kaWZmIC0tZ2l0IGEvcmVzdWx0L2phcGFuY3JsZi54bWwucmRlIGIvcmVzdWx0L2phcGFuY3JsZi54bWwucmRlCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uMGJjNWFmNwotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L2phcGFuY3JsZi54bWwucmRlCi1AQCAtMCwwICsxLDcgQEAKLSswIDEg5YWl5Yqb44Oh44OD44K744O844K4IDAgMAotKzEgMTQgI3RleHQgMCAxIAotKwkKLSsxIDEgYzhjOkVsZSAxIDAKLSsxIDE0ICN0ZXh0IDAgMSAKLSsKLSswIDE1IOWFpeWKm+ODoeODg+OCu+ODvOOCuCAwIDAKLWRpZmYgLS1naXQgYS9yZXN1bHQvamFwYW5jcmxmLnhtbC5yZHIgYi9yZXN1bHQvamFwYW5jcmxmLnhtbC5yZHIKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4wYmM1YWY3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9yZXN1bHQvamFwYW5jcmxmLnhtbC5yZHIKLUBAIC0wLDAgKzEsNyBAQAotKzAgMSDlhaXlipvjg6Hjg4Pjgrvjg7zjgrggMCAwCi0rMSAxNCAjdGV4dCAwIDEgCi0rCQotKzEgMSBjOGM6RWxlIDEgMAotKzEgMTQgI3RleHQgMCAxIAotKwotKzAgMTUg5YWl5Yqb44Oh44OD44K744O844K4IDAgMAotZGlmZiAtLWdpdCBhL3Jlc3VsdC9qYXBhbmNybGYueG1sLnNheCBiL3Jlc3VsdC9qYXBhbmNybGYueG1sLnNheAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLmMzYmJkYzYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC9qYXBhbmNybGYueG1sLnNheAotQEAgLTAsMCArMSwxMSBAQAotK1NBWC5zZXREb2N1bWVudExvY2F0b3IoKQotK1NBWC5zdGFydERvY3VtZW50KCkKLStTQVguc3RhcnRFbGVtZW50KOWFpeWKm+ODoeODg+OCu+ODvOOCuCwgeG1sbnM9J2h0dHA6Ly9zY2hlbWFzLmNvcmR5cy5jb20vd2ViYXBwcy8xLjAvYnBtL2M4YzhiODJhLTBhYzAtM2QxOS0wMWUyLWJkYTc0YWY5YjgyNicpCi0rU0FYLmNoYXJhY3RlcnMoCi0rCSwgMikKLStTQVguc3RhcnRFbGVtZW50KGM4YzpFbGUsIHhtbG5zOmM4Yz0naHR0cDovL3NjaGVtYXMuY29yZHlzLmNvbS93ZWJhcHBzLzEuMC9icG0vYzhjOGI4MmEtMGFjMC0zZDE5LTAxZTItYmRhNzRhZjliODI2JykKLStTQVguZW5kRWxlbWVudChjOGM6RWxlKQotK1NBWC5jaGFyYWN0ZXJzKAotKywgMSkKLStTQVguZW5kRWxlbWVudCjlhaXlipvjg6Hjg4Pjgrvjg7zjgrgpCi0rU0FYLmVuZERvY3VtZW50KCkKLWRpZmYgLS1naXQgYS9yZXN1bHQvamFwYW5jcmxmLnhtbC5zYXgyIGIvcmVzdWx0L2phcGFuY3JsZi54bWwuc2F4MgotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjg3OGVhZTQKLS0tLSAvZGV2L251bGwKLSsrKyBiL3Jlc3VsdC9qYXBhbmNybGYueG1sLnNheDIKLUBAIC0wLDAgKzEsMTEgQEAKLStTQVguc2V0RG9jdW1lbnRMb2NhdG9yKCkKLStTQVguc3RhcnREb2N1bWVudCgpCi0rU0FYLnN0YXJ0RWxlbWVudE5zKOWFpeWKm+ODoeODg+OCu+ODvOOCuCwgTlVMTCwgJ2h0dHA6Ly9zY2hlbWFzLmNvcmR5cy5jb20vd2ViYXBwcy8xLjAvYnBtL2M4YzhiODJhLTBhYzAtM2QxOS0wMWUyLWJkYTc0YWY5YjgyNicsIDEsIHhtbG5zPSdodHRwOi8vc2NoZW1hcy5jb3JkeXMuY29tL3dlYmFwcHMvMS4wL2JwbS9jOGM4YjgyYS0wYWMwLTNkMTktMDFlMi1iZGE3NGFmOWI4MjYnLCAwLCAwKQotK1NBWC5jaGFyYWN0ZXJzKAotKwksIDIpCi0rU0FYLnN0YXJ0RWxlbWVudE5zKEVsZSwgYzhjLCAnaHR0cDovL3NjaGVtYXMuY29yZHlzLmNvbS93ZWJhcHBzLzEuMC9icG0vYzhjOGI4MmEtMGFjMC0zZDE5LTAxZTItYmRhNzRhZjliODI2JywgMSwgeG1sbnM6YzhjPSdodHRwOi8vc2NoZW1hcy5jb3JkeXMuY29tL3dlYmFwcHMvMS4wL2JwbS9jOGM4YjgyYS0wYWMwLTNkMTktMDFlMi1iZGE3NGFmOWI4MjYnLCAwLCAwKQotK1NBWC5lbmRFbGVtZW50TnMoRWxlLCBjOGMsICdodHRwOi8vc2NoZW1hcy5jb3JkeXMuY29tL3dlYmFwcHMvMS4wL2JwbS9jOGM4YjgyYS0wYWMwLTNkMTktMDFlMi1iZGE3NGFmOWI4MjYnKQotK1NBWC5jaGFyYWN0ZXJzKAotKywgMSkKLStTQVguZW5kRWxlbWVudE5zKOWFpeWKm+ODoeODg+OCu+ODvOOCuCwgTlVMTCwgJ2h0dHA6Ly9zY2hlbWFzLmNvcmR5cy5jb20vd2ViYXBwcy8xLjAvYnBtL2M4YzhiODJhLTBhYzAtM2QxOS0wMWUyLWJkYTc0YWY5YjgyNicpCi0rU0FYLmVuZERvY3VtZW50KCkKLWRpZmYgLS1naXQgYS9yZXN1bHQvbm9lbnQvamFwYW5jcmxmLnhtbCBiL3Jlc3VsdC9ub2VudC9qYXBhbmNybGYueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNjBiMzA3YwotLS0tIC9kZXYvbnVsbAotKysrIGIvcmVzdWx0L25vZW50L2phcGFuY3JsZi54bWwKLUBAIC0wLDAgKzEsNCBAQAotKzw/eG1sIHZlcnNpb249IjEuMCI/PgotKzzlhaXlipvjg6Hjg4Pjgrvjg7zjgrggeG1sbnM9Imh0dHA6Ly9zY2hlbWFzLmNvcmR5cy5jb20vd2ViYXBwcy8xLjAvYnBtL2M4YzhiODJhLTBhYzAtM2QxOS0wMWUyLWJkYTc0YWY5YjgyNiI+Ci0rCTxjOGM6RWxlIHhtbG5zOmM4Yz0iaHR0cDovL3NjaGVtYXMuY29yZHlzLmNvbS93ZWJhcHBzLzEuMC9icG0vYzhjOGI4MmEtMGFjMC0zZDE5LTAxZTItYmRhNzRhZjliODI2Ii8+Ci0rPC/lhaXlipvjg6Hjg4Pjgrvjg7zjgrg+Ci1kaWZmIC0tZ2l0IGEvdGVzdC9qYXBhbmNybGYueG1sIGIvdGVzdC9qYXBhbmNybGYueG1sCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uNDgwY2IyZAotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdC9qYXBhbmNybGYueG1sCi1AQCAtMCwwICsxLDYgQEAKLSvvu7885YWl5Yqb44Oh44OD44K744O844K4Ci0rCXhtbG5zPSJodHRwOi8vc2NoZW1hcy5jb3JkeXMuY29tL3dlYmFwcHMvMS4wL2JwbS9jOGM4YjgyYS0wYWMwLTNkMTktMDFlMi1iZGE3NGFmOWI4MjYiPgotKwk8YzhjOkVsZQotKwkJeG1sbnM6YzhjPSJodHRwOi8vc2NoZW1hcy5jb3JkeXMuY29tL3dlYmFwcHMvMS4wL2JwbS9jOGM4YjgyYS0wYWMwLTNkMTktMDFlMi1iZGE3NGFmOWI4MjYiCi0rCS8+Ci0rPC/lhaXlipvjg6Hjg4Pjgrvjg7zjgrg+Ci1cIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtcHl0aG9uLTIuNi5wYXRjaCBiL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1weXRob24tMi42LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNzk3MDlkLi4wMDAwMDAwCi0tLSBhL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1weXRob24tMi42LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA3MjI5MjNiYzliNzg4ZjAyOGU0MjIxYzc3MTM4ZmM2NjczNWEzMTEzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGV0ciBTdW1iZXJhIDxwZXRyLnN1bWJlcmFAb3JhY2xlLmNvbT4KLURhdGU6IEZyaSwgMyBNYXkgMjAxMyAyMjoyNTozOCArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggZm9yIGNvbXBpbGF0aW9uIHdpdGggcHl0aG9uIDIuNi44Ci0KLVJlbWFwIFB5Q2Fwc3VsZSB0byBQeUNPYmplY3QgYmFzZWQgb24gdGhlIG1hY3JvIGJlaW5nIGF2YWlsYWJsZQotaW5zdGVhZCBvZiB1c2luZyB0aGUgcHl0aG9uIHZlcnNpb24KLS0tLQotIHB5dGhvbi9saWJ4bWxfd3JhcC5oIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9saWJ4bWxfd3JhcC5oIGIvcHl0aG9uL2xpYnhtbF93cmFwLmgKLWluZGV4IGE5Yjk3MzkuLjUzYTA2MTggMTAwNjQ0Ci0tLS0gYS9weXRob24vbGlieG1sX3dyYXAuaAotKysrIGIvcHl0aG9uL2xpYnhtbF93cmFwLmgKLUBAIC0zNCwxMSArMzQsMTEgQEAKLSAjZGVmaW5lIFB5Qnl0ZXNfQXNTdHJpbmcgUHlTdHJpbmdfQXNTdHJpbmcKLSAjZGVmaW5lIFB5Qnl0ZXNfQVNfU1RSSU5HIFB5U3RyaW5nX0FTX1NUUklORwotICNkZWZpbmUgUHlCeXRlc19HRVRfU0laRSBQeVN0cmluZ19HRVRfU0laRQotLQotKyNlbmRpZgotKyNpZm5kZWYgUHlDYXBzdWxlX05ldwotICNkZWZpbmUgUHlDYXBzdWxlX05ldyBQeUNPYmplY3RfRnJvbVZvaWRQdHJBbmREZXNjCi0gI2RlZmluZSBQeUNhcHN1bGVfQ2hlY2tFeGFjdCBQeUNPYmplY3RfQ2hlY2sKLSAjZGVmaW5lIFB5Q2Fwc3VsZV9HZXRQb2ludGVyKG8sIG4pIFB5Q09iamVjdF9HZXREZXNjKChvKSkKLS0KLSAjZW5kaWYKLSAjZW5kaWYKLSAKLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtcHl0aG9uMy5wYXRjaCBiL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1weXRob24zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YzRlODNkLi4wMDAwMDAwCi0tLSBhL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1weXRob24zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSA5MjdmYWFjNjExM2I2MjVhOWEzNDIzZWVmOGYxNDRmYzdkOWE4NTQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZHJlIFJvc3RvdnRzZXYgPHRldHJvbWlub0BnZW50b28ub3JnPgotRGF0ZTogV2VkLCAxMCBKdWwgMjAxMyAyMzowMDo1NCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBweXRob246IGZpeCBkcnZfbGlieG1sMi5weSBmb3IgcHl0aG9uMyBjb21wYXRpYmlsaXR5Ci0KLWh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL3Nob3dfYnVnLmNnaT9pZD03MDM5NzkKLS0tLQotIHB5dGhvbi9kcnZfbGlieG1sMi5weSB8IDE2ICsrKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3B5dGhvbi9kcnZfbGlieG1sMi5weSBiL3B5dGhvbi9kcnZfbGlieG1sMi5weQotaW5kZXggZTQzZmIxZC4uYzkwNzVlNiAxMDA2NDQKLS0tLSBhL3B5dGhvbi9kcnZfbGlieG1sMi5weQotKysrIGIvcHl0aG9uL2Rydl9saWJ4bWwyLnB5Ci1AQCAtMzQsMTIgKzM0LDIwIEBAIFRPRE8KLSAKLSAiIiIKLSAKLS1fX2F1dGhvcl9fICA9IHUiU3TpcGhhbmUgQmlkb3VsIDxzYmlAc2t5bmV0LmJlPiIKLStfX2F1dGhvcl9fICA9ICJTdOlwaGFuZSBCaWRvdWwgPHNiaUBza3luZXQuYmU+IgotIF9fdmVyc2lvbl9fID0gIjAuMyIKLSAKLStpbXBvcnQgc3lzCi0gaW1wb3J0IGNvZGVjcwotLWZyb20gdHlwZXMgaW1wb3J0IFN0cmluZ1R5cGUsIFVuaWNvZGVUeXBlCi0tU3RyaW5nVHlwZXMgPSAoU3RyaW5nVHlwZSxVbmljb2RlVHlwZSkKLSsKLStpZiBzeXMudmVyc2lvbiA8ICIzIjoKLSsgICAgX19hdXRob3JfXyAgPSBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKF9fYXV0aG9yX18pWzBdCi0rCi0rICAgIGZyb20gdHlwZXMgaW1wb3J0IFN0cmluZ1R5cGUsIFVuaWNvZGVUeXBlCi0rICAgIFN0cmluZ1R5cGVzID0gKFN0cmluZ1R5cGUsVW5pY29kZVR5cGUpCi0rCi0rZWxzZToKLSsgICAgU3RyaW5nVHlwZXMgPSAoc3RyKQotIAotIGZyb20geG1sLnNheC5fZXhjZXB0aW9ucyBpbXBvcnQgKgotIGZyb20geG1sLnNheCBpbXBvcnQgeG1scmVhZGVyLCBzYXh1dGlscwotQEAgLTY1LDcgKzczLDcgQEAgZGVmIF9kKHMpOgotIAotIHRyeToKLSAgICAgaW1wb3J0IGxpYnhtbDIKLS1leGNlcHQgSW1wb3J0RXJyb3IsIGU6Ci0rZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgIHJhaXNlIFNBWFJlYWRlck5vdEF2YWlsYWJsZSgibGlieG1sMiBub3QgYXZhaWxhYmxlOiAiIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpbXBvcnQgZXJyb3Igd2FzOiAlcyIgJSBlKQotIAotLS0gCi0xLjguMy4yCi0KZGlmZiAtLWdpdCBhL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1weXRob24zYS5wYXRjaCBiL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1weXRob24zYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA3YTFlMi4uMDAwMDAwMAotLS0gYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtcHl0aG9uM2EucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIDZkZDc3NzVmMzUwNjc0MTA5Mzg5MGQ5OWYwOWMyNDJlMGIzNGI1NWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBcmZyZXZlciBGcmVodGVzIFRhaWZlcnNhciBBcmFoZXNpcyA8QXJmcmV2ZXIuRlRBQGdtYWlsLi5jb20+Ci1EYXRlOiBGcmksIDEyIEp1bCAyMDEzIDExOjE4OjExICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFub3RoZXIgcm91bmQgb2YgZml4ZXMgZm9yIG9sZGVyIHZlcnNpb25zIG9mIFB5dGhvbgotCi0tLS0KLSBweXRob24vZHJ2X2xpYnhtbDIucHkgfCAxNCArKysrKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9weXRob24vZHJ2X2xpYnhtbDIucHkgYi9weXRob24vZHJ2X2xpYnhtbDIucHkKLWluZGV4IGM5MDc1ZTYuLmMyZWMzZTIgMTAwNjQ0Ci0tLS0gYS9weXRob24vZHJ2X2xpYnhtbDIucHkKLSsrKyBiL3B5dGhvbi9kcnZfbGlieG1sMi5weQotQEAgLTQwLDE0ICs0MCwxMiBAQCBfX3ZlcnNpb25fXyA9ICIwLjMiCi0gaW1wb3J0IHN5cwotIGltcG9ydCBjb2RlY3MKLSAKLS1pZiBzeXMudmVyc2lvbiA8ICIzIjoKLStpZiBzeXMudmVyc2lvbl9pbmZvWzBdIDwgMzoKLSAgICAgX19hdXRob3JfXyAgPSBjb2RlY3MudW5pY29kZV9lc2NhcGVfZGVjb2RlKF9fYXV0aG9yX18pWzBdCi0gCi0tICAgIGZyb20gdHlwZXMgaW1wb3J0IFN0cmluZ1R5cGUsIFVuaWNvZGVUeXBlCi0tICAgIFN0cmluZ1R5cGVzID0gKFN0cmluZ1R5cGUsVW5pY29kZVR5cGUpCi0tCi0rICAgIFN0cmluZ1R5cGVzID0gKHN0ciwgdW5pY29kZSkKLSBlbHNlOgotLSAgICBTdHJpbmdUeXBlcyA9IChzdHIpCi0rICAgIFN0cmluZ1R5cGVzID0gc3RyCi0gCi0gZnJvbSB4bWwuc2F4Ll9leGNlcHRpb25zIGltcG9ydCAqCi0gZnJvbSB4bWwuc2F4IGltcG9ydCB4bWxyZWFkZXIsIHNheHV0aWxzCi1AQCAtNzMsOSArNzEsOSBAQCBkZWYgX2Qocyk6Ci0gCi0gdHJ5OgotICAgICBpbXBvcnQgbGlieG1sMgotLWV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgotK2V4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgcmFpc2UgU0FYUmVhZGVyTm90QXZhaWxhYmxlKCJsaWJ4bWwyIG5vdCBhdmFpbGFibGU6ICIgXAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImltcG9ydCBlcnJvciB3YXM6ICVzIiAlIGUpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaW1wb3J0IGVycm9yIHdhczogJXMiICUgc3lzLmV4Y19pbmZvKClbMV0pCi0gCi0gY2xhc3MgTG9jYXRvcih4bWxyZWFkZXIuTG9jYXRvcik6Ci0gICAgICIiIlNBWCBMb2NhdG9yIGFkYXB0ZXIgZm9yIGxpYnhtbDIueG1sVGV4dFJlYWRlckxvY2F0b3IiIiIKLUBAIC0xNDIsNyArMTQwLDcgQEAgY2xhc3MgTGliWG1sMlJlYWRlcih4bWxyZWFkZXIuWE1MUmVhZGVyKToKLSAgICAgICAgIHNlbGYuX19wYXJzaW5nID0gMQotICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICMgcHJlcGFyZSBzb3VyY2UgYW5kIGNyZWF0ZSByZWFkZXIKLS0gICAgICAgICAgICBpZiB0eXBlKHNvdXJjZSkgaW4gU3RyaW5nVHlwZXM6Ci0rICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShzb3VyY2UsIFN0cmluZ1R5cGVzKToKLSAgICAgICAgICAgICAgICAgcmVhZGVyID0gbGlieG1sMi5uZXdUZXh0UmVhZGVyRmlsZW5hbWUoc291cmNlKQotICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgIHNvdXJjZSA9IHNheHV0aWxzLnByZXBhcmVfaW5wdXRfc291cmNlKHNvdXJjZSkKLS0tIAotMS44LjMuMgotCmRpZmYgLS1naXQgYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEteG1sbGludC1wb3N0dmFsaWQucGF0Y2ggYi9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEteG1sbGludC1wb3N0dmFsaWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjZTJmM2IuLjAwMDAwMDAKLS0tIGEvZGV2LWxpYnMvbGlieG1sMi9maWxlcy9saWJ4bWwyLTIuOS4xLXhtbGxpbnQtcG9zdHZhbGlkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA3YzNjNjYzZTRmODQ0YWFlY2JiMGNmYzI5NTY3ZmUyZWU5NTA2ZmM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZHJlIFJvc3RvdnRzZXYgPHRldHJvbWlub0BnZW50b28ub3JnPgotRGF0ZTogRnJpLCAxNiBNYXkgMjAxNCAyMjo0NjowMCAtMDQwMAotU3ViamVjdDogW1BBVENIXSB4bWxsaW50OiBhIHBvc3RlcmlvcmkgdmFsaWRhdGlvbiBuZWVkcyB0byBsb2FkIGV4ZXJuYWwKLSBlbnRpdGllcwotCi1Gb3IgaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvc2hvd19idWcuY2dpP2lkPTczMDI5MAotLS0tCi0geG1sbGludC5jIHwgNyArKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEveG1sbGludC5jIGIveG1sbGludC5jCi1pbmRleCA5ZDQ2YWM1Li5iMTQyYjNiIDEwMDY0NAotLS0tIGEveG1sbGludC5jCi0rKysgYi94bWxsaW50LmMKLUBAIC0zNTMwLDcgKzM1MzAsMTIgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpIHsKLSAJeG1sTG9hZEV4dER0ZERlZmF1bHRWYWx1ZSB8PSBYTUxfQ09NUExFVEVfQVRUUlM7Ci0gICAgIGlmIChub2VudCAhPSAwKSB4bWxTdWJzdGl0dXRlRW50aXRpZXNEZWZhdWx0KDEpOwotICNpZmRlZiBMSUJYTUxfVkFMSURfRU5BQkxFRAotLSAgICBpZiAodmFsaWQgIT0gMCkgeG1sRG9WYWxpZGl0eUNoZWNraW5nRGVmYXVsdFZhbHVlID0gMTsKLSsgICAgLyogSWYgd2Ugd2lsbCB2YWxpZGF0ZSBvbmx5IGEgcG9zdGVyaW9yaSwgZW5zdXJlIHRoYXQgZW50aXRpZXMgZ2V0IGxvYWRlZCwKLSsgICAgICogYnV0IHN1cHByZXNzIHZhbGlkYXRpb24gbWVzc2FnZXMgZHVyaW5nIGluaXRpYWwgcGFyc2luZyAqLwotKyAgICBpZiAocG9zdHZhbGlkICE9IDAgJiYgdmFsaWQgPT0gMCkKLSsJb3B0aW9ucyB8PSBYTUxfUEFSU0VfRFREVkFMSUQgfCBYTUxfUEFSU0VfTk9FUlJPUiB8IFhNTF9QQVJTRV9OT1dBUk5JTkc7Ci0rICAgIGVsc2UgaWYgKHZhbGlkICE9IDApCi0rCXhtbERvVmFsaWRpdHlDaGVja2luZ0RlZmF1bHRWYWx1ZSA9IDE7Ci0gI2VuZGlmIC8qIExJQlhNTF9WQUxJRF9FTkFCTEVEICovCi0gICAgIGlmICgoaHRtbG91dCkgJiYgKCFub3dyYXApKSB7Ci0gCXhtbEdlbmVyaWNFcnJvcih4bWxHZW5lcmljRXJyb3JDb250ZXh0LAotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtaWN1LXBrZ2NvbmZpZy5wYXRjaCBiL2Rldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMi1pY3UtcGtnY29uZmlnLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggOTQlCnJlbmFtZSBmcm9tIGRldi1saWJzL2xpYnhtbDIvZmlsZXMvbGlieG1sMi0yLjkuMS1pY3UtcGtnY29uZmlnLnBhdGNoCnJlbmFtZSB0byBkZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjItaWN1LXBrZ2NvbmZpZy5wYXRjaAppbmRleCBhYjMzMDM4Li43YTg0ZmFjIDEwMDY0NAotLS0gYS9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjEtaWN1LXBrZ2NvbmZpZy5wYXRjaAorKysgYi9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjItaWN1LXBrZ2NvbmZpZy5wYXRjaApAQCAtMSw3ICsxLDcgQEAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KIGluZGV4IDczNzQ1NjQuLjEzYzhkNGUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKIEBAIC0xNDQ0LDE5ICsxNDQ0LDExIEBAIFhNTF9MSUJUT09MTElCUz0ibGlieG1sMi5sYSIKICBBQ19TVUJTVChXSVRIX0lDT05WKQogIApkaWZmIC0tZ2l0IGEvZGV2LWxpYnMvbGlieG1sMi9maWxlcy9saWJ4bWwyLTIuOS4yLXJldmVydC1taXNzaW5nLWluaXRpYWxpemF0aW9uLnBhdGNoIGIvZGV2LWxpYnMvbGlieG1sMi9maWxlcy9saWJ4bWwyLTIuOS4yLXJldmVydC1taXNzaW5nLWluaXRpYWxpemF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ5OGIzODIKLS0tIC9kZXYvbnVsbAorKysgYi9kZXYtbGlicy9saWJ4bWwyL2ZpbGVzL2xpYnhtbDItMi45LjItcmV2ZXJ0LW1pc3NpbmctaW5pdGlhbGl6YXRpb24ucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBmNjUxMjhmMzgyODlkNzdmZjMyMmQ2M2FlZjI4NThjYzBhODE5YzM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGFuaWVsIFZlaWxsYXJkIDx2ZWlsbGFyZEByZWRoYXQuY29tPgorRGF0ZTogRnJpLCAxNyBPY3QgMjAxNCAxNzoxMzo0MSArMDgwMAorU3ViamVjdDogUmV2ZXJ0ICJNaXNzaW5nIGluaXRpYWxpemF0aW9uIGZvciB0aGUgY2F0YWxvZyBtb2R1bGUiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgMDU0YzcxNmVhMWJmMDAxNTQ0MTI3YTRhYjRmNDM0NmQxYjk5NDdlNy4KK0FzIHRoaXMgYnJlYWsgeG1sY2F0YWxvZyBjb21tYW5kCitodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20vc2hvd19idWcuY2dpP2lkPTExNTM3NTMKKworZGlmZiAtLWdpdCBhL3BhcnNlci5jIGIvcGFyc2VyLmMKK2luZGV4IDFkOTM5NjcuLjY3YzlkZmQgMTAwNjQ0CistLS0gYS9wYXJzZXIuYworKysrIGIvcGFyc2VyLmMKK0BAIC0xNDgzMCw5ICsxNDgzMCw2IEBAIHhtbEluaXRQYXJzZXIodm9pZCkgeworICNpZmRlZiBMSUJYTUxfWFBBVEhfRU5BQkxFRAorIAl4bWxYUGF0aEluaXQoKTsKKyAjZW5kaWYKKy0jaWZkZWYgTElCWE1MX0NBVEFMT0dfRU5BQkxFRAorLSAgICAgICAgeG1sSW5pdGlhbGl6ZUNhdGFsb2coKTsKKy0jZW5kaWYKKyAJeG1sUGFyc2VySW5pdGlhbGl6ZWQgPSAxOworICNpZmRlZiBMSUJYTUxfVEhSRUFEX0VOQUJMRUQKKyAgICAgfQorLS0gCitjZ2l0IHYwLjEwLjEKKwpkaWZmIC0tZ2l0IGEvZGV2LWxpYnMvbGlieG1sMi9saWJ4bWwyLTIuOS4xLXI1LmVidWlsZCBiL2Rldi1saWJzL2xpYnhtbDIvbGlieG1sMi0yLjkuMi5lYnVpbGQKc2ltaWxhcml0eSBpbmRleCA4OCUKcmVuYW1lIGZyb20gZGV2LWxpYnMvbGlieG1sMi9saWJ4bWwyLTIuOS4xLXI1LmVidWlsZApyZW5hbWUgdG8gZGV2LWxpYnMvbGlieG1sMi9saWJ4bWwyLTIuOS4yLmVidWlsZAppbmRleCBlNmJkODM1Li5lYmExM2MyIDEwMDY0NAotLS0gYS9kZXYtbGlicy9saWJ4bWwyL2xpYnhtbDItMi45LjEtcjUuZWJ1aWxkCisrKyBiL2Rldi1saWJzL2xpYnhtbDIvbGlieG1sMi0yLjkuMi5lYnVpbGQKQEAgLTEsNiArMSw2IEBACiAjIENvcHlyaWdodCAxOTk5LTIwMTQgR2VudG9vIEZvdW5kYXRpb24KICMgRGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2MgotIyAkSGVhZGVyOiAvdmFyL2N2c3Jvb3QvZ2VudG9vLXg4Ni9kZXYtbGlicy9saWJ4bWwyL2xpYnhtbDItMi45LjEtcjUuZWJ1aWxkLHYgMS4xIDIwMTQvMDkvMDMgMDk6NTE6MjIgbWdvcm55IEV4cCAkCisjICRIZWFkZXI6IC92YXIvY3Zzcm9vdC9nZW50b28teDg2L2Rldi1saWJzL2xpYnhtbDIvbGlieG1sMi0yLjkuMi5lYnVpbGQsdiAxLjExIDIwMTQvMTIvMTEgMTE6Mjk6MzIgYXJtaW43NiBFeHAgJAogCiBFQVBJPSI1IgogUFlUSE9OX0NPTVBBVD0oIHB5dGhvbnsyXzYsMl83LDNfMiwzXzMsM180fSApCkBAIC0yOSw3ICsyOSw4IEBACiAJCSR7WFNUU19IT01FfS8ke1hTVFNfTkFNRV8yfS8ke1hTVFNfVEFSQkFMTF8yfQogCQlodHRwOi8vd3d3LnczLm9yZy9YTUwvVGVzdC8ke1hNTENPTkZfVEFSQkFMTH0gKSIKIAotQ09NTU9OX0RFUEVORD0iPj1zeXMtbGlicy96bGliLTEuMi44LXIxOj1bJHtNVUxUSUxJQl9VU0VERVB9XQorQ09NTU9OX0RFUEVORD0iCisJPj1zeXMtbGlicy96bGliLTEuMi44LXIxOj1bJHtNVUxUSUxJQl9VU0VERVB9XQogCWljdT8gKCA+PWRldi1saWJzL2ljdS01MS4yLXIxOj1bJHtNVUxUSUxJQl9VU0VERVB9XSApCiAJbHptYT8gKCA+PWFwcC1hcmNoL3h6LXV0aWxzLTUuMC41LXIxOj1bJHtNVUxUSUxJQl9VU0VERVB9XSApCiAJcHl0aG9uPyAoICR7UFlUSE9OX0RFUFN9ICkKQEAgLTc3LDI3ICs3OCwxNyBAQAogCiAjCWVwdW50X2N4eCAjIGlmIHdlIGRvbid0IGVhdXRvcmVjb25mCiAKLQkjIEltcG9ydGFudCBwYXRjaGVzIGZyb20gMi45LjIKLQllcGF0Y2ggIiR7RklMRVNESVJ9LyR7UH0tbWlzc2luZy1icmVhay5wYXRjaCIgXAotCQkiJHtGSUxFU0RJUn0vJHtQfS1weXRob24tMi42LnBhdGNoIiBcCi0JCSIke0ZJTEVTRElSfS8ke1B9LWNvbXByZXNzaW9uLWRldGVjdGlvbi5wYXRjaCIgXAotCQkiJHtGSUxFU0RJUn0vJHtQfS1ub24tYXNjaWktY3ItbGYucGF0Y2giIFwKLQkJIiR7RklMRVNESVJ9LyR7UE59LTIuOS4xLXB5dGhvbjMucGF0Y2giIFwKLQkJIiR7RklMRVNESVJ9LyR7UE59LTIuOS4xLXB5dGhvbjNhLnBhdGNoIgotCi0JIyBTZWN1cml0eSBmaXhlcyBmcm9tIDIuOS4yCi0JZXBhdGNoICIke0ZJTEVTRElSfS8ke1B9LWV4dGVybmFsLXBhcmFtLWVudGl0aWVzLnBhdGNoIgotCi0JIyBodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzMwMjkwCi0JZXBhdGNoICIke0ZJTEVTRElSfS8ke1BOfS0yLjkuMS14bWxsaW50LXBvc3R2YWxpZC5wYXRjaCIKKwkjIEltcG9ydGFudCBwYXRjaGVzIGZyb20gbWFzdGVyCisJZXBhdGNoIFwKKwkJIiR7RklMRVNESVJ9LyR7UE59LTIuOS4yLXJldmVydC1taXNzaW5nLWluaXRpYWxpemF0aW9uLnBhdGNoIgogCiAJIyBQbGVhc2UgZG8gbm90IHJlbW92ZSwgYXMgZWxzZSB3ZSBnZXQgcmVmZXJlbmNlcyB0byBQT1JUQUdFX1RNUERJUgogCSMgaW4gL3Vzci9saWIvcHl0aG9uPy4/L3NpdGUtcGFja2FnZXMvbGlieG1sMm1vZC5sYSBhbW9uZyB0aGluZ3MuCiAJIyBXZSBub3cgbmVlZCB0byBydW4gZWF1dG9yZWNvbmYgYXQgdGhlIGVuZCB0byBwcmV2ZW50IG1haW50YWluZXIgbW9kZS4KICMJZWxpYnRvb2xpemUKIAotCSMgVXNlIHBrZ2NvbmZpZyB0byBmaW5kIGljdSB0byBwcm9wZXJseSBzdXBwb3J0IG11bHRpbGliCi0JZXBhdGNoICIke0ZJTEVTRElSfS8ke1BOfS0yLjkuMS1pY3UtcGtnY29uZmlnLnBhdGNoIgorCSMgVXNlIHBrZ2NvbmZpZyB0byBmaW5kIGljdSB0byBwcm9wZXJseSBzdXBwb3J0IG11bHRpbGliLCB1cHN0cmVhbSBidWcgIzczODc1MQorCWVwYXRjaCAiJHtGSUxFU0RJUn0vJHtQTn0tMi45LjItaWN1LXBrZ2NvbmZpZy5wYXRjaCIKIAogCWVhdXRvcmVjb25mCiB9CmRpZmYgLS1naXQgYS9tZXRhZGF0YS9tZDUtY2FjaGUvZGV2LWxpYnMvbGlieG1sMi0yLjkuMS1yNSBiL21ldGFkYXRhL21kNS1jYWNoZS9kZXYtbGlicy9saWJ4bWwyLTIuOS4yCnNpbWlsYXJpdHkgaW5kZXggOTYlCnJlbmFtZSBmcm9tIG1ldGFkYXRhL21kNS1jYWNoZS9kZXYtbGlicy9saWJ4bWwyLTIuOS4xLXI1CnJlbmFtZSB0byBtZXRhZGF0YS9tZDUtY2FjaGUvZGV2LWxpYnMvbGlieG1sMi0yLjkuMgppbmRleCAyMDFjODg0Li40OThhNWM4IDEwMDY0NAotLS0gYS9tZXRhZGF0YS9tZDUtY2FjaGUvZGV2LWxpYnMvbGlieG1sMi0yLjkuMS1yNQorKysgYi9tZXRhZGF0YS9tZDUtY2FjaGUvZGV2LWxpYnMvbGlieG1sMi0yLjkuMgpAQCAtOCw2ICs4LDYgQEAKIExJQ0VOU0U9TUlUCiBSREVQRU5EPT49c3lzLWxpYnMvemxpYi0xLjIuOC1yMTo9W2FiaV94ODZfMzIoLSk/LGFiaV94ODZfNjQoLSk/LGFiaV94ODZfeDMyKC0pPyxhYmlfbWlwc19uMzIoLSk/LGFiaV9taXBzX242NCgtKT8sYWJpX21pcHNfbzMyKC0pPyxhYmlfcHBjXzMyKC0pPyxhYmlfcHBjXzY0KC0pPyxhYmlfczM5MF8zMigtKT8sYWJpX3MzOTBfNjQoLSk/XSBpY3U/ICggPj1kZXYtbGlicy9pY3UtNTEuMi1yMTo9W2FiaV94ODZfMzIoLSk/LGFiaV94ODZfNjQoLSk/LGFiaV94ODZfeDMyKC0pPyxhYmlfbWlwc19uMzIoLSk/LGFiaV9taXBzX242NCgtKT8sYWJpX21pcHNfbzMyKC0pPyxhYmlfcHBjXzMyKC0pPyxhYmlfcHBjXzY0KC0pPyxhYmlfczM5MF8zMigtKT8sYWJpX3MzOTBfNjQoLSk/XSApIGx6bWE/ICggPj1hcHAtYXJjaC94ei11dGlscy01LjAuNS1yMTo9W2FiaV94ODZfMzIoLSk/LGFiaV94ODZfNjQoLSk/LGFiaV94ODZfeDMyKC0pPyxhYmlfbWlwc19uMzIoLSk/LGFiaV9taXBzX242NCgtKT8sYWJpX21pcHNfbzMyKC0pPyxhYmlfcHBjXzMyKC0pPyxhYmlfcHBjXzY0KC0pPyxhYmlfczM5MF8zMigtKT8sYWJpX3MzOTBfNjQoLSk/XSApIHB5dGhvbj8gKCBweXRob25fdGFyZ2V0c19weXRob24yXzc/ICggPj1kZXYtbGFuZy9weXRob24tMi43LjMtcjI6Mi43W3htbF0gKSBweXRob25fdGFyZ2V0c19weXRob24zXzI/ICggPj1kZXYtbGFuZy9weXRob24tMy4yLjUtcjI6My4yW3htbF0gKSBweXRob25fdGFyZ2V0c19weXRob24zXzM/ICggPj1kZXYtbGFuZy9weXRob24tMy4zLjItcjI6My4zW3htbF0gKSBweXRob25fdGFyZ2V0c19weXRob24zXzQ/ICggZGV2LWxhbmcvcHl0aG9uOjMuNFt4bWxdICkgZGV2LWxhbmcvcHl0aG9uLWV4ZWM6PVtweXRob25fdGFyZ2V0c19weXRob24yXzcoLSk/LHB5dGhvbl90YXJnZXRzX3B5dGhvbjNfMigtKT8scHl0aG9uX3RhcmdldHNfcHl0aG9uM18zKC0pPyxweXRob25fdGFyZ2V0c19weXRob24zXzQoLSk/LC1weXRob25fc2luZ2xlX3RhcmdldF9weXRob24yXzcoLSksLXB5dGhvbl9zaW5nbGVfdGFyZ2V0X3B5dGhvbjNfMigtKSwtcHl0aG9uX3NpbmdsZV90YXJnZXRfcHl0aG9uM18zKC0pLC1weXRob25fc2luZ2xlX3RhcmdldF9weXRob24zXzQoLSldICkgcmVhZGxpbmU/ICggc3lzLWxpYnMvcmVhZGxpbmU6PSApIGFiaV94ODZfMzI/ICggITw9YXBwLWVtdWxhdGlvbi9lbXVsLWxpbnV4LXg4Ni1iYXNlbGlicy0yMDEzMTAwOC1yNiAhYXBwLWVtdWxhdGlvbi9lbXVsLWxpbnV4LXg4Ni1iYXNlbGlic1stYWJpX3g4Nl8zMigtKV0gKQogU0xPVD0yCi1TUkNfVVJJPWZ0cDovL3htbHNvZnQub3JnL2xpYnhtbDIvbGlieG1sMi0yLjkuMS50YXIuZ3ogdGVzdD8gKCBodHRwOi8vd3d3LnczLm9yZy9YTUwvMjAwNC94bWwtc2NoZW1hLXRlc3Qtc3VpdGUveG1sc2NoZW1hMjAwMi0wMS0xNi94c3RzLTIwMDItMDEtMTYudGFyLmd6IGh0dHA6Ly93d3cudzMub3JnL1hNTC8yMDA0L3htbC1zY2hlbWEtdGVzdC1zdWl0ZS94bWxzY2hlbWEyMDA0LTAxLTE0L3hzdHMtMjAwNC0wMS0xNC50YXIuZ3ogaHR0cDovL3d3dy53My5vcmcvWE1ML1Rlc3QveG1sdHMyMDA4MDgyNy50YXIuZ3ogKQorU1JDX1VSST1mdHA6Ly94bWxzb2Z0Lm9yZy9saWJ4bWwyL2xpYnhtbDItMi45LjIudGFyLmd6IHRlc3Q/ICggaHR0cDovL3d3dy53My5vcmcvWE1MLzIwMDQveG1sLXNjaGVtYS10ZXN0LXN1aXRlL3htbHNjaGVtYTIwMDItMDEtMTYveHN0cy0yMDAyLTAxLTE2LnRhci5neiBodHRwOi8vd3d3LnczLm9yZy9YTUwvMjAwNC94bWwtc2NoZW1hLXRlc3Qtc3VpdGUveG1sc2NoZW1hMjAwNC0wMS0xNC94c3RzLTIwMDQtMDEtMTQudGFyLmd6IGh0dHA6Ly93d3cudzMub3JnL1hNTC9UZXN0L3htbHRzMjAwODA4MjcudGFyLmd6ICkKIF9lY2xhc3Nlc189YXV0b3Rvb2xzCTFiMGZhNDczYmU5ODA5MTIyMGVkZmY5ZjUxZDA2MTUzCWV1dGlscwkwNjEzMzk5MGU4NjFiZTBmZTYwYzJiNDI4ZmQwMjVkOQlmbGFnLW8tbWF0aWMJYzMxMzFkYzY3ZDNiZDM5ZjA0NGU5MmI4MjgwNTA1ZTQJbGlidG9vbAllYmEwOWVkNDQwZjI2OTJmNzMwMjRmZjM2MjFhMWY0YgltdWx0aWJ1aWxkCTQ2NTI3YTQ2NTY5NTZkYTNkNThhY2ZmNzJjOWI1OWIxCW11bHRpbGliCTNiZjI0ZTZhYmI5Yjc2ZDlmNmMyMDYwMGYwYjcxNmJmCW11bHRpbGliLWJ1aWxkCTllYjRiNWZiODU4MjI4MzE2ZDhiYjMyYWRhNTFmNmE1CW11bHRpbGliLW1pbmltYWwJNWJiZGM3Nzg3N2MxYWEzYzZiZDg5Y2EzZjkxOTZkMTEJbXVsdGlwcm9jZXNzaW5nCWQ3ZjI5ODVhMmM3NmMzNjVlZTIwMjY5ZGI1MjYxNDE0CXByZWZpeAkyMTA1OGMyMWNhNDg0NTNkNzcxZGYxNTUwMDg3M2VkZQlweXRob24tcjEJZmVmODM4Mjc3ZTBmMTdkZjI5ZDQ5NTFiNzE4M2QxYjQJcHl0aG9uLXV0aWxzLXIxCWRjYzlmYmQ1NDFlZTk0MTczMTc4ZTRmMTRkZDM5NDVjCXRvb2xjaGFpbi1mdW5jcwk0OGIzOGEyMTZhZmI5MmRiNjMxNGQ2YzMxODdhYmVhMwotX21kNV89MzRkZGU5MGUxYmMwOTQzY2I1NGMzMWIwOWFiNzIyNDQKK19tZDVfPTEzNDQ4YTJkODAzMDZlMTc2ZTY0YWY0MmQ0YmZlMjI4Cg==