ZGlmZiAtLWdpdCBhL0FOTk9VTkNFIGIvQU5OT1VOQ0UKaW5kZXggNWM3OGYxYS4uZDYzNTMyNCAxMDA2NDQKLS0tIGEvQU5OT1VOQ0UKKysrIGIvQU5OT1VOQ0UKQEAgLTEsNCArMSw0IEBACi1UaGlzIGlzIHJlbGVhc2UgOTgxMTA4IG9mIFdpbmUsIGEgZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBXaW5kb3dzIG9uCitUaGlzIGlzIHJlbGVhc2UgOTgxMjExIG9mIFdpbmUsIGEgZnJlZSBpbXBsZW1lbnRhdGlvbiBvZiBXaW5kb3dzIG9uCiBVbml4LiAgVGhpcyBpcyBzdGlsbCBhIGRldmVsb3BlcnMgb25seSByZWxlYXNlLiAgVGhlcmUgYXJlIG1hbnkgYnVncwogYW5kIHVuaW1wbGVtZW50ZWQgZmVhdHVyZXMuICBNb3N0IGFwcGxpY2F0aW9ucyBzdGlsbCBkbyBub3Qgd29yawogY29ycmVjdGx5LgpAQCAtNiwxMSArNiwxMiBAQAogUGF0Y2hlcyBzaG91bGQgYmUgc3VibWl0dGVkIHRvICJqdWxsaWFyZEBscmMuZXBmbC5jaCIuICBQbGVhc2UgZG9uJ3QKIGZvcmdldCB0byBpbmNsdWRlIGEgQ2hhbmdlTG9nIGVudHJ5LgogCi1XSEFUJ1MgTkVXIHdpdGggV2luZS05ODExMDg6IChzZWUgQ2hhbmdlTG9nIGZvciBkZXRhaWxzKQotCS0gTW9yZSBjb21tb24gY29udHJvbHMuCi0JLSBCZXR0ZXIgc2VwYXJhdGlvbiBvZiBYMTEtZGVwZW5kZW50IGNvZGUuCi0JLSBNb3JlIERPUyBzdXBwb3J0LgotCS0gV2luc29jayBJUFggc3VwcG9ydC4KK1dIQVQnUyBORVcgd2l0aCBXaW5lLTk4MTIxMTogKHNlZSBDaGFuZ2VMb2cgZm9yIGRldGFpbHMpCisJLSBBIGxvdCBvZiBjb2RlIG1vdmVkIGFyb3VuZCBmb3IgYSBiZXR0ZXIgc3RydWN0dXJlLgorCS0gTmV3IGNvbnNvbGUgc3VwcG9ydC4KKwktIEJlZ2lubmluZ3Mgb2YgVFRZIGRyaXZlci4KKwktIFRvbnMgb2YgbmV3IHN0dWJzLgorCS0gTW9yZSBET1MgYW5kIG5hdGl2ZSBVU0VSIHN1cHBvcnQuCiAJLSBMb3RzIG9mIGJ1ZyBmaXhlcy4KIAogU2VlIHRoZSBSRUFETUUgZmlsZSBpbiB0aGUgZGlzdHJpYnV0aW9uIGZvciBpbnN0YWxsYXRpb24gaW5zdHJ1Y3Rpb25zLgpAQCAtMTksMTAgKzIwLDEwIEBACiB0aGUgcmVsZWFzZSBpcyBhdmFpbGFibGUgYXQgdGhlIGZ0cCBzaXRlcy4gIFRoZSBzb3VyY2VzIHdpbGwgYmUgYXZhaWxhYmxlCiBmcm9tIHRoZSBmb2xsb3dpbmcgbG9jYXRpb25zOgogCi0gIGZ0cDovL3N1bnNpdGUudW5jLmVkdS9wdWIvTGludXgvQUxQSEEvd2luZS9kZXZlbG9wbWVudC9XaW5lLTk4MTEwOC50YXIuZ3oKLSAgZnRwOi8vdHN4LTExLm1pdC5lZHUvcHViL2xpbnV4L0FMUEhBL1dpbmUvZGV2ZWxvcG1lbnQvV2luZS05ODExMDgudGFyLmd6Ci0gIGZ0cDovL2Z0cC5pbmZvbWFnaWMuY29tL3B1Yi9taXJyb3JzL2xpbnV4L3N1bnNpdGUvQUxQSEEvd2luZS9kZXZlbG9wbWVudC9XaW5lLTk4MTEwOC50YXIuZ3oKLSAgZnRwOi8vZnRwLnByb2dzb2MudXRzLmVkdS5hdS9wdWIvV2luZS9kZXZlbG9wbWVudC9XaW5lLTk4MTEwOC50YXIuZ3oKKyAgZnRwOi8vc3Vuc2l0ZS51bmMuZWR1L3B1Yi9MaW51eC9BTFBIQS93aW5lL2RldmVsb3BtZW50L1dpbmUtOTgxMjExLnRhci5negorICBmdHA6Ly90c3gtMTEubWl0LmVkdS9wdWIvbGludXgvQUxQSEEvV2luZS9kZXZlbG9wbWVudC9XaW5lLTk4MTIxMS50YXIuZ3oKKyAgZnRwOi8vZnRwLmluZm9tYWdpYy5jb20vcHViL21pcnJvcnMvbGludXgvc3Vuc2l0ZS9BTFBIQS93aW5lL2RldmVsb3BtZW50L1dpbmUtOTgxMjExLnRhci5negorICBmdHA6Ly9mdHAucHJvZ3NvYy51dHMuZWR1LmF1L3B1Yi9XaW5lL2RldmVsb3BtZW50L1dpbmUtOTgxMjExLnRhci5negogCiBJdCBzaG91bGQgYWxzbyBiZSBhdmFpbGFibGUgZnJvbSBhbnkgc2l0ZSB0aGF0IG1pcnJvcnMgdHN4LTExIG9yIHN1bnNpdGUuCiAKZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwppbmRleCBjNmQ5N2Y1Li4zYjYyZDBjIDEwMDY0NAotLS0gYS9DaGFuZ2VMb2cKKysrIGIvQ2hhbmdlTG9nCkBAIC0xLDQgKzEsMTA4OCBAQAogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorRnJpIERlYyAxMSAxNTowNDoxMSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KKworCSogaW5jbHVkZS9wcm9jZXNzLmgsIGluY2x1ZGUvdGxoZWxwMzIuaCwgaW5jbHVkZS90b29saGVscC5oLCBtaXNjL3Rvb2xoZWxwLmMsIHNjaGVkdWxlci9rMzJvYmouYywgc2NoZWR1bGVyL3Byb2Nlc3MuYzoKKwlQYXRyaWNrIFNwaW5sZXIgPHNwaW5sZXIucGF0cmlja0BtYXlvLmVkdT4KKwlJbXBsZW1lbnRlZCBDcmVhdGVUb29saGVscDMyU25hcHNob3QsIGluY2x1ZGluZyB0d28gb2YgdGhlIHJvdXRpbmVzCisJdXNpbmcgc25hcHNob3RzLCBQcm9jZXNzMzJGaXJzdCBhbmQgUHJvY2VzczMyTmV4dC4KKworCSogcmVsYXkzMi9vbGVhdXQzMi5zcGVjLCBpbmNsdWRlL21hcGlkZWZzLmgsIGluY2x1ZGUvb2xlYXV0by5oLCBpbmNsdWRlL3dpbjE2ZHJ2LmgsIGluY2x1ZGUvd2ludHlwZXMuaCwgb2xlL2NvbXBvYmouYywgb2xlL3ZhcmlhbnQuYzoKKwlKdXN0aW4gQnJhZGZvcmQgPGp1c3RpbkB1a2Fucy5lZHU+CisJTW9zdCBvZiB0aGUgY3VycmVuY3kgdmFyaWFudCBjb252ZXJzaW9uIGZ1bmN0aW9ucyBpbXBsZW1lbnRlZC4KKwlNaW5vciBidWdmaXhlcyBhbmQgaGVhZGVyIHRpZHlpbmcuCisKKwkqIE1ha2VmaWxlLmluLCBjb25maWd1cmUsIGNvbmZpZ3VyZS5pbiwgZGxscy9yYXNhcGkzMi9NYWtlZmlsZS5pbiwgZGxscy9yYXNhcGkzMi9yYXNhcGkuYywgaW5jbHVkZS9kZWJ1Zy5oLCBpbmNsdWRlL2RlYnVnZGVmcy5oLCBpbmNsdWRlL3Jhcy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIHJlbGF5MzIvcmFzYXBpMzIuc3BlYzoKKwlNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlBZGRlZCBSYXNFbnVtQ29ubmVjdGlvbnMgc3R1Yi4KKworCSogZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxwYXRoLmMsIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJQnVnZml4IGluIFBhdGhDb21iaW5lMzJbQXxXXS4KKwlWaWV3IG1lbnUgaW4gZXhwbG9yZXIgYW5kIG9uIHJpZ2h0IG1vdXNlIGJ1dHRvbiBpcyB3b3JraW5nIG5vdy4KKworCSogZGxscy9zaGVsbDMyL3BpZGwuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJSW1wbGVtZW50ZWQgIElMR2V0RGlzcGxheU5hbWUuCisKKwkqIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCVN0YXJ0ZWQgaW1wbGVtZW50YXRpb24gb2YgU2hlbGxFeGVjdXRlRXgzMkEuCisJU21hbGwgY2hhbmdlcy4KKworCSogZGxscy9zaGVsbDMyLy5jdnNpZ25vcmUsIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3NocmVzLnJjOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCU1vdmVkIG1lbnUgcmVzb3VyY2VzIHRvIHJjLWZpbGUuCisKKwkqIGluY2x1ZGUvcGVfaW1hZ2UuaCwgb2xlL29sZTJubHMuYywgd2luMzIvZmlsZS5jOgorCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCVR3byBkZWJ1ZyBtZXNzYWdlcyBjbGFyaWZpZWQsIG9uZSB1c2VsZXNzIHByb3RvdHlwZSByZW1vdmVkLgorCisJKiBpbmNsdWRlL29sZWF1dG8uaCwgb2xlL3ZhcmlhbnQuYzoKKwlNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwkyOTQgbWlzc2luZyBXSU5BUEkgYWRkZWQuCisKKwkqIHRvb2xzL3Rlc3RydW46IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCUtpbGwgc3dhcHBlZCBvdXQgKHdpbmUpIHByb2Nlc3NlcyB0b28gYW5kIHRydW5jYXRlIGRpZmYgYWZ0ZXIgc29tZSB4eHgKKwlsaW5lcy4KKworCSogb2xlL29sZTJubHMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJRml4ZWQgU2V0TGFzdEVycm9yIHdpdGggd3JvbmcgdmFsdWUuCisKKwkqIG1pc2MvcHJpbnRkcnYuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBncmFwaGljcy9wYWludGluZy5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKKwlIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KKwlJbXBsZW1lbnQgQWJvcnREb2MxNiwgbW92ZSBBYm9ydERvYzMyIGFuZCBTdGFydERvYzMyVyB0bworCW1pc2MvcHJpbnRkcnYuYyBhbmQgZml4IGEgZmV3IGNvbXBpbGUgd2FybmluZ3MuCisKKwkqIHdpbjMyL29yZGluYWxzLmMsIHdpbmRvd3MvZHJpdmVyLmMsIHdpbmRvd3MvbXNnYm94LmMsIHdpbmRvd3MvbXVsdGltb24uYywgd2luZG93cy91c2VyLmMsIGRsbHMvY29tY3RsMzIvYW5pbWF0ZS5jLCBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYywgZGxscy9udGRsbC9udC5jLCBpZjE2MzIvdHlwZWxpYi5zcGVjLCBpbmNsdWRlL2ZpbGUuaCwgbG9hZGVyL2Rvcy9tb2R1bGUuYywgbXNkb3MvaW50MjEuYywgb2xlL29sZTJubHMuYywgb2xlL3R5cGVsaWIuYzoKKwlBbmRyZWFzIE1vaHIgPGEubW9ockBtYWlsdG8uZGU+CisJRml4ZWQgYSBidW5jaCBvZiBjb21waWxlciB3YXJuaW5ncy4KKworCSogZmlsZXMvZmlsZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlBZGRlZCBXaW4zMiBzeW5jaHJvIHRvIEZJTEVzICh1c2VmdWwgb25seSBmb3IgdGVybWluYWwgaGFuZGxlcykuCisKK1RodSBEZWMgMTAgMTY6MDQ6NTEgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CisKKwkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9lbmhtZXRhZmlsZS5jLCBvYmplY3RzL2ZvbnQuYywgb2JqZWN0cy9tZXRhZmlsZS5jLCByZWxheTMyL2NvbWN0bDMyLnNwZWMsIHJlbGF5MzIvZ2RpMzIuc3BlYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCByZWxheTMyL21wci5zcGVjLCByZWxheTMyL3NoZWxsMzIuc3BlYywgcmVsYXkzMi90YXBpMzIuc3BlYywgcmVsYXkzMi91c2VyMzIuc3BlYywgcmVsYXkzMi93aW5zcG9vbC5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIHdpbjMyL2tlcm5lbDMyLmMsIHdpbjMyL3RpbWUuYywgd2luZG93cy9pbnB1dC5jLCB3aW5kb3dzL21lc3NhZ2UuYywgZ3JhcGhpY3MvbWV0YWZpbGVkcnYvaW5pdC5jLCBpZjE2MzIvZGRlbWwuc3BlYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2RkZW1sLmgsIGluY2x1ZGUvc2hsb2JqLmgsIGluY2x1ZGUvd2luZG93cy5oLCBpbmNsdWRlL3dpbnR5cGVzLmgsIG1lbW9yeS9zdHJpbmcuYywgbWlzYy9kZGVtbC5jLCBtaXNjL25ldHdvcmsuYywgbWlzYy9wcmludGRydi5jLCBtaXNjL3RhcGkzMi5jLCBjb250cm9scy9lZGl0LmMsIGRsbHMvY29tY3RsMzIvTWFrZWZpbGUuaW4sIGRsbHMvY29tY3RsMzIvY29tY3RsMzJ1bmRvYy5jLCBkbGxzL2NvbWN0bDMyL3Byb3BzaGVldC5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmMsIGZpbGVzL2ZpbGUuYywgZ3JhcGhpY3MvcGFpbnRpbmcuYzoKKwlGcmFuY2lzIEJlYXVkZXQgPGZyYW5jaXNAbWFjYWRhbWlhbi5jb20+CisJU3lsdmFpbiBTdC1HZXJtYWluIDxzeWx2YWluQG1hY2FkYW1pYW4uY29tPgorCVRodXkgTmd1eWVuIDx0aHV5QG1hY2FkYW1pYW4uY29tPgorCUxvdHMgb2YgbmV3IHN0dWJzLgorCisJKiBtc2Rvcy92eGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJTGV0IHRoZSBTeXN0ZW1fVGltZV9TZWxlY3RvciBjbG9jayB0aWNrLgorCisJKiBsb2FkZXIvZG9zL21vZHVsZS5jLCBtaXNjZW11L2luc3RyLmMsIG1zZG9zL2Rvc21lbS5jLCBncmFwaGljcy9kaXNwZGliLmMsIGdyYXBoaWNzL3ZnYS5jLCBpbmNsdWRlL21pc2NlbXUuaCwgaW5jbHVkZS92Z2EuaDoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlBZGFwdGVkIHRvIENyZWF0ZVN5c3RlbVRpbWVyIGludGVyZmFjZSBjaGFuZ2UuCisKKwkqIGlmMTYzMi9zeXN0ZW0uc3BlYywgaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgaW5jbHVkZS93aW5kb3dzLmgsIG1pc2MvY2FsbGJhY2suYywgbWlzYy9zeXN0ZW0uYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlDbGVhbmVkIHVwIENyZWF0ZVN5c3RlbVRpbWVyIGludGVyZmFjZSBmb3IgdXNlIHdpdGggMzItYml0IGNhbGxiYWNrcy4KKwkoTk9URTogMTYtYml0IGNhbGxiYWNrcyBzdGlsbCBkb24ndCB3b3JrISkKKworCSogd2luZG93cy9tZGkuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CisJLSBIYW5kbGUgV01fTURJUkVTVE9SRSBieSBjYWxsaW5nIFdNX1NZU0NPTU1BTkQgZm9yCisJdGhlIGNoaWxkIHdpbmRvdyBzbyB0aGF0IHRoZSBzeXN0ZW0gbWVudSBpcyBzZXQgY29ycmVjdGx5LgorCS0gSW4gTURJQ2FzY2FkZSBhbmQgTURJVGlsZSB1c2UgV01fTURJUkVTVE9SRSBtZXNzYWdlCisJdG8gcmVzdG9yZSBtYXhpbWl6ZWQgd2luZG93IHNvIHRoYXQgc3lzdGVtIG1lbnUgaXMKKwloYW5kbGVkIGNvcnJlY3RseS4KKworCSogaW5jbHVkZS9vbGVhdXRvLmgsIGluY2x1ZGUvd2luZXJyb3IuaCwgb2xlL01ha2VmaWxlLmluLCBvbGUvdHlwZWxpYi5jLCBvbGUvdmFyaWFudC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CisJSmVhbi1DbGF1ZGUgQ290ZSA8amVhbi1jbGF1ZGVAbWFjYWRhbWlhbi5jb20+CisJQWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlIFZBUklBTlQgQVBJcy4KKworCSogZmlsZXMvZHJpdmUuYzogVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgorCUZpeGVkIERSSVZFX0dldEZyZWVTcGFjZSB0byBoYW5kbGUgc3BhY2UgPiA0IEdCeXRlLgorCisJKiBkbGxzL2NvbWN0bDMyL3RyZWV2aWV3LmM6IEFsZXggUHJpZW0gPGFsZXhwQHNjaS5rdW4ubmw+CisJaGFuZGxlIFRWSUZfVEVYVCBieSBUUkVFVklFV19TZXRJdGVtIGFjY29yZGluZyB0byBNUyBkb2N1bWVudGF0aW9uLgorCWJldHRlciBoYW5kbGluZyBvZiBMUFNUUl9URVhUQ0FMTEJBQ0szMkEKKwlUUkVFVklFV19HZXROZXh0fFByZXZMaXN0SXRlbSBkaWRuJ3QgZGVzY2VuZCBpbnRvIHZpc2libGUgY2hpbGQgaXRlbXMuCisKKwkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlXYXJuIGlmIHR3byAuZXhlcyBjb25mbGljdCB3aXRoIGVhY2ggb3RoZXIgYW5kIHRoZSBzZWNvbmQgZG9lcyBub3QKKwloYXZlIHJlbG9jYXRpb24gcmVjb3Jkcy4KKworCSogbWlzYy9jb21tZGxnLmM6IFV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KKwlGaXhlZCBHZXRGaWxlVGl0bGUzMkEgbm90IGZpbGxpbmcgdXAgbHBUaXRsZSBpZiBscEZpbGUgZGlkbid0CisJY29udGFpbiAnLycsJ1xcJyBvciAnOicuCisKKwkqIGdyYXBoaWNzL2RkcmF3LmM6IFN0ZXBoZW4gQ3Jvd2xleSA8Y3Jvd0BkZWJpYW4ub3JnPgorCUZpeGVkIGEgcG90ZW50aWFsIGNyYXNoIGlmIGEgdXNhYmxlIHZpZGVvIG1vZGUgaXMgbm90IGRldGVjdGVkLgorCisJKiB0b29scy9tYWtlX2F1dGhvcnM6IFNjcmlwdCB0byBnZW5lcmF0ZSBhdXRob3JzIGZpbGVzCisKKwkqIGluY2x1ZGUvZGlucHV0LmgsIHdpbmRvd3MvZGlucHV0LmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CisJU3R1YnMgZm9yIElEaXJlY3RJbnB1dEVmZmVjdCBhbmQgSURpcmVjdElucHV0RGV2aWNlMkEgbWV0aG9kcywKKwlhcyB3ZWxsIGFzIEFkZFJlZigpLCBHZXRDYXBhYmlsaXRlcygpLCBFbnVtT2JqZWN0cygpLAorCUdldFByb3BlcnR5KCksIEdldE9iamVjdEluZm8oKSwgR2V0RGV2aWNlSW5mbygpLCBJbml0aWFsaXplKCksCisJYW5kIFJ1bkNvbnRyb2xQYW5lbCgpIGZvciBJRGlyZWN0SW5wdXREZXZpY2UuCisKKwkqIGdyYXBoaWNzL2RkcmF3LmM6IFJvYmVydCBSaWdncyA8cnJpZ2dzQHRlc3Nlci5jb20+CisJU2V0IHdpbmRvdyBmb2N1cyBpbiAgX2NvbW1vbl9JRGlyZWN0RHJhd19TZXREaXNwbGF5TW9kZSgpLgorCisJKiBtdWx0aW1lZGlhL21jaWNkYS5jOiBSb2JlcnQgUmlnZ3MgPHJyaWdnc0B0ZXNzZXIuY29tPgorCUFjY2VwdCBNQ0lfT1BFTiBhbmQgTUNJX0NMT1NFIG1lc3NhZ2VzIGluIE1DSUNEQVVESU9fRHJpdmVyUHJvYzMyKCkuCisKKwkqIGluY2x1ZGUvd2luLmgsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3MveDExZHJ2L2V2ZW50LmMsIHdpbmRvd3MveDExZHJ2L3duZC5jOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCVJlbW92ZWQgZGVmZXJyZWQgRXhwb3NlIGV2ZW50cyBoYW5kbGluZy4KKworCSogd2luZG93cy9kY2UuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJRG9uJ3QgY2xpcCBWaXNSZ24gYWdhaW5zdCBYIGRlc2t0b3AuCisKKwkqIGxvYWRlci9tb2R1bGUuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJTG9hZE1vZHVsZTMyL1dpbkV4ZWMzMiBzaG91bGQgcmV0dXJuIDE2LWJpdCBoSW5zdGFuY2UvaFRhc2suCisKKwkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCVNhbml0eSBjaGVjayBvbiBmb250IHNpemUuCisKKwkqIGRsbHMvY29tY3RsMzIvdHJlZXZpZXcuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJTWlzc2luZyBwYXJlbnRoZXNlcyBhZGRlZC4KKworV2VkIERlYyAgOSAxNjozNzowNSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KKworCSogbG9hZGVyL3Rhc2suYywgcmVsYXkzMi9rZXJuZWwzMi5zcGVjLCB3aW4zMi9jb25zb2xlLmMsIGluY2x1ZGUvd2luY29uLmg6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJRW5oYW5jZWQgV2luMzIgQ29uc29sZSAoWFRFUk0pCisJLSBpbnB1dGhhbmRsaW5nIGVuaGFuY2VkIChrZXlzIGFuZCBtb3VzZWNsaWNrcykKKwktIHdpbjMyIHN5bmNocm9uaXphdGlvbiAocGFydGlhbCkKKwktIGxvdHMgb2YgZW5oYW5jZW1lbnRzIHRvIGRyYXdpbmcgZnVuY3Rpb25zCisJLSBzaW1wbGUvY29tcGxleCBjb25zb2xlIChzaW1wbGUtc3RkaW4vc3Rkb3V0IC0+IGNvbXBsZXgteHRlcm0pLgorCisJKiBjb25zb2xlL01ha2VmaWxlLmluLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGNvbnNvbGUveHRlcm0uYywgaW5jbHVkZS9jb25zb2xlLmg6CisJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CisJQWRkIGEgZHJpdmVyIHRvIG9wZW4gdXAgYSBuZXcgeHRlcm0gd2luZG93IHdoZW5ldmVyIGNvbnNvbGUgb3V0cHV0IGlzCisJbmVlZGVkLiBEZXJpdmVkIGZyb20gY29uc29sZS93aW4zMi5jIGJ1dCB3ZSBhcmUgbm90IHlldCByZWFkeSB0byBtZXJnZQorCXRoZSBjb2RlIGNvbXBsZXRlbHkuCisKKwkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jLCBpbmNsdWRlL3dpbmRvd3MuaCwgdG9vbHMvZm50MmJkZi5jOgorCVBhYmxvIFNhcmF0eGFnYSA8c3J0eGdAY2hhbmFlLmFscGhhbmV0LmNoPgorCUltcHJvdmVkIHRoZSBoYW5kbGluZyBvZiBmb250IGVuY29kaW5ncy4KKworCSogbXNkb3MvZHBtaS5jLCBpbmNsdWRlL21pc2NlbXUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJSW1wbGVtZW50ZWQgRFBNSSBSTUNCcyB1c2luZyB0aGUgRE9TIHN1YnN5c3RlbSwgYW5kIGEgZmV3IG90aGVyCisJaW1wcm92ZW1lbnRzLiBBbHNvLCBzb21lIHNwZWNpYWwtY2FzZWQgc2hvcnRjdXQgcGF0aHMgd2lsbCBhbGxvdyBzb21lCisJY29tbW9uIHJlYWwtbW9kZSBjYWxsL1JNQ0IgY29tYmluYXRpb25zIHRvIHdvcmsgZXZlbiB3aXRob3V0IGNhbGxpbmcgdGhlCisJRE9TIHN1YnN5c3RlbSwgdGh1cyBsZXR0aW5nIEFQSXMgbGlrZSBET1NBU1BJIHdvcmsgd2l0aG91dCBhbnkgZGlydHkgaGFja3MKKwlldmVuIG9uIHBsYXRmb3JtcyB0aGF0IGNhbm5vdCB1c2UgZG9zbW9kLgorCisJKiBtdWx0aW1lZGlhL3RpbWUuYywgb2xlL2NvbXBvYmouYywgZmlsZXMvY2hhbmdlLmMsIGxvYWRlci9tb2R1bGUuYywgbWlzYy9semV4cGFuZC5jLCBtaXNjL21haW4uYywgY29udHJvbHMvbWVudS5jLCBjb250cm9scy9zY3JvbGwuYzoKKwlNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlTb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlIGFuZCBtZXNzYWdlcyByZW1vdmVkLgorCisJKiBvbGUvb2xlMm5scy5jOiBVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CisJU29tZSBzbWFsbCBjb3JyZWN0aW9ucyB0byBFbnVtU3lzdGVtTG9jYWxlczMyQVcKKworVHVlIERlYyAgOCAxNTowNjozOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KKworCSogdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvdHNfeGY4NnZtb2RlLmMsIGdyYXBoaWNzL2RkcmF3LmM6CisJVHJpZWQgYW5vdGhlciBrbHVkZ2UgZm9yIHRoZSBYbWQuaCBwcm9ibGVtLgorCisJKiB0c3gxMS9NYWtlZmlsZS5pbiwgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194Zjg2dm1vZGUuYywgY29uZmlndXJlLCBjb25maWd1cmUuaW4sIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS90c194Zjg2dm1vZGUuaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVyczoKKwlTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KKwlBZGRlZCBmdWxsc2NyZWVuIERHQSBzdXBwb3J0LgorCisJKiBtaXNjL21haW4uYzogUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CisJRml4ZWQgZHVtbXkgZW50cmllcyBpbiBNQUlOX1BhcnNlTGFuZ3VhZ2VPcHRpb24oKS4KKworCSogaW5jbHVkZS9tbXN5c3RlbS5oLCBtdWx0aW1lZGlhL21jaWNkYS5jOgorCUJyaWFuIEdlcnN0IDxiZ2Vyc3RAcXVhcmsudnBwbHVzLmNvbT4KKwlQcm9wZXJseSBpbXBsZW1lbnQgTUNJX0NEQV9TVEFUVVNfVFlQRV9UUkFDSy4KKwlGaXggYW4gb2ZmLWJ5LW9uZSBidWcgd2l0aCBNQ0lfU1RBVFVTX0xFTkdUSC4KKworCSogd2luZG93cy94MTFkcnYvZXZlbnQuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJU3VwZXJmbG91cyBXSU5BUEkgcmVtb3ZlZC4KKworCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCVdhcm4gYWJvdXQgaW52YWxpZCBlbnRyeXBvaW50cyAoY3JlYXRlZCBieSB2aXJ1c2VzKSB3aGljaCByZXN1bHQgaW4KKwlXaW5lIGNyYXNoZXMuCisKKwkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCUNyZWF0ZSBYMTEgcGFsZXR0ZSBvbiBEaXJlY3REcmF3U3VyZmFjZTo6U2V0UGFsZXR0ZSwgbm90IGJlZm9yZSAod2UKKwltaWdodCBub3QgaGF2ZSBhbiBYMTEgd2luZG93IHlldCkuCisKKwkqIGxvYWRlci9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCU1vdmUgVFdFQUtfSW5pdCBmcm9tIFVTRVIgdG8gR0RJSW5pdC4KKworCSogZ3JhcGhpY3MvcGFpbnRpbmcuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgbWlzYy9wcmludGRydi5jLCBtaXNjL3Nwb29sZXIuYywgcmVsYXkzMi9nZGkzMi5zcGVjOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCUZpeCBmb3IgU2V0QWJvcnRQcm9jMTYsIHN0dWIgZm9yIFNldEFib3J0UHJvYzMyIGFuZCB0aWR5IHVwIHNvbWUgb3RoZXIKKwlwcmludGluZyBmdW5jdGlvbnMuCisKKwkqIHdpbmRvd3MvZm9jdXMuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJRml4IGluY2x1ZGVzLgorCisJKiBncmFwaGljcy94MTFkcnYvdGV4dC5jOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCUZpeCBYMTFEUlZfRXh0VGV4dE91dCBmb3Igcm90YXRlZCB0ZXh0IGlmIGVpdGhlciBvZiBscER4LCBicmVha0V4dHJhCisJb3IgY2hhckV4dHJhIGFyZSBub24temVyby4KKworCSogaW5jbHVkZS9BdHRpYy9ncmFwaGljcy5oLCBtaXNjL3NoZWxsLmMsIHdpbmRvd3MvQXR0aWMvZ3JhcGhpY3MuYywgd2luZG93cy9NYWtlZmlsZS5pbiwgd2luZG93cy9ub25jbGllbnQuYywgd2luZG93cy9zY3JvbGwuYywgY29udHJvbHMvYnV0dG9uLmMsIGNvbnRyb2xzL2NvbWJvLmMsIGNvbnRyb2xzL2Rlc2t0b3AuYywgY29udHJvbHMvaWNvbnRpdGxlLmMsIGNvbnRyb2xzL21lbnUuYywgY29udHJvbHMvc2Nyb2xsLmMsIGRsbHMvY29tY3RsMzIvdXBkb3duLmMsIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsb3JkLmMsIGdyYXBoaWNzL21ldGFmaWxlZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCVJlcGxhY2UgR1JBUEhfIGZ1bmN0aW9ucyB3aXRoIFdpbiBTREsgZXF1aXZhbGVudHMuCisKK01vbiBEZWMgIDcgMTY6MjM6NDIgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CisKKwkqIGZpbGVzL2Rvc19mcy5jOiBBbGV4YW5kZXIgTGFyc3NvbiA8YWxsYUBseXNhdG9yLmxpdS5zZT4KKwlSZXZlcnRlZCBwcmV2aW91cyBwYXRjaC4KKworCSogaW5jbHVkZS9kb3NleGUuaDogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJRG9uJ3QgZGVmaW5lIE1aX1NVUFBPUlRFRCBvbiBub24taTM4NiBwbGF0Zm9ybXMuCisKKwkqIGxvYWRlci9kb3MvbW9kdWxlLmMsIG1zZG9zL2RwbWkuYzogT3ZlIEthYXZlbiA8b3Zla0BhcmN0aWNuZXQubm8+CisJRml4ZWQgRFBNSV9DYWxsUk1Qcm9jIChJIHRoaW5rKS4KKworCSogbWlzYy9uZXR3b3JrLmMsIHJlbGF5MzIvbXByLnNwZWM6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJU3R1YiBmb3IgTlBTR2V0UHJvdmlkZXJIYW5kbGVBLgorCisJKiB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jOiBCcmlhbiBHZXJzdCA8YmdlcnN0QHF1YXJrLnZwcGx1cy5jb20+CisJVGhlIHNjYW5jb2RlIFdpbmRvd3Mgc2VuZCBmb3IgZXh0ZW5kZWQga2V5cyBpcyB0aGUgc2NhbmNvZGUgb2YgdGhlCisJdW5leHRlbmRlZCBlcXVpdmFsZW50IG9mIHRoZSBrZXksIHBsdXMgdGhlIGV4dGVuZGVkIGZsYWcuCisKKwkqIGRsbHMvd2luYXNwaS93aW5hc3BpMTYuYzoKKwlBbmRyZWFzIE1vaHIgPG1vaHJAZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CisJRml4ZWQgYSByZWFsIG1vZGUgcHJvYmxlbS4KKworCSogbG9hZGVyL25lL21vZHVsZS5jOgorCUFuZHJlYXMgTW9ociA8bW9ockBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KKwlORV9NT0RVTEUuc3RhY2tfc2l6ZSB3YXMgc2V0IHRvIGEgcmlkaWN1bG91c2x5IHNtYWxsIHZhbHVlIG9mIDUuCisJV2luZG93cyBzZXRzIDB4MTQwMCBpbiBzdWNoIGNhc2VzIGZvciBwcm9ncmFtcy4KKworCSogY29udHJvbHMvc3RhdGljLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCVdlIGRvbid0IHlldCB3YW50IHRoZSBzdGF0aWMgY29udHJvbCB0byBjYWxsIERlc3Ryb3lJY29uLgorCisJKiB3aW5kb3dzL2NsYXNzLmM6IE5GIFN0ZXZlbnMgPG5vcm1hbkBhcmNhZHkudS1uZXQuY29tPgorCUFkZGVkIGNhc2UgZm9yIEdDV19BVE9NIGludCBHZXRDbGFzc0xvbmczMkEuCisKKwkqIG1pc2MvbmV0d29yay5jLCByZWxheTMyL21wci5zcGVjOiBHYWVsIGRlIENoYWxlbmRhciA8Z2FlbEBsaW1zaS5mcj4KKwlTdHViIGZvciBXTmV0T3BlbkVudW0zMlcuCisKKwkqIG11bHRpbWVkaWEvZHNvdW5kLmMsIHJlbGF5MzIvZHNvdW5kLnNwZWM6CisJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KKwlNb3JlIGdlbmVyYWwgY29kZSBjbGVhbnVwIGZvciByZWFkYWJpbGl0eS4KKwlBIGZldyBtb3JlIHBhcmFtZXRlciB2YWxpZGF0aW9uIGNoZWNrcy4KKwlSZXR1cm4gRFNfT0sgcmF0aGVyIHRoYW4gMCBpbiBhIG51bWJlciBvZiBmdW5jdGlvbnMuCisJRml4ZWQgcHJpbWFyeSBidWZmZXIgcmVmIGNvdW50IGJ1ZyBpbiBDcmVhdGVTb3VuZEJ1ZmZlcigpLgorCUhhbmRsZSAxLTMgYnl0ZSBzb3VuZCBmcmFnbWVudHMgdGhhdCB3b3VsZCBjYXVzZSBidWZmZXIgb3ZlcnJ1bnMuCisJQ2xlYXIgcHJpbWFyeSBidWZmZXIgd2l0aCBhIG5ldXRyYWwgdmFsdWUgaW5zdGVhZCBvZiBhbHdheXMgMAorCShiZWNhdXNlIDEyOCBpcyBuZXV0cmFsIGZvciA4LWJpdCBzb3VuZCkuCisJRml4IGJ1ZyB3aXRoIG1peGluZyA4LWJpdCBzb3VuZCBpbnRvIHRoZSBwcmltYXJ5IGJ1ZmZlci4KKwlCcm9rZSBvdXQgdGhlIG1haW4gYmxvY2sgaW4gRFNPVU5EX3RocmVhZCgpIHRvIGFub3RoZXIgZnVuY3Rpb24gZm9yCisJcmVhZGFiaWxpdHkuCisJSGFuZGxlICJubyBhdWRpbyIgYW5kICJhdWRpbyBidXN5IiBjYXNlcyBwcm9wZXJseSB3aGVuIGluaXRpYWxpemluZworCWRzb3VuZC4gUmVuYW1lIERsbENhblVubG9hZE5vdygpIHRvIERTT1VORF9EbGxDYW5VbmxvYWROb3coKS4KKworCSogZGVidWdnZXIvaGFzaC5jOiBPdmUgS2FhdmVuIDxvdmVrQGFyY3RpY25ldC5ubz4KKwlNYWRlIHZhcmlhYmxlcyBvcHRpbWl6ZWQgaW50byByZWdpc3RlcnMgYWNjZXNzaWJsZS4KKworCSogcmVsYXkzMi91c2VyMzIuc3BlYzoKKwlVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CisJVGhlIHNwZWMgZGVmaW5pdGlvbiBmb3IgTW9uaXRvckZyb21XaW5kb3cgd2FzIHdyb25nLgorCisJKiBtc2Rvcy9pbnQyMS5jOiBTdGVmYW4gTGVpY2h0ZXIgPHNsZUBjYW1saW5lLmNvbT4KKwlGaWxlIGhhbmRsZSBidWcgZml4LgorCisJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KKwlBZGRlZCBwYXJhZ3JhcGggYWJvdXQgZGlmZmVyZW50IGRsbCB2ZXJzaW9ucyBhbmQgc3RydWN0dXJlIHNpemVzLgorCisJKiBpbmNsdWRlL2NvbW1jdHJsLmg6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CisJQWRkZWQgbWlzc2luZyBUT09MSU5GTyBzdHJ1Y3R1cmUuCisKKwkqIG11bHRpbWVkaWEvbW1zeXN0ZW0uYzogQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgorCUZpeGVkIGEgaGVhcCBidWcuCisKKwkqIGxvYWRlci90YXNrLmMsIG1lbW9yeS9sb2NhbC5jLCBtZW1vcnkvc2VsZWN0b3IuYywgbWlzYy9jYWxsYmFjay5jLCBtc2Rvcy9kcG1pLmMsIG1zZG9zL2ludDQxLmMsIG1zZG9zL3Z4ZC5jLCBpZjE2MzIva2VybmVsLnNwZWMsIGlmMTYzMi90aHVuay5jLCBpbmNsdWRlL2NhbGxiYWNrLmgsIGluY2x1ZGUvbGR0LmgsIGluY2x1ZGUvd2luZG93cy5oOgorCUFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KKwktIFNldmVyYWwga2VybmVsLnNwZWMgcmV0dXJuIHR5cGUgbWlzbWF0Y2ggZml4ZXMKKwktIFtHU11ldFNlbGVjdG9yQmFzZSBXaW4zMnMgb2Zmc2V0IHN1cHBvcnQgYnkgVWxyaWNoIFdlaWdhbmQgKHRoYW5rcyB2Lm0uICEhKQorCS0gTW92ZSBBcHBUb1dpbmUvV2luZVRvQXBwIG1hY3JvcyBhcyBXMzJTX0FQUDJXSU5FIGV0Yy4gdG8gbGR0LmgKKwktIExvY2FsTm90aWZ5KCkgYmFzaWMgc3VwcG9ydAorCS0gRml4ZXMgZm9yIGxvY2FsIGhlYXAgaGFuZGxpbmcgd2l0aCBoZWFwIGhhbmRsZXMgY3JlYXRlZCBieSBWaXJ0dWFsKigpCisKKwkqIGdyYXBoaWNzL3gxMWRydi94Zm9udC5jOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUJ1Z2ZpeDogLW1pY3Jvc29mdC1zeW1ib2wgZW5jb2Rpbmcgd2FzIG5vdCByZWNvZ25pemVkLgorCisJKiB3aW5kb3dzL3dpbi5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlCdWdmaXg6IFdJTl9SZXNldFF1ZXVlV2luZG93cyB3b3VsZCBza2lwIHNvbWUgd2luZG93cy4KKworCSogdG9vbHMvYnVpbGQuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQWxsb3cgcmVjdXJzaXZlbHkgcmVlbnRlcmluZyBDQUxMMzJfTGFyZ2VTdGFjay4KKworCSogaW5jbHVkZS90dHlkcnYuaCwgd2luZG93cy90dHlkcnYvLmN2c2lnbm9yZSwgd2luZG93cy90dHlkcnYvTWFrZWZpbGUuaW4sIHdpbmRvd3MvdHR5ZHJ2L2NsaXBib2FyZC5jLCB3aW5kb3dzL3R0eWRydi9ldmVudC5jLCB3aW5kb3dzL3R0eWRydi9pbml0LmMsIHdpbmRvd3MvdHR5ZHJ2L2tleWJvYXJkLmMsIHdpbmRvd3MvdHR5ZHJ2L21vdXNlLmMsIHdpbmRvd3MvdHR5ZHJ2L3duZC5jLCBNYWtlZmlsZS5pbiwgY29uZmlndXJlLCBjb25maWd1cmUuaW46CisJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CisJQWRkZWQgdGhlIG5ldyBUVFkgZHJpdmVyLgorCisJKiBpbmNsdWRlL2NsaXBib2FyZC5oLCBpbmNsdWRlL2tleWJvYXJkLmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBpbmNsdWRlL3dpbi5oLCBpbmNsdWRlL3gxMWRydi5oLCB3aW5kb3dzL2NsaXBib2FyZC5jLCB3aW5kb3dzL2RlZnduZC5jLCB3aW5kb3dzL2RpbnB1dC5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2ZvY3VzLmMsIHdpbmRvd3Mva2V5Ym9hcmQuYywgd2luZG93cy9tZXNzYWdlLmMsIHdpbmRvd3Mvbm9uY2xpZW50LmMsIHdpbmRvd3Mvd2luLmMsIHdpbmRvd3Mvd2lucG9zLmMsIHdpbmRvd3MveDExZHJ2L01ha2VmaWxlLmluLCB3aW5kb3dzL3gxMWRydi9jbGlwYm9hcmQuYywgd2luZG93cy94MTFkcnYvZXZlbnQuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCB3aW5kb3dzL3gxMWRydi9rZXlib2FyZC5jLCB3aW5kb3dzL3gxMWRydi9tb3VzZS5jLCB3aW5kb3dzL3gxMWRydi93bmQuYzoKKwlQYXRyaWsgU3RyaWR2YWxsIDxwc0BsZWlzc25lci5zZT4KKwlNb3ZlZCBtb3JlIGNvZGUgdG8gdGhlIFgxMSBkcml2ZXIuCisKK1RodSBEZWMgIDMgMTY6Mjk6NTYgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CisKKwkqIG1zZG9zL2ludDEwLmMsIG1zZG9zL2ludDE2LmMsIG1zZG9zL2ludDIxLmMsIG1zZG9zL2ludDI5LmM6CisJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CisJQ2FsbCB0aGUgbmV3IGNvbnNvbGUgZHJpdmVyIGZvciBzb21lIHJvdXRpbmVzLiBUaGlzIGlzIG5vdCBjb21wbGV0ZWx5CisJZG9uZSB5ZXQgYW5kIG1vcmUgZm9yIHRlc3RpbmcgcHVycG9zZXMuCisKK1dlZCBEZWMgIDIgMTk6NTg6MDkgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CisKKwkqIGNvbmZpZ3VyZS5pbiwgY29uc29sZS8uY3ZzaWdub3JlLCBjb25zb2xlL01ha2VmaWxlLmluLCBjb25zb2xlL2dlbmVyaWMuYywgY29uc29sZS9pbnRlcmZhY2UuYywgY29uc29sZS9uY3Vyc2VzLmMsIGNvbnNvbGUvdHR5LmMsIGluY2x1ZGUvYWNjb25maWcuaCwgaW5jbHVkZS9jb25maWcuaC5pbiwgaW5jbHVkZS9jb25zb2xlLmgsIGluY2x1ZGUvd2lubnQuaCwgbG9hZGVyL21haW4uYywgbWlzYy9tYWluLmMsIE1ha2VmaWxlLmluLCBjb25maWd1cmU6CisJSm9zZXBoIFByYW5ldmljaCA8anByYW5ldmljaEBseWNvcy5jb20+CisJQWRkZWQgY29uc29sZSBzdXBwb3J0LgorCisJKiBncmFwaGljcy94MTFkcnYvb2VtYml0bWFwLmMsIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvZ2RpLmgsIGluY2x1ZGUveDExZHJ2LmgsIGxvYWRlci9tYWluLmMsIG9iamVjdHMvQXR0aWMvb2VtYml0bWFwLmMsIG9iamVjdHMvTWFrZWZpbGUuaW4sIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBncmFwaGljcy9tZXRhZmlsZWRydi9pbml0LmMsIGdyYXBoaWNzL3BzZHJ2L2luaXQuYywgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBncmFwaGljcy93aW4xNmRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L01ha2VmaWxlLmluLCBncmFwaGljcy94MTFkcnYvaW5pdC5jOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCU1vdmUgT0VNIHJlc291cmNlcyB0byB0aGUgeDExZHJ2LgorCisJKiBmaWxlcy9kb3NfZnMuYzogQWxleGFuZGVyIExhcnNzb24gPGFsbGFAbHlzYXRvci5saXUuc2U+CisJT3BlbmluZyBhIGZpbGUgaW4gYSBkaXJlY3Rvcnkgd2hpY2ggZG9lc24ndCBleGlzdCByZXR1cm5zCisJRVJST1JfRklMRV9OT1RfRk9VTkQgaW5zdGVhZCBvZiBFUlJPUl9QQVRIX05PVF9GT1VORC4KKworCSogbWVtb3J5L2F0b20uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJSGFuZGxlIGF0b21zICIjIG5vbiBudW1iZXIiIChvcmFjbGUgY2xpZW50KS4KKworVHVlIERlYyAgMSAxNjoyMzoxOSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KKworCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBtaXNjL2Vycm9yLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJUmVuYW1lZCBLRVJORUwuMzI3IHRvIEhhbmRsZVBhcmFtRXJyb3IgKGFzIGluICdVbmRvYy4gV2luZG93cycpLgorCUZpeGVkIHdyb25nIG9yZGluYWxzL3Byb3RvdHlwZSBmb3IgTWFwUHJvY2Vzc0hhbmRsZS9HZXRNb2R1bGVGaWxlTmFtZTMyLgorCUFkZGVkIG5hbWVzIGZvciBzb21lIHVuZG9jdW1lbnRlZCBleHBvcnRzLgorCisJKiBtZW1vcnkvZ2xvYmFsLmMsIGlmMTYzMi90aHVuay5jOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUltcGxlbWVudGVkIEdsb2JhbENoYW5nZUxvY2tDb3VudCAoS0VSTkVMLjM2NSkuCisKKwkqIGlmMTYzMi90b29saGVscC5zcGVjLCBpbmNsdWRlL3Rvb2xoZWxwLmgsIG1lbW9yeS9oZWFwLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJSW1wbGVtZW50ZWQgTG9jYWwzMkluZm8sIHN0dWJzIGZvciBMb2NhbDMyRmlyc3QvTmV4dCAoS0VSTkVMLjQ0NC00NDYpLgorCisJKiBpZjE2MzIvZ2RpLnNwZWMsIG9iamVjdHMvZ2Rpb2JqLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJSW1wbGVtZW50ZWQgR2RpRnJlZVJlc291cmNlcyAoR0RJLjYwOSkuCisKKwkqIGluY2x1ZGUvZHNvdW5kLmgsIG11bHRpbWVkaWEvZHNvdW5kLmM6CisJUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KKwlGaXhlZCA4LWJpdCBXQVYgZm9ybWF0IGhhbmRsaW5nIChpdCBpcyB1bnNpZ25lZCBkYXRhKS4KKwlGaXhlZCBvZmYtYnktb25lIGNoZWNrcyBmb3IgYnVmZmVyIHdyYXAuCisJSW5jcmVtZW50IHJlZiBjb3VudCBmb3IgcHJpbWFyeSBidWZmZXIgaW4gQ3JlYXRlU291bmRCdWZmZXIoKS4KKwlBZGRlZCBEU0JQTl9PRkZTRVRTVE9QIHN1cHBvcnQgdG8gcG9zaXRpb24gbm90aWZpY2F0aW9uIGNvZGUuCisJTG90cyBvZiBtaW5vciBwYXJhbWV0ZXIgdmFsaWRhdGlvbiBjaGVja3MuCisJU3R1YnMgZm9yOiBJRGlyZWN0U291bmRfaW5pdGlhbGl6ZSgpLCBJRGlyZWN0U291bmRfQ29tcGFjdCgpLAorCWFuZCBJRGlyZWN0U291bmRfR2V0U3BlYWtlckNvbmZpZygpLgorCUZpeGVkIGZyZXEgc2hpZnRpbmcgd2l0aCAxNi1iaXQgZGF0YSBwcm9ibGVtLCBmaXhlZCA4Yml0PC0+MTZiaXQKKwljb252ZXJzaW9uLgorCUxvdHMgb2YgdGhyZWFkIGxvY2tpbmcgZm9yIERpcmVjdFNvdW5kIGJ1ZmZlcnMuCisJRGVhbGxvYyBwcmltYXJ5IGJ1ZmZlciB3aGVuIGRzb3VuZCBpcyBkZWFsbG9jYXRlZC4KKworCSogaW5jbHVkZS93aW50eXBlcy5oOgorCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KKwlBZGRlZCB0aGUgVEVYVCgpIGFuZCBNQUtFTFJFU1VMVCgpIGRlZmluaXRpb25zLgorCisJKiB3aW5kb3dzL3F1ZXVlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCVNtYWxsIGNoYW5nZS4KKworCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KKwlSZXZlcnQgbWlzZ3VpZGVkIGNoYW5nZSB0byBpbnN0YWxsX2xpYiB0aGF0IGJyb2tlIC1kaXNhYmxlLWxpYgorCWNvbmZpZ3VyZSBvcHRpb24uCisKKwkqIG1pc2MvbWFpbi5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlOZXcgcGFyYW1ldGVyIFNQSV9HRVREUkFHRlVMTFdJTkRPVy4KKwlPbmUgbWlzc2luZyBicmVhayBpbiBTUElfR0VURFJBR0ZVTExXSU5ET1cuCisKKwkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCU5ldyBmdW5jdGlvbnMgSUxHbG9iYWxDbG9uZS9JTEdsb2JhbEZyZWUuCisKKwkqIGRvY3VtZW50YXRpb24vcHJpbnRpbmc6CisJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJQWRkIGEgbm90ZSBhYm91dCBXaW5QcmludGVycy4KKworCSogcmVsYXkzMi9udGRsbC5zcGVjLCByZWxheTMyL29sZTMyLnNwZWMsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJQWRkZWQgc29tZSBzdHVicywgc29tZSBwdHItPnN0ciBjb252ZXJzaW9ucy4KKworCSogZ3JhcGhpY3MvZGRyYXcuYywgaW5jbHVkZS9kZHJhdy5oLCByZWxheTMyL2RkcmF3LnNwZWM6CisJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CisJLSBhZGRlZCBkZWZpbml0aW9uIG9mIERpcmVjdERyYXdDcmVhdGVDbGlwcGVyLgorCS0gbW9yZSB2ZXJzYXRpbGUgc3VwcG9ydCBvZiBzdXJmYWNlcyAvIGJldHRlciBzdXJmYWNlIGRlc2NyaXB0aW9uIHN1cHBvcnQuCisKKwkqIGRsbHMvc2hlbGwzMi9zaGVsbDMyX21haW4uYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUZpeGVkIHdyb25nIHBhcmFtZXRlciBjb3VudCBmb3IgU0hDaGFuZ2VOb3RpZnlEZXJlZ2lzdGVyLCAgU0hGcmVlVW51c2VkTGlicmFyaWVzLgorCU5ldyBmdW5jdGlvbnMgUGFyc2VGaWVsZCwgR2V0L1NldEluc3RhbmNlRXhwbG9yZXIoKSwgUGF0aElzVU5DLCBQYXRoSXNSZWxhdGl2ZS4KKwlTdHVicyBTSFdhaXRGb3JGaWxlVG9PcGVuLCBQYXRoRmluZE9uUGF0aC4KKworCSogcmVsYXkzMi91c2VyMzIuc3BlYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJU21hbGwgY2hhbmdlcyB0byBwcmludCB0aGUgc3RyaW5ncyBpbiB0aGUgcmVsYXktdHJhY2UuCisKKwkqIHdpbmRvd3MvY2xhc3MuYzogTkYgU3RldmVucyA8bm9ybWFuQGFyY2FkeS51LW5ldC5jb20+CisJVGhlIGNsYXNzIG5hbWUgbmVlZHMgdG8gYmUgY29udmVydGVkIHRvIGEgZ2V0cHRyLgorCisJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJRml4ZWQgbWVtb3J5L3N0YXR1cyByZWNvdmVyeSB3aGVuIGVycm9yIG9jY3VyZWQgaW4gTUlESV9tY2lPcGVuLgorCUZpeGVkIHN1cHBvcnQgZm9yIFJNSUQgZmlsZXMgaW4gTUlESV9tY2lPcGVuLgorCUZpeGVkIGJ1ZyBmb3IgcGxheWluZyBNSURJIGZpbGVzIHdpdGggdGVtcG8gY2hhbmdlcy4gU291bmQgb3V0cHV0IGlzCisJbm93IGNvcnJlY3QsIGJ1dCBsZW5ndGggb2YgdHJhY2tzIChhbmQgdGhlcmVmb3JlIG9mIHdob2xlIGZpbGUpIGlzIG5vdAorCWNvcnJlY3QuCisJQ2hhbmdlZCBlcnJvciB2YWx1ZXMgKElOVEVSTkFMID0+IElOVkFMSURfRklMRSkgd2hlbiBmaWxlIGNhbm5vdCBiZSByZWFkLgorCisJKiBtdWx0aW1lZGlhL21jaXdhdmUuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJRml4ZWQgbWVtb3J5L3N0YXR1cyByZWNvdmVyeSB3aGVuIGVycm9yIG9jY3VyZWQgaW4gV0FWRV9tY2lPcGVuLgorCUNoYW5nZWQgZXJyb3IgdmFsdWVzIChJTlRFUk5BTCA9PiBJTlZBTElEX0ZJTEUpIHdoZW4gZmlsZSBjYW5ub3QKKwliZSByZWFkLgorCisJKiBtdWx0aW1lZGlhL21zdmlkZW8uYywgcmVsYXkzMi9tc3ZmdzMyLnNwZWM6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJU3R1YnMgZm9yIE1DSVduZENyZWF0ZVtBfFddLgorCisJKiBtaXNjL3Zlci5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlWZXJRdWVyeVZhbHVlLCBidWdmaXg6IHdlIGNhbnQgY29udmVydCBiaW5hcnkgZGF0YSB3aXRoCisJSEVBUF9zdHJkdXBXdG9BIChcVmFyRmlsZUluZm9cVHJhbnNsYXRpb24pLgorCitNb24gTm92IDMwIDE3OjQxOjE3IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgorCisJKiByZWxheTMyL2FkdmFwaTMyLnNwZWMsIHdpbjMyL2FkdmFwaS5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCVN0dWJzIGZvciBFbnVtU2VydmljZVN0YXR1czMyLCBzbWFsbCBjaGFuZ2VzLgorCisJKiBvYmplY3RzL2N1cnNvcmljb24uYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJTG9hZCBub3cgdGhlIGZpcnN0IGljb24gZnJvbSB0aGUgKi5hbmkgZmlsZSBpbnN0ZWFkIG9mIGNyYXNoaW5nLgorCisJKiBtaXNjZW11L21haW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJRml4IHdhcm5pbmdzIGluIG1pc2NlbXUvbWFpbi5jLgorCisJKiBpbmNsdWRlL3dpbmRvd3MuaDoKKwlVd2UgQm9ubmVzIDxib25AZWxla3Ryb24uaWtwLnBoeXNpay50dS1kYXJtc3RhZHQuZGU+CisJLSBhZGRlZCBzb21lIGRlZmluZXMgYXJvdW5kIHRoZSBDb21tUG9ydCAoUFVSR0VfWFhYIGFuZCBNU19YWFhfT04pCisJLSBhZGRlZCB0aGUgRExHVEVNUExBVEUgYW5kIERMR0lURU1URU1QTEFURSBzdHJ1Y3R1cmVzCisJLSBhZGRlZCB0aGUgZnVuY3Rpb24gZGVmaW5pdGlvbiBmb3IgU3RhcnRQYWdlLEVuZFBhZ2UsR2V0Q29tbU1hc2ssCisJCUdldENvbW1Nb2RlbVN0YXR1cyBhbmQgUHVyZ0NvbW0sV2FpdENvbW1FdmVudC4KKworCSogd2luZG93cy9kZWZ3bmQuYzogUGF1bCBRdWlubiA8UGF1bFFAY29yZWwuY29tPgorCUZpeGVkIGFjdGl2YXRpb24vRm9jdXMgbWVzc2FnZSBvcmRlciBwcm9ibGVtIHdoZW4gY3JlYXRpbmcgYSBuZXcgSFdORC4KKworCSogd2luZG93cy93aW5wb3MuYywgaWYxNjMyL3VzZXIuc3BlYywgaW5jbHVkZS93aW5kb3dzLmgsIHJlbGF5MzIvdXNlcjMyLnNwZWM6CisJUGF1bCBRdWlubiA8UGF1bFFAY29yZWwuY29tPgorCUltcGxlbWVudGF0aW9uIG9mIENoaWxkV2luZG93RnJvbVBvaW50RXggZnVuY3Rpb25zLgorCisJKiBtaXNjL3JlZ2lzdHJ5LmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KKwlGaXhlZCByZWdpc3RyeSBxdWVyeSBlcnJvciB2YWx1ZTogbm93IHJldHVybnMgRVJST1JfRklMRV9OT1RfRk9VTkQuCisKKwkqIG9iamVjdHMvYml0bWFwLmMsIG9iamVjdHMvY3Vyc29yaWNvbi5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL3BhbGV0dGUuYzoKKwlIdXcgRCBNIERhdmllcyA8ZGF2aWVzaEBhYmFjdXMucGh5c2ljcy5veC5hYy51az4KKwlHZXRTeXN0ZW1QYWxldHRlRW50cmllcyByZXR1cm5zIHBhbGV0dGUgc2l6ZSBpZiBlbnRyaWVzPT1OVUxMLgorCVVzZSB0aGlzIGluc3RlYWQgb2YgQ09MT1JfR2V0U3lzdGVtUGFsZXR0ZVNpemUuCisKKwkqIHJlbGF5MzIvZHNvdW5kLnNwZWMsIG11bHRpbWVkaWEvZHNvdW5kLmM6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJSW1wbGVtZW50ZWQgY2xhc3MgZmFjdG9yeSBmb3IgZHNvdW5kLgorCisJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIG1pc2MvY29tbS5jOgorCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KKwktIGZpeGVkIGEgbWluaW1hbCBlcnJvciBpbiBHZXRDb21tTWFzayBkZWZpbml0aW9uLgorCS0gYWRkcyBzdHVicyBmb3IgR2V0Q29tbU1vZGVtU3RhdHVzIGFuZCBXYWl0Q29tbUV2ZW50LgorCisJKiBpbmNsdWRlL3htYWxsb2MuaCwgbGlicmFyeS93aW5lc3R1Yi5jOgorCVV3ZSBCb25uZXMgPGJvbkBlbGVrdHJvbi5pa3AucGh5c2lrLnR1LWRhcm1zdGFkdC5kZT4KKwlGaXhlcyBmb3IgQysrIFdpbmVsaWIgY29tcGlsYXRpb24uCisKKwkqIG9sZS9jb21wb2JqLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCUJ1Z2ZpeDogc2Vjb25kIFJlZ09wZW5LZXkgc2hvdWxkIHVzZSBDTFNJRGtleSBpbnN0ZWFkIG9mIEhLRVlfQ0xBU1NFU19ST09ULgorCitGcmkgTm92IDI3IDE2OjA2OjA4IDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgorCisJKiBCVUdTLCBkb2N1bWVudGF0aW9uL2J1Z3JlcG9ydHMsIGRvY3VtZW50YXRpb24vZGVidWdnaW5nLCBkb2N1bWVudGF0aW9uL25vLXdpbmRvd3MsIGRvY3VtZW50YXRpb24vd2luZS5tYW46CisJSmFtZXMgSnVyYW4gPGpyajEyMEBwc3UuZWR1PgorCURvY3VtZW50YXRpb24gdXBkYXRlcy4KKworCSogTWFrZWZpbGUuaW46IEphbWVzIEp1cmFuIDxqcmoxMjBAcHN1LmVkdT4KKwlGaXhlZCAnbWFrZSBpbnN0YWxsJyB0byByZWFsbHkgY2hlY2sgZm9yIGxpYndpbmUuYSBiZWZvcmUgaW5zdGFsbGluZworCWl0LgorCisJKiBncmFwaGljcy9kZHJhdy5jLCBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmM6CisJU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CisJQWRkZWQgYSBuZXcgY21kbGluZSBzd2l0Y2ggdG8gZGlzYWJsZSBYRjg2IERHQSBFeHRlbnNpb25zLCAtbm9kZ2EuCisKKwkqIGZpbGVzL2RyaXZlLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KKwlJbXByb3ZlZCBHZXREaXNrRnJlZVNwYWNlMzJBKCkuCisKK1RodSBOb3YgMjYgMTY6MzI6MDAgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CisKKwkqIHdpbmRvd3Mvd2luLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCVJlbW92ZSBpbmNsdWRlZCBjb2xvci5oLgorCisJKiBsb2FkZXIvcGVfaW1hZ2UuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJUmVtb3ZlIHVubmVjZXNzYXJ5IGNoZWNrIGZvciBlbnRyeXBvaW50IGFkZHJlc3MgKHRlc3QgYmluYXJ5IHdhcworCWluZmVjdGVkIGJ5IGEgdmlydXMgd2hpY2ggdXNlcyBpbnZhbGlkIFBFIGxvYWRpbmcgc3R1ZmYpLgorCisJKiBncmFwaGljcy9wYWludGluZy5jLCByZWxheTMyL2dkaTMyLnNwZWM6CisJVXdlIEJvbm5lcyA8Ym9uQGVsZWt0cm9uLmlrcC5waHlzaWsudHUtZGFybXN0YWR0LmRlPgorCUFkZGVkIHN0dWJzIGZvciBTdGFydHBhZ2UgYW5kIEVuZFBhZ2UuCisKKwkqIGlmMTYzMi90aHVuay5jLCBvYmplY3RzL2RjLmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJUmVtb3ZlZCBzb21lIHVubmVjZXNzYXJ5IEZJWE1FIG91dHB1dHMuCisKKwkqIGlmMTYzMi9rZXJuZWwuc3BlYywgbG9hZGVyL3Rhc2suYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlJbXBsZW1lbnRlZCBLRVJORUwuNjAyIGFuZCBzdHViIGZvciBLRVJORUwuNDkwLgorCisJKiBvbGUvb2xlMm5scy5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlCdWdmaXg6IERvICpub3QqIHplcm8gb3V0IG91dHB1dCBidWZmZXIgaW4gR2V0TnVtYmVyRm9ybWF0MzJbQVddLgorCitXZWQgTm92IDI1IDE4OjE1OjUzIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgorCisJKiBvbGUvbmxzL2dyYy5ubHMsIG9sZS9ubHMvc2t5Lm5scywgb2xlL25scy90aGEubmxzLCBvbGUvbmxzL3Ryay5ubHMsIG9sZS9vbGUybmxzLmM6CisJUGFibG8gU2FyYXR4YWdhIDxzcnR4Z0BjaGFuYWUuYWxwaGFuZXQuY2g+CisJU21hbGwgZml4ZXMuCisKKwkqIGxvYWRlci9uZS9yZXNvdXJjZS5jLCBpbmNsdWRlL21vZHVsZS5oLCBsb2FkZXIvcmVzb3VyY2UuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlNb3ZlZCAuLi5SZXNvdXJjZTE2IHJvdXRpbmVzIHRvIGxvYWRlci9yZXNvdXJjZS5jLgorCUltcGxlbWVudGVkIGFjY2Vzc2luZyBQRS1maWxlIHJlc291cmNlcyB3aXRoIDE2LWJpdCByZXNvdXJjZSByb3V0aW5lcy4KKworCSogaWYxNjMyL2tlcm5lbC5zcGVjLCBsb2FkZXIvbmUvTWFrZWZpbGUuaW4sIGxvYWRlci9uZS9jb252ZXJ0LmM6CisJVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJSW1wbGVtZW50YXRpb24gb2YgUEUtPk5FIHJlc291cmNlIGNvbnZlcnNpb24gcm91dGluZXMgKEtFUk5FTC42MTUtNjE4KS4KKworCSogaW5jbHVkZS9vbGVhdXRvLmgsIG9sZS9vbGUyZGlzcC5jLCByZWxheTMyL29sZWF1dDMyLnNwZWM6CisJRnJhbmNpcyBCZWF1ZGV0IDxmcmFuY2lzQG1hY2FkYW1pYW4uY29tPgorCUltcGxlbWVudGVkIDMgbWV0aG9kczogU3lzQWxsb2NTdHJpbmdMZW4oKSwgU3lzUmVBbGxvY1N0cmluZ0xlbigpCisJYW5kIFN5c1N0cmluZ0xlbigpLiBFbnN1cmUgdGhhdCB0aGUgQlNUUiBvYmplY3RzIHdlcmUgYWxsb2NhdGVkCisJYWNjb3JkaW5nIHRvIHRoZSBXaW5kb3dzIGRvY3VtZW50YXRpb24uCisKKwkqIGRsbHMvc2hlbGwzMi9NYWtlZmlsZS5pbiwgZGxscy9zaGVsbDMyL3BpZGwuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NoZWxscGF0aC5jLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jLCBpbmNsdWRlL3NoZWxsLmgsIHJlbGF5MzIvc2hlbGwzMi5zcGVjOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCU1vdmVkIGV4aXN0aW5nIHBhdGggLSBmdW5jdGlvbnMgdG8gc2hlbGxwYXRjaC5jLgorCU5ldzogUGF0aFJlbW92ZUJsYW5rczMyQXxXLCAgUGF0aE1hdGNoU3BlYzMyQXxXLAorCVBhdGhTZXREbGdJdGVtUGF0aDMyQXxXLgorCisJKiBkbGxzL3NoZWxsMzIvZm9sZGVycy5jLCBkbGxzL3NoZWxsMzIvc2hlbGxsaW5rLmMsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBpbmNsdWRlL3NobG9iai5oOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCU1vdmVkIGV4aXN0aW5nIElTaGVsbExpbmsgY2xhc3MuIE5ldyBzdHVicyBmb3IgSVNoZWxsTGlua1cuCisKKwkqIGluY2x1ZGUvYml0bWFwLmgsIGluY2x1ZGUvY29sb3IuaCwgaW5jbHVkZS9nZGkuaCwgaW5jbHVkZS94MTFkcnYuaCwgaW5jbHVkZS94MTFmb250LmgsIG1pc2MvbWFpbi5jLCBvYmplY3RzL2JpdG1hcC5jLCBvYmplY3RzL2NvbG9yLmMsIG9iamVjdHMvZGMuYywgb2JqZWN0cy9nZGlvYmouYywgd2luZG93cy9BdHRpYy9ncmFwaGljcy5jLCB3aW5kb3dzL2RjZS5jLCB3aW5kb3dzL2Rpc3BsYXkuYywgd2luZG93cy9ldmVudC5jLCB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy9zY3JvbGwuYywgd2luZG93cy9zeXNtZXRyaWNzLmMsIHdpbmRvd3MvdXNlci5jLCBncmFwaGljcy9kZHJhdy5jLCBncmFwaGljcy9wYWludGluZy5jLCBncmFwaGljcy93aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2JpdG1hcC5jLCBncmFwaGljcy94MTFkcnYvYnJ1c2guYywgZ3JhcGhpY3MveDExZHJ2L2NsaXBwaW5nLmMsIGdyYXBoaWNzL3gxMWRydi9kaWIuYywgZ3JhcGhpY3MveDExZHJ2L2dyYXBoaWNzLmMsIGdyYXBoaWNzL3gxMWRydi9pbml0LmMsIGdyYXBoaWNzL3gxMWRydi9wZW4uYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6CisJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJUmVtb3ZlIFhfRENfSU5GTyBmcm9tIERDIGFuZCBtYWtlIGl0IGJlaGF2ZSBsaWtlIGFueSBvdGhlciBQREVWSUNFLgorCisJKiBpbmNsdWRlL21pc2NlbXUuaCwgbXNkb3MvZHBtaS5jLCBtc2Rvcy9pbnQyMS5jLCBtc2Rvcy9pbnQyNS5jLCBtc2Rvcy9pbnQyNi5jLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy94bXMuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlDaGFuZ2VkIENUWF9TRUdfT0ZGX1RPX0xJTiB0byBhbGxvdyBsaW5lYXIgYWRkcmVzc2VzIGluIDMyLWJpdAorCXJlZ2lzdGVycyAodXNlZCBieSBEZXZpY2VJb0NvbnRyb2wpLiBBZGFwdGVkIGFsbCB1c2Vycy4KKworCSogaW5jbHVkZS93aW5pb2N0bC5oLCB3aW4zMi9kZXZpY2UuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlJbXBsZW1lbnRlZCAobW9zdCkgVldpbjMyLlZ4RCBEZXZpY2VJb0NvbnRyb2wgcm91dGluZXMuCisKK1R1ZSBOb3YgMjQgMjA6NDc6MTcgMTk5OCAgQWxleGFuZHJlIEp1bGxpYXJkICA8anVsbGlhcmRAYXJyYWtpcy5saWdodG5pbmcuY2g+CisKKwkqIGluY2x1ZGUvdGhyZWFkLmgsIHNjaGVkdWxlci90aHJlYWQuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlCdWdmaXg6IFNldCB0aGUgVEVCRl9XSU4zMiBmbGFnIGluIHRlYi5mbGFncyBmb3IgMzItYml0IHRocmVhZHMuCisKKwkqIGxvYWRlci90YXNrLmM6IFVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUJ1Z2ZpeDogQ2FsbCBJbml0VGhyZWFkSW5wdXQgaW4gR2V0RmFzdFF1ZXVlIHdpdGggY29ycmVjdCBwYXJhbWV0ZXIKKwlmb3IgMzItYml0IHF1ZXVlcy4KKworCSogd2luMzIva2VybmVsMzIuYzogVWxyaWNoIFdlaWdhbmQgPHdlaWdhbmRAaW5mb3JtYXRpay51bmktZXJsYW5nZW4uZGU+CisJQnVnZml4OiBbUUZdVF9UaHVuayBzaG91bGQgY2xlYXIgSElXT1JEKEVBWCkgb24gcmV0dXJuLgorCUJ1Z2ZpeDogaGFjayBmb3Igc3R1cGlkIFVTRVIzMiBDYWxsYmFja0dsdWVMUyByb3V0aW5lIGluIENvbW1vbjMyVGhrTFMuCisKKwkqIGlmMTYzMi90aHVuay5jOiBVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlCdWdmaXg6IEJhZCBqdW1wIGdlbmVyYXRlZCBpbiBUSFVOS19BbGxvY0xTVGh1bmtsZXQuCisJQnVnZml4OiBGb3Jnb3QgdG8gY29udmVydCBzZWdwdHIgaW4gQWxsb2NMU1RodW5rbGV0Q2FsbGJhY2tFeC4KKworCSogZ3JhcGhpY3MveDExZHJ2L3hmb250LmM6IEVyaWMgV2FybmtlIDxlcmljQHNub3dtb29uLmNvbT4KKwlEb24ndCBtYXRjaCBhZ2FpbnN0IFN5bWJvbCBvciBOaWwgZm9udHMuCisKKwkqIG1lbW9yeS9nbG9iYWwuYzogU3RlcGhlbiBDcm93bGV5IDxjcm93QGRlYmlhbi5vcmc+CisJUmV0dXJuIHRoZSAiYnVmZmVycyIgYW5kICJjYWNoZWQiIG1lbW9yeSBhcyBmcmVlIHNpbmNlIGl0IGlzCisJZGVhbGxvY2F0ZWQgd2hlbiBhIHByb2dyYW0gbmVlZHMgaXQgYW55d2F5LgorCisJKiB3aW5kb3dzL2RpYWxvZy5jLCBpbmNsdWRlL3dpbmRvd3MuaDoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlCdWdmaXg6IFNldERsZ0l0ZW1UZXh0MzIgcmV0dXJucyBCT09MIG5vdCB2b2lkLgorCisJKiByZWxheTMyL3VzZXIzMi5zcGVjLCB3aW5kb3dzL3VzZXIuYzoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlOZXcgc3R1YnMgR2V0VXNlck9iamVjdEluZm9ybWF0aW9uQXxXLgorCisJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCVJlbW92ZWQgbGVmdCBvdmVyICdzaG93JyBhbmQgdXNlbGVzcyBkZWFkYmVlZiBjaGVja2luZyB3aGljaCBkb2Vzbid0CisJd29yay4KKworCSogbG9hZGVyL3BlX2ltYWdlLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCUFkanVzdCBicm9rZW4gZW50cnlwb2ludCBhZGRyZXNzZXMuICh3aW45OCBub3RlcGFkLmV4ZSkKKworCSogZG9jdW1lbnRhdGlvbi9zdGF0dXMvbXVsdGltZWRpYTogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJVXBkYXRlZCBhY2NvcmRpbmcgdG8gZGV2ZWxvcG1lbnQuCisKKwkqIGlmMTYzMi9tbXN5c3RlbS5zcGVjLCByZWxheTMyL3dpbm1tLnNwZWM6CisJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJU29tZSBuZXcgc3R1YnMgKG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zLCBzb21lIG1jaSBmdW5jdGlvbnMsIGFuZAorCXNvbWUgbW1pbyBmdW5jdGlvbnMpLgorCisJKiBtdWx0aW1lZGlhL21pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJTW92ZWQgTUNJIHBhcnQgdG8gbWNpbWlkaS5jIDsgYWRkZWQgRHJpdmVyUHJvYy4KKworCSogbXVsdGltZWRpYS9hdWRpby5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlNb3ZlZCBNQ0kgcGFydCB0byBtY2l3YXZlLmMgOyBhZGRlZCBzb21lIGVycm9yIGNoZWNraW5nIDsgYWRkZWQKKwlEcml2ZXJQcm9jCisKKwkqIGluY2x1ZGUvZGVidWcuaCwgaW5jbHVkZS9kZWJ1Z2RlZnMuaCwgbXVsdGltZWRpYS9NYWtlZmlsZS5pbjoKKwlFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlBZGRlZCBtY2ltaWRpIGFuZCBtY2l3YXZlLgorCisJKiBtdWx0aW1lZGlhL21jaW1pZGkuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJRml4ZWQgYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQgOyBmaXhlZCBwYXVzZS9yZXN1bWUgY29tbWFuZHMgOyBmaXhlZAorCXNlZWsgY29tbWFuZC4KKworCSogbXVsdGltZWRpYS9tY2l3YXZlLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCVN0YXJ0aW5nIHdyaXRpbmcgTUNJIHBhcnQgOyBmaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZC4KKworCSogbXVsdGltZWRpYS9tbWlvLmM6IEVyaWMgUG91ZWNoIDxFcmljLlBvdWVjaEB3YW5hZG9vLmZyPgorCUFkZGVkIHNvbWUgbWlzc2luZyBzdHVicyBpbiAzMiBiaXQgcGFydC4KKworCSogbXVsdGltZWRpYS9tY2lzdHJpbmcuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJTWFkZSB1c2Ugb2YgbmV3IDE2LzMyIE1DSSBtZXNzYWdlIGhhbmRsaW5nIGluIG1tc3lzdGVtLmMuCisKKwkqIGluY2x1ZGUvbW1zeXN0ZW0uaCwgaW5jbHVkZS9tdWx0aW1lZGlhLmg6CisJRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgc29tZSBuZXcgZnVuY3Rpb25zL3N0cnVjdHVyZXMgZGVmaW5pdGlvbnMuKEkgY291bGRuJ3QgZ2V0IGFsbAorCXRoZSBtYW5pZmVzdCBjb25zdGFudHMgdmFsdWVzIHRoYXQgTVMgd2FzIHJlZmVycmluZyB0byBpbiBpdHMgc3BlY3MuLi4KKwlpZiBzb21lb25lIGhhcyB0aGVtLi4uKQorCisJKiBtdWx0aW1lZGlhL21jaWFuaW0uYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IG1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZSBoYW5kbGluZworCWluIG1tc3lzdGVtLmMgOyBmaXhlZCBidWcgaW4gTUNJX0lORk8gY29tbWFuZC4KKworCSogbXVsdGltZWRpYS9tY2ljZGEuYzogRXJpYyBQb3VlY2ggPEVyaWMuUG91ZWNoQHdhbmFkb28uZnI+CisJQWRkZWQgc29tZSBlcnJvciBjaGVja2luZyA7IG1hZGUgdXNlIG9mIG5ldyAxNi8zMiBNQ0kgbWVzc2FnZQorCWhhbmRsaW5nIGluIG1tc3lzdGVtLmMuCisJQWRkZWQgV2luOTUgY29tbWFuZCB0byBoYW5kbGUgY2Qtcm9tIHdpdGggYm90aCBkYXRhIGFuZCBhdWRpbyA7IGZpeGVkCisJYnVnIGluIE1DSV9JTkZPIGNvbW1hbmQgOyBzaGFkb3dpbmcgTUNJIHN0YXR1cyBmb3IgZGV2aWNlcyB0aGF0IGNhbid0CisJZ2V0IGN1cnJlbnQgc3RhdHVzIDsgZml4ZWQgc3RhdHVzIG5vdCBiZWluZyB1cGRhdGVkIG9uIGNkIGNoYW5nZS4KKworCSogbXVsdGltZWRpYS9tbXN5c3RlbS5jOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlGYWN0b3JpemVkIDE2LzMyIGJpdCBNQ0kgZnVuY3Rpb24gYnkgdXNpbmcgIG1lc3NhZ2UgbWFwcGluZyBmcm9tIDE2CisJdG8gMzIgYml0cyA7IGFkZGVkIHNvbWUgbmV3IHByb3RvdHlwZXMgbWNpU2VuZENvbW1hbmQsIG1jaVNlbmRTdHJpbmcsCisJbWNpKFNldC9HZXQpWWllbGRQcm9jIDsgc3RhcnRlZCB3cml0aW5nIG1pZGlTdHJlYW1YWFggZnVuY3Rpb25zIC0gbm90CisJeWV0IHdvcmtpbmcuIEZpeGVkIHNvbWUgaXNzdWVzIHJlZ2FyZGluZyBhc3luY2hyb25vdXMgTUNJIGNvbW1hbmRzIDsKKwlmaXhlZCBNQ0lfU1lTSU5GTyBjb21tYW5kLgorCisJKiByZXNvdXJjZXMvc3lzcmVzX0ZyLnJjOiBFcmljIFBvdWVjaCA8RXJpYy5Qb3VlY2hAd2FuYWRvby5mcj4KKwlGaXhlZCBzb21lIHF1aXJrcy4KKworU3VuIE5vdiAyMiAxODoyOTo1MCAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEBhcnJha2lzLmxpZ2h0bmluZy5jaD4KKworCSogZGxscy9zaGVsbDMyL2NvbnRtZW51LmMsIGRsbHMvc2hlbGwzMi9kYXRhb2JqZWN0LmMsIGRsbHMvc2hlbGwzMi9mb2xkZXJzLmMsIGRsbHMvc2hlbGwzMi9pY29uY2FjaGUuYywgZGxscy9zaGVsbDMyL3BpZGwuaCwgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5oLCBkbGxzL3NoZWxsMzIvc2hsdmlldy5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCU1hbnkgZml4ZXMuCisKKwkqIGRsbHMvc2hlbGwzMi9waWRsLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCU5ldyBmdW5jdGlvbjogX0lMR2V0RXh0ZW5zaW9uLgorCisJKiBkbGxzL3NoZWxsMzIvTWFrZWZpbGUuaW4sIGRsbHMvc2hlbGwzMi9jbGFzc2VzLmM6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJTmV3IGZpbGUuIEhLRVlfQ0xBU1NFU19ST09UIGhhbmRsaW5nLgorCisJKiBkb2N1bWVudGF0aW9uL2NvbW1vbl9jb250cm9sczogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KKwlVcGRhdGVkLgorCisJKiBkbGxzL2NvbWN0bDMyL2hlYWRlci5jLCBkbGxzL2NvbWN0bDMyL3N0YXR1cy5jLCBkbGxzL2NvbWN0bDMyL3Rvb2xiYXIuYywgaW5jbHVkZS9jb21tY3RybC5oLCBpbmNsdWRlL2hlYWRlci5oLCBpbmNsdWRlL2xpc3R2aWV3LmgsIGluY2x1ZGUvb2xlMi5oLCBpbmNsdWRlL3JlYmFyLmgsIGluY2x1ZGUvc3RhdHVzLmgsIGluY2x1ZGUvdG9vbGJhci5oLCBpbmNsdWRlL3Rvb2x0aXBzLmg6CisJRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KKwlBZGRlZCBVbmljb2RlIHN1cHBvcnQgKGF0IGxlYXN0IHBhcnRpYWxseSkuCisKKwkqIG9sZS9NYWtlZmlsZS5pbiwgb2xlL2NvbXBvYmouYywgb2xlL29sZW9iai5jLCBpbmNsdWRlL29sZW9iai5oLCBpbmNsdWRlL3NobG9iai5oOgorCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CisJQWRkZWQgSU9sZUFkdmlzZUhvbGVyIGludGVyZmFjZSAoc3RpbGwgYSBkdW1teSkgYW5kIGZpeGVkCisJQ3JlYXRlT2xlQWR2aXNlSG9sZGVyKCkuCisKKwkqIGRsbHMvY29tY3RsMzIvY29tbWN0cmwuYywgZGxscy9jb21jdGwzMi90b29sdGlwcy5jOgorCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CisJQWRkZWQgZ2xvYmFsIHN1YmNsYXNzaW5nIGF0b20sIHVzZWQgYnkgdG9vbHRpcHMgYW5kIHVwZG93biAobm90IHlldCkuCisKKwkqIGRsbHMvY29tY3RsMzIvcmViYXIuYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KKwlJbXByb3ZlZCBsYXlvdXQgY29kZS4KKworCSogZGxscy9jb21jdGwzMi9pbWFnZWxpc3QuYywgcmVsYXkzMi9jb21jdGwzMi5zcGVjOgorCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CisJRml4ZWQgSW1hZ2VMaXN0X0xvYWRJbWFnZSgpLgorCisJKiBkbGxzL2NvbWN0bDMyL2NvbWJvZXguYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KKwlBZGRlZCBDTUVNX1NFVElURU0zMkEgYW5kIG1lc3NhZ2UgZm9yd2FyZGluZyB0byBjb21ib2JveC4KKworCSogb2xlL21vbmlrZXIuYywgcmVsYXkzMi9vbGUzMi5zcGVjOgorCUVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CisJQWRkZWQgc3R1YiBmb3IgQ3JlYXRlSXRlbU1vbmlrZXIoKS4KKworCSogZGxscy9jb21jdGwzMi9jb21jdGwzMnVuZG9jLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CisJRml4ZWQgc29tZSB1bmRvY3VtZW50ZWQgZnVuY3Rpb24gbmFtZXMgYW5kIGltcGxlbWVudGVkIERQQV9NZXJnZQorCXBhcnRpYWxseS4KKworCSogY29udHJvbHMvYnV0dG9uLmM6IEVyaWMgS29obCA8ZWtvaGxAYWJvLnJoZWluLXplaXR1bmcuZGU+CisJRW5hYmxlZCBkb3VibGUgY2xpY2sgZm9yIGJ1dHRvbnMuCisKKwkqIGluY2x1ZGUvd2luZG93cy5oOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgorCUFkZGVkIGNvbW1hbmQgYW5kIHJldHVybiBjb25zdGFudHMgdXNlZCBieSBXTV9OT1RJRllGT1JNQVQuCisKKwkqIG9iamVjdHMvYnJ1c2guYywgb2JqZWN0cy9kYy5jLCBvYmplY3RzL2dkaW9iai5jLCBvYmplY3RzL3Blbi5jLCB3aW5kb3dzL0F0dGljL2dyYXBoaWNzLmMsIGdyYXBoaWNzL3BhaW50aW5nLmMsIGdyYXBoaWNzL3gxMWRydi9iaXRibHQuYywgZ3JhcGhpY3MveDExZHJ2L2RpYi5jLCBncmFwaGljcy94MTFkcnYvZ3JhcGhpY3MuYywgZ3JhcGhpY3MveDExZHJ2L3RleHQuYywgaW5jbHVkZS9kYy5oLCBpbmNsdWRlL3gxMWRydi5oOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCU1vdmVkIERDX1NldHVwR0MgZnVuY3Rpb25zIHRvIGdyYXBoaWNzL3gxMWRydi9ncmFwaGljcy5jLgorCisJKiBpbmNsdWRlL29wdGlvbnMuaCwgbWlzYy9tYWluLmMsIG9sZS9vbGUybmxzLmM6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJU21hbGwgZml4ZXMgdG8gZ2V0IHRoZSBkZWZhdWx0IGxhbmd1YWdlIHRvIGEgc2Vuc2libGUgdmFsdWUuCisJVGhhbmtzIHRvIFBhYmxvLgorCisJKiBBTk5PVU5DRSwgREVWRUxPUEVSUy1ISU5UUywgUkVBRE1FLCBkb2N1bWVudGF0aW9uL1JFQURNRS5kb2N1bWVudGF0aW9uLCBkb2N1bWVudGF0aW9uL2hvdy10by1wb3J0LCBkb2N1bWVudGF0aW9uL3dpbmUubWFuLCBkb2N1bWVudGF0aW9uL3dpbmUudGV4aW5mbzoKKwlEb3VnbGFzIFJpZGd3YXkgPHJpZGd3YXlAd2luZWhxLmNvbT4KKwlNaXNjZWxsYW5lb3VzIHNtYWxsIGZpeGVzLgorCisJKiBncmFwaGljcy93aW4xNmRydi9wcnRkcnYuYywgaWYxNjMyL2dkaS5zcGVjLCBpbmNsdWRlL3dpbmRvd3MuaCwgb2JqZWN0cy9tZXRhZmlsZS5jLCBvYmplY3RzL3JlZ2lvbi5jLCByZWxheTMyL2dkaTMyLnNwZWM6CisJQW5kcmVhcyBNb2hyIDxhLm1vaHJAbWFpbHRvLmRlPgorCUFkZGVkIFdpbjE2IGltcGxlbWVudGF0aW9uIGZvciBHZXRSZWdpb25EYXRhKCkuCisKKwkqIG9sZS90eXBlbGliLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KKwlFbmhhbmNlZCBPQUJ1aWxkVmVyc2lvbigpIHRvIHJldHVybiBkaWZmZXJlbnQgdmVyc2lvbiB2YWx1ZXMgZm9yCisJZGlmZmVyZW50IHdpbnZlcnMuCisKKwkqIG1zZG9zL2ludDIxLmM6IEFuZHJlYXMgTW9ociA8YS5tb2hyQG1haWx0by5kZT4KKwlBZGRlZCBJTlQyMV9QYXJzZUZpbGVOYW1lSW50b0ZDQigpIGFuZCBzb21lIG90aGVyIHRoaW5ncyB0byBnZXQKKwlDT01NQU5ELkNPTSB3b3JraW5nLgorCisJKiByZWxheTMyL2tlcm5lbDMyLnNwZWM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUFkZGVkIG1pc3NpbmcgZW50cnkgZm9yIEdldE51bWJlckZvcm1hdFcuCisKKwkqIG9iamVjdHMvcGFsZXR0ZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlDaGVja2luZyBmb3IgTlVMTC1wb2ludGVyLgorCisJKiBvbGUvbmxzL2ZyYS5ubHMsIG9sZS9ubHMvZnJiLm5scywgb2xlL25scy9mcmMubmxzLCBvbGUvbmxzL2ZybC5ubHM6CisJUm9iZXJ0IFBvdWxpb3QgPGtyeW5vc0BjbGljLm5ldD4KKwlCZXR0ZXIgT0xFIHN1cHBvcnQgaW4gRnJlbmNoIGxhbmd1YWdlcy4KKworCSogbG9hZGVyL21vZHVsZS5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlJbXBsZW1lbnRhdGlvbiBvZiBDcmVhdGVQcm9jZXNzMzJXLgorCisJKiB3aW5kb3dzL2V2ZW50LmM6IERhdmlkIEx1eWVyIDxsdXllckB1Y3MudXdhLmVkdS5hdT4KKwlRdWV1aW5nIG9mIGRlZmVycmVkIEV4cG9zZSBldmVudHMuCisKKwkqIGNvbnRyb2xzL2xpc3Rib3guYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJTEJfR0VUVEVYVDogSGFuZGxlIHBhc3NlZCBOVUxMIGJ1ZmZlci4KKworCSogY29udHJvbHMvY29tYm8uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJQ0JfR0VUVEVYVDogVXNlIGxwQnVmZmVyIGluc3RlYWQgb2YgbHBUZXh0IGZvciBMQl9HRVRURVhUMzIsIGhhbmRsZSAwCisJYnl0ZSBOVUxMIGJ1ZmZlci4KKworCSogb2xlL25scy9mcnMubmxzLCBvbGUvbmxzL3NreS5ubHMsIG9sZS9vbGUybmxzLmM6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJVHVybiBtZWdhIGRvdWJsZSBzd2l0Y2ggaW50byBzdGF0aWMgdGFibGUgKHJlZHVjZXMgY29tcGlsZSB0aW1lKS4KKworCSogQVVUSE9SUywgaW5jbHVkZS9hdXRob3JzLmg6IEFkZGVkIFJvYmVydCBSaWdncy4KKworCSogaW5jbHVkZS9kM2QuaDogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KKwlpbmNsdWRlIGRkcmF3LmgsIHF1ZXN0aW9uYWJsZSBmaXggZm9yIHF1ZXN0aW9uYWJsZSBzdHJ1Y3QvdW5pb24KKwljb25zdHJ1Y3QgaW4gTVMncyBEM0RWRUNUT1IgZGVmaW5pdGlvbi4KKworCSogaW5jbHVkZS9kc291bmQuaDogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KKwlNb3JlIGZsYWdzIChEaXJlY3RYIDUuMiksIERpcmVjdFNvdW5kM0RMaXN0ZW5lciBhbmQKKwlEaXJlY3RTb3VuZDNEQnVmZmVyIHN0cnVjdHVyZXMsIGluY2x1ZGUgc29tZSByZXF1aXJlZCBmaWxlcworCSh3aW5kb3dzLmgsIGNvbXBvYmouaCwgYW5kIGQzZC5oKS4KKworCSogbXVsdGltZWRpYS9kc291bmQuYzogUm9iZXJ0IFJpZ2dzIDxycmlnZ3NAdGVzc2VyLmNvbT4KKwlEaXJlY3RTb3VuZDNETGlzdGVuZXIgYW5kIERpcmVjdFNvdW5kM0RCdWZmZXIgc3R1YnMsIG5ldyBtaXhlciBjb2RlLAorCXByaW1hcnkgYnVmZmVyIGlzIGltcGxlbWVudGVkIGNsb3NlciB0byB3aGF0IHRoZSBTREsgZG9jcyBzcGVjaWZ5LAorCW90aGVyIFNESyBkb2N1bWVudGVkIGJlaGF2aW91ciBlbmZvcmNlZC4gQ29tcGxldGVkIHRoZSBkZXZjYXBzIGxpc3QuCisKKwkqIG1pc2MvY3J0ZGxsLmMsIHJlbGF5MzIvY3J0ZGxsLnNwZWM6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJTmV3IHN0dWJzIHN0cmRhdGUsIHN0cnRpbWUuCisKKwkqIG1lbW9yeS9zZWxlY3Rvci5jOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUJ1Z2ZpeDogdHlwbyBpbiBTVW5NYXBMU19JUF9FQlBfOCBsZWFkIHRvIHN0YWNrIGNvcnJ1cHRpb24uCisKKwkqIG1pc2MvY29tbS5jOiBDbGlmZiBXcmlnaHQgPGNsaWZmQHNuaXBlNDQ0Lm9yZz4KKwlGaXhlZCBhIG1hc2sgc2V0LCBhbmQgb3RoZXIgcGFyaXR5IHNldHRpbmcgYnVncyBmb3Igc2VyaWFsIHBvcnRzLgorCisJKiBpbmNsdWRlL3NpZ19jb250ZXh0Lmg6IFZhc3VkZXYgTXVsY2hhbmRhbmkgPHZhc3VAdGVpbC5zb2Z0Lm5ldD4KKwlBZGRlZCBCU0RJIHNpZ2NvbnRleHQgZGVmaW5pdGlvbnMuCisKKwkqIHdpbmRvd3MvY2xhc3MuYzogUmVpbiBLbGF6ZXMgPHJrbGF6ZXNAY2FzZW1hLm5ldD4KKwlGaXhlZCB0eXBvLgorCisJKiByZWxheTMyL3JlbGF5Mzg2LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCVJlbW92ZSBub3cgdXNlbGVzcyBSRUxBWV9TaG93RGVidWdtc2dzUmVsYXkgY2hlY2suCisKKwkqIGxvYWRlci9wZV9pbWFnZS5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlEbyBub3QgcmVsb2NhdGUgdGhlIHBvaW50ZXJzIGluIHRoZSBJTUFHRV9USFJFQURfTE9DQUxfU1RPUkFHRQorCWRpcmVjdG9yeSwgZm9yIHRoZXkgc2VlbSB0byBiZSByZWxvY2F0ZWQgYnkgdGhlIHN0YW5kYXJkIHJlbG9jYXRpbmcKKwltZWNoYW5pc20uIChFeHBsaWNpdGx5IGNoZWNrZWQgb25lIHByb2dyYW0gdXNpbmcgaXQpCisKKwkqIGRsbHMvc2hlbGwzMi9zaGVsbG9yZC5jLCBpbmNsdWRlL3NoZWxsLmg6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJUGF0aEFkZEJhY2tzaGxhc2gsIFBhdGhSZW1vdmVCYWNrc2xhc2g6IGFyZ3VtZW50IGlzIG5vdCBjb25zdGFudC4KKworCSogd2luZG93cy93aW4uYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJQ2hlY2sgd25kUHRyIGZvciBOVUxMLgorCisJKiBncmFwaGljcy9kZHJhdy5jOiBNYXJjdXMgTWVpc3NuZXIgPG1hcmN1c0BqZXQuZnJhbmtlbi5kZT4KKwlCbHRGYXN0OiBIb25vciBsUGl0Y2gsIExvY2svVW5sb2NrIHN1cmZhY2VzICh4bGliIG5lZWRzIHVubG9jayB0byBkcmF3KS4KKworCSogbWlzYy9zcG9vbGVyLmMsIG1pc2MvTWFrZWZpbGUuaW4sIG1pc2NlbXUvbWFpbi5jLCBNYWtlZmlsZS5pbiwgZ3JhcGhpY3Mvd2luMTZkcnYvaW5pdC5jLCBsb2FkZXIvbWFpbi5jOgorCUh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCVRha2VzIHByaW50IHNwb29sZXIgZnVuY3Rpb25zIG91dCBvZiB3aW4xNmRydi4KKwlBbGxvd3MgdGhlIFBvc3RTY3JpcHQgZHJpdmVyIHRvIGdvIGludG8gbGlid2luZS4KKworCSogaWYxNjMyL2dkaS5zcGVjLCBvYmplY3RzL2JydXNoLmMsIG9iamVjdHMvcGFsZXR0ZS5jOgorCUlhbiBTY2htaWR0IDxpcnNtYW5AaWFnLm5ldD4KKwlBZGRlZCBzdHVicyBmb3IgdHdvIHVuZG9jdW1lbnRlZCBHREkgcm91dGluZXMsIFNldE1hZ2ljQ29sb3JzIGFuZAorCVNldFNvbGlkQnJ1c2guIFRoaXMgYWxsb3dzIFdpbjk4IG5hdGl2ZSBVU0VSIHRvIHN0YXJ0IHVwLgorCisJKiBncmFwaGljcy9kZHJhdy5jOiBTdGVwaGVuIENyb3dsZXkgPGNyb3dAZGViaWFuLm9yZz4KKwlGaXhlZCB0aGUgREdBIGRldGVjdGlvbiBjb2RlIGluIGRkcmF3LiBZb3UgZG9uJ3QgbmVlZCByb290IGFjY2VzcywKKwloYXZpbmcgcit3IGFjY2VzcyB0byAvZGV2L21lbSBpcyBlbm91Z2guCisKKwkqIGRvY3VtZW50YXRpb24vc3RhdHVzL2RpcmVjdGRyYXcsIGdyYXBoaWNzL2RkcmF3LmMsIGdyYXBoaWNzL3dpbmcuYywgaW5jbHVkZS9kZHJhdy5oOgorCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCURpcmVjdERyYXcgc3RhdHVzIHVwZGF0ZWQuCisJVXNlIGNvb3BlcmF0aXZlIHdpbmRvdyBmb3IgZHJhd2luZyBpbiB4bGliIGltcGxlbWVudGF0aW9uIGlmIHBvc3NpYmxlLgorCVNsaWdodGx5IHJlc3RydWN0dXJlZCBJRGlyZWN0RHJhd1N1cmZhY2U6OkJsdCBzbyBpdCBkb2Vzbid0IGNyYXNoLgorCisJKiB3aW5kb3dzL2tleWJvYXJkLmM6IERhdmlkIEZhdXJlIDxEYXZpZC5GYXVyZUBpbnNhLWx5b24uZnI+CisJTWljcm8gcGF0Y2ggZm9yIEFsdEdyIGtleSBvbiBnZXJtYW4ga2V5Ym9hcmRzLgorCisJKiBmaWxlcy9kb3NfZnMuYzogSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJRml4ZXMgZXJyb3IgaGFuZGxpbmcgKFNldExhc3RFcnJvcigpIGFuZCByZXR1cm4gdmFsdWUpLgorCisJKiBvYmplY3RzL3RleHQuYywgaW5jbHVkZS93aW5kb3dzLmg6IEdhZWwgZGUgQ2hhbGVuZGFyIDxnYWVsQGxpbXNpLmZyPgorCVBhcnRpYWxseSBjb21wbGV0ZSBHZXRUZXh0Q2hhcnNldEluZm8gYW5kIGNvcnJlY3RzIHJldHVybiB2YWx1ZXMgZm9yCisJdGhpcyBmYW1pbHkgb2YgZnVuY3Rpb25zLgorCitTdW4gTm92IDE1IDE4OjEyOjEyIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgorCisJKiBvbGUvY29tcG9iai5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlCdWcgZml4LgorCisJKiBvYmplY3RzL2RpYi5jOiBFcmljIEtvaGwgPGVrb2hsQGFiby5yaGVpbi16ZWl0dW5nLmRlPgorCUZpeGVkIHJldHJpZXZhbCBvZiBpbnZhbGlkIHBhbGV0dGUgZGF0YSBpbiBHZXRESUJpdHMoKS4KKworCSogd2luZG93cy93aW5wb3MuYzogSm9obiBSaWNoYXJkc29uIDxqcmljaGFyZEB6ZWFsYW5kLm12LmNvbT4KKwlBbGxvdyBTV1BfSElERVdJTkRPVyB0byBiZSBjYWxsZWQgb24gd2luZG93cyB0aGF0IGFyZSBhbHJlYWR5IGhpZGRlbgorCXdpdGhvdXQgdW5tYXBwaW5nIHRoZW0gYWdhaW4uCisKKwkqIHdpbmRvd3Mvc2Nyb2xsLmM6IFBpbSBCb2xsZW4gPHBpbUBnaW1saS5pYWVodi5ubD4KKwlGaXhlZCBzY3JvbGwgYnVnIGluIFNjcm9sbFdpbmRvd0V4MzIgd2hpY2ggY2F1c2VkIGdhcmJhZ2Ugb24gc2NyZWVuCisJb3V0c2lkZSBkZXNrdG9wIHdpbmRvdyB3aXRoIGd0d2luLmV4ZSAoRHV0Y2ggYmFua2luZyBwcm9ncmFtKS4KKworCSogbG9hZGVyL21haW4uYywgbWVtb3J5L2F0b20uYywgbWlzYy9kZGVtbC5jLCB3aW5kb3dzL2NsYXNzLmMsIHdpbmRvd3MvbWVzc2FnZS5jLCBpbmNsdWRlL0F0dGljL2F0b20uaCwgaW5jbHVkZS9nbG9iYWwuaDoKKwlTbWFsbCBhdG9tIGZpeGVzLgorCisJKiBvYmplY3RzL2RpYi5jOiBEaXJrIFRoaWVyYmFjaCA8dGhpZXJiYWNoQG1hdGhlbWF0aWsudHUtZGFybXN0YWR0LmRlPgorCUZpeGVkIGJ1ZyBpbiBTdHJldGNoRElCaXRzMzIgKHdyb25nIG9yaWdpbikuCisKKwkqIHdpbmRvd3Mvd2lucHJvYy5jOiBKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlTbWFsbCBmaXhlcy4KKworCSogaW5jbHVkZS9kZHJhdy5oLCBpbmNsdWRlL3RzX3hzaG0uaCwgdG9vbHMvbWFrZV9YMTF3cmFwcGVycywgdHN4MTEvWDExX2NhbGxzLCB0c3gxMS90c194c2htLmMsIGdyYXBoaWNzL2RkcmF3LmM6CisJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CisJU29tZSBjb3JyZWN0aW9ucyB0byB0aGUgaGFuZGxpbmcgb2Ygb2ZmLXNjcmVlbiBidWZmZXJzLgorCUNvcnJlY3Rpb24gdG8gdGhlIEVudW1EaXNwbGF5TW9kZXMgZnVuY3Rpb24uCisJQWRkZWQgWFNobSBzdXBwb3J0IHRvIFhsaWIgZHJpdmVyLgorCU9wZW4gYSBEaXJlY3RYIHdpbmRvdyBldmVuIHdoZW4gdXNpbmcgdGhlIERHQSBkcml2ZXIuCisKKwkqIGluY2x1ZGUvc2hlbGwuaCwgaW5jbHVkZS9zaGxvYmouaCwgbWlzYy9zaGVsbC5jLCByZWxheTMyL3NoZWxsMzIuc3BlYywgZGxscy9zaGVsbDMyL01ha2VmaWxlLmluLCBkbGxzL3NoZWxsMzIvY29udG1lbnUuYywgZGxscy9zaGVsbDMyL2RhdGFvYmplY3QuYywgZGxscy9zaGVsbDMyL2ZvbGRlcnMuYywgZGxscy9zaGVsbDMyL3NoZWxsMzJfbWFpbi5jLCBkbGxzL3NoZWxsMzIvc2hlbGwzMl9tYWluLmgsIGRsbHMvc2hlbGwzMi9zaGVsbG9sZS5jLCBkbGxzL3NoZWxsMzIvc2hlbGxvcmQuYywgZGxscy9zaGVsbDMyL3NobGZvbGRlci5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUNsZWFudXAsIHNtYWxsIGZpeGVzLCBhIGZldyBuZXcgc3R1YnMuCisKKwkqIGRsbHMvc2hlbGwzMi9zaGx2aWV3LmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUhhbmRsaW5nIGZvciBsaXN0dmlld3N0eWxlcywgdmlldyBtb2RlIGJ1dHRvbnMgaW4gZmlsZWRpYWxvZ3MKKwllbmFibGVkIGFuZCBoYW5kbGVkLgorCU5ldyBsaXN0dmlldyBjb2x1bW5zIFNpemUsIFR5cGUsIE1vZGlmaWVkIGZvciByZXBvcnR2aWV3CisJY3JlYXRlZCBhbmQgaGFuZGxlZC4KKworCSogZGxscy9zaGVsbDMyL2lmX21hY3Jvcy5oOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCU5ldyBmaWxlLCB3cmFwcGVyIGZvciBJU2hlbGxCcm93c2VyIGNsYXNzLgorCisJKiBkbGxzL3NoZWxsMzIvaWNvbmNhY2hlLmM6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJTmV3IGZpbGUsIHNvbWUgaGVscGVyIGZ1bmN0aW9ucyBmb3IgaWNvbiBjYWNoZS4KKwlJbXBsZW1lbnRlZCBFeHRyYWN0SWNvbkV4OyBtb3ZlZCBTSE1hcFBJRExUb1N5c3RlbUltYWdlTGlzdEluZGV4LAorCVNoZWxsX0dldEltYWdlTGlzdCBpbiB0aGlzIGZpbGUuCisKKwkqIGRsbHMvc2hlbGwzMi9waWRsLmMsIGRsbHMvc2hlbGwzMi9waWRsLmg6CisJSnVlcmdlbiBTY2htaWVkIDxqdWVyZ2VuLnNjaG1pZWRAbWV0cm9uZXQuZGU+CisJSW1wbGVtZW50ZWQ6IElMSXNFcWFsLCBJTEZpbmRDaGlsZCwgX0lMR2V0RmlsZURhdGUsIF9JTEdldEZpbGVTaXplLgorCisJKiBsb2FkZXIvbW9kdWxlLmM6IEp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUxvYWRMaWJyYXJ5RXg6IHNob3cgYSB3YXJuaW5nIHdoZW4gY2FsbGVkIHdpdGggdW5pbXBsZW1lbnRlZCBwYXJtLgorCisJKiBtaXNjZW11L2luc3RyLmM6IENsZWFuZWQgdXAgYSBiaXQuCisKKwkqIG1lbW9yeS9zZWxlY3Rvci5jLCBtaXNjZW11L2luc3RyLmMsIHRvb2xzL2J1aWxkLmM6CisJTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJQ2xlYW4gaW52YWxpZCBzZWxlY3RvcnMgb24gdGhlIHBvcCAleHMgZnJvbSB0aGUgU1RBQ0tGUkFNRSBpdHNlbGYKKwlpbnN0ZWFkIG9mIHVzaW5nIGxpbmtlZCBsaXN0IGhhY2suCisKKwkqIE1ha2VmaWxlLmluOiBSZW1vdmVkIGdldHMgbWVzc2FnZS4KKworCSogb2xlL25scy90aGEubmxzOiBEYXZpZCBMdXllciA8bHV5ZXJAdWNzLnV3YS5lZHUuYXU+CisJQWRkZWQgVGhhaSBubHMtcmVzb3VyY2VzLgorCisJKiBvbGUvbmxzL1JFQURNRSwgb2xlL25scy9jemUubmxzLCBvbGUvbmxzL2VzZS5ubHMsIG9sZS9ubHMvZXNnLm5scywgb2xlL25scy9lc3QubmxzLCBvbGUvbmxzL2V1cS5ubHMsIG9sZS9ubHMvZm9zLm5scywgb2xlL25scy9ocnYubmxzLCBvbGUvbmxzL2h1bi5ubHMsIG9sZS9ubHMvaXNsLm5scywgb2xlL25scy9ub3IubmxzLCBvbGUvbmxzL3Bsay5ubHMsIG9sZS9ubHMvcHRnLm5scywgb2xlL25scy9yb20ubmxzLCBvbGUvbmxzL3Nsdi5ubHMsIG9sZS9ubHMvc3ZlLm5scywgb2xlL29sZTJubHMuYywgaW5jbHVkZS93aW5ubHMuaDoKKwlQYWJsbyBTYXJhdHhhZ2EgPHNydHhnQGNoYW5hZS5hbHBoYW5ldC5jaD4KKwlEaXNwbGF5IHRoZSBsYW5ndWFnZSBpZCBmb3IgIlhYWCBub3Qgc3VwcG9ydGVkIGZvciB5b3VyIGxhbmd1YWdlIgorCW1lc3NhZ2VzLgorCUFkZGVkIGFsbCBsYW5ndWFnZXMgYW5kIHN1Ymxhbmd1YWdlcyBmb3IgbGFuZ3VhZ2VzIHN1cHBvcnRlZCBpbgorCXJlc291cmNlcy9zeXNyZXNfWHguCisKKwkqIG9sZS9vbGUyLmMsIHJlbGF5MzIvb2xlMzIuc3BlYzogR2F2cmllbCBTdGF0ZSA8Z2F2cmllbHNAY29yZWwuY29tPgorCUFkZCBzdHVicyBmb3IgR2V0UnVubmluZ09iamVjdFRhYmxlMzIgYW5kIE9sZVJlZ0dldFVzZXJUeXBlLgorCisJKiBvbGUvbW9uaWtlci5jOiBHYXZyaWVsIFN0YXRlIDxnYXZyaWVsc0Bjb3JlbC5jb20+CisJRW5zdXJlIHRoYXQgQ3JlYXRlRmlsZU1vbmlrZXIgZnVuY3Rpb25zIGRvbid0IHJldHVybiBhIGJvZ3VzIG1vbmlrZXIKKwlvYmplY3Qgb24gZmFpbHVyZS4KKworCSogaW5jbHVkZS9jbGFzcy5oLCB3aW5kb3dzL2NsYXNzLmM6IEdhdnJpZWwgU3RhdGUgPGdhdnJpZWxzQGNvcmVsLmNvbT4KKwlBZGRlZCBjb2RlIHRvIG1hbmFnZSBBc2NpaSBhbmQgV2lkZUNoYXIgY2xhc3MgbmFtZXMsIGFuZCB0byByZXR1cm4gdGhlCisJbmFtZXMgaW4gdGhlIEdldENsYXNzSW5mbyBmdW5jdGlvbnMuCisKKwkqIGluY2x1ZGUvd2luc29jay5oOiBDb25zdGFudGluZSBTYXB1bnR6YWtpcyA8Y3NhcHVudHpAc3RhbmZvcmQuZWR1PgorCUZpeCB0byBMaW51eCBJUFggc28gY29tcGlsZXMgb24gbm9uLWxpbnV4IHBsYXRmb3Jtcy4KKworCSogbWlzYy9tYWluLmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCU93biBYMTEgZXJyb3JoYW5kbGVyIHRvIGxvY2F0ZSBYMTEgZXJyb3JzLiBVc2VmdWwgb25seSB3aXRoIC1zeW5jLgorCitTYXQgTm92IDE0IDE4OjU5OjMwIDE5OTggIEFsZXhhbmRyZSBKdWxsaWFyZCAgPGp1bGxpYXJkQGFycmFraXMubGlnaHRuaW5nLmNoPgorCisJKiBpbmNsdWRlL2NvbG9yLmgsIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS9wYWxldHRlLmgsIG1lbW9yeS9nbG9iYWwuYywgbWlzYy9yZWdpc3RyeS5jLCB3aW5kb3dzL2RlZnduZC5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCUZpeGVkIHdhcm5pbmdzLCBzb21lIG9ubHkgdmlzaWJsZSB3aXRoIC1Xc3RyaWN0LXByb3RvdHlwZXMgb3IgLXBlZGFudGljLgorCisJKiBpbmNsdWRlL2N1cnNvcmljb24uaCwgaW5jbHVkZS9kaXNwbGF5LmgsIGluY2x1ZGUvbWVzc2FnZS5oLCBvYmplY3RzL2N1cnNvcmljb24uYywgd2luZG93cy9kaXNwbGF5LmMsIHdpbmRvd3MvbW91c2UuYywgd2luZG93cy94MTFkcnYvaW5pdC5jLCBpZjE2MzIvZGlzcGxheS5zcGVjOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCU1vdmVkIFgxMSBtb3VzZSBjdXJzb3IgaGFuZGxpbmcgdG8gdGhlIERJU1BMQVkgZHJpdmVyLgorCisJKiBpZjE2MzIvdGh1bmsuYywgaW5jbHVkZS9jYWxsYmFjay5oLCBsb2FkZXIvbWFpbi5jLCBsb2FkZXIvdGFzay5jLCBtaXNjL2NhbGxiYWNrLmMsIG1pc2NlbXUvbWFpbi5jOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCVNvbWUgZml4ZXMgdG8gV2luZSBzdGFydHVwL3Rlcm1pbmF0aW9uIHNlcXVlbmNlIHdpdGggbmF0aXZlIFVTRVIuCisJRG8gbm90IGNhbGwgYnVpbHQtaW4gVVNFUiBzaWduYWwgaGFuZGxlciB3aGVuIHVzaW5nIG5hdGl2ZSBVU0VSLgorCisJKiBkZWJ1Z2dlci9icmVhay5jLCBpbmNsdWRlL2RlYnVnZ2VyLmgsIGluY2x1ZGUvdGFzay5oOgorCVVscmljaCBXZWlnYW5kIDx3ZWlnYW5kQGluZm9ybWF0aWsudW5pLWVybGFuZ2VuLmRlPgorCUJ1Z2ZpeDogLWRlYnVnIGRpZG4ndCB3b3JrIGFueW1vcmUgYWZ0ZXIgdGhlIGxhc3Qgc3RhcnR1cCBzZXF1ZW5jZSBwYXRjaC4KKworCSogb2xlL2NvbXBvYmouYzogRXJpYyBLb2hsIDxla29obEBhYm8ucmhlaW4temVpdHVuZy5kZT4KKwlGaXhlZCBsaXN0IGluc2VydGlvbiBidWcgaW4gQ29Mb2FkTGlicmFyeSgpLgorCisJKiBpZjE2MzIvd3Byb2NzLnNwZWMsIG1zZG9zL01ha2VmaWxlLmluLCBtc2Rvcy9pbnQyZi5jLCBtc2Rvcy9pbnQ0MS5jLCBtc2Rvcy92eGQuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlBZGRlZCBzdHVicyBmb3Igc2V2ZXJhbCBWeERzIC8gaW50ZXJydXB0cy4KKworCSogaWYxNjMyL3RodW5rLmMsIGluY2x1ZGUvY2FsbGJhY2suaCwgbWlzYy9jYWxsYmFjay5jLCBncmFwaGljcy93aW4xNmRydi9pbml0LmM6CisJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJU2hvdWxkIGdldCB3aW4xNmRydiBBYm9ydFByb2Mgd29ya2luZy4gSG9wZWZ1bGx5LgorCisJKiB3aW5kb3dzL2lucHV0LmMsIHdpbmRvd3Mva2V5Ym9hcmQuYzoKKwlVbHJpY2ggV2VpZ2FuZCA8d2VpZ2FuZEBpbmZvcm1hdGlrLnVuaS1lcmxhbmdlbi5kZT4KKwlNb3ZlZCBHZXRLZXlib2FyZExheW91dE5hbWUxNiB0byB3aW5kb3dzL2lucHV0LmMuCisKKwkqIGluY2x1ZGUvaW1hZ2VobHAuaCwgaW5jbHVkZS93aW5udC5oLCBpbmNsdWRlL3dpbnR5cGVzLmg6CisJUGF0cmlrIFN0cmlkdmFsbCA8cHNAbGVpc3NuZXIuc2U+CisJTW92ZWQgc29tZSBkZWNsYXJhdGlvbnMgZnJvbSBpbWFnZWhscC5oIHRvIGNvbW1vbiBpbmNsdWRlIGZpbGVzLgorCisJKiByZWxheTMyL2tlcm5lbDMyLnNwZWMsIHdpbjMyL3RocmVhZC5jOgorCVJlaW4gS2xhemVzIDxya2xhemVzQGNhc2VtYS5uZXQ+CisJQWRkZWQgaW1wbGVtZW50YXRpb25zIGZvciBJbnRlcmxvY2tlZEV4Y2hhbmdlQWRkKCkgYW5kCisJSW50ZXJsb2NrZWRDb21wYXJlRXhjaGFuZ2UoKS4KKworCSogd2luMzIvY29uc29sZS5jLCBvYmplY3RzL2RpYi5jLCBvYmplY3RzL2VuaG1ldGFmaWxlLmM6CisJSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJRml4ZXMgYSBmZXcgb2YgdGhlIG1hbnkgY29tcGlsZXIgd2FybmluZ3MuCisKKwkqIG1pc2NlbXUvaW5zdHIuYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJRW11bGF0ZSAibW92IGNyNCxlYXgiICh0b21icmFpZGVyIDMgZGVtbykuCisKKwkqIGdyYXBoaWNzL2RkcmF3LmM6IE1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCURvIG5vdCBlbnVtZXJhdGUgRDNEIGRldmljZXMgd2UgY2FuJ3QgaGFuZGxlIGFueXdheS4KKwlSZXR1cm4gYml0bWFza3MgZm9yIGhpL3RydWVjb2xvciBkZXB0aHMgaW4gRW51bURpc3BsYXlNb2Rlcy4KKworCSogaWYxNjMyL3Nub29wLmMsIGluY2x1ZGUvc25vb3AuaCwgcmVsYXkzMi9idWlsdGluMzIuYywgcmVsYXkzMi9zbm9vcC5jOgorCU1hcmN1cyBNZWlzc25lciA8bWFyY3VzQGpldC5mcmFua2VuLmRlPgorCVNwZWVkIHVwIHJlbGF5MzIsIHNub29wMTYgYW5kIHNub29wMzIgaW5jbHVkZS9leGNsdWRlcyBieSBkb2luZyB0aGVtCisJanVzdCBvbmNlIGF0IGNyZWF0aW9uIHRpbWUuCisKKwkqIHJlbGF5MzIvb2xlMzIuc3BlYywgb2xlL2NvbXBvYmouYywgb2xlL29sZTIuYzoKKwlQYXZlbCBSb3NraW4gPHBhdmVsX3Jvc2tpbkBnZW9jaXRpZXMuY29tPgorCUFkZGVkIHN0dWJzIGZvciBDb1Jldm9rZUNsYXNzT2JqZWN0IGFuZCBPbGVTZXRDbGlwYm9hcmQuCisKKwkqIHdpbmRvd3Mvd2luLmM6IFBlciDFbmdzdHL2bSA8cGFuZ0BtaW5kLm51PgorCUVudW1UYXNrV2luZG93czE2OiBCYXNpbmcgdGhlIHNlbGVjdGlvbiBvbiBhIHdpbmRvdydzIHRhc2sgaXMgbm90IG9ubHkKKwltb3JlIHN0cmFpZ2h0Zm9yd2FyZCB0aGFuIGNvbXBhcmluZyBtZXNzYWdlIHF1ZXVlcywgaXQgYWxzbyB3b3JrcworCWJldHRlciBmb3IgV2luMzIgYXBwbGljYXRpb25zLgorCisJKiBtZW1vcnkvbG9jYWwuYzogSHV3IEQgTSBEYXZpZXMgPGRhdmllc2hAYWJhY3VzLnBoeXNpY3Mub3guYWMudWs+CisJQ2hhbmdlZCBzb21lIG9mIHRoZSBtZXNzYWdlIGNsYXNzZXMuCisKKwkqIHdpbmRvd3Mva2V5Ym9hcmQuYzogRGF2aWQgRmF1cmUgPERhdmlkLkZhdXJlQGluc2EtbHlvbi5mcj4KKwlTcGVjaWFsIGNhc2UgaGFuZGxpbmcgb2YgOiBTaGlmdCArIGFycm93LCBzaGlmdCArIGhvbWUsIC4uLgorCVggcmV0dXJucyBhIGNoYXIgZm9yIGl0LCBidXQgV2luZG93cyBkb2Vzbid0LiBJZ25vcmUgWCBjaGFyLgorCUFsc28gYWRkZWQgc29tZSBkb2N1bWVudGF0aW9uLgorCisJKiBpbmNsdWRlL3dpbnNvY2suaCwgbWlzYy93aW5zb2NrLmM6CisJU3RlcGhlbiBMYW5nYXNlayA8dm9ybG9uQGRvZGRzLm5ldD4KKwlCdWdmaXhlcyBmb3IgSVBYIGNvZGUgYW5kIHByZWxpbWluYXJ5IGdyb3VuZHdvcmsgZm9yIG90aGVyIGFkZHJlc3MKKwlmYW1pbHkgc3VwcG9ydC4KKworCSogb2xlL2NvbXBvYmouYzogTWFyY3VzIE1laXNzbmVyIDxtYXJjdXNAamV0LmZyYW5rZW4uZGU+CisJKENvR2V0Q2xhc3NPYmplY3QpIG9uZSBtaXNzaW5nIENBTExCQUNLLCBleHRyZW1lbHkgc2ltcGxpZmllZCBjbHNpZAorCWxvb2t1cCAoUmVnaXN0cnkgaXMgY2FzZSBpbnNlbnNpdGl2ZSkuCisKKwkqIHJlbGF5MzIvbnRkbGwuc3BlYywgd2luMzIvYWR2YXBpLmMsIGRsbHMvbnRkbGwvcnRsLmMsIHJlbGF5MzIvYWR2YXBpMzIuc3BlYzoKKwlKdWVyZ2VuIFNjaG1pZWQgPGp1ZXJnZW4uc2NobWllZEBtZXRyb25ldC5kZT4KKwlTdHViczogU2V0U2VydmljZVN0YXR1cywgUmVnaXN0ZXJTZXJ2aWNlQ3RybEhhbmRsZXJBL1csCisJU3RhcnRTZXJ2aWNlQ3RybERpc3BhdGNoZXIzMkEvVywgUnRsU3lzdGVtVGltZVRvTG9jYWxUaW1lLAorCVJ0bFRpbWVUb1RpbWVGaWVsZHMuCisKKwkqIGluY2x1ZGUvd2luZG93cy5oLCBvbGUvb2xlMm5scy5jOgorCUp1ZXJnZW4gU2NobWllZCA8anVlcmdlbi5zY2htaWVkQG1ldHJvbmV0LmRlPgorCVN0dWIgZm9yIEdldE51bWJlckZvcm1hdDMyVy4KKworCSogbWlzYy9jcnRkbGwuYzogRGF2aWQgQS4gQ3V0aGJlcnQgPGRhY3V0QGVjZS5jbXUuZWR1PgorCWdldHMoKSBmaXhlcy4KKworCSogb2xlL25scy9ydXMubmxzOiBBbGV4YW5kZXIgVi4gTHVreWFub3YgPGxhdkBsb25nLnlhci5ydT4KKwlGaXggU0NPVU5UUlksIFNOQVRJVkVDVFJZTkFNRSwgU0FCQlJFVkRBWU5BTUUzOyBjaGFuZ2Ugc29tZSBTTU9OVEhOQU1FKgorCXRvIGJlIGluIG5vbWluYXRpdmUgY2FzZS4KKworCSogd2luZG93cy9xdWV1ZS5jOiBQZXIgxW5nc3Ry9m0gPHBhbmdAbWluZC5udT4KKwlGaXhlZCBTZXRNZXNzYWdlUXVldWUzMiB0byByZXR1cm4gRkFMU0UsIG5vdCBUUlVFLCB3aGVuIGNhbGxlZCB3aXRoCisJYW4gaW52YWxpZCBzaXplIHBhcmFtZXRlci4KKworCSogbXVsdGltZWRpYS9kc291bmQuYzogTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CisJQWRkZWQgY29ycmVjdCBpbXBsZW1lbnRhdGlvbiBvZiBHZXRDYXBzLCBjaGFuZ2VkIFBsYXkgYW5kIFN0b3AgaGFuZGxpbmcKKwlvZiBwb3NpdGlvbnMgaW5kZXhlcywgc3VwcHJlc3NlZCB3YXJuaW5ncy4KKworCSogbWVtb3J5L2xvY2FsLmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgorCUNvcnJlY3RlZCBidWcgaW4gVFJBQ0UgZnVuY3Rpb24uCisKKwkqIEFVVEhPUlMsIGdyYXBoaWNzL2RkcmF3LmMsIGluY2x1ZGUvYXV0aG9ycy5oLCBpbmNsdWRlL2RkcmF3Lmg6CisJTGlvbmVsIFVsbWVyIDx1bG1lckBkaXJlY3Rwcm92aWRlci5uZXQ+CisJQ29ycmVjdGVkIGJ1ZyBpbiBEaXJlY3REcmF3U3VyZmFjZSBjcmVhdGlvbiBhbmQgaGFuZGxpbmcgZm9yIGRyaXZlcgorCWJhc2VkIHVwb24gWGxpbGIuCisKKwkqIHdpbmRvd3MvZGlucHV0LmM6IExpb25lbCBVbG1lciA8dWxtZXJAZGlyZWN0cHJvdmlkZXIubmV0PgorCVdpbmUga2V5Ym9hcmQgYW5kIG1vdXNlIGhhdmUgbm93IHRoZWlyIG93biBVSURzLgorCisJKiBvYmplY3RzL2JydXNoLmM6IEh1dyBEIE0gRGF2aWVzIDxkYXZpZXNoQGFiYWN1cy5waHlzaWNzLm94LmFjLnVrPgorCUZpeCBhbGxvY2F0aW9uIHNpemUgaW4gQ3JlYXRlRElCUGF0dGVybkJydXNoKi4KKworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogU3VuIE5vdiAgOCAxNjo0NDo0MSAxOTk4ICBBbGV4YW5kcmUgSnVsbGlhcmQgIDxqdWxsaWFyZEB3aW5laHEuY29tPgogCiAJKiB3aW5kb3dzL2RpYWxvZy5jOiBORiBTdGV2ZW5zIDxub3JtYW5AYXJjYWR5LnUtbmV0LmNvbT4KZGlmZiAtLWdpdCBhL2luY2x1ZGUvdmVyc2lvbi5oIGIvaW5jbHVkZS92ZXJzaW9uLmgKaW5kZXggYTgwOTQ5NS4uZDc1MTg0NiAxMDA2NDQKLS0tIGEvaW5jbHVkZS92ZXJzaW9uLmgKKysrIGIvaW5jbHVkZS92ZXJzaW9uLmgKQEAgLTEgKzEgQEAKLSNkZWZpbmUgV0lORV9SRUxFQVNFX0lORk8gIldpbmUgcmVsZWFzZSA5ODExMDgiCisjZGVmaW5lIFdJTkVfUkVMRUFTRV9JTkZPICJXaW5lIHJlbGVhc2UgOTgxMjExIgo=