ZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvYXV0aHovaW1wbC9wYWNrYWdlLmh0bWwgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL2F1dGh6L2ltcGwvcGFja2FnZS5odG1sCmluZGV4IGZhZTI3ZWUuLjBkMDUxZGIgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvYXV0aHovaW1wbC9wYWNrYWdlLmh0bWwKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9hdXRoei9pbXBsL3BhY2thZ2UuaHRtbApAQCAtMiw3ICsyLDcgQEAKICMgPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogIyAqIG9yZy5vbmFwLmRtYWFwDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSMgKiBDb3B5cmlnaHQgqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMgKiBDb3B5cmlnaHQg77+9IDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICMgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAjICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KQEAgLTI3LDcgKzI3LDcgQEAKIDxib2R5Pg0KIDxwPg0KIFRoaXMgcGFja2FnZSBwcm92aWRlcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgYXV0aG9yaXphdGlvbi1yZWxhdGVkIGludGVyZmFjZXMgDQotZGVmaW5lZCBieSB0aGUgPGNvZGU+Y29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLmF1dGh6PC9jb2RlPiBwYWNrYWdlLCBpbnRlbmRlZCBmb3INCitkZWZpbmVkIGJ5IHRoZSA8Y29kZT5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmF1dGh6PC9jb2RlPiBwYWNrYWdlLCBpbnRlbmRlZCBmb3INCiB1c2Ugd2l0aCB0aGUgcHJvdmlzaW9uaW5nIHNlcnZlciBmb3IgRGF0YSBSb3V0ZXIgUmVsZWFzZSAxLiAgIEluIERSIFIxLCB3ZSBkbyBub3QNCiBoYXZlIGFuIGV4dGVybmFsIHBvbGljeSBlbmdpbmUsIHNvIHRoaXMgaW1wbGVtZW50YXRpb24gcGVyZm9ybXMgdGhlIGF1dGhvcml6YXRpb24NCiBsb2NhbGx5Lg0KQEAgLTM1LDcgKzM1LDcgQEAKIDxwPg0KIEluIG9yZGVyIHRvIHBlcmZvcm0gdGhlIGF1dGhvcml6YXRpb24sIHRoaXMgcGFja2FnZSBuZWVkcyBhY2Nlc3MgdG8gcHJvdmlzaW9uaW5nIGRhdGEgDQogYWJvdXQgZmVlZHMgYW5kIHN1YnNjcmlwdGlvbnMuICBUaGlzIHBhY2thZ2UgZGVmaW5lcyBhbiBpbnRlcmZhY2UNCi0oPGNvZGU+Y29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLmF1dGh6LmltcGwuUHJvdkRhdGFQcm92aWRlcjwvY29kZT4pIHRocm91Z2ggd2hpY2ggaXQNCisoPGNvZGU+b3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5hdXRoei5pbXBsLlByb3ZEYXRhUHJvdmlkZXI8L2NvZGU+KSB0aHJvdWdoIHdoaWNoIGl0DQogZXhwZWN0cyB0byBnZXQgdGhpcyBkYXRhLiAgIFRoZSBwcm92aXNpb25pbmcgc2VydmVyIGNvZGUgbXVzdCBwcm92aWRlIGFuIGltcGxlbWVudGF0aW9uDQogb2YgdGhpcyBpbnRlcmZhY2UuDQogPC9wPg0KQEAgLTQzLDE0ICs0MywxNCBAQAogQSBzb2Z0d2FyZSBjb21wb25lbnQgdGhhdCB3aXNoZXMgdG8gdXNlIHRoaXMgaW1wbGVtZW50YXRpb24gbXVzdDoNCiA8dWw+DQogPGxpPlByb3ZpZGUgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIA0KLTxjb2RlPmNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5hdXRoei5pbXBsLlByb3ZEYXRhUHJvdmlkZXI8L2NvZGU+DQorPGNvZGU+b3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5hdXRoei5pbXBsLlByb3ZEYXRhUHJvdmlkZXI8L2NvZGU+DQogaW50ZXJmYWNlLg0KIDwvbGk+DQogPGxpPg0KIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUgPGNvZGU+UHJvdkRhdGFQcm92aWRlcjwvY29kZT4gaW1wbGVtZW50YXRpb24uDQogPGxpPg0KIENyZWF0ZSBhbiBpbnN0YW5jZSBvZiB0aGUNCi08Y29kZT5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuYXV0aHouaW1wbC5Qcm92QXV0aG9yaXplcjwvY29kZT4NCis8Y29kZT5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmF1dGh6LmltcGwuUHJvdkF1dGhvcml6ZXI8L2NvZGU+DQogY2xhc3MgZGVmaW5lZCBpbiB0aGlzIHBhY2thZ2UsIHBhc3NpbmcgaXQgYW4gaW5zdGFuY2Ugb2YgdGhlIDxjb2RlPlByb3ZEYXRhUHJvdmlkZXI8L2NvZGU+DQogaW1wbGVtZW50YXRpb24uDQogPC9saT4NCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9CYXNlU2VydmxldC5qYXZhIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvQmFzZVNlcnZsZXQuamF2YQppbmRleCA0NWQ5NzQ4Li5mYjEzZjVkIDEwMDY0NAotLS0gYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9CYXNlU2VydmxldC5qYXZhCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL0Jhc2VTZXJ2bGV0LmphdmEKQEAgLTQ4NCwxMSArNDg0LDExIEBACiAJcHJpdmF0ZSB2b2lkIGNoZWNrSHR0cHNSZWxheGF0aW9uKCkgew0KIAkJaWYobWFpbFNlbmRGbGFnID09IGZhbHNlKSB7DQogCQkJUHJvcGVydGllcyBwID0gKG5ldyBEQigpKS5nZXRQcm9wZXJ0aWVzKCk7DQotCQkJaW50bG9nZ2VyLmluZm8oIkhUVFBTIHJlbGF4YXRpbzogIitwLmdldCgiY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucmVsYXhhdGlvbiIpKTsNCisJCQlpbnRsb2dnZXIuaW5mbygiSFRUUFMgcmVsYXhhdGlvOiAiK3AuZ2V0KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucmVsYXhhdGlvbiIpKTsNCiAJCQkNCi0JCQlpZihwLmdldCgiY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucmVsYXhhdGlvbiIpLmVxdWFscygidHJ1ZSIpKSB7DQorCQkJaWYocC5nZXQoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5yZWxheGF0aW9uIikuZXF1YWxzKCJ0cnVlIikpIHsNCiAJCQkgICAgdHJ5IHsNCi0JCQkgICAgCSAgbm90aWZ5UFNUZWFtKHAuZ2V0KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5yZWxheC5ub3RpZnkiKS50b1N0cmluZygpKTsNCisJCQkgICAgCSAgbm90aWZ5UFNUZWFtKHAuZ2V0KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucmVsYXgubm90aWZ5IikudG9TdHJpbmcoKSk7DQogCQkJICAgIH0gDQogCQkJCWNhdGNoIChFeGNlcHRpb24gZSkgew0KIAkJCQkgICAgZS5wcmludFN0YWNrVHJhY2UoKTsNCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9JbnRlcm5hbFNlcnZsZXQuamF2YSBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL0ludGVybmFsU2VydmxldC5qYXZhCmluZGV4IGJlYzU4Y2MuLjE0Yzk2MGMgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL0ludGVybmFsU2VydmxldC5qYXZhCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL0ludGVybmFsU2VydmxldC5qYXZhCkBAIC0yNTYsNyArMjU2LDcgQEAKIAkJfQ0KIAkJaWYgKHBhdGguc3RhcnRzV2l0aCgiL2xvZ3MvIikpIHsNCiAJCQlQcm9wZXJ0aWVzIHAgPSAobmV3IERCKCkpLmdldFByb3BlcnRpZXMoKTsNCi0JCQlTdHJpbmcgbG9nZGlyID0gcC5nZXRQcm9wZXJ0eSgiY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuYWNjZXNzbG9nLmRpciIpOw0KKwkJCVN0cmluZyBsb2dkaXIgPSBwLmdldFByb3BlcnR5KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuYWNjZXNzbG9nLmRpciIpOw0KIAkJCVN0cmluZyBsb2dmaWxlID0gcGF0aC5zdWJzdHJpbmcoNik7DQogCQkJaWYgKGxvZ2RpciAhPSBudWxsICYmIGxvZ2ZpbGUgIT0gbnVsbCAmJiBsb2dmaWxlLmluZGV4T2YoJy8nKSA8IDApIHsNCiAJCQkJRmlsZSBsb2cgPSBuZXcgRmlsZShsb2dkaXIgKyAiLyIgKyBsb2dmaWxlKTsNCkBAIC0zOTksNyArMzk5LDcgQEAKIAkJCQlldmVudGxvZ2dlci5pbmZvKGVscik7DQogCQkJCXJldHVybjsNCiAJCQl9DQotCQkJU3RyaW5nIHNwb29sZGlyID0gKG5ldyBEQigpKS5nZXRQcm9wZXJ0aWVzKCkuZ2V0UHJvcGVydHkoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLnNwb29sZGlyIik7DQorCQkJU3RyaW5nIHNwb29sZGlyID0gKG5ldyBEQigpKS5nZXRQcm9wZXJ0aWVzKCkuZ2V0UHJvcGVydHkoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5zcG9vbGRpciIpOw0KIAkJCVN0cmluZyBzcG9vbG5hbWUgPSBTdHJpbmcuZm9ybWF0KCIlZC0lZC0iLCBTeXN0ZW0uY3VycmVudFRpbWVNaWxsaXMoKSwgVGhyZWFkLmN1cnJlbnRUaHJlYWQoKS5nZXRJZCgpKTsNCiAJCQlzeW5jaHJvbml6ZWQgKGxvZ3NlcSkgew0KIAkJCQkvLyBwZXJoYXBzIHVubmVjZXNzYXJ5LCBidXQgaXQgaGVscHMgbWFrZSB0aGUgbmFtZSB1bmlxdWUNCkBAIC00ODcsNyArNDg3LDcgQEAKIAlwcml2YXRlIEpTT05BcnJheSBnZW5lcmF0ZUxvZ2ZpbGVMaXN0KCkgew0KIAkJSlNPTkFycmF5IGphID0gbmV3IEpTT05BcnJheSgpOw0KIAkJUHJvcGVydGllcyBwID0gKG5ldyBEQigpKS5nZXRQcm9wZXJ0aWVzKCk7DQotCQlTdHJpbmcgcyA9IHAuZ2V0UHJvcGVydHkoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmFjY2Vzc2xvZy5kaXIiKTsNCisJCVN0cmluZyBzID0gcC5nZXRQcm9wZXJ0eSgib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmFjY2Vzc2xvZy5kaXIiKTsNCiAJCWlmIChzICE9IG51bGwpIHsNCiAJCQlTdHJpbmdbXSBkaXJzID0gcy5zcGxpdCgiLCIpOw0KIAkJCWZvciAoU3RyaW5nIGRpciA6IGRpcnMpIHsNCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9NYWluLmphdmEgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9NYWluLmphdmEKaW5kZXggZjVjOTNjNy4uNzBkYmQ0NCAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvTWFpbi5qYXZhCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL01haW4uamF2YQpAQCAtODIsMTEgKzgyLDExIEBACiBwdWJsaWMgY2xhc3MgTWFpbiB7DQogCS8qKiBUaGUgdHJ1c3RzdG9yZSB0byB1c2UgaWYgbm9uZSBpcyBzcGVjaWZpZWQgKi8NCiAJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgREVGQVVMVF9UUlVTVFNUT1JFICAgICAgICAgICA9ICIvb3B0L2phdmEvamRrL2pkazE4MC9qcmUvbGliL3NlY3VyaXR5L2NhY2VydHMiOw0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlTVE9SRV9UWVBFX1BST1BFUlRZICAgICAgID0gImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnR5cGUiOw0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlTVE9SRV9QQVRIX1BST1BFUlRZICAgICAgID0gImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnBhdGgiOw0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlTVE9SRV9QQVNTV09SRF9QUk9QRVJUWSAgID0gImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnBhc3N3b3JkIjsNCi0JcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJVU1RTVE9SRV9QQVRIX1BST1BFUlRZICAgICA9ICJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci50cnVzdHN0b3JlLnBhdGgiOw0KLQlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBUUlVTVFNUT1JFX1BBU1NXT1JEX1BST1BFUlRZID0gImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGFzc3dvcmQiOw0KKwlwdWJsaWMgc3RhdGljIGZpbmFsIFN0cmluZyBLRVlTVE9SRV9UWVBFX1BST1BFUlRZICAgICAgID0gIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXlzdG9yZS50eXBlIjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgS0VZU1RPUkVfUEFUSF9QUk9QRVJUWSAgICAgICA9ICJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIua2V5c3RvcmUucGF0aCI7DQorCXB1YmxpYyBzdGF0aWMgZmluYWwgU3RyaW5nIEtFWVNUT1JFX1BBU1NXT1JEX1BST1BFUlRZICAgPSAib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnBhc3N3b3JkIjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJVU1RTVE9SRV9QQVRIX1BST1BFUlRZICAgICA9ICJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoIjsNCisJcHVibGljIHN0YXRpYyBmaW5hbCBTdHJpbmcgVFJVU1RTVE9SRV9QQVNTV09SRF9QUk9QRVJUWSA9ICJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXNzd29yZCI7DQogDQogCS8qKiBUaGUgb25lIGFuZCBvbmx5IHtAbGluayBTZXJ2ZXJ9IGluc3RhbmNlIGluIHRoaXMgSlZNICovDQogCXByaXZhdGUgc3RhdGljIFNlcnZlciBzZXJ2ZXI7DQpAQCAtMTA4LDggKzEwOCw4IEBACiANCiAJCS8vIEdldCBwcm9wZXJ0aWVzDQogCQlQcm9wZXJ0aWVzIHAgPSAobmV3IERCKCkpLmdldFByb3BlcnRpZXMoKTsNCi0JCWludCBodHRwX3BvcnQgID0gSW50ZWdlci5wYXJzZUludChwLmdldFByb3BlcnR5KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwLnBvcnQiLCAiODA4MCIpKTsNCi0JCWludCBodHRwc19wb3J0ID0gSW50ZWdlci5wYXJzZUludChwLmdldFByb3BlcnR5KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5wb3J0IiwgIjg0NDMiKSk7DQorCQlpbnQgaHR0cF9wb3J0ICA9IEludGVnZXIucGFyc2VJbnQocC5nZXRQcm9wZXJ0eSgib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmh0dHAucG9ydCIsICI4MDgwIikpOw0KKwkJaW50IGh0dHBzX3BvcnQgPSBJbnRlZ2VyLnBhcnNlSW50KHAuZ2V0UHJvcGVydHkoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5wb3J0IiwgIjg0NDMiKSk7DQogDQogCQkvLyBIVFRQIGNvbm5lY3Rvcg0KIAkJU2VsZWN0Q2hhbm5lbENvbm5lY3RvciBodHRwID0gbmV3IFNlbGVjdENoYW5uZWxDb25uZWN0b3IoKTsNCkBAIC0xMzgsNyArMTM4LDcgQEAKIAkJY2Yuc2V0S2V5U3RvcmVUeXBlKHAuZ2V0UHJvcGVydHkoS0VZU1RPUkVfVFlQRV9QUk9QRVJUWSwgImprcyIpKTsNCiAJCWNmLnNldEtleVN0b3JlUGF0aChwLmdldFByb3BlcnR5KEtFWVNUT1JFX1BBVEhfUFJPUEVSVFkpKTsNCiAJCWNmLnNldEtleVN0b3JlUGFzc3dvcmQocC5nZXRQcm9wZXJ0eShLRVlTVE9SRV9QQVNTV09SRF9QUk9QRVJUWSkpOw0KLQkJY2Yuc2V0S2V5TWFuYWdlclBhc3N3b3JkKHAuZ2V0UHJvcGVydHkoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmtleW1hbmFnZXIucGFzc3dvcmQiKSk7DQorCQljZi5zZXRLZXlNYW5hZ2VyUGFzc3dvcmQocC5nZXRQcm9wZXJ0eSgib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmtleW1hbmFnZXIucGFzc3dvcmQiKSk7DQogCQlTdHJpbmcgdHMgPSBwLmdldFByb3BlcnR5KFRSVVNUU1RPUkVfUEFUSF9QUk9QRVJUWSk7DQogCQlpZiAodHMgIT0gbnVsbCAmJiB0cy5sZW5ndGgoKSA+IDApIHsNCiAJCQlTeXN0ZW0ub3V0LnByaW50bG4oIkBAIFRTIC0+ICIrdHMpOw0KQEAgLTE3Myw3ICsxNzMsNyBAQAogDQogCQkvLyBSZXF1ZXN0IGxvZyBjb25maWd1cmF0aW9uDQogCQlOQ1NBUmVxdWVzdExvZyBucmwgPSBuZXcgTkNTQVJlcXVlc3RMb2coKTsNCi0JCW5ybC5zZXRGaWxlbmFtZShwLmdldFByb3BlcnR5KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5hY2Nlc3Nsb2cuZGlyIikgKyAiL3JlcXVlc3QubG9nLnl5eXlfbW1fZGQiKTsNCisJCW5ybC5zZXRGaWxlbmFtZShwLmdldFByb3BlcnR5KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuYWNjZXNzbG9nLmRpciIpICsgIi9yZXF1ZXN0LmxvZy55eXl5X21tX2RkIik7DQogCQlucmwuc2V0RmlsZW5hbWVEYXRlRm9ybWF0KCJ5eXl5TU1kZCIpOw0KIAkJbnJsLnNldFJldGFpbkRheXMoOTApOw0KIAkJbnJsLnNldEFwcGVuZCh0cnVlKTsNCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9TeW5jaHJvbml6ZXJUYXNrLmphdmEgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9TeW5jaHJvbml6ZXJUYXNrLmphdmEKaW5kZXggYTg1YmZjOC4uMWU1NzUxYSAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvU3luY2hyb25pemVyVGFzay5qYXZhCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL1N5bmNocm9uaXplclRhc2suamF2YQpAQCAtMTMwLDcgKzEzMCw3IEBACiAJcHJpdmF0ZSBTeW5jaHJvbml6ZXJUYXNrKCkgew0KIAkJbG9nZ2VyID0gTG9nZ2VyLmdldExvZ2dlcigib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92aXNpb25pbmcuaW50ZXJuYWwiKTsNCiAJCXJvbGV4ID0gbmV3IFRpbWVyKCk7DQotCQlzcG9vbGRpciA9IChuZXcgREIoKSkuZ2V0UHJvcGVydGllcygpLmdldFByb3BlcnR5KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5zcG9vbGRpciIpOw0KKwkJc3Bvb2xkaXIgPSAobmV3IERCKCkpLmdldFByb3BlcnRpZXMoKS5nZXRQcm9wZXJ0eSgib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLnNwb29sZGlyIik7DQogCQlzdGF0ZSA9IFVOS05PV047DQogCQlkb0ZldGNoID0gdHJ1ZTsJCS8vIHN0YXJ0IG9mZiB3aXRoIGEgZmV0Y2gNCiAJCW5leHRzeW5jdGltZSA9IDA7DQpAQCAtMTcyLDcgKzE3Miw3IEBACiAJCQkvLyBSdW4gb25jZSBldmVyeSA1IHNlY29uZHMgdG8gY2hlY2sgRE5TLCBldGMuDQogCQkJbG9uZyBpbnRlcnZhbCA9IDA7DQogCQkJdHJ5IHsNCi0JCQkJU3RyaW5nIHMgPSBwcm9wcy5nZXRQcm9wZXJ0eSgiY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuc3luY19pbnRlcnZhbCIsICI1MDAwIik7DQorCQkJCVN0cmluZyBzID0gcHJvcHMuZ2V0UHJvcGVydHkoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5zeW5jX2ludGVydmFsIiwgIjUwMDAiKTsNCiAJCQkJaW50ZXJ2YWwgPSBMb25nLnBhcnNlTG9uZyhzKTsNCiAJCQl9IGNhdGNoIChOdW1iZXJGb3JtYXRFeGNlcHRpb24gZSkgew0KIAkJCQlpbnRlcnZhbCA9IDUwMDBMOw0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL2JlYW5zL0luZ3Jlc3NSb3V0ZS5qYXZhIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvYmVhbnMvSW5ncmVzc1JvdXRlLmphdmEKaW5kZXggMDU2Yzc2OS4uMzlkODU5ZCAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvYmVhbnMvSW5ncmVzc1JvdXRlLmphdmEKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvYmVhbnMvSW5ncmVzc1JvdXRlLmphdmEKQEAgLTMwMiw3ICszMDIsNyBAQAogDQogCS8qKg0KIAkgKglDb21wYXJlIElQIGFkZHJlc3NlcyBhcyBieXRlIGFycmF5cyB0byBhIHN1Ym5ldCBzcGVjaWZpZWQgYXMgYSBDSURSLg0KLQkgKiAgVGFrZW4gZnJvbSBjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIubm9kZS5TdWJuZXRNYXRjaGVyIGFuZCBtb2RpZmllZCBzb21ld2hhdC4NCisJICogIFRha2VuIGZyb20gb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5ub2RlLlN1Ym5ldE1hdGNoZXIgYW5kIG1vZGlmaWVkIHNvbWV3aGF0Lg0KIAkgKi8NCiAJcHVibGljIGNsYXNzIFN1Ym5ldE1hdGNoZXIgew0KIAkJcHJpdmF0ZSBieXRlW10Jc247DQpkaWZmIC0tZ2l0IGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvYmVhbnMvU3Vic2NyaXB0aW9uLmphdmEgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9iZWFucy9TdWJzY3JpcHRpb24uamF2YQppbmRleCA3ZTlmMmNhLi40MDg0Zjc0IDEwMDY0NAotLS0gYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9iZWFucy9TdWJzY3JpcHRpb24uamF2YQorKysgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9iZWFucy9TdWJzY3JpcHRpb24uamF2YQpAQCAtMjEzLDcgKzIxMyw3IEBACiAJCQkNCiAJCQkvL0RhdGEgUm91dGVyIFN1YnNjcmliZXIgSFRUUFMgUmVsYXhhdGlvbiBmZWF0dXJlIFVTRVJTVE9SWUlEOlVTNjc0MDQ3Lg0KIAkJCVByb3BlcnRpZXMgcCA9IChuZXcgREIoKSkuZ2V0UHJvcGVydGllcygpOw0KLQkJCWlmKHAuZ2V0KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5yZWxheGF0aW9uIikudG9TdHJpbmcoKS5lcXVhbHMoImZhbHNlIikgJiYgIWpvLmhhcygic3luYyIpKSB7DQorCQkJaWYocC5nZXQoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5yZWxheGF0aW9uIikudG9TdHJpbmcoKS5lcXVhbHMoImZhbHNlIikgJiYgIWpvLmhhcygic3luYyIpKSB7DQogCQkJCWlmICghdXJsLnN0YXJ0c1dpdGgoImh0dHBzOi8vIikpDQogCQkJCQl0aHJvdyBuZXcgSW52YWxpZE9iamVjdEV4Y2VwdGlvbigiZGVsaXZlcnkgVVJMIGlzIG5vdCBIVFRQUyIpOw0KIAkJCX0NCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9wYWNrYWdlLmh0bWwgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy9wYWNrYWdlLmh0bWwKaW5kZXggN2IwMDkzMS4uMTEzYjFjYyAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvcGFja2FnZS5odG1sCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL3BhY2thZ2UuaHRtbApAQCAtMiw3ICsyLDcgQEAKICMgPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogIyAqIG9yZy5vbmFwLmRtYWFwDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSMgKiBDb3B5cmlnaHQgqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMgKiBDb3B5cmlnaHQg77+9IDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICMgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAjICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KQEAgLTM5LDcgKzM5LDcgQEAKIDx0cj4NCiAJPHRkIGNsYXNzPSJjb2xGaXJzdCIgY2xhc3M9ImNvbE9uZSI+LzwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sT25lIiBjbGFzcz0iY29sT25lIj4mbHQ7ZHJGZWVkc1VybCZndDs8L3RkPg0KLQk8dGQgY2xhc3M9ImNvbExhc3QiIGNsYXNzPSJjb2xPbmUiPntAbGluayBjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLkRSRmVlZHNTZXJ2bGV0fTwvdGQ+DQorCTx0ZCBjbGFzcz0iY29sTGFzdCIgY2xhc3M9ImNvbE9uZSI+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLkRSRmVlZHNTZXJ2bGV0fTwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgY2xhc3M9ImNvbE9uZSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHBpbmsiPkRFTEVURTwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgY2xhc3M9ImNvbE9uZSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW4iPkdFVDwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgY2xhc3M9ImNvbE9uZSIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW4iPlBPU1Q8L3RkPg0KQEAgLTQ4LDcgKzQ4LDcgQEAKIDx0ciBjbGFzcz0iYWx0Q29sb3IiPg0KIAk8dGQgY2xhc3M9ImNvbEZpcnN0IiBjbGFzcz0iY29sT25lIj4vZmVlZC9mZWVkaWQ8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbE9uZSIgY2xhc3M9ImNvbE9uZSI+Jmx0O2ZlZWRVcmwmZ3Q7PC90ZD4NCi0JPHRkIGNsYXNzPSJjb2xMYXN0IiBjbGFzcz0iY29sT25lIj57QGxpbmsgY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5GZWVkU2VydmxldH08L3RkPg0KKwk8dGQgY2xhc3M9ImNvbExhc3QiIGNsYXNzPSJjb2xPbmUiPntAbGluayBvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5GZWVkU2VydmxldH08L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5ERUxFVEU8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5HRVQ8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBwaW5rIj5QT1NUPC90ZD4NCkBAIC01Nyw3ICs1Nyw3IEBACiA8dHI+DQogCTx0ZCBjbGFzcz0iY29sRmlyc3QiPi9wdWJsaXNoL2ZlZWRpZDwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sT25lIj4mbHQ7cHVibGlzaFVybCZndDs8L3RkPg0KLQk8dGQgY2xhc3M9ImNvbExhc3QiPntAbGluayBjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLlB1Ymxpc2hTZXJ2bGV0fTwvdGQ+DQorCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLlB1Ymxpc2hTZXJ2bGV0fTwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW4iPkRFTEVURTwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW4iPkdFVDwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW4iPlBPU1Q8L3RkPg0KQEAgLTY2LDcgKzY2LDcgQEAKIDx0ciBjbGFzcz0iYWx0Q29sb3IiPg0KIAk8dGQgY2xhc3M9ImNvbEZpcnN0Ij4vc3Vic2NyaWJlL2ZlZWRpZDwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sT25lIj4mbHQ7c3Vic2NyaWJlVXJsJmd0OzwvdGQ+DQotCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92aXNpb25pbmcuU3Vic2NyaWJlU2VydmxldH08L3RkPg0KKwk8dGQgY2xhc3M9ImNvbExhc3QiPntAbGluayBvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5TdWJzY3JpYmVTZXJ2bGV0fTwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IHBpbmsiPkRFTEVURTwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW4iPkdFVDwvdGQ+DQogCTx0ZCBjbGFzcz0iY29sTGFzdCIgc3R5bGU9ImJhY2tncm91bmQtY29sb3I6IGxpZ2h0Z3JlZW4iPlBPU1Q8L3RkPg0KQEAgLTc1LDcgKzc1LDcgQEAKIDx0cj4NCiAJPHRkIGNsYXNzPSJjb2xGaXJzdCI+L2ZlZWRsb2cvZmVlZGlkPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xPbmUiPiZsdDtmZWVkTG9nVXJsJmd0OzwvdGQ+DQotCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92aXNpb25pbmcuRmVlZExvZ1NlcnZsZXR9PC90ZD4NCisJPHRkIGNsYXNzPSJjb2xMYXN0Ij57QGxpbmsgb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92aXNpb25pbmcuRmVlZExvZ1NlcnZsZXR9PC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcGluayI+REVMRVRFPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbiI+R0VUPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcGluayI+UE9TVDwvdGQ+DQpAQCAtODQsNyArODQsNyBAQAogPHRyIGNsYXNzPSJhbHRDb2xvciI+DQogCTx0ZCBjbGFzcz0iY29sRmlyc3QiPi9zdWJzL3N1YmlkPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xPbmUiPiZsdDtzdWJzY3JpcHRpb25VcmwmZ3Q7PC90ZD4NCi0JPHRkIGNsYXNzPSJjb2xMYXN0Ij57QGxpbmsgY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5TdWJzY3JpcHRpb25TZXJ2bGV0fTwvdGQ+DQorCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLlN1YnNjcmlwdGlvblNlcnZsZXR9PC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbiI+REVMRVRFPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbiI+R0VUPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbiI+UE9TVDwvdGQ+DQpAQCAtOTMsNyArOTMsNyBAQAogPHRyPg0KIAk8dGQgY2xhc3M9ImNvbEZpcnN0Ij4vc3VibG9nL3N1YmlkPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xPbmUiPiZsdDtzdWJMb2dVcmwmZ3Q7PC90ZD4NCi0JPHRkIGNsYXNzPSJjb2xMYXN0Ij57QGxpbmsgY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5TdWJMb2dTZXJ2bGV0fTwvdGQ+DQorCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLlN1YkxvZ1NlcnZsZXR9PC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcGluayI+REVMRVRFPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogbGlnaHRncmVlbiI+R0VUPC90ZD4NCiAJPHRkIGNsYXNzPSJjb2xMYXN0IiBzdHlsZT0iYmFja2dyb3VuZC1jb2xvcjogcGluayI+UE9TVDwvdGQ+DQpAQCAtMTAyLDcgKzEwMiw3IEBACiA8dHIgY2xhc3M9ImFsdENvbG9yIj4NCiAJPHRkIGNsYXNzPSJjb2xGaXJzdCI+L2ludGVybmFsLyo8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbE9uZSI+Jmx0O2ludGVybmFsVXJsJmd0OzwvdGQ+DQotCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92aXNpb25pbmcuSW50ZXJuYWxTZXJ2bGV0fTwvdGQ+DQorCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLkludGVybmFsU2VydmxldH08L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5ERUxFVEU8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5HRVQ8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5QT1NUPC90ZD4NCkBAIC0xMTEsNyArMTExLDcgQEAKIDx0cj4NCiAJPHRkIGNsYXNzPSJjb2xGaXJzdCI+L2ludGVybmFsL3JvdXRlLyo8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbE9uZSI+Jmx0O3JvdXRlVXJsJmd0OzwvdGQ+DQotCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92aXNpb25pbmcuUm91dGVTZXJ2bGV0fTwvdGQ+DQorCTx0ZCBjbGFzcz0iY29sTGFzdCI+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLlJvdXRlU2VydmxldH08L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5ERUxFVEU8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5HRVQ8L3RkPg0KIAk8dGQgY2xhc3M9ImNvbExhc3QiIHN0eWxlPSJiYWNrZ3JvdW5kLWNvbG9yOiBsaWdodGdyZWVuIj5QT1NUPC90ZD4NCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy91dGlscy9EQi5qYXZhIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvdXRpbHMvREIuamF2YQppbmRleCAxZjU1OGVjLi4wMTYwNTcxIDEwMDY0NAotLS0gYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy91dGlscy9EQi5qYXZhCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL3V0aWxzL0RCLmphdmEKQEAgLTgzLDEyICs4MywxMiBAQAogCQkJSW5wdXRTdHJlYW0gaW5TdHJlYW0gPSBnZXRDbGFzcygpLmdldENsYXNzTG9hZGVyKCkuZ2V0UmVzb3VyY2VBc1N0cmVhbShDT05GSUdfRklMRSk7DQogCQkJdHJ5IHsNCiAJCQkJcHJvcHMubG9hZChpblN0cmVhbSk7DQotCQkJCURCX0RSSVZFUiAgID0gKFN0cmluZykgcHJvcHMuZ2V0KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuZGIuZHJpdmVyIik7DQotCQkJCURCX1VSTCAgICAgID0gKFN0cmluZykgcHJvcHMuZ2V0KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuZGIudXJsIik7DQotCQkJCURCX0xPR0lOICAgID0gKFN0cmluZykgcHJvcHMuZ2V0KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuZGIubG9naW4iKTsNCi0JCQkJREJfUEFTU1dPUkQgPSAoU3RyaW5nKSBwcm9wcy5nZXQoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5kYi5wYXNzd29yZCIpOw0KLQkJCQlIVFRQU19QT1JUID0gKFN0cmluZykgcHJvcHMuZ2V0KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5wb3J0Iik7DQotCQkJCUhUVFBfUE9SVCA9IChTdHJpbmcpIHByb3BzLmdldCgiY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cC5wb3J0Iik7DQorCQkJCURCX0RSSVZFUiAgID0gKFN0cmluZykgcHJvcHMuZ2V0KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmRiLmRyaXZlciIpOw0KKwkJCQlEQl9VUkwgICAgICA9IChTdHJpbmcpIHByb3BzLmdldCgib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5kYi51cmwiKTsNCisJCQkJREJfTE9HSU4gICAgPSAoU3RyaW5nKSBwcm9wcy5nZXQoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIuZGIubG9naW4iKTsNCisJCQkJREJfUEFTU1dPUkQgPSAoU3RyaW5nKSBwcm9wcy5nZXQoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIuZGIucGFzc3dvcmQiKTsNCisJCQkJSFRUUFNfUE9SVCA9IChTdHJpbmcpIHByb3BzLmdldCgib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmh0dHBzLnBvcnQiKTsNCisJCQkJSFRUUF9QT1JUID0gKFN0cmluZykgcHJvcHMuZ2V0KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cC5wb3J0Iik7DQogCQkJCUNsYXNzLmZvck5hbWUoREJfRFJJVkVSKTsNCiAJCQl9IGNhdGNoIChJT0V4Y2VwdGlvbiBlKSB7DQogCQkJCWludGxvZ2dlci5mYXRhbCgiUFJPVjkwMDMgT3BlbmluZyBwcm9wZXJ0aWVzOiAiK2UuZ2V0TWVzc2FnZSgpKTsNCkBAIC02NzEsMTMgKzY3MSwxMyBAQAogCX0NCiAJLyoqDQogCSAqIEluaXRpYWxpemUgdGhlIHRhYmxlcyBieSBydW5uaW5nIHRoZSBpbml0aWFsaXphdGlvbiBzY3JpcHRzIGxvY2F0ZWQgaW4gdGhlIGRpcmVjdG9yeSBzcGVjaWZpZWQNCi0JICogYnkgdGhlIHByb3BlcnR5IDxpPmNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmRic2NyaXB0czwvaT4uICBTY3JpcHRzIGhhdmUgbmFtZXMgb2YNCisJICogYnkgdGhlIHByb3BlcnR5IDxpPm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5kYnNjcmlwdHM8L2k+LiAgU2NyaXB0cyBoYXZlIG5hbWVzIG9mDQogCSAqIHRoZSBmb3JtIG15c3FsX2luaXRfTk5OTi4NCiAJICogQHBhcmFtIGMgYSBEQiBjb25uZWN0aW9uDQogCSAqIEBwYXJhbSBuIHRoZSBudW1iZXIgb2YgdGhlIG15c3FsX2luaXRfTk5OTiBzY3JpcHQgdG8gcnVuDQogCSAqLw0KIAlwcml2YXRlIHZvaWQgcnVuSW5pdFNjcmlwdChDb25uZWN0aW9uIGMsIGludCBuKSB7DQotCQlTdHJpbmcgc2NyaXB0ZGlyID0gKFN0cmluZykgcHJvcHMuZ2V0KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5kYnNjcmlwdHMiKTsNCisJCVN0cmluZyBzY3JpcHRkaXIgPSAoU3RyaW5nKSBwcm9wcy5nZXQoIm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5kYnNjcmlwdHMiKTsNCiAJCVN0cmluZ0J1aWxkZXIgc2IgPSBuZXcgU3RyaW5nQnVpbGRlcigpOw0KIAkJdHJ5IHsNCiAJCQlTdHJpbmcgc2NyaXB0ZmlsZSA9IFN0cmluZy5mb3JtYXQoIiVzL215c3FsX2luaXRfJTA0ZCIsIHNjcmlwdGRpciwgbik7DQpkaWZmIC0tZ2l0IGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvdXRpbHMvRFJSb3V0ZUNMSS5qYXZhIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvdXRpbHMvRFJSb3V0ZUNMSS5qYXZhCmluZGV4IDRjOThmOGUuLmEzZjRiMzIgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL3V0aWxzL0RSUm91dGVDTEkuamF2YQorKysgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy91dGlscy9EUlJvdXRlQ0xJLmphdmEKQEAgLTExMyw4ICsxMTMsOCBAQAogCQl0aGlzLmh0dHBjbGllbnQgPSBuZXcgRGVmYXVsdEh0dHBDbGllbnQoKTsNCiANCiAJCVByb3BlcnRpZXMgcCA9IChuZXcgREIoKSkuZ2V0UHJvcGVydGllcygpOw0KLQkJU3RyaW5nIHRydXN0c3RvcmVfZmlsZSA9IHAuZ2V0UHJvcGVydHkoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGF0aCIpOw0KLQkJU3RyaW5nIHRydXN0c3RvcmVfcHcgICA9IHAuZ2V0UHJvcGVydHkoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGFzc3dvcmQiKTsNCisJCVN0cmluZyB0cnVzdHN0b3JlX2ZpbGUgPSBwLmdldFByb3BlcnR5KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoIik7DQorCQlTdHJpbmcgdHJ1c3RzdG9yZV9wdyAgID0gcC5nZXRQcm9wZXJ0eSgib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGFzc3dvcmQiKTsNCiANCiAJCUtleVN0b3JlIHRydXN0U3RvcmUgPSBLZXlTdG9yZS5nZXRJbnN0YW5jZShLZXlTdG9yZS5nZXREZWZhdWx0VHlwZSgpKTsNCiAJCWlmICh0cnVzdHN0b3JlX2ZpbGUgPT0gbnVsbCB8fCB0cnVzdHN0b3JlX2ZpbGUuZXF1YWxzKCIiKSkgew0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL3V0aWxzL0xvZ2ZpbGVMb2FkZXIuamF2YSBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL3V0aWxzL0xvZ2ZpbGVMb2FkZXIuamF2YQppbmRleCBiMTliZWUxLi44MzBlMjFjIDEwMDY0NAotLS0gYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3Byb3Zpc2lvbmluZy91dGlscy9Mb2dmaWxlTG9hZGVyLmphdmEKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvdXRpbHMvTG9nZmlsZUxvYWRlci5qYXZhCkBAIC0xMDcsNyArMTA3LDcgQEAKIAlwcml2YXRlIExvZ2ZpbGVMb2FkZXIoKSB7DQogCQl0aGlzLmxvZ2dlciAgID0gTG9nZ2VyLmdldExvZ2dlcigib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92aXNpb25pbmcuaW50ZXJuYWwiKTsNCiAJCXRoaXMuZGIgICAgICAgPSBuZXcgREIoKTsNCi0JCXRoaXMuc3Bvb2xkaXIgPSBkYi5nZXRQcm9wZXJ0aWVzKCkuZ2V0UHJvcGVydHkoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLnNwb29sZGlyIik7DQorCQl0aGlzLnNwb29sZGlyID0gZGIuZ2V0UHJvcGVydGllcygpLmdldFByb3BlcnR5KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuc3Bvb2xkaXIiKTsNCiAJCXRoaXMuc2V0X3N0YXJ0ID0gZ2V0SWRSYW5nZSgpOw0KIAkJdGhpcy5zZXRfZW5kICAgPSBzZXRfc3RhcnQgKyBTRVRfU0laRSAtIDE7DQogCQl0aGlzLnNlcV9zZXQgID0gbmV3IFJMRUJpdFNldCgpOw0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcHJvdmlzaW9uaW5nL3V0aWxzL1B1cmdlTG9nRGlyVGFzay5qYXZhIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvdXRpbHMvUHVyZ2VMb2dEaXJUYXNrLmphdmEKaW5kZXggNWE1ZDU1MC4uOGNmY2U1YyAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvdXRpbHMvUHVyZ2VMb2dEaXJUYXNrLmphdmEKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9wcm92aXNpb25pbmcvdXRpbHMvUHVyZ2VMb2dEaXJUYXNrLmphdmEKQEAgLTMwLDcgKzMwLDcgQEAKIA0KIC8qKg0KICAqIFRoaXMgY2xhc3MgcHJvdmlkZXMgYSB7QGxpbmsgVGltZXJUYXNrfSB0aGF0IHB1cmdlcyBvbGQgbG9nZmlsZXMNCi0gKiAob2xkZXIgdGhhbiB0aGUgbnVtYmVyIG9mIGRheXMgc3BlY2lmaWVkIGJ5IHRoZSBjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5sb2dyZXRlbnRpb24gcHJvcGVydHkpLg0KKyAqIChvbGRlciB0aGFuIHRoZSBudW1iZXIgb2YgZGF5cyBzcGVjaWZpZWQgYnkgdGhlIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5sb2dyZXRlbnRpb24gcHJvcGVydHkpLg0KICAqIEBhdXRob3IgUm9iZXJ0IEVieQ0KICAqIEB2ZXJzaW9uICRJZDogUHVyZ2VMb2dEaXJUYXNrLmphdmEsdiAxLjIgMjAxMy8wNy8wNSAxMzo0ODowNSBlYnkgRXhwICQNCiAgKi8NCkBAIC00Miw4ICs0Miw4IEBACiANCiAJcHVibGljIFB1cmdlTG9nRGlyVGFzaygpIHsNCiAJCVByb3BlcnRpZXMgcCA9IChuZXcgREIoKSkuZ2V0UHJvcGVydGllcygpOw0KLQkJbG9nZGlyICAgPSBwLmdldFByb3BlcnR5KCJjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5hY2Nlc3Nsb2cuZGlyIik7DQotCQlTdHJpbmcgcyA9IHAuZ2V0UHJvcGVydHkoImNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmxvZ3JldGVudGlvbiIsICIzMCIpOw0KKwkJbG9nZGlyICAgPSBwLmdldFByb3BlcnR5KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuYWNjZXNzbG9nLmRpciIpOw0KKwkJU3RyaW5nIHMgPSBwLmdldFByb3BlcnR5KCJvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIubG9ncmV0ZW50aW9uIiwgIjMwIik7DQogCQlsb25nIG4gPSAzMDsNCiAJCXRyeSB7DQogCQkJbiA9IExvbmcucGFyc2VMb25nKHMpOw0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcmVwb3J0cy9wYWNrYWdlLmh0bWwgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vamF2YS9vcmcvb25hcC9kbWFhcC9kYXRhcm91dGVyL3JlcG9ydHMvcGFja2FnZS5odG1sCmluZGV4IDJjMmQyNmIuLjg4YzNkNWUgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9qYXZhL29yZy9vbmFwL2RtYWFwL2RhdGFyb3V0ZXIvcmVwb3J0cy9wYWNrYWdlLmh0bWwKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL2phdmEvb3JnL29uYXAvZG1hYXAvZGF0YXJvdXRlci9yZXBvcnRzL3BhY2thZ2UuaHRtbApAQCAtMiw3ICsyLDcgQEAKICMgPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogIyAqIG9yZy5vbmFwLmRtYWFwDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSMgKiBDb3B5cmlnaHQgqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMgKiBDb3B5cmlnaHQg77+9IDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICMgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAjICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KQEAgLTMzLDExICszMywxMSBAQAogPC9wPg0KIDx0YWJsZT4NCiA8dHI+PHRoPkNsYXNzPC90aD48dGg+UmVwb3J0PC90aD48L3RyPg0KLTx0cj48dGQ+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5yZXBvcnRzLkRhaWx5TGF0ZW5jeVJlcG9ydH08L3RkPjx0ZD5kYWlseWxhdGVuY3kuY3N2PC90ZD48L3RyPg0KLTx0cj48dGQ+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5yZXBvcnRzLkZlZWRSZXBvcnR9PC90ZD48dGQ+Tk9UIENVUlJFTlRMWSBVU0VEPC90ZD48L3RyPg0KLTx0cj48dGQ+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5yZXBvcnRzLkxhdGVuY3lSZXBvcnR9PC90ZD48dGQ+PC90ZD48L3RyPg0KLTx0cj48dGQ+e0BsaW5rIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5yZXBvcnRzLlN1YnNjcmliZXJSZXBvcnR9PC90ZD48dGQ+c3Vic2NyaWJlci5jc3Y8L3RkPjwvdHI+DQotPHRyPjx0ZD57QGxpbmsgY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnJlcG9ydHMuVm9sdW1lUmVwb3J0fTwvdGQ+PHRkPnZvbHVtZXMuY3N2PC90ZD48L3RyPg0KKzx0cj48dGQ+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucmVwb3J0cy5EYWlseUxhdGVuY3lSZXBvcnR9PC90ZD48dGQ+ZGFpbHlsYXRlbmN5LmNzdjwvdGQ+PC90cj4NCis8dHI+PHRkPntAbGluayBvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnJlcG9ydHMuRmVlZFJlcG9ydH08L3RkPjx0ZD5OT1QgQ1VSUkVOVExZIFVTRUQ8L3RkPjwvdHI+DQorPHRyPjx0ZD57QGxpbmsgb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5yZXBvcnRzLkxhdGVuY3lSZXBvcnR9PC90ZD48dGQ+PC90ZD48L3RyPg0KKzx0cj48dGQ+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucmVwb3J0cy5TdWJzY3JpYmVyUmVwb3J0fTwvdGQ+PHRkPnN1YnNjcmliZXIuY3N2PC90ZD48L3RyPg0KKzx0cj48dGQ+e0BsaW5rIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucmVwb3J0cy5Wb2x1bWVSZXBvcnR9PC90ZD48dGQ+dm9sdW1lcy5jc3Y8L3RkPjwvdHI+DQogPC90YWJsZT4NCiA8L2JvZHk+DQogPC9odG1sPg0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvZG9ja2VyLWNvbXBvc2UvZG9ja2VyLWNvbXBvc2UueW1sIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9kb2NrZXItY29tcG9zZS9kb2NrZXItY29tcG9zZS55bWwKaW5kZXggNGUyYTgxYS4uMWMzM2UzYiAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9kb2NrZXItY29tcG9zZS9kb2NrZXItY29tcG9zZS55bWwKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9kb2NrZXItY29tcG9zZS9kb2NrZXItY29tcG9zZS55bWwKQEAgLTIwLDEwICsyMCwxMCBAQAogIyAqIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuDQogIyAqDQogIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0NCi12ZXJzaW9uOiAnMicNCit2ZXJzaW9uOiAnMi4xJw0KIHNlcnZpY2VzOiANCiAgIGRhdGFyb3V0ZXItcHJvdjoNCi0gICAgaW1hZ2U6IGF0dG9zL2RhdGFyb3V0ZXItcHJvdg0KKyAgICBpbWFnZTogb25hcC9kbWFhcC9kYXRhcm91dGVyLXByb3YNCiAgICAgY29udGFpbmVyX25hbWU6IGRhdGFyb3V0ZXItcHJvdg0KICAgICBob3N0bmFtZTogcHJvdi5kYXRhcm91dGVybmV3LmNvbQ0KICAgICBwb3J0czoNCkBAIC0zNiwxMyArMzYsMTMgQEAKICMgICAgICAtIC4vcHJvdl9kYXRhL2FkZEZlZWQzLnR4dDovb3B0L2FwcC9kYXRhcnRyL2FkZEZlZWQzLnR4dA0KICAgICBlbnRyeXBvaW50OiBbImJhc2giLCAiLWMiLCAic2xlZXAgMTA7IC9iaW4vc2ggLWMgLi9zdGFydHVwLnNoIl0NCiAgICAgZGVwZW5kc19vbjoNCi0gICAgICAtIG15c3FsX2NvbnRhaW5lcg0KKyAgICAgIG15c3FsX2NvbnRhaW5lcjoNCisgICAgICAgIGNvbmRpdGlvbjogc2VydmljZV9oZWFsdGh5DQogICAgIGV4dHJhX2hvc3RzOg0KICAgICAgIC0gIm5vZGUuZGF0YXJvdXRlcm5ldy5jb206MTcyLjE4LjAuNCINCi0NCiAgICAgDQogICBkYXRhcm91dGVyLW5vZGU6DQotICAgIGltYWdlOiBhdHRvcy9kYXRhcm91dGVyLW5vZGUNCisgICAgaW1hZ2U6IG9uYXAvZG1hYXAvZGF0YXJvdXRlci1ub2RlDQogICAgIGNvbnRhaW5lcl9uYW1lOiBkYXRhcm91dGVyLW5vZGUNCiAgICAgaG9zdG5hbWU6IG5vZGUuZGF0YXJvdXRlcm5ldy5jb20NCiAgICAgcG9ydHM6DQpAQCAtNjAsMTAgKzYwLDEwIEBACiAgICAgaW1hZ2U6IG15c3FsL215c3FsLXNlcnZlcjo1LjYNCiAgICAgY29udGFpbmVyX25hbWU6IG15c3FsDQogICAgIHBvcnRzOg0KLSAgICAgLSAiMzMwNjozMzA2Ig0KKyAgICAgIC0gIjMzMDY6MzMwNiINCiAgICAgZW52aXJvbm1lbnQ6DQogICAgICAgTVlTUUxfUk9PVF9QQVNTV09SRDogYXR0MjAxNw0KICAgICB2b2x1bWVzOg0KLSAgICAtIC4vZGF0YWJhc2U6L3RtcC9kYXRhYmFzZQ0KLSAgICAtIC4vZGF0YWJhc2U6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kDQorICAgICAgLSAuL2RhdGFiYXNlOi90bXAvZGF0YWJhc2UNCisgICAgICAtIC4vZGF0YWJhc2U6L2RvY2tlci1lbnRyeXBvaW50LWluaXRkYi5kDQogICAgIA0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvZG9ja2VyLWNvbXBvc2UvcHJvdl9kYXRhL3Byb3ZzZXJ2ZXIucHJvcGVydGllcyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvZG9ja2VyLWNvbXBvc2UvcHJvdl9kYXRhL3Byb3ZzZXJ2ZXIucHJvcGVydGllcwppbmRleCA2YTAzY2JkLi5iNzIyYTY0IDEwMDY0NAotLS0gYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL2RvY2tlci1jb21wb3NlL3Byb3ZfZGF0YS9wcm92c2VydmVyLnByb3BlcnRpZXMKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9kb2NrZXItY29tcG9zZS9wcm92X2RhdGEvcHJvdnNlcnZlci5wcm9wZXJ0aWVzCkBAIC0yLDcgKzIsNyBAQAogIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAjICogb3JnLm9uYXAuZG1hYXANCiAjICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotIyAqIENvcHlyaWdodCCpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorIyAqIENvcHlyaWdodCDvv70gMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAjICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogIyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KICMgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQpAQCAtMjAsNDAgKzIwLDI5IEBACiAjICogRUNPTVAgaXMgYSB0cmFkZW1hcmsgYW5kIHNlcnZpY2UgbWFyayBvZiBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4NCiAjICoNCiAjLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQ0KLSMNCi0jICAgICAgICAgICAgICAgICAgICAgICAgQVQmVCAtIFBST1BSSUVUQVJZDQotIyAgICAgICAgICBUSElTIEZJTEUgQ09OVEFJTlMgUFJPUFJJRVRBUlkgSU5GT1JNQVRJT04gT0YNCi0jICAgICAgICBBVCZUIEFORCBJUyBOT1QgVE8gQkUgRElTQ0xPU0VEIE9SIFVTRUQgRVhDRVBUIElODQotIyAgICAgICAgICAgICBBQ0NPUkRBTkNFIFdJVEggQVBQTElDQUJMRSBBR1JFRU1FTlRTLg0KLSMNCi0jICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMyBBVCZUIEtub3dsZWRnZSBWZW50dXJlcw0KLSMgICAgICAgICAgICAgIFVucHVibGlzaGVkIGFuZCBOb3QgZm9yIFB1YmxpY2F0aW9uDQotIyAgICAgICAgICAgICAgICAgICAgIEFsbCBSaWdodHMgUmVzZXJ2ZWQNCi0jDQotIyBDVlM6ICRJZDogcHJvdnNlcnZlci5wcm9wZXJ0aWVzLHYgMS43IDIwMTMvMDUvMjkgMTQ6NDQ6MzYgZWJ5IEV4cCAkDQotIw0KKw0KIA0KICNKZXR0eSBTZXJ2ZXIgcHJvcGVydGllcw0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmh0dHAucG9ydCAgICAgICAgICAgPSA4MDgwDQotY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucG9ydCAgICAgICAgICA9IDg0NDMNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwcy5yZWxheGF0aW9uCSAgID0gdHJ1ZQ0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmtleW1hbmFnZXIucGFzc3dvcmQgPSBjaGFuZ2VpdA0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnR5cGUgICAgICAgPSBqa3MNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXlzdG9yZS5wYXRoICAgICAgID0gL29wdC9hcHAvZGF0YXJ0ci9zZWxmX3NpZ25lZC9rZXlzdG9yZS5qa3MNCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cC5wb3J0ICAgICAgICAgICA9IDgwODANCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucG9ydCAgICAgICAgICA9IDg0NDMNCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucmVsYXhhdGlvbgkgICA9IGZhbHNlDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmtleW1hbmFnZXIucGFzc3dvcmQgPSBjaGFuZ2VpdA0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXlzdG9yZS50eXBlICAgICAgID0gamtzDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnBhdGggICAgICAgPSAvb3B0L2FwcC9kYXRhcnRyL3NlbGZfc2lnbmVkL2tleXN0b3JlLmprcw0KIA0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnBhc3N3b3JkICAgPSBjaGFuZ2VpdA0KLSNjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci50cnVzdHN0b3JlLnBhdGggICAgID0gL2hvbWUvZWJ5L2RyMi9taXNjL2NhY2VydHMrMQ0KLSNjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci50cnVzdHN0b3JlLnBhdGggICAgID0gL3Vzci9saWIvanZtL2phdmEtOC1vcmFjbGUvanJlL2xpYi9zZWN1cml0eS9jYWNlcnRzDQotY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoICAgICA9IC9vcHQvYXBwL2RhdGFydHIvc2VsZl9zaWduZWQvY2FjZXJ0cy5qa3MNCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIua2V5c3RvcmUucGFzc3dvcmQgICA9IGNoYW5nZWl0DQorI29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci50cnVzdHN0b3JlLnBhdGggICAgID0gL2hvbWUvZWJ5L2RyMi9taXNjL2NhY2VydHMrMQ0KKyNvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoICAgICA9IC91c3IvbGliL2p2bS9qYXZhLTgtb3JhY2xlL2pyZS9saWIvc2VjdXJpdHkvY2FjZXJ0cw0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci50cnVzdHN0b3JlLnBhdGggICAgID0gL29wdC9hcHAvZGF0YXJ0ci9zZWxmX3NpZ25lZC9jYWNlcnRzLmprcw0KIA0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGFzc3dvcmQgPSBjaGFuZ2VpdA0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmFjY2Vzc2xvZy5kaXIgICAgICAgPSAvb3B0L2FwcC9kYXRhcnRyL2xvZ3MNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5zcG9vbGRpciAgICAgICAgICAgID0gL29wdC9hcHAvZGF0YXJ0ci9zcG9vbA0KLSNjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5kYnNjcmlwdHMgICAgICAgICAgPSAvaG9tZS9lYnkvZHIyL2N2cy9kYXRhcm91dGVyL3Byb3YvbWlzYy8NCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5sb2dyZXRlbnRpb24gICAgICAgID0gMzANCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXNzd29yZCA9IGNoYW5nZWl0DQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmFjY2Vzc2xvZy5kaXIgICAgICAgPSAvb3B0L2FwcC9kYXRhcnRyL2xvZ3MNCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuc3Bvb2xkaXIgICAgICAgICAgICA9IC9vcHQvYXBwL2RhdGFydHIvc3Bvb2wNCisjb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmRic2NyaXB0cyAgICAgICAgICA9IC9ob21lL2VieS9kcjIvY3ZzL2RhdGFyb3V0ZXIvcHJvdi9taXNjLw0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5sb2dyZXRlbnRpb24gICAgICAgID0gMzANCiANCiAjIERhdGFiYXNlIGFjY2Vzcw0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5kYi5kcml2ZXIgICA9IGNvbS5teXNxbC5qZGJjLkRyaXZlcg0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5kYi51cmwgICAgICA9IGpkYmM6bXlzcWw6Ly8xNzIuMTguMC4yOjMzMDYvZGF0YXJvdXRlcg0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5kYi5sb2dpbiAgICA9IGRhdGFyb3V0ZXINCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuZGIucGFzc3dvcmQgPSBkYXRhcm91dGVyDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5kYi5kcml2ZXIgICA9IGNvbS5teXNxbC5qZGJjLkRyaXZlcg0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIuZGIudXJsICAgICAgPSBqZGJjOm15c3FsOi8vMTcyLjE4LjAuMjozMzA2L2RhdGFyb3V0ZXINCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmRiLmxvZ2luICAgID0gZGF0YXJvdXRlcg0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIuZGIucGFzc3dvcmQgPSBkYXRhcm91dGVyDQpkaWZmIC0tZ2l0IGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9kb2NrZXIvc3RhcnR1cC5zaCBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvZG9ja2VyL3N0YXJ0dXAuc2gKaW5kZXggMTkxYTgwNC4uZTk2NGY2NiAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9kb2NrZXIvc3RhcnR1cC5zaAorKysgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL2RvY2tlci9zdGFydHVwLnNoCkBAIC0xLDMgKzEsNCBAQAorIyEvYmluL2Jhc2gKIExJQj0vb3B0L2FwcC9kYXRhcnRyL2xpYgogRVRDPS9vcHQvYXBwL2RhdGFydHIvZXRjCiBlY2hvICJ0aGlzIGlzIExJQiIgJExJQgpAQCAtOCw3ICs5LDcgQEAKIGZvciBGSUxFIGluIGBmaW5kICRMSUIgLW5hbWUgKi5qYXJgOyBkbwogICBDTEFTU1BBVEg9JENMQVNTUEFUSDokRklMRQogZG9uZQotamF2YSAtY2xhc3NwYXRoICRDTEFTU1BBVEggIGNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92aXNpb25pbmcuTWFpbgoramF2YSAtY2xhc3NwYXRoICRDTEFTU1BBVEggIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLk1haW4KIAogcnVubmVyX2ZpbGU9IiRMSUIvZGF0YXJvdXRlci1wcm92LWphci13aXRoLWRlcGVuZGVuY2llcy5qYXIiCiBlY2hvICJTdGFydGluZyB1c2luZyIgJHJ1bm5lcl9maWxlCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL2xvZzRqLnByb3BlcnRpZXMgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL2xvZzRqLnByb3BlcnRpZXMKaW5kZXggYmI0ZWFhMC4uMTViYTg4OCAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9sb2c0ai5wcm9wZXJ0aWVzCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbG9nNGoucHJvcGVydGllcwpAQCAtMiw3ICsyLDcgQEAKICMgPT09PT09PT09PT09TElDRU5TRV9TVEFSVD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogIyAqIG9yZy5vbmFwLmRtYWFwDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KLSMgKiBDb3B5cmlnaHQgqSAyMDE3IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLg0KKyMgKiBDb3B5cmlnaHQg77+9IDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQogIyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQ0KICMgKiBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsNCiAjICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLg0KQEAgLTMxLDggKzMxLDggQEAKICMNCiAjIExvZ2dlciB1c2VkIGZvciBwcm92aXNpb25pbmcgZXZlbnRzDQogIw0KLWxvZzRqLmxvZ2dlci5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmV2ZW50cz1pbmZvLCBldmVudGxvZw0KLWxvZzRqLmFkZGl0aXZpdHkuY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5ldmVudHM9ZmFsc2UNCitsb2c0ai5sb2dnZXIub3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92aXNpb25pbmcuZXZlbnRzPWluZm8sIGV2ZW50bG9nDQorbG9nNGouYWRkaXRpdml0eS5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5ldmVudHM9ZmFsc2UNCiANCiBsb2c0ai5hcHBlbmRlci5ldmVudGxvZz1vcmcuYXBhY2hlLmxvZzRqLkRhaWx5Um9sbGluZ0ZpbGVBcHBlbmRlcg0KIGxvZzRqLmFwcGVuZGVyLmV2ZW50bG9nLmZpbGU9L3Jvb3QvZHIyL2xvZ3MvcHJvdmV2ZW50LmxvZw0KQEAgLTQ0LDggKzQ0LDggQEAKICMNCiAjIExvZ2dlciB1c2VkIGZvciBpbnRlcm5hbCBwcm92aXNpb25pbmcgc2VydmVyIGV2ZW50cw0KICMNCi1sb2c0ai5sb2dnZXIuY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5pbnRlcm5hbD1kZWJ1ZywgaW50bG9nDQotbG9nNGouYWRkaXRpdml0eS5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmludGVybmFsPWZhbHNlDQorbG9nNGoubG9nZ2VyLm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmludGVybmFsPWRlYnVnLCBpbnRsb2cNCitsb2c0ai5hZGRpdGl2aXR5Lm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmludGVybmFsPWZhbHNlDQogDQogbG9nNGouYXBwZW5kZXIuaW50bG9nPW9yZy5hcGFjaGUubG9nNGouRGFpbHlSb2xsaW5nRmlsZUFwcGVuZGVyDQogbG9nNGouYXBwZW5kZXIuaW50bG9nLmZpbGU9L3Jvb3QvZHIyL2xvZ3MvcHJvdmludC5sb2cNCkBAIC01Nyw4ICs1Nyw4IEBACiAjDQogIyBMb2dnZXIgdXNlZCBmb3IgcG9saWN5IGVuZ2luZQ0KICMNCi1sb2c0ai5sb2dnZXIuY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLmF1dGh6LmltcGwuUHJvdkF1dGhvcml6ZXI9ZGVidWcsIHBlbG9nDQotbG9nNGouYWRkaXRpdml0eS5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuYXV0aHouaW1wbC5Qcm92QXV0aG9yaXplcj1mYWxzZQ0KK2xvZzRqLmxvZ2dlci5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmF1dGh6LmltcGwuUHJvdkF1dGhvcml6ZXI9ZGVidWcsIHBlbG9nDQorbG9nNGouYWRkaXRpdml0eS5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmF1dGh6LmltcGwuUHJvdkF1dGhvcml6ZXI9ZmFsc2UNCiANCiBsb2c0ai5hcHBlbmRlci5wZWxvZz1vcmcuYXBhY2hlLmxvZzRqLkRhaWx5Um9sbGluZ0ZpbGVBcHBlbmRlcg0KIGxvZzRqLmFwcGVuZGVyLnBlbG9nLmZpbGU9L3Jvb3QvZHIyL2xvZ3MvcG9saWN5ZW5naW5lLmxvZw0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbG9nYmFjay54bWwgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL2xvZ2JhY2sueG1sCmluZGV4IDdkNzNlMGQuLmE5NjU1MTUgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbG9nYmFjay54bWwKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9sb2diYWNrLnhtbApAQCAtMzAxLDcgKzMwMSw3IEBACiAgICA8YXBwZW5kZXIgbmFtZT0iamV0dHlsb2ciDQogICAgIGNsYXNzPSJjaC5xb3MubG9nYmFjay5jb3JlLnJvbGxpbmcuUm9sbGluZ0ZpbGVBcHBlbmRlciI+DQogICAgIDxmaWxlPiR7bG9nRGlyZWN0b3J5fS8ke2pldHR5TG9nTmFtZX0ubG9nPC9maWxlPg0KLQkgPGZpbHRlciBjbGFzcz0iY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5lZWxmLkpldHR5RmlsdGVyIiAvPg0KKwkgPGZpbHRlciBjbGFzcz0ib3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92aXNpb25pbmcuZWVsZi5KZXR0eUZpbHRlciIgLz4NCiAgICAgPHJvbGxpbmdQb2xpY3kNCiAgICAgICBjbGFzcz0iY2gucW9zLmxvZ2JhY2suY29yZS5yb2xsaW5nLkZpeGVkV2luZG93Um9sbGluZ1BvbGljeSI+DQogICAgICAgPGZpbGVOYW1lUGF0dGVybj4ke2xvZ0RpcmVjdG9yeX0vJHtqZXR0eUxvZ05hbWV9LiVpLmxvZy56aXANCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL21pc2MvZG9hY3Rpb24gYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL21pc2MvZG9hY3Rpb24KaW5kZXggNDMxOTMzMi4uOGU3MTlkNCAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL2RvYWN0aW9uCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9kb2FjdGlvbgpAQCAtMSw0ICsxLDIzIEBACiAjIS9iaW4vYmFzaAorIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBvcmcub25hcC5kbWFhcAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDb3B5cmlnaHQgwqkgMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CisjCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCisjCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjID09PT09PT09PT09PUxJQ0VOU0VfRU5EPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuCiAKIGNkIC9vcHQvYXBwL2RhdGFydHIvZXRjCiBmb3IgYWN0aW9uIGluICIkQCIKZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9kci1yb3V0ZSBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9kci1yb3V0ZQppbmRleCA3N2M2YzE4Li41NmQ3NzY2IDEwMDY0NAotLS0gYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL21pc2MvZHItcm91dGUKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL2RyLXJvdXRlCkBAIC0xLDE4ICsxLDI0IEBACiAjIS9iaW4vYmFzaAorIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBvcmcub25hcC5kbWFhcAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDb3B5cmlnaHQgwqkgMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgQVQmVCAtIFBST1BSSUVUQVJZCi0jICAgICAgICAgIFRISVMgRklMRSBDT05UQUlOUyBQUk9QUklFVEFSWSBJTkZPUk1BVElPTiBPRgotIyAgICAgICAgQVQmVCBBTkQgSVMgTk9UIFRPIEJFIERJU0NMT1NFRCBPUiBVU0VEIEVYQ0VQVCBJTgotIyAgICAgICAgICAgICBBQ0NPUkRBTkNFIFdJVEggQVBQTElDQUJMRSBBR1JFRU1FTlRTLgorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwotIyAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTMgQVQmVCBLbm93bGVkZ2UgVmVudHVyZXMKLSMgICAgICAgICAgICAgIFVucHVibGlzaGVkIGFuZCBOb3QgZm9yIFB1YmxpY2F0aW9uCi0jICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIyA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIwotIyAgZHItcm91dGUgLS0gQSBzY3JpcHQgdG8gaW50ZXJhY3Qgd2l0aCBhIHByb3Zpc2lvbmluZyBzZXJ2ZXIgdG8gbWFuYWdlIHRoZSBEUiByb3V0aW5nIHRhYmxlcy4KLSMKLSMgICRJZDogZHItcm91dGUsdiAxLjIgMjAxMy8xMS8wNiAxNjoyMzo1NCBlYnkgRXhwICQKLSMKKyMgRUNPTVAgaXMgYSB0cmFkZW1hcmsgYW5kIHNlcnZpY2UgbWFyayBvZiBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4KKwogCiBKQVZBX0hPTUU9L29wdC9qYXZhL2pkay9qZGsxODAKIEpBVkFfT1BUUz0iLVhtczFHIC1YbXgxRyIKQEAgLTIzLDQgKzI5LDQgQEAKIAogJEpBVkFfSE9NRS9iaW4vamF2YSBcCiAJLURsb2c0ai5jb25maWd1cmF0aW9uPWZpbGU6Ly8vb3B0L2FwcC9kYXRhcnRyL2V0Yy9sb2c0ai5kcnJvdXRlLnByb3BlcnRpZXMgXAotCWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92aXNpb25pbmcudXRpbHMuRFJSb3V0ZUNMSSAkKgorCW9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLnV0aWxzLkRSUm91dGVDTEkgJCoKZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9kcnRycHJvdiBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9kcnRycHJvdgppbmRleCBjODAxY2UwLi4yYWZiNmVjIDEwMDY0NAotLS0gYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL21pc2MvZHJ0cnByb3YKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL2RydHJwcm92CkBAIC0xLDE4ICsxLDI0IEBACiAjIS9iaW4vYmFzaAorIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBvcmcub25hcC5kbWFhcAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDb3B5cmlnaHQgwqkgMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgQVQmVCAtIFBST1BSSUVUQVJZCi0jICAgICAgICAgIFRISVMgRklMRSBDT05UQUlOUyBQUk9QUklFVEFSWSBJTkZPUk1BVElPTiBPRgotIyAgICAgICAgQVQmVCBBTkQgSVMgTk9UIFRPIEJFIERJU0NMT1NFRCBPUiBVU0VEIEVYQ0VQVCBJTgotIyAgICAgICAgICAgICBBQ0NPUkRBTkNFIFdJVEggQVBQTElDQUJMRSBBR1JFRU1FTlRTLgorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwotIyAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTMgQVQmVCBLbm93bGVkZ2UgVmVudHVyZXMKLSMgICAgICAgICAgICAgIFVucHVibGlzaGVkIGFuZCBOb3QgZm9yIFB1YmxpY2F0aW9uCi0jICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIyA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIwotIyAgVGhpcyBpcyB0aGUgc3RhcnR1cC9zaHV0ZG93biBzY3JpcHQgZm9yIHRoZSBBVCZUIERhdGEgUm91dGVyIFByb3Zpc2lvbmluZyBTZXJ2ZXIuCi0jCi0jICAkSWQ6IGRydHJwcm92LHYgMS4zIDIwMTMvMTAvMjkgMTY6NTc6NTcgZWJ5IEV4cCAkCi0jCisjIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuCisKIAogdW1hc2sgMDAyMgogCkBAIC02MCw3ICs2Niw3IEBACiAJCWV4aXQgMAogCWZpCiAJZWNobyAnMCAxICogKiAqIC9vcHQvYXBwL2RhdGFydHIvYmluL3J1bnJlcG9ydHMnIHwgY3JvbnRhYgotCW5vaHVwIGphdmEgJEpBVkFfT1BUUyBjb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLk1haW4gPC9kZXYvbnVsbCAmCisJbm9odXAgamF2YSAkSkFWQV9PUFRTIG9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLk1haW4gPC9kZXYvbnVsbCAmCiAJc2xlZXAgNQogCVBJRFM9YHBpZHNgCiAJaWYgWyAiJFBJRFMiID0gIiIgXQpkaWZmIC0tZ2l0IGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL2xvZzRqLmRycm91dGUucHJvcGVydGllcyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9sb2c0ai5kcnJvdXRlLnByb3BlcnRpZXMKaW5kZXggNGZmNDI3OC4uNTdkOTNjOCAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL2xvZzRqLmRycm91dGUucHJvcGVydGllcworKysgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL21pc2MvbG9nNGouZHJyb3V0ZS5wcm9wZXJ0aWVzCkBAIC0yLDcgKzIsNyBAQAogIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAjICogb3JnLm9uYXAuZG1hYXANCiAjICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotIyAqIENvcHlyaWdodCCpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorIyAqIENvcHlyaWdodCDvv70gMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAjICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogIyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KICMgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQpAQCAtMTksMjAgKzE5LDYgQEAKICMgKg0KICMgKiBFQ09NUCBpcyBhIHRyYWRlbWFyayBhbmQgc2VydmljZSBtYXJrIG9mIEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5Lg0KICMgKg0KLSMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tDQotIw0KLSMgICAgICAgICAgICAgICAgICAgICAgICBBVCZUIC0gUFJPUFJJRVRBUlkNCi0jICAgICAgICAgIFRISVMgRklMRSBDT05UQUlOUyBQUk9QUklFVEFSWSBJTkZPUk1BVElPTiBPRg0KLSMgICAgICAgIEFUJlQgQU5EIElTIE5PVCBUTyBCRSBESVNDTE9TRUQgT1IgVVNFRCBFWENFUFQgSU4NCi0jICAgICAgICAgICAgIEFDQ09SREFOQ0UgV0lUSCBBUFBMSUNBQkxFIEFHUkVFTUVOVFMuDQotIw0KLSMgICAgICAgICAgQ29weXJpZ2h0IChjKSAyMDEzIEFUJlQgS25vd2xlZGdlIFZlbnR1cmVzDQotIyAgICAgICAgICAgICAgVW5wdWJsaXNoZWQgYW5kIE5vdCBmb3IgUHVibGljYXRpb24NCi0jICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZA0KLSMNCi0jIENWUzogJElkOiBsb2c0ai5kcnJvdXRlLnByb3BlcnRpZXMsdiAxLjEgMjAxMy8xMS8wNiAxNjoyMzo1NCBlYnkgRXhwICQNCi0jCVRoaXMgbG9nNGogcHJvcGVydGllcyBmaWxlIGlzIHVzZWQgb25seSBieSBkci1yb3V0ZQ0KLSMNCiANCiBsb2c0ai5yb290TG9nZ2VyPUlORk8sIHN0ZG91dA0KIGxvZzRqLmFwcGVuZGVyLnN0ZG91dD1vcmcuYXBhY2hlLmxvZzRqLkNvbnNvbGVBcHBlbmRlcg0KZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9sb2c0ai5wcm9wZXJ0aWVzLnRtcGwgYi9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL21pc2MvbG9nNGoucHJvcGVydGllcy50bXBsCmluZGV4IGVkMWQ3ZmEuLjMwNGVlMTcgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9sb2c0ai5wcm9wZXJ0aWVzLnRtcGwKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL2xvZzRqLnByb3BlcnRpZXMudG1wbApAQCAtMSwyNCArMSwzMiBAQAogY2F0IDw8IUVPRgorIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBvcmcub25hcC5kbWFhcAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDb3B5cmlnaHQgwqkgMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgQVQmVCAtIFBST1BSSUVUQVJZCi0jICAgICAgICAgIFRISVMgRklMRSBDT05UQUlOUyBQUk9QUklFVEFSWSBJTkZPUk1BVElPTiBPRgotIyAgICAgICAgQVQmVCBBTkQgSVMgTk9UIFRPIEJFIERJU0NMT1NFRCBPUiBVU0VEIEVYQ0VQVCBJTgotIyAgICAgICAgICAgICBBQ0NPUkRBTkNFIFdJVEggQVBQTElDQUJMRSBBR1JFRU1FTlRTLgorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwotIyAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTMgQVQmVCBLbm93bGVkZ2UgVmVudHVyZXMKLSMgICAgICAgICAgICAgIFVucHVibGlzaGVkIGFuZCBOb3QgZm9yIFB1YmxpY2F0aW9uCi0jICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIyA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIwotIyBDVlM6ICRJZDogbG9nNGoucHJvcGVydGllcy50bXBsLHYgMS40IDIwMTQvMDEvMTMgMTk6NDQ6NTcgZWJ5IEV4cCAkCi0jCisjIEVDT01QIGlzIGEgdHJhZGVtYXJrIGFuZCBzZXJ2aWNlIG1hcmsgb2YgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuCisKIAogbG9nNGoucm9vdExvZ2dlcj1pbmZvCiAKICMKICMgTG9nZ2VyIHVzZWQgZm9yIHByb3Zpc2lvbmluZyBldmVudHMKICMKLWxvZzRqLmxvZ2dlci5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmV2ZW50cz1pbmZvLCBldmVudGxvZwotbG9nNGouYWRkaXRpdml0eS5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmV2ZW50cz1mYWxzZQorbG9nNGoubG9nZ2VyLm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmV2ZW50cz1pbmZvLCBldmVudGxvZworbG9nNGouYWRkaXRpdml0eS5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5ldmVudHM9ZmFsc2UKIAogbG9nNGouYXBwZW5kZXIuZXZlbnRsb2c9b3JnLmFwYWNoZS5sb2c0ai5EYWlseVJvbGxpbmdGaWxlQXBwZW5kZXIKIGxvZzRqLmFwcGVuZGVyLmV2ZW50bG9nLmZpbGU9JHtEUlRSX1BST1ZfTE9HUzotL29wdC9hcHAvZGF0YXJ0ci9sb2dzfS9wcm92ZXZlbnQubG9nCkBAIC0zMCw4ICszOCw4IEBACiAjCiAjIExvZ2dlciB1c2VkIGZvciBpbnRlcm5hbCBwcm92aXNpb25pbmcgc2VydmVyIGV2ZW50cwogIwotbG9nNGoubG9nZ2VyLmNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92aXNpb25pbmcuaW50ZXJuYWw9ZGVidWcsIGludGxvZwotbG9nNGouYWRkaXRpdml0eS5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdmlzaW9uaW5nLmludGVybmFsPWZhbHNlCitsb2c0ai5sb2dnZXIub3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92aXNpb25pbmcuaW50ZXJuYWw9ZGVidWcsIGludGxvZworbG9nNGouYWRkaXRpdml0eS5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3Zpc2lvbmluZy5pbnRlcm5hbD1mYWxzZQogCiBsb2c0ai5hcHBlbmRlci5pbnRsb2c9b3JnLmFwYWNoZS5sb2c0ai5EYWlseVJvbGxpbmdGaWxlQXBwZW5kZXIKIGxvZzRqLmFwcGVuZGVyLmludGxvZy5maWxlPSR7RFJUUl9QUk9WX0xPR1M6LS9vcHQvYXBwL2RhdGFydHIvbG9nc30vcHJvdmludC5sb2cKQEAgLTQzLDggKzUxLDggQEAKICMKICMgTG9nZ2VyIHVzZWQgZm9yIHBvbGljeSBlbmdpbmUKICMKLWxvZzRqLmxvZ2dlci5jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuYXV0aHouaW1wbC5Qcm92QXV0aG9yaXplcj1kZWJ1ZywgcGVsb2cKLWxvZzRqLmFkZGl0aXZpdHkuY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLmF1dGh6LmltcGwuUHJvdkF1dGhvcml6ZXI9ZmFsc2UKK2xvZzRqLmxvZ2dlci5vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmF1dGh6LmltcGwuUHJvdkF1dGhvcml6ZXI9ZGVidWcsIHBlbG9nCitsb2c0ai5hZGRpdGl2aXR5Lm9yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIuYXV0aHouaW1wbC5Qcm92QXV0aG9yaXplcj1mYWxzZQogCiBsb2c0ai5hcHBlbmRlci5wZWxvZz1vcmcuYXBhY2hlLmxvZzRqLkRhaWx5Um9sbGluZ0ZpbGVBcHBlbmRlcgogbG9nNGouYXBwZW5kZXIucGVsb2cuZmlsZT0ke0RSVFJfUFJPVl9MT0dTOi0vb3B0L2FwcC9kYXRhcnRyL2xvZ3N9L3BvbGljeWVuZ2luZS5sb2cKZGlmZiAtLWdpdCBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9wcm92Y21kIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL3Byb3ZjbWQKaW5kZXggNjNlZmE1NC4uYjQ4MDg0ZiAxMDA2NDQKLS0tIGEvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL3Byb3ZjbWQKKysrIGIvZGF0YXJvdXRlci1wcm92L3NyYy9tYWluL3Jlc291cmNlcy9taXNjL3Byb3ZjbWQKQEAgLTEsMTkgKzEsMjQgQEAKICMhL2Jpbi9iYXNoCisjID09PT09PT09PT09PUxJQ0VOU0VfU1RBUlQ9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIG9yZy5vbmFwLmRtYWFwCisjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjIENvcHlyaWdodCDCqSAyMDE4IEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBMaWNlbnNlZCB1bmRlciB0aGUgQXBhY2hlIExpY2Vuc2UsIFZlcnNpb24gMi4wICh0aGUgIkxpY2Vuc2UiKTsKKyMgeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorIyBZb3UgbWF5IG9idGFpbiBhIGNvcHkgb2YgdGhlIExpY2Vuc2UgYXQKICMKLSMgICAgICAgICAgICAgICAgICAgICAgICBBVCZUIC0gUFJPUFJJRVRBUlkKLSMgICAgICAgICAgVEhJUyBGSUxFIENPTlRBSU5TIFBST1BSSUVUQVJZIElORk9STUFUSU9OIE9GCi0jICAgICAgICBBVCZUIEFORCBJUyBOT1QgVE8gQkUgRElTQ0xPU0VEIE9SIFVTRUQgRVhDRVBUIElOCi0jICAgICAgICAgICAgIEFDQ09SREFOQ0UgV0lUSCBBUFBMSUNBQkxFIEFHUkVFTUVOVFMuCisjICAgICAgaHR0cDovL3d3dy5hcGFjaGUub3JnL2xpY2Vuc2VzL0xJQ0VOU0UtMi4wCiAjCi0jICAgICAgICAgIENvcHlyaWdodCAoYykgMjAxMyBBVCZUIEtub3dsZWRnZSBWZW50dXJlcwotIyAgICAgICAgICAgICAgVW5wdWJsaXNoZWQgYW5kIE5vdCBmb3IgUHVibGljYXRpb24KLSMgICAgICAgICAgICAgICAgICAgICBBbGwgUmlnaHRzIFJlc2VydmVkCisjIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKyMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIExpY2Vuc2UgaXMgZGlzdHJpYnV0ZWQgb24gYW4gIkFTIElTIiBCQVNJUywKKyMgV0lUSE9VVCBXQVJSQU5USUVTIE9SIENPTkRJVElPTlMgT0YgQU5ZIEtJTkQsIGVpdGhlciBleHByZXNzIG9yIGltcGxpZWQuCisjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCisjID09PT09PT09PT09PUxJQ0VOU0VfRU5EPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAjCi0jICBwcm92Y21kIC0tIEEgc2NyaXB0IHRvIGludGVyYWN0IHdpdGggYSBwcm92aXNpb25pbmcgc2VydmVyIHRvIG1hbmFnZSB0aGUgcHJvdmlzaW9uaW5nIHBhcmFtZXRlcnMuCi0jICAgICBTZXQgJFZFUkJPU0UgdG8gYSBub24tZW1wdHkgc3RyaW5nIHRvIHNlZSB0aGUgY3VybCBjb21tYW5kcyBhcyB0aGV5IGFyZSBleGVjdXRlZC4KLSMKLSMgICRJZDogcHJvdmNtZCx2IDEuNiAyMDE0LzAzLzMxIDEzOjIzOjMzIGVieSBFeHAgJAotIworIyBFQ09NUCBpcyBhIHRyYWRlbWFyayBhbmQgc2VydmljZSBtYXJrIG9mIEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LgorCiAKIFBBVEg9L29wdC9hcHAvZGF0YXJ0ci9iaW46L2JpbjovdXNyL2JpbjokUEFUSAogUFJPVkNNRD0iJDAiCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL21pc2MvcnVucmVwb3J0cyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9ydW5yZXBvcnRzCmluZGV4IDAwOWI3NDkuLjE3MGQ2ZWYgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9ydW5yZXBvcnRzCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvbWlzYy9ydW5yZXBvcnRzCkBAIC0xLDI0ICsxLDMwIEBACiAjIS9iaW4vYmFzaAorIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBvcmcub25hcC5kbWFhcAorIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorIyBDb3B5cmlnaHQgwqkgMjAxOCBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKyMgTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisjIHlvdSBtYXkgbm90IHVzZSB0aGlzIGZpbGUgZXhjZXB0IGluIGNvbXBsaWFuY2Ugd2l0aCB0aGUgTGljZW5zZS4KKyMgWW91IG1heSBvYnRhaW4gYSBjb3B5IG9mIHRoZSBMaWNlbnNlIGF0CiAjCi0jICAgICAgICAgICAgICAgICAgICAgICAgQVQmVCAtIFBST1BSSUVUQVJZCi0jICAgICAgICAgIFRISVMgRklMRSBDT05UQUlOUyBQUk9QUklFVEFSWSBJTkZPUk1BVElPTiBPRgotIyAgICAgICAgQVQmVCBBTkQgSVMgTk9UIFRPIEJFIERJU0NMT1NFRCBPUiBVU0VEIEVYQ0VQVCBJTgotIyAgICAgICAgICAgICBBQ0NPUkRBTkNFIFdJVEggQVBQTElDQUJMRSBBR1JFRU1FTlRTLgorIyAgICAgIGh0dHA6Ly93d3cuYXBhY2hlLm9yZy9saWNlbnNlcy9MSUNFTlNFLTIuMAogIwotIyAgICAgICAgICBDb3B5cmlnaHQgKGMpIDIwMTMgQVQmVCBLbm93bGVkZ2UgVmVudHVyZXMKLSMgICAgICAgICAgICAgIFVucHVibGlzaGVkIGFuZCBOb3QgZm9yIFB1YmxpY2F0aW9uCi0jICAgICAgICAgICAgICAgICAgICAgQWxsIFJpZ2h0cyBSZXNlcnZlZAorIyBVbmxlc3MgcmVxdWlyZWQgYnkgYXBwbGljYWJsZSBsYXcgb3IgYWdyZWVkIHRvIGluIHdyaXRpbmcsIHNvZnR3YXJlCisjIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSBMaWNlbnNlIGlzIGRpc3RyaWJ1dGVkIG9uIGFuICJBUyBJUyIgQkFTSVMsCisjIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorIyBTZWUgdGhlIExpY2Vuc2UgZm9yIHRoZSBzcGVjaWZpYyBsYW5ndWFnZSBnb3Zlcm5pbmcgcGVybWlzc2lvbnMgYW5kCisjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgorIyA9PT09PT09PT09PT1MSUNFTlNFX0VORD09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogIwotIyAgVGhpcyBzY3JpcHQgcnVucyBkYWlseSB0byBnZW5lcmF0ZSByZXBvcnRzIGZpbGVzIGluIHRoZSBsb2dzIGRpcmVjdG9yeS4KLSMKLSMgICRJZDogcnVucmVwb3J0cyx2IDEuMiAyMDEzLzExLzA2IDE2OjIzOjU0IGVieSBFeHAgJAotIworIyBFQ09NUCBpcyBhIHRyYWRlbWFyayBhbmQgc2VydmljZSBtYXJrIG9mIEFUJlQgSW50ZWxsZWN0dWFsIFByb3BlcnR5LgorCiAKIHVtYXNrIDAwMjIKIAogSkFWQV9IT01FPS9vcHQvamF2YS9qZGsvamRrMTgwCiBKQVZBX09QVFM9Ii1YbXMxRyAtWG14NEciCi1KQVZBX0NMQVNTPWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5yZXBvcnRzLlJlcG9ydAorSkFWQV9DTEFTUz1vcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnJlcG9ydHMuUmVwb3J0CiBUWj1HTVQwCiBQQVRIPSRKQVZBX0hPTUUvYmluOi9iaW46L3Vzci9iaW4KIENMQVNTUEFUSD1gZWNobyAvb3B0L2FwcC9kYXRhcnRyL2V0YyAvb3B0L2FwcC9kYXRhcnRyL2xpYi8qLmphciB8IHRyICcgJyAnOidgCmRpZmYgLS1naXQgYS9kYXRhcm91dGVyLXByb3Yvc3JjL21haW4vcmVzb3VyY2VzL3Byb3ZzZXJ2ZXIucHJvcGVydGllcyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvcHJvdnNlcnZlci5wcm9wZXJ0aWVzCmluZGV4IGFmNTA3M2UuLmI3MjJhNjQgMTAwNjQ0Ci0tLSBhL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvcHJvdnNlcnZlci5wcm9wZXJ0aWVzCisrKyBiL2RhdGFyb3V0ZXItcHJvdi9zcmMvbWFpbi9yZXNvdXJjZXMvcHJvdnNlcnZlci5wcm9wZXJ0aWVzCkBAIC0yLDcgKzIsNyBAQAogIyA9PT09PT09PT09PT1MSUNFTlNFX1NUQVJUPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0NCiAjICogb3JnLm9uYXAuZG1hYXANCiAjICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQotIyAqIENvcHlyaWdodCCpIDIwMTcgQVQmVCBJbnRlbGxlY3R1YWwgUHJvcGVydHkuIEFsbCByaWdodHMgcmVzZXJ2ZWQuDQorIyAqIENvcHlyaWdodCDvv70gMjAxNyBBVCZUIEludGVsbGVjdHVhbCBQcm9wZXJ0eS4gQWxsIHJpZ2h0cyByZXNlcnZlZC4NCiAjICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09DQogIyAqIExpY2Vuc2VkIHVuZGVyIHRoZSBBcGFjaGUgTGljZW5zZSwgVmVyc2lvbiAyLjAgKHRoZSAiTGljZW5zZSIpOw0KICMgKiB5b3UgbWF5IG5vdCB1c2UgdGhpcyBmaWxlIGV4Y2VwdCBpbiBjb21wbGlhbmNlIHdpdGggdGhlIExpY2Vuc2UuDQpAQCAtMjMsMjYgKzIzLDI2IEBACiANCiANCiAjSmV0dHkgU2VydmVyIHByb3BlcnRpZXMNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5odHRwLnBvcnQgICAgICAgICAgID0gODA4MA0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLmh0dHBzLnBvcnQgICAgICAgICAgPSA4NDQzDQotY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuaHR0cHMucmVsYXhhdGlvbgkgICA9IHRydWUNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXltYW5hZ2VyLnBhc3N3b3JkID0gY2hhbmdlaXQNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXlzdG9yZS50eXBlICAgICAgID0gamtzDQotY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIua2V5c3RvcmUucGF0aCAgICAgICA9IC9vcHQvYXBwL2RhdGFydHIvc2VsZl9zaWduZWQva2V5c3RvcmUuamtzDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmh0dHAucG9ydCAgICAgICAgICAgPSA4MDgwDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmh0dHBzLnBvcnQgICAgICAgICAgPSA4NDQzDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmh0dHBzLnJlbGF4YXRpb24JICAgPSBmYWxzZQ0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXltYW5hZ2VyLnBhc3N3b3JkID0gY2hhbmdlaXQNCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIua2V5c3RvcmUudHlwZSAgICAgICA9IGprcw0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXlzdG9yZS5wYXRoICAgICAgID0gL29wdC9hcHAvZGF0YXJ0ci9zZWxmX3NpZ25lZC9rZXlzdG9yZS5qa3MNCiANCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5rZXlzdG9yZS5wYXNzd29yZCAgID0gY2hhbmdlaXQNCi0jY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoICAgICA9IC9ob21lL2VieS9kcjIvbWlzYy9jYWNlcnRzKzENCi0jY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoICAgICA9IC91c3IvbGliL2p2bS9qYXZhLTgtb3JhY2xlL2pyZS9saWIvc2VjdXJpdHkvY2FjZXJ0cw0KLWNvbS5hdHQucmVzZWFyY2guZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGF0aCAgICAgPSAvb3B0L2FwcC9kYXRhcnRyL3NlbGZfc2lnbmVkL2NhY2VydHMuamtzDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLmtleXN0b3JlLnBhc3N3b3JkICAgPSBjaGFuZ2VpdA0KKyNvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoICAgICA9IC9ob21lL2VieS9kcjIvbWlzYy9jYWNlcnRzKzENCisjb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGF0aCAgICAgPSAvdXNyL2xpYi9qdm0vamF2YS04LW9yYWNsZS9qcmUvbGliL3NlY3VyaXR5L2NhY2VydHMNCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIudHJ1c3RzdG9yZS5wYXRoICAgICA9IC9vcHQvYXBwL2RhdGFydHIvc2VsZl9zaWduZWQvY2FjZXJ0cy5qa3MNCiANCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci50cnVzdHN0b3JlLnBhc3N3b3JkID0gY2hhbmdlaXQNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5hY2Nlc3Nsb2cuZGlyICAgICAgID0gL29wdC9hcHAvZGF0YXJ0ci9sb2dzDQotY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuc3Bvb2xkaXIgICAgICAgICAgICA9IC9vcHQvYXBwL2RhdGFydHIvc3Bvb2wNCi0jY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIuZGJzY3JpcHRzICAgICAgICAgID0gL2hvbWUvZWJ5L2RyMi9jdnMvZGF0YXJvdXRlci9wcm92L21pc2MvDQotY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIubG9ncmV0ZW50aW9uICAgICAgICA9IDMwDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLnRydXN0c3RvcmUucGFzc3dvcmQgPSBjaGFuZ2VpdA0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5hY2Nlc3Nsb2cuZGlyICAgICAgID0gL29wdC9hcHAvZGF0YXJ0ci9sb2dzDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5wcm92c2VydmVyLnNwb29sZGlyICAgICAgICAgICAgPSAvb3B0L2FwcC9kYXRhcnRyL3Nwb29sDQorI29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIucHJvdnNlcnZlci5kYnNjcmlwdHMgICAgICAgICAgPSAvaG9tZS9lYnkvZHIyL2N2cy9kYXRhcm91dGVyL3Byb3YvbWlzYy8NCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLnByb3ZzZXJ2ZXIubG9ncmV0ZW50aW9uICAgICAgICA9IDMwDQogDQogIyBEYXRhYmFzZSBhY2Nlc3MNCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuZGIuZHJpdmVyICAgPSBjb20ubXlzcWwuamRiYy5Ecml2ZXINCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuZGIudXJsICAgICAgPSBqZGJjOm15c3FsOi8vMTcyLjE4LjAuMjozMzA2L2RhdGFyb3V0ZXINCi1jb20uYXR0LnJlc2VhcmNoLmRhdGFyb3V0ZXIuZGIubG9naW4gICAgPSBkYXRhcm91dGVyDQotY29tLmF0dC5yZXNlYXJjaC5kYXRhcm91dGVyLmRiLnBhc3N3b3JkID0gZGF0YXJvdXRlcg0KK29yZy5vbmFwLmRtYWFwLmRhdGFyb3V0ZXIuZGIuZHJpdmVyICAgPSBjb20ubXlzcWwuamRiYy5Ecml2ZXINCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmRiLnVybCAgICAgID0gamRiYzpteXNxbDovLzE3Mi4xOC4wLjI6MzMwNi9kYXRhcm91dGVyDQorb3JnLm9uYXAuZG1hYXAuZGF0YXJvdXRlci5kYi5sb2dpbiAgICA9IGRhdGFyb3V0ZXINCitvcmcub25hcC5kbWFhcC5kYXRhcm91dGVyLmRiLnBhc3N3b3JkID0gZGF0YXJvdXRlcg0K