ZGlmZiAtLWdpdCBhL0RvYy9saWIvbGlibm50cGxpYi50ZXggYi9Eb2MvbGliL2xpYm5udHBsaWIudGV4CmluZGV4IDg2MTZmYjkuLjliOTIxN2IgMTAwNjQ0Ci0tLSBhL0RvYy9saWIvbGlibm50cGxpYi50ZXgKKysrIGIvRG9jL2xpYi9saWJubnRwbGliLnRleApAQCAtMTc1LDYgKzE3NSwyMyBAQAogdGhlbiBjbG9zZSBpdC4gIElmIFx2YXJ7ZmlsZX0gaXMgYSBmaWxlIG9iamVjdCwgdGhlbiBpdCB3aWxsIHN0YXJ0CiBjYWxsaW5nIFxtZXRob2R7d3JpdGUoKX0gb24gaXQgdG8gc3RvcmUgdGhlIGxpbmVzIG9mIHRoZSBjb21tYW5kIG91dHB1dC4KIElmIFx2YXJ7ZmlsZX0gaXMgc3VwcGxpZWQsIHRoZW4gdGhlIHJldHVybmVkIFx2YXJ7bGlzdH0gaXMgYW4gZW1wdHkgbGlzdC4KKworXGJlZ2lue21ldGhvZGRlc2N9e2Rlc2NyaXB0aW9uc317Z3JvdXBwYXR0ZXJufQorU2VuZCBhIFxzYW1we0xJU1QgTkVXU0dST1VQU30gY29tbWFuZCwgd2hlcmUgXHZhcntncm91cHBhdHRlcm59IGlzIGEgd2lsZG1hdAorc3RyaW5nIGFzIHNwZWNpZmllZCBpbiBSRkMyOTgwIChpdCdzIGVzc2VudGlhbGx5IHRoZSBzYW1lIGFzIERPUyBvciBVTklYCitzaGVsbCB3aWxkY2FyZCBzdHJpbmdzKS4gIFJldHVybiBhIHBhaXIgXGNvZGV7KFx2YXJ7cmVzcG9uc2V9LAorXHZhcntsaXN0fSl9LCB3aGVyZSBcdmFye2xpc3R9IGlzIGEgbGlzdCBvZiB0dXBsZXMgY29udGFpbmluZworXGNvZGV7KFx2YXJ7bmFtZX0sIFx2YXJ7dGl0bGV9KX0uCitcZW5ke21ldGhvZGRlc2N9CisKK1xiZWdpbnttZXRob2RkZXNjfXtkZXNjcmlwdGlvbn17Z3JvdXB9CitHZXQgYSBkZXNjcmlwdGlvbiBmb3IgYSBzaW5nbGUgZ3JvdXAgXHZhcntncm91cH0uICBJZiBtb3JlIHRoYW4gb25lIGdyb3VwCittYXRjaGVzIChpZiAnZ3JvdXAnIGlzIGEgcmVhbCB3aWxkbWF0IHN0cmluZyksIHJldHVybiB0aGUgZmlyc3QgbWF0Y2guICBJZiBubyBncm91cAorbWF0Y2hlcywgcmV0dXJuIGFuIGVtcHR5IHN0cmluZy4KKworVGhpcyBlbGlkZXMgdGhlIHJlc3BvbnNlIGNvZGUgZnJvbSB0aGUgc2VydmVyLiAgSWYgdGhlIHJlc3BvbnNlIGNvZGUgaXMKK25lZWRlZCwgdXNlIFxtZXRob2R7ZGVzY3JpcHRpb25zKCl9LgorCiBcZW5ke21ldGhvZGRlc2N9CiAKIFxiZWdpbnttZXRob2RkZXNjfXtncm91cH17bmFtZX0KQEAgLTI5NCw2ICszMTEsOSBAQAogSWYgXHZhcntmaWxlfSBpcyBzdXBwbGllZCwgdGhlbiB0aGUgcmV0dXJuZWQgXHZhcntsaXN0fSBpcyBhbiBlbXB0eSBsaXN0LgogVGhpcyBpcyBhbiBvcHRpb25hbCBOTlRQIGV4dGVuc2lvbiwgYW5kIG1heSBub3QgYmUgc3VwcG9ydGVkIGJ5IGFsbAogc2VydmVycy4KKworUkZDMjk4MCBzYXlzIGBgSXQgaXMgc3VnZ2VzdGVkIHRoYXQgdGhpcyBleHRlbnNpb24gYmUgZGVwcmVjYXRlZCcnLiAgVXNlCitcbWV0aG9ke2Rlc2NyaXB0aW9ucygpfSBvciBcbWV0aG9ke2Rlc2NyaXB0aW9uKCl9IGluc3RlYWQuCiBcZW5ke21ldGhvZGRlc2N9CiAKIFxiZWdpbnttZXRob2RkZXNjfXt4b3Zlcn17c3RhcnQsIGVuZCwgXG9wdGlvbmFse2ZpbGV9fQpkaWZmIC0tZ2l0IGEvTGliL25udHBsaWIucHkgYi9MaWIvbm50cGxpYi5weQppbmRleCA4MzU0NGI4Li5kMGJkNWFkIDEwMDY0NAotLS0gYS9MaWIvbm50cGxpYi5weQorKysgYi9MaWIvbm50cGxpYi5weQpAQCAtMjk3LDYgKzI5Nyw0MiBAQAogICAgICAgICAgICAgbGlzdFtpXSA9IHR1cGxlKGxpc3RbaV0uc3BsaXQoKSkKICAgICAgICAgcmV0dXJuIHJlc3AsIGxpc3QKIAorICAgIGRlZiBkZXNjcmlwdGlvbihzZWxmLCBncm91cCk6CisKKyAgICAgICAgIiIiR2V0IGEgZGVzY3JpcHRpb24gZm9yIGEgc2luZ2xlIGdyb3VwLiAgSWYgbW9yZSB0aGFuIG9uZQorICAgICAgICBncm91cCBtYXRjaGVzICgnZ3JvdXAnIGlzIGEgcGF0dGVybiksIHJldHVybiB0aGUgZmlyc3QuICBJZiBubworICAgICAgICBncm91cCBtYXRjaGVzLCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLgorCisgICAgICAgIFRoaXMgZWxpZGVzIHRoZSByZXNwb25zZSBjb2RlIGZyb20gdGhlIHNlcnZlciwgc2luY2UgaXQgY2FuCisgICAgICAgIG9ubHkgYmUgJzIxNScgb3IgJzI4NScgKGZvciB4Z3RpdGxlKSBhbnl3YXkuICBJZiB0aGUgcmVzcG9uc2UKKyAgICAgICAgY29kZSBpcyBuZWVkZWQsIHVzZSB0aGUgJ2Rlc2NyaXB0aW9ucycgbWV0aG9kLgorCisgICAgICAgIE5PVEU6IFRoaXMgbmVpdGhlciBjaGVja3MgZm9yIGEgd2lsZGNhcmQgaW4gJ2dyb3VwJyBub3IgZG9lcworICAgICAgICBpdCBjaGVjayB3aGV0aGVyIHRoZSBncm91cCBhY3R1YWxseSBleGlzdHMuIiIiCisKKyAgICAgICAgcmVzcCwgbGluZXMgPSBzZWxmLmRlc2NyaXB0aW9ucyhncm91cCkKKyAgICAgICAgaWYgbGVuKGxpbmVzKSA9PSAwOgorICAgICAgICAgICAgcmV0dXJuICIiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByZXR1cm4gbGluZXNbMF1bMV0KKworICAgIGRlZiBkZXNjcmlwdGlvbnMoc2VsZiwgZ3JvdXBfcGF0dGVybik6CisgICAgICAgICIiIkdldCBkZXNjcmlwdGlvbnMgZm9yIGEgcmFuZ2Ugb2YgZ3JvdXBzLiIiIgorICAgICAgICBsaW5lX3BhdCA9IHJlLmNvbXBpbGUoIl4oP1A8Z3JvdXA+W14gXHRdKylbIFx0XSsoLiopJCIpCisgICAgICAgICMgVHJ5IHRoZSBtb3JlIHN0ZCAoYWNjLiB0byBSRkMyOTgwKSBMSVNUIE5FV1NHUk9VUFMgZmlyc3QKKyAgICAgICAgcmVzcCwgcmF3X2xpbmVzID0gc2VsZi5sb25nY21kKCdMSVNUIE5FV1NHUk9VUFMgJyArIGdyb3VwX3BhdHRlcm4pCisgICAgICAgIGlmIHJlc3BbOjNdICE9ICIyMTUiOgorICAgICAgICAgICAgIyBOb3cgdGhlIGRlcHJlY2F0ZWQgWEdUSVRMRS4gIFRoaXMgZWl0aGVyIHJhaXNlcyBhbiBlcnJvcgorICAgICAgICAgICAgIyBvciBzdWNjZWVkcyB3aXRoIHRoZSBzYW1lIG91dHB1dCBzdHJ1Y3R1cmUgYXMgTElTVAorICAgICAgICAgICAgIyBORVdTR1JPVVBTLgorICAgICAgICAgICAgcmVzcCwgcmF3X2xpbmVzID0gc2VsZi5sb25nY21kKCdYR1RJVExFICcgKyBncm91cF9wYXR0ZXJuKQorICAgICAgICBsaW5lcyA9IFtdCisgICAgICAgIGZvciByYXdfbGluZSBpbiByYXdfbGluZXM6CisgICAgICAgICAgICBtYXRjaCA9IGxpbmVfcGF0LnNlYXJjaChyYXdfbGluZS5zdHJpcCgpKQorICAgICAgICAgICAgaWYgbWF0Y2g6CisgICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKG1hdGNoLmdyb3VwKDEsIDIpKQorICAgICAgICByZXR1cm4gcmVzcCwgbGluZXMKKwogICAgIGRlZiBncm91cChzZWxmLCBuYW1lKToKICAgICAgICAgIiIiUHJvY2VzcyBhIEdST1VQIGNvbW1hbmQuICBBcmd1bWVudDoKICAgICAgICAgLSBncm91cDogdGhlIGdyb3VwIG5hbWUKZGlmZiAtLWdpdCBhL01pc2MvQUNLUyBiL01pc2MvQUNLUwppbmRleCAzNDg5NDljLi4wNzFmODZlIDEwMDY0NAotLS0gYS9NaXNjL0FDS1MKKysrIGIvTWlzYy9BQ0tTCkBAIC0xNjMsNiArMTYzLDcgQEAKIEplZmYgRXBsZXIKIFRvbSBFcHBlcmx5CiBTdG9mZmVsIEVyYXNtdXMKK0r8cmdlbiBBLiBFcmhhcmQKIE1pY2hhZWwgRXJuc3QKIEJlbiBFc2NvdG8KIEFuZHkgRXNraWxzc29uCmRpZmYgLS1naXQgYS9NaXNjL05FV1MgYi9NaXNjL05FV1MKaW5kZXggNGI1ZmFlMS4uZTQ4MzA5YyAxMDA2NDQKLS0tIGEvTWlzYy9ORVdTCisrKyBiL01pc2MvTkVXUwpAQCAtNDQsNiArNDQsOSBAQAogTGlicmFyeQogLS0tLS0tLQogCistIG5udHBsaWIgaGFzIHR3byBuZXcgbWV0aG9kczogZGVzY3JpcHRpb24gYW5kIGRlc2NyaXB0aW9ucy4gVGhleQorICB1c2UgYSBtb3JlIFJGQy1jb21wbGlhbnQgd2F5IG9mIGdldHRpbmcgYSBuZXdzZ3JvdXAgZGVzY3JpcHRpb24uCisKIC0gQnVnICM5OTMzOTQuICBGaXggYSBwb3NzaWJsZSByZWQgaGVycmluZyBvZiBLZXlFcnJvciBpbiAndGhyZWFkaW5nJyBiZWluZwogICByYWlzZWQgZHVyaW5nIGludGVycHJldGVyIHNodXRkb3duIGZyb20gYSByZWdpc3RlcmVkIGZ1bmN0aW9uIHdpdGggYXRleGl0CiAgIHdoZW4gZHVtbXlfdGhyZWFkaW5nIGlzIGJlaW5nIHVzZWQuCg==