ZGlmZiAtLWdpdCBhL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWhlYWRlcl9oYW5kbGVyLmFkYiBiL0FkYTk1L3NhbXBsZXMvc2FtcGxlLWhlYWRlcl9oYW5kbGVyLmFkYgppbmRleCBkMTk4ZDY2Li5mNTUyZTIwIDEwMDY0NAotLS0gYS9BZGE5NS9zYW1wbGVzL3NhbXBsZS1oZWFkZXJfaGFuZGxlci5hZGIKKysrIGIvQWRhOTUvc2FtcGxlcy9zYW1wbGUtaGVhZGVyX2hhbmRsZXIuYWRiCkBAIC03LDcgKzcsNyBAQAogLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBCIE8gRCBZICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tCiAtLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS0KIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLS0gQ29weXJpZ2h0IChjKSAxOTk4LTIwMDQsMjAwNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4gICAgICAgICAgICAgIC0tCistLSBDb3B5cmlnaHQgKGMpIDE5OTgtMjAxMSwyMDE0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiAgICAgICAgICAgICAgLS0KIC0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLQogLS0gUGVybWlzc2lvbiBpcyBoZXJlYnkgZ3JhbnRlZCwgZnJlZSBvZiBjaGFyZ2UsIHRvIGFueSBwZXJzb24gb2J0YWluaW5nIGEgIC0tCiAtLSBjb3B5IG9mIHRoaXMgc29mdHdhcmUgYW5kIGFzc29jaWF0ZWQgZG9jdW1lbnRhdGlvbiBmaWxlcyAodGhlICAgICAgICAgICAgLS0KQEAgLTM1LDE0ICszNSwxNiBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAtLSAgQXV0aG9yOiAgSnVlcmdlbiBQZmVpZmVyLCAxOTk2CiAtLSAgVmVyc2lvbiBDb250cm9sCi0tLSAgJFJldmlzaW9uOiAxLjE2ICQKLS0tICAkRGF0ZTogMjAwNi8wNi8yNSAxNDozMDoyMiAkCistLSAgJFJldmlzaW9uOiAxLjIwICQKKy0tICAkRGF0ZTogMjAxNC8wOS8xMyAxOToxMDoxOCAkCiAtLSAgQmluZGluZyBWZXJzaW9uIDAxLjAwCiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KIHdpdGggQWRhLkNhbGVuZGFyOyB1c2UgQWRhLkNhbGVuZGFyOwogd2l0aCBUZXJtaW5hbF9JbnRlcmZhY2UuQ3Vyc2VzLlRleHRfSU8uSW50ZWdlcl9JTzsKIHdpdGggU2FtcGxlLk1hbmlmZXN0OyB1c2UgU2FtcGxlLk1hbmlmZXN0OwogCitwcmFnbWEgRWxhYm9yYXRlX0FsbCAoVGVybWluYWxfSW50ZXJmYWNlLkN1cnNlcy5UZXh0X0lvLkludGVnZXJfSU8pOworCiAtLSAgVGhpcyBwYWNrYWdlIGhhbmRsZXMgdGhlIHBhaW50aW5nIG9mIHRoZSBoZWFkZXIgbGluZSBvZiB0aGUgc2NyZWVuLgogLS0KIHBhY2thZ2UgYm9keSBTYW1wbGUuSGVhZGVyX0hhbmRsZXIgaXMKQEAgLTY1LDcgKzY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ29sdW1ucyA6IENvbHVtbl9Db3VudCkgcmV0dXJuIEludGVnZXI7CiAgICBwcmFnbWEgQ29udmVudGlvbiAoQywgSW5pdF9IZWFkZXJfV2luZG93KTsKIAotICAgcHJvY2VkdXJlIEludGVybmFsX1VwZGF0ZV9IZWFkZXJfV2luZG93IChEb19VcGRhdGUgOiBpbiBCb29sZWFuKTsKKyAgIHByb2NlZHVyZSBJbnRlcm5hbF9VcGRhdGVfSGVhZGVyX1dpbmRvdyAoRG9fVXBkYXRlIDogQm9vbGVhbik7CiAKICAgIC0tICBUaGUgaW5pdGlhbGl6YXRpb24gbXVzdCBiZSBjYWxsZWQgYmVmb3JlIEluaXRfU2NyZWVuLiBJdCBzdGVhbHMgdHdvCiAgICAtLSAgbGluZXMgZnJvbSB0aGUgdG9wIG9mIHRoZSBzY3JlZW4uCkBAIC03NSwxMSArNzcsMTEgQEAKICAgICAgIFJpcF9PZmZfTGluZXMgKDIsIEluaXRfSGVhZGVyX1dpbmRvdydBY2Nlc3MpOwogICAgZW5kIEluaXRfSGVhZGVyX0hhbmRsZXI7CiAKLSAgIHByb2NlZHVyZSBOX091dCAoTiA6IGluIEludGVnZXIpOworICAgcHJvY2VkdXJlIE5fT3V0IChOIDogSW50ZWdlcik7CiAKICAgIC0tICBFbWl0IGEgdHdvIGRpZ2l0IG51bWJlciBhbmQgZW5zdXJlIHRoYXQgYSBsZWFkaW5nIHplcm8gaXMgZ2VuZXJhdGVkIGlmCiAgICAtLSAgbmVjZXNzYXJ5LgotICAgcHJvY2VkdXJlIE5fT3V0IChOIDogaW4gSW50ZWdlcikKKyAgIHByb2NlZHVyZSBOX091dCAoTiA6IEludGVnZXIpCiAgICBpcwogICAgYmVnaW4KICAgICAgIGlmIE4gPCAxMCB0aGVuCkBAIC05Miw3ICs5NCw3IEBACiAKICAgIC0tICBQYWludCB0aGUgaGVhZGVyIHdpbmRvdy4gVGhlIGlucHV0IHBhcmFtZXRlciBpcyBhIGZsYWcgaW5kaWNhdGluZwogICAgLS0gIHdoZXRoZXIgb3Igbm90IHRoZSBzY3JlZW4gc2hvdWxkIGJlIHVwZGF0ZWQgcGh5c2ljYWxseSBhZnRlciBwYWludGluZy4KLSAgIHByb2NlZHVyZSBJbnRlcm5hbF9VcGRhdGVfSGVhZGVyX1dpbmRvdyAoRG9fVXBkYXRlIDogaW4gQm9vbGVhbikKKyAgIHByb2NlZHVyZSBJbnRlcm5hbF9VcGRhdGVfSGVhZGVyX1dpbmRvdyAoRG9fVXBkYXRlIDogQm9vbGVhbikKICAgIGlzCiAgICAgICB0eXBlIE1vbnRoX05hbWVfQXJyYXkgaXMKICAgICAgICAgIGFycmF5IChNb250aF9OdW1iZXInRmlyc3QgLi4gTW9udGhfTnVtYmVyJ0xhc3QpIG9mIFN0cmluZyAoMSAuLiA5KTsKQEAgLTExOSw4ICsxMjEsMTEgQEAKICAgICAgIEQgICAgICA6IGNvbnN0YW50IERheV9OdW1iZXIgICA6PSBEYXkgKE5vdyk7CiAgICBiZWdpbgogICAgICAgaWYgSGVhZGVyX1dpbmRvdyAvPSBOdWxsX1dpbmRvdyB0aGVuCi0gICAgICAgICBpZiBNaW51dGUgLz0gRGlzcGxheV9NaW4gb3IgZWxzZSBIb3VyIC89IERpc3BsYXlfSG91cgotICAgICAgICAgICBvciBlbHNlIERpc3BsYXlfRGF5IC89IEQgb3IgZWxzZSBEaXNwbGF5X01vbnRoIC89IE1vbiB0aGVuCisgICAgICAgICBpZiBNaW51dGUgLz0gRGlzcGxheV9NaW4KKyAgICAgICAgICAgb3IgZWxzZSBIb3VyIC89IERpc3BsYXlfSG91cgorICAgICAgICAgICBvciBlbHNlIERpc3BsYXlfRGF5IC89IEQKKyAgICAgICAgICAgb3IgZWxzZSBEaXNwbGF5X01vbnRoIC89IE1vbgorICAgICAgICAgdGhlbgogICAgICAgICAgICAgTW92ZV9DdXJzb3IgKEhlYWRlcl9XaW5kb3csIDAsIDApOwogICAgICAgICAgICAgTl9PdXQgKEQpOyBBZGQgKEhlYWRlcl9XaW5kb3csICcuJyk7CiAgICAgICAgICAgICBBZGQgKEhlYWRlcl9XaW5kb3csIE1vbnRoX05hbWVzIChNb24pKTsKQEAgLTE2OSw3ICsxNzQsNyBAQAogICAgICAgICAgUG9zIDo9IENvbHVtbnMgLSBDb2x1bW5fUG9zaXRpb24gKFRpdGxlJ0xlbmd0aCk7CiAgICAgICAgICBBZGQgKFdpbiwgMCwgUG9zIC8gMiwgVGl0bGUpOwogICAgICAgICAgLS0gIEluIHRoaXMgcGhhc2Ugd2UgbXVzdCBub3QgYWxsb3cgYSBwaHlzaWNhbCB1cGRhdGUsIGJlY2F1c2UKLSAgICAgICAgIC0tICBuY3Vyc2VzIGlzbrR0IHByb3Blcmx5IGluaXRpYWxpemVkIGF0IHRoaXMgcG9pbnQuCisgICAgICAgICAtLSAgbmN1cnNlcyBpcyBub3QgcHJvcGVybHkgaW5pdGlhbGl6ZWQgYXQgdGhpcyBwb2ludC4KICAgICAgICAgIEludGVybmFsX1VwZGF0ZV9IZWFkZXJfV2luZG93IChGYWxzZSk7CiAgICAgICAgICByZXR1cm4gMDsKICAgICAgIGVsc2UK