ZGlmZiAtLWdpdCBhL0NIQU5HRUxPRyBiL0NIQU5HRUxPRwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZjZDk3Yy4uMDAwMDAwMAotLS0gYS9DSEFOR0VMT0cKKysrIC9kZXYvbnVsbApAQCAtMSw4ODk3MCArMCwwIEBACi1jb21taXQgMTYxZTRhZTQ2MDQ2MjgyZmRlNmE2OWEwZjFmODA5NjVmMmExYjZmNAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gMTcgMDc6MDE6NDAgMjAxMCArMDIwMAotCi0gICAgcG93ZXJwYzogZml4IHdyb25nIGNvbW1lbnQgYXQgR09UIGRlZmluaXRpb25zCi0KLSAgICByMTIgaXMgdXNlZCBmb3IgYWNjZXNzaW5nIHRoZSBHT1Qgbm90IHIxNC4gRml4IHRoaXMgaW4gdGhlCi0gICAgY29tbWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNzAzMGQ1NmI3OTQ2YzhkYjJlODA4MmE5Yjg0Y2Q2OWI5NTQwYTBjYQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSnVuIDE3IDExOjM3OjI3IDIwMTAgLTA1MDAKLQotICAgIE1BS0VBTEw6IEFkZCBtaXNzaW5nIHBvd2VycGMgMzYtYml0IHRhcmdldHMKLQotICAgIFdlIHdlcmUgbWlzc2luZyA4NjQxSFBDTl8zNkJJVCBhbmQgTVBDODUzNkRTXzM2QklULgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZTAzYjRkMjk2YjI3NzkwZGUzYjI1ZWRkMzI3ODRkMjA1MzgyNDBkOAotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglTYXQgSnVuIDI2IDAwOjM5OjI4IDIwMTAgKzAyMDAKLQotICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBmb3IgRVZCNjQyNjAsIFAzRzQgYW5kIFpVTUEKLQotICAgIEZpeCBmb2xsb3dpbmcgd2FybmluZ3M6Ci0KLSAgICAkIC4vTUFLRUFMTCBFVkI2NDI2MCBQM0c0IFpVTUEKLSAgICBDb25maWd1cmluZyBmb3IgRVZCNjQyNjAgYm9hcmQuLi4KLSAgICBtcHNjLmM6IEluIGZ1bmN0aW9uICdtcHNjX3B1dGNoYXJfZWFybHknOgotICAgIG1wc2MuYzoxMjE6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIG1wc2MuYzoxMjc6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIC4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgOWZiM2I1MDg1Nzg3YmFhZDhhMTMzZTM0N2FkMTJjNWIzYTAyMmU5OAotQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIEp1biAyOCAyMjo0NDo0OSAyMDEwICswNDAwCi0KLSAgICBFSENJOiB6ZXJvIG91dCBRSCB0cmFuc2ZlciBvdmVybGF5IGluIGVoY2lfc3VibWl0X2FzeW5jKCkKLQotICAgIGVoY2lfc3VibWl0X2FzeW5jKCkgZG9lc24ndCByZWFsbHkgemVybyBvdXQgdGhlIFFIIHRyYW5zZmVyIG92ZXJsYXkgKGFzIHRoZSBFSENJCi0gICAgc3BlY2lmaWNhdGlvbiBzdWdnZXN0cykgd2hpY2ggbGVhZHMgdG8gdGhlIGNvbnRyb2xsZXIgc2VlaW5nIHRoZSAidG9rZW4iIGZpZWxkCi0gICAgYXMgdGhlIHByZXZpb3VzIGNhbGwgaGFzIGxlZnQgaXQsIGkuZS46Ci0gICAgLSBpZiBhIHRpbWVvdXQgb2NjdXJlZCBvbiB0aGUgcHJldmlvdXMgY2FsbCAoQWN0aXZlIGJpdCBsZWZ0IGFzIDEpLCBjb250cm9sbGVyCi0gICAgICBpbmNvcnJlY3RseSB0cmllcyB0byBjb21wbGV0ZSBhIHByZXZpb3VzIHRyYW5zYWN0aW9uIG9uIGEgbmV3bHkgcHJvZ3JhbW1lZAotICAgICAgZW5kcG9pbnQ7Ci0gICAgLSBpZiBhIGhhbHQgb2NjdXJlZCBvbiB0aGUgcHJldmlvdXMgY2FsbCAoSGFsdGVkIGJpdCBzZXQgdG8gMSksIGNvbnRyb2xsZXIganVzdAotICAgICAgaWdub3JlcyB0aGUgbmV3bHkgcHJvZ3JhbW1lZCBURChzKSBhbmQgdGhlIGZ1bmN0aW9uIHRoZW4ga2VlcHMgcmV0dXJuaW5nIGVycm9yCi0gICAgICBhZCBpbmZpbml0dW0uCi0KLSAgICBUaGlzIHR1cm5lZCBvdXQgdG8gYmUgY2F1c2VkIGJ5IHRoZSB3cm9uZyBvcmdlciBvZiB0aGUgYXJndW1lbnRzIHRvIHRoZSBtZW1zZXQoKQotICAgIGNhbGwgaW4gZWhjaV9hbGxvYygpLCBzbyB0aGUgYWxsb2NhdGVkIFREcyB3ZXJlbid0IGNsZWFyZWQgZWl0aGVyLgotCi0gICAgV2hpbGUgYXQgaXQsIHN0b3AgbmVlZGxlc3NseSBpbml0aWFsaXppbmcgdGhlIGFsdGVybmF0ZSBuZXh0IFREIHBvaW50ZXIgaW4gdGhlCi0gICAgUUggdHJhbnNmZXIgb3ZlcmxheS4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KLSAgICBBY2tlZC1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCAwZDdmNGFiY2Y2YmJlZjA2NTA0YzgyZTAzZjExMDU0NDY4MjYyNDMwCi1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJVGh1IEp1biAxNyAyMToxNzowOCAyMDEwICswMjAwCi0KLSAgICBGaXggY29uc29sZV9idWZmZXIgc2l6ZSBjb25mbGljdCBlcnJvci4KLQotICAgIFRoZSBjb25zb2xlX2J1ZmZlciBzaXplIGlzIGRlY2xhcmVkIGluIGNvbW1vbi9tYWluLmMgYXMKLSAgICAgICAtLSBjaGFyIGNvbnNvbGVfYnVmZmVyW0NPTkZJR19TWVNfQ0JTSVpFICsgMV07Ci0gICAgc28gdGhpcyBleHRlcm4gZGVmaW5pdGlvbiBpcyB3cm9uZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgMzhjMzhjMzQ0YzIwMGVlOTBjZmQyNDM2NzE0NzNjNDQ5YjZmMDgxNQotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdW4gMjIgMTI6NTA6NDYgMjAxMCArMDUzMAotCi0gICAgODV4eC9wMV9wMl9yZGI6IEFkZGVkIFJldkQgYm9hcmQgdmVyc2lvbiBzdXBwb3J0Ci0KLSAgICAtIEFsc28gbW9kaWZpZWQgdGhlIGNvZGUgdG8gdXNlIGlvIGFjY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERpcGVuIER1ZGhhdCA8ZGlwZW4uZHVkaGF0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjOTg3ZjQ3NTNiMGFmYWRiMzhhY2Q3ZTYxZGY3YmExMWU4YTAyMDNmCi1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJTW9uIEp1biAyOCAwMTo1NzozOSAyMDEwICswMzAwCi0KLSAgICB0c2VjOiBGaXggZVRTRUMyIGxpbmsgcHJvYmxlbSBvbiBQMjAyMFJEQgotCi0gICAgT24gUDIwMjBSREIgZVRTRUMyIGlzIGNvbm5lY3RlZCB0byBWaXRlc3NlIFZTQzgyMjEgUEhZIHZpYSBTR01JSS4KLSAgICBDdXJyZW50IFRCSSBQSFkgc2V0dGluZ3MgZm9yIFNHTUlJIG1vZGUgY2F1c2UgbGluayBwcm9ibGVtcyBvbgotICAgIHRoaXMgcGxhdGZvcm0sIGxpbmsgbmV2ZXIgY29tZXMgdXAuCi0KLSAgICBGaXggdGhpcyBieSBtYWtpbmcgVEJJIFBIWSBzZXR0aW5ncyBjb25maWd1cmFibGUgYW5kIGFkZCBhIHdvcmtpbmcKLSAgICBjb25maWd1cmF0aW9uIGZvciBQMjAyMFJEQi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgVGVzdGVkLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgZDNiZWUwODMzMmZiYzljYzViNmRjMjJlY2QzNDA1MGE4NWQ0NGQwYQotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjMgMTk6MzI6MjggMjAxMCArMDUzMAotCi0gICAgODV4eC9wMV9wMl9yZGI6IE1vZGlmeSB0aGUgQ0xLX0NUUkwgdmFsdWUgZm9yIEREUiBhdCA2NjdNSHoKLQotICAgIFVzZSBhIHNsaWdobHkgbGFyZ2VyIHZhbHVlIG9mIENMS19DVFJMIGZvciBERFIgYXQgNjY3TUh6Ci0gICAgd2hpY2ggZml4ZXMgcmFuZG9tIGNyYXNoZXMgd2hpbGUgbGludXggYm9vdGluZy4KLQotICAgIEFwcGxpY2FibGUgZm9yIGJvdGggTkFORCBhbmQgTk9SIGJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIEdvcGFscGV0IDxzYW5kZWVwLmt1bWFyQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNkYzYzNjNmNDIzOTAwNjQ1MjY1NTYzZDcwNWEwYTVhOTY0YWU0MGMKLUF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDIzIDE5OjQyOjA3IDIwMTAgKzA1MzAKLQotICAgIDg1eHgvcDFfcDJfcmRiOiBub3QgYWJsZSB0byBtb2RpZnkgIiRib290ZmlsZSIgZW52aXJvbm1lbnQgdmFyaWFibGUKLQotICAgIEJlY2F1c2UgdGhlIHZhcmlhYmxlIHdhcyBnZXR0aW5nIGRlZmluZWQgdHdpY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGNjZDU1MTBlNTBiNTY3NTIyN2ExZmUwZTVjYTA5OWQzMzNmNjM3ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEp1biAyOSAwMTozMzozNSAyMDEwICswMjAwCi0KLSAgICBNUEM1MTJ4OiB3b3JrYXJvdW5kIGRhdGEgY29ycnVwdGlvbiBmb3IgdW5hbGlnbmVkIGxvY2FsIGJ1cyBhY2Nlc3NlcwotCi0gICAgQ29tbWl0IDQ2MGMyY2UzICJNUEM1MjAwOiB3b3JrYXJvdW5kIGRhdGEgY29ycnVwdGlvbiBmb3IgdW5hbGlnbmVkCi0gICAgbG9jYWwgYnVzIGFjY2Vzc2VzIiBmaXhlZCB0aGUgcHJvYmxlbSBmb3IgTVBDNTIwMCBvbmx5LCBidXQgTVBDNTEyeCBpcwotICAgIGFmZmVjdGVkIGFzIHdlbGwsIHNvIGFwcGx5IHRoZSBzYW1lIGZpeCBoZXJlLCB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBDYzogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDQ4MjEyNmUyN2IzZGJmMGU2OWE2NDQ1ZGE4Yjk0YjM1NTFhZGYwNWQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKdW4gMjMgMjA6NTA6NTQgMjAxMCArMDIwMAotCi0gICAgUHJlcGFyZSB2MjAxMC4wNi1yYzMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0NjBjMmNlMzYyZTU2ODkwYzJhMDI5ZTJjM2IxZmYyNzk2YzdmYzU0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSnVuIDIxIDIyOjI5OjU5IDIwMTAgKzAyMDAKLQotICAgIE1QQzUyMDA6IHdvcmthcm91bmQgZGF0YSBjb3JydXB0aW9uIGZvciB1bmFsaWduZWQgbG9jYWwgYnVzIGFjY2Vzc2VzCi0KLSAgICBUaGUgTVBDNTIwMCBoYXMgYSBuYXN0eSBwcm9ibGVtIHRoYXQgd2lsbCBjYXVzZSBzaWxlbnQgZGF0YSBjb3JydXB0aW9uCi0gICAgd2hlbiBwZXJmb3JtaW5nIHVuYWxpZ25lZCAxNiBvciAzMiBieXRlIGFjY2Vzc2VzIHdoZW4gcmVhZGluZyBmcm9tIHRoZQotICAgIGxvY2FsIGJ1cyAtIHR5cGljYWxseSB0aGlzIGFmZmVjdHMgcmVhZGluZyBmcm9tIGZsYXNoLiBUaGUgcHJvYmxlbSBjYW4KLSAgICBiZSBlYXNpbHkgc2hvd246Ci0KLSAgICA9PiBtZCBmYzBjMDAwMCAxMAotICAgIGZjMGMwMDAwOiAzMjNlNDMzNyAwMTYyNmY2ZiA3NDYzNmQ2NCAzZDcyNzU2ZSAgICAyPkM3LmJvb3RjbWQ9cnVuCi0gICAgZmMwYzAwMTA6IDIwNmU2NTc0IDVmNmU2NjczIDAwNjI2ZjZmIDc0NjQ2NTZjICAgICBuZXRfbmZzLmJvb3RkZWwKLSAgICBmYzBjMDAyMDogNjE3OTNkMzUgMDA2MjYxNzUgNjQ3MjYxNzQgNjUzZDMxMzEgICAgYXk9NS5iYXVkcmF0ZT0xMQotICAgIGZjMGMwMDMwOiAzNTMyMzAzMCAwMDcwNzI2NSA2MjZmNmY3NCAzZDY1NjM2OCAgICA1MjAwLnByZWJvb3Q9ZWNoCi0gICAgPT4gbWQgZmMwYzAwMDEgMTAKLSAgICBmYzBjMDAwMTogNjU2MzY4MDEgMDAwMDAwNzQgMDAwMDAwM2QgMDAwMDAwMjAgICAgZWNoLi4uLnQuLi49Li4uCi0gICAgZmMwYzAwMTE6IDAwMDAwMDVmIDAwMDAwMDAwIDAwMDAwMDc0IDAwMDAwMDYxICAgIC4uLl8uLi4uLi4udC4uLmEKLSAgICBmYzBjMDAyMTogMDAwMDAwMDAgMDAwMDAwNjQgMDAwMDAwNjUgMDAwMDAwMzUgICAgLi4uLi4uLmQuLi5lLi4uNQotICAgIGZjMGMwMDMxOiAwMDAwMDAwMCAwMDAwMDA2MiAwMDAwMDAzZCAwMDAwMDA2ZiAgICAuLi4uLi4uYi4uLj0uLi5vCi0gICAgPT4gbWQudyBmYzBjMDAwMSAxMAotICAgIGZjMGMwMDAxOiAwMDAwIDM3MDEgMDAwMCA2Zjc0IDAwMDAgNjQzZCAwMDAwIDZlMjAJIC4uNy4uLm90Li5kPS4ubgotICAgIGZjMGMwMDExOiAwMDAwIDc0NWYgMDAwMCA3MzAwIDAwMDAgNmY3NCAwMDAwIDZjNjEJIC4udF8uLnMuLi5vdC4ubGEKLQotICAgIFRoaXMgY29tbWl0IGltcGxlbWVudHMgYSB3b3JrYXJvdW5kIGF0IGxlYXN0IGZvciB0aGUgbW9zdCBibGF0YW50Ci0gICAgcHJvYmxlbTogdXNpbmcgbWVtY3B5KCkgZnJvbSBOT1IgZmxhc2guIFdlIHJlbmFtZSB0aGUgYXNzZW1ibGVyCi0gICAgcm91dGluZSBpbnRvIF9fbWVtY3B5KCkgYW5kIHByb3ZpZGUgYSB3cmFwcGVyLCB3aGljaCB3aWxsIHVzZSBhCi0gICAgYnl0ZS13aXNlIGNvcHkgbG9vcCBmb3IgdW5hbGlnbmVkIHNvdXJjZSBvciB0YXJnZXQgYWRkcmVzc2VzIHdoZW4KLSAgICByZWFkaW5nIGZyb20gTk9SIGZsYXNoLCBhbmQgYnJhbmNoIHRvIHRoZSBvcHRpbWl6ZWQgX19tZW1jcHkoKQotICAgIGluIGFsbCBvdGhlciBjYXNlcywgdGh1cyBtaW5pbWl6aW5nIHRoZSBwZXJmb3JtYW5jZSBpbXBhY3QuCi0KLSAgICBUZXN0ZWQgb24gbGl0ZTUyMDBiIGFuZCBUUU01MjAwUy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgNDdlYTZlZGZiMzAwNGZiMmQyYTk3OWUxOWMzZjZlNGUzMmY0NWU1MQotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglGcmkgSnVuIDE4IDE5OjMxOjEwIDIwMTAgKzA5MDAKLQotICAgIEFSTTogcmVtb3ZlIHVudXNlZCBWSURFT0xGQiBBVEFHCi0KLSAgICBBVEFHX1ZJREVPTEZCIGlzIG5vdCB1c2VkIGFueXdoZXJlLgotICAgIFRoZSBiZWxvd2luZyB3YXJuaW5nIGlzIG9jY3VycmVkIGR1ZSB0byB0aGlzIEFUQUcuCi0KLSAgICBbCSAwLjAwMDAwMF0gSWdub3JpbmcgdW5yZWNvZ25pc2VkIHRhZyAweDU0NDEwMDA4Ci0KLSAgICBUaGlzIHBhdGNoIGZpeGVkIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgQWNrZWQtYnk6IE1hcnRpbiBLcmF1c2UgPE1hcnRpbi5LcmF1c2VAdHFzLmRlPgotCi1jb21taXQgY2VlYmEwMDMwODQ0YjJlODRjZTRlNDdmNGJlN2FkMzQ3Y2QxZTgyNwotQXV0aG9yOiBQZXRlciBIb3J0b24gPHplcm9AY29sb25lbC1wYW5pYy5vcmc+Ci1EYXRlOglTYXQgSnVuIDEyIDEwOjExOjU2IDIwMTAgKzA5MDAKLQotICAgIFVCSTogaW5pdGlhbGlzZSB1cGRhdGUgbWFya2VyCi0KLSAgICBVQkk6IGluaXRpYWxpc2UgdXBkYXRlIG1hcmtlcgotCi0gICAgVGhlIGluIGtlcm5lbCBjb3B5IG9mIGEgdm9sdW1lJ3MgdXBkYXRlIG1hcmtlciBpcyBub3QgaW5pdGlhbGlzZWQgZnJvbSB0aGUKLSAgICB2b2x1bWUgdGFibGUuIFRoaXMgbWVhbnMgdGhhdCB2b2x1bWVzIHdoZXJlIGFuIHVwZGF0ZSB3YXMgdW5maW5uaXNoZWQgd2lsbAotICAgIG5vdCBiZSB0cmVhdGVkIGFzICJmb3JiaWRkZW4gdG8gdXNlIi4gVGhpcyBpcyBiYXNpY2FsbHkgdGhhdCB0aGUgdXBkYXRlCi0gICAgZnVuY3Rpb25hbGl0eSB3YXMgYnJva2VuLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgSG9ydG9uIDx6ZXJvQGNvbG9uZWwtcGFuaWMub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEFydGVtIEJpdHl1dHNraXkgPEFydGVtLkJpdHl1dHNraXlAbm9raWEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGI4YzRlZWE1NmI1ZjQxZjliZGJiODlkM2Q1Yzc5YjdkMjgyZDUxM2MKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+Ci1EYXRlOglXZWQgQXByIDE0IDE1OjMyOjA2IDIwMTAgKzAyMDAKLQotICAgIHJlbW92ZSBteXNlbGYgYXMgYSBtYWludGFpbmVyIG9mIHNldmVyYWwgQVJNIGJvYXJkcwotCi0gICAgU2luY2UgSSBoYXZlbid0IGJlZW4gYWN0aXZlbHkgbWFpbnRhaW5pbmcgdGhlc2UgYm9hcmRzIGZvciBhIGxvbmcgd2hpbGUsCi0gICAga2VlcGluZyBteXNlbGYgYXMgdGhlaXIgbWFpbnRhaW5lciBtYWtlcyBubyBzZW5zZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgotCi1jb21taXQgZDZiOTM3MTQyMDA4NDYzZDYyOGVmMjZhNzUzZjljMjBjNTdmMzYxNwotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6CU1vbiBKdW4gMjEgMTg6MTM6MjEgMjAxMCArMDQwMAotCi0gICAgTWFrZWZpbGU6IGFsd2F5cyBjYWxsIGRhdGUgd2l0aCBMQ19BTEw9QyBzZXQKLQotICAgIEVuc3VyZSB0aGF0IGRhdGUgaXMgY2FsbGVkIG9ubHkgd2l0aCBMQ19BTEw9QyBsb2NhbGUgc2V0IHRvIG1ha2UgZGF0ZXMKLSAgICBsb2NhbGUgbmV1dHJhbCB0aHVzIHByZXZlbnRpbmcgbHVya2luZyBvZiBub24tQVNDSUkgY2hhcmFjdGVycyBpbnRvCi0gICAgVS1Cb290IGJpbmFyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotCi0gICAgQ2hhbmdlZCBMQU5HPSBpbnRvIExDX0FMTD0gYXMgc3VnZ2VzdGVkIGJ5IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMjNmZGYwNTgwNjYwZWRmMzhjYjcxMThmMDViODg2NWYyZjczYzY3NAotQXV0aG9yOiBBbGJlcnQgQXJpYmF1ZCA8W2FsYmVydC5hcmliYXVkQGZyZWUuZnJdPgotRGF0ZToJVHVlIEp1biAyMiAxNTo1MDoyOCAyMDEwICswNTMwCi0KLSAgICBGaXggd3Jvbmcgb3Jpb241eCBNUFAgYW5kIEdJUE8gd3JpdGVsIGFyZ3VtZW50cwotCi0gICAgT3Jpb241eCBNUFAgYW5kIEdQSU8gc2V0dGluZyBjb2RlIGhhZCB3cml0ZWwgYXJndW1lbnRzCi0gICAgdGhlIHdyb25nIHdheSBhcm91bmQuIEZpeGVkIGFuZCB0ZXN0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGJlcnQgQXJpYmF1ZCA8YWxiZXJ0LmFyaWJhdWRAZnJlZS5mcj4KLQotY29tbWl0IDk1YmMzOWU4NDhkZDNmNzQxYTA2NGM4MjZkMWMyODJjNDgxMjVkNDEKLUF1dGhvcjogVGVycnkgTHYgPHI2NTM4OEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1heSA2IDE4OjMwOjU1IDIwMTAgKzA4MDAKLQotICAgIEFSTTogZml4IGJ1ZyBpbiBtYWNybyBfX2FyY2hfaW9yZW1hcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRlcnJ5IEx2IDxyNjUzODhAZnJlZXNjYWxlLmNvbT4KLQotICAgIEZpeCBjb21taXQgbWVzc2FnZSBhbmQgY29kZSBmb3JtYXR0aW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGE3MWRhMWI2Yzk2MjA1NTQ5Y2EyZTdjZjk5MWUyMzQwMTgxYmJmY2YKLUF1dGhvcjogVml0YWx5IEt1em1pY2hldiA8dmt1em1pY2hldkBtdmlzdGEuY29tPgotRGF0ZToJVHVlIEp1biAxNSAyMjoxODoxMSAyMDEwICswNDAwCi0KLSAgICBBUk06IEFsaWduIHN0YWNrIHRvIDggYnl0ZXMKLQotICAgIFRoZSBBUk0gQUJJIHJlcXVpcmVzIHRoYXQgdGhlIHN0YWNrIGJlIGFsaWduZWQgdG8gOCBieXRlcyBhcyBpdCBpcyBub3RlZAotICAgIGluIFByb2NlZHVyZSBDYWxsIFN0YW5kYXJkIGZvciB0aGUgQVJNIEFyY2hpdGVjdHVyZToKLSAgICBodHRwOi8vaW5mb2NlbnRlci5hcm0uY29tL2hlbHAvdG9waWMvY29tLmFybS5kb2MuaWhpMDA0MmQvaW5kZXguaHRtbAotCi0gICAgVW5hbGlnbmVkIFNQIGFsc28gY2F1c2VzIHRoZSBwcm9ibGVtIHdpdGggdmFyaWFibGUtbGVuZ3RoIGFycmF5cwotICAgIGFsbG9jYXRpb24gd2hlbiBWTEEgYWRkcmVzcyBiZWNvbWVzIGxlc3MgdGhhbiBzdGFjayBwb2ludGVyIGR1cmluZwotICAgIGFsaWduaW5nIG9mIHRoaXMgYWRkcmVzcywgc28gdGhlIG5leHQgJ3B1c2gnIGluIHRoZSBzdGFjayBvdmVyd3JpdGVzCi0gICAgZmlyc3QgNCBieXRlcyBvZiBWTEEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXRhbHkgS3V6bWljaGV2IDx2a3V6bWljaGV2QG12aXN0YS5jb20+Ci0KLSAgICBUZXN0ZWQgb24gdHgyNShteDI1KSwgaW14MjdsaXRlKG14MjcpLCBxb25nKG14MzEpIGFuZCB0cmFiKHMzYzI0MDApCi0gICAgVGVzdGVkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNmRlMjdiZGM3ODhlN2M0NTMyZWUwNzIxYWUyOTFhZWI1ZGY0NzVkYwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1biAyMCAxMjozMjozNyAyMDEwICswMjAwCi0KLSAgICBuZXQvZXRoLmM6IGV0aF9tYWNfc2tpcCgpIGlzIG9ubHkgbmVlZGVkIHdoZW4gQ09ORklHX05FVF9NVUxUSSBpcyBzZXQKLQotICAgIE1vdmUgaXQgaW5zaWRlIHRoZSAjaWZkZWYgQ09ORklHX05FVF9NVUxUSSB0byBhdm9pZAotCi0JZXRoLmM6NjQ6IHdhcm5pbmc6ICdldGhfbWFjX3NraXAnIGRlZmluZWQgYnV0IG5vdCB1c2VkCi0KLSAgICBtZXNzYWdlcyBmcm9tIGEgbnVtYmVyIG9mIG9sZCwgbm9uLUNPTkZJR19ORVRfTVVMVEkgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZTM5N2U1OWU4NjFhYTgxOGNkYTEyYTIzMjA2ZGRlMDZmN2U5ZjY2MAotQXV0aG9yOiBGaWxsb2QgU3RlcGhhbmUgPHN0ZXBoYW5lLmZpbGxvZEBncmFzc3ZhbGxleS5jb20+Ci1EYXRlOglGcmkgSnVuIDExIDE5OjI2OjQzIDIwMTAgKzAyMDAKLQotICAgIGlwL2RlZnJhZzogZml4IHByb2Nlc3Npbmcgb2YgbGFzdCBzaG9ydCBmcmFnbWVudAotCi0gICAgVEZUUCdpbmcgYSBmaWxlIG9mIHNpemUgMTc0Nzg1MSBieXRlcyB3aXRoIENPTkZJR19JUF9ERUZSQUcgYW5kCi0gICAgQ09ORklHX1RGVFBfQkxPQ0tTSVpFIHNldCB0byA0MDk2IGZhaWxzIHdpdGggYSB0aW1lb3V0LCBiZWNhdXNlCi0gICAgdGhlIGxhc3QgZnJhZ21lbnQgaXMgbm90IHRha2VuIGludG8gYWNjb3VudC4gVGhpcyBwYXRjaCBmaXhlcwotICAgIElQIGZyYWdtZW50cyBoYXZpbmcgbGVzcyB0aGFuIDggYnl0ZXMgb2YgcGF5bG9hZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXBoYW5lIEZpbGxvZCA8c3RlcGhhbmUuZmlsbG9kQGdyYXNzdmFsbGV5LmNvbT4KLSAgICBBY2tlZC1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDljMDBiMmYwYTNmZTBmNzc5NzYxNjA3MDI0Zjk5Yjc2OTBjOTc3NmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMjAgMTI6MzA6MjIgMjAxMCArMDIwMAotCi0gICAgbmV0L2V0aC5jOiBldGhfbWFjX3NraXAoKSBpcyBvbmx5IG5lZWRlZCB3aGVuIENPTkZJR19ORVRfTVVMVEkgaXMgc2V0Ci0KLSAgICBNb3ZlIGl0IGluc2lkZSB0aGUgI2lmZGVmIENPTkZJR19ORVRfTVVMVEkgdG8gYXZvaWQKLQotCWV0aC5jOjY0OiB3YXJuaW5nOiAnZXRoX21hY19za2lwJyBkZWZpbmVkIGJ1dCBub3QgdXNlZAotCi0gICAgbWVzc2FnZXMgZnJvbSBhbnVtYmVyIG9mIG9sZCwgbm9uLUNPTkZJR19ORVRfTVVMVEkgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDkzMTJiYmEwMWE0MTE5MWYyMDgyMWI2NmI4NGIzZmYxZDI5MDJlOGEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMjAgMDI6MTY6NDQgMjAxMCArMDIwMAotCi0gICAgaW5jbHVkZS9jb21waWxlci5oOiByZW1vdmUgcmVkdW5kYW50IGRlY2xhcmF0aW9uIG9mIGVycm5vCi0KLSAgICBDb21taXQgMzc1NjYwOTAgImNvbXBpbGVyLmg6IHVuaWZ5IHN5c3RlbSBpZmRlZiBjcnVmdCBoZXJlIiBhZGRlZCBib3RoCi0gICAgYSAiI2luY2x1ZGUgPGVycm5vLmg+IiBhbmQgYSAiZXh0ZXJuIGludCBlcnJubzsiIHRvIGluY2x1ZGUvY29tcGlsZXIuaAotICAgIHdoaWNoIGlzIGNhdXNpbmcgYnVpbGQgd2FybmluZ3MgZm9yIHNvbWUgc3lzdGVtcywgZm9yIGV4YW1wbGUgZm9yIHRoZQotICAgICJuZXRzdGFyIiBib2FyZDoKLQotCUluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS93ZC9naXQvdS1ib290L3dvcmsvbGliL2NyYzMyLmM6MTU6Ci0JaW5jbHVkZS9jb21waWxlci5oOjI4OiB3YXJuaW5nOiBmdW5jdGlvbiBkZWNsYXJhdGlvbiBpc24ndCBhIHByb3RvdHlwZQotCi0gICAgVGhlIGRlY2xhcmF0aW9uIG9mICJlcnJubyIgc2hvdWxkIGJlIHJlZHVuZGFudCwgYXMgPGVycm5vLmg+IGlzCi0gICAgc3VwcG9zZWQgdG8gcHJvdmlkZSBhIGNvcnJlY3QgZGVjbGFyYXRpb24sIHNvIGRyb3AgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjZDA0MGE0OTUzZTU1ZWZlODlkYzNhZjRhY2YwMzAyZDU5MjMwMjZmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDE4IDE1OjU1OjE1IDIwMTAgKzAyMDAKLQotICAgIGFyY2gvYXJtL2NwdS9hcm1fY29ydGV4YTgvb21hcDMvY2FjaGUuUzogbWFrZSBidWlsZCB3aXRoIG9sZGVyIHRvb2xzCi0KLSAgICBUaGUgcHVzaCAvIHBvcCBpbnN0cnVjdGlvbnMgdXNlZCBpbiB0aGlzIGZpbGUgYXJlIGF2YWlsYWJsZSBvbmx5IHdpdGgKLSAgICBtb3JlIHJlY2VudCB0b29sIGNoYWluczoKLQotICAgIGNhY2hlLlM6IEFzc2VtYmxlciBtZXNzYWdlczoKLSAgICBjYWNoZS5TOjEzMzogRXJyb3I6IGJhZCBpbnN0cnVjdGlvbiBgcHVzaCB7cjAscjEscjIsbHJ9JwotICAgIGNhY2hlLlM6MTYwOiBFcnJvcjogYmFkIGluc3RydWN0aW9uIGBwb3Age3IxLHIyLHIzLHBjfScKLSAgICBjYWNoZS5TOjE2NDogRXJyb3I6IGJhZCBpbnN0cnVjdGlvbiBgcHVzaCB7cjAscjEscjIsbHJ9JwotICAgIGNhY2hlLlM6MTkxOiBFcnJvcjogYmFkIGluc3RydWN0aW9uIGBwb3Age3IxLHIyLHIzLHBjfScKLQotICAgIENoYW5nZSBwdXNoL3BvcCBpbnRvIHN0bWZkL2xkbWZkIGluc3RydWN0aW9ucyB0byBzdXBwb3J0IG9sZGVyCi0gICAgdmVyc2lvbnMgb2YgYmludXRpbHMgYXMgd2VsbC4KLQotICAgIEkgdmVyaWZpZWQgdGhhdCB0aGUgbW9kaWZpZWQgc291cmNlIGNvZGUgZ2VuZXJhdGVzIGV4YWN0bHkgdGhlIHNhbWUKLSAgICBiaW5hcnkgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBDYzogVG9tIFJpeCA8dG9tQGJ1bWJsZWNvdy5jb20+Ci0KLWNvbW1pdCBjZTljMjI3Y2M3MWFmYzNiNGM3OGRjYzBhNTY1YzQwZDRhZDk0M2U0Ci1BdXRob3I6IEFsYmVydCBBcmliYXVkIDxbYWxiZXJ0LmFyaWJhdWRAZnJlZS5mcl0+Ci1EYXRlOglUaHUgSnVuIDE3IDE5OjM4OjIxIDIwMTAgKzA1MzAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgTGFDaWUgRUQgTWluaSBWMiBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMYUNpZSBFRCBNaW5pIFYyIHByb2R1Y3QKLSAgICB3aGljaCBpcyBiYXNlZCBvbiB0aGUgTWFydmVsbCBPcmlvbjV4IFNvQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsYmVydCBBcmliYXVkIDxhbGJlcnQuYXJpYmF1ZEBmcmVlLmZyPgotCi1jb21taXQgODMxNDJjMTEyZDMwZWUzZGEyM2I2MjM4NzkwOWQzM2RiMDY0YmRjNAotQXV0aG9yOiBBbGJlcnQgQXJpYmF1ZCA8W2FsYmVydC5hcmliYXVkQGZyZWUuZnJdPgotRGF0ZToJVGh1IEp1biAxNyAxOTozNzowMSAyMDEwICswNTMwCi0KLSAgICBBZGQgT3Jpb241eCBzdXBwb3J0IHRvIDE2NTUwIGRldmljZSBkcml2ZXIKLQotICAgIFRoaXMgcGF0Y2ggcHJvdmlkZXMgYWNjZXNzIHRvIHRoZSAxNjU1MC1jb21wYXRpYmxlCi0gICAgc2VyaWFsIGRldmljZSBvZiB0aGUgT3Jpb241eCBTb0MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGJlcnQgQXJpYmF1ZCA8YWxiZXJ0LmFyaWJhdWRAZnJlZS5mcj4KLQotY29tbWl0IDBjNjFlNmY5MjU3ZWY0MTY5NTliNzQwZWUzY2YxOTFiZjY4MjAwN2QKLUF1dGhvcjogQWxiZXJ0IEFyaWJhdWQgPFthbGJlcnQuYXJpYmF1ZEBmcmVlLmZyXT4KLURhdGU6CVRodSBKdW4gMTcgMTk6MzY6MDcgMjAxMCArMDUzMAotCi0gICAgSW5pdGlhbCBzdXBwb3J0IGZvciBNYXJ2ZWxsIE9yaW9uNXggU29DCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1hcnZlbGwgT3Jpb241eCBTb0MuCi0gICAgSXQgaGFzIG5vIHVzZSBhbG9uZSwgYW5kIG11c3QgYmUgZm9sbG93ZWQgYnkgYSBwYXRjaAotICAgIHRvIGFkZCBPcmlvbjV4IHN1cHBvcnQgZm9yIHNlcmlhbCwgdGhlbiBzdXBwb3J0IGZvcgotICAgIHRoZSBFRCBNaW5pIFYyLCBhbiBPcmlvbjV4LWJhc2VkIHByb2R1Y3QgZnJvbSBMYUNpZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsYmVydCBBcmliYXVkIDxhbGJlcnQuYXJpYmF1ZEBmcmVlLmZyPgotCi1jb21taXQgMzc2ZTdmYWRiYWQzMjg1MjMxZTM5MGM2NTM0ZmViNWFmODZkNTk0YgotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglUdWUgSnVuIDggMTQ6NDA6NDcgMjAxMCArMDkwMAotCi0gICAgU0FNU1VORzogZ29uaTogYWRkIHRoZSBHUEwgbGljZW5jZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgQWNrZWQtYnk6IFRvbSA8VG9tQGJ1bWJsZWNvdy5jb20+Ci0KLWNvbW1pdCBjNDc0YThlYmI4ODBlNTY0ZGYwYzcwMWM2YThjZjczYjc3NzliMWQyCi1BdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLURhdGU6CU1vbiBNYXkgMzEgMjI6MDI6NDIgMjAxMCArMDkwMAotCi0gICAgczVwYzF4eDogQWRkIHN1cHBvcnQgZm9yIFNhbXN1bmcgR29uaSBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBTYW1zdW5nIEdvbmkgYm9hcmQgKFM1UEMxMTAgU29DKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCBmZmI0YjAyNTU0ZDk5NzJkNjY1MDJlZmJlOTdiMzkzMzYyMGM4YTMxCi1BdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLURhdGU6CUZyaSBNYXkgMjggMTI6MzQ6MjkgMjAxMCArMDkwMAotCi0gICAgczVwYzF4eDogZ3BpbzogYnVnIGZpeCBhdCBncGlvX3NldF9wdWxsIGZ1bmN0aW9uCi0KLSAgICBXaGVuIHNldCB0byBQVUxMX05PTkUsIGdwaW9fc2V0X3B1bGwgZnVuY3Rpb24gaXMgcmV0dXJuZWQgd2l0aG91dCB3cml0ZSB0aGUgcmVnaXN0ZXIuCi0gICAgVGhpcyBwYXRjaCBmaXhlZCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGE5MDQ2YjllMWFlZWVkYzY2ZGRmMWQwMDQ3NGFkMGNlOGM2YWE2ZTQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMTMgMTc6NDg6MTUgMjAxMCArMDIwMAotCi0gICAgUHJlcGFyZSB2MjAxMC1yYzIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzYTk2YWQ4NTFmNGY5MjY3ZTExOTliNzAwY2I4MzhhNzczMzRlNGIyCi1BdXRob3I6IE1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXByIDExIDA4OjUzOjU1IDIwMTAgKzAyMDAKLQotICAgIFBYQTogQWxpZ24gc3RhY2sgdG8gOCBieXRlcwotCi0gICAgUGFydCBvZiB0aGlzIHBhdGNoIGlzIGJ5OiBNaWtoYWlsIEtzaGV2ZXRza2l5LgotCi0gICAgU3RhY2sgbXVzdCBiZSBhbGlnbmVkIHRvIDggYnl0ZXMgb24gUFhBIChwb3NzaWJseSBhbGwgYXJtdjV0ZSkgZm9yIExEUkQvU1RSRAotICAgIGluc3RydWN0aW9ucy4gSW4gY2FzZSBMRFJEL1NUUkQgaXMgaXNzdWVkIG9uIGFuIHVuYWxpZ25lZCBhZGRyZXNzLCB0aGUgYmVoYXZpb3VyCi0gICAgaXMgdW5kZWZpbmVkLgotCi0gICAgVGhlIGlzc3VlIHdhcyBvYnNlcnZlZCB3aGVuIHdvcmtpbmcgd2l0aCB0aGUgTkFORCBjb2RlLCB3aGljaCB3YXMgcmVuZGVyZWQKLSAgICBkaXNmdW5jdGlvbmFsLiBBbHNvLCB0aGUgdnNwcmludGYoKSBmdW5jdGlvbiBoYWQgc2VyaW91cyBwcm9ibGVtcyB3aXRoIHByaW50aW5nCi0gICAgNjRiaXQgd2lkZSBsb25nIGxvbmdzLiBBZnRlciBhbGlnbmluZyB0aGUgc3RhY2ssIHRoaXMgd3JvbmcgYmVoYXZpb3VyIGlzIG5vCi0gICAgbG9uZ2VyIHByZXNlbnQuCi0KLSAgICBUZXN0ZWQgb246Ci0JTWFydmVsbCBMaXR0bGV0b24gUFhBMzEwIGJvYXJkCi0JVG9yYWRleCBDb2xpYnJpIFBYQTMyMCBib2FyZAotCUFlcm9uaXggWmlwaXQgWjIgUFhBMjcwIGhhbmRoZWxkCi0JVm9pcGFjIFBYQTI3MCBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmVrLnZhc3V0QGdtYWlsLmNvbT4KLQotY29tbWl0IDg5Yjc2NWM3ZjZkZGZkZTA3YmE2NzNkZDRhZGJlYjVkYTM5MWE4MWIKLUF1dGhvcjogU3VkaGFrYXIgUmFqYXNoZWtoYXJhIDxzdWRoYWthci5yYWpAdGkuY29tPgotRGF0ZToJVGh1IEp1biAxMCAxNToxODoxNSAyMDEwICswNTMwCi0KLSAgICBUSTogRGFWaW5jaTogQWRkIGJvYXJkIHNwZWNpZmljIGNvZGUgZm9yIGRhODUwIEVWTQotCi0gICAgUHJvdmlkZXMgaW5pdGlhbCBzdXBwb3J0IGZvciBUSSBPTUFQLUwxMzgvREE4NTAgU29DIGRldmljZXMgb24KLSAgICBhIExvZ2ljIFBEIEVWTSBib2FyZC4KLQotICAgIFByb3ZpZGVzOgotICAgIEluaXRpYWwgYm9vdCBhbmQgY29uZmlndXJhdGlvbi4KLSAgICBTdXBwb3J0IGZvciBpMmMuCi0gICAgVUFSVCBzdXBwb3J0IChjb25zb2xlKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIFJhamFzaGVraGFyYSA8c3VkaGFrYXIucmFqQHRpLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIEdhcmRpbmVyIDxiZW5nYXJkaW5lckBuYW5vbWV0cmljcy5jYT4KLSAgICBSZXZpZXdlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAxNTg1NTcwMDFhZmUxNjdkY2I4NDhiYjE0YmEwZjJmMjBhZWIyNWExCi1BdXRob3I6IFN1ZGhha2FyIFJhamFzaGVraGFyYSA8c3VkaGFrYXIucmFqQHRpLmNvbT4KLURhdGU6CVR1ZSBKdW4gOCAxMTowMTo1OCAyMDEwICswNTMwCi0KLSAgICBUSTogRGFWaW5jaTogUHJlcGFyZSBmb3IgZGE4NTAgc3VwcG9ydAotCi0gICAgREE4NTAvT01BUC1MMTM4IGlzIGEgbmV3IFNvQyBmcm9tIFRleGFzIEluc3RydW1lbnRzCi0gICAgKGh0dHA6Ly9mb2N1cy50aS5jb20vZG9jcy9wcm9kL2ZvbGRlcnMvcHJpbnQvb21hcC1sMTM4Lmh0bWwpLgotICAgIFRoaXMgU29DIGlzIHNpbWlsYXIgdG8gREE4MzAvT01BUC1MMTM3IGluIG1hbnkgYXNwZWN0cy4gSGVuY2UKLSAgICByZW5hbWUgdGhlIGRhODMwIHNwZWNpZmljIGZpbGVzIGFuZCBmb2xkZXJzIHRvIGRhOHh4IHRvCi0gICAgYWNjb21tb2RhdGUgREE4NTAvT01BUC1MMTM4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgUmFqYXNoZWtoYXJhIDxzdWRoYWthci5yYWpAdGkuY29tPgotICAgIEFja2VkLWJ5OiBCZW4gR2FyZGluZXIgPGJlbmdhcmRpbmVyQG5hbm9tZXRyaWNzLmNhPgotICAgIFJldmlld2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDlkNzk5NTYwMjllYzM3OWU3MTM3OTQ4YmEzYTdkZWJiZWE2MTMyNWYKLUF1dGhvcjogU3VkaGFrYXIgUmFqYXNoZWtoYXJhIDxzdWRoYWthci5yYWpAdGkuY29tPgotRGF0ZToJTW9uIEp1biA3IDEyOjM5OjU5IDIwMTAgKzA1MzAKLQotICAgIGRhODMwOiBNb3ZlIGNvbW1vbiBjb2RlIG91dCBvZiBkYTgzMGV2bS5jIGZpbGUKLQotICAgIFRJJ3MgREE4NTAvT01BUC1MMTM4IHBsYXRmb3JtIGlzIHNpbWlsYXIgdG8gREE4MzAvT01BUC1MMTM3Ci0gICAgaW4gbWFueSBhc3BlY3RzLiBTbyBpbnN0ZWFkIG9mIHJlcGVhdGluZyB0aGUgc2FtZSBjb2RlIGluCi0gICAgbXVsdGlwbGUgZmlsZXMsIG1vdmUgdGhlIGNvbW1vbiBjb2RlIHRvIGEgZGlmZmVyZW50IGZpbGUKLSAgICBhbmQgY2FsbCB0aG9zZSBmdW5jdGlvbnMgZnJvbSB0aGUgcmVzcGVjdGl2ZSBkYTgzMC9kYTg1MAotICAgIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3VkaGFrYXIgUmFqYXNoZWtoYXJhIDxzdWRoYWthci5yYWpAdGkuY29tPgotICAgIEFja2VkLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIEdhcmRpbmVyIDxiZW5nYXJkaW5lckBuYW5vbWV0cmljcy5jYT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA1MjQ2ZDAxZWRkODkzNWUwNGNkZjc5YTViOWEwMzg3NDUwOWEzMWIxCi1BdXRob3I6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBKdW4gOCAxNzoxOToyMiAyMDEwIC0wNDAwCi0KLSAgICBPTUFQMzogcGFuZG9yYTogZW5hYmxlIGJhdHRlcnkgYmFja3VwIGNhcGFjaXRvcgotCi0gICAgUGFuZG9yYSBoYXMgYSBjYXBhY2l0b3IgY29ubmVjdGVkIGFzIGJhY2t1cCBiYXR0ZXJ5LCB3aGljaCBhbGxvd3MKLSAgICByZXRhaW5pbmcgUlRDIGZvciBzb21lIHRpbWUgd2hpbGUgbWFpbiBiYXR0ZXJ5IGlzIHJlbW92ZWQuIEVuYWJsZSBiYWNrdXAKLSAgICBiYXR0ZXJ5IGNoYXJnZSBmdW5jdGlvbiB0byBjaGFyZ2UgdGhhdCBjYXBhY2l0b3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgOTI2ODIzNjUyOTE2MTMxMmM4NzdlNjM4YTE0YzAxMWZkM2M4ODNlMQotQXV0aG9yOiBEZWxpbyBCcmlnbm9saSA8ZGJyaWdub2xpQGF1ZGlvc2NpZW5jZS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTc6MTY6MTMgMjAxMCAtMDQwMAotCi0gICAgRGFWaW5jaTogSW1wcm92ZSBEYVZpbmNpIFNQSSBzcGVlZC4KLQotICAgIEkgaGF2ZSB1cGRhdGVkIHRoaXMgcGF0Y2ggYmFzZWQgb24gdGhlIGNvbW1lbnRzIFsxXSBieSBXb2xmZ2FuZyBEZW5rIGFuZAotICAgIHJlbW92ZWQgdW51c2VkIHZhcmlhYmxlcy4KLSAgICBbMV1baHR0cDovL2xpc3RzLmRlbnguZGUvcGlwZXJtYWlsL3UtYm9vdC8yMDEwLU1heS8wNzE3MjguaHRtbF0KLQotICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlYWRzIHBlciBieXRlIHRyYW5zZmVycmVkIG9uIHRoZSBCVUYgcmVnaXN0ZXIgZnJvbSAyIHRvIDEgYW5kCi0gICAgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIFRYIGJ1ZmZlciBpbiB0aGUgU1BJIG1vZHVsZS4gT24gTG9naWNQRCBPTUFQLUwxMzggRVZNLAotICAgIFNQSSByZWFkIHRocm91Z2hwdXQgZ29lcyB1cCBmcm9tIH4wLjhNYnl0ZS9zIHRvIH4xLjNNYnl0ZS9zLiBUZXN0ZWQgd2l0aCBhIDJNYnl0ZSBpbWFnZSBmaWxlLgotICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIGluIHRoZSBzcGlfeGZlcigpIGZ1bmN0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGVsaW8gQnJpZ25vbGkgPGRicmlnbm9saUBhdWRpb3NjaWVuY2UuY29tPgotICAgIFRlc3RlZC1ieTogQmVuIEdhcmRpbmVyIDxiZW5nYXJkaW5lckBuYW5vbWV0cmljcy5jYT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAxYTUwMzhjYTY4MzFlMzE4NzVjZjY3YzQ2MjI2ZjA0NzQzNTc0MDMyCi1BdXRob3I6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLURhdGU6CU1vbiBKdW4gNyAxNToyMDo1MyAyMDEwIC0wNDAwCi0KLSAgICBBTTM1eDogQWRkIHN1cHBvcnQgZm9yIEVNSUY0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVNSUY0IGludGVyZmFjZQotICAgIGF2YWlsYWJsZSBpbiB0aGUgQU0zNXggcHJvY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgZWQwMWU0NWNmYTIwZDYwZWU4M2E0ZWUwMTI4ZDg0MzczMDA1NTI5NAotQXV0aG9yOiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTU6MjA6NDMgMjAxMCAtMDQwMAotCi0gICAgQU0zNXg6IEFkZCBzdXBwb3J0IGZvciBBTTM1MTdFVk0KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBzdXBwb3J0IGZvciB0aGUgQU0zNTE3RVZNLgotICAgIEl0IGluY2x1ZGVzOgotCS0gQm9hcmQgZmlsZXMgKC5jIGFuZCAuaCkKLQktIERlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlCi0JLSBVcGRhdGVzIGZvciBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCBjYWUzNzdiNTlhMTc5ZTM0ZDI3Y2Q2Yjc5ZGVlMjRkOTY3ZGU4MzljCi1BdXRob3I6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLURhdGU6CU1vbiBKdW4gNyAxNToyMDozNCAyMDEwIC0wNDAwCi0KLSAgICBvbWFwMzogQ29uc29saWRhdGUgU0RSQyByZWxhdGVkIG9wZXJhdGlvbnMKLQotICAgIENvbnNvbGlkYXRlZCBTRFJDIHJlbGF0ZWQgZnVuY3Rpb25zIGludG8gb25lIGZpbGUgLSBzZHJjLmMKLQotICAgIEFuZCBhbHNvIHJlcGxhY2VkIHNkcmNfaW5pdCB3aXRoIGdlbmVyaWMgbWVtb3J5IGluaXQKLSAgICBmdW5jdGlvbiAobWVtX2luaXQpLCB0aGlzIGdlbmVyYWxpemF0aW9uIG9mIG9tYXAgbWVtb3J5IHNldHVwCi0gICAgaXMgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgdGhlIG5ldyBlbWlmNCBpbnRlcmZhY2UgaW50cm9kdWNlZCBpbiBBTTM1MTcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgZDExMjEyZTM3NzJjOGZlNDNhMWY0ODdiYmY1OGYzMzQxMTE4YTI0MQotQXV0aG9yOiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTU6MjA6MjkgMjAxMCAtMDQwMAotCi0gICAgb21hcDM6IENhbGN1bGF0ZSBDUzEgc2l6ZSBvbmx5IHdoZW4gU0RSQyBpcwotCi0gICAgaW5pdGlhbGl6ZWQgZm9yIENTMQotCi0gICAgRnJvbTogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotCi0gICAgVGhlIHBhdGNoIG1ha2VzIHN1cmUgdGhhdCBzaXplIGZvciBTRFJDIENTMSBnZXRzIGNhbGN1bGF0ZWQKLSAgICBvbmx5IHdoZW4gdGhlIENTMSBTRFJDIGlzIGluaXRpYWxpemVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDY3NWUwZWFmMGYwNDI5YWFjM2M2ZmI0MTYzNGZiY2VhMjM1MGZlNDkKLUF1dGhvcjogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotRGF0ZToJTW9uIEp1biA3IDE1OjIwOjE5IDIwMTAgLTA0MDAKLQotICAgIE9NQVAzRVZNOiBBZGRlZCBOQU5EIHN1cHBvcnQKLQotICAgIFRoZSBFVk1TIGhhdmUgYmVlbiBzaGlwcGluZyB3aXRoIE5BTkQgKGluc3RlYWQgb2YgT25lTkFORCkgYXMgZGVmYXVsdC4KLSAgICBTbywgdGhpcyBwYXRjaCBzZXRzIE5BTkQgYXMgZGVmYXVsdC4KLQotICAgIFRvIGNob29zZSBPbmVOQU5ELCBkZWZpbmUgQ01EX09ORU5BTkQgaW5zdGVhZCBvZiBDTURfTkFORCBpbiB0aGUKLSAgICBjb25maWcgZmlsZSBvbWFwM19ldm0uaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA1Y2M0OGY3ZTU1ZGYwZDc0YTEyZDMzOGRlMjExN2YwNTk1MWZjNTM2Ci1BdXRob3I6IEN5cmlsIENoZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTQ6MTM6MzYgMjAxMCAtMDQwMAotCi0gICAgVEk6IFRORVRWMTA3WCBFVk0gaW5pdGlhbCBzdXBwb3J0Ci0KLSAgICBUTkVUVjEwN1ggaXMgYSBUZXhhcyBJbnN0cnVtZW50cyBTb0MgYmFzZWQgb24gYW4gQVJNMTE3NiBjb3JlLCBhbmQgd2l0aCBhCi0gICAgYnVuY2ggb24gb24tY2hpcCBpbnRlZ3JhdGVkIHBlcmlwaGVyYWxzLiAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZQotICAgIFRORVRWMTA3WCBFVk0gYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBDeXJpbCBDaGVtcGFyYXRoeSA8Y3lyaWxAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDM3MTIzNjdjNDgzMGU4N2I0ZTdhZjViNDgwZTgyZDMxNmJhYjEyNTEKLUF1dGhvcjogQ3lyaWwgQ2hlbXBhcmF0aHkgPGN5cmlsQHRpLmNvbT4KLURhdGU6CU1vbiBKdW4gNyAxNDoxMzozMiAyMDEwIC0wNDAwCi0KLSAgICBBUk0xMTc2OiBUSTogVE5FVFYxMDdYIHNvYyBpbml0aWFsIHN1cHBvcnQKLQotICAgIFRORVRWMTA3WCBpcyBhIFRleGFzIEluc3RydW1lbnRzIFNvQyBiYXNlZCBvbiBhbiBBUk0xMTc2IGNvcmUsIGFuZCB3aXRoIGEKLSAgICBidW5jaCBvbiBvbi1jaGlwIGludGVncmF0ZWQgcGVyaXBoZXJhbHMuICBUaGlzIGlzIGFuIGluaXRpYWwgY29tbWl0IHdpdGgKLSAgICBiYXNpYyBmdW5jdGlvbmFsaXR5LCBtb3JlIGNvbW1pdHMgd2l0aCBkcml2ZXJzLCBldGMuIHRvIGZvbGxvdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEN5cmlsIENoZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgNjc4ZTAwOGMzYTNhMjdmZTJkMzBjZjQyMzY3OWQyZDExZDBmYTVjMgotQXV0aG9yOiBDeXJpbCBDaGVtcGFyYXRoeSA8Y3lyaWxAdGkuY29tPgotRGF0ZToJTW9uIEp1biA3IDE0OjEzOjI3IDIwMTAgLTA0MDAKLQotICAgIEFSTTExNzY6IENvZXhpc3Qgd2l0aCBvdGhlciBBUk0xMTc2IHBsYXRmb3JtcwotCi0gICAgVGhlIGN1cnJlbnQgQVJNMTE3NiBDUFUgc3BlY2lmaWMgY29kZSBpcyB0b28gc3BlY2lmaWMgdG8gdGhlIFNNREs2NDAwCi0gICAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZXMgZm9yIHRoZQotICAgIGFkZGl0aW9uIG9mIG90aGVyIFNvQ3MgYmFzZWQgb24gQVJNMTE3Ni4KLQotICAgIEV4aXN0aW5nIGJvYXJkJ3MgKFNNREs2NDAwKSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGtlZXAgYmVoYXZpb3IKLSAgICB1bmNoYW5nZWQgZGVzcGl0ZSB0aGVzZSBjaGFuZ2VzLgotCi0gICAgMS4gUGVyaXBoZXJhbCBwb3J0IHJlbWFwIGNvbmZpZ3VyYWJpbGl0eQotICAgIFRoZSBlYXJsaWVyIGNvZGUgaGFkIGhhcmRjb2RlZCByZW1hcCB2YWx1ZXMgc3BlY2lmaWMgdG8gczNjNjR4eCBpbiBzdGFydC5TLgotICAgIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBwZXJpcGhlcmFsIHBvcnQgcmVtYXAgYWRkcmVzc2VzIGFuZCBzaXplcyBjb25maWd1cmFibGUuCi0KLSAgICAyLiBVLUJvb3QgY29kZSByZWxvY2F0aW9uIHN1cHBvcnQKLSAgICBNb3N0IGFyY2hpdGVjdHVyZXMgYWxsb3cgdS1ib290IGNvZGUgdG8gcnVuIGluaXRpYWxseSBhdCBhIGRpZmZlcmVudAotICAgIGFkZHJlc3MgKHBvc3NpYmx5IGluIE5PUikgYW5kIHRoZW4gZ2V0IHJlbG9jYXRlZCB0byBpdHMgZmluYWwgcmVzdGluZyBwbGFjZQotICAgIGluIFJBTS4gIEFkZGVkIHN1cHBvcnQgZm9yIHRoaXMgY2FwYWJpbGl0eSBpbiBBUk0xMTc2IGFyY2hpdGVjdHVyZS4KLQotICAgIDMuIERpc2FibGUgVENNIGlmIG5lY2Vzc2FyeQotICAgIElmIGEgUk9NIGJhc2VkIGJvb3Rsb2FkZXIgaGFwcGVuZWQgdG8gaGF2ZSBpbml0aWFsaXplZCBUQ00sIHdlIGRpc2FibGUgaXQgaGVyZQotICAgIHRvIGtlZXAgdGhpbmdzIHNhbmUuCi0KLSAgICA0LiBSZW1vdmUgdW5uZWNlc3NhcnkgU29DIHNwZWNpZmljIGluY2x1ZGVzCi0gICAgQVJNMTE3NiBjb2RlIGRvZXMgbm90IHJlYWxseSBuZWVkIHRoaXMgU29DIHNwZWNpZmljIGluY2x1ZGUuICBUaGUgcHJlc2VuY2UKLSAgICBvZiB0aGlzIGluY2x1ZGUgcHJldmVudHMgYnVpbGRzIG9uIG90aGVyIEFSTTExNzYgYXJjaHMuCi0KLSAgICA1LiBNb2RpZmllZCB2aXJ0LXRvLXBoeXMgY29udmVyc2lvbiBkdXJpbmcgTU1VIGRpc2FibGUKLSAgICBUaGUgb3JpZ2luYWwgTU1VIGRpc2FibGUgY29kZSBtYXNrcyBvdXQgdG9vIG1hbnkgYml0cyBmcm9tIHRoZSBsb2FkIGFkZHJlc3MKLSAgICB3aGVuIGl0IHRyaWVzIHRvIGZpZ3VyZSBvdXQgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGp1bXAgdGFyZ2V0IGxhYmVsLgotICAgIENvbnNlcXVlbnRseSwgaXQgZW5kcyB1cCBicmFuY2hpbmcgdG8gdGhlIHdyb25nIGFkZHJlc3MgYWZ0ZXIgZGlzYWJsaW5nIHRoZQotICAgIE1NVS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEN5cmlsIENoZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgMjM5MTE3NDA0ODZjNTk4NTFkZjU3NTIxYzQ5YmZkODFjZTE4NjVlYwotQXV0aG9yOiBEZWxpbyBCcmlnbm9saSA8ZGJyaWdub2xpQGF1ZGlvc2NpZW5jZS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTc6MTY6MTMgMjAxMCAtMDQwMAotCi0gICAgRGFWaW5jaTogSW1wcm92ZSBEYVZpbmNpIFNQSSBzcGVlZC4KLQotICAgIEkgaGF2ZSB1cGRhdGVkIHRoaXMgcGF0Y2ggYmFzZWQgb24gdGhlIGNvbW1lbnRzIFsxXSBieSBXb2xmZ2FuZyBEZW5rIGFuZAotICAgIHJlbW92ZWQgdW51c2VkIHZhcmlhYmxlcy4KLSAgICBbMV1baHR0cDovL2xpc3RzLmRlbnguZGUvcGlwZXJtYWlsL3UtYm9vdC8yMDEwLU1heS8wNzE3MjguaHRtbF0KLQotICAgIFJlZHVjZSB0aGUgbnVtYmVyIG9mIHJlYWRzIHBlciBieXRlIHRyYW5zZmVycmVkIG9uIHRoZSBCVUYgcmVnaXN0ZXIgZnJvbSAyIHRvIDEgYW5kCi0gICAgdGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIFRYIGJ1ZmZlciBpbiB0aGUgU1BJIG1vZHVsZS4gT24gTG9naWNQRCBPTUFQLUwxMzggRVZNLAotICAgIFNQSSByZWFkIHRocm91Z2hwdXQgZ29lcyB1cCBmcm9tIH4wLjhNYnl0ZS9zIHRvIH4xLjNNYnl0ZS9zLiBUZXN0ZWQgd2l0aCBhIDJNYnl0ZSBpbWFnZSBmaWxlLgotICAgIFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzIGluIHRoZSBzcGlfeGZlcigpIGZ1bmN0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGVsaW8gQnJpZ25vbGkgPGRicmlnbm9saUBhdWRpb3NjaWVuY2UuY29tPgotICAgIFRlc3RlZC1ieTogQmVuIEdhcmRpbmVyIDxiZW5nYXJkaW5lckBuYW5vbWV0cmljcy5jYT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAwNWVlNDE1ZTMxNmUzYjE2MTdhYmEwNmE3NDc2NDlmNGQ0MDUzZDQxCi1BdXRob3I6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLURhdGU6CU1vbiBKdW4gNyAxNToyMDo1MyAyMDEwIC0wNDAwCi0KLSAgICBBTTM1eDogQWRkIHN1cHBvcnQgZm9yIEVNSUY0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEVNSUY0IGludGVyZmFjZQotICAgIGF2YWlsYWJsZSBpbiB0aGUgQU0zNXggcHJvY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgM2Q5ZjBmZmRkYWYxZWNlOTVhODI2Nzg1Yjk3MTg2MGViZGFkZjQyNAotQXV0aG9yOiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTU6MjA6NDMgMjAxMCAtMDQwMAotCi0gICAgQU0zNXg6IEFkZCBzdXBwb3J0IGZvciBBTTM1MTdFVk0KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBzdXBwb3J0IGZvciB0aGUgQU0zNTE3RVZNLgotICAgIEl0IGluY2x1ZGVzOgotCS0gQm9hcmQgZmlsZXMgKC5jIGFuZCAuaCkKLQktIERlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlCi0JLSBVcGRhdGVzIGZvciBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA4YWE1YzdjZGM0ZTUzNGRmOTEyOTQ4NWJhMzE3YTI4NzFjNGY5ODgwCi1BdXRob3I6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLURhdGU6CU1vbiBKdW4gNyAxNToyMDozNCAyMDEwIC0wNDAwCi0KLSAgICBvbWFwMzogQ29uc29saWRhdGUgU0RSQyByZWxhdGVkIG9wZXJhdGlvbnMKLQotICAgIENvbnNvbGlkYXRlZCBTRFJDIHJlbGF0ZWQgZnVuY3Rpb25zIGludG8gb25lIGZpbGUgLSBzZHJjLmMKLQotICAgIEFuZCBhbHNvIHJlcGxhY2VkIHNkcmNfaW5pdCB3aXRoIGdlbmVyaWMgbWVtb3J5IGluaXQKLSAgICBmdW5jdGlvbiAobWVtX2luaXQpLCB0aGlzIGdlbmVyYWxpemF0aW9uIG9mIG9tYXAgbWVtb3J5IHNldHVwCi0gICAgaXMgbmVjZXNzYXJ5IHRvIHN1cHBvcnQgdGhlIG5ldyBlbWlmNCBpbnRlcmZhY2UgaW50cm9kdWNlZCBpbiBBTTM1MTcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgMTY4MDdlZTQxMWQ4Mzc2MjgwNGQwNzVhM2ZlMTFmMGEyYjVlYWYzOQotQXV0aG9yOiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTU6MjA6MjkgMjAxMCAtMDQwMAotCi0gICAgb21hcDM6IENhbGN1bGF0ZSBDUzEgc2l6ZSBvbmx5IHdoZW4gU0RSQyBpcwotCi0gICAgaW5pdGlhbGl6ZWQgZm9yIENTMQotCi0gICAgRnJvbTogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotCi0gICAgVGhlIHBhdGNoIG1ha2VzIHN1cmUgdGhhdCBzaXplIGZvciBTRFJDIENTMSBnZXRzIGNhbGN1bGF0ZWQKLSAgICBvbmx5IHdoZW4gdGhlIENTMSBTRFJDIGlzIGluaXRpYWxpemVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDdjYTQ3NjZiZDdmNzRlNWY3MzcxZmIzMzFiNTczZWMzODQyMzBjMWQKLUF1dGhvcjogVmFpYmhhdiBIaXJlbWF0aCA8aHZhaWJoYXZAdGkuY29tPgotRGF0ZToJTW9uIEp1biA3IDE1OjIwOjE5IDIwMTAgLTA0MDAKLQotICAgIE9NQVAzRVZNOiBBZGRlZCBOQU5EIHN1cHBvcnQKLQotICAgIFRoZSBFVk1TIGhhdmUgYmVlbiBzaGlwcGluZyB3aXRoIE5BTkQgKGluc3RlYWQgb2YgT25lTkFORCkgYXMgZGVmYXVsdC4KLSAgICBTbywgdGhpcyBwYXRjaCBzZXRzIE5BTkQgYXMgZGVmYXVsdC4KLQotICAgIFRvIGNob29zZSBPbmVOQU5ELCBkZWZpbmUgQ01EX09ORU5BTkQgaW5zdGVhZCBvZiBDTURfTkFORCBpbiB0aGUKLSAgICBjb25maWcgZmlsZSBvbWFwM19ldm0uaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAwNGNiYzE5ZmVkYjU1MjY1ZDA4Y2RkZWEyOTRjM2I2ZDlmOGIyZDE4Ci1BdXRob3I6IEN5cmlsIENoZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+Ci1EYXRlOglNb24gSnVuIDcgMTQ6MTM6MzYgMjAxMCAtMDQwMAotCi0gICAgVEk6IFRORVRWMTA3WCBFVk0gaW5pdGlhbCBzdXBwb3J0Ci0KLSAgICBUTkVUVjEwN1ggaXMgYSBUZXhhcyBJbnN0cnVtZW50cyBTb0MgYmFzZWQgb24gYW4gQVJNMTE3NiBjb3JlLCBhbmQgd2l0aCBhCi0gICAgYnVuY2ggb24gb24tY2hpcCBpbnRlZ3JhdGVkIHBlcmlwaGVyYWxzLiAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZQotICAgIFRORVRWMTA3WCBFVk0gYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBDeXJpbCBDaGVtcGFyYXRoeSA8Y3lyaWxAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGRhMWVjNDJhYWZjYzgyMWNlNmI1ZDMxNmEyZDQxMDUyOTI5NjBkNmIKLUF1dGhvcjogQ3lyaWwgQ2hlbXBhcmF0aHkgPGN5cmlsQHRpLmNvbT4KLURhdGU6CU1vbiBKdW4gNyAxNDoxMzozMiAyMDEwIC0wNDAwCi0KLSAgICBBUk0xMTc2OiBUSTogVE5FVFYxMDdYIHNvYyBpbml0aWFsIHN1cHBvcnQKLQotICAgIFRORVRWMTA3WCBpcyBhIFRleGFzIEluc3RydW1lbnRzIFNvQyBiYXNlZCBvbiBhbiBBUk0xMTc2IGNvcmUsIGFuZCB3aXRoIGEKLSAgICBidW5jaCBvbiBvbi1jaGlwIGludGVncmF0ZWQgcGVyaXBoZXJhbHMuICBUaGlzIGlzIGFuIGluaXRpYWwgY29tbWl0IHdpdGgKLSAgICBiYXNpYyBmdW5jdGlvbmFsaXR5LCBtb3JlIGNvbW1pdHMgd2l0aCBkcml2ZXJzLCBldGMuIHRvIGZvbGxvdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEN5cmlsIENoZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgYjg3OTk2ZDI0YTQxY2ZjMTVmZWExMjVlNWM4MDUxNjNhZjRhY2JhMQotQXV0aG9yOiBDeXJpbCBDaGVtcGFyYXRoeSA8Y3lyaWxAdGkuY29tPgotRGF0ZToJTW9uIEp1biA3IDE0OjEzOjI3IDIwMTAgLTA0MDAKLQotICAgIEFSTTExNzY6IENvZXhpc3Qgd2l0aCBvdGhlciBBUk0xMTc2IHBsYXRmb3JtcwotCi0gICAgVGhlIGN1cnJlbnQgQVJNMTE3NiBDUFUgc3BlY2lmaWMgY29kZSBpcyB0b28gc3BlY2lmaWMgdG8gdGhlIFNNREs2NDAwCi0gICAgYXJjaGl0ZWN0dXJlLiAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbmVjZXNzYXJ5IHByZXJlcXVpc2l0ZXMgZm9yIHRoZQotICAgIGFkZGl0aW9uIG9mIG90aGVyIFNvQ3MgYmFzZWQgb24gQVJNMTE3Ni4KLQotICAgIEV4aXN0aW5nIGJvYXJkJ3MgKFNNREs2NDAwKSBjb25maWd1cmF0aW9uIGhhcyBiZWVuIG1vZGlmaWVkIHRvIGtlZXAgYmVoYXZpb3IKLSAgICB1bmNoYW5nZWQgZGVzcGl0ZSB0aGVzZSBjaGFuZ2VzLgotCi0gICAgMS4gUGVyaXBoZXJhbCBwb3J0IHJlbWFwIGNvbmZpZ3VyYWJpbGl0eQotICAgIFRoZSBlYXJsaWVyIGNvZGUgaGFkIGhhcmRjb2RlZCByZW1hcCB2YWx1ZXMgc3BlY2lmaWMgdG8gczNjNjR4eCBpbiBzdGFydC5TLgotICAgIFRoaXMgY2hhbmdlIG1ha2VzIHRoZSBwZXJpcGhlcmFsIHBvcnQgcmVtYXAgYWRkcmVzc2VzIGFuZCBzaXplcyBjb25maWd1cmFibGUuCi0KLSAgICAyLiBVLUJvb3QgY29kZSByZWxvY2F0aW9uIHN1cHBvcnQKLSAgICBNb3N0IGFyY2hpdGVjdHVyZXMgYWxsb3cgdS1ib290IGNvZGUgdG8gcnVuIGluaXRpYWxseSBhdCBhIGRpZmZlcmVudAotICAgIGFkZHJlc3MgKHBvc3NpYmx5IGluIE5PUikgYW5kIHRoZW4gZ2V0IHJlbG9jYXRlZCB0byBpdHMgZmluYWwgcmVzdGluZyBwbGFjZQotICAgIGluIFJBTS4gIEFkZGVkIHN1cHBvcnQgZm9yIHRoaXMgY2FwYWJpbGl0eSBpbiBBUk0xMTc2IGFyY2hpdGVjdHVyZS4KLQotICAgIDMuIERpc2FibGUgVENNIGlmIG5lY2Vzc2FyeQotICAgIElmIGEgUk9NIGJhc2VkIGJvb3Rsb2FkZXIgaGFwcGVuZWQgdG8gaGF2ZSBpbml0aWFsaXplZCBUQ00sIHdlIGRpc2FibGUgaXQgaGVyZQotICAgIHRvIGtlZXAgdGhpbmdzIHNhbmUuCi0KLSAgICA0LiBSZW1vdmUgdW5uZWNlc3NhcnkgU29DIHNwZWNpZmljIGluY2x1ZGVzCi0gICAgQVJNMTE3NiBjb2RlIGRvZXMgbm90IHJlYWxseSBuZWVkIHRoaXMgU29DIHNwZWNpZmljIGluY2x1ZGUuICBUaGUgcHJlc2VuY2UKLSAgICBvZiB0aGlzIGluY2x1ZGUgcHJldmVudHMgYnVpbGRzIG9uIG90aGVyIEFSTTExNzYgYXJjaHMuCi0KLSAgICA1LiBNb2RpZmllZCB2aXJ0LXRvLXBoeXMgY29udmVyc2lvbiBkdXJpbmcgTU1VIGRpc2FibGUKLSAgICBUaGUgb3JpZ2luYWwgTU1VIGRpc2FibGUgY29kZSBtYXNrcyBvdXQgdG9vIG1hbnkgYml0cyBmcm9tIHRoZSBsb2FkIGFkZHJlc3MKLSAgICB3aGVuIGl0IHRyaWVzIHRvIGZpZ3VyZSBvdXQgdGhlIHBoeXNpY2FsIGFkZHJlc3Mgb2YgdGhlIGp1bXAgdGFyZ2V0IGxhYmVsLgotICAgIENvbnNlcXVlbnRseSwgaXQgZW5kcyB1cCBicmFuY2hpbmcgdG8gdGhlIHdyb25nIGFkZHJlc3MgYWZ0ZXIgZGlzYWJsaW5nIHRoZQotICAgIE1NVS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEN5cmlsIENoZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgYjVkMjg5ZmMyOTg0MjA5NWQ1Y2QwZjgyY2NlYWIxYjBiMmU4MjRiYQotQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotRGF0ZToJVHVlIEFwciAyMCAyMjo0OTowNCAyMDEwICswMzAwCi0KLSAgICBhZGQgbmV3IGJvYXJkIHBtOWc0NQotCi0gICAgQWRkIHRoZSBuZXcgYm9hcmQgUE05RzQ1IGZyb20gUm9uZXRpeCBHbWJILgotICAgICogQVQ5MVNBTTlHNDUgTUNVIGF0IDQwME1oei4KLSAgICAqIDEyOE1CIEREUjIgU0RSQU0KLSAgICAqIDI1Nk1CIE5BTkQKLSAgICAqIDEwLzEwMCBNQml0cyBFdGhlcm5ldCBEUDgzODQ4Ci0gICAgKiBTZXJpYWwgbnVtYmVyIGNoaXAgRFMyNDAxCi0KLSAgICBUaGUgYm9hcmQgaXMgbWFkZSBhcyBTT0RJTU0yMDAgbW9kdWxlLgotICAgIEZvciBtb3JlIGluZm8gd3d3LnJvbmF0aXguYXQgb3IgaW5mb0Byb25ldGl4LmF0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KLQotY29tbWl0IGY5ODYzMjVkZDU2OWZhZWFlYzQxODZmNjc4ZDExMzUwNWM1YzQ4MjgKLUF1dGhvcjogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotRGF0ZToJVHVlIEp1biAxIDE3OjAwOjQ5IDIwMTAgLTA3MDAKLQotICAgIFVwZGF0ZSBTSUNSTF9VU0JEUiB0byByZWZsZWN0IDQgZGlmZmVyZW50IHNldHRpbmdzCi0KLSAgICBUaGlzIHBhdGNoIGNoYW5nZWQgdGhlIFNJQ1JMX1VTQkRSIGRlZmluZSB0byByZWZsZWN0IHRoZSA0IGRpZmZlcmVudCBiaXQKLSAgICBzZXR0aW5ncyBmb3IgdGhpcyB0d28tYml0IGZpZWxkLiAgVGhlIGZvdXIgZGlmZmVyZW50IG9wdGlvbnMgYXJlICcwMCcsICcwMScsCi0gICAgJzEwJywgYW5kICcxMScuICBUaGlzIHBhdGNoIGFsc28gY29ycmVjdHMgdGhlIGNvbmZpZyBmaWxlIGZvciBTSU1QQzgzMTMgYW5kCi0gICAgTVBDODMxM0VSREIgZm9yIHRoZSBhcHByb3ByaWF0ZSBmaWVsZHMuICBUaGlzIGNoYW5nZSBvbmx5IGFmZmVjdHMgdGhlIE1QQzgzMTMKLSAgICBjcHUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQwOWEwN2M5ZDcyYjBkODMzYzFjY2UyNjRiZGI0YmIyNjI4ZmUyOGUKLUF1dGhvcjogR2VvcmdlIEcuIERhdmlzIDxnZGF2aXNAbXZpc3RhLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTEgMTA6MTU6MzYgMjAxMCAtMDQwMAotCi0gICAgQVJNMTEzNjogRml4IGNhY2hlX2ZsdXNoKCkgZXJyb3IgYW5kIGNvcnJlY3QgY3B1X2luaXRfY3JpdCgpIGNvbW1lbnRzCi0KLSAgICBUaGUgQVJNMTEzNiBjYWNoZV9mbHVzaCgpIGZ1bmN0aW9uIHVzZXMgdGhlICJtY3IgcDE1LCAwLCBybiwgYzcsIGM3LCAwIgotICAgIGluc3RydWN0aW9uIHdoaWNoIG1lYW5zICJJbnZhbGlkYXRlIEJvdGggQ2FjaGVzIiB3aGVuIGluIGZhY3QgdGhlIGludGVudAotICAgIGlzIHRvIGNsZWFuIGFuZCBpbnZhbGlkYXRlIGFsbCBjYWNoZXMuICBTbyBhZGQgYW4gIm1jciBwMTUsIDAsICUwLCBjNywKLSAgICBjMTAsIDAiIGluc3RydWN0aW9uIHRvICJDbGVhbiBFbnRpcmUgRGF0YSBDYWNoZSIgcHJpb3IgdG8gdGhlICJJbnZhbGlkYXRlCi0gICAgQm90aCBDYWNoZXMiIGluc3RydWN0aW9uIHRvIGluc3VyZSB0aGF0IG1lbW9yeSBpcyBjb25zaXN0ZW50IHdpdGggYW55Ci0gICAgZGlydHkgY2FjaGUgbGluZXMuCi0KLSAgICBBbHNvIGZpeCBhIGNvdXBsZSBvZiAiZmx1c2ggdioiIGNvbW1lbnRzIGluIEFSTTExMzYgY3B1X2luaXRfY3JpdCgpIHNvCi0gICAgdGhhdCB0aGV5IGNvcnJlY3RseSBkZXNjcmliZSB0aGUgYWN0dWFsIEFSTTExMzYgQ1AxNSBDNyBDYWNoZSBPcGVyYXRpb25zCi0gICAgdXNlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlb3JnZSBHLiBEYXZpcyA8Z2RhdmlzQG12aXN0YS5jb20+Ci0KLWNvbW1pdCAzMDU3YzZiZTVlZmRhNzgxYTcyY2EwNDQzMmUwYTRlZDZlNjcwMDMwCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgQXByIDIzIDEyOjIwOjExIDIwMTAgLTA1MDAKLQotICAgIGZkdF9zdXBwb3J0OiBhZGQgZW50cnkgZm9yIHNlYzMuMSBhbmQgZml4IHNlYzMuMwotCi0gICAgQWRkIHNlYzMuMSBoL3cgZ2VvbWV0cnkgZm9yIGZkdCBub2RlIGZpeHVwcy4KLQotICAgIEFsc28sIHRlY2huaWNhbGx5LCB3aGlsc3QgU0VDIHYzLjMgaC93IGhvbm91cnMgdGhlIHRsc19zc2xfc3RyZWFtIGRlc2NyaXB0b3IKLSAgICB0eXBlLCBpdCBsYWNrcyB0aGUgQVJDNCBhbGdvcml0aG0gZXhlY3V0aW9uIHVuaXQgcmVxdWlyZWQgdG8gYmUgYWJsZQotICAgIHRvIGV4ZWN1dGUgYW55dGhpbmcgbWVhbmluZ2Z1bCB3aXRoIGl0LiAgQ2hhbmdlIHRoZSBub2RlIHRvIGFncmVlIHdpdGgKLSAgICB0aGUgZG9jdW1lbnRhdGlvbiB0aGF0IGRlY2xhcmVzIHRoYXQgdGhlIHNlYzMuMyByZWFsbHkgZG9lc24ndCBoYXZlIHN1Y2gKLSAgICBhIGRlc2NyaXB0b3IgdHlwZS4KLQotICAgIFJlcG9ydGVkLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDVmNGQzNjgyNWEwMjhlMzAwYjdkNTZhNTY2ZDJjZjg0NDE4YjdhNjgKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjAgMTE6MTY6MTYgMjAxMCAtMDUwMAotCi0gICAgZnNsOiByZW5hbWUgJ2RtYScgdG8gJ2JyZGNmZzEnIGluIHRoZSBuZ1BJWElTIHN0cnVjdHVyZQotCi0gICAgVGhlIG5nUElYSVMgaXMgYSBib2FyZC1zcGVjaWZpYyBGUEdBLCBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhlIHJlZ2lzdGVycwotICAgIGlzIG1vc3RseSBjb25zaXN0ZW50LiAgT24gYm9hcmRzIHdoZXJlIGl0IG1hdHRlciwgcmVnaXN0ZXIgOSBpcyBjYWxsZWQKLSAgICAnYnJkY2ZnMScgaW5zdGVhZCBvZiAnZG1hJywgc28gcmVuYW1lIHRoZSB2YXJpYWJsZSBpbiB0aGUgbmdwaXhpc190Ci0gICAgZGVmaW5pdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDZlMzdhMDQ0MDc2ODk2YmE4OGIwZDYzMTZmYWRkNDkyMDMyYzUxOTMKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjAgMTI6NDU6MzkgMjAxMCAtMDUwMAotCi0gICAgZnNsLzg1eHg6IGFkZCBjbGtkdmRyIGFuZCBwbXV4Y3IyIHRvIGdsb2JhbCB1dGlsaXRpZXMgc3RydWN0dXJlIGRlZmluaXRpb24KLQotICAgIEFkZCB0aGUgJ2Nsa2R2ZHInIGFuZCAncG11eGNyMicgcmVnaXN0ZXJzIHRvIHRoZSA4NXh4IGRlZmluaXRpb24gb2YKLSAgICBzdHJ1Y3QgY2Nzcl9ndXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzOWMyMDk1NDZhYjViMTFjYTY0MTBjNWNjNTdkY2JmNDU3ZTUwODAwCi1BdXRob3I6IFRvbSA8VG9tQGJ1bWJsZWNvdy5jb20+Ci1EYXRlOglGcmkgTWF5IDI4IDEzOjIzOjE2IDIwMTAgLTA1MDAKLQotICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwotCi0gICAgRmV0Y2hlZCBmcm9tIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvbWFjaGluZXMvZG93bmxvYWQucGhwCi0gICAgQW5kIGJ1aWx0IHdpdGgKLQotICAgIHJlcG8gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQotICAgIGNvbW1pdCAzZGVmYjI0NzYxNjY0NDU5ODJhOTBjMTJkMzNmODk0N2U3NTQ3NmM0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gPFRvbUBidW1ibGVjb3cuY29tPgotCi1jb21taXQgNTUxYmQ5NDdiZDZmOTgyZmEzOGRkZTg0MDU3NmViYTUyMzQ2MTYwYwotQXV0aG9yOiBUb20gPFRvbUBidW1ibGVjb3cuY29tPgotRGF0ZToJU3VuIE1heSA5IDE2OjU4OjExIDIwMTAgLTA1MDAKLQotICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwotCi0gICAgRmV0Y2hlZCBmcm9tIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvbWFjaGluZXMvZG93bmxvYWQucGhwCi0gICAgQW5kIGJ1aWx0IHdpdGgKLQotICAgIHJlcG8gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQotICAgIGNvbW1pdCAyNTdkYWI4MTQxM2IzMWI4NjQ4YmVjZmUxMTU4NmIzYTQxZTVjMjlhCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gPFRvbUBidW1ibGVjb3cuY29tPgotCi1jb21taXQgMTExN2NiZjJhZGFjNTkwNTBhZjE3NTFhZjZjNmE1MjRhZmE1YzNlZgotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglGcmkgTWF5IDI4IDEwOjU2OjUwIDIwMTAgKzA4MDAKLQotICAgIG5pb3M6IHJlbW92ZSBuaW9zLTMyIGFyY2gKLQotICAgIFRoZSBuaW9zLTMyIGFyY2ggaXMgb2Jzb2xldGUgYW5kIGJyb2tlbi4gU28gaXQgaXMgcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLQotY29tbWl0IDY4MDMzMzZjOWYyMWJhNDI4ZjVjMWIxY2Y4MjViYmJhYzBhNzYyZTUKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJRnJpIE1heSAyMSAxMTowODowMiAyMDEwICswODAwCi0KLSAgICBuaW9zMjogYWxsb3cgU1RBTkRBTE9ORV9MT0FEX0FERFIgb3ZlcnJpZGluZwotCi0gICAgVGhpcyBwYXRjaCBhbGxvd3MgdXNlcnMgdG8gb3ZlcnJpZGUgZGVmYXVsdCBTVEFOREFMT05FX0xPQURfQUREUi4KLSAgICBUaGUgZ2NjbGliZGlyIHBhdGggd2FzIGR1cGxpY2F0ZWQgaW4gdGhlIHN0YW5kYWxvbmUgTWFrZWZpbGUgYW5kCi0gICAgY2FuIGJlIHJlbW92ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA4ZDUyZWE2ZGI0ODRjNjg5YTc1ZWY4YTM2YTRlNTI1NzUzYjhmMDc4Ci1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CVNhdCBNYXkgMTUgMDY6MDA6MDUgMjAxMCArMDgwMAotCi0gICAgbmlvczI6IGZpeCBkaXY2NCBpc3N1ZSBmb3IgZ2NjNAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcnVuLXRpbWUgZXJyb3Igb24gZGl2NjQgd2hlbiBidWlsdCB3aXRoCi0gICAgZ2NjNCwgd2hpY2ggd2FzIHJlcG9ydGVkIGJ5IGpod3UwNjI1IG9uIG5pb3MgZm9ydW0uIEl0IG1lcmdlcwotICAgIG1hdGggc3VwcG9ydCBmcm9tIGxpYmdjYyBvZiBnY2M0LiBUaGlzIHBhdGNoIGlzIGNvcGllZCBmcm9tCi0gICAgbmlvczItbGludXguCi0KLSAgICBJdCB3b3JrcyB3aXRoIGJvdGggZ2NjMyBhbmQgZ2NjNC4gVGhlIG9sZCBtdWx0LmMsIGRpdm1vZC5jIGFuZAotICAgIG1hdGguaCBhcmUgcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IDBkZjAxZmQzZDcxNDgxYjVjYzdhZWVhNmE3NDFiOWZjM2JlMTUxNzgKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJRnJpIE1heSAyMSAxMTowODowMyAyMDEwICswODAwCi0KLSAgICBuaW9zMjogZml4IHIxNSBpc3N1ZSBmb3IgZ2NjNAotCi0gICAgVGhlICItZmZpeGVkLXIxNSIgb3B0aW9uIGRvZXNuJ3Qgd29yayB3ZWxsIGZvciBnY2M0LiBTaW5jZSB3ZQotICAgIGRvbid0IHVzZSBncCBmb3Igc21hbGwgZGF0YSB3aXRoIG9wdGlvbiAiLUcwIiwgd2UgY2FuIHVzZSBncAotICAgIGFzIGdsb2JhbCBkYXRhIHBvaW50ZXIuIFRoaXMgYWxsb3dzIGNvbXBpbGVyIHRvIHVzZSByMTUuIEl0Ci0gICAgaXMgbmVjZXNzYXJ5IGZvciBnY2M0IHRvIHdvcmsgcHJvcGVybHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA2NjFiYTE0MDUxZGI2NzY2OTMyZmNiNTBiYTFlYzdjNjdmMjMwMDU0Ci1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CUZyaSBBcHIgMzAgMTE6MzQ6MTYgMjAxMCArMDgwMAotCi0gICAgc3BpOiBhZGQgYWx0ZXJhIHNwaSBjb250cm9sbGVyIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgZHJpdmVyIG9mIGFsdGVyYSBzcGkgY29udHJvbGxlciwgd2hpY2ggaXMKLSAgICB1c2VkIGFzIGVwY3Mvc3BpIGZsYXNoIGNvbnRyb2xsZXIuIEl0IGFsc28gd29ya3Mgd2l0aCBtbWNfc3BpCi0gICAgZHJpdmVyLgotCi0gICAgVGhpcyBkcml2ZXIgc3VwcG9ydCBtb3JlIHRoYW4gb25lIHNwaSBidXMsIHdpdGggYmFzZSBsaXN0IGRlY2xhcmVkCi0gICAgI2RlZmluZSBDT05GSUdfU1lTX0FMVEVSQV9TUElfTElTVCB7IEJBU0VfMCxCQVNFXzEsLi4uIH0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBUZXN0ZWQtYnk6IElhbiBBYmJvdHQgPGFiYm90dGlAbWV2LmNvLnVrPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgMWU4ZTliYWQyZGIzOGU5M2MzYmM5ZjRiNjIzOGIzZDhiZTk5ZTQ2OQotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglGcmkgQXByIDMwIDExOjM0OjE1IDIwMTAgKzA4MDAKLQotICAgIG5pb3MyOiBhZGQgZ3BpbyBzdXBwb3J0IHRvIG5pb3MyLWdlbmVyaWMgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBncGlvIHN1cHBvcnQgb2YgQWx0ZXJhIFBJTyBjb21wb25lbnQgdG8gdGhlCi0gICAgbmlvczItZ2VuZXJpYyBib2FyZC4gVGhvdWdoIGl0IGRyaXZlcyBvbmx5IGdwaW9fbGVkIGF0IHRoZQotICAgIG1vbWVudCwgaXQgc3VwcG9ydHMgYmlkaXJlY3Rpb25hbCBwb3J0IHRvIGNvbnRyb2wgYml0LWJhbmdpbmcKLSAgICBJMkMsIE5BTkQgZmxhc2ggYnVzeSBzdGF0dXMgb3IgYnV0dG9uIHN3aXRjaGVzLCBldGMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgVGVzdGVkLWJ5OiBJYW4gQWJib3R0IDxhYmJvdHRpQG1ldi5jby51az4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IDNlNmI4NmI1NTUyODQwYmI0MTQ3ODcxYTc1Mzg0MGViMzkyMzM3NGMKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJRnJpIEFwciAzMCAxMTozNDoxNCAyMDEwICswODAwCi0KLSAgICBtaXNjOiBhZGQgZ3BpbyBiYXNlZCBzdGF0dXMgbGVkIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgc3RhdHVzIGxlZCBkcml2ZXIgZm9sbG93ZWQgdGhlIEdQSU8gYWNjZXNzCi0gICAgY29udmVudGlvbnMgb2YgTGludXguIFRoZSBsZWQgbWFzayBpcyB1c2VkIHRvIHNwZWNpZnkgdGhlIGdwaW8gcGluLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotICAgIFRlc3RlZC1ieTogSWFuIEFiYm90dCA8YWJib3R0aUBtZXYuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCBjZWRkMzQxZDU1MWI2YjcwNWU5N2FiMTk1M2E4NzU3NWI5ZmY5ZWY5Ci1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CUZyaSBBcHIgMzAgMTE6MzQ6MTMgMjAxMCArMDgwMAotCi0gICAgbmlvczI6IGFkZCBncGlvIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBkcml2ZXIgZm9yIGEgdHJpdmlhbCBncGlvIGNvcmUsIHdoaWNoIGlzIGRlc2NyaWJlZAotICAgIGluIGh0dHA6Ly9uaW9zd2lraS5jb20vR1BJTy4gSXQgaXMgdXNlZCBmb3IgZ3BpbyBsZWQgYW5kIG5hbmQgZmxhc2gKLSAgICBpbnRlcmZhY2UgaW4gdS1ib290LgotCi0gICAgV2hlbiBDT05GSUdfU1lTX0dQSU9fQkFTRSBpcyBub3QgZGVmaW5lZCwgYm9hcmQgbWF5IHByb3ZpZGUKLSAgICBpdHMgb3duIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBUZXN0ZWQtYnk6IElhbiBBYmJvdHQgPGFiYm90dGlAbWV2LmNvLnVrPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgYWRmNTU2NzlhZjFlZDk4YzE1YTEzNmViODFkNjIwNGViZTc0MGIzMAotQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLURhdGU6CVR1ZSBNYXIgMzAgMTk6MTk6NTEgMjAxMCArMDEwMAotCi0gICAgYWRkIENPTkZJR19TWVNfRkVDX0ZVTExfTUlJIGZvciBNQ0Y1NDQ1eAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGZ1bGwgTUlJIGludGVyZmFjZSBvbiBNQ0Y1NDQ1eCAoaW4gY29udHJhc3QKLSAgICB0byBSTUlJIGFzIHVzZWQgb24gdGhlIGV2YWx1YXRpb24gYm9hcmRzKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgotCi1jb21taXQgYWU0OTA5OTc1NWFmZmM5NDIxNzFhNzcyN2MxYjEyYzUxZDE2N2FiZgotQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLURhdGU6CVR1ZSBNYXIgMzAgMTk6MTk6NTAgMjAxMCArMDEwMAotCi0gICAgYWRkIENPTkZJR19TWVNfRkVDX05PX1NIQVJFRF9QSFkgZm9yIE1DRjU0NDV4Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHBvc3NpYmlsaXR5IHRvIGhhbmRsZSBzZXBlcmF0ZSBQSFlzIHRvIE1DRjU0NDV4LgotICAgIE5hbWluZyBpcyBjaG9zZW4gdG8gcmVzZW1ibGUgdGhlIGNvbnRyYXJ5IENPTkZJR19GRUNfU0hBUkVEX1BIWSBpbiB0aGUKLSAgICBsaW51eCBrZXJuZWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyIGF0IGFzdHJvLWtvbS5kZT4KLQotY29tbWl0IGU5YjQzY2FlMWEyMGFmMTNkMWJhZWIxMzAzOGIzZjM0OTA1YzE0YjUKLUF1dGhvcjogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+Ci1EYXRlOglUdWUgTWFyIDMwIDE5OjIwOjMxIDIwMTAgKzAxMDAKLQotICAgIGFkZCBtaXNzaW5nIFBDUzMgZm9yIE1DRjU0NDV4Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvZGUgZm9yIGhhbmRsaW5nIFBDUzMgKERTUEkgY2hpcCBzZWxlY3QgMykgaW4KLSAgICBjcHVfaW5pdC5jIGFuZCBtNTQ0NXguaAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lciBhdCBhc3Ryby1rb20uZGU+Ci0KLWNvbW1pdCBkMGZlMTEyOGM0NDUxMzI3YjljYjBmYWMxYTc2ZWZkMTk0YjA3OGI1Ci1BdXRob3I6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgTWF5IDI2IDIxOjI2OjQzIDIwMTAgKzA0MDAKLQotICAgIFVTQjogZml4IGNyZWF0ZV9waXBlKCkKLQotICAgIGNyZWF0ZV9waXBlKCkgY2FuIGdpdmUgd3JvbmcgcmVzdWx0IGlmIGFuIGV4cHJlc3Npb24gaXMgcGFzc2VkIGFzIHRoZSAnZW5kcG9pbnQnCi0gICAgYXJndW1lbnQgLS0gZHVlIHRvIG1pc3NpbmcgcGFyZW50aGVzZXMuCi0KLSAgICBUaGFua3MgdG8gTWFydGluIE11ZWxsZXIgZm9yIGZpbmRpbmcgdGhlIGJ1ZyBhbmQgcHJvdmlkaW5nIHRoZSBwYXRjaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCBjOTQxYjc3YWRjNDBmMzQ0MjE1ZTM2N2IzZDFmYzYzOGFkZGZmODcwCi1BdXRob3I6IEFuZHJldyBDYWxkd2VsbCA8QW5kcmV3LkNhbGR3ZWxsQGFuYWxvZy5jb20+Ci1EYXRlOglGcmkgTWF5IDcgMTU6MTA6MDcgMjAxMCAtMDQwMAotCi0gICAgQmxhY2tmaW46IG5hbmQ6IGRyYWluIHRoZSB3cml0ZSBidWZmZXIgYmVmb3JlIHJldHVybmluZwotCi0gICAgVGhlIGN1cnJlbnQgQmxhY2tmaW4gbmFuZCB3cml0ZSBmdW5jdGlvbiBmaWxscyB1cCB0aGUgd3JpdGUgYnVmZmVyIGJ1dAotICAgIHJldHVybnMgYmVmb3JlIGl0IGhhcyBoYWQgYSBjaGFuY2UgdG8gZHJhaW4uICBPbiBmYXN0ZXIgc3lzdGVtcywgdGhpcwotICAgIGlzbid0IGEgcHJvYmxlbSBhcyB0aGUgb3BlcmF0aW9uIGZpbmlzaGVzIGJlZm9yZSB0aGUgRUNDIHJlZ2lzdGVycyBhcmUKLSAgICByZWFkLCBidXQgb24gc2xvd2VyIHN5c3RlbXMgdGhlIEVDQyBtYXkgYmUgaW5jb21wbGV0ZSB3aGVuIHRoZSBjb3JlIHRyaWVzCi0gICAgdG8gcmVhZCBpdC4KLQotICAgIFNvIHdhaXQgZm9yIHRoZSBidWZmZXIgdG8gZHJhaW4gb25jZSB3ZSdyZSBkb25lIHdyaXRpbmcgdG8gaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgQ2FsZHdlbGwgPEFuZHJldy5DYWxkd2VsbEBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDAxZjAzYmRhNWIyMmU1YWVhZTVmMDJmZDUzN2RhOTdhNDE0ODVjNzMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXkgMjYgMjM6NTc6MDggMjAxMCArMDIwMAotCi0gICAgUHJlcGFyZSB2MjAxMC4wNi1yYzEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjNDk3NjgwN2NiYmFiZDI4MWY0NTQ2NmFjNWU0N2U1NjM5YmNjOWNiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDI2IDIzOjUxOjIyIDIwMTAgKzAyMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGM3ZGE4YzE5YjVmN2ZkNThiNWI0YjFkMjQ3NjQ4ODUxYWY1NmUxZjAKLUF1dGhvcjogQW5kcmVhcyBCaWVzc21hbm4gPGFuZHJlYXMuZGV2ZWxAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTYXQgTWF5IDIyIDEzOjE3OjIxIDIwMTAgKzAyMDAKLQotICAgIGNvbmZpZy5tazogdXNlIGRpZmZlcmVudCBob3N0IGNvbXBpbGVyIGZvciBPUyBYIDEwLjYKLQotICAgIENvbXBpbGluZyB0b29scyBzdWJkaXJlY3Rvcnkgb24gTWFjIE9TIFggMTAuNiAoU25vdyBMZW9wYXJkKSBjb21wbGFpbnMgYWJvdXQKLSAgICB3cm9uZyBzeW50YXggaW4gc3lzdGVtIGluY2x1ZGVzLgotCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9zdGRpby5oOjQ0NCwKLQkJICAgICBmcm9tIC4uL3NvdXJjZS91LWJvb3QvaW5jbHVkZS9jb21waWxlci5oOjI2LAotCQkgICAgIGZyb20gLi4vc291cmNlL3UtYm9vdC9saWIvY3JjMzIuYzoxNToKLSAgICAvdXNyL2luY2x1ZGUvc2VjdXJlL19zdGRpby5oOjQ2OiBlcnJvcjogc3ludGF4IGVycm9yIGluIG1hY3JvIHBhcmFtZXRlciBsaXN0Ci0KLSAgICBUaGlzIGNhbiBiZSBmaXhlZCBieSByZXZlcnRpbmcgdGhlIHdvcmthcm91bmQgZm9yIHByaW9yIE9TIFggcmVsZWFzZXMgaW4KLSAgICBjb25maWcubWsgY29uZGl0aW9uYWxseSBmb3IgT1MgWCAxMC42Ky4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgQmll321hbm4gPGFuZHJlYXMuZGV2ZWxAZ29vZ2xlbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDZlY2UyNTUwZDFjMGM1YzgxMWIzMDJiMTYzOWVhMzVjMmU0ODUyMDMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBNYXkgMjEgMDQ6MTc6NDggMjAxMCAtMDUwMAotCi0gICAgQ29udmVydCBNYWtlZmlsZXMgZnJvbSBDT0JKUy0ke30gdG8gQ09CSlMtJCgpCi0KLSAgICBNYXRjaCBzdHlsZSB3ZSB1c2UgYWxtb3N0IGV2ZXJ5d2hlcmUgZWxzZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDU5ZGRlNDRhY2I4MmU1NzE4MDgxOTBjY2QzY2Q2YjgyZGM5ZDcwMDEKLUF1dGhvcjogTWljaGFlbCBXZWlzcyA8bWljaGFlbC53ZWlzc0BpZm0uY29tPgotRGF0ZToJVGh1IE1heSAyMCAxNjowOTozNSAyMDEwICswMjAwCi0KLSAgICBwb3dlcnBjL2Jvb3Rjb3VudDogRml4IGVuZGlhbm5lc3MgcHJvYmxlbQotCi0gICAgRm9yIENPTkZJR19TWVNfQk9PVENPVU5UX1NJTkdMRVdPUkQgdGhlIGNvZGUgaGFkIGFuIGVuZGlhbm5lc3MgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgV2Vpc3MgPG1pY2hhZWwud2Vpc3NAaWZtLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGQ3NGRkYTA5ZjAxNzgwNzk3MDVlZTFkNjQxNDQ0YmFjNDRkM2VjZDkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXkgMjYgMjI6MTk6MzUgMjAxMCArMDIwMAotCi0gICAgZG05MDAweC5jOiBmaXggY29tcGlsZSBwcm9ibGVtcwotCi0gICAgVXNlIHJlYWRYKCkgLyB3cml0ZVgoKSBhY2Nlc3NvcnMgaW5zdGVhZCBvZiBpblgoKSAvIG91dFgoKS4KLQotICAgIFN1Z2dlc3RlZC1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0MDc5MmQ2NzVhNjA5YzgzNjIxZDA5OGU0OGE4OWRlMDc0NjNiM2NkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgTWF5IDIxIDIzOjE0OjUzIDIwMTAgKzAyMDAKLQotICAgIGEzMjBldmI6IGZpeCB1ZGVsYXkgLyBfX3VkZWxheSBjb25mdXNpb24KLQotICAgIEZpeCB0aGUgZm9sbG93aW5nIGNvbXBpbGVyIHByb2JsZW1zOgotCi0gICAgYXJjaC9hcm0vY3B1L2FybTkyMHQvYTMyMC9saWJhMzIwLmEodGltZXIubyk6IEluIGZ1bmN0aW9uIGB1ZGVsYXknOgotICAgIC9ob21lL3dkL2dpdC91LWJvb3Qvd29yay9hcmNoL2FybS9jcHUvYXJtOTIwdC9hMzIwL3RpbWVyLmM6MTYwOiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGB1ZGVsYXknCi0gICAgbGliL2xpYmdlbmVyaWMuYSh0aW1lLm8pOi9ob21lL3dkL2dpdC91LWJvb3Qvd29yay9saWIvdGltZS5jOjM0OiBmaXJzdCBkZWZpbmVkIGhlcmUKLSAgICBsaWIvbGliZ2VuZXJpYy5hKHRpbWUubyk6IEluIGZ1bmN0aW9uIGB1ZGVsYXknOgotICAgIHRpbWUuYzooLnRleHQrMHgxYyk6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fdWRlbGF5JwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDkyMzgxYzQxYzcxOGQyNjA0NzZkNWM2MzZjNDczZjUwZTNiNWE3OWMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgMjEgMjM6MTM6MTggMjAxMCArMDIwMAotCi0gICAgQVJNOiAqL3RpbWVyLmM6IGZpeCBzcGVsbGluZyBhbmQgdmVydGljYWwgYWxpZ25tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgM2Y3ODZiYjg1NDJlZTg1ZWE4OTgxNTJiNDBiMWYwZDk4ZjA4MDFkZgotQXV0aG9yOiBNYWhhdmlyIEphaW4gPFttamFpbkBtYXJ2ZWxsLmNvbV0+Ci1EYXRlOglGcmkgTWF5IDIxIDE0OjM3OjQ4IDIwMTAgKzA1MzAKLQotICAgIGJ1Z2ZpeDogR3VydXBsdWc6IFVzZSBzdGFuZGFyZCBtaWlwaHkKLQotICAgIGNhbGwgdG8gcmVzZXQgUEhZIGNoaXAuCi0KLSAgICBDdXJyZW50IFBIWSBTb2Z0d2FyZSBSZXNldCBvcGVyYXRpb24gaW4gZ3VydXBsdWcgZG9lcyBub3QKLSAgICBwb2xsIHJlc2V0IGJpdCBpbiBjb250cm9sIHJlZ2lzdGVyIHRvIGdvIHRvIDAoYXV0byBjbGVhcmluZykKLSAgICBmb3IgbWFraW5nIHN1cmUgcmVzZXQgd2FzIHN1Y2Nlc3NmdWwuVGhpcyBwYXRjaCB1c2VzIHN0YW5kYXJkCi0gICAgbWlpcGh5IGNhbGwgbWlpcGh5X3Jlc2V0IHRvIG1ha2Ugc3VyZSBwcm9wZXIgUEhZIHJlc2V0IG9wZXJhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1haGF2aXIgSmFpbiA8bWphaW5AbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA3MWJkODYwY2NlNDQ5M2M1ZGVmMDc4MDQ3MjM2NjFlNzUyNzEwNTJiCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDE5IDE3OjA2OjQ2IDIwMTAgLTA1MDAKLQotICAgIG1wYzgzeHg6IGRvbid0IHNoaWZ0IHByZS1zaGlmdGVkIEFDUiwgU1BDUiwgU0NDUiBiaXRmaWVsZCBtYXNrcyBpbiBjcHVfaW5pdC5jCi0KLSAgICBjb21taXQgYzcxOTBmMDI4ZmE5NTBkNGQzNmI2ZDBiNGJiM2ZjNzI2MDJlYzU0YyAibXBjODN4eDoKLSAgICByZXRhaW4gUE9SIHZhbHVlcyBvZiBub24tY29uZmlndXJlZCBBQ1IsIFNQQ1IsIFNDQ1IsIGFuZCBMQ1JSCi0gICAgYml0ZmllbGRzIiBpbmNvcnJlY3RseSBzaGlmdGVkIDxyZWdpc3Rlcj5fPGJpdGZpZWxkPiAoZS5nLgotICAgIEFDUl9QSVBFX0RFUCkgdmFsdWVzIHRoYXQgd2VyZSBwcmVzaGlmdGVkIGJ5IHRoZWlyCi0gICAgZGVmaW5pdGlvbiBpbiBtcGM4M3h4LmguCi0KLSAgICB0aGlzIHBhdGNoIHJlbW92ZXMgdGhlIHVubmVjZXNzYXJ5IHNoaWZ0aW5nIGZvciB0aGUgbmV3bHkKLSAgICB1dGlsaXplZCBtYXNrIHZhbHVlcyBpbiBjcHVfaW5pdC5jLCBhbmQgcHJldmVudHMgc2VlbWluZ2x5Ci0gICAgdW5yZWxhdGVkIHN5bXB0b21zIHN1Y2ggYXMgYW4gbXBjODM3OWVyZGIgYm9hcmQgZnJvbQotICAgIGxvY2tpbmcgdXAgd2hpbHN0IHBlcmZvcm1pbmcgYSBuZXR3b3JraW5nIG9wZXJhdGlvbiwKLSAgICBlLmcuIGEgdGZ0cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNjk3MGQwYzU0NWI5MTM0YWYzYjM0N2M3NWVlM2QxMzU0NWIzNmQ4Ci1BdXRob3I6IEhvcnN0IEtyb25zdG9yZmVyIDxoa3JvbnN0b0BmcmVxdWVudGlzLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTggMTA6Mzc6MDUgMjAxMCArMDIwMAotCi0gICAgRml4ZWQgdHdvIHR5cG9zIGluIGFyY2gvcG93ZXJwYy9jcHUvbXBjODN4eC9zdGFydC5TLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSG9yc3QgS3JvbnN0b3JmZXIgPGhrcm9uc3RvQGZyZXF1ZW50aXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0NDUwOTNkMTc1YjA2MjI2NTQ5NjgwYjY4OTQ5MjNiYjBmNWU1MGZhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDE3IDIxOjI3OjM5IDIwMDkgKzAxMDAKLQotICAgIEZpeCAicGFyW3RdaXRpb24iIHR5cG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYmRjNWYwNjc4OWM1YTBjM2E5YTJjMGViMzNlYzRkMTc3ZGJkYWEyMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTWF5IDE3IDEwOjAxOjA1IDIwMTAgKzAyMDAKLQotICAgIFVCSTogRml4IHByb2JsZW0gaW4gVUJJL0xpbnV4ICJjb21wYXRpYmlsaXR5IGxheWVyIgotCi0gICAgImRvd25fd3JpdGVfdHJ5bG9jayIgbmVlZHMgdG8gcmV0dXJuIDEgaW5zdGVhZCBvZiAwIGZvciBzdWNjZXNzLgotICAgIE90aGVyd2lzZSBjb3B5aW5nIGEgYmxvY2sgd2l0aCBhIHJlYWQgZXJyb3IgKGUuZy4gYml0LWZsaXAgb24gcmVhZCkKLSAgICB3b24ndCB3b3JrIGNvcnJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDFiMWY5YTlkMDA0NDdkOWVhYjMyYWU1NjMzZjYwYTEwNjE5NmI3NWYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE1heSAxNyAxMDowMDo1MSAyMDEwICswMjAwCi0KLSAgICBVQkk6IEVuc3VyZSB0aGF0ICJiYWNrZ3JvdW5kIHRocmVhZCIgb3BlcmF0aW9ucyBhcmUgcmVhbGx5IGV4ZWN1dGVkCi0KLSAgICBUaGUgY3VycmVudCBVLUJvb3QgVUJJIGltcGxlbWVudGF0aW9uIGlzIGNvcGllZCBmcm9tIExpbnV4LiBJbiB0aGlzCi0gICAgcG9ydGluZyB0aGUgVUJJIGJhY2tncm91bmQgdGhyZWFkIHdhcyBub3QgaGFuZGxlZCBjb3JyZWN0bHkuIFVwb24gd3JpdGUKLSAgICBvcGVyYXRpb25zIHViaV93bF9mbHVzaCgpIG1ha2VzIHN1cmUsIHRoYXQgYWxsIHF1ZXVlZCBvcGVyYXRpb25zLCBsaWtlCi0gICAgcGFnZS1lcmFzZSwgYXJlIGNvbXBsZXRlZC4gQnV0IHRoaXMgaXMgbWlzc2luZyBmb3IgcmVhZCBvcGVyYXRpb25zLgotCi0gICAgVGhpcyBwYXRjaCBub3cgbWFrZXMgc3VyZSB0aGF0IHN1Y2ggb3BlcmF0aW9ucyAobGlrZSBzY3J1YmJpbmcgdXBvbgotICAgIGJpdC1mbGlwIGVycm9ycykgYXJlIG5vdCBxdWV1ZWQsIGJ1dCBleGVjdXRlZCBkaXJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDAzYWY1YWJkODU2MzdkMjdlOTZmYjk5OWNlNmUzOTkyMjkzNTcwYjAKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUaHUgTWF5IDEzIDEwOjI2OjQwIDIwMTAgKzAyMDAKLQotICAgIE1YMzE6IEFkZGVkIHN1cHBvcnQgZm9yIHRoZSBDYXNpbyBDT001N0g1TTEwWFJDIHRvIFFPTkcKLQotICAgIFRoZSBwYXRjaCBhZGRzIHNldHVwIHRvIGNvbm5lY3QgYSBDQVNJTyBDT001N0g1TTEwWFJDCi0gICAgKDY0MHg0ODAgVEZUIGRpc3BsYXkpIHRvIHRoZSBRT05HIG1vZHVsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgMmYwNWUzOTRmY2NmNjJhNDY5M2M2YjgzMjNkZTcyNWY5MGQxZjAwMwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIE1heSAxNyAyMzozNDoxOCAyMDEwICswMjAwCi0KLSAgICBmc2xfZGl1X2ZiLmM6IGZpeCBidWlsZCB3YXJuaW5ncwotCi0gICAgQ29tbWl0IDE1MzUxODU1ICJmc2wtZGl1OiBVc2luZyBJL08gYWNjZXNzb3IgdG8gQ0NTUiBzcGFjZSIgY2F1c2VkIGEKLSAgICBudW1iZXIgb2YgInBhc3NpbmcgYXJndW1lbnQgMiBvZiAnb3V0X2JlMzInIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyCi0gICAgd2l0aG91dCBhIGNhc3QiIHdhcm5pbmdzOyBmaXggdGhlc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIENjOiBKZXJyeSBIdWFuZyA8Q2hhbmctTWluZy5IdWFuZ0BmcmVlc2NhbGUuY29tPgotICAgIENjOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjJkNzZhZTRmZGRlMTgwZTEyMGVhMmQyOWQ2ZWY4ODEzNjBiM2NiYQotQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTEgMTE6Mjk6NTIgMjAxMCArMDEwMAotCi0gICAgQXZvaWQgdXNlIG9mIGRpdmlkZXMgaW4gcHJpbnRfc2l6ZQotCi0gICAgTW9kaWZpY2F0aW9uIG9mIHByaW50X3NpemUgdG8gYXZvaWQgdXNlIG9mIGRpdmlkZXMgYW5kIGVzcGVjaWFsbHkKLSAgICBsb25nIGxvbmcgZGl2aWRlcy4gS2VlcCB0aGUgYmluYXJ5IHNjYWxlIGZhY3RvciBpbiB0ZXJtcyBvZiBiaXQKLSAgICBzaGlmdHMgaW5zdGVhZC4gVGhpcyBzaG91bGQgYmUgZmFzdGVyLCBzaW5jZSB0aGUgcHJldmlvdXMgY29kZQotICAgIGdhdmUgdGhlIGNvbXBpbGVyIG5vIGNsdWVzIHRoYXQgdGhlIGRpdmlkZXMgd2hlcmUgYWx3YXlzIHBvd2VycwotICAgIG9mIHR3bywgcHJldmVudGluZyBvcHRpbWlzYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLSAgICBBY2tlZC1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE1OTljZGU3Njk4YWNjNWFlM2QwZjczMWI0YTdkNjNhOTMxYWFlNjMKLUF1dGhvcjogU2VyZ2UgWmlyeXVraW4gPGZ0cnZ4bXRyeEBnbWFpbC5jb20+Ci1EYXRlOglNb24gTWF5IDEwIDE3OjQwOjQ5IDIwMTAgKzAzMDAKLQotICAgIGxhbjkxYzk2LCBzbWM5MTF4OiByZW1vdmUgdXNlbGVzcyBmcmVlKHB0cikgY2FsbHMgb24gTlVMTCBwdHIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlIFppcnl1a2luIDxmdHJ2eG10cnhAZ21haWwuY29tPgotCi1jb21taXQgYjFlMWE0MmJiMWVhMmYwZGRhYWVhN2Y0YzlkNjdjOThhYjM4NzA5ZQotQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Ci1EYXRlOglGcmkgTWF5IDE0IDE2OjI3OjQ4IDIwMTAgLTA3MDAKLQotICAgIEZpeCBTSUNSTCBzZXR0aW5nIGluIFNJTVBDODMxMwotCi0gICAgVGhpcyBwYXRjaCBzZXRzIHRoZSBTSUNSTF9MQkMgYml0cyBpbiBTSUNSTCB0byBjaGFuZ2UgdGhlIGZ1bmN0aW9uIG9mIHRoZQotICAgIGFzc29jaWF0ZWQgcGlucyB0byBHUElPIGZ1bmN0aW9uYWxpdHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Ci0KLWNvbW1pdCBhNGJmYzRjYzQ2NjQ3M2I5N2M3ZmU4NGJkZjI2MWIyOTM1ODg3ZTNmCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWF5IDE0IDEzOjE4OjU0IDIwMTAgLTA1MDAKLQotICAgIG1wYzgzeHg6IGZpeCBOQU5EIGJvb3RzdHJhcCB0b28gYmlnIGVycm9yCi0KLSAgICBjb21taXQgMTY3Y2RhZDEzNzI5MTdiYzExYzYzNmMzNTlhYWQwMjYyNTI5MWZhOSAiU0VSSUFMOiBFbmFibGUKLSAgICBwb3J0LW1hcHBlZCBhY2Nlc3MiIGluYWR2ZXJ0ZW50bHkgYnJva2UgODN4eCBuYW5kIGJvYXJkcyBieQotICAgIGNvbnZlcnRpbmcgTlMxNjU1MF9pbml0IHRvIHVzZSBpbyBhY2Nlc3NvcnMsIHdoaWNoIGV4cGFuZGVkCi0gICAgdGhlIHNpemUgb2YgdGhlIGdlbmVyYXRlZCBjb2RlLgotCi0gICAgdGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSBieSByZW1vdmluZyBpY2FjaGUgZnVuY3Rpb25zIGZyb20KLSAgICB0aGUgbmFuZCBidWlsZHMsIHdoaWNoIHNvbWV3aGF0IGZvbGxvd3MgY29tbWl0Ci0gICAgMWEyZTIwM2IzMWQzM2ZiNzIwZjJjZjEwMzNiMjQxYWQzNmFiNDA1YSAibXBjODN4eDogdHVybiBvbiBpY2FjaGUKLSAgICBpbiBjb3JlIGluaXRpYWxpemF0aW9uIHRvIGltcHJvdmUgdS1ib290IGJvb3QgdGltZSIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlNzQyNDRjNWExYzhiY2VhOWIwNDcyMTcyNzdkY2QzMjM1YTI4NWY0Ci1BdXRob3I6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KLURhdGU6CU1vbiBNYXkgMTAgMTU6MjM6MjAgMjAxMCAtMDcwMAotCi0gICAgUmVtb3ZhbCBvZiBjaGVja2JvYXJkIGZyb20gc3BsIGJvb3RzdHJhcCBidWlsZCBmb3IgU0lNUEM4MzEzCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNoZWNrYm9hcmQgZnVuY3Rpb24gZnJvbSB0aGUgYnVpbGQgb2YKLSAgICB0aGUgNGsgYm9vdHN0cmFwIHNlY3Rpb24gZm9yIHRoZSBTSU1QQzgzMTMgYXMgaXQgaXMgbm90IG5lZWRlZAotICAgIGluIHRoZSBzcGwgYnVpbGQuICBUaGlzIHdpbGwgYWxsb3cgPiAxMDAgYnl0ZXMgb2YgZXh0cmEgcm9vbQotICAgIGZvciBvdGhlciB1c2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5YzNmMmQ2NjcwZTYxNTFmNGY2MzI5ZjU3MmE2MmIwZDJkNjc2OGNlCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglUdWUgTWF5IDExIDA5OjU0OjAwIDIwMTAgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGJ1aWxkaW5nIFBMVTQwNSBib2FyZAotCi0gICAgRHVlIHRvIHNvbWUgb3ZlcmxhcHBpbmcgc2VjdGlvbnMgaXQncyB0aW1lIHRvIHVwZGF0ZSBURVhUX0JBU0UKLSAgICBmb3IgdGhpcyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTJhMGE3MTcxMzAzZGU1ZDhjZTA5OTM0NGVmZGUyZTI5ZWUzNmViMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1heSAxNSAyMToyMzo1MSAyMDEwICswMjAwCi0KLSAgICBNYWtlZmlsZTogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIG9mICJ1LWJvb3QuaW1nIiB0YXJnZXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyZTRmMzVkYmQ4ZTExYzMxMjFhZjk5ZWE4ZTA0Y2U0ZmIzOWU5YTRlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDE1IDIwOjIyOjIxIDIwMTAgKzAyMDAKLQotICAgIE1WQkxNNywgTVZTTVI6IGZpeCBNYWtlZmlsZSAoY2xlYW51cCBib290c2NyaXB0LmltZykKLQotICAgIEZpeCBNVkJMTTcgYW5kIE1WU01SIE1ha2VmaWxlcyBmb3IgY29ycmVjdCBvdXQtb2YtdHJlZSBidWlsZGluZwotICAgIChjcmVhdGUgImJvb3RzY3JpcHQuaW1nIiBpbiBidWlsZCBkaXJlY3RvcnkgaW5zdGVhZCBvZiBzb3VyY2UKLSAgICBkaXJlY3RvcnkpIGFuZCBjbGVhbnVwIChyZW1vdmUgImJvb3RzY3JpcHQuaW1nIiB3aGVuIGNsZWFuaW5nIHVwKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLQotY29tbWl0IGNkNGIwMmJlMWJiNzMyZjM5OTA4MDFmZjgxYjU3YmQ1OTdiMWQ1YjYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgMTAgMjM6MDg6MDIgMjAxMCArMDIwMAotCi0gICAgQVJNOiBhZGQgX19hZWFiaV91bndpbmRfY3BwX3ByMCgpIGZ1bmN0aW9uIHRvIGF2b2lkIGxpbmtlciBjb21wbGFpbnRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIFRlc3RlZC1ieTogVGhvbWFzIFdlYmVyIDx3ZWJlckBjb3JzY2llbmNlLmRlPgotCi1jb21taXQgN2I0M2RiOTIxMTBlYzJmMTVjNWY3MTg3YTE2NWYyOTI4NDY0OTY2YgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIE1heSA5IDIzOjUyOjU5IDIwMTAgKzAyMDAKLQotICAgIGRyaXZlcnMvbW1jL2ZzbF9lc2RoYy5jOiBmaXggY29tcGlsZXIgd2FybmluZ3MKLQotICAgIENvbW1pdCA3N2MxNDU4ZCBjYXVzZWQgdGhlIGZvbGxvd2luZyBjb21waWxlciB3YXJuaW5nczoKLQotICAgIGZzbF9lc2RoYy5jOiBJbiBmdW5jdGlvbiAnZXNkaGNfcGlvX3JlYWRfd3JpdGUnOgotICAgIGZzbF9lc2RoYy5jOjE0Mjogd2FybmluZzogYXNzaWdubWVudCBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQotICAgIGZzbF9lc2RoYy5jOiBJbiBmdW5jdGlvbiAnZXNkaGNfc2V0dXBfZGF0YSc6Ci0gICAgZnNsX2VzZGhjLmM6MTY5OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3dtbF92YWx1ZScKLSAgICBmc2xfZXNkaGMuYzogSW4gZnVuY3Rpb24gJ2VzZGhjX3Bpb19yZWFkX3dyaXRlJzoKLSAgICBmc2xfZXNkaGMuYzoxNjQ6IHdhcm5pbmc6IGNvbnRyb2wgcmVhY2hlcyBlbmQgb2Ygbm9uLXZvaWQgZnVuY3Rpb24KLQotICAgIEZpeCB0aGVzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IERpcGVuIER1ZGhhdCA8ZGlwZW4uZHVkaGF0QGZyZWVzY2FsZS5jb20+Ci0gICAgQ2M6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJjYjZjMmJiODQ3MDViZmQ3M2VlZDVjOWEzMWU5ZmYyNDgzM2VlOGMKLUF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXkgNyAwOToxMjowMSAyMDEwIC0wNTAwCi0KLSAgICBFbmFibGVkIHN1cHBvcnQgZm9yIFJldiAxLjMgU1BEIGZvciBERFIyIERJTU1zCi0KLSAgICBTUEQgaGFzIG1pbm9yIGNoYW5nZSBmcm9tIFJldiAxLjIgdG8gMS4zLiBUaGlzIHBhdGNoIGVuYWJsZXMgUmV2IDEuMy4KLSAgICBUaGUgZGlmZmVyZW5jZSBoYXMgYmVuIGV4YW1pbmVkIGFuZCB0aGUgY29kZSBpcyBjb21wYXRpYmxlLgotICAgIFNwZWVkIGJpbnMgaXMgbm90IHZlcmlmaWVkIG9uIGhhcmR3YXJlIGZvciBDTDcgYXQgdGhpcyBtb21lbnQuCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gZW5hYmxlcyBTUEQgUmV2IDEueCB3aGVyZSB4IGlzIHVwIHRvICJGIi4gQWNjb3JkaW5nIHRvIFNQRAotICAgIHNwZWMsIHRoZSBsb3dlciBuaWJibGUgaXMgb3B0aW9uYWxseSB1c2VkIHRvIGRldGVybWluZSB3aGljaCBhZGRpdGluYWwgYnl0ZXMKLSAgICBvciBhdHRyaWJ1dGUgYml0cyBoYXZlIGJlZW4gZGVmaW5lZC4gU29mdHdhcmUgY2FuIHNhZmVseSB1c2UgZGVmYXVsdHMuIEhvd2V2ZXIsCi0gICAgdGhlIHVwcGVyIG5pYmJsZSBzaG91bGQgYWx3YXlzIGJlIGNoZWNrZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmNTRmZTg3YWNlZGJiYWQ3ZDI5YWQxOGNhYjMxZDJiMzIzNzE3NTE0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgQXByIDIwIDEwOjIxOjI1IDIwMTAgLTA1MDAKLQotICAgIDg1eHgvZnNsLXNhdGE6IFVzZSBpc19zZXJkZXNfY29uZmlndXJlZCgpIHRvIGRldGVybWluZSBpZiBTQVRBIGlzIGVuYWJsZWQKLQotICAgIE9uIHRoZSBNUEM4NXh4IHBsYXRmb3JtIGlmIHdlIGhhdmUgU0FUQSBpdHMgY29ubmVjdGVkIG9uIFNFUkRFUy4KLSAgICBEZXRlcm1pbmcgaWYgU0FUQSBpcyBlbmFibGVkIHZpYSBzYXRhX2luaXRpYWxpemUgc2hvdWxkIG5vdCBiZSBib2FyZAotICAgIHNwZWNpZmljIGFuZCB0aHVzIHdlIG1vdmUgaXQgb3V0IG9mIHRoZSBNUEM4NTM2RFMgYm9hcmQgY29kZS4KLQotICAgIEFkZGl0aW9uYWxseSwgbm93IHRoYXQgd2UgaGF2ZSBpc19zZXJkZXNfY29uZmlndXJlZCgpIHdlIGNhbiBkZXRlcm1pbmUKLSAgICBpZiB0aGUgZ2l2ZW4gU0FUQSBwb3J0IGlzIGVuYWJsZWQgYW5kIGVycm9yIG91dCBpZiBpdHMgbm90IGluIHRoZQotICAgIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1NDY0ODk4NWUyYTY0ZTI5Nzg0ZTNlZDM3Y2Q0NWI2MzczMDVjZDY1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgQXByIDIwIDEwOjIxOjEyIDIwMTAgLTA1MDAKLQotICAgIDg1eHgvbXBjODUzNmRzOiBVc2UgaXNfc2VyZGVzX2NvbmZpZ3VyZWQoKSB0byBkZXRlcm1pbmUgb2YgUENJZSBlbmFibGVkCi0KLSAgICBUaGUgbmV3IGlzX3NlcmRlc19jb25maWd1cmVkIGNvdmVycyBhIGJyb2FkZXIgcmFuZ2Ugb2YgZGV2aWNlcyB0aGFuIHRoZQotICAgIFBDSSBzcGVjaWZpYyBjb2RlLglVc2UgaXQgaW5zdGVhZCBhcyB3ZSBjb252ZXJ0IGF3YXkgZnJvbSB0aGUKLSAgICBpc19mc2xfcGNpX2NmZygpIGNvZGUuCi0KLSAgICBBZGRpdGlvbmFsbHkgbW92ZSB0byBzZXR0aW5nIExBV3MgZm9yIFBDSSBiYXNlZCBvbiBpZiBpdHMgY29uZmlndXJlZC4KLSAgICBBbHNvIHVwZGF0ZWQgUENJIEZEVCBmaXh1cCBjb2RlIHRvIHJlbW92ZSBQQ0kgY29udHJvbGxlcnMgZnJvbSBkdGIgaWYKLSAgICB0aGV5IGFyZSBjb25maWd1cmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDZhYjQwMTFiNzk2ZTBhZjEzMGNhMTYwZWEzYzY3NGQ0NjJmM2JlYzQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBcHIgMjAgMTA6MjA6MzMgMjAxMCAtMDUwMAotCi0gICAgODV4eDogQWRkIGlzX3NlcmRlc19jb25maWd1cmVkKCkgc3VwcG9ydCB0byBNUEM4NTM2IFNFUkRFUwotCi0gICAgQWRkIHRoZSBhYmlsaXR5IHRvIGRldGVybWluZSBpZiBhIGdpdmVuIElQIGJsb2NrIGNvbm5lY3RlZCBvbiBTRVJERVMgaXMKLSAgICBjb25maWd1cmVkLiAgVGhpcyBpcyB1c2VmdWwgZm9yIHRoaW5ncyBsaWtlIFBDSWUgYW5kIFNSSU8gc2luY2UgdGhleSBhcmUKLSAgICBvbmx5IGV2ZXIgY29ubmVjdGVkIG9uIFNFUkRFUy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxNTM1MTg1NTc3NmYzMmQ0MGQ5YzMzNmMwZGM2ZDIyYTdiY2Y0MGMyCi1BdXRob3I6IEplcnJ5IEh1YW5nIDxDaGFuZy1NaW5nLkh1YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXByIDggMTU6NTY6MDcgMjAxMCArMDgwMAotCi0gICAgZnNsLWRpdTogVXNpbmcgSS9PIGFjY2Vzc29yIHRvIENDU1Igc3BhY2UKLQotICAgIFVzaW5nIFBQQyBJL08gYWNjZXNzb3IgdG8gRElVIEkvTyBzcGFjZSBpbnN0ZWFkIG9mIGRpcmVjdGx5Ci0gICAgcmVhZC93cml0ZS4gSXQgd2lsbCBwcmV2ZW50IHRoZSBkb3plbiBvZiBjb21waWxlciBvcmRlciBpc3N1ZQotICAgIGFuZCBQUEMgaGFyZHdhcmUgb3JkZXIgaXNzdWUgZm9yIGFjY2Vzc2luZyBJL08gc3BhY2UuCi0KLSAgICBVc2luZyB0aGUgdG9vbGNoYWluKHRjLWZzbC14ODZsbngtZTUwMC1kcC00LjMuNzQtMi5pMzg2LnJwbSkKLSAgICBjYW4gc2hvdyB1cCB0aGUgb3JkZXIgaXNzdWUgb2YgRElVIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVycnkgSHVhbmcgPENoYW5nLU1pbmcuSHVhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmQxOTRmODJkMWMzMDgwMmYwNTk3YTNlMzU5ZmRjMDNlZDM5NzM2NwotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglNb24gTWF5IDMgMTM6MjI6MzEgMjAxMCArMDIwMAotCi0gICAgbXBjODN4eC9tdkJMTTc6IGFkZCB1c2IgY29tbWFuZHMgYW5kIGNsZWFudXAuCi0KLSAgICBBZGQgVVNCIGNvbW1hbmRzLgotICAgIFJlbmFtZSBhdXRvc2NyaXB0IHRvIGJvb3RzY3JpcHQuCi0gICAgQWRkIGF1dG9tYXRpYyBib290c2NyaXB0IGltYWdlIGdlbmVyYXRpb24gdG8gbWFrZWZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDNiNDM5NzkyYjA3ODE5MjFjNTk5ZDhhZjliZWQ2YTc3MWQyOTViNTMKLUF1dGhvcjogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotRGF0ZToJV2VkIEFwciAyOCAxNjowNDo0MyAyMDEwIC0wNzAwCi0KLSAgICBtcGM4M3h4OiBBZGQgVVBNQSBjb25maWd1cmF0aW9uIHRvIFNJTVBDODMxMwotCi0gICAgQWRkZWQgVVBNIGFycmF5IHRhYmxlLCB1cG1jb25maWcsIGFuZCBMb2NhbCBCdXMgY29uZmlndXJhdGlvbiBzdXBwb3J0IGZvciBTSU1QQzgzMTMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTc5NDYxOWUyOWM1ZTIyMjgwYjBiMDliMmVhNmJjM2QyZTAwZGEzZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTWF5IDUgMDQ6MzI6NDMgMjAxMCAtMDQwMAotCi0gICAgc2VyaWFsOiBwdW50IHVudXNlZCBzZXJpYWxfYWRkcigpCi0KLSAgICBPbmx5IG9uZSBmaWxlIGFwcGFyZW50bHkgZGVmaW5lcyB0aGlzIGZ1bmN0aW9uLCBhbmQgaXQgbWVyZWx5IHN0dWJzCi0gICAgaXQgb3V0LiBTbyBpZiBubyBvbmUgaXMgZGVmaW5pbmcvY2FsbGluZyBpdCwgcHVudCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGY3NDU4MTdlNzQxZTQyNTFhZmJkOWQ1ZDdmMDRiMjQxOWY0YWE5ZDkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIEFwciAyNyAxNDoxNTozNCAyMDEwIC0wNDAwCi0KLSAgICB1cGRhdGUgaW5jbHVkZS9hc20vIGdpdGlnbm9yZSBhZnRlciBtb3ZlCi0KLSAgICBXaXRoIHRoZSBjcHUgaW5jbHVkZSBwYXRocyBtb3ZlZCwgdGhlIGdpdGlnbm9yZSBwYXRocyBuZWVkIHVwZGF0aW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFRlc3RlZC1ieTogVG9tIFJpeCA8dG9tQGJ1bWJsZWNvdy5jb20+Ci0KLWNvbW1pdCBkMDE3OTA4M2E5YzllMTJjOGM1NDAwYjEwNzE1NmMxNGM3ZGExMjIyCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgQXByIDI4IDAyOjUyOjAyIDIwMTAgLTA1MDAKLQotICAgIEZpeHVwIG5hdGl2ZSBidWlsZHMgb24gcG93ZXJwYwotCi0gICAgV2hlbiB3ZSBjaGFuZ2VkIEFSQ0ggZnJvbSBwcGMgdG8gcG93ZXJwYyB3ZSBuZWVkIHRvIHRyZWF0IEhPU1RBUkNIIHRoZQotICAgIHNhbWUgd2F5LiAgV2UgdXNlIEhPU1RBUkNIID09IEFSQ0ggdG8gZGV0ZXJtaW5lIGlmIGEgYnVpbGQgaXMgbmF0aXZlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDY1ZDM0MjU0MWU3OGFiOWEyMmJmNDgwY2M0ZmUyZjY1OWY5NGJhZDQKLUF1dGhvcjogU2VyZ2UgWmlyeXVraW4gPGZ0cnZ4bXRyeEBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXByIDI1IDIxOjMyOjM2IDIwMTAgKzAzMDAKLQotICAgIGNtZF91c2IuYzogc2hvdyBjbWQgdXNhZ2UgaWYgbm8gYXJncyBnaXZlbgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2UgWmlyeXVraW4gPGZ0cnZ4bXRyeEBnbWFpbC5jb20+Ci0KLWNvbW1pdCBlNGE5NWQxMTJlNWVhODM2OGJmYmRhYzZmZjk2M2QxYjhkYzYzY2YwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgMjggMTA6NDc6MzYgMjAxMCArMDIwMAotCi0gICAgcG93ZXJwYzogQ29uc29saWRhdGUgYm9vdGNvdW50X3tzdG9yZXxsb2FkfSBmb3IgUG93ZXJQQwotCi0gICAgVGhpcyBwYXRjaCBjb25zb2xpZGF0ZXMgYm9vdGNvdW50X3tzdG9yZXxsb2FkfSBmb3IgUG93ZXJQQyBieQotICAgIGltcGxlbWVudGluZyBhIGNvbW1vbiB2ZXJzaW9uIGluIGFyY2gvcG93ZXJwYy9saWIvYm9vdGNvdW50LmMuIFRoaXMKLSAgICBjb2RlIGlzIG5vdyB1c2VkIGJ5IGFsbCBQb3dlclBDIHZhcmlhbnRzIHRoYXQgY3VycmVudGx5IGhhdmUgdGhlc2UKLSAgICBmdW5jdGlvbnMgaW1wbGVtZW50ZWQuCi0KLSAgICBUaGUgZnVuY3Rpb25zIG5vdyB1c2UgdGhlIHByb3BlciBJTy1hY2Nlc3NvciBmdW5jdGlvbnMgdG8gcmVhZC93cml0ZSB0aGUKLSAgICB2YWx1ZXMuCi0KLSAgICBUaGlzIGNvZGUgYWxzbyBzdXBwb3J0cyB0d28gZGlmZmVyZW50IGJvb3Rjb3VudCB2ZXJzaW9uczoKLQotICAgIGEpIFVzZSAyIHNlcGFyYXRlIHdvcmRzICgyICogMzJiaXQpIHRvIHN0b3JlIHRoZSBib290Y291bnRlcgotICAgIGIpIFVzZSBvbmx5IDEgd29yZCAoMiAqIDE2Yml0KSB0byBzdG9yZSB0aGUgYm9vdGNvdW50ZXIKLQotICAgIFZlcnNpb24gYikgd2FzIGFscmVhZHkgdXNlZCBieSBNUEM1eHh4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQkgICAgICBmb3IgODN4eCBwYXJ0cwotICAgIENjOiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+Ci0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgQ2M6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDc2N2ZkYzRhZjY4NDc3MGY1ZTk3YTZjNWUxOWE4YWMyNjE2YjgzMjkKLUF1dGhvcjogRW5kZXIuRGFpIDxlbmRlci5kYWlAZ21haWwuY29tPgotRGF0ZToJVGh1IEFwciAyMiAxNToyNDoyNSAyMDEwICswODAwCi0KLSAgICBkcml2ZXJzLyovTWFrZWZpbGU6IGZpeCBjb25kaXRpb25hbCBjb21waWxlIHJ1bGUuCi0KLSAgICBGaXggY29uZGl0aW9uYWwgY29tcGlsZSBydWxlIGZvciB0d2w0MDMwLmMgYW5kIHZpZGVvbW9kZXMuYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVuZGVyLkRhaSA8ZW5kZXIuZGFpQGdtYWlsLmNvbT4KLQotY29tbWl0IDU0ZmEyYzViNTFjNTY0Y2NlNzE2OTQyZDI2NDkyNDM3NDU3OTgwYTQKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci1EYXRlOglUdWUgQXByIDIwIDA4OjA5OjQzIDIwMTAgLTA0MDAKLQotICAgIE1vdmUgdGVzdCBmb3IgdW5uZWNlc3NhcnkgbWVtbW92ZSB0byBtZW1tb3ZlX3dkKCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgYjA1MGM3MmQ1MmM0ZTMwZDViOTc4YWI2NzU4ZjhkY2RiZTVjNjkwYwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgQXByIDIwIDA1OjQ5OjMwIDIwMTAgLTA0MDAKLQotICAgIGNvbXBpbGVyLmg6IGFkZCB1aW50IHR5cGVkZWYKLQotICAgIFJlY2VudCBjcmMgY2hhbmdlcyBzdGFydGVkIHVzaW5nIHRoZSAidWludCIgdHlwZSBpbiBoZWFkZXJzIHRoYXQgYXJlIHVzZWQKLSAgICBvbiB0aGUgYnVpbGQgc3lzdGVtLiAgVGhpcyBzdWJzZXF1ZW50bHkgYnJva2UgbWluZ3cgdGFyZ2V0cyBhcyB0aGV5IGRvIG5vdAotICAgIHByb3ZpZGUgc3VjaCBhIHR5cGUuICBTbyBhZGQgdGhpcyBiYXNpYyB0eXBlZGVmIHRvIGNvbXBpbGVyLmggc28gdGhhdCB3ZQotICAgIGRvIG5vdCBoYXZlIHRvIHdvcnJ5IGFib3V0IHRoaXMgYnJlYWtpbmcgYWdhaW4gaW4gdGhlIGZ1dHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDM5ZjdhYWNmM2ZkMjg1YjQyYjkyYzJjMmQ2NmQ5NTMzOWEzNTY5Y2MKLUF1dGhvcjogVHLDvGJlbmJhY2gsIFJhbGYgPFJhbGYuVHJ1ZWJlbmJhY2hAbWVuLmRlPgotRGF0ZToJV2VkIEFwciAxNCAxMToxNToxNiAyMDEwICswMjAwCi0KLSAgICBjb21tYW5kLmM6IEVuYWJsZSBhdXRvIHRhYiBmb3IgdGhlIGVkaXRlbnYgY29tbWFuZAotCi0gICAgRW5hYmxlIHRoZSBhdXRvIGNvbXBsZXRpb24gKHdpdGggVEFCKSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZQotICAgIGFmdGVyIHRoZSBlZGl0ZW52IGNvbW1hbmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWxmIFRy/GJlbmJhY2ggPHJhbGYudHJ1ZWJlbmJhY2hAbWVuLmRlPgotCi1jb21taXQgMDczOGUyNGUyYzFkOTViYjk0NDU1ZDQ0NDg1ZGM1ZDdiOWM5ZDcwNwotQXV0aG9yOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC5ldT4KLURhdGU6CVR1ZSBBcHIgMTMgMDk6NTk6MDkgMjAxMCArMDIwMAotCi0gICAgNzR4eF83eHg6IENQQ0k3NTA6IEFkZCBFQ0Mgc3VwcG9ydCBvbiBlc2QgQ1BDSS1DUFUvNzUwIGJvYXJkCi0KLSAgICBBZGQgRUNDIHN1cHBvcnQgZm9yIEREUiBSQU0gZm9yIE1WNjQzNjAgb24gZXNkIENQQ0ktQ1BVLzc1MCBib2FyZC4KLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIHRoZSAicGxkdmVyIiBjb21tYW5kIHRvIGRpc3BsYXkgdGhlIENQTEQKLSAgICByZXZpc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDFmOWYzY2Y2Y2NiY2NhZTFjMWVkZmYwMWVjMjBmZTJhNTg2Yjk3MDEKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgMjQgMDA6MDY6MDAgMjAxMCArMTAwMAotCi0gICAgc2M1MjA6IEZpeCBtaW5vciBEUkFNIENvbnRyb2xsZXIgU2V0dXAgYnVnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgZDIwMDUzZWZkZjMyOGQ5N2EwMTg1MzY2ODlmYzU1ZGY0ZmFmMTA5NAotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTo1OSAyMDEwICsxMDAwCi0KLSAgICBzYzUyMDogVXBkYXRlIHRvIG5ldyBBTUQgQ29weXJpZ2h0Ci0KLSAgICBBTUQgcmVjZW50bHkgY2hhbmdlZCB0aGUgbGljZW5zaW5nIG9mIHRoZSBSQU0gc2l6aW5nIGNvZGUgdG8gdGhlCi0gICAgR1BMdjIgKG9yIGF0IHlvdXIgb3B0aW9uIGFueSBsYXRlciB2ZXJzaW9uKQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDg4MGM1OWU1YWRkMzY4MWJkNGRjYTE0ZDJmZDIwMTUyYmVlN2FkMTQKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NTggMjAxMCArMTAwMAotCi0gICAgZU5FVDogSW1wbGVtZW50IGVORVQgV2F0Y2hkb2cKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBmMmE1NTA1NWU5YjE5ZjNlYmE5ZGU5N2ZmNDU0Y2Y4YmZlZjI1NDY4Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjU3IDIwMTAgKzEwMDAKLQotICAgIGVORVQ6IFVzZSBTQzUyMCBNTUNSIHRvIHJlc2V0IGVORVQgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA0YTRjMzFhZTA4ZDRkY2FiZTM0ODAxM2UxMzVkZTI4YjAxYzI5YmYwCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjU2IDIwMTAgKzEwMDAKLQotICAgIGVORVQ6IEFkZCBQQy9BVCBjb21wYXRpYmlsaXR5IHNldHVwIGZ1bmN0aW9uCi0KLSAgICBUaGUgZU5FVCB1c2VzIHRoZSBzYzUyMCBzb2Z0d2FyZSB0aW1lcnMgcmF0aGVyIHRoYW4gdGhlIFBDL0FUIGNsb25lcwotCi0gICAgU2V0IGFsbCBpbnRlcnJ1cHRzIGFuZCB0aW1lcnMgdXAgdG8gYmUgUEMvQVQgY29tcGF0aWJsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDhmZDgwNTYzMmY5NWU1ZTgzNGYzMTJhNTFhYTk2OWJmMWQ5OWM0MWIKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NTUgMjAxMCArMTAwMAotCi0gICAgZU5FVDogQWRkIHN1cHBvcnQgZm9yIG9uYm9hcmQgUlRMODEwMEIgKFJUTDgxMzkpIGNoaXBzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgMjFlNjdlNzk2YmIxZDU5YTQ4NGRjZTJiNDIwM2Q2MWJmMWZkNWJlOAotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTo1NCAyMDEwICsxMDAwCi0KLSAgICBzYzUyMDogQm9hcmQgU3BlY2lmaWMgUENJIEluaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAwMjc4MjE2Yjc2ZmMxZTVkYmY0Y2JkMTBkNWQ3MzQzMjMwMzljMzZmCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjUzIDIwMTAgKzEwMDAKLQotICAgIHNjNTIwOiBNb3ZlIFBDSSBkZWZpbmVzIHRvIFBDSSBpbmNsdWRlIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA0ZjE5N2MzMGU1Y2IzMDA1OTA5NDAyYjdmYzYzMGNiMDkyZWVmMDJmCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjUyIDIwMTAgKzEwMDAKLQotICAgIGVORVQ6IEZpeCBDT05GSUdfU1lTX0haIHRvIGJlIDEwMDAKLQotICAgIFRoZSBjbG9jayBpbnRlcnVwdCBoYXMgYWx3YXlzIGJlZW4gMWtIeiBhcyBwZXIgdGltZXJfaW5pdCgpIGluCi0gICAgL2FyY2gvaTM4Ni9jcHUvc2M1MjAvc2M1MjBfdGltZXIuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDZmZDQ0NWMzMjg2MGJiMDZlOWE2OGI1MTY4NDVhMWJiZjdjMzc4ODkKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NTEgMjAxMCArMTAwMAotCi0gICAgZU5FVDogRml4IEZsYXNoIFdyaXRlCi0KLSAgICBPbmJvYXJkIEFNRCBGbGFzaCBjaGlwIGRvZXMgbm90IHN1cHBvcnQgYnVmZmVyZWQgd3JpdGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgNTIwNDU2NmU1M2EzYzUxOWU4Nzk1NDgwZDA1NjYzNWJjNjRiMTFjZAotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTo1MCAyMDEwICsxMDAwCi0KLSAgICBzYzUyMDogQWxsb3cgYm9hcmRzIHRvIG92ZXJyaWRlIHVkZWxheQotCi0gICAgSWYgdGhlIGJvYXJkIGhhcyBhIGhpZ2ggcHJlY2lzaW9uIG1pY28tc2Vjb25kIHRpbWVyLCBpdCBtYWtlZCBzZW5zZSB0byB1c2UKLSAgICBpdCBpbnN0ZWFkIG9mIHRoZSBvbi1jaGlwIG9uZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDk1ZmZhYmEzOTA0MjA2NGM1ZWI2ODQwNDg5NGZkNmIwZjFkNmEzZTMKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgMjQgMDA6MDU6NDkgMjAxMCArMTAwMAotCi0gICAgeDg2OiBGaXggc3VwcG9ydCBmb3IgYm9vdGluZyBiekltYWdlCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgbmV3ZXIgKHVwIHRvIDIuNi4zMykga2VybmVscwotCi0gICAgQWRkIHpib290IGNvbW1hbmQgd2hpY2ggdGFrZXMgdGhlIGFkZHJlc3Mgb2YgYSBiekltYWdlIGFzIGl0cyBmaXJzdAotICAgIGFyZ3VtZW50IGFuZCAob3B0aW9uYWxseSkgdGhlIHNpemUgb2YgdGhlIGJ6SW1hZ2UgYXMgdGhlIHNlY29uZCBhcmd1bWVudAotICAgICh0aGUgc2Vjb25kIGFyZ3VtZW50IGlzIG5lZWRlZCBmb3Igb2xkZXIga2VybmVscyB3aGljaCBkbyBub3QgaW5jbHVkZQotICAgIHRoZSBiekltYWdlIHNpemUgaW4gdGhlIGhlYWRlcikKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA3OWVhNmI4NzAxMWMwNTI0Y2VkMzEzNTllMmJlN2FhYzk3YzI5ZDBhCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjQ4IDIwMTAgKzEwMDAKLQotICAgIHg4NjogUHJvdmlkZSB3ZWFrIFBDL0FUIGNvbXBhdGliaWxpdHkgc2V0dXAgZnVuY3Rpb24KLQotICAgIEl0IGlzIHBvc3NpYmx5IHRvIHNldHVwIHg4NiBib2FyZHMgdG8gdXNlIG5vbi1QQy9BVCBjb25maWd1cmF0aW9ucy4gRm9yCi0gICAgZXhhbXBsZSwgdGhlIHNjNTIwIGlzIGFuIHg4NiBDUFUgd2l0aCBQQy9BVCBhbmQgbm9uLVBDL0FUIHBlcmlwaGVyYWxzLgotICAgIFRoaXMgZnVuY3Rpb24gYWxsb3dzIHRoZSBib2FyZCB0byBzZXQgaXRzZWxmIHVwIGZvciBtYXhpbXVtIFBDL0FUCi0gICAgY29tcGF0aWJpbGl0eSBqdXN0IGJlZm9yZSBib290aW5nIHRoZSBMaW51eCBrZXJuZWwgKHRoZSBMaW51eCBrZXJuZWwKLSAgICAnanVzdCB3b3JrcycgaWYgZXZlcnl0aGluZyBpcyBQQy9BVCBjb21wbGlhbnQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgYmYxNjUwMGY3OWZkZjI2NTNhMjg2YjQwYmI2MDFjYjE4NWFjNDY3NQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTo0NyAyMDEwICsxMDAwCi0KLSAgICB4ODY6IFVzZSBDT05GSUdfU0VSSUFMX01VTFRJCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgMTY3Y2RhZDEzNzI5MTdiYzExYzYzNmMzNTlhYWQwMjYyNTI5MWZhOQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTo0NiAyMDEwICsxMDAwCi0KLSAgICBTRVJJQUw6IEVuYWJsZSBwb3J0LW1hcHBlZCBhY2Nlc3MKLQotICAgIFRoZSB4ODYgYXJjaGl0ZWN0dXJlIGV4Y2x1c2l2ZWx5IHVzZXMgUG9ydC1NYXBwZWQgSS9PIChpbmIvb3V0YikgdG8gYWNjZXNzCi0gICAgdGhlIDE2NTUwIFVBUlRzLiBUaGlzIHBhdGNoIG1pbWljcyBob3cgTGludXggc2VsZWN0cyBiZXR3ZWVuIE1lbW9yeS1NYXBwZWQKLSAgICBhbmQgUG9ydC1NYXBwZWQgSS9PLiBUaGlzIGFsbG93cyB4ODYgYm9hcmRzIHRvIHVzZSBDT05GSUdfU0VSSUFMX01VVExJIGFuZAotICAgIGRyb3AgdGhlIGN1c3RvbSBzZXJpYWwgcG9ydCBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAxNTNjMmQ5ZjIzOTdlOGI2Y2EwM2NmZWJiNGU5NjY2ZWEwYjA2MzdjCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjQ1IDIwMTAgKzEwMDAKLQotICAgIHg4NjogRml4IGNvcHlpbmcgb2YgUmVhbC1Nb2RlIGNvZGUgaW50byBSQU0KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAyZmIxYmM0ZjUzNjE4NzQzYjkyYTQ4NzYzZDdhYWEwZWNlOWFkOThmCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjQ0IDIwMTAgKzEwMDAKLQotICAgIHg4NjogUGFzcyByZWxvY2F0aW9uIG9mZnNldCBpbnRvIEdsb2JhbCBEYXRhCi0KLSAgICBJbiBvcmRlciB0byBsb2NhdGUgdGhlIDE2LWJpdCBCSU9TIGNvZGUsIHdlIG5lZWQgdG8ga25vdyB0aGUgcmVsb2FjdGlvbgotICAgIG9mZnNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBjMTRhMzY2OWIyMmQzZTQzMGI0MTZjZGVlOTJiNzUxZjEzNjk3YTFmCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjQzIDIwMTAgKzEwMDAKLQotICAgIHg4NjogTW92ZSBHRFQgdG8gYSBzYWZlIGxvY2F0aW9uIGluIFJBTQotCi0gICAgQ3VycmVudGx5LCB0aGUgR0RUIGlzIGVpdGhlciBsb2NhdGVkIGluIEZMQVNIIG9yIGluIHRoZSBub24tcmVsb2NhdGVkCi0gICAgVS1Cb290IGltYWdlIGluIFJBTS4gQm90aCBvZiB0aGVzZSBsb2NhdGlvbnMgYXJlIHVuc2FmZSBhcyB0aG9zZQotICAgIGxvY2F0aW9ucyBjYW4gYmUgZXJhc2VkIGR1cmluZyBhIFUtQm9vdCB1cGRhdGUuIE1vdmUgdGhlIEdEVCBpbnRvIHRoZQotICAgIGhpZ2hlc3QgYXZhaWxhYmxlIG1lbW9yeSBsb2NhdGlvbiBhbmQgcmVsb2NhdGUgVS1Cb290IHRvIGp1c3QgYmVsb3cgaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAwNzdlMTk1OGNhNGFmZTEyZDg4MDQzYjEyM2RlZDA1OGM1MWI4OWY3Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjQyIDIwMTAgKzEwMDAKLQotICAgIHg4NjogQWRkIFJBTSBib290c3RyYXAgZnVuY3Rpb25hbGl0eQotCi0gICAgQWRkIGEgcGFyYW1ldGVyIHRvIHRoZSAzMi1iaXQgZW50cnkgdG8gaW5kaWNhdGUgaWYgZW50cnkgaXMgZnJvbSBSZWFsCi0gICAgTW9kZSBvciBub3QuIElmIGVudHJ5IGlzIGZyb20gUmVhbCBNb2RlLCBleGVjdXRlIHRoZSBkZXN0cnVjdGl2ZSAnc2l6ZXInCi0gICAgcm91dGluZSB0byBkZXRlcm1pbmUgbWVtb3J5IHNpemUgYXMgd2UgYXJlIGJvb3RpbmcgY29sZCBhbmQgcnVubmluZyBpbgotICAgIEZsYXNoLiBJZiBub3QgZW50ZXJpbmcgZnJvbSBSZWFsIE1vZGUsIHdlIGFyZSBleGVjdXRpbmcgYSBVLUJvb3QgaW1hZ2UKLSAgICBmcm9tIFJBTSBhbmQgdGhlcmVmb3JlIHRoZSBtZW1vcnkgc2l6ZSBpcyBhbHJlYWR5IGtub3duIChhbmQgcnVubmluZwotICAgICdzaXplcicgd2lsbCBkZXN0cm95IHRoZSBydW5uaW5nIGltYWdlKQotCi0gICAgVGhlcmUgYXJlIG5vdyB0d28gMzItYml0IGVudHJ5IHBvaW50cy4gVGhlIGZpcnN0IGlzIHRoZSAnaW4gUkFNJyBlbnRyeQotICAgIHBvaW50IHdoaWNoIGV4aXN0cyBhdCB0aGUgc3RhcnQgb2YgdGhlIFUtQm9vdCBiaW5hcnkgaW1hZ2UuIEFzIHN1Y2gsCi0gICAgeW91IGNhbiBsb2FkIHUtYm9vdC5iaW4gaW4gUkFNIGFuZCBqdW1wIGRpcmVjdGx5IHRvIHRoZSBsb2FkIGFkZHJlc3MKLSAgICB3aXRob3V0IG5lZWRpbmcgdG8gY2FsY3VsYXRlIGFueSBvZmZzZXRzLiBUaGUgc2Vjb25kIGVudHJ5IHBvaW50IGlzCi0gICAgdXNlZCBieSB0aGUgcmVhbC10by1wcm90ZWN0ZWQgbW9kZSBzd2l0Y2gKLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBjaGFuZ2VzIFRFWFRfQkFTRSB0byAweDYwMDAwMDAgKGluIFJBTSkuIFlvdSBjYW4gbG9hZAotICAgIHRoZSByZXN1bHRpbmcgaW1hZ2UgYXQgMHg2MDAwMDAwIGFuZCBzaW1wbGUgZ28gMHg2MDAwMDAwIGZyb20gdGhlIHUtYm9vdAotICAgIHByb21wdAotCi0gICAgSG9wZWZ1bGx5IGEgbGF0ZXIgcGF0Y2ggd2lsbCBjb21wbGV0ZWx5IGVsbGltaW5hdGUgYW55IGRlcGVuZGVuY3kgb24KLSAgICBURVhUX0JBU0UgbGlrZSBhIHJlbG9jYXRhYmxlIGxpbnV4IGtlcm5lbCAocGVyZmVjdCB3b3JsZCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA3NTk1OThmODJmMDJjYzg0NjE0NDUwODA3Y2I1ZGU0M2NhMThhMzM5Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjQxIDIwMTAgKzEwMDAKLQotICAgIHg4NjogU3BsaXQgc2M1MjAgbWVtb3J5IHNpemluZyB2ZXJzdXMgcmVwb3J0aW5nCi0KLSAgICBUaGlzIHBhdGNoIGFsbG93cyB0aGUgbG93LWxldmVsIGFzc2VtYmxlciBib290LXN0cmFwIHRvIG9idGFpbiB0aGUgUkFNCi0gICAgc2l6ZSB3aXRob3V0IGNhbGxpbmcgdGhlIGRlc3RydWN0aXZlICdzaXplcicgcm91dGluZS4gVGhpcyBhbGxvd3MKLSAgICBib290LXN0cmFwcGluZyBmcm9tIGEgVS1Cb290IGltYWdlIGxvYWRlZCBpbiBSQU0KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA0ZGJhMzMzYjNjN2IzNDA3M2IwNDM5Y2M5NDI4NzdmOTg0MDM2MzJjCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgQXByIDI0IDAwOjA1OjQwIDIwMTAgKzEwMDAKLQotICAgIHg4NjogRml4IHNjNTIwIG1lbW9yeSBzaXplIHJlcG9ydGluZwotCi0gICAgVGhlcmUgaXMgYW4gZXJyb3IgaW4gaG93IHRoZSBhc3NlbWJsZXIgdmVyc2lvbiBvZiB0aGUgc2M1MjAgbWVtb3J5IHNpemUKLSAgICByZXBvcnRpbmcgY29kZSB3b3Jrcy4gQXMgYSByZXN1bHQsIGl0IHdpbGwgb25seSBldmVyIHJlcG9ydCBhdCBtb3N0IHRoZQotICAgIHNpemUgb2Ygb25lIGJhbmsgb2YgUkFNCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgOWUwOGVmY2ZlZTIyNTcwYmIzYTllYTM4NGJmNGQ2MGIzNzhmNjA5MgotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTozOSAyMDEwICsxMDAwCi0KLSAgICB4ODY6IEZpeCBkb19nb19leGVjKCkKLQotICAgIFRoaXMgd2FzIGJyb2tlbiBhIGxvbmcgdGltZSBhZ28gYnkgYTQ5ODY0NTkzZTA4M2E1ZDA3NzlmYjljYTk4ZTVhMGYyMDUzMTgzZAotICAgIHdoaWNoIG11bmdlZCB0aGUgTklPUyBhbmQgeDg2IGRvX2dvX2V4ZWMoKQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDQzM2ZmMmJkYmNjYzUxOTAxODk1MjgzMDVlNGVkNmY3MjA1ZGJhZmQKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgMjQgMDA6MDU6MzggMjAxMCArMTAwMAotCi0gICAgeDg2OiBBZGQgcmVnaXN0ZXIgZHVtcCB0byBjcmFzaCBoYW5kbGVycwotCi0gICAgU2hhbWVsZXNzbHkgc3RlYWwgdGhlIExpbnV4IHg4NiBjcmFzaCBoYW5kbGluZyBjb2RlIGFuZCBzaG92ZSBpdCBpbnRvCi0gICAgVS1Cb290IChjb29sIC0gaXQgZml0cykuIEJlIHN1cmUgdG8gaW5jbHVkZSBzdWl0YWJsZSBhdHRyaWJ1dGlvbiB0bwotICAgIExpbnVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgNjRhMGE0OTk1ZTc5ZWY5ODEzYmI1MWQ1ZjFmZjM1YWU1ZGFiZmM3ZQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTozNyAyMDEwICsxMDAwCi0KLSAgICB4ODY6IEZpeCBNTUNSIEFjY2VzcwotCi0gICAgQ2hhbmdlIHNjNTIwIE1NQ1IgQWNjZXNzIHRvIHVzZSBtZW1vcnkgYWNjZXNzb3IgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgNTM1YWQyZGIwNjlhYWU2ZDFkMzZmYzA1YzMxY2JkOGEyYjNkODgzMQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTozNiAyMDEwICsxMDAwCi0KLSAgICB4ODY6ICNpZmRlZiBvdXQgZ2V0ZW52X0lQYWRkcigpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgNzIxYzM2NzA1YTllZmM3YjY3Zjc4ZDBjM2U4NDg1ZTRmMWI4YmNjOQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IEFwciAyNCAwMDowNTozNSAyMDEwICsxMDAwCi0KLSAgICB4ODY6IEFkZCB1bmFsaWduZWQuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDkzYzdlNzBmNjQ4ZmI4MTdlNTE5ZjZlMTYzYjdlZjliZWZjMjczNDkKLUF1dGhvcjogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgotRGF0ZToJV2VkIEFwciA3IDE4OjMwOjA4IDIwMTAgKzAzMDAKLQotICAgIFBPU1Q6IEFkZGVkIEVDQyBtZW1vcnkgdGVzdCBmb3IgbXBjODN4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgWmFpZG1hbiA8bWljaGFlbC56YWlkbWFuQGdtYWlsLmNvbT4KLQotICAgIEZpeGVkIG1pbm9yIGNvZGluZyBzdHlsZSBpc3N1ZS4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOGNkODUyODI0ZDkxZTIzMmYxZjgyMGEwNzcyYzNjMWQ4YWY4NGIwNQotQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBNYXIgMjcgMTc6MTQ6MzYgMjAxMCArMDEwMAotCi0gICAgY21kX29uZW5hbmQuYzogbW92ZWQgdG8gc3RhbmRhcmQgc3ViY29tbWFuZCBoYW5kbGluZwotCi0gICAgT24gdGhlIGZseSBhbHNvIGZpeGVkIHRoZSBmb2xsb3dpbmcgdGhpbmdzOgotICAgIC0gd3JpdGUgaGVscCB0YWxrZWQgYWJvdXQgYSBwYXJhbWV0ZXIgb29iLCBidXQgdGhhdCBvbmUgd2FzIG5vdCB1c2VkLCBzbwotICAgICAgcmVtb3ZlZCBpdCBmcm9tIHRoZSBoZWxwIG1lc3NhZ2UuCi0gICAgLSB0aGUgdGVzdCBjb21tYW5kIGFsc28gYWxsb3dlZCBhIGZvcmNlIHN1YmNvbW1hbmQgYnV0IGRpZG4ndCB1c2UgaXQuCi0gICAgICBlbGltaW5hdGVkIHRoZSBjb2RlLgotICAgIC0gZG9fb25lbmFuZCBtYWRlIHN0YXRpYwotICAgIC0gZG9fb25lbmFuZCBjb250YWluZWQKLQlpbnQgYmxvY2tzaXplOwotCS4uLgotCW10ZCA9ICZvbmVuYW5kX210ZDsKLQl0aGlzID0gbXRkLT5wcml2OwotCWJsb2Nrc2l6ZSA9ICgxIDw8IHRoaXMtPmVyYXNlX3NoaWZ0KTsKLSAgICAgIEFzIGJsb2Nrc2l6ZSB3YXMgbm90IHVzZWQgdGhlIGxhc3QgdHdvIHN0YXRlbWVudHMgd2VyZSB1bm5lZWRlZCBzbwotICAgICAgcmVtb3ZlZCB0aGVtLgotICAgICAgVGhlIGZpcnN0IHN0YXRlbWVudCAobXRkID0gLi4uLikgYXNzaWducyB0byBhIGdsb2JhbC4gTm90IHN1cmUgaWYgaXQKLSAgICAgIGlzIG5lZWRlZCwgYW5kIHNpbmNlIEkgY291bGQgbm90IHRlc3QgdGhpcywgbGVmdCB0aGUgbGluZSBmb3Igbm93Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotY29tbWl0IDM4ODJkN2E1YTU3ZWI4ZDFmNDE1NzA1MjI0NDViYWI2MWM2MjhlNmYKLUF1dGhvcjogTm9yYmVydCB2YW4gQm9saHVpcyA8bnZib2xodWlzQGFpbXZhbGxleS5ubD4KLURhdGU6CUZyaSBNYXIgMTkgMTU6MzQ6MjUgMjAxMCArMDEwMAotCi0gICAgcHBjOiB1bnVzZWQgbWVtb3J5IHJlZ2lvbiB0b28gY2xvc2UgdG8gY3VycmVudCBzdGFjayBwb2ludGVyCi0KLSAgICBUaGlzIGF2b2lkcyBhIHBvc3NpYmxlIG92ZXJ3cml0ZSBvZiB0aGUgKGVuZCBvZikgcmFtZGlzayBieSB1LWJvb3QuCi0gICAgVGhlIHVudXNlZCBtZW1vcnkgcmVnaW9uIGZvciBwcGMgYm9vdCBjdXJyZW50bHkgc3RhcnRzIDFrIGJlbG93IHRoZQotICAgIGRvX2Jvb3RtLT5ib290bV9zdGFydC0+YXJjaF9sbWJfcmVzZXJ2ZSBzdGFjayBwdHIuIFRoaXMgaXNuJ3QgZW5vdWdoIHNpbmNlCi0gICAgZG9fYm9vdG0tPmRvX2Jvb3RtX2xpbnV4LT5ib290X3JlbG9jYXRlX2ZkdCBjYWxscyBwcmludGYgd2hpY2ggbWF5Ci0gICAgdmVyeSB3ZWxsIHVzZSBtb3JlIHRoYW4gMWsgc3RhY2sgc3BhY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb3JiZXJ0IHZhbiBCb2xodWlzIDxudmJvbGh1aXNAYWltdmFsbGV5Lm5sPgotCi1jb21taXQgNGI0MmM5MDU5ZTE2NTUwMDM1MzE3NDYwMWE4ZTk3YjJjZjgxZDNmNAotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEFwciAxMyAxMzoxNjowMyAyMDEwIC0wNTAwCi0KLSAgICBhbGxvdyBwcmludF9zaXplIHRvIHByaW50IGxhcmdlIG51bWJlcnMgb24gMzItYml0IHN5c3RlbXMKLQotICAgIE1vZGlmeSBwcmludF9zaXplKCkgc28gdGhhdCBpdCBjYW4gYWNjZXB0IG51bWJlcnMgbGFyZ2VyIHRoYW4gNEdCIG9uIDMyLWJpdAotICAgIHN5c3RlbXMuCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZGlzcGxheSB0ZXJhYnl0ZSwgcGV0YWJ5dGUsIGFuZCBleGFieXRlIHNpemVzLiAgQ2hhbmdlIHRoZQotICAgIG91dHB1dCB0byB1c2UgSW50ZXJuYXRpb25hbCBFbGVjdHJvdGVjaG5pY2FsIENvbW1pc3Npb24gYmluYXJ5IHByZWZpeCBzdGFuZGFyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1MmRiYWM2OWMyN2RlZTY3YTRjMDUxYjEwNTVkOTNiMGFjNGUyMDYyCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXByIDEzIDEzOjE2OjAyIDIwMTAgLTA1MDAKLQotICAgIGZpeCBwcmludF9zaXplIHByaW50aW5nIGZyYWN0aW9uYWwgZ2lnYWJ5dGUgbnVtYmVycyBvbiAzMi1iaXQgcGxhdGZvcm1zCi0KLSAgICBJbiBwcmludF9zaXplKCksIHRoZSBtYXRoIHRoYXQgY2FsY3VsYXRlcyB0aGUgZnJhY3Rpb25hbCByZW1haW5kZXIgb2YgYSBudW1iZXIKLSAgICB1c2VkIHRoZSBzYW1lIGludGVnZXIgc2l6ZSBhcyBhIHBoeXNpY2FsIGFkZHJlc3MuICBIb3dldmVyLCB0aGUgIjEwICoiIGZhY3RvcgotICAgIG9mIHRoZSBhbGdvcml0aG0gbWVhbnMgdGhhdCBhIGxhcmdlIG51bWJlciAoZS5nLiAxLjVHQikgY2FuIG92ZXJmbG93IHRoZQotICAgIGludGVnZXIgaWYgd2UncmUgcnVubmluZyBvbiBhIDMyLWJpdCBzeXN0ZW0uICBUaGVyZWZvcmUsIHdlIG5lZWQgdG8KLSAgICBkaXNhc3NvY2lhdGUgdGhpcyBmdW5jdGlvbiBmcm9tIHRoZSBzaXplIG9mIGEgcGh5c2ljYWwgYWRkcmVzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNWNlYmI0ZmQ2MGZlZmM3NzAwYTQ4NmJiNzRmZWNjNjZjMDdhY2ZmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBNYXkgNSAwMzoyMDozMCAyMDEwIC0wNDAwCi0KLSAgICBCbGFja2ZpbjogVFdJL0kyQzogaW1wbGVtZW50IG11bHRpYnVzIHN1cHBvcnQKLQotICAgIEluIG9yZGVyIHRvIGRvIHRoaXMgY2xlYW5seSwgdGhlIHJlZ2lzdGVyIGFjY2Vzc2VzIGhhdmUgdG8gYmUgY29udmVydGVkIHRvCi0gICAgYSBDIHN0cnVjdCAoYmFzZSBwb2ludGVyKSwgc28gZG8gdGhhdCBpbiB0aGUgcHJvY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGI0Mzc3ZTEyZTlhYTBiM2JmMmRjYWUwYTBmMDJlYzkwODYzMzg1MDYKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDE2IDE3OjIyOjIxIDIwMTAgKzAxMDAKLQotICAgIEFkZCBTUEkgc3VwcG9ydCB0byBteDUxZXZrIGJvYXJkCi0KLSAgICBUaGUgcGF0Y2ggYWRkcyBTUEkgZGV2aWNlcyB0byB0aGUgbXg1MWV2ayBib2FyZC4KLSAgICBUaGUgTUMxMzg5MiBjaGlwIChQTUlDKSBpcyBzdXBwb3J0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGQzNTg4YTU1ZDRhMDQxZjIyMDgyOTBiOGI2ZjljZWNiZGFkMTc5YWMKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglTdW4gQXByIDE4IDE5OjI3OjQ0IDIwMTAgKzAyMDAKLQotICAgIE1YOiBBZGRlZCBkZWZpbml0aW9uIGZpbGUgZm9yIE1DMTM4OTIKLQotICAgIFRoZSBNQzEzODkyIGlzIGEgUG93ZXIgQ29udHJvbGxlciB1c2VkIHdpdGggcHJvY2Vzc29ycwotICAgIG9mIHRoZSBmYW1pbHkgTVguNTEuIFRoZSBmaWxlIGFkZHMgZGVmaW5pdGlvbnMgdG8gYmUgdXNlZCB0byBzZXR1cAotICAgIHRoZSBpbnRlcm5hbCByZWdpc3RlcnMgdmlhIFNQSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgZDIwNWRkY2ZjNWI5MDVlZmYwMjNkNWFjYWMzOTU3MjFkODBhOTJjNwotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVN1biBBcHIgNCAyMjo0MzozOCAyMDEwICswMjAwCi0KLSAgICBTUEk6IGFkZGVkIHN1cHBvcnQgZm9yIE1YNTEgdG8gbXhjX3NwaQotCi0gICAgVGhpcyBwYXRjaCBhZGQgU1BJIHN1cHBvcnQgZm9yIHRoZSBNWDUxIHByb2Nlc3Nvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgZTk4ZWNkNzExMDJkZTlkOTdiZDgyYmUyNDdlZDkwOTI2MGZiNjcxYgotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CUZyaSBBcHIgMTYgMTc6MTM6NTQgMjAxMCArMDIwMAotCi0gICAgTVgzMTogQWRkIHN1cHBvcnQgZm9yIFBNSUMgdG8gdGhlIFFPTkcgbW9kdWxlCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFBNSUMgKE1DMTM3ODMpIGNvbnRyb2xsZXIKLSAgICBhbmQgZW5hYmxlcyBjaGFyZ2luZyBvZiB0aGUgUlRDIGJhdHRlcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGRmZTVlMTRmYTI2M2ViOGYxYTlmMDg3ZjAyODQ3ODhlNzU1OTgyMWQKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglGcmkgQXByIDE2IDE3OjExOjE5IDIwMTAgKzAyMDAKLQotICAgIE1YOiBSVEMxMzc4MyB1c2VzIGdlbmVyYWwgZnVuY3Rpb24gdG8gYWNjZXNzIFBNSUMKLQotICAgIFRoZSBSVEMgaXMgcGFydCBvZiB0aGUgRnJlZXNjYWxlJ3MgUE1JQyBjb250cm9sbGVyLgotICAgIFVzZSBnZW5lcmFsIGZ1bmN0aW9uIHRvIGFjY2VzcyB0byBQTUlDIGludGVybmFsIHJlZ2lzdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotICAgIFRlc3RlZC1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotCi1jb21taXQgMjhiYjZkMzRkM2Y0MzFiN2IwMDQ0NGUyZjgyOWIyYzA0ZjVkYWY0ZAotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVN1biBBcHIgNCAyMzowODowMyAyMDEwICswMjAwCi0KLSAgICBNWDogQWRkZWQgRnJlZXNjYWxlIFBvd2VyIE1hbmFnZW1lbnQgRHJpdmVyCi0KLSAgICBUaGUgcGF0Y2ggYWRkIHN1cHBvcnRzIGZvciB0aGUgRnJlZXNjYWxlJ3MgUG93ZXIKLSAgICBNYW5hZ2VtZW50IENvbnRyb2xsZXIgKGtub3duIGFzIEF0bGFzKSB1c2VkIHRvZ2V0aGVyIHdpdGggaS5NWDMxLzUxCi0gICAgcHJvY2Vzc29ycy4gSXQgd2FzIHRlc3RlZCB3aXRoIGEgTUMxMzc4MyAoTVgzMSkgYW5kCi0gICAgTUMxMzg5MiAoTVg1MSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGJhNmFkZWI0OGU3MWY3ZjFiNzkxYjZlOTg5OTlhNTY4MGQ5MTliMjYKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJRnJpIEFwciAyMyAyMDozMDo0OSAyMDEwICswMjAwCi0KLSAgICBpLk1YMzE6IEFjdGl2YXRlIE5BTkQgc3VwcG9ydCBmb3IgaS5NWDMxIExpdGVraXQgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA2MDM4MWQ2ODc4ODVjMGUyMTAwNjU3Y2E3M2U5N2UzOGM0NjA0ZjVlCi1BdXRob3I6IEZhYmlvIEVzdGV2YW0gPGZhYmlvZXN0ZXZhbUB5YWhvby5jb20+Ci1EYXRlOglGcmkgQXByIDIzIDA2OjMyOjAxIDIwMTAgLTA3MDAKLQotICAgIE1YNTE6IEZpeCBNWDUxIENQVSBkZXRlY3QgbWVzc2FnZQotCi0gICAgRml4IE1YNTEgQ1BVIGRldGVjdCBtZXNzYWdlLgotCi0gICAgT3JpZ2luYWwgc3RyaW5nIHdhczoKLSAgICBDUFU6ICAgRnJlZXNjYWxlIGkuTVg1MSBmYW1pbHkgMy4wViBhdCA4MDAgTUh6Ci0KLSAgICB3aGljaCBjYW4gYmUgbWlzaW50ZXJwcmV0ZWQgYXMgIDMuMCBWb2x0cyBpbnN0ZWFkIG9mIHRoZSBzaWxpY29uIHJldmlzaW9uLgotCi0gICAgLGNoYW5nZSBpdCB0bzoKLSAgICBDUFU6ICAgRnJlZXNjYWxlIGkuTVg1MSBmYW1pbHkgcmV2My4wIGF0IDgwMCBNSHoKLQotICAgIFNpZ25lZC1vZmYtYnk6IEZhYmlvIEVzdGV2YW0gPGZhYmlvLmVzdGV2YW1AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDY4YzA3YTBjMjE1YTY0ODI2ZWQxM2MyZjliMDBhNmQzYjI5ODgyMmUKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglTdW4gQXByIDE4IDIwOjAxOjAxIDIwMTAgKzAyMDAKLQotICAgIE1YNTFldms6IFJlbW92ZWQgd2FybmluZ3MKLQotICAgIENoYW5nZXMgcmVmbGVjdCBtb2RpZmljYXRpb25zIGluIHRoZSBmc2xfZXNkaGMgZHJpdmVyCi0gICAgKHRoZSBjbGtfZW5hYmxlIGZpZWxkIHdhciByZW1vdmVkIGluIHRoZSBjb25maWd1cmF0aW9uIHN0cnVjdHVyZSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDg3ZGI1OGRjYTQ3ZjkzZjlmYjNiNGVkMDE5NmRkN2EzZjVkZjFjYjkKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAyMSAxMzo1MjozOCAyMDEwICswMjAwCi0KLSAgICB0eDI1OiBmaXggY3Jhc2ggd2hpbGUgYm9vdGluZyBMaW51eAotCi0gICAgQ3VycmVudGx5IGJvb3RpbmcgTGludXggb24gVFgyNSBib2FyZCBkb2Vzbid0IHdvcmsKLSAgICBzaW5jZSB0aGVyZSBpcyBubyBjb3JyZWN0IG1hY2gtaWQgYW5kIGJvb3QgcGFyYW1ldGVycwotICAgIHNldHVwIGZvciB0eDI1IGJvYXJkLiBGaXggaXQgbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBDYzogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCBiODhjNTk4OGRiMTc2YTBmOWRlNTU5OGQ1MTY3ZWUyNDk4NjM3ZDQwCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXByIDEzIDIxOjExOjUzIDIwMTAgLTA1MDAKLQotICAgIGNvbmZpZ3M6IHJlbW92ZSB1bnVzZWQgQ09ORklHX0NPTU1BTkRfSElTVE9SWQotCi0gICAgJCBnaXQgZ3JlcCBDT05GSUdfQ09NTUFORF9ISVNUT1JZCi0gICAgQ0hBTkdFTE9HOgkgIENPTkZJR19DT01NQU5EX0hJU1RPUlkKLSAgICBpbmNsdWRlL2NvbmZpZ3MvQVAxMDAwLmg6I2RlZmluZSBDT05GSUdfQ09NTUFORF9ISVNUT1JZIDEKLSAgICBpbmNsdWRlL2NvbmZpZ3Mva2V5bWlsZS1jb21tb24uaDojZGVmaW5lIENPTkZJR19DT01NQU5EX0hJU1RPUlkJICAgIDEKLSAgICBpbmNsdWRlL2NvbmZpZ3MvbWFucm9sYW5kL2NvbW1vbi5oOiNkZWZpbmUgQ09ORklHX0NPTU1BTkRfSElTVE9SWQkJICAgIDEKLSAgICAkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDc3NjljNWJjMDY2MTUyOTM4NzBkMDBmYzgxMzY2Y2Q0M2JhMDYyM2EKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVHVlIEFwciAxMyAxNDo0NzozMiAyMDEwICswMjAwCi0KLSAgICBtdnNtcjogZml4IGxpbmsgZXJyb3IKLQotICAgIE1WU01SIGJvYXJkIHN1cHBvcnQgZG9lc24ndCBsaW5rIHNpbmNlIHJlY2VudCByZXdvcmsKLSAgICBvZiBVLUJvb3QgZGlyZWN0b3J5IHN0cnVjdHVyZS4gRml4IGl0IG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLSAgICBDYzogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotICAgIEFja2VkLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0gICAgRml4ZWQgbWVyZ2UgY29uZmxpY3QKLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNDMyNGRjNzJkZjU4NzllNWI2MTRjNGEzZjMyNjg4NDcyM2VkZTliNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgQXByIDI3IDE0OjE1OjI4IDIwMTAgLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZmluX21hYzogaG9vayB1cCBuZXcgd3JpdGVfaHdhZGRyIGZ1bmN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDNhYzlkNmM2NTBkOTRjNTE2NDVlZmE0NDZjMWQ5MTRjNTQ0MDk5MGQKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJVHVlIEFwciAyNyAyMDoyMDoyNyAyMDEwICswODAwCi0KLSAgICBuZXQ6IGV0aG9jOiBhZGQgd3JpdGVfaHdhZGRyIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNmM3YzQ0NDc4NmZjNDAyMjk5OTM2MmZjZTExOWM4YjczMWVlZGNiNAotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglUdWUgQXByIDI3IDIwOjE1OjEwIDIwMTAgKzA4MDAKLQotICAgIG5ldDogYWx0ZXJhX3RzZTogYWRkIHdyaXRlX2h3YWRkciBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGZiNTdlYzk3YjkwMjkxYzU4OTA4NzE2N2YxMDA0ODNhMDg5ODM3YmYKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDI3IDA3OjQzOjUyIDIwMTAgKzAyMDAKLQotICAgIG5ldDogZmVjX214YzogYWRkIHdyaXRlX2h3YWRkciBzdXBwb3J0Ci0KLSAgICB0ZXN0ZWQgb24gdGhlIG1hZ25lc2l1bSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBiNWNlNjNlZDEyYjRjZDgxZDIxMTYyMWFjYTBjMjIyYjIwZDJhNjkxCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CVR1ZSBBcHIgNiAyMjoyMTozMyAyMDEwICswNTMwCi0KLSAgICBuZXQ6a2lya3dvb2RfZWdpZ2EuYzogTUFDIGFkZHJlc3NlcyBwcm9ncmFtbWluZyB1c2luZyB3cml0ZV9od2FkZHIKLQotICAgIEFkZGVkIGEgbmV3IGZ1bmN0aW9uIGt3Z2JlX3dyaXRlX2h3YWRkciBmb3IgcHJvZ3JhbW1pbmcgZWdpZ2EKLSAgICBjb250cm9sbGVyJ3MgaGFyZHdhcmUgYWRkcmVzcy4KLSAgICBUaGlzIGZ1bmN0aW9uIHdpbGwgYmUgY2FsbGVkIGZvciBlYWNoIGVnaWdhIHBvcnQgYmVpbmcgdXNlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBlY2VlOTMyNGQ3MzU1NWU3NDQ1OTNmM2UwZDM4N2JlYzRjNTY2ZjU1Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gQXByIDI2IDExOjExOjQ2IDIwMTAgLTA3MDAKLQotICAgIFByb2dyYW0gbmV0IGRldmljZSBNQUMgYWRkcmVzc2VzIGFmdGVyIGluaXRpYWxpemluZwotCi0gICAgQWRkIGEgbmV3IGZ1bmN0aW9uIHRvIHRoZSBldGhfZGV2aWNlIHN0cnVjdCBmb3IgcHJvZ3JhbW1pbmcgYSBuZXR3b3JrCi0gICAgY29udHJvbGxlcidzIGhhcmR3YXJlIGFkZHJlc3MuCi0KLSAgICBBZnRlciBhbGwgbmV0d29yayBkZXZpY2VzIGhhdmUgYmVlbiBpbml0aWFsaXplZCBhbmQgdGhlIHByb3BlciBNQUMgYWRkcmVzcwotICAgIGZvciBlYWNoIGhhcyBiZWVuIGRldGVybWluZWQsIG1ha2UgYSBkZXZpY2UgZHJpdmVyIGNhbGwgdG8gcHJvZ3JhbSB0aGUKLSAgICBhZGRyZXNzIGludG8gdGhlIGRldmljZS4gIE9ubHkgZGV2aWNlIGluc3RhbmNlcyB3aXRoIHZhbGlkIHVuaWNhc3QgYWRkcmVzc2VzCi0gICAgd2lsbCBiZSBwcm9ncmFtbWVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0gICAgVGVzdGVkLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgVGVzdGVkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBUZXN0ZWQtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLQotY29tbWl0IGM5NjBiMTNlZDIyZDllYTU3MDk1NzM3OWY5ZjdmMmYzN2Q4N2VmMDgKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJVHVlIEFwciAyMCAxMjo0OTo1MiAyMDEwICswODAwCi0KLSAgICBuZXQ6IGFkZCBhbHRlcmEgdHJpcGxlIHNwZWVkcyBldGhlcm5ldCBtYWMgZHJpdmVyCi0KLSAgICBUaGlzIGRyaXZlciBzdXBwb3J0cyB0aGUgQWx0ZXJhIHRyaXBsZSBzcGVlZHMgMTAvMTAwLzEwMDAgZXRoZXJuZXQKLSAgICBtYWMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGY2NTY5ODg0YjQ1ZTQ4MGUyYzU3NWQ4NWNlODZhMjYzNmE0MWM2NmIKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJVGh1IEFwciAxNSAyMjozMjozOCAyMDEwICswODAwCi0KLSAgICBuZXQ6IGFkZCBvcGVuY29yZSAxMC8xMDAgZXRoZXJuZXQgbWFjIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBwb3J0cyB0aGUgb3BlbmNvcmUgMTAvMTAwIGV0aGVybmV0IG1hYyBkcml2ZXIgZXRob2MuYwotICAgIGZyb20gbGludXgga2VybmVsIHRvIHUtYm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYmQ3NWRiM2ZlYjlhOGU0MTIzYjc2MDA2ZGJlNTgyYjcxYWRiZjIyZgotQXV0aG9yOiBWYWxlbnRpbiBZYWtvdmVua292IDx5YWtvdmVua292QG5paXN0dC5ydT4KLURhdGU6CUZyaSBBcHIgMjMgMDk6NDA6MjMgMjAxMCArMDQwMAotCi0gICAgc21jOTExeCBkcml2ZXIgZnJhbWUgYWxpZ25tZW50IHBhdGNoCi0KLSAgICBTTVNDOTExeCBjaGlwcyBoYXZlIGFsaWdubWVudCBmdW5jdGlvbiB0byBhbGxvdyBmcmFtZSBwYXlsb2FkIGRhdGEKLSAgICAod2hpY2ggY29tZXMgYWZ0ZXIgMTQtYnl0ZXMgZXRoZXJuZXQgaGVhZGVyKSB0byBiZSBhbGlnbmVkIGF0IHNvbWUKLSAgICBib3VuZGFyeSB3aGVuIHJlYWRpbmcgaXQgZnJvbSBmaWZvICh1c3VhbGx5IC0gNCBieXRlcyBib3VuZGFyeSkuCi0gICAgVGhpcyBpcyBkb25lIGJ5IGluc2VydGluZyBmYWtlIHplcm9zIGJ5dGVzIEJFRk9SRSBhY3R1YWwgZnJhbWUgZGF0YSB3aGVuCi0gICAgcmVhZGluZyBmcm9tIFNNU0MncyBmaWZvLgotICAgIFRoaXMgZnVuY3Rpb24gY29udHJvbGxlZCBieSBSWF9DRkcgcmVnaXN0ZXIuIFRoZXJlIGFyZSBiaXRzIHRoYXQKLSAgICByZXByZXNlbnRzIGFtb3VudCBvZiBmYWtlIGJ5dGVzIHRvIGJlIGluc2VydGVkLgotCi0gICAgTGludXggdXNlcyBhbGlnbm1lbnQgb2YgNCBieXRlcy4gRXRoZXJuZXQgZnJhbWUgaGVhZGVyIGlzIDE0IGJ5dGVzIGxvbmcsCi0gICAgc28gd2UgbmVlZCB0byBhZGQgMiBmYWtlIGJ5dGVzIHRvIGdldCBwYXlsb2FkIGRhdGEgYWxpZ25lZCBhdCA0LWJ5dGVzCi0gICAgYm91bmRhcnkuCi0gICAgTGludXggZHJpdmVyIGRvZXMgdGhpcyBieSBhZGRpbmcgSVBfQUxJR05NRU5UIGNvbnN0YW50IChkZWZpbmVkIGF0Ci0gICAgc2tiLmgpIHdoZW4gY2FsY3VsYXRpbmcgZmlmbyBkYXRhIGxlbmd0aC4gQWxsIG5ldHdvcmsgc3Vic3lzdGVtIG9mIExpbnV4Ci0gICAgdXNlcyB0aGlzIGNvbnN0YW50IHRvbyB3aGVuIGNhbGN1bGF0aW5nIGRpZmZlcmVudCBvZmZzZXRzLgotCi0gICAgQnV0IHUtYm9vdCBkb2VzIG5vdCB1c2UgYW55IHBhY2tldCBkYXRhIGFsaWdubWVudCwgc28gd2UgZG9uJ3QgbmVlZCB0bwotICAgIGFkZCBhbnl0aGluZyB3aGVuIGNhbGN1bGF0aW5nIGZpZm8gZGF0YSBsZW5ndGguCi0gICAgTW9yZW92ZXIsIGRyaXZlciB6ZXJvcyB0aGUgUlhfQ0ZHIHJlZ2lzdGVyIGp1c3Qgb25lIGxpbmUgdXAsIHNvIGNoaXAKLSAgICBkb2VzIG5vdCBpbnNlcnQgYW55IGZha2UgZGF0YSBhdCB0aGUgYmVnaW5pZy4gU28gY2FsY3VsYXRlZCBkYXRhIGxlbmd0aAotICAgIGlzIGFsd2F5cyBiaWdnZXIgYnkgMSB3b3JkLgotCi0gICAgSXQgc2VlbXMgdGhhdCBhdCBhbG1vc3QgZXZlcnkgcGFja2V0IHJlYWQgd2UgZ2V0IGFuIHVuZGVyZmxvdyBjb25kaXRpb24KLSAgICBhdCBmaWZvIGFuZCBwb3NzaWJsZSBjb3JydXB0aW9uIG9mIGRhdGEuIEVzcGVjaWFsbHkgYXQgY29udGludW91cwotICAgIHRyYW5zZmVycywgc3VjaCBhcyB0ZnRwLgotCi0gICAgSnVzdCBhZnRlciByZW1vdmluZyB0aGlzIG1hZ2ljIGFkZGl0aW9uLCBJJ3ZlIGdvdCB0ZnRwIHRyYW5zZmVyIHNwZWVkIGFzCi0gICAgaXQgYXVnaHQgdG8gYmUgYXQgMTAwTWJwcy4gSXQgd2FzIHJlYWxseSBzbG93IGJlZm9yZS4KLQotICAgIEl0IHNlZW1zIHRoYXQgZmlmbyB1bmRlcmZsb3cgb2NjdXJzIG9ubHkgd2hlbiB1c2luZyBieXRlIHBhY2tpbmcgb24KLSAgICAzMi1iaXQgYmxhY2tmaW4gYnVzIChtYXkgYmUgYmVjYXVzZSBvZiB2ZXJ5IHNtYWxsIGRlbGF5IGJldHdlZW4gcmVhZHMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVmFsZW50aW4gWWFrb3ZlbmtvdiA8eWFrb3ZlbmtvdkBuaWlzdHQucnU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGYwNTg4ZmRmOTIxYzYzZjg0MDUxOTIzYmIyOWViNDI1NWQ2MmE2ZTcKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJVHVlIEFwciA2IDIxOjMzOjA4IDIwMTAgKzA1MzAKLQotICAgIG5ldDogS2lya3dvb2RfZWdpZ2EuYyBidWdmaXhlcyBmb3IgcnggcGF0aAotCi0gICAgQ29zbWV0aWMgY2hhbmdlczogRmV3IGNvbW1lbnRzIHVwZGF0ZWQKLSAgICBGdW5jdGlvbmFsaXR5OiBSeCBwYWNrZXQgZnJhbWUgc2l6ZSBpcyBwcm9ncmFtbWluZyBzaG91bGQKLSAgICBiZSBkb25lIHdoZW4gcG9ydCBpcyBpbiBkaXNhYmxlZCBzdGF0ZS4gdGhpcyBpcyBjb3JyZWN0ZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMmUyMzZiZjI4ZTcyOWFjYTI4ZTYwYzE1M2RkOGY5MTNkMWIzZDA1OAotQXV0aG9yOiBFcmljIEphcnJpZ2UgPGVyaWMuamFycmlnZUBhcm1hZGV1cy5vcmc+Ci1EYXRlOglGcmkgQXByIDE2IDAwOjAzOjE5IDIwMTAgKzAyMDAKLQotICAgIGZlY19teGMuYzogRml4IE1YMjcgRkVDIE1BQyB2YWxpZGl0eSBjaGVjawotCi0gICAgRml4IE1YMjcgRkVDIGxvZ2ljIHRvIGNoZWNrIHZhbGlkaXR5IG9mIHRoZSBNQUMgYWRkcmVzcyBpbiBmdXNlLgotICAgIE9ubHkgbnVsbCAoZW1wdHkgZnVzZSkgb3IgaW52YWxpZCBNQUMgYWRkcmVzcyB3YXMgcmV0cmlldmVkIGZyb20gbXgyNyBmdXNlcyBiZWZvcmUgdGhpcyBjaGFuZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiAgRXJpYyBKYXJyaWdlIDxqb3Jhc3NlQGFybWFkZXVzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNTM4YmU1ODU2ODU0MmFhYzJlZDRiZGY0YzA1Mzk4Y2ZhNjdlOThmMAotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDE5IDE0OjU0OjQ5IDIwMTAgLTA1MDAKLQotICAgIHRzZWM6IFdhaXQgZm9yIGJvdGggUlggYW5kIFRYIHRvIHN0b3AKLQotICAgIFdoZW4gZ3JhY2VmdWxseSBzdG9wcGluZyB0aGUgY29udHJvbGxlciwgdGhlIGRyaXZlciB3YXMgY29udGludWluZyBpZgotICAgICplaXRoZXIqIFJYIG9yIFRYIGhhZCBzdG9wcGVkLiAgV2UgbmVlZCB0byB3YWl0IGZvciBib3RoLCBvciB0aGUKLSAgICBjb250cm9sbGVyIGNvdWxkIGdldCBpbnRvIGFuIGludmFsaWQgc3RhdGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGE0NWRkZTIyOTNjODE2MTM4ZTUzYzI2ZWNhNmZkMDMyMjU4M2Y5YTYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEFwciAxNCAxNjoyOTowNiAyMDEwIC0wNDAwCi0KLSAgICBuZXQ6IGRtOTAwMHg6IHVzZSBzdGFuZGFyZCBJL08gYWNjZXNzb3JzCi0KLSAgICBUaGUgY3VycmVudCBkbTkwMDB4IGRyaXZlciBhY2Nlc3NlcyBpdHMgbWVtb3J5IG1hcHBlZCByZWdpc3RlcnMgZGlyZWN0bHkKLSAgICBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzdGFuZGFyZCBJL08gYWNjZXNzb3JzLiAgVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgb24KLSAgICBCbGFja2ZpbiBzeXN0ZW1zIGFzIHRoZSBhY2Nlc3NlcyBjYW4gZ2V0IG91dCBvZiBvcmRlci4gIFNvIGNvbnZlcnQgdGhlCi0gICAgZGlyZWN0IHZvbGF0aWxlIGRlcmVmZXJlbmNlcyB0byB1c2UgdGhlIG5vcm1hbCBpbi9vdXQgbWFjcm9zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1NTI1ODU2ZDU5OTEwYzcyNjg3YWI2MjAxZjM5Y2RmMWMwNGNmYzE1Ci1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJVGh1IEFwciA4IDExOjQ5OjU5IDIwMTAgKzAyMDAKLQotICAgIG1wYzUxMnhfZmVjOiBNb3ZlIFBIWSBpbml0aWFsaXphdGlvbiBmcm9tIHByb2JlIGludG8gaW5pdCByb3V0aW5lLgotCi0gICAgVGhpcyBzYXZlcyB0aGUgYXV0b25lZ290YXRpb24gZGVsYXkgd2hlbiBub3QgdXNpbmcgZXRoZXJuZXQgaW4gVS1Cb290Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOTEwMTE5YjNjNDYyZmQ2MzY3NTM2ODk5ZWU0M2RlMWViN2QyMmQ4ZQotQXV0aG9yOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLURhdGU6CVdlZCBBcHIgNyAyMzoyOTo0MCAyMDEwIC0wNjAwCi0KLSAgICBmZWNfbXhjIGRvbid0IHVzZSBpbnRlcm5hbCBlZXByb20gb24gTVgyNQotCi0gICAgQXZvaWQgdXNpbmcgdGhlIGludGVybmFsIGVlcHJvbSBvbiBNWDI1IGxpa2UgTVg1MSBhbHJlYWR5IGRvZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMzNmNjg0ZDZkNTEyOTkyZWQxYWUzN2VjNDZlNzZiZGViMDc3M2JhYwotQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLURhdGU6CVR1ZSBBcHIgNiAxMToxMzowMiAyMDEwICswMjAwCi0KLSAgICBmaXggbG9ja3VwIGluIG1jZm1paS9taWlfZGlzY292ZXJfcGh5KCkgaW4gY2FzZSBjb21tdW5pY2F0aW9uIGZhaWxzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMjNjMzRhZjQ4ZmYwZGJmZjNiYmFhOGU5NGRmM2JmNDAzNTBhNzA5ZgotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJV2VkIEp1biAxNyAxNjowMDo0MSAyMDA5IC0wNDAwCi0KLSAgICA4M3h4OiBVRUM6IEFkZGVkIHN1cHBvcnQgZm9yIGJpdEJhbmcgTUlJIGRyaXZlciBhY2Nlc3MgdG8gUEhZcwotCi0gICAgVGhpcyBwYXRjaCBlbmFibGVkIHN1cHBvcnQgZm9yIGhhdmluZyBQSFlzIG9uIGJpdEJhbmcgTUlJIGFuZCB1ZWMgTUlJCi0gICAgb3BlcmF0aW5nIGF0IHRoZSBzYW1lIHRpbWUuIE1vZGVsZWQgYWZ0ZXIgdGhlIE1QQzgzNjBBRFMgaW1wbGVtZW50YXRpb24uCi0KLSAgICBBZGRlZCB0aGUgYWJpbGl0eSB0byBzcGVjaWZ5IHdoaWNoIGV0aGVybmV0IGludGVyZmFjZXMgaGF2ZSBiaXRiYW5nIFNNSQotICAgIG9uIHRoZSBib2FyZCBoZWFkZXIgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDk3Mzk5NDZjYzViNjE2YzAyNmQ0MzNiZDA3ZDE5M2NmNDUyZGRlYTAKLUF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+Ci1EYXRlOglNb24gTWFyIDggMTQ6MDc6MDAgMjAxMCAtMDUwMAotCi0gICAgLi9uZXQvbmV0LmMgLSBtYWtlIE1pY3Jvc29mdCBkbnMgc2VydmVycyBoYXBweSB3aXRoIHJhbmRvbV9wb3J0KCkgbnVtYmVycwotCi0gICAgRm9yIHNvbWUgcmVhc29uLCAod2hpY2ggSSBjYW4ndCBmaW5kIGFueSBkb2N1bWVudGF0aW9uIG9uKSwgaWYgVS1Cb290Ci0gICAgZ2l2ZXMgYSBwb3J0IG51bWJlciBoaWdoZXIgdGhhbiAxNzUwMCB0byBhIE1pY3Jvc29mdCBETlMgc2VydmVyLCB0aGUKLSAgICBzZXJ2ZXIgd2lsbCByZXBseSB0byBwb3J0IDE3NTAwLCBhbmQgVS1Cb290IHdpbGwgaWdub3JlIHRoaW5ncyAoc2luY2UKLSAgICB0aGF0IGlzbid0IHRoZSBwb3J0IGl0IGFza2VkIHRoZSBETlMgc2VydmVyIHRvIHJlcGx5IHRvKS4KLQotICAgIFRoaXMgZml4ZXMgdGhhdCBieSBlbnN1cmluZyB0aGUgcmFuZG9tIHBvcnQgbnVtYmVyIGlzIGxlc3MgdGhhbiAxNzUwMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6ICBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNmY1Zjg5ZjAxMTk1ZTJkMDA5YjMxN2RmMjcxOTdhMzhmY2FiMzU1MwotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVRodSBBcHIgMSAxNDoxNjo0MSAyMDEwICswMjAwCi0KLSAgICBSZW1vdmUgdW51c2VkICJsb2NhbF9jcmMzMiIgZnVuY3Rpb24uCi0KLSAgICBGb3IgY29kZSBhcmNoZW9sb2dpc3RzLCB0aGlzIGlzIGEgbmljZSBleGFtcGxlIG9mIGNvcHkgYW5kIHBhc3RlIGhpc3RvcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYWJhNGI2OWQwMTQ1N2FiMjk4OGU5MWM4NTkyZTVkMmZmYjEwZjU2OQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMzEgMTc6NTY6MDggMjAxMCArMDIwMAotCi0gICAgbmV0OiBUcml2aWFsIGNvZGluZyBzdHlsZSBpc3N1ZSB3aXRoIGVtcHR5IGZvciBzdGF0ZW1lbnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBlM2YyYTkzMzYyYzgyM2ZjMWZlYjVlOGE0MGZmM2MxMjA3MTZhMDViCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CVdlZCBNYXIgMyAxNToyNzoyMSAyMDEwICswNTMwCi0KLSAgICBuZXQ6IEtpcmt3b29kX2VnaWdhLmM6IGZpeGVkIGJ1aWxkIHdhcm5pbmdzCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGZvbGxvd2luZyBidWlsZCB3YXJuaW5ncyBmb3Iga2lya3dvb2RfZWdpZ2EuYwotCi0gICAga2lya3dvb2RfZWdpZ2EuYzogSW4gZnVuY3Rpb24gImt3Z2JlX2luaXQiOgotICAgIGtpcmt3b29kX2VnaWdhLmM6NDQ4OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBraXJrd29vZF9lZ2lnYS5jOiBJbiBmdW5jdGlvbiAia3dnYmVfcmVjdiI6Ci0gICAga2lya3dvb2RfZWdpZ2EuYzo2MDk6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyMGQ5OGMyY2VhMzM5OGFkOTNiZWNjZDQ3MjdhMzcxZjQxNTE0MDg2Ci1BdXRob3I6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+Ci1EYXRlOglNb24gQXByIDE5IDE0OjE4OjQzIDIwMTAgKzAzMDAKLQotICAgIHBtOTI2MyBjb252ZXJ0ZWQgdG8gYXQ5MSBzb2MgYWNjZXNzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotCi1jb21taXQgZDZiOTFlMzBkMzI4NzFlYjIwYjYyMjc1MTlmZDJmM2E2ZWEwNzNmZAotQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotRGF0ZToJTW9uIEFwciAxOSAxNDoxNzoyMiAyMDEwICswMzAwCi0KLSAgICBhdDkxOiBkZWZpbmUgbWF0cml4IHJlZ2lzdGVycyBiaXQgZmllbGRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotCi1jb21taXQgZWViNTBjZTE5MzQ1Mzk1MTUyOTAxNWY1MGU1YzFjY2Q3YjU1YWFkMgotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMTMgMTI6MTk6MDYgMjAxMCArMDIwMAotCi0gICAgTVgzMTogUmVtb3ZlZCBlcnJvbmVvdXMgYm9hcmQgbmFtZSBmcm9tIFFPTkcKLQotICAgIFFPTkcgaXMgYSBtb2R1bGUgdGhhdCBjYW4gYmUgaW5zdGFsbGVkIG9uIHNldmVyYWwgYm9hcmRzLAotICAgIG5vdCBvbmx5IG9uIHRoZSBRT05HLUVWQiBtYW51ZmFjdHVyZWQgYnkgRGF2ZSBzcmwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGM5ZDk0NGQzNWU3OTA0MjI5YzUzMzNlNzYxYmNlOWQ0MzI0OTcxZjgKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUaHUgQXByIDggMTc6MjM6NTIgMjAxMCArMDIwMAotCi0gICAgTVgzMTogQWRkIFVCSSBzdXBwb3J0IHRvIFFPTkcgbW9kdWxlCi0KLSAgICBUaGUgVUJJL1VCSUZTIHN1cHBvcnQgaXMgYWRkZWQgdG8gdGhlIFFPTkcgbW9kdWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCBlYWI0MGY4MTlkZGQ1MGVlZjQ2NTYxOWRiMTM4NmMwNTNiNTlhOTViCi1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJV2VkIE1hciAzMSAxMDoyNzo0NyAyMDEwICswMjAwCi0KLSAgICBNWDMxOiBTdXBwb3J0IDEyOE1CIFJBTSBvbiBRT05HIG1vZHVsZQotCi0gICAgVGhlIFFPTkcgbW9kdWxlIGNhbiBiZSBkb3duc2l6ZWQgYW5kIGRlbGl2ZXJlZAotICAgIHdpdGggMTI4TUIgaW5zdGVhZCBvZiAyNTZNQi4gVGhlIHBhdGNoIGFkZHMKLSAgICBydW4gdGltZSBzdXBwb3J0IGZvciB0aGUgdHdvIGRpZmZlcmVudCBtZW1vcnkKLSAgICBjb25maWd1cmF0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgNDU5OTdlMGE4NmVlOGQ4YWJlYzZkNzkxYTI0MWNiMjAwMTFmZTBlMwotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CU1vbiBNYXIgMjkgMTY6NDM6MzkgMjAxMCArMDIwMAotCi0gICAgTVgzMTogQWRkIHN1cHBvcnQgZm9yIE5BTkQgdG8gUU9ORyBib2FyZAotCi0gICAgVGhlIE5BTkQgZGV2aWNlIGlzIGNvbm5lY3RlZCB0byB0aGUgRlBHQSBvZiB0aGUgUU9ORyBib2FyZAotICAgIGFuZCBub3QgdG8gdGhlIE5GQyBjb250cm9sbGVyLiBGb3IgdGhpcyByZWFzb24sIHRoZSBGUEdBIG11c3QKLSAgICBiZSBzZXQgYW5kIGluaXRpYWxpemVkIGJlZm9yZSBhY2Nlc3NpbmcgdG8gdGhlIE5BTkQgaXRzZWxmLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCBlZmI5NTkxMDY5ZWUyNzZmN2ZhMjdhODIxMjQwYzc1MTFmNzJmZTY1Ci1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJTW9uIE1hciAyOSAxNTo1NjoxMCAyMDEwICswMjAwCi0KLSAgICBNWDMxOiBhZGQgcGluIGRlZmluaXRpb25zIGZvciBOQU5EIGNvbnRyb2xsZXIKLQotICAgIEFkZCBwaW4gZGVmaW5pdGlvbnMgcmFsdGVkIHRvIHRoZSBOQU5EIGNvbnRyb2xsZXIgdG8gYmUgdXNlZAotICAgIHRvIHNldCB1cCB0aGUgcGluIG11bHRpcGxleGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCA3ZDI3Y2QwOGI0YzFhZGZkNThjNTRhYWE4YjhjOGY0ZWViM2M3MDIxCi1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJVHVlIEFwciAxMyAxMjowNzowMCAyMDEwICswMjAwCi0KLSAgICBNWDMxOiBhZGQgYWNjZXNzb3IgZnVuY3Rpb24gdG8gZ2V0IGEgZ3BpbwotCi0gICAgVGhlIHBhdGNoIGFkZHMgYW4gYWNjZXNzb3IgZnVuY3Rpb24gdG8gZ2V0IHRoZSB2YWx1ZSBvZiBhIGdwaW8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGRmZTgzMzUyY2I1OGM1NWRmZGJkNWI1MzVjYjMzNTUyNmNiMWM1ODEKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDEzIDEyOjM4OjQzIDIwMTAgKzAyMDAKLQotICAgIG14NTFldms6IGNvcnJlY3QgbGlzdCBvZiBwb3NzaWJsZSBCT09UX0ZST00gdmFsdWVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGY1ODFlM2EyMTU3ZmJkNzM2ZTdkZDIzNzg0NjVhZTI0MmZiYTU0NWMKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDEzIDEyOjM4OjIyIDIwMTAgKzAyMDAKLQotICAgIG1raW1hZ2U6IGNvcnJlY3Qgc3BlbGxpbmcgZXJyb3IgaW4gaW14aW1hZ2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgMzQxOTZiMGE4YmQ3YWI2ZDQ3MmUyZTZmNmM5MGI3M2U5MTVhMWZhZQotQXV0aG9yOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLURhdGU6CVdlZCBBcHIgNyAyMzozMDowOSAyMDEwIC0wNjAwCi0KLSAgICBNWDI1IHByaW50IGFybSBjbG9jayBpbnN0ZWFkIG9mIG1wbGxjbGsgb24gYm9vdAotCi0gICAgUmVwbGFjZSBjYWxsIHRvIGlteF9nZXRfbXBsbGNsayB3aXRoIGlteF9nZXRfYXJtY2xrCi0gICAgdG8gc2hvdyBmcmVxdWVuY3kgb2YgQVJNIGNvcmUgaW5zdGVhZCBvZiBtcGxsIGludGVybmFsCi0gICAgYnVzIGluIHByaW50X2NwdWluZm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBDQzogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCAxYzlkOTFhY2E2NDlmMTc3NjJiYWUyYzBlMzhmNTEwMWQ2MmVkMGI1Ci1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8W2ZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbV0+Ci1EYXRlOglUdWUgQXByIDYgMTk6MDY6MTEgMjAxMCArMDUzMAotCi0gICAgY29uZmlncy9vcGVucmRfYmFzZS5oOiByZW9yZGVyZWQgbWFjcm9zCi0KLSAgICBtb3ZlZCBDT05GSUdfQ01EX0ZBVCB0byBmaWxlc3lzdGVtIHNlY3Rpb24KLSAgICBzd2FwcGVkIENPTkZJR19DTURfTkFORCBhbmQgQ09ORklHX0NNRF9NSUkgc28gdGhleSBhcmUgYWxwaGEgY29ycmVjdAotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA1NDE0ZmVjODVmZjU1OGFmODgyM2Q0MzkxZjAzOTc3Mjg4ODcxZmU0Ci1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8W2ZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbV0+Ci1EYXRlOglUdWUgQXByIDYgMTg6MjY6MTkgMjAxMCArMDUzMAotCi0gICAgY29uZmlncy9zaGVldmFwbHVnOiBhZGRlZCBhIGZldyBhZGRpdGlvbmFsIGNvbW1hbmRzCi0KLSAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIGEgZmV3IGFkZGl0aW9uYWwgY29tbWFuZHMgaW4gdGhlIHNoZWV2YXBsdWcKLSAgICB2ZXJzaW9uIG9mIHUtYm9vdDoKLSAgICAtIHN1cHBvcnQgZm9yIExPTkdIRUxQIHNvIHlvdSBjYW4gZ2V0IGhlbHAgbWVzc2FnZXMKLSAgICAtIGF1dG8gY29tcGxldGlvbiBhbmQgY29tbWFuZCBlZGl0aW5nCi0gICAgLSB1YmkgYW5kIG1paSBzdXBwb3J0Ci0gICAgLSBleHQyIGZpbGVzeXN0ZW0gKGNvbnZlbmllbnQgaWYgeW91IGhhdmUgYW4gZXh0MiBmcm9tIHdoaWNoIHlvdSB3YW50IHRvIGJvb3QpCi0gICAgLSBqZmZzMiBhbmQgdWJpZnMgZmlsZXN5c3RlbXMgKGlmIHlvdSB3YW50IHRvIHVzZSB0aGVzZSBpbiBOQU5EKQotCi0gICAgVGhpcyBhbHNvIG1ha2VzIGl0IG1vcmUgc2ltaWxhciB0byBvcGVucmQgY2xpZW50LgotCi0gICAgU2lkZSBlZmZlY3Qgb2YgdGhpcyBwYXRjaCBpcyB0aGF0IHRoZSBjb2RlIG5vdyBuZWVkcyAzIHNlY3RvcnMgaS5zLm8uIDIKLSAgICBzbyBhbiBleGlzdGluZyBlbnYgaXMgb3ZlcndyaXR0ZW4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotCi1jb21taXQgMTZiNzY3MDVkMzZhYzEzN2ZhOTIzMWNlZGZlMTM1NTU2MTYzOWU0NwotQXV0aG9yOiBTaWRkYXJ0aCBHb3JlIDxbZ29yZXNAbWFydmVsbC5jb21dPgotRGF0ZToJVGh1IE1hciAxOCAyMDoyNTo0MCAyMDEwICswNTMwCi0KLSAgICBNYXJ2ZWxsIEd1cnVQbHVnIEJvYXJkIFN1cHBvcnQKLQotICAgIEd1cnVQbHVnIFN0YW5kYXJkOiAxIEdiIEV0aGVybmV0LCAyIFVTQiAyLjAKLSAgICBHdXJ1UGx1ZyBQbHVzOiAyIEdiIEV0aGVybmV0LCAyIFVTQiAyLjAsIDEgZVNBVEEsIDEgdVNEIHNsb3QKLQotICAgIFJlZmVyZW5jZXM6Ci0gICAgaHR0cDovL3d3dy5nbG9iYWxzY2FsZXRlY2hub2xvZ2llcy5jb20vdC1ndXJ1cGx1Z2RldGFpbHMuYXNweAotICAgIGh0dHA6Ly9wbHVnY29tcHV0ZXIub3JnCi0KLSAgICBUaGlzIHBhdGNoIGlzIGZvciBHdXJ1UGx1ZyBQbHVzLCBidXQgaXQgc3VwcG9ydHMgU3RhbmRhcmQgdmVyc2lvbgotICAgIGFzIHdlbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaWRkYXJ0aCBHb3JlIDxnb3Jlc0BtYXJ2ZWxsLmNvbT4KLQotY29tbWl0IDVlMWZlODhmZTNkZjI1NTVhOGEwY2JhN2QyZmZhZjJiMDMwNDFkZmIKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDI4IDEzOjQzOjI2IDIwMTAgKzAyMDAKLQotICAgIE1vdmVkIGJvYXJkIHNwZWNpZmljIHZhbHVlcyBpbiBjb25maWcgZmlsZQotCi0gICAgVGhlIGxvd2xldmVsX2luaXQgZmlsZSBjb250YWluZWQgc29tZSBoYXJkLWNvZGVkIHZhbHVlcwotICAgIHRvIHNldHVwIHRoZSBSQU0uIFRoZXNlIGJvYXJkIHJlbGF0ZWQgdmFsdWVzIGFyZSBtb3ZlZCBpbnRvCi0gICAgdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgMjcyMDE3ODUzMzM5ZjViOTY4NWY5NDg4YmRhZjU0MDU4MTJkMTJhNAotQXV0aG9yOiBGYWJpbyBFc3RldmFtIDxmYWJpb2VzdGV2YW1AeWFob28uY29tPgotRGF0ZToJV2VkIE1hciAzMSAwNjozMjo1NiAyMDEwIC0wNzAwCi0KLSAgICBNWDUxRVZLOiBSZW1vdmUgQ1BMRCByZWxhdGVkIGNvZGUKLQotICAgIFRoZXJlIGlzIG5vIENQTEQgb24gTVg1MUVWSyBib2FyZCwgc28gcmVtb3ZlIENQTEQgcmVsYXRlZCBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZhYmlvIEVzdGV2YW0gPGZhYmlvLmVzdGV2YW1AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJiZTMxMDkyMmY0ZDBiMTJjOGFiYTk3YjQ1ZWQ5NzlkYjljMGVjOWEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglGcmkgTWFyIDUgMDc6MzY6MzMgMjAxMCArMDEwMAotCi0gICAgYXJtLCBpLm14Mjc6IGFkZCBzdXBwb3J0IGZvciBtYWduZXNpdW0gYm9hcmQgZnJvbSBwcm9qZWN0aW9uZGVzaWduCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG1hZ25lc2l1bSBib2FyZCBmcm9tCi0gICAgcHJvamVjdGlvbmRlc2lnbi4gVGhpcyBib2FyZCB1c2VzIGkuTVgyNyBTb0MgYW5kIGhhcwotICAgIDhNQiBOT1IgZmxhc2gsIDEyOE1CIE5BTkQgZmxhc2gsIEZFQyBldGhlcm5ldCBjb250cm9sbGVyCi0gICAgaW50ZWdyYXRlZCBpbnRvIGkuTVgyNy4gQXMgdGhpcyBwb3J0IGlzIGJhc2VkIG9uCi0gICAgdGhlIGlteDI3bGl0ZSBwb3J0LCBjb21tb24gY29uZmlnIG9wdGlvbnMgYXJlIGNvbGxlY3RlZAotICAgIGluIGluY2x1ZGUvY29uZmlncy9pbXgyN2xpdGUtY29tbW9uLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMWU2NWMyYmViNTgwNWY5NzVjZDVkMGFiN2Q4NTMwNDBhNzE2ZDUxYgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBNYXIgNCAwODoxMjowNSAyMDEwICswMTAwCi0KLSAgICBhcm0sIG14Mjc6IGFkZCBzdXBwb3J0IGZvciBTREhDMSBwaW4gaW5pdAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAzYmI2YjAzN2U4NTU3ZmQzYzBmM2IzZDk4NDBjOGI1OTk2NjUxZGNiCi1BdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLURhdGU6CVdlZCBNYXIgMjQgMTU6MzE6MDYgMjAxMCArMDkwMAotCi0gICAgU0FNU1VORzogbWFrZSBzNXAgY29tbW9uIGdwaW8gZnVuY3Rpb25zCi0KLSAgICBCZWNhdXNlIG9mIHM1cGMxeHggZ3BpbyBpcyBzYW1lIGFzIHM1cCBzZWlyZXMgU29DLAotICAgIG1vdmUgZ3BpbyBmdW5jdGlvbnMgdG8gZHJ2aWVyL2dwaW8vCi0gICAgYW5kIG1vZGlmeSBzdHJ1Y3R1cmUncyBuYW1lIGZyb20gczVwYzF4eF8gdG8gczVwXy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDQ2YTNiNWM4ZGY5MzlmNTU0N2JjZDM2ODQwMzAwNzJjOTRkMDZiZDgKLUF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotRGF0ZToJV2VkIE1hciAyNCAxNjo1OTozMCAyMDEwICswOTAwCi0KLSAgICBTQU1TVU5HOiBzZXJpYWw6IG1vZGlmeSBuYW1lIGZyb20gczVwYzF4eCB0byBzNXAKLQotICAgIEJlY2F1c2Ugb2Ygb3RoZXIgczVwIHNlcmllcyBTb0Mgd2lsbCB1c2UgdGhlc2Ugc2VyaWFsIGZ1bmN0aW9ucywKLSAgICBtb2RpZnkgZnVuY3Rpb24ncyBuYW1lIGFuZCBzdHJ1Y3R1cmUncyBuYW1lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgZGEwZjJhZjI3OTU2M2RkYzc1ZWZmMzA0YWQ1Mzg5ZjdmMGU3OTM4MQotQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotRGF0ZToJV2VkIEFwciA3IDEyOjMzOjExIDIwMTAgKzAzMDAKLQotICAgIHBtOTI2MzogcmVtb3ZlIENPTkZJR19DTURfQVVUT1NDUklQVAotCi0gICAgU2lnbmVkLW9mZi1ieTogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KLQotY29tbWl0IDQ3ZWIwOGE5N2ViMTY2ZTkzZDA0OTU4NDhiMGM3NTgyYTA2MzlmYmMKLUF1dGhvcjogQWxleGFuZGVyIEhvbGxlciA8aG9sbGVyQGFoc29mdHdhcmUuZGU+Ci1EYXRlOglNb24gTWFyIDI5IDIxOjM5OjQzIDIwMTAgKzAyMDAKLQotICAgIGF0OTE6IGFkZCBkZWZpbmVzIGZvciBSVFQgYW5kIEdQQlIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBIb2xsZXIgPGhvbGxlckBhaHNvZnR3YXJlLmRlPgotCi1jb21taXQgZGM4Y2FiODc0NTlkNjgyZmMyNzI0NDQwNDQ1OTJkMjAyNDNkYTJmMAotQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotRGF0ZToJVHVlIEFwciA2IDE2OjE3OjM0IDIwMTAgKzAzMDAKLQotICAgIHBtOTI2MTogcmVtb3ZlIENPTkZJR19DTURfQVVUT1NDUklQVAotCi0gICAgU2lnbmVkLW9mZi1ieTogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KLQotY29tbWl0IGUzMTUwYzc3NjE3YzdkNDUyNDIwZTZjODc3NjliNzliNjY3MWIxMmQKLUF1dGhvcjogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KLURhdGU6CVR1ZSBBcHIgNiAxNjoxODowNCAyMDEwICswMzAwCi0KLSAgICBwbTkyNjEgY29udmVydGVkIHRvIGF0OTEgc29jIGFjY2VzcwotCi0gICAgU2lnbmVkLW9mZi1ieTogQXNlbiBEaW1vdiA8ZGltb3ZAcm9uZXRpeC5hdD4KLQotY29tbWl0IDdiYzg3NjgwMzk5NDhlNTBjYzE0OWJlYTJlYzIxNGJkZTMyNDVjNGEKLUF1dGhvcjogdHJpeCA8dHJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU2F0IEFwciAxMCAxMjo0Njo0OSAyMDEwIC0wNTAwCi0KLSAgICBBUk0gVXBkYXRlIG1hY2gtdHlwZXMKLQotICAgIEZldGNoZWQgZnJvbSBodHRwOi8vd3d3LmFybS5saW51eC5vcmcudWsvZGV2ZWxvcGVyL21hY2hpbmVzL2Rvd25sb2FkLnBocAotICAgIEFuZCBidWlsdCB3aXRoCi0KLSAgICByZXBvIGh0dHA6Ly9mdHAuYXJtLmxpbnV4Lm9yZy51ay9wdWIvbGludXgvYXJtL2tlcm5lbC9naXQtY3VyL2xpbnV4LTIuNi1hcm0KLSAgICBjb21taXQgODViM2NjZTg4MGExOWU3ODI4NjU3MGQ1ZmQwMDRjYzNjYWMwNmY1NwotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgZDMwNjFjNjkyMTU1NDEyYWE4N2U3ZjRmNjZiNGEyYzdiNzdlZTQxNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDI4IDExOjA5OjU5IDIwMTAgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IEFQQzQwNSBidWlsZCBicmVha2FnZQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBBUEM0MDUgYnVpbGQsIGJ5IGRlZmluaW5nIENPTkZJR19QUEM0WFhfSTJDLiBUaGlzIGlzCi0gICAgbmVlZGVkIHNpbmNlIHRoZSBtb3ZlIG9mIHRoZSBQUEM0eHggSTJDIGRyaXZlciBpbnRvIHRoZSBkcml2ZXJzL2kyYwotICAgIGRpcmVjdG9yeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLQotY29tbWl0IDAyOWZhZjNlODVlOTQwNmYzMmYxMzNlNmYyYTExNGVkMjZiMDJmYjQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEFwciAyNyAxMTozNzoyOCAyMDEwICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciBJQ09OIGJvYXJkIChQUEM0NDBTUGUpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1vc2FpeCBUZWNobm9sb2dpZXMsIEluYy4gSUNPTiBib2FyZCwKLSAgICBiYXNlZCBvbiB0aGUgQXBwbGllZE1pY3JvIChBTUNDKSBQUEM0NDBTUGUuIEl0J3MgZXF1aXBwZWQgd2l0aCBhbiBTT0RJTU0KLSAgICAoNTEyTUIgc3RhbmRhcmQpIGFuZCA2NE1CeXRlIG9mIE5PUiBGTEFTSC4KLQotICAgIFN1cHBvcnQgZm9yIHRoZSBvbmJvYXJkIFNNNTAyIHdpbGwgYmUgYWRkZWQgbGF0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5NmEwZDYyMzVkYjRjOTNjMDNkNDFjNDkyZjU5NjBiMTg1NDdiN2E3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBBcHIgMjYgMTM6MzE6MDggMjAxMCArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgbWlzc2luZyBBUEM0MDUgdG8gTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotCi1jb21taXQgNjQxMjNlM2YwNmY3NGRkMDliODZlMmE0MWQ3N2QzMTA0NGY0OTVmYgotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVR1ZSBBcHIgMjAgMDg6MTE6NDAgMjAxMCAtMDQwMAotCi0gICAgRml4IHR5cG9zIGluIEtvcmF0IGJvYXJkIGNvbnNvbGUgb3V0cHV0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4YTFjZGFhOWQ1NGM5M2RiMzAwZTg1NjUxOTFkNjA3MTJhYTQ4MWRjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDI4IDEyOjU0OjQzIDIwMTAgKzAyMDAKLQotICAgIFFPTkc6IEFkYXB0IGZsYXNoIGFkZHJlc3NlcyBhbmQgbXRkcGFydHMgdG8gZ3Jvd24gaW1hZ2Ugc2l6ZQotCi0gICAgQWxzbyBlbmFibGUgSFVTSCBzaGVsbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlMWQyOTUwZDBmNWFhYTdhYjY2MDlmZmE5NmRkZTJlMTYzZmMyOTAyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDI4IDEwOjU4OjEwIDIwMTAgKzAyMDAKLQotICAgIG10ZHBhcnRzOiBnZXQgcmlkIG9mIGN1c3RvbSBERUJVRyBtYWNybywgdXNlIGRlYnVnKCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyNjk3ZWZmMWFmMTM2YzY0MjRjMDY1Y2JhOTk0YWE5YWNlYWRiY2QxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDI4IDEwOjUzOjQ3IDIwMTAgKzAyMDAKLQotICAgIG10ZHBhcnRzOiBmaXggd3JpdGUgdGhyb3VnaCBOVUxMIHBvaW50ZXIKLQotICAgIFRoZSAibXRkcGFydHMgYWRkIiBjb21tYW5kIHdyb3RlIHRocm91Z2ggYSBOVUxMIHBvaW50ZXIgLSBvbiBtYW55Ci0gICAgc3lzdGVtcyB0aGlzIHdlbnQgdW5ub3RpY2VkIChQb3dlclBDIGhhcyB3cml0YWJsZSBSQU0gdGhlcmUsIHNvbWUgQVJNCi0gICAgc3lzdGVtcyBoYXZlIFJPTSB3aGVyZSBhIHdyaXRlIGhhcyBubyBlZmZlY3QpLCBidXQgb24gYXJtMTEzNgotICAgIChpLk1YMzEpIGl0IGNyYXNoZWQgdGhlIHN5c3RlbS4KLQotICAgIEFkZCBhcHByb3ByaWF0ZSBjaGVja3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjg2NTE2ODM1OTM5NThjZWRjZGZiOWQwNmE1ZmUwYTUyNGY4ZGQ2ZQotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgMjEgMDk6NDc6MTkgMjAxMCArMDIwMAotCi0gICAgdWJpZnNtb3VudCBmYWlscyBkdWUgdG8gbm90IGluaXRpYWxpemVkIGxpc3QKLQotICAgIHViaWZzbW91bnQgaXMgbm90IHdvcmtpbmcgYW5kIGNhdXNlcyBhbiBhY2Nlc3Mgd2l0aAotICAgIGEgcG9pbnRlciBzZXQgdG8gemVybyBiZWNhdXNlIHRoZSB1Ymlmc19mc190eXBlCi0gICAgaXMgbm90IGluaXRpYWxpemVkIGNvcnJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDdjOGNmMGQwYzdiMTJjN2M2Mzc2NWU5MzZjZjc2MGRjMmM3ZDczMDYKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDIxIDA5OjU2OjMxIDIwMTAgKzAyMDAKLQotICAgIE1YMzE6IEFkZGVkIExDRCBzdXBwb3J0IGZvciBRT05HIG1vZHVsZQotCi0gICAgQWRkZWQgc3VwcG9ydCBmb3IgTENEIGFuZCBzcGxhc2ggaW1hZ2UgdG8gdGhlIFFPTkcgbW9kdWxlLgotICAgIFRoZSBzdXBwb3J0ZWQgZGlzcGxheSBpcyBWQkVTVC1WR0czMjI0MDMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDdlMWFmYjYyYTdlNjg4NDMyNDhiOWE3NmEyNjVjOTE5M2U3MTY3NjgKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBcHIgMjAgMTA6MDI6MjQgMjAxMCAtMDUwMAotCi0gICAgcHBjOiBTcGxpdCBNUEM4M3h4IFNFUkRFUyBjb2RlIGZyb20gTVBDODV4eC9NUEM4Nnh4L1FvcklRCi0KLSAgICBUaGUgTVBDODN4eCBTRVJERVMgY29udHJvbCBpcyBkaWZmZXJlbnQgZnJvbSB0aGUgb3RoZXIgRlNMIFBQQyBjaGlwcy4KLSAgICBGb3Igbm93IGxldHMgc3BsaXQgaXQgb3V0IHNvIHdlIGNhbiBzdGFuZGFyZGl6ZSBvbiBpbnRlcmZhY2VzIGZvcgotICAgIGRldGVybWluaW5nIG9mIGEgZGV2aWNlIG9uIFNFUkRFUyBpcyBjb25maWd1cmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDNmMDIwMmVkMTNhZGQ1ZmQ2ZTJlZDY2ZmNiM2Y1ZTEyMjhjZGY3NjYKLUF1dGhvcjogTGFuIENodW5oZSA8YjI1ODA2QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXByIDIxIDA3OjQwOjUwIDIwMTAgLTA1MDAKLQotICAgIG1wYzg1eHg6IEFkZCB0aGUgYWJpbGl0eSB0byBzZXQgTENSUltDTEtESVZdIHRvIGltcHJvdmUgUi9XIHNwZWVkIG9mIGZsYXNoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYW4gQ2h1bmhlIDxiMjU4MDZAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDBjOTU1ZGFmYWI0OTVmZWY1YTc2ZjUzODMzODcyODFkMDQwODA1NmMKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBcHIgMTQgMTk6MDU6MDYgMjAxMCArMDgwMAotCi0gICAgODV4eDogY2xlYW4gdXAgdGhlIGlvX3NlbCBmb3IgUENJIGV4cHJlc3Mgb2YgUDEwMjIKLQotICAgIGNsZWFuIHVwIHRoZSB3cm9uZyBpb19zZWwgZm9yIFBDSSBleHByZXNzIGFjY29yZGluZyB0byBsYXRlc3QgbWFudWFsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDcxMDZjZTE2ODg5MGQ2MzdmZDg0OTY4MmJhODhlY2ZkYjljMzVkZQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgMTQgMTE6MzI6MjAgMjAxMCArMDIwMAotCi0gICAgODV4eC9zb2NyYXRlczogUmVtb3ZlIE5GUyBzdXBwb3J0IHRvIGZpdCBpbWFnZSBzaXplLgotCi0gICAgVGhpcyBmaXhlcyBhbiBvdmVyZmxvdyBkdXJpbmcgdGhlIGxpbmsgcGhhc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOWNlM2MyMjgyNzZiMGY4NTEwNWRhOGMzOWIxNjRmMmI2Yzg0ZWEzNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEFwciAxMyAxMTowNzo1NyAyMDEwIC0wNTAwCi0KLSAgICA4NXh4OiBGaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBjcHUuYzogSW4gZnVuY3Rpb24gJ2NoZWNrY3B1JzoKLSAgICBjcHUuYzo0Nzogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdndXInCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNGRiOTcwOGI5NGI2NzQ1ZjVjMWVhYTY5OWQ0ZDc2NDc3ZGU4NTg4YQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEFwciAxMyAyMzo1NjoyMyAyMDEwIC0wNTAwCi0KLSAgICA4NXh4OiBDb252ZXJ0IGNwdV9pbml0X2YgY29kZSB0byB1c2Ugb3V0X2JlMzIgZm9yIExCQyByZWdpc3RlcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjZDNhYmNmYTJkNGRjOGRmMDlmNmQwMWU3MzVlNGRjMmY2Yzg3ZWJjCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDEyIDE0OjIzOjM1IDIwMTAgKzA4MDAKLQotICAgIGZzbF9zYXRhOiBNb3ZlIHRoZSBzbm9vcCBiaXQgdG8gYW5vdGhlciBwbGFjZQotCi0gICAgRm9yIFAxMDIyIFNBVEEgaG9zdCBjb250cm9sbGVyLCB0aGUgZGF0YSBzbm9vcCBiaXQgb2YgRFczIGluIFBSRFQKLSAgICBpcyBtb3ZlZCB0byBiaXQyOC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGU0NzczZGViYjczNTMyM2E5ZWVkZjM1MzIzOWU4ZTg4ZTAzZDdjNTgKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMTQ6MjM6MjUgMjAxMCArMDgwMAotCi0gICAgZnNsX3NhdGE6IEFkZCB0aGUgd29ya2Fyb3VuZCBmb3IgZXJyYXRhIFNBVEEtQTAwMQotCi0gICAgQWZ0ZXIgcG93ZXIgb24sIHRoZSBTQVRBIGhvc3QgY29udHJvbGxlciBvZiBQMTAyMiBSZXYxIGlzIGNvbmZpZ3VyZWQKLSAgICBpbiBsZWdhY3kgbW9kZSBpbnN0ZWFkIG9mIHRoZSBleHBlY3RlZCBlbnRlcnByaXNlIG1vZGUuCi0KLSAgICBTb2Z0d2FyZSBuZWVkcyB0byBjbGVhciBiaXRbMjhdIG9mIEhDb250cm9sIHJlZ2lzdGVyIHRvIGNoYW5nZSB0bwotICAgIGVudGVycHJpc2UgbW9kZSBhZnRlciBicmluZ2luZyB0aGUgaG9zdCBvZmZsaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOTliYWM0NzlkZDE4MzUyOWY0ZTI1OWEwZGU4ZDMxNjQ0MjE5ZDQ4NwotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIERlYyA4IDExOjU2OjQ4IDIwMDkgKzA4MDAKLQotICAgIGZzbC1kZHI6IEFkZCBleHRyYSBjeWNsZSB0byB0dXJuYXJvdW5kIHRpbWVzCi0KLSAgICBBZGQgYW4gZXh0cmEgY3ljbGUgdHVybmFyb3VuZCB0aW1lIHRvIHJlYWQtPndyaXRlIHRvIGVuc3VyZSBzdGFiaWxpdHkKLSAgICBhdCBoaWdoIEREUiBmcmVxdWVuY2llcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGY4ZDA1ZTVlNTg4OGQ4OGFiNDI1MjRkNjk5OTI0OTM2ZThlNzc5NzAKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgNSAxMjoyMzowMCAyMDEwICswODAwCi0KLSAgICBmc2wtZGRyOiBhZGQgdGhlIG1hY3JvIGZvciBSdHRfTm9tIGRlZmluaXRpb24KLQotICAgIGFkZCB0aGUgbWFjcm8gZGVmaW5pdGlvbiBmb3IgUnR0X05vbSB0ZXJtaW5hdGlvbiB2YWx1ZSBmb3IgRERSMwotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTIzMWM0OThlMDE2YjViZmU4NWYxZWI4N2MyZTA0NGQzMzg5ZDdkYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEFwciA3IDEwOjM5OjQ2IDIwMTAgLTA1MDAKLQotICAgIHBwYy9wNDA4MDogQWRkIHA0MDgwIERFVkRJU1IyICYgU1JEU19QTExDUjAgZGVmaW5lcwotCi0gICAgQWRkZWQgc29tZSBuZWVkZWQgZmluZXMgYW5kIHNvbWUgbWlzYyBhZGRpdGlvbmFsIGRlZmluZXMKLSAgICB1c2VkIGJ5IHA0MDgwIGluaXRpYWxpemF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDE3ZDkwZjMxYTgxMGExOWFkZTFhMWM1MzRmZGU5ZjY1ZDRkNjYzOTAKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgNSAxMjoyMzowMCAyMDEwICswODAwCi0KLSAgICBwcGMvcDQwODA6IEV4dGVuZCB0aGUgR1VUUyBtZW1vcnkgbWFwCi0KLSAgICBFeHRlbmQgcGluIGNvbnRyb2wgYW5kIGNsb2NrIGNvbnRyb2wgdG8gR1VUUyBtZW1vcnkgbWFwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhYjQ4Y2ExYTY2MWI5YWI4ZTNmZWU5ZmUyZGY2NTQzMmIwOWVkMDczCi1BdXRob3I6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBGZWIgMTAgMTc6MzI6NDMgMjAxMCArMDgwMAotCi0gICAgcHBjL3A0MDgwOiBGaXggc3luY2hyb25vdXMgZnJlcXVlbmN5IGNhbGN1bGF0aW9ucwotCi0gICAgV2hlbiBERFIgaXMgaW4gc3luY2hyb25vdXMgbW9kZSwgdGhlIGV4aXN0aW5nIGNvZGUgYXNzaWducyBzeXNjbGsKLSAgICBmcmVxdWVuY3kgdG8gRERSIGZyZXF1ZW5jeS4gIEl0IHNob3VsZCBiZSBzeW5jaHJvbm91cyB3aXRoIHRoZSBwbGF0Zm9ybQotICAgIGZyZXF1ZW5jeS4JQ1BVIGZyZXF1ZW5jeSBpcyBiYXNlZCBvbiBwbGF0Zm9ybSBmcmVxdWVuY3kgaW4gc3luY2hyb25vdXMKLSAgICBtb2RlLgotCi0gICAgQWxzbyBmaXg6Ci0KLSAgICAqIEZpeGVzIHRoZSBiaXQgbWFzayBmb3IgRERSX1NZTkMgKFJDV1NSNVsxODRdKQotICAgICogQ29ycmVjdHMgdGhlIGRldGVjdGlvbiBvZiBzeW5jaHJvbm91cyBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3Jpa2FudGggU3Jpbml2YXNhbiA8c3Jpa2FudGguc3Jpbml2YXNhbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTc0OWMzZGE4ZDg0NDVjZGY3OGQ3MDEyMGE4MDNlM2U5NTUzMTEzYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEFwciA3IDAyOjQ5OjEyIDIwMTAgLTA1MDAKLQotICAgIHBwYy84NXh4OiBGaXh1cCBQQ0kgbm9kZXMgZm9yIFAxX1AyX1JEQgotCi0gICAgV2hpbGUgd2UgaGFkIGZ0X3BjaV9ib2FyZF9zZXR1cCBpdCB3YXNuJ3QgYmVpbmcgY2FsbGVkIGJ5Ci0gICAgZnRfYm9hcmRfc2V0dXAuICBGaXggdGhhdCBzbyB3ZSBhY3R1YWxseSB1cGRhdGUgdGhlIGRldmljZSB0cmVlIFBDSQotICAgIG5vZGVzIG9uIFAxX1AyX1JEQiBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOGNiYjBkZGQ3ZTY5NmM2YTRiZTFhZTNhYjNjOTVkM2M4ZjZhNzAzMQotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglXZWQgQXByIDIxIDA4OjQwOjU5IDIwMTAgKzA4MDAKLQotICAgIG5pb3MyOiBhZGQgbmlvczItZ2VuZXJpYyBib2FyZAotCi0gICAgVGhpcyBpcyBhIGdlbmVyaWMgYXBwcm9hY2ggdG8gcG9ydCB1LWJvb3QgZm9yIG5pb3MyIGJvYXJkcy4KLSAgICBZb3UgbWF5IGZpbmQgdGhlIHVzYWdlIG9mIHRoaXMgYXBwcm9hY2ggb24gdGhlIG5pb3N3aWtpLAotICAgIGh0dHA6Ly9uaW9zd2lraS5jb20vRGFzVUJvb3QKLQotICAgIEEgZnBnYSBwYXJhbWV0ZXIgZmlsZSwgd2hpY2ggY29udGFpbnMgYmFzZSBhZGRyZXNzIGluZm9ybWF0aW9uCi0gICAgYW5kIGRyaXZlcnMgZGVjbGFyYXRpb24sIGlzIGdlbmVyYXRlZCBmcm9tIEFsdGVyYSdzIGhhcmR3YXJlIHN5c3RlbQotICAgIGRlc2NyaXB0aW9uIHNvcGMgZmlsZSB1c2luZyB0b29scy4KLQotICAgIFRoZSBleGFtcGxlIGZwZ2EgcGFyYW1ldGVyIGZpbGUgaXMgY29tcGF0aWJsZSB3aXRoIEVQMUMyMCwgRVAxUzEwCi0gICAgYW5kIEVQMVM0MCBib2FyZHMuIFNvIHRoZXNlIGJvYXJkcyBjYW4gYmUgcmVtb3ZlZCBhZnRlciB0aGlzIGNvbW1pdC4KLSAgICBUaG91Z2ggZXBjcyBjb250cm9sbGVyIGlzIHJlbW92ZWQgdG8gY3V0IHRoZSBkZXBlbmRlbmN5IG9mIGFsdGVyYV9zcGkKLSAgICBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA0NDFjYWMxMGQ4YTk0MzhiMTQ0YWIwYWQ0NjI4MDc4MGI1OGY2MzhiCi1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CVRodSBBcHIgMjIgMTc6Mjc6MTYgMjAxMCArMDgwMAotCi0gICAgbmlvczI6IGZpeCBubyBmbGFzaCwgYWRkIG5hbmQgYW5kIG1tYyBpbml0IGluIGJvYXJkLmMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgZXJyb3Igd2hlbiBDT05GSUdfU1lTX05PX0ZMQVNILiBBbmQgYWRkcwotICAgIG5hbmQgZmxhc2ggYW5kIG1tYyBpbml0aWFsaXphdGlvbiwgd2hpY2ggc2hvdWxkIGdvIGJlZm9yZQotICAgIGVudiBpbml0aWFsaXphdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IGZkMjcxMmQwYjFkNGMxNjI0YmVmMzViNzg0ZWU2NDQ1MWVlNWEwMTcKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJVHVlIEFwciAyMCAxMTowMToxMSAyMDEwICswODAwCi0KLSAgICBuaW9zMjogY29uc29saWRhdGUgcmVzZXQgaW5pdGlhbGl6YXRpb24KLQotICAgIEdsb2JhbCBpbnRlcnJ1cHQgc2hvdWxkIGJlIGRpc2FibGVkIGZyb20gdGhlIGJlZ2lubmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IDk5NDg1Mjk2NmQyZTZjZjk4YzFkYmVlYThlZTYyYzIzM2IzMDVmZmIKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJV2VkIE1hciAzMSAwODozMDowOCAyMDEwICswODAwCi0KLSAgICBhbHRlcmFfanRhZ191YXJ0OiBieXBhc3Mgd2hlbiBubyBqdGFnIGNvbm5lY3Rpb24KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBvcHRpb24gdG8gYnlwYXNzIG91dHB1dCB3YWl0aW5nIHdoZW4gdGhlcmUKLSAgICBpcyBubyBqdGFnIGNvbm5lY3Rpb24uIFRoaXMgYWxsb3dzIHRoZSBqdGFnIHVhcnQgd29yayBzaW1pbGFyCi0gICAgdG8gYSBzZXJpYWwgdWFydCwgaWUsIGJvb3QgZXZlbiB3aXRob3V0IGNvbm5lY3Rpb24uCi0KLSAgICBUaGlzIG9wdGlvbiBpcyBlbmFibGVkIHdpdGggQ09ORklHX0FMVEVSQV9KVEFHX1VBUlRfQllQQVNTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA3ZTgxMmYyZTljZGFjODBmNjI4N2Q0YWVlNWRlYjQzNDU5N2M0ZjhiCi1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CVNhdCBBcHIgMTcgMjM6MzQ6NDAgMjAxMCArMDgwMAotCi0gICAgbmlvczI6IGFkZCBkbWFfYWxsb2NfY29oZXJlbnQKLQotICAgIFRoaXMgZnVuY3Rpb24gcmV0dXJuIGNhY2hlLWxpbmUgYWxpZ25lZCBhbGxvY2F0aW9uIHdoaWNoIGlzIG1hcHBlZAotICAgIHRvIHVuY2FjaGVkIGlvIHJlZ2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IDBkYzFjN2Y2OTJjMTVmZTE3NDVlM2VlYWI5MThlOThlZTYxMjY2NzcKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJU2F0IEFwciAxNyAyMzoxMDowOSAyMDEwICswODAwCi0KLSAgICBuaW9zMjogYWRkIDY0IGJpdHMgc3dhYiBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgNjQgYml0cyBzd2FiIHN1cHBvcnQuIE1vc3QgMzIgYml0cyBwcm9jZXNzb3JzIHVzZQotICAgIHRoaXMuIFdlIG5lZWQgNjQgYml0cyBzd2FiIGZvciBVQkkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCBlNGJmNTg4NjA5ZDhkOWNlZmJjMzEyYTZjNmI4YmIzMDliMTk0ZmQ1Ci1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CVdlZCBNYXIgMzEgMDg6MzY6MjQgMjAxMCArMDgwMAotCi0gICAgbmlvczI6IGFkZCBhbHRlcmEgY2YgcmVzZXQKLQotICAgIFRoaXMgcGF0Y2ggdG9nZ2xlcyBwb3dlciB0byByZXNldCB0aGUgY2YgY2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IGRkMTY4ZWY1YjgyMjU1NDAxZTQ2YTI3ZmFhZTA5ZTM5YzY2OTY3ZmUKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJU2F0IEFwciAxNyAxNzozOToxMiAyMDEwICswODAwCi0KLSAgICBuaW9zMjogYWxsb3cgbGluayBzY3JpcHQgb3ZlcnJpZGluZyBmcm9tIGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCBhbGxvdyBib2FyZHMgdG8gb3ZlcnJpZGUgdGhlIGRlZmF1bHQgbGluayBzY3JpcHQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCAyOWZkN2NlYjNjMWNiN2ZmYWZmY2UxMDQ3ZTgwNmQxZTg1ZTNhYjRiCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVNhdCBBcHIgMjQgMTk6Mjc6MTEgMjAxMCArMDIwMAotCi0gICAgbXBjNTEyMTogcGRtMzYwbmc6IGFkZCBjb3Byb2Nlc3NvciBQT1NUCi0KLSAgICBBZGRzIGNvcHJvY2Vzc29yIGNvbW11bmljYXRpb24gUE9TVCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCAyZWJkYjlhOWQ3YWJjYjE3ZmRiZmRjNGJiYjcxYjRlZjUzOGZjNzEzCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVNhdCBBcHIgMjQgMTk6Mjc6MTAgMjAxMCArMDIwMAotCi0gICAgbXBjNTEyMTogYWRkIGNvbW1vbiBwb3N0X3dvcmRfbG9hZC9zdG9yZSBjb2RlCi0KLSAgICBBZGQgY29tbW9uIHBvc3Rfd29yZF9sb2FkL3Bvc3Rfd29yZF9zdG9yZSByb3V0aW5lcwotICAgIGZvciBhbGwgbXBjNTEyMSBib2FyZHMuIHBkbTM2MG5nIGJvYXJkIFBPU1Qgc3VwcG9ydAotICAgIGFkZGVkIGJ5IHN1YnNlcXVlbnQgcGF0Y2ggbmVlZHMgdGhlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGEzOTIxZWVmYTE0NDBkMjNmMjI3NTE3MDRjZDdkZjk5OTc2OWYxNjkKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJU2F0IEFwciAyNCAxOToyNzowOSAyMDEwICswMjAwCi0KLSAgICBtcGM1MTIxOiBhZGQgc3VwcG9ydCBmb3IgUERNMzYwTkcgYm9hcmQKLQotICAgIFBETTM2ME5HIGlzIGEgTVBDNTEyMUUgYmFzZWQgYm9hcmQgYnkgaWZtIGVjb21hdGljIGdtYmguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFdlaXNzIDxtaWNoYWVsLndlaXNzQGlmbS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgYjk5NDdiYmIwOGQwNDgzYmUwMzAwNGJkYmNlMjgzYjY0NDQ3MWNiNwotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglTYXQgQXByIDI0IDE5OjI3OjA4IDIwMTAgKzAyMDAKLQotICAgIG1wYzUxMjE6IGRldGVybWluZSBSQU0gc2l6ZSB1c2luZyBnZXRfcmFtX3NpemUoKQotCi0gICAgQ29uZmlndXJlIENPTkZJR19TWVNfTUFYX1JBTV9TSVpFIGFkZHJlc3MgcmFuZ2UgaW4KLSAgICBERFIgTG9jYWwgQWNjZXNzIFdpbmRvdyBhbmQgZGV0ZXJtaW5lIHRoZSBSQU0gc2l6ZS4KLSAgICBGaXggRERSIExBVyBhZnRlcndhcmRzIHVzaW5nIGRldGVjdGVkIFJBTSBzaXplLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNWQ5MzdlOGI1OWYyN2Q4YzMwMGEyZTc4YzE2OGE0YzIyZWM2OTIyYQotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglTYXQgQXByIDI0IDE5OjI3OjA3IDIwMTAgKzAyMDAKLQotICAgIG1wYzUxMng6IG1ha2UgTUVNIElPIENvbnRyb2wgY29uZmlndXJhdGlvbiBhIGJvYXJkIGNvbmZpZyBvcHRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDhlMjM0ZTMzYmY2MGE4NTA2ODVjN2U4MWVhOTJkMzgzYzY0MzQ4NmIKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJU2F0IEFwciAyNCAxOToyNzowNiAyMDEwICswMjAwCi0KLSAgICBtcGM1MTIxOiBhZGQgUFNDIHNlcmlhbCBjb21tdW5pY2F0aW9uIHJvdXRpbmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBlM2IyOGU2NzMyOWRlOTlhMzE1ZDUwOTkyMDc2MGRjYmM1NjVmOGM2Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVNhdCBBcHIgMjQgMTk6Mjc6MDUgMjAxMCArMDIwMAotCi0gICAgbXBjNTEyeDogYWRkIG11bHRpIHNlcmlhbCBQU0Mgc3VwcG9ydAotCi0gICAgRXh0ZW5kIG1wYzUxMnggc2VyaWFsIGRyaXZlciB0byBzdXBwb3J0IG11bHRpcGxlIFBTQyBwb3J0cy4KLQotICAgIFN1YnNlcXVlbnQgcGF0Y2hlcyBmb3IgUERNMzYwTkcgYm9hcmQgc3VwcG9ydCBtYWtlIHVzZSBvZiB0aGlzCi0gICAgZnVuY3Rpb25hbGl0eSBieSBkZWZpbmluZyBDT05GSUdfU0VSSUFMX01VTFRJIGluIHRoZSBib2FyZCBjb25maWcKLSAgICBmaWxlLiBBZGRpdGlvbmFsbHkgdGhlIHVzZWQgUFNDIGRldmljZXMgYXJlIHNwZWNpZmllZCBieSBkZWZpbmluZwotICAgIGUuZy4gQ09ORklHX1NZU19QU0MxLCBDT05GSUdfU1lTX1BTQzQgYW5kIENPTkZJR19TWVNfUFNDNi4KLQotICAgIFN1cHBvcnQgZm9yIFBTQyBkZXZpY2VzIG90aGVyIHRoYW4gMSwgMywgNCBhbmQgNiBpcyBub3QgYWRkZWQKLSAgICBieSB0aGlzIHBhdGNoIGJlY2F1c2UgdGhlc2UgYXJlbid0IHVzZWQgY3VycmVudGx5LiBJbiB0aGUgZnV0dXJlCi0gICAgaXQgY2FuIGJlIGVhc2lseSBhZGRlZCB1c2luZyBERUNMQVJFX1BTQ19TRVJJQUxfRlVOQ1RJT05TKE4pIGFuZAotICAgIElOSVRfUFNDX1NFUklBTF9TVFJVQ1RVUkUoTikgbWFjcm9zIGluIGNwdS9tcGM1MTJ4L3NlcmlhbC5jLgotICAgIEFkZGl0aW9uYWxseSB5b3UgaGF2ZSB0byBhZGQgY29kZSBmb3IgcmVnaXN0ZXJpbmcgYWRkZWQKLSAgICBkZXZpY2VzIGluIHNlcmlhbF9pbml0aWFsaXplKCkgaW4gY29tbW9uL3NlcmlhbC5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgZmJiMDAzMGUzODk0MTE5YzA4OTI1NmYxNjYyNmVkZDE2NmM3NjI5YwotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglTYXQgQXByIDI0IDE5OjI3OjA0IDIwMTAgKzAyMDAKLQotICAgIHNlcmlhbDogc3RydWN0IHNlcmlhbF9kZXZpY2U6IGFkZCB1bmluaXQoKSBlbnRyeSBmb3IgZHJpdmVycwotCi0gICAgU3Vic2VxdWVudCBwYXRjaCBleHRlbmRzIG1wYzUxMnggc2VyaWFsIGRyaXZlciB0byBzdXBwb3J0Ci0gICAgbXVsdGlwbGUgUFNDIHBvcnRzLiBUaGUgZHJpdmVyIHdpbGwgcHJvdmlkZSBhbiB1bmluaXQoKQotICAgIGZ1bmN0aW9uIHRvIHN0b3AgdGhlIHNlcmlhbCBjb250cm9sbGVyIGFuZCB0byBkaXNhYmxlIHRoZQotICAgIGNvbnRyb2xsZXIncyBjbG9jay4gQWRkaW5nIHVuaW5pdCgpIGVudHJ5IHRvIHN0cnVjdCBzZXJpYWxfZGV2aWNlCi0gICAgYWxsb3dzIGRpc2FibGluZyB0aGUgc2VyaWFsIGNvbnRyb2xsZXIgYWZ0ZXIgdXNhZ2Ugb2YKLSAgICBhIHN0ZGlvIHNlcmlhbCBkZXZpY2UuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdW5pbml0KCkgZW50cnkgdG8gdGhlIHN0cnVjdCBzZXJpYWxfZGV2aWNlCi0gICAgYW5kIGZpeGVzIGluaXRpYWxpemF0aW9uIG9mIHRoaXMgc3RydWN0dXJlIGluIHRoZSBjb2RlCi0gICAgYWNjb3JkaW5nbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA3N2MxNDU4ZDEzMGQzMzcwNDQ3MmRiOWM4OGQyMzEwYzhmYzkwZjRjCi1BdXRob3I6IERpcGVuIER1ZGhhdCA8ZGlwZW4uZHVkaGF0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gT2N0IDUgMTU6NDE6NTggMjAwOSArMDUzMAotCi0gICAgcHBjLzg1eHg6IFBJTyBTdXBwb3J0IGZvciBGU0wgZVNESEMgQ29udHJvbGxlciBEcml2ZXIKLQotICAgIE9uIHNvbWUgRnJlZXNjYWxlIFNvQyBJbnRlcm5hbCBETUEgb2YgZVNESEMgY29udHJvbGxlciBoYXMgYnVnLgotICAgIFNvIFBJTyBNb2RlIGhhcyBiZWVuIGludHJvZHVjZWQgdG8gZG8gZGF0YSB0cmFuc2ZlciB1c2luZyBDUFUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMWEyZTIwM2IzMWQzM2ZiNzIwZjJjZjEwMzNiMjQxYWQzNmFiNDA1YQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEFwciAyMCAxOTozNzo1NCAyMDEwIC0wNTAwCi0KLSAgICBtcGM4M3h4OiB0dXJuIG9uIGljYWNoZSBpbiBjb3JlIGluaXRpYWxpemF0aW9uIHRvIGltcHJvdmUgdS1ib290IGJvb3QgdGltZQotCi0gICAgYmVmb3JlLCBNUEM4MzQ5SVRYIGJvb3RzIHUtYm9vdCBpbiA0LjNzZWM6Ci0KLQkgICAgY29sdW1uMSBpcyBlbGFwc2VkIHRpbWUgc2luY2UgZmlyc3QgbWVzc2FnZQotCSAgICBjb2x1bW4yIGlzIGVsYXBzZWQgdGltZSBzaW5jZSBwcmV2aW91cyBtZXNzYWdlCi0JICAgIGNvbHVtbjMgaXMgdGhlIG1lc3NhZ2UKLSAgICAwLjAwMCAwLjAwMDogVS1Cb290IDIwMTAuMDMtMDAxMjYtZ2ZkNGU0OWMgKEFwciAxMSAyMDEwIC0gMTc6MjU6MjkpIE1QQzgzWFgKLSAgICAwLjAwMCAwLjAwMDoKLSAgICAwLjAwMCAwLjAwMDogUmVzZXQgU3RhdHVzOgotICAgIDAuMDAwIDAuMDAwOgotICAgIDAuMDMyIDAuMDMyOiBDUFU6CWUzMDBjMSwgTVBDODM0OUUsIFJldjogMS4xIGF0IDUzMy4zMzMgTUh6LCBDU0I6IDI2Ni42NjcgTUh6Ci0gICAgMC4wMzIgMC4wMDA6IEJvYXJkOiBGcmVlc2NhbGUgTVBDODM0OUUtbUlUWAotICAgIDAuMDMyIDAuMDAwOiBVUE1BOglDb25maWd1cmVkIGZvciBjb21wYWN0IGZsYXNoCi0gICAgMC4wMzIgMC4wMDA6IEkyQzoJcmVhZHkKLSAgICAwLjA2MSAwLjAyODogRFJBTToJMjU2IE1CIChERFIxLCA2NC1iaXQsIEVDQyBvZmYsIDI2Ni42NjcgTUh6KQotICAgIDEuNTE2IDEuNDU2OiBGTEFTSDogMTYgTUIKLSAgICAyLjY0MSAxLjEyNTogUENJOglCdXMgRGV2IFZlbklkIERldklkIENsYXNzIEludAotICAgIDIuNjUyIDAuMDExOgkgMDAgIDEwICAxMDk1ICAzMTE0ICAwMTgwICAwMAotICAgIDIuNjUyIDAuMDAwOiBQQ0k6CUJ1cyBEZXYgVmVuSWQgRGV2SWQgQ2xhc3MgSW50Ci0gICAgMi42NTIgMC4wMDA6IEluOglzZXJpYWwKLSAgICAyLjY1MiAwLjAwMDogT3V0OglzZXJpYWwKLSAgICAyLjY1MiAwLjAwMDogRXJyOglzZXJpYWwKLSAgICAyLjY4MiAwLjAzMDogQm9hcmQgcmV2aXNpb246IDEuMCAoUENGODQ3NUEpCi0gICAgMy4wODAgMC4zOTg6IE5ldDoJVFNFQzE6IE5vIHN1cHBvcnQgZm9yIFBIWSBpZCBmZmZmZmZmZjsgYXNzdW1pbmcgZ2VuZXJpYwotICAgIDMuMDgwIDAuMDAwOiBUU0VDMCwgVFNFQzEKLSAgICA0LjMwMCAxLjIxOTogSURFOglCdXMgMDogLioqIFRpbWVvdXQgKioKLQotICAgIGFmdGVyLCBNUEM4MzQ5SVRYIGJvb3RzIHUtYm9vdCBpbiAzLjBzZWM6Ci0KLSAgICAwLjAxMCAwLjAxMDogVS1Cb290IDIwMTAuMDMtMDAxMjctZzRiNDY4Y2MtZGlydHkgKEFwciAxMSAyMDEwIC0gMTc6NDc6MjkpIE1QQzgzWFgKLSAgICAwLjAxMCAwLjAwMDoKLSAgICAwLjAxMCAwLjAwMDogUmVzZXQgU3RhdHVzOgotICAgIDAuMDEwIDAuMDAwOgotICAgIDAuMDE3IDAuMDA3OiBDUFU6CWUzMDBjMSwgTVBDODM0OUUsIFJldjogMS4xIGF0IDUzMy4zMzMgTUh6LCBDU0I6IDI2Ni42NjcgTUh6Ci0gICAgMC4wMTcgMC4wMDA6IEJvYXJkOiBGcmVlc2NhbGUgTVBDODM0OUUtbUlUWAotICAgIDAuMDM4IDAuMDIwOiBVUE1BOglDb25maWd1cmVkIGZvciBjb21wYWN0IGZsYXNoCi0gICAgMC4wMzggMC4wMDA6IEkyQzoJcmVhZHkKLSAgICAwLjAzOCAwLjAwMDogRFJBTToJMjU2IE1CIChERFIxLCA2NC1iaXQsIEVDQyBvZmYsIDI2Ni42NjcgTUh6KQotICAgIDAuMjYwIDAuMjIyOiBGTEFTSDogMTYgTUIKLSAgICAxLjM5MCAxLjEzMDogUENJOglCdXMgRGV2IFZlbklkIERldklkIENsYXNzIEludAotICAgIDEuMzkwIDAuMDAwOgkgMDAgIDEwICAxMDk1ICAzMTE0ICAwMTgwICAwMAotICAgIDEuMzkwIDAuMDAwOiBQQ0k6CUJ1cyBEZXYgVmVuSWQgRGV2SWQgQ2xhc3MgSW50Ci0gICAgMS40MDAgMC4wMTA6IEluOglzZXJpYWwKLSAgICAxLjQwMCAwLjAwMDogT3V0OglzZXJpYWwKLSAgICAxLjQwMCAwLjAwMDogRXJyOglzZXJpYWwKLSAgICAxLjQwMCAwLjAwMDogQm9hcmQgcmV2aXNpb246IDEuMCAoUENGODQ3NUEpCi0gICAgMS44MzIgMC40MzI6IE5ldDoJVFNFQzE6IE5vIHN1cHBvcnQgZm9yIFBIWSBpZCBmZmZmZmZmZjsgYXNzdW1pbmcgZ2VuZXJpYwotICAgIDEuODMyIDAuMDAwOiBUU0VDMCwgVFNFQzEKLSAgICAzLjAzOCAxLjIwNTogSURFOglCdXMgMDogLioqIFRpbWVvdXQgKioKLQotICAgIGFsc28gdGVzdGVkIG9uIHRoZXNlIGJvYXJkcyAoYWxiZWl0IHdpdGggYSBsZXNzIGFjY3VyYXRlCi0gICAgYm9vdHRpbWUgbWVhc3VyZW1lbnQgbWV0aG9kKToKLQotICAgIHNlY29uZHM6IGJlZm9yZSAgYWZ0ZXIKLSAgICA4MzQ5TURTICB+Mi42ICAgIH4yLjIKLSAgICA4MzYwTURTICB+Mi44ICAgIH4yLjYKLSAgICA4MzEzUkRCICB+Mi41ICAgIH4yLjMgI25hbmQgYm9vdAotICAgIDgzN3hSREIgIH4zLjEgICAgfjIuMwotCi0gICAgYWxzbyB0ZXN0ZWQgb24gYW4gODMyM0VSREIuCi0KLSAgICB2MjogYWxzbyByZW1vdmUgdGhlIGRlbGF5ZWQgaWNhY2hlIGVuYWJsZW1lbnQgYXNzdW1wdGlvbiBpbiBhcmNoIHBwYydzCi0gICAgYm9hcmQuYywgYW5kIGFkZCBhIENPTkZJR19NUEM4M3h4IGRlZmluZSBpbiB0aGUgSVRYIGNvbmZpZyBmaWxlIGZvcgotICAgIGNvbnNpc3RlbmN5IChldmVuIHRob3VnaCBpdCB3YXMgYWxyZWFkeSBiZWluZyBkZWZpbmVkIGluIDgzeHgnCi0gICAgY29uZmlnLm1rKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMDU5ZTkwZTE2ZTEyNmUyNWRhMzNjZTIzYTM3ZTJhY2NlODQyODRjCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXByIDE1IDE3OjM2OjA1IDIwMTAgLTA1MDAKLQotICAgIG1wYzgzeHg6IGVuYWJsZSBjb21tYW5kIGxpbmUgYXV0b2NvbXBsZXRpb24KLQotICAgIGJlY2F1c2UgaXQncyBjb252ZW5pZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRmZTgxMmM3NDRlZTZkYWNhZTNiNGQ1NTM2OTQ2NDI2NjhkOWFjOWQKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBcHIgMTUgMTc6MzY6MDIgMjAxMCAtMDUwMAotCi0gICAgbXBjODN4eDogdXNlICJBIiBub21lbmNsYXR1cmUgb25seSBvbiBtcGM4MzR4IGFuZCBtcGM4MzZ4IGZhbWlsaWVzCi0KLSAgICBtYXJrZXRpbmcgZGlkbid0IGV4dGVuZCB0aGVpciBwb3N0cGVuZC13aXRoLWFuLUEgbmFtaW5nIHN0cmF0ZWd5Ci0gICAgb24gcmV2LjIncyBhbmQgaGlnaGVyIGJleW9uZCB0aGUgZmlyc3QgdHdvIDgzeHggZmFtaWxpZXMuICBUaGlzCi0gICAgcGF0Y2ggc3RvcHMgdXMgZnJvbSBtaXNyZXBvcnRpbmcgd2UncmUgcnVubmluZyBlLmcuLCBvbiBhbiBNUEM4MzEzRUEsCi0gICAgd2hlbiBzdWNoIGEgbmFtZSBkb2Vzbid0IGV4aXN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI3ZWY1NzhkZjdiOWM3ODYyYzM2YTMxYjgxOWM2NTJmOGIwYWVlYTAKLUF1dGhvcjogUmluaSB2YW4gWmV0dGVuIDxyaW5pQGFydm9vLm5sPgotRGF0ZToJVGh1IEFwciAxNSAxNjowMzowNSAyMDEwICswMjAwCi0KLSAgICBtcGM4M3h4OiBVc2UgQ09ORklHX0ZTTF9FU0RIQyB0byBlbmFibGUgc2RoYyBjbGsKLQotICAgIEVuYWJsZSBlU0RIQyBDbG9jayBiYXNlZCBvbiBnZW5lcmljIENPTkZJR19GU0xfRVNESEMgZGVmaW5lCi0gICAgaW5zdGVhZCBvZiBhIHBsYXRmb3JtIGRlZmluZS4gVGhpcyB3aWxsIGVuYWJsZSBhbGwgdGhlIDgzeHgKLSAgICBwbGF0Zm9ybXMgdG8gdXNlIHNkaGNfY2xrIGJhc2VkIG9uIENPTkZJR19GU0xfRVNESEMuICBJdCdzCi0gICAgdGhlIHNhbWUgcGF0Y2ggYXMgY29tbWl0IDZiOWVhMDhjNTAxMGVhYjVhZDEwNTZiYzliZjAzM2FmYjY3MmQ5Y2MKLSAgICBmb3IgdGhlIHBwYy84NXh4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmluaSA8cmluaUBhcnZvby5ubD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTQ3YTEyYmVjZjY2ZjAyYTU2ZGE5MWMxNjFlMmVkYjYyNWU5ZjIwYwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgQXByIDE1IDE2OjA3OjI4IDIwMTAgKzAyMDAKLQotICAgIE1vdmUgYXJjaC9wcGMgdG8gYXJjaC9wb3dlcnBjCi0KLSAgICBBcyBkaXNjdXNzZWQgb24gdGhlIGxpc3QsIG1vdmUgImFyY2gvcHBjIiB0byAiYXJjaC9wb3dlcnBjIiB0bwotICAgIGJldHRlciBtYXRjaCB0aGUgTGludXggZGlyZWN0b3J5IHN0cnVjdHVyZS4KLQotICAgIFBsZWFzZSBub3RlIHRoYXQgdGhpcyBwYXRjaCBhbHNvIGNoYW5nZXMgdGhlICJwcGMiIHRhcmdldCBpbgotICAgIE1BS0VBTEwgdG8gInBvd2VycGMiIHRvIG1hdGNoIHRoaXMgbmV3IGluZnJhc3RydWN0dXJlLiBCdXQgInBwYyIKLSAgICBpcyBrZXB0IGFzIGFuIGFsaWFzIGZvciBub3csIHRvIG5vdCBicmVhayBjb21wYXRpYmlsaXR5IHdpdGgKLSAgICBzY3JpcHRzIHVzaW5nIHRoaXMgbmFtZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgQ2M6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQ2M6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGNmNmViNmRhNDMzMTc5Njc0NTcxZjkzNzA1NjZiMWVjODk4OWE0MWEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxNCAxMzo1NzoxOCAyMDEwICswMjAwCi0KLSAgICBwcGM0eHg6IFRMQiBpbml0IGZpbGUgY2xlYW51cAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIG5ldyBtYWNyb3MsIHdpdGggZnJlcXVlbnRseSB1c2VkIGNvbWJpbmF0aW9ucyBvZiB0aGUKLSAgICA0eHggVExCIGFjY2VzcyBjb250cm9sIGFuZCBzdG9yYWdlIGF0dGlidXRlcy4gQWRkaXRpb25hbGx5IHRoZSA0eHggaW5pdC5TCi0gICAgZmlsZXMgYXJlIHVwZGF0ZWQgdG8gbWFrZSB1c2Ugb2YgdGhlc2UgbmV3IG1hY3Jvcy4gUmVzdWx0aW5nIGluIGVhc2llcgotICAgIHRvIHJlYWQgVExCIGRlZmluaXRpb25zLgotCi0gICAgQWRkaXRpb25hbGx5IHNvbWUgaW5pdC5TIGZpbGVzIGFyZSB1cGRhdGVkIHRvIHVzZSB0aGUgbW11IGhlYWRlciBmb3IgdGhlCi0gICAgVExCIGRlZmluZXMsIGluc3RlYWQgb2YgZGVmaW5pbmcgdGhlaXIgb3duIG1hY3Jvcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDI2YTMzNTA0YTU1ZTQ4ODI1MjBmMmU5ZGE5NmJhNmMyMmJhZGIzNTMKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMTU6MDg6MTcgMjAxMCAtMDQwMAotCi0gICAgZnNsX2kyYzogQWRkZWQgYSBjYWxscG9pbnQgZm9yIGkyY19ib2FyZF9sYXRlX2luaXQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNhbGxwb2ludCBpbiBpMmNfaW5pdCB0aGF0IGFsbG93cyBib2FyZCBzcGVjaWZpYwotICAgIGkyYyBib2FyZCBpbml0aWFsaXphdGlvbiAodHlwaWNhbGx5IGZvciBpMmMgYnVzIHJlc2V0KSB0aGF0IGlzIGNhbGxlZAotICAgIGFmdGVyIGkyY19pbml0IG9wZXJhdGlvbnMsIGFsbG93aW5nIHRoZSBpMmNfYm9hcmRfbGF0ZV9pbml0IGZ1bmN0aW9uCi0gICAgdG8gdXNlIHRoZSBwcmUtY29uZmlndXJlZCBpMmMgYnVzIHNwZWVkIGFuZCBzbGF2ZSBhZGRyZXNzLgotCi1jb21taXQgMjU0YWI3YmQ0NjQ2NTc2MDBhYmE2OWQ4NDA0MDZmOTM1OGYzZTExNgotQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLURhdGU6CUZyaSBBcHIgMTYgMTY6MTI6MzkgMjAxMCAtMDQwMAotCi0gICAgbmlvczI6IE1vdmUgaW5kaXZpZHVhbCBib2FyZCBsaW5rZXIgc2NyaXB0cyB0byBjb21tb24gc2NyaXB0IGluIGNwdSB0cmVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA4ZmY5NzJjNmU5OTkzOGYxYTAzM2U1NTAwZGNjYzlhMzdjZTM0MDZmCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBBcHIgMTYgMTI6NTY6MzMgMjAxMCArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogQ29uc29saWRhdGUgY2FjaGUgY29kZQotCi0gICAgTWVyZ2UgY3B1IGFuZCBsaWIgY2FjaGUgY29kZS4KLSAgICBGbHVzaCBjYWNoZSBiZWZvcmUgZGlzYWJsaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgOWI0ZDkwNTY5MDI4NjA0YmM0OTFlYTQxOTE4N2MzMWU0NDY3YmRjYQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgQXByIDE2IDEyOjAxOjMyIDIwMTAgKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IEZsdXNoIGNhY2hlIGJlZm9yZSBqdW1waW5nIHRvIGtlcm5lbAotCi0gICAgVGhlcmUgaXMgdXNlZCBtYXggY2FjaGUgc2l6ZSBvbiBzeXN0ZW0gd2hpY2ggZG9lc24ndCBkZWZpbmUKLSAgICBjYWNoZSBzaXplLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgNzA1MjQ4ODNiMDQyNDI3N2U1YjNmZjM3NjhjMGM1NjI4YjVmY2U0NAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgQXByIDE2IDExOjU5OjI5IDIwMTAgKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IFN1cHBvcnQgc3lzdGVtIHdpdGggV0IgY2FjaGUKLQotICAgIFdCIGNhY2hlIHVzZSBkaWZmZXJlbnQgaW5zdHJ1Y3Rpb24gdGhhdCBXVCBjYWNoZSBidXQgdGhlIG1ham9yIGNvZGUKLSAgICBpcyB0aGF0IHNhbWUuIFRoYXQgbWVhbnMgdGhhdCB3ZGMuZmx1c2ggb24gc3lzdGVtIHdpdGggV1QgY2FjaGUKLSAgICBkbyB0aGUgc2FtZSB0aGluZyBhcyBiZWZvcmUuCi0KLSAgICBZb3UgbmVlZCBuZXdlciB0b29sY2hhaW4gd2l0aCB3ZGMuZmx1c2ggc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IDk3NjliNzNmNjBmYzBmYjhkZTdhYjE2ZmY2MzAwZWFlNTY1MDUwMjAKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIEFwciAxNiAxMTo1NzozNSAyMDEwICswMjAwCi0KLSAgICBtaWNyb2JsYXplOiBDaGFuZ2UgaW5pdGlhbGl6YXRpb24gc2VxdWVuY2UKLQotICAgIGVudl9yZWxvY2F0aW9uIHNob3VsZCBiZSBjYWxsZWQgZmlyc3QuCi0gICAgQWRkZWQgc3RkaW9faW5pdCB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCBlNjE3N2IzNmI4N2QwY2U2Mjc2NTFlNDA3YjkxMjQ1ZjE2ZTUzODJlCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBBcHIgMTYgMTE6NTU6MDEgMjAxMCArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogQ2hhbmdlIGNhY2hlIHJlcG9ydCBtZXNzYWdlcwotCi0gICAgSXQgaXMgbW9yZSBhY2N1cmF0ZSB0byBzaG93IHRoYXQgY2FjaGVzIGFyZSBPRkYgaW5zdGVhZCBvZiBGQUlMLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgODEyNWM5ODBjYzI4MjAwMGNiZGRiNDE1ZjhkZGJlYmY5NmU0ZWRiNAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgQXByIDE2IDExOjUxOjU5IDIwMTAgKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IEZpeCBpbnRlcnJ1cHQgaGFuZGxlciBjb2RlCi0KLSAgICBJdCBpcyBiZXR0ZXIgdG8gcmVhZCBpdnIgYW5kIHJlYWN0IG9uIGl0IHRoYW4gZG8gbG9uZyBwYXJzaW5nIGZyb20KLSAgICB0d28gcmVncy4gSW50ZXJydXB0IGNvbnRyb2xsZXIgcmV0dXJzIGFjdHVhbCBpcnEgbnVtYmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgYjI2NjQwOTcxYTdiYTg4MDBmMGViMzJhZjE0NWZmMDcyN2ZlMjFmZQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgQXByIDE2IDExOjQzOjQzIDIwMTAgKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IE1vdmUgRlNMIGluaXRpYWxpemF0aW9uIHRvIGJvYXJkLmMKLQotICAgIE1vdmUgRlNMIG91dCBvZiBpbnRlcnJ1cHQgY29udHJvbGxlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IDViYmNiNmNmMjJiMTEyMWQ4YzNlNTZiMGUxZmI4NDM2NmU5MDNhYzcKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIEFwciAxNiAxMTozNzo0MSAyMDEwICswMjAwCi0KLSAgICBtaWNyb2JsYXplOiBNb3ZlIHRpbWVyIGluaXRpYWxpemF0aW9uIHRvIGJvYXJkLmMKLQotICAgIEkgd291bGQgbGlrZSB0byBoYW5kbGUgY2FzZSB3aGVyZSBzeXN0ZW0gZG9lc24ndCBjb250YWluCi0gICAgaW50YyB0aGF0J3Mgd2h5IEkgbmVlZCB0aW1lciBpbml0aWFsaXphdGlvbiBvdXQgb2YgaW50YyBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgY2M1MzY5MGUwNWY0N2I0YzI1ZTBhNTI4ZGU1MGUwMjRmYzAxNjRhZAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgQXByIDE2IDExOjMwOjE2IDIwMTAgKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IEZpeCBpcnEuUyBjb2RlCi0KLSAgICBJdCBpcyBhbmNpZW50IGNvZGUuIFRoZXJlIGlzIHBvc3NpYmxlIHRvIHNhdmUgc2V2ZXJhbCBpbnN0cnVjdGlvbnMKLSAgICBqdXN0IGlmIHdlIHVzZSBvZmZzZXQgaW5zdGVhZCBvZiBhZGRpawotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgMzk4YjFkNTdhNmE1NmFhZGExZjc3MTk4NzQ2YTdkZDFiMDM4Y2Q1ZAotQXV0aG9yOiBBcnVuIEJoYW51IDxhcnVuQGJoYW51Lm5ldD4KLURhdGU6CVRodSBBcHIgMTUgMTg6Mjc6MTcgMjAxMCArMDgwMAotCi0gICAgbWljcm9ibGF6ZTogQWRkIEZEVCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgRkRUIChmbGF0dGVuZWQgZGV2aWNlIHRyZWUpIHN1cHBvcnQgdG8gbWljcm9ibGF6ZSBhcmNoLgotCi0gICAgVGVzdGVkIHdpdGggTGludXggYXJjaC9taWNyb2JsYXplIGtlcm5lbHMgd2l0aCBhbmQgd2l0aG91dCBjb21waWxlZCBpbgotICAgIEZEVCBvbiBYaWxpbnggTUw1MDYgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBcnVuIEJoYW51IDxhcnVuQGJoYW51Lm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCAyYTcyZTllZDE4ZDIxNjRlYjdmZTU2OTExOTM0MmViNjMxYjU2OGRhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBBcHIgOSAxNDowMzo1OSAyMDEwICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBvcHRpb24gZm9yIFBQQzQ0MFNQZSBwb3J0cyB3aXRob3V0IG9sZCBSZXYuIEEgc3VwcG9ydAotCi0gICAgVGhlIDQ0MFNQZSBSZXYuIEEgaXMgcXVpdGUgb2xkIGFuZCBuZXdlciA0NDBTUGUgYm9hcmRzIGRvbid0IG5lZWQgc3VwcG9ydAotICAgIGZvciB0aGlzIENQVSByZXZpc2lvbi4gU2luY2UgcmVtb3Zpbmcgc3VwcG9ydCBmb3IgdGhpcyBvbGRlciB2ZXJzaW9uCi0gICAgc2ltcGxpZmllcyB0aGUgY3JlYXRpb24gZm9yIG5ld2VyIFUtQm9vdCBwb3J0cywgdGhpcyBwYXRjaCBub3cgZW5hYmxlcwotICAgIDQ0MFNQZSA+IFJldi4gQSBzdXBwb3J0IGJ5IGNyZWF0aW5nIHRoZSBDT05GSUdfNDQwU1BFX1JFVkEgZGVmaW5lLiBCeQotICAgIGRlZmluaW5nIHRoaXMgaW4gdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIsIFJldi4gQSB3aWxsIHN0aWxsIGJlIHN1cHBvcnRlZC4KLSAgICBPdGhlcndpc2UgKGRlZmF1bHQgZm9yIG5ld2VyIGJvYXJkIHBvcnRzKSwgUmV2LiBBIHdpbGwgbm90IGJlIHN1cHBvcnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDI4ODk5MWM5M2ZkZDE1MGVmMzgxN2U2NzZjNjU3Y2I0ODc0NjhkMzgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEFwciA4IDA5OjMzOjEzIDIwMTAgKzAyMDAKLQotICAgIHBwYzR4eDogYWxwcjogUmVtb3ZlIHNvbWUgbm90IG5lZWRlZCBjb21tYW5kcyB0byBtYWtlIGltYWdlIGZpdCBhZ2FpbgotCi0gICAgVGhlIGxhdGVzdCBjaGFuZ2VzIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiB0aGUgYWxwciBpbWFnZSBhIGJpdCBtb3JlLgotICAgIE5vdyBpdCBkb2Vzbid0IGZpdCBpbnRvIHRoZSAyNTZrIHJlc2VydmVkIGZvciBpdC4gVGhpcyBwYXRjaCBub3cgcmVtb3ZlcwotICAgIHRoZSBjb21tYW5kcyAibG9hZHMiIGFuZCAibG9hZGIiIHdoaWNoIGFyZSBub3QgbmVlZGVkIGluIHRoZSBwcm9kdWN0aW9uCi0gICAgc3lzdGVtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBwcm9kcml2ZS5ubD4KLQotY29tbWl0IDhkMzIxYjgxYzU0NDFkYjkzNDI1ZWUzN2NiNzljYzUxZDljZTJmYjAKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MjEgMjAxMCAtMDUwMAotCi0gICAgVXBkYXRlIFJFQURNRSB0byByZWZsZWN0IG5ldyBkaXJlY3Rvcnkgc3RydWN0dXJlCi0KLSAgICBBbHNvIGZpeCB1cCBzb21lIHdoaXRlc3BhY2UgaXNzdWVzIHRoYXQgd2VyZSBpbnRyb2R1Y2VkIHdoZW4gbW92aW5nCi0gICAgZGlyZWN0b3J5IGxvY2F0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAzN2U0ZGFmYWFlOTZjY2M5NzBhODk2ZjkwMTg2ZmFkY2Y4NThhYWQwCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjIwIDIwMTAgLTA1MDAKLQotICAgIG5pb3MyOiBNb3ZlIGNwdS9uaW9zMi8qIHRvIGFyY2gvbmlvczIvY3B1LyoKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA2YThhMmI3MDU4YTM5OGZlMjA3MDIxMjU5Y2IyYzUyOWZiMjI1ZWZmCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjE5IDIwMTAgLTA1MDAKLQotICAgIG5pb3M6IE1vdmUgY3B1L25pb3MvKiB0byBhcmNoL25pb3MvY3B1LyoKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAxZTljMjY1NzhlYmJlZWNiYWYzZDhmYjU3NDk1NzQwNWVmZjE3Yzg2Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjE4IDIwMTAgLTA1MDAKLQotICAgIHNwYXJjOiBNb3ZlIGNwdS9sZW9uWzIzXSB0byBhcmNoL3NwYXJjL2NwdS9sZW9uWzIzXQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGU5YTg4MjgwM2ViNTlmNDgyY2E0YWE2ZmZkNmZhMjFlNGM1M2Q2MTgKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MTcgMjAxMCAtMDUwMAotCi0gICAgaTM4NjogTW92ZSBjcHUvaTM4Ni8qIHRvIGFyY2gvaTM4Ni9jcHUvKgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDYyNjBmYjA0NThkOTRjODNhYTViMTgwNzQ1YjE5NDZjMGM5NGQzNjQKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MTYgMjAxMCAtMDUwMAotCi0gICAgbWljcm9ibGF6ZTogTW92ZSBjcHUvbWljcm9ibGF6ZS8qIHRvIGFyY2gvbWljcm9ibGF6ZS9jcHUvKgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDhhMTVjMmQxMGIwYjc4NGYwY2ZiYTEyNDBmMDZhNGQ5MzNiOTc1ZmEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MTUgMjAxMCAtMDUwMAotCi0gICAgYXZyMzI6IE1vdmUgY3B1L2F0MzJhcC8qIHRvIGFyY2gvYXZyMzIvY3B1LyoKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAxZTM4MjdkOWNmOTQ0MmUxODg2MDRmZDEwOTlhYzM4Mzc1MTM1MTI1Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjE0IDIwMTAgLTA1MDAKLQotICAgIG1pcHM6IE1vdmUgY3B1L21pcHMvKiB0byBhcmNoL21pcHMvY3B1LyoKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBjNmZiODNkMjE3MjkzMjE0MjYzMDhjM2FjZmYyYTNkZmIyMGQyNTBiCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjEzIDIwMTAgLTA1MDAKLQotICAgIGJsYWNrZmluOiBNb3ZlIGNwdS9ibGFja2Zpbi8qIHRvIGFyY2gvYmxhY2tmaW4vY3B1LyoKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBhNDE0NTUzNDg1MWJmNzQ2MTljYjM3M2E5NDI2MTNhNzQ1NDdiYjgyCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjEyIDIwMTAgLTA1MDAKLQotICAgIG02OGs6IE1vdmUgY3B1LyRDUFUgdG8gYXJjaC9tNjhrL2NwdS8kQ1BVCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgODRhZDY4ODQ3M2JlYzI4NzVlMTcxYjcxMDQwZWI5ZTAzM2M2YzIwNgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIEFwciAxMiAyMjoyODoxMSAyMDEwIC0wNTAwCi0KLSAgICBhcm06IE1vdmUgY3B1LyRDUFUgdG8gYXJjaC9hcm0vY3B1LyRDUFUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA4ZjBmZWM3NGFjNmQwZjNhNzEzNGNjZWJhZmExZWQ5YmQ4YzcxMmJhCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjEwIDIwMTAgLTA1MDAKLQotICAgIHNoOiBNb3ZlIGNwdS8kQ1BVIHRvIGFyY2gvc2gvY3B1LyRDUFUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA4ZDFmMjY4MjA0YjA3ZTE3MmYzY2I1Y2VlMGEzOTc0ZDYwNWIwYjk4Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjA5IDIwMTAgLTA1MDAKLQotICAgIHBwYzogTW92ZSBjcHUvJENQVSB0byBhcmNoL3BwYy9jcHUvJENQVQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDgxOTgzM2FmMzlhOTFmYTFjMWU4MjUyODYyYmJkYTZmNWE2MDJmN2IKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MDggMjAxMCAtMDUwMAotCi0gICAgTW92ZSBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgaW5jbHVkZXMgdG8gYXJjaC8kQVJDSC9pbmNsdWRlL2FzbQotCi0gICAgVGhpcyBoZWxwcyB0byBjbGVhbiB1cCB0aGUgaW5jbHVkZS8gZGlyZWN0b3J5IHNvIHRoYXQgaXQgb25seSBjb250YWlucwotICAgIG5vbi1hcmNoaXRlY3R1cmUtc3BlY2lmaWMgaGVhZGVycyBhbmQgYWxzbyBtYXRjaGVzIExpbnV4J3MgZGlyZWN0b3J5Ci0gICAgbGF5b3V0IHdoaWNoIG1hbnkgVS1Cb290IGRldmVsb3BlcnMgYXJlIGFscmVhZHkgZmFtaWxpYXIgd2l0aC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA2MWYyYjM4YTE3ZjViMjFjNTlmMmFmZTZjZjFjYmI1ZjI4NjM4Y2Y5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjA3IDIwMTAgLTA1MDAKLQotICAgIFJlcGxhY2UgIiNpbmNsdWRlIDxhc20tJEFSQ0gvJEZJTEU+IiB3aXRoICIjaW5jbHVkZSA8YXNtLyRGSUxFPiIKLQotICAgIFRoZSBhcHByb3ByaWF0ZSBpbmNsdWRlL2FzbS0kQVJDSCBkaXJlY3Rvcnkgc2hvdWxkIGFscmVhZHkgYnkgc3ltbGlua2VkCi0gICAgdG8gaW5jbHVkZS9hc20gc28gdXNpbmcgdGhlIHdob2xlICJhc20tJEFSQ0giIHBhdGggaXMgdW5uZWNlc3NhcnkuCi0KLSAgICBUaGlzIGNoYW5nZSBzaG91bGQgYWxzbyBhbGxvdyB1cyB0byBtb3ZlIHRoZSBpbmNsdWRlL2FzbS0kQVJDSAotICAgIGRpcmVjdG9yaWVzIGludG8gdGhlaXIgYXBwcm9wcmlhdGUgbGliLyRBUkNILyBkaXJlY3Rvcmllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAwZGU3MWQ1MDcxNTdjNGJkNGZkZGNkM2E0MTkxNDBkMmI5ODZlZWQyCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjA2IDIwMTAgLTA1MDAKLQotICAgIE1vdmUgbGliZmR0LyBpbnRvIGxpYi8KLQotICAgIE1vdmUgdGhlIGxpYmZkdCBkaXJlY3RvcnkgaW50byB0aGUgY29tbW9uIGxpYi8gZGlyZWN0b3J5IHRvIGNsZWFuIHVwIHRoZQotICAgIHRvcC1sZXZlbCBkaXJlY3RvcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNzhhY2M0NzJkOTcxOTMxNmYyMmUwMDJhMDA5YTk5OGQ5Y2VlYzI5ZAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIEFwciAxMiAyMjoyODowNSAyMDEwIC0wNTAwCi0KLSAgICBSZW5hbWUgbGliX2dlbmVyaWMvIHRvIGxpYi8KLQotICAgIE5vdyB0aGF0IHRoZSBvdGhlciBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgbGliIGRpcmVjdG9yaWVzIGhhdmUgYmVlbgotICAgIG1vdmVkIG91dCBvZiB0aGUgdG9wLWxldmVsIGRpcmVjdG9yeSB0aGVyZSdzIG5vdCBtdWNoIHJlYXNvbiB0byBoYXZlIHRoZQotICAgICdfZ2VuZXJpYycgc3VmZml4IG9uIHRoZSBjb21tb24gbGliIGRpcmVjdG9yeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlYTAzNjRmMWJiZmVkMWUzZWE3MTExNDc0MjA4NzVjZjMzOGZlNzdhCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDEyIDIyOjI4OjA0IDIwMTAgLTA1MDAKLQotICAgIE1vdmUgbGliXyRBUkNIIGRpcmVjdG9yaWVzIHRvIGFyY2gvJEFSQ0gvbGliCi0KLSAgICBBbHNvIG1vdmUgbGliXyRBUkNIL2NvbmZpZy5tayB0byBhcmNoLyRBUkNIL2NvbmZpZy5tawotCi0gICAgVGhpcyBjaGFuZ2UgaXMgaW50ZW5kZWQgdG8gY2xlYW4gdXAgdGhlIHRvcC1sZXZlbCBkaXJlY3Rvcnkgc3RydWN0dXJlCi0gICAgYW5kIG1vcmUgY2xvc2VseSBtaW1pYyBMaW51eCdzIGRpcmVjdG9yeSBvcmdhbml6YXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgODlmMzllMTc3ZTdiMDE1MmFhMWQzMTUyYmFhMjVkOTg2ZTM2Y2RjZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIEFwciAxMiAyMjoyODowMyAyMDEwIC0wNTAwCi0KLSAgICBDaGFuZ2UgZGlyZWN0b3J5LXNwZWNpZmljIENGTEFHUyB0byB1c2UgZnVsbCBwYXRoCi0KLSAgICBQcmV2aW91c2x5LCBhIHNwZWNpZmljIGZpbGUgb3IgZGlyZWN0b3J5IGNvdWxkIGJlIGNvbXBpbGVkIHdpdGggY3VzdG9tCi0gICAgQ0ZMQUdTIGJ5IGFkZGluZyBhIE1ha2VmaWxlIHZhcmlhYmxlIHN1Y2ggYXM6Ci0gICAgICBDRkxBR1NfZGxtYWxsb2MubyA9IDxjdXN0b20gZmxhZ3MgZm9yIGNvbW1vbi9kbG1hbGxvYy5jPgotICAgIG9yCi0gICAgICBDRkxBR1NfbGliID0gPGN1c3RvbSBmbGFncyBmb3IgbGliIGRpcmVjdG9yeT4KLQotICAgIFRoaXMgbWV0aG9kIGJyZWFrcyBkb3duIG9uY2UgbXVsdGlwbGUgZmlsZXMgb3IgZGlyZWN0b3JpZXMgc2hhcmUgdGhlCi0gICAgc2FtZSBwYXRoLglFZyBGTEFHU19maWxlQSA9IDxjdXN0b20gZmxhZ3M+IHdvdWxkIGluY29ycmVjdGx5IHJlc3VsdCBpbgotICAgIGJvdGggZGlyMS9maWxlQS5jIGFuZCBkaXIyL2ZpbGVBLmMgYmVpbmcgY29tcGlsZWQgd2l0aCA8Y3VzdG9tIGZsYWdzPi4KLQotICAgIFRoaXMgY2hhbmdlIGFsbG93cyBmaW5lciBncmFpbmVkIGNvbnRyb2wgd2hpY2ggd2UgbmVlZCBvbmNlIHdlIG1vdmUKLSAgICBsaWJfJEFSQ0ggdG8gYXJjaC8kQVJDSC9saWIvIGFuZCBsaWJfZ2VuZXJpYy8gdG8gbGliLy4gIFdpdGhvdXQgdGhpcwotICAgIGNoYW5nZSBhbGwgbGliLyBkaXJlY3RvcmllcyB3b3VsZCBzaGFyZSB0aGUgc2FtZSBjdXN0b20gQ0ZMQUdTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDAzYjcwMDRkZGFmYzcwZDgzOTA0ZDc5MGFiYWE1MDg0Mzg2ODEzMGUKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBBcHIgMTIgMjI6Mjg6MDIgMjAxMCAtMDUwMAotCi0gICAgQ3JlYXRlIENQVURJUiB2YXJpYWJsZQotCi0gICAgVGhlIENQVURJUiB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIGxvY2F0aW9uIG9mIGEgdGFyZ2V0J3MgQ1BVIGRpcmVjdG9yeS4KLSAgICBDdXJyZW50bHksIGl0IGlzIHNldCB0byBjcHUvJENQVS4gIEhvd2V2ZXIsIHVzaW5nICRDUFVESVIgd2lsbCBhbGxvdyBmb3IKLSAgICBtb3JlIGZsZXhpYmlsaXR5IGluIHRoZSBmdXR1cmUuICBJdCBsYXlzIHRoZSBncm91bmR3b3JrIGZvciByZW9yZ2FuaXppbmcKLSAgICBVLUJvb3QncyBkaXJlY3Rvcnkgc3RydWN0dXJlIHRvIHN1cHBvcnQgYSBsYXlvdXQgc3VjaCBhczoKLQotICAgICAgYXJjaC8kQVJDSC9jcHUvJENQVS8qIChhcmNoaXRlY3R1cmUgd2l0aCBtdWx0aXBsZSBDUFUgdHlwZXMpCi0gICAgICBhcmNoLyRBUkNIL2NwdS8qCSAgICAoYXJjaGl0ZWN0dXJlIHdpdGggb25lIENQVSB0eXBlKQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDMwZGMxNjVhNzZiNTE2NWFmNzcyMTkxODliYzA1ZDBmYTQyMjlkOGIKLUF1dGhvcjogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgotRGF0ZToJRnJpIEFwciA5IDE5OjAyOjM4IDIwMTAgKzAyMDAKLQotICAgIEZJWDogd2F0Y2hkb2cgdGltZW91dCwgd2hpbGUgd2FpdGluZyBmb3IgaW5wdXQKLQotICAgICogYWRkIFdBVENIRE9HX1JFU0VUIHRvICF0c3RjKCkgbG9vcHMKLSAgICAqIHByZXZlbnRzIHdhdGNoZG9nIHRpbWVvdXQsIHdoaWxlIHdhaXRpbmcgZm9yIGlucHV0LAotICAgICAgaWYgQ09ORklHX0JPT1RfUkVUUllfVElNRSBvciBDT05GSUdfU0hPV19BQ1RJVklUWSBkZWZpbmVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci0KLWNvbW1pdCA4MTc4MTEwYmMyODI0OWYzZmYxYzIyYjE1ZDdkY2RlZTUwYmU2OWViCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJVGh1IEFwciA4IDE3OjU1OjQ4IDIwMTAgKzAyMDAKLQotICAgIGNvbmZpZ19jbWRfYWxsLmg6IFNvcnQgZW50cmllcyBhbHBoYWJldGljYWxseQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA5MTU3ZTljNDBhYjNhOTQyYmRkMDY3OWJiNDMzY2Q5ZWQ0ODVmNDM0Ci1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotRGF0ZToJVGh1IEFwciA4IDE3OjU1OjQ3IDIwMTAgKzAyMDAKLQotICAgIGNvbmZpZ19jbWRfYWxsLmg6IGFkZGVkIG1pc3NpbmcgQ09ORklHX0NNRF9VQkkgYW5kIENPTkZJR19DTURfVUJJRlMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotCi1jb21taXQgYWUzMGI4YzIwMGRjMDcxZDcxOWFkNjQ5ZDBiZjU2MzVkNjE3NTRmMwotQXV0aG9yOiBrYXJsLmJlbGRhbkBnbWFpbC5jb20gPGthcmwuYmVsZGFuQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBBcHIgNiAyMjoxODowOCAyMDEwICswMjAwCi0KLSAgICBtYWxsb2M6IHNicmsoKSBzaG91bGQgcmV0dXJuIE1PUkVDT1JFX0ZBSUxVUkUgaW5zdGVhZCBvZiBOVUxMIG9uIGZhaWx1cmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEthcmwgQmVsZGFuIDxrYXJsLmJlbGRhbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhMjUxM2UyN2U4ZGYyYjdiZjQ4MWQwM2U3NzE5ZjkxY2UxOWU4OWQ1Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglTdW4gQXByIDQgMjI6MzY6MDMgMjAxMCAtMDUwMAotCi0gICAgbWtpbWFnZTogRml4IHN0cmljdC1hbGlhc2luZyBjb21waWxlciB3YXJuaW5nCi0KLSAgICBWZXJzaW9uIDQuMi40IG9mIGdjYyBwcm9kdWNlcyB0aGUgZm9sbG93aW5nIHdhcm5pbmdzIHdpdGhvdXQgdGhpcyBjaGFuZ2U6Ci0gICAgICBta2ltYWdlLmM6IEluIGZ1bmN0aW9uIOKAmG1haW7igJk6Ci0gICAgICBta2ltYWdlLmM6MjA0OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICAgIG1raW1hZ2UuYzoyMjI6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDFmMjQ2M2Q3NjQyYzU4MjMzOWM5ZjlkOTY0NzFkNWQyYTE2OWI5YmIKLUF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotRGF0ZToJVGh1IEFwciAxIDIxOjI2OjU1IDIwMTAgKzAyMDAKLQotICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIE1hdHJpeCBWaXNpb24gbXZTTVIgYm9hcmQgYmFzZWQgb24gTVBDNTIwMEIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0KLWNvbW1pdCA5YWNkNGYwZTkxNDkxMzc5NmU0ZTU2ZjU1MDcyNmQyMTZmN2IxNmU1Ci1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotRGF0ZToJU2F0IE1hciAyNyAxMToxNjoxMCAyMDEwICswMTAwCi0KLSAgICBjbWRfYm1wLmM6IGFkZCBzdGFuZGFyZCBzdWJjb21tYW5kIGhhbmRsaW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCBmODUyYTBjM2JmZTBiMzBiNDgxNjEzNWI5YTBkMmFhYWU3ZTVkZTZhCi1BdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Ci1EYXRlOglTdW4gTWFyIDE0IDE4OjQ3OjIzIDIwMTAgKzAxMDAKLQotICAgIGRyaXZlcnMvbXRkL3NwaS9lZXByb21fbTk1eHh4LmM6IGFkZCBtaXNzaW5nIGVycm9yIGNoZWNraW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgotCi1jb21taXQgM2I2NTNmZGIzMjIwMjhiMjdjNWFlM2Q2MGVjYjBlZWEyZDU4ODM3ZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIEFwciA0IDIyOjQwOjUwIDIwMTAgLTA1MDAKLQotICAgIGNtZF91Ymk6IEZpeCB1bmluaXRpYWxpemVkIHZhcmlhYmxlIHdhcm5pbmcKLQotICAgIGdjYyAzLjQuNiBwcmV2aW91c2x5IHJlcG9ydGVkIHRoZSBmb2xsb3dpbmcgZXJyb3Igb24gbWFueSBNSVBTIGJvYXJkcwotICAgIHdoaWNoIHV0aWxpemUgVUJJOgotICAgICAgY21kX3ViaS5jOjE5Mzogd2FybmluZzogJ3ZvbCcgbWlnaHQgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24KLQotICAgIFRoZSBjdXJyZW50IGNvZGUgaXMgc3RydWN0dXJlZCBzdWNoIHRoYXQgJ3ZvbCcgd2lsbCBuZXZlciBiZSB1c2VkIHdoZW4KLSAgICBpdCBpcyBOVUxMIGFueXdheSwgYnV0IGdjYyBpc24ndCBzbWFydCBlbm91Z2ggdG8gZmlndXJlIHRoaXMgb3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmYWM3MWNjNDlmOTNkYjdkNDYwZGJjOTU3ZGZiYmFkZWZhMmNhMGU5Ci1BdXRob3I6IEtpbSBCLiBIZWlubyA8S2ltLkhlaW5vQGJsdWVnaWdhLmNvbT4KLURhdGU6CUZyaSBNYXIgMTIgMTA6MDc6MDAgMjAxMCArMDIwMAotCi0gICAgVVNCIHN0b3JhZ2UgcHJvYmUKLQotICAgIFdoaWxlIGRlYnVnZ2luZyBvbmUgaWxsIGJlaGF2aW5nIFVTQiBkZXZpY2UgSSBmb3VuZCB0d28gYnVncyBpbiBVU0IKLSAgICBzdG9yYWdlIHByb2JlLgotCi0gICAgdXNiX3N0b3JfZ2V0X2luZm8oKSByZXR1cm5zIC0xIChlcnJvciksIDAgKHNraXApIG9yIDEgKG9rKS4gRmlyc3QgcGFydAotICAgIG9mIHRoaXMgcGF0Y2ggZml4ZXMgZXJyb3IgY2FzZS4KLQotICAgIFNlY29uZCBwYXJ0IGZpeGVzIHVzYl9pbnF1aXJ5KCkncyByZXRyeSBjb3VudGVyIGhhbmRsaW5nLiBPcmlnaW5hbCBjb2RlCi0gICAgaGFkIHJldHJ5ID0gLTEgb24gZXJyb3IgY2FzZSwgbm90IHJldHJ5ID0gMCBhcyBjaGVja2VkIGluIHRoZSBuZXh0IGxpbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gQi4gSGVpbm8gPEtpbS5IZWlub0BibHVlZ2lnYS5jb20+Ci0KLWNvbW1pdCBhYWFkMTA4Yjg4OWM2OTgwYTJkMDUyNjJhMmY3ZmViYjE0Zjk0ZDY4Ci1BdXRob3I6IEtpbSBCLiBIZWlubyA8S2ltLkhlaW5vQGJsdWVnaWdhLmNvbT4KLURhdGU6CUZyaSBNYXIgMTIgMTU6NDY6NTYgMjAxMCArMDIwMAotCi0gICAgVVNCIHN0b3JhZ2UgY291bnQKLQotICAgIEhlcmUncyBhbm90aGVyIFVTQiBzdG9yYWdlIHBhdGNoLiBDdXJyZW50bHkgVS1Cb290IGhhbmRsZXMgc3RvcmFnZQotICAgIGRldmljZXMgIzAgLSAjNCBhcyB2YWxpZCBkZXZpY2VzLCBldmVuIGlmIHRoZXJlIGlzIG5vbmUgY29ubmVjdGVkLiBUaGlzCi0gICAgcGF0Y2ggZml4ZXMgdXNiX3N0b3JfZ2V0X2RldigpIHRvIGNoZWNrIGRldGVjdGVkIGRldmljZSBjb3VudCBpbnN0ZWFkCi0gICAgb2YgTUFYLWRlZmluZS4KLQotICAgIFRoaXMgaXMgdmVyeSBpbXBvcnRhbnQgZm9yIGlsbCBiZWhhdmluZyBkZXZpY2VzLiB1c2JfZGV2X2Rlc2NbXSBjYW4gYmUKLSAgICBwYXJ0aWFsbHkgaW5pdGlhbGl6ZWQgaWYgZGV2aWNlIHByb2JlIGZhaWxzLgotCi0gICAgQWZ0ZXIgZml4aW5nIGdldF9kZXYoKSBpdCB3YXMgZWFzeSB0byBmaXggInVzYiBwYXJ0IiBldGMgY29tbWFuZHMuCi0gICAgUHJldmlvdXNseSBpdCBvdXRwdXRlZCAiVW5rbm93biBwYXJ0aXRpb24gdGFibGUiIGZpdmUgdGltZXMsIG5vdyBpdCdzCi0gICAgIm5vIFVTQiBkZXZpY2VzIGF2YWlsYWJsZSIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gQi4gSGVpbm8gPEtpbS5IZWlub0BibHVlZ2lnYS5jb20+Ci0KLWNvbW1pdCBkN2EyMmEzNjRjZWVhOTcxMzNjMWZiN2FmZjA3Mzk1M2M3YTYxMjI4Ci1BdXRob3I6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglTYXQgRmViIDI3IDIxOjM0OjQxIDIwMTAgKzAzMDAKLQotICAgIEVIQ0k6IGFkZCBORUMgUENJIElECi0KLSAgICBBZGQgTkVDIEVIQ0kgY29udHJvbGxlciB0byB0aGUgbGlzdCBvZiB0aGUgc3VwcG9ydGVkIGRldmljZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBtdmlzdGEuY29tPgotCi0gICAgIGRyaXZlcnMvdXNiL2hvc3QvZWhjaS1wY2kuYyB8ICAgIDEgKwotICAgICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotY29tbWl0IGM4YjJkMWRjMGYxNjY3MDI5ZjQyYzNmYTIxZjcwOTA2NDE0YWYzMjUKLUF1dGhvcjogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVNhdCBGZWIgMjcgMjE6MzM6MjEgMjAxMCArMDMwMAotCi0gICAgRUhDSTogZml4IHBvcnQgcmVzZXQgcmVwb3J0aW5nCi0KLSAgICBDb21taXQgYjQxNjE5MWExNDc3MGM2YmNjNmZkNjdiZTdkZWNmODE1OWIyYmFlZSAoRml4IEVIQ0kgcG9ydCByZXNldC4pIGRpZG4ndAotICAgIG1vdmUgdGhlIGNvZGUgdGhhdCBjaGVja2VkIGZvciBzdWNjZXNzZnVsIGNsZWFyaW5nIG9mIHRoZSBwb3J0IHJlc2V0IGJpdCBmcm9tCi0gICAgZWhjaV9zdWJtaXRfcm9vdCgpLCByZWx5aW5nIG9uIHdhaXRfbXMoKSBjYWxsIGluc3RlYWQuIFRoZSBtZW50aW9uZWQgY29kZSBhbHNvCi0gICAgZXJyb25lb3VzbHkgcmVwb3J0ZWQgcG9ydCByZXNldCBzdGF0ZSB3aGVuIHRoZSByZXNldCB3YXMgYWxyZWFkeSBjb21wbGV0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBtdmlzdGEuY29tPgotCi1jb21taXQgZTA2YTA1NWJjZDk2NmFkZjYyYTU2NTNjODRkYjc4MTkxNTM5MmU0MQotQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJU2F0IEZlYiAyNyAyMTozMjoxNyAyMDEwICswMzAwCi0KLSAgICBFSENJOiBmaXggb2ZmLWJ5LW9uZSBlcnJvciBpbiBlaGNpX3N1Ym1pdF9yb290KCkKLQotICAgIFVTQiBkZXZpY2VzIG9uIHRoZSAybmQgcG9ydCBhcmUgbm90IGRldGVjdGVkIGFuZCBJIGdldCB0aGUgZm9sbG93aW5nIG1lc3NhZ2U6Ci0KLSAgICBUaGUgcmVxdWVzdCBwb3J0KDEpIGlzIG5vdCBjb25maWd1cmVkCi0KLSAgICBUaGF0J3Mgd2l0aCBkZWZhdWx0IENPTkZJR19TWVNfVVNCX0VIQ0lfTUFYX1JPT1RfUE9SVFMgdmFsdWUgb2YgMi4gJ3JlcS0+aW5kZXgnCi0gICAgaXMgMS1iYXNlZCwgc28gdGhlIGNvbXBhcmlzb24gaW4gZWhjaV9zdWJtaXRfcm9vdCgpIGNhbid0IGJlIGNvcnJlY3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBtdmlzdGEuY29tPgotCi1jb21taXQgNmQzMTNjODRkZWQxNjg0MjcyNDBlNjJkMTA4YjZiYTlhZmRjZjUzNQotQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJU2F0IEZlYiAyNyAyMToyOTo0MiAyMDEwICswMzAwCi0KLSAgICBFSENJOiBmaXggcm9vdCBodWIgZGV2aWNlIGRlc2NyaXB0b3IKLQotICAgIE9uIGxpdHRsZSBlbmRpYW4gbWFjaGluZXMsIEVIQ0kgcm9vdCBodWIncyBVU0IgcmV2aXNpb24gaXMgcmVwb3J0ZWQgYXMgMC4yIC0tCi0gICAgY3B1X3RvX2xlMTYoKSB3YXMgbWlzc2VkIGluIHRoZSBpbml0aWFsaXplciBmb3IgdGhlICdiY2RVU0InIGRlc2NyaXB0b3IgZmllbGQuCi0gICAgVGhlIHNhbWUgc2hvdWxkIGJlIGRvbmUgZm9yIHRoZSAnYmNkRGV2aWNlJyBmaWVsZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QG12aXN0YS5jb20+Ci0KLWNvbW1pdCA3NjBiY2UwN2YxODJmNjc4ZDQyZjJhODVhMGU0N2I1OWU4MzFiYTI1Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVRodSBBcHIgOCAxNTo1MDo1NSAyMDEwICswMjAwCi0KLSAgICB2aWRlbzogYXRpX3JhZGVvbl9mYi5jOiBmaXggd2FybmluZyB3aGlsZSBjb21waWxpbmcgd2l0aCBERUJVRwotCi0gICAgRml4ZXMgdGhpcyB3YXJuaW5nOgotCi0gICAgYXRpX3JhZGVvbl9mYi5jOiBJbiBmdW5jdGlvbiAncmFkZW9uX3Byb2JlJzoKLSAgICBhdGlfcmFkZW9uX2ZiLmM6NTk4OiB3YXJuaW5nOiBmb3JtYXQgJyV4JyBleHBlY3RzIHR5cGUgJ3Vuc2lnbmVkIGludCcsCi0gICAgYnV0IGFyZ3VtZW50IDIgaGFzIHR5cGUgJ3ZvaWQgKicKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGY2YTdhMmU4ODg1NDY2NmU2YTllZGU1MDg5MWZlNDE1ZTgwM2FjZTIKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMzEgMTU6NTI6NDAgMjAxMCAtMDUwMAotCi0gICAgYXRpX3JhZGVvbjogU3VwcG9ydCBQQ0kgdmlydHVhbCBub3QgZXEgYnVzIG1hcHBpbmcuCi0KLSAgICBVc2UgcGNpX2J1c190b192aXJ0KCkgdG8gY29udmVydCB0aGUgYnVzIGFkZHJlc3MgZnJvbSB0aGUgQkFScyB0bwotICAgIHZpcnR1YWwgYWRkcmVzcycgdG8gZWxpbWluYXRlIHRoZSBkaXJlY3QgbWFwcGluZyByZXF1aXJlbWVudC4KLQotICAgIFJlbmFtZSB2YXJpYWJsZXMgdG8gYmV0dGVyIG1hdGNoIHVzYWdlIChfcGh5cyAtPiBfYnVzIG9yIG5vLXN1ZmZpeCkKLQotICAgIFRoaXMgZml4ZXMgdGhlIG1wYzg1NzJkcyBDT05GSUdfUEhZU182NEJJVCBtb2RlIGZhaWx1cmU6Ci0gICAgInZpZGVvYm9vdDogVmlkZW8gUk9NIGZhaWxlZCB0byBtYXAhIgotCi0gICAgVGVzdGVkIG9uIG1wYzg1NzJkcyB3aXRoIGFuZCB3aXRob3V0IENPTkZJR19QSFlTXzY0QklULgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk2MjRmNmQ5ZWI0YjcyMjNlOTdhMjc4NDRlYzQ0ODlhYjk1M2EyZTIKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMzEgMDk6NTQ6MjggMjAxMCAtMDUwMAotCi0gICAgYXRpX3JhZGVvbjogcmV0dXJuIHdpdGggZXJyb3Igd2hlbiBlbXVsYXRvciBmYWlscwotCi0gICAgQ29uc29sZSB3YXMgYmVpbmcgc3dpdGNoZWQgdG8gdmlkZW8gZXZlbiBpZiBlbXVsYXRvciBmYWlscyBhbmQKLSAgICBjYXVzaW5nIHRoaXMgaGFuZzoKLQotCQkgICBTY2FubmluZyBQQ0kgYnVzIDA0Ci0JICAgIDA0CTAwICAxMDk1ICAzMTMyCTAxMDQgIDAwCi0JUENJRTMgb24gYnVzIDAzIC0gMDQKLSAgICBWaWRlbzogQVRJIFJhZGVvbiB2aWRlbyBjYXJkICgxMDAyLCA1YjYwKSBmb3VuZCBAKDI6MDowKQotICAgIHZpZGVvYm9vdDogQm9vdGluZyBQQ0kgdmlkZW8gY2FyZCBidXMgMiwgZnVuY3Rpb24gMCwgZGV2aWNlIDAKLSAgICB2aWRlb2Jvb3Q6IFZpZGVvIFJPTSBmYWlsZWQgdG8gbWFwIQotICAgIDY0MHg0ODB4OCAzMWtIeiA1OUh6Ci0gICAgcmFkZW9uZmI6IEZJRk8gVGltZW91dCAhCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFRlc3RlZC1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgZDUwMTE3NjJmNTNhZGE5Y2M3Y2RmMWY4OWYzYTcyMmY4ODdhZjU3NwotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglNb24gTWFyIDE1IDE0OjUwOjI1IDIwMTAgKzAxMDAKLQotICAgIHZpZGVvOiBjZmJfY29uc29sZS5jOiBhZGQgc3VwcG9ydCBmb3IgUkxFOCBiaXRtYXBzCi0KLSAgICBBbGxvdyBkaXNwbGF5aW5nIDgtYml0IFJMRSBCTVAgaW1hZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgMjJkNmM4ZmFhYzRlOWZhNDMyMzJiMGNmNGRhNDI3ZWMxNGQ3MmFkMwotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglUaHUgQXByIDEgMTE6MTU6MDUgMjAxMCArMDgwMAotCi0gICAgY2ZpX2ZsYXNoOiByZXNldCB0aW1lciBpbiBmbGFzaCBzdGF0dXMgY2hlY2sKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyByZXNldF90aW1lcigpIGJlZm9yZSB0aGUgZmxhc2ggc3RhdHVzIGNoZWNrCi0gICAgd2FpdGluZyBsb29wLgotCi0gICAgU2luY2UgdGhlIHRpbWVyIGlzIGJhc2ljYWxseSBydW5uaW5nIGFzeW5jaHJvbm91cyB0byB0aGUgY2ZpCi0gICAgY29kZSwgaXQgaXMgcG9zc2libGUgdG8gY2FsbCBnZXRfdGltZXIoMCksIHRoZW4gb25seSBhIGZldwotICAgIF9TWVNDTEtfIGN5Y2xlcyBsYXRlciBhbiBpbnRlcnJ1cHQgaXMgZ2VuZXJhdGVkLiBUaGlzIGNhdXNlcwotICAgIHRpbWVvdXQgZXZlbiB0aG91Z2ggbXVjaCBsZXNzIHRpbWUgaGFzIGVsYXBzZWQuIFNvIHRoZSB0aW1lcgotICAgIHBlcmlvZCByZWdpc3RlcnMgc2hvdWxkIGJlIHJlc2V0IGJlZm9yZSBnZXRfdGltZXIoMCkgaXMKLSAgICBjYWxsZWQuCi0KLSAgICBUaGVyZSBpcyBzaW1pbGFyIHVzYWdlIGluIG5hbmRfYmFzZS5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDkzMzQxOTA5NmU4NTcyNzViOGIwMWYxYWU1NzcxNjIyMzFiMTQzZmYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBBcHIgNyAwMTozNDoxMSAyMDEwIC0wNTAwCi0KLSAgICBwcGMvODV4eDogVXNlIENPTkZJR19OUzE2NTUwX01JTl9GVU5DVElPTlMgdG8gcmVkdWNlIE5BTkRfU1BMIHNpemUKLQotICAgIFRoZSBNUEM4NTM2RFNfTkFORCBTUEwgYnVpbGQgd2FzIGZhaWxpbmcgZHVlIHRvIGNvZGUgc2l6ZSBpbmNyZWFzZQotICAgIGludHJvZHVjZWQgYnkgY29tbWl0OgotCi0gICAgY29tbWl0IDMzZjU3YmQ1NTNlZGYyOWRmZmVmNWE2YzdkNzZlMTY5Yzc5YTYwNDkKLSAgICBBdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgRGF0ZTogICBGcmkgTWFyIDI2IDE1OjE0OjQzIDIwMTAgLTA1MDAKLQotCTg1eHg6IEZpeCBlbmFibGluZyBvZiBMMSBjYWNoZSBwYXJpdHkgb24gc2Vjb25kYXJ5IGNvcmVzCi0KLSAgICBXZSBidWlsdCBpbiBzb21lIE5TMTY1NTAgZnVuY3Rpb25zIHRoYXQgd2UgZG9udCBuZWVkIGFuZCBjYW4gZ2V0Ci0gICAgcmlkIG9mIHRoZW0gdmlhIENPTkZJR19OUzE2NTUwX01JTl9GVU5DVElPTlMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNWE0Njk2MDg4Mzc2ZmZmODI2MjllN2U0YTI0NDQyOTRkYzU4OWM5NgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEFwciAxIDEwOjQ5OjQyIDIwMTAgLTA1MDAKLQotICAgIHAyMDIwZHM6IGFkZCBhbHRlcm5hdGUgYm9vdCBiYW5rIHN1cHBvcnQgdXNpbmcgdGhlIG5nUElYSVMgRlBHQQotCi0gICAgVGhlIEZyZWVzY2FsZSBQMjAyMERTIGJvYXJkIHVzZXMgYSBuZXcgdHlwZSBvZiBQSVhJUyBGUEdBLCBjYWxsZWQgdGhlIG5nUElYSVMuCi0gICAgVGhlIG5nUElYSVMgaGFzIG9uZSBkaXN0aW5jdCBuZXcgZmVhdHVyZTogdGhlIHZhbHVlcyBvZiB0aGUgb24tYm9hcmQgc3dpdGNoZXMKLSAgICBjYW4gYmUgc2VsZWN0aXZlbHkgb3ZlcnJpZGRlbiB3aXRoIHNoYWRvdyByZWdpc3RlcnMuICBUaGlzIGZlYXR1cmUgaXMgdXNlZCB0bwotICAgIGJvb3QgZnJvbSBhIGRpZmZlcmVudCBOT1IgZmxhc2ggYmFuaywgaW5zdGVhZCBvZiBoYXZpbmcgYSByZWdpc3RlciBkZWRpY2F0ZWQKLSAgICBmb3IgdGhpcyBwdXJwb3NlLiAgQmVjYXVzZSB0aGUgbmdQSVhJUyBpcyBzbyBkaWZmZXJlbnQgZnJvbSB0aGUgcHJldmlvdXMgUElYSVMsCi0gICAgYSBuZXcgZmlsZSBpcyBpbnRyb2R1Y2VkOiBuZ3BpeGlzLmMuCi0KLSAgICBBbHNvIHVwZGF0ZSB0aGUgUDIwMjBEUyBjaGVja2JvYXJkKCkgZnVuY3Rpb24gdG8gdXNlIHRoZSBuZXcgbWFjcm9zIGRlZmluZWQKLSAgICBpbiB0aGUgaGVhZGVyIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyZmViNGFmMDAxYTBiZTVjY2FkNmU2YTZlYjA3MjIwN2NiZWY2ZTNmCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDMxIDE3OjQ0OjEzIDIwMTAgLTA1MDAKLQotICAgIGZzbDogaW1wcm92ZSB0aGUgUElYSVMgY29kZSBhbmQgZml4IGEgZmV3IGJ1Z3MKLQotICAgIFJlZmFjdG9yIGFuZCBkb2N1bWVudCB0aGUgRnJlZXNjYWxlIFBJWElTIGNvZGUsIHVzZWQgb24gbW9zdCA4NXh4IGFuZCA4Nnh4Ci0gICAgYm9hcmRzLiAgVGhpcyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gcmVhZCBhbmQgbW9yZSBmbGV4aWJsZS4KLQotICAgIERlbGV0ZSBwaXhpcy5oLCBiZWNhdXNlIG5vbmUgb2YgdGhlIGV4cG9ydGVkIGZ1bmN0aW9ucyB3ZXJlIGFjdHVhbGx5IGJlaW5nCi0gICAgdXNlZCBieSBhbnkgb3RoZXIgZmlsZS4gIE1ha2UgYWxsIG9mIHRoZSBmdW5jdGlvbnMgaW4gcGl4aXMuYyAnc3RhdGljJy4KLSAgICBSZW1vdmUgIiNpbmNsdWRlIHBpeGlzLmgiIGZyb20gZXZlcnkgZmlsZSB0aGF0IGhhcyBpdC4KLQotICAgIFJlbW92ZSBzb21lIHVubmVjZXNzYXJ5ICNpbmNsdWRlcy4KLQotICAgIE1ha2UgJ3BpeGlzX2Jhc2UnIGludG8gYSBtYWNybywgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRvIGRlZmluZSBpdCBpbiBldmVyeQotICAgIGZ1bmN0aW9uLgotCi0gICAgQWRkICJ3aGlsZSgxKTsiIGxvb3BzIGF0IHRoZSBlbmQgb2YgZnVuY3Rpb25zIHRoYXQgcmVzZXQgdGhlIGJvYXJkLCBzbyB0aGF0Ci0gICAgZXhlY3V0aW9uIGRvZXNuJ3QgY29udGludWUgd2hpbGUgdGhlIHJlc2V0IGlzIGluIHByb2dyZXNzLgotCi0gICAgUmVwbGFjZSBpbl84L291dF84IGNhbGxzIHdpdGggY2xyYml0c184LCBzZXRiaXRzXzgsIG9yIGNscnNldGJpdHNfOCwgd2hlcmUKLSAgICBhcHByb3ByaWF0ZS4KLQotICAgIFJlcGxhY2UgdWxvbmcvdWludCB3aXRoIHRoZWlyIHNwZWxsZWQtb3V0IGVxdWl2YWxlbnRzLiAgUmVtb3ZlIHVubmVjZXNzYXJ5Ci0gICAgdHlwZWNhc3RzLCBjaGFuZ2luZyB0aGUgdHlwZXMgb2Ygc29tZSB2YXJpYWJsZXMgaWYgbmVjZXNzYXJ5LgotCi0gICAgQWRkIENPTkZJR19TWVNfUElYSVNfVkNGR0VOMF9FTkFCTEUgYW5kIENPTkZJR19TWVNfUElYSVNfVkJPT1RfRU5BQkxFIHRvIG1ha2UKLSAgICBpdCBlYXNpZXIgZm9yIHNwZWNpZmljIGJvYXJkcyB0byBzdXBwb3J0IHZhcmlhdGlvbnMgaW4gdGhlIFBJWElTIHJlZ2lzdGVycwotICAgIHNldHMuICBObyBjdXJyZW50IGJvYXJkcyBhcHBlYXJzIHRvIG5lZWQgdGhpcyBmZWF0dXJlLgotCi0gICAgRml4IHRoZSBkZWZpbml0aW9uIG9mIENPTkZJR19TWVNfUElYSVNfVkJPT1RfTUFTSyBmb3IgdGhlIE1QQzg2MTAgSFBDRC4KLSAgICBBcHBhcmVudGx5LCAicGl4aXNfcmVzZXQgYWx0YmFuayIgaGFzIG5ldmVyIHdvcmtlZCBvbiB0aGlzIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmY4NDczZTkwYTAxOGMyYmIxOWExOTYxNzZjMWYyZTk2MDJkNjM1NAotQXV0aG9yOiBTYW5kZWVwIEdvcGFscGV0IDxzYW5kZWVwLmt1bWFyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWFyIDEyIDEwOjQ1OjAyIDIwMTAgKzA1MzAKLQotICAgIDg1eHg6IFNldCBISUQxW21iZGRdIG9uIGU1MDB2MiByZXY1LjAgb3IgZ3JlYXRlcgotCi0gICAgVGhlIEhJRDFbTUJERF0gYml0IGlzIG5ldyBvbiByZXY1LjAgb3IgZ3JlYXRlciBjb3JlcyBhbmQgd2lsbCBvcHRpbWl6ZQotICAgIHRoZSBwZXJmb3JtYW5jZSBvZiBtYmFyL2VpZWlvIGluc3RydWN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgR29wYWxwZXQgPHNhbmRlZXAua3VtYXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDIxNjA4Mjc1NGY2ZGE1MzU5ZWEwZGI5YjBjYzAzYWQ1MzFhYzZlNDUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBNYXIgMzAgMjM6MDY6NTMgMjAxMCAtMDUwMAotCi0gICAgODV4eDogQWRkZWQgdmFyaW91cyBQMTAxMi9QMTAxMy9QMTAyMS9QMTAyMiBkZWZpbmVzCi0KLSAgICBUaGVyZSBhcmUgdmFyaW91cyBsb2NhdGlvbnMgdGhhdCB3ZSBoYXZlIGNoaXAgc3BlY2lmaWMgaW5mbzoKLQotICAgICogTWFrZWZpbGUgZm9yIHdoaWNoIGRkciBjb2RlIHRvIGJ1aWxkCi0gICAgKiBBZGRlZCBQMTAxMi9QMTAxMy9QMTAyMS9QMTAyMiB0byBjcHVfdHlwZV9saXN0IGFuZCBTVlIgbGlzdAotICAgICogQWRkZWQgbnVtYmVyIG9mIExBV3MgZm9yIFAxMDEyL1AxMDEzL1AxMDIxL1AxMDIyCi0gICAgKiBTZXQgQ09ORklHX01BWF9DUFVTIHRvIDIgZm9yIFAxMDIxL1AxMDIyCi0gICAgKiBQQ0kgcG9ydCBjb25maWcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3Jpa2FudGggU3Jpbml2YXNhbiA8c3Jpa2FudGguc3Jpbml2YXNhbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1YTg1YTMwOTY5NDBiMGEwY2QwMTZjOGFjZjQ5NDQ0MjFjNjRmOGM3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgTWFyIDMwIDEwOjA3OjEyIDIwMTAgLTA1MDAKLQotICAgIHBwYy84eHh4OiBEZWxldGUgUENJIG5vZGVzIGZyb20gZGV2aWNlIHRyZWUgaWYgbm90IGNvbmZpZ3VyZWQKLQotICAgIElmIHRoZSBQQ0kgY29udHJvbGxlciB3YXNuJ3QgY29uZmlndXJlZCBvciBlbmFibGVkIGRlbGV0ZSBmcm9tIHRoZQotICAgIGRldmljZSB0cmVlIChpbmNsdWRlIGl0cyBhbGlhcykuCi0KLSAgICBGb3IgdGhlIGNhc2UgdGhhdCB3ZSBkaWRuJ3QgZXZlbiBjb25maWd1cmUgdS1ib290IHdpdGgga25vd2xlZGdlIG9mCi0gICAgdGhlIGNvbnRyb2xsZXIgd2UgY2FuIHVzZSB0aGUgZmFjdCB0aGF0IHRoZSBwY2lfY29udHJvbGxlciBwb2ludGVyCi0gICAgaXMgTlVMTCB0byBkZWxldGUgdGhlIG5vZGUgaW4gdGhlIGRldmljZSB0cmVlLiAgV2UgZGV0ZXJtaW5lIHRoYXQKLSAgICBhIGNvbnRyb2xsZXIgd2FzIG5vdCBzZXR1cCAoYmVjYXVzZSBvZiBIVyBjb25maWcpIGJhc2VkIG9uIHRoZSBmYWN0Ci0gICAgdGhhdCBjZmdfYWRkciB3YXNuJ3Qgc2V0dXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgM2YxYTVjMTY1NWQzMmI3YWI4YWU3NGM3OTkzNGNlMTAwZWJjZDJiZgotQXV0aG9yOiBCcmVudCBLYW5kZXR6a2kgPEJyZW50S0B0ZWxlY28uY29tPgotRGF0ZToJV2VkIE1hciAyNCAxNzo0MTozMyAyMDEwIC0wNDAwCi0KLSAgICBCbGFja2ZpbjogSVAwNDogbmV3IGJvYXJkIHBvcnQKLQotICAgIEEgbG93IGNvc3QgNCBwb3J0IElQLVBCWCBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJyZW50IEthbmRldHpraSA8QnJlbnRLQHRlbGVjby5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYTNjMDgzNjNiOTI3Yjg0ZGVlOTExYmZjYjI5YWI0NWQ1M2M5OGY2MgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgTWFyIDIzIDE2OjIzOjM5IDIwMTAgLTA0MDAKLQotICAgIEJsYWNrZmluOiBkcm9wIGJmaW4gI3VuZGVmIGluIGxpbmtlciBzY3JpcHQKLQotICAgIE5vdyB0aGF0IHRoZSBsaW5rZXIgc2NyaXB0IGlzIHByZXByb2Nlc3NlZCB3aXRoIC1hbnNpLCB0aGVyZSBpcyBubyBuZWVkIHRvCi0gICAgbWFudWFsbHkgdW5kZWYgdGhlIGJmaW4gZGVmaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMGMwODBhYTc1M2ViOTJlMWMwMDMzZDNmZDMzMDMzYjJiNDgxMzg4NAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgRmViIDExIDIwOjE5OjEwIDIwMTAgLTA1MDAKLQotICAgIEJsYWNrZmluOiBjYWxsIHdhdGNoZG9nX2luaXQoKSBmb3IgZXh0ZXJuYWwgd2F0Y2hkb2dzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiODc0ZWQxNzQ3MmRlNDkyY2ZiZjU4YzhlMzYyMzY0YmM4MGUzZGNkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTAgMDE6MjA6NDQgMjAxMCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGxpbmsgd2l0aCBub3JtYWwgQUJJIHRhcmdldAotCi0gICAgSWYgc29tZW9uZSB1c2VzIHRoZSBGRFBJQyB0b29sY2hhaW4gdG8gY29tcGlsZSBVLUJvb3QsIG1ha2Ugc3VyZSB0aGUKLSAgICBsaW5rZXIga25vd3MgdG8gdXNlIHRoZSBub3JtYWwgQUJJIHRhcmdldCByYXRoZXIgdGhhbiB0aGUgRkRQSUMgb25lLgotICAgIFRoaXMgd2Fzbid0IG5lZWRlZCB3aXRoIG9sZGVyIHRvb2xjaGFpbnMsIGJ1dCB3aGVuIHdlIGZpeGVkIHRoZSBsaW5rZXIKLSAgICBzdWNoIHRoYXQgdGhlIGRlZmF1bHQgdGFyZ2V0IGNoYW5nZWQgYmFzZWQgb24gdHVwbGUsIHRoaXMgYnJva2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBkZDk3MDIyY2JlYWFlNWZkNGJjZTI1Y2Y3ZTg2MDE5MTAxYTA0MGVmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBKYW4gMjkgMTU6NDg6MjggMjAxMCAtMDUwMAotCi0gICAgQmxhY2tmaW46IHN5bmMgcHRyYWNlIGhlYWRlcnMgd2l0aCBsaW51eAotCi0gICAgU2NydWIgYSBsb3Qgb2YgZGVhZCBjcnVmdCBpbiB0aGUgcHJvY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDZhMGJlOGY4ZmU2ZDcyYTMwZTY5ZDA4ZGVjYjcyZGMzYmVjNTQ4NGMKLUF1dGhvcjogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KLURhdGU6CUZyaSBKYW4gMjIgMTc6MTU6NTUgMjAxMCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGNtLWJmNTYxOiB1cGRhdGUgbmV0d29yay9lbnYgc2V0dGluZ3MKLQotICAgIFN3aXRjaCB0byB0aGUgU01DOTExWCBkcml2ZXIgYnkgZGVmYXVsdCBub3csIGFuZCBmaXggTERSIGVudiBzZXR0aW5ncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMjE2ODE4YzFhMmQwM2IxYzA5OTRmMDA5OTNjOTlhZjM4YzViMWU4MwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDIxIDIzOjI5OjE4IDIwMTAgLTA1MDAKLQotICAgIEJsYWNrZmluOiBiZjUzNy1zdGFtcDogYWRkIGJvYXJkIHRlc3QgZGVmaW5lcwotCi0gICAgV2UgdHdlYWsgdGhlIGNvbmZpZ3MgYSBsaXR0bGUgd2hlbiBkb2luZyBhdXRvbWF0ZWQgaGFyZHdhcmUgdGVzdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzOGI5Yjc0NDZlY2QzYTcyOGJhZDNlMTkxM2E5ODQ2MjhhNzM2M2ZiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBKYW4gMTkgMjE6MDI6MDAgMjAxMCAtMDUwMAotCi0gICAgQmxhY2tmaW46IHJlbGF4IC5kYXRhIGFsaWdubWVudAotCi0gICAgVGhlIHN0cmljdGVzdCBhbGlnbm1lbnQgb24gQmxhY2tmaW4gc3lzdGVtcyBpcyAzMmJpdHMgKHNpbmNlIHRoYXQgaXMgdGhlCi0gICAgbGFyZ2VzdCBsb2FkIGluc3RydWN0aW9uKSwgc28gZG9uJ3QgZm9yY2UgMjU2Ynl0ZSBhbGlnbm1lbnQgaGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDAzZjcwNTNmNzBiYzU1YjUwYzlkMjNlNTRmOTBkNzcyNDE5MzAwYTYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIEphbiAxOSAxNTozOTowNyAyMDEwIC0wNTAwCi0KLSAgICBCbGFja2ZpbjogZHJvcCByZWZlcmVuY2UgdG8gZ2QtPnJlbG9jX29mZgotCi0gICAgVGhlIHJlbG9jX29mZiBtZW1iZXIgbm8gbG9uZ2VyIGV4aXN0cywgc28gZHJvcCBpdC4JQWxzbyBjaGFuZ2UgdGhpcwotICAgIGZ1bmN0aW9uIHNvIHRoYXQgaXQgaXMgYWx3YXlzIGNvbXBpbGVkIGFuZCBwcmV2ZW50cyBsYXRlbnQgaXNzdWVzIGxpa2UKLSAgICB0aGlzIGluIHRoZSBmdXR1cmUuCi0KLSAgICBSZXBvcnRlZC1ieTogUGV0ZXIgTWVlcndhbGQgPHBtZWVyd0BwbWVlcncubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDQ5Yjk3ZDljOGVhN2IxMWM0ZmM5ZTQ1N2NjMmNkOWZkNmViZjBjMjEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBNYXIgMzAgMTA6MTk6MjYgMjAxMCAtMDUwMAotCi0gICAgZmR0OiBBZGQgZmR0X2RlbF9ub2RlX2FuZF9hbGlhcyBoZWxwZXIKLQotICAgIEFkZCBhIGhlbHBlciBmdW5jdGlvbiB0aGF0IGdpdmVuIGFuIGFsaWFzIHdpbGwgZGVsZXRlIGJvdGggdGhlIG5vZGUKLSAgICB0aGUgYWxpYXMgcG9pbnRzIHRvIGFuZCB0aGUgYWxpYXMgaXRzZWxmCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgNDU5YzQxYThlMWJlOTZlZGViYTFjMGFmZWNjYWNhZmQ5M2IyYzRlNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgTm92IDMgMTU6NTM6MTIgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IGRpc2FibGUgTmV0QlNEIGJvb3RtIHN1cHBvcnQgYnkgZGVmYXVsdAotCi0gICAgVGhlcmUgaXMgbm8gQmxhY2tmaW4vTmV0QlNEIHBvcnQsIHNvIGVuYWJsaW5nIHN1cHBvcnQgZm9yIGl0IGJ5IGRlZmF1bHQKLSAgICBkb2Vzbid0IG1ha2UgYW55IHNlbnNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjliY2Y1YmM4MGE0N2FjYmQ2MmI4Y2ZmZjkzMmNiMTJkNDc5OTdkNwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIE1hciAyOSAxMzo1MDozMSAyMDEwIC0wNTAwCi0KLSAgICA4NXh4OiBBZGQgZGVmaW5lcyBmb3IgQlVDU1IgYml0cyB0byBtYWtlIGNvZGUgbW9yZSByZWFkYWJsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIyYzlkZTA2NGEyMThhZTYxN2JmZWVhMzVkMjE2NDUzMmRmOTE1OTcKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgNSAxMjoyMjowMCAyMDEwICswODAwCi0KLSAgICBmc2wtZGRyOiBjaGFuZ2UgdGhlIGRlZmF1bHQgYnVyc3QgbW9kZSBmb3IgRERSMwotCi0gICAgRm9yIDY0QiBjYWNoZWxpbmUgU29DLCBzZXQgdGhlIGZpeGVkIDgtYmVhdCBidXJzdCBsZW4sCi0gICAgZm9yIDMyQiBjYWNoZWxpbmUgU29DLCBzZXQgdGhlIE9uLVRoZS1GbHkgYXMgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlYzE0NWU4N2I4MGY2NzY0ZDE3YTZiMGFlYmY1MjFmZTc1OGMzZmRjCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWFyIDUgMTI6MjI6MDAgMjAxMCArMDgwMAotCi0gICAgZnNsLWRkcjogRml4IHRoZSB0dXJuYXJvdW5kIHRpbWluZyBmb3IgVElNSU5HX0NGR180Ci0KLSAgICBSZWFkLXRvLXJlYWQvV3JpdGUtdG8td3JpdGUgdHVybmFyb3VuZCBmb3Igc2FtZSBjaGlwIHNlbGVjdAotICAgIG9mIEREUjMgbWVtb3J5LCBCTC8yKzIgY3ljbGVzIGlzIGVub3VnaCBmb3IgdGhlbSBhdCBCQzQgYW5kCi0gICAgT1RGIGNhc2UsIEJMLzIgY3ljbGVzIGlzIGVub3VnaCBmb3IgZml4ZWQgQkw4LgotICAgIEN1dHRpbmcgZG93biB0aGUgdHVybmFyb3VuZCBmcm9tIEJMLzIrNCB0byBCTC8yKzIgb3IgQkwvMgotICAgIHdpbGwgaW1wcm92ZSB0aGUgbWVtb3J5IHBlcmZvcm1hbmNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFiNDY3YzUxMmU3OWRiZDE0ZjAyMzUyNjU1ZjA1NGE0MzA0YzQ1N2UKLUF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEZlYiA5IDE4OjIzOjMzIDIwMTAgKzA4MDAKLQotICAgIGZzbF9lc2RoYzogT25seSBtb2RpZnkgdGhlIGZpZWxkIHdlIGFyZSBjaGFuZ2luZyBpbiBXTUwKLQotICAgIFdoZW4gd2Ugc2V0IHRoZSByZWFkIG9yIHdyaXRlIHdhdGVybWFyayBpbiBXTUwgd2Ugc2hvdWxkIG1haW50YWluIHRoZQotICAgIHJlc3Qgb2YgdGhlIHJlZ2lzdGVyIGFzIGlzLCByYXRoZXIgdGhhbiB1c2luZyBzb21lIGhhcmQgY29kZWQgdmFsdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA0OGJiM2JiNWFjNGRkMjFlOTMxYWUxNTdjYWFkNjQ0OWJjYjJkMGQ0Ci1BdXRob3I6IEplcnJ5IEh1YW5nIDxDaGFuZy1NaW5nLkh1YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTWFyIDE4IDE1OjU3OjA2IDIwMTAgLTA1MDAKLQotICAgIGZzbF9lc2RoYzogQWRkIGZ1bmN0aW9uIHRvIHJlc2V0IHRoZSBlU0RIQyBjb250cm9sbGVyCi0KLSAgICBUbyBzdXBwb3J0IG11bHRpcGxlIGJsb2NrIHJlYWQgY29tbWFuZCB3ZSBtdXN0IHNldCBhYm9ydCBvciB1c2UgYXV0bwotICAgIENNRDEyLiAgSWYgd2UgYm9vdGVkIGZyb20gZVNESEMgY29udHJvbGxlciBuZWl0aGVyIG9mIHRoZXNlIGFyZSB1c2VkCi0gICAgYW5kIHRodXMgd2UgbmVlZCB0byByZXNldCB0aGUgY29udHJvbGxlciB0byBhbGxvdyBtdWx0aXBsZSBibG9jayByZWFkCi0gICAgdG8gZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZXJyeSBIdWFuZyA8Q2hhbmctTWluZy5IdWFuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGNjNGQxMjI2NTg1ZmEyNTQ0YjUxMTY3MDJiMDJlYWNiYjdhYTQ4YTEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBNYXIgMTggMTU6NTE6MDUgMjAxMCAtMDUwMAotCi0gICAgZnNsX2VzZGhjOiBBbHdheXMgc3RvcCBjbG9jayBiZWZvcmUgY2hhbmdpbmcgZnJlcXVlbmN5Ci0KLSAgICBXZSBuZWVkIHRvIHN0b3AgdGhlIGNsb2NrcyBvbiA4M3h4Lzg1eHggYXMgd2VsbCBhcyBpbXguICBObyBuZWVkIHRvIG1ha2UKLSAgICB0aGlzIGNvZGUgY29uZGl0aW9uYWwgdG8ganVzdCBpbXguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGQwYjBkY2FhMjIwNTQ5OTk5ZDZlYTc0Y2Y4NzQ4Nzg0NmMxODZhMGYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEFwciAxIDE0OjM3OjI0IDIwMTAgKzAyMDAKLQotICAgIGkyYzogTW92ZSBQUEM0eHggSTJDIGRyaXZlciBpbnRvIGRyaXZlcnMvaTJjIGRpcmVjdG9yeQotCi0gICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgUFBDNHh4IHNwZWNpZmljIEkyQyBkZXZpY2UgZHJpdmVyIGludG8gdGhlIEkyQwotICAgIGRyaXZlcnMgZGlyZWN0b3J5LiBBbGwgNHh4IGNvbmZpZyBoZWFkZXJzIGFyZSB1cGRhdGVkIHRvIGluY2x1ZGUgdGhpcwotICAgIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGI1MDQ1Y2RkYTU1NmM3M2UyNjk3Y2QxZDNlYTY1NjMzMTVjYmY0OTAKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDMxIDE1OjM4OjU1IDIwMTAgKzAyMDAKLQotICAgIGFybS9pbnRlZ3JhdG9yOiBSZW1vdmUgdW5uZWNjZXNzYXJ5IENPTkZJR19QQ0kgY2hlY2suCi0KLSAgICBwY2lfZXRoX2luaXQoKSBpcyBhbHJlYWR5IGNvbmRpdGlvbmFsIHRvIENPTkZJR19QQ0kgc28gbm90IGV2ZXJ5IGNhbGxlcgotICAgIG5lZWRzIHRvIGhhdmUgY29uZGl0aW9uYWxzLgotCi0gICAgVGhpcyBpcyB0aGUgb25seSBwbGFjZSBpbiB0aGUgY3VycmVudCBjb2RlIGJhc2Ugd2hlcmUgc3VjaCBhIGNoZWNrIGlzCi0gICAgc3RpbGwgYXQgdGhlIGNhbGxpbmcgc2l0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotICAgIENDOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotCi1jb21taXQgMDcwMWY3MzBjZWJjOGRkMDY1YjcwODEyY2EwMzMyMDU1ZGNmMTBmOAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJVGh1IE1hciAyNSAxNDozMDoxMyAyMDEwICswMTAwCi0KLSAgICBhdDkxOiB1c2UgQyBzdHJ1Y3RzIGZvciBBVDkxIE9IQ0kgY29kZQotCi0gICAgVGhpcyBwYXRjaCBpcyBwYXJ0IG9mIG1pZ3JhdGluZyB0aGUgQVQ5MSBzdXBwb3J0IHRvd2FyZHMKLSAgICB1c2luZyBDIHN0cnVjdCBmb3IgYWxsIFNPQyBhY2Nlc3MuCi0KLSAgICBJdCByZW1vdmVzIG9uZSBtb3JlIENPTkZJR19BVDkxX0xFR0FDWSB3YXJuaW5nLgotCi0gICAgYXQ5MV9wbWMuaCBuZWVkcyBjbGVhbnVwIGFmdGVyIG1pZ3JhdGlvbiBvZiB0aGUgZHJpdmVycwotICAgIGhhcyBiZWVuIGRvbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotCi1jb21taXQgZTk5MDU2ZTM4NzdkMWYwNGEzNjk5MWFhNDhmMWM2OTA1NDdmNWFiOQotQXV0aG9yOiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotRGF0ZToJVGh1IE1hciAxOCAxMzo0Njo0NSAyMDEwICswMjAwCi0KLSAgICB1c2luZyBBVDkxX1BNQ19NQ0tSX01ESVZfIGluc3RlYWQgb2YgTEVHQUNZIG9uZSBpbiBhdDkxL2Nsb2NrLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+Ci0KLWNvbW1pdCA0Yjg5NGE5N2QzMDdjMzIwN2FmNDAwMzFkOWU4MjBlMjk2MGRlNTdmCi1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglXZWQgTm92IDI1IDIzOjQxOjUxIDIwMDkgKzAxMDAKLQotICAgIE5vbWFkaWs6IGZpeCByZXNldF90aW1lcigpCi0KLSAgICBQcmV2aW91cyBjb2RlIHdhcyBmYWlsaW5nIHdoZW4gcmVhZGluZyBiYWNrIHRoZSB0aW1lciBsZXNzIHRoYW4KLSAgICA0MDB1cyBhZnRlciByZXNldHRpbmcgaXQuIFRoaXMgbGVhZCBuYW5kIG9wZXJhdGlvbnMgdG8gaW5jb3JyZWN0bHkKLSAgICB0aW1lb3V0IGFueSBub3cgYW5kIHRoZW4uICBNb3Jlb3Zlciwgd3JpdGluZyB0aGUgbG9hZCByZWdpc3RlciBpc24ndAotICAgIGltbWVkaWF0ZWx5IHJlZmxlY3RlZCBpbiB0aGUgdmFsdWUgcmVnaXN0ZXIuIFdlIG11c3Qgd2FpdCBmb3IgYSBjbG9jawotICAgIGVkZ2UsIHNvIHJlYWRfdGltZXIgbm93IHdhaXRzIGZvciB0aGUgdmFsdWUgdG8gY2hhbmdlIGF0IGxlYXN0IG9uY2UsCi0gICAgb3RoZXJ3aXNlIG5hbmQgb3BlcmF0aW9uIHdvdWxkIHRpbWVvdXQgYW55d2F5cyAodGhvdWdoIGxlc3MgZnJlcXVlbnRseSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KLQotY29tbWl0IGY5MzZhYTA1MjhmZTRmNWQ4NjE2ODU3NTUyOGUwYzUyYjQ4NWM2NDIKLUF1dGhvcjogQWNoaW0gRWhybGljaCA8YWVocmxpY2hAdGFza2l0LmRlPgotRGF0ZToJV2VkIE1hciAxNyAxNDo1MDoyOSAyMDEwICswMTAwCi0KLSAgICBDb252ZXJ0IGF0OTEgd2F0Y2hkb2cgZHJpdmVyIHRvIG5ldyBTb0MgYWNjZXNzCi0KLSAgICBUaGlzIGNvbnZlcnRzIHRoZSBhdDkxIHdhdGNoZG9nIGRyaXZlciB0byBuZXcgYyBzdHJ1Y3R1cmUKLSAgICB0eXBlIHRvIGFjY2VzcyByZWdpc3RlcnMgb2YgdGhlIFNvQwotCi0gICAgU2lnbmVkLW9mZi1ieTogQWNoaW0gRWhybGljaCA8YWVocmxpY2hAdGFza2l0LmRlPgotCi1jb21taXQgYzlmNzJiM2RhODg1NWMzYzk2NzljODIxMTI3Y2NjZDkxZTAzODBlZAotQXV0aG9yOiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci1EYXRlOglXZWQgTWFyIDE3IDA4OjIxOjExIDIwMTAgKzAxMDAKLQotICAgIGF0OTE6IGJvYXJkcyBjbGVhbnVwIGZvciBkZXByZWNhdGVkIENPTkZJR19DTURfQVVUT1NDUklQVAotCi0gICAgQ09ORklHX0NNRF9BVVRPU0NSSVBUIHN1cHBvcnQgaXMgZGVwcmVjYXRlZCBhbmQgbm9uLWV4aXN0aW5nCi0gICAgVGhpcyBjbGVhbiB1cCBwYXRjaCByZW1vdmVzIHRoZSByZWZlcmVuY2VzIGZvciBlc2QgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci0KLWNvbW1pdCBiMDMyNjk4ZmY2ODcwMzQyODZjOThjMDlmZDQ4MzBkODA0Y2QxNzg2Ci1BdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci1EYXRlOglUdWUgTWFyIDkgMjI6MTM6NTYgMjAxMCArMDEwMAotCi0gICAgZXA5M3h4IHRpbWVyOiByZWZhY3RvcmluZwotCi0gICAgZXA5M3h4IHRpbWVyOiBTaW1wbGlmaWVkIHRoZSB0aW1lciBjb2RlIGJ5IGVsaW1pbmF0aW5nIGNsa190b19zeXN0aWNrcygpIGFuZAotICAgIHBlcmZvcm1pbmcgKGFsbW9zdCkgYWxsIG1hbmlwdWxhdGlvbiBvZiB0aGUgdGltZXIgc3RydWN0dXJlIGluIHJlYWRfdGltZXIoKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KLQotY29tbWl0IDMzZWVmMDRiZjg1NDFmN2IxNWQ0ZjY5NGFkMTBmOWI5MTJiOWNhYTYKLUF1dGhvcjogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KLURhdGU6CVR1ZSBNYXIgOSAyMjoxMzo0NyAyMDEwICswMTAwCi0KLSAgICBlcDkzeHggdGltZXI6IFJlbmFtZSBzdHJ1Y3QgdGltZXJfcmVnIHBvaW50ZXJzCi0KLSAgICBlcDkzeHggdGltZXI6IFJlbmFtZWQgcG9pbnRlcnMgdG8gc3RydWN0IHRpbWVyX3JlZ3MgZnJvbSBuYW1lICd0aW1lcicgdG8KLSAgICAndGltZXJfcmVncycgaW4gb3JkZXIgdG8gYXZvaWQgY29uZnVzaW9uIHdpdGggdGhlIGdsb2JhbCB2YXJpYWJsZSAndGltZXInCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotCi1jb21taXQgMjUyOGRjNTIzNjFiZWE0OWU2YmQ0YTk1Y2UyMzc0ZDAwMDRjYTU2ZgotQXV0aG9yOiBOYXZlZW4gS3Jpc2huYSBDSCA8Y2gubmF2ZWVuQHNhbXN1bmcuY29tPgotRGF0ZToJRnJpIE1hciA1IDE3OjE2OjA1IDIwMTAgKzA5MDAKLQotICAgIFNBTVNVTkc6IFNNREtDMTAwOiBBZGRzIGV0aGVybmV0IHN1cHBvcnQuCi0KLSAgICBBZGQgc2V0dXAgZm9yIGV0aGVybmV0IG9uIFNNREtDMTAwLCBhbGxvd2luZyBrZXJuZWwvcmFtZGlzayB0byBiZQotICAgIGxvYWRlZCBvdmVyIHRmdHAuCi0KLSAgICBUaGUgcHJlaW5pdCBmdW5jdGlvbiB3aWxsIGNvbmZpZ3VyZSBHUElPIChHUEswQ09OKSAmIFNST01DIHRvIGxvb2sKLSAgICBmb3IgZW52aXJvbm1lbnQgaW4gU1JPTSBCYW5rIDMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOYXZlZW4gS3Jpc2huYSBDaCA8Y2gubmF2ZWVuQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDAxODAyZTBkMjJhNGJiMzkwM2IzNDJmZjIzNTdlYTNiYmNjY2QyODkKLUF1dGhvcjogTmF2ZWVuIEtyaXNobmEgQ0ggPGNoLm5hdmVlbkBzYW1zdW5nLmNvbT4KLURhdGU6CUZyaSBNYXIgNSAxNzoxNTozOCAyMDEwICswOTAwCi0KLSAgICBTNVBDMTAwOiBGdW5jdGlvbiB0byBjb25maWd1cmUgdGhlIFNST01DIHJlZ2lzdGVycy4KLQotICAgIE5hbmQgRmxhc2gsIEV0aGVybmV0LCBvdGhlciBmZWF0dXJlcyBtaWdodCBuZWVkIHRvIGNvbmZpZ3VyZSB0aGUKLSAgICBTUk9NQyByZWdpc3RlcnMgYWNjb3JkaW5nbHkuCi0gICAgVGhlIGNvbmZpZ19zcm9tYygpIGZ1bmN0aW9ucyBoZWxwcyB3aXRoIHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOYXZlZW4gS3Jpc2huYSBDaCA8Y2gubmF2ZWVuQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGEyOGJlYzg5Y2NjMTdiNTZhNTBkODQxYzhmMDc3OGU5Mjc0MzRkMWMKLUF1dGhvcjogTmF2ZWVuIEtyaXNobmEgQ0ggPGNoLm5hdmVlbkBzYW1zdW5nLmNvbT4KLURhdGU6CUZyaSBNYXIgNSAxNzoxNToxMyAyMDEwICswOTAwCi0KLSAgICBTNVBDMTAwOiBNZW1vcnkgU3ViU3lzdGVtIEhlYWRlciBmaWxlLCByZWdpc3RlciBkZXNjcmlwdGlvbihTUk9NQykuCi0KLSAgICBNZW1vcnkgc3Vic3lzdGVtIG9mIFM1UEMxMDAgaGFuZGxlcyBTUk9NLCBTUkFNLCBPbmVEUkFNLCBPbmVOYW5kLAotICAgIE5BTkQgRmxhc2gsIEREUnMuCi0gICAgc21jLmggaXMgYSBjb21tb24gcGxhY2UgZm9yIHRoZSByZWdpc3RlciBkZXNjcmlwdGlvbiBvZiBNZW1vcnkgc3Vic3lzdGVtCi0gICAgb2YgUzVQQzEwMC4KLSAgICBOb3RlOiBPbmx5IFNST00gcmVsYXRlZCByZWdpc3RlcnMgYXJlIGRlc2NpYmVkIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5hdmVlbiBLcmlzaG5hIENoIDxjaC5uYXZlZW5Ac2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgYWJiZTE4YzM1M2MyOTdhNDBjNDI4YmE5MmYzZTFhODVlOGU2OTRmYwotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglGcmkgRmViIDEyIDE4OjIxOjE3IDIwMTAgKzA5MDAKLQotICAgIHM1cGMxeHg6IHVwZGF0ZSB0aGUgUkVBRE1FIGZpbGUKLQotICAgIEJlY2F1c2UgYWRkcyBzdXBwb3J0IHRoZSBHUElPIEludGVyZmFjZSwgUkVBRE1FIGZpbGUgaXMgdXBkYXRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGFiNjkzZTljNGMwNmI0MmQxNzQ2YTBkN2EwMzU0MTk2OGZiNTViYjkKLUF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotRGF0ZToJRnJpIEZlYiAxMiAxODoxNzo1MiAyMDEwICswOTAwCi0KLSAgICBzNXBjMXh4OiBzdXBwb3J0IHRoZSBHUElPIGludGVyZmFjZQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgdGhlIEdQSU8gaW50ZXJmYWNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA3YjkyMTU5YmQ5ZmMwYWNhZGRkNjViMzE0ZGEyNTJiNzE1ZDFiNDRlCi1BdXRob3I6IEpvb255b3VuZyBTaGltIDxqeTA5MjIuc2hpbUBzYW1zdW5nLmNvbT4KLURhdGU6CU1vbiBGZWIgOCAyMjowMDo1MiAyMDEwICswOTAwCi0KLSAgICBzM2M2NHh4OiBBZGQgaWZkZWYgYXQgdGhlIFMzQzY0WFggb25seSBjb2RlcwotCi0gICAgVGhlIHMzYzY0MDAuaCBmaWxlIGlzIG9ubHkgZm9yIFMzQzY0WFggY3B1IGFuZCB0aGUgcGhlcmlwaGVyYWwgcG9ydAotICAgIGFkZHJlc3MoMHg3MDAwMDAwMCAtIDB4N2ZmZmZmZmYpIGV4aXN0cyBhdCBvbmx5IFMzQzY0WFggY3B1LCBzbyB0aGV5Ci0gICAgc2hvdWxkIGJlIGluY2x1ZGVkIGJ5IG9ubHkgUzNDNjRYWCBjcHUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb29ueW91bmcgU2hpbSA8ankwOTIyLnNoaW1Ac2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgNmM3MWE4ZmVjOTVhOWUwZjkwZmJjNDc0NjljMzg5YzZmMzVkOTZiYwotQXV0aG9yOiBOYXZlZW4gS3Jpc2huYSBDSCA8Y2gubmF2ZWVuLnNhbXN1bmcuY29tPgotRGF0ZToJVGh1IEZlYiA0IDE0OjE3OjM4IDIwMTAgKzA5MDAKLQotICAgIFM1UEMxMDA6IE1vdmVzIHRoZSBNYWNyb3MgdG8gYSBjb21tb24gaGVhZGVyIGZpbGUKLQotICAgIFRoZSBnZXRfcGxsX2NsayhpbnQpIEFQSSByZXR1cm5zIHRoZSBQTEwgZnJlcXVlbmN5IGJhc2VkIG9uCi0gICAgdGhlIChpbnQpIGFyZ3VtZW50IHdoaWNoIGlzIGRlZmluZWQgbG9jYWxseSBpbiBjbG9jay5jCi0KLSAgICBNb3ZpbmcgdGhhdCAjZGVmaW5lIHRvIGNvbW1vbiBoZWFkZXIgZmlsZSAoY2xrLmgpIHdvdWxkCi0gICAgYmUgaGVscGZ1bCB3aGVuIHVzaW5nIHRoZSBBUEkgZnJvbSBvdGhlciBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5hdmVlbiBLcmlzaG5hIENoIDxjaC5uYXZlZW5Ac2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgMmNhNTUxZGQ3YWQ2ZWMxMTQxOGYxMTNiMWI1MGM5NmZkZDE1YTM3MAotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglNb24gTWFyIDggMTY6MjI6MzMgMjAxMCArMDkwMAotCi0gICAgTUFJTlRBSU5FUlM6IHNvcnQgdGhlIGxpc3Qgb2YgQVJNIE1haW50YWluZXJzIGJ5IGxhc3QgbmFtZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgYzkzN2M0MjQzMTkyM2M5NmE2MTdlOTQ2MmUyYzBlY2JhZjJhZDcyZAotQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgotRGF0ZToJTW9uIE1hciA4IDEwOjQ2OjA3IDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogQWRkaW5nIG1haW50YWluZXIgbmFtZSBmb3Igc3BlYXIgU29DcwotCi0gICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gS3VtYXIgPHZpcGluLmt1bWFyQHN0LmNvbT4KLQotY29tbWl0IGQ4YmMwYTI4ODk3MDBiYTA2MzU5OGRlNmQ0ZTdkMTM1MzYwYjUzN2UKLUF1dGhvcjogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci1EYXRlOglUaHUgQXByIDEgMDA6MDA6NTYgMjAxMCAtMDQwMAotCi0gICAgbmlvczI6IFJlbG9hZCB0aW1lciBjb3VudCBpbiByZXNldF90aW1lcigpCi0KLSAgICAgICBXaGVuIHRoZSB0aW1lc3RhbXAgaXMgaW5jcmVtZW50ZWQgdmlhIGludGVycnVwdCBhbmQgdGhlIGludGVycnVwdAotICAgICAgIHBlcmlvZCBpcyBncmVhdGVyIHRoYW4gMSBtc2VjLCBzdWNjZXNzaXZlIGNhbGxzIHRvIGdldF90aW1lcigpIGNhbgotICAgICAgIHByb2R1Y2UgaW5hY2N1cmF0ZSB0aW1pbmcgc2luY2UgdGhlIGludGVycnVwdHMgYXJlIGFzeW5jaHJvbm91cwotICAgICAgIHRvIHRoZSB0aW1pbmcgbG9vcC4gRm9yIGV4YW1wbGUsIHdpdGggYW4gaW50ZXJydXB0IHBlcmlvZCBvZiAxMCBtc2VjCi0gICAgICAgdHdvIHN1Y2Nlc3NpdmUgY2FsbHMgdG8gZ2V0X3RpbWVyKCkgY291bGQgaW5kaWNhdGUgYW4gZWxhcHNlZCB0aW1lCi0gICAgICAgb2YgMTAgbXNlYyBhZnRlciBvbmx5IHNldmVyYWwgaHVuZHJlZCB1c2VjcyAtLSBkZXBlbmRpbmcgb24gd2hlbgotICAgICAgIHRoZSBuZXh0IGludGVycnVwdCBhY3R1YWxseSBvY2N1cnMuIFRoaXMgYmVoYXZpb3IgY2FuIGNhdXNlCi0gICAgICAgcmVsaWFiaWxpdHkgaXNzdWVzIHdpdGggY29tcG9uZW50cyBzdWNoIGFzIENGSSBhbmQgTkFORC4KLQotICAgICAgIFRoaXMgY2FuIGJlIHJlbWVkaWVkIGJ5IGNhbGxpbmcgcmVzZXRfdGltZXIoKSBwcmlvciB0byBlc3RhYmxpc2hpbmcKLSAgICAgICB0aGUgYmFzZSB0aW1lc3RhbXAgd2l0aCBnZXRfdGltZXIoMCksIHByb3ZpZGVkIHJlc2V0X3RpbWVyKCkKLSAgICAgICByZXNldHMgdGhlIGhhcmR3YXJlIHRpbWVyIChyYXRoZXIgdGhhbiBzaW1wbHkgcmVzZXR0aW5nIG9ubHkgdGhlCi0gICAgICAgdGltZXN0YW1wKS4gVGhpcyBoYXMgdGhlIGVmZmVjdCBvZiBzeW5jaHJvbml6aW5nIHRoZSBpbnRlcnJ1cHRzCi0gICAgICAgKGFuZCB0aGUgYWR2YW5jZSBvZiB0aGUgdGltZXN0YW1wKSB3aXRoIHRoZSB0aW1pbmcgbG9vcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgZWQyOTQxNTc4NDgwZDMwYjQxM2UwODFiNmYxYTU2NzVkNGFmZDllMgotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglXZWQgTWFyIDI0IDExOjQxOjQ2IDIwMTAgKzA4MDAKLQotICAgIG5pb3MyOiBwYXNzIGNvbW1hbmQgbGluZSBhbmQgaW5pdHJkIHRvIGxpbnV4IGluIGJvb3RtLmMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBib290YXJncyBwYXNzaW5nIHRvIG5pb3MyIGxpbnV4LgotCi0gICAgVGhlIGFyZ3MgcGFzc2luZyBpcyBlbmFibGVkIHdpdGgsCi0gICAgcjQgOiAnTklPUycgbWFnaWMKLSAgICByNSA6IHBvaW50ZXIgdG8gaW5pdHJkIHN0YXJ0Ci0gICAgcjYgOiBwb2ludGVyIHRvIGluaXRyZCBlbmQKLSAgICByNyA6IHBvaW50ZXIgdG8gY29tbWFuZCBsaW5lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA5ZTQ4NmFiMWM5OGVhN2FiMzU3NTIwMzA3ZmU1ZDVhMDg0N2NkMWJiCi1BdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotRGF0ZToJVHVlIE1hciAzMCAyMDoyNjoxNSAyMDEwIC0wNDAwCi0KLSAgICBuaW9zMjogRml4IEFNRExWMDY1RCBmbGFzaCB3cml0ZSBidWcgaW4gYWx0ZXJhIGJvYXJkIGNvbW1vbiB0cmVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCAzYTg5YTkxYTEwZmVkNTQ1YWY0NTg0MThlNjNkOTExOTUzYTk4NDljCi1BdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotRGF0ZToJVHVlIE1hciAzMCAyMDoyMzowNCAyMDEwIC0wNDAwCi0KLSAgICBuaW9zMjogU2V0IENPTkZJR19TWVNfSFogdG8gMTAwMCBhbGwgbmlvczIgYm9hcmRzLgotCi0gICAgICAgQ09ORklHX1NZU19IWiB3YXMgYmVpbmcgY2FsY3VsYXRlZCAoaW5jb3JyZWN0bHkpIGluIG5pb3MyIGNvbmZpZ3VyYXRpb24KLSAgICAgICBoZWFkZXJzLiBVcGRhdGVkIGNvbW1lbnRzIHRvIGFjY3VyYXRlbHkgZGVzY3JpYmUgdGltZWJhc2UgbWFjcm9zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCAzZWEwMDM3ZjIzMzdkZTY5MmI1ZmQyYjZhNDQ0OWRiMWRlMzA2N2EyCi1BdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotRGF0ZToJU3VuIE1hciAyMSAyMToyNDo0MyAyMDEwIC0wNDAwCi0KLSAgICBuaW9zMjogRml4IG91dHgvd3JpdGV4IHBhcmFtZXRlciBvcmRlciBpbiBpby5oCi0KLSAgICBUaGUgb3V0eC93cml0ZXggbWFjcm9zIHdlcmUgdXNpbmcgd3JpdGV4KGFkZHIsIHZhbCkgcmF0aGVyIHRoYW4KLSAgICAgICB0aGUgc3RhbmRhcmQgd3JpdGV4KHZhbCwgYWRkciksIHJlc3VsdGluZyBpbiBpbmNvbXBhdGliaWx0eSB3aXRoCi0gICAgICAgYXJjaGl0ZWN0dXJlIGluZGVwZW5kZW50IGNvbXBvbmVudHMuIFRoaXMgY2hhbmdlIHNldCB1c2VzIHN0YW5kYXJkCi0gICAgICAgcGFyYW1ldGVyIG9yZGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA2NGRhMDRkMjRlYTY4NTQ4M2Y5YWZhMDcwODhmNzY5MzFiNmMwZTAxCi1BdXRob3I6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotRGF0ZToJU3VuIE1hciAyMSAxNTozNjo0NCAyMDEwIC0wNDAwCi0KLSAgICBuaW9zMjogQWRkIHN1cHBvcnQgZm9yIEVQQ1MxNiBhbmQgRVBDUzY0IGNvbmZpZ3VyYXRpb24gZGV2aWNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgM2ZkMmExZjNlYjgzYTBiYmI4NGExMzk3ZmY5YzJhZjdlNmY1ZDA2OQotQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLURhdGU6CVN1biBNYXIgMjEgMTM6MjY6MzMgMjAxMCAtMDQwMAotCi0gICAgbmlvczI6IEFkZCBtaXNzaW5nIEV0aGVybmV0IGluaXRpYWxpemF0aW9uIHRvIGJvYXJkX2luaXQoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgYzcyYmZhZmJjOTRlNjFlYTNmZjM5MTVjODRhYTdmOWQ5MWEwNDVhMAotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglTYXQgTWFyIDIwIDA3OjA1OjQ3IDIwMTAgKzA4MDAKLQotICAgIG5pb3MyOiBhZGQgc3RydWN0IHN0YXQgc3VwcG9ydCBpbiBsaW51eC9zdGF0LmgKLQotICAgIFRoaXMgaXMgbmVlZGVkIGZvciBqZmZzMiBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgM2JlZjI1M2YwODAyYzYyOTJiOGUyYWNjMDA4OTg5NDAxOWU5OWU2MgotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglTYXQgTWFyIDIwIDA3OjA1OjQ2IDIwMTAgKzA4MDAKLQotICAgIG5pb3MyOiB1c2UgYml0b3BzIGZyb20gbGludXgtMi42IGFzbS1nZW5lcmljCi0KLSAgICBUaGVzZSBhcmUgbmVlZGVkIHRvIHVzZSB1YmkvdWJpZnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCBkOGI3M2RmZmE5ODY2ZDZkZTNjMDVjOGEyZDA3ZWNkNGJjMGQ1ZDdlCi1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CVNhdCBNYXIgMjAgMDc6MDU6NDUgMjAxMCArMDgwMAotCi0gICAgbmlvczI6IGFkZCBsb2NhbF9pcnFfZW5hYmxlL2Rpc2FibGUgdG8gYXNtLW5pb3MyL3N5c3RlbS5oCi0KLSAgICBDb3B5IGZyb20gbGludXggaGVhZGVyLiBUaGlzIGlzIG5lZWRlZCBmb3IgZ2VuZXJpYyBiaXRvcHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCA1NGQ4MDllNzU1MzkzOTYyOWU4OTQxYWI5ZWVmMWY3NjI0NjNhMmIzCi1BdXRob3I6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLURhdGU6CVNhdCBNYXIgMjAgMDc6MDU6NDQgMjAxMCArMDgwMAotCi0gICAgbmlvczI6IGFkZCBhc20tbmlvczIvZXJybm8uaAotCi0gICAgSnVzdCBwdWxsIGluIGFzbS1nZW5lcmljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgYzlkNGY0NmI1ZDYzOWE0NTc0N2Q1ZWFhYmQzMWQzNTg1NmNiOTE4ZgotQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLURhdGU6CUZyaSBNYXIgMTkgMTk6MDM6MjggMjAxMCAtMDQwMAotCi0gICAgbmlvczI6IE1vdmUgc2VyaWFsIGRyaXZlcnMgdG8gaW5kaXZpZHVhbCBmaWxlcyBpbiAgZHJpdmVycy9zZXJpYWwKLQotICAgICAgIFRoZSBzdGFuZGFyZCBBbHRlcmEgVUFSVCAmIEpUQUcgVUFSVCBhcyB3ZWxsIGFzIHRoZSBPcGVuQ29yZXMKLSAgICAgICBZQU5VIGRyaXZlciBhcmUgbm93IGluIGluZGl2aWR1YWwgZmlsZXMgaW4gZHJpdmVycy9zZXJpYWwKLSAgICAgICByYXRoZXIgdGhhbiBhIHNpbmdsZSBmaWxlIHVuZXIgY3B1L25pb3MyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0KLWNvbW1pdCBjYTZlMWMxMzZkZGI3MjBjM2JiMmNjMDQzYjk5ZjdmMDZiYzQ2YzU1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDMxIDIzOjU0OjM5IDIwMTAgKzAyMDAKLQotICAgIFByZXBhcmUgdjIwMTAuMDMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA4ZTY0ZDZlZmQ4ZDc3OGE1ZjgzZDhiZmY5Y2QyNzNhODZkY2MxODJmCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIE1hciAzMSAwODozNDo1MSAyMDEwICswMjAwCi0KLSAgICBuZXQsIGRvYzogSG93IHRvIHNldHVwIE1BQyBhZGRyZXNzIGNvcnJlY3RseQotCi0gICAgQXMgdGhpcyBzZWVtcyB1bmNsZWFyLCBkb2N1bWVudCBob3cgdGhlIGZsb3cgb2Ygc2V0dGluZyB1cAotICAgIHRoZSBNQUMgYWRkcmVzcyBpcyBjb3JyZWN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLSAgICBUZXh0IGNoYW5nZWQgc2xpZ2h0bHksIGFkZGluZyBpbnB1dCBmcm9tIE1pa2UgRnJ5c2luZ2VyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGI3OGI0OGM2YTBjMzRiMjk5MWUzMWZjNDU0OGFhZjc3M2QzNGYyYjMKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDMxIDA4OjM0OjQ2IDIwMTAgKzAyMDAKLQotICAgIG5ldCwgZmVjX214Yzogb25seSBzZXR1cCB0aGUgZGV2aWNlIGVuZXRhZGRyIHdpdGggZWVwcm9tIHZhbHVlCi0KLSAgICBPbmx5IGZpbGwgdGhlIGRldmljZSBlbmV0YWRkciB3aXRoIHRoZSBjb250ZW50cyBvZiB0aGUgZWVwcm9tLAotICAgIGRvIG5vdCBwcm9ncmFtIGl0IGluIE1BQyBhZGRyZXNzIHJlZ2lzdGVycwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkNWE2NDIzN2Q1OGRlZDMxYzJlZWQ0NTVjN2EzNDZlMWM4NWY1NTY1Ci1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJVHVlIE1hciAzMCAxNTowMjoxMyAyMDEwICswMzAwCi0KLSAgICBkb2M6IEZpeCByYW1kaXNrIGV4YW1wbGVzIGluIGRvYy91SW1hZ2UuRklUL211bHRpLml0cwotCi0gICAgVGhlIHJhbWRpc2sgc2VjdGlvbnMgaW4gZG9jL3VJbWFnZS5GSVQvbXVsdGkuaXRzIGxhY2sKLSAgICBsb2FkIGFkZHJlc3MgYW5kIGVudHJ5IHBvaW50IHByb3BlcnRpZXMuIFVzaW5nIGV4YW1wbGVzCi0gICAgZnJvbSB0aGlzIGZpbGUgd2lsbCByZXN1bHQgaW4gdW5ib290YWJsZSBpbWFnZSwgdS1ib290Ci0gICAgd2lsbCBpc3N1ZSB0aGUgZm9sbG93aW5nIGVycm9yIG1lc3NhZ2VzOgotCi0gICAgQ2FuJ3QgZ2V0IHJhbWRpc2sgc3ViaW1hZ2UgbG9hZCBhZGRyZXNzIQotICAgIFJhbWRpc2sgaW1hZ2UgaXMgY29ycnVwdCBvciBpbnZhbGlkCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgbWlzc2luZyBwcm9wZXJ0aWVzIHRvIHJhbWRpc2sgc2VjdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLQotY29tbWl0IDJkMjAxOGYzZGI1ZWQ4MzRiYzFlZTIwOGEyYzYyMTJmZGYwMGJjYTEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhlaWtvLnNjaG9jaGVyQGludml0ZWwuaHU+Ci1EYXRlOglXZWQgTWFyIDI0IDEzOjIyOjUwIDIwMTAgKzAxMDAKLQotICAgIGpmZnMyLCBzdWVuMzogRml4IGNvbXBpbGVyIHdhcm5pbmcKLQotICAgICQgLi9NQUtFQUxMIHN1ZW4zCi0gICAgamZmczJfMXBhc3MuYzogSW4gZnVuY3Rpb24gJ2dldF9mbF9tZW0nOgotICAgIGpmZnMyXzFwYXNzLmM6Mzk5OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2lkJwotICAgIGpmZnMyXzFwYXNzLmM6IEluIGZ1bmN0aW9uICdnZXRfbm9kZV9tZW0nOgotICAgIGpmZnMyXzFwYXNzLmM6NDIzOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2lkJwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgVGVzdGVkLWJ5OiBUb20gPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDlmZjMyZDhjY2YwZTIzYjU1NzdjMjU2MTBmMDAxYWY4ZDc2MWI0YTIKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXIgMjkgMTI6NTE6MDcgMjAxMCAtMDUwMAotCi0gICAgbXBjODZ4eDogc2V0IHRoZSBERFIgQkFUcyBhZnRlciBjYWxjdWxhdGluZyB0cnVlIEREUiBzaXplCi0KLSAgICBBZnRlciBkZXRlcm1pbmluZyBob3cgbXVjaCBERFIgaXMgYWN0dWFsbHkgaW4gdGhlIHN5c3RlbSwgc2V0IERCQVQwIGFuZAotICAgIElCQVQwIGFjY29yZGluZ2x5LglUaGlzIGVuc3VyZXMgdGhhdCB0aGUgQ1BVIHdvbid0IGF0dGVtcHQgdG8gYWNjZXNzCi0gICAgKHZpYSBzcGVjdWxhdGlvbikgYWRkcmVzc2VzIG91dHNpZGUgb2YgYWN0dWFsIG1lbW9yeS4KLQotICAgIE9uIDg2eHggc3lzdGVtcywgREJBVDAgYW5kIElCQVQwICh0aGUgQkFUcyBmb3IgRERSKSBhcmUgaW5pdGlhbGl6ZWQgdG8gMkdCCi0gICAgYW5kIGtlcHQgdGhhdCB3YXkuCUlmIHRoZSBzeXN0ZW0gaGFzIGxlc3MgdGhhbiAyR0Igb2YgbWVtb3J5ICh0eXBpY2FsIGZvcgotICAgIGFuIE1QQzg2MTAgSFBDRCksIHRoZSBDUFUgbWF5IGF0dGVtcHQgdG8gYWNjZXNzIHRoaXMgbWVtb3J5IGR1cmluZwotICAgIHNwZWN1bGF0aW9uLiAgVGhlIHpsaWIgY29kZSBpcyBub3RvcmlvdXMgZm9yIGdlbmVyYXRpbmcgc3VjaCBtZW1vcnkgcmVhZHMsCi0gICAgYW5kIGluZGVlZCBvbiB0aGUgTVBDODYxMCwgdW5jb21wcmVzc2luZyB0aGUgTGludXgga2VybmVsIGNhdXNlcyBhIG1hY2hpbmUKLSAgICBjaGVjayAod2l0aG91dCB0aGlzIHBhdGNoKS4KLQotICAgIEN1cnJlbnRseSB3ZSBhcmUgbGltaXRlZCB0byBwb3dlciBvZiB0d28gc2l6ZWQgRERSIHNpbmNlIHdlIG9ubHkgdXNlIGEKLSAgICBzaW5nbGUgYmF0LiAgSWYgYSBub24tcG93ZXIgb2YgdHdvIHNpemUgaXMgdXNlZCB0aGF0IGlzIGxlc3MgdGhhbgotICAgIENPTkZJR19NQVhfTUVNX01BUFBFRCB1LWJvb3Qgd2lsbCBjcmFzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDMzZjU3YmQ1NTNlZGYyOWRmZmVmNWE2YzdkNzZlMTY5Yzc5YTYwNDkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBNYXIgMjYgMTU6MTQ6NDMgMjAxMCAtMDUwMAotCi0gICAgODV4eDogRml4IGVuYWJsaW5nIG9mIEwxIGNhY2hlIHBhcml0eSBvbiBzZWNvbmRhcnkgY29yZXMKLQotICAgIFVzZSB0aGUgc2FtZSBjb2RlIGJldHdlZW4gcHJpbWFyeSBhbmQgc2Vjb25kYXJ5IGNvcmVzIHRvIGluaXQgdGhlCi0gICAgTDEgY2FjaGUuICBXZSB3ZXJlIG5vdCBlbmFibGluZyBjYWNoZSBwYXJpdHkgb24gdGhlIHNlY29uZGFyeSBjb3Jlcy4KLQotICAgIEFsc28sIHJld29ya2VkIHRoZSBMMSBjYWNoZSBpbml0IGNvZGUgdG8gbWF0Y2ggdGhlIGU1MDBtYyBMMiBpbml0IGNvZGUKLSAgICB0aGF0IGZpcnN0IGludmFsaWRhdGVzIHRoZSBjYWNoZSBhbmQgbG9ja3MuICBUaGFuIGVuYWJsZXMgdGhlIGNhY2hlIGFuZAotICAgIG1ha2VzIHN1cmUgaXRzIGVuYWJsZWQgYmVmb3JlIGNvbnRpbnVpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMWEzMzJkYTYxZGY5YzM4YjU2NzM1OWFmMTE0ZGFlYWFhZWZhZWFkOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTWFyIDI5IDE1OjMwOjQ2IDIwMTAgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBJMkMgYnVzID49IDEgaW5pdGlhbGl6YXRpb24KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIGludHJvZHVjZWQgd2l0aCBwYXRjaCBlYjVlYjJiMAotICAgIFtwcGM0eHg6IENsZWFudXAgUFBDNHh4IEkyQyBpbmZyYXN0cnVjdHVyZV0uIFdlIG5lZWQgdG8gYXNzaWduIHRoZSBJMkMKLSAgICBiYXNlIGFkZHJlc3MgdG8gdGhlICJpMmMiIHBvaW50ZXIgaW5zaWRlIG9mIHRoZSBjb250cm9sbGVyIGxvb3AuCi0gICAgT3RoZXJ3aXNlIGNvbnRyb2xsZXIgMCBpcyBpbml0aWFsaXplZCBtdWx0aXBsZSB0aW1lcyBpbnN0ZWFkIG9mCi0gICAgaW5pdGlhbGl6aW5nIGVhY2ggSTJDIGNvbnRyb2xsZXIgc2VxdWVudGlhbGx5LgotCi0gICAgVGVzdGVkIG9uIEthdG1haS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAyNGRlMmY0YmUwMGY4MWM1ODI3MGQwZGY0NzI5NmJmM2EzNjAxY2VmCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJTW9uIE1hciAyOSAxMzoxNTo0OCAyMDEwICswMjAwCi0KLSAgICBib290bSwgbGludXg6IGZpeCBib290aW5nIE11bHRpLUZpbGUgSW1hZ2Ugd2l0aCAia2VybmVsK3JhbWRpc2srZmR0IgotCi0gICAgQm9vdGluZyBhICJNdWx0aS1GaWxlIEltYWdlIiBpbmNsdWRpbmcgYSBsaW51eCBrZXJuZWwsIHJhbWRpc2sgYW5kCi0gICAgZmR0LCBnZW5lcmF0ZWQgd2l0aAotCi0gICAgbWtpbWFnZSAtQSBwcGMgXAotCS1PIGxpbnV4IFwKLQktVCBtdWx0aSBcCi0JLUMgZ3ppcCBcCi0JLWEgMDAwMDAwMDAgXAotCS1lIDAwMDAwMDAwIFwKLQktbiAia2VybmVsLTIuNitpbml0cmQrZHRiIiBcCi0JLWQgInZtbGludXguYmluLmd6OnJhbWRpc2tfaW1hZ2UuZ3o6Ym9hcmQuZHRiIiBcCi0JbXVsdGkuYmluCi0KLSAgICBhY3R1YWxseSBmYWlscywgYmVjYXVzZSByYW1kaXNrIHN0YXJ0IGFuZCBlbmQgYWRkcmVzc2VzCi0gICAgZGlkbjt0IGdldCBpbml0aWFsaXplZC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlLgotCi0gICAgVGVzdGVkIG9uIHRoZSBLVVA0SyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgZmQwM2VhODk2NDFkNmY2YWRlNmQxYTg1ODBjMWJiOWY1MmI4NTQyYwotQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBNYXIgMjYgMDk6NDY6NDIgMjAxMCArMDEwMAotCi0gICAgaTJjOiBtYWRlIHVudXNlZCBmdW5jdGlvbiBpMmNfbXV4X2FkZF9kZXZpY2Ugc3RhdGljCi0KLSAgICBhbmQgcmVtb3ZlZCBpdCBmcm9tIHRoZSAuaCBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotY29tbWl0IDJjMGRjOTkwMjAyYzY5YTYyMzExMjJlYzI0NjNjNGUzMDc2YTE2ZjMKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgTWFyIDI2IDA5OjQ2OjQxIDIwMTAgKzAxMDAKLQotICAgIGNtZF9pMmM6IGludHJvZHVjZWQgZ2V0X2FsZW4gaGVscGVyIGZ1bmN0aW9uCi0KLSAgICBUaGUgY29kZSB0byBwYXJzZSBhbGVuIGFwcGVhcmVkIDYgdGltZXMgaW4gdGhlIGZ1bmN0aW9uLgotICAgIEZhY3RvcmVkIHRoaXMgb3V0IGluIGEgc21hbGwgaGVscGVyIGZ1bmN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotY29tbWl0IGEyNjZmZTk1NWE1NWJiN2EwM2E2N2YzYzkxMDMzMDY4ZjMxN2IzMzcKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgTWFyIDI2IDA5OjQ2OjQwIDIwMTAgKzAxMDAKLQotICAgIGNtZF9pMmM6IG1vdmVkIGEgZGVmaW5lIHRvIGJlZm9yZSB0aGUgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotY29tbWl0IDRhOGNmMzM4MmE2ZmVhNWNjY2MxZTJhZTYxYTQ2MDFiZjI2NDkwYzMKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgTWFyIDI2IDA5OjQ2OjM5IDIwMTAgKzAxMDAKLQotICAgIGNtZF9pMmM6IG1vdmVkIG1pc3Bvc2l0aW9uZWQgY29tbWVudCBmb3IgaTJjIG1kCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotY29tbWl0IDNhNmRjYjk4OGVlZTNmZDNjZDljNWVmOTY4NTVhOGRhNzI5YTI5MGUKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgTWFyIDI2IDA5OjQ2OjM4IDIwMTAgKzAxMDAKLQotICAgIGNtZF9pMmMuYzogZGVjbGFyZWQgbG9jYWwgZnVuY3Rpb25zIGFzIHN0YXRpYwotCi0gICAgRGVjbGFyZWQgYWxsIGZ1bmN0aW9ucyB0aGF0IHdlcmUgbm90IGNhbGxlZCBvdXRzaWRlIHRoZSBmaWxlIGFzIHN0YXRpYwotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAyODgzY2MyZDQ4ZTk5ZmQxODczZWY4YWYwM2ZlZTc5NjY2MTFiNzM1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDI4IDAwOjI1OjE0IDIwMTAgKzAxMDAKLQotICAgIFByZXBhcmUgMjAxMC4wMy1yYzMKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwNjBmMjg1MzJiMDlkZDNkMmM3ODQyM2JkZDgwOWFjNzY4YTI3NjI5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDI1IDE0OjA3OjIzIDIwMTAgKzAxMDAKLQotICAgIGNtZF91c2IuYzogcHJpbnQgZGVidWcgbWVzc2FnZXMgb25seSB3aGVuIERFQlVHIGlzIGRlZmluZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhNTc0Y2ZmMTIxYjE0NzljOGU5NjJiN2EyYTI5MzEwMDIwMzg3MjYwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDI0IDEyOjE5OjE5IDIwMTAgKzAxMDAKLQotICAgIG1sMzAwOiByZW1vdmUgc3VwcG9ydCBmb3IgYnJva2VuLCBvcnBoYW5lZCBib2FyZAotCi0gICAgVGhlIG1sMzAwIGJvYXJkIGhhcyBhIG51bWJlciBvZiBpc3N1ZXMsIGJ1dCBub2JvZHkgY2FyZXMgYWJvdXQgdGhpcwotICAgIGxvbmctb3JwaGFuZWQgYm9hcmQgYW55IG1vcmUuICBSZW1vdmUgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCAwNDM4N2QyNGExN2IxZWUxMzAyNGRkNDc3OWRhNGI4NGQ0N2M2NWNjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWFyIDI3IDIzOjM3OjQ2IDIwMTAgKzAxMDAKLQotICAgIG1raW1hZ2U6IGZpeCBTZWdtZW50YXRpb24gRmF1bHQgd2hlbiBydW4gd2l0aG91dCAiLW4gbmFtZSIgb3B0aW9uCi0KLSAgICBUaGUgcmVzdHJ1Y3R1cmluZyBvZiB0aGUgbWtpbWFnZSBjb21tYW5kIGluIGNvbW1pdCA4OWE0ZDZiMSAoInRvb2xzOgotICAgIG1raW1hZ2U6IHNwbGl0IGNvZGUgaW50byBjb3JlLCBkZWZhdWx0IGFuZCBGSVQgaW1hZ2Ugc3BlY2lmaWMiKQotICAgIGludHJvZHVjZWQgYSBidWcgdGhhdCBjYXVzZWQgbWtpbWFnZSB0byBzZWdmYXVsdCB3aGVuIHJ1biB3aXRob3V0Ci0gICAgIi1uIG5hbWUiIG9wdGlvbi4gIEluaXRpYWxpemUgdGhlIGltYWdlbmFtZSBlbnRyeSB0byBwcmV2ZW50IHRoYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTU3MjA4MjNmNmY4MWEwZjNhOWUzNDA0ZGJjMzcwNTliZjY2NDRmMQotQXV0aG9yOiBUaG9tYXMgQ2hvdSA8dGhvbWFzQHd5dHJvbi5jb20udHc+Ci1EYXRlOglGcmkgTWFyIDI2IDA4OjE3OjAwIDIwMTAgKzA4MDAKLQotICAgIGNmaSBmbGFzaDogYWRkIHN0YXR1cyBwb2xsaW5nIG1ldGhvZCBmb3IgYW1kIGZsYXNoCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3RhdHVzIHBvbGxpbmcgbWV0aG9kIHRvIG9mZmVyIGFuIGFsdGVybmF0aXZlIHRvCi0gICAgZGF0YSB0b2dnbGUgbWV0aG9kIGZvciBhbWQgZmxhc2ggY2hpcHMuCi0KLSAgICBUaGlzIHBhdGNoIGlzIG5lZWRlZCBmb3IgbmlvczIgY2ZpIGZsYXNoIGludGVyZmFjZSwgd2hlcmUgdGhlIGJ1cwotICAgIGNvbnRyb2xsZXIgcGVyZm9ybXMgNCBieXRlcyByZWFkIGN5Y2xlcyBmb3IgYSBzaW5nbGUgYnl0ZSByZWFkCi0gICAgaW5zdHJ1Y3Rpb24uIFRoZSBkYXRhIHRvZ2dsZSBtZXRob2QgY2FuIG5vdCBkZXRlY3QgY2hpcCBidXN5Ci0gICAgc3RhdHVzIGNvcnJlY3RseS4gU28gd2UgaGF2ZSB0byBwb2xsIERRNywgd2hpY2ggd2lsbCBiZSBpbnZlcnRlZAotICAgIHdoZW4gdGhlIGNoaXAgaXMgYnVzeS4KLQotICAgIFRoaXMgZmVhdHVyZSBpcyBlbmFibGVkIHdpdGggdGhlIGNvbmZpZyBkZWYsCi0gICAgQ09ORklHX1NZU19DRklfRkxBU0hfU1RBVFVTX1BPTEwKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBDaG91IDx0aG9tYXNAd3l0cm9uLmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjNDBjOTRhM2QyMGE4NjE2MjY0YzJkZmNkYTg1Mjc5MTg1ZDY5YWViCi1BdXRob3I6IFJlbmF0byBBbmRyZW9sYSA8cmVuYXRvLmFuZHJlb2xhQGltYWdvcy5pdD4KLURhdGU6CVdlZCBNYXIgMjQgMjM6MDA6NDcgMjAxMCArMDgwMAotCi0gICAgY2ZpX2ZsYXNoOiBwcmVjaXNpb24gYW5kIHVuZGVyZmxvdyBwcm9ibGVtIGluIHRvdXQgY2FsY3VsYXRpb24KLQotICAgIFdpdGggb2xkIGNvbmZpZ3VyYXRpb24gaXQgY291bGQgaGFwcGVuIHRvdXQ9MCBpZiBDT05GSUdfU1lTX0haPDEwMDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW5hdG8gQW5kcmVvbGEgPHJlbmF0by5hbmRyZW9sYUBpbWFnb3MuaXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDlkM2E4NmFlYzUyY2IzYzBlOWJhZGQxMjE2N2Q5MjkyMTg0Y2U0ZGQKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJVHVlIE1hciAxNiAxMjozOTozNiAyMDEwIC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IG01NDQ1NUVWQiBzYXZlIGVudmlyb25tZW50IGJ1ZwotCi0gICAgVGhlIEFUTUVMIGZsYXNoIGRvZXMgbm90IGhhdmUgYnVmZmVyIHdyaXRlIGZlYXR1cmUuIEFzc2dpbmVkCi0gICAgYnVmZmVyX3NpemUgPSAxLCBzbyB0aGF0IHdoZW4gdGhlcmUgaXMgYSB3cml0ZSB0byB0aGUgZmxhc2gKLSAgICB3aWxsIG5vdCB1c2UgYnVmZmVyIHdyaXRlIGZ1bmN0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotCi1jb21taXQgZjI2YTI0NzMwODU2OGUzMjg1N2E1Y2MwNTRmNzIxOTUxMGE3ZDQ0ZQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglNb24gTWFyIDE1IDE5OjM5OjIxIDIwMTAgLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IE01MjUzREVNTyBkZWZhdWx0IGVudmlyb25tZW50Ci0KLSAgICBUaGUgZmxhc2ggbG9jYXRpb24gaXMgYXQgMHhmZjgwMDAwMCwgbm90IDAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IGRkOWYwNTRlZGU0MzNkZTczYjEzNzk4N2ZiM2RjMDY2ZThkMjRlYmIKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJVGh1IE1hciAxMSAyMjoxMjo1MyAyMDEwIC0wNjAwCi0KLSAgICBDb2xkRmlyZTogQ2FjaGUgdXBkYXRlIGZvciBhbGwgcGxhdGZvcm1zCi0KLSAgICBUaGUgQ0Ygd2lsbCBjYWxsIGNhY2hlIGZ1bmN0aW9ucyBpbiBsaWJfbTY4L2NhY2hlLmMgYW5kIHRoZQotICAgIGNhY2hlIHNldHRpbmdzIGFyZSBkZWZpbmVkIGluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IGY2MjhlMmY3MmRhZWU4MTBhYTU2ODYxOWI2NjI5ZGE2OGFkMDQyZDYKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJV2VkIE1hciAxMCAxODo1MDoyMiAyMDEwIC0wNjAwCi0KLSAgICBDb2xkRmlyZTogRml4IFNEUkFNIHNpemUgb24gTTUyMDhldmIgcmV2IEUKLQotICAgIFRoZSBwcm9wZXIgU0RSQU0gc2l6ZSBpcyAzMk1CIG5vdCA2NE1CCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKaW5nY2hhbmcgTHUgPGIyMjU5OUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWU4ZTkyNzAyMzU4MjIzMWIwMzRlMTk5NTY4ZTQ5Zjg0YWMwMzJhOQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgTWFyIDEwIDE4OjI0OjA3IDIwMTAgLTA2MDAKLQotICAgIENvbGRGaXJlOiBNaXNjIHVwZGF0ZSBmb3IgTTUzMDE3Ci0KLSAgICBSZXNpZGUgRXRoZXJuZXQgYnVmZmVyIGRlc2NyaXB0b3JzIGluIFNSQU0gaW5zdGVhZCBvZiBEUkFNLiBBZGQKLSAgICBDT05GSUdfU1lTX1RYX0VUSF9CVUZGRVIgaW4gcGxhdGZvcm0gY29uZmlndXJhdGlvbiBmaWxlLiBVcGRhdGUKLSAgICBEUkFNIGNvbnRyb2wgYW5kIFNSQU0gY29udHJvbCByZWdpc3RlciBzZXR0aW5nLiBVcGRhdGUgY2FjaGUKLSAgICBzZXR0aW5nIHdoZXJlIHNpemUgZG9lcyBub3Qgd3JpdGUgdG8gcHJvcGVyIHJlZ2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjlkODc3YTY0Nzk4NzhjYTk2Njg4NjcxZjM3ZDg3YjYyMGMzZTc3YwotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgTWFyIDEwIDE3OjMyOjEzIDIwMTAgLTA2MDAKLQotICAgIENvbGRGaXJlOiBBZGQgQ1BVIGNvbXBpbGUgZmxhZyBmb3IgbWNmNTMwMXggYW5kIG1jZjUzMngKLQotICAgIEFkZCBDUFUgY29tcGlsZSBmbGFnIC1tY3B1PTUzMDE1IGluIGNwdS9jb25maWcubWsKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IDBlOGE3NTU1MDY5NWFiYTlkOGNmZTljN2Y3NzEzZGE0MmMxZjNlODkKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJV2VkIE1hciAxMCAxNjozMzowMyAyMDEwIC0wNjAwCi0KLSAgICBDb2xkRmlyZTogVXBkYXRlIEV4dHJhIGVudmlyb25tZW50IERhdGEgZm9yIE01Mjc1RVZCCi0KLSAgICBQcm92aWRlIGV4dHJhIGVudmlyb25tZW50IERhdGEuIFJlbW92ZSBkZWZhdWx0IG5ldHdvcmsKLSAgICBhZGRyZXNzIGFuZCBNQUMgYWRkcmVzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IDUzZTQyOTBmMjBiNWY3M2M5NTcxN2Y0N2Y0YzA0ZWQ2OTMyZmY5MzEKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJV2VkIE1hciAxMCAxNjoxNDowMSAyMDEwIC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTTUyNzFFVkIgRFJBTSBCcmluZyB1cCBpc3N1ZQotCi0gICAgRml4IHByb3BlciBwb3J0c2l6ZTogVGhlIHJlZ2lzdGVyIGZvciBwb3J0c2l6ZSBpcyBlaXRoZXIgMDBiLCAwMWIsCi0gICAgb3IgMXhiLiBUaGUgdmFsdWUgdGhhdCBwcmV2aW91cyBhc3NpZ25lZCBpcyAzMmQuCi0gICAgRml4IERSQU0gYnJpbmcgdXA6IGluc2VydCBhc20oIm5vcCIpIGZvciBldmVyeSBEUkFNIHJlZ2lzdGVyIHNldHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhYzI2NWY3ZmNhYjFhMDliOWE4MzdhMzRlZjhiMTBhY2MxMDE2OTVlCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLURhdGU6CVdlZCBNYXIgMTAgMTE6NTY6MzYgMjAxMCAtMDYwMAotCi0gICAgQ29sZEZpcmU6IFVwZGF0ZSBNNTI1M0RFTU8gY29uZmlndXJhdGlvbiBmaWxlCi0KLSAgICBGaXggaW5jb3JyZWN0IGRlZmF1bHQgZW52aXJvbm1lbnQgZm9yIGZsYXNoIGVyYXNlIG9yIHByb3RlY3QKLSAgICByYW5nZS4gQ2hhbmdlIG9mZnNldCBmcm9tIDAgdG8gMHhmZjgwbm5ubi4gUmVtb3ZlIGRlZmF1bHQKLSAgICBldGhlcm5ldCBzZXR1cCBhbmQgTUFDIGFkZHJlc3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA2OGU0ZTc2YWY1NTc0NmE0MzMwODY1ZjU2NDc2ZTU4Y2U0MTQwY2E4Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLURhdGU6CVRodSBNYXIgMTEgMTU6MDQ6MjEgMjAxMCAtMDYwMAotCi0gICAgQ29sZEZpcmU6IFJlbG9jYXRlIHZlY3RvciB0YWJsZSAtIG1jZjU0NDV4Ci0KLSAgICBOZXdlciBDb2xkRmlyZSBwcm9jZXNzb3JzIGZhbWlseSBib290IGZyb20gYWRkcmVzcyAwIGluc3RlYWQgb2YKLSAgICAweEZGbm5fbm5ubi4gV2hlbiB0aGUgYm9vdCBmbGFzaCBiYXNlIGNoaXAgc2VsZWN0IGlzIHNldCBhdCBuZXcKLSAgICBsb2NhdGlvbiBpbnN0ZWFkIG9mIDAsIGFuIHVuLXByZWRpY3RhYmxlIGVycm9yIHdpbGwgb2NjdXIgaWYKLSAgICB0aGVyZSBpcyBhbiB2ZWN0b3IgYmVpbmcgdHJpZ2dlciBhbmQgcmVmZXIgaXQgdG8gYW4gaW52YWxpZAotICAgIGFkZHJlc3Mgb3IgdGhlIHZlY3RvciB0YWJsZSBoYW5kbGVyIGlzIG5vdCBleGlzdGVkIGF0IGFkZHJlc3MKLSAgICAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotCi1jb21taXQgZmE5ZGE1OTYyMTJkN2YyOGViMjZhMzI1N2Q3OWQ5NTE1Zjk4MzhjZAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgTWFyIDkgMTk6MjQ6NDMgMjAxMCAtMDYwMAotCi0gICAgQ29sZEZpcmU6IFVwZGF0ZSB1YXJ0X3BvcnRfY29uZiBpbiBzZXJpYWwgZHJpdmVyCi0KLSAgICBQcm92aWRlIHByb3BlciBwb3J0IHBhc3NpbmcgZnJvbSBzZXJpYWxfaW5pdCB0byB1YXJ0X3BhcnRfY29uZi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IDUyYWZmZTA0ZmE1NDkzNTk3ZDhhNWY2MjAyNTA3MTkwOTUwYTMyZTYKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJVHVlIE1hciA5IDE5OjE3OjUyIDIwMTAgLTA2MDAKLQotICAgIENvbGRGaXJlOiBVcGRhdGUgcHJvY2Vzc29ycycgc2VyaWFsIHBvcnQgY29uZmlndXJhdGlvbgotCi0gICAgUHJvdmlkZSBwYXJhbWV0ZXIgcGFzc2luZyB0byB1YXJ0X3BvcnRfY29uZmlnKCkuIFVwZGF0ZSBwb3J0Ci0gICAgY29uZmlndXJhdGlvbiAtIHVuLW1hc2sgaXQgYmVmb3JlIGVuYWJsZSB0aGUgYml0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IGQwNGMxZWZhZTNkODM0ZGI2ZTIxZTk5NzZlMzM4YmYxZTU4OGU5ODcKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJVHVlIE1hciA5IDE4OjMyOjE2IDIwMTAgLTA2MDAKLQotICAgIENvbGRGaXJlOiBDb3JyZWN0IGJpdCBkZWZpbml0aW9uCi0KLSAgICBVc2UgY29ycmVjdCBkZWZpbml0aW9uIGZvciBfTUFTSyBhbmQgX1VOTUFTSy4gSXQgd2FzIGNvbWJpbmVkIGluCi0gICAgdGhlIHByZXZpb3VzIHVzZWQgYW5kIGNhdXNlcyBjb25mdXNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAxMTYwOTVlYjFmMGY3MDE3ZWE4MDYyYWE4YThiYThjZWVjYjQzMGI1Ci1BdXRob3I6IFBoaWxpcHBlIERlIE11eXRlciA8cGhkbSBhdCBtYWNxZWwuYmU+Ci1EYXRlOglNb24gU2VwIDIxIDIyOjIwOjI5IDIwMDkgLTA2MDAKLQotICAgIGZpeCBjbWRfYmRpbmZvLmM6MzU0OiB3YXJuaW5nOiAncHJpbnRfZXRoJyBkZWZpbmVkIGJ1dCBub3QgdXNlZAotCi0gICAgVGhpcyBmaXhlcyB0aGUgZm9sbG93aW5nIHdhcm5pbmdzIHdoZW4gcnVubmluZyBNQUtFQUxMIGZvciBjb2xkZmlyZSA6Ci0gICAgY21kX2JkaW5mby5jOjM1NDogd2FybmluZzogJ3ByaW50X2V0aCcgZGVmaW5lZCBidXQgbm90IHVzZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBoaWxpcHBlIERlIE11eXRlciA8cGhkbSBhdCBtYWNxZWwuYmU+Ci0KLWNvbW1pdCBkZmMyYjc2OTdkYzA3ODYyZGE4MDRjMWJlMDg0Zjk2MzAxODg0YmM3Ci1BdXRob3I6IE1pY2hhZWwgRHVycmFudCA8bWR1cnJhbnRAYXJjdHVydXNuZXR3b3Jrcy5jb20+Ci1EYXRlOglXZWQgSmFuIDIwIDE5OjMzOjAyIDIwMTAgLTA2MDAKLQotICAgIEFkZGluZyBFUDI1MDAgTUNGNTI4MiBib2FyZCBbUEFUQ0hdCi0KLSAgICBNZXJjdXJ5LUVQMjUwMC5wYXRjaAotICAgICAgIC0gYWRkZWQgTWVyY3VyeSdzIEVQMjUwMCBib2FyZCB1c2VzIHRoZSBtY2Y1MjgyIHByb2Nlc3NvcgotCi0gICAgQ1JFRElUUy5wYXRjaAotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgV3UgPGRhdmlkd3VAYXJjdHVydXNuZXR3b3Jrcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBEdXJyYW50IDxtZHVycmFudEBhcmN0dXJ1c25ldHdvcmtzLmNvbT4KLQotY29tbWl0IDg5MDgzMzQ2ZDA2MjdhNWU2ZTI3MWU2MWJkMzRhYjUxMjFmOTQ2MmIKLUF1dGhvcjogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+Ci1EYXRlOglGcmkgT2N0IDMwIDE2OjU1OjAyIDIwMDkgKzAxMDAKLQotICAgIGFkZCBibG9jayB3cml0ZSBmdW5jdGlvbiB0byBzcGFydGFuMyBzbGF2ZSBzZXJpYWwgbG9hZAotCi0gICAgVXNpbmcgc2VwZXJhdGUgZnVuY3Rpb24gY2FsbHMgZm9yIGVhY2ggYml0LWJhbmcgb2Ygc2xhdmUgc2VyaWFsCi0gICAgbG9hZCBjYW4gYmUgcGFpbmZ1bGx5IHNsb3cuIFRoaXMgcGF0Y2ggYWRkcyB0aGUgcG9zc2liaWxpdHkgdG8KLSAgICBzdXBwbHkgYSBibG9jayB3cml0ZSBmdW5jdGlvbiB0aGF0IGxvYWRzIHRoZSBjb21wbGV0ZSBibG9jayBvZgotICAgIGRhdGEgaW4gb25lIGNhbGwgKGxpa2UgaXQgY2FuIGFscmVhZHkgYmUgZG9uZSB3aXRoIEFsdGVyYSBGUEdBcykuCi0gICAgT24gYW4gTUNGNTM3M0wgKDI0MCBNSHopIGxvYWRpbmcgYW4gWEMzUzQwMDAgdGhpcyByZWR1Y2VzIHRoZSBsb2FkCi0gICAgdGltZSBmcm9tIGFyb3VuZCAxNSBzZWNvbmRzIHRvIGFyb3VuZCAzIHNlY29uZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgotCi1jb21taXQgOWQ3OWU1NzU4YzNhNjc3NmJlOWE4Njg1NjgyM2QyOGU3MTU0YTQ4MQotQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLURhdGU6CU1vbiBKYW4gMjUgMTE6Mjc6NDQgMjAxMCArMDEwMAotCi0gICAgYWRkIEFTVFJPIE1DRjUzNzNMIGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgQVNUUk8gYm9hcmQocykgYmFzZWQgb24gTUNGNTM3M0wuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLQotY29tbWl0IGM1NTBhZmFkYTVmY2FkNDI2YWE2YTIxOWEzMjlmZWI5ZWVkYWU4YjIKLUF1dGhvcjogUnVwanlvdGkgU2FybWFoIDxyc2FybWFoQGFwcGxpZWRtaWNyby5jb20+Ci1EYXRlOglXZWQgTWFyIDI0IDE2OjUyOjAyIDIwMTAgKzA1MzAKLQotICAgIHBwYzR4eCBmaXggdW5zdGFibGUgNDQwRVB4IGJvb3RzdHJhcCBvcHRpb25zCi0KLSAgICA0NDBFUHggZml4ZWQgYm9vdHN0cmFwIG9wdGlvbnMgQSwgQiwgRCwgYW5kIEUgc2V0cyBQTEwgRldEVkEgdG8gYSB2YWx1ZSA9IDEuCi0gICAgVGhpcyByZXN1bHRzIGluIHRoZSBQTExPVVRCIGJlaW5nIGdyZWF0ZXIgdGhhbiB0aGUgQ1BVIGNsb2NrIGZyZXF1ZW5jeQotICAgIHJlc3VsdGluZyB1bnN0YWJsZSA0NDBFUHggb3BlcmF0aW9uIHJlc3VsdGluZyBpbiB2YXJpb3VzIHNvZnR3YXJlIGhhbmcKLSAgICBjb25kaXRpb25zLgotCi0gICAgVGhpcyBwYXRjaCByZXByb2dyYW1zIHRoZSBGV0RWQSBzYXRpc2Z5aW5nIHRoZSByZXF1aXJlbWVudCBvZiBzZXR0aW5nIEZXRFZCCi0gICAgdG8gYSB2YWx1ZSBncmVhdGVyIHRoYW4gMSB3aGlsZSB1c2luZyBvbmUgb2YgdGhlIGZvdXIgZGVhZnVsdCBib290c3RyYXAgb3B0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJ1cGp5b3RpIFNhcm1haCA8cnNhcm1haEBhbWNjLmNvbT4KLSAgICBBY2tlZC1ieSA6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFwcGxpZWRtaWNyby5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZmI1MDhiOGIzOWE1MmE0MDYzZDA5OGY1YTliNDM1NWJjNWIzMGMxNAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJV2VkIE1hciAyNCAxMDoxNjoyMCAyMDEwICswMTAwCi0KLSAgICBhdDkxOiBHZXQgcmlkIG9mIHNvbWUgd2FybmluZ3Mgd2hlbiBidWlsZGluZyBmb3Igb3RjNTcwCi0KLSAgICBUaGUgc29mdC1pMmMgY29kZSBmb3IgQVQ5MSBkZWZpbmVzIEkyQ19TT0ZUX0RFQ0xBUkFUSU9OUwotICAgIGZvciBkaXJlY3QgYWNjZXNzIGJ5IGRlcmVmZXJlbmNpbmcgYSBwaW8gcG9pbnRlci4KLSAgICBUaGUgT1RDNTcwIHBsYXRmb3JtIHVzZXMgdGhlIEFUOTEgZ3BpbyBBUEkgc28gaXQgZG9lcyBub3QKLSAgICBuZWVkIHRoZSBwaW8gdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotCi1jb21taXQgYWNiMTM4Njg5MzZhMjg1MDI3ODJhMTZlMWVkYWVjMzc4ZTQ5NGEyOQotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotRGF0ZToJU2F0IE1hciAxMyAxNzo0NDowOCAyMDEwICswMTAwCi0KLSAgICBsY2Q6IG1ha2UgMTZicHAgd29yawotCi0gICAgU3VwcG9ydCBmb3IgMTZicHAgd2FzIHN1cHBvc2VkIHRvIGJlIGluIHRoZSBjb2RlIGJ1dCB3YXMgbm90IHdvcmtpbmcuCi0gICAgVGhpcyBtYWtlcyBpdCB3b3JrIGFuZCBoYXMgYmVlbiB0ZXN0ZWQgaW4gdGhlIG5oazg4MTUgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA2Yjk0YjQ5NjIyMTFjMTZlZTIxOTcwNDhmYWE4ODdlMWY5MmYzNzU3Ci1BdXRob3I6IEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgotRGF0ZToJU2F0IE1hciAyMCAxOTowMjo1OCAyMDEwICswMTAwCi0KLSAgICBjbWRfbmFuZDogc2hvdyBuYW5kIHNjcnViIGNvbmZpcm1hdGlvbiBjaGFyYWN0ZXIKLQotICAgIFdoZW4gaXNzdWluZyBhIG5hbmQgc2NydWIgY29tbWFuZCwgdGhlIGVudGVyZWQgY2hhcmFjdGVyIGlzIG5vdCBkaXNwbGF5ZWQKLSAgICB0aGlzIG1heSBiZSBjb25mdXNpbmcuIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIGlucHV0IGNoYXJhY3RlciBiZWluZwotICAgIGRpc3BsYXllZCBpZiBpdCBpcyBhICd5JyBzbyB0aGF0IGFuIHVzZXIga25vd3MgaGUgaXMgYWJvdXQgdG8gc2NydWIgaGlzCi0gICAgbmFuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZsb3JpYW4gRmFpbmVsbGkgPGYuZmFpbmVsbGlAZ21haWwuY29tPgotCi1jb21taXQgN2MyN2I3YjFlYWM0M2NkY2RhNzM1YmFkNjIzMWNkZmMxZjYwMjI4NAotQXV0aG9yOiBOaWtvbGF5IFBldHVraG92IDxuaWtvbGF5cGV0dWtob3ZAZ21haWwuY29tPgotRGF0ZToJRnJpIE1hciAxOSAxMDo0OToyNyAyMDEwICswNTAwCi0KLSAgICBhdDkxOiBhZGQgaHdlY2MgbWV0aG9kIGZvciBuYW5kCi0KLSAgICBUaGlzIGlzIGEgcGF0Y2ggdG8gdXNlIHRoZSBoYXJkd2FyZSBFQ0MgY29udHJvbGxlciBvZgotICAgIHRoZSBBVDkxU0FNOTI2MCBmb3IgdGhlIEFUOTEgbmFuZC4gVGFrZW4gZnJvbSB0aGUga2VybmVsIDIuNi4zMy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa29sYXkgUGV0dWtob3YgPE5pa29sYXkuUGV0dWtob3ZAZ21haWwuY29tPgotCi1jb21taXQgY2M0MWE1OWE3NGNhOTA5NWQ1MThkNmQ2OTY1NWM2NzM1ZGQwMDgwOQotQXV0aG9yOiBDeXJpbCBDaGVtcGFyYXRoeSA8Y3lyaWxAdGkuY29tPgotRGF0ZToJV2VkIE1hciAxNyAxMDowMzoxMCAyMDEwIC0wNDAwCi0KLSAgICBUSTogRGF2aW5jaTogTkFORCBEcml2ZXIgQ2xlYW51cAotCi0gICAgTW9kaWZpZWQgdG8gdXNlIElPIGFjY2Vzc29yIHJvdXRpbmVzIGNvbnNpc3RlbnRseS4JRWxpbWluYXRlZCB2b2xhdGlsZSB1c2FnZQotICAgIHRvIGtlZXAgY2hlY2twYXRjaC5wbCBoYXBweS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEN5cmlsIENoZW1wYXJhdGh5IDxjeXJpbEB0aS5jb20+Ci0KLWNvbW1pdCAxNTJkZGEzZDk0ZTk3ZWRlN2FmM2Y5NTYwYTU5YTY1OTM4NGQ0NTg1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gTWFyIDIyIDIzOjI1OjAwIDIwMTAgKzAxMDAKLQotICAgIFByZXBhcmUgdjIwMTAuMDMtcmMyCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZDY1MGRhMmRkNGFmOTk5NjdhYWJjNDNjY2NiZDhmMTYwZWI0Y2VhNgotQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotRGF0ZToJVHVlIE1hciA5IDIyOjEzOjMzIDIwMTAgKzAxMDAKLQotICAgIGVwOTN4eCB0aW1lcjogRml4IHJlc29sdXRpb24gb2YgZ2V0X3RpY2tzKCkKLQotICAgIGVwOTN4eCB0aW1lcjogTWFrZSBnZXRfdGlja3MoKSByZXR1cm4gYSB2YWx1ZSBpbiBDT05GSUdfU1lTX0haIHJlc29sdXRpb24sCi0gICAgYXMgYW5ub3VuY2VkIGJ5IGdldF90YmNsaygpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotCi1jb21taXQgN2U2N2ZiNWJmMjdhMDdkM2I4ZDZiOTdjNzZmNzE5NWY3ZDY4YWY1OAotQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotRGF0ZToJVHVlIE1hciA5IDIyOjEzOjIwIDIwMTAgKzAxMDAKLQotICAgIGVwOTN4eCB0aW1lcjogRml4IHBvc3NpYmxlIG92ZXJmbG93IGluIHVzZWNzX3RvX3RpY2tzKCkKLQotICAgIGVwOTN4eCB0aW1lcjogVXNlIDY0LWJpdCB2YWx1ZXMgaW4gdXNlY3NfdG9fdGlja3MoKSBpbiBvcmRlciB0byBhdm9pZAotICAgIG92ZXJmbG93cyBpbiBpbnRlcm1lZGlhdGUgdmFsdWVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotCi1jb21taXQgM2M5NTBlMmViZmRlMDgzMDg0Y2M5MjZiMDIwZTNhMjJhNTM2YmY4NQotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDE2IDE3OjEwOjA1IDIwMTAgKzAxMDAKLQotICAgIGZkdF9zdXBwb3J0OiBhZGQgcGFydGl0aW9ucyBmaXh1cCBpbiBtdGQgbm9kZQotCi0gICAgQWxsb3cgb3ZlcndyaXRpbmcgZGVmaW5lZCBwYXJ0aXRpb25zIGluIHRoZSBkZXZpY2UgdHJlZSBibG9iCi0gICAgdXNpbmcgcGFydGl0aW9uIGluZm8gZGVmaW5lZCBpbiB0aGUgJ210ZHBhcnRzJyBlbnZpcm9ubWVudAotICAgIHZhcmlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotICAgIENjOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgZDYxMTI5NTAzMmMzMGU2YzUzM2NiMzU2MDA1ZmE4MmFiNzk5MjgyNAotQXV0aG9yOiBKb2huIFNjaG1vbGxlciA8anNjaG1vbGxlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTIgMDk6NDk6MjQgMjAxMCAtMDYwMAotCi0gICAgY21kIGhpc3Rvcnk6IE1hdGNoIGhpc3RvcnkgYnVmZmVyIHNpemUgdG8gY29uc29sZSBidWZmZXIKLQotICAgIE1hdGNoIGhpc3RvcnkgYnVmZmVyIHNpemUgdG8gY29uc29sZSBidWZmZXIgc2l6ZS4gSGlzdG9yeSBidWZmZXIgc2l6ZQotICAgIHdhcyBoYXJkIGNvZGVkIHRvIDI1NiwgYXJ0aWZpY2lhbGx5IGxpbWl0aW5nIHRoZSBjb21tYW5kIGJ1ZmZlciBzaXplLgotICAgIFRoZSBoaXN0b3J5IGJ1ZmZlciBub3cgdHJhY2tzIENPTkZJR19TWVNfQ0JTSVpFLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9obiBTY2htb2xsZXIgPGpzY2htb2xsZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA2NDc1YjlmOTFiZDMzYmZkMzg0MTg0NjljYWJkY2ZjMGZlZmJkODQ4Ci1BdXRob3I6IEpvaG4gU2NobW9sbGVyIDxqc2NobW9sbGVyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMiAwOTo0OToyMyAyMDEwIC0wNjAwCi0KLSAgICBjb25zb2xlOiBGaXggY29uc29sZSBidWZmZXIgb3ZlcnJ1bgotCi0gICAgV2hlbiBDT05GSUdfU1lTX0NCU0laRSBlcXVhbHMgTUFYX0NNREJVRl9TSVpFLCBhIGNvbW1hbmQgc3RyaW5nIG9mCi0gICAgbWF4aW11bSBsZW5ndGggd2lsbCBvdmVyd3JpdGUgcGFydCBvZiB0aGUgaGlzdG9yeSBidWZmZXIsIGNhdXNpbmcgdGhlCi0gICAgYm9hcmQgdG8gZGllLiBFeHBhbmQgdGhlIGNvbnNvbGVfYnVmZmVyIGFuZCBoaXN0X2xpbmVzIGJ1ZmZlciBieSBvbmUKLSAgICBjaGFyYWN0ZXIgZWFjaCB0byBob2xkIHRoZSBtaXNzaW5nIE5VTEwgY2hhci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gU2NobW9sbGVyIDxqc2NobW9sbGVyQHhlcy1pbmMuY29tPgotCi1jb21taXQgZTA3MGE1NmM3NzdmMWZkMDU5NTBlMWJjNjM0ODNjMTlkZWNkNmY3OAotQXV0aG9yOiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gTWFyIDEgMTE6NDc6MzYgMjAxMCArMDIwMAotCi0gICAgUE9TVDogYWRkIHByb2dyZXNzIEFQSQotCi0gICAgQWRkIFBPU1QgcHJvZ3Jlc3MgQVBJIGltcGxlbWVudGVkIGFzIHdlYWsgY2FsbHMgYmVmb3JlIGFuZCBhZnRlcgotICAgIGVhY2ggY2FsbCB0byB0aGUgUE9TVCB0ZXN0IGNhbGxiYWNrIGluIHRoZSBwb3N0X3J1bl9zaW5nbGUgcm91dGluZQotICAgIG9mIHRoZSBwb3N0LmMgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgWmFpZG1hbiA8bWljaGFlbC56YWlkbWFuQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA0N2FiNWFkMTQ1NzU1MzE3OTg0MzFmMGQxZThmODNlZTliYjBhODdlCi1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotRGF0ZToJRnJpIEZlYiAyNiAxNDowMDoxOSAyMDEwICswMTAwCi0KLSAgICBjbWRfc2V0ZXhwcjogYWxsb3cgbWVtb3J5IGFkZHJlc3NlcyBpbiBleHByZXNzaW9ucwotCi0gICAgVGhpcyBwYXRjaCBhZGQgZnVuY3Rpb25hbGl0eSB0byB1c2UgbWVtb3J5IGFkZHJlc3NlcyBpbiBleHByZXNzaW9ucy4KLSAgICBUaGlzIGluY3JlYXNlcyB0aGUgcG93ZXIgb2YgZXhwcmVzc2lvbnMgc3Vic3RhbnRpYWxseQotCi0gICAgSXQgYWRoZXJlcyB0byB0aGUgc3RhbmRhcmQgY29udmVtdGlvbnM6IG1lbW9yeSBhZGRyZXNzZXMgY2FuIGJlIGdpdmVuCi0gICAgaW4gdGhlIGZvcm1hdCAqYWRkcmVzcyAoZS5nLiAqMTAwMCkKLQotICAgIFJhdGlvbmFsZSBmb3IgdGhpcyBjaGFuZ2UgaXMgdGhhdCBpdCBhbGxvd3MgbWFza2luZyBvZmYgYml0cyBmcm9tIGEKLSAgICBieXRlIHRoYXQgaXMgb2J0YWluZWQgYnkgcmVhZGluZyBkYXRhIGZyb20gZS5nLiBpMmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotICAgIEZpeCB3YXJuaW5nOiBjb250cm9sIHJlYWNoZXMgZW5kIG9mIG5vbi12b2lkIGZ1bmN0aW9uCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDY1MmU1MzU0NmIyM2MyNWY4MDc1NjI4N2VhZjYwN2I3MTNhZmRjODcKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglUaHUgRmViIDI1IDEwOjEyOjE2IDIwMTAgKzAxMDAKLQotICAgIGNtZF9pMmMuYzogYWRkZWQgaTJjIHJlYWQgdG8gbWVtb3J5IGZ1bmN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotY29tbWl0IGZiMDA3MGU5MTAxYTFmMjg4ZDcwNTRmN2U4MGIzZDgwOGZkN2VhZDIKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglUaHUgRmViIDI1IDEwOjEyOjE1IDIwMTAgKzAxMDAKLQotICAgIGNtZF9pMmMuYzogc29ydGVkIGNvbW1hbmRzIGFscGhhYmV0aWNhbGx5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLQotY29tbWl0IGJmYzNiNzdlYmU2ODQzNWI0NmU5ODhlM2E0NDBiYzQ4NTdiYzdjZjQKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglUaHUgRmViIDI1IDEwOjEyOjE0IDIwMTAgKzAxMDAKLQotICAgIGNtZF9pMmMuYzogcmV3b3JrZWQgc3ViY29tbWFuZCBoYW5kbGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBmNzRkOWJkMmEyNDhlZmEyMjlmMGYzNDc4ZmUzMzFlMmEzMTk1ODhjCi1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotRGF0ZToJVGh1IEZlYiAyNSAxMDoxMjoxMyAyMDEwICswMTAwCi0KLSAgICBjbWRfYm9vdG0uYzogbWFkZSBzdWJjb21tYW5kIGFycmF5IHN0YXRpYwotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBmYWZmZTE0ZjAxNmRiMTBmMzM4MzZiMDE4YzRiMzA0ZDkzOWNmNTg2Ci1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotRGF0ZToJVGh1IEZlYiAyNSAxMDoxMjoxMiAyMDEwICswMTAwCi0KLSAgICBjbWRfaTJjLmM6IHJlZHVjZWQgc3ViYWRkcmVzcyBsZW5ndGggdG8gMyBieXRlcwotCi0gICAgYWNjb3JkaW5nIHRvIHNvbWUgb2YgdGhlIGNvbW1lbnRzIHRoZSBzdWJhZGRyZXNzIGxlbmd0aCBpcyAxIG9yIDIsIGJ1dCB3ZSBhcmUgYmVpbmcKLSAgICBwcmVwYXJlZCBmb3IgdGhlIGNhc2UgaXQgYmVjb21lcyAzLiBIb3dldmVyIHRoZSBjb2RlIGFsc28gYWNjZXB0ZWQgNC4KLSAgICBUaGlzIHJlcGFpcnMgdGhpcyBieSBjaGFuZ2luZyB0aGUgY29uc3RhbmQgNCB0byAzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhNmEwNDk2N2JjMjk1N2QyMDc5OWY0YmIyYTZiM2RkMDM1M2MxY2ZkCi1BdXRob3I6IFJlbmF0byBBbmRyZW9sYSA8cmVuYXRvLmFuZHJlb2xhQGltYWdvcy5pdD4KLURhdGU6CVR1ZSBNYXIgMTYgMTY6MDE6MjkgMjAxMCAtMDQwMAotCi0gICAgbmlvczI6IEFkZGVkIHN1cHBvcnQgdG8gWUFOVSBVQVJUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IDM1Mjc0NWFkNDg3ZjcyZTgzOTk4NmRkYmIwMjBlMWZlODZjMWQ0ODIKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJVHVlIE1hciAxNiAxMjoxMjo0OCAyMDEwIC0wNDAwCi0KLSAgICBuaW9zMjogdXNlIGdlbmVyaWMgdW5hbGlnbmVkLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgZmQ0MjhjMDVjODYzYWVmYjU3NWIxMmIyYTE5MTZiMDJkNWJmYTc1OQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CUZyaSBNYXIgMTIgMTA6MDE6MTIgMjAxMCArMDEwMAotCi0gICAgbXBjNXh4eDogUmVtb3ZlIGFsbCByZWZlcmVuY2VzIHRvIE1HVDUxMDAKLQotICAgIFdlIGRvIG5vdCBzdXBwb3J0IGEgcHJvY2Vzc29yIHRoYXQgbmV2ZXIgcmVhY2hlZCBhIHJlYWwgY3VzdG9tZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGMwYzMxNjU2OWY3MDA1NWViN2M3MDg2NGFhYTZkNDg2NjY3ODI2MDAKLUF1dGhvcjogTWF0dGhpYXMgV2Vpc3NlciA8bWF0dGhpYXMud2Vpc3NlckBncmFmLXN5dGVjby5kZT4KLURhdGU6CVR1ZSBKYW4gMTIgMTI6MDY6MzEgMjAxMCArMDEwMAotCi0gICAgdmlkZW86IEZpeCBjb25zb2xlIGRpc3BsYXkgd2hlbiBzcGxhc2hzY3JlZW4gaXMgdXNlZAotCi0gICAgSWYgYSBzcGxhc2hzY3JlZW4gaXMgdXNlZCB0aGUgY29uc29sZSBzY3JvbGxpbmcgdXNlZCB0aGUKLSAgICBzY3JvbGwgc2l6ZSBhcyBuZWVkZWQgd2hlbiBhIGxvZ28gd2FzIGRpc3BsYXllZC4gVGhpcwotICAgIHBhdGNoIHNldHMgdGhlIHNjcm9sbCBzaXplIHRvIHRoZSB3aG9sZSBzY3JlZW4gaWYKLSAgICBhIHNwbGFzaHNjcmVlbiBpcyBzaG93bi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIFdlaXNzZXIgPG1hdHRoaWFzLndlaXNzZXJAZ3JhZi1zeXRlY28uZGU+Ci0KLWNvbW1pdCBkYWE5ODliNDcyOTdjOWY3MzQyNjc4MzU5OWMyODZlZjNhMWYzZjQ5Ci1BdXRob3I6IEFzZW4gRGltb3YgPGRpbW92QHJvbmV0aXguYXQ+Ci1EYXRlOglUaHUgTWFyIDE4IDEzOjQxOjQ3IDIwMTAgKzAyMDAKLQotICAgIGNvcnJlY3QgYSBzeW50YXggdHlwbyBpbiBhdDkxX21hdHJpeC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBc2VuIERpbW92IDxkaW1vdkByb25ldGl4LmF0PgotCi1jb21taXQgMzIyZmYzOTVjOWFlYzdiODdhMjIxMWZlNDMzM2ZkZjQ0Mzc3YzU2NAotQXV0aG9yOiBKZWZmIEFuZ2llbHNraSA8amVmZkB0aGVwdHJncm91cC5jb20+Ci1EYXRlOglXZWQgTWFyIDE3IDE1OjA5OjI2IDIwMTAgLTA0MDAKLQotICAgIGVudjogZml4IGVuZGlhbiBvcmRlcmluZyBpbiBjcmMgdGFibGUKLQotICAgIFRoZSBjcmMgdGFibGUgd2FzIGJlaW5nIGJ1aWx0IGFzIGxpdHRsZSBlbmRpYW4gZm9yIGJpZyBlbmRpYW4KLSAgICB0YXJnZXRzLiAgVGhpcyB3b3VsZCBjYXVzZSBmd19wcmludGVudiB0byBhbHdheXMgZmFpbCB3aXRoCi0gICAgIldhcm5pbmc6IEJhZCBDUkMsIHVzaW5nIGRlZmF1bHQgZW52aXJvbm1lbnQiIG1lc3NhZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVmZiBBbmdpZWxza2kgPGplZmZAdGhlcHRyZ3JvdXAuY29tPgotICAgIEFja2VkLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLQotY29tbWl0IDUxYzJhYzliYjU3NGMxNDIwYjk5MzYxNTI2ODM5MmIwYzFmODI5ZjYKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVHVlIE1hciAxNiAxNzoxMDowOCAyMDEwICswMTAwCi0KLSAgICBtcGM1MTIxOiBjcHUvbXBjNTEyeC9kaXUuYzogZml4IHdhcm5pbmdzCi0KLSAgICBGaXggd2FybmluZ3Mgd2hpbGUgY29tcGlsaW5nIHdpdGggQ09ORklHX1ZJREVPIGVuYWJsZWQ6Ci0KLSAgICBkaXUuYzogSW4gZnVuY3Rpb24gJ3ZpZGVvX2h3X2luaXQnOgotICAgIGRpdS5jOjE1ODogd2FybmluZzogJ3JldHVybicgd2l0aCBubyB2YWx1ZSwgaW4gZnVuY3Rpb24gcmV0dXJuaW5nIG5vbi12b2lkCi0gICAgZGl1LmM6MTYyOiB3YXJuaW5nOiBmb3JtYXQgJyVsZCcgZXhwZWN0cyB0eXBlICdsb25nIGludCcsIGJ1dCBhcmd1bWVudCA2IGhhcyB0eXBlICdpbnQnCi0gICAgZGl1LmM6MTYyOiB3YXJuaW5nOiBmb3JtYXQgJyVsZCcgZXhwZWN0cyB0eXBlICdsb25nIGludCcsIGJ1dCBhcmd1bWVudCA3IGhhcyB0eXBlICdpbnQnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBhNzQ5MDgxNjFhMWIzN2Q3ODBkM2E4MjZhODY4MDdiYmM1MGEzODU3Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMTYgMTU6Mjk6MzMgMjAxMCArMDEwMAotCi0gICAgY29uc29sZS5jOiBmaXggcHJvYmxlbSB3aXRoIHNwbGFzaGltYWdlCi0KLSAgICBJZiBhIGJvYXJkIHVzZXMgY2ZiX2NvbnNvbGUgZHJpdmVyIGFuZCBzcGxhc2ggaW1hZ2UKLSAgICBhbmQgYWxzbyBkZWZpbmVzIENPTkZJR19TSUxFTlRfQ09OU09MRSwgdGhlIHVzZXIgaXMKLSAgICBsb2NrZWQgb3V0IGV2ZW4gaWYgInNpbGVudCIgaXMgbm90IHNldC4gSXQgaXMgbm90Ci0gICAgcG9zc2libGUgdG8gZ2V0IGFueSBvdXRwdXQsIG5laXRoZXIgb24gdmdhIGNvbnNvbGUKLSAgICBkZXZpY2Ugbm9yIG9uIHNlcmlhbCBjb25zb2xlIGFmdGVyIHJlZGlyZWN0aW5nIHRoZQotICAgIG91dHB1dCB0byB0aGUgc2VyaWFsIGNvbnNvbGUsIHNpbmNlIHRoZSBHRF9GTEdfU0lMRU5UCi0gICAgZmxhZyByZW1haW5zIHNldC4KLQotICAgIEZpeCB0aGUgcHJvYmxlbSBieSByZWRpcmVjdGluZyB0aGUgb3V0cHV0IGZyb20gZnJhbWUKLSAgICBidWZmZXIgdG8gc2VyaWFsIGNvbnNvbGUgaWYgc3BsYXNoaW1hZ2UgaXMgdXNlZC4KLSAgICBPbmx5IHN1cHByZXNzIHRoZSBvdXRwdXQgaWYgInNpbGVudCIgZW52aXJvbm1lbnQKLSAgICB2YXJpYWJsZSB3YXMgc2V0IGFuZCBkb24ndCBzZXQgdGhlIEdEX0ZMR19TSUxFTlQKLSAgICBmbGFnIGFyYml0cmFyaWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNTY0N2Y3OGQwNDE3NGIwYjk5ODU3ZDJhN2NiZjI1MTQxYmQxNGE0NQotQXV0aG9yOiBUaG9tYXMgV2ViZXIgPHN3aXJsQGdteC5saT4KLURhdGU6CVNhdCBNYXIgMTMgMjM6MTQ6NDUgMjAxMCArMDEwMAotCi0gICAgbW9kIGNoYW5nZSA3NTUgPT4gNjQ0IGZvciBtdWx0aXBsZSBmaWxlcwotCi0gICAgSSBleGVjdXRlZCAnZmluZCAuIC1uYW1lICIqLltjaFNdIiAtcGVybSA3NTUgLWV4ZWMgY2htb2QgNjQ0IHt9IFw7JwotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIFdlYmVyIDxzd2lybEBnbXgubGk+Ci0gICAgQWRkIHNvbWUgbW9yZTogbmVpdGhlciBNYWtlZmlsZSBub3IgY29uZmlnLm1rIG5lZWQgZXhlY3V0ZSBwZXJtaXNzaW9ucy4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOTljMDA2YTMyMGNlYjllYTE5MTM1YWMxNTEyZTRhODFlOGJlYmI3MgotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVNhdCBNYXIgMTMgMjE6MDk6MDAgMjAxMCArMDEwMAotCi0gICAgbXhjbW1jOiBmaXggd2FybmluZ3MgZHVlIHRvIGFjY2VzcyAzMiBiaXQgcmVnaXN0ZXJzIHdpdGggMTYgYml0IGFjY2Vzc29ycwotCi0gICAgU29tZSByZWdpc3RlcnMgb2YgdGhlIG14Y21tYyBkcml2ZXIgd2VyZSBhY2Nlc3NlZCB1c2luZwotICAgIDE2IGJpdCBhY2Nlc3NvciBmdW5jdGlvbnMsIGJlY2F1c2Ugb25seSB0aGUgTFNCIGlzCi0gICAgc2lnbmlmaWNhbnQuIFRoaXMgaXMgbm90IG5lZWRlZCBhbmQgZ2VuZXJhdGVzCi0gICAgd2FybmluZ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IGM5NmY4NmVlZmMyMTViNjdkZDIyMjY5NGNlMmI2ZjYwZTZhNDJiMGIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKYW4gMTcgMjM6NTU6NTMgMjAxMCArMDEwMAotCi0gICAgVEZUUDogYWxsb3cgZm9yIGFkanVzdGFibGUgcmV0cmFuc21pc3Npb24gdGltb3V0Ci0KLSAgICBTbyBmYXIsIFRGVFAgbmVnb3RpYXRlZCBhIGZpeGVkIHJldHJhbnNtaXNzaW9uIHRpbWVvdXQgb2YgNSBzZWNvbmRzLgotICAgIEluIHNvbWUgY2FzZXMgKGJ1c3kgbmV0d29ya3MsIHNsb3cgVEZUUCBzZXJ2ZXJzKSB0aGlzIGNhdXNlZCB2ZXJ5Ci0gICAgc2xvdyB0cmFuc2ZlcnMuIEEgbmV3IGVudmlyb25tZW50IHZhcmlhYmxlICJ0ZnRwdGltZW91dCIgYWxsb3dzIHRvCi0gICAgc2V0IHRoaXMgdGltZW91dC4gTG93ZXJpbmcgdGhpcyB2YWx1ZSBtYXkgbWFrZSBkb3dubG9hZHMgc3VjY2VlZAotICAgIGZhc3RlciBpbiBuZXR3b3JrcyB3aXRoIGhpZ2ggcGFja2V0IGxvc3MgcmF0ZXMgb3Igd2l0aCB1bnJlbGlhYmxlCi0gICAgVEZUUCBzZXJ2ZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMjUyYjQwNGQ5NTRmOTE0OTlhNDQ3N2EzZTEwNjRlYjIzN2NlNWExYwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE1hciA5IDE0OjI3OjI1IDIwMTAgKzAxMDAKLQotICAgIEZpeCBQQ0lfQkFTRV9BRERSRVNTXzUgaGFuZGxpbmcgaW4gcGNpX2hvc2VfY29uZmlnX2RldmljZSgpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGVUpJVEEgS2F6dXRvc2hpIDxmdWppdGFAc291bS5jby5qcD4KLSAgICBTaWduZWQtb2ZmLWJ5OiA8d2RAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOWQ5MGE5M2QzNjcyNzJlZTY1NTUwYzBjOWY4MjYxNWNlYzk2N2M3MAotQXV0aG9yOiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLURhdGU6CVRodSBGZWIgMjUgMTQ6MDM6MDggMjAxMCArMDEwMAotCi0gICAgY21kX21tYyByZW1vdmUgXG4KLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgXG4gYWZ0ZXIgdGhlIGhlbHAgbWVzc2FnZSBmb3IgbW1jaW5mby4KLSAgICBUaGlzIHJlc3VsdGVkIGluIGFuIGVtcHR5IGxpbmUgYmVpbmcgZGlzcGxheWVkIGFmdGVyIHRoZSBtbWNpbmZvIGxpbmUKLSAgICB3aGVuIHRoZSBoZWxwIGNvbW1hbmQgd2FzIGdpdmVuLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA2N2M3MTg5ZGQzNWNiMzY4ZWY2NjUxMjZmZDE3ODE2NTgxYmQyZTkyCi1BdXRob3I6IFJlbmF0byBBbmRyZW9sYSA8cmVuYXRvLmFuZHJlb2xhQGltYWdvcy5pdD4KLURhdGU6CVR1ZSBNYXIgMTYgMTY6MDE6MjkgMjAxMCAtMDQwMAotCi0gICAgbmlvczI6IEFkZGVkIHN1cHBvcnQgdG8gWUFOVSBVQVJUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IDFlNjdmYjMyZmJkYWU3OTQ5YmI0MjNjOWUyMGIzZjc3YzBhNjE2NjMKLUF1dGhvcjogVGhvbWFzIENob3UgPHRob21hc0B3eXRyb24uY29tLnR3PgotRGF0ZToJVHVlIE1hciAxNiAxMjoxMjo0OCAyMDEwIC0wNDAwCi0KLSAgICBuaW9zMjogdXNlIGdlbmVyaWMgdW5hbGlnbmVkLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgMDUwMjI2MjlhMmNhNmMzODVkYzM5MGQzMmMyMGFhMjdjZjVkOTE1YQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDIxIDA1OjAxOjE1IDIwMTAgLTA1MDAKLQotICAgIGFzbS1ibGFja2Zpbi91bmFsaWduZWQuaDogYWRkIGZvciB6bGliIGNvZGUKLQotICAgIFRoZSBuZXcgemxpYiBjb2RlIHdhbnRzIGFzbS91bmFsaWduZWQuaCwgc28gaGF2ZSB0aGUgQmxhY2tmaW4gdmVyc2lvbiBwdWxsCi0gICAgaW4gdGhlIGFzbS1nZW5lcmljL3VuYWxpZ25lZC5oLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgM2FkYzFmZGEzOGE2YWFjZDRhYWYzYzJjOWNjNjJhMWU2OWU2ZGUxNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDIxIDA1OjAxOjE0IDIwMTAgLTA1MDAKLQotICAgIGFzbS1nZW5lcmljL3VuYWxpZ25lZC5oOiBkeW5hbWljIGRlZmF1bHQgdW5hbGlnbmVkIGFjY2Vzc2VzCi0KLSAgICBUaGlzIGlzIGJhc2VkIG9uIHRoZSBhc20tYXJtL3VuYWxpZ25lZC5oLCBidXQgbWFkZSBnZW5lcmljIHNvIGFsbCBhcmNoZXMKLSAgICB0aGF0IGNhbm5vdCBkbyB1bmFsaWduZWQgYWNjZXNzZXMgY2FuIHV0aWxpemUgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiZTEyOWFhNzE4ODI0MjFhZDBiNTBjZDM3NjI5MTVkMTBhY2UyN2FkCi1BdXRob3I6IE1hdHRoaWFzIFdlaXNzZXIgPG1hdHRoaWFzLndlaXNzZXJAZ3JhZi1zeXRlY28uZGU+Ci1EYXRlOglUdWUgSmFuIDEyIDEyOjA2OjMxIDIwMTAgKzAxMDAKLQotICAgIHZpZGVvOiBGaXggY29uc29sZSBkaXNwbGF5IHdoZW4gc3BsYXNoc2NyZWVuIGlzIHVzZWQKLQotICAgIElmIGEgc3BsYXNoc2NyZWVuIGlzIHVzZWQgdGhlIGNvbnNvbGUgc2Nyb2xsaW5nIHVzZWQgdGhlCi0gICAgc2Nyb2xsIHNpemUgYXMgbmVlZGVkIHdoZW4gYSBsb2dvIHdhcyBkaXNwbGF5ZWQuIFRoaXMKLSAgICBwYXRjaCBzZXRzIHRoZSBzY3JvbGwgc2l6ZSB0byB0aGUgd2hvbGUgc2NyZWVuIGlmCi0gICAgYSBzcGxhc2hzY3JlZW4gaXMgc2hvd24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBXZWlzc2VyIDxtYXR0aGlhcy53ZWlzc2VyQGdyYWYtc3l0ZWNvLmRlPgotCi1jb21taXQgOTM5MTBlZGI1OTVhODhkMzk0ZGEzZWIyY2Y1MTQ4MDk2MTU1ZGZlOQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIE1hciAxMiAyMzowNjowNCAyMDEwICswMTAwCi0KLSAgICBQcmVwYXJlIHYyMDEwLjAzLXJjMQotCi0gICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGU3MmZiMTVjOTA3MzEyOWUwNTgyMGNjOWM1NGY1NGJjNDk4NTgzNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIE1hciAxMiAyMjoxMTowMCAyMDEwICswMTAwCi0KLSAgICBzdGFuZGFsb25lIGVlcHJvMTAwX2VlcHJvbTogZml4IGJ1aWxkIGVycm9yCi0KLSAgICBCdWlsZGluZyBleGFtcGxlcy9zdGFuZGFsb25lL2VlcHJvMTAwX2VlcHJvbSB0cmlnZ2VycyB0aGlzIGVycm9yOgotCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGluY2x1ZGUvY29tbW9uLmg6NjI5LAotCQkgICAgIGZyb20gZWVwcm8xMDBfZWVwcm9tLmM6MjQ6Ci0gICAgaW5jbHVkZS9uZXQuaDogSW4gZnVuY3Rpb24gJ05ldFJlYWRJUCc6Ci0gICAgaW5jbHVkZS9uZXQuaDo0MzA6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdtZW1jcHknCi0gICAgZWVwcm8xMDBfZWVwcm9tLmM6IEF0IHRvcCBsZXZlbDoKLSAgICBlZXBybzEwMF9lZXByb20uYzo4MTogZXJyb3I6IGNvbmZsaWN0aW5nIHR5cGVzIGZvciAnbWVtY3B5JwotICAgIGluY2x1ZGUvbmV0Lmg6NDMwOiBlcnJvcjogcHJldmlvdXMgaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgJ21lbWNweScgd2FzIGhlcmUKLQotICAgIEZpeCB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDFiYjE4MDk1NThlMTFlYjA4OWZiYTMyY2FlZDlmYzk5ZDIxNDc3YzEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXIgMTIgMjI6MTA6MzEgMjAxMCArMDEwMAotCi0gICAgVXBkYXRlIC5naXRpZ25vcmUnczogYWRkIHNvbWUgZ2VuZXJhdGVkIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOWM5Y2JlNzhkY2IwYWZhZDA4MTY3MGNiMWJkYzgyZDIyNzA5NWNhZQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CU1vbiBNYXIgOCAxNDowMjo1NyAyMDEwICswMTAwCi0KLSAgICBtcGM4Mnh4OiBSZW1vdmUgU0w4MjQ1IGJvYXJkIGFuZCB0aGUgbm93IG9ycGFobmVkIHNrOThsaW4gbmV0d29yayBkcml2ZXIuCi0KLSAgICBUaGlzIGNvZGUgaGFzIGNvbXBpbGUgcHJvYmxlbXMgYW5kIHRoZSBjb21wYW55IGRvZXMgbm90IGV2ZW4gZXhpc3QgYW55Ci0gICAgbW9yZS4gIFNvIHdlIHRha2UgdGhlIGxpYmVydHkgdG8gZHJvcCBzdXBwb3J0IGZvciBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotICAgIENDOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgY2EwMmY2ZjhkYzQ5NjZiMmEwMTliMTVlMDFiNTA3MDE4OTMyN2RmMgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE1hciAxMCAxNzoxNjo0OCAyMDEwIC0wNjAwCi0KLSAgICA4NXh4OiBEcm9wIEZJVCBzdXBwb3J0IHRvIGFsbG93IHUtYm9vdCBpbWFnZSB0byBmaXQgaW4gNTEyawotCi0gICAgVGhlIDM2LWJpdCBidWlsZCBleGNlZWRzIHRoZSA1MTJrIHNpemUgd2UgaGF2ZS4gIFJlbW92aW5nIEZJVCB0eXBlIGltYWdlCi0gICAgc3VwcG9ydCBhbGxvd3MgdXMgdG8gZml0IGFuZCB3ZSBkb250IHJlYWxseSB1c2UgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNWY4NDE5NTk3ZjQyN2FhZjliYjUwMTQ2MDczNWQ3MDNkMTBkYjVlZQotQXV0aG9yOiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gRmViIDI4IDE2OjI4OjI1IDIwMTAgKzAyMDAKLQotICAgIENvc21ldGljIGNoYW5nZSAtIGluZGVudGF0aW9uIGNvcnJlY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhNjkzNDQ3Y2VhZGZmNDkxNTVlMjYwY2JiYWVmNGUwOWM5MjZjYWI1Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVdlZCBGZWIgMjQgMDA6Mjk6NDQgMjAxMCArMDEwMAotCi0gICAgY21kX210ZHBhcnRzLmM6IHByZXZlbnQgcHJpbnRidWZmZXIgb3ZlcmZsb3dzCi0KLSAgICBUaGUgbGVuZ3RoIG9mIGNvbmZpZ3VyZWQgTVREUEFSVFNfREVGQVVMVCBzdHJpbmcKLSAgICBjb3VsZCBiZSBncmVhdGVyIHRoYW4gY29uc29sZSBwcmludGJ1ZmZlciBzaXplLgotICAgIFJlcGxhY2UgcHJpbnRmKCkgYnkgcHV0cygpIHRvIGF2b2lkIHBvdGVudGlhbCBidWZmZXIKLSAgICBvdmVyZmxvd3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCAzOTIwYmJlZGNmNzRhMDczYmM3Mjk1MGE1MWRlNzVhZjZmYWEyZjA2Ci1BdXRob3I6IEZyYW5zIE1ldWxlbmJyb2VrcyA8ZnJhbnNtZXVsZW5icm9la3NAZ21haWwuY29tPgotRGF0ZToJRnJpIEZlYiAxOSAxMTo1OTowNCAyMDEwICswMTAwCi0KLSAgICBGaXggTVBDODUzNkRTIGRvY3VtZW50YXRpb24KLQotICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgc21hbGwgbWlzdGFrZSBpbiB0aGUgcmVnaXN0ZXIgbGlzdCBpbgotICAgIGRvYy9SRUFETUUubXBjODUzNmRzLiBUaGVzZSByZWdpc3RlcnMgYXJlIDMyIGJpdHMgYW5kIHRoaXMgb25lIHN0YXJ0cwotICAgIGF0IC4uLi5jIG5vdCAuLi4uZQotCi0gICAgV2hlbiB1c2luZyB0aGUgLi4uYyBhZGRyZXNzIEkgY2FuIGJvb3QgZnJvbSBzZCwgd2hlbiB1c2luZyB0aGUgLi4uZQotICAgIGFkZHJlc3MgSSBjYW5ub3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFucyBNZXVsZW5icm9la3MgPGZyYW5zbWV1bGVuYnJvZWtzQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogSHUgTWluZ2thaSA8QjIxMjg0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhYjY4ZjRkZDE5MzA1M2MwYmEzOTVhZjE1YjE1NGNhY2EzNWU5OWYzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIEZlYiAxMCAwODowMzoyMSAyMDEwICswMTAwCi0KLSAgICBkb2M6IGFkZCBSRUFETUUgZm9yIENPTkZJR19IV0NPTkZJRyBvcHRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNzAyNmVhZDBkM2VjZTVlNDNkNmIzOWY2MmZiNWM0MzA2ZjY5MTIyNAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgOSAxNTo1MDoyNyAyMDEwICswMTAwCi0KLSAgICBUUU04eHg6IGVuYWJsZSBkZXZpY2UgdHJlZSBzdXBwb3J0IG9uIGFsbCBUUU04eHggYmFzZWQgYm9hcmRzLgotCi0gICAgQWxzbyBlbmFibGUgc3VwcG9ydCBmb3IgQ09ORklHX0hXQ09ORklHIGJlY2F1c2Ugd2UgdXNlIHRoaXMgZm9yCi0gICAgY29uZmlndXJpbmcgaWYgdGhpcyBoYXJkd2FyZSBoYXMgYSBGRUMgb3Igbm90LgotCi0gICAgc3ludGF4OgotCi0gICAgaHdjb25maWc9ZmVjOm9uICAgaWYgaGFyZHdhcmUgaGFzIGFuIGZlYwotICAgIGh3Y29uZmlnPWZlYzpvZmYgIGlmIGhhcmR3YXJlIGhhcyBubyBmZWMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZWQzYjlkNDRjMzU5YmM4MjllOWFjZDBhNTVmY2QxYzNlODJiNmFlCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVHVlIEZlYiA5IDE1OjUwOjIxIDIwMTAgKzAxMDAKLQotICAgIFRRTTh4eDogYWRkIGRldmljZSB0cmVlIHN1cHBvcnQgZm9yIFRRTTh4eCBiYXNlZCBib2FyZHMuCi0KLSAgICBBbHNvIHVzZSBod2NvbmZpZyB0byBjb25maWd1cmUgd2hldGhlciB0aGUgYm9hcmQgaGFzIGEgRkVDIG9yIG5vdC4KLSAgICBXZSB0aGVuIGNhbiBhZGp1c3QgdGhlIERUUyB0byB0ZWxsIExpbnV4IGlmIHRoZXJlIGlzIGEgRkVDIHByZXNlbnQuCi0KLSAgICBzeW50YXg6Ci0KLSAgICBod2NvbmZpZz1mZWM6b24gICBpZiBoYXJkd2FyZSBoYXMgYSAgRkVDCi0gICAgaHdjb25maWc9ZmVjOm9mZiAgaWYgaGFyZHdhcmUgaGFzIG5vIEZFQwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDE0M2NkMjFmZTIyZTY5YmYwY2RhZWZkNTdiZTk4ZjA3ZWQ4ZjA0ZmEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBNYXIgMTEgMjM6NTY6MDMgMjAxMCArMDEwMAotCi0gICAgTW92ZSBDT05GSUdfVVBEQVRFX1RGVFAgY29kZSBhZnRlciBDT05GSUdfUFJFQk9PVAotCi0gICAgVGhlIGF1dG8tdXBkYXRlIGZlYXR1cmUgKENPTkZJR19VUERBVEVfVEZUUCkgcmVxdWlyZXMgdGhhdCB0aGUgZW52Ci0gICAgdmFyaWFibGUgc2VydmVyaXAgYmUgc2V0IGZvciB0aGUgVEZUUCBhY2Nlc3MuIElmIERIQ1AgaXMgdG8gYmUgdXNlZAotICAgIHRvIGdldCB0aGUgc2VydmVyaXAgZW52IHZhcmlhYmxlLCB0aGlzIGRvZXNuJ3Qgd29yayBhcyBESENQIGhhcHBlbnMKLSAgICBhZnRlciB0aGUgYXV0by11cGRhdGUgYXR0ZW1wdCBoYXMgcnVuLiBBIHNvbHV0aW9uIGlzIHRvIHJ1biBESENQIGluCi0gICAgUFJFQk9PVCwgYnV0IGV2ZW4gdGhpcyBpcyB0b28gbGF0ZS4KLQotICAgIFRvIHNvbHZlIHRoaXMsIHdlIG1vdmUgdXBkYXRlX3RmdHAoKSBiZWxvdyB0aGUgUFJFQk9PVCBzdHVmZi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxYjY5MWJiMGMyZmExOGM5YjY4ZjE1Mzk4ZWY2YzhiOWUwYzBmM2UzCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBKYW4gMjUgMTg6NTA6MTEgMjAxMCAtMDUwMAotCi0gICAgbWtpbWFnZTogZG9udCBmb3JjZSBlbnRyeSBwb2ludCB3aXRoIHhpcAotCi0gICAgU29tZSBwZW9wbGUgYm9vdCBpbWFnZXMgd2l0aCB0aGUgZW50cnkgcG9pbnQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgYmxvYgotICAgIChsaWtlIExpbnV4IHdpdGggdGhlIGhlYWQgY29kZSBpbiBkaXNjYXJkYWJsZSAuaW5pdC50ZXh0KSwgYW5kIHRoZXJlIGlzIG5vCi0gICAgbm8gcmVhbCByZXF1aXJlbWVudCB0aGF0IHRoZSBlbnRyeSBwb2ludCBiZSByaWdodCBhZnRlciB0aGUgbWtpbWFnZSBoZWFkZXIKLSAgICB3aGVuIGRvaW5nIFhJUCwgc28gbGV0IHBlb3BsZSBzcGVjaWZ5IHdoYXRldmVyIHRoZXkgd2FudC4gIElmIHRoZXkgZG8gbmVlZAotICAgIGFuIGVudHJ5IHJpZ2h0IGFmdGVyIHRoZSBoZWFkZXIsIHRoZW4gdGhleSBzdGlsbCBjYW4gZG8gdGhhdCB3aXRoIG5vcm1hbAotICAgIC1lIGJlaGF2aW9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNGI5OTMyN2E0MTIxYTI4ZDJiZGIyYzJiODQxZjVkOTc5MzFhZTkwNQotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJRnJpIEphbiAxNSAxMDowNjowNiAyMDEwIC0wNTAwCi0KLSAgICBQUEM6IFJlY29yZCBVLUJvb3QncyByZWxvY2F0ZWQgYWRkcmVzcyBpbiBSQU0gYW5kIHNob3cgaW4gYmRpbmZvLgotCi0gICAgVGhpcyBwYXRjaCB1c2VzIGdkLT5yZWxvY2FkZHIgdmFyaWFibGUgdG8gc3RvcmUgdWJvb3QncyByZWxvY2F0ZWQKLSAgICBhZGRyZXNzIGluIFJBTSBhbmQgc2hvd3MgaXQgaW4gYmRpbmZvIGNvbW1hbmQuCi0KLSAgICBUaGlzIHBhdGNoIG1vdmVzIENPTkZJR19BTUlHQU9ORUczU0Ugc3R5bGUgY29weWluZyBvZiB0aGUgYWRkcmVzcwotICAgIGluIGJvYXJkX2luaXRfZiB0byBqdXN0IGJlZm9yZSByZWxvY2F0aW9uIGlzIGFjdHVhbGx5IGRvbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotICAgIFRlc3RlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA4YzQ0NDRmZjVlMWQ4ZTlmZDFhODQ3YTJmYjA5NmFhOWFmZjY2Zjg1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDExIDIzOjM1OjQzIDIwMTAgKzAxMDAKLQotICAgIEZpeCBtZW1vcnkgbGVhayBpbiBtbWNfcmVhZCgpCi0KLSAgICBUaGVyZSBpcyBiZSBhIHBhdGggdGhyb3VnaCBtbWNfcmVhZCBpbiBkcml2ZXJzL21tYy9tbWMuYyB3aGVyZQotICAgIG1hbGxvYydkIG1lbW9yeSBpcyBub3QgZnJlZWQgYmVmb3JlIGV4aXRpbmcgbW1jX3JlYWQ6IGl0IG9jY3VycyBpZgotICAgIG1tY19zZXRfYmxvY2tsZW4oKSByZXR1cm5zIGEgbm9uLXplcm8gdmFsdWUuCi0KLSAgICBSZXBvcnRlZC1ieTogUXVlbnRpbiBBcm1pdGFnZSA8UXVlbnRpbkBBcm1pdGFnZS5vcmcudWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDYyNThiMDRlOWE0MWVlNjBmMjE1NDczNThhNThmYmNiOTA4NzczNWQKLUF1dGhvcjogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgotRGF0ZToJVGh1IEZlYiAxMSAxNDo1NzowNCAyMDEwICswMTAwCi0KLSAgICBBVDkxOiBVcGRhdGUgb3RjNTcwIGJvYXJkIHRvIG5ldyBTb0MgYWNjZXNzCi0KLSAgICAqIGNvbnZlcnQgb3RjNTcwIGJvYXJkIHRvIHVzZSBjIHN0dWN0dXJlIFNvQyBhY2Nlc3MKLSAgICAqIGNoYW5nZSBncGlvIGFjY2VzcyB0byBhdDkxX2dwaW8gc3ludGF4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci0KLWNvbW1pdCA3Y2VkYjI5ODcyMDY5ZTc4MmY5Zjk3Y2VmNGFiMTIzMjczNmU0Yzg1Ci1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLURhdGU6CVN1biBGZWIgMTQgMTI6MjA6NDMgMjAxMCArMDEwMAotCi0gICAgdXBkYXRlcyB0aGUgYXQ5MSBtYWluX2Nsb2NrIGNhbGN1bGF0aW9uCi0KLSAgICAqIHVwZGF0ZXMgdGhlIGNvbmRpdGlvbmFsIG1haW5fY2xvY2sgY2FsY3VsYXRpb24gKGlmIEFUOTFfTUFJTl9DTE9DSyBkZWZpbmVkKSB0byBjIHN0cnVjdHVyZSBTb0MgYWNjZXNzCi0gICAgICogYWRkIG5lZWQgcmVnaXN0ZXIgZmxhZ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLQotY29tbWl0IDYzNzgzM2MyZDY2OWY5YTM3MDcwNmUyNzVlNzEwMzQ1NGMzYzgzZWMKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJV2VkIE1hciAzIDE1OjI3OjM3IDIwMTAgKzA1MzAKLQotICAgIGFybToga2lya3dvb2Q6IHN1ZW4zOiBmaXhlZCBidWlsZCB3YXJuaW5nCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGZvbGxvd2luZyBidWlsZCB3YXJuaW5nCi0KLSAgICBJbnZhbGlkIEt3YmltYWdlIGNvbW1hbmQgVHlwZSAtIHZhbGlkIG5hbWVzIGFyZTogQk9PVF9GUk9NLCBOQU5EX0VDQ19NT0RFLCBOQU5EX1BBR0VfU0laRSwgU0FUQV9QSU9fTU9ERSwgRERSX0lOSVRfREVMQVksIERBVEEsICwgc3BpLCBuYW5kLCBzYXRhLCBwZXgsIHVhcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLQotY29tbWl0IGU0ZDM0NDkyMDE3Yzk1ZTQwNDFlYTBjNTgxZTFhYjhkMWQ0OTM4MWIKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglGcmkgTWFyIDUgMTc6NTQ6MzcgMjAxMCArMDEwMAotCi0gICAgTVg1MTogcmVtb3ZlZCB3YXJuaW5ncyBmb3IgdGhlIG14NTFldmsKLQotICAgIFRoZSBwYXRjaCByZW1vdmVzIHdhcm5pbmdzIGF0IGNvbXBpbGUgdGltZSBhbmQgcHJvdmlkZXMKLSAgICBzb21lIGNsZWFudXAgY29kZToKLSAgICAtIFJlbW92ZWQgY29tbWVudCBvbiBOQU5EIChub3QgeWV0IHN1cHBvcnRlZCkgZnJvbSBsb3dsZXZlbF9pbml0LlMKLSAgICAtIFJlbW92ZWQgTkZNUyBiaXQgZGVmaW5pdGlvbiBmcm9tIGlteC1yZWdzLmgKLSAgICAgIFRoZSBiaXQgaXMgb25seSByZWxhdGVkIHRvIE1YLjI1LzM1IGFuZCBjYW4gbGVhZCB0byBjb25mdXNpb24KLSAgICAtIE1vdmVkIGlzX3NvY19yZXYoKSB0byBzb2Mgc3BlY2lmaWMgY29kZSAocmVtb3ZlZCBmcm9tIG14NTFldmsuYykKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgOWQ2OWUzM2Q4ZDBmMTEyZmUzYTA4OTEwMWQwMjNlODc0MzE2ODRkMQotQXV0aG9yOiBWaXBpbiBLdW1hciA8dmlwaW4ua3VtYXJAc3QuY29tPgotRGF0ZToJVHVlIE1hciAyIDEwOjQ2OjUyIDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogU3VwcG9ydGluZyBuZXcgbWFjaCBpZHMgZm9yIHNwZWFyMzEwIGFuZCBzcGVhcjMyMAotCi0gICAgU3VwcG9ydGluZyBuZXcgbWFjaGluZSBpZHMgZm9yIFNvQ3Mgc3BlYXIzMTAgYW5kIHNwZWFyMzIwCi0KLSAgICBpbmNsdWRlL2FzbS1hcm0vbWFjaC10eXBlcy5oIGhhcyB0byBiZSB1cGRhdGVkIGJlZm9yZSBhcHBseWluZwotICAgIHRoaXMgcGF0Y2ggZm9yIGJ1aWxkIHRvIHdvcmsKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIEt1bWFyIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCBjYzBiNTNjOGQ1ZDZhM2YxNGYzNjk4MjU1MmJjM2ZlYjhlY2IxZGI1Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJTW9uIE1hciAxIDE1OjU4OjE4IDIwMTAgKzAxMDAKLQotICAgIGFybSwgc3VlbjM6IGZpeCBjb21waWxlIGVycm9yLCBpZiBkb2luZyBub3QgYSBsb2NhbCBidWlsZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA2N2ZhOGMyNWY1YzJkMjM5MzJjMGYzMWIwMzUyODFkNmFiYmIwOTY1Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxbaHNAZGVueC5kZV0+Ci1EYXRlOglNb24gRmViIDIyIDE2OjQzOjAyIDIwMTAgKzA1MzAKLQotICAgIGFybTogYWRkIHN1cHBvcnQgZm9yIHRoZSBzdWVuMyBib2FyZCBmcm9tIGtleW1pbGUKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgQVJNIHBhcnQgb2YgdGhlIG1nY29nZTIsIG5hbWVkIHN1ZW4zLgotICAgIFRoaXMgYm9hcmQgaXMgYmFzZWQgb24gdGhlIE1hcnZlbGwgS2lya3dvb2QgKDg4RjYyODEpIFNvQy4KLSAgICBBcyB0aGVyZSBjb21lIG1vcmUgYm9hcmQgdmFyaWFudHMsIGNvbW1vbiBjb25maWcgb3B0aW9ucwotICAgIGFyZSBjb2xsZWN0ZWQgaW4gaW5jbHVkZS9jb25maWdzL2ttX2FybS5oLiBBbHNvLCB0aGlzIGJvYXJkCi0gICAgdXNlIGNvbW1vbiBjb2RlIGZvciBhbGwga2V5bWlsZSBib2FyZHMsIHdoaWNoIGlzIHN0b3JlZCBpbgotICAgIGJvYXJkL2tleW1pbGUvY29tbW9uL2NvbW1vbi5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIb2xnZXIgQnJ1bmNrIDxob2xnZXIuYnJ1bmNrQGtleW1pbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDY4OTVkNDUxMGE3NzU4NTk1Yjg1YjQ4YTdmNDQ5YmQ2MWRmYzgxMmYKLUF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci1EYXRlOglNb24gSmFuIDI1IDIzOjEyOjU4IDIwMTAgLTA3MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBLQVJPIFRYMjUgYm9hcmQKLQotICAgIFRoaXMgaXMgYW4gaS5NWDI1IGJhc2UgYm9hcmQgd2l0aCBvbmx5IE5BTkQKLSAgICBzbyBpdCB1c2VzIG5hbmRfc3BsIHRvIGJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLQotICAgIFR1bmUgY29uZmlndXJhdGlvbiwgYWRkIHN1cHBvcnQgZm9yIChyZWR1bmRhbnQpIGVudmlyb25tZW50IGluIE5BTkQuCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENDOiBGcmVkIEZhbiA8ZmFueWVmZW5nQGdtYWlsLmNvbT4KLSAgICBDQzogVG9tIDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA3NDBkNmFlNWI5ODI0OTZmY2VhMDY2NmIyMjA3Y2IzNGNjMGU2MDE1Ci1BdXRob3I6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgotRGF0ZToJTW9uIEphbiAyNSAyMzoxMjo1NyAyMDEwIC0wNzAwCi0KLSAgICBmZWNfbXhjOiBhZGQgTVgyNSBzdXBwb3J0Ci0KLSAgICBVc2UgUk1JSSBmb3IgTVgyNQotICAgIEFkZCBjb2RlIHRvIGluaXQgZ2Fza2V0IHRoYXQgZW5hYmxlcyBSTUlJCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGNiMTdiOTJkZTAzNDE2Y2Y0ZDVkYjViZDI3ZWY0YWUxN2Y5NWU3MDcKLUF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci1EYXRlOglNb24gSmFuIDI1IDIzOjEyOjU1IDIwMTAgLTA3MDAKLQotICAgIGZlY19teGM6IGNsZWFudXAgYW5kIGZhY3RvciBvdXQgTVgyNyBkZXBlbmRlbmNpZXMKLQotICAgIGdlbmVyYWwgY2xlYW51cAotICAgIG1vdmUgY2xvY2sgaW5pdCB0byBjcHVfZXRoX2luaXQgaW4gY3B1L2FybTkyNmVqcy9teDI3L2dlbmVyaWMuYwotICAgIG1ha2UgTVgyNyBzcGVjaWZpYyBwaHkgaW5pdCBjb25kaXRpb25hbCBvbiBDT05GSUdfTVgyNwotICAgIHJlcGxhY2UgY2FsbCB0byBpbXhfZ2V0X2FoYmNsayB3aXRoIG9uZSB0byBpbXhfZ2V0X2ZlY2NsawotICAgIGFuZCBkZWZpbmUgaW14X2dldF9mZWNjbGsgaW4gaW5jbHVkZS9hc20tYXJtL2FyY2gtbXgyNy9jbG9jay5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBDQzogRnJlZCBGYW4gPGZhbnllZmVuZ0BnbWFpbC5jb20+Ci0gICAgQ0M6IFRvbSA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgNTUyZmY4ZjFkOWZjY2Y1NzI0M2EwMWFmZTZkYmViYjk4Mjg2N2UyMAotQXV0aG9yOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLURhdGU6CU1vbiBKYW4gMjUgMjM6MTI6NTYgMjAxMCAtMDcwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSBNWDI1IFNPQwotCi0gICAgQVJNOTI2RUpTIGNvcmUgd2l0aCBNWDMxIHBlcmlwaGVyYWxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci0gICAgRWFybGllciBWZXJzaW9uIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ0M6IEZyZWQgRmFuIDxmYW55ZWZlbmdAZ21haWwuY29tPgotICAgIENDOiBUb20gPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IGU5MTFjOTgzZjRhOGQ1ODhmODMxODA2YWYzN2ViNTZjOTU1MTJkNWQKLUF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci1EYXRlOglNb24gSmFuIDI1IDIzOjEyOjUxIDIwMTAgLTA3MDAKLQotICAgIG14Y19zZXJpYWwgcmVwbGFjZSBwbGF0Zm9ybSBzcGVjaWZpYyBjbG9jawotCi0gICAgcmVtb3ZlIGlmZGVmJ2QgY2xvY2sgc2VsZWN0aW9uIGNvZGUgZnJvbQotICAgIHNlcmlhbF9teGMuYyBhbmQgcmVwbGFjZSB3aXRoIGNhbGwgdG8gaW14X2dldF91YXJ0Y2xrCi0KLSAgICBBZGQgZGVmaW5pdGlvbnMgZm9yIGlteF9nZXRfdWFydGNsayB0byBpbXgzMSBhbmQgaW14MjcKLSAgICBpbmNsdWRlIGZpbGVzLgotCi0gICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gYWRkIG5ldyBpbXggcGxhdGZvcm1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjNWZiNzBjOTExNGJkMGE4Mjg5NDQ0ZDNkNWM3ZTM2MGVkYTA4MjMyCi1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJRnJpIEZlYiA1IDE1OjEzOjU4IDIwMTAgKzAxMDAKLQotICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSBteDUxZXZrIGJvYXJkCi0KLSAgICBUaGUgcGF0Y2ggYWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBGcmVlc2NhbGUgbXg1MWV2ayBib2FyZC4KLSAgICBOZXR3b3JrIChGRUMpIGFuZCBTRCBjb250cm9sbGVyIChmc2xfZXNkaGMpIGFyZSBzdXBwb3J0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmVkIEZhbiA8ZmFueWVmZW5nQGdtYWlsLmNvbT4KLQotY29tbWl0IGM2N2JlZTE0NjBhMGRhODllZjA4Y2JjMjgzNzUxNzFhY2M5YTQyMjcKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglGcmkgRmViIDUgMTU6MTE6MjcgMjAxMCArMDEwMAotCi0gICAgZnNsX2VzZGhjOiBhZGQgc3VwcG9ydCBmb3IgbXg1MSBwcm9jZXNzb3IKLQotICAgIFRoZSBlc2RoYyBjb250cm9sbGVyIGluIHRoZSBteDUxIHByb2Nlc3NvciBpcyBxdWl0ZQotICAgIHRoZSBzYW1lIGFzIHRoZSBvbmUgaW4gc29tZSBwb3dlcnBjIHByb2Nlc3NvcnMKLSAgICAoTVBDODN4eCwgTVBDODV4eCkuIFRoaXMgcGF0Y2hlcyBhZGFwdHMgdGhlIGRyaXZlcgotICAgIHRvIHN1cHBvcnQgdGhlIGFybSBteDUxLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCA2OWRmMDBmOWQ5YzJmNDViNDU3NmQxZWFlNzliZmFjOGJlYmI4ODIxCi1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJRnJpIEZlYiA1IDE1OjA3OjMzIDIwMTAgKzAxMDAKLQotICAgIEFSTTogYWRkIGFjY2Vzc29ycyBmdW5jdGlvbnMKLQotICAgIFNvbWUgRnJlZXNjYWxlJ3MgcHJvY2Vzc29ycyBvZiBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0gICAgaGF2ZSB0aGUgc2FtZSBwZXJpcGhlcmFsIChlU0RIQyBjb250cm9sbGVyIGluIFBvd2VyUEMKLSAgICBhbmQgaS5NWDUxKS4gVGhpcyBwYXRjaCBhZGRzIGFjY2Vzc29ycyBmb3IKLSAgICB0aGUgaW50ZXJuYWwgcmVnaXN0ZXJzIG9mIHRoZSBTT0NzLCBhcyBhbHJlYWR5Ci0gICAgaW1wbGVtZW50ZWQgaW4gdGhlIFBvd2VyUEMgYXJjaGl0ZWN0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCAxMWZkYWRlMjk0YjRkNjBjMTlhZTg2MTUxNWFhYmRkY2ExMjc4ZGViCi1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJRnJpIEZlYiA1IDE1OjA0OjQzIDIwMTAgKzAxMDAKLQotICAgIE1NQzogYWRkIHdlYWsgZnVuY3Rpb24gdG8gZGV0ZWN0IE1NQy9TRCBjYXJkCi0KLSAgICBNb3N0IGNvbnRyb2xsZXJzIGNhbiBjaGVjayBpZiB0aGVyZSBpcyBhIGNhcmQgaW4gdGhlIHNsb3QuCi0gICAgSG93ZXZlciwgdGhleSByZXF1aXJlIHBpbnMgdGhhdCBjb3VsZCBiZSBub3QgYXZhaWxhYmxlIGJlY2F1c2UKLSAgICByZXF1aXJlZCBieSBvdGhlciBmdW5jdGlvbnMgYW5kIHRoZSBkZXRlY3Rpb24gb2YgYSBjYXJkIG11c3QKLSAgICBiZSBwZXJmb3JtZWQgaW4gYW5vdGhlciB3YXkuIFRoaXMgcGF0Y2ggYWRkcyBhIHdlYWsgZnVuY3Rpb24KLSAgICB0aGF0IGEgYm9hcmQgY2FuIGltcGxlbWVudCB0byBhZGQgaXRzIGludGVybmFsIGN1c3RvbSB3YXkKLSAgICB0byBjaGVjayB0aGUgcHJlc2VuY2Ugb2YgYSBNTUMvU0QgY2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgMjUwZGUxMmJjMmY3ODQyODA3ZDI1ZTE2OTcxYzViZWE1OWMzYTRiMQotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjAgMTg6MjA6MzkgMjAxMCArMDEwMAotCi0gICAgbW1jOiBjaGVjayBjb3JyZWN0bmVzcyBvZiB0aGUgdm9sdGFnZSBtYXNrIGluIG9jcgotCi0gICAgTW9zdCBjYXJkcyBkbyBub3QgYW5zd2VyIGlmIHNvbWUgcmVzZXJ2ZWQgYml0cwotICAgIGluIHRoZSBvY3IgYXJlIHNldC4gSG93ZXZlciwgc29tZSBjb250cm9sbGVycwotICAgIGNhbiBzZXQgYml0IDcgKHJlc2VydmVkIGZvciBsb3cgdm9sdGFnZXMpLCBidXQKLSAgICBob3cgdG8gbWFuYWdlIGxvdyB2b2x0YWdlcyBTRCBjYXJkIGlzIG5vdCB5ZXQKLSAgICBzcGVjaWZpZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDcxZDY0YzBlNGZhNTkxMGMxNWVjYTE3NWE4ZjNiMGUxYzFkNjcxMWMKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDIwIDE4OjIwOjE5IDIwMTAgKzAxMDAKLQotICAgIHNlcmlhbF9teGM6IGFkZCBzdXBwb3J0IGZvciBNWDUxIHByb2Nlc3NvcgotCi0gICAgVGhlIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBteDUxIHByb2Nlc3Nvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEZyZWQgRmFuIDxmYW55ZWZlbmdAZ21haWwuY29tPgotCi1jb21taXQgNjdhZGNlZTBlMDkxZjA5MzVlN2RkNzIyNDA0ZDJhODY0Y2RlY2JlNwotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjAgMTg6MjA6MDQgMjAxMCArMDEwMAotCi0gICAgTVg1MTogQWRkIHBpbiBhbmQgbXVsdGlwbGV4ZXIgZGVmaW5pdGlvbnMuCi0KLSAgICBUaGUgcGF0Y2ggYWRkIGhlYWRlciBmaWxlcyB0byBzdXBwb3J0IHRoZSBwaW4gbXVsdGlwbGV4ZXIKLSAgICBvZiB0aGUgdGhlIEZyZWVzY2FsZSBpLk1YNTEgcHJvY2Vzc29yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogRnJlZCBGYW4gPGZhbnllZmVuZ0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBmYjg3YTFlZDkyMDViZjVmODQzZTFmMjY0MTk4Y2U5NDY2MDJkZWRhCi1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyMCAxODoxOTo1MSAyMDEwICswMTAwCi0KLSAgICBNWDUxOiBBZGQgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKLQotICAgIFRoZSBwYXRjaCBhZGQgaGVhZGVyIGZpbGVzIHRvIHN1cHBvcnQgdGhlIEZyZWVzY2FsZSBpLk1YNTEKLSAgICBwcm9jZXNzb3IsIHNldHRpbmcgZGVmaW5pdGlvbnMgZm9yIGludGVybmFsIHJlZ2lzdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEZyZWQgRmFuIDxmYW55ZWZlbmdAZ21haWwuY29tPgotCi1jb21taXQgNjRmZGY0NTJhODU3MTg5MzVkODI0MTZkMTQxYmUxNDRiMjYyYzU0MgotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjAgMTg6MTk6MzIgMjAxMCArMDEwMAotCi0gICAgTVg1MTogQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBNWDUxCi0KLSAgICBUaGUgcGF0Y2ggYWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBpLk1YNTEgcHJvY2Vzc29yCi0gICAgKGZhbWlseSBhcm0gY29ydGV4X2E4KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEZyZWQgRmFuIDxmYW55ZWZlbmdAZ21haWwuY29tPgotCi1jb21taXQgMThiYTAxMmI5YjkxOWE3YzI2NGRjNjI5OWY5NTRkN2Y1M2QwNjYwNQotQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotRGF0ZToJV2VkIEZlYiAyNCAxOTo0NTozOSAyMDEwICswMTAwCi0KLSAgICBlZGI5M3h4OiBGaXggU0RSQU0gaW5pdGlhbGl6YXRpb24KLQotICAgIGVkYjkzeHg6IEZpeCBTRFJBTSBpbml0aWFsaXphdGlvbiBieSBpc3N1aW5nIGEgcHJlY2hhcmdlIGFsbCBjb21tYW5kIGJlZm9yZQotICAgIGZvcmNpbmcgdGhlIHByZWNoYXJnZSBhbmQgc2VsZWN0IG1vZGUgcmVnaXN0ZXIgdXBkYXRlIG1vZGUgYmVmb3JlIHByb2dyYW1taW5nCi0gICAgdGhlIG1vZGUgcmVnaXN0ZXJzLiBXcml0ZSB0byB0aGUgU0RSQU0gYmFua3MgaW4gb3JkZXIgdG8gZm9yY2UgYSBwcmVjaGFyZ2UsCi0gICAgcmVhZGluZyBjYXVzZXMgdGhlIGVkYjkzeHggYm9hcmRzIHRvIGhhbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci0KLWNvbW1pdCBjYWRlN2Q5NTc3ZDRkMTdmNTU0MDRiNWU2MGNkNWU1YjBiNjA1YzMxCi1BdXRob3I6IEFuZGVycyBEYXJhbmRlciA8YW5kZXJzLmRhcmFuZGVyQGdtYWlsLmNvbT4KLURhdGU6CVRodSBGZWIgMjUgMTU6NTc6MDMgMjAxMCArMDEwMAotCi0gICAgQWRkIGJvb3Rjb3VudCB0byBBVDkxCi0KLSAgICBVc2UgQVQ5MV9HUEJSIDMgYXMgYSBib290Y291bnQgcmVnaXN0ZXIuCi0gICAgVGhlIGJvb3RtYWdpYyBhbmQgdGhlIGJvb3Rjb3VudCBzaGFyZXMgQVQ5MV9HUEJSIDMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRlcnMgRGFyYW5kZXIgPGFkQGRhdGFyZXNwb25zLnNlPgotCi1jb21taXQgNWYzNTM0ODQwOTM4NzZkNzAyMWYyMGZhNGJkNjNmODJkMzI5NDFiOQotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglUaHUgRmViIDI1IDEyOjA1OjMyIDIwMTAgLTA2MDAKLQotICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwotCi0gICAgRmV0Y2hlZCBmcm9tIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvbWFjaGluZXMvZG93bmxvYWQucGhwCi0gICAgQW5kIGJ1aWx0IHdpdGgKLQotICAgIHJlcG8gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQotICAgIGNvbW1pdCBhZWExODdjNDZmN2QwM2NlOTg1ZTU1ZWIxMzk4ZDA3NzZhMTViOTI4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBjN2FkMTNhMjQyOTVkZWQ4ODBkN2JjZDE3MTgxZGY0YTVmM2JhYzU4Ci1BdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci1EYXRlOglXZWQgRmViIDI0IDAwOjIyOjA5IDIwMTAgKzAxMDAKLQotICAgIGVwOTN4eDogUmVmYWN0b3Jpbmcgb2YgdGltZXIgY29kZQotCi0gICAgZXA5M3h4OiBSZWZhY3RvcmluZyBvZiB0aGUgdGltZXIgY29kZSwgaW5jbHVkaW5nIHRoZSBmb2xsb3dpbmcgY2hhbmdlcwotCi0gICAgICogdXNlIGEgZnJlZSBydW5uaW5nIHRpbWVyIGluc3RlYWQgb2YgYSBwZXJpb2RpY2FsIG9uZQotICAgICAqIHVzZSB1bnNpZ25lZCBsb25nIGxvbmcgZm9yIHRvdGFsIG51bWJlciBvZiB0aWNrcwotICAgICAqIGhvbGQgdGhlIHRpbWVyIHN0YXRlIGluIGEgc3RydWN0dXJlIGluc3RlYWQgb2Ygc2VwYXJhdGUgdmFyaWFibGVzCi0gICAgICogaW5jcmVtZW50IHRoZSB0aW1lciBjb3VudGVyIGluc3RlYWQgb2YgZGVjcmVtZW50aW5nIGl0Ci0gICAgICogcmVtb3ZlIHVudXNlZCBmdW5jdGlvbiB1ZGVsYXlfbWFza2VkKCkKLSAgICAgKiByZW1vdmUgdW51c2VkIGZ1bmN0aW9uIHNldF90aW1lcigpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotCi1jb21taXQgZDlmNTA1ZTNjZGRiYjdhZmNlMjZkY2ZlMGZkMTliMjA3ZWU1N2MwOQotQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotRGF0ZToJV2VkIEZlYiAyNCAwMDoyMjowMCAyMDEwICswMTAwCi0KLSAgICBlcDkzeHg6IEZpeCBjYWxjdWxhdGlvbiBvZiBzeXMgdGlja3MgaW4gY2xrX3RvX3N5c3RpY2tzKCkKLQotICAgIGVwOTN4eDogVXNlIHVuc2lnbmVkIGxvbmcgbG9uZyBmb3IgY2FsY3VsYXRpb24gb2Ygc3lzIHRpY2tzIGluIGNsa190b19zeXN0aWNrcygpCi0gICAgZm9yIHByb3BlciBoYW5kbGluZyBvZiBsYXJnZSBpbnRlcm1lZGlhdGUgdmFsdWVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotCi1jb21taXQgMDQxZDQyZTc4OWFiYTIwMjk2ZmZjZGU5MjE3M2YxMDBhOTU5Mjg4MAotQXV0aG9yOiBTaWFyaGVpIFNpYW1hc2hrYSA8c2lhcmhlaS5zaWFtYXNoa2FAZ21haWwuY29tPgotRGF0ZToJVHVlIEZlYiAyMyAyMzo1NjozNiAyMDEwIC0wNTAwCi0KLSAgICBPTUFQMzogd29ya2Fyb3VuZCBmb3IgQVJNIENvcnRleC1BOCBlcnJhdHVtIDcyNTIzMwotCi0gICAgNzI1MjMzOiBQTEQgaW5zdHJ1Y3Rpb25zIGV4ZWN1dGVkIHdpdGggUExEIGRhdGEgZm9yd2FyZGluZwotICAgIGVuYWJsZWQgY2FuIHJlc3VsdCBpbiBhIHByb2Nlc3NvciBkZWFkbG9jawotCi0gICAgVGhpcyBkZWFkbG9jayBjYW4gaGFwcGVuIHdoZW4gTkVPTiBsb2FkIGluc3RydWN0aW9ucyBhcmUgdXNlZCB0b2dldGhlcgotICAgIHdpdGggY2FjaGUgcHJlbG9hZCBpbnN0cnVjdGlvbnMgKFBMRCkuIFRoZSBwcm9ibGVtYXRpYyBjb25kaXRpb25zCi0gICAgY2FuIGJlIHRyaWdnZXJlZCBpbi10aGUtd2lsZCBieSBORU9OIG9wdGltaXplZCBmdW5jdGlvbnMgZnJvbSBwaXhtYW4KLSAgICBsaWJyYXJ5IChodHRwOi8vY2dpdC5mcmVlZGVza3RvcC5vcmcvcGl4bWFuKSwgd2hpY2ggcGVyZm9ybSBkeW5hbWljCi0gICAgYWRqdXN0bWVudCBvZiBwcmVmZXRjaCBkaXN0YW5jZS4KLQotICAgIFRoZSB3b3JrYXJvdW5kIGRpc2FibGVzIFBMRCBkYXRhIGZvcndhcmRpbmcgYnkgc2V0dGluZyBQTERfRldEIGJpdAotICAgIGluIEwyIENhY2hlIEF1eGlsaWFyeSBDb250cm9sIFJlZ2lzdGVyIGFzIHJlY29tbWVuZGVkIGluIEFSTSBDb3J0ZXgtQTgKLSAgICBlcnJhdGEgbGlzdC4KLQotICAgIFRoZSBkZWFkbG9jayBjYW4gb25seSBoYXBwZW4gb24gcjFwWCByZXZpc2lvbnMgb2YgQ29ydGV4LUE4ICh1c2VkIGluCi0gICAgT01BUDM0eHgvT01BUDM1eHgpLiBQZXJmb3JtYW5jZSBpbXBhY3Qgb2YgdGhlIHdvcmthcm91bmQgaXMgcHJhY3RpY2FsbHkKLSAgICBub24tZXhpc3RhbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaWFyaGVpIFNpYW1hc2hrYSA8c2lhcmhlaS5zaWFtYXNoa2FAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDdjOTY2YThiZGZkYWI4MGNhZmJmZWQwMzVkN2FlNmVhNmY1OGY3NTYKLUF1dGhvcjogQWNoaW0gRWhybGljaCA8YWVocmxpY2hAdGFza2l0LmRlPgotRGF0ZToJV2VkIEZlYiAyNCAxMDoyOToxNiAyMDEwICswMTAwCi0KLSAgICBBUk0gY2hhbmdlIG5hbWUgb2YgZGVmaW5lcyBmb3IgQVQ5MSBhcm05MjZlanMKLQotICAgIENvbmZpZ3VyYXRpb24gZGVmaW5lcyBzaG91bGQgYmUgcHJlY2VlZGVkIHdpdGggQ09ORklHX1NZU18uIFJlbmFtZWQKLSAgICBzb21lIGF0OTEgc3BlY2lmaWMgZGVmaW5lcyB0byBjb25mb3JtIHRvIHRoaXMgbmFtaW5nIGNvbnZlbnRpb246Ci0KLSAgICBBVDkxX0NQVV9OQU1FIHRvIENPTkZJR19TWVNfQVQ5MV9DUFVfTkFNRQotICAgIEFUOTFfTUFJTl9DTE9DSyB0byBDT05GSUdfU1lTX0FUOTFfTUFJTl9DTE9DSwotCi0gICAgU2lnbmVkLW9mZi1ieTogQWNoaW0gRWhybGljaCA8YWVocmxpY2hAdGFza2l0LmRlPgotCi1jb21taXQgNWM5N2ExZGUxOTZmZGNiZTlkMDk4OTQ4ZWNmNGZjY2ZiZWEyM2I3OAotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgotRGF0ZToJV2VkIEZlYiAxNyAyMToyOTo0NSAyMDEwIC0wNTAwCi0KLSAgICBWb2ljZUJsdWU6IGZpeCBsaW5rZXIgZXJyb3JzCi0KLSAgICBsaW5raW5nIGVlcHJvbSB3aXRoIGxpYmdlbmVyaWMuYSBpcyBub3QgcmVhbGx5IG5lZWRlZCBhbmQgY2F1c2VzIGZvbGxvd2luZwotICAgIGVycm9yOgotICAgIC4uLy4uL2xpYl9nZW5lcmljL2xpYmdlbmVyaWMuYShzdHJpbmcubyk6IEluIGZ1bmN0aW9uIGBzdHJjbXAnOgotICAgIC9ob21lL2xhZGlzL3NyYy91LWJvb3QtdGkvbGliX2dlbmVyaWMvc3RyaW5nLmM6MTUyOiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGBzdHJjbXAnCi0gICAgLi4vLi4vZXhhbXBsZXMvc3RhbmRhbG9uZS9saWJzdHVicy5hKHN0dWJzLm8pOmluY2x1ZGUvX2V4cG9ydHMuaDoyNDogZmlyc3QgZGVmaW5lZCBoZXJlCi0gICAgbWFrZVsxXTogKioqIFtlZXByb20uc3JlY10gRXJyb3IgMQotCi0gICAgRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gbWVtc2V0IGdlbmVyYXRlZCBieSBzb21lIHZlcnNpb25zIG9mIGdjYwotICAgIHRvIHplcm8gb3V0IGluaXRpYWxpemVkIHN0cnVjdHVyZSBvbiB0aGUgc3RhY2s6Ci0gICAgZWVwcm9tLm86IEluIGZ1bmN0aW9uIGBlZXByb20nOgotICAgIGJvYXJkL3ZvaWNlYmx1ZS9lZXByb20uYzoxNTI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1lbXNldCcKLSAgICBtYWtlWzFdOiAqKiogW2VlcHJvbV0gRXJyb3IgMQotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGEzMmMxZTBlY2Q1NjNjNjVjNjE3YjBlYjkwODBhMTBkMjg2YmIwYjQKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPExhZGlzbGF2Lk1pY2hsQHNlem5hbS5jej4KLURhdGU6CVdlZCBGZWIgMTcgMjE6Mjk6MzkgMjAxMCAtMDUwMAotCi0gICAgVm9pY2VCbHVlOiBsaW1pdCBsaW5lIGxlbmdodCB0byA4MCBjaGFyYWN0ZXJzCi0KLSAgICBSZWluZGVudCBjb25maWd1cmF0aW9uIGhlYWRlciB0byBsaW1pdCBsaW5lIGxlbmdodCB0byA4MCBjaGFyYWN0ZXJzIGJ5Ci0gICAgcmVtb3Zpbmcgb2J2aW91cyBhbmQgc29tZXRpbWVzIG1pc2xlYWRpbmcgY29tbWVudHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgNzc5YjUzNDM4NWFkZjBhMWVmZGQ4YjQwZGJhY2FlMTE1OTg1NzViOAotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglXZWQgRmViIDE3IDIxOjEzOjUzIDIwMTAgLTA1MDAKLQotICAgIG5ldHN0YXIuaDogZG8gbm90IGV4Y2VlZCA4MCBjb2x1bW5zCi0KLSAgICBMaW1pdCBsaW5lIGxlbmd0aCB0byA4MCBjaGFyYWN0ZXJzIG1vc3RseSBieSByZW1vdmluZyBvYnZpb3VzIGFuZCBzb21ldGltZXMKLSAgICBtaXNsZWFkaW5nIGNvbW1lbnRzLiBGaXggaW5kZW50YXRpb24sIHRvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAzZmNhMjkyOTRhYmQ3MzkxNWRlMmJkMGZjZjI2NTBlMDNjYzliZWNjCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVdlZCBGZWIgMTcgMjE6MDk6MjEgMjAxMCAtMDUwMAotCi0gICAgRGFWaW5jaTogQWRkaW5nIGVudHJ5IHRvIE1BS0VBTEwgZm9yIERNMzY1IEVWTQotCi0gICAgVGhlIHBhdGNoIGFkZHMgYW4gZW50cnkgZm9yIHRoZSBETTM2NSBFVk0gdG8gTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgMzdjZmZkYWQwNmFmNWE0NTM4ZGQwOTA3OTRmMjEzMjkyMTM1YWRiYwotQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLURhdGU6CVdlZCBGZWIgMTcgMjA6Mzc6MjQgMjAxMCAtMDUwMAotCi0gICAgZGE4MzBldm06IEFkZCBzdXBwb3J0IGZvciBUSSBFTUFDCi0KLSAgICBBZGRzIHN1cHBvcnQgZm9yIGV0aGVybmV0IG5ldHdvcmtpbmcgb24gdGhlIGRhODMwZXZtIHBsYXRmb3JtLgotCi0gICAgVGhpcyBwbGF0Zm9ybSB1c2VzIGFuIFNvQyBFTUFDIGludGVyZmFjZSBhbmQgYSAzIHBvcnQgZXRoZXJuZXQKLSAgICBzd2l0Y2ggYXMgYSBQSFkgd2l0aCBhbiBSTUlJIGludGVyZmFjZS4gVGhlIFBIWSBhbHNvIGhhcyBhIGkyYwotICAgIGludGVyZmFjZSBmb3IgY29uZmlndXJpbmcgdGhlIHN3aXRjaCBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCBkODc3NWQwM2YzZjAxMTYyNDFjZmI0NWM3ZWYyN2ZkMDgwOTA0YzRhCi1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxMYWRpc2xhdi5NaWNobEBzZXpuYW0uY3o+Ci1EYXRlOglNb24gRmViIDggMTQ6MTk6MDYgMjAxMCAtMDUwMAotCi0gICAgTmV0U3RhcjogbWFrZSBtdGRwYXJ0cyBkZWZhdWx0IHJlYWR5IGZvciByZWNlbnQga2VybmVscwotCi0gICAgUmVjZW50IGtlcm5lbHMgYXJlIHVzaW5nIGdlbmVyaWMgTkFORCBhbmQgTk9SIGRyaXZlcnMuIENoYW5nZQotICAgIGRlZmF1bHQgbXRkcGFydHMgdG8gcmVmbGVjdCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCBkZTlhMWUwZDA4MzAxZWE0OTI1ZWUxMzdhZjI0MDQyNGIxMDdhNjA4Ci1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxMYWRpc2xhdi5NaWNobEBzZXpuYW0uY3o+Ci1EYXRlOglNb24gRmViIDggMTQ6MTc6NDUgMjAxMCAtMDUwMAotCi0gICAgTmV0U3RhcjogZml4IGRlZmF1bHQgZW52aXJvbm1lbnQKLQotICAgIENvcnJlY3Qgc3dpdGNoaW5nIHBhcnRpdGlvbnMgYWZ0ZXIgdXBncmFkZSBhbmQgbWFrZSBpdCBtb3JlIHJlYWRhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDNhNjc1NjZjMWRlZjdkMmViOTM1YjMxYjNiMjgyYmE4OTNjM2YzMzAKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPExhZGlzbGF2Lk1pY2hsQHNlem5hbS5jej4KLURhdGU6CU1vbiBGZWIgOCAxNDoxNTo0NyAyMDEwIC0wNTAwCi0KLSAgICBOZXRTdGFyOiBlZXByb20gLSBmaXggbGlua2VyIGVycm9yCi0KLSAgICBsaW5raW5nIGVlcHJvbSB3aXRoIGxpYmdlbmVyaWMuYSBpcyBub3QgcmVhbGx5IG5lZWRlZCBhbmQgY2F1c2VzIGZvbGxvd2luZwotICAgIGVycm9yOgotICAgIC4uLy4uL2xpYl9nZW5lcmljL2xpYmdlbmVyaWMuYShzdHJpbmcubyk6IEluIGZ1bmN0aW9uIGBzdHJjbXAnOgotICAgIGxpYl9nZW5lcmljL3N0cmluZy5jOjE1MjogbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgc3RyY21wJwotICAgIC4uLy4uL2V4YW1wbGVzL3N0YW5kYWxvbmUvbGlic3R1YnMuYShzdHVicy5vKTppbmNsdWRlL19leHBvcnRzLmg6MjQ6IGZpcnN0IGRlZmluZWQgaGVyZQotICAgIFJlbW92ZSBlZXByb20gbGlua2VyIHNjcmlwdCBhcyB3ZWxsIGFuZCBnZW5lcmF0ZSBlbnRyeSBwb2ludCBvYmplY3QKLSAgICAodG8gc3RhcnQgYXBwbGljYXRpb24gYnkganVtcGluZyBvbiBpdHMgYmVnaW5uaW5nKSBvbiB0aGUgZmx5LgotICAgIE91dC1vZi10cmVlIGJ1aWxkIHRlc3RlZCBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDMwOGQ0NjNlYWY2ZjRhZGEwMDE5MzMwNmE2ZTY0MzI5OGQxOTkwZDgKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPExhZGlzbGF2Lk1pY2hsQHNlem5hbS5jej4KLURhdGU6CU1vbiBGZWIgOCAxNDoxNTo0MyAyMDEwIC0wNTAwCi0KLSAgICBOZXRTdGFyOiBlZXByb20gLSBiZSBsZXNzIHZlcmJvc2UKLQotICAgIFVzZSBzaG9ydGVyIHlldCBkZXNjcmlwdGl2ZSBtZXNzYWdlcywgcmVwbGFjZSBwcmludGYoKSB3aXRoCi0gICAgcHV0cygpIHdoZXJlIGFwcHJvcHJpYXRlLiBUaGlzIHNhdmVzIGZldyBieXRlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCBiMjlmZjYyNzcyMzlmNWM4YmM5MzY2ZTc0YWZhYzVhMzZhYjNiMjNlCi1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxMYWRpc2xhdi5NaWNobEBzZXpuYW0uY3o+Ci1EYXRlOglNb24gRmViIDggMTQ6MTU6MTUgMjAxMCAtMDUwMAotCi0gICAgTmV0U3RhcjogZWVwcm9tIC0gdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWVtc2V0JwotCi0gICAgRGVmaW5pbmcgcGFydGlhbGx5IGluaXRpYWxpemVkIHN0cnVjdCBldGhfZGV2aWNlIG9uIHN0YWNrIG1lYW5zCi0gICAgZ2NjIGhhcyB0byB6ZXJvIG91dCBpdCwgYW5kIHNvbWUgZ2NjIHZlcnNpb25zIG9wdGltaXplIHRoaXMgd2l0aAotICAgIGFuIGltcGxpY2l0IGNhbGwgdG8gbWVtc2V0LiBNb3ZlIGRlZmluaXRpb24gdG8gZGF0YSBzZWN0aW9uCi0gICAgdG8gYXZvaWQgdGhhdCAoaXQgaGFzIGFsc28gbmljZSBzaWRlIGVmZmVjdCB0aGF0IHdlIG5lZWQgbm90Ci0gICAgdG8gcGFzcyBpdCB0byBoZWxwZXIgZnVuY3Rpb25zIGFueW1vcmUpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgOGY5YTIyMTA0NWE0YWNlMTRmZTAwNmUxMzUzYzU5MzYxOWQxMDAxYQotQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLURhdGU6CVR1ZSBNYXIgMiAxMDo1OToxOSAyMDEwICswMTAwCi0KLSAgICBdIGZpeCBtb25pdG9yIHByb3RlY3Rpb24gZm9yIENPTkZJR19NT05JVE9SX0lTX0lOX1JBTQotCi0gICAgRm9yIHBsYXRmb3JtcyB3aXRoIGZsYXNoIGJlbG93IHJhbSBhZGRyZXNzZXMsIHRoZSBjdXJyZW50IGNoZWNrIHRvCi0gICAgYWN0aXZhdGUgbW9uaXRvciBwcm90ZWN0aW9uIGlzIHdyb25nL2luc3VmZmljaWVudC4gVGhpcyBwYXRjaCBmaXhlcwotICAgIENPTkZJR19NT05JVE9SX0lTX0lOX1JBTSBmb3IgdGhlc2Ugc3lzdGVtcyBieSBhZGRpbmcgYSBjaGVjayBmb3IKLSAgICB0aGlzIGNvbmZpZ3VyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjN2RlODEwYzc5YTAwYWE2ZmMwODkwMGVlMGJiNTdiZDI5NWRiNzMzCi1BdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgotRGF0ZToJVHVlIE1hciAyIDEwOjU5OjIwIDIwMTAgKzAxMDAKLQotICAgIGFsbG93IE1DRjUzMnggdG8gdXNlIENPTkZJR19NT05JVE9SX0lTX0lOX1JBTQotCi0gICAgQ09ORklHX01PTklUT1JfSVNfSU5fUkFNIGlzIGJyb2tlbiBmb3IgTUNGNTMyeC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzCi0gICAgIGJ5IGNvbmRpdGlvbmFsbHkKLSAgICAtIHJlbW92aW5nIHRoZSB2ZWN0b3IgdGFibGUgYXQgdGhlIGJlZ2lubmluZyBvZiBjb2RlCi0gICAgLSBub3Qgb3ZlcndyaXRpbmcgdGhlIHZlY3RvciBiYXNlIHJlZ2lzdGVyCi0gICAgLSByZW1vdmluZyB0aGUgY29kZSB0byByZS1zZXQgdGhlIFBMTCwgd2hpY2ggZWZmZWN0aXZlbHkgZGlzYWJsZXMKLSAgICAgIFNEUkFNIGFjY2VzcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+Ci0KLWNvbW1pdCBiYjkwN2FiNTFmZDA0MjU1OTIzYjdlY2Y5ZGFiMzUyMDc4ODA4MzUxCi1BdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuIGF0IFJ1Z2dlZENvbS5jb20+Ci1EYXRlOglNb24gT2N0IDI2IDE0OjE5OjE3IDIwMDkgLTA0MDAKLQotICAgIE1DRjUyNzEtb25seTogQWRkZWQgYSB3ZWFrIGJvYXJkX3Jlc2V0IGZ1bmN0aW9uIHRvIGFsbG93IGN1c3RvbSByZXNldAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgYm9hcmRfcmVzZXQgZnVuY3Rpb24gdG8gYWxsb3cgYm9hcmRzIHRvIHNwZWNpZnkKLSAgICB0aGVpciBvd24gY3VzdG9tIHJlc2V0IHNlcXVlbmNlIChlLmcuIHJlc2V0dGluZyBieSB0aW1pbmcgb3V0IHdhdGNoZG9nKS4KLSAgICBUZXN0ZWQgb25seSBvbiBNQ0Y1MjcxLCBjYW4gYmUgZXhwYW5kZWQgaWYgbmVlZGVkLgotCi0gICAgQmFzZWQgb24gTWlrZSBGcnlzaW5nZXIncyBzdWdnZXN0aW9uIG9uOgotICAgIGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9nbWFuZS5jb21wLmJvb3QtbG9hZGVycy51LWJvb3QvNzAzMDQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuIGF0IFJ1Z2dlZENvbS5jb20+Ci0KLWNvbW1pdCA5OTJkNzEyOTUwMGQyMzlkNjg0YzE1ZmEyZDYxZTBhOGYyZTY0NDU3Ci1BdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgotRGF0ZToJV2VkIE9jdCAyOCAxNToxMTowMCAyMDA5IC0wNTAwCi0KLSAgICBNQ0Y1MzJ4OiBtYWtlIGljYWNoZV9lbmFibGUgdXNlIENPTkZJR19TWVNfU0RSQU1fU0laRQotCi0gICAgaW4gY3B1L21jZjUzMngvc3RhcnQuUywgdGhlIGZ1bmN0aW9uIGljYWNoZV9lbmFibGUgZW5hYmxlcyB0aGUgY2FjaGUgZm9yCi0gICAgYSBmaXhlZCAzMk1CIHJlZ2lvbiBzdGFydGluZyBhdCB0aGUgU0RSQU0gc3RhcnQgYWRkcmVzczsgdGhpcyBwYXRjaAotICAgIGNoYW5nZXMgdGhlIGZ1bmN0aW9uIHRvIGNvdmVyIHRoZSByZWdpb24gZGVmaW5lZCBieSBDT05GSUdfU1lTX1NEUkFNX1NJWkUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgotCi1jb21taXQgODcwYmYzZWU2MDMyMGI1OGY4OTcwZmZlM2RkZWJkYTBlOGFjNjJmNwotQXV0aG9yOiBXb2xmZ2FuZyBXZWduZXIgPHcud2VnbmVyQGFzdHJvLWtvbS5kZT4KLURhdGU6CVdlZCBEZWMgOSAxNzozMjoxMiAyMDA5IC0wNTAwCi0KLSAgICBhZGQgaW5jbHVkZS9hc20tbTY4ay91bmFsaWduZWQuaAotCi0gICAgbGliX2dlbmVyaWMvemxpYi5jIG5lZWRzIGluY2x1ZGUvYXNtL3VuYWxpZ25lZC5oIHNpbmNlIGNvbW1pdAotICAgIGNkNTE0YWViOTk2ZTJmN2FlZmJlMWY3ODQ4MTk2NWQ5ZDA3NGFlZDQsIHdoaWNoIGJyb2tlIGNvbXBpbGF0aW9uIGZvcgotICAgIENvbGRmaXJlL002OEsuIFRoaXMgcGF0Y2ggYWRkcyB0aGUgbWlzc2luZyBoZWFkZXIgZm9yIHRoZXNlCi0gICAgYXJjaGl0ZWN0dXJlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXIgYXQgYXN0cm8ta29tLmRlPgotCi1jb21taXQgZGE1ZTA4MzU5MGJiNjJjYTZkN2YwOGQzNzE0ZDA3YmE3MzZkYTg2MwotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglNb24gRmViIDggMTE6NTA6MTYgMjAxMCArMDkwMAotCi0gICAgc2g6IEFkZCBhc20vdW5hbGlnbmVkLmggYW5kIGFzbS91bmFsaWduZWQtc2g0YS5oIGZyb20gTGludXgga2VybmVsCi0KLSAgICB6bGliLmMgZGVtYW5kcyBhc20vdW5hbGlnbmVkLmguIEJ1dCwgU0ggZG9lcyBub3QgaGF2ZSB0aGVzZS4KLSAgICBUaGlzIGNvbW1pdCBhZGQgYXNtL3VuYWxpZ25lZC5oIGFuZCBhc20vdW5hbGlnbmVkLXNoNGEuaCBmcm9tIExpbnV4Ci0gICAga2VybmVsIGFuZCBtb2RpZnlmIGZvciB1LWJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBmZTM4OWRhNmFlNzM5ODE2ODc5NjA2ZWNkZTRhYjI1ZjQyOTIzNzdkCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gTWFyIDEgMTE6MTA6MTcgMjAxMCAtMDYwMAotCi0gICAgbXBjODN4eDogZml4IG91dC1vZi10cmVlIG1wYzgzMTUgbmFuZCBidWlsZAotCi0gICAgY29tbWl0IDJlOTUwMDRkZWI2ZTMzZTMzYmYxYjhhOTJhMzhjZDIxMTViYWM0YzIgIm1wYzgzeHg6IEFkZCBOQU5EIGJvb3Qgc3VwcG9ydAotICAgIGZvciBNUEM4MzE1RS1SREIgYm9hcmRzIiBzeW1saW5rZWQgbmFuZF9zcGwvYm9hcmQvZnJlZXNjYWxlL21wYzgzMTVlcmRiIHRvCi0gICAgbXBjODMxM2VyZGIgaW4gb3JkZXIgdG8gbm90IGR1cGxpY2F0ZSBjb2RlLgotCi0gICAgU2luY2UgdGhlIG1haW4gbWFrZWZpbGUgYnVpbGRzIG5hbmRfc3BsL2JvYXJkLyQoQk9BUkRESVIpICh3aGljaCBtYWtlcyBzZW5zZSksCi0gICAgYW5kIHRoZSBib2FyZCBNYWtlZmlsZSBhbmQgbGlua2VyIHNjcmlwdCBhcmUgdGhlIG9ubHkgdHdvIG5lY2Vzc2FyeSBmaWxlcwotICAgIHRvIGVuYWJsZSBvdXQtb2YtdHJlZSBidWlsZGluZywgYW5kIG90aGVyIGJvYXJkcyBoYXZlIGR1cGxpY2F0ZWQgbmFuZCBtYWtlZmlsZXMKLSAgICAoZS5nLiA4NTM2ZHMgJiA4NTY5bWRzKSwgaXQgb25seSBzZWVtcyBwcnVkZW50IHRvIGNvcHkgdGhlc2UgdHdvIGZpbGVzIGluIHRoZQotICAgIG5hbWUgb2YgdGhlIDgzMTUgdG9vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBDYzogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZTdlMTJkZmExMDNjYjhlYzZkYzc1NDdkZDFjOTk3NjMzN2RjMWZkCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gRmViIDIyIDE5OjM5OjE2IDIwMTAgLTA2MDAKLQotICAgIG1wYzgzeHg6IHZtZTgzNDk6IGZpeCBpbmNvcnJlY3QgQlIwX1BSRUxJTSBwb3J0IHNpemUgY29tbWVudAotCi0gICAgY29tbWl0IDk4ZDkyZDhjOWY0MDIxNjI5YTQ1MjYxYWQ1ZWMzZjM1OTVmM2EyN2EgInNiYzgzNDk6IGZpeCBpbmNvcnJlY3QKLSAgICBjb21tZW50IiBtaXNzZWQgdGhpcyBvbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODc4MDBmNzI0MTRiODMwNzU2YWVmYzc1N2RkMTkxNjg4ZmViYWNmOQotQXV0aG9yOiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLmcub2JyaWVuQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBGZWIgMjQgMTQ6MTA6MjQgMjAxMCAtMDUwMAotCi0gICAgcHBjNHh4OiBDb3JyZWN0ZWQgRUJDIHJlZ2lzdGVyIGJpdCBkZWZpbml0aW9ucwotCi0gICAgQ29ycmVjdGVkIHRoZSBiaXQgZmllbGQgcG9zaXRpb25zIG9mIHRoZSBleHRlcm5hbCBtYXN0ZXIgcHJpb3JpdHkgbG93Ci0gICAgYW5kIHRoZSBleHRlcm5hbCBtYXN0ZXIgcHJpb3JpdHkgaGlnaCB2YWx1ZXMgaW4gdGhlIEVCQyBjb25maWd1cmF0aW9uCi0gICAgcmVnaXN0ZXIuIFRoZXNlIGJpdCBmaWVsZCBwb3NpdGlvbnMgZGlmZmVyIGJldHdlZW4gUFBDNDA1IGFuZCBQUEM0NDAKLSAgICBwcm9jZXNzb3JzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGYzNjUxNzY0ZTU3ZTM1MzI1MTY5NTY5MTY3N2JkOTViYTVhNDIwYmMKLUF1dGhvcjogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci1EYXRlOglNb24gRmViIDIyIDIyOjQ5OjA2IDIwMTAgKzAxMDAKLQotICAgIGNtZF9pdGVzdC5jOiBmaXggcG9pbnRlciBkZXJlZmVyZW5jaW5nCi0KLSAgICBmaXggcG9pbnRlciBkZXJlZmVyZW5jaW5nCi0gICAgaWYgdGhlIHNpemUgaXMgLmIgYW5kIC53IGFuIDggb3IgMTYgYml0IGFjY2VzcyBpcyBkb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJhbnMgTWV1bGVuYnJvZWtzIDxmcmFuc21ldWxlbmJyb2Vrc0BnbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgMGFkMjI3MDNmMDZhZjVmZTEwMGNmZTZmMDhiMWYzMmVhODljZDViMQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEZlYiAyMiAxOTozNzo1NiAyMDEwIC0wNjAwCi0KLSAgICB0b29sczogZml4IGlteGltYWdlIHdhcm5pbmcKLQotICAgIEZpeCBidWlsZCB3YXJuaW5nOgotCi0gICAgQ29uZmlndXJpbmcgZm9yIE1QQzgzN1hFTURTIGJvYXJkLi4uCi0gICAgaW14aW1hZ2UuYzogSW4gZnVuY3Rpb24gYGlteGltYWdlX3BhcnNlX2NmZ19maWxlJzoKLSAgICBpbXhpbWFnZS5jOjE0Njogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAyIG9mIGBnZXRsaW5lJyBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKLSAgICAvdXNyL2luY2x1ZGUvYml0cy9zdGRpby5oOjExNjogbm90ZTogZXhwZWN0ZWQgYHNpemVfdCAqJyBidXQgYXJndW1lbnQgaXMgb2YgdHlwZSBgdWludDMyX3QgKicKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1YjI4ZTkxM2Y0NTE5ODcwYWQyY2EwNmNkNzg0NWIwNTNmNzhiZjBmCi1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJRnJpIEZlYiA1IDE1OjE2OjAyIDIwMTAgKzAxMDAKLQotICAgIG1raW1hZ2U6IFNFR0ZBVUxUIHdpdGggaW14aW1hZ2Ugb24gNjQgYml0IHN5c3RlbXMKLQotICAgIFJ1bm5pbmcgbWtpbWFnZSB0byBnZW5lcmF0ZSBhbiBpbXhpbWFnZSBwcm9kdWNlcyBhIFNFR0ZBVUxUCi0gICAgb24gNjQgYml0IG1hY2hpbmVzIGR1ZSB0byBwb2ludGVyIGFyaXRobWV0aWMgbGltaXRlZCB0byAzMiBiaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVjZDFhMDliODFmMmVkNmU2YmE3YmQxZDBiZmIwY2MzZDBlYTJhZDAKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBGZWIgMTggMTk6Mjg6MTIgMjAxMCAtMDYwMAotCi0gICAgbXBjODN4eDogcmVtb3ZlIGhhcmRjb2RlZCBuZXR3b3JrIGFkZHJlc3NlcyBmcm9tIGNvbmZpZyBmaWxlcwotCi0gICAgYW5kIGF2b2lkIGUuZy4sIHR3byBpZGVudGljYWwgYm9hcmRzIGZyb20gY2F1c2luZyByYW5kb20gbmV0d29ya2luZwotICAgIGNvbmZsaWN0cyB3aGVuIGhvb2tlZCB1cCB0byB0aGUgc2FtZSBuZXR3b3JrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRjMDA2ZGQxNTAxMjgzZWVjYWVhODEzYTBlNWUyMjVlOWVlNmZkZWIKLUF1dGhvcjogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgotRGF0ZToJTW9uIEZlYiAxNSAxMDowMjozMiAyMDEwICswMjAwCi0KLSAgICBCdWc6IGRvX3Jlc2V0IGlzc3VlZCB2aWEgbmV0Y29uc29sZSBkb2VzIG5vdCByZXNldCBtcGM4M3h4IGNwdS4KLQotICAgIFRoZSBkb19yZXNldCByb3V0aW5lIGluIHRoZSBjcHUvbXBjODN4eC9jcHUuYyBmaWxlIGRvZXMgbm90IHJlc2V0Ci0gICAgdGhlIG1wYzgzeHggY3B1IHdoZW4gaXNzdWVkIHZpYSBuZXRjb25zb2xlLgotCi0gICAgTW92aW5nIHRoZSBjb25zb2xlIG91dHB1dCAicmVzZXR0aW5nIHRoZSBib2FyZC4iIHRvIHRoZSBiZWdpbm5pbmcgb2YKLSAgICB0aGUgcm91dGluZSBiZWZvcmUgZGlzYWJsaW5nIGludGVycnVwdHMgc29sdmVkIHRoZSBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgotICAgIEFja2VkLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzdlNzI3M2M0MDMxNWFiZDJmM2MxN2FkOGQ0NmE3ODk1MGUzZTY1ZgotQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci1EYXRlOglXZWQgRmViIDMgMjI6NDg6MDkgMjAxMCArMDEwMAotCi0gICAgbmV3IGJvYXJkIChlYl9jcHV4OWsyKQotCi0gICAgKiBuZXcgYm9hcmQgKGViX2NwdXg5azIpCi0gICAgICogc3VwcG9ydCBmb3IgRUIrQ1BVeDlLMiBib2FyZCBieSBCdVMgRWxla3Ryb25payBHbWJIICYgQ28uIEtHCi0gICAgICogc2VsZWN0IHZpYSBtYWtlIGViX2NwdXg5azJfY29uZmlnCi0gICAgICogdGhpcyBhbHNvIGRlbW9uc3RyYXRlcywgaG93IHRvIHVzZSBib2FyZHMgd2l0aCBBVDkxUk05MjAwIGNwdQotICAgICAgIGluIGF0OTEgYXJjaCB0cmVlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci0KLWNvbW1pdCA2Nzk5YTgwZjc2NDRkNzg5ODgxODczOTBkZmQzNzM1MmYyMGFkNzEwCi1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLURhdGU6CVdlZCBGZWIgMyAyMjo0Nzo1NyAyMDEwICswMTAwCi0KLSAgICBuZXcgYXQ5MV9lbWFjIG5ldHdvcmsgZHJpdmVyIChORVRfTVVMVEkgYXBpKQotCi0gICAgKiBhZGQncyBhdDkxX2VtYWMgKEFUOTFSTTkyMDApIG5ldHdvcmsgZHJpdmVyIChORVRfTVVMVEkgYXBpKQotICAgICAqIGVuYWJsZSBkcml2ZXIgd2l0aCBDT05GSUdfRFJJVkVSX0FUOTFFTUFDCi0gICAgICogZ2VuZXJpYyBQSFkgaW5pdGlhbGl6YXRpb24KLSAgICAgKiBtb2RpZnkgQVQ5MVJNOTIwMCBib2FyZHMgdG8gdXNlIE5FVF9NVUxUSSBkcml2ZXIKLSAgICAgKiB0aGUgZHJpdmVycyBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBMWFQ5NzEgUGh5IGFuZCBETTkxNjEgUGh5IGF0IE1JSSBhbmQgUk1JSQotICAgICAgIGludGVyZmFjZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgotCi1jb21taXQgOTgyNTBlOGUxN2ZjNzZiMzk4MTcwOGM2ZTYzZDQxZjg3NWJmMDM1OQotQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci1EYXRlOglXZWQgRmViIDMgMjI6NDc6MzUgMjAxMCArMDEwMAotCi0gICAgcHJlcGFyZSBqb2luaW5nIGF0OTFybTkyMDAgaW50byBhdDkxCi0KLSAgICAqIHByZXBhcmUgam9pbmluZyBhdDkxIGFuZCBhdDkxcm05MjAwCi0gICAgICogYWRkIG1vZGlmaWVkIGNvcHkgb2Ygc29jIGZpbGVzIHRvIGNwdS9hcm05MjB0L2F0OTEgdG8gbWFrZQotICAgICAgIHBvc3NpYmxlIHRvIGNvbXBpbGUgYXQ5MXJtOTIwMCBib2FyZHMgaW4gYXQ5MSB0cmVlIGluc3RlYWQKLSAgICAgICBvZiBhdDkxcm05MjAwCi0gICAgICogYWRkIGhlYWRlciBmaWxlcyB3aXRoIGMgc3RydWN0dXJlIGRlZnMgZm9yIEFUOTEgTUMsIFNUIGFuZCBUQwotICAgICAqIHRoZSBuZXcgY3B1IGZpbGVzIGFyZSB1c2luZyBhdDkxIGMgc3RydWN0dXJlIHNvYyBhY2Nlc3MKLSAgICAgKiBwbGVhc2UgcmVhZCBSRUFETUUuc29jLWF0OTEgZm9yIGRldGFpbHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLQotY29tbWl0IDFiMzRmMDBjMjhhMzAyMzY5M2Q5YjMxZTdiZDFhOTIxMmFmODM1MmYKLUF1dGhvcjogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgotRGF0ZToJV2VkIEZlYiAzIDIyOjQ3OjE4IDIwMTAgKzAxMDAKLQotICAgIHVwZGF0ZSBhdDkxc2FtOTI2M2VrIGJvYXJkIHRvIG5ldyBTb0MgYWNjZXNzCi0KLSAgICAqIGNvbnZlcnQgYXQ5MXNhbTkyNjNlayBib2FyZCB0byB1c2UgYyBzdHVjdHVyZSBTb0MgYWNjZXNzCi0gICAgICogY2hhbmdlIGdwaW8gYWNjZXNzIHRvIGF0OTFfZ3BpbyBzeW50YXgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLQotY29tbWl0IDBjZjBiOTMxNjFiZWIzZjNlZDVlMzdlNjExMmFlZGYxNWRhMTdlOGEKLUF1dGhvcjogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgotRGF0ZToJV2VkIEZlYiAzIDIyOjQ2OjU4IDIwMTAgKzAxMDAKLQotICAgIGNvbnZlcnQgY29tbW9uIGZpbGVzIHRvIG5ldyBTb0MgYWNjZXNzCi0KLSAgICAqIGFkZCdzIGEgd2FybmluZyB0byBhbGwgZmlsZXMsIHdoaWNoIG5lZWQgdXBkYXRlIHRvIG5ldyBTb0MgYWNjZXNzCi0gICAgICogY29udmVydCBjb21tb24gZmlsZXMgaW4gY3B1Ly4uL2F0OTEgYW5kIGEgbG90IG9mIGRyaXZlcnMgdG8gdXNlCi0gICAgICAgYyBzdHVjdHVyZSBTb0MgYWNjZXNzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci0KLWNvbW1pdCA3ZjllODYzM2FjOWM4NDZlN2U0Zjg2NzUwN2NiZDVkZTFiZDk5ZTBjCi1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLURhdGU6CVdlZCBGZWIgMyAyMjo0Njo0NiAyMDEwICswMTAwCi0KLSAgICBjb252ZXJ0IGFsbCBhdDkxIGZpbGVzIHRvIHVzZSBhdDkxX2dwaW8gZHJpdmVyIHN5bnRheAotCi0gICAgKiBjb252ZXJ0IGFsbCBmaWxlcyBjcHUvLi4vYXQ5MSB0byB1c2UgYXQ5MV9ncGlvIGRyaXZlciBzeW50YXgKLSAgICAgKiBjaGFuZ2UgQVQ5MV9QSU5QKFtBLUZdKShcZCspIHRvIEFUOTFfUElPX1BPUlRcMSwgXDIKLSAgICAgICB0aGlzIG1ha2VzIGFsbCAxNjAgQVQ5MV9QSU5QeHh4IGRlZmluZXMgb2Jzb2xldGUKLSAgICAgKiBBVDkxX1BJTlB4eHggZGVmaW5lcyBhbmQgZ3Bpby5oIGNhbiBiZSByZW1vdmUsIGlmIGFsbCBib2FyZHMgY29udmVydGVkIHRvIG5ldyBTb0MgYWNjZXNzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci0KLWNvbW1pdCBlYThmYmJhNzMxODRhNDA0MzdiZGVjY2Q4ODhjZjQ0OGQ1ZjExMDVlCi1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLURhdGU6CVdlZCBGZWIgMyAyMjo0NjoxNiAyMDEwICswMTAwCi0KLSAgICBhZGQgYSBuZXcgQVQ5MSBHUElPIGRyaXZlcgotCi0gICAgKiBhZGQgYSByZWFsIEFUOTEgR1BJTyBkcml2ZXIgaW5zdGVhZCBvZiBoZWFkZXIgaW5saW5lIGNvZGUKLSAgICAqIHJlc29sdmUgdGhlIG1peGluZyBvZiBwb3J0IGFuZCBwaW5zCi0gICAgKiBjaGFuZ2UgYm9hcmQgY29uZmlnIGZpbGVzIHRvIHVzZSBuZXcgZHJpdmVyCi0gICAgKiBhZGQgbWFjcm9zIHRvIGdwaW8gdG8gcmVhbGl6ZSBiYWNrd2FyZCBjb21wYXRpYmlsaXR5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci0KLWNvbW1pdCA1ZDhlMzU5YzM4ZDNhYjgwMDE1ZTQ3ZDBjYWI3OTJlZmU3NWNhY2Y5Ci1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLURhdGU6CVdlZCBGZWIgMyAyMjo0NjowMSAyMDEwICswMTAwCi0KLSAgICBhZGQgYyBzdHJ1Y3R1cmVzIGZvciBTb0MgYWNjZXNzCi0KLSAgICAqIGFkZCdzIGMgc3RydWN0dXJlcyBmb3IgU29DIGFjY2VzcyB0byBwaGVyaXBlcmlhbHMgaGVhZCBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgotCi1jb21taXQgNDI1ZGU2MmQ0MGY4NDUyNGI5MGU3NzZiMTQxYjA2MGNkNDM4YTlmZQotQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci1EYXRlOglXZWQgRmViIDMgMjI6NDU6NDIgMjAxMCArMDEwMAotCi0gICAgYWRkIG5ldyBDT05GSUdfQVQ5MV9MRUdBQ1kKLQotICAgICogYWRkJ3MgdGhlIG5ldyB0ZW1wb3JhcnkgQ09ORklHX0FUOTFfTEVHQUNZIHRvIGFsbCBib2FyZCBjb25maWdzCi0gICAgIFRoaXMgd2lsbCBuZWVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmxpdHksIHdoaWxlIGNoYW5nZSB0aGUgU29DIGFjY2VzcwotICAgICB0byBjIHN0cnVjdHVyZXMuIElmIENPTkZJR19BVDkxX0xFR0FDWSBpcyBkZWZpbmVkLCB0aGUgZGVwcmVjYXRlZAotICAgICBTb0MgaXMgdXNlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGpzX2F0X25nQHNjaGFyc29mdC5kZT4KLQotY29tbWl0IDNhNGU0MzkyMWQyNTk5NDUzZWE4N2M2MjMwOTllNWYzNDdjOWU1NGEKLUF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+Ci1EYXRlOglNb24gRmViIDggMTE6MzY6MTYgMjAxMCAtMDUwMAotCi0gICAgREE4MzAgRVZNOiBFbmFibGUgTkFORCBzdXBwb3J0IG9uIFNwZWN0cnVtIERpZ2l0YWwgRVZNCi0KLSAgICBUaGUgRVZNIFVJIGV4dGVuZGVyIGNhcmQgaGFzIGEgTkFORCBkZXZpY2UuIFRoaXMgY2hhbmdlIHdpbGwgZW5hYmxlCi0gICAgc2F2ZWVudiB0byB3b3JrIHdpdGggTkFORCBhbmQgTGludXggdG8gYmUgYm9vdGVkIHVzaW5nOgotCi0JbXRkcGFydHMgZGVmYXVsdAotCW5ib290IGtlcm5lbAotCWJvb3RtCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA2MjI4ZTYzODllNWVmNDcyZDVmNDNjYzVlYzRmMzA5MzIzMzA1NjM4Ci1BdXRob3I6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2UuY29tPgotRGF0ZToJTW9uIEZlYiA4IDExOjM0OjU4IDIwMTAgLTA1MDAKLQotICAgIERhdmluY2k6IEFkZCBFTUlGLUEgbWFjcm9zIGZvciBzZXR0aW5nIGNoaXAgc2VsZWN0IHBhcmFtZXRlcnMKLQotICAgIFRoZSBwYXRjaCBhZGRzIEVNSUYtQSBtYWNyb3MgZm9yIHNldHRpbmcgY2hpcCBzZWxlY3QgcGFyYW1ldGVycwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgYjc0MDY0YTBlMjk4NGExNjZlMzU3NTg1MmYzNjk3ZWY1NTk1YTk3YgotQXV0aG9yOiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Ci1EYXRlOglNb24gRmViIDggMTE6MzM6MjUgMjAxMCAtMDUwMAotCi0gICAgT01BUDM6IEF2b2lkIHJlLXdyaXRlIHRvIFBSTV9DTEtTUkNfQ1RSTAotCi0gICAgSW4gZnVuY3Rpb24gZ2V0X29zY19jbGtfc3BlZWQoKSwgZG8gbm90IGNoYW5nZS8gdXBkYXRlCi0gICAgdGhlIGRpdmlkZXIgZm9yIFNZU19DTEsgYXMgaXQgY2FuIGhhcyBjYXNjYWRpbmcgZWZmZWN0Ci0gICAgb24gdGhlIG90aGVyIGRlcml2ZWQgY2xvY2tzLgotCi0gICAgU3VkZGVuIGNoYW5nZSBpbiBkaXZpZGVyIHZhbHVlIGNhbiBsZWFkIHRvIGluY29uc2lzdGVudAotICAgIGJlaGF2aW9yIGluIHRoZSBzeXN0ZW0gLSBvZnRlbiBsZWFkaW5nIHRvIGNyYXNoZXMuCi0KLSAgICBUaGUgcHJvYmxlbSB3YXMgZm91bmQgd2hlbiB3b3JraW5nIHdpdGggT01BUDNFVk0gdXNpbmcKLSAgICBETTM3MzAgcHJvY2Vzc29yIGNhcmQuCi0KLSAgICBUaGUgcGF0Y2ggaGFzIGJlZW4gdGVzdGVkIHdpdGggT01BUDM1MzAgb24gT01BUDNFVk0gYXMKLSAgICB3ZWxsCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGlyZW1hdGggVmFpYmhhdiA8aHZhaWJoYXZAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGVmZjUzNmJlZmQzZWZhYjUzOGJiYTEwYmFkMDdlY2ZmNjNjOWY0NzAKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJVHVlIEZlYiA5IDIyOjA1OjM5IDIwMTAgKzAxMDAKLQotICAgIFNQSTogRml4IDMyIGJpdCB0cmFuc2ZlcnMgaW4gbXhjX3NwaS5jCi0KLSAgICBDb21taXQgZjliNmExNTc1ZDlmMWNhMTkyZTRjYjYwZTU0N2FhNjZmMDhiYWEzZiwgICJpLk1YMzE6IGZpeCBTUEkKLSAgICBkcml2ZXIgZm9yIHNob3J0ZXIgdGhhbiAzMiBiaXQiIGJyb2tlIDMyIGJpdCB0cmFuc2ZlcnMuIFRoaXMgcGF0Y2gKLSAgICBtYWtlcyBzaW5nbGUgMzIgYml0IHRyYW5zZmVyIHdvcmsgYWdhaW4uCi0KLSAgICBUcmFuc2ZlciBsZW5ndGhzIHRoYXQgYXJlIGtub3duIG5vdCB0byB3b3JrIHdpbGwgYWJvcnQgYW5kIHByaW50Ci0gICAgYW4gZXJyb3IgbWVzc2FnZS4KLQotICAgIFRlc3RlZCBvbiBpLk1YMzEgTGl0ZWtpdCBhbmQgaS5NWDMxIFBESyB1c2luZyAzMiBiaXQgdHJhbnNmZXJzIHRvCi0gICAgdGhlIE1DMTM3ODMvQVRMQVMgY2hpcCAodXNpbmcgdGhlICdkYXRlJyBjb21tYW5kKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IDM5YTkxNDIyMDNlNjEwYmYyYjFhMjE2MDg1ZTM3NDI3N2ZkMjhmOWYKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KLURhdGU6CVNhdCBGZWIgNiAyMDo1NDowNSAyMDEwICswMTAwCi0KLSAgICBlZGI5M3h4OiBlbmFibGUgdGhlIHVhcnQgaW4gZGV2aWNlY2ZnIHJlZ2lzdGVyCi0KLSAgICBwcmludGYgZ29lcyB0byB1YXJ0MSwgYnV0IGl0IHdpbGwgYmxvY2sgZm9yZXZlciB3YWl0aW5nIGZvcgotICAgIGJ1c3kgdG8gZ28gb2ZmIHVubGVzcyB0aGUgdWFydCBpcyBlbmFibGVkIGZpcnN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+Ci0KLWNvbW1pdCA4MjJiZDcwZGI0OTc3M2I0ZDU3ZWFhNDg0ZGNhODMzODZhNmIzNDc5Ci1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+Ci1EYXRlOglTYXQgRmViIDYgMjA6NTM6NTQgMjAxMCArMDEwMAotCi0gICAgZWRiOTN4eDogY2hhbmdlIGNhbGN1bGF0aW9uIHVuIGVhcmx5X3VkZWxheS5oCi0KLSAgICBQcmV2aW91cyBjb2RlIGNvbXBpbGVkIHdpdGggZ2NjLTQuMi4yIG1ha2VzIGEgY2FsbCB0bwotICAgIF9fYWVhYmlfdWlkaXYgdG8gZGl2aWRlIGJ5IDIwLiBBcyBhIHNpZGUgZWZmZWN0IGl0IHdhcwotICAgIG5vdCBpbmxpbmUgYW55IG1vcmUsIGFuZCBzbyBzZHJhbV9jZmcgdXNlZCB0aGUgc3RhY2sKLSAgICBhcyB3ZWxsLCBidXQgdGhpcyBpcyBlYXJseSBjb2RlIHRoYXQgaGFzIG5vIHN0YWNrIHlldC4KLSAgICBUaGUgcGF0Y2ggZXhwbGljaXRseSByZW1vdmVzIHRoZSBkaXZpc2lvbiwgc28gbm8gc3RhY2sgaXMgdXNlZC4KLQotICAgIFRoZSBjYWxjdWxhdGlvbiBvZiB0aGUgY291bnRlciBjYWxscyBhIGRpdmlzaW9uIGJ5IDIwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KLQotY29tbWl0IGM1MGEwZjUwMzk2N2Q0MzUxNTBiYmI5ZjJmODE2Y2UzM2FmZGYyMzEKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KLURhdGU6CVNhdCBGZWIgNiAyMDo1Mzo0MyAyMDEwICswMTAwCi0KLSAgICBFUDkzeHg6IGZpeCBzeXNjb25fcmVncyBkZWZpbml0aW9uCi0KLSAgICBUaGUgc3RydWN0dXJlIHdhcyBtaXNzaW5nIGEgcmVzZXJ2ZWQgZW50cnkgKG5vdCBsaXN0ZWQgaW4gdGhlIG1hbnVhbCwKLSAgICBhY3R1YWxseSksIHNvIHRoZSBsYXN0IHJlZ2lzdGVycyBoYWQgYSB3cm9uZyBvZmZzZXQuIFRoaXMgcHJldmVudGVkCi0gICAgYWxsIHN3bG9ja2VkIHJlZ2lzdGVycyB0byBiZSBtb2RpZmllZCBhcyBzd2xvY2sgaXMgbGFzdCBpbiB0aGUgc3RydWN0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUBnbnVkZC5jb20+Ci0KLWNvbW1pdCBmY2ZiNjMyYmQxZTlkZTY0NWIwMTVjZjczYTc4MTgzYzI5OTc0M2Q4Ci1BdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci1EYXRlOglNb24gRmViIDEgMjE6Mjk6MzkgMjAxMCArMDEwMAotCi0gICAgQVJNOiBBZGQgc3VwcG9ydCBmb3IgRVA5M3h4IFNvQ3MKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgQ2lycnVzIEVQOTN4eCBwbGF0Zm9ybQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KLSAgICBBY2tlZC1ieTogVG9tIDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBjZjNjMTQyZWU0YmUwZjA3N2Y4Yjg0NTkzZjFiMjRiMzVkMTQwMzllCi1BdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci1EYXRlOglNb24gRmViIDEgMjE6Mjk6NDggMjAxMCArMDEwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIEVEQjkzeHggYm9hcmRzCi0KLSAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgZm9sbG93aW5nIEVEQjkzeHggYm9hcmRzOgotCi0gICAgRURCOTMwMQotICAgIEVEQjkzMDIKLSAgICBFREI5MzAyQQotICAgIEVEQjkzMDcKLSAgICBFREI5MzA3QQotICAgIEVEQjkzMDEyCi0gICAgRURCOTMxNQotICAgIEVEQjkzMTVBCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotCi1jb21taXQgZDc5OGUyN2IxNDU0Mzc2MmY5ZjVkMDU2MWEzNDMwYzdmOWUyMTUzYgotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgotRGF0ZToJV2VkIEphbiAyNyAxMToxMjoyOCAyMDEwIC0wNTAwCi0KLSAgICBOZXRTdGFyOiBSZW1vdmUgZGVidWcganVuayBsZWFrZWQgaW50byBlZXByb20gdXRpbGl0eQotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIGRlYnVnIGp1bmsgbGVha2VkIGludG8gZWVwcm9tIHV0aWxpdHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgODllOTRkODFlZGE5YWYyZTFjMzVlOTcxMjViMGMwNDkzMzVjNzBmYwotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgotRGF0ZToJV2VkIEphbiAyNyAxMToxMjoyMyAyMDEwIC0wNTAwCi0KLSAgICBOZXRTdGFyOiBtYWtlIGNyY2l0IHV0aWxpdHkgbW9yZSByZWFkYWJsZQotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgY3JjaXQgdXRpbGl0eSBtb3JlIHJlYWRhYmxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgMzg0M2U3ZGM5MzRkOGVmN2M1OTJmNWEyMTA2ODg1ZWZlMzJlYWM3ZgotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8TGFkaXNsYXYuTWljaGxAc2V6bmFtLmN6PgotRGF0ZToJV2VkIEphbiAyNyAxMToxMjowOCAyMDEwIC0wNTAwCi0KLSAgICBOZXRTdGFyOiBEaXNhYmxlIENPTkZJR19DTURfSkZGUzIKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyAiQ09ORklHX0NNRF9KRkZTIiBmcm9tIHRoZSBib2FyZCBjb25maWcKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA2MzJlMWQ5MDE0ODQ4ZWM4ZDk4M2E2MjljMmUzNWI0NDIzODE2MzM2Ci1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVdlZCBKYW4gMjcgMTE6MTE6NTUgMjAxMCAtMDUwMAotCi0gICAgT01BUDMgTW92ZSBkZWNsYXJhdGlvbiBvZiBncG1jX2NmZy4KLQotICAgIEV2ZXJ5IG9tYXAzIGJvYXJkIGNvbmZpZyBmaWxlIGRlY2xhcmVkIHRoZSBnbG9iYWwgdmFyaWFibGUgZ3BtY19jZmcuCi0gICAgVGhpcyBjaGFuZ2VzIG1vdmVzIHRoZSBkZWNsYXJhdGlvbiB0byBhIGJldHRlciBsb2NhdGlvbiBpbiB0aGUKLSAgICBhcmNoIGRlcGVuZGVudCBoZWFkZXIgZmlsZSBjcHUuaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAwOTNkNjAxOGNmMGE4ZGFlNjE0YzI5MjRjMDAxM2Q5N2UyYTQ4NjYyCi1BdXRob3I6IFNjb3R0IEVsbGlzIDxzY290dEBqdW1wbm93dGVrLmNvbT4KLURhdGU6CVdlZCBKYW4gMjcgMTE6MTE6NDYgMjAxMCAtMDUwMAotCi0gICAgT3Zlcm8gR1BNQyByZWdpc3RlcnMKLQotICAgIFVzZSBhcHByb3ByaWF0ZSBHUE1DIHRpbWluZ3MgZm9yIHRoZSBMQU45MjIxIGNvbnRyb2xsZXIgb24gdGhlCi0gICAgR3Vtc3RpeCBPdmVybyBleHBhbnNpb24gYm9hcmRzIG5vdCB0aGUgdmFsdWVzIGluIGFyY2gtb21hcDMvbWVtLmgKLSAgICB3aGljaCBhcmUgZm9yIGEgZGlmZmVyZW50IGV0aGVybmV0IGNvbnRyb2xsZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBFbGxpcyA8c2NvdHRAanVtcG5vd3Rlay5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgNjNhNDdkZmQwNzUzNmUzOTk2NjVjYTc1MDRiYWM1MTJiZjIxNDkxZQotQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLURhdGU6CVdlZCBKYW4gMjcgMTE6MTE6MjggMjAxMCAtMDUwMAotCi0gICAgZGE4MzBldm06IFVzZSB0YWJsZSBkcml2ZW4gcGluIG11eCBjb25maWd1cmF0aW9uCi0KLSAgICBUaWR5dXAgdGhlIHBpbiBtdXhlciBjb25maWd1cmF0aW9uIHVzaW5nIHRoZSBEYXZpbmNpIHRhYmxlIGRyaXZlbgotICAgIHBpbm11eCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uIGFuZCBkYXRhIHRhYmxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2UuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDhlZDU4ODU2OTNiMzljNWMyY2NhNTU3NGRkOThkNmFkOGE5ODI3MDIKLUF1dGhvcjogU2VraGFyIE5vcmkgPG5zZWtoYXJAdGkuY29tPgotRGF0ZToJV2VkIEphbiAyNyAxMToxMDo0MCAyMDEwIC0wNTAwCi0KLSAgICBUSSBEYVZpbmNpOiBEcml2ZXIgZm9yIHRoZSBkYXZpbmNpIFNQSSBjb250cm9sbGVyCi0KLSAgICBUaGlzIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBTUEkgY29udHJvbGxlciBmb3VuZCBvbiBkYXZpbmNpCi0gICAgYmFzZWQgU29DcyBmcm9tIFRleGFzIEluc3RydW1lbnRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VraGFyIE5vcmkgPG5zZWtoYXJAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN1ZGhha2FyIFJhamFzaGVraGFyYSA8c3VkaGFrYXIucmFqQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA0NGQ4MDI1NjIyOWQwNTg2MjYyMmY0ZGQ4ODY0NjZmZDcwZmUwNGFlCi1BdXRob3I6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KLURhdGU6CU1vbiBKYW4gMjUgMTA6NTA6NDEgMjAxMCArMDEwMAotCi0gICAgYXQ5MTogQWRkIGVzZCBnbWJoIE9UQzU3MCBib2FyZCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZXNkIGdtYmggT1RDNTcwIGJvYXJkLgotICAgIFRoZSBPVEM1NzAgaXMgYmFzZWQgb24gYW4gQXRtZWwgQVQ5MVNBTTkyNjMgU29DLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgotCi1jb21taXQgZTM5YmYxZTJhOWU0MzcxNzQ2ODdkZTY4N2MxMjdlYzk4MGE5M2VlYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDggMTU6MzA6MTYgMjAxMCAtMDUwMAotCi0gICAga2dkYjogY3B1L21wYyogY3B1Lzc0eHg6IGluY2x1ZGUga2dkYi5oIHdoZW4gbmVlZGVkCi0KLSAgICBDb21taXQgY2JiMGNhYjFkOTI5ODM5ZCBicm9rZSBzb21lIHBsYXRmb3JtcyB3aGljaCB1c2VkIGtnZGIgY29kZSBidXQKLSAgICBkaWRuJ3QgYWN0dWFsbHkgaW5jbHVkZSBrZ2RiLmguICBTbyBpbmNsdWRlIGtnZGIuaCBpbiBhbGwgdGhlIHJlbGV2YW50Ci0gICAgdHJhcHMgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGFiNWEwZGNiOWM4ZjE5ZTM1MWZjMzNjNWRiOTE0NjliZmIxZDk0MzgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyIDEzOjQzOjQ4IDIwMTAgKzAxMDAKLQotICAgIG5ldDogVXNlIDAuNSBzZWMgdGltZW91dCBpbiBtaWlwaHlfcmVzZXQoKSBpbnN0ZWFkIG9mIGNvdW50aW5nIGxvb3AKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIEkndmUgbm90aXZlZCBvbiBhIGJ1Z2d5IFBQQzR4eCBzeXN0ZW0uIFRoaXMKLSAgICBzeXN0ZW0gaGFzIHByb2JsZW1zIHdpdGggdGhlIFBIWSBNRElPIGNvbW11bmljYXRpb24gYW5kIHNlZW1lZCB0byBiZQotICAgIHN0dWNrL2NyYXNoZWQgaW4gbWlpcGh5X3Jlc2V0KCkuIEJ1dCBkZWd1Z2dpbmcgcmV2ZWFsZWQsIHRoYXQgdGhlIENQVQotICAgIGRpZG4ndCBjcmFzaCwgYnV0ICJvbmx5IiBodW5nIGluIHRoaXMgY291bnRpbmcgbG9vcCBmb3IgYWJvdXQgMiBtaW51dGVzLgotCi0gICAgVGhpcyBwYXRjaCBub3cgdXNlcyBhIHJlYWwgdGltZW91dCBvZiAwLjUgc2Vjb25kcyAoYXMgbWVudGlvbmVkIGluIHRoZQotICAgIGNvbW1lbnQgaW4gbWlpcGh5X3Jlc2V0KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNDI5NGIyNDg1YmYwZThkNjhjODkzMTkwYTk2YmIwZTc4NTZiMTJjNAotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgMSAxNDo1MTozMCAyMDEwICswMTAwCi0KLSAgICBmZWNfbXhjOiBhZGQgc3VwcG9ydCBmb3IgTVg1MSBwcm9jZXNzb3IKLQotICAgIFRoZSBwYXRjaCBhZGQgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBteDUxIHByb2Nlc3NvcgotICAgIHRvIHRoZSBGRUMgZXRoZXJuZXQgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGU2NmIxOWNlNmRiZTZmOTFiMThiYTQ3MjczY2JlODllYjVhODBlNzgKLUF1dGhvcjogU2lkZGFydGggR29yZSA8Z29yZXNAbWFydmVsbC5jb20+Ci1EYXRlOglUdWUgSmFuIDE5IDExOjA5OjA3IDIwMTAgKzA1MzAKLQotICAgIE5FVDoga2lya3dvb2QtZWdpZ2Egc21pIGFjY2VzcyBmaXgKLQotICAgIEFsdGhvdWdoIHRoZSBkYXRhc2hlZXQgbWVudGlvbnMgc2VwZXJhdGUgc21pIHJlZ2lzdGVycyBmb3IgZWFjaAotICAgIHBvcnQsIHVzaW5nIFBvcnQgMSBzbWkgcmVnaXN0ZXIgdG8gYWNjZXNzIGV0aGVybmV0IHBoeXMgZG9lcyBub3QKLSAgICB3b3JrLiBIZW5jZSBvbmx5IFBvcnQgMCBzbWkgcmVnaXN0ZXIgc2hvdWxkIGJlIHVzZWQgdG8gYWNjZXNzIGFsbAotICAgIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBzbWkgYnVzLiBUaGlzIGJlaGF2aW9yIGlzIGNvbnNpc3RhbnQgd2l0aAotICAgIHRoZSBtdjY0M3h4IGRyaXZlciBpbiB0aGUgbGludXgga2VybmVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2lkZGFydGggR29yZSA8Z29yZXNAbWFydmVsbC5jb20+Ci0gICAgQWNrZWQtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYTFiMzIyYTk4MzE5ZGU1NjhiM2JjMzgwMjllZjdlMTIzNjQzYzFlOAotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglNb24gRmViIDEgMjM6MzQ6MjUgMjAxMCArMDEwMAotCi0gICAgbnMxNjU1MDoga2ljayB3YXRjaGRvZyB3aGlsZSB3YWl0aW5nIGZvciBhIGNoYXJhY3RlcgotCi0gICAgbnMxNjU1MCBidXN5bG9vcHMgd2FpdGluZyBmb3IgaW5jb21pbmcgYnl0ZSBjYXVzaW5nIHdhdGNoZG9nIHRvIHJlYm9vdAotICAgIHdoaWxlIHdhaXRpbmcgZm9yIGEga2V5IHByZXNzLiBBIGNhbGwgdG8gV0FUQ0hET0dfUkVTRVQgaW4gTlMxNjU1MF9nZXRjCi0gICAgbG9vcCBmaXhlcyBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotY29tbWl0IDg0ZDM2YjMwMTgxYWNmYjcyZjIyZDExMDVjMTU1NzRiMzBlYTJmYTEKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglNb24gRmViIDEgMTk6NDA6NDcgMjAxMCArMDEwMAotCi0gICAgVVNCOiB1c2JfY29udHJvbF9tc2cgd2FpdCBmb3IgZHJpdmVyIElTUiB0byBzZXQgc3RhdHVzLgotCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHVzYl9jb250cm9sX21zZyBiYWNrIHRvIHRoZSBzdGF0ZSBwcmlvciB0byBjb21taXQKLSAgICA0ODg2NzIwODQ0NGNiMmE4MmUyYWY5YzMyNDllOTBiN2VkNGExNzUxLgotCi0gICAgVGhlIFVTQiBkcml2ZXIgSVNSIHJvdXRpbmUgbWF5IHVwZGF0ZSB0aGUgc3RhdHVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotCi1jb21taXQgNmUyMGU2NGY1YzZkZWI1YjQ4ZTQwYTBjYmE0ODc3ZjkxNzA1NDVlMAotQXV0aG9yOiBQcmF0aGFwIFNyaW5pdmFzIDxtc3ByYXRoYXBAdGkuY29tPgotRGF0ZToJTW9uIEphbiAxMSAxNTozNjo0NiAyMDEwICswNTMwCi0KLSAgICBtdXNiOiBBZGQgaG9zdCBzdXBwb3J0IGZvciBETTM2NSBFVk0KLQotICAgIEFkZCBzdXBwb3J0IGZvciBtdXNiIGhvc3Qgb24gRE0zNjUgRVZNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhdGhhcCBTcmluaXZhcyA8bXNwcmF0aGFwQHRpLmNvbT4KLQotY29tbWl0IGVjMmFhZGI0MDg1NWNlY2IwODhiNjhjMDYyZTM1MzRkNmNlMzkxMjgKLUF1dGhvcjogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTkgMDA6MTA6NDIgMjAxMCAtMDUwMAotCi0gICAgdXNiOiBtdXNiOiBmaXggQmxhY2tmaW4gRE1BIHJlZ2lzdGVyIHBhZGRpbmcKLQotICAgIFRoZSBjb252ZXJzaW9uIGZyb20gb2Zmc2V0cyB0byBDIHN0cnVjdHMgbG9zdCBhIGxpdHRsZSBwYWRkaW5nIGluIHRoZSBETUEKLSAgICByZWdpc3RlciBtYXAuICBBY2Nlc3NpbmcgZW5kcG9pbnRzIG90aGVyIHRoYW4gZXAwIHdpdGggRE1BIHdvdWxkIGZhaWwgYXMKLSAgICB0aGUgYWRkcmVzc2VzIHdvdWxkbid0IGJlIGFkanVzdGVkIGNvcnJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IENsaWZmIENhaSA8Y2xpZmYuY2FpQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZDA3NTBiYzllNTkzMmJhZjRjOTBlZGEyNDU2MTA2ZjIxYTI2YmRjMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEZlYiAxIDExOjM2OjI5IDIwMTAgKzAxMDAKLQotICAgIEVYQklUR0VOOiBkcm9wIHN1cHBvcnQgZm9yIHVubWFpbnRhaW5lZCBib2FyZAotCi0gICAgVGhlIEVYQklUR0VOIGJvYXJkIGhhcyBub3QgYmVlbiBtYWludGFpbmVkIGZvciBhIGxvbmcgdGltZTsgaXQgaGFzCi0gICAgYnVpbGQgcHJvYmxlbXMsIGJ1dCBubyBoYXJkd2FyZSBpcyBhdmFpbGFibGUgYW55IG1vcmUgZm9yIHRlc3RpbmcuCi0KLSAgICBEcm9wIHN1cHBvcnQgZm9yIHRoaXMgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5NDYxYTkzOWNhYmQ2MDZkN2YwZTliODQ5MGI0MDg0MWFmMTA0ZmY1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSmFuIDMxIDIyOjAzOjE1IDIwMTAgKzAxMDAKLQotICAgIG1wYzV4eHgvY3B1X2luaXQuYzogZml4IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnY2RtJwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCAxM2Q4YmZlMjZjMGRkMmMwOGI3NmM1ZjA3N2U4MDBhNzE4ODU5YmJjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSmFuIDMxIDIxOjU4OjQ4IDIwMTAgKzAxMDAKLQotICAgIG1wYzV4eHgvY3B1X2luaXQuYzogZml4IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZ3B0MCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgNDcxMGNlZTFiNTI5MmZlMDc3YTY3Y2MyMzE5M2NjNDMwNjBmYmUzZAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJTW9uIEZlYiAxIDEzOjU0OjA5IDIwMTAgKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBmZWF0dXJlIGZyb20gQVI0MDUgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYnVpbGRpbmcgZm9yIEFSNDA1IGJvYXJkcyBieSByZW1vdmUgYW4gdW51c2VkIGZlYXR1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDk3NmMyMWFkOGUxMzZkZjBlYzM2MWFjYTBjNGJjMjg3YzU2MzdjMDEKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CU1vbiBGZWIgMSAxMzo1Mzo1OSAyMDEwICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBidWlsZGluZyBmb3IgUExVNDA1IGJvYXJkcwotCi0gICAgVGhlIGluaXRfY291cGxlcigpIGZ1bmN0aW9uIGZyb20gYm9hcmQvZXNkL3BsdTQwNS9wbHU0MDUuYwotICAgIGdvdCBsb3N0IHNvbWVob3chIFRoaXMgcGF0Y2ggcmVhZGRzIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1OWMxZGI2ZGFiNTJiOTgxZTZlYTI1YTIwM2QwYTkxOWVkZTYxZWQyCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglNb24gRmViIDEgMTM6NTM6NDcgMjAxMCArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggYnVpbGRpbmcgb2YgUE1DNDQwIGJvYXJkCi0KLSAgICBSZW1vdmUgc29tZSB1bnVzZWQgZmVhdHVyZXMgYW5kIGRlZmF1bHQgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICB0byBzaHJpbmsgdGhlIFBNQzQ0MCB1LWJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZmNmMyNmU0MzBmZmFlODdiNmIzZDc0YmE3Y2JmOTQzOTcwM2ZlZWEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEphbiAyNiAxMzozMzoyOSAyMDEwICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiBlcnJvciBvbiBNTDIgYm9hcmQKLQotICAgIFJlY2VudGx5IHRoaXMgY29tcGlsYXRpb24gZXJyb3Igb2NjdXJzOgotCi0gICAgQ29uZmlndXJpbmcgZm9yIE1MMiBib2FyZC4uLgotICAgIHRyYXBzLmM6IEluIGZ1bmN0aW9uICdNYWNoaW5lQ2hlY2tFeGNlcHRpb24nOgotICAgIHRyYXBzLmM6MTU5OiBlcnJvcjogJ2RlYnVnZ2VyX2V4Y2VwdGlvbl9oYW5kbGVyJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UKLQlpbiB0aGlzIGZ1bmN0aW9uKQotICAgIHRyYXBzLmM6MTU5OiBlcnJvcjogKEVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZQotICAgIHRyYXBzLmM6MTU5OiBlcnJvcjogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pCi0KLSAgICBUaGlzIHBhdGNoIG5vdyBmaXhlcyBpdCBieSBpbmNsdWRpbmcga2dkYi5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmM2RlYzc5OGQ5ZWJmN2YxN2MxMWVjNzY3MWI5NzljZTNkMjUxOTU1Ci1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLURhdGU6CVRodSBKYW4gMjggMTI6Mjc6MTQgMjAxMCArMDEwMAotCi0gICAgQ0ZJOiBmaXggZXJhc2VyZWdpb25zIG51bWJsb2NrcwotCi0gICAgZXJhc2VyZWdpb25zIG51bWJsb2NrcyB3YXMgc29tZXRpbWVzIG9uZSBsZXNzIHRoYW4gYWN0dWFsLCBwb3NzaWJseSBwcm9kdWNpbmcKLSAgICBlcmFzZSByZWdpb25zIHdpdGggemVybyBibG9ja3MuIEFzIE1URCBjb2RlIHRvdWNoZXMgZXJhc2VyZWdpb25zIG9ubHkgaWYKLSAgICBudW1lcmFzZXJlZ2lvbnMgaXMgZ3JlYXRlciB0aGF0IHplcm8sIGFsbG9jYXRlIGVyYXNlcmVnaW9ucyBvbmx5IGZvciBub24KLSAgICB1bmlmb3JtIGVyYXNlIHNpemUgZmxhc2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzA0MWU5ZDIxMjE2MmY2Yzg1Y2QzYjZhNDBhZDZiYTlkOTI5MjQ1MQotQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxqc19hdF9uZ0BzY2hhcnNvZnQuZGU+Ci1EYXRlOglTYXQgSmFuIDIzIDEyOjAzOjQ1IDIwMTAgKzAxMDAKLQotICAgIG5ldyBhdDkxX2VtYWMgbmV0d29yayBkcml2ZXIgKE5FVF9NVUxUSSBhcGkpCi0KLSAgICAqIGFkZCdzIGF0OTFfZW1hYyAoQVQ5MVJNOTIwMCkgbmV0d29yayBkcml2ZXIgKE5FVF9NVUxUSSBhcGkpCi0gICAgKiBlbmFibGUgZHJpdmVyIHdpdGggQ09ORklHX0RSSVZFUl9BVDkxRU1BQwotICAgICogZ2VuZXJpYyBQSFkgaW5pdGlhbGl6YXRpb24KLSAgICAqIG1vZGlmeSBBVDkxUk05MjAwIGJvYXJkcyB0byB1c2UgTkVUX01VTFRJIGRyaXZlcgotICAgICogdGhlIGRyaXZlcnMgaGFzIGJlZW4gdGVzdGVkIHdpdGggTFhUOTcxIFBoeSBhbmQgRE05MTYxIFBoeSBhdAotICAgICAgTUlJIGFuZCBSTUlJIGludGVyZmFjZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8anNfYXRfbmdAc2NoYXJzb2Z0LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1OTRkNTdkMGNjY2U2NDlkNmNjZDg4MWI4ZDljNWVhOGQwYzMwN2VmCi1BdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci1EYXRlOglTdW4gSmFuIDMxIDE3OjM5OjQ5IDIwMTAgKzAxMDAKLQotICAgIEFkZCBFUDkzeHggZXRoZXJuZXQgZHJpdmVyCi0KLSAgICBBZGRlZCBldGhlcm5ldCBkcml2ZXIgZm9yIEVQOTN4eCBTb0NzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1ODJjNTVhMDI3NGYzOGU2ZTdlMzViOTVlN2FiODFkM2U5MTJmNzAwCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyMCAwOTowNDoyOCAyMDEwICswMTAwCi0KLSAgICA4M3h4LCB1ZWM6IHNwbGl0IGVuZXRfaW50ZXJmYWNlIGluIHR3byB2YXJpYWJsZXMKLQotICAgIFRoZXJlJ3Mgbm8gc2Vuc2libGUgcmVhc29uIHRvIHVuaXRlIHNwZWVkIGFuZCBpbnRlcmZhY2UgdHlwZSBpbnRvCi0gICAgb25lIHZhcmlhYmxlLiAgU28gc3BsaXQgdGhpcyB2YXJpYWJsZSBlbmV0X2ludGVyZmFjZSBpbnRvIHR3bwotICAgIHZhcnM6IGVuZXRfaW50ZXJmYWNlX3R5cGUsIHdoaWNoIGhvbGQgdGhlIGludGVyZmFjZSB0eXBlIGFuZCBzcGVlZC4KLQotICAgIEFsc286IGFkZCB0aGUgcG9zc2liaWxpdHkgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIDEwIGFuZCAxMDAgTUJpdAotICAgIGludGVyZmFjZXMgb24gdGhlIGZseSwgd2hlbiBydW5uaW5nIGluIEZBU1RfRVRIIG1vZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZDdlMzU0Mzc0YzhlYjBhNWQ4YjgyMjZiODgxYzVlZTI3NmM3N2E2MAotQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLURhdGU6CUZyaSBEZWMgMTggMTM6MzM6MDcgMjAwOSArMDAwMAotCi0gICAgVEk6IERhVmluY2k6IFVwZGF0aW5nIEVNQUMgZHJpdmVyIGZvciBETTM2NSwgRE02NDZ4IGFuZCBEQThYWAotCi0gICAgVGhlIEVNQUMgSVAgb24gRE0zNjUsIERNNjQ2eCBhbmQgREE4MzAgaXMgc2xpZ2h0bHkgZGlmZmVyZW50Ci0gICAgZnJvbSB0aGF0IG9uIERNNjQ0eC4gVGhpcyBjaGFuZ2UgdXBkYXRlcyB0aGUgRGFWaW5jaSBFTUFDIGRyaXZlcgotICAgIHNvIHRoYXQgRU1BQyBiZWNvbWVzIG9wZXJhdGlvbmFsIG9uIFNPQ3Mgd2l0aCBFTUFDIHYyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDBmNzUxZDZlZjNlNmZiMWQyOGFjMjcyYzM5YzM0ODMxZDYyOWE1OWUKLUF1dGhvcjogU2VtaWggSGF6YXIgPHNlbWloLmhhemFyQGluZGVmaWEuY29tPgotRGF0ZToJVGh1IERlYyAxNyAxNTowNzoxNSAyMDA5ICswMjAwCi0KLSAgICBtYWNiOiBGaXggbWlpX3BoeV9yZWFkIGFuZCBtaWlfcGh5X3dyaXRlIGZ1bmN0aW9ucwotCi0gICAgRW5hYmxpbmcgQ09ORklHX0NNRF9NSUkgaW4gQVZSMzIgYm9hcmRzIHdhcyBub3QgcG9zc2libGUgZHVlIHRvCi0gICAgY29tcGlsZSBlcnJvcnMuCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIG1paXBoeV9yZWFkIGFuZCBtaWlwaHlfd3JpdGUgZnVuY3Rpb25zIGFuZAotICAgIHJlZ2lzdGVycyB0aGVtIHByb3Blcmx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VtaWggSGF6YXIgPHNlbWloLmhhemFyQGluZGVmaWEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1ZjZiMTQ0MjIxOGZjYjZhM2VmMGQyYmUwNWQ4NDExOWNlYmZlMGFlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gTm92IDkgMTM6MDk6NDggMjAwOSAtMDYwMAotCi0gICAgdHNlYzogQWRkIFRTRUNfRklCRVIgZmxhZwotCi0gICAgVGhlIFRTRUNfRklCRVIgZmxhZyBzaG91bGQgYmUgc2V0IHdoZW4gYSBQSFkgaXMgb3BlcmF0aW5nIHdpdGggYW4KLSAgICBleHRlcm5hbCBmaWJlciBpbnRlcmZhY2UuICBDdXJyZW50bHkgaXQgaXMgb25seSB1c2VkIHRvIG5vdGlmeSBhIHVzZXIKLSAgICB0aGF0IHRoZSBQSFkgaXMgb3BlcmF0aW5nIGluIGZpYmVyIG1vZGUuCi0KLSAgICBBIHNob3J0IGRlc2NyaXB0aW9uIHdhcyBhbHNvIGFkZGVkIHRvIHRoZSBvdGhlciBUU0VDIGZsYWcgZGVmaW5lcyBzbwotICAgIHRoYXQgaXQgaXMgY2xlYXIgaG93IHRoZXkgZGlmZmVyIGZyb20gb25lIGFub3RoZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4YWJiOGRjYzhkNmYyYTllMzE1NTFhNmZhNDFkZTk3YmQxZjE1MzUwCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gTm92IDkgMTM6MDk6NDcgMjAwOSAtMDYwMAotCi0gICAgdHNlYzogQWRkIHN1cHBvcnQgZm9yIHVzaW5nIHRoZSBCQ001NDgyIFBIWSBpbiBmaWJlciBtb2RlCi0KLSAgICBUaGUgQkNNNTQ4MiBQSFkgc3VwcG9ydHMgYm90aCBjb3BwZXIgYW5kIGZpYmVyIGFzIGFuIGV0aGVybmV0IG1lZGl1bS4KLSAgICBCeSBlbmFibGluZyBpdHMgY29wcGVyL2ZpYmVyIG1vZGUgYXV0by1kZXRlY3Rpb24gZmVhdHVyZSBpdCBjYW4KLSAgICBkeW5hbWljYWxseSBkZXRlcm1pbmUgaWYgaXQgc2hvdWxkIGJlIGNvbmZpZ3VyZWQgZm9yIGNvcHBlciBvciBmaWJlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGM2ZGJkZmRhNTM5M2MxNTViYjEzYTkwZDlkNmJlNGZlNzVlYzM0OTgKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBOb3YgOSAxMzowOTo0NiAyMDA5IC0wNjAwCi0KLSAgICB0c2VjOiBHZW5lcmFsIGNsZWFudXAKLQotICAgIC0gQ2xlYW51cCBmb3JtYXR0aW5nIG9mIHBoeV9pbmZvIHN0cnVjdHVyZXMKLQotICAgIC0gRml4IGxpbmVzID4gODAgY2hhcnMKLQotICAgIC0gRml4IHNvbWUgcmFuZG9tIGluZGVudGF0aW9uIGluY29uc2lzdGVuY2llcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZTE5NTdlZjAyYzBkOTQ5YzI3ZjczODZlNWZhNTA5YTU3ZTAzM2Q1YQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIE5vdiA5IDEzOjA5OjQ1IDIwMDkgLTA2MDAKLQotICAgIHRzZWM6IE1ha2UgZnVuY3Rpb25zL2RhdGEgc3RhdGljIHdoZW4gcG9zc2libGUKLQotICAgIFRoaXMgaXMgZ2VuZXJhbGx5IGdvb2QgcHJhY3RpY2UgYW5kIHNhdmVzIH4xNTAgYnl0ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyNzE2NWI1YzMyODQ2NGI3MDY2MDFiMWNkNTg2ZTM1OWEzZGMyZjZkCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gTm92IDkgMTM6MDk6NDQgMjAwOSAtMDYwMAotCi0gICAgdHNlYzogQ2xlYW4gdXAgQnJvYWRjb20gUEhZIHN0YXR1cyBwYXJzaW5nCi0KLSAgICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBwcmludGluZyAiRW5ldCBzdGFydGluZyBpbiA8c3BlZWQ+LzxkdXBsZXg+IgotCVRoaXMgc2FtZSBpbmZvcm1hdGlvbiBpcyBhbHJlYWR5IHByaW50ZWQgZHVyaW5nIG5vcm1hbCBldGhlcm5ldAotCW9wZXJhdGlvbiBpbiB0aGUgZm9ybSAiU3BlZWQ6IDEwMDAsIGZ1bGwgZHVwbGV4Ii4KLQotICAgIC0gQWRkIGEgY2hlY2sgZm9yIGxpbmsgYmVmb3JlIGRldGVybWluaW5nIGxpbmsgc3BlZWQgYW5kIGR1cGxleAotCUlmIHRoZXJlIGlzIG5vIGxpbmssIHNwZWVkL2R1cGxleCBkb24ndCBtYXR0ZXIuICBUaGlzIGFsc28gcmVtb3ZlcwotCXRoZSBhbm5veWluZyBhbmQgdW5uZWVkZWQgIkF1dG8tbmVnIGVycm9yLCBkZWZhdWx0aW5nIHRvIDEwQlQvSEQiCi0JbWVzc2FnZSB0aGF0IG9jY3VycyB3aGVuIG5vIGxpbmsgaXMgZGV0ZWN0ZWQuCi0KLSAgICAtIFdoaXRlc3BhY2UgYW5kIGxpbmUgPiA4MCBjaGFyYWN0ZXJzIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDQ2ZTkxNjc0ZmI0YjZkMDZjNmE0OTg0YzBiNWFjN2Q5YTE2OTIzZjQKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBOb3YgMyAxNzo1MjowNyAyMDA5IC0wNjAwCi0KLSAgICB0c2VjOiBGb3JjZSBUQkkgUEhZIHRvIDEwMDBNYnBzIGZ1bGwgZHVwbGV4IGluIFNHTUlJIG1vZGUKLQotICAgIEluIFNHTUlJIG1vZGUgdGhlIGxpbmsgYmV0d2VlbiBhIHByb2Nlc3NvcidzIGludGVybmFsIFRCSSBQSFkgYW5kIGFuCi0gICAgZXh0ZXJuYWwgUEhZIHNob3VsZCBhbHdheXMgYmUgMTAwME1icHMsIGZ1bGwgZHVwbGV4LiAgQWxzbywgdGhlIFNHTUlJCi0gICAgaW50ZXJmYWNlIGJldHdlZW4gYW4gaW50ZXJuYWwgVEJJIFBIWSBhbmQgZXh0ZXJuYWwgUEhZIGRvZXMgbm90Ci0gICAgc3VwcG9ydCBpbi1iYW5kIGF1dG8tbmVnb3RhdGlvbi4KLQotICAgIFByZXZpb3VzbHksIHdoZW4gY29uZmlndXJlZCBmb3IgU0dNSUkgbW9kZSBhIFRCSSBQSFkgd291bGQgYXR0ZW1wdCB0bwotICAgIHJlc3RhcnQgYXV0by1uZWdvdGF0aW9uIGR1cmluZyBpbml0aWFsaXp0aW9uLiAgVGhpcyBhdXRvLW5lZ290YXRpb24KLSAgICBiZXR3ZWVuIGEgVEJJIFBIWSBhbmQgZXh0ZXJuYWwgUEhZIHdvdWxkIGZhaWwgYW5kIHJlc3VsdCBpbiB1bnVzYWJsZQotICAgIGV0aGVybmV0IG9wZXJhdGlvbi4KLQotICAgIEZvcmNpbmcgdGhlIFRCSSBQSFkgYW5kIGFuZCBleHRlcm5hbCBQSFkgdG8gbGluayBhdCAxMDAwTWJwcyBmdWxsIGR1cGxleAotICAgIGluIFNHTUlJIG1vZGUgcmVzb2x2ZXMgdGhpcyBpc3N1ZSBvZiBhdXRvLW5lZ290YXRpb24gZmFpbGluZy4KLQotICAgIE5vdGUgdGhhdCAxME1icHMgYW5kIDEwME1icHMgb3BlcmF0aW9uIGlzIHN0aWxsIHBvc3NpYmxlIG9uIHRoZSBleHRlcm5hbAotICAgIHNpZGUgb2YgdGhlIGV4dGVybmFsIFBIWSBldmVuIHdoZW4gU0dNSUkgaXMgb3BlcmF0aW5nIGF0IDEwMDBNYnBzLgotICAgIFRoZSBTR01JSSBpbnRlcmZhY2Ugc3RpbGwgb3BlcmF0ZXMgYXQgMTAwME1icHMsIGJ1dCBlYWNoIGJ5dGUgb2YgZGF0YQotICAgIGlzIHJlcGVhdGVkIDEwMCBvciAxMCB0aW1lcyBmb3IgMTAvMTAwTWJwcyBhbmQgdGhlIGV4dGVybmFsIFBIWSBoYW5kbGVzCi0gICAgY29udmVydGluZyB0aGlzIGRhdGEgc3RyZWFtIGludG8gcHJvcGVyIDEwLzEwME1icHMgc2lnbmFsbGluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDc2NzcxZTU5NWFhMjY0MGRhOGM3YjVlYTgxYmQ5NTgzY2NkYWI4YTEKLUF1dGhvcjogU2V1bmdoeWVvbiBSaGVlIDxzZXVuZ2h5ZW9uQGxwbXRlYy5jb20+Ci1EYXRlOglNb24gTm92IDIgMDA6MDA6MDAgMjAwOSAtMDgwMAotCi0gICAgTkVUOiBGaXggTUFDIGFkZHIgaGFuZGxpbmcgZm9yIHNtYzkxMXgKLQotICAgIFRoaXMgcGF0Y2ggdHVybnMgb2ZmIE1BQyBhZGRyZXNzIG1pc21hdGNoIHdhcm5pbmcgd2hlbgotICAgIG9wdGlvbmFsIGVlcHJvbSBwcm9ncmFtbWVkIHdpdGggTUFDIGFkZHJlc3MgaXMgbm90IGF2YWlsYWJsZS4KLSAgICBJbiB0aGF0IGNhc2UsIHNtYzkxMXgncyBNQUMgYWRkcmVzcyByZWdpc3RlciBoYXMgaXRzIGRlZmF1bHQKLSAgICB2YWx1ZSBmZjpmZjpmZjpmZjpmZjpmZiBhbmQgaXQncyBub3QgYSB2YWxpZCBhZGRyZXNzLiBUaGlzCi0gICAgbWFrZXMgZXRoX2luaXRpYWxpemUoKSBzaG93IHRoZSB3YXJuaW5nIHdoaWNoIGhhcyBubwotICAgIG1lYW5pbmdmdWwgaW5mb3JtYXRpb24gd2hpbGUgZW52aXJvbm1lbnQgdmFyaWFibGUgZXRoYWRkcgotICAgIG92ZXJyaWRlcyB0aGUgYWRkcmVzcyByZWFkIGZyb20gdGhlIHJlZ2lzdGVyLiBJZiB0aGVyZSdzIG5vCi0gICAgZWVwcm9tIGFuZCB0aGUgdmFsdWUgb2YgTUFDIGFkZHJlc3MgcmVnaXN0ZXIgaXMgbm90IHZhbGlkCi0gICAgYWZ0ZXIgaW5pdGlhbGl6YXRpb24sIGRldi0+ZW5ldGFkZHIgaGFkIGJldHRlciBub3QgYmUgdXBkYXRlZAotICAgIGFuZCBtYWludGFpbiBpdHMgaW5pdGlhbCB2YWx1ZSAwMDowMDowMDowMDowMDowMCwgd2hpY2ggSQotICAgIHRoaW5rIGlzIHdoYXQgZXRoX2luaXRpYWxpemUoKSBleHBlY3RzLiBUaGlzIGlzIG5vdCBhIGJ1ZyBmaXguCi0gICAgRXZlbiB3aXRob3V0IHRoaXMgcGF0Y2gsIHRoZSBkcml2ZXIgd29ya3MgZmluZS4gSXQncyBqdXN0IGZvcgotICAgIGVuaGFuY2luZyB0aGUgd2F5IG9mIGRpc3BsYXlpbmcgbWVzc2FnZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXVuZ2h5ZW9uIFJoZWUgPHNldW5naHllb25AbHBtdGVjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMDdjOTY2MDY2Yjk3N2IyNGY0YjA4YjE2ODRlZWQxMzBmNDYzYjRjNgotQXV0aG9yOiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotRGF0ZToJVGh1IEphbiAyMSAyMjoxNjozNCAyMDEwICswMTAwCi0KLSAgICBjczg5MDBfaW5pdGlhbGl6ZSgpIGNsZWFudXAKLQotICAgIGNzODkwMF9pbml0aWFsaXplKCk6IHJlbW92ZSB1bmVjZXNzYXJ5IGNhbGxzIHRvIGZyZWUoKSBhbmQgZml4IG1lbW9yeSBsZWFrCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBLYWVobGNrZSA8bWF0dGhpYXNAa2FlaGxja2UubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjNDE2OGFmM2JhMDNjMTdhNzM3NTFiOThjMTI0YmJkMmUzZTFmNWIwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBKYW4gMjEgMDU6MDQ6NTkgMjAxMCAtMDUwMAotCi0gICAgc21jOTExMTFfZWVwcm9tOiBmaXggbGlua2luZyBlcnJvcgotCi0gICAgQnVpbGRpbmcgZm9yIGEgYmY1MzMtc3RhbXAgZW5kcyB1cCB3aXRoIHRoaXMgZXJyb3I6Ci0gICAgc21jOTExMTFfZWVwcm9tLm86IEluIGZ1bmN0aW9uIGBzbWM5MTExMV9lZXByb20nOgotICAgIGV4YW1wbGVzL3N0YW5kYWxvbmUvc21jOTExMTFfZWVwcm9tLmM6NTg6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYG1lbXNldCcKLSAgICBtYWtlWzJdOiAqKiogW3NtYzkxMTExX2VlcHJvbV0gRXJyb3IgMQotCi0gICAgVGhlIG5ldyBldGhfc3RydWN0IGRlZmluaXRpb24gbWVhbnMgZ2NjIGhhcyB0byB6ZXJvIG91dCB0aGUgc3RydWN0dXJlIG9uCi0gICAgdGhlIHN0YWNrLCBhbmQgc29tZSBnY2MgdmVyc2lvbnMgb3B0aW1pemUgdGhpcyB3aXRoIGFuIGltcGxpY2l0IGNhbGwgdG8KLSAgICBtZW1zZXQuICBTbyB0d2VhayB0aGUgc3RydWN0dXJlIHN0eWxlIHRvIGF2b2lkIHRoYXQgZ2NjIGZlYXR1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDVmNTY2ZjQ1NDc1MGJlNGYyZjgzMjg4ZWYzODJhZmNiOWM0YWE4YTQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKYW4gMzEgMjE6NTE6NDMgMjAxMCArMDEwMAotCi0gICAgY21kX3hpbWcuYzogZml4IGVycm9yOiAnaScgdW5kZWNsYXJlZAotCi0gICAgRml4IGNvbXBpbGUgZXJyb3I6Ci0KLQljbWRfeGltZy5jOiBJbiBmdW5jdGlvbiAnZG9faW1nZXh0cmFjdCc6Ci0JY21kX3hpbWcuYzoyMzQ6IGVycm9yOiAnaScgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0JY21kX3hpbWcuYzoyMzQ6IGVycm9yOiAoRWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlCi0JY21kX3hpbWcuYzoyMzQ6IGVycm9yOiBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluLikKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhNmU0MmVkMDk3MjIwYTgyODcwYTMyZjRlNjBhYzg4NjNhOGIwNWFiCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVNhdCBEZWMgMTIgMjE6MjA6NTcgMjAwOSArMDEwMAotCi0gICAgbGNkOiByZW1vdmUgQ09ORklHX0FUTUVMX0xDRCBpZmRlZnMgZnJvbSBsY2Rfc2V0Zmdjb2xvcgotCi0gICAgTm90IGFsbCBib2FyZHMgZGVmaW5pbmcgTENEX0NPTE9SMTYgYXJlIGFibGUgdG8gc2V0Ci0gICAgbGNkX2NvbG9yX2ZnL2xjZF9jb2xvcl9iZyBjb3JyZWN0bHkuIFRoZSBpc3N1ZSBzZWVtcyB0bwotICAgIGJlIGNhdXNlZCBieSBDT05GSUdfQVRNRUxfTENEIGlmZGVmcyBpbiBsY2Rfc2V0Zmdjb2xvcigpCi0gICAgYW5kIGxjZF9zZXRiZ2NvbG9yKCkuIEFjdHVhbGx5LCB0aGUgY29sb3IgdmFsdWVzIHBhc3NlZAotICAgIHRvIHRoZXNlIGZ1bmN0aW9ucyBhcmUgYWxyZWFkeSBjb3JyZWN0LCB3ZSBkb24ndCBuZWVkCi0gICAgdG8gZml4IHRoZW0uIFNvIHJlbW92ZSBpZmRlZnMgaGVyZS4KLQotICAgIFJlcG9ydGVkLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGQ4NDE5NzhlYTYxNmU2NjFlNDhmOGRhNDA0NWE3MWQ2MjE3ODIzYmQKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLURhdGU6CVNhdCBEZWMgNSAxMzozOTo0MSAyMDA5ICswMTAwCi0KLSAgICBpbmNsdWRlL25vbWFkaWsuaDogYWRkIHBoeXNpY2FsIGFkZHJlc3MgZm9yIGNsZGMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci0gICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgotCi1jb21taXQgM2U0NDZjYmRmMzAyMjFiOWNhM2E4OWIwZjVhYmJmYzY5MWNlNzc1NQotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotRGF0ZToJU2F0IERlYyA1IDEzOjM5OjMxIDIwMDkgKzAxMDAKLQotICAgIHZpZGVvOiBhZGQgYW1iYS1jbGNkIHByaW1lLWNlbGwKLQotICAgIFRoaXMgYWRkcyBzdXBwb3J0IGZvciB0aGUgQ0xDRCBsb2dpYyBjZWxsLiBJdCBhY2NlcHRzIHByZWNvbXBpbGVkCi0gICAgcmVnaXN0ZXIgdmFsdWVzIGZvciBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHRocm91Z2ggYSBib2FyZC1zdXBwbGllZAotICAgIGRhdGEgc3RydWN0dXJlLiAgSXQgaXMgdXNlZCBieSB0aGUgTm9tYWRpayBuaGs4ODE1LCBhZGRlZCBieSBhIGxhdGVyCi0gICAgcGF0Y2ggaW4gdGhpcyBzZXJpZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KLQotY29tbWl0IGIwODFjMmU5YjkzMjlkN2RhZGM4ZDEzZmM5YTJiYWU1YzkwYTEyMDQKLUF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci1EYXRlOglUdWUgSmFuIDI2IDE5OjI0OjE4IDIwMTAgLTA3MDAKLQotICAgIE5hbmQgbXhjX25hbmQgYWRkIHYxLjEgY29udHJvbGxlciBzdXBwb3J0Ci0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdmVyc2lvbiAxLjEgb2YgdGhlIG5mYyBuYW5kIGZsYXNoCi0gICAgY29udHJvbGxlciB3aGljaCBpcyBvbiB0aGUgaS5teDI1IHNvYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgotICAgIENDOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGYzYmI2M2EzMDRjNGU3NjAxMGEyYTRlOTlkYTYxZjdiNmZmZmZjNzcKLUF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci1EYXRlOglUdWUgSmFuIDI2IDE5OjI0OjE3IDIwMTAgLTA3MDAKLQotICAgIEFkZCBNWDI1IHN1cHBvcnQgdG8gbmFuZF9zcGwgZnNsIG5mYyBkcml2ZXIKLQotICAgIE1YMjUgaGFzIGEgZGlmZmVyZW50IHZlcnNpb24gb2YgdGhlIGZzbF9uZmMKLSAgICBmbGFzaCBjb250cm9sbGVyIGtub3duIGFzIHZlcnNpb24gMS4xLgotCi0gICAgQWRkIHN1cHBvcnQgdG8gdGhlIG5hbmRfc3BsIGZzbF9uZmMgZHJpdmVyCi0KLSAgICBWZXJzaW9uaW5nIGRpZmZlcnMgZnJvbSBtYWlubGluZSBteGMga2VybmVsIGRyaXZlcgotICAgIG5vIGNvbnNlbnN1cyB5ZXQgb24gaWYgdGhlIG5hbWluZyBoZXJlIGFuZCBpbgotICAgIFJlZGJvb3Qgb3IgdGhlIGtlcm5lbCBpcyAiY29ycmVjdCIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENDOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVmMjJiNTAzNzBmN2I2ZDhkZWJhOWU5ZTY0ZDJjYjEzYzU0MmI2NDcKLUF1dGhvcjogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci1EYXRlOglNb24gSmFuIDI1IDIzOjEyOjUyIDIwMTAgLTA3MDAKLQotICAgIGFybTkyNmVqczogYWRkIG5hbmRfc3BsIGJvb3Qgc3VwcG9ydAotCi0gICAgQWRkIENPTkZJR19QUkVMT0FERVIvQ09ORklHX05BTkRfU1BMIHN1cHBvcnQgZm9yIG5hbmQgYm9vdGluZwotICAgIHRvIGFybTkyNmVqcy9zdGFydC5TCi0KLSAgICBUaGlzIGlzIGRlcml2ZWQgZnJvbSBDT05GSUdfUFJFTE9BREVSIHN1cHBvcnQgaW4gYXJtMTEzNi9zdGFydC5TCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBDQzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxNWI4NmMzZDZjOWE1YTJlOTE3YjczZDc1OGE1NTY1Njg0MzAwMjFhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgSmFuIDE2IDIxOjUwOjI2IDIwMTAgLTA3MDAKLQotICAgIGVudl9uYW5kLmM6IHByaW50IGVycm9yIG1lc3NhZ2UgYW5kIGZhaWwgZ3JhY2VmdWxseQotCi0gICAgZW52X25hbmQuYyB3b3VsZCBjcmFzaCBzaWxlbnRseSBpZiBhIG1hbGxvYygpIGZvciB0aGUgZW52aXJvbm1lbnQKLSAgICBidWZmZXJzIGZhaWxlZDsgbWFrZSBpdCBwcmludCBhbiBlcnJvciBtZXNzYWdlIGFuZCBmYWlsIGdyYWNlZnVsbHksCi0gICAgaS4gZS4gdXNlIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IHRoZW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLQotY29tbWl0IDY3NGVmN2JkMDJkZTk0OGI2ZDg3NTdmNmE0M2E2ZjJmYTRkODg3NjkKLUF1dGhvcjogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKYW4gMTggMTk6MDM6MjggMjAxMCArMDgwMAotCi0gICAgTmFuZCBib290OiBBZGQgbmFuZCBib290IHN1cHBvcnQgZm9yIE1QQzg1NjltZHMgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkIG5hbmQgYm9vdCBzdXBwb3J0IGZvciBNUEM4NTY5bWRzIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI0OWQ0ZGVjNjllOGQ0MWNhNThmZTZjYjNjNTZlYTZmMDQ4MGVmMTYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMjcgMTA6MTY6NTYgMjAxMCAtMDYwMAotCi0gICAgRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gaW14aW1hZ2UuYyBkdWUgdG8gZ2V0bGluZSBwcm90b3R5cGUKLQotICAgIGlteGltYWdlLmM6IEluIGZ1bmN0aW9uICdpbXhpbWFnZV9wYXJzZV9jZmdfZmlsZSc6Ci0gICAgaW14aW1hZ2UuYzoxNDI6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdnZXRsaW5lJwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGE5YzNhYzc4ZDgxZDdmZjRmZTIzOWUyOTJlMTFlMGY3OGFjNWQ0NjEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBKYW4gMTIgMTI6NTY6MDUgMjAxMCAtMDYwMAotCi0gICAgODV4eDogQWRkIHN1cHBvcnQgZm9yICdjcHUgZGlzYWJsZScgY29tbWFuZAotCi0gICAgU3VwcG9ydCBkaXNhYmxpbmcgb2YgYSBjb3JlIHZpYSB1c2VyIGNvbW1hbmQgJ2NwdSBkaXNhYmxlJy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjODk0ODUyYjdhYTJhYzVmMDRjYTcwYTA3M2Y4MDNhYTY2NWMzZWMxCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgSmFuIDEyIDExOjUxOjUyIDIwMTAgLTA2MDAKLQotICAgIDg2eHg6IEFkZCBzdXBwb3J0IGZvciAnY3B1IGRpc2FibGUnIGNvbW1hbmQKLQotICAgIFN1cHBvcnQgZGlzYWJsaW5nIG9mIGEgY29yZSB2aWEgdXNlciBjb21tYW5kICdjcHUgZGlzYWJsZScuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDE5NGIzNjY4YTkzZWVlMThkZDFmN2ViMTMwOWNhN2IwNTAwM2FhNwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEphbiAxMiAxMTo0Mjo0MyAyMDEwIC0wNjAwCi0KLSAgICBBZGQgc3VwcG9ydCB0byBkaXNhYmxlIGNwdSdzIGluIG11bHRpY29yZSBwcm9jZXNzb3JzCi0KLSAgICBBZGQgYSBkaXNhYmxlIHN1Yi1jb21tYW5kIHRvIHRoZSBjcHUgY29tbWFuZCB0aGF0IGFsbG93cyBmb3IgZGlzYWJsaW5nCi0gICAgY29yZXMgaW4gbXVsdGljb3JlIHByb2Nlc3NvcnMuICBUaGlzIGNhbiBiZSB1c2VmdWwgZm9yIHN5c3RlbXMgdGhhdCBhcmUKLSAgICB1c2luZyBtdWx0aWNvcmUgY2hpcHMgYnV0IGFyZW4ndCB1dGlsaXppbmcgYWxsIHRoZSBjb3JlcyBhcyBhIHdheSB0bwotICAgIHJlZHVjZSBwb3dlciBhbmQgcG9zc2libHkgaW1wcm92ZSBwZXJmb3JtYW5jZS4KLQotICAgIEFsc28gdXBkYXRlZCBhbiBhZGRlZCBtaXNzaW5nIGNvcHlyaWdodC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4YjE3NjBlZDlhMzVhNWZkNzFkMWY2NDk4MTA2OGNhMjk3OWYxZTNkCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyMCAwOTowNTozMiAyMDEwICswMTAwCi0KLSAgICA4M3h4LCBrbWV0ZXIxOiBmaXggY29tcGlsZSBlcnJvcgotCi0gICAgLSBkZWxldGUgZG91YmxlIE1URElEU19ERUZBVUxUIGFuZCBNVERQQVJUU19ERUZBVUxUCi0gICAgICBkZWZpbmVzIGluIGJvYXJkIGNvbmZpZyBmaWxlLgotICAgIC0gYWRkIG1pc2luZyBDT05GSUdfS01fVUJJX1BBUlRJVElPTl9OQU1FIGRlZmluZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDU5MTJkMzY1MDc0MDQ2ODMyOWEwZGYwMTQxMDkxMzI0MzFkMjE0MGQKLUF1dGhvcjogV29sZmdhbmcgV2VnbmVyIDx3LndlZ25lckBhc3Ryby1rb20uZGU+Ci1EYXRlOglUaHUgRGVjIDEwIDEwOjExOjIxIDIwMDkgKzAxMDAKLQotICAgIGFkZCBhYmlsaXR5IHRvIGhhbmRsZSBjb21wcmVzc2VkIGltYWdlcyB0byBpbXh0cmFjdAotCi0gICAgaW14dHJhY3QgY3VycmVudGx5IGNhbiBub3QgaGFuZGxlIGNvbXByZXNzZWQgaW1hZ2VzLiBUaGlzIHBhdGNoIGFkZHMKLSAgICBoYW5kbGluZyBmb3IgYnppcDIgYW5kIHppcCBjb21wcmVzc2lvbi4gSW4gYm90aCBjYXNlcywgYSBkZXN0aW5hdGlvbgotICAgIGFkZHJlc3MgaGFzIHRvIGJlIHNwZWNpZmllZCBmb3IgZXh0cmFjdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgotCi1jb21taXQgYTE2ZTlhNWI1ZjIzMTA2NjY1ZGRlMTVkOTc0ZGIxN2U4YWViODNmMQotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVR1ZSBKYW4gMTkgMTQ6NDE6NTcgMjAxMCArMDEwMAotCi0gICAgcHBjOiByZW1vdmUgLWZmaXhlZC1yMTQgZ2NjIG9wdGlvbi4KLQotICAgIFRoaXMgaXMgbm8gbG9nZXIgbmVlZGVkLCBmcmVlIHVwIHIxNCBmb3IgZ2VuZXJhbCB1c2FnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgZTZiZWU4MDgxNGMzYTBkN2VhYjg5ZDI4MTQyZmU2OGM0YTY3MGYzMQotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVR1ZSBKYW4gMTkgMTQ6NDE6NTggMjAxMCArMDEwMAotCi0gICAgcHBjOiBVcGRhdGUgUkVBRE1FIGFib3V0IHRoZSBuZXcgR09UIHB0ci4KLQotICAgIHIxNCBpcyBubyBsb25nZXIgdXNlZCBhcyBub24gdm9sYXRpbGUgR09UIHB0ci4gSW5zdGVhZAotICAgIHRoZSB2b2xhdGlsZSByMTIgaXMgdXNlZCBzbyBiZSBzdXJlIHRvIGRvIEdFVF9HT1QgaW4KLSAgICBhc20gY29kZSB3aGVuIHlvdSBuZWVkIHRvIGFjY2VzcyBnbG9iYWwgZGF0YS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgMGY4YWExNTkxNzUzODVkZGQ3N2JjOTFkMTFiOTU2ODU4M2ZiYmQwYwotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVR1ZSBKYW4gMTkgMTQ6NDE6NTYgMjAxMCArMDEwMAotCi0gICAgcHBjOiBVc2UgcjEyIGluc3RlYWQgb2YgcjE0IGFzIEdPVCBwb2ludGVyLgotCi0gICAgcjE0IGlzIG5vdCBzdXBwb3NlZCB0byBiZSBjbG9iYmVyZWQgYnkgZnVuY3Rpb25zLiBTd2l0Y2gKLSAgICB0byByMTIgYW5kIGNhbGwgR0VUX0dPVCB3aGVuIG5lZWRlZC4gVGhpcyB3aWxsIGFsbG93IHUtYm9vdAotICAgIHRvIGxvb3NlIHRoZSAtZmZpeGVkLXIxNCBnY2Mgb3B0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci0KLWNvbW1pdCBmYzRlMTg4Nzg5YjAxZGM5ZjE4YzgwODY5YzQzZmRkN2QxYTUxMzc4Ci1BdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotRGF0ZToJVHVlIEphbiAxOSAxNDo0MTo1NSAyMDEwICswMTAwCi0KLSAgICBwcGM6IExvb3NlIEdPVCBhY2Nlc3MgaW4gSVJRCi0KLSAgICBVc2luZyB0aGUgR09UIGluIElSUSBoYW5kbGVycyByZXF1aXJlcyByMTQgdG8gYmUgLWZmaXhlZC1yMTQuCi0gICAgQXZvaWQgdGhpcyBieSByZWxvY2F0YXRlIHRyYW5zZmVyX3RvX2hhbmRsZXIgdG9vLgotICAgIFRoaXMgd2lsbCBhbGxvdyB0byBmcmVlIHVwIHIxNCBsYXRlciBvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgNjZlODIxZWJlOTYxMjNiM2E4MWVjOWNhMjVjZWM5YzA1NjBmZTIzMgotQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSmFuIDcgMTQ6Mjc6MTQgMjAxMCArMDUzMAotCi0gICAgODV4eC9wMV9wMl9yZGI6IGVuYWJsZSBod2NvbmZpZwotCi0gICAgU2lnbmVkLW9mZi1ieTogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA0NmRmNjRmMjJjNDcxYjAxMDE2MWFhNjhiZmRiZmU5NGVhNDZlN2JkCi1BdXRob3I6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE0OjU4OjQwIDIwMTAgKzA4MDAKLQotICAgIHFlOiBmaXh1cCB0aGUgc251bSBmb3IgTVBDODU2OSBSZXYyLjAKLQotICAgIFNpbmNlIDEuMCBhbmQgMi4wIHVzZSBkaWZmZXJlbnQgc251bSB0YWJsZSwKLSAgICB3ZSBmaXh1cCB0aGUgc251bSB2YWx1ZSBhY2NvcmRpbmcgdG8gU1BSTl9TVlIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwZmQyZmE2Y2NlNmViOTEyNzFlYmY5NzMzODc4ZDBmMWZjYmM5YjMyCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTm92IDE3IDIwOjQ5OjA1IDIwMDkgKzA4MDAKLQotICAgIEZpeCB0aGUgbG9jYWwgYnVzIGRpdmlkZXIgbWFwcGluZwotCi0gICAgVGhlIHJlYWwgY2xvY2sgZGl2aWRlciBpcyA0IHRpbWVzIG9mIHRoZSBiaXRzIExDUlJbQ0xLRElWXSwKLSAgICBhY2NvcmRpbmcgdGhlIGxhdGVzdCBSZXZGIFJNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzk1ZDU0MWU0YjQ2Y2IzYmExOWJmMzVlMzRiMWRjM2NhMzJmN2I0YgotQXV0aG9yOiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE5vdiAyNyAxNTozMTo1MiAyMDA5ICswODAwCi0KLSAgICBwcGMvODV4eDogQWRkIEFUTSBjb25maWcgZm9yIE1QQzg1NjlNRFMKLQotICAgIFNpZ25lZC1vZmYtYnk6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGQ5MTgwMzgyNjk4NWJmZGYxNTFlZWQ2NjU0M2NlM2IxYTMwMTY4MmYKLUF1dGhvcjogTGl1IFl1IDx5dS5saXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBOb3YgMjcgMTU6MzE6NTEgMjAwOSArMDgwMAotCi0gICAgcHBjLzg1eHg6IEFkZCBQSUIvQVRNIHN1cHBvcnQgZm9yIE1QQzg1NjltZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDExMThjZGJmZWI4ZmMzYWNmZTU0MmQwODcwMzE1M2FjMTg4ZjlkYmQKLUF1dGhvcjogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gNyAxNjowMDoxMyAyMDEwICswODAwCi0KLSAgICBmc2xfZXNkaGM6IGZpeCB3cm9uZyBjbG9jayBtYXNrCi0KLSAgICBGaXggdHlwbyBpbiBTWVNDVExfQ0xPQ0tfTUFTSywgd2hpY2ggY2F1c2VkIHJlc2lkdWFsIGluIGhpZ2ggYml0cyBvZiBTRENMS0ZTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmluIFFpbmcgPEIyNDM0N0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDY5MzQxNmZlMDFkMzI0NDcyZDI3MGFjMjgzODkwMjJlYjgyYzcyMTcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBKYW4gMjUgMTE6MDE6NTEgMjAxMCAtMDYwMAotCi0gICAgUmV2ZXJ0ICJwcGMvcDQwODA6IEZpeCByZXBvcnRpbmcgb2YgUE1FICYgRk0gY2xvY2sgZnJlcXVlbmNpZXMiCi0KLSAgICBUaGlzIHJldmVydHMgY29tbWl0IGJjMjBmOWE5NTI3YWZlOGFlNDA2YTc0Zjc0NzY1ZDQzMjNmMDQ5MjIuCi0KLSAgICBUaGUgb3JpZ2luYWwgY29kZSB3YXMgY29ycmVjdC4gIEkgY2xlYXJseSBuZWVkIGdsYXNzZXMgb3IgYSBicm93bgotICAgIHBhcGVyIGJhZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5M2NlZGM3MTY0N2I0YjcyYWM5YjQ4ZTExOTk3ZWIyZjkxNjQ1MDAxCi1BdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTIgMTU6NTA6MTggMjAxMCAtMDYwMAotCi0gICAgcHBjL3A0MDgwOiBGaXggbWFzayB3aWR0aCBvZiBSQ1cgZmllbGRzIE1FTV9QTExfUkFULCBTWVNfUExMX1JBVAotCi0gICAgVGhlIG1hc2tzIGZvciBNRU1fUExMX1JBVCBhbmQgU1lTX1BMTF9SQVQgc2hvdWxkIGhhdmUgYmVlbiA1LWJpdHMKLSAgICBpbnN0ZWFkIG9mIDQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDI5MDNhZDMzYTcxMjUxYTNhODc0ODViNWIxODU4NTJjODk5OGYyMDkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIEphbiA4IDA4OjAzOjA2IDIwMTAgLTA1MDAKLQotICAgIGpmZnMyOiBmaXggaGFuZ3MvY3Jhc2hzIHdoZW4gbm90IHVzaW5nIENPTkZJR19KRkZTMl9QQVJUX1NJWkUKLQotICAgIENvbW1pdCBiNWIwMDRhZDhhMGFjNmY5OGJkNTcwOGVjOGIyMmZiZGRkMWMxMDQyIGNhdXNlZCB0aGUgc2VjdG9yX3NpemUgdG8KLSAgICBiZSBjYWxjdWxhdGVkIGluY29ycmVjdGx5IHdoZW4gdGhlIHBhcnQgc2l6ZSB3YXMgbm90IGhhcmRjb2RlZC4gIFRoaXMgaXMKLSAgICBiZWNhdXNlIHRoZSBuZXcgY29kZSByZWxpZWQgb24gcGFydC0+c2l6ZSBidXQgdHJpZWQgdG8gZG8gdGhlIGNhbGN1bGF0aW9uCi0gICAgYmVmb3JlIGl0IHdhcyBpbml0aWFsaXplZCBwcm9wZXJseSwgYW5kIGl0IGRpZCBub3QgdGFrZSBpbnRvIGNvbnNpZGVyYXRpb24KLSAgICB0aGUgbWFnaWMgU0laRV9SRU1BSU5JTkcgZGVmaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjRiMTUwMjEzMzY1ZGI2YmU5N2E5OGQyNTg4NGY4N2Q4M2NhYWNhZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgSmFuIDggMDI6NDg6MDMgMjAxMCAtMDUwMAotCi0gICAgZ2V0bGluZTogc3BsaXQgb3V0IGZvciBkYXJ3aW4gc3lzdGVtcwotCi0gICAgQXQgbGVhc3Qgb24gT1MgWCAxMC41IGFuZCBvbGRlciwgZ2V0bGluZSBkb2VzIG5vdCBleGlzdC4gIFNvIHNwbGl0IG91dCB0aGUKLSAgICBmdW5jdGlvbiBmcm9tIHRoZSBtaW5ndyBjb2RlIHNvIHRoYXQgd2UgY2FuIHB1bGwgaXQgaW4gZm9yIERhcndpbiBzeXN0ZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZTg1MmQzNmExZTEyODY0YWIwNjU2NzI5YzQ1Yzg0NmU2NWVmYTRlZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDIxIDE5OjU5OjA0IDIwMTAgLTA1MDAKLQotICAgIHRvb2xzOiBnaXZlIGV4cGxpY2l0IGxpYmZkdCBwYXRocwotCi0gICAgVGhlIGN1cnJlbnQgbGliZmR0IG9iamVjdCBydWxlcyBoYXJkIGRlcGVuZCBpbXBsaWNpdGx5IG9uIHRoZSAuZGVwZW5kIGZpbGUKLSAgICBiZWluZyBjb3JyZWN0LiAgSWYgaXQgaXNuJ3QsIHRoZW4gaXQgaXMgdW5hYmxlIHRvIHByb3Blcmx5IGNvbXBpbGUgdGhlCi0gICAgb2JqZWN0cy4gIEdpdmUgaXQgYSBmdWxsIHBhdGggbGlrZSBhbGwgdGhlIG90aGVyIGltcGxpY2l0IHJ1bGVzIGhlcmUgc28gaXQKLSAgICB3aWxsIGFsd2F5cyB3b3JrIGluIGZhY2Ugb2YgLmRlcGVuZCBpc3N1ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0NDQzMWNhYmJiNjZlODFhMmQ3NzY0MmI2ZjdkMzljNjIzMGVhNGJhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBKYW4gMjEgMTk6MzA6MzYgMjAxMCAtMDUwMAotCi0gICAgZ3ppcC96bGliOiBtYWtlIGZlYXR1cmVzIG9wdGlvbmFsCi0KLSAgICBJZiB5b3UgcmVhbGx5IHdhbnQgdG8gc2xpbSBkb3duIFUtQm9vdCBhbmQgeW91IHdvdWxkIHJhdGhlciB1c2UgYSBoaWdoZXIKLSAgICBjb21wcmVzc2lvbiBzY2hlbWUgKGxpa2UgTFpNQSksIGl0J2QgYmUgbmljZSB0byBkaXNhYmxlIGd6aXAvemxpYiBzaW5jZQotICAgIHRoZXNlIGNvZGUgYmFzZXMgdGFrZSB1cCBhIHNpZ25pZmljYW50IGFtb3VudCBvZiBzcGFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDhlZGNkZTVlNGUyZTdmNmJjN2UyNzcwMTFmZWQ3MWU2NGZkOWQyOTQKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDIwIDE4OjE5OjEwIDIwMTAgKzAxMDAKLQotICAgIG1raW1hZ2U6IEFkZCBGcmVlc2NhbGUgaW14IEJvb3QgSW1hZ2Ugc3VwcG9ydCAoaW14aW1hZ2UpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgImlteGltYWdlIiAoTVggQm9vdCBJbWFnZSkKLSAgICB0byB0aGUgbWtpbWFnZSB1dGlsaXR5LiBUaGUgaW14aW1hZ2UgaXMgdXNlZCBvbiB0aGUgRnJlZXNjYWxlcydzCi0gICAgTVguMjUsIE1YLjM1IGFuZCBNWC41MSBwcm9jZXNzb3JzLgotCi0gICAgRnVydGhlciBkZXRhaWxzIHVuZGVyIGRvYy9SRUFETUUuaW14aW1hZ2UuCi0KLSAgICBUaGlzIHBhdGNoIHdhcyB0ZXN0ZWQgb24gYSBGcmVlc2NhbGUgbXg1MWV2ayBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgYTIxZmI5ODFkNTMzYWM2ZDMyM2EwMWM3ZmEyY2RhMjBmMmQzNmRlNQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjAgMTQ6Mjg6NDggMjAxMCArMDEwMAotCi0gICAgbXBjNXh4eDogU3VwcG9ydCBDUFUgaW50ZXJuYWwgd2F0Y2hkb2cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDgyODI2ZDU0MjIzMzFlOWM5OWU1NDA4ZGNmMDM0OGM4ZTBjMjU3YTYKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDIyIDE0OjQ3OjU5IDIwMTAgKzAxMDAKLQotICAgIG1wYzUxMng6IEFkZCBkaXNwbGF5IG9mIHJlc2V0IHN0YXR1cyByZWdpc3RlcgotCi0gICAgQ29udGVudCBvZiB0aGUgUlNSIGlzIHB1dCBpbnRvIGdkIGVhcmx5IHNvIHdlIGNhbiBvdXRwdXQgaXQgdG9nZXRoZXIKLSAgICB3aXRoIHRoZSBDUFUgaW5mby4JVGhlIGNsZWFyaW5nIG9mIGdkIGluIGJvYXJkX2luaXRfZiBpcyByZWR1bmRhbnQgZm9yCi0gICAgdGhpcyBhcmNoaXRlY3R1cmUgYXMgaXQgaXMgZG9uZSBpbiBjcHVfaW5pdF9mIHNvIHdlIHJlbW92ZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgYTNmMzg5N2JmZGE5YjQ3Mjk3ODViZGQzMjhiM2I3ZjMwNDE3YTY3ZgotQXV0aG9yOiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci1EYXRlOglXZWQgSmFuIDIwIDA4OjAwOjExIDIwMTAgKzAxMDAKLQotICAgIGF0OTE6IEVuYWJsZSBzbG93IG1hc3RlciBjbG9jayBvbiBtZWVzYyBib2FyZAotCi0gICAgTm9ybWFsbHkgdGhlIHByb2Nlc3NvciBjbG9jayBoYXMgYSBkaXZpc29yIG9mIDIuCi0gICAgSW4gc29tZSBjYXNlcyB0aGlzIHRoaXMgbmVlZHMgdG8gYmUgc2V0IHRvIDQuCi0gICAgQ2hlY2sgdGhlIHVzZXIgaGFzIHNldCBlbnZpcm9ubWVudCBtZGl2IHRvIDQgdG8gY2hhbmdlIHRoZSBkaXZpc29yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgotCi1jb21taXQgN2RhNjkyMzYwNDE0ZDA3MDI3YzZjZjU2NGExNWQ3OWNkOWRjZjQ4OAotQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgotRGF0ZToJRnJpIEphbiAxNSAxOToxNTo1MyAyMDEwICswNTMwCi0KLSAgICBTUEVBciA6IFN1cHBvcnQgYWRkZWQgZm9yIFNQRUFyMzIwIGJvYXJkCi0KLSAgICBTUEVBcjMyMCBTb0Mgc3VwcG9ydCBjb250YWlucyBiYXNpYyBzcGVhcjMyMCBzdXBwb3J0IGFsb25nIHdpdGggdGhlCi0gICAgdXNhZ2Ugb2YgZm9sbG93aW5nIGRyaXZlcnMKLSAgICAtIHNlcmlhbCBkcml2ZXIoVUFSVCkKLSAgICAtIGkyYyBkcml2ZXIKLSAgICAtIHNtaSBkcml2ZXIKLSAgICAtIG5hbmQgZHJpdmVyKEZTTUMpCi0gICAgLSB1c2JkIGRyaXZlcgotICAgIC0gZW1pIGRyaXZlcihjZmkgc3VwcG9ydCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCAwODBjZmVlNzE0NTk1ODhmZDYzMTJlNDc1YmI1MTE1YmRiZGExY2IzCi1BdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE5OjE1OjUyIDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogU3VwcG9ydCBhZGRlZCBmb3IgU1BFQXIzMTAgYm9hcmQKLQotICAgIFNQRUFyMzEwIFNvQyBzdXBwb3J0IGNvbnRhaW5zIGJhc2ljIHNwZWFyMzEwIHN1cHBvcnQgYWxvbmcgd2l0aCB0aGUKLSAgICB1c2FnZSBvZiBmb2xsb3dpbmcgZHJpdmVycwotICAgIC0gc2VyaWFsIGRyaXZlcihVQVJUKQotICAgIC0gaTJjIGRyaXZlcgotICAgIC0gc21pIGRyaXZlcgotICAgIC0gbmFuZCBkcml2ZXIoRlNNQykKLSAgICAtIHVzYmQgZHJpdmVyCi0gICAgLSBlbWkgZHJpdmVyKGNmaSBzdXBwb3J0KQotCi0gICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gPHZpcGluLmt1bWFyQHN0LmNvbT4KLQotY29tbWl0IDRiZmFjYWQ0ZTc5NmYyZTEyMWVlNzQzMjcwNWVjYzljNjFlN2I2Y2EKLUF1dGhvcjogVmlwaW4gS1VNQVIgPHZpcGluLmt1bWFyQHN0LmNvbT4KLURhdGU6CUZyaSBKYW4gMTUgMTk6MTU6NTEgMjAxMCArMDUzMAotCi0gICAgU1BFQXIgOiBlbWkgY29udHJvbGxlciBpbml0aWFsaXphdGlvbiBmb3IgQ0ZJIGRyaXZlciBzdXBwb3J0Ci0KLSAgICBTUEVBcjMxMCBhbmQgU1BFQXIzMjAgU29DcyBjb250YWluIGFuIEVNSSBjb250cm9sbGVyIHRvIGludGVyZmFjZQotICAgIFBhcmFsbGVyIE5PUiBmbGFzaGVzLiBUaGlzIHBhdGNoIGFkZHMgdGhlIHN1cHBvcnQgZm9yIHRoaXMgSVAKLQotICAgIFRoZSBzdGFuZGFyZCBDRkkgZHJpdmVyIGlzIHVzZWQgdG8gaW50ZXJmYWNlIHdpdGggTk9SIGZsYXNoZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCA3ZTA3NDE1OGNlMjM5MzgwMjU5YzVmYzk3ZTg3YmUyODk2MTY5OTczCi1BdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE5OjE1OjUwIDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogU3VwcG9ydCBhZGRlZCBmb3IgU1BFQXIzMDAgYm9hcmQKLQotICAgIFNQRUFyMzAwIFNvQyBzdXBwb3J0IGNvbnRhaW5zIGJhc2ljIHNwZWFyMzAwIHN1cHBvcnQgYWxvbmcgd2l0aCB0aGUKLSAgICB1c2FnZSBvZiBmb2xsb3dpbmcgZHJpdmVycwotICAgIC0gc2VyaWFsIGRyaXZlcihVQVJUKQotICAgIC0gaTJjIGRyaXZlcgotICAgIC0gc21pIGRyaXZlcgotICAgIC0gbmFuZCBkcml2ZXIoRlNNQykKLSAgICAtIHVzYmQgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgotCi1jb21taXQgZjkyOTk0ZjBmNzQwM2I4NDM2NmNlMDRlNTU0ZTQ2MWY2MjRlNjg2OAotQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgotRGF0ZToJRnJpIEphbiAxNSAxOToxNTo0OSAyMDEwICswNTMwCi0KLSAgICBTUEVBciA6IFN1cHBvcnQgZm9yIEhXIG1hYyBpZCByZWFkL3dyaXRlIGZyb20gaTJjIG1lbQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSAgc3VwcG9ydCB0byByZWFkIGFuZCB3cml0ZSBtYWMgaWQgZnJvbSBpMmMKLSAgICBtZW1vcnkuCi0gICAgRm9yIHJlYWRpbmc6Ci0JaWYgKGVudiBjb250YWlucyBldGhhZGRyKQotCQlwaWNrIGVudiBldGhhZGRyCi0JZWxzZQotCQlwaWNrIGV0aGFkZHIgZnJvbSBpMmMgbWVtb3J5Ci0gICAgRm9yIHdyaXRpbmc6Ci0JY2hpcF9jb25maWcgZXRoYWRkciBYWDpYWDpYWDpYWDpYWDpYWCB3cml0ZXMgdGhlIG1hYyBpZAotCWluIGkyYyBtZW1vcnkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCA1NjZjOWMxNmZlNGU1MDFjMzE5M2FlNjYwNWJjOWM2NjNjNmVhNzA2Ci1BdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQ4IDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogU3VwcG9ydCBhZGRlZCBmb3IgU1BFQXI2MDAgYm9hcmQKLQotICAgIFNQRUFyNjAwIFNvQyBzdXBwb3J0IGNvbnRhaW5zIGJhc2ljIHNwZWFyNjAwIHN1cHBvcnQgYWxvbmcgd2l0aCB0aGUKLSAgICB1c2FnZSBvZiBmb2xsb3dpbmcgZHJpdmVycwotICAgIC0gc2VyaWFsIGRyaXZlcihVQVJUKQotICAgIC0gaTJjIGRyaXZlcgotICAgIC0gc21pIGRyaXZlcgotICAgIC0gbmFuZCBkcml2ZXIoRlNNQykKLSAgICAtIHVzYmQgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXBpbiA8dmlwaW4ua3VtYXJAc3QuY29tPgotCi1jb21taXQgNjJkYjFjMGQ3OWYxZmQ3NTk2MWVlYzgxZWRjOGMwYTFiYzFmMDlhNgotQXV0aG9yOiBWaXBpbiBLVU1BUiA8dmlwaW4ua3VtYXJAc3QuY29tPgotRGF0ZToJRnJpIEphbiAxNSAxOToxNTo0NyAyMDEwICswNTMwCi0KLSAgICBTUEVBciA6IHVzYmQgZHJpdmVyIHN1cHBvcnQgZm9yIFNQRUFyIFNvQ3MKLQotICAgIFNQRUFyIFNvQ3MgY29udGFpbiBhIHN5bm9wc3lzIHVzYiBkZXZpY2UgY29udHJvbGxlci4KLSAgICBVU0IgRGV2aWNlIElQIGNhbiB3b3JrIGluIDIgbW9kZXMKLSAgICAtIERNQSBtb2RlCi0gICAgLSBTbGF2ZSBtb2RlCi0KLSAgICBUaGUgZHJpdmVyIGFkZHMgc3VwcG9ydCBvbmx5IGZvciBzbGF2ZSBtb2RlIG9wZXJhdGlvbiBvZiB1c2IKLSAgICBkZXZpY2UgSVAuIFRoaXMgZHJpdmVyIGlzIHVzZWQgYWxvbmcgd2l0aCBzdGFuZGFyZCBVU0JUVFkKLSAgICBkcml2ZXIgdG8gb2J0YWluIGEgdHR5IGludGVyZmFjZSBvdmVyIFVTQiBvbiB0aGUgaG9zdAotCi0gICAgU2lnbmVkLW9mZi1ieTogVmlwaW4gPHZpcGluLmt1bWFyQHN0LmNvbT4KLQotY29tbWl0IDE2NWZhNDA2YWQ4YzM5YzBjMzJhMzE0NzZhOGE5YmRhM2RiNzI4NTEKLUF1dGhvcjogVmlwaW4gS1VNQVIgPHZpcGluLmt1bWFyQHN0LmNvbT4KLURhdGU6CUZyaSBKYW4gMTUgMTk6MTU6NDYgMjAxMCArMDUzMAotCi0gICAgU1BFQXIgOiBuYW5kIGRyaXZlciBzdXBwb3J0IGZvciBTUEVBciBTb0NzCi0KLSAgICBTUEVBciBTb0NzIGNvbnRhaW4gYW4gRlNNQyBjb250cm9sbGVyIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGludGVyZmFjZQotICAgIHdpdGggYSByYW5nZSBvZiBtZW1vcmllcyBlZy4gTkFORCwgU1JBTSwgTk9SLgotICAgIEN1cnJlbnRseSwgdGhpcyBkcml2ZXIgc3VwcG9ydHMgaW50ZXJmYWNpbmcgRlNNQyB3aXRoIE5BTkQgbWVtb3JpZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCBhNmUzNGY3NmM1MWM4NTE0ZjFiNjkxZmM2MDM5NGYwOWFlNGZiMmZmCi1BdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQ1IDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogc21pIGRyaXZlciBzdXBwb3J0IGZvciBTUEVBciBTb0NzCi0KLSAgICBTUEVBciBTb0NzIGNvbnRhaW4gYSBzZXJpYWwgbWVtb3J5IGludGVyZmFjZSBjb250cm9sbGVyLiBUaGlzCi0gICAgY29udHJvbGxlciBpcyB1c2VkIHRvIGludGVyZmFjZSB3aXRoIHNwaSBiYXNlZCBtZW1vcmllcy4KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGRyaXZlciBmb3IgdGhpcyBJUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCAyNDAzZjhmNDE3YjFiOTQ3MDFiYjU5NDk5MDNkNzAxZjFmNDE0YTQyCi1BdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQ0IDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogaTJjIGRyaXZlciBzdXBwb3J0IGFkZGVkIGZvciBTUEVBciBTb0NzCi0KLSAgICBTUEVBciBTb0NzIGNvbnRhaW4gYSBzeW5vcHN5cyBpMmMgY29udHJvbGxlci4KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGRyaXZlciBmb3IgdGhpcyBJUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCA4MWMwZWJmNjIzZGRiYjZhNGRhOGUwNTE0NDFjODNlOTlhMDFiMDBiCi1BdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQzIDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogQWRkaW5nIGJhc2ljIFNQRUFyIGFyY2hpdGVjdHVyZSBzdXBwb3J0LgotCi0gICAgU1BFQXIgQXJjaGl0ZWN0dXJlIHN1cHBvcnQgYWRkZWQuIEl0IGNvbnRhaW5zIHRoZSBzdXBwb3J0IGZvcgotICAgIGZvbGxvd2luZyBTUEVBciBibG9ja3MKLSAgICAtIFRpbWVyCi0gICAgLSBTeXN0ZW0gY29udHJvbGxlcgotICAgIC0gTWlzYyByZWdpc3RlcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCA2ZmZmY2RmOGM4NjlhM2Q4NDM2YmU4ZWZmNjQyOGQ4MTIxYWE3NmU2Ci1BdXRob3I6IFZpcGluIEtVTUFSIDx2aXBpbi5rdW1hckBzdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE1IDE5OjE1OjQyIDIwMTAgKzA1MzAKLQotICAgIFNQRUFyIDogQWRkaW5nIFJFQURNRS5zcGVhciBpbiBkb2MKLQotICAgIFJFQURNRS5zcGVhciBjb250YWlucyBpbmZvcm1hdGlvbiBhYm91dCBTUEVBciBhcmNoaXRlY3R1cmUgYW5kCi0gICAgYnVpbGQgb3B0aW9ucyBldGMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpcGluIDx2aXBpbi5rdW1hckBzdC5jb20+Ci0KLWNvbW1pdCBlNGM0M2MyMGI4N2Q1YzlhN2FjM2I1MjUwY2EwMDkzMTFjNjI5NDVjCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVdlZCBKYW4gMjAgMTg6MDA6MjggMjAxMCAtMDYwMAotCi0gICAgQVJNIFVwZGF0ZSBtYWNoLXR5cGVzCi0KLSAgICBGZXRjaGVkIGZyb20gaHR0cDovL3d3dy5hcm0ubGludXgub3JnLnVrL2RldmVsb3Blci9tYWNoaW5lcy9kb3dubG9hZC5waHAKLSAgICBBbmQgYnVpbHQgd2l0aAotCi0gICAgcmVwbyBodHRwOi8vZnRwLmFybS5saW51eC5vcmcudWsvcHViL2xpbnV4L2FybS9rZXJuZWwvZ2l0LWN1ci9saW51eC0yLjYtYXJtCi0gICAgY29tbWl0IDIwNDUxMjRmZmQxYTVlNDZkMTU3MzQ5MDE2YTJjNTBmMTljOGM5MWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IGJmYjZkNTEwZTlhY2JlYzk3ZTRlMWNjODU1ZWMxMjY5NTM4Njg5ZjgKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJTW9uIE5vdiAxNiAxODoyOToyNSAyMDA5ICswNTMwCi0KLSAgICBLaXJrd29vZDogTWFrZWZpbGUgY2xlYW51cC0gZml4ZWQgb3JkZXJpbmcgKGNvc21ldGljIGNoYW5nZSkKLQotICAgIEFzIHBlciBjb2RpbmcgZ3VpZGxpbmVzLCBpdCBpcyBnb29kIHRvIG1haW50YWluIHByb3BlciBvcmRlcmluZwotICAgIGluIHRoZSBtYWtlZmlsZXMuCi0gICAgVGhpcyB3YXMgbWlzc2VkIGR1cmluZyBpbml0aWFsIGNvZGluZywgY29ycmVjdGVkIGhlcmUuCi0KLSAgICBUaGlzIHdhcyBkaXNjb3ZlcmVkIGR1cmluZyBvcmlvbjV4IGNvZGUgcmV2aWV3Ci0gICAgVGhhbmtzIHRvIEFsYmVydCBBcmliYXVkIGZvciB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotCi1jb21taXQgYmVjYTA0ZGQyNDQ2ZmM5ZWM0NmNhMTcxNjNkYWRiN2Y4MjQyMGU3YwotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglUaHUgRGVjIDI0IDAyOjU1OjIzIDIwMDkgKzA1MzAKLQotICAgIEtpcmt3b29kOiBVcGdhdGVkIGxpY2VuY2luZyBmb3IgZmlsZXMgaW1wb3J0ZWQgZnJvbSBsaW51eCBzb3VyY2UgdG8gR1BMdjIgb3IgbGF0ZXIKLQotICAgIFRoZXNlIGFyZSBmZXcgZmlsZXMgZGlyZWN0bHkgaW1wb3J0ZWQgZnJvbSBMaW51eCBrZXJuZWwgc291cmNlLgotICAgIFRob3NlIGFyZSBub3QgbW9kaWZ5ZWQgYXQgYWxsIGFyIHBlciBzdHJhdGVneS4KLSAgICBUaGVzZSBmaWxlcyBjb250YWlucyBzb3VyY2Ugd2l0aCBHUEx2MiBvbmx5Ci0gICAgd2hlcmVhcyB1LWJvb3QgZXhwZWN0cyBHUEx2MiBvciBsYXR0ZXIKLQotICAgIFRoZXNlIGZpbGVzIGFyZSB1cGRhdGVkIGZvciB0aGUgc2FtZSBmcm9tIHByaW9yIHBlcm1pc3Npb24gZnJvbSBvcmlnaW5hbCB3cml0ZXMKLQotICAgIEFja2VkLWJ5OiBOaWNvbGFzIFBpdHJlIDxuaWNvQG1hcnZlbGwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLQotY29tbWl0IGQ4ZTVmNTU0NzVlNjIxZTc5M2ExNWQ5M2UyZGQyNTQ5YzUxMzg3MzUKLUF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotRGF0ZToJRnJpIERlYyAxOCAxNTowMzo1MSAyMDA5ICswOTAwCi0KLSAgICBzNXBjMXh4OiB1cGRhdGUgY2FjaGUgcm91dGluZXMKLQotICAgIEJlY2F1c2Ugb2YgdjdfZmx1c2hfZGNhY2hlX2FsbCBpcyBtb3ZlZCB0byBvbWFwMy9jYWNoZS5TCi0gICAgYW5kIHM1cGMxMTAgbmVlZHMgY2FjaGUgcm91dGluZXMsIHVwZGF0ZSBzNXBjMXh4IGNhY2hlIHJvdXRpbmVzLgotCi0gICAgbDJfY2FjaGVfZW5hYmxlIGFuZCBsMl9jYWNlaF9kaXNhYmxlIGFyZSBtb3ZlZCBmcm9tIGNhY2hlLmMgdG8gY2FjaGUuUwotICAgIGFuZCBpbnZhbGlkYXRlX2RjYWNoZSBpcyBtb2RpZmllZCBmb3IgU29DIHNwZWNpZmljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgMTdlZjkxMDRhZTExMjIwOTc5ZTE4NzBmMjJkY2FmNTM1ZDliYWFjZgotQXV0aG9yOiBTZXVuZ2h5ZW9uIFJoZWUgPHNldW5naHllb25AbHBtdGVjLmNvbT4KLURhdGU6CVRodSBEZWMgMyAwOTo0MTo0OSAyMDA5ICswOTAwCi0KLSAgICBzYW1zdW5nOiBmaXggRE1DMV9NRU1fQ0ZHIGZvciBzM2M2NHh4Ci0KLSAgICBUaGUgTVNCIG9mIERNQzFfTUVNX0NGRyBjYW4gYmUgc2V0IHRvICcxJyBmb3Igc2VwYXJhdGUgQ0tFIGNvbnRyb2wKLSAgICBmb3IgUzNDNjQwMC4gSW4gdGhlIGNvbmZpZ3VyYXRpb24gb2YgU01ESzY0MDAsIGhvd2V2ZXIsIHR3byAxNi1iaXQKLSAgICBtRERSIChTQU1TVU5HIEs0WDUxMTYzKSBjaGlwcyBhcmUgdXNlZCBpbiBwYXJhbGxlbCB0byBmb3JtIDMyLWJpdAotICAgIG1lbW9yeSBidXMgYW5kIHRoZXJlIGlzIG5vIG5lZWQgdG8gY29udHJvbCBDS0UgZm9yIGVhY2ggY2hpcAotICAgIHNlcGFyYXRlbHkuIEFGQUlLLCBDS0UxIGlzIG5vdCBhdCBhbGwgY29ubmVjdGVkLiBPbmx5IENLRTAgaXMKLSAgICB1c2VkLiBGdXRoZXJtb3JlLCBpdCBzaG91bGQgYmUgJzAnIGFsd2F5cyBmb3IgUzNDNjQxMC4gV2hlbiB0ZXN0ZWQKLSAgICB3aXRoIGEgYm9hcmQgd2hpY2ggaGFzIGEgUzNDNjQxMCBhbmQgdGhlIHNhbWUgbWVtb3J5IGNvbmZpZ3VyYXRpb24sCi0gICAgYSBzaWRlIGVmZmVjdCBpcyBvYnNlcnZlZCB0aGF0IHUtYm9vdCBjb21tYW5kICJyZXNldCIgZG9lc24ndCB3b3JrCi0gICAgbGVhZGluZyB0byBzeXN0ZW0gaGFuZy4gTGVhdmluZyB0aGUgYml0IGNsZWFyIGlzIHNhZmUgaW4gbW9zdCBjYXNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNldW5naHllb24gUmhlZSA8c2V1bmdoeWVvbkBscG10ZWMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDk5OThiMTM2NmU3ZTQyMDg5YzNmNTc5YjRkMWQ3OTBkM2MyOTUzODcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEphbiAyMSAxMTozNzozMSAyMDEwICswMTAwCi0KLSAgICBwcGM0eHg6IEtpbGF1ZWE6IEFkZCBDUExEIHZlcnNpb24gZGV0ZWN0aW9uIGFuZCBFQkMgcmVjb25maWd1cmF0aW9uCi0KLSAgICBBIG5ld2VyIENQTEQgdmVyc2lvbiBvbiB0aGUgNDA1RVggZXZhbHVhdGlvbiBib2FyZCByZXF1aXJlcyBhIGRpZmZlcmVudAotICAgIEVCQyBjb250cm9sbGVyIHNldHVwIGZvciB0aGUgQ1BMRCByZWdpc3RlciBhY2Nlc3MuIFRoaXMgcGF0Y2ggYWRkcyBhIENQTEQKLSAgICB2ZXJzaW9uIGRldGVjdGlvbiBmb3IgS2lsYXVlYSBhbmQgY29kZSB0byByZWNvbmZpZ3VyZSB0aGUgRUJDIGNvbnRyb2xsZXIKLSAgICAoY2hpcCBzZWxlY3QgMikgZm9yIHRoZSBvbGQgQ1BMRCBpZiBubyBuZXcgdmVyc2lvbiBpcyBmb3VuZC4KLQotICAgIEFkZGl0aW9uYWxseSB0aGUgQ1BMRCB2ZXJzaW9uIGlzIHByaW50ZWQgdXBvbiBib290dXA6Ci0KLSAgICBCb2FyZDogS2lsYXVlYSAtIEFNQ0MgUFBDNDA1RVggRXZhbHVhdGlvbiBCb2FyZCAoQ1BMRCByZXYuIDApCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IFpoYW5nIEJhbyBRdWFuIDxicXpoYW5nQHVkdGVjaC5jb20uY24+Ci0KLWNvbW1pdCA5N2M5ZjI5MDA4NTc5ZjU2YzNmYjg2Nzg1ZjI5ZjA0ZGQ0ZjQ3Zjk0Ci1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJU2F0IEphbiAyMyAwMTozNToyNCAyMDEwICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBzZW5kaW5nIHR5cGUgMSBQQ0kgdHJhbnNhY3Rpb25zCi0KLSAgICBUaGUgbGlzdCBvZiA0eHggU29DcyB0aGF0IHNob3VsZCBzZW5kIHR5cGUgMSBQQ0kgdHJhbnNhY3Rpb25zCi0gICAgaXMgbm90IGRlZmluZWQgY29ycmVjdGx5LiBBcyBhIHJlc3VsdCBQQ0ktUENJIGJyaWRnZXMgYW5kIGRldmljZXMKLSAgICBiZWhpbmQgdGhlbSBhcmUgbm90IGlkZW50aWZpZWQuIFRoZSBmb2xsb3dpbmcgNHh4IHZhcmlhbnRzIHNob3VsZAotICAgIHNlbmQgdHlwZSAxIHRyYW5zYWN0aW9uczogNDQwR1gsIDQ0MEdQLCA0NDBTUCwgNDQwU1BFLCA0NjBFWCBhbmQgNDYwR1QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1N2FlOGE1Y2NlZDYxMjA4ODEwNDMwMzc3N2U3MWEzZGM4OWMwMGVmCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJVGh1IEphbiAyMSAxNzo1NTo1OCAyMDEwICswMTAwCi0KLSAgICBtcGM1MTJ4OiBVc2UgaW4vb3V0IGFjY2Vzc29ycyBmb3IgYWxsIHJlZ2lzdGVycwotCi0gICAgVGhpcyBpcyBub3Qgb25seSBhIGNvc21ldGljIGNoYW5nZSBhcyBpdCBmaXhlcyB0aGUgcmVhbCBidWcgb2YgYm9hcmQKLSAgICByZXNldCBub3Qgd29ya2luZyB3aXRoIHRoZSBFTERLIDQuMiB0b29sY2hhaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGM3YzBkNTQyYTE5OTA4OWNmNjU4YTdjMjNjMzE0YTVjZmYyNDhiMDAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEphbiAyMSAwNDowMzoyMiAyMDEwIC0wNTAwCi0KLSAgICB0b29sczogYWxsb3cgcGVvcGxlIHRvIGNvbXBpbGUgdy9vdXQgY29uZmlndXJpbmcKLQotICAgIEl0J3MgdXNlZnVsIHRvIGJlIGFibGUgdG8gYnVpbGQgdXAgdGhlIGhvc3QgdG9vbHMgd2l0aG91dCBoYXZpbmcgdG8gc2VsZWN0Ci0gICAgYSBib2FyZCBmaXJzdC4gIFByZXR0eSBtdWNoIGFsbCB0b29scyBpbiB0aGVyZSBhcmUgY29uZmlnLWluZGVwZW5kZW50Ci0gICAgYW55d2F5cy4KLQotICAgIEFsc28gYWRkIGEgc2hvcnRjdXQgInRvb2xzLWFsbCIgdG8gcXVpY2tseSBidWlsZCBhbGwgaG9zdCB0b29scyB0aGF0IGFyZQotICAgIGFjdHVhbGx5IGNvbmZpZy1pbmRlcGVuZGVudCB0byBhbGxvdyBmb3Igc2ltcGxlIHRlc3QgYnVpbGRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzVhMDI4ZjA4NTAyMGI2MDA0MGEyYjQyOTY2ZjI5YjI1YmQ2ZWU4ZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDIxIDA0OjAzOjIxIDIwMTAgLTA1MDAKLQotICAgIHVic2hhMTogZHJvcCB1bm5lY2Vzc2FyeSBpbmNsdWRlcy9wcm90b3R5cGVzCi0KLSAgICBUaGlzIGNvZGUgZG9lc24ndCB1c2UgYW55IGNvbmZpZy5oIGRlZmluZXMsIGFuZCB0aGUgc2hhMS5oIGhlYWRlciBhbHJlYWR5Ci0gICAgZGVjbGFyZXMgYSBzaGExX2NzdW0gcHJvdG90eXBlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNWRhYTFjMThiNmE2ODc3YjA2MTlhOGRiYWFkMGFmZDc4M2Y3OWU0ZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDIxIDA0OjAzOjIwIDIwMTAgLTA1MDAKLQotICAgIGltYWdlLmg6IGF2b2lkIGNvbW1hbmQuaCBmb3IgaG9zdCB0b29scwotCi0gICAgVGhlIHUtYm9vdCBjb21tYW5kIHN0cnVjdHVyZXMgZG9uJ3QgZ2V0IHVzZWQgd2l0aCBob3N0IHN5c3RlbXMsIHNvIGRvbid0Ci0gICAgYm90aGVyIGluY2x1ZGluZyBpdCB3aGVuIGJ1aWxkaW5nIGhvc3QgY29kZS4gIFRoaXMgYXZvaWRzIGFuIGltcGxpY2l0IG5lZWQKLSAgICBvbiBjb25maWcuaCBpbiB0aGUgcHJvY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDM0YmUxMDY1MTcwNDcwOWRmYjM1ZjljNTcwMTNmMDJkNDdjY2VkMDkKLUF1dGhvcjogTWF0dGhpYXMgV2Vpc3NlciA8d2Vpc3Nlcm1AYXJjb3IuZGU+Ci1EYXRlOglNb24gSmFuIDE4IDEwOjU4OjEzIDIwMTAgKzAxMDAKLQotICAgIFJlbW92aW5nIEF0bWVsIGZyb20gQVJNOTI2RUotUyBTeXN0ZW1zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBXZWlzc2VyIDx3ZWlzc2VybUBhcmNvci5kZT4KLQotY29tbWl0IGExNjAyOGRhNjNjNzgwMDE4MjNiZmIzNzViM2Y2ZDlkODZlNWE1MzQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE5vdiAzIDExOjM1OjU5IDIwMDkgLTA1MDAKLQotICAgIGxtYjogb25seSBmb3JjZSBvbiBhcmNoZXMgdGhhdCB1c2UgaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGRhYzRkN2U4ODQ5ZDI3NTAyM2VhMmZjYWU2Y2FmOTQxZGI5MWMwNDIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEphbiAxNyAyMTowODowMCAyMDEwIC0wNTAwCi0KLSAgICBzaGExOiBhZGQgZGVkaWNhdGVkIGNvbmZpZyBvcHRpb24KLQotICAgIFRoZSBzaGExIGNvZGUgaXMgY3VycmVudGx5IGNvbXBpbGVkIGZvciBldmVyeW9uZSwgYnV0IGluIHJlYWxpdHksIGl0J3MKLSAgICBvbmx5IHVzZWQgYnkgdGhlIEZJVCBjb2RlLglTbyBtYWtlIGl0IG9wdGlvbmFsIGp1c3QgbGlrZSBNRDUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzM2M4YzY2NDIzOWY2NjY1YjIyODE0NWQ3ZTVhZGZhMjM4YTMwMGJjCi1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJVHVlIEphbiAxOSAyMToxOTowNiAyMDEwICswMjAwCi0KLSAgICBwcGM0eHg6IEFsbG93IHNldHRpbmcgYSBzaW5nbGUgU1BEIEVFUFJPTSBhZGRyZXNzIGZvciBERFIyIERJTU1zCi0KLSAgICBPbiBwbGF0Zm9ybXMgd2hlcmUgU1BEIEVFUFJPTSBhbmQgYW5vdGhlciBFRVBST00gaGF2ZSBhZGphY2VudAotICAgIEkyQyBhZGRyZXNzZXMgU1BEX0VFUFJPTV9BRERSRVNTIHNob3VsZCBiZSBkZWZpbmVkIGFzIGEgc2luZ2xlCi0gICAgZWxlbWVudCBhcnJheSwgb3RoZXJ3aXNlIEREUjIgc2V0dXAgY29kZSB3b3VsZCBmYWlsIHdpdGggdGhlCi0gICAgZm9sbG93aW5nIGVycm9yOgotCi0gICAgRVJST1I6IFVua25vd24gRElNTSBkZXRlY3RlZCBpbiBzbG90IDEKLQotICAgIEhvd2V2ZXIsIGZpeGluZyBTUERfRUVQUk9NX0FERFJFU1Mgd291bGQgcmVzdWx0IGluIGFub3RoZXIKLSAgICBlcnJvcjoKLQotICAgIEVSUk9SOiBESU1NJ3MgRERSMSBhbmQgRERSMiB0eXBlIGNhbiBub3QgYmUgbWl4ZWQuCi0KLSAgICBUaGlzIGhhcHBlbnMgYmVjYXVzZSBpbml0ZHJhbSgpIHJvdXRpbmUgZG9lcyBub3QgZXhwbGljaXRseQotICAgIGluaXRpYWxpemUgZGltbV9wb3B1bGF0ZWQgYXJyYXkuIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkOTg5NjRhYWFjYzVjNTRjZjdkNjdiYjFlNTEyOGVkMDY3MDg2ZGQ3Ci1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJVHVlIEphbiAxOSAxNzozNzoxMyAyMDEwICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCByZXBvcnRpbmcgb2YgYm9vdHN0cmFwIG9wdGlvbnMgRyBhbmQgRiBvbiA0NjBFWC9HVAotCi0gICAgQm9vdHN0cmFwIG9wdGlvbnMgRyBhbmQgRiBhcmUgcmVwb3J0ZWQgaW5jb3JyZWN0bHkgKEcgaW5zdGVhZAotICAgIG9mIEYgYW5kIHZpY2UgdmVyc2EpLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxOWMyOTI5OTk3MzI5OTZlMDcxY2FhMDc4MmVlZWYwY2UwYTYwYWMwCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CVdlZCBKYW4gMjAgMjE6MDc6MDAgMjAxMCArMDkwMAotCi0gICAgTUlQUzogcWVtdV9taXBzOiBJbXBvcnQgYXNtL3VuYWxpZ25lZC5oIGZyb20gdGhlIExpbnV4IGtlcm5lbAotCi0gICAgd2l0aCBhIGZldyBhZGp1c3RtZW50cyBmb3IgVS1Cb290LglUaGlzIGZpeGVzIHRoZSBmb2xsb3dpbmcgYnVpbGQgZXJyb3I6Ci0KLSAgICBtYWtlIC1DIGxpYl9nZW5lcmljLwotICAgIHpsaWIuYzozMToyNzogZXJyb3I6IGFzbS91bmFsaWduZWQuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICAgIHpsaWIuYzogSW4gZnVuY3Rpb24gJ2luZmxhdGVfZmFzdCc6Ci0gICAgemxpYi5jOjY0MTogd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2dldF91bmFsaWduZWQnCi0gICAgbWFrZVsxXTogKioqIFt6bGliLm9dIEVycm9yIDEKLSAgICBtYWtlWzFdOiBMZWF2aW5nIGRpcmVjdG9yeSBgL2hvbWUvc2t1cmliYXkvZ2l0L3UtYm9vdC5naXQvbGliX2dlbmVyaWMnCi0gICAgbWFrZTogKioqIFtsaWJfZ2VuZXJpYy9saWJnZW5lcmljLmFdIEVycm9yIDIKLQotICAgIFJlcG9ydGVkLWJ5OiBIaW1hbnNodSBDaGF1aGFuIDxoaW1hbnNodUBzeW1tZXRyaWNvcmUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcG9ib3guY29tPgotCi1jb21taXQgMzhhOGIzZWFmYjE3ZDYxNjkwZTVmYzkzZTZkYzQ1MTIwZjc5ZDdkMAotQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gSmFuIDE3IDE3OjQ2OjExIDIwMTAgKzAxMDAKLQotICAgIE1YMzE6IEFjdGl2YXRlIE5BTkQgZW52aXJvbm1lbnQgb24gaS5NWDMxIFBESyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IGM0ODMyZGZmZmYyMDUxOWU3Mjg3OWE4ZGEwMTAxNzRhYzA1MjYxNDEKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJU3VuIEphbiAxNyAxNzo0NjoxMCAyMDEwICswMTAwCi0KLSAgICBNWEM6IEFkZCBsYXJnZSBwYWdlIG9vYiBsYXlvdXQgZm9yIGkuTVgzMSBOQU5EIGNvbnRyb2xsZXIuCi0KLSAgICBJbXBvcnQgdGhlIGxhcmdlIHBhZ2Ugb29iIGxheW91dCBmcm9tIExpbnV4IG14Y19uYW5kLmMgZHJpdmVyLgotCi0gICAgVGhlIENPTkZJR19TWVNfTkFORF9MQVJHRVBBR0Ugb3B0aW9uIGlzIHVzZWQgdG8gYWN0aXZhdGUKLSAgICB0aGUgbGFyZ2UgcGFnZSBvb2IgbGF5b3V0LiBSdW4gdGltZSBkZXRlY3Rpb24gaXMgbm90IHN1cHBvcnRlZAotICAgIGFzIHRoaXMgbW9tZW50LgotCi0gICAgVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgb24gdGhlIGkuTVgzMSBQREsgYm9hcmQgd2l0aCBhIGxhcmdlCi0gICAgcGFnZSBOQU5EIGRldmljZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IGY2YTk3NDhlMzI2MWZkY2NkZWI3OGEyYjU4ZTZhZDUzOGJhNTQ0OTYKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJV2VkIE5vdiAxMSAyMDoxODo0MyAyMDA5ICswMTAwCi0KLSAgICBteGNfbmFuZDogVXBkYXRlIGRyaXZlciB0byB3b3JrIHdpdGggaS5NWDMxLgotCi0gICAgVGVzdGVkIG9uIGkuTVgzMSBMaXRla2l0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotCi1jb21taXQgYzgxNmRjYjExOGUyNmJhMTdlN2Q3Mzk4OTUxNGZlYzA4YTM4MjNhYwotQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgTm92IDExIDIwOjE4OjQyIDIwMDkgKzAxMDAKLQotICAgIE1YMzE6IEFkZCBzdHJ1Y3QgZGVmaW5pdGlvbiBmb3IgY2xvY2sgY29udHJvbCBtb2R1bGUgaW4gaS5NWDMxLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotCi1jb21taXQgNTBlZjI1ZWYyNGVjY2Q4ZTY5ZDJjMWNjYzk3YjNmN2UzMDEwOWY1MQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglUdWUgSmFuIDE5IDEyOjAzOjI1IDIwMTAgKzAxMDAKLQotICAgIG1pY3JvYmxhemU6IHpsaWIgbmVlZHMgYXNtL3VuYWxpZ25lZC5oCi0KLSAgICBNaWNyb2JsYXplIGhhcyBvd24gaHcgdW5hbGlnbmVkIGhhbmRsZXIgaWYgaXMgYXZhaWxhYmxlLgotICAgIFVzZSBiaWcgZW5kaWFuIHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA1YjhiODNiY2U2ZmRkMGQyY2E2NjFkZTkwYWU4M2EwZjhiMTUyZGU2Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVR1ZSBKYW4gMTkgMTI6MDM6MjQgMjAxMCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogUmVtb3ZlIGdldGVudl9JUGFkZHIgcHJvdG90eXBlCi0KLSAgICBDb21taXQgNmE0NWUzODQ5NTUyNjI4ODIzNzVhMjc4NTQyNmRjNjVhZWI2MzZjNAotICAgIHNob3VsZCByZW1vdmUgcmVmZXJlbmNlIGZyb20gTWljcm9ibGF6ZSB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCBiOWU2OTU3Y2ExNWJlODQ2NjE5MDc5NGQ2ZDg3ODQ1NDkxYjM0MTFiCi1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglNb24gSmFuIDE4IDIyOjM4OjM4IDIwMTAgKzAxMDAKLQotICAgIE1BSU5UQUlORVJTOiBmaXggbmhrODgxNSBib2FyZCBuYW1lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotCi1jb21taXQgYjQwZTIzMjBjNDQwYzUwODIwMjBlNTAzNmEwY2I4ZDRlZDFiM2Q3ZAotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJTW9uIEphbiAxOCAxMTozNTozMSAyMDEwIC0wODAwCi0KLSAgICBGaXggYnJlYWthZ2UgaW4gU01DIEVFUFJPTSBzdGFuZGFsb25lIGFwcGxpY2F0aW9ucwotCi0gICAgQ29tbWl0IDZhNDVlMzg0OTU1MjYyODgyMzc1YTI3ODU0MjZkYzY1YWViNjM2YzQgKE1ha2UgZ2V0ZW52X0lQYWRkcigpIGdsb2JhbCkKLSAgICBpbmFkdmVydGVudGx5IGFkZGVkICcgI2luY2x1ZGUgIm5ldC5oIiAnIHRvIHRoZSBzdGFuZGFsb25lIHByb2dyYW1zLCBjcmVhdGluZwotICAgIGR1cGxpY2F0ZSBkZWZpbml0aW9ucyBvZiAnc3RydWN0IGV0aF9kZXZpY2UnLiAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBsb2NhbAotICAgIGRlZmluaXRpb25zIGFuZCByZW1vdmVzIG90aGVyIGNvZGUgdGhhdCBicmVha3MgZHVlIHRvIHRoZSBjaGFuZ2UgaW4gZGVmaW5pdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDJhOTk4NzkzNWUzY2RiNjFlNzU1MGM4N2NiYzlmNTAwYTU0ZjY3MmQKLUF1dGhvcjogRGFuaWVsIEhvYmkgPGRhbmllbC5ob2JpQHNjaG1pZC10ZWxlY29tLmNoPgotRGF0ZToJTW9uIEphbiAxOCAxODoxMzozOSAyMDEwICswMTAwCi0KLSAgICBNYWtlZmlsZTogZml4IHBhcmFsbGVsIGJ1aWxkCi0KLSAgICBEdXJpbmcgcGFyYWxsZWwgYnVpbGQsIHRoZSB0b3AgTWFrZWZpbGUgc3Bhd25zIG11bHRpcGxlIHN1Yi1tYWtlcyBmb3IKLSAgICB0YXJnZXRzIGluIGNwdS8kKENQVSkgYW5kICQoZGlyICQoTERTQ1JJUFQpKS4gSWYgdGhlIC5kZXBlbmQgZmlsZXMgYXJlCi0gICAgbm90IHByZXNlbnQgaW4gdGhlc2UgZGlyZWN0b3JpZXMsIHRoZSBzdWItbWFrZXMgbWF5IGVuZCB1cCBnZW5lcmF0aW5nCi0gICAgdGhlc2UgZmlsZXMgc2ltdWx0YW5lb3VzbHkgd2hpY2ggbGVhZHMgdG8gY29ycnVwdGVkIGNvbnRlbnQuCi0KLSAgICBBIHR5cGljYWwgZXJyb3IgbWVzc2FnZSBpczoKLQotICAgIC5kZXBlbmQ6Mzk6ICoqKiBtdWx0aXBsZSB0YXJnZXQgcGF0dGVybnMuICBTdG9wLgotCi0gICAgVGhpcyBwYXRjaCBzZXJpYWxpemVzIHRoZSBjcmVhdGlvbiBvZiAuZGVwZW5kIGluIGNwdS8kKENQVSkgYW5kCi0gICAgJChkaXIgJChMRFNDUklQVCkpIGJ5IGFkZGluZyB0aGVzZSBkaXJlY3RvcmllcyB0byB0aGUgZGVwZW5kIHRhcmdldAotICAgIGluIHRoZSB0b3AgTWFrZWZpbGUuCi0KLSAgICBPdGhlciBkaXJlY3RvcmllcyBpbiAkKExJQlMpIGFyZSBub3QgYWZmZWN0ZWQgc2luY2UgdGhleSBjb250YWluIG9ubHkKLSAgICBvbmUgTWFrZSB0YXJnZXQgYW5kIHRodXMgb25seSBvbmUgc3ViLW1ha2UgaXMgc3Bhd25lZCBwZXIgZGlyZWN0b3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhvYmkgPGRhbmllbC5ob2JpQHNjaG1pZC10ZWxlY29tLmNoPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGYxOWZkODdlOTM4NzI4MmI1YWJiZmRhZmU0NmFjMjcyMzIwNjQzZDgKLUF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotRGF0ZToJTW9uIERlYyAyMSAxNjozNTo0OCAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYWRkIHN1cHBvcnQgZm9yIGtnZGIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzODY5NDUzZjY1OWMyMjM5NmZlY2I3YzhlZDdhZjkwOWU4OWY0NjFjCi1BdXRob3I6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KLURhdGU6CU1vbiBEZWMgMjEgMTc6NTU6MjIgMjAwOSAtMDUwMAotCi0gICAgYXNtLWdlbmVyaWMvc2lnbmFsLmg6IGltcG9ydCBmcm9tIGxpbnV4Ci0KLSAgICBXZSBuZWVkIHNpZ25hbC5oIGZvciBCbGFja2Zpbi9LR0RCLCBzbyBpbXBvcnQgdGhlIGFzbS1nZW5lcmljL3NpZ25hbC5oCi0gICAgZm9yIHBlb3BsZSB0byBsZXZlcmFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4OGZmYjI2NjVjZDA2NmI2YjIwY2ZhYWRlMTM5MjlkNGU4NDI4ZGRlCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IEphbiA3IDA4OjU1OjU0IDIwMTAgKzAxMDAKLQotICAgIENSQU1GUzogc3VwcG9ydCBjcmFtZnMgaW4gUkFNCi0KLSAgICBjcmFtZnNscyBhbmQgY3JhbWZzbG9hZCBhcmUgYWRkZWQgdG8gdGhlIGNvbW1hbmQgbGlzdC4KLSAgICBBIGNyYW1mcyBwbGFjZWQgYXQgJ2NyYW1mc19hZGRyJyBjYW4gdGhlIGJlIGxpc3RlZCB3aXRoICdjcmFtZnNscycgYW5kIGZpbGVzCi0gICAgY2FuIGJlIGxvYWRlZCB3aXRoICdjcmFtZnNsb2FkJy4gJ2NyYW1mc19hZGRyJyBpcyBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZQotICAgIHNwZWNpZnlpbmcgdGhlIGFkZHJlc3MgdGhlIGNyYW1mcyBpcyBsb2NhdGVkLgotICAgIFRoaXMgd29ya3MgZm9yIHBvd2VycGMgYW5kIGZvciBBUk0uCi0KLSAgICBVc2UgQ09ORklHX0NNRF9DUkFNRlMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEh1YmVyIDxhbmRyZWFzLmh1YmVyQGtleW1pbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNDg5N2VlMzNjOThiNGIyOWVmZDYyODU0MDUyZWI3ODYyMzgwYjVhZQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBKYW4gNyAwODo1NTo1MCAyMDEwICswMTAwCi0KLSAgICBwb3dlcnBjOiBrZXltaWxlIGJvYXJkcyB1cGRhdGVzCi0KLSAgICAtIG1hbGxvYyBzaXplIDQgTUIgZm9yIGFsbCBrZXltaWxlIGJvYXJkcwotICAgIC0gdXNlIGdlbmVyaWMgRkRUIGNvZGUgZm9yIGZpeGluZyB1cCB0aGUgRFRTCi0gICAgLSBlbmFibGUgdW5pdC1sZWQgYXQgc3RhcnR1cCBmb3Iga2V5bWlsZSBib2FyZHMKLSAgICAtIHJlbW92ZSBzb21lIGR0cyB1cGRhdGVzIGZvciBrZXltaWxlIGJvYXJkcwotICAgIC0gcHBjXzgzeHgsIGttZXRlcjE6IHRha2UgRkUvR2JFIFBIWXMgb3V0IG9mIHJlc2V0Ci0gICAgLSBwcGNfODN4eCwga21ldGVyMTogY2hhbmdlIGZyb20gSW50ZWwgU3RyYXRhIHRvIFNwYW5zaW9uIDY0TUIgZmxhc2gKLSAgICAgIGNoYW5nZWQgZnJvbSBJbnRlbCBTdHJhdGEgdG8gU3BhbnNpb24gNjRNQiBmbGFzaCBhbmQgY2hhbmdlZCBmbGFzaCBsYXlvdXQuCi0gICAgKy0tLS0tLS0tLSstLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotICAgIHwgbmFtZSAgICB8IHNpemUJIHwgcmFuZ2UJCSB8IGRlc2NyaXB0aW9uCQkgICAgICAgfAotICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSAgICB8IHUtYm9vdCAgfCAgIDc2OCBLQiB8IDB4ZjAwMDAwMDAtMHhmMDBiZmZmZiB8IGZvciB1LWJvb3QJCSAgICAgICB8Ci0gICAgfCBlbnYgICAgIHwgICAxMjggS0IgfCAweGYwMGMwMDAwLTB4ZjAwZGZmZmYgfCBmb3IgZW52aXJvbm1lbnQJICAgICAgIHwKLSAgICB8IGVudnJlZCAgfCAgIDEyOCBLQiB8IDB4ZjAwZTAwMDAtMHhmMDBmZmZmZiB8IGZvciBlbnZpcm9ubWVudCAocmVkdW5kYW50KSB8Ci0gICAgfCB1YmkwICAgIHwgNjQ1MTIgS0IgfCAweGYwMTAwMDAwLTB4ZjNmZmZmZmYgfCB1YmkwIGZvciB1Ymkgdm9sdW1lcyAgICAgICAgfAotICAgICstLS0tLS0tLS0rLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMTU2N2I1OTZkOWY0YTdmZjQ5ZWJkY2EyOWUxNWEzMzc3N2RmZDY3MAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBKYW4gNyAwODo1NTo0NCAyMDEwICswMTAwCi0KLSAgICBlbnYsIGVlcHJvbTogYWRkIHJlZHVuZGFudCBlbnZpcm9ubWVudCBzdXBwb3J0Ci0KLSAgICBBZGQgcmVkdW5kYW50IGVudmlyb25tZW50IHN1cHBvcnQgZm9yIGVudmlyb25tZW50IGx5aW5nIG9uIGEgRUVQUk9NLgotCi0gICAgVGVzdGVkIG9uIHVwcGNvbWluZyBzdWVuMyBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEh1YmVyIDxhbmRyZWFzLmh1YmVyQGtleW1pbGUuY29tPgotCi1jb21taXQgNTQ4NzM4YjRkNDNhZjg0MWZmNThjNzg3YmNlMjk3YWM2YThiZjdkMQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBKYW4gNyAwODo1NTo0MCAyMDEwICswMTAwCi0KLSAgICBjbWRfZWVwcm9tOiBJMkMgdXBkYXRlcwotCi0gICAgLSBDT05GSUdfRU5WX0VFUFJPTV9JU19PTl9JMkMKLSAgICAgIGRlZmluZSB0aGlzLCBpZiB5b3UgaGF2ZSBJMkMgYW5kIFNQSSBhY3RpdmF0ZWQsIGFuZCB5b3VyCi0gICAgICBFRVBST00sIHdoaWNoIGhvbGRzIHRoZSBlbnZpcm9ubWVudCwgaXMgb24gdGhlIEkyQyBidXMuCi0KLSAgICAtIENPTkZJR19JMkNfRU5WX0VFUFJPTV9CVVMKLSAgICAgIGlmIHlvdSBoYXZlIGFuIEVudmlyb25tZW50IG9uIGFuIEVFUFJPTSByZWFjaGVkIG92ZXIKLSAgICAgIEkyQyBtdXhlcywgeW91IGNhbiBub3cgZGVmaW5lLCBob3cgdG8gcmVhY2ggdGhpcwotICAgICAgRUVQUk9NLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBiNjM4MTVlMzEzNTViNDRlNjU4OTliMzYxZGExZDhlZjY5NDBhYjkwCi1BdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci1EYXRlOglUdWUgRGVjIDIyIDIzOjA1OjQ1IDIwMDkgKzAxMDAKLQotICAgIG1vdmUgZGVmaW5pdGlvbiBvZiBtYWNyb3MgbGlrZWx5IGFuZCB1bmxpa2VseSB0byBjb21waWxlci5oCi0KLSAgICB0aGUgbWFjcm9zIGxpa2VseSBhbmQgdW5saWtlbHkgd2VyZSBkZWZpbmVkIGluIGluY2x1ZGUvbGludXgvbXRkL2NvbXBhdC5oLAotICAgIGJ1dCB1c2VkIGluIGNvZGUgbm90IHJlbGF0ZWQgdG8gTVRELiBtb3ZlZCB0aGUgbWFjcm8gZGVmaW5pdGlvbnMgdG8gY29tcGlsZXIuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KLQotY29tbWl0IGMzZDdlZWM2ZDg4OTQ1ZGVjMDYyNmNkZDRmNGEzNWNiNWY4M2VmMDAKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDIyIDEyOjQzOjAyIDIwMDkgKzAxMDAKLQotICAgIGNtZF9ib290bS5jOiBDaGFuZ2UgaW50ZXJwcmV0YXRpb24gb2Ygc3RhbmRhbG9uZSBpbWFnZSBwYXJhbWV0ZXJzLgotCi0gICAgQ3VycmVudCBjb2RlIHVzZXMgdGhlIHNlY29uZCBhcmd1bWVudCB0byBib290bSBmb3Igc3RhbmRhbG9uZSBpbWFnZXMgdG8KLSAgICBvdmVycmlkZSB0aGUgbG9hZCBhZGRyZXNzIHNwZWNpZmllZCBpbiB0aGUgaW1hZ2UgaW5zdGVhZCBvZiBwYXNzaW5nIGFsbAotICAgIHBhcmFtZXRlcnMgYXMgaXMgdG8gdGhlIGFwcGxpY2F0aW9uLiAgVGhpcyBiZWhhdmlvdXIgaXMgbm90IGRvY3VtZW50ZWQKLSAgICBhbmQgbm90IGluIGxpbmUgd2l0aCBob3cgdGhlIGdvIGNvbW1hbmQgd29ya3MgZm9yIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zLAotICAgIHNvIHdlIHNpbXBseSBkcm9wIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA4YjgyOGE4ZjQ0YjdlZTk5NTNjN2JhNjNlNjRiMWU4MDc5MDEzOWIzCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJVHVlIERlYyAyMiAxMjo0MzowMSAyMDA5ICswMTAwCi0KLSAgICBjbWRfYm9vdG0uYzogRG8gbm90IGxvYWQgYSByYW1kaXNrIHdoZW4gbm90IGJvb3RpbmcgYSBrZXJuZWwuCi0KLSAgICBJbiBjYXNlIHdlIGJvb3QgYW4gaW1hZ2UgbWFya2VkIGFzICdzdGFuZGFsb25lJyBhbmQgJ2xpbnV4JywgdGhlIGN1cnJlbnQKLSAgICBjb2RlIGVycm9uZW91c2x5IHRyaWVkIHRvIGxvYWQgYSByYW1kaXNrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCAxNjAzNWJjZDhjODFjM2M1OWRkZGZiNTRmNDhlODA1OWE2MjNiMTNjCi1BdXRob3I6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KLURhdGU6CU1vbiBEZWMgMjEgMTg6NDA6NDQgMjAwOSAtMDUwMAotCi0gICAga2dkYjogdXBkYXRlIG1lbTJoZXgvaGV4Mm1lbSBmdW5jcwotCi0gICAgQ29udmVydCB0aGUgZnVuY3MgdG8gZG8gdGhlIGNvbnZlcnNpb24gaW5saW5lIHNvIHRoYXQgd2UgY2FuIGRvIHRoZSBjb3B5Ci0gICAgYWxsIGF0IG9uY2Ugd2l0aCBtZW1jcHkuICBUaGlzIGxldCdzIHVzIHB1c2ggb3V0IGFuIHdlaXJkIGFyY2gtc3BlY2lmaWMKLSAgICBpc3N1ZSB3aXRoIGFjY2Vzc2luZyBkaWZmZXJlbnQgcmVnaW9ucyBvZiBtZW1vcnkgdG8gdGhlIG1lbWNweSBmdW5jdGlvbgotICAgIGxpa2UgdGhlIE1NUnMgb24gQmxhY2tmaW4gc3lzdGVtcywgYW5kIGl0IHNob3VsZCBiZSBhIGJpdCBmYXN0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgY2JiMGNhYjFkOTI5ODM5ZDFjZjE3MGI1NGIxZmVmMDU4OTY0MzNlYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRGVjIDIxIDE4OjQwOjQzIDIwMDkgLTA1MDAKLQotICAgIGtnZGI6IGRyb3AgZHVwbGljYXRlIGRlYnVnZ2VyX2V4Y2VwdGlvbl9oYW5kbGVyCi0KLSAgICBUaGUgZGVidWdnZXJfZXhjZXB0aW9uX2hhbmRsZXIgZGVmaW5pdGlvbiBpcyB0aGUgc2FtZSBmb3IgZXZlcnlvbmUsIHNvIHVzZQotICAgIHRoZSBjb21tb24gb25lIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDBjOTA5NTUxZjg4YzBkOTJhOTE5ZmY3MDEyN2RmN2IzM2NkZDQ3M2QKLUF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotRGF0ZToJTW9uIERlYyAyMSAxODo0MDo0MiAyMDA5IC0wNTAwCi0KLSAgICBrZ2RiOiBhZGQgZGVmYXVsdCBnZW5lcmljIHN0dWJzCi0KLSAgICBUaGUgZGVmYXVsdCBrZ2RiIGZ1bmN0aW9ucyBjYW4gYmUgaW1wbGVtZW50ZWQgd2l0aCBjb21tb24gVS1Cb290IGZ1bmN0aW9ucywKLSAgICBzbyByYXRoZXIgdGhhbiBmb3JjZSBldmVyeW9uZSB0byBjb3B5ICYgcGFzdGUgdGhlc2UgdGhpbmdzLCBjcmVhdGUgYSBzZXQgb2YKLSAgICB3ZWFrIHN0dWJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGZhMjc0NGRlNjU4NGM5Mjc1MGY4MDdhMDA2ZTIwYTU5ZWUwNDZlNzYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIERlYyAyMSAxNDoxOToxMiAyMDA5IC0wNTAwCi0KLSAgICBuZXRjb25zb2xlOiBtYXJrIGxvY2FsIGZ1bmNzIHdpdGggc3RhdGljCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3MjkzZTA1NzdmMTQ5Yjc1NTk1YjZmNmNlYjc1YmY1MGE1MjNhZmY2Ci1BdXRob3I6IE1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBhbmFsb2cuY29tPgotRGF0ZToJU2F0IERlYyAxOSAwODoxOTowOSAyMDA5IC0wNTAwCi0KLSAgICBlYXN5bG9nbzogYWRkIHN1cHBvcnQgZm9yIDE2LWJpdCBSR0I1NjUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDBmNTk3YmMyYTgwMzUzYmNkMGZkNGRhZjQyZTIwNDdjOTU5NDg1YzgKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglGcmkgRGVjIDE4IDE3OjM1OjU3IDIwMDkgKzAxMDAKLQotICAgIG1wYzV4eHgvY3B1X2luaXQuYzogQ29udmVydCB0byBJTyBhY2Nlc3NvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDE4ZTg5ODkwNjI1Yzg2YmU2Yzk3MWMwMWI4MjRkMTRiYmRkNzhlMjUKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglGcmkgRGVjIDE4IDE3OjM1OjU2IDIwMDkgKzAxMDAKLQotICAgIG1wYzV4eHguaDogQWRkIHN0cnVjdHVyZSBkZWZpbml0aW9uIGZvciBYTEIgYXJiaXRlciBibG9jay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgMTBjMzJmZjU5ZjdhYmUzNTJiNTQ4MDY2OTE4YmM1ZWEzOWU3YzQ3YgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRGVjIDIgMjE6MTU6MDMgMjAwOSAtMDUwMAotCi0gICAgY29uZmlnX2RlZmF1bHRzLmg6IG5ldyBoZWFkZXIgZm9yIGNvbW1vbiB1LWJvb3QgY29uZmlnIGRlZmF1bHRzCi0KLSAgICBUaGVyZSBhcmUgYSBidW5jaCBvZiBmZWF0dXJlcyBpbiBVLUJvb3QgdGhhdCB3ZSB3YW50IHRvIGVuYWJsZSBieSBkZWZhdWx0LAotICAgIGFuZCBpdCdzIGJlc3QgaWYgd2UgY2VudHJhbGl6ZSB0aGVtIGluIG9uZSBwbGFjZSByYXRoZXIgdGhhbiB1cGRhdGluZyBhbGwKLSAgICB0aGUgYm9hcmQgZmlsZXMgb3V0IHRoZXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjQ5MTdjYTM4OTMzZDEwYjM3NjNmNjFkZjdhMWU1OGUxZTEyN2I1MgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIEphbiAxNyAxNTozODoyNiAyMDEwIC0wNjAwCi0KLSAgICBQQ0llLCBVU0I6IFJlcGxhY2UgJ2VuZCBwb2ludCcgcmVmZXJlbmNlcyB3aXRoICdlbmRwb2ludCcKLQotICAgIFdoZW4gcmVmZXJyaW5nIHRvIFBDSWUgYW5kIFVTQiAnZW5kcG9pbnQnIGlzIHRoZSBzdGFuZGFyZCBuYW1pbmcKLSAgICBjb252ZW50aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDZhNDVlMzg0OTU1MjYyODgyMzc1YTI3ODU0MjZkYzY1YWViNjM2YzQKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVN1biBKYW4gMyAwODozMzo1OCAyMDEwICswMTAwCi0KLSAgICBNYWtlIGdldGVudl9JUGFkZHIoKSBnbG9iYWwKLQotICAgIFRoZXJlIGFyZSBib2FyZHMgb3V0IHRoZXJlIHRoYXQgZG8gbm90IGhhdmUgbmV0d29yayBzdXBwb3J0IGluCi0gICAgVS1Cb290IChDT05GSUdfQ01EX05FVCBub3Qgc2V0KSwgYnV0IHRoZXkgZG8gc28gaW4gTGludXguIFRoaXMKLSAgICBtYWtlcyBpdCBkZXNpcmFibGUgdG8gYmUgYWJsZSB0byBwb3J0IG5ldHdvcmsgY29uZmlndXJhdGlvbiAobGlrZQotICAgIHRoZSBJUCBhZGRyZXNzKSB0byB0aGUgTGludXgga2VybmVsLgotCi0gICAgV2Ugc2hvdWxkIG5vdCBtYWtlIHRoZSBwYXNzaW5nIG9mIHRoZSBJUCBjb25maWd1cmF0aW9uIHRvIExpbnV4Ci0gICAgZGVwZW5kZW50IG9uIFUtQm9vdCBmZWF0dXJlcyAvIHNldHRpbmdzLgotCi0gICAgRm9yIHRoaXMsIG1ha2UgZ2V0ZW52X0lQYWRkcigpIGdsb2JhbC4gVGhpcyBmaXhlcyBidWlsZCBlcnJvcgotCi0gICAgdS1ib290L2xpYl94eHgvYm9hcmQuYzozNjA6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGVudl9JUGFkZHInCi0KLSAgICBvbiB2YXJpb3VzIGFyY2hpdGVjdHVyZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgODQ2YTYzOTFlNGJjOWZkZDcyMTc1M2ExMDIxOTUzZmYwY2ExN2MyNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgSmFuIDE1IDA0OjUwOjQwIDIwMTAgLTA1MDAKLQotICAgIEJsYWNrZmluOiBkcm9wIC5laF9mcmFtZSBmcm9tIGxpbmtlciBzY3JpcHQKLQotICAgIE5vdGhpbmcgaW4gVS1Cb290IHVzZXMgcnVudGltZSBDKysgZXhjZXB0aW9ucy91bndpbmRpbmcsIHNvIHRoZXJlIGlzIG5vCi0gICAgbmVlZCB0byBsaXN0IHRoaXMgc2VjdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGVkOTEyZDRkNjU5ZTY3OTEwZWRjYTA0NDk4ODAzZGIyNGQ4MjY2MTUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIEphbiAxNSAwNDo0NzowNiAyMDEwIC0wNTAwCi0KLSAgICBCbGFja2ZpbjogdXNlIHNvcnQgZnVuY3MgaW4gdGhlIGxpbmtlciBzY3JpcHQKLQotICAgIFRoaXMgaXMganVzdCBCbGFja2ZpbiBjYXRjaGluZyB1cCB3aXRoIGV2ZXJ5IG9uZSBlbHNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmFlZGEyZDA1NGJiMzIwMjdiZWQzM2Q5YzNhNjNkMTUyMTY0YjVlMAotQXV0aG9yOiBIYXJhbGQgS3JhcGZlbmJhdWVyIDxIYXJhbGQuS3JhcGZlbmJhdWVyQGJsdWV0ZWNobml4LmF0PgotRGF0ZToJV2VkIEphbiAxMyAwOTowNDo1MyAyMDEwIC0wNTAwCi0KLSAgICBCbGFja2ZpbjogdGNtLWJmNTE4OiBuZXcgYm9hcmQgcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjNDZhMGViZjgyZDNmZDI3ZGQyMWFkN2Q0ZmU3ZjExYzJiMmIwYjIxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBKYW4gOCAwNzo1NjoxNyAyMDEwIC0wNTAwCi0KLSAgICBCbGFja2ZpbjogZW5hYmxlIEpGRlMgc3VtbWFyeSBzdXBwb3J0IGZvciBBREkgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA5MTJkYThkNjA2OTk3ODIyZDQ0OTA1YjgzZWY0Nzc5OWExMzBhMWI5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBKYW4gOCAwNjoxNDoxMyAyMDEwIC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYmY1MThmLWV6YnJkOiBpbmNyZWFzZSBtb25pdG9yIGxlbmd0aAotCi0gICAgVGhlIGFkZGl0aW9uIG9mIEtHREIgb3ZlcmZsb3dlZCB0aGUgY3VycmVudCBsaW5rZXIgc2VjdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDAzNjQyYWVlZTBkNTE2NjBjMzVjOWRiZGRlNzg4ODJlYjNlZmIzNTAKLUF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotRGF0ZToJTW9uIERlYyAyMSAxNzowMjo0OCAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogaGFuZGxlIGFub21hbHkgMDUwMDAyNTcKLQotICAgIE5lZWQgdG8gcmVsb2FkIHRoZSBsb29wIGNvdW50ZXJzIHRvIGtlZXAgZnJvbSBjb3JydXB0aW5nIGhhcmR3YXJlIGxvb3BzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGI2ZGIyODM0NDA3ZDQ5ZWM0OGFjOGU5MjgxZmRkNzA0ZDVlZTNlYmEKLUF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotRGF0ZToJTW9uIERlYyAyMSAxNjo1OToyMSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2Zpbjoga2VlcCBod3RyYWNlIG9uIENQTEIgbWlzcwotCi0gICAgQ3Jhc2hlcyByYXJlbHkgaGFwcGVuIGluIHRoZSBDUExCIG1pc3MgaGFuZGxlciBjb21wYXJlZCB0byB0aGUgcmVzdCBvZgotICAgIFUtQm9vdCBjb2RlLCBzbyBkaXNhYmxlIGhhcmR3YXJlIHRyYWNpbmcgd2hlbiBwcm9jZXNzaW5nIG1pc3Nlcy4gIFRoaXMKLSAgICB3YXkgYSBjcmFzaCBkdWUgdG8gb3RoZXIgZnVuY3Rpb25zIHdpbGwgYmUgc2hvd24gcHJvcGVybHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMDA5Nzg3MGUzZDcyZjEwZWM1OGFlMjI0ODg5NDVmZDllZTM3Mjg5ZgotQXV0aG9yOiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+Ci1EYXRlOglNb24gRGVjIDIxIDE1OjMxOjA4IDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiBhZGQgYSBuZXRjb25zb2xlIGhlbHBlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDEwZWFmYTEwYmUyZGVhYmE0OTM5ZDBjMTljZDIxNjQ4ZjJkM2Q0YWEKLUF1dGhvcjogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+Ci1EYXRlOglUaHUgRGVjIDEwIDA5OjE5OjIxIDIwMDkgKzAwMDAKLQotICAgIEJsYWNrZmluOiBhZGQgc3VwcG9ydCBmb3IgQkY1MjctRVpLSVQgdjIuMQotCi0gICAgVGhlIG5ldyBib2FyZCByZXZpc2lvbiBoYXMgYSBkaWZmZXJlbnQgTENELgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOTQ0MmM0YTEzMzdkYmNmODJlM2JjMDJhMTJlMjRmNDkxZTBlNjEyMgotQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgotRGF0ZToJVHVlIERlYyA4IDA3OjI1OjU3IDIwMDkgKzAwMDAKLQotICAgIEJsYWNrZmluOiBiZjUyNy1lemtpdC9iZjU0OC1lemtpdDogYWRkIG11c2IgYm9hcmQgc3BlY2lmaWMgaW5pdGlhbGl6YXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IENsaWZmIENhaSA8Y2xpZmYuY2FpQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNTgxZDkyZWVmYzFhMDYwZWE1YzZlYjQyMDI4ODgwYTM3MDk1OTUzZAotQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgotRGF0ZToJTW9uIERlYyA3IDA4OjAzOjA2IDIwMDkgKzAwMDAKLQotICAgIEJsYWNrZmluOiBiZmluX3NwaTogcm91bmQgdXAgY2xvY2sgZGl2aWRlcgotCi0gICAgSWYgdGhlIHJlcXVlc3RlZCBjbG9jayBjYW5ub3QgYmUgZXhhY3RseSBvYnRhaW5lZCwgcm91bmQgaXQgdXAgc28gdGhhdCB3ZQotICAgIGVyciBvbiB0aGUgc2lkZSBvZiBzbGlnaHRseSBzbG93ZXIgcmF0aGVyIHRoYW4gc2xpZ2h0bHkgZmFzdGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBhNTJhZDRmOTk0ODZjZTNmNDA0ZjgzZjc1MjYzZTMyMTk1NmJiNmQ1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBOb3YgMzAgMTM6NTE6MjQgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IHB1bGwgaW8gZnVuY3MgZnJvbSBsaW51eAotCi0gICAgU29tZSBjb21tb24gY29kZSB1c2VzIG1vcmUgb2YgdGhlIGlvLmggZnVuY3MgdGhhbiB3ZSBjdXJyZW50bHkgcHJvdmlkZSwgc28KLSAgICBwdWxsIGluIGFsbCBvZiB0aGUgb25lcyBmcm9tIHRoZSBsaW51eCBrZXJuZWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1ZWVmZTdlOTk1MzdjYTM2NDE0OTYxODVmMjNiMWRjOWU3NmI0MDVjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBOb3YgMzAgMTM6MzQ6MDcgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IHNlY3Rpb24gb2ZmIHRoZSBDRi9JREUgaW8uaCBoYWNrcwotCi0gICAgVGhlc2UgbmVlZCB0byBiZSByZXRob3VnaHQsIGJ1dCB1bnRpbCB0aGF0IGhhcHBlbnMsIGlzb2xhdGUgdGhlIGhhY2sgc28KLSAgICB0aGF0IHdlIGNhbiBleHRlbmQgdGhlIGNvbW1vbiBjb2RlIHdpdGhvdXQgYnJlYWtpbmcgdGhpbmdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgM2IwNjJkYTMyNmY5YjM3ZDM0YWE4ZjgwYmY5ZDJmOWU3NGY1NWM4NgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gTm92IDMwIDEzOjMwOjE4IDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiBkcm9wIHVudXNlZCBmdW5jcyBmcm9tIGlvLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDVmNzk2NDRkMjY2NTc2M2Q1MjJlZjJkYjUzYzAyNmM1ZjQ4NjViMDIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE5vdiAzMCAxMzowODozOSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYmY1MzMtc3RhbXA6IHNwbGl0IGFuZCBjbGVhbnVwIENGL0lERSBjb2RlCi0KLSAgICBHaXZlIHRoZSBDRi9JREUgY29kZSBpdHMgb3duIGZpbGUgdG8ga2VlcCB0aGluZ3MgY2xlYW5seSBzZXBhcmF0ZWQuICBXaGlsZQotICAgIHdlJ3JlIGhlcmUsIGNsZWFuIHVwIHRoZSBjb2RlIHRvIHVzZSBjb21tb24gZnVuY3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZTU0YzgyMDk5MTNhM2YyNmFlMjg4MTllMzUxNWRmNTNlYzJiNDU0OAotQXV0aG9yOiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgotRGF0ZToJRnJpIE5vdiAyMCAwODoyNDo0MyAyMDA5ICswMDAwCi0KLSAgICBCbGFja2ZpbjogY29udmVydCBiZmluX3NkaCB0byBnZW5lcmljIG1tYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAxN2ViZDViZjMzOTMxNDRmM2VhZDE5Mzg0MzE4YTZlNWIwMWM0ZjkwCi1BdXRob3I6IENsaWZmIENhaSA8Y2xpZmYuY2FpQGFuYWxvZy5jb20+Ci1EYXRlOglUdWUgTm92IDE3IDA5OjM2OjIxIDIwMDkgKzAwMDAKLQotICAgIEJsYWNrZmluOiBiZmluX3NwaTogbGV0IGJvYXJkcyBjb250cm9sIGlkbGUgdmFsdWUKLQotICAgIFNvbWUgU1BJIGRldmljZXMgbGlrZSB0byBzZWUgaGlnaCBpZGxlIHZhbHVlcyByYXRoZXIgdGhhbiBsb3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGVhNjkzZjIyZDhkYmQ4YTY1ODY3YTYwYTdmM2ZhYWMzMGY4NWQ2NWIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE5vdiAxNCAxMzo1MzowMCAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYXNtL3N0cmluZy5oOiBkcm9wIHVzZWxlc3MgaW5jbHVkZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGY5NDgxNThmNzJlNmI4ODBkMDJlNGZhNTQ5MzYyZTRkYzI4NWViMWMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IE5vdiAxMiAxODo0Mjo1MyAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogdXNlIG5ldyBiZmluIHJlYWQvd3JpdGUgbW1yIGhlbHBlciBmdW5jcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMzEzZThhYWNjMWM5ZjVjYTA2MDg1ZmExOWIxNDI5ZmExOGEwMWFhYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgTm92IDEyIDE4OjQyOjA3IDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiBtb3ZlIHdhdGNoZG9nIGNvbmZpZyBjaGVjayB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZGM2YmM2NDVlMGNjMTkzOWIzMWNjNTQzNDY0MTVjZjhlMGRmZmM4OAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTm92IDExIDE5OjA4OjMzIDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiBmaXggTDEgSW5zdHJ1Y3Rpb24gc2l6ZXMgb24gQkY1MngvQkY1NHgKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGI3NjU5ZWYyZTc2NGY2MmZjMzM0ZjBkOTcwNzIxNDk2ODIzZTQ4ODgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIE5vdiAxMSAxNzoyOTozNSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYmY1MjctZXpraXQ6IGF1dG8tc2VsZWN0IE5BTkQgc2V0dGluZ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDc1MjdmZWVmMDZiMTNlOWZkNWI2ZDEwYTRiZmM4MWI1OWVlNTZmMjcKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE5vdiA5IDE5OjM4OjIzIDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiBzdXBwb3J0IGJvYXJkcyB3aXRoIG5vIGV4dGVybmFsIG1lbW9yeQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZGJkYTJjNjVlNWZlYzkyZDA3OTEzNjdiNTMwNDI5ODM3NDZjZTk1YgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gTm92IDkgMTk6NDQ6MDQgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IHJlLWFyY2hpdGVjdCBpbml0Y29kZQotCi0gICAgVGhlIHNpbmdsZSBpbml0Y29kZSBmdW5jdGlvbiB3YXMgZ3Jvd2luZyB1bndpZWxkeSwgc28gc3BsaXQgaXQgdXAgdGhlCi0gICAgZGlzdGluY3Qgc3RlcHMgaW50byB0aGVpciBvd24gZnVuY3Rpb24uICBUaGlzIHNob3VsZCBtYWtpbmcgZGlnZXN0aW5nIHRoZQotICAgIHJlc3VsdCBtdWNoIGVhc2llciBvbiBwZW9wbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmNTQwMmQ0YzI3ZTQ3MWMzMzNjYjg0YTgyYTQzN2U2MGM2MTgyNDQ5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBOb3YgOSAxODowODowOSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogZ2xvYmFsX2RhdGEuaDogbWFrZSBwdWxsIGluIG5lZWRlZCBoZWFkZXJzCi0KLSAgICBXZSBuZWVkIHRoZSBkZWZpbml0aW9uIG9mIGJkX3QgaW4gdGhpcyBoZWFkZXIsIHNvIHB1bGwgaW4gYXNtL3UtYm9vdC5oLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZmE0NWJkNDk4YTE5NzA1NzRmNGI3NTM5YjY3Y2MyMjg2ZjEzMjRmYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgTm92IDMgMDY6Mjg6MjIgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IGtpbGwgb2ZmIHVzZWxlc3MgaW5pdGRyYW0oKSB1c2FnZQotCi0gICAgV2hpbGUgdGhlIGluaXRkcmFtKCkgZnVuY3Rpb24gbWFrZXMgc2Vuc2Ugb24gc29tZSBhcmNoZXMsIGl0IGRvZXNuJ3QgZm9yCi0gICAgQmxhY2tmaW4gc3lzdGVtcyBhcyBpdCdzIGFsd2F5cyBpbXBsZW1lbnRlZCB0aGUgc2FtZSB3YXkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiMWUyYzU1MTlhMDZmOWE1ODQxYTdhNDM0YmY0ZGE0ZDM5M2Y4ZGY1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBOb3YgMyAwNjoxMTozMSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogbW92ZSBzZWN0aW9uIGxlbmd0aCBjYWxjdWxhdGlvbiB0byBsaW5rZXIgc2NyaXB0Ci0KLSAgICBUaGUgbGVuZ3RoIG9mIHRoZSBzZWN0aW9ucyBpcyBmaXhlZCBhdCBsaW5rIHRpbWUsIHNvIGxldCB0aGUgbGlua2VyIGRvIHRoZQotICAgIGNhbGN1bGF0aW9uIHJhdGhlciB0aGFuIGRvaW5nIGl0IG91cnNlbHZlcyBhdCBydW50aW1lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNDQ2NzA3YzkwZjUyZTVmY2FmZWNkNDY4OTIwY2ZhZDY4NWVlOWZjNwotQXV0aG9yOiBWYWxlbnRpbiBZYWtvdmVua292IDx5YWtvdmVua292QG5paXN0dC5ydT4KLURhdGU6CU1vbiBPY3QgMjYgMTg6NDM6MDQgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTYxLWFjdmlsb246IG5ldyBib2FyZCBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWYWxlbnRpbiBZYWtvdmVua292IDx5YWtvdmVua292QG5paXN0dC5ydT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAxNmFkYTRmNjZmZmVhNTM2NjJiN2E2MWE1MjIyY2JjODI1ZDY3MTc1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBPY3QgMTUgMTQ6NTk6NDYgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IEFESSBzZXR0aW5nczogZW5hYmxlIHNpbGVudCBjb25zb2xlIHN1cHBvcnQKLQotICAgIFZlcnkgbGl0dGxlIGFkZGl0aW9uYWwgY29kZSBvdmVyaGVhZCwgYW5kIG9ubHkgd29ya3Mgd2hlbiB0aGUgdXNlciBzZXRzIGFuCi0gICAgZW52IHZhciBhaGVhZCBvZiB0aW1lLCBzbyBkZWZhdWx0IHRvIG9uIG1ha2VzIHNlbnNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYWM0MWM3YTBlNzZmZTYzODQ5NDk1NzEzNzNkYzg0YTYwOTg5NjVhYwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgT2N0IDE1IDE0OjU1OjIxIDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZjUzNy1zdGFtcDogcmVuYW1lIFNQSS9NTUMgZGVmaW5lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmZDA0YTA1Yjg5ZDg0OGM3ODQxZDg1MTI3NTFiOGNjZThiNzkxZTY5Ci1BdXRob3I6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+Ci1EYXRlOglXZWQgT2N0IDE0IDA4OjM3OjMyIDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiB1cGRhdGUgdGlueSBib2FyZCBzZXR0aW5ncyAodm9sdGFnZS9kZWZhdWx0IGVudikKLQotICAgIFRoZSB0aW55Ym9hcmRzIGxpa2UgdG8gcnVuIGF0IGEgbGl0dGxlIGxvd2VyIHZvbHRhZ2UgdGhhbiB0aGUgZGVmYXVsdCwgYW5kCi0gICAgdGhleSBwcmVmZXIgdG8gYm9vdCBvdmVyIHRoZSBuZXR3b3JrLiAgRm9yIHRoZSBsYXR0ZXIsIGV4dGVuZCB0aGUgY29tbW9uCi0gICAgY29kZSBhIGxpdHRsZSB0byBtYWtlIHRoaXMgZWFzaWVyLgotCi0gICAgQWxzbyBmaXggdGhlIGNtLWJmNTI3IGVudiBzZWN0b3Igc2l6ZSB3aGlsZSB3ZSdyZSBpbiBoZXJlIHRvIHJlZmxlY3QgdGhlCi0gICAgZmxhc2ggdGhhdCBpcyBhY3R1YWxseSBpbiB1c2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgS3JhcGZlbmJhdWVyIDxIYXJhbGQuS3JhcGZlbmJhdWVyQGJsdWV0ZWNobml4LmF0PgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDc2ZDgyMTg3YzZjY2NiY2Q4ZDUxNDAxNWMzYjI4M2YwNWVlOGFjNWMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIEp1bCAyMSAyMjoxNzozNiAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdHdlYWsgZW1iZWRkZWQgTERSIGVudiBjb25maWcgb3B0aW9uCi0KLSAgICBVc2UgdGhlIGNvbW1vbiBjb25maWcgb3B0aW9uIGZvciBleHRyYWN0aW5nIHRoZSBlbnZpcm9ubWVudCBmb3IgZW1iZWRkaW5nCi0gICAgaW50byBMRFIgZmlsZXMgYW5kIGNsYXJpZnkgdGhlIExEUi1zcGVjaWZpYyBvcHRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyNzQwNTQ0ODgxZjY1MjU2Njc1NjgxNWRkYTRkYTBiY2Q5NDZlOWRlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDE1IDExOjIwOjEwIDIwMTAgKzAxMDAKLQotICAgIG1hbGxvYzogcmV0dXJuIE5VTEwgaWYgbm90IGluaXRpYWxpemVkIHlldAotCi0gICAgV2hlbiBtYWxsb2MoKSB3YXMgY2FsbGVkIGJlZm9yZSBpdCB3YXMgcHJvcGVybHkgaW5pdGlhbGl6ZWQKLSAgICAoYXMgd291bGQgaGFwcGVuIGlmIHdoZW4gdXNlZCBiZWZvcmUgcmVsb2NhdGlvbiB0byBSQU0pIGl0IHJldHVybmVkCi0gICAgcmFuZG9tLCBub24tTlVMTCB2YWx1ZXMsIHdoaWNoIGNhbGxlZCBhbGwga2luZHMgb2YgZGlmZmljdWx0IHRvIGRlYnVnCi0gICAgc3Vic2VxdWVudCBlcnJvcnMuCi0KLSAgICBNYWtlIHN1cmUgdG8gcmV0dXJuIE5VTEwgd2hlbiBpbml0aWFsaXphdGlvbiB3YXMgbm90IGRvbmUgeWV0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGYwOTgzMzcxNTJjYTQ4ZTEzNTQ0OGY1ZTc4MzZjY2U5MzhlMTJiYzAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gMTUgMTE6MTA6MzMgMjAxMCArMDEwMAotCi0gICAgSkZGUzI6IGRyb3Agc3VwcG9ydCBmb3IgTFpBUkkgY29tcHJlc3Npb24gbW9kZQotCi0gICAgU3VwcG9ydCBmb3IgTFpBUkkgY29tcHJlc3Npb24gbW9kZSB3YXMgYWRkZWQgYmFzZWQgb24gYSBNVEQgQ1ZTCi0gICAgc25hcHNob3Qgb2YgTWFyY2ggMTMsIDIwMDUuIEhvd2V2ZXIsIGZzL2pmZnMyL2NvbXByX2x6YXJpLmMgY29udGFpbnMKLSAgICBjb250cmFkaWN0b3J5IGxpY2Vuc2luZyB0ZXJtczogdGhlIG9yaWdpbmFsIGNvcHlyaWdodCBjbGF1c2Ugc2F5cyAiQWxsCi0gICAgcmlnaHRzIHJlc2VydmVkLiBQZXJtaXNzaW9uIGdyYW50ZWQgZm9yIG5vbi1jb21tZXJjaWFsIHVzZS4iLCBidXQKLSAgICBsYXRlciByZWZlcmVuY2UgdG8gdGhlIGZpbGUgJ0xJQ0VOQ0UnIGluIHRoZSBqZmZzMiBkaXJlY3Rvcnkgd2FzIGFkZGVkCi0gICAgd2hpY2ggc2F5cyBHUEwgdjIgb3IgbGF0ZXIuCi0KLSAgICBBcyBubyBib2FyZHMgZXZlciB1c2VkIExaQVJJIGNvbXByZXNzaW9uLCBhbmQgdGhpcyBmaWxlIGlzIGFsc28gbm90Ci0gICAgcHJlc2VudCBpbiByZWNlbnQgTVREIGNvZGUsIHdlIHJlc29sdmUgdGhpcyBjb25mbGljdCBieSByZW1vdmluZyB0aGUKLSAgICBjb25mbGljdGluZyBmaWxlIGFuZCByZWZlcmVuY2VzIHRvIGl0LgotCi0gICAgQWxzbyBjb3B5IHRoZSByZWZlcmVuY2VkIGJ1dCBtaXNzaW5nIGZpbGUgJ0xJQ0VOQ0UnIGZyb20gdGhlIGN1cnJlbnQKLSAgICBNVEQgc291cmNlIHRyZWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzIxNzkwZjYxYmI5MmZlYWQwZmMwMWI4ZDA1NWFhMzMxZDhkY2Y4NQotQXV0aG9yOiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KLURhdGU6CVNhdCBKYW4gOSAxNjo1Mzo1NCAyMDEwIC0wNTAwCi0KLSAgICB1c2I6IG11c2I6IGFkZCB2aXJ0dWFsIHJvb3QgaHViIGNvbnRyb2wgc3VwcG9ydAotCi0gICAgRm9yIE1VU0IgZGV2aWNlcyB0aGF0IGRvIG5vdCBzdXBwb3J0IG11bHRpcG9pbnQgKGh1YnMpLCB3ZSBoYXZlIHRvIGVtdWxhdGUKLSAgICBhIHJvb3QgaHViIHNvIHRoYXQgd2UgY2FuIHN1cHBvcnQgY29yZSBvcGVyYXRpb25zIGxpa2UgcmVzZXR0aW5nIHBvcnRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1NTllMmM4N2U0NWFlNzI2MTgzN2Q0OTQ1NDExYzA0ODMzOTM3ZDJhCi1BdXRob3I6IENocmlzIFpoYW5nIDxjaHJpc0BzZWFtaWNyby5jb20+Ci1EYXRlOglXZWQgSmFuIDYgMTM6MzQ6MDYgMjAxMCAtMDgwMAotCi0gICAgQWRkcyBFSENJIGRlZmluaXRpb25zIHRvIHNlcXVvaWEgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlLgotCi0gICAgQWRkcyByZXF1aXJlZCBkZWZpbml0aW9ucyBmb3IgRUhDSSBzdXBwb3J0IGluIHNlcXVvaWEgY29uZmlndXJhdGlvbiBmaWxlLgotICAgIEJ1dCBzdGlsbCBrZWVwcyB0aGUgT0hDSSBhcyBkZWZhdWx0IGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IENocmlzIFpoYW5nIDxjaHJpc0BzZWFtaWNyby5jb20+Ci0KLWNvbW1pdCA1ZjgyODg3ZmVlY2Q3ODk1NTkzNDAxZjFjY2RhODY2YmZiMjk5ZmJiCi1BdXRob3I6IENocmlzIFpoYW5nIDxjaHJpc0BzZWFtaWNyby5jb20+Ci1EYXRlOglXZWQgSmFuIDYgMTM6MzQ6MDUgMjAxMCAtMDgwMAotCi0gICAgQWRkIHBwYzQ0MGVweCBVU0IgZWhjaSBzdXBwb3J0LgotCi0gICAgQ3VycmVudGx5IHBwYzQ0MGVweCB1c2VzIE9IQ0kgZm9yIFVTQiBmdWxsLXNwZWVkIHN1cHBvcnQuIFRoaXMgY2hhbmdlIGFkZHMKLSAgICBzdXBwb3J0IGZvciBFSENJLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQ2hyaXMgWmhhbmcgPGNocmlzQHNlYW1pY3JvLmNvbT4KLQotY29tbWl0IGI0MTYxOTFhMTQ3NzBjNmJjYzZmZDY3YmU3ZGVjZjgxNTliMmJhZWUKLUF1dGhvcjogQ2hyaXMgWmhhbmcgPGNocmlzQHNlYW1pY3JvLmNvbT4KLURhdGU6CVdlZCBKYW4gNiAxMzozNDowNCAyMDEwIC0wODAwCi0KLSAgICBGaXggRUhDSSBwb3J0IHJlc2V0LgotCi0gICAgSW4gVVNCIGVoY2kgZHJpdmVyLCB0aGUgcG9ydCByZXNldCBpcyBub3QgdGVybWluYXRlZC4gRUhDSSBzcGVjIHNheXMgIkEgaG9zdAotICAgICBjb250cm9sbGVyIG11c3QgdGVybWluYXRlIHRoZSByZXNldCBhbmQgc3RhYmlsaXplIHRoZSBzdGF0ZSBvZiB0aGUgcG9ydCB3aXRoaW4KLSAgICAgMiBtaWxsaXNlY29uZHMiLiBXaXRob3V0IHRlcm1pbmF0aW9uLCBhIHBvcnQgc3RheXMgYXQgcmVzZXQgc3RhdGUuIFRoaXMgaXMKLSAgICAgb2JzZXJ2ZWQgb24gcHBjNHh4KHNlcXVvaWEpIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IENocmlzIFpoYW5nIDxjaHJpc0BzZWFtaWNyby5jb20+Ci0KLWNvbW1pdCBiMzAxYmUwNTk5ZDE0YmU0NmZjMDg4ODYxYmI3OTg2NDg4NDRhZWE1Ci1BdXRob3I6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLURhdGU6CVRodSBEZWMgMjQgMTQ6MjA6NDEgMjAwOSArMDUzMAotCi0gICAgb21hcDM6IGZpeCBjb21waWxlIHdhcm5pbmcKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyB3YXJuaW5nIGR1cmluZyBjb21waWxlOgotCi0gICAgb21hcDMuYzogSW4gZnVuY3Rpb24gJ211c2JfcGxhdGZvcm1faW5pdCc6Ci0gICAgb21hcDMuYzoxMjY6IHdhcm5pbmc6IGxhYmVsICdlbmQnIGRlZmluZWQgYnV0IG5vdCB1c2VkCi0KLSAgICBQcm9ibGVtIHJlcG9ydGVkIGJ5OiBEaXJrIEJlaG1lW2RpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb21dCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Ci0KLWNvbW1pdCBlNjA4ZjIyMWMxMzk0M2Q4OGU4NmY0NDc1M2UyMzY2ODM0MmMzZGYzCi1BdXRob3I6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgotRGF0ZToJV2VkIERlYyAxNiAyMjowNDowMiAyMDA5IC0wNTAwCi0KLSAgICB1c2I6IG11c2I6IGFkZCBzdXBwb3J0IGZvciBCbGFja2ZpbiBNVVNCCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBDbGlmZiBDYWkgPGNsaWZmLmNhaUBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGJjNzJhOTE5ZTAzNzc4MmY2NGUzYWM0NWM5MWJjNjA0MDhlNTdlODUKLUF1dGhvcjogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+Ci1EYXRlOglXZWQgRGVjIDE2IDIyOjA0OjAxIDIwMDkgLTA1MDAKLQotICAgIHVzYjogbXVzYjogY2hhbmdlIHJ4Y3NyIHJlZ2lzdGVyIGZyb20gd3JpdGUgdG8gcmVhZC9tb2RpZnkvd3JpdGUKLQotICAgIFRoZSBSWCBDb250cm9sL1N0YXR1cyByZWdpc3RlciBoYXMgYml0cyB0aGF0IHdlIHdhbnQgdG8gcHJlc2VydmUsIHNvIGRvbid0Ci0gICAganVzdCB3cml0ZSBvdXQgYSBzaW5nbGUgYml0LiAgUHJlc2VydmUgdGhlIG90aGVycyBiaXRzIGluIHRoZSBwcm9jZXNzLgotCi0gICAgVGhlIG9yaWdpbmFsIGNvZGUgcG9zdGVkIHRvIHRoZSB1LWJvb3QgbGlzdCBoYWQgdGhpcyBiZWhhdmlvciwgYnV0IGxvb2tzCi0gICAgbGlrZSBpdCB3YXMgbG9zdCBzb21ld2hlcmUgYWxvbmcgdGhlIHdheSB0byBtZXJnaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCA4ODY4ZmQ0NDNiN2E1MmJmNDMzOTAzY2M5NTI3NDAzYWQwNTVhY2I5Ci1BdXRob3I6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgotRGF0ZToJV2VkIERlYyAxNiAyMjowNDowMCAyMDA5IC0wNTAwCi0KLSAgICB1c2I6IG11c2I6IG1ha2UgbXVsdGlwb2ludCBvcHRpb25hbAotCi0gICAgVGhlIG11bHRpcG9pbnQgaGFuZGxpbmcgdW5kZXIgTVVTQiBpcyBvcHRpb25hbCwgYW5kIHNvbWUgcGFydHMgKGxpa2UgdGhlCi0gICAgQmxhY2tmaW4gcHJvY2Vzc29yKSBkbyBub3QgaW1wbGVtZW50IHN1cHBvcnQgZm9yIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBkZjQwMmJhMzgxMDNkZjUxZjY5Mjk4NDhiNmE3OTdlZmY0ZGI2MWY4Ci1BdXRob3I6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgotRGF0ZToJV2VkIERlYyAxNiAyMjowMzo1OSAyMDA5IC0wNTAwCi0KLSAgICB1c2I6IG11c2I6IG1ha2UgZmlmbyBzdXBwb3J0IGNvbmZpZ3VyYWJsZQotCi0gICAgVGhlIGR5bmFtaWMgRklGTyBoYW5kbGluZyB1bmRlciBNVVNCIGlzIG9wdGlvbmFsLCBhbmQgc29tZSBwYXJ0cyAobGlrZQotICAgIHRoZSBCbGFja2ZpbiBwcm9jZXNzb3IpIGRvIG5vdCBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgaXQuCi0KLSAgICBEdWUgdG8gdGhpcywgdGhlIEZJRk8gcmVhZGluZy93cml0aW5nIHN0ZXBzIG5lZWQgc3BlY2lhbCBoYW5kbGluZywgc28KLSAgICBtYXJrIHRoZSBjb21tb24gdmVyc2lvbnMgd2VhayBzbyBkcml2ZXJzIGNhbiBvdmVycmlkZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IENsaWZmIENhaSA8Y2xpZmYuY2FpQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZGMyY2QwNWM5MWExMzRkNTNmYWRhNDFlOGY5N2E0MzRiZTIyZGUwMgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRGVjIDE2IDIyOjAzOjU4IDIwMDkgLTA1MDAKLQotICAgIHVzYjogbXVzYjogbWFrZSBzdXJlIHRoZSByZWdpc3RlciBsYXlvdXQgaXMgcGFja2VkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCA3YjQyOTI4ODNiNmZkYzQyOTg0NjcxZmJlNGUwYTM1MmVjNzA0YmRlCi1BdXRob3I6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgotRGF0ZToJVHVlIERlYyAyMiAxMDo1NjoxNCAyMDA5ICswNTMwCi0KLSAgICBEQTgzMDogQWRkIHVzYiBjb25maWcKLQotICAgIEFkZGluZyBVU0IgY29uZmlndXJhdGlvbi4gRGVmYXVsdCBpcyBzZXQgZm9yIFVTQiBNU0MgaG9zdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgotCi1jb21taXQgNzM1OTI3M2Q5NDZhN2RjZGUwNGM1ZThkNWJhZDY2OTE0NmVmYzg3YwotQXV0aG9yOiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KLURhdGU6CVR1ZSBEZWMgMjIgMTA6NTY6MTMgMjAwOSArMDUzMAotCi0gICAgREE4eHg6IEFkZCBNVVNCIGhvc3Qgc3VwcG9ydAotCi0gICAgVGVzdGVkIFVTQiBob3N0IGZ1bmN0aW9uYWxpdHkgb24gREE4MzAgRVZNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3dhbWluYXRoYW4gUyA8c3dhbWkuaXllckB0aS5jb20+Ci0KLWNvbW1pdCAwYjIzMjMxMGIyMDg3ZDQyNzhmYjIyNGZhMDFlMjI4MTM2ZmI4YmRmCi1BdXRob3I6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgotRGF0ZToJVHVlIERlYyAyMiAxMDo1NjoxMiAyMDA5ICswNTMwCi0KLSAgICBEQTh4eDogQWRkIEdQSU8gcmVnaXN0ZXIgZGVmaW5pdGlvbnMKLQotICAgIEFkZGVkIERBOHh4IEdQSU8gYmFzZSBhZGRyZXNzZXMgaW4gZ3Bpb19kZWZzLmggYW5kIHBvaW50ZXJzCi0gICAgdG8gZGlmZmVyZW50IEJBTktzIHdoaWNoIGNhbiBiZSB1c2VkIHRvIHByb2dyYW0gR1BJT3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KLQotY29tbWl0IDgyYTgyMWY4OWJlZTkxM2Q3YmExN2NiNTAwYzc3OGNmMDhkY2UzMjEKLUF1dGhvcjogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+Ci1EYXRlOglUdWUgRGVjIDIyIDEwOjU2OjExIDIwMDkgKzA1MzAKLQotICAgIERBODMwOiBBZGQgcGlubXV4IGZvciBVU0IwX0RSVlZCVVMKLQotICAgIFVTQjBfRFJWVkJVUyBwaW5tdXggY29uZmlndXJhdGlvbiBpcyByZXF1aXJlZCBmb3IgVVNCIGZ1bmN0aW5hbGl0eQotICAgIGluIHVib290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3dhbWluYXRoYW4gUyA8c3dhbWkuaXllckB0aS5jb20+Ci0KLWNvbW1pdCBhM2Y1ZGExYmVlOWE4YzM0M2E0MTEwODBkN2Q0NjhiZGM3ODc5NGE0Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IEphbiA3IDA4OjU2OjAwIDIwMTAgKzAxMDAKLQotICAgIG1wYzgzeHg6IGFkZCBzdXBwb3J0IGNvbmZpZ3VyZSBidXMgcGFya2luZwotCi0gICAgQWRkIHN1cHBvcnQgdG8gY29uZmlndXJlIGJ1cyBwYXJraW5nIG1vZGUgYW5kIG1hc3RlciBpbiBidXMgYXJiaXRyYXRpb24KLSAgICBjb25maWd1cmF0aW9uIChBQ1IpLiBBZGQgdGhpcyBmb3IgdGhlIGttZXRlcjEgcG9ydDoKLQotICAgIENvbmZpZ3VyZSBidXMgYXJiaXRlciB3aXRoIHJlY29tbWVuZGVkIHZhbHVlcyBmcm9tIEZyZWVzY2FsZQotICAgIHRvIGltcHJvdmUgYnVzIGxhdGVuY3kvdGhyb3VnaHB1dCBmb3IgYXBwbGljYXRpb24gd2l0aAotICAgIGludGVuc2l2ZSBRdWljY0VuZ2luZSBhY3Rpdml0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMGRhYTJlMDZmMDVkOTdjMDNjNTliNjU2ZDUwMzcxMzE5YmYyOWVjCi1BdXRob3I6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLmV1PgotRGF0ZToJVHVlIERlYyA4IDA5OjIxOjQxIDIwMDkgKzAxMDAKLQotICAgIG1wYzgzeHg6IHZtZTgzNDk6IEZpeCBwb3dlciB1cCByZXNldCBzZXF1ZW5jZSBmb3IgdHNpMTQ4Ci0KLSAgICBSZW1vdmUgUENJIHJlc2V0LCBpZiB0aGVyZSBpcyBhIG1vbmFyY2ggUE1DIG1vZHVsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotICAgIGNvbnZlcnQgY2xyYml0c19iZTMyICsgc2V0Yml0c19iZTMyIHRvIGNscnNldGJpdHNfYmUzMiwgdXNlIG91dF9iZTMyIHRvIHNldCBnY3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMWRlZTliZTY4M2M5YjBmMDYwNDUyYWFmMWE5N2EzNGZhZTg3ZjA3YQotQXV0aG9yOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC5ldT4KLURhdGU6CVR1ZSBEZWMgOCAwOToxMzowOCAyMDA5ICswMTAwCi0KLSAgICBtcGM4M3h4OiBBZGQgc3VwcG9ydCBmb3IgTVBDODM0OSBlc2QgY2FkZHkyCi0KLSAgICBUaGUgY2FkZHkyIGlzIGEgdmFyaWFudCBvZiB0aGUgYWxyZWFkeSBzdXBwb3J0ZWQgdm1lODM0OS4gU28gd2UganVzdAotICAgIGFkZCB0aGUgZGlmZmVyZW5jZXMgdG8gdGhpcyBib2FyZCBwb3J0LiBUbyBiZXR0ZXIgc3VwcG9ydCB0aG9zZSB0d28KLSAgICBib2FyZHMgd2Ugc3dpdGNoZWQgZnJvbSBmaXhlZCBTRFJBTSBjb25maWd1cmF0aW9uIHRvIHVzYWdlIG9mCi0gICAgc3BkX3NkcmFtKCkuIFRoaXMgaXMgZG9uZSBieSBwcm92aWRpbmcgYSBib2FyZCBzcGVjaWZpYyBTUEQgRUVQUk9NCi0gICAgcm91dGluZSB3aXRoIGRpZmZlcmVudCB2YWx1ZXMgZm9yIGJvdGggYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi0gICAgY2hhbmdlZCB0byB1c2UgbWtjb25maWcgLXQgb3B0aW9uIGluc3RlYWQsIHBsdXMgbWlzYyBjb2RpbmdzdHlsZSBmaXhlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3NjkzNjQwYWNkNTIyMmY1YTY0ZTU5Y2NmNWUzYmM1MTFlODA1NGI5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBEZWMgOCAwOToxMDowNCAyMDA5ICswMTAwCi0KLSAgICBtcGM4M3h4OiBzcGRfc2RyYW0uYzogRGlzYWJsZSBtZW1vcnkgY29udHJvbGxlciBiZWZvcmUgaW5pdGlhbGl6aW5nCi0KLSAgICBUaGUgbWVtb3J5IGNvbnRyb2xsZXIgY291bGQgYWxyZWFkeSBiZSBlbmFibGVkLCB3aGVuIHNwZF9zZHJhbSgpIGlzCi0gICAgY2FsbGVkLiBUaGlzIGNvdWxkIGJlIHRoZSBjYXNlIGZvciBleGFtcGxlLCB3aGVuIHRoZSBTRFJBTSBpcyBpbml0aWFsaXplZAotICAgIGJ5IHRoZSBKVEFHIGRlYnVnZ2VyLgotCi0gICAgVGhlICJzeW5jIiBhZnRlciB0aGUgcmVnaXN0ZXIgYWNjZXNzIHZpYSB0aGUgYWNjZXNzb3IgZnVuY3Rpb24gaXMKLSAgICBzdGlsbCBuZWVkZWQsIGJlY2F1c2UgdGhlIG1hY3JvIHVzZXMgdGhlIHN5bmMgYmVmb3JlIHRoZSByZWFsIHdyaXRlCi0gICAgaXMgZG9uZS4gU28gdW50aWwgbm90IGFsbCBhY2Nlc3NlcyBhcmUgY29udmVydGVkIHRvIHVzaW5nIGFjY2Vzc29yCi0gICAgZnVuY3Rpb25zLCB0aGlzIHN5bmMgc3RpbGwgbmVlZHMgdG8gYmUgbWFkZSAibWFudWFsbHkiIGhlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLmV1PgotICAgIEFja2VkLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyZTk1MDA0ZGViNmUzM2UzM2JmMWI4YTkyYTM4Y2QyMTE1YmFjNGMyCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVHVlIE5vdiAyNCAyMDoxMjoxMiAyMDA5ICswMzAwCi0KLSAgICBtcGM4M3h4OiBBZGQgTkFORCBib290IHN1cHBvcnQgZm9yIE1QQzgzMTVFLVJEQiBib2FyZHMKLQotICAgIFRoZSBjb3JlIHN1cHBvcnQgZm9yIE5BTkQgYm9vdGluZyBpcyB0aGVyZSBhbHJlYWR5LCBzbyB0aGlzIHBhdGNoCi0gICAgaXMgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZC4KLQotICAgIFRoZXJlIGlzIG9uZSB0cmljayB0aG91Z2g6IHRvcCBsZXZlbCBNYWtlZmlsZSBleHBlY3RzIG5hbmRfc3BsIHRvCi0gICAgYmUgaW4gbmFuZF9zcGwvYm9hcmQvJChCT0FSRERJUiksIGJ1dCB3ZSBjYW4gZnVsbHkgcmV1c2UgdGhlIGNvZGUKLSAgICBmcm9tIG1wYzgzMTNlcmRiIGJvYXJkcywgYW5kIHNvIHRvIG5vdCBkdXBsaWNhdGUgdGhlIGNvZGUgd2UganVzdAotICAgIHN5bWxpbmsgbmFuZF9zcGwvYm9hcmQvZnJlZXNjYWxlL21wYzgzMTVlcmRiIHRvIG1wYzgzMTNlcmRiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLSAgICBvIHNpbGVuY2UgbWFrZSBkdXJpbmcgbG4gZWNobwotICAgIG8gdXBkYXRlIGRvY3VtZW50YXRpb24KLSAgICBvIGFuZCBhdm9pZDoKLQotICAgICQgLi9NQUtFQUxMIE1QQzgzMTVFUkRCX05BTkQKLSAgICBDb25maWd1cmluZyBmb3IgTVBDODMxNUVSREIgYm9hcmQuLi4KLSAgICBzZHJhbS5vOiBJbiBmdW5jdGlvbiBgZml4ZWRfc2RyYW0nOgotICAgIC9ob21lL3IxYWFoYS9naXQvdS1ib290L25hbmRfc3BsL2JvYXJkL2ZyZWVzY2FsZS9tcGM4MzEzZXJkYi9zZHJhbS5jOjcyOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGB1ZGVsYXknCi0KLSAgICBieSByZW5hbWluZyB1ZGVsYXkgLT4gX191ZGVsYXkgaW4gdGhlIHNwaXJpdCBvZiBjb21taXQKLSAgICAzZWI5MGJhZDY1MWZhYjM5Y2ZmYmE3NTBlYzQ0MjFhOWMwMWQ2MGU3ICJHZW5lcmljIHVkZWxheSgpIHdpdGggd2F0Y2hkb2cKLSAgICBzdXBwb3J0Ii4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiODIxY2VhZDdkMjE0NzcyNGQ1ZjFkOGNjYmNhNDA3MTBmYWFkMzhhCi1BdXRob3I6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLURhdGU6CUZyaSBEZWMgMTggMTQ6NTU6MjQgMjAwOSArMDUzMAotCi0gICAgb25lbmFuZDogRml4IGNvbXBpbGUgZXJyb3JzIGR1ZSB0byBGbGV4T25lTkFORAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgY29tcGlsZSBlcnJvciB3aGlsZSB0cnlpbmcgdG8KLSAgICBjb21waWxlIGZvciBvbWFwM2V2bS4KLQotICAgIGVudl9vbmVuYW5kLmM6IEluIGZ1bmN0aW9uICdlbnZfcmVsb2NhdGVfc3BlYyc6Ci0gICAgZW52X29uZW5hbmQuYzo3MDogZXJyb3I6ICdDT05GSUdfRU5WX0FERFJfRkxFWCcgdW5kZWNsYXJlZAotICAgICAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0gICAgZW52X29uZW5hbmQuYzo3MDogZXJyb3I6IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZQotICAgIHBvcnRlZCBvbmx5IG9uY2UKLSAgICBlbnZfb25lbmFuZC5jOjcwOiBlcnJvcjogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pCi0gICAgZW52X29uZW5hbmQuYzogSW4gZnVuY3Rpb24gJ3NhdmVlbnYnOgotICAgIGVudl9vbmVuYW5kLmM6MTA2OiBlcnJvcjogJ0NPTkZJR19FTlZfQUREUl9GTEVYJyB1bmRlY2xhcmUKLSAgICBkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLSAgICBlbnZfb25lbmFuZC5jOjEwNzogZXJyb3I6ICdDT05GSUdfRU5WX1NJWkVfRkxFWCcgdW5kZWNsYXJlCi0gICAgZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Ci0gICAgQWNrZWQtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDIwZGE2ZjRkOTNkYjI3MGM1N2ViNjc5NjhlNDQxYTIwZmFmNjE5MzgKLUF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+Ci1EYXRlOglXZWQgRGVjIDE2IDExOjE1OjU4IDIwMDkgKzAwMDAKLQotICAgIERhdmluY2k6IGRhdmluY2lfbmFuZC5jIHBlcmZvcm1hbmNlIGVuaGFuY21lbnRzCi0KLSAgICBJbnRyb2R1Y2VzIHZhcmlvdXMgb3B0aW1pc2F0aW9ucyB0aGF0IGFwcHJveGltYXRlbHkgdHJpcGxlIHRoZQotICAgIHJlYWQgZGF0YSByYXRlIGZyb20gTkFORCB3aGVuIHJ1biBvbiBkYTgzMGV2bS4KLQotICAgIE1vc3Qgb2YgdGhlc2Ugb3B0aW1pc2F0aW9ucyBkZXBlbmQgb24gdGhlIGVuZGlhbmVzcyBvZiB0aGUgbWFjaGluZQotICAgIGFuZCBtb3N0IG9mIHRoZW0gYXJlIHZlcnkgc2ltaWxhciB0byBvcHRpbWlzYXRpb25zIGFscmVhZHkgcHJlc2VudAotICAgIGluIHRoZSBMaW51eCBLZXJuZWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLQotY29tbWl0IDA2Zjk1OTU5YmM1NDIxZTUxNmE5YTI1MDEyZTMwM2RlYTg4MzMzODUKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJV2VkIEphbiA2IDA5OjM2OjI0IDIwMTAgLTA2MDAKLQotICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwotCi0gICAgRmV0Y2hlZCBmcm9tIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvbWFjaGluZXMvZG93bmxvYWQucGhwCi0gICAgQW5kIGJ1aWx0IHdpdGgKLQotICAgIHJlcG8gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQotICAgIGNvbW1pdCBjOWY5MzdlNGEzZjRlYmY5OTI0ZWMyMWQ4MDYzMmU1ZWI2MWQ5NDljCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA4YjBhYjMwNDk0M2IwN2QxM2EyOWRiNmQzZDJjYTNlZGFkMzJjZGNiCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBOb3YgMTcgMjE6MTA6MjEgMjAwOSAtMDYwMAotCi0gICAgcHBjL3A0MDgwOiBBZGQgQ29yZW5ldCBQbGF0Zm9ybSBDYWNoZSAoQ1BDKSByZWdpc3RlcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgM2U3MzFhYWJhMzBjNzAxMWVkZjYzOTEwNzJlZWU4NDVlZDFiODE2ZgotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIERlYyAxNiAxMDoyNDozOSAyMDA5IC0wNjAwCi0KLSAgICBmc2wtZGRyOiBzZXR1cCBPRFRfUkRfQ0ZHICYgT0RUX1dSX0NGRyB3aGVuIHdlIGludGVybGVhdmUKLQotICAgIEluIGNoaXAtc2VsZWN0IGludGVybGVhdmluZyBjYXNlLCB3ZSBhbHNvIG5lZWQgc2V0IHRoZSBPRFRfUkRfQ0ZHCi0gICAgYW5kIE9EVF9XUl9DRkcgaW4gY3MxX2NvbmZpZyByZWdpc3Rlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDFhYTNkMDhhMDI0NDUwNmI5NDAzMTUyMmU1NGZlMDZlZTdhNWFlMGUKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBEZWMgMTYgMTA6MjQ6MzggMjAwOSAtMDYwMAotCi0gICAgZnNsLWRkcjogYWRkIG92ZXJyaWRlIGZvciB0aGUgUnR0X1dyCi0KLSAgICBEaWZmZXJlbnQgYm9hcmRzIG1heSByZXF1aXJlIGRpZmZlcmVudCBzZXR0aW5ncyBvZiBEeW5hbWljIE9EVCAoUnR0X1dyKS4KLSAgICBXZSBwcm92aWRlIGEgbWVhbnMgdG8gYWxsb3cgdGhlIGJvYXJkIHNwZWNpZmljIGNvZGUgdG8gcHJvdmlkZSBpdHMgb3duCi0gICAgdmFsdWUgb2YgUnR0X1dyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYmRjOWY3YjVlYWI4ZDVlZGQ4YThjYzVkODBlZjA4MDgzNmIwMGU4NQotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIERlYyAxNiAxMDoyNDozNyAyMDA5IC0wNjAwCi0KLSAgICBmc2wtZGRyOiBhZGQgdGhlIG92ZXJyaWRlIGZvciB3cml0ZSBsZXZlbGluZwotCi0gICAgYWRkIHRoZSBvdmVycmlkZSBmb3Igd3JpdGUgbGV2ZWxpbmcgc2FtcGxpbmcgYW5kCi0gICAgc3RhcnQgdGltZSBhY2NvcmRpbmcgdG8gc3BlY2lmaWMgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwYTcxYzkyYzdlMWU1NjUxMTFjYjM0Y2QzODlhMjFlYzUwMGNhNWMxCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRGVjIDE2IDEwOjI0OjM2IDIwMDkgLTA2MDAKLQotICAgIGZzbC1kZHI6IEZpeCBwb3dlci1kb3duIHRpbWluZyBzZXR0aW5ncwotCi0gICAgMS4gVElNSU5HX0NGR18wW0FDVF9QRF9FWElUXSB3YXMgc2V0IHRvIDYgY2xvY2tzLCBidXQKLSAgICAgICBJdCBzaG91bGQgYmUgc2V0IHRvIHRYUCBwYXJhbWV0ZXIsIHRYUD1tYXgoM0NLLCA3LjVucykKLSAgICAyLiBUSU1JTkdfQ0ZHXzBbUFJFX1BEX0VYSVRdIHdhcyBzZXQgdG8gNiBjbG9ja3MsIGJ1dAotICAgICAgIEl0IHNob3VsZCBiZSBzZXQgdG8gdFhQIChpZiBNUjBbQTEyXT0xKSBlbHNlIHRvIHRYUERMTCBwYXJhbWV0ZXIKLSAgICAgICBXZSBhcmUgc2V0dGluZyB0aGUgbW9kZSByZWdpc3RlciBNUjBbQTEyXT0nMScKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGM0Y2ExMGYxZGIzNmMzY2U2NDljNjU2ZGVjMTRmN2FhYjY0NGRkODYKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgRGVjIDE2IDAxOjE0OjMxIDIwMDkgKzAzMDAKLQotICAgIG1wYzg1eHg6IEFkZCA0LWJpdHMgZVNESEMgc3VwcG9ydCBmb3IgTVBDODU2OUUtTURTIGJvYXJkcwotCi0gICAgVGhhbmtzIHRvICJFcnJhdGEgdG8gTVBDODU2OUUgUG93ZXJRVUlDQyBJSUkgSW50ZWdyYXRlZCBIb3N0IFByb2Nlc3NvcgotICAgIEZhbWlseSBSZWZlcmVuY2UgTWFudWFsLCBSZXYuIDAiIGRvY3VtZW50LCB3aGljaCBkZXNjcmliZXMgYWxsIGVTREhDCi0gICAgcGlucywgd2UgY2FuIGFkZCA0LWJpdHMgZVNESEMgc3VwcG9ydCBmb3IgTVBDODU2OUUtTURTIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiYzIwZjlhOTUyN2FmZThhZTQwNmE3NGY3NDc2NWQ0MzIzZjA0OTIyCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgRGVjIDkgMTc6Mjg6MTcgMjAwOSAtMDYwMAotCi0gICAgcHBjL3A0MDgwOiBGaXggcmVwb3J0aW5nIG9mIFBNRSAmIEZNIGNsb2NrIGZyZXF1ZW5jaWVzCi0KLSAgICBXZSBpbmNvcnJlY3RseSBoYWQgdGhlIHNlbnNlIG9mIFBNRV9DTEtfU0VMLCBGTTFfQ0xLX1NFTCwgRk0yX0NMS19TRUwKLSAgICBiYWNrd2FyZHMgc28gd2UgcmVwb3J0IHRoZSB3cm9uZyBmcmVxdWVuY3kuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZGUzY2JkNzhjOWE0ODUzODliMjMzZjhjYTcwNWE5ZTVmNTFhZmFmMwotQXV0aG9yOiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIERlYyA5IDE0OjI2OjA4IDIwMDkgKzA4MDAKLQotICAgIGZzbF9sYXc6IGFkZCBTUklPMiB0YXJnZXQgaWQgYW5kIGxhd19zaXplX2JpdHMoKSBtYWNybwotCi0gICAgU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYWJjNzZlYjZhNjkzNmE5OTgxMWVkYTI1NjIyMmIzOTI3NDI3ZjhlMgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE5vdiAxNyAyMDoyMToyMCAyMDA5IC0wNjAwCi0KLSAgICBwcGMvODV4eDogTWFwIGJvb3QgcGFnZSBndWFyZGVkIGZvciBNUCBib290Ci0KLSAgICBXZSBhbHJlYWR5IG1hcCB0aGUgcGFnZSBjYWNoZS1pbmhpYml0ZWQuICBUaGVyZSBpcyBubyByZWFzb24gd2UKLSAgICBzaG91bGRuJ3QgYWxzbyBiZSBtYXJraW5nIGl0IGd1YXJkZWQgdG8gcHJldmVudCBzcGVjdWxhdGl2ZSBhY2Nlc3Nlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlZmZlNDk3M2YyZjM0OWU2ZTg3ZDQ1NWFlNzE4YWFiYWY5MTlhNzVkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgTm92IDE3IDIyOjQ0OjUyIDIwMDkgLTA2MDAKLQotICAgIHBwYzogQWRkZWQgbWFjcm8gdG8gdGVzdCBmb3Igc3BlY2lmaWMgU1ZSIHJldmlzaW9uCi0KLSAgICBWYXJpb3VzIFNvQyBlcnJhdGEgYXJlIHNwZWNpZmljIHRvIGEgZ2l2ZW4gcmV2aXNpb24gb2Ygc2lsaWNvbi4gVGhpcwotICAgIHBhdGNoIGdpdmVzIHVzIGEgc2ltcGxlIG1hY3JvIHRvIHVzZSB3aGVuIGRvaW5nIHN1Y2ggdGVzdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjVlY2M2ZTAyNzE1MDI4OWMyYTQ2ZGI3Y2VjMTk3YjJiNmRhODkzYwotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE5vdiAxNyAyMDowMToyNCAyMDA5IC0wNjAwCi0KLSAgICBwNDA4MDogYWRkIHJlYWRiYWNrIHRvIGJvb3RwYWdlIHRyYW5zbGF0aW9uIHdpbmRvdwotCi0gICAgV2UgbmVlZCB0byBhZGQgdGhlIHJlYWRiYWNrIHRvIGJvb3RwYWdlIHRyYW5zbGF0aW9uIExBVwotICAgIHRvIG1ha2UgaXQgZWZmZWN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDVmYjZlYTNhZDM1NjJmNzhkZjg2OTNlZDhjNGNhODk2NTQyMzZjNGYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBOb3YgMTMgMDk6MjU6MDcgMjAwOSAtMDYwMAotCi0gICAgcHBjLzg1eHg6IE1ha2UgZmxhc2ggVExCIGVudHJ5IGRldGVybWluZWQgYXQgcnVudGltZSBvbiBGU0wgYm9hcmRzCi0KLSAgICBSYXRoZXIgdGhhbiBoYXJkIGNvZGluZyB3aGljaCBUTEIgZW50cnkgdGhlIEZMQVNIIGlzIG1hcHBlZCB3aXRoIHdlIGNhbgotICAgIHVzZSBmaW5kX3RsYl9pZHggdG8gZGV0ZXJtaW5lIHRoZSBlbnRyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3ODM4NTJlNDY3ZjMyYTNhNTU2OGI1NDIzNzllOWZlYzNkMjZhMTczCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgTm92IDEzIDA5OjA5OjEwIDIwMDkgLTA2MDAKLQotICAgIHBwYy84NXh4OiBSZW1vdmUgQ09ORklHX1NZU19ERFJfVExCX1NUQVJUCi0KLSAgICBOb3cgdGhhdCB3ZSBkeW5hbWljYWxseSBkZXRlcm1pbmUgVExCIENBTSBlbnRyaWVzIHRvIHVzZSB3ZSBkb250IG5lZWQKLSAgICBDT05GSUdfU1lTX0REUl9UTEJfU1RBUlQgYW55bW9yZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzNTVmNGY4NWU5MGNlMmU2ZDkxODgzMDEyYzI5OTNiZTc5NzBjOGIxCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgTm92IDEzIDA5OjA0OjE5IDIwMDkgLTA2MDAKLQotICAgIHBwYy84NXh4OiBNYWtlIFNQRCBERFIgVExCIHNldHVwIGNvZGUgdXNlIGR5bmFtaWMgZW50cnkgYWxsb2NhdGlvbgotCi0gICAgTm93IHRoYXQgd2UgdHJhY2sgd2hpY2ggVExCIENBTSBlbnRyaWVzIGFyZSB1c2VkIHdlIGNhbiBhbGxvY2F0ZQotICAgIGVudHJpZXMgb24gdGhlIGZseS4gIENoYW5nZSB0aGUgU1BEIEREUiBUTEIgc2V0dXAgY29kZSB0byBhc3N1bWUKLSAgICB3ZSB1c2UgYXQgbW9zdCA4IFRMQnMgKG9yIHRoZSBudW1iZXIgZnJlZSwgd2hpY2ggZXZlciBpcyBmZXdlcikuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOTRlOTQxMWI5ZGRhMTgyZGQ2M2Q1M2JhNmVhNjQwYzk4YjM1ZGI1ZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE5vdiAxMiAxMDoyNjoxNiAyMDA5IC0wNjAwCi0KLSAgICBwcGMvODV4eDogQWRkIHRyYWNraW5nIG9mIFRMQiBDQU0gdXNhZ2UKLQotICAgIFdlIG5lZWQgdG8gdHJhY2sgd2hpY2ggVExCIENBTSBlbnRyaWVzIGFyZSB1c2VkIHRvIGFsbG93IHVzIHRvCi0gICAgImR5bmFtaWNhbGx5IiBhbGxvY2F0ZSBlbnRyaWVzIGxhdGVyIGluIHRoZSBjb2RlLiAgRm9yIGV4YW1wbGUgdGhlIFNQRAotICAgIEREUiBjb2RlIHRvZGF5IGhhcmQgY29kZXMgd2hpY2ggVExCIGVudHJpZXMgaXQgdXNlcy4gIFdlIGNhbiBub3cgbWFrZQotICAgIHRoYXQgcGljayBlbnRyaWVzIHRoYXQgYXJlIGZyZWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZWU1MzY1MGRhZDJmZWRlMDU3ZTkzZmRmNmY4Y2Q3MmIyOWVmN2NkMAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE5vdiA0IDEzOjAwOjU1IDIwMDkgLTA2MDAKLQotICAgIHBwYy84eHh4OiBSZW1vdmUgaXNfZnNsX3BjaV9hZ2VudAotCi0gICAgQWxsIHVzZXJzIG9mIGlzX2ZzbF9wY2lfYWdlbnQgaGF2ZSBiZWVuIGNvbnZlcnRlZCB0byBmc2xfaXNfcGNpX2FnZW50Ci0gICAgdGhhdCB1c2VzIHRoZSBzdGFuZGFyZCBQQ0kgcHJvZ3JhbW1pbmcgbW9kZWwgdG8gZGV0ZXJtaW5lIGhvc3QgdnMKLSAgICBhZ2VudC9lbmQtcG9pbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgN2NiOGY3OWI0NGM3MGEzYzY2ODkxZjQwNzI1NGQ5YzczOWUyZTdkYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE5vdiA0IDExOjM5OjU1IDIwMDkgLTA2MDAKLQotICAgIHBwYy84NXh4OiBNb3ZlIHRvIHVzaW5nIGZzbF9zZXR1cF9ob3NlIG9uIFRRTSA4NXh4Ci0KLSAgICBXZSBjYW4gdXNlIGZzbF9zZXR1cF9ob3NlIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgYSBhZ2VudC9lbmQtcG9pbnQgb3IKLSAgICBhIGhvc3QuICBSYXRoZXIgdGhhbiB1c2luZyBzb21lIFNvQyBzcGVjaWZpYyByZWdpc3RlciB3ZSBjYW4ganVzdCBsb29rCi0gICAgYXQgdGhlIFBDSSBjZmcgc3BhY2Ugb2YgdGhlIGhvc3QgY29udHJvbGxlciB0byBkZXRlcm1pbmUgdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5MjYzZTgyOWYwMjU2NjFjYmQzYTgwNjc1Mjg1YjQyYzE0MzUwZWE0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgTm92IDQgMTM6MDE6NTEgMjAwOSAtMDYwMAotCi0gICAgcHBjLzg1eHg6IE1vdmUgdG8gdXNpbmcgZnNsX3NldHVwX2hvc2Ugb24gUDIwMjAgRFMKLQotICAgIFdlIGNhbiB1c2UgZnNsX3NldHVwX2hvc2UgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBhIGFnZW50L2VuZC1wb2ludCBvcgotICAgIGEgaG9zdC4gIFJhdGhlciB0aGFuIHVzaW5nIHNvbWUgU29DIHNwZWNpZmljIHJlZ2lzdGVyIHdlIGNhbiBqdXN0IGxvb2sKLSAgICBhdCB0aGUgUENJIGNmZyBzcGFjZSBvZiB0aGUgaG9zdCBjb250cm9sbGVyIHRvIGRldGVybWluZSB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDFlMjFiYThmNmQwNzA4ZmU3ZjQ0MDY2MDU5OTI3Y2ZhNmJmZWRmN2EKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgNCAxMzowMTozOCAyMDA5IC0wNjAwCi0KLSAgICBwcGMvODV4eDogTW92ZSB0byB1c2luZyBmc2xfc2V0dXBfaG9zZSBvbiBQMS9QMiBSREIKLQotICAgIFdlIGNhbiB1c2UgZnNsX3NldHVwX2hvc2UgdG8gZGV0ZXJtaW5lIGlmIHdlIGFyZSBhIGFnZW50L2VuZC1wb2ludCBvcgotICAgIGEgaG9zdC4gIFJhdGhlciB0aGFuIHVzaW5nIHNvbWUgU29DIHNwZWNpZmljIHJlZ2lzdGVyIHdlIGNhbiBqdXN0IGxvb2sKLSAgICBhdCB0aGUgUENJIGNmZyBzcGFjZSBvZiB0aGUgaG9zdCBjb250cm9sbGVyIHRvIGRldGVybWluZSB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQyYzAxYjlkMWYwMTMyYTZkODJlMmM4MzMzYjIzNmIxZTNiMDgzMWYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgNCAxMzowMToxNyAyMDA5IC0wNjAwCi0KLSAgICBwcGMvODV4eDogTW92ZSB0byB1c2luZyBmc2xfc2V0dXBfaG9zZSBvbiBNUEM4NTcyIERTCi0KLSAgICBXZSBjYW4gdXNlIGZzbF9zZXR1cF9ob3NlIHRvIGRldGVybWluZSBpZiB3ZSBhcmUgYSBhZ2VudC9lbmQtcG9pbnQgb3IKLSAgICBhIGhvc3QuICBSYXRoZXIgdGhhbiB1c2luZyBzb21lIFNvQyBzcGVjaWZpYyByZWdpc3RlciB3ZSBjYW4ganVzdCBsb29rCi0gICAgYXQgdGhlIFBDSSBjZmcgc3BhY2Ugb2YgdGhlIGhvc3QgY29udHJvbGxlciB0byBkZXRlcm1pbmUgdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1ZTNkNzA1MGNmMTI3ZGZjZDZhYjI2MGM1NTFlOTE4MzI5OWQwZGNhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgTm92IDQgMTI6NTE6MTAgMjAwOSAtMDYwMAotCi0gICAgcHBjLzg2eHg6IENsZWFuIHVwIE1QQzg2MTAgSFBDRCBQQ0kgc2V0dXAgY29kZQotCi0gICAgVXNlIG5ldyBmc2xfcGNpX2luaXRfcG9ydCgpIHRoYXQgcmVkdWNlcyBhbW91bnQgb2YgZHVwbGljYXRlZCBjb2RlIGluIHRoZQotICAgIGJvYXJkIHBvcnRzLCB1c2UgSU8gYWNjZXNzb3JzIGFuZCBjbGVhbiB1cCBwcmludGluZyBvZiBzdGF0dXMgaW5mby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3YjYyNjg4MGI0ZTFmZDhkMjI5N2M5MzQxYjkyYzIyNTNmYzI3ZmQwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgTm92IDQgMTE6MTU6MjkgMjAwOSAtMDYwMAotCi0gICAgcHBjLzg1eHg6IENsZWFuIHVwIE1QQzg1NDggQ0RTIFBDSSBzZXR1cCBjb2RlCi0KLSAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCi0gICAgYm9hcmQgcG9ydHMsIHVzZSBJTyBhY2Nlc3NvcnMgYW5kIGNsZWFuIHVwIHByaW50aW5nIG9mIHN0YXR1cyBpbmZvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGZlYWRkNWQ1M2JhNTA0N2MzYmM5MTJmZjViN2M3YTY5MGM4YzUzY2YKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgNCAxMTowNTowMiAyMDA5IC0wNjAwCi0KLSAgICBwcGMvODV4eDogQ2xlYW4gdXAgQVRVTTg1NDggUENJIHNldHVwIGNvZGUKLQotICAgIFVzZSBuZXcgZnNsX3BjaV9pbml0X3BvcnQoKSB0aGF0IHJlZHVjZXMgYW1vdW50IG9mIGR1cGxpY2F0ZWQgY29kZSBpbiB0aGUKLSAgICBib2FyZCBwb3J0cywgdXNlIElPIGFjY2Vzc29ycyBhbmQgY2xlYW4gdXAgcHJpbnRpbmcgb2Ygc3RhdHVzIGluZm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDY4MTQ1N2UyYWFjZThkZmYwOWRjNGM2YzAyMTg1MjMxYjk3MGQ2YgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE5vdiA0IDEwOjMxOjUzIDIwMDkgLTA2MDAKLQotICAgIHBwYy84NXh4OiBDbGVhbiB1cCBNUEM4NTY4IE1EUyBQQ0kgc2V0dXAgY29kZQotCi0gICAgVXNlIG5ldyBmc2xfcGNpX2luaXRfcG9ydCgpIHRoYXQgcmVkdWNlcyBhbW91bnQgb2YgZHVwbGljYXRlZCBjb2RlIGluIHRoZQotICAgIGJvYXJkIHBvcnRzLCB1c2UgSU8gYWNjZXNzb3JzIGFuZCBjbGVhbiB1cCBwcmludGluZyBvZiBzdGF0dXMgaW5mby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjODQ3ZTk4YjE0M2MxNTRjYzQ2NmY5ZDAzZTkwYTM0OTUzMjkxNzJiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgTm92IDQgMTA6MjY6MzAgMjAwOSAtMDYwMAotCi0gICAgcHBjLzg1eHg6IENsZWFuIHVwIE1QQzg1NjkgTURTIFBDSSBzZXR1cCBjb2RlCi0KLSAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCi0gICAgYm9hcmQgcG9ydHMsIHVzZSBJTyBhY2Nlc3NvcnMgYW5kIGNsZWFuIHVwIHByaW50aW5nIG9mIHN0YXR1cyBpbmZvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDY0NWQ1YTc4MzgwNThjZTYwMzgwMzkzNWNkNDBhNjJhMjZhZWEwNGQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgNCAxMDoyMjoyNiAyMDA5IC0wNjAwCi0KLSAgICBwcGMvODV4eDogQ2xlYW4gdXAgTVBDODU0NCBEUyBQQ0kgc2V0dXAgY29kZQotCi0gICAgVXNlIG5ldyBmc2xfcGNpX2luaXRfcG9ydCgpIHRoYXQgcmVkdWNlcyBhbW91bnQgb2YgZHVwbGljYXRlZCBjb2RlIGluIHRoZQotICAgIGJvYXJkIHBvcnRzLCB1c2UgSU8gYWNjZXNzb3JzIGFuZCBjbGVhbiB1cCBwcmludGluZyBvZiBzdGF0dXMgaW5mby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4YTQxNGM0MjU4YWVlYWI5M2ZiODNmYWQwNTQ0ODk0NTk3YzhiZDM1Ci1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgMjggMTA6NDk6MzEgMjAwOSArMDgwMAotCi0gICAgcHBjLzg1eHg6IENsZWFuIHVwIE1QQzg1MzYgRFMgUENJIHNldHVwIGNvZGUKLQotICAgIFVzZSBuZXcgZnNsX3BjaV9pbml0X3BvcnQoKSB0aGF0IHJlZHVjZXMgYW1vdW50IG9mIGR1cGxpY2F0ZWQgY29kZSBpbiB0aGUKLSAgICBib2FyZCBwb3J0cywgdXNlIElPIGFjY2Vzc29ycyBhbmQgY2xlYW4gdXAgcHJpbnRpbmcgb2Ygc3RhdHVzIGluZm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDNhZDg5YzRlY2JhNTE1NjRjOTcwNzVmMDMxYWVmNGZhNWVhZmJiMTYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVNhdCBPY3QgMzEgMTE6MjM6NDEgMjAwOSAtMDUwMAotCi0gICAgTkVUOiBCYXNlIHN1cHBvcnQgZm9yIGV0c2VjMi4wCi0KLSAgICAxLiBNb2RpZmllZCB0aGUgdHNlY19tZGlvIHN0cnVjdHVyZSB0byBpbmNsdWRlIHRoZSBuZXcgcmVncwotICAgIDIuIE1vZGlmaWVkIHRoZSBNRElPX0JBU0VfQUREUiBzbyB0aGF0IGl0IHdpbGwgaGFuZGxlIGJvdGgKLSAgICBvbGRlciB2ZXJzaW9uIGFuZCBuZXcgdmVyc2lvbiBvZiBldHNlYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgR29wYWxwZXQgPHNhbmRlZXAua3VtYXJAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYjllMTg2ZmMzMTY4M2E0ZjFiNjg4MGMwODY5NTBiMjI3MGU2MmUyNAotQXV0aG9yOiBTYW5kZWVwIEdvcGFscGV0IDxzYW5kZWVwLmt1bWFyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTYXQgT2N0IDMxIDAwOjM1OjA0IDIwMDkgKzA1MzAKLQotICAgIE5FVDogTW92ZSBNRElPIHJlZ3Mgb3V0IG9mIFRTRUMgU3BhY2UKLQotICAgIE1vdmVkIHRoZSBtZGlvIHJlZ3Mgb3V0IG9mIHRoZSB0c2VjIHN0cnVjdHVyZSxhbmQKLSAgICBwcm92aWRlZCBkaWZmZXJlbnQgb2Zmc2V0cyBmb3IgdHNlYyBiYXNlIGFuZCBtZGlvCi0gICAgYmFzZSBzbyB0aGF0IHByb3Zpc2lvbiBmb3IgZXRzZWMyLjAgY2FuIGJlIHByb3ZpZGVkLgotCi0gICAgVGhpcyBwYXRjaCBoZWxwcyBpbiBwcm92aWRpbmcgdGhlIHN1cHBvcnQgZm9yIGV0c2VjMi4wCi0gICAgSW4gZXRzZWMyLjAsIHRoZSBNRElPIHJlZ2lzdGVyIHNwYWNlIGFuZCB0aGUgZXRzZWMgcmVnCi0gICAgc3BhY2UgYXJlIGRpZmZlcmVudC4KLQotICAgIEFsc28sIG1vdmVkIHRoZSBUU0VDX0JBU0VfQUREUiBhbmQgTURJT19CQVNFX0FERFIgZGVmaW5pdG9ucyBpbnRvCi0gICAgcGxhdGZvcm0gc3BlY2lmaWMgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIEdvcGFscGV0IDxzYW5kZWVwLmt1bWFyQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGJjYWQyMWZkYTE4N2Y3ZDhkNWQyYzAyNmMzOTVjY2EzNWE5YzcwMGUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBNYXIgMTkgMDI6NDY6MjggMjAwOSAtMDUwMAotCi0gICAgODV4eDogQWRkIHN1cHBvcnQgdG8gc2V0IERQQUEgKGRhdGEgcGF0aCkgZGV2aWNlcyBjbG9jayBmcmVxdWVuY2llcwotCi0gICAgU2V0IGNsb2NrLWZyZXF1ZW5jeSBmb3IgRnJhbWUgTWFuYWdlciAwLzEgYW5kIFBhdHRlciBNYXRjaCBFbmdpbmUgb24gcDQwODAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTc4ZTM5ZTE5OWU5Yzk4NWU1ZTVlOTY4ZDYwZDcyNDNmY2ViNTYxNgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IFNlcCAxNyAwMDowMToxNCAyMDA5IC0wNTAwCi0KLSAgICBwcGMvOHh4eDogRG9uJ3QgdXNlIHBjaV9jZmcgb24gRlNMX0NPUkVORVQgcGxhdGZvcm1zCi0KLSAgICBUaGUgRlNMX0NPUkVORVQgcGxhdGZvcm1zIHVzZSBhIGNvbXBsZXRlbHkgZGlmZmVyZW50IG1lYW5zIHRvIGRldGVybWluZQotICAgIHdoaWNoIFBDSWUgcG9ydCBpcyBlbmFibGVkIGFzIHdlbGwgYXMgaWYgaXRzIGEgaG9zdCBvciBhZ2VudC9lbmQtcG9pbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTE1ODhiNWRjNGM1ODFiMmE2OGEyNGUzMjk4YWIxNGU4M2M1OWQzMQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE9jdCAxNSAyMzoyMjoxMCAyMDA5IC0wNTAwCi0KLSAgICBwcGMvcDQwODA6IEFkZGVkIHA0MDgwIFNFUkRFUyByZWdpc3RlcnMgJiBVU0Igb2Zmc2V0Ci0KLSAgICBBZGRlZCBpbW1hcCBkZWZpbml0aW9uIGZvciBTRVJERVMgcmVnaXN0ZXJzIG9uIHA0MDgwLCB0aGUgVVNCIG9mZnNldAotICAgIChzaW5jZSBpdCB3YXMgbWlzc2luZykgYW5kIGEgR1BMIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgyZmQxZjhkYTlhZGQyZDc0NTMyY2Y3OGQyMjQ0ODVmMDA0MmQwMGQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBNYXIgMTkgMDI6NTM6MDEgMjAwOSAtMDUwMAotCi0gICAgODV4eDogQWRkIHN1cHBvcnQgZm9yIGU1MDBtYyBjYWNoZSBzdGFzaGluZwotCi0gICAgVGhlIGU1MDBtYyBjb3JlIHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIHN0YXNoIGludG8gdGhlIEwxIG9yIEwyIGNhY2hlLAotICAgIGhvd2V2ZXIgd2UgbmVlZCB0byB1bmlxdWVseSBpZGVudGlmeSB0aGUgY2FjaGVzIHdpdGggYW4gaWQuCi0KLSAgICBXZSB1c2UgdGhlIGZvbGxvd2luZyBlcXVhdGlvbiB0byBzZXQgdGhlIHZhcmlvdXMgc3Rhc2gtaWRzOgotCi0gICAgMzIgKyBjb3JlSUQqMiArIDAoTDEpIG9yIDEoTDIpCi0KLSAgICBUaGUgMCAoZm9yIEwxKSBvciAxIChmb3IgTDIpIG1hdGNoZXMgdGhlIENUIGZpZWxkIHVzZWQgYmUgdmFyaW91cyBjYWNoZQotICAgIGNvbnRyb2wgaW5zdHJ1Y3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDI2YmUyYzUzZDY3MWVjZmQzZTA0ODNmMDg3MDY0OWFjMjgzMjIyOTMKLUF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZS5jb20+Ci1EYXRlOglTYXQgRGVjIDEyIDEyOjEzOjEwIDIwMDkgLTA1MDAKLQotICAgIERhdmluY2k6IE5BTkQgZW5hYmxlIEVDQyBldmVuIHdoZW4gbm90IGluIE5BTkQgYm9vdCBtb2RlCi0KLSAgICBEYXZpbmNpOiBOQU5EIGVuYWJsZSBFQ0MgZXZlbiB3aGVuIG5vdCBpbiBOQU5EIGJvb3QgbW9kZQotCi0gICAgT24gRGF2aW5jaSBwbGF0Zm9ybXMsIHRoZSBkZWZhdWx0IE5BTkQgZGV2aWNlIGlzIGVuYWJsZWQgKGZvciBFQ0MpCi0gICAgaW4gbG93IGxldmVsIGJvb3QgY29kZSB3aGVuIE5BTkQgYm9vdCBtb2RlIGlzIHVzZWQuIElmIGJvb3RpbmcgaW4KLSAgICBhbm90aGVyIG1vZGUsIE5BTkQgRUNDIGlzIG5vdCBlbmFibGVkLiBUaGUgZHJpdmVyIHNob3VsZCBtYWtlCi0gICAgc3VyZSBFQ0MgaXMgZW5hYmxlZCByZWdhcmRsZXNzIG9mIGJvb3QgbW9kZSBpZiBOQU5EIGlzIGNvbmZpZ3VyZWQKLSAgICBpbiBVLUJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlLmNvbT4KLQotY29tbWl0IDk3ZjRlYjhjZmI5N2M3YzViMTU4ZTNjMGRmNDYxMWVmYmY1MGY0MDMKLUF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZWZhbnVjLmNvbT4KLURhdGU6CVNhdCBEZWMgMTIgMTI6MTI6MjYgMjAwOSAtMDUwMAotCi0gICAgRGF2aW5jaTogQ29uZmlndXJhYmxlIE5BTkQgY2hpcCBzZWxlY3RzCi0KLSAgICBEYXZpbmNpOiBDb25maWd1cmFibGUgTkFORCBjaGlwIHNlbGVjdHMKLQotICAgIEFkZCBhIENPTkZJR19TWVNfTkFORF9DUyBzZXR0aW5nIHRvIGFsbCBkYXZpbmNpIGNvbmZpZ3MgYW5kCi0gICAgdXNlIGl0IHRvIHNldHVwIHRoZSBOQU5EIGNvbnRyb2xsZXIgaW4gdGhlIGRhdmluY2lfbmFuZAotICAgIG10ZCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotCi1jb21taXQgOTAxMTBlMGVhYjVhYzZhYjcxNDEwOWNlMWZkODg3M2M4NThkZDU1MgotQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotRGF0ZToJU2F0IERlYyAxMiAxMjoxMDo1MSAyMDA5IC0wNTAwCi0KLSAgICBEYXZpbmNpOiBUYWJsZSBkcml2ZW4gcGlubXV4IGNvbmZpZ3VyYXRpb24KLQotICAgIERhdmluY2k6IFRhYmxlIGRyaXZlbiBwaW5tdXggY29uZmlndXJhdGlvbgotCi0gICAgQWRkIGNvZGUgdG8gYWxsb3cgcGlubXV4X2NvbmZpZyB0YWJsZXMgdG8gYmUgZ3JvdXBlZCBhbmQgY29uZmlndXJlZAotICAgIGFzIGEgc2luZ2xlIHJlc291cmNlLiBUaGlzIHJlbW92ZXMgbXVsdGlwbGUgY2FsbHMgdG8gdGhlIHBpbm11eAotICAgIGNvbmZpZ3VyYXRpb24gY29kZSBmcm9tIGJvYXJkX2luaXQgYW5kIGFsbG93cyBwaW5tdXhlcyB0byBiZQotICAgIGluZGl2aWR1YWxseSBjb25maWd1cmVkIGFuZCBhZGRlZCBieSBkYXRhIG1hbmlwdWxhdGlvbiBvbmx5LgotCi0gICAgQWxsIHJlbGF0ZWQgI2lmZGVmcyBjYW4gdGhlIGJlIHJlbW92ZWQgZnJvbSBib2FyZF9pbml0IGNvZGUgYW5kCi0gICAgc2luY2UgdGhlIGNvbXBpbGVyIG9wdGltaXNlcyBhd2F5IHN0YXRpY3MsICNpZmRlZnMgY2FuIGJlIHJlZHVjZWQgaW4KLSAgICB0aGUgZGF0YSBkZWZpbml0aW9ucyBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZWZhbnVjLmNvbT4KLQotY29tbWl0IDEyNzBlYzEzZDRmYmFlNDhhNTM3ZGM3NmQ0MThhNmVmYTcyZjU3MjUKLUF1dGhvcjogUm9iZXJ0IFAuIEouIERheSA8cnBqZGF5QGNyYXNoY291cnNlLmNhPgotRGF0ZToJU2F0IERlYyAxMiAxMjoxMDozMyAyMDA5IC0wNTAwCi0KLSAgICBSZW1vdmUgc3VwZXJmbHVvdXMgdXNlcyBvZiBWX1BST01QVCBtYWNyby4KLQotICAgIEEgbnVtYmVyIG9mIGNvbmZpZyBmaWxlcyBkZWZpbmUgdGhlIFZfUFJPTVBUIG1hY3JvIGZvciB0aGUKLSAgICBjb21tYW5kLWxpbmUgcHJvbXB0LCBvbmx5IHRvIGltbWVkaWF0ZWx5IHVzZSB0aGF0IG1hY3JvIHRvIGRlZmluZQotICAgIENPTkZJR19TWVNfUFJPTVBULCBtYWtpbmcgVl9QUk9NUFQgZW50aXJlbHkgc3VwZXJmbHVvdXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+Ci0KLWNvbW1pdCA4YjQzMmJlYmMyMDVhOTU5Njg0NTU5NDc3NDcyYzA0OGUzMWQxMzdkCi1BdXRob3I6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBEZWMgMTEgMTU6MDc6MzAgMjAwOSArMDIwMAotCi0gICAgcGFuZG9yYTogZG9uJ3QgZW5hYmxlIFZBVVgzLCBWREFDIGFuZCBWUExMMiByZWd1bGF0b3JzCi0KLSAgICBUaGVzZSByZWd1bGF0b3JzIGFyZSBub3QgbmVlZGVkIHRvIHN0YXJ0IHRoZSBrZXJuZWwgYW5kIG9ubHkKLSAgICBjYXVzZSAiaW5jb21wbGV0ZSBjb25zdHJhaW50cyIgd2FybmluZ3MgZnJvbSBrZXJuZWwsIHNvIGRvbid0Ci0gICAgdHVybiB0aGVtIG9uIHRvIHNhdmUgcG93ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBlYWQzOWQ3YWEzZGRjY2IyZTM3NDIxN2FlYWIyM2JkNjVjZWRiNzYyCi1BdXRob3I6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KLURhdGU6CVRodSBEZWMgMTAgMTc6MTA6MjEgMjAwOSArMDIwMAotCi0gICAgVFdMNDAzMDogbWFrZSBMRURzIHNlbGVjdGFibGUgZm9yIHR3bDQwMzBfbGVkX2luaXQoKQotCi0gICAgTm90IGFsbCBib2FyZHMgaGF2ZSBib3RoIExFRHMgaG9va2VkLCBzbyBlbmFibGluZyBib3RoIG9uCi0gICAgYm9hcmRzIHdpdGggc2luZ2xlIExFRCB3aWxsIGp1c3Qgd2FzdGUgcG93ZXIuIE1ha2UgaXQKLSAgICBwb3NzaWJsZSB0byBjaG9vc2UgTEVEcyBieSBhZGRpbmcgYXJndW1lbnQgdG8KLSAgICB0d2w0MDMwX2xlZF9pbml0KCkuCi0KLSAgICBVc2luZyB0aGlzIHR1cm4gb24gb25seSBMRURCIGZvciBwYW5kb3JhLCBsZWF2ZSBib3RoIExFRHMKLSAgICBvbiBmb3IgYWxsIG90aGVyIGJvYXJkcywgYXMgaXQgd2FzIGJlZm9yZSB0aGlzIHBhdGNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgotCi1jb21taXQgYmUzNGZlZjdmZGNmYWZmYzY4NDk1ZTUwOTI5NjY5YWM1ZTRiZDgwMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRGVjIDE2IDA5OjI3OjMxIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogYWxwcjogUmVtb3ZlIHNvbWUgbm90IG5lZWRlZCBjb21tYW5kcyB0byBtYWtlIGltYWdlIGZpdCBhZ2FpbgotCi0gICAgVGhlIGxhdGVzdCBjaGFuZ2VzIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiB0aGUgYWxwciBpbWFnZSBhIGJpdCBtb3JlLgotICAgIE5vdyBpdCBkb2Vzbid0IGZpdCBpbnRvIHRoZSAyNTZrIHJlc2VydmVkIGZvciBpdC4gVGhpcyBwYXRjaCBub3cgcmVtb3ZlcwotICAgIHRoZSBjb21tYW5kcyAicGluZyIgYW5kICJkaWFnIiB3aGljaCBhcmUgbm90IG5lZWRlZCBpbiB0aGUgcHJvZHVjdGlvbgotICAgIHN5c3RlbXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFBpZXRlciBWb29ydGh1aWpzZW4gPHBpZXRlci52b29ydGh1aWpzZW5AcHJvZHJpdmUubmw+Ci0KLWNvbW1pdCAwNzJlNzU0YjZiOWJlZjQzOGZjMDg3MDMxODc1NWUzMzA1MWJhYTdkCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IERlYyAzIDExOjIzOjE3IDIwMDkgKzAxMDAKLQotICAgIGkyYywgcHBjNHh4OiBmaXggY29tcGlsaW5nIEtBUkVGIGFuZCBNRVRST0JPWCBib2FyZHMuCi0KLSAgICBjb21taXQgZWI1ZWIyYjBmNzQ0ZjBjYmE0MDUxNjBjNWQwMTMzNWM0MGYwOWFjZgotCi0gICAgcHBjNHh4OiBDbGVhbnVwIFBQQzR4eCBJMkMgaW5mcmFzdHJ1Y3R1cmUKLQotICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIHRoZSBQUEM0eHggSTJDIGludHJhc3RydWN0dXJlOgotCi0gICAgLSBVc2UgQyBzdHJ1Y3QgdG8gZGVzY3JpYmUgdGhlIEkyQyByZWdpc3RlcnMgaW5zdGVhZCBvZiBkZWZpbmVzCi0gICAgLSBDb2Rpbmcgc3R5bGUgY2xlYW51cCAoYnJhY2VzLCB3aGl0ZXNwYWNlLCBjb21tZW50cywgbGluZSBsZW5ndGgpCi0gICAgLSBFeHRyYWN0IGNvbW1vbiBjb2RlIGZyb20gaTJjX3JlYWQoKSBhbmQgaTJjX3dyaXRlKCkKLSAgICAtIFJlbW92ZSB1bm5lZWRlZCBJSUMgZGVmaW5lcyBmcm9tIHBwYzQwNS5oICYgcHBjNDQwLmgKLQotICAgIGJyZWFrcyBjb21pbGluZyBmb3IgdGhlIEtBUkVGIGFuZCBNRVRST0JPWCBib2FyZHMuCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4N2Q5M2ExYmEyYWUyMzU1MGUxMzcwYWRiN2EzYjAwYWYwODMxMTY1Ci1BdXRob3I6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgotRGF0ZToJV2VkIERlYyA5IDE1OjE2OjQ3IDIwMDkgKzAxMDAKLQotICAgIG1vdmUgcHJvdG90eXBlcyBmb3IgZ3VuemlwKCkgYW5kIHp1bnppcCgpIHRvIGNvbW1vbi5oCi0KLSAgICBQcm90b3R5cGUgZm9yIGd1bnppcC96dW56aXAgd2FzIG9ubHkgaW4gbGliX2dlbmVyaWMvZ3VuemlwLmMgYW5kIHRodXMKLSAgICByZXBlYXRlZCBpbiBldmVyeSBmaWxlIHVzaW5nIGl0LiBUaGlzIHBhdGNoIG1vdmVzIHRoZSBwcm90b3R5cGVzIHRvCi0gICAgY29tbW9uLmggYW5kIHJlbW92ZXMgYWxsIHByb3RvdHlwZXMgZGlzdHJpYnV0ZWQgYW55d2hlcmUgZWxzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIFdlZ25lciA8dy53ZWduZXJAYXN0cm8ta29tLmRlPgotCi1jb21taXQgMTI3ZTEwODQyYjI0NzRhYzIwZTQwNTcyYTQxMDJkZDRkNWVkODBmMQotQXV0aG9yOiBNYWhhdmlyIEphaW4gPG1qYWluQG1hcnZlbGwuY29tPgotRGF0ZToJVHVlIE5vdiAzIDEyOjIyOjEwIDIwMDkgKzA1MzAKLQotICAgIHVzYjogd3JpdGUgY29tbWFuZCBmb3IgUkFXIHBhcnRpdGlvbi4KLQotICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB3cml0ZSBzdXBwb3J0IHRvIHVzYiBkZXZpY2Ugd2l0aCByYXcgcGFydGl0aW9uLgotICAgIEl0IHdpbGwgYmUgdXNlZnVsIGZvciBmaWxlc3lzdGVtIHdyaXRlIHN1cHBvcnQgdG8gdXNiIGRldmljZSBmcm9tCi0gICAgdS1ib290IGluIGZ1dHVyZS4KLQotICAgIFRlc3RlZCB3aXRoIHdyaXRpbmcga2VybmVsIGltYWdlIHRvIHJhdyB1c2IgZGlzayAmIGJvb3Rpbmcgd2l0aCB1c2IKLSAgICByZWFkIGNvbW1hbmQgaW50byByYW0uCi0KLSAgICBbTm90ZTogIHJ1biB1c2IgcGFydCB0byBnZXQgaW5mbyBhYm91dCBzdGFydCBzZWN0b3IgJiBudW1iZXIgb2YKLSAgICBzZWN0b3JzIG9uIGEgcGFydGl0aW9uIGZvciB1c2Igd3JpdGUgb3BlcmF0aW9uLl0KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1haGF2aXIgSmFpbiA8bWphaW5AbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA3M2M4NjQwZTkzODgxNDM5Yjg3YTU3MzQ0ODVhOWU1NmE0OTRlZjUwCi1BdXRob3I6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgotRGF0ZToJV2VkIE5vdiA0IDE1OjU4OjIzIDIwMDkgLTA2MDAKLQotICAgIG9tYXAzZXZtOiBtdXNiOiBhZGQgVVNCIGNvbmZpZwotCi0gICAgQWRkZWQgVVNCIGhvc3QgYW5kIGRldmljZSBjb25maWcgZm9yIGhvc3QgKE1TQywgS2V5Ym9hcmQpIGFuZAotICAgIGRldmljZSAoQUNNKSBmdW5jdGlvbmFsaXRpZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KLQotY29tbWl0IGFlNGNhZjJmYjUzY2M3YmU1ZDU5YTY0OWI4YWVlODZkNTQyY2JiNmYKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU2F0IE9jdCAzMSAxMjozNzo0NiAyMDA5IC0wNTAwCi0KLSAgICBPTUFQMyBVU0IgSW5pdGlhbGl6ZSB0d2w0MDMwIG9ubHkgaWYgcmVxdWlyZWQKLQotICAgIE9NQVAzRVZNIHVzZXMgSVNQMTUwNCBwaHkgYW5kIHNvIHR3bDQwMzAgcmVsYXRlZCBpbml0IGlzIG5vdCByZXF1aXJlZC4KLQotICAgIFN1Ym1pdHRlZC1ieTogQWpheSBLdW1hciBHdXB0YSA8YWpheS5ndXB0YUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgMmVjMWFiZWE0MzU5Yjk0NTIzZDQ1YTIwZDY4ZDg1ODJlMDlhY2U0NgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTYXQgT2N0IDMxIDEyOjM3OjQ1IDIwMDkgLTA1MDAKLQotICAgIE9NQVAzIHpvb20yIFVzZSB1c2J0dHkgaWYgdGhlIGRlYnVnIGJvYXJkIGlzIG5vdCBjb25uZWN0ZWQuCi0KLSAgICBUaGUgcHJlZmVycmVkIHNlcmlhbCBvdXRwdXQgY29tZXMgZnJvbSB0aGUgZGVidWcgYm9hcmQuCi0gICAgV2hlbiB0aGUgZGVidWcgYm9hcmQgaXMgZGlzY29ubmVjdGVkLCBmYWxsIGJhY2sgb24gdXNpbmcKLSAgICB1c2J0dHkgZnJvbSB0aGUgdXNiIGNvbm5lY3RvciBvbiB0aGUgWm9vbTIgYm9hcmQuCi0KLSAgICBUaGlzIHNob3dzIHVwIGFzIC9kZXYvdHR5QUNNMCBpbiBhIGxpbnV4IGhvc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA2Mjk5NDg3ZWY1ZGNkYjA2ZTAzOTRmNTk1NTc1NWM4ZGQ5Y2U3MDdiCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6NDQgMjAwOSAtMDUwMAotCi0gICAgVVNCVFRZIG1ha2Ugc29tZSBmdW5jdGlvbiBkZWNsYXJhdGlvbnMgZWFzaWVyIHRvIHVzZS4KLQotICAgIFpvb20yIG5lZWRzIHRvIHVzZSB0aGVzZSBkZWNsYXJhdGlvbnMgYW5kIHRoZSBpbmNsdWRlIGRpcmVjdG9yeSBpcyBhCi0gICAgYmV0dGVyIHBsYWNlIGZyb20gdGhlbSB0aGFuIGluIHRoZSBtaWRkbGUgb2YgdGhlIGRyaXZlciBkaXJlY3RvcnkuCi0gICAgSXQgZGlkIG5vdCBtYWtlIHNlbnNlIHRvIGNyZWF0ZSBhIG5ldyBmaWxlIGZvciBqdXN0IGEgY291cGxlIG9mCi0gICAgbGluZXMgc28gdGhleSB3ZXJlIGFwcGVuZGVkIHRvIHRoZSBzZXJpYWwuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgMjUzNzRiZmJmM2E2YzY2MjRkOGRiNTEyYzk1YTQ5NjBlM2E4NDYzNQotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTYXQgT2N0IDMxIDEyOjM3OjQzIDIwMDkgLTA1MDAKLQotICAgIE9NQVAzIGJlYWdsZSBBZGQgdXNidHR5IGNvbmZpZ3VyYXRpb24KLQotICAgIFRoZSBwcmltYXJ5IGNvbnNvbGUgb2YgYmVhZ2xlIGlzIHRoZSBzZXJpYWwgaGVhZGVyLgotCi0gICAgQSBzZWNvbmRhcnkgY29uc29sZSBpcyB0byB1c2UgdGhlIHVzYnR0eS4gIFRoZSB1c2VyIGNhbiBzZXQgdGhpcwotICAgIG1hbnVhbGx5IGJ5IGRvaW5nCi0KLSAgICBzZXRlbnYgc3Rkb3V0IHVzYnR0eTsgc2V0ZW52IHN0ZGluIHVzYnR0eTsgc2V0ZW52IHN0ZGVyciB1c2J0dHkKLSAgICBzYXZlZW52Ci0KLSAgICB1c2J0dHkgd2lsbCBiZSB1c2FibGUgYnkgYWNjZXNzaW5nIHRoZSAvZGV2L3R0eUFDTTAgb24gYSBsaW51eCBob3N0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgMDViZTVhNjBlOThlYjEyNDM5MDFmNTU2ZmVmZDY2YjE2OTFmYWJlNAotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTYXQgT2N0IDMxIDEyOjM3OjQyIDIwMDkgLTA1MDAKLQotICAgIE9NQVAzIHpvb20xIEFkZCB1c2J0dHkgY29uZmlndXJhdGlvbgotCi0gICAgVGhlIHByaW1hcnkgY29uc29sZSBvZiB6b29tMSBpcyB0aGUgc2VyaWFsIG91dCBmcm9tIHRoZSBqdW1wZXJzCi0gICAgYWNjZXNzZWQgYnkgcmVtb3ZpbmcgdGhlIGJhY2sgcGFuZWwuCi0KLSAgICBBIHNlY29uZGFyeSBjb25zb2xlIGlzIHRvIHVzZSB0aGUgdXNidHR5LiAgVGhlIHVzZXIgY2FuIHNldCB0aGlzCi0gICAgbWFudWFsbHkgYnkgZG9pbmcKLQotICAgIHNldGVudiBzdGRvdXQgdXNidHR5OyBzZXRlbnYgc3RkaW4gdXNidHR5OyBzZXRlbnYgc3RkZXJyIHVzYnR0eQotICAgIHNhdmVlbnYKLQotICAgIHVzYnR0eSB3aWxsIGJlIHVzYWJsZSBieSBhY2Nlc3NpbmcgdGhlIC9kZXYvdHR5QUNNMCBvbiBhIGxpbnV4IGhvc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBmMjk4ZTRiNmRkNTZkZjNlMzVhMTNhNmRkZDU3MmNhM2JhZjA2YWQyCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVNhdCBPY3QgMzEgMTI6Mzc6NDEgMjAwOSAtMDUwMAotCi0gICAgT01BUDMgQWRkIHVzYiBkZXZpY2Ugc3VwcG9ydAotCi0gICAgVGhpcyBjaGFuZ2UgYWRkcyB0aGUgdXNiIGRldmljZSBzdXBwb3J0IGZvciBtdXNiLgotCi0gICAgT21hcDMgcGxhdGZvcm0gc3VwcG9ydCBhZGRlZCBhdCB0aGUgc2FtZSBsZXZlbCBhcyBkYXZpbmNpLgotCi0gICAgVGhlIGludGVyZmFjZSBmb3IgdXNidHR5IHRvIHVzZSB0aGUgbXVzYiBkZXZpY2Ugc3VwcG9ydCB3YXMgYWRkZWQuCi0KLSAgICBWZXJpZmllZCBvbiBvbWFwMyBiZWFnbGUsIHpvb20xIGFuZCB6b29tMi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IGJmZmJiMmE4NmQyYTNhYTI4YmQ4Zjk4NjlhYTU1MzA4MmZiNWFmNWYKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU2F0IE9jdCAzMSAxMjozNzo0MCAyMDA5IC0wNTAwCi0KLSAgICBUV0w0MDMwIEFkZCB1c2IgUEhZIHN1cHBvcnQKLQotICAgIFRoZSB0d2w0MDMwIHByb3ZpZGVzIGEgUEhZIGRldmljZSBmb3IgY29ubmVjdGluZyBhIGxpbmsgZGV2aWNlLAotICAgIGxpa2UgbXVzYiwgdG8gcGh5c2ljYWwgY29ubmVjdGlvbi4KLQotICAgIFRoaXMgY2hhbmdlIGFkZHMgdGhlIHR3bDQwMzAgdXNiIHJlZ2lzdGVycyBhbmQgZnVuY3Rpb25zIGZvcgotICAgIGluaXRpYWxpemluZyB0aGUgUEhZIGFzIHJlcXVpcmVkIGJ5IG9tYXAzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgOTg4MzY1YTIwNDgzNTZmOTRlZDBjMjk0MDA5MjMzMzE3YzlmYjRiMgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTYXQgT2N0IDMxIDEyOjM3OjM5IDIwMDkgLTA1MDAKLQotICAgIFVTQiBhZGQgbWFjcm9zIGZvciBkZWJ1Z2dpbmcgdXNiIGRldmljZSBzZXR1cC4KLQotICAgIFdoZW4gZGV2ZWxvcGluZyB1c2IgZGV2aWNlIGZlYXR1cmVzLCBpdCBpcyB1c2VmdWwgdG8gcHJpbnQgb3V0Ci0gICAgY29tbW9uIHVzYiBzdHJ1Y3R1cmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgOGY4YmQ1NjVmMzVmZjhhMDY4NzI3YmZjZjg5NzVjNTBkZjA4MjA0MwotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTYXQgT2N0IDMxIDEyOjM3OjM4IDIwMDkgLTA1MDAKLQotICAgIFVTQiBDb25zb2xpZGF0ZSBkZXNjcmlwdG9yIGRlZmluaXRpb25zCi0KLSAgICBUaGUgaGVhZGVyIGZpbGVzIHVzYi5oIGFuZCB1c2JkZXNjcmlwdG9ycy5oIGhhdmUgdGhlIHNhbWUgbmFtZWVkCi0gICAgc3RydWN0dXJlIGRlZmluaXRpb25zIGZvcgotCi0gICAgdXNiX2NvbmZpZ19kZXNjcmlwdG9yCi0gICAgdXNiX2ludGVyZmFjZV9kZXNjcmlwdG9yCi0gICAgdXNiX2VuZHBvaW50X2Rlc2NyaXB0b3IKLSAgICB1c2JfZGV2aWNlX2Rlc2NyaXB0b3IKLSAgICB1c2Jfc3RyaW5nX2Rlc2NyaXB0b3IKLQotICAgIFRoZXNlIGFyZSBvdXQgcmlnaHQgZHVwbGljYXRlcyBpbiB1c2IuaAotCi0gICAgdXNiX2RldmljZV9kZXNjcmlwdG9yCi0gICAgdXNiX3N0cmluZ19kZXNjcmlwdG9yCi0KLSAgICBUaGlzIG9uZSBoYXMgZXh0cmEgdW51c2VkIGVsZW1lbnRzCi0KLSAgICB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvcgotCi0JdW5zaWduZWQgY2hhcgliUmVmcmVzaAotCXVuc2lnbmVkIGNoYXIJYlN5bmNoQWRkcmVzczsKLQotICAgIFRoZXNlIGluIHVzYi5oIGhhdmUgZXh0cmEgZWxlbWVudHMgYXQgdGhlIGVuZCBvZiB0aGUgdXNiIDIuMAotICAgIHNwZWNpZmllZCBkZXNjcmlwdG9yIGFuZCBhcmUgdXNlZC4KLQotICAgIHVzYl9jb25maWdfZGVzY3JpcHRvcgotICAgIHVzYl9pbnRlcmZhY2VfZGVzY3JpcHRvcgotCi0gICAgVGhlIGNoYW5nZSBpcyB0byBjb25zb2xpZGF0ZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUgZGVzY3JpcHRvcnMKLSAgICB0byB1c2JkZXNjcmlwdG9ycy5oLiAgVGhlIGR1YmxpY2F0ZXMgaW4gdXNiLmggYXJlIHJlbW92ZWQuCi0gICAgVGhlIGV4dHJhIGVsZW1lbnQgc3RydWN0dXJlIHdpbGwgaGF2ZSB0aGVpciBuYW1lIHNob3J0ZWQgYnkKLSAgICByZW1vdmluZyB0aGUgJ19kZXNjcmlwdG9yJyBzdWZmaXguCi0KLSAgICBTbwotCi0gICAgdXNiX2NvbmZpZ19kZXNjcmlwdG9yIC0+IHVzYl9jb25maWcKLSAgICB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3IgLT4gdXNiX2ludGVyZmFjZQotCi0gICAgRm9yIHRoZXNlLCB0aGUgY29tbW9uIGRlc2NyaXB0b3IgZWxlbWVudHMgYXJlIGFjY2Vzc2VkIG5vdwotICAgIGJ5IGFuIGVsZW1lbnQgJ2Rlc2MnLgotCi0gICAgQXMgYW4gZXhhbXBsZQotCi0gICAgLQlpZiAoaWZhY2UtPmJJbnRlcmZhY2VDbGFzcyAhPSBVU0JfQ0xBU1NfSFVCKQotICAgICsJaWYgKGlmYWNlLT5kZXNjLmJJbnRlcmZhY2VDbGFzcyAhPSBVU0JfQ0xBU1NfSFVCKQotCi0gICAgVGhpcyBoYXMgYmVlbiBjb21waWxlIHRlc3RlZCBvbiBNQUtFQUxMIGFybSwgcHBjIGFuZCBtaXBzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgZTVlNGU3MDVjZTQwMjg1NmE0ODAwZWJmNGMwY2MxNjNkNDFiNThiMAotQXV0aG9yOiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIERlYyA5IDE4OjEzOjI2IDIwMDkgKzA4MDAKLQotICAgIFVwZGF0ZSBNYWtlZmlsZSBmb3IgdGFnIGdlbmVyYXRpbmcKLQotICAgIEdldCB0YWcgZGlyZWN0b3JpZXMgZnJvbSB0aGUgJChfX0xJQikgYW5kIGFsc28gZ2VuZXJhdGUgdGFnIGZvciAuUyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExpIFlhbmcgPGxlb2xpQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkMDJmZmJmOGQ3MjA4NTAzNWY3NDZjNjNjMjYwOWRhZjIwYTg0NzY1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgRGVjIDE2IDE0OjEyOjExIDIwMDkgLTA2MDAKLQotICAgIGRyaXZlcnMvYmlvc19lbXVsYXRvcjogRml4IGNvbXBpbGUgZXJyb3IgaW4gLmRlcGVuZCBub3QgYmVpbmcgZ2VuZXJhdGVkCi0KLSAgICBtYWtlIC1DIGRyaXZlcnMvYmlvc19lbXVsYXRvci8KLSAgICBtYWtlWzJdOiBFbnRlcmluZyBkaXJlY3RvcnkKLSAgICBgZHJpdmVycy9iaW9zX2VtdWxhdG9yJwotICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSBhdGliaW9zLmM6NDk6Ci0gICAgYmlvc2VtdWkuaDo0NzoyMTogZXJyb3I6IGJpb3NlbXUuaDogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotICAgIC4uLgotICAgIHg4NmVtdS9kZWNvZGUuYzo0MDoyODogZXJyb3I6IHg4NmVtdS94ODZlbXVpLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSAgICAuLi4KLQotICAgIER1ZSB0byBsYWNrIG9mIHByb3BlciBDUFBGTEFHUyBiZWluZyBwYXNzZWQgdG8gLmRlcGVuZCBnZW5lcmF0aW9uIHJ1bGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhMjAwYTdjMDRkODk4NTNkMmExMzk1Yjk2ZDhjYTVlM2RkNzU0NTUxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDE1IDIzOjIwOjU0IDIwMDkgKzAxMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0c7IHByZXBhcmUgUHJlcGFyZSB2MjAwOS4xMQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGY5NDc2OTAyYjc4OWIwNDgxYjlkZjQ5YWY4OGQ2Y2E5NGZiMTZmYTAKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBEZWMgMTUgMTI6MTA6NDcgMjAwOSAtMDYwMAotCi0gICAgbXBjODV4eCwgbXBjODZ4eDogRml4IGdkLT5jcHUgcG9pbnRlciBhZnRlciByZWxvY2F0aW9uCi0KLSAgICBUaGUgZ2QtPmNwdSBwb2ludGVyIGlzIHNldCB0byBhbiBhZGRyZXNzIGxvY2F0ZWQgaW4gZmxhc2ggd2hlbiB0aGUKLSAgICBwcm9iZWNwdSgpIGZ1bmN0aW9uIGlzIGNhbGxlZCB3aGlsZSBVLUJvb3QgaXMgZXhlY3V0aW5nIGZyb20gZmxhc2guCi0gICAgVGhpcyBwb2ludGVyIG5lZWRzIHRvIGJlIHVwZGF0ZWQgdG8gcG9pbnQgdG8gYW4gYWRkcmVzcyBpbiBSQU0gYWZ0ZXIKLSAgICByZWxvY2F0aW9uIGhhcyBvY2N1cnJlZCBvdGhlcndpc2UgTGludXggbWF5IG5vdCBiZSBhYmxlIHRvIGJvb3QgZHVlIHRvCi0gICAgImZkdCBib2FyZCIgY3Jhc2hpbmcgaWYgZmxhc2ggaGFzIGJlZW4gZXJhc2VkIG9yIGNoYW5nZWQuCi0KLSAgICBUaGlzIGJ1ZyB3YXMgaW50cm9kdWNlZCBpbiBjb21taXQKLSAgICBhMGUyMDY2ZjM5Mjc4MjczMGYwMzk4MDk1ZTU4M2M4NzgxMmQ5N2YyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBSZXBvcnRlZC1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBUZXN0ZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgVGVzdGVkIG9uIE1QQzg1MjdEUy4KLSAgICBUZXN0ZWQgYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYWI3MGY2ZmZmOWZhM2I3OTEwYzExYjg3NGY2MjVlMDA0MjU2YzUwCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gRGVjIDE0IDE2OjMwOjM5IDIwMDkgLTA4MDAKLQotICAgIE5ldDogQ2xlYW4gdXAgTEFOOTFDOTYgU3VwcG9ydAotCi0gICAgQSBwcmV2aW91cyBDb21taXQgY29udmVydGVkIHRoZSBMQU45MUM5NiBFdGhlcm5ldCBkcml2ZXIgdG8gdXNpbmcgdGhlCi0gICAgQ09ORklHX05FVF9NVUxUSSBBUEksIGJ1dCBkaWQgbm90IGluY2x1ZGUgZnVsbCBib2FyZCBzdXBwb3J0LiAgVGhpcyBwYXRjaAotICAgIGZpbmlzaGVzIHRoZSBqb2IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMzM2M2EzNGI5ZWVkYTk3ODNhZmNiYmVkNWNkZDczODkyNmQxZjRiZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIERlYyAxMyAxNzo1ODozNCAyMDA5IC0wNjAwCi0KLSAgICBNVkJMVUU6IFJlbW92ZSBDT05GSUdfQ01EX0lSUQotCi0gICAgTmVpdGhlciB0aGUgTVZCTFVFIG5vciBpdHMgdW5kZXJseWluZyBhcmNoaXRlY3R1cmUgaW1wbGVtZW50IHRoZQotICAgIGRvX2lycWluZm8oKSBmdW5jdGlvbiB3aGljaCBpcyByZXF1aXJlZCB3aGVuIENPTkZJR19DTURfSVJRIGlzIGRlZmluZWQuCi0gICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhlIGZvbGxvd2luZyBNVkJMVUUgY29tcGlsZXIgZXJyb3I6Ci0KLSAgICAtPiAuL01BS0VBTEwgTVZCTFVFCi0gICAgQ29uZmlndXJpbmcgZm9yIE1WQkxVRSBib2FyZC4uLgotICAgIGNvbW1vbi9saWJjb21tb24uYShjbWRfaXJxLm8pOigudV9ib290X2NtZCsweDI0KTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZG9faXJxaW5mbycKLSAgICBtYWtlOiAqKiogW3UtYm9vdF0gRXJyb3IgMQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBBY2tlZC1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotCi1jb21taXQgMThlOGFkNjBlZTg3NDMxYzAxY2MyNjg2OTg1YjYwY2M1NGY1ZGQzYgotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CU1vbiBEZWMgMTQgMTc6NTQ6NDAgMjAwOSArMDEwMAotCi0gICAgaW14MjdsaXRlOiBSZWVuYWJsZSBNVEQgc3VwcG9ydCBvbiBOT1IgZmxhc2guCi0KLSAgICBUaGUgc3VwcG9ydCBmb3IgdGhpcyB3YXMgc2lsZW50bHkgZHJvcHBlZCBieSBhIGNvbmZpZ3VyYXRpb24KLSAgICBzcGxpdCBkdXJpbmcgdGhlIG1lcmdlIG9mIHRoZSBpbXgyN2xpdGUgYm9hcmQgc3VwcG9ydCBpbiBjb21taXQKLSAgICA4NjRhYTAzNGYzYTBlMTBjZTcxMGU4YmJkYTE3MWRmM2NhYjU5NDE0IChjbWRfbXRkcGFydHM6IE1vdmUgdG8gY29tbW9uCi0gICAgaGFuZGxpbmcgb2YgRkxBU0ggZGV2aWNlcyB2aWEgTVREIGxheWVyKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgMDc2Y2QyNGNiNDI3OGMxMjVjOGYzNmRmMzg2ODUyZGMwZmNmZWZhZQotQXV0aG9yOiBUaG9tYXMgV2ViZXIgPHdlYmVyQGNvcnNjaWVuY2UuZGU+Ci1EYXRlOglXZWQgRGVjIDkgMDk6Mzg6MDQgMjAwOSArMDEwMAotCi0gICAgbmV0OiBkbTkwMDB4OiBmaXggZGVidWcgb3V0cHV0Ci0KLSAgICBjb21taXQgNjBmNjFlNmQ3NjU1NDAwYmI3ODVhMmVmNjM3NTgxNjc5OTQxZjZkMSBicmVha3MgY29tcGlsZSB3aXRoIGdjYyBieSBpbnRyb2R1Y2luZyBfX2Z1bmNfXwotICAgIGluc3RlYWQgb2YgY29uc3RhbnQgc3RyaW5nICJmdW5jIiBpbiB0aGUgbWFjcm8gY2FsbCBidXQgbWlzc2VkIHRvIGNoYW5nZSB0aGUgbWFjcm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgV2ViZXIgPHdlYmVyQGNvcnNjaWVuY2UuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGMxNzlhMjg5NmU2YTUxMzhlMzA3ODZmMWQ3OTYxZDg4MGRiZDZkMzEKLUF1dGhvcjogSm9obiBPZ25lc3MgPGpvaG4ub2duZXNzQGxpbnV0cm9uaXguZGU+Ci1EYXRlOglGcmkgRGVjIDExIDA5OjQ3OjI4IDIwMDkgKzAxMDAKLQotICAgIGZlY19teGM6IGluY29tcGxldGUgZXJyb3IgaGFuZGxpbmcKLQotICAgIGZlY19pbml0KCkgd2lsbCBvbmx5IGFsbG9jYXRlIGZlYy0+YmFzZV9wdHIgaWYgaXQgaXMgbm9uLU5VTEwuIEJ1dAotICAgIHRoZSBjbGVhbnVwIHJvdXRpbmUgb24gZXJyb3Igd2lsbCBmcmVlIHRoZSBwb2ludGVyIHdpdGhvdXQgc2V0dGluZwotICAgIGl0IHRvIE5VTEwuIFRoaXMgbWVhbnMgdGhhdCBhIGxhdGVyIGNhbGwgdG8gZmVjX2luaXQoKSB3b3VsZCByZXN1bHQKLSAgICBpbiB1c2luZyBhbiBpbnZhbGlkIHBvaW50ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIE9nbmVzcyA8am9obi5vZ25lc3NAbGludXRyb25peC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMmFiNGE0ZDA5NTJiNzU0YjFjNzRmNGQyYjEyYjgzZDYwMGQ0NDljOAotQXV0aG9yOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC5ldT4KLURhdGU6CUZyaSBEZWMgNCAwOTo1MjoxNyAyMDA5ICswMTAwCi0KLSAgICBuZXQ6IGUxMDAwOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEludGVsIDgyNTQ2R0IgY29udHJvbGxlcgotCi0gICAgVGhpcyBjaGlwIGlzIGVxdWlwcGVkIGZvciBleGFtcGxlIG9uIHRoZSBlc2QgUE1DLUVUSDItR0IgYm9hcmQuIFNvIGxldCdzCi0gICAgYWRkIGl0IHRvIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBjaGlwcyB0byB0aGUgZTEwMDAgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhYWZkYTM4ZmIyNjZiOTRjYTM0NGU1ZmYwMTRkNDMwNzkwYzcyMjc5Ci1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJV2VkIE9jdCAyOCAyMjoxMzo0MCAyMDA5ICswMTAwCi0KLSAgICBBZGQgZXJyb3IgY29kZXMvaGFuZGxpbmcgZm9yIFRGVFAtc2VydmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYWM2YjM2MmEyNTk4YjhjZDI3YmViMDcxZmE2MjI0Y2Y4YjEyMWUxYgotQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgotRGF0ZToJRnJpIE9jdCAxNiAwMDowNjozNyAyMDA5IC0wNTAwCi0KLSAgICBMQU45MUM5NjogRW5hYmxlIE5FVF9NVUxUSSBMQU4gZHJpdmVyCi0KLSAgICBUaGlzIG1vZGlmaWNhdGlvbiBpcyBOT1QgdGVzdGVkIG9uIGFueSBvZiB0aGUKLSAgICBwbGF0Zm9ybXMgbW9kaWZpZWQgYXMgSSBkb250IGhhdmUgdGhlbS4gcGxlYXNlCi0gICAgaGVscCBieSB0ZXN0aW5nK2J1aWxkaW5nK2ZpeGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYTE3MjU5OTliOGI3NTI3OTcxMTgzMTIyY2RmYjU0ZTJmODdmNjFhZQotQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgotRGF0ZToJRnJpIE9jdCAxNiAwMDowNjozNiAyMDA5IC0wNTAwCi0KLSAgICBUSSBPTUFQMzogU0RQMzQzMCBGSVggTkVUX01VTFRJIFdhcm5pbmcKLQotICAgIEVuYWJsZSB0aGUgTkVUIE1VTFRJIG9wdGlvbiBhbmQgcmVtb3ZlIGJ1aWxkIHdhcm5pbmcKLQotICAgIFRlc3RlZDogU0RQMzQzMAotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYjdhZDQxMDlkYTM0MmRmYzc4NzQ2OGZjNzEzZDg4ZDBhOGI5ZTY3YQotQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgotRGF0ZToJRnJpIE9jdCAxNiAwMDowNjozNSAyMDA5IC0wNTAwCi0KLSAgICBORVQ6IExBTjkxQzk2IENPTkZJR19ORVRfTVVMVElpZnkKLQotICAgIE1ha2UgdGhlIGxhbjkxYzk2IGRyaXZlciBjYXBhYmxlIG9mIENPTkZJR19ORVRfTVVMVEkKLSAgICB0byBiZSBjbGVhbiBmb3IgdGhlIG5ldyBhcmNoLCBhZGQgYSBhIGxpbCBkZXRlY3QgZnVuY3Rpb24KLSAgICBNb3N0IG9mIHRoZSBmb3JtYXR0aW5nIGNoYW5nZSB3YXMgZG9uZSB0byBrZWVwIGNoZWNrcGF0Y2gKLSAgICBzaWxlbnQsIGJ1dCBhIGZldyBmdW5jdGlvbnMgYW5kICNpZiAwZWQgY29kZSB3aGljaAotICAgIGRvZXMgbm90IG1ha2Ugc2Vuc2UgZm9yIE5FVF9NVUxUSSBoYXZlIGJlZW4gcmVtb3ZlZAotCi0gICAgTm93LCB1c2UgdGhlIGxhbjkxYzk2X2luaXRpYWxpemUoKSBmdW5jdGlvbiB0byBpbml0IHRoZSBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDZhYzU5YzU1MThlMWQyZTJlZjFjNGI4ZGVlOTkyNjdkZmJkZjljZGMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE5vdiAzIDExOjM1OjQyIDIwMDkgLTA1MDAKLQotICAgIG5ldDogcHVsbCBDT05GSUcgY2hlY2tzIG91dCBvZiBzb3VyY2UgYW5kIGludG8gbWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZjRjZmU0Mjc1ODE5MmQwOWY4Mzc1ZTM4NGNjMDAwYWE3MGQ5NzAyOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRGVjIDkgMDk6MDE6NDMgMjAwOSArMDEwMAotCi0gICAgbmFuZDogRml4IGFjY2VzcyB0byBsYXN0IGJsb2NrIGluIE5BTkQgZGV2aWNlcwotCi0gICAgQ3VycmVudGx5LCB0aGUgbGFzdCBibG9jayBvZiBOQU5EIGRldmljZXMgY2FuJ3QgYmUgYWNjZXNzZWQuIFRoaXMgcGF0Y2gKLSAgICBmaXhlcyB0aGlzIGlzc3VlIGJ5IGNvcnJlY3RpbmcgdGhlIGJvdW5kYXJ5IGNoZWNraW5nIChvZmYtYnktb25lIGVycm9yKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzYjg4N2NhOGNlNzJjYzEyMTI5MTgzNTM4ZjZlODI4ZGIxM2Y0ODY3Ci1BdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Ci1EYXRlOglUdWUgRGVjIDggMjI6MjA6MzQgMjAwOSArMDEwMAotCi0gICAgbXBjODN4eDogYm9vdCB0aW1lIHJlZ3Jlc3Npb24sIG1vdmUgTENSUiBzZXR1cCBiYWNrIHRvIGNwdV9pbml0X2YKLQotICAgIENvbW1pdCBjNzE5MGYwMiAocmV0YWluIFBPUiB2YWx1ZXMgb2Ygbm9uLWNvbmZpZ3VyZWQgQUNSLCBTUENSLCBTQ0NSLAotICAgIGFuZCBMQ1JSIGJpdGZpZWxkcykgbW92ZWQgdGhlIExDUlIgYXNzaWdubWVudCB0byBhZnRlciByZWxvY2F0aW9uCi0gICAgdG8gUkFNIGJlY2F1c2Ugb2YgdGhlIHBvdGVudGlhbCBwcm9ibGVtIHdpdGggY2hhbmdpbmcgdGhlIGxvY2FsIGJ1cwotICAgIGNsb2NrIHdoaWxlIGV4ZWN1dGluZyBmcm9tIGZsYXNoLgotCi0gICAgVGhpcyBjaGFuZ2UgdW5mb3J0dW5hdGVseSBhZHZlcnNlbHkgYWZmZWN0cyB0aGUgYm9vdCB0aW1lLCBhcyBydW5uaW5nCi0gICAgYWxsIGNvZGUgdXAgdG8gY3B1X2luaXRfciBjYW4gY2F1c2Ugc2lnbmlmaWNhbnQgc2xvd2Rvd24uCi0KLSAgICBFLkcuIG9uIGEgODM0NyBib2FyZCBhIGJvb3R1cCB0aW1lIGluY3JlYXNlIG9mIH42MDBtcyBoYXMgYmVlbiBvYnNlcnZlZDoKLQotICAgICAgIDAuMDIwIENQVTogICBlMzAwYzEsIE1QQzgzNDdfUEJHQV9FQSwgUmV2OiAzLjAgYXQgNDAwIE1IeiwgQ1NCOiAyNjYuNjY3IE1IegotICAgICAgIDAuMTY4IFJTOiAgICAyMzIKLSAgICAgICAwLjE3MiBJMkM6ICAgcmVhZHkKLSAgICAgICAwLjE3NiBEUkFNOiAgNjQgTUIKLSAgICAgICAxLjIzNiBGTEFTSDogMzIgTUIKLQotICAgIFZlcnN1czoKLQotICAgICAgIDAuMDE2IENQVTogICBlMzAwYzEsIE1QQzgzNDdfUEJHQV9FQSwgUmV2OiAzLjAgYXQgNDAwIE1IeiwgQ1NCOiAyNjYuNjY3IE1IegotICAgICAgIDAuMDkyIFJTOiAgICAyMzIKLSAgICAgICAwLjA5MiBJMkM6ICAgcmVhZHkKLSAgICAgICAwLjA5NiBEUkFNOiAgNjQgTUIKLSAgICAgICAwLjY0NCBGTEFTSDogMzIgTUIKLQotICAgIFNvIGZhciBubyBib2FyZHMgaGF2ZSBuZWVkZWQgdGhlIGxhdGUgTENSUiBzZXR1cCwgc28gc2ltcGx5IHJldmVydCBpdAotICAgIGZvciBub3cgLSBJZiBpdCBpcyBuZWVkZWQgYXQgYSBsYXRlciB0aW1lLCB0aG9zZSBib2FyZHMgY2FuIGVpdGhlciBkbwotICAgIHRoZWlyIG93biBmaW5hbCBMQ1JSIHNldHVwIGluIGJvYXJkIGNvZGUgKEUuRy4gaW4gYm9hcmRfZWFybHlfaW5pdF9yKSwKLSAgICBvciB3ZSBjYW4gaW50cm9kdWNlIGEgQ09ORklHX1NZU19MQ1JSX0xBVEUgY29uZmlnIG9wdGlvbiB0byBvbmx5IGRvCi0gICAgdGhlIHNldHVwIGluIGNwdV9pbml0X3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0YjE0MmZlYmZmNzFlYWJkYjdkZGJiMTI1YzdiNTgzYjI0ZGRjNDM0Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IERlYyAzIDExOjIxOjIxIDIwMDkgKzAxMDAKLQotICAgIGNvbW1vbjogZGVsZXRlIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYgYW5kIENPTkZJR19TWVNfNjRCSVRfU1RSVE9VTAotCi0gICAgVGhlcmUgaXMgbW9yZSBhbmQgbW9yZSB1c2FnZSBvZiBwcmludGluZyA2NGJpdCB2YWx1ZXMsCi0gICAgc28gZW5hYmxlIHRoaXMgZmVhdHVyZSBnZW5lcmFsbHksIGFuZCBkZWxldGUgdGhlCi0gICAgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBhbmQgQ09ORklHX1NZU182NEJJVF9TVFJUT1VMCi0gICAgZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMDBiNmQ5MjdiYTg5MDBjZGYyMThiOTBiMjc3ZTEwOTBlMjg0YmVhNgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBEZWMgMyAxMToyMDowNiAyMDA5ICswMTAwCi0KLSAgICA1eHh4LCBmZHQ6IG1vdmUgZmR0X2ZpeHVwX21lbW9yeSgpIHRvIGNwdS5jIGZpbGUKLQotICAgIHUtYm9vdCB1cGRhdGVzLCBiZWZvcmUgc3RhcnRpbmcgTGludXgsIHRoZSBtZW1vcnkgbm9kZSBpbiB0aGUKLSAgICBEVFMuIEFzIHRoaXMgaXMgYSAic3RhbmRhcmQiIGZlYXR1cmUsIG1vdmUgdGhpcyBmdW5jdGlvbmFsaXR5Ci0gICAgdG8gdGhlIGNwdS5jIGZpbGUgZm9yIG1wYzV4eHggYW5kIG1wYzUxMnggcHJvY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMzg2MTE4YTg5NjU1NGIxM2YxNGFkMGY4MjM1NjI3Njk4OGY3ZGU4MgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglUdWUgRGVjIDggMDk6MTI6NDkgMjAwOSArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogQ29ycmVjdCBmZnMgcmVncmVzc2lvbiBmb3IgTWljcm9ibGF6ZQotCi0gICAgV2UgYXJlIHVzaW5nIGdlbmVyaWMgaW1wbGVtZW50YXRpb24gb2YgZmZzLiBUaGlzIHNob3VsZAotICAgIGJlIHBhcnQgb2YgU2ltb24ncyBjb21taXQgMDQxM2NmZWNlYTM1MDAwMGVhYjVlNTkxYTA5NjVjM2UzZWUwZmYwMAotCi0gICAgSGVyZSBpcyB3YXJuaW5nIG1lc3NhZ2Ugd2hpY2ggdGhpcyBwYXRjaCByZW1vdmVzLgotCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC90bXAvdS1ib290LW1pY3JvYmxhemUvaW5jbHVkZS9jb21tb24uaDozOCwKLQkJICAgICBmcm9tIGNtZF9tdGRwYXJ0cy5jOjg3OgotICAgIC90bXAvdS1ib290LW1pY3JvYmxhemUvaW5jbHVkZS9saW51eC9iaXRvcHMuaDoxMjM6MTogd2FybmluZzogImZmcyIgcmVkZWZpbmVkCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC90bXAvdS1ib290LW1pY3JvYmxhemUvaW5jbHVkZS9saW51eC9iaXRvcHMuaDoxMTAsCi0JCSAgICAgZnJvbSAvdG1wL3UtYm9vdC1taWNyb2JsYXplL2luY2x1ZGUvY29tbW9uLmg6MzgsCi0JCSAgICAgZnJvbSBjbWRfbXRkcGFydHMuYzo4NzoKLSAgICAvdG1wL3UtYm9vdC1taWNyb2JsYXplL2luY2x1ZGUvYXNtL2JpdG9wcy5oOjI2OToxOgotICAgIHdhcm5pbmc6IHRoaXMgaXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBwcmV2aW91cyBkZWZpbml0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA4ZmU3YjI5Zjk4MTEzMjI5MzFmMDE5MmE1NjQzMWVkY2Y4MTlkNmI5Ci1BdXRob3I6IEdyYWVtZSBTbWVjaGVyIDxncmFlbWUuc21lY2hlckBtYWlsLm1jZ2lsbC5jYT4KLURhdGU6CU1vbiBEZWMgNyAwODowOTo1NyAyMDA5IC0wODAwCi0KLSAgICBtaWNyb2JsYXplOiBTdG9wIHN0YWNrIGNsb2JiZXJpbmcgaW4gbWljcm9ibGF6ZS1nZW5lcmljLgotCi0gICAgQSB0eXBvIGNhdXNlZCB0aGUgc3RhY2sgYW5kIG1hbGxvYyByZWdpb25zIHRvIG92ZXJsYXAsIHdoaWNoIHByZXZlbnRlZAotICAgIG1lbV9tYWxsb2NfaW5pdCgpIGZyb20gcmV0dXJuaW5nLiBUaGlzIGNvbW1pdCBtYWtlcyB0aGUgbWVtb3J5IGxheW91dCBtYXRjaAotICAgIHRoZSBleGFtcGxlIGRlc2NyaWJlZCBpbiBpbmNsdWRlL2NvbmZpZ3MvbWljcm9ibGF6ZS1nZW5lcmljLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBTbWVjaGVyIDxncmFlbWUuc21lY2hlckBtYWlsLm1jZ2lsbC5jYT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCAwZmM1Mjk0OGJkYTA3MzQ0MzFjYjUyOGVlNGZkODJmMWRlYzhjN2I1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gRGVjIDcgMjM6MTQ6MTMgMjAwOSArMDEwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRywgcHJlcGFyZSAtcmMyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZjIzNTI4NzdjYjJkYWFjODgxMTUxOTJmYjA5OTkxYTIzOTdkMGIyNwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIERlYyA2IDIzOjU4OjI4IDIwMDkgLTA2MDAKLQotICAgIE1BS0VBTEw6IEZpeCByZXR1cm4gdmFsdWUKLQotICAgIFByZXZpb3VzbHkgTUFLRUFMTCB3b3VsZCBhbHdheXMgcmV0dXJuIGEgdmFsdWUgb2YgMCwgZXZlbiBpZiAxIG9yIG1vcmUKLSAgICBib2FyZHMgZGlkIG5vdCBjb21waWxlLiAgVGhpcyBjaGFuZ2UgY2F1c2VzIE1BS0VBTEwgdG8gcmV0dXJuIDAgaWYgYWxsCi0gICAgYm9hcmRzIHdlcmUgYWJsZSB0byBidWlsZCwgb3RoZXJ3aXNlIDEuCi0KLSAgICBUaGlzIGNoYW5nZSBhbHNvIHJlcXVpcmVzIGNoYW5naW5nIHRoZSBzY3JpcHQgaW50ZXJwcmV0ZXIgZnJvbSBzaCB0bwotICAgIGJhc2ggdG8gc3VwcG9ydCBiYXNoJ3MgUElQRVNUQVRVUyB2YXJpYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBmYmMxYzhmNmY2Yzk3MjUyNDE5NzgyOWM1NmRkOGYyZjVkYTAyMDBhCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglTdW4gRGVjIDYgMDE6MzM6MjQgMjAwOSAtMDYwMAotCi0gICAgdG9vbHMvbWtpbWFnZTogUmVtb3ZlIGR1cGxpY2F0ZSBsaW5lIG9mIGNvZGUKLQotICAgIFJlY2VudCBjb21taXRzIDFhOTlkZTJjYjRkMDhlYjNiZjlmYjNmNjBhOWQ1MzMxNTBkZThjMGUgYW5kCi0gICAgNmE1OTBjNWY1ZmQxMmNkZDI3ZjMxNTM1MjJhY2ZhYzM4NTQ1OTBlNyBib3RoIGZpeGVkIHRoZSBzYW1lIGJ1ZyBpbiB0aGUKLSAgICBzYW1lIG1hbm5lci4gIFVuZm9ydHVuYXRlbHkgZ2l0IHdhcyAic21hcnQiIGVub3VnaCB0byBtZXJnZSBib3RoIGNoYW5nZXMKLSAgICB3aGljaCByZXN1bHRlZCBpbiBzb21lIGR1cGxpY2F0ZSBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotICAgIFJlb3JkZXJlZCBjb2RlIGFuZCBjb21tZW50IGEgYml0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGRmMDAyZmE2YjljZDQ3NTkwOWVkZTM1YmY5NWI4MDNjMjI4OWM2YTQKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglTYXQgRGVjIDUgMTE6NTk6NTEgMjAwOSArMDEwMAotCi0gICAgaTJjOiBmaXggZGFuZ2xpbmcgY29tbWVudCBpbiBkb19pMmNfbXcoKQotCi0gICAgY29tbWl0IGJkMzc4NGRmOTRiZmVjYTQzZmJmMzQwOTRkZjljYjFiZDNlY2NhM2IgZGVsZXRlZCBzb21lIHVudXNlZAotICAgIGNvZGUgaW4gZG9faTJjX213KCksIGJ1dCBtaXNzZWQgdG8gYWxzbyByZW1vdmUgdGhlIHJlc3BlY3RpdmUKLSAgICBjb21tbWVudC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA3Y2I1ZmMxNWYyMmRlNDZjYzZmYWJjMjZiYWY5OTRjZjhmN2ZhNTQ2Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IERlYyAzIDExOjIwOjQyIDIwMDkgKzAxMDAKLQotICAgIG1wYzUyeHgsIG1hbnJvbGFuZDogYWRkIHNvbWUgY29tbWFuZHMKLQotICAgIGFkZCB0aGUgZm9sbG93aW5nIGNvbW1hbmRzIGZvciB0aGUgbWFucm9sYW5kIGJvYXJkczoKLQotICAgIENPTkZJR19DTURMSU5FX0VESVRJTkcKLSAgICBDT05GSUdfQ09NTUFORF9ISVNUT1JZCi0gICAgQ09ORklHX0FVVE9fQ09NUExFVEUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMzlmZjdkNWY0Y2M1NDdhMjAzNGE4YmZjMmE1YjVmNGI2MmZkNWMyMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgRGVjIDMgMDY6MjQ6MzAgMjAwOSArMDEwMAotCi0gICAgUE9TVDogUmVtb3ZlIGR1cGxpY2F0ZWQgcG9zdF9ob3RrZXlfcHJlc3NlZCgpIGZ1bmN0aW9ucwotCi0gICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIGEgd2VhayBkZWZhdWx0IGZ1bmN0aW9uIGZvciBwb3N0X2hvdGtleV9wcmVzc2VkKCksCi0gICAgcmV0dXJuaW5nIDAsIGZvciBib2FyZHMgd2l0aG91dCBob3RrZXkgc3VwcG9ydC4gVGhlIGxvbmctcnVubmluZyB0ZXN0cwotICAgIHdvbid0IGJlIHN0YXJ0ZWQgb24gdGhvc2UgYm9hcmRzLiBUaGlzIGRlZmF1bHQgZnVuY3Rpb24gd2FzIGltcGxlbWVudGVkCi0gICAgaW4gbWFueSBib2FyZCBkaXJlY3Rvcmllcy4gQnkgaW1wbGVtZW50aW5nIHRoaXMgd2VhayBkZWZhdWx0IHdlIGNhbgotICAgIHJlbW92ZSBhbGwgdGhvc2UgZHVwbGljYXRlIHZlcnNpb25zLgotCi0gICAgQm9hcmRzIHdpdGggaG90a2V5IHN1cHBvcnQsIGNhbiBvdmVycmlkZSB0aGlzIHdlYWsgZGVmYXVsdCBmdW5jdGlvbgotICAgIGJ5IGRlZmluaW5nIG9uZSBpbiB0aGVpciBib2FyZCBzcGVjaWZpYyBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjg0NTA4MjlmOTIxY2YxMDY2N2FmOThhOGQwOGVkZmEzZDk5OGYwNAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBEZWMgMSAxOTozMDo0NyAyMDA5ICswMTAwCi0KLSAgICA1Mnh4LCBtYW5yb2xhbmQ6IGFkZCBmZHRfZml4dXBfbWVtb3J5KCkgaW4gZnRfYm9hcmRfc2V0dXAoKQotCi0gICAgVG8gdXBkYXRlIHRoZSByZWFsIG1lbW9yeSBzaXplIGluIHRoZSBtZW1vcnkgbm9kZSBvbiB0aGUKLSAgICB1YzEwMSBhbmQgbXVjbWM1MiBib2FyZHMgY2FsbCBmZHRfZml4dXBfbWVtb3J5KCkgaW4KLSAgICBmdF9ib2FyZF9zZXR1cCgpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAwZWM4MWRiMjAyOTRlZmRhZDI0NTRhNzUzZTc5ZjFmZTI0NGE0M2NhCi1BdXRob3I6IERhbmllbCBIb2JpIDxkYW5pZWwuaG9iaUBzY2htaWQtdGVsZWNvbS5jaD4KLURhdGU6CVR1ZSBEZWMgMSAxNDowNTo1NSAyMDA5ICswMTAwCi0KLSAgICBGaXggY29tcHV0YXRpb24gaW4gbmFuZF91dGlsLmM6Z2V0X2xlbl9pbmNsX2JhZAotCi0gICAgRGVwZW5kaW5nIG9uIG9mZnNldCwgZmxhc2ggc2l6ZSBhbmQgdGhlIG51bWJlciBvZiBiYWQgYmxvY2tzLAotICAgIGdldF9sZW5faW5jbF9iYWQgbWF5IHJldHVybiBhIHRvbyBzbWFsbCB2YWx1ZSB3aGljaCBtYXkgbGVhZCB0bzoKLQotICAgIDEpIElmIHRoZXJlIGFyZSBubyBiYWQgYmxvY2tzLCBuYW5kX3tyZWFkLHdyaXRlfV9za2lwX2JhZCBjaG9vc2VzIHRoZQotICAgIGJhZCBibG9jayBhd2FyZSByZWFkL3dyaXRlIGNvZGUuIFRoaXMgbWF5IGh1cnQgcGVyZm9ybWFuY2UsIGJ1dCBkb2VzCi0gICAgbm90IGhhdmUgYW55IGFkdmVyc2UgZWZmZWN0cy4KLQotICAgIDIpIElmIHRoZXJlIGFyZSBiYWQgYmxvY2tzLCB0aGUgbmFuZF97cmVhZCx3cml0ZX1fc2tpcF9iYWQgbWF5IGNob29zZQotICAgIHRoZSBiYWQgYmxvY2sgdW5hd2FyZSByZWFkL3dyaXRlIGNvZGUgKGlmIGxlbl9pbmNsX2JhZCA9PSAqbGVuZ3RoKQotICAgIHdoaWNoIGxlYWRzIHRvIGNvcnJ1cHRlZCBkYXRhLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhvYmkgPGRhbmllbC5ob2JpQHNjaG1pZC10ZWxlY29tLmNoPgotCi1jb21taXQgYWFiYjhjYjA4MThlMjg1YWVlZDBjZmFmMjQzNjM1OTk3ZTA3NTU0ZAotQXV0aG9yOiBFdmFuIFNhbWFuYXMgPGVzYW1hbmFzQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIE5vdiA5IDIwOjA4OjM2IDIwMDkgLTA2MDAKLQotICAgIG5mczogTmZzVGltZW91dCgpIHVwZGF0ZXMKLQotICAgIC0gTmZzVGltZW91dCgpIGRvZXMgbm90IGNvcnJlY3RseSB1cGRhdGUgdGhlIE5GUyB0aW1lb3V0IHZhbHVlIHdoaWNoCi0gICAgICByZXN1bHRzIGluIE5mc1RpbWVvdXQoKSBvbmx5IGJlaW5nIGNhbGxlZCBvbmNlIGluIGNlcnRhaW4gc2l0dWF0aW9ucy4KLSAgICAgIFRoaXMgY2FuIHJlc3VsdCBpbiB0aGUgJ25mcycgY29tbWFuZCBoYW5naW5nIGluZGVmaW5ldGx5LiAgRm9yCi0gICAgICBleGFtcGxlLCB0aGUgY29tbWFuZDoKLQotCW5mcyAxOTIuMTY4LjAuMTovaG9tZS91c2VyL2ZpbGUKLQotICAgICAgd2lsbCBub3QgZXhpdCB1bnRpbCBjdHJsLWMgaXMgcHJlc3NlZCBpZiAxOTIuMTY4LjAuMSBkb2VzIG5vdCBoYXZlIGFuCi0gICAgICBORlMgc2VydmVyIHJ1bm5pbmcuCi0KLSAgICAgIFRoaXMgaXNzdWUgaXMgcmVzb2x2ZWQgYnkgcmVpbml0aWFsaXp0aW5nIHRoZSBORlMgdGltZW91dCB2YWx1ZSBpbnNpZGUKLSAgICAgIE5mc1RpbWVvdXQoKSB3aGVuIGEgdGltZW91dCBvY2N1cnMuCi0KLSAgICAtIE1ha2UgdGhlICduZnMnIGNvbW1hbmQgcHJpbnQgdGhlICdUJyBjaGFyYWN0ZXIgd2hlbiBhIHRpbWVvdXQgb2NjdXJzLgotICAgICAgUHJldmlvdXNseSB0aGVyZSB3YXMgbm8gaW5kaWNhdGlvbiB0aGF0IHRpbWVvdXRzIHdlcmUgb2NjdXJpbmcuCi0KLSAgICAtIE1pbWljIHRoZSAndGZ0cGJvb3QnIGNvbW1hbmQgYW5kIHdoZW4gYSBkb3dubG9hZCBmYWlscyBwcmludCAiUmV0cnkKLSAgICAgIGNvdW50IGV4Y2VlZGVkOyBzdGFydGluZyBhZ2FpbiIsIGFuZCByZXN0YXJ0IHRoZSBkb3dubG9hZCB0YWtpbmcgdGhlCi0gICAgICAnbmV0cmV0cnknIGVudmlyb25tZW50IHZhcmlhYmxlIGludG8gYWNjb3VudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEV2YW4gU2FtYW5hcyA8ZXNhbWFuYXNAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotICAgIFRlc3RlZCBvbiBUUU04eHhMLgotCi0gICAgVGVzdGVkIGJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi0gICAgVGVzdGVkIG9uIE1QQzg1MjdEUy4KLQotICAgIFRlc3RlZCBieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDIyNGM5MGQxMDYwYmYxYTgzY2JmMzNjYTUxZDA2MGI5ZDE5ZTAyOTQKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVdlZCBOb3YgMTggMTk6MDg6NTkgMjAwOSAtMDYwMAotCi0gICAgYm9vdG06IEZpeCBoZWxwIG1lc3NhZ2UncyBzdWItY29tbWFuZCBvcmRlcmluZwotCi0gICAgVGhlIGhlbHAgbWVzc2FnZSBmb3IgdGhlICdib290bScgY29tbWFuZCBsaXN0ZWQgdGhlICdjbWRsaW5lJyBhbmQgJ2JkdCcKLSAgICBzdWItY29tbWFuZHMgaW4gdGhlIHdyb25nIG9yZGVyIHdoaWNoIHJlc3VsdGVkIGluIHRoZSBlcnJvciBiZWxvdyB3aGVuCi0gICAgZm9sbG93aW5nIHRoZSAnaGVscCcgY29tbWFuZCdzIGluc3RydWN0aW9uczoKLQotICAgICAgIlRyeWluZyB0byBleGVjdXRlIGEgY29tbWFuZCBvdXQgb2Ygb3JkZXIiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgYTkzYzkyY2RkYWVkZDVmMDcyMGUwZGExNWM2NjY0ZjdhNjg4YjU4MgotQXV0aG9yOiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+Ci1EYXRlOglUdWUgTm92IDE3IDA3OjMwOjIzIDIwMDkgLTA1MDAKLQotICAgIGhlbHA6IENvcnJlY3Qgc3ludGF4IG9mIG5hbmRlY2MgaGVscCBvdXRwdXQuCi0KLSAgICAibmFuZGVjYyIgaGVscCBvdXRwdXQgc2hvdWxkIG5vdCByZXByb2R1Y2UgdGhlIGNvbW1hbmQgbmFtZSwgbm9yIGhhdmUKLSAgICBhIHRyYWlsaW5nIG5ld2xpbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+Ci0KLWNvbW1pdCBjMmZmZjMzMWEzMmNlY2E4MzdkNzZlYjc4MjdkNjM0MGRhMjcwZDUyCi1BdXRob3I6IE1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Ci1EYXRlOglXZWQgTm92IDExIDEwOjAzOjAzIDIwMDkgKzAyMDAKLQotICAgIHNtYzkxMXg6IHVwZGF0ZSBTTUM5MTFYIHJlbGF0ZWQgY29uZmlndXJhdGlvbiBkZXNjcmlwdGlvbgotCi0gICAgU2luY2UgY29tbWl0IDczNmZlYWQ4ZmRiZjhhODQwNzA0OGJlYmMzNzNjZDU1MWQwMWVjOTggIkNvbnZlcnQgU01DOTExWAotICAgIEV0aGVybmV0IGRyaXZlciB0byBDT05GSUdfTkVUX01VTFRJIEFQSSIgU01DOTExWCBjb25maWdyYXRpb24gb3B0aW9ucwotICAgIGFyZSBjYWxsZWQgQ09ORklHX1NNQzkxMVggcmF0aGVyIHRoYW4gQ09ORklHX0RSSVZFUl9TTUM5MTFYLiBVcGRhdGUKLSAgICBSRUFETUUgdG8gcmVmbGVjdCB0aGF0IGNoYW5nZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Ci0KLWNvbW1pdCA0NWI2YjY1YzZiZjA2YTU4OWVmMzEyMzE5MmFmOTRiMDM4MWRiMjdiCi1BdXRob3I6IE1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Ci1EYXRlOglXZWQgTm92IDExIDEwOjAzOjA5IDIwMDkgKzAyMDAKLQotICAgIHNtYzkxMXg6IGZpeCB0eXBvIGluIHNtYzkxMXhfaGFuZGxlX21hY19hZGRyZXNzIG5hbWUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Ci0KLWNvbW1pdCBmNjRlZjliYjk5NTY4N2UyNGUwYjYxYjUyMzE2ZjRlYWE5N2MzYmJjCi1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTm92IDE5IDAyOjQ3OjI4IDIwMDkgLTA2MDAKLQotICAgIGZpeCBuZnMgc3ltbGluayBuYW1lIGNvcnJ1cHRpb24KLQotICAgIEFuIG9mZiBieSBvbmUgZXJyb3IgbWF5IGNhdXNlIG5mcyByZWFkbGluayBsb29rdXAgZmFpbCBpZgotICAgIG5mc19wYXRoX2J1ZmYgaGFzIG5vbi16ZXJvIGRhdGEgZnJvbSBhIHByZXZpb3VzIHVzZS4KLQotICAgIExvYWRpbmc6ICoqKiBFUlJPUjogRmlsZSBsb29rdXAgZmFpbAotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU4ZmFjMjVlODM0MjZmZGY0NjFjNjZhYThhMjUzMGVjMjhlYzUzNmUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBEZWMgNyAyMTowNjo0MCAyMDA5ICswMTAwCi0KLSAgICBhdDkxc2FtOTI2MWVrLmM6IGZpeCBtaW5vciBjb2Rpbmcgc3R5bGUgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNDcxMzAxMGFkZjViZWRhODc0MTBkNjM3ZWJmYzU4ZGIwZGI5YTlkYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIERlYyA2IDAxOjIxOjI4IDIwMDkgKzAxMDAKLQotICAgIHRyYWI6IGZpeCB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZGlzYWJsZV92ZmQnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYTlmOTlhYjQ0YjQ3M2ZiMzk0MTY5YmEzNjVmOGI0MzgwZjk4MTU4NAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIERlYyA2IDAwOjUzOjE4IDIwMDkgKzAxMDAKLQotICAgIHpsaWIuYzogYXZvaWQgYnVpbGQgY29uZmxpY3RzIGZvciBjcmFkbGUgYm9hcmQKLQotICAgIENvbW1pdCBkY2UzZDc5NzEwIHVwZGF0ZWQgdGhlIHpsaWIgY29kZSB0byB2MC45NTsgdGhpcyBjYXVzZWQKLSAgICBjb25mbGljdHMgd2hlbiBidWlsZGluZyBmb3IgdGhlICJjcmFkbGUiIGJvYXJkLCBiZWNhdXNlIHRoZSAocHJldHR5Ci0gICAgZ2VuZXJpYykgcHJlcHJvY2Vzc29yIHZhcmlhYmxlICJPRkYiIHdhcyB1c2VkIGluIG11bHRpcGxlIGZpbGVzLgotICAgIE1ha2Ugc3VyZSB0byBhdm9pZCBmdXJ0aGVyIGNvbmZsaWN0cyBieSAjdW5kZWYnaW5nIGl0IGluIHpsaWIuYwotICAgIGJlZm9yZSByZWRlZmluaW5nIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBjYzogR2l1c2VwcGUgQ29uZG9yZWxsaSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+Ci0gICAgY2M6IEFuZ2VsbyBDYXN0ZWxsbyA8YW5nZWxvLmNhc3RlbGxvQHN0LmNvbT4KLSAgICBjYzogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KLQotY29tbWl0IDhjYmY0ZTRmMTcxMjFkNzMyZTc4NzY0ZjBiYTMxN2M5YTE4MzhlYTYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBEZWMgNiAwMDoyNjoxOSAyMDA5ICswMTAwCi0KLSAgICBGaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcgb2YgImFwb2xsb24iIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGY2OGFiNDNkZTY3ZjU5OTI1NTQyZWZiNmJjZWMzMGY0YTg0ZmU2OTUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIERlYyA0IDA1OjM1OjE1IDIwMDkgLTA1MDAKLQotICAgIGx6bWE6IGlnbm9yZSB1bnNldCBmaWxlc2l6ZXMKLQotICAgIFRoZSBMaW51eCBrZXJuZWwgYnVpbGQgc3lzdGVtIGNoYW5nZWQgaG93IGl0IGNvbXByZXNzZXMgdGhpbmdzIHdpdGggTFpNQQotICAgIHN1Y2ggdGhhdCB0aGUgaGVhZGVyIG5vIGxvbmdlciBjb250YWlucyB0aGUgZmlsZXNpemUgKGl0IGlzIGluc3RlYWQgc2V0IHRvCi0gICAgYWxsIEYncykuICBTbyBpZiB3ZSBnZXQgYSBMWk1BIGltYWdlIHRoYXQgaGFzIC0xIGZvciB0aGUgNjRiaXQgZmllbGQsCi0gICAgbGV0J3MganVzdCBhc3N1bWUgdGhhdCB0aGUgZGVjb21wcmVzc2VkIHNpemUgaXMgdW5rbm93biBhbmQgY29udGludWUgb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjY2NmYzJhYjc3ODc3ZGJkZDJhYmUyNmIyOGQ0YzFmNDY3ZmViMGMwCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJVHVlIERlYyAxIDE3OjE2OjE5IDIwMDkgKzAxMDAKLQotICAgIFJFQURNRTogUmVhcnJhbmdlIHBhcmFncmFwaHMgdG8gcmVnYWluIGxpbmVhciBhcnJhbmdlbWVudC4KLQotICAgIFR3byBsYXRlciBhZGRpdGlvbnMgdG8gdGhlIENvbmZpZ3VyYXRpb24gT3B0aW9uIHNlY3Rpb24gdW5mb3J0dW5hdGVseQotICAgIHNwbGl0IHRoZSBkZXNjcmlwdGlvbiBvZiBTaG93IGJvb3QgcHJvZ3Jlc3MgYW5kIHRoZSBsaXN0IG9mIGl0cyBjYWxsIG91dHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGNkNTE0YWViOTk2ZTJmN2FlZmJlMWY3ODQ4MTk2NWQ5ZDA3NGFlZDQKLUF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci1EYXRlOglUaHUgTm92IDE5IDEzOjIyOjQ0IDIwMDkgKzAxMDAKLQotICAgIHpsaWI6IE9wdGltaXplIGRlY29tcHJlc3Npb24KLQotICAgIFRoaXMgcGF0Y2ggb3B0aW1pemVzIHRoZSBkaXJlY3QgY29weSBwcm9jZWR1cmUuCi0gICAgVXNlcyBnZXRfdW5hbGlnbmVkKCkgYnV0IG9ubHkgaW4gb25lIHBsYWNlLgotICAgIFRoZSBjb3B5IGxvb3AganVzdCBhYm92ZSB0aGlzIG9uZSBjYW4gYWxzbyB1c2UgdGhpcwotICAgIG9wdGltaXphdGlvbiwgYnV0IEkgaGF2bid0IGRvbmUgc28gYXMgSSBoYXZlIG5vdCB0ZXN0ZWQgaWYgaXQKLSAgICBpcyBhIHdpbiB0aGVyZSB0b28uCi0gICAgT24gbXkgTVBDODMyMSB0aGlzIGlzIGFib3V0IDE3JSBmYXN0ZXIgb24gbXkgSkZGUzIgcm9vdCBGUwotICAgIHRoYW4gdGhlIG9yaWdpbmFsLiBObyBzcGVlZCB0ZXN0IGhhcyBiZWVuIHBlcmZvcm1lZCBpbiB1LWJvb3QuCi0KLSAgICBTaXplIGluY3JlYXNlIG9uIHBwYzogNDg0IGJ5dGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLSAgICBBY2tlZC1ieTogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KLQotY29tbWl0IDIwZGRlNDhiY2FkZDg1NmM4NmE5MWQ1NDYzODMxYTEwYmU0NmRiODMKLUF1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KLURhdGU6CVRodSBOb3YgMTkgMTE6Mzc6NTEgMjAwOSArMDEwMAotCi0gICAgYWRkIGx6b3AgZGVjb21wcmVzc2lvbiBzdXBwb3J0Ci0KLSAgICBBZGQgbHpvcCBkZWNvbXByZXNzaW9uIHN1cHBvcnQgdG8gdGhlIGV4aXN0aW5nIGx6byBiaXRzdHJlYW0gaGFuZGxpbmcKLSAgICAodGhpbmsgZ3ppcCB2ZXJzdXMgemxpYiksIGFuZCBzdXBwb3J0IGl0IGZvciB1SW1hZ2UgZGVjb21wcmVzc2lvbiBpZgotICAgIENPTkZJR19MWk8gaXMgZW5hYmxlZC4KLQotICAgIEx6b3AgZG9lc24ndCBjb21wcmVzcyBhcyBnb29kIGFzIGd6aXAgKH4xMCUgd29yc2UpLCBidXQgZGVjb21wcmVzc2lvbgotICAgIGlzIHZlcnkgZmFzdCAofjAuN3MgZmFzdGVyIGhlcmUgb24gYSBzbG93IHBwYykuIFRoZSBsem9wIGRlY29tcHJlc3Npb24KLSAgICBjb2RlIGlzIGJhc2VkIG9uIEFsYmluIFRvbm5lcnJlJ3MgcmVjZW50IEFSTSBMaW51eCBsem8gc3VwcG9ydCBwYXRjaC4KLQotICAgIENjOiBhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgotCi1jb21taXQgYzgxMjk2YzE2ZmQ5ZDEyNDIyYzk5NjhjYzBmMWQ5YmY0NDBhN2Q4OAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIE5vdiAyNCAxNjo0MjoxMCAyMDA5IC0wNjAwCi0KLSAgICB0b29scy9ta2ltYWdlOiBQcmludCBGSVQgaW1hZ2UgY29udGVudHMgYWZ0ZXIgY3JlYXRpb24KLQotICAgIFByZXZpb3VzbHksIHRoZXJlIHdhcyBubyBpbmRpY2F0aW9uIHRvIHRoZSB1c2VyIHRoYXQgYSBGSVQgaW1hZ2Ugd2FzCi0gICAgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgYWZ0ZXIgZXhlY3V0aW5nIG1raW1hZ2UuICBGb3IgZXhhbXBsZToKLQotICAgICAgJCBta2ltYWdlIC1mIHVJbWFnZS5pdHMgdUltYWdlLml0YgotICAgICAgRFRDOiBkdHMtPmR0YiAgb24gZmlsZSAidUltYWdlLml0cyIKLQotICAgIEFkZGluZyBzb21lIGFkZGl0aW9uYWwgb3V0cHV0IGFmdGVyIGNyZWF0aW5nIGEgRklUIGltYWdlIGxldHMgdGhlIHVzZXIKLSAgICBrbm93IGV4YWN0bHkgd2hhdCBpcyBjb250YWluZWQgaW4gdGhlaXIgaW1hZ2UsIGVnOgotCi0gICAgICAkIG1raW1hZ2UgLWYgdUltYWdlLml0cyB1SW1hZ2UuaXRiCi0gICAgICBEVEM6IGR0cy0+ZHRiICBvbiBmaWxlICJ1SW1hZ2UuaXRzIgotICAgICAgRklUIGRlc2NyaXB0aW9uOiBMaW51eCBrZXJuZWwgMi42LjMyLXJjNy0wMDIwMS1nNzU1MGQ2Zi1kaXJ0eQotICAgICAgQ3JlYXRlZDoJICAgICAgIFR1ZSBOb3YgMjQgMTU6NDM6MDEgMjAwOQotICAgICAgIEltYWdlIDAgKGtlcm5lbEAxKQotCURlc2NyaXB0aW9uOiAgTGludXggS2VybmVsIDIuNi4zMi1yYzctMDAyMDEtZzc1NTBkNmYtZGlydHkKLQlUeXBlOgkgICAgICBLZXJuZWwgSW1hZ2UKLQlDb21wcmVzc2lvbjogIGd6aXAgY29tcHJlc3NlZAotCURhdGEgU2l6ZTogICAgMjcwNzMxMSBCeXRlcyA9IDI2NDMuODYga0IgPSAyLjU4IE1CCi0JQXJjaGl0ZWN0dXJlOiBQb3dlclBDCi0JT1M6CSAgICAgIExpbnV4Ci0JTG9hZCBBZGRyZXNzOiAweDAwMDAwMDAwCi0JRW50cnkgUG9pbnQ6ICAweDAwMDAwMDAwCi0JSGFzaCBhbGdvOiAgICBjcmMzMgotCUhhc2ggdmFsdWU6ICAgZWZlMDc5OGIKLQlIYXNoIGFsZ286ICAgIHNoYTEKLQlIYXNoIHZhbHVlOiAgIGVjYWZiYThjOTU2ODRmMmM4ZmVjNjdlMzNjNDFlYzg4ZGYxNTM0ZDcKLSAgICAgICBJbWFnZSAxIChmZHRAMSkKLQlEZXNjcmlwdGlvbjogIEZsYXR0ZW5lZCBEZXZpY2UgVHJlZSBibG9iCi0JVHlwZToJICAgICAgRmxhdCBEZXZpY2UgVHJlZQotCUNvbXByZXNzaW9uOiAgdW5jb21wcmVzc2VkCi0JRGF0YSBTaXplOiAgICAxMjI4OCBCeXRlcyA9IDEyLjAwIGtCID0gMC4wMSBNQgotCUFyY2hpdGVjdHVyZTogUG93ZXJQQwotCUhhc2ggYWxnbzogICAgY3JjMzIKLQlIYXNoIHZhbHVlOiAgIGE1Y2FiNjc2Ci0JSGFzaCBhbGdvOiAgICBzaGExCi0JSGFzaCB2YWx1ZTogICAxNjg3MjJiMTNlMzA1MjgzY2ZkNjYwM2RmZTgyNDhjYzMyOWFkZWE2Ci0gICAgICAgRGVmYXVsdCBDb25maWd1cmF0aW9uOiAnY29uZmlnQDEnCi0gICAgICAgQ29uZmlndXJhdGlvbiAwIChjb25maWdAMSkKLQlEZXNjcmlwdGlvbjogIERlZmF1bHQgTGludXgga2VybmVsCi0JS2VybmVsOiAgICAgICBrZXJuZWxAMQotCUZEVDoJICAgICAgZmR0QDEKLQotICAgIFRoaXMgYnJpbmdzIHRoZSBiZWhhdmlvciBvZiBjcmVhdGluZyBhIEZJVCBpbWFnZSBpbiBsaW5lIHdpdGggY3JlYXRpbmcgYQotICAgIHN0YW5kYXJkIHVJbWFnZSwgd2hpY2ggYWxzbyBwcmludHMgb3V0IHRoZSB1SW1hZ2UgY29udGVudHMgYWZ0ZXIKLSAgICBjcmVhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA4ZTFjODk2NjNjYzg3OTZiODU1ODg5MTAwNDZlMDNiMzg4YTc1OTdjCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgTm92IDI0IDE2OjQyOjA5IDIwMDkgLTA2MDAKLQotICAgIHRvb2xzL2ZpdF9pbWFnZS5jOiBSZW1vdmUgdW51c2VkIGZpdF9zZXRfaGVhZGVyKCkKLQotICAgIFRoZSBGSVQgZml0X3NldF9oZWFkZXIoKSBmdW5jdGlvbiB3YXMgY29waWVkIGZyb20gdGhlIHN0YW5kYXJkIHVJbWFnZSdzCi0gICAgaW1hZ2Vfc2V0X2hlYWRlcigpIGZ1bmN0aW9uIGR1cmluZyBta2ltYWdlIHJlb3JnYW5pemF0aW9uLglIb3dldmVyLCB0aGUKLSAgICBmaXRfc2V0X2hlYWRlcigpIGZ1bmN0aW9uIGlzIG5vdCB1c2VkIHNpbmNlIEZJVCBpbWFnZXMgdXNlIGEgc3RhbmRhcmQKLSAgICBkZXZpY2UgdHJlZSBibG9iIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAxYTk5ZGUyY2I0ZDA4ZWIzYmY5ZmIzZjYwYTlkNTMzMTUwZGU4YzBlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgTm92IDI0IDE2OjQyOjA4IDIwMDkgLTA2MDAKLQotICAgIHRvb2xzL21raW1hZ2U6IEFzc3VtZSBGRFQgaW1hZ2UgdHlwZSBmb3IgRklUIGltYWdlcwotCi0gICAgV2hlbiBidWlsZGluZyBhIEZsYXR0ZW5lZCBJbWFnZSBUcmVlIChGSVQpIHRoZSBpbWFnZSB0eXBlIG5lZWRzIHRvIGJlCi0gICAgImZsYXRfZHQiLglDb21taXQgODlhNGQ2YjEyZmQ2Mzk0ODk4YjhhNDU0Y2JhYmVhZjFjZDU5YmFlNSBpbnRyb2R1Y2VkIGEKLSAgICByZWdyZXNzaW9uIHdoaWNoIGNhdXNlZCB0aGUgdXNlciB0byBuZWVkIHRvIHNwZWNpZnkgdGhlICItVCBmbGF0X2R0IgotICAgIHBhcmFtZXRlciBvbiB0aGUgY29tbWFuZCBsaW5lIHdoZW4gYnVpbGRpbmcgYSBGSVQgaW1hZ2UuICBUaGUgIi1UCi0gICAgZmxhdF9kdCIgcGFyYW1ldGVyIHNob3VsZCBub3QgYmUgbmVlZGVkIGFuZCBpcyBhdCBvZGRzIHdpdGggdGhlIGN1cnJlbnQKLSAgICBGSVQgaW1hZ2UgZG9jdW1lbnRhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAzZWI5MGJhZDY1MWZhYjM5Y2ZmYmE3NTBlYzQ0MjFhOWMwMWQ2MGU3Ci1BdXRob3I6IEluZ28gdmFuIExpbCA8aW5ndWluQGdteC5kZT4KLURhdGU6CVR1ZSBOb3YgMjQgMTQ6MDk6MjEgMjAwOSArMDEwMAotCi0gICAgR2VuZXJpYyB1ZGVsYXkoKSB3aXRoIHdhdGNoZG9nIHN1cHBvcnQKLQotICAgIEFjY29yZGluZyB0byB0aGUgUFBDIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiB0aGUgdWRlbGF5KCkgZnVuY3Rpb24gaXMKLSAgICByZXNwb25zaWJsZSBmb3IgcmVzZXR0aW5nIHRoZSB3YXRjaGRvZyB0aW1lciBhcyBmcmVxdWVudGx5IGFzIG5lZWRlZC4KLSAgICBNb3N0IG90aGVyIGFyY2hpdGVjdHVyZXMgZG8gbm90IG1lZXQgdGhhdCByZXF1aXJlbWVudCwgc28gbG9uZy1ydW5uaW5nCi0gICAgb3BlcmF0aW9ucyBtaWdodCByZXN1bHQgaW4gYSB3YXRjaGRvZyByZXNldC4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGdlbmVyaWMgdWRlbGF5KCkgZnVuY3Rpb24gd2hpY2ggdGFrZXMgY2FyZSBvZgotICAgIHJlc2V0dGluZyB0aGUgd2F0Y2hkb2cgYmVmb3JlIGNhbGxpbmcgYW4gYXJjaGl0ZWN0dXJlLXNwZWNpZmljCi0gICAgX191ZGVsYXkoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEluZ28gdmFuIExpbCA8aW5ndWluQGdteC5kZT4KLQotY29tbWl0IDFjNDA5YmM3MTAxYTI0ZWNkNDdhMTNhNGU4NTE4NDVkNjZkYzIzY2UKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjQgMjA6MDQ6MjEgMjAwOSArMTEwMAotCi0gICAgaTM4NjogRmluYWwgUmVsb2NhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IGNhYmU1Nzk0ODAzZmJlMThiZWRhYzJkOWM3ZjI0MTdhMGZhOTVlYzEKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjQgMjA6MDQ6MjAgMjAwOSArMTEwMAotCi0gICAgaTM4NjogTW92ZSByZWZlcmVuY2VzIHRvIGxpbmsgc2NyaXB0IGV4cG9ydHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAwZmMxYjQ5ZWNiZDdlYzczNzFmOWVkZTA2MDBlNGZkMjhjZWM3ZjMzCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgTm92IDI0IDIwOjA0OjE5IDIwMDkgKzExMDAKLQotICAgIGkzODY6IFJlbW92ZSBpbmxpbmUgYXNtIHN5bWJvbHMgZnJvbSAuZHluc3ltCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgNTY0YTk5ODRiZGJmODZhMDJjZjRmMGQ4NDg5MzNhOWZmZjRhMWQxOAotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJVHVlIE5vdiAyNCAyMDowNDoxOCAyMDA5ICsxMTAwCi0KLSAgICBpMzg2OiBSZWFycmFuZ2UgSW50ZXJ1cHQgSGFuZGxpbmcKLQotICAgIEluIHByZXBlcmF0aW9uIGZvciBmdWxsIHJlbG9jYXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAyN2YxMzA3NWE2NTlkYTA0NjM3MmRmZTI0OWQ4MDhmMmY2ZGRiNDMyCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgTm92IDI0IDIwOjA0OjE3IDIwMDkgKzExMDAKLQotICAgIGkzODY6IEZpeCByYWNlIGNvbmRpdGlvbiB3aGVuIHVzaW5nIFNDNTIwIHRpbWVycwotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDE0MWE2MmNjMTJiZmJhYjQ5ZjBmNDRhMzk0NTE4YTM2MGRjZGRhZDgKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjQgMjA6MDQ6MTYgMjAwOSArMTEwMAotCi0gICAgaTM4NjogRml4IGdsb2JhbCBsYWJlbCBpbiBpbmxpbmUgYXNtIGNvbXBpbGUgZXJyb3IKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA0ZWU0ZTQxM2JhYThlOTUxZTNjNDJjMTdhODA4NTc4ODY3YTYzNTcyCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgTm92IDI0IDIwOjA0OjE1IDIwMDkgKzExMDAKLQotICAgIGkzODY6IFJlb3JkZXIgc291cmNlIG9iamVjdHMgaW4gbGliX2kzODYgTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhZWExNDQyMWM1MmYzMWUzOTgzN2FhMjg5MGUwN2U5YzcwZWU2MWZkCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgTm92IDI0IDIwOjA0OjE0IDIwMDkgKzExMDAKLQotICAgIGkzODY6IEZpeCBsaW5rIGNvbGxpc2lvbnMgcmVzdWx0aW5nIGZyb20gZ2NjNC40LjEgdXBncmFkZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IGI0ZmVlYjRlOGExZDkxMjRiYWUzOTk4NWE5N2I5OWQwOGUwNjE4NmQKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjQgMjA6MDQ6MTMgMjAwOSArMTEwMAotCi0gICAgaTM4NjogRml4IG1hbGxvYyBpbml0aWFsaXphdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IGM3NGJmY2UwZmIyMGVjNGQwMTgwOWZhMDU2NjI2Mzg5NDkyMzQ2N2IKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjQgMjA6MDQ6MTIgMjAwOSArMTEwMAotCi0gICAgaTM4NjogRml4IGRsbWFsbG9jIGNvbXBpbGUgd2FybmluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDI3MDczN2FjY2EyMWYzOTM5ZjgxNGRlNWRjZjM1MGExYzNkODBkODMKLUF1dGhvcjogTWljaGFlbCBCcmFuZHQgPE1pY2hhZWwuQnJhbmR0QGVtc3lzby5kZT4KLURhdGU6CVN1biBOb3YgMjIgMTQ6MTM6MjcgMjAwOSArMDEwMAotCi0gICAgRVhUMkZTOiBmaXggaW5vZGUgc2l6ZSBmb3IgZXh0MmZzIHJldiMwCi0KLSAgICBleHRmcy5jIGFzc3VtZXMgdGhhdCB0aGVyZSBpcyBhbHdheXMgYSB2YWxpZCBpbm9kZV9zaXplIGZpZWxkIGluIHRoZQotICAgIHN1cGVyYmxvY2suIEJ1dCB0aGlzIGlzIG5vdCB0cnVlIGZvciBleHQyZnMgcmV2IDAuIFN1Y2ggZXh0MmZzIGltYWdlcwotICAgIGFyZSBmb3IgaW5zdGFuY2UgZ2VuZXJhdGVkIGJ5IGdlbmV4dDJmcy4gU3ltcHRvbXMgb24gQVJNIG1hY2hpbmVzIGFyZQotICAgIG1lc3NhZ2VzIGxpa2U6ICJyYWlzZTogU2lnbmFsICMgOCBjYXVnaHQiOyBvbiBQb3dlclBDICJleHQybHMiIHdpbGwKLSAgICBwcmludCBub3RoaW5nLgotICAgIFRoaXMgZml4IGNoZWNrcyBmb3IgcmV2IDAgYW5kIHVzZXMgdGhlbiAxMjggYnl0ZXMgYXMgaW5vZGUgc2l6ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQnJhbmR0IDxNaWNoYWVsLkJyYW5kdEBlbXN5c28uZGU+Ci0gICAgVGVzdGVkIG9uOiBUUU01MjAwUwotICAgIFRlc3RlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYmNiMzI0ZDY4Zjc5NTVjMTEzNmRhZmM5NDRlYjU1ZGI4ZWJhYTYwMQotQXV0aG9yOiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+Ci1EYXRlOglUaHUgTm92IDE5IDExOjAwOjI4IDIwMDkgLTA1MDAKLQotICAgIFJlbW92ZSBzdXBlcmZsdW91cyBwcmVwcm9jZXNzb3IgdGVzdHMgZnJvbSBzb21lIGNtZF8qLmMgZmlsZXMuCi0KLSAgICBBIHNtYWxsIG51bWJlciBvZiBjb21tb24vY21kXyouYyBmaWxlcyBjb250YWluIHByZXByb2Nlc3NvciB0ZXN0cyB0aGF0Ci0gICAgYXJlIGFwcGFyZW50bHkgc3VwZXJmbHVvdXMgc2luY2UgdGhvc2Ugc2FtZSB0ZXN0cyBhcmUgdXNlZCBpbiB0aGUKLSAgICBNYWtlZmlsZSB0byBjb250cm9sIHRoZSBjb21waWxhdGlvbiBvZiB0aG9zZSBmaWxlcy4gIFRob3NlIHRlc3RzIGFyZQotICAgIGNsZWFybHkgcmVkdW5kYW50IGFzIGxvbmcgYXMgdGhleSBzdXJyb3VuZCB0aGUgZW50aXJldHkgb2YgdGhlIHNvdXJjZQotICAgIGluIHRob3NlIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFAuIEouIERheSA8cnBqZGF5QGNyYXNoY291cnNlLmNhPgotCi1jb21taXQgM2VlOGMxMjA3MWYwZTNiZGRhMjUxMjViNjNjOWQzZmQ1NGE3YzlkOAotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVRodSBOb3YgMTkgMTM6NDQ6MTYgMjAwOSArMDEwMAotCi0gICAgY3JjMzI6IEltcGwuIGxpbnV4IG9wdGltaXplZCBjcmMzMigpCi0KLSAgICBQb3J0ZWQgb3ZlciB0aGUgbW9yZSBlZmZpY2llbnQgbGludXggY3JjMzIoKSBmdW5jdGlvbi4KLSAgICBBIHF1aWNrIGNvbXBhcnNpb24gb24gcHBjOgotICAgIEFmdGVyIGNoYW5naW5nIHRoZSBvbGQgY3JjMzIgdG8gZG8gNCBieXRlcyBpbiB0aGUKLSAgICBpbm5lciBsb29wIHRvIGJlIGFibGUgdG8gY29tcGFyZSB3aXRoIG5ldyB2ZXJzaW9uIG9uZSBjYW4gbm90ZToKLSAgICAtIG9sZCBpbm5lciBsb29wIGhhcyA2MSBpbnNuLCBuZXcgaGFzIDE5IGluc24uCi0gICAgLSBuZXcgY3JjMzIgZG9lcyBvbmUgMzIgYml0IGxvYWQgb2YgZGF0YSB0byBjcmMgd2hpbGUKLSAgICAgIHRoZSBvbGQgZG9lcyBmb3VyIDggYml0cyBsb2Fkcy4KLSAgICAtIHNpemUgaXMgYml0IGJpZ2dlciBmb3IgdGhlIG5ldyBjcmMzMjoKLSAgICAgIDEzOTIob2xkKSAxNDE2KG5ldykgb2YgdGV4dC4gVGhlIGlzIGJlY2F1c2UgdGhlIG5ldyB2ZXJzaW9uCi0gICAgICBzaGFyZXMgY29kZSB3aXRoIGNyYzMyX25vX2NvbXAoKSBpbnN0ZWFkIG9mIGR1cGxpY2F0aW5nIGNvZGUuCi0gICAgLSBhYm91dCAzMyUgZmFzdGVyIG9uIHBwYzoKLSAgICAgIE5ldyA+IGNyYyAwIDB4ZmZmZmZmZiAtPiAzOSBzZWNzCi0gICAgICBPbGQgPiBjcmMgMCAweGZmZmZmZmYgLT4gNjAgc2VjcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci0KLWNvbW1pdCBhZDUzMjI2MTU2ZmE2NGI2ZDA0YzBkMWQ2ZTkxZTA5OTc5Y2JlYTE1Ci1BdXRob3I6IFJvYmVydCBQLiBKLiBEYXkgPHJwamRheUBjcmFzaGNvdXJzZS5jYT4KLURhdGU6CVR1ZSBOb3YgMTcgMDE6NTk6MjkgMjAwOSAtMDUwMAotCi0gICAgUkVBRE1FOiBVcGRhdGUgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMuCi0KLSAgICBCcmluZyB0aGUgZGlyZWN0b3J5IGxpc3RpbmcgbW9yZSBpbnRvIGxpbmUgd2l0aCBjdXJyZW50IGNvbnRlbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgUC4gSi4gRGF5IDxycGpkYXlAY3Jhc2hjb3Vyc2UuY2E+Ci0KLWNvbW1pdCBiZDM3ODRkZjk0YmZlY2E0M2ZiZjM0MDk0ZGY5Y2IxYmQzZWNjYTNiCi1BdXRob3I6IFByYXRhcCBDaGFuZHUgPHByYXRhcC5ycmtlQGdtYWlsLmNvbT4KLURhdGU6CVRodSBOb3YgMTIgMTk6Mjg6MjUgMjAwOSArMDUzMAotCi0gICAgUmVtb3ZlcyBkZWFkIGNvZGUgaW4gdGhlIGZpbGUgY29tbW9uL2NtZF9pMmMuYwotCi0gICAgVGhlcmUgaXMgc29tZSBkZWFkIGNvZGUgZW5jbG9zZWQgYnkgI2lmIDAgLi4uLiAjZW5kaWYgaW4gdGhlIGZpbGUKLSAgICBjb21tb24vY21kX2kyYy5jCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBkZWFkIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmF0YXAgQ2hhbmR1IDxwcmF0YXAucnJrZUBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2NGE0ODA2MDFhNTYxNGI0NDFkZTY5MmFlMTVhNjJjNTFlMGJiMzgxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBOb3YgMTEgMTc6NTE6NTYgMjAwOSAtMDUwMAotCi0gICAgc21jOTExMTFfZWVwcm9tOiBkcm9wIENPTkZJRyBzdHViIHByb3RlY3Rpb24KLQotICAgIFNpbmNlIHRoZSBNYWtlZmlsZSBub3cgY29udHJvbHMgdGhlIGNvbXBpbGF0aW9uIG9mIHRoaXMsIHRoZXJlIGlzIG5vIG5lZWQKLSAgICBmb3IgQ09ORklHIGNoZWNraW5nIG5vciB0aGUgc3R1YiBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGYzYTdiZGRjMDZjOTI3YzM2YTFhOTlhOTcxMzEyOTk0NzllZjIwN2EKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJV2VkIE5vdiAxMSAxOTo1Njo1OCAyMDA5ICswMTAwCi0KLSAgICBSVEM6IEZpeCByZXR1cm4gY29kZSBpbiBNQzEzNzgzIFJUQyBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBkNTJlM2UwMTc2YTc0YzMwNTQ5MjUxZTE2YzVjMDBhMzYzYzU0NGQyCi1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBOb3YgMTEgMTk6NTY6MzYgMjAwOSArMDEwMAotCi0gICAgY21kX2RhdGU6IEZpeCBzcGVsbGluZyBpbiBlcnJvciBtZXNzYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotCi1jb21taXQgYzI1MzEyMjM5NTc1M2FiYjllNTMxZDg5MDZjNTI2NWRjODgwM2ZiMQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJV2VkIE5vdiAxMSAxMDozNjoyOCAyMDA5IC0wNjAwCi0KLSAgICBNb3ZlIGRvX2lycWluZm8oKSB0byBjb21tb24vY21kX2lycS5jCi0KLSAgICBjbWRfaXJxLmMgaXMgYSBtdWNoIGJldHRlciBob21lIGFuZCBpdCBpcyBhbHJlYWR5IGNvbmRpdGlvbmFsbHkKLSAgICBjb21waWxlZCBiYXNlZCBvbiBDT05GSUdfQ01EX0lSUS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBhNWRkNGRjNjRmZTY4ZTU0OWM1ZmZjZjZhMDQ4MjgxYjViYTk0NzUyCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgTm92IDExIDEwOjM2OjE5IDIwMDkgLTA2MDAKLQotICAgIGNtZF9saWNlbnNlOiBSZW1vdmUgdW5uZWVkZWQgI2lmZGVmIENPTkZJR19DTURfTElDRU5TRQotCi0gICAgY21kX2xpY2Vuc2UgaXMgYWxyZWFkeSBjb25kaXRpb25hbGx5IGNvbXBpbGVkIGF0IHRoZSBNYWtlZmlsZS1sZXZlbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAwNjAxNTE0NmExNWFkYzc0NTU0NDBjNDkxZDU0M2Y2YTgwOTE1NTFkCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gTm92IDkgMTU6MTg6NTIgMjAwOSAtMDYwMAotCi0gICAgbTQxdDExOiBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDllZjc4NTExY2RhMzk5ODdlNWZjMTBmZWJmMzg2ZmQxOWY1OGVjZjcKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBOb3YgOSAxNToxNzo1MCAyMDA5IC0wNjAwCi0KLSAgICBjaXJjYnVmOiBNb3ZlIHRvIGxpYl9nZW5lcmljIGFuZCBjb25kaXRpb25hbGx5IGNvbXBpbGUKLQotICAgIGNpcmNidWYgY291bGQgYmUgdXNlZCBhcyBhIGdlbmVyaWMgbGlicmFyeSBhbmQgaXMgb25seSBjdXJyZW50bHkKLSAgICBuZWVkZWQgd2hlbiBDT05GSUdfVVNCX1RUWSBpcyBkZWZpbmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDYwNGY3Y2U1NWFkNzQ2OTRlZjg3NDNhZDJlOTk5MzNkYzAyNjVlNDYKLUF1dGhvcjogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgotRGF0ZToJTW9uIE5vdiA5IDIyOjQzOjAwIDIwMDkgKzA1MzAKLQotICAgIEZpeCBidWlsZCBmYWlsdXJlIGluIGV4YW1wbGVzL3N0YW5kYWxvbmUKLQotICAgIFNvbWUgdmVyc2lvbnMgb2YgJ21ha2UnIGRvIG5vdCBoYW5kbGUgdHJhaWxpbmcgd2hpdGUtc3BhY2VzCi0gICAgcHJvcGVybHkuIFRyYWlsaW5nIHNwYWNlcyBpbiBFTEYgY2F1c2VzIGEgJ2Zha2UnIHNvdXJjZSB0bwotICAgIGJlIGFkZGVkIHRvIHRoZSB2YXJpYWJsZSBDT0JKUzsgbGVhZGluZyB0byBidWlsZCBmYWlsdXJlCi0gICAgKGxpc3RlZCBiZWxvdykuIFRoZSBwcm9ibGVtIHdhcyBmb3VuZCB3aXRoIEdOVSBNYWtlIDMuODAuCi0KLSAgICBVc2luZyB0ZXh0LWZ1bmN0aW9uICdzdHJpcCcgYXMgYSB3b3JrYXJvdW5kIGZvciB0aGUgcHJvYmxlbS4KLQotICAgIG1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSBgL2hvbWUvc2FuamVldi91LWJvb3QvZXhhbXBsZXMvc3RhbmRhbG9uZScKLSAgICBhcm0tbm9uZS1saW51eC1nbnVlYWJpLWdjYyAtZyAgLU9zCSAtZm5vLWNvbW1vbiAtZmZpeGVkLXI4IC1tc29mdC1mbG9hdAotICAgIC1EX19LRVJORUxfXyAtRFRFWFRfQkFTRT0weDgwZTgwMDAwIC1JL2hvbWUvc2FuamVldi91LWJvb3QvaW5jbHVkZQotICAgIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL29wdC9jb2Rlc291cmNlcnkvMjAwOXExLQotICAgIDIwMy9iaW4vLi4vbGliL2djYy9hcm0tbm9uZS1saW51eC1nbnVlYWJpLzQuMy4zL2luY2x1ZGUgLXBpcGUgIC1EQ09ORklHXwotICAgIEFSTSAtRF9fQVJNX18gLW1hcm0gIC1tYWJpPWFhcGNzLWxpbnV4IC1tbm8tdGh1bWItaW50ZXJ3b3JrIC1tYXJjaD1hcm12NQotICAgIC1XYWxsIC1Xc3RyaWN0LXByb3RvdHlwZXMgLWZuby1zdGFjay1wcm90ZWN0b3IgLWcgIC1PcyAgIC1mbm8tY29tbW9uIC1mZgotICAgIGl4ZWQtcjggLW1zb2Z0LWZsb2F0ICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4ODBlODAwMDAgLUkvaG9tZS9zYW5qZQotICAgIGV2L3UtYm9vdC9pbmNsdWRlIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL29wdC9jbwotICAgIGRlc291cmNlcnkvMjAwOXExLTIwMy9iaW4vLi4vbGliL2djYy9hcm0tbm9uZS1saW51eC1nbnVlYWJpLzQuMy4zL2luY2x1ZAotICAgIGUgLXBpcGUgIC1EQ09ORklHX0FSTSAtRF9fQVJNX18gLW1hcm0gIC1tYWJpPWFhcGNzLWxpbnV4IC1tbm8tdGh1bWItaW50ZQotICAgIHJ3b3JrIC1tYXJjaD1hcm12NSAtSS4uIC1Cc3RhdGljIC1UIHUtYm9vdC5sZHMgIC1UdGV4dCAweDgwZTgwMDAwIC1vIC5jCi0gICAgYXJtLW5vbmUtbGludXgtZ251ZWFiaS1nY2M6IG5vIGlucHV0IGZpbGVzCi0gICAgbWFrZVsxXTogKioqIFsuY10gRXJyb3IgMQotICAgIG1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5IGAvaG9tZS9zYW5qZWV2L3UtYm9vdC9leGFtcGxlcy9zdGFuZGFsb25lJwotICAgIG1ha2U6ICoqKiBbZXhhbXBsZXMvc3RhbmRhbG9uZV0gRXJyb3IgMgotICAgIHByZW1pICMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLQotICAgIEZpeGVkIHR5cG8gKHMvRWxGL0VMRi8pLgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkOTg0ZmVkMDY4YjNiZWM4YTdlZGFmN2EzZGU3MTQ3OWFiZGUwODBhCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE5vdiA0IDE4OjQxOjQxIDIwMDkgLTA2MDAKLQotICAgIG1ha2VmaWxlczogZml4ZXMgZm9yIGJ1aWxkaW5nIGJ1aWxkIHRvb2xzCi0KLSAgICBDdXJyZW50bHksIHNvbWUgb2YgdGhlIHRvb2xzIGluc3RlYWQgc2V0IENDIHRvIGJlIEhPU1RDQyBpbiBvcmRlciB0byByZS11c2UKLSAgICBzb21lIHBhdHRlcm4gcnVsZXMgLS0gYnV0IHRoaXMgZmFpbHMgd2hlbiB0aGUgdXNlciBvdmVycmlkZXMgQ0Mgb24gdGhlIG1ha2UKLSAgICBjb21tYW5kIGxpbmUuICBBbHNvLCB0aGUgSE9TVENGTEFHUyBpbiB0b29scy9NYWtlZmlsZSBhcmUgY3VycmVudGx5IG5vdAotICAgIGJlaW5nIHVzZWQgYmVjYXVzZSBjb25maWcubWsgb3ZlcndyaXRlcyB0aGVtLgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN0YXRpYyBwYXR0ZXJuIHJ1bGVzIGZvciBmaWxlcyB0aGF0IGhhdmUgYmVlbiByZXF1ZXN0ZWQgdG8KLSAgICBiZSBidWlsdCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIgdXNpbmcgJChIT1NUU1JDUykgYW5kICQoSE9TVE9CSlMpLCBhbmQKLSAgICBjb252ZXJ0cyB0aGUgdG9vbHMgdG8gdXNlIHRoZW0uCi0KLSAgICBJdCByZXN0b3JlcyBlYXN5bG9nbyB0byB1c2luZyB0aGUgaG9zdCBjb21waWxlciwgd2hpY2ggd2FzIGJyb2tlbiBieSBjb21taXQKLSAgICAzOGQyOTljMmRiODFiZDg4OWM2MDFiNWRmYzEyYzRlODNlZjgzMzMzIChpZiB0aGlzIHdhcyBhbiBpbnRlbnRpb25hbCBjaGFuZ2UsCi0gICAgcGxlYXNlIGxldCBtZSBrbm93IC0tIGJ1dCBpdCBzZWVtcyB0byBiZSBhIGJ1aWxkIHRvb2wpLgotCi0gICAgSXQgcmVzdG9yZXMgLXBlZGFudGljIGFuZCB0aGUgc3BlY2lhbCBmbGFncyBmb3IgZGFyd2luIGFuZCBjeWd3aW4gdGhhdCB3ZXJlCi0gICAgcmVxdWVzdGVkIGluIHRvb2xzL21ha2VmaWxlIChidXQga2VlcHMgdGhlIGZsYWdzIGFkZGVkIGJ5IGNvbmZpZy5taykgLS0KLSAgICBob3BlZnVsbHkgc29tZW9uZSBjYW4gdGVzdCB0aGlzIG9uIHRob3NlIHBsYXRmb3Jtcy4gIEl0IG5vIGxvbmdlcgotICAgIGNvbmRpdGlvbmFsaXplcyAtcGVkYW50aWMgb24gbm90IGJlaW5nIGRhcndpbjsgaXQgd2Fzbid0IGNsZWFyIHRoYXQgdGhhdCB3YXMKLSAgICBpbnRlbnRpb25hbCwgYW5kIHVubGVzcyB0aGVyZSdzIGEgcmVhbCBwcm9ibGVtIGl0J3MganVzdCBpbnZpdGluZyBwZW9wbGUgdG8KLSAgICBjb250cmlidXRlIG5vbi1wZWRhbnRpYyBwYXRjaGVzIHRvIHRob3NlIGZpbGVzIChJJ20gbm90IGEgZmFuIG9mIC1wZWRhbnRpYwotICAgIHBlcnNvbmFsbHksIGJ1dCBpZiBpdCdzIG9uIGZvciBvbmUgcGxhdGZvcm0gaXQgc2hvdWxkIGJlIG9uIGZvciBhbGwpLgotCi0gICAgSE9TVF9MREZMQUdTIGlzIHJlbmFtZWQgSE9TVExERkxBR1MgZm9yIGNvbnNpc3RlbmN5IHdpdGggdGhlIHByZXZpb3VzCi0gICAgSE9TVF9DRkxBR1MgdG8gSE9TVENGTEFHUyByZW5hbWUuICBBIG5ldyBIT1NUQ0ZMQUdTX05PUEVEIGlzIG1hZGUgYXZhaWxhYmxlCi0gICAgZm9yIHRob3NlIGZpbGVzIHdoaWNoIGN1cnJlbnRseSBjYW5ub3QgYmUgYnVpbHQgd2l0aCAtcGVkYW50aWMsIGFuZCByZXBsYWNlcwotICAgIHRoZSBvbGQgRklUX0NGTEFHUy4KLQotICAgIGltbHMgbm93IHVzZXMgdGhlIGNyb3NzIGNvbXBpbGVyIHByb3Blcmx5LCByYXRoZXIgdGhhbiBieSB0cnlpbmcgdG8KLSAgICByZWNvbnN0cnVjdCBDQyB1c2luZyB0aGUgdHlwb2VkICQoQ1JPU1NfQ09NUElMRVIpLgotCi0gICAgZW52Y3JjLmMgaXMgbm93IGRlcGVuZGVuY3ktcHJvY2Vzc2VkIHVuY29uZGl0aW9uYWxseSAtLSBwcmV2aW91c2x5IGl0IHdvdWxkCi0gICAgYmUgYnVpbHQgd2l0aG91dCBiZWluZyBvbiAoSE9TVClTUkNTIGlmIENPTkZJR19FTlZfSVNfRU1CRURERUQgd2FzIG5vdAotICAgIHNlbGVjdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhZjg2MDk2MmI1NDRkZGYzMjNjNGZmNjg0NTRmMDBkMzFlNDRkZjBhCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgNCAxODozMDowOCAyMDA5IC0wNjAwCi0KLSAgICA4NXh4OiBSZW1vdmUgdW51c2VkIENPTkZJR19BU1NVTUVfQU1EX0ZMQVNIIGZyb20gY29uZmlnIGZpbGVzCi0KLSAgICBBIGJ1bmNoIG9mIHRoZSA4NXh4IGJvYXJkcyBoYXZlIHRoaXMgY3J1ZnQgaW4gdGhlbSAtIGl0J3Mgbm90IHVzZWQKLSAgICBhbnl3aGVyZS4gIERlbGV0ZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGJmNDRmM2YzMjdhY2RkYmEyMDJmZjY3ZjcwMTkyOTI2ZWE0N2RmZDEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIE5vdiA0IDE2OjM0OjQyIDIwMDkgLTA1MDAKLQotICAgIGV4cG9ydHM6IHJld3JpdGUganVtcCB0YWJsZSBpbml0Ci0KLSAgICBUaGUgY3VycmVudCBqdW1wIHRhYmxlIGluaXQgZmFpbHMgdG8gaW5pdGlhbGl6ZSBhIGJ1bmNoIG9mIGV4cG9ydGVkCi0gICAgc3ltYm9scyAoZm9yY2VlbnYvZG9fcmVzZXQvZXRjLi4uKS4gIFJhdGhlciB0aGFuIGZpeCBqdXN0IHRoZXNlIGZldwotICAgIG1pc3NpbmcgcGllY2VzLCByZXdyaXRlIHRoZSBjb2RlIHRvIHV0aWxpemUgdGhlIGV4aXN0aW5nIGxpc3Qgb2YKLSAgICBleHBvcnRlZCBzeW1ib2xzIC0tIF9leHBvcnRzLmguICBTaW5jZSBldmVyeSBleHBvcnRlZCBzeW1ib2wgaGFzIHRvCi0gICAgYmUgbGlzdGVkIGluIHRoaXMgaGVhZGVyLCBpdCBtYWtlcyBzZW5zZSB0byB1c2UgaXQgc28gdGhhdCB3ZSBvbmx5Ci0gICAgZXZlciBoYXZlIG9uZSBsaXN0IHRoYXQgbmVlZHMgdG8gYmUgdXBkYXRlZCBhbmQgdGhpbmdzIGNhbid0IGZhbGwKLSAgICBvdXQgb2Ygc3luYyBhZ2Fpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGRlZWMxZmJkNGY3MDRkZGVkMmU2NjhiYjllMzY4NjMxOTgxZWExMzkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBEZWMgMiAyMjoyNjozMCAyMDA5ICswMTAwCi0KLSAgICBNQUlOVEFJTkVSUzogdXBkYXRlIHJlc3BvbnNpYmxlIGZvciBNUEM4NXh4Lzg2eHgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgQ2M6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDcxNjM2ZmE3YzNkZTYzZGUyOWMwZjUxNGQ1YzcyNWVjY2IwMTE2NTcKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU3VuIE5vdiAyOSAxNzo1NjozNiAyMDA5IC0wNjAwCi0KLSAgICBBUk0gVXBkYXRlIG1hY2gtdHlwZXMKLQotICAgIEZldGNoZWQgZnJvbSBodHRwOi8vd3d3LmFybS5saW51eC5vcmcudWsvZGV2ZWxvcGVyL21hY2hpbmVzL2Rvd25sb2FkLnBocAotICAgIEFuZCBidWlsdCB3aXRoCi0KLSAgICByZXBvIGh0dHA6Ly9mdHAuYXJtLmxpbnV4Lm9yZy51ay9wdWIvbGludXgvYXJtL2tlcm5lbC9naXQtY3VyL2xpbnV4LTIuNi1hcm0KLSAgICBjb21taXQgM2ZjY2E5YWM2Y2JjZTM1YjNlODFlMjQ3ZDM3NTUzNDExN2Q1ZjRjZAotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgN2MxNTEyMWY0MDA3NzUxYWY4YzQ1Yzk3OGM0YWQ3ZDZjNWZmMTFmOQotQXV0aG9yOiBWYWliaGF2IEhpcmVtYXRoIDxodmFpYmhhdkB0aS5jb20+Ci1EYXRlOglNb24gTm92IDIzIDE2OjM2OjA1IDIwMDkgKzA1MzAKLQotICAgIG9tYXAzX21tYzogRW5jYXBzdWxhdGUgdHdsNDAzMCB1bmRlciBvcHRpb24gQ09ORklHX1RXTDQwMzBfUE9XRVIKLQotICAgIEZpeGVzIHRoZSBidWlsZC9jb21waWxhdGlvbiBlcnJvciBpZiB3ZSB0cnkgdG8gcmUtdXNlIHRoZSBvbWFwM19tbWMgY29kZQotICAgIHdpdGhvdXQgVFdMNDAzMF9QT1dFUi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhaWJoYXYgSGlyZW1hdGggPGh2YWliaGF2QHRpLmNvbT4KLQotY29tbWl0IDY0MDZkNmRhZWE1MWJiZWVkMjFmMzgyOWIzN2QzZjM5NWMxOThlNTQKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJU2F0IE5vdiAyMSAxMzoxMzo1OSAyMDA5IC0wNTAwCi0KLSAgICBUSSBEYVZpbmNpOiBBZGRpbmcgYSBSRUFETUUgZm9yIHRoZSBEYVZpbmNpIHNlcmllcyBvZiBTT0MncwotCi0gICAgQWRkaW5nIGFuIGluaXRpYWwgUkVBRE1FIGZvciB0aGUgRGFWaW5jaSBzZXJpZXMgb2YgU09DJ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDk5MGY1NjljNGZhNmI5ZTc2YjMxZDBhNTIyOTk4MWMwOTJiMDJkY2YKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qIGF0PgotRGF0ZToJU2F0IEp1biA2IDEwOjMwOjU4IDIwMDkgKzAwMDAKLQotICAgIGF2cjMyL2hzZHJhbWM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvaiA8YXQ+IGpjcm9zb2Z0LmNvbT4KLSAgICBDYzogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW4gPGF0PiBhdG1lbC5jb20+Ci0KLWNvbW1pdCAzZjEyZjUyMTdlOGJkZjhmNjg0MmJmMWI4YzVjNWI5ODQyNWFjM2RiCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVNhdCBOb3YgMjEgMTM6MjQ6MTcgMjAwOSAtMDUwMAotCi0gICAgTkFORDogQWRkIGNvbmZpZyBvcHRpb24gZm9yIGlteDI3bGl0ZQotCi0gICAgV2Ugd2lsbCBnZXQgY29tcGlsYXRpb24gd2FybmluZ3Mgd2l0aG91dAotICAgICJDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIiBiZWluZyBkZWZpbmVkCi0gICAgaW4gdGhlIGJvYXJkIGNvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDQzYTVmMGRmMmYyZTNhMmI1ZWFiMDVkNjc0MjUwMWM5OGQzYzBkMGMKLUF1dGhvcjogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0LmNodWFuZ0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgTm92IDExIDE3OjI3OjMwIDIwMDkgKzA4MDAKLQotICAgIGFybTogQTMyMDogQWRkIHN1cHBvcnQgZm9yIEZhcmFkYXkgQTMyMCBldmFsdWF0aW9uIGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgQTMyMCBldmFsdWF0aW9uIGJvYXJkIGZyb20gRmFyYWRheS4gVGhpcyBib2FyZAotICAgIHVzZXMgRkE1MjYgcHJvY2Vzc29yIGJ5IGRlZmF1bHQgYW5kIGhhcyA1MTJrQiBhbmQgMzJNQiBOT1IgZmxhc2gsIDY0TSBSQU0uCi0gICAgRkE1MjYgaXMgYW4gQVJNdjQgcHJvY2Vzc29yIGFuZCB1c2VzIHRoZSBBUk05MjBUIHNvdXJjZSBpbiB0aGlzIHBhdGNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0QGZhcmFkYXktdGVjaC5jb20+Ci0KLWNvbW1pdCAzOWJhNzc0ZjliMDJjNDRiOGZkNGRmNDRhZmFjOTMyODAwYzE4NjYyCi1BdXRob3I6IFBvLVl1IENodWFuZyA8cmF0YmVydC5jaHVhbmdAZ21haWwuY29tPgotRGF0ZToJV2VkIE5vdiAxMSAxNzoyNjowMCAyMDA5ICswODAwCi0KLSAgICBhcm06IEEzMjA6IGRyaXZlciBmb3IgRlRSVEMwMTAgcmVhbCB0aW1lIGNsb2NrCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYW4gRlRSVEMwMTAgZHJpdmVyIGZvciBGYXJhZGF5IEEzMjAgZXZhbHVhdGlvbiBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgotCi1jb21taXQgYzFlZTYzY2VlODljNTgyMmZiYmNjNjM1ODZjOGYyYTFhZGQ3MDYxNAotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglTYXQgTm92IDIxIDE4OjA4OjQ5IDIwMDkgLTA1MDAKLQotICAgIFRJIERhVmluY2kgRE02NDZ4OiBFbmFibGUgTkFORCBvbiBETTY0NjcgRVZNCi0KLSAgICBUaGlzIHBhdGNoIGVuYWJsZXMgTkFORCBvbiB0aGUgRE02NDY3IEVWTQotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgZDQxNGFhZTU1MmJjMjI5ZGFmY2FkOTIwMjhlZmZiNGE4MzA2YzdhNQotQXV0aG9yOiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgotRGF0ZToJTW9uIE5vdiA5IDA5OjI5OjM0IDIwMDkgLTA1MDAKLQotICAgIE9NQVAzOiBGaXggU0RSQyBpbml0Ci0KLSAgICBEZWZhdWx0cyBhcmUgZm9yIEluZmluZW9uIEREUiB0aW1pbmdzLgotICAgIFNpbmNlIG5vbmUgb2YgdGhlIHN1cHBvcnRlZCBib2FyZHMgY3VycmVudGx5IGRvCi0gICAgWElQIGJvb3QsIHRoZXNlIHNlZW0gdG8gYmUgZmF1bHR5LiBmaXggdGhlIHZhbHVlcwotICAgIGFzIHBlciB0aGUgY2FsY3VsYXRpb25zKEFDVElNQSxCKSwgY29uZgotICAgIHRoZSBzZHJjIHBvd2VyIHdpdGggcHdkbmVuIGFuZCB3YWtldXBwcm9jIGJpdHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci0KLWNvbW1pdCAzMDU2M2EwNGJmZjczZmQ0ZmJkODQwYjg0NmY0YjY0NTk3NTlhODM5Ci1BdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci1EYXRlOglTYXQgTm92IDcgMTA6NTE6MjQgMjAwOSAtMDUwMAotCi0gICAgT01BUDM6U0RSQzogaW50cm9kdWNlIEREUiB0eXBlcwotCi0gICAgTWljcm9uIEREUiB0aW1pbmdzIGJhc2VkIG9uOgotICAgIGh0dHA6Ly93d3cuc2Frb21hbi5uZXQvY2dpLWJpbi9naXR3ZWIuY2dpP3A9eC1sb2FkLW9tYXAzLmdpdDthPWJsb2I7Zj1pbmNsdWRlL2FzbS9hcmNoLW9tYXAzL21lbS5oO2g9ZTZmYmZlMzk0N2Y1ZDBkODVmZWE3NzZlMzA4MjFkNDAxNzMxNmQ4NjtoYj1IRUFECi0KLSAgICBJbnRyb2R1Y2UgTWljcm9uIEREUiB0aW1pbmdzIGFuZCBwcm92aWRlCi0gICAgQ09ORklHX09NQVAzX0lORklORU9OX0REUiBhbmQgQ09ORklHX09NQVAzX01JQ1JPTl9ERFIgY29uZmlnCi0gICAgb3B0aW9ucyB0byBhbGxvdyBmb3IgcGxhdGZvcm0gZmlsZXMgdG8gc2V0dXAgdGhlaXIgdGltaW5ncyBhcwotICAgIHBlciB0aGUgdHlwZSBvZiBERFIgc2VsZWN0ZWQKLQotICAgIFJlcG9ydGVkLWJ5OiBTdGV2ZSBTYWtvbWFuIGluIGh0dHA6Ly93d3cubmFiYmxlLmNvbS9mb3J1bS9QZXJtYWxpbmsuanRwP3Jvb3Q9MjU3Nzk1MTgmcG9zdD0yNTk1OTczNCZwYWdlPXkKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci0KLWNvbW1pdCAxNjlhNGM4MDRkYmFmMTFmYWNiMDQxYjEzMzNkMzk0YzZjZWI4ZDY4Ci1BdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci1EYXRlOglTYXQgTm92IDcgMTA6NDA6NDcgMjAwOSAtMDUwMAotCi0gICAgT01BUDM6U0RSQzogQ2xlYW51cCByZWZlcmVuY2VzIHRvIFNEUAotCi0gICAgUmVtb3ZlIFNEUCByZWZlcmVuY2VkIHVudXNlZCBkZWZpbmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgotCi1jb21taXQgMjgxOWUxMzY1YmUwYzgxYTAxNDFlZjVjNmE3OTk2YjQwODg4ZjZkOAotQXV0aG9yOiBTZWtoYXIgTm9yaSA8bnNla2hhckB0aS5jb20+Ci1EYXRlOglUaHUgTm92IDEyIDExOjA5OjI1IDIwMDkgLTA1MDAKLQotICAgIFRJIERBOHh4OiBJbnRlZ3JhdGUgREE4MzAgRVZNIHN1cHBvcnQgaW50byBVLUJvb3QKLQotICAgIEludGVncmF0ZSBEQTgzMCBFVk0gc3VwcG9ydCBpbnRvIFUtQm9vdC4KLQotICAgIFByb3ZpZGVzIGluaXRpYWwgc3VwcG9ydCBmb3IgVEkgT01BUC1MMTM3L0RBODMwIFNvQyBkZXZpY2VzIG9uIGEgU3BlY3RydW0KLSAgICBEaWdpdGFsIEVWTSBib2FyZC4gU2VlIGh0dHA6Ly93d3cuc3BlY3RydW1kaWdpdGFsLmNvbS8KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgVGhvbXBzb24gPG5pY2sudGhvbXBzb25AZ2VmYW51Yy5jb20+Ci0KLWNvbW1pdCBiZGM5YzZjN2Y3N2E5YTYzMzQ5ZWNiOWY1NGIyMGFkMzQwMzNhMmFlCi1BdXRob3I6IFNla2hhciBOb3JpIDxuc2VraGFyQHRpLmNvbT4KLURhdGU6CVRodSBOb3YgMTIgMTE6MDg6MzkgMjAwOSAtMDUwMAotCi0gICAgVEkgREE4eHg6IEFkZCBuZXcgZGlyZWN0b3J5IGZvciBkYTgzMGV2bSBib2FyZAotCi0gICAgQWRkIG5ldyBkaXJlY3RvcnkgZm9yIGRhODMwZXZtIGJvYXJkCi0KLSAgICBQcm92aWRlcyBpbml0aWFsIHN1cHBvcnQgZm9yIFRJIE9NQVAtTDEzNy9EQTgzMCBTb0MgZGV2aWNlcyBvbiBhIFNwZWN0cnVtCi0gICAgRGlnaXRhbCBFVk0gYm9hcmQuIFNlZSBodHRwOi8vd3d3LnNwZWN0cnVtZGlnaXRhbC5jb20vCi0KLSAgICBQcm92aWRlczoKLSAgICBJbml0aWFsIGJvb3QgYW5kIGNvbmZpZ3VyYXRpb24uCi0gICAgU3VwcG9ydCBmb3IgaTJjLgotICAgIFVBUlQgc3VwcG9ydCAoY29uc29sZSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotCi1jb21taXQgOTExNzJiYWY0NmE1NzgwNzIzM2ViN2JjZDcyNGI5ZjEwMTA5Y2ZlMAotQXV0aG9yOiBTZWtoYXIgTm9yaSA8bnNla2hhckB0aS5jb20+Ci1EYXRlOglUaHUgTm92IDEyIDExOjA3OjIyIDIwMDkgLTA1MDAKLQotICAgIFRJIERBOHh4OiBBZGQgREE4eHggY3B1IGZ1bmN0aW9ucwotCi0gICAgUHJvdmlkZXMgaW5pdGlhbCBzdXBwb3J0IGZvciBUSSBPTUFQLUwxeC9EQTh4eCBTb0MgZGV2aWNlcy4KLSAgICBTZWUgaHR0cDovL3d3dy50aS5jb20KLQotICAgIFByb3ZpZGVzOgotICAgIExvdyBsZXZlbCBpbml0aWFsaXNhdGlvbi4KLSAgICBTeXN0ZW0gY2xvY2sgQVBJLgotICAgIFRpbWVyIGNvbnRyb2wuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotCi1jb21taXQgYmJlZDA1NmU1NTBiMjY3MTJlZGMxNzM0MTFjOWQ3ZmY5Y2I3ZTBlNgotQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotRGF0ZToJVGh1IE5vdiAxMiAxMTowNjowOCAyMDA5IC0wNTAwCi0KLSAgICBBZGQgVEkgREE4eHggc3VwcG9ydDogREE4eHggaW5jbHVkZXMKLQotICAgIFByb3ZpZGVzIGluaXRpYWwgc3VwcG9ydCBmb3IgVEkgT01BUC1MMXgvREE4eHggU29DIGRldmljZXMuCi0gICAgU2VlIGh0dHA6Ly93d3cudGkuY29tCi0KLSAgICBUaGUgREE4eHggZGV2aWNlcyBhcmUgc2ltaWxhciB0byBEYVZpbmNpIGRldmljZXMgYnV0IGhhdmUgYSBkaWZmZXJpbmcKLSAgICBtZW1vcnkgbWFwIGFuZCB1cGRhdGVkIHBlcmlwaGVyYWwgdmVyc2lvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNla2hhciBOb3JpIDxuc2VraGFyQHRpLmNvbT4KLQotY29tbWl0IGNhODQ4MGQ0NDRiZGNjMTY3MGU0MmE2MTNjNWE1ZTRlODM2NmQyZDkKLUF1dGhvcjogTmljayBUaG9tcHNvbiA8bmljay50aG9tcHNvbkBnZWZhbnVjLmNvbT4KLURhdGU6CVRodSBOb3YgMTIgMTE6MDM6MjMgMjAwOSAtMDUwMAotCi0gICAgVEkgRGF2aW5jaTogYWRkIGEgcGluIG11bHRpcGxleGVyIGNvbmZpZ3VyYXRpb24gQVBJCi0KLSAgICBDcmVhdGVzIGEgbWV0aG9kIGFsbG93aW5nIHBpbiBzZXR0aW5ncyB0byBiZSBsb2dpY2FsbHkgZ3JvdXBlZCBpbnRvIGRhdGEKLSAgICBzdHJ1Y3R1cmUgYXJyYXlzIGFuZCBwcm92aWRlcyBhbiBBUEkgdG8gY29uZmlndXJlIHRoZSBwaW5tdXggc2V0dGluZ3MgdG8KLSAgICBlbmFibGUgdGhlIHJlbGV2YW50IHBpbiBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotCi1jb21taXQgOTg2OGEzNmRmYjhkZTRiYjk4YjQ4ZTRmNGViOTEyMzEyZDY3Mjc5ZQotQXV0aG9yOiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotRGF0ZToJVGh1IE5vdiAxMiAxMTowMjoxNyAyMDA5IC0wNTAwCi0KLSAgICBUSSBEYXZpbmNpIHRpbWVyLmM6IFJlbW92ZSB2b2xhdGlsZXMgYW5kIG1lbW9yeSBtYXBwZWQgc3RydWN0dXJlcwotCi0gICAgUmVtb3ZlIHZvbGF0aWxlcyBhbmQgbWVtb3J5IG1hcHBlZCBzdHJ1Y3R1cmUgYWNjZXNzZXMgYW5kIHJlcGxhY2Ugd2l0aAotICAgIHJlYWRsIGFuZCB3cml0ZWwgbWFjcm8gdXNhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFRob21wc29uIDxuaWNrLnRob21wc29uQGdlZmFudWMuY29tPgotCi1jb21taXQgYzkwYjMyNzM5YTUwY2E1MmQ5YjhkMjIwZWE2ODc1YWU5OTQ1NjZlYwotQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+Ci1EYXRlOglUaHUgTm92IDEyIDExOjQ2OjA3IDIwMDkgKzAyMDAKLQotICAgIE9NQVAzOiBwYW5kb3JhOiBmaXggYm9vdGluZyB3aXRob3V0IHNlcmlhbCBhdHRhY2hlZAotCi0gICAgV2hlbiB0aGUgYm9hcmQgaXMgYm9vdGVkIHdpdGhvdXQgc2VyaWFsIGNhYmxlIGF0dGFjaGVkICh3aGljaAotICAgIGlzIGhvdyBtb3N0IG9mIHRoZW0gd2lsbCBiZSB1c2VkKSBVQVJUIFJYIGlzIGxlZnQgZmxvYXRpbmcgYW5kCi0gICAgc29tZXRpbWVzIHBpY2tzIG5vaXNlLCB3aGljaCBpbnRlcnJ1cHRzIGNvdW50ZG93biBhbmQgZW50ZXJzCi0gICAgVS1Cb290IHByb21wdCBpbnN0ZWFkIG9mIGJvb3RpbmcgdGhlIGtlcm5lbC4KLQotICAgIEZpeCB0aGlzIGJ5IHNldHRpbmcgdXAgaW50ZXJuYWwgcHVsbHVwIG9uIFVBUlQgUlggcGluLiBUaGlzCi0gICAgZG9lcyBub3QgcHJldmVudCBzZXJpYWwgZnJvbSB3b3JraW5nIGFzIHRoZSBpbnRlcm5hbCBwdWxsdXAKLSAgICBpcyB3ZWFrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgotCi1jb21taXQgYWM2NzgwNGZiYjJkODJhMTkxNzAwNjZjMDJhZjcwNTNkNDc0Y2U4ZAotQXV0aG9yOiBrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrIDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgotRGF0ZToJVHVlIE5vdiAxNyAxODozMDozNCAyMDA5ICswOTAwCi0KLSAgICBBZGQgYSB1bmlmaWVkIHMzYzI0eDAgaGVhZGVyIGZpbGUKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIHVuaWZpZWQgczNjMjR4MCBjcHUgaGVhZGVyIGZpbGUgdGhhdCBzZWxlY3RzIHRoZSBoZWFkZXIKLSAgICBmaWxlIGZvciB0aGUgc3BlY2lmaWMgczNjMjR4MCBjcHUgZnJvbSB0aGUgU09DIGFuZCBDUFUgY29uZmlncyBkZWZpbmVkIGluCi0gICAgYm9hcmQgY29uZmlnIGZpbGUuIFRoaXMgcmVtb3ZlcyB0aGUgY3VycmVudCBjaGFpbiBvZiBzM2MyNC10eXBlICNpZmRlZidzCi0gICAgZnJvbSB0aGUgczNjMjR4MCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gTW9yZml0dCA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCBhNTlhMjNkNjhhZTRmNGExYzA3ZDEwNTUyMGM5M2U2ZTI4OWQxODZmCi1BdXRob3I6IFNldW5naHllb24gUmhlZSA8cmhlZTRqMUBnbWFpbC5jb20+Ci1EYXRlOglGcmkgTm92IDEzIDE2OjQ5OjQxIDIwMDkgKzA5MDAKLQotICAgIFMzQzY0MDAvU01ESzY0MDA6IGZpeCBzdGFja19zZXR1cCBpbiBzdGFydC5TCi0KLSAgICBGaXggc3RhY2tfc2V0dXAgdG8gcGxhY2UgdGhlIHN0YWNrIG9uIHRoZSBjb3JyZWN0IGFkZHJlc3MgaW4gRFJBTQotICAgIGFjY3JvZGluZyB0byBVLUJvb3Qgc3RhbmRhcmQgYW5kIHJlbW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBieQotICAgIENPTkZJR19NRU1PUllfVVBQRVJfQ09ERSBtYWNybyB0aGF0IGlzIG5vdCBuZWNlc3NyeS4gVGhpcyBtYWNybwotICAgIHdhcyBpbnRyb2R1Y2VkIGFuZCB1c2VkIG9ubHkgYnkgdGhpcyBib2FyZCBmb3Igc29tZSB1bmNsZWFyIHJlYXNvbi4KLQotICAgIFRoZSBkZWZpbml0aW9uIG9mIHRoaXMgbWFjcm8gaXMgYWxzbyByZW1vdmVkIGJlY2F1c2UgaXQncyBub3QKLSAgICByZWZlcmVuY2VkIGVsc2V3aGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNldW5naHllb24gUmhlZSA8c2V1bmdoeWVvbkBscG10ZWMuY29tPgotICAgIFRlc3RlZC1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgOTQwMDMyMjYwOTE0MDc2YjE1OTQ5MDYzMzRiMmUzZjdhZjZmYjdjZgotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglUdWUgTm92IDEwIDIwOjIzOjUwIDIwMDkgKzA5MDAKLQotICAgIHM1cGMxeHg6IHNlcmlhbDogZml4IHRoZSBlcnJvciBjaGVjayBsb2dpYwotCi0gICAgQmVjYXVzZSBvZiBGcmFtZSBlcnJvciwgUGFyaXR5IGVycm9yIGFuZCBPdmVycnVuIGVycm9yIGFyZSBvY2N1cmVkIG9ubHkgcmVjZWl2ZQotICAgIG9wZXJhdGlvbiwgbmVlZCB0byBtYXNraW5nIHdoZW4gZXJyb3IgY2hlY2tpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA5ZWJmZGMyMDIyNzViY2Q5ZWI0YWY1NmUzMmJmYjQyNTNmZjFiNzgxCi1BdXRob3I6IGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWsgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Ci1EYXRlOglXZWQgTm92IDQgMTc6NDk6MzEgMjAwOSArMDkwMAotCi0gICAgQ2xlYW4tdXAgb2YgczNjMjR4MCBoZWFkZXIgZmlsZXMKLQotICAgIENsZWFucyB1cCB0aGUgczNjMjR4MCBoZWFkZXIgZmlsZXM6Ci0KLSAgICBzNGMyNHgwLmg6IHJlbW92ZXMgdGhlIHVzZSBvZiAndm9sYXRpbGUnIGZyb20gdGhlIFMzQzI0WDBfUkVHOCwKLSAgICBTM0MyNFgwX1JFRzE2IGFuZCBTM0MyNFgwX1JFRzMyIHJlZ2lzdGVyIHR5cGVkZWYncy4gUmVnaXN0ZXJzIGFyZSBhbHdheXMKLSAgICBhY2Nlc3NlZCB1c2luZyB0aGUgSU8gYWNjZXNzb3IgZnVuY3Rpb25zIHdoaWNoIGNhc3QgdGhlIHJlZ2lzdGVyIGFkZHJlc3MKLSAgICBhcyAndm9sYXRpbGUnIGFueXdheSBzbyBpdCBpc24ndCByZXF1aXJlZCBoZXJlLgotCi0gICAgczNjMjQwMC5oIGFuZCBzM2MyNDEwLmg6IGluc2VydCBhIGJsYW5rIGxpbmUgYmV0d2VlbiB0aGUgc3RhdGljIGlubGluZQotICAgIGZ1bmN0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gTW9yZml0dCA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KLQotY29tbWl0IDQ3ZTgwMWJlYzM2MGU2OWU0YjA4N2ExNDFkMDE1YjMxOGUxYjAyMTIKLUF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotRGF0ZToJV2VkIE5vdiA0IDE2OjA3OjU5IDIwMDkgKzA5MDAKLQotICAgIHMzYzY0eHg6IG1vdmUgczNjNjR4eCBoZWFkZXIgZmlsZXMgdG8gYXNtLWFybS9hcmNoLXMzYzY0eHgKLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHMzYzY0eHggaGVhZGVyIGZpbGVzIGZyb20gaW5jbHVkZS8KLSAgICB0byBpbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2M2NHh4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA0OTJmYjFmZGJjZGQ1ZTIxYmUwYjY3NDJjMTVmNzZjNjQ4ZjA2NTNiCi1BdXRob3I6IGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWsgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Ci1EYXRlOglUdWUgTm92IDMgMTg6MDg6NDEgMjAwOSArMDkwMAotCi0gICAgTW92ZSBzM2MyNHgwIGhlYWRlciBmaWxlcyB0byBhc20tYXJtL2FyY2gtczNjMjR4MC8KLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHMzYzI0eDAgaGVhZGVyIGZpbGVzIGZyb20gaW5jbHVkZS8gdG8KLSAgICBpbmNsdWRlL2FzbS1hcm0vYXJjaC1zM2MyNHgwLy4KLQotICAgIGNoZWNrcGF0Y2gucGwgc2hvd2VkIDIgZXJyb3JzIGFuZCAzIHdhcm5pbmdzLiBUaGUgMiBlcnJvcnMgd2VyZSBib3RoIGR1ZQotICAgIHRvIGEgbm9uLVVURjggY2hhcmFjdGVyIGluIERhdmlkIE0/bGxlcidzIG5hbWU6Ci0KLSAgICBFUlJPUjogSW52YWxpZCBVVEYtOCwgcGF0Y2ggYW5kIGNvbW1pdCBtZXNzYWdlIHNob3VsZCBiZSBlbmNvZGVkIGluIFVURi04Ci0gICAgIzQ4OTogRklMRTogaW5jbHVkZS9hc20tYXJtL2FyY2gtczNjMjR4MC9zM2MyNDEwLmg6MzoKLSAgICArICogRGF2aWQgTT9sbGVyIEVMU09GVCBBRyBTd2l0emVybGFuZC4gZC5tdWVsbGVyQGVsc29mdC5jaAotCi0gICAgQXMgRGF2aWQncyBuYW1lIGNvcnJlY3RseSBjb250YWlucyBhIG5vbi1VVEY4IGNoYXJhY3RlciBJIGhhdmVuJ3QgZml4ZWQKLSAgICB0aGVzZSBlcnJvcnMuCi0KLSAgICBUaGUgMyB3YXJuaW5ncyB3ZXJlIGFsbCBiZWNhdXNlIG9mIHRoZSB1c2Ugb2YgJ3ZvbGF0aWxlJyBpbiBzM2MyNHgwLmg6Ci0KLSAgICBXQVJOSU5HOiBVc2Ugb2Ygdm9sYXRpbGUgaXMgdXN1YWxseSB3cm9uZzogc2VlIERvY3VtZW50YXRpb24vdm9sYXRpbGUtY29uc2lkZXJlZC1oYXJtZnVsLnR4dAotICAgICM2NzM6IEZJTEU6IGluY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0eDAvczNjMjR4MC5oOjM1OgotICAgICt0eXBlZGVmIHZvbGF0aWxlIHU4CVMzQzI0WDBfUkVHODsKLSAgICArdHlwZWRlZiB2b2xhdGlsZSB1MTYJUzNDMjRYMF9SRUcxNjsKLSAgICArdHlwZWRlZiB2b2xhdGlsZSB1MzIJUzNDMjRYMF9SRUczMjsKLQotICAgIEknbGwgZml4IHRoZXNlIGVycm9ycyBpbiBhbm90aGVyIHBhdGNoLgotCi0gICAgVGVzdGVkIGJ5IHJ1bm5pbmcgTUFLRUFMTCBmb3IgQVJNOCB0YXJnZXRzIGFuZCBlbnN1cmluZyB0aGVyZSB3ZXJlIG5vIG5ldwotICAgIGVycm9ycyBvciB3YXJuaW5ncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIE1vcmZpdHQgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgMmQyNTFjY2FhOTA5OTcwMTJlMGIxZjEzYmY3OTFkZjJiZjAzYTE0NAotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTdW4gTm92IDE1IDEwOjU4OjA2IDIwMDkgLTA2MDAKLQotICAgIEFSTSBVcGRhdGUgbWFjaC10eXBlcwotCi0gICAgRmV0Y2hlZCBmcm9tIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvbWFjaGluZXMvZG93bmxvYWQucGhwCi0gICAgQW5kIGJ1aWx0IHdpdGgKLQotICAgIHJlcG8gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQotICAgIGNvbW1pdCAxNTYxNzFjNzFhMGRjNGJjZTEyYjQ0MDhiYjE1OTFmOGZlMzJkYzFhCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBjODhlZDRjYjJlZWQyOWE2OTBhYzY2ODllZDFkYzJmNWU5NTQ3ZDE1Ci1BdXRob3I6IE1hcmsgQXNzZWxzdGluZSA8W21hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tXT4KLURhdGU6CVR1ZSBPY3QgMjcgMTk6NDA6NDAgMjAwOSArMDUzMAotCi0gICAgc2hlZXZhcGx1ZzogY29ycmVjdCBTRFJBTSBhZGRyZXNzIGNvbnRyb2wgcmVnaXN0ZXIKLQotICAgIHZhbHVlCi0KLSAgICBUaGUgU2hlZXZhUGx1ZyBEZXZLaXQgaXMgc2hpcHBlZCB3aXRoIDR4OCBieSAxR2IgRERSIGRldmljZXMgaW4KLSAgICB0d28gYmFua3MgZm9yIGEgdG90YWwgb2YgNTEyTUIgb2YgUkFNLiBCYXNlZCBvbiB0aGlzIGNvbmZpZ3VyYXRpb24KLSAgICB0aGUgZXhpc3RpbmcgdmFsdWVzIGZvciBTRFJBTSBhZGRyZXNzIGNvbnRyb2wgcmVnaXN0ZXIgYXJlIGluY29ycmVjdAotICAgIGFuZCByZXN1bHQgaW4gcmFuZG9tIGtlcm5lbCBvb3BzIGFzIG1lbW9yeSBpcyBpbmNvcnJlY3RseSBhY2Nlc3NlZAotICAgICh3aGlsZSBmb3IgZXhhbXBsZSBleHRyYWN0aW5nIGEgbGFyZ2UgdGFyYmFsbCBzdWNoIGFzIGEgcm9vdGZzKS4KLSAgICBCYXNlZCBvbiB0aGUgaGFyZHdhcmUgY29uZmlndXJhdGlvbiBhbG9uZyB3aXRoIHRoZSBzdXBwb3J0aW5nCi0gICAgZG9jdW1lbnRhdGlvbiBmcm9tIE1hcnZlbGwgdGhlc2UgYXJlIHRoZSBjb3JyZWN0IHZhbHVlcywgYXMKLSAgICB3ZWxsIHRoaXMgY2hhbmdlIG1pbWljcyB2YWx1ZXMgcHJldmlvdXNseSB1c2VkIGluIE1hcnZlbGwncyBvd24KLSAgICB1LWJvb3QgZ2l0IHRyZWUgZm9yIHRoZSBTaGVldmFQbHVnLgotCi0gICAgT3RoZXIgdmFyaWFudHMgb2YgdGhlIGhhcmR3YXJlIHN1Y2ggYXMgdGhlIFBvZ29QbHVnIGFuZCBUb25pZG9QbHVnCi0gICAgbWF5IGhhdmUgZGlmZmVyZW50IG1lbW9yeSBjb25maWd1cmF0aW9ucyBidXQgdG8gcHJvcGVybHkgc3VwcG9ydAotICAgIHRob3NlIGFkZGl0aW9uYWwgYm9hcmQgZGlyZWN0b3JpZXMgc2hvdWxkIGJlIG1haW50YWluZWQgb3IgYSBiZXR0ZXIKLSAgICBzeXN0ZW0gdG8gc3VwcG9ydCBvdGhlciBrd2IqLmNmZyBpcyBuZWVkZWQuCi0KLSAgICBUZXN0ZWQgb24gU2hlZXZhUGx1ZyBEZXZLaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEFzc2Vsc3RpbmUgPG1hcmsuYXNzZWxzdGluZUB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgOTgyOWNhYmJhYTA0NzRlOTQwNzViZjdkNjJjOTliZGJhOTk2NTE4YgotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglXZWQgT2N0IDI4IDE5OjE2OjQzIDIwMDkgLTA0MDAKLQotICAgIEZpeCBmb3IgVm9pZCBmdW5jdGlvbiByZXR1cm5pbmcgdmFsdWUgaW4gc2JjMzUtYTlnMjAKLQotICAgIFZvaWQgZnVuY3Rpb24gd2FzIHJldHVybmluZyAwIGluIHRoZSBtNDF0OTQgcnRjIGRyaXZlci4KLSAgICBUaGlzIG1ha2VzIGl0IHNpbWlsYXIgdG8gbTQxdDYyIHJ0YyBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCBkNWUyZDYyNWM3NGM4NGFhNDE5YmE3ZmEwYzgxYmFkOTNmYzY5YTYwCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVNhdCBPY3QgMjQgMTQ6NDg6MzMgMjAwOSAtMDUwMAotCi0gICAgQVJNIFVwZGF0ZSBtYWNoLXR5cGVzLmgKLQotICAgIEZyb20gaHR0cDovL2Z0cC5hcm0ubGludXgub3JnLnVrL3B1Yi9saW51eC9hcm0va2VybmVsL2dpdC1jdXIvbGludXgtMi42LWFybQotCi0gICAgQ29tbWl0IGlkIDA5OTYzOTExMzlmNDNkMDMyMzM1YjUzNjBkYjExZGE2MmEyY2JiMzkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDM0ZGRiZDE3MWJhMTU0ZTlhZmQ4M2YwN2EwN2FkOGI1N2FjNTkyZTMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgT2N0IDIyIDIzOjA2OjU5IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIGF1dG91cGRhdGUgZmVhdHVyZSBmcm9tIFBMVTQwNSBib2FyZAotCi0gICAgVGhlIGF1dG91cGRhdGUgZmVhdHVyZSBpcyBub3QgdXNlZCBvbiBQTFU0MDUgYm9hcmRzLgotICAgIFNvIHJlbW92ZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODI0ZDgyOTk3ZmJjZjI4ZTQ5MDgxZDM2ZmRkNWQzYmUxYjkyYjAzZAotQXV0aG9yOiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLURhdGU6CVdlZCBOb3YgNCAxMzozNzo1OSAyMDA5IC0wODAwCi0KLSAgICBGaXggZXhhbXBsZSBGSVQgaW1hZ2Ugc291cmNlIGZpbGVzCi0KLSAgICBUaGUgZXhhbXBsZSBGSVQgaW1hZ2Ugc291cmNlIGZpbGVzIGRvIG5vdCBjb21waWxlIHdpdGggdGhlIGxhdGVzdCBkdGMgYW5kCi0gICAgbWtpbWFnZS4gVGhlIGZvbGxvd2luZyBlcnJvciBtZXNzYWdlIGlzIHByb2R1Y2VkOgotCi0gICAgRFRDOiBkdHMtPmR0YiAgb24gZmlsZSAia2VybmVsLml0cyIKLSAgICBFcnJvcjoga2VybmVsLml0cyA3OjAgLSAxOjAgc3ludGF4IGVycm9yCi0gICAgRkFUQUwgRVJST1I6IFVuYWJsZSB0byBwYXJzZSBpbnB1dCB0cmVlCi0gICAgLi9ta2ltYWdlOiBDYW4ndCByZWFkIGtlcm5lbC5pdGIudG1wOiBJbnZhbGlkIGFyZ3VtZW50Ci0KLSAgICBUaGUgRklUIGltYWdlIHNvdXJjZSBmaWxlcyBhcmUgbWlzc2luZyB0aGUgIi9kdHMtdjEvOyIgZGlyZWN0aXZlIGF0IHRoZQotICAgIGJlZ2lubmluZyBvZiB0aGUgZmlsZS4gQWRkIHRoZSBkaXJlY3RpdmUgdG8gdGhlIGV4YW1wbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+Ci0KLWNvbW1pdCBmZDY2MDY2ZWUzY2UxNWMyOTY2ZmViOWIyYmUwZjBkNTFhOTVkYjQ4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBOb3YgNCAxNjoxMzoxOSAyMDA5IC0wNTAwCi0KLSAgICBpbWcyc3JlYzogdXNlIHN0YW5kYXJkIHR5cGVzCi0KLSAgICBUaGUgaW1nMnNyZWMgY29kZSBjcmVhdGVzIGEgbG90IG9mIHR5cGVkZWZzIHdpdGggY29tbW9uIG5hbWVzLiAgVGhlc2UKLSAgICBlYXNpbHkgY2xhc2ggd2l0aCBzeXN0ZW0gaGVhZGVycyB0aGF0IGluY2x1ZGUgdGhlc2UgdHlwZWRlZnMgKGxpa2UgbWluZ3cpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgODIwNGUwNjgxMTBlOGFiZTVkYjljM2I3ZGY5OTcxYjU4Y2RhOGYyNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTm92IDQgMTY6MDM6MjUgMjAwOSAtMDUwMAotCi0gICAgdG9vbHM6IGdpdGlnbm9yZSAqLmV4ZSBiaW5hcmllcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNDI1ZDNiNjY2ZWVlNWM1OGZkYjgyZmI4OTRhNTM1ZGQ3MTc4MmEwNQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIE5vdiAzIDIzOjMxOjA3IDIwMDkgLTA2MDAKLQotICAgIHBwYzogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBrZ2RiLmMgdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlMDZhYjY1NDZiMzMyYWNjNTVhYzRlN2MzMTMzODY2MjMyOGIwZmIzCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBOb3YgMyAxMTozNjozOSAyMDA5IC0wNTAwCi0KLSAgICBzcGlfZmxhc2guaDogcHVsbCBpbiBsaW51eC90eXBlcy5oIGZvciB1IyMgdHlwZXMKLQotY29tbWl0IDAwMDg1NTVmNGQ1N2MxNWFkODZlZTczNTg2MWNhMGQ3ODMwNDJmNjEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE5vdiAzIDExOjM2OjI2IDIwMDkgLTA1MDAKLQotICAgIGJvb3RtOiBtYXJrIGxvY2FsIGJvb3Rfb3NbXSB0YWJsZSBzdGF0aWMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGE4ZmEzNzlkNDdmMDZjN2QzZWQ3NWM4ZmIyNmFlNDNlZTM4ZTFmZDcKLUF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLURhdGU6CU1vbiBOb3YgMiAwOTo0MDoxOCAyMDA5IC0wNjAwCi0KLSAgICBta2NvbmZpZzogZGVueSBtZXNzZWQgdXAgQVJDSCBkZWZpbml0aW9uCi0KLSAgICBSZWZ1c2UgdG8gc2V0dXAgYSBwbGF0Zm9ybSBpZiB0aGUgY29tbWFuZCBsaW5lIEFSQ0g9IGlzIG5vdCB0aGUgc2FtZQotICAgIGFzIHRoZSBvbmUgcmVxdWlyZWQgZm9yIHRoZSBib2FyZC4gVGhpcyBwcmV2ZW50cyBhbnkgdXNlciB3aXRoCi0gICAgcHJlaGlzdG9yaWMgYWxpYXNlcyBmcm9tIG1lc3NpbmcgdXAgdGhlaXIgYnVpbGRzLgotCi0gICAgUmVwb3J0ZWQgaW4gdGhyZWFkOgotICAgIGh0dHA6Ly9vbGQubmFiYmxlLmNvbS8tVS1Cb290LS1CdWlsZC1icmVha3Mtb24tc29tZS1PTUFQMy1jb25maWdzLXRvMjYxMzI3MjEuaHRtbAotCi0gICAgSW5wdXRzIGZyb206IE1pa2UgRnJ5c2luZ2VyIGFuZCBXb2xmZ2FuZyBEZW5rOgotICAgIGh0dHA6Ly9saXN0cy5kZW54LmRlL3BpcGVybWFpbC91LWJvb3QvMjAwOS1Ob3ZlbWJlci8wNjM2NDIuaHRtbAotCi0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDYzogQW5hbmQgR2FkaXlhciA8Z2FkaXlhckB0aS5jb20+Ci0gICAgQ2M6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLQotY29tbWl0IDY3Yjk2ZTg3ZGExYjg0NjYwZmExZTViNzhjYzc2MDI0NmQxMTY4MTQKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglXZWQgT2N0IDI4IDIyOjEzOjM5IDIwMDkgKzAxMDAKLQotICAgIFJlcGFpciB0aGUgJ25ldHJldHJ5PW9uY2UnIG9wdGlvbi4KLQotICAgICduZXRyZXRyeSA9IG9uY2UnIGRvZXMgdGhlIHNhbWUgYXMgJ25ldHJldHJ5ID0geWVzJywgYmVjYXVzZSBpdCBpcyBub3Qgc3RvcmVkCi0gICAgd2hlbiBpdCB3YXMgdHJpZWQgb25jZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBiMjVlMzhmYzM2ZTEzZmE4MDM3ZmE0ZDM3ZmU5MDlkMWQ2ZTZmMzcyCi1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJVGh1IE9jdCAyOSAxNDoyNDoyMiAyMDA5ICswMTAwCi0KLSAgICBSZXBhaXIgYnVpbGQgZmFpbCBpbiBjYXNlIENPTkZJR19QUEM9biBhbmQgQ09ORklHX0ZJVD15Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDAxODI2YWJjMDJjZTE2MDUwMTUzNDc4OGU2MzYyOWNjYmUzMWIwNWMKLUF1dGhvcjogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgotRGF0ZToJVGh1IE5vdiAxMiAxMTo0NjowNyAyMDA5ICswMjAwCi0KLSAgICBPTUFQMzogcGFuZG9yYTogZml4IGJvb3Rpbmcgd2l0aG91dCBzZXJpYWwgYXR0YWNoZWQKLQotICAgIFdoZW4gdGhlIGJvYXJkIGlzIGJvb3RlZCB3aXRob3V0IHNlcmlhbCBjYWJsZSBhdHRhY2hlZCAod2hpY2gKLSAgICBpcyBob3cgbW9zdCBvZiB0aGVtIHdpbGwgYmUgdXNlZCkgVUFSVCBSWCBpcyBsZWZ0IGZsb2F0aW5nIGFuZAotICAgIHNvbWV0aW1lcyBwaWNrcyBub2lzZSwgd2hpY2ggaW50ZXJydXB0cyBjb3VudGRvd24gYW5kIGVudGVycwotICAgIFUtQm9vdCBwcm9tcHQgaW5zdGVhZCBvZiBib290aW5nIHRoZSBrZXJuZWwuCi0KLSAgICBGaXggdGhpcyBieSBzZXR0aW5nIHVwIGludGVybmFsIHB1bGx1cCBvbiBVQVJUIFJYIHBpbi4gVGhpcwotICAgIGRvZXMgbm90IHByZXZlbnQgc2VyaWFsIGZyb20gd29ya2luZyBhcyB0aGUgaW50ZXJuYWwgcHVsbHVwCi0gICAgaXMgd2Vhay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KLQotY29tbWl0IDQxZGZkOGE2MDMyNDI0M2RiZTJkYzMxM2E2MDc5MTA4MjRhNjhhYTcKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglXZWQgT2N0IDI4IDIyOjEzOjM3IDIwMDkgKzAxMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBDUzIgZGF0YWZsYXNoIGZvciBBdG1lbC1TUEkuCi0KLSAgICBUaGUgb25seSBtaXNzaW5nIGNoaXBzZWxlY3QgbGluZSBzdXBwb3J0IGlzIENTMiwgYW5kIEkgbmVlZCBpdCBvbgotICAgIENTMi4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBmYWYzNmMxNDM3Yzk1ZTRhODY4MzU2MzNkOTgwMWM1ZjYzOTZhM2M3Ci1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJV2VkIE9jdCAyOCAyMjoxMzozNiAyMDA5ICswMTAwCi0KLSAgICBGaXggbWluZ3cgdG9vbHMgYnVpbGQKLQotICAgIG1raW1hZ2UgZG9lcyBub3QgYnVpbGQgZHVlIHRvIG1pc3Npbmcgc3RydG9rX3IoKSBhbmQgZ2V0bGluZSgpIGltcGxlbWVudGF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDZhNTkwYzVmNWZkMTJjZGQyN2YzMTUzNTIyYWNmYWMzODU0NTkwZTcKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglXZWQgT2N0IDI4IDIyOjEzOjM1IDIwMDkgKzAxMDAKLQotICAgIEJ1aWxkaW5nIG9mIEZJVCBpbWFnZXMgZG9lcyBub3Qgd29yay4KLQotICAgIFRoZSB0eXBlIGlzIG5vdCBzZXQgZm9yIGdlbmVyYXRpb24gb2YgdGhlIEZJVCBpbWFnZXMsIHJlc3VsdGluZwotICAgIGluIG5vIGltYWdlcyBiZWluZyBjcmVhdGVkIHdpdGhvdXQgcHJpbnRpbmcgb3IgcmV0dXJuaW5nIGFuIGVycm9yCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDBhNzY5MWU4MjBlMzNiMjNmNjFjNmVhMGVmNmZhNzIwOTlkMWE2YWUKLUF1dGhvcjogUmVuYXRvIEFuZHJlb2xhIDxyZW5hdG8uYW5kcmVvbGFAaW1hZ29zLml0PgotRGF0ZToJTW9uIE5vdiAyMyAxNjo0NToxNCAyMDA5IC0wNTAwCi0KLSAgICBOaW9zMjogZG9fYm9vbV9saW51eCgpOiBrZXJuZWwgZ3VuemlwIGlucHV0IGRhdGEgaW50ZWdyaXR5IHByb2JsZW0gZHVlIHRvCi0JbWlzc2luZyBjYWNoZSBmbHVzaC4KLQotCUFkZGVkIGluc3RydWN0aW9uIGFuZCBkYXRhIGNhY2hlcyBmbHVzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgZGUwMzgyNTM4NmVhZWRiNWUxNzI2MWRkODdjZGU4NmU5YTc2NGJhOQotQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLURhdGU6CU1vbiBOb3YgMjMgMTY6Mjk6NDAgMjAwOSAtMDUwMAotCi0gICAgTmlvczI6IEZpeCBjb21waWxlciB3YXJuaW5ncyBpbiBsaWJfbmlvczIvYm9hcmQuYyAodW51c2VkIHZhcmlhYmxlcykKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgNTdiYWEzNzljZjJmNjdkZjg5YTVjNjA1Mjc2N2ZkMjVkYWZmMjBiZAotQXV0aG9yOiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLURhdGU6CU1vbiBOb3YgMjMgMTU6NTQ6MjUgMjAwOSAtMDUwMAotCi0gICAgTmlvczIvTmlvczogUmVtb3ZlIHVubmVjZXNzYXJ5IChyZXNpZHVhbCkgbGlua2VyIE5pb3MgY29tbWFuZCBzY3JpcHRzIGZyb20KLQl0aGUgc3RhbmRhbG9uZSBleGFtcGxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotCi1jb21taXQgZWI1ZWIyYjBmNzQ0ZjBjYmE0MDUxNjBjNWQwMTMzNWM0MGYwOWFjZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDE5IDE0OjAzOjE3IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQ2xlYW51cCBQUEM0eHggSTJDIGluZnJhc3RydWN0dXJlCi0KLSAgICBUaGlzIHBhdGNoIGNsZWFucyB1cCB0aGUgUFBDNHh4IEkyQyBpbnRyYXN0cnVjdHVyZToKLQotICAgIC0gVXNlIEMgc3RydWN0IHRvIGRlc2NyaWJlIHRoZSBJMkMgcmVnaXN0ZXJzIGluc3RlYWQgb2YgZGVmaW5lcwotICAgIC0gQ29kaW5nIHN0eWxlIGNsZWFudXAgKGJyYWNlcywgd2hpdGVzcGFjZSwgY29tbWVudHMsIGxpbmUgbGVuZ3RoKQotICAgIC0gRXh0cmFjdCBjb21tb24gY29kZSBmcm9tIGkyY19yZWFkKCkgYW5kIGkyY193cml0ZSgpCi0gICAgLSBSZW1vdmUgdW5uZWVkZWQgSUlDIGRlZmluZXMgZnJvbSBwcGM0MDUuaCAmIHBwYzQ0MC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiMmY2MThmMjE1MGIxNWIyNjc0ZjExZDA5ZTFjMGZkZmU0NjBjMWNkCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMTkgMTE6NDk6MzYgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgc29tZSB0ZXN0aW5nIGNvZGUgZnJvbSA0eHhfcGNpZS5jCi0KLSAgICBUaGlzIGNvZGUgZ290IGluY2x1ZGVkIGFjY2lkZW50YWxseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDRlNTc0YzRlMmQzNzc2ZDlkYjYyZGNhNGNhM2M3M2JlMTU3NGFmNDMKLUF1dGhvcjogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgotRGF0ZToJTW9uIE1heSAxOCAxMzoyMDo1NCAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiBFeHRlbmRlZCBzb2Z0X2kyYyBkcml2ZXIgZm9yIEFUOTFTQU05MjYzIFNvQwotCi0gICAgV2hpbGUgaGFyZF9pMmMgc3VwcG9ydCBpcyBub3QgYXZhaWxhYmxlCi0gICAgKHNlZSBodHRwOi8vbGlzdHMuZGVueC5kZS9waXBlcm1haWwvdS1ib290LzIwMDktTWFyY2gvMDQ5NzUxLmh0bWwpLAotICAgIHRoaXMgcGF0Y2ggZW5hYmxlcyBzb2Z0X2kyYyBvbiBBVDkxU0FNOTI2MyBTb0MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci0KLWNvbW1pdCAzOTZmZDE3MzM4YjliZjFmODRmNDk0ZWMxODYwNDI3ZTE4ODY4ZWRlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgT2N0IDE2IDE3OjM2OjI3IDIwMDkgLTA1MDAKLQotICAgIEFkZCAndHJ1ZScgYW5kICdmYWxzZScgY29tbWFuZHMKLQotICAgIFRoZXNlIGNvbW1hbmRzIGFyZSBvbmx5IGVuYWJsZWQgd2hlbiB0aGUgaHVzaCBzaGVsbCBpcyBlbmFibGVkIGFuZCBjYW4KLSAgICBiZSB1c2VmdWwgaW4gc2NyaXB0cyBzdWNoIGFzOgotCi0gICAgd2hpbGUgdHJ1ZSBkbwotCWVjaG8gIkJvb3RpbmcgT1MuLi4iOwotCXJ1biAkYm9vdGNtZDsKLQllY2hvICJCb290aW5nIE9TIGZhaWxlZCI7Ci0Jc2xlZXAgMTA7Ci0gICAgZG9uZQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDRlMWNhOTNiNmJhZTM0YjY4YmU5MjgwYjQzYmYwMjg5ZDk5NDY1NmMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBPY3QgMTYgMTc6MzY6MjYgMjAwOSAtMDUwMAotCi0gICAgY21kX2hlbHA6IEdlbmVyYWwgY2xlYW51cAotCi0gICAgU2hvcnRlbiB0aGUgb3Zlcmx5LXZlcmJvc2UgaGVscCBtZXNzYWdlIG9mICdoZWxwJyBhbmQgY2xlYW4gdXAgc29tZQotICAgIHJlZHVuZGFudCBpZmRlZmVyeSB3aGlsZSB3ZSdyZSBhdCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA2YjhmNWFkMTBmNTY3MzYyYTM2ODI4NDBmNTliYTBmYzQ3MGFmMzE5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgT2N0IDE2IDE3OjM2OjI1IDIwMDkgLTA1MDAKLQotICAgIGNvbW1hbmQuYzogQnJlYWsgY29tbWFuZHMgb3V0IHRvIGFwcHJvcHJpYXRlIGNtZF8qLmMgZmlsZXMKLQotICAgIGNvbW1hbmQuYyBzaG91bGQgY29udGFpbiBjb21tb24gY29kZSByZWxhdGVkIHRvIGNvbW1hbmRzLCBub3QKLSAgICBtaXNjZWxsYW5lb3VzIGNvbW1hbmQgaW1wbGVtZW50YXRpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGZjZmZiNjgwZTc3ZmNiNDg1OThkNGE5OTQ0ZGJlMmQ0NTAzMTcwZTAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIE9jdCAxNCAxOToyODowMyAyMDA5IC0wNDAwCi0KLSAgICBzZjogZml4IHN0bWljcm8gb2Zmc2V0IHNldHVwIHdoaWxlIGVyYXNpbmcKLQotICAgIFJlcG9ydGVkLWJ5OiBQZXRlciBHb21ib3MgPGdvbWJvc0Bwcm90ZWN0YS5odT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBkMzk0YTc3OTUwMjdkOTZjYTU1Nzk5ZGY0MGJkNWM0YTEzZGJlZWJlCi1BdXRob3I6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgotRGF0ZToJRnJpIE9jdCA5IDE3OjEyOjIzIDIwMDkgLTA0MDAKLQotICAgIHNmOiBuZXcgZHJpdmVyIGZvciBXaW5ib25kIFcyNVgxNi8zMi82NCBkZXZpY2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBNY011bGxhbiA8amFzb24ubWNtdWxsYW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGNhZGEzMTUxMDBjODg4OTRiODU5NzJhOTEzMDlhNmYyNDEzOTY2YjYKLUF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgotRGF0ZToJVGh1IE9jdCAxIDIzOjU1OjE3IDIwMDkgKzAyMDAKLQotICAgIG1wYzgyNjA6IG1vdmUgRkRUIG1lbW9yeSBub2RlIGZpeHVwIGludG8gY29tbW9uIENQVSBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWwuemlzd2lsZXJAbm9zZXIuY29tPgotICAgIFRlc3RlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBmMmNlYTQwNWY4M2RhNDZiNzIwOThlYTg3NGZiM2VlZmUxODVkMzEyCi1BdXRob3I6IFBvLVl1IENodWFuZyA8cmF0YmVydC5jaHVhbmdAZ21haWwuY29tPgotRGF0ZToJV2VkIFNlcCAyMyAxNTo1MjozNSAyMDA5ICswODAwCi0KLSAgICBBZGQgZHJpdmVyIGZvciBGVFJUQzAxMCByZWFsIHRpbWUgY2xvY2sKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgotCi0gICAgRWRpdGVkIGNvbW1pdCBtZXNzYWdlLgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjMDM1NmE4ODAxMTMzMDY0NmU5NjBkZmFjOGEyYzkwOWJlZGUzMzA0Ci1BdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmai1saXN0QG1pbWMuY28udWs+Ci1EYXRlOglNb24gQXVnIDE3IDE2OjQyOjUyIDIwMDkgKzAxMDAKLQotICAgIE1JTUMyMDA6IHNldCBkZWZhdWx0IGZibWVtIHZhbHVlCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYSBkZWZhdWx0IGJvb3RhcmdzICJmYm1lbSIgdmFsdWUgdG8gdGhlCi0gICAgQ09ORklHX0JPT1RBUkdTIHN0cmluZyBmb3IgdGhlIE1JTUMyMDAgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLQotY29tbWl0IDEwYTVhNzk5MTI1ODAxOWFmMTU1YmMxOWIzYjI0NmFhYTcwOGIwZTIKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJVGh1IE5vdiAxOSAyMzowNDo0MiAyMDA5IC0wNTAwCi0KLSAgICBOQU5EOiBBZGQgU3VwcG9ydCBmb3IgNEsgcGFnZSBzaXplIGluIERhVmluY2kgTkFORCBkcml2ZXIKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBOQU5EIGRldmljZXMgd2l0aCBhIHBhZ2Ugc2l6ZSBvZgotICAgIDRLIGluIHRoZSBEYVZpbmNpIE5BTkQgZHJpdmVyLiBUaGUgbGF5b3V0IG1hdGNoZXMgdGhlIGxheW91dCB0aGF0IFRJIHVzZXMKLSAgICBmb3IgNEsgcGFnZSBzaXplIE5BTkQgZGV2aWNlcyBpbiB0aGUga2VybmVsIE5BTkQgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgMTRjZTAyYzg4MTE2MzE2YTAyODVjYzdkOWMwNWY4MzM2N2E1YWFlOAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJV2VkIE5vdiAxOCAxNjoyOToyOSAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSB1bnVzZWQgZmVhdHVyZXMgZnJvbSBQTUM0NDAgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBzaHJpbmtzIHRoZSBQTUM0NDAgdS1ib290IGJpbmFyeSAoZnJvbSBuZXh0IGJyYW5jaCkKLSAgICB0byBmaXQgaW50byAzODRrQiBhZ2Fpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjI5YWI5OWIzYjE5YzFiN2UwNmE3YzRlNWQ2NjYxMzhiYzkyNGM3YwotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJV2VkIE5vdiAxOCAxNjoyODo0MiAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSBjb25mdXNpbmcgY29tbWVudAotCi0gICAgVGhpcyBpcyBub3QgdGhlIHNlcXVvaWEgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc5ZTJkOGRmMzc3NmI2NjcyNTdlNjA5YWVmZWZhMDcxYjRmZTEzYTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE5vdiAxNyAxNTo1MzowMCAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IGFscHI6IFJlbW92ZSBzb21lIG5vdCBuZWVkZWQgY29tbWFuZHMgdG8gbWFrZSBpbWFnZSBmaXQgYWdhaW4KLQotICAgIFRoZSBsYXRlc3QgY2hhbmdlcyBpbiB0aGUgdS1ib290L25leHQgYnJhbmNoIGluY3JlYXNlZCB0aGUgc2l6ZSBvZiB0aGUKLSAgICBhbHByIGltYWdlIGEgYml0IG1vcmUuIE5vdyBpdCBkb2Vzbid0IGZpdCBpbnRvIHRoZSAyNTZrIHJlc2VydmVkIGZvciBpdC4KLSAgICBUaGlzIHBhdGNoIG5vdyByZW1vdmVzIHRoZSBjb21tYW5kcyAiYXNrZW52IiBhbmQgImlycSIgd2hpY2ggYXJlIG5vdAotICAgIG5lZWRlZCBpbiB0aGUgcHJvZHVjdGlvbiBzeXN0ZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBQaWV0ZXIgVm9vcnRodWlqc2VuIDxwaWV0ZXIudm9vcnRodWlqc2VuQHByb2RyaXZlLm5sPgotCi1jb21taXQgNmM3MDA0OWJkMTRlOGU4MTc2NDU3MDczMmJlN2YzNGE4OTgzMWYwOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDEyIDE3OjE5OjM3IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQ29uc29saWRhdGUgcGNpX21hc3Rlcl9pbml0KCkgZnVuY3Rpb24KLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgZHVwbGljdGVkIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgcGNpX21hc3Rlcl9pbml0KCkKLSAgICBmdW5jdGlvbiBieSBpbnRyb2R1Y2luZyBhIHdlYWsgZGVmYXVsdCBmdW5jdGlvbiBmb3IgaXQuIEl0IGNhbiBiZQotICAgIG92ZXJyaWRkZW4gYnkgYSBib2FyZCBzcGVjaWZpYyB2ZXJzaW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTc2MGIwMjAzMTU1ZGE2ZmI4YjhlOTA4NjE2OWJiODdkMDlkNzZmYQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDEyIDE2OjQxOjA5IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQ29uc29saWRhdGUgcGNpX3ByZV9pbml0KCkgZnVuY3Rpb24KLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgZHVwbGljdGVkIGltcGxlbWVudGF0aW9ucyBvZiB0aGUgcGNpX3ByZV9pbml0KCkKLSAgICBmdW5jdGlvbiBieSBpbnRyb2R1Y2luZyBhIHdlYWsgZGVmYXVsdCBmdW5jdGlvbiBmb3IgaXQuIFRoaXMgd2VhayBkZWZhdWx0Ci0gICAgaGFzIGEgZGlmZmVyZW50IGltcGxlbWVudGF0aW9uIGZvciBzb21lIFBQQyB2YXJpYW50cy4gSXQgY2FuIGJlCi0gICAgb3ZlcnJpZGRlbiBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMDk1NDkzYTVkNGMxNmY0ODFhNzgzZjZmNTRkODNhZDBlMDdkZmEwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMTIgMTI6MDA6NDkgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBwY2lfdGFyZ2V0X2luaXQoKSBmdW5jdGlvbgotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBkdXBsaWN0ZWQgaW1wbGVtZW50YXRpb25zIG9mIHRoZSBwY2lfdGFyZ2V0X2luaXQoKQotICAgIGZ1bmN0aW9uIGJ5IGludHJvZHVjaW5nIGEgd2VhayBkZWZhdWx0IGZ1bmN0aW9uIGZvciBpdC4gVGhpcyB3ZWFrIGRlZmF1bHQKLSAgICBoYXMgYSBkaWZmZXJlbnQgaW1wbGVtZW50YXRpb24gZm9yIDQ0MEVQKHgpL0dSKHgpIFBQQydzLiBJdCBjYW4gYmUKLSAgICBvdmVycmlkZGVuIGJ5IGEgYm9hcmQgc3BlY2lmaWMgdmVyc2lvbiAoZS5nLiBQTUM0NDAsIGtvcmF0KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLQotY29tbWl0IDVlMWRlZDU1OGI3Y2MyOGE2MmMxNDU5OGY2NDM3MDIzYjYyNjI0NDQKLUF1dGhvcjogSHVpLlRhbmcgPHpldGFsYWJzQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBOb3YgMTggMTY6MjQ6MDQgMjAwOSArMDgwMAotCi0gICAgUzNDMjQxMCBOQU5EIEZsYXNoIEFkZCBNaXNzaW5nIEZ1bmN0aW9uCi0KLSAgICBUaGlzIHBhdGNoIGFkZCBuYW5kX3JlYWRfYnVmKCkgZm9yIFMzQzI0MTAgTkFORCBTUEwuCi0gICAgSW4gbmFuZF9zcGwvbmFuZF9ib290LmMsIG5hbmRfYm9vdCgpIHdpbGwgY2hlY2sgbmFuZC0+c2VsZWN0X2NoaXAsCi0gICAgc28gbmFuZC0+c2VsZWN0X2NoaXAgc2hvdWxkIGFsc28gYmUgaW5pdGlhbGl6ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWkuVGFuZyA8emV0YWxhYnNAZ21haWwuY29tPgotCi1jb21taXQgNmNkNzUyZjkyN2U1MTVlNjNhMDM4ZmEzNjNlZGNlZWM1YTU5YzAyOAotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglNb24gTm92IDE2IDEzOjMyOjAxIDIwMDkgLTA1MDAKLQotICAgIE5BTkQ6IFVwZGF0ZSByZWFkX3JlYWRfc3VicGFnZSBBUEkgY2hlY2sKLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBhIGNoZWNrIGNvbmRpdGlvbiBpbiB0aGUgTkFORCBkcml2ZXIuCi0gICAgVGhlIGNoZWNrIGNvbmRpdGlvbiBpcyBzaW1pbGF0IHRvIHdoYXQgaXMgaW4gbGludXgvbmV4dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGJiM2U5ODI4ZTdmYmNjOWU0NTE4ZTUxNTkyODc2ZjRhMDk5N2Q5ZWMKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJTW9uIE5vdiAxNiAxMzozMTo0NyAyMDA5IC0wNTAwCi0KLSAgICBOQU5EOkV4dGVuZGluZyB0aGUgbmFuZF9lY2NsYXlvdXQgc3RydWN0dXJlCi0KLSAgICBOQU5EcyB3aXRoIHBhZ2Ugc2l6ZSBvZiBsZXNzZXIgdGhhbiBhbmQgZXF1YWwgdG8gMksgYXJlCi0gICAgcmVhY2hpbmcgRU9MLiBUaGV5IGFyZSBiaW5nIHJlcGxhY2VkIHdpdGggTkFORHMgb2YKLSAgICBwYWdlIHNpemUgNEsgYW5kIGFib3ZlLgotICAgIFRvIHN1cHBvcnQgdGhpcyB3ZSBoYXZlIHRvIGV4dGVuZCB0aGUgZWNjcG9zIGZpZWxkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAzZmZjMGQ2MWJhZDdkOTg2ZTM0NGNlNzA2MmIzN2M1YzhmMDRmYjBlCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIE9jdCAyNyAxOTo1ODowOSAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IEluaXRpYWxpemUgbWFnbmV0aWMgY291cGxlciBvbiBWT000MDUgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGFuIHVnbHkgYmVoYXZpb3Igb2YgdGhlIElMNzEyIG1hZ25ldGljIGNvdXBsZXIKLSAgICBhcyB1c2VkIG9uIFZPTTQwNS4gVGhlc2UgcGFydHMgd2lsbCByZW1lbWJlciB0aGVpciBsYXN0IHN0YXRlCi0gICAgb3ZlciBhIHBvd2VyIGN5Y2xlIHdoaWNoIG1pZ2h0IGNhdXNlIHVud2FudGVkIGJlaGF2aW9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiZTBkYjNlMzE0MWM2YzZiNGUyMzJiNTEwOTFmMzVhMjg0Y2M1NGU1Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglNb24gT2N0IDI2IDA5OjU4OjQ1IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogSW5pdGlhbGl6ZSBtYWduZXRpYyBjb3VwbGVycyBpbiBQTFU0MDUKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gdWdseSBiZWhhdmlvciBvZiB0aGUgSUw3MTIgbWFnbmV0aWMgY291cGxlcnMKLSAgICBhcyB1c2VkIG9uIFBMVTQwNS4gVGhlc2UgcGFydHMgd2lsbCByZW1lbWJlciB0aGVpciBsYXN0IHN0YXRlCi0gICAgb3ZlciBhIHBvd2VyIGN5Y2xlIHdoaWNoIG1pZ2h0IGNhdXNlIHVud2FudGVkIGJlaGF2aW9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwNjdmNTRjNjZhY2Q0Njk4NzBlZjY5NDZlMTU5MWJmY2MwMmRlMWIzCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglNb24gT2N0IDI2IDA5OjU1OjQwIDIwMDkgKzAxMDAKLQotICAgIEFkZCBtaW5pbWFsIFNKQTEwMDAgaGVhZGVyIGZvciBiYXNpYyBDQU4gbW9kZQotCi0gICAgVGhpcyBwYXRjaCBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIHVwY29taW5nIFBMVTQwNSBib2FyZCBmaXguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDFkMmU5NmRlNTZjYzU3ZTI1YTE5YmM0MGQyOTdmMzZjNGM0NDQzYTIKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CU1vbiBOb3YgMiAyMDozNjoyNiAyMDA5ICswMTAwCi0KLSAgICBPTUFQMi8zOiBJMkM6IEFkZCBzdXBwb3J0IGZvciBzZWNvbmQgYW5kIHRoaXJkIGJ1cwotCi0gICAgQWRkIHN1cHBvcnQgdG8gdXNlIHNlY29uZCBhbmQgdGhpcmQgSTJDIGJ1cywgdG9vLgotCi0gICAgQnVzIDAgaXMgc3RpbGwgdGhlIGRlZmF1bHQsIGJ1dCBieSBjYWxsaW5nIGkyY19zZXRfYnVzX251bSgxLzIpIGJlZm9yZSBkb2luZwotICAgIEkyQyBhY2Nlc3NlcywgY29kZSBjYW4gc3dpdGNoIHRvIGJ1cyAxIGFuZCAyLCB0b28uIERvbid0IGZvcmdldCB0byBzd2l0Y2gKLSAgICBiYWNrIGFmdGVyd2FyZHMsIHRoZW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgYzc1OGU5NDdhYTdkMzlhMmJlNjA3ZWNkZWRkODE4YWQzMDA4MDdiMgotQXV0aG9yOiBBbXVsIEt1bWFyIFNhaGEgPGFtdWwuc2FoYUBzYW1zdW5nLmNvbT4KLURhdGU6CVdlZCBOb3YgNCAxMDozODo0NiAyMDA5ICswNTMwCi0KLSAgICBFTlYgVmFyaWFibGUgc3VwcG9ydCBmb3IgRmxleC1PbmVOQU5ECi0KLSAgICBEZWZpbmUgYW5kIHVzZSBDT05GSUdfRU5WX0FERFJfRkxFWCBhbmQgQ09ORklHX0VOVl9TSVpFX0ZMRVgKLSAgICBmb3Igc3RvcmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2hpdCBIYWdhcmd1bmRnaSA8aC5yb2hpdEBzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbXVsIEt1bWFyIFNhaGEgPGFtdWwuc2FoYUBzYW1zdW5nLmNvbT4KLQotY29tbWl0IGNhY2JlOTE5NTg0MTkzZjY0ZTc0MDg4ZTAzZjA2OGU1Mjc3NWJiODYKLUF1dGhvcjogQW11bCBLdW1hciBTYWhhIDxhbXVsLnNhaGFAc2Ftc3VuZy5jb20+Ci1EYXRlOglGcmkgTm92IDYgMTc6MTU6MzEgMjAwOSArMDUzMAotCi0gICAgRmxleC1PbmVOQU5EIGRyaXZlciBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgRmxleC1PbmVOQU5EIGRldmljZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2hpdCBIYWdhcmd1bmRnaSA8aC5yb2hpdEBzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbXVsIEt1bWFyIFNhaGEgPGFtdWwuc2FoYUBzYW1zdW5nLmNvbT4KLQotY29tbWl0IDM1MjA5Y2JjZWViZTIxMmE4YzVlYzE3ZDU1Mjk2MGY4YmQ0NzI1ZjMKLUF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAyMCAxNjo1ODoxNyAyMDA5ICswODAwCi0KLSAgICBmc2xfZWxiY19uYW5kOiByZW1vdmUgdGhlIGJidCBkZXNjcmlwdG9ycyByZWxvY2F0aW9uIGZpeHVwCi0KLSAgICBUaGUgY29tbWl0IDY2MzcyZmUyIG1hbnVhbGx5IHJlbG9jYXRlZCB0aGUgYmJ0IHBhdHRlcm4gcG9pbnRlciwKLSAgICB3aGljaCBjYW4gYmUgcmVtb3ZlZCBieSB1c2luZyBmdWxsIHJlbG9jYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNTY0M2Q0ZGEyNTdlNTFmNjIwMGIyMTNjNzVkZTRmYjViMzQ1NzgwCi1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjAgMTY6NTg6MTYgMjAwOSArMDgwMAotCi0gICAgcHBjLzg1eHg6IG1ha2UgYm9vdCBmcm9tIE5BTkQgZnVsbCByZWxvY2F0aW9uIHRvIFJBTQotCi0gICAgVGFrZSBhZHZhbnRhZ2Ugb2YgdGhlIGxhdGVzdCBmdWxsIHJlbG9jYXRpb24gY29tbWl0IG9mIFBQQyBwbGF0Zm9ybQotICAgIGZvciBib290IGZyb20gTkFORC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDdlODY2NjFjZDc3N2VlYzFlODFjNWU1N2M0NjhlODExMzhmZGE5ODMKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglTYXQgTm92IDcgMTY6Mjc6MDEgMjAwOSAtMDUwMAotCi0gICAgTkFORDogZml4ICJyYXciIHJlYWRzIHdpdGggRUNDIHN5bmRyb21lIGxheW91dHMKLQotICAgIFRoZSBzeW5kcm9tZSBiYXNlZCBwYWdlIHJlYWQvd3JpdGUgcm91dGluZXMgc3RvcmUgRUNDLCBhbmQgcG9zc2libHkgb3RoZXIKLSAgICAiT09CIiBkYXRhLCByaWdodCBhZnRlciBlYWNoIGNodW5rIG9mIEVDQydkIGRhdGEuICBXaXRoIEVDQyBjaHVuayBzaXplIG9mCi0gICAgNTEyIGJ5dGVzIGFuZCBhIGxhcmdlIHBhZ2UgKDJLaUIpIE5BTkQsIHRoZSBsYXlvdXQgaXM6Ci0KLSAgICAgIGRhdGEtMCBPT0ItMCBkYXRhLTEgT09CLTEgZGF0YS0yIE9PQi0yIGRhdGEtMyBPT0ItMyBPT0ItbGVmdG92ZXIKLQotICAgIFdoZXJlIE9PQnggaXMgKHByZXBhZCwgRUNDLCBwb3N0cGFkKS4gIEhvd2V2ZXIsIHRoZSBjdXJyZW50ICJyYXciIHJvdXRpbmVzCi0gICAgdXNlIGEgdHJhZGl0aW9uYWwgbGF5b3V0IC0tIGRhdGEgT09CLCBkaXNyZWdhcmRpbmcgdGhlIHByZXBhZCBhbmQgcG9zdHBhZAotICAgIHZhbHVlcyAtLSBzbyB3aGVuIHRoZXkncmUgdXNlZCB3aXRoIHRoYXQgdHlwZSBvZiBFQ0MgaGFyZHdhcmUsIHRob3NlIGNhbGxzCi0gICAgbWl4IHVwIHRoZSBkYXRhIGFuZCBPT0IuICBXaGljaCBtZWFucywgaW4gcGFydGljdWxhciwgdGhhdCBiYWQgYmxvY2sKLSAgICB0YWJsZXMgd29uJ3QgYmUgZm91bmQgb24gc3RhcnR1cCwgd2l0aCBkYXRhIGNvcnJ1cHRpb24gYW5kIHJlbGF0ZWQgY2hhb3MKLSAgICBlbnN1aW5nLgotCi0gICAgVGhlIGN1cnJlbnQgc3luZHJvbWUtYmFzZWQgZHJpdmVycyBpbiBtYWlubGluZSBhbGwgc2VlbSB0byB1c2Ugb25lIGNodW5rCi0gICAgcGVyIHBhZ2U7IHByZXN1bWFibHkgdGhleSBoYXZlbid0IG5vdGljZWQgc3VjaCBidWdzLgotCi0gICAgRml4IHRoaXMsIGJ5IGFkZGluZyByZWFkL3dyaXRlIHBhZ2VfcmF3X3N5bmRyb21lKCkgcm91dGluZXMgYXMgc2libGluZ3Mgb2YKLSAgICB0aGUgZXhpc3Rpbmcgbm9uLXJhdyByb3V0aW5lczsgInJhdyIganVzdCBtZWFucyB0byBieXBhc3MgdGhlIEVDQwotICAgIGNvbXB1dGF0aW9ucywgbm90IGNoYW5nZSBkYXRhIGFuZCBPT0IgbGF5b3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IE1vcnRvbiA8YWtwbUBsaW51eC1mb3VuZGF0aW9uLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPERhdmlkLldvb2Rob3VzZUBpbnRlbC5jb20+Ci0KLWNvbW1pdCA1ZGYzYzJiNjJjZWJhYTBkZGIyODE3MzY0ZjkzNzI2ZTVkYmUzNTI1Ci1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVNhdCBOb3YgNyAxNDoyNToxOCAyMDA5IC0wNTAwCi0KLSAgICBOQU5EOiBEb24ndCB3YWxrIHBhc3QgZW5kIG9mIG9vYmZyZWVbXQotCi0gICAgV2hlbiBjb21wdXRpbmcgb29iYXZhaWwgZnJvbSB0aGUgbGlzdCBvZiBmcmVlIGFyZWFzIGluIHRoZSBPT0IsCi0gICAgZG9uJ3QgYXNzdW1lIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGFuIHVudXNlZCBzbG90IGF0IHRoZSBlbmQuCi0gICAgVGhpcyBzeW5jcyB1cCB3aXRoIHRoZSBrZXJuZWwgTkFORCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAxOGI1YTRiNDNhZjNjODM1OWNiNTY4ZjRmYTMyZDZiOWRjZWJiZjI2Ci1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVNhdCBOb3YgNyAxNDoyNTowMyAyMDA5IC0wNTAwCi0KLSAgICBOQU5EOiBVcGRhdGUgY2hlY2sgY29uZGl0aW9uIGZvciBuYW5kX3JlYWRfcGFnZV9od2VjYyBBUEkKLQotICAgIFRoZSBwYXRjaCB1cGRhdGVzIHRoZSBjaGVjayBjb25kaXRpb24gZm9yIGRldGVybWluaW5nCi0gICAgd2hldGhlciB0aGUgRUNDIGNvcnJlY3Rpb25zIGhhcyBmYWlsZWQuCi0gICAgVGhpcyBtYWtlcyBpdCBzaW1pbGFyIHRvIHdoYXQgaXMgaW4gdGhlIGtlcm5lbCBOQU5EIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGUyNWVlMDM5NjIyNmZiNTY2Nzk3MDJkMDM2MWNmMjY0NTUwNGU3ZjYKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJU2F0IE5vdiA3IDE0OjI0OjUwIDIwMDkgLTA1MDAKLQotICAgIE5BTkQ6IFVwZGF0aW5nIGNvbW1lbnRzL2V4cGxhbmF0aW9ucyBpbiB0aGUgTkFORCBkcml2ZXIKLQotICAgIFBhdGNoIHVwZGF0ZXMgdGhlIGNvbW1lbnRzIGFuZCBleHBsYW5hdGlvbnMgZm9yCi0gICAgdGhlIGFyZ3VtZW50cyB0byB2YXJpb3VzIGZ1bmN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGFhZDRhMjhiMjUxOGUxZDI0ZWU2MDZkOWVhMzFmOWI0ZGQwMjk3NzcKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJU2F0IE5vdiA3IDE0OjI0OjM0IDIwMDkgLTA1MDAKLQotICAgIE5BTkQ6IFN1YnBhZ2Ugc2hpZnQgZm9yIGVjY19zdGVwcyBlcXVhbCB0byAxNgotCi0gICAgVGhpcyB3YXMgb3JpZ2luYWxseSBwYXJ0IG9mIFRob21hcyBHbGVpeG5lcidzIHBhdGNoIGZvcgotICAgIGFkZGluZyBzdXBwb3J0IGZvciA0S2lCIHBhZ2VzLgotICAgIFRoaXMgaXMgbm90IHBhcnQgb2YgdGhlIFUtQm9vdCBOQU5EIGRyaXZlciBzbyB1cGRhdGluZyB0aGUKLSAgICBkcml2ZXIgd2l0aCB0aGlzIHRvIHN5bmMgdXAgd2l0aCB0aGUga2VybmVsIE5BTkQgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgMzZlMGI5OGVjODMyYmI1ZWM0MmQ2ZTI0OTA1OGQ1Yjg0Zjc1ZGZmOAotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglTYXQgTm92IDcgMTQ6MjQ6MjAgMjAwOSAtMDUwMAotCi0gICAgTkFORDogUmVtb3ZlIGNvbW1lbnRlZCBvdXQgY29kZQotCi0gICAgUGF0Y2ggcmVtb3ZlcyBhbHJlYWR5IGNvbW1lbnRlZCBvdXQgZGVhZCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA0ZjQxZTdlYTFhMTdiYTcyMDdjYTQxMzc5YmYzNDRiMzE3ZTcyYzEyCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVNhdCBOb3YgNyAxNDoyNDowNiAyMDA5IC0wNTAwCi0KLSAgICBOQU5EOiBDb3JyZWN0IHRoZSAiY2hpcF9zaGlmdCIgY2FsY3VsYXRpb24KLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgImNoaXBfc2hpZnQiIGNhbGN1bGF0aW9uIGluIHRoZQotICAgIE5BTkQgZHJpdmVyLiBUaGlzIGlzIGJlaW5nIGRvbmUgdG8gc3luYyB1cCB0aGUgTkFORCBkcml2ZXIgd2l0aAotICAgIHRoZSBrZXJuZWwgTkFORCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCBhYWE4ZWVjNTMyODc2YzQ3YWNmZDMxYmY5YjU3M2EwMGVhYWQ5MmFlCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CUZyaSBPY3QgMzAgMTM6NTE6MjMgMjAwOSAtMDQwMAotCi0gICAgTkFORDogVXBkYXRlIHRvIHN1cHBvcnQgNjQgYml0IGRldmljZSBzaXplCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgTkFORHMgZ3JlYXRlciB0aGFuIDIgR0IuCi0gICAgUGF0Y2ggaXMgYmFzZWQgb24gdGhlIE1URCBOQU5EIGRyaXZlciBpbiB0aGUga2VybmVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTgxZDA0ZjE0ZDdhMzliNjNkNDE4ZTJhMjFlNDQxMDEyMzMwOTZkMQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVGh1IE9jdCAxNSAxMDo0ODoxOCAyMDA5IC0wNTAwCi0KLSAgICBjbWRfbmFuZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDk1NzRmZDYzYTk3ZDA4MGUzNzlmMzBiNmE4MWExMjIxZWFlYjc5N2UKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVRodSBPY3QgMTUgMTA6NDg6MTcgMjAwOSAtMDUwMAotCi0gICAgY21kX25hbmQ6IFJlbW92ZSBkdXBsaWNhdGUgaW5jbHVkZQotCi0gICAgQWxzbyByZW1vdmUgdmFndWUsIHVubmVjZXNzYXJ5IGNvbW1lbnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBjZGJkYmU2NWY1ZjAwNmNiYTIwOGFjY2VlNWExMjZjNjU5ZDRiODY3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgTm92IDEzIDA4OjUyOjIxIDIwMDkgLTA2MDAKLQotICAgIHBwYy84NXh4OiBGaXggaG93IHdlIGRldGVybWluZSB0aGUgbnVtYmVyIG9mIENBTSBlbnRyaWVzCi0KLSAgICBXZSB3ZXJlIGluY29ycmVjdGx5IHVzZSB0aGUgbWF4IENBTSBzaXplIGFzIHRoZSBudW1iZXIgb2YgZW50cmllcyBpbgotICAgIHRoZSBhcnJheSBmb3Igc2V0dGluZyB1cCB0aGUgYWRkcm1hcC4gIFdlIHNob3VsZCBiZSB1c2luZyB0aGUgTkVOVFJZCi0gICAgZmllbGQgd2hpY2ggaXMgdGhlIGxvdyAxMi1iaXRzIG9mIFRMQjFDRkcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmJkNDdiNjc1M2IwODE2MjQzNmQ5Y2NhZDFlNjNjOGQ0M2VkZTU0YwotQXV0aG9yOiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgotRGF0ZToJVGh1IE5vdiAxMiAxNTozNTowOCAyMDA5ICswMjAwCi0KLSAgICBzbWM5MTF4OiBtYWtlIHNtYzkxMXhfaW5pdGlhbGl6ZSByZXR1cm4gY29ycmVjdCB2YWx1ZQotCi0gICAgTWFrZSBzbWM5MTF4X2luaXRpYWxpemUgcmV0dXJuIC0xIG9uIGVycm9yIGFuZCBudW1iZXIgb2YgaW50ZXJmYWNlcwotICAgIGRldGVjdGVkIG90aGVyd2lzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Ci0gICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYzQ0ZWZjZjk3YjMzNWRjZWY3ZDAxNGY2NWI3ZDMwOTRlNzlhZGIxMwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgTm92IDEyIDIyOjI2OjAyIDIwMDkgLTA1MDAKLQotICAgIHNtYzkxMXhfZWVwcm9tOiBmaXggYnVpbGRpbmcgYWZ0ZXIgc21jOTExeCBvdmVyaGF1bAotCi0gICAgV2hlbiB0aGUgc21jOTExeCBkcml2ZXIgd2FzIGNvbnZlcnRlZCB0byBORVRfTVVMVEksIHRoZSBzbWM5MTF4IGVlcHJvbSB3YXMKLSAgICBtaXNzZWQuICBUaGUgY29uZmlnIG9wdGlvbiBuZWVkZWQgdXBkYXRpbmcgYXMgd2VsbCBhcyBvdmVyaGF1bGluZyBvZiB0aGUKLSAgICByZXJnaXN0ZXIgcmVhZC93cml0ZSBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgVGVzdGVkLWJ5OiBNaWtlIFJhcG9wb3J0IDxtaWtlLnJhcG9wb3J0QGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgM2FkOTVkZWIzMGFjNzNiZDU3ZTk2NmQzMjEyMTVhMTdkMzIzNmY5ZgotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAxMiAwNzoyNjozNyAyMDA5ICswODAwCi0KLSAgICBmc2wtZGRyOiBGaXggdGhlIGNoaXAtc2VsZWN0IGludGVybGVhdmluZyBpc3N1ZQotCi0gICAgY29tbWl0IDE1NDJmYmRlZWMwZDFlMmE2ZGYxMzE4OWRmOGRjYjFjZTg4MDJiZTMKLSAgICBpbnRyb2R1Y2VkIG9uZSBuZXcgYnVnIHRvIGNoaXAtc2VsZWN0IGludGVybGVhdmluZy4KLQotICAgIFNpbmdsZSBERFIgY29udHJvbGxlciBhbHNvIGNhbiBkbyB0aGUgY2hpcC1zZWxlY3QKLSAgICBpbnRlcmxlYXZpbmcgaWYgdGhlcmUgaXMgZHVhbC1yYW5rIG9yIHF1YWwtcmFuayBESU1Ncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDY1MWVmOTBmYTZjYTgyNGM4ZTU4MWFlZWY5ZTA0YmJiZTdmN2U5Y2UKLUF1dGhvcjogamF2aWVyIE1hcnRpbiA8amF2aWVyLm1hcnRpbkB2aXN0YS1zaWxpY29uLmNvbT4KLURhdGU6CVRodSBPY3QgMjkgMDg6MjI6NDMgMjAwOSArMDEwMAotCi0gICAgbXhjX2ZlYzogYXZvaWQgZnJlZSgpIGNhbGxzIHRvIGFscmVhZHkgZnJlZWQgcG9pbnRlcnMuCi0KLSAgICBTb21ldGltZXMsIGluc2lkZSBOZXRMb29wLCBldGhfaGFsdCgpIGlzIGNhbGxlZCBiZWZvcmUgZXRoX2luaXQoKSBoYXMKLSAgICBiZWVuIGNhbGxlZC4gVGhpcyBpcyBoYXJtbGVzcyBleGNlcHQgZm9yIGZyZWUoKSBjYWxscyB0byBwb2ludGVycwotICAgIHdoaWNoIGhhdmUgbm90IGJlZW4gYWxsb2NhdGVkIHlldC4KLQotICAgIFRoaXMgcGF0Y2ggaW5pdGlhbGl6ZXMgdGhvc2UgcG9pbnRlcnMgdG8gTlVMTCBhbmQgYWxsb2NhdGVzIHRoZW0gb25seQotICAgIHRoZSBmaXJzdCB0aW1lLiBUaGlzIHdheSB3ZSBjYW4gZ2V0IHJpZCBvZiBmcmVlIGNhbGxzIGluIGhhbHQgY2FsbGJhY2suCi0KLSAgICBUaGlzIGhhcyBiZWVuIHRlc3RlZCBpbiBpLk1YMjcgTGl0ZWtpdCBib2FyZCBhbmQgZWxkay00LjIgdG9vbGNoYWlucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphdmllciBNYXJ0aW4gPGphdmllci5tYXJ0aW5AdmlzdGEtc2lsaWNvbi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGU4ZjE1NDZhODhiNGFkZTZhOTEwYzRhNzk1OGE3NzRlZTFiNDAwMjMKLUF1dGhvcjogamF2aWVyIE1hcnRpbiA8amF2aWVyLm1hcnRpbkB2aXN0YS1zaWxpY29uLmNvbT4KLURhdGU6CVRodSBPY3QgMjkgMDg6MTg6MzQgMjAwOSArMDEwMAotCi0gICAgbXhjX2ZlYzogZml4IHNvbWUgZXJyb25lb3VzIFBIWSBhY2Nlc3Nlcy4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgZXJyb25lb3VzIGFjY2VzcyB0byB0aGUgZXRoZXJuZXQgUEhZIHdoaWNoIGJyb2tlIHRoZSBkcml2ZXIuCi0gICAgMS4gU2VsZWN0b3IgZmllbGQgaW4gdGhlIGF1dG8tbmVnb3RpYXRpb24gcmVnaXN0ZXIgbXVzdCBiZSAweDAwMDAxIGZvcgotICAgIHVzaW5nIDgwMi4zLCBub3QgMHgwMDAwMCB3aGljaCBpcyByZXNldmVkLgotICAgIDIuIEFjY2VzcyB0byB0aGUgUEhZIGFkZHJlc3Mgc3BlY2lmaWVkIGJ5IENPTkZJR19GRUNfTVhDX1BIWUFERFIsIG5vdAotICAgIDB4MCBmaXhlZCBhZGRyZXNzLgotCi0gICAgVGhpcyBoYXMgYmVlbiB0ZXN0ZWQgaW4gaS5NWDI3IExpdGVraXQgYm9hcmQgYW5kIGVsZGstNC4yIHRvb2xjaGFpbnMuCi0KLSAgICBOb3cgdXNpbmcgcHJvcGVyIGRlZmluZXMgZm9yIGF1dG8tbmVnb3RpYXRpb24gcmVnaXN0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXZpZXIgTWFydGluIDxqYXZpZXIubWFydGluQHZpc3RhLXNpbGljb24uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmODY1ZmNiYmIzNTg1MWU3NWZlZTljM2EzZmE4ZTBmNzFkOWU2NDYzCi1BdXRob3I6IFJvbiBMZWUgPHJvbkBkZWJpYW4ub3JnPgotRGF0ZToJV2VkIEF1ZyA1IDIwOjE0OjAxIDIwMDkgKzAyMDAKLQotICAgIEFSTSBEb24ndCBpbmxpbmUgd2VhayBzeW1ib2xzCi0KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIEdDQyA0LjQgY29tcGxhaW5zIGFib3V0IHRoaXMgbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9uIExlZSA8cm9uQGRlYmlhbi5vcmc+Ci0KLWNvbW1pdCBlZmUxMmJjZWM1NWMzZDc3YjllYWQ1NmU2MjAxMGQyNmI2Njc4MWYzCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgOSAxNDoxNTo0MiAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IEthdG1haTogQWRkIGNoaXBfY29uZmlnIGNvbW1hbmQKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgS2F0bWFpICJib290c3RyYXAiIGNvbW1hbmQgYW5kIHJlcGxhY2VzIGl0Ci0gICAgd2l0aCB0aGUgbm93IGNvbW1vbiBjb21tYW5kICJjaGlwX2NvbmZpZyIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjZGFlZDVkYzMxZjQwMjM2MTBmMTgwZmUxNThlYzhjNmY1ZTg1NWEzCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgOSAxNDoxMzo0MyAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IFN3aXRjaCB0byBJMkMgYnVzIG51bWVyIDAgZm9yIGNoaXBfY29uZmlnIGNvbW1hbmQKLQotICAgIEFsbCBjdXJyZW50bHkgYXZhaWxhYmxlIDR4eCBkZXJpdmF0cyBoYXZlIHRoZSBJMkMgYm9vdHN0cmFwIEVFUFJPTQotICAgIGxvY2F0ZWQgb24gSTJDIGJ1cyBudW1iZXIgMC4gVGhpcyBwYXRjaCBub3cgZmlyc3Qgc2V0cyB0aGlzIGJ1cyBudW1iZXIsCi0gICAgc28gdGhhdCB0aGUgY2hpcF9jb25maWcgY29tbWFuZCBhbHNvIHdvcmtzIGZvciBib2FyZCB3aXRoIG11bHRpcGxlCi0gICAgSTJDIGJ1c3NlcywgbGlrZSBLYXRtYWkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5ODVlZGFjY2M0ZmJhZWY2ZDM1N2QxMDRhZWQwOGY4MzkwNThhMzJmCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglUdWUgT2N0IDI3IDEyOjE5OjExIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIFVCSSBzdXBwb3J0IHRvIFBMVTQwNSBib2FyZHMKLQotICAgIC1hZGQgVUJJIHN1cHBvcnQKLSAgICAtaW5jcmVhc2UgbWFsbG9jJ2FibGUgbWVtb3J5IHNpemUKLSAgICAtY2xlYW51cCBNT05JVE9SfEZMQVNIX0JBU0V8TEVOIGNvbnN0YW50cwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkMTRjN2VjMmI1MWZiOTJjNGE1MjE4YjI5OWI3NzJjM2QxODY1MTBkCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gTm92IDkgMTM6MDk6NTcgMjAwOSAtMDgwMAotCi0gICAgRml4IFNNQzkxMTExIHJlZ3Jlc3Npb246IGxwZDdhNDB4IGJ1aWxkIGZhaWx1cmVzCi0KLSAgICBCb3RoIGxwZDdhNDAwIGFuZCBscGQ3YTQwNCBmYWlsZWQgdG8gY29tcGlsZSBiZWNhdXNlIHRoZXkgaGFkCi0gICAgQ09ORklHX1NNQ19VU0VfSU9GVU5DUyBkZWZpbmVkOgotCi0gICAgZXhhbXBsZXMvc3RhbmRhbG9uZS9zbWM5MTExMV9lZXByb20uYzozODg6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYFNNQ19vdXR3JwotCi0gICAgQWxzbyByZW1vdmVkIGFuIG9ycGhhbmVkIHBhcmVuIGluIGxwZDdhNDA0LmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAxMDMxYWU5NjBjZTZjZTgzMzIxOTAyNzhhMDZlMmQ3MmMyYjI3OTNlCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gTm92IDkgMTQ6MDE6MDggMjAwOSAtMDgwMAotCi0gICAgU01DOTExMTE6IENsZWFuIHVwIFNNQ19pbnggbWFjcm9zIG9uIHhzZW5naW5lIGFuZCB4YWVuaWF4Ci0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBmb2xsb3dpbmcgd2FybmluZ3M6Ci0KLSAgICBDb25maWd1cmluZyBmb3IgeGFlbmlheCBib2FyZC4uLgotICAgIHNtYzkxMTExX2VlcHJvbS5jOiBJbiBmdW5jdGlvbiAncHJpbnRfbWFjYWRkcic6Ci0gICAgc21jOTExMTFfZWVwcm9tLmM6Mjc4OiB3YXJuaW5nOiBzdWdnZXN0IHBhcmVudGhlc2VzIGFyb3VuZCArIG9yIC0gaW4gb3BlcmFuZCBvZiAmCi0gICAgc21jOTExMTFfZWVwcm9tLmM6MjgxOiB3YXJuaW5nOiBzdWdnZXN0IHBhcmVudGhlc2VzIGFyb3VuZCArIG9yIC0gaW4gb3BlcmFuZCBvZiAmCi0gICAgLi4uCi0gICAgQ29uZmlndXJpbmcgZm9yIHhzZW5naW5lIGJvYXJkLi4uCi0gICAgc21jOTExMTFfZWVwcm9tLmM6IEluIGZ1bmN0aW9uICdwcmludF9tYWNhZGRyJzoKLSAgICBzbWM5MTExMV9lZXByb20uYzoyNzg6IHdhcm5pbmc6IHN1Z2dlc3QgcGFyZW50aGVzZXMgYXJvdW5kICsgb3IgLSBpbnNpZGUgc2hpZnQKLSAgICBzbWM5MTExMV9lZXByb20uYzoyODE6IHdhcm5pbmc6IHN1Z2dlc3QgcGFyZW50aGVzZXMgYXJvdW5kICsgb3IgLSBpbnNpZGUgc2hpZnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4MzBjN2I2NzIyYzZhOTc2MjQxMWJmNTJhN2JmMmZhZTRkYzcxZGFiCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gTm92IDkgMTE6NDM6MTggMjAwOSAtMDgwMAotCi0gICAgRml4IENTODkwMCByZWdyZXNzaW9uIG9uIGltcGE3IGJvYXJkCi0KLSAgICBUaGUgZm9sbG93aW5nIGVycm9yIHdhcyBzZWVuIG9uIGltcGE3IGJvYXJkLCBkdWUgdG8gaXRzIHVzZSBvZiBhIDMyLWJpdCBidXMKLSAgICBvbiBDUzg5MDAuCi0gICAgY3M4OTAwLmM6MTM3OjM3OiBlcnJvcjogbWFjcm8gImdldF9yZWdfaW5pdF9idXMiIHBhc3NlZCAyIGFyZ3VtZW50cywgYnV0IHRha2VzIGp1c3QgMQotCi0gICAgVGhpcyBwYXRjaCBnaXZlcyB0aGUgbWFjcm8gdGhlIGNvcnJlY3QgbnVtYmVyIG9mIGFyZ3VtZW50cwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGU1YzVkOWUwODM0YmFjZjFjNDc4N2ZhNzZjYzRlMzY5ZjI1OTdjZjUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE5vdiAxIDIyOjM5OjU2IDIwMDkgLTA1MDAKLQotICAgIGNsYXJpZnkgZXRoIGRyaXZlciBoYWx0L3JlY3Ygc3RlcHMKLQotICAgIFRoZSBkZXYtPmhhbHQoKSBmdW5jIGNhbiBiZSBjYWxsZWQgYXQgYW55IHRpbWUsIGFuZCB0aGUgZGV2LT5yZWN2KCkgZnVuYwotICAgIGRvZXMgbm90IG5lZWQgdG8gdXNlIE5ldFJ4UGFja2V0c1tdIHdoZW4gY2FsbGluZyBOZXRSZWNlaXZlKCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDQ5N2FiMGVlYzVlMWUyZGZjY2MxNDFhNDQ4NWNkNmI5NDBlMTQyNGEKLUF1dGhvcjogSHVpLlRhbmcgPHpldGFsYWJzQGdtYWlsLmNvbT4KLURhdGU6CVRodSBOb3YgNSAwOTo1ODo0NCAyMDA5ICswODAwCi0KLSAgICBGaXggY3M4OTAwIGRldi0+cHJpdiBub3QgaW5pdCBpc3N1ZQotCi0gICAgRW5zdXJlIGFsbCBDUzg5MDAgZGF0YSBzdHJ1Y3R1cmVzIGFyZSBhc3NpZ25lZCBiZWZvcmUgYWNjZXNzaW5nIGRldmljZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVpLlRhbmcgPHpldGFsYWJzQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNGZlNTE5M2Q0NjRlY2RhYzI2ZGRjNzFiMTM1MWJlNWI4NmJiZmYyOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDMgMTQ6MzQ6NDUgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiA0NHhfc3BkX2RkcjIuYzogRml4IHJlZ2lzdGVyIG1hY3JvIEVDQ0NSIC0+IEVDQ0VTIChTRFJBTV9FQ0NFUykKLQotICAgIFRoaXMgZXJyb3Igb25seSBhcHBlYXJzIHdoZW4gREVCVUcgaXMgZW5hYmxlZCBpbiB0aGlzIGRyaXZlci4gVGhhdCdzIHdoeQotICAgIGl0IHdlbnQgdW5ub3RpY2VkIHRpbGwgbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTE2ZWQ5NDQ0ZDNhYjdiNWNkNjMxMjU1NzAwNWYyYTc2NGE4YmFmNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgT2N0IDI5IDE4OjM3OjQ1IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQ2FueW9ubGFuZHM6IENoYW5nZSBFQkMgYnVzIGNvbmZpZyB0byBkcml2ZSBhbHdheXMgKG5vIGhpZ2gteikKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIG9ubHkgc2VlbiB2ZXJ5IG9jY2FzaW9uYWxseSBvbiBDYW55b25sYW5kcy4KLSAgICBUaGUgTk9SIGZsYXNoIGludGVyZmFjZSAoQ0ZJIGRyaXZlcikgZG9lc24ndCB3b3JrIHJlbGlhYmx5IGluIGFsbCBjYXNlcy4KLSAgICBFcmFzaW5nIGFuZC9vciBwcm9ncmFtbWluZyBzb21ldGltZXMgZG9lc24ndCB3b3JrLiBTb21ldGltZXMgd2l0aAotICAgIGFuIGVycm9yIG1lc3NhZ2UsIGxpa2UgImZsYXNoIG5vdCBlcmFzZWQiIHdoZW4gdHJ5aW5nIHRvIHByb2dyYW0gYW4KLSAgICBhcmVhIHRoYXQgc2hvdWxkIGhhdmUganVzdCBiZWVuIGVyYXNlZC4gQW5kIHNvbWV0aW1lcyB3aXRob3V0IGFueSBlcnJvcgotICAgIG1lc3NhZ2VzLiBBcyBtZW50aW9uZWQgYWJvdmUsIHRoaXMgcHJvYmxlbSB3YXMgb25seSBzZWVuIHJhcmVseSBhbmQgd2l0aAotICAgIHNvbWUgUExMIGNvbmZpZ3VyYXRpb24gKENQVSBzcGVlZCwgRUJDIHNwZWVkKS4KLQotICAgIE5vdyBJIHNwb3R0ZWQgdGhpcyBwcm9ibGVtIGEgZmV3IHRpbWVzLCB3aGVuIHJ1bm5pbmcgbXkgQ2FueW9ubGFuZHMgd2l0aAotICAgIHRoZSBmb2xsb3dpbmcgc2V0dXAgKGNoaXBfY29uZmlnKToKLQotICAgIDEwMDAtbm9yCSAgICAgLSBOT1IgIENQVToxMDAwIFBMQjogMjAwIE9QQjogMTAwIEVCQzogMTAwCi0KLSAgICBDaGFuZ2luZyB0aGUgRUJDIGNvbmZpZ3VyYXRpb24gdG8gbm90IHJlbGVhc2UgdGhlIGJ1cyBpbnRvIGhpZ2gKLSAgICBpbXBlZGFuY2Ugc3RhdGUgaW5iZXR3ZWVuIHRoZSB0cmFuc2ZlcnMgKEFUQywgRFRDIGFuZCBDVEMgYml0cyBzZXQgdG8gMQotICAgIGluIEVCQzBfQ0ZHKSBzZWVtcyB0byBmaXggdGhpcyBwcm9ibGVtLiBJIGhhdmVuJ3Qgc2VlbiBhbnkgZmFpbHVyZQotICAgIGFueW1vcmUgd2l0aCB0aGlzIHBhdGNoIGFwcGxpZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IERhdmlkIE1pdGNoZWxsIDxkbWl0Y2hlbGxAYW1jYy5jb20+Ci0gICAgQ2M6IEplZmYgTWFubiA8TWFubkpAZW1iZWRkZWRwbGFuZXQuY29tPgotCi1jb21taXQgNTZmOWIzOWQxZjVkM2M1MWU0YjE5NzkyYWRiNjViZDkzYThiNmZjYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDkgMTM6MDE6MTkgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggTkFORCBib290aW5nIHRhcmdldHMgYWZ0ZXIgNHh4IGxpbmtlciBzY3JpcHQgY29uc29saWRhdGlvbgotCi0gICAgU29tZWhvdyBJIG1pc3NlZCB0aGUgTkFORCBib290aW5nIHRhcmdldHMgaW4gdGhlIDR4eCBsaW5rZXIgc2NyaXB0Ci0gICAgY29uc29saWRhdGlvbiBwYXRjaHNldC4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOWE4MWM2MTI0OWQ4MzYxZWQ1N2Q4MWY0OTYxMjFmM2ViOWMwZWVlOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgT2N0IDI5IDE2OjU0OjUyIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIGR1cGxpY2F0ZWQgaXNfcGNpX2hvc3QoKSBmdW5jdGlvbnMKLQotICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIHdlYWsgZGVmYXVsdCBmdW5jdGlvbiBmb3IgaXNfcGNpX2hvc3QoKSwKLSAgICByZXR1cm5pbmcgMS4gVGhpcyBpcyB0aGUgZGVmYXVsdCBiZWhhdmlvdXIsIHNpbmNlIG1vc3QgYm9hcmRzIG9ubHkKLSAgICBpbXBsZW1lbnQgUENJIGhvc3QgZnVuY3Rpb25hbGl0eS4gVGhpcyB3ZWFrIGRlZmF1bHQgY2FuIGJlIG92ZXJyaWRkZW4KLSAgICBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24gaWYgbmVlZGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjBiODY3NDYyYzU2OWU3YWNjZDZmNzhjOTQyY2JhYjAyODExNmVjZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgT2N0IDI5IDE1OjA0OjM1IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQ29uc29saWRhdGUgNHh4IFBDSWUgYm9hcmQgc3BlY2lmaWMgY29uZmlndXJhdGlvbgotCi0gICAgVGhpcyBwYXRjaCBjb25zb2xpZGF0ZXMgdGhlIFBQQzR4eCBib2FyZCBzcGVjaWZpYyBQQ0llIGNvbmZpZ3VyYXRpb24KLSAgICBjb2RlLiBUaGlzIHdheSB0aGUgZHVwbGljYXRlZCBjb2RlIGlzIHJlbW92ZWQuIEJvYXJkcyBjYW4gaW1wbGVtZW50IGEKLSAgICBzcGVjaWFsLCBub24gc3RhbmRhcmQgYmVoYXZpb3VyIChlLmcuIG51bWJlciBvZiBQQ0llIHNsb3RzLCBldGMpIGJ5Ci0gICAgb3ZlcnJpZGluZyB0aGUgd2VhayBkZWZhdWx0IGZ1bmN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDI1NzkzZjc2YmY5YTdiZTU5Yzk0MTVlZjBmNzhkMDM0ZThkNTNkYWUKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglUaHUgT2N0IDI5IDEyOjI5OjM3IDIwMDkgKzAxMDAKLQotICAgIEFSTTogVXNlIExpbnV4IHZlcnNpb24gZm9yIHVuYWxpZ25lZCBhY2Nlc3MgY29kZQotCi0gICAgVGhlIGFzbS1hcm0vdW5hbGlnbmVkLmggaW5jbHVkZXMgbGludXgvdW5hbGlnbmVkL2FjY2Vzc19vay5oCi0gICAgVGhpcyBmaWxlIGlzIHVuc2FmZSB0byBiZSB1c2VkIG9uIEFSTSwgc2luY2UgaXQgZG9lcyBhbiB1bmFsaWduZWQgbWVtb3J5Ci0gICAgYWNjZXNzZXMgd2hpY2ggZmFpbHMgb24gQVJNLgotCi0gICAgTG9va2luIGF0IExpbnV4IHRoZSBiYXNpYyBkaWZmZXJlbmNlIHNlZW1zIHRvIGJlIHRoZSBoZWFkZXIKLSAgICAiaW5jbHVkZS9hc20tYXJtL3VuYWxpZ25lZC5oIi4gVGhlIExpbnV4IHZlcnNpb24gb2YgInVuYWxpZ25lZC5oIgotICAgIGRvZXMgKm5vdCogaW5jbHVkZSAiYWNjZXNzX29rLmgiIGF0IGFsbC4gSXQgaW5jbHVkZXMgImxlX2J5dGVzaGlmdC5oIgotICAgIGFuZCAiYmVfYnl0ZXNoaWZ0LmgiIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgLS0KLSAgICAgaW5jbHVkZS9hc20tYXJtL3VuYWxpZ25lZC5oCSAgICB8CSAzIC0KLSAgICAgaW5jbHVkZS9saW51eC91bmFsaWduZWQvYmVfYnl0ZXNoaWZ0LmggfAk3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAgICAgaW5jbHVkZS9saW51eC91bmFsaWduZWQvbGVfYnl0ZXNoaWZ0LmggfAk3MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAgICAgMyBmaWxlcyBjaGFuZ2VkLCAxNDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotICAgICBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9saW51eC91bmFsaWduZWQvYmVfYnl0ZXNoaWZ0LmgKLSAgICAgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvbGludXgvdW5hbGlnbmVkL2xlX2J5dGVzaGlmdC5oCi0KLWNvbW1pdCA2ZDZlN2M1M2Q1Yzc1ZTVlMjQ4NDFjNTUwNmY0ZWQ5ZDgyYWRlZTA5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgTm92IDQgMTg6MDI6MTAgMjAwOSAtMDYwMAotCi0gICAgcHBjLzg1eHg6IEZpeCBpbmNsdXNpb24gb2YgODN4eCBpbW1hcCBpbiA4NXh4IGJ1aWxkcwotCi0gICAgVGhlIG5hbmRfYm9vdF9mc2xfZWxiYy5jIGlzIHNoYXJlZCBiZXR3ZWVuIDgzeHggJiA4NXh4IGhvd2V2ZXIgd2Ugc2hvdWxkCi0gICAgbm90IGJlIGluY2x1ZGluZyB0aGUgaW1tYXBfODN4eC5oIHdoZW4gYnVpbGRpbmcgODV4eC4gIFdlIGNhbiBqdXN0IGdldAotICAgIHRoaXMgYWxsIGZyb20gY29tbW9uLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxMDdiNTc5Yzc1MjU2MjEyZDRiZjhiOTllZThkNjhlMDA3OGYzNjQ2Ci1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgNCAxNzozNDowNCAyMDA5IC0wNjAwCi0KLSAgICA4Nnh4OiBSZW1vdmUgcmVkdW5kYW50IGNvZGUgaW4gaW5pdGRyYW0KLQotICAgIFRoZSBzYW1lIGNvZGUgZXhpc3RzIGJvdGggaW5zaWRlIGFuICNpZmRlZiBhbmQgb3V0c2lkZSBvZiBpdC4KLSAgICBSZW1vdmUgdGhlIGV4dHJhIGNvZGUgZm9yIGFsbCB0aGUgODZ4eCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDcxNWQ4Zjc2MDhmNzdjOTNmMTgwN2EwMzI2NDQ4OTNmZDViNmQwOGIKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBOb3YgMiAwOTowNTo0OSAyMDA5IC0wNjAwCi0KLSAgICBmc2xfcGNpX2luaXRfcG9ydCBlbmQtcG9pbnQgaW5pdGlhbGl6YXRpb24gaXMgYnJva2VuCi0KLSAgICBjb21taXQgNzBlZDg2OWUgYnJva2UgZnNsIHBjaWUgZW5kLXBvaW50IGluaXRpYWxpemF0aW9uLgotICAgIFJldHVybmluZyAwIGlzIG5vdCBjb3JyZWN0LiAgVGhlIGZ1bmN0aW9uIG11c3QgcmV0dXJuIHRoZSBmaXJzdCBmcmVlCi0gICAgYnVzIG51bWJlciBmb3IgdGhlIG5leHQgY29udHJvbGxlci4KLQotICAgIGZzbF9wY2lfaW5pdCgpIG11c3Qgc3RpbGwgYmUgY2FsbGVkIGFuZCBhIGJ1cyBhbGxvY2F0ZWQgZXZlbiBpZiB0aGUKLSAgICBjb250cm9sbGVyIGlzIGFuIGVuZC1wb2ludC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMDE0NzFkNTM4ZmIxNjNmNDcyYTc2OWYyMTI2N2Q3Njc2YzkxMjY3YwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE5vdiA0IDAxOjI5OjA0IDIwMDkgLTA2MDAKLQotICAgIFJldmVydCAicHBjLzg1eHgvcGNpOiBmc2xfcGNpX2luaXQ6IHBjaWUgYWdlbnQgbW9kZSBzdXBwb3J0IgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCA3MGVkODY5ZWE1ZjZiMWQxM2Q3YjE0MGM4M2VjMGRjZDhhMTI3ZGRjLgotCi0gICAgVGhlcmUgaXNuJ3QgYW55IG5lZWQgdG8gbW9kaWZ5IHRoZSBBUEkgZm9yIGZzbF9wY2lfaW5pdF9wb3J0IHRvIHBhc3MgdGhlCi0gICAgc3RhdHVzIG9mIGhvc3QvYWdlbnQoZW5kLXBvaW50KSBzdGF0dXMuICBXZSBjYW4gZGV0ZXJtaW5lIHRoYXQKLSAgICBpbnRlcm5hbGx5IHRvIGZzbF9wY2lfaW5pdF9wb3J0LiAgUmV2ZXJ0IHRoZSBwYXRjaCB0aGF0IG1ha2VzIHRoZSBBUEkKLSAgICBjaGFuZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMmNkOTVhMjVjYjBlZTgyMThiMjcxZDIzZDY0ZmIzZjcxOWFjNTM5MAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDI3IDE2OjIwOjA1IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIGJvYXJkIHNwZWNpZmljIGxpbmtlciBzY3JpcHRzIGZyb20gbW9zdCBQUEM0eHggYm9hcmRzCi0KLSAgICBBbGwgdGhlc2UgbGlua2VyIHNjcmlwdHMgY2FuIGJlIHJlbW92ZWQgc2luY2UgdGhlIG5ldyBjb21tb24gcHBjNHh4Ci0gICAgbGlua2VyIHNjcmlwdCBzaG91bGQgYmUgYWJsZSB0byBoYW5kbGUgYWxsIG9mIHRob3NlIGJvYXJkcy4KLQotICAgIFBsZWFzZSB0ZXN0IGFuZCByZXBvcnQgcHJvYmxlbXMuIFRoYW5rcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQ2NDk5MTNlYTVmNDQwZDc1NmQxNTBhNmZkZjJmYjJlOGVjYjc1ZmQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyNyAxNjoxMToyNiAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IEFkZCBjb21tb24gcHBjNHh4IGxpbmtlciBzY3JpcHQKLQotICAgIFRoaXMgbGlua2VyIHNjcmlwdCBjYW4gYmUgdXNlZCBieSBhbGwgUFBDNHh4IHBsYXRmb3Jtcy4gSXQgd29ya3MgZm9yCi0gICAgUFBDNDA1IGFuZCBQUEM0NDAgcGxhdGZvcm1zLiBCb2FyZHMgd2hpY2ggbmVlZCBhIGJvYXJkIHNwZWNpZmljIGxpbmtlcgotICAgIHNjcmlwdCBjYW4gb3ZlcnJpZGUgdGhpcyBkZWZhdWx0IGxpbmtlciBzY3JpcHQgaW4gYm9hcmQvKi9jb25maWcubWsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiMTI0NWRkM2M2NDA5Yzc0M2Y2YzI3NjhkMDBlOTA5YTRjOGNjNGVhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBPY3QgMjcgMTY6MTY6MTMgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgY3VzdG9tIGxpbmtlciBzY3JpcHQgdG8gYm9hcmQvKi9jb25maWcubWsKLQotICAgIFRoZXNlIGJvYXJkcyBoYXZlIHNwZWNpYWwgbGlua2VyIHNjcmlwdHMgcmlnaHQgbm93LiBXZSBjYW4ndCB1c2UgdGhlCi0gICAgY29tbW9uIDR4eCBsaW5rZXIgc2NyaXB0IGhlcmUuIFNvIG92ZXJycmlkZSB0aGUgbGlua2VyIHNjcmlwdCAoTERTQ1JJUFQpCi0gICAgaW4gYm9hcmQvKi9jb25maWcubWsgYW5kIGNob29zZSB0aGUgYm9hcmQgc3BlY2lmaWMgdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGNlYWE2MmE2ZjAyMzdhOGRkZDJhNWY2NTllNjUzNWZjZDA1NDMzMmYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyNyAxNTo1NzoyNCAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBwcm9ibGVtcyBpbiBzb21lIHBwYzR4eCBib2FyZCBNYWtlZmlsZXMKLQotICAgIFNvbWUgNHh4IE1ha2VmaWxlcyBkaWRuJ3QgYWRkICQoU09CSikgdG8gdGhlaXIgYm9hcmQgbGlicmFyeS4gVGhpcyB3YXMKLSAgICBubyB0aWxsIG5vdyBwcm9ibGVtLCBzaW5jZSB0aG9zZSBib2FyZHMgaW5jbHVkZWQgdGhpcyBvYmplY3QgKGluaXQubwotICAgIG1vc3Qgb2YgdGhlIHRpbWUpIGRpcmVjdGx5IGZyb20gdGhlaXIgbGlua2VyIHNjcmlwdHMuIFRoaXMgcGF0Y2ggY2xlYW4KLSAgICB0aGlzIHVwLCBzbyB0aGF0IGFsbCBvYmplY3RzIGFyZSBub3cgY29sbGVjdGVkIGluIHRoZSBib2FyZCBsaWJyYXJ5LiBUaGlzCi0gICAgaXMgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSB1cGNvbWluZyBQUEM0eHggbGlua2VyIHNjcmlwdCBjb25zb2xpZGF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTBmZjFmMTI5YTBlMWE0NjZlNGY4NTY4ZmNlMTJiN2I4NDU3OGU0YwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDI3IDExOjIwOjUzIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogc2MzOiBSZW1vdmUgdW5yZWZlcmVuY2VkIGV4dGVybmFsIGRlY2xhcmF0aW9ucyBmcm9tIHNjMy5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgN2VjMWZlZGRhNmFjNTUxYzY3ZjIyMTRjZWQ5NGU0YjQ5YjY2ODBlNAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDI3IDExOjQ2OjIzIDIwMDkgKzAxMDAKLQotICAgIG1rY29uZmlnOiBDcmVhdGUgYm9hcmQgZGlyZWN0b3J5IChDT05GSUdfQk9BUkRESVIpIGluIGluY2x1ZGUvY29uZmlnLmgKLQotICAgIFRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgbWtjb25maWcgc2NyaXB0IHRvIGF1dG9tYXRpY2FsbHkgY3JlYXRlIGEgZGVmaW5lCi0gICAgZm9yIHRoZSBib2FyZCBkaXJlY3RvcnkgaW4gaW5jbHVkZS9jb25maWcuaDoKLQotICAgICNkZWZpbmUgQ09ORklHX0JPQVJERElSIGJvYXJkL2FtY2MvY2FueW9ubGFuZHMKLQotICAgIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgUFBDNHh4IGxpbmtlciBzY3JpcHQgY29uc29saWRhdGlvbiwKLSAgICB3aGVyZSB0aGUgUFBDNDQwIHBsYXRmb3JtcyBuZWVkIHRvIGluY2x1ZGUgYSBib2FyZCBzcGVjaWZpYyBmaWxlIGluCi0gICAgdGhlIGNvbW1vbiBsaW5rZXIgc2NyaXB0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZmY4ODIyOTU0OWUwOGZkZDNmOTEyN2MxY2M0ZGIxMWEzNTc2MjUwZgotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IE9jdCAzMSAwNzo1OTo1NSAyMDA5ICswODAwCi0KLSAgICBwcGMvODV4eDogRml4IG1pc2MgTDIgY2FjaGUgZW5hYmxpbmcgYnVnCi0KLSAgICBXZSBuZWVkIGxvb3AtY2hlY2sgdGhlIGZsYXNoIGNsZWFyIGxvY2sgYW5kIGVuYWJsZSBiaXQgZm9yIEwyIGNhY2hlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgY2QxMmY2MTVlNGRkMWRkMjRjYWFiOTNmNDE1Nzg5NDc4M2M2YzFjMAotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAyMyAxMjowMzoxNiAyMDA5ICswMjAwCi0KLSAgICBtcGM1Mnh4OiBhZGQgc3VwcG9ydCBmb3IgdGhlIElQRUswMSBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBib2FyZCBJUEVLMDEgYmFzZWQgb24gdGhlIE1QQzUyMDAuCi0gICAgVGhlIEZ1dGppdHN1IExpbWUgZ3JhcGhpY3MgY29udHJvbGxlciBpcyBjb25maWd1cmVkIGluIDE2IGJwcCBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZGVueC5kZT4KLQotY29tbWl0IDIyOWI2ZGNlNjc1YzcyOWVlMGVhMmQ3YjYxZmJjZGE4OWIyM2I2YjgKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMjMgMTI6MDM6MTUgMjAwOSArMDIwMAotCi0gICAgdmlkZW86IG1iODYyeHg6IGFkZCBvcHRpb24gVklERU9fRkJfMTZCUFBfV09SRF9TV0FQIGZvciBJUEVLMDEKLQotICAgIEluIDE2IGJwcCBtb2RlLCB0aGUgbmV3IElQRUswMSBib2FyZCBvbmx5IHJlcXVpcmVzIHN3YXBwaW5nIG9mIEQxNiB3b3JkcwotICAgIGZvciBEMzIgYWNjZXNzZXMgZHVlIHRvIHRoZSBkaWZmZmVyZW50IGNvbm5lY3RpbmcgdG8gdGhlIEdEQyBidXMuIFRoaXMKLSAgICBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBjb25maWd1cmF0aW9uIG9wdGlvbiBWSURFT19GQl8xNkJQUF9XT1JEX1NXQVAsCi0gICAgd2hpY2ggc2hvdWxkIGJlIHNldCBmb3IgYWxsIGJvYXJkIHVzaW5nIHRoZSBtYjg2Mnh4IGluIDE2IGJwcCBtb2RlLiBGb3IKLSAgICB0aGUgSVBFSzAxLCBWSURFT19GQl8xNkJQUF9QSVhFTF9TV0FQIHNob3VsZCBub3QgYmUgc2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZGVueC5kZT4KLQotY29tbWl0IDVkMTZjYTg3MTAwZWE1OGM5M2M0NmI5ZjAyNjQ5ODFlYWVkNDk1NjgKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAyMyAxMjowMzoxNCAyMDA5ICswMjAwCi0KLSAgICB2aWRlbzogbWI4NjJ4eDogYWRkIG9wdGlvbiBDT05GSUdfVklERU9fTUI4NjJ4eF9BQ0NFTCBmb3IgMzJicHAgbW9kZQotCi0gICAgVGhlIG5ldyBJUEVLMDEgYm9hcmQgY2FuIHVzZSB0aGUgMzIgYnBwIG1vZGUgZm9yIHRoZSBMaW1lIGdyYXBoaWNzCi0gICAgY29udHJvbGxlci4gRm9yIHRoaXMgbW9kZSwgdmlkZW8gYWNjZWxhcmF0aW9uIGRvZXMgbm90IHdvcmsuIFRoaXMgcGF0Y2gKLSAgICBtYWtlcyB0aGUgYWNjZWxhcmF0aW9uIGNvbmZpZ3VyYWJsZSB2aWEgQ09ORklHX1ZJREVPX01CODYyeHhfQUNDRUwsCi0gICAgd2hpY2ggaXMgZW5hYmxlZCBmb3IgdGhlIGx3bW9uNSBhbmQgdGhlIHNvY3JhdGVzIGJvYXJkIGZvciBiYWNrd2FyZAotICAgIGNvbXBhdGliaWxpdHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZGVueC5kZT4KLQotY29tbWl0IGMyOGQzYmJlOTYzZjRjNTc5MzdkNmZkYzFkZDYzY2QzNTYyYzE0N2MKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMjMgMTI6MDM6MTMgMjAwOSArMDIwMAotCi0gICAgdmlkZW86IG1iODYyeHg6IGltcHJvdmUgYm9hcmQtc3BlY2lmaWMgTGltZSBjb25maWd1cmF0aW9uCi0KLSAgICBUbyBhdm9pZCBib2FyZC1zcGVjaWZpYyBjb2RlIGFjY2Vzc2luZyB0aGUgbWI4NjJ4eCByZWdpc3RlcnMgZGlyZWN0bHksCi0gICAgdGhlIHB1YmxpYyBmdW5jdGlvbiBtYjg2Mnh4X3Byb2JlKCkgaGFzIGJlZW4gaW50cm9kdWNlZC4gRnVydGhlcm1vcmUsCi0gICAgdGhlICJDaGFuZ2Ugb2YgQ2xvY2sgRnJlcXVlbmN5IiBhbmQgIlNldCBNZW1vcnkgSS9GIE1vZGUiIHJlZ2lzdGVycwotICAgIGFyZSBub3cgZGVmaW5lZCBieSBDT05GSUdfU1lTX01CODYyeHhfQ0NGIGFuZCBDT05GSUdfU1lTX01CODYyeHhfX01NUiwKLSAgICByZXNwZWN0aXZlbHkuIFRoZSBCU1BzIGZvciB0aGUgc29jcmF0ZXMgYW5kIGx3bW9uNSBib2FyZHMgaGF2ZSBiZWVuCi0gICAgYWRhcHRlZCBhY2NvcmRpbmdseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGRlbnguZGU+Ci0KLWNvbW1pdCAwOGVhNTUwZWVmMzEwZTlkNTlkODNmM2NmZDU3YTkwMjM3M2JmMTdmCi1BdXRob3I6IFZhbGVudGluIFlha292ZW5rb3YgPHlha292ZW5rb3ZAbmlpc3R0LnJ1PgotRGF0ZToJTW9uIE9jdCAyNiAxODo0OTowNiAyMDA5IC0wNDAwCi0KLSAgICBuZXcgUENBOTU2NCBpMmMgYnJpZGdlIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogVmFsZW50aW4gWWFrb3ZlbmtvdiA8eWFrb3ZlbmtvdkBuaWlzdHQucnU+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMDhhMWM2MjU4YzJhMDRjZWFkMzNlYWM1MGQ5NmVhODk5NzlkY2I5NAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgT2N0IDE0IDE5OjI3OjI3IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBUV0kvSTJDOiBpbXBsZW1lbnQgYnVzIHNwZWVkIGdldC9zZXQgZnVuY3Rpb25zCi0KLSAgICBXaGlsZSB3ZSdyZSBoZXJlLCBpbXByb3ZlIHRoZSBzcGVlZCBjYWxjdWxhdGlvbiBhIGJpdCB0byBtYXRjaCB0aGUgSFJNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMzgxNGVhNGYwMDAyNTM2YWM1OTI0ODBiMmNkYWZhMzE5YTE2ZTMyOQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgT2N0IDE0IDE5OjI3OjI2IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBUV0kvSTJDOiBhZGQgdGltZW91dCB0byB0cmFuc2ZlcgotCi0gICAgVGhlIGN1cnJlbnQgdHJhbnNmZXIgY29kZSByZWxpZXMgb24gY3RybGMoKSB0byBhYm9ydCB0cmFuc2ZlcnMsIGJ1dCB0aGlzCi0gICAgcmVxdWlyZXMgdXNlciBpbnRlcmFjdGl2aXR5LiAgTmF0dXJhbGl6ZSB0aGUgcHJvY2VzcyB3aXRoIGEgdGltZW91dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDU5NDM0ZmUyNDM5NjI3NTg3NDJhZjVjYjhlMmNlZDk3NmUxN2MzMDIKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJRnJpIE9jdCAzMCAxMDoxNjoyNyAyMDA5ICswOTAwCi0KLSAgICBzaDogVXBkYXRlIGxvd2xldmVsX2luaXQuUyBvZiBlc3B0LWdpZ2EKLQotICAgIFRoZXJlIHdhcyB0aGUgcG9pbnQgdGhhdCBkaWQgbm90IHVzZSB3cml0ZSBtYWNyby4KLSAgICBDaGFuZ2UgdG8gd3JpdGUgbWFjcm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBmMWNhZTE5NjlkOWU5NzFmYjcyODI3YTU3MzFjZTdlNzUyNDY0YWEyCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CUZyaSBPY3QgMzAgMTA6MDE6MjUgMjAwOSArMDkwMAotCi0gICAgc2g6IE1vdmUgc29tZSBkZWZzIHRvIGNvbnZpbmNlICdwY3JlbCB0b28gZmFyJwotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFRha2FzaGkgWW9zaGlpIDx5b3NoaWkudGFrYXNoaUBnbWFpbC5jb20+Ci0KLWNvbW1pdCAwZjllYWY0YjMyM2VhMGNhOTU5NDRiODRjNzQ2NWI4MWJhNTc1NTE0Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVRodSBPY3QgMTUgMTM6MzY6MzQgMjAwOSArMDkwMAotCi0gICAgc2g6IFJlbW92ZSBtYWxsb2NfYmluX3JlbG9jIGZyb20gbGliX3NoLCBsaWJfbmlvczIgYW5kIGxpYl9uaW9zLgotCi0gICAgQnkgImFybS9taWNyb2JsYXplL25pb3MvbmlvczIvc2g6IFJlbW92ZSByZWxvY2F0aW9uIGZpeHVwcyIKLSAgICAoY29tbWl0OiAwNjMwNTM1ZTJkMDYyZGQ3M2MxY2VjYTVjNjEyNWM4NmQxMTI3YTQ5IiwgZG9lc24ndCBuZWVkCi0gICAgbWFsbG9jX2Jpbl9yZWxvYyBmdW5jdGlvbi4gVGhpcyBjb21taXQgcmVtb3ZlIHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAwNzc1NDM3MjkzYTY5NjNjYjIxMjQ0ZGZhZTY5NzhjYmY2N2M2YmZlCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglXZWQgT2N0IDIxIDIxOjUzOjM5IDIwMDkgLTA3MDAKLQotICAgIEZpeCBETTkwMDAgTUFDIGFkZHJlc3MgaGFuZGxpbmcKLQotICAgIFByb3BlciBiZWhhdmlvciBpcyB0byBwdWxsIE1BQyBhZGRyZXNzIGZyb20gTlZSQU0gaW4gdGhlIGluaXRpYWxpemF0aW9uKCkgYW4KLSAgICBzdHVmZiBpdCBpbiBkZXYtPmFkZHJlc3MsIHRoZW4gcHJvZ3JhbSB0aGUgZGV2aWNlIGZyb20gZGV2LT5hZGRyZXNzIGluCi0gICAgdGhlIGluaXQoKSBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5OGQ5MmQ4YzlmNDAyMTYyOWE0NTI2MWFkNWVjM2YzNTk1ZjNhMjdhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDI4IDIyOjA3OjU2IDIwMDkgKzAxMDAKLQotICAgIHNiYzgzNDk6IGZpeCBpbmNvcnJlY3QgY29tbWVudAotCi0gICAgVGhlIGNvbW1lbnQgZm9yIHRoZSBCUjBfUFJFTElNIHBvcnQgc2l6ZSBpbml0aWFsaXphdGlvbiBpbmNvcnJlY3RseQotICAgIHN0YXRlZCAzMiBiaXQsIHdoaWxlIGl0J3MgYWN0dWFsbHkgMTYgYml0LiBUaGUgY29kZSBpcyBjb3JyZWN0LgotCi0gICAgUmVwb3J0ZWQtYnk6IEd1ZW50ZXIgS29lbGxuZXIgPGd1ZW50ZXIua29lbGxuZXJAbnNuLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYTM4Zjg1ZTE4MGEzMGI2MjI1ODA4ODI4ZGVkMTAxN2IxYTU0MThjNgotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglXZWQgT2N0IDI4IDExOjA1OjAzIDIwMDkgLTA0MDAKLQotICAgIEZpeCBDb21wbGlhdGlvbiB3YXJuaW5nIGZvciBUTlktQTkyNjAgYW5kIFROWS1BOUcyMAotCi0gICAgVGhlIHBhdGNoIGZpeGVzIGEgY29tcGlsYXRpb24gd2FybmluZyBieSBkZWZpbmluZwotICAgIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYgaW4gdGhlIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCAyNjRlNDJlZTU0ZjFkMzIyODA1ZDkwNjgxNjhmZDM2MmI0MTNmZDA5Ci1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVdlZCBPY3QgMjggMTE6MDQ6NTMgMjAwOSAtMDQwMAotCi0gICAgRml4IENvbXBsaWF0aW9uIHdhcm5pbmcgZm9yIFNCQzM1LUE5RzIwIGJvYXJkCi0KLSAgICBUaGUgcGF0Y2ggZml4ZXMgYSBjb21waWxhdGlvbiB3YXJuaW5nIGJ5IGRlZmluaW5nCi0gICAgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBpbiB0aGUgY29uZmlnIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDM1MzQ2MmY2ZmY5NzY5MDkxZmI2NDRkNDRkODAyNWYyMGE0MTkyZDkKLUF1dGhvcjogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBjb2xkaGF1cy5jb20+Ci1EYXRlOglXZWQgT2N0IDI4IDA5OjM3OjMzIDIwMDkgLTA1MDAKLQotICAgIGdhbGF4eTUyMDA6IEFkZCBkZWZhdWx0IGVudmlyb25tZW50IHZhcmlhYmxlcwotCi0gICAgRXh0ZW5kIGJvb3RkZWxheSB0byAxMCBzZWNvbmRzLiAgU2V0IGJvb3QgcmV0cnkgdGltZSB0byAxMjAgc2Vjb25kcyBhbmQgdXNlCi0gICAgcmVzZXQgdG8gcmV0cnkuICBEZWZpbmUgZGVmYXVsdCBib290Y29tbWFuZCBhbmQgYm9vdGFyZ3MgZm9yIHByb2R1Y3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGRla2FyZXNlYXJjaC5jb20+Ci0KLWNvbW1pdCBmYTM2YWU3OTBlYjEwY2U3MDkzNWY5YTc4ZjA3NzAzNzE5ZGNhNDIyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBPY3QgMjcgMTU6MTU6NTUgMjAwOSArMDEwMAotCi0gICAgY2ZpOiBBZGQgd2VhayBkZWZhdWx0IGZ1bmN0aW9uIGZvciBmbGFzaF9jbWRfcmVzZXQoKQotCi0gICAgQ3VycmVudGx5IHRoZSBDRkkgZHJpdmVyIGlzc3VlcyBib3RoIEFNRCBhbmQgSW50ZWwgcmVzZXQgY29tbWFuZHMuCi0gICAgVGhpcyBpcyBiZWNhdXNlIHRoZSBkcml2ZXIgZG9lc24ndCBrbm93IHlldCB3aGljaCBjaGlwcyBhcmUgY29ubmVjdGVkLgotICAgIFRoaXMgZHVhbCByZXNldCBzZWVtcyB0byBjYXVzZSBwcm9ibGVtcyB3aXRoIHRoZSBNMjlXMTI4RyBjaGlwcyBhcwotICAgIHJlcG9ydGVkIGJ5IFJpY2hhcmQgUmV0YW51YnVuLiBUaGlzIHBhdGNoIG5vdyBpbnRyb2R1Y2VzIGEgd2VhayBkZWZhdWx0Ci0gICAgZnVuY3Rpb24gZm9yIHRoZSBDRkkgcmVzZXQgY29tbWFuZCwgc3RpbGwgd2l0aCBib3RoIHJlc2V0cy4gVGhpcyBjYW4KLSAgICBiZSBvdmVycmlkZGVuIGJ5IGEgYm9hcmQgc3BlY2lmaWMgdmVyc2lvbiBpZiBuZWNlc3NhcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQHJ1Z2dlZGNvbS5jb20+Ci0KLWNvbW1pdCA0OTQ2Nzc1YzZkYjUyZGJhMjhmNzJiYTM1MjU3NjRiNTRmMWQ0NTkzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDI4IDAwOjQ5OjQ3IDIwMDkgKzAxMDAKLQotICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HLCBwcmVwYXJlIC1yYzEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyNDZjNjkyMjVjN2I5NjJkNWM5M2U5MjI4MmI3OGNhOWZjNWZlZmVlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglTdW4gT2N0IDI1IDE1OjEyOjU2IDIwMDkgLTA1MDAKLQotICAgIEFkZCAnZWRpdGVudicgY29tbWFuZAotCi0gICAgVGhlIGVkaXRlbnYgY29tbWFuZCBjYW4gYmUgdXNlZCB0byBlZGl0IGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgotICAgIEVkaXRpbmcgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgdXNlZnVsIHdoZW4gb25lIHdhbnRzIHRvIHR3ZWFrIGFuCi0gICAgZXhpc3RpbmcgdmFyaWFibGUsIGZvciBleGFtcGxlIGZpeCBhIHR5cG8gb3IgY2hhbmdlIHRoZSBiYXVkcmF0ZSBpbiB0aGUKLSAgICAnYm9vdGFyZ3MnIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGIwZmE4ZTUwNjMyYTYyODc2NmRiMjNmNWM4ODRlYzYzZjE0Njk1NTIKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVN1biBPY3QgMjUgMTU6MTI6NTUgMjAwOSAtMDUwMAotCi0gICAgc2V0ZW52KCk6IERlbGV0ZSAwLWxlbmd0aCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLQotICAgIFByZXZpb3VzbHkgc2V0ZW52KCkgd291bGQgb25seSBkZWxldGUgYW4gZW52aXJvbm1lbnQgdmFyaWFibGUgaWYgaXQKLSAgICB3YXMgcGFzc2VkIGEgTlVMTCBzdHJpbmcgcG9pbnRlciBhcyBhIHZhbHVlLiAgSXQgc2hvdWxkIGFsc28gZGVsZXRlIGFuCi0gICAgZW52aXJvbm1lbnQgdmFyaWFibGUgd2hlbiBpdCBlbmNvdW50ZXJzIGEgdmFsaWQgc3RyaW5nIHBvaW50ZXIgb2YKLSAgICAwLWxlbmd0aC4KLQotICAgIFRoaXMgY2hhbmdlL2ZpeCBpcyBnZW5lcmFsbHkgdXNlZnVsIGFuZCBpcyBuZWNlc3NhcnkgZm9yIHRoZSB1cGNvbWluZwotICAgICJlZGl0ZW52IiBjb21tYW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGVjYzU1MDBlZTQ4NzE3MGQ4YWY2ZmY4OTNmZDFlMDA4MjM4MGEwMWEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVN1biBPY3QgMjUgMTU6MTI6NTQgMjAwOSAtMDUwMAotCi0gICAgcmVhZGxpbmUoKTogQWRkIGFiaWxpdHkgdG8gbW9kaWZ5IGEgc3RyaW5nIGJ1ZmZlcgotCi0gICAgSWYgdGhlICdidWYnIHBhcmFtZXRlciBpcyBhIG5vbi0wLWxlbmd0aCBzdHJpbmcsIGl0cyBjb250ZW50cyB3aWxsIGJlCi0gICAgZWRpdGVkLiAgUHJldmlvdXNseSwgdGhlIGluaXRpYWwgY29udGVudHMgb2YgJ2J1Zicgd2VyZSBpZ25vcmVkIGFuZCB0aGUKLSAgICB1c2VyIGVudGVyZWQgaXRzIGNvbnRlbnRzIGZyb20gc2NyYXRjaC4KLQotICAgIFRoaXMgY2hhbmdlIGlzIG5lY2Vzc2FyeSB0byBzdXBwb3J0IHRoZSB1cGNvbWluZyAiZWRpdGVudiIgY29tbWFuZCBidXQKLSAgICBjb3VsZCBhbHNvIGJlIHVzZWQgZm9yIGZ1dHVyZSBjb21tYW5kcyB3aGljaCByZXF1aXJlIGEgdXNlciB0byBtb2RpZnkKLSAgICBhbiBleGlzdGluZyBzdHJpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgZjkyMzk0Mzg0M2NkNjE3ZDY4MTM4N2U3ZmU4MWE0ODA2MGNjNjQwMQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIE9jdCAyNSAxNToxMjo1MyAyMDA5IC0wNTAwCi0KLSAgICBjcmVhZF9saW5lKCk6IFJlbW92ZSB1bnVzZWQgdmFyaWFibGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgZTQ5MWE3MWU1NzhlOTNiZDNiMmY4ZjIwZDhlZjhmMTExYzk4MDEwZAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIE9jdCAyNSAxNToxMjo1MiAyMDA5IC0wNTAwCi0KLSAgICBDaGVjayBmb3IgTlVMTCBwcm9tcHQgaW4gcmVhZGxpbmVfaW50b19idWZmZXIoKQotCi0gICAgUHJldmlvdXNseSwgcGFzc2luZyByZWFkbGluZSgpIG9yIHJlYWRsaW5lX2ludG9fYnVmZmVyKCkgYSBOVUxMICdwcm9tcHQnCi0gICAgcGFyYW1ldGVyIHdvdWxkIHJlc3VsdCBpbiBwdXRzKCkgcHJpbnRpbmcgZ2FyYmFnZSB3aGVuCi0gICAgQ09ORklHX0NNRExJTkVfRURJVElORyB3YXMgZW5hYmxlZC4KLQotICAgIE5vdGUgdGhhdCBubyBib2FyZCBjdXJyZW50bHkgdHJpZ2dlcnMgdGhpcyBidWcuICBFbmFibGluZwotICAgIENPTkZJR19DTURMSU5FX0VESVRJTkcgb24gc29tZSBib2FyZHMgKGVnIGJhYjd4eCkgd291bGQgcmVzdWx0IGluCi0gICAgdGhlIGJ1ZyBhcHBlYXJpbmcuCVRoaXMgY2hhbmdlIGlzIG9ubHkgaW50ZW5kZWQgdG8gcHJldmVudCBzb21lb25lCi0gICAgZnJvbSBydW5uaW5nIGludG8gdGhpcyBpc3N1ZSBpbiB0aGUgZnV0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDE2ZDFjMTA3ODM2NjBmM2ZkYmMzYzE5MTQxZjQyZjNiMGQxODM0ZDMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBPY3QgMjUgMjM6MDA6MDkgMjAwOSArMDEwMAotCi0gICAgZHJpdmVycy9uZXQvcGh5L21paXBoeWJiLmM6IGZpeCB3YXJuaW5nOiBubyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCi0KLSAgICBBZGQgbWlzc2luZyBuZXdsaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogTHVpZ2kgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KLSAgICBDYzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGE3NDdhN2YzMTA1OWI5MDY5ZTk3Yzc4YmJhNTQ5NjQwOWMzM2FhMDUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBPY3QgMjcgMDA6MDM6MzIgMjAwOSArMDEwMAotCi0gICAgUmV2ZXJ0ICJlbnY6IG9ubHkgYnVpbGQgZW52X2VtYmVkZGVkIGFuZCBlbnZjcmMgd2hlbiBuZWVkZWQiCi0KLSAgICBCcmVha3MgYnVpbGRpbmcgb24gbWFueSBib2FyZHMsIGFuZCBubyByZWFsbHkgY2xlYW4gZml4IGF2YWlsYWJsZSB5ZXQuCi0KLSAgICBUaGlzIHJldmVydHMgY29tbWl0IDZkYWI2YWRkMmQ4ZWU4MDkwNTIzNGIzMjZhYmMzZGUxMWJlMWQxNzguCi0KLWNvbW1pdCAzZmNhODAzNzU5ODFmZTgzZDQ2NzRhMDI2NzE4M2I0NjlhMWVhN2ZmCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IE9jdCAxNSAxNzo0NzoxNiAyMDA5ICswNDAwCi0KLSAgICBtcGM4NXh4OiBDb25maWd1cmUgUUUgVVNCIGZvciBNUEM4NTY5RS1NRFMgYm9hcmRzCi0KLSAgICBTZXR1cCBRRSBwaW4gbXVsdGlwbGV4aW5nIGZvciBVU0IgZnVuY3Rpb24sIGNvbmZpZ3VyZSBuZWVkZWQgQkNTUnMKLSAgICBhbmQgYWRkIHNvbWUgZmR0IGZpeHVwcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxNDgwOWI2YzIxYzg5ZGQ2NWFiYWYzZmVhNzYyN2ZiNWVhMGY3OGEzCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IE9jdCAxNSAxNzo0NzoxMyAyMDA5ICswNDAwCi0KLSAgICBtcGM4NXh4OiBDb25maWd1cmUgUUUgVUFSVCBmb3IgTVBDODU2OUUtTURTIGJvYXJkcwotCi0gICAgVG8gbWFrZSBRRSBVQVJUIHVzYWJsZSBieSBMaW51eCB3ZSBzaG91bGQgc2V0dXAgcGluIG11bHRpcGxleGluZwotICAgIGFuZCB0dXJuIFVDQzIgRXRoZXJuZXQgbm9kZSBpbnRvIFVDQzIgUUUgVUFSVCBub2RlLgotCi0gICAgQWxzbywgUUUgVUFSVCBpcyBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBVQVJUMCwgc28gd2UgY2FuJ3QgZW5hYmxlCi0gICAgaXQgaWYgZVNESEMgaXMgaW4gNC1iaXRzIG1vZGUgb24gcGlsb3QgYm9hcmRzLCBvciBpZiBpdCdzIGEgcHJvdG90eXBlCi0gICAgYm9hcmQgd2l0aCBlU0RIQyBpbiAxLSBvciA0LWJpdHMgbW9kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3MGQ2NjViMWQyMzBiOTU3NWE2NDc5NDhlOGRiM2RhMWU2NzQzZTVjCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IE9jdCAxNSAxNzo0NzoxMSAyMDA5ICswNDAwCi0KLSAgICBtcGM4NXh4OiBTZXR1cCBRRSBwaW5tdXggZm9yIFNQSSBGbGFzaCBvbiBNUEM4NTY5RS1NRFMgYm9hcmRzCi0KLSAgICBTUEkgRmxhc2ggKE0yNVA0MCkgaXMgY29ubmVjdGVkIHRvIHRoZSBTUEkxIGJ1cywgd2UgbmVlZCBhIGZldwotICAgIHFlX2lvcCBlbnRyaWVzIHRvIGFjdHVhbGx5IGVuYWJsZSBTUEkxIG9uIHRoZXNlIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2NWRlYzNiNDU5OWExN2U4M2VjNjlkZmQwNTllNGVhMWU3OTVlZjM3Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IE9jdCAxNSAxNzo0NzowOSAyMDA5ICswNDAwCi0KLSAgICBtcGM4NXh4OiBTZXR1cCBTUklPIG1lbW9yeSByZWdpb24gTEFXIGZvciBNUEM4NTY5RS1NRFMgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIHNldHMgbWVtb3J5IHdpbmRvdyBmb3IgU2VyaWFsIFJhcGlkSU8gb24gTVBDODU2OUUtTURTCi0gICAgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGEyOTE1NWUxMjI4NmNjNWVjMmRmNzJjMWNhYjI4ZTM2NTliZmRhZDUKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgT2N0IDE1IDE3OjQ3OjA4IDIwMDkgKzA0MDAKLQotICAgIG1wYzg1eHg6IEFkZCBlTEJDIE5BTkQgc3VwcG9ydCBmb3IgTVBDODU2OUUtTURTIGJvYXJkcwotCi0gICAgU2ltcGx5IGFkZCBzb21lIGRlZmluZXMsIGFuZCBhZGp1c3QgVExCZSBzZXR1cCB0byBpbmNsdWRlIHNvbWUKLSAgICBzcGFjZSBmb3IgZUxCQyBOQU5ELgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDdmNTJlZDVlZjFiNDkwZGEyODJhY2UzMzE2YmUzODFhNmFiZjk2YTUKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgT2N0IDE1IDE3OjQ3OjA2IDIwMDkgKzA0MDAKLQotICAgIG1wYzg1eHg6IEFkZCBlU0RIQyBzdXBwb3J0IGZvciBNUEM4NTY5RS1NRFMgYm9hcmRzCi0KLSAgICBlU0RIQyBpcyBtdXR1YWxseSBleGx1c2l2ZSB3aXRoIFVBUlQwIChpbiA0LWJpdHMgbW9kZSkgYW5kIEkyQzIKLSAgICAoaW4gMS1iaXQgbW9kZSkuIFdoZW4gZVNESEMgaXMgdXNlZCwgd2Ugc2hvdWxkIHN3aXRjaCB1LWJvb3QgY29uc29sZSB0bwotICAgIFVBUlQxLCBhbmQgbWFrZSB0aGUgcHJvcGVyIGRldmljZS10cmVlIGZpeHVwcy4KLQotICAgIEJlY2F1c2Ugb2YgYW4gZXJyYXR1bSBpbiBwcm90b3R5cGUgYm9hcmRzIGl0IGlzIGltcG9zc2libGUgdG8gdXNlIGVTREhDCi0gICAgd2l0aG91dCBkaXNhYmxpbmcgVUFSVDAgKHdoaWNoIG1ha2VzIGl0IHF1aXRlIGVhc3kgdG8gJ2JyaWNrJyB0aGUgYm9hcmQKLSAgICBieSBzaW1wbHkgaXNzdW5nICdzZXRlbnYgaHdjb25maWcgZXNkaGMnLCBhbmQgbm90IGFibGUgdG8gaW50ZXJhY3Qgd2l0aAotICAgIFUtQm9vdCBhbnlsb25nZXIpLgotCi0gICAgU28sIGJ1dCBkZWZhdWx0IHdlIGFzc3VtZSB0aGF0IHRoZSBib2FyZCBpcyBhIHByb3RvdHlwZSwgd2hpY2ggaXMgYSBtb3N0Ci0gICAgc2FmZSBhc3N1bXB0aW9uLiBUaGVyZSBpcyBubyB3YXkgdG8gZGV0ZXJtaW5lIGJvYXJkIHJldmlzaW9uIGZyb20gYQotICAgIHJlZ2lzdGVyLCBzbyB3ZSB1c2UgaHdjb25maWcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDg2MTgxMjZmNzhmMDUwNDJkYWU0Mjg4MTE4MDliNTk0Zjc0N2ViOQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE9jdCAyMyAxNTo1NTo0OCAyMDA5IC0wNTAwCi0KLSAgICB4cGVkaXRlNTM3MDogRW5hYmxlIG11bHRpLWNvcmUgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNWNjZDI5YzM2NzliMzY2OWIwYmRlNWM1MDFjMWFhMGYzMjVhN2FjYgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE9jdCAyMyAxNTo1NTo0NyAyMDA5IC0wNTAwCi0KLSAgICA4NXh4OiBNUCBCb290IFBhZ2UgVHJhbnNsYXRpb24gdXBkYXRlCi0KLSAgICBUaGlzIGNoYW5nZSBoYXMgMyBnb2FsczoKLSAgICAtIEhhdmUgc2Vjb25kYXJ5IGNvcmVzIGJlIHJlbGVhc2VkIGludG8gc3BpbiBsb29wcyBhdCB0aGVpciAndHJ1ZScKLSAgICAgIGFkZHJlc3MgaW4gU0RSQU0uICBQcmV2aW91c2x5LCBzZWNvbmRhcnkgY29yZXMgd2VyZSBwdXQgaW50byBzcGluCi0gICAgICBsb29wcyBpbiB0aGUgMHhmZmZmZnh4eCBhZGRyZXNzIHJhbmdlIHdoaWNoIHJlcXVpcmVkIHRoYXQgYm9vdCBwYWdlCi0gICAgICB0cmFuc2xhdGlvbiB3YXMgYWx3YXlzIGVuYWJsZWQgd2hpbGUgY29yZXMgd2VyZSBpbiB0aGVpciBzcGluIGxvb3BzLgotCi0gICAgLSBBbGxvdyB0aGUgVExCIHdpbmRvdyB0aGF0IHRoZSBwcmltYXJ5IGNvcmUgdXNlcyB0byBhY2Nlc3MgdGhlCi0gICAgICBzZWNvbmRhcnkgY29yZXMgYm9vdCBwYWdlIHRvIGJlIHBsYWNlZCBhdCBhbnkgYWRkcmVzcy4gIFByZXZpb3VzbHksIGEKLSAgICAgIFRMQiB3aW5kb3cgYXQgMHhmZmZmZjAwMCB3YXMgYWx3YXlzIHVzZWQgdG8gYWNjZXNzIHRoZSBzZWNvbmFyeSBjb3JlcycKLSAgICAgIGJvb3QgcGFnZS4gIFRoaXMgVExCIGFkZHJlc3MgcmVxdWlyZW1lbnQgb3ZlcmxhcHBlZCB3aXRoIG90aGVyCi0gICAgICBwZXJpcGhlcmFscyBvbiBzb21lIGJvYXJkcyAoZWcgWFBlZGl0ZTUzNzApLiAgQnkgZGVmYXVsdCwgdGhlIGJvb3QKLSAgICAgIHBhZ2UgVExCIHdpbGwgc3RpbGwgdXNlIHRoZSAweGZmZmZmeHh4IGFkZHJlc3MgcmFuZ2UsIGJ1dCB0aGlzIGNhbiBiZQotICAgICAgb3ZlcnJpZGRlbiBvbiBhIGJvYXJkLWJ5LWJvYXJkIGJhc2lzIGJ5IGRlZmluaW5nIGEgY3VzdG9tCi0gICAgICBDT05GSUdfQlBUUl9WSVJUX0FERFIuICBOb3RlIHRoYXQgdGhlIFRMQiB1c2VkIHRvIG1hcCB0aGUgYm9vdCBwYWdlCi0gICAgICByZW1haW5zIGluIHVzZSB3aGlsZSBVLUJvb3QgZXhlY3V0ZXMuICBQcmV2aW91c2x5IGl0IHdhcyBvbmx5Ci0gICAgICB0ZW1wb3JhcmlseSB1c2VkLCB0aGVuIHJlc3RvcmVkIHRvIGl0cyBpbml0aWFsIHZhbHVlLgotCi0gICAgLSBBbGxvdyBCb290IFBhZ2UgVHJhbnNsYXRpb24gdG8gYmUgZGlzYWJsZWQgb24gYm9vdHVwLiAgUHJldmlvdXNseSwKLSAgICAgIEJvb3QgUGFnZSBUcmFuc2xhdGlvbiB3YXMgYWx3YXlzIGxlZnQgZW5hYmxlZCBhZnRlciBzZWNvbmRhcnkgY29yZXMKLSAgICAgIHdlcmUgYnJvdWdodCBvdXQgb2YgcmVzZXQuICBUaGlzIGNhdXNlZCB0aGUgMHhmZmZmZnh4eCBhZGRyZXNzIHJhbmdlCi0gICAgICB0byBzb21ld2hhdCAibWFnaWNhbGx5IiBiZSB0cmFuc2xhdGVkIHRvIGFuIGFkZHJlc3MgaW4gU0RSQU0uICBTb21lCi0gICAgICBib2FyZHMgbWF5IG5vdCB3YW50IHRoaXMgb2RkaXR5IGluIHRoZWlyIG1lbW9yeSBtYXAsIHNvIGRlZmluaW5nCi0gICAgICBDT05GSUdfTVBDOHh4eF9ESVNBQkxFX0JQVFIgd2lsbCB0dXJuIG9mZiBCb290IFBhZ2UgVHJhbnNsYXRpb24gYWZ0ZXIKLSAgICAgIHRoZSBzZWNvbmRhcnkgY29yZXMgYXJlIGluaXRpYWxpemVkLgotCi0gICAgVGhlc2UgY2hhbmdlcyBhcmUgb25seSBhcHBsaWNhYmxlIHRvIDg1eHggYm9hcmRzIHdpdGggQ09ORklHX01QIGRlZmluZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3MGVkODY5ZWE1ZjZiMWQxM2Q3YjE0MGM4M2VjMGRjZDhhMTI3ZGRjCi1BdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjcgMTI6MTg6NTUgMjAwOSArMDUzMAotCi0gICAgcHBjLzg1eHgvcGNpOiBmc2xfcGNpX2luaXQ6IHBjaWUgYWdlbnQgbW9kZSBzdXBwb3J0Ci0KLSAgICBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgSmFzb24gSmluIGFuZCBNaW5na2FpIEh1IGZvciBtcGM4NTM2LgotCi0gICAgV2hlbiBRb3JJUSBiYXNlZCBib2FyZCBpcyBjb25maWd1cmVkIGFzIGEgUENJZSBhZ2VudCwgdGhlbiB1bmxvY2svZW5hYmxlCi0gICAgaW5ib3VuZCBQQ0kgY29uZmlndXJhdGlvbiBjeWNsZXMgYW5kIGluaXQgYSA0SyBpbmJvdW5kIG1lbW9yeSB3aW5kb3c7Ci0gICAgc28gdGhhdCBhIFBDSWUgaG9zdCBjYW4gYWNjZXNzIHRoZSBQQ0llIGFnZW50cyBTRFJBTSBhdCBhZGRyZXNzIDB4MAotCi0gICAgKiBTdXBwb3J0ZWQgaW4gZnNsX3BjaV9pbml0X3BvcnQoKSBhZnRlciBhZGRpbmcgcGNpZV9lcCBhcyBhIHBhcmFtCi0gICAgKiBSZXZhbXBlZCBjb3B5cmlnaHQgaW4gZHJpdmVycy9wY2kvZnNsX3BjaV9pbml0LmMKLSAgICAqIE1vZHMgaW4gODV4eCBiYXNlZCBib2FyZCBzcGVjaWZpYyBwY2kgaW5pdCBhZnRlciB0aGlzIGNoYW5nZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNzNhMjhhZDllZjU5ZGNmY2Q0YzA1NmVjMWY2MWYxZTA4OTZjZmFhCi1BdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAyNyAwOTozNjozOCAyMDA5ICswNTMwCi0KLSAgICA4NXh4L3AxX3AyX3JkYjogRml4aW5nIEREUiBjb25maWd1cmF0aW9uIGZvciA4MDBNSHogZGF0YSByYXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOTI0MDI0YzM5Njc2MWMyNjdiOTQ4ZjM4ZDc4ZTk5MDVmMjAzNjUwMQotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjcgMDk6MjY6NTUgMjAwOSArMDUzMAotCi0gICAgODV4eC9wMV9wMnJkYjogRml4IGNyYXNoIHdoaWxlIGNvbmZpZ3VyaW5nIDMyIGJpdCBERFIgaS9mIGZvciBQMTAyMFJEQi4KLQotICAgIFRoZSBkYXRhIGJlaW5nIG1vZGlmaWVkIHdhcyBpbiBOT1IgZmxhc2ggd2hpY2ggY2F1c2VkIHRoZSBjcmFzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyYzBjNThiOTJkYmI2ODAwNzA2MWJkYzBlZGQyM2JkZjE0MmVmZWJmCi1BdXRob3I6IFNlcmdleSBNaXJvbm92IDxpZXJ0b25AZ21haWwuY29tPgotRGF0ZToJV2VkIFNlcCAyMyAxNjo0NzozOCAyMDA5ICswNDAwCi0KLSAgICBGaXggYnVnIGluIGp1bXB0YWJsZSBjYWxsIHN0dWJzIGZvciBTUEFSQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBNaXJvbm92IDxpZXJ0b25AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IDNlMzAzZjc0OGNmNTdmYjIzZThlYzk1YWI3ZWFjMDA3NGJlNTBlMmIKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgT2N0IDE1IDE3OjQ3OjA0IDIwMDkgKzA0MDAKLQotICAgIGZkdF9zdXBwb3J0OiBBZGQgbXVsdGktc2VyaWFsIHN1cHBvcnQgZm9yIHN0ZG91dCBmaXh1cAotCi0gICAgQ3VycmVudGx5IGZkdF9maXh1cF9zdGRvdXQoKSBpcyB1c2luZyBoYXJkLWNvZGVkIENPTkZJR19DT05TX0lOREVYCi0gICAgY29uc3RhbnQuIFdpdGggbXVsdGktc2VyaWFsIHN1cHBvcnQsIHRoZSBDT05TX0lOREVYIG1heSBubyBsb25nZXIKLSAgICByZXByZXNlbnQgYWN0dWFsIGNvbnNvbGUsIHNvIHdlIHNob3VsZCB0cnkgdG8gZXh0cmFjdCBwb3J0IG51bWJlcgotICAgIGZyb20gdGhlIGN1cnJlbnQgc3RkaW8gZGV2aWNlIG5hbWUgaW5zdGVhZCBvZiBhbHdheXMgaGFyZC1jb2RpbmcgdGhlCi0gICAgY29uc3RhbnQgdmFsdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZGEwZTVmN2VlODI4ZjI0NmQ4NTk5NzQ4NmZmZjMwODgzNzA2OTQ1MwotQXV0aG9yOiBMZW9uIFdvZXN0ZW5iZXJnIDxsZW9uLndvZXN0ZW5iZXJnQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBPY3QgMjYgMTA6MDM6MzIgMjAwOSArMDEwMAotCi0gICAgcHBjLzg1eHg6IEZpeCBjcmFzaGVzIGR1ZSB0byBnZW5lcmF0aW9uIG9mIFNQRSBpbnN0cnVjdGlvbgotCi0gICAgVS1Cb290IGNyYXNoZWQgb24gdGhlIGxhc3QgaW5zdHJ1Y3Rpb246Ci0KLSAgICBpbnQgcGFyc2Vfc3RyZWFtX291dGVyKHN0cnVjdCBpbl9zdHIgKmlucCwgaW50IGZsYWcpCi0gICAgewotICAgIGVmZmE0Nzg0OgkgICAgOTQgMjEgZmYgMzggICAgIHN0d3UgICAgcjEsLTIwMChyMSkKLSAgICBlZmZhNDc4ODoJICAgIDdjIDA4IDAyIGE2ICAgICBtZmxyICAgIHIwCi0gICAgZWZmYTQ3OGM6CSAgICA0MiA5ZiAwMCAwNSAgICAgYmNsLSAgICAyMCw0KmNyNytzbyxlZmZhNDc5MCA8cGFyc2Vfc3RyZWFtX291dGVyKzB4Yz4KLSAgICBlZmZhNDc5MDoJICAgIDdkIDgwIDAwIDI2ICAgICBtZmNyICAgIHIxMgotICAgIGVmZmE0Nzk0OgkgICAgMTMgYzEgYjMgMjEgICAgIGV2c3RkZCAgcjMwLDE3NihyMSkKLQotICAgIC4uLndoaWNoIGlzIGEgIFNQRSBpbnN0cnVjdGlvbiwgYWx0aG91Z2ggLW1uby1zcGUgd2FzIHVzZWQuCi0KLSAgICB0bXAvY3Jvc3MvcHBjZTUwMHYyL2Jpbi9wb3dlcnBjLWFuZ3N0cm9tLWxpbnV4LWdudXNwZS1nY2MgLS12ZXJzaW9uCi0gICAgcG93ZXJwYy1hbmdzdHJvbS1saW51eC1nbnVzcGUtZ2NjIChHQ0MpIDQuMy4zCi0KLSAgICBTZWVtcyB0byBiZSBhIGtub3duIGlzc3VlIChzaW5jZSAyMDA4LTA0PyEpCi0KLSAgICBHb29nbGVkIHNvbWUsIHR1cm5zIG91dCB0aGlzIHBhdGNoL3dvcmthcm91bmQgd29ya3MgZm9yIG1lIG9uIE1QQzg1MzZEUy4KLQotICAgIFNlZSBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAwOC0wNC9tc2cwMDMxMS5odG1sIGZvciBtb3JlIGluZm8KLQotICAgIFNpZ25lZC1vZmYtYnk6IExlb24gV29lc3RlbmJlcmcgPGxlb25Ac2lkZWJyYW5jaC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDY1NGVhMWYzMTg0MjM1Njk0MzA2ZGRjNTg3NGJhYTI3YWQzMDE4ZmUKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMjIgMDA6MTA6MjMgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IE1ha2UgTDIgc3VwcG9ydCBtb3JlIHJvYnVzdAotCi0gICAgQWNjb3JkaW5nIHRoZSB1c2VyIG1hbnVhbCwgd2UgbmVlZCBsb29wLWNoZWNrIHRoZSBMMiBlbmFibGUgYml0IHNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDYxM2FkMjhjM2RhNGM3ZmM2MzM2ZWY5ZDk0OTkzYjI1YTVkMDU4NmUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBPY3QgMjYgMjE6MjE6MjUgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IEZpeCBjb21waWxlciB3YXJuaW5nIGluIG5hbmRfc3BsLy4uLi9wMV9wMl9yZGIvbmFuZF9ib290LmMKLQotICAgIG5hbmRfYm9vdC5jOiBJbiBmdW5jdGlvbiAnYm9hcmRfaW5pdF9mJzoKLSAgICBuYW5kX2Jvb3QuYzo0NDogd2FybmluZzogJ3N5c19jbGsnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGU4OTY3ZDk2YTBlOGQwOWQ5MWEzYjdiZDI5Mjc0Njk5NmRkOGU3YWMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBPY3QgMjYgMjE6MTg6MzMgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IEZpeCBidWlsZGluZyBOQU5EX1NQTCBvdXQgb2YgdHJlZQotCi0gICAgV2UgbmVlZCB0byBzb3VyY2UgZmlsZXMgdG8gZXhpc3QgaW4gdGhlIE89PEZPTz4gbmFuZF9zcGwgZGlyIHdoZW4KLSAgICB3ZSBidWlsZCBvdXQgb2YgdHJlZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmM2VlMjU4NTllMzkyMGVlN2M3Y2M1MTlhM2U2ZjYwZDcwZDdhNTNmCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglGcmkgT2N0IDIzIDEwOjUyOjM4IDIwMDkgKzAyMDAKLQotICAgIExpY2Vuc2UgY2xlYW51cDogRml4IGxpY2Vuc2UgaGVhZGVyIGZvciBzb21lIGVzZCBkaXNwbGF5IGNvbmZpZ3VyYXRpb25zCi0KLSAgICBUaGVzZSBmaWxlcyB3ZXJlIGF1dG9nZW5lcmF0ZWQgYnkgRVBTT04gY29uZmlndXJhdGlvbiB0b29scy4KLSAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBhdXRvZ2VuZXJhdGVkIGZpbGUgaGVhZGVycyBieSB0aGUgR1BMCi0gICAgbGljZW5zZSBub3RpY2UuCi0KLSAgICBUaGlzIGNoYW5nZSBpcyBkb25lIHdpdGggdGhlIGV4cGxpY2l0IHBlcm1pc3Npb24KLSAgICBvZiBFcHNvbiBSZXNlYXJjaCAmIERldmVsb3BtZW50IC8gSUMgU29mdHdhcmUgRGV2ZWxvcG1lbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotCi1jb21taXQgNDE2NmVlNThkMzBhZGE3YjI5OGI5Yzk0MTA2N2YwMzQxYzJkY2NiZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgT2N0IDkgMTc6MTI6NDQgMjAwOSAtMDQwMAotCi0gICAgc2Y6IGFkZCBHUEwtMiBsaWNlbnNlIGluZm8KLQotICAgIFNvbWUgb2YgdGhlIG5ldyBzcGkgZmxhc2ggZmlsZXMgd2VyZSBtaXNzaW5nIGV4cGxpY2l0IGxpY2Vuc2UgbGluZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGQ1MzVhNDkzMDA0ZmI3MDFmMTMxYjEzMjQwMmE3NzA0ZjljOTM0MmQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBPY3QgMjEgMjM6Mjk6NTEgMjAwOSAtMDUwMAotCi0gICAgZmR0OiBGaXggZmR0IHBhZGRpbmcgaXNzdWUgZm9yIGluaXRyZCBtZW1fcnN2Ci0KLSAgICBJdHMgcG9zc2libGUgdGhhdCB3ZSBlbmQgdXAgd2l0aCBhIGRldmljZSB0cmVlIHRoYXQgaGFwcGVucyB0byBiZSBhCi0gICAgcGFydGljdWxhciBzaXplIHRoYXQgYWZ0ZXIgd2UgY2FsbCBmZHRfcmVzaXplKCkgd2UgZG9uJ3QgaGF2ZSBhbnkKLSAgICBzcGFjZSBsZWZ0IGZvciB0aGUgaW5pdHJkIG1lbV9yc3YuCi0KLSAgICBGaXggdGhpcyBiZSBhZGRpbmcgYSBzZWNvbmQgbWVtX3JzdiBpbnRvIHRoZSBzaXplIGNhbGN1bGF0aW9uLiAgV2UKLSAgICBoYWQgb25lIHRvIGNvdmVyIHRoZSBmZHQgaXRzZWxmIGFuZCB3ZSBoYXZlIHRoZSBwb3RlbnRpYWwgb2YgYWRkaW5nCi0gICAgYSBzZWNvbmQgZm9yIHRoZSBpbml0cmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgNGJjM2QyYWZiMzgwZTc4ZmRiYjljNTAxZDlhOGRhNmQ1OWViMTc4ZQotQXV0aG9yOiBTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjAgMTg6MjE6MTggMjAwOSArMDIwMAotCi0gICAgQVJNOiBPTUFQMzogUmVmYWN0b3JzIHRoZSBTTTkxMXggZHJpdmVyCi0KLSAgICBNb3ZlIHRoZSB0ZXN0IHVwIGluIHRoZSBmdW5jdGlvbiB0byBub3QgaGFuZyBvbiBzeXN0ZW1zIHdpdGhvdXQgZXRoZXJuZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGYzODA3Mzc0Nzg3ZTQzOTRlZmI3NjdlMmU4NTI3ODg3ZjU3ZTUxYjgKLUF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotRGF0ZToJVGh1IE9jdCAxNSAxMToxOToxNSAyMDA5ICswOTAwCi0KLSAgICBzNXBjMXh4OiBTTURLQzEwMDogZml4IGNvbXBpbGUgd2FybmluZ3MKLQotICAgIGZpeCB0aGUgZm9sbG93aW5nIGNvbXBpbGUgd2FybmluZ3MKLSAgICB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDgwMDNjMzYxZGVlYzNlZTY1MTQ1MTY2MmVmZDA1MzUyZjFhYmRkNDAKLUF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotRGF0ZToJVHVlIE9jdCA2IDA4OjQ0OjIyIDIwMDkgKzAyMDAKLQotICAgIGFybTkyNmVqczogOC1ieXRlIGFsaWduIHN0YWNrIHRvIGF2b2lkIExEUkQvU1RSRCBwcm9ibGVtcwotCi0gICAgVS1ib290IGZvciBNYXJ2ZWxsIEtpcmt3b29kIGJvYXJkcyBubyBsb25nZXIgd29yayBhZnRlciB0aGUgRUFCSSBjaGFuZ2VzCi0gICAgaW50cm9kdWNlZCBpbiBjb21taXQgZjc3MmFjZjhhNTg0MDY3MDMzZWZmMWUyMzFmY2QxZmIzYTAwZDNkOS4gVGhpcwotICAgIHR1cm5zIG91dCB0byBiZSBjYXVzZWQgYnkgYSBzdGFjayBhbGlnbm1lbnQgaXNzdWUuIFRoZSBhcm12NXRlCi0gICAgaW5zdHJ1Y3Rpb25zIGxkcmQvc3RyZCBpbnN0cnVjdGlvbnMgcmVxdWlyZSA4LWJ5dGUgYWxpZ25tZW50IHRvIHdvcmsKLSAgICBwcm9wZXJseSAob3RoZXJ3aXNlIHVuZGVmaW5lZCBiZWhhdmlvcikuCi0KLSAgICBUZXN0ZWQgb24gYW4gT3BlblJEIGJhc2UgYm9hcmQsIHdoZXJlIGJvdGggcHJpbnRvdXRzIGFuZCB1YmlmcyBzdHVmZiBub3cKLSAgICB3b3Jrcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLQotY29tbWl0IGU2M2U1OTA0YjQ4NTI4ZjNmM2NjOTgzMTdkZjZmYzYyZmFiMjViZjkKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU2F0IE9jdCAxNyAxMjo0MTowNiAyMDA5IC0wNTAwCi0KLSAgICBUSSBPTUFQMyBTRFAzNDMwOiBJbml0aWFsIFN1cHBvcnQKLQotICAgIFN0YXJ0IG9mIHN1cHBvcnQgb2YKLSAgICBUZXhhcyBJbnN0cnVtZW50cyBTb2Z0d2FyZSBEZXZlbG9wbWVudCBQbGF0Zm9ybShTRFApCi0gICAgZm9yIE9NQVAzNDMwIC0gU0RQMzQzMAotCi0gICAgSGlnaGxpZ2h0cyBvZiB0aGlzIHBsYXRmb3JtIGFyZToKLSAgICBGbGFzaCBNZW1vcnkgZGV2aWNlczoKLQlTaWJsZXkgTk9SLCBNaWNyb24gOGJpdCBOQU5EIGFuZCBPbmVOQU5ECi0gICAgQ29ubmVjdGl2aXR5OgotCTMgVUFSVHMgYW5kIGV4cGFuZGVkIDQgVUFSVCBwb3J0cyArIElyREEKLQlFdGhlcm5ldCwgVVNCCi0gICAgT3RoZXIgcGVyaXBoZXJhbHM6Ci0JVFdMNTAzMCBQTUlDK0F1ZGlvK0tleXBhZAotCVZHQSBkaXNwbGF5Ci0gICAgRXhwYW5zaW9uIHBvcnRzOgotCU1lbW9yeSBkZXZpY2VzIHBsdWdpbiBib2FyZHMgKFBJU01PKQotCUNvbm5lY3Rpdml0eSBib2FyZCBmb3IgR1BTLFdMQU4gZXRjLgotICAgIENvbXBsZXRlbHkgY29uZmlndXJhYmxlIGJvb3Qgc2VxdWVuY2UgYW5kIGRldmljZSBtYXBwaW5nCi0gICAgZXRjLgotCi0gICAgU3VwcG9ydCBkZWZhdWx0IGp1bXBlcmluZyBhbmQ6Ci0gICAgIC0gVUFSVDEvdHR5UzAgY29uc29sZShsZWdhY3kgc2RwMzQzMCB1LWJvb3QpCi0gICAgIC0gVUFSVDMvdHR5UzIgY29uc29sZSAobWF0Y2hpbmcgb3RoZXIgYm9hcmRzLAotCQkgYW5kIFNEUCBIVyBkb2NzKQotICAgICAtIEV0aGVybmV0Ci0gICAgIC0gbW1jMAotICAgICAtIE5PUiBib290Ci0KLSAgICBDdXJyZW50bHkgdGhlIFVBUlQxIGlzIGVuYWJsZWQgYnkgZGVmYXVsdC4JZm9yCi0gICAgY29tcGF0aWJpbGl0eSB3aXRoIG90aGVyIE9NQVAzIHUtYm9vdCBwbGF0Zm9ybXMsCi0gICAgZW5hYmxlIHRoZSAjZGVmaW5lIG9mIENPTlNPTEVfSjkuCi0KLSAgICBDb25mbGljdHM6Ci0KLQlNYWtlZmlsZQotCi0gICAgRml4ZWQgdGhlIGNvbmZsaWN0IHdpdGggc21ka2MxMDBfY29uZmlnIGJ5IG1vdmluZyBvbWFwX3NkcDM0MzBfY29uZmlnCi0gICAgdG8gaXQgaXMgYWxwaGFiZXRpY2FsbHkgc29ydGVkIGxvY2F0aW9uIGFib3ZlIHpvb20xLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBhNDQ3NGZmODYyOWJlNWYyOGFlZmI4YTlmNDhkNDQxMWQ2MmZiMGQyCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVR1ZSBPY3QgMTMgMTk6MzU6MTEgMjAwOSAtMDQwMAotCi0gICAgVEkgRGFWaW5jaTogQWRkaW5nIENvcHlyaWdodCBmb3IgRE0zNjUgRVZNCi0KLSAgICBGb3Jnb3QgdG8gYWRkIENvcHlyaWdodCB3aGlsZSBzdWJtaXR0aW5nIHRoZSBwYXRjaC4KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvcHlyaWdodC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDExYjAxMDIyMThiYmI1MGFjNWMwNGYxNTIxZjJhMjJlZDRlOTBjZjEKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJVHVlIE9jdCAxMyAxMjozMjozMiAyMDA5IC0wNDAwCi0KLSAgICBUSSBEYVZpbmNpOiBGaXggRE02NDY3IEVWTSBDb21waWxhdGlvbiBXYXJuaW5nCi0KLSAgICBEdWUgdG8gbmV3IFRJIGJvYXJkcyBiZWluZyBhZGRlZCB0byBVLUJvb3QsIHRoZSBoYXJkd2FyZS5oCi0gICAgaXMgZ2V0dGluZyB2ZXJ5IG1lc3N5LiBUaGUgd2FybmluZyBiZWluZyBmaXhlZCBpcyBkdWUgdG8KLSAgICB0aGUgRU1JRiBhZGRyZXNzZXMgYmVpbmcgcmVkZWZpbmVkLgotCi0gICAgVGhlIGxvbmcgdGVybSBzb2x1dGlvbihhZnRlciAyMDA5LjExKSB0byB0aGlzIGlzIHRvCi0gICAgaGF2ZSBTT0Mgc3BlY2lmaWMgaGVhZGVyIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgZmFjMWVmNGJhNjg1NjA2YmYyODM0OWQxOGUwNTBlYTA4YjUwZTY2OQotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglUdWUgT2N0IDEzIDEyOjAxOjUyIDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2k6IERNMzU1IExlb3BhcmQ6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nCi0KLSAgICBXZSBnZXQgYSBjb21wbGlhdGlvbiB3YXJuaW5nIHdoZW4gd2UgZW5hYmxlIHRoZSBOQU5EIGRyaXZlcgotICAgIGZvciBETTM1NSBsZW9wYXJkLiBUaGUgd2FyaW5nIHdlIGdldCBpcyB0aGF0IHdlIGhhdmUKLSAgICBhbiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBkYXZpbmNpX25hbmRfaW5pdC4KLQotICAgIEl0IGlzIGZpeGVkIGJ5IGluY2x1ZGluZyB0aGUgYXNtL2FyY2gvbmFuZF9kZWZzLmggaGVhZGVyIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGY4YTgxMmFhNjU2YmMzNDYyMjMwM2EyNmZhNTAwM2QxOWMzNGFlZWQKLUF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLURhdGU6CVR1ZSBPY3QgMTMgMTI6NDk6NTUgMjAwOSAtMDQwMAotCi0gICAgVEkgT01BUDM6IG1ha2UgZ3BtY19jb25maWcgYXMgY29uc3QKLQotICAgIGdwbWNfY29uZmlnIHNob3VsZCBub3QgYmUgYSB2YXJpYW50IGFzIGl0IGlzIGJvYXJkIHNwZWNpZmljCi0gICAgaGVuY2UgbWFrZSBpdCBhIGNvbnN0IHBhcmFtZXRlcgotCi0gICAgRml4ZXMgaXNzdWVzIGlkZW50aWZpZWQgYnkgRGlyazoKLSAgICAtIGJ1aWxkIGlzc3VlIGZvciB6b29tMgotICAgIC0gd2FybmluZ3MgZm9yIGFsbCBvdGhlciBPTUFQMyBwbGF0Zm9ybXMgdXNpbmcgbmFuZC9vbmVuYW5kIGV0YwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLQotY29tbWl0IGNmYzI1ODc0NjI0YTMyOGY1M2FkNTliMTIwNmUyMTAzZjJlNjJkNzQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE9jdCAxOSAxNjoxOTozNiAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFNlcXVvaWE6IEFkZCBjaGlwX2NvbmZpZyBjb21tYW5kCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIFNlcXVvaWEgImJvb3RzdHJhcCIgY29tbWFuZCBhbmQgcmVwbGFjZXMgaXQKLSAgICB3aXRoIHRoZSBub3cgY29tbW9uIGNvbW1hbmQgImNoaXBfY29uZmlnIi4KLQotICAgIFBsZWFzZSBub3RlIHRoYXQgdGhlIHBhdGNoZXMgd2l0aCB0aGUgZHluYW1pYyBQQ0kgc3luYyBjbG9jawotICAgIGNvbmZpZ3VyYXRpb24gaGF2ZSB0byBiZSBhcHBsaWVkLCBiZWZvcmUgdGhpcyBvbmUgc2hvdWxkIGdvIGluLgotICAgIFRoaXMgaXMgYmVjYXVzZSBTZXF1b2lhIGhhcyAyIGRpZmZlcmVudCBib290c3RyYXAgRUVQUk9NcywgYW5kCi0gICAgdGhlIG9sZCBib290c3RyYXAgY29tbWFuZCBjb25maWd1cmVkIGRpZmZlcmVudCB2YWx1ZXMgZGVwZW5kaW5nCi0gICAgb24gdGhlIGRldGVjdGVkIFBDSSBhc3luYyBjbG9jayAoMzMgdnMuIDY2TUh6KS4gV2l0aCB0aGUgUENJIHN5bmMKLSAgICBjbG9jayBwYXRjaGVzLCB0aGlzIGlzIG5vdCBuZWNlc3NhcnkgYW55bW9yZS4gVGhlIFBDSSBzeW5jIGNsb2NrCi0gICAgd2lsbCBiZSBjb25maWd1cmVkIGNvcnJlY3RseSBvbi10aGUtZmx5IG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGM4NWI1ODM5NzAzMGUyNWUxNDZjY2Y1MDg1Yzg2MjIxYzQwYzUzYjMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE9jdCAxOSAxNDoxNDowOCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFlvc2VtaXRlL1llbGxvd3N0b25lOiBDaGVjayBhbmQgcmVjb25maWd1cmUgdGhlIFBDSSBzeW5jIGNsb2NrCi0KLSAgICBUaGlzIHBhdGNoIG5vdyB1c2VzIHRoZSA0NDBFUCh4KS9HUih4KSBmdW5jdGlvbiB0byBjaGVjayBhbmQgZHluYW1pY2FsbHkKLSAgICByZWNvbmZpZ3VyZSB0aGUgUENJIHN5bmMgY2xvY2suCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyM2M1MWEyZDYzOTNjZDNiZTllYjYyY2I0MmQ5MjEzOGZmNmRiOGE5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBPY3QgMTkgMTQ6MTA6NTAgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBTZXF1b2lhL1JhaW5lcjogQ2hlY2sgYW5kIHJlY29uZmlndXJlIHRoZSBQQ0kgc3luYyBjbG9jawotCi0gICAgVGhpcyBwYXRjaCBub3cgdXNlcyB0aGUgNDQwRVAoeCkvR1IoeCkgZnVuY3Rpb24gdG8gY2hlY2sgYW5kIGR5bmFtaWNhbGx5Ci0gICAgcmVjb25maWd1cmUgdGhlIFBDSSBzeW5jIGNsb2NrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDhjNmEyNjI4NDc4YWNlODA4YjM3NjdkYjE3ZTQxNDhjYWM1YTdmYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gT2N0IDE5IDE0OjQ0OjExIDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogUHJpbnQgUENJIHN5bmNocm9ub3VzIGNsb2NrIGZyZXF1ZW5jeSB1cG9uIGJvb3R1cAotCi0gICAgU29tZSA0eHggdmFyaWFudHMgKGUuZy4gNDQwRVAoeCkvR1IoeCkpIGhhdmUgYW4gaW50ZXJuYWwKLSAgICBzeW5jaHJvbm91cyBQQ0kgY2xvY2suIEtub3dsZWRnZSBhYm91dCB0aGUgY3VycmVudGx5IGNvbmZpZ3VyZWQKLSAgICB2YWx1ZSBtaWdodCBiZSBoZWxwZnVsLiBTbyBsZXQncyBwcmludCBpdCBvdXQgdXBvbiBib290dXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZTQ3Zjk1MzVmNTNmZDRjYzA1ZjMyZmI2MTY2ODcwZjk3NmZiYjRlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBPY3QgMTkgMTQ6MDY6MjMgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgZnVuY3Rpb24gdG8gY2hlY2sgYW5kIGR5bmFtaWNhbGx5IGNoYW5nZSBQQ0kgc3luYyBjbG9jawotCi0gICAgUFBDNDQwRVAoeCkvUFBDNDQwR1IoeCk6Ci0gICAgSW4gYXN5bmNocm9ub3VzIFBDSSBtb2RlLCB0aGUgc3luY2hyb25vdXMgUENJIGNsb2NrIG11c3QgbWVldAotICAgIGNlcnRhaW4gcmVxdWlyZW1lbnRzLiBUaGUgZm9sbG93aW5nIGVxdWF0aW9uIGRlc2NyaWJlcyB0aGUKLSAgICByZWxhdGlvbnNoaXAgdGhhdCBtdXN0IGJlIG1haW50YWluZWQgYmV0d2VlbiB0aGUgYXN5bmNocm9ub3VzIFBDSQotICAgIGNsb2NrIGFuZCBzeW5jaHJvbm91cyBQQ0kgY2xvY2suIFNlbGVjdCBhbiBhcHByb3ByaWF0ZSBQQ0k6UExCCi0gICAgcmF0aW8gdG8gbWFpbnRhaW4gdGhlIHJlbGF0aW9uc2hpcDoKLQotICAgIEFzeW5jUENJQ2xrIC0gMU1IeiA8PSBTeW5jUENJY2xvY2sgPD0gKDIgKiBBc3luY1BDSUNsaykgLSAxTUh6Ci0KLSAgICBUaGlzIHBhdGNoIG5vdyBhZGRzIGEgZnVuY3Rpb24gdG8gY2hlY2sgYW5kIHJlY29uZmlndXJlIHRoZSBzeW5jCi0gICAgUENJIGNsb2NrIHRvIG1lZXQgdGhpcyByZXF1aXJlbWVudC4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiBmb3IKLSAgICBzb21lIEFNQ0MgYm9hcmRzIChTZXF1b2lhL1JhaW5pZXIgYW5kIFlvc2VtaXRlL1llbGxvd3N0b25lKSB1c2luZyB0aGlzCi0gICAgZnVuY3Rpb24gdG8gbm90IHZpb2xhdGUgdGhlIFBDSSBjbG9ja2luZyBydWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDkyYjg5NjRiZWQwZDFiNzc5ZDllMjZiZTRlMTY3NTViNWM2MzU0MTUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAxNiAxMDowMTowOSAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBmbGFzaCBzaXplIGluIHJlZyBwcm9wZXJ0eSBvZiB0aGUgTk9SIGZsYXNoIG5vZGUKLQotICAgIFRpbGwgbm93IG9ubHkgdGhlIHJhbmdlcyBpbiB0aGUgZWJjIG5vZGUgYXJlIHVwZGF0ZWQgd2l0aCB0aGUgdmFsdWVzCi0gICAgY3VycmVudGx5IGNvbmZpZ3VyZWQgaW4gdGhlIFBQQzR4eCBFQkMgY29udHJvbGxlci4gV2l0aCB0aGlzIHBhdGNoIG5vdwotICAgIHRoZSBOT1IgZmxhc2ggc2l6ZSBpcyB1cGRhdGVkIGluIHRoZSBkZXZpY2UgdHJlZSBibG9iIGFzIHdlbGwuIFRoaXMgaXMKLSAgICBkb25lIGJ5IHNjYW5uaW5nIHRoZSBjb21wYXRpYmxlIG5vZGVzICJjZmktZmxhc2giIGFuZCAiamVkZWMtZmxhc2giCi0gICAgZm9yIHRoZSBjb3JyZWN0IGNoaXAgc2VsZWN0IG51bWJlci4KLQotICAgIFRoaXMgc2l6ZSBmaXh1cCBpcyBlbmFibGVkIGZvciBhbGwgQU1DQyBldmFsIGJvYXJkIHJpZ2h0IG5vdy4gT3RoZXIKLSAgICA0eHggYm9hcmRzIG1heSB3YW50IHRvIGVuYWJsZSBpdCBhcyB3ZWxsLCBpZiB0aGlzIHByb2JsZW0gd2l0aCBtdWx0aXBsZQotICAgIE5PUiBGTEFTSCBzaXplcyBleGlzdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzMGQ0NWMwZDNlYTIyMzFmOTEzMTI3NmVhMTEzNTk1OTU5YTA3MjBlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMjEgMTE6NTk6NTIgMjAwOSArMDIwMAotCi0gICAgZmR0OiBBZGQgZmR0X2ZpeHVwX25vcl9mbGFzaF9zaXplKCkgdG8gZml4dXAgTk9SIEZMQVNIIHNpemUgaW4gZHRiCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGNhbiBiZSB1c2VkIHRvIHVwZGF0ZSB0aGUgc2l6ZSBpbiB0aGUgInJlZyIgcHJvcGVydHkKLSAgICBvZiB0aGUgTk9SIEZMQVNIIGRldmljZSBub2Rlcy4gVGhpcyBpcyBuZWNlc3NhcnkgZm9yIGJvYXJkcyB3aXRoCi0gICAgbm9uLWZpeGVkIE5PUiBGTEFTSCBzaXplcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLSAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDc2NzA2Y2I4NmIxYzc2OTU0ZmY1MzUzZGI2NzU3YWI5OWNmZDk1ZmIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBPY3QgMjAgMjM6MTI6MTMgMjAwOSArMDIwMAotCi0gICAgY3B1L3BwYzR4eC9mZHQuYzogYXZvaWQgc3RyY3B5KCkgdG8gY29uc3RhbnQgc3RyaW5nCi0KLSAgICBzdHJjcHkoKSB3YXMgaXVzZWQgd2l0aCB0aGUgdGFyZ2V0IGFkZHJlc3MgYmVpbmcgYSBwb2ludGVyIHRvIGEKLSAgICBjb25zdGFudCBzdHJpbmcsIHdoaWNoIHBvdGVudGlhbGx5IGlzIHJlYWQtb25seS4gVXNlIGEgKHdyaXRhYmxlKQotICAgIGFycmF5IG9mIGNoYXJhY3RlcnMgaW5zdGVhZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGUxYWM5ODExOTRhYTBkOTJlZmYwOTM0NDQyY2VjNDhhNGY1NzgzNAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyMCAyMzowNzowNCAyMDA5ICswMjAwCi0KLSAgICBjcHUvcHBjNHh4L2ZkdC5jOiBhdm9pZCBzdHJjcHkoKSB0byBjb25zdGFudCBzdHJpbmcKLQotICAgIHN0cmNweSgpIHdhcyBpdXNlZCB3aXRoIHRoZSB0YXJnZXQgYWRkcmVzcyBiZWluZyBhIHBvaW50ZXIgdG8gYQotICAgIGNvbnN0YW50IHN0cmluZywgd2hpY2ggcG90ZW50aWFsbHkgaXMgcmVhZC1vbmx5LiBVc2UgYSAod3JpdGFibGUpCi0gICAgYXJyYXkgb2YgY2hhcmFjdGVycyBpbnN0ZWFkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGM1NTA5NmMwODQzMDhjMDhiZjg4OTFjMTkwZjkwYmRjM2EyMzIzOTQKLUF1dGhvcjogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KLURhdGU6CVdlZCBBcHIgOCAxMzoyMzozOCAyMDA5ICswMjAwCi0KLSAgICBzbWM5MTF4OiBhZGQgc3VwcG9ydCBmb3IgTEFOOTIyMAotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KLSAgICBDYzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmNjcwNjZiNmIwNzQwYjgyNmVkODYyNjE1YzVhYjAyMmFhZjQ3NzlhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBPY3QgMTggMjA6NDM6MTQgMjAwOSAtMDQwMAotCi0gICAgZW52Y3JjOiBjaGVjayByZXR1cm4gdmFsdWUgb2YgZndyaXRlKCkKLQotICAgIE5ld2VyIHRvb2xjaGFpbnMgd2lsbCBvZnRlbiBjb21wbGFpbiBhYm91dCB1bmNoZWNrZWQgZndyaXRlKCk6Ci0JZW52Y3JjLmM6MTE3OiB3YXJuaW5nOiBpZ25vcmluZyByZXR1cm4gdmFsdWUgb2YgYGZ3cml0ZbQsIGRlY2xhcmVkCi0JCXdpdGggYXR0cmlidXRlIHdhcm5fdW51c2VkX3Jlc3VsdAotCi0gICAgU28gY2hlY2sgdGhlIHJldHVybiB2YWx1ZSB0byBzaWxlbmNlIHRoZSB3YXJuaW5ncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGVmZDk4OGViYWEyNDFiYWIyNjViMTUxMTA1MjM1MDIwN2NiN2FhYTAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBPY3QgMTkgMDk6MTg6NTcgMjAwOSArMDIwMAotCi0gICAgbWNjMjAwOiBmaXggYnVpbGQgZXJyb3IKLQotICAgIEZpeCBjb21waWxlIGVycm9yOgotICAgIGluY2x1ZGUvY29uZmlncy9tY2MyMDAuaDo0MDE6NjogZXJyb3I6ICNlbGlmIHdpdGggbm8gZXhwcmVzc2lvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDRlMDUzOWQyNjk2OTkyYTVlMzI2NDNhMGM4MzFlODcwY2ZlOWEwMzYKLUF1dGhvcjogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLURhdGU6CVR1ZSBPY3QgMTMgMTI6NDc6MzkgMjAwOSAtMDQwMAotCi0gICAgT01BUDM6IGZpeCB3YXJuaW5ncyB3aGVuIE5BTkQvT05FTkFORCBpcyBub3QgdXNlZAotCi0gICAgRml4IGJ1aWxkIHdhcm5pbmdzIGJ5IHB1dHRpbmcgc3BlY2lmaWMgdXNlZCB2YXJpYWJsZXMKLSAgICB1bmRlciByZXF1aXJlZCAjaWZkZWZzIGZvciByZW1vdmluZzoKLSAgICBtZW0uYzoyMjc6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZl9zZWMnCi0gICAgbWVtLmM6MjI2OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2Zfb2ZmJwotICAgIG1lbS5jOjIyNTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdzaXplJwotICAgIG1lbS5jOjIyNDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdiYXNlJwotICAgIG1lbS5jOjIyMjogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdncG1jX2NvbmZpZycKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci0KLWNvbW1pdCA3M2RiMGM3MWRhMzY1YTJkMTAxODc4YWUzYWViOGZmMzU0NWExODI4Ci1BdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci1EYXRlOglUdWUgT2N0IDEzIDEyOjQ3OjI0IDIwMDkgLTA0MDAKLQotICAgIE9NQVAzOiBleHBvcnQgZW5hYmxlX2dwbWNfY3NfY29uZmlnIHRvIGJvYXJkIGZpbGVzCi0KLSAgICBFeHBvcnQgZW5hYmxlX2dwbWNfY3NfY29uZmlnIGludG8gY29tbW9uIGhlYWRlciB0bwotICAgIHByZXZlbnQgd2FybmluZzoKLQotICAgIHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdlbmFibGVfZ3BtY19jc19jb25maWcnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgotCi1jb21taXQgOTZhMjdjNmRjMjlhYmYxMTc0MDYzMmVjZDhjY2FiNjA3YjIwOWM1ZAotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglNb24gT2N0IDEyIDEyOjA3OjQwIDIwMDkgLTA0MDAKLQotICAgIFpvb20yIEZpeCBzZXJpYWwgZ3BtYyBzZXR1cAotCi0gICAgVGhlIG9mZnNldCB0byB0aGUgY2hpcCBzZWxlY3QgaXMgaW5jb3JyZWN0LgotCi0gICAgVGhlIGNoYW5nZSAxODdhZjk1NGNmNzk1OGMyNGVmY2YwZmQ2MjI4OWJiZGI0ZjFmMjRlLAotCi0gICAgb21hcDM6IGVtYmVkZCBncG1jX2NzIGludG8gZ3BtYyBjb25maWcgc3RydWN0Ci0KLSAgICBpbnRyb2R1Y2VkIGEgcHJvYmxlbSB3aXRoIHRoZSBzZXJpYWwgZ3BtYyBzZXR1cC4KLQotICAgIFRoaXMgcGF0Y2ggcmV2ZXJ0cyB0aGUgY2hpcCBzZWxlY3QgdG8gaXRzIHByZXZpb3VzIHZhbHVlLgotCi0gICAgVGhlIHN5bXB0b21zIG9mIHRoaXMgcHJvYmxlbSBhcmUgdGhhdCB0aGUgWm9vbTIKLSAgICBjdXJyZW50bHkgaGFuZ3MuCi0KLSAgICBUaGlzIHdhcyBydW4gdGVzdGVkIG9uIFpvb20yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgNjRkOTQ1YWJlOGNmZmJhY2RhZWNhNWY2M2I5Yjg0Zjg5NWQyZDlhYgotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglTdW4gT2N0IDExIDA5OjEwOjI3IDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2kgU29uYXRhOiBBZGQgQ29uZmlnIG9wdGlvbiBmb3IgNjQgYml0IFN1cHBvcnQKLQotICAgIEFkZGluZyB0aGUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBmb3QgdGhlIERNNjQ0eCBiYXNlZCBTb25hdGEKLSAgICBXaXRob3V0IHRoaXMgb3B0aW9uIGVuYWJsZWQgd2hpbGUgcGVyZm9ybWluZyBOQU5EIG9wZXJhdGlvbnMgd2Ugd2lsbCBnZXQKLSAgICB3cm9uZyBkaWFnbm9zdGljIG1lc3NhZ2VzLgotICAgIEV4YW1wbGUgaWYgdGhlIE1URCBOQU5EIGRyaXZlciBmaW5kIGEgYmFkIGJsb2NrIHdoaWxlIGVyYXNpbmcgZnJvbQotICAgIGEgY2VydGFpbiBhZGRyZXNzLCBpdCB3aWxsIHNheSBiYWQgYmxvY2sgc2tpcHBlZCBhdCAweDAwMDAwMDAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgNTRhYTYwM2QyY2UxZDkzNzRhMWY1YzYzMzYzNjIwMzdhZDJkOGI1MQotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglTdW4gT2N0IDExIDA5OjE0OjU4IDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2kgRFZFVk06IEFkZCBDb25maWcgb3B0aW9uIGZvciA2NCBiaXQgU3VwcG9ydAotCi0gICAgQWRkaW5nIHRoZSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIGluIHRoZSBEVkVWTSBjb25maWcuCi0gICAgV2l0aG91dCB0aGlzIG9wdGlvbiBlbmFibGVkIHdoaWxlIHBlcmZvcm1pbmcgTkFORCBvcGVyYXRpb25zIHdlIHdpbGwgZ2V0Ci0gICAgd3JvbmcgZGlhZ25vc3RpYyBtZXNzYWdlcy4KLSAgICBFeGFtcGxlIGlmIHRoZSBNVEQgTkFORCBkcml2ZXIgZmluZCBhIGJhZCBibG9jayB3aGlsZSBlcmFzaW5nIGZyb20KLSAgICBhIGNlcnRhaW4gYWRkcmVzcywgaXQgd2lsbCBzYXkgYmFkIGJsb2NrIHNraXBwZWQgYXQgMHgwMDAwMDAwMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGI4ZDBhYTBjNzhiOGMwZmE1MWFjYWRhM2M0ODZiODEwODU5MjRiNTMKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJU2F0IE9jdCAxMCAxMDoxOToyMCAyMDA5IC0wNDAwCi0KLSAgICBUSSBEYVZpbmNpIERNMzY1OiBBZGQgQ29uZmlnIG9wdGlvbiBmb3IgNjQgYml0IFN1cHBvcnQKLQotICAgIEFkZGluZyB0aGUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBpbiB0aGUgRE0zNjUgRVZNIGNvbmZpZy4KLSAgICBXaXRob3V0IHRoaXMgb3B0aW9uIGVuYWJsZWQgd2hpbGUgcGVyZm9ybWluZyBOQU5EIG9wZXJhdGlvbnMgd2Ugd2lsbCBnZXQKLSAgICB3cm9uZyBkaWFnbm9zdGljIG1lc3NhZ2VzLgotICAgIEV4YW1wbGUgaWYgdGhlIE1URCBOQU5EIGRyaXZlciBmaW5kIGEgYmFkIGJsb2NrIHdoaWxlIGVyYXNpbmcgZnJvbQotICAgIGEgY2VydGFpbiBhZGRyZXNzLCBpdCB3aWxsIHNheSBiYWQgYmxvY2sgc2tpcHBlZCBhdCAweDAwMDAwMDAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgODZhNzI1YjljOGI4MjljMjE3YmU5MGU1OTBmM2NhMmM5MWZhMWRjYQotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglTYXQgT2N0IDEwIDEwOjE4OjQ2IDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2kgRE0zNTU6IEFkZCBDb25maWcgb3B0aW9uIGZvciA2NCBiaXQgU3VwcG9ydAotCi0gICAgQWRkaW5nIHRoZSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIGluIHRoZSBETTM1NSBFVk0gY29uZmlnLgotICAgIFdpdGhvdXQgdGhpcyBvcHRpb24gZW5hYmxlZCB3aGlsZSBwZXJmb3JtaW5nIE5BTkQgb3BlcmF0aW9ucyB3ZSB3aWxsIGdldAotICAgIHdyb25nIGRpYWdub3N0aWMgbWVzc2FnZXMuCi0gICAgRXhhbXBsZSBpZiB0aGUgTVREIE5BTkQgZHJpdmVyIGZpbmQgYSBiYWQgYmxvY2sgd2hpbGUgZXJhc2luZyBmcm9tCi0gICAgYSBjZXJ0YWluIGFkZHJlc3MsIGl0IHdpbGwgc2F5IGJhZCBibG9jayBza2lwcGVkIGF0IDB4MDAwMDAwMDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA5YzQ0ZGRjY2I2NjAyZjYyMGZjMDM3OTc0ZjNlNDQ2OGFkOGE3YzBjCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVdlZCBTZXAgOSAxMTo1MDo0MCAyMDA5IC0wNDAwCi0KLSAgICBUSTogT01BUDM6IFJlbW92ZSBTWl94eCByZWZlcmVuY2VzCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgZGVwZW5kZW5jeSBvbiB0aGUgc2l6ZXMuaCBoZWFkZXIgZmlsZQotICAgIGFuZCByZW1vdmVzIGFsbCByZWZlcmVuY2VzIHRvIFNaX3h4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgMTNkMmNiOTg4ZmYwN2FkZGNlNmUxMGFiMmNiODk2NWE5ZGQyM2M2MwotQXV0aG9yOiBTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBPY3QgMTAgMTQ6Mjk6MzcgMjAwOSAtMDQwMAotCi0gICAgT01BUDM6IFVwZGF0ZSBPdmVybyBhbmQgQmVhZ2xlIGVudmlyb25tZW50Ci0KLSAgICBVcGRhdGUgZGVmYXVsdCBlbnZpcm9ubWVudCB0byBzdXBwb3J0IG5ldyBrZXJuZWwgRFNTMiBzdWJzeXN0ZW0gYW5kCi0gICAgc2ltcGxpZnkgcm9vdGZzIHR5cGUgYW5kIGxvY2F0aW9uIGNoYW5nZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzYWtvbWFuQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgYzczNjA3YzU1MjVjNjk1N2M4MTVlNjRmN2U4NjVmZGQzYmFmZmU5OAotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglTYXQgT2N0IDEwIDEzOjQ2OjI2IDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2k6IE1haW50YWluZXIgZm9yIERNMzU1IGFuZCBETTM2NSBFVk0KLQotICAgIEFkZGluZyBlbnRyaWVzIHRvIHRoZSBNQUlOVEFJTkVSUyBkaXJlY3RvcnkgZm9yIHRoZQotICAgIERNMzU1IGFuZCBETTM2NSBFVk0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA1ZGY2NWNmNTZhZWVmOWZkZWFiODNhMjU5YzM3YWE3ZDIzODM2ZGQzCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVNhdCBPY3QgMTAgMTM6Mzc6MTAgMjAwOSAtMDQwMAotCi0gICAgVEk6IERhVmluY2k6IERNMzU1IExlb3BhcmQgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBsZW9wYXJkIGJvYXJkIHdoaWNoIGlzCi0gICAgYmFzZWQgb24gdGhlIERNMzU1IFNPQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDZhYjE3NmQ3MDkxZDIxOTYwYTFiZDg5ZmNiN2ZkODdiOWU5MWFjYTEKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJU2F0IE9jdCAxMCAxMjowMDo0NyAyMDA5IC0wNDAwCi0KLSAgICBUSSBEYVZpbmNpIERNNjQ2eDogQWRkaW5nIGluaXRpYWwgc3VwcG9ydCBmb3IgRE02NDY3IEVWTQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBpbml0aWFsIHN1cHBvcnQgZm9yIERNNjQ2NyBFVk0uCi0gICAgT3RoZXIgZmVhdHVyZXMgbGlrZSBORVQgYW5kIE5BTkQgc3VwcG9ydCB3aWxsIGJlIGFkZGVkIGFzIGZvbGxvdyB1cCBwYXRjaGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgZDg4NGY2NGE3Yjg0ODJmNmM5Njg4NjAwZTBhNDczMWZhNTY3OGUwYwotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglUaHUgT2N0IDEgMjA6MjI6MDkgMjAwOSAtMDQwMAotCi0gICAgVEkgRGFWaW5jaSBETTM2NTogRml4IENvbXBpbGF0aW9uIHdhcm5pbmcgZm9yIERNMzY1IEVWTQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIGNvbXBpbGF0aW9uIHdhcm5pbmcgd2hpbGUgY29tcGlsaW5nCi0gICAgdGhlIERNMzY1IEVWTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDZmZTVlODdiZTRiOTQ0ZWRmNDI4ODM1MjEwMDU2ZTAyMGM4YmI3OTQKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJVGh1IE9jdCAxIDIwOjIxOjEzIDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2kgRE0zNTU6IEZpeCBDb21waWxhdGlvbiB3YXJuaW5nIGZvciBETTM1NSBFVk0KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBjb21waWxhdGlvbiB3YXJuaW5nIHdoaWxlIGNvbXBpbGluZwotICAgIHRoZSBETTM1NSBFVk0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA1MTNiYmUxYjE3MjA2ODJlNmRlMGFiYTJkOWRiNWU2MGYzYTQyOGJiCi1BdXRob3I6IEVyaWMgQmVuYXJkIDxlcmljQGV1a3JlYS5jb20+Ci1EYXRlOglNb24gT2N0IDEyIDEwOjE1OjM5IDIwMDkgKzAyMDAKLQotICAgIEFUOTEgQ1BVQVQ5MSBGaXggY29tcGlsZXIgd2FybmluZwotCi0gICAgVGhpcyBjaGFuZ2UgZml4ZXMgdGhlIGNvbXBpbGVyIHdhcm5pbmcKLQotICAgIG1haW4uYzogSW4gZnVuY3Rpb24gJ2Fib3J0Ym9vdCc6Ci0gICAgbWFpbi5jOjEyMjogd2FybmluZzogdG9vIGZldyBhcmd1bWVudHMgZm9yIGZvcm1hdAotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBiMWU4MWY3MDFkMDQ0ZWVlMzg4NDIwMmIxMjdkNWQxZjA2NjhiZGI5Ci1BdXRob3I6IEVyaWMgQmVuYXJkIDxlcmljQGV1a3JlYS5jb20+Ci1EYXRlOglNb24gT2N0IDEyIDEwOjE1OjQwIDIwMDkgKzAyMDAKLQotICAgIEFUOTEgQ1BVOTI2MCBDUFU5RzIwIEZpeCBjb21waWxlIHdhcm5pbmdzCi0KLSAgICBUaGlzIGNoYW5nZSBmaXhlcyB0aGUgY29tcGlsZXIgd2FybmluZwotCi0gICAgbmFuZF91dGlsLmM6NDU6Mjogd2FybmluZzogI3dhcm5pbmcgUGxlYXNlIGRlZmluZSBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGCi0gICAgICBmb3IgY29ycmVjdCBvdXRwdXQhCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIEJlbmFyZCA8ZXJpY0BldWtyZWEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDk0ZDUwYzUyN2EzY2VkYjZhNDFmYmU2NzczMjU2Y2RkMTg1NTMxN2YKLUF1dGhvcjogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KLURhdGU6CU1vbiBPY3QgMTIgMTA6MDg6MjAgMjAwOSArMDIwMAotCi0gICAgQVQ5MSBDUFU5MjYwIEZpeCBtYWNoaW5lIElEIHdoZW4gdXNpbmcgYSBDUFU5RzIwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA4YzBhOTJjOGY0Y2YzOTllODczYzI2MTE5MzlmMzYxNzk4Mzc4NWE5Ci1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglTYXQgT2N0IDEwIDExOjUxOjI2IDIwMDkgKzAyMDAKLQotICAgIGxjZDogcmVtb3ZlICcjaWYgMCcgMzItYml0IHNjcm9sbCwgbm93IG1lbWNweSBkb2VzIGl0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KLQotY29tbWl0IGUzZWE5NDhkNDU4OGU3ZWZkZGJmMGVlOTIxNDdkOTNmODI3ZDdjZWEKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLURhdGU6CVNhdCBPY3QgMTAgMTE6NTE6MTYgMjAwOSArMDIwMAotCi0gICAgbGliX2dlbmVyaWMgbWVtc2V0OiBmaWxsIG9uZSB3b3JkIGF0IGEgdGltZSBpZiBwb3NzaWJsZQotCi0gICAgSWYgdGhlIGRlc3RpbmF0aW9uIGlzIGFsaWduZWQsIGZpbGwgdWxvbmcgdmFsdWVzIHVudGlsIHBvc3NpYmxlLgotICAgIFRoZW4gZmlsbCByZW1haW5pbmcgcGFydCBieSBieXRlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLSAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+Ci0gICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGVjZDgzMGI4NjNlNWM2YWM1ZDgwNGQzYjNhOTI0NTNhOThkNTI2ZmMKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLURhdGU6CVNhdCBPY3QgMTAgMTE6NTE6MDUgMjAwOSArMDIwMAotCi0gICAgbGliX2dlbmVyaWMgbWVtY3B5OiBjb3B5IG9uZSB3b3JkIGF0IGEgdGltZSBpZiBwb3NzaWJsZQotCi0gICAgSWYgc291cmNlIGFuZCBkZXN0aW5hdGlvbiBhcmUgYWxpZ25lZCwgdGhpcyBjb3BpZXMgdWxvbmcgdmFsdWVzCi0gICAgdW50aWwgcG9zc2libGUsIHRyYWlsaW5nIHBhcnQgaXMgY29waWVkIGJ5IGJ5dGUuIFRoYW5rcyBmb3IgdGhlIGRldGFpbHMKLSAgICB0byBXb2xmZ2FuZyBEZW5rLCBNaWtlIEZyeXNpbmdlciwgUGV0ZXIgVHlzZXIsIENocmlzIE1vb3JlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLSAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+Ci0gICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDljNTU4NmFhMTliYmVkZjI5MGQyYTY2MzgxMzQwNGQyZGI4N2RmYTUKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLURhdGU6CVRodSBPY3QgOCAxNDoyOToxNCAyMDA5ICswMjAwCi0KLSAgICBzZXRlbnY6IGRvIGNvbnNvbGUgcmVkaXJlY3Rpb24gZXZlbiBpZiBwcmV2aW91c2x5IHVuc2V0Ci0KLSAgICBJZiAic3Rkb3V0IiBpcyBub3QgcHJldmlvdXNseSBzZXQsIGRvaW5nICJzZXRlbnYgc3Rkb3V0IGxjZCIgaGFkIG5vCi0gICAgZWZmZWN0LCBzaW5jZSBjb25zb2xlIHJlZGlyZWN0aW9uIG9ubHkgd29ya2VkIGlmIHRoZSBlbnZpcm9ubWVudAotICAgIHZhcmlhYmxlIHdhcyBhbHJlYWR5IHNldDsgdGhlIHNlY29uZCB0aW1lIHlvdSBydW4gc2V0ZW52IGl0IHdvcmtlZC4KLSAgICBNb3N0IGRlZmF1bHQgZW52aXJvbm1lbnRzIGxhY2sgc3RkaW4vb3V0L2VyciBkZWZpbml0aW9ucywgc28gSSdtIHN1cmUKLSAgICBJJ20gbm90IGFsb25lIHdpdGggdGhpcyBwcm9ibGVtLgotCi0gICAgVGhpcyBwYXRjaCBzaW1wbHkgbW92ZXMgYSBibG9jayBvZiBjb2RlIG91dCBvZiBhIGNvbmRpdGlvbmFsLCB0byBkbwotICAgIHRoZSBzYW1lIHdvcmsgZXZlbiBpZiB0aGUgdmFyaWFibGUgd2FzIHByZXZpb3VzbHkgdW5zZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KLQotY29tbWl0IGM5ZWUzOTk3MmE3NzU4ZTg4M2I3M2M2YzBlM2MzYTE0Y2Q1YjJmNDMKLUF1dGhvcjogTWFydGhhIFN0YW4gPG1tYXJ4QHNpbGljb250a3guY29tPgotRGF0ZToJV2VkIE9jdCA3IDA0OjM4OjQ2IDIwMDkgLTA0MDAKLQotICAgIG1wYzUxMng6IGZpeCBTeXN0ZW0gQ2xvY2sgQ29udHJvbCBjb25zdGFudHMgZm9yIFVTQjEgJiBVU0IyCi0KLSAgICBTaWduZXItb2ZmLWJ5OiBNYXJ0aGEgU3RhbiA8bW1hcnhAc2lsaWNvbnRreC5jb20+Ci0KLWNvbW1pdCA4N2IyMmI3Nzg3ZjM5N2ZjM2RhYWQ1NzBkNzExZTQ3OGIxYTdkMjUzCi1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJRnJpIE9jdCAyIDE4OjE4OjMzIDIwMDkgLTA0MDAKLQotICAgIG1lbV9tdGVzdDogZml4IGVycm9yIHJlcG9ydGluZywgYWxsb3cgZXNjYXBlIHdpdGggXkMKLQotICAgIFRoZSBiYXNpYyBtZW10ZXN0IGZ1bmN0aW9uIHRyaWVzIHRvIHdhdGNoIGZvciBeQyBhZnRlciBlYWNoCi0gICAgcGF0dGVybiBwYXNzIGFzIGFuIGVzY2FwZSBtZWNoYW5pc20sIGJ1dCBpZiB0aGluZ3MgYXJlIGhvcnJpYmx5Ci0gICAgd3JvbmcsIHdlJ2xsIGJlIHN0dWNrIGluIGFuIGlubmVyIGxvb3AgZmxvb2RpbmcgdGhlIGNvbnNvbGUgd2l0aAotICAgIGVycm9yIG1lc3NhZ2VzIGFuZCBuZXZlciBjaGVjayBmb3IgXkMuICBUbyBtYWtlIG1hdHRlcnMgd29yc2UsCi0gICAgaWYgdGhlIHVzZXIgd2FpdHMgZm9yIGFsbCB0aGUgZXJyb3IgbWVzc2FnZXMgdG8gY29tcGxldGUsIHdlCi0gICAgdGhlbiBpbmNvcnJlY3RseSByZXBvcnQgdGhlIHRlc3QgcGFzc2VkIHdpdGhvdXQgZXJyb3JzLgotCi0gICAgQWRkaW5nIGEgY2hlY2sgZm9yIF5DIGFmdGVyIGFueSBlcnJvciBpcyBwcmludGVkIHdpbGwgZ2l2ZQotICAgIHRoZSBlbmQgdXNlciBhbiBlc2NhcGUgbWVjaGFuaXNtIGZyb20gYSBjb25zb2xlIGZsb29kIHdpdGhvdXQKLSAgICBzbG93aW5nIGRvd24gdGhlIG92ZXJhbGwgdGVzdCBzcGVlZCBvbiBhIHNsb3cgcHJvY2Vzc29yLgotCi0gICAgQWxzbywgdGhlIG1vcmUgZXh0ZW5zaXZlIG1lbXRlc3QgcXVpdCBhZnRlciBqdXN0IGEgc2luZ2xlIGVycm9yLAotICAgIHdoaWNoIGlzIGluY29uc2lzdGVudCB3aXRoIHRoZSBub3JtYWwgbWVtdGVzdCwgYW5kIG5vdCB1c2VmdWwgaWYKLSAgICBpZiB5b3UgYXJlIGRvaW5nIGR5bmFtaWMgZW52aXJvbm1lbnRhbCBpbXBhY3QgdGVzdGluZywgc3VjaCBhcwotICAgIGhlYXRpbmcvY29vbGluZyBldGMuCi0KLSAgICBCb3RoIHRlc3RzIG5vdyB0cmFjayB0aGUgZXJyb3IgY291bnQgYW5kIHJlcG9ydCBpdCBwcm9wZXJseQotICAgIGF0IHRlc3QgY29tcGxldGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIEFja2VkLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA5ZjRhNDIwNjYzNDE5ZGMxM2YwOGEwY2U2NWI5MzAzM2M2MTcyYzY5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBPY3QgMSAxMjoxMTo1NCAyMDA5IC0wNDAwCi0KLSAgICBuZXcgZGVmYXVsdCBzaG9ydGN1dCB0byBjb25maWcgJiBidWlsZCBhIGJvYXJkCi0KLSAgICBUaGUgbWFqb3JpdHkgb2YgdGhlIHRpbWUgdGhhdCBJIGJ1aWxkIHRoaW5ncyBpbiBVLUJvb3QsIEkgd2FudCB0byBqdXN0Ci0gICAgYnVpbGQgZm9yIHRoZSBib2FyZC4gIEkgZG9uJ3QgbWFrZSBib2FyZCBjb25maWcgdHdlYWtzIGFmdGVyIHNlbGVjdGluZyB0aGUKLSAgICBib2FyZC4gIFNvIGFkZCBhIG5ldyBwYXR0ZXJuIHJ1bGUgdGhhdCBhbGxvd3MgcGVvcGxlIHRvIGNvbWJpbmUgdHdvIHN0ZXBzCi0gICAgaW4gb25lIGdvOgotCWBtYWtlIGZvb19jb25maWcgJiYgbWFrZWAgPT4gYG1ha2UgZm9vYAotCi0gICAgVGhpcyBzaG91bGRuJ3QgY29uZmxpY3Qgd2l0aCBhbnkgZXhpc3RpbmcgbWFrZSBydWxlcyBhcyB0aGUgcGF0dGVybiBydWxlCi0gICAgaXMgdXNlZCBvbmx5IHRoZSBydWxlIGRvZXNuJ3QgYWxyZWFkeSBleGlzdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDZkYWI2YWRkMmQ4ZWU4MDkwNTIzNGIzMjZhYmMzZGUxMWJlMWQxNzgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIFNlcCAzMCAxNToyOTo1OCAyMDA5IC0wNDAwCi0KLSAgICBlbnY6IG9ubHkgYnVpbGQgZW52X2VtYmVkZGVkIGFuZCBlbnZjcmMgd2hlbiBuZWVkZWQKLQotICAgIFRoZSBlbnYgY29kZSBpcyBwcm90ZWN0ZWQgYnkgdGhlIEVOVl9JU19FTUJFRERFRCBkZWZpbmUsIHNvIGF0dGVtcHRpbmcgdG8KLSAgICBjb21waWxlIHRoZSBjb2RlIHdoZW4gdGhpcyBpc24ndCBkZWZpbmVkIGlzIHBvaW50bGVzcy4gIE5vdyB0aGF0IHRoZSBlbnYKLSAgICBoZWFkZXJzIGhhdmUgdW5pZmllZCBhcm91bmQgQ09ORklHX0VOVl9JU19FTUJFRERFRCwgY29udmVydCB0aGUgYnVpbGQKLSAgICBzeXN0ZW0gdG8gb25seSBidWlsZCB0aGUgZW52IG9iamVjdHMgd2hlbiB0aGlzIGlzIGVuYWJsZWQuCUFuZCBub3cgdGhhdAotICAgIHRoZSBlbnYgY29kZSBpcyBjb25kaXRpb25hbGx5IGNvbXBpbGVkLCB3ZSBjYW4gZHJvcCB0aGUgc291cmNlIGNvZGUgY2hlY2tzLgotCi0gICAgRm9yIHBlb3BsZSB3aG8gd2FudCB0byBleHRyYWN0IHRoZSBlbnZpcm9ubWVudCBtYW51YWxseSwgYWRkIGEgbmV3IG9wdGlvbgotICAgIENPTkZJR19CVUlMRF9FTlZDUkMgdGhhdCBvbmx5IGVuYWJsZXMgdGhlIGVudmNyYyB1dGlsaXR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNzhmNGNhNzk3Njc0ODE1OTA4MGM5ZDkyMGQ1ZWI1NDJkMWIzMmQ0ZgotQXV0aG9yOiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgotRGF0ZToJTW9uIFNlcCAyOCAxMTo0MDozOCAyMDA5ICswMjAwCi0KLSAgICBwYXJ0X2RvczogY2hlY2sgc3RhdHVzIGZsYWdzIG9mIHBhcnRpdGlvbnMKLQotICAgIE9ubHkgcmVhZCBwYXJ0aXRpb25zIHdoaWNoIGhhdmUgMHgwMCBvciAweDgwIHNldCBpbiB0aGVpciBzdGF0dXMgZmllbGQuCi0gICAgQWxsIG90aGVycyBhcmUgaW52YWxpZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+Ci0KLWNvbW1pdCA0NWRlZjBhYjlkMWRlZGNkMmE3MzkzOWFhZDgzNzNmNzYwNDk4NzYyCi1BdXRob3I6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAY29sZGhhdXMuY29tPgotRGF0ZToJRnJpIFNlcCAyNSAxNzo0Nzo0MyAyMDA5IC0wNTAwCi0KLSAgICBnYWxheHk1MjAwOiBjaGFuZ2UgY3MxIGNvbmZpZ3VyYXRpb24KLQotICAgIENvcnJlY3QgdGhlIGNoaXAgc2VsZWN0IGNvbmZpZ3VyYXRpb24gZm9yIHRoZSBuYW5kIGZsYXNoIGNoaXAgc2VsZWN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBkZWthcmVzZWFyY2guY29tPgotCi1jb21taXQgNzkzNmI1MTE2NWI1MTlhMTZlY2YzZGIzMDJmYjg4ZGY4YjhiM2IzZAotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotRGF0ZToJV2VkIFNlcCAyMyAwODoxMjoxNCAyMDA5ICswMjAwCi0KLSAgICBDbGVhbnVwOiB1c2UgY29uc3RhbnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCA3MTIwYzg4ODEwMTk1MmI3ZTYxYjllNTRiYjQyMzcwOTA0YWEwZTY4Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gT2N0IDEyIDExOjA2OjE5IDIwMDkgLTA1MDAKLQotICAgIG1wYzgzeHg6IG1wYzgzMTMgLSBoYW5kbGUgZXJyYXR1bSBJUElDMSAoVFNFQyBJUlEgbnVtYmVyIHN3YXBwYWdlKQotCi0gICAgbXBjODMxM2UgZXJyYXR1bSBJUElDMSBzd2FwcGVkIFRTRUMgaW50ZXJydXB0IElEIG51bWJlcnMgb24gcmV2LiAxCi0gICAgaC93IChzZWUgQU4zNTQ1KS4gIFRoZSBiYXNlIGRldmljZSB0cmVlIGluIHVzZSBoYXMgcmV2LiAxIElEIG51bWJlcnMsCi0gICAgc28gaWYgb24gUmV2LiAyIChhbmQgaGlnaGVyKSBoL3csIHdlIGZpeCB0aGVtIHVwIGhlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotICAgIFJldmlld2VkLWJ5OiBSb2xhbmQgTGV6dW8gPHJvbGFuZC5sZXp1b0BjaGVsbG8uYXQ+Ci0KLWNvbW1pdCA5MTUyNWM2NzE1M2ZjZjJjMTliMmZjOGQ5YzYzNzZhYzFhMDE5ZjUyCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE9jdCAxMiAyMzo1NTozOSAyMDA5ICswNDAwCi0KLSAgICBtcGM4NXh4OiBGaXggYm9vdGluZyBvbiB2YXJpb3VzIGJvYXJkcwotCi0gICAgY29tbWl0IDBlODcwOTgwYTY0NTg0YTU5MWFmNzc1YmI5YzlmZTk0NTAxMjRkZjkgKCI4eHh4OiBSZW1vdmVkCi0gICAgQ09ORklHX05VTV9DUFVTIGZyb20gODV4eC84Nnh4IikgYnJlYWtzIFUtQm9vdCBvbiB2YXJpb3VzIGJvYXJkcywKLSAgICBuYW1lbHkgdGhlIG9uZXMgdGhhdCBjYWxsIGdldF9zeXNfaW5mbygpIGZyb20gYm9hcmRfZWFybHlfaW5pdF9mKCkuCi0KLSAgICBnZXRfc3lzX2luZm8oKSBjYWxscyBjcHVfbnVtY29yZXMoKSwgd2hpY2ggZGVwZW5kcyBvbiBwcm9iZWNwdSgpCi0gICAgYmVpbmcgY2FsbGVkIGJlZm9yZS4gQnV0IHByb2JlY3B1KCkgaXMgY2FsbGVkIGFmdGVyIGJvYXJkX2Vhcmx5X2luaXRfZigpLAotICAgIGFuZCBzbyBjcHVfbnVtY29yZXMoKSByZXR1cm5zIHJhbmRvbSB2YWx1ZXMsIHdoaWNoIGluIHR1cm4gY3Jhc2hlcwotICAgIGdldF9zeXNfaW5mbygpLgotCi0gICAgVG8gZml4IHRoZSBpc3N1ZSB3ZSBwbGFjZSBwcm9iZWNwdSgpIGJlZm9yZSBib2FyZF9lYXJseV9pbml0X2YoKQotICAgIGluIGFuIGluaXRpYWxpemF0aW9uIHNlcXVlbmNlLgotCi0gICAgQm9vdGluZyBvbiB0aGUgZm9sbG93aW5nIGJvYXJkcyBzaG91bGQgYmUgcmV2aXZlZCBub3c6Ci0gICAgIG1wYzg1NDBhZHMKLSAgICAgbXBjODU0MWNkcwotICAgICBtcGM4NTQ4Y2RzCi0gICAgIG1wYzg1NTVjZHMKLSAgICAgbXBjODU2MGFkcwotICAgICBtcGM4NTY4bWRzCi0gICAgIG1wYzg1NjltZHMKLSAgICAgYW5kIG1heWJlIG1vcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjZkZjZhYTk5MTY0NDMwNzcxMzlmOGYwMDhmYmM1ZjQxNGJhMDVlNQotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBPY3QgMiAxODo0ODowNyAyMDA5IC0wNDAwCi0KLSAgICBtcGM4Nnh4OiBkZWxldGUgdW51c2VkIE1QQzg2eHhfRERSX1NEUkFNX0NMS19DTlRMIGRlZmluZQotCi0gICAgVGhpcyBpcyBhbiBvcnBoYW5lZCBsZWdhY3kgbGVmdG92ZXIgdGhhdCBpcyBqdXN0IHBvbGx1dGluZwotICAgIHRoZSBjb25maWcgZmlsZSBuYW1lc3BhY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmFkMTUwOTZlM2IzNDkyNzQ0NGJhNWY2MTMzNzQyZDQwZDc4YTQyNQotQXV0aG9yOiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCA4IDEzOjMzOjI5IDIwMDkgKzA1MzAKLQotICAgIHBwYy9QMV9QMl9SREI6IE9uLWNoaXAgQm9vdFJPTSBzdXBwb3J0Ci0KLSAgICBPbiBDaGlwIEJvb3RST00gc3VwcG9ydCBmb3IgUDEgYW5kIFAyIHNlcmllcyBSREIgcGxhdGZvcm1zLgotCi0gICAgVGhpcyBwYXRjaCBpcyBkZXJpdmVkIGZyb20gbGF0ZXN0IE9uIENoaXAgQm9vdFJPTSBzdXBwb3J0IG9uIE1QQzg1MzZEUwotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjc3ODBlYzk3N2U1NDViODNiYzUwNjhlMDk1N2Q2NDBmMWQ5OGYxMwotQXV0aG9yOiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCA4IDEzOjMzOjE4IDIwMDkgKzA1MzAKLQotICAgIHBwYy9QMV9QMl9SREI6IE5BTkQgQm9vdCBTdXBwb3J0Ci0KLSAgICBOQU5EIEJvb3Qgc3VwcG9ydCBmb3IgUDEgYW5kIFAyIHNlcmllcyBSREIgcGxhdGZvcm1zLgotCi0gICAgVGhpcyBwYXRjaCBpcyBkZXJpdmVkIGZyb20gTkFORCBCb290IHN1cHBvcnQgb24gTVBDODUzNkRTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZDExODIzY2EzY2I1NTE4MTRmZmNkOTI2NDAyYzhiY2YzYTdlZmYzNQotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CVdlZCBPY3QgNyAxNjozNDoyOCAyMDA5IC0wNDAwCi0KLSAgICBtcGM4eHh4OiBpbXByb3ZlIExBVyBlcnJvciBtZXNzYWdlcyB3aGVuIHNldHRpbmcgdXAgRERSCi0KLSAgICBXaGVuIHNldHRpbmcgdXAgdGhlIExBV3MgZm9yIHRoZSBERFIsIGlmIHRoZXJlIHdhcyBhbiBlcnJvciwKLSAgICB5b3UgZ290IHRoZSBub3Qtc28taGVscGZ1bCBlcnJvciB0ZXh0ICJFUlJPUiIgYW5kIG5vdGhpbmcKLSAgICBlbHNlLiAgTm90IG9ubHkgaXMgaXQgbm9uLWluZm9ybWF0aXZlLCBidXQgaXQgaXMgYWxzbwotICAgIHByZXR0eSBmcnVzdHJhdGluZyB0cnlpbmcgdG8gZ3JlcCBmb3IgIkVSUk9SIiBpbiB0aGUgc291cmNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGE5OTQ2ZTNmYzcwODlkZGM2Yjc3MTFhNDRlMDdhNmIwODI3Yjc5YTcKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglXZWQgU2VwIDMwIDE2OjEyOjMxIDIwMDkgLTA0MDAKLQotICAgIHNiYzg2NDFkOiBmaXggTEFXIHNvIGJvYXJkIGRvZXNuJ3QgaGFuZyBvbiBERFIgaW5pdAotCi0gICAgQWxsIHZlcnNpb25zIGJldHdlZW4gbm93IGFuZCBzaW5jZSB0aGlzIGNvbW1pdDoKLQotICAgICAgY29tbWl0IGJkNzY3MjliY2JmZDY0YjVkMDE2YTliOTM2ZjA1ODkzMWZjMDZlYWYKLSAgICAgIE1QQzg2eHg6IHNldCBDT05GSUdfTUFYX01FTV9NQVBQRUQgdG8gMkcgYnkgZGVmYXVsdAotCi0gICAgd2lsbCBmYWlsIHRvIGFsbG93IHRoZSBTQkM4NjQxRCB0byBnZXQgcGFzdCBERFIgaW5pdCwgYmVjYXVzZSB0aGUKLSAgICBMQVcgY29uZmlnIHdhcyBvdmVybGFwcGluZy4gIEV2ZW50dWFsbHkgdGhpcyBib2FyZCB3aWxsIGRvIFNQRAotICAgIEVFUFJPTSBjb25maWcsIGJ1dCBmb3Igbm93IHRoaXMgZ2V0cyB0aGUgYm9hcmQgd29ya2luZyBhZ2Fpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzZDE5ODhhYjQ3Y2MwZTI2NTI3Mjk2N2UwN2Q3NDdlYzYwMGE0NGM5Ci1BdXRob3I6IGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWsgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Ci1EYXRlOglTYXQgT2N0IDEwIDEzOjM0OjA5IDIwMDkgKzA5MDAKLQotICAgIENsZWFuLXVwIG9mIHMzYzI0eDAgbmFuZCBkcml2ZXIKLQotICAgIFRoaXMgcGF0Y2ggcmUtZm9ybWF0cyB0aGUgYXJtOTIwdCBzM2MyNHgwIG5hbmQgZHJpdmVyIGluIHByZXBhcmF0aW9uIGZvciBjaGFuZ2VzCi0gICAgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZC4KLQotICAgIFRoZSBjaGFuZ2VzIGFyZSBhcyBmb2xsb3dzOgotICAgIC0gcmUtaW5kZW50IHRoZSBjb2RlIHVzaW5nIExpbmRlbnQKLSAgICAtIG1ha2Ugc3VyZSByZWdpc3RlciBsYXlvdXRzIGFyZSBkZWZpbmVkIHVzaW5nIGEgQyBzdHJ1Y3QKLSAgICAtIHJlcGxhY2UgdGhlIHVwcGVyLWNhc2UgdHlwZWRlZidlZCBDIHN0cnVjdCBuYW1lcyB3aXRoIGxvd2VyIGNhc2UKLSAgICBub24tdHlwZWRlZidlZCBvbmVzCi0gICAgLSBtYWtlIHN1cmUgcmVnaXN0ZXJzIGFyZSBhY2Nlc3NlZCB1c2luZyB0aGUgcHJvcGVyIGFjY2Vzc29yIGZ1bmN0aW9ucwotICAgIC0gcnVuIGNoZWNrcGF0Y2gucGwgYW5kIGZpeCBhbnkgZXJyb3IgcmVwb3J0cwotCi0gICAgSXQgYXNzdW1lcyB0aGUgZm9sbG93aW5nIHBhdGNoIGhhcyBiZWVuIGFwcGxpZWQgZmlyc3Q6Ci0gICAgLSBbVS1Cb290XVtQQVRDSC1BUk1dIENPTkZJR19TWVNfSFogZml4IGZvciBBUk05MDJUIFMzQzI0WDAgQm9hcmRzLCAwNS8wOS8yMDA5Ci0gICAgIC0gcGF0Y2hlcyAxLzQsIDIvNCBhbmQgMy80IG9mIHRoaXMgc2VyaWVzCi0KLSAgICBUZXN0ZWQgb24gYW4gRW1iZXN0IFNCQzI0NDAtSUkgQm9hcmQgd2l0aCBsb2NhbCB1LWJvb3QgcGF0Y2hlcyBhcyBJIGRvbid0IGhhdmUKLSAgICBhbnkgczNjMjQwMCBvciBzM2MyNDEwIGJvYXJkcyBidXQgbmVlZCB0aGlzIHBhdGNoIGFwcGx5aW5nIGJlZm9yZSBJIGNhbiBzdWJtaXQKLSAgICBwYXRjaGVzIGZvciB0aGUgU0JDMjQ0MC1JSSBCb2FyZC4gQWxzbywgdGVtcG9yYXJpbHkgbW9kaWZpZWQgc2JjMjQxMHgsIHNtZGsyNDAwLAotICAgIHNtZGsyNDEwIGFuZCB0cmFiIGNvbmZpZ3MgdG8gdXNlIHRoZSBtdGQgbmFuZCBkcml2ZXIgKHdoaWNoIGlzbid0IHVzZWQgYnkgYW55Ci0gICAgYm9hcmQgYXQgdGhlIG1vbWVudCksIHJhbiBNQUtFQUxMIGZvciBhbGwgQVJNOSB0YXJnZXRzIGFuZCBubyBuZXcgd2FybmluZ3Mgb3IKLSAgICBlcnJvcnMgd2VyZSBmb3VuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIE1vcmZpdHQgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgZWIwYWU3ZjU0OWI3MTQyODI2YThiY2RkMmRjOTQ1ZmFjOWMzNjM0OQotQXV0aG9yOiBrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrIDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgotRGF0ZToJU2F0IE9jdCAxMCAxMzozMzoxMSAyMDA5ICswOTAwCi0KLSAgICBDbGVhbi11cCBvZiBzM2MyNHgwIGRyaXZlcnMgZXhjbHVkaW5nIG5hbmQgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIHJlLWZvcm1hdHMgdGhlIGFybTkyMHQgczNjMjR4MCBkcml2ZXIgZmlsZXMsIGV4Y2x1ZGluZyB0aGUgbmFuZAotICAgIGRyaXZlciwgaW4gcHJlcGFyYXRpb24gZm9yIGNoYW5nZXMgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZC4KLQotICAgIFRoZSBjaGFuZ2VzIGFyZSBhcyBmb2xsb3dzOgotICAgIC0gcmUtaW5kZW50IHRoZSBjb2RlIHVzaW5nIExpbmRlbnQKLSAgICAtIG1ha2Ugc3VyZSByZWdpc3RlciBsYXlvdXRzIGFyZSBkZWZpbmVkIHVzaW5nIGEgQyBzdHJ1Y3QKLSAgICAtIHJlcGxhY2UgdGhlIHVwcGVyLWNhc2UgdHlwZWRlZidlZCBDIHN0cnVjdCBuYW1lcyB3aXRoIGxvd2VyIGNhc2UKLSAgICAgIG5vbi10eXBlZGVmJ2VkIG9uZXMKLSAgICAtIG1ha2Ugc3VyZSByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBwcm9wZXIgYWNjZXNzb3IgZnVuY3Rpb25zCi0gICAgLSBydW4gY2hlY2twYXRjaC5wbCBhbmQgZml4IGFueSBlcnJvciByZXBvcnRzCi0KLSAgICBJdCBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZCBmaXJzdDoKLSAgICAtIFtVLUJvb3RdW1BBVENILUFSTV0gQ09ORklHX1NZU19IWiBmaXggZm9yIEFSTTkwMlQgUzNDMjRYMCBCb2FyZHMsIDA1LzA5LzIwMDkKLSAgICAtIHBhdGNoZXMgMS80IGFuZCAyLzQgb2YgdGhpcyBzZXJpZXMKLQotICAgIFRlc3RlZCBvbiBhbiBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZCB3aXRoIGxvY2FsIHUtYm9vdCBwYXRjaGVzIGFzIEkgZG9uJ3QgaGF2ZQotICAgIGFueSBzM2MyNDAwIG9yIHMzYzI0MTAgYm9hcmRzIGJ1dCBuZWVkIHRoaXMgcGF0Y2ggYXBwbHlpbmcgYmVmb3JlIEkgY2FuIHN1Ym1pdAotICAgIHBhdGNoZXMgZm9yIHRoZSBTQkMyNDQwLUlJIEJvYXJkLiBBbHNvLCB0ZW1wb3JhcmlseSBtb2RpZmllZCBzYmMyNDEweCwgc21kazI0MDAsCi0gICAgc21kazI0MTAgYW5kIHRyYWIgY29uZmlncyB0byB1c2UgdGhlIG10ZCBuYW5kIGRyaXZlciAod2hpY2ggaXNuJ3QgdXNlZCBieSBhbnkKLSAgICBib2FyZCBhdCB0aGUgbW9tZW50KSwgcmFuIE1BS0VBTEwgZm9yIGFsbCBBUk05IHRhcmdldHMgYW5kIG5vIG5ldyB3YXJuaW5ncyBvcgotICAgIGVycm9ycyB3ZXJlIGZvdW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2V2aW4gTW9yZml0dCA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA4MjUwZDBiYWU4NDIyOWFiZWEzOTdmNmI0NzRiMzU1NmIwZjA0ZTgwCi1BdXRob3I6IGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWsgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Ci1EYXRlOglTYXQgT2N0IDEwIDEzOjMyOjAxIDIwMDkgKzA5MDAKLQotICAgIENsZWFuLXVwIG9mIHMzYzI0eDAgaGVhZGVyIGZpbGVzCi0KLSAgICBUaGlzIHBhdGNoIHJlLWZvcm1hdHMgdGhlIGFybTkyMHQgczNjMjR4MCBoZWFkZXIgZmlsZXMgaW4gcHJlcGFyYXRpb24gZm9yCi0gICAgY2hhbmdlcyB0byBhZGQgc3VwcG9ydCBmb3IgdGhlIEVtYmVzdCBTQkMyNDQwLUlJIEJvYXJkLgotCi0gICAgVGhlIGNoYW5nZXMgYXJlIGFzIGZvbGxvd3M6Ci0gICAgLSByZS1pbmRlbnQgdGhlIGNvZGUgdXNpbmcgTGluZGVudAotICAgIC0gbWFrZSBzdXJlIHJlZ2lzdGVyIGxheW91dHMgYXJlIGRlZmluZWQgdXNpbmcgYSBDIHN0cnVjdAotICAgIC0gcmVwbGFjZSB0aGUgdXBwZXItY2FzZSB0eXBlZGVmJ2VkIEMgc3RydWN0IG5hbWVzIHdpdGggbG93ZXIgY2FzZQotICAgIG5vbi10eXBlZGVmJ2VkIG9uZXMKLSAgICAtIG1ha2Ugc3VyZSByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBwcm9wZXIgYWNjZXNzb3IgZnVuY3Rpb25zCi0gICAgLSBydW4gY2hlY2twYXRjaC5wbCBhbmQgZml4IGFueSBlcnJvciByZXBvcnRzCi0KLSAgICBJdCBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZCBmaXJzdDoKLSAgICAtIFtVLUJvb3RdW1BBVENILUFSTV0gQ09ORklHX1NZU19IWiBmaXggZm9yIEFSTTkwMlQgUzNDMjRYMCBCb2FyZHMsIDA1LzA5LzIwMDkKLSAgICAtIHBhdGNoIDEvNCBvZiB0aGlzIHNlcmllcwotCi0gICAgVGVzdGVkIG9uIGFuIEVtYmVzdCBTQkMyNDQwLUlJIEJvYXJkIHdpdGggbG9jYWwgdS1ib290IHBhdGNoZXMgYXMgSSBkb24ndCBoYXZlCi0gICAgYW55IHMzYzI0MDAgb3IgczNjMjQxMCBib2FyZHMgYnV0IG5lZWQgdGhpcyBwYXRjaCBhcHBseWluZyBiZWZvcmUgSSBjYW4gc3VibWl0Ci0gICAgcGF0Y2hlcyBmb3IgdGhlIFNCQzI0NDAtSUkgQm9hcmQuIEFsc28sIHRlbXBvcmFyaWx5IG1vZGlmaWVkIHNiYzI0MTB4LCBzbWRrMjQwMCwKLSAgICBzbWRrMjQxMCBhbmQgdHJhYiBjb25maWdzIHRvIHVzZSB0aGUgbXRkIG5hbmQgZHJpdmVyICh3aGljaCBpc24ndCB1c2VkIGJ5IGFueQotICAgIGJvYXJkIGF0IHRoZSBtb21lbnQpLCByYW4gTUFLRUFMTCBmb3IgYWxsIEFSTTkgdGFyZ2V0cyBhbmQgbm8gbmV3IHdhcm5pbmdzIG9yCi0gICAgZXJyb3JzIHdlcmUgZm91bmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBNb3JmaXR0IDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGQ2N2NjZTJkZGEzYTQwYzNiZDkwYTZjNmUxMjlmYmIyNmRkNGNmYWIKLUF1dGhvcjoga2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51ayA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KLURhdGU6CVNhdCBPY3QgMTAgMTM6MzA6MjIgMjAwOSArMDkwMAotCi0gICAgQ2xlYW4tdXAgb2YgY3B1X2FybTkyMHQgYW5kIGNwdV9hcm05MjB0X3MzYzI0eDAgY29kZQotCi0gICAgVGhpcyBwYXRjaCByZS1mb3JtYXRzIHRoZSBjb2RlIGluIGNwdS9hcm05MjB0IGFuZCBjcHUvYXJtOTIwdC8yM2MyNHgwIGluCi0gICAgcHJlcGFyYXRpb24gZm9yIGNoYW5nZXMgdG8gYWRkIHN1cHBvcnQgZm9yIHRoZSBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZC4KLQotICAgIFRoZSBjaGFuZ2VzIGFyZSBhcyBmb2xsb3dzOgotICAgIC0gcmUtaW5kZW50IHRoZSBjb2RlIHVzaW5nIExpbmRlbnQKLSAgICAtIG1ha2Ugc3VyZSByZWdpc3RlciBsYXlvdXRzIGFyZSBkZWZpbmVkIHVzaW5nIGEgQyBzdHJ1Y3QKLSAgICAtIHJlcGxhY2UgdGhlIHVwcGVyLWNhc2UgdHlwZWRlZidlZCBDIHN0cnVjdCBuYW1lcyB3aXRoIGxvd2VyIGNhc2UKLSAgICAgIG5vbi10eXBlZGVmJ2VkIG9uZXMKLSAgICAtIG1ha2Ugc3VyZSByZWdpc3RlcnMgYXJlIGFjY2Vzc2VkIHVzaW5nIHRoZSBwcm9wZXIgYWNjZXNzb3IgZnVuY3Rpb25zCi0gICAgLSBydW4gY2hlY2twYXRjaC5wbCBhbmQgZml4IGFueSBlcnJvciByZXBvcnRzCi0KLSAgICBJdCBhc3N1bWVzIHRoZSBmb2xsb3dpbmcgcGF0Y2ggaGFzIGJlZW4gYXBwbGllZCBmaXJzdDoKLSAgICAtIFtVLUJvb3RdW1BBVENILUFSTV0gQ09ORklHX1NZU19IWiBmaXggZm9yIEFSTTkwMlQgUzNDMjRYMCBCb2FyZHMsIDA1LzA5LzIwMDkKLQotICAgIFRlc3RlZCBvbiBhbiBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZCB3aXRoIGxvY2FsIHUtYm9vdCBwYXRjaGVzIGFzIEkgZG9uJ3QgaGF2ZQotICAgIGFueSBzM2MyNDAwIG9yIHMzYzI0MTAgYm9hcmRzIGJ1dCBuZWVkIHRoaXMgcGF0Y2ggYXBwbHlpbmcgYmVmb3JlIEkgY2FuIHN1Ym1pdAotICAgIHBhdGNoZXMgZm9yIHRoZSBTQkMyNDQwLUlJIEJvYXJkLiBBbHNvLCByYW4gTUFLRUFMTCBmb3IgYWxsIEFSTTkgdGFyZ2V0cyBhbmQgbm8KLSAgICBuZXcgd2FybmluZ3Mgb3IgZXJyb3JzIHdlcmUgZm91bmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBNb3JmaXR0IDxrZXZpbi5tb3JmaXR0QGZlYXJuc2lkZS1zeXN0ZW1zLmNvLnVrPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGNkODU2NjJiMzQ1YzBjMjI0OGZkNzYzN2Y2NWJiMmZiYjRkNTNkZDkKLUF1dGhvcjoga2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51ayA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KLURhdGU6CVN1biBTZXAgNiAwMDozMzoxMyAyMDA5ICswOTAwCi0KLSAgICBDT05GSUdfU1lTX0haIGZpeCBmb3IgQVJNOTAyVCBTM0MyNFgwIEJvYXJkcwotCi0gICAgVGhpcyBzZXRzIENPTkZJR19TWVNfSFogdG8gMTAwMCBmb3IgYWxsIGJvYXJkcyB0aGF0IHVzZSB0aGUgczNjMjQwMCBhbmQKLSAgICBzM2MyNDEwIGNwdSdzIHdoaWNoIGZpeGVzIHZhcmlvdXMgcHJvYmxlbXMgc3VjaCBhcyB0aGUgdGltZW91dHMgaW4gdGZ0cCBiZWluZwotICAgIHRvbyBzaG9ydC4KLQotICAgIFRlc3RlZCBvbiBhbiBFbWJlc3QgU0JDMjQ0MC1JSSBCb2FyZCB3aXRoIGxvY2FsIHUtYm9vdCBwYXRjaGVzIGFzIEkgZG9uJ3QKLSAgICBoYXZlIGFueSBzM2MyNDAwIG9yIHMzYzI0MTAgYm9hcmRzIGJ1dCBuZWVkIHRoaXMgcGF0Y2ggYXBwbHlpbmcgYmVmb3JlIEkgY2FuCi0gICAgc3VibWl0IHBhdGNoZXMgZm9yIHRoZSBTQkMyNDQwLUlJIEJvYXJkLiBBbHNvLCByYW4gTUFLRUFMTCBmb3IgYWxsIEFSTTkgdGFyZ2V0cwotICAgIGFuZCBubyBuZXcgd2FybmluZ3Mgb3IgZXJyb3JzIHdlcmUgZm91bmQuCi0KLSAgICBJdCB3YXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgb24gMjEvMDYvMjAwOSBidXQgZGlkbid0IGdldCBpbnRvIHRoZSAyMDA5LjA4Ci0gICAgcmVsZWFzZSwgYW5kIEplYW4tUGllcnJlIG1hZGUgb25lIGNvbW1lbnQgb24gdGhlIG9yaWdpbmFsIHBhdGNoIChzZWUKLSAgICBodHRwOi8vbGlzdHMuZGVueC5kZS9waXBlcm1haWwvdS1ib290LzIwMDktSnVseS8wNTU0NzAuaHRtbCkuIEkndmUgbWFkZSB0d28KLSAgICBjaGFuZ2VzIHRvIHRoZSBvcmlnaW5hbCBwYXRjaDoKLSAgICAtIGl0J3MgYmVlbiByZS1iYXNlZCB0byB0aGUgY3VycmVudCByZWxlYXNlCi0gICAgLSBJJ3ZlIHJlLW5hbWVkIGdldF90aW1lcl9yYXcoKSB0byBnZXRfdGlja3MoKSBpbiByZXNwb25zZSB0byBKZWFuLVBpZXJyZSdzIGNvbW1lbnQKLQotICAgIFRoaXMgYWZmZWN0cyB0aGUgc2JjMjQxMCwgc21kazI0MDAsIHNtZGsyNDEwIGFuZCB0cmFiIGJvYXJkcy4gSSd2ZSBjb3BpZWQgaXQKLSAgICBkaXJlY3RseSB0byB0aGUgbWFpbnRhaW5lcnMgb2YgYWxsIGV4Y2VwdCB0aGUgc2JjMjQxMCB3aGljaCBkb2Vzbid0IGhhdmUgYW4KLSAgICBlbnRyeSBpbiBNQUlOVEFJTkVSUy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIE1vcmZpdHQgPGttb3JmaXR0QGFzZWxhcHRvcC0xLmxvY2FsZG9tYWluPgotICAgIFRlc3RlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA4YmM0ZWU5ZTgyMTNhYmU0MDMxZWExNzIwYWEwMmZhOThkNDQwMmFkCi1BdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLURhdGU6CVRodSBPY3QgMSAxNzoyMDo0MCAyMDA5ICswOTAwCi0KLSAgICBzNXBjMXh4OiBhZGQgc3VwcG9ydCBTTURLQzEwMCBib2FyZAotCi0gICAgQWRkcyBuZXcgYm9hcmQgU01ES0MxMDAgdGhhdCB1c2VzIHM1cGMxMDAgU29DCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGV1bmdKdW4sIEtpbSA8cml2ZXJmdWwua2ltQHNhbXN1bmcuY29tPgotCi1jb21taXQgZGQyYzllNmEzYjY3YzhmZjU2Njk0ZTUxNWU2ZTNjN2JhZGRkOGY1MgotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglUaHUgT2N0IDEgMTc6MjA6MjggMjAwOSArMDkwMAotCi0gICAgczVwYzF4eDogc3VwcG9ydCBzZXJpYWwgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRoZSBzZXJpYWwgZHJpdmVyIGZvciBzNXBjMXh4LgotICAgIHM1cGMxeHggdWFydCBkcml2ZXIgbmVlZHMgb3duIHJlZ2lzdGVyIHNldHRpbmcgYW5kIGNsb2NrIGNvbmZpZ3VyYXRpb24uCi0gICAgU28sIG5lZWQgdG8gc3BlY2lhbCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA0Njc4ZDY3NGYwY2FjYzk4M2RjYTdmNmI5OTMzY2Q4MjkxYzk3OTdjCi1BdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLURhdGU6CVRodSBPY3QgMSAxNzoyMDowOCAyMDA5ICswOTAwCi0KLSAgICBzNXBjMXh4OiBzdXBwb3J0IG9uZW5hbmQgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRoZSBvbmVuYW5kIGRyaXZlciBmb3IgczVwYzEwMAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCAzOTllNWFlMGQwYjJlYjQ2NjNmYzU3ODQyMDE5NjhjMDdkNDVhZmFjCi1BdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLURhdGU6CVRodSBPY3QgMSAxNzoyMDowMSAyMDA5ICswOTAwCi0KLSAgICBzNXBjMXh4OiBzdXBwb3J0IFNhbXN1bmcgczVwYzF4eCBTb0MKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgU2Ftc3VuZyBzNXBjMTAwIGFuZCBzNXBjMTEwCi0gICAgU29Dcy4gVGhlIHM1cGMxeHggU29DIGlzIGFuIEFSTSBDb3J0ZXggQTggcHJvY2Vzc29yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEhldW5nSnVuLCBLaW0gPHJpdmVyZnVsLmtpbUBzYW1zdW5nLmNvbT4KLQotY29tbWl0IGQwODdkMTlhOTk0ZTc0MWYwY2U1MjYxMjRiZTExN2M5MGJlNDgyYWUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE9jdCAxMyAyMTo1ODoyNiAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZHJvcCBNQUMgZGlzcGxheSBhdCBib290Ci0KLSAgICBUaGUgZGVmYXVsdCBCbGFja2ZpbiBib290IHdvdWxkIGRpc3BsYXkgdGhlIE1BQyBhZGRyZXNzIGZvciB0aGUgZmlyc3QgTklDLAotICAgIGJ1dCB0aGlzIHJlbGllcyBvbiB0aGUgZW52aXJvbm1lbnQuICBUaGUgY3VycmVudCBuZXQgbXVsdGkgc3RhY2sgbm8gbG9uZ2VyCi0gICAgd3JpdGVzIHRoZSBkZWZhdWx0IGhhcmR3YXJlIHNldHRpbmdzIHRvIHRoZSBlbnZpcm9ubWVudCwgc28gbW9zdCBvZiB0aGUKLSAgICB0aW1lIHRoZSBkaXNwbGF5IHNob3dzIGFsbCB6ZXJvcy4gIFRoaXMgY2FuIGJlIHByZXR0eSBjb25mdXNpbmcgYW5kIHJlYWxseQotICAgIGRvZXNuJ3QgYWRkIGFueXRoaW5nIHVzZWZ1bCwgc28ganVzdCBkcm9wIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMWYwMDNjZjQ3MzhhMTk5ZDk5YzgxODEyNDc4NDA1ODUyNmQyZDQwZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgT2N0IDkgMDI6MjQ6MzMgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IHJlc2V0IHdhdGNoZG9nIGluIHVkZWxheSgpCi0KLSAgICBBbGwgYXJjaGVzIGFwcGFyZW50bHkgc2hvdWxkIHJlc2V0IHRoZSB3YXRjaGRvZyBpbiB0aGVpciB1ZGVsYXkgbG9vcCBhcwotICAgIG5vdGVkIG9uIHRoZSBtYWlsaW5nIGxpc3QgcmVjZW50bHk6Ci0KLSAgICAgID4gQSBjb21tZW50IGluIGZsYXNoX3N0YXR1c19jaGVjaygpIHN1Z2dlc3RzIHRoYXQgdWRlbGF5KCkgaXMKLSAgICAgID4gZXhwZWN0ZWQgdG8gcmVzZXQgdGhlIHdhdGNoZG9nLCBidXQgSSBjYW4ndCBmaW5kIGFueSBhcmNoaXRlY3R1cmUKLSAgICAgID4gd2hlcmUgaXQgZG9lcy4KLQotICAgICAgSWYgdGhpcyBpcyBtaXNzaW5nIGluIG90aGVyIGFyY2hpdGVjdHVyZXMsIGl0IHNob3VsZCBiZSBmaXhlZCBhdCB0aGUKLSAgICAgIHJvb3QgY2F1c2UsIGkuIGUuIGluIHVkZWxheSgpIG9yIGluIHRoZSByZXNwZWN0aXZlIHN1cHBvcnQgcm91dGluZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzNzBlYzczNDU1N2QwYjBmMjY2ZTZkMDk1MzIyOWVlMTJjYWU1ZWRkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBPY3QgOSAwMjoyMjoxMSAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogUmVtb3ZlIHJlbG9jYXRpb24gZml4dXBzCi0KLSAgICBCbGFja2ZpbiBwaWVjZXMgbGlrZSBjb21taXQgMDYzMDUzNWUyZDA2MmRkNzNjMWNlY2E1YzYxMjVjODZkMTEyN2E0OS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGEzODAyNzliMmFiZTEzMGMyZDNkMmM4ZGUzNmY4ZmY5OGJjNmIzYjAKLUF1dGhvcjogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgotRGF0ZToJVHVlIFNlcCAyOSAwODowMzoxMiAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiBVcGRhdGUgTUVFU0MgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNldmVyYWwgdXBkYXRlczoKLSAgICAtZGlzYWJsZSBDT05GSUdfRU5WX09WRVJXUklURQotICAgIC1hZGQgbmV3IGhhcmR3YXJlIHN0eWxlIHZhcmlhbnRzIGFuZCBzZXQgdGhlIGFyY2ggbnVtYmVycyBhcHByb3ByaWF0ZQotICAgIC1wYXNzIHRoZSBzZXJpYWwjIGFuZCBoYXJkd2FyZSByZXZpc2lvbiB0byB0aGUga2VybmVsCi0gICAgLXJlbW92ZWQgdW51c2VkIG1hY3JvcyBmcm9tIGluY2x1ZGUvY29uZmlncy9tZWVzYy5oCi0gICAgLWZpeGVkIG11bHRpbGluZSBjb21tZW50IHN0eWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci0KLWNvbW1pdCA5ZGYyMGNlMjExNTc2YWE3YWM3NTcxMGRjZDhkMGE2MjM2YWJmZDcwCi1BdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxbc2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXRdPgotRGF0ZToJVGh1IE9jdCAxIDE5OjQxOjUwIDIwMDkgKzA1MzAKLQotICAgIGFybTogQ29ycmVjdCBidWlsZCB3aXRoIENPTkZJR19TWVNfSFVTSF9QQVJTRVIgc2V0Ci0KLSAgICBGTEFHX1BBUlNFX1NFTUlDT0xPTiBpcyBub3QgZGVmaW5lZCB3aXRob3V0IGh1c2guaCwgc28gaW5jbHVkZSB0aGF0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLQotY29tbWl0IGRmMzgyNjI2MmMwZWZkMmJhZWM0ZGYyM2Q0NGIzOTQyYWY5OGY1YTcKLUF1dGhvcjogT2xvZiBKb2hhbnNzb24gPG9sb2ZAbGl4b20ubmV0PgotRGF0ZToJVHVlIFNlcCAyOSAxMDoyMjo0NSAyMDA5IC0wNDAwCi0KLSAgICBUSTogT01BUDM6IE92ZXJvIFRvYmkgZXRoZXJuZXQgc3VwcG9ydAotCi0gICAgQWRkIHNldHVwIGZvciBldGhlcm5ldCBvbiBUb2JpLCBhbGxvd2luZyBrZXJuZWwvcmFtZGlzayB0byBiZSBsb2FkZWQKLSAgICBvdmVyIHRmdHAuCi0KLSAgICBUaGlzIGFsc28gcmVmYWN0b3JzIHRoZSBzbWM5MTF4IGRyaXZlciB0byBhbGxvdyBmb3IgZGV0ZWN0aW5nIHdoZW4gdGhlCi0gICAgY2hpcCBpcyBtaXNzaW5nLiBJLmUuIHRoZSBkZXRlY3RfY2hpcCgpIGZ1bmN0aW9uIGlzIGNhbGxlZCBlYXJsaWVyIGFuZAotICAgIHdpbGwgYWJvcnQgZ3JhY2VmdWxseSB3aGVuIHRoZSBDaGlwIElEIHJlYWQgcmV0dXJucyBhbGwgMSdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogT2xvZiBKb2hhbnNzb24gPG9sb2ZAbGl4b20ubmV0PgotICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMmE2Y2M5N2I5MTk5N2FlNDg1MzEyYWM5MWZmYmNlYTZhODliNjYzYQotQXV0aG9yOiBPbG9mIEpvaGFuc3NvbiA8b2xvZkBsaXhvbS5uZXQ+Ci1EYXRlOglUdWUgU2VwIDI5IDEwOjIxOjI5IDIwMDkgLTA0MDAKLQotICAgIFNNQzkxMVg6IEFkZCBjaGlwIGF1dG8gZGV0ZWN0aW9uCi0KLSAgICBSZWZhY3RvciB0aGUgc21jOTExeCBkcml2ZXIgdG8gYWxsb3cgZm9yIGRldGVjdGluZyB3aGVuIHRoZSBjaGlwIGlzIG1pc3NpbmcuCi0gICAgSS5lLiB0aGUgZGV0ZWN0X2NoaXAoKSBmdW5jdGlvbiBpcyBjYWxsZWQgZWFybGllciBhbmQgd2lsbCBhYm9ydCBncmFjZWZ1bGx5Ci0gICAgd2hlbiB0aGUgQ2hpcCBJRCByZWFkIHJldHVybnMgYWxsIDEncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE9sb2YgSm9oYW5zc29uIDxvbG9mQGxpeG9tLm5ldD4KLSAgICBBY2tlZC1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDAyOTdlYzdlMmE0MDM5YjhhMjgzNDZmNTJmM2NjY2E0ZGIxZGRjNjIKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJVHVlIFNlcCAyOSAxMDoxOTo0OSAyMDA5IC0wNDAwCi0KLSAgICBUSSBPTUFQMyBVc2UgYXJtIGluaXQgc2VxdWVuY2UgdG8gaW5pdGlhbGl6ZSBpMmMKLQotICAgIFRoaXMgY2hhbmdlcyBmaXhlcyBhbiBlYXJseSBpMmMgZXJyb3IuCi0KLSAgICBJdCBhcHBlYXJzIHRoYXQgSTJDIGlzIHdvcmtpbmcgYmVjYXVzZSBvbmNlIGEgcmVhZCBvciB3cml0ZQotICAgIGVycm9yIGlzIGRldGVjdGVkLCB0aGUgb21hcDI0eHhfaTJjIGRyaXZlciBjYWxscyBpMmNfaW5pdAotICAgIGluc2lkZSBpdHMgZXJyb3IgaGFuZGxpbmcgY2hlY2suCi0KLSAgICBXaGlsZSBpdCBpcyBvayB0byBhdHRlbXB0IGVycm9yIGhhbmRsaW5nIHRoaXMgd2F5LCB0aGUgYm9hcmRzCi0gICAgbXVzdCBub3QgZGVwZW5kIG9uIHRoaXMgc2lkZSBlZmZlY3QgdG8gaW5pdGlhbGl6ZSBpdCdzIGkyYy4KLQotICAgIEluc3RlYWQgb2YgZXhwbGljaXRseSBjYWxsaW5nIGkyY19pbml0IGZvciBldmVyeSBib2FyZCwgdXNlCi0gICAgdGhlIGdlbmVyaWMgYXJtIGluaXRpYWxpemF0aW9uIGluIGxpYl9hcm0vYm9hcmQuYy4gQnkgZGVmaW5pbmcKLSAgICB0aGUgY29uZmlnIHZhcmlhYmxlIENPTkZJR19IQVJEX0kyQywgdGhlIG9tYXAzIGkyYyBpbml0aWFsaXphdGlvbgotICAgIGlzIGluY2x1ZGVkIGluIHRoZSBpbml0X3NlcXVlbmNlIHRhYmxlLgotCi0gICAgUnVuIHRlc3RlZCBvbiBCZWFnbGUuCi0gICAgQ29tcGlsZSB0ZXN0ZWQgb24gdGhlIG9tYXAzJ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLSAgICBBY2tlZC1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDRkZjMwZjNiYjcyODViMmM5NjI3MTNhNWM2OTNjMTZmZDkwODg1ZTAKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJVHVlIFNlcCAyOSAwOTo0MzowNCAyMDA5IC0wNDAwCi0KLSAgICBUSTogRGFWaW5jaSBETTM2NTogRW5hYmxpbmcgbmV0d29yayBTdXBwb3J0IG9uIERNMzY1IEVWTQotCi0gICAgVGhpcyBwYXRjaCBlbmFibGVzIEVNQUMgb24gdGhlIERNMzY1IEVWTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgMDBlMTY2NWEzY2Y5NTZlMDlhYzJjZTg2ZWY2ZWM0NTlmNmJmYjMzYwotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglUdWUgU2VwIDI5IDEwOjAyOjM4IDIwMDkgLTA0MDAKLQotICAgIFRJOiBEYVZpbmNpOiBHUElPIGhlYWRlciBmaWxlIGFuZCBkZWZpbml0aW9ucwotCi0gICAgU29tZSBEYVZpbmNpIFNPQydzIHVzZSBHUElPcyB0byBlbmFibGUgRU1BQyBhbmQgRE05MDAwLgotICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIGRlZmluaXRpb25zIGZvciBHUElPIHJlZ2lzdGVycyBhbmQgYWxzbyBhZGRzCi0gICAgc3RydWN0dXJlcyBmb3IgR1BJTy4KLSAgICBBIHNlcGFyYXRlIGhlYWRlciBmaWxlIGlzIGJlaW5nIGFkZGVkIHNvIHRoYXQgaW4gZnV0dXJlIHdlCi0gICAgY2FuIGhhdmUgYSBEYVZpbmNpIEdQSU8gZHJpdmVyIHNpbWlsZXIgdG8gT01BUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgOTVhZTgwM2FmYmRkOWY2NzNjOTRiOTkyZWE2MjRhMTBkMjUyYWZjMgotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglGcmkgU2VwIDE4IDE3OjMwOjA1IDIwMDkgLTA0MDAKLQotICAgIFRJOiBEYVZpbmNpIERNNjQ2eDogVXBkYXRlIGZsYWcgdXNlZCB0byByZXByZXNlbnQgRE02NDZ4IFNPQydzCi0KLSAgICBJbiB0aGUgRGFWaW5jaSBzcGVjaWZpYyBjb2RlLCB3ZSB1c2UgYm90aCBDT05GSUdfU09DX0RNNjQ2WCBhbmQKLSAgICBDT05GSUdfU09DX0RNNjQ2eCB0byByZXByZXNlbnQgRE02NDZ4IHNwZWNpZmljIGNvZGUuCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIG9jY3VycmVuY2VzIG9mIENPTkZJR19TT0NfRE02NDZ4IHRvCi0gICAgQ09ORklHX1NPQ19ETTY0NlguIFRoaXMgaXMgYmVjYXVzZSBmb3IgRE02NDR4IHNlcmllcyBvZiBTT0NzIHdlIHVzZQotICAgIHRoZSBmbGFnIENPTkZJR19TT0NfRE02NDRYLiBXZSB3YW50IHNvbWUgdW5pZm9ybWl0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBBY2tlZC1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgZmM5MTY1ZmRiM2IwMjFhYThmZjAyNDE3NjkyMjIwZmU5MzQ0MDcyYgotQXV0aG9yOiBPbG9mIEpvaGFuc3NvbiA8b2xvZkBsaXhvbS5uZXQ+Ci1EYXRlOglNb24gU2VwIDI4IDA4OjE5OjMwIDIwMDkgLTA0MDAKLQotICAgIE9NQVAzOiBDbGVhbiB1cCB3aGl0ZXNwYWNlIGluIG11eCBjb25maWdzCi0KLSAgICBTd2l0Y2ggZnJvbSBzcGFjZS1iYXNlZCBpbmRlbnRhdGlvbiB0byB0YWItYmFzZWQgaW4gbXV4IGNvbmZpZ3MsIGFzIHBvaW50ZWQKLSAgICBvdXQgYnkgV0QgYXQ6Ci0KLSAgICBodHRwOi8vbGlzdHMuZGVueC5kZS9waXBlcm1haWwvdS1ib290LzIwMDktU2VwdGVtYmVyLzA2MTI0MS5odG1sCi0KLSAgICBOb3RoaW5nIGJ1dCB3aGl0ZXNwYWNlIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCAoZGlmZiAtdyBnaXZlcyBubyBvdXRwdXQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogT2xvZiBKb2hhbnNzb24gPG9sb2ZAbGl4b20ubmV0PgotCi1jb21taXQgOWRlMDIxMmJkN2M0YzgyYTdlOGMyYTJjODcxNGY4YzdhYmM1N2QwOAotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJTW9uIFNlcCAyOCAwODoxNzo1MCAyMDA5IC0wNDAwCi0KLSAgICBPTUFQMyBNTUM6IEZpeCB3YXJuaW5nIGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcgotCi0gICAgRml4IHdhcm5pbmcKLSAgICBEZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0gICAgQ0M6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgotICAgIEFja2VkLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBlOTJkYWViNWMyMDUwNDM4NDAyYjg3YzdkNjE0ZThhMTNjMjk0MzQ4Ci1BdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxbc2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXRdPgotRGF0ZToJVHVlIFNlcCAyMiAwNDowMTowMSAyMDA5ICswNTMwCi0KLSAgICBTdXBwb3J0IGZvciB0aGUgT3BlblJEIGJhc2UgYm9hcmQKLQotICAgIFRoZSBpbXBsZW1lbnRhdGlvbiBpcyBib3Jyb3dlZCBmcm9tIHRoZSBzaGVldmFwbHVnIGJvYXJkIGFuZCB0aGUgTWFydmVsbAotICAgIDEuMS40IGNvZGUuIFVuc3VwcG9ydGVkIChvciB1bnRlc3RlZCkgaXMgdGhlIFNEIGNhcmQsIFBDSWUgYW5kIFNBVEEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0KLWNvbW1pdCBhNjJlNzhmYzQ0NGM2N2Y5NThiZTQ4ODkxYmVmM2RhYjBlOWViMjg1Ci1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMjA6MTU6MTcgMjAwOSArMDUzMAotCi0gICAgS2lya3dvb2Q6IG12ODhmNjI4MWd0d19nZTogQWRkIGt3YmltYWdlIGJ1aWxkIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBrd2JpbWFnZSBjb25maWd1cmF0aW9uIGZpbGUKLSAgICAodXNlZCBieSBta2ltYWdlIHV0aWxpdHkpCi0gICAgdG8gc3VwcG9ydCB1LWJvb3Qua3diIHRhcmdldCBvbiBtdjg4ZjYyODFndHdfZ2UgYm9hcmQuCi0KLSAgICBUbyBjcmVhdGUgS2lya3dvb2QgYm9vdCBpbWFnZSB0byBiZSBmbGFzaGVkIG9uIFNQSSBGbGFzaCwKLSAgICBhZGRpdGlvbmFsIHBhcmFtZXRlciB1LWJvb3Qua3diIG5lZWQgdG8gYmUgcGFzc2VkIGR1cmluZyBtYWtlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotCi1jb21taXQgNWJjN2NiYzE1YjE4OTA2ODJjMGIyNzlmNzA4OTE0NTE4YmQyNWY4ZAotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDE4OjIzOjExIDIwMDkgKzA1MzAKLQotICAgIEtpcmt3b29kOiByZDYyODFhOiBBZGQga3diaW1hZ2UgYnVpbGQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGt3YmltYWdlIGNvbmZpZ3VyYXRpb24gZmlsZQotICAgICh1c2VkIGJ5IG1raW1hZ2UgdXRpbGl0eSkKLSAgICB0byBzdXBwb3J0IHUtYm9vdC5rd2IgdGFyZ2V0IG9uIHJkNjI4MWEgcGxhdGZvcm0uCi0KLSAgICBUbyBjcmVhdGUgS2lya3dvb2QgYm9vdCBpbWFnZSB0byBiZSBmbGFzaGVkIG9uIE5BTkQsCi0gICAgYWRkaXRpb25hbCBwYXJhbWV0ZXIgdS1ib290Lmt3YiBuZWVkIHRvIGJlIHBhc3NlZCBkdXJpbmcgbWFrZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLQotY29tbWl0IDIzYjgwOTgyYTAyYTQzYmY0ZWFkOTE1NzRjOWQ2ZjFiNjQ3Y2NjOGYKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU3VuIFNlcCAyNyAxMToxMDowOSAyMDA5IC0wNTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgRXVrcmVhIENQVTkyNjAvQ1BVOUcyMCBTQkMKLQotICAgIHRoZXNlIGJvYXJkcyBhcmUgYnVpbHQgYXJvdW5kIEF0bWVsJ3MgQVQ5MVNBTTkyNjAvOUcyMCBhbmQgaGF2ZQotICAgIHVwIHRvIDY0TUIgb2YgTk9SIGZsYXNoLCB1cCB0byAxMjhNQiBvZiBTRFJBTSwgdXAgdG8gMkdCIG9mIE5BTkQKLSAgICBhbmQgaW5jbHVkZSBhIDEwLzEwMCBFdGhlcm5ldCBQSFkgaW4gUk1JSSBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBkODM4MGM5ZDM1ZTg4NzU5Yzk2ZTY4YTAzNzM4NDQ2Y2EwY2IyOTJmCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVN1biBTZXAgMjcgMDc6NDc6MjQgMjAwOSAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIEV1a3JlYSBDUFVBVDkxIFNCQwotCi0gICAgQ1BVQVQ5MSBpcyBidWlsdCBhcm91bmQgQXRtZWwncyBBVDkxUk05MjAwIGFuZCBoYXMgdXAgdG8gMTZNQiBvZiBOT1IKLSAgICBmbGFzaCwgdXAgdG8gMTI4TUIgb2YgU0RSQU0sIGFuZCBpbmNsdWRlcyBhIE1pY3JlbCBLUzg3MjEgUEhZIGluIFJNSUkKLSAgICBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBCZW5hcmQgPGVyaWNAZXVrcmVhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBlYjk1YWExNWU2NDRjMjliMDE4MzI3MDNhYTQ5NjRmZTQxOTE3MGYwCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CU1vbiBTZXAgMTQgMTQ6NTc6NDcgMjAwOSAtMDQwMAotCi0gICAgVEk6IERhVmluY2kgRE0zNjU6IE1pbm9yIGNvbmZpZyBjbGVhbnVwCi0KLSAgICBUaGUgRE0zNjUgY29uZmlnIHdhcyB1c2luZyB0aGUgJ0NPTkZJR19DTURfU0FWRUVOVicgZmxhZy4KLSAgICBUaGlzIGlzIGFscmVhZHkgaW5jbHVkZWQgd2hlbiB3ZSBpbmNsdWRlIHRoZQotICAgIGNvbmZpZ19jbWRfZGVmYXVsdC5oIGhlYWRlciBmaWxlLiBTbyB0aGlzIGZsYWcgaXMgcmVtb3ZlZC4KLSAgICBBbHNvIGFub3RoZXIgZmxhZyB0byBlbmFibGUgTkFORCBmdW5jdGlvbnMgd2FzIGJlaW5nCi0gICAgZW5hYmxlZCBpbmNvcnJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDVkNzgzYzFmZmQ2OTFmZmRhZGJjMmMyZjc5NmM0MTQ4MWI3Y2RjZTcKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJTW9uIFNlcCAxNCAxNTowMzowNiAyMDA5IC0wNDAwCi0KLSAgICBUSSBEYVZpbmNpIERNMzY1OiBSZW1vdmluZyBoZWFkZXIgZmlsZSB3aGljaCBkb2VzIG5vdCBleGlzdAotCi0gICAgVGhlIERhVmluY2kgRE0zNjUgRVZNIGJvYXJkIHNwZWNpZmljIGNvZGUgd2FzIGluY2x1ZGluZyBhIGhlYWRlciBmaWxlCi0gICAgd2hpY2ggZG9lcyBub3QgZXhpc3QuIFNvIHJlbW92aW5nIHRoaXMgaGVhZGVyIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA0MDllYzM3YmQ4YWU4ODIyZDI3NmU3NzQxOWQ4OTk1NzE4OTFiMTkxCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVR1ZSBTZXAgOCAxODowODowNiAyMDA5IC0wNDAwCi0KLSAgICBUSSBEYVZpbmNpOiBETTM1NTogQ29uZmlnIENsZWFudXAgYW5kIFVwZGF0ZQotCi0gICAgVGhpcyBwYXRjaCBkb2VzIHRoZSBmb2xsb3dpbmcKLSAgICAxKSBFbmFibGVzIHRoZSBOQU5EIGRyaXZlciB3aGljaCBpcyBub3cgYXZhaWxhYmxlLgotICAgIDIpIEVuYWJsZXMgdGhlICdDT05GSUdfTVREX0RFVklDRScgYXMgd2l0aG91dCB0aGlzIHRoZQotICAgIGNvbXBpbGF0aW9uIHdpbGwgZmFpbAotICAgIDMpIFdlIG5vdyBoYXZlIGEgc2FmZSBwbGFjZSB0byBzdG9yZSBlbnZpcm9ubWVudCBhbmQgZGVmaW5lcwotICAgIGFuIG9mZnNldCB3aGVyZSB0aGlzIGNhbiBiZSBzdG9yZWQuIFRoaXMgb2Zmc2V0IHZhbHVlIGlzIHN1Y2ggdGhhdCBpdCBpcyBhZnRlcgotICAgIHRoZSBsb2NhdGlvbiB3aGVyZSBVLUJvb3QgaXMgZmxhc2hlZCB1c2luZyBUSSBmbGFzaCB1dGlsaXRpZXMuCi0gICAgNCkgRW5hYmxlcyBCb290ZGVsYXkKLSAgICA1KSBJbmNyZWFzZXMgbWFsbG9jKCkgYXJlbmEgc2l6ZS4gTWFudWZhY3R1cmVycyBhcmUgY29taW5nIG91dCB3aXRoCi0gICAgTkFORCB3aXRoIGxhcmdlIGJsb2NrcyBzaXplcyBvZiB1cHRvIDEgTWlCLiBJdCBoYXMgYmVlbiBub3RpY2VkIHRoYXQKLSAgICBhcyB0aGUgYmxvY2sgc2l6ZSBvZiB0aGUgTkFORCB1c2VkIGlzIGluY3JlYXNlZCwgaWYgdGhpcyBwYXJ0aWN1bGFyCi0gICAgdmFsdWUgaXMgbm90IGluY3JlYXNlZCwgdGhlIE5BTkQgZHJpdmVyIHdpbGwgb3V0cHV0IG91dCBvZiBtZW1vcnkKLSAgICBlcnJvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0KLWNvbW1pdCA3OTA4Yzk3YTEwNjc2NWFkODgxNmJmMjI3MWE1YmYzMTU3MjhiMjc0Ci1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVR1ZSBTZXAgOCAxMTozNzozOSAyMDA5IC0wNDAwCi0KLSAgICBUSSBEYVZpbmNpOiBETTY0Nng6IEluaXRpYWwgU3VwcG9ydCBmb3IgRE02NDZ4IFNPQwotCi0gICAgRE02NDZ4IGlzIGFuIFNPQyBmcm9tIFRJIHdoaWNoIGhhcyBib3RoIGFuIEFSTSBhbmQgYSBEU1AuCi0gICAgVGhlcmUgYXJlIG11bHRpcGxlIHZhcmlhbnRzIG9mIHRoZSBTT0MgbWFpbmx5IGRlYWxpbmcgd2l0aCBkaWZmZXJlbnQKLSAgICBjb3JlIHNwZWVkcy4KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGluaXRpYWwgZnJhbWV3b3JrIGZvciB0aGUgRE02NDZ4IFNPQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IDVkMGY1MzYyNGMyNGVhZjgyZDU4MzY4YTZhNWI4NDc2MzkyZGQ1YzcKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJV2VkIFNlcCA5IDE1OjI2OjAwIDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2k6IERNNjQ0NjogRml4IENvbXBpbGF0aW9uIGVycm9yIGluIE5BTkQgbW9kZQotCi0gICAgVGhlIERlZmF1bHQgbW9kZSB0aGF0IGlzIGJ1aWx0IGZvciB0aGUgRGF2aW5jaSBEVkVWTSBoYXBwZW5zCi0gICAgdG8gYmUgdGhlIE5PUiBtb2RlLgotICAgIFdoZW4gd2Ugd2FudCB0byBidWlsZCBmb3IgdGhlIE5BTkQgbW9kZSwgd2UgZ2V0IGEgY29tcGlsYXRpb24KLSAgICBlcnJvci4gVGhpcyBpcyBvdmVyY29tZSBieSBkZWZpbmluZyB0aGUgQ09ORklHX01URF9ERVZJQ0UKLSAgICBmbGFnIGluIHRoZSBOQU5EIG1vZGUuCi0gICAgVGhlIGltYWdlIGJ1aWx0IGZvciBOQU5EIG1vZGUgd2FzIHN1Y2Nlc3NmdWxseSB0ZXN0ZWQgb24gdGhlCi0gICAgRGFWaW5jaSBETTY0NDYgRVZNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgN2EyYWE4YjY4MTIwZjMzM2VkMmVkYzMzNDc1Y2ExOTU4MTBkNmNiMQotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglUaHUgU2VwIDEwIDE1OjI3OjU3IDIwMDkgLTA0MDAKLQotICAgIE9NQVAzIE1vdmUgY2FjaGUgcm91dGluZSB0byBjYWNoZS5TCi0KLSAgICB2N19mbHVzaF9kY2FjaGVfYWxsLCBiZWNhdXNlIGl0IGRlcGVuZHMgb24gb21hcCBST00gY29kZSBpcyBub3QKLSAgICBnZW5lcmljLiAgUmVuYW1lIHRoZSBmdW5jdGlvbiB0byAnaW52YWxpZGF0ZV9kY2FjaGUnIGFuZCBtb3ZlIGl0Ci0gICAgdG8gdGhlIG9tYXAgY3B1IGRpcmVjdG9yeS4KLQotICAgIENvbGxlY3QgdGhlIG90aGVyIG9tYXAgY2FjaGUgcm91dGluZXMgbDJfY2FjaGVfZW5hYmxlIGFuZAotICAgIGwyX2NhY2hlX2Rpc2FibGUgd2l0aCBpbnZhbGlkZV9kY2FjaGUgaW50byBjYWNoZS5TLiAgVGhpcwotICAgIG1lYW5zIHJlbW92aW5nIHRoZSBvbGQgY2FjaGUuYyBmaWxlIHRoYXQgY29udGFpbmVkIGwyX2NhY2hlX2VuYWJsZQotICAgIGFuZCBsMl9jYWNoZV9kaXNhYmxlLgotCi0gICAgVGhlIGNvbnZlcnNpb24gZnJvbSBjYWNoZS5jIHRvIGNhY2hlLlMgd2FzIGRvbmUgbW9zdCB0aHJvdWdoCi0gICAgZGlzYXNzZW1ibGluZyB0aGUgdWJvb3QgYmluYXJ5LiAgVGhlIG9ubHkgc2lnbmlmaWNhbnQgY2hhbmdlIHdhcwotICAgIHRvIGNoYW5nZSB0aGUgY29tcGFyaXNpb24gZm9yIHRoZSByZXR1cm4gb2YgZ2V0X2NwdV9yZXYgZnJvbQotCi0gICAgICAgY21wCXIwLCAjMAotICAgICAgIGJlcQllYXJsaWVyX3RoYW5fbGFiZWwKLQotICAgIFdoaWNoIHdhcyBsb3N0IGluZm9ybWF0aW9uIHRvCi0KLSAgICAgICBjbXAJcjAsICNDUFVfM1hYX0VTMjAKLSAgICAgICBibHQJZWFybGllcl90aGFuX2xhYmVsCi0KLSAgICBUaGUgcGF0aHMgdGhyb3VnaCB0aGUgZW5hYmxlIHJvdXRpbmUgd2VyZSB2ZXJpZmllZCBieQotICAgIGFkZGluZyBhbiBpbmZpbml0ZSBsb29wIGFuZCBzZWVpbmcgdGhlIGhhbmcuICBUaGVuCi0gICAgcmVtb3ZpbmcgdGhlIGluZmluaXRlIGxvb3AgYW5kIHNlZWluZyBpdCBjb250aW51ZS4KLQotICAgIFRoZSBkaXNhYmxlIHJvdXRpbmUgaXMgc2ltaWxhciBlbm91Z2ggdGhhdCBpdCB3YXMgbm90Ci0gICAgdGVzdGVkIHdpdGggdGhpcyBtZXRob2QuCi0KLSAgICBSdW4gdGVzdGVkIGJ5IGNvbGQgYm9vdGluZyBmcm9tIG5hbmQgb24gYmVhZ2xlIGFuZCB6b29tMS4KLSAgICBDb21waWxlIHRlc3RlZCBvbiBNQUtFQUxMIGFybS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IGExNmRmMmMxMTE4ODI5N2VjYTQzY2Y2MDgwYzcwZmI2OWI5NjAyMzIKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJVHVlIFNlcCA4IDE3OjA5OjUyIDIwMDkgLTA0MDAKLQotICAgIFRJIERhVmluY2k6IFJlbW92ZSByZWZlcmVuY2VzIHRvIFNaX3h4Ci0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGFzbS9zaXplcy5oIGhlYWRlciBmaWxlIGZyb20gYmVpbmcKLSAgICBpbmNsdWRlZCBpbiB0aGUgRGFWaW5jaSBTT0MgY29uZmlncy4KLSAgICBSZWZlcmVuY2VzIHRvIFNaX3h4IGhhdmUgYmVlbiByZXBsYWNlZCBieSBhcHByb3ByaWF0ZQotICAgIGJpdCBzaGlmdGVkIHZhbHVlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDI4NTg3MGY3NTM3OGFjYTQxYzUwNjNlNDM1OGFkOTNiZjMwMTRmZDgKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgOSAwMToyNzoxOCAyMDA4IC0wNTAwCi0KLSAgICBMZWF2ZSB4ODZlbXUgb3AgY29kZSB0YWJsZXMgaW4gZGVmYXVsdCBzZWN0aW9uCi0KLSAgICBGb3JjaW5nIHRoZSB0YWJsZXMgaW50byBnb3QyIGNhdXNlZCBleHRyYSByZWxvY2F0aW9uIHdoZW4gdXNpbmcgLW1yZWxvY2F0YWJsZS4KLSAgICBUaGlzIHBhdGNoIHJlcXVpcmVzIGFueSBib2FyZCBkZWZpbmluZyBDT05GSUdfQklPU0VNVSB0byB1c2UgLW1yZWxvY2F0YWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEppbiBaaGVuZ3hpb25nIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJlMjI1NDQyM2I4NjU3Mjg0MWFhNzBmZjA1ZDIwOTMzZDFiNDk4MjMKLUF1dGhvcjogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgotRGF0ZToJU2F0IE9jdCAxMCAxMjo0MjoyMiAyMDA5ICswMjAwCi0KLSAgICBVcGRhdGUgYWxsIGJvYXJkIHRvIHN1cHBvcnQgbmV3IGJibWlpcGh5IGRyaXZlciAod2l0aCBtdWx0aWJ1cyBzdXBwb3J0KQotCi0gICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAzMTBjZWNiOGNjZGJjOGE5YmU1ODBlNzViMmZkMzYyMTc5ZDc4NTM1Ci1BdXRob3I6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KLURhdGU6CVNhdCBPY3QgMTAgMTI6NDI6MjEgMjAwOSArMDIwMAotCi0gICAgQWRkIGJiX21paXBoeV9pbml0IGNhbGwgYmVmb3JlIGFueSBldGhlcm5ldCBicmluZy11cCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA0YmEzMWFiMzNhYzgyNDYzNWZjYjQ5YWM2MDkwNzBhOWViY2FiN2YwCi1BdXRob3I6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KLURhdGU6CVNhdCBPY3QgMTAgMTI6NDI6MjAgMjAwOSArMDIwMAotCi0gICAgUmV3cml0ZSB0aGUgbWlpcGh5YmIgKEJpdC1iYW5nZWQgTUlJIGJ1cyBkcml2ZXIpIGluIG9yZGVyIHRvIHN1cHBvcnQgYW4gYXJiaXRyYXJ5IG51bWJlciBvZiBtaWkgYnVzZXMuCi0KLSAgICBUaGlzIGZlYXR1cmUgaXMgdXNlZnVsIHdoZW4geW91ciBib2FyZCB1c2VzIGRpZmZlcmVudCBtaWkgYnVzZXMgZm9yIGRpZmZlcmVudAotICAgIHBoeXMgYW5kIGFsbCAob3IgYSBwYXJ0KSBvZiB0aGVzZSBidXNlcyBhcmUgaW1wbGVtZW50ZWQgdmlhIGJpdC1iYW5naW5nIG1vZGUuCi0KLSAgICBUaGUgZHJpdmVyIHJlcXVpcmVzIHRoYXQgdGhlIGZvbGxvd2luZyBtYWNyb3Mgc2hvdWxkIGJlIGRlZmluZWQgaW50byB0aGUgYm9hcmQKLSAgICBjb25maWd1cmF0aW9uIGZpbGU6Ci0KLSAgICBDT05GSUdfQklUQkFOR01JSQkgICAgLSBFbmFibGUgdGhlIG1paXBoeWJiIGRyaXZlcgotICAgIENPTkZJR19CSVRCQU5HTUlJX01VTFRJIC0gRW5hYmxlIHRoZSBtdWx0aSBidXMgc3VwcG9ydAotCi0gICAgSWYgdGhlIENPTkZJR19CSVRCQU5HTUlJX01VTFRJIGlzIG5vdCBkZWZpbmVkLCB0aGUgYm9hcmQncyBjb25maWcgZmlsZSBuZWVkcwotICAgIHRvIGRlZmluZSBhdCBsZWFzdCB0aGUgZm9sbG93aW5nIG1hY3JvczoKLQotICAgIE1JSV9JTklUCSAgLSBHZW5lcmljIGNvZGUgdG8gZW5hYmxlIHRoZSBNSUkgYnVzIChvcHRpb25hbCkKLSAgICBNRElPX0RFQ0xBUkUgIC0gRGVjbGFyYXRpb24gbmVlZGVkIHRvIGFjY2VzcyB0byB0aGUgTURJTyBwaW4gKG9wdGlvbmFsKQotICAgIE1ESU9fQUNUSVZFICAgLSBBY3RpdmF0ZSB0aGUgTURJTyBwaW4gYXMgb3V0IHBpbgotICAgIE1ESU9fVFJJU1RBVEUgLSBBY3RpdmF0ZSB0aGUgTURJTyBwaW4gYXMgaW5wdXQvdHJpc3RhdGUgcGluCi0gICAgTURJT19SRUFECSAgLSBSZWFkIHRoZSBNRElPIHBpbgotICAgIE1ESU8odikJICAtIFdyaXRlIHYgb24gdGhlIE1ESU8gcGluCi0gICAgTURDX0RFQ0xBUkUgICAtIERlY2xhcmF0aW9uIG5lZWRlZCB0byBhY2Nlc3MgdG8gdGhlIE1EQyBwaW4gKG9wdGlvbmFsKQotICAgIE1EQyh2KQkgIC0gV3JpdGUgdiBvbiB0aGUgTURDIHBpbgotCi0gICAgVGhlIHByZXZpb3VzIG1hY3JvcyBtYWtlIHRoZSBkcml2ZXIgY29tcGF0aWJsZSB3aXRoIHRoZSBwcmV2aW91cyB2ZXJzaW9uCi0gICAgKHRoYXQgZGlkbid0IHN1cHBvcnQgdGhlIG11bHRpLWJ1cykuCi0KLSAgICBXaGVuIHRoZSBDT05GSUdfQklUQkFOR01JSV9NVUxUSSBpcyBhbHNvIGRlZmluZWQsIHRoZSBib2FyZCBjb2RlIG5lZWRzIHRvIGZpbGwKLSAgICB0aGUgYmJfbWlpcGh5X2J1c2VzW10gYXJyYXkgd2l0aCBhIHJlY29yZCBmb3IgZWFjaCByZXF1aXJlZCBidXMgYW5kIGRlY2xhcmUKLSAgICB0aGUgYmJfbWlpcGh5X2J1c2VzX251bSB2YXJpYWJsZSB3aXRoIHRoZSBudW1iZXIgb2YgbWlpIGJ1c2VzLgotICAgIFRoZSByZWNvcmQgKHN0cnVjdCBiYl9taWlwaHlfYnVzKSBoYXMgdGhlIGZvbGxvd2luZyBmaWVsZHMvY2FsbGJhY2tzIChzZWUKLSAgICBtaWlwaHkuaCBmb3IgZGV0YWlscyk6Ci0KLSAgICBjaGFyIG5hbWVbXQkJICAgLSBUaGUgc3ltYm9saWMgbmFtZSB0aGF0IG11c3QgYmUgZXF1YWwgdG8gdGhlIE1JSSBidXMKLQkJCSAgICAgcmVnaXN0ZXJlZCBuYW1lCi0gICAgaW50ICgqaW5pdCkoKQkgICAtIEluaXRpYWxpemF0aW9uIGZ1bmN0aW9uIGNhbGxlZCBhdCBzdGFydHVwIHRpbWUgKGp1c3QKLQkJCSAgICAgYmVmb3JlIHRoZSBFdGhlcm5ldCBpbml0aWFsaXphdGlvbikKLSAgICBpbnQgKCptZGlvX2FjdGl2ZSkoKSAgIC0gQWN0aXZhdGUgdGhlIE1ESU8gcGluIGFzIG91dHB1dAotICAgIGludCAoKm1kaW9fdHJpc3RhdGUpKCkgLSBBY3RpdmF0ZSB0aGUgTURJTyBwaW4gYXMgaW5wdXQvdHJpc3RhdGUgcGluCi0gICAgaW50ICgqc2V0X21kaW8pKCkJICAgLSBXcml0ZSB0aGUgTURJTyBwaW4KLSAgICBpbnQgKCpnZXRfbWRpbykoKQkgICAtIFJlYWQgdGhlIE1ESU8gcGluCi0gICAgaW50ICgqc2V0X21kYykoKQkgICAtIFdyaXRlIHRoZSBNREMgcGluCi0gICAgaW50ICgqZGVsYXkpKCkJICAgLSBEZWxheSBmdW5jdGlvbgotICAgIHZvaWQgKnByaXYJCSAgIC0gUHJpdmF0ZSBkYXRhIHVzZWQgYnkgYm9hcmQgc3BlY2lmaWMgY29kZQotCi0gICAgVGhlIGJvYXJkIGNvZGUgd2lsbCBsb29rIGxpa2U6Ci0KLSAgICBzdHJ1Y3QgYmJfbWlpcGh5X2J1cyBiYl9taWlwaHlfYnVzZXNbXSA9IHsKLSAgICAgeyAubmFtZSA9IG1paWJ1cyMxLCAuaW5pdCA9IGIxX2luaXQsIC5tZGlvX2FjdGl2ZSA9IGIxX21kaW9fYWN0aXZlLCAuLi4gfSwKLSAgICAgeyAubmFtZSA9IG1paWJ1cyMyLCAuaW5pdCA9IGIyX2luaXQsIC5tZGlvX2FjdGl2ZSA9IGIyX21kaW9fYWN0aXZlLCAuLi4gfSwKLSAgICAgLi4uCi0gICAgaW50IGJiX21paXBoeV9idXNlc19udW0gPSBzaXplb2YoYmJfbWlpcGh5X2J1c2VzKSAvCi0JCQkgICAgICBzaXplb2YoYmJfbWlpcGh5X2J1c2VzWzBdKTsKLQotICAgIFNpZ25lZC1vZmYtYnk6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZWZhZjZmMWJmNmViZGQ4ZjE2YjBkMGMyOTYwYWJlOGQwNmY5NWFmNAotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBPY3QgMiAxODo1NDoyMCAyMDA5IC0wNDAwCi0KLSAgICBtcGM4M3h4OiBjb3NtZXRpYyBjb21tZW50IHVwZGF0ZSByZWxhdGluZyB0byBTUEQgRUVQUk9NCi0KLSAgICBjb21taXQgNmQwZjZiY2YzMzdjNTI2MWMwOGZhYmUxMjk4MjE3OGMyYzQ4OWQ3NiBkaWQgdGhlIGJpZwotICAgIHJlbmFtZSBvZiBDRkdfIG1hY3JvcyB0byBDT05GSUdfU1lTIG1hY3Jvcy4gIEJ1dCBpdCBtaXNzZWQKLSAgICBhIGNvdXBsZSBvZiBpbnN0YW5jZXMgd2l0aGluIGNvbW1lbnRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFmYzNiYTBmYzQxOTU2MjRlNzllMjEyNDQzODBlZDdjYzJmZDY5NjkKLUF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci1EYXRlOglUaHUgT2N0IDggMDI6MDM6NTEgMjAwOSArMDIwMAotCi0gICAgcmVsb2NhdGlvbjogRG8gbm90IHJlbG9jYXRlIE5VTEwgcG9pbnRlcnMuCi0KLSAgICBOVUxMIGlzIGFuIGFic29sdXRlIHZhbHVlIGFuZCBzaG91bGQgbm90IGJlIHJlbG9jYXRlZC4KLSAgICBBZnRlciB0aGlzIGNvcnJlY3Rpb24gY29kZSBsaWtlOgotICAgICB2b2lkIHdlYWtfZnVuKHZvaWQpIF9fYXR0cmlidXRlX18oKHdlYWspKTsKLSAgICAgcHJpbnRmKCJ3ZWFrX2Z1bjolcFxuIiwgd2Vha19mdW4pOwotICAgIHdpbGwgc3RpbGwgcHJpbnQgbnVsbCBhZnRlciByZWxvY2F0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci0KLWNvbW1pdCAzYmViNDBjMjQ3M2YwZGQzNzMyMzFjNzIzZDg4YzUxZTQ2YWQ5NmY3Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgT2N0IDcgMTE6NDU6MDAgMjAwOSAtMDUwMAotCi0gICAgODV4eDogRW5zdXJlIEJTUyBzZWdtZW50IGlzbid0IGxpbmtlZCBhdCBhZGRyZXNzIDAKLQotICAgIFdoZW4gVS1Cb290IGlzIHJlbG9jYXRlZCBmcm9tIGZsYXNoIHRvIFJBTSBwb2ludGVycyBhcmUgbW9kaWZpZWQKLSAgICBhY2NvcmRpbmdseS4gIEhvd2V2ZXIsIHBvaW50ZXJzIGluaXRpYWx6ZWQgd2l0aCBOVUxMIHZhbHVlcyBzaG91bGQgbm90Ci0gICAgYmUgbW9kaWZpZWQgc28gdGhhdCB0aGV5IG1haW50YWluIHRoZWlyIGludGVuZGVkIE5VTEwgdmFsdWUuICBJZiB0aGUKLSAgICBCU1Mgc2VnbWVudCBpcyBsaW5rZWQgYXQgYWRkcmVzcyAwIGl0cyBhZGRyZXNzIHdpbGwgbm90IGJlCi0gICAgdXBkYXRlZCBhcyBuZWNlc3NhcnkgZHVyaW5nIHJlbG9jYXRpb24uCi0KLSAgICBUaGlzIGlzIGEgdGVtcG9yYXJ5IHdvcmthcm91bmQuICBUaGUgZW5kIGdvYWwgaXMgdG8gYWRkIHN1cHBvcnQgdG8KLSAgICBVLUJvb3QgdG8gZHluYW1pY2FsbHkgbG9jYXRlIHRoZSBCU1MgYXQgYW4gYXJiaXRyYXJ5IGFkZHJlc3MgYXQKLSAgICBydW50aW1lLiAgV2hlbiB0aGUgYWJpbGl0eSB0byBmaXh1cCB0aGUgQlNTIGludGVsaWdlbnRseSBpcwotICAgIGFkZGVkLCB0aGlzIHdvcmthcm91bmQgY2FuIGJlIHJlbW92ZWQgYW5kIHRoZSA4NXh4IGxpbmsgc2NyaXB0Ci0gICAgY2FuIHB1dCB0aGUgQlNTIGF0IGEgZml4ZWQgYWRkcmVzcyBhdCBsaW5rIHRpbWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgOTVjNDRlYzQ4NWI0NmZmYjQzZGJkYWEyOTlmMTQ5MWE1MDBmZGFkZgotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgNyAxNjozODowNSAyMDA5ICswMjAwCi0KLSAgICB0cW01MjAwOiBDb3JyZWN0IGNvbW1lbnQgYW5kIGNvZGUgaW4gcG9zdF9ob3RrZXlzX3ByZXNzZWQuCi0KLSAgICBUaGlzIGZpeGVzIHRoZSBjb2RlIGFuZCB0aGUgY29tbWVudCBhY2NvcmRpbmcgdG8gdGhlIG9yaWdpbmFsIGludGVudCBvZgotICAgIGRvaW5nIGFuIGludGVuc2l2ZSBtZW1vcnkgdGVzdCB3aGVuIFBTQzZfMyBpcyBwdWxsZWQgbG93IG9uIHRoZSBTVEs1Mnh4LgotICAgIE5vdGFibHkgUE9SVF9DT05GSUcgd2lsbCBiZSBvdmVycmlkZGVuIHdpdGggdGhpcyBjb3JyZWN0IGNvZGUgbm93LAotICAgIHNvIGJld2FyZS4KLQotICAgIFRoZSBvcmlnaW5hbCBjb2RlIG9ubHkgd29ya2VkIGJ5IGNvaW5jaWRlbmNlIGRlcGVuZGluZyBvbiB0aGUgUE9SVF9DT05GSUcKLSAgICBzZXR0aW5nIGZyb20gdGhlIGhlYWRlciBmaWxlLiAgVGhlIG5ldyBjb2RlIHdhcyB0ZXN0ZWQgdG8gZW5zdXJlIHRoYXQgdGhlCi0gICAgKHVuZG9jdW1lbnRlZCkgbWVtb3J5IHRlc3Qgc3RpbGwgd29ya3Mgb24gdGhlIFNUSzUyeC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotICAgIENDOiBNYXJ0aW4gS3JhdXNlIDxNYXJ0aW4uS3JhdXNlQHRxcy5kZT4KLQotICAgIE1pbm9yIHdoaXRlLXNwYWNlIGNsZWFudXAuCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGRhMDFmNTM0MDRmOTlkYjE4NWQxOTY4NjdhZjc5MzcxNzI1ZDQ2ODMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBPY3QgNCAyMjo1NjowOCAyMDA5ICswMjAwCi0KLSAgICBtcGM1MTJ4OiBmaXggZml4ZWRfc2RyYW0oKSBpbml0IGNvZGUuCi0KLSAgICBDb21taXQgMDU0MTk3YmEgYW5kIGxhdGVyIGZpeGVzIHVzZWQgYW4gYXJyYXkgdG8gaW5pdGlhbGl6ZSBzb21lIG9mCi0gICAgdGhlIE1ERFJDIHBhcmFtZXRlcnM7IGhvd2V2ZXIsIHRoZSB1c2Ugb2YgYW4gYXJyYXkgdHVybmVkIG91dCB0byBiZSBhCi0gICAgYmFkIGlkZWEgYXMgaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBjb3JyZWxhdGUgc3RydWN0dXJlIGVudHJpZXMgdG8KLSAgICBhcnJheSBpbmRpY2VzIGluIHJlYWRhYmxlIGFuZCByZWxpYWJsZSB3YXkuIE5vdyB3ZSB1c2UgYSBzdHJ1Y3QKLSAgICBpbnN0ZWFkLCB3aGljaCBtYWtlcyB0aGlzIHNlbGYtZXhwbGFuYXRvcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZGJjYzM1NzE2NmJlZDIwZGYxMzQ1MGU5M2E1MDFmMzBiMTk3ZWZkMQotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotRGF0ZToJU3VuIE9jdCA0IDIwOjA0OjIyIDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogcmVzcGVjdCA4MC1jaGFycyBwZXIgbGluZSBpbiBwcGMqLmggZmlsZXMKLQotICAgIEFmdGVyIHJ1bm5pbmcgY2hlY2tzdHlsZS5wbCBvbiB0aGUgdGhyZWUgcHJldmlvdXMgcGF0Y2hlcyBJIG5vdGVkIHRoYXQgaW4KLSAgICB0aGUgKi5oIGZpbGVzIHRoZXJlIHdlcmUgYSBsb3Qgb2YgbG9uZyBsaW5lcy4gVGhpcyBwYXRjaCBzb2x2ZXMgdGhpcyBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3OGQyYTY0MTM3MWVjNzFjYzM3ODZiMTY3YTMxOGM3YjExNWZiYjkwCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci1EYXRlOglTdW4gT2N0IDQgMjA6MDQ6MjEgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBSZXdvcmsgY21kIHJlZ2luZm8KLQotICAgIFRoZSBjb21tYW5kICJyZWdpbmZvIiBnb3QgYW4gb3ZlcmhhdWwgZm9yIHRoZSBwcGM0eHguIEl0IGR1bXBzIGFsbCB0aGUKLSAgICByZWxldmFudCBIVyBjb25maWd1cmF0aW9uIHJlZ2lzdGVycyAoYWRkcmVzcywgc3ltYm9saWMgbmFtZSwgY29udGVudCkuCi0gICAgVGhpcyBhbGxvd3MgdG8gZWFzaWx5IGRldGVjdCBlcnJvcnMgaW4gKi5oIGZpbGVzIGFuZCBjaGFuZ2VzIGluIHRoZSBIVwotICAgIGNvbmZpZ3VyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRkYzkyMmZmMmMyMGFlMGI3ZjljZTJkZjFhYzI4MTQzZTJmMzI1YmQKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KLURhdGU6CVN1biBPY3QgNCAyMDowNDoyMCAyMDA5ICswMjAwCi0KLSAgICBwcGNfNHh4OiBBcHBseSBuZXcgSFcgcmVnaXN0ZXIgbmFtZXMKLQotICAgIE1vZGlmeSBhbGwgZXhpc3RpbmcgKi5jIGZpbGVzIHRvIHVzZSB0aGUgbmV3IHJlZ2lzdGVyIG5hbWVzCi0gICAgYXMgc2VlbiBpbiB0aGUgQU1DQyBtYW51YWxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBtZW1iZXIuZnNmLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmODBlNjFkY2ZlNTNmYTNhNTkzNjY1OTg4MzQxNWM5YmQxYjVhM2Q5Ci1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci1EYXRlOglTdW4gT2N0IDQgMjA6MDQ6MTkgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBDbGVhbnVwIHNvbWUgSFcgcmVnaXN0ZXIgbmFtZXMKLQotICAgIEhlcmUgeW91IGZpbmQgYWxsIHRoZSBjaGFuZ2VzIGluIHRoZSBpbmNsdWRlIGRpcmVjdG9yeSBmb3IgbmV3IHJlZ2lzdGVyIG5hbWVzCi0gICAgYW5kIGFkYXB0aW5nIG90aGVyIG9uZXMgdG8gdGhlIG5hbWVzIHVzZWQgYnkgQU1DQyBpbiB0aGVpciBtYW51YWxzLCBlLmcuCi0gICAgRm9yIDQ0MEVQeC9HUlBQQzQ0MEVQeC9HUlgsIFJldmlzaW9uIDEuMTUg4oCTIFNlcHRlbWJlciAyMiwgMjAwOAotICAgIEZvciBQUEM0MDVHUCBFbWJlZGRlZCBQcm9jZXNzb3IsIFJldmlzaW9uIDEuMDIg4oCTIE1hcmNoIDIyLCAyMDA2Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDU2ZjE0ODE4ZjY2YzY4YThiOWU0NTkyNWYyOWNlYjk3NDQwNWFkNDgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCA2IDA3OjIxOjA4IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIFBQQzQwNUVYKHIpIFJldiBEIHN1cHBvcnQKLQotICAgIFVuZm9ydHVuYXRlbHkgc29tZSBSZXYgRCBQUEM0MDVFWC80MDVFWHIgUFZSJ3MgYXJlIGlkZW50aWNhbCB3aXRoIG9sZGVyCi0gICAgNDA1RVgocikgcGFydHMuIEhlcmUgYSBsaXN0OgotCi0gICAgMHgxMjkxMTQ3NSAtIDQwNUVYIFJldiBEIHdpdGggU2VjdXJpdHkgKmFuZCogNDA1RVggUmV2IEEvQiB3aXRvdXQgU2VjCi0gICAgMHgxMjkxMTQ3MyAtIDQwNUVYIFJldiBEIHdpdGhvdXQgU2VjdXJpdHkgKmFuZCogNDA1RVhyIFJldiBBL0Igd2l0aCBTZWMKLQotICAgIFNpbmNlIHRoZXJlIGFyZSBvbmx5IGEgZmV3IG9sZGVyIHBhcnRzIGluIHRoZSBmaWVsZCwgdGhpcyBwYXRjaCBub3cKLSAgICBjaGFuZ2VzIHRoZSBQVlIncyBhYm92ZSB0byByZXByZXNlbnQgdGhlIG5ldyBSZXYgRCB2ZXJzaW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogUGhvbmcgVm8iIDxwdm9AYW1jYy5jb20+Ci0KLWNvbW1pdCAwNmRmYWVlZjUyYTVmNzczYWU0MjkyNDMyZTNjNzRmZjUyZWFkMzE2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMiAxNDozNToxNiAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBtc2cgImluaXRpYWxpemF0aW9uIGFzIHJvb3QtY29tcGxleCBmYWlsZWQiIHVwb24gUENJZSBzY2FuCi0KLSAgICBUaGlzIG1lc3NhZ2UgaXMgcHJpbnRlZCB1cG9uIFBDSWUgYnVzIHNjYW4sIG5vdCBvbmx5IHVwb24gZXJyb3IsIGJ1dCBhbHNvCi0gICAgaWYgbm8gUENJZSBkZXZpY2UgaXMgZGV0ZWN0ZWQgYXQgYWxsLiBTaW5jZSB0aGlzIGlzIG5vdCBhbiBlcnJvciwgbGV0J3MKLSAgICByZW1vdmUgdGhpcyBtZXNzYWdlIGluIHRoaXMgY2FzZS4gV2UgYWxyZWFkeSBoYXZlIHRoZSBtZXNzYWdlCi0gICAgImxpbmsgaXMgbm90IHVwLiIgaWYgdGhlcmUgaXMgbm8gUENJZSBkZXZpY2UgcHJlc2VudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDU0ZjVmMDU2YWExZGFhM2UzOWJhZDFjNWMzZmI0M2E3MmNkYjllODQKLUF1dGhvcjogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+Ci1EYXRlOglNb24gT2N0IDUgMTI6MzM6MjggMjAwOSAtMDQwMAotCi0gICAgUFBDNHh4OiBEZW5hbGkgY29yZTogRml4IGluY29ycmVjdCBERFIgcm93IGJpdHMKLQotICAgIFRoZSBTUEQgZGV0ZWN0aW9uIGNvZGUgZm9yIHRoZSBEZW5hbGkgbWVtb3J5IGNvbnRyb2xsZXIgdXNlZCBvbiBzb21lCi0gICAgcHBjNHh4Ci0gICAgcHJvY2Vzc29ycyBpbmNvcnJlY3RseSBlbmNvZGVzIEREUjBfNDIuIFdpdGggY2VydGFpbiBtZW1vcnkKLSAgICBjb25maWd1cmF0aW9ucywKLSAgICB0aGlzIGNhbiBjYXVzZSB0aGUgYm9vdHdyYXBwZXIgdG8gaW5jb3JyZWN0bHkgY2FsY3VsYXRlIHRoZSBpbnN0YWxsZWQKLSAgICBtZW1vcnkKLSAgICBzaXplLCBiZWNhdXNlIHRoZSBudW1iZXIgb2Ygcm93IGJpdHMgaXMgd3JvbmcuIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdAotICAgIGVuY29kaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTlkYmQ0ZWZkNmQ1ZWNjMzdkN2U4ZjI4YjIwZDliZThjODMwNTVjNwotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJTW9uIE9jdCA1IDAwOjAyOjUxIDIwMDkgLTA3MDAKLQotICAgIEFkZCBpbmZvcm1hdGlvbiBhYm91dCByZXR1cm4gdmFsdWVzIG9mIHh4eF9ldGhfcmVnaXN0ZXIoKSBpbiBkb2N1bWVudGF0aW9uCi0KLSAgICBBcyBkaXNjdXNzZWQgb24gbWFpbGluZyBsaXN0LCA8MCBpbmRpY2F0ZXMgZmFpbHVyZSwgPj0wIGluZGljYXRlcyBudW1iZXIKLSAgICBvZiBpbnRlcmZhY2VzIGZvdW5kLgotCi0gICAgQWxzbyBhZGRlZCBibHVyYiBhYm91dCBwcml2YXRlIGRhdGEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAxZjFlNzc0ZWM2MjQyZDRlYTM0ZTVjZmY1NzIzMmRlYjViYjU4N2UwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBTZXAgOSAxNDo0MToyMiAyMDA5IC0wNDAwCi0KLSAgICBkb2N1bWVudCBuZXR3b3JrIGRyaXZlciBmcmFtZXdvcmsKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYWJhODIzNzI1N2RkMTViMGU3NmNjNTE3ZjBlNzQxYzA5MDhlZTBiOQotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglXZWQgU2VwIDkgMTU6NTk6MTkgMjAwOSArMDUzMAotCi0gICAgbmV0OiBraXJrd29vZF9lZ2lnYS5jOiBmaXhlZCBidWlsZCB3YXJuaW5nCi0KLSAgICBpZiBsaW5rIHVwIGRldGVjdGlvbiBjb2RlIGlzIGRpc2FibGVkIHRocm91Z2ggY29uZmlnIG9wdGlvbiwgaXQgZ2l2ZXMgYnVpbGQgd2FybmluZy4KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBzYW1lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDcxOTRhYjgwOTUzMmVlY2EzZTJlZTVkYzEyMDE3Y2I5MDFjYzU4NDIKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBPY3QgNCAyMjozNzowMyAyMDA5IC0wNzAwCi0KLSAgICBDb252ZXJ0IFNNQzkxMTExIEV0aGVybmV0IGRyaXZlciB0byBDT05GSUdfTkVUX01VTFRJIEFQSQotCi0gICAgQWxsIGluLXRyZWUgYm9hcmRzIHRoYXQgdXNlIHRoaXMgY29udHJvbGxlciBoYXZlIENPTkZJR19ORVRfTVVMVEkKLSAgICBhZGRlZAotICAgIEFsc286Ci0gICAgICAtIGNoYW5nZWQgQ09ORklHX0RSSVZFUl9TTUM5MTExMSB0byBDT05GSUdfU01DOTExMTEKLSAgICAgIC0gY2xlYW5lZCB1cCBsaW5lIGxlbmd0aHMKLSAgICAgIC0gbW9kaWZpZWQgYWxsIGJvYXJkcyB0aGF0IG92ZXJyaWRlIHdlYWsgZnVuY3Rpb24gaW4gdGhpcyBkcml2ZXIKLSAgICAgIC0gbW9kaWZpZWQgYWxsIGVlcHJvbSBzdGFuZGFsb25lIGFwcHMgdG8gd29yayB3aXRoIG5ldyBkcml2ZXIKLSAgICAgIC0gdXBkYXRlZCBibGFja2ZpbiBzdGFuZGFsb25lIEVFUFJPTSBhcHAgYWZ0ZXIgdGVzdGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzMmU3ZjIzOWRkYTg2MzgzNzdlZGIwZDNlN2FjMjY5Y2FiYmFmYmU2Ci1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMjA6Mjg6MTggMjAwOSArMDUzMAotCi0gICAgbmV0OiBwaHk6IG12ODhlNjF4eC5jIDogZml4ZWQgYnVpbGQgd2FybmluZwotCi0gICAgZm9sbG93aW5nIGJ1aWxkIHdhcm5pbmcgd2FzIG9ic2VydmVkCi0KLSAgICBtdjg4ZTYxeHguYzogSW4gZnVuY3Rpb24g4oCYbXY4OGU2MXh4X2J1c3ljaGvigJk6Ci0gICAgbXY4OGU2MXh4LmM6MjA4OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHNhbWUKLSAgICBQYXRjaCB0ZXN0ZWQgZm9yIHJkNjI4MWEgYm9hcmQgYnVpbGQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYzBiNDZkOGVhZDNjNmM1YjU2OWM4MzU0NGZkNzFiOWQ3MzM1Njg2OQotQXV0aG9yOiBKYW1lcyBDbG91Z2ggPGphbWVzQHJ0ZXRjLmNvbT4KLURhdGU6CVRodSBTZXAgMTAgMDk6MTE6NTAgMjAwOSArMDIwMAotCi0gICAgbmV0OiBGaXggcHJvYmxlbSB3aXRoIDQwNUVaIGV0aGVybmV0IGludGVycnVwdAotCi0gICAgT24gNDA1RVogdGhlIFJYLS9UWC1pbnRlcnJ1cHRzIGFyZSBjb2FsZXNjZWQgaW50byBvbmUgSVJRIGJpdCBpbiB0aGUKLSAgICBVSUMuIFdlIG5lZWQgdG8gYWNrbm93bGVkZ2UgdGhlIFJYLS9UWC1pbnRlcnJ1cHRzIGluIHRoZQotICAgIFNEUjBfSUNJTlRTVEFUIHJlZyBhcyB3ZWxsLgotCi0gICAgVGhpcyBwcm9ibGVtIHdhcyBpbnRyb2R1Y2VkIHdpdGggY29tbWl0Ci0gICAgZDE2MzFmZTEgW3BwYzR4eDogQ29uc29saWRhdGUgUFBDNHh4IFVJQyBkZWZpbmVzXQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgQ2xvdWdoIDxqYW1lc0BydGV0Yy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5MWI0NjljOTVmYWY5MjQzNWUzZDVkNzgyOTJiYTc4MDc1YTNjNWNhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBTZXAgMiAwNDoxODo1NSAyMDA5IC0wNDAwCi0KLSAgICBuZXQ6IGFkZCByYW5kb21fcG9ydCgpIHByb3RvdHlwZQotCi0gICAgVGhlIHJhbmRvbV9wb3J0KCkgaXMgbWVhbnQgdG8gYmUgdXNlZCBieSBvdGhlciBuZXQgY29kZSwgYnV0IHdpdGhvdXQgYQotICAgIHByb3RvdHlwZSwgd2UgZ2V0IGZ1biB3YXJuaW5ncyBsaWtlOgotICAgIGRucy5jOiBJbiBmdW5jdGlvbiAnRG5zU2VuZCc6Ci0gICAgZG5zLmM6ODk6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdyYW5kb21fcG9ydCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMzQ2OTQyNGNiNmQ5MzljN2FlZGYxZTBlZmRlYzQ0YTc5N2MwYTE4YwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIFNlcCAyMSAxMToyMDozNyAyMDA5IC0wNTAwCi0KLSAgICBwcGM6IFJlbW92ZSByZWxvY19vZmYgZmllbGQgZnJvbSBnbG9iYWxfZGF0YSBzdHJ1Y3R1cmUKLQotICAgIE5vdyB0aGF0IHByb3BlciByZWxvY2F0aW9uIGlzIHN1cHBvcnRlZCwgdGhlIHJlbG9jX29mZiBmaWVsZCBpcyBubyBsb25nZXIKLSAgICBuZWNlc3NhcnkuCi0KLSAgICBOb3RlIHRoYXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIGp1bXAgdGFibGUgcG9pbnRlcgotICAgIGluIHRoZSBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgaXMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UsIGJyZWFraW5nCi0gICAgZXhlY3V0aW9uIG9mIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIGNvbXBpbGVkIGZvciBwcmV2aW91cyB2ZXJzaW9ucyBvZgotICAgIFUtQm9vdC4KLQotICAgIFdlIHRoZXJlZm9yZSBpbmNyZW1lbnQgWEZfVkVSU0lPTiB0byA2Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwNjMwNTM1ZTJkMDYyZGQ3M2MxY2VjYTVjNjEyNWM4NmQxMTI3YTQ5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgU2VwIDIyIDA5OjI3OjU1IDIwMDkgLTA1MDAKLQotICAgIGFybS9taWNyb2JsYXplL25pb3MvbmlvczIvc2g6IFJlbW92ZSByZWxvY2F0aW9uIGZpeHVwcwotCi0gICAgVGhlc2UgYXJjaGl0ZWN0dXJlcyBkb24ndCBuZWVkIHJlbG9jYXRpb24gZml4dXBzLCBzbyByZWR1Y2UgdGhlaXIKLSAgICBjb2Rlc2l6ZSBhIGJpdCBieSBkZWZpbmluZyBDT05GSUdfUkVMT0NfRklYVVBfV09SS1MuCi0KLSAgICBBbHNvIHJlbW92ZSB0aGUgcmVsb2Nfb2ZmIGZpZWxkIGZyb20gdGhlaXIgZ2xvYmFsIGRhdGEgc3RydWN0dXJlcwotICAgIGFzIGl0IGlzIG5vIGxvbmdlciBuZWVkZWQuCi0KLSAgICBOb3RlIHRoYXQgdGhlIGxvY2F0aW9uIG9mIHRoZSBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIGp1bXAgdGFibGUgcG9pbnRlcgotICAgIGluIHRoZSBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUgaXMgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UsIGJyZWFraW5nCi0gICAgZXhlY3V0aW9uIG9mIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIGNvbXBpbGVkIGZvciBwcmV2aW91cyB2ZXJzaW9ucyBvZgotICAgIFUtQm9vdC4gV2Ugd2lsbCB0aGVyZWZvcmUgaW5jcmVtZW50IFhGX1ZFUlNJT04gaW4gdGhlIG5leHQgY29tbWl0LAotICAgIHdoaWNoIGFsc28gdG91Y2hlcyB0aGlzIGFyZWEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1MjFhZjA0ZDg1MzM2MWI0OTM0NGI2MTg5MmViMDYxOGY5ZjcxM2M1Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjIwOjM2IDIwMDkgLTA1MDAKLQotICAgIENvbmRpdGlvbmFsbHkgcGVyZm9ybSBjb21tb24gcmVsb2NhdGlvbiBmaXh1cHMKLQotICAgIEFkZCAjaWZkZWZzIHdoZXJlIG5lY2Vzc2FyeSB0byBub3QgcGVyZm9ybSByZWxvY2F0aW9uIGZpeHVwcy4gIFRoaXMKLSAgICBhbGxvd3MgYm9hcmRzL2FyY2hpdGVjdHVyZXMgd2hpY2ggc3VwcG9ydCByZWxvY2F0aW9uIHRvIHRyaW0gYSBkZWNlbnQKLSAgICBjaHVuayBvZiBjb2RlLgotCi0gICAgTm90ZSB0aGF0IHRoaXMgcGF0Y2ggZG9lc24ndCBhZGQgI2lmZGVmcyB0byBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgY29kZQotICAgIHdoaWNoIGRvZXMgbm90IHN1cHBvcnQgcmVsb2NhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAzY2JjZmE3MGIxMTZkZjFiYmRjOTBiYTMxYzYxYWRjYWVjMDU4YThhCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjIwOjM1IDIwMDkgLTA1MDAKLQotICAgIHAzbXg6IFJlbW92ZSBzZXJpYWwgcmVsb2NhdGlvbiBmaXh1cHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA4MGY3M2I5MmExOTEyOTg1NDg3NmVjM2YxYWVmNTMxYTA5ZTg2ZDJkCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjIwOjM0IDIwMDkgLTA1MDAKLQotICAgIGx3bW9uLCBsd21vbjU6IFJlbW92ZSBzeXNtb24gUE9TVCByZWxvY2F0aW9uIGZpeHVwcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDMzMWFiNjBjNGE0MThjMzllNWIxYTA1ZDQ2NDhhNDE1NWQwYWQxM2UKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MzMgMjAwOSAtMDUwMAotCi0gICAgbXBsOiBSZW1vdmUgbWVtb3J5IHRlc3QgcmVsb2NhdGlvbiBmaXh1cHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA2Mzg1YjI4MTE2Zjc3NWRhNDc3MWI3NjhiYTliZjkzYzNhYWFmMjZlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjIwOjMyIDIwMDkgLTA1MDAKLQotICAgIGZwZ2E6IFJlbW92ZSByZWxvY2F0aW9uIGZpeHVwcwotCi0gICAgUFBDIGJvYXJkcyBhcmUgdGhlIG9ubHkgdXNlcnMgb2YgdGhlIGN1cnJlbnQgRlBHQSBjb2RlIHdoaWNoIGlzIGxpdHRlcmVkCi0gICAgd2l0aCBtYW51YWwgcmVsb2NhdGlvbiBmaXh1cHMuICBOb3cgdGhhdCBwcm9wZXIgcmVsb2NhdGlvbiBpcyBzdXBwb3J0ZWQKLSAgICBmb3IgUFBDIGJvYXJkcywgcmVtb3ZlIEZQR0EgbWFudWFsIHJlbG9jYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgY2QxMDExZGI4MDI4N2VlZjkzM2QxNTk5Yjc0Y2ZmMTExNmM5MzEzNAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIFNlcCAyMSAxMToyMDozMSAyMDA5IC0wNTAwCi0KLSAgICB0c2VjOiBSZW1vdmUgUEhZIGNvbW1hbmQgcmVsb2NhdGlvbiBmaXh1cHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBiNTY1MGM1ZDhjOTkxMDAxNDRkOGU0ZTlhZjkxMDQwNWY4NTdiYjdhCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjIwOjMwIDIwMDkgLTA1MDAKLQotICAgIHBwYzogUmVtb3ZlIGJvYXJkLXNwZWNpZmljIGNvbW1hbmQgdGFibGUgcmVsb2NhdGlvbiBmaXh1cHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlNmIwNWU3NzRkN2NlMTY0MTYxM2NkZWZmYjY5YzFkNDgxMzlhODY5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjIwOjI5IDIwMDkgLTA1MDAKLQotICAgIHBwYzogUmVtb3ZlIGV4dGFibGUgcmVsb2NhdGlvbiBmaXh1cHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBiMzJhODk0MDExYjE0MzY3NTg5MDVmYTEwZTZhMDNiODUzOWM0M2M5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjIwOjI4IDIwMDkgLTA1MDAKLQotICAgIHBwYzogUmVtb3ZlIHBjaSBjb25maWcgdGFibGUgcG9pbnRlciByZWxvY2F0aW9uIGZpeHVwcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGEwZTIwNjZmMzkyNzgyNzMwZjAzOTgwOTVlNTgzYzg3ODEyZDk3ZjIKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MjcgMjAwOSAtMDUwMAotCi0gICAgcHBjOiBSZW1vdmUgYm9hcmQuYyByZWxvY2F0aW9uIGZpeHVwcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDI0NDYxNTE5NzQ2OWRkNmZlNzVhZTA4MmYzODQyNGI5N2M3OWFlYWYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMTE6MjA6MjYgMjAwOSAtMDUwMAotCi0gICAgcHBjOiBDaGVjayBmb3IgY29tcGlsZXJzIHRoYXQgZG9uJ3Qgc3VwcG9ydCByZWxvY2F0aW9uCi0KLSAgICBDZXJ0YWluIHBwYyBjb21waWxlcnMgYXJlIGtub3duIG5vdCB0byBnZW5lcmF0ZSB0aGUgLmZpeHVwIHNlY3Rpb24KLSAgICBwcm9wZXJseS4gIFRoZSAuZml4dXAgc2VjdGlvbiBpcyBuZWNlc3NhcnkgdG8gY3JlYXRlIGEgcmVsb2NhdGFibGUKLSAgICBVLUJvb3QgaW1hZ2UuICBBIGJhc2ljIGNoZWNrIGZvciB0aGUgZXhpc3RlbmNlIG9mIHRoZSAuZml4dXAgc2VjdGlvbgotICAgIHNob3VsZCBob3BlZnVsbHkgY2F0Y2ggdGhlIG1ham9yaXR5IG9mIGJyb2tlbiBjb21waWxlcnMgd2hpY2ggZG9uJ3QKLSAgICBzdXBwb3J0IHJlbG9jYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgODU4MjkwMTc4ZjIyMmQ5OThiNjQyNWQ4NWNmMDY4MjI0Njc5MThmMwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIFNlcCAyMSAxMToyMDoyNSAyMDA5IC0wNTAwCi0KLSAgICBwcGM6IEVuYWJsZSBmdWxsIHJlbG9jYXRpb24gdG8gUkFNCi0KLSAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgYWxsb3cgVS1Cb290IHRvIGZ1bGx5IHJlbG9jYXRlIGZyb20gZmxhc2ggdG8KLSAgICBSQU06Ci0gICAgIC0gUmVtb3ZlIGxpbmtlciBzY3JpcHRzJyAuZml4dXAgc2VjdGlvbnMgZnJvbSB0aGUgLnRleHQgc2VjdGlvbgotICAgICAtIEFkZCAtbXJlbG9jYXRhYmxlIHRvIFBMQVRGT1JNX1JFTEZMQUdTIGZvciBhbGwgYm9hcmRzCi0gICAgIC0gRGVmaW5lIENPTkZJR19SRUxPQ19GSVhVUF9XT1JLUyBmb3IgYWxsIGJvYXJkcwotCi0gICAgUHJldmlvdXNseSwgVS1Cb290IHdvdWxkIHBhcnRpYWxseSByZWxvY2F0ZSwgYnV0IHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQKLSAgICBwb2ludGVycyBuZWVkZWQgdG8gYmUgbWFudWFsbHkgcmVsb2NhdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDNiNGJkMmQ3NWM0YjNjMWE0NTcwZjQ3ZmZhYWVkNjZmNTZhNzhmZjQKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CVdlZCBTZXAgMzAgMTE6NTU6MDQgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgU0RSQU0gZGV0ZWN0aW9uIGZvciBQTUM0NDAgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCB0byBkZXRlY3QgdGhlIGFtb3VudCBvZiBERFIyIFNEUkFNCi0gICAgb24gUE1DNDQwIG1vZHVsZXMuIERldGVjdGlvbiBpcyBkb25lIGJ5IHByb2JpbmcgdGhyb3VnaAotICAgIGEgbGlzdCBvZiBhdmFpbGFibGUgYW5kIHN1cHBvcnRlZCBoYXJkd2FyZSBjb25maWd1cmF0aW9ucwotICAgIGZyb20gMUdCeXRlIGRvd24gdG8gMjU2TUIuCi0KLSAgICBUaGUgc3RhdGljIFRMQiBlbnRyeSBpcyByZXBsYWNlZCBieSBkeW5hbWljYWxseSBjcmVhdGVkIGVudHJpZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGZiOTUxNjllMzlmMmQwMzI3MGJlZDU1MmQyN2JiYjAyNjI3YTQ0M2UKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIFNlcCAyOCAxNzozMzo0NSAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IE1lcmdlIFBQQzR4eCBERFIgYW5kIEREUjIgRUNDIGhhbmRsaW5nCi0KLSAgICBUaGlzIHBhdGNoIG1lcmdlcyB0aGUgRUNDIGhhbmRsaW5nIChFQ0MgcGFyaXR5IGJ5dGUgd3JpdGluZykgaW50byBvbmUKLSAgICBmaWxlIChlY2MuYykgZm9yIGFsbCBQUEM0eHggU0RSQU0gY29udHJvbGxlcnMgZXhjZXB0IGZvciBQUEM0NDBFUHgvR1J4LgotICAgIFRoaXMgZXhjZXB0aW9uIGlzIGJlY2F1c2Ugb25seSB0aG9zZSBQUEMncyB1c2UgdGhlIGNvbXBsZXRlbHkgZGlmZmVyZW50Ci0gICAgRGVuYWxpIFNEUkFNIGNvbnRyb2xsZXIgY29yZS4KLQotICAgIFByZXZpb3VzbHkgd2UgaGFkIHR3byByb3V0aW5lcyB0byBnZW5lcmF0ZS93cml0ZSB0aGUgRUNDIHBhcml0eSBieXRlcy4KLSAgICBXaXRoIHRoaXMgcGF0Y2ggd2Ugbm93IG9ubHkgaGF2ZSBvbmUgY29yZSBmdW5jdGlvbiBsZWZ0LgotCi0gICAgVGVzdGVkIG9uIEtpbGF1ZWEgKG5vIEVDQykgYW5kIEthdG1haSAod2l0aCBhbmQgd2l0aG91dCBFQ0MpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLSAgICBDYzogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLSAgICBDYzogUGlldGVyIFZvb3J0aHVpanNlbiA8cHZAcHJvZHJpdmUubmw+Ci0KLWNvbW1pdCBkMjRiZDI1MTdhMmI4NDdmNzczNDUzZWFiMGVlNWIxYzhlYmM3NGJhCi1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJU3VuIFNlcCAyNyAyMzo1NjoxMiAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlb3JnYW5pemUgRERSMiBFQ0MgaGFuZGxpbmcKLQotICAgIFJlb3JnYW5pemUgRERSMiBFQ0MgaGFuZGxpbmcgdG8gdXNlIGNvbW1vbiBjb2RlIGZvcgotICAgIFNQRCBESU1NcyBhbmQgc29sZGVyZWQgU0RSQU0uIEFsc28sIHVzZSBjb21tb24gY29kZQotICAgIHRvIGRpc3BsYXkgU0RSQU0gaW5mbyAoRUNDLCBDQVMgbGF0ZW5jeSkgZm9yIFNQRCBhbmQKLSAgICBzb2xkZXJlZCBTRFJBTSB2YXJpYW50cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQ2YTg4Nzk0OWUxMWQyY2RkYjkxZTE3Y2E0N2U3MzM0MWQ3MWEzNzkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIFNlcCAzMCAwMzowOToxNiAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdXBkYXRlIGRlZmF1bHQgY29uc29sZT0gc2V0dGluZ3MKLQotICAgIFRoZSBMaW51eCBrZXJuZWwgaGFzIGNoYW5nZWQgdGhlIHdheSBpdCBudW1iZXJzIHNlcmlhbCBwb3J0cywgc28gdXBkYXRlCi0gICAgdGhlIGRlZmF1bHQgY29tbWFuZCBsaW5lIHRvIG1hdGNoIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNGM1ZjMwN2Q1ODYwNGRlYTAwMWNjY2YzODhhYTA3N2E5MDJhYjBhNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gU2VwIDIxIDE4OjA0OjQ5IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZjUzMy1lemtpdDogdXBkYXRlIGVudiBsb2NhdGlvbgotCi0gICAgVGhlIHUtYm9vdCBpbWFnZSBoYXMgb3V0Z3Jvd24gdGhlIGN1cnJlbnQgc3BhY2UgYW5kIG92ZXJmbG93ZWQgaW50byB0aGUKLSAgICBlbnYgc2VjdG9yLiAgU28gbW92ZSB0aGUgZW52IHRvIHRoZSBuZXh0IGF2YWlsYWJsZSBzZWN0b3IgKHdlJ3ZlIGFscmVhZHkKLSAgICBhbGxvY2F0ZWQgdGhlIGZpcnN0IGZldyBzZWN0b3JzIGFueXdheXMgZm9yIHUtYm9vdCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyNGIxN2Q4YTNjM2E0YjljZWFmNjM2M2ViZTAwMjEwMTFiMGI4YmQ4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgU2VwIDMwIDA4OjM5OjQ0IDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBnZXRfbGF3X2VudHJ5IGlzbid0IHVzZWQgaW4gQ09ORklHX05BTkRfU1BMCi0KLSAgICBEb24ndCBpbmNsdWRlIGdldF9sYXdfZW50cnkgYXMgcGFydCBvZiB0aGUgTkFORF9TUEwgYnVpbGQgc2luY2UgdGhlCi0gICAgY29kZSBpc250IHVzZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNjkzYTA0OGQ4YWMxOTExODFmNWI5YWRiZmY2NDJkM2YxYmJkNDc5ZgotQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgU2VwIDIzIDE1OjIwOjM5IDIwMDkgKzA4MDAKLQotICAgIEFkZCBSRUFETUUubXBjODUzNmRzCi0KLSAgICBBZGQgYm9vdCBmcm9tIE5BTkQvZVNESEMvZVNQSSBkZXNjcmlwdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlNDBhYzQ4NzBjNmU3MjMwMjA0NGU5ODMzODMyMmY0NWMzNDQzNWJkCi1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBTZXAgMjMgMTU6MjA6MzggMjAwOSArMDgwMAotCi0gICAgT24tY2hpcCBST00gYm9vdDogTVBDODUzNkRTIHN1cHBvcnQKLQotICAgIFRoZSBNUEM4NTM2RSBpcyBjYXBhYmxlIG9mIGJvb3RpbmcgZnJvbSB0aGUgb24tY2hpcCBST00gLSBib290IGZyb20KLSAgICBlU0RIQyBhbmQgYm9vdCBmcm9tIGVTUEkuIFdoZW4gcG93ZXIgb24sIHRoZSBwb3JjZXNzb3IgZXhjdXRlcyB0aGUKLSAgICBST00gY29kZSB0byBpbml0aWFsaXplIHRoZSBlU1BJL2VTREhDIGNvbnRyb2xsZXIsIGFuZCBsb2FkcyB0aGUgbWlhbgotICAgIFUtQm9vdCBpbWFnZSBmcm9tIHRoZSBtZW1vcnkgZGV2aWNlIHRoYXQgaW50ZXJmYWNlZCB0byB0aGUgY29udHJvbGxlciwKLSAgICBzdWNoIGFzIHRoZSBTRENhcmQgb3IgU1BJIEVFUFJPTSwgdG8gdGhlIHRhcmdldCBtZW1vcnksIGUuZy4gU0RSQU0gb3IKLSAgICBMMlNSQU0sIHRoZW4gYm9vdCBmcm9tIGl0LgotCi0gICAgVGhlIG1lbW9yeSBkZXZpY2Ugc2hvdWxkIGNvbnRhaW4gYSBzcGVjaWZpYyBkYXRhIHN0cnVjdHVyZSB3aXRoIGNvbnRyb2wKLSAgICB3b3JkIGFuZCBjb25maWcgd29yZCBhdCB0aGUgZml4ZWQgYWRkcmVzcy4gVGhlIGNvbmZpZyB3b3JkIGRpcmVjdCB0aGUKLSAgICBwcm9jZXNzIGhvdyB0byBjb25maWcgdGhlIG1lbW9yeSBkZXZpY2UsIGFuZCB0aGUgY29udHJvbCB3b3JkIGRpcmVjdAotICAgIHRoZSBwcm9jZXNzb3Igd2hlcmUgdG8gZmluZCB0aGUgaW1hZ2Ugb24gdGhlIG1lbW9yeSBkZXZpY2UsIG9yIHdoZXJlCi0gICAgY29weSB0aGUgbWFpbiBpbWFnZSB0by4gVGhlIHVzZXIgY2FuIHVzZSBhbnkgbWV0aG9kIHRvIHN0b3JlIHRoZSBkYXRhCi0gICAgc3RydWN0dXJlIHRvIHRoZSBtZW1vcnkgZGV2aWNlLCBvbmx5IGlmIHN0b3JlIGl0IG9uIHRoZSBhc3NpZ25lZCBhZGRyZXNzLgotCi0gICAgVGhlIG9uLWNoaXAgUk9NIGNvZGUgd2lsbCBtYXAgdGhlIHdob2xlIDRHQiBhZGRyZXNzIHNwYWNlIGJ5IHNldHRpbmcKLSAgICBlbnRyeTAgaW4gdGhlIFRMQjEsIHNvIHRoZSBtYWluIGltYWdlIG5lZWQgdG8gc3dpdGNoIHRvIEFkZHJlc3Mgc3BhY2UgMQotICAgIHRvIGRpc2FibGUgdGhpcyBtYXBwaW5nIGFuZCBtYXAgdGhlIGFkZHJlc3Mgc3BhY2UgYWdhaW4uCi0KLSAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgbG9hZGluZyB0aGUgbWlhbiBVLUJvb3QgaW1hZ2UgaW50byBMMlNSQU0sIHNvCi0gICAgdGhlIGltYWdlIGNhbiBjb25maWd1cmUgdGhlIHN5c3RlbSBtZW1vcnkgYnkgdXNpbmcgU1BEIEVFUFJPTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOWExYTBhZWRiYmQ1NmY5MDFiZmJjMTI0ZjE4ZWM2ZDlkY2VmZTI4MgotQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgU2VwIDIzIDE1OjIwOjM3IDIwMDkgKzA4MDAKLQotICAgIE5BTkQgYm9vdDogTVBDODUzNkRTIHN1cHBvcnQKLQotICAgIE1QQzg1MzZFIGNhbiBzdXBwb3J0IGJvb3RpbmcgZnJvbSBOQU5EIGZsYXNoIHdoaWNoIHVzZXMgdGhlCi0gICAgaW1hZ2UgdS1ib290LW5hbmQuYmluLiBUaGlzIGltYWdlIGNvbnRhaW5zIHR3byBwYXJ0czogYSA0SwotICAgIE5BTkQgbG9hZGVyIGFuZCBhIG1haW4gVS1Cb290IGltYWdlLiBUaGUgZm9ybWVyIGlzIGFwcGVuZGVkCi0gICAgdG8gdGhlIGxhdHRlciB0byBwcm9kdWNlIHUtYm9vdC1uYW5kLmJpbi4gVGhlIDRLIE5BTkQgbG9hZGVyCi0gICAgaW5jbHVkZXMgdGhlIGNvcnJlc3BvbmRpbmcgbmFuZF9zcGwgZGlyZWN0b3J5LCBhbG9uZyB3aXRoIHRoZQotICAgIGNvZGUgdHdpc3RlZCBieSBDT05GSUdfTkFORF9TUEwuIFRoZSBtYWluIFUtQm9vdCBpbWFnZSBqdXN0Ci0gICAgbGlrZSBhIGdlbmVyYWwgVS1Cb290IGltYWdlIGV4Y2VwdCB0aGUgcGFydHMgdGhhdCBpbmNsdWRlZCBieQotICAgIENPTkZJR19TWVNfUkFNQk9PVC4KLQotICAgIFdoZW4gcG93ZXIgb24sIGVMQkMgd2lsbCBhdXRvbWF0aWNhbGx5IGxvYWQgZnJvbSBiYW5rIDAgdGhlCi0gICAgNEsgTkFORCBsb2FkZXIgaW50byB0aGUgRkNNIGJ1ZmZlciBSQU0gd2hlcmUgQ1BVIGNhbiBleGVjdXRlCi0gICAgdGhlIGJvb3QgY29kZSBkaXJlY3RseS4gSW4gdGhlIGZpcnN0IHN0YWdlLCB0aGUgTkFORCBsb2FkZXIKLSAgICBjb3BpZXMgaXRzZWxmIHRvIFJBTSBvciBMMlNSQU0gdG8gZnJlZSB1cCB0aGUgRkNNIGJ1ZmZlciBSQU0sCi0gICAgdGhlbiBsb2FkcyB0aGUgbWFpbiBpbWFnZSBmcm9tIE5BTkQgZmxhc2ggdG8gUkFNIG9yIEwyU1JBTQotICAgIGFuZCBib290IGZyb20gaXQuCi0KLSAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIE5BTkQgbG9hZGVyIHRvIGxvYWQgdGhlIG1haW4gaW1hZ2UKLSAgICBpbnRvIEwyU1JBTSwgc28gdGhlIG1haW4gaW1hZ2UgY2FuIGNvbmZpZ3VyZSB0aGUgUkFNIGJ5IHVzaW5nCi0gICAgU1BEIEVFUFJPTS4gSW4gdGhlIGZpcnN0IHN0YWdlLCB0aGUgTkFORCBsb2FkZXIgY29waWVzIGl0c2VsZgotICAgIHRvIHRoZSBzZWNvbmQgdG8gbGFzdCA0SyBhZGRyZXNzIHNwYWNlLCBhbmQgdXNlcyB0aGUgbGFzdCA0SwotICAgIGFkZHJlc3Mgc3BhY2UgYXMgdGhlIGluaXRpYWwgUkFNIGZvciBzdGFjay4KLQotICAgIE9idmlvdXNseSwgdGhlIHNpemUgb2YgTDJTUkFNIHNob3VsZG4ndCBiZSBsZXNzIHRoYW4gdGhlIHNpemUKLSAgICBvZiB0aGUgaW1hZ2UgdXNlZC4gSWYgc28sIHRoZSB3b3JrYXJvdW5kIGlzIHRvIGdlbmVyYXRlIGFub3RoZXIKLSAgICBpbWFnZSB0aGF0IGluY2x1ZGVzIHRoZSBjb2RlIHRvIGNvbmZpZ3VyZSB0aGUgUkFNIGJ5IFNQRCBhbmQKLSAgICBsb2FkIGl0IHRvIEwyU1JBTSBmaXJzdCwgdGhlbiByZWxvY2F0ZSB0aGUgbWFpbiBpbWFnZSB0byBSQU0KLSAgICB0byBib290IHVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwNzM1NTcwMDUyMzIwM2M1ZjcyMDE4NzEyY2YwZDkzNjgzZjI1NWM4Ci1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBTZXAgMjMgMTU6MTk6MzIgMjAwOSArMDgwMAotCi0gICAgbXBjODUzNjogZml4IGJvYXJkIGNvbmZpZyBmaWxlIGxpbmUgbGVuZ3RoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGRkOWNhOThmMjYwMDAwMGU1YzI3NDQ3MzUwNDAxMDBiNzcwNjUwZTcKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgU2VwIDI1IDExOjE0OjExIDIwMDkgLTA0MDAKLQotICAgIHNiYzg1NDg6IHJlY2xhaW0gd2FzdGVkIHNlY3RvciBpbiBib290IGZsYXNoCi0KLSAgICBCeSBuYXR1cmUgb2YgYmVpbmcgYmFzZWQgb2ZmIHRoZSBNUEM4NTQ4Q0RTIGJvYXJkLCB0aGlzCi0gICAgYm9hcmQgaW5oZXJpdGVkIGFuIEVOVl9TSVpFIHNldHRpbmcgb2YgMjU2ay4gIEJ1dCBzaW5jZQotICAgIGl0IGhhcyBhIHNtYWxsZXIgZmxhc2ggZGV2aWNlICg4TUIgc29sZGVyZWQgb24pLCBpdCBoYXMKLSAgICBhIG5hdGl2ZSBzZWN0b3Igc2l6ZSBvZiAxMjhrLCBhbmQgaGVuY2UgdGhlIEVOVl9TSVpFIHdhcwotICAgIGNhdXNpbmcgMiBzZWN0b3JzIHRvIGJlIHVzZWQgZm9yIHRoZSBlbnZpcm9ubWVudC4KLQotICAgIEJ5IHJlbW92aW5nIHRoZSB1bnVzZWQgc2VjdG9yLCB3ZSBjYW4gcHVzaCBURVhUX0JBU0UgdXAKLSAgICBjbG9zZXIgdG8gdGhlIGVuZCBvZiBhZGRyZXNzIHNwYWNlIGFuZCByZWNsYWltIHRoYXQKLSAgICBzZWN0b3IgZm9yIGFueSBvdGhlciBhcHBsaWNhdGlvbi4gIFRoaXMgYWxzbyBmaXhlcyB0aGUKLSAgICBtaXNtYXRjaCBiZXR3ZWVuIFRFWFRfQkFTRSBhbmQgTU9OSVRPUl9MRU4gcmVwb3J0ZWQgYnkKLSAgICBLdW1hciBlYXJsaWVyLgotCi0gICAgU2luY2UgdGhpcyBib2FyZCBhbHNvIHN1cHBvcnRzIHRoZSBhYmlsaXR5IHRvIGJvb3Qgb2ZmCi0gICAgdGhlIDY0TUIgU09ESU1NIGZsYXNoLCB0aGlzIGNoYW5nZSBpcyBmb3J3YXJkIGxvb2tpbmcKLSAgICB3aXRoIHRoYXQgaW4gbWluZDsgaS5lLiB0aGUgc2V0dGluZ3MgZm9yIE1PTklUT1JfTEVOCi0gICAgYW5kIEVOVl9TSVpFIHdpbGwgd29yayB3aGVuIHRoZSA1MTJrIHNlY3RvcnMgb2YgdGhlCi0gICAgU09ESU1NIGZsYXNoIGFyZSB1c2VkIGZvciBhbHRlcm5hdGUgYm9vdCBpbiB0aGUgZnV0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgyODA5MTJlMDY1N2U5NmE3YjdkOGRhNzAwMzY1NmQ2MmIwZmQxMDkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBTZXAgMjggMjE6Mzg6MDAgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IENsZWFuIHVwIGltbWFwXzg1eHguaAotCi0gICAgKiBDb252ZXJ0ZWQgYWxsIHdoaXRlIHNwYWNlIHRvIHRhYnMKLSAgICAqIENvbnZlcnRlZCBhbGwgdHlwZXMgdG8gdTgvdTE2L3UzMgotICAgICogUmVkdWNlIGxpbmVzIHRvIGZpdCBpbiA4MCBjb2x1bW5zCi0gICAgKiBSZW5hbWVkIE1QQzg1eHhfe1EsQn1NQU4gLT4gRlNMX0NPUkVORVRfe1EsQn1NQU4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkNDRlOWMxNzM2MjgzZjBhYmM1ZDNjNWQyOGNmZWE4NDgwYzkzYTc5Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIFNlcCAyOCAxNjozMzoxOCAyMDA5IC0wNTAwCi0KLSAgICBOQU5EOiBkYXZpbmNpOiBGaXggd2FybmluZ3Mgd2hlbiA0LWJpdCBFQ0Mgbm90IHVzZWQKLQotICAgIEkgYWNjaWRlbnRhbGx5IGxlZnQgdjIgb2YgIk5BTkQ6IERhVmluY2k6QWRkaW5nIDQgQklUIEVDQyBzdXBwb3J0IgotICAgIGFwcGxpZWQgd2hlbiBJIHB1c2hlZCB0aGUgdHJlZSBsYXN0IG1lcmdlIHdpbmRvdywgYW5kIG1pc3NlZCB0aGVzZSBmaXhlcwotICAgIHdoaWNoIHdlcmUgaW4gdjMgb2YgdGhhdCBwYXRjaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNhNjE4OWRiNDg0ODgyNzk4ZjJhMzVhNDc2YzA3ZTYxOGUyMWY2ZDMKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+Ci1EYXRlOglUdWUgU2VwIDIyIDA5OjA1OjAwIDIwMDkgKzA5MDAKLQotICAgIFJlZmFjdG9yIE9uZU5BTkQgSVBMIGNvZGUKLQotICAgIFJlZmFjdG9yaW5nIHRoZSBPbmVOQU5EIElQTCBjb2RlCi0KLSAgICBhbmQgc29tZSBtaW5vciBmaXhlZDoKLSAgICAtIFJlbW92ZSB1bm5lY2Vzc2FyeSBoZWFkZXIgZmlsZQotICAgIC0gRml4IHdyb25nIGFjY2VzcyBhdCByZWFkIGludGVycnVwdAotICAgIC0gVGhlIHJlY2VudCBPbmVOQU5EIGhhcyA0S2lCIHBhZ2VzaXplCi0KLSAgICBBbHNvIEJvYXJkIGNhbiBvdmVycmlkZSBPbmVOQU5EIElQTCBpbWFnZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGEwNWUzZjlhMDg0ZmM4OTUxZDg3NzQ1YjNhOTFkZjI0NjQzMmRmN2QKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Ci1EYXRlOglTYXQgU2VwIDEyIDE4OjAxOjQwIDIwMDkgKzA5MDAKLQotICAgIE1JUFM6IFZDVDogUmVtb3ZlIHJlYWRfc3BhcmVyYW0gcmVmZXJlbmNlCi0KLSAgICBUaGUgY29tbWl0IGVjYWQyODlmYzZiZDlkODllZjRkNTA5M2NjN2I2ZmQ3MTJmZDBkMjkgKE9uZU5BTkQ6IFJlbW92ZQotICAgIHVudXNlZCByZWFkX3NwYXJlcmFtIGFuZCBhZGQgdW5sb2NrX2FsbCBhcyBrZXJuZWwgZG9lcykgZm9yZ290IHRvIHJlbW92ZQotICAgIGEgbG9jYWwgcmVmZXJlbmNlIHRvIHJlYWRfc3BhcmVyYW0gaW4gYm9hcmQvbWljcm9uYXMvdmN0L2ViaV9vbmVuYW5kLmMsCi0gICAgd2hpY2ggY2F1c2VzIHRoZSBmb2xsb3dpbmcgYnVpbGQgZmFpbHVyZSB3aGVuIGNvbmZpZ3VyZWQgd2l0aCBPbmVOQU5EOgotCi0gICAgZWJpX29uZW5hbmQuYzogSW4gZnVuY3Rpb24gJ29uZW5hbmRfYm9hcmRfaW5pdCc6Ci0gICAgZWJpX29uZW5hbmQuYzoxOTY6IGVycm9yOiAnc3RydWN0IG9uZW5hbmRfY2hpcCcgaGFzIG5vIG1lbWJlciBuYW1lZCAncmVhZF9zcGFyZXJhbScKLSAgICBtYWtlWzFdOiAqKiogW2ViaV9vbmVuYW5kLm9dIEVycm9yIDEKLSAgICBtYWtlWzFdOiAqKiogV2FpdGluZyBmb3IgdW5maW5pc2hlZCBqb2JzLi4uLgotICAgIG1ha2U6ICoqKiBbYm9hcmQvbWljcm9uYXMvdmN0L2xpYnZjdC5hXSBFcnJvciAyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZWYzN2M2ODM1ZWFjNjYyMDZhOWM3YzExZjBjNzE4NmY1ZDY0YmY5MQotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglGcmkgU2VwIDI1IDE0OjA1OjU3IDIwMDkgKzAyMDAKLQotICAgIHViaWZzOiBDb3JyZWN0IGRlcmVmZXJlbmNpbmcgb2YgZmlsZXMtYWZ0ZXItc3ltbGlua3MKLQotICAgIEZpbGVzIGluIGRpcmVjdG9yaWVzIHdoaWNoIGFyZSBzeW1saW5rZWQgdG8gd2VyZSBub3QgZGVyZWZlcmVuY2VkCi0gICAgY29ycmVjdGx5IGluIGxhc3QgY29tbWl0LiBFLmcuLCB3aXRoIGEgc3ltbGluawotCi0gICAgICAgL2Jvb3QvbG5rIC0+IC9ib290L3JlYWxfZGlyCi0KLSAgICBsb2FkaW5nCi0KLSAgICAgICAvYm9vdC9sbmsvdUltYWdlCi0KLSAgICB3aWxsIGZhaWwuIFRoaXMgcGF0Y2ggZml4ZXMgdGhhdCBieSBzaW1wbHkgc2VlaW5nIHRvIGl0IHRoYXQgdGhlIHRhcmdldAotICAgIGJhc2UgZGlyZWN0b3J5IGhhcyBhIHNsYXNoIGFmdGVyIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGIzMDZkYjJmMWJmNTYxYjU4MjNhNjU1YzY3N2ZlMjhjZmFkODBjZmIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IFNlcCAyNCAxNDoxMDozMCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSBtdHNkcmFtMCgpIG1hcmNvcyBhbmQgdXNlIGNvbW1vbiBtdHNkcmFtKCkgaW5zdGVhZAotCi0gICAgQWRkaXRpb25hbGx5IHNvbWUgd2hpdGVzcGFjZSBjb2Rpbmcgc3R5bGUgZml4ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5NWI2MDJiYWI1ZmVjMmZmZmFiMDdhMDFlYTM5NDdjNzBkMWJhY2MxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBTZXAgMjQgMTM6NTk6NTcgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBDb252ZXJ0IFBQQzR4eCBTRFJBTSBkZWZpbmVzIGZyb20gbG93ZXIgY2FzZSB0byB1cHBlciBjYXNlCi0KLSAgICBUaGUgbGF0ZXN0IFBQQzR4eCByZWdpc3RlciBjbGVhbnVwIHBhdGNoIG1pc3NlZCBzb21lIFNEUkFNIGRlZmluZXMuCi0gICAgVGhpcyBwYXRjaCBub3cgY2hhbmdlcyBsb3dlciBjYXNlIFVJQyBkZWZpbmVzIHRvIHVwcGVyIGNhc2UuIEFsc28KLSAgICBzb21lIG5hbWVzIGFyZSBjaGFuZ2VkIHRvIG1hdGNoIHRoZSBuYW1pbmcgaW4gdGhlIElCTS9BTUNDIHVzZXJzCi0gICAgbWFudWFscyAoZS5nLiBtZW1fbWNvcHQxIC0+IFNEUkFNMF9DRkcpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTUyZTc3NjBiZmM1YjBlM2IxNDJiOWNlMzRlN2ZiYjdkMDA4YzkwMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgU2VwIDI0IDA5OjU1OjUwIDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQ29udmVydCBQUEM0eHggVUlDIGRlZmluZXMgZnJvbSBsb3dlciBjYXNlIHRvIHVwcGVyIGNhc2UKLQotICAgIFRoZSBsYXRlc3QgUFBDNHh4IHJlZ2lzdGVyIGNsZWFudXAgcGF0Y2ggbWlzc2VkIHRoZSBVSUMgZGVmaW5lcy4KLSAgICBUaGlzIHBhdGNoIG5vdyBjaGFuZ2VzIGxvd2VyIGNhc2UgVUlDIGRlZmluZXMgdG8gdXBwZXIgY2FzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGQxYzllNWIzNzkwMWI1M2ZmYzFjZTNmMDhlYzhlZDYxYmZkNTU3YjYKLUF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci1EYXRlOglUdWUgU2VwIDIyIDEzOjQwOjQ0IDIwMDkgKzAyMDAKLQotICAgIGZzbF9pMmM6IERvIG5vdCBnZW5lcmF0ZSBTVE9QIGFmdGVyIHJlYWQuCi0KLSAgICBfX2kyY19yZWFkIGFsd2F5cyBlbmRzIHdpdGggYSBTVE9QIGNvbmRpdGlvbiB0aGVyZWJ5IHJlbGVhc2luZwotICAgIHRoZSBidXMuIEl0IGlzIGNsZWFuZXIgdG8gZG8gdGhlIFNUT1AgbWFnaWMgaW4gaTJjX3JlYWQoKSwgbGlrZQotICAgIGkyY193cml0ZSgpIGRvZXMuIFRoaXMgbWF5IGFsc28gaGVscCBmdXR1cmUgbXVsdGltYXN0ZXIgc3lzdGVtcyB3aGljaAotICAgIHdhbnRzIHRvIGhvbGQgb24gdG8gdGhlIGJ1cyB1bnRpbCBhbGwgdHJhbnNhY3Rpb25zIGFyZSBmaW5pc2hlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgOTk0MDQyMDIxMjczNDZiOWU5MTUwM2JiZDY5ZGVhZmExOGM5ODBjNAotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVRodSBTZXAgMTcgMTE6MDc6MTcgMjAwOSArMDIwMAotCi0gICAgZnNsX2kyYzogSW1wbC4gQU4yOTE5LCByZXYgNSB0byBjYWxjdWxhdGUgRkRSL0RGU1IKLQotICAgIFRoZSBsYXRlc3QgQU4yOTE5IGhhcyBjaGFuZ2VkIHRoZSB3YXkgRkRSL0RGU1Igc2hvdWxkIGJlIGNhbGN1bGF0ZWQuCi0gICAgVXBkYXRlIHRoZSBkcml2ZXIgYWNjb3JkaW5nIHRvIHNwZWMuIEhvd2V2ZXIsIENvbmRpdGlvbiAyCi0gICAgaXMgbm90IGFjY291bnRlZCBmb3IgYXMgaXQgaXMgbm90IGNsZWFyIGhvdyB0byBkbyBzby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLQotY29tbWl0IGQwMWVlNGRiOTMwMmNmY2NhYTVjNTQ4YTFjNGU4NzNiNDE1NjgxYTAKLUF1dGhvcjogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci1EYXRlOglUaHUgU2VwIDE3IDExOjA3OjE2IDIwMDkgKzAyMDAKLQotICAgIGZzbF9pMmM6IEFkZCBDT05GSUdfRlNMX0kyQ19DVVNUT01fe0RGU1IvRkRSfQotCi0gICAgU29tZSBib2FyZHMgbmVlZCBhIGhpZ2hlciBERlNSIHZhbHVlIHRoYW4gdGhlIHNwZWMgY3VycmVudGx5Ci0gICAgcmVjb21tZW5kcyBzbyBnaXZlIHRoZXNlIGJvYXJkcyB0aGUgbWVhbnMgdG8gZGVmaW5lIHRoZXJlIG93bi4KLQotICAgIEZvciBjb21wbGV0ZW5lc3MsIGFkZCBDT05GSUdfRlNMX0kyQ19DVVNUT01fRkRSIHRvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgMjFmNGNiYjc3Mjk5Nzg4ZTJiMDZjOWIwZjQ4Y2YyMGE1YWIwMGQ0YQotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVRodSBTZXAgMTcgMTE6MDc6MTUgMjAwOSArMDIwMAotCi0gICAgZnNsX2kyYzogV2FpdCBmb3IgU1RPUCBjb25kaXRpb24gdG8gcHJvcGFnYXRlCi0KLSAgICBBZnRlciBpc3N1aW5nIGEgU1RPUCBvbmUgbXVzdCB3YWl0IHVudGlsIHRoZSBTVE9QIGhhcyBjb21wbGV0ZWQKLSAgICBvbiB0aGUgYnVzIGJlZm9yZSBkb2luZyBzb21ldGhpbmcgbmV3IHRvIHRoZSBjb250cm9sbGVyLgotCi0gICAgQWxzbyBhZGQgYW4gZXh0cmEgcmVhZCBvZiBTUiBhcyB0aGUgbWFudWFsIG1lbnRpb25zIGRvaW5nIHRoYXQKLSAgICBpcyBhIGdvb2QgaWRlYS4KLQotICAgIFJlbW92ZSBzdXJwbHVzIHdyaXRlIG9mIENSIGp1c3QgYmVmb3JlIGEgd3JpdGUsIGlzbid0IHJlcXVpcmVkIGFuZAotICAgIGNvdWxkIHBvdGVudGlhbGx5IGRpc3R1cmIgdGhlIEkyQyBidXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLQotY29tbWl0IGM3MTkwZjAyOGZhOTUwZDRkMzZiNmQwYjRiYjNmYzcyNjAyZWM1NGMKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBTZXAgMjUgMTg6MTk6NDQgMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogcmV0YWluIFBPUiB2YWx1ZXMgb2Ygbm9uLWNvbmZpZ3VyZWQgQUNSLCBTUENSLCBTQ0NSLCBhbmQgTENSUiBiaXRmaWVsZHMKLQotICAgIHNvbWUgTENSUiBiaXRzIGFyZSBub3QgZG9jdW1lbnRlZCB0aHJvdWdob3V0IHRoZSA4M3h4IGZhbWlseSBSTXMuCi0gICAgTmV3IGJvYXJkIHBvcnRlcnMgY29weWluZyBzaW1pbGFyIGJvYXJkIGNvbmZpZ3VyYXRpb25zIG1pZ2h0IG9taXQKLSAgICBzZXR0aW5nIGUuZy4sIERCWVAgc2luY2UgaXQgd2FzIG5vdCBkb2N1bWVudGVkIGluIHRoZWlyIFNvQydzIFJNLgotCi0gICAgUHJldmVudCB0aGVtIGJyaWNraW5nIHRoZWlyIGJvYXJkIGJ5IHJldGFpbmluZyBwb3dlciBvbiByZXNldCB2YWx1ZXMKLSAgICBpbiBiaXQgZmllbGRzIHRoYXQgdGhlIGJvYXJkIHBvcnRlciBkb2Vzbid0IGV4cGxpY2l0bHkgY29uZmlndXJlCi0gICAgdmlhIENPTkZJR19TWVNfPHJlZ2lzdGVybmFtZT5fPGJpdGZpZWxkPiBhc3NpZ25tZW50cyBpbiB0aGUgYm9hcmQKLSAgICBjb25maWcgZmlsZS4KLQotICAgIGFsc28gbW92ZSBMQ1JSIGFzc2lnbm1lbnQgdG8gY3B1X2luaXRfclthbV0gdG8gaGVscCBlbnN1cmUgbm8KLSAgICB0cmFuc2FjdGlvbnMgYXJlIGJlaW5nIGV4ZWN1dGVkIHZpYSB0aGUgbG9jYWwgYnVzIHdoaWxlIENMS0RJViBpcyBiZWluZwotICAgIG1vZGlmaWVkLgotCi0gICAgYWxzbyBzdGFydCB0byB1c2UgaS9vIGFjY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwMGVjMGZmNTQ5YjhjYjZmYjZkNDBlMjc1YWViNWE0NjA2NDJhM2JkCi1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJTW9uIFNlcCAyMSAxNzo0NDo1MSAyMDA5IC0wNDAwCi0KLSAgICBzYmM4MzQ5OiB0aWR5IHVwIE1ha2VmaWxlIHRvIHVzZSBuZXcgY29uZmlndXJhdGlvbiBzY3JpcHQuCi0KLSAgICBDb21taXQgODA0ZDgzYTUgYWxsb3dzIHVzIHRvIG1vdmUgYWxsIHRoZSBjb25maWd1cmF0aW9uCi0gICAgdmFyaWF0aW9uIHR3ZWFrcyBvdXQgb2YgdGhlIHRvcCBsZXZlbCBNYWtlZmlsZSBhbmQgZG93bgotICAgIGludG8gdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIuICBUaGlzIHRha2VzIGFkdmFudGFnZSBvZgotICAgIHRoYXQgZm9yIHRoZSBzYmM4MzQ5IGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRhNmVlYTBmNDhjMjRhMzE4ZTZkZTY5ZDZiY2EwYmI1YWI3MDU3MmIKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgU2VwIDE2IDIzOjIyOjA4IDIwMDkgKzA0MDAKLQotICAgIG1wYzgzeHg6IG1wYzgzNjBlbWRzOiBBZGQgUUUgVVNCIGRldmljZSB0cmVlIGZpeHVwcwotCi0gICAgV2l0aCB0aGlzIHBhdGNoIHdlIGNhbiBjaGFuZ2UgUUUgVVNCIG1vZGUgd2l0aG91dCBuZWVkIHRvIGhhbmQtZWRpdAotICAgIHRoZSBkZXZpY2UgdHJlZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4OWRhNDRjZTNmZTE2MzgzMTJkNzFjYjNhZGQ4YzZhNmQyYzdjMWYzCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJV2VkIFNlcCAxNiAyMzoyMTo1OSAyMDA5ICswNDAwCi0KLSAgICBtcGM4M3h4OiBtcGM4MzYwZW1kczogVXNlIFJHTUlJLUlEIG1vZGUsIGFkZCB3b3JrYXJvdW5kcyBmb3IgcmV2LiAyLjEgQ1BVcwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB2YXJpb3VzIGV0aGVybmV0IGlzc3VlcyB3aXRoIGdpZ2FiaXQgbGlua3MgaGFuZGxpbmcKLSAgICBpbiBVLUJvb3QuIFRoZSB3b3JrYXJvdW5kcyBvcmlnaW5hbGx5IGltcGxlbWVudGVkIGJ5IEtpbSBQaGlsbGlwcyBmb3IKLSAgICBMaW51eCBrZXJuZWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDM0NDc3YmIzMTk0OGQ2OThkMThiODRiYzA4MzRjM2UyNWExNGQwNAotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBTZXAgMTYgMjM6MjE6NTcgMjAwOSArMDQwMAotCi0gICAgbXBjODN4eDogbXBjODM2MGVtZHM6IERvbid0IHVzZSBMQkMgU0RSQU0gd2hlbiBERFIgaXMgYXZhaWxhYmxlCi0KLSAgICBTaW5jZSBjb21taXQgNWMyZmYzMjNhOTRlMjdlNDgxZjcwYzQ0ODM4ZDQzZmNkODQ0ZGQ0NiAoIm1wYzgzNjBlbWRzOgotICAgIHJld29yayBMQkMgU0RSQU0gc2V0dXAiKSwgTEJDIFNEUkFNIGlzIGF2YWlsYWJsZSBmb3IgdXNlIGluIExpbnV4LgotCi0gICAgVGhvdWdoLCBpdCBhcHBlYXJzIHRoYXQgUUUgRXRoZXJuZXQgaW4gR2lnYWJpdCBtb2RlIGNhbid0IHRyYW5zbWl0Ci0gICAgbGFyZ2UgcGFja2V0cyB3aGVuIGl0IHRyaWVzIHRvIHdvcmsgd2l0aCBhIGRhdGEgaW4gTEJDIFNEUkFNIChtZW10ZXN0Ci0gICAgZGlkbid0IGRpc2NvdmVyIGFueSBpc3N1ZXMsIGlzIExCQyBTRFJBTSBqdXN0IHRvbyBzbG93PykuCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggd2UgY2FuIHN0aWxsIHVzZSB0aGUgYm9hcmQgd2l0aG91dCBERFIgbWVtb3J5LCBidXQKLSAgICBpZiBERFIgaXMgYXZhaWxhYmxlLCB3ZSBkb24ndCB1c2UgTEJDIFNEUkFNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ3N2M3NzliYzIzNTk2YWEzNjkzZDFjNWM0ZDViNmUxMDcyZjkzZjIKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgU2VwIDE2IDIzOjIxOjU1IDIwMDkgKzA0MDAKLQotICAgIG5ldDogdWVjOiBGaXggdWNjZi5oIGFuZCB1ZWMuaCBoZWFkZXJzIHRvIGluY2x1ZGUgaGVhZGVycyB0aGV5IGRlcGVuZCBvbgotCi0gICAgSGVhZGVycyBzaG91bGQgaW5jbHVkZSBoZWFkZXJzIGNvbnRhaW5pbmcgcHJvdG90eXBlcyBhbmQgZGVmaW5lcyB0aGV5Ci0gICAgZGVwZW5kIG9uLCBkb24ndCBhc3N1bWUgdGhhdCB0aGV5J3JlIGluY2x1ZGVkIGJ5IHNvbWVib2R5IGVsc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjE4NWY4MGMzMTFjYzNiZGVmMmY4ZDUwOTZjNjFlNDBjYTZmNDhiMgotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBTZXAgMTYgMjM6MjE6NTMgMjAwOSArMDQwMAotCi0gICAgbmV0OiB1ZWNfcGh5OiBJbXBsZW1lbnQgVFhJRCBhbmQgUlhJRCBSR01JSSBtb2RlcyBmb3IgTWFydmVsbCBQSFlzCi0KLSAgICBUaGlzIHdpbGwgYmUgbmVlZGVkIGZvciBNUEM4MzYwRS1NRFMgYm9hcmRzIHdpdGggcmV2LiAyLjEgQ1BVcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5ODRmMTBiYWFjOGVmNjAzMmRmNTJmMTM1OTQzZDZiMGJjOTZmNzI0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDI1IDE0OjE2OjAwIDIwMDkgKzAyMDAKLQotICAgIG1wYzUxMjFhZHM6IGZpeCBicmVha2FnZSBpbnRyb2R1Y2VkIHdoZW4gcmVvcmRlcmluZyBlbHBpZGFfbWRkcmNfY29uZmlnW10KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZTc0OGVhMDA0NDczY2NlOTlmYmRlNjM4MmRkNTgwYzEwZmZkYjYwCi1BdXRob3I6IEtlbiBNYWNMZW9kIDxrZW5AYml0c2tvLnNsYy51dC51cz4KLURhdGU6CUZyaSBTZXAgMTEgMTU6MTY6MTggMjAwOSAtMDUwMAotCi0gICAgY21kX2ZkdC5jOiBmaXggcGFyc2Ugb2YgYnl0ZSBzdHJlYW1zIGFuZCBzdHJpbmdzCi0KLSAgICBDb21taXQgNGFiZDg0NGQ4ZSBleHRlbmRlZCB0aGUgZmR0IGNvbW1hbmQgcGFyc2VyIHRvIGhhbmRsZSBwcm9wZXJ0eQotICAgIHN0cmluZ3Mgd2hpY2ggYXJlIHNwbGl0IGFjcm9zcyBtdWx0aXBsZSBhcmd1bWVudHMgYnV0IGl0IHdhcyBicm9rZW4gZm9yCi0gICAgYnl0ZSBzdHJlYW1zIGFuZCBzdHJpbmdzLgotCi0gICAgQnl0ZSBzdHJlYW0gcGFyc2luZzoKLQotICAgICAqIEZpeGVzIHdoZXJlIGl0IHdvdWxkIHRlcm1pbmF0ZSBlYXJseSBvciBnbyBpbnRvIGFuIGVuZGxlc3MgbG9vcC4KLQotICAgICAqIEZpeGVzIGEgMHgwMCBiZWluZyBpbnNlcnRlZCBpbnRvIHRoZSBkYXRhIGlmIHRoZXJlIGlzIGEgc3BhY2UgYWZ0ZXIKLSAgICAgICAnWycgb3IgYSBzZXBhcmF0ZSBhcmd1bWVudC4KLQotICAgICAqIEZpeGVzIGRlcmVmZXJlbmNpbmcgdGhlIGFyZ3VtZW50IHBvaW50ZXIgYWZ0ZXIgdGhlIGxhc3QgYXJndW1lbnQuCi0KLSAgICAgKiBDaGVja3MgZm9yIGJhZCBjaGFyYWN0ZXJzLgotCi0gICAgU3RyaW5nIHBhcnNpbmc6Ci0KLSAgICAgKiBUcmVhdCBtdWx0aXBsZSBhcmd1bWVudHMgYXMgYSBzdHJpbmcgbGlzdC4gIFRoaXMgZml4ZXMgYW4gaXNzdWUgd2hlcmUKLSAgICAgICBvbmx5IHRoZSBsYXN0IGFyZ3VtZW50IHdhcyBzdG9yZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLZW4gTWFjTGVvZCA8a2VuQGJpdHNrby5zbGMudXQudXM+Ci0KLWNvbW1pdCAzODg3YzNmYmRiYmU2YmJiNGRmNjBlZDQxNWM4ZTFhYjlmZTU2YjVlCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIFNlcCAyMyAwNzo1NjowOCAyMDA5ICswMjAwCi0KLSAgICBtdWNtYzUyLCB1YzEwMTogZGVsZXRlIGF0YUAzYTAwIG5vZGUsIGlmIG5vIENGIGNhcmQgaXMgZGV0ZWN0ZWQKLQotICAgIFUtQm9vdCBjYW4gZGV0ZWN0IGlmIGFuIElERSBkZXZpY2UgaXMgcHJlc2VudCBvciBub3QuCi0gICAgSWYgbm90LCBhbmQgdGhpcyBuZXcgY29uZmlnIG9wdGlvbiBpcyBhY3RpdmF0ZWQsIFUtQm9vdAotICAgIHJlbW92ZXMgdGhlIEFUQSBub2RlIGZyb20gdGhlIERUUyBiZWZvcmUgYm9vdGluZyBMaW51eCwKLSAgICBzbyB0aGUgTGludXggSURFIGRyaXZlciBkb2VzIG5vdCBwcm9iZSB0aGUgZGV2aWNlIGFuZAotICAgIGNyYXNoLiBUaGlzIGlzIG5lZWRlZCBmb3IgYnVnZ3kgaGFyZHdhcmUgKHVjMTAxKSB3aGVyZQotICAgIG5vIHB1bGwgZG93biByZXNpc3RvciBpcyBjb25uZWN0ZWQgdG8gdGhlIHNpZ25hbCBJREU1Vl9ERDcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDdmNjI1ZmM2ZDNiYThmODkwZTg0M2FjMDE3MTc4MDRjMjQ2MmVkNTMKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgU2VwIDIzIDA3OjU2OjA0IDIwMDkgKzAyMDAKLQotICAgIG1wYzUyMDAsIG11Y21jNTIsIHVjMTAxOiBjb25maWcgY2xlYW51cAotCi0gICAgLSBBcyB0aGVzZSBib2FyZHMgYXJlIHNpbWlsaWFyLCBjb2xsZWN0IGNvbW1vbiBjb25maWcgb3B0aW9ucwotICAgICAgaW4gbWFucm9sYW5kL2NvbW1vbi5oIGFuZCBtYW5yb2xhbmQvbXBjNTJ4eC1jb21tb24uaAotICAgICAgZm9yIG1wYzUyMDAgc3BlY2lmaWMgY29tbW9uIG9wdGlvbnMgZm9yIHRoaXMgbWFudWZhY3R1cmVyLgotICAgIC0gYWRkIE9GIHN1cHBvcnQKLSAgICAtIHVwZGF0ZSBkZWZhdWx0IGVudmlyb25tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotICAgIE1pbm9yIGVkaXQgb2YgY29tbWl0IG1lc3NhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOWQxNDJlYThmNzg3ODgyYWI3MzJmYTUzMWEzNGRiMDkxYmZhMzYzZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCAyNSAwMDo1Nzo0OSAyMDA5ICswMjAwCi0KLSAgICBGaXggInBwYy84NXh4OiBDbGVhbiB1cCB1c2Ugb2YgTEFXQVIgZGVmaW5lcyIgYnJlYWthZ2UKLQotICAgIENvbW1pdCAwMDI3NDFhZTg2IG1vZGlmaWVkIGluY2x1ZGUvYXNtLXBwYy9tbXUuaCBzdWNoIHRoYXQgdGhlIExBV0FSXwotICAgIGRlZmluZXMgd2VyZSBvbmx5IGVuYWJsZWQgZm9yIHRoZSA4M3h4IHBsYXRmb3JtLCBidXQgdGhleSBhcmUgYWxzbwotICAgIG5lZWRlZCBvbiBNUEM1MTJ4IHN5c3RlbS4gRW5hYmxpbmcgdGhlc2UgZm9yIEUzMDAgc3lzdGVtcyBzZWVtcyB0aHVzCi0gICAgbW9yZSBhcHByb3ByaWF0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhNWFhMzk5OGFiNjQwOGE2YWM3MzhhM2NlODAwNWU2NDdiOTQ2NWY4Ci1BdXRob3I6IE1hcnRoYSBNIFN0YW4gPG1tYXJ4QHNpbGljb250a3guY29tPgotRGF0ZToJTW9uIFNlcCAyMSAxNDowODowMCAyMDA5IC0wNDAwCi0KLSAgICBBZGQgRWxwaWRhIE1lbW9yeSBDb25maWd1cmF0aW9uIHRvIG1wYzUxMjFhZHMgQm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aGEgTSBTdGFuIDxtbWFyeEBzaWxpY29udGt4LmNvbT4KLQotICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDA1NDE5N2JhOGVlNWVmMWU0MTY5NGRmNTg1MzFiNmU1M2VjNDNmMmQKLUF1dGhvcjogTWFydGhhIE0gU3RhbiA8bW1hcnhAc2lsaWNvbnRreC5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDE0OjA3OjE0IDIwMDkgLTA0MDAKLQotICAgIG1wYzUxMng6IFN0cmVhbWxpbmVkIGZpeGVkX3NkcmFtKCkgaW5pdCBzZXF1ZW5jZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNIFN0YW4gPG1tYXJ4QHNpbGljb250a3guY29tPgotCi0gICAgTWlub3IgY2xlYW51cDoKLQotICAgIFJlLW9yZGVyZWQgZGVmYXVsdF9tZGRyY19jb25maWdbXSB0byBoYXZlIG1hdGNoaW5nIGluZGljZXMuCi0KLSAgICBUaGlzIGFsbG93cyB0byB1c2UgdGhlIHNhbWUgaW5kZXggIk4iIGZvciBzb3VyY2UgYW5kIHRhcmdldCBmaWVsZHM7Ci0gICAgYmVmb3JlLCB3ZSBoYWQgY29kZSBsaWtlIHRoaXMKLQotCW91dF9iZTMyKCZpbS0+bWRkcmMuZGRyX3RpbWVfY29uZmlnMiwgbWRkcmNfY29uZmlnWzNdKTsKLQotICAgIHdoaWNoIGFsd2F5cyBsb29rZWQgbGlrZSBhIGNvcHkgJiBwYXN0ZSBlcnJvciBiZWNhdXNlIDIgIT0gMy4KLQotICAgIEFsc28sIHVzZSBOVUxMIHdoZW4gbWVhbmluZyBhIG51bGwgcG9pbnRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzOWFhY2ExZjY2YTBlNWIxMjA0YjA3ODlmNmMwMDk3OTM4YzAwYWQxCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTWFyIDE5IDAyOjQ2OjE5IDIwMDkgLTA1MDAKLQotICAgIHBwYy9wNDA4MDogRGV0ZXJtaW5lIHZhcmlvdXMgY2hpcCBmcmVxdWVuY2llcyBvbiBDb3JlTmV0IHBsYXRmb3JtcwotCi0gICAgVGhlIG1lYW5zIHRvIGRldGVybWluZSB0aGUgY29yZSwgYnVzLCBhbmQgRERSIGZyZXF1ZW5jaWVzIGFyZSBjb21wbGV0ZWx5Ci0gICAgbmV3IG9uIENvcmVOZXQgc3R5bGUgcGxhdGZvcm1zLiAgQWRkaXRpb25hbGx5IG9uIHA0MDgwIHdlIGNhbiBoYXZlCi0gICAgZGlmZmVyZW50IGZyZXF1ZW5jaWVzIGZvciBGTUFOIGFuZCBQTUUgSVAgYmxvY2tzLiAgV2UgbmVlZCB0byBrZWVwIHRyYWNrCi0gICAgb2YgdGhlIEZNQU4gJiBQTUUgZnJlcXVlbmNpZXMgc2luY2UgdGhleSBhcmUgdXNlZCBmb3IgdGltZSBzdGFtcGluZwotICAgIGNhcGFiaWxpdGllcyBpbnNpZGUgZWFjaCBibG9jay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzYzJhNjdlZWM4YTBmYWNjODY1YjQwMGNhY2E1MmU3ZjZiN2FkZjAxCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgU2VwIDE3IDAxOjUyOjM3IDIwMDkgLTA1MDAKLQotICAgIHBwYy9wNDA4MDogSGFuZGxlIHRpbWViYXNlIGVuYWJsaW5nIGFuZCBmcmVxdWVuY3kgcmVwb3J0aW5nCi0KLSAgICBPbiBDb3JlTmV0IHN0eWxlIHBsYXRmb3JtcyB0aGUgdGltZWJhc2UgZnJlcXVlbmN5IGlzIHRoZSBidXMgZnJlcXVlbmN5Ci0gICAgZGVmaW5lZCBieSAxNiAob24gUFEzIGl0IGlzIGRpdmlkZSBieSA4KS4gIEFsc28gb24gdGhlIENvcmVOZXQgcGxhdGZvcm1zCi0gICAgdGhlIGNvcmUgbm90IGxvbmdlciBjb250cm9scyB0aGUgZW5hYmxpbmcgb2YgdGhlIHRpbWViYXNlLglXZSBub3cgbmVlZAotICAgIHRvIGVuYWJsZSB0aGUgYm9vdCBjb3JlJ3MgdGltZWJhc2UgdmlhIENDU1IgcmVnaXN0ZXIgd3JpdGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDdlNDI1OWJiYTRjNTY1MzY3NjBlNDJkMzJkYWNmYjMyMzNmMjE2ZmQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBNYXIgMTkgMDI6Mzk6MTcgMjAwOSAtMDUwMAotCi0gICAgcHBjL3A0MDgwOiBBZGQgdmFyaW91cyBwNDA4MCByZWxhdGVkIGRlZmluZXMgKGFuZCBwNDA0MCkKLQotICAgIFRoZXJlIGFyZSB2YXJpb3VzIGxvY2F0aW9ucyB0aGF0IHdlIGhhdmUgY2hpcCBzcGVjaWZpYyBpbmZvOgotCi0gICAgKiBNYWtlZmlsZSBmb3Igd2hpY2ggZGRyIGNvZGUgdG8gYnVpbGQKLSAgICAqIEFkZGVkIHA0MDgwICYgcDQwNDAgdG8gY3B1X3R5cGVfbGlzdCBhbmQgU1ZSIGxpc3QKLSAgICAqIEFkZGVkIG51bWJlciBvZiBMQVdzIGZvciBwNDA4MAotICAgICogU2V0IENPTkZJR19NQVhfQ1BVUyB0byA4IGZvciBwNDA4MAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDM5YTdlN2ZkNTM4Y2RmNDllN2U4YTJmMDYzNGVhNWUxNWUxMmI0ZWMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBTZXAgMTcgMDE6NDQ6MzkgMjAwOSAtMDUwMAotCi0gICAgcHBjL3A0MDgwOiBDb3JlTmV0IHBsYXRmcm9tIHN0eWxlIHNlY29uZGFyeSBjb3JlIHJlbGVhc2UKLQotICAgIFRoZSBDb3JlTmV0IHBsYXRmb3JtIHN0eWxlIG9mIGJyaW5naW5nIHNlY29uZGFyeSBjb3JlcyBvdXQgb2YgcmVzZXQgaXMKLSAgICBhIGJpdCBkaWZmZXJlbnQgdGhhdCB0aGUgUFEzIHN0eWxlLiAgTW9zdGx5IHRoZSByZWdpc3RlcnMgdGhhdCB3ZSB1c2UKLSAgICB0byBzZXR1cCBib290IHRyYW5zbGF0aW9uLCBlbmFibGUgdGltZSBiYXNlcywgYW5kIGJvb3QgcmVsZWFzZSB0aGUgY29yZXMKLSAgICBoYXZlIG1vdmVkIGFyb3VuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhODgwY2YzZTBlMWMyMjBkNzgwZWNjZDBiMTAxMTcwYzQ0OTk0ODVkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgU2VwIDE3IDAxOjQ0OjAwIDIwMDkgLTA1MDAKLQotICAgIHBwYy9wNDA4MDogQ29yZU5ldCBwbGF0ZnJvbSBzdHlsZSBDQ1NSQkFSIHNldHRpbmcKLQotICAgIE9uIENvcmVOZXQgYmFzZWQgcGxhdGZvcm1zIHRoZSBDQ1NSQkFSIGFkZHJlc3MgaXMgc3BsaXQgYmV0d2VlbiBhbiBoaWdoICYKLSAgICBsb3cgcmVnaXN0ZXIgYW5kIHdlIG5vIGxvbmdlciBzaGlmdCB0aGUgYWRkcmVzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0MThlYzg1ODQzNDNmMDQwNDhlMmNjN2VlOTZiNmIyOWJlNTRhZDk3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTWFyIDE5IDAyOjMyOjIzIDIwMDkgLTA1MDAKLQotICAgIHBwYy9wNDA4MDogQWRkIHN1cHBvcnQgZm9yIENvcmVOZXQgc3R5bGUgcGxhdGZvcm0gTEFXcwotCi0gICAgT24gQ29yZU5ldCBiYXNlZCBwbGF0Zm9ybXMgdGhlIExBVyBhZGRyZXNzIGlzIHNwbGl0IGJldHdlZW4gYW4gaGlnaCAmCi0gICAgbG93IHJlZ2lzdGVyIGFuZCB3ZSBubyBsb25nZXIgc2hpZnQgdGhlIGFkZHJlc3MuICBBbHNvLCB0aGUgdGFyZ2V0IElEcwotICAgIG9uIENvcmVOZXQgcGxhdGZvcm1zIGhhdmUgYmVlbiBjb21wbGV0ZWx5IHJlLWFzc2lnbmVkLgotCi0gICAgQWRkaXRpb25hbGx5LCBhZGRlZCBhIG5ldyBmaW5kX2xhdygpIEFQSSB0byB3aGljaCBMQVcgYW4gYWRkcmVzcyBoaXRzIGluLgotICAgIFRoaXMgaXMgbmVlZCBmb3IgdGhlIENvcmVOZXQgc3R5bGUgYm9vdCByZWxlYXNlIGNvZGUgc2luY2UgaXQgd2lsbCBuZWVkCi0gICAgdG8gZGV0ZXJtaW5lIHdoYXQgdGhlIHRhcmdldCBJRCBzaG91bGQgYmUgc2V0IHRvIGZvciBib290IHdpbmRvdwotICAgIHRyYW5zbGF0aW9uLgotCi0gICAgRmluYWxseSwgZW5hbWVkIExBV0FSX0VOIHRvIExBV19FTiBhbmQgbW92ZWQgdG8gaGVhZGVyIHNvIHdlIGNhbiB1c2UKLSAgICBpdCBlbHNld2hlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMDFkZjUyMTIxNzk1N2Q3N2Q1M2MyZDU3MDE4M2VkZWQ3MDMwOTM4ZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIFNlcCAxNiAwOTo0MzoxMiAyMDA5IC0wNTAwCi0KLSAgICBwcGMvcDQwODA6IEFkZCBwNDA4MCBwbGF0Zm9ybSBpbW1hcCBkZWZpbml0aW9ucwotCi0gICAgVGhlIHA0MDgwIFNvQyBoYXMgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgY29tbW9uYWxpdHkgd2l0aCB0aGUgODV4eC9QUTMKLSAgICBwbGF0Zm9ybS4gIFdlIHJldXNlIHRoZSA4NXh4IGltbWFwIGFuZCBqdXN0IGFkZCBuZXcgZGVmaW5pdGlvbnMgZm9yCi0gICAgbG9jYWwgYWNjZXNzIGFuZCBnbG9iYWwgdXRpbHMuICBUaGUgZ2xvYmFsIHV0aWxzIGlzIG5vdyBicm9rZW4gaW50bwotICAgIGdsb2JhbCB1dGlscywgY2xvY2tpbmcgYW5kIHJ1biBjb250cm9sL3Bvd2VyIG1hbmFnZW1lbnQuCi0KLSAgICBUaGUgb2Zmc2V0cyBmcm9tIENDU1IgZm9yIGEgbnVtYmVyIG9mIGJsb2NrcyBoYXZlIGFsc28gY2hhbmdlZC4gIFdlCi0gICAgaW50cm9kdWNlIHRoZSBDT05GSUdfRlNMX0NPUkVORVQgZGVmaW5lIHRvIGRpc3RpbnF1aXNoIHRoZSBQUTMgc3R5bGUgb2YKLSAgICBwbGF0Zm9ybSBmcm9tIHRoZSBuZXcgcDQwODAgcGxhdGZvcm0uICBXZSBkb24ndCB1c2UgUW9pclEgYXMgdGhlcmUgYXJlCi0gICAgcHJvZHVjdHMgKGxpa2UgcDIwMjApIHRoYXQgYXJlIFBRMyBiYXNlZCBwbGF0Zm9ybXMgYnV0IGhhdmUgdGhlIFFvaXJRCi0gICAgbmFtZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNWJhY2Y3YTJiMDk2NDk2ZTJjNThmMmRlNGU1YjJiY2U4ZmJhMDM4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgU2VwIDIyIDE1OjQ1OjQ0IDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBGaXggZW5hYmxpbmcgb2YgTDIgY2FjaGUKLQotICAgIFdlIG5lZWQgdG8gZmxhc2ggaW52YWxpZGF0ZSB0aGUgbG9ja3MgaW4gYWRkaXRpb24gdG8gdGhlIGNhY2hlCi0gICAgYmVmb3JlIHdlIGVuYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjYjBmZjY1YzYxOWVmYWNkYzBiYTY5YWE4ZWU2ZWRlN2RkMzY0YTM4Ci1BdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBTZXAgMjIgMTI6NDg6MjcgMjAwOSArMDUzMAotCi0gICAgODV4eC1mZHQ6IEZpeGVkIGwyLWN0bHIncyBjb21wYXRpYmxlIHByb3AgZm9yIFFvcklRCi0KLSAgICBUaGUgY29kZSBhc3N1bWVkIG5hbWVzIHdoZXJlIGp1c3QgbnVtYmVycyBhbmQgYWx3YXlzIHByZWZpeGVkICdtcGMnLgotICAgIEhvd2V2ZXIgbmV3ZXIgUW9ySVEgZG9uJ3QgZm9sbG93IHRoZSBtcGMgbmFtaW5nIHNjaGVtZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjM0YTg5ZDkxMWNlMjhlNDYzNzJmNTU1ZDdjMTRlMjg0MjRmMmIwZAotQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgU2VwIDIyIDE0OjUzOjIxIDIwMDkgKzA4MDAKLQotICAgIHBwYy84NXh4OiBhZGQgY3B1IGluaXQgY29uZmlnIGZpbGUgZm9yIGJvb3QgZnJvbSBOQU5ECi0KLSAgICBXaGVuIGJvb3QgZnJvbSBOQU5ELCB0aGUgTkFORCBmbGFzaCBtdXN0IGJlIGNvbm5lY3RlZCB0byBici9vcjAuCi0gICAgQWxzbyBpbml0IFJBTShMMiBTUkFNIG9yIEREUiBTRFJBTSkgZm9yIGxvYWQgdGhlIHNlY29uZCBpbWFnZSB0bwotICAgIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNjYxMzliODhiNDNhZTFkODdhYmI1ZjU0MzFlNmY1N2I4MDE3OTVmCi1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBTZXAgMjIgMTQ6NTM6MzQgMjAwOSArMDgwMAotCi0gICAgaW1tYXBfODV4eDogYWRkIHBvcnBsbHNyJ3MgcGxhdCByYXRpbyBkZWZpbml0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDA5OGJjYmFlMzE3MmQ3M2QyNGNhOGJhMTk2MzI4ZDkwMWVlZDQxMzIKLUF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIFNlcCAyMiAxNDo1MzoxMCAyMDA5ICswODAwCi0KLSAgICBwcGMvODV4eDogYWRkIGxkIHNjcmlwdCBmaWxlIGZvciBib290IGZyb20gTkFORAotCi0gICAgVGhlIGZpcnN0IHN0YWdlIDRLIGltYWdlIHVzZXMgYSBzZXBlcmF0ZSBsZCBzY3JpcHQgZmlsZSB0bwotICAgIGdlbmVyYXRlIDRLIGltYWdlLiBUaGlzIHBhdGNoIG1vdmVzIGl0IHRvIHRoZSBjcHUvbXBjODV4eC8qCi0gICAgdG8gbWFrZSBpdCBhdmFsaWFibGUgZm9yIDg1eHggcGxhdGZvcm0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDg0MzlmMDVjZmQ4Y2JiMzg0ODUzNzZhMzRkOWZlMjk3YmEyNjI3MzcKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMjM6MDk6MjggMjAwOSAtMDUwMAotCi0gICAgbXBjODYxMGhwY2Q6IFVzZSBjb21tb24gODZ4eCBmZHQgZml4dXAgY29kZQotCi0gICAgVXNpbmcgdGhlIGNvbW1vbiA4Nnh4IGZkdCBmaXh1cHMgcmVtb3ZlcyBzb21lIGJvYXJkLXNwZWNpZmljIGNvZGUgYW5kCi0gICAgc2hvdWxkIG1ha2UgdGhlIG1wYzg2MTBocGNkIGVhc2llciB0byBtYWludGFpbiBpbiB0aGUgbG9uZyBydW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5Mjg0MzVkMTFiODk4ODcwNDE1OTEwZWZmZjg3YTRkNjM5OWNlY2I4Ci1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJTW9uIFNlcCAyMSAxNzoxOToxNyAyMDA5IC0wNDAwCi0KLSAgICBzYmM4NXgwOiB0aWR5IHVwIE1ha2VmaWxlIHRvIHVzZSBuZXcgY29uZmlndXJhdGlvbiBzY3JpcHQuCi0KLSAgICBDb21taXQgODA0ZDgzYTUgYWxsb3dzIHVzIHRvIG1vdmUgYWxsIHRoZSBjb25maWd1cmF0aW9uCi0gICAgdmFyaWF0aW9uIHR3ZWFrcyBvdXQgb2YgdGhlIHRvcCBsZXZlbCBNYWtlZmlsZSBhbmQgZG93bgotICAgIGludG8gdGhlIGJvYXJkcyBjb25maWcgaGVhZGVyLiAgVGhpcyB0YWtlcyBhZHZhbnRhZ2Ugb2YKLSAgICB0aGF0IGZvciB0aGUgc2JjODU0MC9zYmM4NTYwIGJvYXJkcy4KLQotICAgIFRoZXJlIHdlcmUgYSBjb3VwbGUgb2YgY2hlZXp5IGNvbW1lbnRzIHBvaW50aW5nIGF0IGluY29ycmVjdAotICAgIGZpbGVzLCBvciBmaWxlcyB0aGF0IGRvbid0IGV4aXN0LCBzbyBJJ3ZlIGNsZWFuZWQgdGhvc2UgdXAgdG9vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDI3MzhiYzhkZjY1ZWM5MDUwOTRkODNmNjJmODdmZWQxMjNhMDNiOWMKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglTdW4gU2VwIDIwIDIwOjM2OjA2IDIwMDkgLTA0MDAKLQotICAgIHNiYzg1NDg6IGFsbG93IGVuYWJsaW5nIFBDSSB2aWEgYSBtYWtlIGNvbmZpZyBvcHRpb24KLQotICAgIFByaW9yIHRvIHRoaXMgY29tbWl0LCB0byBlbmFibGUgUENJLCB5b3UgaGFkIHRvIGdvIG1hbnVhbGx5Ci0gICAgZWRpdCB0aGUgYm9hcmQgY29uZmlnIGhlYWRlciwgYW5kIGlmIHlvdSBoYWQgMzNNSHogUENJLCB5b3UKLSAgICBoYWQgdG8gbWFudWFsbHkgY2hhbmdlIENPTkZJR19TWVNfTlMxNjU1MF9DTEsgdG9vLCB3aGljaCB3YXMKLSAgICBub3QgcmVhbCB1c2VyIGZyaWVuZGx5LAotCi0gICAgVGhpcyBhZGRzIHRoZSB0eXBpY2FsIFBDSSBhbmQgY2xvY2sgc3BlZWQgbWFrZSB0YXJnZXRzIHRvIHRoZQotICAgIHRvcGxldmVsIE1ha2VmaWxlIGluIGFjY29yZGFuY2Ugd2l0aCB3aGF0IGlzIGJlaW5nIGRvbmUgd2l0aAotICAgIG90aGVyIGJvYXJkcyAoaS5lLiB1c2luZyB0aGUgIi10IiB0byBta2NvbmZpZykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmRjN2ViOTBiNTA0ZGFhMDIwZjI5MDYwNGQ1MGRhOGY3Y2I3MGQ4YQotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CVN1biBTZXAgMjAgMjA6MzY6MDUgMjAwOSAtMDQwMAotCi0gICAgc2JjODU0ODogdXBkYXRlIFBDSS9QQ0ktZSBzdXBwb3J0IGNvZGUKLQotICAgIFRoZSBQQ0kvUENJLWUgc3VwcG9ydCBmb3IgdGhlIHNiYzg1NDggd2FzIGJhc2VkIG9uIGFuIGVhcmxpZXIKLSAgICB2ZXJzaW9uIG9mIHdoYXQgdGhlIE1QQzg1NDhDRFMgYm9hcmQgd2FzIHVzaW5nLCBhbmQgaW4gaXRzCi0gICAgY3VycmVudCBzdGF0ZSBpdCB3b24ndCBldmVuIGNvbXBpbGUuICBUaGlzIHJlLXN5bmNzIGl0IHRvIG1hdGNoCi0gICAgdGhlIGxhdGVzdCBjb2RlYmFzZSBhbmQgbWFrZXMgdXNlIG9mIHRoZSBuZXcgc2hhcmVkIFBDSSBmdW5jdGlvbnMKLSAgICB0byByZWR1Y2UgYm9hcmQgZHVwbGljYXRpb24uCi0KLSAgICBJdCBib3Jyb3dzIGZyb20gdGhlIE1QQzg1NjhNRFMsIGluIHRoYXQgaXQgcHVsbHMgdGhlIFBDSS1lIEkvTwotICAgIGJhY2sgdG8gMHhlMjgwXzAwMDAgKHdoZXJlIFBDSTIgd291bGQgYmUgb24gTVBDODU0OENEUyksIGFuZAotICAgIHNpbWlsYXJseSBpdCBjb2FsZXNjZXMgdGhlIFBDSSBhbmQgUENJLWUgbWVtIGludG8gb25lIHNpbmdsZSBUTEIuCi0KLSAgICBCb3RoIFBDSS14IGFuZCBQQ0ktZSBoYXZlIGJlZW4gdGVzdGVkIHdpdGggaW50ZWwgZTEwMDAgY2FyZHMKLSAgICB1bmRlciBsaW51eCAod2l0aCBhbiBhY2NvbXBhbnlpbmcgZHRzIGNoYW5nZSBpbiBwbGFjZSkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhOGIzZTkwZjc5OGUwY2NhNWYxMWM5MTJmOWQwODIzYTFjNWI2YzI0Ci1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJU3VuIFNlcCAyMCAyMDozNjowMSAyMDA5IC0wNDAwCi0KLSAgICBmc2xfcGNpOiBjcmVhdGUgYSBTRVRfU1REX1BDSV9JTkZPKCkgaGVscGVyIHdyYXBwZXIKLQotICAgIFJlY3ljbGUgdGhlIHJlY2VudGx5IGFkZGVkIFBDSS1lIHdyYXBwZXIgdXNlZCB0byByZWR1Y2UgYm9hcmQKLSAgICBkdXBsaWNhdGlvbiBvZiBjb2RlIGJ5IGNyZWF0aW5nIGEgc2ltaWxhciB2ZXJzaW9uIGZvciBwbGFpbiBQQ0kuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTFkNWE2MjlmOGE0MGY5ZDdjZmZjNzRlNThmNGUzZWQyNThlNTZhYgotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CVN1biBTZXAgMjAgMjA6MzY6MDQgMjAwOSAtMDQwMAotCi0gICAgc2JjODU0ODogY29ycmVjdCBsb2NhbCBidXMgU0RSQU0gc2l6ZSBmcm9tIDY0TSB0byAxMjhNCi0KLSAgICBUaGUgc2l6ZSBvZiB0aGUgTEIgU0RSQU0gb24gdGhpcyBib2FyZCBpcyAxMjhNQiwgc3Bhbm5pbmcgQ1MzCi0gICAgYW5kIENTNC4gIEl0IHdhcyBwcmV2aW91c2x5IG9ubHkgYmVpbmcgY29uZmlndXJlZCBmb3IgNjRNQiBvbgotICAgIENTMywgc2luY2UgdGhhdCB3YXMgd2hhdCB0aGUgb3JpZ2luYWwgY29kZWJhc2Ugb2YgdGhlIE1QQzg1NDhDRFMKLSAgICBoYWQuICBJbiBhZGRpdGlvbiB0byBzZXR0aW5nIHVwIEJSNC9PUjQsIHRoaXMgYWxzbyBhZGRzIHRoZSBUTEIKLSAgICBlbnRyeSBmb3IgdGhlIHNlY29uZCBoYWxmIG9mIHRoZSBTRFJBTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwYzdlNGQ0NWQ5ZmIzYzllNTAzZWU5M2Q1MDU3MmQzNDZkYWUxNTBlCi1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJU3VuIFNlcCAyMCAyMDozNjowMyAyMDA5IC0wNDAwCi0KLSAgICBzYmM4NTQ4OiB1c2UgSS9PIGFjY2Vzc29ycwotCi0gICAgU3dlZXAgdGhyb3VnaHQgdGhlIGJvYXJkIHNwZWNpZmljIGZpbGUgYW5kIHJlcGxhY2UgdGhlIHZhcmlvdXMKLSAgICByZWdpc3RlciBwcm9kZGluZ3Mgd2l0aCB0aGUgZXF1aXZhbGVudCBJL08gYWNjZXNzb3JzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGZjMzhlYjk4ZmYyMjZmMmM1M2VlY2JlZTAzM2E2YWI3NjE5NDczZGMKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglTdW4gU2VwIDIwIDIwOjM2OjAyIDIwMDkgLTA0MDAKLQotICAgIHNiYzg1NDg6IHJlbW92ZSBlVFNFQzMvNCB2b2x0YWdlIGhhY2sKLQotICAgIFdpdGggb25seSBlVFNFQzEgYW5kIDIgYmVpbmcgYnJvdWdodCBvdXQgdG8gUkotNDUgY29ubmVjdG9ycywgd2UKLSAgICBhcmVuJ3QgaW50ZXJlc3RlZCBpbiB0aGUgZVRTRUMzLzQgdm9sdGFnZSBoYWNrIG9uIHRoaXMgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5YjNiYTI0ZjE4OTAwNjMzYTM5NDQxNmNjMDU2YzQ0YTFhNmViNzU0Ci1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJRnJpIFNlcCAxOCAxOTowODo0MSAyMDA5IC0wNDAwCi0KLSAgICBzYmM4NTQ4OiBlbmFibGUgYWNjZXNzIHRvIHNlY29uZCBiYW5rIG9mIGZsYXNoCi0KLSAgICBUaGUgc2JjODU0OCBoYXMgYSA2NE1CIFNPRElNTSBmbGFzaCBtb2R1bGUgb2ZmIG9mIENTNiB0aGF0Ci0gICAgcHJldmlvdXNseSB3YXNuJ3QgZW51bWVyYXRlZCBieSB1LWJvb3QuICBUaGVyZSB3ZXJlIGFscmVhZHkKLSAgICBCUjYvT1I2IHNldHRpbmdzIGZvciBpdCBbdXNlZCBieSBjcHVfaW5pdF9mKCldIGJ1dCB0aGVyZQotICAgIHdhcyBubyBUTEIgZW50cnkgYW5kIGl0IHdhc24ndCBpbiB0aGUgbGlzdCBvZiBmbGFzaCBiYW5rcwotICAgIHJlcG9ydGVkIHRvIHUtYm9vdC4KLQotICAgIFRoZSBsb2NhdGlvbiBvZiB0aGUgNjRNQiBmbGFzaCBpcyAicHVsbGVkIGJhY2siIDhNQiBmcm9tCi0gICAgYSA2NE1CIGJvdW5kYXJ5LCBpbiBvcmRlciB0byBhbGxvdyBhZGRyZXNzIHNwYWNlIGZvciB0aGUKLSAgICA4TUIgYm9vdCBmbGFzaCB0aGF0IGlzIGF0IHRoZSBlbmQgb2YgMzIgYml0IGFkZHJlc3Mgc3BhY2UuCi0gICAgVGhpcyBtZWFucyBjcmVhdGluZyB0d28gNE1CIFRMQiBlbnRyaWVzIGZvciB0aGUgOE1CIGNodW5rLAotICAgIGFuZCB0aGVuIGV4cGFuZGluZyB0aGUgb3JpZ2luYWwgYm9vdCBmbGFzaCBlbnRyeSB0byA2NE1CCi0gICAgaW4gb3JkZXIgdG8gY292ZXIgdGhlIDhNQiBib290IGZsYXNoIGFuZCB0aGUgcmVtYWluZGVyCi0gICAgKDU2TUIpIG9mIHRoZSB1c2VyIGZsYXNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGRlZDU4ZjQxNTM5MjNkZmZmMTZkMmY5NjQ5NWJkN2FjZjFmN2UxMGUKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglXZWQgU2VwIDIzIDE3OjMwOjU3IDIwMDkgLTA0MDAKLQotICAgIHNiYzg1NDg6IGNvc21ldGljIGxpbmUgcmUtd3JhcAotCi0gICAgRml4IHRoZSBleHRyYSBsb25nIGxpbmVzIHRvIGJlIGNvbnNpc3RlbnQgd2l0aCB1LWJvb3QgY29kaW5nIHN0eWxlLgotICAgIE5vIGZ1bmN0aW9uYWwgY2hhbmdlIGhlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDJjNDBhY2QzNTI1Yjc1ZGIzZmNkM2Y1YTViZDQwNDQ1Njc5YjU1NDcKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgU2VwIDE4IDE5OjA4OjQwIDIwMDkgLTA0MDAKLQotICAgIHNiYzg1NDg6IGdldF9jbG9ja19mcmVxIGlzIG5vdCB2YWxpZCBmb3IgdGhpcyBib2FyZAotCi0gICAgVGhlIGdldF9jbG9ja19mcmVxKCkgY29tZXMgZnJvbSBmcmVlc2NhbGUvY29tbW9uL2NhZG11cy5jIGFuZCBpcwotICAgIG9ubHkgdmFsaWQgZm9yIHRoZSBDRFMgYmFzZWQgODV4eCByZWZlcmVuY2UgcGxhdGZvcm1zLiAgSXQgd291bGQKLSAgICBiZSBuaWNlIGlmIHdlIGNvdWxkIHJlYWQgdGhlIDMzIHZzLiA2Nk1IeiBzdGF0dXMgc29tZWhvdywgYnV0IGluCi0gICAgdGhlIG1lYW50aW1lLCB0aWUgaXQgdG8gQ09ORklHX1NZU19DTEtfRlJFUSBsaWtlIGFsbCB0aGUgb3RoZXIKLSAgICBub24tQ0RTIGJvYXJkcyBkby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3YjFmMTM5OWU4NzY1ODdlMGEyNjhhNWE0NzFkZDQ0NGJmYmMzMTE0Ci1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJRnJpIFNlcCAxOCAxOTowODozOSAyMDA5IC0wNDAwCi0KLSAgICBzYmM4NTQ4OiBkZWxldGUgdW51c2VkIE1QQzg1NDhDRFMgaW5mbyBjYXJyaWVkIG92ZXIgZnJvbSBwb3J0Ci0KLSAgICBUaGVyZSBhcmUgYSBjb3VwbGUgZGVmaW5lcyBhbmQgUENJIGJyaWRnZSBxdWlya3MgcmVsYXRlZCB0byB0aGUgUENJCi0gICAgYmFja3BsYW5lIG9mIHRoZSBNUEM4NTQ4Q0RTIHRoYXQgaGF2ZSBubyBtZWFuaW5nIGluIHRoZSBjb250ZXh0IG9mCi0gICAgdGhlIHBvcnQgdG8gdGhlIHNiYzg1NDggYm9hcmQsIHNvIGRlbGV0ZSB0aGVtLgotCi0gICAgQWxzbywgdGhlIGZvcm0gZmFjdG9yIG9mIHRoZSBzYmM4NTQ4IGlzIGEgc3RhbmRhbG9uZSBib2FyZCB3aXRoIGEKLSAgICBzaW5nbGUgUENJLVggYW5kIGEgc2luZ2xlIFBDSS1lIHNsb3QuICBUaGF0IHByZXR0eSBtdWNoIGd1YXJhbnRlZXMKLSAgICB0aGF0IGl0IHdpbGwgbmV2ZXIgYmUgYSBQQ0kgYWdlbnQgaXRzZWxmLCBzbyB0aGUgaG9zdC9hZ2VudCBhbmQgcm9vdAotICAgIGNvbXBsZXgvZW5kIG5vZGUgZGlzdGluY3Rpb25zIGhhdmUgYmVlbiByZW1vdmVkLgotCi0gICAgU2ltaWxhcmx5LCBzaW5jZSB0aGVyZSBpcyBubyBwaHlzaWNhbCBjb25uZWN0b3IgbWFwcGluZyB0byBQQ0kyLCBzbwotICAgIGFsbCByZWZlcmVuY2VzIG9mIFBDSTIgaW4gdGhlIGJvYXJkIHN1cHBvcnQgZmlsZXMgaGF2ZSBiZWVuIHJlbW92ZWQKLSAgICBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDk0Y2EwOTE0NTZkNWMzMDQwZGRkNjM1MWM4MGNmM2U3NDM5M2Y5YmUKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgU2VwIDE4IDE5OjA4OjQ0IDIwMDkgLTA0MDAKLQotICAgIHNiYzg1NDg6IGVuYWJsZSB1c2Ugb2YgUENJIG5ldHdvcmsgY2FyZHMKLQotICAgIENyZWF0ZSBhIGJvYXJkX2V0aF9pbml0IHRvIGFsbG93IGEgcGxhY2UgdG8gaG9vayBpbgotICAgIHRoZSBQQ0kgZXRoZXJuZXQgaW5pdCBhZnRlciBhbGwgdGhlIGVUU0VDIGFyZSB1cAotICAgIGFuZCBjb25maWd1cmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgyYjc3MjViNmQ0NmQ5YWQyYjk2MmI0Y2RmYTg5NmJkNWVlMzJmYjUKLUF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTYXQgU2VwIDE5IDE3OjUwOjE3IDIwMDkgKzA1MzAKLQotICAgIHBwYy84NXh4OiAzMmJpdCBERFIgY2hhbmdlcyBmb3IgUDEwMjAvUDEwMTEKLQotICAgIFRoZSBQMTAyMC9QMTAxMSBTT0NzIHN1cHBvcnQgbWF4IDMyYml0IEREUiB3aWR0aCBhcyBvcHBvc2VkIHRvIFAyMDIwL1AyMDEwCi0gICAgd2hlcmUgbWF4IEREUiBkYXRhIHdpZHRoIHN1cHBvcnRlZCBpcyA2NGJpdC4KLQotICAgIEFzIGEgbmV4dCBzdGVwIHRoZSBERFIgZGF0YSB3aWR0aCBpbml0aWFsaXphdGlvbiB3b3VsZCBiZSBtYWRlIG1vcmUgZHluYW1pYwotICAgIHdpdGggbW9yZSBmbGV4aWJpbGl0eSBmcm9tIHRoZSBib2FyZCBwZXJzcGVjdGl2ZSBhbmQgdXNlciBjaG9pY2UuCi0gICAgR29pbmcgZm9yd2FyZCB3ZSB3b3VsZCBhbHNvIHJlbW92ZSB0aGUgaGFyZGNvZGluZ3MgZm9yIHBsYXRmb3JtcyB3aXRoIG9uYm9hcmQKLSAgICBtZW1vcmllcyBhbmQgdHJ5IHRvIHVzZSB0aGUgRlNMIFNQRCBjb2RlIGZvciBERFIgaW5pdGlhbGl6YXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYmQ0MmJiYjg1OGRkZTcxM2YwMjNmYzJlNGY1MTJlYzE3NGExYThkMgotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBTZXAgMTggMTk6MDg6NDYgMjAwOSAtMDQwMAotCi0gICAgc2JjODU0ODogcmVwbGFjZSBSRUFETUUgd2l0aCBjb21wbGV0ZWx5IG5ldyBkb2N1bWVudAotCi0gICAgVGhlIHByZXZpb3VzIFJFQURNRS5zYmM4NTQ4IHdhcyBwcmV0dHkgbXVjaCBjb250ZW50LWZyZWUuIFJlcGxhY2UKLSAgICBpdCB3aXRoIHNvbWV0aGluZyB0aGF0IGFjdHVhbGx5IGdpdmVzIHRoZSBlbmQgdXNlciBzb21lIHJlbGV2YW50Ci0gICAgaGFyZHdhcmUgZGV0YWlscywgYW5kIGFsc28gbGlzdHMgdGhlIHUtYm9vdCBjb25maWd1cmF0aW9uIGNob2ljZXMuCi0KLSAgICBBbHNvIGluIHRoZSBjb3NtZXRpYyBkZXBhcnRtZW50LCBmaXggdGhlIGJvZ3VzIGxpbmUgaW4gdGhlIE1ha2VmaWxlCi0gICAgdGhhdCB3YXMgY2FycmllZCBvdmVyIGZyb20gdGhlIFNCQzg1NjAgTWFrZWZpbGUsIGFuZCB0aGUgdHlwbyBpbgotICAgIHRoZSBzYmM4NTQ4LmMgY29weXJpZ2h0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDAwMjc0MWFlODYyYzFjN2UzZGFkODlkMDIwZTM5MmU2YWRkMWMwNWQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVNhdCBTZXAgMTkgMTE6MjA6NTQgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IENsZWFuIHVwIHVzZSBvZiBMQVdBUiBkZWZpbmVzCi0KLSAgICBPbiA4NXh4IHBsYXRmb3JtcyB3ZSBzaG91bGRuJ3QgYmUgdXNpbmcgYW55IExBV0FSXyogZGVmaW5lcwotICAgIGJ1dCB1c2luZyB0aGUgTEFXXyogb25lcyBwcm92aWRlZCBieSBmc2wtbGF3LmguICBSZW5hbWUgYW55IHN1Y2gKLSAgICB1c2VzIGFuZCBsaW1pdCB0aGUgTEFXQVJfIHRvIHRoZSA4M3h4IHBsYXRmb3JtIGFzIHRoZSBvbmx5IHVzZXIgc28KLSAgICB3ZSB3aWxsIGdldCBjb21waWxlIGVycm9ycyBpbiB0aGUgZnV0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGY2MWRhZTdjOWRjNTI2NDEwZmFlYzE1Y2UzNTJiMTFmYzM2YTU2MGIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBTZXAgMyAxMDoyMDowOSAyMDA5IC0wNTAwCi0KLSAgICBwcGMvODV4eDogQ2xlYW4gdXAgbXBjODU3MkRTIFBDSSBzZXR1cCBjb2RlCi0KLSAgICBVc2UgbmV3IGZzbF9wY2lfaW5pdF9wb3J0KCkgdGhhdCByZWR1Y2VzIGFtb3VudCBvZiBkdXBsaWNhdGVkIGNvZGUgaW4gdGhlCi0gICAgYm9hcmQgcG9ydHMsIHVzZSBJTyBhY2Nlc3NvcnMgYW5kIGNsZWFuIHVwIHByaW50aW5nIG9mIHN0YXR1cyBpbmZvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ5NThhZjg3MzUyMDc2NDAxODFjNDQyM2U0MWIyNGVlNzQxODM2MWEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBTZXAgMyAwOTo0MjowMSAyMDA5IC0wNTAwCi0KLSAgICBwcGMvODV4eDogQ2xlYW4gdXAgcDIwMjBkcyBQQ0kgc2V0dXAgY29kZQotCi0gICAgVXNlIG5ldyBmc2xfcGNpX2luaXRfcG9ydCgpIHRoYXQgcmVkdWNlcyBhbW91bnQgb2YgZHVwbGljYXRlZCBjb2RlIGluIHRoZQotICAgIGJvYXJkIHBvcnRzLCB1c2UgSU8gYWNjZXNzb3JzIGFuZCBjbGVhbiB1cCBwcmludGluZyBvZiBzdGF0dXMgaW5mby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5M2E4Mzg3MmM3MDc4OTFiYWQyMmY3Nzc2ZDc5YTY1MGM4NzA2MDFmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgU2VwIDMgMTA6MDk6MDQgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IENsZWFuIHVwIHAxX3AyX3JkYiBQQ0kgc2V0dXAKLQotICAgIEdlbmVyYWwgY29kZSBjbGVhbnVwIHRvIHVzZSBpbi9vdXQgSU8gYWNjZXNzb3JzIGFzIHdlbGwgYXMgbWFraW5nCi0gICAgdGhlIGNvZGUgdGhhdCBwcmludHMgb3V0IGluZm8gc2FuZSBiZXR3ZWVuIGJvYXJkIGFuZCBnZW5lcmljIGZzbCBwY2kKLSAgICBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDYyY2EyMWM0NDJlMThmZWMxMThlYzgzZTE4M2Q2NGVhNDk5NjZjZTcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBTZXAgMTAgMTY6MzE6NTMgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IFNpbXBsaWZ5IHRoZSB0b3AgbWFrZWZpbGUgZm9yIFAxX1AyX1JEQiBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhMGY5ZTBlMGYwNjAzMzgwN2RlMGFlMDE3YWQ0ZDljZjVkZGZmODRiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgU2VwIDEwIDE2OjI2OjM3IDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBTaW1wbGlmeSB0aGUgdG9wIG1ha2VmaWxlIGZvciAzNi1iaXQgY29uZmlnIGZvciBQMjAyMERTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjllZGNjMTBlNmNiNDk3ZGQ3ZGNiYWY2OTFjZmQxODU5YWJhZTI3YQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IFNlcCAxMCAxNjoyMzo0NSAyMDA5IC0wNTAwCi0KLSAgICBwcGMvODV4eDogU2ltcGxpZnkgdGhlIHRvcCBtYWtlZmlsZSBmb3IgMzYtYml0IGNvbmZpZyBmb3IgTVBDODU3MkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMGU5MDVhYzI4YjFlMDM5ZDc0ZTYzMjMyMjkzOTcyYmZmNmI1YTBjZQotQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgU2VwIDE4IDExOjQ1OjA5IDIwMDkgKzA4MDAKLQotICAgIHBwYy84NXh4OiBzaW1wbGlmeSB0aGUgdG9wIG1ha2VmaWxlIGZvciAzNi1iaXQgY29uZmlnIGZvciBtcGM4NTM2ZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjAyZDk0ODc1Yzk4YjdiNTczZjEzNmM0ZjM1MzYwOTc1OGVkOTczMwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIFNlcCAxNSAyMjoyMTo1OCAyMDA5IC0wNTAwCi0KLSAgICBwcGMvODV4eDogRml4IExDUlJfQ0xLRElWIGRlZmluZXMKLQotICAgIEZvciBzb21lIHJlYXNvbiB0aGUgQ0xLRElWIGZpZWxkIHZhcmllcyBiZXR3ZWVuIFNvQyBpbiBob3cgaXQgaW50ZXJwcmV0cwotICAgIHRoZSBiaXQgdmFsdWVzLgotCi0gICAgQWxsIDgzeHggYW5kIGVhcmx5IChlNTAwdjEpIFBRMyBkZXZpY2VzIHN1cHBvcnQ6Ci0gICAgIGNsay8yOiBDTEtESVYgPSAyCi0gICAgIGNsay80OiBDTEtESVYgPSA0Ci0gICAgIGNsay84OiBDTEtESVYgPSA4Ci0KLSAgICBOZXdlciBQUTMgKGU1MDB2MikgYW5kIE1QQzg2eHggc3VwcG9ydDoKLSAgICAgY2xrLzQ6IENMS0RJViA9IDIKLSAgICAgY2xrLzg6IENMS0RJViA9IDQKLSAgICAgY2xrLzE2OiBDTEtESVYgPSA4Ci0KLSAgICBFbnN1cmUgdGhhdCB0aGUgTVBDODZ4eCBhbmQgTVBDODV4eCBzdGlsbCBnZXQgdGhlIHNhbWUgYmVoYXZpb3IgYW5kIG1ha2UKLSAgICB0aGUgZGVmaW5lcyByZWZsZWN0IHRoZWlyIGxvZ2ljYWwgdmlldyAobm90IHRoZSB2YWx1ZSBvZiB0aGUgZmllbGQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDU1Zjc4NmQ4YmE4Y2U1OGE4MTQyODUzNmRhMzRhMjE5MmI5YmFkOWYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMTI6MDQ6MzMgMjAwOSAtMDUwMAotCi0gICAgTUFLRUFMTDogVXNlIFBPU0lYIG1hdGgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA0MGEyOGYwODg1ZTYyYjY2MDdlMTJlZDZiYWE2Mjg0OTI3ZjUyNjNlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDEyOjA0OjMyIDIwMDkgLTA1MDAKLQotICAgIE1BS0VBTEw6IEFkZCBzdW1tYXJ5IGluZm9ybWF0aW9uCi0KLSAgICBUaGlzIGNoYW5nZSBhZGRzIHNvbWUgYmFzaWMgc3VtbWFyeSBpbmZvcm1hdGlvbiB0byB0aGUgTUFLRUFMTCBzY3JpcHQuCi0gICAgVGhlIHN1bW1hcnkgaW5mb3JtYXRpb24gaW5jbHVkZXMgaG93IG1hbnkgYm9hcmRzIHdlcmUgY29tcGlsZWQsIGhvdyBtYW55Ci0gICAgYm9hcmRzIGhhZCBjb21waWxlIHdhcm5pbmdzIG9yIGVycm9ycywgYW5kIHdoaWNoIHNwZWNpZmljIGJvYXJkcyBoYWQKLSAgICBjb21waWxlIHdhcm5pbmdzIG9yIGVycm9ycy4KLQotICAgIFRoaXMgaW5mb3JtYXRpb24gaXMgdXNlZnVsIHdoZW4gZG9pbmcgY29tcGlsZSB0ZXN0aW5nIHRvIHF1aWNrbHkKLSAgICBkZXRlcm1pbmUgd2hpY2ggYm9hcmRzIGFyZSBicm9rZW4uCi0KLSAgICBBcyBhIHNpZGUgYmVuZWZpdCwgbm8gZW1wdHkgJEJPQVJELkVSUiBmaWxlcyBhcmUgZ2VuZXJhdGVkIGJ5IE1BS0VBTEwuCi0gICAgUHJldmlvdXNseSwgZWFjaCBib2FyZCBoYWQgYSBjb3JyZXNwb25kaW5nICRCT0FSRC5FUlIgZmlsZSwgZXZlbiBpZiB0aGUKLSAgICBib2FyZCBjb21waWxlZCBjbGVhbmx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDcxY2U5YmQ3ZjU1MWU0NGM0ZGRiNGM5ODVjMDk1ZGE2ZDM0NTJkNzkKLUF1dGhvcjogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBjb2xkaGF1cy5jb20+Ci1EYXRlOglNb24gU2VwIDIxIDExOjA1OjU1IDIwMDkgLTA1MDAKLQotICAgIGdhbGF4eTUyMDA6IGVuYWJsZSB2ZXJzaW9uIGVudmlyb25tZW50IHZhcmlhYmxlCi0KLSAgICBBZGQgdmVyc2lvbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBjb25maWd1cmF0aW9uIHRvIHRoZSBnYWxheHk1MjAwCi0gICAgYm9hcmQgaGVhZGVyIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGRla2FyZXNlYXJjaC5jb20+Ci0KLSAgICBFZGl0ZWQgY29tbWl0IG1lc3NhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzU2OWFkNmUxZTg3NjhhMGZlYzUxM2ZmYzE1NjQxMjI0MGI3ZWIzNQotQXV0aG9yOiBXZXJuZXIgUGZpc3RlciA8d2VybmVyLnBmaXN0ZXJAaW50ZXJjb250cm9sLmRlPgotRGF0ZToJTW9uIFNlcCAyMSAxNDo0OTo1NiAyMDA5ICswMjAwCi0KLSAgICBkaWdzeV9tdGM6IEFkZCBUQ1IgcmVnaXN0ZXIgdmFsdWUgZm9yIFJUQyAoRFMxMzM5KQotCi0gICAgU2lnbmVkLW9mZi1ieTogV2VybmVyIFBmaXN0ZXIgPHdlcm5lci5wZmlzdGVyQGludGVyY29udHJvbC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGIwMDc4Yzg3OTJiYWRkODFhZWQ1MWI3ZWFiZTg1ZTk2MDAzNjM2MWMKLUF1dGhvcjogV2VybmVyIFBmaXN0ZXIgPHdlcm5lci5wZmlzdGVyQGludGVyY29udHJvbC5kZT4KLURhdGU6CU1vbiBTZXAgMjEgMTQ6NDk6NTUgMjAwOSArMDIwMAotCi0gICAgcnRjL2RzMTMzNy5jOiBBbGxvdyB0byBzZXQgVENSIHJlZ2lzdGVyCi0KLSAgICBUaGlzIGlzIG5lZWRlZCB0byBjb3JyZWN0bHkgc3RhcnQgdGhlIGNoYXJnaW5nIG9mIGFuIGF0dGFjaGVkIGNhcGFjaXRvcgotICAgIG9yIGJhdHRlcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXZXJuZXIgUGZpc3RlciA8d2VybmVyLnBmaXN0ZXJAaW50ZXJjb250cm9sLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgOWQ3OTUyZTRjNjM2YjhjOTkyODlhNDRkYmUyOGM2ZjkzYzQzYjlmNwotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglUdWUgU2VwIDE1IDA5OjUzOjI5IDIwMDkgKzAyMDAKLQotICAgIHViaWZzOiBBZGQgc3VwcG9ydCBmb3IgbG9va2luZyB1cCBkaXJlY3RvcnkgYW5kIHJlbGF0aXZlIHN5bWxpbmtzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmVzb2x2aW5nIHN5bWxpbmtzIHRvIGRpcmVjdG9yaWVzIGFzIHdlbGwgYXMKLSAgICByZWxhdGl2ZSBzeW1saW5rcy4gU3ltbGlua3MgYXJlIG5vdyBhbHdheXMgcmVzb2x2ZWQgZHVyaW5nIGZpbGUgbG9va3VwLAotICAgIHNvIHRoZSBsb2FkIHN0YWdlIG5vIGxvbmdlciBuZWVkcyB0byBzcGVjaWFsLWNhc2UgdGhlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmY2RiMzZiODVhYzAzM2MwOWE5NzYyYTBhMTQ4MDhmN2NiMmVkNTRjCi1BdXRob3I6IFJ1cGp5b3RpIFNhcm1haCA8cnNhcm1haEBhbWNjLmNvbT4KLURhdGU6CU1vbiBTZXAgMjEgMTE6MjY6MTkgMjAwOSAtMDcwMAotCi0gICAgcHBjNHh4OiBGaXggUENJRSBQTEwgbG9jayBvbiA0NDBTUGUgWXVjY2EgYm9hcmQKLQotICAgIHUtYm9vdCByZXBvcnRzIGEgUENJRSBQTEwgbG9jayBlcnJvciBhdCBib290IHRpbWUgb24gWXVjY2EgYm9hcmQsIGFuZAotICAgIGxlZnQgUENJZSBub25mdW5jdGlvbmFsLiBUaGlzIGlzIGZpeGVkIGJ5IG1ha2luZyB1LWJvb3QgZnVuY3Rpb24KLSAgICBwcGM0eHhfaW5pdF9wY2llKCkgdG8gd2FpdCAzMDAgdVMgYWZ0ZXIgbmVnYXRpbmcgcmVzZXQgYmVmb3JlIHRoZQotICAgIGZpcnN0IGNoZWNrIG9mIHRoZSBQTEwgbG9jay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJ1cGp5b3RpIFNhcm1haCA8cnNhcm1haEBhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5MWQ1OTkwNDRjYWFjNGE4YzIyODExNWIxNmNmM2IwNzNmOTAyMDgwCi1BdXRob3I6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci1EYXRlOglNb24gU2VwIDIxIDEzOjI3OjE0IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogTWFrZSBERFIyIHRpbWluZyBmb3IgaW50aXAgbW9yZSByb2J1c3QKLQotICAgIEREUjIgdGltaW5nIGZvciBpbnRpcCB3YXMgb24gdGhlIGVkZ2UgZm9yIHNvbWUgb2YgdGhlIGF2YWlsYWJsZSBjaGlwcwotICAgIGZvciB0aGlzIGJvYXJkLiBOb3cgaXQgaXMgdmVyZmllZCB0byB3b3JrIHdpdGggYWxsIG9mIHRoZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE4NGEzYTI3ZjVjZDJjNjQ2NjZmNzRkZjk0Yzg2Yjk0YzQzODNlZjgKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgMTUgMDA6MjY6MDIgMjAwOSArMDIwMAotCi0gICAgYm9hcmQvbGlua3N0YXRpb24vaWRlLmM6IEZpeCBjb21waWxlIHdhcm5pbmcKLQotICAgIEZpeCB3YXJuaW5nOiBpZGUuYzo2MDogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwKLSAgICBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IDAwNGVjYTBjOWJhMzI4ZGU0NTdkNWRjOWVmODgwNTYzOWRmZWY4OTMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVdlZCBTZXAgMTYgMjI6MDM6MDggMjAwOSAtMDUwMAotCi0gICAgcHBjOiBDbGVhbiB1cCBjYWxsaW5nIG9mIHBoeV9yZXNldCgpIGR1cmluZyBpbml0Ci0KLSAgICBSZW1vdmUgYm9hcmQtc3BlY2lmaWMgI2lmZGVmcyBmb3IgY2FsbGluZyBwaHlfcmVzZXQoKSBkdXJpbmcKLSAgICBpbml0aWFsaXp0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgM2E4ZjI4ZDBhNmQ5Zjg1MDUwMTc2ODAyMzMwNjRjMTNlNDU4NzE3NAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJV2VkIFNlcCAxNiAyMjowMzowNyAyMDA5IC0wNTAwCi0KLSAgICBwcGM6IENsZWFuIHVwIGNhbGxpbmcgb2YgbWlzY19pbml0X3IoKSBkdXJpbmcgaW5pdAotCi0gICAgUmVtb3ZlIGJvYXJkLXNwZWNpZmljICNpZmRlZnMgZm9yIGNhbGxpbmcgbWlzY19pbml0X3IoKSBkdXJpbmcKLSAgICBpbml0aWFsaXp0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDMyMDJkMzMxNjlkZjA0ZGE1Y2YzZGVhOGM1YWIwYTkwMmI5MGVjYWEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVdlZCBTZXAgMTYgMjE6Mzg6MTAgMjAwOSAtMDUwMAotCi0gICAgUmVtb3ZlIGRlcHJlY2F0ZWQgJ2F1dG9zY3InIGNvbW1hbmQvdmFyaWFibGVzCi0KLSAgICBUaGUgbW9yZSBzdGFuZGFyZCAnc291cmNlJyBjb21tYW5kIHByb3ZpZGVzIGlkZW50aWNhbCBmdW5jdGlvbmFsaXR5IHRvCi0gICAgdGhlIGF1dG9zY3IgY29tbWFuZC4KLQotICAgIEVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzL3ZhbHVlcyBvbiB0aGUgTVZCQ19QLCBNVkJNTDcsIGttZXRlcjEsCi0gICAgbWdjb2dlLCBhbmQga204eHggYm9hcmRzIGFyZSB1cGRhdGVkIHRvIG5vIGxvbmdlciByZWZlcm5jZSAnYXV0b3NjcicuCi0KLSAgICBUaGUgJ2F1dG9zY3JpcHQnIGFuZCAnYXV0b3NjcmlwdF91bmFtZScgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFyZQotICAgIGFsc28gcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLSAgICBBY2tlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBkM2Y0OTQxODc0YTIwZDhhMzkwYTM2YmE3MTMzNWFlMWRiMmY5YmEwCi1BdXRob3I6IFBhdWwgR2lic29uIDxwYXVsLmdpYnNvbjIwNzRAZ21haWwuY29tPgotRGF0ZToJV2VkIFNlcCAxNiAxMDowNTowMCAyMDA5ICsxMDAwCi0KLSAgICBtcGM1MTJ4LiBNaWNyb24gbmFuZCBmbGFzaCBuZWVkcyBhIHJlc2V0IGJlZm9yZSBhIHJlYWQgY29tbWFuZCBpcyBpc3N1ZWQuCi0KLSAgICBNaWNyb24gbmFuZCBmbGFzaCBuZWVkcyBhIHJlc2V0IGJlZm9yZSBhIHJlYWQgY29tbWFuZCBpcyBpc3N1ZWQuCi0gICAgVGhlIGN1cnJlbnQgbXBjNTEyMV9uZmMgZHJpdmVyIGlnbm9yZXMgdGhlIHJlc2V0IGNvbW1hbmQuCi0KLWNvbW1pdCBiNTVhZTQwMjQ5NTQ1ZWFiYjlkNmJmYjg1MGIxNDAwYTMyNTYxYjFmCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CVdlZCBTZXAgOSAyMToxODo0MSAyMDA5ICswMjAwCi0KLSAgICBGRFQ6IHJlbW92ZSBvYnNvbGV0ZSBPRl9DUFUgYW5kIE9GX1NPQyBtYWNyb3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbC56aXN3aWxlckBub3Nlci5jb20+Ci0gICAgQWNrZWQtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgotICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDNiNmE5MjY3ZjBkZTdiODVkMzg3ZmE0MTIzZDBiNTgzNzkzNjM0NDcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgMTUgMDA6MDk6MjEgMjAwOSArMDIwMAotCi0gICAgYm9hcmQvZmxhZ2FkbS9mbGFzaC5jOiBmaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBGaXggd2FybmluZzogZmxhc2guYzo1MzE6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcgotICAgIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBL4XJpIERhdu3wc3NvbiA8a2RAZmxhZ2EuaXM+Ci0KLWNvbW1pdCAwNDEzY2ZlY2VhMzUwMDAwZWFiNWU1OTFhMDk2NWMzZTNlZTBmZjAwCi1BdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLURhdGU6CVRodSBTZXAgMTcgMTU6MTU6NTIgMjAwOSArMDIwMAotCi0gICAgQ29ycmVjdCBmZnMvZmxzIHJlZ3Jlc3Npb24gZm9yIFBvd2VyUEMgZXRjCi0KLSAgICBDb21taXRzCi0KLSAgICAgIDAyZjk5OTAxZWQxYzlkODI4ZTNlYTExN2Y5NGNlMjI2NGJmODM4OWUKLSAgICAgIDUyZDYxMjI3YjY2ZDQwOTliMzljODMwOWFiMzdjYjY3ZWUwOWE0MDUKLQotICAgIGludHJvZHVjZWQgYSByZWdyZXNzaW9uIHdoZXJlIHBsYXRmb3JtLXNwZWNpZmljIGZmcy9mbHMgaW1wbGVtZW50YXRpb25zCi0gICAgd2VyZSBkZWZpbmVkIGF3YXkuIFRoaXMgcGF0Y2ggY29ycmVjdHMgdGhhdCBieSB1c2luZyBQTEFURk9STV94eHgKLSAgICBpbnN0ZWFkIG9mIHRoZSBuYW1lIGl0c2VsZi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZTY3YWY0NGQwMTY3ZDgyMzdkZDJjMmRkZjhlMzAxZDE5Y2ExMjkxNAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gU2VwIDE0IDExOjEzOjM0IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQ29uc29saWRhdGUgZ2V0X09QQl9mcmVxKCkKLQotICAgIEFsbCA0eHggdmFyaWFudHMgaGFkIHRoZWlyIG93biwgbW9zdGx5IGlkZW50aWNhbCBnZXRfT1BCX2ZyZXEoKQotICAgIGZ1bmN0aW9uLiBTb21lIHZhcmlhbnRzIGV2ZW4gb25seSBoYWQgdGhlIE9QQiBmcmVxdWVuY3kgY2FsY3VsYXRlZAotICAgIGluIHRoaXMgcm91dGluZSBhbmQgbm90IHN1cHBsaWVkIHRoZSBzeXNfaW5mby5mcmVxT1BCIHZhcmlhYmxlCi0gICAgY29ycmVjdGx5IChlLmcuIDQwNUVaKS4gVGhpcyByZXN1bHRlZCBpbiBpbmNvcnJlY3QgT1BCIHZhbHVlcyBwYXNzZWQKLSAgICB2aWEgdGhlIEZEVCB0byBMaW51eC4KLQotICAgIFRoaXMgcGF0Y2ggbm93IHJlbW92ZXMgYWxsIHRob3NlIGNvcGllcyBhbmQgb25seSB1c2VzIG9uZSBmdW5jdGlvbgotICAgIGZvciBhbGwgNHh4IHZhcmlhbnRzIChleGNlcHQgZm9yIElPUDQ4MCB3aGljaCBkb2Vzbid0IGhhdmUgYW4gT1BCKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg0YTQ1ZDMzYzJjYzI2MWRiZDU0MTFmN2MyYWQ0NWY2MDAzMDI1YjYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCAxMSAxNzowOTo0NSAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEVuYWJsZSBjb21tYW5kcyBmb3IgRkRUIGVuYWJsZWQgTGludXggYm9vdGluZyBvbiBBTUNDIEFjYWRpYQotCi0gICAgQWNhZGlhIHN0aWxsIHVzZWQgdGhlICJvbGQiIGFyY2gvcHBjIGJvb3RtIGNvbW1hbmRzIGZvciBib290aW5nCi0gICAgTGludXggaW1hZ2VzIHdpdGhvdXQgRkRULiBUaGlzIHBhdGNoIG5vdyBlbmFibGVzIHRoZXNlIGZkdC1hd2FyZQotICAgIGJvb3QgY29tbWFuZHMgZm9yIEFjYWRpYSBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTVhNGE1OTNiNTc3YjZlMmYxZGEyZDRiMGY1ZWM4Njk3NWMzMzQxMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDExIDE3OjA3OjU1IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IDQwNUVaIHVhcnQgYmFzZSBiYXVkIGNhbGN1bGF0aW9uCi0KLSAgICBXaXRoIHRoaXMgZml4LCBMaW51eCBjb3JyZWN0bHkgY29uZmlndXJlcyB0aGUgYmF1ZHJhdGUgd2hlbiBib290aW5nCi0gICAgd2l0aCBGRFQgcGFzc2VkIGZyb20gVS1Cb290IHRvIExpbnV4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTVmYmEzMjc5YjU2MzMzYmRiNjVlYWQzNjZmODJjOTQ1ZWQzMjBkMQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIFNlcCAxMSAxNToyODo0MSAyMDA5IC0wNTAwCi0KLSAgICBwcGMvODV4eDogRGlzYWJsZSBhbGwgYXN5bmMgaW50ZXJydXB0IHNvdXJjZXMgd2hlbiB3ZSBib290Ci0KLSAgICBXZSBzaG91bGQgbWFrZSBzdXJlIHRvIGNsZWFyIE1TUltNRSwgQ0UsIERFXSB3aGVuIHdlIGJvb3QgYW4gT1MgaW1hZ2UKLSAgICBzaW5jZSB3ZSBoYXZlIGNoYW5nZWQgdGhlIGV4Y2VwdGlvbiB2ZWN0b3JzIGFuZCB0aGUgT1NlcyB2ZWN0b3JzIG1pZ2h0Ci0gICAgbm90IGJlIHNldHVwIHdlIHNob3VsZCBhdm9pZCBhc3luYyBpbnRlcnJ1cHRzIGF0IGFsbCBjb3N0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5ZjAwNDA5YTlkMDRjZjUzMzMwNTUzMWRhMzI0MzcxMzA4MDJmM2EzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgU2VwIDExIDEzOjUyOjQ1IDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBTcGxpdCBvdXQgY3B1X2luaXRfZWFybHkgaW50byBpdHMgb3duIGZpbGUgZm9yIE5BTkRfU1BMCi0KLSAgICBCeSBwdWxsaW5nIG91dCBjcHVfaW5pdF9lYXJseSB3ZSBjYW4gYnVpbGQganVzdCBpdCBhbmQgbm90IGFsbCBvZgotICAgIGNwdV9pbml0IGZvciBOQU5EX1NQTC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwNDU2ZGJmMzQ3NWQwYWVjNDI4NzNhOTY3YWM5N2VkODFmMzc2MTE5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgU2VwIDExIDEzOjQxOjQ5IDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBDaGFuZ2UgY3B1X2luaXRfZWFybHlfZiBzbyB3ZSBjYW4gdXNlIHdpdGggTkFORCBTUEwKLQotICAgIFVzZSB3cml0ZV90bGIgYW5kIGRvbid0IHVzZSBtZW1zZXQgc28gd2UgY2FuIHVzZSB0aGUgc2FtZSBjb2RlIGZvcgotICAgIGNwdV9pbml0X2Vhcmx5X2YgYmV0d2VlbiBOQU5EIFNQTCBhbmQgbm90LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDZlMTM4NWQ1ZjhkMTM3ZTc0MWRmZWYwMjQ2NWQ3ZGMzMjgwNDBhZDcKLUF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIFNlcCAxMSAxMDo1MzowOCAyMDA5ICswODAwCi0KLSAgICBOQU5EIGJvb3Q6IGNoYW5nZSBOQU5EIGxvYWRlcidzIHJlbG9jYXRlIFNQIHRvIENPTkZJRyBwYXJhbQotCi0gICAgU28gdGhhdCB3ZSBjYW4gc2V0IHRoZSBOQU5EIGxvYWRlcidzIHJlbG9jYXRlIHN0YWNrIHBvaW50ZXIKLSAgICB0byB0aGUgdmFsdWUgb3RoZXIgdGhhbiB0aGUgcmVsb2NhdGUgYWRkcmVzcyArIDB4MTAwMDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3ZGE1MzM1MWQ4MTdjNmQ3NzM2NGNmZGU5MjI4OTFmMzdkMGU1ZWQ4Ci1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBTZXAgMTEgMTQ6MTk6MTAgMjAwOSArMDgwMAotCi0gICAgcHBjLzg1eHg6IGFkZCBib290IGZyb20gTkFORC9lU0RIQy9lU1BJIHN1cHBvcnQKLQotICAgIFRoZSBNUEM4NTM2RSBpcyBjYXBhYmxlIG9mIGJvb3RpbmcgZm9ybSBOQU5EL2VTREhDL2VTUEksIHRoaXMgcGF0Y2gKLSAgICBpbXBsZW1lbnRzIHRoZXNlIHRocmVlIGJvb3R1cCBtZXRob2RzIGluIGEgdW5pZmllZCB3YXkgLSBhbGwgb2YgdGhlc2UKLSAgICB1c2UgdGhlIGdlbmVyYWwgY3B1L21wYzg1eHgvc3RhcnQuUywgYW5kIGxvYWQgdGhlIG1haW4gaW1hZ2UgdG8gTDJTUkFNCi0gICAgd2hpY2ggbGV0cyB1cyB1c2UgdGhlIFNQRCB0byBpbml0aWFsaXplIHRoZSBTRFJBTS4KLQotICAgIEZvciBhbGwgdGhyZWUgYm9vdHVwIG1ldGhvZHMsIHRoZSBib290dXAgcHJvY2VzcyBjYW4gYmUgZGl2aWRlZCBpbnRvIHR3bwotICAgIHN0YWdlczogdGhlIGZpcnN0IHN0YWdlIHdpbGwgaW5pdGlhbGl6ZSB0aGUgY29ycmVzcG9uZGluZyBjb250cm9sbGVyLAotICAgIGNvbmZpZ3VyZSB0aGUgTDJTUkFNLCB0aGVuIGNvcHkgdGhlIHNlY29uZCBzdGFnZSBpbWFnZSB0byBMMlNSQU0gYW5kCi0gICAganVtcCB0byBpdC4gVGhlIHNlY29uZCBzdGFnZSBpbWFnZSBpcyBqdXN0IGxpa2UgdGhlIGdlbmVyYWwgVS1Cb290IGltYWdlCi0gICAgdG8gY29uZmlndXJlIGFsbCB0aGUgaGFyZHdhcmUgYW5kIGJvb3QgdXAgdG8gVS1Cb290IGNvbW1hbmQgbGluZS4KLQotICAgIFdoZW4gYm9vdCBmcm9tIE5BTkQsIHRoZSBlTEJDIGNvbnRyb2xsZXIgd2lsbCBmaXJzdCBsb2FkIHRoZSBmaXJzdCBzdGFnZQotICAgIGltYWdlIHRvIGludGVybmFsIDRLIFJBTSBidWZmZXIgYmVjYXVzZSBpdCdzIGFsc28gc3RvcmVkIG9uIHRoZSBOQU5ECi0gICAgZmxhc2guIFRoZSBmaXJzdCBzdGFnZSBpbWFnZSwgYWxzbyBjYWxsIDRLIE5BTkQgbG9hZGVyLCB3aWxsIGluaXRpYWxpemUKLSAgICB0aGUgTDJTUkFNLCBsb2FkIHRoZSBzZWNvbmQgc3RhZ2UgaW1hZ2UgdG8gTDJTUkFNIGFuZCBqdW1wIHRvIGl0LiBUaGUgNEsKLSAgICBOQU5EIGxvYWRlcidzIGNvZGUgY29tZXMgZnJvbSB0aGUgY29ycmVzcG9uZGluZyBuYW5kX3NwbCBkaXJlY3RvcnksIGFsb25nCi0gICAgd2l0aCB0aGUgY29kZSB0d2lzdGVkIGJ5IENPTkZJR19OQU5EX1NQTC4KLQotICAgIFdoZW4gYm9vdCBmcm9tIGVTREhDL2VTUEksIHRoZXJlJ3Mgbm8gc3VjaCBhIGZpcnN0IHN0YWdlIGltYWdlIGJlY2F1c2UKLSAgICB0aGUgQ1BVIFJPTSBjb2RlIGRvZXMgdGhlIHNhbWUgd29yay4gSXQgd2lsbCBpbml0aWFsaXplIHRoZSBMMlNSQU0KLSAgICBhY2NvcmRpbmcgdG8gdGhlIGNvbmZpZyBhZGRyL3dvcmQgcGFpcnMgb24gdGhlIGZpeGVkIGFkZHJlc3MgYW5kCi0gICAgaW5pdGlhbGl6ZSB0aGUgZVNESEMvZVNQSSBjb250cm9sbGVyLCB0aGVuIGxvYWQgdGhlIHNlY29uZCBzdGFnZSBpbWFnZQotICAgIHRvIEwyU1JBTSBhbmQganVtcCB0byBpdC4KLQotICAgIFRoZSBtYWNybyBDT05GSUdfU1lTX1JBTUJPT1QgaXMgdXNlZCB0byBjb250cm9sIHRoZSBjb2RlIHRvIHByb2R1Y2UgdGhlCi0gICAgc2Vjb25kIHN0YWdlIGltYWdlIGZvciBhbGwgZGlmZmVyZW50IGJvb3R1cCBtZXRob2RzLiBJdCdzIHNldCBpbiB0aGUKLSAgICBib2FyZCBjb25maWcgZmlsZSB3aGVuIG9uZSBvZiB0aGUgYm9vdHVwIG1ldGhvZHMgYWJvdmUgaXMgc2VsZWN0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGIyZWVjMjgxYTgxMWJiNTI5NDFmNjEyMDNkOGZlMzUyNTZiMzU4MmMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBTZXAgMTEgMTI6MzI6MDEgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IE1vdmUgY29kZSBhcm91bmQgdG8gcHJlcCBmb3IgTkFORF9TUEwKLQotICAgIElmIHdlIG1vdmUgc29tZSBvZiB0aGUgZnVuY3Rpb25zIGluIHRsYi5jIGFyb3VuZCB3ZSBuZWVkIGxlc3MKLSAgICBpZmRlZnMuICBUaGUgZmlyc3Qgc3RhZ2UgbG9hZGVyIGp1c3QgbmVlZHMgaW52YWxpZGF0ZV90bGIgYW5kCi0gICAgaW5pdF90bGJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIwNmFmMzUyN2MwNWU1MjBlMjhkMzhhNDhhMWQxNTQzM2UzNDY3NWQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBTZXAgMTEgMTE6MzA6MzAgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IFJlcGFjayB0bGJfdGFibGUgdG8gc2F2ZSBzcGFjZQotCi0gICAgV2UgY2FuIHBhY2sgdGhlIGluaXRpYWwgdGxiX3RhYmxlIGluIE1BUyByZWdpc3RlciBmb3JtYXQgYW5kIHVzZQotICAgIHdyaXRlX3RsYiB0byBzZXQgdGhpbmdzIHVwLiAgVGhpcyBzYXZpbmdzIGNhbiBiZSBoZWxwZnVsIGZvciBOQU5ECi0gICAgc3R5bGUgZmlyc3Qgc3RhZ2UgYm9vdCBsb2FkZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGQzMGY5MDQzNTM5ZDM3MmNmNjY0MDZiYzJmMjFiYjhjMjBlNjcwMDkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBTZXAgMTEgMTE6Mjc6MDAgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IEludHJvZHVjZSBsb3cgbGV2ZWwgd3JpdGVfdGxiIGZ1bmN0aW9uCi0KLSAgICBGYWN0b3Igb3V0IHRoZSBjb2RlIHdlIHVzZSB0byBhY3R1YWxseSB3cml0ZSBhIHRsYiBlbnRyeS4KLQotICAgIHNldF90bGIgaXMgYSBsb2dpY2FsIHZpZXcgb2YgdGhlIFRMQiB3aGlsZSB3cml0ZV90bGIgaXMgYSBsb3cgbGV2ZWwKLSAgICBtYXRjaGluZyB0aGUgTUFTIHJlZ2lzdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwZWFkNmYyZWQ3Y2Y0ZTFmNzBkYWI1YjUyOWFkMTIxZTM4MzU5NDg1Ci1BdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBTZXAgMTAgMTQ6NDQ6NDggMjAwOSArMDgwMAotCi0gICAgcHBjLzg1eHg6IEVuYWJsZSB1c2IgZWhjaSBzdXBwb3J0IGZvciBwMjAyMGRzIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDZkODU2NWExZWQ1YWNiMDFiYWQ0YTRjZDc0YTkzYmU1ZjdmYjdmN2MKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBTZXAgMTAgMTQ6NTQ6NTUgMjAwOSAtMDUwMAotCi0gICAgcHBjLzh4eHg6IE1pc2MgRERSIHJlbGF0ZWQgZml4ZXMKLQotICAgICogRml4IHNldHRpbmcgb2YgRVNETU9ERSAoTVIxKSByZWdpc3RlciAtIHRoZSBiaXQgc2hpZnRpbmcgd2FzIHdyb25nCi0gICAgKiBGaXggdGhlIGZvcm1hdCBzdHJpbmcgdG8gbWF0Y2ggc2l6ZSBpbiBhIGRlYnVnIHByaW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgM2UzYzljMTU3Yjg5ZWFiMmRjMmY4OTc4OTliMWI5NWNkNzBjMWE1OAotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMjAgMTc6NDU6MDAgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IFJlbW92ZSBzb21lIGJvZ3VzIGNvZGUgZnJvbSBleHRlcm5hbCBpbnRlcnJ1cHQgaGFuZGxlci4KLQotICAgIFNraXBwaW5nIHRoZSBpbnRlcnJ1cHRlZCBpbnN0cnVjdGlvbiB3aWxsIGFjY29tcGxpc2ggbm90aGluZyBvdGhlcgotICAgIHRoYW4gdHVybmluZyBhIHNwdXJpb3VzIGludGVycnVwdCBpbnRvIGEgY3Jhc2guCi0KLSAgICBFeHRlcm5hbCBpbnRlcnJ1cHRzIGFyZSBub3QgbWFjaGluZSBjaGVja3MsIHNvIGRvbid0IGNvdW50IHRoZW0gYXMgc3VjaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGNjODdkZDU4ZGI0NjZjYWEyZDY2NzU1YzVlYzk0NTVlZGY0MmZlOAotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMjAgMTc6NDU6MDUgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IEVuc3VyZSB0aGF0IE1BUzggaXMgemVybyB3aGVuIHdyaXRpbmcgVExCIGVudHJpZXMuCi0KLSAgICBJdHMgcmVzZXQgdmFsdWUgaXMgcmFuZG9tLCBhbmQgd2Ugc29tZXRpbWVzIHJlYWQgdW5pbml0aWFsaXplZCBUTEIKLSAgICBhcnJheXMuICBNYWtlIHN1cmUgdGhhdCB3ZSBkb24ndCByZXRhaW4gTUFTOCBmcm9tIHJlYWRpbmcgc3VjaCBhbiBlbnRyeQotICAgIGlmIHRoZSBWRiBiaXQgaW4gTUFTOCBpcyBzZXQsIGF0dGVtcHRzIHRvIHVzZSB0aGUgbWFwcGluZyB3aWxsIHRyYXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFiNzJkYmVjY2EyZDdhZDdhMjFjOTJkODAyMjdkYWEyZDhlYzVhNTcKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDIwIDE3OjQ0OjIwIDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBEb24ndCBlbmFibGUgaW50ZXJydXB0cyBiZWZvcmUgd2UncmUgcmVhZHkKLQotICAgIFdlIGNhbm5vdCBoYW5kbGUgYW55IGV4Y2VwdGlvbnMgd2hpbGUgcnVubmluZyBpbiBBUzEsIGFzIHRoZSBleGNlcHRpb25zCi0gICAgd2lsbCB0cmFuc2l0aW9uIGJhY2sgdG8gQVMwIHdpdGhvdXQgYSB2YWxpZCBtYXBwaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzY2E1NWJjZTljOGJmMDBkZjA2YTIwNDg3ZmFmYzE2ZmEyZjgwODRiCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CUZyaSBTZXAgMTEgMDc6NTA6MzMgMjAwOSAtMDQwMAotCi0gICAgbXBjODI2MDogcmVtb3ZlIEV0aGVybmV0IG5vZGUgZml4dXAgdG8gdXNlIGdlbmVyaWMgRkRUIGNvZGUuCi0KLSAgICBSZW1vdmUgRXRoZXJuZXQgbm9kZSBmaXh1cCBmcm9tIG1nY29nZSBhbmQgbXVhczMwMDEgYm9hcmRzIGFuZCBtb2RpZnkgaXRzCi0gICAgY29uZmlncyBmb3IgdGhlIGNvbW1vbiBtcGM4MjYwIGNvZGUgdG8gdXNlIGdlbmVyaWMgRXRoZXJuZXQgZml4dXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbC56aXN3aWxlckBub3Nlci5jb20+Ci0gICAgVGVzdGVkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDFjMjBlNGE5ZmJjNTMxZTIxNDlhZTA2MWU4NTgzZjVmYWQ4MmYxNjMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIFNlcCA5IDEyOjIwOjIxIDIwMDkgLTA0MDAKLQotICAgIHRvb2xzL25ldGNvbnNvbGU6IHVzZSBuY2IgYXV0b21hdGljYWxseSBpZiBhdmFpbGFibGUKLQotICAgIFRoZSBzdGFuZGFyZCBuZXRjYXQsIHdoaWxlIHViaXF1aXRvdXMsIGRvZXNuJ3QgaGFuZGxlIGJyb2FkY2FzdCB1ZHAgcGFja2V0cwotICAgIHByb3Blcmx5LiAgVGhlIGxvY2FsIG5jYiB1dGlsIGRvZXMgaG93ZXZlci4gIFNvIGlmIG5jYiBjYW4gYmUgbG9jYXRlZCBpbgotICAgIHRoZSBzdGFuZGFyZCBsb2NhdGlvbnMsIGF1dG9tYXRpY2FsbHkgdXNlIHRoYXQgaW5zdGVhZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDc3MDkzMTgwNWQyOTI5MDhhNTdhM2QyYzVmOWE0ZmNkZTg4OGI1YTIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIFNlcCA5IDEyOjIwOjIwIDIwMDkgLTA0MDAKLQotICAgIHRvb2xzL25ldGNvbnNvbGU6IG1ha2UgYSBiaXQgbW9yZSByb2J1c3QKLQotICAgIFRoZSBuZXRjYXQgdXRpbGl0eSBsaWtlcyB0byBleGl0IHdoZW4gaXQgcmVjZWl2ZXMgYW4gZW1wdHkgcGFja2V0IChhcyBpdAotICAgIHRoaW5rcyB0aGlzIG1lYW5zIEVPRikuICBUaGlzIGNhbiBlYXNpbHkgb2NjdXIgd2hlbiB3b3JraW5nIHdpdGggY29tbWFuZAotICAgIGxpbmUgZWRpdGluZyBhcyB0aGlzIGJlaGF2aW9yIHdpbGwgYmUgdHJpZ2dlcmVkIHdoZW4gdXNpbmcgYmFja3NwYWNlLiAgT3IKLSAgICB3aXRoIHRhYnMgYW5kIGNvbW1hbmQgbGluZSBjb21wbGV0aW9uLiAgU28gY3JlYXRlIHR3byBuZXRjYXQgcHJvY2Vzc2VzIC0KLSAgICBvbmUgdG8gb25seSBsaXN0ZW4gKGFuZCBwdXQgaXQgaW50byBhIGxvb3ApLCBhbmQgb25lIHRvIGRvIHRoZSBzZW5kaW5nLgotICAgIE9uY2UgdGhlIHVzZXIgcXVpdHMgdGhlIHRyYW5zbWl0dGluZyBuZXRjYXQsIHRoZSBsaXN0ZW5pbmcgb25lIHdpbGwgYmUKLSAgICBraWxsZWQgYXV0b21hdGljYWxseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGE2ZTE5ZDY5ZjYzYzE0Yjc2NzJjNjVjYTRiMDE0NjIxYzZmZDAyMDEKLUF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotRGF0ZToJTW9uIEF1ZyAyNCAwOToxMDoxNiAyMDA5ICswMjAwCi0KLSAgICBhcm06IERlZmluZSB0ZXN0X2FuZF9zZXRfYml0IGFuZCB0ZXN0X2FuZF9jbGVhciBiaXQgZm9yIEFSTQotCi0gICAgTmVlZGVkIGZvciAoZS5nLikgdWJpZnMgc3VwcG9ydCB0byB3b3JrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotCi1jb21taXQgNTJkNjEyMjdiNjZkNDA5OWIzOWM4MzA5YWIzN2NiNjdlZTA5YTQwNQotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglNb24gQXVnIDI0IDA5OjEwOjEyIDIwMDkgKzAyMDAKLQotICAgIERlZmluZSBmZnMvZmxzIGZvciBhbGwgYXJjaGl0ZWN0dXJlcwotCi0gICAgVUJJRlMgcmVxdWlyZXMgZmxzKCksIHdoaWNoIGlzIG5vdCBkZWZpbmVkIGZvciBhcm0gKGFuZCBzb21lIG90aGVyCi0gICAgYXJjaGl0ZWN0dXJlcykgYW5kIHRoaXMgcGF0Y2ggYWRkcyBpdC4gVGhlIGltcGxlbWVudGF0aW9uIGlzIHRha2VuIGZyb20KLSAgICBMaW51eCBhbmQgaXMgZ2VuZXJpYy4gZmZzKCkgaXMgYWxzbyBkZWZpbmVkIGZvciB0aG9zZSB0aGF0IG1pc3MgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0KLWNvbW1pdCA0YjE1ZGUwOGZlNGQyYzlkMTJhMzc2NDM5NDczMTAxOGE3NjMyMTZiCi1BdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLURhdGU6CU1vbiBBdWcgMjQgMDk6MTA6MDMgMjAwOSArMDIwMAotCi0gICAgYXJtOiBNYWtlIGFybSBiaXRvcHMgZW5kaWFubmVzcy1pbmRlcGVuZGVudAotCi0gICAgQnJpbmcgb3ZlciB0aGUgYml0b3AgaW1wbGVtZW50YXRpb25zIGZyb20gdGhlIExpbnV4Ci0gICAgaW5jbHVkZS9hc20tZ2VuZXJpYy9iaXRvcHMvbm9uLWF0b21pYy5oIHRvIHByb3ZpZGUKLSAgICBlbmRpYW5uZXNzLWluZGVwZW5kZW5jZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLQotY29tbWl0IDAyZjk5OTAxZWQxYzlkODI4ZTNlYTExN2Y5NGNlMjI2NGJmODM4OWUKLUF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotRGF0ZToJTW9uIEF1ZyAyNCAwOTowOTo1MCAyMDA5ICswMjAwCi0KLSAgICBNb3ZlIF9fc2V0L2NsZWFyX2JpdCBmcm9tIHViaWZzLmggdG8gYml0b3BzLmgKLQotICAgIF9fc2V0X2JpdCBhbmQgX19jbGVhcl9iaXQgYXJlIGRlZmluZWQgaW4gdWJpZnMuaCBhcyB3ZWxsIGFzIGluCi0gICAgYXNtL2luY2x1ZGUvYml0b3BzLmggZm9yIHNvbWUgYXJjaGl0ZWN0dXJlcy4gVGhpcyBwYXRjaCBtb3ZlcwotICAgIHRoZSBnZW5lcmljIGltcGxlbWVudGF0aW9uIHRvIGluY2x1ZGUvbGludXgvYml0b3BzLmggYW5kIHVzZXMKLSAgICB0aGF0IHVubGVzcyBpdCdzIGRlZmluZWQgYnkgdGhlIGFyY2hpdGVjdHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLQotY29tbWl0IDU1NzU1NWZlMGI4Mjk0MGJhN2NjNjlmODFkMzFkNmVmNGQ0OTMzYjQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIFNlcCA0IDE5OjU0OjQ1IDIwMDkgLTA0MDAKLQotICAgIHN0YW5kYWxvbmU6IGNvbnZlcnQgdG8ga2J1aWxkIHN0eWxlCi0KLSAgICBDbGVhbiB1cCB0aGUgYXJjaC9jcHUvYm9hcmQvY29uZmlnIGNoZWNrcyBhcyB3ZWxsIGFzIHJlZHVuZGFudCBzZXR0aW5nIG9mCi0gICAgc3JlYy9iaW4gdmFyaWFibGVzIGJ5IHVzaW5nIHRoZSBrYnVpbGQgVkFSLSQoLi4uKSBzdHlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDgwNGQ4M2E1NjNjNDdiNTVlMWYxNGY1ZGUzYjZlOWQ3ZTJhN2VmNWUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgMTUgMjI6MTI6MzEgMjAwOSArMDIwMAotCi0gICAgbWtjb25maWc6IHNwbGl0IHRoZSBib2FyZCBtYWtlIHRhcmdldCB0byBtdWx0aXBsZSBjb25maWcgdGFyZ2V0cwotCi0gICAgVG8gc2ltcGxpZnkgdGhlIHRvcCBsZXZlbCBtYWtlZmlsZSBpdCB1c2VmdWwgdG8gYmUgYWJsZSB0byBwYXJzZQotICAgIHRoZSB0b3AgbGV2ZWwgbWFrZWZpbGUgdGFyZ2V0IHRvIG11bHRpcGxlIGluZGl2aWR1YWwgdGFyZ2V0LCB0aGVuCi0gICAgcHV0IHRoZW0gdG8gdGhlIGNvbmZpZy5oLCBsZWF2ZSB0aGUgYm9hcmQgY29uZmlnIGZpbGUgdG8gaGFuZGxlCi0gICAgdGhlIGRpZmZlcmVudCB0YXJnZXRzLgotCi0gICAgTm90ZSB0aGF0IHRoaXMgbWV0aG9kIHVzZXMgdGhlICdfJyh1bmRlcmxpbmUpIGFzIHRoZSBkZWxpbWl0ZXIgd2hlbgotICAgIHNwbGl0cyB0aGUgYm9hcmQgbWFrZSB0YXJnZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0KLSAgICBUaGlzIGFsc28gcmV2ZXJ0cyBjb21taXQgNTExYzAyZjYxMWNiNWFmYTFiOGNhNTk4MGNhYWFhYmFhMGRlMzc3Zi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjZWIyZDU3YzIyMDVkYjViYmQ4Njg1NzdmNzU2Yzc0YTI1NjgxNjBjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgU2VwIDE1IDIxOjEzOjI3IDIwMDkgKzAyMDAKLQotICAgIGt3YmltYWdlLmM6IEZpeCBjb21waWxlIHdhcm5pbmcgd2hlbiBidWlsZGluZyBvbiA2NCBiaXQgc3lzdGVtcyAoYWdhaW4pCi0KLSAgICBDb21taXQgNTEwMDNiODkgYXR0ZW1wdGVkIHRvIGZpeCBhIGJ1aWxkIHByb2JsZW0gb24gNjQgYml0IHN5c3RlbXMsCi0gICAgYnV0IGp1c3QgdHVybmVkIGl0IGludG8gYSBidWlsZCBwcm9ibGVtIG9uIDMyIGJpdCBzeXN0ZW1zIChzaWxseSBtZSkuCi0KLSAgICBOb3cgZG8gdGhlIFJpZ2h0IFRoaW5nIChUTSkgYW5kIHVzZSBhICIlenUiIHByaW50ZiBmb3JtYXQuCi0KLSAgICBBbHNvIGZpeCBzcGVsbGluZyBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2YzdiYzkxZmIzZGJhMTg2ZDMzOThhMTY1M2Y2ZGIyMzY1MTBmZmE3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDExIDExOjMwOjM0IDIwMDkgKzAyMDAKLQotICAgIGJvYXJkL2FtY2MvY29tbW9uL2ZsYXNoLmM6IEZpeCBjb21waWxlIHdhcm5pbmcKLQotICAgIEZpeCB3YXJuaW5nOiAuLi9jb21tb24vZmxhc2guYzo5MTc6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQKLSAgICBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDcwZmI4MDljNTYzYzM0MDUzODI2NGQyYTk0MzYxMzVlNzRjMzhiZmUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBTZXAgMTEgMTE6NDc6MDcgMjAwOSArMDIwMAotCi0gICAgYm9hcmQvYW1jYy95dWNjYS9mbGFzaC5jOiBGaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBGaXggd2FybmluZzogZmxhc2guYzo5MTk6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcgotICAgIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDAzMGVjNTJmOGNjODMwMTVmOTY4ZGIzMDIwOGY0YmQwN2ZlZmZhNmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBTZXAgMTEgMTE6NDQ6MzkgMjAwOSArMDIwMAotCi0gICAgYm9hcmQvYW1jYy90YWlodS9mbGFzaC5jOiBGaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBGaXggd2FybmluZ3M6Ci0gICAgZmxhc2guYzogSW4gZnVuY3Rpb24gJ3dyaXRlX3dvcmRfMSc6Ci0gICAgZmxhc2guYzo2OTY6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIGZsYXNoLmM6IEluIGZ1bmN0aW9uICd3cml0ZV93b3JkXzInOgotICAgIGZsYXNoLmM6MTA0NDogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDBmZDNkOTAyZDkyMGYzZTYwZjg4NTMwYzMzZjFhZTc1ODEyNjA5NTEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBTZXAgMTEgMTE6Mzc6MjAgMjAwOSArMDIwMAotCi0gICAgYm9hcmQvZXRpbi9kZWJyaXMvcGhhbnRvbS5jOiBGaXggY29tcGlsZSBlcnJvcgotCi0gICAgRml4IGJ1aWxkIHByb2JsZW0gY2F1c2VkIGJ5IGNvbW1pdCBlODRhYmExMzogIlJlcGxhY2UgQkNEMkJJTiBhbmQKLSAgICBCSU4yQkNEIG1hY3JvcyB3aXRoIGlubGluZSBmdW5jdGlvbnMiCi0KLSAgICBwaGFudG9tLmM6MTYzOiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdiY2QyYmluJwotICAgIC9ob21lL3dkL2dpdC91LWJvb3Qvd29yay9pbmNsdWRlL2JjZC5oOjE2OiBlcnJvcjogcHJldmlvdXMgZGVmaW5pdGlvbiBvZiAnYmNkMmJpbicgd2FzIGhlcmUKLSAgICBwaGFudG9tLmM6MTY4OiBlcnJvcjogcmVkZWZpbml0aW9uIG9mICdiaW4yYmNkJwotICAgIC9ob21lL3dkL2dpdC91LWJvb3Qvd29yay9pbmNsdWRlL2JjZC5oOjIxOiBlcnJvcjogcHJldmlvdXMgZGVmaW5pdGlvbiBvZiAnYmluMmJjZCcgd2FzIGhlcmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IFNhbmdtb29uIEtpbSA8ZG9nb2lsQGV0aW5zeXMuY29tPgotCi1jb21taXQgNTE2ODgwMWY0YjcxYzJmOGRjZDkyYTgwY2ZjZmRhODQyNDZlNjdmZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCAxMSAxMToyODoyMSAyMDA5ICswMjAwCi0KLSAgICBib2FyZC9kYXZlL2NvbW1vbi9mbGFzaC5jOiBmaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBGaXggd2FybmluZzogLi4vY29tbW9uL2ZsYXNoLmM6NjY4OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkCi0gICAgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogQW5kcmVhIE1hcnNvbiA8YW5kcmVhLm1hcnNvbkBkYXZlLXRlY2guaXQ+Ci0KLWNvbW1pdCA5NzEzOGZjNDgwOTFmMmIwNjNjNGUzMmYzNmQwNTg1NGI5ZDExM2ZiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDExIDExOjE1OjMxIDIwMDkgKzAyMDAKLQotICAgIGJvYXJkL2VzZC9jcGNpNzUwL2lkZS5jOiBmaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBGaXggd2FybmluZzogaWRlLmM6NTQ6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsCi0gICAgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiYTczMDYwY2Y0MTYzYmQ1ZWIxNzExMDIwMTI2ZTJmN2Y2MmQzNjNlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDExIDEwOjEzOjI2IDIwMDkgKzAyMDAKLQotICAgIGJvYXJkL2VzZC9jb21tb24vZmxhc2guYzogRml4IGNvbXBpbGUgd2FybmluZwotCi0gICAgRml4IHdhcm5pbmc6IC4uL2NvbW1vbi9mbGFzaC5jOjYzNTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZAotICAgIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDJkNmQ5ZjA4NDhlOTUyZWEzM2M2NThkZmJhMzM1Njg1YTI3MjViOGIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBTZXAgMTEgMDk6MzY6MzEgMjAwOSArMDIwMAotCi0gICAgc2s5OGxpbjogZml4IGNvbXBpbGUgd2FybmluZ3MKLQotICAgIEZpeCB3YXJuaW5nczoKLSAgICBza2dlLmM6IEluIGZ1bmN0aW9uICdCb2FyZEluaXRNZW0nOgotICAgIHNrZ2UuYzoxMzg5OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza2dlLmM6MTM5MDogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgc2tnZS5jOjEzOTE6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHNrZ2VzaXJxLmM6IEluIGZ1bmN0aW9uICdTa0dlUG9ydENoZWNrVXBYbWFjJzoKLSAgICBza2dlc2lycS5jOjEzMDE6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHNrZ2VzaXJxLmM6MTMwMTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgc2tnZXNpcnEuYzoxMzk4OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza2dlc2lycS5jOjEzOTg6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHNrcmxtdC5jOiBJbiBmdW5jdGlvbiAnU2tSbG10SW5pdCc6Ci0gICAgc2tybG10LmM6NjYxOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza3htYWMyLmM6IEluIGZ1bmN0aW9uICdTa01hY1Byb21pc2NNb2RlJzoKLSAgICBza3htYWMyLmM6NzUzOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza3htYWMyLmM6NzUzOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza3htYWMyLmM6IEluIGZ1bmN0aW9uICdTa01hY0hhc2hpbmcnOgotICAgIHNreG1hYzIuYzo4MDM6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHNreG1hYzIuYzo4MDM6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHNreG1hYzIuYzogSW4gZnVuY3Rpb24gJ1NrTWFjRmx1c2hUeEZpZm8nOgotICAgIHNreG1hYzIuYzoxMTE1OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza3htYWMyLmM6MTExNTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgc2t4bWFjMi5jOiBJbiBmdW5jdGlvbiAnU2tNYWNGbHVzaFJ4Rmlmbyc6Ci0gICAgc2t4bWFjMi5jOjExNDU6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHNreG1hYzIuYzoxMTQ1OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza3htYWMyLmM6IEluIGZ1bmN0aW9uICdTa1htSW5pdFBhdXNlTWQnOgotICAgIHNreG1hYzIuYzoxOTg3OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza3htYWMyLmM6MTk4Nzogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgc2t4bWFjMi5jOiBJbiBmdW5jdGlvbiAnU2tYbU92ZXJmbG93U3RhdHVzJzoKLSAgICBza3htYWMyLmM6NDIzNjogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgc2t4bWFjMi5jOjQyMzY6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHNreG1hYzIuYzo0MjQyOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBza3htYWMyLmM6NDI0Mjogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMzcwOGU0Y2RiMWYxZDNkNTEyOGNmODdiZTA0MGQ3ZTZiODVmNjBkZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCAxMSAwOToxMzo1OCAyMDA5ICswMjAwCi0KLSAgICBkcml2ZXJzL25ldC9uYXRzZW1pLmM6IGZpeCBjb21waWxlIHdhcm5pbmcKLQotICAgIEZpeCB3YXJuaW5nOiBuYXRzZW1pLmM6NzU3OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIKLSAgICB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDc4ZDE5YTM5ODc3OGE1OGQ3YjQwYjBjNzhlMDI2NTE1MjcxYjFhODQKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIFNlcCA3IDA5OjA4OjAyIDIwMDkgKzAyMDAKLQotICAgIG5ldDogZW1hY2xpdGU6IENsZWFudXAgbGljZW5zZSB0byBiZSBHUEwgY29tcGF0aWJsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlcGhlbiBOZXVlbmRvcmZmZXIgPHN0ZXBoZW4ubmV1ZW5kb3JmZmVyQHhpbGlueC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgMDkwMGJlZTlhYjk4MTg0MzliMmQxMjk4ZmE4OTA5YTg4Zjc0ZWMwZAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgQXVnIDE0IDEzOjQxOjE3IDIwMDkgKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IEVuYWJsZSBodXNoIHBhcnNlcgotCi0gICAgV2l0aCBIdXNoIHBhcnNlciBpcyBwb3NzaWJsZSB0byBjaGFuZ2UgY29tbWFuZCBsaW5lIGluIGR0YgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgMTM5MTZhYmY5OTZiMTI3YjY4MWRkYzI2NjY0YzIzNmRlZDI4YmE3ZgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglUaHUgQXVnIDIwIDIyOjQ0OjAyIDIwMDkgKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IFJlbW92ZSBBdG1hcmtUZWNobm8gU3V6YWt1IGJvYXJkCi0KLSAgICBVc2VycyBzaG91bGQgdXNlIG1pY3JvYmxhemUtZ2VuZXJpYyBwbGF0Zm9ybS4KLSAgICBUaGlzIHBsYXRmb3JtIGlzIGxvbmdlciBub3Qgc3VwcG9ydGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgM2NlYmExZDQ1ZDAwNzE0NGQxMDM2OGY5MWZmOWUzNmYzYjVmMzlhMQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglUaHUgQXVnIDIwIDIyOjM2OjIwIDIwMDkgKzAyMDAKLQotICAgIG5ldDogUmVtb3ZlIG9sZCBYaWxpbnggRW1hYyBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IDJmZGRkNDQ0NjRkMDJlMGYzYWRlMDZkYWJlMGUxNjU4MzVmYTYxZjAKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJV2VkIEF1ZyAxOSAwODoxMDowOCAyMDA5ICswMjAwCi0KLSAgICBtaWNyb2JsYXplOiBTaG9ydCBzaXplIG9mIGdsb2JhbCBkYXRhIGFuZCBmaXggbWFsbG9jIHNpemUKLQotICAgIElmIGlzIGZ1bGwgbWFsbG9jIGFyZWEgZ2xvYmFsLCBkYXRhIGFyZSByZXdyaXRlIGJlY2F1c2UKLSAgICB0aGVyZSB3YXMgYmFkIHNpemUgb2YgbWFsbG9jIGFyZWEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCBhZWRiNDY4MzA5N2QzZTVkZTg4MzNmNGE5ZTM0NjY0ZDNkMmJkMDc3Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBBdWcgMTQgMTc6MDI6MzUgMjAwOSArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogQWRkIHNic3MsIHNjb21tb24gYW5kIENPTU1PTiBzeW1ib2xzIGZvciBjbGVhcmluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgNGMxODgzNjcwYWNiZjFjYzgzYzA0ZGYxODc2MjM1YzNhZWRkZTEyOAotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJV2VkIFNlcCA5IDEyOjM2OjA3IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogUmVuYW1lIGNvbXBhY3RjZW50ZXIgdG8gaW50aXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDFjM2IyNzUyNWI2NjRlOGM0ZGI2YmIxNzNlZWQ1MWJmYzgyMjBkZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgU2VwIDkgMTY6MjU6MjkgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBCaWcgY2xlYW51cCBvZiBQUEM0eHggZGVmaW5lcwotCi0gICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgbXVsdGlwbGUgaXNzdWVzIG9mIHRoZSA0eHggcmVnaXN0ZXIgKG1vc3RseQotICAgIERDUiwgU0RSLCBDUFIsIGV0YykgZGVmaW5pdGlvbnM6Ci0KLSAgICAtIENoYW5nZSBsb3dlciBjYXNlIGRlZmluZXMgdG8gdXBwZXIgY2FzZSAocGxiNF9hY3IgLT4gUExCNF9BQ1IpCi0gICAgLSBDaGFuZ2UgdGhlIGRlZmluZXMgdG8gYmV0dGVyIG1hdGNoIHRoZSBuYW1lcyBmcm9tIHRoZQotICAgICAgdXNlcidzIG1hbnVhbHMgKGUuZy4gY3BycGxsYyAtPiBDUFIwX1BMTEMpCi0gICAgLSBSZW1vdmFsIG9mIHNvbWUgdW51c2VkIGRlZmluZXMKLQotICAgIFBsZWFzZSB0ZXN0IHRoaXMgcGF0Y2ggaW50ZW5zaXZlIG9uIHlvdXIgUFBDNHh4IHBsYXRmb3JtLiBFdmVuIHRob3VnaAotICAgIEkgdHJpZWQgbm90IHRvIGJyZWFrIGFueXRoaW5nIGFuZCB0ZXN0ZWQgc3VjY2Vzc2Z1bGx5IG9uIG11bHRpcGxlCi0gICAgNHh4IEFNQ0MgcGxhdGZvcm1zLCB0ZXN0aW5nIG9uIGN1c3RvbSBwbGF0Zm9ybXMgaXMgcmVjb21tZW5kZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkOGQ4NzI0YmUwNmRmNDM3NzIxNjJkYzM0NGFlMjBkZmE4MTRkYzcyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDExIDA5OjA1OjMyIDIwMDkgKzAyMDAKLQotICAgIG5ldC9ib290cC5jOiBmaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBGaXggd2FybmluZzogYm9vdHAuYzo2OTU6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcgotICAgIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNTEwMDNiODk4MTY4NDhjYmU4NmE4ZmU0OGY5NzBiYThiMTQwMDVmNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCAxMSAwODo1ODoxMSAyMDA5ICswMjAwCi0KLSAgICBrd2JpbWFnZS5jOiBGaXggY29tcGlsZSB3YXJuaW5nIHdoZW4gYnVpbGRpbmcgb24gNjQgYml0IHN5c3RlbXMKLQotICAgIEZpeCB0aGlzIHdhcm5pbmcgd2hlbiBidWlsZGluZyBvbiA2NCBiaXQgc3lzdGVtczoKLSAgICB0b29scy9rd2JpbWFnZS5jOiBJbiBmdW5jdGlvbiAna3diaW1hZ2VfY2hlY2tzdW0zMic6Ci0gICAgdG9vbHMva3diaW1hZ2UuYzoxMzU6IHdhcm5pbmc6IGZvcm1hdCAnJWQnIGV4cGVjdHMgdHlwZSAnaW50JywKLSAgICBidXQgYXJndW1lbnQgNCBoYXMgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCBlNzk2Mzc3MmViNzhhNmFhMWZhNjUwNjNkNjRlYWIzYTg2MjZkYWFjCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CVdlZCBTZXAgOSAyMToxMToxOCAyMDA5ICswMjAwCi0KLSAgICBtdWFzMzAwMTogcmVtb3ZlIEJSRyBjbG9jayBub2RlIGZpeHVwIHRvIHVzZSBjb21tb24gbXBjODI2MCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWwuemlzd2lsZXJAbm9zZXIuY29tPgotICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGM3YzFkYmJmNzE1OWIzOGYzMzAyYjg0NWRkOTdkMjhhNTQzZmY5MWIKLUF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgotRGF0ZToJV2VkIFNlcCA5IDIxOjA5OjAwIDIwMDkgKzAyMDAKLQotICAgIHI3NzgwbXA6IGZpeCB0eXBvIGluIEV0aGVybmV0IGNoaXAgbW9kZWwgbnVtYmVyIGNvbW1lbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbC56aXN3aWxlckBub3Nlci5jb20+Ci0KLWNvbW1pdCA0NWY4OWYzNDBiNGQ4YWEwOTlmZDAyMjI2MGRjYjEzY2YzMzIxYjYxCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CVdlZCBTZXAgOSAyMToyMjowOCAyMDA5ICswMjAwCi0KLSAgICBlcDgyNDg6IGFkZCBzdXBwb3J0IGZvciBkZXZpY2UgdHJlZSBhbmQgc2Vjb25kYXJ5IEV0aGVybmV0IGludGVyZmFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsLnppc3dpbGVyQG5vc2VyLmNvbT4KLQotY29tbWl0IGFhMGM3YTg2Y2QyMzZiODE5MzIxOGEwOWUxMzY1Yzg5OTFiYjVkZGMKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJTW9uIFNlcCA3IDE1OjA1OjAyIDIwMDkgKzA1MzAKLQotICAgIG1raW1hZ2U6IEFkZCBLaXJrd29vZCBCb290IEltYWdlIHN1cHBvcnQgKGt3YmltYWdlKQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yICJrd2JpbWFnZSIgKEtpcmt3b29kIEJvb3QgSW1hZ2UpCi0gICAgaW1hZ2UgdHlwZXMgdG8gdGhlIG1raW1hZ2UgY29kZS4KLQotICAgIEZvciBkZXRhaWxzIHJlZmVyIHRvIGRvY3MvUkVBRE1FLmt3YmltYWdlCi0KLSAgICBUaGlzIHBhdGNoIGlzIHRlc3RlZCB3aXRoIFNoZWV2YXBsdWcgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBBY2tlZC1ieTogUm9uIExlZSA8cm9uQGRlYmlhbi5vcmc+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA3ODA5ZmJiOWFhZmQ2MGUzYTZlNWRmZTQ1NmFlMzBiOTNhYzYxMzM4Ci1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBTZXAgNyAxNDo1OTowOSAyMDA5ICswNTMwCi0KLSAgICBLaXJrd29vZDogU2hlZXZhcGx1ZzogQWRkIGt3aW1hZ2UgY29uZmlndXJhdGlvbiBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCBiMDI5ZGRkYzlhZTk1OGIxY2NmODc1NjQ5ZjUyYzZkYjM5NmE3NDJkCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBTZXAgNyAxNDo1OTowOCAyMDA5ICswNTMwCi0KLSAgICBta2ltYWdlOiBNYWtlIHRhYmxlX2VudHJ5IGNvZGUgZ2xvYmFsCi0KLSAgICAtIG1ha2UgZ2V0X3RhYmxlX2VudHJ5X2lkKCkgZ2xvYmFsCi0gICAgLSBtYWtlIGdldF90YWJsZV9lbnRyeV9uYW1lKCkgZ2xvYmFsCi0gICAgLSBtb3ZlIHN0cnVjdCB0YWJsZV9lbnRyeSB0byBpbWFnZS5oCi0KLSAgICBDdXJyZW50bHkgdGhpcyBjb2RlIGlzIHVzZWQgYnkgaW1hZ2UuYyBvbmx5LgotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyB0aGlzIEFQSSBnbG9iYWwgc28gaXQgY2FuIGJlIHVzZWQgYnkgb3RoZXIgcGFydHMgb2YKLSAgICBjb2RlLCB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgQWNrZWQtYnk6IFJvbiBMZWUgPHJvbi5kZWJpYW4ub3JnPgotCi0gICAgRWRpdCBjb21tZW50cyBhbmQgY29tbWl0IG1lc3NhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZjY2NmRlYThhYjIxNWM3NmMzYzJhMDc3YWQyOTlmOTBkZDFhY2U3YwotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglNb24gU2VwIDcgMTQ6NTk6MDcgMjAwOSArMDUzMAotCi0gICAgbWtpbWFnZTogTWFrZSBnZW5pbWdfcHJpbnRfc2l6ZSgpIGdsb2JhbAotCi0gICAgQ3VycmVudGx5IGl0IGlzIHVzZWQgYnkgaW1hZ2UuYyBvbmx5LCBidXQgdGhlIHRoZSBmdW5jdGlvbiBjYW4gYmUKLSAgICB1c2VkIHRvIHN1cHBvcnQgYWRkaXRpb25hbCBta2ltYWdlIHR5cGVzIGxpa2UgZm9yIGV4YW1wbGUga3diaW1hZ2UsCi0gICAgc28gbWFrZSB0aGlzIGZ1bmN0aW9uIGdsb2JhbGx5IHZpc2libGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLSAgICBFZGl0ZWQgY29tbWl0IG1lc3NhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzdiODAxODg4Y2Y3M2IxOGY3OGMxMTA5MTQwZmY0NGUzZTM3OTE0ZgotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglNb24gU2VwIDcgMTQ6NTk6MDYgMjAwOSArMDUzMAotCi0gICAgbWtpbWFnZTogSW5jbHVkZSBtaXNzaW5nIGZpbGVzIGluIGJ1aWxkIGRlcGVuZGVuY3kgY2FsY3VsYXRpb25zCi0KLSAgICBJbmNsdWRlIGRlZmF1bHRfaW1hZ2UubyBhbmQgZml0X2ltYWdlLm8gaW50byB0aGUgYnVpbGQgZGVwZW5kZW5jeQotICAgIGNhbGN1bGF0aW9ucy4gVGhpcyBtYWtlcyBzdXJlIHRoZXkgZ2V0IHJlYnVpbHQgaWYgYW55IG9mIHRoZSBoZWFkZXJzCi0gICAgdGhleSBpbmNsdWRlIGFyZSBtb2RpZmllZAotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIEFja2VkLWJ5OiBSb24gTGVlIDxyb25AZGViaWFuLm9yZz4KLQotICAgIEVkaXRlZCBjb21taXQgbWVzc2FnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzYTIwMDNmNjFlZTc5YWM1M2QyMGMyNGNjODk2YzI2MzdhMmRmYzI0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgQXVnIDE5IDExOjQyOjU2IDIwMDkgKzAyMDAKLQotICAgIHRvb2xzL21raW1hZ2U6IGZpeCBjb21waWxlciB3YXJuaW5ncywgdXNlICJjb25zdCIKLQotICAgIFRoaXMgZml4ZXMgc29tZSBjb21waWxlciB3YXJuaW5nczoKLSAgICB0b29scy9kZWZhdWx0X2ltYWdlLmM6MTQxOiB3YXJuaW5nOiBpbml0aWFsaXphdGlvbiBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKLSAgICB0b29scy9maXRfaW1hZ2UuYzoyMDI6IHdhcm5pbmc6IGluaXRpYWxpemF0aW9uIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQotICAgIGFuZCBjaGFuZ2VzIHRvIGNvZGUgdG8gdXNlICJjb25zdCIgYXR0cmlidXRlcyBpbiBhIGZldyBwbGFjZXMgd2hlcmUKLSAgICBpdCdzIGFwcHJvcHJpYXRlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDg5YTRkNmIxMmZkNjM5NDg5OGI4YTQ1NGNiYWJlYWYxY2Q1OWJhZTUKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJV2VkIEF1ZyAxOSAxNzozNjo0NiAyMDA5ICswNTMwCi0KLSAgICB0b29sczogbWtpbWFnZTogc3BsaXQgY29kZSBpbnRvIGNvcmUsIGRlZmF1bHQgYW5kIEZJVCBpbWFnZSBzcGVjaWZpYwotCi0gICAgVGhpcyBpcyBhIGZpcnN0IHN0ZXAgdG93YXJkcyByZW9yZ2FuaXppbmcgdGhlIG1raW1hZ2UgY29kZSB0byBtYWtlIGl0Ci0gICAgZWFzaWVyIHRvIGFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIGltYWdlcyB0eXBlcy4gQ3VycmVudCBta2ltYWdlCi0gICAgY29kZSBpcyBzcGVjaWZpYyB0byBnZW5lcmF0aW5nIHVJbWFnZSBhbmQgRklUIGltYWdlIGZpbGVzLCBidXQgdGhlCi0gICAgc2FtZSBmcmFtZXdvcmsgY2FuIGJlIHVzZWQgdG8gZ2VuZXJhdGUgb3RoZXIgaW1hZ2UgdHlwZXMgbGlrZQotICAgIEtpcmt3b29kIGJvb3QgaW1hZ2VzIChrd2JpbWFnZS1UQkQpLiBGb3IgdGhpcywgdGhlIG1raW1hZ2UgY29kZSBnZXRzCi0gICAgcmV3b3JrZWQ6Ci0KLSAgICBIZXJlIGlzIHRoZSBicmllZiBwbGFuIGZvciB0aGUgc2FtZTotCi0gICAgYSkgU3BsaXQgbWtpbWFnZSBjb2RlIGludG8gY29yZSBhbmQgaW1hZ2Ugc3BlY2lmaWMgc3VwcG9ydAotICAgIGIpIEltcGxlbWVudCBjYWxsYmFjayBmdW5jdGlvbnMgZm9yIGltYWdlIHNwZWNpZmljIGNvZGUKLSAgICBjKSBNb3ZlIGltYWdlIHR5cGUgc3BlY2lmaWMgY29kZSB0byByZXNwZWN0aXZlIEMgZmlsZXMKLQkgICBDdXJyZW50bHkgdGhlcmUgYXJlIHR3byB0eXBlcyBvZiBmaWxlIGdlbmVyYXRpb24vbGlzdAotCSAgIHN1cHBvcnRlZCAoaS5lIHVJbWFnZSwgRklUKSwgdGhlIGNvZGUgaXMgYWJzdHJhY3RlZCBmcm9tCi0JICAgbWtpbWFnZS5jLy5oIGFuZCBwdXQgaW4gZGVmYXVsdF9pbWFnZS5jIGFuZCBmaXRfaW1hZ2UuYzsKLQkgICBhbGwgY29kZSBpbiB0aGVzZSBmaWxlIGlzIHN0YXRpYyBleGNlcHQgaW5pdCBmdW5jdGlvbiBjYWxsCi0gICAgZCkgbWtpbWFnZV9yZWdpc3RlciBBUEkgaXMgYWRkZWQgdG8gYWRkIG5ldyBpbWFnZSB0eXBlIHN1cHBvcnQKLSAgICBBbGwgYWJvdmUgaXMgYWRkcmVzc2VkIGluIHRoaXMgcGF0Y2gKLSAgICBlKSBBZGQga3diaW1hZ2UgdHlwZSBzdXBwb3J0IHRvIHRoaXMgbmV3IGZyYW1ld29yayAoVEJEKQotICAgIFRoaXMgd2lsbCBiZSBpbXBsZW1lbnRlZCBpbiBhIGZvbGxvd2luZyBjb21taXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgRWRpdCBjb21taXQgbWVzc2FnZSwgZml4IGNvZGluZyBzdHlsZSBhbmQgdHlwb3MuCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDQ0OTYwOWY1YjExY2NlNmJlYmE3MzM4YmM0Y2UwZjMzNDUzNzZhMGIKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJU3VuIEF1ZyAxNiAwNToyODoxOSAyMDA5ICswNTMwCi0KLSAgICB0b29sczogbWtpbWFnZTogRml4ZWQgYnVpbGQgd2FybmluZ3MKLQotICAgIHVuaW5pdGlhbGl6ZWQgcmV0dmFsIHZhcmlhYmxlIHdhcm5pbmcgZml4ZWQKLSAgICBjcmMzMiBBUElzIG1vdmVkIHRvIGNyYy5oIChuZXdseSBhZGRlZCkgYW5kIGJ1aWxkIHdhcm5pbmdzIGZpeGVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDE0ODIxZDdkZWE4ZDcyMDlmMjQ1N2MzMTc5ZmE2NTUxYzA4OGJhNzEKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJTW9uIEF1ZyAxMCAyMDo0NDowNiAyMDA5ICswNTMwCi0KLSAgICB0b29sczogbWtpbWFnZTogTWFrZWZpbGUgc29ydGVkCi0KLSAgICBUaGUgdG9vbHMvTWFrZWZpbGUgaXMgc29ydGVkIGZvciBhbGwgZW50cmllcywKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLQotY29tbWl0IGY3NjQ0YzBiZjM1MDI1MjkwMzE2NTdhODY5ZmEyMTNjZGE1YTI0MjQKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJTW9uIEF1ZyAxMCAxODo0OTozNyAyMDA5ICswNTMwCi0KLSAgICB0b29sczogbWtpbWFnZSA6IGJ1Z2ZpeCByZXR1cm5zIGNvcnJlY3QgdmFsdWUgZm9yIGxpc3QgY29tbWFuZAotCi0gICAgTGlzdCBjb21tYW5kIGFsd2F5cyByZXR1cm4gIkVYSVRfU1VDQ0VTUyIgZXZlbiBpbiBjYXNlIG9mCi0gICAgZmFpbHVyZSBieSBhbnkgbWVhbnMuCi0KLSAgICBUaGlzIHBhdGNoIHJldHVybiAwIGlmIGxpc3QgY29tbWFuZCBpcyBzdWNlc3NmdWwsCi0gICAgcmV0dXJucyBuZWdhdGl2ZSB2YWx1ZSByZXBvcnRlZCBieSBjaGVja19oZWFkZXIgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDUxMWMwMmY2MTFjYjVhZmExYjhjYTU5ODBjYWFhYWJhYTBkZTM3N2YKLUF1dGhvcjogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIFNlcCA4IDE1OjA3OjEyIDIwMDkgKzA4MDAKLQotICAgIG1rY29uZmlnOiBwYXNzIHRoZSBib2FyZCBuYW1lIHRvIGJvYXJkIGNvbmZpZyBmaWxlCi0KLSAgICBUaGVuIHdlIGNhbiBoYW5kbGUgZGlmZmVyZW50IGNvbmZpZyB0YXJnZXRzIGluIHRoZSBib2FyZCBmaWxlLCB3aGljaAotICAgIHNpbXBsaWZpZXMgdGhlIHRvcCBsZXZlbCBNYWtlZmlsZSBmb3IgYm9hcmRzIHRoYXQgaGF2ZSBtdWx0aXBsZQotICAgIGNvbmZpZyB0YXJnZXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDY0MGFjNThkYmY2MWM3Njk4NjRiM2ZlNzYzMTQzMDZiNzMzNmNmMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIFNlcCA3IDIzOjUyOjMxIDIwMDkgKzAyMDAKLQotICAgIFJlbW92ZSAiYXRtZWxfZGZfcG93MiIgYmluYXJ5IHdpdGggIm1ha2UgY2xlYW4iCi0KLSAgICBDb21taXQgNjVmNmYwN2IgYWRkZWQgc3VwcG9ydCBmb3IgdGhlIGF0bWVsX2RmX3BvdzIgc3RhbmRhbG9uZSBwcm9ncmFtCi0gICAgYnV0IG1pc3NlZCB0byBhZGQgYSBydWxlIHRvIHJlbW92ZSBpdCB0byB0aGUgImNsZWFuIiBtYWtlIHRhcmdldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwYjM0ZGJiZDBiNjk2OWM5OGM0NDMxM2IyOTE4MzZkOTA1NmVjNDBhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBTZXAgNyAxMDo1MjoyNCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGluIDR4eCBtaWlwaHkuYwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgZm9sbG93aW5nIGNvbXBpbGF0aW9uIHdhcm5pbmc6Ci0KLSAgICBtaWlwaHkuYzogSW4gZnVuY3Rpb24gJ2VtYWM0eHhfbWlpcGh5X3JlYWQnOgotICAgIG1paXBoeS5jOjM1Mzogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsKLSAgICBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDgyMzc5YjU1NjQ4MTllNjI2MjRhM2M1OGZiYzQzZjFhZmVkZjRmNWYKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CU1vbiBTZXAgNyAxNzowMDo0MSAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBDT05GSUdfUENJXzR4eF9QVE1fT1ZFUldSSVRFIHRvIHNvbWUgZXNkIDR4eCBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTliY2YxNGQ1NTNmMzk5MTQ4YTc2NjBiOThmN2FjYmQ4Y2M3MmQ4MAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJTW9uIFNlcCA3IDE3OjAwOjQwIDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQWxsb3cgb3ZlcndyaXRpbmcgcGNpIHRhcmdldCByZWdpc3RlcnMgZm9yIGFsbCA0eHggYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIENPTkZJR19QQ0lfNHh4X1BUTV9PVkVSV1JJVEUgb3B0aW9uIGFuZCByZXBsYWNlcwotICAgIHRoZSB1Z2x5ICdpZiBkZWZpbmVkKEJPQVJEMSkgfHwgLi4uIHx8IGRlZmluZWQoQk9BUkRuKScgY29uc3RydWN0Ci0gICAgaW4gNHh4IHBjaSBjb2RlLgotCi0gICAgV2hlbiBDT05GSUdfUENJXzR4eF9QVE1fT1ZFUldSSVRFIGlzIGRlZmluZWQgdGhlIGRlZmF1bHQgcHRtIHJlZ2lzdGVyCi0gICAgc2V0dXAgY2FuIGJlIG92ZXJ3cml0dGVuIHRocm91Z2ggZW52aXJvbm1lbnQgdmFyaWFibGVzIHB0bTFsYSwgcHRtMW1zLAotICAgIHB0bTJsYSBhbmQgcHRtMm1zIHRvIGRvIGFwcGxpY2F0aW9uIHNwZWNpZmljIHBjaSB0YXJnZXQgQkFSIGNvbmZpZ3VyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGNmYWIyYWUzMjJhOTlhZDU1MzY0ZDA1NDA1NGYxMzhmNTExMzBjMmEKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CUZyaSBTZXAgNCAxMDozNzowNCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBQTUM0MDVERSBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIFBNQzQwNURFIHN1cHBvcnQuIFBhdGNoIDg1ZDZiZjBiIGZpeGVkIG91dC1vZi10cmVlCi0gICAgYnVpbGRpbmcgZm9yIHRoaXMgYm9hcmQgYnV0IHRoZSBsb2FkcGNpIG9iamVjdCBkaWQgbm90IGdldCBsaW5rZWQKLSAgICBhZnRlciB0aGF0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjODM1NWI5ZDlmNzc4YmQxMmVlMTljOGYzNGQ4OGUxMzc1OGE0ZWZkCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJV2VkIFNlcCAyIDE3OjI0OjU3IDIwMDkgKzAyMDAKLQotICAgIGFtY2MtY29tbW9uLmg6IFVzZSBmaWxlbmFtZXMgZnJvbSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHVwZGF0ZSBwcm9jZWR1cmUuCi0KLSAgICBVc2luZyBhIHNlcGFyYXRlICJ1LWJvb3QiIGVudmlyb25tZW50IHZhcmlhYmxlIGFsbG93cyB0byBlYXNpbHkKLSAgICBzcGVjaWZ5IGRpZmZlcmVudCBmaWxlbmFtZXMgZm9yIHRoZSB1cGRhdGUgcHJvY2VkdXJlLiAgVGhpcyBpcyBhbHNvIGluCi0gICAgbGluZSB3aXRoIG1hbnkgb3RoZXIgYm9hcmQgY29uZmlndXJhdGlvbnMgZGVmaW5pbmcgYW4gInVwZGF0ZSIgc2NyaXB0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNmM5N2EyMGQwYjJmNTZjYjRmMzc0NWQ5NGIxZjk2OTg2ZThjY2VkNQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIFNlcCA5IDExOjQwOjQxIDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBJbnRyb2R1Y2UgUkVTRVRfVkVDVE9SX0FERFJFU1MgdG8gaGFuZGxlIG5vbi1zdGFuZGFyZCBsaW5rIGFkZHJlc3MKLQotICAgIFNvbWUgYm9hcmQgcG9ydHMgcGxhY2UgVEVYVF9CQVNFIGF0IGEgbG9jYXRpb24gdGhhdCB3b3VsZCBjYXVzZSB0aGUKLSAgICBSRVNFVF9WRUNUT1JfQUREUkVTUyBub3QgdG8gYmUgYXQgMHhmZmZmZmZmYyB3aGVuIHdlIGxpbmsuCUJ5IGRlZmF1bHQKLSAgICB3ZSBhc3N1bWUgUkVTRVRfVkVDVE9SX0FERFJFU1Mgd2lsbCBiZSAweGZmZmZmZmZjIGlmIHRoZSBib2FyZCBkb2Vzbid0Ci0gICAgZXhwbGljaXRseSBzZXQgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzM0ODMyMmFjN2Y3NjMxODI5NWNmMjVmZmFiMmNjMmE0OTAwYTIzNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIFNlcCA4IDEzOjQ2OjQ2IDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBDbGVhbiB1cCBkb19yZXNldAotCi0gICAgVGhlcmUgaXMgbm8gcmVhc29uIHRvIGRvIGEgcnVuIHRpbWUgY2hlY2sgZm9yIGU1MDAgdjEgYmFzZWQgY29yZXMgdG8KLSAgICBkZXRlcm1pbmUgaWYgd2UgaGF2ZSB0aGUgR1VUcyBSU1RDUiBmYWNpbGl0eS4gIE9ubHkgdGhlIGZpcnN0IGdlbmVyYXRpb24KLSAgICBvZiBQUTMgcGFydHMgKE1QQzg1NDAvNDEvNTUvNjApIGRvIG5vdCBoYXZlIGl0LiAgU28gY2hlY2tpbmcgdG8gc2VlIGlmCi0gICAgd2UgYXJlIGU1MDAgdjIgd291bGQgbWlzcyBmdXR1cmUgcGFydHMgKGxpa2UgZTUwMG1jKS4KLQotICAgIEp1c3QgY2hhbmdlIHRoaXMgdG8gYmUgaWZkZWYnZCBiYXNlZCBvbiBDT05GSUdfTVBDODV7NDAsNDEsNTUsNjB9LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIxMTcwYzgwYTgzZjFlNjBjZTdmNmY4MzAwNWUwNmE1YzJkMTVhOGUKLUF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgU2VwIDMgMTk6NDI6NDAgMjAwOSArMDUzMAotCi0gICAgcHBjLzg1eHgvODZ4eDogQnVnIGZpeDogY2FsbCB0byBwdXRzIGluIHByb2JlY3B1KCkgbW92ZWQgdG8gY2hlY2tjcHUoKS4KLQotICAgIFdoaWxlIGluIHByb2JlY3B1KCkgVUFSVCBpcyBzdGlsbCBub3QgaW5pdGlhbGl6ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjgwMjdmNmI0Nzg5ZTMzNDBmMTA2MjBkOGZiNjExM2I5NWI4OGQ5YwotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBTZXAgMiAxOTo0MDozNiAyMDA5ICswNTMwCi0KLSAgICBwcGMvODV4eC84Nnh4OiBEZXZpY2UgdHJlZSBmaXh1cCBmb3IgbnVtYmVyIG9mIGNvcmVzCi0KLSAgICBGaXhpbmcgdGhlIG51bWJlciBvZiBjb3JlcyBpbiB0aGUgZGV2aWNlIHRyZWUgYmFzZWQgb24gdGhlIGFjdHVhbCBudW1iZXIgb2YKLSAgICBjb3JlcyBvbiB0aGUgc3lzdGVtLiAgV2l0aCB0aGlzIHNhbWUgZGV2aWNlIHRyZWUgaW1hZ2UgY2FuIGJlIHVzZWQgZm9yIGR1YWwKLSAgICBjb3JlIGFuZCBzaW5nbGUgY29yZSBtZW1iZXJzIG9mIG90aGVyd2lzZSBleGFjdGx5IHNhbWUgU09DLgotCi0gICAgRm9yIGV4YW1wbGU6Ci0gICAgKiBQMjAyMFJEQiBhbmQgUDIwMTBSREIKLSAgICAqIFAxMDIwUkRCIGFuZCBQMTAxMVJEQgotICAgICogTVBDODY0MUQgYW5kIE1QQzg2NDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1ODQ0MmRjMDFlNDdjYzhjZTQyYWY0ZjI5NDg2YTM0Y2FkNjBiOWQyCi1BdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIFNlcCAyIDEzOjM1OjIxIDIwMDkgKzA1MzAKLQotICAgIHBwYy84NXh4LDg2eHg6IEhhbmRsaW5nIFVua25vd24gU09DIHZlcnNpb24KLQotICAgIEluY2FzZSB0aGUgc3lzdGVtIGlzIGRldGVjdGVkIHdpdGggVW5rbm93biBTVlIsIGxldCB0aGUgc3lzdGVtIGJvb3QKLSAgICB3aXRoIGEgZGVmYXVsdCB2YWx1ZSBhbmQgYSBwcm9wZXIgbWVzc2FnZS4KLQotICAgIE5vdyB3aXRoIGR5bmFtaWMgZGV0ZWN0aW9uIG9mIFNPQyBwcm9wZXJ0aWVzIGZyb20gU1ZSLCB0aGlzIGlzIG5lY2Vzc2FyeQotICAgIHRvIHByZXZlbnQgYSBjcmFzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzZTdiNmMxZjJkYjVlYzMxZjllN2RiYzNlMGNiY2E2MDIxNjdhNDZhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgU2VwIDIgMDk6MDM6MDggMjAwOSAtMDUwMAotCi0gICAgcHBjLzh4eHg6IFJlZmFjdG9yIGNvZGUgdG8gZGV0ZXJtaW5lIGlmIFBDSSBpcyBlbmFibGVkICYgYWdlbnQvaG9zdAotCi0gICAgUmVmYWN0b3IgdGhlIGNvZGUgaW50byBhIHNpbXBsZSBiaXRtYXNrIGxvb2t1cCB0YWJsZSB0aGF0IGRldGVybWluZXMgaWYKLSAgICBhIGdpdmVuIFBDSSBjb250cm9sbGVyIGlzIGVuYWJsZWQgYW5kIGlmIGl0cyBpbiBob3N0L3Jvb3QtY29tcGxleCBvcgotICAgIGFnZW50L2VuZC1wb2ludCBtb2RlLgotCi0gICAgRWFjaCBwcm9jZXNzb3IgaW4gdGhlIFBRMy9NUEM4Nnh4IGZhbWlseSBzcGVjaWZpZWQgZGlmZmVyZW50IGVuY29kaW5ncwotICAgIGZvciB0aGUgY2ZnX2hvc3RfYWd0W10gYW5kIGNmZ19JT19wb3J0c1tdIGJvb3Qgc3RyYXBwaW5nIHNpZ25hbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTA1MmE3NzFjZjE3MjJjMzdjNzMyZjNjMzQwNzc1YjU1ZmJlM2EyMgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIFNlcCAyIDA5OjAwOjUwIDIwMDkgLTA1MDAKLQotICAgIHBwYy84NXh4OiBDbGVhbnVwIG1ha2VmaWxlIGFuZCByZWxhdGVkIG9wdGlvbmFsIGZpbGVzCi0KLSAgICBDbGVhbmVkIHVwIGNwdS9tcGM4NXh4L01ha2VmaWxlIHRvIHVzZSBDT05GSUdfKiBmb3IgdGhvc2Ugb2J2aW91cyBjYXNlcwotICAgIHdlIGhhdmUgbGlrZSBQQ0ksIENQTTIsIFFFLiAgQWxzbyByZXdvcmtlZCBpdCB0byB1c2Ugb25lIGxpbmUgcGVyIGZpbGUKLSAgICBmb3IgZXZlcnl0aGluZyBhbmQgc29ydGVkIGluIGFscGhhYmV0aWNhbCBvcmRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3NGM1ZGZkODFmOTRhMmExZjBkNjk5MGQxN2M0OTFkNzE4ZThiOWVhCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgU2VwIDQgMTc6MDU6MjQgMjAwOSAtMDUwMAotCi0gICAgZnNsOiBhZGQgcmVnaXN0ZXIgcmVhZC1iYWNrIHRvIHNldF9sYXcoKQotCi0gICAgQWZ0ZXIgcHJvZ3JhbW1pbmcgYSBuZXcgTEFXLCB3ZSBzaG91bGQgcmVhZC1iYWNrIHRoZSBMQVdBUiByZWdpc3RlciBzbyB0aGF0Ci0gICAgd2Ugc3luYyB0aGUgd3JpdGVzLiAgT3RoZXJ3aXNlLCBjb2RlIHRoYXQgYXR0ZW1wdHMgdG8gdXNlIHRoZSBuZXcgTEFXLW1hcHBlZAotICAgIG1lbW9yeSBtaWdodCBmYWlsIHJpZ2h0IGF3YXkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjNzI1OTA4NjgxNjQwNWZlMGViNzdmNGRjMjJlNzY5ODBhMDQwY2VmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgU2VwIDMgMDg6NDE6MzEgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IEZpeCBidWcgaW4gc2V0dXBfbXAgY29kZQotCi0gICAgSXRzIHBvc3NpYmxlIHRoYXQgd2UgdHJ5IGFuZCBjb3B5IHRoZSBib290IHBhZ2UgY29kZSBvdXQgb2YgZmxhc2ggaW50byBhCi0gICAgRERSIGxvY2F0aW9uIHRoYXQgZG9lc24ndCBoYXZlIGEgVExCIGNvdmVyIGl0LiAgRm9yIGV4YW1wbGUsIGlmIHdlIGhhdmUKLSAgICAzRyBvZiBERFIgd2UgdHlwaWNhbGx5IG9ubHkgbWFwIHRoZSBmaXJzdCAyRy4gIEluIHRoZSBjYXNlcyBvZiA0RysgdGhpcwotICAgIHdhc24ndCBhbiBpc3N1ZSBzaW5jZSB0aGUgcmVzZXQgcGFnZSBUTEIgbWFwcGluZyBjb3ZlcmVkIHRoZSBsYXN0IHBhZ2UKLSAgICBvZiBtZW1vcnkgd2hpY2ggd2Ugd2FudGVkIHRvIGNvcHkgdG8uCi0KLSAgICBXZSBub3cgY2hhbmdlIHRoZSBwaHlzaWNhbCBhZGRyZXNzIG9mIHRoZSByZXNldCBwYWdlIFRMQiB0byBtYXAgdG8gdGhlCi0gICAgdHJ1ZSBwaHlzaWNhbCBsb2NhdGlvbiBvZiB0aGUgYm9vdCBwYWdlIGNvZGUsIGNvcHkgYW5kIHRoYW4gc2V0IHRoZQotICAgIFRMQiBiYWNrIHRvIGl0cyAxOjEgbWFwcGluZyBvZiB0aGUgcmVzZXQgcGFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjMjI4N2FmMTU1MmJkNjMwOTU2NTY4ZDM5NTdjMzcwZjg2ODAxYjdkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgU2VwIDMgMDg6MjA6MjQgMjAwOSAtMDUwMAotCi0gICAgcHBjLzg1eHg6IEFkZCBhIHNpbXBsZSBmdW5jdGlvbiB0byBzZWFyY2ggdGhlIFRMQgotCi0gICAgQWxsb3cgdXMgdG8gc2VhcmNoIHRoZSBUTEIgYXJyYXkgYmFzZWQgb24gYW4gYWRkcmVzcy4gIFRoaXMgaXMgdXNlZnVsCi0gICAgaWYgd2Ugd2FudCB0byBjaGFuZ2UgYW4gZW50cnkgYnV0IGRvbnQga25vdyB3aGVyZSBpdCBoYXBwZW5zIHRvIGJlCi0gICAgbG9jYXRlZC4KLQotICAgIEZvciBleGFtcGxlLCB0aGUgYm9vdCBwYWdlIG1hcHBpbmcgd2UgdXNlIG9uIE1QIG9yIHRoZSBmbGFzaCBUTEIgdGhhdAotICAgIHdlIGNoYW5nZSB0aGUgV0lNR0Ugc2V0dGluZ3MgZm9yIGFmdGVyIHdlJ3ZlIHJlbG9jYXRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNmY0Y2RiYTZiNTFkZWFiNGVjOTlkNjBiZTM4MTI0NDA2OGVmOTUwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgQXVnIDE0IDEzOjM3OjU0IDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IEFkZCBzdXBwb3J0IGZvciBzZXR0aW5nIElWT1JzIHRvIGZpeGVkIG9mZnNldCBkZWZhdWx0cwotCi0gICAgSW4gZnV0dXJlIEJvb2stRSBpbXBsZW1lbnRhdGlvbnMgSVZPUnMgd2lsbCBtb3N0IGxpa2VseSBnbyBhd2F5IGFuZCBiZQotICAgIHJlcGxhY2VkIHdpdGggZml4ZWQgb2Zmc2V0cy4gIFRoZSBJVlBSIHdpbGwgY29udGludWUgdG8gZXhpc3QgdG8gYWxsb3cKLSAgICBmb3IgcmVsb2NhdGlvbiBvZiB0aGUgaW50ZXJydXB0IHZlY3RvcnMuCi0KLSAgICBUaGlzIGNvZGUgYWRkcyBzdXBwb3J0IHRvIHNldHVwIHRoZSBJVk9ScyBhcyB0aGVpciBmaXhlZCBvZmZzZXQgdmFsdWVzCi0gICAgcGVyIHRoZSBJU0EgMi4wNiBzcGVjIHdoZW4gd2UgdHJhbnNpdGlvbiBmcm9tIHUtYm9vdCB0byBhbm90aGVyIE9TCi0gICAgZWl0aGVyIHZpYSAnYm9vdG0nIG9yIGEgY3B1IHJlbGVhc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZGExY2Q5NTVkZmVjMzViMGUxNTM4MWFkMWVlMjQ4ZmExOTRlZWQ4MgotQXV0aG9yOiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIFNlcCAyIDExOjI1OjA4IDIwMDkgKzA1MzAKLQotICAgIHBwYy84NXh4OiBGaXggdXAgZVNESEMgY29udHJvbGxlciBjbG9jayBmcmVxdWVuY3kgaW4gdGhlIGRldmljZSB0cmVlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyYWJiZDMxZGE2ZDkwMDQ3M2VkNjc4Y2E1MDc4OWVlNThiYzliYjAwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgU2VwIDEgMjI6MDE6NTQgMjAwOSAtMDUwMAotCi0gICAgcHBjLzh4eHg6IFJlbW92ZSBkZHJfcGRfY250bCByZWdpc3RlciBzaW5jZSBpdCBkb2Vzbid0IGV4aXN0Ci0KLSAgICBUaGUgZGRyX3BkX2NudGwgaXNuJ3QgZGVmaW5lZCBpbiBhbnkgcmVmZXJlbmNlIG1hbnVhbCBhbmQgdGh1cyB3ZSB3aWwKLSAgICByZW1vdmUgZXNwZWNpYWxseSBzaW5jZSB3ZSBzZXQgaXQgdG8gMCwgd2hpY2ggd291bGQgbW9zdCBsaWtlbHkgYmUgaXRzCi0gICAgUE9SIHZhbHVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDEzZDQ2YWIyNTcyYzAyODNkMzRmOTNiZWJjOWE0MTI5NWVmODRjYTUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBTZXAgMSAyMTowNzowOCAyMDA5IC0wNTAwCi0KLSAgICBwcGMvOHh4eDogcmVsb2NhdGUgY3B1IHBvaW50ZXIgaW4gZ2xvYmFsIGRhdGEKLQotICAgIE5vdyB0aGF0IHdlIGhhdmUgYSBwb2ludGVyIHRvIHRoZSBjcHUgc3RydWN0IHdlIG5lZWQgdG8gcmVsb2NhdGUgaXQgb25jZQotICAgIHdlIGdldCBpbnRvIHJhbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5YzY3MWU3MDYyNzIwMDc0Zjg5NGVlMzI5ZWFhNjk5NWIwODIzNzI3Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJV2VkIFNlcCAyIDAyOjE3OjI0IDIwMDkgKzA0MDAKLQotICAgIGZzbDogc3lzX2VlcHJvbTogRml4ICdtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkJyB3YXJuaW5nCi0KLSAgICBUaGUgd2FybmluZyBpcyBib2d1cywgc28gc2lsZW5jZSBpdCBieSBpbml0aWFsaXppbmcgdGhlICdyZXQnIHZhcmlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgQWNrZWQtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDZiOWVhMDhjNTAxMGVhYjVhZDEwNTZiYzliZjAzM2FmYjY3MmQ5Y2MKLUF1dGhvcjogRGlwZW4gRHVkaGF0IDxkaXBlbi5kdWRoYXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBTZXAgMSAxNzoyNzowMCAyMDA5ICswNTMwCi0KLSAgICBwcGMvODV4eDogVXNlIENPTkZJR19GU0xfRVNESEMgdG8gZW5hYmxlIHNkaGMgY2xrCi0KLSAgICBFbmFibGUgZVNESEMgQ2xvY2sgYmFzZWQgb24gZ2VuZXJpYyBDT05GSUdfRlNMX0VTREhDIGRlZmluZSBpbnN0ZWFkIG9mIGEKLSAgICBwbGF0Zm9ybSBkZWZpbmUuICBUaGlzIHdpbGwgZW5hYmxlIGFsbCB0aGUgODV4eCBwbGF0Zm9ybXMgdG8gdXNlIHNkaGNfY2xrCi0gICAgYmFzZWQgb24gQ09ORklHX0ZTTF9FU0RIQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdhbyBHdWFuaHVhIDxCMjI4MjZAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXBlbiBEdWRoYXQgPGRpcGVuLmR1ZGhhdEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5MjQ3N2E2MzFiYmRhMmRjMGRkMjE5NGUwM2Y5YmQzZGRiOGI5YzIxCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgU2VwIDQgMTY6Mjg6MzUgMjAwOSAtMDUwMAotCi0gICAgZnNsX2kyYzogaW5jcmVhc2UgSTJDIHRpbWVvdXQgdmFsdWVzIGFuZCBtYWtlIHRoZW0gY29uZmlndXJhYmxlCi0KLSAgICBUaGUgdmFsdWUgb2YgSTJDX1RJTUVPVVQgaW4gZnNsX2kyYy5jIGhhcyBzZXZlcmFsIHByb2JsZW1zLiAgRmlyc3QsIGl0IGlzCi0gICAgZGVmaW5lZCBhcyBDT05GSUdfSFovNCwgYnV0IGl0IGlzIHVzZWQgYXMgYSBjb3VudCBvZiBtaWNyb3NlY29uZHMsIHNvIGl0IG1ha2VzCi0gICAgbm8gc2Vuc2UgdG8gZGVyaXZlIGl0IGZyb20gYSBjbG9jayByYXRlLiAgU2Vjb25kLCB0aGUgY3VycmVudCB2YWx1ZSAoMjUwKSBpcwotICAgIHRvbyBsb3cgZm9yIHNvbWUgYm9hcmRzLCBzbyBpdCBuZWVkcyB0byBiZSBpbmNyZWFzZWQuICBUaGlyZCwgdGhlIHRpbWVvdXQKLSAgICBuZWNlc3NhcnkgZm9yIG11bHRpcGxlLW1hc3RlciBhcmJpdHJhdGlvbiBpcyBsYXJnZXIgdGhhbiB0aGUgdGltZW91dCBmb3IgYmFzaWMKLSAgICByZWFkL3dyaXRlIG9wZXJhdGlvbnMsIHNvIHdlIHNob3VsZG4ndCBoYXZlIGEgc2luZ2xlIGNvbnN0YW50IGZvciBib3RoIHRpbWVvdXRzLgotICAgIEZpbmFsbHksIGl0IHdvdWxkIGJlIG5pY2UgaWYgd2UgY291bGQgb3ZlcnJpZGUgdGhlc2UgdmFsdWVzIG9uIGEgcGVyLWJvYXJkCi0gICAgYmFzaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIFRlc3RlZC1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBBY2tlZC1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDVkYTcxZWZhMThlOGI0ZWFjOWFmZDhiZmExM2UzYzdlN2RkZGUxZDAKLUF1dGhvcjogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBjb2xkaGF1cy5jb20+Ci1EYXRlOglUaHUgU2VwIDMgMDg6MDk6NDQgMjAwOSAtMDUwMAotCi0gICAgUmVzZXQgaTJjIHNsYXZlIGRldmljZXMgZHVyaW5nIGluaXQgb24gbXBjNXh4eCBjcHVzCi0KLSAgICBSZXNldCBhbnkgaTJjIGRldmljZXMgdGhhdCBtYXkgaGF2ZSBiZWVuIGludGVycnVwdGVkIGR1cmluZyBhIHN5c3RlbSByZXNldC4KLSAgICBOb3JtYWxseSB0aGlzIHdvdWxkIGJlIGFjY29tcGxpc2hlZCBieSBjbG9ja2luZyB0aGUgbGluZSB1bnRpbCBTQ0wgYW5kIFNEQQotICAgIGFyZSByZWxlYXNlZCBhbmQgdGhlbiBzZW5kaW5nIGEgc3RhcnQgY29uZHRpaW9uIChGcm9tIGFuIEF0bWVsIGRhdGFzaGVldCkuCi0gICAgVGhlcmUgaXMgbm8gZGlyZWN0IGFjY2VzcyB0byB0aGUgaTJjIHBpbnMgc28gaW5zdGVhZCBjcmVhdGUgc3RhcnQgY29tbWFuZHMKLSAgICB0aHJvdWdoIHRoZSBpMmMgaW50ZXJmYWNlLglTZW5kIGEgc3RhcnQgY29tbWFuZCB0aGVuIGRlbGF5IGZvciB0aGUgU0RBIEhvbGQKLSAgICB0aW1lLCByZXBlYXQgdGhpcyBieSBkaXNhYmxpbmcvZW5hYmxpbmcgdGhlIGJ1cyBhIHRvdGFsIG9mIDkgdGltZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGRla2FyZXNlYXJjaC5jb20+Ci0KLWNvbW1pdCAyZDQwNzJjMDZiNTU0OTQ0NGU0MTQwMjMxYmJhM2Q0N2Q5YjBiYzUzCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVNhdCBBdWcgMTUgMTE6MjA6NTggMjAwOSAtMDQwMAotCi0gICAgQVJNOiBEYVZpbmNpOiBBZGRpbmcgU3VwcG9ydCBmb3IgRGFWaW5jaSBETTM2NSBFVk0KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRE0zNjUgRVZNLgotICAgIEl0IGhhcyBiZWVuIHRlc3RlZCBvbiBhIERNMzY1IEVWTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGNmNDYzMDkxYmNlOGIwZjg5NTFkZDA4Zjk0NzU0ZDA4ZDY0NzkzYjgKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJU2F0IEF1ZyAxNSAxMToyMDo0NCAyMDA5IC0wNDAwCi0KLSAgICBBUk06IERhVmluY2k6IERhVmluY2kgRE0zNjUgU09DIHNwZWNpZmljIGNvZGUKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBEYVZpbmNpIERNMzY1IFNPQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGU4MzBiNjZiMzU5MmYxMTUzMTY2MDBkMzcwMzk5ZjNlZTE0OGU5MDkKLUF1dGhvcjogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KLURhdGU6CVNhdCBTZXAgNSAwMjo1MTozNCAyMDA5ICswMjAwCi0KLSAgICBETTkwMDAgaW5pdCBmb3IgcG05MjYxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgotCi1jb21taXQgYzM1ZDdjZjA3MWYxNzFiZDZiYmE2OWYxNTYzYTZhYzU3OGExOGVhNgotQXV0aG9yOiBGcmVkZXJpayBLcmlld2l0eiA8ZnJlZGVyaWtAa3JpZXdpdHouZXU+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU2OjQyIDIwMDkgKzAyMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRGV2S2l0ODAwMCBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBEZXZLaXQ4MDAwIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRnJlZGVyaWsgS3JpZXdpdHogPGZyZWRlcmlrQGtyaWV3aXR6LmV1PgotCi1jb21taXQgMTI3ZjlhZTU3NTk5MWFlZTNlMTA1ZTE0NDhjNDliNWI0ZTI1NDk5OAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEF1ZyAyMyAxNjozMjo0MCAyMDA5ICswMjAwCi0KLSAgICBvbWFwMzogbW92ZSB0aGUgb3RoZXIgYm9hcmRzIHRvIGJvYXJkLwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDM1MGYzYWM1NzMxZmFmMGYwMmNhNTVhYjAxNjY5NGI3YzcyNjlmOTcKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBBdWcgMjMgMTY6MzI6MzkgMjAwOSArMDIwMAotCi0gICAgYXJtOiBtb3ZlIExvZ2ljcGQncyBib2FyZHMgdG8gYm9hcmQvbG9naWNwZC8KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwYTBlNGJhZDk2OTNlZjFkMmNhOGMzM2JhNTUxZDM5NWE0ZTNkNjQxCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDE2OjMyOjM4IDIwMDkgKzAyMDAKLQotICAgIG9tYXA6IG1vdmUgVEkncyBib2FyZHMgdG8gYm9hcmQvdGkvCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOWYyM2NhNDJiM2JhMTliMjRlNjZmYWRlNTcyZjJiODZkOTI5YjZlOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCA0IDIzOjIwOjI5IDIwMDkgKzAyMDAKLQotICAgIEFSTTogVXBkYXRlIG1hY2gtdHlwZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyNjJhZTBhNjE5M2YxMGI2YTk0ZTg2ZDJmNzUyZTdmNTUxMDQxNmZhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBTZXAgMyAyMzoxMjo0NyAyMDA5IC0wNDAwCi0KLSAgICBwdXNoIExPQURfQUREUiBvdXQgdG8gYXJjaCBtayBmaWxlcwotCi0gICAgUmF0aGVyIHRoYW4gbWFpbnRhaW4vZXh0ZW5kIHRoZSBjdXJyZW50IGlmZXEoJChBUkNIKSkgbWVzcyB0aGF0IGV4aXN0cyBpbgotICAgIHRoZSBzdGFuZGFsb25lIE1ha2VmaWxlLCBwdXNoIHRoZSBzZXR0aW5nIHVwIG9mIExPQURfQUREUiBvdXQgdG8gdGhlIGFyY2gKLSAgICBjb25maWcubWsgKGFuZCByZW5hbWUgdG8gU1RBTkRBTE9ORV9MT0FEX0FERFIgaW4gdGhlIHByb2Nlc3MpLiAgVGhpcyBrZWVwcwotICAgIHRoZSBjb21tb24gY29kZSBjbGVhbiBhbmQgbGV0cyB0aGUgYXJjaCBkbyB3aGF0ZXZlciBjcmF6eSBjcmFwIGl0IHdhbnRzIGluCi0gICAgaXRzIG93biBhcmVhLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNzY2MmViMmI5ZDZmYmM5NWVjYjFmYjNlNWI1MTQ3MjE1ZTI1MWU3ZAotQXV0aG9yOiBHaXVzZXBwZSBDT05ET1JFTExJIDxnaXVzZXBwZS5jb25kb3JlbGxpQHN0LmNvbT4KLURhdGU6CVRodSBTZXAgMyAwNzozNzo0NiAyMDA5IC0wNDAwCi0KLSAgICB6bGliOiBmaXggY29kZSB3aGVuIERFQlVHIGlzIGRlZmluZWQKLQotICAgIFJlbW92ZWQgc3RkaW8uaCBpbmNsdXNpb24gYW5kIG1vdmVkIHRyYWNlIG1hY3JvcyB0byB1c2UgcHJpbnRmIGF2b2lkaW5nIHRvCi0gICAgd3JpdGUgZGVidWcgaW5mb3JtYXRpb25zIHRvIHN0YW5kYXJkIGVycm9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2l1c2VwcGUgQ29uZG9yZWxsaSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+Ci0KLWNvbW1pdCBjZmNiZjhjNGNmM2RhOTZiOWUzZjY1MjUwNmI2NjRiZmQ3NjZhNTIwCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIFNlcCAyIDE2OjQ1OjMxIDIwMDkgLTA1MDAKLQotICAgIG14Y19uYW5kOiBSZW1vdmUgRnJlZXNjYWxlJ3MgIkFsbCBSaWdodHMgUmVzZXJ2ZWQuIgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwMDFkNjE1NjgxMzMzNTY5YzU1NWU2Y2RlMDdkOGQyM2UyYzUzNmZiCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJV2VkIFNlcCAyIDE3OjU4OjQ4IDIwMDkgKzA0MDAKLQotICAgIG1wYzgzeHgvc2VyZGVzOiBMaWNlbnNlIGNsZWFudXA6IHJlbW92ZSAiQWxsIFJpZ2h0cyBSZXNlcnZlZCIgbm90aWNlCi0KLSAgICAiQWxsIFJpZ2h0cyBSZXNlcnZlZCIgY29uZmxpY3RzIHdpdGggdGhlIEdQTC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgNDZmZjZkNDYxMzIxZjViNTY1Y2M3OTBlMDI2NzkyMzdmZmQ5YTIwZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIFNlcCAyIDE0OjU3OjI3IDIwMDkgKzAyMDAKLQotICAgIExpY2Vuc2UgY2xlYW51cDogcmVtb3ZlIHVuaW50ZW5kZWQgIkFsbCBSaWdodHMgUmVzZXJ2ZWQiIG5vdGljZXMuCi0KLSAgICBTb21lIGZpbGVzIGluY2x1ZGVkIG15IG9sZCBzdGFuZGVyZCBmaWxlIGhlYWRlciB3aGljaCBoYWQgYSAiQWxsCi0gICAgUmlnaHRzIFJlc2VydmVkIiBwYXJ0LiBBcyB0aGlzIGhhcyBuZXZlciBiZWVuIG15IGludGVudGlvbiwgSSByZW1vdmUKLSAgICB0aGVzZSBsaW5lcyB0byBtYWtlIHRoZSBmaWxlcyBjb21wYXRpYmxlIHdpdGggR1BMIHYuMiBhbmQgbGF0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzdkYWE3N2YzY2FmYjVlYzlhOTc0ZWZmM2RiMmFmNGEwNTYwYTllZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIFNlcCAyIDEwOjIxOjIwIDIwMDkgKzAyMDAKLQotICAgIGNtZF9tdGRwYXJ0cy5jOiBmaXggY29tcGlsZXIgd2FybmluZyBpbiBkZWJ1ZyBjb2RlCi0KLSAgICBGaXggd2FybmluZyBtZXNzYWdlczoKLSAgICBjbWRfbXRkcGFydHMuYzoxNDI5OiB3YXJuaW5nOiBmb3JtYXQgJyUwOGx4JyBleHBlY3RzIHR5cGUgJ2xvbmcKLSAgICB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgNiBoYXMgdHlwZSAndTMyJwotICAgIGNtZF9tdGRwYXJ0cy5jOjE0Mjk6IHdhcm5pbmc6IGZvcm1hdCAnJTA4bHgnIGV4cGVjdHMgdHlwZSAnbG9uZwotICAgIHVuc2lnbmVkIGludCcsIGJ1dCBhcmd1bWVudCA3IGhhcyB0eXBlICd1MzInCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZDhiYzU1YTZmYjI4ODc2YWJjYmY0YTNmYzNiNmMzY2U0MjljMWJiMwotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVR1ZSBTZXAgMSAyMDo1ODowMyAyMDA5ICswNDAwCi0KLSAgICBNb3ZlIHVuaW5pdGlhbGl6ZWRfdmFyKCkgbWFjcm8gZnJvbSB1YmlfdWJvb3QuaCB0byBjb21waWxlci5oCi0KLSAgICBUaGlzIGlzIG5lZWRlZCBzbyB0aGF0IHdlIGNvdWxkIHVzZSB0aGlzIG1hY3JvIGZvciBub24tVUJJIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLQotY29tbWl0IGQ3Mjg3MWUxMzg3MDk0OTcyNTY5ZTRiNzdjMjVlODgwMjBmN2I2OGYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBTZXAgMSAxMToyNDo0NSAyMDA5IC0wNTAwCi0KLSAgICBhcm06IFJlbW92ZSAtZm5vLXN0cmljdC1hbGlhc2luZwotCi0gICAgLWZuby1zdHJpY3QtYWxpYXNpbmcgaXMgaGlkZGluZyB3YXJuaW5ncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkNjI4MWZmMGNjMmViYjVkNmE1YzNlMTAyMTgzNzMzNDA3NGY5MmVjCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgU2VwIDEgMTE6MjQ6NDQgMjAwOSAtMDUwMAotCi0gICAgcHBjOiBSZW1vdmUgLWZuby1zdHJpY3QtYWxpYXNpbmcKLQotICAgIC1mbm8tc3RyaWN0LWFsaWFzaW5nIGlzIGhpZGRpbmcgd2FybmluZ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNzk1ZDI0NmMyNzhlNzBiNGJhOTg2OGNjOWYyYzhmYmFkYTQ5ZDM4OAotQXV0aG9yOiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGNvbGRoYXVzLmNvbT4KLURhdGU6CUZyaSBBdWcgMjggMDc6MTQ6MDQgMjAwOSAtMDUwMAotCi0gICAgZ2FsYXh5NTIwMDogQWRkIGNoaXAgc2VsZWN0IHJlZ2lvbiBmb3IgYW4gRXBzb24gUzFEMTUzMTMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAZGVrYXJlc2VhcmNoLmNvbT4KLQotY29tbWl0IDNkZmFkNDBhMDQ1OWY2MzA5OWUxNzdkYzE1YTFkZjM5ZDA0OGY4NjAKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBBdWcgMjcgMDg6MjM6NTUgMjAwOSAtMDUwMAotCi0gICAgQWRkIGFiaWxpdHkgZm9yIGFyY2ggY29kZSB0byBtYWtlIGNoYW5nZXMgYmVmb3JlIHdlIGJvb3QKLQotICAgIEFkZGVkIGEgYXJjaF9wcmVib290X29zKCkgZnVuY3Rpb24gdGhhdCBjcHUgc3BlY2lmaWMgY29kZSBjYW4gaW1wbGVtZW50IHRvCi0gICAgYWxsb3cgZm9yIHZhcmlvdXMgbW9kaWZpY2F0aW9ucyB0byB0aGUgc3RhdGUgb2YgdGhlIG1hY2hpbmUgcmlnaHQgYmVmb3JlCi0gICAgd2UgYm9vdC4gIFRoaXMgY2FuIGJlIHVzZWZ1bCB0byBzZXR1cCByZWdpc3RlciBzdGF0ZSB0byBhIHNwZWNpZmljCi0gICAgY29uZmlndXJhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5ZWEwMDVmYjQ0MjhjOTIyNTM2ZmE3NTk5MWNlOTk3MjMwNGEwMmZiCi1BdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVNhdCBBdWcgMjIgMDM6NDk6NTIgMjAwOSArMDgwMAotCi0gICAgVXNlIGRpZmZlcmVudCBQQkEgdmFsdWUgZm9yIEUxMDAwIFBDSSBhbmQgUENJZSBjYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBBbmRy6SBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0KLWNvbW1pdCA1YjM0YTI5NmQ0N2IyMzZkYWZiY2FmMWM5MWFlMTFiNWFlYjFlZjUxCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU5OjU4IDIwMDkgKzEwMDAKLQotICAgIEFkZCBQQ0kgc3VwcG9ydCB0byBlTkVUIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgZjUwYjYxOWQ5Y2IyOTdiMDEyNWZlNzhkY2Q2ZjI1NWViMGQ5MTY1OQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo1NyAyMDA5ICsxMDAwCi0KLSAgICBpMzg2OiBNb3ZlZCBQQ0kgZnJvbSAjaWZkZWYgdG8gY29uZGl0aW9uYWwgY29tcGlsZSBmb3Igc2M1MjAgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgZWQ3YTFiNjgxZGUxZTMxZDE4ZDViOTJlMjc2N2FlOGRmMzI0MTY4NwotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo1NiAyMDA5ICsxMDAwCi0KLSAgICBpMzg2OiBSZXBsYWNlIFtyZWFkLCB3cml0ZV1fbW1jcl9bYnl0ZSwgd29yZCwgbG9uZ10gd2l0aCBtZW1vcnkgbWFwcGVkIHN0cnVjdHVyZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDliMzJmOTZiNWI5MmJhMTNmZGI0YjVlYjYzNzczNDc1MjIzNWYyNjAKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMjMgMTI6NTk6NTUgMjAwOSArMTAwMAotCi0gICAgTWlzYyBzYzUyMCBjZHAgZml4dXBzCi0KLSAgICBOb3cgdGhhdCB0aGUgUENJLCBTQVRBIGV0IGFsIGNvbXBpbGUgcHJvYmxlbXMgaGF2ZSBiZWVuIHJlc29sdmVkLCB0aGUKLSAgICBjbHVkZ2UgdGhhdCB3YXMgYXBwbGllZCB0byBhdm9pZCB0aGVtIGNhbiBiZSByZW1vdmVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgOTFlZTRlMTgzY2I3YWM1Zjg2ZTc2NzNlYWQ1MTQwMGYxOTkwNjYzNQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo1NCAyMDA5ICsxMDAwCi0KLSAgICBGaXh1cCBzYzUyMF9zcHVuayBib2FyZAotCi0gICAgUHJpbWFyeSBpbnRlbnQgaXMgdG8gcmVzb2x2ZSBidWlsZCBlcnJvcnMgZm9yIHRoaXMgYm9hcmQgd2hpY2ggaGFzIGJlZW4KLSAgICBuZWdsZWN0ZWQgZm9yIGEgdmVyeSBsb25nIHRpbWUuIEkgZG8gbm90IGhhdmUgb25lIG9mIHRoZXNlIGJvYXJkcywgc28gSQotICAgIGNhbm5vdCB0ZXN0IGZ1bmN0aW9uYWxpdHkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA4OTA3YjhkYmM1ODA1MDk0ZjEzMTZkNjQ3MzdkMzQyOGIzODYzNjkzCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU5OjUzIDIwMDkgKzEwMDAKLQotICAgIE1pc2MgZHMxNzIyIGZpeHVwcwotCi0gICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBhIHBhdGNoIHN1Ym1pdHRlZCBieSBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRAotICAgIG9uIDE4dGggTWF5IDIwMDggYXMgcGFydCBvZiBhIGdlbmVyYWwgaTM4NiAvIHNjNTIwIGZpeHVwIHdoaWNoIHdhcyBuZXZlcgotICAgIGFwcGxpZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhOTI1MTBlN2ZhZTUyMzE0NWI1ODc2NWNkYzQ2MTEwZjExNjIyNjBkCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU5OjUyIDIwMDkgKzEwMDAKLQotICAgIE1pc2MgdGlfcGNpMTQxMGEgZml4dXBzCi0KLSAgICBSZW1vdmVkIGRvX3Bpbml0KCkgLSBub3cgZGVjbGFyZWQgaW4gY21kX3BjbWNpYS5jCi0KLSAgICBBZGRlZCAjZGVmaW5lIENPTkZJR19DTURfUENNQ0lBIGFyb3VuZCBwY21jaWFfb2ZmKCkgaW4gbGluZSB3aXRoIG90aGVyCi0gICAgUENNQ0lBIGRyaXZlcnMKLQotICAgIHNpZ25lZC91bnNpZ25lZCB0eXBlIGZpeHVwcwotCi0gICAgQWRkZWQgc2VtaS1jb2xvbiBhZnRlciBkZWZhdWx0OiBsYWJlbCBhcyByZXF1aXJlZCBieSBuZXdlciBnY2MKLQotICAgIFRoZSBvbmx5IGJvYXJkIHRoYXQgYXBwZWFycyB0byB1c2UgdGhpcyBkcml2ZXIgaXMgdGhlIHNjNTIwX3NwdW5rIHdoaWNoCi0gICAgaXMgdmVyeSBvbGQgYW5kIHZlcnkgbGlrZWx5IHZlcnkgYnJva2VuIGFueXdheS4gSSBkbyBub3QgaGF2ZSBvbmUgdG8gdGVzdAotICAgIHdoZXRoZXIgdGhpcyBwYXRjaCBicmVha3MgYW55dGhpbmcgZnVuY3Rpb25hbHksIEkgaGF2ZSBjYW4gb25seSBjaGVjawotICAgIHRoYXQgaXQgY29tcGlsZXMgd2l0aG91dCB3YXJuaW5nIG9yIGVycm9yCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgMzFiOWFiMzNkOTNkODhmZjg5ZjMwNDZhYTQ1YzY4NjY3YTM3OGE1NgotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo1MSAyMDA5ICsxMDAwCi0KLSAgICBNaXNjIFNBVEEgZml4dXBzCi0KLSAgICBDYXN0IGZpcnN0IHBhcmFtZXRlciB0byBzYXRhX2NweSgpCi0KLSAgICBJbiAvZHJpdmVycy9ibG9jay9hdGFfcGlpeC5oLCBhdGFfaWRfaGFzX2xiYTQ4KCksIGF0YV9pZF9oYXNfbGJhKCksCi0gICAgYXRhX2lkX2hhc19kbWEoKSwgYXRhX2lkX3UzMigpLCBhdGFfaWRfdTY0KCkgYXJlIGFsbCBkZWZpbmVkIGluCi0gICAgaW5jbHVkZS9saWJhdGEuaCB3aGljaCBpcyBpbmNsdWRlZCBpbiBhdGEuaCB3aGljaCBpcyBpbmNsdWRlZCBieSBhbGwgZmlsZXMKLSAgICB3aGljaCBpbmNsdWRlIGF0YV9waWl4LmggKG9ubHkgYXRhX3BpaXguYykgc28gdGhlc2UgZGVmaW5pdGlvbnMgYXJlCi0gICAgc3VwdXJmbG91cyB0byAoYW5kIGNvbmxpY3Qgd2l0aCkgdGhpcyBpbiBsaWJhdGEuaC4gSW50ZXJlc3RpbmdseSwgbXkKLSAgICBjb21waWxlciBjb21wbGFpbnMgYWJvdXQgYXRhX2lkX3U2NCBhbHJlYWR5IGJlaW5nIGRlZmluZWQsIGJ1dCBub3QKLSAgICBhdGFfaWRfdTMyCi0KLSAgICBhdGFfZHVtcF9pZCgpIGlzIGRlZmluZWQgaW4gaW5jbHVkZS9saWJhdGEuaCBhbmQgc2hvdWxkIG5vdCBiZSBzdGF0aWMKLSAgICAobWF5YmUgc2hvdWxkIGV2ZW4gdXNlIGF0YV9kdW1wX2lkKCkgaW4gbGliYXRhLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBkNzU0OTAyNDA5OGFmMDkzNzg1MTUxMjYxMjY2YTAyYmUxOWFmNjMzCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU5OjUwIDIwMDkgKzEwMDAKLQotICAgIGkzODY6IE1pc2MgUENJIGZpeHVwcwotCi0gICAgQ2hhbmdlIFBDSV9SRUdJT05fTUVNT1JZIHRvIFBDSV9SRUdJT05fU1lTX01FTU9SWSAoT3JpZ2luYWxseSBkb25lIGluCi0gICAgY29tbWl0IGZmNGU2NmU5M2MxYSwgcmVncmVzc2VkIGJ5IGNvbW1pdCA2ZDdmNjEwYjA5ZjgpCi0KLSAgICBDYXN0IFBDSV9ST01fQUREUkVTU19NQVNLIHRvIHUzMgotCi0gICAgV3JhcCBwcm9iZV9wY2lfdmlkZW8oKSBjYWxsIGluc2lkZSAjaWZkZWYgQ09ORklHX1ZJREVPCi0KLSAgICBDaGFuZ2UgY2FsbCB0byBwY2lfZmluZF9jbGFzcygpIHRvIHBjaV9maW5kX2RldmljZXMoKS4gVGhpcyBpcyBiYXNlZCBvbiBhCi0gICAgcGF0Y2ggc3VibWl0dGVkIG9uIDFzdCBNYXJjaCAyMDA3IChQYXRjaCB0aGF0IGZpeGVzIHRoZSBjb21waWxhdGlvbiBlcnJvcnMKLSAgICBmb3Igc2M1MjBfY2RwIGJvYXJkKSBieSBtdXNodGFxX2sKLQotICAgIFRoaXMgcGF0Y2ggcmVxdWlyZXMgdGhhdCBQQ0lfVklERU9fVkVORE9SX0lEIGFuZCBQQ0lfVklERU9fREVWSUNFX0lEIGJlCi0gICAgc3BlY2lmaWVkIGluIHRoZSBib2FyZCBjb25maWcgZmlsZS4gIER1bW15IHZhbHVlcyBoYXZlIGJlZW4gYWRkZWQgZm9yIHRoZQotICAgIFNDNTIwIENEUCBib2FyZCB0byBlbmFibGUgY29tcGlsYXRpb24sIGJ1dCBzaW5jZSBJIGRvIG5vdCBoYXZlIG9uZSBvZiB0aGVzZSwKLSAgICBJIGRvIGtub3cgd2hhdCB0aGUgdmFsdWVzIHNob3VsZCBiZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDA0ZmY5YWIxNTg3MTRkNDNjZGYyZjRmNmYwMjM1YzNlYTlkMjQxYTIKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMjMgMTI6NTk6NDkgMjAwOSArMTAwMAotCi0gICAgRml4IHNjNTIwIHRpbWVyIGludGVycnVwdCBnZW5lcmF0aW9uCi0KLSAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBoYXMgdGhlIHRpbWVyIGJlaW5nIHN0YXJ0ZWQgYmVmb3JlIHRoZSBpbnRlcnJ1cHQKLSAgICBoYW5kbGVyIGlzIGluc3RhbGxlZC4gSXQgdGhlIGludGVycnVwdCBvY2N1cnMgYmVmb3JlIHRoZSBoYW5kbGVyIGlzCi0gICAgaW5zdGFsbGVkLCB0aGUgdGltZXIgaW50ZXJydXB0IGlzIG5ldmVyIHJlc2V0IGFuZCB0aGUgdGltZXIgc3RvcHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBmM2E4ZDZiMjliMWNkMDFmZGQ5NDBlOGZmN2E2MmIxZGYwZWJiZjgyCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU5OjQ4IDIwMDkgKzEwMDAKLQotICAgIEZpeCBlbnZpcm9ubWVudCBjb25maWd1cmF0aW9uIGZvciBlTkVUIGJvYXJkCi0KLSAgICBUaGUgY3VycmVudCBjb25maWd1cmF0aW9uIG9mIHRoZSBFbnZpcm9ubWVudCBoYXMgdGhlIHJlZHVuZGFudCBjb3B5IG9mIHRoZQotICAgIGVudmlyb25tZW50IGluIHRoZSBCb290IEZsYXNoIC0gVGhpcyB3YXMgbmV2ZXIgdGhlIGludGVudC4gVGhlIEVudmlyb25tZW50Ci0gICAgc2hvdWxkIGluc3RlYWQgYmUgaW4gdGhlIGZpcnN0IHR3byBzZWN0b3JzIG9mIHRoZSBmaXJzdCBTdHJhdGEgRmxhc2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBlYTBjMzc3OThjMzgyM2ZkZDc3ZWRmZmZkMjdiMjAxOTFmOGNhMWYwCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU5OjQ3IDIwMDkgKzEwMDAKLQotICAgIGkzODY6IEZpeCByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgY29tbWl0IDhjNjNkNDc2NTFmNwotCi0gICAgQSBsb2NhbCB2YXJpYWJsZSB3YXMgZGVsZXRlZCB0aGF0IHNob3VsZCBub3QgaGF2ZSBiZWVuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgY2ZiM2E3MzZmZmNmZjNlMzc1M2I5MDJjYWQ1MzZmMjJmY2Y4OTYxZAotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAyMyAxMjo1OTo0NiAyMDA5ICsxMDAwCi0KLSAgICBpMzg2OiBDaGFuZ2UgaW5saW5lIGFzbSBnbG9iYWwgc3ltYm9scyB0byBsb2NhbAotCi0gICAgZ2NjIDQuMy4yIG9wdGltaXNlciBjcmVhdGVzIG11bHRpcGxlIGNvcGllcyBvZiBpbmxpbmUgYXNtICh3aG8ga25vd3Mgd2h5KQotICAgIFJlbW92ZSB1c2Ugb2YgZ2xvYmFsIG5hbWVzIGZvciBsYWJlbHMgdG8gcHJldmVudCAnc3ltYm9sIGFscmVhZHkgZGVmaW5lZCcKLSAgICBlcnJvcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhM2FiOGNhZWU2OTZhMWQ1M2ZjODJmYTMyMWUyYjJmMTc5OTcwMTY4Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDIzIDEyOjU5OjQ1IDIwMDkgKzEwMDAKLQotICAgIGkzODY6IEFkZCBlcnJuby5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgZDRlOGFkYTBmNmQ1MWUwZTNiODA3OTBmYjkzNzVhYzg5MTBmNTM1MgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEF1ZyAyMSAyMzowNToyMSAyMDA5IC0wNTAwCi0KLSAgICBDb25zb2xpZGF0ZSBhcmNoLXNwZWNpZmljIG1lbV9tYWxsb2NfaW5pdCgpIGltcGxlbWVudGF0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGE0ODNhMTY3YmM4ZDgwODE0NWNhMTIyNGEyYzIzOGNkYTkwYWE2MGMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBBdWcgMjEgMjM6MDU6MjAgMjAwOSAtMDUwMAotCi0gICAgU3RhbmRhcmRpemUgbWVtX21hbGxvY19pbml0KCkgaW1wbGVtZW50YXRpb24KLQotICAgIFRoaXMgbGF5cyB0aGUgZ3JvdW5kd29yayB0byBhbGxvdyBhcmNoaXRlY3R1cmVzIHRvIHNoYXJlIGEgY29tbW9uCi0gICAgbWVtX21hbGxvY19pbml0KCkuCi0KLSAgICBOb3RlIHRoYXQgdGhlIHg4NiBpbXBsZW1lbnRhdGlvbiB3YXMgbm90IG1vZGlmaWVkIGFzIGl0IGRpZCBub3QgZml0IHRoZQotICAgIG1vbGQgb2YgYWxsIG90aGVyIGFyY2hpdGVjdHVyZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNWU5M2JkMWM5YWFlYTg4NmM1ZTVjN2MxYjYxMTRhYjM2YzMwNjY4ZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEF1ZyAyMSAyMzowNToxOSAyMDA5IC0wNTAwCi0KLSAgICBDb25zb2xpZGF0ZSBhcmNoLXNwZWNpZmljIHNicmsoKSBpbXBsZW1lbnRhdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA2NWY2ZjA3YjcyYTcxYjgzZDc3NWM0ZDIwZDdlYmNkNmIyZDIwODZkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBKdWwgMjMgMTY6Mzc6MDMgMjAwOSAtMDQwMAotCi0gICAgYXRtZWxfZGZfcG93Mjogc3RhbmRhbG9uZSB0byBjb252ZXJ0IGRhdGFmbGFzaGVzIHRvIHBvdzIKLQotICAgIEF0bWVsIERhdGFGbGFzaGVzIGJ5IGRlZmF1bHQgb3BlcmF0ZSB3aXRoIHBhZ2VzIHRoYXQgYXJlIHNsaWdodGx5IGJpZ2dlcgotICAgIHRoYW4gbm9ybWFsIGJpbmFyeSBzaXplcyAoaS5lLiBtYW55IGFyZSAxMDU2IGJ5dGUgcGFnZXMgcmF0aGVyIHRoYW4gMTAyNAotICAgIGJ5dGVzKS4gIEhvd2V2ZXIsIHRoZXkgYWxzbyBoYXZlIGEgInBvd2VyIG9mIDIiIG1vZGUgd2hlcmUgdGhlIHBhZ2VzIHNob3cKLSAgICB1cCB3aXRoIHRoZSBub3JtYWwgYmluYXJ5IHNpemUuICBUaGUgbGF0dGVyIG1vZGUgaXMgcmVxdWlyZWQgaW4gb3JkZXIgdG8KLSAgICBib290IHdpdGggYSBCbGFja2ZpbiBwcm9jZXNzb3IsIHNvIG1hbnkgcGVvcGxlIHdpc2ggdG8gY29udmVydCB0aGVpcgotICAgIERhdGFGbGFzaGVzIG9uIHRoZWlyIGRldmVsb3BtZW50IHN5c3RlbXMgdG8gdGhpcyBtb2RlLiAgVGhpcyBzdGFuZGFsb25lCi0gICAgYXBwbGljYXRpb24gZG9lcyBqdXN0IHRoYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjYjk1YzdhOTM1YWI5YjUyZGFjNWQwOGU1YmE0MDA3YzVhNDgwZjk3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBTZXAgMiAwNTo1MjozNyAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogY20tYmY1NDg6IGZpeCBkZXZpY2UtPnN0ZGlvX2RldiBmYWxsb3V0Ci0KLSAgICBUaGUgcmVjZW50IDUyY2I0ZDRmYjM0OCBjb21taXQgd2hpY2ggcmVuYW1lZCBkZXZpY2UgdG8gc3RkaW9fZGV2IG1pc3NlZCB0aGUKLSAgICBjbS1iZjU0OCdzIHZpZGVvIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzdiY2RkZTQ2YTdlZjc4NjI4ZjBmMDlmZGM2Y2I2MWJiMWJkN2U3OQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgU2VwIDIgMDQ6MjE6MTYgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGVuYWJsZSA2NGJpdCBwcmludGYgZm9yIG5hbmQKLQotICAgIFNpbmNlIHRoZSBOQU5EIGNvZGUgbm93IHVzZXMgNjRiaXQgY29kZSwgbWFrZSBzdXJlIHdlIGVuYWJsZSBzdXBwb3J0IGZvcgotICAgIEFESSBCbGFja2ZpbiBib2FyZHMgaW4gcHJpbnRmIHRvIGF2b2lkIHRoZSB3YXJuaW5nOgotICAgIG5hbmRfdXRpbC5jOjQ1OjI6IHdhcm5pbmc6ICN3YXJuaW5nIFBsZWFzZSBkZWZpbmUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBmb3IgY29ycmVjdCBvdXRwdXQhCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA5YzQ2ZTcxYWYyYjAzY2NkNzIxYzU2YjFkYzkwNmVhZDcwMmQ2ZmI1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBBdWcgMjQgMjA6NDg6MDQgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IHVzZSBzY3JhdGNoIHBhZCBmb3IgZXhjZXB0aW9uIHN0YWNrCi0KLSAgICBJZiB0aGUgbWVtb3J5IGxheW91dCBwdXNoZXMgdGhlIHN0YWNrIG91dCBvZiB0aGUgZGVmYXVsdCBEQ1BMQiBjb3ZlcmFnZSwKLSAgICB0aGUgZXhjZXB0aW9uIGhhbmRsZXIgbWF5IHRyaWdnZXIgYSBkb3VibGUgZmF1bHQgYnkgdHJ5aW5nIHRvIHB1c2ggb250bwotICAgIHRoZSB1bmNvdmVyZWQgc3RhY2suICBTbyBoYW5kbGUgdGhlIGV4Y2VwdGlvbiBzdGFjayBzaW1pbGFyIHRvIHRoZSBrZXJuZWwKLSAgICBieSB1c2luZyB0aGUgdG9wIG9mIHRoZSBzY3JhdGNoIHBhZCBTUkFNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjlhMjVjZTM1NzhmMzRjOGFjY2I0NzZmNzAwODlmM2E0NGI3OGVkOQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gQXVnIDI0IDIwOjM2OjI1IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBpbmNyZWFzZSBkZWZhdWx0IGNvbnNvbGUgc2l6ZQotCi0gICAgVGhlIGRlZmF1bHQgY29uc29sZSBzaXplIGluZGlyZWN0bHkgYXBwbGllcyB0byBsZW5ndGggb2YgZW52IHZhcnMsIHNvIGEKLSAgICBzbWFsbGVyIGxlbmd0aCBtYWtlcyBpdCBoYXJkIHRvIHBhc3MgbG9uZ2VyIGNvbW1hbmQgbGluZXMgdG8ga2VybmVscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGY1NDFlMWQ2ZDk5YzIyYmJkNGJjOGM4NGZkYjAyYmFhZDAyNzc4NDcKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEF1ZyAyNCAxOTowMzoxOCAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4IGRlYnVnIHByaW50ZiBtb2RpZmllcnMKLQotICAgIFRoZSBkaXNwbGF5X2dsb2JhbF9kYXRhKCkgZnVuY3Rpb24gZ2VuZXJhdGVkIHdhcm5pbmdzIHdpdGggcHJldHR5IG11Y2gKLSAgICBldmVyeSB2YXJpYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDQ2NDBjMmI4Njk5YmNkZDIzNDZhMmM2MzM0ODZmMDdmMDYxYTI5MzkKLUF1dGhvcjogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KLURhdGU6CVRodSBBdWcgMjAgMTk6MjA6NDEgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGNtLWJmNTM3dTogbmV3IGJvYXJkIHBvcnQKLQotICAgIFRoZSBDTS1CRjUzN1UgaXMgc2ltaWxhciB0byB0aGUgQ00tQkY1MzdFIG1vZHVsZSwgYnV0IGVub3VnaCB0byBuZWVkIGl0cwotICAgIG93biBib2FyZCBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIEtyYXBmZW5iYXVlciA8SGFyYWxkLktyYXBmZW5iYXVlckBibHVldGVjaG5peC5hdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjNGRiMzM1YzJlMDgwNWUxY2U0YzMzZDI3OGI3NzQ5MmMwODEyMzUzCi1BdXRob3I6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KLURhdGU6CU1vbiBBdWcgMTcgMTU6MjM6MDIgMjAwOSArMDAwMAotCi0gICAgQmxhY2tmaW46IGNoYW5nZSBnbG9iYWwgZGF0YSByZWdpc3RlciBmcm9tIFA1IHRvIFAzCi0KLSAgICBTaW5jZSB0aGUgQmxhY2tmaW4gQUJJIGZhdm9ycyBoaWdoZXIgc2NyYXRjaCByZWdpc3RlcnMgYnkgZGVmYXVsdCwgdXNlIHRoZQotICAgIGxhc3Qgc2NyYXRjaCByZWdpc3RlciAoUDMpIGZvciBnbG9iYWwgZGF0YSByYXRoZXIgdGhhbiB0aGUgZmlyc3QgKFA1KS4KLSAgICBUaGlzIGFsbG93cyB0aGUgY29tcGlsZXIncyByZWdpc3RlciBhbGxvY2F0b3IgdG8gdXNlIGhpZ2hlciBudW1iZXIgc2NyYXRjaAotICAgIFAgcmVnaXN0ZXJzLCB3aGljaCBpbiB0dXJuIGJldHRlciBtYXRjaGVzIHRoZSBCbGFja2ZpbiBpbnN0cnVjdGlvbiBzZXQsCi0gICAgd2hpY2ggcmVkdWNlcyB0aGUgc2l6ZSBvZiBVLUJvb3QgYnkgbW9yZSB0aGFuIDEwMjQgYnl0ZXMuLi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1NzRiNzBkZjAzZmJhMGVhNjM1ZTJmZTcxZmJkN2I5N2QxOWI3MDZhCi1BdXRob3I6IFJvYmluIEdldHogPHJvYmluLmdldHpAYW5hbG9nLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTEgMTQ6MjA6MTMgMjAwOSArMDAwMAotCi0gICAgQmxhY2tmaW46IGVuYWJsZSBtb3JlIG5ldHdvcmsgY29tbWFuZHMgZm9yIEFESSBkZXYgYm9hcmRzCi0KLSAgICBBZGQgZG5zIGFuZCBudHAgdG8gZGVmYXVsdCBuZXR3b3JraW5nIGNvbW1hbmRzLCBhbmQgYXNrIGZvciBtb3JlIGRoY3AKLSAgICBvcHRpb25zIHRvIGJldHRlciBjb25maWd1cmUgdGhlIG5ldHdvcmsgZW52aXJvbm1lbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyb2Jpbi5nZXR6QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYWE3YjI0OGEwNTMyM2Q0NzIwOTY5MjI3NjAzZTM5YTIyNzc3ZWQ5NQotQXV0aG9yOiBNaWNoYWVsIEhlbm5lcmljaCA8bWljaGFlbC5oZW5uZXJpY2hAYW5hbG9nLmNvbT4KLURhdGU6CVRodSBKdW4gMTggMDk6MTI6NTAgMjAwOSArMDAwMAotCi0gICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wOiBjb21tZW50IENGLUZsYXNoIENhcmQgU3VwcG9ydCBiZXR0ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgSGVubmVyaWNoIDxtaWNoYWVsLmhlbm5lcmljaEBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDY5YzZkMjY4YTI5Y2Y2ZDYxZTA5NmQ4MTVhYmY1YWJmMjQxMzZmNDUKLUF1dGhvcjogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotRGF0ZToJRnJpIEp1bCAxMCAxODozNzoxNSAyMDA5ICswMDAwCi0KLSAgICBCbGFja2ZpbjogdXNlICsoZmlsZXNpemUpIHRvIG1ha2Ugc3VyZSB3ZSBhcmUgb25seSBkb2luZyB3aGF0IGlzIG5lY2Vzc2FyeQotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cm9iaW4uZ2V0ekBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDJkYzg1MWUzYjBmMDdhNTZmODMwNjBmMTM4ODJmZjRiNjJjZjUxMTIKLUF1dGhvcjogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLURhdGU6CVRodSBBdWcgMjAgMTY6MDQ6NDkgMjAwOSArMDIwMAotCi0gICAgU3VwcG9ydCBmb3IgdGhlIENhbGFvIFROWS1BOTI2MC9UTlktQTlHMjAgYm9hcmRzCi0KLSAgICBUaGUgQ2FsYW8gVE5ZLUE5MjYwIGFuZCBUTlktOUcyMCBhcmUgYm9hcmRzIG1hbnVmYWN0dXJlZCBhbmQgc29sZCBieQotICAgIENhbGFvIFN5c3RlbXMgPGh0dHA6Ly93d3cuY2FsYW8tc3lzdGVtcy5jb20+LiBUaGVpciBjb21wb25lbnRzIGFyZSB2ZXJ5Ci0gICAgc2ltaWxhciB0byB0aGUgQVQ5MVNBTTkyNjBFSyBib2FyZCwgc28gdGhlaXIgY29uZmlndXJhdGlvbiBpcyBiYXNlZCBvbgotICAgIHRoZSBjb25maWd1cmF0aW9uIG9mIHRoaXMgYm9hcmQuIFRoZXJlIGFyZSBob3dldmVyIHNvbWUgZGlmZmVyZW5jZXM6Ci0gICAgZGlmZmVyZW50IGNsb2Nrcywgbm8gTENELCBubyBldGhlcm5ldC4gVGhleSBhbHNvIGNhbiB1c2UgU1BJIEVFUFJPTSB0bwotICAgIHN0b3JlIHRoZSBlbnZpcm9ubWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDQ5ZDJjYjRkNjE1M2E2YzE4MjQ5ZGNjYjVkZTVjZmZlYjI2MWE2MWMKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJVGh1IEF1ZyAyMCAyMDo1OToyOCAyMDA5ICswNTMwCi0KLSAgICBhcm06IEtpcmt3b29kOiBhZGQgU1lTUlNUbiBEdXJhdGlvbiBDb3VudGVyIFN1cHBvcnQKLQotICAgIFRoaXMgZmVhdHVyZSBjYW4gYmUgdXNlZCB0byB0cmlnZ2VyIHNwZWNpYWwgY29tbWFuZCAic3lzcnN0Y21kIiB1c2luZwotICAgIHJlc2V0IGtleSBsb25nIHByZXNzIGV2ZW50IGFuZCBlbnZpcm9ubWVudCB2YXJpYWJsZSAic3lzcnN0ZGVsYXkiIGlzIHNldAotICAgICh1c2VmdWwgZm9yIHJlc2V0IHRvIGZhY3Rvcnkgb3IgbWFudWZhY3R1cmluZyBtb2RlIGV4ZWN1dGlvbikKLQotICAgIEtpcmt3b29kIFNvQyBpbXBsZW1lbnRzIGEgaGFyZHdhcmUtYmFzZWQgU1lTUlNUbiBkdXJhdGlvbiBjb3VudGVyLgotICAgIFdoZW4gU1lTUlNUbiBpcyBhc3NlcnRlZCBsb3csIGEgU1lTUlNUbiBkdXJhdGlvbiBjb3VudGVyIGlzIHJ1bm5pbmcuCi0gICAgVGhlIGNvdW50ZXIgdmFsdWUgaXMgc3RvcmVkIGluIHRoZSBTWVNSU1RuIExlbmd0aCBDb3VudGVyIFJlZ2lzdGVyCi0gICAgVGhlIGNvdW50ZXIgaXMgYmFzZWQgb24gdGhlIDI1LU1IeiByZWZlcmVuY2UgY2xvY2sgKDQwbnMpCi0gICAgSXQgaXMgYSAyOS1iaXQgY291bnRlciwgeWllbGRpbmcgYSBtYXhpbXVtIGNvdW50aW5nIGR1cmF0aW9uIG9mCi0gICAgMl4yOS8yNSBNSHogKDIxLjQgc2Vjb25kcykuIFdoZW4gdGhlIGNvdW50ZXIgcmVhY2ggaXRzIG1heGltdW0gdmFsdWUsCi0gICAgaXQgcmVtYWlucyBhdCB0aGlzIHZhbHVlIHVudGlsIGNvdW50ZXIgcmVzZXQgaXMgdHJpZ2dlcmVkIGJ5IHNldHRpbmcKLSAgICBiaXQgMzEgb2YgS1dfUkVHX1NZU1JTVF9DTlQKLQotICAgIEltcGxlbWVudGF0aW9uOgotICAgIFVwb24gbG9uZyByZXNldCBhc3NlcnRpb24gKD4gJHtzeXNyc3RkZWxheX0gaW4gc2Vjcykgc3lzcnN0Y21kIHdpbGwgYmUKLSAgICBleGVjdXRlZCBpZiBwcmUtZGVmaW5lZCBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0gICAgVGhpcyBmZWF0dXJlIHdpbGwgYmUgZGlzYWJsZWQgaWYgInN5c3JzdGRlbGF5IiB2YXJpYWJsZSBpcyB1bnNldC4KLQotICAgIGZvci1leC4KLSAgICBzZXRlbnYgc3lzcnN0X2NtZCAiZWNobyBzdGFydGluZyBmYWN0b3J5IHJlc2V0OwotCQkgICBuYW5kIGVyYXNlIDB4YTAwMDAgMHgyMDAwMDsKLQkJICAgZWNobyBmaW5pc2ggZWQgc3lzcnN0IGNvbW1hbmQ7IgotICAgIHdpbGwgZXJhc2UgcGFydGljdWxhciBuYW5kIHNlY3RvciBpZiB0cmlnZ2VyZWQgYnkgdGhpcyBldmVudAotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotCi1jb21taXQgOTQ1Mzk2N2UyOGM1ZTNhYmJmODU2Zjk1NzM1ZWE2OWJhZTFlNzdmYQotQXV0aG9yOiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgotRGF0ZToJTW9uIEF1ZyAyNCAxODowMzoyNiAyMDA5ICswMjAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIENhbGFvIFNCQzM1LUE5RzIwIGJvYXJkCi0KLSAgICBUaGUgQ2FsYW8gU0JDMzUtQTlHMjAgYm9hcmQgaXMgbWFudWZhY3R1cmVkIGFuZCBzb2xkIGJ5IENhbGFvIFN5c3RlbXMKLSAgICA8aHR0cDovL3d3dy5jYWxhby1zeXN0ZW1zLmNvbT4uIEl0IGlzIGJ1aWx0IGFyb3VuZCBhbiBBVDkxU0FNOUcyMCBBUk0gU29DCi0gICAgcnVubmluZyBhdCA0MDBNSHouIEl0IGZlYXR1cmVzIGFuIEV0aGVybmV0IHBvcnQsIGFuIFNQSSBSVEMgYmFja2VkIGJ5IGFuIG9uYm9hcmQKLSAgICBiYXR0ZXJ5ICwgYW4gU0QvTU1DIHNsb3QsIGEgQ29tcGFjdEZsYXNoIHNsb3QsIDY0TW8gb2YgU0RSQU0sIDI1Nk1vIG9mIE5BTkQKLSAgICBmbGFzaCwgdHdvIFVTQiBob3N0IHBvcnRzLCBhbmQgYW4gVVNCIGRldmljZSBwb3J0LiBNb3JlIGluZm9ybWF0aW9ucyBjYW4gYmUKLSAgICBmb3VuZCBhdCA8aHR0cDovL3d3dy5jYWxhby1zeXN0ZW1zLmNvbS9hcnRpY2xlcy5waHA/bG5nPWVuJnBnPTU5MzY+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgotCi1jb21taXQgMTBiYzI0MWRmYzE1YTA4MjBkOWM1MjQ2OTE3M2I3Y2NhZmVjMGI4NAotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6CVR1ZSBBdWcgMTEgMDI6MzI6MDkgMjAwOSArMDQwMAotCi0gICAgaW14MjdsaXRlOiBhZGQgc3VwcG9ydCBmb3IgaW14MjdsaXRlIGJvYXJkIGZyb20gTG9naWNQRAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIGkuTVgyNy1MSVRFS0lUIGRldmVsb3BtZW50IGJvYXJkIGZyb20KLSAgICBMb2dpY1BELiBUaGlzIGJvYXJkIHVzZXMgaS5NWDI3IFNvQyBhbmQgaGFzIDJNQiBOT1IgZmxhc2gsIDY0TUIgTkFORAotICAgIGZsYXNoLCBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBpbnRlZ3JhdGVkIGludG8gaS5NWDI3LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1MGI1ZmZmNTU4Mjc5NDZjODZhNjBkYjhiMjFhOTM1OGJlNzIwNjY2Ci1BdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Ci1EYXRlOglUdWUgU2VwIDEgMTE6MjY6MjAgMjAwOSArMDIwMAotCi0gICAgYXQ5MXNhbTkyNjAvYWZlYjkyNjA6IEZpeCBTUEkgaW5pdGlhbGl6YXRpb24KLQotICAgIENvbW1pdCA3ZWJhZmI3ZWMxYTAyODVhZjgzODA2MjNjMDA5NTc2ZjkyNTgzYjk4IGludHJvZHVjZWQgYSBtaXN0YWtlIGluIHRoZSBzcGkKLSAgICBpbml0IGZ1bmN0aW9uIGNhbGwgZm9yIHRob3NlIGJvYXJkcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLQotY29tbWl0IGYzZDRmODg3MGU2OWUwZmQxNzczOTc3NzhkOTdkMDc1MWJiZDAyMGEKLUF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotRGF0ZToJVHVlIEF1ZyAxOCAxMToxMzo0NCAyMDA5ICswMjAwCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlIHNldF9jcgotCi0gICAgUmVtb3ZlIGR1cGxpY2F0ZSBzZXRfY3IKLQotICAgIHNldF9jciBpcyBkZWZpbmVkIGluIGJvdGggYXNtLWFybS9wcm9jLWFybXYvc3lzdGVtLmggYW5kCi0gICAgaW5jbHVkZS9hc20tYXJtL3N5c3RlbS5oLiBUaGlzIHBhdGNoIHJlbW92ZXMgaXQgKGFuZCBzb21lIGR1cGxpY2F0ZQotICAgIGRlZmluZXMpIGZyb20gdGhlIGZvcm1lci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLQotY29tbWl0IDNkMzVkODdkNTQ4MmRlMjNjZDVkYzRkNzcyMWIxMDg2MTA3Y2FlNTAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBdWcgMzEgMTk6NTc6NDIgMjAwOSArMDIwMAotCi0gICAgUHJlcGFyZSAyMDA5LjA4Ci0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjMyYTZkZDBiNjEyZWI3YjE0M2Y3ODlmMmEwMjczOTE3NDY4YzA0MQotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglNb24gQXVnIDMxIDE2OjE4OjI0IDIwMDkgKzAyMDAKLQotICAgIEFkZCBjb21tb24gY29kZSBkaXIgZm9yIE1hdHJpeCBWaXNpb24gYm9hcmRzLgotCi0gICAgVGhpcyBmaXhlcyBjdXJyZW50IGJ1aWxkIGZhaWx1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0KLSAgICBtdmJsbTcuYzogZml4IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uCi0gICAgJ212X3Jlc2V0X2Vudmlyb25tZW50JwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDUyZjZjMzRjODVkNmMxNmYyYTQxNDMzYjUwMDA0OTBlY2YzNzQ5OTIKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglTdW4gQXVnIDMwIDExOjA1OjI5IDIwMDkgLTA3MDAKLQotICAgIGJ1Z2ZpeCBDT05GSUdfU1lTX0NPTlNPTEVfSU5GT19RVUlFVAotCi0gICAgVGhlICJjb25zb2xlOiB1bmlmeSBwcmludGluZyBjdXJyZW50IGRldmljZXMiIHBhdGNoIGdvb2ZlZDoKLSAgICBDT05GSUdfU1lTX0NPTlNPTEVfSU5GT19RVUlFVCBpcyBzdXBwb3NlZCB0byAqUkVNT1ZFKiBib290Ci0gICAgdGltZSBub2lzZSwgbm90IGFkZCBpdC4gIFNhaWQgcGF0Y2ggY2hhbmdlZCB0aGUgI2lmbmRlZnMKLSAgICB0byAjaWZkZWY7IHRoaXMgb25lIHJlc3RvcmVzIHRoZW0gdG8gdGhlIHByb3BlciBzZW5zZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgMmQwNGRiMDg4ZTZkZjhhMDA4YmIwOWY2MDQ4NzZhNDUwMzFkZjkzYgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAyOCAxNjo1Njo0NSAyMDA5IC0wNTAwCi0KLSAgICBmc2w6IHNpbXBsaWZ5IHRoZSAibWFjIGlkIiBjb21tYW5kLCBpbXByb3ZlIGJvb3QtdGltZSBpbmZvcm1hdGlvbmFsIG1lc3NhZ2UKLQotICAgIFRoZSAibWFjIGlkIiBjb21tYW5kIHRvb2sgYSA0LWNoYXJhY3RlciBwYXJhbWV0ZXIgYXMgdGhlIGlkZW50aWZpZXIgc3RyaW5nLgotICAgIEhvd2V2ZXIsIGZvciBhbnkgZ2l2ZW4gYm9hcmQsIG9ubHkgb25lIGtpbmQgb2YgaWRlbnRpZmllciBpcyBhY2NlcHRhYmxlLCBzbyBpdAotICAgIG1ha2VzIG5vIHNlbnNlIHRvIGFzayB0aGUgdXNlciB0byB0eXBlIGl0IGluLiAgSW5zdGVhZCwgaWYgdGhlIHVzZXIgZW50ZXJzCi0gICAgIm1hYyBpZCIsIHRoZSBpZGVudGlmaWVyIChhbmQgYWxzbyB0aGUgdmVyc2lvbiwgaWYgaXQncyBOWElEKSB3aWxsCi0gICAgYXV0b21hdGljYWxseSBiZSBzZXQgdG8gdGhlIGNvcnJlY3QgdmFsdWUuCi0KLSAgICBJbXByb3ZlIHRoZSBtZXNzYWdlIHRoYXQgaXMgZGlzcGxheWVkIHdoZW4gRUVQUk9NIGlzIHJlYWQgZHVyaW5nIGJvb3QuICBJdCBub3cKLSAgICBkaXNwbGF5cyAiRUVQUk9NOiIgYW5kIHRoZW4gZWl0aGVyIGFuIGVycm9yIG1lc3NhZ2Ugb3IgdGhlIEVFUFJPTSBpZGVudGlmaWVyCi0gICAgaWYgc3VjY2Vzc2Z1bC4KLQotICAgIElmIHRoZSBpZGVudGlmaWVyIGluIEVFUFJPTSBpcyB2YWxpZCwgdGhlbiBhbHdheXMgcmVqZWN0IGEgYmFkIENSQywgZXZlbiBpZiB0aGUKLSAgICBDUkMgZmllbGQgaGFzIG5vdCBiZWVuIGluaXRpYWxpemVkLgotCi0gICAgRG9uJ3QgZm9yY2UgdGhlIE1BQyBhZGRyZXNzIGNvdW50IHRvIE1BWF9OVU1fUE9SVFMgb3IgbGVzcy4gIEZvcmNpbmcgdGhlIHZhbHVlCi0gICAgdG8gYmUgY2hhbmdlZCByZXN1bHRpbmcgaW4gYW4gaW4tbWVtb3J5IGNvcHkgdGhhdCBkb2VzIG5vdCBtYXRjaCB3aGF0J3MgaW4KLSAgICBoYXJkd2FyZSwgZXZlbiB0aG91Z2ggdGhlIHVzZXIgZGlkIG5vdCByZXF1ZXN0IHRoYXQgY2hhbmdlLgotCi0gICAgRmluYWxseSwgYWx3YXlzIHVwZGF0ZSB0aGUgQ1JDIHZhbHVlIGluIHRoZSBpbi1tZW1vcnkgY29weSBhZnRlciBhbnkgZmllbGQKLSAgICBpcyBjaGFuZ2VkLCBzbyB0aGF0IHRoZSBDUkMgaXMgYWx3YXlzIGNvcnJlY3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzM2YzZjM0MjU1YmQ3Y2YwYmU1MDIyNzVjNTlmMGZmMjJkYzUwMDgwCi1BdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAyMSAwNzoyOTo1OCAyMDA5ICswNTMwCi0KLSAgICA4NXh4OiBBZGRlZCBQQ0llIHN1cHBvcnQgZm9yIFAxIFAyIFJEQgotCi0gICAgQ2FsbCBmc2xfcGNpX2luaXRfcG9ydCgpIHRvIGluaXRpYWxpemUgYWxsIHRoZSBQQ0llIHBvcnRzIG9uIHRoZSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwZDNkNjhiMjVhOGU3NzkwZjU4NTMwZGRjY2JkNjFmOWZjMDI0NWVmCi1BdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAyMSAwNzoyOTo0MiAyMDA5ICswNTMwCi0KLSAgICBkcml2ZXIvZnNsX3BjaTogQWRkIGZzbF9wY2lfaW5pdF9wb3J0IGZ1bmN0aW9uIHRvIGluaXRpYWxpemUgYSBQQ0kgY29udHJvbGxlcgotCi0gICAgZnNsX3BjaV9pbml0X3BvcnQgY2FuIGJlIGNhbGxlZCBmcm9tIGJvYXJkIHNwZWNpZmljIFBDSSBpbml0aWFsaXphdGlvbgotICAgIHJvdXRpbmVzIHRvIHNldHVwIHRoZSBQQ0kgKG9yIFBDSWUpIGNvbnRyb2xsZXIuICBUaGlzIHdpbGwgcmVkdWNlIGNvZGUKLSAgICByZWR1bmRhbmN5IGluIG1vc3Qgb2YgdGhlIDg1eHgvODZ4eCBGU0wgYm9hcmQgcG9ydHMgdGhhdCBzZXR1cCBQQ0kuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMDVmNmY2NjQ3NDMxMmFkMDNjMzliNGNhNDg3NWFmNDZjODczNjZiZgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAyMCAxNzo0MToxMSAyMDA5IC0wNTAwCi0KLSAgICA4NXh4OiBJbXByb3ZlIE1QSUMgaW5pdGlhbGl6YXRpb24KLQotICAgIFRoZSBNUElDIGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIEZyZWVzY2FsZSBlNTAwIENQVXMgd2FzIG5vdCB1c2luZyBJL08KLSAgICBhY2Nlc3NvcnMsIGFuZCBpdCB3YXMgbm90IGlzc3VpbmcgYSByZWFkLWJhY2sgdG8gdGhlIE1QSUMgYWZ0ZXIgc2V0dGluZwotICAgIG1peGVkIG1vZGUuICBUaGlzIG1heSBiZSB0aGUgY2F1c2Ugb2YgYSBzcHVyaW91cyBpbnRlcnJ1cHQgb24gc29tZSBzeXN0ZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzE3Yjc5ZmJkMGM3OTIzOTQ4MzMxZDY1Y2I1ODg3MzRhOWM2ODFmZgotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMjAgMTg6NTk6MTggMjAwOSArMDUzMAotCi0gICAgODV4eDogQWRkZWQgc3VwcG9ydCBmb3IgUDEwMTFSREIgYW5kIFAyMDEwUkRCCi0KLSAgICBQMTAxMSBhbmQgUDIwMTAgYXJlIHNpbmdsZSBjb3JlIHZhcmlhbnRzIG9mIFAxMDEwIGFuZCBQMjAyMCByZXNwZWN0aXZlbHkuCi0gICAgVGhlIGJvYXJkKFJEQikgd2lsbCBiZSBzYW1lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGE3MTNiYTkyNmI0NWRhOWE2ZjkyM2YxYWM5ZTYwYTY2ODUyZTVmMmQKLUF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDIwIDE4OjU3OjQ1IDIwMDkgKzA1MzAKLQotICAgIDg1eHg6IEFkZGVkIHNpbmdsZSBjb3JlIG1lbWJlcnMgb2YgRlNMIFAxeHgvUDJ4eCBwcm9jZXNzb3JzIHNlcmllcwotCi0gICAgUDEwMTEgLSBTaW5nbGUgY29yZSB2YXJpYW50IG9mIFAxMDIwCi0gICAgUDIwMTAgLSBTaW5nbGUgY29yZSB2YXJpYW50IG9mIFAyMDIwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYmY0ODhiYzA5NDlmYzkwMGQxMjk2YTdmMzVhMzhhNmEyOGNiNWZhYgotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMjAgMTg6NTc6MDIgMjAwOSArMDUzMAotCi0gICAgODV4eDogUDEwMjBSREIgU3VwcG9ydCBBZGRlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDNiMWYyNDNiOGRhZDMwYTY0NmEwZjA1NmIwMjY4NTE5ZWFkYmMzYzUKLUF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDIwIDE4OjU1OjM1IDIwMDkgKzA1MzAKLQotICAgIDg1eHg6IEFkZGVkIENPTkZJR19NQVhfQ1BVUyBmb3IgUDEwMjAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3NmI0NzRlMmY1YTIyM2ZjYWJmZWFhNGYxYzhmYjY5OTA2MmI5ODZjCi1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTggMTU6Mzc6MTUgMjAwOSArMDgwMAotCi0gICAgODV4eDogQWRkIEwyU1JBTSBSZWdpc3RlcidzIG1hY3JvIGRlZmluaXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTU4YzY3MjRjOTkzNjhhNGQ4ZWVmMTFlZTdlM2M3YWQwZWYwM2ExNQotQXV0aG9yOiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLURhdGU6CVNhdCBBdWcgMTUgMTU6MDg6MzcgMjAwOSArMDMwMAotCi0gICAgODV4eDogRml4IG1lbW9yeSB0ZXN0IHJhbmdlIG9uIE1QQzg1MzZEUwotCi0gICAgV2l0aCBjdXJyZW50IHZhbHVlcyBvZiBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQgYW5kIENPTkZJR19TWVNfTUVNVEVTVF9FTkQKLSAgICBtZW1vcnkgdGVzdCBoYW5ncyBpZiBydW4gd2l0aG91dCBhcmd1bWVudHMuIFNldCB0aGVtIHRvIHNhbmUgdmFsdWVzLCBzbwotICAgIHRoYXQgYWxsIGF2YWlsYWJsZSA1MTJNQiBvZiBSQU0gZXhjbHVkaW5nIGV4Y2VwdGlvbiB2ZWN0b3JzIGF0IHRoZSBib3R0b20KLSAgICBhbmQgdS1ib290IGNvZGUgYW5kIHN0YWNrIGF0IHRoZSB0b3AgY2FuIGJlIHRlc3RlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlZjQxZjJhMjVjNTU0NjA0MTU2YjU5ZjU5NDVmZWFkYWUyZjNjYjU1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgQXVnIDEyIDAwOjEwOjQ0IDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IFJlbW92ZWQgQkVEQlVHIHN1cHBvcnQgb24gUDFfUDJfUkRCCi0KLSAgICBUbyBtYXRjaCBhbGwgb3RoZXIgODV4eCBwbGF0Zm9ybXMgd2UgYXJlIHJlbW92aW5nIEJFREJVRyBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGI1NjBhYjg1ZWRmYjY4ZGE2NTNiZjI1MjdjMzkwYzNlMTgyMzkyYTEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVNhdCBBdWcgOCAxMDo0MjozMCAyMDA5IC0wNTAwCi0KLSAgICA4NXh4OiBJbml0IHBjaSBldGhlcm5ldCBjYXJkcyBpZiB3ZSBlbmFibGUgYW55IG9uIE1QQzg1NzJEUwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDFiYjYxYjY5ZjdhYmE0OTMxZWRlMzVmZGNhYmQ4ZTVlY2FkMTIxZDcKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBBdWcgNyAxMzoxNjozNCAyMDA5IC0wNTAwCi0KLSAgICB4ZXM6IFVzZSBwcm9wZXIgSU8gYWNjZXNzIGZ1bmN0aW9ucwotCi0gICAgQWxzbyBmaXggc29tZSBtaW5vciB3aGl0ZXNwYWNlIG9kZGl0aWVzIHdoaWxlIHdlJ3JlIGNsZWFuaW5nIHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlYzc5ZDMzYjJjNDFlZThiNmQxMzU0Y2MwOTEwMjE3Yjc2OWM1MDM2Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgQXVnIDcgMTM6MDA6NTUgMjAwOSAtMDUwMAotCi0gICAgODV4eDogTW92ZSB0byBhIGNvbW1vbiBsaW5rZXIgc2NyaXB0Ci0KLSAgICBUaGVyZSBhcmUgcmVhbGx5IG5vIGRpZmZlcmVuY2VzIGJldHdlZW4gYWxsIHRoZSA4NXh4IGxpbmtlciBzY3JpcHRzIHNvCi0gICAgd2UgY2FuIGp1c3QgbW92ZSB0byBhIHNpbmdsZSBjb21tb24gb25lLiAgQm9hcmQgY29kZSBpcyBzdGlsbCBhYmxlIHRvCi0gICAgb3ZlcnJpZGUgdGhlIGNvbW1vbiBvbmUgaWYgbmVlZCBiZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4N2M3NjYxYjQyYWE3NjcyNTM5YjU0YjUxZDNkNWM0MDEzZWM2ZjZjCi1BdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCAzMSAxMjowODoyNyAyMDA5ICswNTMwCi0KLSAgICA4NXh4OiBBZGRlZCBQMTAyMCBQcm9jZXNzb3IgU3VwcG9ydC4KLQotICAgIFAxMDIwIGlzIGFub3RoZXIgbWVtYmVyIG9mIFFvcklRIHNlcmllcyBvZiBwcm9jZXNzb3JzIHdoaWNoIGZhbGxzIGluIFVMRQotICAgIGNhdGVnb3J5LiBJdCBpcyBhbiBlNTAwIGJhc2VkIGR1YWwgY29yZSBTT0MuCi0KLSAgICBCZWluZyBhIHNjYWxlZCBkb3duIHZlcnNpb24gb2YgUDIwMjAgaXQgaGFzIGZvbGxvd2luZyBkaWZmZXJlbmNlczoKLSAgICAtIDUzM01IeiAtIDgwME1IeiBjb3JlIGZyZXF1ZW5jeS4KLSAgICAtIDI1NktieXRlIEwyIGNhY2hlCi0gICAgLSBFdGhlcm5ldCBjb250cm9sbGVycyB3aXRoIGNsYXNzaWZpY2F0aW9uIGNhcGFiaWxpdGllcy4KLSAgICBBbHNvIHRoZSBTT0MgaXMgcGluIGNvbXBhdGlibGUgd2l0aCBQMjAyMAotCi0gICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDcyOGVjZTM0M2U4YmIyYTY2ZWU5NzdjNDlkNDU1NDM5ZTNiMjhkYTkKLUF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDUgMTM6Mjk6MjQgMjAwOSArMDUzMAotCi0gICAgODV4eDogQWRkIHN1cHBvcnQgZm9yIFAyMDIwUkRCIGJvYXJkCi0KLSAgICBUaGUgY29kZSBiYXNlIGFkZHMgUDEgJiBQMiBSREIgcGxhdGZvcm1zIHN1cHBvcnQuCi0gICAgVGhlIGZvbGRlciBhbmQgZmlsZSBuYW1lcyBjYW4gY2F0ZXIgdG8gZnV0dXJlIFNPQ3Mgb2YgUDEvUDIgZmFtaWx5LgotICAgIFAxICYgUDIgcHJvY2Vzc29ycyBhcmUgODV4eCBwbGF0Zm9ybXMsIHBhcnQgb2YgRnJlZXNjYWxlIFFvcklRIHNlcmllcy4KLQotICAgIFRlc3RlZCBmb2xsb3dpbmcgb24gUDIwMjBSREI6Ci0gICAgMS4gZVRTRUNzCi0gICAgMi4gRERSLCBOQU5ELCBOT1IsIEkyQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwZTg3MDk4MGE2NDU4NGE1OTFhZjc3NWJiOWM5ZmU5NDUwMTI0ZGY5Ci1BdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCAzMSAxMjowODoxNCAyMDA5ICswNTMwCi0KLSAgICA4eHh4OiBSZW1vdmVkIENPTkZJR19OVU1fQ1BVUyBmcm9tIDg1eHgvODZ4eAotCi0gICAgVGhlIG51bWJlciBvZiBDUFVzIGFyZSBnZXR0aW5nIGRldGVjdGVkIGR5bmFtaWNhbGx5IGJ5IGNoZWNraW5nIHRoZQotICAgIHByb2Nlc3NvciBTVlIgdmFsdWUuICBBbHNvIHJlbW92ZWQgQ09ORklHX05VTV9DUFVTIHJlZmVyZW5jZXMgZnJvbSBhbGwKLSAgICB0aGUgcGxhdGZvcm1zIHdpdGggODV4eC84Nnh4IHByb2Nlc3NvcnMuCi0KLSAgICBUaGlzIGNhbiBoZWxwIHRvIHVzZSB0aGUgc2FtZSB1LWJvb3QgaW1hZ2UgYWNyb3NzIHRoZSBwbGF0Zm9ybXMuCi0KLSAgICBBbHNvIHJldmFtcGVkIGFuZCBjb3JyZWN0ZWQgZmV3IEZyZWVzY2FsZSBDb3B5cmlnaHQgbWVzc2FnZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMThiYWNjMjAyN2Y4NTMxZDhkZWMxNWJhOGRhMzI0MmRmYjRlNjNmMwotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMzEgMTI6MDc6NDUgMjAwOSArMDUzMAotCi0gICAgOHh4eDogUmVmYWN0b3JlZCBjb21tb24gY3B1IHNwZWNpZmljIGNvZGUgZm9yIDg1eHgvODZ4eCBpbnRvIG9uZSBmaWxlLgotCi0gICAgUmVtb3ZlZCBzYW1lIGNvZGUgcGllY2VzIGZyb20gY3B1L21wYzg1eHgvY3B1LmMgYW5kIGNwdS9tcGM4Nnh4L2NwdS5jCi0gICAgYW5kIG1vdmVkIHRvIGNwdS9tcGM4eHh4L2NwdS5jKG5ldyBmaWxlKQotCi0gICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDdiMThjMjI3Yjg0N2U0NzgyZWIxNDkyMjE5ZWJkNTU1ZjUyMWIwOGIKLUF1dGhvcjogQWxleCBEdWJvdiA8b2FrYWRAeWFob28uY29tPgotRGF0ZToJRnJpIEF1ZyA3IDE1OjI4OjMyIDIwMDkgKzEwMDAKLQotICAgIHN0eDogY3JlYXRlIGNvbW1vbiB2ZW5kb3IvYm9hcmQgaGllcmFyY2h5IGZvciBTVHggYm9hcmRzCi0KLSAgICBNb3ZlIGZpbGVzIGJlbG9uZ2luZyB0byB0aGUgU1R4IGJvYXJkcyBpbnRvIGNvbW1vbiB2ZW5kb3IgZGlyZWN0b3J5IGFuZAotICAgIHVwZGF0ZSB0aGUgTWFrZWZpbGUgdG8gcmVmbGVjdCB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxleCBEdWJvdiA8b2FrYWRAeWFob28uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiYWZkZjlhYTlkYmI2OWQ5MzdiNzJkYjE3ZWQ1ODAwOTk4YzU5NTIzCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgQXVnIDQgMTc6Mzg6MDAgMjAwOSAtMDUwMAotCi0gICAgODV4eDogUmVtb3ZlIHVudXNlZCBDT05GSUdfQ0xFQVJfTEFXMCBkZWZpbmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3M2FhY2M1MjI4NDk0ODZiNjBhNTYxMWY2NzhmMGJmMWMzMDUzNzc5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgQXVnIDYgMTg6Mzg6NDMgMjAwOSAtMDUwMAotCi0gICAgODZ4eDogUmVtb3ZlIHJlZHVkYW50IFBMQVRGT1JNX0NQUEZMQUdTCi0KLSAgICBGb3IgaGlzdG9yaWMgcmVhc29ucyB3ZSBoYWQgZGVmaW5lZCBzb21lIGFkZGl0aW9uYWwgUExBVEZPUk1fQ1BQRkxBR1MgbGlrZToKLQotICAgIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX01QQzg2eHg9MQotICAgIFBMQVRGT1JNX0NQUEZMQUdTICs9IC1EQ09ORklHX01QQzg2NDE9MQotCi0gICAgSG93ZXZlciB0aGVzZSBhcmUgYWxsIGNhcHR1cmVkIGluIHRoZSBjb25maWcuaCBhbmQgdGh1cyByZWR1ZGFudC4gIEFsc28KLSAgICBtb3ZlZCBjb21tb24gODZ4eCBmbGFncyBpbnRvIGNwdS9tcGM4Nnh4L2NvbmZpZy5tay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1M2VmYTFmMWFjYWNhY2I3NmZhOWEyMWIwOWIzMjk0NzgzYTExYzAzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgQXVnIDYgMTg6Mjg6MzQgMjAwOSAtMDUwMAotCi0gICAgODV4eDogUmVtb3ZlIHJlZHVkYW50IFBMQVRGT1JNX0NQUEZMQUdTCi0KLSAgICBGb3IgaGlzdG9yaWMgcmVhc29ucyB3ZSBoYWQgZGVmaW5lZCBzb21lIGFkZGl0aW9uYWwgUExBVEZPUk1fQ1BQRkxBR1MKLSAgICBsaWtlOgotCi0gICAgUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfRTUwMD0xCi0gICAgUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODV4eD0xCi0gICAgUExBVEZPUk1fQ1BQRkxBR1MgKz0gLURDT05GSUdfTVBDODU0OD0xCi0KLSAgICBIb3dldmVyIHRoZXNlIGFyZSBhbGwgY2FwdHVyZWQgaW4gdGhlIGNvbmZpZy5oIGFuZCB0aHVzIHJlZHVkYW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDMzN2Y5ZmRlMmU5MzE3YzFkOWU4NWE0YTg5NTVhMmYxNDczMGEwMGYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKdWwgMzAgMTU6NTQ6MDcgMjAwOSAtMDUwMAotCi0gICAgODV4eDogQWRkIGEgMzYtYml0IHBoeXNpY2FsIGNvbmZpZ3VyYXRpb24gZm9yIE1QQzg1MzZEUwotCi0gICAgV2UgbW92ZSBhbGwgSU8gYWRkcmVzc2VkIChDQ1NSLCBsb2NhbGJ1cywgUENJKSBhYm92ZSB0aGUgNEcgYm91bmRhcnkKLSAgICB0byBhbGxvdyBmb3IgbGFyZ2VyIG1lbW9yeSBzaXplcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZWNlYWQ4NGQ1NmIwY2VkNjdiNzI3ZjVjZTIxYmEwOGM1M2I1ZjA5ZQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyA0IDA5OjEwOjAzIDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IENsZWFudXAgd2hpdGVzcGFjZSBpbiBtcGM4NTM2ZHMuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGFkMTllN2E1ZDJkZTMzNzA2NGNlNzcyOGQ2NTA0ZGY5NjQ4ZjVkMzEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBBdWcgNSAwNzo1OTozNSAyMDA5IC0wNTAwCi0KLSAgICBwY2kvZnNsX3BjaV9pbml0OiBSZXdvcmsgUENJIEFUTVUgc2V0dXAgdG8gaGFuZGxlID40RyBvZiBtZW1vcnkKLQotICAgIFRoZSBvbGQgUENJIEFUTVUgc2V0dXAgY29kZSB3b3VsZCBqdXN0IG1pbWljIHRoZSBQQ0kgcmVnaW9ucyBpbnRvIHRoZQotICAgIEFUTVUgcmVnaXN0ZXJzLiAgRm9yIHNpbXBsZSBtZW1vcnkgbWFwcyBpbiB3aGljaCBhbGwgbWVtb3J5LCBNTUlPLCBldGMKLSAgICBzcGFjZSBmaXQgaW50byA0RyB0aGlzIHdvcmtzIG9rLiAgSG93ZXZlciB0aGVyZSBhcmUgaXNzdWVzIHdpdGggd2UgaGF2ZQotICAgID40RyBvZiBtZW1vcnkgYXMgd2Uga25vdyBjYW4ndCBhY2Nlc3MgYWxsIG9mIG1lbW9yeSBhbmQgd2UgbmVlZCB0bwotICAgIGVuc3VyZSB0aGF0IFBDSUNTUkJBUiAoUEVYQ1NSQkFSIG9uIFBDSWUpIGlzbid0IG92ZXJsYXBwaW5nIHdpdGgKLSAgICBhbnl0aGluZyBzaW5jZSB3ZSBjYW4ndCB0dXJuIGl0IG9mZi4KLQotICAgIFdlIGZpcnN0IHNldHVwIG91dGJvdW5kIHdpbmRvd3MgYmFzZWQgb24gd2hhdCB0aGUgYm9hcmQgY29kZSBzZXR1cAotICAgIGluIHRoZSBwY2kgcmVnaW9ucyBmb3IgTU1JTyBhbmQgSU8gYWNjZXNzLglOZXh0IHdlIHBsYWNlIFBDSUNTUkJBUgotICAgIGJlbG93IHRoZSBNTUlPIHdpbmRvdy4gIEFmdGVyIHdoaWNoIHdlIHRyeSB0byBzZXR1cCB0aGUgaW5ib3VuZCB3aW5kb3dzCi0gICAgdG8gbWFwIGFzIG11Y2ggb2YgbWVtb3J5IGFzIHBvc3NpYmxlLgotCi0gICAgT24gUENJZSBiYXNlZCBjb250cm9sbGVycyB3ZSBhcmUgYWJsZSB0byBvdmVybWFwIHRoZSBBVE1VIHNldHVwIHNpbmNlCi0gICAgUlggJiBUWCBsaW5rcyBhcmUgc2VwYXJhdGUgYnV0IHJlcG9ydCB0aGUgcHJvcGVyIGFtb3VudCBvZiBpbmJvdW5kCi0gICAgYWRkcmVzcyBzcGFjZSB0byB0aGUgcmVnaW9uIHRyYWNraW5nIHRvIGVuc3VyZSB0aGVyZSBpcyBubyBvdmVybGFwLgotCi0gICAgT24gUENJIGJhc2VkIGNvbnRyb2xsZXJzIHdlIHVzZSBhcyBtYW55IGluYm91bmQgd2luZG93cyBhcyBhdmFpbGFibGUgdG8KLSAgICBtYXAgYXMgbXVjaCBvZiB0aGUgbWVtb3J5IGFzIHBvc3NpYmxlLgotCi0gICAgQWRkaXRpb25hbGx5IHdlIGNoYW5nZWQgYWxsIHRoZSBDQ1NSIHJlZ2lzdGVyIGFjY2VzcyB0byB1c2UgcHJvcGVyIElPCi0gICAgYWNjZXNzb3IgZnVuY3Rpb25zLiAgQWxzbyBoYWQgdG8gYWRkIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTIHRvIHNvbWUKLSAgICA4Nnh4IHBsYXRmb3JtcyB0aGF0IGRpZG4ndCBoYXZlIGl0IGRlZmluZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgODI5NWI5NDQwMDQ0OTU4NjUwNWZmZTM0ZWMwMjRmZWIzZDJjOGZlNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEF1ZyA1IDA3OjQ5OjI3IDIwMDkgLTA1MDAKLQotICAgIHBjaS9mc2xfcGNpX2luaXQ6IFVzZSBQQ0llIGNhcGFiaWxpdHkgdG8gZGV0ZXJtaW5lIGlmIGNvbnRyb2xsZXIgaXMgUENJZQotCi0gICAgQ2hhbmdlIHRoZSBjb2RlIHRvIHVzZSB0aGUgUENJZSBjYXBhYmlsaXRpZXMgcmVnaXN0ZXIgdG8gZGV0ZXJtaW5lIGlmIHdlCi0gICAgYXJlIGEgUENJZSBjb250cm9sbGVyIG9yIG5vdC4gIEFkZGl0aW9uYWxseSBjbGVhbmVkIHVwIHNvbWUgd2hpdGUgc3BhY2UKLSAgICBhbmQgZm9ybWF0dGluZyBpbiB0aGUgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjYjE1MWFhMmNmNWZiYjFlNDEyZmM3NjNhM2E2MTE3NThmMDY2MjM4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gQXVnIDMgMjE6MDI6MDIgMjAwOSAtMDUwMAotCi0gICAgcGNpL2ZzbF9wY2lfaW5pdDogRm9sZCBmc2xfcGNpX3NldHVwX2luYm91bmRfd2luZG93cyBpbnRvIGZzbF9wY2lfaW5pdAotCi0gICAgRXZlcnkgcGxhdGZvcm0gdGhhdCBjYWxscyBmc2xfcGNpX2luaXQgY2FsbHMgZnNsX3BjaV9zZXR1cF9pbmJvdW5kX3dpbmRvd3MKLSAgICBiZWZvcmUgaXQgY2FsbHMgZnNsX3BjaV9pbml0LiAgVGhlcmUgaXNuJ3QgYW55IHJlYXNvbiB0byBqdXN0IGNhbGwgaXQKLSAgICBmcm9tIGZzbF9wY2lfaW5pdCBhbmQgc2ltcGxpZnkgdGhpbmdzIGEgYml0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGZiMzE0M2IzNWViNTg5MGVjNzJlNzlkMTdhNjA2OGE4NGEwNTdkNDcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBBdWcgMyAyMDo0NDo1NSAyMDA5IC0wNTAwCi0KLSAgICBwY2kvZnNsX3BjaV9pbml0OiBGb2xkIHBjaV9zZXR1cF9pbmRpcmVjdCBpbnRvIGZzbF9wY2lfaW5pdAotCi0gICAgRXZlcnkgcGxhdGZvcm0gdGhhdCBjYWxscyBmc2xfcGNpX2luaXQgY2FsbHMgcGNpX3NldHVwX2luZGlyZWN0IGJlZm9yZQotICAgIGl0IGNhbGxzIGZzbF9wY2lfaW5pdC4gIFRoZXJlIGlzbid0IGFueSByZWFzb24gdG8ganVzdCBjYWxsIGl0IGZyb20KLSAgICBmc2xfcGNpX2luaXQgYW5kIHNpbXBsaWZ5IHRoaW5ncyBhIGJpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyODg4N2Q4MzFiMDJjNjZjY2MxMGQ3ZjEzNzkyMDRiNWE2MmY0NTQzCi1BdXRob3I6IEFuZHLDqSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglUaHUgQXVnIDI3IDE0OjQ4OjM1IDIwMDkgKzAyMDAKLQotICAgIFVzZSBjb21tb24gY29kZSBmb3IgTWF0cml4IFZpc2lvbiBib2FyZHMKLQotICAgIENsZWFuIHVwIGV4aXN0aW5nIGJvYXJkcyAobXZCQy1QL01QQzUyMDAgYW5kIG12QkwtTTcvTVBDODM0MykgYnkKLSAgICB1c2luZyBjb21tb24gY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHLpIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLQotY29tbWl0IDA1ZjkxYTY1YWJjMzE4MGUyODk2Y2Q4ZGRlZTdhMzRiMWQxY2U2ZTAKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMjYgMjE6Mjc6MzcgMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogbXBjODM0OWl0eCAtIGFjY29tbW9kYXRlIGxhcmdlciBrZXJuZWwgc2l6ZXMgJiB1bnplcm8gdGhlIGJvb3RkZWxheQotCi0gICAgYXBwYXJlbnRseSB0aGUgSVRYIHdhcyBtaXNzZWQgbGFzdCByb3VuZC4KLQotICAgIEFsc28gbWFrZSBib290ZGVsYXkgY29uc2lzdGVudCB3aXRoIG90aGVyIGJvYXJkcywgc28gYXMgdG8gZ2l2ZSBvbiB0aGUKLSAgICBvcHBvcnR1bml0eSB0byBmaXggbWlzdGFrZW5seSBzZXQgYm9vdGNtZCB3aXRob3V0IGhhdmluZyBjaGVja2VkIGZvciBhbgotICAgIGJvb3RkZWxheSB6ZXJvIHNldHRpbmcgZmlyc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2M4NjFmNzEyN2YyMDBlNzA0YmFhZjA2MWE3ZjUwOGUzYzkzZjJhMwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAyNiAyMToyNTo0NiAyMDA5IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBtYXRjaCBkdGIgZmlsZW5hbWUgcmVmZXJlbmNlcyB0byB0aGVpciBkdHMgZXF1aXZhbGVudHMgaW4gdGhlIGxpbnV4IGtlcm5lbAotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc3YjM1MWNkMGYyMDQ4M2VlZmEwOWJlYmViYjNlMGNiZjU1NTViMmMKLUF1dGhvcjogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotRGF0ZToJVHVlIEF1ZyAxOCAxMDoxMDo0MiAyMDA5IC0wNDAwCi0KLSAgICBOQU5EOiBEYVZpbmNpOiBWMiBBZGRpbmcgNCBCSVQgRUNDIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyA0IEJJVCBFQ0Mgc3VwcG9ydCBpbiB0aGUgRGFWaW5jaSBOQU5ECi0gICAgZHJpdmVyLiBUZXN0ZWQgb24gYm90aCB0aGUgRE0zNTUgYW5kIERNMzY1LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjgzYjdmOWU4YTVkMTMzNGUyNDUwNmVhNTk1M2RkODcxNTk2ZWE4YQotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglNb24gQXVnIDEwIDEzOjI3OjU2IDIwMDkgLTA0MDAKLQotICAgIE1URDpOQU5EOiBBREQgbmV3IEVDQyBtb2RlIE5BTkRfRUNDX0hXX09PQl9GSVJTVAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZXcgbW9kZSBOQU5EX0VDQ19IV19PT0JfRklSU1QgaW4gdGhlIG5hbmQgY29kZSB0bwotICAgIHN1cHBvcnQgNC1iaXQgRUNDIG9uIFRJIERhVmluY2kgZGV2aWNlcyB3aXRoIGxhcmdlIHBhZ2UgKHVwIHRvIDJLKSBOQU5ECi0gICAgY2hpcHMuICBUaGlzIEVDQyBtb2RlIGlzIHNpbWlsYXIgdG8gTkFORF9FQ0NfSFcsIHdpdGggdGhlIGV4Y2VwdGlvbiBvZgotICAgIHJlYWRfcGFnZSBBUEkgdGhhdCBmaXJzdCByZWFkcyB0aGUgT09CIGFyZWEsIHJlYWRzIHRoZSBkYXRhIGluIGNodW5rcywKLSAgICBmZWVkcyB0aGUgRUNDIGZyb20gT09CIGFyZWEgdG8gdGhlIEVDQyBodyBlbmdpbmUgYW5kIHBlcmZvcm0gYW55Ci0gICAgY29ycmVjdGlvbiBvbiB0aGUgZGF0YSBhcyBwZXIgdGhlIEVDQyBzdGF0dXMgcmVwb3J0ZWQgYnkgdGhlIGVuZ2luZS4KLQotICAgIFRoaXMgcGF0Y2ggaGFzIGJlZW4gYWNjZXB0ZWQgYnkgQW5kcmV3IE1vcnRvbiBhbmQgY2FuIGJlIGZvdW5kIGF0Ci0KLSAgICBodHRwOi8vdXNlcndlYi5rZXJuZWwub3JnL35ha3BtL21tb3RtL2Jyb2tlbi1vdXQvbXRkLW5hbmQtYWRkLW5ldy1lY2MtbW9kZS1lY2NfaHdfb29iX2ZpcnN0LnBhdGNoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU25laGEgTmFybmFrYWplIDxuc25laGFwcmFiaGFAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzZmYWI5OTdkODVkODllZTdmZDJjN2ZkNjA1N2ZhYjc4NmQ1NTZhYQotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6CVR1ZSBBdWcgMTEgMDI6MzI6NTQgMjAwOSArMDQwMAotCi0gICAgbXhjX25hbmQ6IGFkZCBuYW5kIGRyaXZlciBmb3IgTVgyL01YMwotCi0gICAgRHJpdmVyIGZvciBORkMgTkFORCBjb250cm9sbGVyIGZvdW5kIG9uIEZyZWVzY2FsZSdzIE1YMiBhbmQgTVgzCi0gICAgcHJvY2Vzc29ycy4gUG9ydGVkIGZyb20gTGludXguIFRlc3RlZCBvbmx5IHdpdGggaS5NWDI3IGJ1dCBzaG91bGQKLSAgICB3b3JrcyB3aXRoIG90aGVyIE1YMiBhbmQgTVgzIHByb2Nlc3NvcnMgdG9vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMmM2NWI0N2VmZmNiM2QwYWEyM2U1ODU5NjUzOGFjZDMzOGFjN2M1Ci1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CU1vbiBBdWcgMTAgMTM6Mjc6NDYgMjAwOSAtMDQwMAotCi0gICAgTkFORDogQUREIHBhZ2UgUGFyYW1ldGVyIHRvIGFsbCByZWFkX3BhZ2UvcmVhZF9wYWdlX3JhdyBBUEkncwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgbmV3ICJwYWdlIiBwYXJhbWV0ZXIgdG8gYWxsIE5BTkQgcmVhZF9wYWdlL3JlYWRfcGFnZV9yYXcKLSAgICBBUElzLiAgVGhlIHJlYWRfcGFnZSBBUEkgZm9yIHRoZSBuZXcgbW9kZSBFQ0NfSFdfT09CX0ZJUlNUIHJlcXVpcmVzIHRoZQotICAgIHBhZ2UgaW5mb3JtYXRpb24gdG8gc2VuZCB0aGUgUkVBRE9PQiBjb21tYW5kIGFuZCByZWFkIHRoZSBPT0IgYXJlYSBiZWZvcmUKLSAgICB0aGUgZGF0YSBhcmVhLgotCi0gICAgVGhpcyBwYXRjaCBoYXMgYmVlbiBhY2NlcHRlZCBieSBBbmRyZXcgTW9ydG9uIGFuZCBjYW4gYmUgZm91bmQgYXQKLSAgICBodHRwOi8vdXNlcndlYi5rZXJuZWwub3JnL35ha3BtL21tb3RtL2Jyb2tlbi1vdXQvbXRkLW5hbmQtYWRkLXBhZ2UtcGFyYW1ldGVyLXRvLWFsbC1yZWFkX3BhZ2UtcmVhZF9wYWdlX3Jhdy1hcGlzLnBhdGNoCi0KLSAgICBXRSB3b3VsZCBsaWtlIHRoaXMgdG8gYmVjb21lIHBhcnQgb2YgdGhlIHUtYm9vdCBHSVQgYXMgd2VsbAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNuZWhhIE5hcm5ha2FqZSA8bnNuZWhhcHJhYmhhQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRlNDI1MDkyOWYzN2U2YzE2ODYwNzQxYjc0NTQ2YmVkYmUwYmRhYmEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVsIDIxIDE3OjEzOjQwIDIwMDkgKzAyMDAKLQotICAgIDgzeHgsIGttZXRlcjE6IGFkZGVkIE5BTkQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlY2FkMjg5ZmM2YmQ5ZDg5ZWY0ZDUwOTNjYzdiNmZkNzEyZmQwZDI5Ci1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJVHVlIEp1bCAyMSAxMTo1ODowNCAyMDA5ICswOTAwCi0KLSAgICBPbmVOQU5EOiBSZW1vdmUgdW51c2VkIHJlYWRfc3BhcmVyYW0KLQotICAgIFJlbW92ZSB1bnVzZWQgcmVhZF9zcGFyZXJhbSBhbmQgYWRkIHVubG9ja19hbGwgYXMga2VybmVsIGRvZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0MDNjZTFmNzU5YjVhY2VjODUxNGNkN2UxMGNlNzY3MDRmZWQ1MTljCi1BdXRob3I6IE1hdHRoaWFzIEthZWhsY2tlIDxtYXR0aGlhc0BrYWVobGNrZS5uZXQ+Ci1EYXRlOglUaHUgSnVsIDE2IDIxOjE5OjI5IDIwMDkgKzAyMDAKLQotICAgIEtCOTIwMjogQWRkIE5BTkQgc3VwcG9ydAotCi0gICAgQWRkIEtCOTIwMiBOQU5EIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgS2FlaGxja2UgPG1hdHRoaWFzQGthZWhsY2tlLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNlMzI3N2E2ZjJjMDgyZjM5NTk2ZDNkM2Q4OGRkMGE1YmM5MTQzOWQKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+Ci1EYXRlOglUdWUgSnVsIDIxIDExOjU4OjA0IDIwMDkgKzA5MDAKLQotICAgIE9uZU5BTkQ6IFJlbW92ZSB1bnVzZWQgcmVhZF9zcGFyZXJhbQotCi0gICAgUmVtb3ZlIHVudXNlZCByZWFkX3NwYXJlcmFtIGFuZCBhZGQgdW5sb2NrX2FsbCBhcyBrZXJuZWwgZG9lcwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDBkMDQyMDM3YjNjZjg2OTNlYTBmNzkzZDBjMjkyNDMwYmZjNWE5NWMKLUF1dGhvcjogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBjb2xkaGF1cy5jb20+Ci1EYXRlOglUdWUgQXVnIDI1IDEwOjMwOjI2IDIwMDkgLTA1MDAKLQotICAgIGdhbGF4eTUyMDA6IENsZWFudXAgdHlwbyBhbmQgdHJhaWxpbmcgd2hpdGVzcGFjZQotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBkZWthcmVzZWFyY2guY29tPgotCi1jb21taXQgZjZhMzA5MDgwYjJkYTllNTA5YjVlZThkMDkxZGNhNWUxNzU0MTViNwotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgSnVsIDIyIDE4OjQyOjQ1IDIwMDkgKzAwMDAKLQotICAgIENvbGRGaXJlOiBGaXggY29tcGlsZSB3YXJuaW5nIG1lc3NhZ2VzCi0KLSAgICBDaGFuZ2UgJTA4bFggdG8gJTA4WCBpbiBib2FyZC5jLiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlCi0gICAgJ29zY2lsbGF0b3InIGluIG1jZjUyMjd4L2NwdV9pbml0LmMgYW5kICdzY20yJyBpbgotICAgIG1jZjUzMngvY3B1X2luaXQuYy4gUHJvdmlkZSBhcmd1bWVudCB0eXBlIGNhc3QgaW4KLSAgICBkcml2ZXJzL2RtYS9NQ0RfZG1hQXBpLmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA4OGM4MTFiMTUzNzcxYTNkMWJmZTk1ODI5N2M2OTcyMmVmYjI3OGU5Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLURhdGU6CVdlZCBKdWwgMjIgMTY6MzI6MzkgMjAwOSArMDAwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBtaXNzaW5nIF9JT19CQVNFIHdoaWNoIGNhdXNlZCBjb21waWxlIGVycm9yCi0KLSAgICBUaGUgY29tcGlsZSBlcnJvciB3YXMgY2F1c2VkIGJ5IGEgcmVjZW50IHBhdGNoLiBBZmZlY3RlZCBwbGF0Zm9ybXMgLQotICAgIE01MjUzREVNTy5oLCBNNTI1M0VWQkUuaCwgYW5kIE01NDQ1NUVWQi5oLiBBZGRpbmcgdGhlIF9JT19CQVNFCi0gICAgYXV0b21hdGljYWxseSBkZWZpbmVkIHRvIDAgaW4gYXNtLW02OGsvaW8uaCBpZiBpdCBpc24ndCBzZXQgaW4KLSAgICBwbGF0Zm9ybSBjb25maWd1cmF0aW9uIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAzYTdiMmMyMWZiMDhiMDIyZTNlNjI0Y2QwNzEwMDJiNGFhZWQxNjA2Ci1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci1EYXRlOglXZWQgSnVsIDIyIDE3OjEzOjI0IDIwMDkgKzAyMDAKLQotICAgIFN1cHBvcnQgdXAgdG8gNyBiYW5rcyBmb3IgaWRzIGFzIHNwZWNpZmllZCBpbiBKRURFQyBKRVAxMDZaCi0KLSAgICBzZWUgaHR0cDovL3d3dy5qZWRlYy5vcmcvZG93bmxvYWQvc2VhcmNoL2plcDEwNloucGRmCi0gICAgQWRkIHNvbWUgc2Vjb25kIHNvdXJjZSBsZWdhY3kgZmxhc2ggY2hpcHMgMjU2eDguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDBkMDcxY2RkNzgyZTkxN2I0M2UwNDg2OTg0M2RmMzE2NzAyMzFmZmQKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBdWcgMjQgMTQ6MzI6MjYgMjAwOSAtMDUwMAotCi0gICAgbmV0OiB0c2VjIC0gaGFuZGxlIHVzZXIgaW50ZXJydXB0IHdoaWxlIHdhaXRpbmcgZm9yIFBIWSBhdXRvIG5lZ290aWF0aW9uIHRvIGNvbXBsZXRlCi0KLSAgICBpZiB5b3UgZG9uJ3QgaGF2ZSBmaXJtd2FyZSBpbnN0YWxsZWQgZm9yIHRoZSBQSFkgdG8gY29tZSB0byBsaWZlLCB0aGlzCi0gICAgd2FpdCBjYW4gYmUgcGFpbmZ1bCAtIGxldCdzIGdpdmUgdGhlIG9wdGlvbiB0byBhdm9pZCBpdCBpZiB3ZSB3YW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA0ZmNjYjgxOGU3ZWUxMTkwNjAyZTc5YWE1NzI5YTIzYmMzNDliZjBjCi1BdXRob3I6IFJvYmluIEdldHogPHJnZXR6QGJsYWNrZmluLnVjbGludXgub3JnPgotRGF0ZToJVGh1IEF1ZyAyMCAxMDo1MDoyMCAyMDA5IC0wNDAwCi0KLSAgICBBZGQgVHJhbnNmZXIgU2l6ZSBPcHRpb24gdG8gdGZ0cAotCi0gICAgT3B0aW9uYWxseSBhZGQgUkZDIDIzNDkgIlRyYW5zZmVyIFNpemUgT3B0aW9uIiwgc28gd2UgY2FuIG1pbmltaXplIHRoZQotICAgIHRpbWUgc3BlbnQgc2VuZGluZyBkYXRhIG92ZXIgdGhlIFVBUlQgKG5vdyBwcmludCBhIHNpbmdsZSBsaW5lIGR1cmluZyBhCi0gICAgdGZ0cCB0cmFuc2ZlcikuCi0KLSAgICAgLSBJZiB0dXJuZWQgb24gKENPTkZJR19URlRQX1RTSVpFKSwgVS1Cb290IGFza3MgZm9yIHRoZSBzaXplIG9mIHRoZSBmaWxlLgotICAgICAtIGlmIHJlY2VpdmVzIHRoZSBmaWxlIHNpemUsIGEgc2luZ2xlIGxpbmUgKDUwIGNoYXJzKSBhcmUgcHJpbnRlZC4KLQkgb25lIGhhc2ggbWFyayA9PSAyJSBvZiB0aGUgZmlsZSBkb3dubG9hZGVkLgotICAgICAtIGlmIGl0IGRvZXNuJ3QgcmVjZWl2ZSB0aGUgZmlsZSBzaXplICh0aGUgc2VydmVyIGRvZXNuJ3Qgc3VwcG9ydCBSRkMKLQkgMjM0OSwgcHJpbnRzIHN0YW5kYXJkIGhhc2ggbWFya3MgKG9uZSBtYXJrIGZvciBlYWNoIFVEUCBmcmFtZSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNDg4ZmVlZjg1MjI5YzA4Y2QzYWExZmExODNiYzhmNDgzZDJhZTgzMgotQXV0aG9yOiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KLURhdGU6CU1vbiBBdWcgMjQgMTA6MzM6MzkgMjAwOSAtMDQwMAotCi0gICAgQWRkIGRlYnVnIG1lc3NhZ2UgZm9yIEJsYWNrZmluIEV0aGVybmV0IFJ4IGZ1bmN0aW9uLgotCi0gICAgQWRkIGEgc2ltcGxlIHByaW50IGZvciB0aGUgQmxhY2tmaW4ncyBFdGhlcm5ldCBSeCBmdW5jdGlvbiwKLSAgICBzbyB3ZSBjYW4gZGVidWcgaW5jb21taW5nIEV0aGVybmV0IGZ1bmN0aW9ucyBlYXNpZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYjFjMGVhYWMxMTBiYzkxOWU1YjRlODg4MjEzNDhlNzE0NDkzZjI2NgotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJVHVlIEF1ZyAyNSAxMzowOTozNyAyMDA5IC0wNzAwCi0KLSAgICBDb252ZXJ0IENTODkwMCBFdGhlcm5ldCBkcml2ZXIgdG8gQ09ORklHX05FVF9NVUxUSSBBUEkKLQotICAgIEFsbCBpbi10cmVlIGJvYXJkcyB0aGF0IHVzZSB0aGlzIGNvbnRyb2xsZXIgaGF2ZSBDT05GSUdfTkVUX01VTFRJIGFkZGVkCi0gICAgQWxzbzoKLSAgICAgIC0gY2hhbmdlZCBDT05GSUdfRFJJVkVSX0NTODkwMCB0byBDT05GSUdfQ1M4OTAwCi0gICAgICAtIGNoYW5nZWQgQ1M4OTAwX0JBU0UgdG8gQ09ORklHX0NTODkwMF9CQVNFCi0gICAgICAtIGNoYW5nZWQgQ1M4OTAwX0JVUz8/IHRvIENPTkZJR19DUzg5MDBfQlVTPz8KLSAgICAgIC0gY2xlYW5lZCB1cCBsaW5lIGxlbmd0aHMKLSAgICAgIC0gbW9kaWZpZWQgVkNNQTkgY29tbWFuZCBmdW5jdGlvbiB0aGF0IGFjY2Vzc2VzIHRoZSBkZXZpY2UKLSAgICAgIC0gcmVtb3ZlZCBNQUMgYWRkcmVzcyBpbml0aWFsaXphdGlvbiBmcm9tIGxpYl9hcm0vYm9hcmQuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBUZXN0ZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkNDc2MjhhNmVjZjgwY2Q0NTg0YTUwYjZjNzk1YjkwYzk4NWE0OGU1Ci1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+Ci1EYXRlOglGcmkgQXVnIDcgMTM6NTk6MjYgMjAwOSArMDIwMAotCi0gICAgYXJtIG5vbWFkaWs6IGFjdGl2YXRlIGRlZnJhZyBjaG9vc2UgNGsgdHJhbnNmZXIgYmxvY2sgc2l6ZQotCi0gICAgVGhpcyBjaG9vc2VzIDRrQiBkYXRhIHNpemUgZm9yIGJvdGggVEZUUCBhbmQgTkZTLCBhcyBhbiBleGFtcGxlCi0gICAgYWJvdXQgaG93IHRvIHVzZSBzdXBwb3J0IGZvciBJUCBmcmFnbWVudHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYmQ5MzFjYTYxYzg0MDM5MjQxZDQzOGFkZTRhOTc1NWFlMGU1MzcyZgotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgotRGF0ZToJRnJpIEF1ZyA3IDEzOjU5OjE2IDIwMDkgKzAyMDAKLQotICAgIG5mczogYWNjZXB0IENPTkZJR19ORlNfUkVBRF9TSVpFIGZyb20gY29uZmlnIGZpbGUKLQotICAgIFRvIHRha2UgYWR2YW50YWdlIG9mIGRlZnJhZ21lbnRlZCBwYWNrZXRzLCB0aGUgY29uZmlnIGZpbGUKLSAgICBjYW4gZGVmaW5lIENPTkZJR19ORlNfUkVBRF9TSVpFIHRvIG92ZXJyaWRlIHRoZSAxa0IgZGVmYXVsdC4KLSAgICBObyBzdXBwb3J0IGlzIHRoZXJlIGZvciBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBieSBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgODliYTgxZDEwNzlhMDdiODQzMGE5OGMxNzQ2YzZkNDExMzEyZWIwZAotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgotRGF0ZToJRnJpIEF1ZyA3IDEzOjU5OjA2IDIwMDkgKzAyMDAKLQotICAgIHRmdHA6IGdldCB0aGUgdGZ0cCBibG9jayBzaXplIGZyb20gY29uZmlnIGZpbGUgYW5kIGZyb20gdGhlIGVudmlyb25tZW50Ci0KLSAgICBJbmNyZWFzaW5nIHRoZSBibG9jayBzaXplIGlzIHVzZWZ1bCBpZiBDT05GSUdfSVBfREVGUkFHIGlzCi0gICAgdXNlZC4gSG93ZXJ2ZXIsIHRoZSBsYXN0IGZyYWdtZW50cyBpbiBhIGJ1cnN0IG1heSBvdmVyZmxvdyB0aGUKLSAgICByZWNlaXZpbmcgZXRoZXJuZXQsIHNvIHRoZSBkZWZhdWx0IGlzIGxlZnQgYXQgMTQ2OCwgd2l0aCB0aHJlIG5ldwotICAgIENPTkZJR19URlRQX0JMT0NLU0laRSBmb3IgY29uZmlnIGZpbGVzLiBGdXJ0aGVyLCAidGZ0cGJsb2Nrc2l6ZSIKLSAgICBjYW4gYmUgc2V0IGluIHRoZSBlbnZpcm9ubWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1Y2ZhYTRlNTRkMGViODIzMmZhMWNmMDkyZDk1NWZkYWVkNWI2NzNkCi1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+Ci1EYXRlOglGcmkgQXVnIDcgMTM6NTg6NTYgMjAwOSArMDIwMAotCi0gICAgbmV0OiBkZWZyYWdtZW50IElQIHBhY2tldHMKLQotICAgIFRoZSBkZWZyYWdtZW50aW5nIGNvZGUgaXMgZW5hYmxlZCBieSBDT05GSUdfSVBfREVGUkFHOyB0aGUgY29kZSBpcwotICAgIHVzZWZ1bCBmb3IgVEZUUCBhbmQgTkZTIHRyYW5zZmVycy4JVGhlIHVzZXIgY2FuIHNwZWNpZnkgdGhlIG1heGltdW0KLSAgICBkZWZyYWdtZW50ZWQgcGF5bG9hZCBhcyBDT05GSUdfTkVUX01BWERFRlJBRyAoZGVmYXVsdCAxNmspLgotICAgIFNpbmNlIE5GUyBoYXMgYSBiaWdnZXIgcGVyLXBhY2tldCBvdmVyaGVhZCB0aGFuIFRGVFAsIHRoZSBzdGF0aWMKLSAgICByZWFzc2VtYmx5IGJ1ZmZlciBjYW4gaG9sZCBDT05GSUdfTkVUX01BWERFRlJBRyArIHRoZSBORlMgb3ZlcmhlYWQuCi0KLSAgICBUaGUgcGFja2V0IGJ1ZmZlciBpcyB1c2VkIGFzIGFuIGFycmF5IG9mICJob2xlIiBzdHJ1Y3R1cmVzLCBhY3RpbmcgYXMKLSAgICBhIGRvdWJsZS1saW5rZWQgbGlzdC4gRWFjaCBuZXcgZnJhZ21lbnQgY2FuIHNwbGl0IGEgaG9sZSBpbiB0d28sCi0gICAgcmVkdWNlIGEgaG9sZSBvciBmaWxsIGEgaG9sZS4gTm8gc3VwcG9ydCBpcyB0aGVyZSBmb3IgYSBmcmFnbWVudAotICAgIG92ZXJsYXBwaW5nIHR3byBkaWZmcmVudCBob2xlcyAoaS5lLiwgdGhyZSBuZXcgZnJhZ21lbnQgaXMgYWNyb3NzIGFuCi0gICAgYWxyZWFkeS1yZWNlaXZlZCBmcmFnbWVudCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNjhlNzQ1NjdjZjMxNzMxOGRmNTJkYmNiMmFjMTcwZmZjNWU3NzU4YQotQXV0aG9yOiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KLURhdGU6CUZyaSBBdWcgMjEgMTA6NTk6NDIgMjAwOSAtMDcwMAotCi0gICAgcHBjNHh4OiBGaXggRUNDIENvcnJlY3Rpb24gYnVnIHdpdGggU01DIG9yZGVyaW5nIGZvciBOREZDIGRyaXZlcgotCi0gICAgRml4IEVDQyBDb3JyZWN0aW9uIGJ1ZyB3aGVyZSB0aGUgYnl0ZSBvZmZzZXQgbG9jYXRpb24gd2VyZSBkb3VibGUKLSAgICBmbGlwcGVkIGNhdXNpbmcgY29ycmVjdGlvbiByb3V0aW5lIHRvIHRvZ2dsZSB0aGUgd3JvbmcgYnl0ZSBsb2NhdGlvbgotICAgIGluIHRoZSBFQ0Mgc2VnbWVudC4gVGhlIG5kZmNfY2FsY3VsYXRlX2VjYyByb3V0aW5lIGNoYW5nZSB0aGUgb3JkZXIKLSAgICBvZiBnZXR0aW5nIHRoZSBFQ0MgY29kZS4KLQkgICAgLyogVGhlIE5ERkMgdXNlcyBTbWFydCBNZWRpYSAoU01DKSBieXRlcyBvcmRlciAqLwotCSAgICBlY2NfY29kZVswXSA9IHBbMl07Ci0JICAgIGVjY19jb2RlWzFdID0gcFsxXTsKLQkgICAgZWNjX2NvZGVbMl0gPSBwWzNdOwotICAgIEJ1dCBpbiB0aGUgQ29ycmVjdGlvbiBhbGdvcml0aG0gd2hlbiBjYWxjdWxhdGluZyB0aGUgYnl0ZSBvZmZzZXQKLSAgICBsb2NhdGlvbiwgdGhlIHMxIGlzIHVzZWQgYXMgdGhlIHVwcGVyIHBhcnQgb2YgdGhlIGFkZHJlc3MuIFdoaWNoCi0gICAgYWdhaW4gcmV2ZXJzZSB0aGUgb3JkZXIgbWFraW5nIHRoZSBmaW5hbCBieXRlIG9mZnNldCBhZGRyZXNzCi0gICAgbG9jYXRpb24gaW5jb3JyZWN0LgotCWJ5dGVvZmZzID0gKHMxIDw8IDApICYgMHg4MDsKLQkuCi0JLgotCWJ5dGVvZmZzIHw9IChzMCA+PiA0KSAmIDB4MDg7Ci0gICAgVGhlIG9yZGVyIGlzIGNoYW5nZSB0byByZWFkIGl0IGluIHN0cmFpZ2h0IGFuZCBsZXQgdGhlIGNvcnJlY3Rpb24KLSAgICBmdW5jdGlvbiB0byByZXZlcnQgaXQgdG8gU01DIG9yZGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRmVuZyBLYW4gPGZrYW5AYW1jYy5jb20+Ci0gICAgQWNrZWQtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotICAgIEFja2VkLWJ5OiBQcm9keXV0IEhhemFyaWthIDxwaGF6YXJpa2FAYW1jYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzA3ZWNiNmRiMDRlZWJkYzA2YjhjODdkNDhiZjQ4ZDNjYmQ1ZTlkNwotQXV0aG9yOiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGNvbGRoYXVzLmNvbT4KLURhdGU6CVRodSBBdWcgMTMgMDg6MzI6MzcgMjAwOSAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFVTQiBvbiBQU0MzIGZvciB0aGUgbXBjNTIwMAotCi0gICAgU3VwcG9ydCBVU0Igb24gUFNDMyBvbiB0aGUgbXBjNTIwMC4gIEJlZm9yZSB0aGlzIHBhdGNoLCBlbmFibGluZyBVU0Igc3VwcG9ydAotICAgIHdvdWxkIHJlY29uZmlndXJlIFBTQzQgYW5kIFBTQzUgdG8gVVNCLiAgVGhlIG1wYzUyMDAgZG9lcyBub3Qgc3VwcG9ydCBVU0IKLSAgICBlbmFibGVkIG9uIGJvdGggdGhlIHN0YW5kYXJkIFVTQiBwb3J0IGFuZCBQU0MzLiAgVGhpcyBwYXRjaCBtYXNrcyB0aGUKLSAgICBhcHByb3ByaWF0ZSBiaXRzIHdoZW4gZW5hYmxpbmcgVVNCLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBNaWxsYnJhbmR0IDxlbWlsbGJyYW5kdEBkZWthcmVzZWFyY2guY29tPgotICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0gICAgQWNrZWQtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgNmI4NTQ4YjBmNzA2ODM3OWFkMWVmYTRmYTI4NzI1ZjM2MWIyZDNjZAotQXV0aG9yOiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgotRGF0ZToJVGh1IEF1ZyAxMyAxOToxMjo0NCAyMDA5ICswMjAwCi0KLSAgICBBZGQgZHJpdmVyIGZvciB0aGUgU1QgTTQxVDk0IFNQSSBSVEMKLQotICAgIFRoaXMgUlRDIGlzIHVzZWQgaW4gc29tZSBDYWxhbyBib2FyZHMuIFRoZSBkcml2ZXIgY29kZSBpcyB0YWtlbiBmcm9tCi0gICAgdGhlIGxpbnV4IHJ0Yy1tNDF0OTQgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgotCi1jb21taXQgODg1ZmM3OGMyOGZiZTc3M2JjYjRlZGM5ZGQwZmRhYzA1ZWJiNWIzOAotQXV0aG9yOiBBbGJpbiBUb25uZXJyZSA8YWxiaW4udG9ubmVycmVAZnJlZS1lbGVjdHJvbnMuY29tPgotRGF0ZToJVGh1IEF1ZyAxMyAxNTozMToxMiAyMDA5ICswMjAwCi0KLSAgICBTd2l0Y2ggZnJvbSBwZXItZHJpdmVyIHRvIGNvbW1vbiBkZWZpbml0aW9uIG9mIGJpbjJiY2QgYW5kIGJjZDJiaW4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGU4NGFiYTEzNWVkNzE0NTI5OTMwNGVmNTUwZTkyZjA4YjJjOTlkN2EKLUF1dGhvcjogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLURhdGU6CVRodSBBdWcgMTMgMTU6MzE6MTEgMjAwOSArMDIwMAotCi0gICAgUmVwbGFjZSBCQ0QyQklOIGFuZCBCSU4yQkNEIG1hY3JvcyB3aXRoIGlubGluZSBmdW5jdGlvbnMKLQotICAgIEluIHRoZSBwcm9jZXNzLCBhbHNvIHJlbW92ZSBiYWNrd2FyZC1jb21wYXRpYmxpdHkgbWFjcm9zIEJJTl9UT19CQ0QgYW5kCi0gICAgQkNEX1RPX0JJTiBhbmQgdXBkYXRlIHRoZSBzb2xlIGJvYXJkIHVzaW5nIHRoZW0gdG8gdXNlIHRoZSBuZXcgYmluMmJjZAotICAgIGFuZCBiY2QyYmluIGluc3RlYWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA1YjUzYjI5YmMyZTgyYjgwYjY2OWYxZDI0MDIwNjhjNjBkN2ZlY2QwCi1BdXRob3I6IEVyaWMgTWlsbGJyYW5kdCA8ZW1pbGxicmFuZHRAY29sZGhhdXMuY29tPgotRGF0ZToJVGh1IEF1ZyAxMyAxMDoxNDoyMSAyMDA5IC0wNTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIGdhbGF4eTUyMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgREVLQSBSZXNlYXJjaCBhbmQgRGV2ZWxvcG1lbnQgZ2FsYXh5NTIwMCBib2FyZAotCi0gICAgVGhlIGdhbGF4eTUyMDAgaXMgYW4gRnJlZXNjYWxlIG1wYzUyMDAgYmFzZWQgZW1iZWRkZWQgaW5kdXN0cmlhbAotICAgIGNvbnRyb2wgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIE1pbGxicmFuZHQgPGVtaWxsYnJhbmR0QGRla2FyZXNlYXJjaC5jb20+Ci0KLWNvbW1pdCAwYTllNGU3NzIxMjNmZTNlMmJiNDk5ZDdkMjE2MGM0Y2ZkOGEzYThkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBKdWwgMjQgMTY6MzQ6MzIgMjAwOSAtMDQwMAotCi0gICAgdW5pZnkge0NPTkZJR18sfUVOVl9JU19FTUJFRERFRAotCi0gICAgU29tZSBib2FyZHMgaGF2ZSBmYWxsZW4gb3V0IG9mIHN5bmMgYnkgZGVmaW5pbmcgQ09ORklHX0VOVl9JU19FTUJFRERFRAotICAgIG1hbnVhbGx5LiAgV2hpbGUgaXQgaXMgdXNlZnVsIHRvIGhhdmUgdGhpcyBhdmFpbGFibGUgdG8gdGhlIGJ1aWxkIHN5c3RlbSwKLSAgICBsZXQncyBkbyBpdCBhdXRvbWF0aWNhbGx5IHJhdGhlciB0aGFuIGZvcmNpbmcgcGVvcGxlIHRvIG9wdCBpbnRvIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDAyYzlhYTFkNDFmNzNmZGNmODM4M2EzNmNjMGNiYmZhZjk1Mjg1NWQKLUF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+Ci1EYXRlOglNb24gSnVsIDI3IDAwOjA3OjU5IDIwMDkgLTA0MDAKLQotICAgIEFkZCBtZDVzdW0gYW5kIHNoYTEgY29tbWFuZHMuLi4KLQotICAgIE5vdyB0aGF0IHdlIGhhdmUgc2hhMSBhbmQgbWQ1IGluIGxpYl9nZW5lcmljLCBhbGxvdyBwZW9wbGUgdG8gdXNlCi0gICAgdGhlbSBvbiB0aGUgY29tbWFuZCBsaW5lLCBmb3IgY2hlY2tpbmcgZG93bmxvYWRlZCBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJnZXR6QGFuYWxvZy5jb20+Ci0KLWNvbW1pdCAzMGZjNWNkMzExNmNiMTEyZDBhYWI3ZTZkN2M4ZWVmMWI2N2VkMDc1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgQXVnIDI1IDEyOjIyOjM4IDIwMDkgKzAyMDAKLQotICAgIGluY2x1ZGUvczNjMjR4MC5oOiBmaXggUzNDMjRYMF9TUElfQ0hBTk5FTCBkZWNsYXJhdGlvbgotCi0gICAgVGhlIFNQSSBjb250cm9sbGVyIG9uIHRoZSBTM0MyNFgwIGhhcyA4IGJpdCByZWdpc3RlcnMsIG5vdCAzMiBiaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlNjM3Mzg1ZTY5ZjYzYmM3M2I5ZGZkMmRkZDhkMGYzODM3OTBjYTI4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgMjAgMTk6MTc6NTkgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGZpeCB0eXBvcyBpbiBncGlvIGNvbW1lbnRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjMmZiY2I2YWU4NmMxMDYyMWEzODZjMTNiZTU3ZWFhNzY2MjIxZWQ1Ci1BdXRob3I6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+Ci1EYXRlOglUdWUgQXVnIDE4IDA0OjQ5OjU3IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBjbS1iZjUyNy9jbS1iZjUzNzogaW5jcmVhc2UgZmxhc2ggc2VjdG9ycwotCi0gICAgTmV3ZXIgcmV2aXNpb25zIG9mIHRoZXNlIGJvYXJkcyBoYXZlIHNsaWdodGx5IGxhcmdlciBmbGFzaGVzLCBzbyBpbmNyZWFzZQotICAgIHRoZSBjb25maWd1cmVkIG51bWJlciBvZiBzZWN0b3JzIHNvIHRoYXQgVS1Cb290IHdvcmtzIG9uIGFsbCByZXZpc2lvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgS3JhcGZlbmJhdWVyIDxIYXJhbGQuS3JhcGZlbmJhdWVyQGJsdWV0ZWNobml4LmF0PgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGE3OTRmNTlhNzViZjlmZDRhNDRmMWFkMjM0OWNhZTkwM2M0MmI4OWMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBBdWcgMjMgMTQ6MTQ6NTIgMjAwOSArMDIwMAotCi0gICAgc2gvcnNrNzIwMzogYWRkIG1pc3NpbmcgaW5jbHVkZSBuZXQuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDZhYzlmNDc5NzdhOWZjMTg3Njk3OTg3MWVlYjE0ZjI2YmExYmRiZTYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEF1ZyAyMyAwMjo0Nzo1OSAyMDA5IC0wNDAwCi0KLSAgICBzdGFydCBhIGxpbmtlciBzY3JpcHQgaGVscGVyIGZpbGUKLQotICAgIFN0YXJ0IGEgY29tbW9uIGhlYWRlciBmaWxlIGZvciBjb21tb24gbGlua2VyIHNjcmlwdCBjb2RlIChzdWNoIGFzCi0gICAgd29ya2Fyb3VuZHMgZm9yIG9sZGVyIGxpbmtlcnMpIHJhdGhlciB0aGFuIGRvaW5nIHRoaXMgaW4gdGhlIGJ1aWxkIHN5c3RlbS4KLQotICAgIEFzIGZhbGxvdXQsIHdlIG5vIGxvbmdlciBleGVjdXRlIHRoZSBsaW5rZXIgZXZlcnkgdGltZSBjb25maWcubWsgaXMKLSAgICBpbmNsdWRlZCBieSBhIGJ1aWxkIGZpbGUgKHdoaWNoIGNhbiBlYXNpbHkgYmUgNzArIHRpbWVzKSwgYnV0IHJhdGhlciBvbmx5Ci0gICAgZXhlY3V0ZSBpdCBvbmNlLgotCi0gICAgVGhpcyBhbHNvIGZpeGVzIGEgYnVnIGluIHRoZSBtYWpvciB2ZXJzaW9uIGNoZWNraW5nIGJ5IGNyZWF0aW5nIGEgbWFjcm8gdG8KLSAgICBlYXNpbHkgY29tcGFyZSB2ZXJzaW9ucyBhbmQga2VlcCBwZW9wbGUgZnJvbSBtYWtpbmcgdGhlIHNhbWUgY29tbW9uCi0gICAgbWlzdGFrZSAoZm9yZ2V0dGluZyB0byBjaGVjayBtYWpvciBhbmQgbWlub3IgdG9nZXRoZXIpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmVkMDg2OWQzMDYwMmViNjYwNTY5ZWFiYWJiOGZlZGZmMzZiZDIzYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgQXVnIDIyIDE5OjUwOjIyIDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiB1c2UgY29tbW9uIGNvZGUgdG8gcHJlcHJvY2VzcyBsaW5rZXIgc2NyaXB0Ci0KLSAgICBOb3cgdGhhdCB0aGUgY29tbW9uIGNvZGUgcHJlcHJvY2Vzc2VzIHRoZSBsaW5rZXIgc2NyaXB0LCB0aGUgQmxhY2tmaW4gY29kZQotICAgIG5vIGxvbmdlciBuZWVkcyB0byBkbyBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDRkMzc1OGM4MzVjN2U5NmRhMmEyOTFlN2ZiNWFjZmMxOWJjMDZlOGUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IEF1ZyAyMiAxOTo0ODo1NiAyMDA5IC0wNDAwCi0KLSAgICAuZ2l0aWdub3JlOiBpZ25vcmUgZ2VuZXJhdGVkIHUtYm9vdC5sZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDc5YjkxZGU5NTg1MTE4NDBkMmE3NDkxYmU5MmQ0MzViN2VmNDNmMTcKLUF1dGhvcjogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLURhdGU6CVNhdCBBdWcgMjIgMTQ6MjE6NTMgMjAwOSArMDIwMAotCi0gICAgaW5jbHVkZS9tbWMuaDogRml4IHR5cG8gaW4gSVNfU0QoKSBtYWNybwotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLQotY29tbWl0IDk2M2YyZjYxMTc0MWY4ZDljMzhiZDdjYWYyMGFlOGM5NWNhYjdiM2YKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBBdWcgMjIgMjM6Mjc6MjYgMjAwOSArMDIwMAotCi0gICAgUHJlcGFyZSAyMDA5LjA4LXJjMwotCi0gICAgVXBkYXRlIENIQU5HRUxPRywgbWlub3IgQ29kaW5nIFN0eWxlIGNsZWFudXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNWIyZGE2YTMwOTI2NmYyMWNiYjY4ZjA2ZmNmZGY5YmExNDEwMjJlNwotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgQXVnIDIxIDA2OjUyOjI1IDIwMDkgKzEwMDAKLQotICAgIHFlbXUtbWlwczogRml4IFFlbXUgd2Vic2l0ZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bWljaGFsLnNpbWVrQHBldGFsb2dpeC5jb20+Ci0gICAgQWNrZWQtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcG9ib3guY29tPgotCi1jb21taXQgNzlmNTE2YmNjYzNjZmY1YTVjZDRiM2RmZmI3ZDI1NGU3NDZmZGJkZQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAyMSAxNjozNDozOCAyMDA5IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBhY2NvbW1vZGF0ZSBsYXJnZXIga2VybmVsIHNpemVzIGJ5IGRlZmF1bHQKLQotICAgIGxpbnV4IG1wYzgzeHhfZGVmY29uZmlnIGtlcm5lbHMgYXJlIGdldHRpbmcgYmlnZ2VyLCBhY2NvbW1vZGF0ZSBmb3IKLSAgICB0aGVpciBncm93dGggYnkgYWRqdXN0aW5nIGRlZmF1bHQgbG9hZCBhbmQgZmR0IGFkZHJlc3Nlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4ZWNlZWI3ZmQ2NTZkNmQwNzFjMGE4YjYxNWUxNzhhY2E1Nzc1ZmZmCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgQXVnIDIxIDE2OjMzOjE1IDIwMDkgLTA1MDAKLQotICAgIG1wYzgzeHg6IG1wYzgzNzdlcmRiIC0gY2hhbmdlIEREUiBzZXR0aW5ncyB0byB0aG9zZSBmcm9tIGxhdGVzdCBic3AKLQotICAgIHdoZW4gdXNpbmcgTGludXMnIDgzeHhfZGVmY29uZmlnLCB0aGUgbXBjODM3N3JkYiB3b3VsZCBoYW5nIGF0IGJvb3QKLSAgICBhdCBlaXRoZXI6Ci0KLSAgICBORVQ6IFJlZ2lzdGVyZWQgcHJvdG9jb2wgZmFtaWx5IDE2Ci0KLSAgICBvciB0aGUKLQotICAgIGlvIHNjaGVkdWxlciBjZnEgcmVnaXN0ZXJlZAotCi0gICAgbWVzc2FnZS4gIEZpeGluZyB1cCB0aGVzZSBERFIgc2V0dGluZ3MgYXBwZWFycyB0byBmaXggdGhlIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjdjNTI0OGRkNGM5YmE0YTM2ODk5Njg5NTk1OTU2YzVlNTllMzQ5YQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAyMSAxNjozMToyMCAyMDA5IC0wNTAwCi0KLSAgICBtcGM4M3h4OiB0cW04MzQ5IC0gcmVtb3ZlIHBjaSAmIGZsYXNoIHdpbmRvdyBjb25mbGljdAotCi0gICAgY29tbWl0IDk5OTNlMTk2ZGE3MDdhMGExY2Q0NTg0ZjFmY2VmMTIzODJjMWMxNDQgIm1wYzgzeHg6IGNvbnZlcnQgYWxsCi0gICAgcmVtYWluaW5nIGJvYXJkcyBvdmVyIHRvIDgzWFhfR0VORVJJQ19QQ0kiIHJlbWFwcGVkIHBjaSB3aW5kb3dzIG9uCi0gICAgdHFtODM0eCB0byBtYWtlIGl0IG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZSBvdGhlciA4M3h4IGJvYXJkcy4gIER1cmluZwotICAgIHRoYXQgdGltZSBob3dldmVyLCB0aGUgYXV0aG9yIGZhaWxlZCB0byByZWFsaXplIHRoYXQgRkxBU0hfQkFTRSB3YXMKLSAgICBvY2N1cHlpbmcgdGhlIHNhbWUgcmFuZ2UgYXMgd2hhdCBQQ0kxX01FTV9CQVNFIHdhcyBiZWluZyBhc3NpZ25lZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgVGVzdGVkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNmQyYzI2YWM4MzFmMDMzYjAwMjVjZmIyNTYzNjVhMDQ3ZjhkZDExNQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMjEgMTY6MzA6MzAgMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogYWRkIG1pc3NpbmcgQ1NDT05GSUdfT0RUX1dSX0NGRyBmb3IgODMyeCBDUFVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTkzYjRjYjNmNjQxZWQwZmQ5YmI3OWI4ZmE0NjcxODgyYzUwZmZkYgotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBBdWcgMjEgMTY6Mjc6MDUgMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogbXBjODM0OSAtIGRlbGV0ZSB1bnVzZWQgU1lTX01JRF9GTEFTSF9KVU1QCi0KLSAgICBUaGlzIHdhcyBpbnRyb2R1Y2VkIHdpdGggdGhlIE1QQzgzNDlFTURTIGJvYXJkLCBhbmQgdGhlbiBjb3BpZWQgdG8KLSAgICBhIGNvdXBsZSBvdGhlciBib2FyZHMgYnkgbmF0dXJlIG9mIGJlaW5nIHRoZSByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24uCi0KLSAgICAgIHUtYm9vdCRnaXQgZ3JlcCBDT05GSUdfU1lTX01JRF9GTEFTSF9KVU1QCi0gICAgICBpbmNsdWRlL2NvbmZpZ3MvTVBDODM0OUVNRFMuaDojZGVmaW5lIENPTkZJR19TWVNfTUlEX0ZMQVNIX0pVTVAgMHg3RjAwMDAwMAotICAgICAgaW5jbHVkZS9jb25maWdzL3NiYzgzNDkuaDojZGVmaW5lIENPTkZJR19TWVNfTUlEX0ZMQVNIX0pVTVAgICAgIDB4N0YwMDAwMDAKLSAgICAgIGluY2x1ZGUvY29uZmlncy92bWU4MzQ5Lmg6I2RlZmluZSBDT05GSUdfU1lTX01JRF9GTEFTSF9KVU1QICAgICAweDdGMDAwMDAwCi0gICAgICB1LWJvb3QkCi0KLSAgICBJdCBjdXJyZW50bHkgaXNuJ3QgdXNlZCwgc28gZGVsZXRlIGl0IGJlZm9yZSBpdCBzcHJlYWRzIGZ1cnRoZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzBkNjYwZmJiZWRlMzIyNjQ4ZWM3OWQzZTM5Mzg5ZTQ4ZjVmYWIyNAotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBBdWcgMjEgMTY6MjE6NTggMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogc2JjODM0OSAtIG1ha2UgZW5hYmxpbmcgUENJIG1vcmUgdXNlciBmcmllbmRseQotCi0gICAgUHJpb3IgdG8gdGhpcyBjb21taXQsIHRvIGVuYWJsZSBQQ0ksIHlvdSBoYWQgdG8gZ28gbWFudWFsbHkKLSAgICBlZGl0IHRoZSBib2FyZCBjb25maWcgaGVhZGVyLCB3aGljaCBpc24ndCByZWFsbHkgdXNlciBmcmllbmRseS4KLSAgICBUaGlzIGFkZHMgdGhlIHR5cGljYWwgUENJIG1ha2UgdGFyZ2V0cyB0byB0aGUgdG9wbGV2ZWwgTWFrZWZpbGUKLSAgICBpbiBhY2NvcmRhbmNlIHdpdGggd2hhdCBpcyBiZWluZyBkb25lIHdpdGggb3RoZXIgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGEzYzUwNTdhNmMwNWI0YzcyMzVhMjcwNDg2MjIwZTQ1MTEzNjYxMzMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBBdWcgNyAyMzozNzo1NCAyMDA5ICswMjAwCi0KLSAgICBlZXByb21fbTk1eHh4OiByZW1vdmUgdW51c2VkIHZhcmlhYmxlIGkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA4Y2YxOWI5ZmVjOTJkOGFhMjJiMmZlNGI0ZTY5NzY3NDNiMWRhYTUxCi1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJRnJpIEp1bCAxNyAxNTowMjo0MiAyMDA5ICswNDAwCi0KLSAgICBqZmZzMjogc29tZSBmaXhlcyB0byBzdW1tYXJ5IHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgc29tZSBpc3N1ZXMgd2l0aCBKRkZTMiBzdW1tYXJ5IHN1cHBvcnQgaW4gVS1Cb290LgotICAgIDEvIFN1bW1hcnkgc3VwcG9ydCBtYWRlIGNvbXBpbGF0aW9uIGNvbmZpZ3VyYWJsZSAoYXMgc3VtbWFyeSBzdXBwb3J0Ci0gICAgY29uc2lkZXJlZCBleHBpcmVtZW50YWwgZXZlbiBpbiBMaW51eCkuCi0gICAgMi8gU3VtbWFyeSBjb2RlIGNhbiBkbyB1bmFsaWduZWQgMTYtYml0IGFuZCAzMi1iaXQgbWVtb3J5IGFjY2Vzc2VzLgotICAgIFdlIG5lZWQgdG8gZ2V0IGRhdGEgYnl0ZSBieSBieXRlIHRvIGV4Y2x1ZGUgZGF0YSBhYm9ydHMuCi0gICAgMy8gTWFrZSBzdW1tYXJ5IHNjYW4gaW4gdHdvIHBhc3NlcyBzbyB3ZSBjYW4gc2FmZWx5IGZhbGwgYmFjayB0byBmdWxsCi0gICAgc2NhbiBpZiB3ZSBmb3VuZCB1bnN1cHBvcnRlZCBlbnRyeSBpbiB0aGUgc3VtbWFyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotCi1jb21taXQgMTE5MDY5MzZlMTY4ZDEyZDY4NGJiM2QyOTMwYTYyNjkzYmEzZDg0ZQotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglNb24gQXVnIDEwIDE4OjU1OjU0IDIwMDkgKzA1MzAKLQotICAgIGFybTogcmQ2MjgxYTogRml4ZWQgTkFORCBzcGVjaWZpYyB3YXJuaW5nCi0KLSAgICBJdCBpcyByZWNvbW1lbmRlZCB0byBkZWZpbmUgdGhlIG1hY3JvIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYKLSAgICBmb3IgTkFORCBzcGVjaWZpYyB3YXJuaW5nIHJlbW92YWwsIHNhbWUgaXMgZG9uZSBpbiB0aGlzIHBhdGNoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCBiNWZmYjE5MzMzMDExM2QyZTAwNDg5ZDk2YmY4ZWMxZjU0MWVkNGUxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDEzIDAwOjM3OjE2IDIwMDkgKzAyMDAKLQotICAgIFRSQUI6IG1ha2UgaW5kZXBlbmRlbnQgb2Ygc3BlY2lmaWMgbGliZ2NjIGhlbHBlciByb3V0aW5lcwotCi0gICAgVGhlIFRSQUIgYm9hcmQgcmVmZXJlbmNlcyBsb2NhbCBsaWJnY2MgaGVscGVyIHJvdXRpbmVzCi0gICAgKGxpYl9hcm0vZGl2MC5vIGFuZCBsaWJfYXJtL191bW9kc2kzLm8pIHdoaWNoIGNhdXNlIGJ1aWxkIHByb2JsZW1zCi0gICAgd2hlbiB3ZSB0cnkgdG8gdXNlIHRoZSBub3JtYWwsIGNvbXBpbGVyIHByb3ZpZGVkIGxpYmdjYyBpbnN0ZWFkLgotICAgIFJlbW92aW5nIHRoZXNlIHJlZmVyZW5jZXMgYWxsb3dzIHRvIGJ1aWxkIGJvdGggd2l0aCBhbmQgd2l0aG91dCB0aGUKLSAgICBsb2NhbCBsaWJnY2MgaGVscGVyIHJvdXRpbmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDFhYWRhOWNkNjQzNTY3ZDM1MTY2NzEzODg1MWU5MjMxY2NmYTI0NWEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBdWcgMTcgMTQ6MDA6NTMgMjAwOSArMDIwMAotCi0gICAgRml4IGFsbCBsaW5rZXIgc2NyaXB0cyBmb3Igb2xkZXIgYmludXRpbHMgdmVyc2lvbnMgKHByZS0yLjE2KQotCi0gICAgQ29tbWl0IGY2MmZiOTk5NDFjNiBmaXhlZCBoYW5kbGluZyBvZiBhbGwgcm9kYXRhIHNlY3Rpb25zIGJ5IHVzaW5nIGEKLSAgICB3aWxkY2FyZCBjb21iaW5lZCB3aXRoIGNhbGxzIHRvIGxkJ3MgYnVpbHRpbiBmdW5jdGlvbnMgU09SVF9CWV9BTElHTk1FTlQoKQotICAgIGFuZCBTT1JUX0JZX05BTUUoKS4gIFVuZm9ydHVuYXRlbHkgdGhlc2UgZnVuY3Rpb25zIHdlcmUgb25seQotICAgIGludHJvZHVjZWQgd2l0aCBiaXVudXRpbHMgdmVyc2lvbiAyLjE2LCBzbyB0aGUgbW9kaWZpY2F0aW9uIGJyb2tlCi0gICAgYnVpbGRpbmcgd2l0aCBhbGwgdG9vbCBjaGFpbnMgdXNpbmcgb2xkZXIgYmludXRpbHMuCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIGl0IHdvcmsgYWdhaW4uICBUaGlzIGlzIGRvbmUgYnkgb21pdHRpbmcgdGhlIHVzZSBvZgotICAgIHRoZXNlIGZ1bmN0aW9ucyBmb3Igc3VjaCBvbGQgdG9vbCBjaGFpbnMuICBUaGlzIHdpbGwgcmVzdWx0IGluCi0gICAgc2xpZ2h0bHkgbGFyZ2VyIHRhcmdldCBiaW5hcmllcywgYXMgdGhlIHJvZGF0YSBzZWN0aW9ucyBhcmUgbm8gbG9uZ2VyCi0gICAgaW4gb3B0aW1hbCBvcmRlciBhbGlnbm1lbnQtd2lzZSB3aGljaCByZWF1bHMgaW4gdW51c2VkIGdhcHMsIGJ1dCB0aGUKLSAgICBlZmZlY3Qgd2FzIGZvdW5kIHRvIGJlIGluc2lnbmlmaWNhbnQgLSBlc3BlY2lhbGx5IGNvbXBhcmVkIHRvIHRoZSBmYWN0Ci0gICAgdGhhdCB5b3UgY2Fubm90IGJ1aWxkIFUtQm9vdCBhdCBhbGwgaW4gdGhlIGN1cnJlbnQgc3RhdGUuCi0KLSAgICBBcyBsZCBzZWVtcyB0byBoYXZlIG5vIHN1cHBvcnQgZm9yIGNvbmRpdGlvbmFscyB3ZSBydW4gdGhlIGxpbmtlcgotICAgIHNjcmlwdCB0aHJvdWdoIHRoZSBDIHByZXByb2Nlc3NvciB3aGljaCBjYW4gYmUgZWFzaWx5IHVzZWQgdG8gcmVtb3ZlCi0gICAgdGhlIHVud2FudGVkIGZ1bmN0aW9uIGNhbGxzLgotCi0gICAgTm90ZSB0aGF0IHRoZSBDIHByZXByb2Nlc3NvciBtdXN0IGJlIHJ1biB3aXRoIHRoZSAiLWFuc2kiIChvciBhCi0gICAgIi1zdGQ9Iikgb3B0aW9uIHRvIG1ha2Ugc3VyZSBhbGwgdGhlIHN5c3RlbS1zcGVjaWZpYyBwcmVkZWZpbmVkCi0gICAgbWFjcm9zIG91dHNpZGUgdGhlIHJlc2VydmVkIG5hbWVzcGFjZSBhcmUgc3VwcHJlc3NlZC4gT3RoZXJpc2UsIGNwcAotICAgIG1pZ2h0IGZvciBleGFtcGxlIHN1YnN0aXR1dGUgInBvd2VycGMiIHRvICIxIiwgdGh1cyBjb3JydXB0aW5nIGZvcgotICAgIGV4YW1wbGUgIk9VVFBVVF9BUkNIKHBvd2VycGMpIiBldGMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmNzcyYWNmOGE1ODQwNjcwMzNlZmYxZTIzMWZjZDFmYjNhMDBkM2Q5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gQXVnIDE3IDEzOjE3OjI5IDIwMDkgKzAyMDAKLQotICAgIEFSTTogY29tcGlsZXIgb3B0aW9ucyBjbGVhbnVwIC0gaW1wcm92ZSB0b29sIGNoYWluIHN1cHBvcnQKLQotICAgIEZvciBzb21lIHRpbWUgdGhlcmUgaGF2ZSBiZWVuIHJlcGVhdGVkIHJlcG9ydHMgYWJvdXQgYnVpbGQgcHJvYmxlbXMKLSAgICB3aXRoIHNvbWUgQVJNIChjcm9zcykgdG9vbCBjaGFpbnMuCUVzcGVjaWFsbHkgaXNzdWVzIGFib3V0Ci0gICAgKGluKWNvbXBhdGliaWxpdHkgd2l0aCB0aGUgdG9vbCBjaGFpbiBwcm92aWRlZCBydW50aW1lIHN1cHBvcnQKLSAgICBsaWJyYXJ5IGxpYmdjYy5hIGNhdXNlZCB0byBhZGQgYW5kIHN1cHBvcnQgYSBwcml2YXRlIGltcGxlbWVudGF0aW9uCi0gICAgb2Ygc3VjaCBydW50aW1lIHN1cHBvcnQgY29kZSBpbiBVLUJvb3QuICBBIGNsb3NlciBsb29rIGF0IHRoZSBjb2RlCi0gICAgaW5kaWNhdGVkIHRoYXQgc29tZSBvZiB0aGVzZSBpc3N1ZXMgYXJlIGFjdHVhbGx5IGhvbWUtbWFkZS4gIFRoaXMKLSAgICBwYXRjaCBhdHRlbXB0cyB0byBjbGVhbiB1cCBzb21lIG9mIHRoZSBtb3N0IG9idmlvdXMgcHJvYmxlbXMgYW5kIG1ha2UKLSAgICBidWlsZGluZyBvZiBVLUJvb3Qgd2l0aCBkaWZmZXJlbnQgdG9vbCBjaGFpbnMgZWFzaWVyOgotCi0gICAgLSBFdmVuIHRob3VnaCBhbGwgQVJNIHN5c3RlbXMgYmFzaWN5IHVzZWQgdGhlIHNhbWUgY29tcGlsZXIgb3B0aW9ucwotICAgICAgdG8gc2VsZWN0IGEgc3BlY2lmaWMgQUJJIGZyb20gdGhlIHRvb2wgY2hhaW4sIHRoZSBjb2RlIGZvciB0aGlzIHdhcwotICAgICAgZGlzdHJpYnV0ZWQgb3ZlciBhbGwgY3B1LyovY29uZmlnLm1rIGZpbGVzLiAgV2UgbW92ZSB0aGlzIG9uZSBsZXZlbAotICAgICAgdXAgaW50byBsaWJfYXJtL2NvbmZpZy5tayBpbnN0ZWFkLgotCi0gICAgLSBTbyBmYXIsIHdlIG9ubHkgY2hlY2tlZCBpZiAiLW1hcGNzLTMyIiB3YXMgc3VwcG9ydGVkIGJ5IHRoZSB0b29sCi0gICAgICBjaGFpbjsgaWYgeWVzLCB0aGlzIHdhcyB1c2VkLCBpZiBub3QsICItbWFiaT1hcGNzLWdudSIgd2FzCi0gICAgICBzZWxlY3RlZCwgbm8gbWF0dGVyIGlmIHRoZSB0b29sIGNoYWluIGFjdHVhbGx5IHVuZGVyc3Rvb2QgdGhpcwotICAgICAgb3B0aW9uLiAgVGhlcmUgd2FzIG5vIHN1cHBvcnQgZm9yIEVBQkkgY29uZm9ybWFudCB0b29sIGNoYWlucy4KLSAgICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgZm9sbG93aW5nIGxvZ2ljOgotCi0gICAgICAxKSBJZiB0aGUgdG9vbCBjaGFpbiBzdXBwb3J0cwotCSItbWFiaT1hYXBjcy1saW51eCAtbW5vLXRodW1iLWludGVyd29yayIKLQkgd2UgdXNlIHRoZXNlIG9wdGlvbnMgKEVBQkkgY29uZm9ybWFudCB0b29sIGNoYWluKS4KLSAgICAgIDIpIE90aGVyd2lzZSwgd2UgY2hlY2sgZmlyc3QgaWYKLQkiLW1hcGNzLTMyIgotCSBpcyBzdXBwb3J0ZWQsIGFuZCB0aGVuIGNoZWNrIGZvcgotCSItbWFiaT1hcGNzLWdudSIKLQkgSWYgb25lIHRlc3Qgc3VjY2VlZHMsIHdlIHVzZSB0aGUgZmlyc3QgZm91bmQgb3B0aW9uLgotICAgICAgMykgSW4gY2FzZSAyKSwgd2UgYWxzbyB0ZXN0IGlmICItbW5vLXRodW1iLWludGVyd29yayIsIGFuZCB1c2UKLQkgdGhpcyBpZiB0aGUgdGVzdCBzdWNjZWVkcy4gW0ZvciAiLW1hYmk9YWFwY3MtbGludXgiIHdlIHNldAotCSAiLW1uby10aHVtYi1pbnRlcndvcmsiIG1hbmRhdG9yaWx5Ll0KLQotICAgICAgVGhpcyB3YXkgd2UgdXNlIGEgc2ltaWxhciBsb2dpYyBmb3IgdGhlIGNvbXBpbGUgb3B0aW9ucyBhcyB0aGUKLSAgICAgIExpbnV4IGtlcm5lbCBkb2VzLgotCi0gICAgLSBTb21lIEVBQkkgY29uZm9ybWFudCB0b29sIGNoYWlucyBjYXVzZSBleHRlcm5hbCByZWZlcmVuY2VzIHRvCi0gICAgICB1dGlsaXR5IGZ1bmN0aW9ucyBsaWtlIHJhaXNlKCk7IHN1Y2ggZnVuY3Rpb25zIGFyZSBwcm92aWRlZCBpbiB0aGUKLSAgICAgIG5ldyBmaWxlIGxpYl9hcm0vZWFiaV9jb21wYXQuYwotCi0gICAgICBOb3RlIHRoYXQgbGliX2FybS9jb25maWcubWsgZ2V0cyBwYXJzZWQgc2V2ZXJhbCB0aW1lcywgc28gd2UgbXVzdAotICAgICAgbWFrZSBzdXJlIHRvIGFkZCBlYWJpX2NvbXBhdC5vIG9ubHkgb25jZSB0byB0aGUgbGlua2VyIGxpc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIENjOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotICAgIENjOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0gICAgQ2M6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLSAgICBDYzogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIEFja2VkLWJ5OiBTZXJnZXkgS3VidXNoeW4gPGtzaUBrb2k4Lm5ldD4KLSAgICBUZXN0ZWQtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLSAgICBUZXN0ZWQtYnk6IEFuZHJ6ZWogV29sc2tpIDxhd29sc2tpQHBvY3p0YS5mbT4KLSAgICBUZXN0ZWQtYnk6IEdheWUgQWJkb3VsYXllIFdhbHNpbW91IDx3YWxzaW1vdUB3YWxzaW1vdS5jb20+Ci0gICAgVGVzdGVkLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0gICAgVGVzdGVkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjY5NjEwZjZiYTJlNGE3YmMyN2QyZTUzZDQzMTYwNjE0MDE2OTY0ZgotQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDMwIDE3OjU2OjUxIDIwMDkgKzA4MDAKLQotICAgIE5BTkQgYm9vdDogZml4IG5hbmRfbG9hZCBvdmVybGFwIGlzc3VlCi0KLSAgICBUaGUgY29kZSBjb3B5IGRhdGEgZnJvbSBOQU5EIGZsYXNoIGJsb2NrIGJ5IGJsb2NrLCBzbyB3aGVuCi0gICAgdGhlIGRhdGEgbGVuZ3RoIGlzbid0IGEgd2hvbGUtbnVtYmVyIG11bHRpcGxlIG9mIHRoZSBibG9jawotICAgIHNpemUsIGl0IHdpbGwgb3ZlcmxhcCB0aGUgcmVzdCBzcGFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFmYzFkOWFlZDA4ZjJiMzM2NmQ2MzRmZGE2NzEyYTcxMGIyY2ZmOWEKLUF1dGhvcjogR2l1bGlvIEJlbmV0dGkgPGdpdWxpby5iZW5ldHRpQG1pY3Jvbm92YXNybC5jb20+Ci1EYXRlOglGcmkgSnVsIDMxIDE3OjMwOjM0IDIwMDkgLTA1MDAKLQotICAgIGFkZCBXQVRDSERPR19SRVNFVCgpIG9uIG5hbmQgd3JpdGUgYW5kIHJlYWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IGdpdWxpby5iZW5ldHRpQG1pY3Jvbm92YXNybC5jb20KLSAgICBBY2tlZC1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGIxZTg0OWYyMjAxYmJiZjNjYTgxZmRlMTY0ZjE1NGY5Y2FmN2YwZTkKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVdlZCBGZWIgNCAxNToxNDowNSAyMDA5IC0wNjAwCi0KLSAgICB0c2VjOiBXYWl0IGZvciBhdXRvLW5lZ290aWF0aW9uIHRvIGNvbXBsZXRlIHdpdGhvdXQgbGluawotCi0gICAgUHJldmlvdXNseSwgd2FpdGluZyBmb3IgYXV0by1uZWdvdGlhdGlvbiB3b3VsZCBvbmx5IG9jY3VyIGlmIGEgdmFsaWQKLSAgICBsaW5rIGhhZCBiZWVuIGRldGVjdGVkLiAgUHJvYmxlbXMgYXJvc2Ugd2hlbiBhdHRlbXB0aW5nIHRvIHVzZSBhCi0gICAgdHNlYyBpbW1lZGlhdGVseSBhZnRlciBib290dXAgYnV0IGJlZm9yZSBsaW5rIHdhcyBhY2hpZXZlZCwgZWc6Ci0gICAgPT4gZGhjcAotICAgIEF1dG8tbmVnIGVycm9yLCBkZWZhdWx0aW5nIHRvIDEwQlQvSEQKLSAgICBlVFNFQzE6IE5vIGxpbmsuCi0gICAgQXV0by1uZWcgZXJyb3IsIGRlZmF1bHRpbmcgdG8gMTBCVC9IRAotICAgIGVUU0VDMjogTm8gbGluay4KLSAgICA9PgotCi0gICAgV2l0aCB0aGlzIHBhdGNoIGFwcGxpZWQgdGhlIHNhbWUgb3BlcmF0aW9uIGFzIGFib3ZlIHJlc3VsdGVkIGluOgotICAgID0+IGRoY3AKLSAgICBXYWl0aW5nIGZvciBQSFkgYXV0byBuZWdvdGlhdGlvbiB0byBjb21wbGV0ZS4gZG9uZQotICAgIEVuZXQgc3RhcnRpbmcgaW4gMTAwMEJUL0ZECi0gICAgU3BlZWQ6IDEwMDAsIGZ1bGwgZHVwbGV4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA0NzdmYTYzNzhmYmQzZTQ3YTVlMmU4M2QwZGQzOTcwZDViMWM4MzcxCi1BdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLURhdGU6CVRodSBBdWcgMjAgMTA6MTQ6MTEgMjAwOSArMDIwMAotCi0gICAgYXJtOiBraXJrd29vZDogU2VlIHRvIGl0IHRoYXQgc2VudCBkYXRhIGlzIDgtYnl0ZSBhbGlnbmVkCi0KLSAgICBVLWJvb3QgbWlnaHQgdXNlIG5vbi04LWJ5dGUtYWxpZ25lZCBhZGRyZXNzZXMgZm9yIHNlbmRpbmcgZGF0YSwgd2hpY2gKLSAgICB0aGUga3dnYmVfc2VuZCBkb2Vzbid0IGFjY2VwdCAoYm9vdHAgZG9lcyB0aGlzIGZvciBtZSkuIFRoaXMgcGF0Y2gKLSAgICBjb3BpZXMgdGhlIGRhdGEgdG8gYmUgc2VudCB0byBhIG1hbGxvY2VkIHRlbXBvcmFyeSBidWZmZXIgaWYgaXQgaXMKLSAgICBub24tYWxpZ25lZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgY2FkNzEzYmY3NTQ4YjllOTA0MzNkYWM4MjcwMTY1NDAyYTZjOWNjMwotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglUaHUgQXVnIDIwIDEwOjEzOjA2IDIwMDkgKzAyMDAKLQotICAgIFdhaXQgZm9yIHRoZSBsaW5rIHRvIGNvbWUgdXAgb24ga2lya3dvb2QgbmV0d29yayBpbml0Ci0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBkZXZpY2Ugd2FpdCBmb3IgdXAgdG8gNSBzZWNvbmRzIGZvciB0aGUgbGluayB0bwotICAgIGNvbWUgdXAsIHNpbWlsYXIgdG8gd2hhdCBtYW55IG9mIHRoZSBvdGhlciBuZXR3b3JrIGRyaXZlcnMgZG8uIFRoaXMKLSAgICBhdm9pZHMgY29uZnVzaW5nIHNpdHVhdGlvbnMgd2hlcmUsIGUuZy4sIGEgdGZ0cCBmYWlscyB3aGVuIGluaXRpYXRlZAotICAgIGVhcmx5IGFmdGVyIFUtYm9vdCBoYXMgc3RhcnRlZCAoYmVmb3JlIHRoZSBsaW5rIGhhcyBjb21lIHVwKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYmIxY2EzYjI3ZjdmYmE4YzczY2IxMDI3OWE2YThiOGI2OWEzMDhmZgotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglUaHUgQXVnIDIwIDEwOjEyOjI4IDIwMDkgKzAyMDAKLQotICAgIGFybTpraXJrd29vZCBEZWZpbmUga2lya3dvb2QgcGh5IGFkZHJlc3MgbWFnaWMgbnVtYmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGY4MWVjYjVkMzMwMGJmOTJkMTczMDJkMzcxMmYzMDU4NWMxODJkYTkKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBdWcgMTcgMTU6NTU6MzggMjAwOSAtMDUwMAotCi0gICAgZTEwMDA6IGZpeCBQQ0kgbWVtb3J5IGFkZHJlc3NpbmcKLQotICAgIFRoZSBJbnRlbCBFMTAwMCBkcml2ZXIgd2FzIG1ha2luZyBhc3N1bXB0aW9ucyBhYm91dCB0aGUgcmVsYXRpb25zaGlwIGJldHdlZW4KLSAgICBzb21lIHZpcnR1YWwsIHBoeXNpY2FsLCBhbmQgUENJIGFkZHJlc3Nlcy4KLQotICAgIEFsc28gZml4IHNvbWUgYmFkIHVzYWdlIG9mIHRoZSBERUJVR09VVCBtYWNybwotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYjY0NDAwNmUxYTdiYWEyMjdhZWRjNjA2ZWNkZjBiYjVlZWIyNGNhYgotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6CVdlZCBBdWcgMTIgMTY6NDI6NDggMjAwOSArMDQwMAotCi0gICAgamZmczI6IGNsZWFuIHRoZSBjYWNoZSBpbiBjYXNlIG9mIG1hbGxvYyBmYWlscyBpbiBidWlsZF9saXN0cwotCi0gICAgV2Ugc2hvdWxkIGNhbGwgamZmczJfY2xlYW5fY2FjaGUoKSBpZiB3ZSByZXR1cm4gZnJvbSBqZmZzMl9idWlsZF9saXN0cygpCi0gICAgd2l0aCBhbiBlcnJvciB0byBwcmV2ZW50IHVzYWdlIG9mIGluY29tcGxldGUgbGlzdHMuIEFsc28gd2Ugc2hvdWxkCi0gICAgZnJlZSgpIGEgbG9jYWwgYnVmZmVyIHRvIHByZXZlbnQgbWVtb3J5IGxlYWtzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA3ZmY2NmJiMGJlODBjYWRkNjgxYmUyMmE3MmU1ZWIwMmVlMTRjODc4Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyAxMiAxMDoxNzowMyAyMDA5ICswMjAwCi0KLSAgICBwcGM6IHRyaWdnZXIgV0RUIGJlZm9yZSBzdGFydGluZyBMaW51eAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA5MTgzMTljNzA1ZDhhM2Q2MjUxOTE5YTY2MGJhZWYzMmZmM2E4MjlhCi1BdXRob3I6IEFsYmluIFRvbm5lcnJlIDxhbGJpbi50b25uZXJyZUBmcmVlLWVsZWN0cm9ucy5jb20+Ci1EYXRlOglXZWQgSnVsIDIyIDE4OjMwOjAzIDIwMDkgKzAyMDAKLQotICAgIFVwZGF0ZSB0aGUgbXRkIGRyaXZlciBuYW1lIGluIGJvb3RhcmdzIGZvciBhdDkxLWJhc2VkIGJvYXJkcwotCi0gICAgVGhlIG5hbWUgb2YgdGhlIGF0bWVsIG5hbmQgZHJpdmVyIGluIHRoZSBrZXJuZWwgY2hhbmdlZCBmcm9tIGF0OTFfbmFuZAotICAgIHRvIGF0bWVsX25hbmQgYmFjayBpbiBKdW5lIDIwMDgsIGJ1dCB0aGUgYXQ5MS1iYXNlZCBib2FyZHMgY29uZmlnIGZpbGVzCi0gICAgc3RpbGwgcmVmZXIgdG8gYXQ5MV9uYW5kLiBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlbSB3aXRoIHRoZSBuZXcgbmFtZQotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLQotY29tbWl0IDhmYTY1NmFhNTI4OTgxNWQ5NDJlYmRjMjYxODJjY2I5ZjJiOWM4NmYKLUF1dGhvcjogQmVuIEdvc2thIDxnb3NrYWJAb25pZC5vcmVnb25zdGF0ZS5lZHU+Ci1EYXRlOglGcmkgQXVnIDE0IDEwOjAzOjM2IDIwMDkgLTA3MDAKLQotICAgIG9tYXAzOiBGaXhlZCBhIHByb2JsZW0gd2l0aCBod2VjYwotCi0gICAgSW4gY29tbWl0IDE4N2FmOTU0Y2Y3OTU4YzI0ZWZjZjBmZDYyMjg5YmJkYjRmMWYyNGUgdGhlcmUKLSAgICB3YXMgYSB0eXBvIHRoYXQgb2Zmc2V0IGFsbCB0aGUgZWNjIHJlZ2lzdGVycyBieSA0IGJ5dGVzLCBmaXhlZCB0aGF0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIEdvc2thIDxnb3NrYWJAb25pZC5vcmVnb25zdGF0ZS5lZHU+Ci0gICAgQWNrZWQtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCA1MTRiYWI2NjA5YWNkMWEyYTE5ZmRkNzVjMmY2MjU1MTc4ZGI3Yzk2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBBdWcgMTcgMTY6NTc6NTMgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggImNoaXBfY29uZmlnIiBjb21tYW5kIGZvciBBTUNDIEFyY2hlcwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgImNoaXBfY29uZmlnIiBjb21tYW5kIGZvciBJMkMgYm9vdHN0cmFwIEVFUFJPTQotICAgIGNvbmZpZ3VyYXRpb24uIEZpcnN0IGl0IGNoYW5nZXMgdGhlIEkyQyBib290c3RyYXAgRUVQUk9NIGFkZHJlc3MgdG8KLSAgICAweDU0IGFzIHRoaXMgaXMgdXNlZCBvbiBBcmNoZXMgKGluc3RlYWQgb2YgMHg1MiBvbiBDYW55b25sYW5kcy8KLSAgICBHbGFjaWVyKS4gQWRkaXRpb25hbGx5LCB0aGUgTkFORCBib290c3RyYXAgc2V0dGluZ3MgYXJlIHJlbW92ZWQKLSAgICBmb3IgQXJjaGVzIHNpbmNlIEFyY2hlcyBkb2Vzbid0IHN1cHBvcnQgTkFORC1ib290aW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNGFmMzQxNzdiNjU3ZTkxMjYzOTE5YTMwN2ZkMGIwODY1YTI5OWU1MgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEF1ZyAxNiAyMzo0MDoxMyAyMDA5ICswMjAwCi0KLSAgICBNb25haGFuczogYXZvaWQgZmxvYXRpbmcgcG9pbnQgY2FsY3VsYXRpb25zCi0KLSAgICBDdXJyZW50IGNvZGUgZm9yIHRoZSBNb25haGFucyBDUFUgZGVmaW5lZCBPU0NSX0NMS19GUkVRIGFzIDMuMjUwIChNSHopCi0gICAgd2hpY2ggY2F1c2VkIGZsb2F0aW5nIHBvaW50IG9wZXJhdGlvbnMgdG8gYmUgdXNlZC4gVGhpcyByZXN1bHRlZCBpbgotICAgIHVucmVzb2x2ZWQgcmVmZXJlbmNlcyB0byBzb21lIEZQIHJlbGF0ZWQgbGliZ2NjIGZ1bmN0aW9ucyB3aGVuIHVzaW5nCi0gICAgVS1Cb290J3MgcHJpdmF0ZSBsaWJnY2MgZnVuY3Rpb25zLgotCi0gICAgQ2hhbmdlIHRoZSBjb2RlIHRvIHVzZSBmaXhlZCBwb2ludCBtYXRoIG9ubHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTM5M2UyZTliYzVjZDNkNTQ4NGUxOTNkMTM4MGU3Y2Q3NTg3YWI1YwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAxNCAxNjo0MzoyMiAyMDA5IC0wNTAwCi0KLSAgICA4NXh4OiBGaXggYWRkcm1hcCB0byBpbmNsdWRlIG1lbW9yeQotCi0gICAgV2hlbiB3ZSBpbml0IHRoZSBhZGRybWFwIGJhc2VkIG9uIHRoZSBUTEIgd2Ugd2lsbCBub3QgZW5kIHVwIGdldHRpbmcKLSAgICB0aGUgVExCIHRoYXQgY292ZXJzIG1lbW9yeSBpZiB3ZSBhcmUgdXNpbmcgU1BELiAgVGhlIHJlYXNvbiBpcyB3ZQotICAgIGhhdmVuJ3QgcmVsb2NhdGVkIGF0IHRoZSBwb2ludCB0aGF0IHdlIHNldHVwIHRoZSBtZW1vcnkgVExCIGFuZCB0aHVzIGl0Ci0gICAgd2lsbCBub3QgZ2V0IHNldHVwIGluIHRoZSBhZGRybWFwLgotCi0gICAgSW5zdGVhZCB3ZSBjYW4ganVzdCB3YWxrIG92ZXIgdGhlIFRMQiBhcnJheSBhZnRlciB3ZSd2ZSByZWxvY2F0ZWQgYW5kCi0gICAgc2VlIGFsbCB0aGUgVExCcyB0aGF0IGhhdmUgYmVlbiBzZXQgYW5kIHVzZSB0aGF0IGluZm9ybWF0aW9uIHRvIHBvcHVsYXRlCi0gICAgdGhlIGluaXRpYWwgYWRkcm1hcC4gIEJ5IGRvaW5nIHRoaXMgd2UgaW5zdXJlIHRoYXQgd2UgZ2V0IHRoZSBUTEIKLSAgICBlbnRyaWVzIHRoYXQgY292ZXIgbWVtb3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDdkZWRlZmRmNzQ5ZmYwMmMxMDg2ZjdkZGI4Y2I4M2E3N2IwMGQwMzAKLUF1dGhvcjogSm9obiBTY2htb2xsZXIgPGpzY2htb2xsZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgQXVnIDEyIDEwOjU1OjQ3IDIwMDkgLTA1MDAKLQotICAgIGZsYXNoOiBGaXggQ0ZJIGJ1ZmZlciBzaXplIGJ1ZwotCi0gICAgRml4IGJ1ZyBpbnRyb2R1Y2VkIGJ5IDljMDQ4YjUyMzQxM2FlNWYzZmYzNGUwMGNmNTc1NjljMzM2OGFiNTEuCi0KLSAgICBUaGUgY2ZpX2ZsYXNoLmMgZHJpdmVyIGNhc3QgdGhlIGZsYXNoIGJ1ZmZlciBzaXplIHRvIGEgdWNoYXIgaW4KLSAgICBmbGFzaF93cml0ZV9jZmlidWZmZXIoKS4gT24gc29tZSBmbGFzaCBwYXJ0cywgKHRlc3RlZCBvbiBOdW1vbnl4Ci0gICAgcGFydCBQQzMyRjUxMk0yOUVXSCksIHRoZSBidWZmZXIgc2l6ZSBpcyAxS0IuIFJlbW92ZSB0aGUgY2FzdCB0bwotICAgIHVjaGFyIHRvIGVuYWJsZSBidWZmZXIgc2l6ZXMgdG8gYmUgbGFyZ2VyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9obiBTY2htb2xsZXIgPGpzY2htb2xsZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjZlM2ExZmE5MmY2MTA4Mzg4NTE3ODEwMWU5NzNjODZiNDE5YTZmNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDEzIDAwOjMyOjE0IDIwMDkgLTA0MDAKLQotICAgIHRyYWI6IHJlbmFtZSBzcGlfaW5pdCgpCi0KLSAgICBUaGUgbG9jYWwgYm9hcmQtc3BlY2lmaWMgc3BpX2luaXQoKSBmdW5jdGlvbiBjb25mbGljdHMgd2l0aCB0aGUgY29tbW9uIFNQSQotICAgIGxheWVyLCBzbyByZW5hbWUgaXQgdG8gc29tZXRoaW5nIGJvYXJkLXNwZWNpZmljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMjUzY2I4MzFmNTg2MTM1OGE3ZmE2NzMzMDVjZGY3ZGVkMTA5NmY0NAotQXV0aG9yOiBHaXVzZXBwZSBDT05ET1JFTExJIDxnaXVzZXBwZS5jb25kb3JlbGxpQHN0LmNvbT4KLURhdGU6CVdlZCBKdWwgMjkgMDY6MDU6MjAgMjAwOSAtMDQwMAotCi0gICAgemxpYjogYWRkIHdhdGNoZG9nIHJlc2V0IGNhbGwKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB3YXRjaGRvZyByZXNldCBjYWxsIHRvIGFsbG93IGl0cyBpbnZva2F0aW9uIGR1cmluZyBkZWNvbXByZXNzaW9uCi0gICAgcGhhc2UuIFRoaXMgY29udHJvbCB3YXMgcHJlc2VudCBvbiBvbGQgemxpYiB2ZXJzaW9uIGFuZCBoZXJlIGl0IGlzCi0gICAgYmFja3BvcnRlZCBmb3IgdGhvc2UgcmVsZXZhbnQgcm91dGluZXMuIFRoaXMgcGF0Y2ggaXMgc2VudCBhcyBhIHpsaWIgc2VwYXJhdGUKLSAgICBvbmUgYmVhY3VzZSBpdCB3YXMgbm90IHRlc3RlZCBkdWUgdG8gc3BlY2lmaWMgYm9hcmQgbGFjay4KLSAgICB6bGliIHBhdGNoZXMgd2lsbCBiZSB1bmlmaWVkIGp1c3QgaW4gb25lIHdoZW4gdGhpcyB3aWxsIGJlIHZhbGlkYXRlZCB0aHJvdWdoCi0gICAgdGVzdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHaXVzZXBwZSBDb25kb3JlbGxpIDxnaXVzZXBwZS5jb25kb3JlbGxpQHN0LmNvbT4KLQotY29tbWl0IGRjZTNkNzk3MTAyYjY2MThlOGJkZDRhMDljZmQzNTk2OWYxNjVkODYKLUF1dGhvcjogR2l1c2VwcGUgQ09ORE9SRUxMSSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+Ci1EYXRlOglXZWQgSnVsIDI5IDA4OjA1OjA4IDIwMDkgLTA0MDAKLQotICAgIHpsaWI6IHVwZGF0ZWQgdG8gdi4xLjIuMwotCi0gICAgVGhpcyBwYXRjaCB1cGRhdGVzIHpsaWIgdG8gdGhlIGxhdGVzdCBzdGFibGUgdmVyc2lvbi4KLSAgICBPbmx5IHJlbGV2YW50IHpsaWIgcGFydHMgd2VyZSBwb3J0ZWQgdG8gdS1ib290IHRyZWUsIGFzIGFscmVhZHkgZGlkIGZvciB0aGUKLSAgICBjdXJyZW50IHpsaWIgKDAuOTUpLiBOZXcgemxpYiBndWFyYW50ZWVzIGEgZmFzdGVyIGluZmxhdGUgcGVyZm9ybWFuY2VzCi0gICAgb3RoZXIgdGhlbiBvdGhlcnMgaW1wcm92ZW1lbnRzIGFzIGV4cGxhaW5lZCBhdCB3d3cuemxpYi5uZXQuCi0gICAgSXQgYWxzbyBpbmNsdWRlcyBBbGVzc2FuZHJvIFJ1YmluaSdzIHBhdGNoZXMgdG8gYWxsb3cgMCBhcyBkZXN0aW5hdGlvbiBwb2ludGVyCi0gICAgYW5kIHRvIGNhbGwgd2F0Y2hkb2cgcmVzZXQgaWYgcmVxdWlyZWQgYnkgYXJjaGl0ZWN0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2l1c2VwcGUgQ29uZG9yZWxsaSA8Z2l1c2VwcGUuY29uZG9yZWxsaUBzdC5jb20+Ci0gICAgUmV2aWV3ZWQtYnk6IEFuZ2VsbyBDYXN0ZWxsbyA8YW5nZWxvLmNhc3RlbGxvQHN0LmNvbT4KLSAgICBSZXZpZXdlZC1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaS1saXN0QGdudWRkLmNvbT4KLQotY29tbWl0IDM0MjZkNjVkYWFiNmFmNDgzYjE3N2VkNTAyMDM4ZjUyZWQyZTVhZWYKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgQXVnIDExIDEwOjM3OjU4IDIwMDkgKzAyMDAKLQotICAgIGR0dCwgbG04MTogbW92ZSB1bm5lY2Nlc3NhcnkgcHJpbnRmIGludG8gYSBkZWJ1ZyBwcmludGYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNTRlMzk5ZjExMGJiYWEyNGU2NjJlNmRkOWU4OGRkYjg2OTg5ZDY2OAotQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmotbGlzdEBtaW1jLmNvLnVrPgotRGF0ZToJVHVlIEF1ZyAxMSAxMTozMzo0NyAyMDA5ICswMTAwCi0KLSAgICBNSU1DMjAwOiByZWR1Y2UgTENEIHBpeGNsb2NrCi0KLSAgICBUaGUgaW5pdGlhbCBwaXhjbG9jayBmb3IgdGhlIE1JTUMyMDAgYm9hcmQgaXMgd3JvbmcgKGFuZCBjYXVzZXMKLSAgICBzY3JlZW4gY29ycnVwdGlvbiBkdWUgdG8gRE1BIHVuZGVycnVucykuCi0KLSAgICBUaGlzIHBhdGNoIHNpbXBseSByZWR1Y2VzIHRoZSBwaXhlbCBjbG9jayB0byBmaXggdGhlIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLQotY29tbWl0IDE0NDNjZDdlNTRkNjg5M2FiN2NjNTFkOTNmZTc3NTljZGFhOGIzMWYKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CVdlZCBKdWwgMSAxNDowNDowNSAyMDA5IC0wNDAwCi0KLSAgICBVRUMgRklYRUQgUEhZOiBEZXRlcm1pbmUgZml4ZWQtcGh5IHBvcnQgdXNpbmcgVUVDIGludGVyZmFjZSBuYW1lLgotCi0gICAgRml4ZWQgYSBtaXN1bmRlcnN0YW5kaW5nIGluIHRoZSBvcmlnaW5hbCBpbXBsZW1lbnRhdGlvbiwgJ2Rldm51bScgdGhhdAotICAgIHdhcyB1c2VkIGluIHRoZSBjcHUvcHBjNHh4LzR4eF9lbmV0LmMgaW1wbGVtZW50YXRpb24gd2FzIE5PVCB0aGUKLSAgICBQSFkncyBTTUkgYWRkcmVzcywgcmF0aGVyIGl0IHdhcyB0aGUgbnVtYmVyIG9mIHRoZSBNQUMgaW50ZXJmYWNlIG9uCi0gICAgdGhlIENQVS4gVGhlIGVxdWl2YWxlbnQgb2YgdGhpcyBmb3IgdWVjX3BoeSB3aWxsIGJlIHRoZSBVRUMgbnVtYmVyCi0gICAgc3RvcmVkIGluIG1paV9pbmZvLT5kZXYtPm5hbWUuIFVzYWdlIGV4YW1wbGUgaXMgdXBkYXRlZCBmb3IgdWVjLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMWE5NTE5MzczYjk3N2VmM2Y3Yzk1NjNhZDNhY2I2YzZmMjQyNDY1NwotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJV2VkIEp1bCAxIDE0OjAzOjE1IDIwMDkgLTA0MDAKLQotICAgIEFzc2lnbmVkIGEgc3RhdGljIFNNSSBhZGRyZXNzIHRvIGFsbCBVRUNzIFRCSVBBIGFkZHJlc3MuCi0KLSAgICBJdCBpcyBzZXQgdG8gMHgxRiBieSBkZWZhdWx0IGFuZCBjYW4gYmUgb3ZlcndyaXR0ZW4gb24gdGhlIGJvYXJkCi0gICAgaGVhZGVyIGZpbGUgYnkgZGVmaW5pbmcgQ09ORklHX1VUQklQQVJfSU5JVF9UQklQQS4gVGhpcyBhbGxvd3MKLSAgICB0aGUgQ1BVIHRvIHNpbXBseSAicmVzZXJ2ZSIgb25lIFNNSSBhZGRyZXNzIGluc3RlYWQgb2YgdXNpbmcKLSAgICBhIGRpZmZlcmVudCBvbmUgZm9yIGVhY2ggVUVDLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOWZkMzhhMDFjYmMwY2U0YThkYjQxZjcyNjc3MTAzZWQwNGIyM2RiNQotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglNb24gQXVnIDEwIDE5OjQzOjA2IDIwMDkgKzA1MzAKLQotICAgIG5ldDoga2lya3dvb2Q6IHVwZGF0ZXM6IHVzZWQgZXRoX3NldGVudl9lbmV0YWRkciBhcGkKLQotICAgIGV0aF9zZXRlbnZfZW5ldGFkZHIgaXMgYXZhaWJsZSBieSB1cHBlciBsYXllcgotICAgIHVzaW5nIHRoaXMgc2F2ZXMgMjA0IGJ5dGVzIG9uIHRvdGFsIGltYWdlIHNpemUKLQotICAgIHVzZWQgTG9jYWwgT1VJIGluc3RlYWQgb2YgTWFydmVsbCBPVUkgZm9yCi0gICAgcmFuZG9tIE1BQyBhZGRyZXNzIGdlbmVyYXRpb24gbG9naWMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZWNiZDIwNzhhMWY1NmM4NWI2YzU2YWZhYWVkODYyYmY5MmNjZDNmMwotQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDExIDAzOjQ4OjA1IDIwMDkgKzA4MDAKLQotICAgIEZpeCBFMTAwMCBidWlsZCB3YXJuaW5nIG9uIEFQMTAwMCBib2FyZAotCi0gICAgIEZpeCBFMTAwMCBidWlsZCB3YXJuaW5nIG9uIEFQMTAwMCBib2FyZAotICAgICBGaXggdGhlIGJ1aWxkIHdhcm5pbmcgb24gQVAxMDAwIGJvYXJkOgotICAgICBlMTAwMC5jOjEzMTogd2FybmluZzogJ2UxMDAwX3JlYWRfZWVwcm9tJyB1c2VkIGJ1dCBuZXZlciBkZWZpbmVkCi0gICAgIGUxMDAwLmM6MjAxMjogd2FybmluZzogJ2UxMDAwX3NldF9waHlfbW9kZScgZGVmaW5lZCBidXQgbm90IHVzZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYjNhZjFkNjk4YjAzMWU3MjFiYWNhZWU4NzE1ZDc5ZGFhZjgyM2RlNgotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglNb24gQXVnIDEwIDEyOjI0OjQwIDIwMDkgLTA0MDAKLQotICAgIEFSTTogRGF2aW5jaSBETTM1NTogRW5hYmxpbmcgRE05MDAwIG9uIERNMzU1IEVWTQotCi0gICAgRHVlIHRvIHJlY2VudCBjaGFuZ2VzIHRvIHRoZSBORVQgc3VwcG9ydCBvbiBVLWJvb3QsIERNOTAwMAotICAgIGlzIG5vIGxvbmdlciBkZXRlY3RlZCBvbiB0aGUgRE0zNTUgRVZNLgotICAgIFRoaXMgbWlub3IgdXBkYXRlIGVuYWJsZXMgRE05MDAwIG9uIHRoZSBETTM1NSBFVk0uCi0gICAgVGVzdGVkIG9uIHRoZSBETTM1NSBFVk0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMDhjMmRmMzNmMWNkNTkzNTkzODQ4NmU5Njg2OTZmOTRhZDQwNjMxMwotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglNb24gQXVnIDEwIDE5OjIzOjE5IDIwMDkgKzA1MzAKLQotICAgIG5ldDogcGh5OiBidWdmaXhlczogbXY4OEU2MXh4IGNvbXBpbGVyIHdhcm5pbmdzIGZpeGVkCi0KLSAgICAxLiBtdjg4RTYxeHggZHJpdmVyIGNvbXBpbGVyIHdhcm5pbmdzIGZpeGVkCi0gICAgMi4gaWRzdHIgaWYtZWxzZSBzdGF0ZW1lbnRzIGNoYW5nZWQgdG8gc3dpdGNoKCkgY29uc3RydWN0Ci0gICAgICAgYW5kIGFkZGVkIGRlZmF1bHQgY2FzZSB0b28uCi0gICAgICAgVGhpcyBmaXhlZCBpZHN0ciBtYXkgYmUgdW5pbml0aWFsaXplZCB3YXJuaW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDc1MDMyNmU1ZDU0MDg4NWUzZWMzNmJkYTk0NjRiODI2OTI0OWY2Y2UKLUF1dGhvcjogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0QGZhcmFkYXktdGVjaC5jb20+Ci1EYXRlOglNb24gQXVnIDEwIDExOjAwOjAwIDIwMDkgKzA4MDAKLQotICAgIGFybTogQTMyMDogZHJpdmVyIGZvciBGVE1BQzEwMCBldGhlcm5ldCBjb250cm9sbGVyCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYW4gRlRNQUMxMDAgZXRoZXJuZXQgZHJpdmVyIGZvciBGYXJhZGF5IEEzMjAgZXZhbHVhdGlvbiBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmOTBkYzQzZmQ2N2VlYTcxMTI0Yjk5OWE3ZDVlNjE3ZDBkODY3OTViCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gQXVnIDEwIDE2OjQwOjU1IDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IFJlbW92ZWQgQkVEQlVHIHN1cHBvcnQgZnJvbSBGU0wgODV4eCBib2FyZHMKLQotICAgIEZvciBzb21lIHJlYXNvbiB0aGUgTVBDODU0NCBlbmFibGVkIEJFREJVRyBpZiBQQ0kgd2FzIGVuYWJsZWQgYW5kIHRoYXQKLSAgICBnb3QgY29waWVkIGludCB0aGUgTVBDODUzNiwgTVBDODU3MiBhbmQgUDIwMjAgRFMgYm9hcmRzLiAgVGhlIEJFREJVRwotICAgIHN1cHBvcnQgaGFzIG5ldmVyIGJlZW4gbWFkZSB0byB3b3JrIGNvbXBsZXRlbHkgb24gZTUwMC84NXh4IHNvIHdlCi0gICAganVzdCBkaXNhYmxlIGl0IHRvIHNhdmUgc3BhY2UgYW5kIG1hdGNoIHRoZSBvdGhlciBGU0wgODV4eCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZWIxYTRkMGE0NzE1MDVjMTY5YmVmMTlhNzNhNjBmODY0MWYwYjg3NQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEF1ZyAxMCAxMDozOToxMiAyMDA5ICswMjAwCi0KLSAgICBQcmVwYXJlIDIwMDkuMDgtcmMyCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNTNjYzE4YzcxYjJiOTIwY2NhMTcxODc0YzY2NjNlMjc0ZmE4MDU1NgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEF1ZyAxMCAxMDozODozNCAyMDA5ICswMjAwCi0KLSAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkMzcxNzA4YTFiZWRhMGY1Mjk3NTZlNjE0YWY3ODViMzA0NjEzNzllCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gQXVnIDEwIDA5OjU5OjEwIDIwMDkgKzAyMDAKLQotICAgIG5ldC90ZnRwLmM6IGZpeCB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgZGlmZmVyIGluIHNpZ25lZG5lc3MKLQotICAgIHRmdHAuYzoyOTQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3N0cmxlbicKLSAgICBkaWZmZXIgaW4gc2lnbmVkbmVzcwotCi0gICAgVGhpcyB3YXMgb25seSB2aXNpYmxlIGZvciB0aGUgdXR4ODI0NSBib2FyZCB3aGljaCBzZWVtcyB0byBoYXZlIERFQlVHCi0gICAgZW5hYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzZWQ5ZTk0M2ZkZmU1MTE3NGIyMzk4OWQ0ODU2M2I4YzFiN2QyZWE4Ci1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTYXQgQXVnIDggMTY6MDY6NDcgMjAwOSArMDIwMAotCi0gICAgQVJNIENvcnRleCBBODogUmVtb3ZlIGJvZ3VzIGNvbmZpZy5tayBlbnRyaWVzCi0KLSAgICBSZW1vdmUgYm9ndXMgY29uZmlnLm1rIGVudHJ5LCBmaXggbmV3bGluZSBhbmQgcmVtb3ZlIHJlZHVuZGFudAotICAgIG9tYXAzL2NvbmZpZy5tawotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IGNkM2RjYmExNDIyZDM0NDE1MDMyNTFmYmM2OWNmMjQzN2M0NDA3ODEKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVNhdCBBdWcgOCAxMjo0NjowOSAyMDA5ICswMjAwCi0KLSAgICBPTUFQMzogRml4IG1pc3NpbmcgR1BNQ19DT05GSUdfQ1MwX0JBU0UKLQotICAgIEFwcGx5aW5nIHR3byBpbmRlcGVuZW50IE9NQVAzIHBhdGNoZXMgcmVzdWx0ZWQgaW4gbWlzc2luZwotICAgIEdQTUNfQ09ORklHX0NTMF9CQVNFLiBQYXRjaCAib21hcDM6IGVtYmVkZCBncG1jX2NzIGludG8gZ3BtYwotICAgIGNvbmZpZyBzdHJ1Y3QiIHJlbW92ZXMgR1BNQ19DT05GSUdfQ1MwX0JBU0UsIGluZGVwZW5kZW50IHBhdGNoCi0gICAgIm9tYXAzOiBidWcgZml4IGZvciBOT1IgYm9vdCBzdXBwb3J0IiBpbnRyb2R1Y2VzIGl0J3MgdXNhZ2UuCi0gICAgUmUtaW50cm9kdWNlIEdQTUNfQ09ORklHX0NTMF9CQVNFLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IGJhM2RiYWYyODExMzAwMjllY2I5NzBhOTIyNTUxOTAyYzFkODBiNTAKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOglNb24gSnVuIDggMDQ6MTI6NDkgMjAwOSArMDQwMAotCi0gICAgbXhjLW1tYzogc2RoYyBob3N0IGRyaXZlciBmb3IgTVgyIGFuZCBNWDMgcHJvY2Nlc3NvcgotCi0gICAgVGhpcyBpcyBhIHBvcnQgb2YgTGludXggZHJpdmVyIGZvciBTREhDIGhvc3QgY29udHJvbGxlciBoYXJkd2FyZQotICAgIGZvdW5kIG9uIEZyZWVzY2FsZSdzIE1YMiBhbmQgTVgzIHByb2Nlc3NvcnMuIFVzZXMgbmV3IGdlbmVyaWMgTU1DCi0gICAgZnJhbWV3b3JrIChDT05GSUdfR0VORVJJQ19NTUMpIGFuZCBpdCBsb29rcyBsaWtlIHRoZXJlIGFyZSBzb21lCi0gICAgcHJvYmxlbXMgd2l0aCBhIGZyYW1ld29yayAoYXQgbGVhc3Qgb24gTEUgY3B1cykuIFNvbWUgb2YgdGhlc2UKLSAgICBwcm9ibGVtcyBhcmUgYWRkcmVzc2VkIGluIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotCi1jb21taXQgNjQyZDdiNjNjMzQzNjMzZGNhZmM0ZTIzYTIwZTMyNjA0YTA1ZmYxMwotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgotRGF0ZToJRnJpIEF1ZyA3IDEyOjM1OjQ3IDIwMDkgKzAyMDAKLQotICAgIGtpcmt3b29kL2dwaW8uaDogcmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbml0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KLQotY29tbWl0IDNhYzM3NGMwZjBiN2Q4NTZmMWE0MzMxN2EyODZmMjA3OTEwNmJkNmEKLUF1dGhvcjogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLURhdGU6CUZyaSBBdWcgNyAxMjozNzozNiAyMDA5ICswMjAwCi0KLSAgICBBZGQgZHJpdmVyIGZvciB0aGUgU1QgTTk1eHh4IFNQSSBFRVBST00KLQotICAgIFRoaXMgY2hpcCBpcyB1c2VkIGluIGEgbnVtYmVyIG9mIGJvYXJkcyBtYW51ZmFjdHVyZWQgYnkgQ2FsYW8tU3lzdGVtcwotICAgIHdoaWNoIHNob3VsZCBiZSBzdXBwb3J0ZWQgc29vbi4gVGhpcyBkcml2ZXIgcHJvdmlkZXMgdGhlIG5lY2Vzc2FyeQotICAgIHNwaV9yZWFkIGFuZCBzcGlfd3JpdGUgZnVuY3Rpb25zIG5lY2Vzc2FyeSB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSBjaGlwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxiaW4gVG9ubmVycmUgPGFsYmluLnRvbm5lcnJlQGZyZWUtZWxlY3Ryb25zLmNvbT4KLQotY29tbWl0IDMwOTUxOTYwYmFlOWEyYzMzZTMyNGE3MTY1OTYyYTA4MmU5MTNmOWUKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJRnJpIEF1ZyA3IDIyOjI3OjMyIDIwMDkgKzA1MzAKLQotICAgIGFybTogU2hlZXZhcGx1ZzogRml4ZWQgTkFORCBzcGVjaWZpYyB3YXJuaW5nCi0KLSAgICBJdCBpcyByZWNvbW1lbmRlZCB0byBkZWZpbmUgdGhlIG1hY3JvIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYKLSAgICBmb3IgTkFORCBzcGVjaWZpYyB3YXJuaW5nIHJlbW92YWwsIHNhbWUgaXMgZG9uZSBpbiB0aGlzIHBhdGNoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCAzMTc3MzQ5NjZlNzYzZmRlZTE4Mzg5OGMwZWQ5NDBjOWJhZGEyNTQxCi1BdXRob3I6IEpvc2ggQm95ZXIgPGp3Ym95ZXJAbGludXgudm5ldC5pYm0uY29tPgotRGF0ZToJRnJpIEF1ZyA3IDEzOjUzOjIwIDIwMDkgLTA0MDAKLQotICAgIER1YWwtbGljZW5zZSBJQk0gY29kZSBjb250cmlidXRpb25zCi0KLSAgICBJdCB3YXMgYnJvdWdodCB0byBvdXIgYXR0ZW50aW9uIHRoYXQgVS1Cb290IGNvbnRhaW5zIGNvZGUgZGVyaXZlZCBmcm9tIHRoZQotICAgIElCTSBPcGVuQklPUyBzb3VyY2UgY29kZSBvcmlnaW5hbGx5IHByb3ZpZGVkIHdpdGggc29tZSBvZiB0aGUgb2xkZXIgUG93ZXJQQwotICAgIDR4eCBkZXZlbG9wbWVudCBib2FyZHMuICBBcyBhIHJlc3VsdCwgdGhlIG9yaWdpbmFsIGxpY2Vuc2Ugb2YgdGhpcyBjb2RlIGhhcwotICAgIGJlZW4gY2FycmllZCBpbiB0aGUgdmFyaW91cyBmaWxlcyBmb3IgYSBudW1iZXIgb2YgeWVhcnMgaW4gdGhlIFUtQm9vdCBwcm9qZWN0LgotCi0gICAgSUJNIGlzIGR1YWwtbGljZW5zaW5nIHRoZSBJQk0gY29kZSBjb250cmlidXRpb25zIGFscmVhZHkgcHJlc2VudCBpbiBVLUJvb3QKLSAgICB1bmRlciBlaXRoZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIsIG9yIHRoZQotICAgIG9yaWdpbmFsIGNvZGUgbGljZW5zZSBhbHJlYWR5IHByZXNlbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb3NoIEJveWVyIDxqd2JveWVyQGxpbnV4LnZuZXQuaWJtLmNvbT4KLQotY29tbWl0IGNmZDcwMGJlOWY1ZWQyODlmZDU3YTliZDYxZTI2NjMxOWJhZGNiMGQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBBdWcgNSAwOTowMzo1NCAyMDA5IC0wNTAwCi0KLSAgICBmZHQ6IEZpeCBmZHRfcGNpX2RtYV9yYW5nZXMgaGFuZGxpbmcgb2YgNjQtYml0IHJhbmdlcwotCi0gICAgSWYgdGhlIHNpemUgb2YgYSByZWdpb24gZXF1YWwgdG8gNEcgaXQgY2FuJ3QgYmUgcmVwcmVzbnRlZCBpbiBhIDMyLWJpdAotICAgIEJBUiBzbyB3ZSBzaG91bGQgaGF2ZSBtYXJrZWQgdGhhdCBjYXNlIGFzIE1FTTY0LgotCi0gICAgQWRkaXRpb25hbGx5IGJ1bXAgdGhlIG51bWJlciBvZiBpbmJvdW5kIHdpbmRvd3MgdXAgdG8gNCB0byBoYW5kbGUgdGhlCi0gICAgZmFjdCB0aGF0IEZyZWVzY2FsZSBQUENzIHRoYXQgaGF2ZSBhbiBpbXBsaWNpdCB3aW5kb3cgZm9yIENDU1JCQVIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTliNGQ3NDcxYzQyZTk1NWJkOTg0Njg5MmEwY2M3NDc4MTcxNzc4ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyA2IDIxOjI5OjU5IDIwMDkgKzAyMDAKLQotICAgIEFSTSBFQUJJOiBhZGQgbmV3IGhlbHBlciBmdW5jdGlvbnMgcmVzcC4gZnVuY3Rpb24gbmFtZXMKLQotICAgIFRoZSBBUk0gRUFCSSBkZWZpbmVzIG5ldyBuYW1lcyBmb3IgR0NDIGhlbHBlciBmdW5jdGlvbnMsCi0gICAgYW5kIEdDQyBzZWVtcyB0byBuZWVkIHNvbWUgbmV3IGZ1bmN0aW9ucyBhcyB3ZWxsLgotCi0gICAgVGhpcyBwYXRjaCBpcyBhIG1pbmltYWwtaW52YXNpdmUgYXBwcm9hY2ggdG8gZml4IHByb2JsZW1zIHdpdGggRUFCSQotICAgIGNvbmZvcm1hbnQgdG9vbCBjaGFpbnMgKHRvIGJlIHVzZWQgd2l0aCAiVVNFX1BSSVZBVEVfTElCR0NDPXllcyIpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBUZXN0ZWQtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCAxOTczMjRkN2Q5OThhNzkxZTUxMzdiODE3Njk4MWI0YWYyNTIyMGFlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgQXVnIDUgMTY6MTg6NDQgMjAwOSAtMDUwMAotCi0gICAgaHVzaDogRml4IGJvZ3VzIGZyZWUoKSBjYWxsCi0KLSAgICBBbiBvZmYtYnktb25lIGVycm9yIGluIGh1c2guYyByZXN1bHRlZCBpbiBhbiB1bmludGVudGlvbmFsIGZyZWUoKSBjYWxsCi0gICAgZXZlcnkgdGltZSBhIGNvbW1hbmQgd2FzIGV4ZWN1dGVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgZmYyNzY1MGJiMjU1ZTIyNzVhMjEyMzU3Yjc4YzNiNzdjYmYxZDJlOQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVdlZCBBdWcgNSAxODozNzo0NSAyMDA5ICswMjAwCi0KLSAgICBkaWdzeV9tdGM6IFVwZGF0ZSBkZWZhdWx0IGVudmlyb25tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDBiNDBiZDQzOWEzM2JkZTllM2NjY2YxYWNiNTc0NDIyNWQwYzYxMDMKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglXZWQgQXVnIDUgMTg6Mzc6NDQgMjAwOSArMDIwMAotCi0gICAgZGlnc3lfbXRjOiBBZGQgZGVsYXkgaW4gU1BJIHRyYW5zZmVycyB0byB0aGUgY29tcGFuaW9uIGNvbnRyb2xsZXIuCi0KLSAgICBXaGlsZSBhdCBpdCwgcmVtb3ZlIGluaXRpYWxpemF0aW9uIG9mIHZhcmlhYmxlcyB3aGljaCB3aWxsIGJlIHNldAotICAgIGJlZm9yZSB1c2FnZSBpbiBhbGwgY2FzZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDBiZjAwNzUwZTA4MmEwMDRlNWZiMDU4OTI1NjIyYWU3Mjg5MGNjNTYKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyA1IDE4OjM3OjQzIDIwMDkgKzAyMDAKLQotICAgIGRpZ3N5X210YzogbWlub3IgZml4ZXMgZm9yIG10YyBjb21tYW5kIGhlbHAKLQotICAgIEFkZCBtdGMgc3RhdGUgc3ViY29tbWFuZCBkZXNjcmlwdGlvbiB0byB0aGUKLSAgICBoZWxwIG9mIG10YyBjb21tYW5kLgotCi0gICAgUmVtb3ZlIHNvbWUgbmV3bGluZXMgaW4gZGVzY3JpcHRpb24gb2YgY29tbWFuZHMKLSAgICBmb3IgcHJvcGVyIGhlbHAgZm9ybWF0aW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNWNjNjkwODQxODliZjQ5YWE5OWQxM2Q1NzUxNWJlNzJkMTg0NGJkZgotQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBBdWcgNSAxODozNzo0MiAyMDA5ICswMjAwCi0KLSAgICBkaWdzeV9tdGM6IEFkZCBtdGMgc3RhdGUgY29tbWFuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNzE2NjU1Mjg4YTUzYzk1ZmFkMjAzZWJmMjFkMGI4ZmZkYzJmNzUyNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyOCAyMjozNTozOSAyMDA5ICswMjAwCi0KLSAgICBQYXJ0aXRpb24gc3VwcG9ydDogcmVtb3ZlIG5ld2xpbmUgZnJvbSBwYXJ0aXRpb24gbmFtZQotCi0gICAgUmVtb3ZlIGJvZ3VzIG5ld2xpbmUgY2hhcmFjdGVyIHRoYXQgZ290IGFkZGVkIHRvIHRoZSAubmFtZSBmaWVsZCBvZgotICAgIHRoZSBkaXNrX3BhcnRpdGlvbl90IHN0cnVjdHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzZjE2NDlmYjBkZmIxZTVjODg5MGRlMTU0YzMzMmMzOTRkYjVjZGI1Ci1BdXRob3I6IEx1aWdpICdDb21pbycgTWFudGVsbGluaSA8bHVpZ2kubWFudGVsbGluaUBpZGYtaGl0LmNvbT4KLURhdGU6CVR1ZSBKdWwgMjggMDk6MzM6MTcgMjAwOSArMDIwMAotCi0gICAgRml4IExaTUEgc3RyaW5nLmggaGVhZGVyIGluY2x1c2lvbiBpc3N1ZSBhbmQgcmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+Ci0KLWNvbW1pdCAxYzYyMzJmMWUyZWFlODdlMGUzNmQ0ODk2MTFlYjY4OTFkZmYyMWUxCi1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KLURhdGU6CU1vbiBKdWwgMjcgMTU6Mjg6NDIgMjAwOSArMDIwMAotCi0gICAgYnVzX3ZjeGsuYzogZml4IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnbGluZXB0cicKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KLQotY29tbWl0IDE4MzA0Zjc2NzVlODQyNTI5NjViNGUyNGNiYTI3OTA3MWYxZGE0NzIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIEp1bCAyNCAxNzo1MToyNyAyMDA5IC0wNDAwCi0KLSAgICBlbnY6IGtpbGwgb2ZmIGRlZmF1bHRfZW52aXJvbm1lbnRfc2l6ZQotCi0gICAgVGhlIG9ubHkgZW52aXJvbm1lbnQgdHlwZSB0aGF0IHVzZXMgdGhpcyB2YXJpYWJsZSBpcyBzcGkgZmxhc2gsIGFuZCB0aGF0IGlzCi0gICAgb25seSBiZWNhdXNlIGl0IGlzIHJlaW1wbGVtZW50aW5nIHRoZSBjb21tb24gc2V0X2RlZmF1bHRfZW52KCkgZnVuY3Rpb24uCi0gICAgU28gZml4IHRoZSBzcGkgZmxhc2ggY29kZSBhbmQga2lsbCBvZmYgdGhlIGRlZmF1bHRfZW52aXJvbm1lbnRfc2l6ZSBpbiB0aGUKLSAgICBwcm9jZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYmVkZDg0MDNmNzdmNzkwZTk4NzY1Nzg4ODVlYWIxMjAwYmEyZjhkOAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSnVsIDIzIDE2OjM3OjQ4IDIwMDkgLTA0MDAKLQotICAgIGV4cG9ydCBTUEkgZnVuY3Rpb25zIHRvIHN0YW5kYWxvbmUgYXBwcwotCi0gICAgV2hpbGUgd2UncmUgaGVyZSwgZml4IHRoZSBicm9rZW4gI2lmZGVmIGhhbmRsaW5nIGluIF9leHBvcnRzLmguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzYjkwNDNhN2MwMzI5MGM5YmRiZWYwMzg0ODMwNzI2M2Y1ZjM0NzJjCi1BdXRob3I6IFBlbmRhIE5hdmVlbiBLdW1hciA8cG5hdmVlbkB0aS5jb20+Ci1EYXRlOglGcmkgSnVsIDMxIDAwOjA2OjM2IDIwMDkgKzA1MzAKLQotICAgIG9tYXAzOiBidWcgZml4IGZvciBOT1IgYm9vdCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIGJ1ZyBmaXgsIHdoZW4gb21hcDMgdXNlcyBub3IgYm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBlbmRhIE5hdmVlbiBLdW1hcjxwbmF2ZWVuQHRpLmNvbT4KLSAgICBBY2tlZC1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDYxYzY4YWUwYjQzYmI1ZDZhYjMyOTU4YzQ1Mjg5YWExOTdiMWEyZDEKLUF1dGhvcjogTWljaGFlbCBFdmFucyA8aG9yc2VfZHVuZ0Bob3RtYWlsLmNvbT4KLURhdGU6CU1vbiBKdWwgMTMgMjA6MTM6NDUgMjAwOSArMDEwMAotCi0gICAgRml4IGV4YW1wbGVzIGZvciBPTUFQMyBib2FyZHMuLi4KLQotICAgIFRoZSBhdHRhY2hlZCBwYXRjaCBjb3JyZWN0cyBhbiBlcnJvciBpbiB0aGUgZXhhbXBsZXMvTWFrZWZpbGUgd2hpY2gKLSAgICBjYXVzZXMgdGhlIGFwcGxpY2F0aW9ucyBpbiB0aGUgZXhhbXBsZXMgZGlyZWN0b3J5IHRvIGhhbmcgb24gT01BUDMKLSAgICBiYXNlZCBib2FyZHMuIFRoZSBjdXJyZW50IE1ha2VmaWxlIHNldHMgLVR0ZXh0IGR1cmluZyBsaW5raW5nIHRvCi0gICAgMHgwYzEwMDAwMCB3aGljaCBpcyBvdXRzaWRlIG9mIGFkZHJlc3NhYmxlIFNEUkFNIG1lbW9yeS4gVGhlIHNjcmlwdAotICAgIGNvcnJlY3RzIHRoZSBleGlzdGluZyBpZmVxLi4uZWxzZS4uLmVuZGlmIGxvZ2ljIHRvIGxvb2sgYXQgdGhlIFZFTkRPUgotICAgIHRhZyByYXRoZXIgdGhhbiB0aGUgQ1BVIHRhZy4KLQotICAgIFRoZSBwYXRjaCBhZmZlY3RzIHRoZSBmb2xsb3dpbmcgY29uZmlnczogb21hcDNfYmVhZ2xlX2NvbmZpZywKLSAgICBvbWFwM19vdmVyb19jb25maWcsIG9tYXAzX2V2bV9jb25maWcsIG9tYXAzX3BhbmRvcmFfY29uZmlnLAotICAgIG9tYXAzX3pvb20xX2NvbmZpZyBhbmQgb21hcDNfem9vbTJfY29uZmlnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBFdmFucyA8aG9yc2VfZHVuZ0Bob3RtYWlsLmNvbT4KLQotICAgIEVkaXRlZCBjb21taXQgbWVzc2FnZS4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYTNkMTQyMWRmZDBiYjFhNzI5ZTE3MWY4YTA5M2FjODM3ZjkyY2VjNgotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJU2F0IEF1ZyA4IDA5OjMwOjIzIDIwMDkgKzAyMDAKLQotICAgIG9tYXAzOiB1c2Ugb25seSBmaXhlZC1zaXplIHR5cGVzIGluc2lkZSBjdHJsX3N0cnVjdHMKLQotICAgIHJlcGxhY2UgdmFyaWFibGUgdHlwZXMgaW4gY3RybF9zdHJ1Y3RzIGZvciBvbWFwMyBieSB0aG9zZSB3aXRoCi0gICAgZml4ZWQgc2l6ZSAodTgsIHUxNiwgdTMyKS4KLSAgICBBZGRpdGlvbmFsIGlmbmRlZi1wcm90ZWN0aW9uIGlzIG5lZWRlZCBieSBleGFtcGxlcyB3aGljaCBkbyBub3QKLSAgICBjb21waWxlIHdoZW4gaW5jbHVkaW5nIGFzbS90eXBlcy5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBMdWR3aWcgPG1sdWR3aWdAdWx0cmF0cm9uaWsuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDg5NDExMzUyOWUzYTA0ODcxNTQ0ZGRlOTc3ZDZkN2FkZWUwNWQzYmYKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVNhdCBBdWcgOCAwOTozMDoyMiAyMDA5ICswMjAwCi0KLSAgICBvbWFwMzogcmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mIGdwbWMgY29uZmlnIHN0cnVjdCBieSBvbmUgZ2xvYmFsCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBMdWR3aWcgPG1sdWR3aWdAdWx0cmF0cm9uaWsuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDk3YTA5OWVhYTQ4ZDVjNzYyYzRmNzNjNTJjMzA5MGM1MTNiOGI4NzcKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVNhdCBBdWcgOCAwOTozMDoyMSAyMDA5ICswMjAwCi0KLSAgICBvbWFwMzogcmVtb3ZlIHR5cGVkZWZzIGZvciBjb25maWd1cmF0aW9uIHN0cnVjdHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEx1ZHdpZyA8bWx1ZHdpZ0B1bHRyYXRyb25pay5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgYWEwNzA3ODk3YzQ5YzMzMGI3ZDZiOGQ4MzYyZTQ0ZjYwZjIyNDczMgotQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDMxIDEzOjM0OjAyIDIwMDkgKzA4MDAKLQotICAgIEFkZCBJbnRlbCBFMTAwMCBQQ0lFIGNhcmQgc3VwcG9ydAotCi0gICAgQmFzZWQgb24gSW50ZWwgUFJPLzEwMDAgTmV0d29yayBEcml2ZXIgNy4zLjIwLWsyCi0gICAgICBBZGQgSW50ZWwgRTEwMDAgUENJRSBjYXJkIHN1cHBvcnQuIFRoZSBmb2xsb3dpbmcgY2FyZHMgYXJlIGFkZGVkOgotICAgICAgSU5URUxfODI1NzFFQl9DT1BQRVIKLSAgICAgIElOVEVMXzgyNTcxRUJfRklCRVIsCi0gICAgICBJTlRFTF84MjU3MUVCX1NFUkRFUwotICAgICAgSU5URUxfODI1NzFFQl9RVUFEX0NPUFBFUgotICAgICAgSU5URUxfODI1NzFQVF9RVUFEX0NPUFBFUgotICAgICAgSU5URUxfODI1NzFFQl9RVUFEX0ZJQkVSCi0gICAgICBJTlRFTF84MjU3MUVCX1FVQURfQ09QUEVSX0xPV1BST0ZJTEUKLSAgICAgIElOVEVMXzgyNTcxRUJfU0VSREVTX0RVQUwKLSAgICAgIElOVEVMXzgyNTcxRUJfU0VSREVTX1FVQUQKLSAgICAgIElOVEVMXzgyNTcyRUlfQ09QUEVSCi0gICAgICBJTlRFTF84MjU3MkVJX0ZJQkVSCi0gICAgICBJTlRFTF84MjU3MkVJX1NFUkRFUwotICAgICAgSU5URUxfODI1NzJFSQotICAgICAgSU5URUxfODI1NzNFCi0gICAgICBJTlRFTF84MjU3M0VfSUFNVAotICAgICAgSU5URUxfODI1NzNMCi0gICAgICBJTlRFTF84MjU0NkdCX1FVQURfQ09QUEVSX0tTUDMKLSAgICAgIElOVEVMXzgwMDAzRVMyTEFOX0NPUFBFUl9EUFQKLSAgICAgIElOVEVMXzgwMDAzRVMyTEFOX1NFUkRFU19EUFQKLSAgICAgIElOVEVMXzgwMDAzRVMyTEFOX0NPUFBFUl9TUFQKLSAgICAgIElOVEVMXzgwMDAzRVMyTEFOX1NFUkRFU19TUFQKLQotICAgICA4MjU3MUVCX0NPUFBFUiBkdWFsIHBvcnRzLAotICAgICA4MjU3MkVJIHNpbmdsZSBwb3J0LAotICAgICA4MjU3MkVJX0NPUFBFUiBzaW5nbGUgcG9ydCBQQ0lFIGNhcmRzCi0gICAgIGFuZAotICAgICA4MjU0NUVNX0NPUFBFUiwKLSAgICAgODI1NDFHSV9MRgotICAgICBwY2kgY2FyZHMgYXJlIHRlc3RlZCBvbiBib3RoICBQMjAyMCBib2FyZAotICAgICBhbmQgTVBDODU0NERTIGJvYXJkLgotCi0gICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4Njg0OGE3NGMzYzhlYjJmOGRkMTc5ZDAzOWVlNjA0ZGM0NTI4OGNmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBKdWwgMTUgMjE6MzE6MjggMjAwOSAtMDQwMAotCi0gICAgbmV0OiBzeW5jIGVudiBldGhhZGRyIHRvIGRldmljZSBlbmV0YWRkciBpbiBldGhfaW5pdCgpCi0KLSAgICBJbiB0aGUgcHJldmlvdXMgZW5ldGFkZHIgcmVmYWN0b3JpbmcsIHRoZSBhc3N1bXB0aW9uIHdpdGggY29tbWl0IDU2YjU1NWE2NDQKLSAgICB3YXMgdGhhdCB0aGUgZXRoIGxheWVyIHdvdWxkIGhhbmRsZSB0aGUgZW52IC0+IGRldmljZSBlbmV0YWRkciBzeW5jaW5nLgotICAgIFRoaXMgd2FzIG5vdCB0aGUgY2FzZSBhcyBldGhfaW5pdGlhbGl6ZSgpIGlzIGNhbGxlZCBvbmx5IG9uY2UgYW5kIHRoZSBzeW5jCi0gICAgb2NjdXJzIHRoZXJlLiAgU28gbWFrZSBzdXJlIHRoZSBldGhfaW5pdCgpIGZ1bmN0aW9uIGRvZXMgdGhlIGVudiAtPiBkZXZpY2UKLSAgICBzeW5jIHdpdGggZXZlcnkgbmV0d29yayBpbml0LgotCi0gICAgUmVwb3J0ZWQtYnk6IEFuZHJ6ZWogV29sc2tpIDxhd29sc2tpQHBvY3p0YS5mbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDBlYmYwNGM2MDdiNTRhMzUyNjI5ZGNmN2U3NmI3NmYxNzg1ZGFlNTQKLUF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+Ci1EYXRlOglUaHUgSnVsIDIzIDAzOjAxOjAzIDIwMDkgLTA0MDAKLQotICAgIG1pbm9yIGRlYnVnIGNsZWFudXBzIGluIC4vbmV0Ci0KLSAgICAgTWlub3IgLi9uZXQgY2xlYW51cHMgLSBubyBmdW5jdGlvbmFsIGNoYW5nZXMKLSAgICAgIC0gY2hhbmdlICNpZmRlZiBERUJVRyBwcmludGYoKTsgI2VuZGlmIHRvIGp1c3QgZGVidWcoKQotICAgICAgLSBjaGFuZ2VkIF9fRlVOQ1RJT05fXyB0byBfX2Z1bmNfXwotICAgICAgLSBnb3QgcmlkIG9mIGV4dHJhIHdoaXRlc3BhY2UgYmV0d2VlbiBmdW5jdGlvbiBhbmQgb3BlbmluZyBicmFjZQotICAgICAgLSByZW1vdmVkIHVubmVjZXNzYXJ5IGJyYWNlcyBvbiBpZiBzdGF0ZW1lbnRzCi0KLSAgICAgZ2NjIGRlYWQgY29kZSBlbGltaW5hdGlvbiBzaG91bGQgbWFrZSB0aGlzIGZ1bmN0aW9uYWxseS9zaXplIGVxdWl2YWxlbnQKLSAgICAgd2hlbiBERUJVRyBpcyBub3QgZGVmaW5lZC4gKGNvbmZpcm1lZCBvbiBCbGFja2Zpbiwgd2l0aCBnY2MgNC4zLjMpLgotCi0gICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJnZXR6QGJsYWNrZmluLnVjbGludXgub3JnPgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDE4N2FmOTU0Y2Y3OTU4YzI0ZWZjZjBmZDYyMjg5YmJkYjRmMWYyNGUKLUF1dGhvcjogTWF0dGhpYXMgTHVkd2lnIDxtbHVkd2lnQHVsdHJhdHJvbmlrLmRlPgotRGF0ZToJVHVlIE1heSAxOSAwOTowOTozMSAyMDA5ICswMjAwCi0KLSAgICBvbWFwMzogZW1iZWRkIGdwbWNfY3MgaW50byBncG1jIGNvbmZpZyBzdHJ1Y3QKLQotICAgIEVtYmVkZCBjaGlwIHNlbGVjdCBjb25maWd1cmF0aW9uIGludG8gc3RydWN0IGZvciBncG1jIGNvbmZpZwotICAgIGluc3RlYWQgb2YgaGF2aW5nIGl0IGNvbXBsZXRlbHkgc2VwYXJhdGVkIGFzIHN1Z2dlc3RlZCBieQotICAgIFdvbGZnYW5nIERlbmsgb24KLSAgICBodHRwOi8vbGlzdHMuZGVueC5kZS9waXBlcm1haWwvdS1ib290LzIwMDktTWF5LzA1MjI0Ny5odG1sCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBMdWR3aWcgPG1sdWR3aWdAdWx0cmF0cm9uaWsuZGU+Ci0KLWNvbW1pdCAwNmJmZmM2ZWE1MmQ0YjM5MDg0M2QyOTVkNDM4YjIwMzdkMTJlNWZkCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgotRGF0ZToJVGh1IEp1bCAxNiAxODo0MDo1NSAyMDA5IC0wNzAwCi0KLSAgICBybTkyMDAgbG93ZXZlbF9pbml0OiBkb24ndCB0b3VjaCByZXNlcnZlZC9yZWFkb25seSByZWdpc3RlcnMKLQotICAgIEZvciBzb21lIHJlYXNvbiB0aGUgQVQ5MXJtOTIwMCBsb3dsZXZlbCBpbml0IHdyaXRlcyB0byBhIGJ1bmNoIG9mCi0gICAgcmVzZXJ2ZWQgb3IgcmVhZC1vbmx5IGFkZHJlc3Nlcy4gIEFsbCB0aGUgYm9hcmRzIHNlZW0gdG8gZGVmaW5lIHRoZQotICAgIHZhbHVlLXRvLWJlLXdyaXR0ZW4gdmFsdWVzIGFzIHplcm8gLi4uIGJ1dCB0aGV5IHNob3VsZG4ndCBhY3R1YWxseQotICAgIGJlIHdyaXRpbmcgKmFueXRoaW5nKiB0aGVyZS4KLQotICAgIE5vIGRvY3VtZW50ZWQgZXJyYXR1bSBqdXN0aWZpZXMgdGhlc2UgYWNjZXNzZXMuICBJdCBsb29rcyBsaWtlIG1heWJlCi0gICAgc29tZSBwcmUtcmVsZWFzZSBCREktMjAwMCBzZXR1cCBjb2RlIGhhcyBiZWVuIGNhcnJpZWQgYWxvbmcgYnkgY2FyZ28KLSAgICBjdWx0IHByb2dyYW1taW5nIHNpbmNlIGF0IGxlYXN0IGxhdGUgMjAwNCAocGVyIEdJVCBoaXN0b3J5KS4KLQotICAgIEhlcmUncyBhIHBhdGNoIGRpc2FibGluZyB3aGF0IHNlZW1zIHRvIGJlIGJvZ29zaXR5LiAgVGVzdGVkIG9uIGEKLSAgICBjc2IzMzc7IHRoZXJlIHdlcmUgbm8gYmVoYXZpb3JhbCBjaGFuZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+Ci0KLSAgICBvbiBSTTkyMDBlawotICAgIFRlc3RlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDMwMWI3ZGI4OGZiZGY3ZDExOGVmYjc5YjM3MWIyNTI3YTJjMzE4NjgKLUF1dGhvcjogRGF2aWQgSHVudGVyIDxodW50ZXJkNDJAZ21haWwuY29tPgotRGF0ZToJVGh1IEp1bCAzMCAxNDozMjo0OSAyMDA5IC0wNzAwCi0KLSAgICBweGE6IEZpeCB0eXBvIGluIEdDRFIoeCkKLQotICAgIEZpeCBhIHR5cG8gaW4gdGhlIEdDRFIoeCkgbWFjcm8uIEl0J3MgYSBnb29kIHRoaW5nIG5vIG9uZSB3YXMgdXNpbmcgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBIdW50ZXIgPGh1bnRlcmQ0MkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAzYzQ0OGU2NDgyMjE4NzlhZTBlMDMwZTk0NTA4YjRmOWY2M2I3YWI4Ci1BdXRob3I6IEVyaWMgQmVuYXJkIDxlcmljQGV1a3JlYS5jb20+Ci1EYXRlOglTYXQgSnVsIDE4IDIzOjQ1OjE1IDIwMDkgKzAyMDAKLQotICAgIEFkZCBBVDkxU0FNOTI2MCB0byBhdDkxJ3MgbG93bGV2ZWxfaW5pdC5TCi0KLSAgICBOZWVkZWQgZm9yIEFUOTFTQU05MjYwIE5PUiBCb290IG9uIEV1a3JlYSdzIENQVTkyNjAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFcmljIEJlbmFyZCA8ZXJpY0BldWtyZWEuY29tPgotCi1jb21taXQgNTZiZGZhOTYxMjQyZmM2YWNhZWViYzgwMDY0MGExMmIyOGRiMzg5OQotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJVGh1IEp1bCAzMCAwOTozNjozMyAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSBjaGVjayBmb3IgUFBDNDYwRVggZnJvbSBDb21wYWN0Q2VudGVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGMzZmE0ZjBjODY4NGM4NjJlY2QzZmI2MjJmYWIxZTE3ZTQ0ZTgyZTEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEp1bCAyOSAwODo0NjoxMCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciBQUEM0NjBFWC80NjBHVCByZXYgQiBjaGlwIHRvIEFNQ0MgQ2FueW9ubGFuZHMKLQotICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gYSBkaWZmIGNyZWF0ZWQgYnkgUGhvbmcgVm8gZnJvbSBBTUNDLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGhvbmcgVm8gPHB2b0BhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4OWJjYzQ4NzUwMDdlZjY2MDgyOTdkYzExZTdhMGQxZmJkOTkwMGQyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgMjkgMDg6NDU6MjcgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgQU1DQyBQUEM0NjBFWC80NjBHVCByZXYgQiBjaGlwcwotCi0gICAgVGhpcyBwYXRjaCBpcyBiYXNlZCBvbiBhIGRpZmYgY3JlYXRlZCBieSBQaG9uZyBWbyBmcm9tIEFNQ0MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQaG9uZyBWbyA8cHZvQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDgyYTdlZGM3ZWE4ZjVmZTU1ZmVkNGZmN2UxMjc0Njk1NjllNTM5YzQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyOCAxNToxMjowNCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IENhbnlvbmxhbmRzLU5BTkQtYm9vdDogU3VwcG9ydCAyIENydWNpYWwgNTEyTUJ5dGUgU09ESU1NJ3MKLQotICAgIFNvbWUgQ2FueW9ubGFuZHMgYm9hcmRzIGFyZSBlcXVpcHBlZCB3aXRoIGRpZmZlcmVudCBTT0RJTU0ncy4gVGhpcyBpcyBubwotICAgIHByb2JsZW0gd2l0aCB0aGUgIm5vcm1hbCIgTk9SIGJvb3RpbmcgQ2FueW9ubGFuZHMgVS1Cb290LCBzaW5jZSBpdAotICAgIGF1dG9tYXRpY2FsbHkgZGV0ZWN0cyB0aGUgU09ESU1NJ3MgdmlhIFNQRCBkYXRhIGFuZCBjb3JyZWN0bHkgY29uZmlndXJlcwotICAgIHRoZW0uIEJ1dCB0aGUgTkFORCBib290aW5nIHZlcnNpb24gaXMgZGlmZmVyZW50LiBIZXJlIHdlIG9ubHkgaGF2ZSA0awotICAgIG9mIGltYWdlIHNpemUgdG8gY29tcGxldGVseSBzZXR1cCB0aGUgaGFyZHdhcmUsIGluY2x1ZGluZyBERFIyIHNldHVwLgotICAgIFNvIHdlIG5lZWQgdG8gdXNlIGEgZml4ZWQgRERSMiBzZXR1cCBoZXJlLiBUaGlzIGRvZXNuJ3Qgd29yayBmb3IgZGlmZmVyZW50Ci0gICAgU09ESU1NJ3MgcmlnaHQgbm93LgotCi0gICAgQ3VycmVudGx5IG9ubHkgdGhpcyBDcnVjaWFsIFNPRElNTSBpcyBzdXBwb3J0OgotICAgIENUNjQ2NEFDNjY3LjhGQiAoZHVhbCByYW5rZWQpCi0KLSAgICBOb3cgc29tZSBib2FyZHMgYXJlIHNoaXBwZWQgd2l0aCB0aGlzIFNPRElNTToKLSAgICBDVDY0NjRBQzY2Ny40RkUgKHNpbmdsZSByYW5rZWQpCi0KLSAgICBUaGlzIHBhdGNoIG5vdyBzdXBwb3J0cyBib3RoIFNPRElNTSdzIGJ5IGNvbmZpZ3VyaW5nIGZpcnN0IGZvciB0aGUgZHVhbAotICAgIHJhbmtlZCBESU1NLiBBIHF1aWNrIHNob3dzLCBpZiB0aGlzIG1vZHVsZSBpcyByZWFsbHkgaW5zdGFsbGVkLiBJZiB0aGlzIHRlc3QKLSAgICBmYWlscywgdGhlIEREUjIgY29udHJvbGxlciBpcyByZS1jb25maWd1cmVkIGZvciB0aGUgc2luZ2xlCi0gICAgcmFua2VkIFNPRElNTS4KLQotICAgIFRlc3RlZCB3aXRoIHRob3NlIFNPRElNTSdzOgotCi0gICAgQ1Q2NDY0QUM2NjcuOEZCIChkdWFsIHJhbmtlZCkKLSAgICBDVDY0NjRBQzY2Ny40RkUgKHNpbmdsZSByYW5rZWQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyN2RkNWY4ZTEwNjI2ODRmMWJhNjg1NzYwNDA5ZDliMmFiNjY5MWJmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKdWwgMjggMTA6NTY6MDMgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBhbWNjOiBNb3ZlICJrZXJuZWxfYWRkcl9yIiBldGMgdG8gaGlnaGVyIGxvY2F0aW9ucyAoPiAxNk1CKQotCi0gICAgVGhpcyBwYXRjaCBtb3ZlcyB0aGUgbG9hZCBhZGRyZXNzZXMgZm9yIGtlcm5lbCwgZmR0IGFuZCByYW1kaXNrIHRvIGhpZ2hlcgotICAgIGFkZHJlc3NlcyAoPj0gMTZNQikuIFRoaXMgZW5hYmxlcyBib290aW5nIG9mIGJpZ2dlciBrZXJuZWwgaW1hZ2VzIChlLmcuCi0gICAgbG9ja2RlcCBlbmFibGVkKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDY5NDJlZmMyYmUxYjkwMDU0ZmE0YWZhNWNkYTcwMjM0NjlmZTA4YjkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyOCAxMDo1MDozMiAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IGFtY2M6IFNldCBDT05GSUdfU1lTX0JPT1RNQVBTWiB0byAxNk1CIGZvciBiaWcga2VybmVscwotCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIENPTkZJR19TWVNfQk9PVE1BUFNaIGZyb20gOE1CIHRvIDE2TUIgd2hpY2ggaXMgdGhlCi0gICAgaW5pdGlhbCBUTEIgb24gNDB4IFBQQydzIGluIHRoZSBMaW51eCBrZXJuZWwuIFdpdGggdGhpcyBjaGFuZ2UgZXZlbiBiaWdnZXIKLSAgICBMaW51eCBrZXJuZWxzICg+IDhNQikgY2FuIGJlIGJvb3RlZC4KLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBzZXRzIENPTkZJR19TWVNfQk9PVE1fTEVOIHRvIDE2TUIgKGRlZmF1bHQgOE1CKSB0byBlbmFibGUKLSAgICBkZWNvbXByZXNzaW9uIG9mIGJpZ2dlciBpbWFnZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5MDFiZTg5YTI3ZTExYjI2MjdjMTMyZWU4N2M3NzYxYmQ2ODg2MDkxCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyOCAxNDo1Mzo0NCAyMDA5ICswMjAwCi0KLSAgICA4M3h4LCBrbWV0ZXIxLCBmaXg6IHVwZGF0ZSBpbiB0aGUgRFRTIHRoZSBjb3JyZWN0IHNpemUgZm9yIHRoZSBmaXJzdCBmbGFzaAotCi0gICAgV2hlbiB1cGRhdGluZyB0aGUgInJlZyIgaW4gdGhlICIvbG9jYWxidXMvZmxhc2hAZjAwMDAwMDAsMCIgbm9kZQotICAgIHNpemUgd2FzIHdyb25nIHVwZGF0ZWQgZm9yIHRoZSBmaXJzdCBmbGFzaCwgYmVjYXVzZSB0aGUgdG90YWwKLSAgICBzaXplIHdhcyBmaWxsZWQgaW4sIGluc3RlYWQgb2YgdGhlIHJpZ2h0IHNpemUgZm9yIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRjMmUzZGE4MmRjMmI3ZjhiMzliN2YxZDU3ZjU3MGU0YmM1Y2FhNmQKLUF1dGhvcjogS3VtYXIgR2FsYSA8a3VtYXIuZ2FsYUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1bCAyOCAyMTo0OTo1MiAyMDA5IC0wNTAwCi0KLSAgICBVcGRhdGUgRnJlZXNjYWxlIGNvcHlyaWdodHMgdG8gcmVtb3ZlICJBbGwgUmlnaHRzIFJlc2VydmVkIgotCi0gICAgIkFsbCBSaWdodHMgUmVzZXJ2ZWQiIGNvbmZsaWN0cyB3aXRoIHRoZSBHUEwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxrdW1hci5nYWxhQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiYjQyOTFlNjI1NzlkYmM2MTFlODRlYWFmOTczNjMxZTBiZjEyOWM3Ci1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglGcmkgSnVsIDI0IDExOjI3OjE0IDIwMDkgKzAyMDAKLQotICAgIGFybSBub21hZGlrOiBhZGQgaTJjCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDYwY2JmYmZkMGZiZWJiNDY4MmYxMGJhOTZmNjIyYmZlMTczMTc1OTgKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLURhdGU6CUZyaSBKdWwgMjQgMTE6Mjc6MDMgMjAwOSArMDIwMAotCi0gICAgYXJtIG5vbWFkaWs6IGFkZCBncGlvIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci0gICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTQ5Yjk4MzA2ZDg5N2FlNTk5MTM2MmQ2MDk2YTM2ZGY1MGVmZTY4NgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTdW4gSnVuIDI4IDEyOjUyOjMyIDIwMDkgLTA1MDAKLQotICAgIE9NQVAzIFJlbW92ZSB0d2w0MDMwIGRlZmluZXMKLQotICAgIFRoZXNlIGRlZmluZXMgaGF2ZSBiZWVuIHN1YnBsYW50ZWQgYnkgdGhlIGVxdWl2ZWxlbnQgZGVmaW5lcyBpbgotICAgIGluY2x1ZGUvdHdsNDAzMC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgZmNjYzBmY2FhYWU1MTU0NjEyZjgyNTkzNjVkMjZkMDRmMjA0ODU5ZgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTdW4gSnVuIDI4IDEyOjUyOjMxIDIwMDkgLTA1MDAKLQotICAgIE9NQVAzIE1vdmUgdHdsNDAzMCBtbWMgZnVuY3Rpb24KLQotICAgIEJlY2F1c2UgdHdsNDAzMCBub3cgaGFzIGl0cyBvd24gZGV2aWNlIGZpbGVzLCBtb3ZlIGFuZCByZW5hbWUKLSAgICB0d2w0MDMwX21tY19jb25maWcuCi0KLSAgICB0d2w0MDMwX21tY19jb25maWcgaW5pdGlhbGl6ZXMgdGhlIHR3bDQwMzAgcG93ZXIgc2V0dGluZyB0bwotICAgIHRoZSBtbWMgZGV2aWNlLiAgQmVjYXVzZSBpdCBpcyBpbiB0aGUgdHdsNDAzMCBwb3dlciBkb21haW4sIG1vdmUKLSAgICBpdCBvdXQgb2YgZHJpdmVycy9tbWMvb21hcDNfbW1jLmMgYW5kIGludG8gZHJpdmVycy9wb3dlci90d2w0MDMwLmMuCi0KLSAgICBUaGUgZnVuY3Rpb24gd2FzIHJlbmFtZWQgdG8gdHdsNDAzMF9wb3dlcl9tbWNfaW5pdCBiZWNhdXNlIGFsbAotICAgIHRoZSBmdW5jdGlvbnMgaW4gdGhpcyBmaWxlIGFyZSB0byBoYXZlIHRoZSBmb3JtYXQKLQotICAgIHR3bDQwMzBfcG93ZXJfPGRldmljZT5fPGFjdGlvbj4KLQotICAgIEluIHRoaXMgY2FzZSB0aGUgc3VmZml4IGlzIG1tY19pbml0IHNvCi0gICAgZGV2aWNlIDogbW1jCi0gICAgYWN0aW9uIDogaW5pdAotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDJjMTU1MTMwMTA0OTM0MzVjNzhmODMyMDI5NDBhYzNiZTExZGUyYzMKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU3VuIEp1biAyOCAxMjo1MjozMCAyMDA5IC0wNTAwCi0KLSAgICBPTUFQMyBNb3ZlIHR3bDQwMzAgcG93ZXIgYW5kIGxlZCBmdW5jdGlvbnMKLQotICAgIEJlY2F1c2UgdHdsNDAzMCBub3cgaGFzIGl0cyBvd24gZGV2aWNlIGZpbGVzLCBtb3ZlIGV4aXRpbmcKLSAgICBvbWFwMyBwb3dlcl9pbml0X3IgdG8gYSBuZXcgbG9jYXRpb24uCi0KLSAgICBwb3dlcl9pbml0X3IgaXMgdGhlIG9ubHkgZnVuY3Rpb24gaW4gYm9hcmQvb21hcDMvY29tbW9uLgotICAgIEl0IGluaXRpYWxpemVzIHRoZSB0d2w0MDMwIHBvd2VyIGZvciB0aGUgYm9hcmQgYW5kIGVuYWJsZXMKLSAgICB0aGUgbGVkLgotCi0gICAgVGhlIHBvd2VyIHBhcnQgb2YgdGhlIHRoZSBmdW5jdGlvbiBpcyBtb3ZlZCB0byB0d2w0MDMwX3Bvd2VyX2luaXQgaW4KLSAgICBkcml2ZXJzL3Bvd2VyL3R3bDQwMzAuYyBUaGUgcG93ZXIgY29tcGlsYXRpb24gaXMgY29uZGl0aW9uYWwgb24gdGhlCi0gICAgZXhpc3RpbmcgY29uZmlnIHZhcmlhYmxlIENPTkZJR19UV0w0MDMwX1BPV0VSLgotCi0gICAgVGhlIGxlZCBwYXJ0IGlzIG1vdmVkIHRvIHR3bDQwMzBfbGVkX2luaXQgaW4gdGhlIG5ldyBmaWxlCi0gICAgZHJpdmVycy9taXNjL3R3bDQwMzBfbGVkLmMJVGhlIGxlZCBjb21waWxhdGlvbiBpcyBjb25kaXRpb25hbCBvbgotICAgIHRoZSBuZXcgY29uZmlnIHZhcmlhYmxlIENPTkZJR19UV0w0MDMwX0xFRAotCi0gICAgVGhlIGRpcmVjdG9yeSBib2FyZC9vbWFwMy9jb21tb24gd2FzIHJlbW92ZWQgYmVjYXVzZSBwb3dlcl9pbml0X3IKLSAgICB3YXMgdGhlIG9ubHkgZnVuY3Rpb24gaW4gaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgM2NiN2E0ODA1ZmM4ZmI0YzA5ZTQ4MDFlMWM3ZDUzMTE4NmYyMDE5MAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyOCAyMjoxMzo1MiAyMDA5ICswMjAwCi0KLSAgICBUUU04eHgqIGJvYXJkczogc2V0IGxhcmdlciBTTUMgUnggYnVmZmVyIGxlbgotCi0gICAgQ29tbWl0IDJiM2YxMmMyIGFkZGVkIHN1cHBvcnQgZm9yIGNvbmZpZ3VyYWJsZSBTTUMgUnggYnVmZmVyIGxlbmd0aCBvbgotICAgIDh4eCBzeXN0ZW1zLiBFbmFibGUgdGhpcyBmZWF0dXJlIG9uIFRRTTh4eCogYmFzZWQgYm9hcmRzLgotCi0gICAgVGhpcyBmaXhlcyB0aGUgcHJvYmxlbSB0aGF0IHBhc3RpbmcgdGV4dCBpbiB0aGUgbWlkZGxlIG9mIGEgbGluZQotICAgIChpLiBlLiBpbnNlcnRpbmcgaW4gZWRpdCBtb2RlKSBkaWQgbm90IHdvcmsgLSBvbmx5IHRoZSBmaXJzdCB0d28KLSAgICBjaGFyYWN0ZXJzIGdvdCBpbnNlcnRlZCwgdGhlIHJlc3Qgd2FzIGxvc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGI3NTExNDc4YjYyYTUzOWU1YjA2NmQxOWE5ODZiNzVlNWQ5YTUyNwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyOCAyMjowNzozNyAyMDA5ICswMjAwCi0KLSAgICBGaXggZXh0MmxvYWQgcmV0dXJuIGNvZGUKLQotICAgIE1ha2UgdGhlIGV4dDJsb2FkIGNvbW1hbmQgcmV0dXJuIDAgb24gc3VjY2VzcyAoaW5zdGVhZCBvZiB0aGUgZmlsZQotICAgIGxlbmd0aCkuCi0KLSAgICBBbHNvIGZpeCBvdXRwdXQgZm9ybWF0IChnZXQgcmlkIG9mIHJhbmRvbSBuZXdsaW5lcykgYW5kIHNvbWUgY29kaW5nCi0gICAgc3R5bGUgaXNzdWVzIChsb25nIGxpbmVzIGV0Yy4pLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDU2ZmRhYWRjMTI0YThlZjllYzBmZDhmZjU3ODIzM2VjM2IxMTM3YmUKLUF1dGhvcjogV2VpcmljaCwgQmVybmhhcmQgPEJlcm5oYXJkLldlaXJpY2hAcmllZGVsLm5ldD4KLURhdGU6CVdlZCBKdW4gMTAgMTQ6MDA6MzcgMjAwOSArMDIwMAotCi0gICAgZXh0MjogZml4IGlub2RlIHNpemUgYW5kIGNhbGN1bGF0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogdW5zaWsgS2ltIDxkb25hcmk3NUBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVybmhhcmQgV2VpcmljaCA8YmVybmhhcmQud2VpcmljaEByaWVkZWwubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgVGVzdGVkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgY2Q3ODI2MzU5ZWU3MWU4ZjZmM2Q2ODMzMTkzMGFiOWNiZTFjOTkwZQotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTdW4gSnVuIDI4IDEyOjUyOjI5IDIwMDkgLTA1MDAKLQotICAgIFRXTDQwMzAgQWRkIHBvd2VyIHJlc2V0IGJ1dHRvbgotCi0gICAgVGhlIFpvb20yIHBvd2VyIHJlc2V0IGJ1dHRvbiBpcyBvbiB0aGUgdG9wIHJpZ2h0IHNpZGUgb2YgdGhlCi0gICAgbWFpbiBib2FyZC4gIFByZXNzIGFuZCBob2xkIGZvciBhYm91dCB0byA4IHNlY29uZHMgdG8gY29tcGxldGVseQotICAgIHJlc2V0IHRoZSBib2FyZC4KLQotICAgIFNvbWUgb2YgdGhlIGJldGEgYm9hcmRzIGhhdmUgYSBoYXJkd2FyZSBwcm9ibGVtIHRoYXQgcHJldmVudHMKLSAgICB1c2luZyB0aGlzIGZlYXR1cmUuICBJZiBpcyBkaWZmaWN1bHQgdG8gZnVydGhlciBjaGFyYWN0ZXJpemUgdGhlCi0gICAgYm9hcmRzIHRoYXQgZmFpbC4gIFNvIGRpc2FibGUgcmVzZXR0aW5nIGZvciBhbGwgYmV0YSBib2FyZHMuCi0KLSAgICBUaGUgWm9vbTEgcmVzZXQgYnV0dG9uIGlzIHRoZSByZWQgY2lyY2xlIG9uIHRoZSB0b3AgcmlnaHQsCi0gICAgZnJvbnQgb2YgdGhlIGJvYXJkLiAgUHJlc3MgYW5kIGhvbGQgdGhlIGJ1dHRvbiBmb3IgOCBzZWNvbmRzIHRvCi0gICAgY29tcGxldGVseSByZXNldCB0aGUgYm9hcmQuCi0KLSAgICBBZnRlciBhbmFseXppbmcgYmVhZ2xlLCBpdCB3YXMgZGV0ZXJtaW5lZCB0aGF0IG90aGVyIGJvYXJkcwotICAgIHRoYXQgdXNlIHRoZSB0d2w0MDMwIGZvciBwb3dlciBtYW5hZ21lbnQgY2FuIGFsc28gbWFrZSB1c2UKLSAgICB0aGlzIGZ1bmN0aW9uLgotCi0gICAgVGhlIHJlc2V0dGluZyBpcyBkb25lIGJ5IHRoZSBwb3dlciBtYW5hZ2VtZW50IHBhcnQgb2YgdGhlIHR3bDQwMzAuCi0gICAgU2luY2UgdGhlcmUgaXMgbm8gZXhpc3RpbmcgZHJpdmVycy9wb3dlciwgYWRkIG9uZS4KLQotICAgIFRoZSBjb21waWxhdGlvbiBvZiBwb3dlci90d2w0MDMwLmggaXMgY29udHJvbGxlZCBieSB0aGUgY29uZmlnCi0gICAgdmFyaWFibGUgQ09ORklHX1RXTDQwMzBfUE9XRVIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBBY2tlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA4OTY2ZWI0YzFjMmQ4OTRiMmE3NjE3NGJhOTA0YzI2YzVhZjgxNWI4Ci1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVN1biBKdW4gMjggMTI6NTI6MjggMjAwOSAtMDUwMAotCi0gICAgVFdMNDAzMCBBZGQgaW5pdGlhbCBzdXBwb3J0Ci0KLSAgICBUaGUgVFdMNDAzMCBzdXBwbGllcyBtYW55IHBlcmlwaGVyYWxzIGZvciBPTUFQMyBib2FyZHMuIFRoZXNlIGluY2x1ZGUKLSAgICBwb3dlciBtYW5hZ2VtZW50LCB1c2IgYW5kLCBrZXlib2FyZC4KLQotICAgIFRoZSBwcm9kdWN0IGRlc2NyaXB0aW9uIGlzIGZvdW5kIGhlcmU6Ci0KLSAgICBodHRwOi8vZm9jdXMudGkuY29tL2RvY3MvcHJvZC9mb2xkZXJzL3ByaW50L3RwczY1OTUwLmh0bWwKLQotICAgIFByb2R1Y3QgcmVmZXJlbmNlIGRvY3VtZW50LCB0cHM2NTk1MC5wZGYsIGlzIGZvdW5kIGhlcmU6Ci0KLSAgICBodHRwOi8vd3d3LnRpLmNvbS9saXQvZ3BuL3RwczY1OTUwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgN2Y3OWRmYjQ4Yjc0MTlkNWNhYTFjZjkzMmZjZmY0ZTJmYjcwNDBhZgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglTdW4gSnVuIDI4IDEyOjUyOjI3IDIwMDkgLTA1MDAKLQotICAgIE9NQVAgSTJDIEZpeCB0aGUgc2FtcGxpbmcgY2xvY2suCi0KLSAgICBUaGlzIHByb2JsZW0gaXMgc2VlbiBvbiBab29tMSBhbmQgWm9vbTIgaW4gdGhlIHN0YXJ0dXAgYW5kCi0gICAgd2hlbiBpMmMgcHJvYmUgaXMgdXNlZAotCi0gICAgQmVmb3JlIDoKLQotICAgIEluOiAgICBzZXJpYWwKLSAgICBPdXQ6ICAgc2VyaWFsCi0gICAgRXJyOiAgIHNlcmlhbAotICAgIHRpbWVkIG91dCBpbiB3YWl0X2Zvcl9iYjogSTJDX1NUQVQ9MTAwMAotICAgIHRpbWVkIG91dCBpbiB3YWl0X2Zvcl9iYjogSTJDX1NUQVQ9MTAwMAotICAgIHRpbWVkIG91dCBpbiB3YWl0X2Zvcl9iYjogSTJDX1NUQVQ9MTAwMAotICAgIHRpbWVkIG91dCBpbiB3YWl0X2Zvcl9waW46IEkyQ19TVEFUPTEwMDAKLSAgICBJMkMgcmVhZDogSS9PIGVycm9yCi0gICAgdGltZWQgb3V0IGluIHdhaXRfZm9yX2JiOiBJMkNfU1RBVD0xMDAwCi0gICAgdGltZWQgb3V0IGluIHdhaXRfZm9yX2JiOiBJMkNfU1RBVD0xMDAwCi0gICAgRGllIElEICMzMjdjMDAwMjAwMDAwMDAwMDQwMTNkZGQwNTAyNjAxMwotICAgIEhpdCBhbnkga2V5IHRvIHN0b3AgYXV0b2Jvb3Q6ICAwCi0gICAgT01BUDMgWm9vbTEjIGkyYyBwcm9iZQotICAgIFZhbGlkIGNoaXAgYWRkcmVzc2VzOnRpbWVkIG91dCBpbiB3YWl0X2Zvcl9iYjogSTJDX1NUQVQ9MTAwMAotICAgICAwMiAwMyAwNCAwNSAwNiAwNyAwOCAwOSAwQSAwQiAwQyAwRCA8c25pcD4KLQotICAgIEFmdGVyIDoKLQotICAgIEluOiAgICBzZXJpYWwKLSAgICBPdXQ6ICAgc2VyaWFsCi0gICAgRXJyOiAgIHNlcmlhbAotICAgIERpZSBJRCAjMzI3YzAwMDIwMDAwMDAwMDA0MDEzZGRkMDUwMjYwMTMKLSAgICBIaXQgYW55IGtleSB0byBzdG9wIGF1dG9ib290OiAgMAotICAgIE9NQVAzIFpvb20xIyBpMmMgcHJvYmUKLSAgICBWYWxpZCBjaGlwIGFkZHJlc3NlczogNDggNDkgNEEgNEIKLQotICAgIFRoZSBhZGRyZXNzZXMgYXJlIGZvciB0aGUgdHdsNDAzMC4KLQotICAgIFRoZSBwcmVzY2FsYXIgdGhhdCBjb252ZXJ0cyB0aGUgZnVuY3Rpb24gY2xvY2sgdG8gdGhlIHNhbXBsaW5nCi0gICAgY2xvY2sgaXMgaGFyZGNvZGVkIHRvIDAuICBUaGUgcmVmZXJlbmNlIG1hbnVhbCByZWNvbW1lbmRzIDcKLSAgICBpZiB0aGUgZnVuY3Rpb24gY2xvY2sgaXMgOTZNSHouCi0KLSAgICBJbnN0ZWFkIG9mIGp1c3QgY2hhbmdpbmcgdGhlIGhhcmRjb2RlZCB2YWx1ZXMsIHRoZSBwcmVzY2FsYXIKLSAgICBpcyBjYWxjdWxhdGVkIGZyb20gdGhlIHZhbHVlIEkyQ19JUF9DTEsuCi0KLSAgICBUaGUgaTJjICNkZWZpbmVzIGFyZSBpbiBrSHouICBUaGUgc3BlZWQgcGFzc2VkIGludG8gdGhlCi0gICAgaTJjIGluaXQgcm91dGluZSBpcyBpbiBIei4JVG8gYmUgY29uc2lzdGVudCwgY2hhbmdlIHRoZQotICAgIGRlZmluZXMgdG8gYmUgaW4gSHouCi0KLSAgICBUaGUgdGltaW5nIGNhbGN1bGF0aW9ucyBhcmUgYmFzZWQgb24gd2hhdCBpcyBkb25lIGluIHRoZQotICAgIGxpbnV4IDIuNi4zMCBrZXJuZWwgaW4gZHJpdmVycy9pMmMvYnVzZXMvaTJjX29tYXAuYyBhcwotICAgIGFwcG9zZWQgdG8gd2hhdCBpcyBkb25lIGluIFRSTS4KLQotICAgIFRoZSBtYWpvciB2YXJpYWJsZXMgaW4gdGhlIHRpbWluZyBjYWN1bGF0aW9ucyBhcmUKLSAgICBzcGVjaWZpZWQgYXMgI2RlZmluZXMgdGhhdCBjYW4gYmUgb3ZlcnJpZGVuIGFzIHJlcXVpcmVkLgotCi0gICAgVGhlIHZhcmlhYmxlcyBhbmQgdGhlaXIgZGVmYXVsdHMgYXJlCi0KLSAgICBJMkNfSVBfQ0xLCQkJCVNZU1RFTV9DTE9DS185NgotICAgIEkyQ19JTlRFUk5BTF9TQU1QTElOR19DTEsJCTE5MjAwMDAwCi0gICAgSTJDX0ZBU1RTUEVFRF9TQ0xMX1RSSU0JCQk2Ci0gICAgSTJDX0ZBU1RTUEVFRF9TQ0xIX1RSSU0JCQk2Ci0gICAgSTJDX0hJR0hTUEVFRF9QSEFTRV9PTkVfU0NMTF9UUklNCUkyQ19GQVNUU1BFRURfU0NMTF9UUklNCi0gICAgSTJDX0hJR0hTUEVFRF9QSEFTRV9PTkVfU0NMSF9UUklNCUkyQ19GQVNUU1BFRURfU0NMSF9UUklNCi0gICAgSTJDX0hJR0hTUEVFRF9QSEFTRV9UV09fU0NMTF9UUklNCUkyQ19GQVNUU1BFRURfU0NMTF9UUklNCi0gICAgSTJDX0hJR0hTUEVFRF9QSEFTRV9UV09fU0NMSAkJSTJDX0ZBU1RTUEVFRF9TQ0xIX1RSSU0KLQotICAgIFRoaXMgd2FzIHJ1bnRpbWUgdmVyaWZpZWQgb24gWm9vbTEsIFpvb20yLCBCZWFnbGUgYW5kIE92ZXJvLgotICAgIFRoZSA0MDBrSHogYW5kIDMuNE0gY2FzZXMgd2VyZSB2ZXJpZmVkIG9uIHRlc3QgWm9vbTEsCi0gICAgWm9vbTIsIEJlYWdsZSBhbmQgT3Zlcm8gY29uZmlndXJhdGlvbnMuCi0KLSAgICBUZXN0aW5nIGZvciBvbWFwMiB3aWxsIGJlIGRvbmUgaW4gYSBzZWNvbmQgc3RlcCBhcyBOaXNoYW50aAotICAgIGFuZCBKZWFuLUNocmlzdG9waGUgY29tbWVudGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDRjZTVhNzI4NTFmZjI5NjA1NDNiMTI1ODY2YzYxMzJlMDA5NGUxZWUKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDIwIDA5OjU5OjM3IDIwMDkgKzAyMDAKLQotICAgIGFybSwgaTJjOiBhZGRlZCBzdXBwb3J0IGZvciB0aGUgVFdTSSBJMkMgSW50ZXJmYWNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDA0MmQwMWM3MmUwZWE5NTczMTcwOGRkMjRiYjhiNmNmNDJlNzVjODAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAyNyAwOToxMzozOCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIHdpdGggTk9SIHJhbmdlIGFzc2lnbm1lbnQgaW4gQ2FueW9ubGFuZHMgZnRfYm9hcmRfc2V0dXAKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0sIHRoYXQgdGhlIGN1cnJlbnQgZmR0IGJvYXJkIGZpeHVwIGNvZGUgb25seQotICAgIHNldCdzIG9uZSByYW5nZSwgdGhlIG9uZSBmb3IgTk9SLiBCeSB0aGlzIGl0J3Mgb3ZlcndyaXRpbmcgdGhlIGFscmVhZHkKLSAgICBjb3JyZWN0bHkgY29uZmlndXJlZCB2YWx1ZXMgZG9uZSBpbiBfX2Z0X2JvYXJkX3NldHVwKCkuIEp1c3QgcmVtb3ZlIHRoaXMKLSAgICBub3cgdW5uZWVkZWQgTk9SIGZpeHVwIGFuZCBhbGwgdGhlIHJhbmdlcyBhcmUgY29ycmVjdGx5IGRlZmluZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci0gICAgQ2M6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotCi1jb21taXQgMTFhMTYwNGY4ZDBhOGQ5MzZiNDJmNjQzNWQwMDRiNGFhMzNhNWQ4NwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDI3IDA3OjQyOjQ4IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIHNvbWUgTkFORC1ib290aW5nIGJvb3RzdHJhcCBlbnRyaWVzIHRvIEtpbGF1ZWEgY2hpcF9jb25maWcgY21kCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc29tZSBJMkMgYm9vdHN0cmFwIHNldHRpbmcgZm9yIE5BTkQgYm9vdGluZyB0byB0aGUgS2lsYXVlYQotICAgIGNoaXBfY29uZmlnIGNvbW1hbmQgKCI1MzMtbmFuZCIgYW5kICI2MDAtbmFuZCIpLgotCi0gICAgQWRkaXRpb25hbGx5IHNvbWUgaW5jb3JyZWN0bHkgaW5kZW50ZWQgbGluZXMgYXJlIGZpeGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNWIzNDY5MWZmODc4MjE4OTEzNzViMjhlYzViY2Y1MTU0NTc1YTczNQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDI3IDA3OjQyOjM3IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogS2lsYXVlYTogRml4IFNEUkFNIGluaXQgaW4gTkFORCBib290aW5nIHZlcnNpb24KLQotICAgIEREUjIgQXV0by1jYWxpYnJhdGlvbiBuZWVkcyB0byBiZSBkaXNhYmxlZCBvbiB0aGUgTkFORCBib290aW5nIFBQQzR4eAotICAgIHRhcmdldHMuIE90aGVyd2lzZSB0aGUgY29uZmlndXJlZCBmaXhlZCBpbml0IHZhbHVlcyBmb3Igc29tZSBERFIyCi0gICAgY29udHJvbGxlciByZWdpc3RlcnMgKGUuZy4gUlFEQykgYXJlIG5vdCBpbml0aWFsaXplZCBhdCBhbGwgcmVzdWx0aW5nCi0gICAgaW4gYSBub24gd29ya2luZyBTRFJBTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGYzZWQzYzliNzQ0MWNkZTkzNmQwNmExZmY3YjE0OTBmZjBkNjAwZTYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAyNyAxMDo1Mzo0MyAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBBcmNoZXMgRERSMiBpbml0aWFsaXphdGlvbgotCi0gICAgVGVzdGluZyBvbiBBTUNDIEFyY2hlcyB3aXRoIHRoZSBsYXRlc3QgVS1Cb290IHZlcnNpb24geWllbGRlZCB0aGF0IEREUjIKLSAgICBpbml0aWFsaXphdGlvbiBpcyBjdXJyZW50bHkgYnJva2VuLiBVLUJvb3QgaGFuZ3MgdXBvbiByZWxvY2F0aW9uIHRvIFNEUkFNCi0gICAgb3IgY3Jhc2hlcyB3aXRoIHJhbmRvbSB0cmFwcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uIEFyY2hlcyBub3cKLSAgICB1c2VzIGEgZGlmZmVyZW50IFdSRFRSIGFuZCBDTEtUUiBkZWZhdWx0IHNldHRpbmcgdGhhbiBDYW55b25sYW5kcy9HbGFjaWVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYWI0YzYyYzFiYTc4OGJmN2Y2NzNhOTg1ZDk5YTc2ZDljMmZkN2VjYQotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJTW9uIEp1bCAyNyAwODo0OTo0OCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBHRHN5cyBDb21wYWN0Q2VudGVyIGJvYXJkIHN1cHBvcnQuCi0KLSAgICBCb2FyZCBzdXBwb3J0IGZvciB0aGUgR3VudGVybWFubiAmIERydW5jayBDb21wYWN0Q2VudGVyIGFuZAotICAgIERldkNvbi1DZW50ZXIuCi0gICAgQmFzZWQgb24gdGhlIEFNQ0MgQ2FueW9ubGFuZHMgYm9hcmQgc3VwcG9ydCBieSBTdGVmYW4gUm9lc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGMyZTQ5ZjcwNmJhMTMyMTNmM2M4ZGEzYTMzZTg4MDEwMjE0ZTE5OTcKLUF1dGhvcjogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJU2F0IEp1bCAyNSAwNjoxOToxMiAyMDA5ICswMjAwCi0KLSAgICBtcGM4M3h4OiBBZGQgZXNkIFZNRTgzNDkgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBlc2QgVk1FODM0OSBib2FyZCBlcXVpcHBlZCB3aXRoIHRoZQotICAgIE1QQzgzNDkuIEl0J3MgYSBWTUUgUE1DIGNhcnJpZXIgYm9hcmQgZXF1aXBwZWQgd2l0aCB0aGUgVHVuZHJhCi0gICAgVFNJMTQ4IFZNRS1icmlkZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmZTYxM2NkZDRlYjJjNWIyNTdhNjBkOGRmYjc3NTk3NDIzMThjMjhhCi1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJVGh1IEp1bCAyMyAxNzoxMDo1NSAyMDA5IC0wNDAwCi0KLSAgICBzYmM4MzQ5OiBjb21iaW5lIEhSQ1cgZmxhc2ggYW5kIHUtYm9vdCBpbWFnZSBmbGFzaAotCi0gICAgVXAgdG8gdGhpcyBwb2ludCBpbiB0aW1lLCB0aGUgc2JjODM0OSBib2FyZCB3YXMgc3RvcmluZyB0aGUgdS1ib290Ci0gICAgaW1hZ2UgaW4gZmxhc2ggMnguCU9uZSBmb3IgdGhlIEhSQ1cgdmFsdWUgYXQgdGhlIGJlZ2lubmluZyBvZgotICAgIGZsYXNoICgweGZmODBfMDAwMCksIGFuZCBvbmNlIGNsb3NlIHRvIHRoZSBlbmQgb2YgZmxhc2ggKDB4ZmZmOF8wMDAwKQotICAgIGZvciB0aGUgYWN0dWFsIGltYWdlIHRoYXQgZ290IGV4ZWN1dGVkLgotCi0gICAgVGhpcyBtb3ZlcyB0aGUgVEVYVF9CQVNFIHRvIGJlIHRoZSBiZWdpbm5pbmcgb2YgZmxhc2gsIHdoaWNoIG1ha2VzCi0gICAgdGhlIHNlY29uZCBjb3B5IG9mIHRoZSBpbWFnZSByZWR1bmRhbnQsIGFuZCBmcmVlcyB1cCB0aGUgZmxhc2gKLSAgICBmcm9tIHRoZSBlbmQgb2YgdGhlIGVudmlyb25tZW50IHN0b3JhZ2UgdG8gdGhlIGVuZCBvZiB0aGUgZmxhc2gKLSAgICBkZXZpY2UgaXRzZWxmLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJlOWI1NmRmMDIxNjhjYTk3NTYyZDZiOWVjNzkxMTM2ZTRjZDkyNWEKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgMjMgMTQ6MDk6MzggMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogQ09ORklHXzgzWFhfR0VORVJJQ19QQ0kgaXMgbm93IHN5bm9ueW1vdXMgd2l0aCBDT05GSUdfUENJOyByZW1vdmUgdGhlIGZvcm1lcgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk0OTc4ZTE5ZjMxZDIyNWI0ZjdkOTdjNGFjYmFjMWVjZmFlYjhmNjkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBKdWwgMjcgMTA6Mzc6MzcgMjAwOSArMDIwMAotCi0gICAgUHJlcGFyZSAyMDA5LjA4LXJjMSAoYWdhaW4sIGFmdGVyIGZpeGluZyBsYXN0IG1pbnV0ZSBpc3N1ZXMpLgotCi0gICAgVXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDk2ODlkZGNjYTZlMDFmMzYzN2I0NDQyZmE4NTc1ZjI5ZWY0ZDdhYTMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBKdWwgMjcgMTA6MDY6MzkgMjAwOSArMDIwMAotCi0gICAgY3B1L2FybTkyMHQvc3RhcnQuUzogaW5jbHVkZSA8Y29tbW9uLmg+IHRvIGhhdmUgUk9VTkQoKSBkZWZpbmVkCi0KLSAgICBDb21taXQgZmNkM2M4N2UgbWFkZSBpbmNsdWRlL2NvbW1vbi5oIHVzYWJsZSBieSBhc3NlbWJsZXIgY29kZSBidXQKLSAgICBmYWlsZWQgdG8gdXBkYXRlIGNwdS9hcm05MjB0L3N0YXJ0LlMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjOWVkMzhjYjZkZTUwZmRiNGFhYTYwYjY2OGM1NTUwMDI5MDNiMjExCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDI3IDEwOjAxOjExIDIwMDkgKzAyMDAKLQotICAgIGF0OTFjYXA5YWRrOiBmaXggI2lmZGVmLyNlbmRpZiBwYWlyaW5nICgybmQgdHJ5KQotCi0gICAgQ29tbWl0IDcwMjRhYTE0IHdhcyBzdXBwb3NlZCB0byBmaXggdGhlICNpZmRlZi8jZW5kaWYgcGFpcmluZyBpbgotICAgIGluY2x1ZGUvY29uZmlncy9hdDkxY2FwOWFkay5oLCBidXQgZGlkIG5vdCBjYXRlIGFsbCBwcm9ibGVtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmYjM2NGJlYzVmMjkxNjRkM2VlNjgxZmNkOWQxODdiZTg0MzVkYjEyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDI3IDA5OjU4OjE0IDIwMDkgKzAyMDAKLQotICAgIEZpeCBpbmNsdWRlL2NvbW1vbi5oIGZvciBib2FyZHMgd2l0aCBDT05GSUdfU1RBVFVTX0xFRAotCi0gICAgVGhlIHJlb3JkZXJpbmcgb2YgaW5jbHVkZS9jb21tb24uaCBieSBjb21taXQgZmNkM2M4N2U0OTVmM2M0OCBicm9rZQotICAgIGJvYXJkcyB3aXRoIHN0YXR1cyBMRUQgc3VwcG9ydCwgcmVzdWx0aW5nIGluCi0JZXJyb3I6ICNlcnJvciBTdGF0dXMgTEVEIGNvbmZpZ3VyYXRpb24gbWlzc2luZwotICAgIGVycm9ycy4gVW5kbyB0aGlzIHJlb3JkZXJpbmcgdG8gYXZvaWQgdGhpcyBpc3N1ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA5NDI4MjhhMDk4MGIzY2VhN2RiNjk4Nzg0Y2M3ZjZhM2U3NzQwYjJiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDI3IDA5OjE5OjE1IDIwMDkgKzAyMDAKLQotICAgIEFCSTogZml4IGJ1aWxkIHByb2JsZW1zIGR1ZSB0byBub3cgbmVlZGVkIGRpdjY0IHJvdXRpbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgODVkNmJmMGJkYzhjY2FkMmQ2N2E5MTYwNDcyZjZmOGM2YmI0ODJmYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAyNyAwODo1MDo1OSAyMDA5ICswMjAwCi0KLSAgICBQTUM0MDVERTogZml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTBjNzYwNGQwMjE5NDk0NjRiMWU0YmE5MDNkZjk1ZTZiMmYwZDJmZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAyNyAwMDoyNDo1NSAyMDA5ICswMjAwCi0KLSAgICBQcmVwYXJlIDIwMDkuMDgtcmMxCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HLCBtaW5vciBjb2Rpbmcgc3R5bGUgZml4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGZhZmJiMmMzZTRiMzViNjBjYTMwM2VkMmFkMWM2Y2Y0MDBjZDlhMjIKLUF1dGhvcjogcmhhYmFyYmVyMTg0OEB3ZWIuZGUgPHJoYWJhcmJlcjE4NDhAd2ViLmRlPgotRGF0ZToJRnJpIEp1bCAyNCAwODoxNjozMCAyMDA5ICswMjAwCi0KLSAgICBhZGQgV0FUQ0hET0dfUkVTRVQgdG8gYWxsb3cgTFpNQSBrZXJuZWwgZGVjb21wcmVzc2lvbiBvbiBzbG93IG1hY2hpbmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiByaGFiYXJiZXIxODQ4QHdlYi5kZQotCi1jb21taXQgM2M5NzI4NDlmMmJlY2JmMTljMTNhMjRmMDkwZDI5M2YzN2VjZjYxNgotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotRGF0ZToJVGh1IEp1bCAyMyAyMzozMTo1OCAyMDA5ICswMjAwCi0KLSAgICBMZXNzIHZlcmJvc2Ugb3V0cHV0IHdoZW4gbG9hZGluZyB2eHdvcmtzIDYueCBpbWFnZXMKLQotICAgIExvYWRpbmcgdnhXb3JrcyA1LnggaW1hZ2VzIHJlc3VsdGVkIGp1c3QgaW50byAzIG9yIDQgbGluZXMgb2Ygb3V0cHV0LgotICAgIFdpdGggdnhXb3JrcyA2LnggYW5kIHRoZSBuZXcgR0NDIGl0IGVtaXRzIGFib3V0IDMwIGxpbmVzLCB3aGljaCBpcwotICAgIGZhciB0b28gbm9pc3kgaW4gbXkgb3Bpbmlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci0KLWNvbW1pdCBmY2QzYzg3ZTQ5NWYzYzQ4YjcwYzkxOTg2OWZiMWUwYjkzZDQ4ODBiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDI0IDAwOjE3OjQ4IDIwMDkgKzAyMDAKLQotICAgIE1ha2UgaW5jbHVkZS9jb21tb24uaCB1c2FibGUgYnkgYXNzZW1ibGVyIGNvZGUKLQotICAgIENvbW1pdCA3MGViZjMxNiBmYWN0b3JlZCBvdXQgdGhlIFJPVU5EKCkgbWFjcm8gaW50byBpbmNsdWRlL2NvbW1vbi5oLAotICAgIG5vdCByZWFsaXppbmcgdGhhdCB0aGUgcHJpbWFyeSB1c2Ugb2YgdGhpcyBtYWNybyBvbiBBVDkxIHN5c3RlbXMgd2FzCi0gICAgaW4gc3RhcnQuUyB3aGVyZSBjb21tb24uaCB3YXMgbm90IGluY2x1ZGVkLCBhbmQgY291bGQgbm90IGJlIGluY2x1ZGVkCi0gICAgYmVjYXVzZSBpdCBjb250YWlucyBhIGxvdCBvZiBDIGNvZGUgd2hpY2ggdGhlIGFzc2VtYmxlciBkb2Vzbid0Ci0gICAgdW5kZXJzdGFuZC4KLQotICAgIFRoaXMgcGF0Y2ggd3JhcHMgc3VjaCBjb2RlIGluIGNvbW1vbi5oIGluIGEgIiNpZm5kZWYgX19BU1NFTUJMWV9fIgotICAgIGNvbnN0cnVjdCwgYW5kIHRoZW4gYWRkcyBhbiBpbmNsdWRlIHRvIGNwdS9hcm05MjZlanMvc3RhcnQuUyB0aHVzCi0gICAgc29sdmluZyB0aGUgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkZWVjMTViMzA2NGQzYmIwMTg5YWVkZTNjMjkyMWZkN2VlNDAxYTBmCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoZWlrby5zY2hvY2hlckBpbnZpdGVsLmh1PgotRGF0ZToJVGh1IEp1bCAyMyAxMzoyNzowNCAyMDA5ICswMjAwCi0KLSAgICBhcm06IGFkZCBfbHNocmRpMy5TCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDUyYjFiZjJjNWNkMmY4YWY4ODBkYWI1MDNkMDAzOWIzNTU3MDY2NWIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMjMgMTM6MTU6NTkgMjAwOSArMDIwMAotCi0gICAgTWFrZSBsaW5raW5nIGFnYWluc3QgbGliZ2NjIGNvbmZpZ3VyYWJsZQotCi0gICAgTWFueSAoZXNwZWNpYWxseSBBUk0pIHRvb2wgY2hhaW5zIHNlZW0gdG8gY29tZSB3aXRoIGJyb2tlbiBvcgotICAgIG90aGVyd2lzZSB1bnVzYWJsZSAoZm9yIHRoZSBwdXJwb3NlcyBvZiBidWlsaW5nIFUtQm9vdCkgcnVuLXRpbWUKLSAgICBzdXBwb3J0IGxpYnJhcmllcyBgbGliZ2NjLmEnLiBCeSB1c2luZyB0aGUgIlVTRV9QUklWQVRFX0xJQkdDQyIKLSAgICBzZXR0aW5nIHdlIGFsbG93IHRvIHVzZSBhbHRlcm5hdGl2ZSBsaWJyYXJpZXMgaW5zdGVhZC4KLQotICAgICJVU0VfUFJJVkFURV9MSUJHQ0MiIGNhbiBlaXRoZXIgYmUgc2V0IGFzIGFuIGVudmlyb25tZW50IHZhcmlhYmxlIGluCi0gICAgdGhlIHNoZWxsLCBvciBhcyBhIGNvbW1hbmQgbGluZSBhcmd1bWVudCB3aGVuIHJ1bm5pbmcgIm1ha2UiLCBpLiBlLgotCSQgbWFrZSBVU0VfUFJJVkFURV9MSUJHQ0M9eWVzCi0gICAgb3IKLQkkIFVTRV9QUklWQVRFX0xJQkdDQz15ZXMKLQkkIGV4cG9ydCBVU0VfUFJJVkFURV9MSUJHQ0MKLQkkIG1ha2UKLQotICAgIFRoZSB2YWx1ZSBvZiAiVVNFX1BSSVZBVEVfTElCR0NDIiBpcyB0aGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHdoaWNoCi0gICAgY29udGFpbnMgdGhlIGFsdGVybmF0aXZlIHJ1bi10aW1lIHN1cHBvcnQgbGlicmFyeSBgbGliZ2NjLmEnLiBUaGUKLSAgICBzcGVjaWFsIHZhbHVlICJ5ZXMiIHNlbGVjdHMgdGhlIGRpcmVjdG9yeSAkKE9CSlRSRUUpL2xpYl8kKEFSQ0gpIC4KLQotICAgIE5vdGUgdGhhdCBub3QgYWxsIGFyY2hpdGVjdHVyZXMgcHJvdmlkZSBhbiBhbHRlcm5hdGl2ZSBgbGliZ2NjLmEnIGluCi0gICAgdGhlaXIgbGliXyQoQVJDSCkgZGlyZWN0b3JpZXMgLSBzbyBmYXIsIG9ubHkgQVJNIGRvZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIENjOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgY2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQ3OTEwNTA2NWQ5NjUxMjFmNTdiNTVkY2ZlODNhOTQwY2JhNDZhYzEKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVdlZCBKdWwgMjIgMTc6NTE6NTYgMjAwOSArMDIwMAotCi0gICAgVXNlIGRvX2RpdiBmcm9tIGRpdjY0LmggZm9yIHZzcHJpbnRmCi0KLSAgICBVc2UgZG9fZGl2IGZyb20gZGl2NjQuaCBmb3IgdnNwcmludGYgaW4gY2FzZSBvZiA2NGJpdCBkaXZpc2lvbi4KLSAgICBGb3IgMzJiaXQgZGl2aXNpb24sIGRvX2RpdiBmcm9tIGRpdjY0LmggY2FuJ3QgYmUgdXNlZCBhcyBpdAotICAgIG5lZWRzIGEgNjRiaXQgcGFyYW1ldGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENDOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0KLWNvbW1pdCA0ODI4Nzc5MjM4NGE5M2Q3N2Q0M2FhYWExYzA2Y2FjMjc1YmJlMWJiCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJTW9uIEp1bCAyMCAwOTo0Nzo0NyAyMDA5ICswOTAwCi0KLSAgICBGaXggY29tcGlsZXIgd2FybmluZ3MgYWZ0ZXIgbG9mZl90IGNoYW5nZQotCi0gICAgTm93ICdlbnZfYWRkcicgdHlwZSBpcyBsb2ZmX3Qgc28gdXNlIGNvcnJlY3QgZmllbGQgdHlwZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA5YzY3MzUyZjcyN2E1YjVlZmY1MzFjODUyZjljZmY1OWZjYjE3ZjdmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDI2IDIzOjI4OjAyIDIwMDkgKzAyMDAKLQotICAgIFJldmVydCAicHBjOiBVbmxvY2sgY2FjaGUtYXMtcmFtIGluIGEgY29uc2lzdGVudCBtYW5uZXIiCi0KLSAgICBUaGlzIHJldmVydHMgY29tbWl0IDk4MmFkZmM2MTA2Njk0ODJhMzIxMjcyODJmZTQ4OTg1N2E5MmNmZTMuCi0KLSAgICBUaGlzIHBhdGNoIGNhdXNlcyBwcm9ibGVtcyBvbiBNUEM4M3h4IGJvYXJkcyAtIGZsYXNoIHJlY29nbml0aW9uIHN0b3BzCi0gICAgd29ya2luZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzNWNmM2I1N2VhZmUzZWUxZjY5M2UyNDI2N2UwZWNmZWZhYjYwMjUxCi1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KLURhdGU6CUZyaSBKdWwgMjQgMTA6MzE6NDggMjAwOSArMDIwMAotCi0gICAgdXBkYXRlIHRoZSBFQitNQ0YtRVYxMjMgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBzdXBwb3J0IGZvciBFQitNQ0YtRVYxMjMgYm9hcmQgYW5kIG5lZWRzCi0gICAgdGhlIFtQQVRDSCAxLzIgVjNdIG5ldyB2aWRlbyBkcml2ZXIgZm9yIGJ1cyB2Y3hrIGZyYW1lYnVmZmVycwotCi0gICAgKiByZW1vdmUgdGhlIGJvYXJkIGZyYW1lYnVmZmVyIGRyaXZlcgotICAgICogdXNlIHRoZSBjb21tb24gYnVzX3ZjeGsgZnJhbWVidWZmZXIgZHJpdmVyCi0gICAgKiBhZGRzIGJtcCBzdXBwb3J0Ci0gICAgKiBhZGRzIHNwbGFzaGltYWdlIHN1cHBvcnQKLSAgICAqIGZpeCBzZXJ2ZXJhbCBjb3NtZXRpY2FsIGVycm9ycwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgotICAgIFthZ3VzdEBkZW54LmRlOiBmaXhlZCBzb21lIHN0eWxlIGlzc3VlcyBiZWZvcmUgYXBwbHlpbmddCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgMDQ1MzhjZGI3NTJlZWVhOGZkMjNjZjdhYzMzOTQ0MzlmMTg5ZmI3NwotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDI2IDEyOjA1OjI1IDIwMDkgKzAyMDAKLQotICAgIHZpZGVvOiBidXNfdmN4ay5jOiBmaXggc3R5bGUgaXNzdWVzIGFkZGVkIGJ5IDUwMjE3ZGVlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA1MDIxN2RlZWIwNzkxMWQ2ODY3OTBkMzRkNDY4ZWI5YTUyNDVmNjhkCi1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KLURhdGU6CUZyaSBKdWwgMjQgMTA6MDk6MDIgMjAwOSArMDIwMAotCi0gICAgbmV3IHZpZGVvIGRyaXZlciBmb3IgYnVzIHZjeGsgZnJhbWVidWZmZXJzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYSBuZXcgdmlkZW8gZHJpdmVyCi0KLSAgICAqIGFkZHMgY29tbW9uIGJ1c192Y3hrIGZyYW1lYnVmZmVyIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgotICAgIFthZ3VzdEBkZW54LmRlOiBmaXhlZCBsb3RzIG9mIHN0eWxlIGlzc3VlcyBiZWZvcmUgYXBwbHlpbmddCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNjBlOTc0MTkyNDZkMGEzNjE1NzU4YWQ2YWY0MDY4MGFlZmI1ZjdmMQotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KLURhdGU6CVR1ZSBKdWwgMjEgMTQ6MDk6NDUgMjAwOSArMDIwMAotCi0gICAgbGNkLmg6IGRlZmluZSBleHRlcm4gdmlkaW5mb190IGZvciBhbGwgY2FzZXMKLQotICAgIGluY2x1ZGUvbGNkLmggaGFzIGRpZmZlcmVudCB2aWRpbmZvIGZvciBkaWZmZXJlbnQgcGxhdGZvcm1zLAotICAgIGFuZCBzZXZlcmFsIGV4dGVybiBkZWNsYXJhdGlvbiwgYnV0IG9uZSBmb3IgdGhlIGRlZmF1bHQgY2FzZSB3YXMKLSAgICBtaXNzaW5nLiBUaGlzIG1ha2VzIHRoZW0gYSBzaW5nbGUgZXh0ZXJuIGRlY2xhcmF0aW9uIGZvciBldmVyeW9uZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tPgotCi1jb21taXQgYmNmMGI1MjQ4OTUyYzZiMDMwODFkYzVjYzRmZjllMGIyMjk5YzVmYQotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDI2IDExOjA0OjU5IDIwMDkgKzAyMDAKLQotICAgIG1pbWMyMDAuYzogZml4IHRvbyBsb25nIGxpbmVzIGFkZGVkIGJ5IGY2ODM3OGQ2Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBmNjgzNzhkNjBhOTA1ZDQzMTU1ZjJlODliZjgxOTk5ZDNjOTNhOTBhCi1BdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmai1saXN0QG1pbWMuY28udWs+Ci1EYXRlOglUdWUgSnVsIDIxIDExOjM1OjIyIDIwMDkgKzAxMDAKLQotICAgIEFkZCBMQ0Qgc3VwcG9ydCB0byBNSU1DMjAwIGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIE1JTUMyMDAgZmlsZXMgdG8gZW5hYmxlIHRoZSBMQ0QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLQotY29tbWl0IDY5ZjMyZTZjMjRkNDFmY2RmMzQ3ZmY2NGU5YzEzYjI1MDU5YWNlNTgKLUF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqLWxpc3RAbWltYy5jby51az4KLURhdGU6CVR1ZSBKdWwgMjEgMTE6MTg6NDQgMjAwOSArMDEwMAotCi0gICAgQWRkIDE2Yml0IGNvbG91ciBzdXBwb3J0IGluIGxjZC5oCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgTENEX0NPTE9SMTYgaW4gaW5jbHVkZS9sY2QuaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgotCi1jb21taXQgYmRjODczZWEwNjNiOGNjNmQ0NGM2YWI3NDhiNzcyM2E5N2Q4ZDdiMwotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDI2IDEwOjM0OjU4IDIwMDkgKzAyMDAKLQotICAgIGxpYl9hdnIzMi9ib2FyZC5jOiBmaXggdG9vIGxvbmcgbGluZSBhZGRlZCBieSA3MTZlY2UxZAotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNzE2ZWNlMWRlOWE3ZDQzYTYxZDg2OThhYzQxYjcxYjY0ZjY2ZjllOQotQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmotbGlzdEBtaW1jLmNvLnVrPgotRGF0ZToJVHVlIEp1bCAyMSAxMToxMTozNyAyMDA5ICswMTAwCi0KLSAgICBBZGQgQVZSMzIgTENEIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgQVZSMzIgTENEIGNvbnRyb2xsZXIuICBUaGlzIHBhdGNoIGlzCi0gICAgYmFzZWQgb2ZmIHRoZSBsYXRlc3QgdS1ib290LXZpZGVvLgotCi0gICAgQSBxdWljayBzdW1tYXJ5IG9mIHdoYXQncyBnb2luZyBvbjotCi0KLSAgICBFbmFibGUgTENEQyBwaXhlbCBjbG9jawotICAgIEVuYWJsZSBMQ0RDIHBvcnQgcGlucwotICAgIEFkZCBmcmFtZWJ1ZmZlciBwb2ludGVyIHRvIGdsb2JhbF9kYXRhIHN0cnVjdAotICAgIEFsbG9jYXRlIGZyYW1lYnVmZmVyCi0KLSAgICBUbyB1c2UgdGhlIG5ldyBjb2RlLCB1cGRhdGUgeW91ciBib2FyZCBjb25maWcgdG8gaW5jbHVkZSBzb21ldGhpbmcgbGlrZQotICAgIHRoaXM6LQotCi0gICAgI2RlZmluZSBDT05GSUdfTENECQkJMQotCi0gICAgI2lmIGRlZmluZWQoQ09ORklHX0xDRCkKLSAgICAjZGVmaW5lIENPTkZJR19DTURfQk1QCi0gICAgI2RlZmluZSBDT05GSUdfQVRNRUxfTENECQkxCi0gICAgI2RlZmluZSBMQ0RfQlBQCQkJCUxDRF9DT0xPUjE2Ci0gICAgI2RlZmluZSBDT05GSUdfQk1QXzE2QlBQCQkxCi0gICAgI2RlZmluZSBDT05GSUdfRkJfQUREUgkJCTB4MTA2MDAwMDAKLSAgICAjZGVmaW5lIENPTkZJR19XSElURV9PTl9CTEFDSwkJMQotICAgICNkZWZpbmUgQ09ORklHX1ZJREVPX0JNUF9HWklQCQkxCi0gICAgI2RlZmluZSBDT05GSUdfU1lTX1ZJREVPX0xPR09fTUFYX1NJWkUJCTI2MjE0NAotICAgICNkZWZpbmUgQ09ORklHX0FUTUVMX0xDRF9CR1I1NTUJCTEKLSAgICAjZGVmaW5lIENPTkZJR19TWVNfQ09OU09MRV9JU19JTl9FTlYJMQotICAgICNkZWZpbmUgQ09ORklHX1NQTEFTSF9TQ1JFRU4JCTEKLSAgICAjZW5kaWYKLQotICAgIFRoZSBzdGFuZGFyZCBVLUJvb3QgQk1QIGFuZCBTcGxhc2gtc2NyZWVuIGZlYXR1cmVzIHNob3VsZCBqdXN0IHdvcmsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLSAgICBbYWd1c3RAZGVueC5kZTogZml4ZWQgc29tZSBzdHlsZSBpc3N1ZXNdCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNjExMTcyMmE5MjgxYzZlMDRhNzMwNGQ1MDI1NTZhZmZmNmE1YTFmOAotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLmNvbT4KLURhdGU6CVN1biBKdWwgMTkgMTc6NTI6MjcgMjAwOSArMDIwMAotCi0gICAgdmlkZW86IG1vdmUgZXh0ZXJuIGRlY2xhcmF0aW9ucyBmcm9tIEMgdG8gaGVhZGVycwotCi0gICAgVGhpcyBtb3ZlcyBzb21lIGV4dGVybiBkZWNsYXJhdGlvbiBmcm9tIGxjZC5jIHRvIGxjZC5oLCByZW1vdmluZwotICAgIHVubmVlZGVkIGlmZGVmIGFyb3VuZCBhIHBhaXIgb2YgdGhlbS4gIEFkZGl0aW9uYWxseSwgc2luY2UKLSAgICBndW56aXBfYm1wKCkgd2FzIGRlY2xhcmVkIHN0YXRpYyBpbiBjbWRfYm1wLmMgYnV0IGV4dGVybiBpbiBsY2QuYywgSQotICAgIHJlbW92ZWQgdGhlIHN0YXRpYy4gIFRoZSBleHRyYSAiI2luY2x1ZGUgPGxjZC5oPiIgaW4gY21kX2JtcC5jIGlzCi0gICAgYWRkZWQgdG8gZW5zdXJlIHRoZSBoZWFkZXIgaXMgY29uc2lzdGVudCB3aXRoIHRoZSBzb3VyY2UuCi0KLSAgICBUaGlzIGhhcyBiZWVuIGNvbXBpbGUtdGVzdGVkIG9uIGJvdGggQVJNIChhdDkxIGJvYXJkcykgYW5kIFBvd2VyUEMKLSAgICAoSEg0MDVfY29uZmlnLCBUUU04MjNMX0xDRF9jb25maWcsIG1jYzIwMF9jb25maWcpLCB0byB0ZXN0IGFsbCB1c2UKLSAgICBjb21iaW5hdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQGdudWRkLml0PgotICAgIFthZ3VzdEBkZW54LmRlOiByZW1vdmVkIGd1bnppcF9ibXAoKSBmaXhlcyBhcyBjb21taXQgYzAxMTcxZWEgZGlkIGl0XQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGY1MWUwMDExNDNjNTg0NDdlYjUwZTdhZWZhMmIwOWViNGNjMTQxMGMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEp1bCAyMyAxNjoyNjo1OCAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogcmVzdG9yZSBFVlQxIGhhbmRsaW5nIGluIGxpbmtlciBzY3JpcHQKLQotICAgIFNhZGx5LCB0aGUgQmxhY2tmaW4gbGlua2VyIHNjcmlwdCB1bmlmaWNhdGlvbiBsb3N0IGEgc21hbGwgI2lmZGVmIGxvZ2ljCi0gICAgbmVlZGVkIG9uIG9sZGVyIHBhcnRzLiAgUmVzdG9yZSB0aGF0IENPTkZJR19CRklOX0JPT1RST01fVVNFU19FVlQxIGxvZ2ljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZjMzYjMyNWFmNjY2YjEyZWFmYTlhYjIzNWIyY2Q1OTgzMmQ2ZTUxYwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEp1bCAyNCAxNDoyNDowNyAyMDA5ICswMjAwCi0KLSAgICBSZXZlcnQgInpsaWI6IHVwZGF0ZWQgdG8gdi4xLjIuMyIKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgYjIwMTE3MWYyYjRkNTA5ZjNhZDUxMGIyMTRiZWU3MGZmOTAyZTNkNi4KLQotICAgIFRoZSBjb21taXQgY2F1c2VkIHByb2JsZW1zIGZvciBleGFtcGxlIHdoZW4gdW5wYWNraW5nIGtlcm5lbCBpbWFnZXM6Ci0KLQkgICBVbmNvbXByZXNzaW5nIEtlcm5lbCBJbWFnZSAuLi4gRXJyb3I6IGluZmxhdGUoKSByZXR1cm5lZCAtMgotCSAgIEdVTlpJUDogdW5jb21wcmVzcywgb3V0LW9mLW1lbSBvciBvdmVyd3JpdGUgZXJyb3IgLSBtdXN0Ci0JICAgUkVTRVQgYm9hcmQgdG8gcmVjb3ZlcgotCi0gICAgQ29uZmxpY3RzOgotCi0JaW5jbHVkZS91LWJvb3QvemxpYi5oCi0JbGliX2dlbmVyaWMvemxpYi5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGIxMzg5ZTBjZWIxOWU5YjUwYjk2ZmQzOTA4NDgzYTZjMjI3NGZiMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVsIDIxIDE0OjA2OjI5IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIGNoaXBfY29uZmlnIGNvbW1hbmQgdG8gQU1DQyBLaWxhdWVhIGV2YWwgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgImFsdGVycGxsIiBjb21tYW5kIGFuZCByZXBsYWNlcyBpdCB3aXRoIHRoZSBub3cKLSAgICBwcGM0eHggc3RhbmRhcmQgImNoaXBfY29uZmlnIiBjb21tYW5kIHRvIGNvbmZpZ3VyZSB0aGUgSTJDIGJvb3RzdHJhcAotICAgIEVFUFJPTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGY2YWY4Y2UwYzgwMzI3Y2I2YWFhMzQ3NjQyMDI2YWQ4MzgzMzVjMjMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyMSAxNDozMzo1MiAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBFRVBST00gY29uZmlndXJhdGlvbiBvbiBLaWxhdWVhCi0KLSAgICBLaWxhdWVhIGhhcyBhbiBBVDI0QzAyIEVFUFJPTSB3aGljaCBoYXMgYW4gOCBieXRlIHBhZ2UuIFdpdGhvdXQgZGVmaW5pbmcKLSAgICBDT05GSUdfU1lTX0VFUFJPTV9QQUdFX1dSSVRFX0JJVFMgdG8gMyB0aGUgImVlcHJvbSIgY29tbWFuZCBkb2Vzbid0Ci0gICAgd29yayBjb3JyZWN0bHkuCi0KLSAgICBBZGRpdGlvbmFsbHkgdGhlIHBhZ2Ugd3JpdGUgZGVsYXkgKENPTkZJR19TWVNfRUVQUk9NX1BBR0VfV1JJVEVfREVMQVlfTVMpCi0gICAgaXMgc2V0IHRvIGEgbW9yZSBkZWZlbnNpdmUgdmFsdWUgb2YgMTBtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDk5ZDhiMjNiYzdlMmJlMDRmY2JmNDljNWNlYzlmNWFlNzZkZjI5MGMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CVdlZCBKdWwgMjIgMTM6NTY6MjEgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgNDA1RVAgYmFzZWQgUE1DNDA1REUgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZGE3OTlmNjZhZDFkNGZjMzZkZDIwY2MyZDdlNTg0NDkzZmRhODU0NgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJTW9uIEp1bCAyMCAxMjoxNTozOCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBzdHJ1Y3QgZm9yIDR4eCBHUElPIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDU4ZWExNDJmYjJlOTY5ZjMyMzA2YzhkYTFkYWJmYWViZDZmYTE0MWEKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CVdlZCBKdWwgMjIgMTc6Mjc6NTYgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBSZXBsYWNlIDR4eCBsb3dlcmNhc2UgU1BSIHJlZmVyZW5jZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODdjMGI3MjkwOGUwNTY2MmI4YjQxNWUyNmUxMDQyZjQ3Nzk2MjlkYQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDIwIDA2OjU3OjI3IDIwMDkgKzAyMDAKLQotICAgIEFkZCAiY2hpcF9jb25maWciIGNvbW1hbmQgZm9yIFBQQzR4eCBib290c3RyYXAgY29uZmlndXJhdGlvbgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgZ2VuZXJpYyBjb21tYW5kIGZvciBwcm9ncmFtbWluZyBJMkMgYm9vdHN0cmFwCi0gICAgZWVwcm9tcyBvbiBQUEM0eHguIEFuIGltcGxlbWVudGF0aW9uIGZvciBDYW55b25sYW5kcyBib2FyZCBpcwotICAgIGluY2x1ZGVkLgotCi0gICAgVGhlIGNvbW1hbmQgbmFtZSBpcyBpbnRlbnRpb25hbGx5IGNob3NlbiBub3QgdG8gYmUgUFBDNHh4IHNwZWNpZmljLgotICAgIFRoaXMgd2F5IG90aGVyIENQVSdzL1NvQydzIGNhbiBpbXBsZW1lbnQgYSBzaW1pbGFyIGNvbW1hbmQgdW5kZXIKLSAgICB0aGUgc2FtZSBuYW1lLCBwZXJoYXBzIHdpdGggYSBkaWZmZXJlbnQgc3ludGF4LgotCi0gICAgVXNhZ2Ugb24gQ2FueW9ubGFuZHM6Ci0KLSAgICA9PiBjaGlwX2NvbmZpZwotICAgIEF2YWlsYWJsZSBjb25maWd1cmF0aW9ucyAoSTJDIGFkZHJlc3MgMHg1Mik6Ci0gICAgNjAwLW5vcgkgICAgIC0gTk9SICBDUFU6IDYwMCBQTEI6IDIwMCBPUEI6IDEwMCBFQkM6IDEwMAotICAgIDYwMC1uYW5kCSAgICAgLSBOQU5EIENQVTogNjAwIFBMQjogMjAwIE9QQjogMTAwIEVCQzogMTAwCi0gICAgODAwLW5vcgkgICAgIC0gTk9SICBDUFU6IDgwMCBQTEI6IDIwMCBPUEI6IDEwMCBFQkM6IDEwMAotICAgIDgwMC1uYW5kCSAgICAgLSBOQU5EIENQVTogODAwIFBMQjogMjAwIE9QQjogMTAwIEVCQzogMTAwCi0gICAgMTAwMC1ub3IJICAgICAtIE5PUiAgQ1BVOjEwMDAgUExCOiAyMDAgT1BCOiAxMDAgRUJDOiAxMDAKLSAgICAxMDAwLW5hbmQJICAgICAtIE5BTkQgQ1BVOjEwMDAgUExCOiAyMDAgT1BCOiAxMDAgRUJDOiAxMDAKLSAgICAxMDY2LW5vcgkgICAgIC0gTk9SICBDUFU6MTA2NiBQTEI6IDI2NiBPUEI6ICA4OCBFQkM6ICA4OCAqKioKLSAgICAxMDY2LW5hbmQJICAgICAtIE5BTkQgQ1BVOjEwNjYgUExCOiAyNjYgT1BCOiAgODggRUJDOiAgODgKLSAgICA9PiBjaGlwX2NvbmZpZyA2MDAtbm9yCi0gICAgVXNpbmcgY29uZmlndXJhdGlvbjoKLSAgICA2MDAtbm9yCSAgICAgLSBOT1IgIENQVTogNjAwIFBMQjogMjAwIE9QQjogMTAwIEVCQzogMTAwCi0gICAgZG9uZSAoZHVtcCB2aWEgJ2kyYyBtZCA1MiAwLjEgMTAnKQotICAgIFJlc2V0IHRoZSBib2FyZCBmb3IgdGhlIGNoYW5nZXMgdG8gdGFrZSBlZmZlY3QKLQotICAgIE90aGVyIDR4eCBib2FyZHMgd2lsbCBiZSBtaWdyYXRlZCB0byB1c2UgdGhpcyBjb21tYW5kIHNvb24KLSAgICBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci0gICAgQWNrZWQtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0KLWNvbW1pdCAxMGMxYjIxODU1NmVkOTg3MWYzNmJjMGM0MDdmNGYyZjYxOTYzNTNiCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSnVsIDE3IDE5OjAxOjE2IDIwMDkgLTA1MDAKLQotICAgIHhwZWRpdGUxazogTW92ZSB0byBYLUVTIHZlbmRvciBkaXJlY3RvcnkKLQotICAgIFRoZSBYUGVkaXRlMTAwMCBpcyBhbiBYLUVTIHByb2R1Y3QgdGh1cyBpdCBjYW4gYmUgcHV0IGluIGJvYXJkL3hlcyBhbG9uZwotICAgIHdpdGggb3RoZXIgWC1FUyBib2FyZHMuICBBbG9uZyB3aXRoIHRoZSBtb3ZlLCB0aGUgYm9hcmQgd2FzIHJlbmFtZWQgdG8KLSAgICBYUGVkaXRlMTAwMCBmcm9tIFhQZWRpdGUxSyB0byBmaXQgWC1FUydzIHN0YW5kYXJkIG5hbWluZyBjb252ZW50aW9uLgotICAgIE1haW50YWluZXJzaGlwIHdhcyBhbHNvIHRyYW5zZmVyZWQgdG8gUGV0ZXIgVHlzZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDU0MzgxYjc5ZDI2OGUxYmVhZDVkNzhlZDg0MjNkZjMxYTNjYjBlMmMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MTUgMjAwOSAtMDUwMAotCi0gICAgeHBlZGl0ZTFrOiBTeW5jIGNoZWNrYm9hcmQoKSB3aXRoIG90aGVyIFgtRVMgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDliNGVmMWY1ZGMwZGFhYjY0ZjQ2MjQ5YTMyZTY3Mjc5YzRkNDRmZDIKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MTQgMjAwOSAtMDUwMAotCi0gICAgeHBlZGl0ZTFrOiBTeW5jIHVwIGJvYXJkIGNvbmZpZyBvcHRpb25zIHdpdGggb3RoZXIgWC1FUyBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNGNkYWQ1ZjQzYWU2N2U0Y2VlYWM2OWVmNGFmNDM5MmJkMmY3MzgxZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEp1bCAxNyAxOTowMToxMyAyMDA5IC0wNTAwCi0KLSAgICB4cGVkaXRlMWs6IFN5bmMgb3JnYW5pemF0aW9uIG9mIGJvYXJkIGNvbmZpZyB3aXRoIG90aGVyIFgtRVMgYm9hcmRzCi0KLSAgICBUaGlzIGNoYW5nZSBzaG91bGQgaGF2ZSBubyBmdW5jdGlvbmFsIGVmZmVjdAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjNGFlMWEwMjU3YTBmNTAwOGVlMjY4NmU4YWE5MmZiYTM5OTJmMjc5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSnVsIDE3IDE5OjAxOjEyIDIwMDkgLTA1MDAKLQotICAgIHhwZWRpdGUxazogU3luYyB1cCBjb21tYW5kcyBhbmQgZW52aXJvbm1lbnQgd2l0aCBvdGhlciBYLUVTIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmYmM3OTUxZWE4NGMyZmU2ZGEwZjYwMDdiNjcyZWQzNWJhZTkxYWNiCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSnVsIDE3IDE5OjAxOjExIDIwMDkgLTA1MDAKLQotICAgIHhwZWRpdGUxazogRGlzYWJsZSB1bnVzZWQgZXRoZXJuZXQgcG9ydCAxCi0KLSAgICBUaGUgWFBlZGl0ZTEwMDAgb25seSBoYXMgMiBhdmFpbGFibGUgZXRoZXJuZXQgcG9ydHM6Ci0gICAgcHBjXzR4eF9ldGgyIChFTUFDMikgYW5kIHBwY180eHhfZXRoMyAoRU1BQzMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc2N2UzMmFkMzY5ZDgzZjU1Zjk1MGU2OTM4ZTY4YjZkYmE3ZmE2NWYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MTAgMjAwOSAtMDUwMAotCi0gICAgeHBlZGl0ZTFrOiBTdG9yZSBlbnZpcm9ubWVudCBpbiBmbGFzaAotCi0gICAgUHJldmlvdXNseSBhbiBJMkMgRUVQUk9NIHdhcyB1c2VkLglUaGUgRUVQUk9NIGhhZCBzaXplLCByZWxpYWJpbGl0eSwKLSAgICBhbmQgYWNjZXNzIGlzc3VlcyB3aGljaCBhcmUgcmVzb2x2ZWQgYnkgc3RvcmluZyB0aGUgZW52aXJvbm1lbnQgaW4KLSAgICBmbGFzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjg4ZGExNTdmOTk5MGNkMmNiMDgxZTRmYWVhNGI5NTgxYjVkMGUyZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEp1bCAxNyAxOTowMTowOSAyMDA5IC0wNTAwCi0KLSAgICB4cGVkaXRlMWs6IEFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIEdQSU8gcGlucwotCi0gICAgRW5hYmxlIEdQSU8gcGlucyBmb3IgYW4gSTJDIEVFUFJPTSB3cml0ZSBwcm90ZWN0LCBhIHN5c3RlbSByZXNldCBwaW4sCi0gICAgYW5kIGEgUE1DICNNT05BUkNIIHBpbi4gIFRoZXNlIHBpbnMgYXJlIG5vdCBjdXJyZW50bHkgdXNlZCBpbiBVLUJvb3QsCi0gICAgYnV0IGFyZSB1c2VkIGluIE9TZXMgYW5kIG1heSBiZSB1c2VkIGluIFUtQm9vdCBpbiB0aGUgZnV0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0MjczNTgxNWRkOWJhMzllZmU1MTIwMzg2OGFlYmNlMDQwNTNjOGRlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSnVsIDE3IDE5OjAxOjA4IDIwMDkgLTA1MDAKLQotICAgIHhwZWRpdGUxazogQWRkIHN1cHBvcnQgZm9yIG9wdGlvbmFsIGZsYXNoZXMKLQotICAgIFRoZSBYUGVkaXRlMTAwMCBjYW4gYmUgYnVpbHQgd2l0aCA0IHRvdGFsIGZsYXNoZXM6Ci0gICAgLSA1MTJLQiBBTUQgc29ja2V0ZWQKLSAgICAtIDE2TUIgSW50ZWwgc29sZGVyZWQKLSAgICAtIDIgeCAzMk1CIEFNRCBNaXJyb3JCaXQgZmxhc2hlcwotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBvcHRpb25hbCAyIDMyTUIgQ0ZJLWNvbXBsaWFudCBBTUQgZmxhc2hlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlMDI5OTA3NjRjNzQxNWM4NDY2ODgyM2EwZmM4YzViNGRkOGQ4Y2YwCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSnVsIDE3IDE5OjAxOjA3IDIwMDkgLTA1MDAKLQotICAgIHhwZWRpdGUxazogQ2xlYW51cCBjb2Rpbmcgc3R5bGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDg2ZmYzNGEzYTdlNWU1OTU2MzBkNjU4YzFjMTM3NzgzOTk0NTJkMQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEp1bCAxNyAxOTowMTowNiAyMDA5IC0wNTAwCi0KLSAgICB4cGVkaXRlMWs6IFJlbW92ZSBzdXBwb3J0IGZvciByZWFkaW5nIE1BQ3MgZnJvbSBFRVBST00KLQotICAgIEJ5IGRlZmF1bHQsIHRoZSBYUGVkaXRlMTAwMCBjb21lcyBpbnN0YWxsZWQgd2l0aCB4TW9uLCBhIHByb3ByaWV0YXJ5Ci0gICAgYm9vdGxvYWRlci4gIHhNb24gc3RvcmVzIGl0cyBNQUMgYWRkcmVzcyBpbiBhbiBvbmJvYXJkIEVFUFJPTS4gIFJhdGhlcgotICAgIHRoYW4gcmVxdWlyaW5nIGEgbm9uLXN0YW5kYXJkIGxvY2F0aW9uIGluIHRoZSBFRVBST00gdG8gYmUgcmVzZXJ2ZWQgZm9yCi0gICAgTUFDIGFkZHJlc3Nlcywgc3RvcmUgdGhlIE1BQyBhZGRyZXNzZXMgaW4gVS1Cb290J3Mgc3RhbmRhcmQgZW52aXJvbm1lbnQuCi0gICAgQSBVLUJvb3QgYXBwbGljYXRpb24gb3IgT1MgYXBwbGljYXRpb24gY2FuIGJlIHVzZWQgdG8gbWlncmF0ZSB4TW9uIE1BQwotICAgIGFkZHJlc3NlcyB0byBVLUJvb3QncyBlbnZpcm9ubWVudCBpZiBuZWNlc3NhcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDEwOGQ2ZDAwOTkzNzJmOWY2NTMyYzMxOThmYmFhY2FiYzEyMWM5YjMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MDUgMjAwOSAtMDUwMAotCi0gICAgeHBlZGl0ZTFrOiBSZW1vdmUgc3VwcG9ydCBmb3IgZml4ZWQgU0RSQU0gY29uZmlndXJhdGlvbgotCi0gICAgQWxsIFhQZWRpdGUxMDAwJ3MgaGF2ZSBTUEQgRUVQUk9NcyBwcmVzZW50IGFuZCBubyBmaXhlZCBjb25maWd1cmF0aW9uCi0gICAgcGFyYW1ldGVycyBhcmUgY3VycmVudGx5IGRlZmluZWQgb3IgdXNlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjODZkMDBhMmVkOTIzMDAyZjFhYjBiZmIwYTkyNTUyMjYyODMwMmU5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSnVsIDE3IDE5OjAxOjA0IDIwMDkgLTA1MDAKLQotICAgIHhwZWRpdGUxazogUmVtb3ZlIENPTkZJR19TWVNfRFJBTV9URVNUIHN1cHBvcnQKLQotICAgIFBPU1Qgb3IgY29tbWFuZCBsaW5lIHRlc3RzIHByb3ZpZGUgc2ltaWxhciBmdW5jdGlvbmFsaXR5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDExYWQzMDljMTgzYjE3NmQ4ODY2OTQ0MDI2YTYzYzBmMWM2MjZmNTYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTk6MDE6MDMgMjAwOSAtMDUwMAotCi0gICAgeHBlZGl0ZTFrOiBVc2Ugc3RhbmRhcmQgQ0ZJIGZsYXNoIGRyaXZlcgotCi0gICAgVXNpbmcgdGhlIENGSSBmbGFzaCBkcml2ZXIgd2lsbCBhbGxvdyB3cml0ZSBhY2Nlc3MgdG8gdGhlIDE2TUIgSW50ZWwKLSAgICBTdHJhdGFGbGFzaCBwcmVzZW50IG9uIHRoZSBYUGVkaXRlMTAwMC4gIFRoZSA1MTJLQiBzb2NrZXRlZCAobm9uCi0gICAgQ0ZJLWNvbXBsaWFudCBmbGFzaCkgd2lsbCBubyBsb25nZXIgYmUgd3JpdGFibGUuCi0KLSAgICBUaGUgbWFwcGluZyBvZiB0aGUgMTZNQiBTdHJhdGEgZmxhc2ggd2FzIG1vdmVkIHRvIDB4ZmYwMDAwMDAgYW5kIHRoZQotICAgIDUxMktCIEFNRCBzb2NrZXRlZCBmbGFzaCB3YXMgbW92ZWQgdG8gMHhmZTAwMDAwMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDRkMmU3OWJiNDMzZmM3ZWMxOGM2OGNjNDljYzZiNzQzM2QxMzIwYwotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVRodSBKdWwgMTYgMjI6MTM6NTcgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBDbGVhbnVwIFBMVTQwNSBib2FyZCBjb2RlCi0KLSAgICBTb21lIENvZGluZyBzdHlsZSBjbGVhbnVwIChicmFjZXMsIHdoaXRlc3BhY2VzLCBsb25nIGxpbmVzKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiMjA5YTExNDgyOWRjOGE3YTBlMzlhOTMzNWI2ZTRhZWJmOTc0MmNiCi1BdXRob3I6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci1EYXRlOglGcmkgSnVsIDE3IDE0OjE2OjQwIDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIERMLVZpc2lvbiA0MDVFUCBib2FyZCBzdXBwb3J0Ci0KLSAgICBCb2FyZCBzdXBwb3J0IGZvciB0aGUgR3VudGVybWFubiAmIERydW5jayBETC1WaXNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDliMWI4YzhhMWJmNTJlOWI2NWUxOTU4ZTUyMDU4Mzg1NzYwNjZjYmMKLUF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KLURhdGU6CUZyaSBKdWwgMTAgMTQ6NDc6MzIgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggbWlzc2luZyBmcmVxT1BCIGZvciA0MDVFUAotCi0gICAgSW4gY3B1L3BwYzR4eC9zcGVlZC5jIGluaXRpYWxpemF0aW9uIG9mIHN5c0luZm8tPmZyZXFPUEIgZm9yIDQwNUVQIHdhcwotICAgIGxlZnQgb3V0IGZvciBubyBvYnZpb3VzIHJlYXNvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGEzNzFjYTA4OTA4YzliMmE1ODE3MTIyM2E3OWJmZmVhMWY3YzZmNQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVsIDE0IDE1OjUzOjA4IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IFRMQiByZXNldCBwcm9ibGVtIHdpdGggcmVjZW50IDQ0eCBpbWFnZXMKLQotICAgIFBhdGNoIGQ4NzMxMzNmIFtwcGM0eHg6IEFkZCBTZXF1b2lhIFJBTS1ib290aW5nIHRhcmdldF0gYnJva2UgIm5vcm1hbCIKLSAgICBib290aW5nIG9uIHNvbWUgNDR4IHBsYXRmb3Jtcy4gVGhpcyBicmVha2FnZSBpcyBvbmx5IG5vdGljZWQgaW4gc29tZQotICAgIGNhc2VzIHdoaWxlIHBvd2VyY3ljbGluZy4gQXMgaXQgc2VlbXMsIHRoZSBjb2RlIGluIHF1ZXN0aW9uIGluIHN0YXJ0LlMKLSAgICBkaWRuJ3QgaW52YWxpZGF0ZSBUTEIgIzAuIFRoaXMgbWFrZXMgc2Vuc2Ugc2luY2UgdGhpcyBUTEIgaXMgdXNlZCBmb3IKLSAgICB0aGUgYm9vdHJvbSBtYXBwaW5nLiBXaXRoIHRoZSBwYXRjaCBtZW50aW9uZWQgYWJvdmUgZXZlbiBUTEIgIzAgZ290Ci0gICAgaW52YWxpZGF0ZWQgcmVzdWx0aW5nIGluIGFuIGVycm9yIGxhdGVyIG9uLgotCi0gICAgVGhpcyBwYXRjaCBub3cgZml4ZXMgdGhpcyBpc3N1ZSBieSBvbmx5IGludmFsaWRhdGluZyBUTEIgIzAgaW4gdGhlIFJBTS0KLSAgICBib290aW5nIGNhc2UuCi0KLSAgICBUZXN0ZWQgc3VjY2VzZnVsbHkgb24gU2VxdW9pYSBhbmQgQ2FueW9ubGFuZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IERpcmsgRWliYWNoIDxFaWJhY2hAZ2RzeXMuZGU+Ci0KLWNvbW1pdCA0NDI1OWJiOWU2OTZkMjJiZjE3NzMxODExMTE4NTVhMjlmMDBjZjMzCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTk6NTY6MzAgMjAwOSArMDUzMAotCi0gICAgdXNiOiBidWdmaXggZHJpdmVyL3VzYi9ob3N0L2VoY2ktaGNkLmMgZnVuY3Rpb24gZWhjaV9zdWJtaXRfcm9vdAotCi0gICAgVGhpcyBjaGFuZ2UgaXMgY2hla2VkIGluIExpbnV4IHNvdXJjZSBhbmQgZml4IGZvdW5kIHRvIGJlIGluIHN5bmMuCi0gICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgZm9yIFVTQiBob3N0IGludGVyZmFjZSBvbiBLaXJrd29vZCBiYXNlZAotICAgIFNoZWV2YXBsdWcgcGxhdGZvcm0gKEFSTSBsaXR0bGUgZW5kaWFuIGJvYXJkKQotCi0gICAgUmlzazogdGhlIGltcGFjdCBvZiB0aGlzIHBhdGNoIGlzIG5vdCB2YWxpZGF0ZWQgb24gYmlnIGVuZGlhbiBib2FyZC4KLSAgICBUaGlzIG5lZWQgdG8gYmUgY2hlY2tlZC4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgMjg5NThiOGJlYTRjNjY2MjljNWEyMmZkM2M4YjBkNDlkZjkwMzgzZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAyMyAyMjoyMzoyMyAyMDA5ICswMjAwCi0KLSAgICBDb2RpbmcgU3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyNjMyYzAwOGUyYzJjZDYxZmVmYjYyMmVkNjcxZWEzZTZiZDJlMmE2Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBKdWwgMjEgMjI6NTk6MzYgMjAwOSAtMDQwMAotCi0gICAgYXV0b2NvbmYubWs6IGluY2x1ZGUgYmVmb3JlIGNvbmZpZy5tayBmb3IgdG9wIGxldmVsIGZpbGVzCi0KLSAgICBCeSBpbmNsdWRpbmcgYXV0b2NvbmYubWsgYmVmb3JlIGNvbmZpZy5taywgYWxsIHRvcCBsZXZlbCBmaWxlcyBjYW4gdXNlIGFueQotICAgIGNvbmZpZyBvcHRpb25zIGl0IHNldHMgdXAgKGxpa2UgPGFyY2g+X2NvbmZpZy5taykgb3IgdGhlIE1ha2VmaWxlIGl0c2VsZgotICAgIHdpdGhvdXQgYmVpbmcgZm9yY2VkIHRvIHVzZSBsYXp5IGV2YWx1YXRpb24uCi0KLWNvbW1pdCBjMDExNzFlYWVjYzk2M2QyYzFmNTZhMDk4NGEwY2JjZGQ4YTNhYjNjCi1BdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmai1saXN0QG1pbWMuY28udWs+Ci1EYXRlOglUdWUgSnVsIDIxIDExOjMwOjUzIDIwMDkgKzAxMDAKLQotICAgIFJlbW92ZSBzdGF0aWMgZGVjbGFyYXRpb24gZnJvbSBndW56aXBfYm1wKCkKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgc3RhdGljIGRlY2xhcmF0aW9uIGZyb20gZ3VuemlwX2JtcCgpCi0KLSAgICBXaXRob3V0IGl0LCB0aGUgZ3VuemlwX2JtcCgpIGZ1bmN0aW9uIGlzIG5vdCB2aXNpYmxlIHRvCi0gICAgY29tbW9uL2xjZC5jIGFuZCBmYWlscyB0byBjb21waWxlIHdpdGggYW4gZXJyb3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLQotY29tbWl0IDJkNGE0M2UyMzBhM2M4YmZkMDNiOWJlYWEwZWIyYTk1ZTc3OWMwM2IKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckBnbWFpbC5jb20+Ci1EYXRlOglNb24gSnVsIDIwIDIxOjUxOjM4IDIwMDkgLTA1MDAKLQotICAgIGNtZF90c2kxNDg6IEdlbmVyYWwgY2xlYW51cAotCi0gICAgLSBGaXggY29tbWFuZCBoZWxwIG1lc3NhZ2UKLSAgICAtIERpc2FibGUgREVCVUcgYnkgZGVmYXVsdAotICAgIC0gRml4IHdoaXRlc3BhY2UgaXNzdWVzCi0gICAgLSBGaXggbGluZXMgPiA4MCBjaGFyYWN0ZXJzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOWFlZjczODg4NTA5ZDEwMTkzNjE1ZWU1Y2Q5Y2Y0MzljYTQ0ZTkzNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVsIDE5IDE1OjE3OjAzIDIwMDkgLTA0MDAKLQotICAgIHVuaWZ5IEhPU1RfQ0ZMQUdTIGFuZCBIT1NUQ0ZMQUdTCi0KLSAgICBUaGUgdG9wIGJ1aWxkIHN5c3RlbSBzZXRzIHVwIEhPU1RDRkxBR1MgYSBiaXQgYW5kIGV4cG9ydHMgaXQsIGJ1dCBvdGhlcgotICAgIHBsYWNlcyB1c2UgSE9TVF9DRkxBR1MgaW5zdGVhZC4gIFVuaWZ5IHRoZSB0d28gYXMgSE9TVENGTEFHUyBzbyB0aGF0IHRoZQotICAgIHZhbHVlcyBzdGF5IGluIHN5bmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyZTkzOTNmNTAwMDY1Zjk0MGU1ZTRhYzdmZTM3NWU0YzBiNzdiOTM2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDIzIDIxOjE2OjU5IDIwMDkgKzAyMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlM2IzOWY4NGU5NzRkZjcwMDY1ZmEyNDhmMGY2Mzk5M2IxNzA4YzlkCi1BdXRob3I6IEFuZHLDqSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglGcmkgSnVsIDE3IDE0OjUwOjI0IDIwMDkgKzAyMDAKLQotICAgIHVwZGF0ZSBjb25maWcgZm9yIG12QkMtUCAoTVBDNTIwMCkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBJMkMgc3VwcG9ydCBmb3IgbXZCQy1QIGFuZCBkZWZpbmVzIGZsYXNoIGxheW91dAotICAgIG1hdGNoaW5nIHRoZSBzaGlwcGVkIHByb2R1Y3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRy6SBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0KLWNvbW1pdCBjYjZkMGI3MmMyYzRmMTNjMDA3NWE3YWU5MmUxMTY4MmVjOTRhMzExCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gSnVsIDEzIDA5OjI0OjAwIDIwMDkgLTA1MDAKLQotICAgIGFoY2k6IEZpeCBnY2MgNC40IGNvbXBpbGVyIHdhcm5pbmcKLQotICAgIGFoY2kuYzogSW4gZnVuY3Rpb24gJ2F0YV9zY3Npb3BfcmVhZF9jYXBhY2l0eTEwJzoKLSAgICBhaGNpLmM6NjE2OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1MWQ5MWUxYTI1M2M5NzcxM2M3ZjNlNWMwYjkxMGE0ZGI0OTc5MjgzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gSnVsIDEzIDA5OjIzOjU5IDIwMDkgLTA1MDAKLQotICAgIGRyaXZlcnMvYmlvc19lbXVsYXRvcjogRml4IGdjYyA0LjQgY29tcGlsZXIgd2FybmluZwotCi0gICAgYmlvc2VtdS5jOiBJbiBmdW5jdGlvbiAnQkVfc2V0VkdBJzoKLSAgICBiaW9zZW11LmM6MTQ3OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmOTdlYzMwYmIzYzVhNGE0NTYxNTllYjJiNzViM2JjNjg3NzJiZjJhCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAxMyAxNjowMToxOSAyMDA5ICswMjAwCi0KLSAgICBSZS1hZGQgc3VwcG9ydCBmb3IgaW1hZ2UgdHlwZSAnU3RhbmRhbG9uZSBQcm9ncmFtJwotCi0gICAgU3VwcG9ydCBmb3IgdGhpcyB0eXBlIHdhcyBsb3N0IGR1cmluZyB0aGUgYm9vdG0gcmVmYWN0b3JpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGNhOTVjOWRmMDI4MGY0MGU4ZTRiZWZhZGJhYWUyMWZhNjdkOTIzMzEKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDEzIDE2OjAxOjE4IDIwMDkgKzAyMDAKLQotICAgIEFkZCBlcnJvciBjaGVja2luZyBmb3IgdW5zdXBwb3J0ZWQgT1MgdHlwZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDk4MmFkZmM2MTA2Njk0ODJhMzIxMjcyODJmZTQ4OTg1N2E5MmNmZTMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTAgMTg6NDY6MTAgMjAwOSAtMDUwMAotCi0gICAgcHBjOiBVbmxvY2sgY2FjaGUtYXMtcmFtIGluIGEgY29uc2lzdGVudCBtYW5uZXIKLQotICAgIFByZXZpb3VzbHksIG5vbi1lNTAwIGFyY2hpdGVjdHVyZXMgb25seSB1bmxvY2tlZCB0aGVpciBkYXRhIGNhY2hlIHdoaWNoCi0gICAgd2FzIHVzZWQgYXMgZWFybHkgUkFNIHdoZW4gYm9vdGluZyB0byBMaW51eCB1c2luZyB0aGUgImJvb3RtIiBjb21tYW5kLgotICAgIFRoaXMgY2hhbmdlIGNhdXNlcyBhbGwgUFBDIGJvYXJkcyB3aXRoIENPTkZJR19TWVNfSU5JVF9SQU1fTE9DSyBkZWZpbmVkCi0gICAgdG8gdW5sb2NrIHRoZWlyIGRhdGEgY2FjaGUgZHVyaW5nIFUtQm9vdCdzIGluaXRpYWxpemF0aW9uLglUaGlzCi0gICAgaW1wcm92ZXMgVS1Cb290IHBlcmZvcm1hbmNlIGFuZCBwcm92aWRlcyBhIGNvbW1vbiBjYWNoZSBzdGF0ZSB3aGVuCi0gICAgYm9vdGluZyB0byBkaWZmZXJlbnQgT1Nlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBiMjAxMTcxZjJiNGQ1MDlmM2FkNTEwYjIxNGJlZTcwZmY5MDJlM2Q2Ci1BdXRob3I6IEdpdXNlcHBlIENPTkRPUkVMTEkgPGdpdXNlcHBlLmNvbmRvcmVsbGlAc3QuY29tPgotRGF0ZToJVGh1IEp1bCAyMyAwNDo1NDo0NSAyMDA5IC0wNDAwCi0KLSAgICB6bGliOiB1cGRhdGVkIHRvIHYuMS4yLjMKLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB6bGliIHRvIHRoZSBsYXRlc3Qgc3RhYmxlIHZlcnNpb24uCi0KLSAgICBPbmx5IHJlbGV2YW50IHpsaWIgcGFydHMgd2VyZSBwb3J0ZWQgdG8gdS1ib290IHRyZWUsIGFzIHdhcyBkb25lIGZvcgotICAgIHRoZSBwcmV2aW91c2x5IHVzZWQgdmVyc2lvbiBvZiB6bGliICgwLjk1KS4gTmV3IHpsaWIgZ2l2ZXMgZmFzdGVyCi0gICAgaW5mbGF0ZSBwZXJmb3JtYW5jZSBhbmQgb3RoZXIgaW1wcm92ZW1lbnRzLCBzZWUgd3d3LnpsaWIubmV0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHaXVzZXBwZSBDb25kb3JlbGxpIDxnaXVzZXBwZS5jb25kb3JlbGxpQHN0LmNvbT4KLSAgICBSZXZpZXdlZC1ieTogQW5nZWxvIENhc3RlbGxvIDxhbmdlbG8uY2FzdGVsbG9Ac3QuY29tPgotCi0gICAgRWRpdGVkIGNvbW1pdCBtZXNzYWdlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOTdjZmU4NjE2MzUwNWVhMThlN2ZmN2I3MWU3OGRmNWJiMDNkYWQ1NwotQXV0aG9yOiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KLURhdGU6CVR1ZSBKdWwgMjEgMTI6MTU6MjggMjAwOSAtMDQwMAotCi0gICAgU2F2ZSBzZXJ2ZXIncyBNQUMgYWRkcmVzcyBpbiBlbnZpcm9ubWVudAotCi0gICAgTGludXgncyBuZXRjb25zb2xlIHdvcmtzIG11Y2ggYmV0dGVyIHdoZW4geW91IGNhbiBwYXNzIGl0IHRoZSBNQUMgYWRkcmVzcyBvZgotICAgIHRoZSBzZXJ2ZXIuIChvdGhlcndpc2UgaXQganVzdCB1c2VzIGJyb2FkY2FzdCwgd2hpY2ggZXZlcnlvbmUgZWxzZSBvbiBteQotICAgIG5ldHdvcmsgY29tcGxhaW5zIGFib3V0IDopCi0KLSAgICBUaGlzIHNldHMgdGhlIGVudiB2YXIgInNlcnZlcmFkZHIiICh0byBtYXRjaCBldGhhZGRyKSwgc28gdGhhdCB5b3UgY2FuIHBhc3MKLSAgICBpdCB0byBsaW51eCB3aXRoIHdoYXRldmVyIGJvb3RhcmdzIHlvdSB3YW50IHRvLi4uLgotCi0gICAgYWRkbmV0Y29uc29sZT1zZXQgYm9vdGFyZ3MgJChib290YXJncykgbmV0Y29uc29sZT1AJChpcGFkZHIpL2V0aDAsQCQoc2VydmVyaXApLyQoc2VydmVyYWRkcikKLQotICAgIFNpZ25lZC1vZi1ieTogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMGIyM2ZiMzY4ZDA4Yzk2NjlmYWM2NDc5NzFmZjI0OWMzZjlmZWU4ZgotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6CVR1ZSBKdWwgMjEgMTk6MzI6MjEgMjAwOSArMDQwMAotCi0gICAgZmVjX214YzogZHJpdmVyIGZvciBGRUMgZXRoZXJuZXQgY29udHJvbGxlciBvbiBpLk1YMjcKLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAwNTQ0YzYzNjgxZDJlYTM2MDdmYWYzNzRlOWM1NmYxMDFlMzY1YjQyCi1BdXRob3I6IEFsZXNzaW8gQ2VudGF6em8gPGNlbnRhenpvQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBKdWwgMTEgMTE6NTY6MDYgMjAwOSAtMDcwMAotCi0gICAgcHBjNHh4OiBGaXhlZCBjb21waWxhdGlvbiB3YXJuaW5nIGluIDR4eF9lbmV0LmMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBjb21waWxhdGlvbiB3YXJuaW5nIGZvciBzb21lIEV0aGVybmV0IFBIWS1sZXNzCi0gICAgUFBDNHh4IHBsYXRmb3JtcyAoNDQwU1BFIGJhc2VkIG9uZXMpIGFuZCBhIHBvdGVudGlhbCBjb21waWxhdGlvbgotICAgIGVycm9yIGZvciA0NDBTUCBwbGF0Zm9ybXMgKHVzZSBvZiB1bmRlZmluZWQgJ2V0aGdyb3VwJyB2YXJpYWJsZSkuCi0gICAgSW4gdGhlIG9yaWdpbmFsIGNvZGUgYW5kIGluIGNhc2Ugb2YgNDQwU1BFIHBsYXRmb3JtcywgJ2V0aGdyb3VwJwotICAgIGlzIGluaXRpYWxpemVkIHRvIC0xIGFuZCBuZXZlciBtb2RpZmllZC4gIExhdGVyIGluIHRoZSBmdW5jdGlvbiwKLSAgICB3aXRoaW4gYW4gI2lmZGVmIHN0YXRlbWVudCwgYW4gJ2lmIHN0YXRlbWVudCcgZXhlY3V0ZXMgY29kZSBvbmx5Ci0gICAgaWYgJ2V0aGdyb3VwJyBpcyBzZXQgdG8gNCwgdGhlcmVmb3JlIGl0IGlzIGhhcm1sZXNzIHRvIGF2b2lkCi0gICAgZXhlY3V0aW5nIHRoZSAnaWYgc3RhdGVtZW50JyBieSByZW1vdmluZyB0aGUgQ09ORklHXzQ0MFNQRSBmcm9tCi0gICAgdGhlIGFmZmVjdGVkICNpZmRlZnMuICBJbiBjYXNlIG9mIDQ0MFNQIHBsYXRmb3JtcyAgd2l0aCBvbi1ib2FyZAotICAgIEV0aGVybmV0IFBIWSwgJ2V0aGdyb3VwJyBpcyB1bmRlZmluZWQgYnV0IHVzZWQgKHRoZXJlIGFyZSBub3Qgc3VjaAotICAgIHBsYXRmb3JtcyBpbiB0aGUgcmVwb3NpdG9yeSB5ZXQpLiBBbGwgb3RoZXIgYXJjaGl0ZWN0dXJlcyBhcmUgbm90Ci0gICAgYWZmZWN0ZWQgYnkgdGhpcyBjaGFuZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2lvIENlbnRhenpvIGFjcGF0aW5AeWFob28uY29tCi0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMDkxMzNmODU4MGYwMTA2NDI5YmEzNjAwZjE4NTViZDM1NzdhZTU4YgotQXV0aG9yOiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+Ci1EYXRlOglUdWUgSnVsIDE0IDIzOjM3OjEyIDIwMDkgKzAzMDAKLQotICAgIERIQ1AgcmVncmVzc2lvbiBvbiAyMDA5LTA2Ci0KLSAgICBGaXhlZCB0aGUgREhDUC9CT09UUC9SQVJQIHJlZ3Jlc3Npb24gaW50cm9kdWNlZCBpbiB1LWJvb3QtMjAwOS4wNgotICAgIGJ5IGluaXRpYWxpemluZyBvdXIgSVAgYWRkciB0byAwIGluIG9yZGVyIHRvIGFjY2VwdCBhbnkgSVAgYWRkcgotICAgIGFzc2lnbmVkIHRvIHVzIGJ5IHRoZSBESENQL0JPT1RQL1JBUlAgc2VydmVyLgotCi0gICAgQWNrLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFphaWRtYW4gPG1pY2hhZWwuemFpZG1hbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDQ0M2NlNGFjOWQxMTM4YWU1YWU2ODYzYjJkNDBhOTZmZDZlZGY1MjMKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJVGh1IEp1bCAxNiAyMDo1ODowMiAyMDA5ICswNTMwCi0KLSAgICBuZXQ6IHBoeTogYnVnZml4ZXM6IG12ODhFNjF4eCBtdWx0aWNoaXAgYWRkcmVzc2luZyBzdXBwb3J0Ci0KLSAgICBXaXRoIHRoZXNlIGZpeGVzLCB0aGlzIGRyaXZlciB3b3JrcyBwcm9wZXJseSBmb3IgbXVsdGkgY2hpcAotICAgIGFkZHJlc3NnaW5nIG1vZGUKLQotICAgIEJ1Z2ZpeGVzOgotICAgIDEuIEJ1aWxkIGVycm9yIGZpeGVkIGZvciBmdW5jdGlvbiBtdjg4ZTYxeHhfYnVzeWNoa19tdWx0aWMtZml4ZWQKLSAgICAyLiBQSFkgZGV2IGFkZHJlc3MgZXJyb3IgZGV0ZWN0aW9uLSBmaXhlZAotICAgIDMuIHdyb25nIGJ1c3kgYml0IHdhcyByZWZlcmVkIGluIGZ1bmN0aW9uIG12ODhlNjF4eF9idXN5Y2hrIC1maXhlZAotICAgIDQuIGludmFsaWQgZGF0YSByZWFkIHB0ciB3YXMgcmVmZXJlZCBmb3IgUkRfUEhZIGluIGNhc2Ugb2YKLQltdWx0aWNoaXAgYWRkcmVzc2luZyBtb2RlIC1maXhlZAotCi0gICAgVGhlIE11bHRpY2hpcCBBZGRyZXNzIG1vZGUgaXMgdGVzdGVkIHdpdGggUkQ2MjgxQSBib2FyZCBoYXZpbmcKLSAgICBNVjg4RTYxNjUgc3dpdGNoIG9uIGl0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDE2MDI1ZWE0NTUzOTIxOWYyYTdjNzUwYzZmMGFlOTgzZWE1YzI3MzcKLUF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotRGF0ZToJV2VkIEp1bCA4IDEzOjA1OjExIDIwMDkgKzAyMDAKLQotICAgIGFybTogS2lya3dvb2Q6IENoZWNrIHRoZSBlcnJvciBzdW1tYXJ5IGJpdCBmb3IgZXJyb3IgZGV0ZWN0aW9uCi0KLSAgICBUaGUgTWFydmVsbCBkb2N1bWVudGF0aW9uIGZvciB0aGUgODhmNjI4MSBzdGF0ZXMgdGhhdCB0aGUgZXJyb3IgY29kaW5nCi0gICAgaXMgb25seSB2YWxpZCBpZiB0aGUgZXJyb3Igc3VtbWFyeSBhbmQgbGFzdCBmcmFtZSBiaXRzIGluIHRoZSB0cmFuc21pdAotICAgIGRlc2NyaXB0b3Igc3RhdHVzIGZpZWxkIGFyZSBzZXQuIFRoaXMgcGF0Y2ggYWRkcyBjaGVja3MgZm9yIHRoZXNlIGZvcgotICAgIHRyYW5zbWl0IChJIHdvdWxkIGdldCB0cmFuc21pdCBlcnJvcnMgb24gYm9vdHAgd2l0aCB0aGUgY3VycmVudCBjaGVjaywKLSAgICB3aGljaCBJIGJlbGlldmUgYXJlIHNwdXJpb3VzKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgN2IwNWY1ZTAyN2I4MWNkM2E5YTQxYzZjNmQzZmUwOWM3MmZhOTNmNgotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglXZWQgSnVsIDggMTM6MDM6MTggMjAwOSArMDIwMAotCi0gICAgYXJtOiBLaXJrd29vZDogRml4IGNvbXBpbGVyIG9wdGltaXphdGlvbiBidWcgZm9yIGt3Z2JlX3NlbmQKLQotICAgIGt3Z2JlX3NlbmQvcmVjdiBib3RoIGhhdmUgbG9vcHMgd2FpdGluZyBmb3IgdGhlIGhhcmR3YXJlIHRvIHNldCAgYSBiaXQuCi0gICAgR0NDIDQuMy4zIGNsZXZlcmx5IG9wdGltaXplcyB0aGUgc2VuZCBjYXNlIHRvIC4uLiBhIHdoaWxlKDEpOyBsb29wLiBUaGlzCi0gICAgcGF0Y2ggdXNlcyByZWFkbCB0byBmb3JjZSBhIHJlYWQgZnJvbSBkZXZpY2UgbWVtb3J5LiBPdGhlciB2b2xhdGlsZQotICAgIGFjY2Vzc2VzIGhhdmUgYWxzbyBiZWVuIHJlcGxhY2VkIHdpdGggcmVhZGwvd3JpdGVsIHdoZXJlIGFwcHJvcHJpYXRlCi0gICAgKGFzIHBlciBzdWdnZXN0aW9ucyBvbiB0aGUgVS1ib290IG1haWxpbmcgbGlzdCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDNmNmIxOGZmZDk0NjIxNjI1ZGU5NjFiYzU2NjAyMmIwMjY2NzkwZjUKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CVRodSBKdWwgMiAxMzoyMToyMiAyMDA5IC0wNDAwCi0KLSAgICBNSUlQSFlCQjogUmV0dXJuIDB4RkZGRiBpZiB0aGUgUEhZIGlzIG5vdCBhc3NlcnRpbmcgVEEuCi0KLSAgICBUaGlzIHBhdGNoIHNldHMgdGhlIHJldHVybmVkIHZhbHVlIHRvIDB4RkZGRiBpZiB0aGUgUEhZIGRvZXMgbm90IGV4aXN0Ci0gICAgYW5kIGRvZXMgbm90IGFzc2VydCBUcmFuc2ZlciBBY2tub3dsZWRnZS4gQSBOVUxMIGNoZWNrIGZvciB0aGUgdmFsdWUKLSAgICBwb2ludGVyIGlzIGFsc28gYWRkZWQgZm9yIGJ1ZmZlciBvdmVyZmxvdyBwcm90ZWN0aW9uLgotCi0gICAgV2l0aG91dCB0aGlzIHBhdGNoICdtaWkgaW5mbycgd2lsbAlzaG93ICdwaGFudG9tJyBkZXZpY2VzIGJlY2F1c2UgdGhlCi0gICAgdmFsdWUgd2lsbCBiZSBub3QgYmUgaW5pdGlhbGl6ZWQgYW5kIHJldHVybiB3aXRoIHNvbWUgcmFuZG9tIHZhbHVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNzM2ZmVhZDhmZGJmOGE4NDA3MDQ4YmViYzM3M2NkNTUxZDAxZWM5OAotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJTW9uIEp1bCAyMCAyMjowMToxMSAyMDA5IC0wNzAwCi0KLSAgICBDb252ZXJ0IFNNQzkxMVggRXRoZXJuZXQgZHJpdmVyIHRvIENPTkZJR19ORVRfTVVMVEkgQVBJCi0KLSAgICBBbGwgaW4tdHJlZSBib2FyZHMgdGhhdCB1c2UgdGhpcyBjb250cm9sbGVyIGhhdmUgQ09ORklHX05FVF9NVUxUSSBhZGRlZAotICAgIEFsc286Ci0gICAgIC0gY2hhbmdlZCBDT05GSUdfRFJJVkVSX1NNQzkxMVgqIHRvIENPTkZJR19TTUM5MTFYKgotICAgICAtIGNsZWFuZWQgdXAgbGluZSBsZW5ndGhzCi0gICAgIC0gbW9kaWZpZWQgYWxsIGJvYXJkcyB0aGF0IG92ZXJyaWRlIHdlYWsgZnVuY3Rpb24gaW4gdGhpcyBkcml2ZXIKLSAgICAgLSBhZGRlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBUZXN0ZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDNiZDBhODc3Yjc0YjljMDA1YWU3Y2I4OTI0ODBjY2VkZmEzMDhjMjAKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMDA6NTA6MTUgMjAwOSAtMDcwMAotCi0gICAgQWRkIHdhcm5pbmcgYWJvdXQgdXBjb21pbmcgcmVtb3ZhbCBvZiBvbGQgRXRoZXJuZXQgQVBJCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYjdmZTI1ZDJhOGQxY2VkZTQwMWQwOWUxZjljODRmOGZlNDdiZGJiMQotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgMiAxNjoxNToxMyAyMDA5ICswNTMwCi0KLSAgICBQMjAyMFJEQiBBZGRlZCBzdXBwb3J0IG9mIFZpdGVzc2UgUEhZcyBWU0M4NjQxKFJHTUlJKSBhbmQgVlNDODIyMShTR01JSSkKLQotICAgIFRoZXNlIFBIWXMgYXJlIG9uIFAyMDIwUkRCIHBsYXRmb3JtLgotCi0gICAgQWxzbyByZXZhbXBlZCBGcmVlc2NhbGUgY29weXJpZ2h0IG1lc3NhZ2UgaW4gZHJpdmVycy9uZXQvdHNlYy5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDFhMzJiZjQxODgxYjVkYmUzMTE5Y2I3N2EzMzU3MmI0ZDQ2MmNhYmYKLUF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+Ci1EYXRlOglNb24gSnVsIDIwIDE0OjUzOjU0IDIwMDkgLTA0MDAKLQotICAgIEFkZCBETlMgc3VwcG9ydAotCi0gICAgT24gMDQgT2N0IDIwMDggUGlldGVyIHBvc3RlZCBhIGRucyBpbXBsZW1lbnRhdGlvbiBmb3IgVS1Cb290LgotCi0gICAgaHR0cDovL3d3dy5tYWlsLWFyY2hpdmUuY29tL3UtYm9vdC11c2Vyc0BsaXN0cy5zb3VyY2Vmb3JnZS5uZXQvbXNnMTAyMTYuaHRtbAotICAgID4KLSAgICA+IEROUyBjYW4gYmUgZW5hYmxlZCBieSBzZXR0aW5nIENGR19DTURfRE5TLiBBZnRlciBwZXJmb3JtaW5nIGEgcXVlcnksCi0gICAgPiB0aGUgc2VydmVyaXAgZW52aXJvbm1lbnQgdmFyIGlzIHVwZGF0ZWQuCi0gICAgPgotICAgID4gUHJvYmFibHkgdGhlcmUgYXJlIHNvbWUgY29zbWV0aWMgaXNzdWVzIHdpdGggdGhlIHBhdGNoLiBVbmZvcnR1bmF0bHkgSQotICAgID4gZG8gbm90IGhhdmUgdGhlIHRpbWUgdG8gY29ycmVjdCB0aGVzZS4gU28gaWYgYW55Ym9keSBlbHNlIGxpa2VzIEROUwotICAgID4gc3VwcG9ydCBpbiBVLUJvb3QgYW5kIGhhcyB0aGUgdGltZSwgZmVlbCBmcmVlIHRvIHBhdGNoIGl0IGluIHRoZSBtYWluIHRyZWUuCi0KLSAgICBIZXJlIGl0IGlzIGFnYWluIC0gc2xpZ2h0bHkgbW9kaWZpZWQgJiBzbWFsbGVyOgotICAgICAgLSB1cGRhdGUgdG8gMjAwOS0wNiAoUGlldGVyJ3MgcGF0Y2ggd2FzIGZvciBVLUJvb3QgMS4yLjApCi0gICAgICAtIFJFQURNRS5kbnMgaXMgYWRkZWQKLSAgICAgIC0gc3ludGF4IGlzIGNoYW5nZWQgKG5vdyB0YWtlcyBhIHRoaXJkIG9wdGlvbiwgdGhlIGVudiB2YXIgdG8gc3RvcmUKLQl0aGUgcmVzdWx0IGluKQotICAgICAgLSBhZGQgYSByYW5kb20gcG9ydCgpIGZ1bmN0aW9uIGluIG5ldC5jCi0gICAgICAtIHNvcnQgTWFrZWZpbGUgaW4gLi9uZXQvTWFrZWZpbGUKLSAgICAgIC0gZG5zIGp1c3QgcmV0dXJucyB1bmxlc3MgYSBlbnYgdmFyIGlzIGdpdmVuCi0gICAgICAtIHJ1biB0aHJvdWdoIGNoZWNrcGF0Y2gsIGFuZCBjbGVhbiB1cCBzdHlsZSBpc3N1ZXMKLSAgICAgIC0gcmVtb3ZlIHBhY2tldCBmcm9tIHN0YWNrCi0gICAgICAtIGNsZWFuZWQgdXAgc29tZSBjb21tZW50cwotICAgICAgLSBmYWlsdXJlIHJldHVybnMgbXVjaCBmYXN0ZXIgKGlmIHNlcnZlciByZXNwb25kcywgZG9uJ3Qgd2FpdCBmb3IKLQl0aW1lb3V0KQotICAgICAgLSB1c2UgYnVpbHQgaW4gZnVuY3Rpb25zIChtZW1jcHkpIHJhdGhlciB0aGFuIGJ5dGUgY29weS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvYmluIEdldHogPHJnZXR6QGJsYWNrZmluLnVjbGludXgub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBWb29ydGh1aWpzZW4gPHBpZXRlci52b29ydGh1aWpzZW5AcHJvZHJpdmUubmw+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDg4YWQzZmQ5MWM4M2E0MzQzYjI1Mzg1ZmQ3OGZkOGUyOWViYjcyM2YKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTI6MTc6MDAgMjAwOSAtMDUwMAotCi0gICAgbmV0OiB0c2VjIC0gZml4IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcyB3YXJuaW5nCi0KLSAgICBmaXggdGhpcyBnY2MgNC40IHdhcm5pbmc6Ci0KLSAgICB0c2VjLmM6IEluIGZ1bmN0aW9uICd0c2VjX2luaXQnOgotICAgIHRzZWMuYzoyMDA6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZDliZWM5ZjQyYWIzNDM4MzczN2M4YTk0NDI5YWEwMmZlNzZkNzk0NgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgSnVsIDE4IDIxOjA0OjA4IDIwMDkgLTA0MDAKLQotICAgIG5ldDogcmVuYW1lIE5ldFJ4UGt0IHRvIE5ldFJ4UGFja2V0Ci0KLSAgICBUaGUgbmV0IGNvZGUgaXMgbW9zdGx5IGNvbnNpc3RlbnQgaW4gdXNpbmcgJ1BhY2tldCcgcmF0aGVyIHRoYW4gJ1BrdCcsIHNvCi0gICAgcmVuYW1lIHRoZSBtaW5vciBkZXRyYWN0b3IgdG8gZm9sbG93IHN1aXRlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4OGE0YzJlNzdjZDU2NzRkYjc0NWQwYzJlYmJhZDY4YzliYWY3NjBjCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVRodSBKdW4gMjUgMTY6MzM6MDQgMjAwOSArMDkwMAotCi0gICAgc2g6IHNoX2V0aDogUmVtb3ZlIGdhcmJhZ2UgZnJvbSBwcmludGYKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyZWEyMGVmYTQ3ZGE5ZDk4ZmYzODIyM2ZmNTFkZWE1NDM5YWQ4NzA4Ci1BdXRob3I6IEFuZHJlYXMgUHJldHpzY2ggPGFwckBjbi1lbmcuZGU+Ci1EYXRlOglUaHUgSnVsIDkgMjE6NTA6MDUgMjAwOSArMDIwMAotCi0gICAgc21jOTExeDogYWRkIHN1cHBvcnQgZm9yIExBTjkyMjEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUHJldHpzY2ggPGFwckBjbi1lbmcuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDcxNjhlYmE3MjliOWU2ZDczMGRiN2NkMTAyODc2N2Y3YjFhNjEyOGIKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+Ci1EYXRlOglUdWUgSnVuIDkgMTE6MTQ6MjQgMjAwOSAtMDcwMAotCi0gICAgcm05MjAwIGV0aGVybmV0IGRyaXZlcjogYm9hcmQtc3BlY2lmaWMgcXVpcmsgKGNzYjMzNykKLQotICAgIENTQjMzNyBib2FyZHMgb3JpZ2luYWxseSBzaGlwcGVkIHdpdGggTWljcm9Nb25pdG9yLCBub3QgVS1Cb290OwotICAgIGFuZCB3aXRoIGEgdmVyc2lvbiB1c2luZyBhIGRpZmZlcmVudCBjb252ZW50aW9uIGZvciByZWNvcmRpbmcKLSAgICBFdGhlcm5ldCBhZGRyZXNzZXMgdGhhbiBhbnlvbmUgZWxzZS4gIFRvIGF2b2lkIGJyZWFraW5nIExpbnV4Ci0gICAgd2hlbiBpdCB1c2VzIFUtQm9vdCwgaGF2ZSBpdCB1c2UgdGhlIHNhbWUgY29udmVudGlvbiBvbiB0aGF0Ci0gICAgaGFyZHdhcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNTcyMTVjZDJlNTlmZDQwMzI0OGRmOGYyZjE5NWUzODI5MDBkNWZjMgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMTYgMDk6NTg6MzEgMjAwOSArMDIwMAotCi0gICAgYXJtLCBraXJrd29vZDogYWRkZWQga3dfZ3Bpb19zZXRfdmFsaWQoKSBpbiBncGlvLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgZWMxNjQ0MTA4NWY0NzFjMDNhOGMwOTA5NTc5NDYzZTMxZTViOTQ3YQotQXV0aG9yOiBEaWV0ZXIgS2llcm1haWVyIDxkay1hcm0tbGludXhAZ214LmRlPgotRGF0ZToJTW9uIEp1biAyOSAxNDo0NTowOCAyMDA5ICswMjAwCi0KLSAgICBLaXJrd29vZDogYWRkIE1hcnZlbGwgS2lya3dvb2QgZ3BpbyBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IERpZXRlciBLaWVybWFpZXIgPGRrLWFybS1saW51eEBnbXguZGU+Ci0gICAgQWNrZWQtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBUZXN0ZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNjg4YjZhMGZmMmRjYmIwYzdlNjNlZjYzY2JiY2MyOTFmMTRmMzIxZgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMTYgMDk6NTk6MTAgMjAwOSArMDIwMAotCi0gICAgYXJtLCBraXJrd29vZDogYWRkZWQgS1dfVFdTSV9CQVNFIGluIGtpcmt3b29kLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgZmJjODM2NWFkN2FiMGFmZDQxNDNiZGJmZmFiMmZkMGIyNGRmMDA0ZgotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglUaHUgSnVsIDE2IDIxOjAyOjI0IDIwMDkgKzA1MzAKLQotICAgIE1hcnZlbGwgUkQ2MjgxQSBCb2FyZCBzdXBwb3J0Ci0KLSAgICBUaGlzIGlzIE1hcnZlbGwncyA4OEY2MjgxX0EwIGJhc2VkIHJlZmVyZW5jZSBkZXNpZ24gYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggaXMgdGVzdGVkIGZvci0KLSAgICAxLiBCb290IGZyb20gRFJBTS9OQU5EIGZsYXNoL05GUwotICAgIDIuIEZpbGUgdHJhbnNmZXIgdXNpbmcgdGZ0cCBhbmQgbG9hZGIKLSAgICAzLiBOQU5EIGZsYXNoIHJlYWQvd3JpdGUvZXJhc2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjkwNmU2ZDY1NGZjYzdmMjQ1MWZkZTIyNWU0ZThiM2YyMGM5NTU1ZgotQXV0aG9yOiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTY6MzU6MTkgMjAwOSArMDIwMAotCi0gICAgYXBpOiBGaXggYnJva2VuIGJ1aWxkIG9uIEFSTS4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYnJva2VuIGJ1aWxkIGludHJvZHVjZWQgYnkgY29tbWl0Ci0gICAgODRiZjdjYTUyMmU5NGVjNDAyYTEyNjRiMDE5NzFiOTI0YjdlMjY4ZiAoYXBpOiByZW1vdmUgdW4tbmVlZGVkCi0gICAgaWZkZWYgQ09ORklHX0FQSSBhbHJlYWR5IGhhbmRsZSBieSB0aGUgTWFrZWZpbGUpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA0ODY3N2ExZWY1ZjgyYWRjYTQ5MTQ1YTdiYWYxMWVjZTc3ZjUxOTQ1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDIyIDIzOjUzOjIzIDIwMDkgKzAyMDAKLQotICAgIEZpeCAibGQ6IGNhbm5vdCBmaW5kIC1sc3R1YnMiIGJ1aWxkIGVycm9yCi0KLSAgICBDb21taXQgMWJjMTUzODYgbW92ZWQgdGhlIGV4YW1wbGVzLyB0byBleGFtcGxlcy9zdGFuZGFsb25lIGJ1dCBmYWlsZWQKLSAgICB0byBhZGFwdCB0aGUgTWFrZWZpbGVzIHRoYXQgbmVlZCB0byBsaW5rIGFnYWluc3QgbGlic3R1YnMuYQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGFlNzExMjFhMTExZGRmOWRkMDU3Y2FjYmJkZDBmNTEwNTRiZTQyOGEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKdWwgMTggMjA6NDc6MzYgMjAwOSArMDIwMAotCi0gICAgYXQ5MWNhcDlhZGs6IGZpeCAjaWZkZWYvI2VuZGlmIHBhaXJpbmcKLQotICAgIFRoZSAjaWZkZWYvI2VuZGlmIHBhaXJpbmcgaW4gdGhpcyBmaWxlIHdhcyBvYnZpb3VzbHkgbWVzc2VkIHVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZiOTZhMjBkNTEyYjA0YTgwODQzODU1Mzg3NGMwMGNmNDA4MTJjNDQKLUF1dGhvcjogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotRGF0ZToJTW9uIEp1bCAyMCAxMTo0MDowMSAyMDA5ICswOTAwCi0KLSAgICBBUk0gQ29ydGV4IEE4OiBNb3ZlIE9NQVAzIHNwZWNpZmljIHJlc2V0IGhhbmRsZXIKLQotICAgIEJlY2F1c2Ugb2YgdGhlIHJlc2V0X2NwdSBpcyBzb2Mgc3BlY2lmaWMsIHNob3VsZCBiZSBtb3ZlIHRvIHNvYwotCi0gICAgQ2M6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgMDQ4ZTdlZmU5MWY2NjA5NGY4NjgyODFjMTJlNDg4Y2UyYmFlODk3NgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEp1bCAyMiAxMDoxMjozOSAyMDA5IC0wNTAwCi0KLSAgICA4NXh4Lzg2eHg6IFJlcGxhY2UgaW44L291dDggd2l0aCBpbl84L291dF84IG9uIEZTTCBib2FyZHMKLQotICAgIFRoZSBwaXhpcyBjb2RlIHVzZWQgaW44L291dDggYWxsIG92ZXIgdGhlIHBsYWNlLiAgUmVwbGFjZSBpdCB3aXRoCi0gICAgaW5fOC9vdXRfOCBtYWNyb3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMGE2ZDBjNjMyMGI3N2JkNjU3MjM5M2E5M2U2YjhjY2RmMzljNzEwMAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEp1bCAyMSAxMzo1MTowOCAyMDA5IC0wNTAwCi0KLSAgICB4cGVkaXRlNTM3MDogRW5hYmxlIE5BTkQgY29tbWFuZCBzdXBwb3J0Ci0KLSAgICBVc2UgdGhlIE1QQzg1NzIncyBlTEJDIHRvIGFjY2VzcyAxIEdCIChvciBncmVhdGVyKSBvbmJvYXJkIE5BTkQgZmxhc2gKLSAgICB2aWEgdGhlICduYW5kJyBjb21tYW5kLgotCi0gICAgUHJldmlvdXNseSwgdGhlIFhQZWRpdGU1MzcwJ3MgTkFORCBjaGlwIHNlbGVjdHMgd2VyZSBwcm9wZXJseQotICAgIGNvbmZpZ3VyZWQsIGJ1dCBOQU5EIHN1cHBvcnQgd2FzIG5vdCBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMzkxMjFjMDg5NmE2NzYwYmQ0MzZkODhjMTc4OTJmNDlhOTc5MDJkMAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEp1bCAyMSAxMzo1MTowNyAyMDA5IC0wNTAwCi0KLSAgICB4ZXM6IEluY3JlYXNlIENPTkZJR19TWVNfQk9PVE1fTEVOIHRvIDE2TUIKLQotICAgIEluY3JlYXNpbmcgQ09ORklHX1NZU19CT09UTV9MRU4gZnJvbSA4IE1CIHRvIDE2IE1CIGlzIG5lY2Vzc2FyeSB0bwotICAgIHN1cHBvcnQgdW5jb21wcmVzc2luZyBpbWFnZXMgbGFyZ2VyIHRoYW4gOCBNQiB3aGVuIHVzaW5nIHRoZSBib290bQotICAgIGNvbW1hbmQuCi0KLSAgICBOb3RlIHRoYXQgcmVjZW50IExpbnV4IGtlcm5lbHMgZm9yIHRoZSA4NXh4IGFuZCA4Nnh4IG1hcCBncmVhdGVyIHRoYW4KLSAgICAxNk1CIG9mIG1lbW9yeSBvbiBib290dXAsIGJ1dCB3ZSB1c2UgMTZNQiB0byBtYWludGFpbiBjb21wYXRpYmlsaXR5IHdpdGgKLSAgICBvbGRlciBMaW51eCBrZXJuZWxzIGZvciBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOYXRlIENhc2UgPG5jYXNlQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDU4ZjMxYjYwMmRmZDUyZWI3ODM2YWI4MmNhYTU4NzUxNGUwNDZmMDIKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVN1biBKdWwgMTkgMTk6MTc6NDEgMjAwOSAtMDUwMAotCi0gICAgeHBlZGl0ZTUzNzA6IEZpeCBJMkMgR1BJTyBpbml0aWFsaXphdGlvbiB0eXBvCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIEFja2VkLWJ5OiBIZWlrbyBTY2hvY2hlcjxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1ZmY4MjEwMDZjNmU3NjQ3ZDE4M2VhOTU4MTcwNDQ5NDNiYjIyZTdlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglTdW4gSnVsIDE5IDE5OjE3OjQwIDIwMDkgLTA1MDAKLQotICAgIHhwZWRpdGU1MjAwLDUzNzA6IFVzZSBidWZmZXJlZCBOT1IgZmxhc2ggd3JpdGVzCi0KLSAgICBCdWZmZXJlZCB3cml0ZXMgYXJlIHBvc3NpYmxlIG9uIHRoZSBYUGVkaXRlNTIwMCBhbmQgWFBlZGl0ZTUzNzAgYW5kIGdyZWF0bHkKLSAgICBpbXByb3ZlIE5PUiBmbGFzaCB3cml0ZSBzcGVlZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGQ5YzE0N2YzNzE4MDBhNDc5YTUwN2E4MTZiMmZlNTcyYzk3ZGExOTcKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTA6MTQ6NDggMjAwOSAtMDUwMAotCi0gICAgODV4eCwgODZ4eDogQWRkIGNvbW1vbiBib2FyZF9hZGRfcmFtX2luZm8oKQotCi0gICAgUHJldmlvdXNseSwgODV4eCBhbmQgODZ4eCBib2FyZHMgd291bGQgZGlzcGxheSBEUkFNIGluZm9ybWF0aW9uIG9uCi0gICAgYm9vdHVwIHN1Y2ggYXM6Ci0KLSAgICAuLi4KLSAgICBJMkM6ICAgcmVhZHkKLSAgICBEUkFNOgotICAgIE1lbW9yeSBjb250cm9sbGVyIGludGVybGVhdmluZyBlbmFibGVkOiBCYW5rIGludGVybGVhdmluZyEKLSAgICAgMiBHQgotICAgIEZMQVNIOiAyNTYgTUIKLSAgICAuLi4KLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIHByaW50aW5nIG9mIHRoZSBEUkFNIGNvbnRyb2xsZXIgY29uZmlndXJhdGlvbiB0byBhCi0gICAgY29tbW9uIGJvYXJkX2FkZF9yYW1faW5mbygpIGZ1bmN0aW9uIHdoaWNoIHByaW50cyBvdXQgRERSIHR5cGUsIHdpZHRoLAotICAgIENBUyBsYXRlbmN5LCBhbmQgRUNDIG1vZGUuCUl0IGFsc28gbWFrZXMgdGhlIEREUiBpbnRlcmxlYXZpbmcKLSAgICBpbmZvcm1hdGlvbiBwcmludCBvdXQgaW4gYSBtb3JlIHNhbmUgbWFubmVyOgotCi0gICAgLi4uCi0gICAgSTJDOiAgIHJlYWR5Ci0gICAgRFJBTTogICAyIEdCIChERFIyLCA2NC1iaXQsIENMPTQsIEVDQyBvbikKLQkgICBERFIgQ29udHJvbGxlciBJbnRlcmxlYXZpbmcgTW9kZTogYmFuawotICAgIEZMQVNIOiAyNTYgTUIKLSAgICAuLi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDEyYTQ0MGFlNmQwOTQ0NTE0MGYxYTBjMjAyM2RiYTc2YTlmMWE2MTcKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTcgMTA6MTQ6NDcgMjAwOSAtMDUwMAotCi0gICAgdHFtODV4eDogUmVtb3ZlIGJvYXJkX2FkZF9yYW1faW5mbygpCi0KLSAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgb25lIGNvbW1vbiA4eHh4IGJvYXJkX2FkZF9yYW1faW5mbygpCi0gICAgZnVuY3Rpb24gZm9yIGFsbCA4eHh4IGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZWQyYzk0ODhiYmUzODliN2IyNWNhZGExZTQyYmRhZTVkMDk3NjMyNwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEp1bCAxNyAxMDoxNDo0NiAyMDA5IC0wNTAwCi0KLSAgICB4ZXM6IFJlbW92ZSA4eHh4IGJvYXJkX2FkZF9yYW1faW5mbygpIGZ1bmN0aW9uCi0KLSAgICBUaGlzIGlzIGluIHByZXBhcmF0aW9uIGZvciBhZGRpbmcgb25lIGNvbW1vbiA4eHh4IGJvYXJkX2FkZF9yYW1faW5mbygpCi0gICAgZnVjdGlvbiBmb3IgYWxsIDh4eHggYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlN2VlMjNlYzE3ODhkOGNmMjY5YTRjZjZiOWNkMzcyMmNiYzdkNTkyCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSnVsIDE3IDEwOjE0OjQ1IDIwMDkgLTA1MDAKLQotICAgIDg2eHg6IFJlbmFtZSBjY3NyX2RkcidzIHNkcmFtX21vZGVfMSwgc2RyYW1fY2ZnXzEgZmllbGRzCi0KLSAgICBSZW5hbWUgc2RyYW1fbW9kZV8xIHRvIHNkcmFtX21vZGUgYW5kIHNkcmFtX2NmZ18xIHRvIHNkcmFtX2NmZyB0byBtYXRjaAotICAgIHRoZSA4Nnh4IHVzZXIncyBtYW51YWwgYW5kIG90aGVyIEZyZWVzY2FsZSBhcmNoaXRlY3R1cmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmNjE1NWM2ZmJiMWQ4NWY1MTdiN2MxNjA1NzBmMDk5NWVmMTRjNDNmCi1BdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgOSAxMDowNTo0OCAyMDA5ICswODAwCi0KLSAgICA4NXh4OiBBZGQgcGNpL3BjaWUgRTEwMDAgZXRoZXJuZXQgc3VwcG9ydCBmb3IgTVBDODU0NERTIGFuZCBNUEM4NTM2IGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2YmI1YjQxMjI5MTE3N2U2ZWRkNDJmOWE4MGU1YzVhZmU1N2E2YTBmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgSnVsIDE0IDIyOjQyOjAxIDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IFJlcG9ydCB3aGljaCAiYmFuayIgb2YgTk9SIGZsYXNoIHdlIGFyZSBib290aW5nIGZyb20gb24gRlNMIGJvYXJkcwotCi0gICAgVGhlIHAyMDIwRFMsIE1QQzg1MzZEUywgTVBDODU3MkRTLCBNUEM4NTQ0RFMgYm9hcmRzIGFyZSBjYXBhYmxlIG9mCi0gICAgc3dpenpsaW5nIHRoZSB1cHBlciBhZGRyZXNzIGJpdHMgb2YgdGhlIE5PUiBmbGFzaCB3ZSBib290IG91dCBvZiB3aGljaAotICAgIGNyZWF0ZXMgdGhlIGNvbmNlcHQgb2YgInZpcnR1YWwiIGJhbmtzLiAgVGhpcyBpcyB1c2VmdWwgaW4gdGhhdCB3ZSBjYW4KLSAgICBmbGFzaCBhIHRlc3Qgb2YgaW1hZ2Ugb2YgdS1ib290IGFuZCByZXNldCB0byBvbmUgb2YgdGhlIHZpcnR1YWwgYmFua3MKLSAgICB3aGlsZSBzdGlsbCBtYWludGFpbmluZyBhIHdvcmtpbmcgaW1hZ2UgaW4gImJhbmsgMCIuCi0KLSAgICBUaGUgUElYSVMgRlBHQSBleHBvc2VzIHJlZ2lzdGVycyBvbiBMQkMgd2hpY2ggd2UgY2FuIHVzZSB0byBkZXRlcm1pbmUKLSAgICB3aGljaCAiYmFuayIgd2UgYXJlIGJvb3Rpbmcgb3V0IG9mIChhcyB3ZWxsIGFzIHNldHRpbmcgd2hpY2ggYmFuayB0bwotICAgIGJvb3Qgb3V0IG9mKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5YWY5YzZiZGMxNmRhNTM3NzJjNTZiMWE3OWMyYzkxNzAxZmU5NGU2Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSnVsIDE1IDEzOjQ1OjAwIDIwMDkgLTA1MDAKLQotICAgIDg2eHg6IFJlcG9ydCB3aGljaCAiYmFuayIgb2YgTk9SIGZsYXNoIHdlIGFyZSBib290aW5nIGZyb20gb24gTVBDODY0MUhQQ04KLQotICAgIFRoZSBNUEM4NjQxSFBDTiBib2FyZCBpcyBjYXBhYmxlIG9mIHN3aXp6bGluZyB0aGUgdXBwZXIgYWRkcmVzcyBiaXQgb2YKLSAgICB0aGUgTk9SIGZsYXNoIHdlIGJvb3Qgb3V0IG9mIHdoaWNoIGNyZWF0ZXMgdGhlIGNvbmNlcHQgb2YgInZpcnR1YWwiCi0gICAgYmFua3MuICBUaGlzIGlzIHVzZWZ1bCBpbiB0aGF0IHdlIGNhbiBmbGFzaCBhIHRlc3Qgb2YgaW1hZ2Ugb2YgdS1ib290Ci0gICAgYW5kIHJlc2V0IHRvIG9uZSBvZiB0aGUgdmlydHVhbCBiYW5rcyB3aGlsZSBzdGlsbCBtYWludGFpbmluZyBhCi0gICAgd29ya2luZyBpbWFnZSBpbiAiYmFuayAwIi4KLQotICAgIFRoZSBQSVhJUyBGUEdBIGV4cG9zZXMgcmVnaXN0ZXJzIG9uIExCQyB3aGljaCB3ZSBjYW4gdXNlIHRvIGRldGVybWluZQotICAgIHdoaWNoICJiYW5rIiB3ZSBhcmUgYm9vdGluZyBvdXQgb2YgKGFzIHdlbGwgYXMgc2V0dGluZyB3aGljaCBiYW5rIHRvCi0gICAgYm9vdCBvdXQgb2YpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGNhZjcyZmYzMjk3NTliNGRhNzEzNTJhYjA5ODUzN2M3Njk4YzBlOWYKLUF1dGhvcjogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgotRGF0ZToJVHVlIEp1bCAyMSAxMDo0NTo0OSAyMDA5ICswMjAwCi0KLSAgICBSZWZyZXNoIExaTUEtbGliIHRvIHY0LjY1Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+Ci0KLWNvbW1pdCA3MGViZjMxNjMzZjM3MmEyNDUwNWU0Nzg0NmIyNjI4ZTg0MzVlYTM3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDE3IDIzOjM1OjI5IDIwMDkgKzAyMDAKLQotICAgIEFUOTE6IGZhY3RvciBvdXQgUk9VTkQoKSBtYWNybwotCi0gICAgQSBsYXJnZSBudW1iZXIgb2YgYm9hcmRzIChhbGwgQVQ5MSBiYXNlZCkgZHVwbGljYXRlZCB0aGUgUk9VTkQoKQotICAgIG1hY3JvIGluIHRoZWlyIGJvYXJkIHNwZWNpZmljIGNvbmZpZyBmaWxlcy4gQWRkIHRoZSBkZWZpbml0aW9uIHRvCi0gICAgaW5jbHVkZS9jb21tb24uaCBhbmQgY2xlYW4gdXAgdGhlIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA4OTE4OGE2MjMzM2MwODQxYTcxNjY3ODNkMmViZGQzOWQ3MDQ0ZWIyCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSnVsIDE1IDA4OjU0OjUwIDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IEJ1bXAgdXAgdGhlIEJPT1RNQVAgdG8gMTZNIG9uIEZTTCA4NXh4IGJvYXJkcwotCi0gICAgV2UgaGF2ZSBhbHdheXMgbWFwcGVkIGF0IGxlYXN0IDE2TSBpbiB0aGUga2VybmVsIGFuZCB3ZSBoYXZlIHNlZW4gY2FzZXMKLSAgICB3aXRoIG5ldyBrZXJuZWwgZmVhdHVyZXMgdGhhdCBhIGtlcm5lbCBpbWFnZSBuZWVkcyBtb3JlIHRoYW4gOE0gb2YKLSAgICBtZW1vcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZDRhYmM3NTdjMjZjNTMxMjkzZjViYmM0MjYyYWRlNDRhMzE3ZWVjOQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIEp1bCAyMCAxOTowMjoyMSAyMDA5IC0wNTAwCi0KLSAgICBNb3ZlIGFwaV9leGFtcGxlcyB0byBleGFtcGxlcy9hcGkKLQotICAgIEFsc28gYWRkIGEgcnVsZSB0byByZW1vdmUgZGVtby5iaW4gd2hpY2ggd2FzIHByZXZpb3VzbHkgbGVmdG92ZXIKLSAgICBhZnRlciBhICJtYWtlIGNsZWFuIgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGFmMWQ3ZDk4NGEyM2EwZmFhMWY0MzZlYmZlYjU1Yzg3NmIxYTk5ZTEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVsIDIxIDA2OjM3OjI4IDIwMDkgKzAyMDAKLQotICAgIDgzeHgsIGttZXRlcjogZml4IGNvbXBpbGUgZXJyb3IKLQotICAgIENPTkZJR19TWVNfTUFMTE9DX0xFTiBpcyBkZWZpbmVkIGluIHRoZSBib2FyZCBjb25maWcsIGFuZAotICAgIHRoZSBrZXltaWxlLWNvbW1vbi5oLCB3aGljaCBjb2xsZWN0cyBjb21tb24gb3B0aW9ucyB1c2VkCi0gICAgYnkgYWxsIGtleW1pbGUtYm9hcmRzLiBUaGlzIHJlc3VsdHMgaW4gYSBjb21waWxlIGVycm9yCi0gICAgd2hlbiBjb21waWxpbmcgdGhlIGttZXRlcjEgYm9hcmQuIFNvIHJlbW92ZSB0aGlzIGRlZmluZQotICAgIGluIHRoZSBib2FyZCBjb25maWcgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMzlkZjAwZDlhZWNmYjQ2NWI5ZWVjOWFmNTkzZjliNzYzZmI1MjA5YQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgOSAxMjowNDoyNiAyMDA5ICswMjAwCi0KLSAgICBpMmMsIG1wYzgzeHg6IGFkZCBDT05GSUdfU1lTX0kyQ19JTklUX0JPQVJEIGZvciBmc2xfaTJjCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHBvc3NpYmlsaXR5IHRvIGNhbGwgYSBib2FyZCBzcGVjaWZpYwotICAgIGkyYyBidXMgcmVzZXQgcm91dGluZSBmb3IgdGhlIGZzbF9pMmMgYnVzIGRyaXZlciwgYW5kIGFkZHMKLSAgICB0aGlzIG9wdGlvbiBmb3IgdGhlIGtleW1pbGUga21ldGVyMSBib2FyZC4KLQotICAgIFRoZSBkZWJsb2NrIHNlcXVlbmNlIGZvciB0aGlzIGJvYXJkIGlzIGltcGxlbWVudGVkIGFuZAotICAgIHRlc3RlZCBpbiB0aGUgZm9sbG93aW5nIHdheToKLQotICAgIENSID0gMHgyMCAocmVsZWFzZSBTREEgYW5kIFNDTCBwaW4pCi0gICAgQ1IgPSAweGEwIChzdGFydCByZWFkKQotICAgIGR1bW15IHJlYWQKLSAgICBkdW1teSByZWFkCi0gICAgaWYgMi4gZHVtbXkgcmVhZCA9PSAweDAwCi0JMy4gZHVtbXkgcmVhZAotCi0gICAgQ1IgPSAweDgwIChTREEgYW5kIFNDTCBub3cgMSBTUiA9IDB4ODYpCi0gICAgQ1IgPSAweDAwIChNb2R1bCByZXNldCBTUj0weDgxKQotICAgIENSID0gMHg4MCAoU0RBIGFuZCBTQ0wgPSAxLCBTUiA9IDB4ODEpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDFiYzE1Mzg2MTNkNjZjZWYzY2JjZTY4MGZjOGQ3YzM1NjFhMGZiZDAKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBKdWwgMTAgMTE6MDM6MTkgMjAwOSAtMDUwMAotCi0gICAgTW92ZSBleGFtcGxlcy8gdG8gZXhhbXBsZXMvc3RhbmRhbG9uZQotCi0gICAgVGhlIGN1cnJlbnQgZmlsZXMgaW4gZXhhbXBsZXMgYXJlIGFsbCBzdGFuZGFsb25lIGFwcGxpY2F0aW9uIGV4YW1wbGVzLAotICAgIHNvIHB1dCB0aGVtIGluIHRoZWlyIG93biBzdWJkaXJlY3RvcnkgZm9yIG9yZ2FuaXphdGlvbmFsIHB1cnBvc2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgYjIyMGM2NGQ4NmY3YzcwNWExODMzMDJjM2I1MDA3NmQ3ZTVkODc2YwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEp1bCAxMCAxMTowMzoxNSAyMDA5IC0wNTAwCi0KLSAgICBNb3ZlIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBjb25maWcubWsgZmlsZXMgaW50byBzdWJkaXJzCi0KLSAgICBUaGlzIGNsZWFucyB1cCBVLUJvb3QncyB0b3BsZXZlbCBkaXJlY3RvcnkgYSBiaXQgYW5kIG1ha2VzIHRoZQotICAgIGFyY2hpdGVjdHVyZSAnY29uZmlnLm1rJyBmaWxlIG5hbWluZyBhbmQgbG9jYXRpb24gc2ltaWxhciB0byBib2FyZAotICAgIGFuZCBjcHUgJ2NvbmZpZy5taycgZmlsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAwODJiZWNkMGQ1NDYzOTk2MzdmYTk0ZmRmOWYxNzMwYTBmN2JmMzQ4Ci1BdXRob3I6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgotRGF0ZToJRnJpIEp1bCAxMCAxODoyNTozNCAyMDA5ICswODAwCi0KLSAgICBBZGQgInRhZ3MiIHRvIC5naXRpZ25vcmUgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkYzcxYjI0OGVmMGQ1ZTEyYjE5ZjMzYzZlZmI4NzNlMzFkZjkxZmE5Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IEp1bCA5IDEyOjA0OjE4IDIwMDkgKzAyMDAKLQotICAgIHBvd2VycGM6IHVwZGF0ZXMgZm9yIHRoZSBrZXltaWxlIGJvYXJkcwotCi0gICAgLSBDT05GSUdfU1lTX01BWF9JMkNfQlVTIGNoYW5nZWQgdG8gMQotICAgICAgV2UgdXNlIG9ubHkgb25lIEkyQyBoYXJkd2FyZWNvbnRyb2xsZXIgb24gdGhpcyBib2FyZHMsIHNvCi0gICAgICBjaGFuZ2UgdGhlIENPTkZJR19TWVNfTUFYX0kyQ19CVVMgdG8gMS4KLSAgICAtIGNvbW1vbjogZG9udCBwcmludCBlcnJvcm1zZyBpZiBzZWNvbmQgSVZNIEJsb2NrIGxhY2tzLgotICAgIC0gODJ4eCwgbWdjb2dlOiBmaXggZG91YmxlIG10ZHBhcnQgZW50cnkgaW4gZW52aXJvbm1lbnQKLSAgICAtIDgyeHgsIG1nY29nZTogYWN0aXZhdGUgb24gc2Vjb25kIEZsYXNoIHRoZSBzZWNvbmQgYmFuay4KLSAgICAtIGNvbW1vbjogQ09ORklHX0VOVl9TSVpFIDB4NDAwMCBmb3IgYWxsIGtleW1pbGUgYm9hcmRzCi0gICAgLSBjb21tb246IENoYW5nZSBtYWxsb2Mgc2l6ZSB0byAxTUJ5dGUgZm9yIGFsbCBLZXltaWxlIGJvYXJkcwotCVdlIG5lZWQgYSBiaWdnZXIgbWFsbG9jIGFyZWEgZm9yIHRoZSBlbnZpcm9ubWVudCBzdXBwb3J0ICgxMjhrKQotCW9uIHNvbWUgS2V5bWlsZSBib2FyZHMgKGttZXRlcjEpIGFuZCB0aGUgdXBjb21pbmcgVUJJIHN1cHBvcnQuCi0JQ2hhbmdlIGl0IHRvIDFNQiBmb3IgYWxsIEtleW1pbGUgYm9hcmRzIHRvIGJlIG9uIHRoZSBzYXZlIHNpZGUuCi0JQWxzbyBkZWZpbmUgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiB3aGljaCBpcyBuZWVkZWQgZm9yCi0JVUJJL1VCSUZTIHN1cHBvcnQuCi0gICAgLSBBZGQgVUJJIHN1cHBvcnQgdG8gYWxsIEtleW1pbGUgYm9hcmRzCi0gICAgLSBjaGFuZ2UgbWFubmVyIG9mIHdyaXRpbmcgIi9sb2NhbGJ1cy9yYW5nZXMiIG5vZGUKLQlpbnN0ZWFkIG9mIHdyaXR0aW5nIHRoZSBjb21wbGV0ZSAiL2xvY2FsYnVzL3JhbmdlcyIgbm9kZQotCWJlZm9yZSBib290aW5nIExpbnV4LCBvbmx5IHVwZGF0ZSB0aGUgcmFuZ2VzIGVudHJpZXMKLQl3aGljaCBnZXRzIGR5bmFtaWNhbCBkZXRlY3RlZCAoc2l6ZSBvZiBmbGFzaGVzKS4KLQlUaGlzIGlzIG5lZWRlZCwgYmVjYXVzZSBrZXltaWxlIGFkZHMgaW4gdGhlIERUUwotCSIvbG9jYWxidXMvcmFuZ2VzIiBub2RlIGVudHJpZXMsIHdoaWNoIHUtYm9vdCBtdXN0Ci0Jbm90IG92ZXJ3cml0ZS9kZWxldGUuCi0gICAgLSBrbWV0ZXIsIG1nY29nZTogZGVmaW5lIDIgc2VwZXJhdGUgcmVnaW9ucyBuZWVkZWQgZm9yIHRoZSBJbnRlbCBQMzAgY2hpcHMKLQlUaGUgSW50ZWwgUDMwIGNoaXAgaGFzIDIgbm9uLWlkZW50aWNhbCBjaGlwcyBvbgotCW9uZSBkaWUsIHNvIHdlIG5lZWQgdG8gZGVmaW5lIDIgc2VwZXJhdGUgcmVnaW9ucwotCXRoYXQgYXJlIHNjYW5uZWQgYnkgcGh5c21hcF9vZiBpbmRlcGVuZGFudGx5LgotICAgIC0ga21ldGVyMTogQWRkIE1URCBjb25jYXQgc3VwcG9ydCB0byBLZXltaWxlIGJvYXJkcwotICAgIC0gODJ4eCwgbWdjb2dlOiBhZGQgInVubG9jaz15ZXMiIHRvIGRlZmF1bHQgZW52aXJvbm1lbnQKLSAgICAtIGFkZGVkIENPTkZJR19NVERfREVWSUNFIHRvIGdldCBpbiBzeW5jIHdpdGggbWFpbmxpbmUgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjE0ZDgxMDUwYTllMGZhNTdhZWRiMWJjNzQ2YzYwYTA3YzFhZDY3ZgotQXV0aG9yOiBnYWxhayA8Z2FsYWtAZHVja3kuYW0uZnJlZXNjYWxlLm5ldD4KLURhdGU6CVR1ZSBKdWwgNyAxNTo1MzoyMSAyMDA5IC0wNTAwCi0KLSAgICBmc2xfc2F0YTogRml4IGNvbXBpbGVyIHdhcm5pbmdzIHNob3duIGJ5IGdjYy00LjQKLQotICAgIFVwZGF0ZSBmc2xfc2F0YSB0byB1c2UgY29tbW9uIHN0cnVjdHVyZXMgaW5zdGVhZCBvZiBjYXN0aW5nCi0gICAgYmFjayBhbmQgZm9ydGggYmV0d2VlbiB0aGUgZnNsIHNwZWNpZmljIG9uZXMgYW5kIHRoZSBjb21tb24gb25lcwotICAgICh3aGljaCBhcmUgaWRlbnRpY2FsKS4KLQotICAgIGZzbF9zYXRhLmM6IEluIGZ1bmN0aW9uICdzY2FuX3NhdGEnOgotICAgIGZzbF9zYXRhLmM6NTUwOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgJ2NmaXMnIGRvZXMgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgZnNsX3NhdGEuYzo1NDk6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgcG9pbnRlciAnY2ZpcycgZG9lcyBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBmc2xfc2F0YS5jOjU0ODogd2FybmluZzogZGVyZWZlcmVuY2luZyBwb2ludGVyICdjZmlzJyBkb2VzIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIGZzbF9zYXRhLmM6NTQ1OiBub3RlOiBpbml0aWFsaXplZCBmcm9tIGhlcmUKLSAgICBmc2xfc2F0YS5jOjU5Mjogd2FybmluZzogZGVyZWZlcmVuY2luZyBwb2ludGVyICdjZmlzJyBkb2VzIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIGZzbF9zYXRhLmM6NTkwOiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgJ2NmaXMnIGRvZXMgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgZnNsX3NhdGEuYzo1ODg6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgcG9pbnRlciAnY2ZpcycgZG9lcyBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBmc2xfc2F0YS5jOjU4Njogd2FybmluZzogZGVyZWZlcmVuY2luZyBwb2ludGVyICdjZmlzJyBkb2VzIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIGZzbF9zYXRhLmM6NTc5OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHBvaW50ZXIgJ2NmaXMnIGRvZXMgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgLi4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjA5MzhlNTRhMjA3NDcyYTA5MGYwNGYyMGYzMGM5ZTMyYjE0MTM3ZQotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglUdWUgSnVsIDcgMTU6NTg6NTEgMjAwOSArMDIwMAotCi0gICAgQWRkIHVuYWxpZ25lZC5oIGZvciBhcm0KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB1bmFsaWduZWQuaCBmb3IgQVJNIChuZWVkZWQgdG8gYnVpbGQgd2l0aCBMWk8KLSAgICBjb21wcmVzc2lvbikuIFRoZSBmaWxlIGlzIHRha2VuIGZyb20gdGhlIGxpbnV4IGtlcm5lbCwgYnV0IGluY2x1ZGVzCi0gICAgdS1ib290IGhlYWRlcnMgaW5zdGVhZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDMzZWE4YWJkNmFkZmFlMzEzOGRkNGNlMjM4MjM3YTAzN2UxZTUzNwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIEp1bCAxOSAxOToxNzo0MiAyMDA5IC0wNTAwCi0KLSAgICBSZW1vdmUgbGFzdCByZW1hbmFudHMgb2YgdW51c2VkIENPTkZJR19JMkNfQ01EX1RSRUUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBmNmNhM2I3MDk0OTc5MGFiNTQzOGQ2YzlhNTkyMjE2Y2MzNjE2MTEwCi1BdXRob3I6IEFuZHJ6ZWogV29sc2tpIDxhd29sc2tpQHBvY3p0YS5mbT4KLURhdGU6CUZyaSBKdWwgMTcgMjI6MjY6NTQgMjAwOSArMDIwMAotCi0gICAgdWJpOiBoZWxwIG1lc3NhZ2UgY29ycmVjdGlvbgotCi0gICAgRml4IGluY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBzaXplIHVuaXRzIGFuZCBjb3JyZWN0IHR5cG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIFdvbHNraSA8YXdvbHNraUBwb2N6dGEuZm0+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjJmMjAxN2MzMWJjNjgyZTliMTU2MTJhNWMyNTgwYWI1Yjg0NDE4ZQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU3VuIEp1bCAxOSAxOToxNzo0MiAyMDA5IC0wNTAwCi0KLSAgICBSZW1vdmUgbGFzdCByZW1hbmFudHMgb2YgdW51c2VkIENPTkZJR19JMkNfQ01EX1RSRUUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBmOTlhMjkyYWE2MDgzMDU3ZjVkYjgyODNkMmNlNGEyYmUyMmI4ODU2Ci1BdXRob3I6IEFuZHJ6ZWogV29sc2tpIDxhd29sc2tpQHBvY3p0YS5mbT4KLURhdGU6CUZyaSBKdWwgMTcgMjI6MjY6NTQgMjAwOSArMDIwMAotCi0gICAgdWJpOiBoZWxwIG1lc3NhZ2UgY29ycmVjdGlvbgotCi0gICAgRml4IGluY29ycmVjdCBpbmZvcm1hdGlvbiBhYm91dCBzaXplIHVuaXRzIGFuZCBjb3JyZWN0IHR5cG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyemVqIFdvbHNraSA8YXdvbHNraUBwb2N6dGEuZm0+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjg2Yjg1ZTI2MTFkNTdkODM0Nzk1YTkyNDUzNDMxYTFhMzQwYzNjOQotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6CU1vbiBKdW4gMjkgMTc6NTM6MTYgMjAwOSArMDQwMAotCi0gICAgbW1jOiBzZXQgYnVzIHdpZHRoIHRvIDEgYW5kIGNsb2NrIHRvIG1pbmltdW0gZWFybHkgZHVyaW5nIGluaXRpYWxpemF0aW9uCi0KLSAgICBXZSBuZWVkIHRvIHN3aXRjaCBiYWNrIHRvIDEtYml0IGJlZm9yZSBpbml0aWFsaXphdGlvbiBvciBTRCAyLjAgY2FyZHMKLSAgICB3aWxsIGZhaWwgdG8gc2VuZCBTQ1IgaWYgd2UndmUgc3dpdGNoZWQgdG8gNC1iaXQgYWxyZWFkeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotCi1jb21taXQgY2ZmODBmMmNkMTJiZjk3Njc1MDliNTMzNGVjZmM5MGNkN2RlNTUwMgotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KLURhdGU6CVNhdCBKdW4gMjAgMTk6MTQ6MzMgMjAwOSArMDkwMAotCi0gICAgY29uZmlnLm1rOiBSZW1vdmUgdW51c2VkIEhQQVRICi0KLSAgICBUaGlzIHZhcmlhYmxlIGlzIG5vdCB1bnVzZWQgYW55d2hlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KLQotY29tbWl0IGE3ODFkZTEyNzAwZTJjYjNkMzAxMWZjODNiNDdmN2RkOGNjM2MxNTQKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgSnVuIDE3IDE2OjIwOjE0IDIwMDkgKzAyMDAKLQotICAgIGRpZ3N5IG10YzogRW5hYmxlIGNvbW1hbmQgbGluZSBoaXN0b3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAzNzU2NjA5MDc2NmQ2MWJlZWY3MGM2Mjk4NmI5MDc0OTkyMDI1NWQ4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBKdWwgMiAxOToyMzoyNSAyMDA5IC0wNDAwCi0KLSAgICBjb21waWxlci5oOiB1bmlmeSBzeXN0ZW0gaWZkZWYgY3J1ZnQgaGVyZQotCi0gICAgU2hvdmUgYSBsb3Qgb2YgdGhlIEhPU1RDQyBhbmQgcmVsYXRlZCAjaWZkZWYgY2hlY2tpbmcgY3JhcCBpbnRvIHRoZSBuZXcKLSAgICBjb21waWxlci5oIGhlYWRlciBzbyB0aGF0IHdlIGNhbiBrZWVwIGFsbCBvdGhlciBoZWFkZXJzIG5pY2UgYW5kIGNsZWFuLgotCi0gICAgQWxzbyBpbnRyb2R1Y2UgY3VzdG9tIHVzd2FwIGZ1bmN0aW9ucyBzbyB3ZSBkb24ndCBoYXZlIHRvIHJlbHkgb24gdGhlIG5vbgotICAgIHN0YW5kYXJkIGltcGxlbWVudGF0aW9ucyB0aGF0IGEgaG9zdCBtYXkgKG9yIG1heSBub3QgaW4gdGhlIGNhc2Ugb2YgT1MgWCkKLSAgICBwcm92aWRlLiAgVGhpcyBhbGxvd3MgbWtpbWFnZSB0byBmaW5hbGx5IGJ1aWxkIGNsZWFubHkgb24gYW4gT1MgWCBzeXN0ZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyYTJlZDg0NWMwODVlYjA5M2I2OWZhNjM4MmZjZjc1MzRiYjFmNGIwCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVuIDE1IDExOjUwOjQwIDIwMDkgLTA1MDAKLQotICAgIGNvbW1vbjogZml4ICdkdW1teScgaXMgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gd2FybmluZwotCi0gICAgZml4IHRoaXMgZ2NjIDQuNCB3YXJuaW5nOgotCi0gICAgeHl6TW9kZW0uYzogSW4gZnVuY3Rpb24gJ3h5ek1vZGVtX3N0cmVhbV9vcGVuJzoKLSAgICB4eXpNb2RlbS5jOjU2NDogd2FybmluZzogJ2R1bW15JyBpcyB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFlYTZiY2Q4NTkwYjNmZjlmZTJiZmJiMGViMjlhM2IwZWRhYTk0NjAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEp1biAxNCAyMzozMzoxNCAyMDA5IC0wNDAwCi0KLSAgICBwdXNoIENST1NTX0NPTVBJTEUgb3V0IHRvICQoQVJDSClfY29uZmlnLm1rCi0KLSAgICBFYWNoIGFyY2ggc2hvdWxkIGhhbmRsZSBzZXR0aW5nIGEgcHJvcGVyIGRlZmF1bHQgQ1JPU1NfQ09NUElMRSB2YWx1ZSBpbgotICAgIHRoZWlyIG93biBjb25maWcubWsgZmlsZSByYXRoZXIgdGhhbiBoYXZpbmcgdG8gbWFpbnRhaW4gYSBsYXJnZSB1Z2x5IGxpc3QKLSAgICBpbiB0aGUgTWFrZWZpbGUuICBCeSB1c2luZyBjb25kaXRpb25hbCBhc3NpZ25tZW50LCB3ZSBkb24ndCBoYXZlIHRvIHdvcnJ5Ci0gICAgYWJvdXQgdGhlIHZhcmlhYmxlIGFscmVhZHkgYmVpbmcgc2V0IChlbnYvY21kbGluZS9ldGMuLi4pLgotCi0gICAgVGhlIGNvbW1vbiBjb25maWcubWsgZmlsZSB0YWtlcyBjYXJlIG9mIGV4cG9ydGluZyBDUk9TU19DT01QSUxFIGFscmVhZHksCi0gICAgYW5kIHdoaWxlIGEgZmV3IHZhcmlhYmxlcyAodG9vbGNoYWluIG9uZXMpIHV0aWxpemUgQ1JPU1NfQ09NUElMRSBiZWZvcmUKLSAgICBpbmNsdWRpbmcgdGhlIGFyY2ggY29uZmlnLm1rLCB0aGV5IGRvIHNvIHdpdGggZGVmZXJyZWQgYXNzaWdubWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDYwYTNmNDA0YWNiZjgyMzhhMzEzOGZlMWY4MGE2YmFjNzVkYTQ1ODIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBKdW4gMTMgMTI6NTU6MzcgMjAwOSArMDIwMAotCi0gICAgbWFsbG9jLmg6IHByb3RlY3QgaXQgYWdhaW5zdCBtdWx0aXBsZSBpbmNsdWRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzY0MGY0MTk4OGE0NTZhMGIxZjA1MjYzZDJlMmRjNWNkN2Q5Mzk4NAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1bCAxOSAxOTozNzoyNCAyMDA5ICswMjAwCi0KLSAgICBGaXggYm9hcmRzIGJyb2tlbiBhZnRlciByZW1vdmFsIG9mIGxlZ2FjeSBOQU5EIGFuZCBEb0Mgc3VwcG9ydAotCi0gICAgQ29tbWl0IDI0MTkxNjlmIHJlbW92ZWQgc3VwcG9ydCBmb3IgbGVnYWN5IE5BTkQgYW5kIGRpc2sgb24gY2hpcCBidXQKLSAgICBtaXNzZWQgdG8gdXBkYXRlIHRoZSBjb2RlIGZvciBhIGZldyBib2FyZHMuIFRoaXMgcGF0Y2ggZml4ZXMgdGhlCi0gICAgcmVzdWx0aW5nIGJ1aWxkIGlzc3Vlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxYTQ2NjRiNTNhYWYyMzY4N2I1MmQ2NGI5NGJlMDZhOWFhMjYwYjg2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDE5IDE5OjMyOjM3IDIwMDkgKzAyMDAKLQotICAgIGNtZF9mbGFzaC5jOiBmaXggZml4IGNvbXBpbGUgZXJyb3IgZm9yIGJvYXJkcyB3aXRoIERhdGFGbGFzaAotCi0gICAgQ29tbWl0IDU2NjllZDQ1ICgiY21kX2ZsYXNoLmM6IGZpeCB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUKLSAgICAnYWRkcl9maXJzdCcvJ2FkZHJfbGFzdCciKSBjaGFuZ2VkIHRoZSAjaWZkZWYgbG9naWMgYXJlb3VuZCB0aGUKLSAgICBkZWNsYXJhdGlvbiBvZiB0aGVzZSB2YXJpYWJsZXMgYW5kIG1pc3NlZCBhIGNvbWJpbmF0aW9uIG9mIHNldHRpbmdzCi0gICAgb2YgSEFTX0RBVEFGTEFTSCB3aXRoIFNZU19OT19GTEFTSDsgdGhpcyBwYXRjaCBmaXhlcyB0aGlzLgotCi0gICAgQWxzbyBzcG90dGVkIGJ5IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tPgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDM0MTI0NWEyODgzMGQzMjYxYzQxYjA5ZDk1OGVlZWE3YmI5MzU4N2EKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdWwgMTkgMTI6MDU6MTUgMjAwOSArMDIwMAotCi0gICAgcGNtMDMwOiBmaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcKLQotICAgIENvbW1pdCAwYTg3ZGQ5MCB0aGF0IHdhcyBzdXBwb3NlZCB0byBmaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcgZm9yIHRoZQotICAgIHBjbTAzMCBib2FyZCB3YXMgdW5mb3J0dW5hdGVseSBpbmNvbXBsZXRlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDhiZjI5YjU5ZmNlOGNjMzgxMTE0OTI5MDgyMjAyZDgwMGUzMTNhZDUKLUF1dGhvcjogU2ltb24gS2Fnc3Ryb20gPHNpbW9uLmthZ3N0cm9tQG5ldGluc2lnaHQubmV0PgotRGF0ZToJVHVlIEp1bCA3IDEzOjU4OjUxIDIwMDkgKzAyMDAKLQotICAgIEFkZCB1bmFsaWduZWQuaCBmb3IgYXJtCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdW5hbGlnbmVkLmggZm9yIEFSTSAobmVlZGVkIHRvIGJ1aWxkIHdpdGggTFpPCi0gICAgY29tcHJlc3Npb24pLiBUaGUgZmlsZSBpcyB0YWtlbiBmcm9tIHRoZSBsaW51eCBrZXJuZWwsIGJ1dCBpbmNsdWRlcwotICAgIHUtYm9vdCBoZWFkZXJzIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGU0MDVhZmFiMWRkYTY2YzlkZjM3MzNmNmI3NzlkNzJmYzM2YTAxNjIKLUF1dGhvcjogS2F6dWFraSBJY2hpbm9oZSA8a2F6dWljaGlAZnNpLmNvLmpwPgotRGF0ZToJRnJpIEp1biAxMiAxODoxMDoxMiAyMDA5ICswOTAwCi0KLSAgICBDYW55b25sYW5kcyBTQVRBIGhhcmRkaXNrIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgU0FUQSBoYXJkZGlzayBkcml2ZXIgZm9yIHRoZSBjYW55b25sYW5kcy4KLSAgICBUaGlzIHBhdGNoIGlzIGtlcm5lbCBkcml2ZXIncyBwb3J0aW5nLgotICAgIFRoaXMgcGF0Y2ggY29ycmVzcG9uZGVkIHRvIG5vdCBjbWRfc2NzaSBidXQgY21kX3NhdGEuCi0gICAgVGhpcyBwYXRjaCBkaXZpZGVkIGFuIHVudXNlZCBtZW1iZXIgd2l0aCBpZm5kZWYgX19VX0JPT1RfXyBpbiB0aGUgc3RydWN0dXJlLgotCi0gICAgW2Vudmlyb25tZW50IHZhcmlhYmxlLCBib290IHNjcmlwdF0KLSAgICBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3NkYTcgcncKLSAgICBzZXRlbnYgYm9vdGFyZ3MgJHtib290YXJnc30gY29uc29sZT10dHlTMCwxMTUyMDAKLSAgICBleHQybG9hZCBzYXRhIDA6MiAweDQwMDAwMCAvY2FueW9ubGFuZHMvdUltYWdlCi0gICAgZXh0MmxvYWQgc2F0YSAwOjIgMHg4MDAwMDAgL2NhbnlvbmxhbmRzL2NhbnlvbmxhbmRzLmR0YgotICAgIGZkdCBhZGRyIDB4ODAwMDAwIDB4NDAwMAotICAgIGJvb3RtIDB4NDAwMDAwIC0gMHg4MDAwMDAKLQotICAgIElmIHlvdSBkcml2ZSBTQVRBLTIgZGlzayBvbiBDYW55b25sYW5kcywgeW91IG11c3QgY2hhbmdlIHBhcnRzIGZyb20KLSAgICBQSTJQQ0lFMjEyIHRvIFBJMlBDSUUyMjEyIG9uIFUyNS4gV2UgY29uZmlybWVkIHRvIGJvb3QgYnkgdXNpbmcKLSAgICBmb2xsb3dpbmcgZGlza3M6Ci0KLSAgICAxLlZlbmRvcjogRnVqaXRzdQkgVHlwZTogTUhXMjA0MEJTCi0gICAgMi5WZW5kb3I6IEZ1aml0c3UJIFR5cGU6IE1IVzIwNjBCSwotICAgIDMuVmVuZG9yOiBIQUdJV0FSQSBTWVMtQ09NOkhGRDI1Uy0wMzJHVAotICAgIDQuVmVuZG9yOiBXZXN0ZXJuRGlnaXRhbCBUeXBlOiBXRDMyMDBCSktUIChDT05GSUdfTEJBNDggcmVxdWlyZWQpCi0gICAgNS5WZW5kb3I6IFdlc3Rlcm5EaWdpdGFsIFR5cGU6IFdEMzIwMEJFVlQgKENPTkZJR19MQkE0OCByZXF1aXJlZCkKLSAgICA2LlZlbmRvcjogSGl0YWNoaQkgVHlwZTogSFRTNTQzMjMyTDlBMzAwIChDT05GSUdfTEJBNDggcmVxdWlyZWQpCi0gICAgNy5WZW5kb3I6IFNlYWdhdGUJIFR5cGU6IFNUMzEwMDAzMzNBUyAoQ09ORklHX0xCQTQ4IHJlcXVpcmVkKQotICAgIDguVmVuZG9yOiBUcmFuc2NlbmQJIFR5cGU6IFRTMzJHU1NEMjVTLU0KLSAgICA5LlZlbmRvcjogTVRST04JCSBUeXBlOiBNU0QtU0FUQTE1MjUtMDE2Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLYXp1YWtpIEljaGlub2hlIDxrYXp1aWNoaSBhdCBmc2kuY28uanA+Ci0KLWNvbW1pdCA1MmEwZTJkZWU5MGMxN2UzOTYzNGRlODE0YjE2Yjk2MDYxY2ZiNDcyCi1BdXRob3I6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVdlZCBKdW4gMTAgMTk6MDk6NDAgMjAwOSArMDIwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBUdW5kcmEgVFNJMTQ4IFZNRS1icmlkZ2UKLQotICAgIEZyb206IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgVHVuZHJhIFRTSTE0OCBWTUUtYnJpZGdlLiBJdCdzIHVzZWQgb24KLSAgICB0aGUgdXBjb21pbmcgZXNkIFZNRTgzNDkgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGQxZmVhMmM0MDQxZTY2NWM5Njk0NGUzZjZmY2ZmYmRlNTVkYjM0YgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSnVsIDE2IDE5OjA1OjMwIDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZjUzNy17bWlub3RhdXIsc3J2MX06IGRvIG5vdCBoYXJkY29kZSBDT05GSUdfRVRIQUREUgotCi0gICAgTUFDIGFkZHJlc3NlcyBzaG91bGQgbm90IGJlIGhhcmRjb2RlZCBpbiBib2FyZHMgdG8gYXZvaWQgcmFuZG9tIGxpbmsgbGV2ZWwKLSAgICBjb25mbGljdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiYWYzNTcwNTAzNTNhZWUzMGMwNGYzZjRiODY4NDI2Y2I1NDQ2OGNhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBKdWwgMTAgMTA6NDI6MDYgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTMzLXN0YW1wOiBiYWNrIGRvd24gU0NMSyBhIGJpdAotCi0gICAgV2hpbGUgdGhlIDEuMCBhbmQgMS4yIHNwaW4gb2YgdGhlIGJmNTMzLXN0YW1wIGJvYXJkcyBjYW4gaGFuZGxlIHRoZSBoaWdoZXIKLSAgICBTQ0xLIHNwZWVkcyBqdXN0IGZpbmUsIHRoZSAxLjEgc3BpbiBjYW5ub3QgZHVlIHRvIHRoZSBidWdzIGludHJvZHVjZWQgd2l0aAotICAgIHRoZSBzaG9ydGVuZWQgU0RSQU0gdHJhY2VzLiAgU28gbG93ZXIgdGhlIFNDTEsgc3BlZWQgZG93biB0byBhIHZhbHVlIHRoYXQKLSAgICBhbGwgdGhyZWUgY2FuIGhhbmRsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDQ5MGZlNzM0OTEwMjAxMmM0ODczMGY2ZmMxNGVmMzZjOGQxNTUwNjgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEp1bCA5IDIwOjU2OjU2IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBzcGxpdCBjcHUgQ09CSlMgaW50byBtdWx0aWxpbmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA5MDk4NzhmZDNmZGEwNTZkMTliOGI1MWE1Y2M1MWNiMWMwYjU2M2QxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBKdWwgOSAwMToxNTowNSAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYWRkIG9zIGxvZyBmdW5jdGlvbnMKLQotICAgIFBhcnQgb2YgdGhlIG1pbmkgQmxhY2tmaW4gQUJJIHdpdGggb3BlcmF0aW5nIHN5c3RlbXMgaXMgdGhhdCB0aGV5IGNhbiB1c2UKLSAgICAweDRmMC0weDRmOCB0byBwYXNzIGxvZyBidWZmZXJzIHRvL2Zyb20gYm9vdGxvYWRlcnMuICBTbyBhZGQgc3VwcG9ydCB0bwotICAgIFUtQm9vdCBmb3IgcmVhZGluZyB0aGUgbG9nIGJ1ZmZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDk5OTNlMTk2ZGE3MDdhMGExY2Q0NTg0ZjFmY2VmMTIzODJjMWMxNDQKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVNhdCBKdWwgMTggMTg6NDI6MTMgMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogY29udmVydCBhbGwgcmVtYWluaW5nIGJvYXJkcyBvdmVyIHRvIDgzWFhfR0VORVJJQ19QQ0kKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkMzkwNDFmY2FkYjEyMzE0MzAyMDFkMjk4YzMxZjZiZTAzZDY1NGY3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDE5IDAxOjE1OjUyIDIwMDkgKzAyMDAKLQotICAgIFBBVEkgYm9hcmQ6IGZpeCBjb21waWxlciB3YXJuaW5ncwotCi0gICAgRml4IHRoZXNlOgotICAgIHBhdGkuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgotICAgIHBhdGkuYzozNTg6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2dldGVudl9yJyBkaWZmZXIgaW4gc2lnbmVkbmVzcwotICAgIC4uL2NvbW1vbi9mbGFzaC5jOiBJbiBmdW5jdGlvbiAnd3JpdGVfd29yZCc6Ci0gICAgLi4vY29tbW9uL2ZsYXNoLmM6ODI0OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBjbWRfcGF0aS5jOiBJbiBmdW5jdGlvbiAnZG9fcGF0aSc6Ci0gICAgY21kX3BhdGkuYzoyNzk6IHdhcm5pbmc6ICd2YWx1ZScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMjhjMzQ1MDQyZWFmYzU1MGEzNGI5ZjUyNDMxYmQ0YTIyYWY2YWMyNQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1heSAxNiAxMjoxNDo1NiAyMDA5ICswMjAwCi0KLSAgICBtcGw6IHByaW50aW5nIGN1cnJlbnQgc3RkaW8gZGV2aWNlcyBjbGVhbnVwCi0KLSAgICBDdXJyZW50bHkgdGhlIG1wbCBib2FyZHMgZHVwbGljYXRlIHRoZSBjb2RlIHRvIHByaW50IHRoZSBjdXJyZW50Ci0gICAgZGV2aWNlcyBmcm9tIGNvbW1vbi9jb25zb2xlLmM7IHVzZSBzdGRpb19wcmludF9jdXJyZW50X2RldmljZXMoKQotICAgIGluc3RlYWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLSAgICBFZGl0ZWQgY29tbWl0IG1lc3NhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgN2UzYmU3Y2YzYmIzNDRmNzE3YjZlYzNkNDdhMDgxMjY5ZWE2N2VhZAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1heSAxNiAxMjoxNDo1NSAyMDA5ICswMjAwCi0KLSAgICBjb25zb2xlOiB1bmlmeSBwcmludGluZyBjdXJyZW50IGRldmljZXMKLQotICAgIENyZWF0ZSBzdGRpb19wcmludF9jdXJyZW50X2RldmljZXMoKSBmb3IgdGhpcyBwdXJwb3NlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTY2OWVkNDU1N2VkZjI3MTQyMDNhYTg2MjVjOWZjZDVhNzUzYjMzOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEp1bCAxOCAyMzoxODoxNCAyMDA5ICswMjAwCi0KLSAgICBjbWRfZmxhc2guYzogZml4IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnYWRkcl9maXJzdCcvJ2FkZHJfbGFzdCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2YmI2ZTZjNzVlYzRlZjQ5NmYwMGY3ZjUzMGU1NDlkM2UwNzNjNWRlCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMTU6MDQ6MTMgMjAwOSAtMDUwMAotCi0gICAgT01BUDMgRml4IGNvbXBpbGVyIHdhcm5pbmcgZm9yIHY3X2ZsdXNoX2RjYWNoZV9hbGwKLQotICAgIE9uIGJ1aWxkIG9mIG9tYXAzIHRhcmdldHMgaW4gTUFLRUFMTCwgdGhlICouRVJSIGZpbGVzIGhhdmUKLQotICAgIGNwdS5jOiBJbiBmdW5jdGlvbiAnY2xlYW51cF9iZWZvcmVfbGludXgnOgotICAgIGNwdS5jOjY0OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAndjdfZmx1c2hfZGNhY2hlX2FsbCcKLSAgICBjcHUuYzo2NDogd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2dldF9kZXZpY2VfdHlwZQotCi0gICAgVGhlIGZ1bmN0aW9ucyB2N19mbHVzaF9kY2FjaGVfYWxsIGFuZCBnZXRfZGV2aWNlX3R5cGUgYXJlIGRlY2xhcmVkCi0gICAgaW4gaW5jbHVkZS9hc20tYXJtL2FyY2gtb21hcDMvc3lzX3Byb3RvLmgsIHNvIHVzZSB0aGlzIGZpbGUgdG8KLSAgICBkZWNsYXJlIHRoZSBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBkYmExMDdiOTY3MzMyZmM4YTM1ODY3ZjRkNTgwMzg2MjZjOTY4ODAwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgSnVsIDE4IDIyOjA5OjM4IDIwMDkgKzAyMDAKLQotICAgIEFSTTogbWFrZSBzcGxpdF9ieV92YXJpYW50LnNoIG91dHB1dCBtb3JlIHVzZWZ1bAotCi0gICAgVGhlIGJvYXJkL2FybWx0ZC9pbnRlZ3JhdG9yL3NwbGl0X2J5X3ZhcmlhbnQuc2ggc2NyaXB0IHVzZWQgdG8gcHJpbnQKLSAgICAiQ29uZmlndXJpbmcgZm9yIGludGVncmF0b3IqcCBib2FyZC4uLiIgbm8gbWF0dGVyIHdoaWNoIGJvYXJkIG5hbWUKLSAgICB3YXMgYmVpbmcgY29tcGlsZWQuIFRoaXMgbWFkZSBpdCBkaWZmaWN1bHQgdG8gbWF0Y2ggTUFLRUFMTCBvdXRwdXQgdG8KLSAgICBib2FyZCBuYW1lcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDJlYjk5Y2E4MDI5YjQ0Yzk4OGQ1ZjYzMTJmOTdlNjhkM2I5Y2IyYmQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKdWwgMTggMjE6NTI6MjQgMjAwOSArMDIwMAotCi0gICAgTkFORDogUGFydCAyOiBGaXggd2FybmluZyBQbGVhc2UgZGVmaW5lIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYuLi4KLQotICAgIENvbW1pdCA4ZDJlZmZlYSBhZGRlZCBhIHdhcm5pbmcgZm9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgdXNlIE5BTkQKLSAgICB3aXRob3V0IGRlZmluaW5nIHRoZSAodGhlbiBuZWNlc3NhcnkpIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYgYnV0Ci0gICAgZmFpbGVkIHRvIGZpeCB0aGUgYWZmZWN0ZWQgYm9hcmRzLgotCi0gICAgVGhpcyBwYXRjaCBjb3ZlcnMgdGhlIG5vbi1QUEMgYm9hcmRzIHRoYXQgd2VyZSBtaXNzZWQgaW4gdGhlIHByZXZpb3VzCi0gICAgcGF0Y2ggKGNvbW1pdCAxNzBjMTk3MikuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNzAyNGFhMTRkZjI5ODFiNGU2NWM2MTg5OTA5ZGE5YWFkYjFjMjJkYQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEp1bCAxOCAyMDo0NjozOCAyMDA5ICswMjAwCi0KLSAgICBhdDkxY2FwOWFkazogZml4ICNpZmRlZi8jZW5kaWYgcGFpcmluZwotCi0gICAgVGhlICNpZmRlZi8jZW5kaWYgcGFpcmluZyBpbiB0aGlzIGZpbGUgd2FzIG9idmlvdXNseSBtZXNzZWQgdXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGFiYzViZmZlYTI0NDU4OWZhMTA5N2U0Yzg5OWE2M2VmYzYwOWM4ZQotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglUaHUgSnVsIDE2IDIwOjU4OjAxIDIwMDkgKzA1MzAKLQotICAgIE1hcnZlbGwgTVY4OEY2MjgxR1RXX0dFIEJvYXJkIHN1cHBvcnQKLQotICAgIFRoaXMgaXMgTWFydmVsbCdzIDg4RjYyODFfQTAgYmFzZWQgY3VzdG9tIGJvYXJkIGRldmVsb3BlZAotICAgIGZvciB3aXJlbGVzcyBhY2Nlc3MgcG9pbnQgcHJvZHVjdAotCi0gICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgZm9yLQotICAgIDEuIEJvb3QgZnJvbSBEUkFNL1NQSSBmbGFzaC9ORlMKLSAgICAyLiBGaWxlIHRyYW5zZmVyIHVzaW5nIHRmdHAgYW5kIGxvYWRiCi0gICAgMy4gU1BJIGZsYXNoIHJlYWQvd3JpdGUvZXJhc2UKLSAgICA0LiBCb290aW5nIExpbnV4IGtlcm5lbCBhbmQgUkZTIGZyb20gU1BJIGZsYXNoCi0gICAgNS4gQm9vdCBmcm9tIFVTQiBzdXBwb3J0ZWQKLQotICAgIFJldmlld2VkLWJ5OiBSb25lbiBTaGl0cml0IDxyc2hpdHJpdEBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA1NWRkNGJhNTQxM2IxNGU4ZWUyNDA1OGM4OWFjNWMwNTM3NmMzMzFjCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CVRodSBKdWwgMTYgMjA6NTg6MDAgMjAwOSArMDUzMAotCi0gICAgTWFydmVsbCBTaGVldmFwbHVnIEJvYXJkIHN1cHBvcnQKLQotICAgIFJlZmVyZW5jZToKLSAgICBodHRwOi8vcGx1Z2NvbXB1dGVyLm9yZy8KLSAgICBodHRwOi8vb3BlbnBsdWcub3JnL3BsdWd3aWtpL2luZGV4LnBocC9EYXNfVS1ib290X3BsdWdfc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgZm9yLQotICAgIDEuIEJvb3QgZnJvbSBEUkFNL05BTkQgZmxhc2gKLSAgICAyLiBGaWxlIHRyYW5zZmVyIHVzaW5nIHRmdHAKLSAgICAzLiBOQU5EIGZsYXNoIHJlYWQvd3JpdGUvZXJhc2UKLSAgICA0LiBMaW51eCBrZXJuZWwgYW5kIFJGUyBCb290IGZyb20gTkFORAotICAgIDUuIEVuYWJsZWQgVVNCIFBIWSBpbml0IGZvciBrZXJuZWwgbmVlZAotICAgIDYuIEJvb3QgZnJvbSBVU0Igc3VwcG9ydGVkCi0KLSAgICBOb3RlOiB0byBib290IEtpcmt3b29kIGtlcm5lbCB3aXRoIFVTQiBzdXBwb3J0LAotCXlvdSBzaG91bGQgYWRkICJ1c2Igc3RhcnQiIGluIHRoZSBib290IHNlcXVlbmNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCAwYTg3ZGQ5MGE3NWQwMzQzMDE0OTYyODUwMjZmYmQ4MTA2YzdjNmQ1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgSnVsIDE4IDE4OjAwOjI1IDIwMDkgKzAyMDAKLQotICAgIHBjbTAzMDogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nCi0KLSAgICBDb21taXQgYzk5Njk5NDcsIHdoaWNoIGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBwY20wMzAgYm9hcmQKLSAgICAoYWthIHBoeUNPUkUtTVBDNTIwMEItdGlueSksIGJyb2tlIG91dC1vZi10cmVlIGJ1aWxkaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDlmZjU5NjAxYzcxZTgwMGI5ZDBkZmRlMjJmYTcwZDEyYzcxYzEyYjQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKdWwgMTggMTY6MzY6MTEgMjAwOSArMDIwMAotCi0gICAgTVBDODM3WEVSREI6IGZpeCB3YXJuaW5nOiAiQ09ORklHX1NZU19NT05JVE9SX0xFTiIgcmVkZWZpbmVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMmI1MjQzZmMyNGE3MjRlODM0MDljMGI3MGNhYTFhMzE4MGU5OTdhZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEp1bCAxOCAxNjoxMzoxOCAyMDA5ICswMjAwCi0KLSAgICA4eHh4OiBmaXggd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ3VlY19zdGFuZGFyZF9pbml0JwotCi0gICAgQ29tbWl0IDhlNTUyNThmIGNyZWF0ZWQgZnVuY3Rpb24gdWVjX3N0YW5kYXJkX2luaXQoKSB0byBpbml0aWFsaXplCi0gICAgYWxsIFVFQyBpbnRlcmZhY2VzIGZvciA4M3h4IGFuZCA4NXh4IGJ1dCBmYWlsZWQgdG8gcHJvdmlkZSBhCi0gICAgcHJvdG90eXBlIGZvciBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1YjU0ZGYyNjc0ZmRhZDVlN2QzMTY0ODRjNjdlZmM2OGU3OWYzZjBkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgSnVsIDE4IDE1OjQ2OjAyIDIwMDkgKzAyMDAKLQotICAgIE1JUDQwNVQ6IGZpeCBjb21waWxlIHByb2JsZW0KLQotICAgIFRoZSAic3RkaW8vZGV2aWNlOiByZXdvcmsgZnVuY3Rpb24gbmFtaW5nIGNvbnZlbnRpb24iIHBhdGNoCi0gICAgKGNvbW1pdCA1MmNiNGQ0ZikgYnJva2UgdGhlIE1JUDQwNVQgYm9hcmQ7IHRoaXMgcGF0Y2ggZml4ZXMgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTcwYzE5NzI1ZWNkM2EwZTJlNTE3ZGZkNDk5NzljYTg4MjJlZGVjMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEp1bCAxOCAxNTozMjoxMCAyMDA5ICswMjAwCi0KLSAgICBOQU5EOiBGaXggd2FybmluZyBQbGVhc2UgZGVmaW5lIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYuLi4KLQotICAgIENvbW1pdCA4ZDJlZmZlYSBhZGRlZCBhIHdhcm5pbmcgZm9yIGNvbmZpZ3VyYXRpb25zIHRoYXQgdXNlIE5BTkQKLSAgICB3aXRob3V0IGRlZmluaW5nIHRoZSAodGhlbiBuZWNlc3NhcnkpIENPTkZJR19TWVNfNjRCSVRfVlNQUklOVEYgYnV0Ci0gICAgZmFpbGVkIHRvIGZpeCB0aGUgYWZmZWN0ZWQgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZlODk3YTY2MWZiOTk2OGNlMzU0MTY1YTEyY2NlODJlNGI4ODllMDQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKdWwgMTggMTU6MDU6NDQgMjAwOSArMDIwMAotCi0gICAgQ1BDSTc1MDogZml4IGNvbXBpbGUgcHJvYmxlbQotCi0gICAgQ29tbWl0IGJjMGQzMjk2IHJlbW92ZWQgcHBjX2Vycm9yX25vLmggZnJvbSBNYXJ2ZWxsIGJvYXJkcwotICAgIGJ1dCBmb3Jnb3QgdG8gdXBkYXRlIGJvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNmFlZTMwNDgzNDhmMWIxOWFiODkxNTZkYTk4YmZhNGY3YmFiZjI0YgotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pLWxpc3RAZ251ZGQuY29tPgotRGF0ZToJRnJpIEp1bCAxNyAxNDo0MjoxMSAyMDA5ICswMjAwCi0KLSAgICBjbWRfaTJjOiBidWdmaXg6IGFkZCBtaXNzaW5nIGJyYWNlCi0KLSAgICBUaGUgc3ViLWNvbW1hbmQgcGFyc2VyIG1pc3NlZCBhIGJyYWNlLCBzbyAicmV0dXJuIDA7IiBpcyBhbHdheXMKLSAgICB0YWtlbiBhbmQgbm8gZXJyb3IgbWVzc2FnZSBpcyBkaXBsYXllZCBpZiB5b3Ugc2F5ICJpMmMgc2NhbiIKLSAgICBpbnN0ZWFkIG9mICJpMmMgcHJvYmUiLCBmb3IgZXhhbXBsZS4KLQotICAgIFByb3BlciBicmFjZSBpcyBhZGRlZC4gQWxzbywgYSBtaXNsZWFkaW5nIGFuZCB1bm5lZWRlZCBlbHNlCi0gICAgaXMgcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAZ251ZGQuY29tLml0PgotCi1jb21taXQgNTJjYjRkNGZiMzQ4NzMxM2Y1YTcyZWE3NDBmNTI3YTRhZWZhYTM2NQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1heSAxNiAxMjoxNDo1NCAyMDA5ICswMjAwCi0KLSAgICBzdGRpby9kZXZpY2U6IHJld29yayBmdW5jdGlvbiBuYW1pbmcgY29udmVudGlvbgotCi0gICAgU28gZmFyIHRoZSBjb25zb2xlIEFQSSB1c2VzIHRoZSBmb2xsb3dpbmcgbmFtaW5nIGNvbnZlbnRpb246Ci0KLQk9PT09PT1FeHRyYWN0PT09PT09Ci0JdHlwZWRlZiBzdHJ1Y3QgZGV2aWNlX3Q7Ci0KLQlpbnQJZGV2aWNlX3JlZ2lzdGVyIChkZXZpY2VfdCAqIGRldik7Ci0JaW50CWRldmljZXNfaW5pdCAodm9pZCk7Ci0JaW50CWRldmljZV9kZXJlZ2lzdGVyKGNoYXIgKmRldm5hbWUpOwotCXN0cnVjdCBsaXN0X2hlYWQqIGRldmljZV9nZXRfbGlzdCh2b2lkKTsKLQlkZXZpY2VfdCogZGV2aWNlX2dldF9ieV9uYW1lKGNoYXIqIG5hbWUpOwotCWRldmljZV90KiBkZXZpY2VfY2xvbmUoZGV2aWNlX3QgKmRldik7Ci0JPT09PT09PQotCi0gICAgd2hpY2ggaXMgdG9vIGdlbmVyaWMgYW5kIGNvbmZ1c2luZy4KLQotICAgIEluc3RlYWQgb2YgdXNpbmcgZGV2aWNlX1hYIGFuZCBkZXZpY2VfdCB3ZSBjaGFuZ2UgdGhpcwotICAgIGludG8gc3RkaW9fWFggYW5kIHN0ZGlvX2RldgotCi0gICAgVGhpcyB3aWxsIGFsc28gYWxsb3cgdG8gYWRkIGxhdGVyIGEgZ2VuZXJpYyBkZXZpY2UgbWVjaGFuaXNtIGluIG9yZGVyCi0gICAgdG8gaGF2ZSBzdXBwb3J0IGZvciBtdWx0aXBsZSBkZXZpY2VzIGFuZCBkcml2ZXIgaW5zdGFuY2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotICAgIEVkaXRlZCBjb21taXQgbWVzc2FnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmNzMyYTc1OThmYTM2ZDQ4MjQxZGYyMGIxYTFmNGNkYmYwOWY3NWVlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgSnVsIDE1IDAwOjAxOjA4IDIwMDkgLTA1MDAKLQotICAgIHBwYzogRml4IGNvbXBpbGUgZXJyb3IgZm9yIGJvYXJkcyB3aXRoIENPTkZJR19ERFJfRUNDCi0KLSAgICBBIGJ1ZyB3YXMgaW50cm9kdWNlZCBieSBjb21taXQgZTk0ZTQ2MGM2ZTg3NDFmNDJkYWI2ZDhkZDRiNTk2YmE1ZDlkNzlhZQotICAgIHdoaWNoIGFmZmVjdGVkIG5vbi1NUEM4M3h4Lzg1eHgvODZ4eCBwcGMgYm9hcmRzIHdoaWNoIGhhZCBDT05GSUdfRERSX0VDQwotICAgIGRlZmluZWQgYW5kIHJlc3VsdGVkIGluIGVycm9ycyBzdWNoIGFzOgotCi0gICAgQ29uZmlndXJpbmcgZm9yIGNhbnlvbmxhbmRzIGJvYXJkLi4uCi0gICAgZnNsX2RtYS5jOjUwOjI6IGVycm9yOiAjZXJyb3IgIkZyZWVzY2FsZSBETUEgZW5naW5lIG5vdCBzdXBwb3J0ZWQgb24geW91cgotICAgIHByb2Nlc3NvciIKLSAgICBtYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCBgLmRlcGVuZCcsIG5lZWRlZCBieSBgbGliZG1hLmEnLiAgU3RvcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAxOGUwNjdkZTliNmVkMDg3ZmE2MDQ5NmU2NDg4N2YwYjc0NThkYmFhCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CVRodSBKdWwgMTYgMjA6NTc6NTkgMjAwOSArMDUzMAotCi0gICAgaW5jbHVkZS9jb25maWdfY21kX2RlZmF1bHQuaCBjbGVhbnVwCi0KLSAgICBhcnJhbmdlZCBjb25maWd1cmF0aW9ucyBpbiBhbHBoYWJldGljYWwgb3JkZXIKLSAgICBDT05GSUdfQ01EX0ZMQVNIIG1vdmVkIHVuZGVyIGlmbmRlZiBDT05GSUdfU1lTX05PX0ZMQVNICi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA1Njk0NjBlYmYxNGI4N2JkOGZkYjIzNTJiZGU5NWQzNWVlOTZlMTNiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBKdW4gMTQgMjE6MzU6MjIgMjAwOSAtMDQwMAotCi0gICAgc2F0YTogbmFtZXNwYWNlIGN1cnJfZGV2aWNlIHZhcmlhYmxlCi0KLSAgICBUaGUgY3Vycl9kZXZpY2UgdmFyaWFibGUgcmVhbGx5IHNob3VsZCBiZSBuYW1lc3BhY2VkIHdpdGggYSAic2F0YV8iIHByZWZpeAotICAgIHNpbmNlIGl0IGlzIG9ubHkgdXNlZCBieSB0aGUgc2F0YSBjb2RlLiAgSXQgYWxzbyBhdm9pZHMgcmFuZG9tIGNvbmZsaWN0cwotICAgIHdpdGggb3RoZXIgcGllY2VzIG9mIGNvZGUgKGxpa2UgY21kX21tYyk6Ci0gICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9zYXRhLm8pOiguZGF0YS5jdXJyX2RldmljZSsweDApOgotCW11bHRpcGxlIGRlZmluaXRpb24gb2YgYGN1cnJfZGV2aWNlJwotICAgIGNvbW1vbi9saWJjb21tb24uYShjbWRfbW1jLm8pOiguZGF0YS5jdXJyX2RldmljZSsweDApOiBmaXJzdCBkZWZpbmVkIGhlcmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDAyZTIyYzJkZTFjZTIzMTJmMjYzNmZhNDczYTYwYzhkOGYxOGQ4YWEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEp1biAxNCAyMTozNToyMSAyMDA5IC0wNDAwCi0KLSAgICBjbWRfbW1jOiBtYWtlIGN1cnJfZGV2aWNlIHN0YXRpYwotCi0gICAgVGhlIGN1cnJfZGV2aWNlIHZhcmlhYmxlIGlzbid0IHVzZWQgb3V0c2lkZSBvZiBjbWRfbW1jLCBzbyBtYXJrIGl0IHN0YXRpYwotICAgIHRvIGF2b2lkIGNvbmZsaWN0cyB3aXRoIG90aGVyIHBpZWNlcyBvZiBjb2RlIChsaWtlIHNhdGEgd2hpY2ggYWxzbyBleHBvcnRzCi0gICAgYSBjdXJyX2RldmljZSkuICBPdGhlcndpc2Ugd2UgZW5kIHVwIHdpdGggc3R1ZmYgbGlrZToKLSAgICBjb21tb24vbGliY29tbW9uLmEoY21kX3NhdGEubyk6KC5kYXRhLmN1cnJfZGV2aWNlKzB4MCk6Ci0JbXVsdGlwbGUgZGVmaW5pdGlvbiBvZiBgY3Vycl9kZXZpY2UnCi0gICAgY29tbW9uL2xpYmNvbW1vbi5hKGNtZF9tbWMubyk6KC5kYXRhLmN1cnJfZGV2aWNlKzB4MCk6IGZpcnN0IGRlZmluZWQgaGVyZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmQ4ZDJhZGRlM2ZjZTExNTJlNGFkOWY0NzIzOGYwN2U3MDc5M2M1MwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVuIDE0IDIxOjM1OjE2IDIwMDkgLTA0MDAKLQotICAgIGVudmNyYzogYWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzIG9uIGVudiBzdG9yYWdlCi0KLSAgICBXaGVuIHRoZSBlbnZjcmMgYnVpbGRpbmcgd2FzIG1hZGUgY29uZGl0aW9uYWwsIGl0IG1pc3NlZCBhIGJ1bmNoIG9mIGVudgotICAgIHN0b3JhZ2UgdHlwZXMsIHNvIGFkZCBhbGwgY3VycmVudGx5IHN1cHBvcnRlZCB0eXBlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDI0MTkxNjlmNTc0OWQ3YWY1MDFiM2I3N2E1MzM2ZDFkNTM1MzIwZGUKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDE2IDE5OjA4OjA0IDIwMDkgLTA1MDAKLQotICAgIFJlbW92ZSBsZWdhY3kgTkFORCBhbmQgZGlzayBvbiBjaGlwIHJlZmVyZW5jZXMgZnJvbSBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDEyZTkwNDNjN2VkOTYxYjYwZGY4NjVmNDVkOWEzYzc0ZDZhMzgxOTkKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Ci1EYXRlOglTYXQgSnVuIDIwIDE5OjEwOjE0IDIwMDkgKzA5MDAKLQotICAgIGNvbmZpZy5tazogUmVtb3ZlICQoUENJX0NMT0NLKSByZWZlcmVuY2UKLQotICAgIFRoZSBmb2xsb3dpbmcgY29tbWl0IGludHJvZHVjZWQgJChQQ0lfQ0xPQ0spIHJlZmVyZW5jZSBzbyB0aGF0Ci0gICAgd2UgY291bGQgdHdlYWsgYFBDSV82Nk0nIGRlZmluaXRpb24gdmlhIGFuIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi0gICAgPiBjb21taXQgZjA0NmNjZDE1YzhiYzk2MTNiZmQ3MjkxNmI3NjFhMTI3ZDM2ZTVjNgotICAgID4gQXV0aG9yOiBFcmFuIExpYmVydHkgPGxpYmVydHlAZnJlZXNjYWxlLmNvbT4KLSAgICA+IERhdGU6ICAgVGh1IEp1bCAyOCAxMDowODo0NiAyMDA1IC0wNTAwCi0gICAgPgotICAgID4JICAqIFBhdGNoIGJ5IEVyYW4gTGliZXJ0eQotICAgID4JICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRnJlZXNjYWxlIE1QQzgzNDlBRFMgYm9hcmQuCi0KLSAgICBCdXQgSSBzdWdnZXN0IGEgcmVtb3ZhbCBvZiBpdCBmb3IgdGhlIGZvbGxvd2luZyByZWFzb25zOgotCi0gICAgKiBJbiAyMDA2LCBNUEM4MzQ5QURTIHdhcyBtZXJnZWQgaW50byBNUEM4MzQ5RU1EUyBwb3J0LAotICAgICAgYW5kIGl0IHNlZW1zIHRoYXQgTVBDODM0OUVNRFMgcG9ydCBpcyBQQ0lfNjZNIGZyZWUuCi0KLSAgICAqIE9UT0gsIFBDSV82Nk0gaXMgdXNlZCBieSBNUEM4MzJYRU1EUyBhbiBNUEM4MzYwRU1EUyBwb3J0cywKLSAgICAgIGJ1dCB0aGV5IGRvbid0IG5lZWQgJChQQ0lfQ0xPQ0spIGVudmlyb25tZW50IHZhcmlhYmxlIGF0IGFsbC4KLSAgICAgIFBDSV82Nk0gaXMgYXV0b21hdGljYWxseSBjb25maWd1cmVkIHZpYSAkKEJPQVJEKV9jb25maWcgbmFtZXMKLSAgICAgIHdpdGggdGhlIGhlbHAgb2YgJChmaW5kc3RyaW5nIF82Nl8sJEApLgotCi0gICAgKiBVbmZvcnR1bmF0ZWx5ICQoUENJX0NMT0NLKSBoYXMgYmVlbiB1bmRvY3VtZW50ZWQgYW55d2hlcmUsCi0gICAgICBzbyBvbmx5IGEgZmV3IHBlb3BsZSBrbm93IHRoZSBleGlzdGVuY2Ugb2YgaXQgdGhlc2UgZGF5cy4KLQotICAgICogS2VlcCBjb25maWcubWsgaW5kZXBlbmRlbnQgZnJvbSAkKEJPQVJEKSBhcyBtdWNoIGFzIHBvc3NpYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzZGI3NWQ5YzExZDM3Y2MxZDI4YmViZDkxYjE5ZjRlNTQ4YjY4MTU1Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTWF5IDIzIDIxOjQyOjM2IDIwMDkgKzAyMDAKLQotICAgIGZpeDogbWlzc2luZyBhdXRvY29uZmlnLm1rIGZyb20gZ2VuZXJhbCBNYWtlZmlsZQotCi0gICAgQXQgdGhlIGZpcnN0IHJ1biBvZiBtYWtlIHdlIGdlbmVyYXRlIHRoZSBhdXRvY29uZi5tayBhbmQKLSAgICBhdXRvY29uZi5tay5kZXAgaWYgbm90IGFscmVhZHkgdGhlIGNhc2UgYW5kIHdlIGN1cnJlbnRseSBpbmNsdWRlIG9ubHkKLSAgICB0byAuZGVwCi0KLSAgICBJbiBvcmRlciB0byB1c2UgdGhlc2UgYXV0b2dlbmVyYXRlZCB2YWx1ZXMgd2UgbmVlZCB0byBpbmNsdWRlIGl0IGFsc28KLSAgICBldmVuIGlmIGl0J3MgaW5jbHVkZWQgaW4gY29uZmlnLm1rIGJ1dCBpdCdzIGRvbmUgYmVmb3JlIHRoZWlyCi0gICAgZ2VuZXJhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAxY2EyOThjZWQwNzMyNzc0OWI1NDMyMTgxNWY3NmZjZGRiMmY5NDc5Ci1BdXRob3I6IE1hdHRoaWFzIFdlaXNzZXIgPG1hdHRoaWFzLndlaXNzZXJAZ3JhZi1zeXRlY28uZGU+Ci1EYXRlOglUaHUgSnVsIDkgMTY6MDc6MzAgMjAwOSArMDIwMAotCi0gICAgQWRkZWQgc3VwcG9ydCBmb3Igc3BsYXNoIHNjcmVlbiBwb3NpdGlvbmluZwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgc3BsYXNoIGltYWdlIHBvc2l0aW9uaW5nIGJ5IGFkZGluZyBhbgotICAgIGFkZGl0aW9uYWwgdmFyaWFibGUgInNwbGFzaHBvcyIgdG8gdGhlIGVudmlyb25tZW50LiBQbGVhc2Ugc2VlCi0gICAgUkVBRE1FIGZvciBkZXRhaWxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgV2Vpc3NlciA8bWF0dGhpYXMud2Vpc3NlckBncmFmLXN5dGVjby5kZT4KLSAgICBBY2tlZC1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA5ZDE3M2UwMjMzNDkzMTEzYzliMWFhODFiZDIyMDhkMDA1N2FiOWRiCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVR1ZSBKdWwgNyAxMzoxMTozNiAyMDA5ICswMjAwCi0KLSAgICB2aWRlbzogbWI4NjJ4eDogcmVwbGFjZSBwcmludGYgd2l0aCBwdXRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBjY2U5OWIyYTdkZDgwNjgzZDYxMzYwYWVlNTZhNmVjZTM0NDk1MGIyCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVR1ZSBKdWwgNyAxMzoyNzowNyAyMDA5ICswMjAwCi0KLSAgICB2aWRlbzogbWI4NjJ4eDogdXNlIG1hY3JvcyBpbnN0ZWFkIG9mIG1hZ2ljIG51bWJlcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGU4NjUyODY3MWVjZTZkNWMxMTYyNjU2YTM3ZmM2OGE4ZTBiZjY3ZjgKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCA3IDEzOjI0OjA4IDIwMDkgKzAyMDAKLQotICAgIHZpZGVvOiBtYjg2Mnh4OiBmaXggY29kaW5nIHN0eWxlIGFuZCByZW1vdmUgZGVhZCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCAyOTJlZDQ4OWRiYThjYzk3YjQ1ODU3OTAwM2E4MDAxY2Q0NzAzY2Q4Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVR1ZSBKdW4gMzAgMTI6MDM6NTAgMjAwOSArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogUmVtb3ZlIGlnbm9yZWQgcmV0dXJuIHR5cGUgZm9yIF9fYXJjaF9fc3dhYjE2IGZ1bmN0aW9uCi0KLSAgICBUaGlzIGNoYW5nZSByZW1vdmUgY29tcGlsYXRpb24gd2FybmluZ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCBlMjc3NjU4N2MwZWFjMTMxOTU0YWUxMDBmZGE4OWNjM2U3ZWQ4YjU3Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVR1ZSBKdW4gMzAgMTI6MDI6NDUgMjAwOSArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogUmVtb3ZlZCB1bnVzZWQgdmFyaWFibGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCBiZTMzYjA0NmI1NDlhZDg4YzIwNGMyMDk1MDhjZDc2NTcyMzJmZmJkCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEFwciAxIDE1OjAyOjEzIDIwMDkgLTA1MDAKLQotICAgIFJlbW92ZSBsZWdhY3kgTkFORCBhbmQgZGlzayBvbiBjaGlwIGNvZGUuCi0KLSAgICBMZWdhY3kgTkFORCBoYWQgYmVlbiBzY2hlZHVsZWQgZm9yIHJlbW92YWwuICBBbnkgYm9hcmRzIHRoYXQgdXNlIHRoaXMKLSAgICB3ZXJlIGFscmVhZHkgbm90IGJ1aWxkaW5nIGluIHRoZSBwcmV2aW91cyByZWxlYXNlIGR1ZSB0byBhbiAjZXJyb3IuCi0KLSAgICBUaGUgZGlzayBvbiBjaGlwIGNvZGUgaW4gY29tbW9uL2NtZF9kb2MuYyByZWxpZXMgb24gbGVnYWN5IE5BTkQsCi0gICAgYW5kIGl0IGhhcyBhbHNvIGJlZW4gcmVtb3ZlZC4gIFRoZXJlIGlzIG5ld2VyIGRpc2sgb24gY2hpcCBjb2RlCi0gICAgaW4gZHJpdmVycy9tdGQvbmFuZDsgc29tZW9uZSB3aXRoIGFjY2VzcyB0byBoYXJkd2FyZSBhbmQgc3VmZmljaWVudAotICAgIHRpbWUgYW5kIG1vdGl2YXRpb24gY2FuIHRyeSB0byBnZXQgdGhhdCB3b3JraW5nLCBidXQgZm9yIG5vdyBkaXNrCi0gICAgb24gY2hpcCBpcyBub3Qgc3VwcG9ydGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmYmRhYWZhZWU3MWUyYzdmMmMzMWIzNTgyYWI2ZDg2NzllZmVlOGQzCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gNCAxNjo0MDozNiAyMDA5ICswMjAwCi0KLSAgICBuYW5kOiBDaGFuZ2UgTkFORF9NQVhfT09CU0laRSB0byAyMTggYXMgbmVlZGVkIGZvciBzb21lIDRrIHBhZ2UgZGV2aWNlcwotCi0gICAgVGhpcyBpcyBuZWVkZWQgZm9yIHRoZSBNUEM1MTJ4IE5BTkQgZHJpdmVyIChmc2xfbmZjX25hbmQuYykgd2hpY2ggYWxyZWFkeQotICAgIGRlZmluZXMgc3VjaCBhIDRrIHBsdXMgMjE4IGJ5dGVzIEVDQyBsYXlvdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjJmMzc2YWI5NTZjMTdkNGEwYzQyYTk5MzEzM2NhMjVjZGM4NzI3OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDE2IDE1OjEzOjA0IDIwMDkgKzAyMDAKLQotICAgIG5hbmQ6IG5kZmM6IFJlbW92ZSB1bm5lY2Vzc2FyeSAjaWZkZWYncwotCi0gICAgTm93IHRoYXQgdGhlIDR4eCBOQU5EIGRyaXZlciBuZGZjIGlzIG1vdmVkIHRvIHRoZSBjb21tb24gTkFORCBkcml2ZXIKLSAgICBkaXJlY3Rvcnkgd2UgZG9uJ3QgbmVlZCB0aGlzICNpZmRlZidzIGFueW1vcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTI1ODJhYzc3MWIwYmYzODUyODE3YzNiZmE0YmUzMjY1MjJhMDY2NQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDE2IDE1OjEyOjQ4IDIwMDkgKzAyMDAKLQotICAgIG5hbmQvcHBjNHh4OiBNb3ZlIFBQQzR4eCBOQU5EIGRyaXZlciB0byBjb21tb24gTkFORCBkcml2ZXIgZGlyZWN0b3J5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2ViZjcwZGI1NDUyZDNkNDdjMzE2ZGRlZjA5ZjQwZTc2NTUzYmNiYQotQXV0aG9yOiBWYWxlcml5IEdsdXNoa292IDxndnZAbHN0ZWMuY29tPgotRGF0ZToJVHVlIEp1bCAxNCAxMzo1MToxMCAyMDA5ICswMzAwCi0KLSAgICBuYW5kOiBmaXhlZCBmYWlsZWQgcmVhZHMgb24gY29ycmVjdGVkIEVDQyBlcnJvcnMgaW4gbmFuZF91dGlsLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUGF1bHJhaiwgU2FuZGVlcCA8cy1wYXVscmFqQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVkNzI3ZDM5NGM1YWIxMzkwMzM3MTk3NzJkYzk1ZGMyNWNmYTE0ZjcKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+Ci1EYXRlOglNb24gSnVsIDEzIDE2OjI5OjA0IDIwMDkgLTA3MDAKLQotICAgIFR5cG8gZml4OiB1c2UgQ09ORklHX1NPQ19ETTY0NFgsIG5vdCBDT05GSUdfU09DX0RNNjQ2LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5MzcwNzZmODRjNTA2NGYwYTc5MTA1ZmNlMzUyYWM3Y2Y3YjMzNjQzCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJU2F0IEp1bCAxMSAxNjo0OTo1NSAyMDA5ICswOTAwCi0KLSAgICBNVEQ6IE9uZU5BTkQ6IEluY3JlYXNlIHRoZSBlbnZpcm9ubWVudCBzaXplIHRvIDRLaUIKLQotICAgIEFsc28gdXNlIG10ZCBvcGVyYXRpb24gaW5zdGVhZCBvZiBvbmVuYW5kIGZ1bmN0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJmYWRiMTdmNjljMjU2MTk2NjIwYzMyMTY0Nzc1ZjA2M2E1OWMzNGYKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgSnVuIDEwIDAwOjI1OjM4IDIwMDkgKzA0MDAKLQotICAgIG1wYzgzeHg6IE1QQzgzN3hFTURTOiBVc2UgaHdjb25maWcgaW5zdGVhZCBvZiBwY2lfZXh0ZXJuYWxfYXJiaXRlciB2YXJpYWJsZQotCi0gICAgU2luY2Ugd2UgaGF2ZSBzaW1wbGUgaHdjb25maWcgaW50ZXJmYWNlIG5vdywgd2UgZG9uJ3QgbmVlZAotICAgIHBjaV9leHRlcm5hbF9hcmJpdGVyIHZhcmlhYmxlIGFueSBsb25nZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI4YjcxZmZiYzM1ZmRlNjkwNWU2NWZmZGJmNGU0Yjg3ZWZjMjZiN2UKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgSnVuIDEwIDAwOjI1OjM2IDIwMDkgKzA0MDAKLQotICAgIG1wYzgzeHg6IE1QQzgzMTVFUkRCOiBVc2UgaHdjb25maWcgZm9yIGJvYXJkIHR5cGUgc2VsZWN0aW9uCi0KLSAgICBUaGlzIHBhdGNoIHNpbXBseSBjb252ZXJ0cyB0aGUgYm9hcmQgdG8gdGhlIGh3Y29uZmlnIGluZnJhc3RydWN0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNzhjNjc4MzU0YzgzMjE3MzdhYTA3ZTg2ODMxZmYxNDE3NmY0ZWQ1Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJV2VkIEp1biAxMCAwMDoyNTozMSAyMDA5ICswNDAwCi0KLSAgICBtcGM4M3h4OiBNUEM4MzdYRU1EUzogRml4dXAgZVNESEMgbm9kZXMgaW4gZGV2aWNlIHRyZWUKLQotICAgIGZkdF9maXh1cF9lc2RoYygpIHdpbGwgZWl0aGVyIGRpc2FibGUgb3IgZW5hYmxlIGVTREhDIG5vZGVzLCBhbmQKLSAgICBhbHNvIHdpbGwgZml4dXAgY2xvY2stZnJlcXVlbmN5IHByb3BlcnR5LgotCi0gICAgUGx1cywgc2luY2UgRFIgVVNCIGFuZCBlU0RIQyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlLCB3ZSBzaG91bGQKLSAgICBvbmx5IGNvbmZpZ3VyZSB0aGUgZVNESEMgaWYgYXNrZWQgdGhyb3VnaCBod2NvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzk2NDZlZDc1ODgwNGZhMWZhNmMxNDI1MzY5YTRlZWU1ZDYxOGIxZAotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBKdW4gMTAgMDA6MjU6MzAgMjAwOSArMDQwMAotCi0gICAgbXBjODN4eDogTVBDODM3WEVSREI6IEFkZCBzdXBwb3J0IGZvciBGU0wgZVNESEMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBlU0RIQyBvbiBNUEM4MzdYRVJEQiBib2FyZHMuIFRoZSBXUAotICAgIHN3aXRjaCBkb2Vzbid0IHNlZW0gdG8gd29yayBvbiBSREIgYm9hcmRzIHRob3VnaCwgdGhlIFdQIHBpbiBpcwotICAgIGFsd2F5cyBhc3NlcnRlZCAoY2FuIHNlZSB0aGUgcGluIHN0YXRlIHdoZW4gaXQncyBpbiBHUElPIG1vZGUpLgotCi0gICAgRlNMIERSIFVTQiBhbmQgRlNMIGVTREhDIGFyZSBtdXR1YWxseSBleGNsdXNpdmUgYmVjYXVzZSBvZiBwaW5zCi0gICAgbXVsdGlwbGV4aW5nLCBzbyB1c2VyIHNob3VsZCBzcGVjaWZ5ICdlc2RoYycgb3IgJ2RyX3VzYicgb3B0aW9ucwotICAgIGluIHRoZSBod2NvbmZpZyBlbnZpcm9ubWVudCB2YXJpYWJsZSB0byBjaG9vc2UgYmV0d2VlbiB0aGUKLSAgICBkZXZpY2VzLgotCi0gICAgcC5zLgotICAgIE5vdyB3ZSdyZSB2ZXJ5IGNsb3NlIHRvIGEgbW9uaXRvciBsZW4gbGltaXQgKDE5NiBieXRlcyBsZWZ0IHVzaW5nCi0gICAgZ2NjLTQuMi4wKSwgc28gYWxzbyBpbmNyZWFzZSB0aGUgbW9uaXRvciBsZW4gYnkgb25lIHNlY3RvciAoNjQgS0IpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiMzM0MzNhNjNmZTA4YzllNzIzZWExNWE3YzdjNzE0M2JmNTI3YzZkCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJV2VkIEp1biAxMCAwMDoyNToyOSAyMDA5ICswNDAwCi0KLSAgICBmc2xfZXNkaGM6IEFkZCBkZXZpY2UgdHJlZSBmaXh1cHMKLQotICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBmZHRfZml4dXBfZXNkaGMoKSBmdW5jdGlvbiB0aGF0IGlzIHVzZWQgdG8gZml4dXAKLSAgICB0aGUgZGV2aWNlIHRyZWUuCi0KLSAgICBUaGUgZnVuY3Rpb24gYWRkcyBzdGF0dXMgPSAiZGlzYWJsZWQiIHByb3BlcnkgaWYgZXNkaGMgcGlucyBtdXhlZCBhd2F5LAotICAgIG90aGVyd2lzZSBpdCBmaXh1cHMgY2xvY2stZnJlcXVlbmN5IGZvciBlc2RoYyBub2Rlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTNmOWRjZjllOGI4MTgyZTk3YWViNzk2NWM2ODcxNzZjYmQwYjkzMwotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBKdW4gMTAgMDA6MjU6MjcgMjAwOSArMDQwMAotCi0gICAgQWRkIHNpbXBsZSBod2NvbmZpZyBpbmZyYXN0cnVjdHVyZQotCi0gICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIHNpbXBsZSBod2NvbmZpZyBpbmZyYXN0cnVjdHVyZTogYW4KLSAgICBpbnRlcmZhY2UgZm9yIHNvZnR3YXJlIGtub2JzIHRvIGNvbnRyb2wgYSBoYXJkd2FyZS4KLQotICAgIFRoaXMgaXMgdmVyeSBzaW1wbGUgaW1wbGVtZW50YXRpb24sIGkuZS4gaXQgaXMgaW1wbGVtZW50ZWQKLSAgICB2aWEgYGh3Y29uZmlnJyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gTGF0ZXIgd2UgY291bGQgd3JpdGUKLSAgICBzb21lICJod2NvbmZpZyA8ZW5hYmxlfGRpc2FibGV8bGlzdD4iIGNvbW1hbmRzLCBuY3Vyc2VzCi0gICAgaW50ZXJmYWNlIGZvciBBd2FyZCBCSU9TLWxpa2UgaW50ZXJmYWNlLCBhbmQgZnJhbWUtYnVmZmVyCi0gICAgaW50ZXJmYWNlIGZvciBBTUkgR1VJWzFdIEJJT1MtbGlrZSBpbnRlcmZhY2Ugd2l0aCBtb3VzZQotICAgIHN1cHBvcnRbMl0uCi0KLSAgICBDdXJyZW50IGltcGxlbWVudGF0aW9uIGRldGFpbHMvbGltaXRhdGlvbnM6Ci0KLSAgICAxLiBEb2Vzbid0IHN1cHBvcnQgb3B0aW9ucyBkZXBlbmRlbmNpZXMgYW5kIG11dHVhbCBleGNsdXNpb24uCi0gICAgICAgV2UgY2FuIGltcGxlbWVudCB0aGlzIGJ5IGludGVncmF0aW5nIGFwdC1nZXRbM10gaW50byB0aGUKLSAgICAgICB1LWJvb3QuIEJ1dCBJIGRpZG4ndCBib3RoZXIgeWV0LgotCi0gICAgMi4gU2luY2Ugd2UgZG9uJ3QgaW1wbGVtZW50IGh3Y29uZmlnIGNvbW1hbmQsIGkuZS4gd2UncmUgd29ya2luZwotICAgICAgIHdpdGggdGhlIGVudmlyb25lbWVudCBkaXJlY3RseSwgdGhlcmUgaXMgbm8gd2F5IHRvIHRlbGwgdGhhdAotICAgICAgIHRvZ2dsaW5nIGEgcGFydGljdWxhciBvcHRpb24gd2lsbCBuZWVkIGEgcmVib290IHRvIHRha2UKLSAgICAgICBhbiBlZmZlY3QuIFNvLCBmb3Igbm93IGl0J3MgYWR2aXNlZCB0byBhbHdheXMgcmVib290IHRoZQotICAgICAgIHRhcmdldCBhZnRlciBtb2RpZnlpbmcgaHdjb25maWcgdmFyaWFibGUuCi0KLSAgICAzLiBXZSBzdXBwb3J0IGh3Y29uZmlnIG9wdGlvbnMgd2l0aCBhcmd1bWVudHMuIEZvciBleGFtcGxlLAotCi0gICAgICAgc2V0IGh3Y29uZmlnIGRyX3VzYjptb2RlPXBlcmlwaGVyYWwscGh5X3R5cGU9dWxwaQotCi0gICAgICAgVGhhdCBtZWFuczoKLSAgICAgICAtIGRyX3VzYiAtIGVuYWJsZSBEdWFsLVJvbGUgVVNCIGNvbnRyb2xsZXI7Ci0gICAgICAgLSBkcl91c2I6bW9kZT1wZXJpcGhlcmFsIC0gVVNCIGluIEZ1bmN0aW9uIG1vZGU7Ci0gICAgICAgLSBkcl91c2I6cGh5X3R5cGU9dWxwaSAtIFVTQiBzaG91bGQgd29yayB3aXRoIFVMUEkgUEhZczsKLQotICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgc2ltcGxlIGltcGxlbWVudGF0aW9uIGlzIHRvIGRlZmluZSBzb21lCi0gICAgaW50ZXJuYWwgQVBJIGFuZCB0aGVuIHdlIGNhbiBjb250aW51ZSBpbXByb3ZpbmcgdXNlciBleHBlcmllbmNlCi0gICAgYnkgYWRkaW5nIG1vcmUgbWF0dXJlIGludGVyZmFjZSwgbGlrZSBod2NvbmZpZyBjb21tYW5kIHdpdGgKLSAgICBiZWxscyBhbmQgd2hpc3RsZXMuIE9yIG5vdCBhZGRpbmcsIGlmIHdlIGZlZWwgdGhhdCBjdXJyZW50Ci0gICAgaW50ZXJmYWNlIGZpdHMgaXRzIG5lZWRzLgotCi0gICAgWzFdIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvQW1lcmljYW5fTWVnYXRyZW5kcwotICAgIFsyXSBSZWdhcmRpbmcgbmN1cnNlcyBhbmQgR1VJIHdpdGggbW91c2Ugc3VwcG9ydCAtLSBJJ20ganVzdAotCWtpZGRpbmcuCi0gICAgWzNdIFRoZSBjb21tZW50IHJlZ2FyZGluZyBhcHQtZ2V0IGlzIGFsc28gYSBqb2tlLCBtZWFuaW5nIHRoYXQKLQlkZXBlbmRlbmN5IHRyYWNraW5nIGNvdWxkIGJlIG5vbi10cml2aWFsLiBGb3IgZXhhbXBsZSwgZm9yCi0JZW5hYmxpbmcgSFcgZmVhdHVyZSBYIHdlIG1heSBuZWVkIHRvIGRpc2FibGUgWSwgYW5kIHR1cm4gWgotCWludG8gcmVkdWNlZCBtb2RlIChsaWtlIFJNSUktb25seSBpbnRlcmZhY2UgZm9yIGV0aGVybmV0LAotCW5vIE1JSSkuCi0KLQlJdCdzIHF1aXRlIHRyaXZpYWwgdG8gaW1wbGVtZW50IHNpbXBsZSBjYXNlcyB0aG91Z2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZjM2ZlZjI4YjlmZmYwZDdmM2ZhNGM1MWMzZWUwYWU4YzJhM2IwNDMKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJV2VkIEp1bCAxNSAyMDo0Mjo1OSAyMDA5IC0wNDAwCi0KLSAgICBJbXByb3ZlIFUtQm9vdCBQb3J0aW5nIEd1aWRlIGluIHRoZSBSRUFETUUKLQotICAgIFVwZGF0ZSBmb3IuLi4KLSAgICAqIEJESTIwMDAgLT4gQkRJMzAwMCAoQkRJMjAwMCBpcyBvYnNvbGV0ZSkuCi0gICAgKiBBZGQgYSBsaW5lIHRvIHJlYWQgdGhlIGRvYy9SRUFETUUuKiBmaWxlcwotICAgICogRml4IGNvZGluZyBzdGFuZGFyZCB2aW9sYXRpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgOTU3ODcxOGMxYjA4NWNhYzczMDE3ZDgzNDAwMWJjNWNiMGIyZjczZgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1bCAxNCAxNjowMDoyNCAyMDA5IC0wNTAwCi0KLSAgICBtdGQ6IGNmaSAtIGlmIGRlZmluZWQsIHVzZSBNQVhfRkxBU0hfQkFOS1NfREVURUNUIGZvciBzdGF0aWMgZGVjbGFyYXRpb25zCi0KLSAgICBhLmsuYSBjZmlfbXRkLmMgZG9lcyBhcyBjZmlfZmxhc2guYyBkb2VzLiAgVGhpcyBhbHNvIHByZXZlbnRzCi0gICAgdGhlIFRRTTgzNHggYnVpbGQgZnJvbSBkb2luZyBhOgotCi0gICAgY2ZpX210ZC5jOjM2OiBlcnJvcjogdmFyaWFibHkgbW9kaWZpZWQgJ2NmaV9tdGRfaW5mbycgYXQgZmlsZSBzY29wZQotICAgIGNmaV9tdGQuYzozNzogZXJyb3I6IHZhcmlhYmx5IG1vZGlmaWVkICdjZmlfbXRkX25hbWVzJyBhdCBmaWxlIHNjb3BlCi0KLSAgICB1c2luZyBnY2MgNC40LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0YTk5MzJhNDM2NGI1NDg3NzNiYzEzMWJmODVlMjRhMmVjMTVmMmIwCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVsIDcgMTg6MDQ6MjEgMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogaW5jcmVhc2UgTU9OSVRPUl9MRU4gdG8gb2Zmc2V0IGdyb3dpbmcgcGFpbnMKLQotICAgIFNhdmluZyB0aGUgZW52aXJvbm1lbnQgbGVhZHMgdG8gb3ZlcndyaXRpbmcgdS1ib290IGl0c2VsZiwKLSAgICBicmlja2luZyBib2FyZHMuICBJbmNyZWFzZSB1LWJvb3QncyBpbWFnZSBzaXplIHNvIHRoZSBlbnZpcm9ubWVudAotICAgIGJhc2UgYWRkcmVzcyBkb2Vzbid0IGVuZCB1cCBvdmVybGFwcGluZyB1LWJvb3QgdGV4dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjMzFlMTMyNjBiY2QwNDhhOTQ0MTJhNDdiMDA0Mzg2ZWE2MTEyYWNmCi1BdXRob3I6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE1OjQ4OjQxIDIwMDkgKzAzMDAKLQotICAgIHVzYjogbXB4ODM0OWl0eDogYWRkZWQgc3VwcG9ydCBvZiBsb2FkaW5nIGltYWdlcyBmcm9tIFVTQiBzdG9yYWdlIChNUEgvRFIpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWYWxlcml5IEdsdXNoa292IDxndnZAbHN0ZWMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkODllMWMzNjg5MWRlNzkzYTIwYTkyOTI4MmFjYzBmYzdiOThmZWFjCi1BdXRob3I6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE1OjQ4OjQwIDIwMDkgKzAzMDAKLQotICAgIHVzYjogbXBjODM0eDogYWRkZWQgc3VwcG9ydCBvZiB0aGUgTVBIIFVTQiBjb250cm9sbGVyIGluIGFkZGl0aW9uIHRvIHRoZSBEUiBvbmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ5YWMzZDVhMTdlY2VmMGJlYjcwMDczMDE4OTI1ZTAxMWIxMTY4NGUKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdW4gMTUgMTE6NTE6NDcgMjAwOSAtMDUwMAotCi0gICAgbXBjODN4eDogc2V0IDY0QklUX1ZTUFJJTlRGIGZvciBib2FyZHMgdXNpbmcgbmFuZF91dGlsCi0KLSAgICBXaGVuIGVuYWJsaW5nIE5BTkQgc3VwcG9ydCBmb3IgYSBib2FyZCwgb25lIG11c3QgYWxzbyBkZWZpbmUKLSAgICBDT05GSUdfU1lTXzY0QklUX1ZTUFJJTlRGIGJlY2F1c2UgdGhpcyBpcyBuZWVkZWQgaW4gbmFuZF91dGlsLmMKLSAgICBmb3IgY29ycmVjdCBvdXRwdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotICAgIENjOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIENjOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Ci0gICAgQ2M6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgMDUyYzA4OTE2NTMyZDFkOWMyZjY5ZWI5MjI5NzA5YzdiMmZjMWYwMgotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgSnVsIDggMDc6NDE6MjQgMjAwOSArMDAwMAotCi0gICAgQ29sZEZpcmU6IFVwZGF0ZSBib290YXJncwotCi0gICAgQWRkIGEgYm9vdGFyZ3MgZm9yIE01MzAxN0VWQiBhbmQgdXBkYXRlIGJvb3RhcmdzCi0gICAgZm9yIE01NDQ1MUVWQgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotCi1jb21taXQgNmU4ZDU4ZDM2NjkxNTIwZjhkYTc0Y2Q5NDg2NjFkMjhkNWE1ZGM2NgotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE0OjMwOjE5IDIwMDkgKzAwMDAKLQotICAgIENvbW1hbmQgZm9yIGFjY2Vzc2luZyBzZXJpYWwgZmxhc2ggdXBkYXRlCi0KLSAgICBDaGFuZ2Ugc3RydG91bCBudW1iZXIgYmFzZSBvZiBhcmd2IDMgZnJvbSAwIHRvIDE2Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBlZTBhODQ2MjQ2NmRkMjg0OTY4NTM2ZWI1N2M2ZWVmNGJlMGQ2YWFkCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMTQ6MTg6MjkgMjAwOSArMDAwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBEU1BJIHN1cHBvcnQgZm9yIE1DRjUyMjd4IGFuZCBNQ0Y1NDQ1eAotCi0gICAgUmVtb3ZlIGluZGl2aWR1YWwgQ1BVIHNwZWNpZmljIERTUEkgZHJpdmVyLgotICAgIEFkZCByZXF1aXJlZCBmZWF0dXJlIGZvciB0aGUgY29tbW9uIERTUEkgZHJpdmVyIGluIGNwdV9pbml0IGFuZAotICAgIGluIHBsYXRmb3JtIGNvbmZpZ3VyYXRpb24gZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IGRlYzYxYzc4NTFiYWE3MjE1MWVmMWQzNjU3ZTdiYjNiNjg5MDdkNDgKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJVHVlIEp1biAzMCAxNDowOTo0NyAyMDA5ICswMDAwCi0KLSAgICBDb2xkZmlyZTogQ29uc29saWRhdGUgRFNQSSBkcml2ZXIKLQotICAgIFVuaWZ5IGJvdGggTUNGNTIyN3ggYW5kIE1DRjU0NDV4IERTUEkgZHJpdmVyIGluIENQVSB0bwotICAgIGRyaXZlci9zcGkgZm9sZGVyIGZvciBjb21tb24gdXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotCi1jb21taXQgMTFkODhiMjZhNjhiZDRiZjk4YjFjOTYyZmRlNjI1N2E1MDk3ODIzMQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgSnVuIDEyIDEzOjAzOjM0IDIwMDkgKzAwMDAKLQotICAgIENvbGRGaXJlOiBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBtZXNzYWdlcwotCi0gICAgUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMgYW5kIHByaW50ZiB0eXBlIG1pc21hdGNoIGluCi0gICAgbGliX202OGsvYm9hcmQuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotCi1jb21taXQgNDU2N2M3YmZmMjUwM2ZiMWE3YzczOGZmOWI5ZjBiZDAwZDI3NGQ5YQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgSnVuIDEyIDExOjMxOjMxIDIwMDkgKzAwMDAKLQotICAgIENvbGRGaXJlOiBGaXggTTUzMDE3RVZCIGZsYXNoIHNpemUKLQotICAgIEluY3JlYXNlIHRoZSBmbGFzaCBzaXplIGZyb20gOE1CIHRvIDE2TUIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLQotY29tbWl0IGJmOWE1MjE1MjllNDg0YjE1ZThmZGI1ODNhNjA3Y2Y3OTQ1ZDJmNmIKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotRGF0ZToJRnJpIEp1biAxMiAxMToyOTowMCAyMDA5ICswMDAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE01MjA4RVZCIGFuZCBNQ0Y1MjB4IENQVSBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA3MDliMzg0YjY0OTNkOTcyNmRjZTIwNjYzZWJlMzFiZjdjYWIyOTI1Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLURhdGU6CVRodSBKdW4gMTEgMTU6Mzk6NTcgMjAwOSArMDAwMAotCi0gICAgQ29sZEZpcmU6IFVwZGF0ZSBmb3IgTTU0NDUxRVZCCi0KLSAgICBVcGRhdGUgc2VyaWFsIGJvb3QgRFJBTSdzIEludGVybmFsIFJBTSwgdmVjdG9yIHRhYmxlIGFuZCBEUkFNIGluCi0gICAgc3RhcnQuUywgc2VyaWFsIGZsYXNoJ3MgcmVhZCBzdGF0dXMgY29tbWFuZCBvdmVyIFNQSSBhbmQgTk9SCi0gICAgZmxhc2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDx0c2ljbGlld0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBiYmY2YmJmZmNhZjY5NGMwMzUwNGM2NjFlNThmYmQxYWVmZTViZjY0Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPHRzaWNsaWV3QGdtYWlsLmNvbT4KLURhdGU6CVRodSBKdW4gMTEgMTI6NTA6MDUgMjAwOSArMDAwMAotCi0gICAgQ29sZEZpcmU6IFVwZGF0ZSBjb25maWd1cmF0aW9uIGZpbGUgdG8gdXNlIGZsYXNoIGJ1ZmZlciB3cml0ZQotCi0gICAgVXBkYXRlIE01MjI3N0VWQiwgTTUzMDE3RVZCIGFuZCBNNTQ0NTVFVkIgcGxhdGZvcm0gY29uZmlndXJhdGlvbgotICAgIGZpbGUgdG8gdXNlIGZsYXNoIGJ1ZmZlciB3cml0ZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8dHNpY2xpZXdAZ21haWwuY29tPgotCi1jb21taXQgN2Q0NDUwYTk3NzM2NzMwNTJmY2Q3ZmRmMGE0YTg4YzA4OTEyNmFjMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo1MyAyMDA5ICswMjAwCi0KLSAgICBtcGM1MTIxYWRzOiBhZGQgSkZGUzIgYW5kIE1URFBBUlRTIHN1cHBvcnQ7IGFkanVzdCBmbGFzaCBtYXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxZjFmODJmM2RlMTY2MGYzOThiZjQyYmZkNzA5Yjk4NTk1ODJjZTVlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVuIDE0IDIwOjU4OjUyIDIwMDkgKzAyMDAKLQotICAgIGFyaWE6IGFkZCBKRkZTMiBhbmQgTVREUEFSVFMgc3VwcG9ydDsgYWRqdXN0IGZsYXNoIG1hcAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGE2ZDZkNDZhNGZlZjg3NjQ1NWUxMWI0NWVkNjk5YzBmYjNiZDFjYTEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMTQgMjA6NTg6NTEgMjAwOSArMDIwMAotCi0gICAgYXJpYTogZW5hYmxlIE5BTkQgZmxhc2ggc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDEzOTQ2OTI1ZTg1MGRiNTM1MTk4MmFjYjY5MWQ1MTcxNmZjNzU0ZTIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMTQgMjA6NTg6NTAgMjAwOSArMDIwMAotCi0gICAgTVBDNTEyeDogZml4IHR5cG8gaW4gY29tbWVudCBsaXN0aW5nIHRoZSBOQU5EIGRyaXZlciBuYW1lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDJjYTZmNzRkMDk2NTNmODA0MWI1MmNhZmQwZDY1MGZkYzJhNTZjNTEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMTQgMjA6NTg6NDkgMjAwOSArMDIwMAotCi0gICAgbWVjcDUxMjM6IGNsZWFudXAgLSByZW1vdmUgZGVhZCBjb2RlCi0KLSAgICBSZW1vdmUgZGVhZCBjb2RlIHRoYXQgd2FzIG9idmlvdXNseSBhIGxlZnQtb3ZlciBmcm9tIGNvcHkgJiBwYXN0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgMjU2NzFjODY3MmYyZDdiMzk1NTU0MTZhNmI3YTZiN2IzOWI4MTBiZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo0OCAyMDA5ICswMjAwCi0KLSAgICBhcmlhOiBhZGp1c3QgbWVtb3J5IGNvbnRyb2xsZXIgaW5pdGlhbGl6YXRpb24KLQotICAgIE5lZWRlZCBmb3IgUmV2LiAyIHNpbGljb24gYXQgNDAwIE1IegotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDc2MjlmMWMwNmI2ZGVhMzZiYmM3YmY3MDgyMGI4MjRlOWI2ZDIyMjcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMTQgMjA6NTg6NDcgMjAwOSArMDIwMAotCi0gICAgTVBDNTEyeDogZmFjdG9yIG91dCBjb21tb24gY29kZQotCi0gICAgTm93IHRoYXQgd2UgaGF2ZSAzIGJvYXJkcyBmb3IgdGhlIE1QQzUxMnggaXQgdHVybnMgb3V0IHRoYXQgdGhleSBhbGwKLSAgICB1c2UgdGhlIHZlcnkgc2FtZSBmaXhlZF9zZHJhbSgpIGNvZGUuCi0KLSAgICBUaGlzIHBhdGNoIGZhY3RvcnMgb3V0IHRoaXMgY29tbW9uIGNvZGUgaW50byBjcHUvbXBjNTEyeC9maXhlZF9zZHJhbS5jCi0gICAgYW5kIGFkZHMgYSBuZXcgaGVhZGVyIGZpbGUsIGluY2x1ZGUvYXNtLXBwYy9tcGM1MTJ4LmgsIHdpdGggc29tZQotICAgIG1hY3JvcywgaW5saW5lIGZ1bmN0aW9ucyBhbmQgcHJvdG90eXBlIGRlZmluaXRpb25zIHNwZWNpZmljIHRvIE1QQzUxMngKLSAgICBzeXN0ZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCAwNTQ5MzUzYTZiYTVhYTAzNDIwYzA5NjJiOTA3MmU5Y2YxZmE0OWQ5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVuIDE0IDIwOjU4OjQ2IDIwMDkgKzAyMDAKLQotICAgIG1lY3A1MTIzOiBmaXggYnVpbGQgZXJyb3IKLQotICAgIFRoZSBtZWNwNTEyMyBib2FyZCBkaWQgbm90IGNvbXBpbGUgYmVjYXVzZSB0aGUgTVNDQU4gQ2xvY2sgQ29udHJvbAotICAgIFJlZ2lzdGVycyB3ZXJlIG1pc3Npbmc7IHRoZXNlIGdvdCBhZGRlZCwgYnV0IGFzIGFuIGFycmF5IGluc3RlYWQKLSAgICBvZiA0IGluZGl2aWR1YWwgcmVnaXN0ZXJzLiBBZGFwdCB0aGUgY29kZSBzbyBpdCBidWlsZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGE5OTA1ZGI1ZDI5YTU2YWVkZDdkYjViY2I1NmIwMzg1ODczYWE2YTMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdW4gMTQgMjA6NTg6NDUgMjAwOSArMDIwMAotCi0gICAgTVBDNTEyeDogQWRkIE1TQ0FOMS4uLjQgQ2xvY2sgQ29udHJvbCBSZWdpc3RlcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgZjU0ODljNDIwMGIzN2M5YTFkNmRiZGUxMTZmNWFkYzA1Mzk2MTBkZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1biAxNCAyMDo1ODo0NCAyMDA5ICswMjAwCi0KLSAgICBNUEM1MTJ4OiBlbmFibGluZyBOQU5EIHN1cHBvcnQgcmVxdWlyZXMgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URgotCi0gICAgV2hlbiBlbmFibGluZyBOQU5EIHN1cHBvcnQgZm9yIGEgYm9hcmQsIG9uZSBtdXN0IGFsc28gZGVmaW5lCi0gICAgQ09ORklHX1NZU182NEJJVF9WU1BSSU5URiBiZWNhdXNlIHRoaXMgaXMgbmVlZGVkIGluIG5hbmRfdXRpbC5jCi0gICAgZm9yIGNvcnJlY3Qgb3V0cHV0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBiNGRiNGE3NjM4ZWY5MGNmMGFhY2Y3Yjk1NGQ5YmYzMDQzZGRhNzgwCi1BdXRob3I6IFBvLVl1IENodWFuZyA8cmF0YmVydEBmYXJhZGF5LXRlY2guY29tPgotRGF0ZToJRnJpIEp1bCAxMCAxODowMzo1NyAyMDA5ICswODAwCi0KLSAgICBpc3N1ZSB3cml0ZSBjb21tYW5kIHRvIGJhc2UgZm9yIEpFREVDIGZsYXNoCi0KLSAgICBGb3IgSkVERUMgZmxhc2gsIHdlIHNob3VsZCBpc3N1ZSB3b3JkIHByb2dyYW1taW5nIGNvbW1hbmQgcmVsYXRpdmUgdG8KLSAgICBiYXNlIGFkZHJlc3MgcmF0aGVyIHRoYW4gc2VjdG9yIGJhc2UgYWRkcmVzcy4gT3JpZ2luYWwgc291cmNlIG1ha2VzCi0gICAgU1NUIEZsYXNoIGZhaWxzIHRvIHByb2dyYW0gc2VjdG9ycyB3aGljaCBhcmUgbm90IG9uIHRoZSAweDEwMDAwIGJvdW5kYXJpZXMuCi0KLSAgICBlLmcuCi0gICAgU1NUMzlMRjA0MCB1c2VzIGFkZHIxPTB4NTU1NSBhbmQgYWRkcjI9MHgyQUFBLCBob3dldmVyLCBlYWNoIHNlY3RvcgotICAgIGlzIDB4MTAwMCBieXRlcy4KLQotICAgIFRodXMsIGlmIHdlIGlzc3VlIGNvbW1hbmQgdG8gInNlY3RvciBiYXNlICgweDQxMDAwKSArIG9mZnNldCgweDU1NTUpIiwKLSAgICBpdCBzZW5kcyB0byAweDQ2NTU1IGFuZCB0aGUgY2hpcCBmYWlscyB0byByZWNvZ25pemUgdGhhdCBhZGRyZXNzLgotCi0gICAgVGhpcyBwYXRjaCBpcyB0ZXN0ZWQgd2l0aCBTU1QzOUxGMDQwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUG8tWXUgQ2h1YW5nIDxyYXRiZXJ0QGZhcmFkYXktdGVjaC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTg2OTIyNzE0ZmZkMjFhZDM5ZjQ4NTIyZDI4NWZmZmM3YWVkNTZiMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1heSAyIDExOjUzOjUwIDIwMDkgKzAyMDAKLQotICAgIHZlcnNhdGlsZTogdXBkYXRlIGNvbmZpZyBhbmQgbWVyZ2UgdG8gY2ZpIGZsYXNoIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotICAgIENjOiBDYXRhbGluIE1hcmluYXMgPGNhdGFsaW4ubWFyaW5hc0Bhcm0uY29tPgotCi1jb21taXQgZDZlOGVkODMyYjI1ZDVkYjRmZGQzZmI5MWU3MzAyOGU0OTRkY2Q2ZQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1heSAyIDExOjUzOjQ5IDIwMDkgKzAyMDAKLQotICAgIHZlcnNhdGlsZTogc3BlY2lmeSB0aGUgYm9hcmQgdHlwZSBvbiB0aGUgcHJvbXB0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci0gICAgQ2M6IENhdGFsaW4gTWFyaW5hcyA8Y2F0YWxpbi5tYXJpbmFzQGFybS5jb20+Ci0KLWNvbW1pdCA1Y2NjMmQ5OWQ2MWM4MTgwNTM0OGIwY2Q5Zjc5NzMxYjI3MWY3ZGFmCi1BdXRob3I6IFNlZGppIEdhb3Vhb3UgPHNlZGppLmdhb3Vhb3VAYXRtZWwuY29tPgotRGF0ZToJVGh1IEp1biAyNSAxNzowNDoxNSAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiBJbnRyb2R1Y3Rpb24gb2YgYXQ5MXNhbTlnMTAgU09DLgotCi0gICAgQVQ5MXNhbTlnMTAgaXMgYW4gQVJNIDkyNmVqLXMgU09DLiBJdCBpcyBhbiBldm9sdXRpb24gb2YgdGhlIGF0OTFzYW05MjYxIHdpdGggYQotICAgIGZhc3RlciBjbG9jayBzcGVlZDogMjY2LzEzM01Iei4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlZGppIEdhb3Vhb3UgPHNlZGppLmdhb3Vhb3VAYXRtZWwuY29tPgotCi1jb21taXQgMjJlZTY0NzM4MGM0MmY0NDUyOGY5OWI3YzFiNDIzNzI1ZTU0MjEwMgotQXV0aG9yOiBTZWRqaSBHYW91YW91IDxzZWRqaS5nYW91YW91QGF0bWVsLmNvbT4KLURhdGU6CVRodSBKdWwgOSAxMDoxNjoyOSAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiBJbnRyb2R1Y3Rpb24gb2YgYXQ5MXNhbTlnNDUgU09DLgotCi0gICAgQVQ5MXNhbTlnNDUgc2VyaWVzIGlzIGFuIEFSTSA5MjZlai1zIFNPQyBmYW1pbHkgY2xvY2tlZCBhdCA0MDAvMTMzTUh6LgotICAgIEl0IGVtYmVkcyBVU0IgaGlnaCBzcGVlZCBob3N0IGFuZCBkZXZpY2UsIExDRCwgRERSMiBSQU0sIGFuZCBhIGZ1bGwgc2V0IG9mCi0gICAgcGVyaXBoZXJhbHMuCi0KLSAgICBUaGUgZmlyc3QgYm9hcmQgdGhhdCBlbWJlZHMgYXQ5MXNhbTlnNDUgY2hpcCBpcyB0aGUgQVQ5MVNBTTlHNDUtRUtFUy4KLSAgICBPbiB0aGUgYm9hcmQgeW91IGNhbiBmaW5kIDIgVVNBUlQsIFVTQiBoaWdoIHNwZWVkLAotICAgIGEgNDgwKjI3MiBMRyBsY2QsIGV0aGVybmV0LCBncGlvL2pveXN0aWNrL2J1dHRvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZWRqaSBHYW91YW91IDxzZWRqaS5nYW91YW91QGF0bWVsLmNvbT4KLQotY29tbWl0IGMzM2M1OTkwY2VjN2NlZDllZjFlZjE0OGRlYmJjYTM0YWRhZmExMmIKLUF1dGhvcjogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KLURhdGU6CVR1ZSBKdW4gMjMgMTc6MzA6MDUgMjAwOSArMDIwMAotCi0gICAgcHhhOiBmaXggQ0tFTl9CIHJlZ2lzdGVyIGJpdHMKLQotICAgIFRoZSBjdXJyZW50IGRlZml0aW9uIGZvciBDS0VOX0IgcmVnaXN0ZXIgYml0cyBpcyBub25zZW5zZS4gQWRkaW5nIDMyIHRvCi0gICAgdGhlIHNoaWZ0ZWQgdmFsdWUgaXMgZXF1YWwgdG8gJ3wgKDEgPDwgNSknLCBhbmQgdGhpcyBiaXQgaXMgbWFya2VkCi0gICAgJ3Jlc2VydmVkJyBpbiB0aGUgUFhBIGRvY3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgotCi1jb21taXQgYmQ4NzZiZTQ2ZjI4YjVmYzI4OTY1MzdmNmQwMTM1M2YzMzI3ODlmNwotQXV0aG9yOiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgotRGF0ZToJVHVlIEp1biAyMyAxNzozMDowNCAyMDA5ICswMjAwCi0KLSAgICBweGE6IGFkZCBjbG9jayBmb3Igc3lzdGVtIGJ1cyAyIGFyYml0ZXIKLQotICAgIFRoaXMgY2xvY2sgaXMgbmVlZGVkIGZvciBzeXN0ZW1zIHVzaW5nIHRoZSBVU0IyIGRldmljZSB1bml0IG9yIHRoZSAyZAotICAgIGdyYXBoaWNzIGFjY2VsZXJhdG9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KLQotY29tbWl0IGIwMTYwMDBhOTU1MTRjMDhjYWI1MGUxY2JhMDBiMDE5YzA4MDFiYzQKLUF1dGhvcjogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgotRGF0ZToJV2VkIEp1bCA4IDAwOjMwOjAxIDIwMDkgKzAzMDAKLQotICAgIE9NQVAzIHBhbmRvcmE6IEZpeCBDS0UxIE1VWCBzZXR0aW5nIHRvIGFsbG93IHNlbGYtcmVmcmVzaAotCi0gICAgUGFuZG9yYSBpcyB1c2luZyBib3RoIFNEUkMgQ1Nlcy4gVGhlIE1VWCBzZXR0aW5nIGlzIG5lZWRlZAotICAgIGZvciB0aGUgc2Vjb25kIENTIGNsb2NrIHNpZ25hbCB0byBhbGxvdyB0aGUgMiBSQU0gcGFydHMgdG8KLSAgICBiZSBwdXQgaW4gc2VsZi1yZWZyZXNoIGNvcnJlY3RseS4KLQotICAgIEJhc2VkIG9uIHNpbWlsYXIgcGF0Y2ggZm9yIGJlYWdsZSBhbmQgb3Zlcm8gYnkKLSAgICBKZWFuIFBpaGV0IGFuZCBTdGV2ZSBTYWtvbWFuLgotCi1jb21taXQgODY3MmMyODg3MDNmM2M1MWM4Mjk4NTFjOGZlNjYwOGM3ODY5ZmFhYQotQXV0aG9yOiBHcmF6dnlkYXMgSWdub3RhcyA8bm90YXNhc0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgSnVsIDggMDA6MzA6MDAgMjAwOSArMDMwMAotCi0gICAgT01BUDMgcGFuZG9yYTogc2V0dXAgcHVsbHMgZm9yIHZhcmlvdXMgR1BJT3MKLQotICAgIFNldCBwdWxsdXBzIG9yIHB1bGxkb3ducyBmb3IgR1BJT3Mgd2hpY2ggbmVlZCB0aGVtLgotICAgIERpc2FibGUgdGhlbSBmb3Igb3RoZXJzLCB3aGljaCBoYXZlIGV4dGVybmFsIHB1bGxzLgotICAgIEFsc28gbWFrZSBkaXNhYmxlZCBwdWxsIHNldHRpbmcgY29uc2lzdGVudCAoc29tZSBwaW5zIGhhZAotICAgIHR5cGUgc2V0IHRvICJ1cCIgZXZlbiBpZiBwdWxsIHR5cGUgc2VsZWN0aW9uIHdhcyBkaXNhYmxlZCkuCi0KLWNvbW1pdCA1ZmY3ODEyMmYyMjk5NDY4NjJhM2Y2N2EyZjUwYTMyOWU4ZTFiY2Y1Ci1BdXRob3I6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBKdWwgOCAwMDoyOTo1OSAyMDA5ICswMzAwCi0KLSAgICBPTUFQMyBwYW5kb3JhOiBzZXR1cCBwaW4gbXV4IGZvciBwaW5zIHVzZWQgb24gcmV2MyBib2FyZHMKLQotICAgIFNldHVwIHBpbiBtdXggZm9yIEdQSU8gcGlucyBjb25uZWN0ZWQgb24gcmV2MyBvciBsYXRlcgotICAgIGJvYXJkcy4gQWxzbyBjaGFuZ2UgTlVCMiBJUlEgcGluLiBUaGlzIHNob3VsZCBub3QgYWZmZWN0Ci0gICAgb2xkZXIgYm9hcmRzIGJlY2F1c2UgdGhleSBkb24ndCBoYXZlIGFueSBudWJzIChhbmFsb2cKLSAgICBjb250cm9sbGVycykgYXR0YWNoZWQgdG8gdGhlbS4KLQotY29tbWl0IDY3Yzk3YzM0NmIyN2M1ODZhNzI2MzU2NGY3YWZmZjZkMWY4ZDhkMGEKLUF1dGhvcjogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgotRGF0ZToJV2VkIEp1bCA4IDAwOjI5OjU4IDIwMDkgKzAzMDAKLQotICAgIE9NQVAzIHBhbmRvcmE6IHBpbiBtdXggY2xlYW51cAotCi0gICAgUmVtb3ZlIGNvbmZpZ3VyYXRpb24gb2Ygbm90IHVudXNlZCBwaW5zLCBlZmZlY3RpdmVseQotICAgIGxlYXZpbmcgdGhlbSBpbiBzYWZlIG1vZGUuCi0KLWNvbW1pdCBiOTk2MTY1ZjVhMTYyM2EwNTVjMDNiMjJkNjRkNmQ1ZGE4MTgzNWQwCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBKdWwgNiAxNTo1MDo0NyAyMDA5ICswNTMwCi0KLSAgICBhcm06IEtpcmt3b29kOiBidWdmaXg6IFVBUlQxIGJhciBjb3JyZWN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA1MDI0M2UzZTdhOTZhOTZjNTQxOGNlNmM5MGI3MjUyZDI2ZmRkNWIwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgSnVsIDcgMTU6NDg6NTggMjAwOSAtMDUwMAotCi0gICAgdXNiOiBGaXggY29tcGlsZXIgd2FybmluZyB3aXRoIGdjYzQuNAotCi0gICAgZWhjaS1oY2QuYzogSW4gZnVuY3Rpb24gJ2VoY2lfc3VibWl0X3Jvb3QnOgotICAgIGVoY2ktaGNkLmM6NzE5OiB3YXJuaW5nOiB2YWx1ZSBjb21wdXRlZCBpcyBub3QgdXNlZAotICAgIGVoY2ktaGNkLmM6NzQ4OiB3YXJuaW5nOiB2YWx1ZSBjb21wdXRlZCBpcyBub3QgdXNlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDA0MzY2ZDA3MGExYTNmN2FmZmRkZjE1YWFhZWE4N2JjZjQ0Y2RiYjAKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJV2VkIEp1bCA4IDExOjQyOjE5IDIwMDkgKzA5MDAKLQotICAgIHNoOiBVcGRhdGUgcGNpIGNvbmZpZyBmb3IgUmVuZXNhcyByNzc4MG1wIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA3NGQ5YzE2YTY4MWFhMjRiYjQxMjUxOTFmZTM5ZGM3Yzc1Y2RlNTZhCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVRodSBKdW4gMjUgMTY6MzE6MjYgMjAwOSArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IEVTUFQtR0lHQSBib3JhZAotCi0gICAgRVNQVC1HaWdhIGlzIFNINzc2My1iYXNlZCByZWZlcmVuY2UgYm9hcmQuCi0gICAgQm9hcmQgc3VwcG9ydCBpcyByZWxhdGl2ZWx5IHNwYXJzZSwgcHJlc2VudGx5IHN1cHBvcnRpbmcgc2VyaWFsLAotICAgIGdpZ2FiaXQgZXRoZXJuZXQsIFVTQiBob3N0LCBhbmQgTVRELgotCi0gICAgTW9yZSBpbmZvcm1hdGlvbiAoaW4gSmFwYW5lc2UpIGF2YWlsYWJsZSBhdDoKLSAgICBodHRwOi8vd3d3LmNlbnRlLmpwL3Byb2R1Y3QvY2VudGVfaGFyZC9FU1BULUdpZ2EuaHRtbAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGRhZTRlMDE0OGExMTQ2YTU2MTAwMjVhZTRiNDQ1ZTg0MTQxMGI2NTkKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CUZyaSBKdWwgMyAxNjowNjozNyAyMDA5ICswMjAwCi0KLSAgICBBZGQgRVNEIFBDSSB2ZW5kb3IgSUQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0KLWNvbW1pdCA4NzZiM2NlZjUzN2FhYjJjYmE4YzE5NTA1ZGIyODc2ZjYwNTdmODE4Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gSnVuIDIyIDE4OjAxOjQxIDIwMDkgLTA1MDAKLQotICAgIGFwaV9leGFtcGxlcy9NYWtlZmlsZTogR2VuZXJhbCBjbGVhbnVwCi0KLSAgICAqIFJlbW92ZSBzeW1saW5raW5nIG9mIGZpbGVzIGxvY2F0ZWQgb3V0c2lkZSBhcGlfZXhhbXBsZXMvCi0KLSAgICAqIEF1dG8gZ2VuZXJhdGUgZGVwZW5kZW5jaWVzIGZvciBmaWxlcyBsb2NhdGVkIG91dHNpZGUgYXBpX2V4YW1wbGVzLwotCi0gICAgKiBVcGRhdGUgbmFtZXMgb2YgdmFyaWFibGVzIHRvIGJlIHNpbWlsYXIgdG8gdGhvc2UgaW4gdG9vbHMvTWFrZWZpbGUKLQotICAgICogRml4IG91dCBvZiB0cmVlIGJ1aWxkIGVycm9yCi0gICAgICBEZXBlbmRlbmNpZXMgYXJlIGNhbGN1bGF0ZWQgZm9yIGFsbCBmaWxlcyBpbiB0aGUgU1JDUyB2YXJpYWJsZS4KLSAgICAgIFByZXZpb3VzbHksIHRoZSBTUkNTIHZhcmlhYmxlIGNvbnRhaW5lZCBmaWxlcyB3aGljaCB3ZXJlIHN5bWxpbmtlZAotICAgICAgaW50byB0aGUgYXBpX2V4YW1wbGVzLyBkaXJlY3RvcnkuICBUaGVzZSBzeW1saW5rZWQgZmlsZXMgZGlkIG5vdCBleGlzdAotICAgICAgd2hlbiBkZXBlbmRlbmNpZXMgd2VyZSBjYWxjdWxhdGVkIHdoZW4gYnVpbGRpbmcgb3V0IG9mIHRyZWUuICBUaGlzCi0gICAgICByZXN1bHRlZCBpbiBlcnJvcnMgc3VjaCBhczoKLQltYWtlWzFdOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCBgL3dvcmsvd2QvdG1wLXBwYy9hcGlfZXhhbXBsZXMvLmRlcGVuZCcsIG5lZWRlZCBieSBgX2RlcGVuZCcuICBTdG9wLgotCW1ha2VbMV06IExlYXZpbmcgZGlyZWN0b3J5IGAvaG9tZS93ZC9naXQvdS1ib290L3dvcmsvYXBpX2V4YW1wbGVzJwotCW1ha2U6ICoqKiBbZGVwZW5kXSBFcnJvciAyCi0KLSAgICAgIFNpbmNlIHN5bWxpbmtlZCBzb3VyY2UgZmlsZXMgYXJlIG5vIGxvbmdlciB1c2VkLCB0aGlzIGJ1ZyBubyBsb25nZXIKLSAgICAgIGV4aXN0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA1MjJmNmYwMmFkYjkzMTk0ZTMzNzAxNmZlMmU0ZTUzYzU4ZDVkNWVhCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gSnVuIDIyIDE4OjAxOjQwIDIwMDkgLTA1MDAKLQotICAgIGFwaV9leGFtcGxlcy9NYWtlZmlsZTogR2V0IHJpZCBvZiB1bm5lY2Vzc2FyeSBpbnRlcm1lZGlhdGUgTElCIHRhcmdldAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDExN2QwYWI1ZTZmM2IzZGQ0OGZjMzQ2ZGY0OTE5NTU1YTc4YWZkMzkKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBKdW4gMjIgMTg6MDE6MzkgMjAwOSAtMDUwMAotCi0gICAgYXBpX2V4YW1wbGVzL01ha2VmaWxlOiBDb21iaW5lIEVMRiBhbmQgQklOIHRhcmdldHMKLQotICAgIENvbWJpbmluZyB0aGUgdHdvIHJ1bGVzIGNsZWFucyB1cCB0aGUgTWFrZWZpbGUgYSBiaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA2NDRjYjM4MTA4YjhkYzIyZTBlZjNjZjVmNDA0ZmUzMTBkMTk5NWY4Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gSnVuIDIyIDE4OjAxOjM4IDIwMDkgLTA1MDAKLQotICAgIGFwaV9leGFtcGxlcy9NYWtlZmlsZTogU3BsaXQgdXAgdmFyaWFibGUgZGVjbGFyYXRpb25zCi0KLSAgICBUaGlzIGNsZWFucyB1cCB0aGUgTWFrZWZpbGUgYSBiaXQgYW5kIHNpbXBsaWZpZXMgZnV0dXJlIGNoYW5nZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA4OTBkMjQyZmFjYzQwNzllZDIxZTk3OWNlZDJlOGM2ZDY5NzRmNmQzCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVuIDE5IDE0OjEwOjUyIDIwMDkgLTA1MDAKLQotICAgIHJlbW92ZSBfSU9fQkFTRSBhbmQgS1NFRzFBRERSIGZyb20gYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlcwotCi0gICAgVGhlIEtTRUcxQUREUiBtYWNybyB1c2VkIHRvIGJlIG5lY2Vzc2FyeSBmb3IgdGhlIFJUTDgxMzkgRXRoZXJuZXQKLSAgICBkcml2ZXIsIGJ1dCB0aGUgY29kZSB0aGF0IHVzZWQgdGhhdCBtYWNybyB3YXMgcmVtb3ZlZCBvdmVyIGEgeWVhcgotICAgIGFnbywgc28gYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlcyBubyBsb25nZXIgbmVlZCB0byBkZWZpbmUgaXQuCi0KLSAgICBUaGUgX0lPX0JBU0UgbWFjcm8gaXMgYWxzbyBhdXRvbWF0aWNhbGx5IGRlZmluZWQgdG8gMCBpZiBpdCBpc24ndAotICAgIGFscmVhZHkgc2V0LCBzbyB0aGVyZSdzIG5vIG5lZWQgdG8gZGVmaW5lIHRoYXQgbWFjcm8gZWl0aGVyIGluIHRoZQotICAgIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzk5Njk5NDdhNDY4N2RlOTBlMmJiNThlNzY4NDJiNDkxYWEwZTBiOQotQXV0aG9yOiBKb24gU21pcmwgPGpvbnNtaXJsQGdtYWlsLmNvbT4KLURhdGU6CVN1biBKdW4gMTQgMTg6MjE6MjggMjAwOSAtMDQwMAotCi0gICAgYm9hcmQgc3VwcG9ydCBwYXRjaCBmb3IgcGh5Q09SRS1NUEM1MjAwQi10aW55Ci0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIFBoeXRlYyBwaHlDT1JFLU1QQzUyMDBCLXRpbnkuCi0gICAgQ29kZSBvcmlnaW5hbGx5IGZyb20gUGVuZ3V0cm9uaXguZGUuCi0gICAgQ3JlYXRlZCBDT05GSUdfU1lTX0FUQV9DU19PTl9USU1FUjAxIGRlZmluZSBmb3Igd2hlbiBJREUgQ1MgaXMgb24KLSAgICBUaW1lciAwLzEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgotICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA3YmQ0OWFkMTJjYzM2YTRkZTY5OTVkZGFiYmM2NWZmYTFhYTE5MzNkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBKdW4gMTUgMTM6Mzc6MjAgMjAwOSAtMDQwMAotCi0gICAga2FsbHN5bXM6IGZpeCBlc2NhcGluZyBvZiBOVUwgY2hhciBpbiBzdHJpbmdzCi0KLSAgICBUaGUgY3VycmVudCBrYWxsc3ltcyBjb2RlIGlzIHVzaW5nIFxcMCB0byBlc2NhcGUgdGhlIGJhY2tzbGFzaCBpbiB0aGUgYXdrCi0gICAgY29kZSwgYnV0IHRoZSBzaGVsbCB0b28gbmVlZHMgZXNjYXBpbmcuICBUaGlzIHdheSB3ZSBtYWtlIHN1cmUgZ2NjIGlzCi0gICAgcGFzc2VkIHRoZSBcMC4gIFRoZW4gZ2NjIGl0c2VsZiB3aWxsIGNvbnN1bWUgdGhpcyBhcyBhbiBvY3RhbCwgc28gd2UgaGF2ZQotICAgIHRvIHVzZSAwMDAgc28gZ2NjIHdpbGwgY3JlYXRlIHRoZSBmaW5hbCBOVUwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBlZDU0MGYwN2I4YWQ4NjkwOTcwNGU5ODA2YzE3NjI0NjJjYjQ5OTVhCi1BdXRob3I6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+Ci1EYXRlOglGcmkgSnVuIDI2IDEwOjE4OjQ5IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBjbS1iZjU2MTogYWRkIGV4YW1wbGUgc2V0dGluZ3MgZm9yIEVYVC1CRjV4eC1VU0ItRVRIMiBhZGQtb24KLQotICAgIFRoZSBjbS1iZjU2MSBtb2R1bGUgY2FuIGVhc2lseSBob29rIHVwIHRvIHRoZSBFWFQtQkY1eHgtVVNCLUVUSDIgZXh0ZW5kZXIKLSAgICBib2FyZCwgc28gYWRkIGEgc2ltcGxlIGV4YW1wbGUgb2YgaG93IHRvIGRvIHRoYXQgaW4gdGhlIGJvYXJkIGNvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBLcmFwZmVuYmF1ZXIgPEhhcmFsZC5LcmFwZmVuYmF1ZXJAYmx1ZXRlY2huaXguYXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZjhiZjU0YjQwODFjM2MzZDUxODgzMGRmMDAxN2EyM2VjNjcyYTg0MQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSnVuIDI1IDE5OjQwOjI4IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBibGFja3N0YW1wOiB1cGRhdGUgc3BpIGZsYXNoIHNldHRpbmdzCi0KLSAgICBUaGUgbGF0ZXN0IGJsYWNrc3RhbXAgYm9hcmRzIGNhbiBvbmx5IHJ1biB0aGUgU1BJIGZsYXNoIGF0IDE1TUh6IGJlZm9yZQotICAgIHRoZXkgc3RhcnQgdG8gY3JhcCBvdXQsIHNvIGxvd2VyIHRoZSBtYXggc3BlZWRzIGFjY29yZGluZ2x5LiAgVGhlIG5ldyBTUEkKLSAgICBmbGFzaCBhbHNvIGhhcyBkaWZmZXJlbnQgc2VjdG9yIHJlcXVpcmVtZW50cywgc28gdXBkYXRlIHRoZSBlbnZpcm9ubWVudAotICAgIHNpemVzIGFzIHdlbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyODYwNzBkZGM4MzM5NjY2YzA5YmQ3OTEyZTk2MGI4NTBhOGEwMzE4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBPY3QgNiAwMzozMTo1MiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYWRkIGNhY2hlX2R1bXAgY29tbWFuZHMKLQotICAgIEEgZmV3IGRlYnVnLXR5cGUgY29tbWFuZHMgdXNlZCB0byBkdW1wIHRoZSByYXcgaWNhY2hlL2RjYWNoZSBkYXRhLglVc2VmdWwKLSAgICB3aGVuIHRyeWluZyB0byB0cmFjayBkb3duIGNhY2hlLXJlbGF0ZWQgYnVncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDYzMmU5YjY3MWVmYjBhNmM5MDA0OTlmN2E0OWZlNWI2MzI5MmI1ZmMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CVdlZCBKdWwgOCAxNTozMTo1NyAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFNldCBkZWZhdWx0IFBDSSBkZXZpY2UgSUQgZm9yIDQwNUVQIGJvYXJkcwotCi0gICAgQ3VycmVudCBjb2RlIG9ubHkgc2V0cyB0aGUgUENJIHZlbmRvciBpZCB0byAweDEwMTQgYW5kCi0gICAgbGVhdmVkIGRldmljZSBpZCB0byAweDAwMDAuCi0KLSAgICBUaHMgcGF0Y2ggLi4uLgotICAgIGEpIHVzZXMgdGhlIGNvcnJlY3QgUENJX1ZFTkRPUl9JRF9JQk0gbWFjcm8gZm9yIHRoaXMKLSAgICBiKSBzZXRzIHRoZSBkZWZhdWx0IGRldmljZSBJRCBhcyBzdGF0ZWQgaW4gdGhlIFVNIHRvIDB4MDE1NgotICAgICAgIGJ5IHVzaW5nIFBDSV9ERVZJQ0VfSURfSUJNXzQwNUdQIGZvciB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMjNmMTAyZWMwOTNmYmE2OTY3MDY2YWNkZjliZWI2MzdkZjJlMmQxCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglXZWQgSnVsIDggMTM6NDM6NTUgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBNb3ZlIDQwNUVQIHBjaSBjb2RlIGZyb20gY3B1X2luaXRfZigpIHRvIF9fcGNpX3ByZV9pbml0KCkKLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgc29tZSBiYXNpYyBQQ0kgaW5pdGlhbGlzYXRpb24gZnJvbSB0aGUgNHh4IGNwdV9pbml0X2YoKQotICAgIHRvIGNwdS9wcGM0eHgvNHh4X3BjaS5jLgotCi0gICAgVGhlIG9yaWdpbmFsIGNwdV9pbml0X2YoKSBmdW5jdGlvbiBlbmFibGVkIHRoZSA0MDVFUCdzIGludGVybmFsIGFyYml0ZXIKLSAgICBpbiBhbGwgc2l0dWF0aW9ucy4gQWxzbyB0aGUgSENFIGJpdCBpbiBjcGMwX3BjaSBpcyBhbHdheXMgc2V0LgotICAgIFRoZSBmaXJzdCBpcyBub3QgcmVhbGx5IHdhbnRlZCBmb3IgUENJIGFkYXB0ZXIgZGVzaWducyBhbmQgdGhlIGxhdHRlcgotICAgIGlzIGEgZ2VuZXJhbCBidWcgZm9yIFBDSSBhZGFwdGVyIFUtQm9vdHMuIEJlY2F1c2UgaXQgZW5hYmxlcwotICAgIFBDSSBjb25maWd1cmF0aW9uIGJ5IHRoZSBzeXN0ZW0gQ1BVIGV2ZW4gd2hlbiB0aGUgUENJIGNvbmZpZ3VyYXRpb24gaGFzCi0gICAgbm90IGJlZW4gc2V0dXAgYnkgdGhlIDQwNUVQLiBUaGUgb25lIGFuZCBvbmx5IGNvcnJlY3QgcGxhY2UgaXMKLSAgICBpbiBwY2lfNDA1Z3BfaW5pdCgpIChzZWUgIlNldCBIQ0UgYml0IiBjb21tZW50KS4KLQotICAgIFNvIGZvciBjb21wYXRpYmlsaXR5IHJlYXNvbnMgdGhlIGFyYml0ZXIgaXMgc3RpbGwgZW5hYmxlZCBpbiBhbnkgY2FzZSwKLSAgICBidXQgZnJvbSB3ZWFrIHBjaV9wcmVfaW5pdCgpIHNvIHRoYXQgaXQgY2FuIGJlIHJlcGxhY2VkIGJ5IGJvYXJkIHNwZWNpZmljCi0gICAgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzcxMTAzZjlkYzY2ZGZjY2U4YWQ2ZGY5NDIzNjQwNDNiZjI3YWRlOAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotRGF0ZToJV2VkIEp1bCA4IDEzOjQzOjIzIDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogTWFrZSBpc19wY2lfaG9zdCgpIGF2YWlsYWJsZSBmb3IgYWxsIDQ0MCBhbmQgNDA1IENQVXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMWQ4OTM3YTQ2OWJmZWI1NWNhMWY2ZDg5YTRlN2NkMmRmZWUzY2YxNwotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglNb24gSnVuIDI5IDIwOjU2OjQzIDIwMDkgKzA1MzAKLQotICAgIHVzYjogYWRkIE1hcnZlbGwgS2lya3dvb2QgZWhjaSBob3N0IGNvbnRyb2xsZXIgZHJpdmVyCi0KLSAgICBUaGlzIGRyaXZlciBpcyB0ZXN0ZWQgb24gU2hlZXZhcGx1ZyBwbGF0Zm9ybQotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZGI3YjQzZTQ2ODFmNmY5M2MzMzYxMzI3MDgxNTdhOGEwY2NhMWY4YgotQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI0IDEwOjA4OjQwIDIwMDkgKzA1MzAKLQotICAgIG1wYzgzeHg6IFVTQjogZml4OiBhY2Nlc3Mgb2YgZWhjaSBzdHJ1Y3QgZWxlbWVudHMKLQotICAgIEl0IGZpeGVzIHRoZSBhY2Nlc3MgdG8gdGhlICdlaGNpJyBzdHJ1Y3QgZWxlbWVudHMgZm9yIG1wYzgzeHggd2hpY2gKLSAgICBzaG91bGQgaGF2ZSBiZWVuIHRha2VuIGNhcmUgb2YgaW4gNGVmMDEwMTBhYTQ3OTljNzU5ZDc1ZTY3MDA3ZmRkM2EzOGM4OGM4YQotICAgIFNvcnJ5IGFib3V0IHRoYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCAwODA2NjE1MjczNTQxN2ZjNTVhNWM5ZGUyY2VjMDcxNGM1MjllNGYzCi1BdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdW4gMTkgMTc6NTY6MDAgMjAwOSArMDUzMAotCi0gICAgbXBjOHh4eDogVVNCOiBmaXg6IGFjY2VzcyBvZiBlaGNpIHN0cnVjdCBlbGVtZW50cwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgYWNjZXNzIHRvIHRoZSAnZWhjaScgc3RydWN0IGVsZW1lbnRzIHdoaWNoIHNob3VsZAotICAgIGhhdmUgYmVlbiB0YWtlbiBjYXJlIG9mZiBpbiA0ZWYwMTAxMGFhNDc5OWM3NTlkNzVlNjcwMDdmZGQzYTM4Yzg4YzhhCi0gICAgU29ycnkgYWJvdXQgdGhhdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGMzYTAxMmNlNjU4MThiZWIyNzQxOTVjZDQ3ZjMxZWQ4MGQwZmJhYTUKLUF1dGhvcjogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+Ci1EYXRlOglUdWUgSnVuIDE2IDA1OjI2OjI3IDIwMDkgLTA0MDAKLQotICAgIHVzYjogbXVzYjogYWRkIHRpbWVvdXQgdmlhIENPTkZJR19NVVNCX1RJTUVPVVQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDc5ODQ5NjdhOTQwNTY3MmRiMTU4MTQwMmQyYzJjZmFlMjY4ZDFhNjcKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIEp1biAxNiAwNToyNjoyNSAyMDA5IC0wNDAwCi0KLSAgICB1c2I6IG11c2I6IGRyb3Agb2xkIG11c2IgcmVhZC93cml0ZSBwcm90b3R5cGVzCi0KLSAgICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vIGxvbmdlciBkZWZpbmVkLCBzbyByZW1vdmUgdGhlaXIgcHJvdG90eXBlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDRlMDRmMTYwMjAxMTVhYjVjY2Y1MzE1OGUxMDBkZTU4YmNhZjI5YmQKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdW4gMTUgMTE6NTA6MDcgMjAwOSAtMDUwMAotCi0gICAgdXNiOiBmaXggQ09ORklHX1NZU19NUEM4M3h4X1VTQl9BRERSIG5vdCBkZWZpbmVkIGVycm9yCi0KLSAgICBmaXggYSBzdHJheSBDT05GSUdfTVBDODNYWCB0aGF0IGVzY2FwZWQgY29tbWl0Ci0gICAgMGY4OTg2MDQ5NDVhZjQ1NDNjMTUyNWZjMzNiNmJhZTYyMWEzYjgwNS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBiYzBkMzI5NmYxNzgwYjUwZTZiOTYzMGFlZTVlYjM2OGYyYWZiNmNiCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVR1ZSBKdW4gMzAgMjM6NDc6MzAgMjAwOSArMTAwMAotCi0gICAgYXNtLWdlbmVyaWM6IENvbnNvbGlkYXRlIGVycm5vLmggdG8gYXNtLWdlbmVyaWMvZXJybm8uaAotCi0gICAgVGhpcyBwYXRjaCB1c2UgYmxhY2tmaW4gZXJybm8uaCBpbXBsZW1lbnRhdGlvbiB3aGljaAotICAgIGNvcnJlc3BvbmQgTGludXgga2VybmVsIG9uZS4KLQotICAgIE1JUFMgaW1wbGVtZXRhdGlvbiBpcyBkaWZmZXJlbnQgdGhhdCdzIHdoeSBJIGtlZXAgaXQuCi0KLSAgICBJIHJlbW92ZWQgcHBjX2Vycm9yX25vLmggZnJvbSBNYXJ2ZWxsIGJvYXJkcyB3aGljaAotICAgIHdhcyB0aGUgc2FtZSB0b28uCi0KLSAgICBJIGhhdmUgZ290IGFjayBmcm9tIHBwYzQweCwgYmxhY2tmaW4sIGFybSwgY29sZGZpcmUgYW5kIGF2ciBjdXN0b2RpYW5zLgotCi0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCAyODk2YjU4NTFmMDQzMGJmMTY1MjkzNzZhNDE5MzYzMGU5NjZjNzg4Ci1BdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLURhdGU6CVR1ZSBKdWwgNyAxNjowMTowMiAyMDA5ICswMjAwCi0KLSAgICBDb21tYW5kIGltcHJvdmVtZW50cyBmb3IgdWJpZnMKLQotICAgIENoZWNrIHRoYXQgYW4gYXJndW1lbnQgaXMgcGFzc2VkIHRvIHViaWZzbW91bnQgYW5kIHRoYXQgYWRkcmVzc2VzIGFuZAotICAgIHNpemVzIGFyZSBhY3R1YWxseSBudW1iZXJzIGZvciB1Ymlmc2xvYWQuIEFsc28gaW1wcm92ZSB0aGUgaW5zdHJ1Y3Rpb25zCi0gICAgYSBiaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjVjOGY0MDA1OTc5YWIyZDE5MDcxM2JhMzQxZDk2YTVmYTkwNWNkYgotQXV0aG9yOiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci1EYXRlOglUdWUgSnVsIDcgMTY6NTk6NDYgMjAwOSArMDIwMAotCi0gICAgSGFuZGxlIFZJRCBoZWFkZXIgb2Zmc2V0IGluIHViaSBwYXJ0IGNvbW1hbmQKLQotICAgIFRoZSBWSUQgaGVhZGVyIG9mZnNldCBpcyBzb21ldGltZXMgbmVlZGVkIHRvIGluaXRpYWxpemUgdGhlIFVCSQotICAgIHBhcnRpdGlvbi4gVGhpcyBwYXRjaCBhZGRzIGl0IChvcHRpb25hbGx5KSB0byB0aGUgY29tbWFuZCBsaW5lCi0gICAgZm9yIHRoZSB1YmkgcGFydCBjb21tYW5kLgotCi0gICAgKExpbmVzIGhhdmUgYmVlbiBwcm9wZXJseSB3cmFwcGVkIHNpbmNlIGxhc3QgdmVyc2lvbikKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDM2NzJjZDVjM2I1M2QyMTlkMzMzNDVlZWJhZDRlMjVhZDViZjZkNTIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgOSAwOTo1NjoxNiAyMDA5ICswMjAwCi0KLSAgICBNQUlOVEFJTkVSUzogZml4IHNvcnRpbmcsIHJlbW92ZSBkdXBsaWNhdGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGVmYmYxNGU5YTIzOTRhMTU0YjEyNjQzZDRhMDExOTk0YjUwOTZiNWEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhlaWtvLnNjaG9jaGVyQGludml0ZWwuaHU+Ci1EYXRlOglXZWQgRGVjIDEwIDA4OjI3OjAxIDIwMDggKzAxMDAKLQotICAgIGFsbCBwbGF0Zm9ybXM6IG1ha2Ugc2hvd19ib290X3Byb2dyZXNzKCkgd29yayBhZ2FpbgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAyMDVhMDk4OGQ4ZmQ3NzhjNjA3NDZjMzRjMmYxN2RiZDJiN2NkMGQyCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBKdW4gMjkgMTU6MjU6MTggMjAwOSArMDUzMAotCi0gICAgbmFuZDogQWRkIE1hcnZlbGwgS2lya3dvb2QgTkFORCBkcml2ZXIKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIE5BTkQgZHJpdmVyIGZvciB0aGUgTWFydmVsbCBLaXJrd29vZCBTb0MncwotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIEFja2VkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA1ODBlNDhmNTNmOTcyNzgzZTU2ZmNlZGFkYjljZTZlNWIwYjZmMzIKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CU1vbiBKdWwgNiAxNjoyNzozMyAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IE1ha2UgcGxsX3dyaXRlIGdsb2JhbAotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyBwbGxfd3JpdGUgb24gUFBDNDA1RVAgYm9hcmRzCi0gICAgZ2xvYmFsIGFuZCBjYWxsYWJsZSBmcm9tIEMgY29kZS4KLQotICAgIHBsbF93cml0ZSBjYW4gYmUgdXNlZCB0byBkeW5hbWljYWxseSBtb2RpZnkgdGhlIFBMQjpQQ0kgZGl2aWRlcgotICAgIGFzIGl0IGlzIHJlcXVpcmVkIGZvciAzMy82NiBNSHogcGNpIGFkYXB0ZXJzIGJhc2VkIG9uIHRoZSA0MDVFUC4KLQotICAgIGJvYXJkX2Vhcmx5X2luaXRfZigpIGlzIGEgZ29vZCBwbGFjZSB0byBkbyB0aGF0IChjaGVjayBNNjZFTiBzaWduYWwKLSAgICBhbmQgY2FsbCBwbGxfd3JpdGUoKSB3aGVuIGl0IGlzIHJlcXVpcmVkKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjBiM2M0YjUyODYwNmQ1MTc5OWFlZDVlNGM3MTc4MzcyMGNkMmI3MgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDYgMTE6NDQ6MzMgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgY29tcGlsYXRpb24gd2FybmluZyAicGNpX2FzeW5jX2VuYWJsZWQgZGVmaW5lZCBidXQgbm90IHVzZWQiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkMGExMzY0ZjkxYzgwZDI5ZGFmZjZiMjdhNzkwNGE1MGNkYzAwYjM1Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglGcmkgSnVsIDMgMTY6MDY6MDYgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBJbXBsZW1lbnQgaXNfcGNpX2hvc3QoKSBmb3IgNDA1IENQVXMKLQotICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyB0aGUgaXNfcGNpX2hvc3QoKSBmdW5jdGlvbiBpbiBhIHNpbWlsaWFyIHdheQotICAgIGFzIGl0IGlzIHVzZWQgb24gNDQwIHRhcmdldHMuCi0KLSAgICBUaGUgZm9ybWVyIHBhdGggd2l0aCBDT05GSUdfUENJX0hPU1QgPT0gUENJX0hPU1RfQVVUTyBkb2VzIG5vdAotICAgIGJ1aWxkIG9uIDQwNUVQIHRhcmdldHMgYmVjYXVzZSBjaGVja2luZyB0aGUgUENJIGFyYml0ZXIgaXMgZGlmZmVyZW50LgotICAgIFNvIHB1dHRpbmcgdGhlIGZpeGVkIGNvZGUgaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIG1ha2VzIHRoZSBjb2RlCi0gICAgbW9yZSByZWFkYWJsZS4KLQotICAgIEFsc28gdXNpbmcgaXNfcGNpX2hvc3QoKSBvbiA0MDUgYnJpbmdzIDQwNSBhbmQgNDQwIFBDSSBjb2RlCi0gICAgYSBsaXR0bGUgYml0IGNsb3Nlci4KLQotICAgIEluIHByZXBhcmF0aW9uIGZvciBhbiB1cGNvbWluZyA0MDVFUCBiYXNlZCBQTUMgbW9kdWxlIEkgbWFkZSB0aGlzCi0gICAgZnVuY3Rpb24gd2VhayBzbyB0aGF0IGl0IGNhbiBiZSBvdmVyd3JpdHRlbiBmcm9tIGJvYXJkIHNwZWNpZmljIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDA0ZGRhZTkxNWYyOTVkZWUzMDFmMTVjMzIxMDA1MzNhNDhlM2I0MzMKLUF1dGhvcjogQWxlc3NpbyBDZW50YXp6byA8Y2VudGF6em9AZ21haWwuY29tPgotRGF0ZToJV2VkIEp1bCAxIDIyOjIwOjUxIDIwMDkgLTA3MDAKLQotICAgIHBwYzR4eDogRml4ZWQgUFBDNHh4IGRlYnVnIGNvbXBpbGF0aW9uIGVycm9yIGluIHVpYy5jCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgZGVidWcgY29tcGlsYXRpb24gZXJyb3IgZm9yIFBQQzR4eCBwbGF0Zm9ybXMsIGFsbAotICAgIG90aGVyIGFyY2hpdGVjdHVyZXMgYXJlIG5vdCBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4gIFRoZSAnaGFuZGxlcicKLSAgICBwb2ludGVyIHdhcyB1bmRlZmluZWQuICBUaGUgZml4IGlzIGV4ZXJjaXNlZCBhbmQgaGFzIGVmZmVjdCBvbmx5IGlmCi0gICAgREVCVUcgaXMgZGVmaW5lZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzaW8gQ2VudGF6em8gYWNwYXRpbkB5YWhvby5jb20KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0OGUyYjUzNWEwZGQzYTdiNzdiNjc0MTMwOTM0YTI0ZjlkZTZmNDhkCi1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJV2VkIEp1bCAxIDExOjM3OjQ2IDIwMDkgKzAzMDAKLQotICAgIDR4eDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmdzIGFuZCBNUSByZWdpc3RlcnMgZHVtcCBpbiBTUEQgRERSMiBjb2RlCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHByaW50ZiBmb3JtYXQgc3RyaW5nIGNvbXBpbGF0aW9uIHdhcm5pbmdzIGluIHNldmVyYWwKLSAgICBkZWJ1ZyBzdGF0ZW1lbnRzLiBJdCBhbHNvIGZpeGVzIHRoZSBkdW1wIG9mIEREUiBjb250cm9sbGVyIE1RIHJlZ2lzdGVycwotICAgIGZvdW5kIG9uIHNvbWUgNDR4IGFuZCA0NnggcGxhdGZvcm1zLiBUaGUgY3VycmVudCByZWdpc3RlciBkdW1wIGNvZGUKLSAgICB1c2VzIGluY29ycmVjdCBEQ1JzIHRvIGFjY2VzcyB0aGVzZSByZWdpc3RlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyNmQzN2YwMDYxYWQwNWU1YzM4M2M5MTBmMDBlNjAwNmYzYzg5YTNhCi1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJTW9uIEp1biAyMiAxNTozMDo0MiAyMDA5ICswMzAwCi0KLSAgICBwcGM0eHg6IEZpeCBGRFQgRUJDIG1hcHBpbmdzIG9uIENhbnlvbmxhbmRzCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIDIgcHJvYmxlbXMgd2l0aCBGRFQgRUJDIG1hcHBpbmdzIG9uIENhbnlvbmxhbmRzLgotICAgIEZpcnN0LCBOQU5EIEVCQyBtYXBwaW5nIHdhcyBtaXNzaW5nLCBtYWtpbmcgTGludXggTkFORCBkcml2ZXIKLSAgICB1bnVzYWJsZSBvbiB0aGlzIGJvYXJkLiBTZWNvbmQsIE5PUiByZW1hcHBpbmcgY29kZSBhc3N1bWVkIHRoYXQKLSAgICBOT1IgaXMgYWx3YXlzIG9uIENTMCwgaG93ZXZlciB3aGVuIGJvb3RpbmcgZnJvbSBOQU5EIE5PUiBpcyBvbiBDUzMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiYWE5ZjliYTQzNDVlZDZkYzVjNDAzODcxYzMyZTYyOTUzMTZlYTUyCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVR1ZSBKdW4gMTYgMjI6Mjk6MTUgMjAwOSArMDkwMAotCi0gICAgc2g6IFJldmlzZWQgdGhlIGJ1aWxkIHdpdGggbmV3ZXN0IGNvbXBpbGVyCi0KLSAgICBUaGUgY2hlY2sgb2YgZGF0YSBiZWNhbWUgc2V2ZXJlIGZyb20gbmV3ZXN0IGdjYy4KLSAgICBUaGlzIHBhdGNoIGNoZWNrZWQgaW4gZ2NjLTQuMiBhbmQgNC4zIC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGJlNDVjNjMyNTY4YmE3NjM0M2MxNDUzYjM5NTFhZDc5M2Y0ODJmZDUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBKdW4gNCAxMjowNjo0OCAyMDA5ICswMjAwCi0KLSAgICBzaDMvc2g0OiByZW5hbWUgY29uZmlnIG9wdGlvbiBUTVVfQ0xLX0RJVklERVIgdG8gQ09ORklHX1NZU19UTVVfQ0xLX0RJVgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBDYzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDhkZDI5Yzg3YmEzNzAwNzJhODQ2NGI4Y2MxOWUwYTFlNmUwNDk3YjQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBKdW4gNCAxMjowNjo0NyAyMDA5ICswMjAwCi0KLSAgICBzaDMvc2g0OiBmaXggQ09ORklHX1NZU19IWiB0byAxMDAwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIENjOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYWRkMzgwZjUxZjM0ZWQxZTI2NzhjMmFiYWM4ZDUzYzkxZDY1MmYyNgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IEp1biA0IDEyOjA2OjQ2IDIwMDkgKzAyMDAKLQotICAgIHNoOiBpbnRyb2R1Y2UgY2xvY2sgZnJhbWV3b3JrCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIENjOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMzkzMWEzNzVkZTJjMzgxZDlmZjVlYzI3NjdiMmRhOWY2MmE0MWFlZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IEp1biA0IDEyOjA2OjQ1IDIwMDkgKzAyMDAKLQotICAgIHNoOiB1bmlmeSBsaW5rZXIgc2NyaXB0Ci0KLSAgICBhbGwgc2ggYm9hcmRzIHVzZSB0aGUgc2FtZSBjcHUgbGlua2VyIHNjcmlwdCBzbyBtb3ZlIGl0IHRvIGNwdS8kKENQVSkKLQotICAgIHRoYXQgY291bGQgYmUgb3ZlcndyaXRlIGluIGZvbGxvd2luZyBvcmRlcgotICAgIFNPQwotICAgIEJPQVJECi0gICAgdmlhIHRoZSBjb3JyZXNwb25kaW5nIGNvbmZpZy5tawotCi0gICAgdGVzdGVkIG9uIHIyZHBsdXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQ2M6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAyMzZhYWQ4NzU4MTc3NzFlYjFmMjVlZDMyNzg0YjNjZDc3NjBiMmU2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUaHUgSnVuIDQgMTI6MDY6NDQgMjAwOSArMDIwMAotCi0gICAgc2g6IG1ha2UgdGhlIGxpbmtlciBzY3JpcHRzIG1vcmUgZ2VuZXJpYwotCi0gICAgY3VycmVudGx5IHdlIG5lZWQgdG8gc3luYyB0aGUgbGlua2VyIHNjcmlwdCBlbnR5IGFuZCBURVhUX0JBU0UgbWFudWFseQotICAgIGFuZCB0aGUgcmVsb2NfZHN0IGlzIGJhc2VkIG9uIGl0Ci0KLSAgICBpbnN0ZWFkIHByb3ZpZGUgaXQgbm93IGZyb20gdGhlIGxkZmxhZ3MKLQotICAgIHRlc3RlZCBvbiByMmRwbHVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIENjOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgY2UyOTgxNzIxMjc5MjExM2NkMmQ2N2E5NzY3MDQ5YTJlMjYyYzQwNgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IEp1biA0IDEyOjA2OjQzIDIwMDkgKzAyMDAKLQotICAgIHNoNzc4NWxjcjogZml4IG91dCBvZiB0cmVlIGJ1aWxkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIENjOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMmU4YTZmNTUxY2JhNTUwZTkyMjBkY2E0ZDg1MDQwNjYyMDNiMWY3NAotQXV0aG9yOiBIZXVuZ0p1biBLaW0gPHJpdmVyZnVsLmtpbUBnbWFpbC5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE0OjQyOjIyIDIwMDkgKzA5MDAKLQotICAgIGVudl9vbmVuYW5kOiBjaGFuZ2UgZW52X2FkZHJlc3MgdHlwZSBmcm9tIHVuc2lnbmVkIGxvbmcgdG8gbG9mZl90Ci0KLSAgICBJZiB1c2UgdGhlIG9uZW5hbmQgYm9vdCwgdGhlIGVudl9yZWxvY2F0ZV9zcGVjKCkgY2FsbHMgbXRkLT5yZWFkKCksCi0gICAgYW5kIHRoZSB0eXBlIG9mIHRoZSBhcmd1bWVudCAjMiBvZiBtdGQtPnJlYWQoKSB3YXMgY2hhbmdlZCB0byBsb2ZmX3QuCi0gICAgQnV0LCB0aGUgImVudl9hZGRyIiB0eXBlIGlzIHN0aWxsIHVuc2lnbmVkIGxvbmcsIHRodXMgdGhpcyBwYXRjaCBjaGFuZ2UKLSAgICB0aGUgdHlwZSBmcm9tIHVuc2lnbmVkIGxvbmcgdG8gbG9mZl90LgotCi0gICAgQWNrZWQtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGV1bmdKdW4sIEtpbSA8cml2ZXJmdWwua2ltQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjYzNzJmZTJhYjExY2RlYjBlODQxYWQ5ZWI2YmE3OTc2OWRiNDkwOQotQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVuIDE4IDE4OjIzOjI3IDIwMDkgKzA4MDAKLQotICAgIGZzbF9lbGJjX25hbmQ6IHJlZGlyZWN0IHRoZSBwb2ludGVyIG9mIGJidCBwYXR0ZXJuIHRvIFJBTQotCi0gICAgVGhlIGJidCBkZXNjcmlwdG9ycyBjb250YWlucyB0aGUgcG9pbnRlciB0byB0aGUgYmJ0IHBhdHRlcm4gd2hpY2gKLSAgICBhcmUgc3RhdGljYWxseSBpbml0aWFsaXplZCBtZW1vcnkgc3RydWN0LiBXaGVuIHJlbG9jYXRlZCB0byBSQU0sCi0gICAgdGhlc2UgcG9pbnRlcnMgd2lsbCBjb250aW51ZSBwb2ludCB0byBOT1IgZmxhc2gob3IgTDIgU1JBTSwgb3IKLSAgICBvdGhlciBib290IGRldmljZSkuIElmIHRoZSBjb250ZW50cyBvZiBOT1IgZmxhc2ggY2hhbmdlZCBvciBMMgotICAgIFNSQU0gZGlzYWJsZWQsIGl0J2xsIGhhbmcgdGhlIHN5c3RlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFkYWMzYTUxODc1OTY3ZjMyNjQxYmJjMGQyNmRjMzgyZWYwMjMzMGEKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI0IDE3OjIzOjQ5IDIwMDkgLTA1MDAKLQotICAgIG5hbmRfc3BsOiBGaXggY21kX2N0cmwgdXNhZ2UgaW4gbmFuZF9ib290LmMuCi0KLSAgICBXaGVuIGFkZGluZyBsYXJnZSBwYWdlIE5BTkQgc3VwcG9ydCB0byB0aGlzIGZpbGUsIEkgaGFkIGEgbWlzdW5kZXJzdGFuZGluZwotICAgIGFib3V0IHRoZSBleGFjdCBzZW1hbnRpY3Mgb2YgTkFORF9DVFJMX0NIQU5HRSAod2hpY2ggaXNuJ3QgZG9jdW1lbnRlZAotICAgIGFueXdoZXJlIEkgY2FuIGZpbmQpIC0tIGl0IGlzIGFwcGFyZW50bHkganVzdCBhIGhpbnQgdG8gZHJpdmVycywKLSAgICB3aGljaCBhcmVuJ3QgcmVxdWlyZWQgdG8gcHJlc2VydmUgdGhlIG9sZCB2YWx1ZSBmb3Igc3Vic2VxdWVudAotICAgIG5vbi0iY2hhbmdlIiBpbnZvY2F0aW9ucy4KLQotICAgIFRoaXMgY2hhbmdlIG1ha2VzIG5hbmRfYm9vdC5jIG5vIGxvbmdlciBhc3N1bWUgdGhpcy4gIE5vdGUgdGhhdCB0aGlzCi0gICAgaGFwcGVuZWQgdG8gd29yayBieSBjaGFuY2Ugd2l0aCBzb21lIE5BTkQgZHJpdmVycywgd2hpY2ggZG9uJ3QgcHJlc2VydmUKLSAgICB0aGUgdmFsdWUsIGJ1dCB0cmVhdCAwIGVxdWl2YWxlbnRseSB0byBOQU5EX0NUUkxfQUxFLgotCi0gICAgSSBkb24ndCBoYXZlIGhhcmR3YXJlIHRvIHRlc3QgdGhpcywgc28gYW55IHRlc3RpbmcgaXMgYXBwcmVjaWF0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk4NzEzZDI2NjNkNWQzMGRkZTc0ZjQ4ZjU0NzExNGEyYmZkOWQ0NjMKLUF1dGhvcjoga2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51ayA8a2V2aW4ubW9yZml0dEBmZWFybnNpZGUtc3lzdGVtcy5jby51az4KLURhdGU6CVRodSBKdW4gMTggMTg6NDE6MDMgMjAwOSArMDEwMAotCi0gICAgQnVnLWZpeCBpbiBkcml2ZXJzIG10ZCBuYW5kIE1ha2VmaWxlCi0KLSAgICBUaGUgUzNDMjQxMCBOQU5EIGRyaXZlciBzb3VyY2UgZmlsZSBpcyBpbmNsdWRlZCBpbiB0aGUgbWFrZWZpbGUgaW5zdGVhZCBvZgotICAgIHRoZSBvYmplY3QgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtldmluIE1vcmZpdHQgPGtldmluLm1vcmZpdHRAZmVhcm5zaWRlLXN5c3RlbXMuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNzRhYjczNzM2OWJiYmU2NmMxNWNiZTZjMGQwYjZhMzUxYjAwYzk2Ci1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgMTggMTY6MDc6MjIgMjAwOSArMDIwMAotCi0gICAgbmFuZF9zcGw6IHJlYWQgZW52aXJvbm1lbnQgZWFybHksIHdoZW4gYm9vdGluZyBmcm9tIE5BTkQgdXNpbmcgbmFuZF9zcGwKLQotICAgIEN1cnJlbnRseSwgd2hlbiBib290aW5nIGZyb20gTkFORCB1c2luZyBuYW5kX3NwbCwgaW4gdGhlIGJlZ2lubmluZyB0aGUgZGVmYXVsdAotICAgIGVudmlyb25tZW50IGlzIHVzZWQgdW50aWwgbGF0ZXIgaW4gYm9vdCBwcm9jZXNzIHRoZSBkeW5hbWljIGVudmlyb25tZW50IGlzIHJlYWQKLSAgICBvdXQuIFRoaXMgd2F5IGVudmlyb25tZW50IHZhcmlhYmxlcyB0aGF0IG11c3QgYmUgaW50ZXJwcmV0ZWQgZWFybHksIGxpa2UgdGhlCi0gICAgYmF1ZHJhdGUgb3IgInNpbGVudCIsIGNhbm5vdCBiZSBtb2RpZmllZCBkeW5hbWljYWxseSBhbmQgcmVtYWluIGF0IHRoZWlyCi0gICAgZGVmYXVsdCB2YWx1ZXMuIEZpeCB0aGlzIHByb2JsZW0gYnkgcmVhZGluZyBvdXQgbWFpbiBhbmQgcmVkdW5kYW5kIChpZiB1c2VkKQotICAgIGNvcGllcyBvZiB0aGUgZW52aXJvbm1lbnQgaW4gdGhlIG5hbmRfc3BsIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzNzhhZGZjZGY0YmJkNzdlZTRjYmMzMjc2ZDQ3MzNlMjE4MzA4YTIxCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTWF5IDE2IDE0OjI3OjQwIDIwMDkgKzAyMDAKLQotICAgIG10ZDogbmFuZDogdXNlIGxvZmZfdCBmb3Igb2Zmc2V0Ci0KLSAgICBuYW5kX3V0aWwgY3VycmVudGx5IHVzZXMgc2l6ZV90IHdoaWNoIGlzIGFyY2ggZGVwZW5kZW50IGFuZCBub3QgYWx3YXlzIGEKLSAgICB1bnNpZ25lZCBsb25nLiAgTm93IHVzZSBsb2ZmX3QsIGFzIGRvZXMgdGhlIGxpbnV4IG10ZCBsYXllci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4MzYwYjY2YmFjOTU2NzcwMTAyN2EwMDg3Mjc0ZDBjOWIyZmU4ZDZiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWF5IDI0IDE3OjM0OjMzIDIwMDkgKzAyMDAKLQotICAgIG5hbmQvb25lbmFuZDogRml4IG1pc3NpbmcgYXJndW1lbnQgY2hlY2tpbmcgZm9yICJtYXJrYmFkIiBjb21tYW5kCi0KLSAgICBUaGUgIm5hbmQgbWFya2JhZCIgYW5kICJvbmVuYW5kIG1hcmtiYWQiIGNvbW1hbmRzIGRpZCBub3QgY2hlY2sgaWYgYW4KLSAgICBhcmd1bWVudCB3YXMgcGFzc2VkOyBpZiB0aGlzIHdhcyBmb3Jnb3R0ZW4sIG5vIGVycm9yIHdhcyByYWlzZWQgYnV0Ci0gICAgYmxvY2sgMCB3YXMgbWFya2VkIGFzIGJhZC4KLQotICAgIFdoaWxlIGZpeGluZyB0aGlzIGJ1ZywgY2xlYW4gdXAgdGhlIGNvZGUgYSBiaXQgYW5kIGFsbG93IHRvIHBhc3MgbW9yZQotICAgIHRoYW4gb25lIGJsb2NrIGFkZHJlc3MsIHRodXMgYWxsb3dpbmcgdG8gbWFyayBzZXZlcmFsIGJsb2NrcyBhcyBiYWQKLSAgICBpbiBhIHNpbmdsZSBjb21tYW5kIGludm9jYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2Q4NDQyM2EwOWYzYTA4MDI5ZmU0MWMxZGI5NjE2OGRlYmQwYjUxZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gTWF5IDI1IDIyOjQyOjI4IDIwMDkgLTA0MDAKLQotICAgIG10ZDogbmFuZDogbmV3IGJhc2UgZHJpdmVyIGZvciBtZW1vcnkgbWFwcGVkIG5hbmQgZGV2aWNlcwotCi0gICAgVGhlIEJGNTM3LVNUQU1QIEJsYWNrZmluIGJvYXJkIGhhZCBhIGRyaXZlciBmb3Igd29ya2luZyB3aXRoIE5BTkQgZGV2aWNlcwotICAgIHRoYXQgYXJlIHNpbXBseSBtZW1vcnkgbWFwcGVkLiAgU2luY2UgdGhlcmUgaXMgbm90aGluZyBCbGFja2ZpbiBzcGVjaWZpYwotICAgIGFib3V0IHRoaXMsIGdlbmVyYWxpemUgdGhlIGRyaXZlciBhIGJpdCBzbyB0aGF0IGV2ZXJ5b25lIGNhbiBsZXZlcmFnZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQyN2JjNzI4Y2YzNWU3ZDc5OTZmYmQ3NzE1NDMzNWU2NjYxNWIyMTMKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJTW9uIE1heSAxOCAxNjowNjo0NSAyMDA5ICswMjAwCi0KLSAgICBlbnZfbmFuZDogcmVtb3ZlIHVudXNlZCB2YXJpYWJsZS4KLQotICAgIFJlbW92ZSBhbiB1bnVzZWQgInRvdGFsIiB2YXJpYWJsZSBpbiBtdWx0aXBsZSBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxNTRiNTQ4NGFjN2RjYmNkMGZiNWJhMzg4ZDkzMGIwMmY4N2ZhMzAyCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZToJU3VuIE1heSAxMCAxNTo0MzowMSAyMDA5IC0wNzAwCi0KLSAgICBkYXZpbmNpX25hbmQgY2hpcHNlbGVjdC9pbml0IGNsZWFudXAKLQotICAgIFVwZGF0ZSBjaGlwc2VsZWN0IGhhbmRsaW5nIGluIGRhdmluY2lfbmFuZC5jIHNvIHRoYXQgaXQgY2FuCi0gICAgaGFuZGxlIDIgR0J5dGUgY2hpcHMgdGhlIHNhbWUgd2F5IExpbnV4IGRvZXM6ICBhcyBvbmUgZGV2aWNlLAotICAgIGV2ZW4gdGhvdWdoIGl0IGhhcyB0d28gaGFsdmVzIHdpdGggaW5kZXBlbmRlbnQgY2hpcCBzZWxlY3RzLgotICAgIEZvciBzdWNoIGNoaXBzIHRoZSAibmFuZCBpbmZvIiBjb21tYW5kIHJlcG9ydHM6Ci0KLSAgICAgIERldmljZSAwOiAyeCBuYW5kMCwgc2VjdG9yIHNpemUgMTI4IEtpQgotCi0gICAgU3dpdGNoIHRvIHVzZSB0aGUgZGVmYXVsdCBjaGlwc2VsZWN0IGZ1bmN0aW9uIHVubGVzcyB0aGUgYm9hcmQKLSAgICByZWFsbHkgbmVlZHMgaXRzIG93bi4gIFRoZSBsb2dpYyBmb3IgdGhlIFNvbmF0YSBib2FyZCBtb3ZlcyBvdXQKLSAgICBvZiB0aGUgZHJpdmVyIGludG8gYm9hcmQtc3BlY2lmaWMgY29kZS4gIChXaGljaCBkb2Vzbid0IGFmZmVjdAotICAgIGN1cnJlbnQgYnVpbGQgYnJlYWthZ2UgaWYgaXRzIE5BTkQgc3VwcG9ydCBpcyBlbmFibGVkLi4uKQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0OTY4NjNiMjQ0MGRkN2NkNjlhMWFkMjQ0M2E5YmFkZDVmODk2OGQxCi1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVNhdCBNYXkgOSAxMjozNToyMCAyMDA5IC0wNDAwCi0KLSAgICBOQU5EIERhVmluY2k6IFVwZGF0ZSB0byBBTEUvQ0xFIE1hc2sgdmFsdWVzCi0KLSAgICBBbGwgRGFWaW5jaSBTT0MncyB1c2UgYSBDTEUgbWFzayBvZiAweDEwIGFuZCBhbiBBTEUgbWFzayBvZiAweDgKLSAgICBleGNlcHQgdGhlIERNNjQ2eC4gVGhpcyB3YXMgZGVjaWRlZCBieSB0aGUgZGVzaWduIHRlYW0gZHJpdmluZyB0aGUgZGVzaWduLgotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgQ0xFIGFuZCBBTEUgdmFsdWVzIGZvciBETTY0NnguCi0gICAgVXBkYXRlZCBwYXRjaGVzIGZvciBETTY0Nnggd2lsbCBiZSBzZW50IHNob3J0bHkuCi0gICAgVGhpcyBhcHBsaWVzIHRvIHUtYm9vdC1uYW5kLWZsYXNoIGdpdAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGMxNjg0NDM3ZWY4MTBjNTAzZGYyOWU4ZDczZjYzMTkxYWE2Mzg2MgotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglXZWQgQXByIDI5IDA5OjQ3OjA5IDIwMDkgLTA0MDAKLQotICAgIEFSTSBEYVZpbmNpOiBDaGFuZ2luZyBBTEUgTWFzayBWYWx1ZQotCi0gICAgVGhlIEFMRSBtYXNrIHVzZWQgYnkgRGFWaW5jaSBTT0NzIGlzIHdyb25nLiBUaGUgcGF0Y2ggY2hhbmdlcyB0aGUgbWFzayB2YWx1ZQotICAgIGZyb20gJzB4YScgdG8gJzB4OCcuIFRoaXMgaXMgdGhlIG1hc2sgd2UgdXNlIGZvciBhbGwgVEkgcmVsZWFzZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2ZTI5ZWQ4ZTU3NmE2OTAwYzVkOGRjZGUzNmI0MjNhYzU3Njg5NGRjCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZToJVHVlIEFwciAyOCAxMzoxOTo1MyAyMDA5IC0wNzAwCi0KLSAgICBkYXZpbmNpX25hbmQ6IGNsZWFudXAgSUkgKENPTkZJR19TWVNfREFWSU5DSV9CUk9LRU5fRUNDKQotCi0gICAgUmVtb3ZlIENPTkZJR19TWVNfREFWSU5DSV9CUk9LRU5fRUNDIG9wdGlvbi4gIEl0J3Mgbm90IGp1c3QgbmFzdHk7Ci0gICAgaXQncyBhbHNvIHVudXNlZCBieSBhbnkgY3VycmVudCBib2FyZHMsIGFuZCBkb2Vzbid0IGV2ZW4gbWF0Y2ggdGhlCi0gICAgbWFpbiBVLUJvb3QgZGlzdHJpYnV0aW9ucyBmcm9tIFRJICh3aGljaCB1c2Ugc29mdCBFQ0MsIG9yIDQtYml0IEVDQwotICAgIG9uIG5ld2VyIGNoaXBzIHRoYXQgc3VwcG9ydCBpdCkuCi0KLSAgICBEYVZpbmNpIEdJVCBrZXJuZWxzIHNpbmNlIDIuNi4yNCwgYW5kIG1haW5saW5lIExpbnV4IHNpbmNlIDIuNi4zMCwKLSAgICBtYXRjaCBub24tQlJPS0VOIGNvZGUgcGF0aHMgZm9yIDEtYml0IEhXIEVDQy4gIFRoZSBCUk9LRU4gY29kZSBwYXRocwotICAgIGRvIHNlZW0gdG8gcGFydGlhbGx5IG1hdGNoIHdoYXQgTW9udGFWaXN0YS9USSBrZXJuZWxzICg0LjAvMi42LjEwLAotICAgIGFuZCA1LjAvMi42LjE4KSBkbyAuLi4gYnV0IG9ubHkgZm9yIHNtYWxsIHBhZ2VzLiAgTGFyZ2UgcGFnZSBzdXBwb3J0Ci0gICAgaXMgcmVhbGx5IGJyb2tlbiAoYW5kIGl0J3MgdW5jbGVhciBqdXN0IHdoYXQgc29mdHdhcmUgaXQgd2FzIHRyeWluZwotICAgIHRvIG1hdGNoISksIGFuZCB0aGUgRUNDIGxheW91dCB3YXMgbWFraW5nIHRocmVlIG1vcmUgYnl0ZXMgYXZhaWxhYmxlCi0gICAgZm9yIHVzZSBieSBmaWxlc3lzdGVtIChvciB3aGF0ZXZlcikgY29kZS4KLQotICAgIFNpbmNlIHRoaXMgb3B0aW9uIGl0c2VsZiBzZWVtcyBicm9rZW4sIHJlbW92ZSBpdC4gIEFkZCBhIGNvbW1lbnQKLSAgICBhYm91dCB0aGUgTVYvVEkgY29tcGF0IGlzc3VlLCBhbmQgdGhlIG1vc3Qgc3RyYWlnaHRmb3J3YXJkIHdheSB0bwotICAgIGFkZHJlc3MgaXQgKHNob3VsZCBzb21lb25lIHJlYWxseSBuZWVkIHRvIHNvbHZlIGl0KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmNiNzc0Nzc3NTYyYmI3YmNkYzUzYzYwOGQwZTZiYWU5MDZjZTBmNgotQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6CVR1ZSBBcHIgMjggMTM6MTk6NTAgMjAwOSAtMDcwMAotCi0gICAgZGF2aW5jaV9uYW5kOiBjbGVhbnVwIEkgKG1pbm9yKQotCi0gICAgTWlub3IgY2xlYW51cCBmb3IgRGFWaW5jaSBOQU5EIGNvZGU6Ci0KLSAgICAgLSBVc2UgSS9PIGFkZHJlc3NlcyBmcm9tIG5hbmRfY2hpcDsgQ09ORklHX1NZU19OQU5EX0JBU0Ugd29uJ3QKLSAgICAgICBiZSBkZWZpbmVkIHdoZW4gdGhlcmUgYXJlIG11bHRpcGxlIGNoaXBzZWxlY3QgbGluZXMgaW4gdXNlCi0gICAgICAgKGFzIHdpdGggY29tbW9uIDIgR0J5dGUgY2hpcHMpLgotCi0gICAgIC0gQ2xlYW51cCBoYW5kbGluZyBvZiBFTUlGIGNvbnRyb2wgcmVnaXN0ZXJzCi0JKiBPbmx5IG5lZWQgb25lIHBvaW50ZXIgcG9pbnRpbmcgdG8gdGhlbQotCSogUmVtb3ZlIGluY29ycmVjdCBhbmQgdW51c2VkIHN0cnVjdCBzdXBlcnNldHRpbmcgdGhlbQotCi0gICAgIC0gVXNlIHRoZSBzdGFuZGFyZCB3YWl0ZnVuYzsgd2UgZG9uJ3QgbmVlZCBhIGN1c3RvbSB2ZXJzaW9uCi0KLSAgICAgLSBQYXJ0aWFsIGxlZ2FjeSBjbGVhbnVwOgotCSogRG9uJ3QgaW5pdGlhbGl6ZSBldmVyeSBib2FyZCBsaWtlIGl0J3MgYSBETTY0NDYgRVZNCi0JKiAjaWZkZWYgYSBiaXQgbW9yZSBjb2RlIGZvciBCUk9LRU5fRUNDCi0KLSAgICBTYW5pdHkgY2hlY2tlZCB3aXRoIHNtYWxsIHBhZ2UgTkFORCBvbiBkbTM1NSBhbmQgZG02NDQ2IEVWTXM7Ci0gICAgYW5kIGxhcmdlIHBhZ2Ugb24gZG0zNTUgRVZNIChwYWNrYWdlZCBhcyB0d28gZGV2aWNlcywgbm90IG9uZSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhlNWU5Yjk0MGNkZWRlMGRlYmU1MjhjZGQ3ZWRjY2NjYmIzZWJmMmEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBKdWwgNyAyMjozNTowMiAyMDA5ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQzMThkMGM0NGQ4ZTkxZTkzN2M0ZGFkMGM1YjFkMmY2YmI5ZDlmZDgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1biAyOSAxMzozMDo1MCAyMDA5ICswMjAwCi0KLSAgICBVQkk6IEZpeCBidWlsZCBwcm9ibGVtIG5vdGljZWQgb24gQXBvbGxvbiAoYXJtL3Rlc3RpbmcgcmVwbykKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWlsZCBwcm9ibGVtIG5vdGljZWQgb24gQXBvbGxvbiBieSB1c2luZwotICAgIG10ZF9kZXZfYnlfZWIoKSBpbnN0ZWFkIG9mICIvIiBhcyBkb25lIGluIHRoZSBMaW51eCBVQkkgdmVyc2lvbi4KLSAgICBTbyB0aGlzIGJyaW5ncyB0aGUgVS1Cb290IFVCSSB2ZXJzaW9uIG1vcmUgaW4gc3luYyB3aXRoIHRoZSBMaW51eAotICAgIHZlcnNpb24gYWdhaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyZWZlZTUyYjA5NjU3ZTkzNTM2NTViOWRhZTllMWQxYTY3YTJhYmU0Ci1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBKdWwgNiAyMDoyOToxNSAyMDA5ICswNTMwCi0KLSAgICBzZjogTWFjcm9uaXggYWRkaXRpb25hbCBjaGlwcyBzdXBwb3J0ZWQKLQotICAgIG5ldyBjaGlwcyBzdXBwb3J0ZWQ6LQotICAgIE1YMjVMMTYwNUQsIE1YMjVMMzIwNUQsIE1YMjVMNjQwNUQsIE1YMjVMMTI4NTVFCi0gICAgb3V0IG9mIHdoaWNoIE1YMjVMNjQwNUQgYW5kIE1YMjVMMTI4NTVFIHRlc3RlZCBvbiBLaXJrd29vZCBwbGF0Zm9ybXMKLQotICAgIE1vZGlmaWVkIHRoZSBNYWNyb25peCBmbGFzaCBzdXBwb3J0IHRvIHVzZSAyIGJ5dGVzIG9mIGRldmljZSBpZCBpbnN0ZWFkIG9mIDEKLSAgICBUaGlzIHdhcyByZXF1aXJlZCB0byBzdXBwb3J0IE1YMjVMMTI4NTVFCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQaXl1c2ggU2hhaCA8c3BpeXVzaEBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZGQ1NDEyNjcxNWI4OWVkMGM0MzMyMmFhNzhiMGRhZDMwNmYwNDNiNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgSnVuIDE5IDAzOjI3OjI4IDIwMDkgLTA0MDAKLQotICAgIHNmOiBzc3Q6IGFkZCBzc3QyNXZmIyMjYiBpZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDdkOTA3ZjBlYTk5M2IxNzlhMTk3ZDhkYjJhMzZmMTIyYmM2NzNjMmQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIEp1biAxOSAwMzoyMDowNiAyMDA5IC0wNDAwCi0KLSAgICBzZjogc3N0OiBmaXggc2VjdG9yIHNpemUKLQotICAgIExvb2tzIGxpa2Ugd2hlbiBJIHdhcyBlbmNvZGluZyB0aGUgc2VjdG9yIHNpemVzLCBJIGZvcmdvdCB0byBkaXZpZGUgYnkgOAotICAgIChkdWUgdG8gdGhlIHN0dXBpZCBtYXJrZXRpbmcgZHJpdmVuIHByb2Nlc3MgdGhhdCBkZWNsYXJlcyBhbGwgc2l6ZXMgaW4KLSAgICB1c2VsZXNzIG1lZ2FiaXRzIGFuZCBub3QgbWVnYWJ5dGVzKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGNlYjcwYjQ2NmU3NWNlYjFhNjIxYjYxNjNmN2UzMTExNmJmYzgwOTQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBKdWwgNSAwMTowNjowNiAyMDA5ICswMjAwCi0KLSAgICBuaGs4ODE1OiBmaXggTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGQwOGU1Y2EzMDFiNjlhYjc3ZWNkZDM0ZTJiMDZhZWUzMGQ2MDU3ZDEKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJU2F0IEp1bCA0IDEwOjMxOjI0IDIwMDkgKzAyMDAKLQotICAgIE1YMzE6IEFkZCBOQU5EIFNQTCBib290IHN1cHBvcnQgdG8gaS5NWDMxIFBESyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IDc4ZWFiYjkwYjc5M2ZhZmU4NzVhNzQ2OTUyNmQxNzE1ZmE1NmNiYjQKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJTW9uIEp1biAyOSAyMDo1NTo1NCAyMDA5ICswNTMwCi0KLSAgICBhcm06IEtpcmt3b29kOiBhcmNoIHNwZWNpZmljIHVwZGF0ZWQgZm9yIGVoY2ktS2lya3dvb2QgZHJpdmVyIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWJzdHJhY3RzIEtpcmt3b29kIGFyY2ggc3BlY2lmaWMgY2hhbmdlcyB0byBzdXBwb3J0IGVoY2kta2lya3dvb2QgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCAwOTVhNDYwYjQ5MDIyZTY0ZGY3NjEzNDMwMDY0MzYwNmUzYWNiNGU5Ci1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglNb24gSnVuIDI5IDEwOjUyOjM3IDIwMDkgKzAyMDAKLQotICAgIGFybSBub21hZGlrOiB1c2UgMTAwMCBhcyBIWiB2YWx1ZSBhbmQgcmV3cml0ZSB0aW1lciBjb2RlCi0KLSAgICBUaGlzIHNldHMgQ09ORklHX1NZU19IWiB0byAxMDAwIGFzIHJlcXVpcmVkLCBhbmQgY29tcGxldGVseSByZXdyaXRlcwotICAgIHRpbWVyIGNvZGUsIHdoaWNoIGlzIG5vdyBib3RoIGNvcnJlY3QgYW5kIG11Y2ggc21hbGxlci4gIFVudXNlZAotICAgIGZ1bmN0aW9ucyBsaWtlIHVkZWxheV9tYXNrZWQoKSBoYXZlIGJlZW4gcmVtb3ZlZCBhcyBubyBkcml2ZXIgdXNlcwotICAgIHRoZW0sIGV2ZW4gdGhlIG9uZXMgdGhhdCBhcmUgbm90IGN1cnJlbnRseSBhY3RpdmUgZm9yIHRoaXMgYm9hcmQuCi0gICAgbXR1LmggaXMgY29waWVkIGxpdGVyYWxseSBmcm9tIHRoZSBrZXJuZWwgc291cmNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci0gICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmN2FhNTliMjlhNDUxY2M1MDIwNzhhOWU0YmEzMjM0NWE0MjUwYzA1Ci1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglNb24gSnVuIDIyIDA5OjE4OjU3IDIwMDkgKzAyMDAKLQotICAgIGFybSBub21hZGlrOiBhbGxvdyBOYW5kIGFuZCBPbmVOYW5kIHRvIGNvZXhpc3RzCi0KLSAgICBUaGUgZXZhbHVhdGlvbiBraXQgaGFzIGJvdGggTmFuZCBhbmQgT25lTmFuZCwgYm90aCBkcml2ZXJzIGFyZSB0aGVyZQotICAgIGFuZCB0aGUgdHdvIGNvbmZpZ3VyYXRpb25zIG9ubHkgc2VsZWN0IGEgZGlmZmVyZW50IGRlZmF1bHQgZm9yIHRoZQotICAgIGpmZnMgcGFydGl0aW9uLiBUaGlzIGFkZHMgdGhlIE9uZU5hbmQgZHJpdmVyIGFuZCBjbGVhbnMgdXAgc3RvcmFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci0gICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0ZXJpY3Nzb24uY29tPgotCi1jb21taXQgZmQxNGM0MWE4NjFjZDM4ZWUyZmUzYWJkNjFkNTliNTdiNGViMjNjOQotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotRGF0ZToJTW9uIEp1biAyMiAwOToxODo0NyAyMDA5ICswMjAwCi0KLSAgICBhcm0gbm9tYWRpazogY2xlYW51cCByZXNldAotCi0gICAgVGhlcmUgaXMgb25seSBvbmUgcHVibGljIHJlbGVhc2Ugb2YgdGhlIE5vbWFkaWsgY2hpcCwgc28gdGhlIGlmZGVmCi0gICAgaW4gcmVzZXQgY29kZSBhcyB3ZWxsIGFzIGEgZGVmaW5lIGluIHRoZSBjb25maWcgZmlsZSBhcmUgbm90IG5lZWRlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLSAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rlcmljc3Nvbi5jb20+Ci0KLWNvbW1pdCBlZTEzNjNmMmRhMzk5NmJhZmRlY2RkOGY0ZTQ4ODYyZWJmZjNmMjcxCi1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglNb24gSnVuIDIyIDA5OjE4OjM3IDIwMDkgKzAyMDAKLQotICAgIGFybSBub21hZGlrOiByZW5hbWUgYm9hcmQgdG8gbmhrODgxNQotCi0gICAgVGhpcyBpcyBhbiBlcnJvciBpbiBteSBzaWRlIGluIHRoZSBpbml0aWFsIHN1Ym1pc3Npb246IG5vYm9keQotICAgIGNhbGxzIGl0ICIibm1kazg4MTUiLCBpdCdzICJub21hZGlrIGhhcmR3YXJlIGtpdCIsIG5oazg4MTUsIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotICAgIEFja2VkLWJ5OiBBbmRyZWEgR2FsbG8gPGFuZHJlYS5nYWxsb0BzdGVyaWNzc29uLmNvbT4KLQotY29tbWl0IDA0MGY4ZjYzZTkyMmJiZmI4YmEwOTU4YmY2MzdmMTFhOTE3ZjVjMzgKLUF1dGhvcjogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDEgMjA6NDA6NDEgMjAwOSArMDIwMAotCi0gICAgeHNjYWxlOiBhZGQgc3VwcG9ydCBmb3IgdGhlIHBvbGFyaXMgYm9hcmQKLQotICAgIFRoZSBQb2xhcmlzIGJvYXJkIGlzIGJhc2VkIG9uIHRoZSBUcml6ZXBzSVYgbW9kdWxlIG9mCi0gICAgS2VpdGggJiBLb2VwIChodHRwOi8vd3d3LmtlaXRoLWtvZXAuY29tKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgODhiZDk3NTAxMzE0NjgzYjg3ZjNmMWVkY2Y1NWIzNDdjMDQxYjcyMgotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgMSAwNDozMzo1NiAyMDA5ICswMjAwCi0KLSAgICB4c2NhbGU6IGZpeCBVU0IgaW5pdGlhbGl6YXRpb24gZm9yIFRyaXplcHNpdiBtb2R1bGUKLQotICAgIER1ZSB0byBjaGFuZ2UgaW4gdGhlIHVzYl9ib2FyZF9pbml0KCkgcHJvdG90eXBlLCB0aGUgVVNCIGZvcgotICAgIHRoZSBUcml6ZXBzSVYgd2FzIG5vdCBjb3JyZWN0bHkgaW5pdGlhbGl6ZWQuCi0gICAgUmVtb3ZlZCBkdW1teSBwcmludCBmcm9tIHVzYl9ib2FyZF9zdG9wKCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDBiNzg1ZGRkNjAxMjBjZmI3NGQxOGU1OGM1NjA1NDIzODIxOWY2ZGIKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJV2VkIEp1bCAxIDIwOjM0OjUxIDIwMDkgKzAyMDAKLQotICAgIG5ldDogbWVyZ2UgYnVnZml4OiBNYXJ2ZWxsIEtpcmt3b29kIGdpZ2FiaXQgZXRoZXJuZXQgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGxvb2tzIG9rYXkgb24gdS1ib290LW5ldC5naXQvbmV4dCBicmFuY2gKLSAgICBidXQgd2hlbiBpdCB3YXMgbWVyZ2VkIHRvIHUtYm9vdC5naXQvbWFzdGVyIHRoZSBsYXN0IGxpbmUgaXMgbWlzc2luZwotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMzNiMWQzZjQzYTE2ZmJiNzkwMDQwNzVjZTg5YWU0ZTYxOGIyODhhMgotQXV0aG9yOiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci1EYXRlOglUdWUgSnVuIDMwIDIxOjAzOjM3IDIwMDkgKzAyMDAKLQotICAgIGF0OTE6IEFkZCBlc2QgZ21iaCBNRUVTQyBib2FyZCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgZXNkIGdtYmggTUVFU0MgYm9hcmQuCi0gICAgVGhlIE1FRVNDIGlzIGJhc2VkIG9uIGFuIEF0bWVsIEFUOTFTQU05MjYzIFNvQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KLQotY29tbWl0IDIxNzYxNTQwYjQzYzcwODZjNzVlZTlhZmI0MTJkYTFlNWRkZGUyZTkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMjE6MDM6MzUgMjAwOSArMDIwMAotCi0gICAgQVJNOiBVcGRhdGUgbWFjaC10eXBlcwotCi0gICAgdXBkYXRlIGFnYWluc3QgbGludXggdjIuNi4zMAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDQ1NjI3ZmNlMTgxMzlhNzRlMDc1NTEyNGQyNzM3NmI1MjBkYjE1NmMKLUF1dGhvcjogRGFuaWVsIEdvcnN1bG93c2tpIDxEYW5pZWwuR29yc3Vsb3dza2lAZXNkLmV1PgotRGF0ZToJVHVlIEp1biAzMCAyMzowMzozMyAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiBBZGQgQ0FOIGluaXQgZnVuY3Rpb24KLQotICAgIFRvIGVuYWJsZSBDQU4gaW5pdCwgQ09ORklHX0NBTiBoYXMgdG8gYmUgZGVmaW5lZCBpbiB0aGUgYm9hcmQgY29uZmlnIGZpbGUKLSAgICBhbmQgYXQ5MV9jYW5faHdfaW5pdCgpIGhhcyB0byBiZSBjYWxsZWQgaW4gdGhlIGJvYXJkIHNwZWNpZmljIGNvZGUuCi0KLSAgICBDQU4gaXMgYXZhaWxhYmxlIG9uIEFUOTFTQU05MjYzIGFuZCBBVDkxQ0FQOSBTb0MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci0KLWNvbW1pdCAyZTIzMDA4ZTVkYmRlN2ZlNGM0NzU4YmVlNWEzOTNlMWRiNzk2Y2RmCi1BdXRob3I6IFNpbW9uIEthZ3N0cm9tIDxzaW1vbi5rYWdzdHJvbUBuZXRpbnNpZ2h0Lm5ldD4KLURhdGU6CVR1ZSBKdW4gMzAgMjM6MDM6MzEgMjAwOSArMDIwMAotCi0gICAgYXJtOiBLaXJrd29vZDogQ29ycmVjdCBoZWFkZXIgZGVmaW5lCi0KLSAgICBDb3JyZWN0IGRlZmluZSB0eXBvICguIC0+ICwpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaW1vbiBLYWdzdHJvbSA8c2ltb24ua2Fnc3Ryb21AbmV0aW5zaWdodC5uZXQ+Ci0KLWNvbW1pdCA4NDQ5ZjI4N2Y1YzUzZDU5ZGIxM2MzYzUxMmU2YmQxNzUwYjY5MmQxCi1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBKdWwgMSAwMTowNzo1NSAyMDA5ICswMjAwCi0KLSAgICBNWDMxOiBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIGkuTVgzMSBQREsgYm9hcmQuCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgRnJlZXNjYWxlJ3MgaS5NWDMxIFBESyBib2FyZCAoYS5rLmEuIDMgc3RhY2sgYm9hcmQpLgotCi0gICAgVGhpcyBwYXRjaCBhc3N1bWVzIHRoYXQgc29tZSBvdGhlciBwcm9ncmFtIHBlcmZvcm1zIHRoZSBhY3R1YWwKLSAgICBOQU5EIGJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IEZhYmlvIEVzdGV2YW0gPGZhYmlvZXN0ZXZhbUB5YWhvby5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDhkNDYwYTU3M2UyYTJhYzQ4MzQ2MzY5MDM4NjVhMDQyOGFkMGU2MjkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBKdW4gMjMgMDA6MTI6MDEgMjAwOSArMDIwMAotCi0gICAgUzNDMjR4MDogZXh0cmFjdCBpbnRlcnJ1cHRzIGZyb20gdGltZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBjOGJhZGJlNTAwYTc1MmY0MjA0OWU1MTA0Mjc2N2VlNjJlYTcxNGUwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gSnVuIDI4IDE0OjE0OjIxIDIwMDkgKzAyMDAKLQotICAgIGRtMzU1L3BtOTI2MTogYWRkIG1pc3NpbmcgQ09ORklHX05FVF9NVUxUSQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDc5OGJmOWE5YWRlMWNmYmU4NWExNmQxODBjYWQ3MjA5MjdkOGUxMGEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBKdW4gMjMgMDA6MTI6MDEgMjAwOSArMDIwMAotCi0gICAgYXJtOTIwdC9pbnRlcnJ1cHRzOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMDZlNzU4ZTc1Yzc5Y2U4NzYxODY2YmY4MTY1YzQ0MzU4NGEyMDg5MwotQXV0aG9yOiBLaW0sIEhldW5nIEp1biA8cml2ZXJmdWxAZ21haWwuY29tPgotRGF0ZToJU2F0IEp1biAyMCAxMTowMjoxNyAyMDA5ICswMjAwCi0KLSAgICBtb3ZlIEwyIGNhY2hlIGVuYWJsZS9kaXNhYmxlIGZ1bmN0aW9uIHRvIGNhY2hlLmMgaW4gdGhlIG9tYXAzIFNvQyBkaXJlY3RvcnkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhldW5nSnVuLCBLaW0gPHJpdmVyZnVsLmtpbUBzYW1zdW5nLmNvbT4KLSAgICBDQzogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDU4M2VmNTE0NzA2NmQzNjA5ZGUyMWYzYmVlYmJhYjk5YTE5YmFkNAotQXV0aG9yOiBUaG9tYXMgTGFuZ2UgPHRob21hc0Bjb3JlbGF0dXMuc2U+Ci1EYXRlOglTYXQgSnVuIDIwIDExOjAyOjE3IDIwMDkgKzAyMDAKLQotICAgIEFSTSBEYVZpbmNpOiBFTUlGIHNldHRpbmdzCi0KLSAgICBOQU5EIG1vZHVsZSBzaG91bGQgbm90IG1vZGlmeSBFTUlGIHJlZ2lzdGVycyB1bnJlbGF0ZWQgdG8gQ1MyCi0gICAgdGhhdCBpcyB1c2VkIGZvciBOQU5ELCBpLmUuIGRvIG5vdCBtb2RpZnkgRVdBSVQgY29uZmlnIHJlZ2lzdGVyCi0gICAgb3IgcmVnaXN0ZXJzIGZvciBvdGhlciBDaGlwIFNlbGVjdHMuCi0KLSAgICBXaXRob3V0IHRoaXMgcGF0Y2gsIEVNSUYgY29uZmlndXJhdGlvbnMgbWFkZSBpbiBib2FyZF9pbml0KCkKLSAgICB3aWxsIGJlIGludmFsaWRhdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIExhbmdlIDx0aG9tYXNAY29yZWxhdHVzLnNlPgotCi1jb21taXQgMjYwMGI4NTcxYTI2YzEwYzFjNDM0MDFkN2FmMzhlMjMzM2NjNTM4MQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEp1biAyMCAxMTowMjoxNyAyMDA5ICswMjAwCi0KLSAgICB2ZXJzYXRpbGU6IGNvbmZpZyBjb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBDYzogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLQotY29tbWl0IDRlZmI3N2Q0MWY5YzVkOTNmMGY5MmRkYTYwZTc0MjAyM2ZhMDNjNzIKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJU2F0IEp1biAyMCAxMTowMTo1MyAyMDA5ICswMjAwCi0KLSAgICBhcm06IEtpcmt3b29kOiBCYXNpYyBTT0NzIHN1cHBvcnQKLQotICAgIEtpcmt3b29kIGZhbWlseSBjb250cm9sbGVycyBhcmUgaGlnaGx5IGludGVncmF0ZWQgU09DcwotICAgIGJhc2VkIG9uIEZlcm9jZW9uLTg4RlIxMzEvU2hlZXZhLTg4U1YxMzEvYXJtOTI2ZWpzIGNwdSBjb3JlLgotCi0gICAgU09DIHZlcnNpb25zIHN1cHBvcnRlZDotCi0gICAgMSkgODhGNjI4MS1BMAlkZWZpbmUgQ09ORklHX0tXODhGNjI4MV9BMAotICAgIDIpIDg4RjYxOTItQTAJZGVmaW5lIENPTkZJR19LVzg4RjYxOTJfQTAKLQotICAgIE90aGVyIHN1cHBvcnRlZCBmZWF0dXJlczotCi0gICAgMSkgZ2V0X3JhbmRvbV9oZXgoKSBmdWNudGlvbgotICAgIDIpIFBDSSBFeHByZXNzIHBvcnQgaW5pdGlhbGl6YXRpb24KLSAgICAzKSBOUzE2NTUwIGRyaXZlciBzdXBwb3J0Ci0KLSAgICBDb250cmlidXRvcnM6Ci0gICAgWW90YW0gQWRtb24gPHlvdGFtQG1hcnZlbGwuY29tPgotICAgIE1pY2hhZWwgQmxvc3RlaW4gPG1pY2hhZWxibEBtYXJ2ZWxsLmNvbQotCi0gICAgUmV2aWV3ZWQtYnk6IFJvbmVuIFNoaXRyaXQgPHJzaGl0cml0QG1hcnZlbGwuY29tPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9zZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA1YzNkNTgxN2U1ZTY4YjgyOGMxNjVjNTAxYzIxNWU3OTNkYzYzYWFjCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CVNhdCBKdW4gMjAgMTE6MDE6NTIgMjAwOSArMDIwMAotCi0gICAgYXJtOiBnZW5lcmljIGNhY2hlLmggZm9yIEFSTSBhcmNoaXRlY3R1cmVzCi0KLSAgICBUaGlzIHBhdGNoIGlzIHJlcXVpcmVkIGZvciBLaXJrd29vZCBTb0Mgc3VwcG9ydAotICAgIG1heSBiZSB1c2VkIGJ5IG90aGVyIEFSTSBhcmNoaXRlY3R1cmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0KLWNvbW1pdCA5YzhjNzA2YzkyZTUzNDMzYTg3MWE1NjM5NDZjMzgwNzVkNzY1MDRkCi1BdXRob3I6IE1hdHRoaWFzIEx1ZHdpZyA8bWx1ZHdpZ0B1bHRyYXRyb25pay5kZT4KLURhdGU6CVNhdCBKdW4gMjAgMTE6MDE6NTAgMjAwOSArMDIwMAotCi0gICAgT01BUDNFVk06IGZpeCB0eXBvLiByZXBsYWNlIENTNiBieSBDUzUsIG5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBMdWR3aWcgPG1sdWR3aWdAdWx0cmF0cm9uaWsuZGU+Ci0KLWNvbW1pdCAwYWFmZGUxZGM3NmQ2ZDY1ZDZiZTEwYmY0OTllYzg2ZDlmZmVlOGI5Ci1BdXRob3I6IFNlZGppIEdhb3Vhb3UgPHNlZGppLmdhb3Vhb3VAYXRtZWwuY29tPgotRGF0ZToJV2VkIEp1biAyNCAwODozMjowOSAyMDA5ICswMjAwCi0KLSAgICBhdDkxc2FtOTI2MC85MjYzOiBhZGQgYmFjayB1cCBmb3IgdGhlIHJzdChyZXNldCBjb250cm9sbGVyKS4KLQotICAgIE9uIHRoZSBib2FyZHMgYXQ5MXNhbTkyNjBlaywgYXQ5MXNhbTkyNjNlayBhbmQgYWZlZDkyNjAsIHRoZSByc3RjIHJlZ2lzdGVyIHdhcwotICAgIHNldCB0byAwIGFmdGVyIGJlaW5nIHNldCB0byA1MDAgbXMgZm9yIHRoZSBQSFkgcmVzZXQuCi0gICAgRG8gYmFja3VwIHRoZSBvbGQgcmVzZXQgbGVuZ3RoIGFuZCByZXN0b3JlIGl0IGFmdGVyIHRoZSBNQUNCIGluaXRpYWxpc2F0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VkamkgR2FvdWFvdSA8c2VkamkuZ2FvdWFvdUBhdG1lbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLQotY29tbWl0IGFmYjBiMTMxNWMwNDhjZTJiMWYzNWYwMTgzYjhiMTE4YWQwYzE0ZTEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBKdWwgMyAxMjo0NTo0NCAyMDA5IC0wNTAwCi0KLSAgICBmc2w6IEZpeCBjb21waWxlciB3YXJuaW5ncyBmcm9tIGdjYy00LjQgaW4gc3lzX2VlcHJvbSBjb2RlCi0KLSAgICBzeXNfZWVwcm9tLmM6IEluIGZ1bmN0aW9uICdkb19tYWMnOgotICAgIHN5c19lZXByb20uYzozMjM6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIHN5c19lZXByb20uYzogSW4gZnVuY3Rpb24gJ21hY19yZWFkX2Zyb21fZWVwcm9tJzoKLSAgICBzeXNfZWVwcm9tLmM6Mzk1OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlOTRlNDYwYzZlODc0MWY0MmRhYjZkOGRkNGI1OTZiYTVkOWQ3OWFlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE3OjE1OjUxIDIwMDkgLTA1MDAKLQotICAgIDgzeHg6IEFkZCBzdXBwb3J0IGZvciBmc2xfZG1hIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBSZXZpZXdlZC1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+Ci0gICAgVGVzdGVkLWJ5OiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOWFkZGE1NDU5Y2E2MjEyMGMwYzUwYjgyYjc2NmZlMWNmNjkyNWJiZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEp1biAzMCAxNzoxNTo1MCAyMDA5IC0wNTAwCi0KLSAgICA4M3h4OiBSZXBsYWNlIENPTkZJR19FQ0NfSU5JVF9WSUFfRERSQyByZWZlcmVuY2VzCi0KLSAgICBVcGRhdGUgODN4eCBhcmNoaXRlY3R1cmUncyBDT05GSUdfRUNDX0lOSVRfVklBX0REUkMgcmVmZXJlbmNlcyB0bwotICAgIENPTkZJR19FQ0NfSU5JVF9WSUFfRERSQ09OVFJPTExFUiwgd2hpY2ggb3RoZXIgRnJlZXNjYWxlIGFyY2hpdGVjdHVyZXMKLSAgICB1c2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDAzOTU5NGE0MzAxZGFkY2ViMjY3ZGI1ZThiOWM4Yzc4YjFiYjg2YjUKLUF1dGhvcjogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDIgMTY6MTU6MDEgMjAwOSArMDUzMAotCi0gICAgOHh4eDogU2Vjb25kIFVBUlQgcG9ydCBhZGRlZCBmb3IgTVBDODV4eCwgTVBDODN4eCwgTVBDODZ4eCBwcm9jZXNzb3JzCi0KLSAgICBEZWZpbmluZyB0aGUgbmV4dCB0d28gY29uZmlncyBhbGxvd3MgdG8gc3dpdGNoIHRoZSBzZXJpYWwgcG9ydCBmcm9tIHRoZQotICAgIGNvbnNvbGUgdXNpbmcgdGhlIHNldGVudiBzdGRpbiBhbmQgc3Rkb3V0Ci0gICAgICAxLiAjZGVmaW5lIENPTkZJR19TRVJJQUxfTVVMVEkgMSAvKiBFbmFibGUgYm90aCBzZXJpYWwgcG9ydHMgKi8KLSAgICAgIDIuICNkZWZpbmUgQ09ORklHX1NZU19DT05TT0xFX0lTX0lOX0VOViAvKiBkZXRlcm1pbmUgZnJvbSBlbnZpcm9ubWVudCAqLwotCi0gICAgU2lnbmVkLW9mZi1ieTogUG9vbmFtIEFnZ3J3YWwgPHBvb25hbS5hZ2dyd2FsQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTQ2YjEwMzI5MDdkZjcwZjJkZDBmOThmM2FkMDk4ODVhODg0MTFlNQotQXV0aG9yOiBQb29uYW0gQWdncndhbCA8cG9vbmFtLmFnZ3J3YWxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgMiAxNjoxNDo0MCAyMDA5ICswNTMwCi0KLSAgICA4NXh4OiBBZGRzIEdQSU8gcmVnaXN0ZXJzIHRvIE1QQzg1eHggTWVtb3J5IE1hcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsIDxwb29uYW0uYWdncndhbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1ZGE2ZjgwNmI0MDAzNzJiOGEwNjY0ZjMyODJjOWU4M2E0MDJlYjY2Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE3OjI2OjAxIDIwMDkgLTA1MDAKLQotICAgIDg2eHg6IFhQZWRpdGU1MTcwIGJvYXJkIHN1cHBvcnQKLQotICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMgWFBlZGl0ZTUxNzAgLQotICAgIGEgTVBDODY0MC1iYXNlZCAzVSBWUFggc2luZ2xlIGJvYXJkIGNvbXB1dGVyIHdpdGggYSBQTUMvWE1DCi0gICAgc2l0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGU2NmYzOGRhODQzNDQyNWFjYThkZjA4ZDA2ZDllZjQxYjM0NzhkM2IKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdWwgMSAxNjo1MTo1OSAyMDA5IC0wNTAwCi0KLSAgICBmc2xfZGRyOiBGaXggRERSMyBjYWxjdWxhdGlvbiBvZiByYW5rIGRlbnNpdHkgd2l0aCA4R0Igb3IgbW9yZQotCi0gICAgVGhlIGNhbGN1bGF0ZSBmb3IgcmFuayBkZW5zaXR5IGluIGNvbXB1dGVfcmFua3NpemUoKSBmb3IgRERSMyB1c2VkIGFsbAotICAgIGludGVnZXJzIGZvciB0aGUgZXhwcmVzc2lvbiwgc28gdGhlIHJlc3VsdCB3YXMgYWxzbyBhIDMyLWJpdCBpbnRlZ2VyLCBldmVuCi0gICAgdGhvdWdoIHRoZSAnYnNpemUnIHZhcmlhYmxlIGlzIGEgdTY0LiAgRml4IHRoZSBleHByZXNzaW9uIHRvIGNhbGN1bGF0ZSBhCi0gICAgdHJ1ZSA2NC1iaXQgdmFsdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2YWYwMTViODZiODZkOTRkZTdjYTFiMjNhMzg5MGJjOTNhNTBjMmFiCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQ5IDIwMDkgLTA1MDAKLQotICAgIGZzbF9kbWE6IE1ha2UgRE1BIHRyYW5zYWN0aW9ucyBzbm9vcGFibGUKLQotICAgIE1ha2UgRE1BIHRyYW5zYWN0aW9ucyBzbm9vcGFibGUgc28gdGhhdCBDUFVzIGNhbiBrZWVwIGNhY2hlcyB1cC10by1kYXRlLgotICAgIFRoaXMgYWxsb3dzIGRtYSB0cmFuc2FjdGlvbnMgdG8gYmUgdXNlZCBmb3Igb3BlcmF0aW9ucyBzdWNoIGFzIG1lbW9yeQotICAgIGNvcGllcyB3aXRob3V0IGFueSBhZGRpdGlvbmFsIGNhY2hlIGNvbnRyb2wgb3BlcmF0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDBkNTk1Zjc2YmM5YzdjOGRmZjViZDMxZGZmZWQ4N2E4NDBhMDNjNTYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMTc6MTU6NDggMjAwOSAtMDUwMAotCi0gICAgZnNsX2RtYTogQnJlYWsgb3V0IGNvbW1vbiBtZW1vcnkgaW5pdGlhbGl6YXRpb24gZnVuY3Rpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDc5ZjQzMzNjZWIwNTkwNDliM2VlNTYwMTY3ZDZjYmFlYzQ5MzY5NWYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMTc6MTU6NDcgMjAwOSAtMDUwMAotCi0gICAgOHh4eDogTW92ZSBkbWFfaW5pdCgpIGNhbGwgdG8gY29tbW9uIGNvZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDE5MWM3MTE4NTkyY2QxODJmMmRjN2Y0NmI0ZjcyZDliZWQwZTJjNzYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMTc6MTU6NDYgMjAwOSAtMDUwMAotCi0gICAgZnNsX2RtYTogTW92ZSBkbWEgZnVuY3Rpb24gcHJvdG90eXBlcyB0byBjb21tb24gaGVhZGVyIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDc4OTJmNjE5ZDQwZjQxOTZlNDFlNzExNGM1ZGZlZTlmYWQwZjU3MmYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMTc6MTU6NDUgMjAwOSAtMDUwMAotCi0gICAgOHh4eDogUmVuYW1lIGRtYV94ZmVyKCkgdG8gZG1hY3B5KCkKLQotICAgIEFsc28gdXBkYXRlIGRtYWNweSgpJ3MgYXJndW1lbnQgb3JkZXIgdG8gbWF0Y2ggbWVtY3B5J3MgYW5kIHVzZQotICAgIHBoeXNfYWRkcl90L3BoeV9zaXplX3QgZm9yIGFkZHJlc3Mvc2l6ZSBhcmd1bWVudHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ4NDkxOWNmMzM1MTIxMmViZjc0OGI5YjEzZWNlMWRkYWY3ZTdkMWMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBKdW4gMzAgMTc6MTU6NDQgMjAwOSAtMDUwMAotCi0gICAgZnNsX2RtYTogRml4IENoYW5uZWwgU3RhcnQgYnVnIGluIGRtYV9jaGVjaygpCi0KLSAgICBUaGUgQ2hhbm5lbCBTdGFydCAoQ1MpIGJpdCBpbiB0aGUgTW9kZSBSZWdpc3RlciAoTVIpIHNob3VsZCBhY3R1YWxseSBiZQotICAgIGNsZWFyZWQgYXMgdGhlIGNvbW1lbnQgaW4gdGhlIGNvZGUgc3VnZ2VzdHMuICBQcmV2aW91c2x5LCBDUyB3YXMgYmVpbmcKLSAgICBzZXQsIG5vdCBjbGVhcmVkLgotCi0gICAgQXNzdW1pbmcgbm9ybWFsIG9wZXJhdGlvbiBvZiB0aGUgRE1BIGVuZ2luZSwgdGhpcyBjaGFuZ2Ugc2hvdWxkbid0IGhhdmUKLSAgICBhbnkgcmVhbCBhZmZlY3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1MTQwMmFjMTJiZTlhMDAyNWYxNmRiNTFmYmRlN2MwNTBhNTRlNWZlCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQzIDIwMDkgLTA1MDAKLQotICAgIGZzbF9kbWE6IEFkZCBzdXBwb3J0IGZvciBhcmJpdHJhcmlseSBsYXJnZSB0cmFuc2ZlcnMKLQotICAgIFN1cHBvcnQgRE1BIHRyYW5zZmVycyBsYXJnZXIgdGhhbiB0aGUgRE1BIGNvbnRyb2xsZXIncyBsaW1pdCBvZgotICAgICgyIF4gMjYgLSAxKSBieXRlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYTczMDM5M2EzNjI3NDFjMzE4YjIxNzcxYjhkN2IyNjQ3ZTU0NmMzZQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEp1biAzMCAxNzoxNTo0MiAyMDA5IC0wNTAwCi0KLSAgICBmc2xfZG1hOiBVc2UgcHJvcGVyIEkvTyBhY2Nlc3MgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5YzA2MDcxYTYwNzdiYTk1ZTlkNDMyMjYxNTZlMzk1NjdkNWQwNjRhCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDE3OjE1OjQxIDIwMDkgLTA1MDAKLQotICAgIGZzbF9kbWE6IEFkZCBiaXRmaWVsZCBkZWZpbml0aW9ucyBmb3IgY29tbW9uIHJlZ2lzdGVycwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMDE3ZjExZjY4ZWY1NDNlODY2YmUwMzNiY2I3YjgwNThhOGEzODBkOAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEp1biAzMCAxNzoxNTo0MCAyMDA5IC0wNTAwCi0KLSAgICA4eHh4OiBCcmVhayBvdXQgRE1BIGNvZGUgdG8gYSBjb21tb24gZmlsZQotCi0gICAgRE1BIHN1cHBvcnQgaXMgbm93IGVuYWJsZWQgdmlhIHRoZSBDT05GSUdfRlNMX0RNQSBkZWZpbmUgaW5zdGVhZCBvZiB0aGUKLSAgICBwcmV2aW91cyBDT05GSUdfRERSX0VDQwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNmJiY2VkNjcxNzE5NTE4ZDBlMjhmZjQyMjYyM2NkN2NlMzk2Y2JkYQotQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmotbGlzdEBtaW1jLmNvLnVrPgotRGF0ZToJTW9uIEp1biAyOSAxNTo1OToxMCAyMDA5ICswMTAwCi0KLSAgICBBdG1lbCBMQ0QgZHJpdmVyIEdVQVJEVElNRSBmaXgKLQotICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBndWFyZCB0aW1lIHBhcmFtZXRlciB0byBiZSBzZXQgaW4KLSAgICB0aGUgQXRtZWwgTENEQyBkcml2ZXIuCi0KLSAgICBCeSBkZWZhdWx0LCB0aGUgcHJldmlvdXMgdmFsdWUgb2YgMSBpcyB1c2VkLCB1bmxlc3MgdGhlCi0gICAgc2V0dGluZyBpcyBkZWZpbmVkIGVsc2V3aGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgotCi1jb21taXQgMjljMzUxODI0NjJmZWVhMDlmMzIyZTUxOTEzNzU5YTUzMzU5YTNlMAotQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDMwIDEzOjU2OjIzIDIwMDkgKzA4MDAKLQotICAgIDg1eHg6IEFkZCBwY2kgZTEwMDAgRXRoZXJuZXQgc3VwcG9ydCBmb3IgUDIwMjAgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTU2OTg0YTM2MTFjMjgwOTM5MTlkM2UzYzA0MmY3MjJiNTU0ODI1MwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEp1biAxOCAwODozOTo0MiAyMDA5IC0wNTAwCi0KLSAgICA4eHh4OiBGaXggUENJIGJ1cyBhZGRyZXNzIHNldHVwIGZvciAzNi1iaXQgY29uZmlncwotCi0gICAgV2Ugd2FudCB0aGUgb3V0Ym91bmQgUENJIG1lbW9yeSBtYXAgdG8gZW5kIGF0IHRoZSA0RyBib3VuZGFyeSBzbyB3ZQotICAgIGNhbiBtYXhpbWl6ZSB0aGUgYW1vdW50IG9mIHNwYWNlIGF2YWlsYWJsZSBmb3IgaW5ib3VuZCBtYXBwaW5ncyBpZgotICAgIHdlIGhhdmUgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCi0KLSAgICBUaGlzIG1hdGNoZXMgdGhlIGRldmljZSB0cmVlIHNldHVwIGluIHRoZSBrZXJuZWwgZm9yIHRoZSAzNi1iaXQgcGh5c2ljYWwKLSAgICBjb25maWdzIGZvciB0aGUgcGxhdGZvcm1zIHRoYXQgaGF2ZSBvbmUgKE1QQzg2NDEgSFBDTiAmIE1QQzg1NzIgRFMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ4MGY2MTc5MDU2NWQ3NzQzMmI3MGI0MDE2YjczZjJhZTI3ZDUzMGYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKdW4gMTggMDg6MjM6MDEgMjAwOSAtMDUwMAotCi0gICAgODZ4eDogQWRkIENQVV9UWVBFX0VOVFJZIHN1cHBvcnQKLQotICAgIFVuaWZ5IHdpdGggODN4eCBhbmQgODV4eCBhbmQgdXNlIENQVV9UWVBFX0VOVFJZLiAgV2UgYXJlIGdvaW5nIHRvIHVzZQotICAgIHRoaXMgdG8gY29udmV5IHRoZSAjIG9mIGNvcmVzIGFuZCBERFIgd2lkdGggaW4gdGhlIG5lYXIgZnV0dXJlIHNvIGl0cwotICAgIGdvb2QgdG8ga2VlcCBpbiBzeW5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDk4YWIxNGU4NThiZjYwMzA2ZDBhYTNmMGRmNWE3YTVmODgyNjRhZmYKLUF1dGhvcjogUGV0ZXIgTWVlcndhbGQgPHBtZWVyd0BwbWVlcncubmV0PgotRGF0ZToJTW9uIEp1biAyOSAxNTo0ODozMyAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogVFdJL0kyQzogZml4IHB1cmUgd3JpdGVzCi0KLSAgICBJZiBkb2luZyBhIHB1cmUgd3JpdGUgd2l0aCByZWdpc3RlciBhZGRyZXNzIGFuZCBkYXRhIChub3QgYSByZWFkL3dyaXRlCi0gICAgY29tYm8gdHJhbnNmZXIpLCB3ZSBkb24ndCBzZXQgdGhlIGluaXRpYWwgdHJhbnNmZXIgbGVuZ3RoIHByb3Blcmx5IHdoaWNoCi0gICAgZW5kcyB1cCBjYXVzaW5nIG9ubHkgdGhlIHJlZ2lzdGVyIGFkZHJlc3MgdG8gYmUgdHJhbnNmZXJyZWQuCi0KLSAgICBXaGlsZSB3ZSdyZSBoZXJlLCBmaXggdGhlIGkyY193cml0ZSgpIHBhcmFtZXRlciBkZXNjcmlwdGlvbiBvZiB0aGUgYnVmZmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgTWVlcndhbGQgPHBtZWVyd0BwbWVlcncubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDU3MTBkZTQ1ODA4ZWI4ZjFjYzM0YjUxZGMzZTY3ZTI0MjIxMTMyNDkKLUF1dGhvcjogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotRGF0ZToJU2F0IE1heSAzMCAwMToxMzozMyAyMDA5ICswNTMwCi0KLSAgICBzcGk6IEFkZCBNYXJ2ZWxsIEtpcmt3b29kIFNQSSBkcml2ZXIKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIFNQSSBkcml2ZXIgZm9yIHRoZSBNYXJ2ZWxsIEtpcmt3b29kIFNvQydzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhZnVsbGEgV2FkYXNrYXIgPHByYWZ1bGxhQG1hcnZlbGwuY29tPgotCi1jb21taXQgNmJkZTE3MWE0YzQxMTZjZWUxNzkxNjdjYjY1MzM1YTI4Zjk5OTMyZAotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglUaHUgSnVuIDI1IDE5OjIxOjMzIDIwMDkgKzA5MDAKLQotICAgIHMzYzY0eHg6IG1vdmUgdGhlIHJlc2V0X2NwdSBmdW5jdGlvbgotCi0gICAgQmVjYXVzZSBvZiB0aGUgcmVzZXRfY3B1IGlzIHNvYyBzcGVjaWZpYywgc2hvdWxkIGJlIG1vdmUgdG8gc29jCi0gICAgQW5kIHJlYWQgcmVzZXQgdmFsdWUgZnJvbSBTWVNfSUQgcmVnaXN0ZXIgaW5zdGVhZCBvZiBoYXJkIGNvZGUKLSAgICB0aGlzIHBhdGNoIGFsc28gc3VwcG9ydHMgczNjNjQxMAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlua3l1IEthbmcgPG1rNy5rYW5nQHNhbXN1bmcuY29tPgotCi1jb21taXQgNTc2YWZkNGZhZWJhMTUxOWJjYjhjMDA4M2MzZTRkNDVlNTY0M2E0OAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1heSAxNyAwMDo1ODozNyAyMDA5ICswMjAwCi0KLSAgICBpbnRlZ3JhdG9yOiBtZXJnZSBpbnRlZ3JhdG9yYXAgYW5kIGludGVncmF0b3JjcAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBBY2tlZC1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLQotY29tbWl0IDQ2OTM3YjI3NDI3Njg4YTU2YmY3ZjU5NDRhOTJkOTYyZGM0M2MzZmEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTcgMDA6NTg6MzYgMjAwOSArMDIwMAotCi0gICAgaW50ZWdyYXRvcmFwL2NwOiB1c2UgY2ZpIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBBY2tlZC1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLQotY29tbWl0IGRlN2EwMWFiZDhhZWIxNjc5NDZmMzkxMzI3ZTFlMGQxZTAxZjkwYzkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTcgMDA6NTg6MzYgMjAwOSArMDIwMAotCi0gICAgaW50ZWdyYXRvcmFwL2NwL3ZlcnNhdGlsZTogcmVtb3ZlIG5vbiB1c2VkIGZ1bmN0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBBY2tlZC1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLQotY29tbWl0IGY1NDg1MWE2ZTM4NDRiN2UwMTU4MWI1YTk2ODFmMjk0MTE4Yjc1MjkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTcgMDA6NTg6MzYgMjAwOSArMDIwMAotCi0gICAgaW50ZWdyYXRvcmNwOiBzcGxpdCB0aW1lciBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIEFja2VkLWJ5OiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotCi1jb21taXQgMmJjZWYwNzIzZWExMWM0ZTliZmJjZmZmMmE5M2VjMmRhNTIwYjVmMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1heSAxNyAwMDo1ODozNiAyMDA5ICswMjAwCi0KLSAgICBpbnRlZ3JhdG9yYXA6IHNwbGl0IHRpbWVyIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQWNrZWQtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci0KLWNvbW1pdCA4NmJhYTA4NWM1MmE3ZjMzNzdhODgwNzQ2NzljNWFjYTliOWU0ZDM4Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWF5IDE3IDAwOjU4OjM2IDIwMDkgKzAyMDAKLQotICAgIGludGVncmF0b3JhcDogc3BsaXQgcGNpIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQWNrZWQtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci0KLWNvbW1pdCAzNzllOWZjMGEzMTliOGY2YWUxNmQ3NjM1OTBiZjAyM2YzYWZiODdjCi1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJTW9uIEp1biA4IDA0OjEyOjUwIDIwMDkgKzA0MDAKLQotICAgIGFybTogYWRkIHN1cHBvcnQgZm9yIENPTkZJR19HRU5FUklDX01NQwotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA0N2QxOWRhNGQzZjlhYzQ3ODdhYmU5ZGVlMzI0MDY0Nzg0MjRiZTUyCi1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJTW9uIEp1biA4IDA0OjEyOjQ2IDIwMDkgKzA0MDAKLQotICAgIHNlcmlhbF9teDMxOiBhbGxvdyBpdCB0byB3b3JrIHdpdGggbXgyNyB0b28gYW5kIHJlbmFtZSB0byBzZXJpYWxfbXhjCi0KLSAgICBVQVJUIGhhcmR3YXJlIG9uIGkuTVgyNyBpcyB0aGUgc2FtZSBhcyBvbiB0aGUgaS5NWDMxIHNvIHdlIGp1c3QKLSAgICBuZWVkIHRvIHByb3ZpZGUgdGhlIGRyaXZlciB3aXRoIGNvcnJlY3QgYWRkcmVzcyBvZiB0aGUgcmVnaXN0ZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCAxZGM0ZGE3NDlkYmRlMjdlYzg2MmY1YjY1NzAzZThlNDU0MWZiYmEzCi1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJTW9uIEp1biA4IDA0OjEyOjQ1IDIwMDkgKzA0MDAKLQotICAgIG14Mjc6IGJhc2ljIGNwdSBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgZ2VuZXJpYyBjb2RlIHRvIHN1cHBvcnQgRnJlZXNjYWxlJ3MgaS5NWDI3IFNvQ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLQotY29tbWl0IGRkMmY2OTY1YTZjNzFmNmY3MTFlYzk4ODI3ODgwMTUyZTAyMmMyMzYKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJU2F0IEp1biAxMyAyMDo1MDowMyAyMDA5ICswMjAwCi0KLSAgICBpLk1YMzE6IENyZWF0ZSBhIGNvbW1vbiBkZXZpY2UgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IDk1OGY3ZGE3ODg3ZmVhNGEyMDkxYWU2MDk0NGQ2MmMxNzA4YzJjNTUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBKdW4gMTMgMjA6NTA6MDIgMjAwOSArMDIwMAotCi0gICAgQVJNOiBBZGQgbWFjcm9zLmggdG8gYmUgdXNlZCBpbiBhc3NlbWJsZXIgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0MGM2NDJiYzE5YjlmYTI5MDZlMzE3MjQ4N2E1MjJmZWU0NTYzNDBiCi1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBKdW4gMTMgMjA6NTA6MDEgMjAwOSArMDIwMAotCi0gICAgTVgzMTogQWRkIE5BTkQgU1BMIGZvciBpLk1YMzEuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIE5BTkQgU1BMIGZyYW1ld29yayBuZWVkZWQgdG8gYm9vdCBpLk1YMzEgYm9hcmRzCi0gICAgZnJvbSBOQU5ELgotCi0gICAgSXQgaGFzIGJlZW4gdGVzdGVkIG9uIGEgaS5NWDMxIFBESyBib2FyZCB3aXRoIGxhcmdlIHBhZ2UgTkFORC4gU21hbGwKLSAgICBwYWdlIE5BTkRzIHNob3VsZCB3b3JrIGFzIHdlbGwsIGJ1dCB0aGlzIGhhcyBub3QgYmVlbiB0ZXN0ZWQuCi0KLSAgICBOb3RlOiBUaGUgaS5NWDMxIE5GQyB1c2VzIGEgbm9uLXN0YW5kYXJkIGxheW91dCBmb3IgbGFyZ2UgcGFnZSBOQU5EcywKLSAgICB3aGV0aGVyIHRoaXMgaXMgY29tcGF0aWJsZSB3aXRoIGEgcGFydGljdWxhciBzZXR1cCBkZXBlbmRzIG9uIGhvdwotICAgIHRoZSBOQU5EIGRldmljZSBpcyBwcm9ncmFtbWVkIGJ5IHRoZSBmbGFzaCBwcm9ncmFtbWVyIChlLmcuIEpUQUcKLSAgICBkZWJ1Z2dlcikuCi0KLSAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIHdvcmsgYnkgTWF4aW0gQXJ0YW1vbm92LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF4aW0gQXJ0YW1vbm92IDxzY24xODc0QHlhbmRleC5ydT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBkZjgxMjM4YjNlMjdhNzkxZGE5OTZhOTIwODQwMmFjOGY0MGI5ODYyCi1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBKdW4gMTMgMjA6NTA6MDAgMjAwOSArMDIwMAotCi0gICAgQVJNMTEzNjogSW50cm9kdWNlIENPTkZJR19QUkVMT0FERVIgbWFjcm8uCi0KLSAgICBDdXJyZW50bHkgQ09ORklHX09ORU5BTkRfSVBMIGlzIHVzZWQgaW4gYSBudW1iZXIgb2YgI2lmZGVmJ3MKLSAgICBpbiBzdGFydC5TLiBJbiBwcmVwYXJhdGlvbiBmb3IgYWRkaW5nIHN1cHBvcnQgZm9yIE5BTkQgU1BMCi0gICAgdGhlIG1hY3JvIENPTkZJR19QUkVMT0FERVIgaXMgaW50cm9kdWN0ZWQgYW5kIHJlcGxhY2VzIHRoZQotICAgIENPTkZJR19PTkVOQU5EX0lQTCBpbiBzdGFydC5TLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotCi1jb21taXQgODA5NmM1MWZkNGU2MTFlZDY2NmRiZTc3NzY3ZTgxYWY1ZDk0ZmM3YgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEp1biAxMyAxMjo1MDowNCAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiB1bmlmeSBub3IgYm9vdCBzdXBwb3J0Ci0KLSAgICB0aGUgbG93bGV2ZWwgaW5pdCBzZXF1ZW5jZSBpcyB0aGUgc2FtZSBzbyB1bmlmeSBpdAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDFiM2I3YzY0MGQwNGRmMmJhOWE5ZDk0NzExN2QxMTJhNzVmZWU3ZjQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBKdW4gMTMgMTI6NDg6MzYgMjAwOSArMDIwMAotCi0gICAgYXQ5MXNhbTkyNjNlazogYWRkIG5vciBmbGFzaCBzdXBwb3J0Ci0KLSAgICB0aGlzIHdpbGwgYWxsb3cgeW91IHRvIHN0b3JlIHVzZSBpdCBmb3IgdGhlIGVudiBhbmQgdG8gYm9vdCBkaXJlY3RseSBVLUJvb3QgZnJvbQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDMyOTQ5MjMyOTcwMDgxMmM2ZGYyNzVhYTBmZGEwOWQ2MDljZDBmZDQKLUF1dGhvcjogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KLURhdGU6CUZyaSBKdW4gMTIgMjE6MjA6MzkgMjAwOSArMDIwMAotCi0gICAgYXQ5MTogYWRkIHN1cHBvcnQgZm9yIHRoZSBQTTkyNjEgYm9hcmQgb2YgUm9uZXRpeCBHbWJICi0KLSAgICBUaGUgUE05MjYxIGJvYXJkIGlzIGJhc2VkIG9uIHRoZSBBVDkxU0FNOTI2MS1FSyBib2FyZC4KLQotICAgIEhlcmUgaXMgdGhlIHBhZ2Ugb24gUm9uZXRpeCB3ZWJzaXRlOgotICAgIGh0dHA6Ly93d3cucm9uZXRpeC5hdC9zdGFydGVyX2tpdF85MjYxLmh0bWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDAxNTUwYTJiNjUwZmJhYmMwMzMzNGY5ZWFkY2M2MDgzNjAxYTI0MTQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBKdW4gMTIgMjE6MjA6MzggMjAwOSArMDIwMAotCi0gICAgcG05MjYzOiB1c2UgbWFjcm8gaW5zdGVhZCBvZiBoYXJkY29kZSB2YWx1ZSBmb3IgdGhlIGxvd2xldmVsX2luaXQKLQotICAgIG9wdGltaXplIGEgZmV3IHRoZSBSQU0gaW5pdAotCi0gICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgN2ExMWM3Zjk3NDcyNDBkYzc3MDk1NGQzMjA1Njk1OTZjMGZiY2I1MAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIEp1biAxMiAyMToyMDozNyAyMDA5ICswMjAwCi0KLSAgICBwbTkyNjM6IGxvd2xldmVsIGluaXQgdXBkYXRlCi0KLSAgICBtb3ZlIFBTUkFNIGluaXQgdG8gcG05MjYzLmMKLSAgICB0aGlzIHdpbGwgYWxsb3cgdXMgYWZ0ZXIgdG8gbWFrZSB0aGUgbm9yIGxvd2xldmVsX2luaXQgZ2VuZXJpYwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDNlODgzMzdiMjI1YmY3OTZmNmRmMjFkMGE3ZjU5MTUzMGU5ZDRjZTAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEp1biAxNSAwMDoyNToxOSAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogbW92ZSBBTEwgKz0gdS1ib290LmxkciB0byBibGFja2Zpbl9jb25maWcubWsKLQotICAgIFRoZSB3YXkgdGhlIEFMTCB2YXJpYWJsZSBpcyB1c2VkIGFsbG93cyBmb3IgY29uZmlnLm1rJ3MgdG8gYWRkIG1vcmUKLSAgICB0YXJnZXRzIHRoZW1zZWx2ZXMgd2l0aG91dCBoYXZpbmcgdG8gY2x1dHRlciB1cCB0aGUgdG9wIGxldmVsIE1ha2VmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYWZhYzhiMDcxNzJkN2U0YTY1Zjg2Y2UxZWM0Yzc4M2E2MTY1YmExZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVuIDE0IDIyOjI5OjM1IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBmaXggU1BJIGZsYXNoIHNwZWVkIGRlZmluZSBuYW1lCi0KLSAgICBUaGUgU1BJIGZsYXNoIGRlZmluZSBpcyBuYW1lZCBDT05GSUdfU0ZfREVGQVVMVF9TUEVFRCwgbm90Ci0gICAgQ09ORklHX1NGX0RFRkFVTFRfSFosIHNvIGZpeCB0aGUgdHlwb3MgaW4gdGhlIEJsYWNrZmluIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDlhZTU1Y2NmNjAxZGU3YTViNzVlYjQxOGYzZmMzZDVlY2E5MmMxMDYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEp1biAxNCAyMjoyNjozMSAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZW5hYmxlIC1PMiBpbiBsaWJfZ2VuZXJpYy8gZm9yIEFESS9CbHVldGVjaG5peCBib2FyZHMKLQotICAgIEJ1aWxkaW5nIHRoZSBjb21wcmVzc2lvbiBjb2RlIGluIGxpYl9nZW5lcmljLyB3aXRoIC1PMiByYXRoZXIgdGhhbiAtT3MKLSAgICBnaXZlcyBhIG5pY2Ugc3BlZWQgYm9vc3Qgd2l0aG91dCB0b28gbXVjaCBjb2RlIHNpemUgaW5jcmVhc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmZWE2M2UyYTQ0ZjBkYjUxZDJlMzllZTc3OTNlOGM2ZDdmM2NmNWQ0Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBKdW4gMTQgMjE6MjM6MjcgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTQ4LWV6a2l0OiBidW1wIHVwIG1vbml0b3Igc2l6ZQotCi0gICAgVGhlIGxhdGVzdCB2ZXJzaW9uIG9mIFUtQm9vdCBnb3QgYSBiaXQgZmF0dGVyIGluIHRoZSBCU1Mgc2VjdGlvbiB3aGljaAotICAgIGNhdXNlZCBvdmVyZmxvd3MgaW4gdGhlIFJBTSByZWdpb24sIHNvIGluY3JlYXNlIHRoZSBtb25pdG9yIHNpemUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiYzQzYThkODk5NGMyZjBiZTI5ZTA5YjEzYjE1ZGE3Zjc5ZTJjMDgxCi1BdXRob3I6IFZpdmkgTGkgPHZpdmkubGlAYW5hbG9nLmNvbT4KLURhdGU6CUZyaSBKdW4gMTIgMTA6NTM6MjIgMjAwOSArMDAwMAotCi0gICAgQmxhY2tmaW46IGJmNTMzLXN0YW1wL2JmNTM3LXN0YW1wOiBmaXggZW52IHNldHRpbmdzIGZvciBTUEkgZmxhc2gKLQotICAgIFRoZSBTUEkgZmxhc2ggbGF5ZXIgaXMgbXVjaCBzdHJpY3RlciBhYm91dCBzZWN0b3IgdXNhZ2UgdGhhbiB0aGUgZWVwcm9tCi0gICAgbGF5ZXIgd2UgdXNlZCB0byB1c2UsIHNvIHVwZGF0ZSB0aGUgZW52IHNldHRpbmdzIHRvIGJldHRlciBtYXRjaCB0aGUKLSAgICBzZWN0b3IgYWxpZ25tZW50IG9mIHRoZSBmbGFzaGVzIHdlIHVzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpdmkgTGkgPHZpdmkubGlAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2M2NiMGY0ZWIyZDNjZjE1ZTdhMWFkZDE5ZDEyODlmNGFlNzU4MTZjCi1BdXRob3I6IFZpdmkgTGkgPHZpdmkubGlAYW5hbG9nLmNvbT4KLURhdGU6CUZyaSBKdW4gMTIgMTA6MzM6MjMgMjAwOSArMDAwMAotCi0gICAgQmxhY2tmaW46IGJ1bXAgdXAgZGVmYXVsdCBKVEFHIGNvbnNvbGUgdGltZW91dAotCi0gICAgVGhlIGRlYnVnIHRvb2xzIHRoYXQgaW50ZXJmYWNlIHdpdGggdGhlIG90aGVyIHNpZGUgb2YgdGhlIEpUQUcgY29uc29sZQotICAgIGdvdCBtdWNoIHNsb3dlciB3aGVuIGdlbmVyYWxpemluZyB0aGluZ3MsIHNvIGJ1bXAgdXAgdGhlIGRlZmF1bHQgdGltZW91dAotICAgIHZhbHVlIG9uIHRoZSBVLUJvb3Qgc2lkZSB0byBjb3BlLiAgSG9wZWZ1bGx5IGF0IHNvbWUgcG9pbnQgd2UgY2FuIGltcHJvdmUKLSAgICB0aGUgZGVidWcgdG9vbHMgdG8gc3BlZWQgdGhpbmdzIGJhY2sgdXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXZpIExpIDx2aXZpLmxpQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzExZmY3NzlmNGUwZTBjN2VkYzMyMmU4NGRkMjI5YWQyODcwOTU5NQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gSnVuIDEgMTk6MDg6MzMgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFkZCBqdGFnY29uc29sZSBoZWxwZXIgc2NyaXB0Ci0KLSAgICBUaGlzIHNjcmlwdCBpcyBzaW1pbGFyIHRvIHRoZSBuZXRjb25zb2xlIHNjcmlwdCwgYnV0IGluc3RlYWQgd29ya3Mgd2l0aAotICAgIHRoZSBKVEFHIGNvbnNvbGUgZGV2aWNlIGRyaXZlciB0aGF0IGV4aXN0cyBvbiBCbGFja2ZpbiBwYXJ0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDYwZjYxZTZkNzY1NTQwMGJiNzg1YTJlZjYzNzU4MTY3OTk0MWY2ZDEKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglTYXQgTWF5IDIgMjE6NDk6MTggMjAwOSArMDIwMAotCi0gICAgQ29udmVydCBETTkwMDAgZHJpdmVyIGZvciBDT05GSUdfTkVUX01VTFRJCi0KLSAgICBBbGwgZHJpdmVycyBuZWVkIHRvIGJlIGNvbnZlcnRlZCB0byBDT05GSUdfTkVUX01VTFRJLgotICAgIFRoaXMgcGF0Y2ggY29udmVydHMgdGhlIGRtOTAwMCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgU21pdHMgPHRzLnNtaXRzQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOTEzMTU4OWFkYTRkZGEwNzE4NjA0ZDBhNDI1Y2E0NmU1Mjc3NWY2ZQotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglTdW4gSnVuIDE0IDIyOjMzOjQ2IDIwMDkgKzA1MzAKLQotICAgIG5ldDogQWRkIE1hcnZlbGwgS2lya3dvb2QgZ2lnYWJpdCBldGhlcm5ldCBkcml2ZXIKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGVnaWdhIGRyaXZlciBmb3IgdGhlIE1hcnZlbGwgS2lya3dvb2QgU29DJ3MuCi0KLSAgICBDb250cmlidXRvcnM6Ci0gICAgWW90YW0gQWRtb24gPHlvdGFtQG1hcnZlbGwuY29tPgotICAgIE1pY2hhZWwgQmxvc3RlaW4gPG1pY2hhZWxibEBtYXJ2ZWxsLmNvbQotCi0gICAgUmV2aWV3ZWQtYnk6IFJvbmVuIFNoaXRyaXQgPHJzaGl0cml0QG1hcnZlbGwuY29tPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9zZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDc4MzVmNGI5NDkyN2VjYjVhZmZkOTlhYWQ2MjU5MjEwOGRiNjA2YWQKLUF1dGhvcjogcy1wYXVscmFqQHRpLmNvbSA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTIgMTE6NDU6MzQgMjAwOSAtMDQwMAotCi0gICAgRGFWaW5jaSBOZXR3b3JrIERyaXZlciBVcGRhdGVzCi0KLSAgICBEaWZmZXJlbnQgZmxhdm91cnMgb2YgRGFWaW5jaSBTT0MncyBoYXZlIGRpZmZlcmVuY2VzIGluIHRoZWlyIEVNQUMgSVAKLSAgICBUaGlzIHBhdGNoIGRvZXMgdGhlIGZvbGxvd2luZwotICAgIDEpIFVwZGF0ZXMgYmFzZSBhZGRyZXNzZXMgZm9yIERNMzY1Ci0gICAgMikgVXBkYXRlcyBNRElPIGZyZXF1ZW5jaWVzIGZvciBETTM2NSBhbmQgRE02NDZ4Ci0gICAgMykgVXBkYXRlIEVNQUMgd3JhcHBlciByZWdpc3RlcnMgZm9yIERNMzY1IGFuZCBETTY0NngKLQotICAgIFBhdGNoIGFwcGxpZXMgdG8gdS1ib290LW5ldCBnaXQuIHRoZSBFTUFDIGRyaXZlciBpdHNlbGYKLSAgICB3aWxsIGJlIHVwZGF0ZWQgc2hvcnRseSB0byBhZGQgc3VwcG9ydCBmb3IgRE0zNjUgYW5kIERNNjQ2eAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA0NDU3OGJlYTE0ZTQ5MDM1MzMxYThmMGUwMDBlOTM1ZTBkODMwZmY0Ci1BdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci1EYXRlOglUdWUgTWF5IDI2IDA4OjI5OjI5IDIwMDkgLTA0MDAKLQotICAgIFN1YmplY3Q6IFtQQVRDSF0gW3JlcG9zdF0gU3RhbmRhcmRpemUgdGhlIHVzZSBvZiBNQ0ZGRUNfVE9VVF9MT09QIGFzIGEgdWRlbGF5KDEpIGxvb3AgY291bnRlci4KLQotICAgICBGcm9tIDU4NGI1ZmJkNGFiZmM0M2Y5MjBjYzFjMzI5NjMzZTAzODE2ZTI4YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi0gICAgRnJvbTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBEYXRlOiBXZWQsIDIwIE1heSAyMDA5IDE4OjI2OjAxIC0wNDAwCi0gICAgU3ViamVjdDogW1BBVENIXSBTdGFuZGFyZGl6ZSB0aGUgdXNlIG9mIE1DRkZFQ19UT1VUX0xPT1AgYXMgYSB1ZGVsYXkoMSkgbG9vcCBjb3VudGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYzlhMmFhYjE1MTJmYjJkMTMyNjcwZmZmOWMyNzY1NmQyZWI5NDljZAotQXV0aG9yOiBOb3JiZXJ0IHZhbiBCb2xodWlzIDxudmJvbGh1aXNAYWltdmFsbGV5Lm5sPgotRGF0ZToJVGh1IEp1biA0IDA5OjM5OjQ4IDIwMDkgKzAyMDAKLQotICAgIEEgVkxBTiB0YWdnZWQgREhDUCByZXF1ZXN0L2Rpc2NvdmVyIGlzIDQgYnl0ZXMgc2hvcnQKLQotICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgQk9PVFBfU0laRSB1c2VzIEVUSEVSX0hEUl9TSVpFIHdoaWNoIGlzIDE0IGJ5dGVzLgotICAgIElmIHNlbmRpbmcgYSBWTEFOIHRhZ2dlZCBmcmFtZSAod2hlbiBlbnYgdmFyaWFibGUgdmxhbiBpcyBzZXQpIHRoaXMKLSAgICBzaG91bGQgYmUgVkxBTl9FVEhFUl9IRFJfU0laRT0xOCB3aGljaCBpcyB3aGF0IE5ldFNldEV0aGVyIHJldHVybnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb3JiZXJ0IHZhbiBCb2xodWlzIDxudmJvbGh1aXNAYWltdmFsbGV5Lm5sPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2ZTBkMmZjN2ZlMGRjZmEyZjUxYWI4OTMxZDcwNjk0MGVlMzY0MTkzCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglUdWUgQXByIDI4IDE2OjM5OjE5IDIwMDkgLTA3MDAKLQotICAgIFJlbW92ZSBzdXBwb3J0IGZvciBub24tQ09ORklHX05FVF9NVUxUSSBvbiBQUEM0eHggRU1BQwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDg0NTM1ODdlZjkxMzdkYWY5OGI3YzljZjRmM2I4NjVmNDAzOWNlYTAKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBNYXkgMjYgMDA6MzQ6MDcgMjAwOSAtMDcwMAotCi0gICAgU3dpdGNoZWQgZGF2aW5jaV9lbWFjIEV0aGVybmV0IGRyaXZlciB0byB1c2UgbmV3ZXIgQVBJCi0KLSAgICBBZGRlZCBDT05GSUdfTkVUX01VTFRJIHRvIGFsbCBEYXZpbmNpIGJvYXJkcwotICAgIFJlbW92ZWQgYWxsIGNhbGxzIHRvIERhdmluY2kgbmV0d29yayBkcml2ZXIgZnJvbSBib2FyZCBjb2RlCi0gICAgQWRkZWQgY3B1X2V0aF9pbml0KCkgdG8gY3B1L2FybTkyNmVqcy9jcHUuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDhjYzEzYzEzZjFkMTU0YzhmYThmZmY1NmNlYTM1N2VkMzhhZjc2YmYKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBBcHIgMjcgMjM6MTk6MTAgMjAwOSAtMDcwMAotCi0gICAgSW5pdGlhbCBjbGVhbnVwIG9mIERhdmluY2kgRXRoZXJuZXQgZHJpdmVyCi0KLSAgICAgUmVtb3ZlZCBwb2ludGxlc3MgI2lmZGVmcwotICAgICBNb3ZlZCBmdW5jdGlvbnMgYXJvdW5kIGluIGZpbGUgaW4gcHJlcGFyYXRpb24gZm9yIHN3aXRjaCB0byBuZXdlciBBUEkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAwOWNkZDFiOWIwMTQ1MGU5MTc4NmQyNmZmM2M4NjZkYzljOGQ4ZDZiCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglUdWUgTWF5IDI2IDAwOjE3OjU5IDIwMDkgLTA3MDAKLQotICAgIE1vdmVkIERhdmluY2kgRXRoZXJuZXQgZHJpdmVyIHRvIGRyaXZlcnMvbmV0Ci0KLSAgICBUaGlzIGRyaXZlciBoYXMgYmVlbiByZW5hbWVkIGRhdmluY2lfZW1hYy5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNmY1MWRlYjdmMjk4NDEzY2ZjYjBhMzZkMjRjOTdlZjdkZDY5ZDQ4ZgotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglUdWUgTWF5IDE5IDAxOjQwOjE2IDIwMDkgKzA1MzAKLQotICAgIE1hcnZlbGwgTVY4OEU2MVhYIFN3aXRjaCBEcml2ZXIgc3VwcG9ydAotCi0gICAgQ2hpcHMgc3VwcG9ydGVkOi0KLSAgICAxLiA4OEU2MTYxIDYgcG9ydCBnYmUgc3d0aWNoIHdpdGggNSBpbnRlZ3JhdGVkIFBIWXMKLSAgICAyLiA4OEU2MTY1IDYgcG9ydCBnYmUgc3d0aWNoIHdpdGggNSBpbnRlZ3JhdGVkIFBIWXMKLSAgICAyLiA4OEU2MTMyIDMgcG9ydCBnYmUgc3d0aWNoIHdpdGggMiBpbnRlZ3JhdGVkIFBIWXMKLSAgICBQbGF0Zm9ybSBzcGVjaWZpYyBjb25maWd1cmF0aW9uIHN1cHBvcnRlZCBmb3I6LQotICAgIGRlZmF1bHQgb3Igcm91dGVyIHBvcnQgdmxhbiBjb25maWd1cmF0aW9uCi0gICAgbGVkX2luaXQgY29uZmlndXJhdGlvbgotICAgIG1kaXAvbiBwb2xhcml0eSByZXZlcnNhbCBjb25maWd1cmF0aW9uCi0KLSAgICBOb3RlOiBUaGlzIGRyaXZlciBpcyBzdXBwb3J0ZWQgYW5kIHRlc3RlZCBhZ2FpbnN0Ci0gICAga2lya3dvb2QgZWdpZ2EgaW50ZXJmYWNlCi0KLSAgICBDb250cmlidXRvcnM6Ci0gICAgWW90YW0gQWRtb24gPHlvdGFtQG1hcnZlbGwuY29tPgotICAgIE1pY2hhZWwgQmxvc3RlaW4gPG1pY2hhZWxibEBtYXJ2ZWxsLmNvbQotCi0gICAgUmV2aWV3ZWQgYnk6IFJvbmVuIFNoaXRyaXQgPHJzaGl0cml0QG1hcnZlbGwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMDkxZGM5ZjZhZGFmNTcyYjA2N2FlOTFhZjkyYzRlN2RiMzNkNzkwMwotQXV0aG9yOiBaYWNoIExlUm95IDx6bGVyb3lAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWF5IDIyIDEwOjI2OjMzIDIwMDkgLTA1MDAKLQotICAgIHRzZWM6IEFkZCBzdXBwb3J0IGZvciBCQ001NDgyUyBQSFkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFphY2ggTGVSb3kgPHpsZXJveUB4ZXMtaW5jLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOWZmNjdlNWU0YzcxOTU1NmQ1N2YxMzZhNjQ1M2Y4ZTQ3OThkODVjMAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVuIDE0IDA2OjI5OjA3IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiB1bmlmeSB1LWJvb3QgbGlua2VyIHNjcmlwdHMKLQotICAgIEFsbCB0aGUgQmxhY2tmaW4gbGlua2VyIHNjcmlwdHMgd2VyZSBkdXBsaWNhdGVkIGFjcm9zcyB0aGUgYm9hcmQgZGlycyB3aXRoCi0gICAgbm8gZGlmZmVyZW5jZSBzYXZlIGZyb20gdGhlIHNlbWktb2Z0ZW4gdXNlZCBFTlZfSVNfRU1CRURERUQgb3B0aW9uLiAgU28KLSAgICB1bmlmeSBhbGwgb2YgdGhlbSBpbiB0aGUgbGliX2JsYWNrZmluLyBkaXIgYW5kIGZvciB0aGUgZmV3IGJvYXJkcyB0aGF0Ci0gICAgbmVlZCB0byBlbWJlZGRlZCB0aGUgZW52aXJvbm1lbnQgZGlyZWN0bHksIGFkZCBhIExEU19CT0FSRF9URVhUIGRlZmluZSBmb3IKLSAgICB0aGVtIHRvIGN1c3RvbWl6ZSB2aWEgdGhlaXIgYm9hcmQgY29uZmlnIGZpbGUuICBUaGlzIGlzIG11Y2ggc2ltcGxlciB0aGFuCi0gICAgZm9yY2luZyB0aGVtIHRvIGR1cGxpY2F0ZSB0aGUgcmVzdCBvZiB0aGUgbGlua2VyIHNjcmlwdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGY1MmVmY2FlOThjYmI4YTM5ZjFkMDUzNWRmOGQ5NjQ2YTc3NmFmOWUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIE1heSAyOSAxNzowMjozNyAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1MThmLWV6YnJkOiBlbmFibGUgU1NUIFNQSSBmbGFzaCBkcml2ZXIKLQotICAgIFRoZSBCRjUxeEYgcGFydHMgaGF2ZSBhbiBpbnRlcm5hbCBTU1QgU1BJIGZsYXNoLCBzbyBtYWtlIHN1cmUgdGhlIGRyaXZlciBpcwotICAgIGVuYWJsZWQgYnkgZGVmYXVsdCBzbyB3ZSBjYW4gYWNjZXNzIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZjM0OGFiODVmNzQxZGM5OGIyZDIwMmMwNGI1ZjQzMGVhY2U5NDkyNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgQXByIDI0IDE3OjIyOjQwIDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBjb252ZXJ0IHNwZWNpZmljIHByZS9wb3N0IGNvbmZpZyBoZWFkZXJzIHRvIGNvbW1vbiBtZXRob2QKLQotICAgIFRoZSBCbGFja2ZpbiBwb3J0IHdhcyB1c2luZyBhc20vYmxhY2tmaW4tY29uZmlnLXtwcmUscG9zdH0uaCB0byBzZXR1cAotICAgIGNvbW1vbiBCbGFja2ZpbiBib2FyZCBkZWZpbmVzLiAgVGhlIGNvbW1vbiBtZXRob2Qgbm93IGlzIHRvIHVzZSBjb25maWcuaCwKLSAgICBzbyBjb252ZXJ0IGJsYWNrZmluLWNvbmZpZy1wb3N0LmggdG8gdGhhdC4JUmVuYW1lIHRoZSBzdGlsbCBCbGFja2ZpbgotICAgIHNwZWNpZmljIGJsYWNrZmluLWNvbmZpZy1wcmUuaCB0byBjb25maWctcHJlLmggc28gdGhlIG5hbWluZyBjb252ZW50aW9ucwotICAgIGF0IGxlYXN0IGxpbmUgdXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3Yzc1MDNlZTZjZDAzYzBmM2IxNmU5OGQzM2Q1YWEyM2IzMGQ2NWIxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBBcHIgMjQgMTc6MTE6NDcgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGVuYWJsZSBMWk1BIGZvciBhbGwgQURJIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMGU2M2RjMDY3OTQ1MWQ0OGY4YjcyN2M1NDNjZTQ4YjQ4OGY3YTMzZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gQXByIDEzIDA1OjUyOjQ1IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBtYWtlIGRlZmF1bHQgQURJIGVudiBtb3JlIGZsZXhpYmxlCi0KLSAgICBBbGxvdyBib2FyZHMgdG8gZWFzaWx5IG92ZXJyaWRlIHRoZSByb290PSBhbmQgZGVmYXVsdCBib290Y21kLCBhbGxvdwotICAgIHBlb3BsZSB0byB0d2VhayB0aGUgZmlsZSB1c2VkIGluIGRlZmF1bHQgYm9vdGNtZHMgYXQgcnVudGltZSB2aWEgb25lIGVudgotICAgIHZhciwgYW5kIGFkZCBhIHN0b2NrIG5hbmRib290IGNvbW1hbmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAwZjUyYjU2MGYxOTYyM2VjNjUxZjliOWI0MDQwNWQxMzhlYzI1MWQzCi1BdXRob3I6IEhvYW4gSG9hbmcgPGhuaG9hbkBpLXN5c3QuY29tPgotRGF0ZToJU3VuIEphbiAxOCAyMjo0NDoxNyAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogaWJmLWRzcDU2MTogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhvYW4gSG9hbmcgPGhuaG9hbkBpLXN5c3QuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDMwODgxODlhMTVkMjE5YzQ4ZmQ3ZTcxNjIzY2E0ZGFhMDhiODBiNTkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAyMzoyODozMyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmxhY2tzdGFtcDogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDU5YWM5NzI5NzAwZGIxZDQ0NDZjMWE2ZGIzZmZlMzgzOThiN2FiYjIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAyMzoyMjoyNSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1Mzctc3J2MTogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQ3ZmRjMTQxMGI1ZmE1ZWY2MjNiMzVhMjgzNzMzYjZiY2VlMzc1M2IKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAyMzoxNjo1MiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1MzctbWlub3RhdXI6IG5ldyBib2FyZCBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjYjRiNWU4NzRmM2M5Yjg4MmE2ZjQzOTRiYmViYmJkOTFmZDAxYmJmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBPY3QgMTIgMjM6MDg6MDMgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTM3LXBuYXY6IG5ldyBib2FyZCBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1OWU0YmU5NDViNjQ2OWUzMWVlZTcyMWUwYmNkY2NmNDk0MGQ3NWFjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBPY3QgMTIgMjE6NTU6NDUgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGNtLWJmNTI3OiBuZXcgYm9hcmQgcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOGIyMTljZjA3YzE4NmNjOWQ5NzM1NGNmNGIxNGYyNGE1M2QxOTNjNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gT2N0IDEyIDIxOjU0OjA3IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBjbS1iZjU0ODogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDk0MTdkOWEyMTM4NDI3OTMwOGFiZTViNGRkOGRmZDQxODc0MjQ4NGMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAyMTo0OToyOCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdGNtLWJmNTM3OiBuZXcgYm9hcmQgcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZTU0ODMyMWFmMDBlODY5YWY3MTk0ODk2NTc2YmViOWI2ODQ1N2ZmNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gT2N0IDEyIDIxOjQ1OjA1IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBjbS1iZjU2MTogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDhhOWJhYjA4YTZmZTkzZTVmM2JmNTdiOTA0MzhmMWQyYTY3ZmFkM2MKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAyMTo0MTowNiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogY20tYmY1MzdlOiBuZXcgYm9hcmQgcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZTgyZDhhMWYwMjhiZWRiMTJjNGFiODhhMzVhOTM1MDEwZDkyODk4YwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gT2N0IDEyIDIxOjM2OjIyIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBjbS1iZjUzMzogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGRkMTRhZjc2NDBmN2Q0OGQ4ZTk3NjhlZWViMDk1OTJlNmY5NGVkMzgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IE5vdiAyNyAxNjo1MDozMiAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogbmV3IHNwaWJvb3RsZHIgY29tbWFuZAotCi0gICAgTmV3ZXIgQmxhY2tmaW4gcGFydHMgY2FuIGFuIG9uLWNoaXAgUk9NIHRoYXQgY2FuIGJvb3QgTERScyBvdmVyIFNQSSBmbGFzaGVzLAotICAgIHNvIGFkZCBhIG5ldyAnc3BpYm9vdGxkcicgY29tbWFuZCB0byB0YWtlIGFkdmFudGFnZSBvZiBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDY3YzI4MjliNjQ2YmI1Yjg1OTA4OGIzNmZiYzg5ZTk3MWI5YzE5NjAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCA2IDA0OjQyOjMzIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBzdXBwb3J0IGVtYmVkZGluZyB0aGUgZW52aXJvbm1lbnQgaW50byBsb2FkZXIgZmlsZXMgKExEUnMpCi0KLSAgICBGb3IgdGhlIG1vc3QgcGFydCwgdGhlIEJsYWNrZmluIHByb2Nlc3NvciBib290cyBmaWxlcyBpbiB0aGUgTERSIGZvcm1hdAotICAgIHJhdGhlciB0aGFuIGJpbmFyeS9FTEYgZmlsZXMuICBTbyB3ZSB3YW50IHRvIGV4cG9ydCB0aGUgZW52aXJvbm1lbnQgYXMgYQotICAgIHJhdyBibG9iIHRvIHRoZSBMRFIgdXRpbGl0eSBzbyBpdCBjYW4gZW1iZWQgaXQgYXQgdGhlIHJpZ2h0IGxvY2F0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMzFmMzBjOWViNjBkOWFiMGJkNzAyZTMxZjY2MzQ1Zjk5YjM0YmRjNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVuIDE0IDExOjAzOjQ4IDIwMDkgLTA0MDAKLQotICAgIGFkZCAlLmMtPiUuaSBhbmQgJS5jLT4lLnMgcnVsZXMKLQotICAgIFRoZSBMaW51eCBrZXJuZWwgaGFzIHNvbWUgaGVscGVyIHJ1bGVzIHdoaWNoIGFsbG93IHlvdSB0byBxdWlja2x5IHByb2R1Y2UKLSAgICBzb21lIG9mIHRoZSBpbnRlcm1lZGlhcnkgZmlsZXMgZnJvbSBDIHNvdXJjZS4gIFNwZWNpZmljYWxseSwgeW91IGNhbgotICAgIGNyZWF0ZSAuaSBmaWxlcyB3aGljaCBpcyB0aGUgcHJlcHJvY2Vzc2VkIG91dHB1dCBhbmQgeW91IGNhbiBjcmVhdGUgLnMKLSAgICBmaWxlcyB3aGljaCBpcyB0aGUgYXNzZW1ibGVyIG91dHB1dC4gIFRoaXMgaXMgdXNlZnVsIHdoZW4geW91IGFyZSB0cnlpbmcKLSAgICB0byB0cmFjayBkb3duIGhlYWRlci9tYWNybyBleHBhbnNpb24gZXJyb3JzIG9yIGlubGluZSBhc3NlbWJseSBlcnJvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2ZDFjZTM4Nzg3NGMxMDYwZjI3NjU2ZjcwMTUxYTUyYzUxMWNkMGUzCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBNYXkgMzAgMDE6MDI6MDMgMjAwOSAtMDQwMAotCi0gICAgbWFrZSBzdXJlIHRvcGxldmVsICQoU1VCRElSUykgaXMgYWx3YXlzIGRlY2xhcmVkCi0KLSAgICBUaGUgJChTVUJESVJTKSB2YXJpYWJsZSBpcyBvbmx5IGRlY2xhcmVkIHdoZW4gVS1Cb290IGhhcyBiZWVuIGNvbmZpZ3VyZWQsCi0gICAgYnV0IGl0IGdldHMgdXNlZCBhbGwgdGhlIHRpbWUuICBJbiB0aGUgbm9uLWNvbmZpZ3VyZWQgY2FzZSwgaXQgaXMgdXNlZCB0bwotICAgIGdlbmVyYXRlIGEgaGVscGZ1bCBlcnJvciBtZXNzYWdlLCBidXQgaXQgbmVlZHMgdG8gYmUgc2V0IHByb3Blcmx5IGZvciB0aGF0Ci0gICAgdG8gb2NjdXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAxMjYwMjMzOTgyZjdkZmJkZmQxYWRlZTEyZGFhOTVhMGMwZTg0YTQzCi1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEp1biAxMiAxMTozMzo1NSAyMDA5ICswMjAwCi0KLSAgICBkaWdzeSBtdGM6IEFkZCBkZXNjcmlwdGlvbiB0byBHUElPIGluaXRpYWwgY29uZmlndXJhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMTIzMDQ4NzFiYzc4MzkxNDVmMmI0MjM4OTIzZTkwMjM2MTZkNzM5OQotQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBKdW4gMTIgMTE6MzM6NTQgMjAwOSArMDIwMAotCi0gICAgZGlnc3kgTVRDOiBBZGQgJ210YycgY29tbWFuZC4KLQotICAgIE5ldyBjb21tYW5kIGFsbG93cyB0bzoKLQkgbyBjaGVjayBGVyB2ZXJzaW9uCi0JIG8gc2V0IExFRCBzdGF0dXMKLQkgbyBzZXQgZGlnaXRhbCBvdXRwdXQgc3RhdHVzCi0JIG8gZ2V0IGRpZ2l0YWwgaW5wdXQgc3RhdHVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGYxZjY2ZWRmYzc2ZjRhOWY1YjlmNjM5NzJkOTAzMDk3ODRhOGNhZTUKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgSnVuIDEyIDExOjMzOjUzIDIwMDkgKzAyMDAKLQotICAgIGRpZ3N5IE1UQzogQWRkIFNQSSBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA2MzI1Yjc3ODBkYWQ4YmUyNmJhNmZjMjVlZjg4YmEzMzhjNTAyMDViCi1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEp1biAxMiAxMTozMzo1MiAyMDA5ICswMjAwCi0KLSAgICBtcGM1Mnh4OiBBZGQgU1BJIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNWVjNTUyOWI4MmYzMTRjYTJjZjljMjYyY2RmYzk4NWQ1ZmM0NjhhMAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVuIDE0IDA5OjMzOjAwIDIwMDkgLTA0MDAKLQotICAgIGFsbG93IGJvYXJkcyB0byBjdXN0b21pemUgY29tcGlsZXIgb3B0aW9ucyBvbiBhIHBlci1maWxlL2RpciBiYXNpcwotCi0gICAgV2l0aCBvdXIgQmxhY2tmaW4gYm9hcmRzLCB3ZSBsaWtlIHRvIGJ1aWxkIHRoZSBjb21wcmVzc2lvbiByb3V0aW5lcyB3aXRoCi0gICAgLU8yIGFzIG91ciB0ZXN0cyBzaG93IGEgcHJldHR5IGdvb2Qgc2l6ZS9zcGVlZCB0cmFkZW9mZi4gIEZvciB0aGUgcmVzdCBvZgotICAgIFUtQm9vdCB0aG91Z2gsIHdlIHdhbnQgdG8gc3RpY2sgd2l0aCB0aGUgZGVmYXVsdCAtT3MgYXMgdGhhdCBpcyBtb3N0bHkKLSAgICBjb250cm9sIGNvZGUuICBTbyBpbiBvdXIgY2FzZSwgd2Ugd291bGQgYWRkIGEgbGluZSBsaWtlIHNvIHRvIHRoZSBib2FyZAotICAgIHNwZWNpZmljIGNvbmZpZy5tayBmaWxlOgotCUNGTEFHU19saWJfZ2VuZXJpYyArPSAtTzIKLQotICAgIE5vdyBhbGwgZmlsZXMgdW5kZXIgbGliX2dlbmVyaWMvIHdpbGwgaGF2ZSAtTzIgYXBwZW5kZWQgdG8gdGhlaXIgYnVpbGQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2YjFmNzhhZTZhZDAzNzM4MmFkNDMwYjA3MDY0MTA1Yzg4ZjdhYzAyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVuIDE0IDIxOjMwOjM5IDIwMDkgKzAyMDAKLQotICAgIFByZXBhcmUgdjIwMDkuMDYKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0csIGZpeCBtaW5vciBjb2Rpbmcgc3R5bGtlIGlzc3VlLiBVcGRhdGUgTWFrZWZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzMxNDdjMTc2MmY4Y2FmOTk2NDkwNTExMTZhMjQxMWJkZjg4N2MxMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1biAxNCAyMDozMTozNiAyMDA5ICswMjAwCi0KLSAgICBSZXZlcnQgIlNNQzkxMXggZHJpdmVyIGZpeGVkIGZvciBORlMgYm9vdCIKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgY2E5YzhhMWUxMGZhYzAxZTZhMTEyOWY4MmE3Y2UxOGJkODE4ZmE0MywKLSAgICB3aGljaCBjYXVzZXMgY29tcGlsZSB3YXJuaW5ncyAoImxhcmdlIGludGVnZXIgaW1wbGljaXRseSB0cnVuY2F0ZWQKLSAgICB0byB1bnNpZ25lZCB0eXBlIikgb24gYWxsIHN5c3RlbXMgdGhhdCB1c2UgdGhpcyBkcml2ZXIuIFRoZSB3YXJuaW5nCi0gICAgcmVzdWx0cyBmcm9tIHBhc3NpbmcgbG9uZyBjb25zdGFudHMgKFRYX0NGRywgUlhfQ0ZHKSBpbnRvCi0gICAgc21jOTExeF9zZXRfbWFjX2NzcigpIHdoaWNoIGlzIGRlY2xhcmVkIHRvIGFjY2VwdCAidW5zaWduZWQKLSAgICBjaGFyYWN0ZXIiIGFyZ3VtZW50cyBvbmx5LgotCi0gICAgQmVpbmcgY2xvc2UgdG8gYSByZWxlYXNlLCB3aXRoIG5vYm9keSBhdmFpbGFibGUgdG8gYWN0dWFsbHkgdGVzdCB0aGUKLSAgICBjb2RlIG9yIHRoZSBzdWdnZXN0ZWQgZml4ZXMsIGl0IHNlZW1zIGJldHRlciB0byByZXZlcnQgdGhlIHBhdGNoLgotCi1jb21taXQgMzg4NTE3ZTRiNzQ1YjAwMjU2YzJmYTIwMWNlN2JjY2I2N2I0ZjI0NQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1heSAyMiAxMDoyNjozNyAyMDA5IC0wNTAwCi0KLSAgICB4ZXM6IFVwZGF0ZSBGcmVlc2NhbGUgY2xvY2sgY29kZSB0byB3b3JrIHdpdGggODZ4eCBwcm9jZXNzb3JzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNTYyMzkzN2JiODFjYWU3ODhkNzY3ZTZjNTlhMTFjOTZmYzgyODY2Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWF5IDIyIDEwOjI2OjM2IDIwMDkgLTA1MDAKLQotICAgIHhlczogVXBkYXRlIEZyZWVzY2FsZSBERFIgY29kZSB0byB3b3JrIHdpdGggODZ4eCBwcm9jZXNzb3JzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiZWYzMDEzOTA4YmJjNjhmMjQwODQxNzRhM2NhODZjYzJhM2ViOTg2Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWF5IDIyIDEwOjI2OjM1IDIwMDkgLTA1MDAKLQotICAgIHhlczogVXBkYXRlIEZyZWVzY2FsZSBQQ0kgY29kZSB0byB3b3JrIHdpdGggODZ4eCBwcm9jZXNzb3JzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2NDQyYjcxYjUyMmZhY2U3NzVjMWMzMWJkNDMxMjFkYjNiNGJmN2Q2Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWF5IDIyIDEwOjI2OjMyIDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IEFkZCBQT1JCTVNSIGFuZCBQT1JERVZTUiBzaGlmdCBkZWZpbmVzCi0KLSAgICBBZGQgZGVmaW5lcyBzaW1pbGFyIHRvIHRob3NlIGFscmVhZHkgdXNlZCBmb3IgdGhlIHRoZSA4Nnh4IGFyY2hpdGVjdHVyZS4KLSAgICBUaGlzIHdpbGwgZWFzZSBzaGFyaW5nIG9mIFBDSSBjb2RlIGJldHdlZW4gdGhlIDg1eHggYW5kIDg2eHgKLSAgICBhcmNoaXRlY3R1cmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMmYyMWNlNGQ1NDZkMzEyODlhYzQ5YTY4MGY3OGJjYzlhNzkyYzZlYwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVGh1IE1heSAyMSAxMjoxMDowMCAyMDA5IC0wNTAwCi0KLSAgICBmc2wvODV4eCwgODZ4eDogU3luYyB1cCBETUEgY29kZQotCi0gICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSB0byBzeW5jIHVwIHRoZSBETUEgY29kZSBiZXR3ZWVuIHRoZSA4NXh4Ci0gICAgYW5kIDg2eHggYXJjaGl0ZWN0dXJlcyB3aGljaCB3aWxsIG1ha2UgaXQgZWFzaWVyIHRvIGJyZWFrIG91dCBjb21tb24KLSAgICA4eHh4IERNQSBjb2RlOgotCi0gICAgODV4eDoKLSAgICAtIERvbid0IHNldCBTVFJBTlNJTlQgYW5kIFNQQ0lPUkRFUiBmaWVsZHMgaW4gU0FUUiByZWdpc3Rlci4gIFRoZXNlIGJpdHMKLSAgICAgIG9ubHkgaGF2ZSBhbiBhZmZlY3Qgd2hlbiB0aGUgU0JQQVRNVSBiaXQgaXMgc2V0LgotICAgIC0gV3JpdGUgMHhmZmZmZmZmZiBpbnN0ZWFkIG9mIDB4ZmZmZmZmZiB0byBjbGVhciBlcnJvcnMgaW4gdGhlIERNQQotICAgICAgc3RhdHVzIHJlZ2lzdGVyLglXZSBtYXkgYXMgd2VsbCBjbGVhciBhbGwgMzIgYml0cyBvZiB0aGUgcmVnaXN0ZXIuLi4KLQotICAgIDg2eHg6Ci0gICAgLSBBZGQgQ09ORklHX1NZU19NUEM4Nnh4X0RNQV9BRERSIGRlZmluZSB0byBhZGRyZXNzIERNQSByZWdpc3RlcnMKLSAgICAtIEFkZCBjbGVhcmluZyBvZiBlcnJvcnMgaW4gdGhlIERNQSBzdGF0dXMgcmVnaXN0ZXIgd2hlbiBpbml0aWFsaXppbmcKLSAgICAgIHRoZSBjb250cm9sbGVyCi0gICAgLSBDbGVhciB0aGUgY2hhbm5lbCBzdGFydCBiaXQgaW4gdGhlIERNQSBtb2RlIHJlZ2lzdGVyIGFmdGVyIGEgdHJhbnNmZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGIxZjEyNjUwZDMzMmVhZGFjMTMwNmE3NzJjYWI2MDk2YWJlZTZkZGQKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVRodSBNYXkgMjEgMTI6MDk6NTkgMjAwOSAtMDUwMAotCi0gICAgZnNsOiBDcmVhdGUgY29tbW9uIGZzbF9kbWEuaCBmb3IgODV4eCBhbmQgODZ4eCBjcHVzCi0KLSAgICBCcmVhayBvdXQgRE1BIHN0cnVjdHVyZXMgZm9yIHRoZSBGcmVlc2NhbGUgTVBDODV4eCBhbmQgTVBDODZ4eCBjcHVzIHRvCi0gICAgcmVkdWNlIGEgbGFyZ2UgYW1vdW50IG9mIGNvZGUgZHVwbGljYXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDNiZDhlNTMyYjVkZTIwNjQ3YWVhZmY5NGExY2JmMzNmYjhiODk3YjkKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMjAgMTI6MzA6NDEgMjAwOSAtMDQwMAotCi0gICAgODV4eDogQWRkIFVFQzYgYW5kIFVFQzggYXQgU0dNSUkgbW9kZSBmb3IgTVBDODU2OU1EUwotCi0gICAgT24gTVBDODU2OU1EUyBib2FyZCwgVUNDNiBhbmQgVUNDOCBjYW4gYmUgY29uZmlndXJlZCB0byB3b3JrIGF0IFNHTUlJIG1vZGUgdmlhCi0gICAgVUVNIG9uIFBCIGJvYXJkLiBTaW5jZSBNUEM4NTY5IHN1cHBvcnRzIHVwIHRvIDQgR2lnYWJpdCBFdGhlcm5ldCBwb3J0cywgd2UKLSAgICBkaXNhYmxlIFVFQzYgYW5kIFVFQzggYnkgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGU4ZWZlZjdjMWI0NTc0NDI1ODNhOGI5ZDM4ZDhhNWI2Njc2NjE2MTYKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdW4gNCAxNjoxMjo0MiAyMDA5IC0wNDAwCi0KLSAgICBkcml2ZXJzL3FlOiBhZGQgc2dtaWkgc3VwcG9ydCBpbiBmb3IgVUVDIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOGU1NTI1OGYxNDQ3NjRkZTg5MDJlOWYwNzhhN2FkNGM2YzAyMmMyZgotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1biA0IDE2OjEyOjQxIDIwMDkgLTA0MDAKLQotICAgIHFlOiBQYXNzIGluIHVlY19pbmZvIHN0cnVjdCB0aHJvdWdoIHVlY19pbml0aWFsaXplCi0KLSAgICBUaGUgdWVjIGRyaXZlciBjb250YWlucyBjb2RlIHRvIGhhcmQgY29kZSBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGZvciB0aGUgdWVjCi0gICAgZXRoZXJuZXQgY29udHJvbGxlcnMuIFRoaXMgcGF0Y2ggY3JlYXRlcyBhbiBhcnJheSBvZiB1ZWNfaW5mbyBzdHJ1Y3R1cmVzLCB3aGljaAotICAgIGFyZSB0aGVuIHBhcnNlZCBieSB0aGUgY29ycmVzcG9uZGluZyBkcml2ZXIgaW5zdGFuY2UgdG8gZGV0ZXJtaW5lIGNvbmZpZ3VyYXRpb24uCi0gICAgSXQgYWxzbyBjcmVhdGVzIGZ1bmN0aW9uIHVlY19zdGFuZGFyZF9pbml0KCkgdG8gaW5pdGlhbGl6ZSBhbGwgVUVDIGludGVyZmFjZXMKLSAgICBmb3IgODN4eCBhbmQgODV4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDlhNjExMDg5N2ZjOTI4MmFkZTU5OGJiYmE3MGFkNzJiOTQwNDM2ZTMKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdW4gNCAxNjoxMjo0MCAyMDA5IC0wNDAwCi0KLSAgICBmc2w6IFVwZGF0ZSB0aGUgbnVtYmVyIG9mIGV0aHhhZGRyIGluIHJlYWRpbmcgc3lzdGVtIGVlcHJvbQotCi0gICAgV2Ugc3VwcG9ydCB1cCB0byA4IG1hYyBhZGRyZXNzZXMgaW4gc3lzdGVtIGVlcHJvbSwgc28gd2UgZGVmaW5lIHRoZSBtYWNybwotICAgIE1BWF9OVU1fUE9SVFMgdG8gbGltaXQgdGhlIG1hY19jb3VudCB0byA4LCBhbmQgdXBkYXRlIHRoZSBudW1iZXIgb2YgZXRoeGFkZHIKLSAgICBhY2NvcmRpbmcgdG8gbWFjX2NvdW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjgyMTA3ZjYzN2YxNjdhNzc4MDNjMDkzM2Y5YjI0NzQxYTkxYzcxMQotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1heSAyMCAxMjozMDozNyAyMDA5IC0wNDAwCi0KLSAgICA4NXh4OiBBZGQgUk1JSSBzdXBwb3J0IGZvciBNUEM4NTY5TURTCi0KLSAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIFVDQyB3b3JraW5nIGF0IFJNSUkgbW9kZSBvbiBQSUIgYm9hcmQsIGZpeHVwIGZkdCBibG9iIHRvCi0gICAgc3VwcG9ydCBybWlpIGluIGtlcm5lbC4gSXQgYWxzbyBjaGFuZ2VzIHRoZSBuYW1lIG9mIGVuYWJsZV9tcGM4NTY5bWRzX3FlX21kaW8gdG8KLSAgICBlbmFsYmVfbXBjODU2OW1kc19xZV91ZWMgd2hpY2ggaXMgIG1vcmUgYWNjdXJhdGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3NTAwOThkMzNiYzM2MmFjNDI2Mzg2M2U5MmRhMTU4Y2YwMTEwNjNmCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDIwIDEyOjMwOjM2IDIwMDkgLTA0MDAKLQotICAgIDg1eHg6IEFkZCBVRUMzIGFuZCBVRUM0IHN1cHBvcnQgZm9yIE1QQzg1NjlNRFMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDRlN2IyNWU0ZmU3NzdmNTI1ZTQyNmNiZDU4YzNhMzk3NmM1NjRmMmUKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMjAgMTI6MzA6MzUgMjAwOSAtMDQwMAotCi0gICAgZHJpdmVycy9xZTogQWRkIG1vcmUgU05VTSBudW1iZXIgZm9yIFFFCi0KLSAgICBTb21lIFFFIGNoaXBzIGxpa2UgODU2OSBuZWVkIG1vcmUgU05VTSBudW1iZXJzIGZvciBzdXBwb3J0aW5nIDQgVUVDcyBpbiBSR01JSS0KLSAgICAxMDAwIG1vZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3MjExZmJmYTE4ZjMwNjE4NTg2OTYxNTBlZTZlOWUwOTNkOWVjZWFlCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTWF5IDIxIDE1OjM0OjE0IDIwMDkgLTA0MDAKLQotICAgIGRyaXZlcnMvcWU6IENoYW5nZSBRRSBSSVNDIEFMTE9DQVRJT04gdG8gc3VwcG9ydCA0IFJJU0NzCi0KLSAgICBBbHNvIGRlZmluZSB0aGUgUUVfUklTQ19BTExPQ0FUSU9OX1JJU0NzIHRvIE1BQ1JPcyBpbnN0ZWFkIG9mIHVzaW5nIGVudW0sIGFuZAotICAgIGRlZmluZSBNQVhfUUVfUklTQyBmb3IgUUUgYmFzZWQgc2lsaWNvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiM2Q3ZjIwZjQzYTBmOGQxMWM2NWUyZjkyMTUzYjU1MTJiMTE1ODBjCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDIwIDEyOjMwOjI5IDIwMDkgLTA0MDAKLQotICAgIDg1eHg6IEFkZCBRRSBjbGsgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogVGltdXIgVGFiaSA8VGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNzFiMzU4Y2MyNjc5Mjg4OWJiYWMzNTA1NGQ4ZTg5ZDU5YjNmYWJjNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE1heSAyMCAwMToxMTozMyAyMDA5IC0wNTAwCi0KLSAgICA4NXh4OiBBZGRlZCBNUEM4NTM1L0UgaWRlbnRpZmllcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyMjQxOWQ3Nzk3NmJiZDBkZjlmY2Y0NTUxM2YxYjk2YmQ3M2U1MGQxCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTWF5IDIxIDA4OjM2OjQzIDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IEFsd2F5cyBhdHRlbXB0IGV0aGVybmV0IGRldmljZSB0cmVlIGZpeHVwCi0KLSAgICBJdHMgcmVhc29uYWJsZSB0aGF0IHdlIG1heSBoYXZlIGV0aGVybmV0IGRldmljZXMgYnV0IGRvbnQgaGF2ZSBkcml2ZXJzCi0gICAgb3Igc3VwcG9ydCBlbmFibGVkIGZvciB0aGVtIGluIHUtYm9vdCBhbmQgd2FudCB0aGUgZGV2aWNlIHRyZWUgZml4ZWQgdXAuCi0gICAgVW5jb25kaXRpb25hbGx5IGNhbGxpbmcgdGhlIGV0aGVybmV0IGZpeHVwIGlzIGZpbmUgc2luY2UgaWYgd2UgZG9udCBoYXZlCi0gICAgZXRoZXJuZXQgbm9kZXMgdGhhdCBtYXRjaCAob3IgYWxpYXNlcykgd2Ugd2lsbCBub3QgYXR0ZW1wdCB0byBkbwotICAgIGFueXRoaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDUyZDZhZDVlY2ZiMjI5Mzg0NDFjOGUzZTYyOTM1ZmJkN2IwZjA5MjAKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjEgMTU6MzI6MTMgMjAwOSAtMDQwMAotCi0gICAgZHJpdmVycy9xZTogUmVuYW1lIHRoZSBjYW1lbC1jYXNlIGlkZW50aWZpZXJzIGluIHVlYwotCi0gICAgUmVuYW1lIHJpc2NSeC9yaXNjVHggdG8gcmlzY19yeC9yaXNjX3R4IHRvIGNvbXBseSB3aXRoIENvZGluZ3N0eWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGZlYjc4MzhmOTc5ZWMyYjU4MWRmM2M3OTFiOWFlMzI4NGMzNmJiNDcKLUF1dGhvcjogU3Jpa2FudGggU3Jpbml2YXNhbiA8c3Jpa2FudGguc3Jpbml2YXNhbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEFwciAzIDE1OjM2OjEzIDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IEFkZCBQMjAyMERTIHN1cHBvcnQKLQotICAgIFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFAyMDIwRFMgcmVmZXJlbmNlIHBsYXRmb3JtLgotICAgIEREUjMgaW50ZXJmYWNlIHVzZXMgaGFyZC1jb2RlZCBpbml0aWFsaXphdGlvbiByYXRoZXIgdGhhbiBTUEQKLSAgICBmb3Igbm93IGFuZCB3YXMgdGVzdGVkIGF0IDY2N01oei4gU29tZSBQSVhJUyByZWdpc3RlcgotICAgIGRlZmluaXRpb25zIGFuZCBhc3NvY2lhdGVkIGNvZGUgc2VjdGlvbnMgbmVlZCB0byBiZSBmaXhlZC4KLSAgICBUU0VDMS8yLzMsIE5PUiBmbGFzaCwgTUFDL1NZUyBJRCBFRVBST00sIFBDSUUxLzIvMyBhcmUgYWxsCi0gICAgdGVzdGVkIHVuZGVyIHUtYm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUcmF2aXMgV2hlYXRsZXkgPFRyYXZpcy5XaGVhdGxleUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyMjk1NDlhNTZkOWFlNDEzYzAwZjY0ZmQ3YzcyOGM2ODc5YTFiNTRiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKdW4gOSAxNjo1Nzo0NyAyMDA5ICswMjAwCi0KLSAgICBtcGM1MTJ4OiBNUEM1MTIxQURTOiBBZGQgTkFORCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgTkFORCBzdXBwb3J0IHRvIHRoZSBNUEM1MTIxQURTIGJvYXJkLiBQbGVhc2UKLSAgICBub3RlIHRoYXQgdGhlIGltYWdlIHNpemUgaW5jcmVhc2VkIHNpbmNlIE5BTkQgc3VwcG9ydCBkaWRuJ3QKLSAgICBmaXQgaW4gdGhlIGN1cnJlbnQgaW1hZ2Ugc2l6ZSAoMjU2aykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDM1ZjJlZGJiNmNhZDA0M2NjZDVlYTZlNzhmZTliN2FhMjFkODM5NWYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1biA5IDE2OjU3OjAzIDIwMDkgKzAyMDAKLQotICAgIG5hbmQvbXBjNTEyeDogQWRkIE1QQzUxMnggTkFORCBzdXBwb3J0IChORkMpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgTkFORCBGbGFzaCBDb250cm9sbGVyIGRyaXZlciBmb3IgTVBDNTEyMSByZXZpc2lvbiAyLgotICAgIEFsbCBkZXZpY2UgZmVhdHVyZXMsIGV4Y2VwdCBoYXJkd2FyZSBFQ0MgYW5kIHBvd2VyIG1hbmFnZW1lbnQsIGFyZQotICAgIHN1cHBvcnRlZC4KLQotICAgIFRoaXMgTkZDIGRyaXZlciByZXBsYWNlcyB0aGUgb25lIG9yaWduYWxseSBwb3N0ZWQgYnkgSm9obiBSaWdieToKLQotICAgICJbUEFUQ0hdIEZyZWVzY2FsZSBORkMgTkFORCBkcml2ZXIiCi0KLSAgICBJdCdzIGEgcG9ydCBvZiB0aGUgTGludXggZHJpdmVyIHZlcnNpb24gcG9zdGVkIGJ5IFBpb3RyIFppZWNpayBhIGZldwotICAgIHdlZWtzIGFnby4gVXNpbmcgdGhpcyBkcml2ZXIgaGFzIHRoZSBmb2xsb3dpbmcgYWR2YW50YWdlcyAoZnJvbSBteQotICAgIHBvaW50IG9mIHZpZXcpOgotCi0gICAgLSBDb21wYXRpYmlsaXR5IHdpdGggdGhlIExpbnV4IE5BTkQgZHJpdmVyIChlLmcuIEVDQyB1c2FnZSkKLSAgICAtIEJldHRlciBjb2RlIHF1YWxpdHkgaW4gZ2VuZXJhbAotICAgIC0gUmVzdWx0aW5nIFUtQm9vdCBpbWFnZSBpcyBhIGJpdCBzbWFsbGVyIChhcHByb3guIDNrKQotICAgIC0gQmV0dGVyIHRvIHN5bmMgd2l0aCBuZXdlciBMaW51eCBkcml2ZXIgdmVyc2lvbnMKLQotICAgIFRoZSBvbmx5IGRpc2FkdmFudGFnZSBJIGNhbiBzZWUsIGlzIHRoYXQgSFctRUNDIGlzIG5vdCBzdXBwb3J0ZWQgcmlnaHQKLSAgICBub3cuIEJ1dCB0aGlzIGNvdWxkIGJlIGFkZGVkIGxhdGVyIChlLmcuIHBvcnQgZnJvbSBMaW51eCBkcml2ZXIgYWZ0ZXIKLSAgICBpdCdzIHN1cHBvcnRlZCB0aGVyZSkuIFVzaW5nIEhXLUVDQyBvbiB0aGUgTUNQNTEyMSBORkMgaGFzIGEgZ2VuZXJhbAotICAgIHByb2JsZW0gYmVjYXVzZSBvZiB0aGUgRUNDIHVzYWdlIGluIHRoZSBzcGFyZSBhcmVhLiBUaGlzIGNvbGxpZGVzIHdpdGgKLSAgICBKRkZTMiBmb3IgZXhhbXBsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+Ci0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgotICAgIENjOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU1M2I1MDdjZWU1ZDk3Njk1MzEzNGE1NjVjNzJmZDMyYzk2N2Q3ZGQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1biA5IDExOjUwOjQwIDIwMDkgKzAyMDAKLQotICAgIG1wYzUxMng6IEFkZCBlc2QgZ21iaCBtZWNwNTEyMyBib2FyZCBzdXBwb3J0Ci0KLSAgICBNRUNQNTEyMyBpcyBhIE1QQzUxMjFFIGJhc2VkIG1vZHVsZSBieSBlc2QgZ21iaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgNmJkNTVjYzY1ZDBjM2FhODRkNzE5NTE4MjU0ZmIzYzY1MDIzOWVkOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVuIDkgMTE6NTA6MDUgMjAwOSArMDIwMAotCi0gICAgbWNwNTEyeDogQWRkIG1hY3JvcyBmb3IgU0NGUiBMUEMgZGl2aXNvciBhY2Nlc3MKLQotICAgIFRob3MgbWFjcm9zIHdpbGwgYmUgdXNlZCBieSB0aGUgZXNkIG1lY3A1MTIzIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzYwZGM4NTI3ZGJiMmExMzE4YzAzYmMxOGJkZWJjZmJkMDE2NDU1MQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVuIDggMDk6Mzg6MDcgMjAwOSArMDIwMAotCi0gICAgbXBjNTEyeDogRml4IHByb2JsZW0gd2l0aCBJMkMgYWNjZXNzIGJlZm9yZSByZWxvY2F0aW9uCi0KLSAgICBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIHVwY29taW5nIGVzZCBNRUNQNTEyMyBib2FyZCBwb3J0IHdoaWNoIHVzZXMKLSAgICBJMkMgRUVQUk9NIGZvciBlbnZpcm9ubWVudCBzdG9yYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA1OGYxMDQ2MGIwNWUwOTI4ZDk4NmIxNWVkZDRmMmUxZTk5NDAzZjdlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gNCAxMzozNTozOSAyMDA5ICswMjAwCi0KLSAgICA3NHh4Xzd4eDogQ1BDSTc1MDogQWRkIENQQ0kgYWRhcHRlci90YXJnZXQgc3VwcG9ydAotCi0gICAgVGhlIENQQ0k3NTAgY2FuIGJlIGJ1aWx0IGFzIENQQ0kgaG9zdCBvciBhZGFwdGVyL3RhcmdldCBib2FyZC4gVGhpcyBwYXRjaAotICAgIGFkZHMgc3VwcG9ydCBmb3IgcnVudGltZSBkZXRlY3Rpb24gb2YgdGhvc2UgdmFyaWFudHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGFlN2EyNzM5ZDdhMDcwNDQzNzM3NmUyMjliYjIxOTQwOTUyYzU1YmUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biA1IDA1OjQ1OjQxIDIwMDkgKzAyMDAKLQotICAgIDc0eHhfN3h4OiBDUENJNzUwOiBFbmFibGUgYWNjZXNzIHRvIFBDSSBmdW5jdGlvbiA+IDAKLQotICAgIFRoZSBNYXJ2ZWxsIGJyaWRnZSA2NDM2MCBzdXBwb3J0cyBzZXJ2ZXJhbCBQQ0kgZnVuY3Rpb25zLCBub3Qgb25seSAwLiBUaGlzCi0gICAgcGF0Y2ggZW5hYmxlcyBhY2Nlc3MgdG8gdGhvc2UgZnVuY3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBSZWluaGFyZCBBcmx0IDxyZWluaGFyZC5hcmx0QGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBlNWI1NjNlOWVjNTRjM2Y2ZDcwMmM4ZmEyYjcxMWI0YTYxNTAyNDNhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gNCAxMzozNTozNyAyMDA5ICswMjAwCi0KLSAgICA3NHh4Xzd4eDogQ1BDSTc1MDogTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAgb2YgY3BjaTc1MC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDBlNWVmMDdkMGQ5MWJkM2Q4N2ViZWEwNTM0ZjUzODU2MWFhOTc0ZDUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEp1biA0IDEzOjM1OjM2IDIwMDkgKzAyMDAKLQotICAgIDc0eHhfN3h4OiBDUENJNzUwOiBBZGQgbG9hZHBjaSBjb21tYW5kCi0KLSAgICBUaGlzIGNvbW1hbmQgaXMgdXNlZCB0byBsb2FkL2Jvb3QgYW4gT1MtaW1hZ2Ugd2hpY2ggaXMgdHJhbnNmZXJyZWQgZnJvbQotICAgIHRoZSBDUENJIGhvc3QgdG8gdGhlIENQQ0kgdGFyZ2V0L2FkYXB0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDBhMTRkNmI4ZjRkMjFmZjU5YTliNzY4NmE0OWE3NzA2OWE5ZmNkMmEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEp1biA0IDEzOjM1OjM1IDIwMDkgKzAyMDAKLQotICAgIDc0eHhfN3h4OiBDUENJNzUwOiBBZGQgY29tbWFuZGxpbmUgZWRpdGluZy9oaXN0b3J5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDYwY2ZlODdiZDM5ZTZmMDdmMmI5MmViNGJmZjgyYmZkMTA1ZjQ3MjQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEp1biA0IDE2OjU1OjM0IDIwMDkgKzAyMDAKLQotICAgIFVCSTogQWRkIGNvbXBpbGUtdGltZSBjaGVjayBmb3IgY29ycmVjdCBtYWxsb2MgYXJlYSBjb25maWd1cmF0aW9uCi0KLSAgICBVQkkgaXMgcXVpdGUgbWVtb3J5IGdyZWVkeSBhbmQgcmVxdWlyZXMgYXQgbGVhc3QgYXBwcm94LiA1MTJrIG9mIG1hbGxvYwotICAgIGFyZWEuIFRoaXMgcGF0Y2ggYWRkcyBhIGNvbXBpbGUtdGltZSBjaGVjaywgc28gdGhhdCBib2FyZHMgd2lsbCBub3QKLSAgICBidWlsZCB3aXRoIGxlc3MgbWVtb3J5IHJlc2VydmVkIGZvciB0aGlzIGFyZWEgKENPTkZJR19TWVNfTUFMTE9DX0xFTikuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3Y2U2MDMxYWZjODY3MWM4YjQ3YzYxMzViMzY3OGQ0M2ZjZDAyODUyCi1BdXRob3I6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLURhdGU6CU1vbiBBcHIgNiAyMToyNDo0MyAyMDA5ICswNTMwCi0KLSAgICBzZjogbmV3IE1hY3Jvbml4IE1YMjV4eCBTUEkgZmxhc2ggZHJpdmVyCi0KLSAgICBBZGRlZCBtYWNyb25peCBTRiBkcml2ZXIgZm9yIE1URCBmcmFtZXdvcmsKLSAgICBNWDI1TDEyODA1RCBpcyBzdXBwb3J0ZWQgYW5kIHRlc3RlZAotICAgIFRCRDogc2VjdG9yIGVyYXNlIGltcGxlbWVudGF0aW9uLCBvdGhlciBkZWl2Y2VzIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyYTZjYzU4ODY5MzA1ZjM0NmUzODllZWZkZmE5NmRlYTUxNDZjYjBjCi1BdXRob3I6IFRvZG9yIEkgTW9sbG92IDx0bW9sbG92QHVjc2QuZWR1PgotRGF0ZToJU2F0IEFwciA0IDA3OjE0OjQ0IDIwMDkgLTA0MDAKLQotICAgIHNmOiBhdG1lbDogaW1wbGVtZW50IHBvd2VyLW9mLXR3byB3cml0ZS9lcmFzZSBmdW5jcwotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9kb3IgSSBNb2xsb3YgPHRtb2xsb3ZAdWNzZC5lZHU+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA0YmM2ZWI3OWJlMmE3MzE3NDI1NTc1MTg0MzI0Yjk0ZTNiNDNmYmMyCi1BdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXkgMjUgMTc6MjM6MTggMjAwOSArMDUzMAotCi0gICAgbXBjODV4eDogODUzNmRzOiBBZGQgVVNCIHJlbGF0ZWQgQ09ORklHcwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIENPTkZJR3MgZm9yIGVuYWJsaW5nIFVTQiBpbiBtcGM4NTM2ZHMgYW5kIGFsc28KLSAgICBhZGRzIHVzYl9waHlfdHlwZSBpbiBDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTLiBBbHNvIHJldmFtcHMgaXRzCi0gICAgQ29weXJpZ2h0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgNjgyM2U5YjAxMjkwOTc3YzRkOWM5MDM4MTQ1OWMwMWY2NmUxMmU3OQotQXV0aG9yOiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gTWF5IDI1IDE3OjIzOjE3IDIwMDkgKzA1MzAKLQotICAgIG1wYzgzeHg6IDgzMTVlcmRiOiBBZGQgVVNCIHJlbGF0ZWQgQ09ORklHcwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIENPTkZJR3MgZm9yIGVuYWJsaW5nIFVTQiBpbiBtcGM4MzE1ZXJkYiBhbmQgYWxzbwotICAgIGFkZHMgdXNiX3BoeV90eXBlIGluIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MuIEFsc28gcmV2YW1wcyBpdHMKLSAgICBDb3B5cmlnaHQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBhMDdiZjE4MGVmYzNjMGRlNGE4OWEzYmQ0OWE3Yzc1ODRkZmI5NWE4Ci1BdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjEgMTc6MzI6NDggMjAwOSArMDUzMAotCi0gICAgbXBjODV4eDogVVNCOiBBZGQgc3VwcG9ydAotCi0gICAgVGhlIGZvbGxvd2luZyBwYXRjaCBhZGRzIDg1eHgtc3BlY2lmaWMgVVNCIHN1cHBvcnQgYW5kIGFsc28KLSAgICByZXZhbXBzIENvcHlyaWdodCBpbiBpbW1hcF84NXh4LmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDRlZjAxMDEwYWE0Nzk5Yzc1OWQ3NWU2NzAwN2ZkZDNhMzhjODhjOGEKLUF1dGhvcjogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1heSAyNSAxNzoyMzoxNiAyMDA5ICswNTMwCi0KLSAgICBtcGM4M3h4OiBVU0I6IFJlb3JnYW5pemVkIGl0cyBzdXBwb3J0Ci0KLSAgICBUaGUgZm9sbG93aW5nIHBhdGNoIHJlb3JnYW5pemVzL3Jld29ya3MgdGhlIFVTQiBzdXBwb3J0IGZvciBtcGM4M3h4Ci0gICAgYXMgdW5kZXI6LQotCi0gICAgICAqIE1vdmVzIHRoZSA4M3h4IFVTQiBjbG9jayBpbml0IGZyb20gZHJpdmVycy91c2IvaG9zdC9laGNpLWZzbC5jIHRvCi0JY3B1L21weDgzeHgvY3B1X2luaXQuYwotCi0gICAgICAqIEJvYXJkIHNwZWNpZmljIHVzYl9waHlfdHlwZSBpcyByZWFkIGZyb20gdGhlIGVudmlyb25tZW50Ci0KLSAgICAgICogQWRkcyBVU0IgRUhDSSBzcGVjaWZpYyBzdHJ1Y3R1cmUgaW4gaW5jbHVkZS91c2IvZWhjaS1mc2wuaAotCi0gICAgICAqIENvcHlyaWdodHMgcmV2YW1wZWQgaW4gbW9zdCBvZiB0aGUgZm9sbG93aW5nIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBlZDkwZDJjODcxNThlNTExNGI2MDA5ZmE5NWJiNjQxN2U0YjI3YjNlCi1BdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjEgMTc6MzI6MjcgMjAwOSArMDUzMAotCi0gICAgbXBjOHh4eDogVVNCOiBSZWxvY2F0ZXMgZWhjaS1mc2wuaCB0byBpbmNsdWRlL3VzYgotCi0gICAgVGhlIGZvbGxvd2luZyBwYXRjaCBtb3ZlcyA4eHh4LXNwZWNpZmMgVVNCICNkZWZpbmVzIGZyb20KLSAgICBkcml2ZXJzL3VzYi9ob3N0L2VoY2ktZnNsLmggdG8gaW5jbHVkZS91c2IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBNYWhhamFuIDx2aXZlay5tYWhhamFuQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBjZmQzOWNkZjk0MjJkM2QyNWU5YjNjMDU4ODY1ZjRjMWY2NmYzNGRhCi1BdXRob3I6IFZpdmVrIE1haGFqYW4gPHZpdmVrLm1haGFqYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjEgMTc6MzI6MTUgMjAwOSArMDUzMAotCi0gICAgbXBjOHh4eDogVVNCOiBSZW1vdmVkIHJlZW5hYmxlbWVudCBvZiBpdHMgaW50ZXJmYWNlCi0KLSAgICBUbyBwcmVwYXJlIGZvciB0aGUgODV4eCBVU0Igc3VwcG9ydCwgd2hpY2ggcmVxdWlyZXMgaW50ZXJmYWNlIGVuYWJsZW1lbnQKLSAgICBvbmx5IG9uY2UgaW4gKHNwZWNpZmllZCkgb3JkZXIsIG5vIGRpZmZlcmVudCB0aGFuIGluc3RydWN0aW9ucyBmb3IKLSAgICBlbmFibGluZyB0aGUgaW50ZXJmYWNlIHVuZGVyIDgzeHguCUl0IGlzIHVua25vd24gd2h5IHRoZSBvcmlnaW5hbCBhdXRob3IKLSAgICBlbmFibGVkIHRoZSBpbnRlcmZhY2UgdHdpY2UgKGNoZWNrZWQgZm9yIHJlZmVyZW5jZXMgaW4gZXJyYXRhLCBldGMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVml2ZWsgTWFoYWphbiA8dml2ZWsubWFoYWphbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgMmM3OTIwYWZhZjk2ZDk3NzkzMDQyMDJjZDhhMzU1YjRmNzU3NmE4MwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1heSAyMiAxNzoyMzoyNSAyMDA5IC0wNTAwCi0KLSAgICA4M3h4OiBSZXBsYWNlIENPTkZJR19NUEM4M1swLTldWCB3aXRoIE1QQzgzWzAtOV14Ci0KLSAgICBVc2UgdGhlIHN0YW5kYXJkIGxvd2VyY2FzZSAieCIgY2FwaXRhbGl6YXRpb24gdGhhdCBvdGhlciBGcmVlc2NhbGUKLSAgICBhcmNoaXRlY3R1cmVzIHVzZSBmb3IgQ1BVIGRlZmluZXMgdG8gcHJldmVudCBjb25mdXNpb24gYW5kIGVycm9ycwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGY4OTg2MDQ5NDVhZjQ1NDNjMTUyNWZjMzNiNmJhZTYyMWEzYjgwNQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1heSAyMiAxNzoyMzoyNCAyMDA5IC0wNTAwCi0KLSAgICA4M3h4OiBSZXBsYWNlIENPTkZJR19NUEM4M1hYIHdpdGggQ09ORklHX01QQzgzeHgKLQotICAgIFVzZSB0aGUgc3RhbmRhcmQgbG93ZXJjYXNlICJ4eCIgY2FwaXRhbGl6YXRpb24gdGhhdCBvdGhlciBGcmVlc2NhbGUKLSAgICBhcmNoaXRlY3R1cmVzIHVzZSBmb3IgQ1BVIGRlZmluZXMgdG8gcHJldmVudCBjb25mdXNpb24gYW5kIGVycm9ycwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmE0ZmVhZTkwY2E3MWRlMTY4MWQ1ODA4ZjE3ZTczMjI0ZDhmMDNjNAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVuIDIgMTY6NTM6MTYgMjAwOSArMDIwMAotCi0gICAgbXBjNTEyeDogVXNlIHNlcmlhbF9zZXRicmcoKSBpbiBzZXJpYWxfaW5pdCgpIHRvIG5vdCBkdXBsaWNhdGUgdGhlIGNvZGUKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgZHVwbGljYXRlZCBjb2RlIGZvciBiYXVkcmF0ZSBnZW5lcmF0b3IgY29uZmlndXJhdGlvbgotICAgIGluIHRoZSBQU0Mgc2VyaWFsX2luaXQoKSBpbXBsZW1lbnRhdGlvbiBieSBjYWxsaW5nIHNlcmlhbF9zZXRicmcoKSBpbnN0ZWFkCi0gICAgb2YgZHVwbGljYXRpbmcgdGhlIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiOGMxZDZhNTRmZjgxOTU0ODhiNjhlMTYzZGU4ZWMzMWYxNjAzNDk2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKdW4gMiAxNjo1MzoxNSAyMDA5ICswMjAwCi0KLSAgICBtcGM1MTJ4OiBGaXggUFNDIGRpdmlzb3IgY2FsY3VsYXRpb24gZm9yIGJhdWRyYXRlIHNldHRpbmcKLQotICAgIFRoZSB3cm9uZyBpbnB1dCBmcmVxdWVuY3kgd2FzIHVzZWQgaW4gc2VyaWFsX3NldGJyZygpLiBUaGlzIHBhdGNoIGZpeGVzCi0gICAgdGhpcyBieSB1c2luZyBpcHNfY2xrIGFzIGlucHV0IGZyZXF1ZW5jeSBmb3IgdGhlIFBTQyBiYXVkcmF0ZSBnZW5lcmF0b3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1MjU2OGMzNjU0YjJiMjU3MDE2ZDUyMTY3ODA1YWUxMzJmYWFjMTRlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjQ2IDIwMDkgKzAyMDAKLQotICAgIE1QQzUxMng6IGFkZCBzdXBwb3J0IGZvciBBUklBIGJvYXJkCi0KLSAgICBBUklBIGlzIGEgTVBDNTEyMUUgYmFzZWQgQ09NIEV4cHJlc3MgbW9kdWxlIGJ5IERhdmUvREVOWC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgotCi1jb21taXQgM2I3NGU3ZWM1OGUyY2MzNTJiMGEzOTZhNjE0MDY1Y2ZlYjhkMTM4ZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1heSAxNiAxMDo0Nzo0NSAyMDA5ICswMjAwCi0KLSAgICBNUEM1MTJ4OiByZW1vdmUgaW5jbHVkZS9tcGM1MTJ4LmgKLQotICAgIE1vdmUgbmVlZGVkIGRlZmluaXRpb25zIChyZWdpc3RlciBkZXNjcmlwdGlvbnMgZXRjLikgZnJvbQotICAgIGluY2x1ZGUvbXBjNTEyeC5oICBpbnRvICBpbmNsdWRlL2FzbS1wcGMvaW1tYXBfNTEyeC5oLgotCi0gICAgSW5zdGVhZCBvZiB1c2luZyBhICNkZWZpbmUnZCByZWdpc3RlciBvZmZzZXQsIHVzZSBhIGZ1bmN0aW9uIHRoYXQKLSAgICBwcm92aWRlcyB0aGUgUEFUQSBjb250cm9sbGVyJ3MgYmFzZSBhZGRyZXNzLgotCi0gICAgQWxsIHRoZSByZXN0IG9mIGluY2x1ZGUvbXBjNTEyeC5oIGFyZSByZWdpc3RlciBvZmZzZXQgZGVmaW5pdGlvbnMKLSAgICB3aGljaCBjYW4gYmUgZWxpbWluYXRlZCBieSBwcm9wZXIgdXNlIG9mIEMgc3RydWN0dXJlcy4KLQotICAgIFRoZXJlIGFyZSBvbmx5IGEgZmV3IHJlZ2lzdGVyIG9mZnNldHMgcmVtYWluaW5nIHRoYXQgYXJlIG5lZWRlZCBpbgotICAgIGNwdS9tcGM1MTJ4L3N0YXJ0LlM7IGZvciB0aGVzZSB3ZSBwcm92aWRlIGNwdS9tcGM1MTJ4L2FzbS1vZmZzZXRzLmgKLSAgICB3aGljaCBpcyBpbnRlbmRlZCBhcyBhIHRlbXBvcmFyeSB3b3JrYXJvdW5kIG9ubHkuIEluIGEgbGF0ZXIgcGF0Y2gKLSAgICB0aGlzIGZpbGUgd2lsbCBiZSByZW1vdmVkLCB0b28sIGFuZCB0aGVuIGF1dG8tZ2VuZXJhdGVkIGZyb20gdGhlCi0gICAgcmVzcGVjdGl2ZSBDIHN0cnVjdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLQotY29tbWl0IGE5MjdlNDkxYjJhMzI2YzFlOWM0MzEzZTNjZTQwNDI5ODg0MjI2OTcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXkgMTYgMTA6NDc6NDQgMjAwOSArMDIwMAotCi0gICAgTVBDNTEyeCBGRUM6IGdldCByaWQgb2YgZHVwbGljYXRlZCBzdHJ1Y3QgZXRoZXJuZXRfcmVncwotCi0gICAgVXNlIGV4aXN0aW5nIHN0cnVjdCBmZWM1MTJ4IGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDg0M2VmYjExOTJjYzhmZDRmOTA0YTIzZGJhYjRlMGZlM2UxYzViYzIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXkgMTYgMTA6NDc6NDMgMjAwOSArMDIwMAotCi0gICAgTVBDNTEyeDogdXNlIEkvTyBhY2Nlc3NvcnMgaW5zdGVhZCBvZiBwb2ludGVyIGFjY2Vzc2VzCi0KLSAgICBUaGlzIGNvbW1pdCBjaGFuZ2VzIHRoZSBNUEM1MTJ4IGNvZGUgdG8gdXNlIEkvTyBhY2Nlc3NvciBjYWxscyAoaS5lLgotICAgIG91dF8qKCkgYW5kIGluXyooKSkgaW5zdGVhZCBvZiB1c2luZyBkZXByZWNhdGVkIHBvaW50ZXIgYWNjZXNzZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLQotY29tbWl0IDE5ZGM3ZTE3OTI2OGJlMTQ4ZTU1MGMzNjIwMzIwOGM2NjI2MTBkNzYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXkgMTYgMTA6NDc6NDIgMjAwOSArMDIwMAotCi0gICAgTVBDNTEyeDogYWRkIG1vcmUgaGFyZHdhcmUgZGVzY3JpcHRpb24gdG8gaW1tYXBfNTEyeC5oCi0KLSAgICAtIGFkZCBHUElPIG1vZHVsZSBkZXNjcmlwdGlvbgotICAgIC0gYWRkIEFkZHJlc3MgTGF0Y2ggVGltaW5nIFJlZ2lzdGVyIGRlc2NyaXB0aW9uCi0gICAgLSBhZGQgSU8gQ29udHJvbCBNZW1vcnkgTWFwCi0gICAgLSBhZGQgRkVDIE1lbW9yeSBNYXAKLQotICAgIEFsc28gY2hhbmdlIGJvYXJkL2ZyZWVzY2FsZS9tcGM1MTIxYWRzL21wYzUxMjFhZHMuYyBhbmQKLSAgICBjcHUvbXBjNTEyeC9pb3Bpbi5jIGFzIG5lZWRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgotCi1jb21taXQgNzI2MDFkMDRmZGZkZDRjNzU5N2FmY2YxZjZhYWI2NTRiZDk5MzY2YwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1heSAxNiAxMDo0Nzo0MSAyMDA5ICswMjAwCi0KLSAgICBSZW5hbWUgYWRzNTEyMSBib2FyZCBpbnRvIG1wYzUxMjFhZHMKLQotICAgIFdlIHJlbmFtZSB0aGUgYm9hcmQgc28gd2UgdXNlIGEgY29uc2lzdGVudCBuYW1lIGluIFUtQm9vdCBhbmQgaW4KLSAgICBMaW51eC4gIEFsc28sIHdlIHVzZSB0aGlzIG9wcG9ydHVuaXR5IHRvIG1vdmUgdGhlIGJvYXJkIGludG8gdGhlCi0gICAgRnJlZWNhbGUgdmVuZG9yIGRpcmVjdG9yeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgotCi1jb21taXQgZGViZjg3NDE1NTc5YzBmNTBhYWI5ZTA4MzI5NzZkNDUwNmJhYmUwZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1heSAxNiAxMDo0Nzo0MCAyMDA5ICswMjAwCi0KLSAgICBjcHUvbXBjNTEyeC9kaXUuYzogZml4IHdhcm5pbmc6IGFzc2lnbm1lbnQgZnJvbSBpbmNvbXBhdGlibGUgcG9pbnRlciB0eXBlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLQotY29tbWl0IDhiMjUxMjYzMTkxZWM1NTQ5NjdkZDFhZGQ2MjM3YzFiYTdmN2ViMjUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXkgMTYgMTA6NDc6MzkgMjAwOSArMDIwMAotCi0gICAgY3B1L21wYzUxMngvcGNpLmM6IG1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwCi0KLSAgICBHZXQgcmlkIG9mIHZhcmlhYmxlIGRlY2xhcmF0aW9uIGluIHRoZSBtaWRkbGUgb2YgdGhlIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBKb2huIFJpZ2J5IDxqY3JpZ2J5QGdtYWlsLmNvbT4KLQotY29tbWl0IGRlMjZlZjk5YmRkYmNlNGVkMjI1ZjkzYWZjZjBiZWU5OWMzYjZmODcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXkgMTYgMTA6NDc6MzggMjAwOSArMDIwMAotCi0gICAgbXBjNTEyeDogTW92ZSBjb21tb24gZmlsZXMgdG8gc2hhcmUgdGhlbSBieSBzZXZlcmFsIGJvYXJkcwotCi0gICAgV2Ugd2lsbCBzb29uIHNlZSBzZXZlcmFsIG5ldyBNUEM1MjF4IGJhc2VkIGJvYXJkcyBhZGRlZC4gIFRoaXMgcGF0Y2gKLSAgICBtb3ZlcyBmaWxlcyB0aGF0IGFyZSBub3QgYm9hcmQgc3BlY2lmaWMgdG8gYSBjb21tb24gZGlyZWN0b3J5IHNvIHRoZXkKLSAgICBjYW4gYmUgc2hhcmVkIGJ5IGFsbCBzdWNoIHBvcnRzLiAgSXQgYWxzbyBzcGxpdHMgb2ZmIGNvbW1vbiBJREUgY29kZQotICAgIGludG8gYSBuZXcgZmlsZSwgY3B1L21wYzUxMngvaWRlLmMgLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci0KLWNvbW1pdCAwM2UwNjlkYzBhNzY1ZDUwNmY3OGE2ODMxOWFjZjMzZDQzMmUwMzViCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDE2IDEwOjQ3OjM3IDIwMDkgKzAyMDAKLQotICAgIG1wYzUxMng6IGNoYW5nZSBjcHUvbXBjNTEyeC9NYWtlZmlsZSB0byB1c2UgS2NvbmZpZyBzdHlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogSm9obiBSaWdieSA8amNyaWdieUBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhODljMzNkYjk2YTFlNTUzMTlhMjg2ZGQ0YzNjMDVjYTY0YWM2YmZkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWF5IDI0IDE3OjA2OjU0IDIwMDkgKzAyMDAKLQotICAgIEdlbmVyYWwgaGVscCBtZXNzYWdlIGNsZWFudXAKLQotICAgIE1hbnkgb2YgdGhlIGhlbHAgbWVzc2FnZXMgd2VyZSBub3QgcmVhbGx5IGhlbHBmdWw7IGZvciBleGFtcGxlLCBtYW55Ci0gICAgY29tbWFuZHMgdGhhdCB0YWtlIG5vIGFyZ3VtZW50cyB3b3VsZCBub3QgcHJpbnQgYSBjb3JyZWN0IHN5bm9wc2lzCi0gICAgbGluZSwgYnV0ICJObyBhZGRpdGlvbmFsIGhlbHAgYXZhaWxhYmxlLiIgd2hpY2ggaXMgbm90IGV4YWN0bHkgd3JvbmcsCi0gICAgYnV0IG5vdCBoZWxwZnVsIGVpdGhlci4KLQotICAgIENvbW1pdCBgYE1ha2UgInVzYWdlIiBtZXNzYWdlcyBtb3JlIGhlbHBmdWwuJycgY2hhbmdlZCB0aGlzCi0gICAgcGFydGlhbGx5LiBCdXQgaXQgYWxzbyBiZWNhbWUgY2xlYXIgdGhhdCBsb3RzIG9mICJVc2FnZSIgYW5kICJIZWxwIgotICAgIG1lc3NhZ2VzIChmaWVsZHMgInVzYWdlIiBhbmQgImhlbHAiIGluIHN0cnVjdCBjbWRfdGJsX3MgcmVzcGVjdGl2ZSkKLSAgICB3ZXJlIGFjdHVhbGx5IHJlZHVuZGFudC4KLQotICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHRoaXMgdXAgLSBmb3IgZXhhbXBsZToKLQotICAgIEJlZm9yZToKLQk9PiBoZWxwIGR0dAotCWR0dCAtIERpZ2l0YWwgVGhlcm1vbWV0ZXIgYW5kIFRoZXJtb3N0YXQKLQotCVVzYWdlOgotCWR0dAkgICAgLSBSZWFkIHRlbXBlcmF0dXJlIGZyb20gZGlnaXRhbCB0aGVybW9tZXRlciBhbmQgdGhlcm1vc3RhdC4KLQotICAgIEFmdGVyOgotCT0+IGhlbHAgZHR0Ci0JZHR0IC0gUmVhZCB0ZW1wZXJhdHVyZSBmcm9tIERpZ2l0YWwgVGhlcm1vbWV0ZXIgYW5kIFRoZXJtb3N0YXQKLQotCVVzYWdlOgotCWR0dAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDk0Nzk2ZDg1NDRkNDI0ODAyODE0MWJhZDExYzZhNzRiODQwZTlkNmUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXkgMjQgMTk6MTc6MjkgMjAwOSArMDIwMAotCi0gICAgTWFrZSAidXNhZ2UiIG1lc3NhZ2VzIG1vcmUgaGVscGZ1bC4KLQotICAgIEluIGNhc2Ugb2YgaW5jb3JyZWN0IGNvbW1hbmQgaW52b2NhdGlvbnMgVS1Cb290IHVzZWQgdG8gcHJpbnQgcHJldHR5Ci0gICAgdXNlbGVzcyAidXNhZ2UiIG1lc3NhZ2VzLCBmb3IgZXhhbXBsZToKLQotCT0+IG5hbmQgbWFya2JhZAotCVVzYWdlOgotCW5hbmQgLSBOQU5EIHN1Yi1zeXN0ZW0KLQotICAgIEluIHRoZSByZXN1bHQsIHRoZSB1c2VyIHdvdWxkIGhhdmUgdG8gcnVuIHRoZSAiaGVscCIgY29tbWFuZCB0byBnZXQKLSAgICB0aGUgKGF2YWlsYWJsZSkgaW5mb3JtYXRpb24gYWJvdXQgY29ycmVjdCBjb21tYW5kIHVzYWdlLiBDaGFuZ2UgdGhpcywKLSAgICBzbyB0aGF0IHRoaXMgaW5mb3JtYXRpb24gZ2V0cyBhbHdheXMgcHJpbnRlZC4KLQotICAgIE5vdGUgdGhhdCB0aGlzIGNoYW5nZXMgdGhlIHVzZXIgaW50ZXJmYWNlIG9mIGFsbCBjb21tYW5kcywgYnV0Ci0gICAgaG9wZWZ1bGx5IHRvIHRoZSBiZXR0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGM5NGY2YzU0YmJjNGRjNWY0MThkYTAxZDhlYzAxZTJhZGY2MzZiZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gTWF5IDI0IDAyOjI2OjE5IDIwMDkgLTA0MDAKLQotICAgIG52ZWRpdDogc3BlZWQgdXAgcHJpbnRpbmcgb2YgZW52aXJvbm1lbnQKLQotICAgIFRoZSBwcmludGluZyBjb2RlIHdvdWxkIGNoZWNrIHRoZSBzYW1lIGVudmlyb25tZW50IGJ5dGUgbXVsdGlwbGUgdGltZXMgYW5kCi0gICAgd3JpdGUgdG8gdGhlIGNvbnNvbGUgb25lIGJ5dGUgYXQgYSB0aW1lLiAgRm9yIHNvbWUgZGV2aWNlcyAoc3VjaCBhcyB0aGUKLSAgICBCbGFja2ZpbiBKVEFHIGNvbnNvbGUgd2hpY2ggb3BlcmF0ZXMgaW4gOCBieXRlcyBhdCBhIHRpbWUpLCB0aGlzIGlzIHByZXR0eQotICAgIGRhbW5lZCBzbG93LiAgU28gY3JlYXRlIGEgc21hbGwgMTYgYnl0ZSBidWZmZXIgdG8gZmlsbCB1cCBhbmQgc2VuZCB0byBwdXRzCi0gICAgYXMgbmVlZGVkLglJbiB0aGUgcHJvY2VzcywgdW5pZnkgdGhlIGRpZmZlcmVudCBwcmludCBmdW5jdGlvbnMsIHNocmluawotICAgIHRoZSByZXN1bHRpbmcgY29kZSAoc291cmNlIGFuZCBjb21waWxlZCksIGFuZCBhdm9pZCBleGNlc3MgZW52IHJlYWRzIGFzCi0gICAgdGhvc2UgdG9vIGNhbiBiZSBzb21ld2hhdCBleHBlbnNpdmUgZGVwZW5kaW5nIG9uIHRoZSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDMxMTIwMzBhNDMwNTUzNzY4ZGU1ZDMwYzA1YmVkZjg3MTA3ODQ0NTIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMjIgMTk6Mjg6NTIgMjAwOSArMDIwMAotCi0gICAgY29uZmlnLm1rOiByZW1vdmUgdW4tbmVlZGVkIFJFTU9URV9CVUlMRCBjaGVjawotCi0gICAgYXMgJChvYmopIGlzIGVtcHR5IHdoZW4gaW4gdHJlZSBidWlsZAotCi0gICAgJS5zOgklLlMKLQkkKENQUCkgJChBRkxBR1MpIC1vICRAICQ8Ci0KLSAgICBhbmQKLQotICAgICQob2JqKSUuczoJJS5TCi0JJChDUFApICQoQUZMQUdTKSAtbyAkQCAkPAotCi0gICAgYXJlIHRoZSBzYW1lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIEFja2VkLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2NTEzNTFmZTk4MGIyMDIxN2IwMTRiOWE4ODgzOThmMThkNzc5NTFjCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CVdlZCBNYXkgMjAgMDc6NTU6NDEgMjAwOSAtMDUwMAotCi0gICAgRkFUIHJlcGxhY2UgY29tcGFyZV9zaWduIHdpdGggc3RybmNtcC4KLQotICAgIFRoZSBzdGF0aWMgZnVuY3Rpb24gY29tcGFyZV9zaWduIGlzIG9ubHkgdXNlZCB0byBjb21wYXJlIHRoZSBmc190eXBlIHN0cmluZwotICAgIGFuZCBkb2VzIG5vdCBkbyBhbnl0aGluZyBtb3JlIHRoYW4gd2hhdCBzdHJuY21wIGRvZXMuCi0KLSAgICBUaGUgYWRkaXRpb24gb2YgdGhlIHRyYWlsaW5nICdcMCcgdG8gZnNfdHlwZSwgd2hpbGUgbGVnYWwsIGlzIG5vdCBuZWVkZWQKLSAgICBiZWNhdXNlIHRoZSBpdCBpcyBuZXZlciBwcmludGVkIG91dCBhbmQgc3RybmNtcCBkb2VzIG5vdCBkZXBlbmQgb24gTlVMTAotICAgIHRlcm1pbmF0ZWQgc3RyaW5ncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IGVjYjFkYzg5MjI5N2Q1ZDk5ODc2OTA3MzI4ZmVkNzMyZmVlZmVhYjIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIE1heSAyMCAwNDozNToxNCAyMDA5IC0wNDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgTGludXgtbGlrZSBrYWxsc3lzbXMKLQotICAgIFRoZSBrZXJuZWwgc3RvcmVzIGFkZHJlc3M8LT5zeW1ib2wgbmFtZXMgaW4gaXQgc28gdGhpbmdzIGNhbiBiZSBkZWNvZGVkIGF0Ci0gICAgcnVudGltZS4gIERvIGl0IGluIFUtQm9vdCwgYW5kIHdlIGdldCBuaWNlIHN5bWJvbCBkZWNvZGluZyB3aGVuIGNyYXNoaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMzZjOTE2OWFhNmY3OWRkZjYwNGEzYmNhNjRlMTQ1NjU0Zjk0ODg4YgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIE1heSAxNyAxNjowMTo1NCAyMDA5ICswMjAwCi0KLSAgICBjbWRfbXRkcGFydHMuYzogYWxsb3cgdG8gb21pdCBkZWZpbml0aW9ucyBmb3IgZGVmYXVsdCBzZXR0aW5ncwotCi0gICAgVGhlcmUgaXMgYWN0dWFsbHkgbm8gZ29vZCByZWFzb24gdG8gZW5mb3JjZSB0aGF0IGFsbCBib2FyZAotICAgIGNvbmZpZ3VhdGlvbnMgbXVzdCBkZWZpbmUgZGVmYXVsdCBzZXR0aW5ncyBmb3IgIm10ZGlkcyIgYW5kCi0gICAgIm10ZHBhcnRzIi4gIEFjdHVhbGx5IHRoaXMgbWF5IGJlIGRpZmZpY3VsdCB0byBoYW5kbGUsIGVzcGVjaWFsbHkgb24KLSAgICBib2FyZHMgd2hlcmUgZGlmZmVyZW50IHNpemVzIG9mIGZsYXNoIGNoaXBzIGNhbiBiZSBmaXQsIHNvIHRoZXJlIGlzIG5vCi0gICAgcmVhbCAiZGVmYXVsdCIgcGFydGl0aW9uIG1hcCBmb3IgYWxsIGJvYXJkcy4KLQotICAgIExpZnQgdGhpcyBhcmJpdHJhcnkgbGltaXRhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA4NjRhYTAzNGYzYTBlMTBjZTcxMGU4YmJkYTE3MWRmM2NhYjU5NDE0Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXkgMTIgMTQ6MzE6NTYgMjAwOSArMDIwMAotCi0gICAgY21kX210ZHBhcnRzOiBNb3ZlIHRvIGNvbW1vbiBoYW5kbGluZyBvZiBGTEFTSCBkZXZpY2VzIHZpYSBNVEQgbGF5ZXIKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBhbGwgcmVmZXJlbmNlcyB0byB0aGUgZGlyZWN0IENGSSBGTEFTSCBpbnRlcmZhY2UKLSAgICAodmlhIGZsYXNoX2luZm9bXSkuIE5vdyB0aGF0IGFsbCBGTEFTSCB0eXBlcyBjdXJyZW50bHkgaGFuZGxlZCBpbgotICAgIG10ZHBhcnRzIGFyZSBhdmFpbGFibGUgKGlmIHNlbGVjdGVkLCBzZWUgYmVsb3cpIHZpYSB0aGUgTVREIGluZnJhc3RydWN0dXJlLgotICAgIFRoaXMgaXMgTk9SLCBOQU5EIGFuZCBPbmVOQU5EIHJpZ2h0IG5vdy4gVGhpcyBjYW4gYmUgYWNoaWV2ZWQgYnkgZGVmaW5pbmcKLSAgICB0aGUgZm9sbG93aW5nIG9wdGlvbnM6Ci0KLSAgICBDT05GSUdfTVREX0RFVklDRSAoZm9yIGFsbCBGTEFTSCB0eXBlcykKLQotICAgIHBsdXMKLQotICAgIENPTkZJR19GTEFTSF9DRklfTVREIChmb3IgTk9SIEZMQVNIKQotCi0gICAgU28gd2UgbmVlZCB0byBhZGQgdGhvc2UgZGVmaW5lcyB0byB0aGUgYm9hcmQgY29uZmlnIGhlYWRlcnMgY3VycmVudGx5Ci0gICAgdXNpbmcgdGhlIG10ZHBhcnRzIGNvbW1hbmRzLiBUaGlzIGlzIGRvbmUgdmlhIGFub3RoZXIgcGF0Y2gsIHNvCi0gICAgd2Ugc2hvdWxkbid0IGJyZWFrIG10ZHBhcnRzIGNvbXBhdGliaWxpdHkuCi0KLSAgICBPbmUgYmlnIGFkdmFudGFnZSBmcm9tIHRoaXMgc29sdXRpb24gaXMgdGhhdCB0aGUgY21kX210ZHBhcnRzLmMgaXMKLSAgICAqbXVjaCogY2xlYW5lciBub3cuIExvdCdzIG9mICNpZmRlZidzIGFyZSByZW1vdmVkIGFuZCB0aGUgY29kZSBpdHNlbGYKLSAgICBpcyBzbWFsbGVyLiBBZGRpdGlvbmFsbHkgdGhlIG5ld2x5IGFkZGVkIE1EVCBjb25jYXRlbmF0aW9uIGZlYXR1cmUKLSAgICBjYW4gbmV3IGJlIHVzZWQgdmlhIHRoZSBtdGRwYXJ0cyBpbmZyYXN0cnVjdHVyZSBhbmQgdGhlcmVmb3IgdmlhCi0gICAgVUJJIGV0Yy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIENjOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ1NTgxMDdjMTg3MDgwNTBmMDViNjYzOWIyMTkyZWZiNjdjOTA1ZGMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE1heSAxMiAxNDozMToxOCAyMDA5ICswMjAwCi0KLSAgICBtdGQ6IEludHJvZHVjZSBDT05GSUdfTVREX0RFVklDRSB0byBzZWxlY3QgY29tcGlsYXRpb24gb2YgbXRkY29yZS5vCi0KLSAgICBUaGlzIG5ldyBkZWZpbmUgZW5hYmxlcyBtdGRjb3JlLmMgY29tcGlsYXRpb24gYW5kIHdpdGggdGhpcyB3ZSBjYW4KLSAgICBzZWxlY3QgdGhlIE1URCBkZXZpY2UgaW5mcmFzdHJ1Y3R1cmUgbmVlZGVkIGZvciB0aGUgcmV3b3JrZWQgbXRkcGFydHMKLSAgICBjb21tYW5kLgotCi0gICAgV2Ugbm93IGhhdmUgdGhlIDIgTVREIGluZnJhc3RydWN0dXJlIGRlZmluZXMsIENPTkZJR19NVERfREVWSUNFIGFuZAotICAgIENPTkZJR19NVERfUEFSVElUSU9OUy4gQ09ORklHX01URF9ERVZJQ0UgaXMgbmVlZGVkIChhcyBleHBsYWluZWQgYWJvdmUpCi0gICAgZm9yIHRoZSAibXRkcGFydHMiIGNvbW1hbmQgYW5kIENPTkZJR19NVERfUEFSVElUSU9OUyBpcyBuZWVkZWQgZm9yIFVCSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5NDI1NTZhOTJhOGMxZWIxYmQ3NjU4NGE1MTQzZjZmNTdkY2IyNWFkCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXkgMTIgMTQ6MzI6NTggMjAwOSArMDIwMAotCi0gICAgbXRkOiBNVEQgcmVsYXRlZCBjb25maWcgaGVhZGVyIGNoYW5nZXMgKG10ZHBhcnRzIGNvbW1hbmQpCi0KLSAgICBCeSBjaGFuZ2luZyB0aGUgY21kX210ZHBhcnRzIHRvIG9ubHkgdXNlIHRoZSBNVEQgaW5mcmFzdHJ1Y3R1cmUgYW5kCi0gICAgbm90IHRoZSBkaXJlY3QgaW50ZXJmYWNlIHRvIHRoZSBDRkkgTk9SIEZMQVNIIGRyaXZlciB3ZSBub3cgbmVlZAotICAgIHRvIGFkZCB0aGUgTVREIGluZnJhc3RydWN0dXJlIHRvIGFsbCBib2FyZHMgdXNpbmcgdGhvc2UgbXRkcGFydHMKLSAgICBjb21tYW5kcy4gVGhpcyBwYXRjaCBhZGRzIHRob3NlIGNvbXBvbmVudHM6Ci0KLSAgICBDT05GSUdfTVREX0RFVklDRSAoZm9yIGFsbCBGTEFTSCB0eXBlcykKLQotICAgIHBsdXMKLQotICAgIENPTkZJR19GTEFTSF9DRklfTVREIChmb3IgTk9SIEZMQVNIKQotCi0gICAgVG8gYWxsIGJvYXJkIG1haW50YWluZXJzOiBQbGVhc2UgdGVzdCB0aGlzIG9uIHlvdXIgcGxhdGZvcm1zIGFuZAotICAgIHJlcG9ydCBhbnkgcHJvYmxlbXMvaXNzdWVzIGZvdW5kLiBUaGFua3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IFJvbiBNYWRyaWQgPGluZm9Ac2hlbGRvbmluc3QuY29tPgotICAgIENjOiBHZW9yZyBTY2hhcmR0IDxzY2hhcmR0QHRlYW0tY3RlY2guZGU+Ci0gICAgQ2M6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLSAgICBDYzogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIENjOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLSAgICBDYzogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci0gICAgQ2M6IFJpY2FyZG8gUmliYWxkYSA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLQotY29tbWl0IDhkMmVmZmVhMjNlOTM4NjMxMTI2YTc4ODgwMDhhMDYzN2UxM2IzODkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE1heSAxMSAxNjowMzo1NSAyMDA5ICswMjAwCi0KLSAgICBtdGQ6IFVwZGF0ZSBNVEQgaW5mcmFzdHJ1Y3R1cmUgdG8gc3VwcG9ydCA2NGJpdCBkZXZpY2Ugc2l6ZQotCi0gICAgVGhpcyBwYXRjaCBicmluZ3MgdGhlIFUtQm9vdCBNVEQgaW5mcmFzdHJ1Y3R1cmUgaW4gc3luYyB3aXRoIHRoZSBjdXJyZW50Ci0gICAgTGludXggTVREIHZlcnNpb24gKDIuNi4zMC1yYzMpLiBCaWdnZXN0IGNoYW5nZSBpcyB0aGUgNjRiaXQgZGV2aWNlIHNpemUKLSAgICBzdXBwb3J0IGFuZCBhIHJlc3luYyBvZiB0aGUgbXRkcGFydC5jIGZpbGUgd2hpY2ggaGFzIHNlZW4gbXVsdGlwbGUgZml4ZXMKLSAgICBtZWFud2hpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIENjOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLQotY29tbWl0IDBhNTcyNjU1MzNjNDEyYWRmNjAyNGY0YjQ5NTUxNDFmNDM0NmIyYjkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE1heSAxMiAxNDoyOTozOSAyMDA5ICswMjAwCi0KLSAgICBtdGQ6IEFkZCBNVEQgY29uY2F0IHN1cHBvcnQgdG8gY29uY2F0ZW5hdGUgbXVsdGlwbGUgTVREIE5PUiBkZXZpY2VzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgY29uY2F0ZW5hdGlvbiBzdXBwb3J0IHRvIHRoZSBVLUJvb3QgTVREIGluZnJhc3RydWN0dXJlLgotICAgIEJ5IGVuYWJsaW5nIENPTkZJR19NVERfQ09OQ0FUIHRoaXMgTVREIENGSSB3cmFwcGVyIHdpbGwgY29uY2F0ZW5hdGUKLSAgICBhbGwgZm91bmQgTk9SIGRldmljZXMgaW50byBvbmUgc2luZ2xlIE1URCBkZXZpY2UuIFRoaXMgY2FuIGJlIHVzZWQgYnkKLSAgICBlLmcgYnkgVUJJIHRvIGFjY2VzcyBhIHBhcnRpdGlvbiB0aGF0IHNwYW5zIG92ZXIgbXVsdGlwbGUgTk9SIGNoaXBzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNTVlMGVkNjA3OGIxMGIwZDQyNWI2YTA2NzdmMzhhMDE1YzI3N2RmNgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEFwciAyNSAxNDo1Nzo1MiAyMDA5ICswMjAwCi0KLSAgICBtYWtlIE1PREVNIFNVUFBPUlQgZ2VuZXJpYyBpbnN0ZWFkIG9mIGR1cGxpY2F0ZSBpdAotCi0gICAgYW5kIGZpeCBjb21tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi0gICAgQWRqdXN0ZWQgQ29weXJpZ2h0IG1lc3NhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYTMwZjUxOWJkMGNkZTc4YmE0NmI0MjQzMTRkZTk0ZmRhYjg2MzcyNgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglUdWUgSnVuIDIgMjA6NTM6NTYgMjAwOSAtMDUwMAotCi0gICAgWk9PTTIgZGV0ZWN0IHRoZSB2ZXJzaW9uIG9mIHRoZSB6b29tMiBib2FyZCBhdCBydW50aW1lLgotCi0gICAgVGhlcmUgYXJlIGN1cnJlbnRseSAzIHZlcnNpb25zIG9mIHRoZSB6b29tMiBib2FyZC4KLSAgICBUaGUgcHJvZHVjdGlvbiBib2FyZCwgdGhhdCBpcyBjdXJyZW50bHkgYmVpbmcgcmVsZWFzZWQuCi0gICAgVGhlIGJldGEgYm9hcmQsIHNpbWlsYXIgaW4gZm9ybSB0byB0aGUgcHJvZHVjdGlvbiBib2FyZCBidXQgbm90IHJlbGVhc2VkLgotICAgIFRoZSBhbHBoYSBib2FyZCwgYSBzZXQgb2YgUENCcyB3aXRoIGEgdmVyeSBsaW1pdGVkIGNpcmN1bGF0aW9uLgotCi0gICAgR1BJTyA5NCBpcyB1c2VkIHRvIGRldGVybWluZSB0aGUgdmVyc2lvbiBvZiB0aGUgYm9hcmQuIElmIEdQSU8gOTQgaXMgY2xlYXIsCi0gICAgdGhlIGJvYXJkIGlzIGEgcHJvZHVjdGlvbiBib2FyZCwgb3RoZXJ3aXNlIGl0IGlzIGEgYmV0YSBib2FyZC4KLQotICAgIFRoZSBhbHBoYSBib2FyZCB3aWxsIGxpa2VseSBiZSBtaXN0YWtlbiBmb3IgYSBiZXRhIGJvYXJkLiAgQW4gYWxwaGEgYm9hcmQKLSAgICB3YXMgdW5hdmFpbGlibGUgZm9yIHRlc3RpbmcuCi0KLSAgICBUaGlzIGhhcyBiZWVuIHRlc3RlZCBvbiB0aGUgYmV0YSBhbmQgcHJvZHVjdGlvbiBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDcxODc2M2M0NzQ1ZmQzZDk4N2E1NTc2ZDJhNjczMjVlOTQ0NGY5ZDQKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJV2VkIEp1biAzIDAxOjUzOjU3IDIwMDkgLTA1MDAKLQotICAgIEJlYWdsZSBDb252ZXJ0IHRoZSBib2FyZCB2ZXJzaW9uIGRldGVjdGlvbiB0byB1c2UgdGhlIE9NQVAzIEdQSU8gaW50ZXJmYWNlLgotCi0gICAgVGhlcmUgaXMgbm8gbmV3IGZ1bmN0aW9uYWxpdHkgaW4gdGhlIGNoYW5nZS4KLQotICAgIFRoaXMgY2hhbmdlIGlzIGEgY29udmVyc2lvbiBmcm9tIHRoZSB1c2luZyByYXcgcmVnaXN0ZXIgYWNjZXNzIHRvIHVzaW5nCi0gICAgdGhlIE9NQVAzIEdQSU8gQVBJIGRlc2NyaWJlZCBpbiBkb2MvUkVBRE1FLm9tYXAzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgN2NhYTEzZmRkMmQzZGM5NTdiNGUwYTIyODgxMGEzYTRhOGJhNDk5YgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglXZWQgSnVuIDMgMDE6NTM6NTUgMjAwOSAtMDUwMAotCi0gICAgRml4IGEgdHlwbyBpbiB0aGUgaW5zdHJ1Y3Rpb25zIG9uIHVzaW5nIG9tYXAzJ3MgZ3BpbyBpbnRlcmZhY2UuCi0KLSAgICBVc2luZyB0aGUgZXhhbXBsZSBmb3IgcmVhZGluZyBhIGdwaW8sIHNob3dzIHRoZSBwcm9ibGVtLgotICAgIE5VTEwgc2hvdWxkIGJlIHRoZSBncGlvIG51bWJlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLSAgICBBY2tlZC1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDBjOTUyMGVmZDY1MWNlMTM0NTE2NTRhMzUzMDdlYzg3ZDRhMTNhNjkKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJRnJpIE1heSAyOSAxODo1NzozMiAyMDA5IC0wNTAwCi0KLSAgICBaT09NMiBEZWZpbmUgR1BJTyBiYW5rcyB1c2VkLgotCi0gICAgRW5hYmxlIHRoZSBmdW5jdGlvbiBhbmQgaW50ZXJmYWNlIGNsb2NrcyBmb3IgYmFua3MgMiwzLDUgYW5kIDYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0gICAgQWNrZWQtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCA3MDhjZmI3NGI3YzZkZjljMzdkM2M0ODk4OGExNTRiZTc5ZGFlZmViCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBNYXkgMjkgMTg6NTc6MzEgMjAwOSAtMDUwMAotCi0gICAgT01BUDMgVHVybiBvbiB0aGUgR1BJTyBiYW5rIGNsb2NrcwotCi0gICAgVGhlIGZ1bmN0aW9uIGFuZCBpbnRlcmZhY2UgY2xvY2tzIGZvciBlYWNoIEdQSU8gYmFuaywgZXhjZXB0IHRoZSBmaXJzdCwgbXVzdAotICAgIGJlIGV4cGxpY2l0bHkgdHVybmVkIG9uLiAgVGhlc2UgYXJlIGNvbnRyb2xsZWQgYnkgdGhlIGNvbmZpZyBsZXZlbCBkZWZpbmVzCi0gICAgQ09ORklHX09NQVAzX0dQSU9fbiB3aGVyZSBuIGlzIGZyb20gMiB0byA2LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgNTkyNzI2MjBjMjQ1NDliNWJjZDAzYzk0YmExMmVjMzAyYzE0NzZhMgotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJVGh1IE1hciAyNiAxNToyNjowMSAyMDA5IC0wNDAwCi0KLSAgICBDb2xkZmlyZSBNNTI3MTogQWN0aXZhdGUgdS1ib290IHN5c3RlbSB0aW1lciBpbnRlcnJ1cHQuCi0KLSAgICBUaGlzIHBhdGNoIGFzc2lnbnMgdGhlIHUtYm9vdCBzeXN0ZW0gdGltZXIgaW50ZXJydXB0IHRvCi0gICAgaW50ZXJydXB0IGxldmVsIDMsIHByaW9yaXR5IDYuIFdpdGhvdXQgdGhpcyBwYXRjaCB0aGUgaW50ZXJydXB0Ci0gICAgd2lsbCBiZSBhIGxldmVsIDAsIHByaW9yaXR5IDAsIHdoaWNoIGRpc2FibGVzIGl0IGFuZCBjYXVzZQotICAgIHUtYm9vdCBmdW5jdGlvbnMgdGhhdCByZWxpZXMgb24gdGhlIHRpbWVyIChlLmcuIHNsZWVwIGNvbW1hbmQpCi0gICAgdG8gbmV2ZXIgcmV0dXJuLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLQotY29tbWl0IGRjMjY5NjVhZDNhY2RmYjE4NzgwMzYxZDc3YTI3NmIyODQzYTkwYWYKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CU1vbiBNYXIgMjMgMTM6MzU6NDggMjAwOSAtMDQwMAotCi0gICAgQ29tcGllciB3YXJuaW5nIGNsZWFudXAKLQotICAgIEZvbGxvdyB1cCB0byBnaXQgY29tbWl0OiAxOWI1YjUzM2NjZDUyMmFiZWI1MDFkNTEwNzUwNjkzYzM1ZTIwNDU2Ci0KLSAgICBDbGVhbnVwIG9uIGNvbXBpbGVyIHdhcm5pbmdzIG9uIHVudXNlZCB2YXJpYWJsZXMgbm93IHRoYXQKLSAgICBiZC0+YmlfZW5ldGFkZHIgaXMgbm8gbG9uZ2VyIHVzZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotCi1jb21taXQgNDJhODM3NjVkNTRmMDQyYjQwNzllMDVhMzQzODc4OTU0MjQyOTk4MQotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJRnJpIE1hciAyMCAxNTozMDoxMCAyMDA5IC0wNDAwCi0KLSAgICBBZGRzIFdBVENIRE9HX1JFU0VUKCkgZnVuY3Rpb24gY2FsbCB0byBsaWJfbTY4ayBkdGltZXJfaW50ZXJydXB0LgotCi0gICAgUG9ydGVkIGZyb20gbGliX3BwYy9pbnRlcnJ1cHRzLmMsIHRoaXMgYWRkcyB0aGUgYWJpbGl0eSBmb3IKLSAgICB0aGUgY29sZGZpcmUgc3lzdGVtIHRpbWVyIHRvIGF1dG8tcmVzZXQgdGhlIHdhdGNoZG9nIHdoZW4KLSAgICBkdGltZXJfaW50ZXJydXB0cyBpcyBjYWxsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotCi1jb21taXQgYTI0ZDk2ZTQwZTFjYTY2ZGRlNmU2YzE1OGU3ZWNmZmFmYzVhMjE5OQotQXV0aG9yOiBQcmFmdWxsYSBXYWRhc2thciA8cHJhZnVsbGFAbWFydmVsbC5jb20+Ci1EYXRlOglTdW4gTWF5IDMxIDE0OjUzOjIwIDIwMDkgKzAyMDAKLQotICAgIGFyY2hfbWlzY19pbml0IHN1cHBvcnQgZm9yIEFSTSBhcmNoaXRlY3R1cmVzCi0KLSAgICBUaGlzIHBhdGNoIGlzIHJlcXVpcmVkIGZvciBLaXJrd29vZCBzdXBwb3J0Ci0gICAgbWF5IGJlIHVzZWQgYnkgb3RoZXIgQVJNIGFyY2hpdGVjdHVyZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByYWZ1bGxhIFdhZGFza2FyIDxwcmFmdWxsYUBtYXJ2ZWxsLmNvbT4KLQotY29tbWl0IGIyNDAzNTg5YjRkOTk5NjM5NGJhZmM3M2VjYTM2MjNmNDNhYzJjMzEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMzEgMTQ6NTM6MTggMjAwOSArMDIwMAotCi0gICAgYXQ5MTogbW92ZSBjcHUgaW5mbyBwcmludCB0byBjcHUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiMzJlMTg5MDc5ZmExNmUxYjY0N2FjNmI5NDlmZDRlMGE5NDM1MzQzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWF5IDMxIDEyOjQ0OjQ2IDIwMDkgKzAyMDAKLQotICAgIGF0OTE6IG1vdmUgY3B1IG5hbWUgZGVmaW5lIHRvIGFybS9hcmNoLyBjcHUgaGVhZGVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNWJiNTliM2M5MDZlZTAxYWRmYWFjOTU2NTQ0M2U1MjM2YTc5MzA3OQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1heSAzMSAxMjo0NDo0NSAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiBleHRyYWN0IHJlc2V0IGZyb20gdGltZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2MWNmODUxYjA5Y2Y4YjY3MDA5ZWMxMWZjNDdjMTZhZGQ2YjE0MmE1Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWF5IDMxIDEyOjQ0OjQzIDIwMDkgKzAyMDAKLQotICAgIG9tYXAyNHh4OiByZW5hbWUgcmVzZXQgZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDlkNGZjOTlkYmRiZmRhMTI2MGFhZDQ3OGU4M2ZjYTdjZGYwZTFhMzIKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVN1biBNYXkgMzEgMTI6NDQ6NDIgMjAwOSArMDIwMAotCi0gICAgT01BUDM6IEZpeCBDS0UxIE1VWCBzZXR0aW5nIHRvIGFsbG93IHNlbGYtcmVmcmVzaAotCi0gICAgVGhlIEJlYWdsZSByZXYgQ3ggYW5kIE92ZXJvIGJvYXJkcyBhcmUgdXNpbmcgYm90aCBTRFJDIENTZXMuIFRoZSBNVVgKLSAgICBzZXR0aW5nIGlzIG5lZWRlZCBmb3IgdGhlIHNlY29uZCBDUyBjbG9jayBzaWduYWwgdG8gYWxsb3cgdGhlIDIgUkFNCi0gICAgcGFydHMgdG8gYmUgcHV0IGluIHNlbGYtcmVmcmVzaCBjb3JyZWN0bHkuIFRoaXMgYWxzbyB3b3JrcyBvbiByZXYgQgotICAgIEJlYWdsZSBib2FyZHMgd2l0aCAxMjhNIG9mIFJBTS4KLQotICAgIEZyb206IFN0ZXZlIFNha29tYW4gPHN0ZXZlQHNha29tYW4uY29tPgotICAgIEZyb206IEplYW4gUGloZXQgPGpwaWhldEBtdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4gUGloZXQgPGpwaWhldEBtdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHN0ZXZlQHNha29tYW4uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCAzOTYyYzRmOWZjNDQ4MmE2NTQ3ZjNjM2QzZDVlOTg2ZTYyNWFiYjhhCi1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTdW4gTWF5IDMxIDEyOjQ0OjQxIDIwMDkgKzAyMDAKLQotICAgIE9NQVAzOiBab29tMjogRW5hYmxlIEJvYXJkIGFuZCBDUFUgaW5mbwotCi0gICAgV2l0aCBvdGhlciBPTUFQMyBib2FyZHMgd2UgcmVjZW50bHkgc3dpdGNoZWQgdG8gQ1BVIGFuZCBCb2FyZAotICAgIGluZm8gQVBJLiBGcm9tIHBhcmFsbGVsIG1lcmdlLCB0aGlzIGlzIG1pc3NpbmcgZm9yIFpvb20yLgotICAgIEVuYWJsZSBpdCBmb3IgWm9vbTIsIHRvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDgzYWU2OThmZjI2YjgxYjU2OWNhMzJmN2YyYjAwOGFkMGRhMTVlNjYKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU3VuIE1heSAzMSAxMjo0NDozOSAyMDA5ICswMjAwCi0KLSAgICBaT09NMiBBZGQgbGVkIHN1cHBvcnQuCi0KLSAgICBUaGlzIHBhdGNoIGNvbnRyb2xzIHRoZSBsYXJnZSBMRUQgb24gdGhlIHRvcCBsZWZ0IG9mIHRoZSB6b29tMi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDY2MDg4OGI3ZmI4ODQwY2UxNjlkY2QyNTg5ZTQ5YWI0NGM0NmI4N2IKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJU3VuIE1heSAzMSAxMjo0NDozNyAyMDA5ICswMjAwCi0KLSAgICBaT09NMiBBZGQgc2VyaWFsIHN1cHBvcnQuCi0KLSAgICBab29tMiBzZXJpYWwgaXMgaW4gZ2VuZXJhbCBzdXBwbGllZCBieSBvbmUgb2YgdGhlIDQgVUFSVFMgb24gdGhlIGRlYnVnIGJvYXJkLgotICAgIFRoZSBkZWZhdWx0IHNlcmlhbCBpcyBmcm9tIHRoZSBVU0IgY29ubmVjdG9yIG9uIGxlZnQgc2lkZSBvZiB0aGUgZGVidWcgYm9hcmQuCi0gICAgVGhlIFVTQiBjb25uZWN0b3Igd2lsbCBwcm9kdWNlIDIgb2YgdGhlIDQgVUFSVFMuICBPbiB5b3VyIGhvc3QgcGljayB0aGUgZmlyc3QKLSAgICBlbnVtZXJhdGlvbi4KLQotICAgIFRoZSBkZXRhaWxzIG9mIHRoZSBzZXR0aW5nIG9mIHRoZSBzZXJpYWwgZ3BtYyBzZXR1cCBhcmUgbm90IGF2YWlsYWJsZS4KLSAgICBUaGUgdmFsdWVzIHdlcmUgcHJvdmlkZWQgYnkgYW5vdGhlciBwYXJ0eS4KLQotICAgIFRoZSBzZXJpYWwgcG9ydCBzZXQgdXAgaXMgdGhlIHNhbWUgd2l0aCBab29tMS4KLSAgICBCYXVkIHJhdGUgMTE1MjAwLCA4IGJpdCBkYXRhLCBubyBwYXJpdHksIDEgc3RvcCBiaXQsIG5vIGZsb3cuCi0KLSAgICBUaGUga2VybmVsIGJvb3RhcmdzIGFyZQotICAgIGNvbnNvbGU9dHR5UzMsMTE1MjAwbjgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDNlYTIwMWIwMTZhYjI1OWE1YWM4ODI0YWY3Njc1Njk1MjI3NjhjNDcKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMzEgMTI6NDQ6MjcgMjAwOSArMDIwMAotCi0gICAgbGg3YTQweDogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMzc5YmU1ODVlYjIzNDNkODgxNGE1Y2VlNWZiM2RhOTMwZDg0NmJlZQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1heSAxNiAyMjo0ODo0NiAyMDA5ICswMjAwCi0KLSAgICBweGE6IG1vdmUgc2VyaWFsIGRyaXZlciB0byBkcml2ZXJzL3NlcmlhbAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGFkN2U4YWFjNjkyMGY4YjhhODViM2NjMmU5M2JjYTc0NThlOTlhYTEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBNYXkgOSAxMzoyMToxOSAyMDA5ICswMjAwCi0KLSAgICBhcm06IHJlbW92ZSBjcHVfaW5pdAotCi0gICAgbW92ZSBzM2M0NGIwIHRvIGFyY2hfY3B1X2luaXQgYW5kIGFzIG5vb25lIHVzZSBjcHVfaW5pdCByZW1vdmUgaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBjMzU4ZDljM2YxNjU3MWU4ZjgyNWU4MWI3NWVhZjMyZTIyOGNiNjY5Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTWF5IDkgMTM6MjE6MTggMjAwOSArMDIwMAotCi0gICAgYXJtOiB1bmlmeSBpbnRlcnJ1cHQgaW5pdAotCi0gICAgYWxsIGFybSBpbml0IHRoZSBJUlEgc3RhY2sgdGhlIHNhbWUgd2F5Ci0gICAgc28gdW5pZnkgaXQgaW4gbGliX2FybS9pbnRlcnJ1cHRzLmMgYW5kIHRoZW4gY2FsbCBhcmNoIHNwZWNpZmljIGludGVycnVwdCBpbml0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTBhNDUxY2Q1N2NmZmJjYTg3NWM5N2JiZDg5MjkwNTljNTYyN2VjNgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1heSA4IDIwOjI0OjEyIDIwMDkgKzAyMDAKLQotICAgIGFybTogdW5pZnkgbGlua2VyIHNjcmlwdAotCi0gICAgYWxsIGFybSBib2FyZHMgZXhjZXB0IGEgZmV3IHVzZSB0aGUgc2FtZSBjcHUgbGlua2VyIHNjcmlwdAotICAgIHNvIG1vdmUgaXQgdG8gY3B1LyQoQ1BVKQotCi0gICAgdGhhdCBjb3VsZCBiZSBvdmVyd3JpdGUgaW4gZm9sbG93aW5nIG9yZGVyCi0gICAgU09DCi0gICAgQk9BUkQKLSAgICB2aWEgdGhlIGNvcnJlc3BvbmRpbmcgY29uZmlnLm1rCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOTQ3NWM2M2M3ODU1ZWRkODYzYzkzYTliYjBmNGI4ZTI0MGQ5ZDIxMgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1heSAxNiAxMDowMjowNSAyMDA5ICswMjAwCi0KLSAgICBhZmViOTI2MDogZml4IG1hY2IgZGV2aWNlIGluaXQKLQotICAgIHVzZXMgUEExMCwgUEExMSBmb3IgRVRYMiBhbmQgRVRYMy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxYmJhZTJiODE2ZDRlZDM4ZGIyZWJmNDIxNjZhOTczYjFmZmMwZGY3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBNYXkgMjcgMTA6MzQ6MzIgMjAwOSArMDIwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgUENJIGFzeW5jIGJvb3R1cCBtZXNzYWdlIGlmIFBDSSBpcyBub3QgdXNlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTM0NTVjMDA1MTBjNWFiZjFlOTE3NDNjNGEwMmQ4MzkzYjZkZjE4ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIE1heSAxNSAwOToxOTo1MiAyMDA5ICswMjAwCi0KLSAgICBUUU04MzR4OiB1c2UgYnVmZmVyZWQgd3JpdGVzIHRvIGFjY2VsZXJhdGUgd3JpdGluZyB0byBmbGFzaAotCi0gICAgQWxzbyBlbmFibGUgZGlzcGxheSBvZiAnRSdtcHR5IHNlY3RvcnMgaW4gImZsaW5mbyIgb3V0cHV0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDY4MWU2NzNhNTFjNDhmNGMwOTZhYTNjOGZhZTVlNjIxN2ZmZDU4ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IE1heSAxNCAyMzoxODozNCAyMDA5ICswMjAwCi0KLSAgICBUUU04MzR4OiBhZGQgRkRUIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkyOWI3OWEwYjVlNDgzMDNhYjA0YWFlOWQwYWJjZWIwYzcwN2YxMTEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBNYXkgMTQgMjM6MTg6MzMgMjAwOSArMDIwMAotCi0gICAgVFFNODM0eDogZml4IGVudmlyb25tZW50IHNpemU7IGFkZCByZWR1bmRhbnQgZW52LgotCi0gICAgQWxzbyByZXNlcnZlIG1vcmUgc3BhY2UgZm9yIFUtQm9vdCBhcyBpdCB3aWxsIHByb2JhYmx5IGdyb3cgc29vbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDJhZTBmMzVmZDYwYzczNDU0NDY4MzViOTVhNGRhZmYzNTZlMWYwMzEKLUF1dGhvcjogVGhvbWFzIExhbmdlIDx0aG9tYXNAY29yZWxhdHVzLnNlPgotRGF0ZToJU3VuIE1heSAzIDIwOjA3OjMzIDIwMDkgKzAyMDAKLQotICAgIEFSTSBEYVZpbmNpOiBSZXNldCB3aXRoIHdhdGNoZG9nIGVuYWJsZWQKLQotICAgIE9uY2UgdGhlIERhdmluY2kgd2F0Y2hkb2cgaGFzIGJlZW4gZW5hYmxlZCwgdGhlIHRpbWVvdXQKLSAgICB2YWx1ZSBjYW5ub3QgYmUgY2hhbmdlZC4gSWYgdGhlIHRpbWVvdXQgaW4gdXNlIGlzIGxvbmcsCi0gICAgaXQgY2FuIHRha2UgYSBsb25nIHRpbWUgZm9yIGNhcmQgdG8gcmVzZXQuIEJ5IHdyaXRpbmcKLSAgICBhbiBpbnZhbGlkIHNlcnZpY2Uga2V5LCB3ZSBjYW4gdHJpZ2dlciBhbiBpbW1lZGlhdGUgcmVzZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgTGFuZ2UgPHRob21hc0Bjb3JlbGF0dXMuc2U+Ci0KLWNvbW1pdCA2Y2M3YmE5ZWQ0MzEwNjk0NmFhOWFhODY4MzAyYWEyZmFmMWQxN2JlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgTWF5IDE1IDEwOjA3OjQzIDIwMDkgKzAyMDAKLQotICAgIHZpZGVvOiBBZGQgYW4gb3B0aW9uIHRvIHNraXAgdmlkZW8gaW5pdGlhbGl6YXRpb24KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBvcHRpb24gdG8gc2tpcCB0aGUgdmlkZW8gaW5pdGlhbGl6YXRpb24gb24gZm9yIGFsbAotICAgIHZpZGVvIGRyaXZlcnMuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgQ1BDSTc1MCB3aGljaCBjYW4gYmUgYnVpbHQgYXMKLSAgICBDUENJIGhvc3QgYW5kIGFkYXB0ZXIvdGFyZ2V0IGJvYXJkLiBBbmQgdGhlIGFkYXB0ZXIgYm9hcmQgY2FuJ3QKLSAgICBhY2Nlc3MgdGhlIHZpZGVvIGNhcmRzIGxvY2F0ZWQgb24gdGhlIENvbXBhY3RQQ0kgYnVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLSAgICBSZWJhc2VkIGFnYWluc3Qgc2ltcGxpZnlpbmcgcGF0Y2guCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGY2MmY2NDY5MmZmN2Y2MjI2YWQyMjFkNWRmNjQ4N2VhNWVmMzliZGQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgMTUgMTA6MDc6NDIgMjAwOSArMDIwMAotCi0gICAgZHJ2X3ZpZGVvX2luaXQoKTogc2ltcGxpZnkgbG9naWMKLQotICAgIFNpbXBsaWZ5IG5lc3Rpbmcgb2YgZHJ2X3ZpZGVvX2luaXQoKSBhbmQgdXNlIGEgY29uc2lzdGVudCB3YXkgb2YKLSAgICBpbmRpY2F0aW5nIGZhaWx1cmUgLyBzdWNjZXNzLiBCZWZvcmUsIGl0IHRvb2sgbWUgc29tZSB0aW1lIHRvIHJlYWxpemUKLSAgICB3aGljaCBvZiB0aGUgcmV0dXJucyB3YXMgZHVlIHRvIGFuIGVycm9yIGNvbmRpdGlvbiBhbmQgd2hpY2ggb2YgdGhlbQotICAgIGluZGljYXRlZCBzdWNjZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgMTY5OWRhNjI5N2I4YzIyZGExNmNmODViM2M3OTE5MmYxYTZkNzBjYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIE1heSAxMyAyMTowMToxMyAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiByZWdyb3VwIElQIGh3IGluaXQgaW4gb25lIGZpbGUgcGVyIHNvYwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDI4YjAwMzI0YmVjZjM1NTIxMzRhZTFlMDg2NTA5ZGM5YzNkNmU5MzIKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ4OjM3IDIwMDkgKzAyMDAKLQotICAgIGRtMzU1IGV2bSBzdXBwb3J0Ci0KLSAgICBJbml0aWFsIFUtQm9vdCBzdXBwb3J0IGZvciB0aGUgRGFWaW5jaSBETTM1NSBFVk0uICBUaGlzIGlzIGEgYm9hcmQKLSAgICBmcm9tIFNwZWN0cnVtIERpZ2l0YWwuICBCb2FyZCBkb2NzIGluY2x1ZGUgc2NoZW1hdGljIGFuZCBmaXJtd2FyZQotICAgIGZvciBpdHMgbWljcm9jb250cm9sbGVyOgotCi0gICAgICBodHRwOi8vYzYwMDAuc3BlY3RydW1kaWdpdGFsLmNvbS9ldm1kbTM1NS9yZXZkLwotCi0gICAgTW9zdCBvZiB0aGUgRE0zNTUgY2hpcCBpcyBmdWxseSBkb2N1bWVudGVkIGJ5IFRJLCB0aGUgbW9zdCBub3RhYmxlCi0gICAgZXhjZXB0aW9uIGJlaW5nIHRoZSBNUEVHL0pQRUcgY29wcm9jZXNzb3IgKHByb2dyYW1tYWJsZSB1c2luZyBjb2RlY3MKLSAgICBhdmFpbGFibGUgYXQgbm8gY29zdCBmcm9tIFRJKSwgd2hpY2ggaXMgb21pdHRlZCBmcm9tIGl0cyBETTMzNSBzaWJsaW5nOgotCi0gICAgICBodHRwOi8vZm9jdXMudGkuY29tL2RvY3MvcHJvZC9mb2xkZXJzL3ByaW50L3RtczMyMGRtMzU1Lmh0bWwKLQotICAgIFRoaXMgdmVyc2lvbiBjYW4gYm9vdCBmcm9tIHRoZSBvbi1ib2FyZCBETTkwMDAgRXRoZXJuZXQgY2hpcCwgYWZ0ZXIKLSAgICBiZWluZyBsb2FkZWQgKGZyb20gTkFORCwgTU1DL1NELCBvciBVQVJUKS4JSW4gdGhlIG5lYXIgZnV0dXJlLCBOQU5ECi0gICAgYW5kIFVTQiBzdXBwb3J0IGNvdWxkIGJlIGFkZGVkIC4uLiBOQU5EIHN1cHBvcnQgaXMgYmVpbmcgaGVsZCBiYWNrCi0gICAgdW50aWwgdGhlIHN1cHBvcnQgZm9yIHRoZSA0LWJpdCBFQ0MgaGFyZHdhcmUgaXMgcmVhZHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotY29tbWl0IDEzNmNmOTJkYzllODRjOWExYmY1NjdmMWZlNzQxMDkyYmY3NjU0OTUKLUF1dGhvcjogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgotRGF0ZToJRnJpIE1heSAxNSAyMzo0ODozNyAyMDA5ICswMjAwCi0KLSAgICBPTUFQM0VWTTogU2V0IGRlZmF1bHQgYm9vdGZpbGUKLQotICAgIFRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gZG9lc24ndCBkZWZpbmUgZGVmYXVsdAotICAgIGJvb3RmaWxlOyBsZWFkaW5nIHRvIHRoaXMgd2FybmluZyBhdCBleGVjdXRpb246Ci0KLSAgICBPTUFQM19FVk0gIyBkaGNwCi0gICAgLi4uCi0gICAgLi4uCi0gICAgREhDUCBjbGllbnQgYm91bmQgdG8gYWRkcmVzcyAxOTIuMTY4LjEuMTEKLSAgICAqKiogV2FybmluZzogbm8gYm9vdCBmaWxlIG5hbWU7IHVzaW5nICdBQzE4QkUxNi5pbWcnCi0gICAgVEZUUCBmcm9tIHNlcnZlciAwLjAuMC4wOyBvdXIgSVAgYWRkcmVzcyBpcyAxOTIuMTY4LjEuMTE7Ci0gICAgc2VuZGluZyB0aHJvdWdoIGdhdGV3YXkgMTkyLjE2OC4xLjEKLSAgICBGaWxlbmFtZSAnQUMxOEJFMTYuaW1nJy4KLSAgICBMb2FkIGFkZHJlc3M6IDB4ODIwMDAwMDAKLSAgICBMb2FkaW5nOiAqCi0gICAgVEZUUCBlcnJvcjogJ0ZpbGUgbm90IGZvdW5kJyAoMSkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLQotY29tbWl0IDFhMDlkMDVhYmZjNmQ0ZDRmMWZjZTlmNmJkMDI3NWJkMWMwOGQ0ZjUKLUF1dGhvcjogcy1wYXVscmFqQHRpLmNvbSA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDg6MzYgMjAwOSArMDIwMAotCi0gICAgQVJNIERhVmluY2k6IE1pbm9yIFVwZGF0ZXMgdG8gYmFzZSBhZGRyZXNzZXMKLQotICAgIFBhdGNoIGFkZHMgYmFzZSBhZGRyZXNzZXMgZm9yIERhVmluY2kgRE0zNjUuIFVwZGF0ZWQgcGF0Y2hlcyBmb3IgRE0zNjUKLSAgICB3aWxsIGJlIHBvc3RlZCBzb29uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgZGUxOTNlOGUzNjlmNWYwMjllZDNiNmUyZmM2MDM0MTA5OGVlYTc2NgotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ4OjM2IDIwMDkgKzAyMDAKLQotICAgIFpPT00yIEFkZCBzdXBwb3J0IGZvciBkZWJ1ZyBib2FyZCBkZXRlY3Rpb24uCi0KLSAgICBUaGUgbG9naWNwZCB3ZWIgc2l0ZSBpcyBhIGdvb2Qgc291cmNlIGZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHRoaXMgYm9hcmQuCi0gICAgUGxlYXNlIHN0YXJ0IGxvb2tpbmcgaGVyZSBpZiB0aGUgYmVsb3cgbGlua3MgYXJlIGJyb2tlbi4KLSAgICBodHRwOi8vd3d3LmxvZ2ljcGQuY29tCi0KLSAgICBUaGlzIGlzIGEgcGRmIG9mIHRoZSBwcm9kdWN0Ci0gICAgaHR0cDovL3d3dy5sb2dpY3BkLmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzLzEwMTI2NTlBX1pvb21fT01BUDM0eC1JSV9NRFBfQnJpZWYucGRmCi0KLSAgICBUaGlzIGlzIGEgcGRmIG9mIHRoZSBwcm9kdWN0IHF1aWNrIHN0YXJ0IGd1aWRlLgotICAgIFRoZSBkZWJ1ZyBib2FyZCBpcyBkZXNjcmliZWQgaGVyZS4KLSAgICBodHRwOi8vc3VwcG9ydC5sb2dpY3BkLmNvbS9kb3dubG9hZHMvMTE2NS8KLQotICAgIFRoaXMgaXMgYSB3aWtpIHNob3dpbmcgdGhlIGRlYnVnIGJvYXJkIGluIHVzZQotICAgIGh0dHBzOi8vb21hcHpvb20ub3JnL2dmL3Byb2plY3Qvb21hcHpvb20vd2lraS8/cGFnZW5hbWU9R2V0dGluZ1N0YXJ0ZWRXaXRoWm9vbUlJX0FLQV9PTUFQMzRYSUlfTURQCi0KLSAgICBUaGUgem9vbTIgaGFzIGFuIGF1eGlsbGFyeSBib2FyZCB0aGF0IGNvbnRhaW5zIHRoZSBzZXJpYWwsIG5ldCwganRhZyBhbmQKLSAgICBiYXR0ZXJ5IHNpbXVsYXRvci4JVGhpcyBjaGFuZ2Ugc3VwcG9ydHMgYSBydW50aW1lIGNoZWNrIGlmIHRoZSBkZWJ1ZyBib2FyZCBpcwotICAgIGNvbm5lY3RlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDBjODcyZWNkMDFkNjc4MmFlOWQzN2I2ZWI3MjE0MDRhNGE0OGYzNTYKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJRnJpIE1heSAxNSAyMzo0ODozNiAyMDA5ICswMjAwCi0KLSAgICBPTUFQMyBQb3J0IGtlcm5lbCBvbWFwIGdwaW8gaW50ZXJmYWNlLgotCi0gICAgUG9ydCB2ZXJzaW9uIDIuNi4yNyBvZiB0aGUgbGludXgga2VybmVsJ3Mgb21hcCBncGlvIGludGVyZmFjZSB0byB1LWJvb3QuCi0gICAgVGhlIG9yaWduYWwgc291cmNlIGlzIGluIGxpbnV4L2FyY2gvYXJtL3BsYXQtb21hcC9ncGlvLmMKLQotICAgIFNlZSBkb2MvUkVBRE1FLm9tYXAzIGZvciBpbnN0cnVjdGlvbnMgb24gdXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgMzc2YWVlNzhkZDY2YWUwZGM0Y2U0OTZjYmU5M2VjYzgwYWFhZDQ4ZQotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ4OjM2IDIwMDkgKzAyMDAKLQotICAgIFpPT00yIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIFpvb20yCi0KLSAgICBab29tMiBpcyBhIG5ldyBib2FyZCBmcm9tIFRleGFzIEluc3RydW1lbnRzIGFuZCBMb2dpY1BECi0KLSAgICBUaGUgbG9naWNwZCB3ZWIgc2l0ZSBpcyBhIGdvb2Qgc291cmNlIGZvciBnZW5lcmFsIGluZm9ybWF0aW9uIG9uIHRoaXMgYm9hcmQuCi0gICAgUGxlYXNlIHN0YXJ0IGxvb2tpbmcgaGVyZSBpZiB0aGUgYmVsb3cgbGlua3MgYXJlIGJyb2tlbi4KLSAgICBodHRwOi8vd3d3LmxvZ2ljcGQuY29tCi0KLSAgICBUaGlzIGlzIGEgcGRmIG9mIHRoZSBwcm9kdWN0Ci0gICAgaHR0cDovL3d3dy5sb2dpY3BkLmNvbS9zaXRlcy9kZWZhdWx0L2ZpbGVzLzEwMTI2NTlBX1pvb21fT01BUDM0eC1JSV9NRFBfQnJpZWYucGRmCi0gICAgVGhpcyBpcyB0aGUgcHJvZHVjdCBkZXNjcmlwdGlvbiB3ZWIgcGFnZQotICAgIGh0dHA6Ly93d3cubG9naWNwZC5jb20vcHJvZHVjdHMvZGV2ZWxvcG1lbnQta2l0cy90ZXhhcy1pbnN0cnVtZW50cy16b29tJUUyJTg0JUEyLW9tYXAzNHgtaWktbWRwCi0KLSAgICBUaGlzIHBhdGNoIHByb3ZpZGVzIGEgem9vbTIgYmFzZSB0YXJnZXQgYnkgY29weWluZyB6b29tMSBhbmQgYnkgbWFraW5nIHNvbWUKLSAgICBvYnZpb3VzIGNoYW5nZXMuCi0KLSAgICBUbyBjb25maWd1cmUsIHJ1bgotICAgIG1ha2Ugb21hcDNfem9vbTJfY29uZmlnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA1MzkyNWFjZjFiNWMxYTFlNjIzMGNkYTI2OTc2NDBjZDA1YmQxMTA0Ci1BdXRob3I6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDg6MzMgMjAwOSArMDIwMAotCi0gICAgQVJNIERhVmluY2k6Q29uc29saWRhdGUgY29tbW9uIHUtYm9vdC5sZHMKLQotICAgIFRoZSB1LWJvb3QubGRzIGlzIGNvbW1vbiBmb3IgYWxsIERhVmluY2kgYm9hcmRzLiBUaGUgcGF0Y2ggcmVtb3ZlcwotICAgIG11bHRpcGxlIGluc3RhbmNlcyBhbmQgbW92ZXMgdGhlIHUtYm9vdC5sZHMgdG8gL2NwdS9hcm05MjZlanMvZGF2aW5jaQotICAgIGZvbGRlci4gVGhpcyBhZGRyZXNzZXMgb25lIG9mIHRoZSBjb21tZW50cyBpIHJlY2VpdmVkIHdoaWxlIHN1Ym1pdHRpbmcKLSAgICBwYXRjaGVzIGZvciBETTN4eAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuZGVlcCBQYXVscmFqIDxzLXBhdWxyYWpAdGkuY29tPgotCi1jb21taXQgNjhhNTMxZmQ0NjVmNWMwYjNkMzczZTAwMTBhZmVkMzJlODhkMzdjNAotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjUyIDIwMDkgKzAyMDAKLQotICAgIE9NQVAgQ29uc29saWRhdGUgY29tbW9uIHUtYm9vdC5sZHMgdG8gY3B1IGxheWVyLgotCi0gICAgVGhlIHUtYm9vdC5sZHMgZmlsZSBpcyBjb21tb24gZm9yIGFsbCBvbWFwIGJvYXJkcy4KLSAgICBNb3ZlIGEgY2xlYW5lZCB1cCB2ZXJzaW9uIHRvIHRoZSBjcHUgbGF5ZXIgYW5kIGFkZCBtYWtlZmlsZSBsb2dpYyB0byB1c2UgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA2NWE3NmQ0Zjk0N2ExOTNlNTdiYjhmODA5M2M0ODFmMjdlMDU5ZjhmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjE0IDIwMDkgKzAyMDAKLQotICAgIGFybS9kY2M6IGFkZCB4c2NhbGUgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDY2ZThmOWRhNjg3OWZlMzdmMzE1OWIzOTk3YmZmODc0ODQyZGM1MWQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDc6MTQgMjAwOSArMDIwMAotCi0gICAgYXJtL2RjYzogdXNlIHN0YXRpYyBzdXBwb3J0IHRvIGFsbG93IHRvIHVzZSBpdCBhdCBhbnl0aW1lCi0KLSAgICB0aGUgZGNjIGNhbiBiZSB1c2VkIGF0IHRoZSBzdGFydCBvZiB0aGUgY3B1Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzg5M2FhMWViNmY1MmMzOTU3ZWZjMzAxYjQzNmYxZmExMWU5MWEwMAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1heSAxNSAyMzo0NzoxMyAyMDA5ICswMjAwCi0KLSAgICBBUk06IFVwZGF0ZSBtYWNoLXR5cGVzCi0KLSAgICB1cGRhdGUgYWdhaW5zdCBsaW51eCB2Mi42LjI5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjkwNzc5ODkyNmVlOTMyZjQ1M2FjODUzOGU3YTZjMDVjMTg0MjhhNQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1heSAxNSAyMzo0NzoxMyAyMDA5ICswMjAwCi0KLSAgICBhcm05MjAvOTI2LzkyNjogcmVtb3ZlIG5vbiBuZWVkZWQgaGVhZGVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjY5ZGZlYTAxN2IwOWM1YTk5OWQzMDUzZDAwNTA1YzE5Nzg5YzM1MAotQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGF2aWQtYkBwYWNiZWxsLm5ldD4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDc6MTMgMjAwOSArMDIwMAotCi0gICAgZGF2aW5jaSBkbTY0NDZldm0gTkFORCB1cGRhdGUKLQotICAgIFRoaXMgdXBkYXRlcyB0aGUgb3B0aW9uYWwgKG5vbi1kZWZhdWx0ISkgTkFORCBzdXBwb3J0IGZvciB0aGUKLSAgICBEYVZpbmNpIERNNjQ0NiBFVk06Ci0KLSAgICAgLSBpbmNsdWRlIE1URCBwYXJ0aXRpb25pbmcsIGRlZmF1bHRpbmcgdG8gd2hhdCBMaW51eCB1c2VzCi0KLSAgICAgLSB1c2UgYSBmbGFzaC1iYXNlZCBCQlQsIHdoaWNoIGFtb25nIG90aGVyIHRoaW5ncyBzcGVlZHMgYm9vdHVwCi0KLSAgICBUaGlzIG1hdGNoZXMgY29kZSB0aGF0J3Mgbm93IHF1ZXVlZCBmb3IgbWFpbmxpbmUgTGludXgsIGFuZCBtaWdodAotICAgIGV2ZW4gbWVyZ2UgaW4gYW4gdXBjb21pbmcgMi42LjMwLXJjOyBhbmQgdGhlIE1USURTIGFyZSBzZXQgdXAgc28KLSAgICB0aGF0IHRoZSBVLUJvb3QgJG10ZHBhcnRzIGVudmlyb25tZW50IHZhcmlhYmxlIGNhbiBiZSBwYXNzZWQgYXMtaXMKLSAgICBvbiB0aGUga2VybmVsIGNvbW1hbmQgbGluZSBhcyBhIGNtZGxpbmVwYXJ0IG92ZXJyaWRlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLWNvbW1pdCA3YTRmNTExYjU5ZjA4ZjUxZGRlNGNlYWNiZDQ1ZjQ5YjhiZjJhNWNjCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZToJRnJpIE1heSAxNSAyMzo0NzoxMiAyMDA5ICswMjAwCi0KLSAgICBkYXZpbmNpOiBkaXNwbGF5IGNvcnJlY3QgY2xvY2sgaW5mbwotCi0gICAgTW92ZSB0aGUgY2xvY2stcmF0ZSBkdW1waW5nIGNvZGUgaW50byB0aGUgY3B1Ly4uLi9kYXZpbmNpIGFyZWEKLSAgICB3aGVyZSBpdCBzaG91bGQgaGF2ZSBiZWVuLCBlbmFibGVkIGJ5IENPTkZJR19ESVNQTEFZX0NQVUlORk8sCi0gICAgdXBkYXRpbmcgdGhlIGZvcm1hdCBhbmQgc2hvd2luZyB0aGUgRFNQIGNsb2NrICh3aGVyZSByZWxldmFudCkuCi0KLSAgICBTd2l0Y2ggYm9hcmRzIHRvIHVzZSB0aGUgY3B1aW5mbygpIGhvb2sgZm9yIHRoaXMgc3R1ZmYuCi0KLSAgICBSZW1vdmUgYSBmZXcgbm93LW9ic29sZXRlIFBMTCAjZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgZGFlYTkyODgyOTA5OGNhZTNjOWVjNmI4MDFlNTJiYTYxNjcyNTAzNAotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjEyIDIwMDkgKzAyMDAKLQotICAgIFpPT00xIFJlbW92ZSBtb3JlIGxlZ2FjeSBOQU5EIGRlZmluZXMuCi0KLSAgICBUaGVzZSBsZWdhY3kgTkFORCBkZWZpbmVzIGFyZSBubyBsb25nZXIgbmVlZGVkIGJ5IHRoaXMgdGFyZ2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgNjVmZDIxYzgwZmNhY2EyYmJmZTNhYjA2YWI2YWM2ODIwNzQwODA3OAotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjEyIDIwMDkgKzAyMDAKLQotICAgIExFRCBBZGQgZG9jdW1lbnRhdGlvbiBkZXNjcmliaW5nIHRoZSBzdGF0dXNfbGVkIGFuZCBjb2xvdXIgbGVkIEFQSS4KLQotICAgIFRoaXMgZG9jdW1lbnQgZGVzY3JpYmVzIHRoZSB1LWJvb3Qgc3RhdHVzIExFRCBBUEkuCi0gICAgVGhpcyBhbGxvd3MgY29tbW9uIHUtYm9vdCBjb21tYW5kcyB0byB1c2UgYSBib2FyZCdzIGxlZHMgdG8KLSAgICBwcm92aWRlIHN0YXR1cyBmb3IgYWN0aXZpdGllcyBsaWtlIGJvb3RpbmcgYW5kIGRvd25sb2FkaW5nIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgN2NkZjgwNGYzNDM3OGI5MTBiNGM0ZWRkMmRhYzdlM2NhNjFjMDgyNQotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ3OjEyIDIwMDkgKzAyMDAKLQotICAgIEFSTSBBZGQgYmx1ZSBjb2xvdXIgTEVEIHRvIHN0YXR1c19sZWQuCi0KLSAgICBUaGVyZSBpcyBleGl0aW5nIHN1cHBvcnQgZm9yIHJlZCx5ZWxsb3csZ3JlZW4gYnV0IG5vIGJsdWUuCi0gICAgVGhlIG1haW4gTEVEIG9uIHRoZSB6b29tMiBpcyBhIGJsdWUgTEVELgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgYjU0Mzg0ZTNiYTZiNTUzNTc1MWYzMTdmY2QzOTQwYTUzZWVkMGQzYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1heSAxNSAyMzo0NzowMiAyMDA5ICswMjAwCi0KLSAgICBhcm06IHRpbWVyIGFuZCBpbnRlcnJ1cHQgaW5pdCByZXdvcmsKLQotICAgIGFjdHVhbGx5IHRoZSB0aW1lciBpbml0IHVzZSB0aGUgaW50ZXJydXB0X2luaXQgYXMgaW5pdCBjYWxsYmFjawotICAgIHdoaWNoIG1ha2UgdGhlIGludGVycnVwdCBhbmQgdGltZXIgaW1wbGVtZW50YXRpb24gZGlmZmljdWx0IHRvIGZvbGxvdwotCi0gICAgc28gbm93IHJlbmFtZSBpdCBhcyBpbnQgdGltZXJfaW5pdCh2b2lkKSBhbmQgdXNlIGludGVycnVwdF9pbml0IGZvciBpbnRlcnJ1cHQKLQotICAgIGJ0dyBhbHNvIHJlbWFuZSB0aGUgY29ycmVzcG9uZGluZyBmaWxlIHRvIHRoZSBmdW5jdGlvbm5hbGl0eSBpbXBsZW1lbnRlZAotCi0gICAgYXMgaXhwIGFyY2ggaW1wbGVtZW50IHR3byB0aW1lciAtIG9uZSBiYXNlZCBvbiBpbnRlcnJ1cHQgLSBzbyBhbGwgdGhlIHRpbWVyCi0gICAgcmVsYXRlZCBjb2RlIGlzIG1vdmVkIHRvIHRpbWVyLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA1YjRiZWJlMWQyMGM0ZjJiNzBkNDhiMDZhZWQxMDE2Nzg1ZWZjYzI1Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ1OjIyIDIwMDkgKzAyMDAKLQotICAgIE9NQVAzOiBSZW9yZ2FuaXplIE1ha2VmaWxlIHN0eWxlCi0KLSAgICBSZWZvcm1hdCBDT0JKUyBoYW5kbGluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IGIxOTY2OTgyNzE4MzQ3ZjY3MzE3YjNmYjM1NjQzOTc0M2NhNjhhMzcKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDU6MjIgMjAwOSArMDIwMAotCi0gICAgT01BUDM6IFJlbW92ZSBkdWJsaWNhdGVkIGludGVycnVwdCBjb2RlCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlZCBpbnRlcnJ1cHQgY29kZS4gT3JpZ2luYWwsIGlkZW50aWNhbCBjb2RlIGNhbiBiZSBmb3VuZAotICAgIGluIGxpYl9hcm0vaW50ZXJydXB0cy5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCBhYzcyNjBhNDE5MDMxNWViYTRhNmU1MjZjNzY0ZjZjYWQwYmJmOGM1Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ1OjIyIDIwMDkgKzAyMDAKLQotICAgIGF0OTFybTkyMDA6IG1vdmUgcmVzZXQgY29kZSB0byByZXNldC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMmM3NWM3OGQ5NDU3NGVlOTk2ZGIyYWE5YjUxMTI1ODUxOTQ3MWRkNgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1heSAxNSAyMzo0NToyMiAyMDA5ICswMjAwCi0KLSAgICBpeHAvaW50ZXJydXB0czogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDhmYzNiYjRiMDYwMzUxNmFkNjQxZTJkZTI1MmE0MDBiODVmZDg2OWIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDU6MjAgMjAwOSArMDIwMAotCi0gICAgYXJtOiBjbGVhbnVwIHJlbWFpbmluZyBDT05GSUdfSU5JVF9DUklUSUNBTAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGMyMGUyOGY0OWFhZjM4YzdkZWRlNDZkOGY4ZmU4MjM0ZmU5MDgyMmMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDU6MTIgMjAwOSArMDIwMAotCi0gICAgYXJtOTQ2ZXM6IHJlbW92ZSBub24gdXNlZCB0aW1lcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGYxZDk0NGUzMGViOGZmODkwODBmYTAzZmI5OGQ4ZmI1YzgyMzg4ZDIKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ0OjA5IDIwMDkgKzAyMDAKLQotICAgIGRhdmluY2k6IGFkZCBiYXNpYyBkbTM1NS9kbTM1MC9kbTMzNSBzdXBwb3J0Ci0KLSAgICBBZGQgc29tZSBiYXNpYyBkZWNsYXJhdGlvbnMgZm9yIERhVmluY2kgRE0zNTUvRE0zNTAvRE0zMzUgc3VwcG9ydCwKLSAgICBrZXllZCBvbiBDT05GSUdfU09DX0RNMzU1LgkoRE0zNVggaXNuJ3QgcXVpdGUgcmlnaHQgYmVjYXVzZSB0aGUKLSAgICBETTM1NyBpcyB2ZXJ5IGRpZmZlcmVudDsgd2hpbGUgdGhlIERNMzU1IGlzIGxpa2UgYSBETTM1NSB3aXRob3V0Ci0gICAgdGhlIE1QRUcvSlBFRyBjb3Byb2Nlc3NvcikuCi0KLSAgICBUaGVzZSBoYXZlIGRpZmZlcmVudCBwZXJpcGhlcmFscyB0aGFuIHRoZSBETTY0NDYsIGFuZCBzb21lIG9mCi0gICAgdGhlIHBlcmlwaGVyYWxzIGFyZSBhdCBkaWZmZXJlbnQgYWRkcmVzc2VzLiAgTm90YWJseSBmb3IgVS1Cb290LAotICAgIHRoZXJlJ3Mgbm8gRU1BQywgYW5kIHRoZSBOQU5EIGNvbnRyb2xsZXIgYWRkcmVzcyBpcyBkaWZmZXJlbnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgYmQzNmZkYzE0NjY1NGY5ZGU0ZTJhZDM0NjEyNmU2YmQyOTkwZmIxOQotQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6CUZyaSBNYXkgMTUgMjM6NDQ6MDkgMjAwOSArMDIwMAotCi0gICAgZGF2aW5jaTogZml4IGRtNjQ0eCBidWdsZXRzCi0KLSAgICBGaXggdHdvIGJ1Z2xldHMgaW4gdGhlIGRtNjQ0eCBzdXBwb3J0OiAgZG9uJ3Qgc2V0IHR3byBtdXN0LWJlLXplcm8KLSAgICBiaXRzIGluIHRoZSBVQVJUIG1hbmFnZW1lbnQgcmVnaXN0ZXI7IGFuZCBvbmx5IGluY2x1ZGUgdGhlIEkyQyBob29rcwotICAgIGlmIHRoZSBJMkMgZHJpdmVyIGlzIGJlaW5nIGluY2x1ZGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLWNvbW1pdCBmNzkwNDM2ODFmZjQ0YmFlNDM1YzA2ZjgzMGU1MWUxNTQ2ZGI3ZTE5Ci1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZToJRnJpIE1heSAxNSAyMzo0NDowOCAyMDA5ICswMjAwCi0KLSAgICBkYXZpbmNpOiBzcGxpdCBvdXQgc29tZSBkbTY0NHgtc3BlY2lmaWMgYml0cyBmcm9tIHBzYwotCi0gICAgU3BsaXQgb3V0IERhVmluY2kgRE02NDQ2LXNwZWNpZmljIGJpdHMgZnJvbSBtb3JlIGdlbmVyaWMgYml0czoKLQotICAgICAtIEFkZCBhIENPTkZJR19TT0NfRE02NDRYLiAgQWxsIGN1cnJlbnQgYm9hcmRzIHVzZSBETTY0NDYgY2hpcHM7Ci0gICAgICAgRE02NDQzIGFuZCBETTY0NDEgY2hpcHMgZGlmZmVyIGluIGF2YWlsYWJsZSBwZXJpcGhlcmFscy4KLQotICAgICAtIE1vdmUgbW9zdCBETTY0NFgtc3BlY2lmaWMgYml0cyBmcm9tIHBzYy5jIHRvIGEgbmV3IGRtNjQ0eC5jIGZpbGUsCi0gICAgICAgd2hpY2ggaXMgY29uZGl0aW9uYWxseSBidWlsdC4gIEl0IHByb3ZpZGVzIGRldmljZS1zcGVjaWZpYyBzZXR1cC4KLQotICAgIFBsdXMgbWlub3IgY29kaW5nIHN0eWxlIGFuZCBjb21tZW50IHVwZGF0ZXMgd2l0aCByZXNwZWN0IHRvIHRoZSBQU0MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotY29tbWl0IDQ4ZWY1NzI5NTU1ZjQxZjUxNjE4YjZhMzAxNmFjNWM1M2M3Yzc1ZGMKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ0OjA4IDIwMDkgKzAyMDAKLQotICAgIGRhdmluY2k6IGNwdS1zcGVjaWZpYyBidWlsZCB1c2VzIGNvbmRpdGlvbmFsIG1ha2Ugc3ludGF4Ci0KLSAgICBVcGRhdGUgY3B1L2FybTkyNmVqcy9kYXZpbmNpL01ha2VmaWxlIHRvIHVzZSBDT0JKLXkgdHlwZSBzeW50YXguCi0gICAgQWRkIHRoZSBmaXJzdCBjb25kaXRpb25hbDogZm9yIEVNQUMgZHJpdmVyIHN1cHBvcnQuICBOb3QgYWxsCi0gICAgY2hpcHMgaGF2ZSBhbiBFTUFDOyBhbmQgYm9hcmRzIG1pZ2h0IG5vdCB1c2UgaXQsIGFueXdheS4KLQotICAgIFRoaXMgZG9lc24ndCB0b3VjaCBQSFkgY29uZmlndXJhdGlvbjsgdGhhdCBzaG91bGQgZXZlbnR1YWxseQotICAgIGJlY29tZSBjb25kaXRpb25hbCB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotY29tbWl0IDdiNzgwOGFlNmRhY2U1OTI4N2Y1NjVlOTMyM2NkYTdiMDk4YTU2MTIKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjQ0OjA2IDIwMDkgKzAyMDAKLQotICAgIGRhdmluY2k6IG1vdmUgcHNjIHN1cHBvcnQgYm9hcmQtLT5jcHUKLQotICAgIE1vdmUgRGFWaW5jaSBQU0Mgc3VwcG9ydCBmcm9tIGJvYXJkLyogdG8gY3B1Lyogd2hlcmUgaXQgYmVsb25ncy4KLSAgICBUaGUgUFNDIG1vZHVsZSBtYW5hZ2VzIGNsb2NrcyBhbmQgcmVzZXRzIGZvciBhbGwgRGFWaW5jaS1mYW1pbHkKLSAgICBTb0NzLCBhbmQgaXNuJ3QgYXQgYWxsIGJvYXJkLXNwZWNpZmljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLWNvbW1pdCA4NGY3NDExY2I5MDFiOGRmMjM5MWNmN2U5NjdhZDA3MzdmNjE5NGFhCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgotRGF0ZToJVHVlIEFwciAxNCAwODo1Mjo1OCAyMDA5IC0wNzAwCi0KLSAgICBEYVZpbmNpIG5vdyByZXNwZWN0cyBTS0lQX0xPV0xFVkVMX0lOSVQKLQotICAgIERvbid0IG5lZWRsZXNzbHkgaW5jbHVkZSBsb3dsZXZlbCBpbml0IGNvZGU7IHRoYXQncyBvbmx5IHJlYWxseQotICAgIG5lZWRlZCB3aXRoIGJvb3QtZnJvbSBOT1IgKG5vdCBib290LWZyb20tTkFORCkuICBUaGUgMm5kIHN0YWdlCi0gICAgbG9hZGVyIChVQkwpIGhhbmRsZXMgdGhhdCBiZWZvcmUgaXQgbG9hZHMgVS1Cb290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0KLWNvbW1pdCA2NDFlMDkyNWU0YmY3YWRmOGUyZTA0ZTNhZDgxYjg0MGZkNzFjYWRkCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZToJU3VuIEFwciAxMiAyMjo0OToyNiAyMDA5IC0wNzAwCi0KLSAgICBEYVZpbmNpIEV0aGVybmV0IGNsZWFudXAKLQotICAgIENoaXBzIHdpdGhvdXQgdGhlIEVNQUMgY29udHJvbGxlciB3b24ndCBuZWVkIHRoZSB1dGlsaXRpZXMKLSAgICBpdCB1c2VzIHRvIHJlYWQgYW4gRXRoZXJuZXQgYWRkcmVzcyBmcm9tIEVFUFJPTTsgc28gZG9uJ3QKLSAgICBpbmNsdWRlIHRoZW0gbmVlZGxlc3NseS4KLQotICAgIFVzZSBpc192YWxpZF9ldGhlcigpIHRvIHZhbGlkYXRlIHRoZSBhZGRyZXNzIGZyb20gRUVQUk9NLgotICAgIEFsbC16ZXJvIGFkZHJlc3NlcyBhcmVuJ3QgdGhlIG9ubHkgaW52YWxpZCBhZGRyZXNzZXMuCi0gICAgQSBmdWxseSBlcmFzZWQgRUVQUk9NIHJldHVybnMgYWxsLW9uZXMsIGFsc28gaW52YWxpZC4uLgotCi0gICAgU3dpdGNoIHRob3NlIEV0aGVybmV0IHV0aWxpdGllcyB0byB1c2UgIiVwTSIgZm9yIHByaW50aW5nCi0gICAgTUFDIGFkZHJlc3NlczsgYW5kIG5vdCBzYXkgUk9NIHdoZW4gdGhleSBtZWFuIEVFUFJPTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYzc5MGIwNGQyMzAzNjNkMDM5MzlkYzAwOGJjYzgwZjNiYTRkZTFhZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTWF5IDExIDE1OjUwOjEyIDIwMDkgKzAyMDAKLQotICAgIGxpYl9hcmNoL2JvYXJkLmM6IE1vdmUgbWFsbG9jIGluaXRpYWxpemF0aW9uIGJlZm9yZSBmbGFzaF9pbml0KCkKLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIG1hbGxvYyBpbml0aWFsaXphdGlvbiBiZWZvcmUgY2FsbGluZyBmbGFzaF9pbml0KCkuCi0gICAgVXBjb21pbmcgY2hhbmdlcyB0byB0aGUgTk9SIEZMQVNIIGNvbW1vbiBDRkkgZHJpdmVyIHdpdGggb3B0aW9uYWwKLSAgICBNVEQgaW5mcmFzdHJ1Y3R1cmUgYW5kIE1URCBjb25jYXRlbmF0aW9uIHN1cHBvcnQgd2lsbCBjYWxsIG1hbGxvYygpLgotICAgIEFuZCBub3RoaW5nIHJlYWxseSBzcGVha3MgYWdhaW5zdCBlbmFibGluZyBtYWxsb2MganVzdCBhIGxpdHRsZSBlYXJsaWVyCi0gICAgaW4gdGhlIGJvb3Qgc3RhZ2UuIFNvbWUgYXJjaGl0ZWN0dXJlcyBhbHJlYWR5IGVuYWJsZSBtYWxsb2MgYmVmb3JlCi0gICAgY2FsbGluZyBmbGFzaF9pbml0KCkgc28gdGhleSBkb24ndCBuZWVkIGFueSBjaGFuZ2VzIGhlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ2M6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDYzogU2NvdHQgTWNOdXR0IDxzbWNudXR0QHBzeWVudC5jb20+Ci0gICAgQ2M6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLSAgICBDYzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIENjOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci0gICAgQ2M6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQ2M6IEpvaG4gUmlnYnkgPGpjcmlnYnlAZ21haWwuY29tPgotCi1jb21taXQgZDg3MzEzM2YyYmE5YmQ2MTNkNWY2NTUyYzMxY2M3MGZiMTNmMTVkMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTWF5IDExIDEzOjQ2OjE0IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIFNlcXVvaWEgUkFNLWJvb3RpbmcgdGFyZ2V0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYW5vdGhlciBidWlsZCB0YXJnZXQgZm9yIHRoZSBBTUNDIFNlcXVvaWEgUFBDNDQwRVB4Ci0gICAgZXZhbCBib2FyZC4gVGhpcyBSQU0tYm9vdGluZyB2ZXJzaW9uIGlzIHRhcmdldGVkIGZvciBib2FyZHMgd2l0aG91dAotICAgIE5PUiBGTEFTSCAoTkFORCBib290aW5nKSB3aGljaCBuZWVkIGEgcG9zc2liaWxpdHkgdG8gaW5pdGlhbGx5Ci0gICAgcHJvZ3JhbSB0aGVpciBOQU5EIEZMQVNILiBVc2luZyBhIEpUQUcgZGVidWdnZXIgKGUuZy4gQkRJMjAwMC8zMDAwKQotICAgIGNvbmZpZ3VyZWQgdG8gc2V0dXAgdGhlIFNEUkFNLCB0aGlzIGRlYnVnZ2VyIGNhbiBsb2FkIHRoaXMgUkFNLQotICAgIGJvb3RpbmcgaW1hZ2UgdG8gdGhlIHRhcmdldCBhZGRyZXNzIGluIFNEUkFNIChpbiB0aGlzIGNhc2UgMHgxMDAwMDAwKQotICAgIGFuZCBzdGFydCBpdCB0aGVyZS4gVGhlbiBVLUJvb3QncyBzdGFuZGFyZCBOQU5EIGNvbW1hbmRzIGNhbiBiZQotICAgIHVzZWQgdG8gcHJvZ3JhbSB0aGUgTkFORCBGTEFTSCAoZS5nLiAibmFuZCB3cml0ZSAuLi4iKS4KLQotICAgIEhlcmUgdGhlIGNvbW1hbmRzIHRvIGxvYWQgYW5kIHN0YXJ0IHRoaXMgaW1hZ2UgZnJvbSB0aGUgQkRJMjAwMDoKLQotICAgIDQ0MEVQWD5yZXNldCBoYWx0Ci0gICAgNDQwRVBYPmxvYWQgMHgxMDAwMDAwIC90ZnRwYm9vdC9zZXF1b2lhL3UtYm9vdC5iaW4KLSAgICA0NDBFUFg+Z28gMHgxMDAwMDAwCi0KLSAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoaXMgaW1hZ2UgYXV0b21hdGljYWxseSBzY2FucyBmb3IgYW4gYWxyZWFkeQotICAgIGluaXRpYWxpemVkIFNEUkFNIFRMQiAoZGV0ZWN0ZWQgYnkgRVBOPTApLiBUaGlzIFRMQiB3aWxsIG5vdCBiZQotICAgIGNsZWFyZWQuIFRoaXMgVExCIGRvZXNuJ3QgbmVlZCB0byBiZSBUTEIgIzAsIHRoaXMgUkFNLWJvb3RpbmcKLSAgICB2ZXJzaW9uIHdpbGwgZGV0ZWN0IGl0IGFuZCBwcmVzZXJ2ZSBpdC4gU28gYm9vdGluZyB2aWEgQkRJMjAwMAotICAgIHdpbGwgd29yayBhbmQgYm9vdGluZyB3aXRoIGEgY29tcGxldGUgZGlmZmVyZW50IFRMQiBpbml0IHZpYQotICAgIFUtQm9vdCB3b3JrcyBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODM3ZGIzZDg3ZjRiZmU5MjYxNjI5ZmI0YTFiYjQzMzUwNmEzMDU2YQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTWF5IDYgMDg6NDE6NDUgMjAwOSAtMDQwMAotCi0gICAgdG9vbHMvZW52Y3JjOiBhZGQgLS1iaW5hcnkgb3B0aW9uIHRvIGV4cG9ydCBlbWJlZGRlZCBlbnYKLQotICAgIFRoZSAtLWJpbmFyeSBvcHRpb24gdG8gZW52Y3JjIGNhbiBiZSB1c2VkIHRvIGV4cG9ydCB0aGUgZW1iZWRkZWQgZW52IGFzIGEKLSAgICBiaW5hcnkgYmxvYiBzbyB0aGF0IGl0IGNhbiBiZSBtYW5pcHVsYXRlZC9leGFtaW5lZC93aGF0ZXZlciBleHRlcm5hbGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMThjYzdhZmQ5YTE1M2E2Njg1NGFmODYyZDE0YmEwMWM1NDk2Y2YwNwotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJVHVlIEFwciAyOCAxNjo1MDo1MyAyMDA5IC0wNzAwCi0KLSAgICBFbmFibGUgQ09ORklHX05FVF9NVUxUSSBvbiBhbGwgcmVtYWluaW5nIFBQQzR4eCBib2FyZHMKLQotICAgIEFsbCBpbi10cmVlIFBQQzR4eCBib2FyZHMgbm93IHVzZSBDT05GSUdfTkVUX01VTFRJCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDcwYmU2YzJkNDAwNzZmMTQwNjJiODkyMTUyNjQ5ZjlhNjI4MzJmYzkKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglXZWQgQXByIDI5IDA5OjUxOjAxIDIwMDkgKzAyMDAKLQotICAgIDR4eDogQWRkIHN1cHBvcnQgZm9yIERQNDA1IGhhcmR3YXJlIHZhcmlhbnRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRlNDdhMzRkNGRlMWQwMDdhODk1MWVmZDA3MjI4MzUxNmQ1ODBmZmEKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglXZWQgQXByIDI5IDA5OjUxOjAwIDIwMDkgKzAyMDAKLQotICAgIDR4eDogUmVtb3ZlIGJpbmFyeSBjcGxkIGJpdHN0cmVhbSBmcm9tIERQNDA1IGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIGNwbGQgYmluYXJ5IGJpdHN0cmVhbSB0aGF0IGlzCi0gICAgdXNlZCBieSBlc2QncyBjcGxkIGNvbW1hbmQgb24gRFA0MDUgYm9hcmRzLgotCi0gICAgQmVjYXVzZSB1LWJvb3Qgd2l0aCBhbiBleHRlcm5hbCBjcGxkIGJpdHN0cmVhbSBtYXkgbm90Ci0gICAgdGFrZSBtb3JlIHNwYWNlIGluIGZsYXNoIHRoYW4gYmVmb3JlIHRoZSB1LWJvb3QgYmluYXJ5IGlzCi0gICAgc2hyaW5rZWQgYSBsaXR0bGUgYml0LiBTb21lIHVudXNlZCBmZWF0dWVzIGhhdmUgYmVlbgotICAgIHJlbW92ZWQgdGhlcmVmb3JlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3MDBkNTUzZmQzYWZlODA0MDg2ZGU4ZjczZDk1MTUzMzE1ZWIwYzMyCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIEFwciAyOSAwOTo1MDo1OSAyMDA5ICswMjAwCi0KLSAgICA0eHg6IFJlbW92ZSBiaW5hcnkgY3BsZCBiaXRzdHJlYW0gZnJvbSBWT000MDUgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY3BsZCBiaW5hcnkgYml0c3RyZWFtIHRoYXQgaXMKLSAgICB1c2VkIGJ5IGVzZCdzIGNwbGQgY29tbWFuZCBvbiBWT000MDUgYm9hcmRzLgotCi0gICAgQmVjYXVzZSB1LWJvb3Qgd2l0aCBhbiBleHRlcm5hbCBjcGxkIGJpdHN0cmVhbSBtYXkgbm90Ci0gICAgdGFrZSBtb3JlIHNwYWNlIGluIGZsYXNoIHRoYW4gYmVmb3JlIHRoZSB1LWJvb3QgYmluYXJ5IGlzCi0gICAgc2hyaW5rZWQgYSBsaXR0bGUgYml0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwYmIxMDYzMDM2NGM0OGQ5ODU3Y2JmNTM1M2RhNjA5ZmM0ZGQ2NzUxCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIEFwciAyOSAwOTo1MDo1OCAyMDA5ICswMjAwCi0KLSAgICA0eHg6IFJlbW92ZSBiaW5hcnkgY3BsZCBiaXRzdHJlYW0gZnJvbSBQTUM0MDUgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY3BsZCBiaW5hcnkgYml0c3RyZWFtIHRoYXQgaXMKLSAgICB1c2VkIGJ5IGVzZCdzIGNwbGQgY29tbWFuZCBvbiBQTUM0MDUgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3Y2M2MzVmYjM1ZjViOTRlMzA0ZmEyMjQzZDU2NzU4ZjU3ZjY0MTZiCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIEFwciAyOSAwOTo1MDo1NyAyMDA5ICswMjAwCi0KLSAgICA0eHg6IFJlbW92ZSBiaW5hcnkgY3BsZCBiaXRzdHJlYW0gZnJvbSBDTVM3MDAgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgY3BsZCBiaW5hcnkgYml0c3RyZWFtIHRoYXQgaXMKLSAgICB1c2VkIGJ5IGVzZCdzIGNwbGQgY29tbWFuZCBvbiBDTVM3MDAgYm9hcmRzLgotCi0gICAgQmVjYXVzZSB1LWJvb3Qgd2l0aCBhbiBleHRlcm5hbCBjcGxkIGJpdHN0cmVhbSBtYXkgbm90Ci0gICAgdGFrZSBtb3JlIHNwYWNlIGluIGZsYXNoIHRoYW4gYmVmb3JlIHRoZSB1LWJvb3QgYmluYXJ5IGlzCi0gICAgc2hyaW5rZWQgYSBsaXR0bGUgYml0LiBTb21lIHVudXNlZCBmZWF0dWVzIGhhdmUgYmVlbgotICAgIHJlbW92ZWQgdGhlcmVmb3JlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjMWIyZjc5Nzg4ZGVlYzc1NzczYjFkOTQ0ZDhhYWY0YTZkNWJhZjllCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIEFwciAyOSAwOTo1MDo1NiAyMDA5ICswMjAwCi0KLSAgICBlc2QvY29tbW9uOiBleHRlbmQgY3BsZCBjb21tYW5kIHdpdGggYWRkcmVzcyBwYXJhbWV0ZXIKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBhbiBhZGRyZXNzIHBhcmFtZXRlciB0byBlc2QncwotICAgIGNwbGQgY29tbWFuZC4gVGhpcyBpcyBpbiBwcmVwYXJhdGlvbiB0byByZW1vdmUgY29tcGlsZWQtaW4KLSAgICBiaW5hcnkgY3BsZCAoeHN2ZikgYml0c3RyZWFtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTE2NmI3NzYzNTBkMTY0NjBjNzMzMGJmYjBhNTAxNTRlYTBhMTkwMwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU2F0IEFwciAxOCAyMjozNDowNiAyMDA5IC0wNTAwCi0KLSAgICBjbWRfaTJjOiBGaXggaTJjIGhlbHAgY29tbWFuZCBvdXRwdXQgd2hlbiBDT05GSUdfSTJDX01VWAotCi0gICAgV2hlbiBDT05GSUdfSTJDX01VWCB3YXMgZGVmaW5lZCB0aGUgb3V0cHV0IG9mICdoZWxwIGkyYycgd2FzIG5vdAotICAgIGNvcnJlY3QsIGVnOgotCi0gICAgPT4gaGVscCBpMmMKLSAgICBpMmMgYnVzIFttdXh0eXBlOm11eGFkZHI6bXV4Y2hhbm5lbF0gLSBhZGQgYSBuZXcgYnVzIHJlYWNoZWQgb3ZlciBtdXhlcy4KLSAgICBzcGVlZCBbc3BlZWRdIC0gc2hvdyBvciBzZXQgSTJDIGJ1cyBzcGVlZAotICAgIGkyYyBkZXYgW2Rldl0gLSBzaG93IG9yIHNldCBjdXJyZW50IEkyQyBidXMKLSAgICAuLi4KLQotICAgIEl0IGhhcyBiZWVuIGNoYW5nZWQgdG86Ci0gICAgaTJjIHNwZWVkIFtzcGVlZF0gLSBzaG93IG9yIHNldCBJMkMgYnVzIHNwZWVkCi0gICAgaTJjIGJ1cyBbbXV4dHlwZTptdXhhZGRyOm11eGNoYW5uZWxdIC0gYWRkIGEgbmV3IGJ1cyByZWFjaGVkIG92ZXIgbXV4ZXMKLSAgICBpMmMgZGV2IFtkZXZdIC0gc2hvdyBvciBzZXQgY3VycmVudCBJMkMgYnVzCi0gICAgLi4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgMGE0NWE2MzU3YjAyZTVjZTViZjg5OWE2MGRiMDlkZWY2YTEyOWZlZQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU2F0IEFwciAxOCAyMjozNDowNSAyMDA5IC0wNTAwCi0KLSAgICBjbWRfaTJjOiBDbGVhbiB1cCB0cml2aWFsIGhlbHBlciBmdW5jdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlOTZhZDVkM2FiYTQyZjhmZmU5OWY3Y2M1ZWMxYmI5ZjIxODEwMDM1Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglTYXQgQXByIDE4IDIyOjM0OjA0IDIwMDkgLTA1MDAKLQotICAgIGNtZF9pMmM6IENsZWFuIHVwIGkyYyBjb21tYW5kIGFyZ3VtZW50IHBhcnNpbmcKLQotICAgIGFyZ2MgYW5kIGFyZ3Ygc2hvdWxkIG9ubHkgYmUgbW9kaWZpZWQgb25jZSBpbnN0ZWFkIG9mIG9uY2UgZm9yCi0gICAgZXZlcnkgaTJjIHN1Yi1jb21tYW5kCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgMGY4OWM1NGJlOTI3NzNiMjNkNjZhYzQwMWJhNmFjYjYxNDQxMDBjMwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU2F0IEFwciAxOCAyMjozNDowMyAyMDA5IC0wNTAwCi0KLSAgICBpMmM6IFVwZGF0ZSByZWZlcmVuY2VzIHRvIGluZGl2aWR1YWwgaTJjIGNvbW1hbmRzCi0KLSAgICBUaGUgaW5kaXZpZHVhbCBpMmMgY29tbWFuZHMgaW1kLCBpbW0sIGlubSwgaW13LCBpY3JjMzIsIGlwcm9iZSwgaWxvb3AsCi0gICAgYW5kIGlzZHJhbSBhcmUgbm8gbG9uZ2VyIGF2YWlsYWJsZSBzbyBhbGwgcmVmZXJlbmNlcyB0byB0aGVtIGhhdmUgYmVlbgotICAgIHVwZGF0ZWQgdG8gdGhlIG5ldyBmb3JtIG9mICJpMmMgPGNtZD4iLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGQ0OGViNTEzMWQyODdmNTJiYjg1YjRjNThjODY4MGEyZThlM2I2NDEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVNhdCBBcHIgMTggMjI6MzQ6MDIgMjAwOSAtMDUwMAotCi0gICAgaTJjOiBSZW1vdmUgZGVwcmVjYXRlZCBpbmRpdmlkdWFsIGkyYyBjb21tYW5kcwotCi0gICAgVGhlIGZvbGxvd2luZyBpbmRpdmlkdWFsIEkyQyBjb21tYW5kcyBoYXZlIGJlZW4gcmVtb3ZlZDogaW1kLCBpbW0sIGlubSwKLSAgICBpbXcsIGljcmMzMiwgaXByb2JlLCBpbG9vcCwgaXNkcmFtLgotCi0gICAgVGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGluZGl2aWR1YWwgY29tbWFuZHMgaXMgc3RpbGwgYXZhaWxhYmxlIHZpYQotICAgIHRoZSAnaTJjJyBjb21tYW5kLgotCi0gICAgVGhpcyBjaGFuZ2Ugb25seSBoYXMgYW4gaW1wYWN0IG9uIHRob3NlIGJvYXJkcyB3aGljaCBkaWQgbm90IGhhdmUKLSAgICBDT05GSUdfSTJDX0NNRF9UUkVFIGRlZmluZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNjU1YjM0YTc4YWRmNjBlZjI2MDk4MTY4ODgzNzkwNDIwODg4M2FlOQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJU2F0IEFwciAxOCAyMjozNDowMSAyMDA5IC0wNTAwCi0KLSAgICBpMmM6IENyZWF0ZSBjb21tb24gZGVmYXVsdCBpMmNfW3NldHxnZXRdX2J1c19zcGVlZCgpIGZ1bmN0aW9ucwotCi0gICAgTmV3IGRlZmF1bHQsIHdlYWsgaTJjX2dldF9idXNfc3BlZWQoKSBhbmQgaTJjX3NldF9idXNfc3BlZWQoKSBmdW5jdGlvbnMKLSAgICByZXBsYWNlIGEgbnVtYmVyIG9mIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBpbXBsZW1lbnRhdGlvbnMuCi0KLSAgICBBbHNvLCBwcm92aWRpbmcgZGVmYXVsdCBmdW5jdGlvbnMgd2lsbCBhbGxvdyBhbGwgYm9hcmRzIHRvIGVuYWJsZQotICAgIENPTkZJR19JMkNfQ01EX1RSRUUuICBUaGlzIHdhcyBwcmV2aW91c2x5IG5vdCBwb3NzaWJsZSBzaW5jZSB0aGUKLSAgICB0cmVlLWZvcm0gb2YgdGhlIGkyYyBjb21tYW5kIHByb3ZpZGVzIHRoZSBhYmlsaXR5IHRvIGRpc3BsYXkgYW5kIG1vZGlmeQotICAgIHRoZSBpMmMgYnVzIHNwZWVkIHdoaWNoIHJlcXVpcmVzIGkyY19bc2V0fGdldF1fYnVzX3NwZWVkKCkgdG8gYmUKLSAgICBwcmVzZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDgyMjllOWMwNGY3MDE5ZGRkNzZhZWEwNWQ0ZGNhMDQ0Y2JjOWEzNGEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVNhdCBBcHIgMTggMjI6MzQ6MDAgMjAwOSAtMDUwMAotCi0gICAgY201MjAwOiBNYWtlIGZ1bmN0aW9uIHRlc3QgY29tbWFuZCBuYW1lcyBtb3JlIHVuaXF1ZQotCi0gICAgQWRkICJfdGVzdCIgdG8gY201MjAwJ3MgZnVuY3Rpb24gdGVzdCBjb21tYW5kIG5hbWVzIHRvIHByZXZlbnQKLSAgICBvdmVybGFwIHdpdGggY29tbW9uLCBnbG9iYWwgZnVuY3Rpb24gbmFtZXMuICBPcmlnaW5hbGx5LCB0aGUKLSAgICAiZG9faTJjIiBmdW5jdGlvbiB0ZXN0IGNvbW1hbmQgaW50ZXJmZXJlZCB3aXRoCi0gICAgY29tbW9uL2NtZF9pMmMuYydzICJkb19pMmMiIHdoZW4gQ09ORklHX0kyQ19DTURfVFJFRSB3YXMgZGVmaW5lZC4KLQotICAgIFRoZSBmdW5jdGlvbnMgd2VyZSBhbHNvIG1hZGUgc3RhdGljIGFzIHRoZXkgYXJlIG5vdCBnbG9iYWxseSBhY2Nlc3NlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBmMDcyMmVlNzYyZThkYWRhOWQ3Zjc0YWMyNzQ1ZTA0M2Y4M2FhZTg1Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgQXByIDI0IDE1OjM0OjA5IDIwMDkgLTA1MDAKLQotICAgIHRzaTEwOF9pMmM6IEFkZCBpMmNfaW5pdCgpIHN0dWIgZnVuY3Rpb24KLQotICAgIEFkZCB0aGUgaTJjX2luaXQoKSBmdW5jdGlvbiBzbyB0aGF0IHRoZSB0c2kxMDhfaTJjLmMgZHJpdmVyIGZpdHMKLSAgICBVLUJvb3QncyBzdGFuZGFyZCBJMkMgQVBJIHdoaWNoIGlzIHV0aWxpemVkIGJ5IGNtZF9pMmMuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDhkOTA3ZTc5YmM5YmFiYjI3Mzk2ZTM0YmU1NGNmZGMzNmZmNjJmYjkKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBBcHIgMjQgMTU6MzQ6MDggMjAwOSAtMDUwMAotCi0gICAgbXBjNzQ0OGhwYzI6IEFkZCBDT05GSUdfU1lTX0kyQ19TUEVFRCBkZWZpbmUKLQotICAgIEFkZCBzdGFuZGFyZCBDT05GSUdfU1lTX0kyQ19TUEVFRCBkZWZpbmUgZm9yIHRoZSBtcGM3NDQ4aHBjMiBzbyB0aGF0Ci0gICAgaXQgY2FuIHVzZSB0aGUgY29tbW9uICdpMmMgc3BlZWQnIGNvbW1hbmQuCU5vdGUgdGhhdCB0aGUgSTJDIGNvbnRyb2xsZXIKLSAgICB1dGlsaXplZCBieSB0aGUgbXBjNzQ0OGhwYzIgaGFzIGEgZml4ZWQgc3BlZWQgYW5kIGNhbm5vdCBiZSBjaGFuZ2VkCi0gICAgZHluYW1pY2FsbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgYTA1NmIxY2U5ZTE5YjRkNGFiM2RkMDFjM2Y4OTdkY2Q4MzJjZDM3ZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEFwciAyNCAxNTozNDowNyAyMDA5IC0wNTAwCi0KLSAgICBNYXJ2ZWxsOiBpMmMgY2xlYW51cAotCi0gICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIHdlcmUgbWFkZSwgcHJpbWFyaWx5IHRvIGJyaW5nIHRoZSBNYXJ2ZWxsIGkyYwotICAgIGRyaXZlciBpbiBsaW5lIHdpdGggVS1Cb290J3MgY3VycmVudCBJMkMgQVBJOgotICAgIC0gTWFkZSBpMmNfaW5pdCgpIGdsb2JhbGx5IGFjY2Vzc2libGUKLSAgICAtIE1hZGUgaTJjX3JlYWQoKSBhbmQgaTJjX3dyaXRlKCkgcmV0dXJuIGFuIGludGVnZXIKLSAgICAtIFVwZGF0ZWQgaTJjX2luaXQoKSBjYWxscyB0byBwYXNzIGluIENPTkZJR19TWVNfSTJDX1NMQVZFIGluIHRoZQotICAgICAgb2ZmaGFuZCBjaGFuY2Ugc29tZW9uZSBhZGRzIHNsYXZlIHN1cHBvcnQgaW4gdGhlIGZ1dHVyZQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDU0YWZjNmVlMTBjOGNkMDk1OThkODE0ZDQ5ZTYwMTM1OWIwMDVlNDkKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBBcHIgMjQgMTU6MzQ6MDYgMjAwOSAtMDUwMAotCi0gICAgY3BjaTc1MDogaTJjIGNsZWFudXAKLQotICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyB3ZXJlIG1hZGUsIHByaW1hcmlseSB0byBicmluZyB0aGUgY3BjaTc1MCBpMmMKLSAgICBkcml2ZXIgaW4gbGluZSB3aXRoIFUtQm9vdCdzIGN1cnJlbnQgSTJDIEFQSToKLSAgICAtIE1hZGUgaTJjX2luaXQoKSBnbG9iYWxseSBhY2Nlc3NpYmxlCi0gICAgLSBNYWRlIGkyY19yZWFkKCkgYW5kIGkyY193cml0ZSgpIHJldHVybiBhbiBpbnRlZ2VyCi0gICAgLSBVcGRhdGVkIGkyY19pbml0KCkgY2FsbHMgdG8gcGFzcyBpbiBDT05GSUdfU1lTX0kyQ19TTEFWRSBpbiB0aGUKLSAgICAgIG9mZmhhbmQgY2hhbmNlIHNvbWVvbmUgYWRkcyBzbGF2ZSBzdXBwb3J0IGluIHRoZSBmdXR1cmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA5YzkwYTJjOGU4NzQxNDAwN2EwMTZiN2NkMDk5YWMxZTMyZmQzMDFiCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgQXByIDI0IDE1OjM0OjA1IDIwMDkgLTA1MDAKLQotICAgIGkyYy5oOiBQcm92aWRlIGEgZGVmYXVsdCBDT05GSUdfU1lTX0kyQ19TTEFWRSB2YWx1ZQotCi0gICAgTWFueSBib2FyZHMvY29udHJvbGxlcnMvZHJpdmVycyBkb24ndCBzdXBwb3J0IGFuIEkyQyBzbGF2ZSBpbnRlcmZhY2UsCi0gICAgaG93ZXZlciBDT05GSUdfU1lTX0kyQ19TTEFWRSBpcyB1c2VkIGluIGNvbW1vbiBjb2RlIHNvIHByb3ZpZGUgYQotICAgIGRlZmF1bHQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlNzU2M2FmZjE3NGY3N2FhNjFkYWIxZWY1ZDliNDdiZWJhYTQzNzAyCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSnVuIDExIDIzOjQyOjM1IDIwMDkgLTA1MDAKLQotICAgIGZzbC1kZHI6IEZpeCBoYW5kbGluZyBvZiA+NEcgb2YgbWVtb3J5IHdoZW4gIUNPTkZJR19QSFlTXzY0QklUCi0KLSAgICBUaGUgZGRyIGNvZGUgY29tcHV0ZXMgbW9zdCB0aGluZ3MgYXMgNjQtYml0IHF1YW50aXRpZXMgYW5kIGhhZCBzb21lIHBsYWNlcwotICAgIGluIHRoZSBtaWRkbGUgdGhhdCBpdCB3YXMgdXNpbmcgcGh5X2FkZHJfdCBhbmQgcGh5c19zaXplX3QuCi0KLSAgICBJbnN0ZWFkIHdlIHVzZSB1bnNpZ25lZCBsb25nIGxvbmcgdGhyb3VnaCBvdXQgYW5kIG9ubHkgYXQgdGhlIGxhc3Qgc3RhZ2Ugb2YKLSAgICBzZXR0aW5nIHRoZSBMQVdzIGFuZCByZXBvcnRpbmcgdGhlIGFtb3VudCBvZiBtZW1vcnkgdG8gdGhlIGJvYXJkIGNvZGUgZG8gd2UKLSAgICB0cnVuY2F0ZSBkb3duIHRvIHdoYXQgd2UgY2FuIGNvdmVyIHZpYSBwaHlzX3NpemVfdC4KLQotICAgIFRoaXMgaGFzIHRoZSBhZGRlZCBiZW5lZml0IHRoYXQgdGhlIEREUiBjb250cm9sbGVyIGl0c2VsZiBpcyBhbHdheXMgc2V0dXAKLSAgICB0aGUgc2FtZSB3YXkgcmVnYXJkbGVzcyBvZiBob3cgbXVjaCBtZW1vcnkgd2UgaGF2ZS4gIEl0cyBvbmx5IHRoZSBMQVcKLSAgICBzZXR1cCB0aGF0IGxpbWl0cyB3aGF0IGlzIHZpc2libGUgdG8gdGhlIHN5c3RlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkNGIxMzBkYzgwNzYxYjQzMGRjNWI0MTAxNTljZDE1OGZjYTFhMzQ4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSnVuIDExIDIzOjQwOjM0IDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IFVzZSBwcmludF9zaXplIHRvIHJlcG9ydCBhbW91bnQgb2YgbWVtb3J5IG5vdCBtYXBwZWQgYnkgVExCcwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDZlMmFlYmMzM2ZhNzQwYzA2OGZlMjhkNDBlYWYwMzE5YjdjNzI4N2UKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMjAgMTI6MzA6NDIgMjAwOSAtMDQwMAotCi0gICAgODV4eDogQWRkIFJFQURNRSBmb3IgTVBDODU2OU1EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYjJhYWIzODZlOTU3YmE2ODRkNGYyYTQ2NmJmYWE5MTc3MGU1MDU4YQotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1heSAyMCAxMjozMDozMyAyMDA5IC0wNDAwCi0KLSAgICA4NXh4OiBBZGQgVUFSVDEgc3VwcG9ydCBmb3IgTVBDODU2OU1EUwotCi0gICAgTVBDODU2OSBVQVJUMSBzaWduYWxzIGFyZSBtdXhlZCB3aXRoIFBvcnRGIGJpdFs5LTEyXSwgd2UgbmVlZCB0byBkZWZpbmUKLSAgICB0aG9zZSBwaW5zIGJlZm9yZSB1c2luZyBVQVJUMS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDM5OWI1M2NiYWIwYjM3N2FjNGM1YzE2YzE5YzZlNDFiNjhhOWM3MTkKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMjAgMTI6MzA6MzIgMjAwOSAtMDQwMAotCi0gICAgODV4eDogQWRkIFBJQiBzdXBwb3J0IGF0IENTNC9DUzUgZm9yIE1QQzg1NjlNRFMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXUgTGl1IDxZdS5MaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmIyNzk0OTA1OWYxYmM4NDM4MWE2MjE2YTgxOTA5MGYwY2RiYWE3MAotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1biA0IDE2OjEyOjM5IDIwMDkgLTA0MDAKLQotICAgIDg1eHg6IEZpeCBzb21lIHNldHRpbmdzIGZvciBNUEM4NTY5TURTIGJvYXJkCi0KLSAgICAtIEluY3JlYXNlIHRoZSBzaXplIG9mIG1hbGxvYyB0byA1MTJLQiBiZWNhdXNlIE1QQzg1NjlNRFMgbmVlZHMgbW9yZSBtZW1vcnkgZm9yCi0gICAgbWFsbG9jIHRvIHN1cHBvcnQgdXAgdG8gZWlnaHQgRXRoZXJuZXQgaW50ZXJmYWNlcy4KLSAgICAtIE1vdmUgRW52aXJvbm1lbnQgYWRkcmVzcyBvdXQgb2YgdWJvb3QgdGh1cyB0aGUgc2F2ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0gICAgd2lsbCBub3QgYmUgZXJhc2VkIGFmdGVyIHUtYm9vdCBpcyByZS1wcm9ncmFtbWVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzdmNjBmZDI5ZjJkNjM4ZDA4MGNkZjFhNDlhZDk4NWI4NWY5NDI5ZAotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1heSAyMCAxMjozMDozMCAyMDA5IC0wNDAwCi0KLSAgICA4NXh4OiBGaXggTVVSQU0gc2l6ZSBmb3IgTVBDODU2OQotCi0gICAgTVBDODU2OSBoYXMgMTI4SyBieXRlcyBNVVJBTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGE1M2M5OTdkZDdmYzg1OGYyYTI3ZjVhNDdiMjAwNTY3YjkzNDNhZTUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMjIgMjA6MjM6NTEgMjAwOSArMDIwMAotCi0gICAgYXQ5MS9jcHUuYzogYWRkIG1pc3NpbmcgQ29weXJpZ2h0ICYgR1BMIGhlYWRlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGFhNDQ2YTU5MWFjYTQ2ZWYyYjUzY2M2NTk4ZWE4MDkxZmViNDU0NDQKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVN1biBKdW4gNyAyMTo0NToxNiAyMDA5ICswOTAwCi0KLSAgICBhcG9sbG9uOiBGaXggYSBPQkpDRkxBR1MgdHlwbwotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Ci0KLWNvbW1pdCA1ODA2MTFjYjA5MzIxNDNmYzJkN2E3MzVjZmE5Y2UxZWYzNGQ2MDAyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVuIDEwIDAwOjE5OjI4IDIwMDkgKzAyMDAKLQotICAgIFByZXBhcmUgMjAwOS4wNi1yYzMKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzYTc2YWI1YzE2NmQ1OTU2ODg1ZjgwM2NlOTc1ZTcxNTFjYzBjYTBlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVuIDEwIDAwOjE1OjExIDIwMDkgKzAyMDAKLQotICAgIHJtdSBib2FyZDogZml4IGVycm9yOiAnQ09ORklHX0VOVl9TRUNUX1NJWkUnIHVuZGVjbGFyZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxNjVmOTg1OWI2NGZmNTlmMGNmYWUzY2M3MGE3ZTdkZWQ3YWFhNGE3Ci1BdXRob3I6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+Ci1EYXRlOglUaHUgSnVuIDQgMTk6NDQ6MTIgMjAwOSArMDIwMAotCi0gICAgdWJpZnM6IGZpeCBzbWFsbCBlcnJvciBwYXRoIG1pc21hdGNoCi0KLSAgICBJbiBkb19yZWFkcGFnZSgpLCBkb24ndCBmcmVlICdkbicgaWYgaXRzIGFsbG9jYXRpb24gZmFpbGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KLQotY29tbWl0IGRlN2NmNzA5ZWJkM2MwMWZiZDA5NGU4ODUzZGFiYjQxMGMwMzcwYTEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gNCAwMDozMTowNyAyMDA5ICswMjAwCi0KLSAgICBFUDg4eDogZml4IGJyb2tlbiBsaW5rZXIgc2NyaXB0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIFRlc3RlZC1ieTogTWlraGFpbCBaYXR1cmVuc2tpeSA8bXphdHVyZW5za2l5QHNob3BwZXJ0cmFrLmNvbT4KLQotY29tbWl0IDdhMjA2M2JkODBkM2I1OGIyZGQ1ZDVlNThmNDQxMWY4ZDI1MDU3NmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgMTUgMDA6MTY6MDIgMjAwOSArMDIwMAotCi0gICAgVFFNODV4eDogbWlub3IgY29uZmlnIGZpbGUgY2xlYW51cAotCi0gICAgUmVtb3ZlICJzYXZlZW52IiBmcm9tICJ1cGRhdGUiIGRlZmluaXRpb246IHRoZSBlbnZpcm9ubWVudCBpcyBvdXRzaWRlCi0gICAgdGhlIFUtQm9vdCBpbWFnZSBvbiBUUU04NXh4IGFuZCB0aGVyZWZvciBub3QgYWZmZWN0ZWQgYnkgdXBkYXRlcy4KLQotICAgIEFsc28gImJlYXV0aWZ5IiBjb2RlIGEgYml0ICh2ZXJ0aWNhbCBhbGlnbm1lbnQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGMwMjk2YjE4MDFmYzk0MjZkNzcyZmE3NWZlNTg0NThkYjYwNWRmZWUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgMTUgMDA6MTY6MDEgMjAwOSArMDIwMAotCi0gICAgVFFNODV4eDogYWRhcHQgZm9yIG5ldyBmbGFzaCB0eXBlcwotCi0gICAgT2xkIFRRTTg1eHggYm9hcmRzIGhhZCAnTScgdHlwZSBTcGFuc2lvbiBGbGFzaGVzIGZyb20gdGhlIFMyOUdMeHh4TQotICAgIHNlcmllcyB3aGlsZSBuZXcgYm9hcmRzIGhhdmUgJ04nIHR5cGUgRmxhc2hlcyBmcm9tIHRoZSBTMjlHTHh4eE4KLSAgICBzZXJpZXMsIHdoaWNoIGhhdmUgYmlnZ2VyIHNlY3RvcnM6IDIgeCAxMjggaW5zdGVhZCBvZiAyIHggNjQgS0IuCi0KLSAgICBXZSBub3cgY2hhbmdlIHRoZSBjb25maWd1cmF0aW9uIHRvIHRoZSBuZXcgZmxhc2ggdHlwZXMgZm9yIGFsbAotICAgIGJvYXJkczsgdGhpcyBhbHNvIHdvcmtzIG9uIG9sZCBib2FyZHMgLSB3ZSBqdXN0IHdhc3RlIHR3byBmbGFzaAotICAgIHNlY3RvcnMgZm9yIHRoZSBlbnZpcm9ubWVudCB3aGljaCBjb3VsZCBiZSBzbWFsbGVyIHRoZXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDY3MzUxMDQ5MjRmMDYzNDAwNzFhNjkxNGE5ZWUzMzQ1NjA3ZmMxMDIKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXkgMTggMTc6NDk6MjMgMjAwOSArMDgwMAotCi0gICAgODV4eDogRml4IHRoZSB3cm9uZyBTWVNfQ0xLX0lOIGZvciA4NTY5TURTCi0KLSAgICBUaGUgU1lTX0NMS19JTiBvZiBNUEM4NTY5TURTIGlzIDY2LjY2TUh6LAotICAgIFRoZSBERFJfQ0xLX0lOIGlzIHNhbWUgd2l0aCBTWVNfQ0xLX0lOIGluIDg1NjkgcHJvY2Vzc29yLgotICAgIHNvLCBjaGFuZ2UgdGhlIFNZU19DTEtfSU4gZnJvbSA2Nk1IeiB0byA2Ni42Nk1Iei4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxNmU3NTU5YzA4YjZmMjlkYjQ1OTZkNzk1YjkyOTE0YzAxZTZhMWIzCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWF5IDE1IDEwOjI3OjQ0IDIwMDkgKzA4MDAKLQotICAgIDg1eHg6IEZpeCB0aGUgd3JvbmcgQkNTUiBhZGRyZXNzIG9mIDg1NjlNRFMKLQotICAgIFRoZSBCQ1NSMTdbN10gPSAxIHdpbGwgdW5sb2NrIHRoZSB3cml0ZSBwcm90ZWN0IG9mIEZMQVNILgotICAgIFRoZSBXUCMgcGluIG9ubHkgY29udHJvbHMgdGhlIHdyaXRlIHByb3RlY3Qgb2YgdG9wL2JvdHRvbSBzZWN0b3IsCi0gICAgVGhhdCBpcyB3aHkgd2UgY2FuIHNhdmUgZW52LCBidXQgd2UgY2FuJ3Qgd3JpdGUgdGhlIGZpcnN0IHNlY3RvcgotICAgIGJlZm9yZSB0aGUgcGF0Y2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTBkMTNiOGFjM2Q1MTUzNDk2MjZkN2M4YTNkYzM0ZWYzOGM0M2ZhNgotQXV0aG9yOiBGcmVkcmlrIEFybmVydXAgPGZyZWRyaWsuYXJuZXJ1cEBlZGdld2FyZS50dj4KLURhdGU6CVR1ZSBKdW4gMiAxNjoyNzoxMCAyMDA5IC0wNTAwCi0KLSAgICA4NXh4OiBidWdmaXggZm9yIHJlYWRpbmcgbWF4aW11bSBUTEIgc2l6ZSBvbiBtcGM4NXh4Ci0KLSAgICBUaGUgTUFYU0laRSBmaWVsZCBpbiB0aGUgVExCMUNGRyByZWdpc3RlciBpcyA0IGJpdHMsIG5vdCA4IGJpdHMuCi0gICAgVGhpcyBtYWRlIHNldHVwX2Rkcl90bGJzKCkgdHJ5IHRvIHNldCB1cCBhIFRMQiBsYXJnZXIgdGhhbiB0aGUgZTUwMCBtYXhpbXVtCi0gICAgKDI1NiBNQikKLSAgICB3aGljaCBtYWRlIHUtYm9vdCBoYW5nIGluIGJvYXJkX2luaXRfZigpIHdoZW4gdHJ5aW5nIHRvIGNyZWF0ZSBhIG5ldyBzdGFjawotICAgIGluIFJBTS4KLSAgICBJIGhhdmUgYW4gbXBjODU0MCB3aXRoIG9uZSAxR0IgZGltbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZyZWRyaWsgQXJuZXJ1cCA8ZnJlZHJpay5hcm5lcnVwQGVkZ2V3YXJlLnR2PgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDFiNTI5MWRkZGY1ZjE2YzdhZTEwZTNjYjE2NTg4MmZhOTYwMzhiMjYKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgMjcgMTQ6MzI6NDMgMjAwOSArMDgwMAotCi0gICAgODV4eDogRml4IHRoZSBjbG9jayBhZGp1c3Qgb2YgbXBjODU2OW1kcyBib2FyZAotCi0gICAgQ3VycmVudGx5IHRoZSBjbGtfYWRqIGlzIDYgKDMvNCBjeWNsZSksIFRoZSBzZXR0aW5ncyB3aWxsIGNhdXNlCi0gICAgdGhlIEREUiBjb250cm9sbGVyIGhhbmcgYXQgdGhlIGRhdGEgaW5pdC4gQ2hhbmdlIHRoZSBjbGtfYWRqCi0gICAgZnJvbSA2IHRvIDQgKDEvMiBjeWNsZSksIG1ha2UgdGhlIG1lbW9yeSBzeXN0ZW0gc3RhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGZhYTE0YmFiZDc0NjZkZmFkZTM1OGY5Y2FjMTI4YWUyNDZiOWJmMWIKLUF1dGhvcjogUk9ORVRJWCAtIElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+Ci1EYXRlOglGcmkgSnVuIDUgMTY6NTQ6MzEgMjAwOSArMDIwMAotCi0gICAgYXQ5MTogZml4IGEgVVNCIHByb2JsZW0gZm9yIEFUOTFTQU05MjYxCi0KLSAgICBUaGlzIHBhdGNoIGNvcnJlY3RzIHRoZSBtaXNzaW5nIFBMTEIgaW5pdGlhbGl6YXRpb24gaW4gdXNiX2NwdV9pbml0KCkKLSAgICBmb3IgQVQ5MVNBTTkyNjEuCi0gICAgQmVjYXVzZSBvZiB0aGUgbWlzc2luZyBQTExCIGluaXRpYWxpemF0aW9uLCB0aGUgVVNCIHN1cHBvcnQgZm9yIGFsbAotICAgIEFUOTFTQU05MjYxIGJhc2VkIGJvYXJkcyB3aWxsIHdvcmsgb25seSBpZiB0aGUgUExMQiBpcyBjb25maWd1cmVkIGJ5IGEKLSAgICBwcmVjZWRlbnQgYm9vdGxvYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCAwYzI0ZGVjNTUwZGRiN2Q4NmI4YmZkZDg2NDViMTg0NzlmNzNlNmUyCi1BdXRob3I6IEZlbGl4IFJhZGVuc2t5IDxmZWxpeEBlbWJlZGRlZC1zb2wuY29tPgotRGF0ZToJU3VuIE1heSAzMSAyMDo0NDoxNSAyMDA5ICswMzAwCi0KLSAgICBwcGM0eHgvbmV0OiBGaXggTURJTyBjbG9jayBzZXR1cAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBNRElPIGNsb2NrIHNldHVwIGluIGNhc2Ugd2hlbiBPUEIgZnJlcXVlbmN5IGlzIDEwME1Iei4KLSAgICBDdXJyZW50IGNvZGUgYXNzdW1lcyB0aGF0IHRoZSB2YWx1ZSBvZiBzeXNpbmZvLmZyZXFPUEIgaXMgMTAwMDAwMDAwCi0gICAgd2hlbiBPUEIgZnJlcXVlbmN5IGlzIDEwME1Iei4gSW4gcmVhbGl0eSBpdCBpcyAxMDAwMDAwMDEuIEFzIGEgcmVzdWx0Ci0gICAgTURJTyBjbG9jayBpcyBzZXQgdG8gaW5jb3JyZWN0IHZhbHVlLCBsYXJnZXIgdGhhbiAyLjVNSHosIHRodXMgdmlvbGF0aW5nCi0gICAgdGhlIHN0YW5kYXJkLiBUaGlzIGluIG5vdCBhIHByb2JsZW0gb24gYm9hcmRzIGVxdWlwcGVkIHdpdGggTWFydmVsbCBQSFlzCi0gICAgKGUuZy4gQ2FueW9ubGFuZHMpLCBzaW5jZSB0aG9zZSBQSFlzIHN1cHBvcnQgTURJTyBjbG9ja3MgdXAgdG8gOC4zTUh6LAotICAgIGJ1dCBjYW4gYmUgYSBwcm9ibGVtIGZvciBvdGhlciBQSFlzIChlLmcuIFJlYWx0ZWsgb25lcykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZWxpeCBSYWRlbnNreSA8ZmVsaXhAZW1iZWRkZWQtc29sLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZDY1ZTM0ZDEyNTE0ZGUyYmJlM2I4ZjUxOTc2MWQ2NDFjMDgxYmFkMAotQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglXZWQgRmViIDI1IDE0OjI3OjI5IDIwMDkgKzA5MDAKLQotICAgIHJ0bDgxNjk6IGZpeCBQQ0kgc3lzdGVtIG1lbW9yeSBhZGRyZXNzCi0KLSAgICBXaGVuIFBDSSBkZXZpY2UgdXNlIHN5c3RlbSBtZW1vcnksIHNvbWUgUENJIGhvc3QgY29udHJvbGxlciBzaG91bGQgYmUKLSAgICBzZXQgcGh5c2ljYWwgbWVtb3J5IGFkZHJlc3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGNhOWM4YTFlMTBmYWMwMWU2YTExMjlmODJhN2NlMThiZDgxOGZhNDMKLUF1dGhvcjogTWFuaWthbmRhbiBQaWxsYWkgPG1hbmkucGlsbGFpQHRpLmNvbT4KLURhdGU6CVdlZCBBcHIgOCAwOToxNDozNSAyMDA5ICswNTMwCi0KLSAgICBTTUM5MTF4IGRyaXZlciBmaXhlZCBmb3IgTkZTIGJvb3QKLQotICAgIGV0aF9oYWx0KCkgZnVuY3Rpb24gaW4gdGhlIHNtYzkxMXggZHJpdmVycyB1c2VkIHRvIGNhbGwgdGhlCi0gICAgc21jOTExeF9yZXNldCgpIGZ1bmN0aW9uLiBldGhfaGFsdCgpIHVzZWQgdG8gYmUgY2FsbGVkIGFmdGVyCi0gICAgdGZ0cCB0cmFuc2ZlcnMuIFRoaXMgdXNlZCB0byBwdXQgdGhlIGV0aGVybmV0IGNoaXAgaW4gcmVzZXQKLSAgICB3aGlsZSB0aGUgbGludXggYm9vdHMgdXAgcmVzdWx0aW5nIGluIHRoZSBldGhlcm5ldCBkcml2ZXIKLSAgICBub3QgY29taW5nIHVwLiBORlMgYm9vdCB1c2VkIHRvIGZhaWwgYXMgYSByZXN1bHQuCi0KLSAgICBUaGlzIHBhdGNoIGNhbGxzIHNtYzkxMXhfc2h1dGRvd24oKSBpbnN0ZWFkIG9mIHNtYzkxMXhfcmVzZXQoKS4KLSAgICBTb21lIGNvbW1lbnRzIHJlY2VpdmVkIGhhcyBhbHNvIGJlZW4gZml4ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYW5pa2FuZGFuIFBpbGxhaSA8bWFuaS5waWxsYWlAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBlNWEzYmMyNDAxYTIzZjE4OTA2MTFmMDIwZjU3Zjk0ODI0YTUzNGRiCi1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJU3VuIE1heSAzIDEyOjExOjQwIDIwMDkgKzAyMDAKLQotICAgIEFkZCBjb25maWcgb3B0aW9uIGZvciBkaXNhYmxpbmcgRE05MDAwLVNST00gc3VwcG9ydC4KLQotICAgIFNvbWUgYm9hcmRzIGRvIG5vdCBoYXZlIFNST00gc3VwcG9ydCBmb3IgdGhlIERNOTAwMCBuZXR3b3JrIGFkYXB0ZXIuCi0gICAgSW5zdGVhZCBvZiBsaXN0aW5nIHRoZXNlIGJvYXJkIG5hbWVzIGluIHRoZSBkcml2ZXIgY29kZSwgbWFrZSB0aGlzCi0gICAgb3B0aW9uIGNvbmZpZ3VyYWJsZSBmcm9tIHRoZSBib2FyZCBjb25maWcgZmlsZS4KLQotICAgIEl0IGFsc28gcmVtb3ZlcyBhIGJ1aWxkIHdhcm5pbmcgZm9yIHRoZSBhdDkxc2FtOTI2MWVrIGJvYXJkOgotICAgICdkbTkwMDB4LmM6NTQ1OiB3YXJuaW5nOiAncmVhZF9zcm9tX3dvcmQnIGRlZmluZWQgYnV0IG5vdCB1c2VkJwotCi0gICAgQW5kIGl0IHJlcGFpcmVzIHRoZSB0cml6ZXBzaXYgYm9hcmQgYnVpbGQgd2hpY2ggd2FzIGJyb2tlbiBhcm91bmQgdGhlCi0gICAgc2FtZSByb3V0aW5lcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDNjOWIxZWUxN2UxOWJkNmQ4MDM0NDY3OGQ0MWE4NWU1MmIwYmU3MTMKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdW4gNSAxNDoxMTozMyAyMDA5IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBkb24ndCBzZXQgU0lDUkhfVFNPQkkxIHRvIFJNSUkvUlRCSSBvcGVyYXRpb24KLQotICAgIEluIEdNSUkgbW9kZSAod2hpY2ggb3BlcmF0ZXMgYXQgMy4zVikgYm90aCBTSUNSSCBUU0VDMS8yIG91dHB1dCBidWZmZXIKLSAgICBpbXBlZGFuY2UgYml0cyBzaG91bGQgYmUgY2xlYXIsIGkuZS4sIFNJQ1JIW1RTSU9CMV0gPSAwIGFuZCBTSUNSSFtUU0lPQjJdID0gMC4KLSAgICBTSUNSSFtUU0lPQjFdIHdhcyBlcnJvbmVvdXNseSBiZWluZyBzZXQgaGlnaC4KLQotICAgIFUtQm9vdCBhbHdheXMgb3BlcmF0ZWQgdGhpcyBQSFkgaW50ZXJmYWNlIGluIEdNSUkgbW9kZS4gIEl0IGlzIGFzc3VtZWQgdGhpcwotICAgIHdhcyBtaXNzZWQgaW4gdGhlIGNsZWFuIHVwIGJ5IHRoZSBvcmlnaW5hbCBib2FyZCBwb3J0ZXJzLCBhbmQgY29waWVkIGFsb25nCi0gICAgdG8gdGhlIFRRTSBhbmQgc2JjIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IElyYSBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgotICAgIFJldmlld2VkLWJ5OiBEYXZpZCBIYXdraW5zIDxkd2hAb3Zyby5jYWx0ZWNoLmVkdT4KLSAgICBUZXN0ZWQtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIENDOiBEYXZlIExpdSA8RGF2ZUxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMmMwMjM0ZmE3OTEyMmE1YWE3N2M0ZTE3YzMzZWIyZmUxODRiNjFhNwotQXV0aG9yOiBEYW5pZWwgTWFjayA8ZGFuaWVsQGNhaWFxLmRlPgotRGF0ZToJV2VkIEFwciA4IDEzOjIzOjM3IDIwMDkgKzAyMDAKLQotICAgIHNtYzkxMXg6IHdyaXRlIGJhY2sgdGhlIG1hbnVhbGx5IHNldCBNQUMgYWRkcmVzcwotCi0gICAgSWYgdGhlIE1BWCBhZGRyZXNzIGlzIGdpdmVuIGJ5IHRoZSBlbnZpcm9ubWVudCwgd3JpdGUgaXQgYmFjayB0byB0aGUKLSAgICBoYXJkd2FyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+Ci0gICAgQ2M6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZGZjZDdmMjE2MDdmZDg0NzIzNmIwNGJiMWE4ZDU5YTdjMTBhYjk5YwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIE1heSAxNSAwMDoxNjowMyAyMDA5ICswMjAwCi0KLSAgICBSZWR1bmRhbnQgRW52aXJvbm1lbnQ6IHByb3RlY3QgZnVsbCBzZWN0b3Igc2l6ZQotCi0gICAgU2V2ZXJhbCBib2FyZHMgdXNlZCBkaWZmZXJlbnQgd2F5cyB0byBzcGVjaWZ5IHRoZSBzaXplIG9mIHRoZQotICAgIHByb3RlY3RlZCBhcmVhIHdoZW4gZW5hYmxpbmcgZmxhc2ggd3JpdGUgcHJvdGVjdGlvbiBmb3IgdGhlIHNlY3RvcnMKLSAgICBob2xkaW5nIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXM6IHNvbWUgdXNlZCBDT05GSUdfRU5WX1NJWkUgYW5kCi0gICAgQ09ORklHX0VOVl9TSVpFX1JFRFVORCwgc29tZSB1c2VkIENPTkZJR19FTlZfU0VDVF9TSVpFLCBhbmQgc29tZSBldmVuCi0gICAgYSBtaXggb2YgYm90aCBmb3IgdGhlICJub3JtYWwiIGFuZCB0aGUgInJlZHVuZGFudCIgYXJlYXMuCi0KLSAgICBOb3JtYWxseSwgdGhpcyBtYWtlcyBubyBkaWZmZXJlbmNlIGF0IGFsbC4gSG93ZXZlciwgdGhpbmdzIGFyZQotICAgIGRpZmZlcmVudCB3aGVuIHlvdSBoYXZlIHRvIGRlYWwgd2l0aCBib2FyZHMgdGhhdCBjYW4gY29tZSB3aXRoCi0gICAgZGlmZmVyZW50IHR5cGVzIG9mIGZsYXNoIGNoaXBzLCB3aGljaCBtYXkgaGF2ZSBkaWZmZXJlbnQgc2VjdG9yCi0gICAgc2l6ZXMuCi0KLSAgICBIZXJlIHdlIG1heSBoYXZlIHRvIGNob3NlIENPTkZJR19FTlZfU0VDVF9TSVpFIHN1Y2ggdGhhdCBpdCBmaXRzIHRoZQotICAgIGJpZ2dlc3Qgc2VjdG9yIHNpemUsIHdoaWNoIG1heSBpbmNsdWRlIHNldmVyYWwgc2VjdG9ycyBvbiBib2FyZHMgdXNpbmcKLSAgICB0aGUgc21hbGxlciBzZWN0b3IgZmxhc2ggdHlwZXMuIEluIHN1Y2ggYSBjYXNlLCB1c2luZyBDT05GSUdfRU5WX1NJWkUKLSAgICBvciBDT05GSUdfRU5WX1NJWkVfUkVEVU5EIHRvIGVuYWJsZSB0aGUgcHJvdGVjdGlvbiBtYXkgbGVhZCB0byB0aGUKLSAgICBjYXNlIHRoYXQgb25seSB0aGUgZmlyc3Qgb2YgdGhlc2Ugc2VjdG9ycyBnZXQgcHJvdGVjdGVkLCB3aGlsZSB0aGUKLSAgICBmb2xsb3dpbmcgb25lcyBhcmVuJ3QuCi0KLSAgICBUaGlzIGlzIG5vIHJlYWwgcHJvYmxlbSwgYnV0IGl0IGNhbiBiZSBjb25mdXNpbmcgZm9yIHRoZSB1c2VyIC0KLSAgICBlc3BlY2lhbGx5IG9uIGJvYXJkcyB0aGF0IHVzZSBDT05GSUdfRU5WX1NFQ1RfU0laRSB0byBwcm90ZWN0IHRoZQotICAgICJub3JtYWwiIGFyZWFzLCB3aGlsZSB1c2luZyBDT05GSUdfRU5WX1NJWkVfUkVEVU5EIGZvciB0aGUKLSAgICAicmVkdW5kYW50IiBhcmVhLgotCi0gICAgVG8gYXZvaWQgc3VjaCBpbmNvbnNpc3RlbmNpZXMsIEkgY2hhbmdlZCBhbGwgc3VjbiBib2FyZHMgdGhhdCBJIGZvdW5kCi0gICAgdG8gY29uc2lzdGVudGx5IHVzZSBDT05GSUdfRU5WX1NFQ1RfU0laRSBmb3IgcHJvdGVjdGlvbi4gVGhpcyBzaG91bGQKLSAgICBub3QgY2F1c2UgYW55IGZ1bmN0aW9uYWwgY2hhbmdlcyB0byB0aGUgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQ2M6IFBhdWwgUnVobGFuZAotICAgIENjOiBQYW50ZWxpcyBBbnRvbmlvdSA8cGFudG9AaW50cmFjb20uZ3I+Ci0gICAgQ2M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci0gICAgQ2M6IERhdmUgRWxsaXMgPERHRUBzaXhuZXRpby5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGI4MTgzMGY2ZTNiM2U2ZWQxMTRkMDcxZWIxMDc5NjVlNDlmYTliNWEKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTWF5IDE0IDE0OjAzOjA5IDIwMDkgKzA0MDAKLQotICAgIG1tYzogaXQncyBzYWZlIHRvIGlnbm9yZSBtbWNfc2VuZF9pZl9jb25kKCkgcmV0dXJuIHZhbHVlCi0KLSAgICBSZXR1cm4gdmFsdWUgb2YgbW1jX3NlbmRfaWZfY29uZCgpIGNhbiBiZSBzYWZlbHkgaWdub3JlZCAoYXMgaXQgaXMKLSAgICBkb25lIGluIExpbnV4KS4gVGhpcyBtYWtlcyBvbGRlciBjYXJkcyB3b3JrIHdpdGggTVhDIE1DSSBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBkYmE2ZmNmNjUxN2ZhYTVkZGE3ZGY4MTA5ZmViZTAzYzljNzJhNmY1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgMTEgMTU6NTQ6MTMgMjAwOSArMDIwMAotCi0gICAgY2ZpX210ZDogRml4IGJ1ZyBpbiBsYXN0IHNlY3RvciBkZXRlY3Rpb24KLQotICAgIFRoaXMgcGF0Y2ggbm93IGVuYWJsZWQgdGhpcyBjZmktbXRkIHdyYXBwZXIgdG8gY29ycmVjdGx5IGRldGVjdCBhbmQKLSAgICBlcmFzZSB0aGUgbGFzdCBzZWN0b3IgaW4gYW4gTk9SIEZMQVNIIGRldmljZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDRlM2Q4OWJhOTQ4ZWVmODAxZmZkNDZlZjg2MmNkZWRlNWIzZjgzMjAKLUF1dGhvcjogWWF1aGVuIEtoYXJ1emh5IDxqZWtob3JAZ21haWwuY29tPgotRGF0ZToJVGh1IE1heSA3IDAwOjQzOjMwIDIwMDkgKzAzMDAKLQotICAgIG1tYzogRml4IGRlY29kaW5nIG9mIFNDUiAmIGZ1bmN0aW9uIHN3aXRjaCBkYXRhIG9uIGxpdHRsZS1lbmRpYW4gbWFjaGluZXMKLQotICAgIFNDUiAmIHN3aXRjaCBkYXRhIGFyZSByZWFkIGZyb20gY2FyZCBhcyBiaWctZW5kaWFuIHdvcmRzIGFuZCBzaG91bGQgYmUKLSAgICBjb252ZXJ0ZWQgdG8gQ1BVIGJ5dGUgb3JkZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZYXVoZW4gS2hhcnV6aHkgPGpla2hvckBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjMzY2IzNGIzOTcxZGFiZTM3MjBkNTc3YjBlMWI4NjAxYzA5ZmUxNwotQXV0aG9yOiBZYXVoZW4gS2hhcnV6aHkgPGpla2hvckBnbWFpbC5jb20+Ci1EYXRlOglUaHUgTWF5IDcgMTM6MDg6NTMgMjAwOSArMDMwMAotCi0gICAgbW1jOiBSZW1vdmUgcmV0dXJuIGZyb20gbW1jX2luaXQgZm9yIG5vbiBTRCAyLjAgY29tcGF0aWJsZSBjYXJkcy4KLQotICAgIENhcmRzIHdoaWNoIGFyZSBub3QgY29tcGF0aWJsZSB3aXRoIFNEIDIuMCBzdGFuZGFyZCwgbWF5IHJldHVybiByZXNwb25zZQotICAgIGZvciBDTUQ4IGNvbW1hbmQsIGJ1dCBpdCB3aWxsIGJlIGludmFsaWQgaW4gdGVybXMgb2YgU0QgMi4wLiBXZSBzaG91bGQKLSAgICBhY2NlcHQgdGhpcyBjYXNlIGFzIGFkbWlzc2libGUsIGp1c3QgbGlrZSBMaW51eCBkb2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWWF1aGVuIEtoYXJ1emh5IDxqZWtob3JAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk5OGJlM2RkNTllZDBhZjRiZWMzODMyNDA0N2ZlY2ZhODhhYzQ1ZGIKLUF1dGhvcjogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgotRGF0ZToJU3VuIEFwciA1IDEzOjMwOjU2IDIwMDkgKzA1MzAKLQotICAgIG1tYzogZHJvcCB1bm5lY2Vzc2FyeSBjYXN0cwotCi0gICAgTm93IHRoYXQgcmVzcG9uc2UgaXMgYSB1aW50LCB3ZSBjYW4gZHJvcCBhbGwgdGhlIGNhc3RzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgotCi1jb21taXQgMGI0NTNmZmUyOGJiOTIyN2Q4NmRkYmUwODkzYmQxOWM5M2YwNGVkNwotQXV0aG9yOiBSYWJpbiBWaW5jZW50IDxyYWJpbkByYWIuaW4+Ci1EYXRlOglTdW4gQXByIDUgMTM6MzA6NTUgMjAwOSArMDUzMAotCi0gICAgbW1jOiBmaXggcmVzcG9uc2UgZGVjb2Rpbmcgb24gbGl0dGxlIGVuZGlhbgotCi0gICAgVGhlIG1tYyBjb2RlIGRlZmluZXMgdGhlIHJlc3BvbnNlIGFzIGFuIGFycmF5IG9mIGNoYXJzLiAgSG93ZXZlciwgaXQKLSAgICBhY2Nlc3MgdGhlIHJlc3BvbnNlIGJ5dGVzIGJvdGggYXMgKGkpIGFuIGFycmF5IG9mIGZvdXIgdWludHMgKHdpdGgKLSAgICBjYXN0cykgYW5kIChpaSkgYXMgaW5kaXZpZHVhbCBjaGFycy4gIFRoZSBmb3JtZXIgY2FzZSBpcyB1c2VkIG1vcmUKLSAgICBvZnRlbiwgaW5jbHVkaW5nIGJ5IHRoZSBkcml2ZXIgd2hlbiBpdCBhc3NpZ25zIHRoZSByZXNwb25zZS4KLQotICAgIFRoZSBjaGFyLXdpc2UgYWNjZXNzZXMgYXJlIGJyb2tlbiBvbiBsaXR0bGUgZW5kaWFuIHN5c3RlbXMgYmVjYXVzZSB0aGV5Ci0gICAgYXNzdW1lIHRoYXQgdGhlIGJ5dGVzIGluIHRoZSB1aW50cyBhcmUgaW4gYmlnIGVuZGlhbiBieXRlIG9yZGVyLgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGJ5IGNoYW5naW5nIHRoZSByZXNwb25zZSB0byBiZSBhbiBhcnJheSBvZiBmb3VyCi0gICAgdWludHMgYW5kIHJlcGxhY2luZyB0aGUgY2hhci13aXNlIGFjY2Vzc2VzIHdpdGggZXF1aXZhbGVudCB1aW50LXdpc2UKLSAgICBhY2Nlc3Nlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KLQotY29tbWl0IDliMWY5NDJjMDlkZDk0MmU2ZGUzMTg1Y2FhODFjMTExYjE0ZGU1NjcKLUF1dGhvcjogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgotRGF0ZToJU3VuIEFwciA1IDEzOjMwOjU0IDIwMDkgKzA1MzAKLQotICAgIG1tYzogdXNlIGxsZGl2IHRvIGZpeCBhcm0gZWFiaSBidWlsZAotCi0gICAgVGhlIGdlbmVyaWMgTU1DIGNvcmUgdXNlcyBkaXJlY3QgbG9uZyBsb25nIGRpdmlzaW9ucywgd2hpY2ggZG8gbm90IGJ1aWxkCi0gICAgd2l0aCBBUk0gRUFCSSB0b29sY2hhaW5zLiAgVXNlIGxsZGl2KCkgaW5zdGVhZCwgd2hpY2ggd29ya3MgZXZlcnl3aGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KLQotY29tbWl0IGU4NTY0OWM3ZTY4M2ZhZWExY2NmZGRjOWZhOWFiYzYyZjM4ZTQyMDEKLUF1dGhvcjogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgotRGF0ZToJU3VuIEFwciA1IDEzOjMwOjUzIDIwMDkgKzA1MzAKLQotICAgIG1tYzogY2hlY2sgZmluZF9tbWNfZGV2aWNlIHJldHVybiB2YWx1ZQotCi0gICAgZmluZF9tbWNfZGV2aWNlIHJldHVybnMgTlVMTCBpZiBhbiBpbnZhbGlkIGRldmljZSBudW1iZXIgaXMgc3BlY2lmaWVkLgotICAgIENoZWNrIGZvciB0aGlzIHRvIGF2b2lkIGRlcmVmZXJlbmNpbmcgTlVMTCBwb2ludGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KLQotY29tbWl0IGFjMDg2NWZmMzM4NzBjZGYyY2Q0ODAxNjUwNDVlMWJjMzExZTlmYTIKLUF1dGhvcjogUmFiaW4gVmluY2VudCA8cmFiaW5AcmFiLmluPgotRGF0ZToJU3VuIEFwciA1IDEzOjMwOjUyIDIwMDkgKzA1MzAKLQotICAgIG1tYzogY2xlYW4gdXAgaGVscCB0ZXh0cwotCi0gICAgUmVtb3ZlIHNvbWUgcmVwZWF0ZWQgd29yZHMgYW5kIHN1cGVyZmx1b3VzIG5ld2xpbmVzIGluIHRoZSBtbWMgY29tbWFuZAotICAgIGhlbHAgZW50cmllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhYmluIFZpbmNlbnQgPHJhYmluQHJhYi5pbj4KLQotY29tbWl0IDdkNjkwMGViZTE2ZDY3OWMwZTAzZjhkMTU4NGI2NDA1N2E2NGNlMzkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIE1heSAyOSAxNzowMTo0OCAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2Zpbjogc3BpOiBmaXggcGluIGhhbmRsaW5nIG9mIFNQSTAgU1NFTDQKLQotICAgIENTNCBvbiBTUEkwIGhhcyBhIGRlZGljYXRlZCBQSDggcGluIHdoaWNoIG5lZWRzIHRvIGJlIGVuYWJsZWQgYXMgYQotICAgIHBlcmlwaGVyYWwgaW4gb3JkZXIgdG8gd29yay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDIxNTczNTlkYWQyNTMzOTg3ZjVlYjAxODFlZjU0MzY5M2ZhZDZhMzMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE1heSAyNiAwMjo1MTo1NyAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4IGlmKCkgbG9naWMgaW4gYm9vdHJvbSBldnQxIGNoZWNrCi0KLSAgICBBIG1pc3Npbmcgc2V0IG9mIHBhcmVudGhlc2lzIGNhdXNlZCB0aGUgc2lsaWNvbiByZXZpc2lvbiB0byBhcHBseSBvbmx5IHRvCi0gICAgdGhlIEJGNTMzIGFuZCBub3QgdGhlIEJGNTMxL0JGNTMyIHZhcmlhbnRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNzZiNTg4M2RhMmNmMDQ5Y2Q0MTA5MDFjMDRlYTQ1MGU1ZjVjMjdjMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDE2IDEyOjA0OjIyIDIwMDkgKzAyMDAKLQotICAgIGpmZnMyL210ZHBhcnRzOiBGaXggcHJvYmxlbSB3aXRoIHVzYWdlIGZyb20gSkZGUzIgYW5kIE1URFBBUlRTIHRvZ2V0aGVyCi0KLSAgICBDdXJyZW50bHkgdXNpbmcgSkZGUzIgd2l0aCBNVERQQVJUUyBlbmFibGVkIGRvZXNuJ3Qgd29yay4gVGhpcyBpcyBiZWNhdXNlCi0gICAgbXRkcGFydHNfaW5pdCgpIGlzIGF2YWlsYWJsZSBpbiBib3RoIGZpbGVzLCBjbWRfbXRkcGFydHMuYyBhbmQKLSAgICBjbWRfamZmczIuYy4gUGxlYXNlIG5vdGUgdGhhdCBpbiB0aGUgb3JpZ2luYWwgY21kX2pmZnMyLmMgZmlsZSAoYmVmb3JlCi0gICAgdGhlIGpmZnMyL210ZHBhcnRzIGNvbW1hbmQvZmlsZSBzcGxpdCB0aG9zZSAyIGRpZmZlcmVudCB2ZXJzaW9ucwotICAgIGFscmVhZHkgZXhpc3RlZC4gU28gdGhpcyBpcyBub3RoaW5nIG5ldy4gVGhlIG1haW4gcHJvYmxlbSBpcyB0aGF0IHRoZQotICAgIHZhcmlhYmxlcyAiY3VycmVudF9kZXYiIGFuZCAiY3VycmVudF9wYXJ0bnVtIiBhcmUgZGVjbGFyZWQgaW4gYm90aAotICAgIGZpbGVzIG5vdy4gVGhpcyBkb2Vzbid0IHdvcmsuCi0KLSAgICBUaGlzIHBhdGNoIG5vdyBjaGFuZ2VzIHRoZSBuYW1lcyBvZiB0aG9zZSB2YXJpYWJsZSB0byBtb3JlIHNwZWNpZmljCi0gICAgbmFtZXM6ICJjdXJyZW50X210ZF9kZXYiIGFuZCAiY3VycmVudF9tdGRfcGFydG51bSIuIFRoaXMgaXMgYmVjYXVzZQotICAgIHRoaXMgcGF0Y2ggYWxzbyBjaGFuZ2VzIHRoZSBkZWNsYXJhdGlvbiBmcm9tIHN0YXRpYyB0byBnbG9iYWwsIHNvCi0gICAgdGhhdCB0aGV5IGNhbiBiZSB1c2VkIGZyb20gYm90aCBmaWxlcy4KLQotICAgIFBsZWFzZSBub3RlIHRoYXQgbXkgZmlyc3QgdGVzdHMgd2VyZSBub3Qgc3VjY2Vzc2Z1bC4gVGhlIE1URCBkZXZpY2VzCi0gICAgc2VsZWN0ZWQgdmlhIG10ZHBhcnRzIGFyZSBub3cgYWNjZXNzZWQgYnV0IEknbSBmYWlsaW5nIHRvIHNlZSB0aGUKLSAgICBkaXJlY3RvcnkgbGlzdGVkIHZpYSB0aGUgImxzIiBjb21tYW5kLiBOb3RoaW5nIGlzIGRpc3BsYXllZC4gUGVyaGFwcwotICAgIEkgZGlkbid0IGdlbmVyYXRlIHRoZSBKRkZTMiBpbWFnZSBjb3JyZWN0bHkgKEkgbmV2ZXIgdXNlZCBKRkZTMiBpbgotICAgIFUtQm9vdCBiZWZvcmUpLiBOb3Qgc3VyZS4gUGVyaGFwcyBzb21lYm9keSBlbHNlIGNvdWxkIHRha2UgYSBsb29rIGF0Ci0gICAgdGhpcyBhcyB3ZWxsLiBJJ2xsIGNvbnRpbnVlIGxvb2tpbmcgaW50byB0aGlzIG9uIE1vbmRheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDYzogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0gICAgQ2M6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotICAgIENjOiBSZW5hdWQgYmFyYmllciA8cmVuYXVkLmJhcmJpZXJAZ2UuY29tPgotCi1jb21taXQgYWI2ODc5MDc5ODBmYTI4OTQwYTFhOTkyZDNmMWM1ZDE3Y2RiYmY1ZAotQXV0aG9yOiBHcmFmIFlhbmcgPGdyYWYueWFuZ0BhbmFsb2cuY29tPgotRGF0ZToJU3VuIE1heSAyNCAwMjozNDozNCAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1MThmLWV6YnJkOiBzZXR1cCBwb3J0bXV4IGZvciBhc3luYyBmbGFzaAotCi0gICAgVGhlIHBpbnMgZm9yIGFzeW5jIG1lbW9yeSB3aGVyZSBwYXJhbGxlbCBmbGFzaCBsaXZlcyBhcmUgbm90IGVuYWJsZWQgYnkKLSAgICBkZWZhdWx0LCBzbyBtYWtlIHN1cmUgd2UgbXV4IHRoZW0gYXMgbmVlZGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZiBZYW5nIDxncmFmLnlhbmdAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmNDBmNmRiMjc4ZjYwMmI1NTgyMDY5MzYzNGE3MjU2YjBiNGU0YjgwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBNYXkgMjAgMTA6NTg6MDMgMjAwOSArMDIwMAotCi0gICAgbmFuZDogRml4IHByb2JsZW0gd2l0aCBFQ0Mgb3JkZXJpbmcgZm9yIFBQQzR4eCBOREZDIHBsYXRmb3JtcwotCi0gICAgVGhpcyBwYXRjaCBlbmFibGVzIFNtYXJ0IE1lZGlhIChTTUMpIEVDQyBieXRlIG9yZGVyaW5nIHdoaWNoIGlzIHVzZWQKLSAgICBvbiB0aGUgUFBDNHh4IE5BTkQgRkxBU0ggY29udHJvbGxlciAoTkRGQykuIFdpdGhvdXQgdGhpcyBwYXRjaCB3ZSBoYXZlCi0gICAgaW5jb21wYXRpYmxlIEVDQyBieXRlIG9yZGVyaW5nIHRvIHRoZSBMaW51eCBrZXJuZWwgTkRGQyBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzk5YWFiNzc0OGJlZjA1M2Q1OTYxMjIxMWUxYmQ3YTNmYWJmY2UxOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDIwIDEwOjU4OjAyIDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBFQ0Mgb3JkZXJpbmcgZm9yIFBQQzR4eCBOREZDIHBsYXRmb3JtcwotCi0gICAgVGhpcyBwYXRjaCBub3cgdXNlcyB0aGUgY29ycmVjdCBFQ0MgYnl0ZSBvcmRlciAoU21hcnQgTWVkaWEgLSBTTUMpCi0gICAgdG8gYmUgdXNlZCBvbiB0aGUgNHh4IE5BTkQgRkxBU0ggZHJpdmVyLiBXaXRob3V0IHRoaXMgcGF0Y2ggd2UgaGF2ZQotICAgIGluY29tcGF0aWJsZSBFQ0MgYnl0ZSBvcmRlcmluZyB0byB0aGUgTGludXgga2VybmVsIE5ERkMgZHJpdmVyLgotCi0gICAgUGxlYXNlIG5vdGUgdGhhdCB3ZSBhbHNvIGhhdmUgdG8gZW5hYmxlIENPTkZJR19NVERfTkFORF9FQ0NfU01DIGluCi0gICAgZHJpdmVycy9tdGQvbmFuZC9uYW5kX2VjYy5jIGZvciBjb3JyZWN0IG9wZXJhdGlvbi4gVGhpcyBpcyBkb25lIHdpdGgKLSAgICBhIHNlcGVyYXRlIHBhdGNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVkODQxZmFjODI0OWEyYjNmOWE4MTRkYTIxNDAxMzJiZTBhOWY2MGQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1heSAyMCAxMDo1ODowMSAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IE1vdmUgZGVmaW5pdGlvbiBmb3IgUFBDNHh4IE5BTkQgRkxBU0ggY29udHJvbGxlciB0byBoZWFkZXIKLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIGRlZmluaXRpb24gZm9yIHRoZSBQUEM0eHggTkFORCBGTEFTSCBjb250cm9sbGVyCi0gICAgKE5ERkMpIENPTkZJR19OQU5EX05ERkMgaW50byBpbmNsdWRlL3BwYzR4eC5oLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlCi0gICAgdXBjb21pbmcgZml4IGZvciB0aGUgRUNDIGJ5dGUgb3JkZXJpbmcgb2YgdGhlIE5ERkMgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDJkZjcyYjgyYmM5ZTE3Yjg4ZGM4MjczNWEwNjc3NDkyMjBiZWIwMjUKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTkgMTI6NTM6MzYgMjAwOSAtMDUwMAotCi0gICAgY29tbW9uOiBmaXggaW5saW5lLS13ZWFrIGVycm9yIHNwb3R0ZWQgYnkgZ2NjIDQuNAotCi0gICAgY21kX2lkZS5jOjU0NzogZXJyb3I6IGlubGluZSBmdW5jdGlvbiAnaWRlX2luYicgY2Fubm90IGJlIGRlY2xhcmVkIHdlYWsKLQotICAgIHJlbW92aW5nIHRoZSBpbmxpbmUgYXR0cmlidXRlIGZpeGVzIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDlmZDlhYmVkY2MzYzEwY2Y4OTM1MzI2NWNiZTA1ZjU4NjA5ZDUxZjMKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTkgMTI6NTM6MzIgMjAwOSAtMDUwMAotCi0gICAgVFFNODM0eDogcmVtb3ZlIGRlZmluZXMgY2F1c2luZyBnY2M0LjQgd2FybmluZ3MKLQotICAgIENvbmZpZ3VyaW5nIGZvciBUUU04MzR4IGJvYXJkLi4uCi0gICAgY3B1X2luaXQuYzogSW4gZnVuY3Rpb24gJ2NwdV9pbml0X2YnOgotICAgIGNwdV9pbml0LmM6MjYyOiB3YXJuaW5nOiBhcnJheSBzdWJzY3JpcHQgaXMgYWJvdmUgYXJyYXkgYm91bmRzCi0gICAgY3B1X2luaXQuYzoyNjM6IHdhcm5pbmc6IGFycmF5IHN1YnNjcmlwdCBpcyBhYm92ZSBhcnJheSBib3VuZHMKLSAgICBjcHVfaW5pdC5jOjI3MDogd2FybmluZzogYXJyYXkgc3Vic2NyaXB0IGlzIGFib3ZlIGFycmF5IGJvdW5kcwotICAgIC4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA4NTAzMDE3NDcyMjhhMzMyN2YyODE1YTg1Mjg0ZDI2YWRlM2RlOTUKLUF1dGhvcjogQW5kcmVhcyBIdWJlciA8YW5kcmVhcy5odWJlckBrZXltaWxlLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTkgMTE6MDY6MzAgMjAwOSArMDIwMAotCi0gICAgVUJJOiBmaXggcmV0dXJuIGNvZGUgaW4gdWJpX3ZvbHVtZV9yZWFkCi0KLSAgICBSZXR1cm4gLUVOT0RFViBpbnN0ZWFkIG9mIDAgd2hlbiB0cnlpbmcgdG8gcmVhZCBmcm9tIGEgbm9uIGV4aXN0aW5nIHZvbHVtZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgSHViZXIgPGFuZHJlYXMuaHViZXJAa2V5bWlsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWMwMTQ4MWRkYzRjZjMwMmM3ZjZkNzYwYjc3NmNhOTQ4MTllYzIxZQotQXV0aG9yOiBHcmFmIFlhbmcgPGdyYWYueWFuZ0BhbmFsb2cuY29tPgotRGF0ZToJVHVlIE1heSAxOSAwNDo0MDowOCAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4IHRpbWVyX2luaXQoKS90aW1lcl9yZXNldCgpCi0KLSAgICBUaGUgdGltZXJfaW5pdCgpIGZ1bmN0aW9uIHdhcyBub3QgdXNpbmcgdGhlIHJpZ2h0IGNzeW5jIGluc3RydWN0aW9uLCBub3IKLSAgICB3YXMgaXQgZG9pbmcgaXQgcmlnaHQgYWZ0ZXIgZGlzYWJsaW5nIHRoZSBjb3JlIHRpbWVyLgotCi0gICAgVGhlIHRpbWVyX3Jlc2V0KCkgZnVuY3Rpb24gd291bGQgcmVzZXQgdGhlIHRpbWVzdGFtcCwgYnV0IG5vdCB0aGUgYWN0dWFsCi0gICAgdGltZXIsIHNvIHRoZXJlIHdhcyBhIGNvbW1vbiBlZGdlIGNhc2Ugd2hlcmUgZ2V0X3RpbWVyKCkgcmV0dXJuIGEganVtcCBvZgotICAgIG9uZSB0aW1lc3RhbXAgKGNvdXBsZSBtaWxsaXNlY29uZHMpIHJpZ2h0IGFmdGVyIHJlc2V0dGluZy4JVGhpcyBjYXVzZWQKLSAgICBtYW55IGZ1bmN0aW9ucyB0byBpbXByb3Blcmx5IHRpbWVvdXQgcmlnaHQgYXdheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWYgWWFuZyA8Z3JhZi55YW5nQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzA2MzI2YzczYmY5MGU0OGE4ZTFjZjg4OTNhZDMxYzU3NTQyM2Y1MAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KLURhdGU6CVNhdCBNYXkgMTYgMDk6MTI6MDkgMjAwOSArMDkwMAotCi0gICAgTUlQUzogbGliX21pcHMvYm9hcmQuYzogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZXMKLQotICAgIFRoaXMgZml4ZXMgdGhlIGZvbGxvd2luZyBidWlsZCB3YXJuaW5nczoKLQotICAgIGJvYXJkLmM6IEluIGZ1bmN0aW9uICdib2FyZF9pbml0X3InOgotICAgIGJvYXJkLmM6MzI4OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2knCi0gICAgYm9hcmQuYzozMjY6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZScKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcG9ib3guY29tPgotCi1jb21taXQgNDdmNmEzNmNjM2YzNDI3Y2M4ZTRmMWQwZjNlNjY3OGJlNmYzMzc2OQotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KLURhdGU6CVNhdCBNYXkgMTYgMDk6MTI6MDkgMjAwOSArMDkwMAotCi0gICAgTUlQUzogTWFrZSBhbGwgZXh0ZXJuLWVkIGZ1bmN0aW9ucyBpbiBiaXRvcHMuaCBzdGF0aWMKLQotICAgIEFsbCB0aGVzZSBmdW5jdGlvbnMgYXJlIGV4cGVjdGVkIHRvIGJlIHN0YXRpYyBpbmxpbmUtZWQuCi0gICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIHRoZSBmb2xsb3dpbmcgYnVpbGQgd2FybmluZ3Mgb24gTUlQUyB0YXJnZXRzOgotCi0gICAgaW5jbHVkZS9hc20vYml0b3BzLmg6IEluIGZ1bmN0aW9uICdleHQyX2ZpbmRfbmV4dF96ZXJvX2JpdCc6Ci0gICAgaW5jbHVkZS9hc20vYml0b3BzLmg6ODYyOiB3YXJuaW5nOiAnX19mc3dhYjMyJyBpcyBzdGF0aWMgYnV0IHVzZWQgaW4gaW5saW5lIGZ1bmN0aW9uICdleHQyX2ZpbmRfbmV4dF96ZXJvX2JpdCcgd2hpY2ggaXMgbm90IHN0YXRpYwotICAgIGluY2x1ZGUvYXNtL2JpdG9wcy5oOjg4NTogd2FybmluZzogJ19fZnN3YWIzMicgaXMgc3RhdGljIGJ1dCB1c2VkIGluIGlubGluZSBmdW5jdGlvbiAnZXh0Ml9maW5kX25leHRfemVyb19iaXQnIHdoaWNoIGlzIG5vdCBzdGF0aWMKLSAgICBpbmNsdWRlL2FzbS9iaXRvcHMuaDo4ODc6IHdhcm5pbmc6ICdfX2Zzd2FiMzInIGlzIHN0YXRpYyBidXQgdXNlZCBpbiBpbmxpbmUgZnVuY3Rpb24gJ2V4dDJfZmluZF9uZXh0X3plcm9fYml0JyB3aGljaCBpcyBub3Qgc3RhdGljCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHBvYm94LmNvbT4KLQotY29tbWl0IDg3NDIzZDc0MGI5MTMyOWI4ZDFkMGI3M2NhZmQ2OTMwOTkzYjU1OGEKLUF1dGhvcjogVGhvbWFzIExhbmdlIDx0aG9tYXNAY29yZWxhdHVzLnNlPgotRGF0ZToJRnJpIEFwciAyNCAxNjoyMjoxNiAyMDA5ICswMjAwCi0KLSAgICBNSVBTOiBJbXBsZW1lbnQgZXRoZXJuZXQgaGFsdCBmb3IgYXUxeDAwCi0KLSAgICBJbXBsZW1lbnQgZXRoZXJuZXQgaGFsdCgpIGJ5IHB1dHRpbmcgTUFDMCBpbiByZXNldC4KLSAgICBJZiB3ZSBkbyBub3QgZG8gdGhpcywgd2Ugd2lsbCBnZXQgbWVtb3J5IGNvcnJ1cHRpb24KLSAgICB3aGVuIGV0aGVybmV0IGZyYW1lcyBhcmUgcmVjZWl2ZWQgZHVyaW5nIGVhcmx5IE9TIGJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgTGFuZ2UgPHRob21hc0Bjb3JlbGF0dXMuc2U+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBwb2JveC5jb20+Ci0KLWNvbW1pdCBhMmUwZmZjZjJkOWEyMmM1ODJhOTNlODRhNGJlZjIwZmQzODc3ZjQ3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgTWF5IDE1IDIzOjI5OjIzIDIwMDkgKzAyMDAKLQotICAgIFByZXBhcmUgdjIwMDkuMDYtcmMyCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGY0MzE3ZWE5MTk0MmY0NGNjMWM0MzMyNzc5MjdiNjE2MThlOWIwYTUKLUF1dGhvcjogRGFuaWVsIE1hY2sgPGRhbmllbEBjYWlhcS5kZT4KLURhdGU6CVR1ZSBNYXkgNSAxMjo0ODoyOSAyMDA5ICswMjAwCi0KLSAgICBBUk06IGZpeCBQWEEgYnVpbGQgYnkgZGVmaW5pbmcgVVAyT0NSCi0KLSAgICBVLUJvb3QgZG9lcyBub3QgY3VycmVudGx5IGJ1aWxkIGZvciBQWEEgcGxhdGZvcm1zIHdpdGggVVNCIHN1cHBvcnQKLSAgICBlbmFibGVkOgotCi0gICAgdXNiLmM6NDY6IGVycm9yOiAnVVAyT0NSJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBNYWNrIDxkYW5pZWxAY2FpYXEuZGU+Ci0gICAgQ2M6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLSAgICBFZGl0ZWQgY29tbWl0IG1lc3NhZ2UuCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGUyNmFkMGVhYmQxMGE4Y2RhNTE5MjBmYmNmZTRkYTViNGNjZjBjOTgKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgMTUgMjI6MzI6NTcgMjAwOSArMDIwMAotCi0gICAgTWlub3IgQ29kaW5nIFN0eWxlIGZpeDsgdXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhZjc1YTQ1ZDIzYjcyYTU5YWM1Y2MwNDI3Njk2YzdmNjM0ZmRjOTRiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgTWF5IDE1IDA5OjI3OjU4IDIwMDkgKzAyMDAKLQotICAgIElERTogYmFpbCBvdXQgb2YgZGV2X3ByaW50KCkgZm9yIHVua25vd24gZGV2aWNlIHR5cGVzCi0KLSAgICBDb21taXQgNTc0YjMxOTUxMiBpbnRyb2R1Y2VkIGEgc3VidGxlIGJ1ZyBieSBtaXhpbmcgYSBsaXN0IG9mIHRlc3RzCi0gICAgZm9yICJkZXZfZGVzYy0+dHlwZSIgYW5kICJkZXZfZGVzYy0+aWZfdHlwZSIgaW50byBvbmUgc3dpdGNoKCksIHdoaWNoCi0gICAgdGhlbiBtb3N0bHkgZGlkIG5vdCB3b3JrIGJlY2F1c2UgImRldl9kZXNjLT50eXBlIiBjYW5ub3QgdGFrZSBhbnkKLSAgICAiSUZfKiIgdHlwZSB2YWx1ZXMuIEEgbGF0ZXIgZml4IGluIGNvbW1pdCA4ZWM2ZTMzMmVhIGNoYW5nZWQgdGhlCi0gICAgc3dpdGNoKCkgaW50byB0ZXN0aW5nICJkZXZfZGVzYy0+aWZfdHlwZSIsIGJ1dCBhdCB0aGlzIHBvaW50IHRoZQotICAgIGluaXRpYWwgdGVzdCBmb3IgdW5rbm93biBkZXZpY2UgdHlwZXMgd2FzIGNvbXBsZXRlbHkgbG9zdCwgd2hpY2gKLSAgICByZXN1bHRlZCBpbiBvdXRwdXQgbGlrZSB0aGF0IGZvciBJREUgcG9ydHMgd2l0aG91dCBkZXZpY2UgYXR0YWNoZWQ6Ci0KLSAgICAgIERldmljZSAxOiBNb2RlbDoJRmlybTogIFNlciM6Ci0JCVR5cGU6ICMgMUYgIwotCQlDYXBhY2l0eTogbm90IGF2YWlsYWJsZQotCi0gICAgVGhpcyBwYXRjaCByZS1pbnRyb2R1Y2VzIHRoZSBtaXNzaW5nIHRlc3QgZm9yIHVua25vd24gZGV2aWNlIHR5cGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENjOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBUZXN0ZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGMyMWY2MmQ4NDgzZmJhYjQ0Y2Q5OGQ5M2ZmMmU5MzU1YTMzMGQyMjUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1heSAxNCAwNzoyNToxMyAyMDA5ICswMjAwCi0KLSAgICA3NHh4Xzd4eDogRml4IHJvdW5kaW5nIHByb2JsZW0gaW4gQ1BVIGZyZXF1ZW5jeSBjYWxjdWxhdGlvbgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gaW4gdGhlIENQVSBmcmVxdWVuY3kgY2FsY3VsYXRpb24uIFdpdGhvdXQgaXQKLSAgICBhIDc5OE1IeiBDUFUgaXMgZGlzcGxheWVkIGFzIDM2OC41MDMgTUh6LiBBbmQgd2l0aCBpdCBpdCdzIDc5OCBNSHouCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzYWQ4YTA1MTdiNzI0NzgyYWIzNmYyYjU1NGE5NGRlNGMwMGMxYWRiCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgTWF5IDEzIDIyOjI0OjEyIDIwMDkgKzAyMDAKLQotICAgIGNvbnNvbGUuaDogcmVtb3ZlIHVudXNlZCBwcm90b3R5cGUgJ2NvbnNvbGVfcmVhbGxvYycKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA4NGJmN2NhNTIyZTk0ZWM0MDJhMTI2NGIwMTk3MWI5MjRiN2UyNjhmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgTWF5IDEzIDIyOjE2OjMxIDIwMDkgKzAyMDAKLQotICAgIGFwaTogcmVtb3ZlIHVuLW5lZWRlZCBpZmRlZiBDT05GSUdfQVBJIGFscmVhZHkgaGFuZGxlIGJ5IHRoZSBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDc5MmEwOWViOWQ1ZDhjNGY3NGI3ZTlmMmU4ODczMTZkNTExYTRlODAKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDEzIDEwOjU0OjEwIDIwMDkgKzAyMDAKLQotICAgIEZpeCBlLW1haWwgYWRkcmVzcyBvZiBHYXJ5IEplbm5lam9obi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgNWUyYzA4YzNhYzkwODA4ZTliZTY0ODU2OTE2YmZkNmRmOTg0ODIzYwotQXV0aG9yOiBFbWlsIE1lZHZlIDxFbWlsaWFuLk1lZHZlQEZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWF5IDEyIDEzOjQ4OjMyIDIwMDkgLTA1MDAKLQotICAgIFJlbW92ZSBpbmxpbmUgcXVhbGlmaWVyIGZyb20gc2hvd19ib290X3Byb2dyZXNzKCkKLQotICAgIFRoZSAnaW5saW5lJyBpcyBjb25mbGljdGluZyB3aXRoIHRoZSBzZW1hbnRpYyBvZiAnd2VhaycgYXR0cmlidXRlIGFuZCB3aXRoIHRoZQotICAgIHdheSB0aGUgc2hvd19ib290X3Byb2dyZXNzKCkgZnVuY3Rpb24gaXMgdXNlZC4KLQotICAgIEFsc28gZ2NjIDQuNCBpcyBjb21wbGFpbmluZyBhYm91dCBpdDoKLQotICAgIG1haW4uYzo1MTogZXJyb3I6IGlubGluZSBmdW5jdGlvbiAnc2hvd19ib290X3Byb2dyZXNzJyBjYW5ub3QgYmUgZGVjbGFyZWQgd2VhawotCi0gICAgU2lnbmVkLW9mZi1ieTogRW1pbCBNZWR2ZSA8RW1pbGlhbi5NZWR2ZUBGcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmU2ZGE0ODM3MzA4YWEzM2Q1MzdhYzNlN2YzNmMyZDY2ZTNkOWEzNgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE1heSAxMiAxNToxNzozNSAyMDA5ICswMjAwCi0KLSAgICBNUEM4MjYwOiBmaXh1cCBkZXZpY2UgdHJlZSBieSBwcm9wZXJ0eSBpbnN0ZWFkIG9mIHBhdGgKLQotICAgIGNwdS9tcGM4MjYwL2NwdS5jIHVzZWQgdG8gdXNlIGRvX2ZpeHVwX2J5X3BhdGhfdTMyKCkgdG8gdXBkYXRlIHRoZQotICAgIGNsb2NrIGZyZXF1ZW5jaWVzIGluIHRoZSBkZXZpY2UgdHJlZSwgdXNpbmcgYSBDUFUgcGF0aAotICAgICIvY3B1cy9PRl9DUFUiLCB3aXRoIE9GX0NQVSBiZWluZCBkZWZpbmVkIGluIHRoZSBib2FyZCBjb25maWcgZmlsZS4KLQotICAgIEhvd2V2ZXIsIHRoaXMgZG9lcyBub3Qgd29yayB3aGVuIG9uZSBib2FyZCBjb25maWcgZmlsZSAoaGVyZToKLSAgICBNUEM4MjYwQURTLmgpIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgZm9yIHNldmVyYWwgZGlmZnJlbnQgQ1BVcyBhbmQKLSAgICB0aGVyZWZvciBjb250YWlucyBhIGdlbmVyaWMgZGVmaW5pdGlvbiBsaWtlICJjcHVAMCIsIGFzIHRoZSBkZXZpY2UKLSAgICB0cmVlcyB0aGF0IHdpbGwgdGhlbiBiZSBsb2FkZWQgd2lsbCBjb250YWluIHNwZWNpZmljIG5hbWVzIGxpa2UKLSAgICAiUG93ZXJQQyw4MjcyQDAiLgotCi0gICAgV2Ugc3dpdGNoIHRvIHVzaW5nIGRvX2ZpeHVwX2J5X3Byb3BfdTMyKCkgaW5zdGVhZCwgc28gd2UgY2FuIHNlYXJjaAotICAgIGZvciBkZXZpY2VfdHlwZT0iY3B1IiwgYXMgaXQgaXMgZG9uZSBpbiBvdGhlciBhcmNoaXRlY3R1cmVzLCB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIENjOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgVGVzdGVkLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDEyYTY3NTMxNTU3MTZlNWMzYzE4MWE4ZjQwZThiMmQzZDY2OWFlZmQKLUF1dGhvcjogUm9oaXQgSGFnYXJndW5kZ2kgPGgucm9oaXRAc2Ftc3VuZy5jb20+Ci1EYXRlOglNb24gTWFyIDkgMTk6NDU6NDYgMjAwOSArMDUzMAotCi0gICAgRml4IE9uZU5BTkQgaXBsIHRvIHJlYWQgQ09ORklHX1NZU19NT05JVE9SX0xFTgotCi0gICAgQWRkIENPTkZJR19TWVNfTU9OSVRPUl9MRU4gbWFjcm8gdG8gYXBvbGxvbiBib2FyZCBjb25maWcuCi0gICAgQ09ORklHX1NZU19NT05JVE9SX0xFTiBkZWZpbmVzIHRoZSBVLUJvb3QgaW1hZ2Ugc2l6ZS4KLSAgICBhbmQgaXMgdXNlZCBieSBPbmVOQU5EIGlwbCB3aGVuIHJlYWRpbmcgVS1Cb290IGltYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9oaXQgSGFnYXJndW5kZ2kgPGgucm9oaXQgYXQgc2Ftc3VuZy5jb20+Ci0gICAgQWNrZWQtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCBjNDA0Y2M1ODg0YjBjODJmZDgyZDc1MWRiZDhlOGIzZjg5MTlhMjNhCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglUdWUgQXByIDI4IDE3OjA0OjUxIDIwMDkgLTA3MDAKLQotICAgIFNjaGVkdWxlIHJlbW92YWwgb2Ygbm9uLUNPTkZJR19ORVRfTVVMVEkgbmV0IGRyaXZlciBBUEkKLQotICAgIFRoaXMgd2lsbCBtYWtlIENPTkZJR19ORVRfTVVMVEkgdGhlIG9ubHkgbmV0IGRyaXZlciBjb25maWd1cmF0aW9uIGFuZAotICAgIHdlJ2xsIGJlIGFibGUgdG8gcmVtb3ZlIHRoaXMgb3B0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDYwYmJjZjBjYzZlNTUwOTVkZDE4NmU1OWE1NTdkNTg0YjliNTZlYjEKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglUdWUgTWF5IDUgMTY6MDQ6MDYgMjAwOSArMDIwMAotCi0gICAgcG93ZXJwYy9pbmthNHgwOiBSZW1vdmUgbGVmdC1vdmVyIGlkZSByZXNldCBjb2RlLgotCi0gICAgVGhlIHBpbiB3aGljaCB3YXMgdXNlZCBpbiBwcmVsaW1pbmFyeSB2ZXJzaW9ucyBvZiB0aGUgYm9hcmQgZm9yIGlkZQotICAgIHJlc2V0IGlzIHJlYWxseSBjb25uZWN0ZWQgdG8gdGhlIHJ0YyBjbG9jay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgZjU3OGEyZGE2NzcwOTUxMjM5YWQ5MWVlOWExODc1ZmRjNzFkYmU0OAotQXV0aG9yOiBNYXJjbyBTdG9ybmVsbGkgPG1hcmNvLnN0b3JuZWxsaUBnbWFpbC5jb20+Ci1EYXRlOglUdWUgQXByIDI4IDE5OjA0OjAyIDIwMDkgKzAyMDAKLQotICAgIEFkZCBpbWxzIHV0aWxpdHkgY29tbWFuZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzLCB1bmRlciB0b29scyBmb2xkZXIsIGEgbmV3IGNvbW1hbmQgY2FsbGVkIGltbHMuIEl0cwotICAgIGdvYWwgaXMgdGhlIHNhbWUgb2YgVUJvb3QncyBpbWxzIGJ1dCBpdCBjYW4gYmUgdXNlZCBhcyBMaW51eCBzaGVsbAotICAgIGNvbW1hbmQuIEl0IHJlYWRzIGZyb20gcmF3IG10ZCBwYXJ0aXRpb24gYW5kIHByaW50cyB0aGUgbGlzdCBvZiB0aGUKLSAgICBzdG9yZWQgaW1hZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyY28gU3Rvcm5lbGxpIDxtYXJjby5zdG9ybmVsbGlAZ21haWwuY29tPgotCi1jb21taXQgZGE5NTQyN2NlNDMxOTA4NzE0YWU1ZTlmNjYzZWU2ZTJiYzNiY2MzMwotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMjggMDg6MzY6MTEgMjAwOSArMDIwMAotCi0gICAgbmV0bG9vcDogdXBkYXRlcyBmb3IgTmV0TG9vcAotCi0gICAgRml4IHNvbWUgaXNzdWVzIGludHJvZHVjZWQgZnJvbSBjb21taXQ6Ci0gICAgMmY3MGM0OWU1Yjk4MTM2MzVhZDczNjY2YWEzMGYzMDRjN2ZkZWRhOQotICAgIHN1Z2dlc3RlZCBieSBNaWtlIEZyeXNpbmdlci4KLQotICAgIC0gYWRkZWQgc29tZSBjb21tZW50IGZvciB0aGUgZW52X2lkIHZhcmlhYmxlIGluIGNvbW1vbl9jbWRfbnZlZGl0LmMKLSAgICAtIG1vdmVkIHNvbWUgdmFyaWFibGVzIGluIGZuIHNjb3BlIGluc3RlYWQgb2YgZmlsZSBzY29wZQotICAgIC0gTmV0SW5pdExvb3Agbm93IHN0YXRpYyB2b2lkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDNjMWQ4OTU0NWRlMTE4MjJmOGI1YWZiNTY0NmE1Nzc1NzYyMGJkOTUKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDI4IDA3OjQ4OjM5IDIwMDkgKzAyMDAKLQotICAgIDgyeHgsIGlkczgyNDc6IGFkZGVkIGlkczgyNDcgYm9hcmQgdG8gTUFLRUFMTCBzY3JpcHQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgODkwYTAxN2E4YTk5NWM5MjFkMWU4ODlkMzYwZThkNjUzOGNlZWNmZQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVRodSBNYXkgNyAxMzowODo1NSAyMDA5ICswMjAwCi0KLSAgICBhcm0vaW14MzFfcGh5Y29yZTogRml4IGJpX2FyY2hfbnVtYmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBDYzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotCi1jb21taXQgZWU0N2JmYWJlZmViMjViZGZjODNmNDllZjNiYWUwZjMyNWQzZTY5ZQotQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOglGcmkgTWF5IDE1IDEwOjIxOjMzIDIwMDkgKzAyMDAKLQotICAgIHJlbW92ZSBteXNlbGYgYXMgcGh5Y29yZS9saXRla2l0IE1haW50YWluZXIKLQotICAgIEkgbmV2ZXIgYWNrZWQgYSBwYXRjaCB0aGF0IGFkZHMgbWUgYXMgcGh5Y29yZSBpLk1YMzEgbWFpbnRhaW5lciBub3Igd2FzCi0gICAgaXQgbWUgd2hvIHB1c2hlZCB0aGUgcGF0Y2hlcywgc28gcmVtb3ZlIG15c2VsZiBmcm9tIHRoZSBtYWludGFpbmVyIGxpc3QKLSAgICBzbyB0aGF0IG90aGVyIHBlb3BsZSBkbyBub3QgbG9uZ2VyIHdhaXQgZm9yIG15IGFjay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLQotY29tbWl0IGM2MzI1NGVmNTYyOGVmZTFjNzdjYjJmZGJhMjA3NTNmOTY2NmY1NWQKLUF1dGhvcjogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+Ci1EYXRlOglUdWUgTWF5IDEyIDEyOjI1OjE0IDIwMDkgKzA0MDAKLQotICAgIEFGRUI5MjYwIG5ldHdvcmsgZml4Ci0KLSAgICBBRkVCOTI2MCB1c2VzIFBBMTAsIFBBMTEgZm9yIEVUWDIgYW5kIEVUWDMuCi0gICAgQWxzbywgZHVlIHRvIGV4dGFybmFsIHB1bGwtdXAgb24gSVJRIGxpbmUsIE1pY3JlbCBQSFkgSUQgaXMgMSBhZnRlciByZXNldCBzZXF1ZW5jZSwKLSAgICBub3QgMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgotCi1jb21taXQgZjhkZGNkNTgyMjFjYWI2M2RkMjVjMjMyNGRkMjAzMjQ4N2Y3NDhiMQotQXV0aG9yOiBHcmFmIFlhbmcgPGdyYWYueWFuZ0BhbmFsb2cuY29tPgotRGF0ZToJVHVlIE1heSA1IDAyOjI2OjI3IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZjUxOGYtZXpicmQ6IHJlc2V0IGV0aGVybmV0IFBIWSBkdXJpbmcgaW5pdAotCi0gICAgV2UgZG9uJ3Qga25vdyB3aGF0IHN0YXRlIHRoZSBldGhlcm5ldCBQSFkgaXMgaW4gd2hlbiBzdGFydGluZyB1cCwgc28gbWFrZQotICAgIHN1cmUgd2Ugc2V0IGl0IHRvIGEgc2FuZSBzdGF0ZS4gIFRoaXMgZml4ZXMgdHJvdWJsZXMgc2VlbiB3aGVuIExpbnV4IGJvb3RzCi0gICAgdXAsIGNvbmZpZ3VyZXMgdGhlIFBIWSBpcyBhIG5vbi1kZWZhdWx0IHN0YXRlLCBhbmQgdGhlbiB0aGUgc3lzdGVtIHJlYm9vdHMKLSAgICBpbnRvIFUtQm9vdCB3aGljaCBwcmV2aW91c2x5IGV4cGVjdGVkIGEgcmVzZXQgc3RhdGUgb25seS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWYgWWFuZyA8Z3JhZi55YW5nQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNTMzMTBiODhlYWEyN2ZiNWNiODMxNDRkMGIyMjM4OTE5MGFkODdhMQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgTWF5IDUgMDE6MzU6NDEgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTI3LWV6a2l0OiBmaXggU1BJIGZsYXNoIGVudiBwYXJhbXMKLQotICAgIFRoZSBCRjUyNy1FWktJVCBzZXR0aW5ncyBmb3Igc3RvcmluZyB0aGUgZW52aXJvbm1lbnQgaW4gU1BJIGZsYXNoIHdhc24ndAotICAgIHVzaW5nIHRoZSBjb3JyZWN0IHNlY3RvciBzZXR0aW5ncyBmb3IgdGhlIFNQSSBmbGFzaCBwYXJ0IHRoYXQgaXMgYWN0dWFsbHkKLSAgICBvbiB0aGUgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmNThiZjgwNGExNDMyNGM2YzkxODZhN2E2NjRmYTIzMjgxNzgwZThiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBBcHIgMjQgMjM6NTQ6MTkgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGF2b2lkIGdldF9zY2xrKCkgd2l0aCBlYXJseSBzZXJpYWwgZGVidWcKLQotICAgIFdoZW4gdGhlIGNsb2NrIGZ1bmN0aW9ucyB3ZXJlIGNoYW5nZWQgdG8gdXNlIGNhY2hlZCB2YWx1ZXMgKGFuZCB0aGVyZWJ5Ci0gICAgYXZvaWRpbmcgZXhwZW5zaXZlIG1hdGggZnVuY3Rpb25zKSwgZWFybHkgc2VyaWFsIGRlYnVnIGJyb2tlIGJlY2F1c2UgdGhlCi0gICAgYmF1ZCBwcm9ncmFtbWluZyBpcyBjYWxsZWQgYmVmb3JlIGV4dGVybmFsIG1lbW9yeSBpcyBhdmFpbGFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAwMjc3OGYyZjFiNGIxYTI4YjQ5MjM2NzQ3N2RiMjdjNThkNDVhZTM1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBBcHIgMjQgMjM6Mzk6NDEgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGZpeCBib290aW5nIHdpdGggb2xkZXIgYm9vdHJvbXMgKG5vIEVWVDEpCi0KLSAgICBXaGVuIGRyb3BwaW5nIGp1bXAgYmxvY2sgc3VwcG9ydCwgdGhlIGFzc3VtcHRpb24gd2FzIHRoYXQgYWxsIGJvb3Ryb21zCi0gICAgc3VwcG9ydGVkIGVudHJ5IHBvaW50IHJlZGlyZWN0aW9uIHZpYSB0aGUgRVZUMSByZWdpc3Rlci4gIFVuZm9ydHVuYXRlbHksCi0gICAgdGhpcyB0dXJuZWQgb3V0IHRvIGJlIGluY29ycmVjdCBmb3IgdGhlIG9sZGVzdCBCbGFja2ZpbiBwYXJ0cyAoQkY1MzMtMC4yCi0gICAgYW5kIG9sZGVyIGFuZCBCRjU2MSkuICBObyBvbmUgcmVhbGx5IG5vdGljZWQgZWFybGllciBiZWNhdXNlIHRoZXNlIHBhcnRzCi0gICAgdXN1YWxseSBhcmUgYm9vdGVkIGJ5IGJ5cGFzc2luZyB0aGUgYm9vdHJvbSBlbnRpcmVseSwgYW5kIG9sZGVyIEJGNTMzCi0gICAgcGFydHMgYXJlIG5vdCBzdXBwb3J0ZWQgYXQgYWxsICh0b28gbWFueSBhbm9tYWxpZXMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYWYyYzM3Mzc4ZjIwMzg1N2Q1ZTZjOTU3ZTc3YTE0YzJkYTViNTlkMgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgQXByIDI0IDIzOjIyOjQ4IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiByZWN1cnNlIHdpdGggZWFybHkgc2VyaWFsIGluaXRjb2RlCi0KLSAgICBNYWtlIHN1cmUgd2UgcmVjdXJzZSB0aHJvdWdoIHNlcmlhbF9wdXRjKCkgcmF0aGVyIHRoYW4gYmFuZyBvbiB0aGUgVUFSVAotICAgIHRyYW5zbWl0IHJlZ2lzdGVyIGRpcmVjdGx5IHRvIGF2b2lkIGhhcmR3YXJlIG92ZXJmbG93cyB3aGVuIHVzaW5nIFxuLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNmI4ZWRmZGUyMmFjYzU3NGI1NTMyZTlmMDg2ZTZhNzI4N2E5YmM3OAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIE1heSAxIDIxOjU5OjEyIDIwMDkgKzAyMDAKLQotICAgIFByZXBhcmUgdjIwMDkuMDYtcmMxCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZiMmJlYjU2MjZhMTQzY2E1MzQ3ZTdkMmM2MDA1YmU5OTM2YzFmYmIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMSAxNTozODowNiAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiByZW1vdmUgbG93bGV2ZWxfaW5pdC5TCi0KLSAgICBsb3dsZXZlbF9pbml0LlMgaXMgbm90IHVzZWQgYW55IG1vcmUgc28gcmVtb3ZlIGl0LgotICAgIEFzIGNvbnNlcXVlbmNlLCB3ZSBhbHNvIGRvbid0IGhhdmUgdG8gZ2VuZXJhdGUgdS1ib290LmxkcwotICAgIGJ1dCBjYW4gdXNlIGEgc3RhdGljIHZlcnNpb24gYXMgYmVmb3JlLgotCi0gICAgVGhpcyBhbHNvIGZpeGVzIHRoZSBvdXQtb2YtdHJlZSBidWlsZCBwcm9ibGVtIGludHJvZHVjZWQKLSAgICB3aXRoIGNvbW1pdCBmMGEyYzdiNCAiYXQ5MTogYWRkIHN1cHBvcnQgZm9yIHRoZSBQTTkyNjMgYm9hcmQiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwZWU3YTMxMDQ3OTY0MGVmMTdjZTJmYzBmNmMxM2NmNzk2MWQyMzMwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgTWF5IDEgMDA6MTY6MTEgMjAwOSArMDIwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRzsgbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZDNhNTEzYzIzYmE0MTAwZDY5ODMxNjFjZGMxZjc0N2RmZDA4N2JiZAotQXV0aG9yOiBNYW5pa2FuZGFuIFBpbGxhaSA8bWFuaS5waWxsYWlAdGkuY29tPgotRGF0ZToJVHVlIEFwciAyMSAxNzoyOTowNSAyMDA5ICswMjAwCi0KLSAgICBPTUFQMzogRml4IHRpbWVyIGhhbmRsaW5nIHRvIDFtcyBhbmQgQ09ORklHX1NZU19IWiB0byAxMDAwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hbmlrYW5kYW4gUGlsbGFpIDxtYW5pLnBpbGxhaUB0aS5jb20+Ci0KLWNvbW1pdCBhYzkxNDAwMzdhODQ2MjljNTU4MzA2NmZmMWExNzczOTZjNDdkODlkCi1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglGcmkgQXByIDE3IDE0OjI3OjU2IDIwMDkgKzAyMDAKLQotICAgIE9NQVAzOiBCZWFnbGU6IFNldCBwaW5tdXggY29uZGl0aW9uYWxseSBmb3IgUmV2IEMgYm9hcmRzCi0KLSAgICBUaGUgQmVhZ2xlIFJldiBDIGJvYXJkcyBwdWxsIFVBUlQyIGZyb20gYW4gYWx0ZXJuYXRlIHNldCBvZiBiYWxscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHN0ZXZlQHNha29tYW4uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCBjMWEwZmQ1ZjI4NjRlOWQzODFmNGEzZGM5NDg5NDJjYWM5NzRlODlhCi1BdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotRGF0ZToJTW9uIEFwciAyNyAxODozMzozMyAyMDA5ICswMjAwCi0KLSAgICB1YmlmczogQlVHOiBCbG9ja3MgY29tbXByZXNzZWQgd2l0aCB6bGliCi0KLSAgICBCbG9ja3MgY29tcHJlc3NlZCB3aXRoIHpsaWIgZG9udCBoYXZlIHRoZSBmdWxsIGd6aXAgaGVhZGVyLgotCi0gICAgV2l0aG91dCB0aGlzIHBhdGNoLCBibG9jayBjb21wcmVzc2VkIHdpdGggemxpYiBjYW5ub3QgYmUgcmVhZGVkIQotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0KLWNvbW1pdCAzNWY2YTk0M2Y3ZDkyMTQ1ZDYwN2MxZDU1ZjVjMmUyZWFlNWJlNjMwCi1BdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotRGF0ZToJTW9uIEFwciAyNyAxODozMzozMiAyMDA5ICswMjAwCi0KLSAgICBsaWJfZ2VuZXJpYzogZ3VuemlwOiBOZXcgZnVuY3Rpb24genVuemlwCi0KLSAgICBTZXBhcmF0ZSBndW56aXAgaW4KLQotICAgIGd1bnppcDogRmluZCB0aGUgZW5kIG9mIHRoZSBoZWFkZXIgYW5kIGNhbGwgenVuemlwLgotICAgIHp1bnppcDogSW5mbGF0ZSBndW56aXAgYmxvY2sgd2l0aG91dCBoZWFkZXIuCi0KLSAgICBVQkkgZnMgYmxvY2tzIGNhbiBiZSBjb21wcmVzZWQgaW4gbHpvLCB6bGliIG9yIG5vLWNvbXByZXNzaW9uLiBUaGUKLSAgICBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIHUtYm9vdCBzdXBwb3J0ZWQgYWxsIHRoZSBjb21wcmVzc2lvbnMgYnV0Ci0gICAgdGhlcmUgd2FzIGEgYnVnIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgemxpYiBibG9ja3MuCi0KLSAgICBVQklGUydzIFpsaWIgYmxvY2tzIGRvIG5vdCBoYXZlIGhlYWRlciBidXQgdGhleSB3ZXJlIGNvbXByZXNzZWQgdXNpbmcKLSAgICBndW56aXAsIGEgZnVuY3Rpb24gdXNlZCB0byBkZWNvbXByZXNzIGd1bnppcCBmaWxlcy9zZWN0b3JzIHdpdGggYQotICAgIGhlYWRlci4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBmdW5jdGlvbiB6dW56aXAgdGhhdCB1bmNvbXByZXNzIGEgemxpYiBibG9jayB3aXRoCi0gICAgbm8gaGVhZGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0KLWNvbW1pdCBhMWU1ZjkzMTg1ZDBkODVhNGIzZmFkM2I2Yzc0M2NkZGNkMzczYjBjCi1BdXRob3I6IERhbmllbCBHb3JzdWxvd3NraSA8RGFuaWVsLkdvcnN1bG93c2tpQGVzZC5ldT4KLURhdGU6CVRodSBBcHIgMjMgMTU6Mzc6MTYgMjAwOSArMDIwMAotCi0gICAgYXQ5MTogZml4ZWQgcGxsYSBjYWxjIHdoZW4gbm8gVVNCIHN1cHBvcnQgaXMgYWN0aXZlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgR29yc3Vsb3dza2kgPERhbmllbC5Hb3JzdWxvd3NraUBlc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDM3OTFhMTE4N2MxNDAxYzMzYzk1MTI1OTVlNmU4OWRiYjQ2MjMwYzUKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJV2VkIEFwciAyMiAwMToxMjowNCAyMDA5ICswMjAwCi0KLSAgICBhcm05MjV0OiBGaXggQ09ORklHX1NZU19IWiB0byAxMDAwCi0KLSAgICBMZXQgQ09ORklHX1NZU19IWiB0byBoYXZlIHZhbHVlIG9mIDEwMDAgZWZmZWN0aXZlbHkgZml4aW5nIGFsbCB1c2VycyBvZgotICAgIGdldF90aW1lci4KLQotICAgIENoYW5nZXMgc2luY2Ugb3JpZ2luYWwgdmVyc2lvbjoKLSAgICAqIFNldCBQVFY9MiAoZGl2aXNvciA4KSBmb3IgYm9hcmRzIHVzaW5nIDEyTUh6IHRpbWVyIGNsb2NrIHNvdXJjZSB0bwotICAgICAgaW1wcm92ZSB0aW1lciByZXNvbHV0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotCi1jb21taXQgNDJiZjRiMjI0ODE0NmFiZGM1OTJiZGUwMDA5YzZlYTQyMDY3ZjQzNwotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJVHVlIEFwciAxNCAyMDoxNToxNyAyMDA5ICswMjAwCi0KLSAgICBPTUFQMzogUmVtb3ZlIGxlZ2FjeSBOQU5EIGRlZmluZXMKLQotICAgIFJlbW92ZSByZW1haW5pbmcgbGVnYWN5IE5BTkQgZGVmaW5lcyBmb3IgQmVhZ2xlLCBFVk0sIE92ZXJvIGFuZCBQYW5kb3JhLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IGNiYTBiNzc4ZGQ1ZjFlYTMyOTU5YjY4MjVjN2YwYTMxNTAxYTk5ZDUKLUF1dGhvcjogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgotRGF0ZToJTW9uIEFwciAyNyAyMToyNzo1NCAyMDA5ICswNTMwCi0KLSAgICBPTUFQMzogUHJpbnQgY29ycmVjdCBzaWxpY29uIHJldmlzaW9uCi0KLSAgICBUaGUgZnVuY3Rpb24gZGlzcGxheV9ib2FyZF9pbmZvKCkgZGlzcGxheXMgaW5jb3JyZWN0Ci0gICAgc2lsaWNvbiByZXZpc2lvbiAtIGJhc2VkIG9uIHRoZSByZXR1cm4gdmFsdWUgZnJvbQotICAgIGZ1bmN0aW9uIGdldF9jcHVfcmV2KCkuCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgotCi1jb21taXQgOTAwMDZlOWIzM2JjZGJmMjQxYjAyOTVkMTg2ZTM2MzQxMzc5MDdhOQotQXV0aG9yOiBTYW5qZWV2IFByZW1pIDxwcmVtaUB0aS5jb20+Ci1EYXRlOglNb24gQXByIDI3IDIxOjI3OjQ0IDIwMDkgKzA1MzAKLQotICAgIE9NQVAzOiBSZW1vdmUgdW51c2VkIGJvYXJkLXR5cGVzCi0KLSAgICBUaGUgYm9hcmQtdHlwZXMgZGVmaW5lZCBpbiBzdHJ1Y3Qgb21hcDNfc3lzaW5mbyBzZWVtIHRvIGJlCi0gICAgdW51c2VkLiBUaGUgZnVuY3Rpb24gZGlzcGxheV9ib2FyZF9pbmZvKCkgaXMgcGFzc2VkCi0gICAgYm9hcmQgdHlwZSBhcyBhbiBhcmd1bWVudDsgd2hpY2ggaXMgaWdub3JlZC4KLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBhbGwgdXNlcyBvZiBib2FyZC10eXBlLCByZWxhdGVkIGRlZmluaXRpb25zCi0gICAgYW5kIGZ1bmN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLQotY29tbWl0IDZhNmI2MmUzYWE0YjM0MGM0ZjhmYzY3YjE0ODdkZGI1NDM2YzY4NGQKLUF1dGhvcjogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgotRGF0ZToJTW9uIEFwciAyNyAyMToyNzoyNyAyMDA5ICswNTMwCi0KLSAgICBPTUFQMzogVXNlIGZ1bmN0aW9ucyBwcmludF9jcHVpbmZvKCkgYW5kIGNoZWNrYm9hcmQoKQotCi0gICAgVXNlIHRoZSBmdW5jdGlvbnMgcHJpbnRfY3B1aW5mbygpIGFuZCBjaGVja2JvYXJkKCkgdG8KLSAgICBkaXNwbGF5IHRoZSBjcHUgYW5kIGJvYXJkIHNwZWNpZmljIGluZm9ybWF0aW9uLgotCi0gICAgVGhlc2UgZnVuY3Rpb25zIHJldXNlIGNvbnRlbnQgZnJvbSB0aGUgZXhpc3RpbmcgZnVuY3Rpb24KLSAgICBkaXNwbGF5X2JvYXJkX2luZm8oKSAtIHdoaWNoIGhhcyBiZWVuIHJlbW92ZWQuCi0KLSAgICBBbHNvLCB1cGRhdGVkIHRoZSBleGlzdGlnIE9NQVAzIGNvbmZpZ3VyYXRpb25zIHRvCi0gICAgZGVmaW5lOgotICAgICAtIENPTkZJR19ESVNQTEFZX0NQVUlORk8KLSAgICAgLSBDT05GSUdfRElTUExBWV9CT0FSRElORk8KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLQotY29tbWl0IGY4ZTJiMzEwN2VlMDBmMjc4MmY4ZWJmNDdlM2YwOWNkYTRlMjM1M2EKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAxOCAxMToxNzozNyAyMDA5ICswMTAwCi0KLSAgICBNVEQ6IENoYW5nZSBjZmktbXRkIHRvIGFjY2VwdCBub24tdW5pZm9ybSBzZWN0b3Igc2l6ZXMKLQotICAgIFdpdGggdGhpcyBwYXRjaCBub24tdW5pZm9ybSBOT1IgRkxBU0ggY2hpcHMgKGNoaXBzIHdpdGggbXVsdGlwbGUgZXJhc2UKLSAgICByZWdpb25zKSBjYW4gYmUgZXhwb3J0ZWQgdmlhIHRoZSBjZmktbXRkIGxheWVyIGFuZCB0aGVyZWZvciB1c2VkIGJ5IFVCSS4KLSAgICBXZSBzZWxlY3QgdGhlIGxhcmdlc3Qgc2VjdG9yIHNpemUgYXMgZXJhc2VzaXplLiBUaGUgY2ZpIGRyaXZlciB3aWxsIG1ha2UKLSAgICBzdXJlIHRoYXQgdGhlIHNtYWxsZXIgc2VjdG9ycyBhcmUgaGFuZGxlZCBjb3JyZWN0bHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzZGNiZTYyOGQ2NmI2NDhlOTU0YmM4MTQ3ZDRmYWZmMjk4MzIwNmQ5Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVRodSBBcHIgMjMgMTI6MzU6MjIgMjAwOSArMDIwMAotCi0gICAgdmlkZW86IGZpeCBidWcgaW4gY2ZiX2NvbnNvbGUuYyBjb2RlCi0KLSAgICBGaXggYnVnIGluIGRyYXdpbmcgbG9uZyB2ZXJzaW9uL2luZm8gc3RyaW5nczoKLSAgICBVLUJvb3QgdmVyc2lvbiBzdHJpbmcgbGlrZQotICAgICJVLUJvb3QgMjAwOS4wMy0wNTY0Ny1nN2M1MWUwNiAoQXByIDIzIDIwMDkgLSAxMjo0MDowMCkgTVBDODNYWCIKLSAgICBpcyBsb25nIGFuZCBkb2Vzbid0IHdyYXAgYXJvdW5kIGNvcnJlY3RseSB3aGlsZSBkcmF3aW5nCi0gICAgYmVzaWRlIHRoZSBsb2dvLiBTdWNoIGxvbmcgc3RyaW5ncyBwYXJ0aWFsbHkgb3ZlcndyaXRlCi0gICAgdGhlIGxvZ28uIFRoaXMgcGF0Y2ggaXMgYW4gYXR0ZW1wdCB0byBmaXggaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA0ZDllYWI4OWIzYjJjMmVkNDMyYjE0ZDM1NWE1NmYyNzRkOGFhYzc1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDI4IDA4OjUwOjMxIDIwMDkgKzAyMDAKLQotICAgIGNtZF9leHQyLmM6IGZpeCBjb21waWxlIHdhcm5pbmdzCi0KLSAgICBHZXQgcmlkIG9mIHRoZXNlIHdhcm5pbmdzOgotCi0gICAgY21kX2V4dDIuYzoyNDc6IHdhcm5pbmc6IGZvcm1hdCAnJWxkJyBleHBlY3RzIHR5cGUgJ2xvbmcgaW50JywgYnV0IGFyZ3VtZW50IDIgaGFzIHR5cGUgJ2ludCcKLSAgICBjbWRfZXh0Mi5jOjI0ODogd2FybmluZzogZm9ybWF0ICclbFgnIGV4cGVjdHMgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgMyBoYXMgdHlwZSAnaW50JwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDI4YWZlMDE2MGY4N2ZmNzQ1NzQxNTBkNzAzMDU1YTk2NWY5MTQyMmEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglNb24gQXByIDI3IDEwOjQ4OjIwIDIwMDkgKzAyMDAKLQotICAgIGlkczgyNDc6IFJlbW92ZSBsZWdhY3kgTkFORCBkZWZpbmVzCi0KLSAgICBiZWNhdXNlIGxlZ2FjeSBOQU5EIHN1cHBvcnQgaXMgZGVwcmVjYXRlZCBjb252ZXJ0aW5nIHRvIGN1cnJlbnQKLSAgICBOQU5EIGludGVyZmFjZS4gIVRoaXMganVzdCBjb21waWxlLCBiZWNhdXNlIEkgaGF2ZSBubyBtb3JlIHRoZQotICAgIGhhcmR3YXJlIHRvIHRlc3QgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGRiZDMzNjE0NDA0YjY1YWE0NDFjNTYyMGMzZGJkNTYwYzQ0NjBjMDkKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglNb24gQXByIDI3IDA5OjEzOjMxIDIwMDkgKzAyMDAKLQotICAgIHViaWZzOiBCVUcgcmVhbHBhdGggc3RyaW5nIG11c3QgYmUgZW5kZWQgd2l0aCBOVUxMCi0KLSAgICBJZiB0aGUgbWVtb3J5IHVzZWQgdG8gY29weSB0aGUgbGlua19tYWtlIGlzICJkaXJ0eSIgdGhlIHN0cmluZyB3b250Ci0gICAgYmUgZW5kZWQgd2l0aCBOVUxMLCB0aHJvd2luZyBvdXQgbXVsdGlwbGUgbWVtb3J5IGJ1Z3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjUzNTFhODc5M2M1MWYzNzg3ZWZiYmNmM2FhMWRmMGFkNTQzYzEyNwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIEFwciAyNCAxNTo1OTo1NiAyMDA5IC0wNTAwCi0KLSAgICBibXBfbG9nbzogQ2hlY2sgcmV0dXJuIHZhbHVlIG9mIGZyZWFkKCkKLQotICAgIEFkZCBiYXNpYyBlcnJvciBoYW5kbGluZyB0byBmcmVhZCgpIGZ1bmN0aW9uIGNhbGxzLiAgVGhpcyBwcmV2ZW50cwotICAgIGNvbXBpbGlsYXRpb24gd2FybmluZ3Mgc3VjaCBhczoKLQotICAgIGJtcF9sb2dvLmM6IEluIGZ1bmN0aW9uIOKAmG1haW7igJk6Ci0gICAgYm1wX2xvZ28uYzo3MTogd2FybmluZzogaWdub3JpbmcgcmV0dXJuIHZhbHVlIG9mIOKAmGZyZWFk4oCZLCBkZWNsYXJlZCB3aXRoCi0gICAgYXR0cmlidXRlIHdhcm5fdW51c2VkX3Jlc3VsdAotICAgIC4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGVlYThiZTg2ZDFjMmI1NzA2NjBkMWY2YzU1Mzg0NWUxMzE2NDIzMWEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBBcHIgMjQgMTU6NTk6NDYgMjAwOSAtMDUwMAotCi0gICAgbmNiOiBDaGVjayByZXR1cm4gdmFsdWUgb2Ygd3JpdGUoKQotCi0gICAgVGhpcyBwcmV2ZW50cyB0aGUgY29tcGlsYXRpb24gd2FybmluZzoKLQotICAgIG5jYi5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Ci0gICAgbmNiLmM6MzI6IHdhcm5pbmc6IGlnbm9yaW5nIHJldHVybiB2YWx1ZSBvZiDigJh3cml0ZeKAmSwgZGVjbGFyZWQgd2l0aAotICAgIGF0dHJpYnV0ZSB3YXJuX3VudXNlZF9yZXN1bHQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBkYmUyOWUzNmE0YzI3NzViNjliNWE2M2IwY2UyYmFjODljMDhlNjkxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBBcHIgMjQgMTU6NTk6MzUgMjAwOSArMDIwMAotCi0gICAgbXRkOiBuYW5kL29uZW5hbmQ6IFJlZ2lzdGVyIG10ZCBkZXZpY2UgdXBvbiBkZXZpY2Ugc2Nhbm5pbmcKLQotICAgIFdpdGggdGhpcyBwYXRjaCB0aGUgTkFORCBhbmQgT25lTkFORCBkZXZpY2VzIGFyZSByZWdpc3RlcmVkIGluIHRoZSBNVEQKLSAgICBzdWJzeXN0ZW0gYW5kIGNhbiB0aGVuIGJlIHJlZmVyZW5jZWQgYnkgdGhlIG10ZGNvcmUgY29kZSAoZS5nLgotICAgIGdldF9tdGRfZGV2aWNlX25tKCkpLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIG5ldyAidWJpIHBhcnQiIGNvbW1hbmQKLSAgICBzeW50YXggd2l0aG91dCB0aGUgZmxhc2ggdHlwZSBwYXJhbWV0ZXIgKG5vcnxuYW5kfG9uZW5hbmQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTBiYjYyZDg1YTA4NTBkYmFkMWZkZDM0MTIzMzc4Njg2MzczZjE2NgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgQXByIDI0IDE1OjU4OjMzIDIwMDkgKzAyMDAKLQotICAgIG10ZDogbmFuZDogSW5jbHVkZSBsaW51eC9tdGQvcGFydGl0aW9ucy5oIGluIG5hbmRfYmFzZS5oCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhpcyBjb21waWxhdGlvbiB3YXJuaW5nIHdoZW4gQ09ORklHX01URF9QQVJUSVRJT05TIGlzCi0gICAgZGVmaW5lZDoKLQotICAgIG5hbmRfYmFzZS5jOiBJbiBmdW5jdGlvbiAnbmFuZF9yZWxlYXNlJzoKLSAgICBuYW5kX2Jhc2UuYzoyOTIyOiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZGVsX210ZF9wYXJ0aXRpb25zJwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmQ1NzllNTA2MDQxM2FmNWE3NDBjYjM5NmRjODdlMWZmMzFiZjVhOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgQXByIDI0IDIwOjI0OjE5IDIwMDkgKzAyMDAKLQotICAgIHViaTogUmVtb3ZlIGZsYXNoIHNlbGVjdGlvbiBwYXJhbWV0ZXIgKG5vcnxuYW5kfG9uZW5hbmQpIGZyb20gInViaSBwYXJ0IgotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBub3cgdW5uZWNlc3NhcnkgZmxhc2ggdHlwZSBwYXJhbWV0ZXIgZnJvbSB0aGUKLSAgICAidWJpIHBhcnQiIGNvbW1hbmQuIEN1cnJlbnRseSB0aGUgdXNlciBoYXMgdG8gZGVmaW5lIHRoZSB0eXBlIG9mIGZsYXNoCi0gICAgaGUgd2lsbCBiZSB1c2luZyBVQkkgb24uIEV4YW1wbGU6Ci0KLSAgICA9PiB1YmkgcGFydCBub3IgcGFydGl0aW9uMQotCi0gICAgV2l0aCB0aGlzIHBhdGNoIHRoaXMgdHlwZSBwYXJhbWV0ZXIgaXMgbm90IG5lZWRlZCBhbnltb3JlLiBUaGUgdXNlciBjYW4KLSAgICBub3cgc2VsZWN0IHRoZSBwYXJ0aXRpb24gZGlyZWN0bHkgd2l0aG91dCB0aGUgZmxhc2ggdHlwZSBwYXJhbXRlci4KLSAgICBFeGFtcGxlOgotCi0gICAgPT4gdWJpIHBhcnQgcGFydGl0aW9uMQotCi0gICAgVGhpcyBicmVha3MgYmFja3dhcmQgY29tcGF0aWJpbGl0eSByaWdodCBub3cgYmVjYXVzZSBvZiB0aGUgY2hhbmdlIGluIHRoZQotICAgIGNvbW1hbmQgc3ludGF4LiBCdXQgVUJJIHN1cHBvcnQgaXMgc3RpbGwgcXVpdGUgZnJlc2ggYW5kIHRoZSBhZHZhbnRhZ2Ugb2YKLSAgICB0aGlzIG5ldyBjb21tYW5kIGlzIHN5bnRheCBiaWcgZW5vdWdoIGZvciB0aGlzIGNoYW5nZS4gQWRkaXRpb25hbGx5IHRoZQotICAgIGNvZGUgaXMgbXVjaCBjbGVhbmVyIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDQzogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDI5NGYxMGNhOWVhODJhMTVlMTM1ZGNiMGZjNjU4MzgyYWIyMDY5NDAKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglUaHUgQXByIDIzIDEzOjE0OjIwIDIwMDkgKzAyMDAKLQotICAgIG1pcHMvdmN0aDogVXNlIGdlbmVyaWMgMTY1NTAgdWFydCBkcml2ZXIKLQotICAgIEFzIHRoZSBjb21tb24gY29kZSBhbHNvIGhhbmRsZXMgYmF1ZHJhdGUgc3dpdGNoaW5nLCB3aGljaCB0aGUgYm9hcmQKLSAgICBzcGVjaWZpYyB2Y3QuYyBkcml2ZXIgZGlkIG5vdCBzdXBwb3J0LCB0aGlzIGlzIG9uZSBvZiB0aGUgcmFyZQotICAgIG9jY2Fzc2lvbnMgd2hlcmUgZGVsZXRpbmcgY29kZSBhY3R1YWxseSBhZGRzIGEgZmVhdHVyZSA6KQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotCi1jb21taXQgMGM4YTg0OTE2YzVkYWNjY2RjNWIyN2I2M2ZjNDYzZTlmM2IwNGYwNwotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglUdWUgQXByIDIxIDAyOjI2OjMxIDIwMDkgKzAyMDAKLQotICAgIFNlcGFyYXRlIG10ZHBhcnRzIGNvbW1hbmQgZnJvbSBqZmZzMgotCi0gICAgT24gVGh1LCBNYXIgMTksIDIwMDkgYXQgMDE6MzA6MzZQTSArMDEwMCwgU3RlZmFuIFJvZXNlIHdyb3RlOgotICAgID4gQ3VycmVudGx5IHRoZSBtdGRwYXJ0cyBjb21tYW5kcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGpmZnMyIGNvbW1hbmQgc3VwcG9ydC4KLSAgICA+IFRoaXMgZG9lc24ndCBtYWtlIHNlbnNlIGFueW1vcmUgc2luY2Ugb3RoZXIgY29tbWFuZHMgKGUuZy4gVUJJKSB1c2UgdGhpcwotICAgID4gaW5mcmFzdHJ1Y3R1cmUgYXMgd2VsbCBub3cuIFRoaXMgcGF0Y2ggc2VwYXJhdGVzIHRoZSBtdGRwYXJ0cyBjb21tYW5kcyBmcm9tCi0gICAgPiB0aGUgamZmczIgY29tbWFuZHMgbWFraW5nIGl0IHBvc3NpYmxlIHRvIG9ubHkgc2VsZWN0IG10ZHBhcnRzIHdoZW4gbm8gSkZGUzIKLSAgICA+IHN1cHBvcnQgaXMgbmVlZGVkLgotCi0gICAgT25lIG1vcmUgbGVmdG92ZXIuLi4gTGV0IG5ib290IGNvbW1hbmQga25vdyBhYm91dCBwYXJ0aXRpb25zIGV2ZW4gaWYgSkZGUzIKLSAgICBzdXBwb3J0IGlzIG5vdCBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2N2MyZTU3YzA4NzUxMzlkYmZjZDZmNDFjNDNlNmFkMGNiMmU0MGM5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDIwIDExOjIyOjEzIDIwMDkgLTA1MDAKLQotICAgIGNtZF9pZGU6IFJlbW92ZSB1bnVzZWQgQW1pZ2FPbmVHM1NFIGNvZGUKLQotICAgIFRoZSBvdXRwdXRfZGF0YV9zaG9ydCgpIGFuZCBpbnB1dF9kYXRhX3Nob3J0KCkgZnVuY3Rpb25zIGZvciB0aGUKLSAgICBBbWlnYU9uZUczU0UgYXJlIHVudXNlZCBhbmQgcmVzdWx0IGluIGNvbXBpbGVyIHdhcm5pbmdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGM5M2MxMDJhY2UwMDc2NGE1NmRiZGY3OGJhYzEzNGEyMzkwNjcyMWUKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBBcHIgMjAgMTE6MjE6NDAgMjAwOSAtMDUwMAotCi0gICAgQW1pZ2FPbmVHM1NFOiBGaXggQ09ORklHX0NNRF9DT05TT0xFIGRlZmluaXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA1NGU4MjJmOTU5MGNjNmM3MDQxMWJkOGNhYmQ0MjIzNmUwN2EyYWE3Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDIwIDExOjA5OjA1IDIwMDkgLTA1MDAKLQotICAgIFJlcGxhY2UgX19hc20gcmVmZXJlbmNlcyB3aXRoIF9fYXNtX18KLQotICAgIF9fYXNtX18gZm9sbG93cyBnY2MncyBkb2N1bWVudGVkIHN5bnRheCBhbmQgaXMgZ2VuZXJhbGx5IG1vcmUgY29tbW9uCi0gICAgdGhhbiBfX2FzbS4gIFRoaXMgY2hhbmdlIGlzIG9ubHkgYXN0aGV0aWMgYW5kIHNob3VsZCBub3QgYWZmZWN0Ci0gICAgZnVuY3Rpb25hbGl0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBmOWExMDliM2FkYzVlODY0NzUzNTM1NzUwMGUyYTM4ZjA1NThiNWMyCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gQXByIDIwIDExOjA4OjQ2IDIwMDkgLTA1MDAKLQotICAgIFJlcGxhY2UgX19hdHRyaWJ1dGUgcmVmZXJlbmNlcyB3aXRoIF9fYXR0cmlidXRlX18KLQotICAgIF9fYXR0cmlidXRlX18gZm9sbG93cyBnY2MncyBkb2N1bWVudGVkIHN5bnRheCBhbmQgaXMgZ2VuZXJhbGx5IG1vcmUKLSAgICBjb21tb24gdGhhbiBfX2F0dHJpYnV0ZS4gIFRoaXMgY2hhbmdlIGlzIG9ubHkgYXN0aGV0aWMgYW5kIHNob3VsZCBub3QKLSAgICBhZmZlY3QgZnVuY3Rpb25hbGl0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAwOGYwNzdkYTkyOThmZjY1Y2M2Zjg1ZjkwZDI3NzAwMDBhMWJlZWU5Ci1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZToJVGh1IEFwciAxNiAxOTo1NTo0OCAyMDA5IC0wNzAwCi0KLSAgICBtdGRwYXJ0IGNvbW1hbmQ6IGFsaWduIG91dHB1dCBjb2x1bW5zCi0KLSAgICBNYWtlIHRoZSBoZWFkZXJzIGluIHRoZSAibXRkcGFydHMiIGNvbW1hbmQgb3V0cHV0IGxpbmUgdXAKLSAgICB3aXRoIHRoZWlyIGNvbHVtbnMgLi4uIHN0cmlrZSB0aGUgZXh0cmEgVEFCIGNoYXJhY3Rlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgMDZmNDFmODI1YzIzMzQ0ZDg4OWQ1NDE5YmI1ZWFlY2ViM2VkMmEwMgotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci1EYXRlOglUaHUgQXByIDE2IDEwOjUxOjAzIDIwMDkgKzA5MDAKLQotICAgIFJlbW92ZSBzYTExMDAuaAotCi0gICAgc2ExMTAwLmggaXMgbm90IHVzZWQgYW55d2hlcmUsIHRoZW4gcmVtb3ZlIGl0LgotCi0gICAgJCBmaW5kIC4gLW5hbWUgJyouaCcgLWVtcHR5IC1wcmludAotICAgIC4vaW5jbHVkZS9zYTExMDAuaAotICAgICQgZ2l0IGdyZXAgJ3NhMTEwMC5oJyAuCi0gICAgJAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgN2QzZDMwYjFiM2ZiZDBhMDdkYjI1NGVhZDk5ZmE2ZmZmNGY0ZDk5MgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDE0IDE3OjUxOjIxIDIwMDkgKzAyMDAKLQotICAgIFVCSUZTOiBSZW1vdmUgdG5jX2NvbW1pdC5jIHdoaWNoIGlzIG5vdCB1c2VkIGluIHRoZSByZWFkLW9ubHkgdmVyc2lvbgotCi0gICAgSSBtaXNzZWQgcmVtb3ZpbmcgdGhpcyBmaWxlIHdoaWxlIGltcGxlbWVudGluZyB0aGUgVUJJRlMgc3VwcG9ydC4gSXQncwotICAgIG5vdCByZWZlcmVuY2VkIGF0IGFsbCwgc28gbGV0J3MgcmVtb3ZlIGl0LiBUaGFua3MgdG8gQXJ0ZW0gQml0eXV0c2tpeQotICAgIGZvciBzcG90dGluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDYzNTZkYWZmNzA4Njc4MjJiZGIyM2NlYTQ5Zjk4ZTY1NDIxYTI1YjgKLUF1dGhvcjogQWRyaWFuIEh1bnRlciA8YWRyaWFuLmh1bnRlckBub2tpYS5jb20+Ci1EYXRlOglUdWUgQXByIDE0IDE3OjUwOjM4IDIwMDkgKzAyMDAKLQotICAgIFVCSUZTOiBmaXggcmVjb3ZlcnkgYnVnCi0KLSAgICBVQklGUyBkaWQgbm90IHJlY292ZXJ5IGluIGEgc2l0dWF0aW9uIGluIHdoaWNoIGl0IGNvdWxkCi0gICAgaGF2ZS4gVGhlIHJlbGV2YW50IGZ1bmN0aW9uIGFzc3VtZWQgdGhlcmUgY291bGQgbm90IGJlCi0gICAgbW9yZSBub2RlcyBpbiBhbiBlcmFzZWJsb2NrIGFmdGVyIGEgY29ycnVwdGVkIG5vZGUsIGJ1dAotICAgIGluIGZhY3QgdGhlIGxhc3QgKE5BTkQpIHBhZ2Ugd3JpdHRlbiBtaWdodCBjb250YWluIGFueXRoaW5nLgotICAgIFRoZSBjb3JyZWN0IGFwcHJvYWNoIGlzIHRvIGNoZWNrIGZvciBlbXB0eSBzcGFjZSAoMHhGRiBieXRlcykKLSAgICBmcm9tIHRoZW4gb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBZHJpYW4gSHVudGVyIDxhZHJpYW4uaHVudGVyQG5va2lhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzNTFmNDBjYWYyZjc4MDZiMmNlZmI5M2UwNzdlYTYxOWI5ZjY4NGU4Ci1BdXRob3I6IEdhbyBHdWFuaHVhIDxCMjI4MjZAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBcHIgMTQgMTQ6Mzc6MzUgMjAwOSArMDgwMAotCi0gICAgZnM6IEZpeCB0aGUgd3JvbmcgdHlwZSBvZiB2YXIKLQotICAgIFRoZSBmaWxlbGVuIHNob3VsZCBiZSBzaWduZWQgdHlwZSwgbm90IHVuc2lnbmVkIHR5cGUuCi0gICAgb3RoZXJ3aXNlLCBUaGUgY29uZGl0aW9uIGFzIGJlbG93IG5ldmVyIHRha2UuCi0JaWYgKGZpbGVsZW4gPCAwKQotCi0gICAgU2lnbmVkLW9mZi1ieTogR2FvIEd1YW5odWEgPEIyMjgyNkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwNWY0NzRjNGQwNDY5YmViYzBiYjA1ZGY2MGEzOWRjN2ZkZjI4ZTYyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDI4IDAwOjI5OjM0IDIwMDkgKzAyMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhZDc0Y2FlOWZmODc5MDcyN2JjODFlZTkxYzZiY2E3ZDUwZGNhNDQ2Ci1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotRGF0ZToJVGh1IEFwciAxNiAyMzoxNToxNSAyMDA5IC0wNzAwCi0KLSAgICBkbTkwMDAgRUVQUk9NIHJlYWRpbmcgYnVnZml4Ci0KLSAgICBNYWtlIHRoZSBVLUJvb3QgZG05MDAwIGRyaXZlciByZWFkIGFkZHJlc3NlcyBmcm9tIEVFUFJPTSBqdXN0Ci0gICAgbGlrZSBMaW51eCBkb2VzIC4uLiByZWFkIHNpeCBieXRlcywgaW5zdGVhZCBvZiByZWFkaW5nIHR3ZWx2ZQotICAgIGJ5dGVzIGFuZCB0aGVuIGRpc2NhcmRpbmcgZXZlcnkgb3RoZXIgb25lLgotCi0gICAgVXNpbmcgdGhlIHJpZ2h0IEV0aGVybmV0IGFkZHJlc3MgaXMgYSBiaWcgd2luLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkNGMwMmU2ZjVkNDk4ODAxMjNlN2Y1ODRiODhmODU3ZmZkODc0MzgxCi1BdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVdlZCBGZWIgMjUgMTQ6Mjc6MjQgMjAwOSArMDkwMAotCi0gICAgcnRsODE2OTogZml4IGNhY2hlIGNvaGVyZW5jeSBwcm9ibGVtCi0KLSAgICBGaXggdGhlIHByb2JsZW0gdGhhdCBjYW5ub3QgYWNjZXNzIGFjdHVhbCBkYXRhIHdoZW4gQ1BVIGRhdGEgY2FjaGUgZW5hYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLSAgICBUZXN0ZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGE4NTY5M2IzYmQ0NDMxYjA1YjdkZjYwOGI2Zjc3MzNjMGY4MGM1M2UKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVR1ZSBBcHIgMjEgMTc6MzA6NTEgMjAwOSArMDIwMAotCi0gICAgT01BUDM6IEZpeCBjaGFuZ2VkIG1tYyBpbml0IGNvbW1hbmQKLQotICAgIEluIHJlY2VudCBVLUJvb3QgbW1jaW5pdCBjaGFuZ2VkIHRvIG1tYyBpbml0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c3RldmVAc2Frb21hbi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDM0Yjc2YTE0ZjY3NmJjNjUwMWMyN2E5NjU2NGU0ZGZiNDc5M2YwMzMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBBcHIgMjYgMjA6Mzk6MjYgMjAwOSArMDIwMAotCi0gICAgbGliX2FybS9ib2FyZC5jOiByZW1vdmUgbWlzbGVhZGluZyAidGVzdC1vbmx5IiBjb21tZW50LgotCi0gICAgRm9yIGEgbG9uZyB0aW1lLCB0aGUgcHJpbnRfY3B1aW5mbygpIGRlY2xhcmF0aW9uIGluIGxpYl9hcm0vYm9hcmQuYwotICAgIGhhZCBiZWVuIG1hcmtlZCBhcyAidGVzdC1vbmx5Iiwgd2hpY2ggaXMgcGxhaW4gd3JvbmcgY29uc2lkZXJpbmcKLSAgICBjdXJyZW50IHVzYWdlLiAgRGVsZXRlIHRoaXMgbWlzbGVhZGluZyBjb21tZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDcyMzljNWRhNWU5MTk3YWNjYjNkZmUzOTViZTQ1MDJjM2I5YmNhOGUKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglTdW4gQXByIDEyIDE1OjQwOjE2IDIwMDkgLTA3MDAKLQotICAgIG1pbm9yIERhVmluY2kgY2xvY2sgY2xlYW51cAotCi0gICAgTWlub3IgY2xlYW51cCB0byBjbG9jay1yZWxhdGVkIGRlZmluZXMgZm9yIERhVmluY2kgRE02NDQ2IGJvYXJkczoKLQotICAgICAtIENPTkZJR19TWVNfQ0xLX0ZSRVEgaXMgdW51c2VkOyByZW1vdmUgaXQuCi0KLSAgICAgLSBDT05GSUdfU1lTX05TMTY1NTBfQ0xLIG11c3QgYmUgdGhlIHNhbWUgYXMgQ09ORklHX1NZU19IWl9DTE9DSwotCi0gICAgT24gRE02NDQ2IGJvdGggb2YgdGhvc2UgcGVyaXBoZXJhbCBjbG9ja3MgYWN0dWFsbHkgY29tZSBmcm9tIHRoZQotICAgIHNhbWUgc291cmNlLCB0aGUgcHJpbWFyeSBvc2NpbGxhdG9yLiAgSGF2aW5nIHRoZW0gdXNlIHRoZSBzYW1lCi0gICAgc3ltYm9sIGF2b2lkcyBidWdzIGluIHRoZSBjbG9uZSduJ21vZGlmeSBkZXZlbG9wbWVudCBjeWNsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgZmZkOGM3MTcwZDU1YzM0YmJmY2ZkMmM4NDA5M2RjYWZmNzk2Y2JmMwotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglNb24gQXByIDYgMTk6NTk6MjkgMjAwOSArMDkwMAotCi0gICAgczNjNjR4eDogcmVtb3ZlIHVubmVjZXNzYXJ5IGRlZmluaXRpb24KLQotICAgIENPTkZJR19TM0M2NDAwIGlzIG11c3QgZGVmaW5lZCBhdCBjb25maWcgaGVhZGVyIGZpbGUKLSAgICBUaGF0IGRlZmluaXRpb24gaXMgdW5uZWNlc3NhcnkgYXQgdGhpcyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCAxNGI5MzA4ZDUxMWI1MzA0MmVmNDc4OTM2ZTM2N2E2NzI4MmRmNjZhCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIEFwciAyNCAwNjo1MDo0NSAyMDA5ICswMjAwCi0KLSAgICA4M3h4OiBzZWFyY2hpbmcgIm11cmFtLWRhdGEiIGJ5IGNvbXBhdGlibGUgcHJvcGVydHkKLQotICAgIGlmIHVzaW5nIENPTkZJR19CT09UQ09VTlRfTElNSVQgZmVhdHVyZSBvbiBhIE1QQzgzNjAgQ1BVCi0gICAgaW4gdGhlIG11cmFtLWRhdGEgbm9kZSwgdGhlIHJlZyBlbnRyeSBuZWVkcyB0byBiZSB1cGRhdGVkLgotICAgIFRoaXMgaXMgZG9uZSBpbiBmZHRfZml4dXBfbXVyYW0oKSwgYnV0IHdlIHNob3VsZCB1c2UKLSAgICB0aGUgY29tcGF0aWJsZSAiZnNsLHFlLW11cmFtLWRhdGEiIGZvciBzZWFyY2hpbmcgdGhlCi0gICAgbm9kZSBpbnN0ZWFkIG9mIHNlYXJjaGluZyB0aGUgbXVyYW0tZGF0YSBub2RlIHdpdGgKLSAgICBhbiBhYnNvbHV0ZSBwYXRoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhlMTUwODg3OTQ4MDc5NDRiMjIxYzExNjA5ZDM2Nzg5ZWZjN2Y3NjcKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVGh1IEFwciAyMyAyMToyOTozNCAyMDA5ICswMjAwCi0KLSAgICBtcGM4M3h4OiBNUEM4MzYwRVJESzogZml4IGVudmlyb25tZW50IG9mZnNldCBjb25maWd1cmF0aW9uIGJ1ZwotCi0gICAgVGhlIHNpemUgb2YgVS1Cb290IGJpbmFyeSBmb3IgTVBDODM2MEVSREsgaW5jcmVhc2VkCi0gICAgKD4gMiBmbGFzaCBzZWN0b3JzIG5vdyksIHNvICdzYXZlZW52JyB3aWxsIHBhcnRpYWxseQotICAgIG92ZXJ3cml0ZSBVLUJvb3QgaW4gZmxhc2ggYW5kIHdpbGwgYnJpY2sgdGhlIGJvYXJkLgotICAgIFRoaXMgcGF0Y2ggbW92ZXMgZW52aXJvbm1lbnQgb2Zmc2V0IHRvIGZvdXJ0aCBmbGFzaAotICAgIHNlY3RvciBhbmQgYWxzbyBmaXhlcyBDT05GSUdfU1lTX01PTklUT1JfTEVOLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzYzE3MmM0ZmRiYmI1ODU4ZmFlMzg0NzhkNjM5OWJlNGExNmJlM2ZjCi1BdXRob3I6IE1pY2hhZWwgWmFpZG1hbiA8bWljaGFlbC56YWlkbWFuQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgNCAwMTo0MzowMCAyMDA5ICswMzAwCi0KLSAgICBOZXRMb29wIGluaXRpYWxpemF0aW9uIGJ1ZwotCi0gICAgVGhlIHBhdGNoIGZpeGVzIHRoZSBidWcgb2YgcGFydGlhbCBpbml0aWFsaXphdGlvbiBvZiBnbG9iYWwgbmV0d29yawotICAgIHBhcmFtZXRlcnMuCi0KLSAgICBVcG9uIHUtYm9vdCdzIHN0YXJ0IHVwIHRoZSBmaXJzdCBwaW5nIGNvbW1hbmQgY2F1c2VzIGEgZmFpbHVyZSBvZiB0aGUKLSAgICBjb25zZXF1ZW50IFRGVFAgY29tbWFuZC4gSXQgaGFwcGVucyBpbiB0aGUgcmVjZW50bHkgYWRkZWQgbWVjaGFuaXNtIG9mCi0gICAgdGhlIE5ldExvb3AgaW5pdGlhbGl6YXRpb24gd2hlcmUgaW5pdGlhbGl6YXRpb24gb2YgZ2xvYmFsIG5ldHdvcmsKLSAgICBwYXJhbWV0ZXJzIGlzIHNlcGFyYXRlZCBpbiB0aGUgTmV0SW5pdExvb3Agcm91dGluZSB3aGljaCBpcyBjYWxsZWQgcGVyCi0gICAgZW52X2lkIGNoYW5nZS4gVGh1cywgcGluZyByZXF1ZXN0IHdpbGwgaW5pdGlhbGl6ZSB0aGUgbmV0d29yayBwYXJhbWV0ZXJzCi0gICAgbmVjZXNzYXJ5IGZvciBwaW5nIG9wZXJhdGlvbiBvbmx5LCBhZnRlcndhcmRzIHRoZSBlbnZfY2hhbmdlZF9pZCB3aWxsIGJlCi0gICAgc2V0IHRvIHRoZSBlbnZfaWQgdGhhdCB3aWxsIHByZXZlbnQgYWxsIGZvbGxvd2luZyBpbml0aWFsaXphdGlvbiByZXF1ZXN0cwotICAgIGZyb20gb3RoZXIgcHJvdG9jb2xzLgotICAgIFRoZSBwcm9ibGVtIGlzIHRoYXQgdGhlIGluaXRpYWxpemVkIGJ5IHBpbmcgc3Vic2V0IG9mIG5ldHdvcmsgcGFyYW1ldGVycwotICAgIGlzIG5vdCBzdWZmaWNpZW50IGZvciBvdGhlciBwcm90b2NvbHMgYW5kIHBhcnRpY3VsYXJseSBmb3IgVEZUUCB3aGljaAotICAgIHJlcXVpcmVzIHRoZSBOZXRTZXJ2ZXJJcCBhbHNvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBaYWlkbWFuIDxtaWNoYWVsLnphaWRtYW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBiMTFmNjY0ZjUyYzI4NTU5OTAxMDdjMThmMjQyMjIzMzc3MTgzNTc1Ci1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXByIDkgMTA6Mjc6MDUgMjAwOSAtMDUwMAotCi0gICAgbmV0OiBmaXggVUxJIDUyNnggbWFjcm8gdXNhZ2UgaW4gbmV0ZGV2LmgKLQotICAgIENoYW5nZSBuZXRkZXYuaCB0byB1c2UgQ09ORklHX1VMSTUyNlggaW5zdGVhZCBvZiBDT05GSUdfVUxJNTI2LiAgQ09ORklHX1VMSTUyNlgKLSAgICBpcyB1c2VkIGV2ZXJ5d2hlcmUgZWxzZSwgc28gdGhhdCdzIHRoZSBjb3JyZWN0IG1hY3JvIG5hbWUuCVdpdGhvdXQgdGhpcyBmaXgsCi0gICAgRXRoZXJuZXQgd2lsbCBub3Qgd29yayBvbiB0aGUgRnJlZXNjYWxlIE1QQzg2MTAgSFBDRC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDdlZTM4YzA0NGNhNTA0MWQzMzc4ZDY1MDc1ODBlYTRlYzM0NGFmOTYKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRicm93bmVsbEB1c2Vycy5zb3VyY2Vmb3JnZS5uZXQ+Ci1EYXRlOglTdW4gQXByIDEyIDE1OjM4OjA2IDIwMDkgLTA3MDAKLQotICAgIGZpeCBEYVZpbmNpIE5TMTY1NTBfUkVHX1NJWkUgcmVncmVzc2lvbgotCi0gICAgVXBkYXRlIHRoZSBEYVZpbmNpIERNNjQ0NiBib2FyZHMgdG8gdXNlIHRoZSBuZXcgY29udmVudGlvbgotICAgIGZvciBDT05GSUdfU1lTX05TMTY1NTBfUkVHX1NJWkUgLi4uIHRoZSBzaXplIGhhc24ndCBjaGFuZ2VkCi0gICAgZnJvbSB0aGUgb3JpZ2luYWwgNCBieXRlcywgYnV0IHRoZXNlIGNoaXBzIGFyZSBsaXR0bGUtZW5kaWFuLgotCi0gICAgKFJlc29sdmVzIGEgcmVncmVzc2lvbiBhZGRlZCByZWNlbnRseSBieSB0aGUgaW5jbHVkZS9uczE2NTUwLmgKLSAgICBwYXRjaCB0byAiVW5pZnkgc3RydWN0dXJlIGRlY2xhcmF0aW9uIGZvciByZWdpc3RlcnMiLiAgVGhlIGNvZGUKLSAgICBwcmV2aW91c2x5IHdvcmtlZCBqdXN0IGZpbmUgYmVjYXVzZSB0aGUgcmVnaXN0ZXJzIHdlcmUgYWNjZXNzZWQKLSAgICBhcyBob3N0LWVuZGlhbiB3b3Jkcywgbm90IGFzIGJ5dGVzLikKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgZGZjOTllMTQzZmNhNDRhNDkyOTE4YWM2Y2YzZjc2ZWU5YzI0NzNhOQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gQXByIDEyIDIyOjI5OjIwIDIwMDkgLTA0MDAKLQotICAgIGNtZF9uYW5kOiBkcm9wIGR1cGxpY2F0ZSBOVUxMIHB0ciBjaGVjawotCi0gICAgVGhlIGZpcnN0IGlmIHN0YXRlbWVudCBjaGVja3MgZm9yIE5VTEwgcHRycywgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBjaGVjawotICAgIGl0IGFnYWluIGluIGxhdGVyIGVsc2UgY2FzZXMgKHN1Y2ggYXMgLm9vYikuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzczMmNlZjJlZWI0ZTMzOWNmY2Q4NTUzZmFiNzczYWY3M2EyMDgwNQotQXV0aG9yOiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLURhdGU6CU1vbiBBcHIgMTMgMDg6MDM6MzggMjAwOSAtMDcwMAotCi0gICAgQ01EX1VCSSAhPSBNVERfUEFSVElUSU9OUwotCi0gICAgRml4IGRlcGVuZGVuY3kgZ29vZmFnZTogIGl0IHNob3VsZCBjZXJ0YWlubHkgYmUgcG9zc2libGUgdG8gaGF2ZSB0aGUKLSAgICBwYXJ0aXRpb24gc3VwcG9ydCB3aXRob3V0IGJyaW5naW5nIGluIFVCSSBjb21tYW5kcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZWJmZjM2NWViNjMwOTNjYTM1YjY4NzMxNjAwMjUzNWM2YTE4ODIwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUaHUgQXByIDE2IDIxOjMwOjQ4IDIwMDkgKzAyMDAKLQotICAgIGF0OTFzYW05L2F0OTFjYXA6IGZpeCBDT05GSUdfU1lTX0haIHRvIDEwMDAKLQotICAgIFRoZSB0aW1lciBoYXMgYmVlbiByZXdyb3RlIHdpdGggYSBwcmVjaXNpb24gYXQgfjAsMTglCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFRlc3RlZC1ieTogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+Ci0gICAgVGVzdGVkLWJ5OiBFcmljIEJFTkFSRCA8ZWJlbmFyZEBmcmVlLmZyPgotCi1jb21taXQgZjBhMmM3YjRiNjRlYWNkMDZiYjI3Mjg1NmJjYzA1NmJlODcxOWY1YQotQXV0aG9yOiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgotRGF0ZToJVGh1IEFwciAxNiAyMTozMDo0OCAyMDA5ICswMjAwCi0KLSAgICBhdDkxOiBhZGQgc3VwcG9ydCBmb3IgdGhlIFBNOTI2MyBib2FyZCBvZiBSb25ldGl4IEdtYkgKLQotICAgIFRoZSBQTTkyNjMgYm9hcmQgaXMgYmFzZWQgb24gdGhlIEFUOTFTQU05MjYzLUVLIGJvYXJkLgotCi0gICAgSGVyZSBpcyB0aGUgcGFnZSBvbiBSb25ldGl4IHdlYnNpdGU6Ci0gICAgaHR0cDovL3d3dy5yb25ldGl4LmF0L3N0YXJ0ZXJfa2l0XzkyNjMuaHRtbAotCi0gICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZGMzOWFlOTUxM2MzMmRmZWI5ZTAxOGRjMGQyMmM2NDg0NTE0ZmVmYgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IEFwciAxNiAyMTozMDo0NCAyMDA5ICswMjAwCi0KLSAgICBhdDkxc2FtOS9hdDkxY2FwOiBpbXByb3ZlIGNsb2NrIGZyYW1ld29yawotCi0gICAgY2FsY3VsYXRlIGR5bmFtaWNhbGx5IHRoZSBjbG9jayByYXRlIGFuZCBwbGxiIHNldHRpbmcgZm9yIHVzYgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGRkN2MzMDIwOTllZjU1OTAwNjliZGJmMjkyYWFhODIzMGNkNTlkZTcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxNSAxNDowODo0OCAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IERpc2FibGUgUE9TVCBtZW1vcnkgdGVzdCBvbiBOQU5ELWJvb3RpbmcgS2lsYXVlYQotCi0gICAgRG9uJ3QgcnVuIHRoZSBtZW1vcnkgUE9TVCBvbiB0aGUgTkFORC1ib290aW5nIHZlcnNpb24uIEl0IHdpbGwKLSAgICBvdmVyd3JpdGUgcGFydCBvZiB0aGUgVS1Cb290IGltYWdlIHdoaWNoIGlzIGFscmVhZHkgbG9hZGVkIGZyb20gTkFORAotICAgIHRvIFNEUkFNLiBXZSB3ZXJlIGp1c3QgbHVja3kgdGhhdCBpdCBib290ZWQgYXQgYWxsIHdpdGggdGhpcyBTRFJBTQotICAgIHRlc3QgZW5hYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDlhOTI5MTcwYmU4OWIyN2JjZTY3NzUwNGRhMjdlODg2MDBjMDZjNDkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxNSAxNDowNjoyNiAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IERpc2FibGUgUE9TVCBtZW1vcnkgdGVzdCBvbiBOQU5ELWJvb3RpbmcgU2VxdW9pYQotCi0gICAgRG9uJ3QgcnVuIHRoZSBtZW1vcnkgUE9TVCBvbiB0aGUgTkFORC1ib290aW5nIHZlcnNpb24uIEl0IHdpbGwKLSAgICBvdmVyd3JpdGUgcGFydCBvZiB0aGUgVS1Cb290IGltYWdlIHdoaWNoIGlzIGFscmVhZHkgbG9hZGVkIGZyb20gTkFORAotICAgIHRvIFNEUkFNLiBXZSB3ZXJlIGp1c3QgbHVja3kgdGhhdCBpdCBib290ZWQgYXQgYWxsIHdpdGggdGhpcyBTRFJBTQotICAgIHRlc3QgZW5hYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE3YzFiMGU4OWI4YmU3ZDkwZjYwNWViMTlhZjkyMThjNjI3NWJmYjMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxNSAxMTozMjo1MyAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSB1bnVzZWQgY29kZSBmb3IgU2VxdW9pYSBOQU5EIGJvb3RpbmcgdmVyc2lvbgotCi0gICAgVGhlIGN1cnJlbnQgZGVmaW5lIG9mIGdldF9idXNfZnJlcSgpIGluIHRoZSBDT05GSUdfTkFORF9TUEwgI2lmZGVmIGlzIG5vdAotICAgIHVzZWQgYXQgYWxsLiBUaGlzIHBhdGNoIGNoYW5nZXMgaXQncyBkZWZpbmUgdG8gdGhlIGN1cnJlbnRseSB1c2VkIHZhbHVlIG9mCi0gICAgMTMzMzMzMzMzIGFuZCByZW1vdmVzIHRoZSB1bm5lY2Vzc2FyeSBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2Y5NDA5ODg1Y2JlMDE0MDViYWQ3Njc5MGU5OWY4YWRmMzM1MWY0ZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDE1IDEwOjUwOjQ4IDIwMDkgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkICJib290aW5nIGZyb20gTkFORCIgdG8gNHh4IE5BTkQtYm9vdGluZyB0YXJnZXRzCi0KLSAgICBUaGlzIGFkZGl0aW9uYWwgdGV4dCBpbiB0aGUgYm9vdHVwIGxvZyBoZWxwcyB0byBzZWUgaWYgdGhlIGJvYXJkIGlzCi0gICAgY29uZmlndXJlZCBmb3IgTkFORC1ib290aW5nLiBFc3BlY2lhbGx5IGhlbHBmdWwgZm9yIGJvYXJkcyB0aGF0IGNhbgotICAgIGJvb3QgZnJvbSBOT1IgYW5kIE5BTkQgKGUuZy4gbW9zdCBvZiB0aGUgQU1DQyBldmFsIGJvYXJkcykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1MTMyMTA2YTI3YjhmYjMwMjY3Nzg1MmIyNmZmZDMxOWI0MGQxN2UyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgOCAxMDozNjoyMiAyMDA5ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeHVwIGNoaXAtc2VsZWN0cyBpbiBkdGIgZm9yIE5BTkQtYm9vdGluZyBTZXF1b2lhCi0KLSAgICBDdXJyZW50bHkgdGhlIE5PUiAmIE5BTkQgc3VwcG9ydCBpbiBMaW51eCBvbmx5IHdvcmtzIGZvciB0aGUgInN0YW5kYXJkIgotICAgIFNlcXVvaWEsIHRoZSB2ZXJzaW9uIGJvb3RpbmcgZm9yIE5PUiBmbGFzaC4gVGhlIE5BTkQtYm9vdGluZyB2ZXJzaW9uCi0gICAgaGFzIHRoZSBjaGlwLXNlbGVjdHMgc3dhcHBlZC4gSGVyZSB0aGUgY2hpcC1zZWxlY3QgbWFwcGluZ3M6Ci0KLSAgICAiU3RhbmRhcmQiIE5PUi1ib290aW5nIHZlcnNpb246Ci0gICAgQ1MwCU5PUgotICAgIENTMwlOQU5ECi0KLSAgICBOQU5ELWJvb3RpbmcgdmVyc2lvbjoKLSAgICBDUzAJTkFORAotICAgIENTMwlOT1IKLQotICAgIFdpdGggdGhpcyBwYXRoIHRoZSBkdGIgZ2V0cyBmaXhlZC11cCwgc28gdGhhdCB0aGUgY29ycmVjdCBjaGlwLXNlbGVjdAotICAgIG51bWJlcnMgYXJlIHBhdGNoZWQgaW4gdGhlIGR0YiBlbmFibGluZyBjb3JyZWN0IE5PUiAmIE5BTkQgc3VwcG9ydAotICAgIGluIExpbnV4IG9uIHRoZSBOQU5ELWJvb3RpbmcgU2VxdW9pYSB2ZXJzaW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYWFkNGVjYTRiYThkNTk3NzQ3MTk5ZDhhZjcyMzQyNjY4MTU1N2RkYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgQXByIDQgMDk6MTA6MjcgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGF1ZGl0IFVBUlQgZm9yIGFsbCBrbm93biBhbm9tYWxpZXMKLQotICAgIFRoZXJlIGlzIG5vIGNvZGUgY2hhbmdlIGhlcmUsIGp1c3QgbmV3IGNvbW1lbnRzLCBidXQgdGhpcyBrZWVwcyBtZSBmcm9tCi0gICAgaGF2aW5nIHRvIGRvIGFub3RoZXIgYXVkaXQgZnJvbSBzY3JhdGNoIGluIHRoZSBmdXR1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4ZWY5MjlhZmE0M2M3N2M5NTczY2FhNTdjNmUxN2E5N2EzMzc3NWMwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBBcHIgNCAwODo0MDoxMyAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYWRkIGNoZWNrIGZvciBhbm9tYWx5IDA1MDAwMzYyCi0KLSAgICBERVNDUklQVElPTjoKLSAgICBUaGUgY29sdW1uIGFkZHJlc3Mgd2lkdGggc2V0dGluZ3MgZm9yIGJhbmtzIDIgYW5kIDMgYXJlIG1pc2Nvbm5lY3RlZCBpbgotICAgIHRoZSBTRFJBTSBjb250cm9sbGVyLiAgQWNjZXNzZXMgdG8gYmFuayAyIHdpbGwgcmVzdWx0IGluIGFuIGVycm9yIGlmIHRoZQotICAgIENvbHVtbiBBZGRyZXNzIFdpZHRoIGZvciBiYW5rIDMgKEVCM0NBVyApIGlzIG5vdCBzZXQgdG8gYmUgdGhlIHNhbWUgYXMKLSAgICB0aGF0IG9mIGJhbmsgMi4KLQotICAgIFdPUktBUk9VTkQ6Ci0gICAgSWYgdXNpbmcgYmFuayAyLCBtYWtlIHN1cmUgdGhhdCBiYW5rcyAyIGFuZCAzIGhhdmUgdGhlIHNhbWUgY29sdW1uIGFkZHJlc3MKLSAgICB3aWR0aCBzZXR0aW5ncyBpbiB0aGUgRUJJVV9TREJDVEwgcmVnaXN0ZXIuICBUaGlzIG11c3QgYmUgdGhlIGNhc2UKLSAgICByZWdhcmRsZXNzIG9mIHdoZXRoZXIgb3Igbm90IGJhbmsgMyBpcyBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzJlMDc0NDlmNTQ2ZmIzNzUyODljZGFjMWE2MDhmZGMyMDM1Nzg3MwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgQXByIDQgMDg6Mjk6NTUgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFkZCBjb21tZW50IGFib3V0IGFub21hbHkgMDUwMDA0MzAgYXZvaWRhbmNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0OGFiMTUwOTI1NGE0YzE3NWU0ZjY1YzQ3OGE5Nzg5MjhmZmUwOWVjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBBcHIgNCAwODoxMDoyMiAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYWRkIHdvcmthcm91bmQgZm9yIGFub21hbHkgMDUwMDAyNDIKLQotICAgIERFU0NSSVBUSU9OOgotICAgIElmIHRoZSBERiBiaXQgaXMgc2V0IHByaW9yIHRvIGEgaGFyZHdhcmUgcmVzZXQsIHRoZSBQTEwgd2lsbCBjb250aW51ZSB0bwotICAgIGRpdmlkZSBDTEtJTiBieSAyIGFmdGVyIHRoZSBoYXJkd2FyZSByZXNldCwgYnV0IHRoZSBERiBiaXQgaXRzZWxmIHdpbGwgYmUKLSAgICBjbGVhcmVkIGluIHRoZSBQTExfQ1RMIHJlZ2lzdGVyLgotCi0gICAgV09SS0FST1VORDoKLSAgICBSZXByb2dyYW0gdGhlIFBMTCB3aXRoIERGIGNsZWFyZWQgaWYgdGhlIGRlc2lyZSBpcyB0byBub3QgZGl2aWRlIENMS0lOIGJ5Ci0gICAgMiBhZnRlciByZXNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGNlMWZlNGJhNmJiOWRmN2M1NzM1MTQzNmZhMTdkMWFmOGJiZTc5MTYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IEFwciA0IDA4OjA5OjI0IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBhZGQgd29ya2Fyb3VuZCBmb3IgYW5vbWFseSAwNTAwMDE3MQotCi0gICAgREVTQ1JJUFRJT046Ci0gICAgVGhlIEJvb3QgUk9NIGlzIGV4ZWN1dGVkIGF0IHBvd2VyIHVwL3Jlc2V0IGFuZCBjaGFuZ2VzIHRoZSB2YWx1ZSBvZiB0aGUKLSAgICBTSUNBX0lXUiByZWdpc3RlcnMgZnJvbSB0aGVpciBkZWZhdWx0IHJlc2V0IHZhbHVlIG9mIDB4RkZGRiwgYnV0IGRvZXMgbm90Ci0gICAgcmVzdG9yZSB0aGVtLgotCi0gICAgV09SS0FST1VORDoKLSAgICBVc2VyIGNvZGUgc2hvdWxkIG5vdCByZWx5IG9uIHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZXNlIHJlZ2lzdGVycy4JU2V0Ci0gICAgdGhlIGRlc2lyZWQgdmFsdWVzIGV4cGxpY2l0bHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1MWVlNmUwNTdmN2E5MjBlMmExMjVjZDlmOTg1ZDEwZjYyNWUzNTVmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBBcHIgNCAwODoyMjozNiAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdXBkYXRlIGFub21hbHkgc2hlZXRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBhMzQzYmE4N2VhMDMyMGNhMGE0ZWNmYTJjNDJjZDlkNGYxODg4M2RmCi1BdXRob3I6IEdyYWYgWWFuZyA8Z3JhZi55YW5nQGFuYWxvZy5jb20+Ci1EYXRlOglTYXQgQXByIDQgMDc6NDU6NTcgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IG5hbmQ6IGZsdXNoIHBlcmlwaGVyYWwgYmVmb3JlIHBvbGxpbmcgaXQKLQotICAgIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBkYXRhIHdyaXR0ZW4gdG8gdGhlIG5hbmQgZmxhc2ggY29udHJvbGxlciBtYWtlcwotICAgIGl0IHRoZXJlIGJlZm9yZSB3ZSBzdGFydCBwb2xsaW5nIGl0cyBzdGF0dXMgcmVnaXN0ZXIuICBPdGhlcndpc2UsIHdlIG1heQotICAgIGdldCBzdGFsZSBkYXRhIGFuZCByZXR1cm4gYmVmb3JlIHRoZSBjb250cm9sbGVyIGlzIGFjdHVhbGx5IHJlYWR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZiBZYW5nIDxncmFmLnlhbmdAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2NjYmZiMjVmNDhhZjc4ZTcwOTJhYzc1ZjMxMTVlOTI0ZTc2Yzc0OAotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVN1biBBcHIgNSAxMTo0MzoyOCAyMDA5ICswMjAwCi0KLSAgICBTdXBwb3J0IGZvciBQWEEyN1ggVURDLgotCi0JVGhpcyBQYXRjaCBhZGRzIFN1cHBvcnQgZm9yIFBYQTI3WCBVREMuCi0JKFJlYmFzZWQgdG8gZHJpdmVycy91c2IgcmVvcmdhbmlzYXRpb24pCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBLdXRhbCA8dml2ZWsua3V0YWxAYXppbmdvLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDI3MzFiOWE4NjY4NTE5MGQyNmIxODgzZjI3YWZkYTVhYzhlMWEzMTMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBBcHIgMyAxMjo0Njo1OCAyMDA5ICswMjAwCi0KLSAgICBkcml2ZXJzL3VzYjogcmVnb3JnYW5pc2F0aW9uCi0KLSAgICBtb3ZlIHRvIGxpbnV4IHVzYiBkcml2ZXIgb3JnYW5pc2F0aW9uCi0KLSAgICBhcyBmb2xsb3dpbmcKLQotICAgIGRyaXZlcnMvdXNiL2dhZGdldAotICAgIGRyaXZlcnMvdXNiL2hvc3QKLSAgICBkcml2ZXJzL3VzYi9tdXNiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZDA0MzcxYTExNmQxMDJlNTg3YmE3YWE0YzMyOWI0NDFjZGJlYTNmNAotQXV0aG9yOiBUb2RvciBJIE1vbGxvdiA8dG1vbGxvdkB1Y3NkLmVkdT4KLURhdGU6CVNhdCBBcHIgNCAwNjo1MzowNiAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2Zpbjogc3BpOiBtYWtlIGNzIGRlYXNzZXJ0IGZ1bmN0aW9uIGRldGVybWluaXN0aWMKLQotICAgIEJsYWNrZmluIFNQSSBkcml2ZXIgd2FzIG5vdCBkcml2aW5nIHRoZSBTUEkgY2hpcC1zZWxlY3QgaGlnaCBiZWZvcmUKLSAgICBwdXR0aW5nIHRoZSBjaGlwLXNlbGVjdCBzaWduYWxzIGludG8gdHJpLXN0YXRlIG1vZGUuICBUaGlzIGlzIHByb2JhYmx5Ci0gICAgc29tZXRoaW5nIHRoYXQgc2xpcHBlZCBieSB1bm5vdGljZWQgaW4gbW9zdCBkZXNpZ25zLiAgSWYgdGhlIHNpZ25hbHMgYXJlCi0gICAgcHV0IGRpcmVjdGx5IGludG8gYSB0cmktc3RhdGUgbW9kZSwgdGhlbiB0aGUgYm9hcmQgaXMgcmVseWluZyBvbiB0aGUKLSAgICBwdWxsLXVwIHJlc2lzdG9ycyB0byBwdWxsIHVwIHRoZSBjaGlwLXNlbGVjdCBiZWZvcmUgdGhlIG5leHQgdHJhbnNhY3Rpb24uCi0gICAgTW9zdCBvZiB0aGUgdGltZSB0aGlzIGlzIGZpbmUsIGV4Y2VwdCB3aGVuIHlvdSBoYXZlIHR3byB0cmFuc2FjdGlvbnMgdGhhdAotICAgIGZvbGxvdyBlYWNoIG90aGVyIHZlcnkgY2xvc2VseSwgc3VjaCBhcyB0aGUgZmxhc2ggZXJhc2UgYW5kIHJlYWQgc3RhdHVzCi0gICAgcmVnaXN0ZXIgY29tbWFuZHMuCUluIHRoaXMgY2FzZSBJIHdhcyBzZWVpbmcgYSA1MDBucyBzZXBhcmF0aW9uIGJldHdlZW4KLSAgICB0aGUgdHJhbnNhY3Rpb25zLiAgSW4gbXkgc2V0dXAsIHdpdGggYSAxMGtPaG0gcHVsbC11cCwgaXQgd291bGQgbWVldAotICAgIHRpbWluZyBzcGVjIGFib3V0IGhhbGYgdGhlIHRpbWUgYW5kIHJlc3VsdGVkIGluIGludGVybWl0dGVudCBlcnJvcnMuICAoQQotICAgIHN0cm9uZ2VyIHB1bGwgdXAgd291bGQgZml4IHRoaXMsIGJ1dCBvdXIgZGVzaWduIGlzIHRhcmdldGVkIGZvciBsb3cgcG93ZXIKLSAgICBjb25zdW1wdGlvbiBhbmQgYSAzLjNrT2htIEAgMy4zdiBpcyAzLjNtVyBvZiBuZWVkbGVzcyBwb3dlciBjb25zdW1wdGlvbi4pCi0gICAgSSBtb2RpZmllZCB0aGUgc3BpX2NzX2RlYWN0aXZhdGUoKSBmdW5jdGlvbiBpbiBiZmluX3NwaS5jIHRvIGRyaXZlIHRoZQotICAgIGNoaXAtc2VsZWN0cyBoaWdoIGJlZm9yZSBwdXR0aW5nIHRoZW0gaW50byB0cmktc3RhdGUuICBGb3IgbWUsIHRoaXMKLSAgICByZXN1bHRlZCBpbiBhIHJpc2UgdGltZSBvZiA1bnMgaW5zdGVhZCBvZiB0aGUgcHJldmlvdXMgcmlzZSB0aW1lIG9mIGFib3V0Ci0gICAgMXVzLCBhbmQgZnVsbHkgc2F0aXNmaWVkIHRoZSB0aW1pbmcgc3BlYyBvZiB0aGUgY2hpcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvZG9yIEkgTW9sbG92IDx0bW9sbG92QHVjc2QuZWR1PgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGM2ZmFkYjljNzNhNmEzZTBjN2YyMDY5NmU5NzgzMDRhNTkzYThkMmQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBEZWMgMTMgMjE6MDg6MDUgMjAwOCArMDEwMAotCi0gICAgaW50ZWdyYXRvcmFwOiBmaXggUENJIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxYzM5NzUwOGM4MzZkZmNiMDFmYjI0NzFjNzFkZTA3MjcwNTFmMTE3Ci1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglNb24gTWFyIDMwIDIxOjE1OjIzIDIwMDkgKzAyMDAKLQotICAgIE9NQVAzOiBVcGRhdGUgT3Zlcm8gcGluIG11eCBmb3IgbmV3IGV4cGFuc2lvbiBib2FyZAotCi0gICAgQSBuZXcgT3Zlcm8gZXhwYW5zaW9uIGJvYXJkIHVzZXMgR1BJTyAxNCwgMjEsIDIyIGFuZCAyMyBmb3IgTEVEJ3MgYW5kCi0gICAgc3dpdGNoZXMuIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcGlubXV4IGNvbmZpZ3VyYXRpb24gZm9yIHRob3NlIHBpbnMuCi0gICAgVGhleSB3ZXJlIHByZXZpb3VzbHkgc2V0IHVwIGZvciB1bnVzZWQgTU1DM19EQVQ0LTcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBTYWtvbWFuIDxzdGV2ZUBzYWtvbWFuLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgYWIyOTgyMzE1MTg2NzViMzc4NGFlYTg4ZWU5Yjk3ODQzOGY5OWU2MwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEFwciA1IDEzOjA4OjAzIDIwMDkgKzAyMDAKLQotICAgIGFybTogdW5pZnkgcmVzZXQgY29tbWFuZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGIzYWNiNmNkNDA1OWRmYjI5YTVlOTkwOTVkODAyNzE3ZjUzZmY3ODQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBBcHIgNSAxMzowNjozMSAyMDA5ICswMjAwCi0KLSAgICBhcm06IGNsZWFuIGNhY2hlIG1hbmFnZW1lbnQKLQotICAgIHVuaWZ5IGFybSBjYWNoZSBtYW5hZ2VtZW50IGV4Y2VwdCBmb3Igbm9uIHN0YW5kYXJkIGNhY2hlIGFzIEFSTTdURE1JCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNjc3ZTYyZjQzMjM1ZGU5YTE3MDEyMDRkN2JjZWEwZmIzZDIzM2ZhMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEFwciA1IDEzOjAyOjQzIDIwMDkgKzAyMDAKLQotICAgIGFybTogdXBkYXRlIGNvLXByb2Nlc3NvciAxNSBhY2Nlc3MKLQotICAgIGltcG9ydCBzeXN0ZW0uaCBmcm9tIGxpbnV4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjNlNGFmNDllMDY2YTUzY2QzZTM2NTliNjhlZjkwNTcyZDg4ZGU4NAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglTdW4gQXByIDUgMDA6NDI6MDIgMjAwOSArMDIwMAotCi0gICAgQVJNOiBhZGQgdGhlIGlteDMxX3BoeWNvcmVfZWV0IHRhcmdldCB0byBNQUlOVEFJTkVSUwotCi0gICAgaW14MzFfcGh5Y29yZV9lZXQgaXMgYSB2YXJpYW50IG9mIHRoZSBpbXgzMV9waHljb3JlIGJvYXJkIHdpdGggYSBmZXcKLSAgICBleHRlbnNpb25zLCB3aGljaCBqdXN0aWZpZXMgYSBzZXBhcmF0ZSBlbnRyeSBpbiB0aGUgTUFJTlRBSU5FUlMgbGlzdCwKLSAgICB3aGVyZWFzIG5vcm1hbGx5IGFsbCBlbnRyaWVzIHNoYXJpbmcgYSBzaW5nbGUgY29uZmlndXJhdGlvbiBmaWxlIGFuZCBhCi0gICAgYm9hcmQvIGRpcmVjdG9yeSBoYXZlIG9ubHkgb25lIGVudHJ5IGluIE1BSU5UQUlORVJTLgotCi0gICAgUmVwb3J0ZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgNjljNWJmMjk5MDhiM2E3ZjhlMjNiZDk4OTFiN2VjYzViMjFmMjNlNQotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglTdW4gQXByIDUgMDA6Mzc6MDcgMjAwOSArMDIwMAotCi0gICAgQVJNOiBmaXggb3V0LW9mLXRyZWUgYnVpbGQgb2YgaW14MzFfcGh5Y29yZV9lZXQKLQotICAgIEZpeCBvdXQtb2YtdHJlZSBidWlsZCBvZiB0aGUgaW14MzFfcGh5Y29yZV9lZXQgdGFyZ2V0LgotCi0gICAgUmVwb3J0ZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgM2M4NTNmMzFkNmE4ZTQ0MDdmNzNhMmNhMmM2M2QzODNhMjQ1ZjIzNwotQXV0aG9yOiBKb24gU21pcmwgPGpvbnNtaXJsQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBBcHIgNCAxNzo0NDo1MSAyMDA5IC0wNDAwCi0KLSAgICBtcGM1MjAwOiByZWR1Y2UgZGVsYXlzIGluIGkyYwotCi0gICAgVGhlIHByZXZpb3VzIGNvZGUgd2FpdGVkIDEwMDB1cyBiZWZvcmUgY2hlY2tpbmcgaTJjCi0gICAgc3RhdHVzLiBNZWFzdXJlbWVudCBzaG93cyBpMmMgaXMgdXN1YWxseSByZWFkeSBpbgotICAgIHVuZGVyIDUwdXMuIENoYW5nZSB0aGUgcG9sbGluZyBpbnRlcnZhbCB0byAxNXVzLAotICAgIGxvb3AgNiw2NjcgdGltZXMgdG8ga2VlcCB0aGUgcG9sbGluZyB0aW1lb3V0IGNvbnN0YW50Ci0gICAgYXQgMTAwbXMuCi0KLWNvbW1pdCAzNjAwMzI2ODk2ODk0OTExMGVmMTQ1ZDlmMmVhZjg0MzljOTZkMjViCi1BdXRob3I6IFNhbmplZXYgUHJlbWkgPHByZW1pQHRpLmNvbT4KLURhdGU6CUZyaSBBcHIgMyAxNDowMDowNyAyMDA5ICswNTMwCi0KLSAgICBPTUFQOiBGaXggY29tcGlsZSBpc3N1ZQotCi0gICAgRml4ZXMgdGhpcyBjb21waWxlIGVycm9yOgotICAgIGJvYXJkLmM6IEluIGZ1bmN0aW9uICdkb19zd2l0Y2hfZWNjJzoKLSAgICBib2FyZC5jOjMzOTogZXJyb3I6ICdjbWRfdGJsX3QnIGhhcyBubyBtZW1iZXIgbmFtZWQgJ2hlbHAnCi0gICAgbWFrZVsxXTogKioqIFtib2FyZC5vXSBFcnJvciAxCi0gICAgbWFrZVsxXTogTGVhdmluZyBkaXJlY3RvcnkgYC9kYi9wc3BfZ2l0L3VzZXJzL2EwNzU2ODE5L3UtYm9vdC9jcHUvYXJtX2NvcnRleGE4L29tYXAzJwotICAgIG1ha2U6ICoqKiBbY3B1L2FybV9jb3J0ZXhhOC9vbWFwMy9saWJvbWFwMy5hXSBFcnJvciAyCi0KLSAgICBUaGlzIGlzIGR1ZSB0byB0aGUgZmFjdCB0aGF0IGN1cnJlbnQgY29tbWFuZCB1c2VzIGxvbmcKLSAgICBoZWxwIGZvciB0aGUgdXNhZ2UgcHJpbnQgZXZlbiBpZiB0aGUgQ09ORklHX1NZU19MT05HSEVMUAotICAgIGlzIG5vdCBlbmFibGVkLiAoVGhhbmtzIEplYW4tQ2hyaXN0b3BoZSBmb3IgZXhwbGFuYXRpb24pLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FuamVldiBQcmVtaSA8cHJlbWlAdGkuY29tPgotCi1jb21taXQgMzQyYzFhNWQ5YWI3NGZlYmYzMjI2YTg2MjE2ZGM1YWEwNTI5NWQ0NgotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglGcmkgQXByIDMgMDk6NTY6MTYgMjAwOSArMDkwMAotCi0gICAgczNjNjR4eDogZml4IHRoZSB3cm9uZyBncGlvIG9mZnNldAotCi0gICAgVGhpcyBwYXRjaCBmaXggdGhlIHdyb25nIGdwaW8gb2Zmc2V0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCBhYjA2ODljMzE2YzliMmVlMzNmNGRlMWM1MDI2M2I2NGU1MzlmMTJhCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJV2VkIE5vdiAyNiAxMDoxODoxMyAyMDA4ICswOTAwCi0KLSAgICBNb3ZlIG1hY2hpbmUgc3BlY2lmaWMgY29kZSB0byBib2FyZCBhdCBzM2M2NHh4ICh2MikKLQotICAgIE1vdmUgbWFjaGluZSBzcGVjaWZpYyBjb2RlIHRvIHNtZGs2NDAwLgotICAgIFNvbWUgYm9hcmQgdXNlIE9uZU5BTkQgaW5zdGVhZCBvZiBOQU5ELgotCi0gICAgU29tZSByZWdpc3RlciBNUDBfQ1NfQ0ZHWzU6MF0gYXJlIGNvbnRyb2xlZCBieSBib3RoIGgvdyBhbmQgcy93LgotICAgIFNvIGl0J3MgYmV0dGVyIHRvIHVzZSBtYWNybyBpbnN0ZWFkIG9mIGhhcmQtY29kZWQgdmFsdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgNzY3ZjNhY2Q5ZjZlMWRjYjhhZGE5MjZjMzMzOTQ1MzgyZWRkYzdlOAotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglXZWQgQXByIDEgMjI6MDI6MTkgMjAwOSAtMDUwMAotCi0gICAgWk9PTTEgUmVtb3ZlIGxlZ2FjeSBOQU5EIGRlZmluZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDU4OTExNTE3MDdlZTU5MDJmZTYyZDU1NGMyNDdmNDI4NjU4MTU3NTcKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJV2VkIEFwciAxIDIyOjAyOjIwIDIwMDkgLTA1MDAKLQotICAgIE9NQVAzIEZpeCBtdWx0aWxpbmUgZm9ybWF0dGluZyBpbiBib2FyZCBpbml0IGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgYzBhMTRhZWRjMzQ0MGQ2NTkxYjhjODZkNDU4NjFhMGE4YjQ2ZTExZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEFwciA1IDAwOjI3OjU3IDIwMDkgKzAyMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0csIGNvZGluZyBzdHlsZSBjbGVhbnVwLgotCi1jb21taXQgZjYzNzI4YzgwNGFiNzQxM2E2N2Q3MGY2Nzc0Y2QzMGMzZjdiNDBmYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEFwciA1IDAwOjE4OjQ0IDIwMDkgKzAyMDAKLQotICAgIE9uZSBtb3JlIGZpeCBmb3IgYnVpbGRpbmcgZW52X2VtYmVkZGVkLm8KLQotICAgIEluIGFkZGl0aW9uIHRvIHRoZSBjaGFuZ2VzIGZvciBDT05GSUdfRU5WX0lTX0lOX0ZMQVNIIGFzIGRvbmUgaW4KLSAgICBjb21taXQgYWZjYmNlMDcsIHdlIGFsc28gbmVlZCB0byBkbyB0aGUgc2FtZSBmb3IKLSAgICBDT05GSUdfRU5WX0lTX0lOX0VFUFJPTSBhbmQgQ09ORklHX0VOVl9JU19JTl9OVlJBTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlM2QxYWM3YmIxOTU1ZDM2OTgwZDI2N2NiNGNlYzQwYjBmN2QzMGI1Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEFwciAyIDE2OjE1OjEwIDIwMDkgLTA1MDAKLQotICAgIGNvbW1vbi9pbWFnZS5jOiBSZWxvY2F0ZSBzdHJpbmdzIGluIHRhYmxlcy4KLQotICAgIFdpdGhvdXQgdGhpcywgdS1ib290IGNhbiBjcmFzaCBvciBwcmludCBnYXJiYWdlIGlmIHRoZSBvcmlnaW5hbCBsaW5rCi0gICAgYWRkcmVzcyBubyBsb25nZXIgcG9pbnRzIHRvIGEgdmFsaWQgc3RyaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzYTY3MWZjMDZhZTFkOWU4ZWJhNzY2MDAzNzIzMTdjNzVhZTBlYjNlCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEFwciAyIDE2OjEwOjM2IDIwMDkgLTA1MDAKLQotICAgIG1wYzgyNjA6IEZpbGwgaW4gYnJnJ3MgY2xvY2stZnJlcXVlbmN5IGluIGRldmljZSB0cmVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNzNlZDI3NGEyMTE2OTk3MzlkODNjMmNlZjkyODUzZGM2NzE2ZTE1Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEFwciAyIDE4OjIwOjQzIDIwMDkgLTA1MDAKLQotICAgIE1QQzgyNjBBRFM6IEFkZCBuZnNib290L3JhbWJvb3QgdG8gZGVmYXVsdCBlbnZpcm9ubWVudC4KLQotICAgIFRoaXMgYnJpbmdzIGl0IGluIGxpbmUgd2l0aCBvdGhlciBGcmVlc2NhbGUgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjMjAzZWY1ZGIwNDc2YThjNGY2ZGQ4NmIyZTllOWRiMGVhOTczZjg0Ci1BdXRob3I6IEFuZHJlYXMgSHViZXIgPGFuZHJlYXMuaHViZXJAa2V5bWlsZS5jb20+Ci1EYXRlOglUaHUgQXByIDIgMTc6MTU6MzQgMjAwOSArMDIwMAotCi0gICAgVUJJL2NmaS1tdGQ6IEZpeCBtdGQgbmFtZSBmb3IgbXVsdGlwbGUgY2hpcHMKLQotICAgIE9uIHBsYXRmb3JtcyB3aXRoIG11bHRpcGxlIE5PUiBjaGlwcywgY3VycmVudGx5IG9ubHkgdGhlIGZpcnN0IG9uZQotICAgIGNhbiBiZSBzZWxlY3RlZCB1c2luZyB0aGUgInViaSBwYXJ0IiBjb21tYW5kLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMKLSAgICBwcm9ibGVtIGJ5IHVzaW5nIGRpZmZlcmVudCBuYW1lcyBmb3IgdGhlIE5PUiAibXRkIGRldmljZXMiLgotCi0gICAgSXQgYWxzbyBjaGFuZ2VzIHRoZSBuYW1lIG9mIHRoZSBOT1IgTVREIGRldmljZSBmcm9tICJjZmktbXRkIiB0bwotICAgICJub3JYIiAoWCBpbmRleGluZyB0aGUgZGV2aWNlIG51bWVyKSB0byBiZXR0ZXIgbWF0Y2ggdGhlIG10ZHBhcnRzCi0gICAgZGVmYXVsdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBIdWJlciA8YW5kcmVhcy5odWJlckBrZXltaWxlLmNvbT4KLQotY29tbWl0IDZiNmJiMDJmMjdmY2FiZmIzN2VhNzE3ZmI3ZTI0MzI0OGUxZTJhY2YKLUF1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KLURhdGU6CVR1ZSBNYXIgMzEgMTc6NTI6MTYgMjAwOSArMDIwMAotCi0gICAgdG9vbHMvc2V0bG9jYWx2ZXJzaW9uOiB1c2UgZ2l0IHN2biBpbnN0ZWFkIG9mIGdpdC1zdm4KLQotICAgIFVzZSB0aGUgbmV3ICJnaXQgPHN1YmNtZD4iIHN5bnRheCBpbnN0ZWFkIG9mIHRoZSBkZXByZWNhdGVkCi0gICAgImdpdC08c3ViY21kPiIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgotCi1jb21taXQgN2ZhOTZhOWE1NGViMGQ4N2Q3Mzg4OGVjMjU2NWNkYTc5MGJhMGRmZgotQXV0aG9yOiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWFyIDMxIDE0OjA5OjQwIDIwMDkgKzA4MDAKLQotICAgIGVTUEk6IGFkZCB0aGUgZVNQSSByZWdpc3RlciBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaW5na2FpIEh1IDxNaW5na2FpLmh1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4NjlmNmJmNGRlZjVhMDUzZmJkMWFlY2Q4YjJmYzM2ZjA1MTk2YzBiCi1BdXRob3I6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLURhdGU6CU1vbiBNYXIgMzAgMTQ6NTU6NTEgMjAwOSArMDkwMAotCi0gICAgY21kX21tYzogYWRkIHN1cHBvcnQgZm9yIGRldmljZSBjb21tYW5kIGZvciBzZWxlY3RpbmcgbW1jIGRldmljZQotCi0gICAgVGhpcyBwYXRjaCBpbXByb3ZlcyBkZXZpY2UgY29tbWFuZCBmb3Igc2VsZWN0aW5nIG1tYyBkZXZpY2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDlhYmM5ZWY4ZmJlMDc5YmY3NWE2MzRjZTY0YjdkY2RiN2IwZDhiZGMKLUF1dGhvcjogQWxhbiBDYXJ2YWxobyBkZSBBc3NpcyA8YWNhc3Npc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgTWFyIDI4IDE5OjUwOjE2IDIwMDkgLTAzMDAKLQotICAgIFNtYWxsIGZpeCB0byBtNTI4MmV2YgotCi0gICAgVGhpcyBpcyBqdXN0IGEgc21hbGwgZml4IHRvIGdldCB1LWJvb3Qgb24gbTUyODJldmIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGFuIENhcnZhbGhvIGRlIEFzc2lzIDxhY2Fzc2lzQGdtYWlsLmNvbT4KLQotY29tbWl0IGZlYmQ3ZTQxNzRlNTQ1NzljOWFhMTY1Yzg1YzUxOWZlNTI4OGY5ZDIKLUF1dGhvcjogQXJ0ZW0gQml0eXV0c2tpeSA8QXJ0ZW0uQml0eXV0c2tpeUBub2tpYS5jb20+Ci1EYXRlOglGcmkgTWFyIDI3IDEwOjIxOjE0IDIwMDkgKzAxMDAKLQotICAgIFVCSUZTOiBhZGQgUi9PIGNvbXBhdGliaWxpdHkKLQotICAgIE5vdyBVQklGUyBpcyBzdXBwb3J0ZWQgYnkgdS1ib290LiBJZiB3ZSBldmVyIGRlY2lkZSB0byBjaGFuZ2UgdGhlCi0gICAgbWVkaWEgZm9ybWF0LCB0aGVuIHBlb3BsZSB3aWxsIGhhdmUgdG8gdXBncmFkZSB0aGVpciB1LWJvb3RzIHRvCi0gICAgbW91bnQgbmV3IGZvcm1hdCBpbWFnZXMuIEhvd2V2ZXIsIHZlcnkgb2Z0ZW4gaXQgaXMgcG9zc2libGUgdG8KLSAgICBwcmVzZXJ2ZSBSL08gZm9yd2FyZC1jb21wYXRpYmlsaXR5LCBldmVuIHRob3VnaCB0aGUgd3JpdGUKLSAgICBmb3J3YXJkLWNvbXBhdGliaWxpdHkgaXMgbm90IHByZXNlcnZlZC4KLQotICAgIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyBhIG5ldyBzdXBlci1ibG9jayBmaWVsZCB3aGljaCBzdG9yZXMgdGhlCi0gICAgUi9PIGNvbXBhdGliaWxpdHkgdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFydGVtIEJpdHl1dHNraXkgPEFydGVtLkJpdHl1dHNraXlAbm9raWEuY29tPgotICAgIEFja2VkLWJ5OiBBZHJpYW4gSHVudGVyIDxBZHJpYW4uSHVudGVyQG5va2lhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4NTJkYmZkZDU2ZjY4ZWI2N2QxMzhiMzA2YTY0ZTRkZTU4ZGFiYjkxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBNYXIgMjMgMjI6Mjc6MzQgMjAwOSAtMDQwMAotCi0gICAgbW9yZSBjb21tYW5kIHVzYWdlIGNsZWFudXAKLQotICAgIEZpeCB1cCBhIGZldyBkYW5nbGluZyBjb21tYW5kcyBsaWtlIGluICJDb21tYW5kIHVzYWdlIGNsZWFudXAiIGNvbW1pdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGI5M2IyNGJmNzZmOGE4MjIwYjIzNmRmM2E1ZjMwYjIyMDRlYjRlZGMKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJTW9uIE1hciAyMyAxMjowNjowNyAyMDA5ICswMTAwCi0KLSAgICBTZXBhcmF0ZSBtdGRwYXJ0cyBjb21tYW5kIGZyb20gamZmczIKLQotICAgIE9uIFRodSwgTWFyIDE5LCAyMDA5IGF0IDAxOjMwOjM2UE0gKzAxMDAsIFN0ZWZhbiBSb2VzZSB3cm90ZToKLSAgICA+IEN1cnJlbnRseSB0aGUgbXRkcGFydHMgY29tbWFuZHMgYXJlIGluY2x1ZGVkIGluIHRoZSBqZmZzMiBjb21tYW5kIHN1cHBvcnQuCi0gICAgPiBUaGlzIGRvZXNuJ3QgbWFrZSBzZW5zZSBhbnltb3JlIHNpbmNlIG90aGVyIGNvbW1hbmRzIChlLmcuIFVCSSkgdXNlIHRoaXMKLSAgICA+IGluZnJhc3RydWN0dXJlIGFzIHdlbGwgbm93LiBUaGlzIHBhdGNoIHNlcGFyYXRlcyB0aGUgbXRkcGFydHMgY29tbWFuZHMgZnJvbQotICAgID4gdGhlIGpmZnMyIGNvbW1hbmRzIG1ha2luZyBpdCBwb3NzaWJsZSB0byBvbmx5IHNlbGVjdCBtdGRwYXJ0cyB3aGVuIG5vIEpGRlMyCi0gICAgPiBzdXBwb3J0IGlzIG5lZWRlZC4KLQotICAgIC4uLiBhbmQgdG8gbWFrZSBpdCB1c2VmdWwgZm9yIE5BTkQgY2hpcHMgYXMgd2VsbCwgd2Ugc2hvdWxkIGFsc28gcmVtb3ZlIG5vdwotICAgIHVucmVsYXRlZCBDT05GSUdfSkZGUzJfTkFORC4gTm90ZSB0aGF0IHN0cnVjdCBwYXJ0X2luZm8gZXRjIGlzIGluCi0gICAgamZmczIvbG9hZF9rZXJuZWwuaCB3aGljaCBpcyBhIGJpdCBtaXNsZWFkaW5nIGZpbGVuYW1lIGZvciB0aGF0IHB1cnBvc2UsCi0gICAgYnV0IHRoYXQgY2FuIGJlIGZpeGVkIGxhdGVyICh0bSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiAgTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotCi1jb21taXQgYjE5NmNhNzU1MDNjZTMwN2M1MzViODdiZjQ3ZDUxZjA1ZTc1MzBkZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gTWFyIDIyIDIyOjE4OjAxIDIwMDkgLTA0MDAKLQotICAgIHNtYzkxMTExX2VlcHJvbTogbW92ZSBib2FyZC1zcGVjaWZpYyBpbml0IGludG8gU01DOTExMTFfRUVQUk9NX0lOSVQoKQotCi0gICAgUmF0aGVyIHRoYW4gc3RpY2tpbmcgQmxhY2tmaW4tc3BlY2lmaWMgc3R1ZmYgaW50byB0aGUgZWVwcm9tIGV4YW1wbGUsIHVzZQotICAgIGFuIGluZGlyZWN0IG1hY3JvIHNvIHRoYXQgYW55IGJvYXJkIGNhbiBvdmVycmlkZSBpdCB3aXRoIHRoZWlyIG93biBtYWdpYwotICAgIHNhdWNlIGluIHRoZWlyIGJvYXJkIGNvbmZpZyBmaWxlLgotCi0gICAgQWxzbyBmaXggc29tZSBzcHVyaW91cyBzZW1pLWNvbG9ucyBpbiBkZWZpbmVzIHdoaWxlIEknbSBhdCBpdCAuLi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGY1Y2YyZWYyYWQyYThiZjMyMTcxMmFiNDYwZWQ4NDYxMjAxNjNkNzQKLUF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotRGF0ZToJU2F0IE1hciAyMSAwOTozODo0NiAyMDA5IC0wNDAwCi0KLSAgICBtcGM1Mnh4IHBoeTogaW5pdGlhbGl6ZSBvbmx5IHdoZW4gbmVlZGVkCi0KLSAgICBEbyBub3QgaW5pdGlhbGl6ZSBwaHkgb24gc3RhcnR1cCwgaW5zdGVhZCBpbml0aWFsaXplIGl0Ci0gICAgd2hlbiB3ZSBhY3R1YWxseSBuZWVkIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotCi1jb21taXQgMDNiYWIwMDkxOTQ4MTk2Yjk1NTgyNDg2ODRjMDRmNjA5NDNjYTRiNQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIE1hciAzMCAxNjo1MTo0MCAyMDA5ICswMjAwCi0KLSAgICBhdDkxc2FtOTI2M2VrOiBlbmFibGUgaHVzaCBhbmQgYXV0byBjb21wbGV0ZSBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIEFja2VkLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotCi1jb21taXQgNDc1OGViZGQ1MzU3MWQ0ZDE4M2JlNWMyZGI4ZjBlZTRlZjM2ODkxNQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0NCAyMDA5ICswMTAwCi0KLSAgICBhdDkxOiBtb3ZlIGRhdGFmbGFzaCBzcGkgZHJpdmVyIHRvIGRyaXZlcnMvc3BpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMmI3MTc4YWZjZTU5ZjcxZTk1ZGE2NTcyNzNmNDEzMjAxMjA5OGMxZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0NCAyMDA5ICswMTAwCi0KLSAgICBhdDkxOiBtb3ZlIHVzYiBkcml2ZXIgdG8gZHJpdmVycy91c2IKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmODI1MThkN2Y0NDNlYmFjNWY4ODIxMTAzYTNjNTIxYzk2M2FhNmVlCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgTWFyIDI3IDIzOjI2OjQzIDIwMDkgKzAxMDAKLQotICAgIGF0OTFybTkyMDA6IFJlc2V0IHVwZGF0ZQotCi0gICAgVXBkYXRlIHRoZSBybTkyMDAgcmVzZXQgc2VxdWVuY2UgdG8gdHJ5IGV4ZWN1dGluZyBhIGJvYXJkLXNwZWNpZmljIHJlc2V0Ci0gICAgZnVuY3Rpb24gYW5kIG1vdmUgc3BlY2lmaWMgYm9hcmQgcmVzZXQgdG8gYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMzUyNDA0OWNkMDUzNzQ2Mjk4ZTRjZmFiMjQ0OTg4MmU3NWMxNDZmYwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MyAyMDA5ICswMTAwCi0KLSAgICBhdDkxcm05MjAwOiBtb3ZlIHNlcmlhbCBzaHV0ZG93biBjb2RlIHRvIHNlcmlhbCBkcml2ZXJzCi0KLSAgICBpbnRyb2R1Y2Ugc2VyaWFsX2V4aXQgZm9yIHRoaXMgcHVycG9zZS4gVXNlIGl0IG9ubHkgd2hlbiB0aGUgcm05MjAwCi0gICAgc2VyaWFsIGRyaXZlciBpcyBhY3RpdmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiZWViZDg1MWNkYmM5ZGQwNzBiY2RmZWMxZmQ4ZjE3ZTNjYzkxYmMwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgTWFyIDI3IDIzOjI2OjQzIDIwMDkgKzAxMDAKLQotICAgIGF0OTFybTkyMDA6IG1vdmUgc2VyaWFsIGRyaXZlciB0byBkcml2ZXJzL3NlcmlhbAotCi0gICAgYWRkIENPTkZJR19BVDkxUk05MjAwX1VTQVJUIHRvIGFjdGl2YXRlIHRoZSBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBjYjgyYTUzMjY2OWY2YjAyMjI1ZWMzNDI5ZWE0ZDQ5ZmYyYjk3ZDBhCi1BdXRob3I6IFVsZiBTYW11ZWxzc29uIDx1bGZAYXRtZWwuY29tPgotRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MyAyMDA5ICswMTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEFUOTFSTTkyMDBFSyBCb2FyZC4KLQotICAgIFRoZSBBVDkxUk05MjAwLUVLIEV2YWx1YXRpb24gQm9hcmQgc3VwcG9ydHMgdGhlIEFUOTFSTTkyMDAKLSAgICBBUk05LWJhc2VkIDMyLWJpdCBSSVNDIG1pY3JvY29udHJvbGxlciBhbmQgZW5hYmxlcyByZWFsLXRpbWUgY29kZSBkZXZlbG9wbWVudAotICAgIGFuZCBldmFsdWF0aW9uLgotCi0gICAgSGVyZSBpcyB0aGUgY2hpcCBwYWdlIG9uIEF0bWVsIHdlYnNpdGU6Ci0gICAgaHR0cDovL3d3dy5hdG1lbC5jb20vZHluL3Byb2R1Y3RzL3Rvb2xzX2NhcmQuYXNwP3Rvb2xfaWQ9MzUwNwotCi0gICAgd2l0aAotCS0gTk9SIChjZmkgZHJpdmVyKQotCS0gRGF0YUZsYXNoCi0JLSBVU0IgT0hDSQotCS0gTmV0Ci0JLSBJMkMgKGhhcmQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYjljMGU0YzI5ZTNlYzEyNjY4YWM1MGU5NTRlN2M5YmE4ZjdhYTEwYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MiAyMDA5ICswMTAwCi0KLSAgICBhZGQgZGF0YWZsYXNoIG1tYyBtdXggbWlzc2luZyBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMmEzMjVjZTNjNzA1YWIyZDgyNzYwYWZjNTQxYzUxMTMyODQ3MmRmOAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE1hciAyNyAyMzoyNjo0MiAyMDA5ICswMTAwCi0KLSAgICBhdDkxcm05MjAwZGs6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5MGE5MmE3MDhkNTE4MGEyMGQ2MDBiYTBmYzIzNTJlYzc2ZGMzODI5Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgTWFyIDI3IDIzOjI2OjQyIDIwMDkgKzAxMDAKLQotICAgIGF0OTE6IHJlbmFtZSBEQVRBRkxBU0hfTU1DX1NFTEVDVCB0byBDT05GSUdfREFUQUZMQVNIX01NQ19TRUxFQ1QKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA4NDNhMjY1NGJjZTc0MTkyZGUyYjVhNDM0NzRmZGMyN2E1NzJhYjQwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgTWFyIDI3IDIzOjI2OjQyIDIwMDkgKzAxMDAKLQotICAgIGF0OTFzYW05OiBhZGQgd2F0Y2hkb2cgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGE0NzQ5MmFjNjA2NTdkZDlkNTljNzEzYWEwNDkzMTllYTZlYWJkNTIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXIgMjcgMTM6MTQ6NTIgMjAwOSArMDEwMAotCi0gICAgYXQ5MXNhbTkvYXQ5MWNhcDogc3BpIGluaXQgYWRkIGhhcmR3YXJlIGNoaXAgc2VsZWN0IHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2NjkzMmFjMzkyOWM3YTE0NWE2ZWY2NTc0YTk2ZmQ3NTM1MTU0OTUxCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgQXByIDQgMTk6MTU6NDAgMjAwOSArMDIwMAotCi0gICAgbmV0c3RhcjogZml4IGNyYzMyLmMgZGVwZW5kYW5jeSBsb2NhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDQyZjllYmZmMmY3NThiZWY1MjQ3ODBhMDBjNzEyZWI2M2E3MmQ5OWIKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgQXByIDMgMTU6MjQ6NDAgMjAwOSAtMDUwMAotCi0gICAgTVBDODI2MEFEUzogRGVmaW5lIENPTkZJR19IQVNfRVRIMC4KLQotICAgIFRoaXMgaXMgcmVxdWlyZWQgc28gdGhhdCB0aGUgTUFDIGFkZHJlc3Mgd2lsbCBiZSB1cGRhdGVkIGluIHRoZSBkZXZpY2UgdHJlZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODcwMWVjZWZmZGY3N2UyOTA4ZDBiNThhZGQwZGFiYzE2ZWRmNjA4NwotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBcHIgMyAxNToyNjo0NSAyMDA5IC0wNTAwCi0KLSAgICBQUTJGQURTOiBFbmFibGUgUENJLgotCi0gICAgUENJIG9uIFBRMkZBRFMgaXMgdmVyeSBzaW1pbGFyIHRvIFBDSSBvbiBNUEM4MjcyQURTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4Mzg2M2RmMDRiZDMwYmZlMjQzMGIwYzQzY2E5Zjc4NTk2ZDNmMGJjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgQXByIDQgMTY6NTc6NTAgMjAwOSArMDIwMAotCi0gICAgRml4IHF1b3RpbmcgYnVnIGludHJvZHVjZWQgYnkgY29tbWl0IDc0ZGU3YWVmCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZWNmM2ZiMjIzYTU2ZTNjNmFhNjk2ZDk0ZDY5NGVlYWNhMGY0NGQzMwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEFwciA0IDE2OjE0OjUxIDIwMDkgKzAyMDAKLQotICAgIEZpeCBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnaHRvbnMnCi0KLSAgICBJbmNsdWRlIDxuZXRpbmV0L2luLmg+IGluc3RlYWQgb2YgPGxpbnV4L2luLmg+IHRvIGdldCBodG9ucygpCi0gICAgcHJvdG90cHllLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGU2YTY3ODlmNDFmMDU2MGNlMjgwMDg5ZmJkM2YxYmQwZjBmNjQzMDYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVNhdCBBcHIgNCAxMDoyMTowMiAyMDA5IC0wNTAwCi0KLSAgICBmc2xfbGF3OiBGaXggYnVnIGluIGNhbGN1bGF0aW9uIG9mIExBVyBzaXppbmcKLQotICAgIEluIHNldF9kZHJfbGF3cygpIHdoZW4gd2UgZGV0ZXJtaW5lZCBob3cgbXVjaCBvZiB0aGUgc2l6ZSByZXF1ZXN0ZWQKLSAgICB0byBiZSBtYXBwZWQgd2FzIGNvdmVyZWQgYnkgdGhlIHRoZSBmaXJzdCBMQVcgd2UgbmVlZGVkIHRvIHJlY2FsY3VsYXRlCi0gICAgdGhlIHNpemUgYmFzZWQgb24gd2hhdCB3YXMgYWN0dWFsbHkgbWFwcGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDMyMDQ5YjQwNDhmZjhlNTliZDViYTYxNjBkNmQ1MjA2ZDI4M2IyYTIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBBcHIgMiAxMzo1NzowNSAyMDA5IC0wNTAwCi0KLSAgICBmc2xfcGNpOiBNb3ZlIHByb3RvdHlwZXMgaW50byBmc2xfcGNpLmggYW5kIHJlbW92ZSBleHBsaWNpdCBleHRlcm5zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzg1MTQ2MjJlMjcxM2Q5YzQ3OTE5YWNmZTIzZmNlMzg2NzgyYWZlNwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEFwciAyIDEzOjIyOjQ4IDIwMDkgLTA1MDAKLQotICAgIGZzbF9wY2k6IFJlbmFtZWQgaW1tYXBfZnNsX3BjaS5oIHRvIGZzbF9wY2kuaAotCi0gICAgUmVuYW1lIHRoZSBwY2kgaGVhZGVyIGZvciBGU0wgSFcgc28gd2UgY2FuIG1vdmUgc29tZSBwcm90b3R5cGVzCi0gICAgaW4gdGhlcmUgYW5kIHN0b3AgZG9pbmcgZXhwbGljaXQgZXh0ZXJucwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGFmY2JjZTA3ZTkzMjNjMGU4YWViNzgzYmE3Y2U2MTA0ODYwZmQ3YTcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBBcHIgNCAxNjoxMDo0MCAyMDA5ICswMjAwCi0KLSAgICBGaXggYnVpbGRpbmcgb2YgZW52X2VtYmVkZGVkLm8KLQotICAgIFNpbmNlIGNvbW1pdCBhNzA2YmZjNyBjb21tb24vZW52X2VtYmVkZGVkLm8gYW5kIHRvb2xzL2VudmNyYyB3ZXJlCi0gICAgb25seSBidWlsdCB3aGVuIENPTkZJR19FTlZfSVNfRU1CRURERUQgd2FzIHNldCwgYnV0IHRoaXMgYnJlYWtzCi0gICAgYnVpbGRpbmcgZm9yIG1hbnkgYm9hcmRzLgotCi0gICAgV2UgYWx3YXlzIGhhdmUgdG8gYnVpbGQgdGhlc2UgZmlsZXMgd2hlbiBDT05GSUdfRU5WX0lTX0lOX0ZMQVNIIGlzCi0gICAgc2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGEzMWUwOTFhZDcwOTE1Mjc4ZmIxNWI3OWQ2YWU1M2VhMmQ0NGIyNTEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBBcHIgNCAxMjo0OToxMSAyMDA5ICswMjAwCi0KLSAgICByZW5hbWUgaW5jbHVkZS96bGliLmggdG8gaW5jbHVkZS91LWJvb3QvemxpYi5oCi0KLSAgICBTb21lIHN5c3RlbXMgaGF2ZSB6bGliLmggaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS8uIFRoaXMgaXNuJ3QgdGhlCi0gICAgZGVzaXJlZCBmaWxlIGZvciB1LWJvb3QgY29kZSAtIHdlIHdhbnQgdGhlIG9uZSBpbiBpbmNsdWRlL3psaWIuaC4KLSAgICBUaGlzIHJlbmFtZSB3aWxsIGF2b2lkIHRoZSBjb25mbGljdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYWU2NDRjMTc4ZjA5Nzg3NGE5MmE2ZDkzNGYzNjQ5ODVmYzdlMDc1YQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEFwciA0IDEyOjQ2OjMxIDIwMDkgKzAyMDAKLQotICAgIHRvb2xzL01ha2VmaWxlOiBmaXggaW1hZ2UuYyBkZXBlbmRhbmN5IGxvY2F0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGIwNzRhNzA4MTEyNGQ3ZjA1ZmQxNjUxYTNiYzBiNTU3OWZkZmE0NzMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IEFwciA0IDA3OjQyOjI1IDIwMDkgLTA0MDAKLQotICAgIHRvb2xzOiBhZGQgbmNiIHRvIGdpdGlnbm9yZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNDUzYzBkNzU1ODIxNWNiYzg2MzZkOTRhZjE3Mjg4NmQ4NGUwZGJiYQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CUZyaSBBcHIgMyAxNjo0NTo0NiAyMDA5ICswMjAwCi0KLSAgICBpbmNsdWRlL25zMTY1NTAuaDogVW5pZnkgc3RydWN0dXJlIGRlY2xhcmF0aW9uIGZvciByZWdpc3RlcnMKLQotICAgIEluc3RlYWQgb2Ygc3BlY2lhbCBjYXNpbmcgdGhlIGRpZmZlcmVudCBhY2Nlc3MgcGF0dGVybnMsIHVzZSBjb21tb24KLSAgICBjb2RlIHdpdGggbGlnaHQgbWFjcm9zIHNwcmlua2xlZCBpbiB0byBhY2NvbW9kYXRlIGZvciB0aGUgZGlmZmVyZW50Ci0gICAgbGF5b3V0cyBvZiB0aGUgcmVnaXN0ZXIgc3RydWN0dXJlLgotCi0gICAgTm90ZSB0aGF0IHRoaXMgYWxzbyBjaGFuZ2VzIHRoZSB0eXBlcyBvZiB0aGUgcmVnaXN0ZXJzIGZvciB0aGUKLSAgICAicG9zaXRpdmVseSBwYWNrZWQgKD4xKSIgY2FzZXMuICBBcyB0aGUgcmVnaXN0ZXJzIHRydWx5IGFyZSB1bnNpZ25lZAotICAgIGNoYXJzLCB0aGlzIGlzIHN1cmVseSB0aGUgUmlnaHQgVGhpbmcsIGJ1dCBpdCBpcyBhIHNlbWFudGljIGNoYW5nZS4KLSAgICBOb3RlIHRoYXQgZm9yIHRoaXMgY2FzZSBkZXBlbmRpbmcgb24gdGhlIGVuZGlhbm5lc3Mgb24gdGhlIGJ1cywgd2UgbWF5Ci0gICAgc2VlIGEgY2hhbmdlIG9mIGJlaGF2aW91ci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgMGExNDVjZTZlNzA3NWFhMGY0ODY5ZDZmNjE0OWE1ZmYyMDVkOTVkZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDo1MiAyMDA5IC0wNTAwCi0KLSAgICBEZWxldGUgbm93IHVudXNlZCB0b29scy9NYWtlZmlsZS53aW4zMgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDJmOGQzOTZiOTMwMmVkZGNkOGQ1NTI2NDhlMTAxYTQ2YjdhODBhY2QKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NTEgMjAwOSAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIG5hdGl2ZSB3aW4zMiB0b29scwotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGNvbXBpbGluZyB0aGUgaG9zdCB0b29scyBpbiB0aGUgdG9vbHMgZGlyZWN0b3J5IHVzaW5nCi0gICAgdGhlIE1pbkdXIHRvb2xjaGFpbi4gIFRoaXMgcHJvZHVjZXMgZXhlY3V0YWJsZXMgd2hpY2ggY2FuIGJlIHVzZWQgb24KLSAgICBzdGFuZGFyZCBXaW5kb3dzIGNvbXB1dGVycyB3aXRob3V0IHJlcXVpcmluZyBjeWd3aW4uCi0KLSAgICBPbmUgbXVzdCBzcGVjaWZ5IHRoZSBNaW5HVyBjb21waWxlciBhbmQgc3RyaXAgdXRpbGl0aWVzIGFzIGlmIHRoZXkKLSAgICB3ZXJlIHRoZSBob3N0IHRvb2xjaGFpbiBpbiBvcmRlciB0byBidWlsZCB3aW4zMiBleGVjdXRhYmxlcywgZWc6Ci0KLSAgICBtYWtlIEhPU1RDQz1pNTg2LW1pbmd3MzJtc3ZjLWdjYyBIT1NUU1RSSVA9aTU4Ni1taW5ndzMybXN2Yy1zdHJpcCB0b29scwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGU1MGFiZjY2MmVmYmY0Y2UwZTczMTA2MmM4ZDNjOGVjNTQ3NjNhZTIKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NTAgMjAwOSAtMDUwMAotCi0gICAgdG9vbHMvTWFrZWZpbGU6IFNpbXBsaWZ5IEhPU1RfQ0ZMQUdTL0hPU1RfTERGTEFHUyBnZW5lcmF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgYjBkNGQ3MjE5YTQ4MDZlNDZhZmZjOTZiZDFmNjUzOTcxOTRhNmU3MgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0OSAyMDA5IC0wNTAwCi0KLSAgICB0b29scy9NYWtlZmlsZTogQ3JlYXRlIGdlbmVyaWMgYnVpbGQgcnVsZXMKLQotICAgIENyZWF0ZSBhIGZldyBnZW5lcmljIGJ1aWxkIHJ1bGVzIHRvIHJlcGxhY2UgdGhlIGN1cnJlbnQgbWV0aG9kIHdoaWNoIGhhcwotICAgIDEgYnVpbGQgdGFyZ2V0IGZvciBlYWNoIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAyNzMxNzRkZGJjY2UyMTVjNDJmNmMzMDc0NzBjZDU1ODBhM2Y3MmJmCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjQ4IDIwMDkgLTA1MDAKLQotICAgIHRvb2xzL01ha2VmaWxlOiBVc2UgYXV0by1nZW5lcmF0ZWQgb2JqZWN0IGZpbGUgZGVwZW5kZW5jaWVzCi0KLSAgICBGaWxlcyBpbiB0aGUgU1JDUyB2YXJpYWJsZSBoYXZlIHRoZWlyIGRlcGVuZGVuY2llcyBhdXRvbWF0aWNhbGx5Ci0gICAgZ2VuZXJhdGVkIHNvIHJlbW92ZSBkdXBsaWNhdGUgZXhwbGljaXQgZGVwZW5kZW5jaWVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgZmI4YjMzYzFlNmQ2MjFlYTMzNDdhNzVhZDNhNDJhMzg2YjQ0ZTU4OQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0NyAyMDA5IC0wNTAwCi0KLSAgICB0b29scy9NYWtlZmlsZTogUmVtb3ZlIHN5bWxpbmtzIGZvciByZW1haW5pbmcgc291cmNlIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgZWVkMDczMzE1YjY0NDdlY2VhZGY3NDY4YTRjMmI3NTc0NDJjN2M2ZgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0NiAyMDA5IC0wNTAwCi0KLSAgICB0b29scy9NYWtlZmlsZTogRHluYW1pY2FsbHkgZ2VuZXJhdGUgbGliZmR0IG9iamVjdCBkZXBlbmRlbmNpZXMKLQotICAgIEFkZCB0aGUgbGliZmR0IGZpbGVzIHRvIHRoZSBTUkNTIHZhcmlhYmxlIHNvIHRoYXQgdGhleSBoYXZlIHRoZWlyCi0gICAgZGVwZW5kZW5jaWVzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgYzAxNzAxNzUzOTNiOTQ1NjBmYTdhNWRhNmRkMzEzNzdkZjVmNGE3MgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0NSAyMDA5IC0wNTAwCi0KLSAgICB0b29scy9NYWtlZmlsZTogUmVtb3ZlIHN5bWxpbmtzIGZvciBmZHQgdGFyZ2V0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDQ1ZDZiZGZmNjg4NzdlYTIxNGZmMzNjYzFjODlhMjljNzZlOTZmNTEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NDQgMjAwOSAtMDUwMAotCi0gICAgdG9vbHMvTWFrZWZpbGU6IEFkZCBsaWJmZHQvIHRvIHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoCi0KLSAgICBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgcHJvY2VzcyBvZiBzeW1saW5raW5nIGxpYmZkdF9pbnRlcm5hbC5oCi0gICAgdW5uZWNlc3NhcnkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBmYmEwZTNhMDgxNGY5YmY0OGMzMmE0YzhhNzk4N2MzNmFlOTY2NTFiCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjQzIDIwMDkgLTA1MDAKLQotICAgIHRvb2xzOiBSZW1vdmUgdW5lY2Vzc2FyeSBzeW1saW5raW5nIG9mIHpsaWIuaAotCi0gICAgY3JjMzIuYyB1c2VzIHRoZSB6bGliLmggaGVhZGVyIGluIGluY2x1ZGUvdS1ib290L3psaWIuaC4gIFRoZSBzeW1saW5rCi0gICAgd2FzIHByZXZpb3VzbHkgbmVjZXNzYXJ5IHRvIGdpdmUgVS1Cb290J3MgdmVyc2lvbiBvZiB6bGliLmggcHJlY2VkZW5jZQotICAgIG92ZXIgdGhlIGhvc3QgY29tcHV0ZXIncyB2ZXJzaW9uIG9mIHpsaWIuaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA0MGI4ZDkwOWFjZTA2ZjZmNDk0ZGVlMDhmZmE2NGE4MjQ5M2U3MmU5Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjQyIDIwMDkgLTA1MDAKLQotICAgIHRvb2xzL01ha2VmaWxlOiBBZGQgdG9vbHMvIHRvIHRoZSBpbmNsdWRlIHNlYXJjaCBwYXRoCi0KLSAgICBUaGlzIGNoYW5nZSBtYWtlcyB0aGUgcHJvY2VzcyBvZiBzeW1saW5raW5nIG1raW1hZ2UuaCBhbmQgZmR0X2hvc3QuaAotICAgIHVubmVjZXNzYXJ5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgMWNkMzAwZGU1ZTE5YzllODM4M2VlMmViMmI2YmQzYjhiOTM3OGM3OAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDo0MSAyMDA5IC0wNTAwCi0KLSAgICB0b29scy9NYWtlZmlsZTogQ29tcGlsZSBuY2Igd2hlbiBDT05GSUdfTkVUQ09OU09MRQotCi0gICAgQWxzbyBjb25kaXRpb25hbGx5IGFkZCBuY2IubyB0byBPQkpfRklMRVMgbGlzdAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDEyM2M0OGEyMWNlMDhiNGEzM2YzNmU5NmNjNzVmOTIzMjRlNzYxZDcKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6NDAgMjAwOSAtMDUwMAotCi0gICAgdG9vbHMvTWFrZWZpbGU6IE1ha2UgZ2VuX2V0aF9hZGRyIGRlcGVuZGVudCB1cG9uIENPTkZJR19DTURfTkVUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNGQ5M2EwYTgwN2I4Y2EwMjg5YmE1ZGEwMGM2NDZjZDJkNTRhZjEyMAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDozOSAyMDA5IC0wNTAwCi0KLSAgICB0b29scy9NYWtlZmlsZTogTWFrZSBlbnZjcmMgZGVwZW5kZW50IHVwb24gQ09ORklHX0VOVl9JU19FTUJFRERFRAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGNkMjZhMzFhMjNmOWE1OGJhNTI4NzBmOGZmYjU3ZDc3ZDFiYWVlMjAKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzggMjAwOSAtMDUwMAotCi0gICAgdG9vbHMvTWFrZWZpbGU6IE1ha2UgaW5jYS1zd2FwLWJ5dGVzIGRlcGVuZGVudCBvbiBDT05GSUdfSU5DQV9JUAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDdjZDVjYmMzNDY5OWNjYzE1ZDAyNzdmNDgzNzVjYWQ5MjhkMDRmYWYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzcgMjAwOSAtMDUwMAotCi0gICAgdG9vbHMvTWFrZWZpbGU6IE1ha2UgdWJzaGExIGRlcGVuZGVudCB1cG9uIENPTkZJR19TSEExX0NIRUNLX1VCX0lNRwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGVlYmE4NjE3OTA4ZTMzZjdlN2RiM2IxNTg4YzA0Y2E2NWI4NTY3OTMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzYgMjAwOSAtMDUwMAotCi0gICAgdG9vbHMvTWFrZWZpbGU6IE1ha2UgaW1nMnNyZWMgZGVwZW5kZW50IHVwb24gQ09ORklHX0NNRF9MT0FEUwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDMzNWZmZTdlMGUwYTMwZTkwY2U0MDljMzI3OTAxNmE1ODIxNTdkOGUKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MzUgMjAwOSAtMDUwMAotCi0gICAgdG9vbHMvTWFrZWZpbGU6IEJ1aWxkIGJtcF9sb2dvIG9ubHkgd2hlbiBMQ0Qgb3IgVklERU8gbG9nb3MgYXJlIGVuYWJsZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlZTM1ODRhNTk3MDIzMGVlOTZhYWUxOTUwNWFkMzIyNjczNGVlNGZmCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjM0IDIwMDkgLTA1MDAKLQotICAgIHRvb2xzL01ha2VmaWxlOiBTcGxpdCB2YXJpYWJsZSBkZWNsYXJhdGlvbnMgaW50byBtdWx0aXBsZSBsaW5lcwotCi0gICAgU3BsaXQgdmFyaWFibGUgZGVjbGFyYXRpb25zIGludG8gbXVsdGlwbGUgbGluZXMgYW5kIHVzZSB0aGUgc3RhbmRhcmQKLSAgICBWQVIteSBjb252ZW50aW9uLiAgQWxzbyBtb3ZlIG9iamVjdCBhbmQgYmluYXJ5IHZhcmlhYmxlIGRlY2xhcmF0aW9ucyB0bwotICAgIGFmdGVyIGNvbmZpZy5tayBoYXMgYmVlbiBpbmNsdWRlZCB0byBhbGxvdyBmb3IgdGhlc2UgbGlzdHMgdG8gdXRpbGl6ZQotICAgIHRoZSBDT05GSUdfWFhYIHZhcmlhYmxlcy4KLQotICAgIFRoZXNlIGNoYW5nZXMgbGF5IHRoZSBncm91bmR3b3JrIGZvciBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBmaWxlcwotICAgIGluIHRoZSB0b29scyBkaXJlY3RvcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgMjFkMjhlOTVlZDg3NGFiMWVkOTc4N2Y5MzlkOGE1M2U5OWQzMGRkYgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE1hciAxMyAxODo1NDozMyAyMDA5IC0wNTAwCi0KLSAgICB0b29scy9NYWtlZmlsZTogUmVtb3ZlIGluYXBwcm9wcmlhdGUgZG91YmxlLXRhYnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA2NTJmNGJhMDc2Njg5ZmQwYWNkNDQ3NTYxYTc3N2IxYzQ0MGE0YjU3Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjMyIDIwMDkgLTA1MDAKLQotICAgIHRvb2xzL01ha2VmaWxlOiBSZW1vdmUgSE9TVEFSQ0ggSE9TVE9TIGRlZmluZXMKLQotICAgIFRoZSB2YWx1ZXMgb2YgSE9TVEFSQ0ggYW5kIEhPU1RPUyB3aGljaCBhcmUgZXhwb3J0ZWQgZnJvbSB0aGUgdG9wLWxldmVsCi0gICAgTWFrZWZpbGUgc2hvdWxkIGJlIHVzZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAyZWViNGU5NWZiZmFmZTU0NjQ1ZmFlN2VjMGIyNTk0MTAxZjA1NzNiCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjMxIDIwMDkgLTA1MDAKLQotICAgIGdlbl9ldGhfYWRkcjogVXNlIFBPU0lYIHJhbmQoKSBhbmQgc3JhbmQoKQotCi0gICAgUmVwbGFjZSByYW5kb20oKS9zcmFuZG9tKCkgdXNlIHdpdGggcmFuZCgpL3NyYW5kKCkgdG8gc3VwcG9ydAotICAgIGNvbXBpbGF0aW9uIHdpdGggdGhlIG1pbmd3IHRvb2xjaGFpbi4gIFRoZSByYW5kKCkvc3JhbmQoKSBmdW5jdGlvbnMgYXJlCi0gICAgZ2VuZXJhbGx5IG1vcmUgY29tbW9uIGFuZCBhcmUgZnVuY3Rpb25hbGx5IGVxdWl2YWxlbnQgdG8gdGhlIG9yaWdpbmFsCi0gICAgcmFuZG9tKCkvc3JhbmRvbSgpIGNhbGxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDI0ZDJhZTVlOWRlYmU0Yjc1MTUxYTU1MjUxMDMxYTE0NDc3ZmE4NzUKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MjggMjAwOSAtMDUwMAotCi0gICAgZWxmLmg6IFVzZSBzdGRpbnQuaCB0byBwcm92aWRlIHN0YW5kYXJkIHR5cGVkZWZzIGZvciBXSU4zMgotCi0gICAgVGhlIG9yaWdpbmFsIGNvZGUgcHJvdmlkZWQgYW4gaW5jb21wbGV0ZSBzZXQgb2YgdHlwZWRlZnMgZm9yIFdJTjMyCi0gICAgY29tcGlsZXMgYW5kIHJlcGxpY2F0ZWQgdGhlIHN0YW5kYXJkIHR5cGVkZWZzIHRoYXQgYXJlIGFscmVhZHkKLSAgICBwcm92aWRlZCBieSBzdGRpbnQuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGE3MDZiZmM3ZDBlMmQxOTM1YzU2NzAwNDUyODhlNmNkMWZmZGZhYmMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTg6NTQ6MjcgMjAwOSAtMDUwMAotCi0gICAgY29tbW9uL01ha2VmaWxlOiBDb25kaXRpb25hbGx5IGNvbXBpbGUgZW52X2VtYmVkZGVkLm8KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAyYjQ4ZjdkNWY2MjgzNWY4NzI3OGVmYjQ5ODM5N2I2YWU5ZTJkMTE3Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjI2IDIwMDkgLTA1MDAKLQotICAgIE1ha2VmaWxlOiBBZGQgcmVtb3ZhbCBvZiAqLmV4ZSBmaWxlcyB0byBjbGVhbiB0YXJnZXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBkMGQ2MTQ0ZTBlNGEwM2E2ODMxMWI3ODFmM2RkZTM4ZGM5MzE2YjgyCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDE4OjU0OjI1IDIwMDkgLTA1MDAKLQotICAgIE1ha2VmaWxlOiBNYWtlIGF1dG9jb25mLm1rIGEgZGVwZW5kZW5jeSBvZiB0aGUgZGVwZW5kIHRhcmdldAotCi0gICAgVGhlIG9yaWdpbmFsIGNvZGUgZGlkIG5vdCBnZW5lcmF0ZSBhdXRvY29uZi5tayB1bnRpbCBhZnRlciBzb21lIHRhcmdldHMKLSAgICBkZXBlbmRlbmNpZXMgaGFkIGFscmVhZHkgYmVlbiBjYWxjdWxhdGVkLCBmb3IgZXhhbXBsZSB0aGUgZGlyZWN0b3JpZXMgaW4KLSAgICB0aGUgU1VCRElSUyB2YXJpYWJsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDc1ZWI4MmVjN2NhY2IxOGQwNTlkNzAxYjM1Njc3YjkzZDJiYjc1OTYKLUF1dGhvcjogdW5zaWsgS2ltIDxkb25hcmk3NUBnbWFpbC5jb20+Ci1EYXRlOglXZWQgRmViIDI1IDExOjMxOjI0IDIwMDkgKzA5MDAKLQotICAgIG1mbGFzaDogSW5pdGlhbCBtZmxhc2ggc3VwcG9ydAotCi0gICAgTWZsYXNoIGlzIGZ1c2lvbiBtZW1vcnkgZGV2aWNlIG1haW5seSB0YXJnZXRlZCBjb25zdW1lciBlbGV0cm9uaWMgYW5kCi0gICAgbW9iaWxlIHBob25lLgotICAgIEludGVybmFsbHksIGl0IGhhdmUgbmFuZCBmbGFzaCBhbmQgb3RoZXIgaGFyZHdhcmUgbG9naWNzIGFuZCBzdXBwb3J0cwotICAgIHNvbWUgZGlmZmVyZW50IG9wZXJhdGlvbiAoQVRBLCBJTywgWElQKSBtb2Rlcy4KLQotICAgIElPIG1vZGUgaXMgY3VzdG9tIG1vZGUgZm9yIHRoZSBob3N0IHRoYXQgZG9lc24ndCBoYXZlIElERSBpbnRlcmZhY2UuCi0gICAgKE1hbnkgbW9iaWxlIHRhcmdldGVkIFNvQyBkb2Vzbid0IGhhdmUgSURFIGJ1cykKLQotICAgIFRoaXMgZHJpdmVyIHN1cHBvcnQgbWZsYXNoIElPIG1vZGUuCi0KLSAgICBGb2xsb3dpbmdzIGFyZSBicmllZiBkZXNjcmlwdGlvbnMgYWJvdXQgSU8gbW9kZS4KLQotICAgIDEuIElPIG1vZGUgYmFzZWQgb24gQVRBIHByb3RvY29sIGFuZCB1c2VzIHNvbWUgY3VzdG9tIGNvbW1hbmQuIChyZWFkCi0gICAgICAgY29uZmlybSwgd3JpdGUgY29uZmlybSkKLSAgICAyLiBJTyBtb2RlIHVzZXMgU1JBTSBidXMgaW50ZXJmYWNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogdW5zaWsgS2ltIDxkb25hcmk3NUBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyMDA3NzllM2UyYTlhZWRhNzAzMGIxNzFhOGMzOWQ3Nzk3MDE5OTE3Ci1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAzIDExOjUzOjAxIDIwMDkgKzAyMDAKLQotICAgIFJlbmFtZSBjb21tb24gbnMxNjU1MCBjb25zdGFudHMgd2l0aCBVQVJUXyBwcmVmaXggdG8gcHJldmVudCBjb25mbGljdHMKLQotICAgIEZpeCBwcm9ibGVtcyBpbnRyb2R1Y2VkIGluIGNvbW1pdAotICAgIDdiNTYxMWNkZDEyY2EwY2MzM2Y5OTRmMGQ0YTQ0NTQ3ODhmYzMxMjQgW2lua2E0eDA6IEFkZCBoYXJkd2FyZQotICAgIGRpYWdub3NpcyBmdW5jdGlvbnMgZm9yIGlua2E0eDBdIHdoaWNoIHJlZGVmaW5lZCBNU1JfUkkgd2hpY2ggaXMKLSAgICBhbHJlYWR5IHVzZWQgb24gUG93ZXJQQyBzeXN0ZW1zLgotCi0gICAgQWxzbyBlbGltaW5hdGUgcmVkdW5kYW50IGRlZmluaXRpb25zIGluIHBzMm11bHQuaC4JTW9yZSBjbGVhbnVwIHdpbGwKLSAgICBiZSBuZWVkZWQgZm9yIG90aGVyIHJlZHVuZGFudCBvY2N1cnJlbmNlcyB0aG91Z2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDk5MDY3YjA4ZjRhMGNlMjBmZjMzN2EzNTIxMTIzOWYzMzRkOGY0NTEKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXByIDEgMTU6MzM6MjQgMjAwOSAtMDUwMAotCi0gICAgTm9pc2lseSBkaXNhYmxlIHRoZSBsZWdhY3kgTkFORCBzdWJzeXN0ZW0uCi0KLSAgICBMZWdhY3kgTkFORCBpcyBtYXJrZWQgZm9yIGZlYXR1cmUgcmVtb3ZhbCBhZnRlciBBcHJpbCAyMDA5IChpLmUuIHRoaXMKLSAgICB1cGNvbWluZyByZWxlYXNlKS4JVGhlcmUgYXJlIHN0aWxsIHNldmVyYWwgYm9hcmRzIHRoYXQgcmVmZXJlbmNlIGl0Ci0gICAgKHRob3VnaCBtYW55IGRvIHNvIG9ubHkgZm9yIGRpc2stb24tY2hpcCBzdXBwb3J0IHdoaWNoIGhhcyBiZWVuIHNpbGVudGx5Ci0gICAgZGlzYWJsZWQgZm9yIGEgd2hpbGUgbm93KS4JVGhlc2UgYm9hcmRzIHdpbGwgbm93IGZhaWwgdG8gYnVpbGQKLSAgICB3aXRoICNlcnJvciwgdGhvdWdoIHRoZSBjb2RlIGlzIHN0aWxsIHRoZXJlIGlmIHRoZSB1c2VyIHJlbW92ZXMgI2Vycm9yLgotCi0gICAgVGhlIHBsYW4gaXMgdG8gcmVtb3ZlIHRoZSBjb2RlIG91dHJpZ2h0IGluIHRoZSBuZXh0IHJlbGVhc2UsIGFsb25nIHdpdGgKLSAgICBhbnkgYm9hcmQgY29kZSB0aGF0IHJlZmVycyB0byBpdCAoc3VjaCBhcyBib2FyZC9lc2QvY29tbW9uL2F1dG9fdXBkYXRlLmMpLgotCi0gICAgQWxzbywgcmVtb3ZlIHRoZSBsZWdhY3kgTkFORCBBUEkgZGVzY3JpcHRpb24gZnJvbSBSRUFETUUubmFuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjliY2FiYjUxNjg2ZmRkMTMzY2IxODQ4YzBkM2IwYTRmYzZjYTVjZgotQXV0aG9yOiBhcGdtb29ydGh5IDxtb29ydGh5LmFwZ0BzYW1zdW5nLmNvbT4KLURhdGU6CUZyaSBNYXIgMjcgMTQ6NDU6MjMgMjAwOSArMDUzMAotCi0gICAgRml4IE9uZU5BTkQgaXBsIHRvIHJlYWQgQ09ORklHX1NZU19NT05JVE9SX0xFTgotCi0gICAgQ3VycmVudGx5IE9uZU5BTkQgaW5pdGlhbCBwcm9ncmFtIGxvYWRlciAoaXBsKSByZWFkcyBvbmx5IGJsb2NrIDAgaWUgMTI4S0IuCi0gICAgSG93ZXZlciwgdS1ib290IGltYWdlIGZvciBhcG9sbG9uIGJvYXJkIGlzIDE5NUtCIG1ha2luZyB0aGUgYm9hcmQKLSAgICB1bmJvb3RhYmxlIHdpdGggT25lTkFORC4KLQotICAgIEZpeCBpcGwgdG8gcmVhZCBDT05GSUdfU1lTX01PTklUT1JfTEVOLgotICAgIENPTkZJR19TWVNfTU9OSVRPUl9MRU4gbWFjcm8gaG9sZHMgdGhlIFUtQm9vdCBpbWFnZSBzaXplLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9oaXQgSGFnYXJndW5kZ2kgPGgucm9oaXRAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogR2FuZ2hleWFtb29ydGh5ICAgPG1vb3J0aHkuYXBnQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzRkZTdhZWZkNzk2OTBiYWU4Y2Y1YTUxMjBmNTk2MmQ0NDRiZTA4OQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxIDIzOjM0OjEyIDIwMDkgKzAyMDAKLQotICAgIEFkZCAic291cmNlIiBjb21tYW5kOyBwcmVwYXJlIHJlbW92YWwgb2YgImF1dG9zY3IiIGNvbW1hbmQKLQotICAgIEFjY29yZGluZyB0byB0aGUgZG9jL2ZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQsIHRoZSAiYXV0b3NjciIKLSAgICBjb21tYW5kIHdpbGwgYmUgcmVwbGFjZWQgYnkgdGhlICJzb3VyY2UiIGNvbW1hbmQgaW4gYXBwcm94aW1hdGVseSA2Ci0gICAgbW9udGhzIGZyb20gbm93LgotCi0gICAgVGhpcyBwYXRjaCBwcmVwYXJlcyB0aGlzIGNoYW5nZSBhbmQgc3RhcnRzIGEgNiBtb250aCB0cmFuc2l0aW9uCi0gICAgcGVyaW9kIGFzIGZvbGxvd3M6Ci0KLSAgICAtIFRoZSBuZXcgInNvdXJjZSIgY29tbWFuZCBoYXMgYmVlbiBhZGRlZCwgd2hpY2ggaW1wbGVtZW50cyBleGFjdGx5Ci0gICAgICB0aGUgc2FtZSBmdW5jdGlvbmxhaXR5IGFzIHRoZSBvbGQgImF1dG9zY3IiIGNvbW1hbmQgYmVmb3JlCi0gICAgLSBUaGUgb2xkICJhdXRvc2NyIiBjb21tYW5kIG5hbWUgaXMga2VwdCBhcyBhbiBhbGlhcyBmb3IgY29tcGF0aWJpbGl0eQotICAgIC0gQ29tbWFuZCBzZXF1ZW5jZXMsIHNjcmlwdCBmaWxlcyBhdGMuIGhhdmUgYmVlbiBhZGFwdGVkIHRvIHVzZSB0aGUKLSAgICAgIG5ldyAic291cmNlIiBjb21tYW5kCi0gICAgLSBSZWxhdGVkIGVudmlyb25tZW50IHZhcmlhYmxlcyAoImF1dG9zY3JpcHQiLCAiYXV0b3NjcmlwdF91bmFtZSIpCi0gICAgICBoYXZlICpub3QqIGJlZW4gYWRhcHRlZCB5ZXQ7IHRoZXNlIHdpbGwgYmUgcmVuYW1lZCByZXNwLiByZW1vdmVkIGluCi0gICAgICBhIHNlcGFyYXRlIHBhdGNoIHdoZW4gdGhlIHN1cHBvcnQgZm9yIHRoZSAiYXV0b3NjciIgY29tbWFuZCBnZXQncwotICAgICAgZmluYWxseSBkcm9wcGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDc4MjM3ZGY1NTI0ODAzNGEyZDdjMmRhZWE5OTJiOWRiZTdjYThlOTYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBBcHIgMiAxNzozMTowOSAyMDA5ICswMjAwCi0KLSAgICBBZGQgIkdQTCBjbGVhbnVwIiB0YXNrIHRvIGZlYXR1cmUtcmVtb3ZhbC1zY2hlZHVsZS50eHQKLQotICAgIEFubm91bmNlIHJlbW92YWwgb2YgYWxsIG5vbi1HUEwgb3IgR1BMLWluY29tcGF0aWJsZSBmaWxlcwotICAgIGFmdGVyIEF1Z3VzdCAyMDA5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQ5NTk2ZmZiZGM3OWNlYTI4NTAxMGI2N2RkMjBhNDYxODMwM2Y2MjQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEFwciAyIDEyOjUxOjI4IDIwMDkgLTA0MDAKLQotICAgIHNmOiBzdG1pY3JvOiBkb250IHNlbmQgNCBieXRlcyB3aGVuIHJlYWRpbmcgc3RhdHVzIHJlZ2lzdGVyCi0KLSAgICBJIGNhbid0IGZpbmQgYW55d2hlcmUgaW4gdGhlIGRhdGFzaGVldCB0aGF0IHNheXMgdGhlIHN0YXR1cyByZWdpc3RlciBuZWVkcwotICAgIDMgZHVtbXkgYnl0ZXMgc2VudCB0byBpdCBiZWZvcmUgYmVpbmcgYWJsZSB0byByZWFkIGJhY2sgdGhlIGZpcnN0IHJlYWwKLSAgICByZXN1bHQuICBUZXN0cyBvbiBhIEJsYWNrZmluIGJvYXJkIHNob3cgdGhhdCBhZnRlciB3cml0aW5nIHRoZSBvcGNvZGUsIHRoZQotICAgIHN0YXR1cyByZWdpc3RlciBzdGFydHMgY29taW5nIGJhY2sgaW1tZWRpYXRlbHkuICBTbyBvbmx5IHdyaXRlIG91dCB0aGUKLSAgICByZWFkIHN0YXR1cyByZWdpc3RlciBvcGNvZGUgYmVmb3JlIHBvbGxpbmcgdGhlIHJlc3VsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+Ci0gICAgQ0M6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYWJlMzY1ZmZjZmMyOWMwNjFlOGZkOGI0NTU1MWJlNWFkMTQyOGRkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBcHIgMiAwODoxMTozMSAyMDA5IC0wNDAwCi0KLSAgICBzZjogc2V0IGNvbW1vbiB0aW1lb3V0cyBpbiBzZWNvbmRzLCBub3QgbWlsbGlzZWNvbmRzCi0KLSAgICBTaW5jZSB0aW1lb3V0cyBhcmUgb25seSBoaXQgd2hlbiB0aGVyZSBpcyBhIHByb2JsZW0gaW4gdGhlIHN5c3RlbSwgd2UKLSAgICBkb24ndCB3YW50IHRvIHByZW1hdHVyZWx5IHRpbWVvdXQgb24gYSBmdW5jdGlvbmluZyBzZXR1cC4gIFRodXMgaGF2aW5nCi0gICAgbG93IHRpbWVvdXRzIChpbiBtaWxsaXNlY29uZHMpIGRvZXNuJ3QgZ2FpbiB1cyBhbnl0aGluZyBpbiB0aGUgcHJvZHVjdGlvbgotICAgIGNhc2UsIGJ1dCByYXRoZXIgaW5jcmVhc2VzIGxpa2VseSBob29kIG9mIGNhdXNpbmcgcHJvYmxlbXMgd2hlcmUgbm9uZQotICAgIG90aGVyd2lzZSBleGlzdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMmE2Y2UxMTE1YjNjYmU3NDY5NjVjZmEwMDU4Y2U2NDViNmMxYWRhMQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXByIDIgMDY6NTE6NDkgMjAwOSAtMDQwMAotCi0gICAgc2Y6IHN0bWljcm86IHVzZSBjb21tb24gcGFnZSB0aW1lb3V0IGRlZmluZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAwZGNkYmIxNzJjMmZkZjYwYzVjNTc4OTgwMzA4YjMxMmZkNTY0OTZmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBNYXIgMjggMDY6NDE6MDkgMjAwOSAtMDQwMAotCi0gICAgc2Y6IGFsd2F5cyByZWFkIDUgYnl0ZXMgZm9yIHRoZSBpZGNvZGUKLQotICAgIFNvbWUgU1BJIGZsYXNoIGRyaXZlcnMgbGlrZSB0byBoYXZlIGV4dGVuZGVkIGlkIGluZm9ybWF0aW9uIGF2YWlsYWJsZQotICAgIChsaWtlIHRoZSBzcGFuc2lvbiBmbGFzaCksIHNvIHJhdGhlciB0aGFuIG1ha2luZyBpdCByZS1pc3N1ZSB0aGUgSUQgY21kCi0gICAgdG8gZ2V0IGF0IHRoZSBsYXN0IDIgYnl0ZXMsIGhhdmUgdGhlIGNvbW1vbiBjb2RlIHJlYWQgNSBieXRlcyByYXRoZXIgdGhhbgotICAgIGp1c3QgMy4gIFRoaXMgYWxzbyBtYXRjaGVzIHRoZSBMaW51eCBiZWhhdmlvciB3aGVyZSBpdCBhbHdheXMgcmVhZHMgNSBpZAotICAgIGJ5dGVzIGZyb20gYWxsIGZsYXNoZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLSAgICBDQzogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTcyNmJhNGFiYWExNmNkNmMzODVhZDM1MGQ0MDNmOThhOGVhY2Y1MgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgTWFyIDI3IDE2OjM0OjIxIDIwMDkgLTA0MDAKLQotICAgIHNmOiBzdG1pY3JvOiBkcm9wIHJlZHVuZGFudCBpZCByZWFkCi0KLSAgICBUaGUgY29tbW9uIFNQSSBmbGFzaCBjb2RlIHJlYWRzIHRoZSBpZGNvZGUgYW5kIHBhc3NlcyBpdCBkb3duIHRvIHRoZSBTUEkKLSAgICBmbGFzaCBkcml2ZXIsIHNvIHRoZXJlIGlzIG5vIG5lZWQgdG8gcmVhZCBpdCBhZ2FpbiBvdXJzZWx2ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLSAgICBDQzogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+Ci0gICAgQ0M6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYzU4NzQzNzRlMDkxYjRiYjYyOTE3YzUxOTg2MWY3NjgyZmUwNjZlCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBNYXIgMjcgMTk6Mjc6NTggMjAwOSAtMDQwMAotCi0gICAgc2Y6IGFkZCBkcml2ZXIgZm9yIFNTVCBmbGFzaGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGY3NzNhMWJiZGI4ZjNiZjFkZGFiMjg3NGYzNmYwNDNjNGY4ZjA0NGQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE1hciAyMyAyMzowMzo1OCAyMDA5IC0wNDAwCi0KLSAgICBzZjogZHJvcCBERUJVRyBkZWZpbmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDZiODUwYTlmYThhMjE2ZjM2OTJkYTI1MTFjYjFhNmMxNjQwOWIxYWYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBKYW4gNCAwNzo0NDowNyAyMDA5ICswMTAwCi0KLSAgICBtdGQ6IGFkZCBzb21lIGF0NDUgc3BpIGZsYXNoIHN1cHBvcnQKLQotICAgICAtIEFUNDVEQjMyMUQKLSAgICAgLSBBVDQ1REIxNjFECi0gICAgIC0gQVQ0NURCMDgxRAotICAgICAtIEFUNDVEQjA0MUQKLSAgICAgLSBBVDQ1REIwMjFECi0gICAgIC0gQVQ0NURCMDExRAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2ODA1ZTRiZjgzZTZmNDQ0Zjc0MTExMDEyMjg3NjZjOGE3YWVjNWY3Ci1BdXRob3I6IE1pbmdrYWkgSHUgPE1pbmdrYWkuaHVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBNYXIgMzEgMTQ6MDk6NDEgMjAwOSArMDgwMAotCi0gICAgbXRkOiBTUEkgRmxhc2g6IFN1cHBvcnQgdGhlIFNwYW5zaW9uIEZsYXNoCi0KLSAgICBBZGQgTVREIFNQSSBGbGFzaCBzdXBwb3J0IGZvciBTMjVGTDAwOEEsIFMyNUZMMDE2QSwKLSAgICBTMjVGTDAzMkEsIFMyNUZMMDY0QSwgUzI1RkwxMjhQLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWluZ2thaSBIdSA8TWluZ2thaS5odUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDQwNTg3NzAxOTI0YWEwYWZjODZiMzg0MDQyMWI0Y2M2ZGU0MmM3NDgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE1hciAzMCAyMDo1Njo0NSAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZm9yY2UgYWxsIGJvYXJkcyB0byBIWiBvZiAxMDAwCi0KLSAgICBTaW5jZSB0aGUgQmxhY2tmaW4gdGltZXIgY29kZSByZXF1aXJlcyBIWiB0byBiZSAxMDAwLCBiYXJmIG9uIGFueSBib2FyZAotICAgIHRoYXQgdHJpZXMgdG8gdXNlIGEgZGlmZmVyZW50IHZhbHVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZjQwMzJkMmVlYzlkNzFhNTljNmM3MjQ2NzFlNTc3ZjY3YTc2ODM5YgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgTWFyIDI3IDIxOjA3OjQ1IDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZjUzMy1zdGFtcDogZHJvcCBvbGQgc3BpIGZsYXNoIGRyaXZlcgotCi0gICAgTm93IHRoYXQgdGhlIGNvbW1vbiBTUEkgZmxhc2ggY29kZSBzdXBwb3J0cyBhbGwgdGhlIGZsYXNoZXMsIHdlIGNhbiBzdG9wCi0gICAgdXNpbmcgdGhlIG9sZCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiYzcyZjUwYTY1OWQwZDFiNTUxODE3ZTE5MTBiOWIyYmUxYzdlNDk2Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBNYXIgMjYgMTU6NDI6MTIgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFkZCBCRjUzOC9CRjUzOSBTUEkgcG9ydG11eCBoYW5kbGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNDZhYzM1MmYwZjk0MDZhNWY5YWExNTdhYzYyODY3ZmI0NjUwZGZkMwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gTWFyIDIzIDIyOjM2OjEwIDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBkbyBub3QgZGVsYXkgb24gb3V0cHV0IGJ5dGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBkYmM2YWI5Zjc1YmQwYzEzZDNmNDI2OTJlOTQ2M2Y4YWI2NWZjMzgyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBNYXIgMjMgMjI6MTc6MjcgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IGRyb3AgbmV3bGluZSBmcm9tIE9UUCBoZWxwCi0KLSAgICBMb29rcyBsaWtlIEkgYWNjaWRlbnRhbGx5IGFkZGVkIGEgbmV3bGluZSB0byB0aGUgT1RQIGhlbHAgd2hlbiBtZXJnaW5nIGFuZAotICAgIG9sZGVyIGNoYW5nZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQzYzM4ZDk2Yjk5MWQ2NDFhMzNmNzc0ODEzMGRhZTAwODU2M2NkYzkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE1hciAyMiAyMzo0MzozMSAyMDA5IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogY29udmVydCBiZmluX3NkaCB0byBsZWdhY3kgbW1jCi0KLSAgICBUaGUgQmxhY2tmaW4gU0RIIGNvbnRyb2xsZXIgaXMgc3RpbGwgdXNpbmcgdGhlIGxlZ2FjeSBmcmFtZXdvcmssIHNvIHVwZGF0ZQotICAgIHRoZSBkcml2ZXIgdG8gdXNlIHRoZSByZW5hbWVkIGZ1bmN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQyNDhjZmIyZDk0MGI3NDJmNmJmZGJhOWI4MzJhM2RmOTZkYTMxMDEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEZlYiAyMiAxNjozMDozOCAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IHNwbGl0IENGL0lERSBjb2RlIG91dCBpbnRvIGRlZGljYXRlZCBjZi1pZGUuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYWQ5MDczMjExY2E5ZTYyMTYyYTM5ODUxZTA4MmI4ZDA3YTY2MmZiNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgRmViIDEzIDE3OjEwOjU4IDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiBmaXggY3Jhc2ggd2hlbiBib290aW5nIGZyb20gZXh0ZXJuYWwgbWVtb3J5Ci0KLSAgICBXaGVuIHRlc3RpbmcgYSB1LWJvb3QgYmluYXJ5IHRoYXQgaGFzbid0IGJlZW4gYm9vdGVkIGZyb20gdGhlIGJvb3Ryb20sIHdlCi0gICAgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIGJvb3RzdHJ1Y3Qgc3RydWN0dXJlIGhhcyBzYW5lIHN0b3JhZ2Ugc3BhY2UuCUlmIHdlCi0gICAgZG9uJ3QsIHRoZSBpbml0Y29kZSB3aWxsIGNyYXNoIHdoZW4gaXQgdHJpZXMgdG8gZGVyZWZlcmVuY2UgYW4gaW52YWxpZAotICAgIHBvaW50ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4NGE5ZGRhMzI0YzNmYWE1NmJlMTQ0NDlkNzUxOWI5OTNkOTM5N2E5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBPY3QgMTIgMjE6MzI6NTIgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTE4Zi1lemJyZDogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDBjMzFkZGY3YjcwZjc3ZGVkZTQyZGM4MmVjYWI3NzUzYTgxOWFjYWEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAyMTozMDo0OCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1MjYtZXpicmQ6IG5ldyBib2FyZCBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1YzQ1ZjdjYWMyZjc0ZTJjMTRhYTZiMDI4Y2Q5Njk2NTFjYzlhYzhlCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBPY3QgMTIgMjE6MjU6MzMgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTM4Zi1lemtpdDogbmV3IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQ5YTVkMTEzYjkzNTgzYzk4NDcxMTEyN2FiODUwM2UxMzZlZDFlNGEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAyMDo1OToxMiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1MjctZXpraXQ6IG5ldyBib2FyZCBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3NmQyMTgwM2RkZDdkYzRiY2I4MTczOWVhMmQzY2Q2NzllMDUyZjQ2Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBPY3QgMTIgMDU6MDU6NDIgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTQ4LWV6a2l0OiBuZXcgYm9hcmQgcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjdiODljNzllNzJmZTg2YjBlYTAxOTk0MjVkODgwNjMwYmViOTVkOAotQXV0aG9yOiBMYXVyZW50IEdyZWdvaXJlIDxsYXVyZW50LmdyZWdvaXJlQHRvbXRvbS5jb20+Ci1EYXRlOglUdWUgTWFyIDMgMTQ6MjM6NTkgMjAwOSArMDEwMAotCi0gICAgbGliZmR0OiBGaXggQysrIGNvbXBpbGUtdGltZSBjYXN0IGVycm9yIG9uIGdudSA0LjIuMQotCi0gICAgQWxsb3cgdGhlIGluY2x1c2lvbiBvZiBsaWJmZHQuaCBpbiBDKysgc291cmNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGF1cmVudCBHcmVnb2lyZSA8bGF1cmVudC5ncmVnb2lyZUB0b210b20uY29tPgotICAgIEFja2VkLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLQotY29tbWl0IDEzZDkzZjM4ZTg2ODE4NzM5MzE3YjAyMDZkNTk3MjY1Y2Y5ZTY3NWUKLUF1dGhvcjogRW1pbCBNZWR2ZSA8RW1pbGlhbi5NZWR2ZUBGcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEZlYiAyMyAxMDo0MzozNiAyMDA5IC0wNjAwCi0KLSAgICBGaXggYSBwb3NzaWJsZSBvdmVyZmxvdyBjYXNlIGRldGVjdGVkIGJ5IGdjYyA0LjMuMgotCi0gICAgLi4uL2R0Yy9saWJmZHQvZmR0X3N3LmM6IEluIGZ1bmN0aW9uICdmZHRfZW5kX25vZGUnOgotICAgIC4uLi9kdGMvbGliZmR0L2ZkdF9zdy5jOjgxOiBlcnJvcjogYXNzdW1pbmcgc2lnbmVkIG92ZXJmbG93IGRvZXMgbm90IG9jY3VyIHdoZW4gYXNzdW1pbmcgdGhhdCAoWCArIGMpIDwgWCBpcyBhbHdheXMgZmFsc2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVtaWwgTWVkdmUgPEVtaWxpYW4uTWVkdmVARnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGEyMmQ5Y2ZiYjViY2ZiM2RjNmZmZDY0ZDM5MWI1NjhlOGEwY2UzODMKLUF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci1EYXRlOglGcmkgRmViIDYgMTQ6MDM6MjQgMjAwOSArMTEwMAotCi0gICAgbGliZmR0OiBSZXdvcmsvY2xlYW51cCBmZHRfbmV4dF90YWcoKQotCi0gICAgQ3VycmVudGx5LCBjYWxsZXJzIG9mIGZkdF9uZXh0X3RhZygpIG11c3QgdXN1YWxseSBmb2xsb3cgdGhlIGNhbGwgd2l0aAotICAgIHNvbWUgc29ydCBvZiBjYWxsIHRvIGZkdF9vZmZzZXRfcHRyKCkgdG8gdmVyaWZ5IHRoYXQgdGhlIGJsb2IgaXNuJ3QKLSAgICB0cnVuY2F0ZWQgaW4gdGhlIG1pZGRsZSBvZiB0aGUgdGFnIGRhdGEgdGhleSdyZSBnb2luZyB0byBwcm9jZXNzLgotICAgIFRoaXMgaXMgYSBiaXQgc2lsbHksIHNpbmNlIGZkdF9uZXh0X3RhZygpIGdlbmVyYWxseSBoYXMgdG8gY2FsbAotICAgIGZkdF9vZmZzZXRfcHRyKCkgb24gYXQgbGVhc3Qgc29tZSBvZiB0aGUgZGF0YSBmb2xsb3dpbmcgdGhlIHRhZyBmb3IKLSAgICBpdHMgb3duIG9wZXJhdGlvbi4KLQotICAgIFRoaXMgcGF0Y2ggYWx0ZXJzIGZkdF9uZXh0X3RhZygpIHRvIGFsd2F5cyB1c2UgZmR0X29mZnNldF9wdHIoKSB0bwotICAgIHZlcmlmeSB0aGUgZGF0YSBiZXR3ZWVuIGl0cyBzdGFydGluZyBvZmZzZXQgYW5kIHRoZSBvZmZzZXQgaXQgcmV0dXJucwotICAgIGluIG5leHRvZmZzZXQuICBUaGlzIHNpbXBsaWZpZXMgZmR0X2dldF9wcm9wZXJ0eSgpIHdoaWNoIG5vIGxvbmdlciBoYXMKLSAgICB0byB2ZXJpZnkgaXRzZWxmIHRoYXQgdGhlIHByb3BlcnR5IGRhdGEgaXMgYWxsIHByZXNlbnQuCi0KLSAgICBBdCB0aGUgc2FtZSB0aW1lLCBJIG5lYXRlbiBhbmQgY2xhcmlmeSB0aGUgZXJyb3IgaGFuZGxpbmcgZm9yCi0gICAgZmR0X25leHRfdGFnKCkuICBQcmV2aW91c2x5LCBmZHRfbmV4dF90YWcoKSBjb3VsZCByZXR1cm4gLTEgaW5zdGVhZCBvZgotICAgIGEgdGFnIHZhbHVlIGluIHNvbWUgY2lyY3Vtc3RhbmNlcyAtIHdoaWNoIGFsbW9zdCBub25lIG9mIHRoZSBjYWxsZXJzCi0gICAgY2hlY2tlZCBmb3IuICBBbHNvLCBmZHRfbmV4dF90YWcoKSBjb3VsZCByZXR1cm4gRkRUX0VORCBlaXRoZXIgYmVjYXVzZQotICAgIGl0IGVuY291bnRlcmVkIGFuIEZEVF9FTkQgdGFnLCBvciBiZWNhdXNlIGl0IHJlYWNoZWQgdGhlIGVuZCBvZiB0aGUKLSAgICBzdHJ1Y3R1cmUgYmxvY2sgLSBubyB3YXkgd2FzIHByb3ZpZGVkIHRvIHRlbGwgYmV0d2VlbiB0aGVzZSBjYXNlcy4KLQotICAgIFdpdGggdGhpcyBwYXRjaCwgZmR0X25leHRfdGFnKCkgYWx3YXlzIHJldHVybnMgRkRUX0VORCB3aXRoIGEgbmVnYXRpdmUKLSAgICB2YWx1ZSBpbiBuZXh0b2Zmc2V0IGZvciBhbiBlcnJvci4gIFRoaXMgbWVhbnMgdGhlIHNldmVyYWwgcGxhY2VzIHdoaWNoCi0gICAgbG9vcCBsb29raW5nIGZvciBGRFRfRU5EIHdpbGwgc3RpbGwgd29yayBjb3JyZWN0bHkgLSB0aGV5IG9ubHkgbmVlZCB0bwotICAgIGNoZWNrIGZvciBlcnJvcnMgYXQgdGhlIGVuZC4gIFRoZSBlcnJvcnMgd2hpY2ggZmR0X25leHRfdGFnKCkgY2FuCi0gICAgcmVwb3J0IGFyZToKLQktIC1GRFRfRVJSX1RSVU5DQVRFRCBpZiBpdCByZWFjaGVkIHRoZSBlbmQgb2YgdGhlIHN0cnVjdHVyZQotCSAgIGJsb2NrIGluc3RlYWQgb2YgZmluZGluZyBhIHRhZy4KLQotCS0gLUZEVF9CQURTVFJVQ1RVUkUgaWYgYSBiYWQgdGFnIHdhcyBlbmNvdW50ZXJlZCwgb3IgaWYgdGhlCi0JICAgICAgIHRhZyBkYXRhIGNvdWxkbid0IGJlIHZlcmlmaWVkIHdpdGggZmR0X29mZnNldF9wdHIoKS4KLQotICAgIFRoaXMgcGF0Y2ggYWxzbyB1cGRhdGVzIHRoZSBjYWxsZXJzIG9mIGZkdF9uZXh0X3RhZygpLCB3aGVyZQotICAgIGFwcHJvcHJpYXRlLCB0byBtYWtlIHVzZSBvZiB0aGUgbmV3IGVycm9yIHJlcG9ydGluZy4KLQotICAgIEZpbmFsbHksIHRoZSBwcm90b3R5cGUgZm9yIHRoZSBsb25nIGdvbmUgX2ZkdF9uZXh0X3RhZygpIGlzIHJlbW92ZWQKLSAgICBmcm9tIGxpYmZkdF9pbnRlcm5hbC5oLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0KLWNvbW1pdCAyYzBiODQzZTcxMGFhMWUyZGEyNWMyNTkyZTZkYmU1ZDBiMGFiN2RhCi1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJRnJpIEZlYiA2IDE0OjAxOjU2IDIwMDkgKzExMDAKLQotICAgIGxpYmZkdDogUmV3b3JrIGZkdF9uZXh0X25vZGUoKQotCi0gICAgQ3VycmVudGx5IGZkdF9uZXh0X25vZGUoKSB3aWxsIGZpbmQgdGhlIG5leHQgbm9kZSBpbiB0aGUgYmxvYgotICAgIHJlZ2FyZGxlc3Mgb2Ygd2hldGhlciBpdCBpcyBhYm92ZSwgYmVsb3cgb3IgYXQgdGhlIHNhbWUgbGV2ZWwgaW4gdGhlCi0gICAgdHJlZSBhcyB0aGUgc3RhcnRpbmcgbm9kZSAtIHRoZSBkZXB0aCBwYXJhbWV0ZXIgaXMgdXBkYXRlZCB0byBpbmRpY2F0ZQotICAgIHdoaWNoIGlzIHRoZSBjYXNlLglXaGVuIGEgZGVwdGggcGFyYW1ldGVyIGlzIHN1cHBsaWVkLCB0aGlzIHBhdGNoCi0gICAgbWFrZXMgaXQgaW5zdGVhZCB0ZXJtaW5hdGUgaW1tZWRpYXRlbHkgd2hlbiBpdCBmaW5kcyB0aGUgRU5EX05PREUgdGFnCi0gICAgZm9yIGEgbm9kZSBhdCBkZXB0aCAwLiAgSW4gdGhpcyBjYXNlIGl0IHJldHVybnMgdGhlIG9mZnNldCBpbW1lZGlhdGVseQotICAgIHBhc3QgdGhlIEVORF9OT0RFIHRhZy4KLQotICAgIFRoaXMgaGFzIGEgY291cGxlIG9mIGFkdmFudGFnZXMuICBGaXJzdCwgdGhpcyBzbGlnaHRseSBzaW1wbGlmaWVzCi0gICAgZmR0X3N1Ym5vZGVfb2Zmc2V0KCksIHdoaWNoIG5vIGxvbmdlciBuZWVkcyB0byBleHBsaWNpdGx5IGNoZWNrIHRoYXQKLSAgICBmZHRfbmV4dF9ub2RlKCkncyBpdGVyYXRpb24gaGFzbid0IGxlZnQgdGhlIHN0YXJ0aW5nIG5vZGUuCVNlY29uZCwKLSAgICB0aGlzIGFsbG93cyBmZHRfbmV4dF9ub2RlKCkgdG8gYmUgdXNlZCB0byBpbXBsZW1lbnQKLSAgICBfZmR0X25vZGVfZW5kX29mZnNldCgpIGNvbnNpZGVyYWJseSBzaW1wbGlmeWluZyB0aGUgbGF0dGVyIGZ1bmN0aW9uLgotCi0gICAgVGhlIG90aGVyIHVzZXJzIG9mIGZkdF9uZXh0X25vZGUoKSBlaXRoZXIgZG9uJ3QgbmVlZCB0byBpdGVyYXRlIG91dCBvZgotICAgIHRoZSBzdGFydGluZyBub2RlLCBvciBkb24ndCBwYXNzIGEgZGVwdGggcGFyYW1ldGVyIGF0IGFsbC4JQW55Ci0gICAgY2FsbGVycyB0aGF0IHJlYWxseSBuZWVkIHRvIGl0ZXJhdGUgb3V0IG9mIHRoZSBzdGFydGluZyBub2RlLCBidXQga2VlcAotICAgIHRyYWNraW5nIGRlcHRoIGNhbiBkbyBzbyBieSBiaWFzaW5nIHRoZSBpbml0aWFsIGRlcHRoIHZhbHVlLgotCi0gICAgVGhpcyBpcyBhIHNlbWFudGljIGNoYW5nZSwgYnV0IEkgdGhpbmsgaXQncyB2ZXJ5IHVubGlrZWx5IHRvIGJyZWFrIGFueQotICAgIGV4aXN0aW5nIGxpYnJhcnkgdXNlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLQotY29tbWl0IGMxMjMwOTgwMzViZThiYWUzODU5YmJmYmQwNjg2MWYxOTdjMDc2MzEKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWFyIDMxIDE3OjQ5OjM2IDIwMDkgLTA1MDAKLQotICAgIG1wYzgzeHg6IFNldCBndWFyZGVkIGJpdCBvbiBCQVQgdGhhdCBjb3ZlcnMgdGhlIGVuZCBvZiB0aGUgYWRkcmVzcyBzcGFjZQotCi0gICAgVGhlIG1wYzgzMTNlcmRiIGJvYXJkIGN1cnJlbnRseSBzZXRzIERCQVQ2IHRvIGNvdmVyIGFsbCBvZiB0aGUgZmluYWwgMjU2TWlCIG9mCi0gICAgYWRkcmVzcyBzcGFjZTsgaG93ZXZlciwgbm90IGFsbCBvZiB0aGlzIHNwYWNlIGlzIGNvdmVyZWQgYnkgYSBkZXZpY2UuICBJbgotICAgIHBhcnRpY3VsYXIsIGZsYXNoIHNpdHMgYXQgMHhmZTAwMDAwMC0weGZlN2ZmZmZmLCBhbmQgbm90aGluZyBpcyBtYXBwZWQKLSAgICBhdCB0aGUgZmFyIGVuZCBvZiB0aGUgYWRkcmVzcyBzcGFjZS4KLQotICAgIEluIHpsaWIsIHRoZXJlIGlzIGEgbG9vcCB0aGF0IHJlZmVyZW5jZXMgcFstMV0gaWYgcCBpcyBub24tTlVMTC4gIFVuZGVyCi0gICAgc29tZSBjaXJjdW1zdGFuY2VzLCB0aGlzIGxlYWRzIHRvIHRoZSBDUFUgc3BlY3VsYXRpdmVseSBsb2FkaW5nIGZyb20KLSAgICAweGZmZmZmZmY4IGlmIHAgaXMgTlVMTC4gIFRoaXMgbGVhZHMgdG8gYSBtYWNoaW5lIGNoZWNrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLSAgICBjb250aW51YXRpb24gdG8gdGhlIHJlbWFpbmluZyBtcGM4M3h4IGJvYXJkcyB0aGF0IHN1ZmZlciBmcm9tIHRoZSBzYW1lIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzJlYjhiZTdmNzYwYTJlZmUzMGE0OTViZmIxMDg1NzgzOGRjZjNmYQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAzMCAxNDoyODowNSAyMDA5IC0wNTAwCi0KLSAgICBydGM6IHJlbW92ZSBicm9rZW4gcnRjX3JlYWQgYW5kIHJ0Y193cml0ZSBkZWNsYXJhdGlvbnMKLQotICAgIGNvbW1pdCAwNGUxMWNmMyAicnRjOiBhZGQgc3VwcG9ydCBmb3IgNDU0MyBSVEMgKG1hbnVmYWN0dXJlZCBieSBlLmcuCi0gICAgRVBTT04pIiBpbnRyb2R1Y2VzIHRoZSBmb2xsb3dpbmcgYnVpbGQgZXJyb3Igb24gYm9hcmRzIGNvbmZpZ3VyaW5nIGUuZywKLSAgICB0aGUgZHMxMzc0IHJ0YzoKLQotICAgIENvbmZpZ3VyaW5nIGZvciBNUEM4MzdYRU1EUyBib2FyZC4uLgotICAgIGRzMTM3NC5jOjEwMzogZXJyb3I6IHN0YXRpYyBkZWNsYXJhdGlvbiBvZiAncnRjX3JlYWQnIGZvbGxvd3Mgbm9uLXN0YXRpYyBkZWNsYXJhdGlvbgotICAgIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvcnRjLmg6NjQ6IGVycm9yOiBwcmV2aW91cyBkZWNsYXJhdGlvbiBvZiAncnRjX3JlYWQnIHdhcyBoZXJlCi0gICAgZHMxMzc0LmM6MTA0OiBlcnJvcjogY29uZmxpY3RpbmcgdHlwZXMgZm9yICdydGNfd3JpdGUnCi0gICAgL2hvbWUvcjFhYWhhL2dpdC91LWJvb3QvaW5jbHVkZS9ydGMuaDo2NTogZXJyb3I6IHByZXZpb3VzIGRlY2xhcmF0aW9uIG9mICdydGNfd3JpdGUnIHdhcyBoZXJlCi0KLSAgICB0aGlzIHJldmVydHMgdGhlIGVycm9uZW91cyBjaHVuay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotICAgIENDOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBDQzogQW5kcmVhcyBQZmVmZmVybGUgPGFwQGRlbnguZGU+Ci0KLWNvbW1pdCBmYzM5YzJmZDUxZTY0NzA3ZGU0ZDYxZWQ0OTQ3OWViZWEyODQ3ZTFiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgTWFyIDMxIDE3OjU4OjEzIDIwMDkgLTA1MDAKLQotICAgIDg1eHgvODZ4eDogRW5zdXJlIE1QIGJvb3QgcGFnZSBpcyBub3QgdXNlZAotCi0gICAgV2UgaGFkIGEgYnVnIG9uIDg2eHggaW4gd2hpY2ggdGhlIGJvb3QgcGFnZSB1c2VkIHRvIGJyaW5nIHVwIHNlY29uZGFyeQotICAgIGNvcmVzIHdhcyBiZWluZyBvdmVyd3JpdHRlbiBhbmQgdXNlZCBmb3IgdGhlIG1hbGxvYyByZWdpb24gaW4gdS1ib290LgotCi0gICAgV2UgbmVlZCB0byByZXNlcnZlIHRoZSByZWdpb24gb2YgbWVtb3J5IHRoYXQgdGhlIGJvb3QgcGFnZSBpcyBnb2luZyB0bwotICAgIGJlIHB1dCBhdCBzbyBub3RoaW5nIHVzZXMgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjODQwZDI2Yzc1MjE0MWI5NGJiYzI0YWM3NDhkZGQ0NTc1MmE5NTVhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgTWFyIDMxIDIzOjExOjA1IDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IEludHJvZHVjZSBkZXRlcm1pbmVfbXBfYm9vdHBnKCkgaGVscGVyLgotCi0gICAgTWF0Y2ggZGV0ZXJtaW5lX21wX2Jvb3RwZygpIHRoYXQgd2FzIGFkZGVkIGZvciA4Nnh4LiAgV2UgbmVlZCB0aGlzIHRvCi0gICAgYWRkcmVzcyBhIGJ1ZyBpbnRyb2R1Y2VkIGluIHYyMDA5LjAzIHdpdGggODZ4eCBNUCBib290aW5nLglXZSBoYXZlIHRvCi0gICAgbWFrZSBzdXJlIHRvIHJlc2VydmUgdGhlIHJlZ2lvbiBvZiBtZW1vcnkgdXNlZCBmb3IgdGhlIE1QIGJvb3RwZygpIHNvCi0gICAgb3RoZXIgdS1ib290IGNvZGUgZG9lc24ndCB1c2UgaXQuCi0KLSAgICBBbHNvIGFkZGVkIGEgY29tbWVudCBhYm91dCBob3cgY3B1X3Jlc2V0KCkgaXMgZGVhbGluZyB3L2FuIGVycmF0YSBvbgotICAgIGVhcmx5IDg1eHggTVAgSFcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNzY0OWE1OTBiNTNlZTU0OGY0MTQyOGJmMjA3ODBmNzRjZTlmYzA5OQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE1hciAzMSAyMzowMjozOCAyMDA5IC0wNTAwCi0KLSAgICA4Nnh4OiBDbGVhbnVwIE1QIHN1cHBvcnQKLQotICAgICogVXNlIENPTkZJR19NUCBpbnN0ZWFkIG9mIENPTkZJR19OVU1fQ1BVUyB0byBtYXRjaCA4NXh4Ci0gICAgKiBJbnRyb2R1Y2UgZGV0ZXJtaW5lX21wX2Jvb3RwZygpIGhlbHBlci4gIFdlJ2xsIG5lZWQgdGhpcyB0byBhZGRyZXNzIGEKLSAgICAgIGJ1ZyBpbnRyb2R1Y2VkIGluIHYyMDA5LjAzIHdpdGggODZ4eCBNUCBib290aW5nLglXZSBoYXZlIHRvIG1ha2Ugc3VyZQotICAgICAgdG8gcmVzZXJ2ZSB0aGUgcmVnaW9uIG9mIG1lbW9yeSB1c2VkIGZvciB0aGUgTVAgYm9vdHBnKCkgc28gb3RoZXIKLSAgICAgIHUtYm9vdCBjb2RlIGRvZXNuJ3QgdXNlIGl0LgotICAgICogQWRkZWQgZHVtbXkgdmVyc2lvbnMgb2YgY3B1X3Jlc2V0KCksIGNwdV9zdGF0dXMoKSAmIGNwdV9yZWxlYXNlKCkgdG8KLSAgICAgIGFsbG93IGNtZF9tcC5jIHRvIGJ1aWxkIGFuZCB3b3JrLiBJbiB0aGUgZnV0dXJlIHdlIHNob3VsZCBsb29rIGF0Ci0gICAgICBpbXBsZW1lbnRpbmcgYWxsIHRoZXNlIGZ1bmN0aW9ucy4gVGhpcyBjb3VsZCBiZSBjb21tb24gdy84NXh4IGlmIHdlCi0gICAgICB1c2Ugc3BpbiB0YWJsZXMgb24gODZ4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmNmVmOGI3YTQzZWQ3ZjY4YTRiYjUyNGZhYWQ1ZTRmNzVlYTNlM2UyCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBNYXIgMzEgMTg6Mzg6MzcgMjAwOSAtMDUwMAotCi0gICAgbXBjODY0MWhwY24vc2JjODY0MWQ6IEFkZCBtaXNzaW5nIGJvYXJkX2xtYl9yZXNlcnZlcwotCi0gICAgV2UncmUgbWlzc2luZyB0aGUgYm9hcmRfbG1iX3Jlc2VydmUgZGVmaW5pdGlvbnMgdGhhdCBhbGxvdwotICAgIGNwdV9tcF9sbWJfcmVzZXJ2ZSB0byBiZSBjYWxsZWQ7IHRoaXMgbWVhbnMgdGhhdCBMaW51eAotICAgIGlzIGZyZWUgdG8gcmVhbGxvY2F0ZSByZXNlcnZlZCBwYWdlcy4gIExpbnV4IGN1cnJlbnRseSBib290cwotICAgIGJlY2F1c2Ugd2UncmUgZ2V0dGluZyBsdWNreSAtIHRoZSBwYWdlIHdlJ3ZlIHJlc2VydmVkIGlzCi0gICAgaGlnaCBlbm91Z2ggaW4gbWVtb3J5IHRoYXQgaXQgaXNuJ3QgYWxsb2NhdGVkIGJ5IExpbnV4Ci0gICAgd2hpbGUgd2Ugc3RpbGwgbmVlZCBpdCB0byBiZSBpbiBleGlzdGVuY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDBmYzRmNjRjNTk4NzNhNDdkNTU1ZGQ2NmJhZDI1Nzk3ZDRlY2IwZWQKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJVHVlIE1hciAzMSAxMzo0MzoxMCAyMDA5ICswMjAwCi0KLSAgICBOZXRTdGFyOiBmaXggTkFORAotCi0gICAgRml4IE5BTkQgc3VwcG9ydCBicm9rZW4gZHVyaW5nIG5ldyBOQU5EIGNvZGUgbWVyZ2UuIE1vdmUgdGhvc2UgZmV3IGxpbmVzIG9mCi0gICAgY29kZSB0byBib2FyZC9uZXRzdGFyL25ldHN0YXIuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotCi1jb21taXQgZDE0NGY5NGQ1OTBiNTE5MGE5OTYzYmQwZjIwMjZiMmE3Y2U2N2VkYQotQXV0aG9yOiBKZW5zIFNjaGFyc2lnIDxlc3dAYnVzLWVsZWt0cm9uaWsuZGU+Ci1EYXRlOglUdWUgTWFyIDMxIDA4OjE4OjI5IDIwMDkgKzAyMDAKLQotICAgIHNvZnRfaTJjLmMgY29tcGlsZXIvbGlua2VyIGVycm9yCi0KLSAgICBUaGlzIHBhdGNoIGZpeCB0aGUgY29tcGlsZXIvbGlua2VyIGVycm9ycwotCi0gICAgY29tbW9uL2NtZF9pMmMuYzoxMjUyOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBpMmNfZ2V0X2J1c19zcGVlZCcKLSAgICBjb21tb24vY21kX2kyYy5jOjEyNTY6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGkyY19zZXRfYnVzX3NwZWVkJwotCi0gICAgaWYgYm9hcmQgdXNlIENPTkZJR19JMkNfQ01EX1RSRUUgYW5kIENPTkZJR19JMkNfTVVMVElfQlVTIGlzIG5vdAotICAgIHVlc2QvdW5kZWYgKHdyb25nIGRlZmluZSBvcmRlcikKLQotICAgIGFuZAotCi0gICAgcmVtb3ZlcyBhZGRpdGlvbmFsIGVtcHR5IGxpbmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxlc3dAYnVzLWVsZWt0cm9uaWsuZGU+Ci0KLWNvbW1pdCA3NjU1NDdkYzVlMGU4Y2JlNmI4ZjRlYThhNWQ2ZmYyMzc5MzVjMzUyCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWFyIDI3IDE3OjAyOjQ1IDIwMDkgLTA0MDAKLQotICAgIE1QQzg1eHg6IEFkZCBNUEM4NTY5TURTIGJvYXJkIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBNUEM4NTY5TURTIGJvYXJkIHN1cHBvcnQuIFRoZSBVQVJULCBRRSBVRUMxIGFuZCBVRUMyLCBCUkQKLSAgICBFRVBST00gb24gSTJDMiBidXMsIFBDSSBleHByZXNzIGFuZCBERFIzIFNQRCBhcmUgc3VwcG9ydGVkIGluIHRoaXMgcGF0Y2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEhpbGxlbCBBdm5pIDxIaWxsZWwuQXZuaUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyMmI2ZGJjMTY5NmQ5MjdkOTM4ZGQ0ZTE2ZjY1ZDgzYzBkNGZiM2Y0Ci1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWFyIDI3IDE3OjAyOjQ0IDIwMDkgLTA0MDAKLQotICAgIE1QQzg1eHg6IEFkZCBNUEM4NTY5IENQVSBzdXBwb3J0Ci0KLSAgICBUaGVyZSBpcyBhIHdvcmthcm91bmQgZm9yIE1QQzg1NjkgQ1BVIEVycmF0YSwgd2hpY2ggbmVlZHMgdG8gc2V0IEJpdCAxMyBvZgotICAgIExCQ1IgaW4gNEsgYm9vdHBhZ2UuIFdlIHNldHVwIGEgdGVtcCBUTEIgZm9yIGVMQkMgY29udHJvbGxlciBpbiBib290cGFnZSwKLSAgICB0aGVuIGludmFsaWRhdGUgaXQgYWZ0ZXIgTEJDUiBiaXQgMTMgaXMgc2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMmQ0ZGU2YWU1YmU1NGIzNjdhNzJhN2VmNGUwY2YzNmE5Y2Q0ODgxZgotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1hciAyNiAxNzowMTo0OSAyMDA5IC0wNDAwCi0KLSAgICBNUEM4NXh4OiBMb2FkIGFuZCBlbmFibGUgUUUgbWljcm9jb2RlIHBhdGNoIGluIElSQU0KLQotICAgIEZvciB0aGUgc2lsaWNvbiB3aGljaCBkb2Vzbid0IGhhdmUgUk9NIHN1cHBvcnQgaW4gUUUsIGl0IGFsd2F5cyBuZWVkcyB0byBsb2FkCi0gICAgYSBwcmUtYnVpbHQgdWNvZGUgYmluYXJ5IHRvIElSQU0gc28gdGhhdCBRRSBjYW4gd29yay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGlsbGVsIEF2bmkgPEhpbGxlbC5Bdm5pQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYjNlNDA0NGEyOGEzZDk1YjBhYWQ0MWJkYzUyNDgyYmIyY2M5YjJiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTWFyIDE5IDA5OjE2OjEwIDIwMDkgLTA1MDAKLQotICAgIDg1eHg6IEFkZCBzdXBwb3J0IGZvciBhZGRpdGlvbmFsIGU1MDBtYyBmZWF0dXJlcwotCi0gICAgKiBFbmFibGUgYmFja3NpZGUgTDIKLSAgICAqIGU1MDBtYyBubyBsb25nZXIgaGFzIHRpbWViYXNlIGVuYWJsZSBpbiBISUQgKG1vdmVkIHRvIENDU1IgcmVnaXN0ZXIpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzM2MGNlYWMwMjg2MTU5Zjk0ZDlkMWE5NDk2ZmM5ODU4YzhkOWJlYwotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IE1hciAxNCAxMjo0ODozMCAyMDA5ICswODAwCi0KLSAgICBmc2wtZGRyOiBhZGQgdGhlIEREUjMgU1BEIGluZnJhc3RydWN0dXJlCi0KLSAgICAtIHN1cHBvcnQgbWlycm9yZWQgRElNTXMsIG5vdCBzdXBwb3J0IHJlZ2lzdGVyIERJTU1zCi0gICAgLSB0ZXN0IHBhc3NlZCBvbiBQMjAyMERTIGJvYXJkIHdpdGggTVQ5SlNGMTI4NzJBWS0xRzFEMQotICAgIC0gdGVzdCBwYXNzZWQgb24gTVBDODU2OU1EUyBib2FyZCB3aXRoIE1UOEpTRjEyODY0SFktMUcxRDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHJhdmlzIFdoZWF0bGV5IDx0cmF2aXMud2hlYXRsZXlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZhODE5NzgzNjcwMjk5MTQ2OGNlYWQ1ZWFkMDczZjU4OWUyNjIzYWQKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVNhdCBNYXIgMTQgMTI6NDg6MTkgMjAwOSArMDgwMAotCi0gICAgZnNsLWRkcjogRml4IHR3byBidWdzIGluIHRoZSBkZHIgaW5mcmFzdHJ1Y3R1cmUKLQotICAgIDEuIHdyX2xhdAotICAgICAgIFVNIHNhaWQgdGhlIHRvdGFsIHdyaXRlIGxhdGVuY3kgZm9yIEREUjIgaXMgZXF1YWwgdG8KLSAgICAgICBXUl9MQVQgKyBBRERfTEFULCB0aGUgd3JpdGUgbGF0ZW5jeSBpcyBDTCArIEFERF9MQVQgLSAxLgotICAgICAgIHNvLCB0aGUgV1JfTEFUID0gQ0wgLSAxOwotICAgIDIuIHJkX3RvX3ByZQotICAgICAgIHdlIG1pc3NlZCB0byBhZGQgdGhlIEFERF9MQVQgZm9yIEREUjIgY2FzZS4KLQotICAgIFJlcG9ydGVkLWJ5OiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTQwZGNmMWNiODY5NjFlMTFhYTkyYzQ3NjcxZjI3NzYyYzU4MWQ4YwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE1hciAyNiAwMTozNDozOSAyMDA5IC0wNTAwCi0KLSAgICA4M3h4OiBVc2UgY29tbW9uIExTRE1SIGRlZmluZXMgZnJvbSBhc20vZnNsX2xiYy5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjBmZTkzZWRhNjk3MjFhZWYxZmRlZjU3NjE2NGI2NjhmYWQ4M2JiZAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE1hciAyNiAwMTozNDozOCAyMDA5IC0wNTAwCi0KLSAgICA4NXh4OiBVc2UgY29tbW9uIExTRE1SIGRlZmluZXMgZnJvbSBhc20vZnNsX2xiYy5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMDA4OGMyOThmMGVlYjkwZWMwMDFmNzQ0ZTk5NTlkZWE4M2RkNTYzYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE1hciAyNiAwMTozNDozNyAyMDA5IC0wNTAwCi0KLSAgICBBZGQgTFNETVIgKFNEUkFNIE1vZGUgUmVnaXN0ZXIpIGRlZmluaXRpb24gb24gbG9jYWxidXMKLQotICAgIFRoZSBtYXNrcyBmb3IgdmFyaW91cyBiaXQgZGVmaW5lcyBvZiBMU0RNUiBhcmUgY29tbW9uIGFuZCB0aHVzIHdlIGNhbgotICAgIGRlZmluZSB0aGVtIGluIG9uZSBwbGFjZSByYXRoZXIgdGhhbiByZXBsaWNhdGluZyB0aGVtIGluIGVhY2ggY29uZmlnLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4OWMwMGZiMTU4NTkyMTM3ODhmMGFkMDg5OTM0YzM3NmZiMzU2MDk5Ci1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLURhdGU6CU1vbiBNYXIgMzAgMTg6NTg6NDEgMjAwOSArMDIwMAotCi0gICAgT01BUDogdXNlIHtyZWFkLHdyaXRlfWwgdG8gYWNjZXNzIHRpbWVyIHJlZ2lzdGVycwotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotCi1jb21taXQgODE0NzJkODkzZmE1NjVjOWQzMDA5MjhhNDBlNTA0YTY4OWJkZTEzMQotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglNb24gTWFyIDMwIDE4OjU4OjQxIDIwMDkgKzAyMDAKLQotICAgIE9NQVA6IHJlbmFtZSB0aW1lciBkaXZpc29yCi0KLSAgICBEaXZpc29yIGZpZWxkIGlzIGNhbGxlZCBQVFYgbm90IFBWVC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZmU2NzJkNjBiMmE4YzllODAzNTk2YmE0NTMzZmExNzc2MDE1NTUxZAotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglNb24gTWFyIDMwIDE4OjU4OjQwIDIwMDkgKzAyMDAKLQotICAgIE9NQVA6IHJlaW5kZW50IHRpbWVyIGNvZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotY29tbWl0IGIzZjY2YjBiYTA5OTQ5ZTA3OTZjZTdmYWQ2MzY3Zjc1ZjE1ZWQ4OTAKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBNYXIgMzAgMTg6NTg6NDAgMjAwOSArMDIwMAotCi0gICAgczNjMjQxMDogbW92ZSBuYW5kIGRyaXZlciB0byBkcml2ZXJzL210ZC9uYW5kCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDNiNjM1Nzc0MTk0NDA0YmNkNDI0ZjZiMzc2NDE5YmNlMjIwNzZhZAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIE1hciAzMCAxODo1ODo0MCAyMDA5ICswMjAwCi0KLSAgICBzM2MyNHgwOiBtb3ZlIGkyYyBkcml2ZXIgdG8gZHJpdmVycy9pMmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAzMDBmOTlmNDUzOWRkNWNhZjdlMTlhZjVlNGVhNWViMjU5NDQ1OTEzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gTWFyIDMwIDE4OjU4OjM5IDIwMDkgKzAyMDAKLQotICAgIHMzYzI0eDA6IG1vdmUgc2VyaWFsIGRyaXZlciB0byBkcml2ZXJzL3NlcmlhbAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDk0MmJhOTk2OWI5ZWZhMjVmODE2YzIzODg2MWVjYjMzOWM1NGVkNzMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBNYXIgMzAgMTg6NTg6MzkgMjAwOSArMDIwMAotCi0gICAgZGF2aW5jaTogbW92ZSBpMmMgZHJpdmVyIHRvIGRyaXZlcnMvaTJjCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZWU0ZjNlMjc2NWExYzY1Yzk4NjFjNWQyY2YyZTZmZWI4NGI5MGJkOAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIE1hciAzMCAxODo1ODozOSAyMDA5ICswMjAwCi0KLSAgICBkYXZpbmNpOiBtb3ZlIG5hbmQgZHJpdmVyIHRvIGRyaXZlcnMvbXRkL25hbmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBkM2U1NWQwNzc0YTE4MGMxODM3YmQ3ZGRlYzQ2NDAxNWU4ODNiZDg2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gTWFyIDMwIDE4OjU4OjM4IDIwMDkgKzAyMDAKLQotICAgIGlteDogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjM0NGJiOGRlMjM1NDEwMWE4MjY0YzIxMjMzMDNjOWQ4ZDJhZWQzYwotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CU1vbiBNYXIgMzAgMDA6MzE6MzYgMjAwOSArMDIwMAotCi0gICAgaW5rYTR4MDogVXNlIHByb3BlciBhY2Nlc3NvciBtYWNyb3MgZm9yIG1lbW9yeSBtYXBwZWQgcmVnaXN0ZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCBlOTc5ZTg1ZmQzOWIwNjQzNjkyMmJiNGQ2YmI1ZmFmY2JjNzc1MTgyCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJTW9uIE1hciAzMCAwMDozMTozNSAyMDA5ICswMjAwCi0KLSAgICBpbmthNHgwOiBBZGQgaGFyZHdhcmUgZGlhZ25vc2lzIGFuZCBSVEMgaW4gY29uZmlndXJhdGlvbi4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgYm9hcmQgc3BlY2lmaWMgY29tbXVuaWNhdGlvbiByb3V0aW5lcyBuZWVkZWQgYnkKLSAgICB0aGUgZXh0ZXJuYWwgNDU0MyBSVEMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFBmZWZmZXJsZSA8YXBAZGVueC5kZT4KLQotY29tbWl0IDdiNTYxMWNkZDEyY2EwY2MzM2Y5OTRmMGQ0YTQ0NTQ3ODhmYzMxMjQKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglNb24gTWFyIDMwIDAwOjMxOjM0IDIwMDkgKzAyMDAKLQotICAgIGlua2E0eDA6IEFkZCBoYXJkd2FyZSBkaWFnbm9zaXMgZnVuY3Rpb25zIGZvciBpbmthNHgwCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYWR2YW5jZWQgZGlhZ25vc2lzIGZ1bmN0aW9ucyBmb3IgdGhlIGlua2E0eDAgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIFBmZWZmZXJsZSA8YXBAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDA0ZTExY2YzODNmZjYyMzE1MzVmZDk4MTAyM2JiMTMwNmIyMTMzZDQKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglNb24gTWFyIDMwIDAwOjMxOjMzIDIwMDkgKzAyMDAKLQotICAgIHJ0YzogYWRkIHN1cHBvcnQgZm9yIDQ1NDMgUlRDIChtYW51ZmFjdHVyZWQgYnkgZS5nLiBFUFNPTikKLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUGZlZmZlcmxlIDxhcEBkZW54LmRlPgotCi1jb21taXQgNTcyZTYxNzlhZGI1NDQ3ZmY0MmVjMmFhNWNmM2EyNmRlY2Y5NzU4MwotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CU1vbiBNYXIgMzAgMDA6MzE6MzIgMjAwOSArMDIwMAotCi0gICAgZHJpdmVycy90d3NlcmlhbDogQWRkIHByb3RvY29sIGRyaXZlciBmb3IgInRocmVlIHdpcmUgc2VyaWFsIiBpbnRlcmZhY2UuCi0KLSAgICBUaGlzIHByZXR0eSB1bmludGVsbGlnZW50IGludGVyZmFjZSBpcyB1c2VkIG9uIHNvbWUgUlRDIGNoaXBzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCBhNmVmM2RkZWFmYmU4MDA3YWYzNjYyY2M0NTA5Yjg5N2M1M2FiMzk1Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQyIDIwMDkgKzAyMDAKLQotICAgIGFybTcyMHQvY2xwczcxMTE6IG1vdmUgc2VyaWFsIGRyaXZlciB0byBkcml2ZXJzL3NlcmlhbAotCi0gICAgYWRkIENPTkZJR19DTFBTNzExMV9TRVJJQUwgdG8gYWN0aXZhdGUgdGhlIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDY3OTBjNTU3MDQ1MzFlYjk4Zjc2YjUxZDUwZTBmNzNkMTlmYTI5ODgKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgMjkgMjM6MDE6NDIgMjAwOSArMDIwMAotCi0gICAgbHBjMjI5MjogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCi0KLSAgICBhZGQgQ09ORklHX0xQQzIyOTJfU0VSSUFMIHRvIGFjdGl2YXRlIHRoZSBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxNzZhNjAwZDBlY2RhY2NiYWM0ODNkMmJhOTkyZDAxMTlmODUzMTE5Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQyIDIwMDkgKzAyMDAKLQotICAgIGtzODY5NTogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCi0KLSAgICBhZGQgQ09ORklHX0tTODY5NV9TRVJJQUwgdG8gYWN0aXZhdGUgdGhlIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDZkMjdiY2ExNWQ0NDVmY2YwN2Q2ZTdlMzBjZWQ5NWM5NDVjODc1ZWEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgMjkgMjM6MDE6NDIgMjAwOSArMDIwMAotCi0gICAgczNjNjR4eDogbW92ZSB1c2IgZHJpdmVyIHRvIGRyaXZlcnMvdXNiCi0KLSAgICBhZGQgQ09ORklHX1VTQl9TM0M2NFhYIHRvIGFjdGl2YXRlIHRoZSBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlY2ZhOGRkYTJmNTVlMWZiZTEyZGVlMGI1Y2MxNmU3ZDQ4NDY3NGM5Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQxIDIwMDkgKzAyMDAKLQotICAgIGlteDMxOiBtb3ZlIHNlcmlhbCBkcml2ZXIgdG8gZHJpdmVycy9zZXJpYWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5ZWE5MWM5ZmVmYjM5MjBkNzM1NTMzYTc3OThjMWE0NGEzZWQzZmZjCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQxIDIwMDkgKzAyMDAKLQotICAgIG5ldGFybTogbW92ZSBzZXJpYWwgZHJpdmVyIHRvIGRyaXZlcnMvc2VyaWFsCi0KLSAgICBhZGQgQ09ORklHX05FVEFSTV9TRVJJQUwgdG8gYWN0aXZhdGUgdGhlIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDQxMmFiNzA1ODg4NzQyYWRkNDM1ZGQ2ZmZjMmU4YmRhMTQ5NjIyMzUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgMjkgMjM6MDE6NDEgMjAwOSArMDIwMAotCi0gICAgc2ExMTAwOiBtb3ZlIHNlcmlhbCBkcml2ZXIgdG8gZHJpdmVycy9zZXJpYWwKLQotICAgIGFkZCBDT05GSUdfU0ExMTAwX1NFUklBTCB0byBhY3RpdmF0ZSB0aGUgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYjIzNjg3NTRhOTIwMjIyNWZkMDcyZTE1OWZiNzhkYTdkMmNkYjYyMwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1hciAyOSAyMzowMTo0MSAyMDA5ICswMjAwCi0KLSAgICBzM2M0NGIwOiBleHRyYWN0IGNhY2hlIGZyb20gY3B1LmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0MGZkNjI2MjIzZWFlNTM2MzcxOWJjYjlhNjg5NmYwOGNlZWVlOTBhCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWFyIDI5IDIzOjAxOjQxIDIwMDkgKzAyMDAKLQotICAgIHMzYzQ0YjA6IG1vdmUgc2VyaWFsIGRyaXZlciB0byBkcml2ZXJzL3NlcmlhbAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDVmZTEzNzdjYzQ2MTk5ZmU3MWM0N2JlNGIxYWE4MTQ0MGFlOTZmOWYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgMjkgMjM6MDE6NDAgMjAwOSArMDIwMAotCi0gICAgczNjNDRiMDogbW92ZSBydGMgZHJpdmVyIHRvIGRyaXZlcnMvcnRjCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTBmNjAxY2NhODk4NTYxNWY5ZTNkZTRjMzQ4ODc0NDhhZGU4YTY0YgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1hciAyOSAyMzowMTo0MCAyMDA5ICswMjAwCi0KLSAgICBzM2M0NGIwOiBtb3ZlIGkyYyBkcml2ZXIgdG8gZHJpdmVycy9pMmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAyODFkZmIwYzBjNTMxMTk0Zjk5ZTYwZDYyODVjY2E0ZTJhOWZiMWI2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWFyIDI5IDIzOjAxOjM2IDIwMDkgKzAyMDAKLQotICAgIHMzYzQ1MTBiOiBtb3ZlIHNwZWNpZmljIGNvZGUgdG8gc29jIGRpcmVjdG9yeQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDA0NTMxZjNjMTFjNjkzZGM1NDkyNGY4MmM0MTk3OWQ5NjAzMDljOWQKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJV2VkIE1hciAyNSAyMzo0Mzo1OCAyMDA5ICswMTAwCi0KLSAgICBOZXRTdGFyOiBhZGQgUlRDIHN1cHBvcnQKLQotICAgIEFkZCBSVEMgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotY29tbWl0IDcxZjdiZDMwNWQ5NzY4YmNiN2RkYmU0YjU4MjNjYmYzYjM1OTdiMTEKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJV2VkIE1hciAyNSAyMzo0Mzo1MCAyMDA5ICswMTAwCi0KLSAgICBOZXRTdGFyOiB1c2UgZ2VuZXJpYyBmbGFzaCBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotY29tbWl0IDNmNDY0YjBmYzAwOWQ0MWQyNzM0YzA4ZTQ3MmViNmQ0NDVmNzNhNWMKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJTW9uIE1hciAxNiAyMzozMToyMCAyMDA5ICswMTAwCi0KLSAgICBOZXRTdGFyOiB1cGRhdGUgY3JjaXQgdXRpbGl0eQotCi0gICAgTWFrZSBjcmMzMiBmdW5jdGlvbiB0byBtYXRjaCBpdHMgcHJvdG90eXBlLiBVc2UgbW9yZSBtZWFuaW5nZnVsIGlkZW50aWZpZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotCi1jb21taXQgNDg4ZjVkODc5MGM0NTFmYzUyN2ZlNWQyZWYyMThmMmE1ZTQwZWExNwotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglNb24gTWFyIDIzIDE3OjQ2OjI3IDIwMDkgKzAxMDAKLQotICAgIFJlbW92ZSBub3doZXJlIHVzZWQgc3ltYm9sIENPTkZJR19TWVNfQ0xLU19JTl9IWgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotCi1jb21taXQgODg2ODViNWY2MjI3NDE2N2FkMmJhOGE1OGUxMDhkODlmZjcxOTU1YgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIE1hciAyOSAwMDo1ODoxNiAyMDA5ICswMTAwCi0KLSAgICBWQ01BOTogZml4IGNvbXBpbGUgZXJyb3JzCi0KLSAgICBGaXggdGhlc2U6Ci0gICAgY21kX3ZjbWE5LmM6ODI6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdldGhfZ2V0ZW52X2VuZXRhZGRyJwotICAgIGNtZF92Y21hOS5jOjg5OiBlcnJvcjogJ2VuZXRhZGRyJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyNmU0MmNiZDc4NjI0MWZlYzM3MGEwYjkyYWQ1OTFmNGU5Y2M0MjNiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDI5IDAwOjU0OjIxIDIwMDkgKzAxMDAKLQotICAgIEFSTTogZml4IHdhcm5pbmc6ICdwcmludF9ldGgnIGRlZmluZWQgYnV0IG5vdCB1c2VkCi0KLSAgICBUaGlzIHdhcm5pbmcgZ290IGlzc3VlZCBmb3IgYWxsIEFSTSBzeXN0ZW1zIHRoYXQgZG9uJ3QgaGF2ZQotICAgIENPTkZJR19DTURfTkVUIGVuYWJsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZmQ4OGQ5MWE2MzljZTQxYjgyNWM4ZDUwZGMyMTgyMDUwZTk4ZmU1MwotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglNb24gTWFyIDIzIDE4OjE2OjM0IDIwMDkgKzAxMDAKLQotICAgIGNzODkwMCBjb21waWxlIGZpeAotCi0gICAgY3M4OTAwLmM6IEluIGZ1bmN0aW9uICdldGhfaW5pdCc6Ci0gICAgY3M4OTAwLmM6MTY0OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2V0aF9nZXRlbnZfZW5ldGFkZHInIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQotICAgIGNzODkwMC5jOjE2NTogZXJyb3I6IGludmFsaWQgb3BlcmFuZHMgdG8gYmluYXJ5IDw8Ci0gICAgY3M4OTAwLmM6MTY2OiBlcnJvcjogaW52YWxpZCBvcGVyYW5kcyB0byBiaW5hcnkgPDwKLSAgICBjczg5MDAuYzoxNjc6IGVycm9yOiBpbnZhbGlkIG9wZXJhbmRzIHRvIGJpbmFyeSA8PAotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDI1NjdiZTkxNTAzNjcyMDY5M2YzZGRkMDBjMzliNWI0ZDg2ZmI4ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1hciAyOCAyMDoxNjoxNiAyMDA5ICswMTAwCi0KLSAgICBGaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2V0aF9bZ3NdZXRlbnZfZW5ldGFkZHInCi0KLSAgICAuLi5hbmQgc29tZSBvdGhlciBjb21waWxlIHdhcm5pbmdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDk3YjA1ZDdkNTI0YTZiNGYxOTVmMDdiOGY5MGU5ODU2MWE4NTU5NmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXIgMjggMTY6MTc6MjkgMjAwOSArMDEwMAotCi0gICAgbXBjOHh4L2V0aGVyLmM6IGZpeCB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2JkJwotCi0gICAgQWxzbyBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyZGNlNTUxZTEwNzI4ZjllNTY1NTI3OWY3NjFmMWQzY2MwYThmZTkwCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAyNSAxNzoyNzo1MiAyMDA5ICswMTAwCi0KLSAgICBjb21tYW5kLmM6IEV4cG9zZSB0aGUgY29yZSBvZiBkb19oZWxwIGFzIF9kb19oZWxwIHRvIHRoZSByZXN0IG9mIHUtYm9vdC4KLQotICAgIE90aGVyIGNvbW1hbmRzIGltcGxlbWVudGluZyBzdWJjb21tYW5kcyBjYW4gcmV1c2UgdGhpcyBjb2RlIG5pY2VseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgUGZlZmZlcmxlIDxhcEBkZW54LmRlPgotCi1jb21taXQgNGUzMjVmYmZhNGRlYTA0ZWNlYjYzOTJlMDA4MDdjNDBkMjE0ZGM2ZgotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMjQgMTg6MDI6MzMgMjAwOSArMDEwMAotCi0gICAgbXBjNXh4eDogQWRkIHN0cnVjdHVyZSBkZWZpbml0aW9uIGZvciBzZXZlcmFsIG1vcmUgcmVnaXN0ZXIgYmxvY2tzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA3MzliMGU1OTQ2NzdhMDY3NjU3N2JjOTVkYjQ0OTVhNTU2M2ZjN2Y4Ci1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJRnJpIE1hciAyNyAxNTowMzo1NSAyMDA5ICswMTAwCi0KLSAgICBNQUlOVEFJTkVSUzogQWRkIGVudHJ5IGZvciAnaW5rYTR4MCcgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGU1NWVjZWM0NTM0MDc1NWVmNDdjYmJiMTNmYjM1Y2VlZDYwZWIxMTUKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglGcmkgTWFyIDI3IDE1OjAzOjU0IDIwMDkgKzAxMDAKLQotICAgIE1BSU5UQUlORVJTOiBLZWVwIGxpc3Qgc29ydGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCAwYmFlY2E0YjA5YjcwMzcyOGY4ZTY2YjUyNDE4MDM5ZmQ4ZjhjZTM1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBNYXIgMjYgMTE6MTc6NDEgMjAwOSAtMDQwMAotCi0gICAga2FyZWYvbWV0cm9ib3gveHBlZGl0ZTFrOiBmaXggZXRoX3NldGVudl9lbmV0YWRkciB0eXBvcwotCi0gICAgVGhlIGZ1bmN0aW9uIGlzIGNhbGxlZCAiZXRoX3NldGVudl9lbmV0YWRkciIsIG5vdCAiZXRoX3B1dGVudl9lbmV0YWRkciIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA3Njc1NmU0MWNkZTBhNjE3ZTc4MWE2MDRjYzQ3ZGZhZWY2MzY5N2NkCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IE1hciAyNiAwNzozMzo1OSAyMDA5ICswMTAwCi0KLSAgICBwcGM6IGNsZWFudXAgY29tcGlsZXIgZXJyb3JzL3dhcm5pbmdzCi0KLSAgICBDdXJyZW50IHUtYm9vdCB0b3Agb2YgdHJlZSBidWlsZHMgd2l0aCB3YXJuaW5ncy9lcnJvcnMgZm9yCi0gICAgdGhlIGZvbGxvd2luZyBib2FyZHM6Ci0KLSAgICBhZHM1MTIxIGNwY2k1MjAwIG1lY3A1MjAwIHYzOGIgSUFEMjEwIE1CWCBNQlg4NjBUIE5YODIzCi0gICAgUlBYQ2xhc3NpYyBkZWJyaXMgUE42MgotCi0gICAgZm9sbG93aW5nIHBhdGNoIHNvbHZlcyB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDNlZGY2OGM0N2ZkZDUyZjE5YzFlODQwNzcxYzE5YmE5MGNmNWNlZDEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciAyNiAxNjoxNDoxMyAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IFNlcXVvaWE6IEZpeCBUTEIgcmVhc3NpZ25tZW50IGluIE5BTkQgYm9vdGluZyBjb2RlCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgYnVnIGluIHRoZSBTZXF1b2lhIFRMQiBpbml0IGNvZGUgdG8gcmVjb25maWd1cmUKLSAgICB0aGUgY29ycmVjdCBUTEIgKGJvb3Qgc3BhY2UpIGFmdGVyIHJ1bm5pbmcgZnJvbSBSQU0uIFRoaXMgYnVnIHdhcwotICAgIGludHJvZHVjZWQgd2l0aCBwYXRjaCA0ZDMzMmRiZWIwOGY1ODYzZDFlYTY5ZDkxYTAwYzU0OTlkM2E4N2VkCi0gICAgW3BwYzR4eDogTWFrZSBTZXF1b2lhIGJvb3QgdnhXb3Jrc10gd2hpY2ggY2hhbmdlZCB0aGUgb3JkZXIgb2YgdGhlCi0gICAgVExCIGluIHRoZSBTZXF1b2lhIGluaXQuUyBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZTJiNjZmZTQ1M2EzNjc5ZjgwN2IzN2ZjNTkyM2Q4OTIxNDMwMjc2NAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IE1hciAyNiAxMDowMDo1NyAyMDA5ICswMTAwCi0KLSAgICBhZHM1MTIxOiBlbmFibGUgaW5zdHJ1Y3Rpb24gY2FjaGUKLQotICAgIEVuYWJsaW5nIHRoZSBpbnN0cnVjdGlvbiBjYWNoZSBzaWduaWZpY2FudGx5IGFjY2VsZXJhdGVzIFUtQm9vdAotICAgIG9wZXJhdGlvbnMgbGlrZSBDUkMgY2hlY2tpbmcsIGltYWdlIHVuY29tcHJlc3Npb24sIGV0Yy4KLQotICAgIEt1ZG9zIHRvIEFuZHJlYSBTY2lhbiBmb3IgcG9pbnRpbmcgb3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDMzZTg4YzU1N2IyOWM4NGM1MjAzOWJhMDU5OTNmYTcwZmU2MmFmZTMKLUF1dGhvcjogSm9uIFNtaXJsIDxqb25zbWlybEBnbWFpbC5jb20+Ci1EYXRlOglTdW4gTWFyIDIyIDIyOjU1OjQ1IDIwMDkgLTA0MDAKLQotICAgIG1wYzUyMDA6IHN1cHByZXNzIHByaW50ZiB1bnRpbCBjb25zb2xlIGluaXRpYWxpemVkCi0KLSAgICBPbiBib2FyZHMgd2hpY2ggaGF2ZSB0aGUgZW52aXJvbm1lbnQgaW4gZWVwcm9tLCBpMmNfaW5pdCgpIGlzIGNhbGxlZAotICAgIGJlZm9yZSB0aGUgY29uc29sZSBhbmQgUkFNIGFyZSBpbml0aWFsaXplZC4KLSAgICBTdXBwcmVzcyBwcmludGZzIHVudGlsIHRoZSBjb25zb2xlIGlzIGluaXRpYWxpemVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIFNtaXJsIDxqb25zbWlybEBnbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMGM2OTI2NzM2ZWZmYmI5YTE5MDQ3OTQ5YjdlOWIzZThmZWFiN2M0NgotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDI1IDExOjM2OjUwIDIwMDkgKzAxMDAKLQotICAgIEFSTTogQWRkIHRoZSBpbXgzMV9waHljb3JlX2VldCBib2FyZCB0byBNQUtFQUxMCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCA5MTdjZmM3MGMxOGI3NGZhOGE4MDE4OWJkY2U4Mzk1MTk5ZmE4MzYwCi1BdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci1EYXRlOglXZWQgTWFyIDI1IDIyOjEzOjU2IDIwMDkgKzAxMDAKLQotICAgIE9NQVAzOkJlYWdsZTogRW5hYmxlIG10ZHBhcnRzCi0KLSAgICBodHRwOi8vd3d3LmRlbnguZGUvd2lraS9EVUxHL1VCb290Q21kR3JvdXBGbGFzaCNVQm9vdENtZEZsTXRkcGFydHMKLSAgICBwcm92aWRlcyBhIGZsZXhpYmxlIHdheSB0byBjcmVhdGUgYW5kIG1haW50YWluIHUtYm9vdCBtdGQKLSAgICBwYXJ0aXRpb25zLiBUaGlzIGFsbG93cyBjb21tYW5kcyBzdWNoIGFzICJuYW5kIGVyYXNlIGZzIgotICAgIHRvIHdvcmsgYW5kIHRoZSB1c2VyIG5vIGxvbmdlciBuZWVkcyB0byBkZWNvZGUgdGhlIGFic29sdXRlCi0gICAgbmFuZCBvZmZzZXRzLiBUaGlzIHBhdGNoIGVuYWJsZXMgdGhpcyBmdW5jdGlvbiBmb3IgYmVhZ2xlYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDRkZTFhNWRhYWIwNzlkZGM4Y2UxMjc0MTQ0NzAwMjAzZDY5MjEwNWMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEZlYiAyMiAxNjoyNjozNSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IHNwbGl0IHBvc3QgY29kZSBvdXQgaW50byBkZWRpY2F0ZWQgcG9zdC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1ZThmMjQ1NzQzZWQxNGM4OWU0OTViYTJjMDI3NzAzZGI5ODEzMTYwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjI6NTE6NTYgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFkZCBzdXBwb3J0IGZvciBTMjVGTDEyOCBwYXJ0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYmYxZTAyOGJmM2VhYjFkNzAyZmEwNjI3Y2FkZTQ0NjA2ODhmMzkxMwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIyOjUxOjIzIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBvdmVyaGF1bCBTUEkgZmxhc2ggaGFuZGxpbmcgdG8gc3BlZWQgdGhpbmdzIHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBlZmNjMDhjZWRlZGEyMTY4Yjk2ZjEyYTIyYTU4NzIzNDA4ODBkMzM0Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjI6NTE6MDUgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFkZCBzdXBwb3J0IGZvciBTU1QgU1BJIGZsYXNoZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDViOGNmYmU2M2Y3MjQyZWJiMTAwOGYzMGJiYmM4NWE5ZDU0YjM4Y2YKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMjo1MDoxMCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYWRkIGhhY2sgZm9yIGNyYXBweSBtMjVwODAKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDZmNWZkNTZmMDgzMmVhNWMyNTRlMmU0YmU4NGVhMjFmYzhlY2Q1YzUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEphbiAyMSAyMDo0NzoxMiAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IGluY3JlYXNlIG1vbml0b3Igc2l6ZQotCi0gICAgVGhlIG5ldyBqZmZzMiBjb2RlIHB1c2hlZCB0aGUgY29kZSBzaXplIGp1c3Qgb3ZlciB0aGUgbGltaXQsIHNvIGluY3JlYXNlCi0gICAgdGhlIGxpbWl0IGEgYml0IG1vcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmODJjYWFjY2M4N2UxZjc2NDQ4ZmY0MmE2YjkzMGU1OTc5N2U0ZjY1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBEZWMgOCAxNjoxNjoxMSAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYmY1Mzctc3RhbXA6IGJ1bXAgZGVmYXVsdCBTQ0xLIHVwIHRvIDEyNU1IegotCi0gICAgU2luY2UgYWxsIG9mIHRoZSBiZjUzNy1zdGFtcCBhbmQgYmY1MzctZXpraXQgYm9hcmRzIG91dCB0aGVyZSBjYW4gaGFuZGxlIGl0LAotICAgIGluY3JlYXNlIHRoZSBzcGVlZCBvZiBTQ0xLIHRvIDEyNU1IeiByYXRoZXIgdGhhbiAxMDBNSHouCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3NTFlNTRjM2I3NzMxMWI3MjBiNzk0ODEzY2NlMjA1NDZmMjg4YWRhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjI6NDQ6MTQgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wOiByZXdyaXRlIE1BQy1pbi1mbGFzaCBoYW5kbGluZwotCi0gICAgVXNlIHRoZSBjb21tb24gbmV0IGV0aCBmdW5jdGlvbnMgdG8gc2V0dXAgdGhlIGVudi9nbG9iYWwgZGF0YSB3aXRoIHRoZSBNQUMKLSAgICBhZGRyZXNzLCBhbmQgcHJvcGVybHkgaGFuZGxlIHRoZSBjYXNlIHdoZXJlIENPTkZJR19TWVNfTk9fRkxBU0ggaXMgZGVmaW5lZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDg4ZjlmYWZmYjM4M2JiYzZmMjNiOGNjODUxOWM1ZmZlY2ZhMmM4YWQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIERlYyA5IDEzOjQ3OjM5IDIwMDggLTA1MDAKLQotICAgIEJsYWNrZmluOiBhZGQgY2xraW5faHo9IHRvIGRlZmF1bHQga2VybmVsIGNvbW1hbmQgbGluZSBmb3IgQURJIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOWY2NGJhMjQxMmQzY2VkZTllYjFmMjkwOTg3ZTVjM2EyOGRmMzIzMgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gT2N0IDEyIDIzOjQ5OjEzIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZjUzMy1zdGFtcDogYnVtcCB1cCBkZWZhdWx0IGNsb2NrcwotCi0gICAgU2luY2UgdGhlIGhhcmR3YXJlIGNhbiBoYW5kbGUgaXQsIGJ1bXAgdGhlIGRlZmF1bHQgY2xvY2tzIGZyb20gODBtaHogU0NMSwotICAgIGFuZCAzOThtaHogQ0NMSyB0byAxMDBtaHogU0NMSyBhbmQgNDk4bWh6IENDTEsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyM2ZkOTU5ZWVhYWEwNDM0YWM3ZjljMTE5MWRlNjZjNzZkOTdkNjk5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjI6NDA6MjIgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTMzLXN0YW1wOiByZXdyaXRlIHN0YXJ0dXAgTEVEIG5vdGlmaWNhdGlvbnMKLQotICAgIEFnYWluLCBkb24ndCBjbG9iYmVyIHBpbnMgdGhhdCB3ZSBhcmVuJ3QgYWN0dWFsbHkgdXNpbmcsIGFuZCB1c2UgdGhlIGNvbW1vbgotICAgIExFRCBmcmFtZXdvcmsgcmF0aGVyIHRoYW4gb3VyIG93biBob2Itam9iLWJ1dC1ub3QtcmVhbGx5LXdvcmtpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjZjZmNDY5ZTI3MzBmYzhhYjM1MjM4MDhiODI4YmUwMDBkNmVlZTc3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBKdW4gMSAwOTowOTo0OCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdW5pZnkgY29tbW9uIEFESSBib2FyZCBzZXR0aW5ncwotCi0gICAgUmF0aGVyIHRoYW4gZHVwbGljYXRlIHRoZSBzYW1lIEFESSBzZXR0aW5ncyBpbiBldmVyeSBBREkgYm9hcmQsIGNyZWF0ZSBhCi0gICAgY29tbW9uIEFESSBjb25maWcgaGVhZGVyIGFuZCBoYXZlIGFsbCBBREkgYm9hcmRzIHN0YXJ0IHVzaW5nIHRoYXQuCVRoaXMKLSAgICB3aWxsIGFsc28gbWFrZSBtZXJnaW5nIHRoZSB+MTAgYm9hcmRzIEkgaGF2ZSB0byBmb3J3YXJkIHBvcnQgYSBsb3QgZWFzaWVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMTk2Yzc0MzExZjM5NGM2ZWIwOGJkOWFiMDdhMzU2NzEyOTliOTg1MQotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CVR1ZSBNYXIgMyAwOTowNTo1MyAyMDA5ICswOTAwCi0KLSAgICBSZWR1Y2UgT25lTkFORCBJUEwgY29tbW9uIGNvZGUKLQotICAgIE9uZU5BTkQgSVBMIGhhcyBjb21tb24gY29kZXMgZm9yIFJBTSBpbml0LCBsb2FkIGRhdGEsIGFuZCBqdW1wIHRvIDJuZAotICAgIGJvb3Rsb2FkZXIsIGJ1dCBpdCdzIGNvbW1vbiBjb2RlIHVzZWQgYWJvdXQgMzAwfjQwMCBieXRlcy4gU28gYm9hcmQKLSAgICBzcGVjaWZpYyBjb2Rlcywgc3VjaCBhcyBsb3dsZXZlbF9pbml0LCBjYW4ndCBoYXMgZW5vdWdoIGNvZGUuIEl0IG1ha2UKLSAgICBhIGRpZmZpY3VsdCB0byBpbXBsZW1lbnQgT25lTkFORCBJUEwuCi0KLSAgICBoaXMgcGF0Y2ggbWFrZSB0aGlzIGNvbW1vbiBjb2RlIGFzIHNtYWxsIGFzIHBvc3NpYmxlLiBhbmQgZ2l2ZQotICAgIGxvd2xldmVsX2luaXQgY2FuIGhhdmUgbW9yZSBjb2Rlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxNmYyZjVhMzUxMDA0MTI5ZTc5ZTc5ODE2Njk3YTM2N2ZkOWU1NDQ2Ci1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJV2VkIEZlYiAxMSAxODozODoyNCAyMDA5ICswMTAwCi0KLSAgICBBZGQgbXVsdGktY2hpcCBOQU5EIHN1cHBvcnQgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZXMKLQotICAgIFRoaXMgcGF0Y2hlcyBjb25maWd1cmVzIHRoZSBOQU5EIFVQTS1GU0wgZHJpdmVyIHdpdGggbXVsdGktY2hpcAotICAgIHN1cHBvcnQgZm9yIHRoZSBNaWNyb24gTVQyOUY4RzA4RkFCIE5BTkQgZmxhc2ggbWVtb3J5IG9uIHRoZQotICAgIFRRTTg1NDggbW9kdWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzM4NDZkZjI4ZmExZjRjZjk2YTk2YzE4MTQyZDQ4ZDgxM2NhYTg5MgotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjMgMjAwOSArMDEwMAotCi0gICAgQWRkIHdhaXQgZmxhZ3MgdG8gc3VwcG9ydCBib2FyZC9jaGlwIHNwZWNpZmljIGRlbGF5cwotCi0gICAgVGhlIE5BTkQgZmxhc2ggb24gdGhlIFRRTTg1NDhfQkUgbW9kdWxlcyByZXF1aXJlcyBhIHNob3J0IGRlbGF5IGFmdGVyCi0gICAgcnVubmluZyB0aGUgVVBNIHBhdHRlcm4gbGlrZSB0aGUgTVBDODM2MEVSREsgYm9hcmQgZG9lcy4gVGhlIFRRTTg1NDhfQkUKLSAgICByZXF1aXJlcyBhIGZ1cnRoZXIgc2hvcnQgZGVsYXkgYWZ0ZXIgd3JpdGluZyBvdXQgYSBidWZmZXIuIE5vcm1hbGx5IHRoZQotICAgIFIvQiBwaW4gc2hvdWxkIGJlIGNoZWNrZWQsIGJ1dCBpdCdzIG5vdCBjb25uZWN0ZWQgb24gdGhlIFRRTTg1NDhfQkUuCi0gICAgVGhlIGNvcnJlc3BvbmRpbmcgTGludXggRlNMIFVQTSBkcml2ZXIgdXNlcyBzaW1pbGFyIGRlbGF5IHBvaW50cyBhdCB0aGUKLSAgICBzYW1lIGxvY2F0aW9ucy4gVG8gbWFuYWdlIHRoZXNlIGV4dHJhIGRlbGF5cyBpbiBhIG1vcmUgZ2VuZXJhbCB3YXksIEkKLSAgICBpbnRyb2R1Y2VkIHRoZSAid2FpdF9mbGFncyIgZmllbGQgYWxsb3dpbmcgdGhlIGJvYXJkLXNwZWNpZmljIGRyaXZlciB0bwotICAgIHNwZWNpZnkgdmFyaW91cyB0eXBlcyBvZiBleHRyYSBkZWxheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDZlOWY3ZGYwNTRkMjZkN2Y0OWM1NmJmOWE2ODQ0YjE5M2FkNjMxMwotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjIgMjAwOSArMDEwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFRRTS1zcGVjaWZpYyBjaGlwIHNlbGVjdCBsb2dpYyB0byBGU0wtVVBNCi0KLSAgICBGb3IgdGhlIE5BTkQgY2hpcHMgb24gdGhlIFRRTTg1NDggbW9kdWxlcywgYSBzcGVjaWFsIGNoaXAtc2VsZWN0IGxvZ2ljIGlzCi0gICAgdXNlZC4gSXQgdXNlcyBkZWRpY2F0ZWQgYWRkcmVzcyBsaW5lcyB0byBiZSBzZXQgdmlhIFVQTSBtYWNoaW5lIGFkZHJlc3MKLSAgICByZWdpc3RlciAobWFyKS4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggc3VwcG9ydCB0byB0aGUgRlNMLVVQTSBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU5M2MxYzE2OWQ0OWVkYTdiYWJhZDljNzgxZjU0MWUyZTM0ZjBmZjAKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglXZWQgRmViIDExIDE4OjM4OjIxIDIwMDkgKzAxMDAKLQotICAgIEFkZCBtdWx0aSBjaGlwIHN1cHBvcnQgdG8gdGhlIEZTTC1VUE0gZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgbXVsdGktY2hpcCBOQU5EIGRldmljZXMgdG8gdGhlIEZTTC1VUE0KLSAgICBkcml2ZXIuIFRoZSAiZGV2X3JlYWR5IiBjYWxsYmFjayBvZiB0aGUgInN0cnVjdCBmc2xfdXBtX25hbmQiIGlzIG5vdwotICAgIGNhbGxlZCB3aXRoIHRoZSBhcmd1bWVudCAiY2hpcF9uciIgdG8gYWxsb3cgdGVzdGluZyB0aGUgcHJvcGVyIGNoaXAKLSAgICBzZWxlY3QgbGluZS4gVGhlIE5BTkQgc3VwcG9ydCBvZiB0aGUgTVBDODM2MEVSREsgaXMgdXBkYXRlZCBhcyB3ZWxsLgotICAgIE5vIG90aGVyIGJvYXJkcyBhcmUgY3VycmVudGx5IHVzaW5nIHRoZSBGU0wgVVBNIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjcyZWQyYWVlOTFiNDg1NmY2NjcxZmM3MmNkMzQxNjhkOGYxYjYyNAotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjAgMjAwOSArMDEwMAotCi0gICAgRW5hYmxlIG11bHRpIGNoaXAgc3VwcG9ydCBpbiB0aGUgTkFORCBsYXllcgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIE5BTkRfTUFYX0NISVBTIHRvIHRoZSBNVEQgTkFORCBsYXllci4KLSAgICBNdWx0aS1jaGlwcyBkZXZpY2VzIGFyZSBkaXNwbGF5ZWQgYXMgc2hvd246Ci0KLSAgICAgIERldmljZSAwOiAyeCBOQU5EIDUxMk1pQiAzLDNWIDgtYml0LCBzZWN0b3Igc2l6ZSAxMjggS2lCCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc0Mzk4YjIzZjljMmZmZGMxMzdmZDkyOTEwYTQ2ZTMzMzNmYjkzZjkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMTo1ODozMyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogcHV0IG1lbW9yeSBpbnRvIHNlbGYtcmVmcmVzaCBiZWZvcmUvYWZ0ZXIgcHJvZ3JhbW1pbmcgY2xvY2tzCi0KLSAgICBXaGVuIGluaXRpYWxpemluZyB0aGUgY29yZSBjbG9ja3MsIHN0aWNrIGV4dGVybmFsIG1lbW9yeSBpbnRvIHNlbGYtcmVmcmVzaC4KLSAgICBUaGlzIGdhaW5zIHVzIGEgZmV3IGNvb2wgdGhpbmdzOgotICAgICAtIHN1cHBvcnQgc3VzcGVuZC10by1SQU0gd2l0aCBMaW51eAotICAgICAtIHJlcHJvZ3JhbSBjbG9ja3MgYXV0b21hdGljYWxseSB3aGVuIGRvaW5nICJnbyIgb24gdS1ib290LmJpbiBpbiBSQU0KLSAgICAgLSBtYWtlIHN1cmUgc2V0dGluZ3MgYXJlIHN0YWJsZSBiZWZvcmUgZmxhc2hpbmcgbmV3IHZlcnNpb24KLSAgICAgLSBmaW5hbGx5IGZ1bGx5IHVuaWZ5IGluaXRpYWxpemUgc3RhcnR1cCBjb2RlIHBhdGggYmV0d2VlbiBMRFIvbm9uLUxEUgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZDM0N2Q1NzJhYjFmMmQ0N2JmMjU3YzlmN2NhMmU2MDIwMzhhMTM2YgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIxOjU2OjA4IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBkbyBub3QgcHJvZ3JhbSB2b2x0YWdlIHJlZ3VsYXRvciBvbiBwYXJ0cyB0aGF0IGRvIG5vdCBoYXZlIG9uZQotCi0gICAgU29tZSBuZXdlciBCbGFja2ZpbnMgKGxpa2UgdGhlIEJGNTF4KSBkbyBub3QgaGF2ZSBhbiBvbi1jaGlwIHZvbHRhZ2UKLSAgICByZWd1bGF0b3IsIHNvIGRvIG5vdCBhdHRlbXB0IHRvIHByb2dyYW0gdGhlIG1lbW9yeSBhcyBpZiBpdCBkb2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMGQ0ZjI0YjcwZjdhOTc5ZjU4MTc0ZjNlYjI3MTg3NDk1MGI1NTFiNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVuIDEgMDE6Mjg6MjQgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHNldHVwIGEgc2FuZSBkZWZhdWx0IEVCSVVfU0RCQ1RMIGZvciBTRFJBTSBjb250cm9sbGVycwotCi0gICAgSWYgdGhlIGJvYXJkIGNvbmZpZyBkb2VzIG5vdCBzcGVjaWZ5IGFuIGV4cGxpY2l0IEVCSVVfU0RCQ1RMIHZhbHVlLCBzZXQgaXQKLSAgICB1cCB3aXRoIHNhbmUgdmFsdWVzIGJhc2VkIG9uIG90aGVyIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDM5ODZlOTgxZjU2NWMwOGYxMGM3ZTUyNmFmOGNiNTE4ZDc0MWMzNDkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IERlYyA2IDE4OjA2OjU4IDIwMDggLTA1MDAKLQotICAgIEJsYWNrZmluOiBoYW5kbGUgcmVib290IGFub21hbHkgNDMyCi0KLSAgICBXb3JrYXJvdW5kIGFub21hbHkgNDMyOgotICAgIFRoZSBiZnJvbV9TeXNDb250cm9sKCkgZmlybXdhcmUgZnVuY3Rpb24gZG9lcyBub3QgY2xlYXIgdGhlIFNJQ19JV1IxCi0gICAgcmVnaXN0ZXIgYmVmb3JlIGV4ZWN1dGluZyB0aGUgUExMIHByb2dyYW1taW5nIHNlcXVlbmNlLiAgVGhlcmVmb3JlLCBhbnkKLSAgICBpbnRlcnJ1cHQgZW5hYmxlZCBpbiB0aGUgU0lDX0lXUjEgcmVnaXN0ZXIgcHJpb3IgdG8gdGhlIGNhbGwgdG8KLSAgICBiZnJvbV9TeXNDb250cm9sKCkgY2FuIHByZW1hdHVyZWx5IHRlcm1pbmF0ZSB0aGUgaWRsZSBzZXF1ZW5jZSByZXF1aXJlZAotICAgIGZvciB0aGUgUExMIHRvIHJlbG9jayBwcm9wZXJseS4gU0lDX0lXUjAgaXMgcHJvcGVybHkgaGFuZGxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDdlMWQyMTJiNmRhNDkyYzZlYTMyYzYyYWY5MmUxODUyODRmNDEyOTEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxOCAwNDowNDo0OSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2Zpbjoga2lsbCBvZmYgTERSIGp1bXAgYmxvY2sKLQotICAgIFRoZSBCb290IFJPTSB1c2VzIEVWVDEgYXMgdGhlIGVudHJ5IHBvaW50IHNvIHNldCB0aGF0IHJhdGhlciB0aGFuIGhhdmluZwotICAgIHRvIHVzZSBhIHRpbnkganVtcCBibG9jayBpbiB0aGUgZGVmYXVsdCBFVlQxIGxvY2F0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYTc1ZmExNDhkNjBiMTk3NTQwMzQ0MWU0NTU2NTYyMWJiYTUwZDJkOQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgSmFuIDYgMTA6MDA6NDggMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IHNpbXBsaWZ5IHN5bWJvbF9sb29rdXAoKSBhIGJpdAotCi0gICAgTm8gbmVlZCB0byBza2lwIGEgYnl0ZSBhcyB0aGUgc3ltYm9sIHRhYmxlIGhhbmRsZXMgdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDU5ZjA5NzhhN2U3OGQyMDI3N2RkYmRlN2NhZjBlYTg3N2YzY2ZkOTgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IEZlYiA3IDA1OjQzOjIxIDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiBmaXggU0lDX1JWRUNUIGRlZmluaXRpb246IGl0IGlzIDE2Yml0cywgbm90IDMyYml0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNTgxMzBmODkyMDE1MWQ5ZTg5NDJiYmRmMzM4OGYyZGVmYjQ3ZTQxNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgRmViIDcgMDU6NDE6MTcgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IGRyb3AgU1BPUlRfVFggcmVhZCBoZWxwZXIgbWFjcm9zCi0KLSAgICBUaGUgU1BPUlRfVFggcmVnaXN0ZXJzIGNhbm5vdCBiZSByZWFkICh0aGUgaGFyZHdhcmUgd2lsbCB0cmlnZ2VyIGFuIGVycm9yKSwKLSAgICBzbyBkcm9wIHRoZSByZWFkIGhlbHBlciBtYWNyb3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4MjBiMDc2YzQ0OTY4OGJjZDRhZjZkYjVhMzNhZTQyNGQxYTYwZDBlCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBGZWIgNyAwNToyNTozNSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogdW5pZnkgZHVwbGljYXRlIENQVSBwb3J0IGRlZmluaXRpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3NDRmZDI0MGQxODFiMGIwNWIxNDM2ZTFiNjU1YzlhNjI1MjZjNzUyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBGZWIgNiAwMDo1OTo1MCAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogZHJvcCBub3ctdW51c2VkIENPTkZJR19TWVNfQkZJTl9DTURfWFhYCi0KLSAgICBXaXRoIHRoZSBuZXcgQ09ORklHX1hYWCBzeXN0ZW0gYW5kIENPTkZJR19DTURfWFhYIGhhbmRsaW5nLCB0aGVzZSBkZWZpbmVzCi0gICAgYXJlIG5vIGxvbmdlciB1c2VkL25lZWRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDQ1YzQ4OTUzZThhNDAzOGJkNDljNDY4MTNmY2ZmNWEyMDc4NjdhZTQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCA2IDA0OjAxOjI2IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBwcmludCBvdXQgRmxhc2g6IGJlZm9yZSBjaGVja2luZyBpdAotCi0gICAgSWYgdGhlcmUgaXMgc29tZSBwcm9ibGVtIGluIHRoZSBmbGFzaCBpbml0L2NoZWNraW5nIGNvZGUsIGl0J3MgbmljZXIgdG8gc2VlCi0gICAgdGhlIG1lc3NhZ2UgIkZsYXNoOiIgYmVmb3JlIGNyYXNoaW5nLiAgVGhpcyB3YXkgdGhlIHNvdXJjZSBvZiB0aGUgcHJvYmxlbQotICAgIGlzIGEgYml0IG1vcmUgc3RyYWlnaHRmb3J3YXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMWM3YTc5YTA0ZWI5MTZmNjg1ZjcyNzU1MjBiNWVlYTY5NjhhMTU1OQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTU6MzM6MDkgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHNhZmVseSBmbHVzaCBkYXRhIGNhY2hlcyB3aGVuIGluIHdyaXRlYmFjayBtb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjMDZmMmIxMzAyMjcwMzYxMWJjM2U1MTJiZDM0ZjkwMTRhNDZmNDQ4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgNyAxMzoyMTo0OCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdXBkYXRlIGxvY2tib3ggYXBpIGFjY29yZGluZyB0byBsYXRlc3QgZG9jdW1lbnRhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmRlY2MyYThkMTdhNTM5N2NiNTk1NmU0NmM4NDY2YzczNmUzMDVhMgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIxOjQ5OjA2IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBtYXJrIGJmaW5fcmVzZXQgc3RhdGljCi0KLSAgICBUaGUgZnVuY3Rpb24gaXMgb25seSB1c2VkIGxvY2FsbHksIHNvIG1hcmsgaXQgc3RhdGljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOTc0NDczY2FhNzMyZjYzMzEyNjg3ZWYyYmQyZDIyZGFkOGU5OWI5YQotQXV0aG9yOiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KLURhdGU6CUZyaSBNYXIgMjAgMTk6Mjg6MjAgMjAwOSAtMDQwMAotCi0gICAgQmxhY2tmaW46IHNwaTogdGhlcmUgaXMgbm8gUE9SVEpfRkVSIE1NUiBvbiBCRjUzNwotCi0gICAgU2luY2UgdGhlIFBPUlRKIG9uIHRoZSBCRjUzNyBpcyBwZXJpcGhlcmFsLW9ubHkgKG5vIEdQSU8gZnVuY3Rpb25hbGl0eSksCi0gICAgdGhlbiB0aGVyZSBpcyBubyBQT1JUSl9GRVIgcmVnaXN0ZXIgZm9yIHVzIHRvIHdvcnJ5IGFib3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU29uaWMgWmhhbmcgPFNvbmljLlpoYW5nQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZTgyYjc2MmYyOTNkZWJjNTNjNWFmYTkwZjM3MjY0ZjZiMDc1MjBmOQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgTWFyIDE3IDEzOjU4OjIzIDIwMDkgLTA0MDAKLQotICAgIEJsYWNrZmluOiBmaXgganRhZyBjb25zb2xlIHRzdGMKLQotICAgIFRoZSBqdGFnIHRzdGMgb3BlcmF0aW9uIHdhcyBjaGVja2luZyB0aGUgaGFyZHdhcmUgdG8gc2VlIGlmIGRhdGEgaXMKLSAgICBhdmFpbGFibGUgZnJvbSBpdCAod2hpY2ggaXMgZmluZSBmb3IgdGhlIGp0YWcgZ2V0YyBvcGVyYXRpb24pLCBidXQgdGhlCi0gICAgaGlnaGVyIGxheWVycyBuZWVkIHRvIGtub3cgd2hldGhlciBhbnkgZGF0YSBpcyBhdmFpbGFibGUuICBTaW5jZSB3ZSBoYXZlCi0gICAgdG8gcmVhZCB1cCB0byA0IGJ5dGVzIGF0IGEgdGltZSBmcm9tIHRoZSBoYXJkd2FyZSwgdGhlIGhpZ2hlciBsYXllcnMgbmVlZAotICAgIHRvIGtub3cgdGhleSBjYW4gY29uc3VtZSB0aGUgY2FjaGVkIGJ5dGVzIGFzIHdlbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiYzY4M2Y1OGIxZjFkOGQyMDU0NmZlMDE5NDgzOTY3YTUxYTQ5ZGYxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBGZWIgMjIgMTY6MjM6NDEgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wOiBtb3ZlIENPTkZJR19QT1NUIGhhbmRsaW5nIHRvIENPQkpTLSQoLi4uKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgODk5NmQxNjA4YWNiOGY1OWZjYjE4NmRjN2VkN2Q4N2Y4ZmVlMTI5NwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gRmViIDIyIDE2OjAyOjI3IDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiB1bmlmeSBuZXQtcmVsYXRlZCBpbml0IGNvZGUKLQotICAgIFVuaWZ5IGFsbCBvZiB0aGUgbmV0LXJlbGF0ZWQgaW5pdCBjb2RlIGluIHRoZSBjb21tb24gQmxhY2tmaW4gYm9hcmQgaW5pdAotICAgIGNvZGUgdG8gY2xlYW4gdXAgdGhlIGlmZGVmIG1lc3MgYSBiaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjNmVhMzBlNTJlYTgyYWY0ODU4ZDJiNmY5OWUwZmQyZWEyNzZkNjU3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTggMTI6NTE6NDggMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IGZpeCBTV1JTVC9TWVNDUiByZWdpc3RlciBzaXplcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYTlkNjc3N2QzOTE1NDk3OGI5ZWY5YzY4MmIyNjI3YTM0ODBiMTk0YwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDE4IDEyOjUxOjMxIDIwMDkgLTA1MDAKLQotICAgIEJsYWNrZmluOiB1cGRhdGUgYW5vbWFseSBsaXN0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNGQ3YzMyZGFkMmU3ODdmODkwZWJjZDUxYmZiNzIzYTEyNjkxM2M5MAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IE1hciAxOSAxODozMTozOCAyMDA5ICswMTAwCi0KLSAgICBhdnIzMjogZml4IGNhY2hlZmx1c2guaCBsb2NhdGlvbiBpbnRyb2R1Y3RlZCBieSBkOGYyYWEzMjk4NjEwYgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAzYTNiYWYzZWU2MWU2YjI4YWYzYjQ5ZWJhYmM5YWI0ZjYwMTVhYTQ4Ci1BdXRob3I6IEVyaWMgU2NodW1hbm4gPEUuU2NodW1hbm5AcGh5dGVjLmRlPgotRGF0ZToJU2F0IE1hciAyMSAwOTo1OTozNCAyMDA5IC0wNDAwCi0KLSAgICBNYWtlIGZsYXNoIHByb3RlY3Rpb24gd29yaywgd2hlbiB0aGUgZW52aXJvbm1lbnQgaXMgaW4gRUVQUk9NCi0KLSAgICBPbiB0aGUgcGNtMDMwIHRoZSBlbnZpcm9ubWVudCBpcyBsb2NhdGVkIGluIHRoZSBvbmJvYXJkIEVFUFJPTS4gQnV0IHdlIHdhbnQKLSAgICB0byBoYW5kbGUgZmxhc2ggc2VjdG9yIHByb3RlY3Rpb24gaW4gYSBzYWZlIG1hbm5lci4gU28gd2UgbXVzdCByZWFkIHRoZQotICAgIHVubG9jayBlbnZpcm9ubWVudCB2YXJpYWJsZSBmcm9tIEVFUFJPTSBpbnN0ZWFkIGZyb20gZmxhc2guCi0KLSAgICBUaGlzIHBhdGNoIGlzIHJlcXVpcmVkIGFzIGxvbmcgdGhlIGV2aXJvbm1lbnQgaXMgc2F2ZWQgaW50byB0aGUgRUVQUk9NLgotCi0gICAgU3RlZmFuOiBBZGRpdGlvbmFsIGNoYW5nZSBhcyBzdWdnZXN0ZWQgYnkgV29sZmdhbmcsIHVzZSBiaWdnZXIgY2hhciBhcnJheQotICAgIChpbnN0ZWFkIG9mIDQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJpYyBTY2h1bWFubiA8RS5TY2h1bWFubkBwaHl0ZWMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRlM2NlOGM1OWY0OGY5OTc3OWQ3ZDczNzlhNTQzMmRlZDEyZWMwNmMKLUF1dGhvcjogSm9uIFNtaXJsIDxqb25zbWlybEBnbWFpbC5jb20+Ci1EYXRlOglTYXQgTWFyIDIxIDExOjE3OjU2IDIwMDkgLTA0MDAKLQotICAgIEFkZCBkZWZpbmUgZm9yIG1wYzUyMDAgQ0RNX0NMS19FTkEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgotCi1jb21taXQgZGY0ODZiMWZhM2Y3NTBiMTUzZWFjN2RhYTBiM2JmMWY1OTRlNTA5OAotQXV0aG9yOiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KLURhdGU6CVN1biBNYXIgMjIgMTQ6NDg6MTYgMjAwOSArMDEwMAotCi0gICAgYXQ5MTogU3VwcG9ydCBmb3IgdGhlIGF0OTFzYW05ZzIwIDogQXRtZWwgNDAwTWh6IEFSTSA5MjZlai1zIFNPQy4KLQotICAgIEFUOTFzYW05ZzIwIGlzIGFuIGV2b2x1dGlvbiBvZiB0aGUgYXQ5MXNhbTkyNjAgd2l0aCBhIGZhc3RlciBjbG9jayBzcGVlZC4KLQotICAgIFRoZSBBVDkxU0FNOUcyMC1FSyBib2FyZCBpcyBhbiB1cGRhdGVkIHJldmlzaW9uIG9mIHRoZSBBVDkxU0FNOTI2MC1FSyBib2FyZC4KLSAgICBJdCBpcyBlc3NlbnRpYWxseSB0aGUgc2FtZSwgd2l0aCBhIGZldyBtaW5vciBkaWZmZXJlbmNlcy4KLQotICAgIEhlcmUgaXMgdGhlIGNoaXAgcGFnZSBvbiBBdG1lbCB3ZWJzaXRlOgotICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9wcm9kdWN0cy9wcm9kdWN0X2NhcmQuYXNwP3BhcnRfaWQ9NDMzNwotCi0gICAgU2lnbmVkLW9mZi1ieTogSnVzdGluIFdhdGVycyA8anVzdGluLndhdGVyc0B0aW1lc3lzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTE4ZDE2ODAzNWNjOTNmNTg2ZGE0ODEyYzg5Y2IxNTNlYjlmNDI0MwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1hciAyMiAxNDoyODoxNCAyMDA5ICswMTAwCi0KLSAgICBjbWNfcHUyOiBmaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2V0aF9zZXRlbnZfZW5ldGFkZHInCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTc2YzRhOTgyYzY1MzFmOTY0MjZhZmFhMTEyNmNmOWE1ZTJkNWUwMwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1hciAyMiAxNDoyODoxMyAyMDA5ICswMTAwCi0KLSAgICBjbWNfcHUyOiBmaXggbWlzY19pbml0X3IgcHJvdG90eXBlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTMxNThhZWE5OTUyMjE3MDZiNDJjN2JhZDlmNzE3YjMxYWUyMDQxNAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEphbiAxMSAwMzozMjowMSAyMDA5ICswMTAwCi0KLSAgICBhdDkxc2FtOXhlZWs6IGZpeCBzb2MgbmFtZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDc0YzA3NmQ2YzMzZDZkNDJhYjA2NTU0MWEzODM4MzU4Nzg3OWU3YjcKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgMjIgMTA6MjI6MzQgMjAwOSArMDEwMAotCi0gICAgYXQ5MXNhbTkvYXQ5MWNhcDogbW92ZSBuYW5kIGRyaXZlcnMgdG8gZHJpdmVycy9tdGQvbmFuZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDE2Mzk2NjA4N2Q2MjY4MDU0N2YxODhhOTNjNjFkMDFjODE1NTI1NGUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBNYXIgMjEgMjE6MDg6MDEgMjAwOSArMDEwMAotCi0gICAgYXRtZWwvYXQ5MS9ib2FyZHM6IGNvbXBpbGUgZGF0YWZsYXNoIHBhcnRpdGlvbiBvbmx5IHdoZW4gZGF0YWZsYXNoIGlzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZTJjMDQ3NmY5NThmOGUwYjI2OWExMTE4ZjRiYTRhNWNkNDc1YWE1NgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1hciAyMSAyMTowODowMCAyMDA5ICswMTAwCi0KLSAgICBhdDkxc2FtOS9hdDkxY2FwOiBtb3ZlIGNvbW1vbiBtYWNiIGluaXRpYWxpc2F0aW9uIHRvIGNwdQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGYzZjkxZjg4NmJjODkyN2ZkNjkyYWM0MTFiNzQyM2E4N2ZmZWM1MzIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBNYXIgMjEgMjE6MDg6MDAgMjAwOSArMDEwMAotCi0gICAgYXQ5MXNhbTkvYXQ5MWNhcDogbW92ZSBjb21tb24gdXNiIGhvc3QgaW5pdGlhbGlzYXRpb24gdG8gY3B1Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYTQ4NGIwMGI4NmU3MmFjNmRhNmVlNGZjZTEzZGJjNmIyNTY2NzJmZQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE1hciAyMSAyMTowODowMCAyMDA5ICswMTAwCi0KLSAgICBhdDkxc2FtOS9hdDkxY2FwOiBtb3ZlIGNvbW1vbiBsZWQgbWFuYWdlbWVudCB0byBjcHUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA3ZWJhZmI3ZWMxYTAyODVhZjgzODA2MjNjMDA5NTc2ZjkyNTgzYjk4Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTWFyIDIxIDIxOjA3OjU5IDIwMDkgKzAxMDAKLQotICAgIGF0OTFzYW05L2F0OTFjYXA6IG1vdmUgY29tbW9uIHNwaSBpbml0aWFsaXNhdGlvbiB0byBjcHUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxMzMyYTJhMDY5NGM4ZTEwYTViYWRlMzk3Y2Y4MzY0NWIyYzNmZDdlCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTWFyIDIxIDIxOjA3OjU5IDIwMDkgKzAxMDAKLQotICAgIGF0OTFzYW05L2F0OTFjYXA6IG1vdmUgY29tbW9uIHNlcmlhbCBpbml0aWFsaXNhdGlvbiB0byBjcHUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlNjBiZWIxM2NmMDEzNWRjNzFjNTQxMDIxNDg3YjVjY2M0ZDI2OWNiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWFyIDIxIDIyOjA0OjQxIDIwMDkgKzAxMDAKLQotICAgIFByZXBhcmUgMjAwOS4wMwotCi0gICAgVXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDllNzhkYWUyYjI3NmM1YmY5YWI5MmNkODUxNzNmNmNiOTJiMWI3ZDUKLUF1dGhvcjogVml2ZWsgS3V0YWwgPHZpdmVrLmt1dGFsQGF6aW5nby5jb20+Ci1EYXRlOglNb24gRmViIDIzIDIxOjM1OjExIDIwMDkgKzA1MzAKLQotICAgIFJlcGxhY2VkIGVuZHBvaW50IG51bWJlcnMgd2l0aCBhcHByb3ByaWF0ZSBtYWNyb3MgaW4gdXNidHR5LmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXZlayBLdXRhbCA8dml2ZWsua3V0YWxAYXppbmdvLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGZhYWM0ZmQ4NTJlMzljYjFkN2E3NDA4MDFiMDYwZTQxYWVhY2VmMWYKLUF1dGhvcjogTWljaGFlbCBMYXduaWNrIDxtbC5sYXduaWNrQGdteC5kZT4KLURhdGU6CVRodSBNYXIgMTkgMTA6MDY6NDEgMjAwOSArMDEwMAotCi0gICAgVUJJRlM6IE1pc3Npbmcgb2Zmc2V0IHJlbG9jYXRpb24gZm9yIGNvbXByZXNzb3IgJ25vbmUnCi0KLSAgICBPbiBzeXN0ZW1zIHdoZXJlIFUtQm9vdCBpcyBsaW5rZWQgdG8gYW5vdGhlciBhZGRyZXNzIHRoYW4gaXQgcmVhbGx5IGxheXMKLSAgICAoZS5nLiBiYWNrdXAgaW1hZ2UpLCBjYWxscyB2aWEgZnVuY3Rpb24gcG9pbnRlcnMgbXVzdCBiZSBmaXhlZCB3aXRoIGEKLSAgICAnKz0gZ2QtPnJlbG9jX29mZicuCi0gICAgVGhpcyB3YXMgbm90IGRvbmUgZm9yIG5vbmVfY29tcHIgaW4gdWJpZnNfY29tcHJlc3NvcnNfaW5pdCgpIHdoYXQgbGVhZHMKLSAgICB0byBzeXN0ZW0gY3Jhc2ggb24gdWJpZnNtb3VudCBjb21tYW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBMYXduaWNrIDxtbC5sYXduaWNrQGdteC5kZT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2U2ZDBjOGRlMDMxZjM0NWJkZTc0NWYzYjg1NTA4MmFkZjFjNGU0NQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDE5IDE1OjM1OjUwIDIwMDkgKzAxMDAKLQotICAgIFVCSUZTOiBBZGQgVUJJRlMgY29tbWFuZHMKLQotICAgIFRoaXMgcGF0Y2hzZXQgYWRkcyB0aGVzZSBVQklGUyByZWxhdGVkIGNvbW1hbmRzOgotCi0gICAgLSB1Ymlmc21vdW50Ci0gICAgICBNb3VudCBhbiBVQklGUyB2b2x1bWUKLQotICAgIC0gdWJpZnNscwotICAgICAgTGlzdCBhIGRpcmVjdG9yeSBvZiB0aGUgbW91bnRlZCBVQklGUyB2b2x1bWUKLQotICAgIC0gdWJpZnNsb2FkCi0gICAgICBMb2FkIGEgZmlsZSBmcm9tIHRoZSBtb3VudGVkIFVCSUZTIHZvbHVtZSB0byBtZW1vcnkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDllZWZlMmEyYjM3YTgzODU1OGUzZDIxM2E5ZjU1MTk1MDNkMGMxODAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciAxOSAxNTozNTowNSAyMDA5ICswMTAwCi0KLSAgICBVQklGUzogSW1wbGVtZW50IHJlYWQtb25seSBVQklGUyBzdXBwb3J0IGluIFUtQm9vdAotCi0gICAgVGhlIFUtQm9vdCBVQklGUyBpbXBsZW1lbnRhdGlvbiBpcyBsYXJnZWx5IGEgZGlyZWN0IGNvcHkgZnJvbSB0aGUgY3VycmVudAotICAgIExpbnV4IHZlcnNpb24gKDIuNi4yOS1yYzYpLiBBcyBhbHJlYWR5IGRvbmUgaW4gdGhlIFVCSSB2ZXJzaW9uIHdlIGhhdmUgYW4KLSAgICAiYWJzdHJhY3Rpb24gbGF5ZXIiIHRvIHJlZGVmaW5lIG9yIHJlbW92ZSBzb21lIE9TIGNhbGxzIChlLmcuIG11dGV4X2xvY2soKQotICAgIC4uLikuIFRoaXMgbWFrZXMgaXQgcG9zc2libGUgdG8gdXNlIHRoZSBvcmlnaW5hbCBMaW51eCBjb2RlIHdpdGggdmVyeQotICAgIGxpdHRsZSBjaGFuZ2VzLiBBbmQgYnkgdGhpcyB3ZSBjYW4gYmV0dGVyIHVwZGF0ZSB0byBsYXRlciBMaW51eCB2ZXJzaW9ucy4KLQotICAgIEkgcmVtb3ZlZCBzb21lIG9mIHRoZSBMaW51eCBmZWF0dXJlcyB0aGF0IGFyZSBub3QgdXNlZCBpbiB0aGUgVS1Cb290Ci0gICAgdmVyc2lvbiAoZS5nLiBnYXJiYWdlLWNvbGxlY3Rpb24sIHdyaXRlIHN1cHBvcnQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIENDOiBBcnRlbSBCaXR5dXRza2l5IDxkZWRla2luZEBpbmZyYWRlYWQub3JnPgotICAgIENDOiBBZHJpYW4gSHVudGVyIDxleHQtQWRyaWFuLkh1bnRlckBub2tpYS5jb20+Ci0KLWNvbW1pdCBiMWI0ZTg5YTBmM2I3NTg1NGMzOWE2MmNhZTQxYmFkNTZkMjEwYWRmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBNYXIgMTkgMTU6MzQ6NTYgMjAwOSArMDEwMAotCi0gICAgQWRkIExaTyBkZWNvbXByZXNzb3Igc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIExaTyBkZWNvbXByZXNzaW9uIHN1cHBvcnQgdG8gVS1Cb290LiBJdCBpcyBuZWVkZWQgZm9yCi0gICAgdGhlIHVwY29taW5nIFVCSUZTIHN1cHBvcnQsIHNpbmNlIFVCSUZTIHVzZXMgTFpPIGFzIGRlZmF1bHQgY29tcHJlc3Nvci8KLSAgICBkZWNvbXByZXNzb3IuIFNpbmNlIHdlIG9ubHkgc3VwcG9ydCByZWFkLW9ubHkgaW4gVUJJRlMsIG9ubHkgdGhlCi0gICAgZGVjb21wcmVzc29yIGlzIG5lZWRlZC4KLQotICAgIEFsbCB0aGlzIGlzIGNvcGllZCB3aXRoIG1pbm9yIGNoYW5nZXMgZnJvbSB0aGUgY3VycmVudCBMaW51eCBrZXJuZWwKLSAgICB2ZXJzaW9uICgyLjYuMjgtcmM4KS4KLQotICAgIFRoaXMgcGF0Y2ggb25seSBpbXBsZW1lbnRzIHRoaXMgTFpPIGRlY29tcHJlc3NvciBzdXBwb3J0IGZvciBQUEMuCi0gICAgT3RoZXIgcGxhdGZvcm1zIHVzaW5nIFVCSUZTIHdpbGwgaGF2ZSB0byBhZGQgdGhlIHJlcXVpcmVkCi0gICAgImluY2x1ZGUvYXNtL3VuYWxpZ25lZC5oIiBhcyB3ZWxsLiBJdCBzaG91bGQgYmUgZmFpcmx5IGVhc3kgdG8gY29weSB0aGlzCi0gICAgZnJvbSB0aGUgTGludXggc291cmNlIHRyZWUgYXMgSSBoYXZlIGRvbmUgaXQgZm9yIFBQQyBpbiB0aGlzIHBhdGNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjhkN2Q2NTEwMGU4NGRmMDBiY2E5NzFjMTE0MDkyNzMxYjQ0MTA5MAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDE5IDEzOjMwOjM2IDIwMDkgKzAxMDAKLQotICAgIFNlcGFyYXRlIG10ZHBhcnRzIGNvbW1hbmQgZnJvbSBqZmZzMgotCi0gICAgQ3VycmVudGx5IHRoZSBtdGRwYXJ0cyBjb21tYW5kcyBhcmUgaW5jbHVkZWQgaW4gdGhlIGpmZnMyIGNvbW1hbmQgc3VwcG9ydC4KLSAgICBUaGlzIGRvZXNuJ3QgbWFrZSBzZW5zZSBhbnltb3JlIHNpbmNlIG90aGVyIGNvbW1hbmRzIChlLmcuIFVCSSkgdXNlIHRoaXMKLSAgICBpbmZyYXN0cnVjdHVyZSBhcyB3ZWxsIG5vdy4gVGhpcyBwYXRjaCBzZXBhcmF0ZXMgdGhlIG10ZHBhcnRzIGNvbW1hbmRzIGZyb20KLSAgICB0aGUgamZmczIgY29tbWFuZHMgbWFraW5nIGl0IHBvc3NpYmxlIHRvIG9ubHkgc2VsZWN0IG10ZHBhcnRzIHdoZW4gbm8gSkZGUzIKLSAgICBzdXBwb3J0IGlzIG5lZWRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgMDJhMzAxY2Q1MDg3ZWFmZmRmNDU2ZTBhNWNlYzExMDBjNGQ5YTM5OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDI1IDEyOjExOjE1IDIwMDkgKzAxMDAKLQotICAgIHBvd2VycGM6IE9ubHkgdXNlIGV0aF9nZXRlbnZfZW5ldGFkZHIoKSBpZiBuZXR3b3JraW5nIGlzIGVuYWJsZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDVjNGZhOWI0NzRhZjk1ZDYwZjAxOWVjNjM2OWNiZTc3YjlkYWI0YjUKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgTWFyIDE3IDEwOjA2OjQwIDIwMDkgKzAxMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgZGlnc3kgTVRDIGJvYXJkLgotCi0gICAgVGhpcyBpcyB0aGUgSW50ZXJDb250cm9sIGN1c3RvbSBkZXZpY2UgYmFzZWQgb24gdGhlIE1QQzUyMDBCIGNoaXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGZmN2RjMDY3MzY5ZTMwMDY2NzQ0ZjA5Njk5NWFlZjdkOTc1NzRkMTUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEZlYiAyMyAxNjo1MjozNiAyMDA5ICswMTAwCi0KLSAgICBwb3dlcnBjOiBGaXggY29tcGlsYXRpb24gd2FybmluZyBpbiBib2FyZC5jCi0KLSAgICBGaXggdGhpcyB3YXJuaW5nOgotCi0gICAgYm9hcmQuYzogSW4gZnVuY3Rpb24gJ2JvYXJkX2luaXRfcic6Ci0gICAgYm9hcmQuYzo2NTM6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaScKLSAgICBib2FyZC5jOjY1MTogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdlJwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOWNkNjkwMTYwZDNjZTFhN2ZiNGNlZWVlNmM5OWNlZGIxYWMxZDQ5YwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gRmViIDIzIDE2OjQyOjUxIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogRG9uJ3Qgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIGludG8gdGhlIGludGVybmFsIFNvQyByZWdpc3RlcnMKLQotICAgIFJlbW92ZSB0aGlzIGNvZGUuIEl0J3Mgbm90IG5lZWRlZC4gVGhlIDR4eCBFTUFDIGRyaXZlciBzdG9yZXMgdGhlIE1BQwotICAgIGFkZHJlc3NlcyBpbnRvIHRoZSBTb0MgcmVnaXN0ZXJzIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiYjU3YWQ0YmU3NmQwZTJlN2Y5ZWM1NjY3ODIzNWNjOTg3MmZmNDBmCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIEZlYiAyMCAxMDoxOToxOSAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IFVzZSBjb3JyZWN0IGlvIGFjY2Vzc29ycyBmb3IgZXNkIDQwNS80NDAgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIGluL291dDgvMTYvMzIgbWFjcm9zIGJ5IGluL291dF84L19iZTE2L19iZTMyCi0gICAgbWFjcm9zLiBBbHNvIHZvbGF0aWxlIHBvaW50ZXIgcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgYnkgdGhlCi0gICAgbmV3IGFjY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDQ5MjE2ZjA0NWZkOGUwZjQ1YmNlZjEyMWMyYmIxYzdkM2RlNjk4OAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTggMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBVc2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgZm9yIGVzZCA0MDUgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIGluL291dDgvMTYvMzIgbWFjcm9zIGJ5IGluL291dF84L19iZTE2L19iZTMyCi0gICAgbWFjcm9zLiBBbHNvIHZvbGF0aWxlIHBvaW50ZXIgcmVmZXJlbmNlcyBhcmUgcmVwbGFjZWQgYnkgdGhlCi0gICAgbmV3IGFjY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTU5MjA1ZDE1MTkzNzVkMDI3Zjk3YTU0NWFkNjQyYWIyMGZjZTZmOAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTcgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBDbGVhbnVwIGxpbmtlciBzY3JpcHRzIG9mIGVzZCA0eHggYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDJmMTAzZWUyODRlNjg5MzRhNjQ4NzMyZGI1ZTBiNmNlYjRhMWVkOGYKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgRmViIDIwIDEwOjE5OjE2IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIFRFWFRfQkFTRSBmb3IgREFTQV9TSU0gYm9hcmRzCi0KLSAgICBGaXggYnVpbGRpbmcgREFTQV9TSU0gYm9hcmRzIGJ5IGluY3JlYXNpbmcgVS1Cb290J3Mgc2l6ZSBpbiBmbGFzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDlkYjhmNGRlNjgwNWYxZGRlNTEwYzE2N2YyMGU1NmE1NDA1ZDI5ZQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTUgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBEVTQwNSBtYWludGVuYW5jZSBmaXgKLQotICAgIC1zdHJpcCB1bnVzZWQgZmVhdHVyZXMKLSAgICAtZml4IHJlc2V0dGluZyBwaHkKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzU1MTFiNDdhYzI2NDdiZTQ4MjE4ZGJiOTNhZjA1YjIxZjQwNGY2NwotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBGZWIgMjAgMTA6MTk6MTQgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBBYm9ydCBhdXRvYm9vdCBvbmx5IGJ5IHNwYWNlIGtleSBvbiBDUENJNDA1IGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZTE3ZWUxNTdjYTlmZjBkNGNjNTg0MWQwNmM0YjcwYzE2MDNkZjI5YwotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJVHVlIEZlYiAyNCAyMToxNDo1NiAyMDA5ICsxMTAwCi0KLSAgICBBZGQgYmFzaWMgcmVsb2NhdGlvbiB0byBpMzg2IHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA4YzYzZDQ3NjUxZjc3ZDlmYjg4N2NhZDQzMzM3MGI4NjZlYjBhMTkzCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgRmViIDI0IDIxOjE0OjQ1IDIwMDkgKzExMDAKLQotICAgIEltcGxlbWVudCBTQzUyMCB0aW1lcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2ZDdmNjEwYjA5ZjgxM2IxMjM5ZWVkY2JmZTkyMWNmZDQzOWFlYTI1Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgRmViIDI0IDIxOjE0OjMyIDIwMDkgKzExMDAKLQotICAgIEZhY3RvciBvdXQgU0M1MjAgc3ViLWZlYXR1cmVzCi0KLSAgICBNb3ZlZCBzdWItZmVhdHVyZXMgb2YgdGhlIFNDNTIwIGNvZGUgd2hpY2ggaXMgY3VycmVudGx5IHNlbGVjdGl2ZWx5IGNvbXBpbGVkCi0gICAgdXNpbmcgI2lmZGVmIG91dCBvZiBzYzUyMC5jIGludG8gaW5kaXZpZHVhbCBmaWxlcyBzZWxlY3RpdmVseSBjb21waWxlZCB2aWEKLSAgICB0aGUgbWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhYmYwY2QzZGZmMjI3Y2ZiNmU4MmFkMTNiZTYyZTI4ZTZlODlkNWRmCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgRmViIDI0IDIxOjEzOjQwIDIwMDkgKzExMDAKLQotICAgIFJld3JpdGUgaTM4NiBpbnRlcnJ1cHQgaGFuZGxpbmcKLQotICAgIFJld3JpdGUgaW50ZXJydXB0IGhhbmRsaW5nIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBpMzg2IHBvcnQuIFNlcGFyYXRlZAotICAgIGZ1bmN0aW9uYWxpdHkgaW50byBzZXBhcmF0ZSBDUFUgYW5kIEFyY2hpdGVjdHVyZSBjb21wb25lbnRzLgotCi0gICAgSXQgYXBwZWFycyBhcyBpZiB0aGUgaTM4NiBpbnRlcnJ1cHQgaGFuZGxlciBmdW5jdGlvbmFsaXR5IHdhcyBpbnRlbmRlZAotICAgIHRvIGFsbG93IG11bHRpcGxlIGhhbmRsZXJzIHRvIGJlIGluc3RhbGxlZCBmb3IgYSBnaXZlbiBpbnRlcnJ1cHQuCi0gICAgVW5mb3J0dW5hdGVseSwgdGhpcyBmdW5jdGlvbmFsaXR5IHdhcyBub3QgZnVsbHkgaW1wbGVtZW50ZWQgYW5kIGFsc28KLSAgICBoYWQgdGhlIHByb2JsZW0gdGhhdCBpcnFfZnJlZV9oYW5kbGVyKCkgZG9lcyBub3QgYWxsb3cgdGhlIHBhc3NpbmcKLSAgICBvZiB0aGUgaGFuZGxlciBmdW5jdGlvbiBwb2ludGVyIGFuZCB0aGVyZWZvcmUgY291bGQgbmV2ZXIgYmUgdXNlZCB0bwotICAgIGZyZWUgc3BlY2lmaWMgaGFuZGxlcnMgdGhhdCBoYWQgYmVlbiBpbnN0YWxsZWQgZm9yIGEgZ2l2ZW4gSVJRLgotCi0gICAgVGhlcmUgd2VyZSBhbHNvIHZhcmlvdXMgaXNzdWVzIHdpdGggYXJyYXkgYm91bmRzIG5vdCBiZWluZyBmdWxseQotICAgIHRlc3RlZC4KLQotICAgIEkgaGFkIHR3byBvYmplY3RpdmVzIGluIG1pbmQgZm9yIHRoZSBuZXcgaW1wbGVtZW50YXRpb246Ci0KLSAgICAxKSBLZWVwIHRoZSBpbXBsZW1lbnRhdGlvbiBhcyBzaW1pbGFyIGFzIHBvc3NpYmxlIHRvIGV4aXN0aW5nCi0gICAgICAgaW1wbGVtZW50YXRpb25zLiBUbyB0aGF0IGVuZCwgSSBoYXZlIHVzZWQgdGhlIGxlb24yLzMKLSAgICAgICBpbXBsZW1lbnRhdGlvbnMgYXMgdGhlIHJlZmVyZW5jZQotCi0gICAgMikgU2VwZXJhdGUgQ1BVIGFuZCBBcmNoaXRlY3R1cmUgc3BlY2lmaWMgZWxlbWVudHMuIEFsbCBzcGVjaWZpYyBpMzg2Ci0gICAgICAgaW50ZXJydXB0IGZ1bmN0aW9uYWxpdHkgaXMgbm93IGluIGNwdS9pMzg2LyB3aXRoIHRoZSBoaWdoIGxldmVsCi0gICAgICAgQVBJIGFuZCBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY29kZSBpbiBsaWJfaTM4Ni4gRnVuY3Rpb25hbGl0eQotICAgICAgIHNwZWNpZmljIHRvIHRoZSBQQy9BVCBhcmNoaXRlY3R1cmUgKGkuZS4gY2FzY2FkZWQgaTgyNTkgUElDcykgaGFzCi0gICAgICAgYmVlbiBmdXJ0aGVyIHNwbGl0IG91dCBpbnRvIGFuIGluZGl2aWR1YWwgZmlsZSB0byBhbGxvdyBmb3IgdGhlCi0gICAgICAgaW1wbGVtZW50YXRpb24gb2YgdGhlIFBJQyBhcmNoaXRlY3R1cmUgb2YgdGhlIFNDNTIwIENQVSAoc3VwcG9ydHMKLSAgICAgICBtb3JlIElSUXMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3MgYXQgZ21haWwuY29tPgotCi1jb21taXQgZWNlNDQ0YjQyYjcxZWI1YmNlMzRhMjRlYzU4NDU3M2IzYzhjNGE5OAotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJVHVlIEZlYiAyNCAyMToxMjozNSAyMDA5ICsxMTAwCi0KLSAgICBNb3ZlIGFsaTUxMnguaAotCi0gICAgTW92ZWQgYWxpNTEyeC5oIGZyb20gaW5jbHVkZS9hc20taTM4Ni9pYy8gdG8gL2luY2x1ZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2ZDgzZTNhYzYxZGNkYmNiN2YwNDY2NDMwOWE5Njg5ZmUwMWM1NzA0Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgRmViIDI0IDIxOjEyOjIwIDIwMDkgKzExMDAKLQotICAgIFJlbmFtZSBTQzUyMCBDb25maWd1cmF0aW9uIE9wdGlvbnMKLQotICAgIE9wdGlvbnMgYXJlIG5vdyBhbGwgdW5pZm9ybWx5IENPTkZJR19TWVNfU0M1MjBfPG9wdGlvbj4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzcyBhdCBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmNjJmYjk5OTQxYzYyNTYwNWFhMTZhMDA5N2IzOTZhNWMxNmQyYzg4Ci1BdXRob3I6IFRyZW50IFBpZXBobyA8eHl6enlAc3BlYWtlYXN5Lm9yZz4KLURhdGU6CVdlZCBGZWIgMTggMTU6MjI6MDUgMjAwOSAtMDgwMAotCi0gICAgRml4IGFsbCBsaW5rZXIgc2NyaXB0IHRvIGhhbmRsZSBhbGwgcm9kYXRhIHNlY3Rpb25zCi0KLSAgICBBIHJlY2VudCBnY2MgYWRkZWQgYSBuZXcgdW5hbGlnbmVkIHJvZGF0YSBzZWN0aW9uIGNhbGxlZCAnLnJvZGF0YS5zdHIxLjEnLAotICAgIHdoaWNoIG5lZWRzIHRvIGJlIGFkZGVkIHRoZSB0aGUgbGlua2VyIHNjcmlwdC4gIEluc3RlYWQgb2YganVzdCBhZGRpbmcgdGhpcwotICAgIG9uZSBzZWN0aW9uLCB3ZSB1c2UgYSB3aWxkY2FyZCAiLnJvZGF0YSoiIHRvIGdldCBhbGwgcm9kYXRhIGxpbmtlciBzZWN0aW9uCi0gICAgZ2NjIGhhcyBub3cgYW5kIG1pZ2h0IGFkZCBpbiB0aGUgZnV0dXJlLgotCi0gICAgSG93ZXZlciwgJyooLnJvZGF0YSopJyBieSBpdHNlbGYgd2lsbCByZXN1bHQgaW4gc3ViLW9wdGltYWwgc2VjdGlvbgotICAgIG9yZGVyaW5nLiAgVGhlIHNlY3Rpb25zIHdpbGwgYmUgc29ydGVkIGJ5IG9iamVjdCBmaWxlLCB3aGljaCBjYXVzZXMgZXh0cmEKLSAgICBwYWRkaW5nIGJldHdlZW4gdGhlIHVuYWxpZ25lZCByb2RhdGEuc3RyLjEuMSBvZiBvbmUgb2JqZWN0IGZpbGUgYW5kIHRoZQotICAgIGFsaWduZWQgcm9kYXRhIG9mIHRoZSBuZXh0IG9iamVjdCBmaWxlLiAgVGhpcyBpcyBlYXN5IHRvIGZpeCBieSB1c2luZyB0aGUKLSAgICBTT1JUX0JZX0FMSUdOTUVOVCBjb21tYW5kLgotCi0gICAgVGhpcyBwYXRjaCBoYXMgbm90IGJlIHRlc3RlZCBvbmUgbW9zdCBvZiB0aGUgYm9hcmRzIG1vZGlmaWVkLiAgU29tZSBib2FyZHMKLSAgICBoYXZlIGEgbGlua2VyIHNjcmlwdCB0aGF0IGxvb2tzIHNvbWV0aGluZyBsaWtlIHRoaXM6Ci0KLSAgICAqKC50ZXh0KQotICAgIC4gPSBBTElHTigxNik7Ci0gICAgKigucm9kYXRhKQotICAgICooLnJvZGF0YS5zdHIxLjQpCi0gICAgKiguZWhfZnJhbWUpCi0KLSAgICBJIGNoYW5nZSB0aGlzIHRvOgotCi0gICAgKigudGV4dCkKLSAgICAuID0gQUxJR04oMTYpOwotICAgICooLmVoX2ZyYW1lKQotICAgICooU09SVF9CWV9BTElHTk1FTlQoU09SVF9CWV9OQU1FKC5yb2RhdGEqKSkpCi0KLSAgICBUaGlzIG1lYW5zIHRoZSBzdGFydCBvZiByb2RhdGEgd2lsbCBubyBsb25nZXIgYmUgMTYgYnl0ZXMgYWxpZ25lZC4KLSAgICBIb3dldmVyLCB0aGUgYm91bmRhcnkgYmV0d2VlbiB0ZXh0IGFuZCByb2RhdGEvZWhfZnJhbWUgaXMgc3RpbGwgYWxpZ25lZCB0bwotICAgIDE2IGJ5dGVzLCB3aGljaCBpcyB3aGF0IEkgdGhpbmsgdGhlIHJlYWwgcHVycG9zZSBvZiB0aGUgQUxJR04gY2FsbCBpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8eHl6enlAc3BlYWtlYXN5Lm9yZz4KLQotY29tbWl0IDU2NmI2NTJjN2NkYjBlNWUwNTI5YmIzZDFlYWZmYmQyYmY0NWEwMzIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEZlYiAxMSAxODoyNjowOCAyMDA5IC0wNTAwCi0KLSAgICByZW1vdmUgYmlfZW5ldCphZGRyIGZyb20gZ2xvYmFsIGRhdGEgZm9yIGFsbCBhcmNoZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBDQzogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotICAgIENDOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBzZXpuYW0uY3o+Ci0gICAgQ0M6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0gICAgQ0M6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotICAgIENDOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBlYjg1YWE1OTRjMWI1N2ExZTNiZTk2ODliNjUxNzFhMTM3YTM2NDMyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMjA6MDc6MTkgMjAwOSAtMDUwMAotCi0gICAgcHBjOiBtYXJrIGdsb2JhbCBiaV9lbmV0KmFkZHIgYXMgbGVnYWN5Ci0KLSAgICBUaGUgZW52aXJvbm1lbnQgaXMgdGhlIGNhbm9uaWNhbCBzdG9yYWdlIGxvY2F0aW9uIG9mIHRoZSBtYWMgYWRkcmVzcywgc28KLSAgICB3ZSdyZSBraWxsaW5nIG9mZiB0aGUgZ2xvYmFsIGRhdGEgbG9jYXRpb24gYW5kIG1vdmluZyBldmVyeXRoaW5nIHRvCi0gICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KLQotICAgIEluIHRoZSBwcGMgY2FzZSwgdGhlc2UgdGhpbmdzIGFyZSBwYXJ0IG9mIHRoZSBsZWdhY3kgQUJJLCBzbyBrZWVwIHRoZW0KLSAgICBhcm91bmQgYnV0IG1hcmsgdGhlbSBhcyBsZWdhY3kgc28gbm8gbmV3IGNvZGUgd2lsbCB0b3VjaCB0aGVtLgotCi0gICAgQWxzbyBzdG9wIGNhbGxpbmcgbG9hZF9zZXJudW1fZXRoYWRkcigpIHNpbmNlIGFsbCBib2FyZHMgbm93IGltcGxlbWVudAotICAgIHRoaXMgYXMgYSBzdHViLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOWMxNTAxMDJiYzFkZTM3NWQzNmQ5N2ExY2MyZGQwZTk2MzliMTVkZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDIwOjA5OjUyIDIwMDkgLTA1MDAKLQotICAgIGJvYXJkczogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52IGFuZCBtb3ZlIGxvYWRfc2VybnVtX2V0aGFkZHIoKSB0byBib2FyZCBpbml0Ci0KLSAgICBUaGUgZW52aXJvbm1lbnQgaXMgdGhlIGNhbm9uaWNhbCBzdG9yYWdlIGxvY2F0aW9uIG9mIHRoZSBtYWMgYWRkcmVzcywgc28KLSAgICB3ZSdyZSBraWxsaW5nIG9mZiB0aGUgZ2xvYmFsIGRhdGEgbG9jYXRpb24gYW5kIG1vdmluZyBldmVyeXRoaW5nIHRvCi0gICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KLQotICAgIFJhdGhlciB0aGFuIGhhdmUgY29tbW9uIHBwYyBjb2RlIGNhbGwgYSBib2FyZC1zcGVjaWZpYyBmdW5jdGlvbiBsaWtlCi0gICAgbG9hZF9zZXJudW1fZXRoYWRkcigpLCBoYXZlIGVhY2ggYm9hcmQgY2FsbCBpdCBpbiBpdHMgb3duIGJvYXJkLXNwZWNpZmljCi0gICAgbWlzY19pbml0X3IoKSBmdW5jdGlvbi4KLQotICAgIFRoZSBib2FyZHMgdGhhdCBnZXQgY29udmVydGVkIGhlcmUgYXJlOgotCS0ga3VwNGsva3VwNHgKLQktIHBjczQ0MGVwCi0JLSB0cW04eHgKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBDQzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTJiNTBmZmVmOTc4ZjA1ODU4YTBmZjRjYmU4ODQzMGJjNTFhMjhhMgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDE5OjU1OjAxIDIwMDkgLTA1MDAKLQotICAgIGNtY19wdTI6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50Ci0KLSAgICBUaGUgZW52aXJvbm1lbnQgaXMgdGhlIGNhbm9uaWNhbCBzdG9yYWdlIGxvY2F0aW9uIG9mIHRoZSBtYWMgYWRkcmVzcywgc28KLSAgICB3ZSdyZSBraWxsaW5nIG9mZiB0aGUgZ2xvYmFsIGRhdGEgbG9jYXRpb24gYW5kIG1vdmluZyBldmVyeXRoaW5nIHRvCi0gICAgcXVlcnlpbmcgdGhlIGVudiBkaXJlY3RseS4KLQotICAgIEFsc28gcmVuYW1lIGxvYWRfc2VybnVtX2V0aGFkZHIoKSB0byBtaXNjX2luaXRfcigpIHNvIHdlIGRvbid0IG5lZWQgdG8KLSAgICBoYW5kbGUgdGhpcyBib2FyZCBzcGVjaWFsbHkgaW4gY29tbW9uIEFSTSBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZDhkMjFlNjk5ZDdmY2ZiNmFiMTE2MzUxMTAyNjZkZDA5YjdlZGM2MgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDE2IDE4OjAzOjE0IDIwMDkgLTA1MDAKLQotICAgIGJvYXJkczogbW92ZSBib2FyZF9nZXRfZW5ldGFkZHIoKSBpbnRvIGJvYXJkLXNwZWNpZmljIGluaXQKLQotICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwotICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KLSAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgotCi0gICAgUmF0aGVyIHRoYW4gaGF2ZSB0aGUgY29tbW9uIHBwYyBjb2RlIGhhdmUgYm9hcmQtc3BlY2lmaWMgaG9va3MsIG1vdmUgdGhlCi0gICAgYm9hcmRfZ2V0X2VuZXRhZGRyKCkgZnVuY3Rpb24gaW50byB0aGUgYm9hcmQtc3BlY2lmaWMgaW5pdCBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmMTFlNmZmNWIxODU5ZDkyMTNmMGQ1MDFiMzMwOWUwNjVmNDg3NTQzCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTk6Mzk6NTUgMjAwOSAtMDUwMAotCi0gICAgYXJtOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAotCi0gICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCi0gICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwotICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCi0KLSAgICBTb21lIHdhcnRzIGFyZSByZW1haW5pbmcgYW5kIHNob3VsZCBiZSBraWxsZWQgb2ZmIChieSBtb3ZpbmcgdGhlIGZ1bmMgdG8KLSAgICB0aGUgYXBwcm9wcmlhdGUgYm9hcmQgaW5pdCBjb2RlKToKLQktIGRhdmluY2lfZXRoX3NldF9tYWNfYWRkcgotCS0gY3M4OTAwX2dldF9lbmV0YWRkcgotCS0gc21jX3NldF9tYWNfYWRkcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMDEwN2NmNjZmNzM0NmU4YzdkNmNmMGZlOTlkMmYyNjUxMzRhZmQ1OQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDE5OjM2OjIwIDIwMDkgLTA1MDAKLQotICAgIG54ODIzOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAotCi0gICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCi0gICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwotICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCi0KLSAgICBGb3IgdGhlIG54ODIzLCB0aGUgc2VyaWFsIG51bWJlciBpcyBtb3ZlZCBvdXQgb2YgbG9hZF9zZXJudW1fZXRoYWRkcigpIGFuZAotICAgIGludG8gbWlzY19pbml0X3IoKSBhcyBpcyB0aGUgZW52IHNldHVwLiAgVGhpcyBsZXRzIHVzIGtpbGwgb2ZmIHRoZSBmb3JtZXIKLSAgICBmdW5jdGlvbiBpbiB0aGUgcHJvY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDE5YjViNTMzY2NkNTIyYWJlYjUwMWQ1MTA3NTA2OTNjMzVlMjA0NTYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEZlYiAxMSAxODoyNzoxOCAyMDA5IC0wNTAwCi0KLSAgICBsaWJfKi9ib2FyZC5jOiBkbyBub3QgaW5pdGlhbGl6ZSBiaV9lbmV0KmFkZHIgaW4gZ2xvYmFsIGRhdGEKLQotICAgIFNpbmNlIGV2ZXJ5b25lIGlzIHVzaW5nIHRoZSBlbnZpcm9ubWVudCBmb3IgbWFjIGFkZHJlc3Mgc3RvcmFnZSwgdGhlcmUgaXMKLSAgICBubyBwb2ludCBpbiBzZWVkaW5nIHRoZSBnbG9iYWwgZGF0YS4KLQotICAgIFRoZSBhcmNoZXMgdGhhdCBhcmUgY29udmVydGVkIGhlcmU6Ci0JaTM4NgotCW02OGsKLQltaWNyb2JsYXplCi0JbWlwcwotCW5pb3MKLQluaW9zMgotCXNoCi0Jc3BhcmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBDQzogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotICAgIENDOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBzZXpuYW0uY3o+Ci0gICAgQ0M6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0gICAgQ0M6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotICAgIENDOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA3NDBlOGJhN2Q0NzVjNDljMWI3NjA1OGUxYmYzNTRlMzc2YjVjNGUwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTk6MTk6NTQgMjAwOSAtMDUwMAotCi0gICAgbnBlOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAotCi0gICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCi0gICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwotICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCi0KLSAgICBUaGUgcmVzdWx0aW5nIGNvZGUgY2FuIGFsc28gYmUgc2ltcGxpZmllZCBldmVuIGZ1cnRoZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDZiYWNmYTZhOGU5YjI2NGQzN2MxMjYyZmMxZjNlOTQ4ZDFmZWFiODEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEZlYiAxMSAxOToxODo0MSAyMDA5IC0wNTAwCi0KLSAgICBjcHUvOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAotCi0gICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCi0gICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwotICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCi0KLSAgICBUaGUgY3B1cyB0aGF0IGdldCBjb252ZXJ0ZWQgaGVyZToKLQlhdDkxcm05MjAwCi0JbXBjNTEyeAotCW1wYzV4eHgKLQltcGM4MjYwCi0JbXBjOHh4Ci0JcHBjNHh4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0gICAgQ0M6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotICAgIENDOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwM2YzZDhkM2IzOWNmODVjMGNlN2NhOTAzYjQzNjcwMWU4YWE2MTBiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTk6MDk6NTQgMjAwOSAtMDUwMAotCi0gICAgbGFuOTFjOTYvc21jOTExMTEvc21jOTExeDogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKLQotICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwotICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KLSAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgotCi0gICAgQWxzbywgZG8gbm90IGJvdGhlciBjaGVja2luZyB0aGUgRUVQUk9NIGlmIHRoZSBlbnYgaXMgc2V0dXAuICBUaGlzCi0gICAgc2ltcGxpZmllcyB0aGUgY29kZSBncmVhdGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERuZWsgPHdkQGRlbnguZGU+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0gICAgQ0M6IFJvbGYgT2ZmZXJtYW5ucyA8cm9mQHN5c2dvLmRlPgotICAgIENDOiBFcmlrIFN0YWhsbWFuIDxlcmlrQHZ0LmVkdT4KLSAgICBDQzogRGFyaXMgQSBOZXZpbCA8ZG5ldmlsQHNubWMuY29tPgotICAgIENDOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci0KLWNvbW1pdCBjNTI3Y2U5MjUxMWNiZjcyM2MyY2E3N2JlZTFjZjllY2Y4M2RhYzgxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTk6MTQ6MDkgMjAwOSAtMDUwMAotCi0gICAgc2hfZXRoOiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAotCi0gICAgVGhlIGVudmlyb25tZW50IGlzIHRoZSBjYW5vbmljYWwgc3RvcmFnZSBsb2NhdGlvbiBvZiB0aGUgbWFjIGFkZHJlc3MsIHNvCi0gICAgd2UncmUga2lsbGluZyBvZmYgdGhlIGdsb2JhbCBkYXRhIGxvY2F0aW9uIGFuZCBtb3ZpbmcgZXZlcnl0aGluZyB0bwotICAgIHF1ZXJ5aW5nIHRoZSBlbnYgZGlyZWN0bHkuCi0KLSAgICBUaGUgc2hfZXRoIGRyaXZlciBjYW4gYWxzbyBiZSBzaW1wbGlmaWVkIGEgYml0IGJ5IHVzaW5nIGVuZXRhZGRyIG1lbWJlciBvZgotICAgIHRoZSBldGhfZGV2aWNlIHN0cnVjdHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIENDOiBDYXJsb3MgTXVub3ogPGNhcmxvc0BrZW5hdGkuY29tPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMGE1MjM4Y2VhOTA2NjVjMjMwMjk3YThmZDc3YmIwYjNiNjFjYTE3NwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDE5OjA2OjA5IDIwMDkgLTA1MDAKLQotICAgIGNzODkwMDogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKLQotICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwotICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KLSAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgotCi0gICAgVGhlIGNzODkwMCBkcml2ZXIgYWxzbyBjaGFuZ2VzIHNsaWdodGx5IGluIHRoYXQgdGhlIGhhcmR3YXJlIGlzIG5vdAotICAgIGNvbnN1bHRlZCBpZiB0aGUgbWFjIGFkZHJlc3MgaW4gdGhlIGVudiBpcyBzYW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBNYXJpdXMgR3JvZWdlciA8bWdyb2VnZXJAc3lzZ28uZGU+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjNGI4NzYyZjExZDMzN2U2YTlkOTBjMjI3YjI4NzFkNjVkMzcyNDY5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTk6MDQ6MjUgMjAwOSAtMDUwMAotCi0gICAgYmNtNTcweDogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKLQotICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwotICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KLSAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgotCi0gICAgU2luY2UgdGhlIGFkZHJlc3MgaXMgaW4gdGhlIFBMTV9ERVZJQ0VfQkxPQ0sgc3RydWN0dXJlIGFscmVhZHksIHRoZXJlIGlzCi0gICAgbm8gbmVlZCB0byBwYXNzIHRoZSBOb2RlQWRkcmVzcyBhcyBhIHNlY29uZCBwYXJhbWV0ZXIuICBTbyBkcm9wIHRoZSBzZWNvbmQKLSAgICBhcmd1bWVudCB0byB0aGUgTE1fU2V0TWFjQWRkcmVzcygpIGZ1bmN0aW9uIChhbmQgdXBkYXRlIHRoZSB0aWdvbjMgZHJpdmVyCi0gICAgYWNjb3JkaW5nbHkpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZDNmODcxNDgyZjA2ZjZhNGVhZjRhM2ZhZmRlODQ4NDZiYWQ4N2I0ZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDE5OjAxOjI2IDIwMDkgLTA1MDAKLQotICAgIGRyaXZlcnMvbmV0LzogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKLQotICAgIFRoZSBlbnZpcm9ubWVudCBpcyB0aGUgY2Fub25pY2FsIHN0b3JhZ2UgbG9jYXRpb24gb2YgdGhlIG1hYyBhZGRyZXNzLCBzbwotICAgIHdlJ3JlIGtpbGxpbmcgb2ZmIHRoZSBnbG9iYWwgZGF0YSBsb2NhdGlvbiBhbmQgbW92aW5nIGV2ZXJ5dGhpbmcgdG8KLSAgICBxdWVyeWluZyB0aGUgZW52IGRpcmVjdGx5LgotCi0gICAgVGhlIGRyaXZlcnMgdGhhdCBnZXQgY29udmVydGVkIGhlcmU6Ci0JM2M1ODkKLQk0eHhfZW5ldAotCWRjMjExNHgKLQlkbTkwMDB4Ci0JZW5jMjhqNjAKLQlmc2xfbWNkbWFmZWMKLQlrczg2OTVldGgKLQltY2ZmZWMKLQlydGw4MDE5Ci0JcnRsODE2OQotCXMzYzQ1MTBiX2V0aAotCXhpbGlueF9lbWFjCi0JeGlsaW54X2VtYWNsaXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0gICAgQ0M6IFJvbGYgT2ZmZXJtYW5ucyA8cm9mQHN5c2dvLmRlPgotICAgIENDOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQ0M6IFNhc2NoYSBIYXVlciA8c2FzY2hhaGF1ZXJAd2ViLmRlPgotICAgIENDOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIENDOiBHcmVnIFVuZ2VyZXIgPGdyZWcudW5nZXJlckBvcGVuZ2Vhci5jb20+Ci0gICAgQ0M6IFh1ZSBMaWdvbmcgPGxneHVlQGhvdG1haWwuY29tPgotICAgIENDOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KLSAgICBDQzogQ3VydCBCcnVuZSA8Y3VydEBjdWN5LmNvbT4KLSAgICBDQzogTWljaGFsIFNJTUVLIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgYjZiNDYyNWQxNzUwMTllMzg3ZTViMGY2NWExNzMyMmE3OGY2YmI5MAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDE4OjM4OjM4IDIwMDkgLTA1MDAKLQotICAgIGJvYXJkczogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKLQotICAgIFRoZSBib2FyZHMgdGhhdCBnZXQgY29udmVydGVkIGhlcmUgdG8gdXNlIHRoZSBlbnZpcm9ubWVudCBmb3IgdGhlIG1hYwotICAgIGFkZHJlc3MgcmF0aGVyIHRoYW4gZ2xvYmFsIGRhdGE6Ci0JZGVicmlzCi0JbWdjb2dlCi0JbWdzdXZkCi0JbXVhczMwMDEKLQluZXRzdGFsCi0JcG42MgotCXNpeG5ldAotCXZjbWE5Ci0JeGlsaW54ICh0aGUgb25lcyB0aGF0IHVzZSB4aWxpbnhfZW5ldCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBDQzogU2FuZ21vb24gS2ltIDxkb2dvaWxAZXRpbnN5cy5jb20+Ci0gICAgQ0M6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIENDOiBEYXZpZCBNdWVsbGVyIDxkLm11ZWxsZXJAZWxzb2Z0LmNoPgotICAgIENDOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotICAgIENDOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BkZW54LmRlPgotICAgIENDOiBEYXZlIEVsbGlzIDxER0VAc2l4bmV0aW8uY29tPgotICAgIENDOiBSaWNhcmRvIFJpYmFsZGEgPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0KLWNvbW1pdCAwNmEwYzQzODFhNjVlZDUwMGM4MTZhMDViOWFlN2IyMDdjM2IxZDRiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTg6MzY6NDUgMjAwOSAtMDUwMAotCi0gICAgQW1pZ2FPbmVHM1NFL2VuZXQ6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50Ci0KLSAgICBBbHdheXMgdXNlIHRoZSBNQUMgYWRkcmVzcyB0aGF0IGlzIHN0b3JlZCBpbiB0aGUgZW52aXJvbm1lbnQgZmlyc3QgYmVmb3JlCi0gICAgZmFsbGluZyBiYWNrIHRvIHRoZSBST00uICBUaGlzIGFsc28gY3V0cyBvdXQgYW55IGNvbXBhcmlzb24gc3RlcHM6IGlmIHRoZQotICAgIG1hYyBpbiB0aGUgZW52IGlzIHNhbmUsIHRoZSBST00gaXMgbmV2ZXIgY29uc3VsdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBUaG9tYXMgRnJpZWRlbiA8VGhvbWFzRkBoeXBlcmlvbi1lbnRlcnRhaW5tZW50LmNvbT4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDU2YjU1NWE2NDRmM2NiYjFiMzkyOWNiNTJiNjFkM2NlNDgzODg1ZjUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEZlYiAxMSAxODo1MjozOCAyMDA5IC0wNTAwCi0KLSAgICBudmVkaXQ6IGRvIG5vdCB1cGRhdGUgZ2xvYmFsIGJpX2VuZXRhZGRyIGFuZCBkbyBub3QgY2FsbCBldGhfc2V0X2VuZXRhZGRyKCkKLQotICAgIFNpbmNlIHRoZSBldGhlcm5ldCBsYXllciBoYW5kbGVzIHVwZGF0aW5nIG9mIGRldmljZSBhZGRyZXNzZXMgaXRzZWxmIGZyb20KLSAgICB0aGUgZW52aXJvbm1lbnQsIHRoZXJlIGlzIG5vIHBvaW50IGluIGNhbGxpbmcgZXRoX3NldF9lbmV0YWRkcigpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNTAxMzUzMzQ2N2MxZGU3MzFjMmYwYzliZWI0YjQxY2UzZjA3Y2JlYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDE4OjU0OjA3IDIwMDkgLTA1MDAKLQotICAgIGx5bnhrZGk6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2MmM5M2Q5MmYxYjYyNjZiMmYzM2M1ZjQwMzkzMWI1MWNiZDJhMjQ2Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTg6NTE6NDMgMjAwOSAtMDUwMAotCi0gICAgYm9vdHZ4OiBnZXQgbWFjIGFkZHJlc3MgZnJvbSBlbnZpcm9ubWVudAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZGUyZGZmNmZmODlmOThjNjA2MmY0ZDIyNGZkNDM0YTNlZGUwMzVkMQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRmViIDExIDE4OjUwOjEwIDIwMDkgLTA1MDAKLQotICAgIGJkaW5mbzogZ2V0IG1hYyBhZGRyZXNzIGZyb20gZW52aXJvbm1lbnQKLQotICAgIEFkZCBhIG5ldyBwcmludF9ldGgoKSBmdW5jdGlvbiB0byBhdXRvbWF0ZSB0aGUgZXRoKmFkZHIgZW52IHZhciBhY3F1aXNpdGlvbgotICAgIGFuZCBkaXNwbGF5LiAgQWZmZWN0cyBhbGwgYXJjaGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0gICAgQ0M6IFNjb3R0IE1jTnV0dCA8c21jbnV0dEBwc3llbnQuY29tPgotICAgIENDOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotICAgIENDOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBzZXpuYW0uY3o+Ci0gICAgQ0M6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDk1ODIzY2EwNzczMzU2ODYwZTYyMmVlMzMwNGE0YjdjYWZjYmYxOWEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEZlYiAxMSAxODoyMzo0OCAyMDA5IC0wNTAwCi0KLSAgICBuZXQ6IGdldCBtYWMgYWRkcmVzcyBmcm9tIGVudmlyb25tZW50IGFuZCB1c2UgZXRoIHV0aWwgZnVuY3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDUwMGI2YzUxZTRjNDFmNDU2MmNiNDgzNDRhZjk4ZGViN2UzNDI3MzEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCAxMyAxNTowNjoyNSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmZpbl9tYWM6IGZvcmNlIGJvYXJkcyB0byBzZXR1cCB0aGUgTUFDIHRoZW1zZWx2ZXMKLQotICAgIFNpbmNlIHRoZSBvbi1jaGlwIE1BQyBkb2VzIG5vdCBoYXZlIGFuIGVlcHJvbSBvciBzaW1pbGFyIGludGVyZmFjZSwgZm9yY2UKLSAgICBhbGwgQmxhY2tmaW4gYm9hcmRzIHRoYXQgdXNlIHRoaXMgZHJpdmVyIHRvIHNldHVwIHRoZSBib2FyZCBkYXRhIHdpdGggYQotICAgIHByb3BlciBNQUMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2ZmY0MTM3ZjJhZDY0MGU0ZmM4ZWExYjA0NTUxNjFkZGZmMWY2NzMwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMTQ6MTI6MzQgMjAwOSAtMDUwMAotCi0gICAgZG9jL1JFQURNRS5lbmV0YWRkcjogZG9jdW1lbnQgcHJvcGVyIE1BQyB1c2FnZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgM2Y2ZTY5OTNlOTJmZDA2NThkYTE3NDZkMWM4NDY0NDYxMmVlNTIwYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDI5IDE5OjQzOjQ0IDIwMDkgLTA1MDAKLQotICAgIG5ldDogbmV3IHV0aWxpdHkgZnVuY3Rpb25zIGZvciB3b3JraW5nIHdpdGggZW5ldGFkZHIncwotCi0gICAgRGVjbGFyZSBuZXcgdXRpbGl0eSBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiB0aGUgZW52aXJvbm1lbnQKLSAgICB2YXJpYWJsZXMgKGV0aCphZGRyKSBhbmQgdGhlIGJpbmFyeSBNQUMgYWRkcmVzcyByZXByZXNlbnRhdGlvbi4gIFRoaXMgd2F5Ci0gICAgd2UgY2FuIHVuaWZ5IGFsbCB0aGUgcmFuZG9tIHBsYWNlcyB0aGF0IGFscmVhZHkgZG8gdGhpcyBraW5kIG9mIHRoaW5nLgotCi0gICAgVGhlIGZ1bmN0aW9ucyBpbiBxdWVzdGlvbjoKLQlldGhfcGFyc2VfZW5ldGFkZHIgLSAiLi4uIiAtPiB7Li4ufQotCWV0aF9nZXRlbnZfZW5ldGFkZHIgLSBlbnYgLT4gey4uLn0KLQlldGhfc2V0ZW52X2VuZXRhZGRyIC0gey4uLn0gLT4gZW52Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBiNjQ0NmI2Nzc1OGVhMWU0MTIyM2YwNzgyOTI0YmI3M2ZkMGE4OWQwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBGZWIgMTcgMDA6MDA6NTMgMjAwOSAtMDUwMAotCi0gICAgY29udmVydCBwcmludF9JUGFkZHIoKSB0byAlcEk0Ci0KLSAgICBOb3cgdGhhdCBvdXIgcHJpbnRmIGZ1bmN0aW9ucyBzdXBwb3J0IHRoZSAlcEk0IG1vZGlmaWVyIGxpa2UgdGhlIGtlcm5lbCwKLSAgICBsZXQncyBkcm9wIHRoZSBpbmZsZXhpYmxlIHByaW50X0lQYWRkcigpIGZ1bmN0aW9uIGFuZCBjb3ZlcnQgb3ZlciB0byB0aGUKLSAgICAlcEk0IG1vZGlmaWVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIENDOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNmM2MTY2ZjUyOTgzZGFjNzc1ZTM4NTJmOWQwZjQ5ZDAzM2YyNzEwOAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDE2IDIzOjIxOjM2IDIwMDkgLTA1MDAKLQotICAgIHZzcHJpbnRmOiBwdWxsIHVwZGF0ZXMgZnJvbSBMaW51eCBrZXJuZWwKLQotICAgIFRoaXMgYnJpbmdzIGluIHN1cHBvcnQgZm9yIHRoZSAlcCBtb2RpZmllciB3aGljaCBhbGxvd3MgdXMgdG8gZWFzaWx5IHByaW50Ci0gICAgb3V0IHRoaW5ncyBsaWtlIGlwIGFkZHJlc3NlcywgbWFjIGFkZHJlc3NlcywgYW5kIHBvaW50ZXJzLgotCi0gICAgSXQgYWxzbyBjb252ZXJ0cyB0aGUgcmFyZWx5IHVzZWQgJ3EnIGxlbmd0aCBtb2RpZmllciB0byB0aGUgY29tbW9uICdMJwotICAgIG1vZGlmaWVyIHdoZW4gZGVhbGluZyB3aXRoIHF1YWQgdHlwZXMuCi0KLSAgICBXaGlsZSB0aGlzIG5ldyBjb2RlIGlzIGEgYml0IGxhcmdlciAofjFrIC50ZXh0KSwgbW9zdCBvZiBpdCBzaG91bGQgYmUgbWFkZQotICAgIHVwIGJ5IGNvbnZlcnRpbmcgdGhlIGV4aXN0aW5nIGlwL21hYyBhZGRyZXNzIGNvZGUgdG8gdXNlIGZvcm1hdCBtb2RpZmllcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBhNDNlYTVjYzZkNjEyNDcxZmJjNzRmMGEyNmIyYmVhNTg2NGFhMWQ2Ci1BdXRob3I6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgotRGF0ZToJVGh1IE1hciAxOSAyMzowNDoxOCAyMDA5IC0wNDAwCi0KLSAgICAuZ2l0aWdub3JlIGZvciBnZW5lcmF0ZWQgZmlsZXMgaW4gYXBpX2V4YW1wbGVzIGRpcmVjdG9yeQotCi0gICAgQWRkIC5naXRpZ25vcmUgZm9yIGdlbmVyYXRlZCBmaWxlcyBpbiBhcGlfZXhhbXBsZXMgZGlyZWN0b3J5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gU21pcmwgPGpvbnNtaXJsQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNDAyODFhOWNhMjFhNmI2ZDdiOTk2YjRkNGVlYWExOTAyNjMzNzIzMQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglXZWQgTWFyIDE4IDEyOjI3OjA0IDIwMDkgKzA5MDAKLQotICAgIG5ldDogc2hfZXRoOiBSZW1vdmUgc2hfZXRoX3Jlc2V0KCkgZnJvbSBoYWx0IGZ1bmN0aW9uCi0KLSAgICBzaF9ldGhfcmVzZXQgaXMgZnVuY3Rpb24gdG8gcmVzZXQgRXRoZXIgSVAuCi0gICAgVGhlIE1BQyBhZGRyZXNzIGlzIHN0b3JlZCBpbiBJUCwgYnV0IGl0IGlzIGluaXRpYWxpemVkIGJ5IHRoaXMgZnVuY3Rpb24uCi0gICAgT1MgKGUuZy4gTGludXggS2VybmVsKSBjYW4gbm90IHVzZSB0aGlzIGRldmljZSB3aGVuIGluaXRpYWxpemVkLgotICAgIFRoaXMgcmV2aXNlcyB0aGlzIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0KLWNvbW1pdCBmODg1M2QxMDVkYTdkNjliYzkyYTViNDU3OGY5Yjg1MjM0ZTU1OGVjCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXIgMjAgMTI6NDU6NTAgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggYnVnIGluIFBDSSBvdXRib3VuZCBtYXAgY29uZmlndXJhdGlvbiBmb3IgY2FueW9ubGFuZHMKLQotICAgIFBDSSBvdXRib3VuZCBhZGRyZXNzIG1hcCBjb25maWd1cmF0aW9uIGRvZXNuJ3QgbWF0Y2ggdGhlCi0gICAgUENJIG1lbW9yeSBhZGRyZXNzIHJhbmdlIGNvdmVyZWQgYnkgYXBwcm9wcmlhdGUgVExCIGVudHJ5Ci0gICAgY29uZmlndXJhdGlvbiBmb3IgY2FueW9ubGFuZHMgY2F1c2luZyBtYWNoaW5lIGNoZWNrCi0gICAgZXhjZXB0aW9ucyB3aGlsZSBhY2Nlc3NpbmcgUENJIG1lbW9yeSByZWdpb25zLiBUaGlzIHBhdGNoCi0gICAgcHJvdmlkZXMgYSBmaXggZm9yIHRoaXMgaXNzdWUuCi0KLSAgICBLYXp1YWtpIEljaGlub2hlIG9ic2VydmVkIGFuZCByZXBvcnRlZCB0aGlzIGlzc3VlIHdoaWxlCi0gICAgdGVzdGluZyBkaXNwbGF5IG91dHB1dCB3aXRoIFBDSSBBVEkgdmlkZW8gY2FyZCBvbiBjYW55b25sYW5kcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3YTg4NjAxYTM0MTMyNTQ4YzNjNTkxZWE4N2FiMzQ2OGI1MTEyMWIwCi1BdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci1EYXRlOglGcmkgTWFyIDYgMTA6MDk6MzcgMjAwOSAtMDUwMAotCi0gICAgQ0ZJOiBnZW9tZXRyeSByZXZlcnNhbCBmb3IgU1RNaWNybyBNMjlXMzIwRFQKLQotICAgIEZvbGxvdyB1cCB0byB0aGUgZmxhc2hfZml4dXBfc3RtIHRvIGZpeCBnZW9tZXRyeSByZXZlcnNhbAotICAgIG9uIFNUTWljcm8gTTI5VzMyMEVUIGZsYXNoIGNoaXAuIFRoZSBNMjlXMzIwRFQgaGFzIDQgZXJhc2UgcmVnaW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwNjlmNDM2NGQ4MDdkN2ZkZWEzZGU3Mzg1YWQyZjhkODNjNTg3YWVjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMjUgMTc6Mjk6NDAgMjAwOSAtMDUwMAotCi0gICAgc21jOTExeF9lZXByb206IHVwZGF0ZSByZWdpc3RlciBBUEkKLQotICAgIFRoZSBzbWM5MTF4IGRyaXZlciBjaGFuZ2VkIHRoZSBuYW1pbmcgY29udmVudGlvbiBmb3IgaXRzIHJlZ2lzdGVyIGZ1bmNzLAotICAgIHNvIHVwZGF0ZSB0aGUgZWVwcm9tIGNvZGUgYWNjb3JkaW5nbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2YTM5N2VmMGU2YzU4Y2FhYjhiZjQyN2Q0NDc3MTRiYzliM2JiOWQ0Ci1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIE1hciAxNyAxMDowNjozOSAyMDA5ICswMTAwCi0KLSAgICBtcGM1Mnh4OiBHZXQgcmlkIG9mIGJvYXJkLXNwZWNpZmljICNpZmRlZidzIGluIGNwdS9tcGM1eHh4L2lkZS5jCi0KLSAgICBUb3RhbDUyMDAgYW5kIGRpZ3N5IE1UQyB1c2UgSTJDIHBvcnQgMiBwaW5zIGFzIGEgQVRBIGNoaXAgc2VsZWN0LgotICAgIFRvIGF2b2lkIGFkZGluZyBib2FyZC1zcGVjaWZpYyBpZmRlZnMgdG8gY3B1L21wYzV4eHgvaWRlLmMgbmV3Ci0gICAgZGVmaW5lIENPTkZJR19TWVNfQVRBX0NTX09OX0kyQzIgd2FzIGludHJvZHVjZWQuIEl0IGlzIHVzZWQgYnkKLSAgICBUb3RhbDUyMDAgYW5kIHdpbGwgYmUgdXNlZCBieSBkaWdzeSBNVEMgYW5kIG90aGVyIGJvYXJkcyB3aXRoCi0gICAgQVRBIENTIG9uIEkyQyBwaW5zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAxYjYyNzVkZmIxNzNiZDJlZGI4ZjIwOGRkMDUwZDZmNDdhZTM5NjU0Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IE1hciAxMiAwNzozNzozNCAyMDA5ICswMTAwCi0KLSAgICA4eHg6IGFkZCBzdXBwb3J0IGZvciBuZXcga2V5bWlsZSBrbXN1cHg0IGJvYXJkLgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBrbXN1cHg0IGJvYXJkIGZyb20gS2V5bWlsZSwKLSAgICBiYXNlZCBvbiBhIEZyZWVzY2FsZSBNUEM4NTJUIENQVQotCi0gICAgLSBzZXJpYWwgY29uc29sZSBvbiBTTUMxCi0gICAgLSAzMiBNQiBTRFJBTQotICAgIC0gMzIgTUIgTk9SIEZsYXNoCi0gICAgLSBFdGhlcm5ldCBvdmVyIFNDQzMKLSAgICAtIEkyQyBCaXRiYW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGQwNDQ5NTRmZTJhN2U3YTNkZDEwNGViOWM5ZDIxMDRlMzhkYTI5MTEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDEyIDA3OjM3OjI4IDIwMDkgKzAxMDAKLQotICAgIDh4eCwgbWdzdXZkOiByZW5hbWUgYm9hcmQgdG8gYSBtb3JlIGdlbmVyaWMgbmFtZQotCi0gICAgcmVuYW1pbmcgdGhlICJtZ3N1dmQiIGJvYXJkIHBvcnQgaW50byAia204eHgiLCBiZWNhdXNlCi0gICAgdGhlcmUgY29tZSBtb3JlIHNpbWlsYXIgYm9hcmRzIGZyb20ga2V5bWlsZS4KLSAgICBDb21waWxpbmcgdGhlIG1nc3V2ZCBib2FyZCB3aXRoICJtYWtlIG1nc3V2ZF9jb25maWciCi0gICAgcmVtYWlucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMThiMmYzNWJkZTE2NzJlMDc0YTNkNTA0ODM4M2NiNTZmZGE3NDVjYgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBNYXIgMTIgMDc6Mzc6MjMgMjAwOSArMDEwMAotCi0gICAgOHh4LCBtZ3N1dmQ6IENvZGluZyBTdHlsZSBjbGVhbnVwIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDM2NDEyM2RiNjczMGQzMjMzMGY4MThiNjUzNjBkMmNkMjczOTY2NjcKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDEyIDA3OjM3OjE4IDIwMDkgKzAxMDAKLQotICAgIHBvd2VycGM6IGNvbW1vbiB1cGRhdGVzIGZvciBrZXltaWxlIGJvYXJkcwotCi0gICAgLSBhZGRlZCB0byBrZXltaWxlLWNvbW1vbi5oOgotICAgICAgLSBib290Y291bnQgc3VwcG9ydAotICAgICAgLSBDT01NQU5EIEhJU1RPUlkKLSAgICAgIC0gQ09ORklHX0FVVE9fQ09NUExFVEUKLSAgICAgIC0gQ09ORklHX1NZU19GTEFTSF9QUk9URUNUSU9OCi0gICAgICAtIEpGRlMyIHN1cHBvcnQKLSAgICAgIC0gQ09ORklHX1ZFUlNJT05fVkFSSUFCTEUKLSAgICAtIGV4dHJhY3RlZCBjb21tb24gSTJDIHNldHRpbmdzIGZvciBhbGwgYm9hcmRzCi0gICAgLSBjb21tb24gZGVmYXVsdCBlbnZpcm9ubWVudCBzZXR0aW5ncyBzdW1tYXJpemVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDUwNmYzOTE4ODhiODJkMWI4M2JkZDc0OWMzY2VhOWViMmZkNjRkZjgKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDEyIDA3OjM3OjE1IDIwMDkgKzAxMDAKLQotICAgIDh4eCwgaWNhY2hlOiBlbmFibGluZyBJQ2FjaGUgbm90IGJlZm9yZSBydW5uaW5nIGZyb20gUkFNCi0KLSAgICB3aXRoIHRoZSBuZXcgQ09ORklHX1NZU19ERUxBWUVEX0lDQUNIRSBjb25maWcgb3B0aW9uLCBJQ2FjaGUKLSAgICBpcyBub3QgZW5hYmxlZCBiZWZvcmUgY29kZSBydW5zIGZyb20gUkFNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBjYWJmN2I5YzgzYmQ3ODBhNTgwNWRkYmI0YzBjZTQzMWQ1YjlmOWYzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IE1hciAxMiAwNzozNzoxMSAyMDA5ICswMTAwCi0KLSAgICA4Mnh4LCBtZ2NvZ2U6IGZpeCBlbnZpcm9ubWVudCBzZWN0b3Igc2l6ZQotCi0gICAgU2l6ZSBvZiBvbmUgZW52aXJvbm1lbnQgc2VjdG9yIGlzIDB4MjAwMDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDI3MDU3ZDQxNmM3Y2M5ZWIxODYwOTUzZGE4ODM2MzUyYzA3ZjEzZTkKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJTW9uIE1hciAxNiAyMzoyNzozMSAyMDA5ICswMTAwCi0KLSAgICBOZXRTdGFyOiBjb25maWcgcmVpbmRlbnRhdGlvbgotCi0gICAgRml4IGluZGVudGF0aW9uIGJyb2tlbiBieSBzeW1ib2wgcmVuYW1lcy4gIlNvcnQiIGRyaXZlciByZWxhdGVkIGRlZmluaXRvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci0KLWNvbW1pdCA4ZDgyMzVmODRkM2VmM2YyOWI3ZDE0ZTc0MTM2OWI1ODI0YjViYjRhCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWFyIDE3IDExOjIxOjQzIDIwMDkgKzAwMDAKLQotICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IGRlZmluaXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5MDE3ZDkzMjVhNTA2N2IyYWIwZDcwYTJkM2M5MDc2MjBjOWFiN2Y4Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gTWFyIDIgMTk6MTY6NDUgMjAwOSArMDAwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBNNTMyOUVWQiBhbmQgTTUzNzNFVkIgbmFuZCBpc3N1ZQotCi0gICAgVGhlIE5hbmQgZmxhc2ggd2FzIHVuYWJsZSB0byByZWFkIGFuZCB3cml0ZSBwcm9wZXJseQotICAgIGR1ZSB0byBOYW5kIENoaXAgU2VsZWN0IChuQ0UpIHNldHVwIHdhcyBpbiByZXZlcnNlCi0gICAgb3JkZXIuIEFsc28sIGluY3JlYXNlIHRoZSBOYW5kIHRpbWUgb3V0IHZhbHVlIHRvIDYwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQyYjY4YWYxMDYyZjc1YmI0YTkxY2Y0N2UzMjlhN2U4MTAwY2Q4MTUKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMjcgMTU6MTk6MzUgMjAwOSArMDAwMAotCi0gICAgQ29sZEZpcmU6IFBMQVRGT1JNX0NQUEZMQUdTIHVwZGF0ZXMgZm9yIG5ldyBjb21waWxlcgotCi0gICAgVXBkYXRlIFBMQVRGT1JNX0NQUEZMQUdTIHRvIGFjY2VwdCA0LjMueCB2ZXJzaW9uIG9mCi0gICAgQ29sZEZpcmUgY29tcGlsZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDZlNGJhZjQ5OTg3ZmM2Zjc1ZTg1NzRjMGMyNzMwMWE4MjhiMzEzMgotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAyNyAxMjo1Nzo0NyAyMDA5ICswMDAwCi0KLSAgICBDb2xkRmlyZTogUHJvdmlkZSBnemlwIGltYWdlIHNpemUgVjIgJiBWMyBwbGF0Zm9ybXMKLQotICAgIERlZmF1bHQgZ3ppcCBib290bSBzaXplIGlzIDhNQi4gU29tZSBwbGF0Zm9ybXMgcmVxdWlyZQotICAgIG1vcmUgdGhhbiA4TUIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjM2E5ZTYzNzQyMTA2NzlhODFmNjExYzFiY2Y5Njg5ODhiYzIwZTQxCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRmViIDE4IDExOjQ5OjMxIDIwMDkgKzAwMDAKLQotICAgIENvbGRGaXJlOiBGaXggTTU0NDUxIHNlcmlhbCBib290IGRyYW0gc2V0dXAKLQotICAgIFRoZSBzZXJpYWwgYm9vdCBkcmFtIGV4dGVuZGVkL3N0YW5kYXJkIG1vZGUgcmVnaXN0ZXIgd2FzIG5vdAotICAgIHNldHVwIGFuZCB3YXMgdXNpbmcgZGVmYXVsdCBEUkFNIHNldHVwIGNhdXNpbmcgdGhlIFUtYm9vdCB3YXMKLSAgICB1bnN0YWJsZSB0byBib290IHVwIGluIHNlcmlhbCBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDMyZDExZDU4MTU5YTU3NWYwOGE5ODJjYWQ4YTVhOTQxZmZlNWNjM2QKLUF1dGhvcjogYXJ1biBjIDxhcnVuLmVkYXJhdGhAZ21haWwuY29tPgotRGF0ZToJVGh1IERlYyA0IDE1OjU3OjE1IDIwMDggKzA1MzAKLQotICAgIENvbGRmaXJlOiBYTCBCdXMgbWlub3IgZml4ZXMKLQotICAgIEFjY29yZGluZyB0byBjb2xkZmlyZSBtYW51YWwgZGF0YSB0aW1lb3V0ID4gYWRkcmVzcyB0aW1lIG91dAotICAgIGFsc28gdXNlIGNvcnJlY3QgbWFjcm8gdG8gcHJvZ3JhbSBYQVJCX0NGRwotCi0gICAgU2lnbmVkLW9mZi1ieTogQXJ1biBDIDxhcnVuZWRhcmF0aEBtaXN0cmFsc29sdXRpb25zLmNvbT4KLQotY29tbWl0IDY1ZDhiYzk0ZDgyMTQ4MTJjY2RmMzM3MmQzZmVmODQ1Y2Y0ZWMyZTUKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWFyIDE3IDEyOjA2OjA0IDIwMDkgLTA1MDAKLQotICAgIE5BTkQ6IEhhdmUgbmJvb3QgYWNjZXB0IC5lIGFuZCAuaSBhcyBsZWdhY3kgbm8tb3BzLgotCi0gICAgVGhpcyB3YXMgaW50ZW5kZWQgdG8gaGFwcGVuIGJlZm9yZSwgYnV0IGEgdHJpdmlhbCBidWcgcHJldmVudGVkIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwOTg3NTA1NTQwOTE4YjI0NjRiNzMwNjlhZjNhNWI3NjZkYmQzY2ViCi1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLURhdGU6CUZyaSBNYXIgMTMgMTQ6Mzg6MTkgMjAwOSArMDEwMAotCi0gICAgTkFORDogTWFrZSBuYm9vdCBza2lwIGJhZCBibG9ja3MKLQotICAgIG5ib290IGNvbW1hbmQgY3VycmVudGx5IGRvZXMgbm90IHNraXAgYmFkIGJsb2NrcyBhbmQgZ2l2ZXMgcmVhZCBlcnJvciB3aGVuCi0gICAgbG9hZGluZyBpbWFnZSBzdG9yZWQgb3ZlciBiYWQgYmxvY2suIFdpdGggcGF0Y2ggYXBwbGllZCwgbmJvb3Qgd29ya3MgYXMKLSAgICBleHBlY3RlZDoKLQotICAgIERldmljZSAwIGJhZCBibG9ja3M6Ci0gICAgICAwMDc4MDAwMAotICAgICAgMDE0YTAwMDAKLSAgICAgIDAyMDAwMDAwCi0gICAgICAwMmNjMDAwMAotICAgICAgMDRhYTAwMDAKLQotICAgIExvYWRpbmcgZnJvbSBOQU5EIDEyOE1pQiAzLDNWIDgtYml0LCBvZmZzZXQgMHgyYzAwMDAwCi0gICAgICAgSW1hZ2UgTmFtZTogICBMaW51eC0yLjYuMjItb21hcDEKLSAgICAgICBDcmVhdGVkOiAgICAgIDIwMDgtMTEtMjAgIDIzOjQ0OjMyIFVUQwotICAgICAgIEltYWdlIFR5cGU6ICAgQVJNIExpbnV4IEtlcm5lbCBJbWFnZSAodW5jb21wcmVzc2VkKQotICAgICAgIERhdGEgU2l6ZTogICAgMTA1MjUyMCBCeXRlcyA9ICAxIE1CCi0gICAgICAgTG9hZCBBZGRyZXNzOiAxMDAwODAwMAotICAgICAgIEVudHJ5IFBvaW50OiAgMTAwMDgwMDAKLSAgICBTa2lwcGluZyBiYWQgYmxvY2sgMHgwMmNjMDAwMAotICAgIEF1dG9tYXRpYyBib290IG9mIGltYWdlIGF0IGFkZHIgMHgxMDQwMDAwMCAuLi4KLSAgICAuLi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBiMmYzOGZlM2M0NTU1ZGQyYjgxYzY5ODgwNDAzYzEzYWQ3MjMxNTMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciAxMiAwNzoyNzoyNSAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IGx3bW9uNTogT25seSB1c2Ugb25lIENTIChyYW5rKSBpbiBERFIyIGNvbmZpZ3VyYXRpb24KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNwb3R0ZWQgYnkgTWlraGFpbCBab2xvdGFyeW92IG9uIFNlcXVvaWEgd2l0aAotICAgIHRoZSBERFIyIGNvbmZpZ3VyYXRpb24gdG8gb25seSB1c2Ugb25lIENTIChyYW5rKS4gQXMgdGhpcyBjb2RlIGlzIG1vc3QKLSAgICBsaWtlbHkgY29waWVkIGZyb20gdGhlIG9yaWdpbmFsIFNlcXVvaWEgdmVyc2lvbiwgdGhpcyBlcnJvciB3YXMgY29waWVkCi0gICAgYXMgd2VsbC4KLQotICAgIFRoaXMgcGF0Y2ggYWxzbyByZW1vdmVzIHNvbWUgZGVhZCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTE5OWI5Y2M4ZjU2YWNhMjY1MDRiNDhjZjcwMjE3NjIwOGY0NmU1NAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDEyIDA3OjI0OjQwIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogUE1DNDQwOiBPbmx5IHVzZSBvbmUgQ1MgKHJhbmspIGluIEREUjIgY29uZmlndXJhdGlvbgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gc3BvdHRlZCBieSBNaWtoYWlsIFpvbG90YXJ5b3Ygb24gU2VxdW9pYSB3aXRoCi0gICAgdGhlIEREUjIgY29uZmlndXJhdGlvbiB0byBvbmx5IHVzZSBvbmUgQ1MgKHJhbmspLiBBcyB0aGlzIGNvZGUgaXMgbW9zdAotICAgIGxpa2VseSBjb3BpZWQgZnJvbSB0aGUgb3JpZ2luYWwgU2VxdW9pYSB2ZXJzaW9uLCB0aGlzIGVycm9yIHdhcyBjb3BpZWQKLSAgICBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWU4NmZkMTVlMWNjZGE0YmU0MWYxZGJhODJiOGM5ZWZlYTlhMzE0NQotQXV0aG9yOiBNaWtoYWlsIFpvbG90YXJ5b3YgPGxlYm9uQGxlYm9uLm9yZy51YT4KLURhdGU6CVdlZCBNYXIgMTEgMTA6NTQ6NDYgMjAwOSArMDIwMAotCi0gICAgRml4IEFNQ0MgU2VxdW9pYSBib2FyZCBERFIgbWVtb3J5IGNvbmZpZ3VyYXRpb24KLQotICAgIFNlcXVvaWEgYm9hcmQgc2NoZW1hdGljcyAoREVTMDIxMV8xMV9TQ0hfMTEucGRmLCBwYWdlIDUsIHVuaXQgVTFEKQotICAgIHNwZWNpZmllcyB0aGF0IEJhbmtTZWwjMSBpcyBub3QgY29ubmVjdGVkLCB3aGlsZSBib290bG9hZGVyIG1lbW9yeQotICAgIGNvbmZpZ3VyYXRpb24gaXMgKGJvYXJkL2FtY2Mvc2VxdW9pYS9zZHJhbS5jKToKLQkgICBtdHNkcmFtKEREUjBfMTAsIDB4MDAwMDAzMDApOwotICAgIGkuZS4gYm90aCBDaGlwIFNlbGVjdHMgdXNlZCAtIG5vdCBjb3JyZWN0LgotCi0gICAgSWYgd2UgY2hhbmdlIHRvIGNvcnJlY3QgdmFsdWUgaGVyZToKLQkgICBtdHNkcmFtKEREUjBfMTAsIDB4MDAwMDAxMDApOwotICAgIG1lbW9yeSBpcyBhY2Nlc3NpYmxlIE9LIGFsc28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtoYWlsIFpvbG90YXJ5b3YgPGxlYm9uQGxlYm9uLm9yZy51YT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiM2RkNjI5ZTc4ODcwYmEyZGM5ZjgwMzI5Nzg3MjFjMGZhMDJhODU2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDE1IDIyOjQwOjA5IDIwMDkgKzAxMDAKLQotICAgIFByZXBhcmUgMjAwOS4wMy1yYzIKLQotICAgIFVwZGF0ZSBDSEFORUdMT0csIGZpeCBtaW5vciBjb2Rpbmcgc3R5bGUgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzk0ZDMwZGQxZWUyM2I4MGZkNWU1OWUxN2ViZTBmZWNhOTI3YWIzMQotQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGd2Yi51Ym9vdEBnbWFpbC5jb20+Ci1EYXRlOglGcmkgTWFyIDEzIDExOjQwOjEwIDIwMDkgLTA0MDAKLQotICAgIG1wYzgzeHg6IEFkZCBiYW5rIGNvbmZpZ3VyYXRpb24gdG8gRlNMIHNwZF9zZHJhbS5jCi0KLSAgICBUaGUgcm91dGluZSBhc3N1bWVkIDQgYmFuayBTRFJBTXMsIGVuaGFuY2UgdG8gY29uZmlndXJlIGZvciA0IG9yIDgKLSAgICBiYW5rIFNEUkFNcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0gICAgQWNrZWQtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI1ODE2MjZjMWUyNDc0YTNkYWRmNjlkNGYwZTA1ODJlY2NiYzQyMzUKLUF1dGhvcjogTm9yYmVydCB2YW4gQm9saHVpcyA8bnZib2xodWlzQGFpbXZhbGxleS5ubD4KLURhdGU6CUZyaSBNYXIgMTMgMDg6NTg6MTQgMjAwOSArMDEwMAotCi0gICAgbXBjODN4eDogY29ycmVjdGx5IHNldCBlbmNyeXB0aW9uIGFuZCBJMkMgYnVzIDAgY2xvY2sKLQotICAgIFRoaXMgcGF0Y2ggbWFrZXMgc3VyZSB0aGUgY29ycmVjdCBtYXNrIGlzIGFwcGxpZWQgd2hlbiBzZXR0aW5nCi0gICAgdGhlIGVuY3J5cHRpb24gYW5kIEkyQyBidXMgMCBjbG9jayBpbiBTQ0NSLgotICAgIEZhaWxpbmcgdG8gZG8gc28gbWF5IGxlYWQgdG8gRU5DQ00gYmVpbmcgMCBpbiB3aGljaCBjYXNlIEkyQyBidXMgMAotICAgIHdvbid0IGZ1bmN0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9yYmVydCB2YW4gQm9saHVpcyA8bnZib2xodWlzQGFpbXZhbGxleS5ubD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTZhNmE3MDQxNTFjMmQ3ZTRhN2I0ODU1NDViNDhhNjAyMGNjY2ExNwotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJVGh1IE1hciAxMiAxOTozMDo1MCAyMDA5ICswMTAwCi0KLSAgICBPTUFQMzogQWRkIHN1cHBvcnQgZm9yIE9NQVAzIGRpZSBJRAotCi0gICAgUmVhZCBhbmQgc3RvcmUgT01BUDMgZGllIElEIGluIFUtQm9vdCBlbnZpcm9ubWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCBmOTQ5YmQ4ZDA4OWVjMzA1OWM0NjBhYzgyOWMwZDkxOWUxZDdhZjBlCi1BdXRob3I6IEpvbiBTbWlybCA8am9uc21pcmxAZ21haWwuY29tPgotRGF0ZToJV2VkIE1hciAxMSAxNTowODo1NiAyMDA5IC0wNDAwCi0KLSAgICBNUEM1MjAwIEZFQyBNSUkgc3BlZWQgcmVnaXN0ZXIKLQotICAgIFNldCBhIG5vbi16ZXJvIHNwZWVkIGluIHRoZSBNSUkgcmVnaXN0ZXIgc28gdGhhdCBNSUkgY29tbWFuZHMgd2lsbCB3b3JrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIFNtaXJsIDxqb25zbWlybEBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5NGEzNTM2MTFiOTNhYzRjYjQ0MzRhNWY3ZTk4YWEwOTAyZGE5MTllCi1BdXRob3I6IFl1c3VrZS5Hb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KLURhdGU6CUZyaSBNYXIgMTMgMTY6MDg6MTggMjAwOSArMDkwMAotCi0gICAgc2g6IGFwMzI1cnhhOiBDaGFuZ2UgdGhlIHdhaXQgY3ljbGUgaW4gdGhlIGFyZWEgNQotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDJkYjBlMTI3OGI5ZjExMjYzZTBhMTMzMjZiNTdkNGY5OTc4MWY3YWMKLUF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJV2VkIEZlYiAyNSAxNjowNDoyNiAyMDA5ICswOTAwCi0KLSAgICBzaDogRml4IGNhbm5vdCB3b3JrIHJ0bDgxMzkgb24gcjJkcGx1cwotCi0gICAgVGhlIHJ0bDgxMzkgZHJpdmVyIHVzZSBwY2lfbWVtX3RvX3BoeXMuIFNvIGl0IG5lZWQgUENJIHN5c3RlbSBtZW1vcnkKLSAgICByZWdpc3RyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNjRmM2MwYjhiYTk5ZDY2NTFkYjU5MjczZTQ5N2FiNWU4NTdjOGQ0ZgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglGcmkgRmViIDI3IDE4OjM1OjQxIDIwMDkgKzA5MDAKLQotICAgIHNoOiBBZGQgbmV0ZGV2IGhlYWRlciBmaXhpbmcgb2Ygd2FybmluZy9idWlsZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGFkYTkzMTgyNTJmNTFjMjYyNmU5ODM3YzYyM2Y5ODEyYjAzMDhkZWEKLUF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVHVlIE1hciAzIDE1OjExOjE3IDIwMDkgKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCAzMi1CaXQgRXh0ZW5kZWQgQWRkcmVzcyBNb2RlIHRvIHNoNzc4NWxjcgotCi0gICAgV2UgY2FuIGJ1aWx0ICdtYWtlIHNoNzc4NWxjcl8zMmJpdF9jb25maWcnLiBBbmQgYWRkIG5ldyBjb21tYW5kICJwbWIiCi0gICAgZm9yIHRoaXMgbW9kZS4gVGhpcyBjb21tYW5kIGNoYW5nZXMgUE1CIGZvciB1c2luZyA1MTJNQiBzeXN0ZW0gbWVtb3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDA2YjE4MTYzYjU3ZTZiMDM0OWIwYzI5OTIyMmQ1MGU3YjFlNDFlNTAKLUF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJV2VkIEZlYiAyNSAxNDoyNjo0MiAyMDA5ICswOTAwCi0KLSAgICBzaDogQWRkIHNvbWUgcmVnaXN0ZXIgdmFsdWUgY29uZmlndXJhYmxlIHRvIFBDSSBvZiBTSDc3ODAKLQotICAgIFNvbWUgcmVnaXN0ZXIgdmFsdWUgd2FzIGhhcmRjb2RlZCBmb3IgU3lzdGVtIG1lbW9yeSBzaXplIDEyOE1CIGFuZAotICAgIG1lbW9yeSBvZmZzZXQgMHgwODAwMDAwMC4gVGhpcyBwYXRjaCBmaXhlZCB0aGUgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAwNmUyNzM1ZWI4NWNiZWE3Y2VjYjNjMzA4ZDZkMDc4YjM2NTFiMjJjCi1BdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVdlZCBGZWIgMjUgMTQ6MjY6NTIgMjAwOSArMDkwMAotCi0gICAgc2g6IEFkZCBzeXN0ZW0gbWVtb3J5IHJlZ2lzdHJhdGlvbiB0byBQQ0kgZm9yIFNINAotCi0gICAgSXQgaXMgbmVjZXNzYXJ5IGZvciBzb21lIHBjaSBkZXZpY2UgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGIzMDYxYjQwZGI2OTEyNDVhN2JiOWE1NTM1NGI0ZWRhY2JmMzkwMmQKLUF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJV2VkIEZlYiAyNSAxNDoyNjo1NSAyMDA5ICswOTAwCi0KLSAgICBzaDogQWRkIHZhbHVlIGZvciBQQ0kgc3lzdGVtIG1lbW9yeSByZWdpc3RyYXRpb24gb2Ygc2g3Nzg1bGNyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNmQ4NGFlMzk1NmE2Y2Q3YWViZDg2ZjY2MTEzMDc1MjU5NGU2MDEyNAotQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUdWUgTWFyIDMgMTU6MTE6MDggMjAwOSArMDkwMAotCi0gICAgc2g6IEFkZCBtYWNyb3MgZm9yIFNILTRBIDMyLUJpdCBBZGRyZXNzIEV4dGVuZGVkIE1vZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAzZTNlZWMzOWRlOGZlMGFlNjJlNmU0ZDRlM2ZhNDQ0MmVlOWVkNmIxCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBGZWIgMyAxMzozNTowNSAyMDA5ICswOTAwCi0KLSAgICBzaDogdXNlIHdyaXRlezgsMTYsMzJ9IGluIG1zNzcyMHNlIGxvd2xldmVsX2luaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAwNDUyMzUyZGYxMThiYzlkZDY4NGEwNTZhYWFhNWZiNGFlZDExNzhhCi1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJTW9uIE1hciA5IDE4OjA3OjUzIDIwMDkgLTA1MDAKLQotICAgIHRzZWM6IHJlcG9ydCB3aGVuIHRoZXJlIGlzIG5vIHZlbmRvciBzcGVjaWZpYyBQSFkgc3VwcG9ydAotCi0gICAgQ29tbWl0IGFmMWMyYjg0IGFkZGVkIGEgZ2VuZXJpYyBwaHkgc3VwcG9ydCwgd2l0aCBhbiBJRCBvZiB6ZXJvCi0gICAgYW5kIGEgMzIgYml0IG1hc2s7IG1lYW5pbmcgdGhhdCBpdCB3aWxsIG1hdGNoIG9uIGFueSBQSFkgSUQuCi0KLSAgICBUaGUgcHJvYmxlbSBpcyB0aGF0IHRoZXJlIGlzIGEgdGVzdCB0aGF0IGNoZWNrZWQgaWYgYSBtYXRjaGluZwotICAgIFBIWSB3YXMgZm91bmQsIGFuZCBpZiBub3QsIGl0IHByaW50ZWQgdGhlIG5vbi1tYXRjaGluZyBJRC4KLSAgICBCdXQgc2luY2UgdGhlcmUgd2lsbCBhbHdheXMgYmUgYSBtYXRjaCAob24gdGhlIGdlbmVyaWMgUEhZLAotICAgIHdvcnN0IGNhc2UpLCB0aGlzIHRlc3Qgd2lsbCBuZXZlciB0cmlwLgotCi0gICAgSW4gdGhlIGNhc2Ugb2YgYSBtaXNjb25maWd1cmVkIFBIWSBhZGRyZXNzLCBvciBvZiBhIFBIWSB0aGF0Ci0gICAgaXNuJ3QgZXhwbGljaXRseSBzdXBwb3J0ZWQgb3V0c2lkZSBvZiB0aGUgZ2VuZXJpYyBzdXBwb3J0LAotICAgIHlvdSB3aWxsIG5ldmVyIHNlZSB0aGUgSUQgb2YgMHhmZmZmZmZmZiwgb3IgdGhlIElEIG9mIHRoZQotICAgIHJlYWwgKGJ1dCB1bnN1cHBvcnRlZCkgY2hpcC4gIEl0IHdpbGwgc2lsZW50bHkgZmFsbCB0aHJvdWdoCi0gICAgb250byB0aGUgZ2VuZXJpYyBzdXBwb3J0LgotCi0gICAgVGhpcyBjaGFuZ2UgbWFrZXMgdGhhdCB0ZXN0IHVzZWZ1bCBhZ2FpbiwgYW5kIGVuc3VyZXMgdGhhdAotICAgIHRoZSBzZWxlY3Rpb24gb2YgZ2VuZXJpYyBQSFkgc3VwcG9ydCBkb2Vzbid0IGhhcHBlbiB3aXRob3V0Ci0gICAgc29tZSBzb3J0IG9mIG5vdGljZS4gIEl0IGFsc28gbWFrZXMgaXQgZXhwbGljaXRseSBjbGVhciB0aGF0Ci0gICAgdGhlIGdlbmVyaWMgUEhZIG11c3QgYmUgbGFzdCBpbiB0aGUgUEhZIHRhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGMyNzlkZmMxMDE4NmNlYmE3OGQzODYyMDM2ZjE1ODc1MGU4NjU5OWEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBNYXIgOSAxMDo1MzowNSAyMDA5ICswMTAwCi0KLSAgICBTSU1QQzgzMTMgYm9hcmQ6IGZpeCBvdXQgb2YgdHJlZSBidWlsZGluZy4KLQotICAgIEZpeCB0eXBvIGluIG1ha2VmaWxlIHdoaWNoIGJyb2tlIG91dCBvZiB0cmVlIGJ1aWxkcy4KLQotICAgIEFsc28gdXNlIGV4cG9saWNpdCAicm0iIGluc3RlYWQgb2YgImxuIC1zZiIgd2hpY2ggaXMga25vd24gdG8gYmUKLSAgICB1bnJlbGlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDliNWFmZjQ5MWJkNTc0OTM1ZWNhZjg1NDUxNTIwNjZhMjVlZmYzZAotQXV0aG9yOiBrc2lAa29pOC5uZXQgPGtzaUBrb2k4Lm5ldD4KLURhdGU6CU1vbiBGZWIgMjMgMTA6NTM6MTMgMjAwOSAtMDgwMAotCi0gICAgQWRkIGVUU0VDIDEvMiBJTyBvdmVycmlkZSBjb250cm9sIChjb3JyZWN0ZWQpCi0KLSAgICBUaGlzIGFkZHMgdHNlYzEyaW9vdmNyIHRvIGluY2x1ZGUvYXNtLXBwYy9pbW1hcF84NXh4LmggKHdhcyByZXNlcnZlZC4pCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZXkgS3VidXNoeW4gPGtzaUBrb2k4Lm5ldD4KLQotY29tbWl0IDQ4YzJiN2JiNDMyZGE4NGZjY2UwNWI0ZGI2ZWZhZDBiZTczYTkzZGMKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE1hciA2IDE5OjA1OjUyIDIwMDkgLTA2MDAKLQotICAgIGZzbDogUmVtb3ZlIHVubmVjZXNzYXJ5IGRlYnVnIHByaW50ZnMKLQotICAgIFRoZXNlIHdlcmUgbGVmdCBpbiBhY2NpZGVudGFsbHksIGFuZCBhcmUgbm90IHJlYWxseSB1c2VmdWwgdW5sZXNzIHRoZQotICAgIGNvZGUgaXMgYXMgYnJva2VuIGFzIGl0IHdhcyB3aGVuIGl0IHdhcyBiZWluZyBkZXZlbG9wZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwZWU4NGI4OGI3OGJjZTQyNTE5MGQ4Y2Q3YWRmNGMzMGNiYTBjMmYwCi1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgRmViIDI0IDAyOjM3OjU5IDIwMDkgLTA2MDAKLQotICAgIEZpeCBtcGM4NXh4IGRkci1nZW4zIGRkcl9zZHJhbV9jZmcuCi0KLSAgICBDb21taXQgZTFiZTBkMjUsICIzMmJpdCBCVWcgZml4IGZvciBERFIyIG9uIDg1NzIiIHByZXZlbnRlZCBvdGhlcgotICAgIHNkcmFtX2NmZyBiaXRzIChzdWNoIGFzIGVjYyBhbmQgc2VsZl9yZWZyZXNoX2luX3NsZWVwKSBmcm9tIGJlaW5nIHNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhOTIyZmRiODdhZjI1YzI1YzAzMjQyNDkwOGRjZjYwZmJmMzI1MGVhCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUdWUgRmViIDI0IDA2OjEzOjEwIDIwMDkgKzAxMDAKLQotICAgIFBYQTogdGltZXIgdXNlIGRvX2RpdiBhbmQgc2ltcGxpZnkgaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0YjAwZDFhYTgyYjZhZjliNGU2MjhhNTcyOWExMjA4NmU0NDU1OGIzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gTWFyIDkgMTA6NTE6MzkgMjAwOSArMDEwMAotCi0gICAgU0lNUEM4MzEzIGJvYXJkOiBmaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcuCi0KLSAgICBGaXggdHlwbyBpbiBtYWtlZmlsZSB3aGljaCBicm9rZSBvdXQgb2YgdHJlZSBidWlsZHMuCi0KLSAgICBBbHNvIHVzZSBleHBvbGljaXQgInJtIiBpbnN0ZWFkIG9mICJsbiAtc2YiIHdoaWNoIGlzIGtub3duIHRvIGJlCi0gICAgdW5yZWxpYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmNzBmZDEzZTJmZTRjZjU4ZTI1MTI3MWMyN2Y5YzA2ZTE0MWQ3ZjlhCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyNCAxMTozMDo1MSAyMDA5ICswMTAwCi0KLSAgICA4MzYwLCBrbWV0ZXIxOiBhZGRlZCBib290Y291bnQgZmVhdHVyZS4KLQotICAgIGFkZCBDT05GSUdfQk9PVENPVU5UX0xJTUlUIGZlYXR1cmUgZm9yIDgzNjAgQ1BVLgotCi0gICAgVGhlIGJvb3Rjb3VudGVyIHVzZXMgOCBieXRlcyBmcm9tIHRoZSBtdXJhbSwKLSAgICBiZWNhdXNlIG5vIG90aGVyIG1lbW9yeSB3YXMgZm91bmQgb24gdGhpcwotICAgIENQVSBmb3IgdGhlIGJvb3Rjb3VudCBmZWF0dXJlLiBTbyB3ZSBtdXN0Ci0gICAgY29ycmVjdCB0aGUgbXVyYW0gc2l6ZSBpbiBEVFMgYmVmb3JlIGJvb3RpbmcKLSAgICBMaW51eC4KLQotICAgIFRoaXMgZmVhdHVyZSBpcyBhY3R1YWwgb25seSBpbXBsZW1lbnRlZCBmb3IKLSAgICBNUEM4MzYwLCBiZWNhdXNlIG5vdCBhbGwgODN4eCBDUFUgaGF2ZSBxZSwKLSAgICBhbmQgdGhlcmVmb3JlIG5vIG11cmFtLCB3aGljaCB0aGlzIGZlYXR1cmUKLSAgICB1c2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFlN2VkMjU2NTAzMWUwMWFiYzE4YzcxMzAzMGEwYTk4MjljMDc2ODQKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgRmViIDI0IDExOjMwOjQ4IDIwMDkgKzAxMDAKLQotICAgIDgzeHgsIGttZXRlcjogUUVfRU5FVDEwIGVycmF0YSBmb3IgU2lsaWNvbiBSZXZpc2lvbiAyLjEKLQotICAgIG9sZCBjb2RlIGltcGxlbWVudGVkIHRoZSBRRV9FTkVUMTAgZXJyYXRhIG9ubHkgZm9yIFNpbGljb24KLSAgICBSZXZpc2lvbiAyLjAuIE5ldyBjb2RlIHJlYWRzIG5vdyB0aGUgU2lsaWNvbiBSZXZpc2lvbgotICAgIHJlZ2lzdGVyIGFuZCBzZXRzIGRlcGVuZGVuZCBvbiB0aGUgU2lsaWNvbiBSZXZpc2lvbiB0aGUKLSAgICB2YWx1ZXMgYXMgYWR2aXNlZCBpbiB0aGUgUUVfRU5FVDEwIGVycmF0YS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2MDVmNzhlMzRhM2YwMTAzNjkzYjg5MWYyNTczZWRkMzUyZTdkNDk1Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyNCAxMTozMDo0NCAyMDA5ICswMTAwCi0KLSAgICA4M3h4LCBrbWV0ZXIxOiB1cGRhdGVzIGZvciAyMDA5LjAzCi0KLSAgICAtIEhSQ1cgdXBkYXRlCi0gICAgICBIUkNXSF9CT09UU0VRX0RJU0FCTEUgbm90IEhSQ1dIX0JPT1RTRVFfTk9STUFMCi0gICAgICBIUkNXSF9MQUxFX0VBUkxZIGFkZGVkCi0gICAgLSBERFItU0RSQU0gc2V0dGluZ3MgbW9kaWZpZWQuIFRoaXMgc29sdmVzIHNwb3JhZGljYWxseQotICAgICAgcHJvYmxlbXMgd2l0aCB0aGlzIG1lbW9yeS4KLSAgICAtIENTMSBub3cgMTI4IE1CIHdpbmRvdyBzaXplCi0gICAgLSBDUzMgbm93IDUxMiBNQiB3aW5kb3cgc2l6ZQotICAgIC0gUFJBTSBhY3RpdmF0ZWQKLSAgICAtIE1URFBBUlRTX0RFRkFVTFQgZGVmaW5lZAotICAgIC0gQ09ORklHX0hPU1ROQU1FIGFkZGVkCi0gICAgLSBNT05JVE9SX0xFTiBub3cgMzg0IEtCCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTE4Y2JlM2MzNWM4OThmOGQwMjBiMjlkNmRjMTgwMzA3Y2FjZjE0NwotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMjQgMTE6MzA6NDAgMjAwOSArMDEwMAotCi0gICAgODN4eCwga21ldGVyMTogYXV0b2RldGVjdCBzaXplIG9mIEREUiBJSSBSQU0KLQotICAgIGl0IGlzIHBvc3NpYmxlIHRoYXQgc29tZSBib2FyZCB2YXJpYW50cyBoYXZlIGRpZmZlcmVudCBERFIgSUkKLSAgICBSQU0gc2l6ZXMuIFNvIHdlIGF1dG9kZXRlY3QgdGhlIHNpemUgb2YgdGhlIGFzc2VtYmxlZCBSQU0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzFiY2U0ZmZmNzUwZDczNGIxZmE3NDY3ZWIwOGY5MzkwMmM5N2NhNgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMjQgMTE6MzA6MzcgMjAwOSArMDEwMAotCi0gICAgODN4eCwgaTJjOiBhZGQgbXV4IHN1cHBvcnQgZm9yIGZzbF9pMmMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBJMkMgbXV4IHN1cHBvcnQgZm9yIHRoZSBmc2xfaTJjIGRyaXZlci4gVGhpcwotICAgIGFsbG93cyB5b3UgdG8gYWRkICJuZXciIGkyYyBidXNzZXMsIHdoaWNoIGFyZSByZWFjaGVkIG92ZXIKLSAgICBpMmMgbXV4ZXMuIEZvciBtb3JlIGluZm9zLCBwbGVhc2UgbG9vayBpbiB0aGUgUkVBRE1FIGFuZAotICAgIHNlYXJjaCBmb3IgQ09ORklHX0kyQ19NVVguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTlmMGU5MzA0MWRiZmUyMmY4ZDM5Yjk4ZTRmN2Y5ZWE4N2I3NzgwMwotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMjQgMTE6MzA6MzQgMjAwOSArMDEwMAotCi0gICAgODN4eCwga21ldGVyMTogYWRkIEkyQywgZHR0LCBlZXByb20gc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIEkyQyBzdXBwb3J0IGZvciB0aGUgS2V5bWlsZSBrbWV0ZXIxIGJvYXJkLgotICAgIEl0IHVzZXMgdGhlIEZpcnN0IEkyQyBDb250cm9sbGVyIGZyb20gdGhlIENQVSwgZm9yCi0gICAgYWNjZXNzaW5nIDQgdGVtcGVyYXR1cmUgc2Vuc29ycywgYW4gZWVwcm9tIHdpdGggSVZNIGRhdGEKLSAgICBhbmQgdGhlIGJvb3RlZXByb20gb3ZlciBhIHBjYTk1NDcgbXV4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRiMWQ3MmFmZDc3Mjg3YmM4NTc3MjEwZjNmNzFhYjI0OWRjZjE0NmYKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgRmViIDI0IDExOjMwOjMwIDIwMDkgKzAxMDAKLQotICAgIGkyYywgZHR0OiBtb3ZlIGR0dF9pbml0ICgpIHRvIGJvYXJkX2luaXRfciAoKQotCi0gICAgSW4gY2FzZSB3aGVyZSBhIGJvYXJkIG5vdCB1c2VzIENPTkZJR19QT1NULCBpdCBpcyBub3QKLSAgICBuZWNlc3NhcnkgdG8gaW5pdCB0aGUgRFRUcyB3aGVuIHJ1bm5pbmcgZnJvbSBmbGFzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1YjAwNTU1NDdmMDI0NjkwOGI3OWNjMzAwMTcwZDg3MzgwYjY5ZTE4Ci1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRmViIDI1IDEyOjMxOjMyIDIwMDkgKzA4MDAKLQotICAgIDgzeHg6IEZpeCBzb21lIGJ1Z3MgaW4gc3BkIHNkcmFtIGNvZGUKLQotICAgIDEuIFJEX1RPX1BSRSBtaXNzZWQgdG8gYWRkIHRoZSBBTCwgYW5kIG5lZWQgbWluIDIgY2xvY2tzIGZvcgotICAgICAgdFJUUCBhY2NvcmRpbmcgdG8gRERSMiBKRURFQyBzcGVjLgotICAgIDIuIFdSVE9SRCAtIHRXVFIgbmVlZCBtaW4gMiBjbG9ja3MgYWNjb3JkaW5nIHRvIEREUjIgSkVERUMgc3BlYy4KLSAgICAzLiBhZGQgdGhlIHN1cHBvcnQgb2YgRERSMi01MzMsNjY3LDgwMCBESU1NcwotICAgIDQuIGNwbwotICAgIDUuIG1ha2UgdGhlIEFMIHRvIG1pbiB0byBnYWluIGJldHRlciBwZXJmb3JtYW5jZS4KLQotICAgIFRoZSBNaWNyb24gTVQ5SFRGNjQ3MkNIWS02NjdEMSBESU1NcyB0ZXN0IHBhc3NlZCBvbgotICAgIE1QQzgzN3hFTURTIHBsYXRmb3JtIGF0IDI2Nk1Iei8zMzNNSHovNDAwTUh6IGRhdGEgcmF0ZS4KLQotICAgIGl0ZW1zIDEsIDIgYW5kIDU6Ci0gICAgQWNrZWQtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi0gICAgUmVwb3J0ZWQtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI3YmU2M2FiZWM0NTg1OGMwNDRmMGZiZDZhZWVmNTI0YzQ2NjNmOWIKLUF1dGhvcjogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KLURhdGU6CVdlZCBGZWIgNCAxODoyNzo0OSAyMDA5ICswMjAwCi0KLSAgICBNUEM4MzQ5SVRYOiBzZXZlcmFsIGNvbmZpZyBpc3N1ZXMgZml4ZWQKLQotICAgIFRoZSBwcmV2aW91cyB2ZXJzaW9uIHJlYm9vdGVkIGZvcmV2ZXIgd2l0aCBERFIgYmlnZ2VyIHRoYW4gMjU2TUIuCi0gICAgQWNjZXNzIHRoZSBEUzEzMzkgUlRDIGNoaXAgaXMgb24gSTJDMSBidXMuCi0gICAgQWxsb3cgREhDUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdlMmVjMWRlMWQyZDcyM2I1OWQ3ZGQyZmI4NWZmNzFiOTUyZDYzYWYKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgRmViIDE5IDE4OjIwOjM5IDIwMDkgKzAzMDAKLQotICAgIG1wYzgzeHg6IE1QQzgzN1hFTURTOiBJbml0aWFsaXplIFNlckRlcyBiZWZvcmUgbmVnYXRpbmcgUENJRSByZXNldCBzaWduYWwKLQotICAgIFRoZSBTZXJEZXMgaW5pdGlhbGl6YXRpb24gc2hvdWxkIGJlIGZpbmlzaGVkIGJlZm9yZSBuZWdhdGluZyB0aGUgcmVzZXQKLSAgICBzaWduYWwgYWNjb3JkaW5nIHRvIHRoZSByZWZlcmVuY2UgbWFudWFsLiBUaGlzIGlzbid0IGFuIGlzc3VlIG9uIHJlYWwKLSAgICBoYXJkd2FyZSwgYnV0IHdlJ2QgYmV0dGVyIHN0aWNrIHRvIHRoZSBzcGVjaWZpY2F0aW9ucyBhbnl3YXkuCi0KLSAgICBTdWdnZXN0ZWQtYnk6IExpdSBEYXZlIDxEYXZlTGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDljMmQ2M2VjMGU5NTIwOTQ4YjZkNTk4ZWEzMmU5YWE0ZTBkZTg0N2YKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDI1IDEyOjI4OjMyIDIwMDkgKzAxMDAKLQotICAgIGkyYywgZHR0OiBtb3ZlIGR0dF9pbml0ICgpIHRvIGJvYXJkX2luaXRfciAoKQotCi0gICAgaXQgaXMgbm90IG5lY2Vzc2FyeSB0byBpbml0IHRoZSBEVFRzIHNvIGVhcmx5LAotICAgIHNvIG1vdmUgdGhpcyBpbml0IHRvIGJvYXJkX2luaXRfciAoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMDBjYzU1OTVhN2NhYWM4MDY2YjQwODc3NDM4M2E5NTZjMmUyNjc5NwotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDI1IDIwOjI4OjEzIDIwMDkgKzAxMDAKLQotICAgIGxjZDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgaW4gY29tbW9uL2xjZC5jCi0KLSAgICBGaXggZm9sbG93aW5nIHdhcm5pbmcgd2hpbGUgY29tcGlsYXRpb24gZm9yIG1jYzIwMCBib2FyZDoKLQotICAgIGxjZC5jOiBJbiBmdW5jdGlvbiAnbGNkX2Rpc3BsYXlfYml0bWFwJzoKLSAgICBsY2QuYzo2MjU6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnY21hcCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGY1YTc3YTA5YzkzZmU3ZjA0YzBjNTZmNjRlYTQzNmY3ZDMxOGQ2NzQKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBGZWIgMjQgMjE6MTE6MjQgMjAwOSArMTEwMAotCi0gICAgTW92ZWQgU0M1MjAgRmlsZXMgKGZpeCBjb21taXQgNDA3OTc2MTg1ZTBkZGEyYzkwZTg5MDI3MTIxYTEwNzFiOWM3N2JmYikKLQotICAgIEZpeGVzIGNvbW1pdCA0MDc5NzYxODVlMGRkYTJjOTBlODkwMjcxMjFhMTA3MWI5Yzc3YmZiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3MgYXQgZ21haWwuY29tPgotCi1jb21taXQgNzViYTZkNjkzYjhmNjI0N2FhNGI4MTMyM2EyZWUyZmEyODIyMjIxNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDIzIDEwOjI5OjQ3IDIwMDkgLTA1MDAKLQotICAgIHNtYzkxMXg6IHNwbGl0IG91dCB1c2VmdWwgZGVmaW5lcy9mdW5jdGlvbnMgaW50byBsb2NhbCBoZWFkZXIKLQotICAgIFRoZSBzbWM5MTF4IGRyaXZlciBoYXMgYSBsb3Qgb2YgdXNlZnVsIGRlZmluZXMvZnVuY3Rpb25zIHdoaWNoIGNhbiBiZSB1c2VkCi0gICAgYnkgcGllY2VzIG9mIGNvZGUgKHN1Y2ggYXMgZXhhbXBsZSBlZXByb20gcHJvZ3JhbW1lcnMpLiAgUmF0aGVyIHRoYW4KLSAgICBmb3JjaW5nIGVhY2ggcGxhY2UgdG8gZHVwbGljYXRlIHRoZXNlIGRlZmluZXMvZnVuY3Rpb25zLCBzcGxpdCB0aGVtIG91dAotICAgIG9mIHRoZSBzbWRjOTExeCBkcml2ZXIgaW50byBhIGxvY2FsIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBDQzogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIENDOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgQ0M6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLSAgICBDQzogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGEyYmI3MTA1YTc5YWY4ZjJmZmE5Zjg3MjU2ZmNlNmMxY2JjYmQ4ZTEKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyNCAxMDo0NDowMiAyMDA5ICswMTAwCi0KLSAgICBBUk06IGFkZCBhbiAiZWV0IiB2YXJpYW50IG9mIHRoZSBpbXgzMV9waHljb3JlIGJvYXJkCi0KLSAgICBUaGUgImVldCIgdmFyaWFudCBvZiB0aGUgaW14MzFfcGh5Y29yZSBib2FyZCBoYXMgYW4gT0xFRCBkaXNwbGF5LCB1c2luZyBhCi0gICAgczZlNjNkNiBkaXNwbGF5IGNvbnRyb2xsZXIgb24gdGhlIGZpcnN0IFNQSSBpbnRlcmZhY2UsIHVzaW5nIEdQSU81NyBhcyBhCi0gICAgY2hpcC1zZWxlY3QgZm9yIGl0LiBXaXRoIHRoaXMgY29uZmlndXJhdGlvbiB5b3UgY2FuIGRpc3BsYXkgMjU2IGNvbG91ciBCTVAKLSAgICBpbWFnZXMgaW4gMTYtYml0IFJHQiAoUkdCNTY1KSBMQ0QgbW9kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDBjOTlmNmFiMzFjNTYzNTg3NGJhN2EyZThkMzc3OTFiZmJmMDJmOGYKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJRnJpIEZlYiA2IDEwOjM3OjU3IDIwMDkgKzAxMDAKLQotICAgIHZpZGVvOiBhZGQgYW4gaS5NWDMxIGZyYW1lYnVmZmVyIGRyaXZlcgotCi0gICAgQWRkIGEgZHJpdmVyIGZvciB0aGUgU3luY2hyb25vdXMgRGlzcGxheSBDb250cm9sbGVyIGFuZCB0aGUgRGlzcGxheQotICAgIEludGVyZmFjZSBvbiBpLk1YMzEsIHVzaW5nIElQVSBmb3IgRE1BIGNoYW5uZWwgc2V0dXAuIFNvIGZhciBvbmx5Ci0gICAgZGlzcGxheWluZyBvZiBiaXRtYXBzIGlzIHN1cHBvcnRlZCwgbm8gdGV4dCBvdXRwdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGIyNDVlNjVlZTNjNGNjZTNjY2YwMDhhMjFmNDUyODIzOTY1NTg3NmMKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJRnJpIEZlYiA2IDEwOjM3OjUzIDIwMDkgKzAxMDAKLQotICAgIExDRDogc3VwcG9ydCA4YnBwIEJNUHMgb24gMTZicHAgZGlzcGxheXMKLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBzaW1wbGlmaWVzIHNvbWUgaWZkZWZzIGluIGxjZC5jLCBpbnRyb2R1Y2VzIGEgZ2VuZXJpYwotICAgIHZpZGluZm9fdCwgd2hpY2ggbmV3IGRyaXZlcnMgYXJlIGVuY291cmFnZWQgdG8gdXNlIGFuZCBvbGQgZHJpdmVycyB0byBzd2l0Y2gKLSAgICBvdmVyIHRvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIEFja2VkLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBhMzAzZGZiMGU5YTkzZTUxNmVhOTQyN2I1YzA5NTQzZDVmNzRhZGUxCi1BdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgotRGF0ZToJRnJpIEZlYiA2IDEwOjM3OjQ5IDIwMDkgKzAxMDAKLQotICAgIEFkZCAxNmJwcCBCTVAgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIDE2YnBwIEJNUCBzdXBwb3J0IHRvIHRoZSBjb21tb24gbGNkIGNvZGUuCi0KLSAgICBVc2UgQ09ORklHX0JNUF8xNkJQUCBhbmQgc2V0IExDRF9CUFAgdG8gTENEX0NPTE9SMTYgdG8gZW5hYmxlIHRoZSBjb2RlLgotCi0gICAgQXQgdGhlIG1vbWVudCBpdCdzIG9ubHkgYmVlbiB0ZXN0ZWQgb24gdGhlIE1JTUMyMDAgQVZSMzIgYm9hcmQsIGJ1dCBleHRlbmRpbmcKLSAgICB0aGlzIHRvIG90aGVyIHBsYXRmb3JtcyBzaG91bGQgYmUgYSBzaW1wbGUgdGFzayAhIQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIEFja2VkLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA2ODk1NTFjNWZmMWIzOTRiODg0MTJmM2RmMjIxNDRlNzk0NjhkM2E5Ci1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CUZyaSBGZWIgNiAxMDozNzo0MSAyMDA5ICswMTAwCi0KLSAgICBBIGRyaXZlciBmb3IgdGhlIFM2RTYzRDYgU1BJIGRpc3BsYXkgY29udHJvbGxlciBmcm9tIFNhbXN1bmcKLQotICAgIFRoaXMgaXMgYSBkcml2ZXIgZm9yIHRoZSBTNkU2M0Q2IFNQSSBPTEVEIGRpc3BsYXkgY29udHJvbGxlciBmcm9tIFNhbXN1bmcuCi0gICAgSXQgb25seSBwcm92aWRlcyBhY2Nlc3MgdG8gY29udHJvbGxlcidzIHJlZ2lzdGVycyBzbyB0aGUgY2xpZW50IGNhbiBmcmVlbHkKLSAgICBjb25maWd1cmUgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGZjN2E5M2M4NGYzZjEzNDQ4NDgxMWEwZDlhZDc1MWZiYzFhN2RhNmQKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJRnJpIEZlYiAxMyAwOToyNjo0MCAyMDA5ICswMTAwCi0KLSAgICBpLk1YMzE6IHN1cHBvcnQgR1BJTyBhcyBhIGNoaXAtc2VsZWN0IGluIHRoZSBteGNfc3BpIGRyaXZlcgotCi0gICAgU29tZSBTUEkgZGV2aWNlcyBoYXZlIHNwZWNpYWwgcmVxdWlyZW1lbnRzIG9uIGNoaXAtc2VsZWN0IGhhbmRsaW5nLgotICAgIFdpdGggdGhpcyBwYXRjaCB3ZSBjYW4gdXNlIGEgR1BJTyBhcyBhIGNoaXAtc2VsZWN0IGFuZCBzdHJpY3RseSBmb2xsb3cKLSAgICB0aGUgU1BJX1hGRVJfQkVHSU4gYW5kIFNQSV9YRkVSX0VORCBmbGFncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGIzMGRlM2NjY2Y4ODY3NTY2Y2QzMTRlN2M3MDMzOTA0YWZhNWRjOWQKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJU2F0IEZlYiA3IDAxOjE4OjA3IDIwMDkgKzAxMDAKLQotICAgIGkuTVgzMTogYWRkIGEgc2ltcGxlIGdwaW8gZHJpdmVyCi0KLSAgICBUaGlzIGlzIGEgbWluaW1hbCBkcml2ZXIsIHNvIGZhciBvbmx5IG1hbmFnaW5nIG91dHB1dC4gSXQgd2lsbAotICAgIGJlIHVzZWQgYnkgdGhlIG14Y19zcGkuYyBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmOWI2YTE1NzVkOWYxY2ExOTJlNGNiNjBlNTQ3YWE2NmYwOGJhYTNmCi1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVNhdCBGZWIgNyAwMDowOToxMiAyMDA5ICswMTAwCi0KLSAgICBpLk1YMzE6IGZpeCBTUEkgZHJpdmVyIGZvciBzaG9ydGVyIHRoYW4gMzIgYml0Ci0KLSAgICBGaXggc2V0dGluZyB0aGUgU1BJIENvbnRyb2wgcmVnaXN0ZXIsIDggYW5kIDE2LWJpdCB0cmFuc2ZlcnMKLSAgICBhbmQgYSB3cm9uZyBwb2ludGVyIGluIHRoZSBmcmVlIHJvdXRpbmUgaW4gdGhlIG14Y19zcGkgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgN2U5MTU1ODAzMmEwYzE5MzJkZDdmNGY1NjJmOWM3Y2M1NWVmYzQ5NgotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBGZWIgMTkgMTg6MjA6NTIgMjAwOSArMDMwMAotCi0gICAgbXBjODN4eDogTVBDODM3WEVSREI6IEFkZCBQQ0llIHN1cHBvcnQKLQotICAgIE9uIE1QQzgzNzdFLVJEQiBhbmQgTVBDODM3OEUtUkRCIGJvYXJkcyB3ZSBoYXZlIFBDSWUgYW5kIG1pbmktUENJZQotICAgIHNsb3RzLiBMZXQncyBzdXBwb3J0IHRoZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTBhNGQwOGU4ZjMxZGViYmQ0ZWExMmNhZjEyNjVmMzY0M2MzOGQ1YgotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBGZWIgMTkgMTg6MjA6NTAgMjAwOSArMDMwMAotCi0gICAgbXBjODN4eDogUENJOiBGaXggaGFyZC1jb2RlZCBmaXJzdF9idXNubyB2YWx1ZQotCi0gICAgV2Ugc2hvdWxkIHVzZSBwY2lfbGFzdF9idXNubygpIGluIHBjaV9pbml0X2J1cygpLCBvdGhlcndpc2Ugd2UnbGwKLSAgICBlcnJvbmVvdXNseSByZS11c2UgUENJMCdzIGZpcnN0X2J1c25vIGZvciBQQ0kxIGhvc2VzLgotCi0gICAgTk9URTogVGhlIHBhdGNoIGlzIHVudGVzdGVkLiBBbGwgTVBDODN4eCBGU0wgYm9hcmRzIEkgaGF2ZSBoYXZlCi0gICAgUENJMSBpbiBtaW5pUENJIGZvcm0sIGZvciB3aGljaCBJIGRvbid0IGhhdmUgYW55IGNhcmRzIGhhbmR5LgotCi0gICAgQnV0IGxvb2tpbmcgaW4gY3B1L21wYzg1eHgvcGNpLmM6Ci0gICAgLi4uCi0gICAgI2lmZGVmIENPTkZJR19NUEM4NVhYX1BDSTIKLQkgICAgaG9zZSA9ICZwY2lfaG9zZVsxXTsKLQotCSAgICBob3NlLT5maXJzdF9idXNubyA9IHBjaV9ob3NlWzBdLmxhc3RfYnVzbm8gKyAxOwotCi0gICAgQW5kIGNvbnNpZGVyaW5nIHRoYXQgd2UgZG8gdGhlIHNhbWUgZm9yIE1QQzgzeHggUENJLUUgc3VwcG9ydCwKLSAgICBJIHRoaW5rIHRoaXMgcGF0Y2ggaXMgY29ycmVjdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhNTg3OGQ0MjcxMjhjMWE5MjI2MDQ1ZWJlMDVmYmFkYWEwMmViOWRkCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IEZlYiAxOSAxODoyMDo0NiAyMDA5ICswMzAwCi0KLSAgICBtcGM4M3h4OiBQQ0k6IEZpeCBidXMtcmFuZ2UgZmR0IGZpeHVwcyBmb3IgUENJMSBjb250cm9sbGVycwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBjb3B5LXBhc3RlIGlzc3VlOiBwY2lfaG9zZVswXSdzIGZpcnN0IGFuZCBsYXN0Ci0gICAgYnVzbm9zIHdlcmUgdXNlZCB0byBmaXh1cCBwY2kxJ3Mgbm9kZXMuCi0KLSAgICBXZSBkb24ndCBzZWUgdGhpcyBidWcgdHJpZ2dlcmluZyBvbmx5IGJlY2F1c2UgTGludXggcmVlbnVtZXJhdGUKLSAgICBidXNlcyBhbnl3YXkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjI0YTk5ZjY2NjZhYzI3OGVjOWY5YzEzMzQ1MThhZjgyODgzM2QxOQotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBGZWIgMTkgMTg6MjA6NDQgMjAwOSArMDMwMAotCi0gICAgbXBjODN4eDogUENJZTogRml4IENPTkZJR19QQ0lfU0NBTl9TSE9XIHJlcG9ydGluZyBib2d1cyB2YWx1ZXMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgaW4gY29uZmlnIHNwYWNlIHJlYWQgYWNjZXNzb3JzOiB3ZSBzaG91bGQKLSAgICBmaWxsLWluIHRoZSB2YWx1ZSBldmVuIGlmIHdlIGZhaWwgKGUuZy4gc2tpcHBpbmcgZGV2aWNlcyksIG90aGVyd2lzZQotICAgIENPTkZJR19QQ0lfU0NBTl9TSE9XIHJlcG9ydHMgYm9ndXMgdmFsdWVzIGR1cmluZyBib290IHVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGUyZDcyYmE1NDNjN2I2OTI0YjViNWQzOTNkY2Q4MGIyYjljM2EwMjIKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgRmViIDE5IDE4OjIwOjQyIDIwMDkgKzAzMDAKLQotICAgIG1wYzgzeHg6IFBDSWU6IERvbid0IHN0YXJ0IGJ1cyBlbnVtZXJhdGlvbiBhdCAwCi0KLSAgICBDdXJyZW50bHkgd2UgYXNzaWduIGZpcnN0X2J1c25vID0gMCBmb3IgdGhlIGZpcnN0IFBDSWUgaG9zZSwgYnV0IHRoaXMKLSAgICBzY2hlbWUgd29uJ3Qgd29yayBpZiB3ZSBoYXZlIG9yZGluYXJ5IFBDSSBob3NlIGFscmVhZHkgcmVnaXN0ZXJlZCAoaXRzCi0gICAgZmlyc3RfYnVzbm8gdmFsdWUgaXMgMCB0b28pLgotCi0gICAgVGhlIG9sZCBjb2RlIHdvcmtlZCBmaW5lIG9ubHkgYmVjYXVzZSB3ZSBoYXZlIFBDSSBkaXNhYmxlZCBvbgotICAgIE1QQzgzN1hFTURTIGJvYXJkcyBpbiBzdGFuZC1hbG9uZSBtb2RlIChzZWUgY29tbWl0IDAwZjdiYmFlOTJlM2IxM2YyYjMKLSAgICAibXBjODN4eDogZml4IFBDSSBzY2FuIGhhbmcgb24gdGhlIHN0YW5kYWxvbmUgTVBDODM3eEUtTURTIGJvYXJkcyIpLgotICAgIEJ1dCBvbiBNUEM4MzdYRVJEQiBib2FyZHMgd2UgaGF2ZSBQQ0kgYW5kIFBDSWUsIHNvIHRoZSBidWcgYWN0dWFsbHkKLSAgICB0cmlnZ2Vycy4KLQotICAgIFNvLCB0byBmaXggdGhlIGlzc3VlLCB3ZSBzaG91bGQgdXNlIHBjaV9sYXN0X2J1c25vKCkgKyAxIGZvciB0aGUKLSAgICBmaXJzdF9idXNubyAoaS5lLiBsYXN0IGF2YWlsYWJsZSBidXNubykuCi0KLSAgICBSZXBvcnRlZC1ieTogSHVhbmcgQ2hhbmdtaW5nIDxDaGFuZy1NaW5nLkh1YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNjMmE4Yzc3NTFkZGJhZTMxMTY2NjAwNjRmNDQ2ODg4NTM4YjkzZTkKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgRmViIDE5IDE4OjIwOjQxIDIwMDkgKzAzMDAKLQotICAgIFBDSTogQWRkIHBjaV9sYXN0X2J1c25vKCkgaGVscGVyCi0KLSAgICBUaGlzIGlzIGp1c3QgYSBoYW5keSByb3V0aW5lIHRoYXQgcmVwb3J0cyBsYXN0IFBDSSBidXNubzogd2Ugd2FsawotICAgIGRvd24gYWxsIHRoZSBob3NlcyBhbmQgcmV0dXJuIGxhc3QgaG9zZSdzIGxhc3RfYnVzbm8uCi0KLSAgICBXaWxsIGJlIHVzZWQgYnkgUENJL1BDSWUgaW5pdGlhbGl6YXRpb24gY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZDc2NzI5YmNiZmQ2NGI1ZDAxNmE5YjkzNmYwNTg5MzFmYzA2ZWFmCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBGZWIgMjMgMTM6NTY6NTEgMjAwOSAtMDYwMAotCi0gICAgTVBDODZ4eDogc2V0IENPTkZJR19NQVhfTUVNX01BUFBFRCB0byAyRyBieSBkZWZhdWx0Ci0KLSAgICBDdXJyZW50bHksIHdlIGdldCAyNTZNQiBhcyB0aGUgZGVmYXVsdCwgYnV0IHNpbmNlIGFsbCB0aGUgODZ4eAotICAgIGJvYXJkIGNvbmZpZ3MgZGVmaW5lIGEgMkcgQkFUIG1hcHBpbmcgZm9yIFJBTSwgcmFpc2UgZGVmYXVsdAotICAgIHRvIDJHLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjMzMWUxOGI5ZGYwYWI5OGViZjNhYjQ0YzBlZmVhMTMxMTk0OWFhYQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgRmViIDEyIDEwOjQzOjMyIDIwMDkgLTA2MDAKLQotICAgIG1wYzg2NDFocGNuOiBJbmRpY2F0ZSAzNi1iaXQgYWRkciBtYXAgaW4gYm9vdCBtZXNzYWdlcwotCi0gICAgSWYgMzYtYml0IGFkZHJlc3NpbmcgaXMgZW5hYmxlZCwgcHJpbnQgYSBtZXNzYWdlIG9uIHRoZSBjb25zb2xlCi0gICAgd2hlbiB3ZSBib290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNThhNTE4YzNkOGEyYzdkZTExZDQxNGU4YjkwMzQ5NWRhZWU3ZGM3ZQotQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmotbGlzdEBtaW1jLmNvLnVrPgotRGF0ZToJRnJpIEZlYiAxMyAxNTo0ODoxOCAyMDA5ICswMDAwCi0KLSAgICBTZXR1cCBleHRyYSBNSU1DMjAwIGNoaXAgc2VsZWN0cwotCi0gICAgQWRkZWQgY29kZSB0byBzZXR1cCB0aGUgZXh0cmEgRmxhc2ggYW5kIEZSQU0gY2hpcCBzZWxlY3RzIGFzIHVzZWQgb24gdGhlCi0gICAgTUlNQzIwMCBib2FyZC4KLQotICAgIFYyIG1vdmVzIHRoZSBpbml0IGNvZGUgZnJvbSB0aGUgY29tbW9uICJjcHUuYyIgZmlsZSBpbnRvIHRoZSBib2FyZCBzcGVjaWZpYwotICAgIHNldHVwIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA4MDUzNDg4NmE3MmEwMDg4ZWVmOWU3ODFhOGUwYjdkMDRlYTQxZjM2Ci1BdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgotRGF0ZToJTW9uIE5vdiAyNCAxMjoxMDo1NiAyMDA4ICswMDAwCi0KLSAgICBNSU1DMjAwOiB0aWR5IEdDTEsgaW5pdCBjb2RlCi0KLSAgICBDaGFuZ2UgdGhlIE1JTUMyMDAgc3RhcnR1cCBjb2RlIHRvIHVzZSB0aGUgYnVpbHQtaW4gKHJhdGhlciB0aGFuCi0gICAgaGFyZC1jb2RlZCkgZnVudGlvbnMgZm9yIHNldHRpbmcgdXAgZ2NsayBvdXRwdXRzLgotCi0gICAgV2UnbGwgYWxzbyBtb3ZlIHRoZSBjb2RlIHRvIHRoZSBuZXcsIG1vcmUtYXBwcm9wcmlhdGUKLSAgICBib2FyZF9wb3N0Y2xrX2luaXQoKSByb3V0aW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYjQyM2Y5NDA2M2JmMDRlOTIwNDdmZjg1YzdlNTM0NDFlYjNiNzEyYgotQXV0aG9yOiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgSmFuIDIzIDEyOjU2OjMyIDIwMDkgKzAxMDAKLQotICAgIEFWUjMyOiBNdXN0IGFkZCBOT1BzIGFmdGVyIGRpc2FibGluZyBpbnRlcnJ1cHRzIGZvciBBVDMyVUMzQTA1MTJFUwotCi0gICAgVGhlIEFUMzJVQzNBMDUxMkVTIGNoaXAgaGFzIGEgYnVnIHdoZW4gZGlzYWJsaW5nIGludGVycnVwdHMuIEFzIGEKLSAgICB3b3JrYXJvdW5kLCB0d28gTk9QcyBjYW4gYmUgaW5zZXJ0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdW5uYXIgUmFuZ295IDxndW5uYXJAcmFuZ295LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIERyaXZla2xlcHAgPHBhdWxkcml2ZWtsZXBwQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgZjVmNjUyZmE5MWFhNjlkYjgxMTdkMjExYWYxYjRmZTA5ZjJlZGQzYgotQXV0aG9yOiBHdW5uYXIgUmFuZ295IDxndW5uYXJAcmFuZ295LmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMTI6NTY6MjkgMjAwOSArMDEwMAotCi0gICAgQVZSMzI6IE1ha2UgR1BJTyBpbXBsbWVudGF0aW9uIGNwdSBkZXBlbmRlbnQKLQotICAgIFRoZXJlIGFyZSBzb21lIGRpZmZlcmVuY2VzIGluIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiBHUElPIGluIHRoZQotICAgIGF0MzJ1YyBjaGlwIGNvbXBhcmVkIHRvIHRoZSBhcDcwMHggc2VyaWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3VubmFyIFJhbmdveSA8Z3VubmFyQHJhbmdveS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBEcml2ZWtsZXBwIDxwYXVsZHJpdmVrbGVwcEBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogT2xhdiBNb3JrZW4gPG9sYXZtcmtAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGEzOGRlMDgzZDI5NzlkYjM2ODBmMGQwOTc4YzUwOWExNzJjOGZhMDAKLUF1dGhvcjogT2xhdiBNb3JrZW4gPG9sYXZtcmtAZ21haWwuY29tPgotRGF0ZToJRnJpIEphbiAyMyAxMjo1NjoyOCAyMDA5ICswMTAwCi0KLSAgICBBVlIzMjogTW92ZSBhZGRyc3BhY2UuaCB0byBhcmNoLWRpcmVjdG9yeSwgYW5kIG1vdmUgc29tZSBmdW5jdGlvbnMgZnJvbSBpby5oIHRvIGFkZHJzcGFjZS5oCi0KLSAgICBUaGUgQVZSMzJBIGFyY2hpdGVjdHVyZSAod2hpY2ggQVQzMlVDM0Etc2VyaWVzIGlzIGJhc2VkIG9uKSBoYXMgYQotICAgIGRpZmZlcmVudCBtZW1vcnkgbGF5b3V0IHRoYW4gdGhlIEFWUjMyQi1hcmNoaXRlY3R1cmUuIFRoaXMgcGF0Y2ggbW92ZXMKLSAgICBhZGRyc3BhY2UuaCB0byBhbiBhcmNoLWRlcGVuZGVudCBkaXJlY3RvcnkgaW4gcHJlcGFyYXRpb24gZm9yCi0gICAgQVQzMlVDM0Etc3VwcG9ydC4gSXQgYWxzbyBtb3ZlcyBzb21lIGFkZHJlc3Mtc3BhY2UgbWFuaXB1bGF0aW9uCi0gICAgZnVuY3Rpb25zIGZyb20gaW8uaCB0byBhZGRyc3BhY2UuaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1bm5hciBSYW5nb3kgPGd1bm5hckByYW5nb3kuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgRHJpdmVrbGVwcCA8cGF1bGRyaXZla2xlcHBAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE9sYXYgTW9ya2VuIDxvbGF2bXJrQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBkOGYyYWEzMjk4NjEwYjQ0MTI3ZGJjNDc5NmQ4MDM4YWE1ODQ3ZTBiCi1BdXRob3I6IE9sYXYgTW9ya2VuIDxvbGF2bXJrQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMTI6NTY6MjcgMjAwOSArMDEwMAotCi0gICAgQVZSMzI6IE1ha2UgY2FjaGVmbHVzaCBjcHUtZGVwZW5kZW50Ci0KLSAgICBUaGUgQVQzMlVDM0Egc2VyaWVzIG9mIHByb2Nlc3NvcnMgZG9lc24ndCBjb250YWluIGFueSBjYWNoZSwgYW5kIGlzc3VpbmcKLSAgICBjYWNoZSBjb250cm9sIGluc3RydWN0aW9ucyBvbiB0aG9zZSB3aWxsIGNhdXNlIGFuIGV4Y2VwdGlvbi4gVGhpcyBjb21taXQKLSAgICBtYWtlcyBjYWNoZWZsdXNoLmggYXJjaC1kZXBlbmRlbnQgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBBVDMyVUMzQS1zdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3VubmFyIFJhbmdveSA8Z3VubmFyQHJhbmdveS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBEcml2ZWtsZXBwIDxwYXVsZHJpdmVrbGVwcEBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogT2xhdiBNb3JrZW4gPG9sYXZtcmtAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDJmNzBjNDllNWI5ODEzNjM1YWQ3MzY2NmFhMzBmMzA0YzdmZGVkYTkKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgRmViIDEwIDA5OjM4OjUyIDIwMDkgKzAxMDAKLQotICAgIG5ldGxvb3A6IHNwZWVkIHVwIE5ldExvb3AKLQotICAgIE5ldExvb3AgcG9sbHMgZXZlcnkgY3ljbGUgd2l0aCBnZXRlbnYgc29tZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0gICAgVGhpcyBpcyBob3JyaWJseSBzbG93LCBlc3BlY2lhbGx5IHdoZW4gdGhlIGVudmlyb25tZW50IGlzIGJpZy4KLQotICAgIFRoaXMgcGF0Y2ggcmVhZHMgb25seSB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluIE5ldExvb3AsCi0gICAgd2hlbiB0aGV5IHdlcmUgY2hhbmdlZC4KLQotICAgIEFsc28gbW92ZWQgdGhlIGluaXQgcGFydCBvZiB0aGUgTmV0TG9vcCBmdW5jdGlvbiBpbiBhIHNlcGVyYXRlCi0gICAgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYWQyZDE2MzkzZTlmNjg0ZTRhOTI1NWY0MmU4YmZkZDgxOWI2N2E4NwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRGVjIDIyIDAyOjU2OjA3IDIwMDggLTA1MDAKLQotICAgIHNtYzkxMXhfZWVwcm9tOiBuZXcgZXhhbXBsZSBhcHAgZm9yIG1hbmFnaW5nIG5ld2VyIFNNQyBwYXJ0cwotCi0gICAgQSBmb3J3YXJkIHBvcnQgb2YgdGhlIGxhc3QgdmVyc2lvbiB0byB3b3JrIHdpdGggdGhlIG5ld2VyIHNtYzkxMXggZHJpdmVyLgotICAgIEkgb25seSBoYXZlIGEgYm9hcmQgd2l0aCBhIExBTjkyMTggcGFydCBvbiBpdCwgc28gdGhhdCBpcyB0aGUgb25seSBvbmUKLSAgICBJJ3ZlIHRlc3RlZC4gIEJ1dCB0aGVyZSBpc24ndCBhbnl0aGluZyBpbiB0aGlzIHRoYXQgd291bGQgbWFrZSBpdCB0ZXJyaWJseQotICAgIGNoaXAgc3BlY2lmaWMgYWZhaWsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQ0M6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLSAgICBDQzogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIENDOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDczNjMyM2E0OTBiNjY0ZWMwZWRjM2RkYjJjMWM0YTY4MjRkYjQ1YzYKLUF1dGhvcjogUGlldGVyIEhlbm5pbmcgPHBoZW5uaW5nQHZhc3RlY2guY28uemE+Ci1EYXRlOglTdW4gRmViIDIyIDIzOjE3OjE1IDIwMDkgLTA4MDAKLQotICAgIEFkZGVkIFZpdGVzc2UgVlNDODIxMSBkZWZpbml0aW9ucyB0byBUU0VDIGRyaXZlcgotCi0gICAgQWRkZWQgdGhlIHN0cnVjdCBjb250YWluaW5nIFBIWSBzZXR0aW5ncyBmb3IgdGhlIFZpdGVzc2UgVlNDODIxMSBwaHkgdG8KLSAgICB0aGUgcGh5X2luZm8gbGlzdCBpbiB0c2VjLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBIZW5uaW5nIDxwaGVubmluZ0B2YXN0ZWNoLmNvLnphPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAzMjY4OGU1NzJmZjk2NzE1YjQxNDIwZTlhN2YyODBkYjZjMzk5YjY1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gRmViIDIzIDAwOjIyOjIxIDIwMDkgKzAxMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0c7ICBQcmVwYXJlIDIwMDkuMDMtcmMxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgODBiODI3YzJiNzgzMjljNjUwM2IyNzFlNDNkOWViNjkzZDY0NDcxMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEZlYiAyMiAyMzo0NTo0MCAyMDA5ICswMTAwCi0KLSAgICBBUk06IHN5bmNocm9uaXplIG1hY2gtdHlwZXMuaCB3aXRoIGxpbnV4IHYyLjYuMjktcmM1LTMxNS1nNjgzZmRjNQotCi0gICAgVGhlIGZpbGUgd2FzIGdlbmVyYXRlZCBmcm9tIGJ1aWxkaW5nIHZlcnNhdGlsZV9kZWZjb25maWcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTQyMDlhYzEzZmY2MzFlMzZjOWE5ZGQ0MjZjNTljMmUyZjVkYWIwMAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU3VuIEZlYiAyMiAxNDoyNDoxMSAyMDA5ICswOTAwCi0KLSAgICBNSVBTOiBGaXggR0NDLTQuMiAnZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUnIHdhcm5pbmdzCi0KLSAgICBDb21waWxpbmcgZGJhdTF4MDAgYW5kIGd0aDIgYm9hcmRzIHdpdGggR0NDLTQuMiwgeW91IHdvdWxkIHNlZSBuZXcgd2FybmluZ3MKLSAgICBsaWtlIHRoaXM6Ci0KLSAgICBza3VyaWJheUB1YnVudHU6dS1ib290LmdpdCQgLi9NQUtFQUxMIGRiYXUxMDAwCi0gICAgQ29uZmlndXJpbmcgZm9yIGRiYXUxeDAwIGJvYXJkLi4uCi0gICAgYXUxeDAwX2V0aC5jOiBJbiBmdW5jdGlvbiAnYXUxeDAwX3NlbmQnOgotICAgIGF1MXgwMF9ldGguYzoxNTg6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSBvZiAndmlydF90b19waHlzJyBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQotICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9yZWN2JzoKLSAgICBhdTF4MDBfZXRoLmM6MjExOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3ZpcnRfdG9fcGh5cycgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKLSAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfaW5pdCc6Ci0gICAgYXUxeDAwX2V0aC5jOjI1Mjogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICd2aXJ0X3RvX3BoeXMnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCi0gICAgYXUxeDAwX2V0aC5jOiBJbiBmdW5jdGlvbiAnYXUxeDAwX3JlY3YnOgotICAgIGF1MXgwMF9ldGguYzoyMTE6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMSBvZiAndmlydF90b19waHlzJyBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQotICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9pbml0JzoKLSAgICBhdTF4MDBfZXRoLmM6MjUyOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDEgb2YgJ3ZpcnRfdG9fcGh5cycgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKLSAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfc2VuZCc6Ci0gICAgYXUxeDAwX2V0aC5jOjE1ODogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICd2aXJ0X3RvX3BoeXMnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCi0KLSAgICBXZSdyZSBwYXNzaW5nIGEgdm9sYXRpbGUgcG9pbnRlciB0byBhIGZ1bmN0aW9uIHdoaWNoIGlzIGV4cGVjdGluZyBhIG5vbi0KLSAgICB2b2xhdGlsZSBwb2ludGVyLiAgVGhhdCdzIHBvdGVudGlhbGx5IGRhbmdlcm91cywgc28gZ2NjIHdhcm5zIGFib3V0IGl0LgotICAgIENvbmZpcm1lZCB3aXRoIEVMREsgNC4yIChHQ0MgNC4yLjIpIGFuZCBTb3VyY2V5IEcrKyA0LjIgKEdDQyA0LjIuMykuCi0KLSAgICBUbyBmaXggdGhpcywgd2UgYWRkIGEgdm9sYXRpbGUgYXR0cmlidXRlIHRvIHRoZSBhcmd1bWVudCBpbiBxdWVzdGlvbi4KLSAgICBUaGUgdmlydF90b19waHlzIGZ1bmN0aW9uIGluIExpbnV4IGtlcm5lbCBhbHNvIGRvZXMgdGhlIHNhbWUgdGhpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGFiYTQ1Yzg1YjIyZjhjNTdmYzJmZWRiYThlOTQ4ZTA2YzJlMmY1YjMKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CUZyaSBGZWIgMjAgMTc6NTE6MjggMjAwOSArMDEwMAotCi0gICAgT01BUDM6IENsZWFuIHVwIE1NQyBjb2RlCi0KLSAgICBDbGVhbiB1cCBPTUFQMyBNTUMgY29kZToKLQotICAgICogQ29udmVydCByZWdpc3RlciBhY2Nlc3MgdG8gc3RydWN0ICYgcmVhZHgvd3JpdGV4IHN0eWxlCi0gICAgKiBSZXBsYWNlIGhhcmRjb2RlIHZhbHVlcyBieSBtYWNyb3MKLSAgICAqIFJlbW92ZSBtYWNybyBkZWZpbmVkIHR3aWNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgY2ZjZGY0YTliMzYxZDAxNWMwZGViYWM3M2ZiZjdjNTExZGY0YTkzNAotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJVGh1IEZlYiAxMiAxODo1NTo0MyAyMDA5ICswMTAwCi0KLSAgICBPTUFQMzogUGFuZG9yYTogVXBkYXRlIHBpbiBtdXgKLQotICAgIENsb2NrIHBpbiBtdXN0IGhhdmUgaW5wdXQgZW5hYmxlZCBmb3IgTU1DMyB0byB3b3JrLgotICAgIEFsc28gZW5hYmxlIHB1bGwtdXBzIGZvciBjbWQvZGF0YSBsaW5lcyB0byBiZSBjb25zaXN0ZW50Ci0gICAgd2l0aCByZW1haW5pbmcgTU1DIGhvc3QgcGluIHNldHVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhenZ5ZGFzIElnbm90YXMgPG5vdGFzYXNAZ21haWwuY29tPgotCi1jb21taXQgNjUzMGE4YmY4YTAyNzRiOTQxOTE0MWU0YzJjNWEyMzVjY2U1MzgwZgotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJVGh1IEZlYiAxMiAxODo1NTo0MiAyMDA5ICswMTAwCi0KLSAgICBPTUFQMzogQWRkIE9NQVAzIGF1dG8gZGV0ZWN0aW9uCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgT01BUDMgY3B1IHR5cGUgYXV0byBkZXRlY3Rpb24gYmFzZWQgb24gT01BUDMgcmVnaXN0ZXIKLSAgICBhbmQgcmVtb3ZlcyBoYXJkY29kZWQgdmFsdWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c2Frb21hbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IGY5NTZmZDAzMzhmNDk5MDc5M2ExMGY3Njc5MjliYTQ5NjM2NjUyNjEKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVRodSBGZWIgMTIgMTg6NTU6NDEgMjAwOSArMDEwMAotCi0gICAgT01BUDM6IEJlYWdsZTogQWRkIGJvYXJkIHJldmlzaW9uIGRldGVjdGlvbgotCi0gICAgV2l0aCBCZWFnbGVCb2FyZCByZXZpc2lvbiBDIHNvbWUgSFcgY2hhbmdlcyBhcmUgaW50cm9kdWNlZCAoZS5nLiBQaW5NVVgpCi0gICAgd2hpY2ggbWlnaHQgbmVlZCBkaWZmZXJlbnQgc29mdHdhcmUgaGFuZGxpbmcuIEZvciB0aGlzLCBHUElPIHBpbiAxNzEgKEdQSU8KLSAgICBtb2R1bGUgNiwgb2Zmc2V0IDExKSBjYW4gYmUgdXNlZCB0byBjaGVjayBmb3IgYm9hcmQgcmV2aXNpb24uIElmIHRoaXMgcGluCi0gICAgaXMgbG93LCB3ZSBoYXZlIGEgcmV2IEMgYm9hcmQuIEVsc2UgaXQgbXVzdCBiZSBhIHJldmlzaW9uIEF4IG9yIEJ4IGJvYXJkLgotCi0gICAgVG8gaGFuZGxlIGJvYXJkIGRpZmZlcmVuY2VzIHlvdSBjYW4gY2FsbCBmdW5jdGlvbiBiZWFnbGVfZ2V0X3JldmlzaW9uKCkuCi0gICAgRS5nLjoKLQotICAgIGlmIChiZWFnbGVfZ2V0X3JldmlzaW9uKCkpIHsKLQotICAgIC8qIGRvIHNwZWNpYWwgcmV2aXNpb24gQyBzdHVmZiBoZXJlICovCi0KLSAgICB9Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgMjg4ZjNjZDkxMjkxOGI5NzkxOWQxM2I2ZjdmYjEzZmJkZGY3NGQ2OAotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJVGh1IEZlYiAxMiAxODo1NTo0MCAyMDA5ICswMTAwCi0KLSAgICBPTUFQMzogT3Zlcm86IENsZWFuIHVwIHBpbiBtdXggYW5kIEdQSU8gY29uZmlndXJhdGlvbgotCi0gICAgKiBNYWtlIE92ZXJvIEdQSU8xMTQgYW4gaW5wdXQgZm9yIHRvdWNoc2NyZWVuIFBFTkRPV04KLSAgICAqIE1ha2UgT3Zlcm8gR1BJTzE0NC0xNDcgcmVhZGFibGUKLSAgICAqIE1ha2UgT3Zlcm8gRUhDSSBwaW5tdXggbWF0Y2ggYmVhZ2xlIHJldiBjIHNldHVwCi0gICAgKiBBZGp1c3QgcGlubXV4IGZvciBTTVNDOTExWCBuZXR3b3JrIGNoaXAgc3VwcG9ydAotICAgICogUmVtb3ZlIHVubmVjZXNzYXJ5IEdQSU8gc2V0dXAKLSAgICAqIEZpeCBtZXJnZSBlcnJvciBpbiBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c2Frb21hbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDI1NzkwMTliODI0OGU1ZjE2NmU2MGUzNzA2NTc2NmVmYzhhNDlkYmMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMjIgMTc6MDg6NDEgMjAwOSArMDEwMAotCi0gICAgbm1kazg4MTU6IGZpeCBvbmVuYW5kIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwMTc2YzAzYTI0Njk2NzZkZjViZjE5Y2Y5M2ExYTZmNTgyZjZhMTIwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gRmViIDIyIDE3OjU2OjUwIDIwMDkgKzAxMDAKLQotICAgIG5vbWFkaWsvbmFuZDogZml4ICdlY2M1MTInIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOTc1MWE0NTZmNzAyYmEyZmNkZmQxYmRiYzAxMzg5MjdlZjAwNzg1OAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEZlYiAyMiAxNzo0OTo0MyAyMDA5ICswMTAwCi0KLSAgICBkYXZpbmNpOiBmaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ2RhdmluY2lfZXJyYXRhX3dvcmthcm91bmRzJwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDRmNTcyODk4N2Y0ZjlmNzg0NTY4ODQ4MmFhMmI3ZjIxMjc3NjgxNjUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMjIgMTU6NDk6MjggMjAwOSArMDEwMAotCi0gICAgYXJtOiBhZGQgdWFydCBkY2Mgc3VwcG9ydAotCi0gICAgU2VyaWFsIGRyaXZlciB2aWEgdGhlIEVtYmVkZGVkSUNFIG1hY3JvY2VsbCdzIERDQyBjaGFubmVsIHVzaW5nCi0gICAgY28tcHJvY2Vzc29yIDE0LgotCi0gICAgSXQgZG9lcyBpbmNsdWRlIGEgdGltZW91dCB0byBlbnN1cmUgdGhhdCB0aGUgc3lzdGVtIGRvZXMgbm90Ci0gICAgdG90YWxseSBmcmVlemUgd2hlbiB0aGVyZSBpcyBub3RoaW5nIGNvbm5lY3RlZCB0byByZWFkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDBjZDE4ZmE5ODJmOWE4YzFhOTBjZTk3MTM3OWE3ZDY0MDg5NzZkNDgKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDE0OjM1OjU2IDIwMDggLTA1MDAKLQotICAgIEFSTSBEYVZpbmNpOiBBZGQgY29tbW9uIHBlcmlwaGVyYWxzIGFuZCBtb2R1bGVzIGVuYWJsZSBmdW5jdGlvbnMuCi0KLSAgICBUYWtlbiBhbGwgdGhlIGR1cGxpY2F0ZWQgY29kZSBmb3IgZW5hYmxpbmcgY29tbW9uIG1vZHVsZXMgYW5kIGFwcGx5Ci0gICAgc29mdHdhcmUgd29ya2Fyb3VuZHMgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgY29kZSBpbnRvIGNvbW1vbgotICAgIGZ1bmN0aW9ucy4gQWxzbyBhZGRlZCBjb21tZW50cyBleHBsYWluaW5nIHRoZSB3b3JrYXJvdW5kcwotICAgIChmcm9tIFRJIGVycmF0YSBkb2N1bWVudHMpIGFuZCByZXBsYWNlZCBzb21lIG51bWVyaWNhbCBiaXQgbnVtYmVycwotICAgIHdpdGggbW9yZSBtZWFuaW5nZnVsIGRlZmluZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLQotY29tbWl0IGQzYmUxYmNhZTdhODIwN2UwYTc5ZmZkMDM1ZDBlOTBmODAzNzgyOTUKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLURhdGU6CU1vbiBGZWIgOSAxNTo1MzozMyAyMDA5ICswMTAwCi0KLSAgICBFbmFibGUgRXRoZXJuZXQgZm9yIE5vbWFkaWsgODgxNSBFdmFsdWF0aW9uIEtpdAotCi0gICAgVGhpcyB0cml2aWFsbHkgZW5hYmxlcyBFdGhlcm5ldCBzdXBwb3J0IGluIHRoZSBkZWJ1ZyBib2FyZAotICAgIGJ5IHNldHRpbmcgdXAgdGhlIHByb3BlciBjaGlwIHNlbGVjdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci0gICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0bndpcmVsZXNzLmNvbT4KLQotY29tbWl0IDBkOGM2ZWFiMjQ4MTA0NmU5NDQ2MjY0YmZlOTQwMmJiOThkZGY0MzMKLUF1dGhvcjogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLURhdGU6CU1vbiBGZWIgOSAxNTo1MzozMSAyMDA5ICswMTAwCi0KLSAgICBOYW5kIGRyaXZlciBmb3IgTm9tYWRpayBTb0MKLQotICAgIFRoaXMgZHJpdmVyIGltcGxlbWVudHMgdGhlIEVDQyBhbGdvcml0aG0gZGVzY3JpYmVkIGluCi0gICAgdGhlIENQVSBkYXRhIHNoZWV0IGFuZCB1c2VzIHRoZSBPT0IgbGF5b3V0IGNob3NlbiBpbgotICAgIGFscmVhZHktcmVsZWFzZWQgZGV2ZWxvcG1lbnQgc3lzdGVtcyAoc2hpcHBlZCB3aXRoIGEgY3VzdG9tLW1hZGUKLSAgICB1LWJvb3QgMS4zLjEpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLSAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rud2lyZWxlc3MuY29tPgotCi1jb21taXQgZWYzMzljYzJiNjhlNGNiZWYzZjkzNzZhNDUzMTVlMWI5NzRiYmQ4ZAotQXV0aG9yOiBBbGVzc2FuZHJvIFJ1YmluaSA8cnViaW5pQHVuaXB2Lml0PgotRGF0ZToJTW9uIEZlYiA5IDE1OjUzOjMxIDIwMDkgKzAxMDAKLQotICAgIEFkZGVkIG5vbWFkaWsuaCBoZWFkZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci0gICAgQWNrZWQtYnk6IEFuZHJlYSBHYWxsbyA8YW5kcmVhLmdhbGxvQHN0bndpcmVsZXNzLmNvbT4KLQotY29tbWl0IDYwZWNlNmQ4MDQzZDFkZDgwZjVkZDMyYzU0MTIxMzcxNmQ2MjRiMTkKLUF1dGhvcjogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJV2VkIE9jdCAyOSAyMDowNToxOCAyMDA4ICswOTAwCi0KLSAgICByOGE2NjU5Ny1oY2Q6IGZpeCBjYW5ub3QgdXNlIGV4dGVybmFsIGh1YgotCi0gICAgRml4IHRoZSBwcm9ibGVtIHRoYXQgY2Fubm90IHVzZSBleHRlcm5hbCBodWIsIGJlY2F1c2UgdGhpcyBkcml2ZXIKLSAgICBkaWQgbm90IGNvbnRyb2wgY29ycmVjdGx5IGEgREVWQUREeCByZWdpc3Rlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGUxZmZhZWU3MjgxOTBlNzZhNDU5NmEzNTc5ZDk0ZTczMDE0MzU4NWYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEZlYiAxOSAwMToyMDoyNyAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogZGlzYWJsZSBzeXNjb250cm9sIGNvZGUgZm9yIG5vdwotCi0gICAgTG9va3MgbGlrZSB0aGUgaW5pdGNvZGUgdXBkYXRlcyBmZWxsIG91dCBvZiBvcmRlciBkdXJpbmcgbXkgbWVyZ2VzLiAgVGhlCi0gICAgcGF0Y2ggdGhhdCByZWFsbHkgZml4ZXMgdXAgdGhpcyBjb2RlIGlzIHBhcnQgb2YgcG93ZXItb24gb3ZlcmhhdWwgYW5kIHNvCi0gICAgaXMgdG9vIGxhcmdlIGZvciBtZXJnaW5nIGF0IHRoaXMgcG9pbnQuICBJbnN0ZWFkLCB3ZSBjYW4gZGlzYWJsZSB0aGUgY29kZQotICAgIGFzIG5vIGN1cnJlbnRseSBpbi10cmVlIGJvYXJkIGRlcGVuZHMgb24gaXQuICBUaGUgbmV4dCBtZXJnZSB3aW5kb3cgd2lsbAotICAgIGZpeCB0aGluZ3MgdXAgcHJvcGVybHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAxYjIyOGQ2OGY1NDgzMmVkZDg2N2VmOTg1MjBmNzYwZjY4MTkyYWI3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBGZWIgMTkgMDE6MTk6NDkgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wOiBmaXggSTJDIGJvYXJkIGRlZmluZXMKLQotICAgIFRoZSBwcmV2aW91cyBtZXJnZSBmb3IgY2xlYW5pbmcgdXAgdGhlIEkyQyBkcml2ZXIgaW5jb3JyZWN0bHkgcmV2ZXJ0ZWQgdGhlCi0gICAgQ0ZHX3h4eCByZW5hbWUgZm9yIHNvbWUgb2YgdGhlIEkyQyBkZWZpbmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMDlmZWU4ZTg2NzdhNjI2NWU4OTE0NGNjYzE2M2JmMDBlMzIxNzY5ZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEZlYiAyMiAwMToxOTo1MiAyMDA5ICswMTAwCi0KLSAgICBDb2RpbmcgU3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDFkY2I1MGFmYmI2M2E0MzkzMjBhOTg1MzgwYTBhZjJkY2EwNzlkMWUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBGZWIgMjIgMDE6MTc6NDcgMjAwOSArMDEwMAotCi0gICAgTWFrZWZpbGU6IGZpeCBjbGVhbnVwCi0KLSAgICBDb21taXQgZTQ5NDNlYzUgbW92ZWQgdGhlIEFSTSBib2FyZHMgdG8gYSB2ZW5kb3IgZGlyZWN0b3J5IGJ1dCBmb3Jnb3QKLSAgICB0byBhZGFwdCB0aGUgY2xlYW51cCBydWxlcyBpbiB0aGUgTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlZGZmN2JjYzRkNTU0MGRmOGI0MTYyNzQ2NTJmZjAyZTk0YzM4YjllCi1BdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci1EYXRlOglGcmkgRmViIDIwIDEzOjAxOjU2IDIwMDkgLTA1MDAKLQotICAgIENsZWFudXAgdGhlIGNvbW1lbnQgZm9yIG02OGsgbGludXggYm9vdCBhcmd1bWVudCBwYXNzaW5nLgotCi0gICAgVGhpcyBwYXRjaCBjbGFyaWZpZXMgdGhlIHdheSBtNjhrIHBhc3NlcyBsaW51eCBib290IGFyZ3VtZW50LgotICAgIFRoZSBvbmUgZ290Y2hhIGhlcmUgaXMgdGhhdCB0aGUgYXNzZW1ibHkgaW5zdHJ1Y3Rpb24gdGhhdAotICAgIHRoZSBjb21waWxlciB1c2VzIHRvIGp1bXAgdG8gdGhlIGtlcm5lbCBpcyAnanNyJyB3aGljaCBwdXNoZXMgdGhlCi0gICAgcHJvZ3JhbSBjb3VudGVyIGZvciB0aGUgaW5zdHJ1Y3Rpb24gYWZ0ZXIgdGhlIGpzciBpbnRvIHRoZSBzdGFjayBwb2ludGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGQ0MTY1MGVlYzk1OTY2ODI4MGE2MTI0NjdiZDk1YzdiODM5ODUxMwotQXV0aG9yOiBQZXRlciBHcmlmZmluIDxwZ3JpZmZpbkBtcGMtZGF0YS5jby51az4KLURhdGU6CVR1ZSBGZWIgMTAgMTY6NDQ6NDUgMjAwOSArMDAwMAotCi0gICAgc2g6IEZpeCByc2s3MjAzIGluIHRyZWUgYnVpbGQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEdyaWZmaW4gPHBncmlmZmluQG1wYy1kYXRhLmNvLnVrPgotCi1jb21taXQgZmNhMGNlY2ZmNzNkYjk5ZDk5YWQwOTRjY2E3OTgwNDcyYjhhMTFiNQotQXV0aG9yOiBNaW5reXUgS2FuZyA8bWs3LmthbmdAc2Ftc3VuZy5jb20+Ci1EYXRlOglXZWQgRmViIDE4IDA5OjA1OjUyIDIwMDkgKzA5MDAKLQotICAgIGJvb3RtOiBSZWR1Y2UgdGhlIHVubmVjZXNzYXJ5IG1lbW1vdmUKLQotICAgIEFsdGhvdWdoIGxvYWQgYWRkcmVzcyBhbmQgaW1hZ2Ugc3RhcnQgYWRkcmVzcyBhcmUgc2FtZSBhZGRyZXNzLAotICAgIGJvb3RtIGNvbW1hbmQgYWx3YXlzIGRvZXMgbWVtbW92ZS4KLSAgICBUaGF0IGlzIHVubmVjZXNzYXJ5IG1lbW1vdmUgYW5kIGNhbiBiZSB0YWtlbiBmZXcgbWlsbGlzZWNvbmRzCi0gICAgKGFib3V0IDUwMCBtc2VjIHRvIDEwMDAgbXNlYykuCi0gICAgSWYgc2tpcCB0aGlzIG1lbW1vdmUsIHdlIGNhbiByZWR1Y2UgdGhlIGJvb3QgdGltZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pbmt5dSBLYW5nIDxtazcua2FuZ0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDY3MGNiZGU4ZGE4MzY5MGZlZDEwNjRjMzM1OGY1NGFlMWQ2OTNlZDIKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CVN1biBGZWIgMTUgMjI6Mjk6MTUgMjAwOSArMDEwMAotCi0gICAgZnBnYTogRml4IFNwYXJ0YW4gSUlJIEZQR0EgYm9vdGluZwotCi0gICAgVGhpcyBwYXRjaCBkb2VzIHNvbWUgbWlub3IgZml4aW5nIG9mIHRoZSBYaWxpbnggU3BhcnRhbiBJSUkKLSAgICBGUEdBIGJvb3QgY29kZToKLQotICAgIC0gRml4ZWQgY2FsbCBvcmRlciBvZiBwb3N0IGNvbmZpZ3VyYXRpb24gY2FsbGJhY2sgYW5kCi0gICAgICBzdWNjZXNzIG1lc3NhZ2UgcHJpbnRpbmcgKHJlc3VsdCBvZiBjb3B5LXBhc3RlPykKLSAgICAtIHJlbW92ZSBvYnNvbGV0ZSBjb21tZW50Ci0gICAgLSBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCAzODE4YjY3NzY0MTAzOGQyN2IyNjYzZmJkNjc3MWFkMzhjOTMyZjg2Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglTdW4gRmViIDE1IDIyOjI4OjM2IDIwMDkgKzAxMDAKLQotICAgIGZwZ2E6IEZpeCBTcGFydGFuIElJIEZQR0EgYm9vdGluZwotCi0gICAgVGhpcyBwYXRjaCBkb2VzIHNvbWUgbWlub3IgZml4aW5nIG9mIHRoZSBYaWxpbnggU3BhcnRhbiBJSQotICAgIEZQR0EgYm9vdCBjb2RlOgotCi0gICAgLSBGaXhlZCBjYWxsIG9yZGVyIG9mIHBvc3QgY29uZmlndXJhdGlvbiBjYWxsYmFjayBhbmQKLSAgICAgIHN1Y2Nlc3MgbWVzc2FnZSBwcmludGluZyAocmVzdWx0IG9mIGNvcHktcGFzdGU/KQotICAgIC0gcmVsb2NhdGUgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIG9ubHkgd2hlbiBpdAotICAgICAgaXMgaW1wbGVtZW50ZWQKLSAgICAtIHJlbW92ZSBvYnNvbGV0ZSBjb21tZW50Ci0gICAgLSBtaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBiNDc0NmQ4YmY5ZjRlZDZkYzhhNzZjNWQ1MmRiNjY5NjA0YWZmODRiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBGZWIgMTEgMjA6MjY6NTIgMjAwOSAtMDUwMAotCi0gICAgZHJpdmVycy9zZXJpYWwvbnMxNjU1MDogbW92ZSBpZmRlZiBpbnRvIE1ha2VmaWxlIENPQkpTLSQoLi4uKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNmJjYjRiODA2Y2VmOGE1ZGQwOGZhYzlhNGE2NzJiOTZkOWVlODA0ZQotQXV0aG9yOiBEZXJlayBPdSA8ZG91QHNpY29uaXguY29tPgotRGF0ZToJVHVlIEZlYiAzIDE2OjAwOjA3IDIwMDkgLTA3MDAKLQotICAgIGxjZF9wdXRjIGJ1ZyBmaXggZm9yIHRhYi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERlcmVrIE91IDxkb3VAc2ljb25peC5jb20+Ci0KLWNvbW1pdCAzNWM5ZTE0ZDgwOTZlNTE5ZmU3NmM5NTNhNDNkNTJhMDk2MTczNDVjCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CU1vbiBGZWIgMiAwOTo0NjoyMSAyMDA5ICswOTAwCi0KLSAgICBNSVBTOiBjcHUvbWlwcy9NYWtlZmlsZTogQWRkIGEgbWlzc2luZyBTVEFSVCBsaW5lCi0KLSAgICBJbiB0aGUgY29tbWl0IDc5YjUxZmY4MjA1ZjAzNTRkNTMwMDU3MDYxNGMxZDJkYjQ5OTY3OWMgKFtNSVBTXSBjcHUvbWlwcy8KLSAgICBNYWtlZmlsZTogU3BsaXQgW0NTXU9CSlMgb250byBzZXBhcmF0ZSBsaW5lcyksIEkgd3JvbmdseSBkZWxldGVkIGEgU1RBUlQKLSAgICBsaW5lLiAgVGhpcyBwYXRjaCBwdXRzIGl0IGJhY2suCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCA5YTYzYjdmNGY4ZjNjOTljZjAxN2UwZDNkNGExNTJkZmNkOTEzYjVhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgRmViIDIxIDIxOjUxOjIxIDIwMDkgKzAxMDAKLQotICAgIEVuYWJsZSBleHQyIHN1cHBvcnQgZm9yIFRRTTh4eEwvTSBiYXNlZCBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlM2JhN2YxMzdjN2M0NTRhZDYyNmNkMGJkMmU4NGQ3M2M3YTg2NDRmCi1BdXRob3I6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBGZWIgMjAgMDM6NDc6NTAgMjAwOSArMDEwMAotCi0gICAgQVJNOlBYQSBVc2UgbmV3IGRlZmluaXRpb25zIGluIG1tYy5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDY4MmJlZWFjMzRkYzlhYjE4ZmFiNThiMjY5NzNkMmUyOWQxMTM3MTcKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEZlYiAyMCAwMzo0Nzo1MCAyMDA5ICswMTAwCi0KLSAgICBSZWR1Y2UgdGhlIHNjb3BlIG9mIFBYQSdzIG1tY19yZWFkL21tY193cml0ZS9tbWNfYnJlYWQgZnVuY3Rpb25zCi0KLSAgICBUaGVzZSBuYW1lcyBhcmUgYmVpbmcgdGFrZW4gb3ZlciBieSB0aGUgbmV3IE1NQyBmcmFtZXdvcmsuCUhvcGVmdWx5Ci0gICAgdGhlIFBYQSBjYW4gYmUgZWFzaWx5IHBvcnRlZCwgYW5kIHRoZXNlIGZ1bmN0aW9ucyB3aWxsIGdvIGF3YXkgZW50aXJlbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGIwM2Q5MmU1NTg0OTM1ODg2ZmY5MWQ1YWEwNzU1ZGM4ODg4YjcxODcKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBGZWIgMjAgMDM6NDc6NTAgMjAwOSArMDEwMAotCi0gICAgcHhhOiBtb3ZlIG1tYyBkcml2ZXJzIHRvIGRyaXZlcnMvbW1jCi0KLSAgICBpbnRyb2R1Y2UgbmV3IG1hY3JvIENPTkZJR19QWEFfTU1DIHRvIGFjdGl2YXRlIGl0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOTQ5MGY0NjU2NDJjODBjMDU0ODU0Njg5YTJlZjFhNzdkNjVjZjFmMwotQXV0aG9yOiBUb20gUml4IDxUb20uUml4QHdpbmRyaXZlci5jb20+Ci1EYXRlOglUaHUgRmViIDE5IDE5OjI3OjIyIDIwMDkgLTA2MDAKLQotICAgIEFSTTpQWEEgUmVtb3ZlIHJlZGVmaW5pdGlvbiBvZiBtbWNfY2lkIGFuZCBtbWNfY3NkLgotCi0gICAgVGhlc2Ugc3RydWN0dXJlcyBhcmUgZGVmaW5lZCBpbiB0aGUgY29tbW9uIG1tYy5oCi0KLSAgICBUaGlzIHdhcyBjb21waWxlIGNoZWNrZWQgb24gY2VyZjI1MC4KLQotY29tbWl0IDk0YTMzMTI5MjBiNmY5YjVkYTI3MzA5NTQ5ZmI3MzY1MDcxOGMxMGEKLUF1dGhvcjogTWljaGEgS2FsZm9uIDxzbWljaGFrLnV2QGdtYWlsLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTk6NTA6MTEgMjAwOSArMDIwMAotCi0gICAgcHhhOiBmaXhpbmcgZ2V0X3RpbWVyIHRvIHJldHVybiB0aW1lIGluIG1pbGlzZWNvbmRzLgotCi0gICAgRml4aW5nIHRoZSBnZXRfdGltZXIgZnVuY3Rpb24gdG8gcmV0dXJuIHRpbWUgaW4gbWlsaXNlY29uZHMgaW5zdGVhZCBvZgotICAgIHRpY2tzLiBBbHNvIGZpeGVkIFBYQSBib2FyZHMgdG8gdXNlIHRoZSBjb252ZW50aW9uYWwgdmFsdWUgb2YgMTAwMCBmb3IKLSAgICBDT05GSUdfU1lTX0haLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGEgS2FsZm9uIDxzbWljaGFrLnV2QGdtYWlsLmNvbT4KLQotY29tbWl0IGU1ZTg4YzM2MTRiNzliNTQ3MTk5MDVmNjZhZWZiNTFmOTQ5NGJjMWYKLUF1dGhvcjogVG9tIFJpeCA8VG9tLlJpeEB3aW5kcml2ZXIuY29tPgotRGF0ZToJVGh1IEZlYiAxOSAxNjo0NTo0MyAyMDA5IC0wNjAwCi0KLSAgICBBUk06T01BUDMgQ2hhbmdlIG1tY19pbml0IHRvIG1tY19sZWdhY3lfaW5pdAotCi0gICAgb21hcDNfbW1jLmMgd2FzIGNoYW5nZWQgdG8gZGVmaW5lIG1tY19sZWdhY3lfaW5pdC4KLSAgICBSZW1vdmUgdW51c2VkIGZ1bmN0aW9ucy4KLQotICAgIENvbXBpbGUgdGVzdGVkIG9uIGFsbCBhcm0KLSAgICBSdW50aW1lIHRlc3RlZCBvbiBab29tMS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbSBSaXggPFRvbS5SaXhAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDllODBiYjIxNjI5OTg4MDYzNTc0Zjg4Y2EwZDI4YmFhZGZmNGQ5NjMKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgRmViIDE5IDE3OjIzOjU4IDIwMDkgKzAxMDAKLQotICAgIDgyeHgsIG1nY29nZTogdXBkYXRlcyBmb3IgMjAwOS4wMwotCi0gICAgLSBhY3RpdmF0ZSBDUzQgZm9yIGFjY2Vzc2luZyB0aGUgRlBHQQotICAgIC0gYWN0aXZhdGUgUnggYnVmIGxlbiA+IDEgb24gU01DCi0gICAgLSBwcmFtIGFjdGl2YXRlZAotICAgIC0gTVREUEFSVFNfREVGQVVMVCBkZWZpbmVkCi0gICAgLSB1cGRhdGUgdGhlIHNpemUgb2YgdGhlIGZsYXNoZXMgaW4gdGhlIERUUwotICAgICAgYmVmb3JlIGJvb3RpbmcgTGludXgKLSAgICAtIE1PTklUT1JfTEVOIHVwZGF0ZWQgdG8gMzg0awotICAgIC0gYWRkZWQgQ09ORklHX0hPU1ROQU1FCi0gICAgLSBhZGRlZCBDT05GSUdfRU5WX0JVRkZFUl9QUklOVAotICAgIC0gRW52aXJvbm1lbnQgc2l6ZSByZWR1Y2VkIHRvIDE2awotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBkZjkwOTU1NGUyNDAxZjMwNzkyNWUxYmQ0NWQ1NzZlNDE3NmQ5ZGU5Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IEZlYiAxOSAxNzoyNDowMSAyMDA5ICswMTAwCi0KLSAgICA4eHgsIG1nc3V2ZDogdXBkYXRlcyBmb3IgMjAwOS4wMwotCi0gICAgLSBhY3RpdmF0ZSBSeCBidWYgbGVuID4gMSBvbiBTTUMKLSAgICAtIHByYW0gYWN0aXZhdGVkCi0gICAgLSBNVERQQVJUU19ERUZBVUxUIGRlZmluZWQKLSAgICAtIHVwZGF0ZSB0aGUgc2l6ZSBvZiB0aGUgZmxhc2ggaW4gdGhlIERUUwotICAgICAgYmVmb3JlIGJvb3RpbmcgTGludXgKLSAgICAtIE1PTklUT1JfTEVOIHVwZGF0ZWQgdG8gMzg0awotICAgIC0gYWRkZWQgQ09ORklHX0hPU1ROQU1FCi0gICAgLSBhZGRlZCBDT05GSUdfRU5WX0JVRkZFUl9QUklOVAotICAgIC0gRW52aXJvbm1lbnQgc2l6ZSByZWR1Y2VkIHRvIDE2awotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAzNTExYjRlMjA4ZTEyYmU4NWI1MzI4NjZmMWM2NjBhYTJlMDIxNTU3Ci1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglXZWQgRmViIDE4IDE5OjU5OjM5IDIwMDkgKzAxMDAKLQotICAgIE1NQzogRG9uJ3QgdXNlIG5ldyBmcmFtZXdvcmsgY29kZSBpZiBub3QgZW5hYmxlZAotCi0gICAgRG9uJ3QgdXNlIGNvZGUgb2YgbmV3IE1NQyBmcmFtZXdvcmsgaW4gY21kX21tYyBpZiBDT05GSUdfR0VORVJJQ19NTUMKLSAgICBpc24ndCBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDMyNDgyYmU2Nzc3NWUwMGI0Y2JjNDlmYmE2MjM0N2MxZWNjNjIyOWMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgMTkgMTM6NTM6MjkgMjAwOSArMDEwMAotCi0gICAgVFFNOHh4TDogbWFrZSBzb21lIHJvb20gaW4gbG93IG1lbW9yeSBmb3IgZnV0dXJlIG5lZWRzCi0KLSAgICBUSGUgVFFNOHh4TCB1c2UgYSBhaG5kLW9wdGltaXplZCBsaW5rZXIgc2NyaXB0IHRvIGVmZmljaWVudGx5IHVzZSB0aGUKLSAgICBzbWFsbCBib290IHNlY3RvcnMgaW4gdGhlIGZsYXNoLiBUaGlzIHBhdGNoIG1ha2VzIHNvbWUgcm9vbSBpbiB0aGUKLSAgICBmaXJzdCBzZWN0b3IgdG8gcHJlcGFyZSBmb3IgYSBzaXplIGluY3JlYXNlIG9mIGxpYl9nZW5lcmljL3ZzcHJpbnRmLm8KLSAgICBieSBhIGZ1dHVyZSBwYXRjaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjMTU3Y2VjM2MzZjZkZmMxOTQ1MzJiM2EzY2E4N2Y4NWI2NDI5NjJhCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRmViIDE4IDE4OjA2OjE4IDIwMDkgLTA2MDAKLQotICAgIFJFQURNRTogcmVtb3ZlIGR1cGxpY2F0ZSBlbnRyeQotCi0gICAgaXQncyBiZWVuIGFyb3VuZCBzaW5jZSB0aGUgb3JpZ2luYWwgY29tbWl0ICgyYWQ2YjUxMykgdGhhdCBhZGRlZCB0d28KLSAgICBpZGVudGljYWwgZW50cmllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYmJhMzBlZmUxNzE3YmVhMTMwMjZlMTVjN2M3ZDkwNjQxOWZhYzY5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgRmViIDE5IDAwOjQxOjA4IDIwMDkgKzAxMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzY5ZDBhYTk2NzRiNjVjODNmODU1M2I5YmNmOWQyMDdkYzM2OTIyMwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAxOCAxNzo0Mzo1OSAyMDA5IC0wNjAwCi0KLSAgICBzYXRhX3NpbDMxMTQ6IGZpeCBjb21waWxlciB3YXJuaW5nCi0KLSAgICBqdWRnaW5nIGZyb20gb3RoZXIgcHJpbnRmcyBpbiB0aGUgc2FtZSBmaWxlLCBpdCBzZWVtcyBhdGEgc2hvdWxkIGJlCi0gICAgcG9zdHBlbmRlZCB3aXRoIHRoZSBpbnRlcmZhY2UgbnVtYmVyLCBub3QgdGhlIGFkZHJlc3Mgb2YgdGhlIGdsb2JhbAotICAgIHBvcnQgdmFyaWFibGUuICBGaXhlcyB0aGlzIGZvciBjdXJyZW50IHUtYm9vdC1tcGM4M3h4IHRyZWU6Ci0KLSAgICBDb25maWd1cmluZyBmb3IgTVBDODM0OUlUWCBib2FyZC4uLgotICAgIHNhdGFfc2lsMzExNC5jOiBJbiBmdW5jdGlvbiAnc2F0YV9idXNfc29mdHJlc2V0JzoKLSAgICBzYXRhX3NpbDMxMTQuYzo5OTogd2FybmluZzogZm9ybWF0ICcldScgZXhwZWN0cyB0eXBlICd1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgMiBoYXMgdHlwZSAnc3RydWN0IHNhdGFfcG9ydCAqJwotICAgIHNhdGFfc2lsMzExNC5jOjEwODogd2FybmluZzogZm9ybWF0ICcldScgZXhwZWN0cyB0eXBlICd1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgMiBoYXMgdHlwZSAnc3RydWN0IHNhdGFfcG9ydCAqJwotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGY1Njc1YWE1Y2VlZWYzMDc0MDk3MGFiOGNhMGM4Y2JjMzI0OTQ1Y2QKLUF1dGhvcjogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotRGF0ZToJV2VkIEZlYiAxOCAxNDozMDo0NCAyMDA5IC0wODAwCi0KLSAgICBDcmVhdGUgY29uZmlndXJhdGlvbiBvcHRpb24gZm9yIHJlc3RyaWN0ZWQgbnMxNjU1MCBmdW5jdGlvbnMKLQotICAgIFRoaXMgcGF0Y2ggd2lsbCBjcmVhdGUgYSBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgYSBtaW5pbXVtIGNvbmZpZ3VyYXRpb24gZm9yCi0gICAgdGhlIG5zMTY1NTAgc2VyaWFsIGRyaXZlciBhdCBkcml2ZXJzL3NlcmlhbC9uczE2NTUwLmMgYW5kIHdpbGwgYXBwbHkgdGhpcyBuZXcKLSAgICBjb25maWd1cmF0aW9uIG9wdGlvbiB0byB0aGUgU0lNUEM4MzEzLmggY29uZmlnIGZpbGUgaW4gb3JkZXIgdG8gZml4IHRoZSBOQU5ECi0gICAgYm9vdHN0cmFwIGJ1aWxkIGVycm9yLiAgVGhpcyBvcHRpb24gd2lsbCBleGNsdWRlIGFsbCBmdW5jdGlvbnMgd2l0aCBleGNlcHRpb24gb2YKLSAgICBOUzE2NTUwX3B1dGMgYW5kIE5TMTY1NTBfaW5pdC4gIFRoaXMgd2lsbCBiZSB1c2VkIHByaW1hcmlseSB0byBzYXZlIHNwYWNlIGFuZAotICAgIHJlbW92ZSB1bnVzZWQgY29kZSBmcm9tIGJ1aWxkcyBpbiB3aGljaCBzcGFjZSBpcyBsaW1pdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotCi1jb21taXQgN2IwYmMwMjE5ZGI4OTgxNjEzMjU5NDczY2YxOTY5OWFjMjU5YjRmYgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAxOCAxNjoxNDoyOSAyMDA5IC0wNjAwCi0KLSAgICBta2NvbmZpZzogaW5jbHVkZSBib2FyZCBjb25maWcuaCBiZWZvcmUgYXNtL2NvbmZpZy5oCi0KLSAgICBzd2FwcGluZyB0aGUgaW5jbHVkZSBvcmRlciBzdXBwcmVzc2VzIHdhcm5pbmdzIGZvciBib2FyZCBjb25maWdzCi0gICAgdGhhdCBkZWZpbmUgdGhlaXIgb3duIENPTkZJR19NQVhfTUVNX01BUFBFRDoKLQotICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9yMWFhaGEvZ2l0L3UtYm9vdC9pbmNsdWRlL2NvbmZpZy5oOjUsCi0JCSAgICBmcm9tIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvY29tbW9uLmg6MzUsCi0JCSAgICBmcm9tIHNpbXBjODMxMy5jOjI2OgotICAgIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvY29uZmlncy9TSU1QQzgzMTMuaDo4MToxOiB3YXJuaW5nOgotICAgICJDT05GSUdfTUFYX01FTV9NQVBQRUQiIHJlZGVmaW5lZAotICAgIEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9yMWFhaGEvZ2l0L3UtYm9vdC9pbmNsdWRlL2NvbmZpZy5oOjQsCi0JCSAgICBmcm9tIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvY29tbW9uLmg6MzUsCi0JCSAgICBmcm9tIHNpbXBjODMxMy5jOjI2OgotICAgIC9ob21lL3IxYWFoYS9naXQvdS1ib290L2luY2x1ZGUvYXNtL2NvbmZpZy5oOjI4OjE6IHdhcm5pbmc6IHRoaXMgaXMKLSAgICB0aGUgbG9jYXRpb24gb2YgdGhlIHByZXZpb3VzIGRlZmluaXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiODg0NWFiZGMwZGNmMjBkMDk0NGU5NjUxNTNmNWFlN2E5YzMwNzdjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDE4IDIxOjM1OjM4IDIwMDkgKzAxMDAKLQotICAgIEZpeCBidWlsZCBlcnJvcnMgYWZ0ZXIgbWFraW5nIGZsYXNoX2dldF9pbmZvKCkgbm9uLXN0YXRpYwotCi0gICAgRml4IGZvciB0aGVzZSBidWlsZCBwcm9ibGVtczoKLSAgICBlcnJvcjogc3RhdGljIGRlY2xhcmF0aW9uIG9mICdmbGFzaF9nZXRfaW5mbycgZm9sbG93cyBub24tc3RhdGljIGRlY2xhcmF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYjQ5OTZkNmIyMTQwZTVkYTdmMWMzNDZmMzdhNjdiMTk5MDdiMzA3YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDE4IDEzOjE4OjAwIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogUENJZTogQ2hhbmdlIDE2R0IgaW5ib3VuZCBtZW1vcnkgdG8gNEdCCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSByZWNlbnRseSBzZWVuIG9uIHNvbWUgNHh4IHBsYXRmb3Jtcy4gRm9yCi0gICAgZXhhbXBsZSBvbiBLaWxhdWVhIFBDSWUgc2xvdCAjMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGY1MGZlNGJkNjEzYzZkMzVhMmMzNDA1NWYwMmU5NTAxZGQ2YTlhZDUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEZlYiAxOCAxNDowNTozNyAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IFNvbWUgbW9yZSBQTUM0MDUgY29kaW5nLXN0eWxlIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDJmNmViOTE3MGJmOTFiNzJlYTUxZGNlYTJhOGI5YzExYjBlMjBiYzUKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC5ldT4KLURhdGU6CVN1biBGZWIgMTUgMjI6Mjc6NDcgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgUE1DNDA1IGJvYXJkIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggcHJlcGFyZXMgdGhlIGdvb2Qgb2xkIFBNQzQwNSBib2FyZCBzdXBwb3J0IGZvcgotICAgIHVwY29taW5nIFBNQzQwNVYyIHBhdGNoZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjNTUzYjVmNGEwYzc3ZmM3NmUxZDI1ZTcxYzhhYWE0NzY1N2UyZDZmCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QuZXU+Ci1EYXRlOglTdW4gRmViIDE1IDIyOjI2OjU0IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQ2xlYW51cCBQTUM0MDUgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBjb2Rpbmcgc3R5bGUgZm9yIFBNQzQwNSBib2FyZCBzdXBwb3J0LgotICAgIEFsc28gc29tZSB1bm5lZWRlZCBmZWF0dXJlcy9jb2RlIGlzIHJlbW92ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiNGU4NWQwZjM3YjViOTI0ZmJmODM0ODY3YWQ2ZDBiMzFiODZmNjY3Ci1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IEZlYiA1IDA0OjA4OjIwIDIwMDkgKzAxMDAKLQotICAgIHFvbmc6IGNoYW5nZXMgdG8gRGF2ZS9ERU5YIFFvbmcgY29uZmlndXJhdGlvbgotCi0gICAgMS4gQ2hhbmdlcyB0byB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudDoKLSAgICAgIC0gImJvb3RjbWQiIGRlZmluZWQgYXMgInJ1biBmbGFzaF9zZWxmIgotICAgICAgLSAic2F2ZWVudiIgY29tbWFuZCByZW1vdmVkIGZyb20gInVwZGF0ZSIKLSAgICAgIC0gInVib290IiBjaGFuZ2VkIHRvICJ1LWJvb3QiIChhbHNvIGluICJsb2FkIikKLSAgICAgIC0gImFkZG10ZCIgdmFyaWFibGUgZGVmaW5lZCAoYW5kIGFkZGVkIHRvIGFsbCBib290IGNvbW1hbmRzKQotICAgIDIuIENPTkZJR19DTURfSkZGUzIgZGVmaW5lZCB0byBlbmFibGUgIm10ZHBhcnRzIiBjb21tYW5kCi0gICAgMy4gTVRESURTX0RFRkFVTFQgYW5kIE1URFBBUlRTX0RFRkFVTFQgZGVmaW5lZAotICAgIDQuIENPTkZJR19TWVNfQ0JTSVpFIGNoYW5nZWQgZnJvbSAyNTYgdG8gNTEyLiBUaGF0IHNvbHZlcyB0aGUgcHJvYmxlbQotICAgIHdpdGggdHJ1bmNhdGVkICJib290YXJncyIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDVmMDMyMDEwODg3MGU1ZDYyOTgzZDFkNWMxM2EyYTA4N2RkZGY2ODYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMSAxNzowNzo1MiAyMDA5ICswMTAwCi0KLSAgICBjb21tb24vY29uc29sZTogYXZvaWQgaWZkZWYgQ09ORklHX0NPTlNPTEVfTVVYIHdoZW4gaXQncyBwb3NzaWJsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGVjNmYxNDk5NDYwMjI3NjY2MGY3MjY0YzZhYjNiOTFlZjFmNzYxNGQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMSAxNzowNzo1MSAyMDA5ICswMTAwCi0KLSAgICBjb21tb24vY29uc29sZTogY29kaW5nIHN0eWxlIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBkYWFmNzRmMTc2YjU0OGRmZDM0YTk5OTAyMzFmNDE4OTIwMWQ1N2JhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBKYW4gMjkgMjA6MDI6MjMgMjAwOSAtMDUwMAotCi0gICAgbXBjOHh4X3BjbWNpYTogbW92ZSBDT05GSUdfOHh4IG91dCBvZiAuYyBmaWxlIGFuZCBpbnRvIE1ha2VmaWxlCi0KLSAgICBNb3ZlIHRoZSBDT05GSUdfOHh4IG1wYzh4eF9wY21jaWEuYyBwcm90ZWN0aW9uIG91dCBvZiB0aGUgQyBmaWxlIGFuZAotICAgIGludG8gdGhlIE1ha2VmaWxlIHNvIHdlIGF2b2lkIHBvaW50bGVzcyBjb21waWxpbmcgb2YgdGhlIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3YmQyNzIyZTg5MGJjODc3YTNjMDU3ZDdjY2RkYzgwNDUxYzk5OTM5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBKYW4gMjkgMjA6MDI6MDcgMjAwOSAtMDUwMAotCi0gICAgZGlzazogY29udmVydCBwYXJ0XyogZmlsZXMgdG8gQ09CSi0kKENPTkZJR19YWFgpIHN0eWxlCi0KLSAgICBNb3ZlIHRoZSBDT05GSUdfWFhYIG91dCBvZiB0aGUgcGFydF9YWFguYyBmaWxlIGFuZCBpbnRvIE1ha2VmaWxlIHRvCi0gICAgYXZvaWQgcG9pbnRsZXNzIGNvbXBpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZjA1ZmE5MjA1ZTA0OTg2MTc2ZGM3YWI4YjcxMGJjYjVmYmU5ZjMzOAotQXV0aG9yOiBQZXRyaSBMZWh0aW5lbiA8cGV0cmkubGVodGluZW5AaW5vaS5maT4KLURhdGU6CVRodSBKYW4gMjkgMTA6MzU6NDAgMjAwOSArMDIwMAotCi0gICAgaW5jbHVkZS9pbWFnZS5oOiBFYXNlIGdyZXBwaW5nIG9mIGltYWdlXyogZnVuY3Rpb25zCi0KLSAgICBCZWNhdXNlIHRoZSBmdW5jdGlvbnMgaGF2ZSBiZWVuIGRlZmluZWQgdXNpbmcgbWFjcm9zLCBncmVwcGluZyBmb3IKLSAgICB0aGVpciBkZWZpbml0aW9ucyBpcyBub3QgcG9zc2libGUuIFRoaXMgcGF0Y2ggYWRkcyB0aGUgcmVhbCBmdW5jdGlvbgotICAgIG5hbWVzIGluIGNvbW1lbnRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0cmkgTGVodGluZW4gPHBldHJpLmxlaHRpbmVuQGlub2kuZmk+Ci0gICAgQWNrZWQtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGJkYWIzOWQzNThlNjNhYTQ3ZjQwMGE4YTc2YjhkNWYyODM4NDJkZjMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEphbiAyOCAxOTowODoxNCAyMDA5IC0wNTAwCi0KLSAgICByZW5hbWUgQ09ORklHX0NNRF9FTlYgdG8gQ09ORklHX0NNRF9TQVZFRU5WCi0KLSAgICBUaGUgQ09ORklHX0NNRF9FTlYgb3B0aW9uIGNvbnRyb2xzIGVuYWJsZW1lbnQgb2YgdGhlIGBzYXZlZW52YCBjb21tYW5kCi0gICAgcmF0aGVyIHRoYW4gYSBnZW5lcmljICJlbnYiIGNvbW1hbmQsIG9yIGFueXRoaW5nIGVsc2UgcmVsYXRlZCB0byB0aGUKLSAgICBlbnZpcm9ubWVudC4gIFNvLCBsZXQncyBtYWtlIHN1cmUgdGhlIGRlZmluZSBpcyBuYW1lZCBhY2NvcmRpbmdseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDhiMDU5MmI4OWUwZjlmODFjOWUxNTBjODFkOTZmOGE0M2U0ZDYxMDEKLUF1dGhvcjogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMjA6MDI6MTcgMjAwOSArMDIwMAotCi0gICAgZGlzYWJsZSBpbWxzIGNvbW1hbmQgaWYgbm8gZmxhc2ggaXMgZGVmaW5lZAotCi0gICAgRGVmYXVsdCBDT05GSUdfQ01EX0lNTFMgbXVzdCBiZSBkaXNhYmxlZCB3aGVuIENPTkZJR19TWVNfTk9fRkxBU0ggaXMgZGVmaW5lZAotCi0gICAgU2lnbmVkLW9mZi1ieTogVmFsZXJpeSBHbHVzaGtvdiA8Z3Z2QGxzdGVjLmNvbT4KLQotY29tbWl0IDkyM2FhNDgxMjYyNTljMTNkZTk1MTMxMjAzZjFkMjhiZmE1Y2I4ODkKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMTM6Mjc6MTggMjAwOSArMDEwMAotCi0gICAgQVBJOiBJbXByb3ZlIGdsdWUgbWlkLWxheWVyIG9mIHRoZSBBUEkgZGVtbyBhcHBsaWNhdGlvbi4KLQotICAgIC0gRXh0ZW5kIHViX2Rldl9yZWFkKCkgYW5kIHViX2Rldl9yZWN2KCkgc28gdGhleSByZXR1cm4gdGhlIGxlbmd0aCBhY3R1YWxseQotICAgIHJlYWQsIHdoaWNoIGFsbG93cyBmb3IgYmV0dGVyIGNvbnRyb2wgYW5kIGVycm9yIGhhbmRsaW5nICh0aGlzIGludHJvZHVjZXMKLSAgICBhZGRpdGlvbmFsIGVycm9yIGNvZGUgQVBJX0VTWVNDIHJldHVybmVkIGJ5IHRoZSBnbHVlIG1pZC1sYXllcikuCi0KLSAgICAtIENsZWFuIHVwIGRlZmluaXRpb25zIG5hbWluZyBhbmQgdXNhZ2UuCi0KLSAgICAtIE90aGVyIG1pbm9yIGNvc21ldGljcy4KLQotICAgIE5vdGUgdGhlc2UgY2hhbmdlcyBkbyBub3QgdG91Y2ggdGhlIEFQSSBwcm9wZXIsIHNvIHRoZSBpbnRlcmZhY2UgYmV0d2VlbgotICAgIFUtQm9vdCBhbmQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgcmVtYWlucyB1bmNoYW5nZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNDRhOTRlNTk2YmEwZjZkMDk1MWIxNjU0MDNjNTIwYmY1NWIxYzU2ZgotQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEphbiAyMyAxMzoyNzoxNyAyMDA5ICswMTAwCi0KLSAgICBBUEk6IE9ubHkgb3V0cHV0IHRlc3QgZGF0YSB3aGVuIHJlYWRpbmcgd2FzIHN1Y2Nlc3NmdWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA3ZmI2YzRmOWIwNmM1NTM5MDQzYzhiZmM2NTY1NzEwYjgwOTA4NDFkCi1BdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgSmFuIDIzIDEzOjI3OjE2IDIwMDkgKzAxMDAKLQotICAgIEFQSTogUHJvdmlkZSBzeXNjYWxsIGVudHJ5IHBvaW50IGZvciB0aGUgQVJNIGFyY2hpdGVjdHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGI4NGQ3ZDhmMWUxMDY2ZjgxMDg2NjMwNGExNmEzNTgzZjg4ZTdjOTgKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMTM6Mjc6MTUgMjAwOSArMDEwMAotCi0gICAgQVBJOiBVc2Ugc3RhY2sgcG9pbnRlciBhcyBBUEkgc2lnbmF0dXJlIHNlYXJjaCBoaW50IGluIHRoZSBnbHVlIGxheWVyLgotCi0gICAgRGUtaGFyZGNvZGUgcmFuZ2UgaW4gUkFNIHdlIHNlYXJjaCBmb3IgdGhlIEFQSSBzaWduYXR1cmUuIEluc3RlYWQgdXNlIHRoZSBzdGFjawotICAgIHBvaW50ZXIgYXMgYSBoaW50IHRvIG5hcnJvdyBkb3duIHRoZSByYW5nZSBpbiB3aGljaCB0aGUgc2lnbmF0dXJlIGNvdWxkIHJlc2lkZQotICAgIChpdCBpcyBtYWxsb2MnZWQgb24gdGhlIFUtQm9vdCBoZWFwLCBhbmQgaXMgaG9wZWQgdG8gcmVtYWluIGluIHNvbWUgcHJveGltaXR5Ci0gICAgZnJvbSBzdGFjayBhcmVhKS4gQWRqdXN0IFBvd2VyUEMgY29kZSBpbiBBUEkgZGVtbyB0byB0aGUgbmV3IHNjaGVtZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotCi1jb21taXQgODZiNGJhZmRmYWY2NjllZGU4ZmQ5OTA0NGFiYzdlMjdlYTI5YjRmNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAxNyAxMDoyNjozOCAyMDA5ICswMTAwCi0KLSAgICBUUU04MjYwOiBmaXggbG9jYXRpb25zIG9mIGtlcm5lbCBhbmQgcmFtZGlzayBpbWFnZXMgaW4gZmxhc2gKLQotICAgIEFmdGVyIGludHJvZHVjaW5nIHJlZHVuZGFudCBlbnZpcm9ubWVudCB0aGUga2VybmVsIGltYWdlcyB3YXMKLSAgICBvdmVybGFwcGluZyB3aXRoIGVudmlyb25tZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDJiNjhiMjMzNzNmOTYxOTlhMGNhZmJmZDdhOWY3OWVkNjIzODFlYmIKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDExIDE5OjI2OjE1IDIwMDkgKzAxMDAKLQotICAgIDgzeHg6IGFkZCBtaXNzaW5nIFRJTUlOR19DRkcxX0NBU0xBVF8qIGRlZmluZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjOWUzNGZlMmU4NmY3YjZjYzgyNjBmNGIyNGNiZGM3ZGQ4MWUwNGM1Ci1BdXRob3I6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci1EYXRlOglUaHUgRmViIDUgMTQ6MzU6MjEgMjAwOSArMDIwMAotCi0gICAgbXBjODM0OWl0eDogYWxsb3cgU0FUQSBib290IGZyb20gdGhlIG9uYm9hcmQgU0lMMTMzNAotCi0gICAgVGhpcyBwYXRjaCBhbGxvd3MgdXNpbmcgb2YgU0FUQSBkZXZpY2VzIGNvbm5lY3RlZAotICAgIHRvIHRoZSBvbmJvYXJkIFBDSSBTSUwxMzM0IFNBVEEgY29udHJvbGxlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGUxYWMzODdmNDY0NTQ5OTc0Njg1NmFkYzFhZWFhOTc4N2RhMmVjYTYKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAzMCAxNjo1MDoxNCAyMDA4IC0wNTAwCi0KLSAgICA4M3h4OiBBZGQgZVNESEMgc3VwcG9ydCBvbiA4Mzc5IEVNRFMgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDgwNTIyZGM4MzY5YTg5OTM4MzY5ZmJjZWU1NzJlNjYyMzczYmM5YTMKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAzMCAxNjo1MTozMyAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBBZGQgZVNESEMgc3VwcG9ydCBmb3IgODUzNiBEUwotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTA1ODZlZjI0ZWQ1Y2FmNmNlNTU5MWRmNzZmMzU1MDA5ZGEyY2Q3OQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDMwIDE2OjQ3OjE2IDIwMDggLTA1MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRnJlZXNjYWxlIGVTREhDIGZvdW5kIG9uIDgzNzkgYW5kIDg1MzYgU29DcwotCi0gICAgVGhpcyB1c2VzIHRoZSBuZXcgTU1DIGZyYW1ld29yawotCi0gICAgU29tZSBjb250cmlidXRpb25zIGJ5IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNzJjYzcwYjIxMWU5NDVlNDQxMzEyMmFhNzM4NjhmNmFkYTczMmE1Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMzAgMTY6NDE6MDEgMjAwOCAtMDUwMAotCi0gICAgQWRkIE1NQyBGcmFtZXdvcmsKLQotICAgIEhlcmUncyBhIG5ldyBmcmFtZXdvcmsgKGJhc2VkIHJvdWdobHkgb2ZmIHRoZSBsaW51eCBvbmUpIGZvciBtYW5hZ2luZwotICAgIE1NQyBjb250cm9sbGVycy4gIEl0IGhhbmRsZXMgYWxsIG9mIHRoZSBzdGFuZGFyZCBTRC9NTUMgdHJhbnNhY3Rpb25zLAotICAgIGxlYXZpbmcgdGhlIGhvc3QgZHJpdmVycyB0byBpbXBsZW1lbnQgb25seSB3aGF0IGlzIG5lY2Vzc2FyeSB0bwotICAgIGRlYWwgd2l0aCB0aGVpciBzcGVjaWZpYyBoYXJkd2FyZS4KLQotICAgIFRoaXMgYWxzbyBob29rcyB0aGUgaW5mcmFzdHJ1Y3R1cmUgaW50byB0aGUgUG93ZXJQQyBib2FyZCBjb2RlCi0gICAgKHNpbWlsYXIgdG8gaG93IHRoZSBldGhlcm5ldCBpbmZyYXN0cnVjdHVyZSBub3cgaG9va3MgaW4pCi0KLSAgICBTb21lIG9mIHRoaXMgY29kZSB3YXMgY29udHJpYnV0ZWQgYnkgRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFkZTk3Zjk4NTZmNjk3MzgwY2M1MDQxMjZhYjkyNTYxZWQyMzg4MDMKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAzMCAxNjozMTozOSAyMDA4IC0wNTAwCi0KLSAgICBFbGltaW5hdGVkIGFyY2gtc3BlY2lmaWMgbW1jIGhlYWRlciByZXF1aXJlbWVudAotCi0gICAgVGhlIGN1cnJlbnQgTU1DIGluZnJhc3RydWN0dXJlIHJlbGllcyBvbiB0aGUgZXhpc3RlbmNlIG9mIGFuCi0gICAgYXJjaC1zcGVjaWZpYyBoZWFkZXIgZmlsZS4JVGhpcyBpc24ndCBuZWNlc3NhcnksIGFuZCBhIGNvdXBsZQotICAgIGRyaXZlcnMgd2VyZSBmb3JjZWQgdG8gaW1wbGVtZW50IGR1bW15IGZpbGVzIHRvIG1lZXQgdGhpcyByZXF1aXJlbWVudC4KLSAgICBJbnN0ZWFkLCB3ZSBtb3ZlIHRoZSBzdHVmZiBpbiB0aG9zZSBoZWFkZXIgZmlsZXMgaW50byBhIG1vcmUgYXBwcm9wcmlhdGUKLSAgICBwbGFjZSwgYW5kIGVsaW1pbmF0ZSB0aGUgc3R1YnMgYW5kIHRoZSAjaW5jbHVkZSBvZiBhc20vYXJjaC9tbWMuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWJiNTQ2NmNjZjRjZTUwZjQxMmQ0NTk1ODZmNGY0YjgxY2I3M2FjMwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDMwIDE2OjIxOjAwIDIwMDggLTA1MDAKLQotICAgIENvbnZlcnQgbW1jX2luaXQgdG8gbW1jX2xlZ2FjeV9pbml0Ci0KLSAgICBUaGlzIGlzIHRvIGdldCBpdCBvdXQgb2YgdGhlIHdheSBvZiBpbmNvbWluZyBNTUMgZnJhbWV3b3JrCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiMmUyZWQwMjMzYTVlZjI5OTM2MWFiZWM0ZmJkYWVmYjYzNDU2ZWZmCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMzAgMTY6MTk6MjUgMjAwOCAtMDUwMAotCi0gICAgRWxpbWluYXRlIHN1cHBvcnQgZm9yIHVzaW5nIE1NQyBhcyBtZW1vcnkKLQotICAgIE1NQyBjYXJkcyBhcmUgbm90IG1lbW9yeSwgc28gd2Ugc3RvcCB0cmVhdGluZyB0aGVtIHRoYXQgd2F5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTFiZTBkMjVlY2Y0OTRhZTgxMjQ1Y2E0Mzg3MzhiYTgzOWQ2MzI5YgotQXV0aG9yOiBQb29uYW1fQWdncndhbC1iMTA4MTIgPGIxMDgxMkBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEphbiA0IDA4OjQ2OjM4IDIwMDkgKzA1MzAKLQotICAgIDMyYml0IEJVZyBmaXggZm9yIEREUjIgb24gODU3MgotCi0gICAgVGhpcyBlcnJhdGEgZml4IGlzIHJlcXVpcmVkIGZvciAzMiBiaXQgRERSMiBjb250cm9sbGVyIG9uIDg1NzIuCi0gICAgTWF5ICBhbHNvIGJlIHJlcXVpcmVkIGZvciBQMTBYWDIwWFggcGxhdGZvcm1zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQb29uYW1fQWdhcndhbC1iMTA4MTIgPGIxMDgxMkBsYzExMDYuemluMzMuYXAuZnJlZXNjYWxlLm5ldD4KLQotY29tbWl0IGUwYzRmYWM3OWQ0ZDc0NTcyZGRkNDNmNzVlNzE4OWNlY2NhOGQwYWQKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEZlYiAxNiAwOTo0MDoyMCAyMDA5IC0wNjAwCi0KLSAgICBUUU04NXh4OiBGaXggYSBjb3VwbGUgd2FybmluZ3MgaW4gVFFNODU0OCBidWlsZAotCi0gICAgVGhlIGVjbSB2YXJpYWJsZSBpbiBzZHJhbS5jIHdhcyBiZWluZyBkZWNsYXJlZCBmb3IgYWxsIDg1NDgsIGJ1dCBvbmx5Ci0gICAgdXNlZCBieSBzcGVjaWZpYyA4NTQ4IGJvYXJkcywgc28gd2UgbWFrZSB0aGF0IHZhcmlhYmxlIHJlcXVpcmUgdGhvc2UKLSAgICBzcGVjaWZpYyBib2FyZHMsIHRvbwotCi0gICAgVGhlIG5hbmQgY29kZSB3YXMgdXNpbmcgYW4gaW5kZXggImkiIGludG8gYSB0YWJsZSwgYW5kIHRoZW4gcmUtdXNpbmcgImkiCi0gICAgdG8gc2V0IGFkZHJlc3NlcyBmb3IgZWFjaCB1cG0uICBIb3dldmVyLCB0aGVuIGl0IHJlbGllZCBvbiB0aGUgb2xkIHZhbHVlCi0gICAgb2YgaSBzdGlsbCBiZWluZyB0aGVyZSB0byBlbmFibGUgdGhpbmdzLiAgQ2hhbmdlZCB0aGUgc2Vjb25kICJpIiB0byAiaiIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNmMDdhNWJhZWNlMGVjZmM1Mjg0Y2ZkYThhNGU2OGVhZjkyNzgyZjgKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglXZWQgRmViIDExIDE4OjM4OjI2IDIwMDkgKzAxMDAKLQotICAgIE1QQzg1eHg6IFRRTTg1NDg6IHdvcmthcm91bmQgZm9yIGVycmF0dW0gRERSIDE5IGFuZCAyMAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSB3b3JrYXJvdW5kIGZvciBlcnJhdHVtIEREUjIwIGFjY29yZGluZyB0byBNUEM4NTQ4Ci0gICAgRGV2aWNlIEVycmF0YSBkb2N1bWVudCwgUmV2LiAxOiAiQ0tFIHNpZ25hbCBtYXkgbm90IGZ1bmN0aW9uIGNvcnJlY3RseQotICAgIGFmdGVyIGFzc2VydGlvbiBvZiBIUkVTRVQiLiBGdXJ0aGVybW9yZSwgdGhlIGJ1ZyBERFIxOSBpcyBmaXhlZCBpbgotICAgIHByb2Nlc3NvciB2ZXJzaW9uIDIuMSBhbmQgdGhlIHdvcmstYXJvdW5kIG11c3QgYmUgcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgMDgwNDA4ZmRjNzE3MDZhZGNiODgzZDIyMTI1NjM3YzU0ZjYwMTBiMQotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjUgMjAwOSArMDEwMAotCi0gICAgTVBDODV4eDogVFFNODU0ODogdXNlIGNhY2hlIGZvciBBRyBhbmQgQkUgdmFyaWFudHMKLQotICAgIFRoaXMgcGF0Y2ggbWFrZXMgYWNjZXNzZXMgdG8gdGhlIHN5c3RlbSBtZW1vcnkgY2FjaGFibGUgYnkgcmVtb3ZpbmcgdGhlCi0gICAgY2FjaGluZy1pbmhpYml0ZWQgYW5kIGd1YXJkZWQgZmxhZ3MgZnJvbSB0aGUgcmVsZXZhbnQgVExCIGVudHJpZXMgZm9yCi0gICAgdGhlIFRRTTg1NDhfQkUgYW5kIFRRTTg1NDhfQUcgbW9kdWxlcy4gRllJLCB0aGUgRnJlZXNjYWxlIE1QQzg1KiBib2FyZHMKLSAgICBhcmUgY29uZmlndXJlZCBzaW1pbGFybHkuCi0KLSAgICBUaGlzIHJlc3VsdHMgaW4gYSBiaWcgYXZlcmFsbCBwZXJmb3JtYWNlIGltcHJvdmVtZW50LiBURlRQIGRvd25sb2FkcywKLSAgICBOQU5EIEZsYXNoIGFjY2Vzc2VzLCBrZXJuZWwgYm9vdHMsIGV0Yy4gYXJlIG11Y2ggZmFzdGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0KLWNvbW1pdCBkYzVmNTVkNjM2ZDdiZjIxYmExNzc1OGZhYzRiOTI5ZWM0YzA1OWYyCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJV2VkIEZlYiAxMSAxODozODoyNCAyMDA5ICswMTAwCi0KLSAgICBNUEM4NXh4OiBUUU04NTQ4X0FHOiBhZGQgMSBHaUIgRERSMi1TRFJBTSBjb25maWd1cmF0aW9uCi0KLSAgICBUaGlzIHBhdGNoIGFkZCBzdXBwb3J0IGZvciB0aGUgMSBHaUIgRERSMi1TRFJBTSBvbiB0aGUgVFFNODU0OF9BRwotICAgIG1vZHVsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLQotY29tbWl0IDg4YjBlODhkMTg2NDc5MzQ5ZTVhMmI3NzFlODI3NzUxMDllMTBmYjQKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglXZWQgRmViIDExIDE4OjM4OjIzIDIwMDkgKzAxMDAKLQotICAgIE1QQzg1eHg6IFRRTTg1NDg6IGZpeCBTRFJBTSB0aW1pbmcgZm9yIDUzMyBNSHoKLQotICAgIEFjY29yZGluZyB0byBuZXcgVFFNODU0OCB0aW1pbmcgc3BlY2lmaWNhdGlvbjoKLSAgICBSZWZyZXNoIFJlY292ZXJ5OiAzNCAtPiA1MyBjbG9ja3MKLSAgICBDS0UgcHVsc2Ugd2lkdGg6ICAxIC0+IDMgY3ljbGVzCi0gICAgV2luZG93IGZvciBmb3VyIGFjdGl2aXRpZXM6IDEzIC0+IDE0IGN5Y2xlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgYTg2NWJjZGFjODkyNzhjYWM0ZGZjMDdkZWM4Mjk5NDAzMTEwNDk5ZAotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjIgMjAwOSArMDEwMAotCi0gICAgTVBDODV4eDogVFFNODU0ODogYWRkIHN1cHBvcnQgZm9yIHRoZSBUUU04NTQ4X0FHIG1vZHVsZQotCi0gICAgVGhlIFRRTTg1NDhfQUcgaXMgYSB2YXJpYW50IG9mIHRoZSBUUU04NTQ4IG1vZHVsZSB3aXRoIDEgR2lCIG1lbW9yeSwKLSAgICBDQU4gYW5kIHdpdGhvdXQgUENJL1BDSS1YIGFuZCBSVEMuIFUtQm9vdCBjYW4gYmUgYnVpbHQgZm9yIHRoaXMgbW9kdWxlCi0gICAgd2l0aCAiJCBtYWtlIFRRTTg1NDhfQUdfY29uZmlnIi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgYWQ3ZWU1ZDQzYjBkYjk0MDc5ZDU2NTIxZGFiY2EyNTY3NGYyODc0NwotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjEgMjAwOSArMDEwMAotCi0gICAgTVBDODV4eDogVFFNODU0ODogYWRkIHN1cHBvcnQgZm9yIHRoZSBUUU04NTQ4X0JFIG1vZHVsZQotCi0gICAgVGhlIFRRTTg1NDhfQkUgaXMgYSB2YXJpYW50IG9mIHRoZSBUUU04NTQ4IG1vZHVsZSB3aXRoIE5BTkQgYW5kIENBTgotICAgIGludGVyZmFjZS4gV2l0aCBOQU5EIHN1cHBvcnQsIHRoZSBpbWFnZSBpcyBzaWduaWZpY2FudGx5IGxhcmdlciBhbmQKLSAgICBURVhUX0JBU0UgaXMgYWRqdXN0ZWQgYWNjb3JkaW5nbHkuIFUtQm9vdCBjYW4gYmUgYnVpbHQgZm9yIHRoaXMKLSAgICBtb2R1bGUgd2l0aCAiJCBtYWtlIFRRTTg1NDhfQkVfY29uZmlnIi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgYTMxODIzNDg3OGMzNDZlNjczYjJlZjhkYzRiMTRiMzM4ZmU3ZmMyYgotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MjAgMjAwOSArMDEwMAotCi0gICAgTVBDODV4eDogVFFNODV4eDogbWFrZSBzdGFuZGFyZCBQQ0kvUENJLVggY29uZmlndXJhYmxlCi0KLSAgICBUaGUgVFFNODU0OF9BRyBtb2R1bGUgZG9lcyBub3QgaGF2ZSB0aGUgc3RhbmRhcmQgUENJL1BDSS1YIGludGVyZmFjZQotICAgIGNvbm5lY3RlZCBidXQganVzdCB0aGUgUENJIEV4cHJlc3MgaW50ZXJmYWNlIC4gU28gZmFyIGl0IHdhcyBub3QKLSAgICBwb3NzaWJsZSB0byBkaXNhYmxlIGl0IHdpdGhvdXQgZGlzYWJsaW5nIHRoZSBjb21wbGV0ZSBQQ0kgaW50ZXJmYWNlCi0gICAgKENPTkZJR19QQ0kpIGluY2x1ZGluZyBQQ0kgRXhwcmVzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgMzFjYTkxMTljMzE4NmNlYzU3OWI1NGQyYTdhMmIzNjFiNGQyYjdiZgotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVdlZCBGZWIgMTEgMTg6Mzg6MTkgMjAwOSArMDEwMAotCi0gICAgTVBDODV4eDogVFFNODV4eDogZml4IGZsYXNoIHByb3RlY3Rpb24gZm9yIGJvb3QgbG9hZGVyCi0KLSAgICBBcyB0aGUgcmVzZXQgdmVjdG9yIGlzIGxvY2F0ZWQgYXQgMHhmZmZmZmZmYywgYWxsIGZsYXNoIHNlY3RvcnMgZnJvbSB0aGUKLSAgICBiZWdpbm5pbmcgb2YgdGhlIFUtQm9vdCBiaW5hcnkgdG8gMHhmZmZmZmZmZiBtdXN0IGJlIHByb3RlY3RlZC4gT24gdGhlCi0gICAgVFFNODU0OC1BRyBoYXZpbmcgc21hbGwgc2VjdG9ycyBhdCB0aGUgZW5kIG9mIHRoZSBmbGFzaCBpdCBoYXBwZW5lZCB0aGF0Ci0gICAgdGhlIGxhc3QgdHdvIHNlY3RvciB3ZXJlIG5vdCBwcm90ZWN0ZWQgYW5kIGFuICJlcmFzZSBhbGwiIGxlZnQgYW4KLSAgICB1bi1ib290YWJsZSBzeXN0ZW0gYmVoaW5kOgotCi0gICAgQmFuayAjIDI6IENGSSBjb25mb3JtYW50IEZMQVNIICgzMiB4IDE2KSAgU2l6ZTogMzIgTUIgaW4gMjcwIFNlY3RvcnMKLSAgICAgIEFNRCBTdGFuZGFyZCBjb21tYW5kIHNldCwgTWFudWZhY3R1cmVyIElEOiAweEVDLCBEZXZpY2UgSUQ6IDB4MjU3RQotICAgICAgRXJhc2UgdGltZW91dDogODE5MiBtcywgd3JpdGUgdGltZW91dDogMSBtcwotCi0gICAgICBGRkZBMDAwMCBFIFJPICAgRkZGQzAwMDAJIFJPICAgRkZGRTAwMDAJIFJPICAgRkZGRTQwMDAJIFJPICAgRkZGRTgwMDAJIFJPCi0gICAgICBGRkZFQzAwMAkgUk8gICBGRkZGMDAwMAkgUk8gICBGRkZGNDAwMAkgUk8gICBGRkZGODAwMCBFICAgICAgRkZGRkMwMDAKLQotICAgIFRoZSBzYW1lIGJ1ZyBzZWVtcyB0byBiZSBpbiBkcml2ZXJzL210ZC9jZmlfZmxhc2guYzpmbGFzaF9pbml0KCkgYW5kIG1hbnkKLSAgICBib2FyZCBCU1BzIGFzIHdlbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLQotY29tbWl0IGExYzhhNzE5MjYyMTUxZjk3MTE5ZTc2MTY2MDQzZWUzZGEzZjk3YjIKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBGZWIgNiAxNDozMDo0MCAyMDA5IC0wNjAwCi0KLSAgICA4Nnh4OiBVcGRhdGUgQ1BVIGluZm8gb3V0cHV0IG9uIGJvb3R1cAotCi0gICAgLSBVcGRhdGUgc3R5bGUgb2YgODZ4eCBDUFUgaW5mb3JtYXRpb24gb24gYm9vdCB0byBtb3JlIGNsb3NlbHkKLSAgICAgIG1hdGNoIDg1eHggYm9hcmRzCi0gICAgLSBGaXggZGV0ZWN0aW9uIG9mIDg2NDEvODY0MUQKLSAgICAtIFVzZSBzdHJtaHooKSB0byBkaXNwbGF5IGZyZXF1ZW5jaWVzCi0gICAgLSBEaXNwbGF5IEwxIGluZm9ybWF0aW9uCi0gICAgLSBEaXNwbGF5IEwyIGNhY2hlIHNpemUKLSAgICAtIEZpeGVkIENQVS9TVlIgdmVyc2lvbiBvdXRwdXQKLQotICAgID09IEJlZm9yZSA9PQotICAgIEZyZWVzY2FsZSBQb3dlclBDCi0gICAgQ1BVOgotCUNvcmU6IEU2MDAgQ29yZSAwLCBWZXJzaW9uOiAwLjIsICgweDgwMDQwMjAyKQotCVN5c3RlbTogVW5rbm93biwgVmVyc2lvbjogMi4xLCAoMHg4MDkwMDEyMSkKLQlDbG9ja3M6IENQVToxMDY2IE1IeiwgTVBYOiA1MzMgTUh6LCBERFI6IDI2NiBNSHosIExCQzogMTMzIE1IegotCUwyOiBFbmFibGVkCi0gICAgQm9hcmQ6IFgtRVMgWFBlZGl0ZTUxNzAgM1UgVlBYIFNCQwotCi0gICAgPT0gQWZ0ZXIgPT0KLSAgICBDUFU6ICAgODY0MUQsIFZlcnNpb246IDIuMSwgKDB4ODA5MDAxMjEpCi0gICAgQ29yZTogIEU2MDAgQ29yZSAwLCBWZXJzaW9uOiAyLjIsICgweDgwMDQwMjAyKQotICAgIENsb2NrIENvbmZpZ3VyYXRpb246Ci0JICAgQ1BVOjEwNjYuNjY3IE1IeiwgTVBYOjUzMy4zMzMgTUh6Ci0JICAgRERSOjI2Ni42NjcgTUh6ICg1MzMuMzMzIE1UL3MgZGF0YSByYXRlKSwgTEJDOjEzMy4zMzMgTUh6Ci0gICAgTDE6ICAgIEQtY2FjaGUgMzIgS0IgZW5hYmxlZAotCSAgIEktY2FjaGUgMzIgS0IgZW5hYmxlZAotICAgIEwyOiAgICA1MTIgS0IgZW5hYmxlZAotICAgIEJvYXJkOiBYLUVTIFhQZWRpdGU1MTcwIDNVIFZQWCBTQkMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAyMmMwMGY4ZDdkNDU0ZDc3ZTc1OWRmNTg0MTVkMmQzZjNkN2UxNTRjCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUaHUgRmViIDUgMTE6MjU6MjQgMjAwOSAtMDYwMAotCi0gICAgODZ4eDogVXBkYXRlIEdsb2JhbCBVdGlsaXRpZXMgc3RydWN0dXJlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNGVmNjMwZGY3NzNlNDU4MDZkNzAxYmY1ZDI1YzMyODc3OGJiNGNkZQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVGh1IEZlYiA1IDExOjI1OjI1IDIwMDkgLTA2MDAKLQotICAgIDg2eHg6IFJlc2V0IHVwZGF0ZQotCi0gICAgVXBkYXRlIHRoZSA4Nnh4IHJlc2V0IHNlcXVlbmNlIHRvIHRyeSBleGVjdXRpbmcgYSBib2FyZC1zcGVjaWZpYyByZXNldAotICAgIGZ1bmN0aW9uLiAgSWYgdGhlIGJvYXJkLXNwZWNpZmljIHJlc2V0IGlzIG5vdCBpbXBsZW1lbnRlZCBvciBkb2VzIG5vdAotICAgIHN1Y2NlZWQsIHRoZW4gYXNzZXJ0ICNIUkVTRVRfUkVRLiAgVXNpbmcgI0hSRVNFVF9SRVEgaXMgYSBtb3JlIHN0YW5kYXJkCi0gICAgcmVzZXQgcHJvY2VkdXJlIHRoYW4gdGhlIHByZXZpb3VzIG1ldGhvZCBhbmQgYWxsb3dzIGFsbCBib2FyZAotICAgIHBlcmlwaGVyYWxzIHRvIGJlIHJlc2V0IGlmIG5lZWRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlZGYwZTI1MjRhOGM2YTNlOTFjMDA5YzQ5NmEwYWEwYWU4OWNkOGFiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgRmViIDEwIDIzOjUzOjQwIDIwMDkgLTA2MDAKLQotICAgIGZzbC1kZHI6IEFsbG93IHN5c3RlbSB0byBib290IGlmIHdlIGhhdmUgbW9yZSB0aGFuIDRHIG9mIG1lbW9yeQotCi0gICAgUHJldmlvdXNseSBpZiB3ZSA+PTRHIG9mIG1lbW9yeSBhbmQgIUNPTkZJR19QSFlTXzY0QklUIHdlJ2QgcmVwb3J0Ci0gICAgYW4gZXJyb3IgYW5kIGhhbmcuCUluc3RlYWQgb2YgZG9pbmcgdGhhdCBzaW5jZSBERFIgaXMgbWFwcGVkIGluIHRoZQotICAgIGxvd2VzdCBwcmlvcml0eSBMQVdzIHdlIHNldHVwIHRoZSBERFIgY29udHJvbGxlciBhbmQgdGhlIG1heCBhbW91bnQKLSAgICBvZiBtZW1vcnkgd2UgcmVwb3J0IGJhY2sgaXMgd2hhdCB3ZSBjYW4gbWFwIChDT05GSUdfTUFYX01FTV9NQVBQRUQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4ZDk0OWFmZjM4Y2ZiNDM4OGNiZDczODc2ZTc3YmNkMDZkNjAxZjIwCi1BdXRob3I6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMjEgMTc6MTc6MzMgMjAwOSAtMDYwMAotCi0gICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBQMjAyMAotCi0gICAgQWRkZWQgdmFyaW91cyBwMjAyMCBwcm9jZXNzb3Igc3BlY2lmaWMgZGV0YWlsczoKLSAgICAqIFNWUiBmb3IgcDIwMjAsIHAyMDIwRQotICAgICogaW1tYXAgdXBkYXRlcyBmb3IgTEFXcyBhbmQgRERSIG9uIHAyMDIwCi0gICAgKiBMQVcgZGVmaW5lcyByZWxhdGVkIHRvIHAyMDIwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTcmlrYW50aCBTcmluaXZhc2FuIDxzcmlrYW50aC5zcmluaXZhc2FuQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHJhdmlzIFdoZWF0bGV5IDxUcmF2aXMuV2hlYXRsZXlAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgY2I2OWU0ZGU4NzAyZTEwODMyNGUxYzQwMzYzZjMwZWY2ZjJlMjkxOAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEZlYiAxMCAxNzozNjoxNSAyMDA5IC0wNjAwCi0KLSAgICA4NXh4OiBwcmludCBib290IGhlYWRlciBpbmZvIHRvIGRpc3RpbnF1aXNoIDM2LWJpdCBhZGRyIG1hcCBvbiBNUEM4NTcyIERTCi0KLSAgICBBZGRlZCBzb21lIGluZm8gdGhhdCBpcyBwcmludGVkIG91dCB3aGVuIHdlIGJvb3QgdG8gZGlzdGlxdWlzaCBpZiB3ZQotICAgIGJ1aWx0IE1QQzg1NzJEU19jb25maWcgdnMgTVBDODU3MkRTXzM2QklUX2NvbmZpZyBzaW5jZSB0aGV5IGhhdmUKLSAgICBkaWZmZXJlbnQgYWRkcmVzcyBtYXBzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGZlZWRlOGIwNzAxM2IzM2ZjYThkZDJhOTE2YjNhYzg2YmY0ZDRjMGEKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIERlYyA1IDIwOjEwOjIyIDIwMDggLTA2MDAKLQotICAgIEZpeHVwIFNHTUlJIFBIWSBpZHMgaW4gdGhlIGRldmljZSB0cmVlCi0KLSAgICBUaGUgZGV2aWNlIHRyZWUncyBQSFkgYWRkcmVzc2VzIG5lZWQgdG8gYmUgZml4ZWQgdXAgaWYgd2UncmUgdXNpbmcgdGhlCi0gICAgU0dNSUkgUmlzZXIgQ2FyZC4KLQotICAgIFRoZSA4NTcyLCA4NTM2LCBhbmQgODU0NCBEUyBib2FyZHMgd2VyZSBtb2RpZmllZCB0byBjYWxsIHRoaXMgZnVuY3Rpb24uCi0KLSAgICBDb2RlIGlkZWEgdGFrZW4gZnJvbSBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWRjMGNmNjhmOGYxMDEwNDI5OTdkNzUxODgwODFkODUyNmQ3MDVlYQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRmViIDExIDE1OjEwOjMxIDIwMDkgLTA2MDAKLQotICAgIE1ha2Ugc29tZSBtaW5vciB3aGl0ZXNwYWNlIGNoYW5nZXMgdG8gZWxpbWluYXRlIGxpbmUtd3JhcHBpbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDllNTY5ODZhMmI3NGQxOTdmNTFlY2E3MGZhZDdiODM2YjE5MDBjNGQKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAxMSAxNTowNzoyNCAyMDA5IC0wNjAwCi0KLSAgICBBZGQgZXRoX2dldF9kZXZfYnlfaW5kZXgKLQotICAgIFRoaXMgYWxsb3dzIGNvZGUgdG8gaXRlcmF0ZSB0aHJvdWdoIHRoZSBldGhlcm5ldCBkZXZpY2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNjczMDUxMjBhYWYyNjhhNjE0MDEyNTM0NjY3ODE2NmQxNGYxZjQ3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gRmViIDkgMjI6MDM6MDQgMjAwOSAtMDYwMAotCi0gICAgODV4eDogRml4IGJ1ZyBpbiBkZXZpY2UgdHJlZSBzZXR1cCBpbiAzNi1iaXQgcGh5c2ljYWwgY29uZmcKLQotICAgIEluIHRoZSAzNi1iaXQgcGh5c2ljYWwgY29uZmlnIGZvciBNUEM4NTcyRFMgd2hlbiBuZWVkIHRoZSBzdGFydCBhZGRyZXNzCi0gICAgb2YgbWVtb3J5IGFuZCBpdCBzaXplIHRvIGJlIGtlcHQgaW4gcGh5c18qX3QgaW5zdGVhZCBvZiBhIHVsb25nIHNpbmNlCi0gICAgd2Ugc3VwcG9ydCA+NEcgb2YgbWVtb3J5IGluIHRoZSBjb25maWcgYW5kIHVsb25nIGNhbnQgcmVwcmVzZW50IHRoYXQuCi0gICAgT3RoZXJ3aXNlIHdlIGVuZCB1cCBzZWVpbmcgdGhlIG1lbW9yeSBub2RlIGluIHRoZSBkZXZpY2UgdHJlZSByZXBvcnRpbmcKLSAgICBiYWNrIHdlIGhhdmUgbWVtb3J5IHN0YXJ0aW5nIEAgMCBhbmQgb2Ygc2l6ZSAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGFkOTdkY2UxODQ0NWZmMDViZjMyNjA5NGU2OTFhMDFhYTk1YWE4ZGMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBGZWIgOSAyMjowMzowNSAyMDA5IC0wNjAwCi0KLSAgICA4NXh4OiBGaXggYWRkcmVzcyBtYXAgZm9yIDM2LWJpdCBjb25maWcgb2YgTVBDODU3MkRTCi0KLSAgICBXaGVuIHdlIGludHJvZHVjZWQgdGhlIDM2LWJpdCBjb25maWcgb2YgdGhlIE1QQzg1NzJEUyBib2FyZCB3ZSBoYWQgdGhlCi0gICAgd3JvbmcgUENJIE1FTSBidXMgYWRkcmVzcyBtYXAuICBBZGRpdGlvbmFsbHksIHRoZSBjaGFuZ2UgdG8gdGhlIGFkZHJlc3MKLSAgICBtYXAgZXhwb3NlcyBhIHNtYWxsIGlzc3VlIGluIG91ciBkdW1teSByZWFkIG9uIHRoZSBVTEkgYnVzLiAgV2UgbmVlZAotICAgIHRvIHVzZSB0aGUgbmV3IG1hcHBpbmcgZnVuY3Rpb25zIHRvIGhhbmRsZSB0aGF0IHJlYWQgcHJvcGVybHkgaW4gdGhlCi0gICAgMzYtYml0IGNvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmODUyM2NiMDgxNWIyZDNkMmQ3ODBiN2Q0OWNhNjE0MTA1NTU1ZjU4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgRmViIDYgMDk6NTY6MzUgMjAwOSAtMDYwMAotCi0gICAgODV4eDogRml4IGhvdyB3ZSBtYXAgRERSIG1lbW9yeQotCi0gICAgUHJldmlvdXNseSB3ZSBvbmx5IGFsbG93ZWQgcG93ZXItb2YtdHdvIG1lbW9yeSBzaXplcyBhbmQgZGlkbnQKLSAgICBoYW5kbGUgPjJHIG9mIG1lbW9yeS4gIE5vdyB3ZSB3aWxsIG1hcCB1cCB0byBDT05GSUdfTUFYX01FTV9NQVBQRUQKLSAgICBhbmQgc2hvdWxkIHByb3Blcmx5IGhhbmRsZSBhbnkgc2l6ZSB0aGF0IHdlIGNhbiBtYWtlIGluIHRoZSBUTEJzCi0gICAgd2UgaGF2ZSBhdmFpbGFibGUgdG8gdXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxNTQyZmJkZWVjMGQxZTJhNmRmMTMxODlkZjhkY2IxY2U4ODAyYmUzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgRmViIDYgMDk6NTY6MzQgMjAwOSAtMDYwMAotCi0gICAgZnNsLWRkcjogaWdub3JlIG1lbWN0bF9pbnRsdl9jdGwgc2V0dGluZyBpZiBvbmx5IG9uZSBERFIgY29udHJvbGxlcgotCi0gICAgSWYgd2Ugb25seSBoYXZlIG9uZSBjb250cm9sbGVyIHdlIGNhbiBjb21wbGV0ZWx5IGlnbm9yZSBob3cKLSAgICBtZW1jdGxfaW50bHZfY3RsIGlzIHNldC4gIE90aGVyd2lzZSBvdGhlciBsZXZlbHMgb2YgY29kZSBnZXQgY29uZnVzZWQKLSAgICBhbmQgdGhpbmsgd2UgaGF2ZSB0d2ljZSBhcyBtdWNoIG1lbW9yeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiMjlkZWUzYzkwNmU5ZGFhZjZiYWY3NzcyZDJlMTVlMjZiODYzNmI4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgRmViIDQgMDk6MzU6NTcgMjAwOSAtMDYwMAotCi0gICAgODV4eDogRm9ybWF0IGNwdSBmcmVxIHByaW50aW5nIHRvIGhhbmRsZSA4IGNvcmVzCi0KLSAgICBPbmx5IHByaW50IDQgY3B1IGZyZXEgcGVyIGxpbmUuICBUaGlzIHdheSB3aGVuIHdlIGhhdmUgOCBjb3JlcyBpdHMgYQotICAgIGJpdCBtb3JlIHJlYWRhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDk3MDRmOWNhZjUzZjVjYWU1NDdkOGM1ZTFhZTk0YWE0ZTU3YjE2MGYKLUF1dGhvcjogQWJyYWhhbSwgVGhvbWFzIDx0LWFicmFoYW1AdGkuY29tPgotRGF0ZToJVHVlIE9jdCAyOCAxNjo1MTozMSAyMDA4ICswNTMwCi0KLSAgICBVU0I6IFJlbW92ZSBMVU4gbnVtYmVyIGZyb20gQ0RCCi0KLSAgICBUaGUgTFVOIG51bWJlciBpcyBub3QgcGFydCBvZiB0aGUgQ29tbWFuZCBEZXNjcmlwdG9yIEJsb2NrIChDREIpIGZvciBzY3NpIGlucXVpcnksIHJlcXVlc3Qgc2Vuc2UsIHRlc3QgdW5pdCByZWFkeSwgcmVhZCBjYXBhY2l0eSBhbmQgcmVhZDEwIGNvbW1hbmRzLiBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIExVTiBudW1iZXIgaW5mb3JtYXRpb24gZnJvbSB0aGUgQ0RCLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBmM2MwZGU2MzYyNTJmM2ExODY1NGM4ZjljNjM3MGE5NTc0YTdlNzU1Ci1BdXRob3I6IEF0aW4gTWFsYXZpeWEgPGF0aW4ubWFsYXZpeWFAZ21haWwuY29tPgotRGF0ZToJVHVlIEZlYiAzIDE1OjE3OjEwIDIwMDkgLTA1MDAKLQotICAgIEFkZGVkIHVzYnR0eV9jb25maWd1cmVkKCkgY2hlY2suIEZpeGVkIGF0dHJpYnV0ZShwYWNrZWQpIHdhcm5pbmdzLgotCi0gICAgVjM6IEZpeGVkIGxpbmUtd3JhcCBwcm9ibGVtIGR1ZSB0byB1c2VyIGVycm9yIGluIG1haWwhCi0KLSAgICBBZGRlZCB1c2JfY29uZmlndXJlZCgpIGNoZWNrcyBpbiB1c2J0dHlfcHV0cygpIGFuZCB1c2J0dHlfcHV0YygpIHRvIGdldCBhcm91bmQgYSBoYW5nCi0gICAgd2hlbiB1c2IgaXMgbm90IGNvbm5lY3RlZCBhbmQgdGhlIHVzZXIgaGFzIHNldCB1cCBtdWx0aS1pbyAoc2V0ZW52IHN0ZG91dCBzZXJpYWwsdXNidHR5IGV0YykuCi0gICAgR290IHJpZCBvZiByZWR1bmRhbnQgX19hdHRyaWJ1dGVfXygocGFja2VkKSkgZGlyZWN0aXZlcyB0aGF0IHdlcmUgY2F1c2luZyB3YXJuaW5ncyBmcm9tIGdjYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEF0aW4gTWFsYXZpeWEgPGF0aW4ubWFsYXZpeWFAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZTdkZTE4YWZlOGVjZjk2YTUxZWY5ODFkMDYwNjZlZWI2YjEyNTRlNwotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglGcmkgRmViIDEzIDA5OjIzOjM2IDIwMDkgKzAxMDAKLQotICAgIGkuTVgzMTogU3RhcnQgdGhlIEkyQyBjbG9jayBvbiBkcml2ZXIgaW5pdGlhbGlzYXRpb24KLQotICAgIGkuTVgzMSBwb3dlcnMgb24gd2l0aCBtb3N0IGNsb2NrcyBydW5uaW5nLCBzbywgYWZ0ZXIgYSBwb3dlciBvbiB0aGlzIGV4cGxpY2l0Ci0gICAgY2xvY2sgc3RhcnQgdXAgaXMgbm90IHJlcXVpcmVkLiBIb3dldmVyLCBhcyBMaW51eCBib290cyBpdCBkaXNhYmxlcyBtb3N0IGNsb2NrcwotICAgIHRvIHNhdmUgcG93ZXIuIFRoaXMgaW5jbHVkZXMgdGhlIEkyQyBjbG9jay4gSWYgd2UgdGhlbiBzb2Z0IHJlYm9vdCBmcm9tIExpbnV4Ci0gICAgdGhlIEkyQyBjbG9jayBzdGF5cyBvZmYuIFRoaXMgYnJlYWtzIHRoZSBwaHljb3JlLCB3aGljaCBoYXMgaXRzIGVudmlyb25tZW50IGluCi0gICAgSTJDIEVFUFJPTS4gRml4IHRoZSBwcm9ibGVtIGJ5IGV4cGxpY2l0bHkgc3RhcnRpbmcgdGhlIGNsb2NrIGluIEkyQyBkcml2ZXIKLSAgICBpbml0aWFsaXNhdGlvbiByb3V0aW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIEFjay1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDE1MjA4YWM5ZWFlMWMzNDBjNGJjMTFmNzBjYmY1YzlkYTc4YTU3YmEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEZlYiAxMSAyMDozNjoxNCAyMDA5IC0wNTAwCi0KLSAgICBpMmMuaDogZHJvcCBpMmNfcmVnX3tyZWFkLCB3cml0ZX0gaGFjayBmb3IgQmxhY2tmaW4gcGFydHMKLQotICAgIFRoZSBCbGFja2ZpbiBpMmMgZHJpdmVyIGhhcyBiZWVuIHJld3JpdHRlbiB0aHVzIHRoZSBzcGVjaWFsIGlmZGVmcyBpbiB0aGUKLSAgICBjb21tb24gY29kZSBhcmUgbm8gbG9uZ2VyIG5lZWRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGMyZDliZWZhMGI0Njk1Yjg5NDc2ZmI1ZDI1OTc0MmMwOWFmZTI0M2YKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgRmViIDEyIDA4OjA4OjU0IDIwMDkgKzAxMDAKLQotICAgIDgyeHgsIG1nY29nZTogZml4IGNvbXBpbGUgZXJyb3IKLQotICAgIFdpdGggYWN0dWFsIHUtYm9vdCBjb21waWxpbmcgdGhlIG1nY29nZSBwb3J0IGZhaWxzLCBiZWNhdXNlCi0gICAgc2luY2UgY29tbWl0IGJhNzA1YjViMWE5N2I0NzM4OGVkNDg4NThiZWY2YmY3YjZiZmNkNTYgaXQgaXMKLSAgICBuZWNlc3NhcnkgdG8gZGVmaW5lIENPTkZJR19ORVRfTVVMVEkuCi0KLSAgICBTZWVtcyB0byBtZSB0aGUgbWdjb2dlIHBvcnQgaXMgdGhlIG9ubHkgYWN0dWFsIGV4aXN0aW5nIDgyNjAKLSAgICBwb3J0IHdobyB1c2VzIENPTkZJR19FVEhFUl9PTl9TQ0MsIHNvIG5vIG90aGVyIDgyNjAgcG9ydCBuZWVkZWQKLSAgICB0byBiZSBmaXhlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgOWNhY2Y0ZmM0MDM1ZWFiZTlkOWFlMmE5YTE4OGM1MWE4MDI3YzkxZQotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJTW9uIEZlYiA5IDA4OjE4OjM0IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIFJFQURNRSBlbnRyeSBmb3IgQ09ORklHX1BDSV9ESVNBQkxFX1BDSUUKLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzM2OWYwZTM4NGUyYTgzMWJlMTNhNzc3M2E1ODI0MmM5MTczZmE5YwotQXV0aG9yOiBDYXJvbHluIFNtaXRoIDxjYXJvbHluLnNtaXRoQHRla3Ryb25peC5jb20+Ci1EYXRlOglUaHUgRmViIDEyIDA2OjEzOjQ0IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogRml4IGluaXRpYWxpemF0aW9uIG9mIHRoZSBTRFJBTV9DT0RUIHJlZ2lzdGVyCi0KLSAgICBUaGlzIGZpeGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiB0aGUgU0RSQU1fQ09EVCByZWdpc3RlciBpbiB0aGUgcHBjNHh4IEREUjIKLSAgICBpbml0aWFsaXphdGlvbiBjb2RlLiBJdCBhbHNvIHJlbW92ZXMgdXNlIG9mIHRoZSBTRFJBTV9DT0RUX0ZFRURCQUNLX1JDVl9TSU5HTEVfRU5ECi0gICAgYW5kIFNEUkFNX0NPRFRfRkVFREJBQ0tfRFJWX1NJTkdMRV9FTkQgI2RlZmluZSdzIHNpbmNlIHRoZXkgYXJlIHJlc2VydmVkIGJpdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBDYXJvbHluIFNtaXRoIDxjYXJvbHluLnNtaXRoQHRla3Ryb25peC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2VmMGVmYWYyZmE1NWQxZjI1MDY2Y2ZiMDJiZDk4NGMyN2Y5Y2EzMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDExIDA5OjI5OjMzIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBib2FyZF9ldGhfaW5pdCgpIHZzIGNwdV9ldGhfaW5pdCgpIG9uIEFNQ0MgYm9hcmRzCi0KLSAgICBTb21lIEFNQ0MgZXZhbCBib2FyZHMgZG8gaGF2ZSBhIGJvYXJkX2V0aF9pbml0KCkgZnVuY3Rpb24gY2FsbGluZwotICAgIHBjaV9ldGhfaW5pdCgpLiBUaGVzZSBib2FyZHMgbmVlZCB0byBjYWxsIGNwdV9ldGhfaW5pdCgpIGV4cGxpY2l0bHkgbm93Ci0gICAgd2l0aCB0aGUgbmV3IGV0aF9pbml0IHJld29yay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGM2NDUwMTJhZWZlYmIzMDFlNjkwN2QxNDhjNmM4ZWZhY2FjMDQ5ZDQKLUF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+Ci1EYXRlOglNb24gRmViIDkgMTM6MTg6MTIgMjAwOSAtMDgwMAotCi0gICAgcHBjNHh4OiBBdXRvY2FsaWJyYXRpb24gY2FuIHNldCBSRENDIHRvIG92ZXIgYWdncmVzc2l2ZSB2YWx1ZS4KLQotICAgIFRoZSBjcml0ZXJpYSBvZiB0aGUgQU1DQyBTRFJBTSBDb250cm9sbGVyIEREUiBhdXRvY2FsaWJyYXRpb24KLSAgICBVLUJvb3QgY29kZSBpcyB0byBwaWNrIHRoZSBsYXJnZXN0IHBhc3Npbmcgd3JpdGUvcmVhZC9jb21wYXJlCi0gICAgd2luZG93IHRoYXQgYWxzbyBoYXMgdGhlIHNtYWxsZXN0IFNEUkFNX1JEQ0MuW1JEU1NdIFJlYWQgU2FtcGxlCi0gICAgQ3ljbGUgU2VsZWN0IHZhbHVlLgotCi0gICAgT24gc29tZSBLaWxhdWVhIGJvYXJkcyB0aGUgRERSIGF1dG9jYWxpYnJhdGlvbiBhbGdvcml0aG0gY2FuCi0gICAgZmluZCBhIGxhcmdlIHBhc3Npbmcgd3JpdGUvcmVhZC9jb21wYXJlIHdpbmRvdyB3aXRoIGEgc21hbGwKLSAgICBTRFJBTV9SRENDLltSRFNTXSBhZ2dyZXNzaXZlIHZhbHVlIG9mIFJlYWQgU2FtcGxlIEN5Y2xlIFNlbGVjdAotICAgIHZhbHVlICJUMSBTYW1wbGUiLgotCi0gICAgVGhpcyBTRFJBTV9SRENDLltSRFNTXSBSZWFkIFNhbXBsZSBDeWNsZSBTZWxlY3QgdmFsdWUgb2YKLSAgICAiVDEgU2FtcGxlIiBwcm92ZXMgdG8gYmUgdG8gYWdncmVzc2l2ZSB3aGVuIGxhdGVyIG9uIFUtQm9vdAotICAgIHJlbG9jYXRlcyBpbnRvIEREUiBtZW1vcnkgYW5kIGV4ZWN1dGVzLgotCi0gICAgVGhlIG1lbW9yeSB0cmFjZXMgb24gdGhlIEtpbGF1ZWEgYm9hcmQgYXJlIHNob3J0IHNvIG9uIHNvbWUKLSAgICBLaWxhdWVhIGJvYXJkcyB0aGUgU0RSQU1fUkRDQy5bUkRTU10gUmVhZCBTYW1wbGUgQ3ljbGUgU2VsZWN0Ci0gICAgdmFsdWUgb2YgIlQxIFNhbXBsZSIgc2hvd3MgdXAgYXMgYSBwb3RlbnRpYWxseSB2YWxpZCB2YWx1ZSBmb3IKLSAgICB0aGUgRERSIGF1dG9jYWxpYnJhdGlpb24gYWxnb3JpdGhtLgotCi0gICAgVGhlIGZpeCBpcyB0byBkZWZpbmUgYSB3ZWFrIGRlZmF1bHQgZnVuY3Rpb24gd2hpY2ggcHJvdmlkZXMKLSAgICB0aGUgbWluaW11bSBTRFJBTV9SRENDLltSRFNTXSBSZWFkIFNhbXBsZSBDeWNsZSBTZWxlY3QgdmFsdWUKLSAgICB0byBhY2NlcHQgZm9yIEREUiBhdXRvY2FsaWJyYXRpb24uCVRoZSBkZWZhdWx0IHdpbGwgYmUgdGhlCi0gICAgIlQyIFNhbXBsZSIgdmFsdWUuCUEgYm9hcmQgZGV2ZWxvcGVyIHdobyBoYXMgYSB3ZWxsIGRlZmluZWQKLSAgICBib2FyZCBhbmQgY2hvb3NlcyB0byBiZSBtb3JlIGFnZ3Jlc3NpdmUgY2FuIGFsd2F5cyBwcm92aWRlCi0gICAgdGhlaXIgb3duIGJvYXJkIHNwZWNpZmljIHN0cmluZyBmdW5jdGlvbiB3aXRoIHRoZSBtb3JlCi0gICAgYWdncmVzc2l2ZSAiVDEgU2FtcGxlIiB2YWx1ZSBvciBzdGljayB3aXRoIHRoZSBkZWZhdWx0Ci0gICAgbWluaW11bSBTRFJBTV9SRENDLltSRFNTXSB2YWx1ZSBvZiAiVDIiLgotCi0gICAgQWxzbyBwdXQgaW4gYSBhdXRvY2FsaWJyYXRpb24gbG9vcCBmaXggZm9yIGNhc2Ugd2hlcmUgY3VycmVudAotICAgIHdyaXRlL3JlYWQvY29tcGFyZSBwYXNzaW5nIHdpbmRvdyBzaXplIGlzIHRoZSBzYW1lIGFzIGEgcHJpb3IKLSAgICB3aW5kb3cgc2l6ZSwgdGhlbiBpbiB0aGlzIGNhc2UgY2hvb3NlIHRoZSB3cml0ZS9yZWFkL2NvbXBhcmUKLSAgICByZXN1bHQgdGhhdCBoYXMgdGhlIGFzc29jaWF0ZWQgc21hbGxlc3QgUkRDQyBULVNhbXBsZSB2YWx1ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDJlZGU4NzlmY2I2NzQ3MDUyNDg0N2JiNGZjODk3MjY1MWJiNDYxODQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEZlYiAxMSAwOTozNzoxMiAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIHdpdGggQ09ORklHX01BWF9NRU1fTUFQUEVEIGluIGluY2x1ZGUvYXNtLXBwYy9jb25maWcuaAotCi0gICAgQ09ORklHX1NEUkFNX1BQQzR4eF9JQk1fRERSMiBpcyBub3Qgc2V0IHdoZW4gaW5jbHVkZS9hc20tcHBjL2NvbmZpZy5oIGlzCi0gICAgaW5jbHVkZWQuIFNvIGZvciBrYXRtYWksIENPTkZJR19NQVhfTUVNX01BUFBFRCB3aWxsIGdldCBzZXQgdG8gMjU2TUIuCi0KLSAgICBJdCBtYWtlcyBwZXJmZWN0IHNlbnNlIHRvIHNldCBDT05GSUdfTUFYX01FTV9NQVBQRUQgdG8gMkdCIGZvciBhbGwgUFBDNHh4Ci0gICAgYm9hcmRzIHJpZ2h0IG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGYxNWM2NTE1ZmMyM2Y4M2M1MWYzZGUyNzJjYTIzZDg2YjgwZTgxYjEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgMTIgMDA6MDg6MzkgMjAwOSArMDEwMAotCi0gICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZmM1NmI5MDdkOTkzMjYwYjllYmRiMTM3YWY2NmZlNjk2MzVhZTllCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgSmFuIDMwIDE2OjM2OjQwIDIwMDkgLTA2MDAKLQotICAgIEFkZCBmZWF0dXJlLXJlbW92YWwtc2NoZWR1bGUudHh0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgMjU1ZDI4ZTE2NDJlOGZjMzJhNjc1MzIyNmJlMWE5NmI0ODFjZTExMQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMTAgMDk6MzI6MzggMjAwOSArMDEwMAotCi0gICAgOHh4IHNlcmlhbCwgc21jOiBDb2RpbmctU3R5bGUgY2xlYW51cCBzZXJpYWwgU01DIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAyYjNmMTJjMjE0MzQ2NTA4Y2FlM2YxMjQ1ODA4YzFjYTU0YzgxZmRkCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAxMCAwOTozMTo0NyAyMDA5ICswMTAwCi0KLSAgICA4eHggc2VyaWFsLCBzbWM6IGFkZCBjb25maWd1cmFibGUgU01DIFJ4IGJ1ZmZlciBsZW4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gQ09ORklHX1NZU19TTUNfUlhCVUZMRU4uCi0gICAgV2l0aCB0aGlzIG9wdGlvbiBpdCBpcyBwb3NzaWJsZSB0byBhbGxvdyB0aGUgcmVjZWl2ZQotICAgIGJ1ZmZlciBmb3IgdGhlIFNNQyBvbiA4eHggdG8gYmUgZ3JlYXRlciB0aGVuIDEuIEluIGNhc2UKLSAgICBDT05GSUdfU1lTX1NNQ19SWEJVRkxFTiA9PSAxIHRoaXMgZHJpdmVyIHdvcmtzIGFzIHRoZQotICAgIG9sZCB2ZXJzaW9uLgotCi0gICAgV2hlbiBkZWZpbmluZyBDT05GSUdfU1lTX1NNQ19SWEJVRkxFTiBhbHNvCi0gICAgQ09ORklHX1NZU19NQVhJRExFIG11c3QgYmUgZGVmaW5lZCB0byBzZXR1cCB0aGUgbWF4aW11bQotICAgIGlkbGUgdGltZW91dCBmb3IgdGhlIFNNQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgZTkxNWY4YmI3M2Q3NDE3OGJjMjFkM2E0NTc5NTk4ODNiMWFmZDFjMAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgRmViIDUgMjE6MDQ6MzYgMjAwOSAtMDUwMAotCi0gICAgY29tbW9uL3todXNoLCBrZ2RiLCBzZXJpYWx9LmM6IGJ1aWxkIGJ5IENPQkpTLSQoLi4uKSBpbiBNYWtlZmlsZQotCi0gICAgTW92ZSBnbG9iYWwgJyNpZmRlZiBDT05GSUdfeHh4IC4uLi4gI2VuZGlmJyBvdXQgb2YgdGhlIC5jIGZpbGVzIGFuZCBpbnRvCi0gICAgdGhlIENPQkpTLSQoQ09ORklHX3h4eCkgaW4gdGhlIE1ha2VmaWxlLiAgQWxzbyBkZWxldGUgdW51c2VkIHZhciBpbiBrZ2RiCi0gICAgY29kZSBpbiB0aGUgcHJvY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGFiNzZlOTg0OGExZjRkYjY0ZDE0MjMzNzQxZDczOWEzYjMzNjBjOTMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEZlYiA1IDIxOjA0OjUwIDIwMDkgLTA1MDAKLQotICAgIGJ6aXAyOiBtb3ZlIGlmZGVmIGhhbmRsaW5nIHRvIE1ha2VmaWxlIENPQkpTLSQoLi4uKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYWUwYjA1ZGYwNGUxY2M2NWM1YWQxOWNjZDM2MmY0YmU4MmRmNzMxNgotQXV0aG9yOiBKZXJyeSBWYW4gQmFyZW4gPGd2Yi51Ym9vdEBnbWFpbC5jb20+Ci1EYXRlOglUaHUgRmViIDUgMjI6MTg6MDIgMjAwOSAtMDUwMAotCi0gICAgRml4IHdoaXRlc3BhY2UgZGFtYWdlOiBkb3VibGUgc3BhY2UgY2hhbmdlZCB0byBhIHRhYgotCi0gICAgQXQgc29tZSBwb2ludCBhbiBpbnRlbnRpb25hbCBkb3VibGUgc3BhY2UgYXQgdGhlIGVuZCBvZiB0aGUgc2VudGVuY2UKLSAgICBnb3QgY2hhbmdlZCBpbnRvIGEgdGFiIGluIHRoZSBHUEwgaGVhZGVyIGxpbmU6Ci0gICAgICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgZGFtYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDRmOTc1Njc4ZGU5OTViNTU3NDlkNWU4NDU5MGMyNjg5NzJhN2M4MzUKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUdWUgRmViIDEwIDA5OjUzOjI5IDIwMDkgKzAxMDAKLQotICAgIGNmaTogbWFrZSBmbGFzaF9nZXRfaW5mbygpIG5vbiBzdGF0aWMKLQotICAgIElmIG9uIHlvdXIgYm9hcmQgaXMgbW9yZSB0aGFuIG9uZSBmbGFzaCwgeW91IG11c3Qga25vdwotICAgIHRoZSBzaXplIG9mIGV2ZXJ5IHNpbmdsZSBmbGFzaCwgZm9yIGV4YW1wbGUsIGZvciB1cGRhdGluZwotICAgIHRoZSBEVFMgYmVmb3JlIGJvb3RpbmcgTGludXguIFNvIG1ha2UgdGhpcyBmdW5jdGlvbgotICAgIGZsYXNoX2dldF9pbmZvKCkgZXh0ZXJuLCBhbmQgeW91IGNhbiBoYXZlIGFsbCBpbmZvCi0gICAgYWJvdXQgeW91ciBmbGFzaGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODYzMjFmYzExMjhjOTNhMTBhYzRhZmI5ZDMxN2IwZGY4ZWNlMGY5ZQotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJVGh1IEZlYiA1IDIzOjU4OjI1IDIwMDkgLTA4MDAKLQotICAgIG5ldDogcmVtb3ZlZCBib2FyZC1zcGVjaWZpYyBDT05GSUdzIGZyb20gTVBDNXh4eCBGRUMgZHJpdmVyCi0KLSAgICBBZGRlZCBuZXcgQ09ORklHIG9wdGlvbnMgZm9yIHRoZSB0aHJlZSB0eXBlIG9mIE1BQy1QSFkgaW50ZXJjb25uZWN0IGFuZAotICAgIGFwcGxpZWQgdGhlbSBhbGwgcmVsZXZhbnQgYm9hcmQgY29uZmlnIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNjM4ZWQzZTI5NmU3MGZhYjI4NmQxNTdiN2FkZWRhYWE0YTA5YTQ3NAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgRmViIDUgMjE6MDQ6NDcgMjAwOSAtMDUwMAotCi0gICAgbmV0L3NudHAuYzogbW92ZSBpZmRlZiBpbnRvIE1ha2VmaWxlIENPQkpTLSQoLi4uKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5ZTViZTgyMTRiYTc1MTQzNmU1N2MzYmUwNDRiZjZkY2NiOWE2Njg3Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBGZWIgMyAxODoyNjo0MSAyMDA5IC0wNjAwCi0KLSAgICB0c2VjOiBGaXggYSBidWcgaW4gc29mdC1yZXNldHRpbmcKLQotICAgIFNPRlRfUkVTRVQgbXVzdCBiZSBhc3NlcnRlZCBmb3IgYXQgbGVhc3QgMyBUWCBjbG9ja3MuICBVc3VhbGx5LCB0aGF0J3MgYWJvdXQgMzAKLSAgICBjbG9jayBjeWNsZXMsIHNvIGl0J3MgYmVlbiBtb3N0bHkgd29ya2luZy4JQnV0IHdlIGhhZCBubyBndWFyYW50ZWUsIGFuZCBhdAotICAgIHNsb3dlciBiaXRyYXRlcywgaXQncyBqdXN0IG92ZXIgYSBtaWNyb3NlY29uZCAob3ZlciAxMDAwIGNsb2NrIGN5Y2xlcykuICBUaGlzCi0gICAgZW5mb3JjZXMgYSAyIG1pY3Jvc2Vjb25kIGdhcCBiZXR3ZWVuIGFzc2VydGlvbiBhbmQgZGVhc3NlcnRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDA5ZmNjOGI1ZDg2OTAzYjc2ZTdlNGQxZDg3OWQ2ZjRiY2EyNWMyN2IKLUF1dGhvcjogU2ltb24gTXVudG9uIDxzaW1vbkBuaWRvcmFuLm01ZGF0YS5jb20+Ci1EYXRlOglNb24gRmViIDIgMDk6NDQ6MDggMjAwOSArMDAwMAotCi0gICAgRml4IDEwME1icyBldGhlcm5ldCBvcGVyYXRpb24gb24gc2g3NzYzIGJhc2VkIGJvYXJkcwotCi0gICAgMTAwTWJzIGV0aGVybmV0IGRvZXMgbm90IHdvcmsgb24gc2g3NzYzIGNoaXBzIGR1ZSB0byB0aGUgd3JvbmcgdmFsdWUgYmVpbmcKLSAgICB1c2VkIGluIHRoZSBHRUNNUiByZWdpc3Rlci4gRm9sbG93aW5nIGRpZmYgZml4ZXMgdGhlIHByb2JsZW0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNpbW9uIE11bnRvbgk8c2ltb25Abmlkb3Jhbi5tNWRhdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyYmMyYThmNmRjOWZkZGE0NjUzMTdkYTU5NDc0ZTY1YzI0YTM5OGEyCi1BdXRob3I6IGtzaUBrb2k4Lm5ldCA8a3NpQGtvaTgubmV0PgotRGF0ZToJRnJpIEZlYiA2IDE2OjI3OjU1IDIwMDkgLTA4MDAKLQotICAgIEZpeCBNUEM4MjYwIHdpdGggZXRoZXJuZXQgb24gU0NDCi0KLSAgICBUaGlzIGZpeGVzIE1QQzgyNjAgY29tcGlsYXRpb24gd2l0aCBldGhlcm5ldCBvbiBTQ0MuIFByb2JhYmx5IHdhcyBhCi0gICAgdHlwbyBvciBzb21ldGhpbmcuLi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhZTVkOGY2MTNjZWMxYTZhZjdiZjFmYzljNDJhM2I4NTZmMDIxMDIzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIEphbiAzMCAxMjo1NjoxNSAyMDA5ICswMTAwCi0KLSAgICA4Mnh4IHNlcmlhbCwgc21jOiBDb2RpbmctU3R5bGUgY2xlYW51cCBzZXJpYWwgU01DIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBjOTJmYWM5MWEwNmM2MGY4NzRjNjA1ZTNjYTgwZGQ0MDdjMWNhYWE3Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIEphbiAzMCAxMjo1NTozOCAyMDA5ICswMTAwCi0KLSAgICA4Mnh4IHNlcmlhbCwgc21jOiBhZGQgY29uZmlndXJhYmxlIFNNQyBSeCBidWZmZXIgbGVuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19TWVNfU01DX1JYQlVGTEVOLgotICAgIFdpdGggdGhpcyBvcHRpb24gaXQgaXMgcG9zc2libGUgdG8gYWxsb3cgdGhlIHJlY2VpdmUKLSAgICBidWZmZXIgZm9yIHRoZSBTTUMgb24gODJ4eCB0byBiZSBncmVhdGVyIHRoZW4gMS4gSW4gY2FzZQotICAgIENPTkZJR19TWVNfU01DX1JYQlVGTEVOID09IDEgdGhpcyBkcml2ZXIgd29ya3MgYXMgdGhlCi0gICAgb2xkIHZlcnNpb24uCi0KLSAgICBXaGVuIGRlZmluaW5nIENPTkZJR19TWVNfU01DX1JYQlVGTEVOIGFsc28KLSAgICBDT05GSUdfU1lTX01BWElETEUgbXVzdCBiZSBkZWZpbmVkIHRvIHNldHVwIHRoZSBtYXhpbXVtCi0gICAgaWRsZSB0aW1lb3V0IGZvciB0aGUgU01DLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBiY2VkN2NjZWZhMDg1MTJjNTRhNmQxNDY2NThmZjdkYmMzM2Q1ZGZlCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgRmViIDYgMDg6MDg6MDYgMjAwOSAtMDYwMAotCi0gICAgcHBjOiBGaXggcm9sbCBvdmVyIGJ1ZyBpbiBmbHVzaF9jYWNoZSgpCi0KLSAgICBJZiB3ZSBjYWxsIGZsdXNoX2NhY2hlKDB4ZmZmZmYwMDAsIDB4MTAwMCkgaXQgd291bGQgbmV2ZXIKLSAgICB0ZXJtaW5hdGUgdGhlIGxvb3Agc2luY2UgZW5kID0gMHhmZmZmZmZmZiBhbmQgd2UnZCByb2xsIG92ZXIKLSAgICBvdXIgY291bnRlciBmcm9tIDB4ZmZmZmZlMCB0byAwIChhc3N1bWluZyBhIDMyLWJ5dGUgY2FjaGUgbGluZSkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4N2M5MDYzOTYzNTYxZDNkMDEwNjRiZTM0ZDBjMzA4NTVhNTY1ODdiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgRmViIDUgMjA6NDA6NTggMjAwOSAtMDYwMAotCi0gICAgcHBjOiBNb3ZlIENPTkZJR19NQVhfTUVNX01BUFBFRCB0byBjb21tb24gY29uZmlnLmgKLQotICAgIE1vdmVkIENPTkZJR19NQVhfTUVNX01BUFBFRCB0byB0aGUgYXNtL2NvbmZpZy5oIHNvIGl0cyBrZXB0IGNvbnNpc3RlbnQKLSAgICBiZXR3ZWVuIHRoZSB0d28gY3VycmVudCB1c2VycyAobGliX3BwYy9ib2FyZC5jLCA0NHggU1BEIEREUjIpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDdkNDFjYzNhMTFhMDNjNmQ1NjE0NmQwNTYxNDVkZjczZjQ3ZWI1MAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEZlYiA1IDIwOjQwOjU3IDIwMDkgLTA2MDAKLQotICAgIEFkZCBhbiBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY29uZmlnLmggZm9yIGNvbW1vbiBkZWZpbmVzCi0KLSAgICBXZSBoYXZlIGNvbW1vbiBkZWZpbmVzIHRoYXQgd2UgZHVwbGljYXRlIGluIHZhcmlvdXMgd2F5cy4gIEhhdmluZyBhbgotICAgIGFyY2ggc3BlY2lmaWMgY29uZmlnLmggZ2l2ZXMgdXMgYSBjb21tb24gbG9jYXRpb24gZm9yIHRob3NlIGRlZmluZXMuCi0KLSAgICBFdmVudHVhbGx5IHdlIHNob3VsZCBiZSBhYmxlIHRvIHJlcGxhY2UgdGhpcyB3aGVuIHdlIGhhdmUgcHJvcGVyCi0gICAgS2NvbmZpZyBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDRjNzhkNGE2YzAxNjIxNzIxYjczMjQxOGUxYzZkYTY4NGE1NmJiYjEKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjU2IDIwMDkgLTA2MDAKLQotICAgIG1wYzg2NDFocGNuOiBDaGFuZ2UgUENJIE1FTSBwY2kgYnVzIGFkZHJlc3MKLQotICAgIE5vdyB0aGF0IHRoZSByZXN0IG9mIHUtYm9vdCBjYW4gc3VwcG9ydCBpdCwgY2hhbmdlIHRoZSBQQ0kgYnVzCi0gICAgYWRkcmVzcyBvZiB0aGUgUENJIE1FTSByZWdpb25zIGZyb20gMHg4MDAwMDAwMCB0byAweGMwMDAwMDAwLAotICAgIGFuZCB1c2UgdGhlIHNhbWUgYnVzIGFkZHJlc3MgZm9yIGJvdGggUENJMSBhbmQgUENJMi4gIFRoaXMgd2lsbAotICAgIG1heGltaXplIHRoZSBhbW91bnQgb2YgUENJIGFkZHJlc3Mgc3BhY2UgbGVmdCBvdmVyIHRvIG1hcCBSQU0KLSAgICBvbiBzeXN0ZW1zIHdpdGggbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxNzg1ZGJlZWQ0MzU5OWVlZDFkODg3NTY3M2M5NjkxMmNkNzcwMTQxCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBGZWIgMyAxODoxMDo1NSAyMDA5IC0wNjAwCi0KLSAgICBkcml2ZXJzL2Jsb2NrL2FoY2k6IEZpeCBwY2kgbWFwcGluZyBidWcKLQotICAgIFRoZSBjb2RlIGFzc3VtZXMgdGhhdCB0aGUgcGNpIGJ1cyBhZGRyZXNzIGFuZCB0aGUgdmlydHVhbAotICAgIGFkZHJlc3MgdXNlZCB0byBhY2Nlc3MgYSByZWdpb24gYXJlIHRoZSBzYW1lLCBidXQgdGhleSBtaWdodAotICAgIG5vdCBiZS4gIEZpeCB0aGlzIGFzc3VtcHRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkNTkxYTgwZTc0MDkxZTdhMDY1OGQxNjU3MjFlNmM3ZGUyZWYwYmNkCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBGZWIgMyAxODoxMDo1NCAyMDA5IC0wNjAwCi0KLSAgICBNUEM4NjQxSFBDTjogRW5hYmxlIENPTkZJR19BRERSX01BUAotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDlmNDZmM2JmMDhhYWY3YjFkYjEzMWExMDgyZjFlNjAzYmI3YTk0YgotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgRmViIDMgMTg6MTA6NTMgMjAwOSAtMDYwMAotCi0gICAgbXBjODY0MWhwY246IENsZWFuIHVwIFBDSSBtYXBwaW5nIGNvbmNlcHRzCi0KLSAgICBDbGVhbiB1cCBQQ0kgbWFwcGluZyBjb25jZXB0cyBpbiB0aGUgODY0MSBjb25maWcgLSByZW5hbWUgX0JBU0UKLSAgICB0byBfQlVTLCBhcyBpdCdzIGFjdHVhbGx5IGEgUENJIGJ1cyBhZGRyZXNzLCBzZXBhcmF0ZSB2aXJ0dWFsCi0gICAgYW5kIHBoeXNpY2FsIGFkZHJlc3NlcyBpbnRvIF9WSVJUIGFuZCBfUEhZUywgYW5kIHVzZSBlYWNoCi0gICAgYXBwb3ByaWF0ZWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzkzMTVlNmI0ZjI0NDk4MWRlMGIyZWFhYTI5YTc4MzhhMTY1YjQ5NAotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgRmViIDMgMTg6MTA6NTIgMjAwOSAtMDYwMAotCi0gICAgbXBjODZ4eDogQWRkIHN1cHBvcnQgdG8gcG9wdWxhdGUgYWRkciBtYXAgYmFzZWQgb24gQkFUcwotCi0gICAgSWYgQ09ORklHX0FERFJfTUFQIGlzIGVuYWJsZWQsIHVwZGF0ZSB0aGUgYWRkcmVzcyBtYXAKLSAgICB3aGVuZXZlciB3ZSB3cml0ZSBhIGJhdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGQzNWFlNWE5Mzg2NzliZDdlMTgxNjdmYWY3OWQwZmIzYzY2MzliNTEKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjUxIDIwMDkgLTA2MDAKLQotICAgIHBvd2VycGM6IE1vdmUgZHVwbGljYXRlZCBCQVQgZGVmaW5lcyB0byBtbXUuaAotCi0gICAgVGhlIEJBVCBmaWVsZHMgYXJlIGFyY2hpdGVjdGVkOyB0aGVyZSdzIG5vIG5lZWQgZm9yIHRoZXNlIHRvIGJlIGluCi0gICAgY3B1LXNwZWNpZmljIGZpbGVzLiAgRHJvcCB0aGUgZHVwbGljYXRpb24gYW5kIG1vdmUgdGhlc2UgdG8KLSAgICBpbmNsdWRlL2FzbS1wcGMvbW11LmguICBBbHNvLCByZW1vdmUgdGhlIEJMX3h4eCBkZWZpbmVzIHRoYXQgd2VyZSBvbmx5Ci0gICAgdXNlZCBieSB0aGUgYWxhc2thIGJvYXJkLCBhbmQgc3dpdGNoIHRvIHVzaW5nIHRoZSBCQVRVX0JMX3h4eCBkZWZpbmVzCi0gICAgdXNlZCBieSBhbGwgdGhlIG90aGVyIGJvYXJkcy4gIFRoZSBCTF8gZGVmaW5lcyBwcmV2aW91c2x5IGluIHVzZQotICAgIGhhZCB0byBiZSBzaGlmdGVkIGludG8gdGhlIHByb3BlciBwb3NpdGlvbiBmb3IgdXNlLCB3aGljaCB3YXMgaW5lZmZpY2llbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2ZTYxZmFlNGQzNjBhMTM4MGI2M2U3ZDAwN2IzMTQ3N2UzNjZiY2NlCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBGZWIgMyAxODoxMDo1MCAyMDA5IC0wNjAwCi0KLSAgICBkcml2ZXJzL3BjaTogQ3JlYXRlIHBjaV9tYXBfYmFyIGZ1bmN0aW9uCi0KLSAgICBJdCBpcyBubyBsb25nZXIgYWx3YXlzIHRydWUgdGhhdCB0aGUgcGNpIGJ1cyBhZGRyZXNzIGNhbiBiZQotICAgIHVzZWQgYXMgdGhlIHZpcnR1YWwgYWRkcmVzcyBmb3IgcGNpIGFjY2Vzc2VzLiAgcGNpX21hcF9iYXIoKQotICAgIGlzIGNyZWF0ZWQgdG8gcmV0dXJuIHRoZSB2aXJ0dWFsIGFkZHJlc3MgZm9yIGEgcGNpIHJlZ2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDJlY2NhMzQwMTc3NWIxMjVjM2I5ZmY2NTc2NmJlZmIyMzk4OTQxNGIKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEZlYiAzIDE4OjEwOjQ5IDIwMDkgLTA2MDAKLQotICAgIG1wYzg2NDFocGNuOiBTZXQgdXAgb3V0Ym91bmQgcGNpIHdpbmRvd3MgYmVmb3JlIGluYm91bmQKLQotICAgIEJlY2F1c2UgdGhlIGluYm91bmQgcGNpIHdpbmRvd3MgYXJlIG1hcHBlZCBnZW5lcm91c2x5LCBzZXQgdXAKLSAgICB0aGUgbW9yZSBzcGVjaWZpYyBvdXRib3VuZCB3aW5kb3dzIGZpcnN0LiAgVGhpcyB3YXksIHdoZW4gd2UKLSAgICBzZWFyY2ggdGhlIHBjaSByZWdpb25zIGZvciBzb21ldGhpbmcsIHdlIHdpbGwgaGl0IG9uIHRoZSBtb3JlCi0gICAgc3BlY2lmaWMgcmVnaW9uLiAgVGhpcyBjYW4gYWN0dWFsbHkgYmUgYSBwcm9ibGVtIG9uIHN5c3RlbXMKLSAgICB3aXRoIGxhcmdlIGFtb3VudHMgb2YgUkFNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYjgxYjc3M2VhZDA2ODcxMTRkYzhhODAwZjk5ZWE2ZTUwNDQ0NzczOQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gRmViIDIgMTY6MzQ6NTIgMjAwOSAtMDYwMAotCi0gICAgbXBjODY0MWhwY246IFVzZSBwaHlzaWNhbCBhZGRyZXNzIGluIGZsYXNoIGJhbmtzIGRlZmludGlvbgotCi0gICAgSWYgdGhlIFZBIGFuZCBQQSBvZiB0aGUgZmxhc2ggYXJlbid0IHRoZSBzYW1lLCB0aGUgYmFua3MgbGlzdAotICAgIHNob3VsZCBiZSBpbml0aWFsaXplZCB0byBob2xkIHRoZSBwaHlzaWNhbCBhZGRyZXNzLiAgQ29ycmVjdCB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMGQxOWY2YzhjYmU3MWI5ZTZkOGM2YmQ2NzQyZWQyNTUxZTkxODg3MAotQXV0aG9yOiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLURhdGU6CVR1ZSBGZWIgMTAgMDA6MjI6MzEgMjAwOSArMDEwMAotCi0gICAgcW9uZzogc3VwcG9ydCBmb3IgRGF2ZS9ERU5YIFFvbmdFVkItTElURSBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIERhdmUvREVOWCBRb25nRVZCLUxJVEUgaS5NWDMxLWJhc2VkIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDYyY2JjNDA4ZjUyZmM5YTVlYjg0OWUwYjg4MmM1MDQ3ODBjOWQxODMKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOglNb24gRmViIDkgMTg6NDU6MjggMjAwOSArMDEwMAotCi0gICAgZG5ldDogZHJpdmVyIGZvciBEYXZlIERORVQgZXRoZXJuZXQgY29udHJvbGxlcgotCi0gICAgRHJpdmVyIGZvciBEYXZlIERORVQgZXRoZXJuZXQgY29udHJvbGxlciAodXNlZCBvbiBEYXZlL0RFTlgKLSAgICBRb25nRVZCLUxJVEUgYm9hcmQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyZDQzZTg3M2EyOWNhNDk1OWJhNmEzMGZjN2ZiMzk2ZDNmZDBkY2NmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgRmViIDYgMDk6NDk6MzIgMjAwOSAtMDYwMAotCi0gICAgcGNpOiBnaXZlIHByZWZlcmVuY2UgdG8gbm9uLVBDSV9SRUdJT05fU1lTX01FTU9SWSByZWdpb25zIHdoZW4gbWF0Y2hpbmcKLQotICAgIFdoZW4gd2Ugc2VhcmNoIGZvciBhbiBhZGRyZXNzIG1hdGNoIGluIHBjaV9ob3NlX3twaHlzX3RvX2J1cyxidXNfdG9fcGh5c30KLSAgICB3ZSBzaG91bGQgZ2l2ZSBwcmVmZXJlbmNlIHRvIG1lbW9yeSByZWdpb25zIHRoYXQgYXJlbid0IHN5c3RlbSBtZW1vcnkuCi0KLSAgICBJdHMgcG9zc2libGUgdGhhdCB3ZSBoYXZlIG92ZXIgbWFwcGVkIHN5c3RlbSBtZW1vcnkgaW4gdGhlIHJlZ2lvbnMgYW5kCi0gICAgd2Ugd2FudCB0byBhdm9pZCBkZXBlbmRpbmcgb24gdGhlIG9yZGVyIG9mIHRoZSByZWdpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGZmNGU2NmU5M2MxYWQ0NzY0NGJlM2I0ZmZkNmE0NmUxY2U5YjY2MTIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBGZWIgNiAwOTo0OTozMSAyMDA5IC0wNjAwCi0KLSAgICBwY2k6IFJlbmFtZSBQQ0lfUkVHSU9OX01FTU9SWSB0byBQQ0lfUkVHSU9OX1NZU19NRU1PUlkgZm9yIGNsYXJpdHkKLQotICAgIFRoZSBQQ0lfUkVHSU9OX01FTU9SWSBhbmQgUENJX1JFR0lPTl9NRU0gYXJlIGEgYml0IHRvIHNpbWlsYXIgYW5kCi0gICAgY2FuIGJlIGNvbmZ1c2luZyB3aGVuIHJlYWRpbmcgdGhlIGNvZGUuCi0KLSAgICBSZW5hbWUgUENJX1JFR0lPTl9NRU1PUlkgdG8gUENJX1JFR0lPTl9TWVNfTUVNT1JZIHRvIGNsYXJpZnkgaXRzIHVzZWQKLSAgICBmb3Igc3lzdGVtIG1lbW9yeSBtYXBwaW5nIHB1cnBvc2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDU0ZGM1MTczMjg3MDljMjA0YTljYmY3YTI1M2Q5ZjhlNmM0YjI2ZWMKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOglTdW4gRmViIDggMDA6NTk6NDMgMjAwOSArMDMwMAotCi0gICAgbXgzMTogYWRkIEdQSU8gcmVnaXN0ZXJzIGRlZmluaXRpb25zCi0KLSAgICBBZGRlZCBkZWZpbml0aW9ucyBmb3IgaS5NWDMxIHByb2Nlc3NvciBHUElPIHJlZ2lzdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotCi1jb21taXQgOGRhNjAxMjgwYThhY2JjMzM4NTc4NDc4MGVkMzUxMzBlNTM4MTJmMQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJV2VkIEZlYiA0IDEzOjQ3OjIyIDIwMDkgLTA2MDAKLQotICAgIE5BTkQ6IEFkZCB0aW1lb3V0IGZvciByZXNldCBjb21tYW5kCi0KLSAgICBXaXRob3V0IHRoZSB0aW1lb3V0IHByZXNlbnQgYW4gaW5maW5pdGUgbG9vcCBjYW4gb2NjdXIgaWYgdGhlCi0gICAgTkFORCBkZXZpY2UgaXMgYnJva2VuIG9yIG5vdCBwcmVzZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDEwZGM2YTliZWY3M2Q3ZDRjYjI1YjNmZGUyN2VlOTFmODQ4NGIxMjYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVdlZCBGZWIgNCAxMzozOTo0MCAyMDA5IC0wNjAwCi0KLSAgICBOQU5EOiBTaWxlbmNlIHdhcm5pbmcgd2hlbiBDT05GSUdfU1lTX05BTkRfUVVJRVRfVEVTVAotCi0gICAgQ29tbWl0IGNmYTQ2MGFkZmRlZmNjMzBkMTA0ZTFhOWVlNDQ5OTRlZTM0OWJiN2IgcmVtb3ZlZCBzdXBwb3J0Ci0gICAgZm9yIGRpc2FibGluZyB0aGUgIk5vIE5BTkQgZGV2aWNlIGZvdW5kISEhIiB3YXJuaW5nIHdoZW4KLSAgICBDT05GSUdfU1lTX05BTkRfUVVJRVRfVEVTVCB3YXMgZGVmaW5lZC4gIFRoaXMgcmUtYWRkcyBzdXBwb3J0Ci0gICAgZm9yIHNpbGVuY2luZyB0aGUgd2FybmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhZDA5YWIyZTNhYzI4ZjMwNDM3MmVjZWI0YTVjYjRkMjRlMTAyYTEzCi1BdXRob3I6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci1EYXRlOglNb24gSmFuIDE5IDE2OjMyOjU5IDIwMDkgKzAyMDAKLQotICAgIE5BTkQ6IEZpeGVkIGludmFsaWQgcG9pbnRlcnMgdG8gc3RhdGljIHJlbG9jYXRlZCBjaGlwIG5hbWVzCi0KLSAgICBEZWFyIFdvbGZnYW5nLAotCi0gICAgWW91IGFyZSByaWdodCwgdGhlIHBhdGNoIHdhcyB1Z2x5LgotICAgIFRoZSBuZXcgb25lIHNlZW1zIHRvIGJlIGJldHRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhbGVyaXkgR2x1c2hrb3YgPGd2dkBsc3RlYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlN2RlZWMxYmY2ZmEzYjNhMjFjZDhkMTRmZTJhOTA5YTQyZWZjOWQ4Ci1BdXRob3I6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci1EYXRlOglNb24gRmViIDIgMTg6MjA6MTIgMjAwOSAtMDYwMAotCi0gICAgQVJNOk9NQVAzOlpvb20xOiBBZGQgbmFuZCB1bmxvY2sgb3B0aW9uCi0KLSAgICBFbmFibGUgTkFORF9VTkxPQ0sgb3B0aW9uIGZvciB1bmxvY2tpbmcgbmFuZCBmb3IKLSAgICBlcmFzZS93cml0ZSBvcGVyYXRpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaXNoYW50aCBNZW5vbiA8bm1AdGkuY29tPgotCi1jb21taXQgNWE5NDI3ZGM5Yjg0Mzg3NTlkYjNmNjdhMWU1NDcwNjJmNzZlYjE4ZAotQXV0aG9yOiBkZXJla0BzaWNvbml4LmNvbSA8ZGVyZWtAc2ljb25peC5jb20+Ci1EYXRlOglNb24gSmFuIDI2IDE0OjA4OjE3IDIwMDkgLTA3MDAKLQotICAgIGVudl9uYW5kOiBmaXggZW52IG1lbW9yeSByZWxlYXNlCi0KLSAgICBUaGlzIGZpeGVzIGEgYnVnIHRoYXQgdG1wIGVudmlyb25tZW50IG1lbW9yeSBub3QgYmVpbmcgcmVsZWFzZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXJlayBPdSA8ZG91QHNpY29uaXguY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDVmZDg4Nzc2NDE5ZGY1OWU3ZjM3YmFjMDYzYTIwOTQwOWRkODAxZAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglGcmkgRmViIDYgMTA6Mzc6NDUgMjAwOSArMDEwMAotCi0gICAgQVJNOiByZW1vdmUgdW51c2VkIHZhcmlhYmxlCi0KLSAgICBUaGUgInNpemUiIHZhcmlhYmxlIGluIHN0YXJ0X2FybWJvb3QoKSBpbiBsaWJfYXJtL2JvYXJkLmMgaXMgb25seSByZWFsbHkKLSAgICB1c2VkIGluICIjaWZuZGVmIENPTkZJR19TWVNfTk9fRkxBU0giIGNhc2UsIGFuZCBldmVuIHRoZXJlIGl0IGNhbiBiZQotICAgIGVsaW1pbmF0ZWQgKHRoYW5rcyB0byBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCBmb3IgYSBzdWdnZXN0aW9uLikKLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IDY5ODllNGY1NDZkOTYwYTQwN2RkNTQyNWY4MDBkZmY5NzUxYzgxMzIKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CVRodSBGZWIgNSAwOTozMzo1MCAyMDA5IC0wNTAwCi0KLSAgICBDb2xkZmlyZTogTTUyN3g6IEFkZCBtaXNzaW5nIEdQSU8gcmVnaXN0ZXIgYWRkcmVzcyBkZWZpbmVzCi0KLSAgICBBZGQgbWlzc2luZyBHUElPIHJlZ2lzdGVycyBhZGRyZXNzIGRlZmluaXRpb24gZm9yIENvbGRmaXJlIE01MjcxLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLQotY29tbWl0IGM0ZmY3N2Y1ZTZjM2EwMTYxMGNlOTc0MzRjMGQ1OWFjYjE0NzZmOTUKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMTQ6NDI6NTggMjAwOSAtMDUwMAotCi0gICAgQ29sZGZpcmU6IG1jZm1paTogQWxsb3cgbm9uLWF1dG9uZWdvdGlhdGluZyBQSFlzIHRvIHVzZSBtaWkgY29tbWFuZAotCi0gICAgTW9kaWZpZWQgbWlpX2luaXQgdG8gc3VwcG9ydCBib2FyZHMgd2l0aCBQSFlzIHRoYXQgYXJlIG5vdCBzZXQgdG8KLSAgICBhdXRvbmVnb3RpYXRlLCBidXQgc3RpbGwgd2FudCB0byB1c2UgdS1ib290J3MgbWlpIGNvbW1hbmRzIHRvIHByb2JlCi0gICAgdGhlIHNtaSBidXMuIFN1Y2ggUEhZcyB3aWxsIG5vdCBzZXQgdGhlIEF1dG9uZWdvdGlhdGUtZG9uZSBiaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotCi1jb21taXQgOTJkM2U2ZTBmZmNiYjcyMjRjODMxMDRmOGQ4N2I1YjRiZjM5YTM4ZgotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJRnJpIEphbiAyMyAxMTo0NDozMCAyMDA5IC0wNTAwCi0KLSAgICBDb2xkZmlyZTogQXBwbGllZCBiYXVkcmF0ZSBmb3JtdWxhIG9mIHNlcmlhbF9pbml0IHRvIHNlcmlhbF9zZXRicmcKLQotICAgIEFwcGxpZWQgdGhlIHBhdGNoIGZvciBiYXVkcmF0ZSBkaXZpZGVyIHZhbHVlIHRydW5jYXRpb24gZm9yCi0gICAgc2VyaWFsX2luaXQgdG8gc2VyaWFsX3NldGJyZyBhcyB3ZWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLQotY29tbWl0IDg3MDZlZjM3OGYyZGIxZWY2NWI5YzJmOTA5NTYxZjIzZTNkYzIxNDgKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMTQ6MDc6MDUgMjAwOSAtMDUwMAotCi0gICAgQ29sZGZpcmU6IE01MjcxRVZCOiBCb2FyZCBoZWFkZXIgdXBkYXRlIChkZXBlbmRlbmNpZXMpCi0KLSAgICBDbGVhbnVwIGZvciBNNTI3MUVWQjoKLSAgICBBZGRlZCBjbGFyaWZpY2F0aW9uIG9uIHRoZSB1c2Ugb2YgQ09ORklHX1NZU19DTE9DSy4KLSAgICBNb2RpZmllZCB0byB1c2UgdS1ib290J3MgSFVTSCBwYXJzZXIuCi0gICAgQ2xlYW51cCBvbiBlbnZpcm9ubWVudCBzZXR0aW5ncy4KLSAgICBSZW1vdmVkIGNvbXBpbGVyIHdhcm5pbmcgYnkgZGVmaW5pbmcgQ09ORklHX1NZU19DUzBfKgotCi0gICAgRGVwZW5kZW5jaWVzOgotICAgIEFkZGVkIHRoZSB1c2Ugb2YgQ09ORklHX1NZU19NQ0ZfU1lOQ1IgZm9yIGNsb2NrIG11bHRpcGxpZXIuCi0gICAgVGhpcyBkZXBlbmRzIG9uIGEgcGF0Y2ggdG8gaW5jbHVkZS9hc20tbTY4ay9tNTI3MS5oCi0gICAgdGhhdCBkZWZpbmVzIHRoZSBtdWx0aXBsaWVyIGFuZCBkaXZpZGVyIHJhdGlvcy4KLQotICAgIFJlbW92ZWQgdGhlIGRlZmluaXRpb24gb2YgQ09ORklHX1NZU19GRUNJMkMuCi0gICAgVGhpcyBkZXBlbmRzIG9uIGEgcGF0Y2ggdGhhdCByZW1vdmVzIHRoZSB1c2Ugb2YgaXQgaW4KLSAgICBjcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotCi1jb21taXQgZTBkYjM0NGZhYmZlYjRmOTY0OTg0NmY5NDgzOGY1MTE3MmY2YTFmNgotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJVGh1IEphbiAyOSAxNDozNjowNiAyMDA5IC0wNTAwCi0KLSAgICBDb2xkZmlyZTogTTUyNzE6IEFsbG93IGJvYXJkIGhlYWRlciBmaWxlIHRvIHNwZWNpZnkgY2xvY2sgbXVsdGlwbGllcgotCi0gICAgTTUyNzEgZHluYW1pYyBjbG9jayBtdWx0aXBsaWVyLiBJdCBpcyBjdXJyZW50bHkgZml4ZWQgYXQgMTAwTUh6LgotCi0gICAgQWxsb3cgdGhlIGJvYXJkIGhlYWRlciBmaWxlIHRvIHNldCB0aGVpciBvd24gbXVsdGlwbGllciBhbmQgZGl2aWRlci4KLSAgICBBZGRlZCB0aGUgI2RlZmluZSBmb3IgdGhlIG11bHRpcGxpZXIgYW5kIGRpdmlkZXIgdG8gdGhlIGNwdSBoZWFkZXIgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci0KLWNvbW1pdCBkMWVmMjVkZDgxYzc5ZGNmYWQ1YzJmZjAxNjJiMWJlYTIxZDA0YmMzCi1BdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci1EYXRlOglGcmkgSmFuIDIzIDEwOjQ3OjEzIDIwMDkgLTA1MDAKLQotICAgIENvbGRmaXJlOiBNNTI3MUVWQjogUmVtb3ZlIHVzYWdlIG9mIENPTkZJR19TWVNfRkVDSTJDCi0KLSAgICBEaXNjb250aW51ZSB0aGUgdXNlIG9mIENPTkZJR19TWVNfRkVDSTJDIChvbmx5IHVzZWQgYnkgTTUyNzFFVkIpLgotICAgIFVzZSByZWFkLW1vZGlmeS13cml0ZSB0byBhY3RpdmF0ZSB0aGUgRkVDIHBpbnMgd2l0aG91dCBkaXNhYmxpbmcgSTJDLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLQotY29tbWl0IGVlNzNjYzU5YWI5MDQ5NzZhZjNjMzNiNDU0ZmM4NGY3ODYxOGIyZDEKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMDk6NDU6MzQgMjAwOSAtMDUwMAotCi0gICAgQ29sZGZpcmU6IGNtZF9iZGluZm8gY2xlYW51cAotCi0gICAgQ09ORklHX002OEsgYmRpbmZvIGNsZWFudXA6Ci0KLSAgICBGaXhlZCBjb21waWxlciB3YXJuaW5nIGFib3V0IGJhdWRyYXRlIHByaW50aW5nLgotICAgIGZvcm1hdCAnJWQnIGV4cGVjdHMgdHlwZSAnaW50JywgYnV0IGFyZ3VtZW50IDIgaGFzIHR5cGUgJ2xvbmcgdW5zaWduZWQgaW50Jy4KLQotICAgIEFkZGVkIHByaW50aW5nIG9mICJjcHVmcmVxIgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLQotY29tbWl0IDRmZmMzOTA1MGFhNDZlZDhhM2QyOTczMjI5M2RmZjc2OWU1NGZmZmEKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CUZyaSBKYW4gMjMgMDk6Mjc6MDAgMjAwOSAtMDUwMAotCi0gICAgQ29sZGZpcmU6IEZpeCBoYWxmLWJhdWQgVUFSVCBieSBhZGRpbmcgTTUyNzEgdG8gQ29sZGZpcmUgdjIgY29yZSBsaXN0Ci0KLSAgICBBZGRlZCB0aGUgQ09ORklHX001MjcxIHRvIHRoZSBsaXN0IG9mIENvbGRmaXJlIFYyIHByb2Nlc3Nvci4gVGhpcwotICAgIHdhcyBjYXVzaW5nIHRoZSBidXMgY2xvY2sgKG5vdCBDUFUgY2xvY2spIHRvIGJlIGRlY2xhcmVkIHR3aWNlIGFzCi0gICAgZmFzdCBhcyBpdCBhY3R1YWxseSBpcy4gVGhpcyBjYXVzZXMgVUFSVFMgdG8gb3BlcmF0ZSBhdCBoYWxmIHRoZQotICAgIHNwZWNpZmllZCBiYXVkcmF0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci0KLWNvbW1pdCA1OWQxYmRhN2Y5MmM4YTI4YzNhYmE5NGU0ODA2Mzc0OWQ0MjU5NDlmCi1BdXRob3I6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci1EYXRlOglUdWUgRmViIDMgMTU6MTU6MjEgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBNYWtlIFBDSUUgc3VwcG9ydCBzZWxlY3RhYmxlCi0KLSAgICBPbiBzb21lIHBsYXRmb3JtcyBQQ0lFIHN1cHBvcnQgaXMgbm90IHJlcXVpcmVkLCBidXQgd291bGQgYmUgaW5jbHVkZWQKLSAgICBiZWNhdXNlIHRoZSBjcHUgc3VwcG9ydHMgaXQuIFRvIHJlZHVjZSBmb29wcmludCBpdCBpcyBub3cgY29uZmlndXJhYmxlCi0gICAgdmlhIENPTkZJR19QQ0lfRElTQUJMRV9QQ0lFLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiMTI5ZWZmNWVkZTM5NGNjMWZhZWI2ZGJmNmE5ODdlOTFhYmNlNTUyCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIEZlYiAzIDIyOjEzOjE2IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogT25seSBmaXh1cCBvcGIgYXR0YWNoZWQgVUFSVHMKLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgZmR0IFVBUlQgY2xvY2sgZml4dXAgY29kZSB0bwotICAgIG9ubHkgdG91Y2ggQ1BVIGludGVybmFsIFVBUlRzIG9uIDR4eCBzeXN0ZW1zLgotICAgIE9ubHkgdGhlc2UgVUFSVHMgYXJlIGRlZmluaXRlbHkgY2xvY2tlZCBieSBnZC0+dWFydF9jbGsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0YjdlM2QwNDVjYzgyZjdmN2I2ZjNhMTliNTRhODE0ZGEzNmFjNTJjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBKYW4gMTMgMTE6MDA6MjkgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IG1vdmUgZGVmYXVsdCBib290IFNQSSBDUyB0byBjb21tb24gY29kZQotCi0gICAgTW92ZSB0aGUgZGVmYXVsdCBTUEkgQ1MgdGhhdCB3ZSBib290IGZyb20gaW50byBjb21tb24gY29kZSBzbyB0aGF0IGl0IGNhbgotICAgIGJlIHVzZWQgaW4gb3RoZXIgU1BJIGRyaXZlcnMgYW5kIGVudmlyb25tZW50IHNldHRpbmdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZjc5MGVmNmZmMTIzODFjYjBlNDNkZTU0ZmIyYjBmMTIwNGFkOGVkNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgRGVjIDEwIDEyOjMzOjU0IDIwMDggLTA1MDAKLQotICAgIEJsYWNrZmluOiBkeW5hbWljYWxseSB1cGRhdGUgVUFSVCBzcGVlZCB3aGVuIGluaXRpYWxpemluZwotCi0gICAgUHJldmlvdXNseSwgYm9vdGluZyBvdmVyIHRoZSBVQVJUIHJlcXVpcmVkIHRoZSBiYXVkIHJhdGUgdG8gYmUga25vd24gYWhlYWQKLSAgICBvZiB0aW1lLiAgVXNpbmcgYSBiaXQgb2YgdHJpY2t5IHNpbXBsZSBtYXRoLCB3ZSBjYW4gY2FsY3VsYXRlIHRoZSBuZXcgYm9hcmQKLSAgICByYXRlIGJhc2VkIG9uIHRoZSBvbGQgZGl2aXNvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+Ci0KLWNvbW1pdCA5N2YyNjVmMTRmMjMwNTBmM2NiOTk3ZjYxN2YzYTY5MTdiODQzZWEyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBEZWMgOSAxNzoyMTowOCAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYWRkIHN1cHBvcnQgZm9yIGZhc3QgU1BJIHJlYWRzIHdpdGggQm9vdCBST00KLQotICAgIE5ld2VyIEJsYWNrZmluIGJvb3Qgcm9tcyBzdXBwb3J0IHVzaW5nIHRoZSBmYXN0IFNQSSByZWFkIGNvbW1hbmQgcmF0aGVyIHRoYW4KLSAgICBqdXN0IHRoZSBzbG93IG9uZS4JSWYgdGhlIGZ1bmN0aW9uYWxpdHkgaXMgYXZhaWxhYmxlLCB0aGVuIHVzZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDY3NjE5OTgyYmZjNWNkNjI3MTBhNDhlM2NiZmZjMzA0Y2I3OGMzNDEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMTo0Njo1MiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogY2hlY2sgZm9yIHJlc2VydmVkIHNldHRpbmdzIGluIEREUiBNTVJzCi0KLSAgICBTb21lIGJpdHMgb2YgdGhlIEREUiBNTVJzIHNob3VsZCBub3QgYmUgc2V0LiAgSWYgdGhleSBkbywgYmFkIHRoaW5ncyBtYXkKLSAgICBoYXBwZW4gKGxpa2UgcmFuZG9tIGZhaWx1cmVzIG9yIGhhcmR3YXJlIGRlc3RydWN0aW9uKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDYyMmE4ZGMwOTU4ZGQ1OTk3NDMzNDhlYTk0ZWIxMGI5ZDBiZThhZTYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMTo1NDowMCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2Zpbjogc2V0IGRlZmF1bHQgdm9sdGFnZSBsZXZlbHMgZm9yIEJGNTM4L0JGNTM5IHBhcnRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAwOWRjNmIwYmJkMWQ1ZTM5Y2RkZGVlYmMwNTlmOWE3NTYzMGU0ZjZmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBKdW4gMSAwMToyOTo1NyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdXNlIG9uLWNoaXAgc3lzY29udHJvbCgpIHJvbSBmdW5jdGlvbiB3aGVuIGF2YWlsYWJsZQotCi0gICAgTmV3ZXIgQmxhY2tmaW4ncyBoYXZlIGFuIG9uLWNoaXAgcm9tIHdpdGggYSBzeXNjb250cm9sKCkgZnVuY3Rpb24gdGhhdCBuZWVkcwotICAgIHRvIGJlIHVzZWQgdG8gcHJvcGVybHkgcHJvZ3JhbSB0aGUgbWVtb3J5IGFuZCB2b2x0YWdlIHNldHRpbmdzIGFzIGl0IHdpbGwKLSAgICBpbmNsdWRlIChwb3NzaWJseSBjcml0aWNhbCkgZmFjdG9yeSB0ZXN0ZWQgYmlhcyB2YWx1ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBlMWZiNmQwZDUyZmJlM2ZiYzFhNGM2NTFkYWNmMTFlOWMxNDE3ZjYzCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgNSAxMTo0NDo1MiAyMDA5ICswMTAwCi0KLSAgICBjZmlfZmxhc2g6IEZpeCB0eXBvIGluIGNmaV9mbGFzaC5jCi0KLSAgICBQYXRjaCAiZmxhc2gvY2ZpX2ZsYXNoOiBVc2UgdmlydHVhbCBzZWN0b3Igc3RhcnQgYWRkcmVzcywgbm90IHBoeXMiCi0gICAgaW50cm9kdWNlZCBhIHNtYWxsIHR5cG8gYW5kIGNvbXBpbGF0aW9uIHdhcm5pbmcgZm9yIHN5c3RlbXMgd2l0aCBDRkkKLSAgICBsZWdhY3kgc3VwcG9ydCAoZS5nLiBoY3U0KS4gVGhpcyBwYXRjaCBmaXhlcyBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDI4NzQ1ZGI5NjliNzI2OTM3NTQ5OTFjODM4ZjY4YTdmYjRhOGIxYWIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEphbiAyOSAxMToyMTozOCAyMDA5ICswMTAwCi0KLSAgICBqZWRlY19mbGFzaDogT25seSB1c2UgbWFudWZhY3R1cmVyIGRlZmluZXMgZnJvbSBjb21tb24gZmxhc2guaAotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBkb3VibGUgZGVmaW5lZCBtYW51ZmFjdHVyZXIgZGVmaW5lcyBmcm9tCi0gICAgamVkZWNfZmxhc2guYy4gU2luY2UgdGhlIGNvbW1vbiBkZWZpbmVzIGluIGZsYXNoLmggYXJlIDMyYml0Ci0gICAgd2Ugbm93IG5lZWQgdGhlICgxNikgY2FzdC4gVGhpcyBwYXRjaCBhbHNvIHJlbW92ZXMgdGhlIGNvbXBpbGF0aW9uCi0gICAgd2FybmluZyAoZS5nLiBzZWVuIG9uIGhjdTUpOgotCi0gICAgLi9NQUtFQUxMIGhjdTUKLSAgICBDb25maWd1cmluZyBmb3IgaGN1NSBib2FyZC4uLgotICAgIGplZGVjX2ZsYXNoLmM6MjE5OiB3YXJuaW5nOiBsYXJnZSBpbnRlZ2VyIGltcGxpY2l0bHkgdHJ1bmNhdGVkIHRvIHVuc2lnbmVkIHR5cGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGVjMjFkNWNmY2I2YjRlN2ZjZGQ1YzZlOTI2ZTFhODI0OTAwNzA2ZjIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEZlYiA1IDExOjI1OjU3IDIwMDkgKzAxMDAKLQotICAgIGNmaV9mbGFzaDogU2lsZW5jZSBjb21waWxhdGlvbiB3YXJuaW5nCi0KLSAgICBQYXRjaCAiZmxhc2gvY2ZpX2ZsYXNoOiBVc2UgdmlydHVhbCBzZWN0b3Igc3RhcnQgYWRkcmVzcywgbm90IHBoeXMiCi0gICAgaW50cm9kdWNlZCBhIHNtYWxsIGNvbXBpbGF0aW9uIHdhcm5pbmcuIFRoaXMgcGF0Y2ggZml4ZXMgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwOWNlOTkyMWE3ZDhiMWNlNzY0NjU2YjE0YjQyMjE3YmJmNGZhYTM4Ci1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBGZWIgMiAxNjozNDo1MSAyMDA5IC0wNjAwCi0KLSAgICBmbGFzaC9jZmlfZmxhc2g6IFVzZSB2aXJ0dWFsIHNlY3RvciBzdGFydCBhZGRyZXNzLCBub3QgcGh5cwotCi0gICAgaW5jbHVkZS9mbGFzaC5oIHdhcyBjb21tZW50ZWQgdG8gc2F5IHRoYXQgdGhlIGFkZHJlc3MgaW4KLSAgICBmbGFzaF9pbmZvLT5zdGFydCB3YXMgYSBwaHlzaWNhbCBhZGRyZXNzLiAgSG93ZXZlciwgZnJvbSB1LWJvb3QncwotICAgIHBvaW50IG9mIHZpZXcsIGFuZCBsb29raW5nIGF0IG1vc3QgZmxhc2ggY29kZSwgaXQgbWFrZXMgbW9yZQotICAgIHNlbnNlIGZvciB0aGlzIHRvIGJlIGEgdmlydHVhbCBhZGRyZXNzLiAgU28gSSBjb3JyZWN0ZWQgdGhlCi0gICAgY29tbWVudCB0byBpbmRpY2F0ZSB0aGF0IHRoaXMgd2FzIGEgdmlydHVhbCBhZGRyZXNzLgotCi0gICAgVGhlIG9ubHkgZmxhc2ggZHJpdmVyIHRoYXQgd2FzIGFjdHVhbGx5IHRyZWF0aW5nIHRoZSBhZGRyZXNzCi0gICAgYXMgcGh5c2ljYWwgd2FzIHRoZSBtdGQvY2ZpX2ZsYXNoIGRyaXZlci4gIEhvd2V2ZXIsIHRoaXMgY29kZQotICAgIHdhcyB1c2luZyBpdCBpbmNvbnNpc3RlbnRseSBhcyBpdCBhY3R1YWxseSBkaXJlY3RseSBkZXJlZmVyZW5jZWQKLSAgICB0aGUgInN0YXJ0IiBlbGVtZW50LCB3aGlsZSBpdCB1c2VkIG1hcF9waHlzbWVtIHRvIGdldCBhCi0gICAgdmlydHVhbCBhZGRyZXNzIGluIG90aGVyIHBsYWNlcy4gIEkgY2hhbmdlZCB0aGlzIGRyaXZlciBzbwotICAgIHRoYXQgdGhlIGNvZGUgd2hpY2ggaW5pdGlhbGl6ZXMgdGhlIGluZm8tPnN0YXJ0IGZpZWxkIGNhbGxzCi0gICAgbWFwX3BoeXNtZW0gdG8gZ2V0IGEgdmlydHVhbCBhZGRyZXNzLCBlbGltaW5hdGluZyB0aGUgbmVlZCBmb3IKLSAgICBmdXJ0aGVyIG1hcF9waHlzbWVtIGNhbGxzLglUaGUgY29kZSBpcyBub3cgY29uc2lzdGVudC4KLQotICAgIFRoZSAqb25seSogcGxhY2UgYSBwaHlzaWNhbCBhZGRyZXNzIHNob3VsZCBiZSB1c2VkIGlzIHdoZW4gZGVmaW5pbmcgdGhlCi0gICAgZmxhc2ggYmFua3MgbGlzdCB0aGF0IGlzIHVzZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZmxhc2hfaW5mbyBzdHJ1Y3QsCi0gICAgdXN1YWxseSBmb3VuZCBpbiB0aGUgYm9hcmQgY29uZmlnIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjU3ZjIwNjJkOGUxN2ViZjRhNTVmNTJjOWU3MWMwN2MwYzk0Yzc3OQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEZlYiA0IDA5OjQyOjIwIDIwMDkgKzAxMDAKLQotICAgIEZpeCBjb21waWxlciB3YXJuaW5nCi0KLSAgICAoc2hvd3MgdXAgb25seSB3aGVuIERFQlVHIGlzIGVuYWJsZWQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNDc4MzJjZDE1YWUwMmZiNmZkZThlYmVkNWIyNzJmODU3NzVmMmNlYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gT2N0IDYgMDM6NDU6NTUgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHVwZGF0ZSBhbm9tYWx5IGxpc3RzCi0KLSAgICBVcGRhdGUgdGhlIGFub21hbHkgbGlzdHMgdG8gbWF0Y2ggbGF0ZXN0IGFub21hbHkgc2hlZXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNzBhNGRhNDVlMTZiNzJlOGU1YjBiYWFlY2RhZWU5YmU4NjE5NjQ3ZAotQXV0aG9yOiBSYWxwaCBLb25kemllbGxhIDxya0Bhcmdvcy1tZXNzdGVjaG5pay5kZT4KLURhdGU6CU1vbiBKYW4gMjYgMTI6MzQ6MzYgMjAwOSAtMDcwMAotCi0gICAgQURTNTEyMSBBZGQgUEFUQSBzdXBwb3J0Ci0KLSAgICBPcmlnaW5hbCBwYXRjaCBmcm9tIFJhbHBoIEtvbmR6aWVsbGEKLSAgICBwbHVzIGNsZWFuIHVwIGJ5IFdvbGZnYW5nIERlbmsKLSAgICBwbHVzIGNoYW5nZXMgYnkgSm9obiBSaWdieQotCXVzZSBpcHMgY2xvY2sgbm90IGxwYwotCXBvcnQgZm9yd2FyZCB0byBjdXJyZW50IHUtYm9vdCByZWxlYXNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWxwaCBLb25kemllbGxhIDxya0Bhcmdvcy1tZXNzdGVjaG5pay5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWJmYmQwYWU0OTY3ZGYxODEwMjM0NWRiNGY0YjUyOWExM2RhMTA3YgotQXV0aG9yOiBNYXJ0aGEgTWFyeCA8bW1hcnhAc2lsaWNvbnRreC5jb20+Ci1EYXRlOglNb24gSmFuIDI2IDEwOjQ1OjA3IDIwMDkgLTA3MDAKLQotICAgIEFEUzUxMjEgQWRkIElDIElkZW50IE1vZHVsZSAoSUlNKSBzdXBwb3J0Ci0KLSAgICBJSU0gKElDIElkZW50aWZpY2F0aW9uIE1vZHVsZSkgaXMgdGhlIGZ1c2Vib3ggZm9yIHRoZSBtcGM1MTIxLgotICAgIFVzZSAjZGVmaW5lIENPTkZJR19JSU0gdG8gdHVybiBvbiB0aGUgY2xvY2sgZm9yIHRoaXMgbW9kdWxlCi0gICAgdXNlICNkZWZpbmUgQ09ORklHX0NNRF9GVVNFIHRvIGFkZCBmdXNlYm94IGNvbW1hbmRzLgotICAgIEZ1c2Vib3ggY29tbWFuZHMgaW5jbHVkZSB0aGUgYWJpbGl0eSB0byByZWFkCi0gICAgdGhlIHN0YXR1cywgcmVhZCB0aGUgcmVnaXN0ZXIgY2FjaGUsIG92ZXJyaWRlIHRoZSByZWdpc3RlciBjYWNoZSwKLSAgICBwcm9ncmFtIHRoZSBmdXNlcyBhbmQgc2Vuc2UgdGhlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE0ZDE5Y2QxYmNlOWEyNGIxMzM1NTk4ZjE1NjgxNDBmNDk1MGU0ZDkKLUF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSmFuIDIzIDEwOjMzOjE1IDIwMDkgLTA3MDAKLQotICAgIEFEUzUxMjEgRml4IHJldjIgc2lsaWNvbiBwY2kgaW9wYWQgY29uZmlnCi0KLSAgICBSZXNldCBjb25maWcgaXMgbm90IGNvcnJlY3QKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGMxNTQyNTJjNDgwYjEzZjY5Y2UxYjcxYTk1MzBiMDUxNWRhNzZhNgotQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgMTkgMTM6NTc6MzQgMjAwOCAtMDcwMAotCi0gICAgQURTNTEyMSBESVUgQWRkIGRpdV9ibXBfYWRkciBlbnYKLQotICAgIEFkZCBzdXBwb3J0IGZvciB1c2luZyBhIGJtcCBvdGhlciB0aGFuCi0gICAgRlNMX0xvZ29fQk1QIGZvciB0aGUgRElVIHNwbGFzaCBzY3JlZW4uCi0KLSAgICBDYW4gbm93IHNldCB0aGUgZW52IHZhciAiZGl1X2JtcF9hZGRyIiB0bwotICAgIHRoZSBhZGRyZXNzIG9mIGEgQk1QIGluIGZsYXNoIHRvIHVzZSBpbnN0ZWFkCi0gICAgb2YgdGhlIGRlZmF1bHQgRlNMX0xvZ29fQk1QLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGhhIE1hcnggPG1tYXJ4QHNpbGljb250a3guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTJjMjBmYmQzYTc3ODhjMWExNTRmNTBhM2Y0NGYyOGE3NzYzZjk5YQotQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMzAgMTY6Mzk6MzUgMjAwOCAtMDYwMAotCi0gICAgQURTNTEyMSBESVUgTWFrZSBpbmNsdXNpb24gb2YgRlNMIGxvZ28gb3B0aW9uYWwKLQotICAgIE1ha2UgaW5jbHVzaW9uIG9mIEZTTCBsb2dvIG9wdGlvbmFsIGFuZAotICAgIHR1cm4gaXQgb2ZmIGJ5IGRlZmF1bHQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJkOTllYzE0OWFiZTk0ZTdmNmIyYmRhNDc2NmQ3MDFiNDAwNTA1M2YKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglTdW4gRmViIDEgMTI6Mjc6NTMgMjAwOSArMDEwMAotCi0gICAgQ29tcGlsZSB3YXJuaW5nIGZpeCBpbiBvbmVuYW5kX3Vib290LmgKLQotICAgIFJlZ3Jlc3Npb24gc2luY2UgbWVyZ2Ugd2luZG93IGFmdGVyIDIwMDkuMDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgYTI3MGQxZTcyOTVjM2Q4MjlmNDJjMDQ4MDExNzk0MWRmYzFjNjQ3NwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDI5IDA2OjMzOjU1IDIwMDkgKzAxMDAKLQotICAgIFVTQjogQWRkIEVIQ0kgc3VwcG9ydCBmb3IgVkNUIEVIQ0kgY29udHJvbGxlciAocmVhbGx5IHdpdGggZHJpdmVyIG5vdykKLQotICAgIFNvbWVob3cgSSBtaXNzZWQgdGhlIHJlYWwgZHJpdmVyIHBhcnQgaW4gbXkgbGFzdCBwYXRjaCB2ZXJzaW9uLiBUaGlzIHBhdGNoCi0gICAgbm93IGFkZHMgdGhlIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDcxNmViZjQzNmM5ZTQzZGY2NzQwZTAxNzJmNmIyYTgxZGRiZjFiOGUKLUF1dGhvcjogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLURhdGU6CVNhdCBOb3YgMjkgMTg6MjI6MzggMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGFkZCBkcml2ZXIgZm9yIG9uLWNoaXAgTU1DL1NEIGNvbnRyb2xsZXIKLQotICAgIFRoaXMgaXMgYSBwb3J0IG9mIHRoZSBMaW51eCBCbGFja2ZpbiBvbi1jaGlwIFNESCBkcml2ZXIgdG8gVS1Cb290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQ2xpZmYgQ2FpIDxjbGlmZi5jYWlAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2ZTg3ZWEwY2E5NTE0NjVlYmExNDRhYjJlNmRiYTZmYjUwNzczN2EyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjI6NDc6MzQgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFkZCBwb3J0IG11eGluZyBmb3IgQkY1MXggU1BJCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmYzY4ZjlmODU5NTk2NjRkNTI4ZGFlYTJhZWY1ZWY1NDk3NDMzMWNlCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBKYW4gNiAwNjoxNjoxOSAyMDA5IC0wNTAwCi0KLSAgICBCbGFja2Zpbjogb3V0cHV0IGJvb3Rpbmcgc291cmNlIHdoZW4gYm9vdGluZwotCi0gICAgS25vd2luZyB0aGUgYm9vdGluZyBzb3VyY2Ugb2YgdGhlIHBhcnQgaXMgdXNlZnVsLCBlc3BlY2lhbGx5IHdoZW4gdGhlIHBhcnQKLSAgICBjYW4gc3dpdGNoIGR5bmFtaWNhbGx5IGJldHdlZW4gc291cmNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDhkZjNjZTBmNDljMzc5NDc4MDBhYzdjODRlNzUxNDk5ODgyNjE5ZmMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IERlYyAxMSAwNjozMDo0NiAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2Zpbjogc2V0IGRlZmF1bHQgQ09ORklHX0VOVl9TUElfQ1MgYmFzZWQgb24gYm9vdHJvbQotCi0gICAgU2V0IHRoZSBkZWZhdWx0IENPTkZJR19FTlZfU1BJX0NTIHZhbHVlIHRvIG1hdGNoIHRoZSBTUEkgQ1MgdGhhdCBpcyB1c2VkIGJ5Ci0gICAgdGhlIEJsYWNrZmluIG9uLWNoaXAgYm9vdHJvbSB0byBib290IG91dCBvZiBTUEkgZmxhc2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyYjRhNDg2ZTZmYWM1MDJkOGI4ODNlMzQ0Y2M0MDEyMjgzOTQ1YjNkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBEZWMgMTEgMDQ6MDY6MjYgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IHVwZGF0ZSBhc20tYmxhY2tmaW4vcG9zaXhfdHlwZXMuaCB0byBsYXRlc3QgTGludXggdmVyc2lvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZTVlYjkzZTc3MzkxYmNjMzA4Njk3MTE2YzU0NGVhMTM0MGFhYWU4YQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgRGVjIDYgMDI6NTQ6NTIgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGFkZCBwb3J0IEkgYml0cwotCi0gICAgU29tZSBwZW9wbGUgbmVlZCB0byBhY2Nlc3MgcG9ydCBJLCBzbyBtYWtlIHN1cmUgdGhlIHBpbnMgYXJlIGRlZmluZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4YTZiMjcyNTk2ZDQzZGUwZGI0OTQzZWFjN2FmNThjMzUzNGM0MDI2Ci1BdXRob3I6IFNvbmljIFpoYW5nIDxTb25pYy5aaGFuZ0BhbmFsb2cuY29tPgotRGF0ZToJV2VkIE5vdiAyNiAyMjoxNjo0NSAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogYWRkIGRyaXZlciBmb3Igb24tY2hpcCBBVEFQSSBjb250cm9sbGVyCi0KLSAgICBUaGlzIGlzIGEgcG9ydCBvZiB0aGUgTGludXggQmxhY2tmaW4gb24tY2hpcCBBVEFQSSBkcml2ZXIgdG8gVS1Cb290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU29uaWMgWmhhbmcgPFNvbmljLlpoYW5nQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYmU5ZDhjNzgwZTY4MzFjYjg0YjdkNDU5MGNlYWUwM2RjYThmYzEwYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTm92IDI2IDIxOjQzOjA2IDIwMDggLTA1MDAKLQotICAgIEJsYWNrZmluOiBhZGQgZHJpdmVyIGZvciBvbi1jaGlwIE5BTkQgY29udHJvbGxlcgotCi0gICAgVGhpcyBpcyBhIHBvcnQgb2YgdGhlIExpbnV4IEJsYWNrZmluIG9uLWNoaXAgTkZDIGRyaXZlciB0byBVLUJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0MTQ4ZTAyYWJhZTlhMDk5ZjQ0NDRiNWUxNjhlYmMyYjkxMWQyMjk1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBOb3YgMTIgMDc6MTg6MTUgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGJ1aWxkIHdpdGggLW1uby1mZHBpYwotCi0gICAgVXNlIHRoZSAtbW5vLWZkcGljIGZsYWcgc28gdGhhdCBhbnkgQmxhY2tmaW4gdG9vbGNoYWluIGNhbiBiZSB1c2VkIHRvIGJ1aWxkCi0gICAgdXAgdS1ib290LCBpbmNsdWRpbmcgb25lcyB0aGF0IG91dHB1dCBGRFBJQyBFTEYgYnkgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDcwZTk1NTg5YTI0YTJkODNhZDAwMzE3ZTRhOTYxMWQwMjExZWNiNTgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE5vdiAxMSAwNTo0Mzo1NyAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogZml4IHVwIEVCSVUgZGVmaW5lcwotCi0gICAgVGhlIEVCSVUgZGVmaW5lcyBmb3IgRUJTWiAyNTYvNTEyIHdlcmUgaW5jb3JyZWN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOTYxOTU0ZWEwZWM4ZGM0MzQxMDM0YzFhMWZmMzEwN2VjMDUyNzgwOQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTm92IDUgMTI6NDU6MjQgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IHVzZSA4LzE2LzMyIGJpdCB0cmFuc2ZlciB3aWR0aHMgaW4gZG1hX21lbWNweSgpCi0KLSAgICBSYXRoZXIgdGhhbiB1c2luZyA4Yml0IHRyYW5zZmVycyBmb3IgZXZlcnl0aGluZywgdXNlIDgvMTYvMzIgYml0IHRyYW5zZmVycwotICAgIGFzIHVzYWJsZSB3aXRoIHRoZSBzb3VyY2UvZGVzdGluYXRpb24gYWRkcmVzc2VzIGFuZCB0aGUgY291bnQgc2l6ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGI5M2M2ODY0ODQyNmY5MDZkNjNiOTgxMTc0OTZiNjQxNWY1MDVmMzkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIE5vdiA1IDA4OjUwOjIzIDIwMDggLTA1MDAKLQotICAgIEJsYWNrZmluOiBvbmx5IGZsYWcgTDEgaW5zdHJ1Y3Rpb24gZm9yIERNQSBtZW1jcHkKLQotICAgIFRoZSBwZXJmb3JtYW5jZSBkaWZmZXJlbmNlIGZyb20gZG9pbmcgYW4gOCBiaXQgRE1BIG1lbWNweSB2cyBhbiBvcHRpbWl6ZWQKLSAgICBjb3JlIG1lbWNweSBjYW4gYmUgcHJldHR5IGJpZyB3aGVuIHlvdSBhZGQgaW4gdGhlIG92ZXJoZWFkIG9mIHNldHRpbmcgdXAgdGhlCi0gICAgTURNQSByZWdpc3RlcnMsIGNhY2hlIGZsdXNoZXMsIGV0Yy4uLiAgU28gb25seSB1c2UgZG1hX21lbWNweSgpIHdoZW4gd2UKLSAgICBhY3R1YWxseSByZXF1aXJlIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZTM0N2MwOTJhM2IzYTJjZTFlNzJmMjVmNDgyOTE2MzYzNGQwOWZiZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTm92IDUgMDc6MjA6MzcgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGRtYV9tZW1jcHkoKTogZml4IHJhbmRvbSBmYWlsdXJlcwotCi0gICAgV2UgaGF2ZSB0byBtYWtlIHN1cmUgdGhlIERNQSBjaGFubmVsIGlzIGFjdHVhbGx5IGRpc2FibGVkIGluIGhhcmR3YXJlIGJlZm9yZQotICAgIGF0dGVtcHRpbmcgdG8gcmVwcm9ncmFtIGl0LiAgT3RoZXJ3aXNlIHRoZSBuZXcgc2V0dGluZ3MgYXJlIGlnbm9yZWQgYW5kIHdlCi0gICAgZW5kIHVwIHdpdGggcmFuZG9tIGhhbmdzL2ZhaWx1cmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZmRjZTgzYzEwODg0NmQ2ZjBkNWIxNzc0ZTFjYzI5ZjI1NzNhNmFkMwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgTm92IDQgMDA6MDQ6MDMgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IHJld3JpdGUgY2FjaGUgaGFuZGxpbmcgZnVuY3Rpb25zCi0KLSAgICBUYWtlIHRoZSBjYWNoZSBmbHVzaCBmdW5jdGlvbnMgZnJvbSB0aGUga2VybmVsIGFzIHRoZXkgdXNlIGhhcmR3YXJlIGxvb3BzIGluCi0gICAgb3JkZXIgdG8gZ2V0IG9wdGltYWwgcGVyZm9ybWFuY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4NGM1ZjBkYzQ3ZDE3NTkzZmQ4MTIwNjYxNDg5MWJkYzk0ZjZkNTFjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBOb3YgMyAyMjozMDowNSAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2Zpbjogc2V0dXAgYmlfZW5ldGFkZHIgZm9yIHNpbmdsZSBuZXRzCi0KLSAgICBGb3Igc3lzdGVtcyB3aXRoIENPTkZJR19ORVRfTVVMVEkgZGlzYWJsZWQsIGJpX2VuZXRhZGRyIGRvZXMgbm90IGdldCBzZXR1cAotICAgIGJhc2VkIG9uICRldGhhZGRyLCBzbyBzZXQgaXQgdXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0MDU5OTIzOWU3ODc1YjM5ZTJhNWMxMmU2NTQ1OTkyMDQxYzcyYzUyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBPY3QgMjQgMjI6NDg6NDcgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGNhY2hlIGNvcmUvc3lzdGVtIGNsb2NrIHZhbHVlcwotCi0gICAgQ2FsY3VsYXRpbmcgdGhlIGNsb2NrcyByZXF1aXJlcyBhIGJpdCBvZiBjYWxscyB0byBnY2MgbWF0aCBmdW5jdGlvbnMsIHNvCi0gICAgY2FjaGUgdGhlIHZhbHVlcyBhZnRlciB0aGUgZmlyc3QgcnVuIHNpbmNlIHRoZXknbGwgbW9zdCBsaWtlbHkgbmV2ZXIKLSAgICBjaGFuZ2Ugb25jZSBVLUJvb3QgaXMgdXAgYW5kIHJ1bm5pbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2OTU3YTYyMDliMDJmNmI2OTYwN2ZjNDc0MjVmMTM3MzFjYzQ3N2YxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBPY3QgMjQgMTg6MTg6MTYgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGVuYWJsZSAtLWdjLXNlY3Rpb25zCi0KLSAgICBTdGFydCBidWlsZGluZyBhbGwgQmxhY2tmaW4gYm9hcmRzIHdpdGggLWZmdW5jdGlvbi1zZWN0aW9ucy8tZmRhdGEtc2VjdGlvbnMKLSAgICBhbmQgbGlua2luZyB3aXRoIC0tZ2Mtc2VjdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBlZTFkMjAwMWVhN2ZiYWJiMmI5MjU2MDI2ZGM1NDY4ZjA1NzMzN2Y4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBPY3QgMjAgMjE6MDg6NTQgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGRvbnQgY2hlY2sgYmF1ZCBpZiBpdCB3b250IGFjdHVhbGx5IGdldCB1c2VkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0MDBmNTc3OGYzNzViYzk5YzczYzg0ODhjNTU1ZGVmMjYxY2NmYWI3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBPY3QgMTQgMDc6NTQ6MDkgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFkZCBkcml2ZXIgZm9yIG9uLWNoaXAgU1BJIGNvbnRyb2xsZXIKLQotICAgIFRoaXMgZmlsbHMgb3V0IHRoZSBTUEkgYmFja2VuZCBmb3IgdGhlIEJsYWNrZmluIG9uLWNoaXAgU1BJIHBlcmlwaGVyYWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3YTFlODdiMTA2MmU2ZWFjMDcwNGM2ZmMyZjdjNjYxY2FmODgxNGNkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTggMDU6MzM6NTEgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IG9ubHkgYnVpbGQgcG9zdCBjb2RlIHdoZW4gQ09ORklHX1BPU1QKLQotICAgIFNhdmUgc29tZSB0aW1lIGJ5IHVzaW5nIENPTkZJR19QT1NUIGluIHRoZSBNYWtlZmlsZSByYXRoZXIgdGhhbiBDIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNmQ3ZDQ4MDNjNzRiYjg2ZTFiNDAxYjExOTllNjMzODFhNjJiOTM4MgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDggMTE6NTc6NTcgMjAwOSAtMDUwMAotCi0gICAgQmxhY2tmaW46IGJmaW5fbWFjOiBjbGVhbnVwIHBvaW50ZXIvY2FzdHMgZm9yIGFsaWFzaW5nIGlzc3VlcwotCi0gICAgUmVkbyBob3cgcG9pbnRlcnMgYXJlIG1hbmFnZWQgdG8gZ2V0IHJpZCBvZiB1Z2x5IGNhc3RzIGFuZCBzdHJpY3QgcG9pbnRlcgotICAgIGFsaWFzaW5nIGlzc3VlcyB0aGF0IGFyZSBoaWdobGlnaHRlZCBieSBnY2MgNC4zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMDkyZDI0ODdiYWY3YzI5MzQzYzE2NWUzYWU4MmVhOGE3ZjllNjc5YgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgRGVjIDkgMTc6NDY6MjEgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGJmaW5fbWFjOiBjb252ZXJ0IENPTkZJR19CRklOX01BQ19STUlJIHRvIENPTkZJR19STUlJCi0KLSAgICBObyBwb2ludCBpbiBoYXZpbmcgYSBCbGFja2Zpbi1zcGVjaWZpYyBkZWZpbmUgIkNPTkZJR19CRklOX01BQ19STUlJIiB0aGF0Ci0gICAgZG9lcyBleGFjdGx5IHRoZSBzYW1lIHRoaW5nIGFzIGNvbW1vbiAiQ09ORklHX1JNSUkiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOGVlZDZjYTUxZTUwZmFkZTY4ODdlOGJkYjFmZjZhNDQxMTZiNDJiNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgTm92IDUgMDY6MzY6MTUgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGJmaW5fbWFjOiB1c2UgY29tbW9uIGRlYnVnKCkKLQotICAgIFJhdGhlciB0aGVuIGRlZmluaW5nIG91ciBvd24gREVCVUdGKCksIGp1c3QgdXNlIHRoZSBjb21tb24gZGVidWcoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGE3ZWM2YWM4YjJjNmRjZTZmYzY3MGEyYTg1NWRlYjZlZWUzNDBlMDQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCAyMCAxMzo1OTo1MSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmZpbl9tYWM6IHJlc3BlY3QgQ09ORklHX1BIWV97QUREUixDTE9DS19GUkVRfQotCi0gICAgUmF0aGVyIHRoYW4gaGF2aW5nIHRoZSBvbi1jaGlwIE1BQyBoYXJkY29kZWQgdG8gcGh5IGFkZHJlc3MgMSBhbmQgYSBzcGVlZAotICAgIG9mIDIuNW1oeiwgdXNlIHRoZXNlIGFzIGRlZmF1bHRzIGlmIHRoZSBib2FyZCBkb2Vzbid0IHNwZWNpZnkgb3RoZXJ3aXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYWM0NWFmNGU2M2VhOTI1ZjRhY2NjOTg0NTNhYWIxYTExNjZjMTk2ZAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgT2N0IDE0IDA0OjUyOjAwIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZmluX21hYzogY2xlYW51cCBNSUkvUEhZIGZ1bmN0aW9ucwotCi0gICAgQ2xlYW51cCBhbmQgcmV3cml0ZSB0aGUgTUlJL1BIWSByZWxhdGVkIGZ1bmN0aW9ucyBzbyB0aGF0IHdlIGNhbiByZXVzZSB0aGUKLSAgICBleGlzdGluZyBjb21tb24gbGludXgvbWlpcGh5LmggY29kZSBhbmQgaG9vayBpbnRvIHRoZSBgbWlpYCBjb21tYW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNmIzMTBhMDVmMGQxMGM3NTFmMjI0NjgwNDA5MzIxMzlmNzFjNzFkMwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgT2N0IDE0IDAwOjMxOjMwIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZmluX21hYzogc2V0IE1EQ0RJViBiYXNlZCBvbiBTQ0xLCi0KLSAgICBSYXRoZXIgdGhhbiBoYXJkY29kaW5nIE1EQ0RJViB0byAyNCAod2hpY2ggaXMgY29ycmVjdCBmb3IgfjEyNW1oeiBTQ0xLKSwKLSAgICB1c2UgdGhlIHJlYWwgYWxnb3JpdGhtIHNvIGl0IGdldHMgc2V0IGNvcnJlY3RseSByZWdhcmRsZXNzIG9mIFNDTEsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgQWNrZWQtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5MzA1OTBmM2U0OWM4ZjMyMjU2ZWRmMmU1ODYxZTE1MzVhMzI5YzZjCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgSmFuIDMxIDA5OjEwOjQ4IDIwMDkgKzAxMDAKLQotICAgIGl4cDogbW92ZSBzZXJpYWwgdG8gZHJpdmVycy9zZXJpYWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmOTBjODAyMmY0NDhiYzVlOTMwOTBlNGI3MTQzNjhlNTJlOTEyZjBmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgSmFuIDMxIDA5OjA0OjU4IDIwMDkgKzAxMDAKLQotICAgIGl4cDogbW92ZSBwY2kgaW5pdCBpbiBhcm0vYm9hcmQgaW5zdGVhZCBvZiBjcHUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA4Y2I3OWI1ZjI3NWYxODg4Y2NiMjc4YTJkMjE5NzE0MDQ0NGE4NGI3Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgSmFuIDMxIDA4OjU2OjQ5IDIwMDkgKzAxMDAKLQotICAgIGl4cDogbW92ZSBwY2kgZHJpdmVycyB0byBkcml2ZXJzL3BjaQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDAxMmQ1YmFiMDlhNTM0ZTQ4MDBiMDJmNTBjZjUwOGU2ODM3MjAyZWEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBKYW4gMzEgMDg6NTM6NDQgMjAwOSArMDEwMAotCi0gICAgaXhwOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZjY5M2Y1MDFkNjc0MzRkZjFmODE1ZmQxODI0YTcxOTczYWUwODIwNwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEphbiAzMSAwODo1Mzo0NCAyMDA5ICswMTAwCi0KLSAgICBpeHA6IGFkZCBtaXNzaW5nIG9zIGRlZmluZQotCi0gICAgbmVlZCBieSBhcm0tZWxmIHRvb2xjaGFpbnMgYW5kIG5vIGltcGFjdCBvbiB0aGUgYXJtLWxpbnV4IG9uZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGI0ZTJmODlkZmNiMjA2YTIyZDM0ZmE2YjM0ODc4ZDg1YjQ5OGIzOWYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBKYW4gMzEgMDk6NTM6MzkgMjAwOSArMDEwMAotCi0gICAgaXhwOiByZW1vdmUgdGhlIG9wdGlvbiB0byBpbmNsdWRlIHRoZSBNaWNyb2NvZGUKLQotICAgIGluc3RlYWQgdGhlIGJvYXJkIHdpbGwgaGF2ZSB0byBsb2FkIGl0IGZyb20gZmxhc2ggb3IgcmFtCi0gICAgd2hpY2ggd2lsbCBiZSBzcGVjaWZpZWQgYnkgbnBlX3Vjb2RlIGVudiB2YXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxYjAxN2JhZjIwNzFkOGRhZjY0M2JjZTg3MjUwZGI4OThjNjA2YzY2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgSmFuIDMwIDA5OjQ1OjIzIDIwMDkgKzAxMDAKLQotICAgIGl4cC9ucGU6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0ZTY5MDg3YTFkNmVmMmVjYTZmNDYwMjZjZjVlNzM5OWI2YzllN2MwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgSmFuIDI4IDIxOjU4OjA0IDIwMDkgKzAxMDAKLQotICAgIFNYMTogYWRkIGhhcmR3YXJlIFYyIHN1cHBvcnQKLQotICAgIEluIHRoZSBWMiB0aGUgMiBmbGFzaCBoYXMgYmVlbiByZXBsYWNlIGJ5IG9uZSAzMk1CIGZsYXNoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZjg3N2YyMjMzZGJjZDc0MTdjMmYwYmFiZTZhODQ5MDk5YjE2N2YzYwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEphbiAyOCAyMTo1ODowMyAyMDA5ICswMTAwCi0KLSAgICBTWDE6IEZpeCBzZWNvbmQgZmxhc2ggbWFwcGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDQ3ZmQzYmZmZWQ2NDMwYzkxZWIyNjYwZjg1OTU3NGVkOThiZTViZDgKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBKYW4gMjggMjE6NTg6MDMgMjAwOSArMDEwMAotCi0gICAgU1gxOiBhZGQgQ09ORklHX1NURE9VVF9VU0JUVFkgdG8gZW5hYmxlIHByZWJvb3Qgc3Rkb3V0IHJlZGlyZWN0IHRvIHVzYnR0eQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGNmY2EzMzgzN2VjODM4MjljNmE0OWMzYmNjODZjMzFiYzI0OTVmZjYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBKYW4gMjggMjE6NTc6NTkgMjAwOSArMDEwMAotCi0gICAgbW92ZSBTYW1zdW5nJ3MgYm9hcmQgdG8gYm9hcmQvc2Ftc3VuZwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGU0OTQzZWM1NzQ2NmVhNWRmYTA4NWU3YTllMGVjNDRjYjkzYzRlMWUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBKYW4gMjkgMTI6MDc6MjEgMjAwOSArMDEwMAotCi0gICAgbW92ZSBBUk0gTHRkLiB0byB2ZW5kb3IgZGlyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYTg3ZmIxYjMwOGEyYTM3NWNiOWNhNzRjYTBkZDNlMmM1NzkzZDNiZgotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVdlZCBKYW4gMjggMTU6MzA6MzcgMjAwOSAtMDUwMAotCi0gICAgcHBjNHh4OiBDbGVhbiB1cCBjb25maWd1cmF0aW9uIGZpbGUgZm9yIEtvcmF0IGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnRhbCB2YXJpYWJsZXMgZm9yIHRoZQotICAgIEtvcmF0IFBQQyA0NDBFUHggYm9hcmQsIGFuZCBtYWtlcyBhZGRpdGlvbmFsIG1pbm9yIGZpeGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjIwNDA1ZTMxNjgwZWZjMzYyOTNjNTliNDk2M2RiNTdjOWQ5M2RmNAotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVdlZCBKYW4gMjggMTU6MzA6MDIgMjAwOSAtMDUwMAotCi0gICAgcHBjNHh4OiBBZGQgdmFyaWFibGUgImtvcmF0X3VzYmNmIiBmb3IgS29yYXQgYm9hcmQKLQotICAgIFRoZSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUgImtvcmF0X3VzYmNmIiBzZWxlY3RzIHRoZSBVU0IKLSAgICBwb3J0IHVzZWQgYnkgdGhlIEtvcmF0IGJvYXJkJ3MgQ29tcGFjdEZsYXNoIGNvbnRyb2xsZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmYzAxZWExZTI3ZDViMTI0ZjBhMTg2OGQwY2U1NjlmMTU2ZDU4ZGZlCi1BdXRob3I6IEd1bm5hciBSYW5nb3kgPGd1bm5hckByYW5nb3kuY29tPgotRGF0ZToJRnJpIEphbiAyMyAxMjo1NjozMSAyMDA5ICswMTAwCi0KLSAgICBBVlIzMjogbWFjYiAtIFNlYXJjaCBmb3IgUEhZIGlkCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igc2VhcmNoaW5nIHRocm91Z2ggYXZhaWxhYmxlIFBIWS1hZGRyZXNzZXMgaW4KLSAgICB0aGUgbWFjYi1kcml2ZXIuIFRoaXMgaXMgbmVlZGVkIGZvciB0aGUgQVRFVksxMTAwIGV2YWx1YXRpb24gYm9hcmQsCi0gICAgd2hlcmUgdGhlIFBIWS1hZGRyZXNzIHdpbGwgYmUgaW5pdGlhbGl6ZWQgdG8gZWl0aGVyIDEgb3IgNy4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNvbmZpZyBvcHRpb24sIENPTkZJR19NQUNCX1NFQVJDSF9QSFksIHdoaWNoIHdoZW4KLSAgICBlbmFibGVkIHRlbGxzIHRoZSBkcml2ZXIgdG8gc2VhcmNoIGZvciB0aGUgUEhZIGFkZHJlc3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdW5uYXIgUmFuZ295IDxndW5uYXJAcmFuZ295LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIERyaXZla2xlcHAgPHBhdWxkcml2ZWtsZXBwQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBPbGF2IE1vcmtlbiA8b2xhdm1ya0BnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGFmODYyNmUwYzA4YTc4MGQ5ZGVkMWQ5YzQ4ODNhODkzNTVmNjBlNzUKLUF1dGhvcjogT2xhdiBNb3JrZW4gPG9sYXZtcmtAZ21haWwuY29tPgotRGF0ZToJRnJpIEphbiAyMyAxMjo1NjoyNiAyMDA5ICswMTAwCi0KLSAgICBGaXggSVAgYWxpZ25tZW50IHByb2JsZW0KLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB2b2xhdGlsZSBmcm9tOgotICAgIHZvbGF0aWxlIElQX3QgKmlwID0gKElQX3QgKil4aXA7Ci0KLSAgICBEdWUgdG8gYSBidWcsIGF2cjMyLWdjYyB3aWxsIGFzc3VtZSB0aGF0IGlwIGlzIGFsaWduZWQgb24gYSB3b3JkIGJvdW5kYXJ5IHdoZW4KLSAgICB1c2luZyB2b2xhdGlsZSwgd2hpY2ggY2F1c2VzIGFuIGV4Y2VwdGlvbiBzaW5jZSB4aXAgaXNuJ3QgYWxpZ25lZCBvbiBhIHdvcmQKLSAgICBib3VuZGFyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1bm5hciBSYW5nb3kgPGd1bm5hckByYW5nb3kuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgRHJpdmVrbGVwcCA8cGF1bGRyaXZla2xlcHBAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE9sYXYgTW9ya2VuIDxvbGF2bXJrQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMTJhOGI5ZGIxMmY4MmExODlmZjE0M2E1ODczMTAwN2Y1NDY5ZGE2MQotQXV0aG9yOiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Ci1EYXRlOglXZWQgSmFuIDI4IDE2OjE3OjIxIDIwMDkgLTA4MDAKLQotICAgIE1hcnZlbGwgODhFMTExOCBpbnRlcnJ1cHQgZml4Ci0KLSAgICBUaGlzIHBhdGNoIGFkanVzdHMgdGhlIExFRCBjb250cm9sIHNvIHRoYXQgaW50ZXJydXB0IGxpbmVzIGFyZSBub3QgcmVhZGluZyBMRURzCi0gICAgYW5kIGVmZmVjdGl2ZWx5IGNhdXNpbmcgaW5kZWZpbml0ZSBpbnRlcnJ1cHRzIHRvIHRoZSBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5YTM3ZjJhY2MzMWEzMjk2ZGRkZDM1NzRlYTllYWY3ZjMxOTgwN2I5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjEgMTc6MTQ6MjYgMjAwOSArMDEwMAotCi0gICAgbmV0OiBzbWM5MTF4LmM6IEFkZCBMQU45MjExIHRvIGNoaXBfaWRzW10gYXJyYXkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNzVlZGViZTMwMTFjOTYzYTdjZDg0YmUwZjRhOTg3NDc3ZjJhYWY4OQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgSmFuIDI3IDE2OjUzOjM5IDIwMDkgLTA1MDAKLQotICAgIE1vdmUgaXNfdmFsaWRfZXRoZXJfYWRkcigpIHRvIGluY2x1ZGUvbmV0LmgKLQotICAgIEltcG9ydCB0aGUgaXNfdmFsaWRfZXRoZXJfYWRkcigpIGZ1bmN0aW9uIGZyb20gdGhlIExpbnV4IGtlcm5lbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMjY4ODU5MzM4YzAxODhlYWIxZDBkM2I4NjdiN2RhZDNjNWNjNzM0YQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gSmFuIDUgMTI6MjU6MTMgMjAwOSArMDEwMAotCi0gICAgbmV0OiBTb3J0IE1ha2VmaWxlIGxhYmVscwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAxZmJjYmU5YTk1ZjM5YWZiMmRmNmFiOGNiYTI1YjI4NGI0N2ViZmIyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDI4IDIzOjA2OjQyIDIwMDkgKzAxMDAKLQotICAgIDg1eHg6IEZpeCBjb21waWxlIGJyZWFrYWdlIHdpdGggc2JjODU0MCBhbmQgc2JjODU2MAotCi0gICAgVGhpcyBmaXhlcyBhbiBlcnJvciB3aGljaCByYWlzZXMganVzdCBhIHdhcm5pbmc6Ci0gICAgc2JjODU2MC5jOjI1MDogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAyIG9mICdzdHJtaHonIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyIHdpdGhvdXQgYSBjYXN0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjI2MjVjMGIwODFiZDQwMTljZWNhYjE0ZTlmYzJlMDVlNDhkMmE1OAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgSmFuIDI4IDEzOjQ4OjU1IDIwMDkgLTA1MDAKLQotICAgIFNQRDgyM1RTOiBkbyBub3QgZGVmaW5lIENPTkZJR19DTURfRU5WCi0KLSAgICBTaW5jZSB0aGUgU1BEODIzVFMgYm9hcmQgZG9lcyBub3QgYWN0dWFsbHkgaGF2ZSBhbnkgd3JpdGFibGUgZmxhc2ggdG8gc2F2ZQotICAgIGl0cyBlbnZpcm9ubWVudCwgdW5kZWZpbmUgQ09ORklHX0NNRF9FTlYgc28gdGhlICJzYXZlZW52IiBjb21tYW5kIGlzCi0gICAgZGlzYWJsZWQuCi0KLSAgICBUaGlzIGZpeGVzIHRoZSBidWlsZCBlcnJvcjoKLSAgICBjb21tb24vbGliY29tbW9uLmEoY21kX252ZWRpdC5vKTogSW4gZnVuY3Rpb24gYGRvX3NhdmVlbnYnOgotICAgIGNvbW1vbi9jbWRfbnZlZGl0LmM6NTU3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBzYXZlZW52JwotICAgIG1ha2U6ICoqKiBbdS1ib290XSBFcnJvciAxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3Mzc5ZjQ1YTdiYzcxOTQxYzM5MjBjMmY2YjNjM2ZhYTRkN2ZkMzE1Ci1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglXZWQgSmFuIDI4IDIxOjQwOjE2IDIwMDkgKzAxMDAKLQotICAgIE9NQVAzOiBBZGQgWm9vbTEgYm9hcmQgc3VwcG9ydAotCi0gICAgU3VwcG9ydCBmb3IgWm9vbSBNREsgd2l0aCBPTUFQMzQzMC4gRGV0YWlscyBvZiBab29tIE1ESyBhdmFpbGFibGUgaGVyZToKLSAgICBodHRwOi8vd3d3LmxvZ2ljcGQuY29tL3Byb2R1Y3RzL2RldmtpdC90aS96b29tX21vYmlsZV9kZXZlbG9wbWVudF9raXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pc2hhbnRoIE1lbm9uIDxubUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gS3JpZG5lciA8amtyaWRuZXJAYmVhZ2xlYm9hcmQub3JnPgotCi1jb21taXQgMmJlMmM2Y2M2NzRlMjYyMzc5NjJmNWNmNGMwZDMxMWUxMzllNDI0MQotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJV2VkIEphbiAyOCAyMTozOTo1OCAyMDA5ICswMTAwCi0KLSAgICBPTUFQMzogQWRkIFBhbmRvcmEgc3VwcG9ydAotCi0gICAgQWRkIFBhbmRvcmEgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYXp2eWRhcyBJZ25vdGFzIDxub3Rhc2FzQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEtyaWRuZXIgPGprcmlkbmVyQGJlYWdsZWJvYXJkLm9yZz4KLQotY29tbWl0IGFkOWJjOGU1MmQxNzRkNjk5ZDEzNjdiZTBiOTAwODllNGZkZWI5MzMKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVdlZCBKYW4gMjggMjE6Mzk6NTggMjAwOSArMDEwMAotCi0gICAgT01BUDM6IEFkZCBFVk0gYm9hcmQKLQotICAgIEFkZCBFVk0gYm9hcmQgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hbmlrYW5kYW4gUGlsbGFpIDxtYW5pLnBpbGxhaUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBLcmlkbmVyIDxqa3JpZG5lckBiZWFnbGVib2FyZC5vcmc+Ci0KLWNvbW1pdCA5ZDBmYzgxMTBlN2U3NTUyMzkzMjljMjZmMzAwZDVmYzk5NDZkM2VjCi1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglXZWQgSmFuIDI4IDIxOjM5OjU3IDIwMDkgKzAxMDAKLQotICAgIE9NQVAzOiBBZGQgT3Zlcm8gYm9hcmQKLQotICAgIEFkZCBPdmVybyBib2FyZCBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c2Frb21hbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBLcmlkbmVyIDxqa3JpZG5lckBiZWFnbGVib2FyZC5vcmc+Ci0KLWNvbW1pdCBmOTA0Y2RiYjY4MTY3YzY0Nzg4N2YxOTkyOWFkMjk1ZGJhYWM4ODYyCi1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglUdWUgSmFuIDI3IDE4OjE5OjEyIDIwMDkgKzAxMDAKLQotICAgIE9NQVAzOiBBZGQgY29tbW9uIHBvd2VyIGNvZGUsIFJFQURNRSwgYW5kIEJlYWdsZUJvYXJkCi0KLSAgICBBZGQgQmVhZ2xlQm9hcmQgc3VwcG9ydCwgY29tbW9uIHBvd2VyIGNvZGUgYW5kIFJFQURNRS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEtyaWRuZXIgPGprcmlkbmVyQGJlYWdsZWJvYXJkLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgOWNkYTRmMTA0YjUzMTNmYWRjMjFiNzVhYTc4MWM3YTZhYWY2ZWE2MAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEphbiAyOCAwODozMToxMCAyMDA5IC0wNjAwCi0KLSAgICA4NXh4OiBGaXggY29tcGlsZSBicmVha2FnZSB3aXRoIE1QQzg1NDBFVkFMCi0KLSAgICBDb25maWd1cmluZyBmb3IgTVBDODU0MEVWQUwgYm9hcmQuLi4KLSAgICBtcGM4NTQwZXZhbC5jOiBJbiBmdW5jdGlvbiAnY2hlY2tib2FyZCc6Ci0gICAgbXBjODU0MGV2YWwuYzo1MzogZXJyb3I6IGludmFsaWQgb3BlcmFuZHMgdG8gYmluYXJ5IC8KLSAgICBtYWtlWzFdOiAqKiogW21wYzg1NDBldmFsLm9dIEVycm9yIDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxYTQ0OGRiNzdiMTAxNTM3MDNiYzVlNGFkMTNkZDU1ZDg4YmViMWQ2Ci1BdXRob3I6IEJyeWFuIFd1IDxicnlhbi53dUBhbmFsb2cuY29tPgotRGF0ZToJU3VuIEphbiAxOCAyMzowNDoyNyAyMDA5IC0wNTAwCi0KLSAgICB1c2Jfc2Nhbl9kZXZpY2VzOiBmaXggb3V0cHV0IHdpdGggbm8gZGV2aWNlcwotCi0gICAgV2Ugc2hvdWxkIGNoZWNrIHRoZSByZXR1cm4gb2YgdXNiX25ld19kZXZpY2UoKSBzbyB0aGF0IGlmIG5vIFVTQiBkZXZpY2UgaXMKLSAgICBmb3VuZCwgd2UgcHJpbnQgb3V0IHRoZSByaWdodCBtZXNzYWdlIHJhdGhlciB0aGFuIGFsd2F5cyBzYXlpbmcgIm5ldyB1c2IKLSAgICBkZXZpY2UgZm91bmQiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZjFjMWY1NDAyNDM0MzgyNDZhZWZiNzAzZmRjZjE2OTU3ZTNhNzJlMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDIyIDEwOjExOjIxIDIwMDkgKzAxMDAKLQotICAgIFVTQjogQWRkIGhpZ2gtc3BlZWQgKDQ4ME1iL3MpIHRvIGFsbCBVU0IgcmVsYXRlZCBvdXRwdXRzCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggdGhlIFVTQiByZWxhdGVkIGNvbm5lY3Rpb24gc3BlZWQgb3V0cHV0ICgidXNiIHRyZWUiIGNvbW1hbmQgYW5kCi0gICAgZGVidWcgb3V0cHV0KSBpcyBub3cgaGlnaC1zcGVlZCBlbmFibGVkLgotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgY29tcGlsYXRpb24gd2FybmluZyB3aGVuIGRlYnVnZ2luZyBpcyBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZGFhMmRhZmI0NTBhODA3M2E0ZTQyZmQ0NmNkNGU5OTViMjA4ZTRjYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDIxIDE3OjEyOjE5IDIwMDkgKzAxMDAKLQotICAgIFVTQjogQWRkIGRjYWNoZSBzdXBwb3J0IHRvIHRoZSBFSENJIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHJvdXRpbmVzIHRvIGhhbmRsZSAoZmx1c2gvaW52YWxpZGF0ZSkgdGhlIGRjYWNoZSBmb3IgdGhlCi0gICAgUUggYW5kIHFURCBzdHJ1Y3R1cmVzIGFuZCBkYXRhIGJ1ZmZlcnMuIFRoaXMgaXMgbmVlZGVkIG9uIHBsYXRmb3JtcyB1c2luZwotICAgIHRoaXMgRUhDSSBzdXBwb3J0IHdpdGggZGNhY2hlIGVuYWJsZWQgKGxpa2UgdGhlIE1JUFMgVkNUIGJvYXJkIHBvcnQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgNGUwZWEwZWZjMWU1MDExODZhY2E4NTc3YTQwNDJmYzZmYTY0MTYwMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDIxIDE3OjEyOjI4IDIwMDkgKzAxMDAKLQotICAgIFVTQjogQWRkIEVIQ0kgc3VwcG9ydCBmb3IgVkNUIEVIQ0kgY29udHJvbGxlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgODMyZTYxNDE4ZWVkZmVhMTcyYmQyZmRmZDBlYTBkMTk5Y2M3MGE5ZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDIxIDE3OjEyOjEwIDIwMDkgKzAxMDAKLQotICAgIFVTQjogQWRkIGNvbmZpZyBvcHRpb24gdG8gY2FsbCBlaGNpX2hjZF9pbml0KCkgYWdhaW4gYWZ0ZXIgRUhDSSByZXNldAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBjb25maWcgb3B0aW9uIENPTkZJR19FSENJX0hDRF9JTklUX0FGVEVSX1JFU0VUCi0gICAgdG8gY2FsbCBlaGNpX2hjZF9pbml0KCkgYWdhaW4gYWZ0ZXIgZWhjaV9yZXNldCgpIGlzIGV4ZWN1dGVkLiBUaGlzCi0gICAgaXMgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgVkNUIEVIQ0kgc3VwcG9ydCB3aGljaCBuZWVkcyB0byByZS1pbml0Ci0gICAgdGhlIGhjZCBwYXJ0IGFnYWluIGFmdGVyIHRoZSBFSENJIENNRF9SRVNFVCBpcyBleGVjdXRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDU5N2ViMjhiZDk2OTEyNjZiN2I4MDQzNjRjZGE1NzdjZGI1MWQxMDYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyMSAxNzoxMjowMSAyMDA5ICswMTAwCi0KLSAgICBVU0I6IEZpeCBzcGVlZCBkZXRlY3Rpb24gb24gRUhDSSBjbnRyIHdpdGggcm9vdCBodWIgdHJhbnNhY3Rpb24gdHJhbnNsYXRvcnMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYW4gaXNzdWUgdGhhdCB0aGUgc3BlZWQgb2YgVVNCIGRldmljZXMgd2FzIG5vdCBkZXRlY3RlZAotICAgIGNvcnJlY3RseSBvbiBzb21lIEVIQ0kgY29udHJvbGxlcnMuIFRoaXMgd2lsbCBiZSB1c2VkIG9uIHRoZSB1cGNvbWluZyBWQ1QKLSAgICBFSENJIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCAyMGNjMDY2MTFlYTMzZmMwYTY3YTVlNTZlNjQ3NjM3OWQyZGUzMDkxCi1BdXRob3I6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgotRGF0ZToJU3VuIEphbiA0IDA5OjQxOjIwIDIwMDkgKzA1MzAKLQotICAgIHVzYiA6IG11c2IgOiBFbmFibGluZyBVU0IgTVNDIHN1cHBvcnQgZm9yIERNNjQ0NiAoVEkgRGFWaW5jaSkgcGxhdGZvcm0KLQotICAgIEVuYWJsaW5nIFVTQiBNU0Mgc3VwcG9ydCBmb3IgRE02NDQ2IChUSSBEYVZpbmNpKSBwbGF0Zm9ybSBpbiB0aGUKLSAgICBjb25maWd1cmF0aW9uIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYXZpIEJhYnUgPHJhdmliYWJ1QHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDUzOGVmOTY3NzE1MzIyZjY0ZWUwOGVmYTIyOTZkOTY4MjExMWIwMTQKLUF1dGhvcjogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+Ci1EYXRlOglTdW4gSmFuIDQgMDk6NDE6MTYgMjAwOSArMDUzMAotCi0gICAgdXNiIDogbXVzYiA6IEVuYWJsaW5nIERNNjQ0NiAoVEkgRGFWaW5jaSkgVVNCIG1vZHVsZSBwb3dlcgotCi0gICAgRW5hYmxpbmcgRE02NDQ2IChUSSBEYVZpbmNpKSBVU0IgbW9kdWxlIHBvd2VyIGFuZCBNVVNCIGxvdy1sZXZlbAotICAgIGNvbnRyb2xsZXIgaG9vayB1cCB0byBVU0IgY29yZSBsYXllci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhdmkgQmFidSA8cmF2aWJhYnVAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZTE0MmU5ZjM1ZjhlYzYxZTc0YmY4MDE5NDI4YjAwM2Y1MDcwYzMzYgotQXV0aG9yOiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KLURhdGU6CVN1biBKYW4gNCAwOTo0MToxMyAyMDA5ICswNTMwCi0KLSAgICB1c2IgOiBtdXNiIDogQWRkaW5nIERNNjQ0NiAoVEkgRGFWaW5jaSkgcGxhdGZvcm0gc3BlY2lmaWMgVVNCIHN1cHBvcnQKLQotICAgIEFkZGluZyBETTY0NDYgKFRJIERhVmluY2kpIHBsYXRmb3JtIHNwZWNpZmljIFVTQiBmdW5jdGlvbmFsaXR5IGZvcgotICAgIFVTQiBQaHkgYW5kIFZCVVMgaW5pdGlhbGl6YXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYXZpIEJhYnUgPHJhdmliYWJ1QHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTd2FtaW5hdGhhbiBTIDxzd2FtaS5peWVyQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBamF5IEt1bWFyIEd1cHRhIDxhamF5Lmd1cHRhQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGE5ZDM5ZWJlOTFlY2RkNWFjMGEwY2Y1NmVhMTYyYTE5NzczZGI4ZGEKLUF1dGhvcjogVGhvbWFzIEFicmFoYW0gPHQtYWJyYWhhbUB0aS5jb20+Ci1EYXRlOglTdW4gSmFuIDQgMDk6NDE6MDkgMjAwOSArMDUzMAotCi0gICAgdXNiIDogbXVzYiA6IEFkZGluZyBVU0IgVkJVUyBlbmFibGUgZnVuY3Rpb25hbGl0eSBmb3IgRE02NDR4IERWRVZNCi0KLSAgICBBZGRpbmcgVVNCIFZCVVMgZW5hYmxlIGZ1bmN0aW9uYWxpdHkgZm9yIERNNjQ0eCBEVkVWTSAoVEkgRGFWaW5jaSkKLSAgICBwbGF0Zm9ybS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhdmkgQmFidSA8cmF2aWJhYnVAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgYTE0Mjg5NjkzNGM3NTVlNjc5YmE4N2UyMjdhOGU0NDlmMzliMDAxMgotQXV0aG9yOiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KLURhdGU6CVN1biBKYW4gNCAwOTo0MTowMyAyMDA5ICswNTMwCi0KLSAgICB1c2IgOiBtdXNiIDogQWRkaW5nIGhvc3QgY29udHJvbGxlciBkcml2ZXIgZm9yIE1lbnRvciBVU0IgY29udHJvbGxlcgotCi0gICAgQWRkaW5nIE1lbnRvciBVU0IgY29yZSBmdW5jdGlvbmFsaXR5IGFuZCBNZW50b3IgVVNCIEhvc3QgY29udHJvbGxlcgotICAgIGZ1bmN0aW9uYWxpdHkgZm9yIE1lbnRvciBVU0IgT1RHIGNvbnRyb2xsZXIgKG11c2JoZHJjKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhdmkgQmFidSA8cmF2aWJhYnVAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN3YW1pbmF0aGFuIFMgPHN3YW1pLml5ZXJAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFqYXkgS3VtYXIgR3VwdGEgPGFqYXkuZ3VwdGFAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgYzdkNzAzZjNmM2MzZDZiMDIwYmRhNGNmNjMzZjhhNjE2N2MzY2QyYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgSmFuIDEgMTg6Mjc6MjcgMjAwOSAtMDUwMAotCi0gICAgdXNiLmg6IHVzZSBzdGFuZGFyZCBfX0xJVFRMRV9FTkRJQU4gZnJvbSBMaW51eCBoZWFkZXJzCi0KLSAgICBSYXRoZXIgdGhhbiBmb3JjaW5nIHBlb3BsZSB0byBkZWZpbmUgYSBjdXN0b20gIkxJVFRMRUVORElBTiIsIGp1c3QgdXNlIHRoZQotICAgIF9fTElUVExFX0VORElBTiBvbmUgZnJvbSB0aGUgTGludXggYnl0ZW9yZGVyIGhlYWRlcnMgdGhhdCBldmVyeSBhcmNoIGlzCi0gICAgYWxyZWFkeSBzZXR0aW5nIHVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgN2I2ZTMxZWIxN2UzZmY3NjIzOGE2MDgwM2ZjNTMxNTE3ZDUxNjIyMwotQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci1EYXRlOglXZWQgRGVjIDMxIDEwOjMzOjU2IDIwMDggKzAxMDAKLQotICAgIFVTQiBlaGNpIGl4cDR4eCBzdXBwb3J0Ci0KLSAgICBBZGQgVVNCIGVoY2kgaXhwNHh4IGhvc3QgY29udHJvbGxlci4gVGVzdCBvbiBpeGRwNDY1IGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaW1pY2hhZWxAeWFob28uaXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCAxZWQ5ZjlhZGM4ODIxODg0MWRmZWI2MGI5MDk0YTVhNTQ4YmZmMDA5Ci1BdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KLURhdGU6CVdlZCBEZWMgMzEgMTA6MzM6MjIgMjAwOCArMDEwMAotCi0gICAgVVNCIGVoY2kgcmVtb3ZlIGluZmluaXRlIGxvb3AgYW5kIHVzZSBoYW5kc2hha2UgZnVuY3Rpb24KLQotICAgIFVTQiBlaGNpIGNvZGUgY2xlYW51cC4gVXNlIGhhbmRzaGFrZSBpbnN0ZWFkIG9mIGluZmluaXRlIHdoaWxlIGxvb3AKLSAgICB0byBjaGVjayB0aGUgU1REX0FTUyBzdGF0dXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgOGZlYTI5MTRhYzk3NDAyOWI2NTkyNmVmODI0N2Q5MDhmODRkMjAyZAotQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci1EYXRlOglXZWQgRGVjIDMxIDEwOjMyOjQxIDIwMDggKzAxMDAKLQotICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIFVTQiBlaGNpIHBjaQotCi0gICAgQWRkIFVTQiBlaGNpIHBjaSBzdXBwb3J0LiBUaGlzIHBhdGNoIGRvZXNuJ3QgaW5jbHVkZSBhbnkKLSAgICBwY2lfaWRzIGFuZCBpdCBpcyBub3QgdGVzdGVkIG9uIHJlYWwgaGFyZHdhcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDE0ZTQxMTFjZGFiN2U3NzM4ZmY2YTIwM2Q0NDVlNGQ4Mzc3ZjA1OGYKLUF1dGhvcjogQnJ5YW4gV3UgPEJyeWFuLld1QGFuYWxvZy5jb20+Ci1EYXRlOglUaHUgSmFuIDEgMTk6NDg6MDcgMjAwOSAtMDUwMAotCi0gICAgdXNiX3N0b3JhZ2U6IGRvIG5vdCByZXNldCBTYW5EaXNrIENvcnBvcmF0aW9uIFUzIENydXplciBNaWNybyBVU0IgdGh1bWIgZHJpdmUKLQotICAgIFRoZSBTYW5EaXNrIENvcnBvcmF0aW9uIFUzIENydXplciBNaWNybyAxLzRHQiBGbGFzaCBEcml2ZSAwMDAwMTYyNDQzNzNGRkI0Ci0gICAgZG9lcyBub3QgbGlrZSB0byBiZSByZXNldCwgc28gY2hlY2sgZm9yIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gV3UgPGJyeWFuLnd1QGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgMWViNzM0ZmVkM2I3OWE1ZTYxMDZkYWQxNmU4ODA0MTg5NGZkYWIzMAotQXV0aG9yOiBUaG9tYXMgQWJyYWhhbSA8dC1hYnJhaGFtQHRpLmNvbT4KLURhdGU6CVN1biBKYW4gNCAxMjoxNTozNSAyMDA5ICswNTMwCi0KLSAgICB1c2IgOiB1c2Jfa2JkIDogUG9wdWxhdGluZyAncHJpdicgbWVtYmVyIG9mIFVTQiBrZXlib2FyZCBkZXZpY2VfdCBzdHJ1Y3R1cmUKLQotICAgIFRoaXMgcGF0Y2ggcG9wdWxhdGVzIHRoZSAncHJpdicgZmllbGQgb2YgdGhlIFVTQiBrZXlib2FyZCBkZXZpY2VfdAotICAgIHN0cnVjdHVyZS4gVGhlICdwcml2JyBmaWVsZCBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgYWRkcmVzcyBvZiB0aGUKLSAgICAnc3RydWN0IHVzYl9kZXZpY2UnIHN0cnVjdHVyZSB0aGF0IHJlcHJlc2VudHMgdGhlIFVTQiBkZXZpY2UuCi0KLSAgICBUaGUgJ3ByaXYnIGZpZWxkIGNhbiB0aGVuIGJlIHVzZWQgaW4gdGhlICd1c2JfZXZlbnRfcG9sbCcgZnVuY3Rpb24gdG8KLSAgICBkZXRlcm1pbmUgdGhlIFVTQiBkZXZpY2UgdGhhdCByZXF1aXJlcyB0byBiZSBwb2xsZWQuIEFuCi0gICAgZXhhbXBsZSBvZiBpdHMgdXNhZ2UgaW4gJ3VzYl9ldmVudF9wb2xsJyBmdW5jdGlvbiBpcyBhcyBiZWxvdy4KLQotCWRldmljZV90ICpkZXY7Ci0Jc3RydWN0IHVzYl9kZXZpY2UgKnVzYl9rYmRfZGV2OwotCi0JPHNuaXA+Ci0KLQlkZXYgPSBkZXZpY2VfZ2V0X2J5X25hbWUoInVzYmtiZCIpOwotCXVzYl9rYmRfZGV2ID0gKHN0cnVjdCB1c2JfZGV2aWNlICopZGV2LT5wcml2OwotCWlmYWNlID0gJnVzYl9rYmRfZGV2LT5jb25maWcuaWZfZGVzY1swXTsKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBBYnJhaGFtIDx0LWFicmFoYW1AdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgMzY2NTIzYzI2YjYzMjBhZjE3MTQ1OWIxOWU2ZTBlOWUzYmFhODNjYQotQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci1EYXRlOglUaHUgRGVjIDE4IDEwOjA1OjM3IDIwMDggKzAxMDAKLQotICAgIFVTQiBjaGFuZ2Ugc3BlZWQKLQotICAgIFVTQiBjaGFuZ2VzIHRoZSBzcGVlZCBhY2NvcmRpbmcgdG8gdGhlIHBvcnQgc3RhdHVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGMwZDcyMmZlN2VlMWNiNDUyZGZkOTI0NjQxOTE4OGIzZjZkOWM0ZGYKLUF1dGhvcjogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJU2F0IERlYyAxMyAyMjo1MTo1OCAyMDA4ICswMTAwCi0KLSAgICBFSENJIGZpeCBjb2RlIGFuZCBpeHA0eHggdGVzdC4KLSAgICBVU0IgZWhjaSBjb25maWd1cmF0aW9uIHBhcmFtZXRlcjoKLQotICAgICNkZWZpbmUgQ09ORklHX0NNRF9VU0IJICAgIDEKLSAgICAjZGVmaW5lIENPTkZJR19VU0JfU1RPUkFHRQkgICAgMQotICAgICNkZWZpbmUgQ09ORklHX1VTQl9FSENJCi0gICAgI2RlZmluZSBDT05GSUdfVVNCX0VIQ0lfSVhQNFhYCTEKLSAgICAjZGVmaW5lIENPTkZJR19FSENJX0lTX1RESQkxCi0gICAgI2RlZmluZSBDT05GSUdfRUhDSV9ERVNDX0JJR19FTkRJQU4gICAgIDEKLSAgICAjZGVmaW5lIENPTkZJR19FSENJX01NSU9fQklHX0VORElBTiAgICAgMQotICAgICNkZWZpbmUgQ09ORklHX1NZU19VU0JfRUhDSV9NQVhfUk9PVF9QT1JUUyAyCi0gICAgI2RlZmluZSBDT05GSUdfTEVHQUNZX1VTQl9JTklUX1NFUQkgICAgMQotCi0gICAgMiBVU0IgRGV2aWNlKHMpIGZvdW5kCi0JICAgc2Nhbm5pbmcgYnVzIGZvciBzdG9yYWdlIGRldmljZXMuLi4gMCBTdG9yYWdlIERldmljZShzKSBmb3VuZAotICAgID0+IHVzYiB0cmVlCi0KLSAgICBEZXZpY2UgVHJlZToKLSAgICAgIDEgIEh1YiAoMS41TUJpdC9zLCAwbUEpCi0gICAgICB8ICB1LWJvb3QgRUhDSSBIb3N0IENvbnRyb2xsZXIKLSAgICAgIHwKLSAgICAgIHwrLTIgIE1hc3MgU3RvcmFnZSAoMTJNQml0L3MsIDEwMG1BKQotCSAgIFNvbnkgU3RvcmFnZSBNZWRpYSAwQzA3MDQwOTMwMjk2Ci0KLSAgICA9PgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaW1pY2hhZWxAeWFob28uaXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgNTFhYjE0MmI4YjU0NmQ1ZTYyN2IyYzhjMzZkMGFkYWUyMjI1NjVmNwotQXV0aG9yOiBtaWNoYWVsIDxtaWNoYWVsQHBhbmlja2luZy5yZXRpcz4KLURhdGU6CVRodSBEZWMgMTEgMTM6NDM6NTUgMjAwOCArMDEwMAotCi0gICAgW1BBVENIXSBUaGlzIHBhdGNoIGFkZCB2YXJpdXMgZml4IHRvIHRoZSBlaGNpLgotICAgIC0gZml4IGVoY2lfcmVhZGwsIGVoY2lfd3JpdGVsCi0gICAgLSBpbnRyb2R1Y2UgbmV3IGRlZmluZSBpbiBlaGNpLmgKLSAgICAtIGludHJvZHVjZSB0aGUgaGFuZHNoYWtlIGZ1bmN0aW9uIGZvciB3YWl0aW5nIG9uIGEgcmVnaXN0ZXIKLSAgICAtIGZpeCB1c2JfZWhjaV9mc2wgd2l0aCB0aGUgbmV3IEhDX0xFTkdUSCBtYWNybwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaW1pY2hhZWxAeWFob28uaXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZGI2MzI5OWIxZGQyODk0YWRlNTQyMjc4MjEwYmNjZDA0NmRlNjQzNQotQXV0aG9yOiBtaWNoYWVsIDxtaWNoYWVsQHBhbmlja2luZy5yZXRpcz4KLURhdGU6CVdlZCBEZWMgMTAgMTc6NTU6MTkgMjAwOCArMDEwMAotCi0gICAgW1BBVENIXSBGaXggRUhDSSB1c2IuIEkgc3RhcnQgdG8gdGVzdCBvbiBhCi0gICAgSVhQNDY1IGJvYXJkIGFuZCBJIGZpbmQgc29tZSBlcnJvcnMgaW4gdGhlIGNvZGUuIFRoaXMKLSAgICBwYXRjaCBmaXg6Ci0gICAgLSBkZXNjcmlwdG9yIGluaXRpemlhbGl6YXRpb24gKGNvbmZpZywgaW50ZXJmYWNlIGFuZCBlbmRwb2ludAotICAgICAgbXVzdCBiZSBvbmUgbmV4dC10byB0aGUgb3RoZXIgd2hlbiB0aGUgVVNCX0RUX0NPTkZJRyBtZXNzYWdlCi0gICAgICBpcyBzZW5kLgotICAgIC0gRklYIGxpdHRsZS9lbmRpYW4gYmlnZW5kaWFuIChpbnRyb2R1Y2UgdGhlIENPTkZJR19FSENJX0RFU0NfQklHX0VORElBTgotICAgICAgYW5kIHRoZSBDT05GSUdfRUhDSV9NTUlPX0JJR19FTkRJQU4pCi0gICAgLSBJbnRyb2R1Y2UgdGhlIGxpbnV4IHZlcnNpb24gb2YgdGhlIHVzYl9jb25maWdfZGVzY3JpcHRvciBhbmQKLSAgICAgIHVzYl9pbnRlcmZhY2UgZGVzY3JpcHRvci4gVGhpcyBkZXNjcmlwdG9yIGRvZXMndCBjb250YWlucwotICAgICAgdS1ib290IGV4dGVuc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGltaWNoYWVsQHlhaG9vLml0PgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDZiOTI0ODdkY2Y5YWZlODNhMzU3MDE1M2Q2Njk0MGZkYjI5M2JlNzYKLUF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgotRGF0ZToJRnJpIE5vdiAyOCAxMzoyMjowOSAyMDA4ICswMTAwCi0KLSAgICBVU0IgZWhjaSBmcmVlc2NhbGUgc3VwcG9ydAotCi0gICAgQWRkIFVTQiBlaGNpIGZyZWVzY2FsZSBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgYWFmMDk4Y2ZlZWQwNDU5NWQ0YzUxMDBmZmQzOTA5NWQ3OWVkYmY5MAotQXV0aG9yOiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci1EYXRlOglGcmkgTm92IDI4IDEzOjIwOjQ2IDIwMDggKzAxMDAKLQotICAgIFVTQiBlaGNpIGNvcmUgc3VwcG9ydAotCi0gICAgQWRkIFVTQiBlaGNpIGNvcmUgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDNlMTI2NDg0ZGY3ODY4ZTM0MTU0NWNjZTc0MGIyNGI2MmIwY2QzYjcKLUF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgotRGF0ZToJRnJpIE5vdiAyOCAxMzoxOToxOSAyMDA4ICswMTAwCi0KLSAgICBQcmVwYXJlIFVTQiBsYXllciBmb3IgZWhjaQotCi0gICAgUHJlcGFyZSBVU0IgbGF5ZXIgZm9yIGVoY2kgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGEwY2IzZmMzMWU1ODk5NmExYzU3MzI3MTVhYzA0MTU5ZDRkMjg0ZmQKLUF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgotRGF0ZToJV2VkIERlYyAxMCAxNTo1MjowNiAyMDA4ICswMTAwCi0KLSAgICBVU0Igc3RvcmFnZSBjbGVhbnVwIHBhdGNoCi0KLSAgICBDbGVhbnVwIHVzYiBzdG9yYWdlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpbWljaGFlbEB5YWhvby5pdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGZlMDMzYWQ2ZDA4ODMwNjNmZTg1NzIzN2FiYjk0MzZmYWIwMzIwOGMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE9jdCAxMiAwNjowMjo1NSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4dXAgbWlzYyB3YXJuaW5ncyBzdWNoIGFzIHByaW50ZidzIGFuZCBtaXNzaW5nIGNhc3RzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAxZjRhM2JiNTAzNDM3MTljNDM0ZDdlMjU0MWEyZjg2NDgwYTZkMjVjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBPY3QgMTIgMjI6MDk6MjYgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGNvbnZlcnQgb2xkIGJvYXJkcyB0byB1c2UgQ09CSlMteSBNYWtlZmlsZSBzdHlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMWY3NWQ2ZjBmZjAwNTc2MmQzZTZhZDkyYWU0Y2UyYWIzNjZiM2JiNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIyOjM4OjM3IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZjUzMy1zdGFtcDogcmV3cml0ZSByZXNvdXJjZSBzd2FwIGxvZ2ljCi0KLSAgICBUaGUgb2xkIHN3YXAgZnVuY3Rpb24gdGVuZGVkIHRvIGNsb2JiZXIgdW5yZWxhdGVkIHBpbnMgYW5kIHNjcmV3IHVwIG1hc2tzLgotICAgIFJld3JpdGUgdGhlIHRoaW5nIGZyb20gc2NyYXRjaCBzbyBpdCBvbmx5IHVzZXMgdGhlIHJlc291cmNlcyBpdCBuZWVkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDI5ZDRlYTBhOTA3M2M4MjQ2OTE4NDMzMTAxMDEzNmY1MmVkZjhkYjYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMjowODo0MiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYm9vdGxkcjogaW1wbGVtZW50IEJGNTN4L0JGNTZ4IExEUiBsb2FkZXIKLQotICAgIFRoZSBCRjUzeC9CRjU2eCBwYXJ0cyBkbyBub3QgaGF2ZSBhbiBvbi1jaGlwIFJPTSB0byBib290IExEUnMgb3V0IG9mCi0gICAgYXJiaXRyYXJ5IG1lbW9yeSBsb2NhdGlvbnMsIHNvIGltcGxlbWVudCBhIGJhc2ljIG9uZSBpbiBzb2Z0d2FyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDhiMzVlM2FlZmY2YzJkNzQ3YzM3Njk3OTk3YjNmOGE4MDg0MzIzMjkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMjowNTo0MiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogaW1wbGVtZW50IHJlYWwgd3JpdGUgc3VwcG9ydCBmb3IgT1RQCi0KLSAgICBOb3cgdGhhdCByZWFsIGRvY3VtZW50YXRpb24gaGFzIGJlZW4gcmVsZWFzZWQgZm9yIHRoZSBPVFAgaW50ZXJmYWNlIGFuZAotICAgIHRoZSBvbi1jaGlwIFJPTSB3cnQgd3JpdGluZy90aW1pbmdzLCBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgcmVhZGluZy93cml0aW5nCi0gICAgYXMgd2VsbCBhcyBkdW1waW5nL2xvY2tpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA5MzcyYzMyMTQ4MDhmYWI1NDUyMjdkOGQwZjc2YjNiZmNjNjc2MGVjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjI6MDQ6MDUgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHVwZGF0ZSBvbi1jaGlwIFJPTSBBUEkKLQotICAgIFRoaXMgYnJpbmdzIHRoZSBBUEkgZm9yIHRoZSBvbi1jaGlwIFJPTSBpbiBsaW5lIHdpdGggdGhlIHRvb2xjaGFpbiBhbmQKLSAgICBoYXJkd2FyZSBkb2N1bWVudGF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNzYzMzkwM2JmZjQzMmVjN2IyNzkwNWRjZTczOTY5NTg1NTNmMmJlNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIxOjUyOjE3IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBhbGxvdyBzZXJpYWwgY29uc29sZSB0byBiZSBkaXNhYmxlZAotCi0gICAgU29tZSBkZXZpY2VzIGhhdmUgbm8gVUFSVCBkZXZpY2UgcHVsbGVkIG91dCwgc28gYWxsb3cgcGVvcGxlIHRvIGRpc2FibGUgdGhlCi0gICAgZHJpdmVyIGNvbXBsZXRlbHkgaW4gZmF2b3Igb2Ygb3RoZXIgbWV0aG9kcyAobGlrZSBKVEFHLWNvbnNvbGUpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMzZlYThlOWFkMTEwN2FmMTJkMjQ0YmJhOGM3M2U4NWI5ZjY1NWU0NQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIxOjUxOjIwIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBzdXBwb3J0IGNvbnNvbGUtb3Zlci1KVEFHCi0KLSAgICBUaGUgQmxhY2tmaW4gSlRBRyBoYXMgdGhlIGFiaWxpdHkgdG8gcGFzcyBkYXRhIHZpYSBhIGJhY2stY2hhbm5lbCB3aXRob3V0Ci0gICAgaGFsdGluZyB0aGUgcHJvY2Vzc29yLiAgVXRpbGl6ZSB0aGF0IGNoYW5uZWwgdG8gZW11bGF0ZSBhIGNvbnNvbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjZjhmMmVmYjVmMzljNTIyNWRhOTIzOTFjMTRhMDdlZWNiZWNhODgxCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjE6NDk6MDYgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGhhbmRsZSBuZXcgYW5vbWFsaWVzIHdpdGggcmVzZXQKLQotICAgIFdvcmthcm91bmQgZnVuIG5ldyBhbm9tYWxpZXMgcmVsYXRlZCB0byBzb2Z0d2FyZSByZXNldCBvZiB0aGUgcHJvY2Vzc29yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYjFlOTQzNWI2NDMwNDNkZDhmYmQxZmNjNDczMDljNmFjYjdiM2M4ZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIxOjQ0OjAwIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBwYXNzIFJFVFggdG8gTGludXgKLQotICAgIE1ha2Ugc3VyZSB3ZSBzYXZlIHRoZSB2YWx1ZSBvZiBSRVRYIGF0IHBvd2VyIG9uIGFuZCB0aGVuIHBhc3MgaXQgb24gdG8gdGhlCi0gICAga2VybmVsIHNvIHRoYXQgaXQgY2FuIG5pY2VseSBkZWJ1ZyBhICJkb3VibGUtZmF1bHQtY2F1c2VkLWEtcmVzZXQiIGNyYXNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYjVlYmEzZmFmY2NjZDE5NzkzODBmMTJhMjU2YmQwZTE5YmUzZDYxZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIxOjQwOjI2IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBjbGFyaWZ5IHJlbG9jYXRpb24gY29tbWVudCBkdXJpbmcgaW5pdAotCi0gICAgUGVvcGxlIG9mdGVuIGFzayBxdWVzdGlvbnMgYWJvdXQgdGhlIGluaXQgcHJvY2VzcyBhbmQgd2hlbiB0aGluZ3MgZ28KLSAgICBmcm9tIGZsYXNoIHRvIHJlbG9jYXRlZCBiYXNlLCBzbyBjbGFyaWZ5IHRoZSBjb21tZW50cyBhIGJpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDk1NDMzZjZkNDNlZGU2YjQwYzFkOTAwZjNmNzA0YzgzOWFhMDc0ZjEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMToyMzo0MSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjoganVzdCBzZXQgU1AgcmVnaXN0ZXIgZGlyZWN0bHkgZHVyaW5nIGluaXQKLQotICAgIE5vIG5lZWQgdG8gc2V0IHRoZSBTUCByZWdpc3RlciBpbmRpcmVjdGx5IHRvIHRoZSBjb25maWd1cmVkIHZhbHVlIHdoZW4gaXQKLSAgICBjYW4gYmUgc2V0IGRpcmVjdGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNTEyMzBlNmUzNTZjY2Y0YzkzMmUwYzRmZjU0ZjFlNDlkYTAyMjg1YwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIxOjE1OjUzIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBhZGQgcG9ydG11eGluZyBmb3IgVUFSVHMgb24gdGhlIEJGNTF4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0ZjZhMzEzMjQwYzUzMTA0MmYxNjkwOWEzYTE3MGFiMDQ3Yjk1Nzc5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBKdW4gMSAwMToyNjoyOSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogcmVzcGVjdCBDT05GSUdfQ0xLSU5fSEFMRgotCi0gICAgQXMgcG9pbnRlZCBvdXQgYnkgSXZhbiBLb3J5YWtvdnNraXksIHRoZSBpbml0aWFsaXphdGlvbiBjb2RlIHdhcyBub3QKLSAgICBhY3R1YWxseSByZXNwZWN0aW5nIHRoZSBDT05GSUdfQ0xLSU5fSEFMRiBvcHRpb24gd2hlbiBjb25maWd1cmluZyB0aGUKLSAgICBQTExfQ1RMIHJlZ2lzdGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZGMyYmZiMGI1OGQ3NDYyYjllYmE2OGYzYWUzOGUzOGNhZGEwYWQzMwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSnVuIDEgMDE6MjE6MzQgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHVzZSBjb21tb24gbWVtY3B5IHJvdXRpbmUgZHVyaW5nIGluaXQKLQotICAgIFJhdGhlciB0aGFuIHVzaW5nIGEgbG9jYWwgY3VzdG9tIG1lbWNweSBmdW5jdGlvbiwganVzdCBjYWxsIHRoZSBleGlzdGluZwotICAgIG9wdGltaXplZCBCbGFja2ZpbiB2ZXJzaW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMzYyYzk0MzM0NzM2NGU5MzczYWY0YzU1MzA3Nzg0OTFhYjU2ZWMyZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgQXByIDkgMDI6Mjc6MDYgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHNldCBkZWZhdWx0IGJvb3QgU1BJIENTIGZvciBCRjUzOC9CRjUzOQotCi0gICAgVGhlIEJGNTM4L0JGNTM5IHVzZSBDUzIgZm9yIGJvb3Rpbmcgb2ZmIG9mIHJhdGhlciB0aGFuIENTMSBsaWtlIG5ld2VyCi0gICAgQmxhY2tmaW4gcGFydHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3NGRkZTgwYmQ1ZDU1YmMxNDY2MzA4NTNjYTE5MWFhZWVhN2MzMGY0Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBBcHIgOSAwMjoyMDo1OSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogcHVudCB1bnVzZWQgQkY1MzMtU1RBTVAgZGVmaW5pdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGZlZTUzMWVlZWZjM2I1ZjJjNjNjN2ZlMjdiOWY1NWQ5MjRjNTljMjYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIEFwciAxOCAyMDo0NDoxMSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogcmVzdXJyZWN0IEJGNTMzLVNUQU1QIHZpZGVvIHNwbGFzaCBkcml2ZXIKLQotICAgIFRoaXMgdmlkZW8gZHJpdmVyIHVzZWQgdG8gbGl2ZSBpbiB0aGUgQmxhY2tmaW4gY3B1IGRpcmVjdG9yeSwgYnV0IGl0IHdhcwotICAgIGxvc3QgZHVyaW5nIHRoZSB1bmlmaWNhdGlvbiBwcm9jZXNzLiAgVGhpcyBicmluZ3MgaXQgYmFjay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGE3NTBkMDM4ZjI1NDhkODQ2ZWExZTA0NmQ4NzNkYzkzMmQwNDEzMTkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJV2VkIEFwciA5IDAyOjMxOjI5IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiB0aWdodGVuIHVwIHBvc3QgbWVtb3J5IGNvZGluZyBzdHlsZQotCi0gICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2VzIGhlcmU7IGp1c3QgY2xlYW51cCBjb2RlIHN0eWxlIGEgYml0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMDY0OTkwOGY5MmM5YmQyMTRkZDEzOWFhM2Q0Njk4YzE2NTRhNDVjNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglXZWQgQXByIDkgMDI6Mjk6MTggMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTM3LXN0YW1wIG5hbmQ6IGZpeCBtb3JlIHN0eWxlIGVycm9ycyBpbiBwcmV2aW91cyBjb21taXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDQxZjMzMjVhZTlhZGQ2NDEwMzZkN2NiMzYyZTg4NGI2OThlNTNmMDcKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMDozMToxNyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZHJvcCBkZWFkL3dyb25nIGRlYnVnIGNvZGUgaW4gaW5pdGRyYW0oKQotCi0gICAgVGhlIERFQlVHIGNvZGUgaW4gaW5pdGRyYW0oKSBpcyBxdWl0ZSBvbGQgYW5kIHdhcyBuZXZlciByZWFsbHkgdXNlZnVsLCBzbwotICAgIGp1c3QgZHJvcCBpdCBhbHRvZ2V0aGVyLiAgQ29tbW9uIEJsYWNrZmluIGRlYnVnIGNvZGUgZG9lcyBhIGJldHRlciBqb2IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2NWJhMWFiZDNiOTBlMGIyNTg1NzQ1ODA5Yjc4ZTI2NTFiZDNiYWNiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBPY3QgMTEgMjA6MzA6MjggMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGJmNTMzLWV6a2l0OiBzaHVmZmxlIGZsYXNoIGRlZmluZXMgYSBsaXR0bGUKLQotICAgIFNvbWUgb2YgdGhlIGZsYXNoIGRlZmluZXMgd2VyZW4ndCBpbiB0aGUgY29ycmVjdCBsb2NhdGlvbiBhbmQgY2F1c2VkIGJ1aWxkCi0gICAgcHJvYmxlbXMgaW4gc29tZSBjb25maWd1cmF0aW9ucywgc28gbGV0J3MgbW92ZSB0eXBlcyBhbmQgZGVmaW5lcyB0byBiZXR0ZXIKLSAgICBsb2NhbCBsb2NhdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiZTg1M2JmODZiNDFlOTFmNGM0MjJmMGY1NmZkZjg3ZWEzMTkxMjY2Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBPY3QgNiAwNDoxNjo0NyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2Zpbjogb3ZlcmhhdWwgaTJjIGRyaXZlcgotCi0gICAgVGhlIGN1cnJlbnQgQmxhY2tmaW4gaTJjIGRyaXZlciBkb2VzIG5vdCB3b3JrIHByb3Blcmx5IHdpdGggY2VydGFpbiBkZXZpY2VzCi0gICAgZHVlIHRvIGl0IGJyZWFraW5nIHVwIHRyYW5zZmVycyBpbmNvcnJlY3RseS4gIFRoaXMgaXMgYSByZXdyaXRlIG9mIHRoZQotICAgIGRyaXZlciBhbmQgcmVsb2NhdGVzIGl0IHRvIHRoZSBuZXdlciBwbGFjZSBpbiB0aGUgc291cmNlIHRyZWUuCi0KLSAgICBBbHNvIHJlbW92ZSBkdXBsaWNhdGVkIEkyQyBzcGVlZCBkZWZpbmVzIGluIEJsYWNrZmluIGJvYXJkIGNvbmZpZ3MgYW5kCi0gICAgZGlzYWJsZSBJMkMgc2xhdmUgYWRkcmVzcyB1c2FnZSBzaW5jZSBpdCBpc24ndCBpbXBsZW1lbnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGI2ZWRjNzE5YTEwNmFiN2ZhNmU2OTUwYjRkOTdiYzM5YzEzNjhlNDUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCA2IDA0OjAwOjA3IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiByZXNwZWN0IENPTkZJR19TWVNfTU9OSVRPUl9MRU4gZm9yIGRlZmF1bHQgZmxhc2ggcHJvdGVjdGlvbgotCi0gICAgUmVzcGVjdCB0aGUgQ09ORklHX1NZU19NT05JVE9SX0xFTiBkZWZpbmUgcmF0aGVyIHRoYW4gYXNzdW1pbmcgYSBzaXplIG9mCi0gICAgMTI4a0Igd2hlbiBzZXR0aW5nIHVwIHRoZSBkZWZhdWx0IGZsYXNoIHByb3RlY3Rpb24gcmVnaW9uIGZvciBVLUJvb3QKLSAgICBpdHNlbGYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3OGEwYmE3ZGMyNGM5NjgyMzcxZjZlZTg1NDliNTY5ZmI1NzNhMzI5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBPY3QgNiAwMzo1NzozOSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogcmVzcGVjdC9jaGVjayBDT05GSUdfU1lTX0dCTF9EQVRBX1NJWkUKLQotICAgIFdoZW4gc2V0dGluZyB1cCB0aGUgZ2xvYmFsIGRhdGEsIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gc2l6ZW9mKCksIHVzZSB0aGUKLSAgICBjb21tb24gQ09ORklHX1NZU19HQkxfREFUQV9TSVpFIGRlZmluZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDAxODE1YzJkMDZjNWI4MzhmMmNkNTM2NzAzZTQ3YmQyYzkxNDgxOTQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCA2IDAzOjUyOjI0IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBpbXBsZW1lbnQgZ2VuZXJhbCBzdXBwb3J0IGZvciBDT05GSUdfU1RBVFVTX0xFRAotCi0gICAgSGVyZSBhcmUgdGhlIEJsYWNrZmluLXNwZWNpZmljIGFuZCBib2FyZC1pbmRlcGVuZGVudCBwaWVjZXMgZm9yIHN0YXR1cyBsZWRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjg4MmI1YTc5YTMyNDc0OTRiNjJjMDUwMTVmYTY3MjU1N2YxYmZhYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gT2N0IDYgMDM6NDk6MzIgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGRvIG5vdCBpbml0IGkyYyBpbiBCbGFja2ZpbiBib2FyZCBpbml0Ci0KLSAgICBUaGUgY29tbW9uIGNvZGUgdGFrZXMgY2FyZSBvZiBjYWxsaW5nIGkyY19pbml0KCkgd2hlbiBuZWVkZWQsIHNvIG5vIHBvaW50Ci0gICAgaW4gdXMgZG9pbmcgaXQgYXMgd2VsbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDExMThlYTczNjk4ZWVlNmU3MmVmNWNiZmMwMGU0MTc0NjA0MDMwNGYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCA2IDAzOjQyOjIwIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBiZmluX21hYzogdXBkYXRlIHBvcnQgbXV4aW5nCi0KLSAgICBBZGRzIHN1cHBvcnQgbW9yZSBCbGFja2ZpbiBwYXJ0cyBhbmQgZml4ZXMgYnJva2VuIG11eGluZyBmb3Igb2xkZXIgb25lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDA1Yjc1ZTQ4ODMyZmM0YWZlZWNmOGU3NmQ3MDQzNDk1NTdkZmZhMzUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCA2IDAzOjM1OjQ0IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBmaXggZGNhY2hlIGhhbmRsaW5nIHdoZW4gZG9pbmcgZG1hIG1lbWNweSdzCi0KLSAgICBPdXIgZGNhY2hlIGludmFsaWRhdGUgZnVuY3Rpb24gZG9lc24ndCBqdXN0IGludmFsaWRhdGUsIGl0IGFsc28gZmx1c2hlcy4KLSAgICBTbyByZW5hbWUgdGhlIGZ1bmN0aW9uIGFjY29yZGluZ2x5IGFuZCBmaXggdGhlIGRtYV9tZW1jcHkoKSBmdW5jdGlvbiBzbyBpdAotICAgIGRvZXNuJ3QgaW5hZHZlcnRlbnRseSBjb3JydXB0IHRoZSBkYXRhIGRlc3RpbmF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjhlNTYzMjQ5NDE2ODA5NWQ3NWYxMjBhZjcwMDQzYjY4YWZkMjQ3NgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTg6NTY6NTYgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGRvbnQgZ2VuZXJhdGUgbGRycyB3aXRoIC0tZm9yY2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDc0NjI5MGRmZDg2YTcwYjQxZmM1ZmRkM2RmMTQyNGE2NDdkNWM1ZTgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEF1ZyA3IDE4OjU1OjMwIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBwYXNzIC0tYm1vZGUvLS1pbml0Y29kZSB3aGVuIGNyZWF0aW5nIGxkcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMDMzMmU0ZGY3MWZjY2Y5YTk2YzVhNDM5M2UzYzVkNWRhYTUwODgwYQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTg6Mzk6MjcgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IG1pbmltaXplIHRpbWUgY2FjaGUgaXMgdHVybmVkIG9mZiB3aGVuIHJlcGxhY2luZyBjcGxiIGVudHJpZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDIxZDYzMTM2MDQzMGNmMGFlOTA5OTYxMjI3M2NkNGRlMjg5MTFiYTkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEF1ZyA3IDE1OjMxOjEzIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBzcGxpdCBjYWNoZSBoYW5kbGluZyBvdXQgb2YgZG1hX21lbWNweSgpCi0KLSAgICBDcmVhdGluZyBhIG5ldyBkbWFfbWVtY3B5KCkgZnVuY3Rpb24gdGhhdCBza2lwcyBhbGwgY2FjaGUgY2hlY2tzIGFsbG93cyB1cwotICAgIHRvIHVzZSB0aGUgZnVuY3Rpb24gaW4gdmVyeSBlYXJseSBpbml0IHdoZXJlIHRoZSBjYWNoZSBpcyBub3QgeWV0IHNldHVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZDMxZWIzODUxMmJlZDM3N2Q1ZDRiM2M2OTY2NjJlNTIxMjBhMmU0YwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTU6MzA6NDkgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGFib3J0IGRtYV9tZW1jcHkoKSBmb3IgTDEgc2NyYXRjaHBhZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgODFiNzk5YWRkNzA5MTc3ZTgzODQ2NjQ2MWY3Yjk5ODk0ODhiMGZkNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTU6Mjc6NTIgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHJlbmFtZSBib290bS5jIHRvIGJvb3QuYwotCi0gICAgVGhlIGJvb3QgZmlsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIG1vcmUgdGhhbiBqdXN0ICJib290bSIsIHNvIHJlbmFtZSBpdAotICAgIGFjY29yZGluZ2x5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZDdjYTdkZDViZmM0MThhYzE3M2U5ZDI3MTJmNmNjMmQ4MTQ3YTA5MQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTM6MjI6MzcgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHNldCBtb3JlIHNhbmUgZGVmYXVsdCBib2FyZCBjb25maWcgdmFsdWVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzNmNkNTJhMDA3OTRmYjE1ZmZhYjA1ZDY0MGFjY2E5MmQ3NDgyOTkzCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgNyAxNToyNDo1OSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogY29udmVydCBDTURfTElORV9BRERSIHRvIENPTkZJR19MSU5VWF9DTURMSU5FX3tBRERSLFNJWkV9Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjODA1NGJjMTJlMDA2NjliZDc1ODhmMmIzMGZlZjQ4YWE5NGJhYmFjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgNyAxMzoyMToyNyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYWRkIGJpdCBkZWZpbmVzIGZvciBERFIgcGFydHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDE1NDUwMmZlMDc5NmYzYjdhNDY5ODM3OGM1ZDIwODBhZTI4YTk3ODIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEF1ZyA3IDEzOjIxOjExIDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBhZGQgZGVmaW5lcyB0byBkZXNjcmliZSBhY3RpdmUgYm9vdHJvbSBiZWhhdmlvcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmI2ZmQ1Yzc3ZGI5YzZlZDNjZWE5Nzk5Yzg2ZmY5MjJjZjAxMDdiMgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAyNyAxNjowMzo1MyAyMDA5IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBmaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZmx1c2hfY2FjaGUnIGVycm9yIGluIHNpbXBjODMxMyBidWlsZAotCi0gICAgZXh0ZW5kIGNvbW1pdCBjNzA1NjRlNmIxYmQwOGYzMjMwMTgyMzkyMjM4OTA3ZjM1MzFhODdlCi0gICAgIk5BTkQ6IEZpeCBjYWNoZSBhbmQgbWVtb3J5IGluY29uc2lzdGVuY3kgaXNzdWUiIHRvIGFkZCB0aGUgY2FjaGUubyBkZXBlbmRlbmN5Ci0gICAgdG8gdGhlIHNpbXBjODMxMyBidWlsZCBhbmQgZml4IHRoaXM6Ci0KLSAgICAuLi5MYXJnZSBQYWdlIE5BTkQuLi5Db25maWd1cmluZyBmb3IgU0lNUEM4MzEzIGJvYXJkLi4uCi0gICAgbmFuZF9ib290X2ZzbF9lbGJjLm86IEluIGZ1bmN0aW9uIGBuYW5kX2Jvb3QnOgotICAgIG5hbmRfc3BsL2JvYXJkL3NoZWxkb24vc2ltcGM4MzEzL25hbmRfYm9vdF9mc2xfZWxiYy5jOjE1MDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZmx1c2hfY2FjaGUnCi0gICAgbWFrZVsxXTogKioqIFsvaG9tZS9yMWFhaGEvZ2l0L3UtYm9vdC1tcGM4M3h4L25hbmRfc3BsL3UtYm9vdC1zcGxdIEVycm9yIDEKLSAgICBtYWtlOiAqKiogW25hbmRfc3BsXSBFcnJvciAyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTRhN2NjNDkxMmZlZWZhNDViZTk2MWNjNDdjYzE1OTU2MzcyNWQyZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyOCAwOToyNTozMSAyMDA5ICswMTAwCi0KLSAgICBtcGM4NTM2ZHMuYzogaW5jbHVkZSBzYXRhLmggdG8gZm9yIG5lZWRlZCBmdW5jdGlvbiBwcm90b3R5cGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMmZiMjYwNGQ1YzIwYmViMDYxYjBhOTQyODJiN2Y2ZWIxNGQwMGNiOAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEphbiAyNyAxODowMzoxMiAyMDA5IC0wNjAwCi0KLSAgICBDb21tYW5kIHVzYWdlIGNsZWFudXAKLQotICAgIFJlbW92ZSBjb21tYW5kIG5hbWUgZnJvbSBhbGwgY29tbWFuZCAidXNhZ2UiIGZpZWxkcyBhbmQgdXBkYXRlCi0gICAgY29tbW9uL2NvbW1hbmQuYyB0byBkaXNwbGF5ICJuYW1lIC0gdXNhZ2UiIGluc3RlYWQgb2YKLSAgICBqdXN0ICJ1c2FnZSIuIEFsc28gcmVtb3ZlIG5ld2xpbmVzIGZyb20gY29tbWFuZCB1c2FnZSBmaWVsZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNzk2MjFiYzEwYmE4YjhjNDVkMzQ4OTk0YWJhNWI5ZTQ5MjNjYjc3YgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEphbiAyNyAxODowMzoxMSAyMDA5IC0wNjAwCi0KLSAgICBhbWNjOiBDbGVhbiB1cCBjb21tYW5kIHVzYWdlIG91dHB1dAotCi0gICAgVXBkYXRlIHRhaWh1IGFuZCB0YWlzaGFuIGNvbW1hbmRzIHRvIHVzZSBjbWRfdXNhZ2UoKSBmdW5jdGlvbgotICAgIHRvIGRpc3BsYXkgdXNhZ2UgbWVzc2FnZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNjJjM2FlN2M2ZWYyMTViMWFmYTYxNGFiZGY2MWFjZjA3Nzc1MjIwNwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEphbiAyNyAxODowMzoxMCAyMDA5IC0wNjAwCi0KLSAgICBTdGFuZGFyZGl6ZSBjb21tYW5kIHVzYWdlIG1lc3NhZ2VzIHdpdGggY21kX3VzYWdlKCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA4NGNkZTJiYjQwOWMwN2M2ZWYzNmExOTJkMTk0MzU5ZDRlOWNjZDcwCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgSmFuIDI3IDE4OjAzOjA5IDIwMDkgLTA2MDAKLQotICAgIHBjczQ0MGVwOiBDbGVhbiB1cCBsZWQgY29tbWFuZCBkZWZpbml0aW9uCi0KLSAgICBUaGUgcGNzNDQwZXAncyBsZWQgY29tbWFuZCB1c2FnZSBmb3JtYXR0aW5nIGlzIG5vbi1zdGFuZGFyZC4gIEl0Ci0gICAgd2FzIG1hZGUgc3RhbmRhcmQgaW4gcHJlcGFyYXRpb24gZm9yIGxhcmdlciBjb21tYW5kIHVzYWdlIHVwZGF0ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgOTUwN2U3ODY3ZTA0ZGM0OGM4MGVlMzMzYzJhOWE1ZTcwZTg4N2Y2MgotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIEphbiAyNyAxODowMzowOCAyMDA5IC0wNjAwCi0KLSAgICBDbGVhbiB1cCBkaXVmYiBjb21tYW5kIGRlZmluaXRpb25zCi0KLSAgICBUaGUgZGl1ZmIgY29tbWFuZCB1c2FnZSBmb3JtYXR0aW5nIGlzIG5vbi1zdGFuZGFyZC4gIEl0IHdhcwotICAgIG1hZGUgc3RhbmRhcmQgaW4gcHJlcGFyYXRpb24gZm9yIGxhcmdlciBjb21tYW5kIHVzYWdlIHVwZGF0ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNjQ1MGE4NDg1ODM2ZmM4MDYxNWFlNmRlNmE4NjRjMzMzNjliNDRmNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyOCAwMDoyOToyNiAyMDA5ICswMTAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HLCB0aW55IGNvZGluZyBzdHlsZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGNmN2UzOTlmYjM1YjNhZWE5MGEyN2QxZGY3MmY0NWY1ZDYxNTYyMDQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIEphbiAyNyAxNjoxMjoyMSAyMDA5IC0wNTAwCi0KLSAgICBTQVRBOiBkbyBub3QgYXV0by1pbml0aWFsaXplIGR1cmluZyBib290Ci0KLSAgICBSYXRoZXIgdGhhbiBoYXZlIHRoZSBib2FyZCBjb2RlIGluaXRpYWxpemUgU0FUQSBhdXRvbWF0aWNhbGx5IGR1cmluZyBib290LAotICAgIG1ha2UgdGhlIHVzZXIgbWFudWFsbHkgcnVuICJzYXRhIGluaXQiLiAgVGhpcyBicmluZ3MgdGhlIFNBVEEgc3Vic3lzdGVtIGluCi0gICAgbGluZSB3aXRoIGNvbW1vbiBVLUJvb3QgcG9saWN5LgotCi0gICAgUmF0aGVyIHRoYW4gaGF2aW5nIGEgZGVkaWNhdGVkIHdlYWsgZnVuY3Rpb24gImlzX3NhdGFfc3VwcG9ydGVkIiwgcGVvcGxlCi0gICAgY2FuIG92ZXJyaWRlIHNhdGFfaW5pdGlhbGl6ZSgpIHRvIGRvIHRoZWlyIHdlaXJkIGJvYXJkIHN0dWZmLiAgVGhlbiB0aGV5Ci0gICAgY2FuIGNhbGwgdGhlIGFjdHVhbCBfX3NhdGFfaW5pdGlhbGl6ZSgpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNTA5NzA4Mzk3MTJkZGEzNTM5OWUyZmE4M2ZlODE4ZGY5MzU0ZDYxOAotQXV0aG9yOiBSaWNoYXJkIFJldGFudWJ1biA8UmljaGFyZFJldGFudWJ1bkBSdWdnZWRDb20uY29tPgotRGF0ZToJTW9uIEphbiAyNiAwODo0NToxNCAyMDA5IC0wNTAwCi0KLSAgICBwYXJ0X2VmaTogRml4IHBhcnRpdGlvbiBzaXplIGNhbGN1bGF0aW9uIGR1ZSB0byBpbmNsdXNpdmUgZW5kaW5nIExCQS4KLQotICAgIFRoZSBlbmRpbmcgTEJBIGlzIGluY2x1c2l2ZS4gSGVuY2UsIHRoZSBwYXJ0aXRpb24gc2l6ZSBzaG91bGQgYmUKLSAgICAoKGVuZGluZy1MQkEgKyAxKSAtIHN0YXJ0aW5nLUxCQSkgdG8gZ2V0IHRoZSBwcm9wZXIgcGFydGl0aW9uIHNpemUuCi0KLSAgICBUaGlzIGlzIGNvbmZpcm1lZCBhZ2FpbnN0IHRoZSByZXN1bHRzIGZyb20gdGhlIHBhcnRlZCB0b29sLgotICAgIChlLmcuIHVzZSBwYXJ0ZWQgL2Rldi9zZGEgLXMgdW5pdCBTIHByaW50KSBhbmQgb2JzZXJ2ZSB0aGUgc2l6ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci0KLWNvbW1pdCBiNWIwMDRhZDhhMGFjNmY5OGJkNTcwOGVjOGIyMmZiZGRkMWMxMDQyCi1BdXRob3I6IFRvbWFzeiBGaWdhIDx0b21hc3ouZmlnYUBnbWFpbC5jb20+Ci1EYXRlOglUdWUgRGVjIDMwIDE4OjM1OjU3IDIwMDggKzAxMDAKLQotICAgIGpmZnMyOiBGaXggemVybyBzZWN0b3Jfc2l6ZSB3aGVuIG5vdCB1c2luZyBDT05GSUdfSkZGUzJfQ01ETElORQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIGJ1ZyAoPykgaW50cm9kdWNlZCBhZnRlciBpbmNsdXNpb24gb2YgdGhlIG5ldwotICAgIEpGRlMyIGNvZGUuCi0KLSAgICBXaGVuIG5vdCB1c2luZyBDT05GSUdfSkZGUzJfQ01ETElORSwgdGhlIGNvZGUgaW4gY21kX2pmZnMyLmMgZG9lc24ndAotICAgIGZpbGwgaW4gcGFydC0+c2VjdG9yX3NpemUgKGtlZXBpbmcgaXQgYXMgMCksIGJ1dCBhIGNvcnJlY3QgdmFsdWUgaXMKLSAgICBuZWVkZWQgYnkgdGhlIGNvZGUgaW4gamZmczJfMXBhc3MuYy4gVGhpcyBjYXVzZXMgYWxsIEpGRlMyIGFjY2Vzc2VzCi0gICAgdG8gYmUgaW4gdGhlIHNhbWUgcGxhY2Ugb2YgdGhlIG1lbW9yeSwgd2hhdCBvYnZpb3VzbHkgbWVhbnMKLSAgICBpbXBvc3NpYmlsaXR5IHRvIHVzZSB0aGUgSkZGUzIgcGFydGl0aW9uLgotCi0gICAgVGhpcyBwcm9ibGVtIGlzIGZpeGVkIGluIHRoaXMgcGF0Y2ggYnkgaW5jbHVkaW5nIHNlY3RvciBzaXplCi0gICAgY2FsY3VsYXRpb24gaW4gbm9uLUNPTkZJR19KRkZTMl9DTURMSU5FIG10ZHBhcnRzX2luaXQgdmFyaWFudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbWFzeiBGaWdhIDx0b21hc3ouZmlnYV9hdF9nbWFpbC5jb20+Ci0KLWNvbW1pdCBiYTY5ZGMyNmE1ZmQ2MDZkYTQ5NTczYmIyZjE1ZTc1NmEzNGYzZjk4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBEZWMgMzAgMDI6NTk6MjUgMjAwOCAtMDUwMAotCi0gICAgc2F2ZWVudjogc3RhbmRhcmRpemUgZW5hYmxlbWVudAotCi0gICAgUmF0aGVyIHRoYW4gc3BlY2lhbCBjYXNpbmcgZWFjaCBlbnZpcm9ubWVudCB0eXBlIGZvciBlbmFibGluZyB0aGUgc2F2ZWVudgotICAgIGNvbW1hbmQsIGhhdmUgdGhlbSBhbGwgYmVoYXZlIHRoZSBzYW1lLiAgVGhpcyBhdm9pZHMgYml0cm90IGFzIG5ldyBlbnYKLSAgICBzb3VyY2VzIGFyZSBhZGRlZC9yZW1vdmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmFjNjk4NWE3NDY2YTFjOGE3YWE4YjJmYTI0ZDM2MDkyNWE4Mjc2NAotQXV0aG9yOiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Ci1EYXRlOglNb24gRGVjIDI5IDE3OjM2OjAxIDIwMDggLTA2MDAKLQotICAgIHNvZnRfaTJjLmMgYWRkIG9wdGlvbiBmb3IgcmVwZWF0ZWQgc3RhcnQgaW4gaTJjX3JlYWQoKQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgI2RlZmluZSB0byBvcHRpb25hbGx5IGNoYW5nZSB0aGUgYmVoYXZpb3VyIG9mCi0gICAgaTJjX3JlYWQoKSBpbiBzb2Z0X2kyYy5jIHRvIHNlbmQgYW4gSTJDIHJlcGVhdGVkIHN0YXJ0IGluc3RlYWQgb2YgYQotICAgIHN0b3Atc3RhcnQgYmV0d2VlbiBzZW5kaW5nIHRoZSBkZXZpY2UgYWRkcmVzcyBwb2ludGVyIHdyaXRlIGFuZAotICAgIHJlYWRpbmcgYmFjayB0aGUgZGF0YS4gIFRoZSBjdXJyZW50IGJlaGF2aW91ciBpcyByZXRhaW5lZCBhcyB0aGUKLSAgICBkZWZhdWx0LgotCi0gICAgV2hpbGUgbW9zdCBkZXZpY2VzIHdpbGwgd29yayBlaXRoZXIgd2F5LCBJIGhhdmUgYSBzbWFydCBiYXR0ZXJ5KCopCi0gICAgdGhhdCByZXF1aXJlcyByZXBlYXRlZCBzdGFydCwgYW5kIHNvbWVvbmUgYXQgc29tZSBwb2ludCBmb3VuZCBhCi0gICAgZGV2aWNlIHRoYXQgcmVxdWlyZWQgYSBzdG9wLXN0YXJ0LgotCi0gICAgKCopIGh0dHA6Ly93d3cuaW5zcGlyZWQtZW5lcmd5LmNvbS9TdGFuZGFyZF9Qcm9kdWN0cy9OTDIwNTQvTkwyMDU0JTIwUmV2MS4wJTIwRGF0YSUyMFNoZWV0LnBkZgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgotCi1jb21taXQgMzQyOTA3MTcwMDk2M2NhMmY5NDRjNTFkNjk1YTc0ODFhZjBjZWUzMwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEphbiAyNyAyMjowNzoxNCAyMDA5ICswMTAwCi0KLSAgICB7ZGVsdGEsenlsb25pdGV9L2xvd2xldmVsX2luaXQuUzogZml4IHR5cG8KLQotICAgIENvbW1pdCA5ZDgwM2Q4YyBtaXN0YWtlbmx5IGNoYW5nZWQgc29tZSBjb25zdGFudHMKLSAgICBmcm9tIDB4MzAwIGludG8gMzAwIC0gdGhpcyBwYXRjaCBmaXhlcyBpdC4KLQotICAgIFBvaW50ZWQgb3V0IGJ5IFRvbSBFdmFucyA8dG9tQGNlb3MuY29tLmF1Piwgc2VlCi0gICAgaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC81MTk5MiBmb3IKLSAgICBkZXRhaWxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDFiYzQzNDM3MzAxM2FmMjQxODM1YzE0MDExYWMzZjI5MWRjY2JmNTMKLUF1dGhvcjogU3RlZmFuIEFsdGhvZWZlciA8c3RlZmFuLmFsdGhvZWZlckB3ZWIuZGU+Ci1EYXRlOglTYXQgRGVjIDIwIDE5OjQwOjQxIDIwMDggKzAxMDAKLQotICAgIGRyaXZlcnMvbmV0L2UxMDAwLmM6IG1pc3NpbmcgdGVybWluYXRvciBmb3Igc3VwcG9ydGVkIGRldmljZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBBbHRob2VmZXIgPHN0ZWZhbi5hbHRob2VmZXJAd2ViLmRlPgotCi1jb21taXQgNjVmN2Q0MTAzMWE3MGIxNjQ5YjM1MDIwOTk1YzUwNWVkY2E5MTUzMwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEphbiAyNyAyMTozNjoyOCAyMDA5ICswMTAwCi0KLSAgICBmYXQuYzogZml4IHdhcm5pbmc6IGFycmF5IHN1YnNjcmlwdCBpcyBhYm92ZSBhcnJheSBib3VuZHMKLQotICAgIEZpeCBiYXNlZCBvbiBzdWdnZXN0aW9uIGJ5IERhdmlkIEhhd2tpbnMgPGR3aEBvdnJvLmNhbHRlY2guZWR1Pi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxMDdiODAxY2YzZmUzOTYxMmQ2OWQ3MDU4MWViYzNiZjVlMjE1NTU0Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIEphbiAyIDE1OjExOjQxIDIwMDkgKzAxMDAKLQotICAgIEZpeCBndW56aXAgaW4gY2FzZSBvZiBpbnN1ZmZpY2llbnQgb3V0cHV0IGJ1ZmZlcgotCi0gICAgVS1Cb290J3MgZ3VuemlwKCkgZnVuY3Rpb24gZG9lcyBub3QgaGFuZGxlIHRoZSByZXR1cm4gY29kZQotICAgIG9mIHpsaWIncyBpbmZsYXRlKCkgZnVuY3Rpb24gY29ycmVjdGx5LiBndW56aXAoKSBpcyBpbXBsZW1lbnRlZAotICAgIHRvIHVuY29tcHJlc3MgYWxsIGlucHV0IGRhdGEgaW4gb25lIHJ1bi4gU28gdGhlIGNvcnJlY3QgcmV0dXJuCi0gICAgY29kZSBmb3IgdGhlIGdvb2QgY2FzZSBpcyBaX1NUUkVBTV9FTkQuIEluIGNhc2Ugb2YgaW5zdWZmaWNpZW50Ci0gICAgb3V0cHV0IGJ1ZmZlciBtZW1vcnkgaW5mbGF0ZSByZXR1cm5zIFpfT0suIEZvciBndW56aXAoKSB0aGlzCi0gICAgaXMgYW4gZXJyb3IuCi0KLSAgICBJdCBhbHNvIG1ha2VzIHNlbnNlIHRvIG1lIHRvIGNhbGwgaW5mbGF0ZUVuZCgpIGFsc28gaW4gY2FzZQotICAgIG9mIGFuIGVycm9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCAyYTYxZWZmNmE4MmYwZDZlMjMzNWQ5Njg3OTliM2ZiZWIzZmY0ZDhlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjEgMTc6MjU6MDEgMjAwOSArMDEwMAotCi0gICAgTUlQUzogQWRkIFZDVCBib2FyZCBzZXJpZXMgc3VwcG9ydCAoUGFydCAzLzMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhZTY5MWU1NzE5YzQ4ZjFkMjgyNmNiNzI3MjI0OTdkMWQxNjI3NjViCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjEgMTc6MjQ6NDkgMjAwOSArMDEwMAotCi0gICAgTUlQUzogQWRkIFZDVCBib2FyZCBzZXJpZXMgc3VwcG9ydCAoUGFydCAyLzMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1MDc1Mjc5MGJjOTI4NWMwYzFjNTIzNWU4OGYzYTRlZjJlZWMxZTcyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjEgMTc6MjQ6MzkgMjAwOSArMDEwMAotCi0gICAgTUlQUzogQWRkIFZDVCBib2FyZCBzZXJpZXMgc3VwcG9ydCAoUGFydCAxLzMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwM2QzYmZiMDA4MDZiNTQ0MWYxODcxYzc0MDhjMTc0OTg2M2UwZmRjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjEgMTc6MjA6MjAgMjAwOSArMDEwMAotCi0gICAgTUlQUzogQWRkIGZsdXNoX2RjYWNoZV9yYW5nZSgpIGFuZCBpbnZhbGlkYXRlX2RjYWNoZV9yYW5nZSgpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgZmx1c2hfL2ludmFsaWRhdGVfZGNhY2hlX3JhbmdlKCkgdG8gdGhlIE1JUFMgYXJjaGl0ZWN0dXJlLgotICAgIFRob3NlIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGZvciB0aGUgdXBjb21pbmcgZGNhY2hlIHN1cHBvcnQgZm9yIHRoZSBVU0IKLSAgICBFSENJIGRyaXZlci4gSSBjaG9zZSB0aGlzIEFQSSBiZWNhdXNlIHRob3NlIGNhY2hlIGhhbmRsaW5nIGZ1bmN0aW9ucyBhcmUKLSAgICBhbHJlYWR5IHByZXNlbnQgaW4gdGhlIFBQQyBhcmNoaXRlY3R1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGRlODMyYTk5NDE0ZmYwNmE0YjJjZGM5ZjUyODBiMzg3ZGEwMzk4MzQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEphbiAyNiAxMDowNToyMCAyMDA5ICswMTAwCi0KLSAgICBuYW5kX3NwbDogRml4IGNvbXBpbGUgcHJvYmxlbSB3aXRoIGJvYXJkX25hbmRfaW5pdCgpIHByb3RvdHlwZQotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBub3cgb2Jzb2xldGUgYW5kIGFkZGl0aW9uYWxseSB3cm9uZ2x5IGRlZmluZWQKLSAgICBib2FyZF9uYW5kX2luaXQoKSBwcm90b3R5cGUgZnJvbSBuYW5kX3NwbC9uYW5kX2Jvb3QuYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU4ZWFjNDM3MTg5NDMwZDhlMDRhNWQyNTRlZDkyYzU4YmM1MzRhNzkKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLURhdGU6CVdlZCBKYW4gMTQgMDg6NDQ6MjYgMjAwOSAtMDUwMAotCi0gICAgQ0ZJOiBBZGQgZ2VvbWV0cnkgcmV2ZXJzYWwgZm9yIFNUTWljcm8gTTI5VzMyMEVUCi0KLSAgICBBZGRlZCBmbGFzaF9maXh1cF9zdG0gdG8gZml4IGdlb21ldHJ5IHJldmVyc2FsIG9uIFNUTWljcm8gTTI5VzMyMEVUIGZsYXNoIGNoaXAuCi0KLSAgICBNb2RlbGVkIGFmdGVyIGZsYXNoX2ZpeHVwX2FtZCwgdGhpcyBwYXRjaCBoYW5kbGVzIHRoZSBnZW9tZXRyeSByZXZlcnNhbAotICAgIG9yIGVyYXNlIHNlY3RvcnMgdGhhdCBleGlzdCBmb3IgU1QgTWljcm8gKG5vdyBOdW1vbnl4KSBNMjlXMzIwRVQgZmxhc2guCi0gICAgU2luY2UgSSBjYW5ub3QgdGVzdCBhbGwgU1RNJ3MgY2hpcHMsIHRoZSBkZXRlY3Rpb24gaXMgaW1wbGVtZW50ZWQgYXMKLSAgICBuYXJyb3cgYXMgcG9zc2libGUgZm9yIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGY4ZTg1MWU4OTdiNTM1OTU5YTA3ODExNzE5MTBjZDk3ZjMzYzMwYwotQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+Ci1EYXRlOglUdWUgRGVjIDE2IDE3OjI1OjU1IDIwMDggKzAxMDAKLQotICAgIENGSTogaW5jcmVhc2UgcGVyZm9ybWFuY2Ugb2YgZnVuY3Rpb24gZmluZF9zZWN0b3IoKQotCi0gICAgVGVzdGVkIG9uIFRRTTUyMDBTLUJEIHdpdGggU2Ftc3VuZyBLOFAyODE1VVFCCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTcyOTI4NzFhNzljYzQ4ZDk4ZTNhNzA4ZGQzYzNiODE1ODBkYjZlZgotQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+Ci1EYXRlOglUdWUgRGVjIDE2IDE3OjI1OjU0IDIwMDggKzAxMDAKLQotICAgIENGSTogYXZvaWQgcmVkdW5kYW50IGZ1bmN0aW9uIGNhbGwgaW4gc2luZ2xlIHdvcmQgcHJvZ3JhbW1pbmcgbW9kZQotCi0gICAgVGhlIGZ1bmN0aW9uIGZpbmRfc2VjdG9yKCkgZG9lc24ndCBuZWVkIHRvIGJlIGNhbGxlZCB0d2ljZSBpbgotICAgIHRoZSBjYXNlIG9mIEFNRCBjb21tYW5kIHNldC4KLSAgICBUZXN0ZWQgb24gVFFNNTIwMFMtQkQgd2l0aCBTYW1zdW5nIEs4UDI4MTVVUUIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzg5MDFmNDZhNzFlYzE2ZTA4NGU2MDQ1OTZhMDllMjNiZmIwZjZhYwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSmFuIDI2IDEwOjE1OjIzIDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIGNvbXBpbGF0aW9uIHdhcm5pbmcgaW4gZ2RwcGM0NDBldGMuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTFmMzM1MzQ3MjhlNjQxNmQzMzJhZDJiNTNhZDFkNmZkZTU3ZjdmYwotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBKYW4gMiAxMjoxOTo0NyAyMDA5ICswMTAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSBDT05GSUdfU1lTX0lHTk9SRV80MDVfVUFSVF9FUlJBVEFfNTkgZnJvbSBjb25maWcgZmlsZXMKLQotICAgIExvdCdzIG9mIDQwNSBib2FyZCBjb25maWcgZmlsZXMgdXNlIENPTkZJR19TWVNfSUdOT1JFXzQwNV9VQVJUX0VSUkFUQV81OS4KLSAgICBFaXRoZXIgdGhleSBkZWZpbmUgb3IgdW5kZWYgaXQuIEJlY2F1c2UgaXQncyBub3QgdXNlZCBpbiBhbnkgc291cmNlCi0gICAgZmlsZXMgdGhpcyBwYXRjaCByZW1vdmVzIGFueSByZWZlcmVuY2VzIHRvIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODliODYxOWFhZWFmYzkyMmNhMGMzYmIyNDk4NzI1OTEwNTBjOGRjYwotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJVHVlIERlYyA5IDEzOjEyOjQwIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIEdEc3lzIFBvd2VyUEMgNDQwIEVUWCBib2FyZCBzdXBwb3J0LgotCi0gICAgQm9hcmQgc3VwcG9ydCBmb3IgdGhlIEd1bnRlcm1hbm4gJiBEcnVuY2sgUG93ZXJQQyA0NDAgRVRYIG1vZHVsZS4KLSAgICBCYXNlZCBvbiB0aGUgQU1DQyBZb3NlbWl0ZSBib2FyZCBzdXBwb3J0IGJ5IFN0ZWZhbiBSb2VzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzk0M2QyZmY2Y2M0MGRkNjAxYTlmZWViMzllYjZkM2Q1MDkwZWE2ZAotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJVHVlIERlYyA5IDExOjAwOjA3IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogSW1wcm92ZSBERFIgYXV0b2RldGVjdAotCi0gICAgQWRkZWQgc3VwcG9ydCBmb3IgYSBzZWNvbmQgbWVtb3J5IGJhbmsgdG8gRERSIGF1dG9kZXRlY3Rpb24gZm9yIDQ0MAotICAgIHBsYXRmb3Jtcy4KLSAgICBNYWRlIGhhcmRjb2RlZCB2YWx1ZXMgY29uZmlndXJhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3MWEwNDBmNGY1NTZjY2E0ZDMwZjA2ODA1ZDgyZTcxN2IzZWYxMDIwCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CUZyaSBOb3YgMjEgMTI6MDY6MjYgMjAwOCArMDkwMAotCi0gICAgc2g6IHNoNzc2M3JkcDogVXBkYXRlIHNoNzc2M3JkcCBjb25maWcKLQotICAgIEFkZCBDT05GSUdfTkVUX01VTFRJIGluIGNvbmZpZyBmaWxlLCBiZWNhdXNlIHNoX2V0aCBjaGFuZ2VkIG5ldyBuZXd3b3JrIEFQSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYmE3MDViNWIxYTk3YjQ3Mzg4ZWQ0ODg1OGJlZjZiZjdiNmJmY2Q1NgotQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMjAgMTI6Mjg6MzggMjAwOCArMDEwMAotCi0gICAgbWdjb2dlIG1ha2UgZXRoZXJfc2NjLmMgd29yayB3aXRoIENPTkZJR19ORVRfTVVMVEkKLQotICAgIFRoaXMgY2hhbmdlIGlzIG5lZWRlZCBmb3IgbWdjb2dlIGJlY2F1c2UgaXQgdXNlcyB0d28gZXRoZXJuZXQgZHJpdmVycy4KLQotICAgIEFkZCBhIGNoZWNrIGZvciB0aGUgcHJlc2VuY2Ugb2YgdGhlIFBJR0dZIGJvYXJkIG9uIG1nY29nZS4JV2l0aG91dCB0aGlzCi0gICAgYm9hcmQgbmV0d29ya2luZyBjYW5ub3Qgd29yayBhbmQgdGhlIGluaXRpYWxpemF0aW9uIG11c3QgYmUgYWJvcnRlZC4KLQotICAgIE9ubHkgYWxsb2NhdGUgcnR4IG9uY2UgdG8gcHJldmVudCBEUFJBTSBleGhhdXN0aW9uLgotCi0gICAgSW5pdGlhbGl6ZSBldGhlcl9zY2MuYyBhbmQgdGhlIGtleW1pbGUtc3BlY2lmaWMgSERMQyBkcml2ZXIgKHRvIGJlIGFkZGVkCi0gICAgc29vbikgaW4gZXRoLmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYmQzOTgwY2MwOTVhZjE3MjhiOTk0Y2RkOGJmMWFjNDMwYjYyODllNgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDEyOjA0OjE4IDIwMDggKzA5MDAKLQotICAgIHNoOiBzaF9ldGg6IENoYW5nZSBuZXcgbmV0d29yayBBUEkKLQotICAgIHNoX2V0aCB1c2VkIG9sZCBuZXR3b3JrIEFQSS4gVGhpcyBwYXRjaCBjaGFuZ2VkIG5ldyBBUEkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDg5MGEwMmU4ZWU2YjhjMjZhNmUzZTUwNWUxYTJkMjljZDczYWE2ZjYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE5vdiAxMiAxMzozMTowMiAyMDA4ICswMTAwCi0KLSAgICBuZXQ6IHNtYzkxMXg6IE1ha2UgcmVnaXN0ZXIgcmVhZC93cml0ZSBmdW5jdGlvbnMgd2VhawotCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSByZWdfcmVhZC9fd3JpdGUgdG8gc21jOTExeF9yZWdfcmVhZC9fd3JpdGUKLSAgICBhbmQgZGVmaW5lcyB0aGVuIGFzIHdlYWsgc28gdGhhdCB0aGV5IGNhbiBiZSBvdmVycmlkZGVuIGJ5IGJvYXJkCi0gICAgc3BlY2lmaWMgdmVyc2lvbi4KLQotICAgIFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDhiNjliNTYzMDM5OTg5ODg1OTY5ZDI0NDY1YzU2ZjhhYzRjMDdjNGMKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDIwIDA5OjU3OjE0IDIwMDggKzAxMDAKLQotICAgIHBvd2VycGM6IG5ldDogc3VwcG9ydCBmb3IgdGhlIFNNU0MgTEFOODcwMCBQSFkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkNTI1NGYxNDlkYTllNmNkNjQ5ZDg4N2IwNDJjZTU3N2VmM2JhNzhkCi1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci1EYXRlOglTYXQgSmFuIDI0IDE4OjEwOjM3IDIwMDkgKzAxMDAKLQotICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgTm9tYWRpayA4ODE1IGRldmVsb3BtZW50IGJvYXJkCi0KLSAgICBUaGUgTk1ESzg4MTUgYm9hcmQgaXMgZGlzdHJpYnV0ZWQgYnkgU1QgTWljcm9lbGVjdG9ybmljcy4KLSAgICBPdGhlciAocHJvcHJpZXRhcnkpIGNvZGUgbXVzdCBiZSBydW4gdG8gdW5sb2NrIHRoZSBDUFUgYmVmb3JlCi0gICAgVS1Cb290IHJ1bnMuIGRvYy9SRUFETUUubm1kazg4MTUgb3V0bGluZXMgdGhlIGJvb3Qgc2VxdWVuY2UuCi0KLSAgICBUaGlzIGlzIHRoZSBpbml0aWFsIHBvcnQsIHdpdGggYmFzaWMgaW5mcmFzdHJ1Y3R1cmUgYW5kCi0gICAgYSB3b3JraW5nIHNlcmlhbCBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxlc3NhbmRybyBSdWJpbmkgPHJ1YmluaUB1bmlwdi5pdD4KLSAgICBBY2tlZC1ieTogQW5kcmVhIEdhbGxvIDxhbmRyZWEuZ2FsbG9Ac3Rud2lyZWxlc3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA3ZDI2NGMxZWYyNjdjZmM4ZDkyOGJjODU3N2E3Y2M5MDdmMmY1ZTQ3Ci1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjE4IDIwMDggKzAxMDAKLQotICAgIE9NQVAzOiBBZGQgSTJDIHN1cHBvcnQKLQotICAgIEFkZCBJMkMgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCBiMWMzYmY5OWZiNDc3Njc1ZDQ2NGFlYWRiNWRkNjlkMmNiYzlkYzdiCi1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjE3IDIwMDggKzAxMDAKLQotICAgIE9NQVAzOiBBZGQgTU1DIHN1cHBvcnQKLQotICAgIEFkZCBNTUMgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCAxMjIwMWExMzU0N2VjMjJkZGNkYWUyNzhlNzQ0NjVlNTRhM2JlNjBjCi1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjE2IDIwMDggKzAxMDAKLQotICAgIE9NQVAzOiBBZGQgTkFORCBzdXBwb3J0Ci0KLSAgICBBZGQgTkFORCBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTeWVkIE1vaGFtbWVkIEtoYXNpbSA8a2hhc2ltQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgOTFlZWU1NDY3MzdhZTIxZDkzMGFmNDc5NTMwOTk3MTc0YzM0MmIxMwotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJU3VuIERlYyAxNCAwOTo0NzoxNSAyMDA4ICswMTAwCi0KLSAgICBPTUFQMzogQWRkIGNvbW1vbiBib2FyZCwgaW50ZXJydXB0IGFuZCBzeXN0ZW0gaW5mbwotCi0gICAgQWRkIGNvbW1vbiBib2FyZCwgaW50ZXJydXB0IGFuZCBzeXN0ZW0gaW5mbyBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLQotY29tbWl0IDVlZDNlODY1OWU1MzczZjZhMjI5ODc3YWM1MDZjMGIwMGEwNTRmYjgKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVN1biBEZWMgMTQgMDk6NDc6MTQgMjAwOCArMDEwMAotCi0gICAgT01BUDM6IEFkZCBjb21tb24gY2xvY2ssIG1lbW9yeSBhbmQgbG93IGxldmVsIGNvZGUKLQotICAgIEFkZCBjb21tb24gY2xvY2ssIG1lbW9yeSBhbmQgbG93IGxldmVsIGNvZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCAwYjAyYjE4NDAwM2U2YTUwMjNlMDVkNWYzMWRlNTRkYjI3OWIxNDMxCi1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDE0IDA5OjQ3OjEzIDIwMDggKzAxMDAKLQotICAgIE9NQVAzOiBBZGQgY29tbW9uIGNwdSBhbmQgc3RhcnQgY29kZQotCi0gICAgQWRkIGNvbW1vbiBjcHUgYW5kIHN0YXJ0IGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgYThiNjQ1MDU0NmNkNTA3ZDMzMWI4ZmRlMzg0NzkxZDg0YmRlNTY1MQotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJU3VuIERlYyAxNCAwOTo0NzoxMiAyMDA4ICswMTAwCi0KLSAgICBPTUFQMzogQWRkIE9NQVAzLCBtZW1vcnkgYW5kIGZ1bmN0aW9uIHByb3RvdHlwZSBoZWFkZXJzCi0KLSAgICBBZGQgT01BUDMsIG1lbW9yeSBhbmQgZnVuY3Rpb24gcHJvdG90eXBlIGhlYWRlciBmaWxlcyBmb3IgT01BUDMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotCi1jb21taXQgMmM4MDMyMTBhNDY0YWJiYWMzNTc1MmNhMWM3Mzc1MTQzNjBiNGMzMgotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJU3VuIERlYyAxNCAwOTo0NzoxMSAyMDA4ICswMTAwCi0KLSAgICBPTUFQMzogQWRkIHBpbiBtdXgsIGNsb2NrIGFuZCBjcHUgaGVhZGVycwotCi0gICAgQWRkIHBpbiBtdXgsIGNsb2NrIGFuZCBjcHUgaGVhZGVyIGZpbGVzIGZvciBPTUFQMy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci0KLWNvbW1pdCA2ODU1MzM2NDZmNGZmMTdhODRlYzkyNjVjYWJiNjBhZjMyNWI2ZTFmCi1BdXRob3I6IE1heGltIEFydGFtb25vdiA8c2NuMTg3NEB5YW5kZXgucnU+Ci1EYXRlOglXZWQgRGVjIDMgMDU6Mzg6MTcgMjAwOCArMDMwMAotCi0gICAgYnVnZml4IGZvciBpLm14MzEgQ0NNX1VQQ1RMIHJlZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF4aW0gQXJ0YW1vbm92IDxzY24xODc0IGF0IHlhbmRleC5ydT4KLQotY29tbWl0IDI0MTEzYTQ0ZWQ1Y2QzMjU3YTAyMzdjMzk2MWUxMjE4MTJmY2E2ZGIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIERlYyAzMCAwMzoxNTozOCAyMDA4IC0wNTAwCi0KLSAgICBlYXN5bG9nbzogYWRkIG9wdGlvbmFsIGd6aXAgc3VwcG9ydAotCi0gICAgU29tZSBpbWFnZXMgY2FuIGJlIHF1aXRlIGxhcmdlLCBzbyBhZGQgYW4gb3B0aW9uIHRvIGNvbXByZXNzIHRoZQotICAgIGltYWdlIGRhdGEgd2l0aCBnemlwIGluIHRoZSBVLUJvb3QgaW1hZ2UuIFRoZW4gYXQgcnVudGltZSwgdGhlCi0gICAgYm9hcmQgY2FuIGRlY29tcHJlc3MgaXQgd2l0aCB0aGUgbm9ybWFsIHpsaWIgZnVuY3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgN2U0YjliNGY2ZjQzODM4ZmFkM2FkNzJjMDI5YTNkN2ZjN2M3ZDQ4YwotQXV0aG9yOiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KLURhdGU6CUZyaSBKYW4gMiAyMDo0Nzo0NSAyMDA5IC0wNTAwCi0KLSAgICBmYXQ6IGZpeCB1bmFsaWduZWQgZXJyb3JzCi0KLSAgICBBIGNvdXBsZSBvZiBidWZmZXJzIGluIHRoZSBmYXQgY29kZSBhcmUgZGVjbGFyZWQgYXMgYW4gYXJyYXkgb2YgYnl0ZXMuCi0gICAgQnV0IGl0IGlzIHRoZW4gY2FzdCB1cCB0byBhIHN0cnVjdHVyZSB3aXRoIDE2Yml0IGFuZCAzMmJpdCBtZW1iZXJzLgotICAgIFNpbmNlIEdDQyBhc3N1bWVzIHN0cnVjdHVyZSBhbGlnbm1lbnQgaGVyZSwgd2UgaGF2ZSB0byBmb3JjZSB0aGUKLSAgICBidWZmZXJzIHRvIGJlIGFsaWduZWQgYWNjb3JkaW5nIHRvIHRoZSBzdHJ1Y3R1cmUgdXNhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCcnlhbiBXdSA8YnJ5YW4ud3VAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2OGY4NzE4ZGYyZWQ0YzJmNDMwMzE0MDdjY2Y2Y2ZhODExMjVkZGRjCi1BdXRob3I6IEJyYWQgQm96YXJ0aCA8YmZsaW51eEB5dW1icmFkLmNvbT4KLURhdGU6CVRodSBKYW4gMSAyMjo0NTo0NyAyMDA5IC0wNTAwCi0KLSAgICBzcGkgZmxhc2g6IGZpeCBjcmFzaCBkdWUgdG8gc3BpIGZsYXNoIG1pc2NvbW11bmljYXRpb24KLQotICAgIEhpZ2hlciBzcGkgZmxhc2ggbGF5ZXJzIGV4cGVjdCB0byBiZSBnaXZlbiBiYWNrIGEgcG9pbnRlciB0aGF0IHdhcwotICAgIG1hbGxvY2VkIHNvIHRoYXQgaXQgY2FuIGZyZWUgdGhlIHJlc3VsdCwgYnV0IHRoZSBsb3dlciBsYXllcnMgcmV0dXJuCi0gICAgYSBwb2ludGVyIHRoYXQgaXMgaW4gdGhlIG1pZGRsZSBvZiB0aGUgbWFsbG9jZWQgbWVtb3J5LiBSZW9yZGVyIHRoZQotICAgIG1lbWJlcnMgb2YgdGhlIGxvd2VyIHNwaSBzdHJ1Y3R1cmVzIHNvIHRoYXQgdGhpbmdzIHdvcmsgb3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJhZCBCb3phcnRoIDxiZmxpbnV4QHl1bWJyYWQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgY2U4MmZmMDUzODhiNWRkYWZkZjYwODJlZjA3NzZjY2U3MmM0MGIxYwotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglTYXQgRGVjIDIwIDE0OjU0OjIxIDIwMDggKzAzMDAKLQotICAgIEZQVSBQT1NUOiBmaXggd2FybmluZ3Mgd2hlbiBidWlsZGluZyB3aXRoIDIuMTggYmludXRpbHMKLQotICAgIFdoZW4gY29tcGlsZSB1LWJvb3Qgd2l0aCB0aGUgMi4xOCBiaW51dGlscyB0aGUgZm9sbG93aW5nCi0gICAgd2FybmluZyBtZXNzYWdlcyBmb3IgZWFjaCBvYmplY3QgZmlsZSBpbiBwb3N0L2xpYl9wcGMvZnB1LyBpcwotICAgIHByb2R1Y2VkIGF0IHRoZSBsaW5raW5nIHN0YWdlOgotCi0gICAgcG9zdC9saWJwb3N0LmEoYWNjMS5vKSB1c2VzIGhhcmQgZmxvYXQsIHUtYm9vdCB1c2VzIHNvZnQtZmxvYXQKLSAgICAuLi4KLQotICAgIFRoaXMgaXMgYmVjYXVzZSBvZiB0aGUgZmFjdCB0aGF0LCBpbiBnZW5lcmFsLCB0aGUgc29mdC1mbG9hdCBhbmQKLSAgICBoYXJkLWZsb2F0IEFCSXMgYXJlIGluY29tcGF0aWJsZTsgdGhlIDIuMTggYmludXRpbHMgZG8gY2hlY2tpbmcKLSAgICBvZiB0aGUgVGFnX0dOVV9Qb3dlcl9BQklfRlAgYXR0cmlidXRlIG9mIHRoZSBmaWxlcyB0byBiZSBsaW5rZWQsIGFuZAotICAgIHByb2R1Y2UgdGhlIHdvcm5pbmcgbGlrZSBhYm92ZSBpZiB0aGVzZSBhcmUgbm90IGNvbXBhdGlibGUuCi0KLSAgICBUaGUgaW5jb21wYXRpYmlsaXR5IG9mIEFCSXMgaXMgY29uY2VybmVkIG9ubHkgdGhlIGZsb2F0IHZhbHVlczoKLSAgICBlLmcuIHRoZSBzb2Z0LWZsb2F0IEFCSSBhc3N1bWVzIHRoZSBmbG9hdCBhcmd1bWVudCBwYXNzaW5nIGluIHRoZQotICAgIHBhaXIgb2YgclggcmVnaXN0ZXJzLCBhbmQgdGhlIGhhcmQtZmxvYXQgQUJJIGFzc3VtZXMgcGFzc2luZyBvZgotICAgIHRoZSBmbG9hdCBhcmd1bWVudCBpbiB0aGUgZlggcmVnaXN0ZXIuIFdoZW4gd2UgZG9uJ3QgcGFzcyB0aGUgZmxvYXQKLSAgICBhcmd1bWVudHMgYmV0d2VlbiB0aGUgZnVuY3Rpb25zIGNvbXBpbGVkIHdpdGggZGlmZmVyZW50IGZsb2F0bmVzcywKLSAgICB0aGVuIHN1Y2ggYW4gYXBwbGljYXRpb24gd2lsbCB3b3JrIGNvcnJlY3RseS4KLSAgICBUaGlzIGlzIHRoZSBjYXNlIGZvciB0aGUgRlBVIFBPU1Q6IHUtYm9vdCAoY29tcGlsZWQgd2l0aCBzb2Z0LWZsb2F0KQotICAgIGRvZXNuJ3QgcGFzcyB0byAoYW5kIGRvZXNuJ3QgZ2V0IGZyb20pIHRoZSBGUFUgUE9TVCBmdW5jdGlvbnMgYW55Ci0gICAgZmxvYXRzOyB0aGVyZSBhcmUgbm8gZnVuY3Rpb25zIGV4cG9ydGVkIGZyb20gdGhlIHBvc3QvbGliX3BwYy9mcHUvCi0gICAgb2JqZWN0cyB3aGljaCB3b3VsZCB3b3JrIHdpdGggZmxvYXQgcGFyYW1ldGVycy9yZXR1cm5zIHRvby4gU28sIHdlCi0gICAgY2FuIHJlYXNzdXJlIHRoZSBsaW5rZXIgbm90IHRvIHdvcnJ5IGFib3V0IHRoZSBkaWZmZXJlbmNlIGluIEFCSQotICAgIGF0dHJpYnV0ZXMgb2YgbGlua2luZyBmaWxlcyBqdXN0IGJ5IHNldHRpbmcgdGhlICdzb2Z0LWZsb2F0JwotICAgIGF0dHJpYnV0ZSBmb3IgdGhlIG9iamVjdHMgaW4gcG9zdC9saWJfcHBjL2ZwdS4gQW5kIHRoaXMgcGF0Y2ggZG9lcwotICAgIHRoaXMuCi0KLSAgICBBbHNvLCB0byBhdm9pZCBwYXNzaW5nIGJvdGggc29mdC0gYW5kIGhhcmQtZmxvYXQgb3B0aW9ucyBpbiBDRkxBR1MKLSAgICB3aGVuIGNvbXBpbGluZyB0aGUgZmlsZXMgZnJvbSBwb3N0L2xpYl9wcGMvZnB1ICh3aGljaCBpcyBPSywgYnV0Ci0gICAgbG9va3MgcmF0aGVyIGRpcnR5KSB0aGlzIHBhdGNoIHJlbW92ZXMgdGhlIHNvZnQtZmxvYXQgc3RyaW5nIGZyb20KLSAgICBDRkxBR1MgaW4gcG9zdC9saWJfcHBjL2ZwdS9NYWtlZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IGE3YzkzMTA0NTdlODViNDU5OGFiZTViMzA0MTA4ZWRmMTEzMzJlMmYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVdlZCBEZWMgMTcgMTY6MzY6MjIgMjAwOCAtMDYwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIE1heGltJ3MgRFM0NTEwIEkyQyBkZXZpY2UKLQotICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIERTNDUxMCwgYSBDUFUgc3VwZXJ2aXNvciB3aXRoCi0gICAgaW50ZWdyYXRlZCBFRVBST00sIFNSQU0sIGFuZCA0IHByb2dyYW1tYWJsZSBub24tdm9sYXRpbGUKLSAgICBHUElPIHBpbnMuIFRoZSBDT05GSUdfRFM0NTEwIGRlZmluZSBlbmFibGVzIHN1cHBvcnQKLSAgICBmb3IgdGhlIGRldmljZSB3aGlsZSB0aGUgQ09ORklHX0NNRF9EUzQ1MTAgZGVmaW5lCi0gICAgZW5hYmxlcyB0aGUgZHM0NTEwIGNvbW1hbmQuIFRoZSBhZGRpdGlvbmFsCi0gICAgQ09ORklHX0RTNDUxMF9JTkZPLCBDT05GSUdfRFM0NTEwX01FTSwgYW5kCi0gICAgQ09ORklHX0RTNDUxMF9SU1QgZGVmaW5lcyBhZGQgYWRkaXRpb25hbCBzdWItY29tbWFuZHMKLSAgICB0byB0aGUgZHM0NTEwIGNvbW1hbmQgd2hlbiBkZWZpbmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGI2ZmM2ZmQ0OWE4NDU0M2UxMzI0ZTE2MjBiOWYzMDFmZjdjMWYyN2YKLUF1dGhvcjogRGlyayBFaWJhY2ggPGVpYmFjaEBnZHN5cy5kZT4KLURhdGU6CVR1ZSBEZWMgMTYgMTQ6NTE6NTYgMjAwOCArMDEwMAotCi0gICAgY29tbW9uOiBJdGVyYXRpb24gbGltaXQgZm9yIG1lbW9yeSB0ZXN0LgotCi0gICAgVGhlIGl0ZXJhdGlvbiBsaW1pdCBpcyBwYXNzZWQgdG8gbXRlc3QgYXMgYSBmb3VydGggcGFyYW1ldGVyOgotICAgIFtzdGFydCBbZW5kIFtwYXR0ZXJuIFtpdGVyYXRpb25zXV1dXQotICAgIElmIG5vIGZvdXJ0aCBwYXJhbWV0ZXIgaXMgc3VwcGxpZWQsIHRoZXJlIGlzIG5vIGl0ZXJhdGlvbiBsaW1pdCBhbmQgdGhlCi0gICAgdGVzdCB3aWxsIGxvb3AgZm9yZXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgRWliYWNoIDxlaWJhY2hAZ2RzeXMuZGU+Ci0KLWNvbW1pdCA5N2NhZTNhNGM2OGQ4NTYzNzRjY2M3MGZkMmM1Zjg3MTRjYzk0ZjdkCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBEZWMgMTUgMTU6NDA6MTIgMjAwOCArMDEwMAotCi0gICAgc2VyaWFsOiBSZW5hbWUgZHJpdmVyIHZjdGggdG8gdmN0IHRvIHN1cHBvcnQgb3RoZXIgYm9hcmQgdmFyaWFudHMKLQotICAgIE1vdmVkIGRyaXZlciB2Y3RoLmMgdG8gdmN0LmMgdG8gYmV0dGVyIHJlZmxlY3QgdGhlIFZDVCBib2FyZCBzZXJpZXMuCi0gICAgVGhpcyBkcml2ZXIgaXMgbm93IHVzZWQgYnkgdGhlIFZDVCBwbGF0Zm9ybXM6Ci0KLSAgICB2Y3RfcHJlbWl1bQotICAgIHZjdF9wbGF0aW51bQotICAgIHZjdF9wbGF0aW51bXN2YwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzZlZGU0ZDYzZTU5YzkyNzdlYzE4MGIwOWMzOWI4YmY0NjQyNWJhMgotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJRnJpIERlYyAxMiAwMDo0NToyNyAyMDA4ICswOTAwCi0KLSAgICBuaW9zOiBNb3ZlIFJFQURNRS5uaW9zX0NPTkZJR19TWVNfTklPU19DUFUgdG8gZG9jLyBkaXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBjMzI4NGIwMzBiMWNkNDkyYjRmNDZjNTc2YWVhMDFiZWYyNTg1OTlkCi1BdXRob3I6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Ci1EYXRlOglXZWQgRGVjIDEwIDE2OjI0OjE2IDIwMDggKzAxMDAKLQotICAgIGNvbW1vbi9tYWluOiBzdXBwb3J0IGJvb3RkZWxheT0wIGZvciBDT05GSUdfQVVUT0JPT1RfS0VZRUQKLQotICAgIFN1cHBvcnQgYm9vdGRlbGF5PTAgaW4gYWJvcnRib290IGZvciB0aGUgQ09ORklHX0FVVE9CT09UX0tFWUVEIGNhc2UKLSAgICBzaW1pbGFyIHRvIHRoZSBDT05GSUdfWkVST19CT09UREVMQVlfQ0hFQ0sgc3VwcG9ydCBmb3IgdGhlCi0gICAgIUNPTkZJR19BVVRPQk9PVF9LRVlFRCBjYXNlLgotCi0gICAgRG8gdGhpcyBieSByZXZlcnNpbmcgdGhlIGxvb3Agc28gd2UgZG8gYXQgbGVhc3Qgb25lIGl0ZXJhdGlvbiBiZWZvcmUKLSAgICBjaGVja2luZyBmb3IgdGltZW91dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Ci0KLWNvbW1pdCA5NGY5Mjc5ZjdiYmRjMDFiYmM3Y2Y4NWFlZGY5YjU0NTk0M2I5NGMzCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglNb24gRGVjIDggMTc6MjQ6MDggMjAwOCArMDEwMAotCi0gICAgQWRkZWQgbGVnYWN5IGZsYXNoIFNUIE1pY3JvIE0yOVcwNDBCCi0KLWNvbW1pdCA2MjZkMDczNDhlNWY5ZjMwMmY0ZWExODIxNjFhODlmNzM2MmEwNDg4Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglNb24gRGVjIDggMjA6MDQ6NTEgMjAwOCArMTEwMAotCi0gICAgRml4ZWQgb2ZmLWJ5LW9uZSBlcnJvcnMgaW4gbGliX202OGsvaW50ZXJydXB0cy5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgYTU5ODljNDJhZTVlMjk1ZjI3NGE3OTVjNDI2YzQ3ODE5YmJkYmZkYQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIERlYyA3IDEwOjI5OjA1IDIwMDggKzExMDAKLQotICAgIFJlbW92ZWQgYWxsIHJlZmVyZW5jZXMgdG8gQ09ORklHX1NZU19SRVNFVF9HRU5FUklDCi0KLSAgICBHZW5lcmljIGkzODYgcmVzZXQgLSAjZGVmaW5lIG1hZGUgcmVkdW5kYW50IGJ5IHdlYWsgZnVuY3Rpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAyYjUzNjBlYjJiYzBiNzQxYWU1Y2IzYzg0ZDM1Y2NkZDE3NjY3YzhhCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDcgMTA6Mjk6MDQgMjAwOCArMTEwMAotCi0gICAgUmVtb3ZlICNpZmRlZiBDT05GSUdfU0M1MjAgaW4gc291cmNlIGNvZGUKLQotICAgIENPTkZJR19TQzUyMCBpcyBub3cgdXNlZCBmb3IgY29uZGl0aW9uYWwgY29tcGlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IGVhZDA1NmJjMjA2ZjZiN2VlNmRjOTg3NjY2NzhiNjQ2MzVlYTIwYjgKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVN1biBEZWMgNyAxMDoyOTowMyAyMDA4ICsxMTAwCi0KLSAgICBBZGRlZCBNTUNSIHJlc2V0IGZ1bmN0aW9uYWxpdHkKLQotICAgIFJlc2V0IGZ1bmN0aW9uIHNwZWNpZmljIHRvIEFNRCBTQzUyMCBtaWNyb2NvbnRyb2xsZXIgLSBJcyBtb3JlIG9mIGEKLSAgICAnaGFyZCByZXNldCcgdGhhdCB0aGUgdHJpcGxlIGZhdWx0LgotCi0gICAgUmVxdWlyZXMgQ09ORklHX1NZU19SRVNFVF9TQzUyMCB0byBiZSBkZWZpbmVkIGluIGNvbmZpZwotCi0gICAgSSB3b3VsZCBoYXZlIGxpa2VkIHRvIGFkZCB0aGlzIHRvIGEgbmV3IGZpbGUgKGNwdS9pMzg2L3NjNTIwL3Jlc2V0LmMpCi0gICAgYnV0IGxkIHJlcXVpcmVzIHRoYXQgYSBvYmplY3QgZmlsZSBpbiBhIGxpYnJhcnkgYXJoaXZlIE1VU1QgY29udGFpbgotICAgIGF0IGxlYXN0IG9uZSBmdW5jdGlvbiB3aGljaCBkb2VzIG5vdCBvdmVycmlkZSBhIHdlYWsgZnVuY3Rpb24gKGFuZCBpcwotICAgIGNhbGxlZCBmcm9tIG91dHNpZGUgdGhlIG9iamVjdCBmaWxlKSBpbiBvcmRlciBmb3IgdGhhdCBvYmplY3QgZmlsZSB0bwotICAgIGJlIGV4dHJhY3RlZCBmcm9tIHRoZSBhcmNoaXZlLiBUaGlzIHdvdWxkIGJlIHRoZSBvbmx5IGZ1bmN0aW9uIG9uIHRoZQotICAgIG5ldyBmaWxlLCBhbmQgaGVuY2UsIHdpbGwgbmV2ZXIgZ2V0IGxpbmtlZCBpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAzZjVmMThkMTJkMzJlZTA2NjFiZjUxZGZjNTU3NTJjMDA1MjMwZDZlCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDcgMTA6Mjk6MDIgMjAwOCArMTEwMAotCi0gICAgTW92ZWQgZ2VuZXJpYyAodHJpcGxlIGZhdWx0KSByZXNldCBjb2RlCi0KLSAgICBNb3ZlZCBmcm9tIGludGVycnVwdHMuYyB0byBjcHUuYyBhbmQgbWFkZSBpbnRvIGEgd2VhayBmdW5jdGlvbiB0bwotICAgIGFsbG93IHZlbmRvciBzcGVjaWZpYyBvdmVycmlkZQotCi0gICAgVmVuZG9yIHNwZWNpZmljIENQVSByZXNldCAobGlrZSB0aGUgQU1EIFNDNTIwIE1NQ1IgcmVzZXQpIGNhbiBub3cgYmUKLSAgICBhZGRlZCB0byB0aGUgdmVuZG9yIHNwZWNpZmljIGNvZGUgd2l0aG91dCB0aGUgbmVlZCB0byByZW1lbWJlciB0bwotICAgICN1bmRlZiB1c2FnZSBvZiB0aGUgZ2VuZXJpYyBtZXRob2QgYW5kIGlmIHlvdSBmb3JnZXQgdG8gaW5jbHVkZSB5b3VyCi0gICAgY3VzdG9tIHJlc2V0IG1ldGhvZCwgeW91IHdpbGwgYWx3YXlzIGdldCB0aGUgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCA5OTMzZDYwOTAyMGMyOTc3ODhmNTNmMzM0Yzg0NjVmYTdhOTliMTBjCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDcgMTA6Mjk6MDEgMjAwOCArMTEwMAotCi0gICAgTW92ZWQgZGVmaW5pdGlvbiBvZiBzZXRfdmVjdG9yKCkgdG8gbmV3IGhlYWRlciBmaWxlCi0KLSAgICBUaGlzIGFsbG93cyBmb3IgZnV0dXJlIHRpZHkgdXBzIGFuZCBmdW5jdGlvbmFsaXR5IHRoYXQgd2lsbCByZXF1aXJlCi0gICAgc2V0X3ZlY3RvciAoKQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDQwNzk3NjE4NWUwZGRhMmM5MGU4OTAyNzEyMWExMDcxYjljNzdiZmIKLUF1dGhvcjogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLURhdGU6CVN1biBEZWMgNyAxMDoyOTowMCAyMDA4ICsxMTAwCi0KLSAgICBNb3ZlZCBzYzUyMCBzcGVjaWZpYyBjb2RlIGludG8gbmV3IGNwdS9pMzg2L3NjNTIwIGZvbGRlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgODVmZmJiZDUxOTE0OTI1YTU0MmQ4NTI4YmU3ZjA3MmU1YWIwMjE1NwotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIERlYyA3IDEwOjI4OjU4IDIwMDggKzExMDAKLQotICAgIFJlbmFtZWQgY3B1L2kzODYvcmVzZXQuUyB0byByZXNldHZlYy5TCi0KLSAgICBCcmluZ3MgaTM4NiBpbiBsaW5lIHdpdGggb3RoZXIgQ1BVcyB3aXRoIGEgcmVzZXQgdmVjdG9yIGFuZCBmcmVlcyB1cCByZXNldC5jCi0gICAgZm9yIENQVSByZXNldCBmdW5jdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhM2Y0YzEyM2Y1Njk0NzRlODBlYTAxMmI4ZGIwZGU0NmFmZGI2NDQzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgSmFuIDI0IDAxOjAxOjQ5IDIwMDkgKzAxMDAKLQotICAgIE1ha2VmaWxlOiBrZWVwIGxpc3RzIHNvcnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjNjIwYzAxZTk2ODE0NTU4NDcwNjk4ZWQ1Y2FiMWJmMmY1MDRkMWI1Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gRGVjIDcgMTA6Mjg6NTcgMjAwOCArMTEwMAotCi0gICAgQWRkZWQgaW5pdGlhbCBlTkVUIGJvYXJkIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAwYzBjY2Y0MDFlZTAzYTUwMDhmYzJjMTliMDVhNjYyYmNlMWExMDg2Ci1BdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgotRGF0ZToJVGh1IE5vdiAyMCAxMTozNzoyNiAyMDA4ICswMTAwCi0KLSAgICBQT1dFUlBDIDgyeHg6IGFkZCB0aGUgU0NDIGFzIGFuIEhETEMgY29udHJvbGxlcgotCi0gICAgUmlnaHQgbm93IHRoaXMgaXMgb25seSB1c2VkIGJ5IGtleW1pbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLQotY29tbWl0IDFlOGY0ZTc4Y2EzOTNiM2Q4ZTg2YmQ4MDU1NzU4ZGQ0NjVkOTExM2YKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDIwIDA5OjU5OjA5IDIwMDggKzAxMDAKLQotICAgIHBvd2VycGMsIGtleW1pbGUgYm9hcmRzOiBleHRyYWN0IGlkZW50aWNhbCBjb25maWcgb3B0aW9ucwotCi0gICAgVGhpcyBwYXRjaCBleHRyYWN0cyB0aGUgaWRlbnRpY2FsIGNvbmZpZyBvcHRpb25zIGZvciB0aGUKLSAgICBrZXltaWxlIGJvYXJkcyBtZ2NvZ2UsIG1nc3V2ZCBhbmQga21ldGVyMSBpbiBhIG5ldwotICAgIGNvbW1vbiBjb25maWcgZmlsZSBrZXltaWxlLWNvbW1vbi5oLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAyMTBjOGMwMGFhZDMzMjgxNDUyMDRhZGFiNDM0YmI3ZDcwYjA2Yjc1Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIE5vdiAyMSAwODoyOTo0MCAyMDA4ICswMTAwCi0KLSAgICBwb3dlcnBjOiBrZXltaWxlOiBBZGQgYSBjaGVjayBmb3IgdGhlIFBJR0dZIGRlYnVnIGJvYXJkCi0KLSAgICBDaGVjayB0aGUgcHJlc2VuY2Ugb2YgdGhlIFBJR0dZIG9uIHRoZSBrZXltaWxlIGJvYXJkcyBtZ2NvZ2UsCi0gICAgbWdzdXZkIGFuZCBrbWV0ZXIxLiBJZiB0aGUgUElHR1kgaXMgbm90IHByZXNlbnQsIGRvbnQgcmVnaXN0ZXIKLSAgICB0aGlzIEV0aGVybmV0IGRldmljZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZGUwNDQzNjE0YWY0ZDE2Njc1YWI0MzY2NjVhZWIxMWRkYzlmNzIxNAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMjAgMDk6NTc6NDcgMjAwOCArMDEwMAotCi0gICAgcG93ZXJwYzogODN4eDogYWRkIHN1cHBvcnQgZm9yIHRoZSBrbWV0ZXIxIGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGttZXRlcjEgYm9hcmQgZnJvbSBLZXltaWxlLAotICAgIGJhc2VkIG9uIGEgRnJlZXNjYWxlIE1QQzgzNjAgQ1BVLgotCi0gICAgLSBzZXJpYWwgY29uc29sZSBvbiBVQVJUIDEKLSAgICAtIDI1NiBNQiBERFIyIFJBTQotICAgIC0gNjQgTUIgTk9SIEZsYXNoCi0gICAgLSBFdGhlcm5ldCBSTUlJIE1vZGUgb3ZlciBVQ0M0Ci0gICAgLSBQSFkgU01TQyBMQU44NzAwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDNmZWI2NDdmM2ZkMDg4MTM4MmM3YTI5ZjRjZjI4MGI2NjQ3M2FlMGEKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVR1ZSBOb3YgNCAxMzo1MToxOCAyMDA4ICswMTAwCi0KLSAgICBBZGQgYSBkb19kaXYoKSB3cmFwcGVyIG1hY3JvLCBsbGRpdigpLgotCi0gICAgQWRkIGEgZG9fZGl2KCkgd3JhcHBlciwgbGxkaXYoKS4gVGhlIG5ldyBpbmxpbmUgZnVuY3Rpb24gZG9lc24ndCBtb2RpZnkKLSAgICB0aGUgZGl2aWRlbmQgYW5kIHJldHVybnMgdGhlIHJlc3VsdCBvZiBkaXZpc2lvbiwgc28gaXQgaXMgdXNlZnVsCi0gICAgaW4gY29tcGxleCBleHByZXNzaW9ucywgaS5lLiAicmV0dXJuKGEvYikiIC0+ICJyZXR1cm4obGxkaXYoYSxiKSkiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgMThhZjFjNWYwZjc0MDJkYzBkNmE3MWIwMTJjNjgwMjVkZDk3Y2Y3MgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEphbiAyMyAxNDoyMjoxNCAyMDA5IC0wNjAwCi0KLSAgICA4NXh4OiBBZGQgYSAzNi1iaXQgcGh5c2ljYWwgY29uZmlndXJhdGlvbiBmb3IgTVBDODU3MkRTCi0KLSAgICBXZSBtb3ZlIGFsbCBJTyBhZGRyZXNzZWQgKENDU1IsIGxvY2FsYnVzLCBQQ0kpIGFib3ZlIHRoZSA0RyBib3VuZGFyeQotICAgIHRvIGFsbG93IGZvciBsYXJnZXIgbWVtb3J5IHNpemVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGM1MWZjNWQ1M2M0NTYwYWJjNGQwYTYxMjZjMDZmYzY4MTMzZDE1MjgKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBKYW4gMjMgMTQ6MjI6MTMgMjAwOSAtMDYwMAotCi0gICAgODV4eDogSGFuZGxlIGVMQkMgZGlmZmVyZW5jZSB3LzM2LWJpdCBwaHlzaWNhbAotCi0gICAgVGhlIGVMQkMgb25seSBoYW5kbGVzIDMyLWJpdCBwaHlzaWNhbCBhZGRyZXNzIGluIHN5c3RlbXMgd2l0aCAzNi1iaXQKLSAgICBwaHlzaWNhbC4gIFRoZSBwcmV2aW9zIGdlbmVyYXRpb24gb2YgTEJDIGhhbmRsZWQgMzQtYml0IHBoeXNpY2FsCi0gICAgYWRkcmVzcyBpbiAzNi1iaXQgc3lzdGVtcy4JQWRkZWQgYSBuZXcgQ09ORklHIG9wdGlvbiB0byBjb252ZXkKLSAgICB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIHRoZSBMQkMgYW5kIGVMQkMuCi0KLSAgICBBbHNvIGFkZGVkIGRlZmluZXMgZm9yIFhBTSBiaXRzIHVzZWQgaW4gTEJDIGZvciB0aGUgZXh0ZW5kZWQgMzQtYml0Ci0gICAgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3MmE5NDE0YThlMjFlOTUzNjgyMmM3MzUzYmMwOGQyMWNlNWFkNTNkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgSmFuIDIzIDE0OjIyOjEyIDIwMDkgLTA2MDAKLQotICAgIDg1eHg6IFVzZSBCUl9BRERSIG1hY3JvIGZvciBOQU5EIGNoaXBzZWxlY3RzCi0KLSAgICBVc2UgdGhlIG5ldyBCUl9BRERSIG1hY3JvIHRvIHByb3Blcmx5IHNldHVwIHRoZSBhZGRyZXNzIGZpZWxkIG9mIHRoZQotICAgIGxvY2FsYnVzIGNoaXBzZWxlY3RzIHVzZWQgYnkgTkFORC4KLQotICAgIFRoaXMgYWxsb3dzIHVzIHRvIGRlYWwgd2l0aCAzNi1iaXQgcGh5cyBvbiB0aGVzZSBib2FyZHMgaW4gdGhlIGZ1dHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyZmM3ZWIwY2ZjNjA4YzkzNjkwMDFkNTdhMDQxMWFmNWU2YTU4ZjdjCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSmFuIDE1IDExOjU4OjM1IDIwMDkgLTA1MDAKLQotICAgIEFkZCBzZWNvbmRhcnkgQ1BVcyBwcm9jZXNzb3IgZnJlcXVlbmN5IGZvciBlNTAwIGNvcmUKLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBlNTAwIGZyZXFQcm9jZXNzb3IgdG8gYXJyYXkgYmFzZWQgb24gQ09ORklHX05VTV9DUFVTLAotICAgIGFuZCBwcmludHMgZWFjaCBDUFUncyBmcmVxdWVuY3kgc2VwYXJhdGVseS4gSXQgYWxzbyBmaXhlcyB1cCBlYWNoIENQVSdzCi0gICAgZnJlcXVlbmN5IGluICJjbG9jay1mcmVxdWVuY3kiIG9mIGZkdCBibG9iLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZjViMWYwYzBkMjhjZTA2MmUxZDM2ODY4MDYzMmRmYjA5OWRlNjkyCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDE2OjMxOjUzIDIwMDggKzA4MDAKLQotICAgIDg1eHg6IGVuYWJsZSB0aGUgYXV0byBzZWxmIHJlZnJlc2ggZm9yIHdha2UgdXAgQVJQCi0KLSAgICBUaGUgd2FrZSB1cCBBUlAgZmVhdHVyZSBuZWVkIHVzZSB0aGUgbWVtb3J5IHRvIHByb2Nlc3MKLSAgICB3YWtlIHVwIHBhY2tldCwgd2UgZW5hYmxlIGF1dG8gc2VsZiByZWZyZXNoIHRvIHN1cHBvcnQgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNDk4M2UxNmQxNTBhYjdkMDM5NzA0YzMxMGFhY2JkMmY0ZGMxZTBmCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDE2OjMxOjQzIDIwMDggKzA4MDAKLQotICAgIGZzbC1kZHI6IHVzZSB0aGUgMVQgdGltaW5nIGFzIGRlZmF1bHQgY29uZmlndXJhdGlvbgotCi0gICAgRm9yIGxpZ2h0IGxvYWRlZCBzeXN0ZW0sIHdlIHVzZSB0aGUgMVQgdGltaW5nIHRvIGdhaW4gYmV0dGVyCi0gICAgbWVtb3J5IHBlcmZvcm1hbmNlLCBidXQgZm9yIHNvbWUgaGVhdmlseSBsb2FkZWQgc3lzdGVtLAotICAgIHlvdSBoYXZlIHRvIGFkZCB0aGUgMlQgdGltaW5nIG9wdGlvbnMgdG8gYm9hcmQgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyMmNjYTdlMWNkNTQ1OTBlOTY3YzczNTU4YjA3ZmZiZGNjZDM5NTA0Ci1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDE2OjMxOjM1IDIwMDggKzA4MDAKLQotICAgIGZzbC1kZHI6IG1ha2UgdGhlIHNlbGYgcmVmcmVzaCBpZGxlIHRocmVzaG9sZCBjb25maWd1cmFibGUKLQotICAgIFNvbWUgODV4eCBwcm9jZXNzb3JzIGhhdmUgdGhlIGFkdmFuY2VkIHBvd2VyIG1hbmFnZW1lbnQgZmVhdHVyZSwKLSAgICBzdWNoIGFzIHdha2UgdXAgQVJQLCB0aGF0IG5lZWRzIGVuYWJsZSB0aGUgYXV0b21hdGljIHNlbGYgcmVmcmVzaC4KLQotICAgIElmIHRoZSBERFIgY29udHJvbGxlciBwYXNzIHRoZSBTUl9JVCAoc2VsZiByZWZyZXNoIGlkbGUgdGhyZXNob2xkKQotICAgIGlkbGUgY3ljbGVzLCBpdCB3aWxsIGF1dG9tYXRpY2FsbHkgZW50ZXIgc2VsZiByZWZyZXNoLiBIb3dldmVyLAotICAgIGFueXRpbWUgb25lIHRyYW5zYWN0aW9uIGlzIGlzc3VlZCB0byB0aGUgRERSIGNvbnRyb2xsZXIsIGl0IHdpbGwKLSAgICByZXNldCB0aGUgY291bnRlciBhbmQgZXhpdCBzZWxmIHJlZnJlc2ggc3RhdGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyMmZmM2QwMTM0OGUwYTJkYzM2OWI3ZWZjYmFjMzBlNGNlODZkMTc4Ci1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDE2OjMxOjI5IDIwMDggKzA4MDAKLQotICAgIGZzbC1kZHI6IGNsZWFuIHVwIHRoZSBkZHIgY29kZSBmb3IgRERSMyBjb250cm9sbGVyCi0KLSAgICAtIFRoZSBERFIzIGNvbnRyb2xsZXIgaXMgZXhwYW5kaW5nIHRoZSBiaXRzIGZvciB0aW1pbmcgY29uZmlnCi0gICAgLSBBZGQgdGhlIEREUjMgMzItYml0IGJ1cyBtb2RlIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDgwZWUzY2U2ZDdmZTk0NDFiNDM1MmQ3Y2ZhZjZhZmMyNTA3YjExMDYKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBOb3YgMjEgMTY6MzE6MjIgMjAwOCArMDgwMAotCi0gICAgZnNsLWRkcjogdXBkYXRlIHRoZSBiaXQgbWFzayBmb3IgRERSMyBjb250cm9sbGVyCi0KLSAgICBBY2NvcmRpbmcgdG8gdGhlIGxhdGVzdCA4NTcyIFVNLCB0aGUgRERSMyBjb250cm9sbGVyCi0gICAgaXMgZXhwYW5kaW5nIHRoZSBiaXQgbWFzaywgYW5kIHdlIHVzZSB0aGUgZXh0ZW5kIEFDVFRPUFJFCi0gICAgbW9kZSB3aGVuIHRSQVMgbW9yZSB0aGFuIDE5IE1DTEsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWNhNWYwMThhODM4NmI4NTQ2OTQ4MmVkOTg2N2UzZTI5YTI0MzdkMAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIERlYyAyIDE2OjA4OjQwIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IEludHJvZHVjZSBDT05GSUdfU1lTX1BDSSpfSU9fVklSVCBmb3IgRlNMIGJvYXJkcwotCi0gICAgSW50cm9kdWNlIGEgbmV3IGRlZmluZSB0byBzZXBlcmF0ZSBvdXQgdGhlIHZpcnR1YWwgYWRkcmVzcyB0aGF0IFBDSQotICAgIElPIHNwYWNlIGlzIGF0IGZyb20gdGhlIHBoeXNpY2FsIGFkZHJlc3MuICBJbiBtb3N0IHNpdHVhdGlvbnMgdGhlc2UgYXJlCi0gICAgbWFwcGVkIDE6MS4gIEhvd2V2ZXIgYW55IGNvZGUgYWNjZXNzaW5nIHRoZSBidXMgc2hvdWxkIHVzZSBWSVJULgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWFmMGZkZDgxYzMzNzBjM2E1MTQyMTIwOGZkYTU2OGJkY2JiZWMyMwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIERlYyAyIDE2OjA4OjM5IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IEludHJvZHVjZSBDT05GSUdfU1lTX1BDSSpfTUVNX1ZJUlQgZm9yIEZTTCBib2FyZHMKLQotICAgIEludHJvZHVjZSBhIG5ldyBkZWZpbmUgdG8gc2VwZXJhdGUgb3V0IHRoZSB2aXJ0dWFsIGFkZHJlc3MgdGhhdCBQQ0kKLSAgICBtZW1vcnkgaXMgYXQgZnJvbSB0aGUgcGh5c2ljYWwgYWRkcmVzcy4gIEluIG1vc3Qgc2l0dWF0aW9ucyB0aGVzZSBhcmUKLSAgICBtYXBwZWQgMToxLiAgSG93ZXZlciBhbnkgY29kZSBhY2Nlc3NpbmcgdGhlIGJ1cyBzaG91bGQgdXNlIFZJUlQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhNmUwNGMzNDRhZDFlZWZkNDdhNzU0ODQ0NDFiMzg1ZGE4MTViOGRmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgRGVjIDIgMTY6MDg6MzggMjAwOCAtMDYwMAotCi0gICAgODV4eDogVXNlIENPTkZJR19TWVNfe1BDSSosUklPKn1fTUVNX1BIWVMgZm9yIHBoeXNpY2FsIGFkZHJlc3Mgb24gRlNMIGJvYXJkcwotCi0gICAgVXNlIHRoZSBfTUVNX1BIWVMgZGVmaW5lcyBpbnN0ZWFkIG9mIF9NRU1fQlVTIGZvciBMQVcgYW5kIHJlYWwgYWRkcmVzcyBmaWVsZHMKLSAgICBvZiBUTEJzLiAgVGhpcyBpcyB3aGF0IHdlIHNob3VsZCBoYXZlIGFsd2F5cyBiZWVuIHVzaW5nIGZyb20gdGhlIHN0YXJ0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWY5MWVmNmFjZGJhZGVjMzNlMDE5MjA0OWUyYjI0YTFkOTY5MmYxZAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIERlYyAyIDE2OjA4OjM3IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IENvbnZlcnQgQ09ORklHX1NZU19QQ0kqX0lPX0JBU0UgdG8gX0lPX0JVUyBmb3IgRlNMIGJvYXJkcwotCi0gICAgVXNlIENPTkZJR19TWVNfUENJKl9JT19CVVMgZm9yIHRoZSBidXMgcmVsYXRpdmUgYWRkcmVzcyBpbnN0ZWFkCi0gICAgb2YgX0lPX0JBU0Ugc28gd2UgYXJlIG1vcmUgZXhwbGljaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTA3OTVmNDJjYjk0ZTcxYmNiMjYyYjYxNTA4NGY2OWRkODg2Mzk5YQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIERlYyAyIDE2OjA4OjM2IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IENvbnZlcnQgQ09ORklHX1NZU197UENJKixSSU8qfV9NRU1fQkFTRSB0byBfTUVNX0JVUyBmb3IgRlNMIGJvYXJkcwotCi0gICAgVXNlIENPTkZJR19TWVNfe1BDSSxSSU99X01FTV9CVVMgZm9yIHRoZSBidXMgcmVsYXRpdmUgYWRkcmVzcyBpbnN0ZWFkCi0gICAgb2YgX01FTV9CQVNFIHNvIHdlIGFyZSBtb3JlIGV4cGxpY2l0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzk1M2RkZmQ1NmIzYWUzZjI4OTEwZmUzYWVkNmRlNjk2OGQxYzlhYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIERlYyAyIDE0OjE5OjM0IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IHNlcGFyYXRlIEZMQVNIIEJBU0UgdmlydHVhbCBmcm9tIHBoeXNpY2FsIGFkZHJlc3MKLQotICAgIEFkZGVkIGEgQ09ORklHX1NZU19GTEFTSF9CQVNFX1BIWVMgZm9yIHVzZSBhcyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBhbmQKLSAgICBtYWludGFpbiBDT05GSUdfU1lTX0ZMQVNIX0JBU0UgYXMgdGhlIHZpcnR1YWwgYWRkcmVzcyBvZiB0aGUgZmxhc2guCi0KLSAgICBUaGlzIGFsbG93cyB1cyB0byBkZWFsIHdpdGggMzYtYml0IHBoeXMgb24gdGhlc2UgYm9hcmRzIGluIHRoZSBmdXR1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1MmI1NjVmNWFkMjNiNjgyNDg5MDU1YjE4Nzc2N2Q4YmYxYzJlNDQ0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgRGVjIDIgMTQ6MTk6MzMgMjAwOCAtMDYwMAotCi0gICAgODV4eDogc2VwYXJhdGUgUElYSVMgdmlydHVhbCBmcm9tIHBoeXNpY2FsIGFkZHJlc3MKLQotICAgIEFkZGVkIGEgUElYSVNfQkFTRV9QSFlTIGZvciB1c2UgYXMgdGhlIHBoeXNpY2FsIGFkZHJlc3MgYW5kIG1haW50YWluCi0gICAgUElYSVNfQkFTRSBhcyB0aGUgdmlydHVhbCBhZGRyZXNzIG9mIHRoZSBQSVhJUyBmcGdhIHJlZ2lzdGVycy4KLQotICAgIFRoaXMgYWxsb3dzIHVzIHRvIGRlYWwgd2l0aCAzNi1iaXQgcGh5cyBvbiB0aGVzZSBib2FyZHMgaW4gdGhlIGZ1dHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDMwODM3ZTViMjFkNWE3NDI5ODM1ODFhYjllZTNmYWMwODUzMTFkMTkKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBOb3YgMTEgMDg6NTI6MDkgMjAwOCAtMDUwMAotCi0gICAgQWRkIFJFQURNRSBmaWxlIGZvciBNUEM4NTcyRFMgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZkYWRjOTE5NWFkNjQyY2M2NjI2MzJmNGQ5MmY5MmQzZDcxZThiZjIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCAyMCAxNjoxNTowNCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdXNlIGNvbW1vbiBzdHJtaHooKSBpbiBzeXN0ZW0gb3V0cHV0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1YmI5MDdhNDkyNTM5Nzc4OWM5MGQwNzRmNGY3ZTkyY2U2YjM5NDAyCi1BdXRob3I6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KLURhdGU6CVRodSBKYW4gMjIgMTU6MDU6MjQgMjAwOSAtMDgwMAotCi0gICAgbXBjODN4eDogTmV3IGJvYXJkIHN1cHBvcnQgZm9yIFNJTVBDODMxMwotCi0gICAgVGhpcyBwYXRjaCB3aWxsIGNyZWF0ZSBhIG5ldyBib2FyZCwgU0lNUEM4MzEzLCBmcm9tIFNoZWxkb24gSW5zdHJ1bWVudHMuICBUaGlzCi0gICAgYm9hcmQgYm9vdHMgZnJvbSBOQU5EIGRldmljZXMgYW5kIGlzIGNvbmZpZ3VyZWFibGUgZm9yIGVpdGhlciBsYXJnZSBvciBzbWFsbAotICAgIHBhZ2UgZGV2aWNlcy4gIFRoZSBib2FyZCBzdXBwb3J0cyBub24tc29sZGVyZWQgRERSMiwgb25lIGV0aGVybmV0IHBvcnQsIGEKLSAgICBNYXJ2ZWxsIDg4RTExMTggUEhZLCBhbmQgUENJIGhvc3Qgc3VwcG9ydC4JVGhlIGJvYXJkIGFsc28gaGFzIGEgRlBHQSBjb25uZWN0ZWQKLSAgICB0byB0aGUgZUxCQyBwcm92aWRpbmcgZ2x1ZSBsb2dpYyB0byBhIFRNUzMyMEM2N3h4IERTUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDRiYWRlOGQ3N2FhMjBlMjg0NmZhNGFjY2ZmMGU3ZmE3OTYxYTEzNAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTdW4gSmFuIDE4IDE5OjQ2OjA2IDIwMDkgLTA1MDAKLQotICAgIG5hbmQ6IGZpeHVwIHByaW50ZiBtb2RpZmllcnMgdG8gbWF0Y2ggdHlwZXMgdXNlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzg5ZTY2MjBlMjI3MTA5NmRmMzMxNjkxNzUyODAwMzYyN2RiNDAyMQotQXV0aG9yOiBTY2hsYWVnbCBNYW5mcmVkIGp1biA8bWFuZnJlZC5zY2hsYWVnbEBnbXguYXQ+Ci1EYXRlOglUdWUgSmFuIDIwIDE2OjU3OjU1IDIwMDkgKzAxMDAKLQotICAgIG5hbmQgcmVhZC5qZmZzMiAobmFuZF9sZWdhY3kpIGluIGNvbW1vbi9jbWRfbmFuZC5jCi0KLSAgICBFcnJvciB3aXRoIENPTkZJR19OQU5EX0xFR0FDWSBpbiBjb21tb24vY21kX25hbmQuYzoKLSAgICBXaXRoIGN1cnJlbnQgY29kZSAibmFuZCByZWFkLmpmZnMycyIgKHJlYWQgYW5kIHNraXAgYmFkIGJsb2NrcykgaXMgYWx3YXlzIGludGVycHJldGVkIGFzCi0gICAgIm5hbmQgcmVhZC5qZmZzMiIgKHJlYWQgYW5kIGZpbGwgYmFkIGJsb2NrcyB3aXRoIDB4ZmYpLiBUaGlzIGlzIGJlY2F1c2UgIi5qZmZzMiIgaXMKLSAgICB0ZXN0ZWQgYmVmb3JlICIuamZmczJzIiBhbmQgb25seSB0aGUgZmlyc3QgdHdvIGNoYXJhY3RlcnMgYXJlIGNvbXBhcmVkLgotCi0gICAgQ29ycmVjdGlvbjoKLSAgICBUZXN0IGZvciAiLmpmZnMycyIgZmlyc3QgYW5kIGNvbXBhcmUgdGhlIGZpcnN0IDcgY2hhcmFjdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNmM4Njk2MzdmZWYzMWU2NjM4MGYwZWExZDQ5NjkwYTJlMjZlYzBkNwotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CUZyaSBKYW4gMTYgMTg6NTU6NTQgMjAwOSArMDEwMAotCi0gICAgTkFORDogcmVuYW1lIE5BTkRfTUFYX0NISVBTIHRvIENPTkZJR19TWVNfTkFORF9NQVhfQ0hJUFMKLQotICAgIFRoaXMgcGF0Y2ggcmVuYW1lcyBOQU5EX01BWF9DSElQUyB0byBDT05GSUdfU1lTX05BTkRfTUFYX0NISVBTIGFuZAotICAgIGNoYW5nZXMgdGhlIGRlZmF1bHQgZnJvbSA4IHRvIDEgZm9yIHRoZSBsZWdhY3kgYW5kIHRoZSBuZXcgTVRECi0gICAgTkFORCBsYXllci4gVGhpcyBhbGxvd3MgdG8gcmVtb3ZlIGFsbCBOQU5EX01BWF9DSElQUyBkZWZpbml0aW9ucwotICAgIGluIHRoZSBib2FyZCBjb25maWcgZmlsZXMgYmVjYXVzZSBub25lIG9mIHRoZSBib2FyZHMgdXNlIG11bHRpCi0gICAgY2hpcCBzdXBwb3J0IChOQU5EX01BWF9DSElQUyA+IDEpIHNvIGZhci4gVGhlIGJhbWJvbyBhbmQgdGhlIERVNDQwCi0gICAgZGVmaW5lCi0KLSAgICAgI2RlZmluZSBOQU5EX01BWF9DSElQUwkgICAgIENPTkZJR19TWVNfTUFYX05BTkRfREVWSUNFCi0KLSAgICBidXQgdGhhdCdzIGJvZ3VzIGFuZCBkaWQgbm90IHdvcmsgYW55aG93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNzA1NjRlNmIxYmQwOGYzMjMwMTgyMzkyMjM4OTA3ZjM1MzFhODdlCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgRGVjIDIgMTE6NDg6NTEgMjAwOCArMDgwMAotCi0gICAgTkFORDogRml4IGNhY2hlIGFuZCBtZW1vcnkgaW5jb25zaXN0ZW5jeSBpc3N1ZQotCi0gICAgV2UgbG9hZCB0aGUgc2Vjb25kYXJ5IHN0YWdlIHUtYm9vdCBpbWFnZSBmcm9tIE5BTkQgdG8KLSAgICBzeXN0ZW0gbWVtb3J5IGJ5IG5hbmRfbG9hZCwgYnV0IHdlIGRpZCBub3QgZmx1c2ggZC1jYWNoZQotICAgIHRvIG1lbW9yeSwgbm9yIGludmFsaWRhdGUgaS1jYWNoZSBiZWZvcmUgd2UganVtcCB0byBSQU0uCi0gICAgV2hlbiB0aGUgc3lzdGVtIGhhcyBjYWNoZSBlbmFibGVkIGFuZCB0aGUgVExCL3BhZ2UgYXR0cmlidXRlCi0gICAgb2Ygc3lzdGVtIG1lbW9yeSBpcyBjYWNoZWFibGUsIGl0IHdpbGwgY2F1c2UgaXNzdWVzLgotCi0gICAgLSA4M3h4IGZhbWlseSBpcyB1c2luZyB0aGUgZC1jYWNoZSBsb2NrLCBzbyBhbGwgb2YgZC1jYWNoZQotICAgICAgYWNjZXNzIGlzIGNhY2hlLWluaGliaXRlZC4gc28geW91IGNhbid0IHNlZSB0aGUgaXNzdWUuCi0gICAgLSA4NXh4IGZhbWlseSBpcyB1c2luZyBkLWNhY2hlLCBpLWNhY2hlIGVuYWJsZSwgcGFydGlhbAotICAgICAgY2FjaGUgbG9jay4geW91IHdpbGwgc2VlIHRoZSBpc3N1ZS4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGNhY2hlIGlzc3VlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDUwNjU3YzI3MzI3OGY3NDM3OGUxYWMzOWI0MWQ2MTJiOTJmZGZmYTAKLUF1dGhvcjogTmlzaGFudGggTWVub24gPG1lbm9uLm5pc2hhbnRoQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBEZWMgMTMgMDk6NDM6MDYgMjAwOCAtMDYwMAotCi0gICAgTkFORDogRW5hYmxlIG5hbmQgbG9jaywgdW5sb2NrIGZlYXR1cmUKLQotICAgIEVuYWJsZSBuYW5kIGxvY2ssIHVubG9jayBhbmQgc3RhdHVzIG9mIGxvY2sgZmVhdHVyZS4KLSAgICBOb3QgZXZlcnkgZGV2aWNlIGFuZCBwbGF0Zm9ybSByZXF1aXJlcyB0aGlzLCBoZW5jZSwKLSAgICBpdCBpcyB1bmRlciBkZWZpbmUgZm9yIENPTkZJR19DTURfTkFORF9MT0NLX1VOTE9DSwotCi0gICAgTmFuZCB1bmxvY2sgYW5kIHN0YXR1cyBvcGVyYXRlIG9uIGJsb2NrIGJvdW5kYXJ5IGluc3RlYWQKLSAgICBvZiBwYWdlIGJvdW5kYXJ5LiBEZXRhaWxzIGluOgotICAgIGh0dHA6Ly93d3cubWljcm9uLmNvbS9wcm9kdWN0cy9wYXJ0ZGV0YWlsP3BhcnQ9TVQyOUMyRzI0TUFLTEFKRy02JTIwSVQKLQotICAgIEludGlhbCBzb2x1dGlvbiBwcm92aWRlZCBieSBWaWtyYW0gUGFuZGl0YSA8dmlrcmFtLnBhbmRpdGFAdGkuY29tPgotICAgIEluY2x1ZGVzIHByZWxpbWluYXJ5IHN1Z2dlc3Rpb25zIGZyb20gU2NvdHQgV29vZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlzaGFudGggTWVub24gPG5tQHRpLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDY5ZmI4YmU0ZmMwNzE2MmZkZjZlZGYwNGJkYzcyMzNiMGU5YTkyMGUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IERlYyA2IDAyOjQwOjU1IDIwMDggLTA1MDAKLQotICAgIE5BTkQ6IG1vdmUgYm9hcmRfbmFuZF9pbml0IHRvIG5hbmQuaAotCi0gICAgUmF0aGVyIHRoYW4gcHV0dGluZyB0aGUgZnVuY3Rpb24gcHJvdG90eXBlIGZvciBib2FyZF9uYW5kX2luaXQoKSBpbiB0aGUgb25lCi0gICAgcGxhY2Ugd2hlcmUgaXQgZ2V0cyBjYWxsZWQsIHB1dCBpdCBpbnRvIG5hbmQuaCBzbyB0aGF0IGV2ZXJ5IHBsYWNlIHRoYXQgYWxzbwotICAgIGRlZmluZXMgaXQgZ2V0cyB0aGUgcHJvdG90eXBlLiAgT3RoZXJ3aXNlLCBlcnJvcnMgY2FuIGdvIHNpbGVudGx5IHVubm90aWNlZAotICAgIHN1Y2ggYXMgdXNpbmcgdGhlIHdyb25nIHJldHVybiB2YWx1ZSAodm9pZCByYXRoZXIgdGhhbiBpbnQpIHdoZW4gZGVmaW5pbmcKLSAgICB0aGUgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYWUzOTg2MjA0NGViYjFlNjgyMjM0YjUxZjk0NDIxZTNmODcxZDZhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBEZWMgMiAxMTowNjo0NyAyMDA4ICswMTAwCi0KLSAgICBPbmVOQU5EOiBBZGRpdGlvbmFsIHN5bmMgd2l0aCAyLjYuMjcKLQotICAgIC0gQWRkIHN1YnBhZ2Ugd3JpdGUgc3VwcG9ydAotICAgIC0gQWRkIG9uZW5hbmRfb29iXzY0LzMyIGVjY2xheW91dAotCi0gICAgVGhpcyBoYXMgYmVlbiBtaXNzaW5nIGFuZCB3aXRob3V0IGl0IFVCSSBoYXMgc29tZSBpbmNvbXBhdGliaWxpZXMgaXNzdWVzCi0gICAgd2l0aCB0aGUgY3VycmVudCAoPj0gMi42LjI3KSBMaW51eCBrZXJuZWwgdmVyc2lvbi4gdmlkX2hkcl9vZmZzZXQgaXMKLSAgICBwbGFjZWQgZGlmZmVyZW50bHkgKDIwNDggaW5zdGVhZCBvZiA1MTIpIHdpdGhvdXQgdGhpcyBmaXguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxNzE0ZjUxYTIwMDliYWFlY2YzZDRmNmUzYmQ4YzRlOTNhOGQzZjIzCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJVGh1IE5vdiAxMyAxNToxNDozMyAyMDA4ICswOTAwCi0KLSAgICBBZGQgbWFya2JhZCBmdW5jdGlvbgotCi0gICAgQWRkIG1pc3NpbmcgbWFya2JhZCBmdW5jdGlvbgotICAgIElmIG5vdCwgaXQncyBoYW5nIHdoZW4gaXQgZW50ZXJlZCB0aGUgbXRkLT5tYXJrX2JhZCgpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGM0MzhlYTE3NWQ4ZDAwMmMxMDYzYjdhOTRiMGMwZTI2NjY4ZDFhYzkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE5vdiAxMiAxMzo0NzoyNCAyMDA4ICswMTAwCi0KLSAgICBPbmVOQU5EOiBCYWQgYmxvY2sgYXdhcmUgcmVhZC93cml0ZSBjb21tYW5kIHN1cHBvcnQKLQotICAgIFVwZGF0ZSBPbmVOQU5EIGNvbW1hbmQgdG8gc3VwcG9ydCBiYWQgYmxvY2sgYXdhcmVuZXNzLgotICAgIEFsc28gY2hhbmdlIHRoZSBPbmVOQU5EIGNvbW1hbmQgc3R5bGUgdG8gYmV0dGVyIG1hdGNoIHRoZQotICAgIE5BTkQgdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDhjZjExZjNhYTc4NjczNzMwZTllY2JiZTRiNzUyMTNiNTNmMjEyYzgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE5vdiAxMSAxMDoyOTowOSAyMDA4ICswMTAwCi0KLSAgICBPbmVOQU5EOiBTYXZlIHZlcnNpb25faWQgaW4gb25lbmFuZF9jaGlwIHN0cnVjdAotCi0gICAgVGhlIHZlcnNpb24gKHZlcl9pZCkgd2FzIG5vdCBzdG9yZWQgaW4gdGhlIG9uZW5hbmRfY2hpcCBzdHJ1Y3R1cmUgYW5kCi0gICAgYmVjYXVzZSBvZiB0aGlzIHRoZSBjb250aW51b3VzIGxvY2tpbmcgc2NoZW1lIGNvdWxkIGJlIGVuYWJsZWQgb24gc29tZQotICAgIGNoaXBzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNGZjYTMzMTBkNjExY2MwZjUxZDcyOTVlZjM1NTdhZmJkYmQ5MWRjMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDExIDEwOjI4OjUzIDIwMDggKzAxMDAKLQotICAgIE9uZU5BTkQ6IEZpeCBjb21waWxlciB3YXJuaW5ncwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMWFjNTc0NGUzM2VlMGFhNmQ2ZGRhYjNiOTlmOWU3MDk1MzE1NmU2OQotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE5vdiA0IDE0OjU1OjA2IDIwMDggKzA4MDAKLQotICAgIG1wYzgzeHg6IGVuYWJsZSBlTEJDIE5BTkQgc3VwcG9ydCBmb3IgTVBDODMxNUVSREIgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlZjA5MjFkNmIwNWFlYjkwMzQxNThmOWJlZjUzMjNkNmRhOWM5MjVlCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJVHVlIE5vdiA0IDA5OjI0OjA3IDIwMDggKzA5MDAKLQotICAgIFN5bmMgd2l0aCAyLjYuMjcKLQotICAgIFN5bmMgd2l0aCBPbmVOQU5EIGtlcm5lbCBjb2RlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGU3ZjMyNWJlOWVkZWI4NGJiNDU3MzAxNzc2YmJhYzFmNzI1N2RhZmMKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIEphbiA1IDEzOjM1OjMxIDIwMDkgKzAxMDAKLQotICAgIG1pY3JvYmxhemU6IFVzZSBjYWNoZSBmdW5jdGlvbnMgKGVzcGVjaWFsbHkgY2FjaGUgc3RhdHVzKQotICAgIGluIHN5c3RlbXMgd2hpY2ggYXJlIGNvbmZpZ3VyZWQgd2l0aG91dCBmbGFzaAotCi1jb21taXQgZTliNzM3ZGViMmMzMDEyNTM2MmQyMGUyNDE3MDYxNzQ3NjAyNmU5NAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gSmFuIDUgMTM6Mjk6MzIgMjAwOSArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogQWRkIGNhY2hlIGZsdXNoCi0KLWNvbW1pdCBiNGY4ZGRhMzViZmFkNDQ3YjQxMDY4MjgyMzI3MDViMmU4NzhkMTY4Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBKYW4gNSAxMzoyODo0MCAyMDA5ICswMTAwCi0KLSAgICBtaWNyb2JsYXplOiBBZGQgYm9vdHVwIG1lc3NhZ2VzIHRvIGJvYXJkLmMKLQotY29tbWl0IDMzMGU1NTQ1OWJjOTk4MzM0MWRhNmMxZDVjN2ZlMDBhNjY0NDM2ZmUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIERlYyAxOSAxMzoyNTo1NSAyMDA4ICswMTAwCi0KLSAgICBtaWNyb2JsYXplOiBDaGFuZ2UgbWljcm9ibGF6ZS1nZW5lcmljIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA1MmE4MjJlZDljMzdhMmVhMGVkMTEyYTI2ZDhmZjVhNmNiMWM2ZjEwCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBEZWMgMTkgMTM6MTQ6MDUgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogUmVuYW1lIG1sNDAxIHRvIG1pY3JvYmxhemUtZ2VuZXJpYwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgNjY3Nzg3NjE4MWNjODc3MmJjYThhMzcyNDc5YTUwMGQxNjBmMzk5MwotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMjAgMTE6NTY6MTEgMjAwOSAtMDYwMAotCi0gICAgODN4eDogVXNlIHRoZSBwcm9wZXIgc2VxdWVuY2UgZm9yIHVwZGF0aW5nIElNTVIuCi0KLSAgICBUaGlzIGVuc3VyZXMgdGhhdCBzdWJzZXF1ZW50IGFjY2Vzc2VzIHByb3Blcmx5IGhpdCB0aGUgbmV3IHdpbmRvdy4KLQotICAgIFRoZSBkY2JpIGR1cmluZyB0aGUgTkFORCBsb29wIHdhcyBhY2NpZGVudGFsbHkgd29ya2luZyBhcm91bmQgdGhpczsKLSAgICBpdCdzIG5vIGxvbmdlciBuZWNlc3NhcnksIGFzIHRoZSBjYWNoZSBpcyBub3QgZW5hYmxlZC4KLQotICAgIFJlcG9ydGVkLWJ5OiBTdWNoaXQgTGVwY2hhIDxTdWNoaXQuTGVwY2hhQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhiMzQ1NTdjNTQ2ZTVlOWYzNGViZjgzYzkzNDEzZGFkOTczZDkzZGYKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgSmFuIDggMDQ6MjY6MTkgMjAwOSArMDMwMAotCi0gICAgbXBjODN4eDogQWRkIFBDSS1FIHN1cHBvcnQgZm9yIE1QQzgzN1hFTURTIGJvYXJkcwotCi0gICAgTVBDODM3WEVNRFMgYm9hcmRzIGNhbiBzdXBwb3J0IFBDSS1FIHZpYSAiUENJLUUgcmlzZXIgY2FyZCIuIFRoZSBjYXJkCi0gICAgcHJvdmlkZXMgdHdvIFBDSS1FICh4MikgcG9ydHMuIFRob3VnaCwgb25seSBvbmUgcG9ydCBjYW4gYmUgdXNlZCBpbiB4MgotICAgIG1vZGUuIFR3byBwb3J0cyBjYW4gZnVuY3Rpb24gc2ltdWx0YW5lb3VzbHkgaW4geDEgbW9kZS4KLQotICAgIFBDSS1FIHgxL3gyIG1vZGVzIGNhbiBiZSBzd2l0Y2hlZCB2aWEgInBleF94MiIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOGYxMWUzNGIzMWE3YmUxMjRhMzIzOTY1M2YzM2FmOTUxMDUwMjA0NQotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBKYW4gOCAwNDoyNjoxNyAyMDA5ICswMzAwCi0KLSAgICBtcGM4M3h4OiBBZGQgUENJLUUgc3VwcG9ydCBmb3IgTVBDODMxNUVSREIgYm9hcmRzCi0KLSAgICBNUEM4MzE1RVJEQiBib2FyZHMgZmVhdHVyZXMgUENJLUUgeDEgYW5kIE1pbmkgUENJLUUgeDEgcG9ydHMuIExldCdzCi0gICAgc3VwcG9ydCB0aGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGZkNjY0NmMwYjllYmU3ZTVhZmM0YWU0Yzc4MDk3ZDljZDMxN2E1ZTgKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgSmFuIDggMDQ6MjY6MTIgMjAwOSArMDMwMAotCi0gICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIE1QQzgzeHggUENJLUUgY29udHJvbGxlcnMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBNUEM4M3h4IFBDSS1FIGNvbnRyb2xsZXJzIGluIFJvb3QgQ29tcGxleAotICAgIG1vZGUuCi0KLSAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb24gVG9ueSBMaSBhbmQgRGF2ZSBMaXUgd29ya1sxXS4KLQotICAgIFRob3VnaCB1bmxpa2UgdGhlIG9yaWdpbmFsIHBhdGNoLCBieSBkZWZhdWx0IHdlIGRvbid0IHJlZ2lzdGVyIFBDSS1FCi0gICAgYnVzZXMgZm9yIHVzZSBpbiBVLUJvb3QsIHdlIG9ubHkgY29uZmlndXJlIHRoZSBjb250cm9sbGVycyBmb3IgZnV0dXJlCi0gICAgdXNlIGluIG90aGVyIE9TZXMgKExpbnV4KS4gVGhpcyBpcyBkb25lIGJlY2F1c2Ugd2UgZG9uJ3QgaGF2ZSBlbm91Z2gKLSAgICBvZiBzcGFyZSBCQVRzIHRvIG1hcCBhbGwgdGhlIFBDSS1FIHJlZ2lvbnMuCi0KLSAgICBUbyBhY3R1YWxseSB1c2UgUENJLUUgaW4gVS1Cb290LCB1c2VycyBzaG91bGQgZXhwbGljaXRseSBkZWZpbmUKLSAgICBDT05GSUdfODNYWF9HRU5FUklDX1BDSUVfUkVHSVNURVJfSE9TRVMgc3ltYm9sIGluIHRoZSBib2FyZCBmaWxlLiBBbmQKLSAgICBvbmx5IHRoZW4gVS1Cb290IHdpbGwgYWJsZSB0byBhY2Nlc3MgUENJLUUsIGJ1dCBhdCB0aGUgY29zdCBvZiBkaXNhYmxlZAotICAgIGFkZHJlc3MgdHJhbnNsYXRpb24uCi0KLSAgICBbMV0gaHR0cDovL2xpc3RzLmRlbnguZGUvcGlwZXJtYWlsL3UtYm9vdC8yMDA4LUphbnVhcnkvMDI3NjMwLmh0bWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbnkgTGkgPHRvbnkubGlAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBBY2tlZC1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODhlY2Y1NWNhYmQ3YWVhMjhmZTgwOTM3MjBlMjA4ZjUzY2NmZGNmNQotQXV0aG9yOiBJcmEgU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLURhdGU6CU1vbiBKYW4gMTIgMTM6MzM6MTcgMjAwOSAtMDgwMAotCi0gICAgTVBDODM0OUVNRFM6IGRvIG5vdCBzZXR1cCB1bnVzZWQgUENJIGNsb2NrIG91dHB1dHMgaW4gUENJIGFnZW50IG1vZGUKLQotICAgIFdoZW4gcnVubmluZyBpbiBQQ0kgYWdlbnQgbW9kZSwgdGhlIFBDSV9DTEtfT1VUIHNpZ25hbHMgYXJlIG5vdCB1c2VkLCBzbyBkbwotICAgIG5vdCBlbmFibGUgdGhlbS4gU2VlIHRoZSBNUEM4MzQ5RUEgUmVmZXJlbmNlIE1hbnVhbCwgU2VjdGlvbiA0LjQuMgotICAgICJDbG9ja2luZyBpbiBQQ0kgQWdlbnQgTW9kZSIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzVmMzUyMDlmNzAyYmIyNjgyNjg1NWVkOGM4ZTRkMTA4YWI1ZjQxMgotQXV0aG9yOiBJcmEgU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLURhdGU6CU1vbiBKYW4gMTIgMTM6MzI6MjYgMjAwOSAtMDgwMAotCi0gICAgODN4eDogUENJIGFnZW50IG1vZGUgZml4ZXMgZm9yIG11bHRpLWJvYXJkIHN5c3RlbXMKLQotICAgIFdoZW4gcnVubmluZyBhIHN5c3RlbSB3aXRoIDIgb3IgbW9yZSBNUEM4MzQ5RU1EUyBib2FyZHMgaW4gUENJIGFnZW50IG1vZGUsCi0gICAgdGhlIGJvYXJkcyB3aWxsIGxvY2sgdXAgdGhlIFBDSSBidXMgYnkgc2Nhbm5pbmcgYWdhaW5zdCBlYWNoIG90aGVyLgotCi0gICAgVGhlIGJvYXJkcyBsb2NrIGFnYWluc3QgZWFjaCBvdGhlciBieSB0cnlpbmcgdG8gYWNjZXNzIHRoZSBQQ0kgYnVzIGJlZm9yZQotICAgIGNsZWFyaW5nIHRoZWlyIGNvbmZpZ3VyYXRpb24gbG9jayBiaXQuIEJvdGggYm9hcmRzIGVuZCB1cCBpbiBhIGxvb3AsCi0gICAgc2VuZGluZyBhbmQgcmVjZWl2aW5nICJUYXJnZXQgTm90IFJlYWR5IiBtZXNzYWdlcyBmb3JldmVyLgotCi0gICAgV2hlbiBydW5uaW5nIGluIFBDSSBhZ2VudCBtb2RlLCB0aGUgc2Nhbm5pbmcgbm93IHRha2VzIHBsYWNlIGFmdGVyIHRoZQotICAgIGJvYXJkcyBoYXZlIGNsZWFyZWQgdGhlaXIgY29uZmlndXJhdGlvbiBsb2NrIGJpdC4KLQotICAgIEFsc28sIGFkZCBhIG1pc3NpbmcgZGVjbGFyYXRpb24gdG8gdGhlIG1wYzgzeHguaCBoZWFkZXIgZmlsZSwgZml4aW5nIGEKLSAgICBidWlsZCB3YXJuaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ1NWE0NjkxNWI4Mjg5NmNjMjA3MGViMzI2ZDA3NTU1NWMyYmM1ODAKLUF1dGhvcjogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotRGF0ZToJRnJpIERlYyAxMiAxMzoxMjo0NSAyMDA4IC0wODAwCi0KLSAgICBtcGM4M3h4OiBTaXplIG9wdGltaXphdGlvbiBvZiBzdGFydC5TCi0KLSAgICBDdXJyZW50bHkgdGhlcmUgYXJlIGluIGV4Y2VzcyBvZiAxMDAgYnl0ZXMgbG9jYXRlZCBhdCB0aGUgYmVnaW5uaW5nIG9mIHRoZSBpbWFnZQotICAgIGJ1aWx0IGJ5IHN0YXJ0LlMgdGhhdCBhcmUgbm90IGJlaW5nIHV0aWxpemVkLiAgVGhpcyBwYXRjaCBtb3ZlcyBhIGZldyBmdW5jdGlvbnMKLSAgICBpbnRvIHRoaXMgcGFydCBvZiB0aGUgaW1hZ2UuICBUaGlzIHdpbGwgY3JlYXRlIGEgZ3JlYXRlciBudW1iZXIgb2YgKmF2YWlsYWJsZSoKLSAgICBieXRlcyB0aGF0IGNhbiBiZSB1c2VkIGJ5IGJvYXJkIHNwZWNpZmljIGNvZGUgaW4gTkFORCBidWlsZHMgYW5kIHdpbGwgZGVjcmVhc2UKLSAgICB0aGUgc2l6ZSBvZiB0aGUgYXNzZW1ibGVkIGNvZGUgaW4gb3RoZXIgYnVpbGRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9uIE1hZHJpZCA8cm9uX21hZHJpZEBzYmNnbG9iYWwubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3MmQxNWU3MDViYzM5ODM4ODQxMDVjYjc3NTVjN2JhODBlNzRhMGE1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDIxIDIzOjA4OjEyIDIwMDkgKzAxMDAKLQotICAgIFByZXBhcmUgdjIwMDkuMDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2MzVlNWY4ZmM4MjM2NWU2ZTk3MzRiMzEzMmJjOTUxMzVhNmRlNjc5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSmFuIDE4IDIxOjM3OjQ4IDIwMDkgKzAxMDAKLQotICAgIFByZXBhcmUgMjAwOS4wMS1yYzMKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0Y2RhNDM3ODk4Zjc4NzM3NTJmMDIwMTc1N2NkMzNmMTIxOTZjZTg3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBKYW4gMTcgMTM6MzI6NDIgMjAwOSAtMDUwMAotCi0gICAgYnVpbGQgc3lzdGVtOiB0cmVhdCBhbGwgRGFyd2luJ3MgYWxpa2UKLQotICAgIFRoZSB4ODYgYmFzZWQgdmVyc2lvbiBvZiBEYXJ3aW4gYmVoYXZlcyB0aGUgc2FtZSBxdWlya3kgd2F5IGFzIHRoZSBwb3dlcnBjCi0gICAgRGFyd2luLCBzbyBvbmx5IGNoZWNrIEhPU1RPUyB3aGVuIHNldHRpbmcgdXAgRGFyd2luIHdvcmthcm91bmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzA4OGExMDhjNzVkYjU2NWUwNzI5MmZkNjY4ZGZhNTQ5MWU4NWJjMgotQXV0aG9yOiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgotRGF0ZToJV2VkIEphbiAxNCAxMzo1MjoyNCAyMDA5ICswMTAwCi0KLSAgICBmZHRfcmVzaXplKCk6IGZpeCBhY3R1YWxzaXplIGNhbGN1bGF0aW9ucyB3aXRoIHVuYWxpZ25lZCBibG9icwotCi0gICAgVGhlIGNvZGUgaW4gZmR0X3Jlc2l6ZSgpIHRvIGV4dGVuZCB0aGUgZmR0IHNpemUgdG8gZW5kIG9uIGEgcGFnZSBib3VuZGFyeQotICAgIGlzIHdyb25nIGZvciBmZHQncyBub3QgbG9jYXRlZCBhdCBhbiBhZGRyZXNzIGFsaWduZWQgb24gYSBwYWdlIGJvdW5kYXJ5LgotICAgIFdoYXQncyBldmVuIHdvcnNlLCB0aGUgY29kZSB3b3VsZCBtYWtlIGFjdHVhbHNpemUgc2hyaW5rIHJhdGhlciB0aGFuIGdyb3cKLSAgICBpZiAoYmxvYiAmIDB4ZmZmKSB3YXMgYmlnZ2VyIHRoYW4gdGhlIGFtb3VudCBvZiBwYWRkaW5nIGFkZGVkIGJ5IEFMSUdOKCksCi0gICAgY2F1c2luZyBmZHRfYWRkX21lbV9yc3YgdG8gZmFpbC4KLQotICAgIEZpeCBpdCBieSBhbGlnbmluZyBlbmQgYWRkcmVzcyAoYmxvYiArIHNpemUpIHRvIGEgcGFnZSBib3VuZGFyeSBpbnN0ZWFkLgotICAgIEZvciBhbGlnbmVkIGZkdCdzIHRoaXMgaXMgZXF1aXZhbGVudCB0byB3aGF0IHdlIGhhZCBiZWZvcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBLb3JzZ2FhcmQgPGphY21ldEBzdW5zaXRlLmRrPgotCi1jb21taXQgZmFkYWQxNTczZmIxNmM5MDAyNWYwOGEyODYxZDYwNDdkMDkzY2JhNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgSmFuIDkgMDQ6Mzg6MTcgMjAwOSAtMDUwMAotCi0gICAgbmNiOiB1c2Ugc29ja2xlbl90Ci0KLSAgICBUaGUgcmVjdmZyb20oKSBmdW5jdGlvbiB0YWtlcyBhIHNvY2tsZW5fdCwgbm90IGFuIGludC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGZjODNjOTI3M2NlYzZlNmU1NDJmNGEwZWEzYjY1M2I3ZDA1MTNmZmEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBKYW4gMTEgMTY6MzU6MTYgMjAwOSArMDEwMAotCi0gICAgc2g6IHNlcmlhbDogdXNlIHJlYWR4L3dyaXRleCBhY2Nlc3NvcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgOWUxZmE2MjhiZGI2NDc0NTgxMWNkZDI2YzRmOTUzODQ2YzA3NjE4MAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEphbiAxMSAxNjozNToxNSAyMDA5ICswMTAwCi0KLSAgICBzaDogc2VyaWFsOiBjb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBjOTkzNWM5OTI1NzU5MjJiN2VmMTNlZWMwNjU2ZWQ4NjY1ZDMyNGUzCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVN1biBKYW4gMTEgMTc6NDg6NTYgMjAwOSArMDkwMAotCi0gICAgc2g6IEZpeCBjb21waWxlIGVycm9yIG9uIGxvd2xldmVsX2luaXQgZmlsZQotCi0gICAgbG93bGV2ZWxfaW5pdCBvZiBTSCB3YXMgY29ycmVjdGVkIHRvIHVzZSB0aGUgd3JpdGUvcmVhZFhYIG1hY3JvLgotICAgIEhvd2V2ZXIsIHRoZXJlIHdhcyBhIHByb2JsZW0gdGhhdCB3YXMgbm90IGFibGUgdG8gYmUgY29tcGlsZWQgcGFydGlhbGx5LgotICAgIFRoaXMgcGF0Y2ggY29ycmVjdGVkIHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBhNWIwNGQwMGJmZWI5NDBjNjIyMzI5NzJjZTY0NGQ1MGI0NTc5N2Y5Ci1BdXRob3I6IEtpZXJhbiBCaW5naGFtIDxraWVyYW5iaW5naGFtQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBEZWMgMzAgMDE6MTY6MDMgMjAwOCArMDAwMAotCi0gICAgc2g6IEZpeCB1cCByc2s3MjAzIHRhcmdldCBmb3Igb3V0IG9mIHRyZWUgYnVpbGQKLQotICAgIEZpeCB1cCByc2s3MjAzIHRhcmdldCB0byBidWlsZCBzdWNjZXNzZnVsbHkgdXNpbmcgb3V0LW9mLXRyZWUgYnVpbGQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaWVyYW4gQmluZ2hhbSA8a2JpbmdoYW1AbXBjLWRhdGEuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgZjdlNzhmM2I3NGFhZTljYWNhMjk5N2JhZDg2NWE3MjMzODMyNmMwYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IERlYyAyMCAxOToyOTo0OSAyMDA4ICswMTAwCi0KLSAgICBzaDogdXNlIHdyaXRlezgsMTYsMzJ9IGluIGFsbCBsb3dsZXZlbF9pbml0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGU0NDMwNzc5NjIzYWY1MDBkZTFjZWU3ODkyYzM3OWYwN2VmNTk4MTMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBEZWMgMjAgMTk6Mjk6NDggMjAwOCArMDEwMAotCi0gICAgc2g6IGxvd2xldmVsX2luaXQgY29kaW5nIHN0eWxlIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgODVjYjA1MmVlNDE2NzVjYTM2MWU2YTRjNjk0NTVkYzcxNWM4ZjJkOQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IERlYyAyMCAxNToyNzo0NSAyMDA4ICswMTAwCi0KLSAgICBzaDogdXBkYXRlIHNoMi9zaDJhIHRpbWVyIGNvZGluZyBzdHlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAxZTE1ZmY5OTkzMjJlODFhZjRjMGMwYzU0ODkwOGYzODk0NGJhMzljCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgRGVjIDIwIDE1OjI1OjIyIDIwMDggKzAxMDAKLQotICAgIHNoOiB1cGRhdGUgc2ggdGltZXIgY29kaW5nIHN0eWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDBlM2VjZTMzODAxZTM3N2JlNjdmZmEyOWYwODM0MjFhZDgyMGYyOGIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMTQgMjM6MjY6MDUgMjAwOSArMDEwMAotCi0gICAgUHJlcGFyZSAyMDA5LjAxLXJjMgotCi0gICAgVXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlOTJjOWE4NjBlNDRjMTQ1MTNjODkwOWNlNDI5OWUyNTNhNzc1ZWViCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDE0IDIyOjM1OjMwIDIwMDkgKzAxMDAKLQotICAgIGNwdS9tcGM4MjR4L01ha2VmaWxlOiBmaXggd2FybmluZyB3aXRoIHBhcmFsbGVsIGJ1aWxkcwotCi0gICAgUGFyYWxsZWwgYnVpbGRzIHdvdWxkIG9jY2FzaW9uYWxseSBpc3N1ZSB0aGlzIGJ1aWxkIHdhcm5pbmc6Ci0KLQlsbjogY3JlYXRpbmcgc3ltYm9saWMgbGluayBgY3B1L21wYzgyNHgvYmVkYnVnXzYwM2UuYyc6IEZpbGUgZXhpc3RzCi0KLSAgICBVc2UgImxuIC1zZiIgYXMgcXVpY2sgd29yayBhcm91bmQgZm9yIHRoZSBpc3N1ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzYmE2MDVkNGJlZWM2NDk0Mzg1MzllN2RmOTdiNWZlZGIyNjU5MmZiCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIEphbiAyIDEyOjE4OjQ5IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIGxvYWRwY2kgY29tbWFuZCB0byBlc2QncyBDUENJNDA1MiBhbmQgQ1BDSTQwNUFCIGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGVzZCdzIGxvYWRwY2kgQlNQIGNvbW1hbmQgdG8gQ1BDSTQwNTIgYW5kCi0gICAgQ1BDSTQwNUFCIGJvYXJkLiBUaGlzIHJlcXVpcmVzIENPTkZJR19DTURfQlNQIGFuZCBDT05GSUdfUFJBTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDYwMGZlNDZmYjNkYWI3ZjA3NjA0ZjkwMDk5MDRmMzE1ODQ0MTUxMTQKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgSmFuIDIgMTI6MTg6MTIgMjAwOSArMDEwMAotCi0gICAgcHBjNHh4OiBEaXNhYmxlIHBjaSBub2RlIGluIGRldmljZSB0cmVlIG9uIENQQ0k0MDUgcGNpIGFkYXB0ZXJzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmNmExZjQ5MGQyMjRjNjAwYTA5MTM3ZTU4ZDEwMjZkMTUwYjhlNjc5Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIEphbiAyIDEyOjE3OjM2IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogQ2xlYW51cCBDUENJNDA1IGJvYXJkIGNvZGUKLQotICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIENQQ0k0MDUgYm9hcmQgc3VwcG9ydDoKLSAgICAtIHdyYXAgbG9uZyBsaW5lcwotICAgIC0gdW5pZmljYXRpb24gb2Ygc3BhY2VzIGluIGZ1bmN0aW9uIGNhbGxzCi0gICAgLSByZW1vdmUgZGVhZCBjb2RlCi0KLSAgICBVc2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgb24gcGVyaXBoZXJhbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmY2VlYmI0NWEwYjk3ZTkyZjk4ODk4NjFmOGMzYjljYjg4NWU3MDZmCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIEphbiAyIDEyOjE2OjM1IDIwMDkgKzAxMDAKLQotICAgIHBwYzR4eDogRW5hYmxlIGF1dG8gUlM0ODUgbW9kZSBvbiBQTFU0MDUgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIHR1cm5zIG9uIHRoZSBhdXRvIFJTNDg1IG1vZGUgaW4gdGhlIDJuZCBleHRlcm5hbAotICAgIHVhcnQgb24gUExVNDA1IGJvYXJkcy4gVGhpcyBpcyBhIHNwZWNpYWwgbW9kZSBvZiB0aGUgdXNlZAotICAgIEV4YXIgWFIxNkMyODUwIHVhcnQuIEJlY2F1c2UgdGhlc2UgYm9hcmRzIG9ubHkgaGF2ZSBhIDQ4NSBwaHlzaWNhbAotICAgIGxheWVyIGNvbm5lY3RlZCBpdCdzIGEgZ29vZCBpZGVhIHRvIHR1cm4gaXQgb24gYnkgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjVmNjVkZmE5YWE4ZTA2OGU2MmFiYTQ3MzNkYzRmZDk3YjFkOWJmNgotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAxMyAxNjoyOToyOCAyMDA5IC0wNTAwCi0KLSAgICBTb21lIGNoYW5nZXMgb2YgVExCIGVudHJ5IHNldHRpbmcgZm9yIE1QQzg1NzJEUwotCi0gICAgLSBNb3ZlIHRoZSBUTEIgZW50cnkgb2YgUElYSVNfQkFTRSBmcm9tIFRMQjAgdG8gVExCMVs4XSwgYmVjYXVzZSBpbiBDQU1QIG1vZGUsCi0gICAgYWxsIHRoZSBUTEIwIGVudHJpZXMgd2lsbCBiZSBpbnZhbGlkYXRlZCBhZnRlciBjcHUxIGJyaW5ncyB1cCBrZXJuZWwsIHRodXMgY3B1MAotICAgIGNhbiBub3QgYWNjZXNzIFBJWElTX0JBU0UgYW55bW9yZSAoYW55IGFjY2VzcyB3aWxsIGNhdXNlIERhdGFUTEJFcnJvciBleGNlcHRpb24pCi0KLSAgICAtIFNldCBDT05GSUdfU1lTX0REUl9UTEJfU1RBUlQgdG8gOSBmb3IgTVBDODU3MkRTIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk1MDI2NDMxN2ViOTU5NGIyYjVlZTJmYjY1MjA2MjAwYTFjNjAwN2EKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTMgMTY6Mjk6MjIgMjAwOSAtMDUwMAotCi0gICAgQ2hhbmdlIEREUiB0bGIgc3RhcnQgZW50cnkgdG8gQ09ORklHIHBhcmFtIGZvciA4NXh4Ci0KLSAgICBTbyB0aGF0IHdlIGNhbiBsb2NhdGUgdGhlIEREUiB0bGIgc3RhcnQgZW50cnkgdG8gdGhlIHZhbHVlIG90aGVyIHRoYW4gOC4gQnkKLSAgICBkZWZhdWx0LCBpdCBpcyBzdGlsbCA4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZkM2ExMGY3M2VjZTdmZmI3MzY4OTBjMTBlMDIzMjIyNjEyYTRhYTAKLUF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEphbiA5IDE2OjAyOjM1IDIwMDkgKzA4MDAKLQotICAgIENoYW5nZSBQQ0lFMSYyIGRlY2lpZGUgbG9naWMgb24gTVBDODU0NERTIGJvYXJkIG1vcmUgcmVhZGFibGUKLQotICAgIFRoZSBJTyBwb3J0IHNlbGVjdGlvbiBmb3IgTVBDODU0NERTIGJvYXJkOgotICAgICBQb3J0CQkJY2ZnX2lvX3BvcnRzCi0gICAgIFBDSUUxCQkweDIsIDB4MywgMHg0LCAweDUsIDB4NiwgMHg3Ci0gICAgIFBDSUUyCQkweDQsIDB4NSwgMHg2LCAweDcKLSAgICAgUENJRTMJCTB4NiwgMHg3Ci0gICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgUENJRTEyIGFuZCBQQ0lFMiBsb2dpYyBtb3JlIHJlYWRhYmxlLgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDAyOGUxMTY4MTFkMjhhMDMxNjYwZjFhZDllMjBhYzEyOTNiM2M1YzcKLUF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEphbiA5IDE2OjAxOjUyIDIwMDkgKzA4MDAKLQotICAgIFBDSUUyIGFuZCBQQ0lFMyBhcmUgZGVjaWRlZCBieSBjb3JyZXNwb25pbmcgYml0IGluIGRldmRpc3IgaW5zdGVhZCBvZiBQQ0lFMSBiaXQKLQotICAgIFBDSUUyIGFuZCBQQ0lFMyBzaG91bGQgYmUgZGVjaWRlZCBieSBjb3JyZXNwb25pbmcgYml0IGluIGRldmRpc3IgaW5zdGVhZCBvZgotICAgIFBDSUUxIGJpdC4KLSAgICBPbiBNUEM4NTcyRFMgYm9hcmQsIFBDSUUgcmVmZXJzIHRvIFBDSUUxLgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDlhZmMyZWYwMzA3YWVjZjUyNDgyZGY2N2MzMWI3NWQ1ZjllNjZiNDcKLUF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEphbiA5IDE2OjAwOjU1IDIwMDkgKzA4MDAKLQotICAgIEZpeCBJTyBwb3J0IHNlbGVjdGlvbiBpc3N1ZSBvbiBNUEM4NTQ0RFMgYW5kIE1QQzg1NzJEUyBib2FyZHMKLQotICAgIFRoZSBJTyBwb3J0IHNlbGVjdGlvbiBpcyBub3QgY29ycmVjdCBvbiBNUEM4NTcyRFMgYW5kIE1QQzg1NDREUyBib2FyZC4KLSAgICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlLgotICAgICBGb3IgTVBDODU3MgotICAgICBQb3J0CQkJY2ZnX2lvX3BvcnRzCi0gICAgIFBDSUUxCQkweDIsIDB4MywgMHg3LCAweGIsIDB4YywgMHhmCi0gICAgIFBDSUUyCQkweDMsIDB4NwotICAgICBQQ0lFMwkJMHg3Ci0KLSAgICBGb3IgTVBDODU0NAotICAgIFBvcnQJCQljZmdfaW9fcG9ydHMKLSAgICBQQ0lFMQkJMHgyLCAweDMsIDB4NCwgMHg1LCAweDYsIDB4NwotICAgIFBDSUUyCQkweDQsIDB4NSwgMHg2LCAweDcKLSAgICBQQ0lFMwkJMHg2LCAweDcKLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzZTNmZmZlM2JhZjNiZWZkZTI4N2ZlYzFmY2JmZTU1MDUyZmI4OTQ2Ci1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBEZWMgMyAyMjozNjo0NCAyMDA4IC0wNjAwCi0KLSAgICBtcGM4NjEwaHBjZDogRml4IFBDSSBtYXBwaW5nIGNvbmNlcHRzCi0KLSAgICBSZW5hbWUgX0JBU0UgdG8gX0JVUywgYXMgaXQncyBhY3R1YWxseSBhIFBDSSBidXMgYWRkcmVzcywKLSAgICBzZXBhcmF0ZSB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgaW50byBfVklSVCBhbmQgX1BIWVMsCi0gICAgYW5kIHVzZSBlYWNoIGFwcG9wcmlhdGVseS4JVGhpcyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gcmVhZAotICAgIGFuZCB1bmRlcnN0YW5kLCBhbmQgZmFjaWxpdGF0ZXMgbWFwcGluZyBjaGFuZ2VzIGdvaW5nIGZvcndhcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3OWU0MzZjYWQzYjRhN2RiODg0MDhjM2YwNTE3NTAyOGYzMGQ3MDBkCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBEZWMgMyAyMjozNjoyNiAyMDA4IC0wNjAwCi0KLSAgICBzYmM4NjQxZDogRml4IFBDSSBtYXBwaW5nIGNvbmNlcHRzCi0KLSAgICBSZW5hbWUgX0JBU0UgdG8gX0JVUywgYXMgaXQncyBhY3R1YWxseSBhIFBDSSBidXMgYWRkcmVzcywKLSAgICBzZXBhcmF0ZSB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMgaW50byBfVklSVCBhbmQgX1BIWVMsCi0gICAgYW5kIHVzZSBlYWNoIGFwcG9wcmlhdGVseS4JVGhpcyBtYWtlcyB0aGUgY29kZSBlYXNpZXIgdG8gcmVhZAotICAgIGFuZCB1bmRlcnN0YW5kLCBhbmQgZmFjaWxpdGF0ZXMgbWFwcGluZyBjaGFuZ2VzIGdvaW5nIGZvcndhcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhOWYzYWNiY2QwN2RhNzJiNTQ0NmNlNTU3NTMxYTNlZDhiOGJlZmYwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSmFuIDEyIDE0OjUwOjM1IDIwMDkgKzAxMDAKLQotICAgIE1QQzg2eHg6IGZpeCBidWlsZCB3YXJuaW5ncwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDAzMmExYzkzNGVmNGRjMDAzMjgxZjU3MzAyYjZlNjkzMDYyYzE4NjgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEphbiA1IDE2OjA5OjQ0IDIwMDkgLTA1MDAKLQotICAgIGJmNTM3LXN0YW1wL25hbmQ6IGZpeCBib2FyZF9uYW5kX2luaXQgcHJvdG90eXBlCi0KLSAgICBUaGUgYm9hcmRfbmFuZF9pbml0KCkgZnVuY3Rpb24gc2hvdWxkIHJldHVybiBhbiBpbnQsIG5vdCB2b2lkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjg3Zjk1MmU0MTE5NTk0YWI5MTNiZTExYzkwZjdmMDE4YzJhN2E3OQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgRGVjIDExIDA3OjA0OjQ4IDIwMDggLTA1MDAKLQotICAgIEJsYWNrZmluOiBkcm9wIENPTkZJR19TUEkgaGFuZGxpbmcgaW4gYm9hcmQgaW5pdAotCi0gICAgVGhlIGVlcHJvbSBTUEkgaW5pdCBmdW5jdGlvbnMgYXJlIGR1cGxpY2F0ZWQgYXMgdGhlIGNvbW1vbiBjb2RlIGFscmVhZHkKLSAgICBleGVjdXRlcyB0aGVzZSBmb3IgdXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBlN2U2ODRiMTBkNzNhMzAzOTAyMjA4NTk0YzdjM2U3ZTBkNzUzMjgyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBPY3QgMjQgMTc6NTE6NTcgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGZpeCBvdXQtb2YtdHJlZSBidWlsZGluZyB3aXRoIGxkc2NyaXB0cwotCi0gICAgTWFueSBvZiB0aGUgQmxhY2tmaW4gYm9hcmQgbGlua2VyIHNjcmlwdHMgYXJlIHByZXByb2Nlc3NlZCwgc28gbWFrZSBzdXJlIHdlCi0gICAgb3V0cHV0IHRoZSBsaW5rZXIgc2NyaXB0IGludG8gdGhlIGJ1aWxkIHRyZWUgcmF0aGVyIHRoYW4gdGhlIHNvdXJjZSB0cmVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYjllZWNjMzQyZjc2N2I1MGUxNDc2ZmJjMWFhZDdkODhkZDRjZTVlYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgT2N0IDI0IDE3OjQ4OjU0IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBmaXggbGlua2VyIHNjcmlwdHMgdG8gd29yayB3aXRoIC0tZ2Mtc2VjdGlvbnMKLQotICAgIE1ha2Ugc3VyZSBhbGwgLnRleHQgc2VjdGlvbnMgZ2V0IHB1bGxlZCBpbiBhbmQgdGhlIGVudHJ5IHBvaW50IGlzIHByb3Blcmx5Ci0gICAgcmVmZXJlbmNlZCBzbyB0aGV5IGRvbid0IGdldCBkaXNjYXJkZWQgd2hlbiBsaW5raW5nIHdpdGggLS1nYy1zZWN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDUwOWZjNTUzYmM2MDg3YTZmNzA1YjNiZjUyZjM5NTBkN2QxZWFhNTgKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMDo0NTo0NCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2Zpbjogc2V0IHByb3BlciBMRFJGTEFHUyBmb3IgcGFyYWxsZWwgYm9vdGluZyBMRFJzCi0KLSAgICBJbiBvcmRlciB0byBib290IGFuIExEUiBvdXQgb2YgcGFyYWxsZWwgZmxhc2gsIHRoZSBsZHIgdXRpbGl0eSBuZWVkcyBhIGZldwotICAgIGZsYWdzIHRvIHRlbGwgaXQgdG8gZ2VuZXJhdGUgdGhlIHJpZ2h0IGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDNkZDkzOTVhMGQ3Y2U2OWEzMzVkMGU3NDNjMDRiOWNhZWRkNjgxZDMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBKYW4gNiAyMTo0MTo1OSAyMDA5ICswMTAwCi0KLSAgICBhdDkxcm05MjAwOiBtb3ZlIGRlZmluZSBmcm9tIGxvd2xldmVsX2luaXQgdG8gaGVhZGVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOGE0ODY4NmZhYzIwMzAyODc3NjVmMTk3MGVhMDQ2YmQ1NzM0YjczMwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEphbiAzIDE3OjIyOjI2IDIwMDkgKzAxMDAKLQotICAgIG01MDFzazogbW92ZSB0byB0aGUgY29tbW9uIG1lbW9yeSBzZXR1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGQ0ODFjODBkNzhmOTU0MTMzYzAzNWRhZTZjN2QyMmRlMzYyNTc5NWQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBKYW4gMyAxNzoyMjoyNSAyMDA5ICswMTAwCi0KLSAgICBhdDkxcm05MjAwOiByZW5hbWUgbG93bGV2ZWwgaW5pdCB2YWx1ZSB0byBDT05GSUdfU1lTXwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDRlMTcwYjE2NjI1MjkxYWExMGQwZDlhYmMzZjM0ZThhNTk0NWQxNTcKLUF1dGhvcjogTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+Ci1EYXRlOglUdWUgSmFuIDYgMjE6MTM6MTQgMjAwOSArMDEwMAotCi0gICAgYXQ5MTogYWRkIGF0OTFzYW05eGVlayBib2FyZCBzdXBwb3J0Ci0KLSAgICBBdDkxc2FtOXhlIGlzIGJhc2ljYWxseSBhbiBhdDkxc2FtOTI2MCB3aXRoIGVtYmVkZGVkIGZsYXNoLiBXZSBjYW4gbWFuYWdlCi0gICAgaXQgYXMgYW5vdGhlciBlbnRyeSBmb3IgYXQ5MXNhbTkyNjAgaW4gdGhlIE1ha2VmaWxlLgotCi0gICAgQ2hlY2sgZG9jdW1lbnRhdGlvbiBhdCA6Ci0gICAgaHR0cDovL3d3dy5hdG1lbC5jb20vZHluL3Byb2R1Y3RzL3Byb2R1Y3RfY2FyZC5hc3A/cGFydF9pZD00MjYzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOWZmZDUzZGI4NzBhN2RhMTM0ZjlhMWFlNzY4OTRhNmIzMTIzN2JlNQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIEphbiA2IDIxOjE1OjU3IDIwMDkgKzAxMDAKLQotICAgIGZpeCBibXBfbG9nby5oIG1ha2UgZGVwZW5kZW5jaWVzIHRvIGFsbG93IHBhcmFsbGVsIGJ1aWxkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZTEyZDlhOGZiNDhkMjQxNzZlZmZmY2NjMDcyYjQ0NWU2MGEzYWZlNAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEphbiAzIDE3OjIyOjI0IDIwMDkgKzAxMDAKLQotICAgIGF0OTE6IEZpeCBBdG1lbCdzIGF0OTFzYW05IGJvYXJkcyBvdXQgb2YgdHJlZSBidWlsZAotCi0gICAgaW50cm9kdWNlZCBpbiBjb21taXQgODlhN2E4N2YwODRjCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMDY2ODIzNmJhZmFhMWMxMWM1MjE2NTJhMmZhY2ViYzc0YmVlY2JmMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIERlYyAzMCAyMjo1NjoxMSAyMDA4ICswMTAwCi0KLSAgICBSRUFETUU6IHVwZGF0ZSBtYWlsaW5nIGxpc3QgbmFtZSBhbmQgaGl0cyB0byBwYXRjaCBzdWJtaXNzaW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQ5MDExZjliNzU1NjFhMGJkOTI1NDkzNGMyYmIyYmM3OTlkNGY2NDUKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBEZWMgMjMgMTY6MzI6MDEgMjAwOCAtMDYwMAotCi0gICAgODV4eDogRW5hYmxlIGluYm91bmQgUENJIGNvbmZpZyBjeWNsZXMgZm9yIFgtRVMgYm9hcmRzIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAxZjAzY2JmYWUyMjFiMjRiYTEzNDFhMGEzZjYyZmYwMWM1Yzg3NGRmCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgRGVjIDIzIDE2OjMyOjAwIDIwMDggLTA2MDAKLQotICAgIFhQZWRpdGU1MjAwIGJvYXJkIHN1cHBvcnQgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGZlYTkxZWRlZThhZTAyOTVlM2MzMGIxZmY1NDRkZjUxZjRkNjY4ZTEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBEZWMgMiAyMTo1ODowNCAyMDA4ICswMTAwCi0KLSAgICB1c2Jfa2JkOiBmaXggdXNiX2tiZF9kZXJlZ2lzdGVyIHdoZW4gREVWSUNFX0RFUkVHSVNURVIgbm90IGVuYWJsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBhZGE1OTFkMmEwZWNmZjVmOWJjNWVkMWViZjMxMGY0MzljM2QwYTI4Ci1BdXRob3I6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIERlYyAzIDE1OjE2OjM3IDIwMDggLTA4MDAKLQotICAgIG1wYzhbNTZdeHg6IFB1dCBsb2NhbGJ1cyBjbG9jayBpbiBzeXNpbmZvIGFuZCBnZAotCi0gICAgQ3VycmVudGx5IE1QQzg1eHggYW5kIE1QQzg2eHggYm9hcmRzIGp1c3QgY2FsY3VsYXRlIHRoZSBsb2NhbGJ1cyBmcmVxdWVuY3kKLSAgICBhbmQgcHJpbnQgaXQgb3V0LCBidXQgZG9uJ3Qgc2F2ZSBpdC4KLQotICAgIFRoaXMgY2hhbmdlcyB3aGVyZSBpdHMgY2FsY3VsYXRlZCBhbmQgc3RvcmVkIHRvIGJlIG1vcmUgY29uc2lzdGVudCB3aXRoIHRoZQotICAgIENQVSwgQ0NCLCBUQiwgYW5kIEREUiBmcmVxdWVuY2llcyBhbmQgdGhlIE1QQzgzeHggbG9jYWxidXMgY2xvY2suCi0KLSAgICBUaGUgbG9jYWxidXMgZnJlcXVlbmN5IGlzIGFkZGVkIHRvIHN5c2luZm8gYW5kIGNhbGN1bGF0ZWQgd2hlbiBzeXNpbmZvIGlzCi0gICAgc2V0IHVwLCBpbiBjcHUvbXBjOFs1Nl14eC9zcGVlZC5jLCB0aGUgc2FtZSBhcyB0aGUgb3RoZXIgZnJlcXVlbmNpZXMgYXJlLgotCi0gICAgZ2V0X2Nsb2NrcygpIGNvcGllcyB0aGUgZnJlcXVlbmN5IGludG8gdGhlIGdsb2JhbCBkYXRhLCBhcyB0aGUgb3RoZXIKLSAgICBmcmVxdWVuY2llcyBhcmUsIGludG8gYSBuZXcgZmllbGQgdGhhdCBpcyBvbmx5IGVuYWJsZWQgZm9yIE1QQzg1eHggYW5kCi0gICAgTVBDODZ4eC4KLQotICAgIGNoZWNrY3B1KCkgaW4gY3B1L21wYzhbNTZdeHgvY3B1LmMgd2lsbCBwcmludCBvdXQgdGhlIGxvY2FsIGJ1cyBmcmVxdWVuY3kKLSAgICBmcm9tIHN5c2luZm8sIGxpa2UgdGhlIG90aGVyIGZyZXF1ZW5jaWVzLCBpbnN0ZWFkIG9mIGNhbGN1bGF0aW5nIGl0IG9uIHRoZQotICAgIHNwb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk4NjNkNmFjYTExNDA1ZTFlMGQ4YWJhMjA0NWQ3OGFlZWM0ZDRlZTcKLUF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRGVjIDMgMTU6MTY6MzYgMjAwOCAtMDgwMAotCi0gICAgbXBjODZ4eDogRG91YmxlIGxvY2FsIGJ1cyBjbG9jayBkaXZpZGVyCi0KLSAgICBUaGUgbG9jYWwgYnVzIGNsb2NrIGRpdmlkZXIgc2hvdWxkIGJlIGRvdWJsZWQgZm9yIGJvdGggODYxMCBhbmQgODY0MS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRyZW50IFBpZXBobyA8dHBpZXBob0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDQ2YzM4MWUzZTE2ZjE5ODU3YjcyZWEwZDA2MjQxMjY3YjhiOWQ1OAotQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBEZWMgMyAxNToxNjozNSAyMDA4IC0wODAwCi0KLSAgICBtcGM4NTY4OiBEb3VibGUgbG9jYWwgYnVzIGNsb2NrIGRpdmlkZXIKLQotICAgIFRoZSBjbG9jayBkaXZpZGVyIGZvciB0aGUgTVBDODU2OCBsb2NhbCBidXMgc2hvdWxkIGJlIGRvdWJsZWQsIGxpa2UgdGhlCi0gICAgb3RoZXIgbmV3ZXIgTVBDODV4eCBjaGlwcy4KLQotICAgIFNpbmNlIHRoZXJlIGFyZSBub3cgbW9yZSBjaGlwcyB3aXRoIGEgMnggZGl2aWRlciB0aGFuIGEgMXgsIGFuZCBhbnkgbmV3Ci0gICAgODV4eCBjaGlwcyB3aWxsIHByb2JhYmx5IGJlIDJ4LCBpbnZlcnQgdGhlIHNlbnNlIG9mIHRoZSAjaWYgc28gdGhhdCBpdAotICAgIGxpc3RzIHRoZSAxeCBjaGlwcyBpbnN0ZWFkIG9mIHRoZSAyeCBvbmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNTFmMDdlYjU4ZmFkMTJkZTkyOTRiYTRlZTZjMDlhMGRkZWFlZTAzCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgRGVjIDE2IDEyOjA5OjI3IDIwMDggKzA4MDAKLQotICAgIDg1eHg6IEZpeCB0aGUgYm9vdCB3aW5kb3cgaXNzdWUKLQotICAgIElmIG9uZSBjdXN0b20gYm9hcmQgaXMgdXNpbmcgdGhlIDhNQiBmbGFzaCwgaXQgaXMgc2V0Ci0gICAgYXMgRkxBU0hfQkFTRSA9IDB4ZWYwMDAwMDAsIFRFWFRfQkFTRSA9IDB4ZWY3ODAwMDAuCi0gICAgVGhlIGN1cnJlbnQgc3RhcnQuUyBjb2RlIHdpbGwgYmUgYnJva2VuIGF0IHN3aXRjaF9hcy4KLQotICAgIEl0IGlzIGJlY2F1c2UgdGhlIFRMQjFbMTVdIGlzIHNldCBhcyAxNk1CIHBhZ2Ugc2l6ZSwKLSAgICBFUE4gPSBURVhUX0JBU0UgJiAweGZmMDAwMDAwLCBSUE4gPSAweGZmMDAwMDAwLgotCi0gICAgRm9yIHRoZSA4TUIgZmxhc2ggY2FzZSwgdGhlIEVQTiA9IDB4ZWZ4eHh4eHgsCi0gICAgUlBOID0gMHhmZnh4eHh4eC4gQXNzdW1lIHRoZSB2aXJ0IGFkZHJlc3Mgb2Ygc3dpdGNoX2FzCi0gICAgaXMgMHhlZjdmZjE4YywgdGhlIHJlYWwgYWRkcmVzcyBvZiB0aGUgaW5zdHJ1Y3Rpb24gYXQKLSAgICBzd2l0Y2hfYXMgc2hvdWxkIGJlIDB4ZmY3ZmYxOGMuIHRoZSAweGZmN2ZmMThjIGlzIG91dAotICAgIG9mIHRoZSByYW5nZSBvZiB0aGUgZGVmYXVsdCA4TUIgYm9vdCBMQVcgd2luZG93Ci0gICAgMHhmZjgwMDAwMCAtIDB4ZmZmZmZmZmYuCi0KLSAgICBTbyB3aGVuIHdlIHN3aXRjaCB0byBBUzEgYWRkcmVzcyBzcGFjZSBhdCBzd2l0Y2hfYXMsCi0gICAgdGhlIGNvcmUgY2FuJ3QgZmV0Y2ggdGhlIGluc3RydWN0aW9uIGF0IHN3aXRjaF9hcyBhbnkKLSAgICBtb3JlLiBJdCB3aWxsIGNhdXNlIGJyb2tlbiBpc3N1ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1OGRhODg5MGQ1ZmJkMDc0NzQ2MDM3NzIyYTQyM2RlOWFjNDA4NjE2Ci1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJVGh1IERlYyAxMSAxNTo0Nzo1MCAyMDA4IC0wNTAwCi0KLSAgICBzYmM4NTQ4OiB1c2UgcHJvcGVyIFBIWSBhZGRyZXNzCi0KLSAgICBUaGUgdmFsdWVzIGdpdmVuIGZvciB0aGUgUEhZIGFkZHJlc3Mgd2VyZSB3cm9uZywgc28gdGhlIGNvZGUKLSAgICByZWFkIG5vIHZhbGlkIFBIWSBJRCwgYW5kIGZlbGwgdGhyb3VnaCB0byB0aGUgZ2VuZXJpYyBQSFkKLSAgICBzdXBwb3J0LCB3aGljaCB3b3VsZCB3b3JrIG9uIDEwMDBNIGJ1dCB3b3VsZCBub3QgYXV0byBuZWdvdGlhdGUKLSAgICBkb3duIHRvIDEwME0gb3IgMTBNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCBhZDIyZjkyNzNjNmYyNGZiZmE5MTdlODY3NjgwZTk2ODhlMGM1OWM1Ci1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJVGh1IERlYyAxMSAxNTo0Nzo1MSAyMDA4IC0wNTAwCi0KLSAgICBzYmM4NTQ4OiBlbmFibGUgY29tbWFuZCBsaW5lIGVkaXRpbmcgYnkgZGVmYXVsdC4KLQotICAgIExldHMgbWFrZSB0aGluZ3MgYSBiaXQgbW9yZSB1c2VyIGZyaWVuZGx5LglJdCBpc24ndCAxOTg1IGFueW1vcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IGJkOTMxMDVmYTE3MTE4NGE3MWNhOGIyMmJlMDNkYzI3MDVjZmJkM2YKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglUaHUgRGVjIDExIDE1OjQ3OjQ5IDIwMDggLTA1MDAKLQotICAgIHNiYzg1NDg6IGRvbid0IGVuYWJsZSB0aGUgM3JkIGFuZCA0dGggZVRTRUMKLQotICAgIFRoZXNlIGludGVyZmFjZXMgZG9uJ3QgaGF2ZSB1c2FibGUgY29ubmVjdG9ycyBvbiB0aGUgYm9hcmQsIHNvIGRvbid0Ci0gICAgYm90aGVyIGVudW1lcmF0aW5nIG9yIGNvbmZpZ3VyaW5nIHRoZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDE4MWEzNjUwMTEzODgzNzI4OTI3OTI4YjNhYzgxYWQ2ZGFkZTRiMmMKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBEZWMgMyAxMDowODoxOSAyMDA4IC0wNTAwCi0KLSAgICBTZXQgSVZQUiB0byBrZW5yZWwgZW50cnkgcG9pbnQgaW4gc2Vjb25kIGNvcmUgYm9vdCBwYWdlCi0KLSAgICBBc3N1bWluZyB0aGUgT1NlcyBleGNlcHRpb24gdmVjdG9ycyBzdGFydCBmcm9tIHRoZSBiYXNlIG9mIGtlcm5lbCBhZGRyZXNzLCBhbmQKLSAgICB0aGUga2VybmVsIHBoeXNpY2FsIHN0YXJ0aW5nIGFkZHJlc3MgY2FuIGJlIHJlbG9jYXRlZCB0byBhbiBub24temVybyBhZGRyZXNzLgotICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgc2Vjb25kIGNvcmUgdG8gaGF2ZSBhIHZhbGlkIElWUFIgZm9yIGRlYnVnZ2VyIGJlZm9yZQotICAgIGtlcm5lbCBzZXR0aW5nIElWUFIgaW4gQ0FNUCBtb2RlLiBPdGhlcndpc2UsIElWUFIgaXMgMHgwIGFuZCBpdCBpcyBub3QgYSB2YWxpZAotICAgIHZhbHVlIGZvciBzZWNvbmQgY29yZSB3aGljaCBydW5zIGtlcm5lbCBhdCBkaWZmZXJlbnQgcGh5c2ljYWwgYWRkcmVzcyBvdGhlcgotICAgIHRoYW4gMHgwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE1ZDIxMmEyNjNjNThjYzc0NjQ4MWJmMWZjODc4NTEwNTMzY2U3ZDYKLUF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRGVjIDMgMTU6MTY6MzQgMjAwOCAtMDgwMAotCi0gICAgbXBjOHh4eDogTENSUltDTEtESVZdIGlzIHNvbWV0aW1lcyBmaXZlIGJpdHMKLQotICAgIE9uIG5ld2VyIENQVXMsIDg1MzYsIDg1NzIsIGFuZCA4NjEwLCB0aGUgQ0xLRElWIGZpZWxkIG9mIExDUlIgaXMgZml2ZSBiaXRzCi0gICAgaW5zdGVhZCBvZiBmb3VyLgotCi0gICAgSW4gb3JkZXIgdG8gYXZvaWQgYW4gaWZkZWYsIExDUlJfQ0xLRElWIGlzIHNldCB0byAweDFmIG9uIGFsbCBzeXN0ZW1zLiAgSXQKLSAgICBzaG91bGQgYmUgc2FmZSBhcyB0aGUgZmlmdGggYml0IHdhcyBkZWZpbmVkIGFzIHJlc2VydmVkIGFuZCBzZXQgdG8gMC4KLQotICAgIENvZGUgdGhhdCB3YXMgdXNpbmcgYSBoYXJkIGNvZGVkIDB4MGYgaXMgY2hhbmdlZCB0byB1c2UgTENSUl9DTEtESVYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDU4ZWM0ODY2ZWQ5MTZjN2U0MjJmNTEwN2JiMjdiMDgyMjA4NDcyOGUKLUF1dGhvcjogVHJlbnQgUGllcGhvIDx0cGllcGhvQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRGVjIDMgMTU6MTY6MzggMjAwOCAtMDgwMAotCi0gICAgbXBjOFs1Nl14eDogUHV0IGxvY2FsYnVzIGNsb2NrIGluIGRldmljZSB0cmVlCi0KLSAgICBFeHBvcnQgdGhlIGxvY2FsYnVzIGZyZXF1ZW5jeSBpbiB0aGUgZGV2aWNlIHRyZWUsIHRoZSBzYW1lIHdheSB0aGUgQ1BVLCBUQiwKLSAgICBDQ0IsIGFuZCB2YXJpb3VzIG90aGVyIGZyZXF1ZW5jaWVzIGFyZSBleHBvcnRlZCBpbiB0aGVpciByZXNwZWN0aXZlIGRldmljZQotICAgIHRyZWUgbm9kZXMuCi0KLSAgICBTb21lIGxvY2FsYnVzIGRldmljZXMgbmVlZCB0aGlzIGluZm9ybWF0aW9uIHRvIGJlIHByb2dyYW1lZCBjb3JyZWN0bHksIHNvCi0gICAgaXQgbWFrZXMgc2Vuc2UgdG8gZXhwb3J0IGl0IGFsb25nIHdpdGggdGhlIG90aGVyIGZyZXF1ZW5jaWVzLgotCi0gICAgVW5mb3J0dW5hdGVseSwgd2hlbiBzb21lb25lIHdyb3RlIHRoZSBsb2NhbGJ1cyBkdHMgYmluZGluZ3MsIHRoZXkgZGlkbid0Ci0gICAgYm90aGVyIHRvIGRlZmluZSB3aGF0IHRoZSAiY29tcGF0aWJsZSIgcHJvcGVydHkgc2hvdWxkIGJlLglTbyBpdCBzZWVtcyBubwotICAgIG9uZSB3YXMgcXVpdGUgc3VyZSB3aGF0IHRvIHB1dCBpbiB0aGVpciBkdHMgZmlsZXMuCi0KLSAgICBCYXNlZCBvbiBjdXJyZW50IGV4aXN0aW5nIGR0cyBmaWxlcyBpbiB0aGUga2VybmVsIHNvdXJjZSwgSSd2ZSB1c2VkCi0gICAgImZzbCxwcTMtbG9jYWxidXMiIGFuZCAiZnNsLGVsYmMiIGZvciBNUEM4NXh4LCB3aGljaCBhcmUgdXNlZCBieSBhbG1vc3QgYWxsCi0gICAgb2YgdGhlIDg1eHggZGV2aWNlcywgYW5kIGFyZSBsb29rZWQgZm9yIGJ5IHRoZSBMaW51eCBjb2RlLglUaGUgZUxCQyBpcwotICAgIGFwcGFyZW50bHkgbm90IGVudGlyZWx5IGJhY2t3YXJkIGNvbXBhdGlibGUgd2l0aCB0aGUgcHEzIExCQyBhbmQgc28gZUxCQwotICAgIGVxdWlwcGVkIHBsYXRmb3JtcyBsaWtlIDg1NzIgd29uJ3QgdXNlIHBxMy1sb2NhbGJ1cy4KLQotICAgIEZvciBNUEM4Nnh4LCBJJ3ZlIHVzZWQgImZzbCxlbGJjIiB3aGljaCBpcyB1c2VkIGJ5IHNvbWUgb2YgdGhlIDg2eHggc3lzdGVtcwotICAgIGFuZCBpcyBhbHNvIGxvb2tlZCBmb3IgYnkgdGhlIExpbnV4IGNvZGUuICBPbiBNUEM4NjQxLCBJJ3ZlIGFsc28gdXNlZAotICAgICJmc2wsbXBjODY0MS1sb2NhbGJ1cyIgYXMgaXQgaXMgYWxzbyBjb21tb25seSB1c2VkIGluIGR0cyBmaWxlcywgc29tZSBvZgotICAgIHdoaWNoIGRvbid0IHVzZSAiZnNsLGVsYmMiIG9yIGFueSBvdGhlciBhY2NlcHRhYmxlIG5hbWUgdG8gbWF0Y2ggb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDlkOTRhZmY2OTllZWQzOGIyODY4MTRmY2JiMzM1ZjNlYjg1MTZhMGUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBEZWMgMTYgMTQ6NTk6MjIgMjAwOCAtMDYwMAotCi0gICAgTkFORCBGU0wgZWxiYzogVXNlIHZpcnRfdG9fcGh5cyB0byBkZXRlcm1pbmUgd2hpY2ggYmFuayBpcyBpbiB1c2UKLQotICAgIFRoZSBjdXJyZW50IGNvZGUgdGhhdCBkZXRlcm1pbmVzIHdoaWNoIGJhbmsvY2hpcHNlbGVjdCBpcyB1c2VkIGZvciBhCi0gICAgZ2l2ZW4gTkFORCBpbnN0YW5jZSBvbmx5IHdvcmtlZCBmb3IgMzItYml0IGFkZHJlc3NlcyBhbmQgYXNzdW1lZAotICAgIGEgMToxIG1hcHBpbmcuICBUaGlzIGJyZWFrcyBpbiAzNi1iaXQgcGh5c2ljYWwgY29uZmlncy4KLQotICAgIFRoZSBwcm9wZXIgd2F5IHRvIGhhbmRsZSB0aGlzIGlzIHRvIHVzZSB0aGUgdmlydF90b19waHlzKCkgYW5kCi0gICAgQlJfUEhZU19BRERSKCkgcm91dGludWVzIHRvIG1hdGNoIHRoZSAzNC1iaXQgbGJjIGJ1cyBhZGRyZXNzCi0gICAgd2l0aCB0aGUgdGhlIHZpcnR1YWwgYWRkcmVzcyB0aGUgTkFORCBjb2RlIHVzZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc3YzgxMTViMWYxODcxODExNjMzZWFlNzdhNWE3MDBmYWMxZjBlNTAKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBEZWMgMTYgMTQ6NTk6MjEgMjAwOCAtMDYwMAotCi0gICAgcHBjOiBVc2UgYWRkcm1hcCBpbiB2aXJ0X3RvX3BoeXMgYW5kIG1hcF9waHlzbWVtLgotCi0gICAgSWYgd2UgaGF2ZSBhZGRyIG1hcCBzdXBwb3J0IGVuYWJsZWQgdXNlIHRoZSBtYXBwaW5nIGZ1bmN0aW9ucyB0bwotICAgIGltcGxlbWVudCB2aXJ0X3RvX3BoeXMoKSBhbmQgbWFwX3BoeXNtZW0oKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlY2Y1Yjk4YzdhNmEyZTIyNTZkZmRkZDQ4ZmFiMjY2NzhkY2Q2YjkwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgRGVjIDE2IDE0OjU5OjIwIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IEFkZCBzdXBwb3J0IHRvIHBvcHVsYXRlIGFkZHIgbWFwIGJhc2VkIG9uIFRMQiBzZXR0aW5ncwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDc4YmJjNWNlMTUxYzVhNDg0YmI1MWJmMTg2NmI0YTk5M2ZmYzE2ZWMKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBEZWMgMSAxMzo0NzoxMyAyMDA4IC0wNjAwCi0KLSAgICBYUGVkaXRlNTIwMCBib2FyZCBzdXBwb3J0Ci0KLSAgICBJbml0aWFsIHN1cHBvcnQgZm9yIEV4dHJlbWUgRW5naW5lZXJpbmcgU29sdXRpb25zIFhQZWRpdGU1MjAwIC0KLSAgICBhIE1QQzg1NDgtYmFzZWQgUE1DIHNpbmdsZSBib2FyZCBjb21wdXRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA0ODdkY2I0ZmI4OWJlMDk5MmJjMDZlYzEzNDEwOTAwMTdiZDljZjJmCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgT2N0IDI5IDEyOjM5OjI3IDIwMDggLTA1MDAKLQotICAgIDg1eHg6IEVuYWJsZSBpbmJvdW5kIFBDSSBjb25maWcgY3ljbGVzIGZvciBYLUVTIGJvYXJkcwotCi0gICAgVXBkYXRlIFgtRVMgRnJlZXNjYWxlIGJvYXJkcyB0byBhbGxvdyBpbmJvdW5kIFBDSSBjb25maWd1cmF0aW9uCi0gICAgY3ljbGVzIHdoZW4gY29uZmlndXJlZCBhcyBhZ2VudC9lbmRwb2ludC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBjY2YwZmRkMDJiOTczMjNmOGNhYWUxOGQwNmNjOWRhZWFjMmYxOTJmCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgRGVjIDE3IDE2OjM2OjIzIDIwMDggLTA2MDAKLQotICAgIFhQZWRpdGU1MzcwIGJvYXJkIHN1cHBvcnQKLQotICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgRXh0cmVtZSBFbmdpbmVlcmluZyBTb2x1dGlvbnMgWFBlZGl0ZTUzNzAgLQotICAgIGEgTVBDODU3Mi1iYXNlZCAzVSBWUFggc2luZ2xlIGJvYXJkIGNvbXB1dGVyIHdpdGggYSBQTUMvWE1DCi0gICAgc2l0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBlOTI3MzlkMzRlMmQ2YjZhY2E5M2IyNTk4MjQ4MjEwNzEwODk3Y2U4Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgRGVjIDE3IDE2OjM2OjIxIDIwMDggLTA2MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBQQ0E5NTN4IEkyQyBncGlvIGRldmljZXMKLQotICAgIEluaXRpYWwgc3VwcG9ydCBmb3IgTlhQJ3MgNCBhbmQgOCBiaXQgSTJDIGdwaW8gZXhwYW5kZXJzCi0gICAgKGVnIHBjYTk1MzcsIHBjYTk1NTcsIGV0YykuIFRoZSBDT05GSUdfUENBOTUzWCBkZWZpbmUKLSAgICBlbmFibGVzIHN1cHBvcnQgZm9yIHRoZSBkZXZpY2VzIHdoaWxlIHRoZSBDT05GSUdfQ01EX1BDQTk1M1gKLSAgICBkZWZpbmUgZW5hYmxlcyB0aGUgcGNhOTUzeCBjb21tYW5kLiBUaGUgQ09ORklHX0NNRF9QQ0E5NTNYX0lORk8KLSAgICBkZWZpbmUgZW5hYmxlcyBhbiAnaW5mbycgc3ViLWNvbW1hbmQgd2hpY2ggcHJvdmlkZXMgc3VtbWFyeQotICAgIGluZm9ybWF0aW9uIGZvciB0aGUgZ2l2ZW4gcGNhOTUzeCBkZXZpY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgN2E4OTc5NTkxMTcxNjc2NDE3YWIzNjg1MmQ4ODExYThjNDZhY2NkOAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJV2VkIE9jdCAyOSAxMjozOToyNiAyMDA4IC0wNTAwCi0KLSAgICBwY2kvZnNsX3BjaV9pbml0OiBFbmFibGUgaW5ib3VuZCBQQ0kgY29uZmlnIGN5Y2xlcwotCi0gICAgQWRkIGZzbF9wY2lfY29uZmlnX3VubG9jaygpIGZ1bmN0aW9uIHRvIGVuYWJsZSBhCi0gICAgUENJL1BDSWUgaW50ZXJmYWNlIGNvbmZpZ3VyZWQgaW4gYWdlbnQvZW5kcG9pbnQgbW9kZSB0bwotICAgIHJlc3BvbmQgdG8gaW5ib3VuZCBQQ0kgY29uZmlndXJhdGlvbiBjeWNsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgOTJjNzhhM2JiY2IyY2U1MDhiNGJmMWM0YTFlMDk0MDQwNmEwMjRiYgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglXZWQgRGVjIDE3IDE2OjQzOjE4IDIwMDggKzAxMDAKLQotICAgIGF2cjMyOiBSZW1vdmUgc2Vjb25kIGRlZmluaXRpb24gb2YgdmlydF90b19waHlzKCkKLQotICAgIFRoZSBzZWNvbmQgZGVmaW5pdGlvbiBpbnRyb2R1Y2VkIGJ5IDY1ZTQzYTEwNjMgY29uZmxpY3RzIHdpdGggdGhlCi0gICAgZXhpc3Rpbmcgb25lLgotCi0gICAgQWxzbywgY29udmVydCB0aGUgZXhpc3RpbmcgZGVmaW5pdGlvbiB0byB1c2UgcGh5c19hZGRyX3QuIFRoZSB2b2xhdGlsZQotICAgIHF1YWxpZmllciBpcyBzdGlsbCBuZWVkZWQgZHVlIHRvIGJyYWluIGRhbWFnZSBlbHNld2hlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBiNjE2ZjJiNTQ1ZjczNzU3NjY5YjM3Mzg2ZjBiMzdiYjYxZmM2Nzk3Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gU2VwIDggMjI6Mjc6MTggMjAwOCArMDIwMAotCi0gICAgTUlQUzogcWVtdV9taXBzOiB1cGRhdGUgZG9jIHRvIGdlbmVyYXRlIGFuZCB0byB1c2UgcWVtdSBmbGFzaCwgaWRlIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDE2Y2RmODE2Nzc5ZjViNjAyYTliM2I0ZDJlYTRkZWEwNTA5NWMzNWIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBEZWMgMTYgMjI6MTA6MzEgMjAwOCArMDEwMAotCi0gICAgTUlQUzogcWVtdV9taXBzOiB1cGRhdGUgZG9jIHRvIHVzZSBhbGwgZGlzayBhbmQgYm9vdCBsaW51eCBrZXJuZWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDEzMDk1YjJmMDdkYWNiMWY4NjM3NzIyNjZjMTc4OWQ0N2E1MjNhOGEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBEZWMgMTYgMjI6MTA6MzAgMjAwOCArMDEwMAotCi0gICAgTUlQUzogcWVtdV9taXBzOiBtb3ZlIGVudiBzdG9yYWdlIGp1c3QgYWZ0ZXIgdS1ib290Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBhY2VkNzhkODUyZDBiMDA5ZThhYWExNDQ1YWY4Y2I0MDg2MWVlNTQ5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDE2IDIzOjQ4OjI3IDIwMDggKzAxMDAKLQotICAgIFByZXBhcmUgMjAwOS4wMS1yYzEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA5ZTJhNzliNGM1ODVhZDMxMTM4ZmI5MGI2OGZkMDIzNGQ2NGE4ZGE4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDE2IDIzOjEzOjQ2IDIwMDggKzAxMDAKLQotICAgIGluY2x1ZGUvY29uZmlncy9hdDkxY2FwOWFkay5oOiBmaXggdHlwby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0NWNhMDRmMjM3NzM2MTU5MzE1MWQyZDRkYTUxZjhiYTQ4MzJkMjMzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDE2IDIyOjMyOjI1IDIwMDggKzAxMDAKLQotICAgIGJvYXJkL3RyYWIvbWVtb3J5LmM6IEZpeCBjb21waWxlIHByb2JsZW1zLgotCi0gICAgQXBwbHkgY2hhbmdlcyBmcm9tIGNvbW1pdCA0NGI0ZGJlZCB0byBib2FyZC90cmFiL21lbW9yeS5jLCB0b28uCi0KLSAgICBBY3R1YWxseSB3ZSdkIG5lZWQgYSBtYWpvciBjbGVhbnVwIGhlcmUgLSBhcyBpdCB0dXJucyBvdXQsCi0gICAgYm9hcmQvdHJhYi9tZW1vcnkuYyBpcyBtb3JlIG9yIGxlc3MgYSB2ZXJiYXRpbSBjb3B5IG9mCi0gICAgcG9zdC9kcml2ZXJzL21lbW9yeS5jIC4uLiBidXQgdGhlbiwgdHJhYiBpcyBFT0wgYW55d2F5LHIKLSAgICBzbyB0aGlzIGlzIG5vdCB3b3J0aCB0aGUgZWZmb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGZmNDllYTg5NzdiNTY5MTZlZGQ1YjE3NjZkOTkzOTAxMGUzMGIxODEKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgRGVjIDE2IDE0OjI0OjE2IDIwMDggLTA2MDAKLQotICAgIE5BTkQ6IE1hcmsgdGhlIEJCVCBhcyBzY2FubmVkIHByaW9yIHRvIGNhbGxpbmcgc2Nhbl9iYnQuCi0KLSAgICBPdGhlcndpc2UsIHJlY3Vyc2lvbiBjYW4gb2NjdXIgaWYgc2Nhbl9iYnQgZG9lcyBub3QgZmluZCBhIGJhZCBibG9jawotICAgIHRhYmxlLCBhbmQgdHJpZXMgdG8gd3JpdGUgb25lLCBhbmQgdGhlIGF0dGVtcHQgdG8gZXJhc2UgdGhlIEJCVCBhcmVhCi0gICAgY2F1c2VzIGEgYmFkIGJsb2NrIGNoZWNrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1ODRlZWRhYjY2ZDA4MjhmMmQ1NzFhMjRiMTA1MjZjNGU2NWY1NDdiCi1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IERlYyAxMSAwNTo1MTo1NyAyMDA4ICswMzAwCi0KLSAgICBqZmZzMjogaW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPiBpbnN0ZWFkIG9mIGRlZmluaW5nIG93biBtaW5fdAotCi0gICAgSW5jbHVkZSA8bGludXgvbXRkL2NvbXBhdC5oPiBoZWFkZXIgZm9yIG1pbl90IGRlZmluaXRpb24gaW5zdGVhZCBvZgotICAgIHByb3ZpZGluZyBvdXIgb3duIG9uZS4gUmVtb3ZlcyB3YXJuaW5ncyBpbiBjYXNlIG9mIE9uZU5BTkQgc3VwcG9ydAotICAgIGVuYWJsZWQuCi0KLSAgICBBbHRob3VnaCBJIHRoaW5rcyBpdCdzIGEgYml0IHNpbGx5IHRvIGluY2x1ZGUgPGxpbnV4L210ZC9jb21wYXQuaD4KLSAgICBqdXN0IGZvciBtaW5fdC4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGIxZmZlY2VjMzdiNTdhNTljMTM5MDQyMjY3ZmFhYzQ1OGU1MzI0ZTkKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5YkBrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIERlYyAzIDIzOjA0OjM3IDIwMDggLTA2MDAKLQotICAgIHBvd2VycGM6IGZpeCBpby5oIGJ1aWxkIHdhcm5pbmcgd2l0aCBDT05GSUdfUEhZU182NEJJVAotCi0gICAgQ2FzdGluZyBhIHBvaW50ZXIgdG8gYSBwaHlzX2FkZHJfdCB3aGVuIGl0J3MgYW4gdW5zaWduZWQgbG9uZyBsb25nCi0gICAgb24gYSAzMi1iaXQgc3lzdGVtIHdpdGhvdXQgZmlyc3QgY2FzdGluZyB0byBhIG5vbi1wb2ludGVyIHR5cGUKLSAgICBnZW5lcmF0ZXMgYSBjb21waWxlciB3YXJuaW5nLiBGaXggdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreWJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDZjZGFkY2IzZjFiNmVhYzRhMWM0MjU2YWNhYTE0Mzg0MTNmOTUzNTEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBEZWMgMTYgMTY6MjI6NTAgMjAwOCArMDEwMAotCi0gICAgdHJhYjogbWFrZSB0cmFiX2ZrdCBzdGFuZGFsb25lIGNvZGUgaW5kZXBlbmRlbnQgb2YgbGliZ2NjCi0KLSAgICBVc2Ugb3VyIG93biBsb2NhbCBmdW5jdGlvbnMgaW4gbGliX2FybS8gaW5zdGVhZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhYTFiY2NhM2QyZTIyYWY0ZGVhOWYwMjEzMmY5YjU2YTMwMzc4ZGVkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDE2IDE0OjQ0OjA2IDIwMDggKzAxMDAKLQotICAgIHBvc3QvTWFrZWZpbGU6IGZpeCBkZXBlbmRlbmN5IHByb2JsZW0gd2l0aCBwYXJhbGxlbCBidWlsZHMKLQotICAgIFBhcmFsbGVsIGJ1aWxkcyAodXNpbmcgIm1ha2UgLWpOIikgd291bGQgb2NjYXNpb25hbGx5IGZhaWwgd2l0aCBlcnJvcgotICAgIG1lc3NhZ2VzIGxpa2UKLQlwcGNfNHh4RlAtb2JqZHVtcDogc3RyaW5nLm86IEZpbGUgZm9ybWF0IG5vdCByZWNvZ25pemVkCi0gICAgb3IKLQlwb3N0L2xpYnBvc3QuYShjcHUubyk6IEluIGZ1bmN0aW9uIGBjcHVfcG9zdF90ZXN0JzoKLQkvaG9tZS93ZC9naXQvdS1ib290L3dvcmsvcG9zdC9saWJfcHBjL2NwdS5jOjEzMDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgY3B1X3Bvc3RfdGVzdF9zdHJpbmcnCi0gICAgb3Igc2ltaWxhci4gV2Ugbm93IG1ha2Ugc3VyZSB0byBydW4gdGhlICdwb3N0ZGVwcyIgc3RlcCBiZWZvcmUKLSAgICBhdHRlbXB0aW5nIHRvIGJ1aWxkIHRoZSBzcGVjaWZpYyBQT1NUIGxpYnJhcmllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0YTBmNzUzOGM1YzA4MDVmZDlhNzkxOTY3YmJhYmFjYzQxZGVhZGQ5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDE2IDE0OjQxOjAyIDIwMDggKzAxMDAKLQotICAgIE1ha2VmaWxlOiBmaXggZGVwZW5kZW5jeSBwcm9ibGVtIHdpdGggcGFyYWxsZWwgYnVpbGRzCi0KLSAgICBQYXJhbGxlbCBidWlsZHMgKHVzaW5nICJtYWtlIC1qTiIpIHdvdWxkIG9jY2FzaW9uYWxseSBmYWlsIHdpdGggZXJyb3IKLSAgICBtZXNzYWdlcyBsaWtlCi0JaW5jbHVkZS9hdXRvY29uZi5tazoyMTI6ICoqKiBtaXNzaW5nIHNlcGFyYXRvci4gIFN0b3AuCi0gICAgTGluZSBudW1iZXJzIGFuZCBhZmZlY3RlZCBib2FyZHMgd2VyZSBjaGFuZ2luZy4gT2J2aW91c2x5IHNvbWUKLSAgICBNYWtlZmlsZXMgaW5jbHVkZWQgYXV0b2NvbmYubWsgd2hpbGUgaXQgd2FzIHN0aWxsIGJlaW5nIHdyaXR0ZW4gdG8uCi0gICAgQXMgYSBmaXgsIHdlIG5vdyB3cml0ZSB0byBhIHRlbXBvcmFyeSBmaWxlIGZpcnN0IGFuZCB0aGVuIHJlbmFtZSBpdCwKLSAgICBzbyB0aGF0IGl0IGlzIHJlYWxseSByZWFkeSB0byB1c2UgYXMgc29vbiBhcyBpdCBhcHBlYXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDQ1NWFlN2U4N2Y2N2M0NGU2YWVhNjg4NjVjODNhY2FkZDNmY2QzNmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBEZWMgMTYgMDE6MDI6MTcgMjAwOCArMDEwMAotCi0gICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgODRiYzcyZDkwYzUwNWZlYzNlZjRiNjkzOTk1NDA3YTBiZDQwNjRlNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgRGVjIDExIDE4OjM5OjA4IDIwMDggLTA1MDAKLQotICAgIHNwaS9zdG1pY3JvOiBmaXggZGVidWcoKSBkaXNwbGF5IG9mIGNtZAotCi0gICAgVGhlIHN0bWljcm9fd2FpdF9yZWFkeSgpIGZ1bmMgdHJpZXMgdG8gc2hvdyB0aGUgYWN0dWFsIG9wY29kZSB0aGF0IHdhcyBzZW50Ci0gICAgdG8gdGhlIGRldmljZSwgYnV0IGluc3RlYWQgaXQgZGlzcGxheXMgdGhlIGFycmF5IHBvaW50ZXIuICBGaXggaXQgdG8gcHVsbAotICAgIG91dCB0aGUgb3Bjb2RlIGZyb20gdGhlIHN0YXJ0IG9mIHRoZSBhcnJheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDViMzM3NWFjOGMzNmMyOWM4N2FiYjEzMmZlZGUwNTA5ZWIyMWU1YzkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IERlYyAxMSAwNjoyMzozNyAyMDA4IC0wNTAwCi0KLSAgICBlbnZfc2Y6IHN1cHBvcnQgZW1iZWRkZWQgZW52aXJvbm1lbnRzCi0KLSAgICBJZiBib3RoIENPTkZJR19FTlZfU0VDVF9TSVpFIGFuZCBDT05GSUdfRU5WX1NJWkUgYXJlIGRlZmluZWQsIGFuZCB0aGUgc2VjdAotICAgIHNpemUgaXMgbGFyZ2VyIHRoYW4gdGhlIGVudiBzaXplLCB0aGVuIGl0IG1lYW5zIHRoZSBlbnYgaXMgZW1iZWRkZWQgaW4gYQotICAgIGJsb2NrLiAgU28gd2UgaGF2ZSB0byBzYXZlL3Jlc3RvcmUgdGhlIHBhcnQgb2YgdGhlIHNlY3RvciB3aGljaCBpcyBub3QgdGhlCi0gICAgZW52aXJvbm1lbnQuICBQcmV2aW91c2x5LCBzYXZpbmcgdGhlIGVudmlyb25tZW50IGluIFNQSSBmbGFzaCBpbiB0aGlzCi0gICAgc2V0dXAgd291bGQgcHJvYmFibHkgYnJpY2sgdGhlIGJvYXJkIGFzIHRoZSByZXN0IG9mIHRoZSBzZWN0b3IgdGVuZHMgdG8KLSAgICBjb250YWluIGFjdHVhbCBVLUJvb3QgZGF0YS9jb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIEFja2VkLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBlY2Y1ZjA3N2M4ZTc3NDU0ZjUzMmVhYWMzZTNhZmI3Y2ZjNDhjNjJkCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRGVjIDMgMTE6Mjg6MzAgMjAwOCAtMDYwMAotCi0gICAgaTJjOiBtZXJnZSBhbGwgaTJjX3JlZ19yZWFkKCkgYW5kIGkyY19yZWdfd3JpdGUoKSBpbnRvIGlubGluZSBmdW5jdGlvbnMKLQotICAgIEFsbCBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGZ1bmN0aW9ucyBpMmNfcmVnX3JlYWQoKSBhbmQKLSAgICBpMmNfcmVnX3dyaXRlKCkgYXJlIGlkZW50aWNhbC4gV2UgY2FuIHNhdmUgc3BhY2UgYW5kIHNpbXBsaWZ5IHRoZQotICAgIGNvZGUgYnkgY29udmVydGluZyB0aGVzZSBmdW5jdGlvbnMgaW50byBpbmxpbmVzIGFuZCBwdXR0aW5nIHRoZW0gaW4KLSAgICBpMmMuaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtQnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlMzljZDgxYzQ0NzQwZDczNTVkMjc3ZWQzZDM4NTM2Y2JlMWUwMDNkCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgRGVjIDUgMTU6MzY6MTQgMjAwOCArMDgwMAotCi0gICAgbGliX3BwYzogcmV3b3JrIHRoZSBmbHVzaF9jYWNoZQotCi0gICAgLSBJdCBpcyBwb3NzaWJsZSB0byBtaXNzIGZsdXNoL2ludmFsaWRhdGUgdGhlIGxhc3QKLSAgICAgIGNhY2hlIGxpbmUsIHdlIGZpeCBpdCBhdCBoZXJlLgotICAgIC0gYWRkIHRoZSB2b2xhdGlsZSBhbmQgbWVtb3J5IGNsb2JiZXIuCi0KLSAgICBUaGV5IGFyZSBwb2ludGVkIGJ5IFNjb3R0IFdvb2QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjMyNDBiYTg4Y2Q2YTIyMDA1N2EwZjI4ZTViZjk3ZjViMTdhYzg0YgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJU2F0IERlYyAxMyAxNzoyMDoyOCAyMDA4IC0wNjAwCi0KLSAgICBJbnRyb2R1Y2UgYWRkcl9tYXAgbGlicmFyeQotCi0gICAgQWRkIGEgbGlicmFyeSB0aGF0IGhlbHBzIGluIHRyYW5zbGF0aW5nIGJldHdlZW4gdmlydHVhbCBhbmQgcGh5c2ljYWwKLSAgICBhZGRyZXNzZXMuCVRoaXMgbGlicmFyeSBjYW4gYmUgdXNlZnVsIGFzIGEgc2ltcGxlIG1lYW5zIHRvIGltcGxlbWVudAotICAgIG1hcF9waHlzbWVtKCkgYW5kIHZpcnRfdG9fcGh5cygpIGZvciBwbGF0Zm9ybXMgdGhhdCBuZWVkIGZ1bmN0aW9uYWxpdHkKLSAgICBiZXlvbmQgdGhlIHNpbXBsZSAxOjEgbWFwcGluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2NWU0M2ExMDYzMTUzN2RjYjkyYzMwMmQzNjMwMWExMjMwODIxNmMzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglTYXQgRGVjIDEzIDE3OjIwOjI3IDIwMDggLTA2MDAKLQotICAgIEludHJvZHVjZSB2aXJ0X3RvX3BoeXMoKQotCi0gICAgdmlydF90b19waHlzKCkgcmV0dXJucyB0aGUgcGh5c2ljYWwgYWRkcmVzcyBnaXZlbiBhIHZpcnR1YWwuIEluIG1vc3QKLSAgICBjYXNlcyB0aGlzIHdpbGwgYmUganVzdCB0aGUgaW5wdXQgdmFsdWUgYXMgdGhlIHZhc3QgbWFqb3JpdHkgb2YKLSAgICBzeXN0ZW1zIHJ1biBpbiBhIDE6MSBtb2RlLgotCi0gICAgSG93ZXZlciBpbiBzeXN0ZW1zIHRoYXQgYXJlIG5vdCBydW5uaW5nIHRoaXMgd2F5IGl0IHNob3VsZCByZXBvcnQgdGhlCi0gICAgcGh5c2ljYWwgYWRkcmVzcyBvciB+MCBpZiBubyBtYXBwaW5nIGV4aXN0cyBmb3IgdGhlIGdpdmVuIHZpcnR1YWwKLSAgICBhZGRyZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ1ODQ1MzAxYWYzZGU4Njc1YzFmN2JiYzgxNWM2ZGUzNTQ1MjYwNWEKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotRGF0ZToJU3VuIERlYyA3IDIyOjEyOjUwIDIwMDggKzAxMDAKLQotICAgIFBPU1QgTWFrZTogZml4IHRoZSBzdWItZGlyIGRlcGVuZGVuY2llcyBtaXNzaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgMjI1MjU3NzljYjUxZjFiYmU0ZTk2ZmVhN2I3NzhkZTE5MzVhNWE2OQotQXV0aG9yOiBNYXJ0aW4gTWljaGxtYXlyIDx0Ym1AY3lyaXVzLmNvbT4KLURhdGU6CVdlZCBBdWcgNiAxNDo0NDowNSAyMDA4ICswMzAwCi0KLSAgICBGaXggYSB0eXBvIGluIGZ3X2Vudi5jb25maWcKLQotICAgIFJlcG9ydGVkLWJ5OiBNYXJ0aW4gTWljaGxtYXlyIDx0Ym1AY3lyaXVzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYmE0OTBiNzc2MWM2MmI1NDljMjIyYTk3MjNlNTMyZGM4MDFhMzg5OQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIERlYyAxIDE2OjIyOjQ1IDIwMDggLTA2MDAKLQotICAgIFJlbW92ZSB1bnVzZWQgQ09ORklHX0FERFJfU1RSRUFNSU5HIGRlZmluZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBkMTZkYTkzNDMwNTIwZDNlNDZjMWFiNTJlZWRhY2YzNmFiN2EyMzExCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gTm92IDI0IDExOjU0OjQ3IDIwMDggLTA2MDAKLQotICAgIGNtZF9tZW06IFJlbW92ZSB1bnVzZWQgdmFyaWFibGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCAzYWVkM2FhMmMxMjhjZTlmYjM5Y2EzZjRlOTM4NWE3NDk5ZTkzZGJmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gRGVjIDE0IDEwOjI5OjM5IDIwMDggKzAxMDAKLQotICAgIEZpeCBuZXcgZm91bmQgQ0ZHXwotCi0gICAgQWxzbyBmaXggc29tZSBtaW5vciB0eXBvcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDBlMGM4NjJlZmU3Mjc5ZTk2MDlkYjc0ZDc1OGNkMWI4NGM2YzcyMDkKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CUZyaSBTZXAgMTkgMTI6MDc6MzQgMjAwOCArMDIwMAotCi0gICAgUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmc6IHRhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcKLQotICAgIFRoaXMgd2FybmluZyBpcyBpc3N1ZWQgYnkgbW9kZXJuIEFSTS1FQUJJIEdDQyBvbiBub24tdGh1bWIgdGFyZ2V0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZsYWRpbWlyIFBhbmZpbG92IDxwdnJAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IGNkNjczNDUxMGE5ZmYwZjQxYzRhNzM1NjdkNDA4MGVhMDAzM2QyYzEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBOb3YgMjQgMTM6MzM6NTEgMjAwOCArMDEwMAotCi0gICAgRml4IEZJVCBhbmQgRkRUIHN1cHBvcnQgdG8gaGF2ZSBDT05GSUdfT0ZfTElCRkRUIGFuZCBDT05GSUdfRklUIGluZGVwZW5kZW50Ci0KLSAgICBGRFQgc3VwcG9ydCBpcyB1c2VkIGZvciBib3RoIEZJVCBzdHlsZSBpbWFnZXMgYW5kIGZvciBhcmNoaXRlY3R1cmVzCi0gICAgdGhhdCBjYW4gcGFzcyBhIGZkdCBibG9iIHRvIGFuIE9TIChwcGMsIG02OGssIHNwYXJjKS4KLQotICAgIEZvciBvdGhlciBhcmNoaXRlY3R1cmVzIGFuZCBib2FyZHMgd2hpY2ggZG8gbm90IHBhc3MgYSBmZHQgYmxvYiB0byBhbgotICAgIE9TIGJ1dCB3YW50IHRvIHVzZSB0aGUgbmV3IHVJbWFnZSBmb3JtYXQsIHdlIGp1c3QgbmVlZCBGSVQgc3VwcG9ydC4KLQotICAgIE5vdyB3ZSBjYW4gaGF2ZSB0aGUgNCBmb2xsb3dpbmcgY29uZmlndXJhdGlvbnMgOgotCi0gICAgMSkgRklUIG9ubHkJCSAgICBDT05GSUdfRklUCi0gICAgMikgZmR0IGJsb2Igb25seQkgICAgQ09ORklHX09GX0xJQkZEVAotICAgIDMpIGJvdGgJCSAgICBDT05GSUdfT0ZfTElCRkRUICYgQ09ORklHX0ZJVAotICAgIDQpIG5vbmUJCSAgICBub25lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTllZjRmN2E2ZWYzYjcyNWFhOWZlNGI0ZjVmYjY3NmE4NDE2MDE3MgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVdlZCBEZWMgMTAgMTU6MTM6MzIgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBEaXNhYmxlIEVFUFJPTSB3cml0ZSBhY2Nlc3Mgb24gUE1DNDQwIGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBFRVBST00gd3J0aWUgYWNjZXNzIGJ5IGRlZmF1bHQgb24gUE1DNDQwIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA1YjY3YTE0MzlhNzNiYTZjMzQwMDdkOWZmNjBhMmM2YWE5MDI2NWRmCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIERlYyAxMCAxNToxMjo1NiAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBFdGhlcm5ldCBQSFkgTEVEIGNvbmZpZ3VyYXRpb24gb24gUE1DNDQwIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA3MWZhMDcxNGZlNTEzNGJjODcxOGMzOGQ1MjYxZDI2N2U4ODU4MmJhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBOb3YgMTggMTY6MzY6MTIgMjAwOCArMDEwMAotCi0gICAgTUlQUzogRmx1c2ggZGF0YSBjYWNoZSB1cG9uIHJlbG9jYXRpb24KLQotICAgIFRoaXMgcGF0Y2ggbm93IGFkZHMgYSBmbHVzaCB0byB0aGUgZGF0YSBjYWNoZSB1cG9uIHJlbG9jYXRpb24uIFRoZQotICAgIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gaXMgbWlzc2luZyB0aGlzLiBPbmx5IGEgY29tbWVudCBzdGF0ZXMgdGhhdCBpdAotICAgIHNob3VsZCBiZSBkb25lLiBTbyBsZXQncyByZWFsbHkgZG8gaXQgbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCA0NDE3NDM0MzY4OGRiYTMyNTcxYTM0NTUwZGJhMDg5NzFjNjVmZWYxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBOb3YgMTggMTY6MzY6MjIgMjAwOCArMDEwMAotCi0gICAgTUlQUzogQWRkIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCBvcHRpb24gdG8gc3RhcnQuUy4gVGhpcwotICAgIGVuYWJsZXMgc3VwcG9ydCBmb3IgYm9hcmRzIHdoZXJlIHRoZSBsb3dsZXZlbCBpbml0aWFsaXphdGlvbiBpcwotICAgIGFscmVhZHkgZG9uZSB3aGVuIFUtQm9vdCBydW5zIChlLmcuIHZpYSBPbkNoaXAgUk9NKS4KLQotICAgIFRoaXMgd2lsbCBiZSB1c2VkIGluIHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGRiMDhlY2FhNmViODE3NjkwNGIzYmFlMTAzYTg1ZWU4ZjczNWRjNDAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE5vdiAxMiAxMzoxODowMiAyMDA4ICswMTAwCi0KLSAgICBNSVBTOiBBZGQgYm9hcmRfZWFybHlfaW5pdF9mKCkgdG8gaW5pdF9zZXF1ZW5jZQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBib2FyZF9lYXJseV9pbml0X2YoKSBjYWxsIHRvIHRoZSBNSVBTIGluaXQKLSAgICBzZXF1ZW5jZS4gQSB3ZWFrIGR1bW15IGltcGxlbWVudGF0aW9uIGlzIGFsc28gYWRkZWQgd2hpY2ggY2FuIGJlCi0gICAgb3ZlcnJpZGRlbiBieSBhIGJvYXJkIHNwZWNpZmljIHZlcnNpb24uCi0KLSAgICBUaGlzIHdpbGwgYmUgdXNlZCBieSB0aGUgdXBjb21pbmcgVkNUSCBib2FyZCBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCA5ZDIzZmM1ODRjNGI3YjhiYjllY2JlZTQ4OTIwYjFiMDRiMDhmYTFiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBOb3YgMTIgMTM6MTg6MTkgMjAwOCArMDEwMAotCi0gICAgTUlQUzogQWRkIG9uZW5hbmRfaW5pdCgpIHRvIGJvYXJkLmMgYW5kIG1vdmUgbmFuZF9pbml0KCkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGNhbGwgdG8gb25lbmFuZF9pbml0KCkgZm9yIE9uZU5BTkQgc3VwcG9ydCBhbmQgbW92ZXMKLSAgICB0aGUgbmFuZF9pbml0KCkgY2FsbCB0byBhbiBlYXJsaWVyIHBsYWNlLCBzbyB0aGF0IHRoZSBlbnZpcm9ubWVudCBjYW4KLSAgICBiZSB1c2VkIGZyb20gTkFORCBhbmQgT25lTkFORC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgZDhiYmM1MWM3YmE5YjczN2EyMDk4NDMzM2QxOWZlMjhhMzUyNjQzMQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUdWUgRGVjIDkgMTE6MzI6NDYgMjAwOCArMDkwMAotCi0gICAgc2g6IFVwZGF0ZSBzaDIvc2gyYSB0aW1lcgotCi0gICAgUmVuZXNhcyBTSDIvU0gyQSB0aW1lciBicm9rZW4uCi0gICAgVGhpcyBwYXRjaCBmaXggdGltZXIgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYTMxOWYxNDk2MjEwMTE3YjczMTk4ZTNkODg5ZmZmZmFmNjgyNWQwMAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIERlYyA1IDA3OjI3OjM3IDIwMDggKzAxMDAKLQotICAgIHNoOiByMmRwbHVzIGZpeCByZWdpc3RlciBhY2Nlc3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNGQ0YTk2MDU1ZjY5MTczMzVhODlkYmRmMmU1NTU2ZmE1YWMzMjlmNgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIERlYyAyIDA3OjQwOjAzIDIwMDggKzAxMDAKLQotICAgIHNoOiByMmRwbHVzL2xvd2xldmVsX2luaXQ6IGNvZGluZyBzdHlsZSBmaXgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYzU0YjlhNDJkOGY1YWI1YjJhMDM5YjNhMmU2ZmRlOGI0Mjc3NDVlNQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUdWUgTm92IDI1IDExOjA1OjE5IDIwMDggKzA5MDAKLQotICAgIHNoOiBDaGFuZ2VkIHZhbHVlIG9mIENBQ0hFX09DX05VTV9FTlRSSUVTIGFuZCBDQUNIRV9PQ19XQVlfU0hJRlQKLQotICAgIFNINCBpcyBkaWZmZXJlbnQgYSB2YWx1ZSBvZiBDQUNIRV9PQ19OVU1fRU5UUklFUyBhbmQKLSAgICBDQUNIRV9PQ19XQVlfU0hJRlQgZXZlcnkgQ1BVLgotICAgIFRoaXMgcGF0Y2ggY29ycmVjdHMgdGhlc2UgdmFsdWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGU5ZDVmMzU0OTc4ODViM2M2NWQ0OTRkMDlhNTI1ZDQ0M2RjY2NkM2IKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVGh1IE5vdiAyMCAxNjo0NDo0MiAyMDA4ICswOTAwCi0KLSAgICBzaDogVXBkYXRlIHNoIHRpbWVyIGZ1bmN0aW9uCi0KLSAgICBDaGFuZ2UgdG8gd3JpdGUvcmVhZFggZnVuY3Rpb24gYW5kIGZpeCB0aW1lciBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGI4MTc4NmNmZjQ3NmM0MWUzMzJlYWViNjc5MTU4ZjY1MjdjZDY3ZDQKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVHVlIE5vdiA0IDExOjU4OjU4IDIwMDggKzA5MDAKLQotICAgIHNoOiBNaWdvLVI6IFVwZGF0ZSBCU0MgdmFsdWUKLQotICAgIEEgdmFsdWUgb2YgQlNDIENTNCB3YXMgd3JvbmcsIEZpeGVkIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDU3ODM3NThmZDI2MGEwMmY0NDU2NmFkOGYyOWY4OTk1NjVjZDA0MDMKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJTW9uIE5vdiAxNyAxNjo1MjowOSAyMDA4ICswOTAwCi0KLSAgICBzaDogVXBkYXRlIG1zNzcyMnNlIGJvYXJkIGNvbmZpZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDE1ZTI2OTdjOWY3ZmIyYmE2NzJhMWE3MGYwN2NkNmQ5ZDRlOTJiNTEKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJTW9uIE5vdiAxNyAxNjo1MzowOSAyMDA4ICswOTAwCi0KLSAgICBzaDogVXBkYXRlIFN1cGVySCBzZXJpYWwgZHJpdmVyCi0KLSAgICBUaGUgYWRkcmVzcyBvZiBTQ0ZTUiByZWdpc3RlciBpcyB3cm9uZyBhdCBTSDc3MjAvU0g3NzIxLgotICAgIFRoaXMgcGF0Y2ggZml4IHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgOWExZDM1NTdkY2Q0NzM2NWMxMmVlYWI1ODRiODIyZTU3ZDk5NDM1MgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIE5vdiAxMSAyMjoyMDoxNSAyMDA4ICswMTAwCi0KLSAgICBzaDogZml4IHJzazcyMDMgYW5kIE1pZ29SIG91dCBvZiB0cmVlIGJ1aWxkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDE5NTFmODQ3ZjBhODUxODUzODcxYjYxM2FkN2NmMjFhNTI0MjIyNmMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglXZWQgRGVjIDEwIDE0OjQxOjI1IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIFRFWFRfQkFTRSBmb3IgQ1BDSTQwNSBib2FyZHMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYnVpbGRpbmcgVS1Cb290IGZvciBDUENJNDA1IGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDhjOTJhZjdiMmZiZDYwYWU4NzM3OTQ3N2Y5M2M3ZWM5NDQxYjc0NTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIERlYyA5IDIwOjA4OjAxIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIHNvbWUgZmVhdHVyZXMgZnJvbSBBTFBSIHRvIGZpdCBpbnRvIDI1NmsgYWdhaW4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDNiMDg5ZTRmODg5YTI5MDI0NDlkNTVlMDgxYzg4NmFlNjA3Y2FlODkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIERlYyAxMCAxMDozMjo1OSAyMDA4ICswMTAwCi0KLSAgICBVQkk6IFNldCB1YmlfZGV2LnR5cGUgYmFjayB0byBERVZfVFlQRV9OT05FIHVwb24gZmFpbGluZyBpbml0aWFsaXphdGlvbgotCi0gICAgV2l0aCB0aGlzIHBhdGNoIHdlIHNldCB0aGUgdHlwZSBiYWNrIHRvIE5PTkUgdXBvbiBmYWlsaW5nIFVCSSBwYXJ0aXRpb24KLSAgICBpbml0aWFsaXphdGlvbi4gT3RoZXJ3aXNlIGZ1cnRoZXIgY2FsbHMgdG8gdGhlIFVCSSBzdWJzeXN0ZW0gd291bGQgdHJ5Ci0gICAgdG8gcmVhbGx5IGFjY2VzcyB0aGUgbm9uLWV4aXN0aW5nIFVCSSBwYXJ0aXRpb24uCi0KLSAgICBUaGFua3MgdG8gTWljaGFlbCBMYXduaWNrIGZvciBwb2ludGluZyB0aGlzIG91dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDgxNzMyOTM1MTYzOWE4ODk1Y2Q5Yjg3YjMzYWVmZjA0M2YzZDVhNDQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIERlYyAxMCAxMDoyODozMyAyMDA4ICswMTAwCi0KLSAgICBVQkk6IFJldHVybiAtRU5PTUVNIHVwb24gZmFpbGluZyBtYWxsb2MKLQotICAgIFJldHVybiB3aXRoIGNvcnJlY3QgZXJyb3IgY29kZSAoLUVOT01FTSkgZnJvbSB1YmlfYXR0YWNoX210ZF9kZXYoKSB1cG9uCi0gICAgZmFpbGluZyBtYWxsb2MoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDIxNDUxODhiZWEyZGY4ZjJiNDdhODdlYzMwNzFiNTUwMjdlOGQwYWUKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBEZWMgOSAyMzozNDoxNSAyMDA4IC0wODAwCi0KLSAgICBGaXggY29tcGlsZSBlcnJvciBpbiBidWlsZGluZyBNQlg4NjBULgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDhmYWI0OWVhOTExZmU5MjUzOTJmYTVhZmNjOWJjNzM3M2EzZDBjZWUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJVHVlIE5vdiAyNSAxMTo0MjoyMCAyMDA4ICswMTAwCi0KLSAgICBtaWNyb2JsYXplOiBSZW1vdmUgWFVQVjJQIGJvYXJkCi0KLSAgICAtLS0KLQotICAgIE1pY3JvYmxhemUgcGxhdGZvcm1zIHVzZSBnZW5lcmljIHNldHRpbmdzIGFuZCB0byBoYXZlCi0gICAgbWFueSBwbGF0Zm9ybXMgaXMgY29uZnVzaW5nIHRoYXQncyB3aHkgSSBkZWNpZGVkIHRvIHJlbW92ZSB0aGlzCi0gICAgcGxhdGZvcm0gZnJvbSBVLUJPT1QuIG1sNDAxIHRyZWUgaXMgc3VmZmljaWVudCBmb3IgY292ZXJpbmcKLSAgICBhbGwgTWljcm9ibGF6ZSBwbGF0Zm9ybXMuCi0KLSAgICBUaGlzIGNoYW5nZSB3aWxsIGdvIHRocm91Z2ggbWljcm9ibGF6ZSBjdXN0b2RpYW4gdHJlZS4KLQotY29tbWl0IDk5YmE2ZjM1MzU4MjcyMGRlZmZmNmU2ZTY3NjFkYzQ1NWEyMDdkMzEKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIE5vdiAyNCAxODoyNTo0MSAyMDA4ICswMTAwCi0KLSAgICBtaWNyb2JsYXplOiBSZW1vdmUgQ09ORklHX0xJQkZEVCBkdWUgdG8gZXJyb3IgaW4gY29tbW9uIGZpbGVzCi0KLWNvbW1pdCBlN2Q1OTFlODIzYTk5MTUxMzgzM2FmNzAzMDQ2ODQwOWUyNWEzYjEzCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBOb3YgMjQgMTE6NDM6MDAgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogRml4IG1sNDAxIHVhcnQxNjU1MCBzZXR0aW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCBjODVmZjA1NTNhOGNmYmNjYTUxYzE1Yjk0N2UxZWQ1NWQzODEwYTM5Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBOb3YgMjQgMTE6Mzg6MjIgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogU2V0IHVwIHJlbG9jYXRpb24gaXMgZG9uZQotCi1jb21taXQgYmNiNmRkOTE4N2Q0YjIzYzc0ODcwNDc2N2JkMTJkMjBjODI5ZTk5NgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUdWUgRGVjIDkgMjM6MjA6MzEgMjAwOCAtMDUwMAotCi0gICAgdG9vbHMvbmV0Y29uc29sZTogbmV3IHNjcmlwdCBmb3Igd29ya2luZyB3aXRoIG5ldGNvbnNvbGUgb3ZlciBVRFAKLQotICAgIFdoaWxlIHRoZSBkb2MvUkVBRE1FLk5ldENvbnNvbGUgZG9lcyBoYXZlIGEgc25pcHBldCBmb3IgcGVvcGxlIHRvCi0gICAgY3JlYXRlIHRoZWlyIG93biBuZXRjYXQgc2NyaXB0LCBpdCdzIGEgbG90IGVhc2llciB0byBtYWtlIGEgc2ltcGxlCi0gICAgZGVkaWNhdGVkIHNjcmlwdCBhbmQgdGVsbCBwZW9wbGUgdG8gdXNlIGl0LgotCi0gICAgQWxzbyBzcHJ1Y2UgaXQgdXAgYSBiaXQgdG8gbWFrZSBpdCB1c2VyIGZyaWVuZGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOGM1MTcwYTdkMDg4NjAxZDVmMzBkODUwOTMzODhkYWIxZjFlOGVjMAotQXV0aG9yOiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KLURhdGU6CVR1ZSBEZWMgOSAyMzoyMDoxOCAyMDA4IC0wNTAwCi0KLSAgICBmcy9mYXQ6IGhhbmRsZSBGQVQgb24gU0FUQQotCi0gICAgVGhlIEZBVCBmaWxlIHN5c3RlbSBkcml2ZXIgc2hvdWxkIGFsc28gaGFuZGxlIEZBVCBvbiBTQVRBIGRldmljZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTb25pYyBaaGFuZyA8U29uaWMuWmhhbmdAYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0Y2Q4ZWQ0MDYxNWE3ZDc0MWVmMmYwOWVlNTM3NzllYzY5MDdiOGE2Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglUdWUgRGVjIDkgMjM6MjY6MzEgMjAwOCAtMDgwMAotCi0gICAgRml4IGNvbXBpbGUgZXJyb3IgaW4gYnVpbGRpbmcgTUJYODYwVC4KLSAgICBCdWcgd2FzIGludHJvZHVjZWQgaW4gOWViNzliZDg4NTZiY2FiODk2ZWQ1ZTFmMWJjYTE1OTgwN2ExMjRkZAotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDk3YTI0YTc4ZWU2ZjM0Yjg5YjgyMWNiNzBlZGExY2YzNGFhMTFkOTcKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJTW9uIE5vdiAyNCAwODoxNTowMiAyMDA4IC0wNTAwCi0KLSAgICBsaWJmZHQ6IEZpeCByZWRlZmluZWQgdWludHB0cl90IHdhcm5pbmcgZm9yIFVTRV9IT1NUQ0MKLQotICAgIENvbXBpbGluZyBVLUJvb3QgaW4gYW4gb2xkIE9TIGVudmlyb25tZW50IChSZWRIYXQtNy4zICA6LSkJZ2l2ZXMgdGhlCi0gICAgZm9sbG93aW5nIHdhcm5pbmdzIGZyb20gRkRUOgotCi0gICAgaW5jbHVkZS9saWJmZHRfZW52Lmg6NTA6IHdhcm5pbmc6IHJlZGVmaW5pdGlvbiBvZiAndWludHB0cl90JwotICAgIC91c3IvaW5jbHVkZS9zdGRpbnQuaDoxMjk6IHdhcm5pbmc6ICd1aW50cHRyX3QnIHByZXZpb3VzbHkgZGVjbGFyZWQgaGVyZQotCi0gICAgRml4OiBQcm90ZWN0IHRoZSBkZWZpbml0aW9uIG9mIHVpbnRwdHJfdCB3aGVuIGNvbXBpbGluZyBvbiB0aGUgaG9zdAotICAgIHN5c3RlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCAxZmMyYjE2NWM1MWQ2ZjQwYzhkNTA1ZjFiM2VhZWZkYjY1OTliMTdiCi1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglTYXQgTm92IDIyIDA4OjQzOjI5IDIwMDggKzExMDAKLQotICAgIE1vdmVkIHNjNTIwIFBDSSBkZWZpbml0aW9ucyB0byBzdGFuZC1hbG9uZSBmaWxlCi0KLSAgICBTaWduZWQgT2ZmIEJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgMWY1MDcwYzBjMThmYTU2ODRiZmNlMDljOGFiZGYxMGMwNGVkNDhmYQotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU2F0IE5vdiAyMiAwODo0MzoyMSAyMDA4ICsxMTAwCi0KLSAgICBGaXhlZCBwYXRoIHRvIHNjNTIwIFNTSSBpbmNsdWRlIGZpbGUKLQotICAgIFNpZ25lZCBPZmYgQnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBkNGY3MGRhNTQ0YzMzZGIzZTRmY2U2NDczZGVhNGVjY2E0MzIyNTQ1Ci1BdXRob3I6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDA2OjI4OjA1IDIwMDggKzExMDAKLQotICAgIEZpeGVkIGJ1aWxkIGVycm9yIGR1ZSB0byAjZGVmaW5lIG9mIF9MSU5VWF9TVFJJTkdfSF8gaW4gODI1NTlfZWVwcm9tLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYWVtZSBSdXNzIDxncmFlbWUucnVzc0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBjMDM0MDc1YTcxM2I2MGU2NTRjNjRlODhlODdkYTI5NDQwZjMxYmI0Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBOb3YgMTIgMTM6MzA6MTAgMjAwOCArMDEwMAotCi0gICAgc2VyaWFsOiBBZGQgdmN0aCBVQVJUIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBVQVJUIGRyaXZlciBmb3IgdGhlIHVwY29taW5nIFZDVEggYm9hcmQgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE0MmE4MGZmYzNiNTM3YTljNDVhY2QyNDQ0YTQyYTc3ZjE0N2M2MDIKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTm92IDEzIDE5OjQ5OjM2IDIwMDggKzAzMDAKLQotICAgIGpmZnMyOiBjYWNoZSBkYXRhX2NyYyByZXN1bHRzCi0KLSAgICBBcyB3ZSBtb3ZlZCBkYXRhX2NyYygpIGludm9jYXRpb24gZnJvbSBqZmZzMl8xcGFzc19idWlsZF9saXN0cygpIHRvCi0gICAgamZmczJfMXBhc3NfcmVhZF9pbm9kZSgpIGRhdGFfY3JjIGlzIGdvaW5nIHRvIGJlIGNhbGN1bGF0ZWQgb24gZWFjaAotICAgIGlub2RlIGFjY2Vzcy4gVGhpcyBwYXRjaCBhZGRzIGNhY2hpbmcgb2YgZGF0YV9jcmMoKSByZXN1bHRzLiBUaGVyZQotICAgIGlzIG5vIHNpZ25pZmljYW50IGltcHJvdmVtZW50IGluIHNwZWVkIChiZWNhdXNlIG9mIGZsYXNoIGFjY2VzcwotICAgIGNhY2hpbmcgYWRkZWQgaW4gcHJldmlvdXMgcGF0Y2ggSSB0aGluaywgY3JjIGluIFJBTSBpcyByZWFsbHkgZmFzdCkKLSAgICBidXQgdGhpcyBwYXRjaCBpbXBhY3RzIG1lbW9yeSB1c2FnZSAtLSBldmVyeSBiX25vZGUgc3RydWN0dXJlIHVzZXMKLSAgICAxMiBieXRlcyBpbnN0ZWFkIG9mIDguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgTmV5bWFuIDxhdm5AZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA5YjcwNzYyMjllYzZhOTU4YmQ4MzVhYjcwNzQ1Zjc2NzYyOTdjZTgyCi1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozNSAyMDA4ICswMzAwCi0KLSAgICBqZmZzMjogc3VtbWFyeSBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcmVhZGluZyBmcyBpbmZvcm1hdGlvbiBmcm9tIHN1bW1hcnkKLSAgICBub2RlIGluc3RlYWQgb2Ygc2Nhbm5pbmcgZnVsbCBlcmFzZWJsb2NrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA3MDc0MTAwNGRjMjg5NDZjZDgyYzdhZjY3ODljNGRkYjNmYzk0NTI2Ci1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozNCAyMDA4ICswMzAwCi0KLSAgICBqZmZzMjogYWRkIGJ1ZmZlciB0byBjYWNoZSBmbGFzaCBhY2Nlc3NlcwotCi0gICAgV2l0aCB0aGlzIHBhdGNoIEpGRlMyIGNvZGUgYWxsb2NhdGVzIG1lbW9yeSBidWZmZXIgb2YgbWF4X3RvdGxlbiBzaXplCi0gICAgKHNpemUgb2YgdGhlIGxhcmdlc3Qgbm9kZSwgY2FsY3VsYXRlZCBkdXJpbmcgc2NhbiB0aW1lKSBhbmQgdXNlcyBpdCB0bwotICAgIHN0b3JlIGVudGlyZSBub2RlLiBTcGVlZHMgdXAgbG9hZGluZy4gSWYgbWFsbG9jIGZhaWxzIHdlIHVzZSBvbGQgd2F5cwotICAgIHRvIGRvIHRoaW5ncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhleSBOZXltYW4gPGF2bkBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDhhMzZkMzFmNzI0MTExNDRhYzA0MTJlZTdlMTg4MGU4MDFhY2Q3NTQKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTm92IDEzIDE5OjQ5OjMzIDIwMDggKzAzMDAKLQotICAgIGpmZnMyOiByZXdyaXRlIGpmZnMyIHNjYW5uaW5nIGNvZGUgYmFzZWQgb24gTGludXggb25lCi0KLSAgICBSZXdyaXRlcyBqZmZzMl8xcGFzc19idWlsZF9saXN0cygpIGZ1bmN0aW9uIGluIHN0eWxlIG9mIExpbnV4J3MKLSAgICBqZmZzMl9zY2FuX21lZGl1bSgpIGFuZCBqZmZzMl9zY2FuX2VyYXNlYmxvY2soKS4KLSAgICBUaGlzIGluY2x1ZGVzOgotICAgICAtIENhY2hpbmcgZmxhc2ggYWNjZXNlcwotICAgICAtIFNtYXJ0IGRlYWxpbmcgd2l0aCBmcmVlIHNwYWNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgTmV5bWFuIDxhdm5AZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBlMGI1NTMyNTc5ZWRhOGI0NjI5ZjFiNGY2ZTQ5YzNjYzYwZjUyMjM3Ci1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozMiAyMDA4ICswMzAwCi0KLSAgICBqZmZzMjogYWRkIHNlY3Rvcl9zaXplIGZpZWxkIHRvIHBhcnRfaW5mbyBzdHJ1Y3R1cmUKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzZWN0b3Jfc2l6ZSBmaWVsZCB0byBwYXJ0X2luZm8gc3RydWN0dXJlICh1c2VkCi0gICAgYnkgbmV3IEpGRlMyIGNvZGUpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBmNzM4NDY5NTY3NzhhN2RmZWU4MzQwM2VmOTc0N2FmZjc3MTk4ODQ4Ci1BdXRob3I6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IE5vdiAxMyAxOTo0OTozMSAyMDA4ICswMzAwCi0KLSAgICBqZmZzMjogZml4IHNlYXJjaGluZyBmb3IgbGF0ZXN0IHZlcnNpb24gaW4gamZmczJfMXBhc3NfbGlzdF9pbm9kZXMoKQotCi0gICAgV2UgbmVlZCB0byB1cGRhdGUgaV92ZXJzaW9uIGluc2lkZSBjeWNsZSB0byBmaW5kIHJlYWxseSBsYXRlc3QgdmVyc2lvbgotICAgIGluc2lkZSBqZmZzMl8xcGFzc19saXN0X2lub2RlcygpLiBXaXRoIHRoYXQgZml4ZWQgd2UgY2FuIHVzZSBpc2l6ZSBpbnNpZGUKLSAgICBkdW1wX2lub2RlKCkgaW5zdGVhZCBvZiBjYWxsaW5nIGV4cGVuc2l2ZSBqZmZzMl8xcGFzc19yZWFkX2lub2RlKCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgTmV5bWFuIDxhdm5AZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCAxMTEzY2I3NjRiM2RhMjU2ZWY4YTFmOTUzOWY0ZWZiZTIyMWZmM2M0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDkgMjM6MTM6NTEgMjAwOCArMDEwMAotCi0gICAgZXZiNjQyNjA6IGZpeCAiY2FzdCB0byBwb2ludGVyIGZyb20gaW50ZWdlciBvZiBkaWZmZXJlbnQgc2l6ZSIgd2FybmluZ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkMjc3NjgyNzMxNWMzZDQ2OWI4Y2I0Y2VjMTRkNTg4Nzc3OThkYWEyCi1BdXRob3I6IFN0ZWZhbiBBbHRob2VmZXIgPHN0ZWZhbi5hbHRob2VmZXJAd2ViLmRlPgotRGF0ZToJU3VuIERlYyA3IDE5OjM5OjExIDIwMDggKzAxMDAKLQotICAgIFVTQjogZGVzY3JpcHRvciBoYW5kbGluZwotCi0gICAgSGksCi0KLSAgICBJIGZvdW5kIGEgYnVnIHdoZW4gd29ya2luZyB3aXRoIHRoZSB1LWJvb3QgVVNCIHN1YnN5c3RlbSBvbiBJWFA0MjUgcHJvY2Vzc29yCi0gICAgKGJpZyBlbmRpYW4gWHNjYWxlIGFrYSBBUk12NSkuCi0gICAgSSByZWNvZ25pemVkIHRoYXQgdGhlIHNlY29uZCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciBvZiB0aGUgYXR0YWNoZWQgbWVtb3J5Ci0gICAgc3RpY2sgd2FzIGNvcnJ1cHRlZC4KLQotICAgIFRoZSByZWFzb24gZm9yIHRoaXMgYXJlIHRoZSBwYWNrZWQgc3RydWN0dXJlcyBiZWxvdyAoZWl0aGVyIHUtYm9vdCBhbmQKLSAgICB1LWJvb3QtdXNiKToKLQotICAgIC0tLS0tLS0tLS0tLS0tCi0gICAgLyogRW5kcG9pbnQgZGVzY3JpcHRvciAqLwotICAgIHN0cnVjdCB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciB7Ci0JdW5zaWduZWQgY2hhciAgYkxlbmd0aDsKLQl1bnNpZ25lZCBjaGFyICBiRGVzY3JpcHRvclR5cGU7Ci0JdW5zaWduZWQgY2hhciAgYkVuZHBvaW50QWRkcmVzczsKLQl1bnNpZ25lZCBjaGFyICBibUF0dHJpYnV0ZXM7Ci0JdW5zaWduZWQgc2hvcnQgd01heFBhY2tldFNpemU7Ci0JdW5zaWduZWQgY2hhciAgYkludGVydmFsOwotCXVuc2lnbmVkIGNoYXIgIGJSZWZyZXNoOwotCXVuc2lnbmVkIGNoYXIgIGJTeW5jaEFkZHJlc3M7Ci0KLSAgICB9IF9fYXR0cmlidXRlX18gKChwYWNrZWQpKTsKLSAgICAvKiBJbnRlcmZhY2UgZGVzY3JpcHRvciAqLwotICAgIHN0cnVjdCB1c2JfaW50ZXJmYWNlX2Rlc2NyaXB0b3IgewotCXVuc2lnbmVkIGNoYXIgIGJMZW5ndGg7Ci0JdW5zaWduZWQgY2hhciAgYkRlc2NyaXB0b3JUeXBlOwotCXVuc2lnbmVkIGNoYXIgIGJJbnRlcmZhY2VOdW1iZXI7Ci0JdW5zaWduZWQgY2hhciAgYkFsdGVybmF0ZVNldHRpbmc7Ci0JdW5zaWduZWQgY2hhciAgYk51bUVuZHBvaW50czsKLQl1bnNpZ25lZCBjaGFyICBiSW50ZXJmYWNlQ2xhc3M7Ci0JdW5zaWduZWQgY2hhciAgYkludGVyZmFjZVN1YkNsYXNzOwotCXVuc2lnbmVkIGNoYXIgIGJJbnRlcmZhY2VQcm90b2NvbDsKLQl1bnNpZ25lZCBjaGFyICBpSW50ZXJmYWNlOwotCi0JdW5zaWduZWQgY2hhciAgbm9fb2ZfZXA7Ci0JdW5zaWduZWQgY2hhciAgbnVtX2FsdHNldHRpbmc7Ci0JdW5zaWduZWQgY2hhciAgYWN0X2FsdHNldHRpbmc7Ci0Jc3RydWN0IHVzYl9lbmRwb2ludF9kZXNjcmlwdG9yIGVwX2Rlc2NbVVNCX01BWEVORFBPSU5UU107Ci0gICAgfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7Ci0gICAgLS0tLS0tLS0tLS0tCi0KLSAgICBBcyB1c2JfZW5kcG9pbnRfZGVzY3JpcHRvciBpcyBvbmx5IDdieXRlIGluIGxlbmd0aCwgdGhlIHN0YXJ0IG9mIGFsbAotICAgIG9kZCBlcF9kZXNjW10gc3RydWN0dXJlcyBpcyBub3Qgd29yZCBhbGlnbmVkLiBUaGlzIG1ha2VzIHdNYXhQYWNrZXRTaXplCi0gICAgb2YgdGhlc2Ugc3RydWN0dXJlcyBhbHNvIG5vdCB3b3JkIGFsaWduZWQuCi0KLSAgICBBUk12NSBBcmNoaXRlY3R1cmUgaG93ZXZlciBkb2VzIG5vdCBzdXBwb3J0IG5vbi1hbGlnbmVkIG11bHRpYnl0ZQotICAgIGRhdGEgdHlwZSAoc2VlIEEyLjggb2YgQVJNIEFyY2hpdGVjdHVyZSBSZWZlcmVuY2UgTWFudWFsKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBBbHRob2VmZXIgPHN0ZWZhbi5hbHRob2VmZXJAd2ViLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDRjMjUzZmRiMmExNzVlYTM0NzJjMzhhMTQ1NWExNmZhYTU4ZTgxZjAKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBEZWMgOSAxMDoyNzozMyAyMDA4IC0wNjAwCi0KLSAgICBkcml2ZXJzL2ZzbF9wY2lfaW5pdDogRml4IGNvbXBpbGUgd2FybmluZwotCi0gICAgZnNsX3BjaV9pbml0LmM6IEluIGZ1bmN0aW9uICdmc2xfcGNpX3NldHVwX2luYm91bmRfd2luZG93cyc6Ci0gICAgZnNsX3BjaV9pbml0LmM6MTIyOiB3YXJuaW5nOiBjb21wYXJpc29uIGlzIGFsd2F5cyB0cnVlIGR1ZSB0byBsaW1pdGVkIHJhbmdlIG9mIGRhdGEgdHlwZQotCi0gICAgVGhlIGNoZWNrIG9ubHkgbWFrZXMgc2Vuc2UgaWYgd2UgYXJlIENPTkZJR19QSFlTXzY0QklUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZGVkYWNjMThhOGMyYjM5NTE1ODFlYjcyMWZhMDU1YTRlMGFjNDg0NQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIERlYyA3IDA5OjQ1OjM1IDIwMDggKzAxMDAKLQotICAgIHVzYnR0eS9vbWFwOiB1cGRhdGUgdG8gY3VycmVudCBBUEkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZWUyZTliYTkxN2E2MmNjMmUzYTQ4NGJiNzljOGRhMGUwMWNiOTNlZAotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDkgMTc6NTI6MDUgMjAwOCArMDEwMAotCi0gICAgdmlkZW86IGZpeCBGQURTODIzIGFuZCBSUnZpc2lvbiBjb21waWxpbmcgaXNzdWVzCi0KLSAgICBTaW5jZSBjb21taXQgNTYxODU4ZWUgYnVpbGRpbmcgZm9yIEZBRFM4MjMgYW5kIFJSdmlzaW9uCi0gICAgZG9lc24ndCB3b3JrLiBMZXQncyBpbmNsdWRlIHZlcnNpb24uaCBhbmQgdGltZXN0YW1wLmgKLSAgICB1bmNvbmRpdGlvbmFsbHkgdG8gZml4IHRoZSBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgMmQyZTA1NzI3ZmU0MDEzZjgwN2ZmYTgxNGRmZjBlNzUyNTlhMWRiNAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgRGVjIDIgMTA6NTM6NDcgMjAwOCArMDEwMAotCi0gICAgVUJJOiBGaXggc2l6ZSBwYXJzaW5nIGluICJ1YmkgY3JlYXRlIgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmVlOTUxYmEyYWM5ODc0ZDJhOTNkNTJlN2ExODdkMzE4NGJlOTM3ZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDI3IDE0OjA3OjA5IDIwMDggKzAxMDAKLQotICAgIFVCSTogRW5hYmxlIHJlLWluaXRpYWxpemluZyBvZiB0aGUgInViaSBwYXJ0IiBjb21tYW5kCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggbm93LCB0aGUgdXNlciBjYW4gY2FsbCAidWJpIHBhcnQiIG11bHRpcGxlIHRpbWVzIHRvCi0gICAgcmUtY29ubmVjdCB0aGUgVUJJIGRldmljZSB0byBhbm90aGVyIE1URCBwYXJ0aXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5ZGVmMTJjYWUzM2QyZDNlYTJkZDU2YjE5N2ZkM2RmYjNhZDYwYmY0Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMjcgMTQ6MDU6MTUgMjAwOCArMDEwMAotCi0gICAgTVREOiBGaXggcHJvYmxlbSBiYXNlZCBvbiBub24td29ya2luZyByZWxvY2F0aW9uIChsaXN0IGhlYWQgbXRkX3BhcnRpdGlvbnMpCi0KLSAgICBEb24ndCB1c2UgTElTVF9IRUFEKCkgYnV0IGluaXRpYWxpemUgdGhlIHN0cnVjdCB2aWEgSU5JVF9MSVNUX0hFQUQoKSB1cG9uCi0gICAgZmlyc3QgY2FsbCBvZiBhZGRfbXRkX3BhcnRpdGlvbnMoKS4gT3RoZXJ3aXNlIHRoaXMgd29uJ3Qgd29yayBvbiBwbGF0Zm9ybXMKLSAgICB3aGVyZSB0aGUgcmVsb2NhdGlvbiBpcyBicm9rZW4gKGxpa2UgTUlQUyBvciBQUEMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNWUzYWI2OGU5YWNmOWVkZjMwNGI4YWEzMmFkN2UwMDU0ODNhMmM0NwotQXV0aG9yOiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgMTIgMTc6Mjk6NDggMjAwOCAtMDgwMAotCi0gICAgU2VjdGlvbiBuYW1lIHNob3VsZCBiZSAiLmRhdGEiLCBub3QgImRhdGEiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUcmVudCBQaWVwaG8gPHRwaWVwaG9AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgN2ZhNmEyZjNiNjY1NzlkZWE4YmMxYTkxNzc2NDZlMTE0MTczMWIxNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIERlYyA5IDAwOjM5OjA4IDIwMDggKzAxMDAKLQotICAgIE1BS0VBTEw6IEF1dG9tYXRpY2FsbHkgdXNlIHBhcmFsbGVsIGJ1aWxkcwotCi0gICAgQWRkIGxvZ2ljIHRvIHRoZSBNQUtFQUxMIHNjcmlwdCB0byBkZXRlcm1pbmUgdGhlIG51bWJlciBvZiBDUFUgY29yZXMKLSAgICBvbiB0aGUgc3lzdGVtLCBhbmQgcnVuIGEgcGFyYWxsZWwgYnVpbGQgaWYgdGhlcmUgaXMgbW9yZSB0aGFuIG9uZS4KLSAgICBVc3VhbGx5IHRoaXMgc2lnbmlmaWNhbnRybHkgYWNjZWxlcmF0ZXMgYnVpbGRzLgotCi0gICAgQWxsb3cgdG8gbWFudWFsbHkgYWRqdXN0IHRoZSBudW1iZXIgb2YgcGFyYWxsZWwgbWFrZSBqb2JzIGJ5IHVzaW5nCi0gICAgdGhlICJCVUlMRF9OQ1BVUyIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMjY4NDA1ZmE3YzQ0MTU2YzUxOTJhNzA3Nzk5MjBjNzA5MDZhZjhkNgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIERlYyA5IDAwOjI0OjMwIDIwMDggKzAxMDAKLQotICAgIHZ4d29ya3MuaDogRml4IGJ1aWxkIHByb2JsZW0gaW50cm9kdWNlZCBieSBjb21taXRzIDI5YTRjMjRkL2U5MDg0YjIzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTUzMTc2YTk0MTQxMjBjYTE3MzZmM2NjNDk1MTYyM2Q2ZTE0ZTZhZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIE5vdiAxMSAwNjowODo1OSAyMDA4ICswMTAwCi0KLSAgICBhdnIzMi9ib290bTogcmVtb3ZlIHVudXNlZCB2YXJpYWJsZSAncmV0JwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNDM0YzUxYTVlNjJmNjA4YTJhNzhlZDUzOThhYzQzYTFjNzdjYzE4MwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJV2VkIE5vdiAxMiAxMzowNjo0OCAyMDA4IC0wNjAwCi0KLSAgICBSZW1vdmUgdW5uZWVkZWQgQ09ORklHX1NIRUxMIHJlZmVyZW5jZXMKLQotICAgIE1ha2Ugc2hvdWxkIGJlIHVzaW5nIHRoZSBiYXNoIHNoZWxsIGJ5IGRlZmF1bHQgd2hpY2ggbWFrZXMKLSAgICBDT05GSUdfU0hFTEwgdW5uZWNlc3NhcnkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBjZjdhN2I5OTc5NGJhYzkzNjg5OTgxOWI5NTUzOWJlMWRiZDcxNzA4Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglXZWQgTm92IDEyIDEyOjMzOjIwIDIwMDggLTA2MDAKLQotICAgIFVzZSBiYXNoIGZvciBkZWZhdWx0IEdOVSBNYWtlIHNoZWxsIGFwcGxpY2F0aW9uCi0KLSAgICBTb21lIE1ha2Ugc2NyaXB0IGNvbW1hbmRzIHJlbHkgb24gYmFzaC1zcGVjaWZpYyBmZWF0dXJlcyBsaWtlIGJyYWNlCi0gICAgZXhwYW5zaW9uLCBzbyBkZWZhdWx0IHRvIGJhc2ggZm9yIHRoZSBTSEVMTCB2YXJpYWJsZSB3aXRoIGEgZmFsbGJhY2sKLSAgICB0byB0aGUgc3RhbmRhcmQgc2ggc2hlbGwKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCA0YjUzMDAxODc2NDkzNGFkNTY4OTE5NmU5YWE1NzE0YTZmNGQxYTZjCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIE5vdiAxMiAwOTo1MDo0NSAyMDA4ICswMTAwCi0KLSAgICBqZmZzMjogcmVuYW1lIGRldmljZXNfaW5pdCAoKSBpbiBjb21tb24vamZmczIuYwotCi0gICAgcmVuYW1lIGRldmljZXNfaW5pdCAoKSBpbiBjb21tb24vamZmczIuYyB0bwotICAgIGpmZnMyX2RldmljZXNfaW5pdCAoKSwgYmVjYXVzZSB0aGVyZSBpcyBhbHNvIGEKLSAgICBkZXZpY2VzX2luaXQgKCkgaW4gY29tbW9uL2RldmljZXMuYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgYWY1ZWI4NDdhMTBmMTAzNzU5MDAwMTM1NWQ4OGJhYjNmZTdiZTQ4YgotQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci1EYXRlOglNb24gTm92IDEwIDEyOjQ2OjIwIDIwMDggKzAwMDAKLQotICAgIFNQQVJDOiBGaXhlZCBjb21waWxlciBlcnJvciBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBjMTYwYTk1NDQ3NDMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWlsZCBlcnJvciBmb3IgdGhlIFNQQVJDIHBsYXRmb3JtLiBJdCB3YXMKLSAgICBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCBjMTYwYTk1NDQ3NDNlODBlODg4OWVkYjIyNzU1MzhlNzc2NGNlMzM0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotCi1jb21taXQgNGM2MDI1OTg5OWFhMDBmNTlkYjBkOTM2Yjg4MDdmOWEyNjQxMWMwZgotQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLURhdGU6CVN1biBOb3YgOSAxMjo1MDo1OSAyMDA4ICswMTAwCi0KLSAgICBtZ3N1dmQgYWRkIHRoZSBib2FyZC1zcGVjaWZpYyBwYXJ0IG9mIHRoZSBIRExDIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci0KLWNvbW1pdCA1MzRhNDM1OTY2NmFmNDhiZDY5YTM3NDNkOGE4YzJiZGIxZDNlYzcwCi1BdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgotRGF0ZToJU3VuIE5vdiA5IDEyOjQ1OjAzIDIwMDggKzAxMDAKLQotICAgIG1nY29nZSBhZGQgdGhlIGJvYXJkLXNwZWNpZmljIHBhcnQgb2YgdGhlIEhETEMgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLQotY29tbWl0IDEzNWY1NTM0NTM4YmI4ZWE0ZjM4YTcwMzBkYTEyMTg3ZDIyZWY3ZTAKLUF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci1EYXRlOglTdW4gTm92IDkgMTI6MzY6MTUgMjAwOCArMDEwMAotCi0gICAga2V5bWlsZSBhZGQgdGhlIGNvbW1vbiBwYXJ0cyBvZiB0aGUgSERMQyBkcml2ZXIKLQotICAgIFRoaXMgaW1wbGVtZW50cyB0aGUgSUNOIHByb3RvY29sIHVzZWQgYWNyb3NzIHRoZSBiYWNrcGxhbmUgYW5kIGlzCi0gICAgbmVlZGVkIGJ5IGFsbCB0aGUga2V5bWlsZSBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLQotY29tbWl0IDFjYjgyYTkyMDdhNTUwNTU3Mzk5ZWFiYzdmZTQ3ZjIxYmJkOWRkZjgKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBOb3YgNyAyMjo0NjoyMiAyMDA4ICswMTAwCi0KLSAgICBkcml2ZXJzL2Jpb3NfZW11bGF0b3I6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiY2RmMWQyY2Y2YjI0ZmI5MDVmZDdkYTgwZGE0YjNjNjVhNzk5NWI1Ci1BdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci1EYXRlOglUaHUgTm92IDYgMTQ6MDE6NTEgMjAwOCAtMDUwMAotCi0gICAgY29tbW9uL2NtZF9pZGUuYzogQ29ycmVjdGVkIGVuZGlhbiBvcmRlciBwcmludGluZyBmb3IgY29tcGFjdCBmbGFzaCBzZXJpYWwgbnVtYmVyLgotCi0gICAgQ29ycmVjdGVkIGVuZGlhbiBvcmRlciBwcmludGluZyBmb3IgY29tcGFjdCBmbGFzaCBzZXJpYWwgbnVtYmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLQotY29tbWl0IDE2YTI4ZWYyMTljMjc0MjNhMWVmNTAyZjE5MDcwYzRkMzc1MDc5YjgKLUF1dGhvcjogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDYgMTU6MDQ6MjMgMjAwOCArMDEwMAotCi0gICAgSU9NVVg6IEFkZCBjb25zb2xlIG11bHRpcGxleGluZyBzdXBwb3J0LgotCi0gICAgTW9kaWZpY2F0aW9ucyB0byBzdXBwb3J0IGNvbnNvbGUgbXVsdGlwbGV4aW5nLiAgVGhpcyBpcyBjb250cm9sbGVkIHVzaW5nCi0gICAgQ09ORklHX1NZU19DT05TT0xFX01VWCBpbiB0aGUgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlLgotCi0gICAgVGhpcyBhbGxvd3MgYSB1c2VyIHRvIHNwZWNpZnkgbXVsdGlwbGUgY29uc29sZSBkZXZpY2VzIGluIHRoZSBlbnZpcm9ubWVudAotICAgIHdpdGggYSBjb21tYW5kIGxpa2UgdGhpczogc2V0ZW52IHN0ZGluIHNlcmlhbCxuYy4gIEFzIGEgcmVzdWx0LCB0aGUgdXNlciBjYW4KLSAgICBlbnRlciB0ZXh0IG9uIGJvdGggdGhlIHNlcmlhbCBhbmQgbmV0Y29uc29sZSBpbnRlcmZhY2VzLgotCi0gICAgQWxsIGRldmljZXMgLSBzdGRpbiwgc3Rkb3V0IGFuZCBzdGRlcnIgLSBjYW4gYmUgc2V0IGluIHRoaXMgbWFubmVyLgotCi0gICAgMSkgY29tbW9uL2lvbXV4LmMgYW5kIGluY2x1ZGUvaW9tdXguaCBjb250YWluIHRoZSBlbnZpcm9ubWVudCBzZXR0aW5nCi0gICAgaW1wbGVtZW50YXRpb24uCi0gICAgMikgZG9jL1JFQURNRS5pb211eCBjb250YWlucyBhIHNvbWV3aGF0IG1vcmUgZGV0YWlsZWQgZGVzY3JpcHRpb24uCi0gICAgMykgVGhlIGltcGxlbWVudGF0aW9uIGluICgxKSBpcyBjYWxsZWQgZnJvbSBjb21tb24vY21kX252ZWRpdC5jIHRvCi0gICAgaGFuZGxlIHNldGVudiBhbmQgZnJvbSBjb21tb24vY29uc29sZS5jIHRvIGhhbmRsZSBpbml0aWFsaXphdGlvbiBvZgotICAgIGlucHV0L291dHB1dCBkZXZpY2VzIGF0IGJvb3QgdGltZS4KLSAgICA0KSBjb21tb24vY29uc29sZS5jIGFsc28gY29udGFpbnMgdGhlIGNvZGUgbmVlZGVkIHRvIHBvbGwgbXVsdGlwbGUgY29uc29sZQotICAgIGRldmljZXMgZm9yIGlucHV0IGFuZCBzZW5kIG91dHB1dCB0byBhbGwgZGV2aWNlcyByZWdpc3RlcmVkIGZvciBvdXRwdXQuCi0gICAgNSkgaW5jbHVkZS9jb21tb24uaCBpbmNsdWRlcyBpb211eC5oIGFuZCBjb21tb24vTWFrZWZpbGUgZ2VuZXJhdGVzIGlvbXV4Lm8KLSAgICB3aGVuIENPTkZJR19TWVNfQ09OU09MRV9NVVggaXMgc2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci0KLWNvbW1pdCA3NzRjZTcyMDI2Zjc0YWM5NjQxYmNiYmM1ODhiMjBmMmUxM2Y3YWI4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBOb3YgNCAxNjowMzo0NiAyMDA4IC0wNTAwCi0KLSAgICBzdHJpbmdzOiB1c2UgcHV0cygpIHJhdGhlciB0aGFuIHByaW50ZigpCi0KLSAgICBXaGVuIHJ1bm5pbmcgYHN0cmluZ3NgIG9uIHJlYWxseSBsb25nIHN0cmluZ3MsIHRoZSBzdGFjayB0ZW5kcyB0byBnZXQKLSAgICBzbWFzaGVkIGR1ZSB0byBwcmludGYoKS4gIFN3aXRjaCB0byBwdXRzKCkgaW5zdGVhZCBzaW5jZSB3ZSdyZSBvbmx5IHBhc3NpbmcKLSAgICB0aGUgZGF0YSB0aHJvdWdoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYjAzMTUwYjUyZTNjNDkxYTg2YTNjYzA5NDUyNzRmMGU4Zjk4NzJlNwotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotRGF0ZToJTW9uIE5vdiAzIDIyOjE2OjE4IDIwMDggKzAxMDAKLQotICAgIFVzZSBuZXcgQ09ORklHX1NZU19WWFdPUktTIHBhcmFtZXRlcnMgZm9yIE5ldHN0YWwgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotCi1jb21taXQgMjlhNGMyNGRlOTlkOGNiNGFjMzI5OTFjMDRjYWI4N2VkOTRjYTFmOQotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG1lbWJlci5mc2Yub3JnPgotRGF0ZToJTW9uIE5vdiAzIDIyOjE1OjM0IDIwMDggKzAxMDAKLQotICAgIGNtZF9lbGYuYzogQ2xlYW51cCBib290dnggYW5kIGhhbmRsZSBuZXcgQ09ORklHX1NZU19WWFdPUktTIHBhcmFtZXRlcnMKLQotICAgIC0gZml4IHNpemUgdG9vIHNtYWxsIGJ5IG9uZSBpbiBzcHJpbnRmCi0gICAgLSBjaGFuZ2VkIG9sZCAocHJlIDIwMDQpIGRldmljZSBuYW1lIGlibUVtYWMgdG8gZW1hYwotICAgIC0gYm9vdCBkZXZpY2UgbWF5IGJlIG92ZXJyaWRlbiBpbiBib2FyZCBjb25maWcKLSAgICAtIHNlcnZlcm5hbWUgbWF5IGJlIGRlZmluZWQgaW4gYm9hcmQgY29uZmlnCi0gICAgLSBhZGRpdGlvbmFsIHBhcmFtZXRlcnMgbWF5IGJlIGRlZmluZWQgaW4gYm9hcmQgY29uZmlnCi0gICAgLSBmaXhlZCBzb21lIGxpbmUgd3JhcHBpbmdzCi0gICAgLSByZXBsYWNlZAlyZWR1bmRhbnQgTUFYIGRlZmluZSBieSBtYXgKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci0KLWNvbW1pdCBlOTA4NGIyM2QxNjEwMmY0NGFjZTI0Mzc5YTFjMGMzNTI0OTdlZjgwCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci1EYXRlOglNb24gTm92IDMgMjI6MTQ6MzYgMjAwOCArMDEwMAotCi0gICAgQWRkIHZ4d29ya3MuaCB0byBoYW5kbGUgQ09ORklHX1NZU19WWFdPUktTIHBhcmFtZXRlcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci0KLWNvbW1pdCAwYjJmNGVjYWQ0NzNkNzg1OTU5Yzc5NzZmMjBkMmEwMGJkMGVlMDFmCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci1EYXRlOglNb24gTm92IDMgMjI6MTM6NDcgMjAwOCArMDEwMAotCi0gICAgUkVBRE1FOiBEb2N1bWVudCBDT05GSUdfU1lTIHBhcmFtZXRlcnMgZm9yIHZ4d29ya3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbWVtYmVyLmZzZi5vcmc+Ci0KLWNvbW1pdCBhY2U1MTQ4MzdjYWM2NTZlMjljMzdhMTk1NjljYjhlYTgzMDcxMTI2Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglGcmkgT2N0IDMxIDExOjEyOjM4IDIwMDggLTA1MDAKLQotICAgIGxjZDogTGV0IHRoZSBib2FyZCBjb2RlIHNob3cgYm9hcmQtc3BlY2lmaWMgaW5mbyBjbGVhbnVwCi0KLSAgICByZW1vdmUgdW5uZWVkZWQgdmVyc2lvbi5oIGZyb20gbGNkLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDU2MTg1OGVlN2QwMjc0YzNlODlkYzk4ZDRkMDY5OGNiNmZjZjZmZDkKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBOb3YgMyAwOTozMDo1OSAyMDA4IC0wNjAwCi0KLSAgICBVcGRhdGUgVS1Cb290J3MgYnVpbGQgdGltZXN0YW1wIG9uIGV2ZXJ5IGNvbXBpbGUKLQotICAgIFVzZSB0aGUgR05VICdkYXRlJyBjb21tYW5kIHRvIGF1dG8tZ2VuZXJhdGUgYSBuZXcgVS1Cb290Ci0gICAgdGltZXN0YW1wIG9uIGV2ZXJ5IGNvbXBpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgODNhZDE3OWUyZjBmNjI1Yjg4YWRiOGVmNTY5NjcwOWU0NmZiOTA3NwotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVRodSBEZWMgNCAyMjoyNTo1NyAyMDA4ICswMTAwCi0KLSAgICBSZW1vdmUgcmVkdW5kYW50IGFybXY0IGZsYWcgZnJvbSBhcm05MjZlanMgY29tcGlsZSBmbGFncwotCi0gICAgQ3VycmVudGx5IHRoZSBhcm05MjZlanMgdHJlZSBoYXMgdGhlIGFybXY0IG9wdGlvbiBzZXQgZHVyaW5nIGNvbXBpbGF0aW9uLgotICAgIFRoaXMgZmxhZyBkb2VzIG5vdCBiZWxvbmcgaGVyZSBiZWNhdXNlIGEgYXJtOTI2IENQVSBpcyBhbHdheXMgYSBhcm12NSBDUFUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDg5YTdhODdmMDg0YzY1N2Y4ZTMyYjUxM2E3N2I1MGVjYTA3ZTE3ZWMKLUF1dGhvcjogTmljb2xhcyBGZXJyZSA8bmljb2xhcy5mZXJyZUBhdG1lbC5jb20+Ci1EYXRlOglTYXQgRGVjIDYgMTM6MTE6MTQgMjAwOCArMDEwMAotCi0gICAgYXQ5MTogQ2hvb3NlIGVudmlyb25tZW50IHZhcmlhYmxlcyBsb2NhdGlvbiB3aXRoaW4gbWFrZSBjb25maWcgdGFyZ2V0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHBvc3NpYmxpdHkgdG8gY2hvb3NlIHRoZSBtZWRpYSB3aGVyZSB0aGUgZW52aXJvbm1lbnQgd2lsbAotICAgIGJlIGxvY2F0ZWQuIFRoaXMgYWxsb3cgdG8gY2hvb3NlIHRoaXMgZnVuZGFtZW50YWwgY29uZmlndXJhdGlvbiB3aXRob3V0IGVkaXRpbmcKLSAgICBjb25maWcgZmlsZXMuCi0KLSAgICBEb2N1bWVudGF0aW9uIGZpbGUgYWRkZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNvbGFzIEZlcnJlIDxuaWNvbGFzLmZlcnJlQGF0bWVsLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDE0NTBjNGE2NjgyMzc4NTY3MDMwNDE0YTlmMTE5OGMzOWI3NzMwYzcKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJTW9uIE5vdiAzIDE1OjMwOjM0IDIwMDggKzAxMDAKLQotICAgIGx3bW9uLCB0cW04eHg6IEZpeCBidWlsZCBlcnJvcnMKLQotICAgIENvbW1pdCA2YjU5ZTAzZTAyMzdhNDBhMjMwNWVhMzg1ZGVmZGZkOTIwMDA5NzhiCi0gICAgbGNkOiBMZXQgdGhlIGJvYXJkIGNvZGUgc2hvdyBib2FyZC1zcGVjaWZpYyBpbmZvCi0KLSAgICBpbnRyb2R1Y2VkIHNvbWUgYnVncyB3aGljaCBwcmV2ZW50IFUtQm9vdCBidWlsZGluZwotICAgIGZvciBsd21vbiBib2FyZCBpZiBDT05GSUdfTENEX0lORk9fQkVMT1dfTE9HTyB3aWxsCi0gICAgYmUgZGVmaW5lZCBpbiB0aGUgYm9hcmQgY29uZmlndXJhdGlvbi4KLQotICAgIEFsc28gIkxDRCBlbmFibGVkIiBidWlsZGluZyBmb3IgVFFNODIzTCBkb2Vzbid0IHdvcmsKLSAgICBzaW5jZSB0aGlzIGNvbW1pdC4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYWJvdmUtbWVudGlvbmVkIGlzc3Vlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGJmYTBhZjZiMjJmZjI1YjA3MTlhODkxMGY5YjZkMWY5NzVhYTZmYjAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE5vdiAyIDAxOjE4OjE4IDIwMDggLTA0MDAKLQotICAgIGlnbm9yZSAuZ2RiX2hpc3RvcnkgZmlsZXMKLQotICAgIFdoZW4gdXNpbmcgZ2RiLCBoaXN0b3J5IGZpbGVzIHdpbGwgb2Z0ZW4gZ2V0IGdlbmVyYXRlZC4gIFNvIGlnbm9yZSB0aGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzhhYTdkZmMxOGY3Y2M5MGQwYWVhNmM3YmVjYmI2N2RmYzViYmE0YgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE9jdCAzMSAxMjoyNjo1NSAyMDA4ICswMTAwCi0KLSAgICBGUEdBOiBtb3ZlIGZwZ2EgZHJpdmVycyB0byBkcml2ZXJzL2ZwZ2EKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2YTg2YmI2YzI1Mzc2ZjAzNTg0NzgyMTlmYTI4ZDdjODRkZDAxZWQwCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gRGVjIDEgMTY6Mjk6MzggMjAwOCAtMDYwMAotCi0gICAgbmV0OiBGaXggVGZ0cFN0YXJ0KCkgaXA6ZmlsZW5hbWUgYnVnCi0KLSAgICBUaGUgVGZ0cFN0YXJ0KCkgZnVuY3Rpb24gbW9kaWZpZXMgdGhlICdCb290RmlsZScKLSAgICBzdHJpbmcgd2hlbiAnQm9vdEZpbGUnIGNvbnRhaW5zIGJvdGggYW4gSVAgYWRkcmVzcwotICAgIGFuZCBmaWxlbmFtZSAoZWcgMS4yLjMuNDovcGF0aC9maWxlKS4gVGhpcyBjYXVzZXMKLSAgICBzdWJzZXF1ZW50IGNhbGxzIHRvIFRmdHBTdGFydCB0byBpbmNvcnJlY3RseSBwYXJzZQotICAgIHRoZSBURlRQIGZpbGVuYW1lIGFuZCBzZXJ2ZXIgSVAgYWRkcmVzcyB0byB1c2UuCi0gICAgRm9yIGV4YW1wbGU6Ci0KLSAgICA9PiB0ZnRwIDB4MTAwMDAwIDEwLjUyLjAuNjI6L2hvbWUvcHR5c2VyL25vbl9leGlzdGFudAotICAgIFNwZWVkOiAxMDAsIGhhbGYgZHVwbGV4Ci0gICAgVXNpbmcgZVRTRUMxIGRldmljZQotICAgIFRGVFAgZnJvbSBzZXJ2ZXIgMTAuNTIuMC42Mjsgb3VyIElQIGFkZHJlc3MgaXMgMTAuNTIuMjUzLjc5Ci0JCSAgICAgXl5eXl5eXl5eXiBDT1JSRUNUCi0gICAgRmlsZW5hbWUgJy9ob21lL3B0eXNlci9ub25fZXhpc3RhbnQnLgotCSAgICAgIF5eXl5eXl5eXl5eXl5eXl5eXl5eXl5eXl4gQ09SUkVDVAotICAgIExvYWQgYWRkcmVzczogMHgxMDAwMDAKLSAgICBMb2FkaW5nOiAqCi0gICAgVEZUUCBlcnJvcjogJ0ZpbGUgbm90IGZvdW5kJyAoMSkKLSAgICBTdGFydGluZyBhZ2FpbgotCi0gICAgZVRTRUMyOiBObyBsaW5rLgotICAgIFNwZWVkOiAxMDAsIGhhbGYgZHVwbGV4Ci0gICAgVXNpbmcgZVRTRUMxIGRldmljZQotICAgIFRGVFAgZnJvbSBzZXJ2ZXIgMTAuNTIuMC4zMzsgb3VyIElQIGFkZHJlc3MgaXMgMTAuNTIuMjUzLjc5Ci0JCSAgICAgXl5eXl5eXl5eXiBXUk9ORwotICAgIEZpbGVuYW1lICcxMC41Mi4wLjYyJy4KLQkgICAgICBeXl5eXl5eXl5eIFdST05HCi0gICAgTG9hZCBhZGRyZXNzOiAweDEwMDAwMAotICAgIExvYWRpbmc6ICoKLSAgICBURlRQIGVycm9yOiAnRmlsZSBub3QgZm91bmQnICgxKQotICAgIFN0YXJ0aW5nIGFnYWluCi0KLSAgICBUZnRwU3RhcnQoKSB3YXMgbW9kaWZpZWQgdG8gbm90IG1vZGlmeSB0aGUgJ0Jvb3RGaWxlJyBzdHJpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkMzJjNWJlNTBiZjA2MDBiZmRjNTQyMjNlZjM0MWVlOWM2M2RiNDQ1Ci1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglNb24gRGVjIDEgMTY6MjY6MjEgMjAwOCAtMDYwMAotCi0gICAgbmV0OiBBZGQgYWRkaXRpb25hbCBJUCBmcmFnbWVudGF0aW9uIGNoZWNrCi0KLSAgICBJZ25vcmUgSVAgcGFja2V0cyB3aGljaCBoYXZlIHRoZSAibW9yZSBmcmFnbWVudHMiIGZsYWcgYml0Ci0gICAgc2V0LiAgVGhpcyBmbGFnIGluZGljYXRlcyB0aGUgSVAgcGFja2V0IGlzIGZyYWdtZW50ZWQgYW5kCi0gICAgbXVzdCBiZSBpZ25vcmVkIGJ5IFUtQm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGUwYzA3Yjg2OGNhYjQwNWFiNGI1MzM1YTAyNDc4OTliZmM1ZWEwYjYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBEZWMgMSAxNjoyNjoyMCAyMDA4IC0wNjAwCi0KLSAgICBuZXQ6IERlZmluZSBJUCBmbGFnIGZpZWxkIHZhbHVlcwotCi0gICAgVGhlc2UgZGVmaW5lcyB3ZXJlIHB1bGxlZCBmcm9tIHRoZSAiQWRkIHNpbXBsZQotICAgIElQL1VEUCBmcmFnbWVudGF0aW9uIHN1cHBvcnQiIHBhdGNoIGZyb20gRnJhbmsKLSAgICBIYXZlcmthbXAgPGhhdmVyQHZuZXQuaWJtLmNvbT4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyM2FmYWJhNjVlYzUyMDY3NTdlNTg5ZWYzMzRhOGIzODE2OGMwNDVmCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVR1ZSBEZWMgMiAxMDozMTowNCAyMDA4ICswMTAwCi0KLSAgICBuZXQ6IHRzZWM6IEZpeCBNYXJ2ZWxsIDg4RTExMjFSIHBoeSBpbml0Ci0KLSAgICBUaGlzIHBhdGNoIHRyaWVzIHRvIGVuc3VyZSB0aGF0IHBoeSBpbnRlcnJ1cHQgcGluCi0gICAgd29uJ3QgYmUgYXNzZXJ0ZWQgYWZ0ZXIgYm9vdGluZy4gV2UgZXhwZXJpZW5jZWQKLSAgICBmb2xsb3dpbmcgaXNzdWVzIHdpdGggY3VycmVudCA4OEUxMTIxUiBwaHkgaW5pdDoKLQotICAgIE1hcnZlbGwgODhFMTEyMVIgcGh5IGNhbiBiZSBoYXJkd2FyZS1jb25maWd1cmVkCi0gICAgdG8gc2hhcmUgTURDL01ESU8gYW5kIGludGVycnVwdCBwaW5zIGZvciBib3RoIHBvcnRzCi0gICAgUDAgYW5kIFAxIChlLmcuIGFzIGNvbmZpZ3VyZWQgb24gc29jcmF0ZXMgYm9hcmQpLgotICAgIFBvcnQgMCBpbnRlcnJ1cHQgcGluIHdpbGwgYmUgc2hhcmVkIGJ5IGJvdGggcG9ydHMKLSAgICBpbiBzdWNoIGNvbmZpZ3VyYXRpb24uIEFmdGVyIGJvb3RpbmcgTGludXggYW5kCi0gICAgY29uZmlndXJpbmcgZXRoMCBpbnRlcmZhY2UsIHBvcnQgMCBwaHkgaW50ZXJydXB0cwotICAgIGFyZSBlbmFibGVkLiBBZnRlciByZWJvb3Rpbmcgd2l0aG91dCBwcm9wZXIgZXRoMAotICAgIGludGVyZmFjZSBzaHV0ZG93biBwb3J0IDAgcGh5IGludGVycnVwdHMgcmVtYWluCi0gICAgZW5hYmxlZCBzbyBhbnkgY2hhbmdlIG9uIHBvcnQgMCAobGluayBzdGF0dXMsIGV0Yy4pCi0gICAgY2F1c2UgYXNzZXJ0aW9uIG9mIHRoZSBpbnRlcnJ1cHQuIE5vdyBib290aW5nIExpbnV4Ci0gICAgYW5kIGNvbmZpZ3VyaW5nIGV0aDEgaW50ZXJmYWNlIHdpbGwgY2F1c2UgcGVybWFuZW50Ci0gICAgcGh5IGludGVycnVwdCBzdG9ybSBhcyB0aGUgcmVnaXN0ZXJlZCBwaHkgMSBpbnRlcnJ1cHQKLSAgICBoYW5kbGVyIGRvZXNuJ3QgYWNrbm93bGVkZ2UgcGh5IDAgaW50ZXJydXB0cy4gVGhpcwotICAgIG9mIGNvdXJzZSBzaG91bGQgYmUgZml4ZWQgaW4gTGludXggZHJpdmVyIHRvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyZTQ5NzBkODEwOWQ2OTBhZGNmNjE1ZDllM2NhYzdiNWIyZThlYWVkCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgRGVjIDIgMTI6NTk6NTEgMjAwOCAtMDYwMAotCi0gICAgbmV0OiBGaXggZG93bmxvYWQgY29tbWFuZCBwYXJzaW5nCi0KLSAgICBXaGVuIENPTkZJR19TWVNfSFVTSF9QQVJTRVIgaXMgZGVmaW5lZCBuZXR3b3JrIGRvd25sb2FkCi0gICAgY29tbWFuZHMgd2l0aCAxIGFyZ3VtZW50IGluIHRoZSBmb3JtYXQgJ3RmdHAgIi9wYXRoL2ZpbGUiJwotICAgIGRvIG5vdCB3b3JrIGFzIGV4cGVjdGVkLiBUaGUgaHVzaCBjb21tYW5kIHBhcnNlciBzdHJpcHMKLSAgICB0aGUgcXVvdGVzIGZyb20gIi9wYXRoL2ZpbGUiIHdoaWNoIGNhdXNlcyB0aGUgbmV0d29yawotICAgIGNvbW1hbmRzIHRvIGludGVycHJldCAiL3BhdGgvZmlsZSIgYXMgYW4gYWRkcmVzcwotICAgIGluc3RlYWQgb2YgdGhlIGludGVuZGVkIGZpbGVuYW1lLgotCi0gICAgVGhlIHByZXZpb3VzIGNoZWNrIGZvciBhIGxlYWRpbmcgcXVvdGUgaW4gbmV0Ym9vdF9jb21tb24oKQotICAgIHdhcyByZXBsYWNlZCB3aXRoIGEgY2hlY2sgd2hpY2ggZW5zdXJlcyBvbmx5IHZhbGlkCi0gICAgbnVtYmVycyBhcmUgdHJlYXRlZCBhcyBhZGRyZXNzZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAzYzJjMmY0Mjc5MDUwNDBjMTUxM2QwYzUxZDYzNzY4OWNiYTQ4MzQ2Ci1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJVGh1IE5vdiAyNyAyMjozMDoyNyAyMDA4ICswMTAwCi0KLSAgICBSZW1vdmUgbm9uLWFzY2lpIGNoYXJhY3RlcnMgZnJvbSBmYXQgY29kZQotCi0gICAgVGhpcyBjb2RlIGNvbnRhaW5zIHNvbWUgbm9uLWFzY2lpIGNoYXJhY3RlcnMgaW4gY29tbWVudCBsaW5lcyBhbmQgY29kZS4KLSAgICBNb3N0IGVkaXRvcnMgZG8gbm90IGRpc3BsYXkgdGhvc2UgY2hhcmFjdGVycyBwcm9wZXJseSBhbmQgZWRpdGluZyB0aG9zZQotICAgIGZpbGVzIHJlc3VsdHMgYWx3YXlzIGluIGRpZmZzIGF0IHRoZXNlIHBsYWNlcyB3aGljaCBhcmUgdXN1YWxseSBub3QgcmVxdWlyZWQKLSAgICB0byBiZSBjaGFuZ2VkIGF0IGFsbC4gVGhpcyBpcyBlcnJvciBwcm9uZS4KLQotICAgIFNvLCByZW1vdmUgdGhvc2Ugd2VpcmQgY2hhcmFjdGVycyBhbmQgcmVwbGFjZSB0aGVtIGJ5IG5vcm1hbCBDLXN0eWxlCi0gICAgZXF1aXZhbGVudHMgZm9yIHdoaWNoIHRoZSBwcm9wZXIgZGVmaW5lcyB3ZXJlIGFscmVhZHkgaW4gdGhlIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZGM4ODllODY1MzU2NDk3ZDNlNDk1NTcwMTE4YzIyNDVlYmNlMjYzMQotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE5vdiAyOCAyMDoxNjo1OCAyMDA4ICswODAwCi0KLSAgICA4NXh4OiBmaXggdGhlIHdyb25nIEREUiBzZXR0aW5ncyBmb3IgTVBDODU3MkRTCi0KLSAgICBUaGUgZGVmYXVsdCBERFIgZnJlcSBpcyA0MDBNSHogb3IgODAwTSBkYXRhIHJhdGUsCi0gICAgdGhlIG9sZCBzZXR0aW5ncyBpcyBwdXJlIHdyb25nIGZvciB0aGUgZGVmYXVsdCBjYXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWRmNTk1MzNmNzdkZTI4MjliNGI2NmU1Yjc2MjBlMDRlZGFhMzkxYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIE5vdiAyNCAxMDoyOToyNiAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBpbml0IGdkIGFzIGVhcmx5IGFzIHBvc3NpYmxlCi0KLSAgICBNb3ZlZCB1cCB0aGUgaW5pdGlhbGl6YXRpb24gb2YgR0Qgc28gQyBjb2RlIGxpa2Ugc2V0X3RsYigpIGNhbiB1c2UKLSAgICBnZC0+ZmxhZ3MgdG8gZGV0ZXJtaW5lIGlmIHdlJ3ZlIHJlbG9jYXRlZCBvciBub3QgaW4gdGhlIGZ1dHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFlZDQ2MWFmODEwMTJhMzk4YTIwNWU5YmU2N2FiMzc2Njc0OTE4MzgKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBOb3YgMjQgMTA6Mjk6MjUgMjAwOCAtMDYwMAotCi0gICAgODV4eDogRml4IHJlbG9jYXRpb24gb2YgQ0NTUkJBUgotCi0gICAgSWYgdGhlIHZpcnR1YWwgYWRkcmVzcyBmb3IgQ0NTUkJBUiBpcyB0aGUgc2FtZSBhZnRlciByZWxvY2F0aW9uIGJ1dAotICAgIHRoZSBwaHlzaWNhbCBhZGRyZXNzIGlzIGNoYW5naW5nIHdlJ2QgZW5kIHVwIGhhdmluZyB0d28gVExCIGVudHJpZXMgd2l0aAotICAgIHRoZSBzYW1lIFZBLiAgSW5zdGVhZCB3ZSBuZXcgdXMgdGhlIG5ldyBDQ1NSQkFSIHZpcnQgYWRkcmVzcyArIDRrIGFzIGEKLSAgICB0ZW1wIHZpcnQgYWRkcmVzcyB0byBhY2Nlc3MgdGhlIG9sZCBDQ1NSQkFSIHRvIHJlbG9jYXRlIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZWExNTRhMTc4MTEzNWQ4MjJlZWRlZTc1NjdjYzE1NjA4OWVhZTkzYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIE5vdiAyNCAxMDoyNToxNCAyMDA4IC0wNjAwCi0KLSAgICBGU0w6IE1vdmVkIEJSX1BIWVNfQUREUiBmb3IgbG9jYWxidXMgdG8gY29tbW9uIGhlYWRlcgotCi0gICAgVGhlIEJSX1BIWVNfQUREUiBtYWNybyBpcyB1c2VmdWwgb24gYWxsIG1hY2hpbmVzIHRoYXQgaGF2ZSBsb2NhbCBidXMKLSAgICB3aGljaCBpcyBwcmV0dHkgbXVjaCBhbGwgODN4eC84NXh4Lzg2eHggY2hpcHMuCi0KLSAgICBBZGRpdGlvbmFsbHkgbW9zdCA4NXh4ICYgODZ4eCB3aWxsIG5lZWQgaXQgaWYgdGhleSB3YW50IHRvIHN1cHBvcnQKLSAgICAzNi1iaXQgcGh5c2ljYWwgYWRkcmVzc2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTQyN2NjZGUwMzU1YTJlYmY0NzQ1NGU4ZTFiZTU5ZjViOTg2NGUwOAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIERlYyAxIDEzOjQ3OjEyIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IEFkZCBQT1JERVZTUl9QQ0kxIGRlZmluZQotCi0gICAgQWRkIGRlZmluZSB1c2VkIHRvIGRldGVybWluZSBpZiBQQ0kxIGludGVyZmFjZSBpcyBpbiBQQ0kgb3IgUENJWCBtb2RlLgotCi0gICAgQ29udmVydCB1c2VycyBvZiB0aGUgb2xkIFBPUkRFVlNSX1BDSSBjb25zdGFudCB0byB1c2UgTVBDODV4eF9QT1JERVZTUl9QQ0kxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDM1ZGIxYzZkMzRiNTdhZTE1ZTk5Y2YwM2M4ZThmOGE2MTQ4ZDc0ZjMKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDIxIDE5OjI0OjIyIDIwMDggLTA2MDAKLQotICAgIGRyaXZlcnMvZnNsX3BjaV9pbml0OiBGaXggaW5ib3VuZCB3aW5kb3cgbWFwcGluZyBidWcKLQotICAgIFRoZSBjdXJyZW50IGNvZGUgd2lsbCBjYXVzZSB0aGUgY3JlYXRpb24gb2YgYSA0R0Igd2luZG93Ci0gICAgc3RhcnRpbmcgYXQgMCBpZiB3ZSBoYXZlIG1vcmUgdGhhbiA0R0Igb2YgUkFNIGluc3RhbGxlZCwKLSAgICB3aGljaCBvdmVybGFwcyB3aXRoIFBDSV9NRU0gc3BhY2UgYW5kIGNhdXNlcyBwY2lfYnVzX3RvX3BoeXMoKQotICAgIHRvIHJldHVybiBlcnJvbmVvdXMgaW5mb3JtYXRpb24uIExpbWl0IHRoZSBzaXplIHRvIDRHQiAtIDE7Ci0gICAgd2hpY2ggY2F1c2VzIHRoZSBjb2RlIHRvIGNyZWF0ZSBvbmUgMkdCIGFuZCBvbmUgMUdCIHdpbmRvdwotICAgIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3liQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWExMDVhMzMzZGFiNmEyM2U5MmQ3NjNjZTc2ZDZmMzFkNTdmNDVkZgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyMCAxNTozNjo0OCAyMDA4IC0wNjAwCi0KLSAgICBSZW1vdmVkIHVudXNlZCBDT05GSUdfTDFfSU5JVF9SQU0gc3ltYm9sLgotCi0gICAgUHJldmVudCBmdXJ0aGVyIHZpcmFsIHByb3BvZ2F0aW9uIG9mIHRoZSB1bnVzZWQKLSAgICBzeW1ib2wgQ09ORklHX0wxX0lOSVRfUkFNIGJ5IGp1c3QgcmVtb3ZpbmcgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3MDA4ZDI2YTQwYTc2ZjkwY2FlNTgyNGM4MTJjZmVkNDQ5ZmI5N2I4Ci1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgT2N0IDI5IDA5OjIxOjQ0IDIwMDggLTA1MDAKLQotICAgIGZzbCBkZHIgc2tpcCBpbnRlcmxlYXZpbmcgaWYgbm90IHN1cHBvcnRlZC4KLQotICAgIFJlbW92ZWQgd2hpbGUoMSkgaGFuZyBpZiBtZW1jdGxfaW50bHZfY3RsIGlzIHNldCB3cm9uZy4KLSAgICBSZW1vdmUgZW1iZWRkZWQgdGFicyBmcm9tIHN0cmluZ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkZDMzMmUxOGQwODJkZTc1ZWNhM2ZjMmM3Yzc3OGY1ZDQ1NzFhMDk2Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMTMgMTg6MDg6NTcgMjAwOCArMDEwMAotCi0gICAgODV4eDogc29jcmF0ZXM6IGZpeCBERFIgU0RSQU0gdGxiIGVudHJ5IGNvbmZpZ3VyYXRpb24KLQotICAgIHNpbmNlIGNvbW1pdCBiZTBiZDgyMzRiOTc3N2VjZDYzYzRjNjg2ZjcyYWYwNzBkODg2NTE3Ci0gICAgdGxiIGVudHJ5IGZvciBzb2NyYXRlcyBERFIgU0RSQU0gd2lsbCBiZSByZWNvbmZpZ3VyZWQKLSAgICBieSBzZXR1cF9kZHJfdGxicygpIGZyb20gaW5pdGRyYW0oKSBjYXVzaW5nIGFuCi0gICAgaW5jb25zaXN0ZW5jeSB3aXRoIHByZXZpb3VzbHkgY29uZmlndXJlZCBERFIgU0RSQU0gdGxiCi0gICAgZW50cnkgZnJvbSB0bGJfdGFibGU6Ci0KLSAgICBzb2NyYXRlcz5sMmNhbSA3IDkKLSAgICBJRFggIFBJRAkgIEVQTiAgU0laRSBWIFRTCSAgIFJQTiBVMC1VMyBXSU1HRSBVVVVTU1MKLSAgICAgIDcgOiAwMCAwMDAwMDAwMCAyNTZNQiBWICAwIC0+IDBfMDAwMDAwMDAJMDAwMCAtSS1HLSAtLS1SV1gKLSAgICAgIDggOiAwMCAwMDAwMDAwMCAyNTZNQiBWICAwIC0+IDBfMDAwMDAwMDAJMDAwMCAtLS0tLSAtLS1SV1gKLSAgICAgIDkgOiAwMCAxMDAwMDAwMCAyNTZNQiBWICAwIC0+IDBfMTAwMDAwMDAJMDAwMCAtLS0tLSAtLS1SV1gKLQotICAgIFRoaXMgcGF0Y2ggbWFrZXMgdGhlIHByZXNlbmNlIG9mIHRoZSBERFIgU0RSQU0gdGxiIGVudHJ5IGluCi0gICAgdGhlIHRsYl90YWJsZSBkZXBlbmRlbnQgb24gQ09ORklHX1NQRF9FRVBST00gdG8gYXZvaWQgdGhpcwotICAgIGluY29uc2lzdGVuY3kuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGEyY2Q1MGVkNmVmMGFjNmIxMjdiM2Q2ZGI3NTY5NzlhODMzNjcxOGQKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBOb3YgMTEgMTA6MTc6MTAgMjAwOCAtMDYwMAotCi0gICAgODV4eDogQWRkIENQVSAyIGVycmF0YSB3b3JrYXJvdW5kIHRvIGFsbCA4NTQ4IGJvYXJkcwotCi0gICAgQWxsIG1wYzg1NDgtYmFzZWQgYm9hcmRzIHNob3VsZCBpbXBsZW1lbnQgdGhlIHN1Z2dlc3RlZCB3b3JrYXJvdW5kCi0gICAgdG8gQ1BVIDIgZXJyYXRhLiBXaXRob3V0IHRoZSB3b3JrYXJvdW5kLCBpdHMgcG9zc2libGUgZm9yIHRoZQotICAgIDg1NDgncyBjb3JlIHRvIGhhbmcgd2hpbGUgZXhlY3V0aW5nIGEgbXN5bmMgb3IgbWJhciAwIGluc3RydWN0aW9uCi0gICAgYW5kIGEgc25vb3BhYmxlIHRyYW5zYWN0aW9uIGZyb20gYW4gSS9PIG1hc3RlciB0YWdnZWQgdG8gbWFrZQotICAgIHF1aWNrIGZvcndhcmQgcHJvZ3Jlc3MgaXMgcHJlc2VudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU1N2YwZmExMzMzY2RmM2NhMzYxMTBhYWMyOTAwNzEyYTVmODI5NzYKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjggMTc6NTM6NDUgMjAwOCArMDgwMAotCi0gICAgODV4eDogdGhlIEREUiB0bGIgaXMgbWlzc2VkIGZvciB0aGUgIUNPTkZJR19TUERfRUVQUk9NIGNhc2UKLQotICAgIHdlIG5lZWQgVExCIGVudHJ5IGZvciBERFIgYXQgIVNQRCBjYXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWIwYWQxYjFjN2ExNWZmNjc0OTc4NzA1YzdjNTIyNjQ5NzhkYzVkOAotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAyOCAxNzo1MzozOCAyMDA4ICswODAwCi0KLSAgICA4NXh4OiByZW1vdmUgdGhlIHVudXNlZCBkZHJfZW5hYmxlX2VjYyBpbiB0aGUgYm9hcmQgZmlsZQotCi0gICAgVGhlIEREUiBjb250cm9sbGVyIG9mIDg1NDgvODU0NC84NTY4Lzg1NzIvODUzNiBwcm9jZXNzb3JzCi0gICAgaGF2ZSB0aGUgRUNDIGRhdGEgaW5pdCBmZWF0dXJlLCBhbmQgdGhlIG5ldyBERFIgY29kZSBpcwotICAgIHVzaW5nIHRoZSBmZWF0dXJlLCBhbmQgd2UgZG9uJ3QgbmVlZCB0aGUgd2F5IHdpdGggRE1BIHRvCi0gICAgaW5pdCBtZW1vcnkgYW55IG1vcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0YTEyOWE1N2Q5MjNmN2MxNWFhMWY1NjcwMjhhODBhMzJkNjZhMTAwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTm92IDMwIDE5OjM2OjUzIDIwMDggKzAxMDAKLQotICAgIGF0OTFybTkyMDBkazogRml4IHR5cG8KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlZDNiMThlMDVjOWE4ZmZhNWZiNjQzZGE5YmNlYzc0NTJlNWQ1ZTAxCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTm92IDMwIDE5OjM2OjUwIDIwMDggKzAxMDAKLQotICAgIEFUOTE6IHJlbW92ZSBub24gc3VwcG9ydGVkIGJvYXJkIEFUOTFSTTkyMDBERiBtYWNybwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGJkODc2NzcyZWUwNDA5NWU1ZGQ5NDNkOTc1MTVhMWYxNGJhZDRiMWMKLUF1dGhvcjogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KLURhdGU6CVR1ZSBEZWMgMiAxNzoyNzo1NCAyMDA4ICswMTAwCi0KLSAgICBtdGQvZGF0YWZsYXNoLmM6IGZpeCBhIHByb2JsZW0gd2l0aCB0aGUgbGFzdCBwYXJ0aXRpb24KLQotICAgIFRoaXMgcGF0Y2ggZml4IHRoZSBwcm9ibGVtIHRoYXQgb25seSB0aGUgW05CX0RBVEFGTEFTSF9BUkVBIC0gMV0gZGF0YWZsYXNoCi0gICAgcGFydGl0aW9uIGNhbiBiZSBkZWZpbmVkIHRvIHVzZSB0aGUgYXJlYSB0byB0aGUgZW5kIG9mIGRhdGFmbGFzaCBzaXplLgotICAgIE5vdyBpdCBpcyBwb3NzaWJsZSB0byBoYXZlIG9ubHkgb25lIGRhdGFmbGFzaCBwYXJ0aXRpb24gZnJvbSAwIHRvIHRoZSBlbmQKLSAgICBvZiBvZiBkYXRhZmxhc2ggc2l6ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+Ci0KLWNvbW1pdCAwM2Y3OTc3OTNiMTI0ZGNjYWFlMTQ1Yjk3N2QxNWQ2Y2I5ZTc0NTA0Ci1BdXRob3I6IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+Ci1EYXRlOglUdWUgRGVjIDIgMTc6MjA6MTcgMjAwOCArMDEwMAotCi0gICAgZml4IHNvbWUgY29kaW5nIHN0eWxlIHZpb2xhdGlvbnMuCi0KLSAgICBUaGlzIHBhdGNoIGZpeCBzb21lIGNvZGluZyBzdHlsZSB2aW9sYXRpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KLQotY29tbWl0IDVlNDZiMWU1NDExMmY0YjdmZDUxODU2NjVlNTcxNTEwMTMyYzEyYTcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE5vdiAyNyAxNDoxMTozNyAyMDA4ICswMTAwCi0KLSAgICBPbmVOQU5EOiBBZGQgbWlzc2luZyBtdGQgaW5mbyBzdHJ1Y3QgYmVmb3JlIGNhbGxpbmcgb25lbmFuZF9lcmFzZSgpCi0KLSAgICBXaXRob3V0IHRoaXMgcGF0Y2ggInNhdmVlbnYiIGNyYXNoZXMgd2hlbiBNVEQgcGFydGl0aW9ucyBhcmUgZW5hYmxlZCAoZS5nLgotICAgIGZvciB1c2UgaW4gVUJJKSB2aWEgQ09ORklHX01URF9QQVJUSVRJT05TLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjkzODJkNDA2NGZiYWZmNWRhYWNmZjRjMzIwOTM3MGZhNTcxMzk2NgotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgMjAgMTY6NDM6NTIgMjAwOCAtMDYwMAotCi0gICAgbXBjODY0MTogRml4IGVycm9yIGluIFJFQURNRQotCi0gICAgSSBtYWRlIHNvbWUgdXBkYXRlcyB0byB0aGUgY29kZSB0aGF0IGRpZG4ndCBtYWtlIGl0IGludG8gdGhlCi0gICAgUkVBRE1FIC0gZml4IHRoaXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODAxYTE5NDYxNmQ5NWU2ZmM0MjZhMTc2ZDk2MTVjY2JmOTg3NmM3ZgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyMCAxMjowMTowMiAyMDA4IC0wNjAwCi0KLSAgICBSZW1vdmVkIHVudXNlZCBDT05GSUdfTDFfSU5JVF9SQU0gc3ltYm9sLgotCi0gICAgUHJldmVudCBmdXJ0aGVyIHZpcmFsIHByb3BvZ2F0aW9uIG9mIHRoZSB1bnVzZWQKLSAgICBzeW1ib2wgQ09ORklHX0wxX0lOSVRfUkFNIGJ5IGp1c3QgcmVtb3ZpbmcgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjY5ODczOGU0NmNiNDYxZTI4YzJkNTgyMjhiYjM0YTJmY2Y1YTQ3NQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyMCAxNDowMjo1NiAyMDA4IC0wNjAwCi0KLSAgICA4Nnh4OiBGaXggbm9uLTY0LWJpdCBjb21waWxhdGlvbiBwcm9ibGVtcy4KLQotICAgIEludHJvZHVjaW5nIDY0LWJpdCAoMzYtYml0KSBzdXBwb3J0IGZvciB0aGUgTVBDODY0MUhQQ04KLSAgICBmYWlsZWQgdG8gYWNjb21vZGF0ZSB0aGUgb3RoZXIgdHdvIDg2eHggYm9hcmRzLgotICAgIEludHJvZHVjZSBkZWZpbml0aW9ucyBmb3IgQ09ORklHX1NZU19DQ1NSQkFSX1BIWVNfe0xPVyxISUdIfQotICAgIENPTkZJR19TWVNfQ0NTUl9ERUZBVUxUX0RCQVR7VSxMfSBhbmQgQ09ORklHX1NZU19DQ1NSX0RFRkFVTFRfSUJBVHtVLEx9Ci0gICAgd2l0aCBub21pbmFsIDMyLWJpdCB2YWx1ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJlYmZjNmVmM2VjOTk0YzhlMTg3ODMyNjliMWQ4ZDQxZjhlMzhhZmQKLUF1dGhvcjogTWljaGFlbCBUcmltYXJjaGkgPHRyaW1hcmNoaUBnYW5kYWxmLnNzc3VwLml0PgotRGF0ZToJV2VkIE5vdiAyNiAxNzo0MDozNyAyMDA4ICswMTAwCi0KLSAgICBSZW1vdmUgb2Jzb2xldGUgY29tbWFuZCAoYXBwbHkgYWZ0ZSBVU0Igc3R5bGUgcGF0Y2gsIDgwIGNoYXJzIHN0cmljdCkKLQotICAgIFJlbW92ZSBVU0Igb2Jzb2xldGUgY29tbW1hbmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IELDtmhtZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0KLWNvbW1pdCBkZTM5ZjhjMTlkN2MxMjAxNzI0OGM0OWQ0MzJkY2I4MWRiNjhmNzI0Ci1BdXRob3I6IE1pY2hhZWwgVHJpbWFyY2hpIDx0cmltYXJjaGlAZ2FuZGFsZi5zc3N1cC5pdD4KLURhdGU6CVdlZCBOb3YgMjYgMTc6NDE6MzQgMjAwOCArMDEwMAotCi0gICAgVVNCIHN0eWxlIHBhdGNoLCA4MCBjaGFycyBzdHJpY3QKLQotICAgIFVTQiBDb2RlIHN0eWxlIHBhdGNoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCw7ZobWVyIDxsaW51eEBib2htZXIubmV0PgotCi1jb21taXQgZDEwYzVhODdjYjhhZmZiYjRkMzVhMzExMzcwMzE2ZDQzODNkNTk4ZQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE5vdiA3IDIyOjQ2OjIxIDIwMDggKzAxMDAKLQotICAgIGRyaXZlcnMvdXNiOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQsO2aG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDIwNzdlMzQ4YzJhODQ5MDEwMjJhZDk1MzExYjQ3YjcwMzYxZTZkYWEKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTm92IDI1IDEwOjQ3OjAyIDIwMDggLTA2MDAKLQotICAgIE5BTkQ6IEZpeCBtaXNwbGFjZWQgcmV0dXJuIHN0YXRlbWVudCBpbiBuYW5kX3tyZWFkLHdyaXRlfV9za2lwX2JhZCgpLgotCi0gICAgVGhpcyBjYXVzZWQgdGhlIG9wZXJhdGlvbiB0byBiZSBuZWVkbGVzc2x5IHJlcGVhdGVkIGlmIHRoZXJlIHdlcmUKLSAgICBubyBiYWQgYmxvY2tzIGFuZCBubyBlcnJvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWYWxlcml5IEdsdXNoa292IDxndnZAbHN0ZWMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODkyOTUwMjhlN2Q4ZjdhNTI0ZjQ4NTMyODI3OWQ3MmZkYjEwMjM4NQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gTm92IDI0IDEyOjA5OjUwIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogbWwzMDAgcmVtb3ZlIFhpbGlueCBCU1AgZnJvbSBtbDMwMCBmb2xkZXIKLQotICAgIFRoaXMgQlNQIHNob3VsZCBiZSBvdXRzaWRlIHUtYm9vdCBzb3VyY2UgdHJlZS4KLSAgICBUaGUgc2Vjb25kIHJlYXNvbiBpcyB0aGF0IHhpbGlueCBwcGM0MDUgd2FzIG1vdmVkIHRvIGdlbmVyaWMgcGxhdGZvcm0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjRlZWE2MjNkNDk3NGExNjkwMjZhOTc1YmExMmZiMjNkNDgxNTRiMQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CU1vbiBOb3YgMjQgMTU6MTE6MTAgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIGZlYXR1cmVzCi0KLSAgICBUaGlzIHBhdGNoIGRpc2FibGVzIHNvbWUgdW51c2VkIGZlYXR1cmVzIGZyb20gdGhlIFBDSTQwNSBjb25maWd1cmF0aW9uCi0gICAgdG8ga2VlcCBVLUJvb3QgaW1hZ2Ugc2l6ZSBiZWxvdyAxOTJrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGMyMzg1YzNiYjUxZjVkMzkxMWZjZTFlYzQ3MjBkYjg2YjUzNGMyYgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CU1vbiBOb3YgMjQgMTU6MTE6MDkgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBVc2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgZm9yIFBDSTQwNQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzQ4Yzg0OWQ4NmE2ZjA3ODU3NTJiOWJjNDk3YTM0NjU4NzEzZDFkMQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CU1vbiBOb3YgMjQgMTU6MTE6MDggMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIGNvZGUgZnJvbSBQQ0k0MDUgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjMzNjM5NTg3ZTM1OTZmMGRiZjVlNjI0N2RkM2ZhZjgwYjFkOTA2MwotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMjAgMDk6NTk6MDkgMjAwOCArMDEwMAotCi0gICAgcG93ZXJwYywga2V5bWlsZSBib2FyZHM6IGV4dHJhY3QgaWRlbnRpY2FsIGNvbmZpZyBvcHRpb25zCi0KLSAgICBUaGlzIHBhdGNoIGV4dHJhY3RzIHRoZSBpZGVudGljYWwgY29uZmlnIG9wdGlvbnMgZm9yIHRoZQotICAgIGtleW1pbGUgYm9hcmRzIG1nY29nZSwgbWdzdXZkIGFuZCBrbWV0ZXIxIGluIGEgbmV3Ci0gICAgY29tbW9uIGNvbmZpZyBmaWxlIGtleW1pbGUtY29tbW9uLmguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTQ4MmE4ZTNkNmFjNzY2ZDkwZTUwNTlkY2U3NzdiMWU0Yzg2OGEzMAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBOb3YgMjEgMDg6Mjk6NDAgMjAwOCArMDEwMAotCi0gICAgcG93ZXJwYzoga2V5bWlsZTogQWRkIGEgY2hlY2sgZm9yIHRoZSBQSUdHWSBkZWJ1ZyBib2FyZAotCi0gICAgQ2hlY2sgdGhlIHByZXNlbmNlIG9mIHRoZSBQSUdHWSBvbiB0aGUga2V5bWlsZSBib2FyZHMgbWdjb2dlLAotICAgIG1nc3V2ZCBhbmQga21ldGVyMS4gSWYgdGhlIFBJR0dZIGlzIG5vdCBwcmVzZW50LCBkb250IHJlZ2lzdGVyCi0gICAgdGhpcyBFdGhlcm5ldCBkZXZpY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNThjNjk2ZWVkODM5YWY4OTRlMDI2NTA2NDY2OWM0MDJkYzI4YjM3MQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEB4cGVydC5kZW54LmRlPgotRGF0ZToJTW9uIE5vdiAyNCAyMTo1MDo1OSAyMDA4ICswMTAwCi0KLSAgICBBVDkxUk05MjAwREs6IGZpeCBicm9rZW4gYm9vdCBmcm9tIE5PUiBmbGFzaAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDgwNTIzNTJmMjBiMzNiZWY4Zjk4NzJmYzk4M2VhYzczZDQ2OTNjMzgKLUF1dGhvcjogSmVucyBTY2hhcnNpZyA8ZXN3QGJ1cy1lbGVrdHJvbmlrLmRlPgotRGF0ZToJVHVlIE5vdiAxOCAxMDo0ODo0NiAyMDA4ICswMTAwCi0KLSAgICBhdDkxcm05MjAwOiBmaXggYnJva2VuIGJvb3QgZnJvbSBub3IgZmxhc2gKLQotICAgIFRoaXMgcGF0Y2ggZml4IHRoZSBicm9rZW4gYm9vdCBmcm9tIE5PUiBGbGFzaCBvbiBBVDkxUk05MjAwIGJvYXJkcywgaWYKLSAgICBDT05GSUdfQVQ5MVJNOTIwMCBpcyBkZWZpbmVkIGFuZCBub3IgcHJlbG9hZGVyIGlzIHVzZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIFNjaGFyc2lnIDxlc3dAYnVzLWVsZWt0cm9uaWsuZGU+Ci0KLWNvbW1pdCAyNWVhNjUyZTkwNzUxNmEyODNiMzgyMzdlODM3MTJhOTE4ZjEyNWQ3Ci1BdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgotRGF0ZToJTW9uIE5vdiAxNyAxNTo1ODowMCAyMDA4ICswMTAwCi0KLSAgICBVQkk6IEFkZCBwcm9vZi1vZi1jb25jZXB0IENGSSBmbGFzaCBzdXBwb3J0Ci0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggVUJJIGNhbiBiZSB1c2VkIG9uIENGSSBmbGFzaCBjaGlwcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGU2YTdlZGJjMTc3OGQyNzQzMWFjNjYzYjQwYTcxZGFmYTVkMjA1NzgKLUF1dGhvcjogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+Ci1EYXRlOglNb24gTm92IDE3IDE1OjU3OjU5IDIwMDggKzAxMDAKLQotICAgIG10ZDogUmVtb3ZlIGEgcHJpbnRmKCkgZnJvbSBhZGRfbXRkX2RldmljZSgpLgotCi0gICAgUmVtb3ZlIGEgcHJpbnRmKCkgZnJvbSBhZGRfbXRkX2RldmljZSgpLCB3aGljaCBwcm9kdWNlcyBzcHVyaW91cyBvdXRwdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5MTgwOWVkNTFkODMyN2E4ZGJiZjI5YWE5OGEwOTExNTRjMjgyMTcxCi1BdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgotRGF0ZToJTW9uIE5vdiAxNyAxNTo1Nzo1OCAyMDA4ICswMTAwCi0KLSAgICBjZmktbXRkOiBBZGQgY2ZpLW10ZCBkcml2ZXIuCi0KLSAgICBBZGQgY2ZpLW10ZCBkcml2ZXIsIHdoaWNoIGV4cG9ydHMgQ0ZJIGZsYXNoIHRvIE1URCBsYXllci4KLSAgICBUaGlzIGFsbG93cyBDRkkgZmxhc2ggZGV2aWNlcyB0byBiZSB1c2VkIGZyb20gTVREIGxheWVyLgotCi0gICAgQnVpbGRpbmcgb2YgdGhlIG5ldyBkcml2ZXIgaXMgY29udHJvbGxlZCBieSBDT05GSUdfRkxBU0hfQ0ZJX01URAotICAgIG9wdGlvbi4gSW5pdGlhbGl6YXRpb24gaXMgZG9uZSBieSBjYWxsaW5nIGNmaV9tdGRfaW5pdCgpIGZyb20KLSAgICBmbGFzaF9pbml0KCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBaaWVjaWsgPGtvc21vQHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZWE4MDhlZmRmOWFhNWQ5MDY3ZmJmYWMzMmFjZGU4NTM5MTI5ZWQyCi1BdXRob3I6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgotRGF0ZToJTW9uIE5vdiAxNyAxNTo0OTozMiAyMDA4ICswMTAwCi0KLSAgICBjZmlfZmxhc2g6IEFkZCBpbnRlcmZhY2UgZm9yIGZsYXNoIHZlcmJvc2l0eSBjb250cm9sCi0KLSAgICBBZGQgaW50ZXJmYWNlIGZvciBmbGFzaCB2ZXJib3NpdHkgY29udHJvbC4gSXQgYWxsb3dzCi0gICAgdG8gZGlzYWJsZSBvdXRwdXQgZnJvbSBsb3ctbGV2ZWwgZmxhc2ggQVBJLiBJdCBpcyB1c2VmdWwKLSAgICB3aGVuIGNhbGxpbmcgdGhlc2UgbG93LWxldmVsIGZ1bmN0aW9ucyBmcm9tIGNvbnRleHQgb3RoZXIKLSAgICB0aGFuIGZsYXNoIGNvbW1hbmRzIChmb3IgZXhhbXBsZSB0aGUgTVREL0NGSSBpbnRlcmZhY2UKLSAgICBpbXBsbWVudGF0aW9uKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIFppZWNpayA8a29zbW9Ac2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGViYzk3ODRjZTY1MjgzODViYjhkMjU1OGU3ODM2MjJkNGJiZjIwZjgKLUF1dGhvcjogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgTm92IDIwIDE1OjE3OjM4IDIwMDggKzAxMDAKLQotICAgIGNmaV9mbGFzaDogRXhwb3J0IGZsYXNoX3NlY3Rvcl9zaXplKCkgZnVuY3Rpb24uCi0KLSAgICBFeHBvcnQgZmxhc2hfc2VjdG9yX3NpemUoKSBmdW5jdGlvbiBmcm9tIGRyaXZlcnMvbXRkL2NmaV9mbGFzaC5jLAotICAgIHNvIHRoYXQgaXQgY2FuIGJlIHVzZWQgaW4gdGhlIHVwY29taW5nIGNmaS1tdGQgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgWmllY2lrIDxrb3Ntb0BzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDVhYTVhN2Y0ZDViY2I3OTkyN2RkZmM4OTZjMWQ3YzQzMjZlMjM1ZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDE3IDE0OjQ1OjIyIDIwMDggKzAxMDAKLQotICAgIGNmaV9mbGFzaDogTWFrZSBhbGwgZmxhc2ggYWNjZXNzIGZ1bmN0aW9ucyB3ZWFrCi0KLSAgICBUaGlzIHBhdGNoIGRlZmluZXMgYWxsIGZsYXNoIGFjY2VzcyBmdW5jdGlvbnMgYXMgd2VhayBzbyB0aGF0Ci0gICAgdGhleSBjYW4gYmUgb3ZlcnJpZGRlbiBieSBib2FyZCBzcGVjaWZpYyB2ZXJzaW9ucy4KLQotICAgIFRoaXMgd2lsbCBiZSB1c2VkIGJ5IHRoZSB1cGNvbWluZyBWQ1RIIGJvYXJkIHN1cHBvcnQgd2hlcmUgdGhlIE5PUgotICAgIEZMQVNIIHVuZm9ydHVuYXRlbHkgY2FuJ3QgYmUgYWNjZXNzZWQgbWVtb3J5LW1hcHBlZC4gU3BlY2lhbAotICAgIGFjY2Vzc29yIGZ1bmN0aW9ucyBhcmUgbmVlZGVkIGhlcmUuCi0KLSAgICBUbyBlbmFibGUgdGhpcyB3ZWFrIGZ1bmN0aW9ucyB5b3UgbmVlZCB0byBkZWZpbmUKLSAgICBDT05GSUdfQ0ZJX0ZMQVNIX1VTRV9XRUFLX0FDQ0VTU09SUyBpbiB5b3VyIGJvYXJkIGNvbmZpZyBoZWFkZXIuCi0gICAgT3RoZXJ3aXNlIHRoZSAib2xkIiBkZWZhdWx0IGZ1bmN0aW9ucyB3aWxsIGJlIHVzZWQgcmVzdWx0aW5nCi0gICAgaW4gc21hbGxlciBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBhNWM0MDY3MDE3NjMxZDkwM2UxYWZhNmFkNjE1ZjBjZTE5ZmVhNTE3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjQgMDg6MzE6MTYgMjAwOCArMDEwMAotCi0gICAgVUJJOiBDaGFuZ2UgcGFyc2luZyBvZiBzaXplIGluIGNvbW1hbmRzIHRvIGRlZmF1bHQgdG8gaGV4Ci0KLSAgICBDdXJyZW50bHkgdGhlIHNpemUgcGFyYW1ldGVycyBvZiB0aGUgVUJJIGNvbW1hbmRzIChlLmcuICJ1Ymkgd3JpdGUiKSBhcmUKLSAgICBkZWNvZGVkIGFzIGRlY2ltYWwgaW5zdGVhZCBvZiBoZXggYXMgZGVmYXVsdC4gVGhpcyBwYXRjaCBub3cgaW50ZXJwcmV0cwotICAgIGFsbCB0aGVzZSB2YWx1ZXMgY29uc2lzdGFudGx5IGFzIGhleCwgYXMgYWxsIG90aGVyIHN0YW5kYXJkIFUtQm9vdCBjb21tYW5kcwotICAgIGRvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZGUwMWM3NmMzY2NjNGU2YzU5ODkyMjhlZWQ1OGU5NTVhM2ExYTk2OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgTm92IDIxIDEzOjA2OjA2IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogTUwyIHNob3VsZG4ndCBpbmNsdWRlIHRoZSA0eHggRU1BQyBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDFhNmEwMGRjYzViZGZjNmU5YjRiMDBmMzljMWY1ODNhN2Y5NmZjN2YKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotRGF0ZToJRnJpIE5vdiAxNCAxNjoxOToxOSAyMDA4ICswMzAwCi0KLSAgICBwcGM0eHg6IGthdG1haTogQ2hhbmdlIGRlZmF1bHQgY29uZmlnCi0KLSAgICAgVGhpcyBwYXRjaCBlbmFibGVzIHN1cHBvcnQgZm9yIEVYVDIsIGFuZCBpbmNyZWFzZXMgdGhlCi0gICAgQ09ORklHX1NZU19CT09UTUFQU1ogc2l6ZSBmb3IgdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbgotICAgIG9mIHRoZSBrYXRtYWkgYm9hcmRzIHRvIHVzZSB0aGVtIGFzIHRoZSBSQUlELXJlZmVyZW5jZQotICAgIEFNQ0Mgc2V0dXBzLgotCi0gICAgIEVYVDIgZW5hYmxpbmcgYWxsb3dzIG9uZSB0byBib290IGtlcm5lbHMgZnJvbSB0aGUgRVhUMgotICAgIGZvcm1hdHRlZCBDb21wYWN0IEZsYXNoIGNhcmRzLgotCi0gICAgIENPTkZJR19TWVNfQk9PVE1BUFNaIGluY3JlYXNpbmcgYWxsb3dzIG9uZSB0byBib290IHRoZQotICAgIExpbnV4IGtlcm5lbHMsIHdoaWNoIHVzZSBQQUdFX1NJWkUgb2YgMjU2S0IuIE90aGVyd2lzZSwKLSAgICB0aGUgbWVtb3J5IGFyZWEgd2l0aCBEVEIgZmlsZSAod2hpY2ggaXMgcGxhY2VkIGF0IHRoZQotICAgIGVuZCBvZiB0aGUgYm9vdG1hcCBhcmVhKSB3aWxsIHR1cm4gb3V0IHRvIGJlIG92ZXJsYXBwZWQKLSAgICB3aXRoIHRoZSBCU1Mgc2VnbWVudCBvZiB0aGUgMjU2S0Iga2VybmVsLCBhbmQgemVyb2VkCi0gICAgaW4gZWFybHlfaW5pdCgpIG9mIExpbnV4LgotCi0gICAgIEFjdHVhbGx5LCBpbmNyZWFzaW5nIG9mIHRoZSBib290bWFwIHNpemUgY291bGQgYmUgZG9uZQotICAgIHZpYSBzZXR0aW5nIG9mIHRoZSBib290bV9zaXplIFUtQm9vdCB2YXJpYWJsZSwgYnV0IGl0IGxvb2tzCi0gICAgbGlrZSB0aGUgY3VycmVudCBVLUJvb3QgaW1wbGVtZW50YXRpb24gaGF2ZSBzb21lIGJvb3RtX3NpemUtCi0gICAgcmVsYXRlZCBmdW5jdGlvbmFsaXR5IGxvc3QuIEluIG1hbnkgcGxhY2VzIHRocm91Z2ggdGhlIFUtQm9vdAotICAgIGNvZGUgdGhlIENPTkZJR19TWVNfQk9PVE1BUFNaIGRlZmluaXRpb24gaXMgdXNlZCBkaXJlY3RseQotICAgIChpbnN0ZWFkIG9mIHRyeWluZyB0byByZWFkIHRoZSBjb3JyZXNwb25kaW5nIHZhbHVlIGZyb20gdGhlCi0gICAgZW52aXJvbm1lbnQpLiBUaGUgc2FtZSBpcyB0cnV0aCBmb3IgdGhlIGJvb3RfanVtcF9saW51eCgpCi0gICAgZnVuY3Rpb24gaW4gbGliX3BwYy9ib290bS5jLCB3aGVyZSBVLUJvb3QgdHJhbnNmZXJzIGNvbnRyb2wKLSAgICB0byBMaW51eCBwYXNzaW5nIHRoZSBDT05GSUdfU1lTX0JPT1RNQVBTWiAobm90IGJvb3RtX3NpemUpCi0gICAgdmFsdWUgdG8gdGhlIGJvb3Rpbmcga2VybmVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRkZjQ1Y2M3NThkMzk0NTkxZmI5YmNkY2JlOTY1MzBmNzMzZjJiY2UKLUF1dGhvcjogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoNzFAZ21haWwuY29tPgotRGF0ZToJVGh1IE5vdiAyMCAxNDowOTo1MCAyMDA4IC0wNjAwCi0KLSAgICBwcGM0eHg6IENoYW5nZWQgNDYwRVgvR1QgT0NNIFRMQiBhbmQgaW50ZXJuYWwgU1JBTSBpbml0aWFsaXphdGlvbgotCi0gICAgRXhwYW5kZWQgT0NNIFRMQiB0byBhbGxvdyBhY2Nlc3MgdG8gNjRLIE9DTSBhcyB3ZWxsIGFzIDI1Nksgb2YKLSAgICBpbnRlcm5hbCBTUkFNLgotCi0gICAgQWRqdXN0ZWQgaW50ZXJuYWwgU1JBTSBpbml0aWFsaXphdGlvbiB0byBtYXRjaCB1cGRhdGVkIHVzZXIKLSAgICBtYW51YWwgcmVjb21tZW5kYXRpb24uCi0KLSAgICBPQ00gJiBJU1JBTSBhcmUgbm93IG1hcHBlZCBhcyBmb2xsb3dzOgotCSAgICBwaHlzaWNhbAkgICAgdmlydHVhbAkgICAgc2l6ZQotICAgIElTUkFNICAgMHg0XzAwMDBfMDAwMCAgIDB4RTMwMF8wMDAwICAgICAyNTZrCi0gICAgT0NNICAgICAweDRfMDAwNF8wMDAwICAgMHhFMzA0XzAwMDAgICAgIDY0awotCi0gICAgQSBzaW5nbGUgVExCIHdhcyB1c2VkIGZvciB0aGlzIG1hcHBpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIE1pdGNoZWxsIDxkbWl0Y2g3MUBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjE0Y2E0YjYxYTY4MWY3NWYzMTI1Njc2ZTA5ZDdjZTZhZjY2ZTkyNwotQXV0aG9yOiBEYXZlIE1pdGNoZWxsIDxkbWl0Y2g3MUBnbWFpbC5jb20+Ci1EYXRlOglUaHUgTm92IDIwIDE0OjAwOjQ5IDIwMDggLTA2MDAKLQotICAgIHBwYzR4eDogQWRkZWQgcHBjNHh4LWlzcmFtLmggZm9yIGludGVybmFsIFNSQU0gYW5kIEwyIGNhY2hlIERDUnMKLQotICAgIEFkZGVkIGluY2x1ZGUvYXNtLXBwYy9wcGM0eHgtaXNyYW0uaCBhbmQgbW92ZWQgaW50ZXJuYWwgU1JBTSBhbmQKLSAgICBMMiBjYWNoZSBEQ1JzIGZyb20gcHBjNDQwLmggdG8gdGhpcyBuZXcgaGVhZGVyLgotCi0gICAgQWxzbyBjb252ZXJ0ZWQgdGhlc2UgRENSIGRlZmluZXMgZnJvbSBsb3dlcmNhc2UgdG8gdXBwZXJjYXNlIGFuZAotICAgIG1vZGlmaWVkIHJlZmVyZW5jaW5nIG1vZHVsZXMgdG8gdXNlIHRoZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIE1pdGNoZWxsIDxkbWl0Y2g3MUBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzExZTJiMmFmODIwZDIxZDk5MzFkNGNmODA1N2QzODk0NjAwZmQ1NAotQXV0aG9yOiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgotRGF0ZToJVGh1IE5vdiAyMCAxNDozNzo1NyAyMDA4IC0wNTAwCi0KLSAgICBwcGM0eHg6IERlbGV0ZSB1bnVzZWQgZGVmaW5pdGlvbnMgZm9yIFNEUjBfRERSQ0ZHIGZyb20gcHBjNHh4LmgKLQotICAgIFRoZSBkZWZpbml0aW9ucyBvZiBiaXRzIGluIFNEUl9DRkcgYXJlIGluY29ycmVjdCwgYW5kIG5vdCB1c2VkIHdpdGhpbgotICAgIFUtQm9vdC4gIFRoZXJlZm9yZSwgdGhleSBjYW4gYmUgcmVtb3ZlZC4KLQotICAgIFRoZSBuYW1pbmcgb2YgdGhlIHNkcl9kZHJkbC9zZHJfY2ZnIHJlZ2lzdGVycyBkbyBub3QgZm9sbG93IGNvbnZlbnRpb25zLAotICAgIGFuZCBhcmUgdW51c2VkLCBzbyB0aGV5IGNhbiBiZSByZW1vdmVkIHRvby4KLQotICAgIEEgZGVmaW5pdGlvbiBmb3IgU0RSMF9ERFJDRkcgaXMgYWRkZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGUyM2M3Yzk1YTk2ZWIwZjA2OGVmZTVjNTMyMjE1YTEwYTE1MTJhOTUKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Ci1EYXRlOglNb24gTm92IDEwIDIwOjE1OjI1IDIwMDggKzAxMDAKLQotICAgIEFSTTogT01BUDogQ29udmVydCBJTyBtYWNyb3MKLQotICAgIENvbnZlcnQgSU8gbWFjcm9zIHRvIHJlYWR4L3dyaXRleC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgotCi1jb21taXQgMjYzYjc0OWUyZTI1NDczYTQ4Nzc2ZDMxN2JkMmE3ZTJkZGNkZDIxMgotQXV0aG9yOiBJbGtvIElsaWV2IDxpbGlldkByb25ldGl4LmF0PgotRGF0ZToJU3VuIE5vdiA5IDE1OjUzOjE0IDIwMDggKzAxMDAKLQotICAgIGxpYl9hcm06IGRvX2Jvb3RtX2xpbnV4KCkgLSBjb3JyZWN0IGEgc21hbGwgbWlzdGFrZQotCi0gICAgVGhpcyBwYXRjaCBjb3JyZWN0cyBhIHNtYWxsIGJ1ZyBpbiB0aGUgImlmIiBjb25kaXRpb246Ci0gICAgdGhlIHBhcmFtZXRlciAiZmxhZyIgaXMgMCBhbmQgdGhlICJpZiIgY29uZGl0aW9uIGlzIGFsd2F5cyB0cnVlLgotICAgIFRoZSByZXN1bHQgaXMgLSB0aGUgYm9vbSBjb21tYW5kIGRvZXNuJ3Qgc3RhcnQgdGhlIGtlcm5lbC4KLSAgICBBZmZlY3RlZCB0YXJnZXRzOiBhbGwgYXJtIGJhc2VkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWxrbyBJbGlldiA8aWxpZXZAcm9uZXRpeC5hdD4KLQotY29tbWl0IDNlMGNkYTA3MWE2N2NiNTcwOWUzZmE0ZmFmNmIzMWE3MzE4NTlhY2MKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVN1biBOb3YgOSAwMDoxNDo0NiAyMDA4ICswMTAwCi0KLSAgICBBVDkxOiBFbmFibGUgUExMQiBmb3IgVVNCCi0KLSAgICBBdCBsZWFzdCBzb21lIChvbGQgPykgdmVyc2lvbnMgb2YgdGhlIEFUOTFCb290c3RyYXAgZG8gbm90IHNldCB1cCB0aGUKLSAgICBQTExCIGNvcnJlY3RseSB0byA0OCBNSHogaW4gb3JkZXIgdG8gbWFrZSBVU0IgaG9zdCBmdW5jdGlvbiBjb3JyZWN0bHkuCi0KLSAgICBUaGlzIHBhdGNoIHNldHMgdXAgdGhlIFBMTEIgdG8gdGhlIHNhbWUgdmFsdWVzIExpbnV4IHVzZXMsIGFuZCBtYWtlcyBVU0IKLSAgICB3b3JrIG9rIG9uIHRoZSBmb2xsb3dpbmcgQ1BVczoKLQktIEFUOTFDQVA5Ci0JLSBBVDkxU0FNOTI2MAotCS0gQVQ5MVNBTTkyNjMKLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBkZWZpbmVzIENPTkZJR19VU0JfU1RPUkFHRSBhbmQgQ09ORklHX0NNRF9GQVQgZm9yIGFsbAotICAgIHRoZSByZWxldmFudCBBVDkxQ0FQOS9BVDkxU0FNOSBhdG1lbCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBhZDIyOWE0NGUxNjJhZjBmNjVlNTdlNGUzZGMxMzNkNWYwMzY0ZWNiCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglGcmkgTm92IDcgMTM6NTU6MTQgMjAwOCArMDEwMAotCi0gICAgQVQ5MTogVXNlIEFUOTFfQ1BVX0NMT0NLIGluIGRpc3BsYXlzCi0KLSAgICBJbnRyb2R1Y2UgQVQ5MV9DUFVfQ0xPQ0sgYW5kIHVzZSBpdCBmb3IgZGlzcGxheWluZyB0aGUgQ1BVCi0gICAgc3BlZWQgaW4gdGhlIExDRCBkcml2ZXIuCi0KLSAgICBBbHNvIG1ha2UgQVQ5MV9NQUlOX0NMT0NLIGFuZCBBVDkxX01BU1RFUl9DTE9DSyByZWZsZWN0IHRoZQotICAgIGNvcnJlc3BvbmRpbmcgYm9hcmQgY2xvY2tzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLQotY29tbWl0IGZlZDM2YWM1YWU2MTM3NzNiNmNkOTBlNjFlMjkyYzQ1NDQwZTEwYzgKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDIwIDA5OjU3OjQ3IDIwMDggKzAxMDAKLQotICAgIHBvd2VycGM6IDgzeHg6IGFkZCBzdXBwb3J0IGZvciB0aGUga21ldGVyMSBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBrbWV0ZXIxIGJvYXJkIGZyb20gS2V5bWlsZSwKLSAgICBiYXNlZCBvbiBhIEZyZWVzY2FsZSBNUEM4MzYwIENQVS4KLQotICAgIC0gc2VyaWFsIGNvbnNvbGUgb24gVUFSVCAxCi0gICAgLSAyNTYgTUIgRERSMiBSQU0KLSAgICAtIDY0IE1CIE5PUiBGbGFzaAotICAgIC0gRXRoZXJuZXQgUk1JSSBNb2RlIG92ZXIgVUNDNAotICAgIC0gUEhZIFNNU0MgTEFOODcwMAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI1ZmI0ZWFhZWFiM2Y4ODY2MDIwODE4ZjQ3MjlkOTkwZGNjOTFjZjAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE5vdiAyMCAxMTo0NjoyMCAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IENsZWFyIGFsbCBwb3RlbnRpYWxseSBwZW5kaW5nIGV4Y2VwdGlvbnMgaW4gTUNTUgotCi0gICAgVGhpcyBpcyBuZWVkZWQgb24gQ2FueW9ubGFuZHMgd2hpY2ggc3RpbGwgaGFzIGFuIGV4Y2VwdGlvbiBwZW5kaW5nCi0gICAgd2hpbGUgcnVubmluZyByZWxvY2F0ZV9jb2RlKCkuIFRoaXMgbGVhZHMgdG8gYSBmYWlsdXJlIGFmdGVyIHRyYXBfaW5pdCgpCi0gICAgaXMgbW92ZWQgdG8gdGhlIHRvcCBvZiBib2FyZF9pbml0X3IoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGZhY2RhZDVmMjYwMmU4OTlhMDE3NDY5MTZiZWRkYmY5ZTg1NmI1ZWUKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgTm92IDE5IDEwOjEwOjMwIDIwMDggKzAxMDAKLQotICAgIHBvd2VycGM6IDgzeHg6IGFkZCBtaXNzaW5nIFRJTUlOR19DRkcxX0NBU0xBVF8qIGRlZmluZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyZjJhNWMzNzE0ZDE3ZjRlYWQxOGI3MTMxMjhiNzIyNmUwZTgyMmY0Ci1BdXRob3I6IEhvd2FyZCBHcmVnb3J5IDxHcmVnLkhvd2FyZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE5vdiA0IDE0OjU1OjMzIDIwMDggKzA4MDAKLQotICAgIG1wYzgzeHg6IEltcHJvdmUgdGhlIHBlcmZvcm1hbmNlIG9mIEREUiBtZW1vcnkKLQotICAgIG1vZGlmeSB0aGUgQ0FTIHRpbWluZ3MuIG15IHVuZGVyc3RhbmRpbmcgaXMgdGhhdCB0aGVzZQotICAgIHNldHRpbmdzIGRlY3JlYXNlIHZhcmlvdXMgd2FpdCB0aW1lcyBpbiB0aGUgRERSIGludGVyZmFjZS4KLSAgICBCZWNhdXNlIHRoZXNlIHdhaXQgdGltZXMgYXJlIGluIGNsb2NrIGN5Y2xlcywgYW5kIHRoZSBERFIKLSAgICBjbG9jayBvbiB0aGUgODMxNSBSREIgcnVucyBzbG93ZXIgdGhhbiBvbiBzb21lIG90aGVyIDgzeHgKLSAgICBwbGF0Zm9ybXMsIHdlIGNhbiBkaWFsIGRvd24gdGhlc2UgdmFsdWVzIHdpdGhvdXQgYSBwcm9ibGVtLAotICAgIHRoZXJlYnkgZGVjcmVhc2luZyB0aGUgbGF0ZW5jeSBvZiBtZW1vcnkgYSBsaXR0bGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIb3dhcmQgR3JlZ29yeSA8R3JlZy5Ib3dhcmRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4MDAwYjA4NmIzM2E1YTgxZjNmMzkwZjM3ZTE3OGRiNzk1NmRjMDhiCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci1EYXRlOglGcmkgT2N0IDI0IDE0OjU1OjMzIDIwMDggKzAyMDAKLQotICAgIEFSTTogQWRkIEFwb2xsb24gVUJJIHN1cHBvcnQKLQotICAgIFRvIGVuYWJsZSBVQkkgb24gQXBvbGxvbiB5b3UgbmVlZCB0byB1bmNvbW1lbnQgdGhlIENPTkZJR19TWVNfVVNFX1VCSQotICAgIG1hY3JvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2OTRhMGIzZjFjMGFjY2QwZGU5NGI4OTU1NTE1NWQ2OWY4MDIyODI0Ci1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci1EYXRlOglXZWQgTm92IDE5IDExOjQ3OjA1IDIwMDggKzAxMDAKLQotICAgIFVCSTogQWRkIFVCSSBjb21tYW5kIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGVzZSBVQkkgY29tbWFuZHM6Ci0KLSAgICB1YmkgcGFydCBbbmFuZHxvbmVuYW5kXSBbcGFydF0gLSBTaG93IG9yIHNldCBjdXJyZW50IHBhcnRpdGlvbgotICAgIHViaSBpbmZvIFtsW2F5b3V0XV0gLURpc3BsYXkgdm9sdW1lIGFuZCBVQkkgbGF5b3V0IGluZm9ybWF0aW9uCi0gICAgdWJpIGNyZWF0ZVt2b2xdIHZvbHVtZSBbc2l6ZV0gW3R5cGVdIC0gQ3JlYXRlIHZvbHVtZSBuYW1lIHdpdGggc2l6ZQotICAgIHViaSB3cml0ZVt2b2xdIGFkZHJlc3Mgdm9sdW1lIHNpemUgLSBXcml0ZSB2b2x1bWUgZnJvbSBhZGRyZXNzIHdpdGggc2l6ZQotICAgIHViaSByZWFkW3ZvbF0gYWRkcmVzcyB2b2x1bWUgW3NpemVdIC0gUmVhZCB2b2x1bWUgdG8gYWRkcmVzcyB3aXRoIHNpemUKLSAgICB1YmkgcmVtb3ZlW3ZvbF0gdm9sdW1lIC0gUmVtb3ZlIHZvbHVtZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1OGJlM2ExMDU2ZDg4YzZkMDVmM2U5MTQzODkyODI4MDdlNjk5MjNhCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci1EYXRlOglXZWQgTm92IDE5IDE2OjM4OjI0IDIwMDggKzAxMDAKLQotICAgIFVCSTogQWRkIGJhc2ljIFVCSSBzdXBwb3J0IHRvIFUtQm9vdCAoUGFydCA4LzgpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCi0gICAgSXQncyBiYXNlZCBvbiB0aGUgTGludXggVUJJIHZlcnNpb24gYW5kIGJhc2ljYWxseSBoYXMgYSAiT1MiCi0gICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwotICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KLSAgICB1bmNvbW1lbnRlZCBieSAiI2lmZGVmIFVCSV9MSU5VWCIuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGNvbXBhcmUKLSAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCi0gICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQ3YWU2NjkzZjU0ZjgwNDU1YWUzMmMyZTBkOTk1ZTBlNGJkYzE1YjkKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLURhdGU6CVdlZCBOb3YgMTkgMTY6MzY6MzYgMjAwOCArMDEwMAotCi0gICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDcvOCkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KLSAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKLSAgICB0cmFuc2xhdGlvbiB3cmFwcGVyIHRoYXQgZGVmaW5lcyBtb3N0IExpbnV4IHNwZWNpZmljIGNhbGxzCi0gICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgotICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQotICAgIHRoaXMgdmVyc2lvbiB3aXRoIHRoZSBMaW51eCB2ZXJzaW9uIGFuZCBzaW1wbGlmaWVzIGZ1dHVyZSBVQkkKLSAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgN2U2ZWU3YWQyN2RlNTIxNmRiMWJhZWY3NmYzOGMzNDI5YzhmNGEyYQotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotRGF0ZToJV2VkIE5vdiAxOSAxNjozMjozNiAyMDA4ICswMTAwCi0KLSAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgNi84KQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGJhc2ljIFVCSSAoVW5zb3J0ZWQgQmxvY2sgSW1hZ2UpIHN1cHBvcnQgdG8gVS1Cb290LgotICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgotICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKLSAgICAoc3Bpbl9sb2NrKCkgZXRjLikgaW50byBuby1vcHMuIFNvbWUgc291cmNlIGNvZGUgcGFydHMgaGF2ZSBiZWVuCi0gICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCi0gICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQotICAgIHBvcnRzL2J1Zy1maXhlcyBmcm9tIHRoZSBMaW51eCB2ZXJzaW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjOTFhNzE5ZGFhMzMxYjU4NTYxMDkzMTMzNzFlNGVjZTVlYzA2ZDk2Ci1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci1EYXRlOglXZWQgTm92IDE5IDE2OjI4OjA2IDIwMDggKzAxMDAKLQotICAgIFVCSTogQWRkIGJhc2ljIFVCSSBzdXBwb3J0IHRvIFUtQm9vdCAoUGFydCA1LzgpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCi0gICAgSXQncyBiYXNlZCBvbiB0aGUgTGludXggVUJJIHZlcnNpb24gYW5kIGJhc2ljYWxseSBoYXMgYSAiT1MiCi0gICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwotICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KLSAgICB1bmNvbW1lbnRlZCBieSAiI2lmZGVmIFVCSV9MSU5VWCIuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGNvbXBhcmUKLSAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCi0gICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGY0MTJmZWZhMDc5YzZhYTlhOTc2M2Y2ODY5YmY3ODdlYTZiZjZlMWIKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLURhdGU6CVdlZCBOb3YgMTkgMTY6Mjc6MjMgMjAwOCArMDEwMAotCi0gICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDQvOCkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KLSAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKLSAgICB0cmFuc2xhdGlvbiB3cmFwcGVyIHRoYXQgZGVmaW5lcyBtb3N0IExpbnV4IHNwZWNpZmljIGNhbGxzCi0gICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgotICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQotICAgIHRoaXMgdmVyc2lvbiB3aXRoIHRoZSBMaW51eCB2ZXJzaW9uIGFuZCBzaW1wbGlmaWVzIGZ1dHVyZSBVQkkKLSAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmQyNjJjNDg1M2NiNWI2ZGRjZTFhMjhhOTY0MWYyZGUzNjg4ZDdlYQotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotRGF0ZToJV2VkIE5vdiAxOSAxNjoyNjo1NCAyMDA4ICswMTAwCi0KLSAgICBVQkk6IEFkZCBiYXNpYyBVQkkgc3VwcG9ydCB0byBVLUJvb3QgKFBhcnQgMy84KQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGJhc2ljIFVCSSAoVW5zb3J0ZWQgQmxvY2sgSW1hZ2UpIHN1cHBvcnQgdG8gVS1Cb290LgotICAgIEl0J3MgYmFzZWQgb24gdGhlIExpbnV4IFVCSSB2ZXJzaW9uIGFuZCBiYXNpY2FsbHkgaGFzIGEgIk9TIgotICAgIHRyYW5zbGF0aW9uIHdyYXBwZXIgdGhhdCBkZWZpbmVzIG1vc3QgTGludXggc3BlY2lmaWMgY2FsbHMKLSAgICAoc3Bpbl9sb2NrKCkgZXRjLikgaW50byBuby1vcHMuIFNvbWUgc291cmNlIGNvZGUgcGFydHMgaGF2ZSBiZWVuCi0gICAgdW5jb21tZW50ZWQgYnkgIiNpZmRlZiBVQklfTElOVVgiLiBUaGlzIG1ha2VzIGl0IGVhc2llciB0byBjb21wYXJlCi0gICAgdGhpcyB2ZXJzaW9uIHdpdGggdGhlIExpbnV4IHZlcnNpb24gYW5kIHNpbXBsaWZpZXMgZnV0dXJlIFVCSQotICAgIHBvcnRzL2J1Zy1maXhlcyBmcm9tIHRoZSBMaW51eCB2ZXJzaW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5NjFkZjgzMzYxYWZmOWExNGYyMjYyMTQyMjRlYjhhMDZlMDViYTI0Ci1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci1EYXRlOglXZWQgTm92IDE5IDE2OjI1OjQ0IDIwMDggKzAxMDAKLQotICAgIFVCSTogQWRkIGJhc2ljIFVCSSBzdXBwb3J0IHRvIFUtQm9vdCAoUGFydCAyLzgpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgVUJJIChVbnNvcnRlZCBCbG9jayBJbWFnZSkgc3VwcG9ydCB0byBVLUJvb3QuCi0gICAgSXQncyBiYXNlZCBvbiB0aGUgTGludXggVUJJIHZlcnNpb24gYW5kIGJhc2ljYWxseSBoYXMgYSAiT1MiCi0gICAgdHJhbnNsYXRpb24gd3JhcHBlciB0aGF0IGRlZmluZXMgbW9zdCBMaW51eCBzcGVjaWZpYyBjYWxscwotICAgIChzcGluX2xvY2soKSBldGMuKSBpbnRvIG5vLW9wcy4gU29tZSBzb3VyY2UgY29kZSBwYXJ0cyBoYXZlIGJlZW4KLSAgICB1bmNvbW1lbnRlZCBieSAiI2lmZGVmIFVCSV9MSU5VWCIuIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGNvbXBhcmUKLSAgICB0aGlzIHZlcnNpb24gd2l0aCB0aGUgTGludXggdmVyc2lvbiBhbmQgc2ltcGxpZmllcyBmdXR1cmUgVUJJCi0gICAgcG9ydHMvYnVnLWZpeGVzIGZyb20gdGhlIExpbnV4IHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGYzOTlkNGEyODE3MTNkNWVmMmQ3NjRmMDVkNTQ1ZmU2MWUzYmQ1NjkKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLURhdGU6CVdlZCBOb3YgMTkgMTY6MjM6MDYgMjAwOCArMDEwMAotCi0gICAgVUJJOiBBZGQgYmFzaWMgVUJJIHN1cHBvcnQgdG8gVS1Cb290IChQYXJ0IDEvOCkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBVQkkgKFVuc29ydGVkIEJsb2NrIEltYWdlKSBzdXBwb3J0IHRvIFUtQm9vdC4KLSAgICBJdCdzIGJhc2VkIG9uIHRoZSBMaW51eCBVQkkgdmVyc2lvbiBhbmQgYmFzaWNhbGx5IGhhcyBhICJPUyIKLSAgICB0cmFuc2xhdGlvbiB3cmFwcGVyIHRoYXQgZGVmaW5lcyBtb3N0IExpbnV4IHNwZWNpZmljIGNhbGxzCi0gICAgKHNwaW5fbG9jaygpIGV0Yy4pIGludG8gbm8tb3BzLiBTb21lIHNvdXJjZSBjb2RlIHBhcnRzIGhhdmUgYmVlbgotICAgIHVuY29tbWVudGVkIGJ5ICIjaWZkZWYgVUJJX0xJTlVYIi4gVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gY29tcGFyZQotICAgIHRoaXMgdmVyc2lvbiB3aXRoIHRoZSBMaW51eCB2ZXJzaW9uIGFuZCBzaW1wbGlmaWVzIGZ1dHVyZSBVQkkKLSAgICBwb3J0cy9idWctZml4ZXMgZnJvbSB0aGUgTGludXggdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZTI5YzIyZjVhYmU2ZTBmNGJhYTYyNTFlZmVkNjA3NGNkZmMzZGI3OQotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotRGF0ZToJV2VkIE5vdiAxOSAxNjoyMDozNiAyMDA4ICswMTAwCi0KLSAgICBNVEQ6IEFkZCBNVEQgcGFyaXRpb25pbmcgaW5mcmFzdHJ1Y3R1cmUKLQotICAgIFRoaXMgTVREIHBhcnQgaW5mcmFzdHJ1Y3R1cmUgd2lsbCBiZSB1c2VkIGJ5IHRoZSB1cGNvbWluZwotICAgIFVCSSBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5YjgyN2NmMTcyMGFjZGEyNDczYWZhNTE2OTU2ZWFiNmY3Y2NhOWExCi1BdXRob3I6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KLURhdGU6CVRodSBPY3QgMTYgMjI6NTQ6MDMgMjAwOCArMDUzMAotCi0gICAgQWxpZ24gZW5kIG9mIGJzcyBieSA0IGJ5dGVzCi0KLSAgICBNb3N0IG9mIHRoZSBic3MgaW5pdGlhbGl6YXRpb24gbG9vcCBpbmNyZW1lbnRzIDQgYnl0ZXMKLSAgICBhdCBhIHRpbWUuIEFuZCB0aGUgbG9vcCBlbmQgaXMgY2hlY2tlZCBmb3IgYW4gJ2VxdWFsJwotICAgIGNvbmRpdGlvbi4gTWFrZSB0aGUgYnNzIGVuZCBhZGRyZXNzIGFsaWduZWQgYnkgNCwgc28KLSAgICB0aGF0IHRoZSBsb29wIHdpbGwgZW5kIGFzIGV4cGVjdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VsdmFtdXRodWt1bWFyIDxzZWx2YS5tdXRodWt1bWFyQGUtY29uaW5mb3RlY2guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzZjUxMGRiNTIyZDE2MDE3OWRmZjNkZGNjZTliMThmNjI0MWMyYzI0Ci1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE5vdiAxMCAxOTo0NTozNSAyMDA4IC0wNjAwCi0KLSAgICBtcGM4NjQxOiBmaXggYWRkcmVzcy1jZWxscyBkZWZhdWx0IGluIG9sZCAuZHRzIGRldGVjdGlvbgotCi0gICAgYWRkcmVzcy1jZWxscyBkZWZhdWx0cyB0byAyLCBub3QgMTsgc28gaW4gdGhlIHVubGlrZWx5Ci0gICAgZXZlbnQgdGhhdCBpdCBpc24ndCBzcGVjaWZpZWQsIHRoaXMgcGF0Y2ggaXMgcmVxdWlyZWQKLSAgICBmb3IgY29ycmVjdCBvcGVyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQwMjVhYTRiMjBhMDYxOGEyYmFkYTAxMzJhOWEwYTRhZmI3MTdmMWEKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDMxIDE3OjE0OjM5IDIwMDggLTA1MDAKLQotICAgIGxpYl9wcGM6IE1vdmUgdHJhcF9pbml0IHRvIG9jY3VyIGVhcmxpZXIKLQotICAgIERvaW5nIHRyYXBfaW5pdCBpbW1lZGlhdGVseSBvbmNlIHdlJ3JlIHJ1bm5pbmcgZnJvbSBSQU0KLSAgICBtZWFucyB3ZSdyZSBubyBsb25nZXIgZGVwZW5kZW50IG9uIHRoZSBwaHlzaWNhbCBsb2NhdGlvbiBvZgotICAgIHRoZSBmbGFzaCBvbiBub24tQm9va0UgcGxhdGZvcm1zLiBCZWZvcmUgdHJhcF9pbml0LCB0aG9zZQotICAgIHBsYXRmb3JtcyBzd2l0Y2ggdG8gcmVhbCBtb2RlIGFuZCBnbyB0byAweGZmZjAwMTAwIG9uIGV4Y2VwdGlvbi4KLSAgICBBZnRlciB0aGUgc3dpdGNoLCB0aGV5IGdvIHRvIDB4MDAwMDAxMDAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvCi0gICAgbW92ZSB0aGUgZmxhc2ggbG9jYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ1MjA4MmIxMmM2ZTU0NTcwNWExOTQzM2EyZjQxNDI1MjY1MzYxODkKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDcgMTM6NDY6MTkgMjAwOCAtMDYwMAotCi0gICAgbXBjODY0MTogVHJ5IHRvIGRldGVjdCBvbGQgLmR0cyBmaWxlcwotCi0gICAgU2luY2Ugd2UndmUgY2hhbmdlZCB0aGUgbWVtb3J5IG1hcCBvZiB0aGUgYm9hcmQsIGJlIG5pY2UgYW5kCi0gICAgYWRkIHNvbWUgY2hlY2tpbmcgdG8gdHJ5IHRvIGNhdGNoIG91dC1vZi1kYXRlIC5kdHMgZmlsZXMuICBXZSBkbwotICAgIHRoaXMgYnkgY2hlY2tpbmcgdGhlIENDU1JCQVIgbG9jYXRpb24gaW4gdGhlIC5kdHMgYW5kIGNvbXBhcmluZwotICAgIGl0IHRvIHRoZSBDQ1NSQkFSIGxvY2F0aW9uIGluIHUtYm9vdC4gIElmIHRoZXkgZG9uJ3QgbWF0Y2gsIGEKLSAgICB3YXJuaW5nIG1zZyBpcyBwcmludGVkLiAgVGhpcyBpc24ndCBmb29scHJvb2YsIGJ1dCBpdCdzIHNpbXBsZSBhbmQKLSAgICB3aWxsIGNhdGNoIG1vc3Qgb2YgdGhlIGNhc2VzIHdoZXJlIGFuIG91dC1vZi1kYXRlIC5kdHMgaXMgcHJlc2VudCwKLSAgICBpbmNsdWRpbmcgYWxsIG9mIHRoZSBjYXNlcyB3aGVyZSBhIG5ldyB1LWJvb3QgaXMgdXNlZCB3aXRoIGFuIG9sZAotICAgIHN0YW5kYXJkIE1QQzg2NDEgLmR0cyBmaWxlIGFzIHN1cHBsaWVkIHdpdGggTGludXguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhkYjA0MDBhMjc4MzlmOTFjMDQ3ZGNiODNmNGEwZjA5ZTA1NGExODAKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTm92IDYgMTM6MDQ6MDkgMjAwOCAtMDYwMAotCi0gICAgdG9wbGV2ZWwgTWFrZWZpbGU6IEFkZCBNUEM4NjQxSFBDTl8zNkJJVCB0YXJnZXQKLQotICAgIFRoaXMgd2lsbCBlbmFibGUgQ09ORklHX1BIWVNfMzZCSVQgZm9yIE1QQzg2NDFIUENOLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzMTExZDMyYzQ5NGU4MjUxYjkwOTE3NDQ3Nzk2YTcyMDZiNzU3ZTFlCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiA2IDE3OjM3OjM1IDIwMDggLTA2MDAKLQotICAgIG1wYzg2NDE6IFN1cHBvcnQgMzYtYml0IHBoeXNpY2FsIGFkZHJlc3NpbmcKLQotICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhIG1lbW9yeSBtYXAgd2l0aCBhbGwgdGhlIGRldmljZXMKLSAgICBpbiAzNi1iaXQgcGh5c2ljYWwgc3BhY2UsIGluIGFkZGl0aW9uIHRvIHRoZSAzMi1iaXQgbWFwLgotICAgIFRoZSBDQ1NSIHJlbG9jYXRpb24gaXMgbW92ZWQgKGFnYWluLCBzb3JyeSkgdG8KLSAgICBhbGxvdyBmb3IgdGhlIHBoeXNpY2FsIGFkZHJlc3MgdG8gYmUgMzYgYml0cyAtIHRoaXMKLSAgICByZXF1aXJlcyB0cmFuc2xhdGlvbiB0byBiZSBlbmFibGVkLiAgV2l0aCAzNi1iaXQgcGh5c2ljYWwKLSAgICBhZGRyZXNzaW5nIGVuYWJsZWQsIHdlIGFyZSBubyBsb25nZXIgcnVubmluZyB3aXRoIFZBPVBBCi0gICAgdHJhbnNsYXRpb25zLiAgVGhpcyBtZWFucyB3ZSBoYXZlIHRvIGRpc3Rpbmd1aXNoIGJldHdlZW4KLSAgICB0aGUgdHdvIGluIHRoZSBjb25maWcgZmlsZS4gIFRoZSBleGlzdGluZyByZWdpb24gbmFtZSBpcwotICAgIHVzZWQgdG8gaW5kaWNhdGUgdGhlIHZpcnR1YWwgYWRkcmVzcywgYW5kIGEgX1BIWVMgdmFyaWV0eQotICAgIGlzIGNyZWF0ZWQgdG8gcmVwcmVzZW50IHRoZSBwaHlzaWNhbCBhZGRyZXNzLgotCi0gICAgTGFyZ2UgcGh5c2ljYWwgYWRkcmVzc2luZyBpcyBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgotICAgIFNldCBDT05GSUdfUEhZU182NEJJVCBpbiB0aGUgY29uZmlnIGZpbGUgdG8gdHVybiB0aGlzIG9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNzU5YTAxYTAwMjJkZTkzNzhhM2E3NjFmNDk3ODZmODc2ODRjOTE2Ci1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiA2IDE3OjM2OjA0IDIwMDggLTA2MDAKLQotICAgIG1wYzg2NDE6IENoYW5nZSAzMi1iaXQgbWVtb3J5IG1hcAotCi0gICAgVGhlIG1lbW9yeSBtYXAgb24gdGhlIDg2NDFocGNuIGlzIG1vZGlmaWVkIHRvIGxvb2sgbW9yZSBsaWtlCi0gICAgdGhlIDg1eHggYm9hcmRzOyB0aGlzIGlzIGEgc3RlcCB0b3dhcmRzIGEgbW9yZSBzdGFuZGFyZGl6ZWQKLSAgICBsYXlvdXQgZ29pbmcgZm9yd2FyZC4gQXMgcGFydCBvZiB0aGlzIGNoYW5nZSwgd2Ugbm93IHJlbG9jYXRlCi0gICAgdGhlIGZsYXNoLgotCi0gICAgVGhlIHJlZ2lvbnMgZm9yIHNvbWUgb2YgdGhlIG1hcHBpbmdzIHdlcmUgZmFyIGxhcmdlciB0aGFuIHRoZXkKLSAgICBuZWVkZWQgdG8gYmUuICBJIGhhdmUgcmVkdWNlZCB0aGUgbWFwcGluZ3MgdG8gbWF0Y2ggdGhlCi0gICAgYWN0dWFsIHNpemVzIHN1cHBvcnRlZCBieSB0aGUgaGFyZHdhcmUuCi0KLSAgICBJbiBhZGRpdGlvbiBJIGhhdmUgcmVtb3ZlZCB0aGUgY29tbWVudHMgYXQgdGhlIGhlYWQKLSAgICBvZiB0aGUgQkFUIGJsb2NrcyBpbiB0aGUgY29uZmlnIGZpbGUsIHJhdGhlciB0aGFuIHVwZGF0aW5nCi0gICAgdGhlbS4gIFRoZXNlIGdldCBob3JyaWJseSBvdXQgb2YgZGF0ZSwgYW5kIGl0J3MgYSBzaW1wbGUKLSAgICBtYXR0ZXIgdG8gbG9vayBhdCB0aGUgZGVmaW5lcyB0byBzZWUgd2hhdCB0aGV5IGFyZSBzZXQgdG8KLSAgICBzaW5jZSBldmVyeXRoaW5nIGlzIHJpZ2h0IGhlcmUgaW4gdGhlIHNhbWUgZmlsZS4KLQotICAgIERvY3VtZW50YXRpb24gaGFzIGJlZW4gY2hhbmdlZCB0byByZWZsZWN0IHRoZSBuZXcgbWFwLCBhcyB0aGlzCi0gICAgY2hhbmdlIGlzIHVzZXIgdmlzaWJsZSwgYW5kIGFmZmVjdHMgdGhlIE9TIHdoaWNoIHJ1bnMgcG9zdC11Ym9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmY5YThjMzQzMDllZDkyNzYyNTgyOTVkYjllOTIxMmFhYmIyNTMxYQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgNSAxNDo1NTozNSAyMDA4IC0wNjAwCi0KLSAgICBtcGM4Nnh4OiBDaGFuZ2UgZWFybHkgRkxBU0ggbWFwcGluZyB0byAxTSBhdCBDT05GSUdfTU9OSVRPUl9CQVNFX0VBUkxZCi0KLSAgICBXZSBkZWZpbmUgQ09ORklHX01PTklUT1JfQkFTRV9FQVJMWSB0byBkZWZpbmUgdGhlIGluaXRpYWwgbG9jYXRpb24KLSAgICBvZiB0aGUgYm9vdHBhZ2UgaW4gZmxhc2guCVVzZSB0aGlzIHRvIGNyZWF0ZSBhbiBlYXJseSBtYXBwaW5nCi0gICAgZGVmaW5pdGlvbiBmb3IgdGhlIEZMQVNILCBhbmQgY2hhbmdlIHRoZSBlYXJseV9iYXRzIGNvZGUgdG8gdXNlIHRoaXMuCi0KLSAgICBUaGlzICBjaGFuZ2UgZmFjaWxpdGF0ZXMgdGhlIHJlbG9jYXRpb24gb2YgdGhlIGZsYXNoIHNpbmNlIHRoZSBlYXJseQotICAgIG1hcHBpbmdzIGFyZSBubyBsb25nZXIgdGllZCB0byB0aGUgZmluYWwgbG9jYXRpb24gb2YgdGhlIGZsYXNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjMWUxY2Y2OTU0N2IxMzgxNzNmODdhN2Y4MWM0MmE1ZDhkYmZkZTNkCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE5vdiA1IDE0OjU1OjM0IDIwMDggLTA2MDAKLQotICAgIG1wYzg2eHg6IFVzZSBTUlIwLzEvcmZpIHRvIGVuYWJsZSBhZGRyZXNzIHRyYW5zbGF0aW9uLCBub3QgYmxyCi0KLSAgICBVc2luZyBhIG10bXNyL2JsciBtZWFucyB0aGF0IHlvdSBoYXZlIHRvIGJlIGV4ZWN1dGluZyBhdCB0aGUKLSAgICBzYW1lIHZpcnR1YWwgYWRkcmVzcyBvbmNlIHlvdSBlbmFibGUgdHJhbnNsYXRpb24uICBUaGlzIGlzCi0gICAgdW5uZWNlc3NhcmlseSByZXN0cmljdGl2ZSwgYW5kIGlzIG5vdCByZWFsbHkgaG93IHRoaXMgaXMKLSAgICB1c3VhbGx5IGRvbmUuICBDaGFuZ2UgaXQgdG8gdXNlIHRoZSBtb3JlIGNvbW1vbiBtdHNwciBTUlIwL1NSUjEKLSAgICBhbmQgcmZpIG1ldGhvZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNmJmOThiMTM2MmYwY2IyMzc2MjAzNTVlZDNlNjc2MmZmZjgyMzg4ZAotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgNSAxNDo1NTozMyAyMDA4IC0wNjAwCi0KLSAgICBtcGM4NjQxOiBtYWtlIERJQUdfQUREUiA9PSBGTEFTSF9CQVNFCi0KLSAgICBDdXJyZW50bHksIHRoYXQncyB3aGF0IGl0IGlzLCBidXQgaXQncyBoYXJkY29kZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE3MGRlYWNiMWRkYzM5MTY0YmRiNjhmMzk2M2UwYzA0NTZhNTM2OWIKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTm92IDUgMTQ6NTU6MzIgMjAwOCAtMDYwMAotCi0gICAgbXBjODY0MTogRHJvcCBpbWFnaW5hcnkgc2Vjb25kIGZsYXNoIGJhbmssIG1hcCA4TUIKLQotICAgIFRoZXJlJ3MgYSBsb3Qgb2Ygc2V0dXAgYW5kIGZvbyBmb3IgdGhlIHNlY29uZCBmbGFzaAotICAgIGJhbmsuICBUaGUgcHJvYmxlbSBpcywgdGhpcyBib2FyZCBkb2Vzbid0IGFjdHVhbGx5IGhhdmUgb25lLgotICAgIENsZWFuIHRoaXMgdXAuICBBbHNvLCB0aGUgZmxhc2ggaXMgOE0gaW4gc2l6ZS4gIEdldCByaWQKLSAgICBvZiB0aGUgY29uZnVzaW5nIGFsaWFzZWQgb3Zlcm1hcHBpbmcsIGFuZCBqdXN0IG1hcCA4TS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGYyZDY2MDI3YmZjNjBkYzdlZWEyZjA5NmFmODg5MTk4OGM1YWJlNAotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgNSAxNDo1NTozMSAyMDA4IC0wNjAwCi0KLSAgICBtcGM4NjQxOiBvbmx5IGRlZmluZSBDT05GSUdfRU5WX1NJWkUgb25jZQotCi0gICAgSXQncyBjdXJyZW50bHkgZGVmaW5lZCB0d2ljZSBpbnNpZGUgaW4gYW4gaWYvZWxzZSBibG9jaywgYnV0Ci0gICAgYm90aCBoYWx2ZXMgc2V0IHRoZSBzYW1lIHZhbHVlLiAgTW92ZSB0aGUgZGVmaW5lIG91dHNpZGUKLSAgICB0aGUgaWYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI0YmZiNDhjMzVmZWQ2YWQxZjA0N2UzZTRhMjdkZjMwMjQ4MmNkOTMKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTm92IDUgMTQ6NTU6MzAgMjAwOCAtMDYwMAotCi0gICAgbXBjODZ4eDogTW92ZSBzZXR1cF9iYXRzIGludG8gY3B1X2luaXRfZgotCi0gICAgSW4gb3JkZXIgdG8gbGF0ZXIgYWxsb3cgZm9yIGEgcGh5c2ljYWwgcmVsb2NhdGlvbiBvZiB0aGUKLSAgICBmbGFzaCwgc2V0dXBfYmF0cywgd2hpY2ggc2V0cyB1cCB0aGUgZmluYWwgQkFUIG1hcHBpbmcKLSAgICBmb3IgdGhlIGJvYXJkLCBuZWVkcyB0byBoYXBwZW4gKmFmdGVyKiBpbml0X2xhd3MoKS4KLSAgICBPdGhlcndpc2UsIHRoZXJlIHdpbGwgYmUgbm8gd2luZG93IHByb2dyYW1tZWQgZm9yIHRoZSBmbGFzaAotICAgIGF0IHRoZSBuZXcgcGh5c2ljYWwgbG9jYXRpb24gYXQgdGhlIHBvaW50IHdoZW4gd2UgY2hhbmdlCi0gICAgdGhlIG1tdSB0cmFuc2xhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDVkZjNlNWE2MzhiZThjNWIwODk5ZWFlMTc2NmJiZThlNGI5MmMxNwotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgNSAxNDo1NToyOSAyMDA4IC0wNjAwCi0KLSAgICBtcGM4NjQxOiBSZW1vdmUgZXh0cmEgIjAiIGZyb20gQlIyIGRlZmluZQotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlZGYzZmU3ZDM5YTFlZTA3MzUzMTI4YWY1MjIxNDIyY2U5Y2NmYWQ2Ci1BdXRob3I6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci1EYXRlOglUaHUgT2N0IDIzIDA5OjA4OjE4IDIwMDggLTA0MDAKLQotICAgIGRyaXZlcnMvcWUvdWVjX3BoeS5jOiBBZGRlZCBQSFktbGVzcyAoZml4ZWQgUEhZKSBkcml2ZXIuCi0KLSAgICBDb3BpZWQgb3ZlciB0aGUgZml4ZWQgUEhZIGRyaXZlciBhcyB1c2VkIGluIHBwNHh4LzR4eF9lbmV0LmMuCi0gICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIFBIWS1sZXNzIE1BQyBjb25uZWN0aW9ucyB0byB0aGUgVUVDLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2VkQ29tLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNTRiZGNjOWZiNjY3MGFmZGU5YzI2ZGNmMzY0ZjU4Mjg3OWJmMjFkNgotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAyMyAxNjoyNzoyNCAyMDA4ICswMDAwCi0KLSAgICBDb2xkRmlyZTogQWRkIG1paSBkcml2ZXIgaW4gZHJpdmVycy9uZXQKLQotICAgIEFsbCBDRiBwbGF0Zm9ybXMnIG1paS5jIGFyZSBjb25zb2xpZGF0ZWQgaW50byBvbmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDI1YTg1OTA2NmIzYWYxMDcwZWI2OWYxMjAyMjExM2MwYTkxYmQ4MTMKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBPY3QgMjcgMjM6NTM6MTcgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgUFBDNHh4IEVNQUMgdG8gY3B1X2V0aF9pbml0KCkKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNGQwM2E0ZTIwZTU4NTUyY2I5NmQ2MWEwZThiNTZjZGI2Y2M2MDEyNgotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJU3VuIE5vdiA5IDIxOjI5OjIzIDIwMDggLTA4MDAKLQotICAgIE1vdmVkIFBQQzR4eCBFTUFDIGRyaXZlciB0byBkcml2ZXJzL25ldAotCi0gICAgQWxzbyBjaGFuZ2VkIHBhdGggaW4gYWxsIGxpbmtlciBzY3JpcHRzIHRoYXQgcmVmZXJlbmNlIHRoaXMgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5NmUyMWY4NmU4MjY2ZWQ0MDc1OWU1NDk1ZWU0NjEyNjVkN2Y2ZDI4Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gT2N0IDI3IDIzOjUwOjE1IDIwMDggLTA3MDAKLQotICAgIENoYW5nZWQgUFBDNHh4IEVNQUMgZHJpdmVyIHRvIHJlcXVpcmUgQ09ORklHX1BQQzR4eF9FTUFDCi0KLSAgICBBbGwgaW4tdHJlZSBJQk0vQU1DQyBQUEM0eHggYm9hcmRzIHVzaW5nIHRoZSBFTUFDIGdldCB0aGlzIG5ldyBDT05GSUcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDllYjc5YmQ4ODU2YmNhYjg5NmVkNWUxZjFiY2ExNTk4MDdhMTI0ZGQKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVRodSBPY3QgMjMgMjI6MDI6NDkgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTVBDOFhYIFNDQyB0byBjcHVfZXRoX2luaXQoKQotCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYTliZWM5NmQ2MzU5YWM5ZjkwYTg1Mjk2MmJmMzA0MGNhZDllMDI1NgotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJV2VkIE9jdCAyMiAyMzo0Nzo1MSAyMDA4IC0wNzAwCi0KLSAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBNUEM4MjIwIEZFQyB0byBjcHVfZXRoX2luaXQoKQotCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMGU4NDU0ZTk5MDM4NWE1OGY3MDhjMmZjMjZkMzFhYzA0MWM3YTZjNQotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJV2VkIE9jdCAyMiAyMzozMjo0OCAyMDA4IC0wNzAwCi0KLSAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBRRSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGNwdV9ldGhfaW5pdCgpCi0KLSAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAzNDU2YTE0ODI3NmQ1NDk0YjUzZWU0MDI0MmVmYjY0NjJkMTYzNTA0Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglXZWQgT2N0IDIyIDIzOjIwOjI5IDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEZDQyBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGNwdV9ldGhfaW5pdAotCi0gICAgQWZmZWN0ZWQgYm9hcmRzOgotCVNldmVyYWwgTVBDOHh4IGJvYXJkcwotCVNldmVyYWwgTVBDODI2MC9NUEM4MjcyIGJvYXJkcwotCVNldmVyYWwgTVBDODV4eCBib2FyZHMKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDYyZTE1YjQ5N2Y1YzYzMzRjMDU5NTEyNjc4YzhkYjc5NDBhZTRjNjEKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVRodSBPY3QgMzAgMjI6MTU6MzUgMjAwOCAtMDcwMAotCi0gICAgRml4IHR5cG8gaW4gY3B1L21wYzg1eHgvY3B1LmMKLQotICAgIENPTkZJR19NUEM4NXh4X0ZFQyAtPiBDT05GSUdfTVBDODVYWF9GRUMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1ZGZiM2VlM2Y1NGUyMzgyYTA4ZDcyOTA2ZjBlNzllY2Y5NDRmNmUzCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTdW4gT2N0IDE5IDEyOjA4OjUwIDIwMDggKzA5MDAKLQotICAgIG5ldDogTW92ZSBpbml0aWFsaXphdGlvbiBvZiBBdTF4MDAgU29DIGV0aGVybmV0IE1BQyB0byBjcHVfZXRoX2luaXQKLQotICAgIFRoaXMgcGF0Y2ggd2lsbCBtb3ZlIGF1MXgwMF9ldGhfaW5pdGlhbGl6ZSBmcm9tIG5ldC9ldGguYyB0byBjcHVfZXRoX2luaXQKLSAgICBhcyBhIHBhcnQgb2Ygb25nb2luZyBldGhfaW5pdGlhbGl6ZSBjbGVhbnVwIHdvcmsuICBUaGUgZnVuY3Rpb24gcmV0IHZhbHVlCi0gICAgaXMgYWxzbyBmaXhlZCBhcyBpdCBzaG91bGQgYmUgbmVnYXRpdmUgb24gZmFpbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGNjOTQwNzRlY2FjMTg4NWQxOGRkYjY4M2ViOTM0YjNjMDI2OGFhNWIKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBTZXAgNSAwMTo1NToyMiAyMDA4IC0wNDAwCi0KLSAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBJWFA0WFhfTlBFIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gY3B1X2V0aF9pbml0KCkKLQotICAgIEFsc28sIHJlbW92ZWQgdGhlIGRyaXZlciBpbml0aWFsaXphdGlvbiBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGYyYTc4MDZmYzIzZTgyZDMwYzg1NDg5MTEzNjllMGM1MzA2MDczNTQKLUF1dGhvcjogQ2xpdmUgU3R1YmJpbmdzIDx1Ym9vdEB4ZW50ZWNoLmNvLnVrPgotRGF0ZToJTW9uIE9jdCAyNyAxNTowNTowMCAyMDA4ICswMDAwCi0KLSAgICB4aWxpbnhfZW1hY2xpdGUgYnVmZmVyIG92ZXJydW4KLQotICAgIFBhdGNoIHRvIGZpeCBidWZmZXIgYWxsb2NhdGlvbiBzaXplIGFuZCBhbGlnbm1lbnQuIEJ1ZmZlciBuZWVkcyB0byBiZSB1MzIgYWxpZ25lZCBhbmQKLSAgICBQS1RTSVpFX0FMSUdOIGJ5dGVzIGxvbmcuCi0KLSAgICBBY2tlZC1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDAxMTViMTk1MzcxOGEyOTY5ZjY0NjlkM2Q1ZGE1MWJhMTFlMTJkNDIKLUF1dGhvcjogcmljaGFyZHJldGFudWJ1biA8cmljaGFyZHJldGFudWJ1bkBydWdnZWRjb20uY29tPgotRGF0ZToJRnJpIFNlcCAyNiAwODo1OToxMiAyMDA4IC0wNDAwCi0KLSAgICBORVQ6IFFFOiBVRUM6IE1ha2UgdWVjX21paXBoeV9yZWFkKCkgYW5kIHVlY19taWlwaHlfd3JpdGUoKSB1c2UgdGhlIGRldm5hbWUgYXJnLgotCi0gICAgVGhlIGN1cnJlbnQgdWVjX21paXBoeV9yZWFkIGFuZCB1ZWNfbWlpcGh5X3dyaXRlIGhhcmRjb2RlIGFjY2VzcyBkZXZsaXN0WzBdCi0gICAgVGhpcyBwYXRjaCBtYWtlcyB0aGVzZSBmdW5jdGlvbiB1c2UgdGhlIGRldm5hbWUgYXJndW1lbnQgdGhhdCBpcyBwYXNzZWQgaW4gdG8KLSAgICBhbGxvdyBhY2Nlc3MgdG8gdGhlIHBoeSByZWdpc3RlcnMgb2Ygb3RoZXIgZGV2aWNlcyBpbiBkZXZsaXN0W10uCi0KLSAgICBTaWduZWQtb2YtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dnZWRDb20uY29tPgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDQ0ZGNiNzMzMjAzM2RiOGRlMjgxMGYyZmZmY2FlMzA4NGYxNWM4ZDQKLUF1dGhvcjogcmljaGFyZHJldGFudWJ1biA8cmljaGFyZHJldGFudWJ1bkBydWdnZWRjb20uY29tPgotRGF0ZToJTW9uIE9jdCA2IDE1OjMxOjQzIDIwMDggLTA0MDAKLQotICAgIEFkZHMgdHdvIG1vcmUgZXRoZXJuZXQgaW50ZXJmYWNlIHRvIDgzeHgKLQotICAgIEZpeGVkIGNvbXBpbGVyIHdhcm5pbmcgImRlY2xhcmVkIGJ1dCB1bnVzZWQiIGV0aDVfdWVjX2luZm8gYW5kIGV0aDZfdWVjX2luZm8uCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2dlZENvbS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGQ4MDAzZmEwMzczMzkwMWI3M2Q2YzQ2NjdiNGQ4MGZjOGViMWRkZDMKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CUZyaSBOb3YgNyAxMzo1NDozMSAyMDA4ICswMTAwCi0KLSAgICBBVDkxOiBSZXBsYWNlIEFUOTFfQkFTRV9FTUFDIGJ5IHRoZSBib2FyZCBzcGVjaWZpYyB2YWx1ZXMuCi0KLSAgICBBVDkxX0JBU0VfRU1BQyBpcyBuZXZlciB1c2VkIG91dHNpZGUgdGhlIGJvYXJkIHNwZWNpZmljIGZpbGVzLAotICAgIHNvIHJlcGxhY2UgaXRzIHVzYWdlIGJ5IHRoZSBib2FyZCBzcGVjaWZpYyBBVDkxeHh4X0JBU0VfRU1BQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGM5MWUxN2FmZmExNzVjZTA2YWZhODliMDQ3NTIzMDFlYjRhNjE2NjYKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CUZyaSBOb3YgNyAxMjowOToyMSAyMDA4ICswMTAwCi0KLSAgICBBVDkxOiBSZXBsYWNlICh1bmRlZmluZWQpIEFUOTFfSURfVVMqIGJ5IHRoZSBib2FyZCBzcGVjaWZpYyB2YWx1ZXMuCi0KLSAgICBBVDkxX0lEX1VTMCAvIEFUOTFfSURfVVMxIC8gQVQ5MV9JRF9VUzIgd2VyZSB1c2VkIGJ1dCBuZXZlciBkZWZpbmVkLgotICAgIFNpbmNlIHRoZXkgYXJlIG5ldmVyIHVzZWQgb3V0c2lkZSB0aGUgYm9hcmQgc3BlY2lmaWMgZmlsZXMsIHRoZXkgY2FuCi0gICAgYmUgcmVwbGFjZWQgYnkgdGhlIGJvYXJkIHNwZWNpZmljIEFUOTF4eHhfSURfVVMwIC8gQVQ5MXh4eF9JRF9VUzEgLwotICAgIEFUOTF4eHhfSURfVVMyLgotCi0gICAgQnVnIHNwb3R0ZWQgYnkgSmVzdXMgQWx2YXJleiA8amFsdmFyZXpAbWljcm9taW50LmNvbT4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAyODk2MmY1YTJkZTgxYmMwZWVkMWMwYjA4YzZiZmFhMWNjMTM0ZWEyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTm92IDEgMTA6NDc6NTkgMjAwOCArMDEwMAotCi0gICAgTWFrZWZpbGUvYXQ5MXNhbTk6IG1vdmUgc29tZSBhdDkxc2FtOSB0byB0aGUgY29ycmVjdCBzdWJzZWN0aW9uIGZvciBhcm05MjZlanMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxMDc5NDMyZTA0Y2NmNzFhYTM2ODQxODExODYxODJjZDYzNTEyZjE5Ci1BdXRob3I6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgotRGF0ZToJRnJpIE9jdCAzMSAxMjoyODo0MyAyMDA4ICswMTAwCi0KLSAgICBDdXN0b20gQUZFQjkyNjAgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBwcm92aWRlcyBzdXBwb3J0IGZvciBBRkVCOTI2MCBib2FyZCwgYSBwcm9kdWN0IG9mCi0gICAgT3BlblNvdXJjZSBoYXJkd2FyZSBhbmQgc29mdHdhcmUuIFNvbWUgY29tbWVydGlhbCBwcm9qZWN0cwotICAgIGFyZSBtYWRlIHdpdGggdGhpcyBkZXNpZ24uIEEgYm9hcmQgaXMgYmFzaWNhbGx5IEFUOTFTQU05MjYwLUVLCi0gICAgd2l0aCBzb21lIG1vZGlmaWNhdGlvbnMgYW5kIGRpZmZlcmVudCBwZXJpcGhlcmFscyBhbmQgZGlmZmVyZW50Ci0gICAgcGFydHMgdXNlZC4gTWFpbiBwdXJwb3NlIG9mIHRoaXMgcHJvamVjdCBpcyB0byBnYWluIGV4cGVyaWVuY2UgaW4KLSAgICBoYXJkd2FyZSBkZXNpZ24uCi0gICAgTW9yZSBpbmZvOiBodHRwOi8vZ3JvdXBzLmdvb2dsZS5jb20vZ3JvdXAvYXJtOWZwZ2EtZXZvbHV0aW9uLWJvYXJkCi0gICAgKEluIFJ1c3NpYW4gb25seSwgc29ycnkpLgotICAgIFN1YnZlcnNpb24gcmVwb3NpdG9yeTogc3ZuOi8vMTk0Ljg1LjIzOC4yMi9ob21lL3VzZXJzL2dlb3JnZS9zdm4vYXJtOWViCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZXkgTGFwaW4gPHNsYXBpbkBvc3NmYW5zLm9yZz4KLQotY29tbWl0IDI2ZWVjZDI0Zjk3MTMwZTU2ZTljMmMyYWYwZTcxNGUwNWJjZTZlMDAKLUF1dGhvcjogVG9tb2hpcm8gTWFzdWJ1Y2hpIDx0b21vaGlyb19tYXN1YnVjaGlhdHRyaXBlYWtzLmNvLmpwPgotRGF0ZToJVHVlIE9jdCAyMSAxMzoxNzoxNiAyMDA4ICswOTAwCi0KLSAgICBDaGFuZ2UgdG8gdXNlICJkb19kaXYiIG1hY3JvCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb21vaGlybyBNYXN1YnVjaGkgPHRvbW9oaXJvX21hc3VidWNoaUB0cmlwZWFrcy5jby5qcD4KLQotY29tbWl0IGUzNTI0OTUzMThkODA1NmEwMGZhYTIxYjYzM2IzZTQzNzRiZmJmNTIKLUF1dGhvcjogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgT2N0IDIyIDE2OjAwOjI2IDIwMDggLTA0MDAKLQotICAgIEFSTTkyNkVKLVM6IHJlbG9jYXRlIE9NQVAgc3BlY2lmaWMgJ2NwdWluZm8uYycgaW50byBPTUFQIGRpcmVjdG9yeQotCi0gICAgT01BUCBpZGVudGlmaWNhdGlvbiBpcyBpbXBsZW1lbnRlZCBpbiAnY3B1aW5mby5jJyBhbmQgbG9jYXRlZCBpbiBBUk05MjZFSi1TIGRpcmVjdG9yeS4KLSAgICBJdCBtYWtlcyBzZW5zZSB0byBwbGFjZSB0aGlzIGZpbGUgaW4gT01BUCBzcGVjaWZpYyBzdWJkaXJlY3RvcnksIGkuZS4gY3B1L2FybTkyNmVqcy9vbWFwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb21hbiBNYXNoYWsgPHJvbWV6Nzc3QGdtYWlsLmNvbT4KLQotY29tbWl0IDI0OGIyYzM2NzIxMGMwNmRiZDVmYmRlY2YyN2U5N2ZiZTlkMDVmZGIKLUF1dGhvcjogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+Ci1EYXRlOglUdWUgT2N0IDIxIDAzOjAxOjQxIDIwMDggLTA3MDAKLQotICAgIEFSTS9WZXJzYXRpbGUgcG9ydDogUmVtb3ZlZCB1bnVzZWQgZnVuY3Rpb25zCi0KLSAgICBSZW1vdmFsIG9mIG5ldmVyIHVzZWQgZnVuY3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9tYW4gTWFzaGFrIDxyb21lejc3N0BnbWFpbC5jb20+Ci0KLWNvbW1pdCAxMjY2ZGY4ODc3ODFjNzc5ZGVhZjZkMDVlZWEyZWY5MGE0NzBjYjM0Ci1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE5vdiAzIDE1OjQ0OjAxIDIwMDggLTA2MDAKLQotICAgIHBvd2VycGM6IGNoYW5nZSA4Nnh4IFNNUCBib290IG1ldGhvZAotCi0gICAgV2UgcHV0IHRoZSBib290cGcgZm9yIHRoZSBzZWNvbmRhcnkgY3B1cyBpbnRvIG1lbW9yeSBhbmQgdXNlCi0gICAgQlBUUiB0byBnZXQgdG8gaXQuCVRoaXMgaXMgYSBzdGVwIHRvd2FyZHMgY29udmVydGluZyB0byB0aGUKLSAgICBlUEFQUiBib290IG1ldGhvZG9sb2d5LiAgQWxzbywgdGhlIGNvZGUgaXMgd3JpdHRlbiB0bwotICAgIGRlYWwgcHJvcGVybHkgd2l0aCBtb3JlIHRoYW4gNEdCIG9mIFJBTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjU0MzE1NjA2ODJkOGYzMThmYmM0OWRiODdjZmUxM2FiNDFkMmVlNAotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMzEgMTc6MTM6NDkgMjAwOCAtMDUwMAotCi0gICAgODY0MUhQQ046IENvbmZpZyBmaWxlIGNsZWFudXAKLQotICAgIFRoZXJlIGFyZSBzZXZlcmFsIGl0ZW1zIGluIHRoZSBjb25maWcgZmlsZSB0aGF0IHdlcmUgaGFyZGNvZGVkCi0gICAgYnV0IHRoYXQgc2hvdWxkIHJlYWxseSBiZSBiYXNlZCBvbiBvdGhlciBjb25maWcgb3B0aW9ucywgc2luY2UKLSAgICB0aGUgcmVnaW9ucyBhcmUgY29udGlndW91cyBhbmQgZGVwZW5kIG9uIGJlaW5nIHNvLglUaGlzIGNsZWFucwotICAgIHRoYXQgdXAgYSBiaXQuICBBbHNvLCBhZGQgQlJfUEhZU19BRERSKCkgbWFjcm8gdG8gY29udmVydAotICAgIGFkZHJlc3NlcyBpbnRvIHRoZSBwcm9wZXIgZm9ybWF0IGZvciBCUiByZWdpc3RlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRjNzdkZTNmMTQ0Y2EwODhjMzg2N2JkNjI0MDcxOGMxMGY1YTlkNjkKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDMxIDE3OjEzOjMyIDIwMDggLTA1MDAKLQotICAgIDg2eHg6IE1ha2UgZHJhbV9zaXplIGEgcGh5c19zaXplX3QKLQotICAgIEl0J3MgY3VycmVudGx5IGEgbG9uZyBhbmQgc2hvdWxkIGJlIHBoeXNfc2l6ZV90LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxMDQ5OTJmYzU0MTMwMmE2YmFjNzQ0NDhlMDFlN2ZkYWQyMGFiY2EwCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIE5vdiAyIDE4OjE5OjMyIDIwMDggLTA2MDAKLQotICAgIHBvd2VycGMgODZ4eDogSGFuZGxlIENDU1IgcmVsb2NhdGlvbiBlYXJsaWVyCi0KLSAgICBDdXJyZW50bHksIHRoZSBDQ1NSIGdldHMgcmVsb2NhdGVkIHdoaWxlIHRyYW5zbGF0aW9uIGlzCi0gICAgZW5hYmxlZCwgbWVhbmluZyB3ZSBuZWVkIDIgQkFUIHRyYW5zbGF0aW9ucyB0byBnZXQgdG8gYm90aCB0aGUKLSAgICBvbGQgbG9jYXRpb24gYW5kIHRoZSBuZXcgbG9jYXRpb24uCUFsc28sIHRoZSBERUZBVUxUCi0gICAgQ0NTUiBsb2NhdGlvbiBoYXMgYSBkZXBlbmRlbmN5IG9uIHRoZSBCQVQgdGhhdCBtYXBzIHRoZQotICAgIEZMQVNIIHJlZ2lvbi4gIE1vdmluZyB0aGUgcmVsb2NhdGlvbiByZW1vdmVzIHRoaXMgdW5uZWNlc3NhcnkKLSAgICBkZXBlbmRlbmN5LiBUaGlzIG1ha2VzIGl0IGVhc2llciBhbmQgbW9yZSBpbnR1dGl2ZSB0bwotICAgIG1vZGlmeSB0aGUgYm9hcmQncyBtZW1vcnkgbWFwLgotCi0gICAgU3dhcCBCQVRzIDMgYW5kIDQgb24gODYxMCBzbyB0aGF0IGFsbCA4Nnh4IGJvYXJkcyB1c2UgdGhlIHNhbWUKLSAgICBCQVQgZm9yIENDU1Igc3BhY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFmNWQxMDBlOGQ1Y2Q0OWQ2OWQ1MmQyMGYxMTgxZWIwNmRkYjRkZGYKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDMxIDE3OjE0OjE0IDIwMDggLTA1MDAKLQotICAgIG1wYzg2NDE6IE1ha2UgUENJIGFuZCBSSU8gbXV0dWFsbHkgZXhjbHVzaXZlLCBmaXggbm9uLVBDSSBidWlsZAotCi0gICAgWW91IGNhbid0IGFjdHVhbGx5IGhhdmUgYm90aCwgYW5kIHdpdGggc29tZSBjb21pbmcgY2hhbmdlcyB0bwotICAgIGNoYW5nZSB0aGUgbWVtb3J5IG1hcCBmb3IgdGhlIGJvYXJkIGFuZCBzdXBwb3J0IDM2LWJpdCBwaHlzaWNhbCwKLSAgICB3ZSBuZWVkIHRoZSBleHRyYSBCQVQgdGhhdCBpcyBiZWluZyBjb25zdW1lZCBieSBoYXZpbmcgYm90aC4KLQotICAgIEkgYWxzbyBtYWtlIG5vbi1QQ0kgY29uZmlncyBidWlsZCBjbGVhbmx5LCBmb3IgdGhlIHNha2Ugb2Ygc2FuaXR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5ODY5M2I4NWQ0MmZmNDM4Mzc1ZGM2ZDZkY2FkYzcwZWI3YjA1MGJiCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAzMSAxNzoxNDowMCAyMDA4IC0wNTAwCi0KLSAgICBtcGM4NjQxOiBTdG9wIHN1cHBvcnRpbmcgbm9uLVBDSV9QTlAgY29uZmlncwotCi0gICAgV2UgZG9uJ3QgYWN0dWFsbHkgZXZlciBkbyB0aGlzLCByZW1vdmUgdGhlIGNvZGUgc28gd2UKLSAgICBjYW4gc3RvcCBtYWludGFpbmluZyBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTRmNjlkMWJkMjFhMTIwNDk3NDQ5ODlkMmRkNmI1MTk5YzliOGYyMwotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAyNCAxMjo1OToxMiAyMDA4ICswMDAwCi0KLSAgICBDb2xkRmlyZTogRml4IE01MzI5RVZCIGFuZCBNNTM3M0VWQiBuYW5kIGlzc3VlCi0KLSAgICBGaXggY29tcGlsYXRpb24gaXNzdWUgY2F1c2VkIGJ5IGEgZmV3IG1pc21hdGNoZXMuCi0gICAgUHJvdmlkZSBwcm9wZXIgbmFuZCBjaGlwIHNlbGVjdCBlbmFibGUvZGlzYWJsZSBpbgotICAgIG5hbmRfaHdjb250cm9sKCkgcmF0aGVyIHRoYW4gaW4gYm9hcmRfbmFuZF9pbml0KCkKLSAgICBqdXN0IGVuYWJsZSBvbmNlLiBSZW1vdmUgcmVkdW5kYW50IGxvY2FsIG5hbmQgZHJpdmVyCi0gICAgZnVuY3Rpb25zIC0gbmFuZF9yZWFkX2J5dGUoKSwgbmFuZF93cml0ZV9ieXRlKCkgYW5kCi0gICAgbmFuZF9kZXZfcmVhZHkoKSB0byB1c2UgY29tbW9uIG5hbmQgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFiMjcwODQ0MjIyNGE1NTFhMGI4NjViNTI3MTAzMDYzMzM4ODg5MzIKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgMjIgMTE6NTU6MzAgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBjb21waWxhdGlvbiBlcnJvcgotCi0gICAgVGhlIGVycm9yIHdhcyBjYXVzZWQgYnkgdGhlIGNoYW5nZSBmb3Igc3RybWh6KCkgaW4gY3B1LmMuCi0gICAgQSBmZXcgb2YgdGhlbSB3ZXJlIG9uZSBleHRyYSBjbG9zZSBwYXJlbnRoZXNpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1MzZlN2RhYzE2NzY5OTU0OTE1YTQ4NGU2ODJhMmVmYjI4Njk5MTMzCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgT2N0IDIyIDExOjM4OjIxIDIwMDggKzAwMDAKLQotICAgIENvbGRGaXJlOiBBZGQgTUNGNTMwMXggQ1BVIGFuZCBNNTMwMTdFVkIgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGEyMWQwYzJjYzlhZGQ4ODk0ZDk3MWFiNzkxZjQwMzJmMDc3ZGI4MTcKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjEgMTU6Mzc6MDIgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBTQkYgc3VwcG9ydCBmb3IgTTUyMjc3RVZCCi0KLSAgICBBZGQgc2VyaWFsIGJvb3Qgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGIyMDI4MTZjNjEwNDJjMTgzZmU2N2QwOTdhNTg5M2IwZjJkYWZiYTAKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjEgMTQ6MTk6MjYgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IFVzZSBDRkkgZHJpdmVyIGZvciBNNTI3MkMzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjM5NjJkM2Y1NzRlNWExY2ZmYWNkNGU5YmM0ODcxMzA2MGEyYTMxNAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAyMSAxMzo0Nzo1NCAyMDA4ICswMDAwCi0KLSAgICBDb2xkRmlyZTogUmVsb2NhdGUgRkVDJ3MgR1BJTyBhbmQgbWlpIGZ1bmN0aW9ucyBwcm90b2NvbHMKLQotICAgIFBsYWNlIEZFQyBwaW4gYXNzaWdubWVudHMgaW4gY3B1X2luaXQuYyBmcm9tIHBsYXRmb3JtJ3MKLSAgICBtaWkuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZlODBmNWFhMDlmOGQ0MWJhYzUwYjM4ZGM3NDg4ZWNkMjIxMDc4MDIKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjEgMTI6MTU6NDQgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IFJlbW92ZSBwbGF0Zm9ybXMgbWlpLmMgZmlsZQotCi0gICAgV2lsbCB1c2UgbWNmbWlpLmMgZHJpdmVyIGluIGRyaXZlcnMvbmV0IHJhdGhlciB0aGFuCi0gICAga2VlcCBjcmVhdGluZyBuZXcgbWlpLmMgZm9yIGVhY2ggZnV0dXJlIHBsYXRmb3JtLgotICAgIFJlbW92ZSBFQitNQ0YtRVYxMjMsIGNvYnJhNTI3MiwgaWRtciwgTTUyMzVFVkIsCi0gICAgTTUyNzFFVkIsIE01MjcyQzMsIE01Mjc1RVZCLCBNNTI4MkVWQiwgTTUzMjlFVkIsCi0gICAgTTUzNzNFVkIsIE01NDQ1MUVWQiwgTTU0NDU1RVZCLCBNNTQ3eEVWQiwgYW5kIE01NDh4RVZCJ3MKLSAgICBtaWkuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDAxMjUyMmZlZjNiMzgyNDY5MTI1YmViNDZhMzE1YWI0ZGVlMDJmYjAKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjEgMTA6MDM6MDcgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IE1vZHVsZXMgaGVhZGVyIGZpbGVzIGNsZWFudXAKLQotICAgIENvbnNvbGlkYXRlIEFUQSwgZVBPUlQsIFFTUEksIEZsZXhDYW4sIFBXTSwgUk5HLAotICAgIE1ESEEsIFNLSEEsIElOVEMsIGFuZCBGbGV4QnVzIHN0cnVjdHVyZXMgYW5kCi0gICAgZGVmaW5pdGlvbnMgaW4gaW1tYXBfNXh4eC5oIHRvIG1vcmUgdW5pZnkgbW9kdWxlcwotICAgIGhlYWRlciBmaWxlcy4gQXBwZW5kIERTUEkgc3VwcG9ydCBmb3IgbTU0N3hfOHguCi0gICAgU1NJIGNsZWFudXAuIFJlbW92ZSBVU0IgSG9zdCBzdHJ1Y3R1cmUgZnJvbSBpbW1hcF81MzkuaC4KLSAgICBBcHBseSBjaGFuZ2VzIHRvIHVzZSBGbGV4QnVzIHN0cnVjdHVyZXMgaW4gbWNmNTJ4MidzCi0gICAgY3B1X2luaXQuYyBhbmQgcGxhdGZvcm0gY29uZmlndXJhdGlvbiBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhYzIzMzFhZWU5OWFkMzZiZTBmY2ZlZDhjNDk5MjJlM2M2MWI1NzZkCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDIxIDA4OjUyOjM2IDIwMDggKzAwMDAKLQotICAgIENvbGRGaXJlOiBSZW1vdmUgbGlua2VyIGZpbGUKLQotICAgIEVhY2ggZGlmZmVyZW50IGJ1aWxkIGZvciBNNTQ0NTVFVkIgYW5kIE01MjM1RVZCIHdpbGwKLSAgICBjcmVhdGUgYSB1LWJvb3QubGRzIGxpbmtlciBmaWxlLiBJdCBpcyByZWR1bmRhbnQgdG8KLSAgICBrZWVwIHRoZSB1LWJvb3QubGRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDgyOTMyMzA3M2M1MDU1NTZlZDVmNTA3M2Y5MWFkYjUwNDU4NGQ0NQotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJRnJpIE9jdCAzMSAxMToyNjo0NCAyMDA4IC0wNTAwCi0KLSAgICBwcGM6IEZpeCBjb21waWxlIHdhcm5pbmdzIHdoZW4gIUNPTkZJR19PRl9MSUJGRFQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBhODBiMjFkNTEyNzU4MzE3MWQ2ZTliYzdmNzIyOTQ3NjQxODk4MDEyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgT2N0IDMxIDEyOjEyOjEyIDIwMDggKzAxMDAKLQotICAgIGNvbW1vbi9NYWtlZmlsZTogY3JlYXRlIG90aGVycyBncm91cCBmb3Igbm9uIGNvcmUsIGVudmlyb25tZW50IGFuZCBjb21tYW5kIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNjBjNjhkOWMxYzZkMThjZTAyYzg2MmEwNTcxOGZkOTRmOTdjMTNkMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAzMSAwMToxMzozNyAyMDA4ICswMTAwCi0KLSAgICBUUU04MjYwOiB1c2UgQ0ZJIGZsYXNoIGRyaXZlciBpbnN0ZWFkIG9mIGN1c3RvbSBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMjBkMDQ3NzRmNGVmM2Y2ZTM4OTc0NjM2ZTBlMzZhZTBmMGI1NTAxZgotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDMwIDE3OjM1OjMwIDIwMDggLTA1MDAKLQotICAgIENvbnNvbGlkYXRlIE1BWC9NSU4gZGVmaW5pdGlvbnMKLQotICAgIFRoZXJlIHdlcmUgc2V2ZXJhbCwgbm93IHRoZXJlIGlzIG9uZSAodHdvIGlmIHlvdSBjb3VudCB0aGUgbG93ZXItY2FzZQotICAgIHZlcnNpb25zKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI5OGU0NzZjNjZmZDg4ZDBiYzRmMDM3MTExODY1MmQyYjVkZTRlOGEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgT2N0IDMwIDA5OjIzOjA5IDIwMDggKzAxMDAKLQotICAgIG1nc3V2ZDogcmVtb3ZlIHVudXNlZCBkZWZpbmVzIGluIGNvbmZpZyBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAzY2JkODIzMTE2ZWE4YjdjNjU0ZTI3NWE4YzJmY2E4N2NkMWY1ZGM1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTm92IDIgMTY6MTQ6MjIgMjAwOCArMDEwMAotCi0gICAgQ29kaW5nIFN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhNDdmOTU3YWI1MjMwMTk5OTJmZGVmODU3YWYwMWJkNzFjNThhNGRhCi1BdXRob3I6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+Ci1EYXRlOglGcmkgT2N0IDMxIDIyOjMzOjIxIDIwMDggKzAxMDAKLQotICAgIE5BTkQ6IEFsbG93IE5BTkQgYW5kIE9uZU5BTkQgdG8gY29leGlzdAotCi0gICAgVGhpcyByZW1vdmVzIGluIG5hbmQuaCBjb2RlIHRoYXQgaXMgdmVyYmF0aW0gZHVwbGljYXRlZCBmcm9tIGJibS5oLAotICAgIGluY2x1ZGluZyBkaXJlY3RseSBiYm0uaCBpbiBuYW5kLmguIFRoZSBwcmV2aW91cyBzdGF0ZSBvZiBhZmZhaXJzCi0gICAgcHJldmVudGVkIGNvbXBpbGluZyBjb2RlIGZvciBhIGJvYXJkIGhvc3RpbmcgYm90aCBOQU5EIGFuZCBPbmVOQU5EIGNoaXBzLgotCi0gICAgUmVwb3J0ZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmlAdW5pcHYuaXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyZjc3YzdmNDViOWEzN2VmMjY1YThkYmUzYzE4ZWZhNzA2ZmVkMjE0Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAzMSAxMzo1MToxMiAyMDA4IC0wNTAwCi0KLSAgICBKRkZTMjogRWxpbWluYXRlIGNvbXBpbGVyIGVycm9yIHdoZW4gYm90aCBOQU5EIGFuZCBPbmVOQU5EIGFyZSBlbmFibGVkLgotCi0gICAgUmVwb3J0ZWQtYnk6IEFsZXNzYW5kcm8gUnViaW5pIDxydWJpbmktbGlzdEBnbnVkZC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNTdmYzI4OTQ3ZTI0OGZiMDNjNDlhMjhiNDY3Njg2Mjk5ODk1MDU1Ci1BdXRob3I6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDMxIDA1OjA3OjA0IDIwMDggLTA1MDAKLQotICAgIE5BTkQ6IEFkZCBOQU5EIHN1cHBvcnQgZm9yIE1QQzg1MzZEUyBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBkZWZpbmVzIDFNIFRMQiZMQVcgc2l6ZSBmb3IgTkFORCBvbiBNUEM4NTM2RFMsIGFzc2lnbnMgMHhmZmEwMDAwMAotICAgIGZvciBDT05GSUdfU1lTX05BTkRfQkFTRSBhbmQgYWRkcyBvdGhlciBOQU5EIHN1cHBvcnRzIGluIGNvbmZpZyBmaWxlLgotICAgIEl0IGFsc28gbW92ZXMgZW52aXJvbm1lbnQoQ09ORklHX0VOVl9BRERSKSBvdXRzaWRlIG9mIHUtYm9vdCBpbWFnZS4KLQotICAgIFNpbmdlZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNmZjMTEwYmQ4YThkNjQyYjhmN2IwNjUzYmQ5YTA4YTBiN2MzZDUwYgotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAzMSAwNTowNjoxNCAyMDA4IC0wNTAwCi0KLSAgICBOQU5EOiBGaXggQ09ORklHX0VOVl9BRERSIGZvciBNUEM4NTcyRFMKLQotICAgIENPTkZJR19FTlZfQUREUiBzaG91bGQgYmUgKENPTkZJR19TWVNfTU9OSVRPUl9CQVNFIC0gQ09ORklHX0VOVl9TRUNUX1NJWkUpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTFiNTcyYTgwMWJlNTc3OTBmZTI2YWRhYTUzMDIxMGU3ZmJhNTljYwotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglGcmkgT2N0IDI0IDEwOjQ5OjQ4IDIwMDggKzA5MDAKLQotICAgIHNoOiByc2s3MjAzOiBNb3ZlZCByc2s3MjAzIGJvYXJkIHRvIGJvYXJkL3JlbmVzYXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDU4NDUzYjAwYjNlYmIyNmFhYTkwMTIxMDAyM2Y5OTUwNGE5MGJiMDAKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJRnJpIE9jdCAyNCAxMDo0ODozMSAyMDA4ICswOTAwCi0KLSAgICBzaDogTWlnb1I6IE1vdmVkIE1pZ29SIGJvYXJkIHRvIGJvYXJkL3JlbmVzYXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGMxZGEyYTIyODE3YmE4NWI0MzdhZmEyZjRlNzE1ZTY1OGIyMTlmZDEKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJRnJpIE9jdCAyNCAxMDozOTo0NCAyMDA4ICswOTAwCi0KLSAgICBzaDogcjJkcGx1czogTW92ZWQgcjJkcGx1cyBib2FyZCB0byBib2FyZC9yZW5lc2FzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA3ODM4NWJmMjM1OWQ4MjgxODRkMGIzNjQ5ZjdhZTZiOTMzNDIwMDAwCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CUZyaSBPY3QgMjQgMTA6MzY6MTMgMjAwOCArMDkwMAotCi0gICAgc2g6IHNoNzc2M3JkcDogTW92ZWQgc2g3NzYzcmRwIGJvYXJkIHRvIGJvYXJkL3JlbmVzYXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGM2NTI1ZDQ1OWMzNTBiZmMyNDZlYTc4MjY0NTZhZjc3ZTFlMzE0ZWIKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJRnJpIE9jdCAyNCAxMDozNToxOSAyMDA4ICswOTAwCi0KLSAgICBzaDogc2g3Nzg1bGNyOiBNb3ZlZCBzaDc3ODVsY3IgYm9hcmQgdG8gYm9hcmQvcmVuZXNhcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYWNkM2UzMGQwOWE3M2Y4NzYyMjJmMGQ0OTZjNGY1MmVlOWQwNzcxZAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglGcmkgT2N0IDI0IDEwOjM0OjIxIDIwMDggKzA5MDAKLQotICAgIHNoOiByNzc4MG1wOiBNb3ZlZCByNzc4MG1wIGJvYXJkIHRvIGJvYXJkL3JlbmVzYXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGY4NGU2ZWEyNzUzNTNiOGZlYTc3MmVjNzU1M2ZmN2U0YjFmNjQyZTAKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJRnJpIE9jdCAyNCAxMDozMjoxNCAyMDA4ICswOTAwCi0KLSAgICBzaDogYXAzMjVyeGE6IE1vdmVkIGFwMzI1cnhhIGJvYXJkIHRvIGJvYXJkL3JlbmVzYXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDlhYmRhNmJhNzM1ZWZiMDU5ZjYzZGNiMjVkNzhiMTc0YmZjYWQxYWQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAeHBlcnQuZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMzEgMDE6MTI6MjggMjAwOCArMDEwMAotCi0gICAgQ0ZJIERyaXZlcjogRml4ICJmbGFzaCBub3QgcmVhZHkiIHByb2JsZW0KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIG9uIHN5c3RlbXMgd2hlcmUgdGhlIE5PUiBmbGFzaCBpcyBhdHRhY2hlZAotICAgIHRvIGEgNjQgYml0IGJ1cy4gIFRoZSB0b2dnbGUgYml0IGRldGVjdGlvbiBpbiBmbGFzaF90b2dnbGUoKSBpcyBiYXNlZAotICAgIG9uIHRoZSBhc3N1bXB0aW9uIHRoYXQgdGhlIHNhbWUgZmxhc2ggYWRkcmVzcyBpcyByZWFkIHR3aWNlIHdpdGhvdXQKLSAgICBhbnkgb3RoZXIgaW50ZXJqYWNlbnQgZmxhc2ggYWNjZXNzZXMuICBIb3dldmVyLCBvbiAzMiBiaXQgc3lzdGVtcyB0aGUKLSAgICBmdW5jdGlvbiBmbGFzaF9yZWFkNjQoKSBbYXMgY3VycmVudGx5IGltcGxlbWVudGVkXSBkb2VzIG5vdCBwZXJmb3JtCi0gICAgYW4gYXRvbWljIDY0IGJpdCByZWFkIC0gaW5zdGVhZCwgdGhpcyBpcyBicm9rZW4gZG93biBpbnRvIHR3byAzMiBiaXQKLSAgICByZWFkIGFjY2Vzc2VzIG9uIGFkZHJlc3NlcyAiYWRkciIgYW5kICJhZGRyICsgNCIuICBTbyBpbnN0ZWFkIG9mCi0gICAgcmVhZGluZyBhIDY0IGJpdCB2YWx1ZSB0d2ljZSBmcm9tICJhZGRyIiwgd2Ugc2VlIGEgc2VxdWVuY2Ugb2YgNCAzMgotICAgIGJpdCByZWFkcyBmcm9tICJhZGRyIiwgImFkZHIgKyA0IiwgImFkZHIiLCBhbmQgImFkZHIgKyA0Ii4JVGhlCi0gICAgY29uc2VxdWVuY2UgaXMgdGhhdCBmbGFzaF90b2dnbGUoKSBmYWlscyB0byB3b3JrLgotCi0gICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGEgc2ltcGxlLCBidXQgc29tZXdoYXQgdWdseSBzb2x1dGlvbiwgYXMgaXQKLSAgICBhdm9pZHMgdGhlIHVzZSBvZiBmbGFzaF9yZWFkNjQoKSBpbiB0aGlzIGNyaXRpY2FsIHBsYWNlIChieSBicmVha2luZwotICAgIGl0IGRvd24gbWFudWFsbHkgaW50byAzMiBiaXQgcmVhZCBvcGVyYXRpb25zKSBpbnN0ZWFkIG9mIHJld3JpdGluZwotICAgIGZsYXNoX3JlYWQ2NCgpIHN1Y2ggdG8gcGVyZm9ybSBhdG9taWMgNjQgYml0IHJlYWRzIGFzIG9uZSBjb3VsZAotICAgIGV4cGVjdC4gIEhvd2V2ZXIsIHN1Y2ggYSByZXdyaXRlIHdvdWxkIHJlcXVpcmUgdGhlIHVzZSBvZiBmbG9hdGluZwotICAgIHBvaW50IGxvYWQgb3BlcmF0aW9ucywgd2hpY2ggYmVjb21lcyBwcmV0dHkgY29tcGxleDoKLQotCXNhdmUgTVNSOwotCXNldCBGbG9hdGluZyBQb2ludCBFbmFibGUgYml0IGluIE1TUjsKLQl1c2UgImxmZCIgaW5zdHJ1Y3Rpb24gdG8gcGVyZm9ybSBhdG9taWMgNjQgYml0IHJlYWQ7Ci0JdXNlICJzdGZkIiB0byBzdG9yZSB2YWx1ZSB0byB0ZW1wb3JhcnkgdmFyaWFibGUgb24gc3RhY2s7Ci0JbG9hZCB1NjQgdmFsdWUgZnJvbSB0ZW1wb3JhcnkgdmFyaWFibGU7Ci0JcmVzdG9yZSBzYXZlZCBNU1I7Ci0JcmV0dXJuIHU2NCB2YWx1ZTsKLQotICAgIFRoZSBiZW5lZml0LWNvc3QgcmF0aW8gb2Ygc3VjaCBhbiBpbXBsZW1lbnRhdGlvbiB3YXMgY29uc2lkZXJlZCB0b28KLSAgICBiYWQgdG8gYWN0dWFsbHkgYXR0ZW1wdCB0aGlzLCBlc3BlY2lhbGx5IGFzIHdlIGNhbiBleHBlY3QgdGhhdCBzdWNoCi0gICAgYW4gaW1wbGVtZW50YXRpb24gd291bGQgbm90IG9ubHkgaGF2ZSBhIGJpZ2dlciBtZW1vcnkgZm9vdHByaW50IGJ1dAotICAgIGFsc28gY2F1c2UgYSBwZXJmb3JtYW5jZSBkZWdyYWRhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2RkNGZlNjNiMDk0ZDRiNzY3ZjEyZmYyNDFkNzI1NjZiNDYxZWU2MQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDMxIDEwOjQ4OjA4IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogRml4IHNwZWxsaW5nIGVycm9yIGluIE1BSU5UQUlORVJTIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGJlMjcwNzk4OTAwYjc1YWQ5YzQ3YzdiNzljNzJmNzA0NDExOTZjNTYKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgT2N0IDI4IDEzOjM3OjAwIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIFBNQzQ0MCBib2FyZCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGJyaW5ncyBQTUM0NDAgYm9hcmQgc3VwcG9ydCB1cCB0byBkYXRlOgotCi0gICAgLSBmaXggR1BJTyBjb25maWd1cmF0aW9uCi0gICAgLSBhZGQgbWlzY19pbml0X2YoKQotICAgIC0gdXNlIGJldHRlciB2YWx1ZXMgZm9yIHVzYmFjdCB2YXJpYWJsZQotICAgIC0gZml4IFVTQiAyLjAgcGh5IHJlc2V0IHNlcXVlbmNlCi0gICAgLSBzaHJpbmsgQkFSMiB0byBzYXZlIFBDSSBhZGRyZXNzIHNwYWNlCi0gICAgLSBhZGQgRkRUIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc1MTgzYjFhN2ZjMDQyMDZkOTc3OWQxM2YxNmUwMzg1M2Q3ZTk2NWQKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgT2N0IDI4IDEzOjM2OjU5IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogRml4IFBNQzQ0MCBCU1AgY29tbWFuZHMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIFBNQzQ0MCBCU1AgY29tbWFuZHMgcGFpbml0IGFuZCBzZWxmcmVzZXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc2YjU2NWI2OWY4ODZkNWFlNzQ4ZGI2NWU0NGY0NjRiMGU3MGQ0MWEKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgT2N0IDI4IDEzOjM2OjU4IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIFBNQzQ0MCBib2FyZCBjb25maWd1cmF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjYTBjMmQ0MmI5MzExNmE4ZTFiOGVmOGFkNDQ5M2M3ZGM5YjVmMmU0Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIE9jdCAyOCAxMzozNjo1NyAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBlc2QgbG9hZHBjaSBjb21tYW5kCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGVzZCdzIGxvYWRwY2kgY29tbWFuZCB3aGVuIG5vdCBhbGwKLSAgICBtZW1vcnkgb24gYWRhcHRlciBib2FyZHMgaXMgYWNjZXNzYWJsZSB2aWEgUENJLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDkyYWE5ZWExMzc5MWNhNDU5MWI1YmRlODk1YTQyNWUyN2FlMmQxMAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjggMTM6MzY6NTYgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBDbGVhbiB1cCBQTUM0NDAgaGVhZGVyCi0KLSAgICAtQ29kaW5nc3R5bGUgY2xlYW51cAotICAgIC1SZW1vdmUgdW51c2VkIEdQSU8gZGVmaW5lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyOTUxMzMyNThhNDRmOTdhNTdmYjJlYzMzOWFlY2ZkYTExZjRkYjk1Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIE9jdCAyOCAxMzozNjo1NSAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEhhbmRsZSBvdGhlciBib2FyZCB2YXJpYW50IGluIFBNQzQ0MCBGUEdBIGNvZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGNjMmRjOWIwOGNmN2MwOWY5ZjIzN2Y4Y2I5MzAzZjExNjAzZDRmYjAKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglNb24gT2N0IDI3IDEyOjM1OjU5IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogTWVyZ2UgeGlsaW54LXBwYzQ0MCBhbmQgeGlsaW54LXBwYzQwNSBjZmcKLQotICAgIFhpbGlueCBwcGM0NDAgYW5kIHBwYzQwNSBoYXZlIG1hbnkgc2ltaWxhcml0aWVzLiBUaGlzIHBhdGNoIG1lcmdlIHRoZQotICAgIGNvbmZpZyBmaWxlcyBvZiBib3RoIGluZnJhc3R1Y3R1cmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzYmVmZDg1NjMzZDMzYzRkY2NhMWYzNTljM2Y0ODQ4YzVhYjhlNGQyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBPY3QgMjUgMDY6NDU6MzEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDb3JyZWN0bHkgY29uZmlndXJlIHRoZSBHUElPIHBpbiBtdXhpbmcgb24gQXJjaGVzCi0KLSAgICBBcmNoZXMgZG9lc24ndCB1c2UgUGVyQ1MzIGJ1dCBHUElPNDMsIHNvIGxldCdzIGNvbmZpZ3VyZSB0aGUgR1BJTwotICAgIHBpbiBtdWx0aXBsZXhpbmcgY29ycmVjdGx5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3Yzg0ZmU2YTA2ZGFkOWY3OTNlZDg1YjM5YjFlNmMxMWE3ODgyZjVjCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgT2N0IDMwIDIzOjIyOjA0IDIwMDggKzAxMDAKLQotICAgIEZpeCB0byB0aGUgYXV0by11cGRhdGUgZmVhdHVyZSBkb2N1bWVudGF0aW9uIChDT05GSUdfVVBEQVRFX1RGVFBfTVNFQ19NQVgpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNGJjN2RlZWU5MDk1ZjIxZTI0M2I3MjRjYTNkNjM0MjUxYzFkNTQzMgotQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLURhdGU6CVdlZCBPY3QgMjkgMjM6Mjc6NDUgMjAwOCAtMDUwMAotCi0gICAgbGliZmR0OiBGaXggYnVnIGluIGZkdF9zdWJub2RlX29mZnNldF9uYW1lbGVuKCkKLQotICAgIFRoZXJlJ3MgY3VycmVudGx5IGFuIG9mZi1ieS1vbmUgYnVnIGluIGZkdF9zdWJub2RlX29mZnNldF9uYW1lbGVuKCkKLSAgICB3aGljaCBjYXVzZXMgaXQgdG8ga2VlcCBzZWFyY2hpbmcgYWZ0ZXIgaXQncyBmaW5pc2hlZCB0aGUgc3Vibm9kZXMgb2YKLSAgICB0aGUgZ2l2ZW4gcGFyZW50LCBhbmQgaW50byB0aGUgc3Vibm9kZXMgb2Ygc2libGluZ3Mgb2YgdGhlIG9yaWdpbmFsCi0gICAgbm9kZSB3aGljaCBjb21lIGFmdGVyIGl0IGluIHRoZSB0cmVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGYyNDJhMDg4NzE4MzllYWMwODFiYTViNTk5YWY5NzlmM2ExNDhhMGQKLUF1dGhvcjogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KLURhdGU6CVR1ZSBPY3QgMjggMDg6MjY6NTIgMjAwOCArMDEwMAotCi0gICAgZmR0X3Jlc2l6ZSgpOiBlbnN1cmUgbWluaW11bSBwYWRkaW5nCi0KLSAgICBmZHRfYWRkX21lbV9yc3YoKSByZXF1aXJlcyBzcGFjZSBmb3IgYSBzdHJ1Y3QgZmR0X3Jlc2VydmVfZW50cnkKLSAgICAoMTYgYnl0ZXMpLCBzbyBtYWtlIHN1cmUgdGhhdCBmZHRfcmVzaXplIGF0IGxlYXN0IGFkZHMgdGhhdCBtdWNoCi0gICAgcGFkZGluZywgbm8gbWF0dGVyIHdoYXQgdGhlIGxvY2F0aW9uIG9yIHNpemUgb2YgdGhlIGZkdCBpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIEtvcnNnYWFyZCA8amFjbWV0QHN1bnNpdGUuZGs+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ2ODViNzRjNjRhMzg4NDlmMWExMjliM2FiODQ2ZmJmNjdkZDkzN2UKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMjMgMjE6NTk6MzUgMjAwOCArMDgwMAotCi0gICAgNzR4eDogdXNlIHI0IGluc3RlYWQgb2YgcjIgaW4gbG9ja19yYW1faW5fY2FjaGUgYW5kIHVubG9ja19yYW1faW5fY2FjaGUKLQotICAgIFRoZSBwYXRjaCBpcyBmb2xsb3dpbmcgdGhlIGNvbW1pdCAzOTI0Mzg0MDYwNDE0MTVmZTY0YWI4NzQ4ZWM1YWI1YWQwMWQxY2Y3Ci0KLSAgICBtcGM4Nnh4OiB1c2UgcjQgaW5zdGVhZCBvZiByMiBpbiBsb2NrX3JhbV9pbl9jYWNoZSBhbmQgdW5sb2NrX3JhbV9pbl9jYWNoZQotCi0gICAgVGhpcyBpcyBuZWVkZWQgaW4gdW5sb2NrX3JhbV9pbl9jYWNoZSgpIGJlY2F1c2UgaXQgaXMgY2FsbGVkIGZyb20gQyBhbmQKLSAgICB3aWxsIGNvcnJ1cHQgdGhlIHNtYWxsIGRhdGEgYXJlYSBhbmNob3IgdGhhdCBpcyBrZXB0IGluIFIyLgotCi0gICAgbG9ja19yYW1faW5fY2FjaGUoKSBpcyBtb2RpZmllZCBzaW1pbGFybHkgYXMgZ29vZCBjb2RpbmcgcHJhY3RpY2UsIGJ1dAotICAgIGlzIG5vdCBjYWxsZWQgZnJvbSBDLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci0KLSAgICBhbHNvLCB0aGUgcjIgaXMgdXNlZCBhcyBnbG9iYWwgZGF0YSBwb2ludGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGUwNTNhYjE5MDNjY2FlNjA0OGVmNzU5MDI1YjlmNjc1YmJhOTE0NTAKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDI4IDExOjQ1OjA0IDIwMDggLTA1MDAKLQotICAgIG1wYzgzeHggcGNpOiBSb3VuZCB1cCBtZW1vcnkgc2l6ZSBpbiBpbmJvdW5kIHdpbmRvdy4KLQotICAgIFRoZSBjdXJyZW50IGNhbGN1bGF0aW9uIHdpbGwgZmFpbCB0byBjb3ZlciBhbGwgbWVtb3J5IGlmCi0gICAgaXRzIHNpemUgaXMgbm90IGEgcG93ZXIgb2YgdHdvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFjNjcxOTc3ZGM4MTM1OTYyOGJlMjdhYzk5YzE3NGU3NmU4MDY5YmEKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMjMgMjE6MTk6MTMgMjAwOCArMDgwMAotCi0gICAgODZ4eDogcmVtb3ZlIHRoZSB1bnVzZWQgZGVmaW5pdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVhYTQ0YzVkYzgzNzU2YzMwNjdiOWU2YzlkYjYyNmZhY2QwYjA2NjAKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjggMTc6NDc6NDkgMjAwOCArMDgwMAotCi0gICAgODZ4eDogcmVtb3ZlIHRoZSByZWR1bmRhbnQgcjIgZ2xvYmFsIGRhdGEgcG9pbnRlciBzYXZlCi0KLSAgICBUaGUgY29tbWl0IDY3MjU2Njc4ZjAwYzA5YjBhN2YxOWU4NjJlNWMxODQ3NTUzZDMxYmMgYWRkCi0gICAgdGhlIGFub3RoZXIgZ2xvYmFsIGRhdGEgcG9pbnRlciBzYXZlLCBidXQgaW4gZmFjdCB0aGUKLSAgICBnbG9iYWwgZGF0YSBwb2ludGVyIHdpbGwgYmUgaW5pdGlhbGl6ZWQgaW4gdGhlIGJvYXJkX2luaXRfciwKLSAgICBzbyByZW1vdmUgaXQgc3VjaCBhcyB0aGUgODV4eC84M3h4IGZhbWlseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGt1bWFyLmdhbGFAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJkODg4ZTk1NDQ0MTk2NjUzMzRhNmY0N2Y4MWYzNDAxMWNlYTM4ZjMKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjggMTc6NDc6NDEgMjAwOCArMDgwMAotCi0gICAgODZ4eDogcmVtb3ZlIHRoZSB1bnVzZWQgY29kZSBmb3IgODZ4eCBmYW1pbHkKLQotICAgIEkgYmVsaWV2ZSB0aGVzZSBjb2RlIHdhcyBjb3BpZWQgZnJvbSA3NHh4IGZhbWlseSwgYnV0IGZvcgotICAgIDg2eHgsIGl0IGlzIHVudXNlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGt1bWFyLmdhbGFAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDViYTFlZjUwNzQwMmJjNWUzNDRkYzM3NDIwMzc5MmE0MGYyMjJlOGEKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjggMTc6NDY6MzUgMjAwOCArMDgwMAotCi0gICAgODZ4eDogcmVtb3ZlIHRoZSBzZWNvbmQgRERSIExBVyBzZXR0aW5nIGZvciBtcGM4NjQxaHBjbgotCi0gICAgVGhlIEREUjEgTEFXIHdpbGwgcHJlY2VkZW5jZSB0aGUgRERSMiBMQVcsIHNvIHJlbW92ZQotICAgIHRoZSBzZWNvbmQgRERSIExBVy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTM3YTJkZmQxMWFjNTFhZTMxNTRmMTNmMzIzNjA5YjMzYTRhMDcyZQotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAyOCAxNzo0NjoyMyAyMDA4ICswODAwCi0KLSAgICA4Nnh4OiByZW1vdmUgdGhlIHVudXNlZCBkZHJfZW5hYmxlX2VjYyBpbiB0aGUgYm9hcmQgZmlsZQotCi0gICAgVGhlIEREUiBjb250cm9sbGVyIG9mIDg2eHggcHJvY2Vzc29ycyBoYXZlIHRoZSBFQ0MgZGF0YSBpbml0Ci0gICAgZmVhdHVyZSwgYW5kIHRoZSBuZXcgRERSIGNvZGUgaXMgdXNpbmcgdGhlIGZlYXR1cmUsIHdlIGRvbid0Ci0gICAgbmVlZCB0aGUgd2F5IHdpdGggRE1BIHRvIGluaXQgbWVtb3J5IGFnYWluLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8a3VtYXIuZ2FsYUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGMyYWRhZDg1YmY1ODBkNjU5MTZjOTQwNjgzZjZlOTY3MWU4YTVkZAotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAyOCAxNzo0NjoxMiAyMDA4ICswODAwCi0KLSAgICA4Nnh4OiBNb3ZlIHRoZSBjbGVhcl90bGJzIGJlZm9yZSBNTVUgdHVybiBvbgotCi0gICAgV2UgbXVzdCBpbnZhbGlkYXRlIFRMQnMgYmVmb3JlIE1NVSB0dXJuIG9uLCBidXQKLSAgICBjdXJyZW50bHkgdGhlIGNvZGUgaXMgbm90LCBpZiB0aGVyZSBhcmUgc29tZSBzdGFsZQotICAgIFRMQiBlbnRyeSB2YWxpZCBpbiB0aGUgVExCcywgaXQgd2lsbCBjYXVzZSBzdHJhbmdlCi0gICAgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVjZGFkZTA3YjExOGQwNzE1NGNiODgyNjUwZjk3NzhjZWNjOGE4N2MKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gT2N0IDI3IDE1OjU3OjA4IDIwMDggLTA1MDAKLQotICAgIG1wYzgzMTNlcmRiOiBEb2N1bWVudCBOQU5EIGJvb3QuCi0KLSAgICBQcmV2aW91c2x5LCB0aGUgZG9jdW1lbnRhdGlvbiBjbGFpbWVkIHRoYXQgTkFORCBib290IGlzIG5vdCBzdXBwb3J0ZWQuCi0gICAgVGhpcyBpcyBubyBsb25nZXIgdHJ1ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmQ3OGJjNmIyYWViZjU1NjZhYWM0NjRmOTM2Yjg4ZGZkOTdhYjBiZAotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgMjkgMTQ6MjA6MjYgMjAwOCAtMDUwMAotCi0gICAgTkFORDogUHJvcGVybHkgY3JlYXRlIEpGRlMyIGNsZWFubWFya2Vycy4KLQotICAgIEFzIHJlcG9ydGVkIGJ5IElsa28gSWxpZXYgPGlsaWV2QHJvbmV0aXguYXQ+LCB0aGUgIm5hbmQgZXJhc2UgY2xlYW4iCi0gICAgY29tbWFuZCBpcyBjdXJyZW50bHkgYnJva2VuLCBhbmQgYW1vbmcgb3RoZXIgdGhpbmdzIGNhdXNlcyBhbGwgYmxvY2tzCi0gICAgdG8gYmUgbWFya2VkIGJhZC4KLQotICAgIFRoaXMgaW1wbGVtZW50cyBpdCBwcm9wZXJseSB1c2luZyBNVERfT09CX0FVVE8sIGFsb25nIHdpdGggc29tZQotICAgIGluZGVudGF0aW9uIGZpeGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmN2ZlNTdjMDk4NjZiNDQ2OTJkMThjOGNmMjI4MjhiZDEzN2VjNThkCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE9jdCAyOSAxMzo0Mjo0MSAyMDA4IC0wNTAwCi0KLSAgICBOQU5EIGZzbCBlbGJjOiBTZXQgRk1SW0VDQ01dIGJhc2VkIG9uIHBhZ2Ugc2l6ZS4KLQotICAgIEhhcmR3YXJlIGV4cGVjdHMgRUNDTSAwIGZvciBzbWFsbCBwYWdlIGFuZCBFQ0NNIDEgZm9yIGxhcmdlIHBhZ2UKLSAgICB3aGVuIGJvb3RpbmcgZnJvbSBOQU5ELCBzbyB1c2UgdGhvc2UgZGVmYXVsdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGMwMTNiNzQ5NzVkYWIwODA1ZWY2ZDM2OWIwMTMyMzBjNGU4YTY2MGQKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgMjkgMTM6MzI6NTkgMjAwOCAtMDQwMAotCi0gICAgTkFORDogQWRkIHN1cHBvcnQgZm9yIE1QQzg1NzJEUyBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBkZWZpbmVzIDFNIFRMQiZMQVcgc2l6ZSBmb3IgTkFORCBvbiBNUEM4NTcyRFMsIGFzc2lnbnMKLSAgICAweGZmYTAwMDAwIGZvciBDT05GSUdfU1lTX05BTkRfQkFTRSBhbmQgYWRkcyBvdGhlciBOQU5EIHN1cHBvcnRzIGluCi0gICAgY29uZmlnIGZpbGUuCi0KLSAgICBJdCBhbHNvIG1vdmVzIGVudmlyb25tZW50KENPTkZJR19FTlZfQUREUikgb3V0c2lkZSBvZiB1LWJvb3QgaW1hZ2UsIHRvCi0gICAgbWFrZSByb29tIGZvciB0aGUgaW5jcmVhc2VkIGNvZGUgc2l6ZSB3aXRoIE5BTkQgZW5hYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRlMTkwYjAzYWFmMjMwOWJkMmUwMjVkMTE4N2EyY2E4ODBmZWRjOTUKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgMjkgMTE6MDU6NTUgMjAwOCAtMDQwMAotCi0gICAgTWFrZSBGcmVlc2NhbGUgbG9jYWwgYnVzIHJlZ2lzdGVycyBhdmFpbGFibGUgZm9yIGJvdGggODN4eCBhbmQgODV4eC4KLQotICAgIC0gUmVuYW1lIGxidXM4M3h4X3QgdG8gZnNsX2xidXNfdCBhbmQgbW92ZSBpdCB0byBhc20vZnNsX2xiYy5oIHNvIHRoYXQgaXQKLSAgICAgIGNhbiBiZSBzaGFyZWQgYnkgYm90aCA4M3h4IGFuZCA4NXh4Ci0gICAgLSBSZW1vdmUgbGJ1czgzeHhfdCBhbmQgcmVwbGFjZSBpdCB3aXRoIGZzbF9sYnVzX3QgaW4gYWxsIDgzeHggYm9hcmRzCi0gICAgICBmaWxlcyB3aGljaCB1c2UgbGJ1czgzeHhfdC4KLSAgICAtIE1vdmUgRk1SLCBGSVIsIEZDUiwgRlBBUiwgTFRFU1IgZnJvbSBtcGM4M3h4LmggdG8gYXNtL2ZzbF9sYmMuaCBzbyB0aGF0Ci0gICAgICA4NXh4IGNhbiBzaGFyZSB0aGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjk1YzEzMGU0YmY3NWI0NDQ3MjBkZGZkODNhY2E4OGY0MWMwNDZjZgotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBPY3QgMjcgMTU6Mzg6MzAgMjAwOCAtMDUwMAotCi0gICAgTkFORDogQWxpZ24gcmlnaHQgY29sdW1uIG9mIHRoZSBzaG9ydGhlbHAgd2l0aCBvdGhlciBjb21tYW5kcy4KLQotICAgIEkgYWNjaWRlbnRhbGx5IGJyb2tlIHRoaXMgaW4gd2hlbiBtYWtpbmcgY29uc2lzdGVudCB0aGUgcGFydGlhbAotICAgIGFsaWdubWVudCBvZiB0aGUgbG9uZ2hlbHAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDMzZWZkZTVlY2FjOTFhYjExOGZmMDBiOTVhMTgxZmQ2ZDc1Zjg2NDUKLUF1dGhvcjogS2FybCBCZWxkYW4gPGthcmwuYmVsZGFuQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBTZXAgMTUgMTY6MDg6MDMgMjAwOCArMDIwMAotCi0gICAgTkFORDogUmVzZXQgY2hpcCBvbiBwb3dlci11cAotCi0gICAgU29tZSBjaGlwcyByZXF1aXJlIGEgUkVTRVQgYWZ0ZXIgcG93ZXItdXAgKGUuZy4gTWljcm9uIE1UMjlGeEd4eHh4eCkuCi0gICAgVGhlIGZpcnN0IGNvbW1hbmQgc2VudCBpcyBOQU5EX0NNRF9SRUFESUQuCi0gICAgSXNzdWUgYSBOQU5EX0NNRF9SRVNFVCBpbiBuYW5kX3NjYW5faWRlbnQgYmVmb3JlIHJlYWRpbmcgdGhlIGRldmljZSBpZC4KLSAgICBUZXN0ZWQgd2l0aCBhbiBNVDI5RjRHMDhBQUMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLYXJsIEJlbGRhbiA8a2FybC5iZWxkYW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzQ1OTEyZDhhYmM1MmRlNzk2YjkwNTlhNThmYWY3YzQxNjZlYWI1OAotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMjQgMTY6MjA6NDMgMjAwOCAtMDUwMAotCi0gICAgTkFORDogc3luYyB3aXRoIDIuNi4yNwotCi0gICAgVGhpcyBicmluZ3MgdGhlIGNvcmUgTkFORCBjb2RlIHVwIHRvIGRhdGUgd2l0aCB0aGUgTGludXgga2VybmVsLgotCi0gICAgU2luY2UgdGhlcmUgd2VyZSBzZXZlcmFsIGRyaXZlcnMgaW4gTGludXggYXMgb2YgdGhlIGxhc3QgdXBkYXRlIHRoYXQgYXJlCi0gICAgbm90IGluIHUtYm9vdCwgSSdtIG5vdCBicmluZ2luZyBvdmVyIG5ldyBkcml2ZXJzIHRoYXQgaGF2ZSBiZWVuIGFkZGVkCi0gICAgc2luY2UgaW4gdGhlIGFic2VuY2Ugb2YgYW4gaW50ZXJlc3RlZCBwYXJ0eS4KLQotICAgIEkgZGlkIG5vdCB1cGRhdGUgT25lTkFORCBzaW5jZSBpdCB3YXMgcmVjZW50bHkgc3luY2VkIGJ5IEt5dW5nbWluIFBhcmssCi0gICAgYW5kIEknbSBub3Qgc3VyZSBleGFjdGx5IHdoYXQgdGhlIGNvbW1vbiBhbmNlc3RvciBpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjFkMGRiMTgwNWMzMzk1MTQ5Nzc3ZTUwN2I2ZGE1MzQxMGFiYWM0ZQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE9jdCAyMSAxNzoyNTo0NyAyMDA4IC0wNTAwCi0KLSAgICBib290bTogQWRkZWQgQ09ORklHX0JPT1RNX3tMSU5VWCwgTkVUQlNELCBSVEVNU30KLQotICAgIEFkZGVkIHRoZSBhYmlsaXR5IHRvIGNvbmZpZyBvdXQgYm9vdG0gc3VwcG9ydCBmb3IgTGludXgsIE5ldEJTRCwgUlRFTVMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1YTk4MTI3ZDgxYTZlZWZjNWE3OGE3MDRkZjYxOWJmZTM2MmVlYjg3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgT2N0IDIxIDE3OjI1OjQ2IDIwMDggLTA1MDAKLQotICAgIGJvb3RtOiBzdXBwb3J0IHN1YmNvbW1hbmRzIGluIGxpbnV4IHBwYyBib290bQotCi0gICAgQWRkIHN1cHBvcnQgZm9yICdiZHQnLCAnY21kbGluZScsICdwcmVwJyB0byB0aGUgbGludXggUFBDIGJvb3RtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ5YzNhODYxZDExNzM1ODM4ZjFmMWIxMTk5OWNlNDMzMDA2ZGM5MTkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBPY3QgMjEgMTc6MjU6NDUgMjAwOCAtMDUwMAotCi0gICAgYm9vdG06IEFkZCBzdWJjb21tYW5kcwotCi0gICAgQWRkIHRoZSBhYmlsaXR5IHRvIGJyZWFrIHRoZSBzdGVwcyBvZiB0aGUgYm9vdG0gY29tbWFuZCBpbnRvIHNldmVyYWwKLSAgICBzdWJjb21tYW5kczogc3RhcnQsIGxvYWRvcywgcmFtZGlzaywgZmR0LCBiZHQsIGNtZGxpbmUsIHByZXAsIGdvLgotCi0gICAgVGhpcyBhbGxvd3MgdXMgdG8gZG8gdGhpbmdzIGxpa2UgbWFuaXB1bGF0ZSBkZXZpY2UgdHJlZXMgYmVmb3JlCi0gICAgdGhleSBhcmUgcGFzc2VkIHRvIGEgYm9vdGluZyBrZXJuZWwgb3Igc2V0dXAgbWVtb3J5IGZvciBhIHNlY29uZGFyeQotICAgIGNvcmUgaW4gbXVsdGljb3JlIHNpdHVhdGlvbnMuCi0KLSAgICBOb3QgYWxsIE9TIHR5cGVzIHN1cHBvcnQgYWxsIHN1YmNvbW1hbmRzIChjdXJyZW50bHkgb25seSBzdGFydCwgbG9hZG9zLAotICAgIHJhbWRpc2ssIGZkdCwgYW5kIGdvIGFyZSBzdXBwb3J0ZWQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGJlMDgzMTU5MzM1MzdmMDYxYmMxY2U2MWYzM2EyOWM1NjQ1OGJiYWQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBPY3QgMjEgMTc6MjU6NDQgMjAwOCAtMDUwMAotCi0gICAgYm9vdG06IE1vdmUgdG8gdXNpbmcgYSBmdW5jdGlvbiBwb2ludGVyIHRhYmxlIGZvciB0aGUgYm9vdCBvcyBmdW5jdGlvbgotCi0gICAgVGhpcyByZW1vdmVzIGEgYml0IG9mIGNvZGUgYW5kIG1ha2VzIGl0IGVhc2llciBmb3IgdGhlIHVwY29taW5nIHN1YiBib290bQotICAgIGNvbW1hbmQgc3VwcG9ydCB0byBjYWxsIGludG8gdGhlIHByb3BlciBPUyBzcGVjaWZpYyBoYW5kbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYTM2OWY0YTQ5MmZhMjgwNWQ4Nzc3NWQyNzM4MGYwZWVhY2EzNWFhNgotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJTW9uIFNlcCAyOSAyMzowMzoxNCAyMDA4ICsxMDAwCi0KLSAgICBpMzg2OiBSZW5hbWVkIHNob3dfYm9vdF9wcm9ncmVzcyBpbiBhc3NlbWJsZXIgY29kZQotCi0gICAgUmVuYW1lZCBzaG93X2Jvb3RfcHJvZ3Jlc3MgaW4gYXNzZW1ibGVyIGluaXQgcGhhc2UgdG8KLSAgICBzaG93X2Jvb3RfcHJvZ3Jlc3NfYXNtIHRvIGF2b2lkIGxpbmsgY29uZmxpY3RzIHdpdGggQyB2ZXJzaW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotCi1jb21taXQgNDQ0MmY0NWIwZTFjYmFkMzVhYTIyZDRjYWQyMmI5MGE1N2UzZjMyZAotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJTW9uIE9jdCAyNyAxNjo0MjowMCAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBVcGRhdGUgTVBDODV4eF9QT1JERVZTUl9JT19TRUwgbWFzawotCi0gICAgVGhlIE1QQzg1NzIgaGFzIGEgNC1iaXQgd2lkZSBQT1JERVZTUiBJT19TRUwgZmllbGQuIE90aGVyIE1QQzg1eHgKLSAgICBwcm9jZXNzb3JzIGhhdmUgYSAzLWJpdCB3aWRlIElPX1NFTCBmaWVsZCBidXQgaGF2ZSB0aGUgbW9zdAotICAgIHNpZ25pZmljYW50IGJpdCBpcyB3aXJlZCB0byAwIHNvIHRoaXMgY2hhbmdlIHNob3VsZCBub3QgYWZmZWN0Ci0gICAgdGhlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBjZDQyNTE2MjQyMDVjYjk3MTA0ZjZlMzI2NzlkYzc3NTQ5MzRmNzExCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE9jdCAyNyAxNjowOTo0MiAyMDA4IC0wNTAwCi0KLSAgICBwb3dlcnBjOiBmaXggcGNpIHdpbmRvdyBpbml0aWFsaXphdGlvbiB0byB3b3JrIHdpdGggPiA0R0IgRFJBTQotCi0gICAgVGhlIGV4aXN0aW5nIGNvZGUgaGFzIGEgZmV3IGVycm9ycyB0aGF0IG5lZWQgdG8gYmUgZml4ZWQgaW4KLSAgICBvcmRlciB0byBzdXBwb3J0IGxhcmdlIFJBTSBzaXplcy4gIEZpeCB0aG9zZSwgYW5kIGFkZCBhCi0gICAgY29tbWVudCB0byBtYWtlIGl0IGNsZWFyZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIxOTU0MmExYTY2Y2EwMTdiMTI4NjA5MjA3MTRhOTg1OWIxOGE1ZDcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBPY3QgMjcgMTM6MTY6MjAgMjAwOCAtMDUwMAotCi0gICAgcGNpL2ZzbF9wY2lfaW5pdDogUmVtb3ZlZCBhIGJ1bmNoIHBvaW50bGVzcyB0cmFpbGluZyBiYWNrc2xhc2hlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2YjU5ZTAzZTAyMzdhNDBhMjMwNWVhMzg1ZGVmZGZkOTIwMDA5NzhiCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CU1vbiBTZXAgMSAxNjoyMToyMiAyMDA4ICswMjAwCi0KLSAgICBsY2Q6IExldCB0aGUgYm9hcmQgY29kZSBzaG93IGJvYXJkLXNwZWNpZmljIGluZm8KLQotICAgIFRoZSBpbmZvcm1hdGlvbiBkaXNwbGF5ZWQgd2hlbiBDT05GSUdfTENEX0lORk8gaXMgc2V0IGlzIGluaGVyZW50bHkKLSAgICBib2FyZC1zcGVjaWZpYywgc28gaXQgc2hvdWxkIGJlIGRvbmUgYnkgdGhlIGJvYXJkIGNvZGUuIFRoZSBjdXJyZW50IGNvZGUKLSAgICBkZWFsaW5nIHdpdGggdGhpcyBvbmx5IGhhbmRsZXMgdHdvIGNhc2VzLCBhbmQgaXMgYWxyZWFkeSBhIGhvcnJpYmxlIG1lc3MKLSAgICBvZiAjaWZkZWZmZXJ5LgotCi0gICAgWWVzLCB0aGlzIGR1cGxpY2F0ZXMgc29tZSBjb2RlLCBidXQgaXQgYWxzbyBhbGxvd3MgYm9hcmRzIHRvIHByaW50IG1vcmUKLSAgICBib2FyZC1zcGVjaWZpYyBpbmZvcm1hdGlvbjsgdGhpcyB1c2VkIHRvIGJlIHZlcnkgZGlmZmljdWx0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDZmOTNkMmI4ZmNhNTA0MjAwYTU3NThmN2M2ZGQyZDY4NTI5MDA3NjUKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIFNlcCAxIDE2OjIxOjIxIDIwMDggKzAyMDAKLQotICAgIGxjZDogU2V0IGxjZF9pc19lbmFibGVkIGJlZm9yZSBjbGVhcmluZyB0aGUgc2NyZWVuCi0KLSAgICBUaGlzIGFsbG93cyB0aGUgbG9nby9pbmZvIHJlbmRlcmluZyByb3V0aW5lcyB0byB1c2UgdGhlIHJlZ3VsYXIKLSAgICBsY2RfcHV0Yy9sY2RfcHV0cy9sY2RfcHJpbnRmIGNhbGxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDE1YjE3YWI1MmI3YzE1ZDQ2ZDlmYzYzMWNjMDYwOTJlMWU3NjRkZTIKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIFNlcCAxIDE2OjIxOjIwIDIwMDggKzAyMDAKLQotICAgIGxjZDogSW1wbGVtZW50IGxjZF9wcmludGYoKQotCi0gICAgbGNkX3ByaW50ZigpIGhhcyBhIHByb3RvdHlwZSBpbiBpbmNsdWRlL2xjZC5oIGJ1dCBubyBpbXBsZW1lbnRhdGlvbi4gRml4Ci0gICAgdGhpcyBieSBib3Jyb3dpbmcgdGhlIGxjZF9wcmludGYoKSBpbXBsZW1lbnRhdGlvbiBmcm9tIHRoZSBjb2dlbnQgYm9hcmQKLSAgICBjb2RlICh3aGljaCBhcHBlYXJzIHRvIHVzZSBpdHMgb3duIExDRCBmcmFtZXdvcmsuKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDcwZGJjNTRjMGE1Yzc5OGJjZjgyYWUyYTFlMjI3NDA0ZjQxMmU4OTIKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIFNlcCAxIDE2OjIxOjE5IDIwMDggKzAyMDAKLQotICAgIGF0bWVsX2xjZGZiOiBTdHJhaWdodGVuIG91dCBmdW5reSB2bF9zeW5jIGxvZ2ljCi0KLSAgICBJZiB0aGUgYm9hcmQgX2RpZG4ndF8gcmVxdWVzdCBJTlZMSU5FX0lOVkVSVEVELCB3ZSBzZXQgSU5WTElORV9JTlZFUlRFRCwKLSAgICBvdGhlcndpc2Ugd2UgZG9uJ3QuIFdURj8KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCAyM2JiMjhmMGY3NmI0NmM0YjU3MzM3NGIwYmIzYjNmMjNkODVlZjU1Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CU1vbiBTZXAgMSAxNjoyMToxOCAyMDA4ICswMjAwCi0KLSAgICBhdG1lbF9sY2RmYjogRWxpbWluYXRlIHVubmVlZGVkICNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgotCi0gICAgYXRtZWxfbGNkZmIgZG9lc24ndCBhY3R1YWxseSBuZWVkIGFueXRoaW5nIGZyb20gYXNtL2FyY2gvaGFyZHdhcmUuaC4gSXQKLSAgICBpbmNsdWRlcyBhIGZpbGUgdGhhdCBkb2VzLCBhc20vYXJjaC9ncGlvLmgsIGJ1dCB0aGlzIGZpbGUgZG9lc24ndAotICAgIGluY2x1ZGUgPGFzbS9hcmNoL2hhcmR3YXJlLmg+IGxpa2UgaXQncyBzdXBwb3NlZCB0by4KLQotICAgIEFkZCB0aGUgbWlzc2luZyBpbmNsdWRlIHRvIGFzbS9hcmNoL2dwaW8uaCBhbmQgcmVtb3ZlIHRoZSB3b3JrYXJvdW5kCi0gICAgZnJvbSB0aGUgYXRtZWxfbGNkZmIgZHJpdmVyLiBUaGlzIG1ha2VzIHRoZSBkcml2ZXIgY29tcGlsZSBvbiBhdnIzMi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBjMjA4M2UwZTExYTAzZWY4YmUyZTlmMGVkODcyMGZkYzIwODMyZjNlCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgT2N0IDIyIDE0OjM4OjU1IDIwMDggLTA1MDAKLQotICAgIDg2eHg6IENvbnZlcnQgYWxsIGZzbF9wY2lfaW5pdCB1c2VycyB0byBuZXcgQVBJcwotCi0gICAgQ29udmVydGVkIE1QQzg2MTBIQ1BELCBNUEM4NjQxSFBDTiwgYW5kIFNCQzg2NDFEIHRvIHVzZQotICAgIGZzbF9wY2lfc2V0dXBfaW5ib3VuZF93aW5kb3dzKCkgYW5kIGZ0X2ZzbF9wY2lfc2V0dXAoKS4KLQotICAgIFdpdGggdGhlc2UgY2hhbmdlcyB0aGUgYm9hcmQgY29kZSBpcyBhIGJpdCBzbWFsbGVyIGFuZCB3ZSBnZXQgZG1hLXJhbmdlcwotICAgIHNldCBpbiB0aGUgZGV2aWNlIHRyZWUgZm9yIHRoZXNlIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyZGJhMGRlYTk4YzBkZWUxNzk5ZmZkNmZkNmViNTQxNjQ1ZGJiZDk4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgT2N0IDIxIDA4OjI4OjMzIDIwMDggLTA1MDAKLQotICAgIDg1eHg6IENvbnZlcnQgYWxsIGZzbF9wY2lfaW5pdCB1c2VycyB0byBuZXcgQVBJcwotCi0gICAgQ29udmVydGVkIEFUVU04NTQ4LCBNUEM4NTM2RFMsIE1QQzg1NDREUywgTVBDODU0OENEUywgTVBDODU2OE1EUywKLSAgICBNUEM4NTcyRFMsIFRRTTg1eHgsIGFuZCBTQkM4NTQ4IHRvIHVzZSBmc2xfcGNpX3NldHVwX2luYm91bmRfd2luZG93cygpCi0gICAgYW5kIGZ0X2ZzbF9wY2lfc2V0dXAoKS4KLQotICAgIFdpdGggdGhlc2UgY2hhbmdlcyB0aGUgYm9hcmQgY29kZSBpcyBhIGJpdCBzbWFsbGVyIGFuZCB3ZSBnZXQgZG1hLXJhbmdlcwotICAgIHNldCBpbiB0aGUgZGV2aWNlIHRyZWUgZm9yIHRoZXNlIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMmFhYjQ2MDcyN2U1ZjY3NDM1M2E4M2E4MTAwMGVmNzk0YmZmY2FlCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgT2N0IDIzIDAwOjAxOjA2IDIwMDggLTA1MDAKLQotICAgIHBjaS9mc2xfcGNpX2luaXQ6IEFkZGVkIGZkdCBoZWxwZXIgZm9yIHNldHRpbmcgdXAgYnVzLXJhbmdlcyAmIGRtYS1yYW5nZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiOWExZmE5Nzg3YTNhNzk1NzNmNWY5MzJhNGY4YWEyMTZiY2IxNzg1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgT2N0IDIyIDE0OjA2OjI0IDIwMDggLTA1MDAKLQotICAgIHBjaS9mc2xfcGNpX2luaXQ6IEFkZCBhIGNvbW1vbiBQQ0kgaW5ib3VuZCBzZXR1cCBmdW5jdGlvbgotCi0gICAgQWRkIGEgY29tbW9uIHNldHVwIGZ1bmN0aW9uIHRoYXQgZGV0ZXJtaW5lcyB0aGUgcGNpX3JlZ2lvbihzKSBiYXNlZAotICAgIG9uIGhvdyBtdWNoIG1lbW9yeSB3ZSBoYXZlIGluIHRoZSBzeXN0ZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjEyZWEwMTAxOGE0NTkyMzRkNTRlZDU3ZWM2YTVhMjQ0Y2U3NTY3OAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE9jdCAyMSAxMDoxMzoxNCAyMDA4IC0wNTAwCi0KLSAgICBwY2kvZnNsX3BjaV9pbml0OiBFbmFibGUgbGFyZ2VyIGFkZHJlc3MgYW5kIHNldHRpbmcgaW5ib3VuZCB3aW5kb3dzIHByb3Blcmx5Ci0KLSAgICAqIFBDSSBJbmJvdW5kIHdpbmRvdyB3YXMgc2V0dXAgaW5jb3JyZWN0bHkuICBUaGUgUENJIGFkZHJlc3MgYW5kIHN5c3RlbQotICAgICAgYWRkcmVzcyB3ZXJlIHN3YXBwZWQuICBUaGUgUENJIGFkZHJlc3Mgc2hvdWxkIGJlIHNldHRpbmcgcGl3YXIvcGl3YmVhcgotICAgICAgYW5kIHRoZSBzeXN0ZW0gYWRkcmVzcyBzaG91bGQgYmUgc2V0dGluZyBwaXRhci4KLQotICAgICogUmVtb3ZlZCBtYXNraW5nIG9mIGFkZHJlc3NlcyB0byBhbGxvdyBmb3Igc3lzdGVtIGFkZHJlc3MgdG8gc3VwcG9ydAotICAgICAgc3lzdGVtIGFkZHJlc3MgJiBQQ0kgYWRkcmVzcyA+MzItYml0cwotCi0gICAgKiBTZXQgUElXQkVBUiAmIFBPVEVBUiB0byBhbGxvdyBmb3IgZnVsbCA2NC1iaXQgUENJIGFkZHJlc3NlcwotCi0gICAgKiBSZXNwZWN0IHRoZSBQQ0lfUkVHSU9OX1BSRUZFVENIIGZvciBpbmJvdW5kIHdpbmRvd3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4YWI0NTFjNDZiODQ2ZjJiYmQ3MTIyYjI5ZmZkZDlhNGEwNGRhMjI4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgT2N0IDIyIDIzOjMzOjU2IDIwMDggLTA1MDAKLQotICAgIGZkdDogQWRkZWQgaGVscGVyIHRvIHNldCBQQ0kgZG1hLXJhbmdlcyBwcm9wZXJ0eQotCi0gICAgQWRkZWQgZmR0X3BjaV9kbWFfcmFuZ2VzKCkgdGhhdCBwYXJzZXMgdGhlIHBjaV9yZWdpb24gaW5mbyBmcm9tIHRoZQotICAgIHN0cnVjdCBwY2lfY29udHJvbGxlciBhbmQgcG9wdWxhdGVzIHRoZSBkbWEtcmFuZ2VzIGJhc2VkIG9uIGl0LgotCi0gICAgVGhlIG1heCAjIG9mIHdpbmR3cy9kbWEtcmFuZ2VzIHdlIHN1cHBvcnQgaXMgMyBzaW5jZSBvbiBlbWJlZGRlZAotICAgIFBvd2VyUEMgYmFzZWQgc3lzdGVtcyB0aGlzIGlzIHRoZSBtYXggbnVtYmVyIG9mIHdpbmRvd3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2JlZDJhYWYyZDUwZmQxMzI3M2MxNGQxN2Q0ZmQ0MGVmNDJlMGQwZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE9jdCAyMyAwMDowNTo0NyAyMDA4IC0wNTAwCi0KLSAgICBmZHQ6IEFkZCBmZHRfZ2V0cHJvcF91MzJfZGVmYXVsdCBoZWxwZXJzCi0KLSAgICBBZGQgaGVscGVyIGZ1bmN0aW9ucyB0byByZXR1cm4gZmluZCBhIG5vZGUgYW5kIHJldHVybiBpdCdzIHByb3BlcnR5Ci0gICAgb3IgYSBkZWZhdWx0IHZhbHVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRmxlbWluZy1BRkxFTUlORyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDhiYTkzZjY4YTFiYWU4OWUwMzM1MjdjZTY3YjQxYjRhODdhYTViN2YKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBPY3QgMjEgMTg6MDY6MTUgMjAwOCAtMDUwMAotCi0gICAgODZ4eDogRW5hYmxlIDY0LWJpdCBQQ0kgcmVzb3VyY2VzIG9uIGFsbCBGcmVlc2NhbGUgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDE1MWNiYWNjZjQ1MDQ4MjFlY2ZkZTAyMTcyOTliZDc0MDA4NmJiNgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE9jdCAyMSAxMTozMzo1OCAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBFbmFibGUgNjQtYml0IFBDSSByZXNvdXJjZXMgb24gYWxsIEZyZWVzY2FsZSBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IEZsZW1pbmctQUZMRU1JTkcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzMGU3NmQ1ZTNiYzRjNTIwOGVlNjM1ODVmZTEyYjQwOWQ5MzA4Y2Q4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgT2N0IDIxIDA4OjM2OjA4IDIwMDggLTA1MDAKLQotICAgIHBjaTogQWxsb3cgZm9yIFBDSSBhZGRyZXNzZXMgdG8gYmUgNjQtYml0Ci0KLSAgICBQQ0kgYnVzIGlzIGluaGVyZW50bHkgNjQtYml0LiAgV2hpbGUgbm90IGFsbCBzeXN0ZW0gcmVxdWlyZSBhY2Nlc3MgdG8KLSAgICB0aGUgZnVsbCA2NC1iaXQgUENJIGFkZHJlc3MgcmFuZ2Ugc29tZSBkby4JVGhpcyBhbGxvd3MgdGhvc2Ugc3lzdGVtcwotICAgIHRvIGVuYWJsZSB0aGUgZnVsbCBQQ0kgYWRkcmVzcyB3aWR0aCB2aWEgQ09ORklHX1NZU19QQ0lfNjRCSVQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBGbGVtaW5nLUFGTEVNSU5HIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYWU1Zjk0M2JhOGVkZTQ0OGE0YjFhMTQ1ZmQ4OTExODU2NzAxZWNjNQotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAyMyAyMToxODo1MyAyMDA4ICswODAwCi0KLSAgICA4NXh4OiBGaXggdGhlIGluY29ycmVjdCByZWdpc3RlciB1c2VkIGZvciBERFIgZXJyYXR1bTEKLQotICAgIFRoZSA4NTcyIEREUiBlcnJhdHVtMToKLSAgICBERFIgY29udHJvbGxlciBtYXkgZW50ZXIgYW4gaWxsZWdhbCBzdGF0ZSB3aGVuIG9wZXJhdGluZwotICAgIGluIDMyLWJpdCBidXMgbW9kZSB3aXRoIDQtYmVhdCBidXJzdHMuCi0KLSAgICBEZXNjcmlwdGlvbjoKLSAgICBXaGVuIG9wZXJhdGluZyB3aXRoIGEgMzItYml0IGJ1cywgaXQgaXMgcmVjb21tZW5kZWQgdGhhdAotICAgIEREUl9TRFJBTV9DRkdbOF9CRV0gaXMgY2xlYXJlZCB3aGVuIEREUjIgbWVtb3JpZXMgYXJlIHVzZWQuCi0gICAgVGhpcyBmb3JjZXMgdGhlIEREUiBjb250cm9sbGVyIHRvIHVzZSA0LWJlYXQgYnVyc3RzIHdoZW4KLSAgICBjb21tdW5pY2F0aW5nIHRvIHRoZSBEUkFNcy4gSG93ZXZlciwgYW4gaXNzdWUgZXhpc3RzIHRoYXQKLSAgICBjb3VsZCBsZWFkIHRvIGRhdGEgY29ycnVwdGlvbiB3aGVuIHRoZSBERFIgY29udHJvbGxlciBpcwotICAgIGluIDMyLWJpdCBidXMgbW9kZSB3aGlsZSB1c2luZyA0LWJlYXQgYnVyc3RzLgotCi0gICAgUHJvamVjdGVkIEltcGFjdDoKLSAgICBJZiB0aGUgRERSIGNvbnRyb2xsZXIgaXMgb3BlcmF0aW5nIGluIDMyLWJpdCBidXMgbW9kZSB3aXRoCi0gICAgNC1iZWF0IGJ1cnN0cywgdGhlbiB0aGUgY29udHJvbGxlciBtYXkgZW50ZXIgaW50byBhIGJhZCBzdGF0ZS4KLSAgICBBbGwgc3Vic2VxdWVudCByZWFkcyBmcm9tIG1lbW9yeSBpcyBjb3JydXB0ZWQuCi0gICAgRm91ci1iZWF0IGJ1cnN0cyB3aXRoIGEgMzItYml0IGJ1cyBvbmx5IGlzIHVzZWQgd2l0aCBERFIyIG1lbW9yaWVzLgotICAgIFRoZXJlZm9yZSwgdGhpcyBlcnJhdHVtIGRvZXMgbm90IGFmZmVjdCBERFIzIG1vZGUuCi0KLSAgICBXb3JrIEFyb3VuZHM6Ci0gICAgVG8gd29yayBhcm91bmQgdGhpcyBpc3N1ZSwgc29mdHdhcmUgbXVzdCBzZXQgREVCVUdfMVszMV0gaW4KLSAgICBERFIgbWVtb3J5IG1hcHBlZCBzcGFjZSAoQ0NTUkJBUiBvZmZzZXQgKyAweDJmMDAgZm9yIEREUl8xCi0gICAgYW5kIENDU1JCQVIgb2Zmc2V0ICsgMHg2ZjAwIGZvciBERFJfMikuCi0KLSAgICBDdXJyZW5sdHksIHRoZSBjb2RlIGlzIHVzaW5nIGluY29ycmVjdCByZWdpc3RlciBERFJfU0RSQU1fQ0ZHXzIKLSAgICBhcyBjb25kaXRpb24sIGJ1dCBpdCBzaG91bGQgYmUgRERSX1NEUkFNX0NGRyByZWdpc3Rlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkNWI2OTMwOTBlZDA4ZDI0YzE4NDkxZGY5ZDhmYzczODdiMjkwNmYzCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDIzIDIxOjE3OjE5IDIwMDggKzA4MDAKLQotICAgIDg1eHg6IHJlbW92ZSB1bnVzZWQgY29uZmlnIGRlZmluaXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwZjA2MGMzYmY4MjgzMjMzMWE1MDlmMmU1ZDI0NDI1MzllN2FhZDA5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgT2N0IDIzIDAxOjQ3OjM4IDIwMDggLTA1MDAKLQotICAgIDg1eHg6IEFkZCBiYXNpYyBlNTAwbWMgY29yZSBzdXBwb3J0Ci0KLSAgICBJbnRyb2R1Y2UgQ09ORklHX0U1MDBNQyB0byBkZWFsIHdpdGggdGhlIG1pbm9yIGRpZmZlcmVuY2VzIGJldHdlZW4KLSAgICBlNTAwdjIgYW5kIGU1MDBtYy4KLQotICAgICogQ2VydGFpbiBmaWVsZHMgb2YgSElEMC8xIGRvbid0IGV4aXN0IGFueW1vcmUgb24gZTUwMG1jCi0gICAgKiBDYWNoZSBsaW5lIHNpemUgaXMgNjQtYnl0ZXMgb24gZTUwMG1jCi0gICAgKiByZXNldCB2YWx1ZSBvZiBQSVIgaXMgZGlmZmVyZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYTM4YTViNmVkZDMwZjI5ZmQ1ZmRiMWQ3ZjY3NDUyMTkwNmMwZTY3NwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE9jdCAyMyAwMTo0NzozNyAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBVc2UgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRSBpbnN0ZWFkIG9mIG1hZ2ljIG51bWJlcgotCi0gICAgVXNpbmcgQ09ORklHX1NZU19DQUNIRUxJTkVfU0laRSBpbnN0ZWFkIG9mIDMxIG1lYW5zIHdlIGNhbiBoYW5kbGUKLSAgICBlNTAwbWMncyA2NC1ieXRlIGNhY2hlbGluZSBwcm9wZXJseSB3aGVuIGl0IGdldHMgYWRkZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNWRlYjgwMjJjMzc0OWZhYWMzMGU5YWQ5Njk0NjkxZTI0NDJiNWM5MwotQXV0aG9yOiBHZW9yZyBTY2hhcmR0IDxzY2hhcmR0QHRlYW0tY3RlY2guZGU+Ci1EYXRlOglGcmkgT2N0IDI0IDEzOjUxOjUyIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogTmV3IGJvYXJkIGF2bmV0IGZ4MTIgbWluaW1vZHVsCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGF2bmV0IGZ4MTIgbWluaW1vZHVsLgotICAgIEl0IG5lZWRzIHRoZSAicHBjNHh4OiBHZW5lcmljIGFyY2hpdGVjdHVyZSBmb3IgeGlsaW54IHBwYzQwNSIKLSAgICBwYXRjaCBmcm9tIFJpY2FyZG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZW9yZyBTY2hhcmR0IDxzY2hhcmR0QHRlYW0tY3RlY2guZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMWY0ZDUzMjYwZWM2ZjhmMTIyYWVkNzVjY2U3Yzc1N2Q5N2E1NTFlMAotQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLURhdGU6CVR1ZSBPY3QgMjEgMTg6Mjk6NDYgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBHZW5lcmljIGFyY2hpdGVjdHVyZSBmb3IgeGlsaW54IHBwYzQwNSh2MykKLQotICAgIEFzICJwcGM0NHg6IFVuaWZpY2F0aW9uIG9mIHZpcnRleDUgcHA0NDAgYm9hcmRzIiBkaWQgZm9yIHRoZSB4aWxpbngKLSAgICBwcGM0NDAgYm9hcmRzLCB0aGlzIHBhdGNoIHByZXNlbnRzIGEgY29tbW9uIGFyY2hpdGVjdHVyZSBmb3IgYWxsIHRoZQotICAgIHhpbGlueCBwcGM0MDUgYm9hcmRzLgotCi0gICAgQW55IGN1c3RvbSB4aWxpbnggcHBjNDA1IGJvYXJkIGNhbiBiZSBhZGRlZCB2ZXJ5IGVhc2lseSB3aXRoIG5vIGNvZGUKLSAgICBkdXBsaWNpdHkuCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhIHNpbXBsZSBnZW5lcmljIGJvYXJkLCB0aGF0IGNhbiBiZSB1c2VkIG9uIGFsbW9zdAotICAgIGFueSBkZXNpZ24gd2l0aCB4aWxpbnggcHBjNDA1IHJlcGxhY2luZyB0aGUgZmlsZSBwcGM0MDUtZ2VuZXJpYy94cGFyYW1ldGVycy5oCi0KLSAgICBUaGlzIHBhdGNoIGlzIHByZXBhcmVkIHRvIHdvcmsgd2l0aCB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgRURLICgxMC4xKQotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDg1YzAwYTU3ZmFiODZmNzJhMzc2OTQ4MGM2NmJmMWNhMjJlMTQ1OQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDI0IDA4OjU2OjA5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRGlzYWJsZSBERFIyIGF1dG9jYWxpYnJhdGlvbiBvbiBLaWxhdWVhIGZvciBub3cKLQotICAgIFNpbmNlIHRoZSBuZXcgYXV0b2NhbGlicmF0aW9uIHN0aWxsIGhhcyBzb21lIHByb2JsZW1zIG9uIHNvbWUgS2lsYXVlYQotICAgIGJvYXJkcyB3aXRoIDIwME1IeiBERFIyIGZyZXF1ZW5jeSB3ZSBkaXNhYmxlIHRoZSBhdXRvY2FsaWJyYXRpb24gYW5kCi0gICAgdXNlIHRoZSBoYXJkY29kZWQgdmFsdWVzIGFzIGRvbmUgYmVmb3JlLiBUaGlzIHNlZW1zIHRvIHdvcmsgcmVsaWFibHkKLSAgICBvbiBhbGwga25vd24gRERSMiBmcmVxdWVuY2llcy4KLQotICAgIEFmdGVyIHRoZSBhdXRvY2FsaWJyYXRpb24gaXNzdWUgaXMgZml4ZWQgd2Ugd2lsbCBlbmFibGUgaXQgYWdhaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmMTc3ZjQyNTBjNzI5NzI3YjE2MjlmYThkOGQ2NTU2Yzk5OWU5YjhjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVdlZCBBcHIgOSAwMjowMjowNyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4IHVwIFVBUlQgc3RhdHVzIGJpdCBoYW5kbGluZwotCi0gICAgU29tZSBCbGFja2ZpbiBVQVJUcyBhcmUgcmVhZC10by1jbGVhciB3aGlsZSBvdGhlcnMgYXJlIHdyaXRlLXRvLWNsZWFyLgotICAgIFRoaXMgY2FuIGNhdXNlIHByb2JsZW1zIHdoZW4gd2UgcG9sbCB0aGUgTFNSIGFuZCB0aGVuIGxhdGVyIHRyeSBhbmQgaGFuZGxlCi0gICAgYW55IGVycm9ycyBkZXRlY3RlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGFlMDkxMDI5OGYzMWY1YmIzZDMzYTY0Yjg0NjdjNjBlYTNjNWQ2ZDAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMDo0MjoxNyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1NjEtZXpraXQ6IGRyb3AgcmVkdW5kYW50IGNvZGUKLQotICAgIENvbW1vbiBCbGFja2ZpbiBjb2RlIGFscmVhZHkgYW5ub3VuY2VzIENQVSBpbmZvcm1hdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGUyZWVhOThiZmYxMzY5Zjc3YTlmNTlhNWZkMGJkNDkyOGJjMzMzMmUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMDo0MzoxMCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogYmY1NjEtZXpraXQ6IGRyb3AgcG9pbnRsZXNzIFVTQiBjb2RlCi0KLSAgICBUaGUgVVNCL0xBTiByZWdpc3RlciBzZXR0aW5ncyBhcmUgbm90IGFjdHVhbGx5IHVzZWQvbmVlZGVkIGluIG9yZGVyIHRvCi0gICAgZHJpdmUgdGhpbmdzIGZyb20gVS1Cb290LCBzbyBkcm9wIHRoZSBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYzIzYmZmNjNmYjAzY2I5ZGJjZDI2NTIyODQxZTUzZjliMzRmYTFhYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgT2N0IDExIDIwOjQ3OjU4IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBsaW5rZXIgc2NyaXB0czogZm9yY2Ugc3RhcnQubyBhbmQgc2V0IGluaXRjb2RlIGJvdW5kYXJpZXMKLQotICAgIE1ha2Ugc3VyZSB0aGF0IHRoZSBzdGFydC5vIG9iamVjdCBpcyBhbHdheXMgdGhlIGZpcnN0IG9iamVjdCBpbiBvdXIgbGlua2VyCi0gICAgc2NyaXB0IHJlZ2FyZGxlc3Mgb2YgY29uZmlndXJhdGlvbiBzZXR0aW5ncywgYW5kIGFkZCBzb21lIGxpbmtlciBzeW1ib2xzCi0gICAgc28gdGhlIGxkciB1dGlsaXR5IGNhbiBwcm9wZXJseSBsb2NhdGUgdGhlIGluaXRjb2RlIHdoZW4gZ2VuZXJhdGluZyBhIExEUi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGJkMzNlNWM2MTNjZjcwZTNjYjUxYTczZmRkNjUzZmU4M2I5NDJiYjAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMToxOTozOSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2Zpbjogc21hbGwgY3B1IGluaXQgb3B0aW1pemF0aW9uIHdoaWxlIHNldHRpbmcgaW50ZXJydXB0IG1hc2sKLQotICAgIFVzZSB0aGUgc3RpIGluc3RydWN0aW9uIHRvIHNldCB0aGUgaW5pdGlhbCBpbnRlcnJ1cHQgbWFzayByYXRoZXIgdGhhbgotICAgIGJhbmdpbmcgb24gdGhlIGNvcmUgSU1BU0sgTU1SIHRvIHNhdmUgYm90aCBzcGFjZSBhbmQgdGltZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDk2MDkyMjI5MWM5NTk0YWNiNTc1Y2VjN2U0N2Q3YmVkOWI1ODE4MmMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU2F0IE9jdCAxMSAyMToxODoxMCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2Zpbjogc2V0IGluaXRpYWwgc3RhY2sgY29ycmVjdGx5IGFjY29yZGluZyB0byBCbGFja2ZpbiBBQkkKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDI1Y2QzM2Q4MmVhNTIxYjdiZDkwY2E4NThmODkxOWZhZTFlOTczMmIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEFwciAyMCAwMzoxMTo1MyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogbWFrZSBiYXVkIGNhbGN1bGF0aW9uIG1vcmUgYWNjdXJhdGUKLQotICAgIFdlIHNob3VsZCB1c2UgdGhlIGFsZ29yaXRobSBpbiB0aGUgTGludXgga2VybmVsIHNvIHRoYXQgdGhlIFVBUlQgZGl2aXNvcgotICAgIGNhbGN1bGF0aW9uIGlzIG1vcmUgYWNjdXJhdGUuICBJdCBhbHNvIGZpeGVzIHByb2JsZW1zIG9uIHNvbWUgcGlja3kgVUFSVHMKLSAgICB0aGF0IGhhdmUgc2FtcGxpbmcgYW5vbWFsaWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMGJhMWRhMTE2ZTVlZGNiMGM1YWU0YTc1ODVkNzNmNjU0ODQwMGEwNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gT2N0IDYgMDQ6MjE6NDEgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGRlY29kZSBod2VycmNhdXNlL2V4Y2F1c2Ugd2hlbiBjcmFzaGluZwotCi0gICAgSGF2aW5nIHRvIGRlY29kZSBod2VycmNhdXNlL2V4Y2F1c2UgdmFsdWVzIGlzIGEgcGFpbiwgc28gYXV0b21hdGUgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAyZGU5NWJiMjBjNDg4ZjIwMjk4ZGY2ODgxYjcwMGE1YTc1N2VlNzgwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBPY3QgNiAwNDoyMDo1NCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4IHJlZ2lzdGVyIGR1bXAgbWVzc2FnZXMKLQotICAgIE1ha2Ugc3VyZSB3ZSByZXBvcnQgUkVUSS9JUEVORCBjb3JyZWN0bHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3MTMzOTk5ZTZmNjJhOWEwMWY2YThmZmUyMzRiODUzMmIzYWQxZTRiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBPY3QgNiAwNDoxOTozNCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZG9uJ3QgYm90aGVyIGRpc3BsYXlpbmcgcmVib290IG1zZyB3aGVuIGNyYXNoaW5nCi0KLSAgICBUaGUgaGFuZyBmdW5jdGlvbiBhbHJlYWR5IHRlbGxzIHlvdSB0byByZWJvb3QsIHNvIG5vIHBvaW50IGluIHNob3dpbmcgaXQKLSAgICB0d2ljZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDcwYzRjMDMyZWExMTJjYzQyYWExY2U5NTljMzNmYzQ4MjVlYWVmOTUKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEp1biAxIDAxOjIzOjQ4IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBlbmFibGUgc3VwcG9ydCBmb3IgbmVzdGVkIGludGVycnVwdHMKLQotICAgIER1cmluZyBjcHUgaW5pdCwgbWFrZSBzdXJlIHdlIGluaXRpYWxpemUgdGhlIENFQyBwcm9wZXJseSBzbyB0aGF0Ci0gICAgaW50ZXJydXB0cyBjYW4gZmlyZSBhbmQgYmUgaGFuZGxlZCB3aGlsZSBVLUJvb3QgaXMgcnVubmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDM5NzgyNzI3ZTE4NTg2MGZhYTQ4ODRjMmIwNGU4NGNiMzNkMWM2Y2YKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIE9jdCA2IDAzOjU1OjI1IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBpbml0IE5BTkQgYmVmb3JlIHJlbG9jYXRpbmcgZW52Ci0KLSAgICBJZiBib290aW5nIG91dCBvZiBOQU5ELCB3ZSBuZWVkIHRvIG1ha2Ugc3VyZSB3ZSBpbml0aWFsaXplIGl0IHByb3Blcmx5Ci0gICAgYmVmb3JlIGF0dGVtcHRpbmcgdG8gcmVsb2NhdGUgdGhlIGVudmlyb25tZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMGY5YTg4MTk0MTZiYTQwYTUzZGU1MGFmMTQ4ODQ3YTBlNTA4Zjg0ZAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTg6NDA6MTMgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGNoZWNrIGNhY2hlIGJpdHMsIG5vdCBjcGxiIGJpdHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDJjMWVhOWUzNzBjYjcyZGQ2YTVhYTMyMzM4ZTg3YThhMWY3N2JkNzYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEF1ZyA3IDE3OjUyOjU5IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBkcm9wIHVudXNlZCBjYWNoZSBmbHVzaCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1MGYwZDIxMTkxMmE2NDhlMzFhYTkxMjNiNDY2NWEwNDQ0YmI4Y2E5Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgNyAxNToyMTo0NyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdW5pZnkgY2FjaGUgaGFuZGxpbmcgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgM2M4Nzk4OTgzNDAzY2I2OGE4MjdkN2EwZDA5YjExMzQ1MjRhMWI3ZAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gT2N0IDYgMDM6Mzk6MDcgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IG9ubHkgaW5pdGlhbGl6ZSB0aGUgUlRDIHdoZW4gYWN0dWFsbHkgdXNlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjIxZTU3OWI4MTJkZDFhMmU2Nzc3ZjdjYmY2ZTU1ZTczNjUwNTgyMwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gT2N0IDYgMDM6NDQ6MzMgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGZpeCBTV1JTVCByZWdpc3RlciBkZWZpbml0aW9uCi0KLSAgICBUaGUgU1dSU1QgcmVnaXN0ZXIgaXMgYSAxNmJpdCwgbm90IDMyYml0LCByZWdpc3Rlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDA2MTIxYzRlMmQxODM4ODdkY2Q3YTRjYTJkY2QzOTViMjEzZWExNWIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEF1ZyA3IDE4OjU0OjU3IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBidWlsZCB3aXRoIC1mb21pdC1mcmFtZS1wb2ludGVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBhZGJmZWViN2IzMmY3MzdhOTczOGRhYTU4MzM1MGQyYmI5ZWQwMTdhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgNyAxNzo1MDoyNiAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZG9jdW1lbnQgc29tZSBvZiB0aGUgYmxhY2tmaW4gZGlyZWN0b3JpZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGU0MzM3OTY4ZTQzNjk4YTY4YmE2MDgzNjlmNDZkNGE0MTE0MTExY2EKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEF1ZyA3IDE1OjE2OjU2IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiBvbmx5IGVuYWJsZSBoYXJkd2FyZSBlcnJvciBpcnEgYnkgZGVmYXVsdAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmI2NmYwOGYyNTdlZjZhMDY3ODVmMjdiM2M2ZGMyYTRjZmM5Y2FjNAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTM6MzY6NDMgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IHB1bnQgb2xkIHVudXNlZCBtZW1faW5pdC5oIGhlYWRlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYmNjMTIxYTAxNjA4MDQyMDY2YTE5YWI1YmZmNWJjZmI4MDViZjQwNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMTM6MTg6NTUgMjAwOCAtMDQwMAotCi0gICAgQmxhY2tmaW46IGRlbGV0ZSB1bnVzZWQgcGFnZV9kZXNjcmlwdG9yX3RhYmxlX3NpemUgZGVmaW5lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAzMGZiOWQyNGFlMTZlNWIwZWQzOWU1YjdjYzg1OTgxMTY1Y2E5OGJjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgNyAxMzoxNzowMyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4IHR5cG8gaW4gYm9vdCBtb2RlIGNvbW1lbnQgYW5kIGFkZCBOQU5EIGRlZmluZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMmU1Y2JlNTQ2MWM1YzRjNjY2NWUzMThjZmU5NTBhNWExNTBkOTk5YwotQXV0aG9yOiBCZW4gTWFhbiA8bW9vQGNvdz4KLURhdGU6CVRodSBBdWcgNyAxMzoxNDoyMSAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogZml4IHBvcnQgbXV4IGRlZmluZXMgZm9yIEJGNTR4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAwNjU2ZWYyYmEyNzQ5MTBkMzEzNjRmZTAyMmY2YzdkYjAwNTE2NjBkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBBdWcgNyAxMzowOTo1MCAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdXBkYXRlIGFub21hbHkgbGlzdHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDUwY2E5NTQwMjg3NmNmN2JhYzRlMmQ0Zjc4NTVmNjE2YTAzODc2M2YKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IEF1ZyA3IDEzOjA4OjU0IDIwMDggLTA0MDAKLQotICAgIEJsYWNrZmluOiB1bmlmeSBEU1BJRC9EQkdTVEFUIE1NUiBkZWZpbml0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZDlkOGM3YzY5NmRlYzM3MGNhNzE0YzAzYmViNmU3OWQ0YzkwYmQ1ZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyMSAxNTo1Mzo1MSAyMDA4ICswMjAwCi0KLSAgICBGaXggc3RybWh6KCk6IGF2b2lkIHByaW50aW5nIG5lZ2F0aXZlIGZyYWN0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDRhN2Y2Yjc1MGQ4ZGU1NDNmZGY4ZTU4YWNkODY3NDUwMTAwNTQ1NzEKLUF1dGhvcjogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KLURhdGU6CUZyaSBPY3QgMTcgMDg6NTU6NTEgMjAwOCAtMDQwMAotCi0gICAgbXBjODN4eDogUmVtb3ZlZCAjaWZkZWYgQ09ORklHX01QQzgzNFggZGVwZW5kZW5jeSBvbiB1cG1jb25maWcgZnVuY3Rpb24KLQotICAgIFRoaXMgaXMgZG9uZSB0byBhbGxvdyBvdGhlciA4M1hYIGJhc2VkIHBsYXRmb3JtcyB3aGljaCBhbHNvIGhhdmUgVVBNCi0gICAgKGUuZy4gODM2MCkgdG8gY29uZmlndXJlIGFuZCB1c2UgdGhlaXIgVVBNIGluIHUtYm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dlZENvbS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDNiZjFiZTNjMGNmYjExMjliNjhjYzE0NzQxMTllNWYzMjM1MzY0ODgKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUdWUgT2N0IDE0IDIyOjU4OjUzIDIwMDggKzA0MDAKLQotICAgIG1wYzgzeHg6IGFkZCBzdXBwb3J0IGZvciBzd2l0Y2hpbmcgYmV0d2VlbiBVU0IgSG9zdC9GdW5jdGlvbiBmb3IgTVBDODM3WEVNRFMKLQotICAgIFdpdGggdGhpcyBwYXRjaCB1LWJvb3QgY2FuIGZpeHVwIHRoZSBkcl9tb2RlIGFuZCBwaHlfdHlwZSBwcm9wZXJ0aWVzCi0gICAgZm9yIHRoZSBEdWFsLVJvbGUgVVNCIGNvbnRyb2xsZXIuCi0KLSAgICBXaGlsZSBhdCBpdCwgYWxzbyByZW1vdmUgI2lmZGVmcyBhcm91bmQgaW5jbHVkZXMsIHRoZXkgYXJlIG5vdCBuZWVkZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjMzNzlmM2ZkMTM5Njk5MzRjMDAwOTdjMDU3NTRlN2E4OTkwZmQzOQotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBPY3QgOCAyMDo1Mjo1NCAyMDA4ICswNDAwCi0KLSAgICBtcGM4M3h4OiBhZGQgRUxCQyBOQU5EIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzdYRU1EUyBib2FyZHMKLQotICAgIFRob3VnaCBOQU5EIGNoaXAgaXMgcmVwbGFjZWFibGUgb24gdGhlIE1QQzgzN1hFLU1EUyBib2FyZHMsIHRoZQotICAgIGN1cnJlbnQgc2V0dGluZ3MgZG9uJ3Qgd29yayB3aXRoIHRoZSBkZWZhdWx0IGNoaXAgb24gdGhlIGJvYXJkLgotICAgIE5ldmVydGhlbGVzcyBGcmVlc2NhbGUncyBVLUJvb3Qgc2V0cyB0aGUgb3B0aW9uIHJlZ2lzdGVyIGNvcnJlY3RseSwKLSAgICBzbyBJIGp1c3QgZHVtcGVkIHRoZSByZWdpc3RlciBmcm9tIHRoZSB3b3JraW5nIHUtYm9vdC4gTXkgZ3Vlc3MgaXMKLSAgICB0aGF0IHRoZSBvbGQgc2V0dGluZ3Mgd2VyZSBhcHBsaWNhYmxlIGZvciBzb21lIHBpbG90IGJvYXJkcywgbm90Ci0gICAgZm91bmQgaW4gdGhlIHByb2R1Y3Rpb24uCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gZW5hYmxlcyBGU0wgRUxCQyBkcml2ZXIgc28gdGhhdCB3ZSBjb3VsZCBhY2Nlc3MKLSAgICB0aGUgTkFORCBzdG9yYWdlIGluIHRoZSB1LWJvb3QuCi0KLSAgICBUaGUgTkFORCBzdXBwb3J0IGNvc3RzIGFib3V0IDQ1S0IsIHNvIHRoZSB1LWJvb3Qgbm8gbG9uZ2VyIGZpdHMKLSAgICBpbnRvIHR3byAxMjhLQiBOT1IgZmxhc2ggc2VjdG9ycywgdGh1cyB3ZSBhbHNvIGhhdmUgdG8gYWRqdXN0Ci0gICAgZW52aXJvbm1lbnQgbG9jYXRpb246IGFkZCBhbm90aGVyIDEyOEtCIHRvIHRoZSBtb25pdG9yIGxlbmd0aC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi0gICAgSXQgaXMgZHVlIHRvIGhhcmR3YXJlIGRlc2lnbiBhbmQgbG9naWMgZGVmZWN0LCB0aGF0IGlzIHRoZQotICAgIEkvT1swOjddIG9mIE5BTkQgY2hpcCBpcyBjb25uZWN0ZWQgdG8gTEFEWzc6MF0sIHNvIHdoZW4KLSAgICB0aGUgTkFORCBjaGlwIGNvbm5lY3RlZCB0byBuTENTMywgIHlvdSBoYXZlIHRvIHNldCB1cCB0aGUKLSAgICBPUjNbQkNUTERdID0gJzEnIGZvciBub3JtYWwgb3BlcmF0aW9uLCBvdGhlcndpc2UgaXQgd2lsbCBoYXZlCi0gICAgYnVzIGNvbnRlbnRpb24gZHVlIHRvIHRoZSBwaW4gNDgvMjUgb2YgVTYwIGlzIGVuYWJsZWQuCi0KLSAgICBTZXR1cCB0aGUgT1IzW0JDVExEXSA9ICcxJyAsIHRoYXQgbWVhbmluZyB0aGUgTEJDVEwgaXMgbm90Ci0gICAgYXNzZXJ0ZWQgdXBvbiBhY2Nlc3MgdG8gdGhlIE5BTkQgY2hpcCwga2VlcCB0aGUgZGVmYXVsdCBzdGF0ZS4KLQotICAgIEFja2VkLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwMGY3YmJhZTkyZTNiMTNmMmIzN2FlYjFkZWY5YmIxMjQ0NTUyMWI3Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IE9jdCAyIDE5OjE3OjMzIDIwMDggKzA0MDAKLQotICAgIG1wYzgzeHg6IGZpeCBQQ0kgc2NhbiBoYW5nIG9uIHRoZSBzdGFuZGFsb25lIE1QQzgzN3hFLU1EUyBib2FyZHMKLQotICAgIFRoZSBNUEM4Mzd4RS1NRFMgYm9hcmQncyBDUExEIGNhbiBhdXRvLWRldGVjdCBpZiB0aGUgYm9hcmQgaXMgb24gdGhlIFBJQiwKLSAgICBzdGFuZGFsb25lIG9yIGFjdGluZyBhcyBhIFBDSSBhZ2VudC4gVXNlcidzIEd1aWRlIHNheXM6Ci0KLSAgICAtIFdoZW4gdGhlIENQTEQgcmVjb2duaXplcyBpdHMgbG9jYXRpb24gb24gdGhlIFBJQiBpdCBhdXRvbWF0aWNhbGx5Ci0gICAgICBjb25maWd1cmVzIFJDVyB0byB0aGUgUENJIEhvc3QuCi0gICAgLSBJZiB0aGUgQ1BMRCBmYWlscyB0byByZWNvZ25pemUgaXRzIGxvY2F0aW9uIHRoZW4gaXQgaXMgYXV0b21hdGljYWxseQotICAgICAgY29uZmlndXJlZCBhcyBhbiBBZ2VudCBhbmQgdGhlIFBDSSBpcyBjb25maWd1cmVkIHRvIGFuIGV4dGVybmFsIGFyYml0ZXIuCi0KLSAgICBUaGlzIHNvdW5kcyBnb29kLiBUaG91Z2ggaW4gdGhlIHN0YW5kYWxvbmUgc2V0dXAgdGhlIENQTEQgc2V0cyBQQ0lfSE9TVAotICAgIGZsYWcgKGl0J3Mgb2ssIHdlIGNhbid0IGFjdCBhcyBQQ0kgYWdlbnRzIHNpbmNlIHdlIHJlY2VpdmUgQ0xLSU4sIG5vdAotICAgIFBDSUNMSyksIGJ1dCB0aGUgQ1BMRCBkb2Vzbid0IHNldCB0aGUgQVJCSVRFUl9FTkFCTEUgZmxhZywgYW5kIHdpdGhvdXQKLSAgICBhbnkgYXJiaXRlciBiYWQgdGhpbmdzIHdpbGwgaGFwcGVuIChoZXJlIHRoZSBib2FyZCBoYW5ncyBkdXJpbmcgYW55IGNvbmZpZwotICAgIHNwYWNlIHJlYWRzKS4KLQotICAgIEluIHRoaXMgc2l0dWF0aW9uIHdlIG11c3QgZGlzYWJsZSB0aGUgUENJLiBBbmQgaW4gY2FzZSBvZiBhbnlib2R5IHJlYWxseQotICAgIHdhbnQgdG8gdXNlIGFuIGV4dGVybmFsIGFyYml0ZXIsIHdlIHByb3ZpZGUgInBjaV9leHRlcm5hbF9hcmlidGVyIgotICAgIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFkYTgzYTYzZDhlMWI0YmRkZWI4MjU4MWIxNzQ1YTA5YWFjM2UyZDMKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgT2N0IDIgMTg6MzI6MjUgMjAwOCArMDQwMAotCi0gICAgbXBjODN4eDogYWRkIFNHTUlJIHJpc2VyIG1vZHVsZSBzdXBwb3J0IGZvciB0aGUgTVBDODM3OEUtTURTIGJvYXJkcwotCi0gICAgVGhpcyBpbnZvbHZlcyBjb25maWd1cmluZyB0aGUgU2VyRGVzIGFuZCBmaXhpbmcgdXAgdGhlIGZsYWdzIGFuZAotICAgIFBIWSBhZGRyZXNzZXMgZm9yIHRoZSBUU0VDcy4KLQotICAgIEZvciBMaW51eCB3ZSBhbHNvIGZpeCB1cCB0aGUgZGV2aWNlIHRyZWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTZkOWM4OTE2ZGU5YzI0ZjJjNTJkMGIwMWNmMDBkMmU3NGEwNGNkOAotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBPY3QgMiAxODozMTo1OSAyMDA4ICswNDAwCi0KLSAgICBtcGM4M3h4OiBhZGQgVFNFQ3MnIEhSQ1dIIG1hc2tzIGZvciBNUEM4Mzd4IHByb2Nlc3NvcnMKLQotICAgIFdlJ2xsIHVzZSB0aGVzZSBtYXNrcyB0byBwYXJzZSBUU0VDIG1vZGVzIG91dCBvZiBIUkNXSC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2ZjljYzY2MDhiNGUxY2VmZGU1NmMwZmI5OWFlMWM5NWM0MjU3NWZmCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IE9jdCAyIDE4OjMxOjU2IDIwMDggKzA0MDAKLQotICAgIG1wYzgzeHg6IHNlcmRlczogYWRkIGZvcmdvdHRlbiBzaGlmdHMgZm9yIHJmY2tzCi0KLSAgICBUaGUgcmZja3Mgc2hvdWxkIGJlIHNoaWZ0ZWQgYnkgMjggYml0cyBsZWZ0LiBXZSBkaWRuJ3Qgbm90aWNlIHRoZSBidWcKLSAgICBiZWNhdXNlIHdlIHdlcmUgdXNpbmcgb25seSAxMDBNSHogY2xvY2tzIChmb3Igd2hpY2ggcmZja3MgPT0gMCkuCi0KLSAgICBUaG91Z2gsIGZvciBTR01JSSB3ZSdsbCBuZWVkIDEyNU1IeiBjbG9ja3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTVjNTMxOTg0ZGNmOTMzZTRjZDEzYTE4N2E3ZTA4ZTg3M2I3Y2VkMQotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBPY3QgMiAxODozMTo1MyAyMDA4ICswNDAwCi0KLSAgICBtcGM4M3h4OiBmaXggc2VyZGVzIHNldHVwIGZvciB0aGUgTVBDODM3OEUgYm9hcmRzCi0KLSAgICBNUEM4Mzd4RSBzcGVjcyBzYXlzIHRoYXQgU2VyRGVzMSBoYXM6Ci0KLSAgICDigJQgVHdvIGxhbmVzIHJ1bm5pbmcgeDEgU0dNSUkgYXQgMS4yNSBHYnBzOwotICAgIOKAlCBUd28gbGFuZXMgcnVubmluZyB4MSBTQVRBIGF0IDEuNSBvciAzLjAgR2Jwcy4KLQotICAgIEFuZCBmb3IgU2VyRGVzMjoKLQotICAgIOKAlCBUd28gbGFuZXMgcnVubmluZyB4MSBQQ0kgRXhwcmVzcyBhdCAyLjUgR2JwczsKLSAgICDigJQgT25lIGxhbmUgcnVubmluZyB4MiBQQ0kgRXhwcmVzcyBhdCAyLjUgR2JwczsKLSAgICDigJQgVHdvIGxhbmVzIHJ1bm5pbmcgeDEgU0FUQSBhdCAxLjUgb3IgMy4wIEdicHMuCi0KLSAgICBUaGUgc3BlYyBhbHNvIGV4cGxpY2l0bHkgc3RhdGVzIHRoYXQgUEVYIG9wdGlvbnMgYXJlIG5vdCB2YWxpZCBmb3IKLSAgICB0aGUgU0QxLgotCi0gICAgTmV2ZXJ0aGVsZXNzIE1QQzgzNzggUkRCIGFuZCBNRFMgYm9hcmRzIGNvbmZpZ3VyZSB0aGUgU0QxIGZvciBQRVgsCi0gICAgd2hpY2ggaXMgd3JvbmcgdG8gZG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWMyZmYzMjNhOTRlMjdlNDgxZjcwYzQ0ODM4ZDQzZmNkODQ0ZGQ0NgotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBTZXAgMTAgMTg6MTI6MzcgMjAwOCArMDQwMAotCi0gICAgbXBjODN4eDogbXBjODM2MGVtZHM6IHJld29yayBMQkMgU0RSQU0gc2V0dXAKLQotICAgIEN1cnJlbnRseSA2NE0gb2YgTEJDIFNEUkFNIGFyZSBtYXBwZWQgYXQgMHhGMDAwMDAwMCB3aGljaCBtYWtlcwotICAgIGl0IGRpZmZpY3VsdCB0byB1c2UgKGIvYyB0aGVuIHRoZSBtZW1vcnkgaXMgZGlzY29udGludW91cyBhbmQKLSAgICB0aGVyZSBpcyBxdWl0ZSBiaWcgbWVtb3J5IGhvbGUgYmV0d2VlbiB0aGUgRERSL1NEUkFNIHJlZ2lvbnMpLgotCi0gICAgVGhpcyBwYXRjaCByZXdvcmtzIExCQyBTRFJBTSBzZXR1cCBzbyB0aGF0IG5vdyB3ZSBkeW5hbWljYWxseQotICAgIHBsYWNlIHRoZSBMQkMgU0RSQU0gbmVhciB0aGUgRERSIChvciBhdCAweDAgaWYgdGhlcmUgaXNuJ3QgYW55Ci0gICAgRERSIG1lbW9yeSkuCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggd2UncmUgYWJsZSB0bzoKLQotICAgIC0gQm9vdCB3aXRob3V0IGV4dGVybmFsIEREUiBtZW1vcnk7Ci0gICAgLSBVc2UgbW9zdCAiRERSICsgU0RSQU0iIHNldHVwcyB3aXRob3V0IG5lZWQgdG8gc3VwcG9ydCBmb3IKLSAgICAgIHNwYXJzZS9kaXNjb250aW51b3VzIG1lbW9yeSBtb2RlbCBpbiB0aGUgc29mdHdhcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGVmMDgxOWU5MjBiMDViMzRiNTZkOGI0MmUxZTQzZDliODlhNTJkNgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEB4cGVydC5kZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyMSAxMToyMzo1NiAyMDA4ICswMjAwCi0KLSAgICBGRFQ6IGRvbid0IHVzZSBwcml2YXRlIGtlcm5lbCBoZWFkZXIgZmlsZXMKLQotICAgIE9uIHNvbWUgc3lzdGVtcyAoZm9yIGV4YW1wbGUgRmVkb3JhIENvcmUgNCkgVS1Cb290IGJ1aWxkcyB3aXRoIHRoZQotICAgIGZvbGxvd2luZyB3YW5yaW5ncyBvbmx5OgotCi0gICAgLi4uCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC9ob21lL3dkL2dpdC91LWJvb3QvaW5jbHVkZS9saWJmZHRfZW52Lmg6MzMsCi0JCSAgICAgZnJvbSBmZHQuYzo1MToKLQkJIC91c3IvaW5jbHVkZS9hc20vYnl0ZW9yZGVyLmg6NjoyOiB3YXJuaW5nOiAjd2FybmluZyB1c2luZyBwcml2YXRlIGtlcm5lbCBoZWFkZXI7IGluY2x1ZGUgPGVuZGlhbi5oPiBpbnN0ZWFkIQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZjRkMTRjNTU1MDRjZTQwMjg3MzIxYmQ2M2VlMjY5ZTMyMzNlZTRhZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gT2N0IDEzIDE1OjE1OjMxIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIDEuMCAmIDEuMDY2IEdIeiB0byBjYW55b25sYW5kcyBib290c3RyYXAgY29tbWFuZCBmb3IgUExMIHNldHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0M2NiY2U2OWQ0OGQwNTI1NzRkNzFmNTA3MjRiZTU0NmQ5MGE0NmE0Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBPY3QgMTMgMTA6NDU6MTQgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDb3JyZWN0bHkgc2V0dXAgcmFuZ2VzIHByb3BlcnR5IGluIGViYyBub2RlCi0KLSAgICBQcmV2aW91c2x5IG9ubHkgdGhlIE5PUiBmbGFzaCBtYXBwaW5nIHdhcyB3cml0dGVuIGludG8gdGhlIHJhbmdlcwotICAgIHByb3BlcnR5IG9mIHRoZSBlYmMgbm9kZS4gVGhpcyBwYXRjaCBub3cgd3JpdGVzIGFsbCBlbmFibGVkIGNoaXAKLSAgICBzZWxlY3QgYXJlYXMgaW50byB0aGUgcmFuZ2VzIHByb3BlcnR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDdiMjZkNTgzMjhmMTM3NDcxZWE5N2RlMzgyYmZhNjNmNzIzOTkzMQotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJV2VkIE9jdCA4IDE1OjM3OjUwIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIEdEU3lzIG5lbyA0MDVFUCBib2FyZCBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGMxMWRhMTk0NTQ1ZDJmNGJiYjU0YmUxYmI1ZTUwNGUyMGNlOGMxNmMKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLURhdGU6CVdlZCBPY3QgMSAxNDo0NjoxMyAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBjb25maWdzIGZvciBOZXRzdGFsIGJvYXJkcwotCi0gICAgSSByZW9yZ2FuaXplZCBteSBjb25maWcgZmlsZXMsIHB1dHRpbmcgdGhlIGNvbW1vbiBzdHVmZiBpbnRvIG5ldHN0YWwtY29tbW9uLmgKLSAgICAoZ290IHRoZSBpZGVhIGJ5IGxvb2tpbmcgYSBhbWNjLWNvbW1vbi5oIGZyb20gU3RlZmFuKS4KLQotICAgIEFkZGVkIHN0dWZmIHRvIGJvb3QgdGhlIG5ldyBwb3dlcnBjIGxpbnV4IHZpYSBORlMgKG9ubHkgdGVzdGVkIHdpdGggSENVNCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGM5YzExZDc1MWU0MjQyY2YyOWMzYzNjMjkwZDk3MWY2ZDBjYjFkMTUKLUF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+Ci1EYXRlOglXZWQgT2N0IDggMTA6MTM6MTkgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBBZGQgcm91dGluZSB0byByZXRyaWV2ZSBDUFUgbnVtYmVyCi0KLSAgICBQcm92aWRlIGEgd2VhayBkZWZpbmVkIHJvdXRpbmUgdG8gcmV0cmlldmUgdGhlIENQVSBudW1iZXIgZm9yCi0gICAgcmVmZXJlbmNlIGJvYXJkcyB0aGF0IGhhdmUgbXVsdGlwbGUgQ1BVJ3MuCURlZmF1bHQgYmVoYXZpb3IKLSAgICBpcyB0aGUgZXhpc3Rpbmcgc2luZ2xlIENQVSBwcmludCBvdXRwdXQuICBSZWZlcmVuY2UgYm9hcmRzIHdpdGgKLSAgICBtdWx0aXBsZSBDUFUncyBuZWVkIHRvIHByb3ZpZGUgYSBib2FyZCBzcGVjaWZpYyByb3V0aW5lLgotICAgIFNlZSBib2FyZC9hbWNjL2FyY2hlcy9hcmNoZXMuYyBmb3IgYW4gZXhhbXBsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDU5MjE3YmFlNDBlOTA5ODJhYjU0MDBkODQ5YzA4YWY2ODNhY2UwMzYKLUF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+Ci1EYXRlOglXZWQgT2N0IDggMTA6MTM6MTQgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBBZGQgc3RhdGljIHN1cHBvcnQgZm9yIDQ0eCBJQk0gU0RSQU0gQ29udHJvbGxlcgotCi0gICAgVGhpcyBwYXRjaCBhZGQgdGhlIGNhcGFiaWxpdHkgdG8gY29uZmlndXJlIGEgUFBDNDQwIGJhc2VkIElCTSBTRFJBTQotICAgIENvbnRyb2xsZXIgd2l0aCBzdGF0aWMsIGNvbXBpbGVkLWluLCB2YWx1ZXMuIFBQQzQ0MCBtZW1vcnkgc3Vic3lzdGVtCi0gICAgaW5jbHVkZXMgYSBNZW1vcnkgUXVldWUgY29yZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGYwOWYwOWQzODk5MDE3YWFhYTJiMDMxYmJhNjNjMjcxZTljNDhlNGQKLUF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+Ci1EYXRlOglXZWQgT2N0IDggMTA6MTI6NTMgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBBZGQgQU1DQyBBcmNoZXMgYm9hcmQgc3VwcG9ydCAoZHVhbCA0NjBHVCkKLQotICAgIFRoZSBBcmNoZXMgRXZhbHVhdGlvbiBib2FyZCBpcyBiYXNlZCBvbiB0aGUgQU1DQyA0NjBHVCBTb0MgY2hpcC4KLSAgICBUaGlzIGJvYXJkIGlzIGEgZHVhbCBwcm9jZXNzb3IgYm9hcmQgd2l0aCBlYWNoIHByb2Nlc3NvciBwcm92aWRpbmcKLSAgICBpbmRlcGVuZGVudCByZXNvdXJjZXMgZm9yIFJhcGlkIElPLCBHaWdhYml0IEV0aGVybmV0LCBhbmQgc2VyaWFsCi0gICAgY29tbXVuaWNhdGlvbnMuIEVhY2ggNDYwR1QgaGFzIGl0J3Mgb3duIDUxMk1CIEREUjIgbWVtb3J5LCAzMk1CIE5PUgotICAgIEZMQVNILCBVQVJULCBFRVBST00gYW5kIHRlbXBlcmF0dXJlIHNlbnNvciwgYWxvbmcgd2l0aCBhIHNoYXJlZCBkZWJ1ZwotICAgIHBvcnQuIFRoZSB0d28gNDYwR1QncyB3aWxsIGNvbW11bmljYXRlIHdpdGggZWFjaCBvdGhlciB2aWEgc2hhcmVkCi0gICAgbWVtb3J5LCBHaWdhYml0IEV0aGVybmV0IGFuZCB4MSBQQ0ktRXhwcmVzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDA1NWIxMmYyZmZkN2MzNGVlYTdlOTgzYTA1ODhiMjRmMmU2OWUwZTMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAeHBlcnQuZGVueC5kZT4KLURhdGU6CVN1biBPY3QgMTkgMjE6NTQ6MzAgMjAwOCArMDIwMAotCi0gICAgVFFNODI2MDogZW52aXJvbm1lbnQgaW4gZmxhc2ggaW5zdGVhZCBFRVBST00sIGJhdWRyYXRlIDExNWsKLQotICAgIFNldmVyYWwgY3VzdG9tZXJzIGhhdmUgcmVwb3J0ZWQgcHJvYmxlbXMgd2l0aCB0aGUgZW52aXJvbm1lbnQgaW4KLSAgICBFRVBST00sIGluY2x1ZGluZyBjb3JydXB0ZWQgY29udGVudCBhZnRlciBib2FyZCByZXNldC4gUHJvYmFibHkgdGhlCi0gICAgY29kZSB0byBwcmV2ZW50IEkyQyBFbmdlIENvbmRpdGlvbnMgaXMgbm90IHdvcmtpbmcgc3VmZmljaWVudGx5LgotCi0gICAgV2UgbW92ZSB0aGUgZW52aXJvbm1lbnQgdG8gZmxhc2ggbm93LCB3aGljaCBhbGxvd3MgdG8gaGF2ZSBhIGJhY2t1cAotICAgIGNvcHkgcGx1cyBnaXZlcyBtdWNoIGZhc3RlciBib290IHRpbWVzLgotCi0gICAgQWxzbywgY2hhbmdlIHRoZSBkZWZhdWx0IGNvbnNvbGUgaW5pdGlhbGl6YXRpb24gdG8gMTE1MjAwIGJwcyBhcyB1c2VkCi0gICAgb24gbW9zdCBvdGhlciBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTgzNjg4MTE5MGIzZDhhNjkxOGIwZDY0YjM5ZmUzMmJiYmRmODVkOAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJU3VuIE9jdCAxOSAxMjo0OToxOSAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBGaXggY29tcGlsZSB3YXJuaW5nIGluIG1wYzg1MzZkcy5jCi0KLSAgICBtcGM4NTM2ZHMuYzogSW4gZnVuY3Rpb24gJ2lzX3NhdGFfc3VwcG9ydGVkJzoKLSAgICBtcGM4NTM2ZHMuYzo2MTU6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnZGV2ZGlzcicKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4ZWQ0NGQ5MWM4MTIyZDAwMzY4NTIzYjBiNzQ2NjkxYzg5NWQzYjNjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gT2N0IDE5IDAyOjM1OjUwIDIwMDggKzAyMDAKLQotICAgIENsZWFudXA6IGZpeCAiTUh6IiBzcGVsbGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDA4ZWY4OWVjZDE3NDk2OWIzNTQ0ZjNmMGM3Y2QxZGUzYzU3ZjczN2IKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBPY3QgMTkgMDI6MzU6NDkgMjAwOCArMDIwMAotCi0gICAgVXNlIHN0cm1oeigpIHRvIGZvcm1hdCBjbG9jayBmcmVxdWVuY2llcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQ1MGM3ZDRiZTE1MGIyMjUyYzBkMmUxNmNmY2Y2OTY0M2JkZDZkYzkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBPY3QgMTkgMDI6MzU6NDggMjAwOCArMDIwMAotCi0gICAgc3RybWh6KCk6IFJvdW5kIG51bWJlcnMgd2hlbiBwcmludGluZyBjbG9jayBmcmVxdWVuY2llcwotCi0gICAgUm91bmQgY2xvY2sgZnJlcXVlbmNpZXMgZm9yIHByaW50aW5nLgotCi0gICAgTWFueSBib2FyZHMgcHJpbnRlZCBvZmYgY2xvY2sgZnJlcXVlbmNpZXMgbGlrZSAzOTkgTUh6IGluc3RlYWQgb2YgdGhlCi0gICAgZXhhY3QgNDAwIE1IeiBiZWNhdXNlIG51bWJlcmVzIHdlcmUgbm90IHJvdW5kZWQuIFRoaXMgaXMgZml4ZWQgbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDY4MWMwMmQwNWIyOWM2ZDQ2MDkzNTI1MDUyYzc0YjljNGRkYzhiMDgKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBPY3QgMjAgMTU6MTY6NDcgMjAwOCAtMDUwMAotCi0gICAgODV4eDogcHJvcGVybHkgZG9jdW1lbnQgTVBDODV4eF9QT1JERVZTUjJfU0VDX0NGRwotCi0gICAgQ29tbWl0IGY3ZDE5MGIxIGNvcnJlY3RlZCB0aGUgdmFsdWUgb2YgTVBDODV4eF9QT1JERVZTUjJfU0VDX0NGRywgYnV0IGZvcmdvdAotICAgIHRvIGFkZCBhIGNvbW1lbnQgdGhhdCB0aGUgY29ycmVjdCB2YWx1ZSBkaXNhZ3JlZXMgd2l0aCB0aGUgODU0NCByZWZlcmVuY2UKLSAgICBtYW51YWwuICBUaGUgY2hhbmdlbG9nIGZvciB0aGF0IGNvbW1pdCBpcyBhbHNvIHdyb25nLCBhcyBpdCBzYXlzICJiaXQgMjgiCi0gICAgd2hlbiBpdCBzaG91bGQgYmUgImJpdCAyNCIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzYwZmU3MWU4MmI4M2UyNjRjOTY0Yzk0NDdjNTM3ZTlhMWY2NDNjOAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMTcgMTg6MjQ6MDYgMjAwOCArMDIwMAotCi0gICAgbWdjb2dlOiBhZGQgcmVkdW5kYW50IGVudmlyb25tZW50IHNlY3RvcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA1M2ViZjBjNDcwYzg3ZDVmOWZhNzY0NjJlNWY0MDY0ZDI2YTliMTZhCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAxNyAxODoyMzoyNyAyMDA4ICswMjAwCi0KLSAgICBtZ3N1dmQ6IHVwZGF0ZSBzaXplIG9mIGVudmlyb25tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDJlMjZkODM3ZjExNDYwYzBlNmRlZGU3ZDY1NDI0YTMxZTAxODNkMDkKLUF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMTAgMTE6NDE6MDAgMjAwOCArMDgwMAotCi0gICAgRW5hYmxlZCB0aGUgRnJlZXNjYWxlIFNHTUlJIHJpc2VyIGNhcmQgb24gODUzNkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2UxODNjYWQwYzVhYjY0MTVkY2E5NWQ2YWMyOTBlYTkxOGIyOGM1NQotQXV0aG9yOiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAxMCAxMTo0MDo1OSAyMDA4ICswODAwCi0KLSAgICBFbmFibGVkIHRoZSBGcmVlc2NhbGUgU0dNSUkgcmlzZXIgY2FyZCBvbiA4NTcyRFMKLQotICAgIFRoaXMgcGF0Y2ggYmFzZWQgb24gQW5keSdzIHdvcmsuCi0gICAgSW5jbHVkaW5nIGNvbW1hbmQgJ3BpeGlzX3NldF9zZ21paScgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZmYxODhiYWY5NDI3YzM1NzQ1MzU2NDM5NDM1YWNmMzg2NGQ0YzY1Ci1BdXRob3I6IExpdSBZdSA8eXUubGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDEwIDExOjQwOjU4IDIwMDggKzA4MDAKLQotICAgIE1ha2UgcGl4aXNfc2V0X3NnbWlpIG1vcmUgZ2VuZXJhbCB0byBzdXBwb3J0IE1QQzg1eHggYm9hcmRzLgotCi0gICAgVGhlIHBpeGlzIHNnbWlpIGNvbW1hbmQgZGVwZW5kIG9uIHRoZSBGUEdBIHN1cHBvcnQgb24gdGhlIGJvYXJkLCBzb21lIDg1eHgKLSAgICBib2FyZHMgc3VwcG9ydCBTR01JSSByaXNlciBjYXJkIGJ1dCBkaWQgbm90IHN1cHBvcnQgdGhpcyBjb21tYW5kLCBkZWZpbmUKLSAgICBDT05GSUdfUElYSVNfU0dNSUlfQ01EIGZvciB0aG9zZSBib2FyZHMgd2hpY2ggc3VwcG9ydCB0aGUgc2dtaWkgY29tbWFuZC4KLQotICAgIE5vdCBsaWtlIDg1NDQsIDg1NzIgaGFzIDQgZVRzZWMgc28gdGhhdCB0aGUgb3RoZXIgdHdvJ3MgcGl4aXMgYml0cwotICAgIGFyZSBub3Qgc3VwcG9ydGVkIGJ5IDg1NDQuIFRoZXJlZm9yLCBkZWZpbmUgUElYSVNfVlNQRUVEMl9NQVNLIGFuZAotICAgIFBJWElTX1ZDRkdFTjFfTUFTSyBpbiBoZWFkZXIgZmlsZSBmb3IgYm90aCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMaXUgWXUgPHl1LmxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWU5ODFkNjgzZDIzNjMyMDRjNzY3NzM5NDFjMmU5YzIwNDRjODA4ZgotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE9jdCA4IDIzOjM4OjAyIDIwMDggLTA1MDAKLQotICAgIEFkZCBjcHUvOHh4eCB0byBUQUdTX1NVQkRJUlMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlMWY3ZDIyYjhiNTJmYzA4YzRkMTdhNmE3ZGIxZTY2NDI4MWFlZDYzCi1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDkgMDE6MjU6NTUgMjAwOCAtMDUwMAotCi0gICAgZnNsX2xhdyBjbGVhciBlbmFibGUgYmVmb3JlIGNoYW5naW5nLgotCi0gICAgRGVidWcgc2Vzc2lvbnMgbWF5IGhhdmUgbGVmdCBlbmFibGVkIGxhd3MuCi0gICAgQ2hhbmdpbmcgbGF3YmFyIHdpdGggYW4gdW5rb3duIGVuYWJsZWQgdGd0aWQgY291bGQgY2F1c2UgcHJvYmxlbXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODZiZTUxMGY3YjU0NDNlN2U5MzdmNjk2YmZiZTAzN2ZkYzc0MGIxNQotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCA5IDAwOjI5OjI3IDIwMDggLTA1MDAKLQotICAgIG1wYzg1NzIgYWRkaXRpb25hbCBlbmQtcG9pbnQgbW9kZQotCi0gICAgbXBjODU3MiBzdXBwb3J0cyBhbGwgcGNpZSBjb250cm9sbGVycyBhcyBlbmQtcG9pbnRzIHdpdGggY2ZnX2hvc3RfYWdlbnQ9MC4KLSAgICBJbmNsdWRlIGhvc3RfYWdlbnQgPT0gMCBkZWNvZGUgZm9yIGVuZC1wb2ludCBkZXRlcm1pbmF0aW9uLgotCi0gICAgVGhpcyBpcyBub3QgbmVlZGVkIGZvciB0aGUgZHMgcmVmZXJlbmNlIGJvYXJkIHNpbmNlIHBjaWUzIHdpbGwgYmUgYSBob3N0Ci0gICAgaW4gb3JkZXIgdG8gY29ubmVjdCB0byB0aGUgdWxpIGNoaXAuICBJbmNsdWRlIGl0IGhlcmUgYXMgYSByZWZlcmVuY2UgZm9yCi0gICAgb3RoZXIgbXBjODU3MiBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjg1NmIzZDAyMjFhODM4NTgwZTZiYjA2ZjYxNDI1ZmQ3NTI5YmE5MwotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE9jdCA4IDIzOjM3OjU5IDIwMDggLTA1MDAKLQotICAgIDg1eHggaWYgTlVNX0NQVVM+MSwgcHJpbnQgY3B1IG51bWJlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGY3ZmVjYzNlMjUwNTBhMDM2YzlmNTBmMGQyYjg1YmMzMTk5YTk2ZTAKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgOCAyMzozODowMSAyMDA4IC0wNTAwCi0KLSAgICBwaXhpcyBkbyBub3QgcHJpbnQgbG9uZyBoZWxwIGlmIG5vdCBjb25maWd1cmVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGUxN2YwMmE4YTc4ZDg1MjI1YTRkODA1ZjZhMWVhOTVhMGE0NjBiNQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDcgMDg6MDk6NTAgMjAwOCAtMDUwMAotCi0gICAgSGF2ZSB1LWJvb3QgcGFzcyBzdGFzaGluZyBwYXJhbWV0ZXJzIGludG8gZGV2aWNlIHRyZWUKLQotICAgIFNvbWUgY29yZXMgZG9uJ3Qgc3VwcG9ydCBldGhlcm5ldCBzdGFzaGluZyBhdCBhbGwsIGFuZCBzb21lCi0gICAgaW5zdGFuY2VzIGhhdmUgZXJyYXRhLiAgQWRkcyAzIHByb3BlcnRpZXMgdG8gZ2lhbmZhciBub2RlcwotICAgIHdoaWNoIHN1cHBvcnQgc3Rhc2hpbmcuICBGb3Igbm93LCBqdXN0IGFkZCB0aGlzIHN1cHBvcnQgdG8KLSAgICA4NXh4IFNvQ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjMjE2MTdmZDI2NWI3YzEyNmM2ZTJmMmQ4YTIzY2RiMDBkNGZhZGU3Ci1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDMgMTI6Mzc6NTcgMjAwOCAtMDQwMAotCi0gICAgQWRkIEREUiBvcHRpb25zIHNldHRpbmcgb24gTVBDODY0MUhQQ04gYm9hcmQKLQotICAgICogQWRkIGJvYXJkIHNwZWNpZmljIHBhcmFtZXRlciB0YWJsZSB0byBjaG9vc2UgY29ycmVjdCBjcG8sIGNsa19hZGp1c3QsCi0gICAgd3JpdGVfZGF0YV9kZWxheSBiYXNlZCBvbiBib2FyZCBkZHIgZnJlcXVlbmN5IGFuZCBuX3JhbmtzLgotCi0gICAgKiBTZXQgb2R0X3JkX2NmZyBhbmQgb2R0X3dyX2NmZyBiYXNlZCBvbiB0aGUgZGltbSMgYW5kIENTIy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGNhMDY2MDdkNjBkMGE2Mzc4ODEyZWY1OGZkMWVhYjJhN2Y3NzExMQotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAzIDEyOjM3OjQxIDIwMDggLTA0MDAKLQotICAgIEFkZCBkZHIgaW50ZXJsZWF2aW5nIHN1cHBwb3J0IGZvciBNUEM4NTcyRFMgYm9hcmQKLQotICAgICogQWRkIGJvYXJkIHNwZWNpZmljIHBhcmFtZXRlciB0YWJsZSB0byBjaG9vc2UgY29ycmVjdCBjcG8sIGNsa19hZGp1c3QsCi0gICAgd3JpdGVfZGF0YV9kZWxheSwgMlQgYmFzZWQgb24gYm9hcmQgZGRyIGZyZXF1ZW5jeSBhbmQgbl9yYW5rcy4KLQotICAgICogU2V0IG9kdF9yZF9jZmcgYW5kIG9kdF93cl9jZmcgYmFzZWQgb24gdGhlIGRpbW0jIGFuZCBDUyMuCi0KLSAgICAqIFNldCBtZW1vcnkgY29udHJvbGxlciBpbnRlcmxlYXZpbmcgbW9kZSB0byBiYW5rIGludGVybGVhdmluZywgYW5kIGRpc2FibGUKLSAgICBiYW5rKGNoaXAgc2VsZWN0KSBpbnRlcmxlYXZpbmcgbW9kZSBieSBkZWZhdWx0LCBiZWNhdXNlIHRoZSBkZWZhdWx0IG9uLWJvYXJkCi0gICAgRERSIERJTU1zIGFyZSAyeDUxMk1CIHNpbmdsZS1yYW5rLgotCi0gICAgKiBDaGFuZ2UgQ09ORklHX0lDUzMwN19SRUZDTEtfSFogZnJvbSAzMzMzMzMzMyB0byAzMzMzMzAwMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMWYyOTNiNDE3YWM2YWI4ZTMxN2NhMmI3NzAzNzdjYTkzZWRmMjM3MAotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAzIDEyOjM3OjI2IDIwMDggLTA0MDAKLQotICAgIEFkZCBkZWJ1ZyBpbmZvcm1hdGlvbiBmb3IgRERSIGNvbnRyb2xsZXIgcmVnaXN0ZXJzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzlmZmQ4MzliMWFkYTUwMmM4NmY4OGVkYWYxNTM0NDI2YjY2ODhjZQotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAzIDEyOjM3OjEwIDIwMDggLTA0MDAKLQotICAgIENoZWNrIEREUiBpbnRlcmxlYXZpbmcgbW9kZQotCi0gICAgKiBDaGVjayBERFIgaW50ZXJsZWF2aW5nIG1vZGUgZnJvbSBlbnZpcm9ubWVudCBieSByZWFkaW5nIG1lbWN0bF9pbnRsdl9jdGwgYW5kCi0gICAgYmFfaW50bHZfY3RsLgotICAgICogUHJpbnQgRERSIGludGVybGVhdmluZyBtb2RlIGluZm9ybWF0aW9uCi0gICAgKiBBZGQgZG9jL1JFQURNRS5mc2wtZGRyIHRvIGRlc2NyaWJlIHRoZSBpbnRlcmxlYXZpbmcgc2V0dGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRmYjQ5MTA4ZTRmODZjMjIyNGUxZjMwMTI0MzI4YjBkZTY2ZWY3MmUKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMyAxMjozNjo1NSAyMDA4IC0wNDAwCi0KLSAgICBQYXNzIGRpbW0gcGFyYW1ldGVycyB0byBwb3B1bGF0ZSBwb3B1bGF0ZSBjb250cm9sbGVyIG9wdGlvbnMKLQotICAgIEJlY2F1c2Ugc29tZSBkaW1tIHBhcmFtZXRlcnMgbGlrZSBuX3JhbmtzIG5lZWRzIHRvIGJlIHVzZWQgd2l0aCB0aGUgYm9hcmQKLSAgICBmcmVxdWVuY3kgdG8gY2hvb3NlIHRoZSBib2FyZCBwYXJhbWV0ZXJzIGxpa2UgY2xrX2FkanVzdCBldGMuIGluIHRoZQotICAgIGJvYXJkX3NwZWNpZmljX3BhcmFtZXN0ZXJzIHRhYmxlIG9mIHRoZSBib2FyZCBkZHIgZmlsZSwgd2UgbmVlZCB0byBwYXNzCi0gICAgdGhlIGRpbW0gcGFyYW1ldGVycyB0byB0aGUgYm9hcmQgZmlsZS4KLQotICAgICogbW92ZSBkZHIgZGltbSBwYXJhbWV0ZXJzIGhlYWRlciBmaWxlIGZyb20gL2NwdSB0byAvaW5jbHVkZSBkaXJlY3RvcnkuCi0gICAgKiBhZGQgZGRyIGRpbW0gcGFyYW1ldGVycyB0byBwb3B1bGF0ZSBib2FyZCBzcGVjaWZpYyBvcHRpb25zLgotICAgICogRml4IGZzbF9kZHJfYm9hcmRfb3B0aW9ucygpIGZvciBhbGwgdGhlIDh4eHggYm9hcmRzIHdoaWNoIGNhbGwgdGhpcyBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkYmJiYjNhYmVmZjMyNTg1NWNhZTc2ZTMzZDY5ZDU2NjU2MzE0NDNmCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDMgMTI6MzY6MzkgMjAwOCAtMDQwMAotCi0gICAgTWFrZSBERFIgaW50ZXJsZWF2aW5nIG1vZGUgd29yayBjb3JyZWN0bHkKLQotICAgIEZpeCBzb21lIGJ1Z3M6Ci0gICAgICAxLiBDb3JyZWN0bHkgc2V0IGludGx2X2N0bCBpbiBjc19jb25maWcuCi0gICAgICAyLiBDb3JyZWN0bHkgc2V0IHNhLCBlYSBpbiBjc19ibmRzIHdoZW4gYmFuayBpbnRlcmxlYXZpbmcgbW9kZSBpcyBlbmFibGVkLgotICAgICAgMy4gU2V0IGJhc2VfYWRkcmVzcyBhbmQgdG90YWwgbWVtb3J5IGZvciBlYWNoIGRkciBjb250cm9sbGVyIGluIG1lbW9yeQotCSBjb250cm9sbGVyIGludGVybGVhdmluZyBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFjOWFhNzZiZjkwMTMwNjllMjQyNThmNDZmNDY4N2M5Zjk4YTAyZDYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBTZXAgMjIgMjM6NDA6NDIgMjAwOCAtMDUwMAotCi0gICAgODV4eDogRW5hYmxlIGludGVycnVwdCBhbmQgc2V0ZXhwciBjb21tYW5kcyBvbiBGcmVlc2NhbGUgODV4eCBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3YzBkNGE3NTA4ZDI1MmQyZDdjMTM3ZWViMzc2ODE0MTMyZGRhMzBmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gU2VwIDIyIDE0OjExOjExIDIwMDggLTA1MDAKLQotICAgIDg1eHg6IEltcHJvdmUgZmxhc2ggcmVtYXBwaW5nIG9uIE1QQzg1NzJEUyAmIE1QQzg1MzZEUwotCi0gICAgQ2hhbmdpbmcgdGhlIGZsYXNoIGZyb20gY2FjaGVhYmxlIHRvIGNhY2hlLWluaGliaXRlZCB3YXMgdGFraW5nIGEgc2lnbmlmaWNhbnQKLSAgICBhbW91bnQgb2YgdGltZSBkdWUgdG8gdGhlIGZhY3QgdGhhdCB3ZSB3ZXJlIGl0ZXJhdGluZyBvdmVyIHRoZSBmdWxsIDI1Nk0gb2YKLSAgICBmbGFzaC4gIEluc3RlYWQgd2UgY2FuIGp1c3QgZmx1c2ggdGhlIEwxIGQtY2FjaGUgYW5kIGludmFsaWRhdGUgdGhlIGktY2FjaGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTRlMDkxZDNiNjAzYTMzMzJjNjE5MTk5Y2E4M2EwN2U5NTk2MGRhNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIFNlcCAyMiAxNDoxMToxMCAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBFeHBvcnQgaW52YWxpZGF0ZV97aSxkfWNhY2hlIGFuZCBhZGQgZmx1c2hfZGNhY2hlCi0KLSAgICBBZGRlZCB0aGUgYWJpbGl0eSBmb3IgQyBjb2RlIHRvIGludmFsaWRhdGUgdGhlIGkvZC1jYWNoZSdzIGFuZAotICAgIHRvIGZsdXNoIHRoZSBkLWNhY2hlLiAgVGhpcyBhbGxvd3MgdXMgdG8gbW9yZSBlZmZpY2llbnQgY2hhbmdlIG1hcHBpbmdzCi0gICAgZnJvbSBjYWNoZS1hYmxlIHRvIGNhY2hlLWluaGliaXRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA2MjUwZjBmNjI5N2M1YmE5YWVjZGVhNjI5MDc5OWE5NWM1ZDRiMWRhCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAxNyAxNjoxMTo1MiAyMDA4ICswMjAwCi0KLSAgICBtZ2NvZ2UsIG1nc3V2ZDogZXh0cmFjdCBtb3JlIGNvbW1vbiBjb2RlCi0KLSAgICBpbiBmdF9ibG9iX3VwZGF0ZSAoKSBmb3IgYm90aCBib2FyZHMgd2FzIGFuIHVubmVjY2Vzc2FyeQotICAgIHJlcGV0aXRpb24gb2YgY29kZSwgd2hpY2ggdGhpcyBwYXRjaCBtb3ZlcyBpbiBhIGNvbW1vbgotICAgIGZ1bmN0aW9uIGZvciB0aGlzIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgOWUyOTkxOTJjYTk4NTBjZjcyNTQ1NjM4ODA0MmE1YWE1YTZmM2VjNwotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMTcgMTI6MTU6NTUgMjAwOCArMDIwMAotCi0gICAgbWdjb2dlLCBtZ3N1dmQ6IHVzZSBpbl8qL291dF8qIGFjY2Vzb3JzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGEyMWNhOTVmOGI5ZGNhMjI3MTQ5NTJiMzQ4ZTQ5MDVhYzE1N2I1Y2QKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDE3IDEzOjUyOjUxIDIwMDggKzAyMDAKLQotICAgIG1nc3V2ZDogZml4IGNvbXBpbGVyIHdhcm5pbmcgd2hlbiB1c2luZyBzb2Z0X2kyYyBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgY2FjOWNmNzg3NWMyYTAxZDYzNDIyODIwZWQ0NzMyYTliZGY1YWI3YgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMTcgMTI6MTU6MDUgMjAwOCArMDIwMAotCi0gICAgbWdzdXZkOiBmaXggY29kaW5nIHN0eWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDVmNGMzMTM3ZjRmMDUxNzg3NzA3YzU0ODEzMzgyM2YxNjU2ZWI1MDgKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDE3IDEyOjEzOjMwIDIwMDggKzAyMDAKLQotICAgIG1nY29nZTogU2Vjb25kIEZsYXNoIG9uIENTNSBub3Qgb24gQ1MxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDc2ZGExOWRmNWI4ZTE4NmQyNjlmMjkxOTA2OTZiZDMxZmI2YzgzNmIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBPY3QgMTYgMjE6NTI6MDggMjAwOCAtMDUwMAotCi0gICAgQWRkZWQgYXJjaF9sbWJfcmVzZXJ2ZSB0byBhbGxvdyBhcmNoIHNwZWNpZmljIG1lbW9yeSByZWdpb25zIHByb3RlY3Rpb24KLQotICAgIEVhY2ggYXJjaGl0ZWN0dXJlIGhhcyBkaWZmZXJlbnQgd2F5cyBvZiBkZXRlcm1pbmUgd2hhdCByZWdpb25zIG9mIG1lbW9yeQotICAgIG1pZ2h0IG5vdCBiZSB2YWxpZCB0byBnZXQgb3ZlcndyaXR0ZW4gd2hlbiB3ZSBib290LiAgVGhpcyBwcm92aWRlcyBhCi0gICAgaG9vayB0byBhbGxvdyB0aGVtIHRvIHJlc2VydmUgYW55IHJlZ2lvbnMgdGhleSBjYXJlIGFib3V0LglDdXJyZW50bHkKLSAgICBvbmx5IHBwYywgbTY4ayBhbmQgc3BhcmMgbmVlZC91c2UgdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlMDJkNGE5OTA0YzhmMzYzOTU5OTRjMGM4MTQ2OWQ1NTJiODJmNWVhCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IE9jdCAxNiAxNjozMjozNSAyMDA4ICswMjAwCi0KLSAgICBtZ2NvZ2U6IGFkZGVkIENPTkZJR19GSVQgdG8gc3VwcG9ydCB0aGUgbmV3IHUtYm9vdCBpbWFnZSBmb3JtYXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNmQwZjZiY2YzMzdjNTI2MWMwOGZhYmUxMjk4MjE3OGMyYzQ4OWQ3NgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IE9jdCAxNiAxNTowMToxNSAyMDA4ICswMjAwCi0KLSAgICByZW5hbWUgQ0ZHXyBtYWNyb3MgdG8gQ09ORklHX1NZUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDcxZWRjMjcxODE2ZWM4MmNmMDU1MGRkNjk4MGJlMmRhM2NjMmFkOWUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBPY3QgMTMgMTQ6MTI6NTUgMjAwOCAtMDUwMAotCi0gICAgNzR4eC83eHgvODZ4eDogUmVuYW1lIGZsdXNoX2RhdGFfY2FjaGUgdG8gZmx1c2hfZGNhY2hlIHRvIG1hdGNoIDg1eHggdmVyc2lvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGI3OTljYjRjMGVlYmIwNzYyZTkxZTk2NTNkOGI5Y2M5YTk4NDQwZTMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBTZXAgMjMgMTA6MDU6MDIgMjAwOCAtMDUwMAotCi0gICAgRXhwb3NlIGNvbW1hbmQgdGFibGUgc2VhcmNoIGZvciBzdWItY29tbWFuZHMKLQotICAgIFN1Yi1jb21tYW5kIGNhbiBiZW5lZml0IGZyb20gdXNpbmcgdGhlIHNhbWUgdGFibGUgYW5kIHNlYXJjaCBmdW5jdGlvbnMKLSAgICB0aGF0IHRvcCBsZXZlbCBjb21tYW5kcyBoYXZlLiAgRXhwb3NlIHRoaXMgZnVuY3Rpb25hbGl0eSBieSByZWZhY3RvcmluZwotICAgIGZpbmRfY21kKCkgYW5kIGludHJvZHVjaW5nIGZpbmRfY21kX3RibCgpIHRoYXQgc3ViLWNvbW1hbmQgcHJvY2Vzc2luZwotICAgIGNhbiBjYWxsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGY3ZTUxYjI3NTA4NDQ2ZjhjYWUzOTI3OTc1ODE3MTM3OTc5YWQ1ZTgKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDA5OjQxOjMzIDIwMDggKzAyMDAKLQotICAgIG1nc3V2ZCwgbWdjb2dlOiBhZGRlZCBCT09UQ09VTlQgZmVhdHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgOGY2NGRhN2Y4M2I1NTM4ODliYzA4NDAwYzk3MDQ3OTk4MzgyZTlkMgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMTUgMDk6NDE6MDAgMjAwOCArMDIwMAotCi0gICAgbWdjb2dlLCBtZ3N1dmQ6IGFkZGVkIHN1cHBvcnQgZm9yIHRoZSBJVk0gRUVwcm9tLgotCi0gICAgVGhlIEVFcHJvbSBjb250YWlucyBzb21lIE1hbnVmYWN0dXJlcmluZm9ybWF0aW9uLAotICAgIHdoaWNoIGFyZSByZWFkIGZyb20gdS1ib290IGF0IGJvb3QgdGltZSwgYW5kIHNhdmVkCi0gICAgaW4gc2FtZSBodXNoIHNoZWxsIHZhcmlhYmxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgODE0NzNmNjc4MTBjNGM5YjdlZmFlZDhkZWUyNThlZDZiYzRjNzk4MwotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMTUgMDk6NDA6MjggMjAwOCArMDIwMAotCi0gICAgaHVzaDogYWRkIHNob3d2YXIgY29tbWFuZCBmb3IgaHVzaCBzaGVsbC4KLQotICAgIFRoaXMgbmV3IGNvbW1hbmQgc2hvd3MgdGhlIGxvY2FsIHZhcmlhYmxlcyBkZWZpbmVkIGluCi0gICAgdGhlIGh1c2ggc2hlbGw6Ci0KLSAgICA9PiBoZWxwIHNob3d2YXIKLSAgICBzaG93dmFyCi0JLSBwcmludCB2YWx1ZXMgb2YgYWxsIGh1c2hzaGVsbCB2YXJpYWJsZXMKLSAgICBzaG93dmFyIG5hbWUgLi4uCi0JLSBwcmludCB2YWx1ZSBvZiBodXNoc2hlbGwgdmFyaWFibGUgJ25hbWUnCi0KLSAgICBBbHNvIG1ha2UgdGhlIHNldF9sb2NhbF92YXIoKSBhbmQgdW5zZXRfbG9jYWxfdmFyICgpCi0gICAgbm8gbG9uZ2VyIHN0YXRpYywgc28gaXQgaXMgcG9zc2libGUgdG8gZGVmaW5lIGxvY2FsCi0gICAgaHVzaCBzaGVsbCB2YXJpYWJsZXMgYXQgYm9vdCB0aW1lLiBJZiBDT05GSUdfSFVTSF9JTklUX1ZBUgotICAgIGlzIGRlZmluZWQsIHUtYm9vdCBjYWxscyBodXNoX2luaXRfdmFyICgpLCB3aGVyZQotICAgIGJvYXJkc3BlY2lmaWMgY29kZSBjYW4gZGVmaW5lIGxvY2FsIGh1c2ggc2hlbGwKLSAgICB2YXJpYWJsZXMgYXQgYm9vdHRpbWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDY3YjIzYTMyMjg0OGQ4MjhhNWU0NWMwNTY3YjcyNzYyYmZkZTdhYmYKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDA5OjM5OjQ3IDIwMDggKzAyMDAKLQotICAgIEkyQzogYWRkaW5nIG5ldyAiaTJjIGJ1cyIgQ29tbWFuZCB0byB0aGUgSTJDIFN1YnN5c3RlbS4KLQotICAgIFdpdGggdGhpcyBDb21tYW5kIGl0IGlzIHBvc3NpYmxlIHRvIGFkZCBuZXcgSTJDIEJ1c3NlcywKLSAgICB3aGljaCBhcmUgYmVoaW5kIDEgLi4gbiBJMkMgTXV4ZXMuIERldGFpbHMgc2VlIFJFQURNRS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgYzI0ODUzNjQ0ZGRkMmRkMmU0MjQ2YjU4NTRhOTNlNjI1NGExNDA5MgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMTUgMDk6Mzk6MDggMjAwOCArMDIwMAotCi0gICAgbWdjb2dlLCBtZ3N1dmQ6IGFkZCBib2FyZCBzcGVjaWZpYyBJMkMgZGVibG9ja2luZyBtZWNoYW5pc20uCi0KLSAgICBBcyBkb2N1bWVudGVkIGluIGRvYy9JMkNfRWRnZV9Db25kaXRpb25zLCBhZGRpbmcgYQotICAgIGJvYXJkIHNwZWNpZmljIGRlYmxvY2tpbmcgbWVjaGFuaXNtIHZpYSBDRkdfSTJDX0lOSVRfQk9BUkQKLSAgICBmb3IgdGhlIG1nY29nZSBhbmQgbWdzdXZkIGJvYXJkLgotCi0gICAgVGhpcyBjb2RlIHdhcyBvcmlnaW5hbGx5IHdyaXR0ZW4gYnkgS2V5bWlsZSBpbiBhc3NvY2lhdGlvbgotICAgIHdpdGggQW5hdGVjaCBhbmQgQXRtZWwgaW4gMTk5OC4gVGhlIENvZGUgdG9nZ2VscyB0aGUgU0NMCi0gICAgdW50aWwgdGhlIFNDQSBsaW5lIGdvZXMgdG8gSElHSCAobWF4LiAxNiB0aW1lcykuCi0gICAgQW5kIGFmdGVyIHRoaXMsIGEgc3RhcnQgY29uZGl0aW9uIGlzIHNlbnQuCi0KLSAgICBUaGlzIGlzIGFub3RoZXIgYXBwcm9hY2ggdG8gZGVibG9jayB0aGUgSTJDIEJ1cy4gVGhlCi0gICAgc29mdCBJMkMgZHJpdmVyIGFjdHVhbGx5IHNlbmRzIDkgY2xvY2tzIHdpdGggU0RBIEhpZ2gsCi0gICAgYW5kIHRoZW4gYSBzdG9wIGF0IHRoZSBlbmQsIHRvIGRlYmxvY2sgdGhlIEkyQyBCdXMuCi0KLSAgICBNYXliZSB3ZSBzaG91bGQgdXNlIHRoZSBhcHByb2FjaCBmcm9tIEtleW1pbGUgYXMKLSAgICB0aGUgbmV3IHN0YW5kYXJkPwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA0Y2ExMDdlZmZlYmZiYWJhYzEwNTdjMzk2MzIxMDVkYWNlZjk1OTU3Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIE9jdCAxNSAwOTozODozOCAyMDA4ICswMjAwCi0KLSAgICBzb2Z0X2kyYzogQWRkIENGR19JMkNfSU5JVF9CT0FSRCBvcHRpb24KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgb3B0aW9uIGZvciBhIGJvYXJkc3BlY2lmaWMKLSAgICBJMkMgZGVibG9ja2luZyBtZWNoYW5pc20gZm9yIHRoZSBzb2Z0IGkyYyBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGU1ZTRlZGQ5ZjFmNzYyMTBhMDljMzRlZTgzNWY2Y2ZmNjBmZGJiZDEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDA5OjM4OjA3IDIwMDggKzAyMDAKLQotICAgIG1nY29nZSwgbWdzdXZkOiBhZGQgRFRUIChMTTc1KSBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA4ZTQ0MmRmNDM4YWI2NzcwNTc1NzFlM2FjMDE4NDZiZmY3NzE5YmNlCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIE9jdCAxNSAwOTozNzozNCAyMDA4ICswMjAwCi0KLSAgICBsbTc1OiBNYWtlIHRoZSBMTTc1IE1VTFRJX0JVUyBjb21wYXRpYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAxMmYxNjc4MTI3YzFkZjJiMjg3OGJhOTNjODg5NDhiZWRjMDYwNzc1Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIE9jdCAxNSAwOTozNzowNCAyMDA4ICswMjAwCi0KLSAgICBsbTc1OiBmaXggQ29kaW5nc3R5bGUgaXNzdWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBmMjIwMjQ1MGM3NWJhNjkzNGIzNTYwMjQxMDE1MDBkZGNkZTZlMmE2Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIE9jdCAxNSAwOTozNjozMyAyMDA4ICswMjAwCi0KLSAgICBtZ2NvZ2UsIG1nc3V2ZDogYWRkZWQgRUVwcm9tIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDk2NjFiZjlkMTIwZjc2MDIzOGIyYTA3M2I4NGYyYmFmMDUwMTAwNTcKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDA5OjM2OjAzIDIwMDggKzAyMDAKLQotICAgIG1nY29nZSwgbWdzdXZkOiBhZGQgSTJDIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDk4YWVkMzc5NTg2YTE1NTI5MmVmYmYzMjA5MzU2ODM2NTg0YjYwMWMKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDA5OjM1OjI2IDIwMDggKzAyMDAKLQotICAgIHNvZnRfaTJjOiBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmdzIGlmIGRyaXZlciBkb2VzIG5vdCB1c2UgQ1BVIFBpbnMuCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBmb2xsb3dpbmcgd2FybmluZ3MsIHdoZW4gdXNpbmcKLSAgICB0aGUgc29mdF9pMmMgZHJpdmVyIHVzaW5nIG5vIENQVSBwaW5zIG9uIE1QQzgyeHggb3IgTVBDOHh4Ci0gICAgc3lzdGVtczoKLQotICAgIHNvZnRfaTJjLmM6IEluIGZ1bmN0aW9uICdzZW5kX3Jlc2V0JzoKLSAgICBzb2Z0X2kyYy5jOjkzOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2ltbXInCi0gICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3NlbmRfc3RhcnQnOgotICAgIHNvZnRfaTJjLmM6MTI0OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2ltbXInCi0gICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3NlbmRfc3RvcCc6Ci0gICAgc29mdF9pMmMuYzoxNDY6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaW1tcicKLSAgICBzb2Z0X2kyYy5jOiBJbiBmdW5jdGlvbiAnc2VuZF9hY2snOgotICAgIHNvZnRfaTJjLmM6MTcxOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2ltbXInCi0gICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3dyaXRlX2J5dGUnOgotICAgIHNvZnRfaTJjLmM6MTk2OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2ltbXInCi0gICAgc29mdF9pMmMuYzogSW4gZnVuY3Rpb24gJ3JlYWRfYnl0ZSc6Ci0gICAgc29mdF9pMmMuYzoyNDQ6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaW1tcicKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNzk5Yjc4NGFhMDBjYjAzYTM1Mjg0N2FiOWY5YWNkZGU3OWI3MmQyMQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMTUgMDk6MzQ6NDUgMjAwOCArMDIwMAotCi0gICAgaTJjOiBhZGQgQ09ORklHX0kyQ19NVUxUSV9CVVMgZm9yIHNvZnRfaTJjIGFuZCBtcGM4MjYwIGkyYyBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDA4MDllYTJmNDM0MGFiMjA0NzQwMGM3ZDNkMzA0N2Y5Nzk4N2QwZmQKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDA5OjM0OjA1IDIwMDggKzAyMDAKLQotICAgIG1nY29nZTogZml4IENvZGluZyBTdHlsZSBpc3N1ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGU0M2EyN2M0OTcxMjIwM2ZlODg0OGExNzcxNDMzMDYyM2VkZmIyZWIKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDA5OjMzOjMwIDIwMDggKzAyMDAKLQotICAgIEkyQzogYWRkIG5ldyBjb21tYW5kIGkyYyByZXNldC4KLQotICAgIElmIEkyQyBCdXMgaXMgYmxvY2tlZCAoc2VlIGRvYy9JMkNfRWRnZV9Db25kaXRpb25zKSwKLSAgICBpdCBpcyBub3QgcG9zc2libGUgdG8gZ2V0IG91dCBvZiB0aGlzLCB1bnRpbCB0aGUKLSAgICBjb21wbGV0ZSBIYXJkd2FyZSBnZXRzIGEgcmVzZXQuIFRoaXMgbmV3IGNvbW1hbmRvCi0gICAgY2FsbHMgYWdhaW4gaTJjX2luaXQgKGFuZCB0aGF0IGNhbGxzIGkyY19pbml0X2JvYXJkCi0gICAgaWYgZGVmaW5lZCksIHdoaWNoIHdpbGwgZGVibG9jayB0aGUgSTJDIEJ1cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA4NmU5Y2RmOGM0MTVjMWE5NzI1ZTlkYWU1MjM3YmExZTdiZDlmNjg2Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJV2VkIE9jdCAxNSAwOTozMjoyNSAyMDA4ICswMjAwCi0KLSAgICBtZ3N1dmQsIG1nY29nZTogbW92ZSB0aGlzIDIgYm9hcmRzIGluIG9uZSBkaXIuCi0KLSAgICBUaGVyZSBhcmUgc29tZSBtb3JlIGV4dGVuc2lvbnMsIHdoaWNoIGFyZSBmb3IgYm90aCBib2FyZHMKLSAgICBhbmQgc29tZSBtb3JlIGJvYXJkcyBmcm9tIHRoaXMgbWFudWZhY3R1cmVyIHdpbGwgZm9sbG93IHNvb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMWM2ZmU2ZWFjNzVkNjk1ZmRlNjc3YWY4MzMwYzBkYmU3NWZiNmEyYgotQXV0aG9yOiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotRGF0ZToJV2VkIE9jdCA4IDEzOjQ0OjI3IDIwMDggKzAyMDAKLQotICAgIGh3bW9uOiBBZGQgTE02MyBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE5hdGlvbmFsIExNNjMgdGVtcGVyYXR1cmUKLSAgICBzZW5zb3Igd2l0aCBpbnRlZ3JhdGVkIGZhbiBjb250cm9sLiBJdCdzIHVzZWQgb24gdGhlIEdEU3lzCi0gICAgTmVvIGJvYXJkICg0MDVFUCkgd2hpY2ggd2lsbCBiZSBzdWJtaXR0ZWQgbGF0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEVpYmFjaCA8ZWliYWNoQGdkc3lzLmRlPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3YmE4OTBiZjJmMmI5MjgzMTQyMDI0M2MwNTg5NTFhYTgzMTExOWZkCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJV2VkIE9jdCA4IDExOjAxOjE3IDIwMDggKzA5MDAKLQotICAgIEFkZCBSZWQgQmxhY2sgVHJlZSBzdXBwb3J0Ci0KLSAgICBOb3cgaXQncyB1c2VkIGF0IFVCSSBtb2R1bGUuIE9mIGNvdXJzZSBvdGhlciBtb2R1bGVzIGNhbiB1c2UgaXQuCi0gICAgSWYgeW91IHdhbnQgdG8gdXNlIGl0LCBwbGVhc2UgZGVmaW5lIENPTkZJR19SQlRSRUUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCBmYmQ4NWFkNjVkZDljOThmMzZlZDNmYjEyZmU0MWYzODFiN2Q0Nzk0Ci1BdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KLURhdGU6CU1vbiBPY3QgNiAxNjoxMDo1MyAyMDA4IC0wNDAwCi0KLSAgICBDT05GSUdfRUZJX1BBUlRJVElPTjogQWRkZWQgc3VwcG9ydCBmb3IgRUZJIHBhcnRpdGlvbiBpbiBjbWRfZXh0MmZzLmMKLQotICAgIEFkZGVkIHN1cHBvcnQgZm9yIENPTkZJR19FRklfUEFSVElUSU9OIHRvIGV4dDIgY29tbWFuZHMuCi0gICAgU2lnbmVkLW9mZi1ieTogUmljaGFyZCBSZXRhbnVidW4gPFJpY2hhcmRSZXRhbnVidW5AUnVnZ2dlZENvbS5jb20+Ci0KLWNvbW1pdCAwN2YzZDc4OWI5YmViN2NlMzI3OGM5NzRmNGQ1YzhmNTFiNmFiNTY3Ci1BdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KLURhdGU6CUZyaSBTZXAgMjYgMTE6MTM6MjIgMjAwOCAtMDQwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIENPTkZJR19FRklfUEFSVElUSU9OIChHVUlEIFBhcnRpdGlvbiBUYWJsZSkKLQotICAgIFRoZSBHVUlEIChHbG9iYWxseSBVbmlxdWUgSWRlbnRpZmllcikgUGFydGl0aW9uIFRhYmxlIChHUFQpIGlzIGEgcGFydAotICAgIG9mIEVGSS4gU2VlIGh0dHA6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvR1VJRF9QYXJ0aXRpb25fVGFibGUKLQotICAgIEJhc2VkIG9uIGxpbnV4L2ZzL3BhcnRpdGlvbnMvZWZpLltjaF0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dnZWRDb20uY29tPgotCi1jb21taXQgZmJjODdkYzA1NDZkZmY3MDliMzhmMzU4ZTJjNWQ1ZTM5YzRjYTM3NAotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjMyIDIwMDggKzAyMDAKLQotICAgIEZJVDogb3V0cHV0IGltYWdlIGxvYWQgYWRkcmVzcyBmb3IgdHlwZSAnZmlybXdhcmUnLCBmaXggbWVzc2FnZSB3aGlsZSB0aGVyZQotCi0gICAgTm93IHRoYXQgdGhlIGF1dG8tdXBkYXRlIGZlYXR1cmUgdXNlcyB0aGUgJ2Zpcm13YXJlJyB0eXBlIGZvciB1cGRhdGVzLCBpdCBpcwotICAgIHVzZWZ1bCB0byBpbnNwZWN0IHRoZSBsb2FkIGFkZHJlc3Mgb2Ygc3VjaCBpbWFnZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNGJhZTkwOTA0YjY5Y2UzZGViOWY3YzMzNGVmMTJlZDc0ZTE4YTI3NQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjMxIDIwMDggKzAyMDAKLQotICAgIEF1dG9tYXRpYyBzb2Z0d2FyZSB1cGRhdGUgZnJvbSBURlRQIHNlcnZlcgotCi0gICAgVGhlIGF1dG8tdXBkYXRlIGZlYXR1cmUgYWxsb3dzIHRvIGF1dG9tYXRpY2FsbHkgZG93bmxvYWQgc29mdHdhcmUgdXBkYXRlcwotICAgIGZyb20gYSBURlRQIHNlcnZlciBhbmQgc3RvcmUgdGhlbSBpbiBGbGFzaCBtZW1vcnkgZHVyaW5nIGJvb3QuIFVwZGF0ZXMgYXJlCi0gICAgY29udGFpbmVkIGluIGEgRklUIGZpbGUgYW5kIHByb3RlY3RlZCB3aXRoIFNIQS0xIGNoZWNrc3VtLgotCi0gICAgTW9yZSBkZXRhaWxlZCBkZXNjcmlwdGlvbiBjYW4gYmUgZm91bmQgaW4gZG9jL1JFQURNRS51cGRhdGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDNmMGNmNTFkYWJhY2MyNzI0NzMxYzUwNzlhNjBlYTk4OTEwM2JiOGYKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBPY3QgMSAxNToyNjoyNyAyMDA4ICswMjAwCi0KLSAgICBmbGFzaDogZmFjdG9yIG91dCBhZGp1c3Rpbmcgb2YgRmxhc2ggYWRkcmVzcyB0byB0aGUgZW5kIG9mIHNlY3RvcgotCi0gICAgVGhlIHVwY29taW5nIGF1dG9tYXRpYyB1cGRhdGUgZmVhdHVyZSBuZWVkcyB0aGUgYWJpbGl0eSB0byBhZGp1c3QgYW4KLSAgICBhZGRyZXNzIHdpdGhpbiBGbGFzaCB0byB0aGUgZW5kIG9mIGl0cyByZXNwZWN0aXZlIHNlY3Rvci4gRmFjdG9yIG91dAotICAgIHRoaXMgZnVuY3Rpb25hbGl0eSB0byBhIG5ldyBmdW5jdGlvbiBmbGFzaF9zZWN0X3JvdW5kYigpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZTgzY2MwNjM3NWFjMmJlYTA4MzBjNmVkMGY5ZDhmZGMzYzFiMjdkNQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjI5IDIwMDggKzAyMDAKLQotICAgIG5ldDogTWFrZSBURlRQIHNlcnZlciB0aW1lb3V0IGNvbmZpZ3VyYWJsZQotCi0gICAgVGhlcmUgYXJlIHR3byBhc3BlY3RzIG9mIGEgVEZUUCB0cmFuc2ZlciBpbnZvbHZpbmcgdGltZW91dHM6Ci0gICAgMS4gdGltZW91dCB3YWl0aW5nIGZvciBpbml0aWFsIHNlcnZlciByZXBseSBhZnRlciBzZW5kaW5nIFJSUQotICAgIDIuIHRpbWVvdXRzIHdoaWxlIHRyYW5zZmVycmluZyBhY3R1YWwgZGF0YSBmcm9tIHRoZSBzZXJ2ZXIKLQotICAgIFNpbmNlIHRoZSB1cGNvbWluZyBhdXRvLXVwZGF0ZSBmZWF0dXJlIGF0dGVtcHRzIGEgVEZUUCBkb3dubG9hZCBkdXJpbmcgZWFjaAotICAgIGJvb3QsIGl0IGlzIHVuZGVzaXJhYmxlIHRvIGhhdmUgYSBsb25nIGRlbGF5IHdoZW4gdGhlIFRGVFAgc2VydmVyIGlzIG5vdAotICAgIGF2YWlsYWJsZS4gVGh1cywgdGhpcyBjb21taXQgbWFrZXMgdGhlIHNlcnZlciB0aW1lb3V0ICgxLikgY29uZmlndXJhYmxlIGJ5IHR3bwotICAgIGdsb2JhbCB2YXJpYWJsZXM6Ci0KLSAgICBUZnRwUlJRVGltZW91dE1TZWNzCi0gICAgVGZ0cFJSUVRpbWVvdXRDb3VudE1heAotCi0gICAgVGZ0cFJSUVRpbWVvdXRNU2VjcyBvdmVycmlkZXMgZGVmYXVsdCB0aW1lb3V0IHdoZW4gdHJ5aW5nIHRvIGNvbm5lY3QgdG8gYSBURlRQCi0gICAgc2VydmVyLCBUZnRwUlJRVGltZW91dENvdW50TWF4IG92ZXJyaWRlcyBkZWZhdWx0IG51bWJlciBvZiBjb25uZWN0aW9uIHJldHJpZXMuCi0gICAgVGhlIHRvdGFsIGRlbGF5IHdoZW4gdHJ5aW5nIHRvIGRvd25sb2FkIGEgZmlsZSBmcm9tIGEgbm9uLWV4aXN0aW5nIFRGVFAgc2VydmVyCi0gICAgaXMgVGZ0cFJSUVRpbWVvdXRNU2VjcyB4IFRmdHBSUlFUaW1lb3V0Q291bnRNYXggbWlsbGlzZWNvbmRzLgotCi0gICAgVGltZW91dHMgZHVyaW5nIGZpbGUgdHJhbnNmZXJzICgyLikgYXJlIHVuYWZmZWN0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNDlmM2JkYmJhODA3MWY1NmQ5NTBhOTQ5OGI2Y2RiOTk4YjM1MzQwYQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE9jdCAxIDE1OjI2OjI4IDIwMDggKzAyMDAKLQotICAgIG5ldDogZXhwcmVzcyB0aGUgZmlyc3QgYXJndW1lbnQgdG8gTmV0U2V0VGltZW91dCgpIGluIG1pbGxpc2Vjb25kcwotCi0gICAgRW5mb3JjZSBtaWxsaXNlY29uZCBzZW1hbnRpY3Mgb2YgdGhlIGZpcnN0IGFyZ3VtZW50IHRvIE5ldFNldFRpbWVvdXQoKSAtLQotICAgIHRoZSBjaGFuZ2UgaXMgdHJhbnNwYXJlbnQgZm9yIHdlbGwtYmVoYXZpbmcgYm9hcmRzIChDRkdfSFogPT0gMTAwMCBhbmQKLSAgICBnZXRfdGltZXIoKSBjb3VudGlpbmcgaW4gbWlsbGlzZWNvbmRzKS4KLQotICAgIFJhdGlvbmFsZSBmb3IgdGhpcyBwYXRjaCBpcyB0byBlbmFibGUgbWlsbGlzZWNvbmQgZ3JhbnVsYXJpdHkgZm9yCi0gICAgbmV0d29yay1yZWxhdGVkIHRpbWVvdXRzLCB3aGljaCBpcyBuZWVkZWQgZm9yIHRoZSB1cGNvbWluZyBhdXRvbWF0aWMKLSAgICBzb2Z0d2FyZSB1cGRhdGUgZmVhdHVyZS4KLQotICAgIFN1bW1hcnkgb2YgY2hhbmdlczoKLSAgICAtIGRvIG5vdCBzY2FsZSB0aGUgZmlyc3QgYXJndW1lbnQgdG8gTmV0U2V0VGltZW91dCgpIGJ5IENGR19IWgotICAgIC0gY2hhbmdlIHRpbWVvdXQgdmFsdWVzIHVzZWQgaW4gdGhlIG5ldHdvcmtpbmcgY29kZSB0byBtaWxsaXNlY29uZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjNjhhMDVmZWViODhkZTlmY2YxNThlNjdmZjY0MjNjNGNjOTg4Zjg4Ci1BdXRob3I6IHJpY2hhcmRyZXRhbnVidW4gPHJpY2hhcmRyZXRhbnVidW5AcnVnZ2VkY29tLmNvbT4KLURhdGU6CU1vbiBTZXAgMjkgMTg6Mjg6MjMgMjAwOCAtMDQwMAotCi0gICAgQWRkcyB0d28gbW9yZSBldGhlcm5ldCBpbnRlcmZhY2UgdG8gODN4eAotCi0gICAgQWRkZWQgYXMgYSBjb252ZW5pZW5jZSBmb3Igb3RoZXIgcGxhdGZvcm1zIHRoYXQgdXNlcyBNUEM4MzYwIChoYXMgOCBVQ0MpLgotICAgIFNpeCBldGggaW50ZXJmYWNlIGlzIGNob3NlbiBiZWNhdXNlIHRoZSBwbGF0Zm9ybSBJIGFtIHVzaW5nIGNvbWJpbmVzCi0gICAgVUNDMSYyIGFuZCBVQ0MzJjQgYXMgMTAwMCBFdGggYW5kIHRoZSBvdGhlciBmb3VyIFVDQ3MgYXMgMTAvMTAwIEV0aC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUmV0YW51YnVuIDxSaWNoYXJkUmV0YW51YnVuQFJ1Z2dnZWRDb20uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA0MTQxMGVlZTQ3MmIwZjQyZTAzYTc3Zjk2MWJiYzU1ZWY1OGYzYzAxCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgU2VwIDI0IDExOjQyOjEyIDIwMDggLTA1MDAKLQotICAgIENoYW5nZSBVRUMgUEhZIGludGVyZmFjZSB0byBSR01JSSBvbiBNUEM4NTY4TURTCi0KLSAgICBDaGFuZ2UgVUVDIHBoeSBpbnRlcmZhY2UgZnJvbSBHTUlJIHRvIFJHTUlJIG9uIE1QQzg1NjhNRFMgYm9hcmQKLQotICAgIEJlY2F1c2Ugb24gTVBDODU2OE1EUywgR01JSSBpbnRlcmZhY2UgaXMgb25seSByZWNvbW1lbmRlZCBmb3IgMTAwME1icHMgc3BlZWQsCi0gICAgYnV0IFJHTUlJIGludGVyZmFjZSBjYW4gd29yayBhdCAxMC8xMDAvMTAwME1icHMsIGFuZCBSR01JSSBpbnRlcmZhY2Ugd29ya3MgbW9yZSBzdGFibGUuCi0KLSAgICBOb3cgYm90aCBVRUMxIGFuZCBVRUMyIGNhbiB3b3JrIHByb3Blcmx5IHVuZGVyIHUtYm9vdC4KLQotICAgIEl0IGlzIGFsc28gaW4gY29uc2lzdGVudCB3aXRoIHRoZSBrZXJuZWwgc2V0dGluZyBmb3IgODU2OCBVRUMgcGh5IGludGVyZmFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGI1OWIxNmNhMjRiYzdlNzdlYzExMzAyMWE2ZDc3YjliMzJmY2YxOTIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBPY3QgMTggMjE6MzA6MzEgMjAwOCArMDIwMAotCi0gICAgUHJlcGFyZSB2MjAwOC4xMCByZWxlYXNlOiB1cGRhdGUgQ0hBTkdFTE9HICYgTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmN2EzNWE2MGNmNDU0OTE4NzFhNWMyOGU5YWQyNGRiMDA1NDg3ODU3Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAxNyAxODoyNDowNiAyMDA4ICswMjAwCi0KLSAgICBtZ2NvZ2U6IGFkZCByZWR1bmRhbnQgZW52aXJvbm1lbnQgc2VjdG9yCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzI1MzdlZTg1OTU0YWY5ZDAzNmIxOGI2NDRmM2UxOGQ4MzdiZjRhNQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMTcgMTg6MjM6MjcgMjAwOCArMDIwMAotCi0gICAgbWdzdXZkOiB1cGRhdGUgc2l6ZSBvZiBlbnZpcm9ubWVudAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBmYTdiMWMwN2U5MzcxYWVhOGY4N2VlNmQzYzJlYTU1NjRiZDhjYzhkCi1BdXRob3I6IExlcGNoYSBTdWNoaXQgPFN1Y2hpdC5MZXBjaGFAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMTYgMTM6Mzg6MDAgMjAwOCAtMDUwMAotCi0gICAgODN4eCBOQU5EIGJvb3Q6IHdhaXQgZm9yIExURVNSW0NDXQotCi0gICAgQXQgbGVhc3Qgc29tZSByZXZpc2lvbnMgb2YgdGhlIDgzMTMsIGFuZCBwb3NzaWJseSBvdGhlciBjaGlwcywgZG8gbm90Ci0gICAgd2FpdCBmb3IgYWxsIHBhZ2VzIG9mIHRoZSBpbml0aWFsIDRLIE5BTkQgcmVnaW9uIHRvIGJlIGxvYWRlZCBiZWZvcmUKLSAgICBiZWdpbm5pbmcgZXhlY3V0aW9uOyB0aHVzLCB3ZSB3YWl0IGZvciBpdCBiZWZvcmUgYnJhbmNoaW5nIG91dCBvZiB0aGUKLSAgICBmaXJzdCBOQU5EIHBhZ2UuCi0KLSAgICBUaGlzIGZpeGVzIHdhcm0gcmVzZXQgcHJvYmxlbXMgd2hlbiBib290aW5nIGZyb20gTkFORCBvbiA4MzEzZXJkYi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmYyOWUwZWEwYWYwM2Q1OTNjNjQ2MTQxMzZhY2M3MjNhN2EwMjJhMgotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgT2N0IDE3IDEyOjU0OjE4IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogUFBDNDR4IE1RIGluaXRpYWxpemF0aW9uCi0KLSAgICBTZXQgdGhlIE1RIFJlYWQgUGFzc2luZyAmIE1DSUYgQ3ljbGUgbGltaXRzIHRvIHRoZSByZWNvbW1lbmRlZCBieSBBTUNDCi0gICAgdmFsdWVzLiBUaGlzIGZpeGVzIHRoZSBvY2Nhc2lvbmFsIDQ0MFNQZSBoYXJkIGxvY2tpbmcgaXNzdWVzIHdoZW4gdGhlIDQ0MFNQZSdzCi0gICAgZGVkaWNhdGVkIERNQSBlbmdpbmVzIGFyZSB1c2VkIChlLmcuIGJ5IHRoZSBoL3cgYWNjZWxlcmF0ZWQgUkFJRCBkcml2ZXIpLgotCi0gICAgUHJldmlvdXNseSB0aGUgYXBwcm9wcmlhdGUgaW5pdGlhbGl6YXRpb24gaGFkIGJlZW4gbWFkZSBpbiBMaW51eCwgYnkgdGhlCi0gICAgcHBjNDQwc3BlIEFETUEgZHJpdmVyLCB3aGljaCBpcyB3cm9uZyBiZWNhdXNlIG1vZGlmeWluZyB0aGUgTVEgY29uZmlndXJhdGlvbgotICAgIHJlZ2lzdGVycyBhZnRlciBub3JtYWwgb3BlcmF0aW9uIGhhcyBiZWd1biBpcyBub3Qgc3VwcG9ydGVkIGFuZCBjb3VsZAotICAgIGhhdmUgdW5wcmVkaWN0YWJsZSByZXN1bHRzLgotCi0gICAgQ29tbWVudCBmcm9tIFN0ZWZhbjogVGhpcyBwYXRjaCBkb2Vzbid0IGNoYW5nZSB0aGUgcmVzdWx0aW5nIHZhbHVlIG9mIHRoZQotICAgIE1RIHJlZ2lzdGVycy4gSXQgZXhwbGljaXRseSBzZXRzL2NsZWFycyBhbGwgYml0cyB0byB0aGUgZGVzaXJlZCBzdGF0ZSB3aGljaAotICAgIGJldHRlciBkb2N1bWVudHMgdGhlIHJlc3VsdGluZyByZWdpc3RlciB2YWx1ZSBpbnN0ZWFkIG9mIHJlbHlpbmcgb24gcHJlLXNldAotICAgIGRlZmF1bHQgdmFsdWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGVjMDgxYzJjMTkwMTQ4YjM3NGU4NmE3OTVmYjZiMWM0OWNhZWI1NDkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIE9jdCAxNyAxMjo1MTo0NiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFBQQzQ0eCBNUSBpbml0aWFsaXphdGlvbgotCi0gICAgU2V0IHRoZSBNUSBSZWFkIFBhc3NpbmcgJiBNQ0lGIEN5Y2xlIGxpbWl0cyB0byB0aGUgcmVjb21tZW5kZWQgYnkgQU1DQwotICAgIHZhbHVlcy4gVGhpcyBmaXhlcyB0aGUgb2NjYXNpb25hbCA0NDBTUGUgaGFyZCBsb2NraW5nIGlzc3VlcyB3aGVuIHRoZSA0NDBTUGUncwotICAgIGRlZGljYXRlZCBETUEgZW5naW5lcyBhcmUgdXNlZCAoZS5nLiBieSB0aGUgaC93IGFjY2VsZXJhdGVkIFJBSUQgZHJpdmVyKS4KLQotICAgIFByZXZpb3VzbHkgdGhlIGFwcHJvcHJpYXRlIGluaXRpYWxpemF0aW9uIGhhZCBiZWVuIG1hZGUgaW4gTGludXgsIGJ5IHRoZQotICAgIHBwYzQ0MHNwZSBBRE1BIGRyaXZlciwgd2hpY2ggaXMgd3JvbmcgYmVjYXVzZSBtb2RpZnlpbmcgdGhlIE1RIGNvbmZpZ3VyYXRpb24KLSAgICByZWdpc3RlcnMgYWZ0ZXIgbm9ybWFsIG9wZXJhdGlvbiBoYXMgYmVndW4gaXMgbm90IHN1cHBvcnRlZCBhbmQgY291bGQKLSAgICBoYXZlIHVucHJlZGljdGFibGUgcmVzdWx0cy4KLQotICAgIENvbW1lbnQgZnJvbSBTdGVmYW46IFRoaXMgcGF0Y2ggZG9lc24ndCBjaGFuZ2UgdGhlIHJlc3VsdGluZyB2YWx1ZSBvZiB0aGUKLSAgICBNUSByZWdpc3RlcnMuIEl0IGV4cGxpY2l0bHkgc2V0cy9jbGVhcnMgYWxsIGJpdHMgdG8gdGhlIGRlc2lyZWQgc3RhdGUgd2hpY2gKLSAgICBiZXR0ZXIgZG9jdW1lbnRzIHRoZSByZXN1bHRpbmcgcmVnaXN0ZXIgdmFsdWUgaW5zdGVhZCBvZiByZWx5aW5nIG9uIHByZS1zZXQKLSAgICBkZWZhdWx0IHZhbHVlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmN2QxOTBiMWMwYjNhYjdmYzUzMDc0YWQyODYyZjdkZTk5ZGUzN2ZmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgT2N0IDE2IDIxOjU4OjUwIDIwMDggLTA1MDAKLQotICAgIDg1eHg6IFVzaW5nIHByb3BlciBJMkMgc291cmNlIGNsb2NrIGRpdmlkZXIgZm9yIE1QQzg1NDQKLQotICAgIFRoZSBNUEM4NTQ0IFJNIGluY29ycmVjdCBzaG93cyB0aGUgU0VDX0NGRyBiaXQgaW4gUE9SREVWU1IyIGFzIGJlaW5nCi0gICAgYml0IDI2LCBpbnN0ZWFkIGl0IHNob3VsZCBiZSBiaXQgMjguICBUaGlzIGNhdXNlZCBpbiBpbmNvcnJlY3QKLSAgICBpbnRlcnByZXRhdGlvbiBvZiB0aGUgaTJjX2NsayB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgU0VDIGNsayBvbgotICAgIE1QQzg1NDQuICBUaGUgU0VDIGNsayBpcyBjb250cm9sbGVkIGJ5IGNmZ19zZWNfZnJlcSB0aGF0IGlzIHJlcG9ydGVkCi0gICAgaW4gUE9SREVWU1IyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQyNjUzYjgyNmFkYjMxOWExZGYwNmUyNGVmMjYwOTZiMmE1ZDlkMmEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBPY3QgMTYgMjE6NTg6NDkgMjAwOCAtMDUwMAotCi0gICAgUmV2ZXJ0ICI4NXh4OiBVc2luZyBwcm9wZXIgSTJDIHNvdXJjZSBjbG9jayBkaXZpZGVyIGZvciBNUEM4NTQ0IgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCBkZmZkMjQ0NmZiMDQxZjM4ZWYwMzRiMGZjZjQxZTUxZTVlNDg5MTU5LgotCi0gICAgVGhlIGZpeCBpbnRyb2R1Y2VkIGJ5IHRoaXMgcGF0Y2ggaXMgbm90IGNvcnJlY3QuICBUaGUgcHJvYmxlbSBpcwotICAgIHRoYXQgdGhlIGRvY3VtZW50YXRpb24gaXMgbm90IGNvcnJlY3QgZm9yIHRoZSBNUEM4NTQ0IHdpdGggcmVnYXJkcwotICAgIHRvIHdoaWNoIGJpdCBpbiBQT1JERVZTUjIgaXMgZm9yIHRoZSBTRUNfQ0ZHLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIxNzljNDc2NmJmZmVlY2U5OGU1ZTkyMDQwNjI5YTk2Yzk3ZTIzMGMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBPY3QgMTUgMTA6MTk6NDEgMjAwOCAtMDUwMAotCi0gICAgODV4eDogRml4IGNvbXBpbGUgd2FybmluZwotCi0gICAgbXBjODUzNmRzLmM6IEluIGZ1bmN0aW9uICdpc19zYXRhX3N1cHBvcnRlZCc6Ci0gICAgbXBjODUzNmRzLmM6NjE0OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ2RldmRpc3InCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOTAyOWI2OGYzZjgxYjMwMTMwNDRmMTY3ZWEwMjVlODM2ZTZjOGMwZQotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE9jdCAxNSAxMDo0MDoyNCAyMDA4ICswODAwCi0KLSAgICBGaXggdGhlIGZ1bmN0aW9uIGNvbmZsaWN0IGluIHg4NmVtdSB3aGVuIERFQlVHIGlzIG9uCi0KLSAgICBUaGUgZnVuY3Rpb24gcGFyc2VfbGluZSgpIGluIGNvbW1vbi9tYWluLmMgd2FzIGV4cG9zZWQgZ2xvYmFsbHkgYnkgY29tbWl0Ci0gICAgNjYzNmI2MmE2ZWZjN2YxNGU2ZTc4ODc4ODYzMWFlN2E3ZmNhNDUzNywgUmVzdWx0IGluIGNvbmZsaWN0IHdpdGggdGhlIHNhbWUKLSAgICBuYW1lIGZ1bmNpdG9uIGluIGRyaXZlcnMvYmlvc19lbXVsYXRvci94ODZlbXUvZGVidWcuYyB3aGVuIGRlZmluZSB0aGUgREVCVUcuCi0gICAgVGhpcyBwYXRjaCBmaXggdGhpcyBieSByZW5hbWluZyB0aGUgZnVuY3Rpb24gaW4gdGhlIGRlYnVnLmMgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNGRiYWNmNjlhNjY5YTE3NDg3MDU0NTUyZmMyNzYxMTQ5ZGQ2NzY3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE1IDE1OjUwOjQ1IDIwMDggKzAyMDAKLQotICAgIENvZGluZyBTdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HLCBwcmVwYXJlIDIwMDguMTAtcmMzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzc0YjkwMzgyOTNkMDFkODc0NGE0NmFmOWI3ODU0YTZmZDk5YjIyOAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMTUgMDk6NTE6MTkgMjAwOCArMDIwMAotCi0gICAgRml4IGNvbXBpbGVyIHdhcm5pbmcgaW4gbGliX3BwYy9ib2FyZC5jCi0KLSAgICBGaXggY29tcGlsZXIgd2FybmluZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCAwZjhjYmMxOAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDk3MjQ1NTU3NTVhNmYxMDY2NjM2NDgxYjQxZjcwOTRlMGNlOTNhNjkKLUF1dGhvcjogU2VsdmFtdXRodWt1bWFyIDxzZWx2YS5tdXRodWt1bWFyQGUtY29uaW5mb3RlY2guY29tPgotRGF0ZToJVGh1IE9jdCA5IDEwOjI5OjE0IDIwMDggKzA1MzAKLQotICAgIG1wYzgzeHg6IHdhaXQgdGlsbCBVUE0gY29tcGxldGVzIHRoZSB3cml0ZSB0byBhcnJheQotCi0gICAgUmVmZXJlbmNlIG1hbnVhbCBzdGF0ZXMgdGhhdCBNeE1SW01BRF0gaW5jcmVtZW50IGlzIHRoZSBpbmRpY2F0aW9uCi0gICAgb2Ygd3JpdGUgdG8gVVBNIGFycmF5IGlzIGNvbXBsZXRlLiBIb25vdXIgdGhhdC4gQWxzbywgbWFrZSB0aGUgZHVtbXkKLSAgICB3cml0ZSBleHBsaWNpdC4KLQotICAgIGFsc28gZml4IHRoZSBjb21tZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VsdmFtdXRodWt1bWFyIDxzZWx2YS5tdXRodWt1bWFyQGUtY29uaW5mb3RlY2guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwM2UyZGJiMThlODU4ZTJmN2E2YWFhNDM3ZjI5MGYzNjkwZDAyZDUxCi1BdXRob3I6IFNlbHZhbXV0aHVrdW1hciA8c2VsdmEubXV0aHVrdW1hckBlLWNvbmluZm90ZWNoLmNvbT4KLURhdGU6CVdlZCBPY3QgOCAxODoxMjoyMCAyMDA4IC0wNTAwCi0KLSAgICBSZW1vdmUgdW53YW50ZWQgJzsnIGF0IGVuZCBvZiBkZWZpbmUuCi0KLSAgICBDdXJyZW50bHkgdGhpcyBpcyBub3QgY3JlYXRpbmcgYW55IHByb2JsZW0uIEJ1dCBpdCB3aWxsIHJlc3VsdAotICAgIGluIGNvbXBpbGF0aW9uIGVycm9yIHdoZW4gdXNlZCBhcyBiZWxvdy4KLQotICAgIHByaW50ZigiQ0ZHX1NEUkFNX0NGRzIgLSAlMDh4XG4iLCBDRkdfU0RSQU1fQ0ZHMik7Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZWx2YW11dGh1a3VtYXIgPHNlbHZhLm11dGh1a3VtYXJAZS1jb25pbmZvdGVjaC5jb20+Ci0KLSAgICBjb250aW51YXRpb24gb2YgdGhlIHRoZW1lIGJhc2VkIG9uIGdpdCBncmVwICJeI2RlZmluZSBDRkdfLio7JCIgaW5jbHVkZS8KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiMjkzNGE1NjY1MGU5YTZjNTQ0MzJmOWNlNmRjMzY3NTc5NjczODVlCi1BdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotRGF0ZToJTW9uIE9jdCA2IDEwOjUzOjU5IDIwMDggLTA0MDAKLQotICAgIEFSTSBEYVZpbmNpOiBBZGQgbWFpbnRhaW5lciBpbmZvcm1hdGlvbiBmb3IgU0ZGU0RSIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0KLWNvbW1pdCAxMmM2NjcwZjg3M2VkNjMyYzI2NGE2ZjNlOGJmMTI5N2Q1YzNkZGJjCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJU2F0IE9jdCA0IDE5OjI2OjE2IDIwMDggKzAyMDAKLQotICAgIGFwaTogZml4IHR5cGUgbWlzbWF0Y2gKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSB0eXBlIG1pc21hdGNoIGFuZCB0aHVzIHJlbW92ZXMgYSBjb21waWxlcgotICAgIHdhcm5pbmcgd2hlbiBjb21waWxpbmcgd2l0aCBDT05GSUdfQVBJIG9uIHBvd2VycGMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDliYzJlNGVlZTNiY2I4ZTYzODQ3ZDdhNzMzZTBjNjA3ODA3ZDYxNDEKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVdlZCBPY3QgMSAxMjoyNTowNCAyMDA4IC0wNTAwCi0KLSAgICBjbWRfaTJjOiBGaXggaGVscCBmb3IgQ09ORklHX0kyQ19DTURfVFJFRSAmJiAhQ09ORklHX0kyQ19NVUxUSV9CVVMKLQotICAgIE9yaWdpbmFsIGNvZGUgZGlzcGxheWVkOgotICAgICA9PiBoZWxwIGkyYwotICAgICBpMmMgaTJjIHNwZWVkIFtzcGVlZF0gLSBzaG93IG9yIHNldCBJMkMgYnVzIHNwZWVkCi0gICAgIGkyYyBtZCBjaGlwIGFkZHJlc3NbLjAsIC4xLCAuMl0gWyMgb2Ygb2JqZWN0c10gLSByZWFkIGZyb20gSTJDIGRldmljZQotICAgICAuLi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0KLWNvbW1pdCBhMGIxYjYxMGU5ODBlMjUzZDRjMjUxOWVlMTViZDA5MzdjM2Y4YmUxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDE0IDIyOjEzOjQxIDIwMDggKzAyMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwZjhjYmMxODI5ZDljN2Q5NjE2ZmQyOWIzNjZhOTlkMDM3ZmFjZGNkCi1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDEwIDExOjQxOjAxIDIwMDggKzA4MDAKLQotICAgIERvIG5vdCBpbml0IFNBVEEgd2hlbiBkaXNhYmxlZCBvbiA4NTM2RFMuCi0KLSAgICBTR01JSSBhbmQgU0FUQSBzaGFyZSB0aGUgc2VyZGVzIG9uIE1QQzg1MzYgQ1BVLCBXaGVuIFNBVEEgZGlzYWJsZWQgYW5kIHRoZQotICAgIGRyaXZlciBzdGlsbCB0cnkgdG8gYWNjZXNzIHRoZSBTQVRBIHJlZ2lzdGVycywgdGhlIGNwdSB3aWxsIGhhbmd1cC4KLSAgICBUaGlzIHBhdGNoIHRyeSB0byBmaXggdGhpcyBieSByZWFkaW5nIHRoZSBzZXJkZXMgc3RhdHVzIGJlZm9yZSB0aGUgU0FUQQotICAgIGluaXRpYWxpemUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5ZGJjMzY2NzQ0OTYwMDEzOTY1ZmNlODg1MTAzNWI2MTQxZjNiM2FlCi1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJRnJpIE9jdCAxMCAxMDoyMzoyMiAyMDA4ICswMjAwCi0KLSAgICBUaGUgUElQRV9JTlRFUlJVUFQgZmxhZyBpcyB1c2VkIHdyb25nCi0KLSAgICBBdCBhIGxvdCBvZiBwbGFjZXMgaW4gdGhlIGNvZGUgdGhlIFBJUEVfSU5URVJSVVBUIGZsYWdzIGFuZCBmcmllbmRzCi0gICAgYXJlIHVzZWQgd3JvbmcuIFRoZSB3cm9uZyBiaXRzIGFyZSBjb21wYXJlZCB0byB0aGlzIGZsYWcgcmVzdWx0aW5nCi0gICAgaW4gd3JvbmcgY29uZGl0aW9ucy4gQWxzbyB0aGVyZSBhcmUgbWFjcm9zIHRoYXQgc2hvdWxkIGJlIHVzZWQgZm9yCi0gICAgUElQRV8qIGZsYWdzLgotICAgIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4IHRoZW0gYWxsLCBob3dldmVyLCBJIHdhcyBub3QgYWJsZSB0byB0ZXN0IHRoZQotICAgIGNoYW5nZXMsIGJlY2F1c2UgSSBkbyBub3QgaGF2ZSBhbnkgb2YgdGhlc2UgYm9hcmRzLgotCi0gICAgUmV2aWV3IHJlcXVpcmVkIQotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IDQ4ODY3MjA4NDQ0Y2IyYTgyZTJhZjljMzI0OWU5MGI3ZWQ0YTE3NTEKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglGcmkgT2N0IDEwIDEwOjIzOjIxIDIwMDggKzAyMDAKLQotICAgIGZpeCBVU0IgaW5pdGlhbGlzYXRpb24gcHJvY2VkdXJlCi0KLSAgICBUaGUgbWF4IHBhY2tldCBzaXplIGlzIGVuY29kZWQgYXMgMCwxLDIsMyBmb3IgOCwxNiwzMiw2NCBieXRlcy4KLSAgICBBdCBzb21lIHBsYWNlcyBkaXJlY3RseSA4LDE2LDMyLDY0IHdhcyB1c2VkIGluc3RlYWQgb2YgdGhlIGVuY29kZWQKLSAgICB2YWx1ZS4gTWFkZSBhIGVudW0gZm9yIHRoZSBvcHRpb25zIHRvIG1ha2UgdGhpcyBtb3JlIGNsZWFyIGFuZCB0byBoZWxwCi0gICAgcHJldmVudGluZyBzaW1pbGFyIGVycm9ycyBpbiB0aGUgZnV0dXJlLgotCi0gICAgQWZ0ZXIgZml4aW5nIHRoaXMgYnVnIGl0IGJlY2FtZSBjbGVhciB0aGF0IGFub3RoZXIgYnVnIGV4aXN0ZWQgd2hlcmUKLSAgICB0aGUgJ3BpcGUnIGlzIGFuZC1lZCB3aXRoIFBJUEVfKiBmbGFncywgd2hlcmUgaXQgc2hvdWxkIGhhdmUgYmVlbgotICAgICd1c2JfcGlwZXR5cGUocGlwZSknLCBvciBldmVuIGJldHRlciB1c2JfcGlwZWludChwaXBlKS4KLQotICAgIEFsc28gcmVtb3ZlZCB0aGUgdHJpcGxlICdnZXRfZGV2aWNlX2Rlc2NyaXB0b3InIHNlcXVlbmNlLCBpdCBoYXMgbm8gdXNlLAotICAgIGFuZCBXaW5kb3dzIG5vciBMaW51eCBiZWhhdmVzIHRoYXQgd2F5LgotICAgIFRoZXJlIGlzIGFsc28gYSBwb2xsIGdvaW5nIG9uIHdpdGggYSB0aW1lb3V0IHdoZW4gdXNiX2NvbnRyb2xfbXNnKCkgZmFpbHMuCi0gICAgSG93ZXZlciwgdGhlIHBvbGwgaXMgdXNlbGVzcywgYmVjYXVzZSB0aGUgZmxhZyB3aWxsIG5ldmVyIGJlIHNldCBvbiBhIGVycm9yLAotICAgIGJlY2F1c2UgdGhlcmUgaXMgbm8gY29kZSB0aGF0IHJ1bnMgaW4gYSBwYXJhbGxlbCB0aGF0IGNhbiBzZXQgdGhpcyBmbGFnLgotICAgIENoYW5nZWQgdGhpcyB0byBzb21ldGhpbmcgbW9yZSBsb2dpY2FsLgotCi0gICAgVGVzdGVkIG9uIEFUOTFTQU05MjYxZWsgYW5kIGNvbXBhcmVkIHRoZSBmbG93IG9uIHRoZSBVU0IgYnVzIHRvIHdoYXQKLSAgICBMaW51eCBpcyBkb2luZy4gVGhlcmUgaXMgbm8gZGlmZmVyZW5jZSBhbnltb3JlIGluIHRoZSBlYXJseSBpbml0aWFsaXNhdGlvbgotICAgIHNlcXVlbmNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IGVjNGQ4YzFjMWQ5NGE3OTBjMTQ3M2FlOGFhY2UyODJiODE3YzMxMjMKLUF1dGhvcjogTmlraXRhIFYuIFlvdXNoY2hlbmtvIDx5b3VzaEBjcy5tc3Uuc3U+Ci1EYXRlOglGcmkgT2N0IDMgMDA6MDM6NTUgMjAwOCArMDQwMAotCi0gICAgZnNsX2RpdTogZml4IGFsaWdubWVudCBlcnJvciB0aGF0IGNhdXNlZCBtYWxsb2MgY29ycnVwdGlvbgotCi0gICAgV2hlbiBhbGlnbmluZyBtYWxsb2MoKWVkIHNjcmVlbl9iYXNlLCBpbnZhbGlkIG9mZnNldCB3YXMgYWRkZWQuCi0gICAgVGhpcyBub3Qgb25seSBjYXVzZWQgbWlzYWxpZ25lZCByZXN1bHQgKHdoaWNoIGRpZCBub3QgY2F1c2UgaGFyZHdhcmUKLSAgICBtaXNiZWhhdmlvdXIpLCBidXQgLSB3b3JzZSAtIGNhdXNlZCBzY3JlZW5fYmFzZSArIHNtZW1fbGVuIHRvCi0gICAgYmUgb3V0IG9mIG1hbGxvYygpZWQgc3BhY2UsIHdoaWNoIGluIHR1cm4gY2F1c2VkIGJyZWFrYWdlIG9mCi0gICAgZnV0aGVyIG1hbGxvYygpL2ZyZWUoKSBvcGVyYXRpb24uCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHNjcmVlbl9iYXNlIGFsaWdubWVudC4KLQotICAgIEFsc28gdGhpcyBwYXRjaCBtYWtlcyBtZW1zZXQoKSB0aGF0IGNsZWFucyBmcmFtZWJ1ZmZlciB0byBiZSBleGVjdXRlZAotICAgIG9uIGZpcnN0IGluaXRpYWxpemF0aW9uIG9mIGRpdSwgbm90IG9ubHkgb24gcmUtaW5pdGlhbGl6YXRpb24uIEl0IGxvb2tzCi0gICAgY29ycmVjdCB0byBjbGVhbiB0aGUgZnJhbWVidWZmZXIgaW5zdGVhZCBvZiBkaXNwbGF5aW5nIHJhbmRvbSBnYXJiYWdlOwotICAgIEkgYmVsaWV2ZSB0aGF0IHdhcyBkaXNhYmxlZCBvbmx5IGJlY2F1c2UgdGhhdCBtZW1zZXQgY2F1c2VkIGJyZWFrYWdlCi0gICAgb2YgbWFsbG9jL2ZyZWUgZGVzY3JpYmVkIGFib3ZlIC0gd2hpY2ggbm8gbG9uZ2VyIGhhcHBlbnMgd2l0aCB0aGUgZml4Ci0gICAgZGVzY3JpYmVkIGFib3ZlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlraXRhIFYuIFlvdXNoY2hlbmtvIDx5b3VzaEBkZWJpYW4ub3JnPgotCi1jb21taXQgM2QwZWEzMTEwZjM0MzFiNmMyYWVlODgyNzg0ZjM5Zjk3YjIwYmNlOQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVdlZCBTZXAgMjQgMTA6Mjk6MzcgMjAwOCArMDIwMAotCi0gICAgYXBpOiBGaXggYnVpbGRpbmcgd2l0aCBDT05GSUdfQVBJCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGJ1aWxkaW5nIHdpdGggQ09ORklHX0FQSSBhbmQgQ09ORklHX1VTQl9TVE9SQUdFLgotCi0gICAgVVNCX01BWF9TVE9SX0RFViBpcyBkZWZpbmVkIGluIGluY2x1ZGUvdXNiLmgsIGJ1dAotICAgIG5lZWRlZCBpbiBhcGkvYXBpX3N0b3JhZ2UuYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgYWJiYjkwNjY2ZDVlZjJmNTAwZWJiZWRiYjgwZmY2MGFkYzU2YjA0MwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJVHVlIFNlcCAyMyAxMjozOTo0MCAyMDA4IC0wNTAwCi0KLSAgICBSZW1vdmUgdW51c2VkIENGR19FRVBST01fUEFHRV9XUklURV9FTkFCTEUgcmVmZXJlbmNlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDgxZTYxMjAxNGM0MGM5MjJlYzM1NDg4ZDE3YzUwNGQ0ZTkyODZmMDYKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CVR1ZSBTZXAgMjMgMTI6Mzg6NDIgMjAwOCAtMDUwMAotCi0gICAgUmVtb3ZlIENGR19FRVBST01fUEFHRSogZGVwZW5kZW5jaWVzIGZvciB0ZW1wZXJhdHVyZSBzZW5zb3JzCi0KLSAgICBUaGUgY2hlY2tzIGZvciBDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIGFuZAotICAgIENGR19FRVBST01fUEFHRV9XUklURV9CSVRTIGluIHZhcmlvdXMgdGVtcGVyYXR1cmUKLSAgICBzZW5zb3IgZHJpdmVycyBhcmUgbm90IG5lY2Vzc2FyeQotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGM0Njk4MGY2ZDIxMzVhZGUzNDVkYWRjMWZiMWYxZjRjOGJiZjI1NWEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE9jdCAxNCAwNzowNDozOCAyMDA4IC0wNDAwCi0KLSAgICBjbWRfc3BpOiByZW1vdmUgYnJva2VuIHNpZ25lZCBjYXN0aW5nIGZvciBkaXNwbGF5Ci0KLSAgICBTaW5jZSB3ZSdyZSB3b3JraW5nIHdpdGggdW5zaWduZWQgZGF0YSwgeW91IGNhbid0IGFwcGx5IGEgc2lnbmVkIHBvaW50ZXIKLSAgICBjYXN0IGFuZCB0aGVuIGF0dGVtcHQgdG8gcHJpbnQgdGhlIHJlc3VsdC4JT3RoZXJ3aXNlIHlvdSBnZXQgd3Jvbmcgb3V0cHV0Ci0gICAgd2hlbiB0aGUgc2lnbiBiaXQgaXMgc2V0IGxpa2UgIjB4RkYiIGluY29ycmVjdGx5IGV4dGVuZGVkIHRvICIweEZGRkZGRkZGIi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQ1ZmQwYjQ5MjEwYzk0MWRlOGExZmNlMzk0N2FjZTkyMjQzYWI1Y2EKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIE9jdCAxNCAwNzowNToyNCAyMDA4IC0wNDAwCi0KLSAgICBzdHJpbmdzIGNtZDogZHJvcCBvbGQgQ09ORklHX0NGR19TVFJJTkdTIGRlZmluZQotCi0gICAgV2UgZG9uJ3QgbmVlZCBDT05GSUdfQ0ZHX1NUUklOR1MgYW55bW9yZSBub3cgdGhhdCB3ZSBoYXZlIHRoZSBkZWZpbmUKLSAgICBDT05GSUdfQ01EX1NUUklOR1MgYW5kIE1ha2VmaWxlIGNvbnRyb2wuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBmZWNiNWFkZTNiMzdmNjI5ODFmMmIwNWI2MjEwMDU4NTAxNzNhYWE5Ci1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgU2VwIDE5IDE3OjMyOjQ5IDIwMDggKzA4MDAKLQotICAgIEZpeCB0aGUgTkFORCBzaXplIG92ZXJmbG93IGlzc3VlLgotCi0gICAgV2hlbiB0aGUgdG90YWwgc2l6ZSBvZiBhbGwgTkFORCBkZXZpY2VzIGV4Y2VlZHMgNCBHaUIsIHRoZSBzaXplICB3aWxsCi0gICAgb3ZlcmZsb3cuIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4IHRoaXMuCi0KLSAgICBOb3RlIHRoYXQgd2Ugc3RpbGwgaGF2ZSBhIHByb2JsZW0gd2hlbiBhIHNpbmdsZSBOQU5EIGRldmljZSBpcyBiaWdnZXIKLSAgICB0aGFuIDQgR2lCOiB0aGVuIHRoZSBvdmVyZmxvdyB3b3VsZCBhY3R1YWxseSBoYXBwZW4gZWFybGllciwgaS4gZS4KLSAgICB3aGVuIHN0b3JpbmcgdGhlIHNpemUgaW4gbmFuZF9pbmZvW10uc2l6ZSwgYXMgbmFuZF9pbmZvW10uc2l6ZSBpcyBhbgotICAgICJ1X2ludDMyX3QiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzBmNTc0NzE3Mjc3MjM4YjkwMTRiODEzNmM5MGVlYTc3MTk2NDkwZgotQXV0aG9yOiBMb3VpcyBTdSA8bG91aXNAYXNpeC5jb20udHc+Ci1EYXRlOglXZWQgSnVsIDkgMTE6MDE6MzcgMjAwOCArMDgwMAotCi0gICAgQVg4ODE4MDogbmV3IGdpZ2FiaXQgbmV0d29yayBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IExvdWlzIFN1IDxsb3Vpc0Bhc2l4LmNvbS50dz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYzlkNmI2OTI1MzQ0NzQwY2ExZGIyZjhhNmJhYjc5MjFmZjgyMGRlMwotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglUdWUgQXVnIDE5IDE2OjA3OjAzIDIwMDggKzAyMDAKLQotICAgIGVuYWJsZSAxMC8xMDBNIGF0IFZTQzg2MDEgYXQgdHNlYyBkcml2ZXIKLQotICAgIEN1cnJlbnRseSBWU0M4NjAxIGRvZXNuJ3QgbGluayB3aXRoIDEwLzEwME0gcGFydG5lcnMgaWYgdGhlCi0gICAgRUVQUk9NL1N0cmFwcGluZyBpcyBub3Qgc2V0IHVwLgotICAgIFNldHRpbmcgdGhlIGF1dG8tbmVnIHJlZ2lzdGVyIGZpeGVzIHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDcwMmM4NWIwZTg3NmQ1ODdjMTFhY2RiYjU1NzM4ZWU1MmFjZDU0ZjQKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVHVlIFNlcCAzMCAxNTowMjo1MyAyMDA4ICswOTAwCi0KLSAgICBuZXQ6IG5lMjAwMDogRGl2aWRlZCBhIGZ1bmN0aW9uIG9mIE5FMjAwMCBkcml2ZXIKLQotICAgIGdldF9wcm9tIGZ1bmN0aW9uIHdhcyB1c2VkIF9fYXR0cml1dGVfXyAsIGJ1dCBpdCBpcyBub3QgZW5hYmxlLgotICAgIGF4ODg3OTYubyBkb2VzIG5vdCBkbyBsaW5rIGJlc2lkZXMgbmUyMDAwLm8uIFdoZW4gbGQgaXMgY2FycmllZAotICAgIG91dCwgZ2V0X3Byb20gZnVuY3Rpb24gb2YgYXg4ODc5Ni5jIGlzIGlnbm9yZWQuCi0gICAgVGhpcyBwcm9ibGVtIGlzIGEgdGhpbmcgYnkgc3BlY2lmaWNhdGlvbnMgb2YgbGQuCi0gICAgSSBjaGVja2VkIGFuZCB0ZXN0IHRoaXMgcGF0Y2ggb24gU3VwZXJIIGFuZCBNSVBTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAwNWM3ZTkwNzBmZTRkNzUxZTAyOWZkOTUyNGJmYmJjOTNjYmIxMzkzCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBPY3QgMTQgMTE6MTA6NTkgMjAwOCArMDkwMAotCi0gICAgc2g6IHJzazcyMDM6IEFkZCBzbWM5MTF4IGRyaXZlciBzdXBwb3J0IHRvIGJvYXJkIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgY2FlNmY5MDliYWY4NjM1N2IzYzBiZDAxYWNmYzQxNDM0OGM0ZDE3NQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUaHUgT2N0IDkgMTM6NTQ6MzMgMjAwOCArMDkwMAotCi0gICAgc2g6IEZpeCBjYW5ub3QgZXhlY3V0ZSBhIHN0YW5kLWFsb25lIGFwcGxpY2F0aW9uCi0KLSAgICBBZGRyZXNzIGNhbGN1bGF0ZWQgaW4gRVhQT1JUX0ZVTkMgaW4gU3VwZXJIIHdhcyB3cm9uZywgSSByZXZpc2VkIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDZkZjBlZmQ1Yzg2Y2ExNjg5ZGVlYjI3MzhiNDZiN2Q4M2NlMjI4ZWYKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgOCAyMzozODowMCAyMDA4IC0wNTAwCi0KLSAgICBmc2xfcGNpX2luaXQgZG8gbm90IHNjYW4gYnVzIHdoZW4gY29uZmlndXJlZCBhcyBhbiBlbmQtcG9pbnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZmMDk5YmJhYzFiYTVkZmI0NmVlN2FkMjlkYzUzNzEzZjA1MDFiYTUKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglUdWUgU2VwIDE2IDE3OjA3OjUzIDIwMDggLTA0MDAKLQotICAgIEFSTSBEYVZpbmNpOiBSZW1vdmUgcmVkdW5kYW50IHNldHRpbmcgb2YgR0RfRkxHX1JFTE9DIGZvciBzZmZzZHIgYm9hcmQuCi0KLSAgICBUaGlzIGlzIG5vIGxvbmdlciBuZWNlc3Nhcnkgbm93IHRoYXQgdGhlIEdEX0ZMR19SRUxPQyBmbGFnIGlzIHNldCBmb3IKLSAgICBhbGwgQVJNIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotCi1jb21taXQgZDk3N2E1NzM1NjY1N2JhMjQxMjU2MjMxZWZjYTMyODI4YTU4MjJmOQotQXV0aG9yOiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+Ci1EYXRlOglTYXQgU2VwIDEzIDEwOjA0OjMyIDIwMDggKzAyMDAKLQotICAgIEZpeCBsem1hIHVuY29tcHJlc3MgY2FsbCAoaW1hZ2Vfc3RhcnQgd3JvbmdseSB1c2VkIGluc3RlYWQgaW1hZ2VfbGVuKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTHVpZ2kgJ0NvbWlvJyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgotCi1jb21taXQgMzkyNDM4NDA2MDQxNDE1ZmU2NGFiODc0OGVjNWFiNWFkMDFkMWNmNwotQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMjggMTQ6MDk6MTUgMjAwOCAtMDcwMAotCi0gICAgbXBjODZ4eDogdXNlIHI0IGluc3RlYWQgb2YgcjIgaW4gbG9ja19yYW1faW5fY2FjaGUgYW5kIHVubG9ja19yYW1faW5fY2FjaGUKLQotICAgIFRoaXMgaXMgbmVlZGVkIGluIHVubG9ja19yYW1faW5fY2FjaGUoKSBiZWNhdXNlIGl0IGlzIGNhbGxlZCBmcm9tIEMgYW5kCi0gICAgd2lsbCBjb3JydXB0IHRoZSBzbWFsbCBkYXRhIGFyZWEgYW5jaG9yIHRoYXQgaXMga2VwdCBpbiBSMi4KLQotICAgIGxvY2tfcmFtX2luX2NhY2hlKCkgaXMgbW9kaWZpZWQgc2ltaWxhcmx5IGFzIGdvb2QgY29kaW5nIHByYWN0aWNlLCBidXQKLSAgICBpcyBub3QgY2FsbGVkIGZyb20gQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWM3Y2JjZDM0ZDBlZTU2Njg3NWE0ZmQwZjJhM2U1YTYyYmJhOTIxYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAxOSAxNTowNTozNCAyMDA4IC0wNTAwCi0KLSAgICA4Nnh4OiByZW1vdmUgcmVkdWRhbnQgY29kZSB3aXRoIGxpYl9wcGMvaW50ZXJydXB0cy5jCi0KLSAgICBGb3Igc29tZSByZWFzb24gd2UgZHVwbGljYXRlZCB0aGUgbWFqb3JpdHkgb2YgY29kZSBpbiBsaWJfcHBjL2ludGVycnVwdHMuYwotICAgIE5vdCBrbm93IGhvdyB0aGF0IGhhcHBlbmVkLCBidXQgdGhlcmUgaXMgbm8gZ29vZCByZWFzb24gZm9yIGl0LgotCi0gICAgVXNlIHRoZSBpbnRlcnJ1cHRfaW5pdF9jcHUoKSBhbmQgdGltZXJfaW50ZXJydXB0X2NwdSgpIHNpbmNlIGl0cyB3aHkKLSAgICB0aGV5IGV4aXN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDBkMDFmNjZkMjM1MTE4NTE1YjUwODZiODhmODI0OThiYzA2OTVkNmEKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgOSAwMToyNjozNiAyMDA4IC0wNTAwCi0KLSAgICBDRkk6IGNmaV9mbGFzaCB3cml0ZSBmaXggZm9yIEFNRCBsZWdhY3kKLQotICAgIFRoZSBmbGFzaF91bmxvY2tfc2VxIHJlcXVpcmVzIGEgc2VjdG9yIGZvciBBTURfTEVHQUNZLgotICAgIEZpeCBhIHJldGNvZGUgY2hlY2sgdHlwZW8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDU0MmIzODVhNjIwYTE3ODM0NTRhMDA0MjQ5MzBlNTE4OTVmNDUwNzMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgT2N0IDcgMTM6MTM6MTAgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggVVNCIDIuMCBwaHkgcmVzZXQgc2VxdWVuY2UKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgVVNCIDIuMCBjb21tdW5pY2F0aW9uIGlzc3VlcyBvbiBzb21lIERVNDQwIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRmOGMxY2UxMTExNGMyMjYwZGVkYjU1NDcyODE5NDVmN2RiOGZhNWMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgT2N0IDcgMTM6MTM6MDkgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgc3RyYXBwaW5nIG1vZGUgZm9yIDY2N01IeiBDUFUgZnJlcXVlbmN5IG9uIERVNDQwIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2YTEzM2Q2YTAwYjFmYzdiOTI1N2NkNTkyNWQ4Y2I2N2Y3NWVjZGEyCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIE9jdCA3IDEzOjEzOjA4IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IERVNDQwIEdQSU8gY29uZmlndXJhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzVkZDAyNWM3MGZjYzQzODkzMTdkYjJmMmE5ZDE0Nzk1MTcyMTM3ZAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBPY3QgNyAxMzoxMzowNyAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBEVTQ0MCBjb25maWcKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGYzYmY5MjczOTM5ZmZlMWE2MGEzMmEyZWVmOTA5MDk3ZjE1ZGY1NmIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBPY3QgOCAxNTozNjozOSAyMDA4IC0wNTAwCi0KLSAgICBNUEM4NTcyRFM6IEZpeCBjb21waWxlIHdhcm5pbmdzCi0KLSAgICBDb21taXQgNDQ1YTdiMzgzMDhlYjA1YjQxZGU3NDE2NWIyMDg1NWRiNThjN2VlNSBpbnRyb2R1Y2VkIHRoZSBmb2xsb3dpbmcKLSAgICBjb21waWxlIHdhcm5pbmdzOgotCi0gICAgY21kX2kyYy5jOjExMjogd2FybmluZzogbWlzc2luZyBicmFjZXMgYXJvdW5kIGluaXRpYWxpemVyCi0gICAgY21kX2kyYy5jOjExMjogd2FybmluZzogKG5lYXIgaW5pdGlhbGl6YXRpb24gZm9yICdpMmNfbm9fcHJvYmVzWzBdJykKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkZmZkMjQ0NmZiMDQxZjM4ZWYwMzRiMGZjZjQxZTUxZTVlNDg5MTU5Ci1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJVHVlIFNlcCAzMCAxMDo1NTo1NyAyMDA4ICswMjAwCi0KLSAgICA4NXh4OiBVc2luZyBwcm9wZXIgSTJDIHNvdXJjZSBjbG9jayBkaXZpZGVyIGZvciBNUEM4NTQ0Ci0KLSAgICBNZWFzdXJlbWVudHMgd2l0aCBvdXIgTVBDODU0NCBib2FyZCBzaG93ZWQgdGhhdCB0aGUgSTJDIGJ1cyBmcmVxdWVuY3kKLSAgICBpcyB3cm9uZyBieSBhIGZhY3RvciBvZiAxLjUuIE9idmlvdXNseSwgdGhlIGludGVycHJldGF0aW9uIG9mIHRoZQotICAgIE1QQzg1eHhfUE9SREVWU1IyX1NFQ19DRkcgYml0IG9mIHRoZSBjZmdfc2VjX2ZyZXEgcmVnaXN0ZXIgaXMgbm90Ci0gICAgY29ycmVjdC4gVGhlcmUgc2VlbXMgdG8gYmUgYW4gZXJyb3IgaW4gdGhlIDg1NDQgUk0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLQotY29tbWl0IGU0NmM3YmZiOGJjM2MzMDRjZWRkMjBmN2EzNjVkNmU3OGQ3ZWFmMTcKLUF1dGhvcjogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE9jdCA4IDEzOjQxOjMwIDIwMDggKzAyMDAKLQotICAgIEZTTDogRml4IGdldF9jcHVfYm9hcmRfcmV2aXNpb24oKSByZXR1cm4gdmFsdWUuCi0KLSAgICBnZXRfY3B1X2JvYXJkX3JldmlzaW9uKCkgcmV0dXJuZWQgYm9hcmQgcmV2aXNpb24gYmFzZWQgb24gaW5mb3JtYXRpb24gc3RvcmVkCi0gICAgaW4gZ2xvYmFsIHN0YXRpYyBzdHJ1Y3QgZWVwcm9tLiBJdCBzaG91bGQgaW5zdGVhZCB1c2Ugb25lIGZyb20gbG9jYWwgc3RydWN0Ci0gICAgYm9hcmRfZWVwcm9tLCB0byB3aGljaCB0aGUgZGF0YSBpcyBhY3R1YWxseSByZWFkIGZyb20gRUVQUk9NLiBUaGUgYnVnIGxlZCB0bwotICAgIHN5c3RlbSBoYW5nIGFmdGVyIHByaW50aW5nIEwxIGNhY2hlIGluZm9ybWF0aW9uIG9uIFUtQm9vdCBzdGFydHVwLiBUaGUgcHJvYmxlbQotICAgIHdhcyBvYnNlcnZlZCBvbiBNUEM4NTU1Q0RTIHN5c3RlbSBhbmQgcG9zc2libHkgYWZmZWN0cyBvdGhlciBGcmVlc2NhbGUgTVBDODV4eAotICAgIGJvYXJkcyB1c2luZyBDRkdfSTJDX0VFUFJPTV9DQ0lELgotCi0gICAgVGhlIGNoYW5nZSBoYXMgYmVlbiBzdWNjZXNzZnVsbHkgdGVzdGVkIG9uIE1QQzg1NTVDRFMgc3lzdGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgQ3p1YmFrIDxyY3pAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNzQ3ZjMxNmNjYTQ4NGVkNjI3YTk3ZGQzMzkxZmViYWJjZTM4NDE4NgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIFNlcCAzMCAyMDowODo0OSAyMDA4ICswMjAwCi0KLSAgICB1cGRhdGUgdUltYWdlIEZJVCBtdWx0aSBkb2N1bWVudGF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzdhMDM1NWY2MGI4MDFmMjMyY2UwYTViZmJlOTUzMzFmYTNiNmJjMAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIFNlcCAzMCAyMDowODozNiAyMDA4ICswMjAwCi0KLSAgICBtb3ZlIFJFQURNRS5pbXgzMSB0byBkb2MvIGFuZCBtZXJnZSB3aXRoIFJFQURNRS5teDMxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMWVkN2E3ZjBmNTcxYjEzZDQ2NTMwZjhmOGI5YWZmMzk1N2YxNWE5NgotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUaHUgU2VwIDI1IDIwOjU0OjM3IDIwMDggKzAyMDAKLQotICAgIGkuTVgzMTogc3dpdGNoIHRvIENGR19IWj0xMDAwCi0KLSAgICBTd2l0Y2ggdG8gdGhlIHN0YW5kYXJkIENGR19IWj0xMDAwIHZhbHVlLCB3aGlsZSBhdCBpdCwgbWlub3Igd2hpdGUtc3BhY2UKLSAgICBjbGVhbnVwLCByZW1vdmUgQ0ZHX0NMS1NfSU5fSFogZnJvbSBjb25maWctaGVhZGVycy4gVGVzdGVkIG9uIG14MzFhZHMsCi0gICAgcHJvdmlkZXMgMiUgb3IgMC40JSBwcmVjaXNpb24gZGVwZW5kaW5nIG9uIHRoZQotICAgIENPTkZJR19NWDMxX1RJTUVSX0hJR0hfUFJFQ0lTSU9OIGZsYWcuIE1lYXN1cmVkIHdpdGggc3RvcC13YXRjaCBvbiAxMDBzCi0gICAgYm9vdC1kZWxheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IGY0MWIxNDRjMTEzNDFiNTcxZWFiN2RjZWY2YzRiOGUwM2M5MmQyYjIKLUF1dGhvcjogZ251c2VyY24gPGdudXNlcmNuQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBPY3QgOCAxODo1ODo1OCAyMDA4ICswMjAwCi0KLSAgICBGaXggYnVnOiBpbiBhcmNoLWFybSwgZW52X2dldF9jaGFyIGRvc2Ugbm90IHdvcmsgZmluZQotCi0gICAgZHVlIHRvIHRoZSBhcm0gaW1wbGVtZW50YXRpb24gd2hpY2ggc3VwcG9zZWQgdGhhdCBVLUJvb3QgaXMgaW4gUkFNCi0gICAgd2hlbiB3ZSBqdW1wIHRvIHN0YXJ0X2FybWJvb3QKLQotICAgIFNpZ25lZC1vZmYtYnk6IGdudXNlcmNuIDxnbnVzZXJjbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGY4YTAwZGVhODQxZDVkNzVkZTFmOGU4MTA3ZTkwZWUxYmVlZGRmNWYKLUF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+Ci1EYXRlOglNb24gT2N0IDYgMTA6MTY6MTMgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBSZXNldCBhbmQgcmVsb2NrIG1lbW9yeSBETEwgYWZ0ZXIgU0RSQU1fQ0xLVFIgY2hhbmdlCi0KLSAgICBBZnRlciBjaGFuZ2luZyBTRFJBTV9DTEtUUiBwaGFzZSB2YWx1ZSByZXJ1biB0aGUgbWVtb3J5IHByZWxvYWQKLSAgICBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZSAoSU5JVFBMUikgdG8gcmVzZXQgYW5kIHJlbG9jayB0aGUgbWVtb3J5Ci0gICAgRExMLiBDaGFuZ2luZyB0aGUgU0RSQU1fQ0xLVFIgbWVtb3J5IGNsb2NrIHBoYXNlIGNvYXJzZSB0aW1pbmcKLSAgICBhZGp1c3RtZW50IGVmZmVjdHMgdGhlIHBoYXNlIHJlbGF0aW9uc2hpcCBvZiB0aGUgaW50ZXJuYWwsIHRvIHRoZQotICAgIFBQQyBjaGlwLCBhbmQgZXh0ZXJuYWwsIHRvIHRoZSBQUEMgY2hpcCwgdmVyc2lvbnMgb2YgTUVNQ0xLX09VVC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDUyOTcyNDZiYmFhOTk0M2MwZGExZWMyZTcxN2I3MmU0YWI2YjgzMGUKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMyAxMTo0ODowMyAyMDA4IC0wNDAwCi0KLSAgICBSZW1vdmUgcmVkdW5kYW50ICNkZWZpbmUgZm9yIE1QQzg1MzZEUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ0NWE3YjM4MzA4ZWIwNWI0MWRlNzQxNjViMjA4NTVkYjU4YzdlZTUKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMyAxMTo0NzozMCAyMDA4IC0wNDAwCi0KLSAgICBBZGQgSUQgRUVQUk9NIHN1cHBvcnQgZm9yIE1QQzg1NzJEUwotCi0gICAgVGhlIElEIEVFUFJPTSBvbiBNUEM4NTcyRFMgYm9hcmQgbG9jYXRlcyBvbiBJMkMgYnVzIDEuIEl0cyB0aGUgc3RvcmFnZSBmb3IKLSAgICBzeXN0ZW0gaW5mb3JtYXRpb24gbGlrZSBtYWMgYWRkcmVzc2VzIGV0Yy4gVGhpcyBwYXRjaCBlbmFibGVzIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFmM2JhMzE3YTVjNWYzYTdhYWJmNTgwZmRkYzIxMWY0YmI1YTQ1NDAKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMyAxMTo0Njo1OSAyMDA4IC0wNDAwCi0KLSAgICBNaW5vciBmaXhlcyBmb3IgSTJDIGFkZHJlc3Mgb24gTVBDODU3MkRTCi0KLSAgICBNUEM4NTcyRFMgaGFzIHR3byBpMmMgYnVzZXMuIFRoaXMgcGF0Y2ggbW92ZXMgdGhlIEREUiBTUERfRUVQUk9NIHRvIGkyYyBidXMgMQotICAgIGFjY29yZGluZyB0byB0aGUgYm9hcmQgc3BlYywgYW5kIGFkZHMgdGhlIDJuZCBpMmMgYnVzIG9mZnNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjMDM5MTExMWMzM2MyMmZhYmVkZGY4ZjRjYTgwMWVjNzY0NWI0ZjVjCi1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTYXQgU2VwIDI3IDE0OjQwOjU3IDIwMDggKzA4MDAKLQotICAgIEZpeCB0aGUgaW5jb3JyZWN0IEREUiBjbGsgZnJlcSByZXBvcnRpbmcgb24gODUzNkRTCi0KLSAgICBPbiA4NTM2RFMgYm9hcmQsIFdoZW4gdGhlIEREUiBjbGsgaXMgc2V0IGFzeW5jIG1vZGUoU1czWzY6OF0gIT0gMTExKSwKLSAgICBUaGUgZGlzcGxheSBpcyBzdGlsbCBzeW5jIG1vZGUgRERSIGZyZXEuIFRoaXMgcGF0Y2ggdHJ5IHRvIGZpeAotICAgIHRoaXMuIFRoZSBkaXNwbGF5IEREUiBmcmVxIGlzIG5vdyB0aGUgYWN0dWFsIGZyZXEgaW4gYm90aAotICAgIHN5bmMgYW5kIGFzeW5jIG1vZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmFjNmExZDFmYTFjZDgwYWE1Nzg4MWZhOWMyMTUyYjg1M2NkMGVkNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE9jdCA3IDEwOjI4OjQ2IDIwMDggLTA1MDAKLQotICAgIDg1eHg6IFJlbW92ZSBzZXR0aW5nIG9mICpjYWNoZS1saW5lLXNpemUgaW4gZGV2aWNlIHRyZWVzCi0KLSAgICBlUEFQUiBzYXlzIGlmIHRoZSAqY2FjaGUtYmxvY2stc2l6ZSBpcyB0aGUgc2FtZSBhcyAqY2FjaGUtbGluZS1zaXplCi0gICAgdGhhbiB3ZSBkb24ndCBuZWVkIHRoZSAqY2FjaGUtbGluZS1zaXplIHByb3BlcnR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGE2OWE0MjMzOGRkMjU0MDhmOWZkNTM5MGE4M2JjNTAxNzQ5YzdlMWIKLUF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Ci1EYXRlOglGcmkgT2N0IDMgMTE6NDg6NTcgMjAwOCArMDEwMAotCi0gICAgTUlNQzIwMCBib2FyZCBub3cgdXNlcyBDT05GSUdfRElTQUJMRV9DT05TT0xFCi0KLSAgICBDaGFuZ2VkIE1JTUMyMDAgYm9hcmQgc2V0dXAgYW5kIGNvbmZpZyB0byB1c2UgQ09ORklHX0RJU0FCTEVfQ09OU09MRS4KLSAgICBBbHNvIGZpeGVkIGRlZmF1bHQgdUltYWdlIGxvY2F0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgY2QzY2IwZDkyNjlkMTU1Mjc2YjAwMjA3ZTM4MTZhOTM0N2ZkMWM5MgotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJU2F0IE9jdCA0IDA3OjU2OjA2IDIwMDggLTA0MDAKLQotICAgIGxpYmZkdDogRml4IGVycm9yIGluIGRvY3VtZW50YXRpb24gZm9yIGZkdF9nZXRfYWxpYXNfbmFtZWxlbigpCi0KLSAgICBPb3BzLCBzY3Jld2VkIHVwIHRoZSBmdW5jdGlvbiBuYW1lIGluIHRoZSBkb2N1bWVudGluZyBjb21tZW50IGZvciB0aGlzCi0gICAgZnVuY3Rpb24uICBUcml2aWFsIGNvcnJlY3Rpb24gaW4gdGhpcyBwYXRjaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgOWE2Y2Y3M2E4OGRkYWIyZTFhYzM5MDg4ZjI4MDYxNzc5ODJjYzYyYwotQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLURhdGU6CVdlZCBBdWcgMjAgMTY6NTU6MTQgMjAwOCArMTAwMAotCi0gICAgbGliZmR0OiBBZGQgZnVuY3Rpb24gdG8gZXhwbGljaXRseSBleHBhbmQgYWxpYXNlcwotCi0gICAgS3VtYXIgaGFzIGFscmVhZHkgYWRkZWQgYWxpYXMgZXhwYW5zaW9uIHRvIGZkdF9wYXRoX29mZnNldCgpLgotICAgIEhvd2V2ZXIsIGluIHNvbWUgY2lyY3Vtc3RhbmNlcyBpdCBtYXkgYmUgY29udmVuaWVudCBmb3IgdGhlIHVzZXIgb2YKLSAgICBsaWJmZHQgdG8gZXhwbGljaXRseSBnZXQgdGhlIHN0cmluZyBleHBhbnNpb24gb2YgYW4gYWxpYXMuCVRoaXMgcGF0Y2gKLSAgICBhZGRzIGEgZnVuY3Rpb24gdG8gZG8gdGhpcywgZmR0X2dldF9hbGlhcygpLCBhbmQgdXNlcyBpdCB0byBpbXBsZW1lbnQKLSAgICBmZHRfcGF0aF9vZmZzZXQoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotCi1jb21taXQgMjIxNTk4N2UxMDBkMmE4NDFhZTZkNDhhN2NjOWJiODNmY2YyMjczNwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglUaHUgT2N0IDIgMDE6NTU6MzggMjAwOCAtMDQwMAotCi0gICAgY2ZpX2ZsYXNoOiBkbyBub3QgcmVzZXQgZmxhc2ggd2hlbiBwcm9iZSBmYWlscwotCi0gICAgVGhlIENGSSBmbGFzaCBkcml2ZXIgc3RhcnRzIGF0IGZsYXNoX2luaXQoKSB3aGljaCBjYWxscyBkb3duIGludG8KLSAgICBmbGFzaF9nZXRfc2l6ZSgpLiAgVGhpcyBzdGFydHMgYnkgY2FsbGluZyBmbGFzaF9kZXRlY3RfY2ZpKCkuICBJZiBzYWlkCi0gICAgZnVuY3Rpb24gZmFpbHMsIGZsYXNoX2dldF9zaXplKCkgZmluaXNoZXMgYnkgYXR0ZW1wdGluZyB0byByZXNldCB0aGUKLSAgICBmbGFzaC4gIFVuZm9ydHVuYXRlbHksIGl0IGRvZXMgdGhpcyB3aXRoIGFuIGluZm8tPnBvcnR3aWR0aCBzZXQgdG8gMHgxMAotICAgIHdoaWNoIGZpbHRlcnMgZG93biBpbnRvIGZsYXNoX21ha2VfY21kKCkgYW5kIHRoYXQgaGFwcGlseSBzbWFzaGVzIHRoZQotICAgIHN0YWNrIGJ5IHN0aWNraW5nIGluZm8tPnBvcnR3aWR0aCBieXRlcyBpbnRvIGEgY2Zpd29yZF90IHZhcmlhYmxlIHRoYXQKLSAgICBsaXZlcyBvbiB0aGUgc3RhY2suICBPbiBhIDY0Yml0IHN5c3RlbSB5b3UgcHJvYmFibHkgd29uJ3Qgbm90aWNlLCBidXQKLSAgICBraWxsaW5nIHRoZSBsYXN0IDggYnl0ZXMgb24gYSAzMmJpdCBzeXN0ZW0gdXN1YWxseSBsZWFkcyB0byBhIGNvcnJ1cHQKLSAgICByZXR1cm4gYWRkcmVzcy4gIFdoaWNoIGlzIHdoYXQgaGFwcGVucyBvbiBhIEJsYWNrZmluIHN5c3RlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzZTM4NTc3MjA4ZTQyNTY5NTZiYzMzYmI4YmNkMGE2YjZmYWI1NWMzCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBTZXAgMjYgMTc6MDM6MjYgMjAwOCArMDIwMAotCi0gICAgZmR0OiBPdmVyd3JpdGUgL2Nob3NlbiBub2RlIGluIGJvb3RtIGlmIGl0IGFscmVhZHkgZXhpc3RzIGluIHRoZSBkdGIKLQotICAgIFNldCBmb3JjZSBwYXJhbWV0ZXIgaW4gZmR0X2Nob3NlbigpIGNhbGwgaW4gZG9fYm9vdG1fbGludXgoKSBjYWxsLgotICAgIFdpdGhvdXQgdGhpcywgdGhlIGNob3NlbiBub2RlIGlzIG5vdCBvdmVyd3JpdHRlbiBpZiBpdCBhbHJlYWR5Ci0gICAgZXhpc3RzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzQxYTZkMDEwZDA5YjViYWZjYThlNGNkZmI2YjJmOGEyYzA3OTk0ZAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IFNlcCAyNSAxMTowMjoxNyAyMDA4IC0wNTAwCi0KLSAgICBGaXggYW4gb3ZlcmZsb3cgY2FzZSBpbiBmZHRfb2Zmc2V0X3B0cigpIGRldGVjdGVkIGJ5IEdDQyA0LjMuCi0KLSAgICBVc2luZyBHY2MgNC4zIGRldGVjdGVkIHRoaXMgcHJvYmxlbToKLQotCS4uL2R0Yy9saWJmZHQvZmR0LmM6IEluIGZ1bmN0aW9uICdmZHRfbmV4dF90YWcnOgotCS4uL2R0Yy9saWJmZHQvZmR0LmM6ODI6IGVycm9yOiBhc3N1bWluZyBzaWduZWQgb3ZlcmZsb3cgZG9lcyBub3QKLQlvY2N1ciB3aGVuIGFzc3VtaW5nIHRoYXQgKFggKyBjKSA8IFggaXMgYWx3YXlzIGZhbHNlCi0KLSAgICBUbyBmaXggdGhlIHByb2JsZW0sIHRyZWF0IHRoZSBvZmZzZXQgYXMgYW4gdW5zaWduZWQgaW50LgotCi0gICAgVGhlIHByb2JsZW0gcmVwb3J0IGFuZCBwcm9wb3NlZCBmaXggd2VyZSBwcm92aWRlZAotICAgIGJ5IFN0ZXZlIFBhcGFjaGFyYWxhbWJvdXMgPHN0ZXZlcEBmcmVlc2NhbGUuY29tPi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiYmRiYzdjYjNhYmVmZGE1YmQ5OThlZGJjZjA1MDhmZTYyNTYzMjdkCi1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJRnJpIEF1ZyAyOSAxNDoxOToxMyAyMDA4ICsxMDAwCi0KLSAgICBsaWJmZHQ6IEZpeCBidWdzIGluIGZkdF9nZXRfcGF0aCgpCi0KLSAgICBUaGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvZiBmZHRfZ2V0X3BhdGgoKSBoYXMgYSBjb3VwbGUgb2YgYnVncywKLSAgICBmaXhlZCBieSB0aGlzIHBhdGNoLgotCi0gICAgRmlyc3QsIGNvbnRyYXJ5IHRvIGl0cyBkb2N1bWVudGF0aW9uLCBvbiBzdWNjZXNzIGl0IHJldHVybnMgdGhlIGxlbmd0aAotICAgIG9mIHRoZSBub2RlJ3MgcGF0aCwgcmF0aGVyIHRoYW4gMC4JVGhlIHRlc3RjYXNlIGlzIGNvcnJlc3BvbmRpbmdseQotICAgIHdyb25nLCBhbmQgdGhlIHBhdGNoIGZpeGVzIHRoaXMgYXMgd2VsbC4KLQotICAgIFNlY29uZCwgaW4gc29tZSBjaXJjdW1zdGFuY2VzLCBpdCB3aWxsIHJldHVybiAtRkRUX0VSUl9CQURPRkZTRVQKLSAgICBpbnN0ZWFkIG9mIC1GRFRfRVJSX05PU1BBQ0Ugd2hlbiBnaXZlbiBpbnN1ZmZpY2llbnQgYnVmZmVyIHNwYWNlLgotICAgIFNwZWNpZmljYWxseSB0aGlzIGhhcHBlbnMgd2hlbiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2UgZXZlbiB0bwotICAgIGhvbGQgdGhlIHBhdGgncyBzZWNvbmQgbGFzdCBjb21wb25lbnQuICBUaGlzIGJlaGF2aW91ciBpcyBjb3JyZWN0ZWQsCi0gICAgYW5kIHRoZSB0ZXN0Y2FzZSB1cGRhdGVkIHRvIGNoZWNrIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0KLWNvbW1pdCAzM2FmM2U2NjU2ZTg0NjYwZDM5N2I1ZGQ5NWFiYWIyZGNjYzM2ZjgzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDEgMTI6MzQ6NTggMjAwOCArMDIwMAotCi0gICAgVFFNNTIwMDogZW5hYmxlIHN1cHBvcnQgZm9yIEFUQVBJIGRldmljZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkMTNmZjIzNThmZjhjMzg0ZjUyZWFmNDZmNWQ2MDI1OGFjZjk2ZWE2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gU2VwIDE1IDA1OjQ4OjI1IDIwMDggKzAyMDAKLQotICAgIFJldmVydCAiQVJNOiBzZXQgR0RfRkxHX1JFTE9DIGZvciBib2FyZHMgc2tpcHBpbmcgcmVsb2NhdGlvbiB0byBSQU0iCi0KLSAgICB3ZSBuZWVkIHRoaXMgZHVlIHRvIHRoZSBhcm0gaW1wbGVtZW50YXRpb24gd2hpY2ggc3VwcG9zZWQgdGhhdCBVLUJvb3QKLSAgICBpcyBpbiBSQU0gd2hlbiB3ZSBqdW1wIHRvIHN0YXJ0X2FybWJvb3QKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgZjk2YjQ0Y2VmODk3YmQzNzJiZWI4NmRkZTFiMzM2MzdjMTE5ZDg0ZC4KLSAgICBpbiBvcmRlciB0byBkbyBpdCBmb3IgYWxsIGFybSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDdmZDBiZWEyZTRhNzhlYWI3ZTY2OTMxNDA5NDBmOWY5YTAwMDliYzIKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBTZXAgMjQgMDg6NDY6MjUgMjAwOCAtMDUwMAotCi0gICAgbXBjODN4eDogZG9uJ3QgZGlzYWJsZSBhdXRvYm9vdAotCi0gICAgYm9vdGRlbGF5IHNldCB0byAtMSAncGVybWFuZW50bHknIGRpc2FibGVzIGF1dG9ib290aW5nLCBldmVuIGlmCi0gICAgYm9vdGNtZCBpcyBzcGVjaWZpZWQuICBDaGFuZ2UgdG8gYSBwb3NpdGl2ZSB2YWx1ZSB0byBhbGxvdwotICAgIGF1dG9ib290aW5nIHdoZW4gYSBib290Y21kIGlzIHNldC4KLQotICAgIFJlcG9ydGVkLWJ5OiBDb3JheSBUYXRlIDxDb3JheS5UYXRlQGZyZWVzY2FsZS5jb20+Ci0gICAgQ2M6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyZmIyOWM1MjBjNDJiN2JmZWYzM2VhM2ZkMTUyN2ViYTY0MDk5MTY0Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVdlZCBTZXAgMjQgMTA6NDI6MTUgMjAwOCArMDkwMAotCi0gICAgbXBjODN4eDogRml4IHR5cG8gaW4gaW5jbHVkZS9tcGM4M3h4LmgKLQotICAgIEZpeGVkIHR5cG8gZnJvbSBDT05JRkdfTVBDODM3WCB0byBDT05GSUdfTVBDODM3WAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxNjJjNDFjMDMxNzk3MjdhMWQxNDI2MmY3MDNjOWE4YmM0MDIzMWZhCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgU2VwIDIzIDA5OjM4OjQ5IDIwMDggLTA1MDAKLQotICAgIG1wYzgzeHg6IGFkZCBoL3cgZmxhc2ggcHJvdGVjdGlvbiB0byBib2FyZCBjb25maWdzCi0KLSAgICB0aGUgb3BlcmF0aW5nIHN5c3RlbSBtYXkgbGVhdmUgZmxhc2ggaW4gYSBoL3cgbG9ja2VkIHN0YXRlIGFmdGVyIHdyaXRpbmcuCi0gICAgVGhpcyBhbGxvd3MgdS1ib290IHRvIGNvbnRpbnVlIHRvIHdyaXRlIGZsYXNoIGJ5IGVuYWJsaW5nIGgvdyB1bmxvY2tpbmcKLSAgICBieSBkZWZhdWx0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQyNjE1NGM5YTY5MjU4NmI2NmViNmQxZjhlMWI2N2M3NWU0MGVhNzAKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUaHUgU2VwIDExIDIxOjM1OjM2IDIwMDggKzA0MDAKLQotICAgIG1wYzgzeHg6IHNwZF9zZHJhbTogZml4IGRkciBzZHJhbSBiYXNlIGFkZHJlc3MgYXNzaWdubWVudCBidWcKLQotICAgIFRoZSBzcGRfZHJhbSBjb2RlIHNoaWZ0cyB0aGUgYmFzZSBhZGRyZXNzLCB0aGVuIG1hc2tzIDIwIGJpdHMsIGJ1dAotICAgIGZvcmdldHMgdG8gc2hpZnQgdGhlIGJhc2UgYWRkcmVzcyBiYWNrLiBGaXggdGhpcyBieSBqdXN0IG1hc2tpbmcgdGhlCi0gICAgYmFzZSBhZGRyZXNzIGNvcnJlY3RseS4KLQotICAgIEZvdW5kIHRoaXMgYnVnIHdoaWxlIHRyeWluZyB0byByZWxvY2F0ZSBhIEREUiBtZW1vcnkgYXQgdGhlIGJhc2UgIT0gMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4ZmQ0MTY2YzQ2N2E0Njc3M2Y4MDIwOGJkYTFlYzNiNDc1Nzc0N2JjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBTZXAgMjIgMTY6MTA6NDMgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDYW55b25sYW5kczogUmVtb3ZlIHVubmVjZXNzYXJ5IEZEVCB3YXJuaW5nIHVwb24gRFRCIGZpeHVwCi0KLSAgICBEZXBlbmRpbmcgb24gdGhlIGNvbmZpZ3VyYXRpb24ganVtcGVyICJTQVRBIFNFTEVDVCIsIFUtQm9vdCBkaXNhYmxlZAotICAgIGVpdGhlciBvbmUgUENJZSBub2RlIG9yIHRoZSBTQVRBIG5vZGUgaW4gdGhlIGRldmljZSB0cmVlIGJsb2IuIFRoaXMKLSAgICBwYXRjaCByZW1vdmVzIHRoZSB1bm5lY2Vzc2FyeSBhbmQgZXZlbiBjb25mdXNpbmcgd2FybmluZywgd2hlbiB0aGUgbm9kZQotICAgIGlzIG5vdCBmb3VuZCBhdCBhbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZTI0YTFlYjE0OTBhYTA0Mzc3MGJjZjAwNjFhYzFmYWQwODY0ZmQ5Ci1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJRnJpIFNlcCAxOSAxMzozMDowNiAyMDA4ICswMjAwCi0KLSAgICBBZGQgbWlzc2luZyBkZXZpY2UgdHlwZXMgdG8gZGV2X3ByaW50KCkgaW4gcGFydC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IDVmZGMyMTVmMGIzNTFiMGMzNmNjM2Y4YTBmYTU4NTBmMjQ0NTRiZWQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBTZXAgMjIgMjI6MjM6MDYgMjAwOCArMDIwMAotCi0gICAgRml4IERQUkFNIG1lbW9yeSBsZWFrIHdoZW4gQ0ZHX0FMTE9DX0RQUkFNIGlzIGRlZmluZWQsIHdoaWNoCi0gICAgZXZlbnR1YWxseSBsZWFkcyB0byBhIG1hY2hpbmUgY2hlY2suIFRoaXMgY2hhbmdlIGFzc3VyZXMgdGhhdCBEUFJBTQotICAgIGlzIGFsbG9jYXRlZCBvbmx5IG9uY2UgaW4gdGhhdCBjYXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGEwN2ZhZjdiOWFkNWE4Njc2M2E1NzdjNzk5MjJjNGZmOWE3MGVmMjMKLUF1dGhvcjogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudHBAY3NlLXNlbWFwaG9yZS5jb20+Ci1EYXRlOglXZWQgU2VwIDE3IDE3OjU3OjM0IDIwMDggKzAyMDAKLQotICAgIEZpeCBTcGFydGFuLTMgZGVmaW5pdGlvbnMuCi0KLSAgICBBIGZldyBTcGFydGFuLTMgZGVmaW5pdGlvbnMgZXJyb25lb3VzbHkgdXNlIFNwYXJ0YW4tM0Ugc2l6ZQotICAgIGNvbnN0YW50cy4gVGhpcyBwYXRjaCBmaXhlcyB0aGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGF1cmVudCBQaW5jaGFydCA8bGF1cmVudHBAY3NlLXNlbWFwaG9yZS5jb20+Ci0KLWNvbW1pdCAyODExM2UxZjBkYTQxNDZiODIzZmZjZTM3NjgwZDMxZDU2ODVhNjBiCi1BdXRob3I6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnRwQGNzZS1zZW1hcGhvcmUuY29tPgotRGF0ZToJV2VkIFNlcCAxNyAxNzo0MTo1OCAyMDA4ICswMjAwCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlIFNwYXJ0YW4tM0UgZGVmaW5pdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnRwQGNzZS1zZW1hcGhvcmUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1YzY1ZWNmN2NkOTRkZjI1MGIyOTU2MjFmM2IyNDEzNWNiY2ZlNTc5Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVdlZCBTZXAgMTcgMTM6NDY6MTcgMjAwOCArMDIwMAotCi0gICAgc29jcmF0ZXM6IGNoYW5nZSBkZWZhdWx0IG10ZXN0IGFkZHJlc3MgcmFuZ2UKLQotICAgIFJ1bm5pbmcgbXRlc3QgY29tbWFuZCBvbiBzb2NyYXRlcyB3aXRob3V0IHNwZWNpZnlpbmcKLSAgICBhbiBhZGRyZXNzIHJhbmdlIGNyYXNoZXMgdGhlIGJvYXJkLiBUaGlzIHBhdGNoIGNoYW5nZXMKLSAgICBkZWZhdWx0IG10ZXN0IGFkZHJlc3MgcmFuZ2UgdG8gcHJldmVudCB0aGlzIGJlaGF2aW9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgZDY2NmIyZDU5Njc0YjVlMDAyYzA4MjFiN2FiODNlYzNmZjkwZDY3MAotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglXZWQgU2VwIDE3IDEyOjM0OjQ1IDIwMDggKzAyMDAKLQotICAgIHNvY3JhdGVzOiBmaXggY3Jhc2ggYWZ0ZXIgcmVsb2NhdGlvbgotCi0gICAgQ3VycmVudGx5IFUtQm9vdCBjcmFzaGVzIGFmdGVyIHJlbG9jYXRpb24gdG8gUkFNLgotICAgIENoYW5naW5nIHRoZSBDUE8gdmFsdWUgb2YgdGhlIEREUiBTRFJBTSBUSU1JTkdfQ0ZHXzIKLSAgICByZWdpc3RlciB0byBSRUFEX0xBVCArIDEgKHRvIHRoZSB2YWx1ZSBpdCB3YXMgYmVmb3JlCi0gICAgY29udmVyc2lvbiBvZiBzb2NyYXRlcyB0byBuZXcgRERSIGNvZGUpIGZpeGVzIHRoZQotICAgIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA1NjI3ODhiMGEzMDNmMzUyOGI5MjBkODFmNTQ3ZjVjYTc3YmE1MjhlCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVdlZCBTZXAgMTcgMTE6NDU6NTEgMjAwOCArMDIwMAotCi0gICAgc29jcmF0ZXM6IGZpeCBTUEQgRUVQUk9NIGFkZHJlc3MKLQotICAgIENvbW1pdCBiZTBiZDgyMzRiOTc3N2VjZDYzYzRjNjg2ZjcyYWYwNzBkODg2NTE3Ci0gICAgY2hhbmdlZCBTUEQgRUVQUk9NIGFkZHJlc3MgdG8gMHg1MSBhbmQgRERSIFNEUkFNCi0gICAgZGV0ZWN0aW9uIHN0b3BwZWQgd29ya2luZy4gQ2hhbmdlIHRoaXMgYWRkcmVzcwotICAgIGJhY2sgdG8gMHg1MC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDAyMzgyNDU0OWEzNzBiZDE4NWQ3MTI5ZDlhNmM4NmY5YmU3Yjg2YTgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIFNlcCAyMiAxMTowNjo1MCAyMDA4ICswMjAwCi0KLSAgICBSZXZlcnQgInBwYzR4eDogRml4IEREUjIgYXV0byBjYWxpYnJhdGlvbiBvbiBLaWxhdWVhIDYwME1IeiAoMjAwTUh6IFBMQikiCi0KLSAgICBUaGlzIHJldmVydHMgY29tbWl0IDNlZWMxNjBhM2E0MDViMjljZTljMDY5MjBmNjQyN2I5MDQ3ZGQ4YTguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlNThjNDFlMjZjZjNjOGFjY2Q2MDMxMWJlNTc5ZjQ1MmUzNjhlOTdlCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVRodSBTZXAgMTggMjA6MTM6MDggMjAwOCArMDkwMAotCi0gICAgdXNiOiBGaXggY29tcGlsZSB3YXJuaW5nIG9mIHI4YTY2NTk3LWhjZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBiNWQxMGExMzUyNWMwN2VjNjM3NGFkZjg0MGQ3Yzg3NTUzYjVmMTg5Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVRodSBTZXAgMTggMTk6MzQ6MzYgMjAwOCArMDkwMAotCi0gICAgc2g6IEZpeCBjb21waWxlIHdhcm5pbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDRhMDY1YWJmOTI2ZjEyOGJlYjM2ZDkzNDQ5ZGVmYTBkNjkwZTdmZWYKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJVGh1IFNlcCAxOCAxOTowNDoyNiAyMDA4ICswOTAwCi0KLSAgICBzaDogQWRkIHN1cHBvcnQgd2F0Y2hkb2cgZm9yIFNINEEgY29yZQotCi0gICAgQWRkIHN1cHBvcnQgd2F0Y2hkb2cgZm9yIFNINEEgY29yZSAoU0g3NzYzLCBTSDc3ODAgYW5kIFNINzc4NSkuCi0gICAgQW5kIGZpeCBzb21lIGNvbXBpbGUgd2FybmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGEwM2MwOWM1ZmRiODQzMGZlMmFlNmEwM2Y4OGEwY2Y3YmNjMGFhNTcKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJV2VkIFNlcCAxNyAxMTo0NToyNiAyMDA4ICswOTAwCi0KLSAgICBzaDogRml4IHR5cG8gaW4gU0ggc2VyaWFsIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDZiNDRhNDM5MjE1YmE3YzYzZjY2NmY4MDk5MjEzZWE0ZjA1ZjJiMDcKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJV2VkIFNlcCAxNyAxMTowODozNiAyMDA4ICswOTAwCi0KLSAgICBzaDogQWRkIHN1cHBvcnQgYW55IHBhZ2Ugc2l6ZSBhbmQgZW1wdHlfemVyb19wYWdlIHRvIFNIIExpbnV4IHVJbWFnZQotCi0gICAgT2xkIFUtQm9vdCBzdXBwb3J0ZWQgNEtCIHBhZ2Ugc2l6ZSBvbmx5LiBJZiB0aGlzIHZlcnNpb24sIExpbnV4Ci0gICAga2VybmVsIGNhbiBub3QgZ2V0IGNvbW1hbmQgbGluZSBmcm9tIFUtQm9vdC4KLSAgICBTSCBMaW51eCBrZXJuZWwgY2FuIGNoYW5nZSBwYWdlIHNpemUgYW5kIGVtcHR5X3plcm9fcGFnZS4KLSAgICBUaGlzIHBhdGNoIHN1cHBvcnQgdGhpcyBmdW5jdGlvbiBhbmQgZml4IHByb21sZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgY2U5Zjk5ZGRiNTk2MjhmNDFkYzUzNGU4OTIzNjhhN2Q2NmRmYzc3NAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDEzOjQwOjUyIDIwMDggKzA5MDAKLQotICAgIHNoOiByc2s3MjAzOiBBZGQgc3VwcG9ydCBwa3RfZGF0YV9wdWxsIGFuZCBwa3RfZGF0YV9wdXNoIGZ1bmN0aW9uCi0KLSAgICBBZGQgZnVuY3Rpb24gb2Ygc21jOTExeCwgcGt0X2RhdGFfcHVsbCBhbmQgcGt0X2RhdGFfcHVzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBkZDgyMGIwM2EyZjQ1ZTg2ZTc5NjBlMjY3MjlhM2I1OGUzZGRhNDRhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgU2VwIDE4IDEzOjU3OjMyIDIwMDggKzAyMDAKLQotICAgIEFEUzUxMjE6IGZpeCB0eXBvIGluICJyb290cGF0aCIgZGVmYXVsdCBzZXR0aW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzllODQzNmIxMGNjYTUzZmNhNDkwNGVjYmFkY2Q2MjMxYWQ3MmMzOAotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVR1ZSBTZXAgMTYgMTQ6NTU6NDQgMjAwOCArMDIwMAotCi0gICAgVVNCIGxheWVyIG9mIFUtQm9vdCBjYXVzZXMgVVNCIHByb3RvY29sIGVycm9ycyB3aGlsZSB1c2luZyBVU0IgbWVtb3J5IHN0aWNrcwotCi0gICAgVGhlcmUgYXJlIHNldmVyYWwgZGlmZmVyZW5jZXMgYmV0d2VlbiBMaW51eCwgV2luZG93cyBhbmQgVS1ib290IGZvciBpbml0aWFsaXNpbmcgdGhlCi0gICAgVVNCIGRldmljZXMuIFdoaWxlIGFuYWx5c2luZyB0aGUgYmVoYXZpb3VyIG9mIFUtYm9vdCBpdCB0dXJuZWQgb3V0IHRoYXQgVS1ib290IGRvZXMKLSAgICB0aGluZ3MgcmVhbGx5IGRpZmZlcmVudCwgYW5kIHNvbWUgYXJlIHdyb25nIChjb21wYXJlZCB0byB0aGUgVVNCIHN0YW5kYXJkKS4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgc29tZSBlcnJvcnM6Ci0gICAgKiBUaGUgTkVXX2luaXQgcHJvY2VkdXJlIHRoYXQgd2FzIGFscmVhZHkgaW4gdGhlIGNvZGUgaXMgZ29vZCwgd2hpbGUgdGhlIG9sZCBwcm9jZWR1cmUKLSAgICAgIGlzIHdyb25nLiBTZWUgY29kZSBjb21tZW50cyBmb3IgbW9yZSBpbmZvLgotICAgICogT24gYSBDb250cm9sIHJlcXVlc3QgdGhlIGRhdGEgcmV0dXJuZWQgYnkgdGhlIGRldmljZSBjYW4gYmUgbW9yZSB0aGFuIDggYnl0ZXMsIHdoaWxlCi0gICAgICB0aGUgaG9zdCBsaW1pdHMgaXQgdG8gOCBieXRlcy4gVGhpcyBjYXVzZWQgdGhlIGhvc3QgdG8gZ2VuZXJhdGUgYSBEYXRhT3ZlcnJ1biBlcnJvci4KLSAgICAgIFRoaXMgcmVzdWx0cyBpbiBhIGxvdCBvZiBVU0Igc3RpY2tzIG5vdCBiZWluZyByZWNvZ25pc2VkLCBhbmQgdGhlIHRyYW5zbWlzc2lvbiBlbmRlZAotICAgICAgZnJlcXVlbnRseSB3aXRoIGEgQ1RMOlRJTUVPVVQgRXJyb3IuCi0gICAgKiBBZGRlZCBhIGZsYWcgQ09ORklHX0xFR0FDWV9VU0JfSU5JVF9TRVEgdG8gYWxsb3cgdXNlcnMgdG8gdXNlIHRoZSBvbGQgaW5pdCBwcm9jZWR1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgNmY1Nzk0YTZmNzhiMzEzMjMxMjU2OTU4ZmQ3MzY3M2M2YWFjYzExNgotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVR1ZSBTZXAgMTYgMTQ6NTU6NDMgMjAwOCArMDIwMAotCi0gICAgUmVmYWN0b3JpbmcgcGFydHMgb2YgdGhlIGNvbW1vbiBVU0IgT0hDSSBjb2RlCi0KLSAgICBUaGlzIHBhdGNoIHJlZmFjdG9ycyBzb21lIGxhcmdlIHJvdXRpbmVzIG9mIHRoZSBVU0IgT0hDSSBjb2RlIGJ5Ci0gICAgbWFraW5nIHNvbWUgcm91dGluZXMgc21hbGxlciBhbmQgbW9yZSByZWFkYWJsZSB3aGljaCBoZWxwcwotICAgIGRlYnVnZ2luZyBhbmQgdW5kZXJzdGFuZGluZyB0aGUgY29kZS4gKE1ha2VzIHRoZSBjb2RlIGxvb2tzCi0gICAgc29tZXdoYXQgbW9yZSBsaWtlIHRoZSBMaW51eCBpbXBsZW1lbnRhdGlvbi4pCi0KLSAgICBBbHNvIG1hZGUgZW50aXJlIGZpbGUgY29tcGxpYW50IHRvIExpbnV4IENvZGluZyBSdWxlcyAoY2hlY2twYXRjaC5wbCBjb21wbGlhbnQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgYmUxOWQzMjRlZGMxYTFkN2YzOTNkMjRlMTBkMTY0Y2Q5NGM5MWEwMAotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVR1ZSBTZXAgMTYgMTQ6NTU6NDIgMjAwOCArMDIwMAotCi0gICAgRml4IGZvciBVU0Igc3RpY2tzIG5vdCB3b3JraW5nIG9uIEFSTSB3aGlsZSB1c2luZyBHQ0MgNC54IGNvbXBpbGVycwotCi0gICAgVGhlIEdDQy1jb21waWxlciBtYWtlcyBhbiBvcHRpbWlzYXRpb24gZXJyb3Igd2hpbGUgb3B0aW1pc2luZyB0aGUgcm91dGluZQotICAgIHVzYl9zZXRfbWF4cGFja2V0KCkuIFRoaXMgc2hvdWxkIGJlIGZpeGVkIGluIHRoZSBjb21waWxlciBpbiB0aGUgZmlyc3QgcGxhY2UsCi0gICAgYnV0IHRoZXJlIGxvdHMgb2YgY29tcGlsZXJzIG91dCB0aGVyZSB0aGF0IG1ha2VzIHRoaXMgZXJyb3IsIHRoYXQgaXQgaXMKLSAgICBwcm9iYWJseSB3aXNlciB0byB3b3JrYXJvdW5kIGl0IGluIFUtYm9vdCBpdHNlbGYuCi0KLSAgICBXaGF0IGhhcHBlbnMgaXMgdGhhdCB0aGUgcmVnaXN0ZXIgcjMgaXMgdXNlZCBhcyBsb29wLWNvdW50ZXIgJ2knLCBidXQgZ2V0cwotICAgIG92ZXJ3cml0dGVuIGxhdGVyIG9uLiBGcm9tIHRoZXJlIGl0IHN0YXJ0cyB1c2luZyByZWdpc3RlciByMyBmb3Igc2V2ZXJhbCBvdGhlcgotICAgIHRoaW5ncyBhbmQgdGhlIGFzc2VtYmxlciBjb2RlIGlzIGJlY29taW5nIGEgYmlnIG1lc3MuIFRoaXMgaXMgY2xlYXJseSBhIGNvbXBpbGVyIGJ1Zy4KLQotICAgIFRoaXMgZXJyb3Igb2NjdXJzIG9uIGF0IGxlYXN0IHNldmVyYWwgdmVyc2lvbnMgb2YgQ29kZSBTb3VyY2VyeSBMaXRlIGNvbXBpbGVycwotICAgIGZvciBBUk0uIExpa2UgdGhlIEVkaXRpb24gMjAwOHExLCBhbmQgMjAwOHEzLCBJdCBoYXMgYWxzbyBiZWVuIHNlZW4gb24gb3RoZXIKLSAgICBjb21waWxlcnMsIHdoaWxlIGNvbXBpbGluZyBmb3IgYXJtdjR0LCBvciBhcm12NXRlIHdpdGggT3MsIE8xIGFuZCBPMi4KLQotICAgIFdlIHdvcmsgYXJvdW5kIGl0IGJ5IHNwbGl0dGluZyB1cCB0aGlzIHJvdXRpbmUgaW4gMiBwYXJ0cywgYW5kIG1ha2luZyBzdXJlIHRoYXQKLSAgICB0aGUgc3BsaXQgb3V0IHBhcnQgaXMgTk9UIGlubGluZWQgYW55IGxvbmdlci4gVGhpcyB3aWxsIG1ha2UgR0NDIHNwaXQgb3V0IGFzc2VtYmxlcgotICAgIHRoYXQgZG8gbm90IHNob3cgdGhpcyBwcm9ibGVtLiBBbm90aGVyIHBvc3NpYmlsaXR5IGlzIHRvIGFkYXB0IHRoZSBNYWtlZmlsZSB0byBzdG9wCi0gICAgb3B0aW1pc2F0aW9uIGZvciB0aGUgY29tcGxldGUgZmlsZS4gSSB0aGluayB0aGlzIHNvbHV0aW9uIGlzIG5pY2VyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IDg3YjRlZjU2MGNmMmRhNGNjYzllNTk3MTFhZDFmZjdmYWZlOTY2NzAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBTZXAgMTcgMTA6MTc6NTUgMjAwOCArMDIwMAotCi0gICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHVwZGF0ZSBDSEFORUdMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzZWVjMTYwYTNhNDA1YjI5Y2U5YzA2OTIwZjY0MjdiOTA0N2RkOGE4Ci1BdXRob3I6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotRGF0ZToJVHVlIFNlcCAxNiAwNjo1OToxMyAyMDA4IC0wNzAwCi0KLSAgICBwcGM0eHg6IEZpeCBERFIyIGF1dG8gY2FsaWJyYXRpb24gb24gS2lsYXVlYSA2MDBNSHogKDIwME1IeiBQTEIpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBZGFtIEdyYWhhbSA8YWdyYWhhbUBhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjZTQ3ZWI0MDJjNWUyOWEwMjUzOTlkYzI4MjI0NjQxNGZjNDkyOTQwCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgU2VwIDE2IDEwOjA0OjQ3IDIwMDggLTA1MDAKLQotICAgIFN1cHBvcnQgZm9yIG11bHRpcGxlIFNHTUlJL1RCSSBpbnRlcmZhY2VzIGZvciBUU0VDIGV0aGVybmV0Ci0KLSAgICBGaXggVEJJIFBIWSBhY2Nlc3NlcyB0byB1c2UgdGhlIHByb3BlciBvZmZzZXQgaW4gQ1BVIHJlZ2lzdGVyIHNwYWNlLiBUaGUKLSAgICBwcmV2aW91cyBjb2RlIHdvdWxkIGluY29ycmVjdGx5IGFjY2VzcyB0aGUgVEJJIFBIWSBieSByZWFkaW5nL3dyaXRpbmcgdG8gQ1BVCi0gICAgcmVnaXN0ZXIgc3BhY2UgYXQgdGhlIHNhbWUgbG9jYXRpb24gYXMgd291bGQgYmUgdXNlZCB0byBhY2Nlc3MgZXh0ZXJuYWwgUEhZcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdjODAzYmUyZWIzY2FlMjQ1ZGVkZGE0Mzg3NzZlMDhmYjEyMjI1MGYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgMTYgMTg6MDI6MTkgMjAwOCArMDIwMAotCi0gICAgVFFNOHh4OiBGaXggQ0ZJIGZsYXNoIGRyaXZlciBzdXBwb3J0IGZvciBhbGwgVFFNOHh4IGJhc2VkIGJvYXJkcwotCi0gICAgQWZ0ZXIgc3dpdGNoaW5nIHRvIHVzaW5nIHRoZSBDRkkgZmxhc2ggZHJpdmVyLCB0aGUgY29ycmVjdCByZW1hcHBpbmcKLSAgICBvZiB0aGUgZmxhc2ggYmFua3Mgd2FzIGZvcmdvdHRlbi4KLQotICAgIEFsc28sIHNvbWUgYm9hcmRzIHdlcmUgbm90IGFkYXB0ZWQsIGFuZCB0aGUgb2xkIGxlZ2FjeSBmbGFzaCBkcml2ZXIKLSAgICB3YXMgbm90IHJlbW92ZWQgeWV0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGMwZDJmODdkNmM0NTAxMjhiODhlNzNlZWE3MTVmYTM2NTRmNjViNmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBTZXAgMTQgMDA6NTk6MzUgMjAwOCArMDIwMAotCi0gICAgUHJlcGFyZSB2MjAwOC4xMC1yYzIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmMTJlNDU0OWI2ZmIwMWNkMjY1NDM0OGFmOTVhM2M3YTZhYzE2MWU3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgU2VwIDEzIDAyOjIzOjA1IDIwMDggKzAyMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMGMzMjU2NWY1MzY2MDlkNzhmZWVmMzVjODhiYmMzOWQzYWM1M2E3MwotQXV0aG9yOiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAwOToxODozNCAyMDA4IC0wNTAwCi0KLSAgICBVcGRhdGUgbWFpbGluZyBsaXN0IGVtYWlsIGFuZCBhcmNoaXZlIGFkZHJlc3NlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IGZiNjYxZWE0NDRhZTYxZGU2MDUyMGY2NmFlODRjZGI1ZGQ1YTMyNDYKLUF1dGhvcjogdS1ib290QGJ1Z3MuZGVueC5kZSA8dS1ib290QGJ1Z3MuZGVueC5kZT4KLURhdGU6CVRodSBTZXAgMTEgMTU6NDA6MDEgMjAwOCArMDIwMAotCi0gICAgODV4eDogc29jcmF0ZXM6IGF1dG9wcm9iZSBMaW1lIGNoaXAKLQotICAgIFRoaXMgcGF0Y2ggaXMgYW4gYXR0ZW1wdCB0byBpbXBsZW1lbnQgYXV0b3Byb2JpbmcgZm9yIHRoZSBMaW1lCi0gICAgcHJlc2VuY2Ugb24gdGhlIGJ1cy4KLSAgICBDb25maWd1cmUgR1BDTSBmb3IgTGltZSBDUzIgYW5kIHRyeSB0byBhY2Nlc3MgY2hpcCBJRCByZWdpc3RlcnMuCi0gICAgU2Vjb25kIHJlYWQgYXRlbXB0IGRlbGl2ZXJzIHJlZ2lzdGVyIHZhbHVlcyBpZiB0aGUgY2hpcCBpcyBwcmVzZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgZTk5YjYwN2E1ZWM1NmNlNjZlMGJjY2NiNzg0ODBkNWUxNmZiN2JjNQotQXV0aG9yOiB1LWJvb3RAYnVncy5kZW54LmRlIDx1LWJvb3RAYnVncy5kZW54LmRlPgotRGF0ZToJVGh1IFNlcCAxMSAxNTo0MDowMSAyMDA4ICswMjAwCi0KLSAgICA4NXh4OiBzb2NyYXRlczogQWRkIHN1cHBvcnQgZm9yIG5ldyBpbWFnZSBmb3JtYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDNjMDk0YjY1MmQ0MTA3YjM0NjQxZjMwMGE4ZTlmZTE2Y2ExNWUzZDgKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVGh1IFNlcCAxMSAxNzoyODoxOCAyMDA4ICswOTAwCi0KLSAgICBzaDogRml4IGNvbXBpbGUgZXJyb3IgZm9yIHIyZHBsdXMKLQotICAgIG5ldGRldi5oIHdhcyBub3QgaW5jbHVkZSBieSByMmRwbHVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotCi1jb21taXQgNTY4NDRhMjJiNzZjNzE5ZTYwMDA0N2UyM2I4MDQ2NWE0NGQ3NmFiZAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBTZXAgMTEgMDg6MTE6MjMgMjAwOCArMDIwMAotCi0gICAgcG93ZXJwYzogRml4IGJvb3RtIHRvIGJvb3QgdXAgYWdhaW4gd2l0aCBhIFJhbWRpc2sKLQotICAgIENvbW1pdCAyYTFhMmNiNiBkaWRudCByZW1vdmUgdGhlIGR1bW15IG1lbSByZXNlcnZhdGlvbiBpbiBmZHRfY2hvc2VuLAotICAgIGFuZCB0aGlzIHN0b3BwZWQgTGludXggZnJvbSBib290aW5nIHdpdGggYSBSYW1kaXNrLiBUaGlzIHBhdGNoIGZpeGVzCi0gICAgdGhpcywgYnkgZGVsZXRpbmcgdGhlIHVzZWxlc3MgZHVtbXkgbWVtIHJlc2VydmF0aW9uLgotCi0gICAgV2hlbiBib290aW5nIHdpdGggYSBSYW1kaXNrLCBhIGZpeCBvZmZzZXQgRkRUX1JBTURJU0tfT1ZFUkhFQUQgaXMgbm93Ci0gICAgYWRkZWQgdG8gb2Zfc2l6ZSwgc28gd2UgZG9udCBuZWVkIGFueW1vcmUgYSBkdW1teSBtZW0gcmVzZXJ2YXRpb24uCi0KLSAgICBJIG1lYXN1cmVkIHRoZSB2YWx1ZSBvZiBGRFRfUkFNRElTS19PVkVSSEVBRCBvbiBhIE1QQzgyNzAgYmFzZWQKLSAgICBzeXN0ZW0gKD0weDQ0IGJ5dGVzKSBhbmQgcm91bmRlZCBpdCB1cCB0byAweDgwKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmM5YzE3MjdiNWIzNDgzY2U0OWMzY2I2NjhlODMzMmZiMDAxYjhhNwotQXV0aG9yOiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+Ci1EYXRlOglNb24gU2VwIDggMDI6NDY6MTMgMjAwOCArMDIwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIExaTUEgdW5jb21wcmVzc2lvbiBhbGdvcml0aG0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDAwMDhiNmQ5NjgxNjBhYmUyYmZkOTM2NDkzZjNhNTE2YTdjOGRhMjAKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglGcmkgSnVuIDI3IDIzOjA0OjIwIDIwMDggKzA0MDAKLQotICAgIGZzbF9lbGJjX25hbmQ6IGVjY2xheW91dCBjbGVhbnVwcwotCi0gICAgVGhpcyBwYXRjaCBkZWxldGVzIG9vYmF2YWlsIGFzc2lnbm1lbnRzLCB0aGV5J3JlIGNhbGN1bGF0ZWQgYnkgdGhlIG5hbmQKLSAgICBjb3JlIGNvZGUgaW4gbmFuZF9zY2FuX3RhaWwsIHBsdXMgY3VycmVudCBvb2JhdmFpbCB2YWx1ZXMgYXJlIHdyb25nIGZvcgotICAgIHRoZSBMUCBOQU5Ecy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFdvb2Rob3VzZSA8RGF2aWQuV29vZGhvdXNlQGludGVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhmNDJiZjFjMzkzZDUzYTcwYzI1NDVlOWYzMjlkMTFjNDZkNzQ3OTQKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglGcmkgSnVuIDI3IDIzOjA0OjEzIDIwMDggKzA0MDAKLQotICAgIGZzbF9lbGJjX25hbmQ6IGltcGxlbWVudCBzdXBwb3J0IGZvciBmbGFzaC1iYXNlZCBCQlQKLQotICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBmbGFzaC1iYXNlZCBCQlQgZm9yIGNoaXBzIHdvcmtpbmcKLSAgICB0aHJvdWdoIEVMQkMgTkFORCBjb250cm9sbGVyLCBzbyB0aGF0IE5BTkQgY29yZSB3aWxsIG5vdCBoYXZlIHRvIHJlLXNjYW4KLSAgICBmb3IgYmFkIGJsb2NrcyBvbiBldmVyeSBib290LgotCi0gICAgQmVjYXVzZSBFTEJDIGNvbnRyb2xsZXIgbWF5IHByb3ZpZGUgSFctZ2VuZXJhdGVkIEVDQ3Mgd2Ugc2hvdWxkIGFkanVzdAotICAgIGJidCBwYXR0ZXJuIGFuZCBiYnQgdmVyc2lvbiBwb3NpdGlvbnMgaW4gdGhlIE9PQiBmcmVlIGFyZWEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBXb29kaG91c2UgPERhdmlkLldvb2Rob3VzZUBpbnRlbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5N2FlMDIzNjQ4ZTc2NGY3OTRmZmI5YzUyZGExMDlkNmNhZjA5YzQ3Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJRnJpIEp1biAyNyAyMzowNDowNCAyMDA4ICswNDAwCi0KLSAgICBmc2xfZWxiY19uYW5kOiBmaXggT09CIHdvcmthYmlsaXR5IGZvciBsYXJnZSBwYWdlIE5BTkQgY2hpcHMKLQotICAgIEZvciBsYXJnZSBwYWdlIGNoaXBzLCBuYW5kX2JidCBpcyBsb29raW5nIGludG8gT09CIGFyZWEsIGFuZCBjaGVja2luZwotICAgIGZvciAiMHhmZiAweGZmIiBwYXR0ZXJuIGF0IE9PQiBvZmZzZXQgMC4gVGhhdCBpcywgdHdvIGJ5dGVzIHNob3VsZCBiZQotICAgIHJlc2VydmVkIGZvciBiYnQgbWVhbnMuCi0KLSAgICBCdXQgRUxCQyBkcml2ZXIgaXMgc3BlY2lmeWluZyBlY2NsYXlvdXQgc28gdGhhdCBvb2JmcmVlIGFyZWEgc3RhcnRzIGF0Ci0gICAgb2Zmc2V0IDEsIHNvIG9ubHkgb25lIGJ5dGUgbGVmdCBmb3IgdGhlIGJidCBwdXJwb3Nlcy4KLQotICAgIFRoaXMgY2F1c2VzIHByb2JsZW1zIHdpdGggYW55IE9PQiB1c2VycywgbmFtZWx5IEpGRlMyOiBhZnRlciBmaXJzdCBtb3VudAotICAgIEpGRlMyIHdpbGwgZmlsbCBhbGwgT09CcyB3aXRoICJlcmFzZWQgbWFya2VyIiwgc28gT09CcyB3aWxsIGNvbnRhaW46Ci0KLSAgICAgIE9PQiBEYXRhOiBmZiAxOSA4NSAyMCAwMyAwMCBmZiBmZiBmZiAwMCAwMCAwOCBmZiBmZiBmZiBmZgotICAgICAgT09CIERhdGE6IGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmIGZmCi0gICAgICBPT0IgRGF0YTogZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYgZmYKLSAgICAgIE9PQiBEYXRhOiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZiBmZgotCi0gICAgQW5kIG9uIHRoZSBuZXh0IGJvb3QsIE5BTkQgY29yZSB3aWxsIHJlc2NhbiBmb3IgYmFkIGJsb2NrcywgdGhlbiB3aWxsCi0gICAgc2VlICIweGZmIDB4MTkiIHBhdHRlcm4sIGFuZCB3aWxsIG1hcmsgYWxsIGJsb2NrcyBhcyBiYWQgb25lcy4KLQotICAgIFRvIGZpeCB0aGUgaXNzdWUgd2Ugc2hvdWxkIGltcGxlbWVudCBvdXIgb3duIGJhZCBibG9jayBwYXR0ZXJuOiBqdXN0IG9uZQotICAgIGJ5dGUgYXQgT09CIHN0YXJ0LiBUaG91Z2gsIHRoaXMgd2lsbCB3b3JrIG9ubHkgZm9yIHg4IGNoaXBzLiBGb3IgeDE2Ci0gICAgY2hpcHMgdHdvIGJ5dGVzIG11c3QgYmUgY2hlY2tlZC4gU2luY2UgRUxCQyBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCB4MTYKLSAgICBOQU5EcyAoeWV0KSwgd2UncmUgc2FmZSBmb3Igbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgV29vZGhvdXNlIDxEYXZpZC5Xb29kaG91c2VAaW50ZWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzIzOGFkYTMxMzA1N2E4NTQwOTQ4NWI4ZWUyMTUxNWRjMTBjMDdhNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCAxMiAxMzo1MjoyMSAyMDA4ICswMjAwCi0KLSAgICBNUEM1MTJ4OiByZWR1Y2UgdGltZW91dCB3YWl0aW5nIGZvciBFdGhlcm5ldCBhdXRvbmVnb3RpYXRpb24gdG8gMi41cwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGIxODQxMGU1MDhhMTJiYTBhMTc3ZGZjMmEzODY4NTdjODA2ZmE5NmQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IFNlcCAxMSAxMzowNTo1NiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEVuYWJsZSBkZXZpY2UgdHJlZSAoRkRUKSBzdXBwb3J0IGluIHpldXMgYm9hcmQgcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgN2JmNWVjZmE1MDcyMmE5ZmViNDVlYThmMDRkYTc1ZjVkNDA2ZjIwYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgU2VwIDEwIDE2OjUzOjQ3IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IFNEUkFNIGluaXRpdGlhbGl6YXRpb24gb2YgbXVsdGlwbGUgNDA1IGJhc2VkIGJvYXJkIHBvcnRzCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBpbnRyb2RpY2VkIHdpdGggcGF0Y2gKLSAgICBiYmVmZjMwYyBbcHBjNHh4OiBSZW1vdmUgc3VwZXJmbHVvdXMgZHJhbV9pbml0KCkgY2FsbCBvciByZXBsYWNlIGl0IGJ5Ci0gICAgaW5pdGRyYW0oKV0uCi0KLSAgICBUaGUgYm9hcmRzIGFmZmVjdGVkIGFyZToKLSAgICAtIFBDSTQwNQotICAgIC0gUFBDaGFtZWxlb25FVkIKLSAgICAtIHF1YWQxMDBoZAotICAgIC0gdGFpaHUKLSAgICAtIHpldXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDYxNzM3YzU5YTMyODVmNmZhZGY5NmE1ODM2ODc5ODk4YzA0ZWMyOGQKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglUaHUgU2VwIDExIDE5OjQxOjI2IDIwMDggLTA0MDAKLQotICAgIHBwYzR4eDogQWRkIC5naXRpZ25vcmUgZmlsZSB0byB4aWxpbngtcHBjNDQwIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmJlYzQ5OGVkMTE2NGE1OGNkODQzN2I1NjFiZGM0NTUxZDY5ZjliZgotQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLURhdGU6CVRodSBTZXAgMTEgMTk6NDE6MjUgMjAwOCAtMDQwMAotCi0gICAgcHBjNHh4OiBGaXggY29tcGlsYXRpb24gb2YgdjVmeDMwdGV2YWxfZmxhc2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDRiZWQ5ZGVlYmJkN2VlNmYwYmE3NDZiNDRkNDdhOTIyMTU2Zjc0MDQKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglXZWQgU2VwIDEwIDE3OjQ0OjMwIDIwMDggLTA0MDAKLQotICAgIHBwYzR4eDogRml4IGluLXRyZWUgYnVpbGQgZm9yIHBwYzQ0MC1nZW5lcmljIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDZjNGFiNTBmNWNjZmI1NWVhMmRkMzI0YWEyOGIyYjA2MTAyZTQxNgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NyAyMDA4ICswMjAwCi0KLSAgICBBUk06IHN5bmNocm9uaXplIG1hY2gtdHlwZXMuaCB3aXRoIGxpbnV4IDIuNi4yNy1yYzYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAzZWU5ZjAzZjU4OGFkNjA1ZTNmZDEwNTMwMjM3ZjllM2UyZTdhYjRjCi1BdXRob3I6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KLURhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDcgMjAwOCArMDIwMAotCi0gICAgYXQ5MXJtOTIwMDogZml4IGVycm9ycyB3aXRoIENPTkZJR19DTURfSTJDX1RSRUUKLQotICAgIFRoaXMgcGF0Y2ggcHJldmVudHMgbGlua2VyIGVycm9yIG9uIEFUOTFSTTkyMDAgYm9hcmRzLCBpZgotICAgIENPTkZJR19DTURfSTJfVFJFRSBpcyBzZXQuCi0gICAgSXQgaW1wbGVtZW50cyBpMmNfc2V0X2J1c19zcGVlZCBhbmQgaTJjX2dldF9idXNfc3BlZWQgYXMgYSBkdW1teSBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgU2NoYXJzaWcgPGVzd0BidXMtZWxla3Ryb25pay5kZT4KLQotY29tbWl0IGI1YjAzNDQ5NTdkMzJlM2QwN2E4ZGQ3MmZjZTY0ZmI0OGU2ODBiYTQKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQ3IDIwMDggKzAyMDAKLQotICAgIEFSTSBEYVZpbmNpOiBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gY3B1L2FybTkyNmVqcy9kYXZpbmNpL2RwODM4NDguYwotCi0gICAgQVJNIERhVmluY2k6IFJlbW92ZSBkdXBsaWNhdGUgY29kZSBpbiBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvZHA4Mzg0OC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLQotY29tbWl0IDAzZGI1MzMzNWM4ZWJhNjU2YTdjNDRkMTU1NWIxYTQ1MTQzODNlMzMKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDYgMjAwOCArMDIwMAotCi0gICAgbWFrZTogUmVtb3ZlIHJlZHVuZGFudCBfX0FSTV9fIGFkZGl0aW9uIHdoZW4gY3Jvc3MtY29tcGlsaW5nIG9uICpCU0QKLQotICAgIF9fQVJNX18gaXMgZ2l2ZW4gYnkgYXJtX2NvbmZpZy5tayBhdXRvbWF0aWNhbGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDhjYzYyYTdkOWM3N2Y4ZWY1MTY2ZmI1NzMyMmM0YTZkZGFjMzIwYjQKLUF1dGhvcjogQ2xhdWRpbyBTY29yZGlubyA8Y2xhdWRpb0BldmlkZW5jZS5ldS5jb20+Ci1EYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQ2IDIwMDggKzAyMDAKLQotICAgIEZpeCBNQUNIX1RZUEUgZm9yIHRoZSBBVDkxUk05MjAwREsgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBDbGF1ZGlvIFNjb3JkaW5vIDxjbGF1ZGlvQGV2aWRlbmNlLmV1LmNvbT4KLQotY29tbWl0IDI3NDczN2U1ZWIyNWIyYmNkM2FmM2E5NmRhOTIzZWZmZDU0MzI4NGYKLUF1dGhvcjogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgotRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NiAyMDA4ICswMjAwCi0KLSAgICBpLm14IGNoYW5nZSBnZXRfdGltZXIoYmFzZSkgdG8gcmV0dXJuIHRpbWUgc2luY2UgYmFzZQotCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIGdldF90aW1lcigpIGZvciBpLk1YIHRvIHJldHVybiB0aGUgdGltZSBzaW5jZQotICAgICdiYXNlJyBpbnN0ZWFkIG9mIHRoZSB0aW1lIHNpbmNlIHRoZSBjb3VudGVyIHdhcyBhdCB6ZXJvLgotCi0gICAgU3ltcHRvbSBzZWVuIGlzIGZsYXNoIHRpbWVvdXQgZXJyb3JzIHdoZW4gZXJhc2luZyBvciBwcm9ncmFtbWluZyBhCi0gICAgc2VjdG9yIHVzaW5nIHRoZSBjb21tb24gY2ZpIGZsYXNoIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Ci0KLWNvbW1pdCA0OGZlZDQwNTc1YjNlOGVhZTk2MGViMDE0MTUwOWRkZDlhNzMwMTJhCi1BdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KLURhdGU6CUZyaSBTZXAgMTIgMDI6MjA6NDYgMjAwOCArMDIwMAotCi0gICAgaS5NWCB1c2UgdS1ib290IGJhdWQgcmF0ZSBhbmQgZG9uJ3QgYXNzdW1lIFVBUlQgbWFzdGVyIGNsb2NrCi0KLSAgICAxKSBDaGFuZ2UgdGhlIGkuTVggc2VyaWFsIGRyaXZlciB0byB1c2UgdGhlIGJhdWQgcmF0ZSBzZXQgaW4gdGhlCi0gICAgIHUtYm9vdCBlbnZpcm9ubWVudAotCi0gICAgMikgZG9uJ3QgYXNzdW1lIGEgMTZNSHogdmFsdWUgZm9yIFBFUkNMSzEgaW4gYmF1ZCByYXRlIGNhbGN1bGF0aW9ucwotCi0gICAgMykgZG9uJ3Qgd3JpdGUgYSAxIHRvIHRoZSBSRFIgYml0IGluIHRoZSBVU1IyIHJlZy4gKGJpdCBpcyBub3QgIndyaXRlCi0gICAgIG9uZSB0byBjbGVhciIgbGlrZSBvdGhlciBzdGF0dXMgYml0cyBpbiB0aGUgcmVnLikKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KLQotY29tbWl0IDZlMTU1MWE4NzBkMzYwODA1YjlkMTcyZGM1NmQ5MzUwNjRhYmU3MWQKLUF1dGhvcjogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgotRGF0ZToJRnJpIFNlcCAxMiAwMjoyMDo0NiAyMDA4ICswMjAwCi0KLSAgICBhcm05MjB0IGZpeCBjb25zdGFudCBlcnJvciBpbiBzdGFydC5TCi0KLSAgICBDb2RlIGluIGNwdS9hcm05MjB0L3N0YXJ0LlMgd2lsbCBkaWUgd2l0aCBhIGNvbXBpbGF0aW9uIGVycm9yIGlmCi0gICAgQ09ORklHX1NUQUNLU0laRSArIENGR19NQUxMT0NfTEVOIHdvcmtzIG91dCB0byBhbiBpbnZhbGlkIGNvbnN0YW50IGZvcgotICAgIHRoZSBBUk0gc3ViIGluc3RydWN0aW9uLiAgQ2hhbmdlIHRoZSBjb2RlIHNvIHRoYXQgZWFjaCBpcyBzdWJ0cmFjdGVkCi0gICAgaW5kZXBlbmRlbnRseSB0byBhdm9pZCB0aGUgZXJyb3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Ci0KLWNvbW1pdCBiMjMyNTM4MzVmODcxY2Q5YmQ4ZTk1NWI5YTk3MWQxOGE3ZDRmZjU2Ci1BdXRob3I6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Ci1EYXRlOglGcmkgU2VwIDEyIDAyOjIwOjQwIDIwMDggKzAyMDAKLQotICAgIEFSTSBPTUFQIDogQ29ycmVjdCBJbnZhbGlkIFRpbWVyIFJlZ2lzdGVyIEZpZWxkIERlY2xhcmF0aW9uIGluIG9tYXAxNTEwLmggJiBvbWFwNzMwLmgKLQotICAgIC0gQ29ycmVjdCBJbnZhbGlkICNkZWZpbmUgb2YgTVBVVElNX1BUVl9NQVNLIGZvcgotICAgICAgIG9tYXAxNTEwICYgb21hcDczMCByZWdpc3RlciBkZWZpbml0aW9uCi0KLSAgICAgTVBVVElNX1BUVl9NQVNLIGlzIGRlZmluZWQgYXMKLSAgICAgI2RlZmluZSBNUFVUSU1fUFRWX01BU0sJCSgweDc8PFBUVl9CSVQpCi0KLSAgICAgd2hpbGUgaXQgc2hvdWxkIGhhdmUgYmVlbgotICAgICAjZGVmaW5lIE1QVVRJTV9QVFZfTUFTSwkJKDB4Nzw8TVBVVElNX1BUVl9CSVQpCi0KLSAgICAtIEJlbG93IFBhdGNoIGNvcnJlY3RzIHRoZSBzYW1lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Ci0KLWNvbW1pdCBjNDU1ZDA3Mzk2ZGRkYzk4NjRmZDhkYmI5NjVlZTEwZmU5NWNlOGNmCi1BdXRob3I6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgotRGF0ZToJRnJpIEp1bCAxOCAxMTo1MjowMiAyMDA4IC0wNDAwCi0KLSAgICBTZXQgdXAgU0QvTU1DIE9DUiBhcyBjb21tZW50IGRlc2NyaWJlcy4gaS5lLiAzLjItMy40di4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgotCi1jb21taXQgZWIxNjEzNWRmMjA1MzViMGQxOTk2OWY1MGZiNWJkMTdmOTVlOWMyNQotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDI4IDEyOjI1OjExIDIwMDggKzAyMDAKLQotICAgIGkuTVgzMTogZG9jdW1lbnQgdGltZXIgcHJlY2lzaW9uIG9wdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgMWE2MzM3YjAxMzUxYjgyYTQ1YjBkZWZhNzZmMDg3NDQ1MTFjNTgwYgotQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgQXVnIDI5IDEwOjM2OjE4IDIwMDggKzAyMDAKLQotICAgIGkuTVgzMTogTWFrZSB0aGUgU1BJIGJ1cyBhbmQgY2hpcCBzZWxlY3QgY29uZmlndXJhYmxlIGZvciBNQzEzNzgzCi0KLSAgICBUaGUgaS5NWDMxIGhhcyB0aHJlZSBTUEkgYnVzZXMgYW5kIGVhY2ggYnVzIGhhcyBzZXZlcmFsIGNoaXAgc2VsZWN0cwotICAgIGFuZCB0aGUgTUMxMzc4MyBjaGlwIGNhbiBiZSBjb25uZWN0ZWQgdG8gYW55IG9mIHRoZXNlLiBUaGUgY3VycmVudAotICAgIFJUQyBkcml2ZXIgZm9yIE1DMTM3ODMgaXMgaGFyZGNvZGVkIGZvciBDU1BJMi9TUzIuCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIG1ha2UgTUMxMzc4MyBTUEkgYnVzIGFuZCBjaGlwIHNlbGVjdCBjb25maWd1cmFibGUKLSAgICB2aWEgQ09ORklHX01DMTM3ODNfU1BJX0JVUyBhbmQgQ09ORklHX01DMTM3ODNfU1BJX0NTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotCi1jb21taXQgOGM0ZWJlYzI1YjIxZTM1NWI4NDg4Njk4ZWMxNTk0ZGE5NzAxZmZmNAotQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci1EYXRlOglGcmkgQXVnIDI5IDEwOjM2OjE3IDIwMDggKzAyMDAKLQotICAgIGkuTVgzMTogQWRkIHJlc2V0X3RpbWVyKCkgYW5kIG1vZGlmeSBnZXRfdGltZXJfbWFza2VkKCkuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHJlc2V0X3RpbWVyKCkgZnVuY3Rpb24gKG5lZWRlZCBieSBuYW5kX2Jhc2UuYykgYW5kCi0gICAgbW9kaWZpZXMgdGhlIGdldF90aW1lcl9tYXNrZWQoKSB0byB3b3JrIGluIHRoZSBzYW1lIHdheSBhcyB0aGUgb21hcDI0eHgKLSAgICBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IGRlZWVjNDk5MWE1NWRlMjQzNzg3MDAyZWRlMjRkMjMzMWQyMzRmYzgKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDkgMjAwOCArMDIwMAotCi0gICAgYXAzMjVyeGE6IHJlbW92ZSBkdXBsaWNhdGUgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBhM2EwOGMwY2VkZDMyOWVkZjUyNTZlMWQ2YjJiYWQwZmNhMDAyNzI1Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA5IDIwMDggKzAyMDAKLQotICAgIGJvb3RtIGFybS9hdnIzMi9ibGFja2Zpbi9taWNyb2JsYXplL25pb3MyL3NoOiByZW1vdmUgbm8gbW9yZSBuZWVkICdlcnJvcicgbGFiZWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwZThkMTU4NjY0YTkxMzM5MmNiMDFmYjExYTk0OGQ4M2Y3MmUxMDVlCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA2IDIwMDggKzAyMDAKLQotICAgIHJlbmFtZSBDRkdfRU5WIG1hY3JvcyB0byBDT05GSUdfRU5WCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMWVkZTc4NzEwYzNiZjlhZDZmNGE1M2FhZGRjM2JjYzg2ZmVkZDlkZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowNSAyMDA4ICswMjAwCi0KLSAgICBudmVkaXQ6IHJlbmFtZSBlcnJvciBjb21tZW50IHRvIENPTkZJR19FTlZfSVNfSU5fCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYjY0Yjc3NWU3NTQ2ZWQxMzhkZjM2MGNlYjNhNzFlZTM1OGNiOWEwMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowNSAyMDA4ICswMjAwCi0KLSAgICBjbWRfbWVtOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOGE0MGZiMTQ4ZWZhNDQyZDY1MjZlYWM0NmEyMDAxZTRjNjRkMjhmZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowNSAyMDA4ICswMjAwCi0KLSAgICBtb3ZlIGNtZF9nZXRfZGF0YV9zaXplIHRvIGNvbW1hbmQuYwotCi0gICAgYWRkIENNRF9EQVRBX1NJWkUgbWFjcm8gdG8gZW5hYmxlIGl0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTA3NjQxZDI0OTE5ODA1MzE5MzJiOWYyNWRhYjM3ZmU1ZTZjM2ExYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowNCAyMDA4ICswMjAwCi0KLSAgICBlbnZfZmxhc2g6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA1YTFhY2ViMDY4OWUyZjczMTQ5MTgzODk3MDg4NGE2NzNlZjdlN2QzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjA0IDIwMDggKzAyMDAKLQotICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX0ZMQVNIIGluIENPTkZJR19FTlZfSVNfSU5fRkxBU0gKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA3ZDliNWJhZTViYTU1OGM3NDY0ZDg5ZDAzM2FjYTA0YWNhZjAxMTcyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAzIDIwMDggKzAyMDAKLQotICAgIGNsZWFudXAgdXNlIG9mIENGR19FTlZfSVNfSU5fRkxBU0gKLQotICAgIC0gI2lmIENGR19FTlZfSVNfSU5fRkxBU0gKLSAgICAtICNpZiAoQ0ZHX0VOVl9JU19JTl9GTEFTSCA9PSAxKQotICAgIC0gI2RlZmluZSBDRkdfRU5WX0lTX0lOX0ZMQVNIIDAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwY2Y0ZmQzY2Y4ZDBlMDA2MDViZWM1ZmM1NmY4OWM2NDE1MDE1YTQ2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAxIDIwMDggKzAyMDAKLQotICAgIHJlbmFtZSBlbnZpcm9ubWVudC5jIGluIGVudl9lbWJlZGRlZC5jIHRvIHJlZmxlY3QgaXMgZnVuY3Rpb25hbGl0eQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGMwODc4YWY2ZTMyZjBmZDhlMTNhNmNhMzE1YjlhZGQ2NDQ0MTExNWEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDEgMjAwOCArMDIwMAotCi0gICAgZW52X25vd2hlcmU6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5M2Y2ZDcyNTQ0ZGE0NTEwYTE0NmJjNGM5M2Q2MDliMDExNmNkZTM3Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAwIDIwMDggKzAyMDAKLQotICAgIHJlbmFtZSBDRkdfRU5WX0lTX05PV0hFUkUgaW4gQ09ORklHX0VOVl9JU19OT1dIRVJFCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjU1NmVmNzgxMTNiNWYwODlkZmNhYzVkYTkwYmYzMWRkNTY4Mzk3YgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0ODowMCAyMDA4ICswMjAwCi0KLSAgICBlbnZfc2Y6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwYjUwOTlhODQxOWJmOWM4MjhkZjVlM2UyYzY4NzhkYzMwMGQ5OGUzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ4OjAwIDIwMDggKzAyMDAKLQotICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX1NQSV9GTEFTSCBpbiBDT05GSUdfRU5WX0lTX0lOX1NQSV9GTEFTSAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDU1YzVmNDk5MTBlYzgyMjUzNDdhYTFkMjExMzUyYTg0ZGU2NjQ5YjQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBTZXAgMTAgMjI6NDg6MDAgMjAwOCArMDIwMAotCi0gICAgZW52X29uZW5hbmQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5NjU2MTM4ZmYxYTM0ZDRjNDc2OGRiNmI0OTBkZWZmYzQwZWU2NzRiCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU5IDIwMDggKzAyMDAKLQotICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX09ORU5BTkQgaW4gQ09ORklHX0VOVl9JU19JTl9PTkVOQU5ECi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOTU3YTBlNjk1NzU2ODNlZmQ3MGFjZTE0Nzc0NmJiYjNkOGU3YzUwMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0Nzo1OSAyMDA4ICswMjAwCi0KLSAgICBlbnZfbnZyYW06IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5MzE0Y2VlNjkxNzQ0NGFiODhiZDRlNzU4ZGE3YTMwOTc1MTIwMTg3Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU5IDIwMDggKzAyMDAKLQotICAgIHJlbmFtZSBDRkdfRU5WX0lTX0lOX05WUkFNIGluIENPTkZJR19FTlZfSVNfSU5fTlZSQU0KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwNmY2MTM1NDM5NzkxMWE0YzEyMWRmYTUxYjZjY2JmN2UzMDBkNDhiCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgU2VwIDEwIDIyOjQ3OjU5IDIwMDggKzAyMDAKLQotICAgIGVudl9uYW5kOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTFiZmVlMTkyMDk5MjA2YTQzOTdmMTVmM2I5MzUxNmUwMWY1OGFiMAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0Nzo1OCAyMDA4ICswMjAwCi0KLSAgICByZW5hbWUgQ0ZHX0VOVl9JU19JTl9OQU5EIGluIENPTkZJR19FTlZfSVNfSU5fTkFORAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGQ4Y2MwNGQwYWM5YzdjMGQxMjQ1NDcwOGFhZjU0ODlmODUzMmJiZjkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTggMjAwOCArMDIwMAotCi0gICAgZW52X2RhdGFmbGFzaDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDA1N2M4NDljNDViOWVlMTlkZjhmZjNhY2RlZWU2NmJlNTI4MTk5NjIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBTZXAgMTAgMjI6NDc6NTggMjAwOCArMDIwMAotCi0gICAgcmVuYW1lIENGR19FTlZfSVNfSU5fREFUQUZMQVNIIGluIENPTkZJR19FTlZfSVNfSU5fREFUQUZMQVNICi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDEwMzRiYzhkYjYwZmE2YmQ0MTkzMjhiYWY2YTc1Y2IwNjQ1Y2VlOAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIFNlcCAxMCAyMjo0Nzo1MiAyMDA4ICswMjAwCi0KLSAgICBjbWRfZWVwcm9tOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYmY1YTc3MTBlYzcwZTkwZTk4ZjQ1MWI0YmEwZWI2NWY5ZmZjMzRlYgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIFNlcCA1IDA5OjE5OjU0IDIwMDggKzAyMDAKLQotICAgIGVudl9lZXByb206IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiYjFmOGI0ZjhiYjBiZmNlNTJlMGZhYTQ2MzdiOTc1Yjc0NTgyNGIzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgU2VwIDUgMDk6MTk6MzAgMjAwOCArMDIwMAotCi0gICAgcmVuYW1lIENGR19FTlZfSVNfSU5fRUVQUk9NIGluIENPTkZJR19FTlZfSVNfSU5fRUVQUk9NCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMzI2MjhjNTAwODEwNWE3MzIyMTIwMDNkODNiNzVmMDVlNTI0M2JiMgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEF1ZyAzMCAyMzo1NDo1OCAyMDA4ICswMjAwCi0KLSAgICBjbWRfbWFjOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBmaW5pc2ggcmVtYW5pbmcgQ0ZHX0lEX0VFUFJPTSBpbiBDT05GSUdfSURfRUVQUk9NCi0gICAgc3RhcnQgaW4gY29tbWl0IGFkOGY4Njg3Yjc4YzNlOTE3YjE3M2YwMzg5MjY2OTUzODNjNTU1NTUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlNTY0OGFjYWIxNTNmMGY0MjliZmM3MTQ5MDJjNWFhYTc4NzlmNzFiCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgQXVnIDMwIDIzOjQ3OjQxIDIwMDggKzAyMDAKLQotICAgIGNtZF9mZGM6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAyZDAyZDkxZDUzMGU4MzFmMmRhYjIyODA4NTk2M2ZjMWQ1YjcxY2IwCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgQXVnIDMwIDIzOjQ3OjM4IDIwMDggKzAyMDAKLQotICAgIGNvbW1vbi9NYWtlZmlsZTogYWRkIGNvcmUgY29tbWFuZCBzZWN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMGQ5MmQ0YTY5OWZiMWEzOTM4MWQ5ODU3MWRjNTFmYjk3ZTViY2Y5ZQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEF1ZyAzMCAyMzoyOTo1NyAyMDA4ICswMjAwCi0KLSAgICBjbWRfdmZkOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNjY0NDY0MWQwNzJhZWUzMDg3ZGExMjlkODQ0MzE4NzE5NmE0ZDhhOQotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBTZXAgMTAgMTE6NDg6NDkgMjAwOCAtMDUwMAotCi0gICAgZGVsdGEsIHp5bG9uaXRlOiBVcGRhdGUgbmFuZF9vb2JpbmZvIHRvIG5hbmRfZWNjbGF5b3V0LgotCi0gICAgVGhpcyBpcyBwYXJ0IG9mIHRoZSBzd2l0Y2ggdG8gbmV3ZXIgdXBzdHJlYW0gTVREIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDliMDVhYTc4OGJmZGQzMjY0ZmYxYmM5NDE4Y2IxOTU1MGE3MjM0ZTQKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglTYXQgQXVnIDMwIDE3OjA2OjU1IDIwMDggLTA0MDAKLQotICAgIEFSTSBEYVZpbmNpOiBGaXggYnJva2VuIEhXIEVDQyBmb3IgbGFyZ2UgcGFnZSBOQU5ELgotCi0gICAgQmFzZWQgb24gb3JpZ2luYWwgcGF0Y2ggYnkgQmVybmFyZCBCbGFja2hhbSA8YmVybmFyZEBsYXJnZXN0cHJpbWUubmV0PgotCi0gICAgVS1ib290J3MgSFcgRUNDIHN1cHBvcnQgZm9yIGxhcmdlIHBhZ2UgTkFORCBvbiBEYXZpbmNpIGlzIGNvbXBsZXRlbHkKLSAgICBicm9rZW4uICBTb21lIGtlcm5lbHMsIHN1Y2ggYXMgdGhlIDIuNi4xMCBvbmUgc3VwcG9ydGVkIGJ5Ci0gICAgTW9udGFWaXN0YSBmb3IgRGFWaW5jaSwgcmVseSB1cG9uIHRoaXMgYnJva2VuIGJlaGF2aW91ciBhcyB0aGV5Ci0gICAgc2hhcmUgdGhlIHNhbWUgY29kZSBmb3IgRUNDcy4gSW4gdGhlIGV4aXN0aW5nIHNjaGVtZSwgZXJyb3IKLSAgICBkZXRlY3Rpb24gKm1pZ2h0KiB3b3JrIG9uIGxhcmdlIHBhZ2UsIGJ1dCBlcnJvciBjb3JyZWN0aW9uCi0gICAgZGVmaW5pdGVseSBkb2VzIG5vdC4gIFNtYWxsIHBhZ2UgRUNDIGNvcnJlY3Rpb24gd29ya3MsIGJ1dCB0aGUKLSAgICBmb3JtYXQgaXMgbm90IGNvbXBhdGlibGUgd2l0aCB0aGUgbWFpbmxpbmUgZ2l0IGtlcm5lbC4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBFQ0MgY29kZSB0aGF0IG1hdGNoZXMgd2hhdCBpcyBjdXJyZW50bHkgaW4gdGhlCi0gICAgRGF2aW5jaSBnaXQgcmVwb3NpdG9yeSAoc2luY2UgTkFORCBzdXBwb3J0IHdhcyBhZGRlZCBpbiAyLjYuMjQpLgotICAgIFRoaXMgbWFrZXMgdGhlIEVDQyBhbmQgT09CIGxheW91dCB3cml0dGVuIGJ5IHUtYm9vdCBjb21wYXRpYmxlIHdpdGgKLSAgICBMaW51eCBmb3IgYm90aCBzbWFsbCBwYWdlIGFuZCBsYXJnZSBwYWdlIGRldmljZXMgYW5kIGZpeGVzIEVDQwotICAgIGNvcnJlY3Rpb24gZm9yIGxhcmdlIHBhZ2UgZGV2aWNlcy4KLQotICAgIFRoZSBvbGQgYmVoYXZpb3VyIGNhbiBiZSByZXN0b3JlZCBieSBkZWZpbmluZyB0aGUgbWFjcm8KLSAgICBDRkdfREFWSU5DSV9CUk9LRU5fRUNDLCB3aGljaCBpcyB1bmRlZmluZWQgYnkgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotICAgIEFja2VkLWJ5OiBTZXJnZXkgS3VidXNoeW4gPGtzaUBrb2k4Lm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBiN2M1NjM5ODkxZjQxMDNhMGUzMWVjN2FlMGJlYjNlOTdlZDM4MzYKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglXZWQgU2VwIDEwIDExOjE1OjI4IDIwMDggKzAyMDAKLQotICAgIG11YXMzMDAxOiB1cGRhdGUgQlI0IHNldHRpbmdzCi0KLSAgICBBbHNvIHNldCB1cCB0aGUgcG9ydCBwaW5zIGZvciB1c2luZyBJMkMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDM1OTEyOTM1MDllMGMwYmNmMjQ0YjBmOTc0Nzc1YmZmMmUyNTY5N2UKLUF1dGhvcjogUGV0cmkgTGVodGluZW4gPHBldHJpLmxlaHRpbmVuQGlub2kuZmk+Ci1EYXRlOglXZWQgU2VwIDEwIDA5OjQzOjQ5IDIwMDggKzAzMDAKLQotICAgIGF1dG9zY3I6IEZpeCBvbmUtY2hhcmFjdGVyIGxpbmVzIGFuZCBub24tbmV3bGluZSB0ZXJtaW5hdGVkIHNjcmlwdHMKLQotICAgIFdoZW4gbm90IHVzaW5nIGh1c2gsIHRoZSBhdXRvc2NyIGNvbW1hbmQgbm93IGV4ZWN1dGVzIGxpbmVzIHRoYXQgYXJlCi0gICAgb25seSBvbmUgY2hhcmFjdGVyIGxvbmcuIEl0IGFsc28gcnVucyB0aGUgbGFzdCBsaW5lIG9mIHNjcmlwdHMgZXZlbiBpZgotICAgIGl0IGRvZXMgbm90IGVuZCBpbiBhIG5ld2xpbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRyaSBMZWh0aW5lbiA8cGV0cmkubGVodGluZW5AaW5vaS5maT4KLQotY29tbWl0IDllYmJiNTRmN2EyNTA1NTAxMGZhNjY2OGViYTQwYzcyYTRjNGY5ODUKLUF1dGhvcjogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+Ci1EYXRlOglUdWUgU2VwIDkgMTU6MTM6MjkgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBBbGxvdyBEVFRfSTJDX0RFVl9DT0RFIGNvbmZpZ3VyZWQgYnkgQ0ZHX0kyQ19EVFRfQUREUgotCi0gICAgT24gQU1DQyBBcmNoZXMgYm9hcmQgRFRUX0kyQ19ERVZfQ09ERSBpcyBkaWZmZXJlbnQgdGhlbiBjYW55b25sYW5kcwotICAgIGFuZCBnbGFjaWVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+Ci0KLWNvbW1pdCAyNDVmNmVmM2UxMTgyOGNiNDYxODhlMzk2ZmIxZTY3ZjdiMDdjZDAzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJTW9uIFNlcCA4IDEwOjIxOjExIDIwMDggKzAyMDAKLQotICAgIG11YXMzMDAxOiBhZGRlZCBzdXBwb3J0IGZvciB0aGUgTE03NSBzZW5zb3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDRhMDJhMmRjYTgyYWVhYjhmODM5ZGI5ZGQzNWZkYTlkNTQxMmRhY2IKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglNb24gU2VwIDggMTA6MjA6MTkgMjAwOCArMDIwMAotCi0gICAgbXVhczMwMDE6IGFjdGl2YXRlIFdEVCBmb3IgdGhlIG11YXMzMDAxIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBhNTVkMDc0ZGFjMjRkYzk0MWYxYWZiNWI0ZTk0YjE1MDliZmRkYTRlCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJTW9uIFNlcCA4IDEwOjE5OjM2IDIwMDggKzAyMDAKLQotICAgIG11YXMzMDAxOiBhZGRlZCA2NE1CIFNEUkFNIGF1dG9kZXRlY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDUyNTE0Njk5NDM4OTVkZTRiYjlhMDRkNTA1MzM1MmNjMjJhY2I3ZDUKLUF1dGhvcjogQW5kcmV3IEtsb3NzbmVyIDxhbmRyZXdAY2VzYS5vcGJ1Lnhlcm94LmNvbT4KLURhdGU6CVRodSBBdWcgMjEgMDc6MTI6MjYgMjAwOCAtMDcwMAotCi0gICAgRml4IHByaW50ZiBlcnJvcnMgdW5kZXIgLURERUJVRwotCi0gICAgRml4IHByaW50ZiBmb3JtYXQtc3RyaW5nL2FyZyBtaXNtYXRjaGVzIHVuZGVyIC1EREVCVUcuCi0KLSAgICBUaGVzZSB3YXJuaW5ncyBvY2N1ciB3aXRoIERFQlVHIGRlZmluZWQgZm9yIGEgcGxhdGZvcm0gdXNpbmcKLSAgICBjcHUvbXBjODV4eC4gIFVzZXJzIG9mIG90aGVyIGFyY2hpdGVjdHVyZXMgY2FuIHVuZWFydGggc2ltaWxhcgotICAgIHByb2JsZW1zIGJ5IGFkZGluZyB0aGUgbGluZSAiQ0ZMQUdTICs9IC1EREVCVUc9MSIgaW4gY29uZmlnLm1rIHJpZ2h0Ci0gICAgYWZ0ZXIgIkNGTEFHUyArPSAkKGNhbGwgY2Mtb3B0aW9uLC1mbm8tc3RhY2stcHJvdGVjdG9yKSIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgS2xvc3NuZXIgPGFuZHJld0BjZXNhLm9wYnUueGVyb3guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhiOWU0Nzg3NjQxNzE5ZDcwOWJmYTJlYmViNzJlOGJkNDk1MmJlZTcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgOSAyMzo1NToxOCAyMDA4ICswMjAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HLCBwcmVwYXJlIDIwMDgtMTAtcmMxIHJlbGVhc2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlMGZmM2QzNTBkNmI3OTYwZGViNWE4ODFkZmM1YWNmM2E2M2VmNjc2Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gU2VwIDggMDg6NTE6MjkgMjAwOCAtMDUwMAotCi0gICAgODV4eDogRW5zdXJlIHRpbWViYXNlIGlzIHplcm8gb24gc2Vjb25kYXJ5IGNvcmVzCi0KLSAgICBUaGUgZTUwMHVtIHNheXMgdGhlIHRpbWViYXNlIGlzIHZvbGF0aWxlIG91dCBvZiByZXNldC4gIFRvIGVuc3VyZQotICAgIFRCIHN5bmMgd29ya3Mgd2UgbmVlZCB0byBtYWtlIHN1cmUgaXRzIHplcm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTRiNGFiM2M5NjFhMjAxMmExYzJhMDljMjU5YTYzNDMzMjNlYzU1MQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIFNlcCA5IDIyOjE4OjI0IDIwMDggKzAyMDAKLQotICAgIGJvb3RtX2xvYWRfb3M6IGZpeCBsb2FkX2VuZCBkZWJ1ZyBtZXNzYWdlCi0KLSAgICBwcmludCBsb2FkX2VuZCB2YWx1ZSBub3QgcG9pbnRlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDFkOWFmMGJlNzY0OTYwZTZjYzFjMDkzZTk3MTc2YzM1NDI3OTY4MjAKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBTZXAgOSAyMjoxODoyMyAyMDA4ICswMjAwCi0KLSAgICBib290bTogZW5hYmxlIGZkdCBzdXBwb3J0IG9ubHkgb24gcHBjLCBtNjhrIGFuZCBzcGFyYwotCi0gICAgLi4uYXMgZG9uZSBpbiBpbWFnZS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzQ4YjUyNzRlNzZmODFkZjg1Y2ZjZmZhZmZlZGMzMjM2NzhkMDYyMwotQXV0aG9yOiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgotRGF0ZToJVHVlIFNlcCA5IDE4OjUxOjA1IDIwMDggKzAyMDAKLQotICAgIGNvbW1vbi9jbWRfbWVtLmM6IHJlbW92ZSBuZXN0ZWQgI2lmIGRlZmluZWQoQ09ORklHX0NNRF9NRU1PUlkpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgotCi1jb21taXQgNjUwNjMyZmU0Y2EwOWNmZDBlNWU2YTU5M2YyZWZjMDJlZjg3YTU4YwotQXV0aG9yOiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgotRGF0ZToJVHVlIFNlcCA5IDE3OjMxOjQ2IDIwMDggKzAyMDAKLQotICAgIGdpdGlnbm9yZTogYWRkIHRhZ3MgZmlsZXMgYW5kIFZpbSBzd2FwIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBIZWlkZWxiZXJnIDxtYXJrdXMuaGVpZGVsYmVyZ0B3ZWIuZGU+Ci0KLWNvbW1pdCAxZDliNjdiMjNmY2E2YTI1MTU0MzMzNzMzMjA0MzM5ODAyNTEwNzIwCi1BdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBTZXAgOSAxNzo1Mjo0NyAyMDA4ICswOTAwCi0KLSAgICBhZGQgYm9hcmRfZXRoX2luaXQoKSBmb3Igc2g3Nzg1bGNyIGJvYXJkCi0KLSAgICBGaXggdGhlIHByb2JsZW0gdGhhdCBjYW5ub3Qgd29yayBSVEw4MTY5IG9uIHNoNzc4NWxjciBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLQotY29tbWl0IDdiN2E4NjlhOGJhM2JkNmQ5YmZmYjc0OGM5MTIzMjE0MTMzMGY1MTQKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgNiAxNjowODo0MSAyMDA4IC0wNTAwCi0KLSAgICBtdGQ6IFNQSSBGbGFzaDogU3VwcG9ydCB0aGUgU1RNaWNybyBGbGFzaAotCi0gICAgQWRkIE1URCBTUEkgRmxhc2ggc3VwcG9ydCBmb3IgTTI1UDE2LCBNMjVQMjAsIE0yNVAzMiwKLSAgICBNMjVQNDAsIE0yNVA2NCwgTTI1UDgwLCBNMjVQMTI4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRiYzA3YzM2ODA3NjU2MGVkN2ZhNGM5Zjk4N2M3MWE4NTIxNDg4YTkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgOSAxNzo1NTozMSAyMDA4ICswMjAwCi0KLSAgICB0cmFiOiBmaXggYnVpbGQgcHJvYmxlbSBhZnRlciBjaGFuZ2UgdG8gdXNlIGRvX2RpdigpCi0KLSAgICBXZSBtdXN0IGxpbmsgd2l0aCBsaWJnZW5lcmljIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzYjIwZmQ4M2M3M2MyMmFjZmNiMGM2NjYzYmU3NDdiZDVjOGI3MDExCi1BdXRob3I6IFJ5YW4gQ0hFTiA8cnlhbi5jaGVuQHN0LmNvbT4KLURhdGU6CVdlZCBBdWcgMjAgMTM6MDA6MTcgMjAwOCAtMDQwMAotCi0gICAgQ29ycmVjdCBkcnZfdXNiX2tiZF9pbml0IGZ1bmN0aW9uCi0KLSAgICBUaGUgcGF0Y2ggaXMgdGhhdCBjaGVjayBpZiB1c2JfZ2V0X2Rldl9pbmRleCgpIGZ1bmN0aW9uIHJldHVybiB2YWxpZAotICAgIHBvaW50ZXIuIElmIHZhbGlkLCBjb250aW51ZS4gT3RoZXJ3aXNlIHJldHVybiAtMS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJ5YW4gQ2hlbiA8cnlhbi5jaGVuQHN0LmNvbT4KLSAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IGViYTFmMmZjNzVmMTI4YTlhNmMxMzI4ZDc4Njk5NmE5M2ZkN2E3MDcKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglXZWQgQXVnIDIwIDExOjIyOjAyIDIwMDggKzAyMDAKLQotICAgIE1ha2UgdXNiLXN0b3AoKSBzYWZlIHRvIGNhbGwgbXVsdGlwbGUgdGltZXMgaW4gYSByb3cuCi0KLSAgICBBIHJlY2VudCBjb21taXQgKDkzNjg5N2Q0ZDEzNjU0NTJiYmJkZjg0MzBkYjVlNzc2OWVmMDhkMzgpCi0gICAgZW5hYmxlZCB0aGUgdXNiX3N0b3AoKSBjb21tYW5kIGluIGNvbW1vbi9jbWRfYm9vdG0uYyB3aGljaCB3YXMKLSAgICBub3QgZW5hYmxlZCBmb3Igc29tZSB0aW1lLCBiZWNhdXNlIG5vIGJvYXJkIGRpZCBhY3R1YWxseSBzZXQgdGhlCi0gICAgQ0ZHX0NNRF9VU0IgZmxhZy4gU28sIG5vdyB0aGUgdXNiX3N0b3AoKSBpcyBleGVjdXRlZCBiZWZvcmUKLSAgICBsb2FkaW5nIHRoZSBsaW51eCBrZXJuZWwuCi0KLSAgICBIb3dldmVyLCB0aGUgdXNiX29oY2kgZHJpdmVyIGhhbmdzIHVwIChhdCBsZWFzdCBvbiBBVDkxU0FNKSBpZiB0aGUKLSAgICBkcml2ZXIgaXMgc3RvcHBlZCB0d2ljZSAoZS5nLiB0aGUgcGVyaXBoZXJhbCBjbG9jayBpcyBzdG9wcGVkIG9uIEFUOTEpLgotICAgIElmIHNvbWUgb3RoZXIgcGllY2Ugb2YgY29kZSBjYWxscyB1c2Jfc3RvcCgpIGJlZm9yZSB0aGUgYm9vdG0gY29tbWFuZCwKLSAgICB0aGlzIGNvbW1hbmQgd2lsbCBoYW5ndXAgdGhlIHN5c3RlbSBkdXJpbmcgYm9vdC4KLSAgICAodXNiIHN0YXJ0IGFuZCBzdG9wIGlzIHR5cGljYWxseSB1c2VkIHdoaWxlIGJvb3RpbmcgZnJvbSB1c2IgbWVtb3J5IHN0aWNrKQotCi0gICAgQnV0LCBzdG9wcGluZyB0aGUgdXNiIHN0YWNrIHR3aWNlIGlzIHVzZWxlc3MgYW55d2F5LCBhbmQgYSBmbGFnIGFscmVhZHkKLSAgICBleGlzdGVkIHRoYXQga2VwdCB0cmFjayBvbiB0aGUgdXNiX2luaXQoKS91c2Jfc3RvcCgpIGNhbGxzLgotICAgIFNvLCB3ZSBub3cgY2hlY2sgaWYgdGhlIHVzYiBzdGFjayBpcyByZWFsbHkgc3RhcnRlZCBiZWZvcmUgd2Ugc3RvcCBpdC4KLQotICAgIFRoaXMgcHJvYmxlbSBpcyBub3cgZml4ZWQgaW4gYm90aCB0aGUgdXBwZXIgYXMgbG93LWxldmVsIGxheWVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCAyYzhjY2YyNzI4ZjVlNjdkOTkxY2VjZjc2YzQwNTdkYjc1YTg3YjY3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgU2VwIDkgMTY6NTU6NDcgMjAwOCArMDIwMAotCi0gICAgTWFrZWZpbGU6IGZpeCBidWcgaW50cm9kdWNlZCBieSBjb21taXQgNDdmZmQ2YzIKLQotY29tbWl0IDg4MGY2YTVkNzU5NmY0MmRiNWZmODgwM2I3OTdiNzhlYzViMTQ2ZTAKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglUdWUgU2VwIDkgMTA6MDA6MzMgMjAwOCAtMDQwMAotCi0gICAgcHBjNHh4OiBwcGM0NDAtZ2VuZXJpYy1BTEw6IEZpeCBvdXQgb2YgdHJlZSBidWlsZCB2MgotCi0gICAgVGhpcyBwYXRjaCBzb2x2ZXMgdGhlIHByb2JsZW1zIGNvbXBpbGluZyBtbDUwNywgdjVmeDMwdGV2YWwgYW5kCi0gICAgcHBjNDQwLWdlbmVyaWMgb3V0IG9mIHRyZWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLQotY29tbWl0IDQ3YmViZTM0Y2E0ZTMzYmFiMGU4MjJlNGNlZWJiZWMyNTkwY2NiY2IKLUF1dGhvcjogTsOtY29sYXMgQ2FybmVpcm8gTGViZWRlbmNvIDxuaWNvbGFzLmxlYmVkZW5jb0B0YXNrc2lzdGVtYXMuY29tLmJyPgotRGF0ZToJVGh1IFNlcCA0IDE1OjM1OjQ2IDIwMDggLTAzMDAKLQotICAgIEZpeCBkZXZfcHJpbnQgd2hlbiBjYWxsZWQgZnJvbSB1c2Jfc3Rvcl9pbmZvICh1c2Igc3RvcmFnZSBjb21tYW5kKQotCi0gICAgRml4IG91dHB1dCBvZiB0aGUgdXNiIHN0b3JhZ2UgY29tbWFuZC4gSXQgd2FzIHByaW50aW5nICJEZXZpY2UgMDogbm90Ci0gICAgYXZhaWxhYmxlIiBiZWNhdXNlIElGX1RZUEVfVVNCIHdhcyBub3QgaW5jbHVkZWQgaW50byB0aGUgc3dpdGNoCi0gICAgc3RhdGVtZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljb2xhcyBMZWJlZGVuY28gPG5pY29sYXMubGViZWRlbmNvQHRhc2tzaXN0ZW1hcy5jb20uYnI+Ci0KLWNvbW1pdCBhNGYyNDM0NTJjYzhjZTBjMmM5YjUxYTI1MjBkYjRiZGU1ZjQ3MmRlCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgU2VwIDkgMTI6NTg6MTYgMjAwOCArMDIwMAotCi0gICAgRklUOiBtYWtlIGltaW5mbyBjaGVjayBoYXNoZXMgb2YgYWxsIGltYWdlcyBpbiBGSVQsIHJldHVybiAxIG9uIGZhaWxlZCBjaGVjawotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDkxOWY1NTBkYzExYTEzYWJmMDFjNmJjNzEzYzk2OGRlNzkwYjhkN2MKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBTZXAgOSAxMjo1ODoxNSAyMDA4ICswMjAwCi0KLSAgICBGSVQ6IGFkZCBhYmlsaXR5IHRvIGNoZWNrIGhhc2hlcyBvZiBhbGwgaW1hZ2VzIGluIEZJVCwgaW1wcm92ZSBvdXRwdXQKLQotICAgIC0gYWRkIGZ1bmN0aW9uIGZpdF9hbGxfaW1hZ2VfY2hlY2tfaGFzaGVzKCkgdGhhdCB2ZXJpZmllcyBpZiBhbGwKLSAgICAgIGhhc2hlcyBvZiBhbGwgaW1hZ2VzIGluIHRoZSBGSVQgYXJlIHZhbGlkCi0gICAgLSBpbXByb3ZlIG91dHB1dCBvZiBmaXRfaW1hZ2VfY2hlY2tfaGFzaGVzKCkgd2hlbiB0aGUgaGFzaCBjaGVjayBmYWlscwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDFkZTFmYTQwODk2N2NlZjY4MDRiYjA0NmI5MDQxMTQ1MTliYjM2ZjAKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBTZXAgOCAyMDo1NDozOSAyMDA4ICswMjAwCi0KLSAgICBxZW11X21pcHM6IFVwZGF0ZSBsaW51eCBib290bSB0byBzdXBwb3J0IGR5bmFtaWMgY21kbGluZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGY1ZWQ5ZTM5MDg4ZWNmYTVhNWYzZWY0N2IwOGU1YmRhNzg5MGQ3NjQKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CU1vbiBTZXAgOCAxNDo1Njo0OSAyMDA4IC0wNTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgYm9vdGluZyBvZiBJTlRFR1JJVFkgb3BlcmF0aW5nIHN5c3RlbSB1SW1hZ2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNzJmMWI2NWYxYjY4YmM2ZWQwZDE4MmVkYTFmM2Q2Y2Y1MWI2NDE0YQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIFNlcCA4IDIxOjAxOjI5IDIwMDggKzAyMDAKLQotICAgIG1pcHMvYm9vdG06IEZpeCB0eXBvIGluIGNvbW1pdCBjNGY5NDE5YywgImluaXRyZF9zdGFydCIgcmVwbGFjZWQgYnkgImltYWdlcy0+cmRfc3RhcnQiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOWJhMmUyYzgxOTEzNTNkNzViMmQ1MzVlNjcyYTEyNWJlN2I4NGMwMwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIFNlcCA4IDEzOjU3OjEyIDIwMDggLTA1MDAKLQotICAgIFJlbW92ZSBzdXBwb3J0IGZvciBib290aW5nIEFSVE9TIGltYWdlcwotCi0gICAgUGFudGVsaXMgQW50b25pb3Ugc3RhdGVkOgotCUFGQUlLLCBpdCBpcyBzdGlsbCB1c2VkIGJ1dCB0aGUgcHJvZHVjdHMgdXNpbmcgUFBDIGFyZSBsb25nIGdvbmUuCi0JTnVrZSBpdCBwbHogKGZyb20gb3JiaXQpLgotCi0gICAgU28gcmVtb3ZlIGl0IHNpbmNlIGl0IGNsZWFucyB1cCBhIHVzYWdlIG9mIGVudl9nZXRfY2hhciBvdXRzaWRlIG9mCi0gICAgdGhlIGVudmlyb25tZW50IGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDdmZmQ2YzJmYzcyYjQ2ZGFhOWQ1ZDU5ZWVkYjg5NGZhYjJiN2VlMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIFNlcCA5IDE1OjQ1OjE4IDIwMDggKzAyMDAKLQotICAgIE1ha2VmaWxlOiBjb21waWxlIGFuZCBsaW5rIGVhY2ggbW9kdWxlIGp1c3Qgb25jZQotCi0gICAgU2V2ZXJhbCBzb3VyY2UgZmlsZXMgbmVlZCB0byBiZSBjb21waWxlZCBhbmQgbGlua2VkIHdoZW4gb25lIG9yIG1vcmUKLSAgICBjb25maWcgb3B0aW9ucyBhcmUgc2VsZWN0ZWQuIFRvIGFsbG93IGZvciBlYXN5IHNlbGVjdGlvbiBpbiB0aGUKLSAgICBNYWtlZmlsZXMgeWV0IHRvIGF2b2lsZCBtdWx0aXBsZSBjb21waWxhdGlvbiAod2hpY2ggY29zdHMgYnVpbGQgdGltZSkKLSAgICBhbmQgZXNwZWNpYWxseSBtdWx0aXBsZSBsaW5raW5nICh3aGljaCBjYXVzZXMgZXJyb3JzKSwgd2UgdXNlCi0gICAgIkNPQkpTID0gJChzb3J0IENPQkpTLXkpIiB3aGljaCBlbGltaW5hdGVzIGR1cGxpY2F0ZXMuCi0KLSAgICBCeSBjb3VydGVzeSBvZiBEZXRsZXYgWnVuZGVsIHdobyBzdWdnZXN0ZWQgdGhpcyBhcHByb2FjaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0OGQwMTkyZmU4Njk5NDhmZWYxNGI0NjBiNWYwYzg1YmNhOTMzNjkzCi1BdXRob3I6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgotRGF0ZToJTW9uIFNlcCA4IDE0OjMwOjUzIDIwMDggKzAyMDAKLQotICAgIE1vdmVkIGNvbmRpdGlvbmFsIGNvbXBpbGUgaW50byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBFbmdlbCA8YW5kcmVhcy5lbmdlbEBlcmljc3Nvbi5jb20+Ci0KLWNvbW1pdCAyMGM5MjI2Y2I4Y2FiMDhhMTExZWU3M2RiMDRlNjJkOTQzZWUwYzk3Ci1BdXRob3I6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgotRGF0ZToJTW9uIFNlcCA4IDEwOjE3OjMxIDIwMDggKzAyMDAKLQotICAgIE1lcmdlZCBzZXJpYWxfcGwwMTAuYyBhbmQgc2VyaWFsX3BsMDExLmMuCi0KLSAgICBUaGV5IG9ubHkgZGlmZmVyIGluIHRoZSBpbml0IGZ1bmN0aW9uLgotICAgIFRoaXMgYWxzbyBhZGRzIHRoZSBtaXNzaW5nIHdhdGNoZG9nIHN1cHBvcnQgZm9yIHRoZSBQTDAxMS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgotCi1jb21taXQgMDgxN2Q2ODhmMzA3ZWUyYzA1OThlNzkxNzVjOTRhNDBjZTkwMzM3YgotQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLURhdGU6CVN1biBTZXAgNyAxNzoxMDoyNyAyMDA4IC0wNDAwCi0KLSAgICBSZW1vdmUgZ2FwIGZpbGwgaW4gc3JlYyBvYmplY3QgdjIKLQotICAgIFNSRUMgZmlsZXMgZG8gbm90IG5lZWQgZ2FwIGZpbGw6IFRoZSBsb2FkIGFkZHJlc3MgaXMgc3BlY2lmaWVkIGluIHRoZQotICAgIGZpbGUuIE9uIHRoZSBvdGhlciBoYW5kLCBpdCBjYW4ndCBiZSBhdm9pZGVkIGluIGEgLmJpbiBvYmplY3QuIEl0IGhhcwotICAgIG5vIGluZm9ybWF0aW9uIGFib3V0IG1lbW9yeSBsb2NhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotCi1jb21taXQgMWRjMzA2OTMxY2E1Y2U4N2YxMzkxNmZhNzE2NWIwNTJkM2FhNzE0ZgotQXV0aG9yOiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgotRGF0ZToJU3VuIFNlcCA3IDIwOjE4OjI3IDIwMDggKzAyMDAKLQotICAgIFJFQURNRTogZml4IG1pc3Npbmcgc3ViZGlyZWN0b3J5IGluIHRoZSBkb2N1bWVudGF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgSGVpZGVsYmVyZyA8bWFya3VzLmhlaWRlbGJlcmdAd2ViLmRlPgotCi1jb21taXQgM2VmOTZkZWQzOGE4ZDMzYjU4YjlmYWI5Y2Q4NzlkNTFkZGFjNGNiZAotQXV0aG9yOiBHcmFlbWUgUnVzcyA8Z3JhZW1lLnJ1c3NAZ21haWwuY29tPgotRGF0ZToJU3VuIFNlcCA3IDA3OjA4OjQyIDIwMDggKzEwMDAKLQotICAgIFVwZGF0ZSBpMzg2IGNvZGUgKHNjNTIwX2NkcCkKLQotICAgIEF0dGVtcHQgdG8gYnJpbmcgaTM4NiAvIHNjNTIwIGlubGluZSB3aXRoIG1hc3RlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhZW1lIFJ1c3MgPGdyYWVtZS5ydXNzQGdtYWlsLmNvbT4KLQotY29tbWl0IDU2MDg2OTIxMDRlZmE4ZDU2ZGY4MDNkYzc5ZWE0MWFjMzYwN2VlZTUKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVGh1IFNlcCA0IDEzOjAxOjQ5IDIwMDggKzAyMDAKLQotICAgIGZ3X2VudjogYWRkIE5BTkQgc3VwcG9ydAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGVudmlyb25tZW50IGluIE5BTkQgd2l0aCBhdXRvbWF0aWMgTk9SIC8gTkFORCByZWNvZ25pdGlvbiwKLSAgICBpbmNsdWRpbmcgdW5hbGlnbmVkIGVudmlyb25tZW50LCBiYWQtYmxvY2sgc2tpcHBpbmcsIHJlZHVuZGFudCBlbnZpcm9ubWVudAotICAgIGNvcHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCBkZDc5NDMyM2EyYTFlZDZhOGE1ZGY1MTc4NWMzMWJjZGU2MGFkN2NhCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIFNlcCA5IDA5OjUwOjI0IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIG9mIENQQ0k0MDUgdmFyaWFudHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1OWY2MzA1ODhlM2ZkYmQ2OThhMGEyNzk4ZTUyYTg5MjRlODk5NTYzCi1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgQXVnIDE1IDE1OjQyOjExIDIwMDggKzAyMDAKLQotICAgIFJlbW92ZWQgaGFyZGNvZGVkIE14TVIgbG9vcCB2YWx1ZSBmcm9tIHVwbWNvbmZpZygpIGZvciBNUEM4NXh4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IGU2NDk4N2E4OTIzNTNmM2Q0OWViMjQyZDk5NzgyMGVmOGY1Mzg5MTIKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjoxMyAyMDA4ICswMjAwCi0KLSAgICA4NXh4OiBzb2NyYXRlczogRW5hYmxlIExpbWUgc3VwcG9ydC4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBMaW1lIEdEQyBzdXBwb3J0IHRvZ2V0aGVyIHdpdGggc3VwcG9ydCBmb3IgdGhlIFBXTQotICAgIGJhY2tsaWdodCBjb250cm9sIHRocm91Z2ggdGhlIHc4Mzc4MmQgY2hpcC4gIFRoZSByZXNldCBwaW4gb2YgdGhlCi0gICAgbGF0dGVyIGlzIGF0dGFjaGVkIHRvIEdQSU8sIHNvIHdlIG5lZWQgdG8gcmVzZXQgaXQgaW4KLSAgICBlYXJseV9ib2FyZF9pbml0X3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCAzZTc5YjU4OGI1MTk5ZjM1MDE2ZjE3OGZjMGQ1ZDEyNjYzODIwOTdmCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjoxMiAyMDA4ICswMjAwCi0KLSAgICA4NXh4OiBTb2NyYXRlczogTWFqb3IgY29kZSB1cGRhdGUuCi0KLSAgICAtIFVwZGF0ZSB0aGUgbG9jYWwgYnVzIHJhbmdlcyBpbiB0aGUgRkRUIGZvciBMaW51eCBmb3IgdGhlIHZhcmlvdXMKLSAgICAgIGRldmljZXMgY29ubmVjdGVkIHRvIHRoZSBsb2NhbCBidXMgdmlhIGNoaXAtc2VsZWN0LgotCi0gICAgLSBTZXQgdGhlIExDUlJfREJZUCBiaXQgaW4gdGhlIExDUlIgZm9yIGxvY2FsIGJ1cyBmcmVxdWVuY2llcwotICAgICAgbG93ZXIgdGhhbiA2NiBNSHogYW5kIHVzZXMgSS9PIGFjY2Vzc29yIGZ1bmN0aW9ucyBjb25zZXF1ZW50bHkuCi0KLSAgICAtIFVQTSBkYXRhIHVwZGF0ZS4KLQotICAgIC0gVXBkYXRlIG9mIGRlZmF1bHQgZW52aXJvbm1lbnQgYW5kIGNvbmZpZ3VyYXRpb24uCVVzZSBJMkMgbXVsdGlidXMKLSAgICAgIGFzIHdlIGRvIGhhdmUgdHdvIEkyQyBidXNlcy4gIEFsc28gZW5hYmxlIHNkcmFtIGFuZCBleHQyIGNvbW1hbmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IGU4ZDE4NTQxYzZjZWFiODIxZjc1ZmFhYjAzMTc0MGIzM2ZkYmZhNGIKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMTggMTY6NTI6MjMgMjAwOCArMDIwMAotCi0gICAgVXBkYXRlIEZyZWVzY2FsZSA4NXh4IGJvYXJkcyB0byBzeXNfZWVwcm9tLmMKLQotICAgIFRoZSBuZXcgc3lzX2VlcHJvbS5jIHN1cHBvcnRzIGJvdGggdGhlIG9sZCBDQ0lEIEVFUFJPTSBmb3JtYXQgYW5kIHRoZSBuZXcgTlhJRAotICAgIGZvcm1hdCwgYW5kIHNvIGl0IG9ic29sZXRlcyBib2FyZC9mcmVlc2NhbGUvY29tbW9uL2Nkc19lZXByb20uYy4gIEZyZWVzY2FsZQotICAgIDg2eHggYm9hcmRzIGFscmVhZHkgdXNlIHN5c19lZXByb20uYywgc28gdGhpcyBwYXRjaCBtaWdyYXRlcyB0aGUgcmVtYWluaW5nCi0gICAgRnJlZXNjYWxlIDg1eHggYm9hcmRzIHRvIHVzZSBpdCBhcyB3ZWxsLiAgY2RzX2VlcHJvbS5jIGlzIGRlbGV0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWFiMmJmMDIwMmM4NjIyN2UzZGNjOGE1YjU4OTQ2MDg3ZWJjYzFhZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIFNlcCA5IDEwOjA4OjAyIDIwMDggKzAyMDAKLQotICAgIGxpYl9wcGMvaW50ZXJydXB0cy5jOiBtYWtlIGJvYXJkX3Nob3dfYWN0aXZpdHkoKSBhIHdlYWsgZnVuY3Rpb24KLQotICAgIFRoaXMgYWxsb3dzIHRvIHVzZSBzaG93X2FjdGl2aXR5KCkgd2l0aG91dCBoYXZpbmcgdG8KLSAgICBkZWZpbmUgYW4gZW1wdHkgYm9hcmRfc2hvd19hY3Rpdml0eSgpIGZ1bmN0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGZlODc2Nzg3Zjg3NDM4ODNjZTU4ZmVkNjE1MjVlYWEyZjM0ZGE0YzUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgOSAxMDowNjo0NCAyMDA4ICswMjAwCi0KLSAgICBzdHh4dGM6IHJlbW92ZSBlbXB0eSBDT05GSUdfU0hPV19BQ1RJVklUWSBmdW5jdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA5NjVkZTEwNmJhODkwMDM3MmM4YjE2ZGM2MGQ1YWNhYjdmOTI1ZTM4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgU2VwIDkgMTA6MDM6NDcgMjAwOCArMDIwMAotCi0gICAgTkVUVEEyOiByZW1vdmUgZW1wdHkgQ09ORklHX1NIT1dfQUNUSVZJVFkgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNmNjNjRmOWI1ZjY5MjM5YzhiMTk2OTU3MmI1YTNhNGFhYjdkZTViOQotQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotRGF0ZToJRnJpIEF1ZyAxNSAxNTo0MjoxMSAyMDA4ICswMjAwCi0KLSAgICBSZW1vdmVkIGhhcmRjb2RlZCBNeE1SIGxvb3AgdmFsdWUgZnJvbSB1cG1jb25maWcoKSBmb3IgTVBDODV4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCAzNjI0MWNhMjlkNDgwNGExMDA2ZmIzZjI2MDY5ZWZmZGE1MjAyNTgxCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMTUgMTU6NDI6MTMgMjAwOCArMDIwMAotCi0gICAgODV4eDogc29jcmF0ZXM6IEVuYWJsZSBMaW1lIHN1cHBvcnQuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgTGltZSBHREMgc3VwcG9ydCB0b2dldGhlciB3aXRoIHN1cHBvcnQgZm9yIHRoZSBQV00KLSAgICBiYWNrbGlnaHQgY29udHJvbCB0aHJvdWdoIHRoZSB3ODM3ODJkIGNoaXAuICBUaGUgcmVzZXQgcGluIG9mIHRoZQotICAgIGxhdHRlciBpcyBhdHRhY2hlZCB0byBHUElPLCBzbyB3ZSBuZWVkIHRvIHJlc2V0IGl0IGluCi0gICAgZWFybHlfYm9hcmRfaW5pdF9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgN2E0Nzc1M2RkY2FlYmJmMjE0MjgwOTg0MmY3MGM1ZjcyM2JkOWRkYgotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMTUgMTU6NDI6MTIgMjAwOCArMDIwMAotCi0gICAgODV4eDogU29jcmF0ZXM6IE1ham9yIGNvZGUgdXBkYXRlLgotCi0gICAgLSBVcGRhdGUgdGhlIGxvY2FsIGJ1cyByYW5nZXMgaW4gdGhlIEZEVCBmb3IgTGludXggZm9yIHRoZSB2YXJpb3VzCi0gICAgICBkZXZpY2VzIGNvbm5lY3RlZCB0byB0aGUgbG9jYWwgYnVzIHZpYSBjaGlwLXNlbGVjdC4KLQotICAgIC0gU2V0IHRoZSBMQ1JSX0RCWVAgYml0IGluIHRoZSBMQ1JSIGZvciBsb2NhbCBidXMgZnJlcXVlbmNpZXMKLSAgICAgIGxvd2VyIHRoYW4gNjYgTUh6IGFuZCB1c2VzIEkvTyBhY2Nlc3NvciBmdW5jdGlvbnMgY29uc2VxdWVudGx5LgotCi0gICAgLSBVUE0gZGF0YSB1cGRhdGUuCi0KLSAgICAtIFVwZGF0ZSBvZiBkZWZhdWx0IGVudmlyb25tZW50IGFuZCBjb25maWd1cmF0aW9uLglVc2UgSTJDIG11bHRpYnVzCi0gICAgICBhcyB3ZSBkbyBoYXZlIHR3byBJMkMgYnVzZXMuICBBbHNvIGVuYWJsZSBzZHJhbSBhbmQgZXh0MiBjb21tYW5kcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA0ZDJhZTcwZThjMzFjMjJlNTcxMGRmNWZmMjM2YjU1NjVlYTJjZjJjCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUdWUgU2VwIDkgMDE6MjI6MzkgMjAwOCArMDIwMAotCi0gICAgZGlzay1vbi1jaGlwOiByZW1vdmUgZHVwbGljYXRlIGRvY19wcm9iZSBkZWNsYXJhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDMyMjFiMDc0YTBhYjE5OWY2YWU0N2MxOWNjMjJmNDJkZGYzZWY4MTkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBTZXAgOSAwMDo1OTo0MCAyMDA4ICswMjAwCi0KLSAgICBvbmVuYW5kX3Vib290OiBmaXggd2FybmluZzogJ3N0cnVjdCBtdGRfb29iX29wcycgZGVjbGFyZWQgaW5zaWRlIHBhcmFtZXRlciBsaXN0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTNiNGRiMGUyMTA3MTc1YTg2MjJlYmI0ODUyOWZhM2FkOGUxMmM3NQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIFNlcCA5IDAwOjU5OjM5IDIwMDggKzAyMDAKLQotICAgIHJzNWMzNzI6IGZpeCBydGNfc2V0IHByb3RvdHlwZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDFiYjhiMmVmMjcyMmJiYWVhM2NjNWQ0NjMyMWNlMWQ5OWY5YjU2ZjcKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBBdWcgMTQgMTQ6MDg6MjggMjAwOCArMDIwMAotCi0gICAgQVJNOiBmaXggd2FybmluZzogdGFyZ2V0IENQVSBkb2VzIG5vdCBzdXBwb3J0IGludGVyd29ya2luZwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB3YXJuaW5ncyBsaWtlIHRoaXM6Ci0KLSAgICBzdGFydC5TOjA6IHdhcm5pbmc6IHRhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcKLQotICAgIHdoaWNoIGNvbWUgZnJvbSBzb21lIEFSTSBjcm9zcyBjb21waWxlcnMgYW5kIGFyZSBjYXVzZWQgYnkgaGFyZC1jb2RlZAotICAgICh3aXRoICItLXdpdGgtY3B1PWFybTkiIGNvbmZpZ3VyYXRpb24gb3B0aW9uKSBBUk0gdGFyZ2V0cyAod2hpY2gKLSAgICBzdXBwb3J0IEFSTSBUaHVtYiBpbnN0cnVjdGlvbnMpLCB3aGlsZSB0aGUgQVJNIHRhcmdldCBzZWxlY3RlZCBmcm9tCi0gICAgdGhlIGNvbW1hbmQgbGluZSAod2l0aCAiLW1hcmNoPWFybXY0IikgZG9lc24ndCBzdXBwb3J0IFRodW1iCi0gICAgaW5zdHJ1Y3Rpb25zLgotCi0gICAgVGhpcyB3YXJuaW5nIGlzIGlzc3VlZCBieSB0aGUgY29tcGlsZXIgcmVnYXJkbGVzcyBvZiB0aGUgcmVhbCB1c2Ugb2YKLSAgICB0aGUgVGh1bWIgaW5zdHJ1Y3Rpb25zIGluIGNvZGUuCi0KLSAgICBUbyBmaXggdGhpcyBwcm9ibGVtLCB3ZSB1c2Ugb3B0aW9ucyBhY2NvcmRpbmcgdG8gY29tcGlsZXIgdmVyc2lvbgotICAgIGJlaW5nIHVzZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0MjY1YzM1ZmJjYjI0OGU1ODE3OTAwNzYyMWQ2MWQzMmQwYjNiODJhCi1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgQXVnIDE0IDE0OjA4OjI4IDIwMDggKzAyMDAKLQotICAgIEFSTTogVXNlIGRvX2RpdigpIGluc3RlYWQgb2YgZGl2aXNpb24gZm9yICJsb25nIGxvbmciLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOGZlYmQxM2M2OWNiNjg2NTI1NzdkMWE5ZmNiZGU5NTRiZjc4NDE1NQotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCAxOCAxNjo1MjoyMyAyMDA4ICswMjAwCi0KLSAgICBVcGRhdGUgRnJlZXNjYWxlIDg1eHggYm9hcmRzIHRvIHN5c19lZXByb20uYwotCi0gICAgVGhlIG5ldyBzeXNfZWVwcm9tLmMgc3VwcG9ydHMgYm90aCB0aGUgb2xkIENDSUQgRUVQUk9NIGZvcm1hdCBhbmQgdGhlIG5ldyBOWElECi0gICAgZm9ybWF0LCBhbmQgc28gaXQgb2Jzb2xldGVzIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vY2RzX2VlcHJvbS5jLiAgRnJlZXNjYWxlCi0gICAgODZ4eCBib2FyZHMgYWxyZWFkeSB1c2Ugc3lzX2VlcHJvbS5jLCBzbyB0aGlzIHBhdGNoIG1pZ3JhdGVzIHRoZSByZW1haW5pbmcKLSAgICBGcmVlc2NhbGUgODV4eCBib2FyZHMgdG8gdXNlIGl0IGFzIHdlbGwuICBjZHNfZWVwcm9tLmMgaXMgZGVsZXRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxMDU1MTcxZWQwNWI3YzQ4ODU3Mzc0NjNkNTJiOGQ2YzAxM2JjYjVkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gU2VwIDggMjM6MjY6MjIgMjAwOCArMDIwMAotCi0gICAgbGliX2FybS9ib290bS5jOiBmaXggY29tcGlsZSB3YXJuaW5ncwotCi0gICAgYm9vdG0uYzoxMjg6IHdhcm5pbmc6IGxhYmVsICdlcnJvcicgZGVmaW5lZCBidXQgbm90IHVzZWQKLSAgICBib290bS5jOjY1OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3JldCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyZTNjODY3ZDBhNjNjNTYzYTUxZTY1Yjc3Njk3M2IwMDhmMTZjZWM1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gU2VwIDggMjI6NDY6NDIgMjAwOCArMDIwMAotCi0gICAgbWw1MDc6IGZpeCBvdXQgb2YgdHJlZSBidWlsZCBwcm9ibGVtCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOTg2M2ExNWE5OGYyM2I3OWYzNGEwZTRmOWU0NjViYzZkZjVkNTA0ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIFNlcCA4IDIyOjEwOjI4IDIwMDggKzAyMDAKLQotICAgIGNvbW1vbi9jbWRfYm9vdG0uYzogZml4IHByaW50ZigpIGZvcm1hdCB3YXJuaW5ncwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDQzOTRmOWE4YzQyYmIxYjBhYmM0ZmMwNGJkNTgyZDRkYjVmOGI3MjYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBTZXAgOCAyMjozNzo0NSAyMDA4ICswMjAwCi0KLSAgICBCTVcsIFBDSVBQQzIsIFBDSVBQQzYsIFJCQzgyOiBmaXggY29tcGlsZSB3YXJuaW5ncwotCi0gICAgbWlzc2luZyBkb2NfcHJvYmUoKSBwcm90b3R5cGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMmM1ZTNjYzQ5OTQ4OTdkMzY0YjE0ODk0MmZmMjNlNDc3ODMxOThmNgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIFNlcCA4IDIxOjI4OjE0IDIwMDggKzAyMDAKLQotICAgIG1rNDh0NTk6IGZpeCBjb21waWxlIHByb2JsZW0gaW50cm9kdWNlZCBieSBjb21taXQgZDFlMjMxOTQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZmY4ODkzNDlkMmFjZTEzZjEwYzkzMzVlMDkzNjVmY2VjODI0N2NjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBTZXAgOCAxNDoxMToxMiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IE1vdmUgcHBjNHh4IHNwZWNpZmljIHByb3RvdHlwZXMgdG8gcHBjNHh4IGhlYWRlcgotCi0gICAgVGhpcyBwYXRjaCBtb3ZlcyBzb21lIDR4eCBzcGVjaWZpYyBwcm90b3R5cGVzIG91dCBvZiBpbmNsdWRlIGNvbW1vbi5oCi0gICAgdG8gYSBwcGM0eHggc3BlY2lmaWMgaGVhZGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYWM1M2VlODMxODY3ODE5MGJmM2M2OGRhNDc3YTg0YTY1N2Q4NmZiMAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBTZXAgNSAxNTozNDowNCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBDUENJNDA1KEFCKSBjb25maWd1cmF0aW9uCi0KLSAgICBUaGlzIHBhdGNoIGFkZCBGRFQgc3VwcG9ydCBhbmQgY29tbWFuZCBsaW5lIGVkaXRpbmcgY2FwYWJpbGl0aWVzCi0gICAgZm9yIENQQ0k0MDUgYW5kIENQQ0k0MDVBQiBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3YjFmYmNhZGY3M2E4M2IzYmViOTRhYmNjZGExYzM1ZTJjMDc1YTk0Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIFNlcCA1IDE1OjM0OjAzIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ2xlYW51cCBDUENJNDA1IGxpbmtlciBzY3JpcHQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc2N2Y5MTU5YzVjOTRjZDBjYjMxMzViNWI4MjgxNGFkMTI4MTZkZGYKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgU2VwIDUgMTU6MzQ6MDIgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgQ1BDSTQwNSB2YXJpYW50cyBoYW5kbGluZwotCi0gICAgVGhpcyBwYXRjaCByZXBsYWNlcyB0aGUgQk9BUkRfUkVWSVNJT04gdmFyaWFibGUgaW4gaW5jbHVkZS9jb25maWcubWsKLSAgICBieSBhIHVzaW5nIGEgdGVtcG9yYXJ5IGluY2x1ZGUgZmlsZSBpbiB0aGUgcGxhdGZvcm0gZGlyZWN0b3J5LgotCi0gICAgVGhlIGZvcm1lciB3YXkgZG9lcyBub3Qgd29yayBhbnltb3JlIGFuZCB0aGUgbGF0dGVyIGlzIGFsc28gdXNlZCBieQotICAgIHNvbWUgb3RoZXIgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjA3MWYwMWZkMDllOWJmMWNmMDlkZTM3YTc0MTZhYWNjZTcxYmFlMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gU2VwIDggMTA6MDE6NDggMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgQ09ORklHX0NTODk1Ml9QSFkgZGVmaW5lCi0KLSAgICBTaW5jZSB0aGlzIGRlZmluZSBpcyBvbmx5IHVzZWQgb24gb25lIGJvYXJkIHRoYXQgd2FzIG5ldmVyIHJlYWxseSBpbgotICAgIHByb2R1Y3Rpb24sIHJlbW92aW5nIHRoaXMgY29tcGlsZSB0aW1lIG9wdGlvbiBkb2Vzbid0IGh1cnQgYW5kIG1ha2VzCi0gICAgdGhlIGNvZGUgbW9yZSByZWFkYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZjYTg2NDZjMTg2MGJiYTc0MzI2YmY5MTZhNWEzMzg5YTVjMGQzYjUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCA1IDE0OjExOjQwIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgZm9yIFBJUDQwNQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIGNvbXBpbGF0aW9uIHdhcm5pbmcgZm9yIHRoZSBQSVA0MDUgYm9hcmQuIEl0IG1vdmVzIHRoZQotICAgICNpZm5kZWYgQ09ORklHX0NTODk1Ml9QSFkgZGVmaW5lIGEgbGl0dGxlIHNvIHRoYXQgdGhlIHdhcm5pbmcgZG9lc24ndAotICAgIG9jY3VyIGFueW1vcmUuIEkgYW0gYSBsaXR0bGUgdW5zdXJlIGlmIHRoaXMgI2lmZGVmIGlzIGF0IHRoZSBjb3JyZWN0Ci0gICAgcGxhY2Ugbm93IG9yIGlmIGl0IGNvdWxkIGJlIHJlbW92ZWQgY29tcGxldGVseS4gVGhpcyBuZWVkcyB0byBnZXQKLSAgICB0ZXN0ZWQgb24gdGhlIFBJUDQwNSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDcyNWI1M2FjNjFmNGRmMzAyNmI4ZjY0ODllZjAwODBmZDI3ZDM4MTYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCA1IDE0OjA5OjA5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgZm9yIGNhbnlvbmxhbmRzICYgZ2xhY2llcgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzAyZTUyZTBiMWQ0YzdmOTk0OTkxNzA5ZDBjYjZjM2VhNjEyY2RiNQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIFNlcCA1IDE0OjQwOjI5IDIwMDggLTA1MDAKLQotICAgIEZpeCBjb21waWxlciB3YXJuaW5nIGluIG1wYzh4eHggZGRyIGNvZGUKLQotICAgIGN0cmxfcmVncy5jOiBJbiBmdW5jdGlvbiAnY29tcHV0ZV9mc2xfbWVtY3RsX2NvbmZpZ19yZWdzJzoKLSAgICBjdHJsX3JlZ3MuYzo1MjM6IHdhcm5pbmc6ICdjYXNsYXQnIG1heSBiZSB1c2VkIHVuaW5pdGlhbGl6ZWQgaW4gdGhpcyBmdW5jdGlvbgotICAgIGN0cmxfcmVncy5jOjUyMzogbm90ZTogJ2Nhc2xhdCcgd2FzIGRlY2xhcmVkIGhlcmUKLQotICAgIEFkZCBhIHdhcm5pbmcgaW4gRERSMSBjYXNlIGlmIGNhc19sYXRlbmN5IGlzbid0IGEgdmFsdWUgd2Uga25vdyBhYm91dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgQWNrZWQtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBkMWUyMzE5NDE0ZWE1MjE4YmE4MDExNjNlNDUzMGVjZjJkZmNiZjM2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gU2VwIDEgMjM6MDY6MjMgMjAwOCArMDIwMAotCi0gICAgcnRjOiBhbGxvdyBydGNfc2V0IHRvIHJldHVybiBhbiBlcnJvciBhbmQgdXNlIGl0IGluIGNtZF9kYXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZWU5NTM2YTI4Y2IxNDliY2I2YzVkZWU5ZDA4YzYyYzkxZjRjNzJkMgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIFNlcCAxIDAxOjE2OjMzIDIwMDggKzAyMDAKLQotICAgIGFwMzI1cnhhL2ZhdnItMzItZXpraXQ6IFVzZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDZiOTcxYzczZjE4MjI0OGNlMTAzNTAzZDc0ZmJjMDEwMGJiOGM4YjcKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVN1biBBdWcgMzEgMDU6Mzc6MDQgMjAwOCArMDkwMAotCi0gICAgY29uZmlnLm1rOiBNb3ZlIGFyY2gtc3BlY2lmaWMgY29uZGl0aW9uIHRvICQoQVJDSClfY29uZmlnLm1rCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgZWE4NmI5ZTY0YjgxMTc1M2Q5ZWFiZTBmNTYwZWUxODlmYmU1ZDBjMQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAyOSAxOTowODoyOSAyMDA4IC0wNTAwCi0KLSAgICBQcmV2ZW50IGNyYXNoIGlmIHJhbmRvbS9pbnZhbGlkIHJhbWRpc2tzIGFyZSBwYXNzZWQgdG8gYm9vdG0KLQotICAgIEFkZHMgcmV0dXJuaW5nIGFuIGVycm9yIGZyb20gdGhlIHJhbWRpc2sgZGV0ZWN0aW9uIGNvZGUgaWYKLSAgICBpdHMgbm90IGEgcmVhbCByYW1kaXNrIChpbnZhbGlkKS4gIFRoZXJlIGlzIG5vIHJlYXNvbiB3ZSBjYW4ndAotICAgIGp1c3QgcmV0dXJuIGJhY2sgdG8gdGhlIGNvbnNvbGUgaWYgd2UgZGV0ZWN0IGFuIGludmFsaWQKLSAgICByYW1kaXNrIG9yIENSQyBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4ZTAyNDk0ZThmODZjOGYyZDczMjRiNWViOWU3NTI3MTEwNGEwMWVmCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMjkgMjE6MDQ6NDUgMjAwOCArMDIwMAotCi0gICAgUHJldmVudCBjcmFzaCBpZiByYW5kb20gRFRCIGFkZHJlc3MgaXMgcGFzc2VkIHRvIGJvb3RtCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYm9vdG1fc3RhcnQoKSByZXR1cm4gdmFsdWUgY2hlY2suIElmCi0gICAgZXJyb3Igc3RhdHVzIGlzIHJldHVybmVkLCB3ZSBkbyBub3QgcHJvY2VlZCBmdXJ0aGVyIHRvCi0gICAgcHJldmVudCBib2FyZCByZXNldCBvciBjcmFzaCBhcyB3ZSBzdGlsbCBjYW4gcmVjb3ZlcgotICAgIGF0IHRoaXMgcG9pbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBjYzM0NzgwMWFkZDI2ODliMWVlNTRkMjFmNjJiYzE0ZWNmNmUxZGQ4Ci1BdXRob3I6IEFuZHJldyBEeWVyIDxhZHllckByaWdodGhhbmR0ZWNoLmNvbT4KLURhdGU6CUZyaSBBdWcgMjkgMTI6MzA6MzkgMjAwOCAtMDUwMAotCi0gICAgY2xlYW4gdXAgc29tZSAjaWYgIWRlZmluZWQoKSBpbiBkcml2ZXJzL3ZpZGVvL2NmYl9jb25zb2xlLmMKLQotICAgIHJlYXJyYW5nZSBzb21lICNpZiAhZGVmaW5lZCgpIC8gI2Vsc2UgLyAjZW5kaWYgc3RhdGVtZW50cyB0byByZW1vdmUKLSAgICB0aGUgbmVnYXRpdmUgbG9naWMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Ci0KLWNvbW1pdCBjODNmNGMyZDc3ZjA3MTc0ZGNkNmJlZjdlODdhMGY3MDE3YmU3YzMzCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJRnJpIEF1ZyAyOSAwOTowMjoyMCAyMDA4ICswOTAwCi0KLSAgICBhcG9sbG9uOiB1c2UgdGhlIGxhc3QgbWVtb3J5IGFyZWEgZm9yIHUtYm9vdAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGE2ZjJlNDU1Yjc3NGQwYzVkNTZlNDRlNTY2MWRmOWFkYjY5YjZlMDcKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDI4IDEzOjUwOjQyIDIwMDggKzAyMDAKLQotICAgIFRRTTgyNzI6IG1vdmUgTkFORCBwYXJ0IGluIHNlcGVyYXRlIEZpbGUKLQotICAgIEkgZGlkbid0IHRyeSB0byB1c2UgZHJpdmVycy9tdGQvbmFuZC9mc2xfdXBtLmMgZm9yIHRoZSBOQU5EIGRyaXZlciwKLSAgICBiZWNhdXNlIEkgaGF2ZSBubyBsb25nZXIgYWNjZXNzIHRvIHRoZSBoYXJkd2FyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNTg0Zjk3OWY3ZWU5MTRlMzJkNDA4NzM5Y2JkZDJjNDQ1N2VjMThiOAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBBdWcgMjggMTM6NDg6MzYgMjAwOCArMDIwMAotCi0gICAgVFFNODI3MjogRml4IGNvbXBpbGluZyBlcnJvciBmb3IgdGhlIFRRTTgyNzIgYm9hcmQuCi0KLSAgICBGaXggY29tcGlsZSBwcm9ibGVtcyBjYXVzZWQgYnkKLSAgICBjb21taXQgIGNmYTQ2MGFkZmRlZmNjMzBkMTA0ZTFhOWVlNDQ5OTRlZTM0OWJiN2IKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMWE3ZjhjY2VjOTgxNjQ4Y2NkMzhmY2EyNTM1NDkwNTgyZWVlMDhlNgotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CVdlZCBBdWcgMjcgMTQ6NDU6MjAgMjAwOCArMDkwMAotCi0gICAgQWRkIEpGRlMyIGNvbW1hbmQgc3VwcG9ydCBvbiBPbmVOQU5ECi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgZjVjM2JhNzk3ODhiMGUzOWJhYWI3MDI2ZDM3NGZlMzc1ZGQxYTQzZgotQXV0aG9yOiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLURhdGU6CU1vbiBBdWcgMjUgMTk6MjE6MzAgMjAwOCArMDEwMAotCi0gICAgQWxsb3cgY29uc29sZSBpbnB1dCB0byBiZSBkaXNhYmxlZAotCi0gICAgQWRkZWQgbmV3IENPTkZJR19ESVNBQkxFX0NPTlNPTEUgZGVmaW5lIGFuZCBHRF9GTEdfRElTQUJMRV9DT05TT0xFLgotCi0gICAgV2hlbiBDT05GSUdfRElTQUJMRV9DT05TT0xFIGlzIGRlZmluZWQsIHNldHRpbmcKLSAgICBHRF9GTEdfRElTQUJMRV9DT05TT0xFIGRpc2FibGVzIGFsbCBjb25zb2xlIGlucHV0IGFuZCBvdXRwdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLQotY29tbWl0IDJiMjJkNjA4ZjM3MDU2NWM4N2Y1NTkyOGI1MjQyMDcwMzE0MTljMTEKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglXZWQgSnVsIDMwIDEyOjM5OjI5IDIwMDggKzAyMDAKLQotICAgIGxvYWRzOiBhbGxvdyBuZWdhdGl2ZSBvZmZzZXRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLQotY29tbWl0IGU5MGZiNmFmYWIyYzBjMDc0ZGZiNjdiYWNiNGRlMTc5ZWIxODhhMjQKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IFNlcCA0IDExOjE5OjA1IDIwMDggKzAyMDAKLQotICAgIFVTQiBFSENJOiByZXNldCByb290IGh1YgotCi0gICAgU29tZSBvZiBtdWx0aS1mdW5jdGlvbiBVU0IgY29udHJvbGxlcnMgKGUuZy4gSVNQMTU2MikgYWxsb3cgcm9vdCBodWIKLSAgICByZXNldHRpbmcgb25seSB2aWEgRUhDSSByZWdpc3RlcnMuIFNvLCB0aGlzIHBhdGNoIGFkZHMgdGhlCi0gICAgY29ycmVzcG9uZGluZyBraW5kIG9mIHJlc2V0IHRvIE9IQ0kncyBoY19yZXNldCgpIGlmIHRoZSBuZXdseQotICAgIGludHJvZHVjZWQgQ09ORklHX1BDSV9FSENJX0RFVk5PIG9wdGlvbiBpcyBzZXQgKGUuZy4gZm9yIFNvY3JhdGVzCi0gICAgYm9hcmQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgNTg3NWQzNThmMDI1YzFiMDQyZDhhMGYwODM4NGI3NTZkZTcyNTZjOQotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgQXVnIDE1IDE1OjQyOjA5IDIwMDggKzAyMDAKLQotICAgIFJYIDgwMjUgUlRDOiBhbmFseXplIDEyLzI0LWhvdXIgbW9kZSBmbGFnIGluIHJ0Y19nZXQoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDNlM2MwMjZlZDc0NmEyODRjNmYwZWYxMzliMjZkODU5OTM5ZGU3ZTkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIFNlcCA1IDEwOjQ3OjQ2IDIwMDggKzAyMDAKLQotICAgIGRldmljZXM6IFVzZSBsaXN0X2FkZF90YWlsKCkgaW5zdGVhZCBvZiBsaXN0X2FkZCgpIHRvIHJlZ2lzdGVyIGEgZGV2aWNlCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBzcG90dGVkIG9uIEdsYWNpZXIvQ2FueW9ubGFuZHMgKGFuZCBtb3N0Ci0gICAgbGlrZWx5IGxvdHMgb2Ygb3RoZXIgYm9hcmQgcG9ydHMpLCB0aGF0IG5vIHNlcmlhbCBvdXRwdXQgd2FzIHNlZW4KLSAgICBhZnRlciBjb25zb2xlIGluaXRpYWxpemF0aW9uIGluIGNvbnNvbGVfaW5pdF9yKCkuIFRoaXMgaXMgYmVjYXVzZSB0aGUKLSAgICBsYXN0IGFkZGVkIGNvbnNvbGUgZGV2aWNlIHdhcyB1c2VkIGluc3RlYWQgb2YgdGhlIGZpcnN0IGFkZGVkLgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0gYnkgdXNpbmcgbGlzdF9hZGRfdGFpbCgpIGluc3RlYWQgb2YKLSAgICBsaXN0X2FkZCgpIHRvIHJlZ2lzdGVyIGEgZGV2aWNlLiBUaGlzIHdheSB0aGUgZmlyc3QgYWRkZWQgY29uc29sZQotICAgIGlzIHVzZWQgYWdhaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3OGQ3ODIzNjg5NmQ2MmJiOGNhNzMwMmFmMzhkOGYxNDkzZWIyNjUxCi1BdXRob3I6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotRGF0ZToJVGh1IFNlcCA0IDIzOjQ5OjM2IDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogQWRkIHN1cHBvcnQgZm9yIEdQQ1MsIFNHTUlJIGFuZCBNODhFMTExMiBQSFkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBHUENTLCBTR01JSSBhbmQgTTg4RTExMTIgUEhZIHN1cHBvcnQKLSAgICBmb3IgdGhlIEFNQ0MgUFBDNDYwR1QvRVggcHJvY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZpY3RvciBHYWxsYXJkbyA8dmdhbGxhcmRvQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGY2YjZjNDU4NDBmOWI0NjcxZDJkOTcyNDNhMTJhMWYzZmZiNjQ3NjUKLUF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+Ci1EYXRlOglXZWQgU2VwIDMgMTI6MjY6NTkgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgS2lsYXVlYSB0byB1c2UgUFBDNHh4IEREUiBhdXRvY2FsaWJyYXRpb24gcm91dGluZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDA3NWQwYjgxZTg5NmU4NzM1YWUyNjM3MmNkMzg0Zjg3Y2JkMjRlNDEKLUF1dGhvcjogQWRhbSBHcmFoYW0gPGFncmFoYW1AYW1jYy5jb20+Ci1EYXRlOglXZWQgU2VwIDMgMTI6MjY6MjggMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBJQk0gTWVtb3J5IENvbnRyb2xsZXIgRERSIGF1dG9jYWxpYnJhdGlvbiByb3V0aW5lcwotCi0gICAgQWx0ZXJuYXRlIFNEUkFNIEREUiBhdXRvY2FsaWJyYXRpb24gcm91dGluZSB0aGF0IGNhbiBiZSBnZW5lcmljYWxseSB1c2VkCi0gICAgZm9yIGFueSBQUEM0eHggY2hpcHMgdGhhdCBoYXZlIHRoZSBJQk0gU0RSQU0gQ29udHJvbGxlciBjb3JlIGFsbG93aW5nIGZvcgotICAgIHN1cHBvcnQgb2YgbW9yZSBESU1NL21lbW9yeSBjaGlwIHZlbmRvcnMgYW5kIGdldHMgdGhlIEREUiBhdXRvY2FsaWJyYXRpb24KLSAgICB2YWx1ZXMgd2hpY2ggZ2l2ZSB0aGUgYmVzdCByZWFkIGxhdGVuY3kgcGVyZm9ybWFuY2UgKFNEUkFNMF9SRENDLltSRFNTXSkuCi0KLSAgICBUd28gYWx0ZXJuYXRlIFNEUkFNIEREUiBhdXRvY2FsaWJyYXRpb24gYWxnb3JpdG0gYXJlIHByb3ZpZGVkIGluIHRoaXMgcGF0Y2gsCi0gICAgIk1ldGhvZF9BIiBhbmQgIk1ldGhvZF9CIi4JRERSIGF1dG9jYWxpYnJhdGlvbiBNZXRob2RfQSBzY2FucyB0aGUgZnVsbCByYW5nZQotICAgIG9mIHBvc3NpYmxlIFBQQzR4eAlTRFJBTSBDb250cm9sbGVyIEREUiBhdXRvY2FsaWJyYXRpb24gdmFsdWVzIGFuZCB0YWtlcyBhCi0gICAgbG90IGxvbmdlciB0byBydW4gdGhhbiBNZXRob2RfQi4gIE1ldGhvZF9CIGV4ZWN1dGVzIGluIHRoZSBzYW1lIGFtb3VudCBvZiB0aW1lCi0gICAgYXMgdGhlIGN1cnJlbnRseSBleGlzdGluZyBERFIgYXV0b2NhbGlicmF0aW9uIHJvdXRpbmUsIGkuZS4gMSBzZWNvbmQgb3Igc28uCi0gICAgTm9ybWFsbHkgTWV0aG9kX0IgaXMgdXNlZCBhbmQgaXQgaXMgc2V0IGFzIHRoZSBkZWZhdWx0IG1ldGhvZC4KLQotICAgIFRoZSBjdXJyZW50IFUtQm9vdCBQUEM0eHggRERSIGF1dG9jYWxpYnJhdGlvbiBjb2RlIGNhbGlicmF0ZXMgdGhlIElCTSBTRFJBTQotICAgIENvbnRyb2xsZXIgcmVnaXN0ZXJzLltiaXQtZmllbGRdOgotICAgIDEpCVNEUkFNMF9SUURDLltSUUZEXQotICAgIDIpCVNEUkFNMF9SRkRDLltSRkZEXQotCi0gICAgVGhpcyBhbHRlcm5hdGUgUFBDNHh4IEREUiBhdXRvY2FsaWJyYXRpb24gY29kZSBjYWxpYnJhdGVzIHRoZSBmb2xsb3dpbmcKLSAgICBJQk0gU0RSQU0gQ29udHJvbGxlciByZWdpc3RlcnMuW2JpdC1maWVsZF06Ci0KLSAgICAxKQlTRFJBTTBfV1JEVFIuW1dEVFJdCi0gICAgMikJU0RSQU0wX0NMS1RSLltDS1RSXQotICAgIDMpCVNEUkFNMF9SUURDLltSUUZEXQotICAgIDQpCVNEUkFNMF9SRkRDLltSRkZEXQotCi0gICAgYW5kIHdpbGwgYWxzbyB1c2UgdGhlIGNhbGlicmF0ZWQgc2V0dGluZ3Mgb2YgdGhlIGFib3ZlIGZvdXIgcmVnaXN0ZXJzIHRoYXQKLSAgICBwcm9kdWNlIHRoZSBiZXN0ICJSZWFkIFNhbXBsZSBDeWNsZSBTZWxlY3QiIHZhbHVlIGluIHRoZSBTRFJBTTBfUkRDQy5bUkRTU10KLSAgICByZWdpc3Rlci5bYml0LWZpZWxkXS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkYW0gR3JhaGFtIDxhZ3JhaGFtQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGUwN2Y0YTgwMzNiNjI3MGI4MTAzMDQ5YWRiNjQ1NmY2NjBmZjRhODkKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglNb24gU2VwIDEgMTM6MDk6MzkgMjAwOCAtMDQwMAotCi0gICAgcHBjNDR4OiBVbmlmaWNhdGlvbiBvZiB2aXJ0ZXg1IHBwNDQwIGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCBwcm92aWRlcyBhbiB1bmlmaWNhdGVkIHdheSBvZiBoYW5kbGluZyB4aWxpbnggdjUgcHBjNDQwIGJvYXJkcy4KLQotICAgIEl0IHVuaWZpY2F0ZXMgMyBkaWZmZXJlbnQgdGhpbmdzOgotCi0gICAgMSkgU291cmNlIGNvZGUKLSAgICBBIG5ldyBib2FyZCBjYWxsZWQgcHBjNDQwLWdlbmVyaWMgaGFzIGJlZW4gY3JlYXRlZC4gVGhpcyBib2FyZCBpbmNsdWRlcwotICAgIGEgZ2VuZXJpYyB0bGIgaW5pdGlhbGl6YXRpb24gKE1hcHMgdGhlIHdob2xlIG1lbW9yeSBpbnRvIHZpcnR1YWwpIGFuZAotICAgIGRlZmluZXMgYm9hcmRfcHJlX2luaXQsIGNoZWNrYm9hcmQsIGluaXRkcmFtIGFuZCBnZXRfc3lzX2luZm8gd2Vha2x5LAotICAgIHNvLCB0aGV5IGNhbiBiZSByZXBsYWNlZCBieSBzcGVjaWZpYyBmdW5jdGlvbnMuCi0KLSAgICBJZiBhIG5ldyBib2FyZCBuZWVkcyB0byByZWRlZmluZSBhbnkgb2YgdGhlIHByZXZpb3VzIGZ1bmN0aW9ucwotICAgIChzcGVjaWZpYyBpbml0aWFsaXphdGlvbikgaXQgY2FuIGNyZWF0ZSBhIG5ldyBkaXJlY3Rvcnkgd2l0aCB0aGUKLSAgICBzcGVjaWZpYyBpbml0aWFsaXphdGlvbnMgbmVlZGVkLiAoc2VlIHRoZSBleGFtcGxlIG1sNTA3IGJvYXJkKS4KLQotICAgIDIpIENvbmZpZ3VyYXRpb24gZmlsZQotICAgIENvbW1vbiBjb25maWd1cmF0aW9ucyBhcmUgbG9jYXRlZCB1bmRlciBjb25maWdzL3hpbGlueC1wcGM0NDAuaCwgdGhpcwotICAgIGhlYWRlciBmaWxlIGludGVycHJldGVzIHRoZSB4cGFyYW1ldGVycyBmaWxlIGdlbmVyYXRlZCBieSBFREsgYW5kCi0gICAgY29uZmlndXJhdGVzIHUtYm9vdCBpbiBjb3JyZXNwb25kZW5jZS4gRXhhbXBsZTogaWYgdGhlcmUgaXMgYSBUZW1hYywKLSAgICBhbGxvd3MgQ01EX0NPTkZJR19ORVQKLSAgICBTcGVjaWZpYyBjb25maWd1cmF0aW9uIGFyZSBsb2NhdGVkIHVuZGVyIHNwZWNpZmljIGNvbmZpZ3VyYXRpb24gZmlsZS4KLSAgICAoc2VlIHRoZSBleGFtcGxlIG1sNTA3IGJvYXJkKQotCi0gICAgMykgTWFrZWZpbGUKLSAgICBTb21lIHdvcmsgaGFzIGJlZW4gZG9uZSBpbiBvcmRlciB0byBub3QgZHVwbGljYXRlIHdvcmsgaW4gdGhlIE1haW4KLSAgICBNYWtlZmlsZS4gUGxlYXNlIHNlZSB0aGUgYXR0YWNoZWQgY29kZS4KLQotICAgIEluIG9yZGVyIHRvIHN1cHBvcnQgbmV3IGJvYXJkcyB0aGV5IGNhbiBiZSBpbXBsZW1lbnRlZCBpbiB0aGUgbmV4dCB3YXk6Ci0KLSAgICBhKSBTaW1wbGUgR2VuZXJpYyBCb2FyZCAgKDkwJSBvZiB0aGUgdGltZSkKLSAgICBVc2luZyBFREsgZ2VuZXJhdGVzIGEgbmV3IHhwYXJhbWV0ZXJzLmggZmlsZSwgcmVwbGFjZQotICAgIHBwYzQ0MC1nZW5lcmljL3hwYXJhbWV0ZXJzLmggIGFuZCBydW4gbWFrZSB4aWxpbngtcHBjNDQwLWdlbmVyaWNfY29uZmlnCi0gICAgJiYgbWFrZQotCi0gICAgYikgU2ltcGxlIEJvYXJkcyB3aXRoIHNwZWNpYWwgdS1ib290IHBhcmFtZXRlcnMgKDkgJSBvZiB0aGUgdGltZSkKLSAgICBDcmVhdGUgYSBuZXcgZmlsZSB1bmRlciBjb25maWdzIGZvciBpdCAodXNlIG1sNTA3LmggYXMgZXhhbXBsZSkgYW5kCi0gICAgY2hhbmdlIHlvdXIgcGFyYW1hdGVycy4gQ3JlYXRlIGEgbmV3IE1ha2VmaWxlIHBhcmFncmFwaCBhbmQgY29tcGlsZQotCi0gICAgYykgQ29tcGxleCBib2FyZHMgKDElIG9mIHRoZSB0aW1lKQotICAgIENyZWF0ZSBhIG5ldyBmb2xkZXIgZm9yIHRoZSBib2FyZCwgbGlrZSB0aGUgbWw1MDcKLQotICAgIEZpbmFsbHksIGl0IGFkZHMgc3VwcG9ydCBmb3IgdGhlIEF2bmV0IEZYMzBUIEV2YWx1YXRpb24gYm9hcmQsIGZvbGxvd2luZwotICAgIHRoZSBuZXcgZ2VuZXJpYyBzdHJ1Y3R1cmU6Ci0KLSAgICBDaGVhcCBib2FyZCBieSBBdm5ldCBmb3IgZXZhbHVhdGluZyB0aGUgVmlydGV4NSBGWCB0ZWNobm9sb2d5LgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yOgotICAgICAtIFVhcnRMaXRlCi0gICAgIC0gMTZNQiBGbGFzaAotICAgICAtIDY0TUIgUkFNCi0KLSAgICBQcmlvciB1c2luZyBVLWJvb3QgaW4gdGhpcyBib2FyZCwgcmVhZCBjYXJlZnVsbHkgdGhlIEVSUkFUQSBieSBBdm5ldAotICAgIHRvIHNvbHZlIHNvbWUgbWVtb3J5IGluaXRpYWxpemF0aW9uIGlzc3Vlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDY0YWMxZWI1YWZhZmNlZDQ5YjMyNzQyNWFkMTgxNGIyZGM0MjJkNmUKLUF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgU2VwIDIgMTU6MjE6MTYgMjAwOCAtMDUwMAotCi0gICAgbXBjODN4eDogZml4IG1wYzgzMTMgaW4tdHJlZSBidWlsZGluZyB3aXRoIE5BTkQKLQotICAgIGFuZCBhZGQgbXBjODMxMyBOQU5EIGJ1aWxkIHRvIE1BS0VBTEwKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2ZWIyYTQ0ZTI3OTE5ZmRjNjAxZTBjMDU0MDRiMjk4YTc2MDJjMGUzCi1BdXRob3I6IE5pY2sgU3BlbmNlIDxuaWNrLnNwZW5jZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAyOCAxNDowOToyNSAyMDA4IC0wNzAwCi0KLSAgICBtcGM4M3h4OiBjbGVhbiB1cCBjYWNoZSBvcGVyYXRpb25zIGFuZCB1bmxvY2tfcmFtX2luX2NhY2hlKCkgZnVuY3Rpb25zCi0KLSAgICBDbGVhbnMgdXAgc29tZSBsYXRlbnQgaXNzdWVzIHdpdGggdGhlIGRhdGEgY2FjaGUgY29udHJvbCBzbyB0aGF0Ci0gICAgZGNhY2hlX2VuYWJsZSgpIGFuZCBkY2FjaGVfZGlzYWJsZSgpIHdpbGwgd29yayByZWxpYWJseSAoYWZ0ZXIKLSAgICB1bmxvY2tfcmFtX2luX2NhY2hlKCkgaGFzIGJlZW4gY2FsbGVkKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ2NDk3MDU2YWUzYjFlODFlNzM2ZTljZjNhMTcwNDcyYzVkOTcxOWYKLUF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDE0OjA5OjE5IDIwMDggLTA3MDAKLQotICAgIG1wYzgzeHg6IFN0b3JlIGFuZCBkaXNwbGF5IEFyYml0ZXIgRXZlbnQgUmVnaXN0ZXIgdmFsdWVzCi0KLSAgICBSZWNvcmQgdGhlIEFyYml0ZXIgRXZlbnQgUmVnaXN0ZXIgdmFsdWVzIGFuZCBvcHRpb25hbGx5IGRpc3BsYXkgdGhlbS4KLQotICAgIFRoZSBBcmJpdGVyIEV2ZW50IFJlZ2lzdGVyIGNhbiByZWNvcmQgdGhlIHR5cGUgYW5kIGVmZmVjdGl2ZSBhZGRyZXNzIG9mCi0gICAgYW4gYXJiaXRlciBlcnJvciwgZXZlbiB0aHJvdWdoIGFuIEhSRVNFVC4gVGhpcyBwYXRjaCBzdG9yZXMgdGhlIHZhbHVlcyBpbgotICAgIHRoZSBnbG9iYWwgZGF0YSBzdHJ1Y3R1cmUuCi0KLSAgICBEaXNwbGF5IG9mIHRoZSBBcmJpdGVyIEV2ZW50IHJlZ2lzdGVycyBpbW1lZGlhdGVseSBhZnRlciB0aGUgUlNSIHZhbHVlCi0gICAgY2FuIGJlIGVuYWJsZWQgd2l0aCBkZWZpbmVzLiBUaGUgQXJiaXRlciB2YWx1ZXMgd2lsbCBvbmx5IGJlIGRpc3BsYXllZAotICAgIGlmIGFuIGFyYml0ZXIgZXZlbnQgaGFzIG9jY3VyZWQgc2luY2UgdGhlIGxhc3QgUG93ZXIgT24gUmVzZXQsIGFuZCBlaXRoZXIKLSAgICBvZiB0aGUgZm9sbG93aW5nIGRlZmluZXMgZXhpc3Q6Ci0gICAgICNkZWZpbmUgQ09ORklHX0RJU1BMQVlfQUVSX0JSSUVGIC0gZGlzcGxheSBvbmx5IHRoZSBhcmJpdGVyIGFkZHJlc3MgYW5kCi0JCQkJCWFuZCB0eXBlIHJlZ2lzdGVyIHZhbHVlcwotICAgICAjZGVmaW5lIENPTkZJR19ESVNQTEFZX0FFUl9GVUxMICAtIGRpc3BsYXkgYW5kIGludGVycHJldCB0aGUgYXJiaXRlcgotCQkJCQlldmVudCByZWdpc3RlciB2YWx1ZXMKLQotICAgIEFkZHJlc3MgT25seSB0cmFuc2FjdGlvbnMgYXJlIG9uZSBvZiB0aGUgdHJhcHBlZCBldmVudHMgdGhhdCBjYW4gcmVnaXN0ZXIKLSAgICBhcyBhbiBhcmJpdGVyIGV2ZW50LiBUaGV5IG9jY3VyIHdpdGggc29tZSBjYWNoZSBtYW5pcHVsYXRpb24gaW5zdHJ1Y3Rpb25zCi0gICAgaWYgdGhlIEhJRDBfQUJFIChBZGRyZXNzIEJyb2FkY2FzdCBFbmFibGUpIGlzIHNldCBhbmQgdGhlIG1lbW9yeSByZWdpb24KLSAgICBoYXMgdGhlIE1FTU9SWV9DT0hFUkVOQ0UgV0lNRyBiaXQgc2V0LiBTZXR0aW5nOgotICAgICAjZGVmaW5lIENPTkZJR19NQVNLX0FFUl9BTyAtIHByZXZlbnRzIHRoZSBhcmJpdGVyIGZyb20gcmVjb3JkaW5nIGFkZHJlc3MKLQkJCQkgIG9ubHkgZXZlbnRzLCBzbyB0aGF0IGl0IGNhbiBzdGlsbCBjYXB0dXJlCi0JCQkJICBvdGhlciByZWFsIHByb2JsZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFkZTUwYzdmYTFiMTZlZjk4YmUxN2U5YzNhZTI4NmFlY2Y0ZjU2MDUKLUF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDE0OjA5OjExIDIwMDggLTA3MDAKLQotICAgIG1wYzgzeHg6IHVzZSByNCBpbnN0ZWFkIG9mIHIyIGluIGxvY2tfcmFtX2luX2NhY2hlIGFuZCB1bmxvY2tfcmFtX2luX2NhY2hlCi0KLSAgICBUaGlzIGlzIG5lZWRlZCBpbiB1bmxvY2tfcmFtX2luX2NhY2hlKCkgYmVjYXVzZSBpdCBpcyBjYWxsZWQgZnJvbSBDIGFuZAotICAgIHdpbGwgY29ycnVwdCB0aGUgc21hbGwgZGF0YSBhcmVhIGFuY2hvciB0aGF0IGlzIGtlcHQgaW4gUjIuCi0KLSAgICBsb2NrX3JhbV9pbl9jYWNoZSgpIGlzIG1vZGlmaWVkIHNpbWlsYXJseSBhcyBnb29kIGNvZGluZyBwcmFjdGljZSwgYnV0Ci0gICAgaXMgbm90IGNhbGxlZCBmcm9tIEMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDlmZTg4MTczY2I0ZjdkMjkzNzk2ZmZlMTBjN2EwZDNkNDI2ZDhmOQotQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBdWcgMjIgMjM6NTI6NTAgMjAwOCAtMDcwMAotCi0gICAgTVBDODNYWDogRml4IEdQSU8gY29uZmlndXJhdGlvbiAtIHNldCBncGlvIGxldmVsIGJlZm9yZSBkaXJlY3Rpb24KLQotICAgIFNldCBEQVQgdmFsdWUgYmVmb3JlIERJUiB2YWx1ZXMgdG8gYXZvaWQgY3JlYXRpbmcgZ2xpdGNoZXMgb24gdGhlCi0gICAgR1BJTyBzaWduYWxzLgotCi0gICAgU2V0IGdwaW8gbGV2ZWwgcmVnaXN0ZXIgYmVmb3JlIGRpcmVjdGlvbiByZWdpc3RlciB0byBpbmhpYml0Ci0gICAgZ2xpdGNoZXMgb24gaGlnaCBsZXZlbCBvdXRwdXQgcGlucy4KLQotICAgIERpciBhbmQgZGF0YSBnZXRzIGNsZWFyZWQgYXQgcG93ZXJ1cCwgc28gaGlnaCBsZXZlbCBvdXRwdXQgbGluZXMgc2VlCi0gICAgYSBzaG9ydCBsb3cgcHVsc2UgYmV0d2VlbiBzZXR0aW5nIHRoZSBkaXJlY3Rpb24gYW5kIGxldmVsIHJlZ2lzdGVycy4KLQotICAgIElzc3VlIHdhcyBzZWVuIG9uIGEgbmV3IGJvYXJkIHdpdGggdGhlIG5SZXNldCBsaW5lIG9mIHRoZSBOT1IgZmxhc2gKLSAgICBjb25uZWN0ZWQgdG8gYSBHUElPLiBTZXR0aW5nIHRoZSBkaXJlY3Rpb24gcmVnaXN0ZXIgcHV0cyB0aGUgTk9SIGZsYXNoCi0gICAgaW4gcmVzZXQgc28gdGhlIG5leHQgaW5zdHJ1Y3Rpb24gdG8gc2V0IHRoZSBsZXZlbCBjYW5ub3QgZ2V0IGV4ZWN1dGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgS29yc2dhYXJkIDxqYWNtZXRAc3Vuc2l0ZS5kaz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzAwN2M1OTc1ZWU5MDBhZDcwOTgzYjA2ODFkMzI1MWUyMjFmODMyMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIFNlcCAyIDAyOjU4OjMyIDIwMDggKzAyMDAKLQotICAgIGRvYy9xZW11X21pcHM6IGFkZCBkb2MgaG93dG8gZGVidWcgdS1ib290IHdpdGggZ2RiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgN2RlYjNiM2VjZDBlODFlZjA5YmI2OGFhMGVjMjM0NmY0YWUwYTQwNQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVdlZCBTZXAgMyAxNzoxNTo0NSAyMDA4ICswMjAwCi0KLSAgICBwcHg0eHg6IEZpeCBicm9rZW4gREFTQV9TSU0gYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBpbml0ZHJhbSgpIHRvIERBU0FfU0lNIGJvYXJkcyB0aGF0IGhhcyBiZWVuCi0gICAgcmVtb3ZlZCBhY2NpZGVudGFsbHkgYnkgYSBwcmV2aW91cyBjb21taXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3ZTQxMGFhMzBmYmNiMWQxOWEyNmJiZjFlODRhOWNhNjEwMmQ1MzRiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBTZXAgMSAwODozNTozNyAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSByZWZlcmVuY2UgdG8gY29tbW9uL2xpc3RzLm8gZnJvbSBzb21lIGVzZCBsaW5rZXIgc2NyaXB0cwotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHNvbWUgZGlyZWN0IHJlZmVyZW5jZXMgdG8gY29tbW9uL2xpc3RzLm8gZnJvbSBzb21lCi0gICAgZXNkIGxpbmtlciBzY3JpcHRzLiBUaGlzIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIHRoZSBsaXN0cyBzb3VyY2Ugd2FzIG1vdmVkCi0gICAgYW5kIGlzIG5vdCBpbiB0aGUgImNvbW1vbiIgZGlyZWN0b3J5IGFueW1vcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5N2IwNzM0ZDY1ZjhhMGIwM2RmMGEzMzVhMmFkZGM3NTlkYTU2MTA3Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIFNlcCAyIDE2OjMzOjA1IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIG9ic29sZXRlIG9yIHVudXNlZCBmdW5jdGlvbnMgZnJvbSBzb21lIGVzZCBib2FyZHMKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBpbml0ZHJhbSgpIGFuZCB0ZXN0ZHJhbSgpIGZyb20gbW9zdCBlc2QgNDA1IHBsYXRmb3Jtcy4KLSAgICBTb21lIGJvYXJkcyBhbHNvIGhhdmUgYW4gZW1wdHkgZHVtbXkgaW1wbGVtZW50YXRpb24gb2YKLSAgICBtaXNjX2luaXRfZigpLiBUaGlzIGlzIGFsc28gcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDEwOTJjZTIxOGM1MTRlNWNjYjE4NDUwYWM1YWY1MDFkOTZkNmUzZTkKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgU2VwIDIgMTU6MDc6NTQgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgVk9NNDA1IGJvYXJkIGNvbmZpZ3VyYXRpb24KLQotICAgIC0gcmVtb3ZlIFBDSSBjb2RlCi0gICAgLSBhZGQgY29tbWFuZCBsaW5lIGVkaXRpbmcKLSAgICAtIG1pbm9yIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDgzMGM4MDBlMjhlOTZlYzdjM2M2OTM2YTBiZDFiOTQ2MWYzZTc3ZDQKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgU2VwIDIgMTU6MDc6NTMgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgb2Jzb2xldGUgaW5pdGRyYW0oKSBmdW5jdGlvbiBmcm9tIFZPTTQwNSBib2FyZAotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVkIHRoZSBvYnNvbGV0ZSBpbml0ZHJhbSgpIGZ1bmN0aW9uIGZyb20KLSAgICBWT000MDUgcGxhdGZvcm0gZmlsZS4KLQotICAgIFNvbWUgbWlub3IgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDNkNGRkN2E5NDFiMjMyN2I4YzJmYzUzNWI3ODJjYTMwN2ZmOGI2YzgKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgU2VwIDIgMTU6MDc6NTIgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDbGVhbnVwIFZPTTQwNSBsaW5rZXIgc2NyaXB0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmY2FmZmQ1OTdmNmY1MTkxYjEyY2E2NmMyYTQ3ODliYmRlZWE4NWMyCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+Ci1EYXRlOglUdWUgU2VwIDIgMTU6MDc6NTEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgZmR0IHN1cHBvcnQgZm9yIFZPTTQwNSBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtZkBlc2QuZXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOWVjMzY3YWEyYzVkY2Y3OTU1OGFhMmIyMDliNDVkNzY4NjY1NGMxNAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBTZXAgMiAxMTozNjoxNCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IENvZGluZyBzdHlsZSBjbGVhbnVwCi0KLSAgICBXcmFwIGxvbmcgbGluZXMgZXRjLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTdlNjVjMjFhZGZiNjM5ODBlNmFmZjgwYmZiZDJkZjBlZWIxMjA2MAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBTZXAgMiAxMTozNTo1NiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEVuYWJsZSBVU0Igb24gUExVNDA1IGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCBlbmFibGVzIHRoZSBQQ0ktT0hDSSBjb250cm9sbGVyIG9uIFBMVTQwNSBib2FyZC4KLQotICAgIEFsc28gdGhlIGRlZmF1bHQgQ1BVIGZyZXF1ZW5jeSBpcyB1cGRhdGVkIHRvIDI2NiBNSHogYW5kCi0gICAgY29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgZW5hYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQwZTQzZTNiODdkNTdiMmFjNzg2ZTI3ZjZlMjVhN2RmOTk0MGQ5M2IKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgU2VwIDIgMTE6MzU6MzUgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDbGVhbnVwIFBMVTQwNSBwbGF0Zm9ybSBmaWxlCi0KLSAgICBUaGlzIHBhdGNoCi0gICAgLSB3cmFwcyBzb21lIGxvbmcgbGluZXMKLSAgICAtIHJlbW92ZXMgdW51c2VkL29ic29sZXRlIGZ1bmN0aW9uczogbWlzY19pbml0X2YoKSBhbmQgaW5pdGRyYW0oKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1mQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkNzRjZGIxZDA2MTRhYjc4MTI4ZTA3MzVhNTFlNzk4OGE3YjdlYTMzCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIFNlcCAyIDExOjM1OjA0IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ2xlYW51cCBQTFU0MDUgbGlua2VyIHNjcmlwdAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1mQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzYmMxMDU0Y2VjMmY2YjI1ODIyZjMwMWVhOTIyYTE2MjMzYmFhNGM3Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIFNlcCAyIDExOjM0OjM2IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIGZkdCBzdXBwb3J0IGZvciBQTFU0MDUgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWZAZXNkLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDVhM2U0ODBiNzgzYmZiYzEzOTU4NjI5M2E1NGZiODc1ZDdjNWM1ZDQKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgU2VwIDIgMTE6MzQ6MDggMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBJbmNyZWFzZSBVLUJvb3Qgc2l6ZSB0byAzODRrQiBmb3IgUExVNDA1IGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1mQGVzZC5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiZTFiMGQyNzc3ZTE3OTE5MWE1N2IxMzhiNjYwNTQ3YTE3ZTU1YWFkCi1BdXRob3I6IEpvY2hlbiBGcmllZHJpY2ggPGpvY2hlbkBzY3JhbS5kZT4KLURhdGU6CVR1ZSBTZXAgMiAxMToyNDo1OSAyMDA4ICswMjAwCi0KLSAgICBEb24ndCB0ZnRwIHRvIHVua25vd24gZmxhc2gKLQotICAgIElmIGEgYm9hcmQgaGFzIGEgdmFyaWFibGUgbnVtYmVyIG9mIGZsYXNoIGJhbmtzLCB0aGVyZSBhcmUgZW1wdHkgZW50cmllcwotICAgIGluIGZsYXNoX2luZm9bXSBhbmQgQ0ZHX0RJUkVDVF9GTEFTSF9URlRQIGlzIHNldCwgdGZ0cCBib290IGZhaWxzIHdpdGgKLSAgICAiT3V0c2lkZSBhdmFpbGFibGUgRmxhc2giLiBUaGlzIHBhdGNoIHNraXBzIGZsYXNoIGJhbmtzIHdpdGggdW5rbm93bgotICAgIGZsYXNoIGlkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvY2hlbiBGcmllZHJpY2ggPGpvY2hlbkBzY3JhbS5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMzMzMTQ0NzBhYjMyYTNmNTQxMmJiNjFiNWYzZDZjMjE2Yzg4YmY5YgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDEzOjQwOjQ0IDIwMDggKzA5MDAKLQotICAgIG5ldDogc21jOTExeDogQWRkIHBrdF9kYXRhX3B1bGwgYW5kIHBrdF9kYXRhX3B1c2ggZnVuY3Rpb24KLQotICAgIFRoZSBSU0s3MjAzIGJvYXJkIGhhcyB0aGUgU01TQzkxMTggd2lyZWQgdXAgJ2luY29ycmVjdGx5Jy4KLSAgICBCeXRlLXN3YXBwaW5nIGlzIG5lY2Vzc2FyeSwgYW5kIHNvIHBvb3IgcGVyZm9ybWFuY2UgaXMgaW5ldml0YWJsZS4KLSAgICBUaGlzIHByb2JsZW0gY2Fubm90IGV2YWRlIGJ5IHRoZSBzd2FwIGZ1bmN0aW9uIG9mIENISVAsIHRoaXMgY2FuCi0gICAgZXZhZGUgYnkgc29mdHdhcmUgQnl0ZS1zd2FwcGluZy4KLSAgICBBbmQgdGhpcyBoYXMgcHJvYmxlbSBieSBGSUZPIGFjY2VzcyBvbmx5LiBwa3RfZGF0YV9wdWxsL3BrdF9kYXRhX3B1c2gKLSAgICBmdW5jdGlvbnMgbmVjZXNzYXJ5IHRvIHNvbHZlIHRoaXMgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMTBlZmEwMjRiOGZmZDllNmFhY2E2M2RhOGJkZGZkZmZkYzY3MjI3NAotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAzMSAyMDozNzowMCAyMDA4IC0wNzAwCi0KLSAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBFRVBSTzEwMCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKLQotICAgIEFmZmVjdGVkIGJvYXJkczoKLQlkYjY0MzYwCi0JZGI2NDQ2MAotCWthdG1haQotCXRhaWh1Ci0JdGFpc2hhbgotCXl1Y2NhCi0JY3BjNDUKLQljcHU4NwotCWVYYWxpb24KLQllbHBwYwotCWRlYnJpcwotCWt2bWUwODAKLQltcGM4MzE1ZXJkYgotCWludGVncmF0b3JhcAotCWl4ZHA0MjUKLQlveGMKLQlwbTgyNgotCXBtODI4Ci0JcG04NTQKLQlwbTg1NgotCXBwbWM3eHgKLQlzYzMKLQlzYzUyMF9zcHVuawotCXNvcmNlcnkKLQl0cW04MjcyCi0JdHFtODV4eAotCXV0eDgyNDUKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotICAgIEFsc28sIHdyYXBwZWQgY29udGVudHMgb2YgcGNpX2V0aF9pbml0KCkgYnkgQ09ORklHX1BDSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4Y2EwYjNmOTljNGZjZTdhNTk5ZGNhZjkyYWUwOTU0OTZkYzhjOGUwCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDEwOjQ1OjQ0IDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFRVTElQIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQotCi0gICAgQWZmZWN0ZWQgYm9hcmRzOgotCWN1ODI0Ci0JYmFiN3h4Ci0JYWRjaW9wCi0JZGFzYV9zaW0KLQltb3Vzc2UKLQltcGM4NTQwZXZhbAotCW11c2Vua2kKLQltdmJsdWUKLQlwY2lwcGMyL3BjaXBwYzYKLQlzYmM4MjQwCi0Jc3R4c3NhCi0KLSAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhZDMzODFjZjQxNjcxMjBkYjVjN2I4OGU0OTcwMjQ1ZTFkNWMwYTMyCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDEwOjQ0OjE5IDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEUxMDAwIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQotCi0gICAgQWZmZWN0ZWQgYm9hcmRzOgotCWFwMTAwMAotCW12YmNfcAotCVBNODU0Ci0KLSAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA0ZmNlMmFjZWFmOGFmZDMxYTI1MmJjNzgyYzlkYmM0OTdiZjQwNDg3Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDEwOjQwOjUxIDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHBsYjI4MDAgRXRoZXJuZXQgZHJpdmVyIHRvIGJvYXJkX2V0aF9pbml0Ci0KLSAgICBBZmZlY3RlZCBib2FyZHM6Ci0JcHVycGxlCi0KLSAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIGNvbnRyb2xsZXIgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBlMWQ3NDgwYjVkZTFmZDQ4MzBiZjdjZjVlMjIzN2QzYjA4NDZkMDhkCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDEwOjM5OjEyIDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIE1QQzV4eHhfRkVDIEV0aGVybmV0IGRyaXZlciB0byBDUFUgZGlyZWN0b3J5Ci0KLSAgICBNb2RpZmllZCBib2FyZF9ldGhfaW5pdCgpIGZ1bmN0aW9ucyBvZiBib2FyZHMgdGhhdCBoYXZlIHRoaXMgRkVDIGluIGFkZGl0aW9uCi0gICAgdG8gb3RoZXIgRXRoZXJuZXQgY29udHJvbGxlcnMuCi0KLSAgICBBZmZlY3RlZCBib2FyZHM6Ci0JYmMzNDUwCi0JaWNlY3ViZQotCW12YmNfcAotCW8yZG50Ci0JcG01MjAKLQl0b3RhbDUyMDAKLQl0cTUyMDAKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgY29udHJvbGxlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGEwYWFkMDhmOTQyN2FjMDAyMThiZGIyY2I2NDk4MzNjZTZlYzliOGQKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTA6MzY6MzggMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTVBDNTEyeF9GRUMgRXRoZXJuZXQgZHJpdmVyIHRvIENQVSBkaXJlY3RvcnkKLQotICAgIEFkZGVkIGEgY3B1X2V0aF9pbml0KCkgZnVuY3Rpb24gdG8gTVBDNTEyeCBDUFUgZGlyZWN0b3J5IGFuZAotICAgIHJlbW92ZWQgY29kZSBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDgyMThiZDJhYTY4ODIwYjg3OGE4NDEzNDkzYWUxN2ZkOGQyMWY5NDQKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTA6MTY6NTkgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgSW5jYUlQIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQKLQotICAgIEFmZmVjdGVkIGJvYXJkczoKLQlJbmNhSVAKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDE2NDg0NmVlYjI1Y2IyYTVlZGU3YWI5MzcxZmRjYTdmNDgzMWEwNTUKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTA6MTU6MjYgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgM0NPTSBFdGhlcm5ldCBjb250cm9sbGVyIChBbWlnYU9uZSkgdG8gYm9hcmRfZXRoX2luaXQoKQotCi0JQWZmZWN0ZWQgYm9hcmRzOgotCSAgICBBbWlnYU9uZUczU0UKLQotCVJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDZhY2ExNDVlMDY3ZWZlNzUzOThlOWZhYzk3ODIyYmQzNzAwZGUwYjIKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTA6MTM6MzQgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgR1Q2NDI2eCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKLQotICAgIEFmZmVjdGVkIGJvYXJkczoKLQlFVkI2NDI2MAotCVAzRzQKLQlaVU1BCi0KLSAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBlMzA5MDUzNGQ2MjA0NWRjYjczZjUzOTJiYWNjNjRhNGU4ZTQ0M2RjCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDEwOjA4OjQzIDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFBDTkVUIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQotCi0gICAgQWZmZWN0ZWQgYm9hcmRzOgotCVBONjIKLQlzYzUyMF9jZHAKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGI5MDJiOGRkYTVlMWZkNGQ1ZmUyZjIwMmM3MWVlMzUyMWQyYzQwZWQKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTA6MDc6MTYgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTkFUU0VNSSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKLQotICAgIEFmZmVjdGVkIGJvYXJkczoKLQlhMzAwMAotCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMTk0MDM2MzNkZDcwMzMzODkzYzJkYTc5MjZhMWQwZGNkNmRhYjdkOAotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAzMSAxMDowMzoyMiAyMDA4IC0wNzAwCi0KLSAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBOUzgzODJYIEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQotCi0gICAgQWZmZWN0ZWQgYm9hcmRzOgotCWJjMzQ1MAotCWNwY2k1MjAwCi0JbWVjcDUyMDAKLQlwZjIwMDAKLQlpY2VjdWJlCi0JbzJkbnQKLQlwbTUyMAotCXNhbmRwb2ludDgyNDUKLQl0b3RhbDUyMDAKLQl0cW01MjAwCi0KLSAgICBSZW1vdmVkIGluaXRpYWxpemF0aW9uIG9mIHRoZSBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjY2RkMTJmODNlZjkzNzE5ZmJlODVmNjQyYWE0ZGM2NDhiOTQ5OGYwCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDA5OjU5OjMzIDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIFRTSTEwOCBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKLQotICAgIEFmZmVjdGVkIGJvYXJkczoKLQltcGM3NDQ4aHBjMgotCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBvZiB0aGUgZHJpdmVyIGZyb20gbmV0L2V0aC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMGIyNTJmNTBhZTIxOGFlMTViZmI2M2FmNDQyMjc5NzI2ODZlYmM1NgotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJU3VuIEF1ZyAzMSAyMTo0MTowOCAyMDA4IC0wNzAwCi0KLSAgICBNb3ZlZCBpbml0aWFsaXphdGlvbiBvZiBSVEw4MTM5IEV0aGVybmV0IGNvbnRyb2xsZXIgdG8gYm9hcmRfZXRoX2luaXQoKQotCi0gICAgQWZmZWN0ZWQgYm9hcmRzOgotCWhpZGRlbl9kcmFnb24KLQlNUEM4NTQ0RFMKLQlNUEM4NjEwSFBDTgotCVIyRFBMVVMKLQlUQjAyMjkKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDAyZDY5ODkxZDk1ZWU3NmIwZTg2ZTE3MTVhNGRjMGI5NjRhNTdjYjcKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMDk6NDk6NDIgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgUlRMODE2OSBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKLQotICAgIEFmZmVjdGVkIGJvYXJkczoKLQlsaW5rc3RhdGlvbgotCXI3NzgwbXAKLQotICAgIFJlbW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDNhZTA3MWU0NDI1NjE0NGQ2YzFlM2ZlYmI2NWY2YzU2YmQ0MzM3NjkKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTIgMjI6MTE6NTMgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgRXRoZXJuZXQgY29udHJvbGxlcnMgb24gQXRtZWwgQVQ5MSB0byBib2FyZF9ldGhfaW5pdCgpCi0KLSAgICBSZW1vdmVkIGF0OTFzYW05X2V0aF9pbml0aWFsaXplKCkgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4OTk3M2Y4YTgyYzI4YWQ4OTNjNGMzY2M1NjgzOWE4ZTEwZmU1ZjEzCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDIyOjIyOjA0IDIwMDggLTA3MDAKLQotICAgIEludHJvZHVjZSBuZXRkZXYuaCBoZWFkZXIgZmlsZSBhbmQgcmVtb3ZlIGV4dGVybnMKLQotICAgIFRoaXMgYWRkcmVzc2VzIGFsbCBkcml2ZXJzIHdob3NlIGluaXRpYWxpemVycyBoYXZlIGFscmVhZHkKLSAgICBiZWVuIG1vdmVkIHRvIGJvYXJkX2V0aF9pbml0KCkvY3B1X2V0aF9pbml0KCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNWE4YTE2M2FjMzk0ZDlmNGY3ZmY1N2Y0MTVkODJiZDY3M2IwMDY4YwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDE2OjMzOjMwIDIwMDggLTA1MDAKLQotICAgIEFkZCBwaXhpc19zZXRfc2dtaWkgY29tbWFuZAotCi0gICAgVGhlIDg1NDREUyBhbmQgODU3MkRTIHBsYXRmb3JtcyBzdXBwb3J0IGFuIG9wdGlvbmFsIFNHTUlJIHJpc2VyIGNhcmQgdG8KLSAgICBleHBvc2UgZXRoZXJuZXQgb3ZlciBhbiBTR01JSSBpbnRlcmZhY2UuICBPbmNlIHRoZSBjYXJkIGlzIGluLCBpdCBpcyBhbHNvCi0gICAgbmVjZXNzYXJ5IHRvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgc3VjaCB0aGF0IGl0IHVzZXMgdGhlIGNhcmQsIHJhdGhlciB0aGFuCi0gICAgdGhlIG9uLWJvYXJkIGV0aGVybmV0IHBvcnRzLiAgVGhpcyBjYW4gZWl0aGVyIGJlIGRvbmUgYnkgZmxpcHBpbmcgZGlwIHN3aXRjaGVzCi0gICAgb24gdGhlIG1vdGhlcmJvYXJkLCBvciBieSBtb2RpZnlpbmcgcmVnaXN0ZXJzIGluIHRoZSBwaXhpcy4gIEVpdGhlciB3YXkKLSAgICByZXF1aXJlcyBhIHJlYm9vdC4KLQotICAgIFRoaXMgYWRkcyBhIGNvbW1hbmQgdG8gYWxsb3cgdXNlcnMgdG8gY2hvb3NlIHdoaWNoIHBvcnRzIGFyZSByb3V0ZWQgdGhyb3VnaAotICAgIHRoZSBTR01JSSBjYXJkLCBhbmQgd2hpY2ggdGhyb3VnaCB0aGUgb25ib2FyZCBwb3J0cy4gIEl0IGFsc28gYWxsb3dzIHVzZXJzCi0gICAgdG8gcmV2ZXJ0IHRvIHRoZSBjdXJyZW50IHN3aXRjaCBzZXR0aW5ncy4KLQotICAgIFRoaXMgY29kZSBkb2VzIG5vdCB3b3JrIG9uIHRoZSA4NTcyLCBhcyB0aGUgUElYSVMgaXMgZGlmZmVyZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyMTZmMmE3MTU2YTVmZGU3YjQ3YWRjNDBhZDU1M2M4ODhhOWNiYWE3Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTY6MzM6MjkgMjAwOCAtMDUwMAotCi0gICAgQWRkIFNHTUlJIHN1cHBvcnQgZm9yIHRoZSA4NTQ0IERTCi0KLSAgICBUaGUgODU0NCBEUyBoYXMgYW4gb3B0aW9uYWwgU0dNSUkgUmlzZXIgY2FyZCwgd2hpY2ggdXNlcyBkaWZmZXJlbnQgUEhZCi0gICAgYWRkcmVzc2VzLglDaGVjayBpZiB3ZSBhcmUgaW4gU0dNSUkgbW9kZSwgYW5kIGludm9rZSB0aGUgU0dNSUkgUmlzZXIKLSAgICBzZXR1cCBjb2RlIGlmIHNvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2NTJmN2MyZWVmNzZhMTM0MDkyOGJkNjYwODQ1NDQxZTkzMmQ4NmEyCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTY6MzM6MjggMjAwOCAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSBTR01JSSBSaXNlciBDYXJkCi0KLSAgICBUaGUgODU0NERTIGFuZCA4NTcyRFMgc3lzdGVtcyBoYXZlIGFuIG9wdGlvbmFsIFNHTUlJIHJpc2VyIGNhcmQgd2hpY2gKLSAgICBleHBvc2VzIG5ldyBldGhlcm5ldCBwb3J0cyB3aGljaCBhcmUgY29ubmVjdGVkIHRvIHRoZSBlVFNFQ3MgdmlhIGFuCi0gICAgU0dNSUkgaW50ZXJmYWNlLiAgVGhlIFNHTUlJIFBIWXMgZm9yIHRoaXMgYm9hcmQgYXJlIG9mZnNldCBmcm9tIHRoZSBzdGFuZGFyZAotICAgIFBIWSBhZGRyZXNzZXMsIHNvIHRoaXMgY29kZSBtb2RpZmllcyB0aGUgcGFzc2VkIGluIHRzZWNfaW5mbyBzdHJ1Y3R1cmUgdG8KLSAgICB1c2UgdGhlIFNHTUlJIFBIWXMgb24gdGhlIGNhcmQsIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDJhYmUzNjFjMDNiNDNlNmRjZjY4ZjU0ZTk2YjVjMDUxNTZjNDkyODQKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEF1ZyAzMSAxNjozMzoyNyAyMDA4IC0wNTAwCi0KLSAgICBBZGQgU0dNSUkgc3VwcG9ydCB0byB0aGUgdHNlYwotCi0gICAgQWRkcyBzdXBwb3J0IGZvciBjb25maWd1cmluZyB0aGUgVEJJIHRvIHRhbGsgcHJvcGVybHkgd2l0aCB0aGUgU2VyRGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA3NWI5ZDRhZTBkNjlmMjE0ZWFiNjQxY2FmMTJjZThhZjgzYTM5YTQyCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTY6MzM6MjYgMjAwOCAtMDUwMAotCi0gICAgUGFzcyBpbiB0c2VjX2luZm8gc3RydWN0IHRocm91Z2ggdHNlY19pbml0aWFsaXplCi0KLSAgICBUaGUgdHNlYyBkcml2ZXIgY29udGFpbnMgYSBoYXJkLWNvZGVkIGFycmF5IG9mIGNvbmZpZ3VyYXRpb24gaW5mb3JtYXRpb24KLSAgICBmb3IgdGhlIHRzZWMgZXRoZXJuZXQgY29udHJvbGxlcnMuCVdlIGNyZWF0ZSBhIGRlZmF1bHQgZnVuY3Rpb24gdGhhdCB3b3JrcwotICAgIGZvciBtb3N0IHRzZWNzLCBhbmQgYWxsb3cgdGhhdCB0byBiZSBvdmVycmlkZGVuIGJ5IGJvYXJkIGNvZGUuICBJdCBjcmVhdGVzCi0gICAgYW4gYXJyYXkgb2YgdHNlY19pbmZvIHN0cnVjdHVyZXMsIHdoaWNoIGFyZSB0aGVuIHBhcnNlZCBieSB0aGUgY29ycmVzcG9uZGluZwotICAgIGRyaXZlciBpbnN0YW5jZSB0byBkZXRlcm1pbmUgY29uZmlndXJhdGlvbi4gIEFsc28sIGFkZCByZWdzLCBtaWlyZWdzLCBhbmQKLSAgICBkZXZuYW1lIGZpZWxkcyB0byB0aGUgdHNlY19pbmZvIHN0cnVjdHVyZSwgc28gdGhhdCB3ZSBkb24ndCBuZWVkIHRoZSBrbHVkZ3kKLSAgICAiaW5kZXgiIHBhcmFtZXRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZGQzZDFmNTZhMDFmNDYwZDU2MDc2NjEyNmVlN2RmZWQyZWE5YmMxMAotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDE2OjMzOjI1IDIwMDggLTA1MDAKLQotICAgIHRzZWM6IE1vdmUgdHNlYy5oIHRvIGluY2x1ZGUvCi0KLSAgICBUaGlzIGlzIHRvIHByZXBhcmUgdGhlIHdheSBmb3IgYm9hcmQgY29kZSBwYXNzaW5nIGluIHRoZSB0c2VjX2luZm8gc3RydWN0dXJlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGQyM2RjMzk0YWE2OTA5M2I2MzI2YWQ5MTdkYjA0ZGMwZDFhZmYzZjgKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CUZyaSBKdW4gNiAxNTo1Mjo0NCAyMDA4ICswMjAwCi0KLSAgICBQSFk6IEFkZCBzdXBwb3J0IGZvciB0aGUgTTg4RTExMjFSIE1hcnZlbGwgY2hpcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAxNzExZjNiZDE2ZDFjNWU5ZDE3YjRjMDE5OGI0MjZkODY5OTk3ODFiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgU2VwIDIgMjE6MTc6MzYgMjAwOCArMDIwMAotCi0gICAgZndfZW52LmM6IGZpeCBidWlsZCBwcm9ibGVtcyB3aXRoIE1URF9WRVJTSU9OPW9sZAotCi0gICAgKGFzIG5lZWRlZCB0byBzdXBwb3J0IG9sZCAyLjQgTGludXgga2VybmVsIGJhc2VkIHJlbGVhc2VzKQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDYyOGZmZDczYmNmZjBjOWYzYmM1YThlZWIyYzc0NTVmZTlkMjhhNTEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBTZXAgMSAxNzoxMToyNiAyMDA4ICswMjAwCi0KLSAgICBkZXZpY2U6IG1ha2UgZGV2aWNlX3JlZ2lzdGVyKCkgY2xvbmUgdGhlIGRldmljZQotCi0gICAgVGhpcyBpcyBleHBlY3RlZCBieSB0aGUgY2FsbGVycywgYnV0IHRoaXMgZmFjdCB3YXMgaGlkZGVuIHdlbGwgd2l0aGluCi0gICAgdGhlIG9sZCBsaXN0IGltcGxlbWVudGF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGJhZjQ0OWZjNWZmOTZmMDcxYmIwZTM3ODlmZDMyNjVmNmQ0ZmQ5YTAKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIFNlcCAxIDE0OjAwOjA3IDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBBZGQgc3VwcG9ydCBmb3IgIkdQSU8iIHBvcnQgbXV4Ci0KLSAgICBUaGUgIkdQSU8iIHBvcnQgbXV4IGlzIHVzZWQgb24gQVZSMzIgVUMzIHBhcnRzIGFzIHdlbGwgYXMgQVQzMkFQNzIwMCBhbmQKLSAgICBhbGwgbGF0ZXIgQVZSMzIgY2hpcHMuIFRoaXMgcGF0Y2ggYWRkcyBhIGRyaXZlciBmb3IgaXQsIGltcGxlbWVudGluZyB0aGUKLSAgICBzYW1lIEFQSSBhcyB0aGUgZXhpc3RpbmcgcG9ydG11eC1waW8gZHJpdmVyIGJ1dCB3aXRoIG1vcmUgZnVuY3Rpb25hbGl0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGQ5Mjg1MjU3OTU0NmM0NmJkYWFjOTc4ZTBiNjc2N2E2NjQ1YjY5ZTAKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIEF1ZyAxNSAxNTowMjoyOSAyMDA4ICswMjAwCi0KLSAgICBhdHN0azEwMDA6IENvbnZlcnQgdG8gbmV3LXN0eWxlIG1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAyNWU2ODU0ZDQyYzExMDQ2YTQ2ODU3NjE3OWI1NDk0Zjg1MDMxMWIyCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMTg6NDY6MzUgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IHVzZSBib2FyZF9lYXJseV9pbml0X3IgaW5zdGVhZCBvZiBib2FyZF9pbml0X2luZm8KLQotICAgIFJlcGxhY2UgdGhlIGF2cjMyLXNwZWNpZmljIGJvYXJkX2luaXRfaW5mbyBob29rIGJ5IHRoZSBzdGFuZGFyZAotICAgIGJvYXJkX2Vhcmx5X2luaXRfciBob29rIGFuZCBtYWtlIGl0IG9wdGlvbmFsLgotCi0gICAgYm9hcmRfZWFybHlfaW5pdF9yKCkgcnVucyBzb21ld2hhdCBlYXJsaWVyIHRoYW4gYm9hcmRfaW5pdF9pbmZvIHVzZWQgdG8KLSAgICBkbywgYnV0IHRoaXMgaXNuJ3QgYSBwcm9ibGVtIGZvciBhbnkgb2YgdGhlIGluLXRyZWUgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMzZkMzc1ZmFmNWNmZjk4ZThkY2EzMmFhYmJiYjFlYzYwMzY0MzdkZAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDE4OjI0OjI0IDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBVc2UgYm9hcmRfcG9zdGNsa19pbml0IGluc3RlYWQgb2YgZ2Nsa19pbml0Ci0KLSAgICBSZXBsYWNlIHRoZSBhdnIzMi1zcGVjaWZpYyBnY2xrX2luaXQoKSBib2FyZCBob29rIHdpdGggdGhlIHN0YW5kYXJkCi0gICAgYm9hcmRfcG9zdGNsa19pbml0KCkgaG9vayB3aGljaCBpcyBzdXBwb3NlZCB0byBydW4gYXQgdGhlIHNhbWUgcG9pbnQKLSAgICBkdXJpbmcgaW5pdGlhbGl6YXRpb24uCi0KLSAgICBQcm92aWRlIGEgZHVtbXkgd2VhayBhbGlhcyBmb3IgYm9hcmRzIG5vdCBpbXBsZW1lbnRpbmcgdGhpcyBob29rLiBUaGUKLSAgICBjb3N0IG9mIHRoaXMgaXM6Ci0gICAgICAtIDIgYnl0ZXMgZm9yIHRoZSBkdW1teSBmdW5jdGlvbiAocmV0YWwgMCkKLSAgICAgIC0gMiBieXRlcyBmb3IgZWFjaCB1bm5lY2Vzc2FyeSBmdW5jdGlvbiBjYWxsIChzaG9ydCByY2FsbCkKLQotICAgIHdoaWNoIGlzIGEgcHJldHR5IHNtYWxsIHByaWNlIHRvIHBheSBmb3IgYXZvaWRpbmcgbG90cyBvZiAjaWZkZWYKLSAgICBjbHV0dGVyLiBJbiB0aGlzIHBhcnRpY3VsYXIgY2FzZSwgYWxsIGJvYXJkcyBwcm9iYWJseSBlbmQgdXAgc2xpZ2h0bHkKLSAgICBzbWFsbGVyIGJlY2F1c2Ugd2UgYXZvaWQgdGhlIGNvbmRpdGlvbmFsIGNoZWNraW5nIGlmIHRoZSBnY2xrX2luaXQKLSAgICBzeW1ib2wgaXMgTlVMTC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGFiZGRlMmIxZDU3MGIxZWU3NzYwNmJmNzgzNDQ0ZmNkZGY3ZjA5NjUKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU3VuIEF1ZyAzMSAxODowNzozNSAyMDA4ICswMjAwCi0KLSAgICBoYW1tZXJoZWFkOiBVc2UgZ2NsayBoZWxwZXIgZnVuY3Rpb25zCi0KLSAgICBVc2UgdGhlIG5ldyBnY2xrIGhlbHBlciBmdW5jdGlvbnMgdG8gc2V0IHVwIHRoZSBQSFkgY2xvY2sgaW5zdGVhZCBvZgotICAgIGFjY2Vzc2luZyB0aGUgUE0gcmVnaXN0ZXJzIGRpcmVjdGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgOTgwOTBjZDc1Y2RiNDBiMmFiOTRjODA2YzMzODU0MGE1NzE2NzQ4YgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDE4OjA1OjMyIDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBBZGQgZ2NsayBoZWxwZXIgZnVuY3Rpb25zCi0KLSAgICBBZGQgdHdvIGhlbHBlciBmdW5jdGlvbnMgZm9yIGNvbmZpZ3VyaW5nIGFuZCBlbmFibGluZyBnZW5lcmljIGNsb2NrczoKLSAgICAgIC0gZ2Nsa19lbmFibGVfb3V0cHV0OiBFbmFibGVzIG91dHB1dCBvbiBhIEdDTEt4IHBpbgotICAgICAgLSBnY2xrX3NldF9yYXRlOiBDb25maWd1cmVzIGEgZ2NsayB0byBydW4gYXQgYSBzcGVjaWZpYyByYXRlCi0KLSAgICBUaGlzIHNob3VsZCBlbGltaW5hdGUgYW55IHJlYXNvbiB0byBnbyBtdWNraW5nIGFib3V0IHdpdGggUE0gcmVnaXN0ZXJzCi0gICAgZnJvbSBib2FyZCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYWIwZGYzNmZjN2RiOWRkYTBiNzg2YjkwOWY2NTNlMjc5ZGZlYjljZgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglGcmkgQXVnIDI5IDIxOjA5OjQ5IDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiByZWZhY3RvciB0aGUgcG9ydG11eC9ncGlvIGNvZGUKLQotICAgICAgLSBTZXBhcmF0ZSB0aGUgcG9ydG11eCBjb25maWd1cmF0aW9uIGZ1bmN0aW9uYWxpdHkgZnJvbSB0aGUgR1BJTyBwaW4KLQljb250cm9sIEFQSS4KLSAgICAgIC0gU2VwYXJhdGUgdGhlIGNvbnRyb2xsZXItc3BlY2lmaWMgY29kZSBmcm9tIHRoZSBjaGlwLXNwZWNpZmljIGNvZGUuCi0gICAgICAtIEFsbG93ICJnYW5nZWQiIHBvcnQgY29uZmlndXJhdGlvbiAobXVsdGlwbGUgcGlucyBhdCBvbmNlKS4KLSAgICAgIC0gQWRkIG1vcmUgZmxleGliaWxpdHkgdG8gdGhlICJjYW5uZWQiIHBlcmlwaGVyYWwgc2VsZWN0IGZ1bmN0aW9uczoKLQkgIC0gQWxsb3cgdXNpbmcgbW9yZSB0aGFuIDIzIGFkZHJlc3MgYml0cywgbW9yZSBjaGlwIHNlbGVjdHMsIGFzCi0Jd2VsbCBhcyBOQU5ELSBhbmQgQ0Ytc3BlY2lmaWMgcGlucy4KLQkgIC0gTWFrZSB0aGUgTUFDQiBTUEVFRCBwaW4gb3B0aW9uYWwsIGFuZCBjaG9vc2UgYmV0d2VlbiBNSUkvUk1JSQotCXVzaW5nIGEgcGFyYW1ldGVyIGluc3RlYWQgb2YgYW4gI2lmZGVmLgotCSAgLSBNYWtlIGl0IHBvc3NpYmxlIHRvIHVzZSBvdGhlciBNTUMgc2xvdHMgdGhhbiBzbG90IDAsIGFuZCBzdXBwb3J0Ci0JZGlmZmVyZW50IE1NQy9TRENhcmQgZGF0YSBidXMgd2lkdGhzLgotICAgICAgLSBVc2UgbW9yZSByZWFzb25hYmxlIHB1bGwtdXAgZGVmYXVsdHM7IGZsb2F0aW5nIHBpbnMgbWF5IGNvbnN1bWUgYQotCWxvdCBvZiBwb3dlci4KLSAgICAgIC0gR2V0IHJpZCBvZiBzb21lIGN1c3RvbSBwb3J0bXV4IGNvZGUgZnJvbSB0aGUgbWltYzIwMCBib2FyZCBjb2RlLiBUaGUKLQlvbGQgZ3Bpby9wb3J0bXV4IEFQSSBjb3VsZG4ndCByZWFsbHkgaGFuZGxlIGl0cyByZXF1aXJlbWVudHMsIGJ1dAotCXRoZSBuZXcgb25lIGNhbi4KLSAgICAgIC0gQWRkIGRvY3VtZW50YXRpb24uCi0KLSAgICBUaGUgZW5kIHJlc3VsdCBpcyBzbGlnaHRseSBzbWFsbGVyIGNvZGUgZm9yIGFsbCBib2FyZHMuIFdoaWNoIGlzbid0Ci0gICAgcmVhbGx5IHRoZSBwb2ludCwgYnV0IGF0IGxlYXN0IGl0IGlzbid0IGFueSBsYXJnZXIuCi0KLSAgICBUaGlzIGhhcyBiZWVuIHZlcmlmaWVkIG9uIEFUU1RLMTAwMiBhbmQgQVROR1cxMDAuIEknZCBhcHByZWNpYXRlIGlmCi0gICAgdGhlIGJvYXJkIG1haW50YWluZXJzIGNvdWxkIGhlbHAgbWUgdGVzdCB0aGlzIG9uIHRoZWlyIGJvYXJkcy4gSW4KLSAgICBwYXJ0aWN1bGFyLCB0aGUgbWltYzIwMCBwb3J0IGhhcyBsb3N0IGEgbG90IG9mIGNvZGUsIHNvIEknbSBob3BpbmcgTWFyawotICAgIGNhbiBoZWxwIG1lIG91dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLSAgICBDYzogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGFucy1jaHJpc3RpYW4uZWd0dmVkdEBhdG1lbC5jb20+Ci0gICAgQ2M6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgotICAgIENjOiBBbGV4IFJhaW1vbmRpIDxhbGV4LnJhaW1vbmRpQG1pcm9taWNvLmNoPgotICAgIENjOiBKdWxpZW4gTWF5IDxqdWxpZW4ubWF5QG1pcm9taWNvLmNoPgotCi0gICAgQ2hhbmdlcyBzaW5jZSB2MToKLSAgICAgICogRW5hYmxlIHB1bGx1cCBvbiBOV0FJVAotICAgICAgKiBBZGQgbWlzc2luZyBpbmNsdWRlIHRvIHBvcnRtdXgtcGlvLmgKLSAgICAgICogUmVuYW1lIENPTkZJR19QSU8yIC0+IENPTkZJR19QT1JUTVVYX1BJTyB0byBtYXRjaCBkb2NzCi0KLWNvbW1pdCA0YzI0ZTgyODhjNjAxY2I3NzNhYjAyNTI4YjQ4YTg1Nzc5NzBlODY3Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVNhdCBBdWcgMzAgMTc6Mjg6MzYgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IGRhdGFfYml0cyBzaG91bGQgcmVmbGVjdCB0aGUgYWN0dWFsIG51bWJlciBvZiBkYXRhIGJpdHMKLQotICAgIE1ha2UgdGhlIGRhdGFfYml0cyBlbnVtIGluIHN0cnVjdCBzZHJhbV9jb25maWcgcmVmbGVjdCB0aGUgYWN0dWFsIG51bWJlcgotICAgIG9mIGRhdGEgYml0cyBvbiB0aGUgYnVzLCBpLmUuIDE2IG9yIDMyLiBIYXZpbmcgMCBtZWFuIDE2IGJpdHMgYW5kIDEgbWVhbgotICAgIDMyIGJpdHMgaXMganVzdCB0b28gY29uZnVzaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNjZiN2JjNTE3NTMyNTgwOTcxOGQ4ZDQ5ZWYwNzNiYzEwMzZhZDcxYgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglGcmkgQXVnIDI5IDE3OjQ4OjE4IDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBVcGRhdGUgUkVBRE1FCi0KLSAgICBSZW1vdmUgc29tZSBvdXRkYXRlZCBhbmQvb3IgdW5uZWNlc3NhcnkgaW5mb3JtYXRpb24sIGFuZCBhZGQgdXBkYXRlZAotICAgIGluZm9ybWF0aW9uIGFib3V0IHRoZSB0b29sY2hhaW4gYW5kIGJ1aWxkcm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGM3NWU3NzJhMmYwNjFhNTA4YmJhMjhkZWQxYjViZWE5MWYwNDQyYjAKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJU3VuIEF1ZyAzMSAyMzoyODoxNSAyMDA4ICswOTAwCi0KLSAgICBzaDogUmVtb3ZlIENDIGxpbmUgZnJvbSBib2FyZCdzIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA0NjhlYWUwNjYwZGU2ZmRmZDk5OTk5NDRjNTM2ZWNjNDc5N2JkOTQ0Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVN1biBBdWcgMzEgMjM6MjU6NTcgMjAwOCArMDkwMAotCi0gICAgc2g6IFJlcGxhY2VkICJALi9ta2NvbmZpZyIgZm9yIEAkKE1LQ09ORklHKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgM2FlYjFmZjc0ODJhNzMyNTAzMTg2Yzc0MmQzYTVkZWQ0YjdhMGQzNAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDE0OjUwOjUyIDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBzaDIgdG8gTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDZmM2Q4YmI1ZmFhMTJkYmYzMDMxMzgyMjg2Nzg0Yzk3OGRmMDM4ZWUKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVGh1IEF1ZyAyOCAxNDo1MjoyMyAyMDA4ICswOTAwCi0KLSAgICBzaDogRml4IGNvbXBpbGUgZXJyb3IgcnNrNzIwMyBib2FyZAotCi0gICAgVGhpcyBib2FyZHMgdXNlZCBvbGQgdHlwZSBwcmVwcm9jZXNzb3IuCi0gICAgVGhpcyBwYXRjaCBmaXggY29tcGlsZSBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAxYzk4MTcyZTAyNTAxODU1MmU5YmI0YzQzYjBhYWVlNzZmNzliMWFhCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVRodSBBdWcgMjggMTQ6NTM6MzEgMjAwOCArMDkwMAotCi0gICAgc2g6IEZpeCBjb21waWxlIGVycm9yIHNoNzc4NWxjciBib2FyZAotCi0gICAgVGhpcyBib2FyZHMgdXNlZCBvbGQgdHlwZSBwcmVwcm9jZXNzb3IuCi0gICAgVGhpcyBwYXRjaCBmaXggY29tcGlsZSBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA2ZjBkYTQ5NzJlNDhmOTlkMzdiYzUyMjgxNDk0MGE2MDIyY2QzMDg0Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CUZyaSBBdWcgMjIgMTc6Mzk6MDkgMjAwOCArMDkwMAotCi0gICAgc2g6IFJlbmVzYXMgU29sdXRpb25zIEFQMzI1UlhBIGJvYXJkIHN1cHBvcnQKLQotICAgIEFQMzI1UlhBIGlzIFNINzcyMydzIHJlZmVyZW5jZSBib2FyZC4KLSAgICBUaGlzIGhhcyBTQ0lGLCBOT1IgRmxhc2gsIEV0aGVybmV0LCBVU0IgaG9zdCwgTENEQywgU0QgSG9zdCwgQ2FtZXJhIGFuZCBvdGhlci4KLSAgICBJbiB0aGlzIHBhdGNoLCBzdXBwb3J0IFNDSUYsIE5PUiBGbGFzaCwgYW5kIEV0aGVybmV0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGFiMDlmNDMzYjUwYmI4M2I1ZTQ0MGMzMzViYzM4MzllZTA2OWU1MzQKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJRnJpIEF1ZyAyMiAxNzo0ODo1MSAyMDA4ICswOTAwCi0KLSAgICBzaDogYWRkIHN1cHBvcnQgUmVuZXNhcyBTSDc3MjMKLQotICAgIFJlbmVzYXMgU0g3NzIzIGhhcyA1IFNDSUYsIFNELCBDYW1lcmEsIExDREMgYW5kIG90aGVyLgotICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgQ1BVIHJlZ2lzdGVyJ3MgaGVhZGVyIGZpbGUgYW5kIFNDSUYgc2VyaWFsIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBjNjU1ZmFkMDZiYTNmYjA0MmRiYzY2NzcyNGE0MGUxYTlhMDkxMjQ4Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVN1biBBdWcgMzEgMjM6MDI6MDQgMjAwOCArMDkwMAotCi0gICAgc2g6IFJlbmVzYXMgUlNLKyA3MjAzIGJvYXJkIHN1cHBvcnQKLQotICAgIFRoaXMgYWRkcyBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBSVEUgUlNLKyBTSDcyMDMgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNmVkZTc1M2RkZjUyYTdiMGY5OTJkOWJjY2JlNWU0YTA5NjhjYTQ3NQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUaHUgSnVsIDMgMjM6MTE6MDIgMjAwOCArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IFJlbmVzYXMgU0g3MjAzIHByb2Nlc3NvcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDZhZDQzZDBkZDg2YjYxMjg5NWRkYzdmNDgwZWI2Y2RmZTc5M2FkZjkKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJU3VuIEF1ZyAzMSAyMjo0ODozMyAyMDA4ICswOTAwCi0KLSAgICBzaDogQWRkIHN1cHBvcnQgU0gyL1NIMkEgd2hpY2ggaXMgQ1BVIG9mIFJlbmVzYXMgVGVjaG5vbG9neQotCi0gICAgQWRkIHN1cHBvcnQgU0gyL1NIMkEgYmFzaWMgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMGQ1M2E0N2RjMDczN2I2YWEzYTM5Y2FlZTIxNDEwYzE2OTQ0MWFlNQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglTdW4gQXVnIDMxIDIyOjQ1OjA4IDIwMDggKzA5MDAKLQotICAgIHNoOiBSZW5lc2FzIFIwUDc3ODVMQzAwMTFSTCBib2FyZCBzdXBwb3J0Ci0KLSAgICBUaGlzIGJvYXJkIGhhcyBTSDc3ODUsIDUxMk1CIEREUjItU0RSQU0sIE5PUiBGbGFzaCwKLSAgICBHcmFwaGljLCBFdGhlcm5ldCwgVVNCLCBTRCwgUlRDLCBhbmQgSTJDIGNvbnRyb2xsZXIuCi0KLSAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIHRoZSBmb2xsb3dpbmcgZnVuY3Rpb25zOgotICAgICAtIDEyOE1CIEREUjItU0RSQU0gKDI5LWJpdCBhZGRyZXNzIG1vZGUgb25seSkKLSAgICAgLSBOT1IgRmxhc2gKLSAgICAgLSBVU0IgaG9zdAotICAgICAtIEV0aGVybmV0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYjBiNjIxODkyOWJjN2RlOWE2YmRiOGU1NjRmYThlYzJlZmE3MWI0ZQotQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUaHUgSnVsIDEwIDE5OjMyOjUzIDIwMDggKzA5MDAKLQotICAgIHNoOiBhZGQgc3VwcG9ydCBmb3IgU0g3Nzg1Ci0KLSAgICBSZW5lc2FzIFNINzc4NSBoYXMgRERSMi1TRFJBTSBjb250cm9sbGVyLCBQQ0ksIGFuZCBvdGhlci4KLSAgICBUaGlzIHBhdGNoIHN1cHBvcnRzIENQVSByZWdpc3RlcidzIGhlYWRlciBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGQ2ZTA0MjU4YmU4ZjI0MDg4NDU0NjhkM2NmNzIyYTRjZjA0MzM0NDUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMDQ6NDU6NDIgMjAwOCArMDIwMAotCi0gICAgZGF2aW5jaTogZml4IHJlbWFpbmluZyBkbTY0NHhfZXRoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMDhhYjRlMTc4MGZhNjNjODhkZDVhNWFiNTJmNGZmNGVkMWVlMTg3OAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEF1ZyAzMSAwNDoyNDo1NiAyMDA4ICswMjAwCi0KLSAgICBmczogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGMxZGU3YTZkYWY5YzY1NzQ4NGUxYzZkNDMzZjAxZmNjZDQ5YTdmNDgKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMDQ6MjQ6NTUgMjAwOCArMDIwMAotCi0gICAgZGV2aWNlczogbWVyZ2UgdG8gbGlzdF9oZWFkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZWYwMjU1ZmM3NWYyODY1NWY5NjgxNDIyMDc5Mjg3ZDY4YTE0ZGJhYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEF1ZyAzMSAwNDoyNDo1MSAyMDA4ICswMjAwCi0KLSAgICB1cGRhdGUgbGludXgvbGlzdAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDcxY2IzMTIyN2JlZTc0MWIyNzRmNmMwMjc5YjJhYWMxYWI4ZTI4ZTMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBBdWcgMzEgMDA6Mzk6NDggMjAwOCArMDIwMAotCi0gICAgc21kazY0MDA6IGFkZCBnaXRpZ25vcmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmOWY2OTJlMmIxNDZkNGUzMDZiNzc3ZTZkNWY2OWYxZDcyNWI5ZWI5Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ4IDIwMDggKzAyMDAKLQotICAgIHNtZGs2NDAwOiBVc2UgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA3YzBlNWE4ZGIzZDEzNThiMGNlM2NjODVhZGEwZGU2MzQxY2E0YTE1Ci1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVN1biBBdWcgMzEgMDA6Mzk6NDcgMjAwOCArMDIwMAotCi0gICAgc21kazY0MDA6IHJlbW92ZSByZWR1bmRhbnQgYm9vdGFyZ3MgZGVmaW5pdGlvbgotCi0gICAgRG91YmxlIGJvb3RhcmdzIHNldHRpbmcgbGVhZHMgdG8gYSBkdXBsaWNhdGVkIGVudmlyb25tYW50IGVudHJ5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgMTFlZGNmZTI2MGYyMGRjZWE3OTI4NGEzZTk1MjcwOTg5ZDQzMzg1NAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ3IDIwMDggKzAyMDAKLQotICAgIEFSTTogQWRkIHN1cHBvcnQgZm9yIFMzQzY0MDAgYmFzZWQgU01ESzY0MDAgYm9hcmQKLQotICAgIFNNREs2NDAwIGNhbiBvbmx5IGJvb3QgVS1Cb290IGZyb20gTkFORC1mbGFzaC4gVGhpcyBwYXRjaCBhZGRzIGEgbmFuZF9zcGwKLSAgICBkcml2ZXIgZm9yIGl0IHRvby4gVGhlIGJvYXJkIGNhbiBhbHNvIGJvb3QgZnJvbSB0aGUgTk9SIGZsYXNoLCBidXQgZHVlIHRvCi0gICAgaGFyZHdhcmUgbGltaXRhdGlvbnMgaXQgY2FuIG9ubHkgYWRkcmVzcyA2NEtpQiBvbiBpdCwgd2hpY2ggaXMgbm90IGVub3VnaAotICAgIGZvciBVLUJvb3QuIEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBzb3VyY2VzIGJ5IFNhbXN1bmcgZm9yIFUtQm9vdCAxLjEuNi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IGUwMDU2YjM0MTA2OTc5NmVhZWExMWVhZTBmYzhlYjkzYTNkY2VhYWMKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCi0KLSAgICBOQU5EOiBhZGQgTkFORCBkcml2ZXIgZm9yIFMzQzY0WFgKLQotICAgIEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBTM0M2NFhYIE5BTkQgZHJpdmVyIGJ5IFNhbXN1bmcgZm9yIFUtQm9vdCAxLjEuNi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IDNmZTdiNTg5ZjljNzQ2M2RmMzkwNTZmODg3MjAwNmE2N2Y1NmE5MWMKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJU3VuIEF1ZyAzMSAwMDozOTo0NyAyMDA4ICswMjAwCi0KLSAgICBTM0M2NFhYOiByZW1vdmUgYnJva2VuIEhXRkxPVyBzdXBwb3J0IGZyb20gdGhlIHNlcmlhbCBkcml2ZXIKLQotICAgIEFzIG5vdGVkIGJ5IEhhcmFsZCBXZWx0ZSwgSFdGTE9XIHN1cHBvcnQgaW4gdGhlIFMzQzY0WFggc2VyaWFsIGRyaXZlciBpcwotICAgIGJyb2tlbiBhbmQgY3VycmVudGx5IHVudXNlZC4gUmVtb3ZlIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgMmZiMjhkY2Y4MjA0ODA0NWUxYmY1MDE0ZTkzOGU0ODZmYTZjMjM4MwotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ3IDIwMDggKzAyMDAKLQotICAgIHNlcmlhbDogYWRkIFMzQzY0WFggc2VyaWFsIGRyaXZlcgotCi0gICAgQmFzZWQgb24gdGhlIG9yaWdpbmFsIFMzQzY0WFggVUFSVCBkcml2ZXIgYnkgU2Ftc3VuZyBmb3IgVS1Cb290IDEuMS42LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgODI2MjgxM2NhMDRmYzU3ZjVkODg1NmUxODI4MDg1YzEzNmUwZjFlYgotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ2IDIwMDggKzAyMDAKLQotICAgIFVTQjogQWRkIHN1cHBvcnQgZm9yIE9IQ0kgY29udHJvbGxlciBvbiBTM0M2NDAwCi0KLSAgICBOb3RpY2U6IFVTQiBvbiBTM0M2NDAwIGN1cnJlbnRseSB3b3JrcyBfb25seV8gd2l0aCBzd2l0Y2hlZCBvZmYgTU1VLiBPbmUgY291bGQKLSAgICB0cnkgdG8gZW5hYmxlIHRoZSBNTVUsIGJ1dCBtYXAgYWRkcmVzc2VzIDEtdG8tMSwgYW5kIGRpc2FibGUgZGF0YSBjYWNoZSwgdGhlbgotICAgIGl0IHNob3VsZCB3b3JrIHRvbyBhbmQgd2UgY291bGQgc3RpbGwgcHJvZml0IGZyb20gaW5zdHJ1Y3Rpb24gY2FjaGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCA5YjA3NzczZjg4ODM2NjViMDAyNTAwYzE5MDUwN2U5ZmQ5OWI3MTgxCi1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVN1biBBdWcgMzEgMDA6Mzk6NDYgMjAwOCArMDIwMAotCi0gICAgQVJNOiBBZGQgYXJtMTE3NiBjb3JlIHdpdGggUzNDNjQwMCBTb0MKLQotICAgIEJhc2VkIG9uIHRoZSBvcmlnaW5hbCBTM0M2NFhYIHBvcnQgYnkgU2Ftc3VuZyBmb3IgVS1Cb290IDEuMS42LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgZmNhYWM1ODlhNjgxMTU4MTlkZGFkY2Y1YzE4ZGVkOWE1ZjllMmM3NQotQXV0aG9yOiBTYW5kZWVwIFBhdWxyYWogPHMtcGF1bHJhakB0aS5jb20+Ci1EYXRlOglTdW4gQXVnIDMxIDAwOjM5OjQ2IDIwMDggKzAyMDAKLQotICAgIEFSTSBEYVZpbmNpOiBDaGFuZ2luZyBmdW5jdGlvbiBuYW1lcyBmb3IgRU1BQyBkcml2ZXIKLQotICAgIERNNjQ0eCBpcyBqdXN0IG9uZSBvZiBhIHNlcmllcyBvZiBEYVZpbmNpIGNoaXBzIHRoYXQgdXNlIHRoZSBFTUFDIGRyaXZlci4KLSAgICBCeSByZXBsYWNpbmcgYWxsIHRoZSBmdW5jdGlvbiBuYW1lcyB0aGF0IHN0YXJ0IHdpdGggZG02NDR4XyogdG8gZGF2aW5jaV8qCi0gICAgd2UgbWFrZSB0aGVzZSBmdW5jdGlvbiBtb3JlIHBvcnRhYmxlLiBJIGhhdmUgdGVzdGVkIHRoaXMgY2hhbmdlIG9uIG15IEVWTS4KLSAgICBETTY0NjcgaXMgYW5vdGhlciBEYVZpbmNpIFNPQyB3aGljaCB1c2VzIHRoZSBFTUFDIGRyaXZlciBhbmQgaSB3aWxsCi0gICAgYmUgc2VuZGluZyBwYXRjaGVzIHRoYXQgYWRkIERhVmluY2kgRE02NDY3IHN1cHBvcnQgdG8gdGhlIGxpc3Qgc29vbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbmRlZXAgUGF1bHJhaiA8cy1wYXVscmFqQHRpLmNvbT4KLQotY29tbWl0IGZiYmIxZGUzNjljYTdkNWFjZTZmN2IwY2U5ZDBhZWUyNGE2ZjQ1N2IKLUF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLURhdGU6CVNhdCBBdWcgMzAgMjM6MjE6MzAgMjAwOCArMDIwMAotCi0gICAgSW50ZWdyYXRvcltBUC9DUF0gLSBSZW1vdmUgdW51c2VkIGZpbGUgbWVtc2V0dXAuUwotCi0gICAgLSBtZW1zZXR1cC5zIGlzIGNoYW5nZWQvbWVyZ2VkIHRvIGxvd2xldmVsX2luaXQuUwotICAgICAgbWVtc2V0dXAuUyBoYXMgYSBnbG9iYWwgbGFiZWwgbWVtc2V0dXAgdGhhdCBqdXN0IHJldHVybnMgYmFjayB0byBjYWxsZXIKLSAgICAtIG1lbXNldHVwIGdsb2JhbCBsYWJlbCBpcyBjaGFuZ2VkL21lcmdlZCB0byBsb3dsZXZlbF9pbml0Ci0gICAgICBUaGlzIGxhYmVsIGlzIG5vdCBjYWxsZWQgZnJvbSBhbnl3aGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLQotY29tbWl0IDg5ZDUxZDAyMmE2M2JlMWE4NTFlZGE5ODNjOGNiY2UxYTA0NGY2NWYKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglXZWQgQXVnIDI3IDIxOjM1OjUyIDIwMDggKzAyMDAKLQotICAgIEFSTSBEYVZpbmNpOiBTdGFuZGFyZGl6ZSBuYW1lcyBvZiBkaXJlY3Rvcmllcy9maWxlcwotCi0gICAgQVJNIERhVmluY2k6IFN0YW5kYXJkaXplIG5hbWVzIG9mIGRpcmVjdG9yaWVzL2ZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDI2NGJiZGQxMWQwMWYxNGY1ZWE0NjI5NTU2YWU2M2IwMGIxMzQwMmQKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglGcmkgSnVsIDExIDE1OjEwOjEzIDIwMDggLTA0MDAKLQotICAgIEFSTSBEYVZpbmNpOiBNb3ZlIGNvbW1vbiBmdW5jdGlvbnMgdG8gYm9hcmQvZGF2aW5jaS9jb21tb24KLQotICAgIEFSTSBEYVZpbmNpOiBNb3ZlIGNvbW1vbiBmdW5jdGlvbnMgdG8gYm9hcmQvZGF2aW5jaS9jb21tb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLQotY29tbWl0IGMyYjRiMmU0ODE0ZjRhY2U5MDE1ZmRiNjQxMzI4OTQzMjc0MDBiZjAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyAyOSAxMTo1Njo0OSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHgvTkFORDogQWRkIHNlbGVjdF9jaGlwIGZ1bmN0aW9uIHRvIDR4eCBOREZDIGRyaXZlcgotCi0gICAgVGhpcyBmdW5jdGlvbiBpcyBuZWVkZWQgZm9yIHRoZSBuZXcgTkFORCBpbmZyYXN0cnVjdHVyZS4gV2Ugb25seSBuZWVkCi0gICAgYSBkdW1teSBpbXBsZW1lbnRhdGlvbiB0aG91Z2ggZm9yIHRoZSBOREZDLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgM2Q0YTc0NmUyZmI0NTQ1ZjA3ZDg3MTA0OTgwNWZiMzRhZTk3Y2M5NAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgQXVnIDI5IDEyOjA2OjI3IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogSW5jcmVhc2UgaW1hZ2Ugc2l6ZSBmb3IgTkFORCBib290IHRhcmdldAotCi0gICAgVGhpcyBpcyBuZWVkZWQgc2luY2Ugbm93IHdpdGggSFVTSCBlbmFibGVkIChhbWNjLWNvbW1vbi5oKSB0aGUgaW1hZ2UKLSAgICByZWFkIGZyb20gTkFORCBleGNlZWRzIHRoZSBwcmV2aW91cyBsaW1pdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZiNTA0OWQwNTZjZDhlZjcyZDFmMmY0NjFjZWIyZDAzM2Q5M2Y3NTkKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVRodSBBdWcgMjggMjM6NTg6MzAgMjAwOCAtMDcwMAotCi0gICAgTW92ZSBNUEM1MTJ4X0ZFQyBkcml2ZXIgdG8gZHJpdmVycy9uZXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4MGIwMGFmMDFiM2M5MTU0Nzc0ZGUyOTM2ZjA1YTA1MWU5MmY2YTAzCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDIzOjU4OjI5IDIwMDggLTA3MDAKLQotICAgIE1vdmUgTVBDNXh4eF9GRUMgZHJpdmVyIHRvIGRyaXZlcnMvbmV0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgM2RlN2JmMGU2YjFhZDI2MDgwMTQwOTZjODE5MmYxMzIyOWIyZTlkNwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIEF1ZyAyOSAyMTo1Mzo1NyAyMDA4ICswMjAwCi0KLSAgICBjbWRfdGVybWluYWw6IHJlbW92ZSBubyBuZWVkIGlmZGVmCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTc4MTE4YmRmMTIyODc3YWU3Njk3NzZiZTAwMjI1NWJlNDQ3YjRmYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIEF1ZyAyOSAyMTo1Mzo1NyAyMDA4ICswMjAwCi0KLSAgICBjb21tb24vTWFrZWZpbGU6IG9yZGVyIGJ5IGZ1bmN0aW9uYWxpdHkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiYTdiNWIyMzQ4YjY4NGNmOGVjNDI0YjJlMzhlMjY3ZGMxY2ZkMmZiCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgQXVnIDI5IDIxOjUzOjU2IDIwMDggKzAyMDAKLQotICAgIG1paXBoeXV0aWw6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA4MTc4OWMzOWRiM2YwZjZiNjIxZGY4YzBlYzY2MDE0ZDcwMWYzNjhlCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgQXVnIDI5IDIxOjUzOjM3IDIwMDggKzAyMDAKLQotICAgIGF1dG9zY3JpcHQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiYmY1MmRmOWFhOTRmZmIxMTViOGIxZWJlYjAwZDAxMzc0YmIwYTFkCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgQXVnIDI5IDAxOjE4OjExIDIwMDggKzAyMDAKLQotICAgIGNyYzE2OiBtb3ZlIHRvIGxpYl9nZW5lcmljCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTUxOTU3NzNlYWNlZmIyMmRkNDgzYTNjNTYwZWEzMGExNDI2M2NlMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIEF1ZyAyOSAwMToxODowMSAyMDA4ICswMjAwCi0KLSAgICBtaWlwaHliYjogbW92ZSB0byBkcml2ZXJzL25ldC9waHkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlODMxNDAzNTk5NmE5MTE4YWM1OTQ4ZGYyZmY4YTJmMjE2MWVkNjdhCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDEyOjMxOjUxIDIwMDggKzAyMDAKLQotICAgIHNvZnRfc3BpOiBtb3ZlIHRvIGRyaXZlcnMvc3BpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNGQ3NWUwYWE5Y2FjYTY0ZDRhMWQ1NWQ5NWNkMWNhNWYzMGQ5ZmM1NgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IEF1ZyAyOCAxMjozMTo1MSAyMDA4ICswMjAwCi0KLSAgICBzb2Z0X2kyYzogbW92ZSB0byBkcml2ZXJzL2kyYwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDcxN2EyMjIyMjlmZGI3NzcwM2U5MTc0ZDBlYjA4YTRiNDFmZWJmNDkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBBdWcgMjggMTI6MzE6NDggMjAwOCArMDIwMAotCi0gICAgZ3VuemlwOiBtb3ZlIHRvIGxpYl9nZW5lcmljCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTJhZWY4ZjliYTI4Yjc0Nzk3M2JmNzY3NDFjMjNkYjY1OGQ1NzczYwotQXV0aG9yOiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KLURhdGU6CVR1ZSBBdWcgMjYgMTk6NTU6MjMgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBOQU5EIGNvbmZpZ3VyYXRpb24KLQotICAgIE1hZGUgTkFORCBiYW5rIGNvbmZpZ3VyYXRpb24gc2V0dGluZyBhIGNvbmZpZyB2YXJpYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIE9ja2VyIDx3ZW9AcmVjY293YXJlLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDViYzU0MmE1OTNhYmM5ZTk3NGZiZDM0NzA0YWY4NWMzN2MzNjZjNjAKLUF1dGhvcjogVmljdG9yIEdhbGxhcmRvIDx2Z2FsbGFyZG9AYW1jYy5jb20+Ci1EYXRlOglUaHUgQXVnIDI4IDE2OjAzOjI4IDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogZml4IFVJQyBleHRlcm5hbF9pbnRlcnJ1cHQgaGFuZyBvbiBVSUMwCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgVUlDIGV4dGVybmFsX2ludGVycnVwdCBoYW5nIGlmIGNyaXRpY2FsIG9yIG5vbi1jcml0aWNhbAotICAgIGludGVycnVwdCBpcyBzZXQgYXQgdGhlIHNhbWUgdGltZSBhcyBhIG5vcm1hbCBpbnRlcnJ1cHQgaXMgc2V0IG9uIFVJQzAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaWN0b3IgR2FsbGFyZG8gPHZnYWxsYXJkb0BhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwNDczN2Q1ZmZkMTYyNDhjYjgwYWIzZGQ0ZjM3NjUwNTdhODAzZjE4Ci1BdXRob3I6IFByb2R5dXQgIEhhemFyaWthIDxwaGF6YXJpa2FAYW1jYy5jb20+Ci1EYXRlOglXZWQgQXVnIDI3IDE2OjM5OjAwIDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogT3B0aW1pemF0aW9ucy9DbGVhbnVwcyBmb3IgSUJNIEREUjIgTWVtb3J5IENvbnRyb2xsZXIKLQotICAgIFJlbW92ZWQgTWFnaWMgbnVtYmVycyBmcm9tIEluaXRpYWxpemF0aW9uIHByZWxvYWQgcmVnaXN0ZXJzCi0gICAgVGVzdGVkIHdpdGggS2lsYXVlYSwgR2xhY2llciwgQ2FueW9ubGFuZHMgYW5kIEthdG1haSBib2FyZHMKLSAgICBBYm91dCA1LTclIGltcHJvdmVtZW50IHNlZW4gZm9yIExNQmVuY2ggbWVtdGVzdHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFByb2R5dXQgSGF6YXJpa2EgPHBoYXphcmlrYUBhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4YTQ5MDQyMmJlZDY4NWM5NDkxMjc0ZWM5OTdmNjIwNjFkODg2MjBiCi1BdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAyOCAxMzoxNzowNyAyMDA4IC0wNjAwCi0KLSAgICBBRFM1MTIxOiBGaXggTk9SIGFuZCBDUExEIEFMRSB0aW1pbmcgZm9yIHJldiAyIHNpbGljb24KLQotICAgIE1QQzUxMjEgcmV2IDIgc2lsaWNvbiBoYXMgYSBuZXcgcmVnaXN0ZXIgZm9yIGNvbnRyb2xsaW5nIGhvdyBsb25nCi0gICAgQ1MgaXMgYXNzZXJ0ZWQgYWZ0ZXIgZGVhc3NlcnRpb24gb2YgQUxFIGluIG11bHRpcGxleGVkIG1vZGUuCi0KLSAgICBUaGUgZGVmYXVsdCBpcyB0byBhc3NlcnQgQ1MgdG9nZXRoZXIgd2l0aCBBTEUuICBUaGUgYWx0ZXJuYXRpdmUKLSAgICBpcyB0byBhc3NlcnQgQ1MgKEFMRU4rMSkqTFBDX0NMSyBjbG9ja3MgYWZ0ZXIgZGVhc3NlcnRpb24gb2YgQUxFLgotCi0gICAgVGhlIGRlZmF1bHQgaXMgd3JvbmcgZm9yIHRoZSBOT1IgZmxhc2ggYW5kIENQTEQgb24gdGhlIEFEUzUxMjEuCi0KLSAgICBUaGlzIHBhdGNoIHR1cm5zIG9uIHRoZSBhbHRlcm5hdGl2ZSBmb3IgQ1MwIChOT1IpIGFuZCBDUzIgKENQTEQpCi0gICAgaXQgZG9lcyBzbyBjb25kaXRpb25hbGx5IGJhc2VkIG9uIHNpbGljb24gcmV2IDIuMCBvciBncmVhdGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGhhIEogTWFyeCA8bW1hcnhAc2lsaWNvbnRreC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1ZDlhNWVmYTRiMzMyZjQ0MmI1NGE3NTVkNDk5NjkxMjNjM2E4NzQyCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDE5IDAwOjU2OjQ2IDIwMDggKzA2MDAKLQotICAgIEFkZCBJMkMgZnJlcXVlbmN5IGRpdmlkZXJzIGZvciBDb2xkRmlyZQotCi0gICAgVGhlIGV4aXN0aW5nIEkyQyBmcmVxZW5jeSBkaXZpZGVycyBmb3IgRkRSIGRvZXMgbm90IGFwcGx5Ci0gICAgdG8gQ29sZEZpcmUgcGxhdGZvcm1zOyB0aHVzLCBhIHNlcGVyYXRlIHRhYmxlIGlzIGFkZGVkCi0gICAgYmFzZWQgb24gTUNGNXh4eCBSZWZlcmVuY2UgTWFudWFsCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSAnQ29taW8nIE1hbnRlbGxpbmkgPGx1aWdpLm1hbnRlbGxpbmlAaWRmLWhpdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogVGFiaSBUaW11ciA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVlYzU2N2E2N2UwMGQxZWQ4ZDk0MWU5MDk4YjdkNDIxZjQwOTFhYmYKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTkgMDM6MDE6MTkgMjAwOCArMDYwMAotCi0gICAgQ29sZEZpcmU6IEkyQyBmaXggZm9yIG11bHRpcGxlIHBsYXRmb3JtcwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ1M2NmNmE5Yzc0MjNjYmE2NjhiODY3OTc4NjQ4NjQ1ZjcxYzMwOTAKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTkgMDA6Mzc6MTMgMjAwOCArMDYwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBDT05GSUdfTUlJX0lOSVQgZm9yIE01MjcyQzMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNzhjZWQzMDI4ZDQxMzBiMjRhMzE4OTQzYTcwY2Y1NTg0YWIxNmY0Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDE5IDAwOjI2OjI1IDIwMDggKzA2MDAKLQotICAgIENvbGRGaXJlOiBNdWx0aXBsZSBmaXhlcyBmb3IgTUNGNTQ0NXggcGxhdGZvcm1zCi0KLSAgICBBZGQgRkVDIHBpbiBzZXQgYW5kIG1paSByZXNldCBpbiBfX21paV9pbml0KCkuIENoYW5nZQotICAgIGxlZ2FjeSBmbGFzaCB2ZW5kb3IgZnJvbSAyIHRvIEFNRCBMRUdBQ1kgKDB4RkZGMCksCi0gICAgY2hhbmdlIGNmaV9vZmZzZXQgdG8gMCwgYW5kIGNoYW5nZSBDRkdfRkxBU0hfQ0ZJIHRvCi0gICAgQ09ORklHX0ZMQVNIX0NGSV9MRUdBQ1kuIENvcnJlY3QgTTU0NDUxRVZCIGFuZAotICAgIE01NDQ1NUVWQiBlbnYgc2V0dGluZ3MgaW4gY29uZmlndXJhdGlvbiBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ1NGU3MjViM2E5NTM3YjdmMjczYmJkMGNiY2ExODBmMjNhN2E2ZTgKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBdWcgMTUgMTg6MjQ6MjUgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IENoYW5nZSB0aGUgU0RSQU0gQlJEMldUIHRpbWluZyBmcm9tIDMgdG8gNwotCi0gICAgVGhlIHVzZXIgbWFudWFscyByZWNvbW1lbmQgNy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1cnQgTWFoYW4gPGttYWhhbkBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzllMDc5OWNmNmU4OGQ5OGQ3N2IyMTZhNTUyMzRiZjY3NGI1OWE0ZQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAxNSAxNjo1MDowNyAyMDA4ICswMDAwCi0KLSAgICBDb2xkRmlyZTogUmFpc2UgdWFydCBiYXVkcmF0ZSB0byAxMTUyMDAgYnBzCi0KLSAgICBNNTI0OUVWQiwgTTUyNzFFVkIsIE01MjcyQzMsIE01Mjc1RVZCIGFuZCBNNTI4MkVWQiBwbGF0Zm9ybXMKLSAgICB1YXJ0IGJhdWRyYXRlIGluY3JlYXNlIGZyb20gMTkyMDAgdG8gMTE1MjAwIGJwcwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFiNmJhODQyNjgyNTUyY2NmMDcxZDAwMzRkYTBhMjA2MzNkMWQxYWMKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMTI6MDc6MDMgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBib2FyZC5jIHdhcm5pbmcgbWVzc2FnZQotCi0gICAgSW1wbGljaXQgZGVjbGFyYXRpb24gb2YgbmFuZF9pbml0KCkgd2FybmluZyBtZXNzYWdlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTc5OGIxYzQ2NTBlOWE4NzEzYzk1YjI1YzFlNjY5YTJiYzgwYTk3YgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEF1ZyAyNyAwMToxMDozNCAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBSZW1vdmUgZHVwbGljYXRlIHNldHRpbmcgb2YgY3MwX2JuZHMgcmVnaXN0ZXIgb24gODZ4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNThjMzdiMTQ3MzUzYmM1MjJmZmMzM2RmYmQ3ZDBkOWNkN2MzMmQ3Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyAyMSAyMDo0NDo0OSAyMDA4ICswMjAwCi0KLSAgICBtcGM1Mnh4OiBhZGRlZCBzdXBwb3J0IGZvciB0aGUgTVBDNTIwMCBiYXNlZCBNVUMuTUM1MiBib2FyZCBmcm9tIE1BTi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgOWNmZjQ0NDhhOWNiODgyZGVmZTZjOGJkZTczYjc3ZmMwYzYzNjc5OQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAxOSAxNDo0NjozNiAyMDA4IC0wNTAwCi0KLSAgICBtcGM4NXh4OiByZW1vdmUgcmVkdWRhbnQgY29kZSB3aXRoIGxpYl9wcGMvaW50ZXJydXB0cy5jCi0KLSAgICBGb3Igc29tZSByZWFzb24gd2UgZHVwbGljYXRlZCB0aGUgbWFqb3JpdHkgb2YgY29kZSBpbiBsaWJfcHBjL2ludGVycnVwdHMuYwotICAgIG5vdCBzaG93IGhvdyB0aGF0IGhhcHBlbmVkLCBidXQgdGhlcmUgaXMgbm8gZ29vZCByZWFzb24gZm9yIGl0LgotCi0gICAgVXNlIHRoZSBpbnRlcnJ1cHRfaW5pdF9jcHUoKSBhbmQgdGltZXJfaW50ZXJydXB0X2NwdSgpIHNpbmNlIGl0cyB3aHkKLSAgICB0aGV5IGV4aXN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDk0OTBhN2YxYTk0ODQ2MTdiYWQ3NWM2MDgwN2NlMDJjOGEzYTZkNTYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBKdWwgMjUgMTM6MzE6MDUgMjAwOCAtMDUwMAotCi0gICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4NTM2RFMgcmVmZXJlbmNlIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZWphbiBNaW5pYyA8bWluaWNAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGVmNTBkNmMwNmVjZTc0ZmIxN2U4ZDc1MTBlNjJjYWQ5ZGY4YjgxMGQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMTIgMTE6MTQ6MTkgMjAwOCAtMDUwMAotCi0gICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4NTM2Ci0KLSAgICBUaGUgTVBDODUzNiBBZGRzIFNESEMgYW5kIFNBVEEgY29udHJvbGxlcnMgdG8gdGhlIFBRMyBmYW1pbHkuICBXZQotICAgIGFsc28gaGF2ZSBTRVJERVMgaW5pdCBjb2RlIGZvciB0aGUgODUzNi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3Jpa2FudGggU3Jpbml2YXNhbiA8c3Jpa2FudGguc3Jpbml2YXNhbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERlamFuIE1pbmljIDxtaW5pY0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDEyOWJhNjE2YjM4MTNkZGU4NjFmMjVmM2Q4YTNjNDdjNWMzNmFkNWYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMTIgMTE6MTM6MDggMjAwOCAtMDUwMAotCi0gICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4NTcyRFMgcmVmZXJlbmNlIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDU3Y2FlY2RiY2EzZGYyMWE5M2FiZmYxOWVhYjEyZGJjNjFiNzg5NwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEF1ZyAyNyAwMTowNTozNSAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBSZW1vdmUgb2xkIFNQRCBzdXBwb3J0IGZyb20gY3B1L21wYzg1eHgKLQotICAgIEFsbCA4NXh4IGJvYXJkcyBoYXZlIGJlZW4gY29udmVydGVkIHRvIHRoZSBuZXcgY29kZSBzbyB3ZSBjYW4KLSAgICByZW1vdmUgdGhlIG9sZCBTUEQgRERSIHNldHVwIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMGU3OTI3ZGIxMzg5NzY0NjllNzI1N2UyOWMxMzM4MDUwYTUwZmNkOQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEF1ZyAyNyAwMTowNDowNyAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IFNUWFNTQSB0byBuZXcgRERSIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzM2MGQ5Yjk3MGZiYjljMTM3NDRjMzU1ODc5NjcxMTY1YmJiOWI5ZQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEF1ZyAyNyAwMTowMzo0MiAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IFNUWEdQMyB0byBuZXcgRERSIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOGU1NTMxM2I3YWUxMjM1MmEzNDNmOWI5OTYyZTY2MmRiZDg5NzE4NwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAyMzo1Mjo1OCAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IFNCQzg1NjAgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDk2NThiZWMyZThmNTVkNTZjYTFiZTcwMDkwY2U1YTM0OGJlNDk4MGYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMjYgMjM6NTI6MzIgMjAwOCAtMDUwMAotCi0gICAgRlNMIEREUjogQ29udmVydCBNUEM4NTQwRVZBTCB0byBuZXcgRERSIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNmJmYThmNzIzY2ZkODJjNTVlM2VmNTYyMGFkZTM5NjkxNjQ3MGE3MAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAyMzo1MjowNyAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IFBNODU2IHRvIG5ldyBERFIgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkNTNiZDNlMTdiZDRmNDYwMjU3YzE5MjU1NTY5ZWE2ZGNmYWFlODE3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgQXVnIDI2IDIzOjUxOjQ5IDIwMDggLTA1MDAKLQotICAgIEZTTCBERFI6IENvbnZlcnQgUE04NTQgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDMzYjkwNzliYTIwOTI2ZjE0MjM4ZmZmODYzYjY4YTk4ZTkzODk0OGUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMjYgMjM6MTU6MjggMjAwOCAtMDUwMAotCi0gICAgRlNMIEREUjogQ29udmVydCBzYmM4NTQ4IHRvIG5ldyBERFIgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhOTQ3ZTRjN2ViMTVjZWExZDlmYjYzMzk1NWM1MTZhYWI1YWQzNWRkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgQXVnIDI2IDIzOjE0OjE0IDIwMDggLTA1MDAKLQotICAgIEZTTCBERFI6IENvbnZlcnQgYXR1bTg1NDggdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGJlMGJkODIzNGI5Nzc3ZWNkNjNjNGM2ODZmNzJhZjA3MGQ4ODY1MTcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMjYgMjI6NTY6NTYgMjAwOCAtMDUwMAotCi0gICAgRlNMIEREUjogQ29udmVydCBzb2NyYXRlcyB0byBuZXcgRERSIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMTE2N2EyZmQ1NjEzOGI3MTZlMDEzNzBjNDI2N2YzYjcwYmY5ZmZhMAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAwODowMjozMCAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg1NDREUyB0byBuZXcgRERSIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZTZmNWIzNWI0MWRkYmQ2MzdiYjljYTRhZDk4NWIxZTBiMDdkYWUwZQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE1hciAxOCAxMzo1MTowNSAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg1NjhNRFMgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZTMxZDJjMWUyYmM5NTRkYzMyZTMzYmIyMDc2MTM5Zjg1Yjk1ZjhlNgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE1hciAxOCAxMzo1MTowNiAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg1NDhDRFMgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYWExMWQ4NWNmMzE4Yjk2MWUwMjlmZTUwZDY4Y2E0N2QwMDRiY2U5MwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAxNyAxNTo0ODoxOCAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg1NDFDRFMgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMmI0MGVkYjEwZDgxZGE3YmJhNzI0ZWRiY2NkN2Y1Mzc3NzExMjU3OQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE1hciAxOCAxMToxMjo0MiAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg1NTVBRFMgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOGI2MjUxMTRlOGJjNWE2YjQzNjE4MTE2N2E2ZTdmY2QzMzAzZGQyYwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE1hciAxOCAxMToxMjo0NCAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg1NjBBRFMgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOTYxN2M4ZDQ5YTIxNzAzZWFmMTNhNDAzM2FiMWE1NmVlY2MwMzNjYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEp1biA2IDEzOjEyOjE4IDIwMDggLTA1MDAKLQotICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODU0MEFEUyB0byBuZXcgRERSIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMmE2YzJkN2FiMmE2NjY2MGY0MGE2Y2QzZGUyZWIyOWVlMjlkOTY5MwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAyMTozNDo1NSAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBBZGQgODV4eCBzcGVjaWZpYyByZWdpc3RlciBzZXR0aW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNmZiMWI3MzQ2ODQ5Y2NkMGMyMDMwNjE0M2UzMzRmNWI3NjE0MzA3MAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEp1biA5IDExOjA3OjQ2IDIwMDggLTA1MDAKLQotICAgIEZTTCBERFI6IEFkZCBlNTAwIFRMQiBoZWxwZXIgZm9yIEREUiBjb2RlCi0KLSAgICBQcm92aWRlIGEgaGVscGVyIGZ1bmN0aW9uIHRoYXQgYm9hcmQgY29kZSBjYW4gY2FsbCB0byBtYXAgVExCcyB3aGVuCi0gICAgc2V0dGluZyB1cCBERFIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZDI2YjczOWFmZTVhNjc2MGJkMzQ1NzQzMTg4NzU5Y2Q5ZDBmM2I0NwotQXV0aG9yOiBBbmRyZXcgRHllciA8YWR5ZXJAcmlnaHRoYW5kdGVjaC5jb20+Ci1EYXRlOglUdWUgQXVnIDI2IDE3OjAzOjM4IDIwMDggLTA1MDAKLQotICAgIGRtOTAwMCByZW1vdmUgZGVhZCBleHRlcm5hbCBwaHkgc3VwcG9ydCwgZ3BpbyBmaXgKLQotICAgIGRtOTAwMCBoYXMgY29kZSB0byBkZXRlY3QgYW5kIGluaXRpYWxpemUgZXh0ZXJuYWwgcGh5IHBhcnRzLCBidXQgbGF0ZXIKLSAgICBvbiBpbiB0aGUgY29kZSB0aGUgcGFydCBpcyBmb3JjZWQgdG8gdXNlIHRoZSBpbnRlcm5hbCBwaHkKLSAgICB1bmNvbmRpdGlvbmFsbHkuICBSZW1vdmUgdGhlIHVudXNlZC91bnRlc3RlZCBjb2RlLgotCi0gICAgY2hhbmdlIHRoZSBHUElPIGluaXRpYWxpemF0aW9uIHNvIHRoYXQgb25seSB0aGUgR1BJTyB1c2VkIGFzIGFuCi0gICAgaW50ZXJuYWwgcGh5IHJlc2V0IChoYXJkd2lyZWQgaW4gdGhlIGNoaXApIGlzIHNldCBhcyBhbiBvdXRwdXQuICBUaGUKLSAgICByZW1haW5pbmcgR1BJTyBuZWVkIHRvIGJlIGhhbmRsZWQgYnkgYm9hcmQgc3BlY2lmaWMgY29kZSB0byBwcmV2ZW50Ci0gICAgcG9zc2libGUgZHJpdmUgY29uZmxpY3RzLiAgU2V0IGFzIGlucHV0cyBmb3Igc2FmZXR5LgotCi0gICAgcmVwbGFjZSBhIGZldyBtYWdpYyBudW1iZXJzIHdpdGggZGVmaW5lcwotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmV3IER5ZXIgPGFkeWVyQHJpZ2h0aGFuZHRlY2guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhMTU3M2RiMGMwN2M4YmE5OWU5YzM3M2JiMDdlY2Q2ZjU5ZGE2NzJjCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgQXVnIDI2IDExOjE3OjQ4IDIwMDggLTA1MDAKLQotICAgIFN0YW5kYXJkaXplIGJvb3RwLCB0ZnRwYm9vdCwgcmFycGJvb3QsIGRoY3AsIGFuZCBuZnMgY29tbWFuZCBkZXNjcmlwdGlvbnMKLQotICAgIGNtZF9uZXQuYyBjb21tYW5kIGRlc2NyaXB0aW9ucyB3ZXJlIHVwZGF0ZWQgdG8gZGVzY3JpYmUgdGhlIG9wdGlvbmFsCi0gICAgaG9zdElQYWRkciBhcmd1bWVudC4gIFRoZSBkaGNwIGNvbW1hbmQgaGVscCBtZXNzYWdlIHdhcyBhbHNvIHVwZGF0ZWQKLSAgICB0byBtb3JlIGNsb3NlbHkgcmVmbGVjdCB0aGUgb3RoZXIgY29tbWFuZHMgaW4gY21kX25ldC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1MWRmZTEzODJlYmFmNjkxNDg1YmFkZmEwZWE1ZTc1YjA3MTA1MzFiCi1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJV2VkIEF1ZyAyMCAxMTozMDoyOCAyMDA4ICswMjAwCi0KLSAgICBGaXggYm9ndXMgZXJyb3IgbWVzc2FnZSBpbiB0aGUgREhDUCBoYW5kbGVyCi0KLSAgICBUaGUgREhDUCBoYW5kbGVyIGhhcyAxIHN0YXRlIHRoYXQgaXMgbm90IGxpc3RlZCBpbiB0aGlzIGNhc2UsIGNhdXNpbmcgYQotICAgIGZhaWx1cmUgbWVzc2FnZSB3aGVuIHRoZXJlIGlzIGFjdHVhbGx5IG5vIGZhaWx1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNjEzNjU1MDFhMGUyY2FlOWMxZGYyODE4YjdiNWIzZjUyYzQ1MGQxOAotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVdlZCBBdWcgMjAgMTE6MzA6MjcgMjAwOCArMDIwMAotCi0gICAgRml4IGNvbXBpbGUgZXJyb3Igd2hlbiBDT05GSUdfQk9PVFBfUkFORE9NX0RFTEFZIGlzIHNldC4KLQotICAgIFRoZSBvcHRpb24gQ09ORklHX0JPT1RQX1JBTkRPTV9ERUxBWSBkb2VzIG5vdCBjb21waWxlLCBiZWNhdXNlIG9mIGEKLSAgICBtaXNzaW5nIGV4dGVybiBpbnNpZGUgdGhlIG5ldC9ib290cC5oIGhlYWRlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDE4MDNmN2Y5MWZmMzVjYTQwMjI1OTA2NWRmNzU1NzEwN2RjZjI4YTIKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTkgMjE6MjY6MzIgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBGRUMgQnVmZmVyIGRlc2NyaXB0b3JzIGluIFNSQU0KLQotICAgIEFkZCBGRUMgQnVmZmVyIGRlc2NyaXB0b3JzIGFuZCBkYXRhIGJ1ZmZlciBpbiBTUkFNIGZvcgotICAgIGZhc3RlciBleGVjdXRpb24gYW5kIGFjY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDQyOWJlMjdjZTE5NTIxMGQ0YjlkZWNmOWU4NjdiOWNhNjE1NWE4N2QKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMjEgMjM6NTU6MTEgMjAwOCArMDAwMAotCi0gICAgRml4IENvbGRGaXJlIEZFQyB3YXJuaW5nIG1lc3NhZ2VzCi0KLSAgICBUeXBlcyBtaXNtYXRjaCBhbmQgaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgaWNhY2hlX2ludmFsaWQoKQotICAgIHdhcm5pbmcgbWVzc2FnZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDZhMDAyMTcxMDk4ZTk2OGJkNWIzNjIzNDdkMjgzMTIyNGZhYjYwNDgKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBKdWwgMTIgMDA6MTc6NTAgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgU0tHRSBFdGhlcm5ldCBkcml2ZXIgdG8gYm9hcmQgY29kZS4KLQotICAgIFRoZSBvbmx5IGJvYXJkIHVzaW5nIHRoaXMgZHJpdmVyIGlzIHRoZSBTTDgyNDUgYm9hcmQuCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDgzNzlmNDJiYzc0NWViOWU0Y2E1NTFhMzBmZDJkMGE2M2Y3NDBkNzUKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBKdWwgMTIgMDA6MDg6NDUgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUgZm9yIFNLOTggRXRoZXJuZXQgZHJpdmVyCi0KLSAgICBCcnV0ZS1mb3JjZSByZW1vdmFsIG9mICNpZmRlZnMuICBEaWRuJ3QgdG91Y2ggdGhlIGNvZGUuCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDY1ZDNkOTljMjhkYzM2M2QxNWVhZWU3ODIyNWZmNjQzZGY0OTliOTcKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBKdWwgMTEgMjM6NDI6MTkgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgVUxJNTI2WCBFdGhlcm5ldCBkcml2ZXIgdG8gYm9hcmQgY29kZS4KLQotICAgIFRoZSBvbmx5IGJvYXJkIHVzaW5nIHRoaXMgZHJpdmVyIGlzIHRoZSBGcmVlc2NhbGUgTVBDODYxMEhQQ0QgYm9hcmQuCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIGRyaXZlciBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDkxNDk0NzMxM2E3MTBmNWRjZjA2YmVhZjdmMmFhMjRmMWViY2NlNGYKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBKdWwgMTEgMjM6MTU6MjggMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgQmxhY2tmaW4gRU1BQyBFdGhlcm5ldCBjb250cm9sbGVyIHRvIGJvYXJkX2V0aF9pbml0KCkKLQotICAgIEFkZGVkIGJvYXJkX2V0aF9pbml0KCkgZnVuY3Rpb24gdG8gYmY1Mzctc3RhbXAgYm9hcmQuCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbiBmb3IgdGhlIEJsYWNraW4gRU1BQyBkcml2ZXIgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmYzM2M2NlMzU0MDhmMzQ4Y2FjY2VkNjg1MDVmMzc0N2E1M2UzZDdjCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglXZWQgSnVsIDkgMDE6MDQ6MTkgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgR1JFVEggRXRoZXJuZXQgZHJpdmVyIHRvIENQVSBkaXJlY3RvcnkKLQotICAgIEFkZGVkIGEgY3B1X2V0aF9pbml0KCkgZnVuY3Rpb24gdG8gbGVvbjIvbGVvbjMgQ1BVIGRpcmVjdG9yaWVzIGFuZAotICAgIHJlbW92ZWQgY29kZSBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDg2ODgyYjgwNzcxMzA5YmNlYjExYzZhY2NmZDdmNmY5MGFkZThiZmMKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjYgMjI6MTY6MjUgMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgTUNGRkVDIEV0aGVybmV0IGRyaXZlciB0byBDUFUgZGlyZWN0b3J5Ci0KLSAgICBBZGRlZCBhIGNwdV9ldGhfaW5pdCgpIGZ1bmN0aW9uIHRvIGNvbGRmaXJlIENQVSBkaXJlY3RvcmllcyBhbmQKLSAgICByZW1vdmVkIGNvZGUgZnJvbSBuZXQvZXRoLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBiMzFkYTg4YjljMTYwZDgwZDQyYTU5Y2JiYjMxZTI0ZjI3MTg0ZDVjCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglUdWUgQXVnIDI2IDIyOjEyOjM2IDIwMDggLTA3MDAKLQotICAgIE1vdmVkIGluaXRpYWxpemF0aW9uIG9mIEZTTF9NQ0RNQUZFQyBFdGhlcm5ldCBkcml2ZXIgdG8gQ1BVIGRpcmVjdG9yeQotCi0gICAgQWRkZWQgYSBjcHVfZXRoX2luaXQoKSBmdW5jdGlvbiB0byBjcHUvbWNmNTQ3eF84eCBkaXJlY3RvcnkgYW5kCi0gICAgcmVtb3ZlZCBjb2RlIGZyb20gbmV0L2V0aC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYjU3MTBkOTk3NGY2ZjBmM2RkYjRlNjdkNmNjY2MyNjJhYjM3MDQ5ZQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAxNTowMTozOCAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBSZW1vdmUgb2xkIFNQRCBzdXBwb3J0IGZyb20gY3B1L21wYzg2eHgKLQotICAgIEFsbCA4Nnh4IGJvYXJkcyBoYXZlIGJlZW4gY29udmVydGVkIHRvIHRoZSBuZXcgY29kZSBzbyB3ZSBjYW4KLSAgICByZW1vdmUgdGhlIG9sZCBTUEQgRERSIHNldHVwIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOWJkNGU1OTExYjc1MDgzNzUxNTQ2NmJjNzQ0OTA4NzY5OGI4OGUwZQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAxNTowMTozNyAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IFNCQzg2NDFEIHRvIG5ldyBERFIgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzOWFhMWE3MzQ4M2UxYWMyYmQ1NmQ1NTIzYWJmYzM5NzBlZTgyYzc3Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDI2IDE1OjAxOjM2IDIwMDggLTA1MDAKLQotICAgIEZTTCBERFI6IENvbnZlcnQgTVBDODYxMEhQQ0QgdG8gbmV3IEREUiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNmE4ZTU2OTI5MzNlOGU2ZDZlNWJhN2U1OTRmNDlkZDZkNGMzYTI2MwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAxNTowMTozNSAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBDb252ZXJ0IE1QQzg2NDFIUENOIHRvIG5ldyBERFIgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ2ZmY0ZjExMDBlYTY0YTAxZDIxY2MwMDhjZTg1YWMxNWViMTgyMWYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzQgMjAwOCAtMDUwMAotCi0gICAgRlNMIEREUjogQWRkIDg2eHggc3BlY2lmaWMgcmVnaXN0ZXIgc2V0dGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIzM2ZkZDUwMmE2YzIyN2Y0NzYyMTJiMzA5NzY1M2FkNDhkN2UyNTQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MzIgMjAwOCAtMDUwMAotCi0gICAgRlNMIEREUjogQWRkIEREUjIgRElNTSBwYXJhbXRlciBzdXBwb3J0Ci0KLSAgICBDb21wdXRlIERJTU0gcGFyYW1ldGVycyBiYXNlZCB1cG9uIHRoZSBTUEQgaW5mb3JtYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMDVjMDVhMjM2M2E2YWMxMWUwZTQwNTkyNjAzNDU0NmZmYWQ3MWZhZAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAxNTowMTozMCAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBBZGQgRERSMSBESU1NIHBhcmFtdGVyIHN1cHBvcnQKLQotICAgIENvbXB1dGUgRElNTSBwYXJhbWV0ZXJzIGJhc2VkIHVwb24gdGhlIFNQRCBpbmZvcm1hdGlvbiBpbiBzcGQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNThlNWU5YWZmMTQ3ZThjN2UyYmMxNDA2YmY5Mzg0ZjY1ZjAyMGZmYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEF1ZyAyNiAxNTowMToyOSAyMDA4IC0wNTAwCi0KLSAgICBGU0wgRERSOiBSZXdyaXRlIHRoZSBGU0wgbXBjOHh4eCBERFIgY29udHJvbGxlciBzZXR1cCBjb2RlLgotCi0gICAgVGhlIG1haW4gcHVycG9zZSBvZiB0aGlzIHJld3JpdGUgaXQgdG8gYmUgYWJsZSB0byBzaGFyZSB0aGUgc2FtZQotICAgIGluaXRpYWxpemF0aW9uIGNvZGUgb24gYWxsIEZTTCBQb3dlclBDIHByb2R1Y3RzIHRoYXQgaGF2ZSBERFIKLSAgICBjb250cm9sbGVycy4gICg4M3h4LCA4NXh4LCA4Nnh4KS4KLQotICAgIFRoZSBjb2RlIGlzIGJyb2tlbiB1cCBpbnRvIHRoZSBmb2xsb3dpbmcgc3RlcHM6Ci0JR0VUX1NQRAotCUNPTVBVVEVfRElNTV9QQVJNUwotCUNPTVBVVEVfQ09NTU9OX1BBUk1TCi0JR0FUSEVSX09QVFMKLQlBU1NJR05fQUREUkVTU0VTCi0JQ09NUFVURV9SRUdTCi0JUFJPR1JBTV9SRUdTCi0KLSAgICBUaGlzIGFsbG93cyB1cyB0byBzaGFyZSBtb3JlIGNvZGUgYW4gZWFzaWx5IGFsbG93IGZvciBib2FyZCBzcGVjaWZpYyBjb2RlCi0gICAgb3ZlcnJpZGVzLgotCi0gICAgQWRkaXRpb25hbGx5IHRoaXMgY29kZSBiYXNlIGFkZHMgc3VwcG9ydCBmb3IgPjRHIG9mIEREUiBhbmQgcHJvdmlkZXMgYQotICAgIGZvdW5kYXRpb24gZm9yIHN1cHBvcnRpbmcgaW50ZXJsZWF2aW5nIG9uIHByb2Nlc3NvcnMgd2l0aCBtb3JlIHRoYW4gb25lCi0gICAgY29udHJvbGxlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGY3ODRlMzJiNGJjZTAwMTM5ODM1MDZiMTFhZjRiODViOGNhM2QzNmUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MjggMjAwOCAtMDUwMAotCi0gICAgRlNMIEREUjogUHJvdmlkZSBhIGdlbmVyaWMgc2V0X2Rkcl9sYXdzKCkKLQotICAgIFByb3ZpZGUgYSBoZWxwZXIgZnVuY3Rpb24gdGhhdCB3aWxsIHNldHVwIHRoZSBsYXN0IGF2YWlsYWJsZQotICAgIExBV3MgKHVwdG8gMikgZm9yIEREUi4gIFVzZWZ1bCBmb3IgU1BEL2R5YW5taWMgRERSIHNldHRpbmcgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwZjJjYmUzZjVlZGRiZGYzODQ4MjY1ZjM1ZTRmNzE0NDM0OTI5Y2ZmCi1BdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MjcgMjAwOCAtMDUwMAotCi0gICAgQWRkIHByb3BlciBTUEQgZGVmaW5pdGlvbnMgZm9yIEREUjEvMi8zCi0KLSAgICBBbHNvIGFkZHMgaGVscGVyIGZ1bmN0aW9ucyBmb3IgRERSMS8yIHRvIHZlcmlmeSB0aGUgY2hlY2tzdW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjg1ZGI3NDcxNmM3MjRhZThhMGZmMTc3ODc4ZmQwOWE3NDQyOGM3YgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyAyNyAwMTowMjo0OCAyMDA4ICswMjAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYWRmMjJiNjZkOGJmMDViZDQ2ZTA5OGNmNzFlNmRjYTI5YjMwYWE3YgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMTkgMTA6MDg6NDkgMjAwOCArMDIwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIG11YXMzMDAxIGJvYXJkIChNUEM4MjcwKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAzMjIwOThiZmYzMjQxMGQyYTAwMDMxNjQ5YjQ3YzRlYzkwYTY2ZDlhCi1BdXRob3I6IEd1cnVyYWphIEhlYmJhciBLIFIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Ci1EYXRlOglUdWUgQXVnIDE5IDA4OjMxOjE4IDIwMDggKzA1MzAKLQotICAgIGNvbW1vbi9jbWRfbG9hZC5jIGNsZWFudXAgLSByZW1vdmUgdW51c2VkIHZhcmlhYmxlcwotCi0gICAgLSBSZW1vdmUgdW51c2VkIGdsb2JhbCB2YXJpYWJsZSBvc19kYXRhX2NvdW50LgotICAgIC0gUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSB6LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotCi1jb21taXQgMzA2NjIwYjc2MmE0ZjlmYTY2Nzg1NjhhZDJlODc3MmRlYzE0NTIwOAotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglNb24gQXVnIDE4IDEzOjM1OjI3IDIwMDggKzAyMDAKLQotICAgIHJlbW92ZSBNVlMxIGJvYXJkCi0KLSAgICBNVlMxIGJvYXJkIGhhcyByZWFjaGVkIGVuZC1vZi1saWZlIGFuZCBjYW4gYmUgcmVtb3ZlZCBjb21wbGV0ZWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotCi1jb21taXQgNDBkN2U5OWQzNzRiYTBhMGEyOWNkMWE4YmE0MGQzYjdjMmMxNzVjNwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDo0NSAyMDA4IC0wNTAwCi0KLSAgICBib290bTogcmVmYWN0b3IgZG9fcmVzZXQgYW5kIG9zIGJvb3QgZnVuY3Rpb24gYXJncwotCi0gICAgVGhlcmUgaXMgbm8gbmVlZCBmb3IgZWFjaCBPUyBzcGVjaWZpYyBmdW5jdGlvbiB0byBjYWxsIGRvX3Jlc2V0KCkgd2UKLSAgICBjYW4ganVzdCBkbyBpdCBvbmNlIGluIGJvb3RtLiBUaGlzIG1lYW5zIGl0cyBmZWFzaWJsZSBvbiBhbiBlcnJvciBmb3IKLSAgICB0aGUgT1MgYm9vdCBmdW5jdGlvbiB0byByZXR1cm4uCi0KLSAgICBBbHNvLCByZW1vdmUgcGFzc2luZyBpbiBjbWRfdGJsX3QgYXMgaXRzIG5vdCBuZWVkZWQgYnkgdGhlIE9TIGJvb3QKLSAgICBmdW5jdGlvbnMuCWZsYWcgaXNuJ3QgY3VycmVudGx5IHVzZWQgYnV0IG1pZ2h0IGJlIGluIHRoZSBmdXR1cmUgc28KLSAgICB3ZSBsZWZ0IGl0IGFsb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQwYWZhYzIyYTljNjAyZTU1YzUwMWM4MDBmMWMwNjQzMjQ3MTFiNTYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDQgMjAwOCAtMDUwMAotCi0gICAgZmR0OiBBZGRlZCByZXNpemUgY29tbWFuZAotCi0gICAgUmVzaXplIHRoZSBmZHQgdG8gc2l6ZSArIHBhZGRpbmcgdG8gNGsgYm91bmRhcnkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyYTFhMmNiNmUyYjg3ZWU1NTBlNmYyN2I2NDdkMjMzMzFkZmQ1ZTFiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgQXVnIDE1IDA4OjI0OjQzIDIwMDggLTA1MDAKLQotICAgIGZkdDogcmVmYWN0b3IgaW5pdHJkIHJlbGF0ZWQgY29kZQotCi0gICAgQ3JlYXRlZCBhIG5ldyBmZHRfaW5pdHJkKCkgdG8gZGVhbCB3aXRoIHNldHRpbmcgdGhlIGluaXRyZCBwcm9wZXJ0aWVzCi0gICAgaW4gdGhlIGRldmljZSB0cmVlIGFuZCBmaXhpbmcgdXAgdGhlIG1lbSByZXNlcnZlLiAgV2UgY2FuIHVzZSB0aGlzCi0gICAgYm90aCBpbiB0aGUgY2hvb3NlbiBub2RlIGhhbmRsaW5nIGFuZCBsZXRzIHVzIHJlbW92ZSBzb21lIGR1cGxpY2F0ZWQKLSAgICBjb2RlIHdoZW4gd2UgZml4dXAgdGhlIGluaXRyZCBpbmZvIGluIGJvb3RtIG9uIFBQQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzMDgyZDIzNDhjOGUxMzM0MmY1ZmRkMTBlOWIzZjc0MDgwNjJkYmY5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgQXVnIDE1IDA4OjI0OjQyIDIwMDggLTA1MDAKLQotICAgIGZkdDogcmVmYWN0b3IgZmR0IHJlc2l6ZSBjb2RlCi0KLSAgICBNb3ZlIHRoZSBmZHQgcmVzaXppbmcgY29kZSBvdXQgb2YgcHBjIHNwZWNpZmljIGJvb3QgY29kZSBhbmQgaW50bwotICAgIGNvbW1vbiBmZHQgc3VwcG9ydCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDM5NmY2MzViOGZmM2NjYmMzOGQ3NWQ1ZWRhOTg0NDRjNjQ2NjgxMGEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDEgMjAwOCAtMDUwMAotCi0gICAgYm9vdG06IHJlZmFjdG9yIGltYWdlIGRldGVjdGlvbiBhbmQgb3MgbG9hZCBzdGVwcwotCi0gICAgQ3JlYXRlZCBhIGJvb3RtX3N0YXJ0KCkgdGhhdCBoYW5kbGVzIHRoZSBwYXJzaW5nIGFuZCBkZXRlY3Rpb24gb2YgYWxsCi0gICAgdGhlIGltYWdlcyB0aGF0IHdpbGwgYmUgdXNlZCBieSB0aGUgYm9vdG0gY29tbWFuZCAoT1MsIHJhbWRpc2ssIGZkdCkuCi0gICAgQXMgcGFydCBvZiB0aGlzIHdlIG5vdyB0cmFjdCBhbGwgdGhlIHJlbGV2YW50IGltYWdlIG9mZnNldHMgaW4gdGhlCi0gICAgYm9vdG1faGVhZGVyc190IHN0cnVjdC4gVGhpcyB3aWxsIGFsbG93IHVzIHRvIGhhdmUgYWxsIHRoZSBuZWVkZWQKLSAgICBzdGF0ZSBmb3IgZnV0dXJlIHN1Yi1jb21tYW5kcyBhbmQgbGV0cyB1cyByZWR1Y2UgYSBiaXQgb2YgYXJjaAotICAgIHNwZWNpZmljIGNvZGUgb24gU1BBUkMuCi0KLSAgICBDcmVhdGVkIGEgYm9vdG1fbG9hZF9vcygpIHRoYXQgZGVhbHMgd2l0aCBkZWNvbXByZXNzaW9uIGFuZCBsb2FkaW5nCi0gICAgdGhlIE9TIGltYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGU5MDZjZmFlMDhlOGNjMjQ0N2Y1OWIxYmM0YzIyYWI5YzNjMjg2ZDIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6NDAgMjAwOCAtMDUwMAotCi0gICAgYm9vdG06IG1vdmUgbG1iIGludG8gdGhlIGJvb3RtX2hlYWRlcnNfdCBzdHJ1Y3R1cmUKLQotICAgIFRvIGFsbG93IGZvciBwZXJzaXN0ZW50IHN0YXRlIGJldHdlZW4gZnV0dXJlIGJvb3RtIHN1YmNvbW1hbmRzIHdlCi0gICAgbmVlZCB0aGUgbG1iIHRvIGV4aXN0IGluIGEgZ2xvYmFsIHN0YXRlLgotICAgIE1vdmluZyBpdCBpbnRvIHRoZSBib290bV9oZWFkZXJzX3QgYWxsb3dzIHVzIHRvIGRvIHRoYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTRmOWM4NjY5MTMwOWIyZjkxOWY1NjdmOTI1NWI4YmNhZDJjNzY1MQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozOSAyMDA4IC0wNTAwCi0KLSAgICBib290bTogU2V0IHdvcmtpbmcgZmR0IGFkZHJlc3MgYXMgcGFydCBvZiB0aGUgYm9vdG0gZmxvdwotCi0gICAgU2V0IHRoZSBmZHQgd29ya2luZyBhZGRyZXNzIHNvICJmZHQgRk9PIiBjb21tYW5kcyBjYW4gYmUgdXNlZCBhcyBwYXJ0Ci0gICAgb2YgdGhlIGJvb3RtIGZsb3cuCUFsc28gc2V0IGFuIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAiZmR0YWRkciIKLSAgICB3aXRoIHRoZSB2YWx1ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwNmEwOTkxOGYzOTAzNDUwMzEzZTIwNDdhOWNjMjU4YmY1ODcyZjQ2Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgQXVnIDE1IDA4OjI0OjM4IDIwMDggLTA1MDAKLQotICAgIGJvb3RtOiByZWZhY3RvciBmZHQgbG9jYXRpbmcgYW5kIHJlbG9jYXRpb24gY29kZQotCi0gICAgTW92ZSB0aGUgY29kZSB0aGF0IGhhbmRsZXMgZmluZGluZyBhIGRldmljZSB0cmVlIGJsb2IgYW5kIHJlbG9jYXRpbmcKLSAgICBpdCAoaWYgbmVlZGVkKSBpbnRvIGNvbW1vbiBjb2RlIHNvIGFsbCBhcmNoJ3MgaGF2ZSBhY2Nlc3MgdG8gaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzRmOTQxOWM2YjU0OTU4ZTBlZGRiY2JjOWU1YTRhN2I3ZWM5OTg2NQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNyAyMDA4IC0wNTAwCi0KLSAgICBib290bTogcmVmYWN0b3IgcmFtZGlzayBsb2NhdGluZyBjb2RlCi0KLSAgICBNb3ZlIGRldGVybWluZyBpZiB3ZSBoYXZlIGEgcmFtZGlzayBhbmQgd2hlcmUgaXRzIGxvY2F0ZWQgaW50byB0aGUKLSAgICBjb21tb24gY29kZS4gS2VlcCB0cmFjayBvZiB0aGUgcmFtZGlzayBzdGFydCBhbmQgZW5kIGluIHRoZQotICAgIGJvb3RtX2hlYWRlcnNfdCBpbWFnZSBzdHJ1Y3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzE2MGE5NTQ0NzQzZTgwZTg4ODllZGIyMjc1NTM4ZTc3NjRjZTMzNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNiAyMDA4IC0wNTAwCi0KLSAgICBib290bTogcmVmYWN0b3IgZW50cnkgcG9pbnQgY29kZQotCi0gICAgTW92ZSBlbnRyeSBwb2ludCBjb2RlIG91dCBvZiBlYWNoIGFyY2ggYW5kIGludG8gY29tbW9uIGNvZGUuCi0gICAgS2VlcCB0aGUgZW50cnkgcG9pbnQgaW4gdGhlIGJvb3RtX2hlYWRlcnNfdCBpbWFnZXMgc3RydWN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIwMjIwZDIyYjlmNDE0NDYyODg1ODhjZDJlNDU3ZTAwNzdhMThiZWQKLUF1dGhvcjogUmFuZHkgVmluc29uIDxydmluc29uQG12aXN0YS5jb20+Ci1EYXRlOglXZWQgQXVnIDEzIDExOjQ0OjU3IDIwMDggLTA3MDAKLQotICAgIG1wYzc0NDhocGMyOiBGaXggUENJIEkvTyBzcGFjZSBtYXBwaW5nLgotCi0gICAgUENJIEkvTyBzcGFjZSBpcyBjdXJyZW50bHkgbWFwcGVkIDE6MSBhdCAweEZBMDAwMDAwLiBMaW51eCByZXF1aXJlcwotICAgIFBDSSBJL08gc3BhY2UgdG8gc3RhcnQgYXQgMCBvbiB0aGUgUENJIGJ1cy4gVGhpcyBwYXRjaCBtYXBzIFBDSSBJL08KLSAgICBzcGFjZSBzdWNoIHRoYXQgMHhGQTAwMDAwMCBpbiB0aGUgcHJvY2Vzc29yJ3MgYWRkcmVzcyBzcGFjZSBtYXBzIHRvIDAKLSAgICBvbiB0aGUgUENJIEkvTyBidXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5IFJhbmR5IFZpbnNvbiA8cnZpbnNvbkBtdmlzdGEuY29tPgotICAgIEFja2VkLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNGUwNzUyMGJiYjU0NjdhZDcyZWI5MmE1YzkxNzdkMjc5N2I5ZTMwCi1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVdlZCBBdWcgMTMgMTg6MTA6MjYgMjAwOCArMDIwMAotCi0gICAgaS5NWDMxOiBTcGVjaWZ5IG1haW50YWluZXJzIGZvciBpLk1YMzEtYmFzZWQgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDUxZTQ2ZTI4ZmRhNGJiZGY1MTQ5YWM3ZjY3ZDYyZmNjOGRmNGRhNjMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMjYgMTU6MDE6MjggMjAwOCArMDIwMAotCi0gICAgQURTNTEyMTogYWRqdXN0IGltYWdlIGFkZHJlc3NlcyBpbiBSQU0gYW5kIGZsYXNoCi0KLSAgICBVc2UgdGhlIHNhbWUgbWFwcGluZyBpbiBmbGFzaCBhcyB1c2VkIGJ5IExpbnV4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTlmMTAxNDEyYzE2ZWRlZTlmZDU1ZGI0MDM5ZTFkNjhhODMzYjI4YgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAyNiAxMzoxNDozNCAyMDA4ICswMjAwCi0KLSAgICBjbWRfbWVtLmM6IEZpeCBoZWxwIG1lc3NhZ2UgYWxpZ25tZW50Ci0KLSAgICBCdWcgd2FzIGludHJvY2VkIGJ5ICJCaWcgd2hpdGUtc3BhY2UgY2xlYW51cCIgKDUzNjc3ZWYxKQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDFhOWVlYjc4YjgyNWJmYWRlMzFkNzYwNmEyZmUzYjllY2E5ZTM1YmUKLUF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotRGF0ZToJV2VkIEF1ZyAyMCAxMToxMTo1MiAyMDA4ICswMjAwCi0KLSAgICBjaGFuZ2UgbXZCTC1NNyBkZWZhdWx0IGVudiBhbmQgbW92ZSB0byB2ZW5kb3Igc3ViZGlyCi0KLSAgICBmaXggbXZCTC1NNyBjb25maWcgYW5kIG1vdmUgdG8gbWF0cml4X3Zpc2lvbiBzdWJkaXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDAyZDI3Y2FmMjZlN2ViOTEzZDQ3NGQzYTkxZjY3ZDU2YzhjMzFkNQotQXV0aG9yOiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBdWcgMjIgMjM6NTI6NDAgMjAwOCAtMDcwMAotCi0gICAgTVBDODNYWDogQWRkIG1pc2NlbGxhbmVvdXMgcmVnaXN0ZXJzIGFuZCAjZGVmaW5lcyB0byBzdXBwb3J0IE1QQzgzeHggZmFtaWx5IGRldmljZXMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBlbGVtZW50cyB0byB0aGUgODN4eCBzeXNjb25mIHN0cnVjdHVyZSBhbmQgI2RlZmluZSB2YWx1ZXMgdGhhdCBhcmUgdXNlZAotICAgIGJ5IG1wYzgzeHggZmFtaWx5IGRldmljZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDQ3YWQ1NzY4YWJkYTY2OWFjMGU3ZjQ2ZmNkYjYyZmJlODI4ZDYzNwotQXV0aG9yOiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLURhdGU6CUZyaSBBdWcgMjIgMTE6MDA6MTUgMjAwOCAtMDcwMAotCi0gICAgTVBDODM0OUVNRFM6IEFkZCBQQ0kgQWdlbnQgKFBDSVNMQVZFKSBzdXBwb3J0Ci0KLSAgICBBZGQgdGhlIGFiaWxpdHkgZm9yIHRoZSBNUEM4MzQ5RU1EUyB0byBydW4gaW4gUENJIEFnZW50IG1vZGUsIGFjdGluZyBhcyBhCi0gICAgUENJIGNhcmQgcmF0aGVyIHRoYW4gYSBob3N0IGNvbXB1dGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRmZjlhZWE5ZDZiNTYwMjY4M2E5MjA5NTFlZjg5Njk5NjQzOGFmNjIKLUF1dGhvcjogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+Ci1EYXRlOglGcmkgQXVnIDIyIDExOjAwOjE0IDIwMDggLTA3MDAKLQotICAgIG1wYzgzeHg6IGFkZCBQQ0lTTEFWRSBzdXBwb3J0IHRvIDgzWFhfR0VORVJJQ19QQ0kgc2V0dXAgY29kZQotCi0gICAgVGhpcyBhZGRzIGEgaGVscGVyIGZ1bmN0aW9uIHRvIHVubG9jayB0aGUgUENJIGNvbmZpZ3VyYXRpb24gYml0LCBzbyB0aGF0Ci0gICAgYW55IGV4dHJhIFBDSSBzZXR1cCAoc3VjaCBhcyBvdXRib3VuZCB3aW5kb3dzLCBldGMuKSBjYW4gYmUgZG9uZSBhZnRlcgotICAgIHVzaW5nIHRoZSA4M1hYX0dFTkVSSUNfUENJIGNvZGUgdG8gc2V0IHVwIHRoZSBQQ0kgYnVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE2MjMzOGUxZmNkZTIzMWNhNGQ1NjJlNWViZDc4NTk0NTY3MzE2OTEKLUF1dGhvcjogSXJhIFcuIFNueWRlciA8aXdzQG92cm8uY2FsdGVjaC5lZHU+Ci1EYXRlOglGcmkgQXVnIDIyIDExOjAwOjEzIDIwMDggLTA3MDAKLQotICAgIE1QQzgzNDlFTURTOiB1c2UgODNYWF9HRU5FUklDX1BDSSBzZXR1cCBjb2RlCi0KLSAgICBDaGFuZ2UgdGhlIE1QQzgzNDlFTURTIGJvYXJkIHRvIHVzZSB0aGUgZ2VuZXJpYyBQQ0kgaW5pdGlhbGl6YXRpb24gY29kZQotICAgIGZvciB0aGUgbXBjODN4eCBjcHUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjRlNTVhNDk0MWU4YmE0NmJjMDYwMjBiMjc0NzkyOGFkZjhmZGVlNwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyAyNSAxNDo1MzowOSAyMDA4IC0wNTAwCi0KLSAgICBmaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhNDlkMTBjZjAyN2QwNTllZTE1YzI2MjAxMGEwNWNkYWVjMDk2MWUxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gQXVnIDI1IDIzOjQ1OjQxIDIwMDggKzAyMDAKLQotICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLCB1cGR0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZDU2ZThkZWE2NzA3NTdjODAxYTZhNjU1MzFmMDJhOGY5ODFjZTFmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBBdWcgMjAgMjA6Mjk6MzggMjAwOCArMDIwMAotCi0gICAgUlRDOiBGaXggTWFrZWZpbGUgcHJvYmxlbSB3aXRoIENPQkpTLSQoQ09ORklHX1JUQ19EUzEzMDcgfHwgQ09ORklHX1JUQ19EUzEzMzgpCi0KLSAgICBUaGlzICJ8fCIgZG9lc24ndCBzZWVtIHRvIHdvcmsuIE5vdyB1c2luZyB0aGUgaWRlYSBzdWdnZXN0IGJ5IFNjb3R0IFdvb2QKLSAgICB0byBjb21iaW5lIGJvdGggY29uZmlnIG9wdGlvbnMgaW50byBvbmUgbGluZS4gVGhpcyBldmVuIGFsbG93cyBkZWZpbmluZwotICAgIGJvdGggb3B0aW9ucyBhbmQgbm90IGdlbmVyYXRpbmcgdGhlIHRhcmdldCBvYmplY3QgdHdpY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwNzllZGI5MTNkYmFlMTQ3YjUwYTQ4OGNmMDJlMDNmNDczZmM1ZjI4Ci1BdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KLURhdGU6CUZyaSBKdWwgNCAxNjo1MDowNSAyMDA4ICswMjAwCi0KLSAgICBNWDMxOiBmaXggYml0IG1hc2tzIGluIGZ1bmN0aW9uIG14MzFfZGVjb2RlX3BsbCgpCi0KLSAgICBCaXRzIE1QQ1RMW01GTl0gYW5kIE1QQ1RMW01GRF0gd2VyZSBub3QgZnVsbHkgY292ZXJlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KLQotY29tbWl0IGU4ZjEyMDdiYmYyZGY2ZmI2OTNlZTFhYTMzMjliMjAxNGM5MmU1ZTYKLUF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLURhdGU6CU1vbiBBdWcgMjUgMTE6MTE6MzQgMjAwOCArMDIwMAotCi0gICAgQ29ycmVjdCBBUk0gVmVyc2F0aWxlIFRpbWVyIEluaXRpYWxpemF0aW9uCi0KLSAgICAgLSBBY2NvcmRpbmcgdG8gQVJNIER1YWwtVGltZXIgTW9kdWxlIChTUDgwNCkgVFJNIChBUk0gRERJMDI3MSksCi0gICAgICAgLS0gVGltZXIgVmFsdWUgUmVnaXN0ZXIgQCBUSU1FUiBCYXNlICsgNCBpcyBSZWFkLW9ubHkuCi0gICAgICAgLS0gUHJlc2NhbGUgVmFsdWUgKEJpdHMgMy0yIG9mIFRJTUVSIENvbnRyb2wgcmVnaXN0ZXIpCi0JY2FuIG9ubHkgYmUgb25lIG9mIDAwLDAxLDEwLiAxMSBpcyB1bmRlZmluZWQuCi0gICAgICAgLS0gQ0ZHX0haIGZvciBWZXJzYXRpbGUgYm9hcmQgaXMgc2V0IHRvCi0JI2RlZmluZSBDRkdfSFoJCSgxMDAwMDAwIC8gMjU2KQotCVNvIFByZXNjYWxlIGJpdHMgaXMgc2V0IHRvIGluZGljYXRlCi0JLSA4IFN0YWdlcyBvZiBQcmVzY2FsZSwgQ2xvY2sgZGl2aWRlZCBieSAyNTYKLSAgICAgLSBUaGUgVGltZXIgQ29udHJvbCBSZWdpc3RlciBoYXMgb25lIFVuZGVmaW5lZC9TaG91bGRuJ3QgVXNlIEJpdAotICAgICAgIFNvIHdlIHNob3VsZCBkbyByZWFkL21vZGlmeS93cml0ZSBPcGVyYXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLQotY29tbWl0IDUzNWNmYTRmM2RlODZjZjQ4ZDZjMGFmMWRhZjMzYWViZGNhMDg5ZjkKLUF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLURhdGU6CU1vbiBBdWcgMjUgMTE6MzA6MjkgMjAwOCArMDIwMAotCi0gICAgQWRkIEFSTSBBTUJBIFBMMDMxIFJUQyBTdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotCi1jb21taXQgZTM5NDExNjc0NjY5Y2M4ODBlMWVjNGE4Y2E0Nzk0ZmIxNWMzM2E0NQotQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTkgMTY6MjE6MDMgMjAwOCAtMDQwMAotCi0gICAgQVJNIERhVmluY2k6IFJlbW92ZWQgcmVkdW5kYW50IE5BTkQgaW5pdGlhbGl6YXRpb24gY29kZS4KLQotICAgIEFSTSBEYVZpbmNpOiBSZW1vdmVkIHJlZHVuZGFudCBOQU5EIGluaXRpYWxpemF0aW9uIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLQotY29tbWl0IGIzZmI2NjNiMjBkOTk1Y2E0MTMyN2RiODc3ZGRiMTY4Mjc5YjNmNjIKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglUdWUgQXVnIDE5IDE2OjIxOjAwIDIwMDggLTA0MDAKLQotICAgIEFSTSBEYVZpbmNpOiBGaXggY29tcGlsYXRpb24gZXJyb3Igd2l0aCBuZXcgTVREIGNvZGUuCi0KLSAgICBBUk0gRGFWaW5jaTogRml4IGNvbXBpbGF0aW9uIGVycm9yIHdpdGggbmV3IE1URCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0KLWNvbW1pdCAxMDljMzBmYjhlZGVhMWExNWQzN2E2Y2U3ODdjZDVmYWYzM2Q4ZTQzCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglGcmkgQXVnIDIyIDE0OjM3OjA1IDIwMDggLTA0MDAKLQotICAgIEFkZCBub3RlIG9uIGRlcmVmZXJlbmNpbmcgL2FsaWFzZXMgcG9pbnRlcnMKLQotICAgIFJlcGxhY2UgdGhlICJtdXN0IHF1b3RlIHNwZWNpYWwgY2hhcmFjdGVycyIgbm90ZSB3aXRoIGEgaGludCBvbgotICAgIGhvdyB0byBkZXJlZmVyZW5jZSAvYWxpYXNlcyBwb2ludGVycyBieSBvbWl0dGluZyB0aGUgbGVhZGluZyAiLyIuCi0gICAgVGhpcyBmZWF0dXJlIHdhcyBpbnRyb2R1Y2VkIGJ5IEt1bWFyIEdhbGEgYXMgYSBsaWJmZHQgZW5oYW5jZW1lbnQKLSAgICBpbiBjb21taXQgZWQwMzU3MDgyMzUzMzJjM2MxMTdlZTNiYjFhNDI2MDYzZjAzY2ZjYi4KLQotICAgIEV4YW1wbGU6Ci0KLSAgICA9PiBmZHQgcHJpbnQgL2FsaWFzZXMKLSAgICBhbGlhc2VzIHsKLQkgICAgZXRoZXJuZXQwID0gIi9xZUBlMDEwMDAwMC91Y2NAMjAwMCI7Ci0JICAgIGV0aGVybmV0MSA9ICIvcWVAZTAxMDAwMDAvdWNjQDMwMDAiOwotCSAgICBzZXJpYWwwID0gIi9zb2M4MzYwQGUwMDAwMDAwL3NlcmlhbEA0NTAwIjsKLQkgICAgc2VyaWFsMSA9ICIvc29jODM2MEBlMDAwMDAwMC9zZXJpYWxANDYwMCI7Ci0JICAgIHBjaTAgPSAiL3BjaUBlMDAwODUwMCI7Ci0gICAgfTsKLSAgICA9PiBmZHQgcHJpbnQgZXRoZXJuZXQwCi0gICAgdWNjQDIwMDAgewotCSAgICBkZXZpY2VfdHlwZSA9ICJuZXR3b3JrIjsKLQkgICAgY29tcGF0aWJsZSA9ICJ1Y2NfZ2V0aCI7Ci0JICAgIGNlbGwtaW5kZXggPSA8MHgxPjsKLQkgICAgcmVnID0gPDB4MjAwMCAweDIwMD47Ci0JICAgIGludGVycnVwdHMgPSA8MHgyMD47Ci0JICAgIGludGVycnVwdC1wYXJlbnQgPSA8MHgyPjsKLQkgICAgbG9jYWwtbWFjLWFkZHJlc3MgPSBbMDAgMDAgMDAgMDAgMDAgMDBdOwotCSAgICByeC1jbG9jay1uYW1lID0gIm5vbmUiOwotCSAgICB0eC1jbG9jay1uYW1lID0gImNsazkiOwotCSAgICBwaHktaGFuZGxlID0gPDB4Mz47Ci0JICAgIHBoeS1jb25uZWN0aW9uLXR5cGUgPSAicmdtaWktaWQiOwotCSAgICBwaW8taGFuZGxlID0gPDB4ND47Ci0gICAgfTsKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCBmZWVjYTNmNTc4YjdmNTNjMDMyYmEyMDM2OTg3NTFjOTgyZjhiZjVhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgQXVnIDE0IDA4OjI4OjE5IDIwMDggLTA1MDAKLQotICAgIGxpYmZkdDogQWRkIHN1cHBvcnQgZm9yIHVzaW5nIGFsaWFzZXMgaW4gZmR0X3BhdGhfb2Zmc2V0KCkKLQotICAgIElmIHRoZSBwYXRoIGRvZXNuJ3Qgc3RhcnQgd2l0aCAnLycgY2hlY2sgdG8gc2VlIGlmIGl0IG1hdGNoZXMgc29tZSBhbGlhcwotICAgIHVuZGVyICIvYWxpYXNlcyIgYW5kIHN1YnN0aXR1dGUgdGhlIG1hdGNoaW5nIGFsaWFzIHZhbHVlIGluIHRoZSBwYXRoCi0gICAgYW5kIHJldHJ5IHRoZSBsb29rdXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDAyMTkzOTlhNGUzYThlZGI0MjhlMTkyNGUxYTAzZDU4Y2NjZjhkOGUKLUF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci1EYXRlOglXZWQgQXVnIDYgMTQ6NTA6NDkgMjAwOCArMTAwMAotCi0gICAgbGliZmR0OiBJbXBsZW1lbnQgZmR0X2dldF9wcm9wZXJ0eV9uYW1lbGVuKCkgYW5kIGZkdF9nZXRwcm9wX25hbWVsZW4oKQotCi0gICAgQXMgd2VsbCBhcyBmZHRfc3Vibm9kZV9vZmZzZXQoKSwgbGliZmR0IGluY2x1ZGVzIGFuCi0gICAgZmR0X3N1Ym5vZGVfb2Zmc2V0X25hbWVsZW4oKSBmdW5jdGlvbiB0aGF0IHRha2VzIHRoZSBzdWJub2RlIG5hbWUgdG8KLSAgICBsb29rIHVwIG5vdCBhcyBhIE5VTC10ZXJtaW5hdGVkIHN0cmluZywgYnV0IGFzIGEgc3RyaW5nIHdpdGggYW4KLSAgICBleHBsaWNpdCBsZW5ndGguICBUaGlzIGNhbiBiZSB1c2VmdWwgd2hlbiB0aGUgY2FsbGVyIGhhcyB0aGUgbmFtZSBhcwotICAgIHBhcnQgb2YgYSBsb25nZXIgc3RyaW5nLCBzdWNoIGFzIGEgZnVsbCBwYXRoLgotCi0gICAgSG93ZXZlciwgd2UgZG9uJ3QgaGF2ZSBjb3JyZXNwb25kaW5nICduYW1lbGVuJyB2ZXJzaW9ucyBmb3IKLSAgICBmZHRfZ2V0X3Byb3BlcnR5KCkgYW5kIGZkdF9nZXRwcm9wKCkuICBUaGVyZSBhcmUgbGVzcyBvYnZpb3VzIHVzZQotICAgIGNhc2VzIGZvciB0aGVzZSB2YXJpYW50cyBvbiBwcm9wZXJ0eSBuYW1lcywgYnV0IHRoZXJlIGFyZQotICAgIGNpcmN1bXN0YW5jZXMgd2hlcmUgdGhleSBjYW4gYmUgdXNlZnVsIGUuZy4gbG9va2luZyB1cCBwcm9wZXJ0eSBuYW1lcwotICAgIHdoaWNoIG5lZWQgdG8gYmUgcGFyc2VkIGZyb20gYSBsb25nZXIgc3RyaW5nIGJ1ZmZlciBzdWNoIGFzIHVzZXIgaW5wdXQKLSAgICBvciBhIGNvbmZpZ3VyYXRpb24gZmlsZSwgb3IgbG9va2luZyB1cCBhbiBhbGlhcyBpbiBhIHBhdGggd2l0aAotICAgIElFRUUxMjc1IHN0eWxlIGFsaWFzZXMuCi0KLSAgICBTbywgc2luY2UgaXQncyB2ZXJ5IGVhc3kgdG8gaW1wbGVtZW50IHN1Y2ggdmFyaWFudHMsIHRoaXMgcGF0Y2ggZG9lcwotICAgIHNvLiAgVGhlIG9yaWdpbmFsIE5VTC10ZXJtaW5hdGVkIHZhcmlhbnRzIGFyZSwgb2YgY291cnNlLCBpbXBsZW1lbnRlZAotICAgIGluIHRlcm1zIG9mIHRoZSBuYW1lbGVuIHZlcnNpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0KLWNvbW1pdCBmMTcxNzQ2ZjcwMWVhNThiZjZhNTNlODM1YjUzZDJhYWViZWUwZDgxCi1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJVHVlIEp1bCAyOSAxNDo1MToyMiAyMDA4ICsxMDAwCi0KLSAgICBsaWJmZHQ6IEZvcmdvdCBvbmUgZnVuY3Rpb24gd2hlbiBjbGVhbmluZyB0aGUgbmFtZXNwYWNlCi0KLSAgICBJbiBjb21taXQgYjZkODBhMjBmYzI5M2YzYjk5NWMzY2UxYTY3NDRhNTU3NDE5MjEyNSwgd2UgcmVuYW1lZCBhbGwKLSAgICBsaWJmZHQgZnVuY3Rpb25zIHRvIGJlIHByZWZpeGVkIHdpdGggZmR0XyBvciBfZmR0XyB0byBtaW5pbWlzZSB0aGUKLSAgICBjaGFuY2Ugb2YgY29sbGlzaW9ucyB3aXRoIHRoaW5ncyBmcm9tIHdoYXRldmVyIHBhY2thZ2UgbGliZmR0IGlzCi0gICAgZW1iZWRkZWQgaW4sIHB1bGxlZCBpbnRvIHRoZSBsaWJmZHQgYnVpbGQgdmlhIHRoYXQgZW52aXJvbm1lbnQncwotICAgIGxpYmZkdF9lbnYuaC4KLQotICAgIEV4Y2VwdC4uLiBJIG1pc3NlZCBvbmUuICBUaGlzIHBhdGNoIGFwcGxpZXMgdGhlIHNhbWUgdHJlYXRtZW50IHRvCi0gICAgX3N0cmluZ2xpc3RfY29udGFpbnMoKS4gIFdoaWxlIHdlJ3JlIGF0IGl0LCBhbHNvIG1ha2UgaXQgc3RhdGljIHNpbmNlCi0gICAgaXQncyBvbmx5IHVzZWQgaW4gdGhlIHNhbWUgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotCi1jb21taXQgNDYzOTBkYTE1NDExMzUxZmMzYjQ5OGJkOGMxNjE1Zjc4ZmU4MGRmMAotQXV0aG9yOiBXb2xmcmFtIFNhbmcgPHcuc2FuZ0BwZW5ndXRyb25peC5kZT4KLURhdGU6CVdlZCBKdWwgOSAxMToyMjo0NCAyMDA4ICswMjAwCi0KLSAgICBsaWJmZHQ6IEltcHJvdmUgZG9jdW1lbnRhdGlvbiBpbiBsaWJmZHQuaAotCi0gICAgRml4IGEgZmV3IHR5cG9zIGFuZCBtaXN0YWtlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZyYW0gU2FuZyA8dy5zYW5nQHBlbmd1dHJvbml4LmRlPgotICAgIEFja2VkLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLQotY29tbWl0IGZjNzc1OGVlNGY1NzgyODc4ZjJlOTY4NzZiN2JjNTZjZmVlMGFjNjYKLUF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci1EYXRlOglXZWQgSnVsIDkgMTQ6MTA6MjQgMjAwOCArMTAwMAotCi0gICAgbGliZmR0OiBJbmNyZWFzZSBuYW1lc3BhY2UtcG9sbHV0aW9uIHBhcmFub2lhCi0KLSAgICBsaWJmZHQgaXMgc3VwcG9zZWQgdG8gZWFzeSB0byBlbWJlZCBpbiBwcm9qZWN0cyBhbGwgYW5kIHN1bmRyeS4KLSAgICBPZnRlbiwgaXQgd29uJ3QgYmUgcHJhY3RpY2FsIHRvIHNlcGFyYXRlIHRoZSBlbWJlZGRlZCBsaWJmZHQncwotICAgIG5hbWVzcGFjZSBmcm9tIHRoYXQgb2YgdGhlIHN1cnJvdW5kaW5nIHByb2plY3QuICBXaGljaCBtZWFucyB0aGVyZSBjYW4KLSAgICBiZSBuYW1lc3BhY2UgY29uZmxpY3RzIGJldHdlZW4gZXZlbiBsaWJmZHQncyBpbnRlcm5hbC9zdGF0aWMgZnVuY3Rpb25zCi0gICAgYW5kIGZ1bmN0aW9ucyBvciBtYWNyb3MgY29taW5nIGZyb20gdGhlIHN1cnJvdW5kaW5nIHByb2plY3QncyBoZWFkZXJzCi0gICAgdmlhIGxpYmZkdF9lbnYuaC4KLQotICAgIFRoaXMgcGF0Y2gsIHRoZXJlZm9yZSwgcmVuYW1lcyBhIGJ1bmNoIG9mIGxpYmZkdCBpbnRlcm5hbCBmdW5jdGlvbnMKLSAgICBhbmQgbWFjcm9zIGFuZCBtYWtlcyBhIGZldyBvdGhlciBjaGFuY2VzIHRvIHJlZHVjZSB0aGUgY2hhbmNlcyBvZgotICAgIG5hbWVzcGFjZSBjb2xsaXNpb25zIHdpdGggZW1iZWRkaW5nIHByb2plY3RzLiAgU3BlY2lmaWNhbGx5OgotCS0gSW50ZXJuYWwgZnVuY3Rpb25zIChldmVuIHN0YXRpYyBvbmVzKSBhcmUgbm93IG5hbWVkIF9mZHRfKigpCi0KLQktIFRoZSB0eXBlIGFuZCAoc3RhdGljKSBnbG9iYWwgZm9yIHRoZSBlcnJvciB0YWJsZSBpbgotCSAgICAgIGZkdF9zdHJlcnJvcigpIGdhaW4gYW4gZmR0XyBwcmVmaXgKLQotCS0gVGhlIHVudXNlZCBtYWNybyBQQUxJR04gaXMgcmVtb3ZlZAotCi0JLSBUaGUgbWVtZXEgYW5kIHN0cmVxIG1hY3JvcyBhcmUgcmVtb3ZlZCBhbmQgb3Blbi1jb2RlZCBpbiB0aGUKLQkgICAgICB1c2VycyAodGhleSB3ZXJlIG9ubHkgdXNlZCBvbmNlIGVhY2gpCi0KLQktIE90aGVyIG1hY3JvcyBnYWluIGFuIEZEVF8gcHJlZml4Ci0KLQktIFRvIHNhdmUgc29tZSBvZiB0aGUgYnVsayBmcm9tIHRoZSBwcmV2aW91cyBjaGFuZ2UsIGFuCi0JICAgICAgRkRUX1RBR0FMSUdOKCkgbWFjcm8gaXMgaW50cm9kdWNlZCwgd2hlcmUgRkRUX1RBR0FMSUdOKHgpID09Ci0JICAgICAgRkRUX0FMSUdOKHgsIEZEVF9UQUdTSVpFKQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0KLWNvbW1pdCBjNjY4MzAyNjNhZjE5ODMxZjJiN2RiMzA3Zjc5ZDE5NDNmZWJmN2Y5Ci1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJTW9uIEp1bCA3IDEwOjE0OjE1IDIwMDggKzEwMDAKLQotICAgIGR0YzogRW5hYmxlIGFuZCBmaXggLVdjYXN0LXF1YWwgd2FybmluZ3MKLQotICAgIEVuYWJsaW5nIC1XY2FzdC1xdWFsIHdhcm5pbmdzIGluIGR0YyBzaG93cyB1cCBhIG51bWJlciBvZiBwbGFjZXMgd2hlcmUKLSAgICB3ZSBhcmUgaW5jb3JyZWN0bHkgZGlzY2FyZGluZyBhIGNvbnN0IHF1YWxpZmljYXRpb24uICBUaGVyZSBhcmUgYWxzbwotICAgIHNvbWUgcGxhY2VzIHdoZXJlIHdlIGFyZSBpbnRlbnRpb25hbGx5IGRpc2NhcmRpbmcgdGhlICdjb25zdCcsIGFuZCB3ZQotICAgIG5lZWQgYW4gdWdseSBjYXN0IHRocm91Z2ggdWludHB0cl90IHRvIHN1cHByZXNzIHRoZSB3YXJuaW5nLiAgSG93ZXZlciwKLSAgICBtb3N0IG9mIHRoZXNlIGFyZSBwcmV0dHkgd2VsbCBpc29sYXRlZCB3aXRoIHRoZSAqX3coKSBmdW5jdGlvbnMuICBTbwotICAgIGluIHRoZSBpbnRlcmVzdHMgb2YgbWF4aW11bSBzYWZldHkgd2l0aCBjb25zdCBxdWFsaWZpY2F0aW9ucywgdGhpcwotICAgIHBhdGNoIGVuYWJsZXMgdGhlIHdhcm5pbmdzIGFuZCBmaXhlcyB0aGUgZXhpc3RpbmcgY29tcGxhaW50cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgZWY0ZThjZTFiZWI1YjkzYWVkZGE1YTRjMWI5MGJmZDk4OWM2NzkxZQotQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLURhdGU6CU1vbiBKdWwgNyAxMDoxMDo0OCAyMDA4ICsxMDAwCi0KLSAgICBkdGM6IEVuYWJsZSBhbmQgZml4IC1XcG9pbnRlci1hcml0aCB3YXJuaW5ncwotCi0gICAgVGhpcyBwYXRjaCB0dXJucyBvbiB0aGUgLVdwb2ludGVyLWFyaXRoIG9wdGlvbiBpbiB0aGUgZHRjIE1ha2VmaWxlLAotICAgIGFuZCBmaXhlcyB0aGUgcmVzdWx0aW5nIHdhcm5pbmdzIGR1ZSB0byB1c2luZyAodm9pZCAqKSBpbiBwb2ludGVyCi0gICAgYXJpdGhtZXRpYy4gIFdoaWxlIGNvbnZlbmllbnQsIHBvaW50ZXIgYXJpdGhtZXRpYyBvbiB2b2lkICogaXMgbm90Ci0gICAgcG9ydGFibGUsIHNvIGl0J3MgYmV0dGVyIHRoYXQgd2UgYXZvaWQgaXQsIHBhcnRpY3VsYXJseSBpbiBsaWJmZHQuCi0KLSAgICBBbHNvIGFkZCBuZWNlc3NhcnkgZGVmaW5pdGlvbiBvZiB1aW50cHRyX3QgbmVlZGVkIGJ5IERhdmlkIEdpYnNvbidzCi0gICAgY2hhbmdlc2V0ICJkdGM6IEVuYWJsZSBhbmQgZml4IC1XcG9pbnRlci1hcml0aCB3YXJuaW5ncyIgKHRoZSBkZWZpbml0aW9uCi0gICAgY29tZXMgZnJvbSBzdGRpbnQuaCwgd2hpY2ggdS1ib290IGRvZXNuJ3QgaGF2ZSkuIC0tIGd2YgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDVkNGIzZDJiMzFlNThmY2IyZDRiZDEwYWY3NjJmNWZmNDFiMjI5ZmQKLUF1dGhvcjogVGlydW1hbGEgUiBNYXJyaSA8dG1hcnJpQGFtY2MuY29tPgotRGF0ZToJVGh1IEF1ZyAyMSAyMTo1NDo1MyAyMDA4IC0wNzAwCi0KLSAgICBwcGM0eHg6IEFNQ0MgUFBDNDYwR1QvRVggUENJLUUgZGUtZW1waGFzaXMgYWRqdXN0bWVudCBmaXgKLQotICAgIER1cmluZyByZWNlbnQgUENJLUUgdGVzdHMgaXQgaGFzIGJlZW4gZm91bmQgdGhhdCBjdXJyZW50Ci0gICAgZHJpdmVybCBsZXZlbCBhbmQgZGUtZW1waGFzaXMgdmFsdWVzIGFyZSBub3Qgc2V0IGNvcnJlY3RseS4KLSAgICBBZnRlciBzd2VlcGluZyB0aHJvZ2ggYWxsIGRlLWVwaGFzaXMgdmFsdWVzLCBpdCB3YXMgZm91bmQgdGhhdAotICAgIDB4MTMwIGlzIGEgcmlnaHQgdmFsdWUuIFdoZXJlIDB4MTMgaXMgZHJpdmVyIGxldmVsIGFuZCAwIGlzCi0gICAgZGUtZW1waGFzaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaXJ1bWFsYSBSIE1hcnJpIDx0bWFycmlAYW1jYy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGJiODZkODIzYjZjMTUwYzdlZTE3ZGUwY2ZjYTlmZmNjYzE2NDYzYgotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVdlZCBBdWcgMjAgMjA6NDY6NTYgMjAwOCArMDIwMAotCi0gICAgTWFrZSB0aGUgWUFGRlMgZmlsZXN5c3RlbSB3b3JrCi0KLSAgICBSZWNlbnRseSB0aGUgWUFGRlMgZmlsZXN5c3RlbSBzdXBwb3J0IGhhcyBiZWVuIGFkZGVkIHRvIFUtYm9vdC4KLSAgICBIb3dldmVyLCBqdXN0IGVuYWJsaW5nIENPTkZJR19ZQUZGUzIgaXMgbm90IGVub3VnaCB0byBnZXQgaXQgd29ya2luZy4KLQotICAgIHltb3VudCB3aWxsIGdlbmVyYXRlIGFuIGV4Y2VwdGlvbiAod2hlbiBkZXJlZmVyZW5jaW5nIG10ZC0+cmVhZG9vYigpKSwgYmVjYXVzZQotICAgIHRoZSBnZW5lcmljRGV2aWNlIGlzIGEgbnVsbCBwb2ludGVyLiBGdXJ0aGVyLCBhIGxvdCBvZiBsb2dnaW5nIGlzIHByb2R1Y2VkCi0gICAgd2hpbGUgdXNpbmcgWUFGRlMgZnMsIHNvIGxvZ2dpbmcgc2hvdWxkIGFsc28gYmUgZGlzYWJsZWQuCi0gICAgQm90aCBpc3N1ZXMgYXJlIHNvbHZlZCBieSB0aGlzIHBhdGNoLgotCi0gICAgV2l0aCB0aGlzIHBhdGNoIGFuZCBDT05GSUdfWUFGRlMyIGVuYWJsZWQsIEkgZ2V0IGEgcmVhZGFibGUgZmlsZXN5c3RlbQotICAgIGluIFUtYm9vdCwgYXMgd2VsbCBhcyBpbiBMaW51eC4KLQotICAgIFRlc3RlZCBvbiBhIEF0bWVsIEFUOTFTQU05MjYxRUsgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBBY2tlZC1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmZkN2YzODYxNGUyMWY3NDViNmQ2ODQ1ZmNjNjE2ZWJjNWU0ZDM2ZgotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CVR1ZSBBdWcgMTkgMDg6NDI6NTMgMjAwOCArMDkwMAotCi0gICAgRml4IE9uZU5BTkQgcmVhZF9vb2Ivd3JpdGVfb29iIGZ1bmN0aW9ucyBjb21wYXRhYmlsaXR5Ci0KLSAgICBBbHNvIHN5bmMgd2l0aCBrZXJuZWwgT25lTkFORCBjb2RlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhkNzY1NDU2YzFkMzNmMjAxMGQyNzE3ZWU1OGRlNzY0N2ZkYzYzNDYKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXVnIDE4IDE3OjExOjIwIDIwMDggLTA1MDAKLQotICAgIE5BTkQ6IFJlbW92ZSBkZWxheSBmcm9tIG5hbmRfYm9vdF9mc2xfZWxiYy5jLgotCi0gICAgSXQgd2FzIGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMsIGFuZCBzaG91bGRuJ3QgaGF2ZSBiZWVuIGxlZnQgaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGY1NTY0ODM3MzQxMjY3OTM1MjJmYjdhOGNmMzZhZjkwZGE3OGYwODQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyAyMSAxMTowNTowMyAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IENsZWFudXAgb2YgInBwYzR4eDogT3B0aW1pemUgUExCNCBBcmJpdGVyLi4uIiBwYXRjaAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBzb21lIG1pbm9yIGlzc3VlcyBpbnRyb2R1Y2VkIHdpdGggdGhlIHBhdGNoOgotICAgIHBwYzR4eDogT3B0aW1pemUgUExCNCBBcmJpdGVyLi4uIGZyb20gUHJvZHl1dCBIYXphcmlrYToKLQotICAgIC0gUmV3b3JrIG1lbW9yeS1xdWV1ZSBhbmQgUExCIGFyYml0ZXIgb3B0aW1pemF0aW9uIGNvZGUsIHRoYXQgdGhlCi0gICAgICBsb2NhbCB2YXJpYWJsZSBpcyBub3QgbmVlZGVkIGFueW1vcmUuIFRoaXMgcmVtb3ZlcyBvbmUgI2lmZGVmLgotICAgIC0gVXNlIGNvbnNpc3RhbnQgc3BhY2luZyBpbiBwcGM0eHguaCBoZWFkZXIgKFhYWCArIDB4MDEgaW5zdGVhZAotICAgICAgb2YgWFhYKyAweDAxKS4gVGhpcyB3YXMgbm90IGludHJvZHVjZWQgYnkgUHJvZHl1dCwganVzdCBhCi0gICAgICBjb3B5LXBhc3RlIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwNzk1ODliY2ZiMjRiYTExMDY4NDYwMjc2YTNjYzk1NDlhYjUzNDZmCi1BdXRob3I6IFByb2R5dXQgIEhhemFyaWthIDxwaGF6YXJpa2FAYW1jYy5jb20+Ci1EYXRlOglXZWQgQXVnIDIwIDA5OjM4OjUxIDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogT3B0aW1pemUgUExCNCBBcmJpdGVyIGFuZCBNZW1vcnkgUXVldWUgc2V0dGluZ3MgZm9yIFBQQzQ0MFNQL1NQZSwKLQlQUEM0MDVFWCBhbmQgUFBDNDYwRVgvR1QvU1gKLQotICAgIC0gUmVhZCBwaXBlbGluZSBkZXB0aCBzZXQgdG8gNCBmb3IgUFBDNDQwU1AvU1BFLCBQUEM0MDVFWCwgUFBDNDYwRVgvR1QvU1gKLSAgICAgIHByb2Nlc3NvcnMKLSAgICAtIE1vdmVkIFBMQjQgQXJiaXRlciByZWdpc3RlciBkZWZpbml0aW9ucyB0byBwcGM0eHguaCBzaW5jZSBpdCBpcyBzaGFyZWQKLSAgICAgIGFjcm9zcyBwcm9jZXNzb3JzICg0MDUgYW5kIDQ0MC80NjApCi0gICAgLSBPcHRpbWl6ZSBNZW1vcnkgUXVldWUgc2V0dGluZ3MgZm9yIFBQQzQ0MFNQL1NQRSBhbmQgUFBDNDYwRVgvR1QvU1gKLSAgICAgIHByb2Nlc3NvcnMKLSAgICAtIEFkZCByZWdpc3RlciBiaXQgZGVmaW5pdGlvbnMgZm9yIE1lbW9yeSBRdWV1ZSBDb25maWd1cmF0aW9uIHJlZ2lzdGVycwotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJvZHl1dCBIYXphcmlrYSA8cGhhemFyaWthQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGJhMzdhYTAzMjg3YzU0ODNjNjFjMGEzZTMyMGM4ODg4YmVlMDE0M2EKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBdWcgMTkgMTU6NDE6MTggMjAwOCAtMDUwMAotCi0gICAgZmR0OiByZXdvcmsgZmR0X2ZpeHVwX2V0aGVybmV0KCkgdG8gdXNlIGVudiBpbnN0ZWFkIG9mIGJkX3QKLQotICAgIE1vdmUgdG8gdXNpbmcgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyAnZXRoYWRkcicsICdldGgxYWRkcicsIGV0Yy4uCi0gICAgaW5zdGVhZCBvZiBiZC0+YmlfZW5ldGFkZHIsIGJpX2VuZXQxYWRkciwgZXRjLgotCi0gICAgVGhpcyBtYWtlcyB0aGUgY29kZSBhIGJpdCBtb3JlIGZsZXhpYmxlIHRvIHRoZSBudW1iZXIgb2YgZXRoZXJuZXQKLSAgICBpbnRlcmZhY2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDRjYWNmN2M2NDYwOTgzOWY4MDllMmY5YzQ1ODczZjFkNjU4NjE3MDMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxOSAxNDo1Nzo1NSAyMDA4ICswMjAwCi0KLSAgICBodXNoOiBGaXggcHJpbnRmIGRlYnVnIG1hY3JvIGluIGh1c2guYyBzbyB0aGF0IGl0IHVzYWJsZSBpbiBVLUJvb3QKLQotICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgZGVidWdfcHJpbnRmKCkgbWFyY28gZm9yIFUtQm9vdCBpbiBodXNoLmMgYW5kCi0gICAgbW92ZXMgdGhlIGRlZmluaXRpb24gb2YgREVCVUdfU0hFTEwgdG8gYSBwbGFjZSB0aGF0IGlzIGFjdHVhbGx5IGNvbXBpbGVkCi0gICAgdW5kZXIgVS1Cb290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGYyYjQ1N2VmMjZhNDRkOWU1ZmQ3ZDZiMTZjMzk0ZTVjM2E3MWNhMgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMTkgMDk6NTc6NDEgMjAwOCArMDIwMAotCi0gICAgY2ZpOiByZW5hbWUgQ0ZHX0ZMQVNIX0NGSV9EUklWRVIgdG8gQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIKLQotICAgIENvbW1pdAkwMGIxODgzYTRjYWM1OWQ5N2NkMjk3YjFhM2EzOThkYjg1OTgyODY1Ci0gICAgbWlzc2VkIGEgZmV3IGJvYXJkczoKLQlpbmNsdWRlL2NvbmZpZ3MvTTUyNTNERU1PLmgKLQlpbmNsdWRlL2NvbmZpZ3MvbWw1MDcuaAotCWluY2x1ZGUvY29uZmlncy9yZWR3b29kLmgKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMDc2OGI3YTg3Mjk2NDA4NWVlY2U4ZDVlOWZlYzkxNzVlOWRlYjE2MQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglNb24gQXVnIDE4IDEzOjQxOjI3IDIwMDggKzAyMDAKLQotICAgIENvbnNvbGlkYXRlIHN0cm1oeigpIGltcGxlbWVudGF0aW9uCi0KLSAgICBBUk0sIGkzODYsIG02OGsgYW5kIHBwYyBhbGwgaGF2ZSBpZGVudGljYWwgaW1wbGVtZW50YXRpb25zIG9mIHN0cm1oeigpLgotICAgIE90aGVyIGFyY2hpdGVjdHVyZXMgZG9uJ3QgcHJvdmlkZSB0aGlzIGZ1bmN0aW9uIGF0IGFsbC4KLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgc3RybWh6KCkgaW50byBsaWJfZ2VuZXJpYywgcmVkdWNpbmcgY29kZSBkdXBsaWNhdGlvbgotICAgIGFuZCBwcm92aWRpbmcgYSBtb3JlIHVuaWZpZWQgQVBJIGFjcm9zcyBhcmNoaXRlY3R1cmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYTkyOGQwZGYyMTFmMWQ4MjkzMDhkMzM1ZDE5YmUzY2E0MjU1OGRmYwotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglNb24gQXVnIDE4IDEyOjAyOjUxIDIwMDggKzAyMDAKLQotICAgIGZpeCBtdmJjX3AgYm9hcmQgYnVpbGQgd2FybmluZ3MKLQotICAgIGZpeCBidWlsZCB3YXJuaW5ncyBAIG12QkMtUCBib2FyZCBieSB1c2luZyBjb3JyZWN0IHR5cGVzLCBpLmUuIGNoYW5nZQotICAgIG91dF9iZTMyIHRvIG91dF9iZTE2IGFuZCBvdXRfOCBhY2NvcmRpbmdseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLQotY29tbWl0IGE5NThiNjYzZDI3ZjYxNmJkMWRmYjcyMGQxYjQ3NmQxZWNhYWE1NjkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBBdWcgMTYgMTg6NTQ6MjcgMjAwOCArMDIwMAotCi0gICAgTWFrZWZpbGU6IGZpeCBwb3NpeCBzdXBwb3J0IG9uIGZpbmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiZWY5MmUyMTVkOTQ1Y2M1NzQzOTljMWExYjAwYTNhNzZkMzVhYTAzCi1BdXRob3I6IEF4ZWwgQmVpZXJsZWluIDxiZWxhdHJvbml4QHdlYi5kZT4KLURhdGU6CVNhdCBBdWcgMTYgMDA6MzA6NDggMjAwOCArMDIwMAotCi0gICAgQWRkaW5nIGJvb3RsaW1pdC9ib290Y291bnQgZmVhdHVyZSBmb3IgTVBDNVhYWCBvbiBUUU01MjAwIEJvYXJkcwotCi0gICAgVGVzdGVkIHdpdGggVFFNNTIwMFMgb24gU1RLNTJYWC4yMDAgQm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEF4ZWwgQmVpZXJsZWluIDxiZWxhdHJvbml4QHdlYi5kZT4KLQotY29tbWl0IDA4MDA3MDdiNmQ1MDQxYTg0MGE2NWQ1NTYwMzJjMTVjNTg0YjU1ZjgKLUF1dGhvcjogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLURhdGU6CUZyaSBBdWcgMTUgMTQ6MzY6MzIgMjAwOCAtMDUwMAotCi0gICAgbW9kX2kyY19tZW0oKSBidWdmaXgKLQotICAgIFRoZSBsYXN0IHVzZWQgY2hpcCwgYWRkcmVzcywgYW5kIGFkZHJlc3MgbGVuZ3RoIHdlcmUgbm90IGJlaW5nCi0gICAgc3RvcmVkIGZvciB0aGUgaW1tIGFuZCBpbW4gY29tbWFuZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBUeXNlciA8cHR5c2VyQHhlcy1pbmMuY29tPgotCi1jb21taXQgNGFmYmVmOTY3Mjc1YjJmNjM2YWJhZTg2ZjkxYjgxYmVjZWU3YWQwMwotQXV0aG9yOiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgotRGF0ZToJRnJpIEF1ZyAxNSAxNTozNzozMSAyMDA4IC0wNDAwCi0KLSAgICBGaXggdHlwbyBpbiBzcGVsbGluZyBvZiBBVEFQSS4KLQotICAgIENvcnJlY3QgYSBzbWFsbCBzcGVsbGluZyBtaXN0YWtlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KLQotY29tbWl0IDM2YzJkMzA2MmVjYzZhYjg1ZjhlMjM3MTgwZWIxMzQ0NjRjNDg0MTgKLUF1dGhvcjogU3RldmVuIEEuIEZhbGNvIDxzZmFsY29AaGFycmlzLmNvbT4KLURhdGU6CUZyaSBBdWcgMTUgMTU6MzQ6MTAgMjAwOCAtMDQwMAotCi0gICAgQWRkIGEgaG9vayB0byBhbGxvdyBib2FyZC1zcGVjaWZpYyBQSU8gbW9kZSBzZXR0aW5nLgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgaG9vayB3aGVyZWJ5IGEgYm9hcmQtc3BlY2lmaWMgcm91dGluZSBjYW4gYmUgY2FsbGVkIHRvCi0gICAgY29uZmlndXJlIGhhcmR3YXJlIGZvciBhIFBJTyBtb2RlLglUaGUgcHJvdG90eXBlIGZvciB0aGUgYm9hcmQtc3BlY2lmaWMKLSAgICByb3V0aW5lIGlzOgotCi0JaW50IGlubGluZSBpZGVfc2V0X3Bpb21vZGUoaW50IHBpb19tb2RlKQotCi0gICAgaWRlX3NldF9waW9tb2RlIHNob3VsZCBiZSBwcmVwYXJlZCB0byBjb25maWd1cmUgaGFyZHdhcmUgZm9yIGEgcGlvX21vZGUKLSAgICBiZXR3ZWVuIDAgYW5kIDYsIGluY2x1c2l2ZS4gIEl0IHNob3VsZCByZXR1cm4gMCBvbiBzdWNjZXNzIG9yIDEgb24gZmFpbHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Ci0KLWNvbW1pdCA5NTcxYjg0Y2IxNDIzODc2ZjExNTMwODFiOWU2YTUxZDkwZmJjZGM0Ci1BdXRob3I6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Ci1EYXRlOglGcmkgQXVnIDE1IDE1OjI5OjEyIDIwMDggLTA0MDAKLQotICAgIFJlcGxhY2UgZW51bXMgaW4gYXRhLmggd2l0aCBhbiBpbmNsdWRlIG9mIGxpYmF0YS5oCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgc29tZSBlbnVtcyBmcm9tIGF0YS5oIGFuZCByZXBsYWNlcyB0aGVtIHdpdGggYW4KLSAgICBpbmNsdWRlIG9mIGxpYmF0YS5oLiAgVGhpcyB3YXksIHdlIGVsaW1pbmF0ZSBkdXBsaWNhdGVkIGNvZGUsIGFuZAotICAgIHByZXZlbnQgZXJyb3JzIHdoZXJlYnkgdGhlIGRpZmZlcmVudCB2ZXJzaW9ucyBjb3VsZCBiZSBvdXQgb2Ygc3luYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Ci0KLWNvbW1pdCAwZGUwYWZiY2E4NjVlY2Y0ODJiNGQyYjYzNTIzNjc0NmRlZjg1MThmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgQXVnIDE1IDE4OjMyOjQxIDIwMDggKzAyMDAKLQotICAgIGNvbGRmaXJlOiBmaXggQ0ZJIGRyaXZlcnMgYWN0aXZhdGlvbiB3aXRoIG5ldyBtYWNybwotCi0gICAgcmVuYW1lIENGR19GTEFTSF9DRklfRFJJVkVSIHRvIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgN2RiYzM4YWQ5MTVmNGFlNjdmNGNkMTgxOGI3YWM4ZmVkMzY4YWFhOQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNSAyMDA4IC0wNTAwCi0KLSAgICBmZHQ6IGZkdCBhZGRyIHcvbyBhbnkgYXJncyByZXBvcnRzIGJhY2sgdGhlIGN1cnJlbnQgd29ya2luZyBhZGRyZXNzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjk1M2Q5OWZkNTI4YTQ5NmI0MDBhNzA2YjUxMWVhZjhlM2VhNjZhZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJRnJpIEF1ZyAxNSAwODoyNDozNCAyMDA4IC0wNTAwCi0KLSAgICBmZHQ6IGFkZGVkIHRoZSBhYmlsaXR5IHRvIHNldCBpbml0cmQgc3RhcnQvZW5kIHZpYSBjaG9zZW4gY29tbWFuZAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGZmYTRiYWZhY2FlZjY3MDU4NDYzYjNkN2QwMDk5Y2VkNTc1NjlkZDIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzMgMjAwOCAtMDUwMAotCi0gICAgQWRkIGNvbW1hbmQgdG8gZW5hYmxlL2Rpc2FibGUgaW50ZXJydXB0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDllOGU2M2NjZTY5NTU2YWVmMTBiNThiY2JjNTZkMzI0ZjU3MGVjM2EKLUF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDE5IDIyOjIxOjE2IDIwMDggLTA3MDAKLQotICAgIENGSTogQWRkIENGSV9DTURTRVRfSU5URUxfRVhURU5ERUQgdG8gZml4IGZsYXNoX3JlYWxfcHJvdGVjdCgpCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgbWlzc2luZyB2ZW5kb3IgY29kZSBpbiB0aGUgZmxhc2hfcmVhbF9wcm90ZWN0KCkgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZTAwYWNkZWQyZTZhOGQ2NjNlMTI2OTBhMGYwZjA4ZjViZWM1YTU4Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDE5IDE2OjUzOjM5IDIwMDggKzAwMDAKLQotICAgIENGSTogRml4IEFNRCBMZWdhY3kgc2VjdG9yIHByb3RlY3QKLQotICAgIE5ldyBpbXBsZW1lbnQgc2VjdG9yIGxvY2sgYW5kIHVubG9jayBvciBzb2Z0bG9jayBjb21tYW5kcwotICAgIGRvIG5vdCBleGlzdCBpbiBBTUQgbGVnYWN5IGZsYXNoLiBUaHVzLCBjYXVzaW5nIGlzc3VlCi0gICAgd2hlbiBlcmFzaW5nIEFNRCBsZWdhY3kgZmxhc2ggKHN1Y2ggYXMgbHYwNDApCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQ5MjY3MTQwNDE0MGYwOWQ1YjIxYjNkMmNlNGUzNjJjMDY5MmMwNjkKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJV2VkIEF1ZyAyMCAwOTo0MDoxNiAyMDA4ICswMjAwCi0KLSAgICBoYW1tZXJoZWFkL21pbWMyMDA6IFVzZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgotCi0gICAgQ0ZHX0ZMQVNIX0NGSV9EUklWRVIgd2FzIHJlY2VudGx5IHJlbmFtZWQgQ09ORklHX0ZMQVNIX0NGSV9EUklWRVIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAzM2VhYzJiM2Q5NDZmYzk5OGEwOTI0NWRmZTU0ZDAxNzA3OWI5MDU2Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBBdWcgMjAgMDk6Mjg6MzYgMjAwOCArMDIwMAotCi0gICAgaGFtbWVyaGVhZDogQWRkIG1pc3NpbmcgcHJpbnRmIHBhcmFtZXRlciB0byBDT05GSUdfQVVUT0JPT1RfUFJPTVBUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAyNWRhMGI4NDE5NWZkZGE4OWE5NDNiMmQyNTc1N2RiNWFmZWVmNWI4Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBBdWcgMjAgMDk6Mjc6MzcgMjAwOCArMDIwMAotCi0gICAgZmF2ci0zMi1lemtpdDogRml4IHByaW50ZiBmb3JtYXQgd2FybmluZ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDQ2MmRhMjVlODliMGI1OGJmNGM2NjM0NmMxZmNiMzA4N2M2MWI0YjgKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIEF1ZyAxNSAxMjowNDoyNSAyMDA4ICswMjAwCi0KLSAgICBNQUlOVEFJTkVSUzogU29ydCBhdnIzMiBzZWN0aW9uIGFscGhhYmV0aWNhbGx5Ci0KLSAgICBUaGUgcmVzdCBvZiB0aGUgTUFJTlRBSU5FUlMgZmlsZSBhcHBlYXJzIHRvIGJlIHNvcnRlZAotICAgIGFsbW9zdC1hbHBoYWJldGljYWxseSwgYnV0IGVudHJpZXMgZm9yIHRoZSBuZXdseSBhZGRlZCBBVlIzMiBib2FyZHMgd2VyZQotICAgIGFkZGVkIHNvbWV3aGF0IHJhbmRvbWx5LiBUaGlzIHBhdGNoIHNvcnRzIHRoZSBsaXN0IGFscGhhYmV0aWNhbGx5IGFnYWluLgotCi0gICAgQWxzbyB1cGRhdGUgbXkgZS1tYWlsIGFkZHJlc3MuIFRoZSBvbGQgb25lIHN0aWxsIHdvcmtzLCBidXQgaXQgbWF5IG5vdAotICAgIHdvcmsgZm9yZXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDEzYjUwZmUzYmMwNjVjNDg5MTFmYTM3MzIzMTQyMTI4MDg1NWE5ZDYKLUF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Ci1EYXRlOglXZWQgSnVsIDMwIDEzOjA3OjI3IDIwMDggKzAxMDAKLQotICAgIGF2cjMyOiBBZGQgTUlNQzIwMCBib2FyZAotCi0gICAgVGhlIE1JTUMyMDAgYm9hcmQgaXMgYmFzZWQgb24gQXRtZWwncyBOR1cxMDAgZGV2IGtpdCwgYnV0IHdpdGggYW4gZXh0cmEKLSAgICA4TUJ5dGUgRkxBU0ggYW5kIDEyOEtCeXRlIEZSQU0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBkYjcwYjg0MzI5MzE1YzUyZjZlYzc3ZjVhZTVjYTFhZmU5NzBhOWJiCi1BdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAyMTowNzozNCAyMDA4ICswOTAwCi0KLSAgICBydGw4MTY5OiBhZGQgc3VwcG9ydCBmb3IgUlRMODExMFNDTAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gdGhhdCBSVEw4MTEwU0NMIHN0YXJ0ZWQgdHJhbnNmZXIKLSAgICB3aXRoIGFuIGluY29ycmVjdCBtZW1vcnkgYWRkcmVzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOTQzYjgyNWJmMTVlNmEyOGFjODMyOGUwZjY0ODk0NzhiY2VlZjFlYQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyNSAxNTo0ODo1MiAyMDA4IC0wNTAwCi0KLSAgICBGaXggZG05MDAwIHJlY2VpdmUgc3RhdHVzIGFuZCBsZW4gbGl0dGxlIGVuZGlhbiBpc3N1ZQotCi0gICAgVGhlIHJlY2VpdmVkIHN0YXR1cyBhbmQgbGVuIHdhcyBpbiBsaXR0bGUgZW5kaWFuCi0gICAgZm9ybWF0IGFuZCBjYXVzZWQgdGhlIGV0aGVybmV0IHVuYWJsZSB0byBwcm9jZWVkCi0gICAgZnVydGhlci4gQWRkIF9fbGUxNl90b19jcHUoKSBpbiBkbTkwMDBfcnhfc3RhdHVzXzgvMTYvMzJiaXQoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGZjZDY5YTFhNTdmYjJhZjRkMjYyMDE0MjIwOTVhNGJlOWYzNjk2M2UKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBBdWcgMTUgMDg6MjQ6MzIgMjAwOCAtMDUwMAotCi0gICAgQ2xlYW4gdXAgdXNhZ2Ugb2YgaWNhY2hlX2Rpc2FibGUvZGNhY2hlX2Rpc2FibGUKLQotICAgIFRoZXJlIGlzIG5vIHBvaW50IGluIGRpc2FibGluZyB0aGUgaWNhY2hlIG9uIDd4eC83NHh4Lzg2eHggcGFydHMgYW5kIG5vdAotICAgIGFsc28gZmx1c2hpbmcgdGhlIGljYWNoZS4gIEFsbCBjYWxsZXJzIG9mIGludmFsaWRhdGVfbDFfaW5zdHJ1Y3Rpb25fY2FjaGUoKQotICAgIGNhbGwgaWNhY2hlX2Rpc2FibGUoKSByaWdodCBhZnRlci4JTWFrZSBpdCBzbyBpY2FjaGVfZGlzYWJsZSgpIGNhbGxzCi0gICAgaW52YWxpZGF0ZV9sMV9pbnN0cnVjdGlvbl9jYWNoZSgpIGZvciB1cy4KLQotICAgIEFsc28sIGRjYWNoZV9kaXNhYmxlKCkgYWxyZWFkeSBjYWxscyBkY2FjaGVfZmx1c2goKSBzbyB0aGVyZSBpcyBubyBwb2ludAotICAgIGluIHRoZSBleHBsaWNpdCBjYWxscyBvZiBkY2FjaGVfZmx1c2goKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhMTViMDcxMDRjYTdiYmI3MDkzYzkwMDljOWFlMWI1OGI0MjAyZDEzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgQXVnIDE1IDA4OjI0OjMxIDIwMDggLTA1MDAKLQotICAgIFVwZGF0ZSBsaW51eCBib290bSB0byBzdXBwb3J0IGVQQVBSIGNsaWVudCBpbnRlcmZhY2UKLQotICAgIFRoZSBlUEFQUiBzcGVjIGhhcyBzb21lIHN1YnRsZSBkaWZmZXJlbmNlcyBmcm9tIHRoZSBjdXJyZW50IGRldmljZQotICAgIHRyZWUgYmFzZWQgYm9vdCBpbnRlcmZhY2UgdG8gdGhlIHBvd2VycGMgbGludXgga2VybmVsLiBUaGUgcG93ZXJwYwotICAgIGxpbnV4IGtlcm5lbCBjdXJyZW50bHkgaWdub3JlcyB0aGUgZGlmZmVyZW5jZXMgdGhhdCBlUEFQUiBzcGVjaWZpZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYjczNGU1NTU2YTIzOWIzYmU1Zjk2OTNiMmY0YjRiNzM5NjgzZWMxNgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEF1ZyAxOCAyMzo1MDoyMCAyMDA4ICswMjAwCi0KLSAgICBNaW5vciBjb2RlIGNsZWFudXA6IGtlZXAgbGlzdHMgc29ydGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQwMDM5ZDRlZDI3NWU2Y2EwOWZiNDE3ODk1MDI0YWQwMmJlMTE4YzQKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglXZWQgSnVsIDIzIDE5OjEwOjE0IDIwMDggKzAyMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBBRFQ3NDYwIEkyQyBtb25pdG9yIGNoaXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotCi1jb21taXQgZWI1OWVhNDVhYjc3YzE0YjA5MGVhODU3ZDllYTlmOTAyZjQwZGIwYgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gSnVsIDE0IDE5OjQ1OjQ1IDIwMDggKzAyMDAKLQotICAgIHZpZGVvOiBDbGVhbiBkcml2ZXJzL3ZpZGVvL01ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA4NzFjMThkZDMwMTc1MjI3MGUxZjc0MzI4Yzg0NmMzMTA0YmUxZTJlCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBKdWwgMTQgMTk6NDU6MzcgMjAwOCArMDIwMAotCi0gICAgcnRjOiBDbGVhbiBkcml2ZXJzL3J0Yy9NYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgYTRhNTQ5YjRiNTNhZGY0MGEwZDM4ODJjYzMwYWM4MTJhOGY4NDdjNQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gSnVsIDE0IDE5OjQ1OjM1IDIwMDggKzAyMDAKLQotICAgIGkyYzogQ2xlYW4gZHJpdmVycy9pMmMvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCAwYTgyM2FhMmE4YThjMDY4NWU3MzkwMGYzODdkNjAyZDdlZGFmYzBlCi1BdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Ci1EYXRlOglXZWQgSnVsIDkgMjI6MzA6MzAgMjAwOCArMDgwMAotCi0gICAgQWRkICdsaWNlbnNlJyBjb21tYW5kIHRvIFUtQm9vdCBjb21tYW5kIGxpbmUKLQotICAgIFRoZSAnbGljZW5zZScgY29tbWFuZCBpbmNsdWRlcyB0aGUgVS1Cb290IGxpY2Vuc2UgKEdQTHYyKSBpbnRvIHRoZQotICAgIGFjdHVhbCBib290bG9hZGVyIGJpbmFyeS4gVGhlIGxpY2Vuc2UgdGV4dCBjYW4gYmUgc2hvd24gaW50ZXJhY3RpdmVseQotICAgIGF0IHRoZSBVLUJvb3QgY29tbWFuZGxpbmUuCi0KLSAgICBGb3IgcHJvZHVjdHMgd2hlcmUgdGhlIGNvbW1hbmRsaW5lIGNhbiBhY3R1YWxseSBiZSBhY2Nlc3NlZCBieSB0aGUKLSAgICBlbmQgdXNlciwgdGhpcyBoZWxwcyB0byBwcmV2ZW50IGluYWR2ZXJ0ZW50IEdQTCB2aW9sYXRpb25zLCBzaW5jZSB0aGUKLSAgICBHUEx2MiBsaWNlbnNlIHRleHQgY2FuIG5vIGxvbmdlciBiZSAnZm9yZ290dGVuJyB0byBiZSBpbmNsdWRlZCBpbnRvCi0gICAgdGhlIHByb2R1Y3QuCi0KLSAgICBUaGUgJ2xpY2Vuc2UnIGNvbW1hbmQgY2FuIGJlIGVuYWJsZWQgYnkgQ09ORklHX0NNRF9MSUNFTlNFLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLQotY29tbWl0IGZlMmNlNTUwMGViZjQzZDc5ZDIyNzE5MGJkMjM3MDIzMmQ1YjExM2QKLUF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQGdudW1vbmtzLm9yZz4KLURhdGU6CVN1biBKdWwgNiAxNTo1NjozOCAyMDA4ICswODAwCi0KLSAgICBhZGQgJ3VuemlwJyBjb21tYW5kIHRvIHUtYm9vdCBjb21tYW5kbGluZQotCi0gICAgW1BBVENIXSBhZGQgbmV3ICd1bnppcCcgY29tbWFuZCB0byB1LWJvb3QgY29tbWFuZGxpbmUKLQotICAgIGNvbW1vbi9jbWRfbWVtLmM6IG5ldyBjb21tYW5kICJ1bnppcCBzcmNhZGRyIGRzdGFkZHIgW2RzdHNpemVdIiB0byB1bnppcCBmcm9tCi0gICAgbWVtb3J5IHRvIG1lbW9yeSwgYW5kIG9wdGlvbiBDT05GSUdfQ01EX1VOWklQIHRvIGVuYWJsZSBpdAotCi0gICAgU2lnbmVkLW9mZi1ieTogV2VybmVyIEFsbWVzYmVyZ2VyIDx3ZXJuZXJAb3Blbm1va28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Ci0KLWNvbW1pdCAwN2VmYzllMzIxNjE5YzNkZWMyMTMzMTBjMzJlMDExYWE2ZjAyNzgzCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDYgMTk6Mzc6MTcgMjAwOCAtMDUwMAotCi0gICAgQ2hhbmdlIENGR19FTlZfU0laRSB0byBDRkdfRU5WX1NFQ1RfU0laRSBmb3IgU1BJIHNlY3RvciBlcmFzZQotCi0gICAgVGhlIENGR19FTlZfU0laRSBpcyBub3Qgc3VpdGFibGUgdXNlZCBmb3IgU1BJIGZsYXNoIGVyYXNlCi0gICAgc2VjdG9yIHNpemUgaWYgQ0ZHX0VOVl9TSVpFIGlzIGxlc3MgdGhhbiBDRkdfRU5WX1NFQ1RfU0laRS4KLSAgICBBZGQgY29uZGl0aW9uIGNoZWNrIGlmIENGR19FTlZfU0laRSBpcyBsYXJnZXIgdGhhbgotICAgIENGR19FTlZfU0VDVF9TSVpFLCBjYWxjdWxhdGUgdGhlIHJpZ2h0IG51bWJlciBvZiBzZWN0b3JzIGZvcgotICAgIGVyYXNpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGNiNGU2NTRjYWZhYmFhMWFjMTgwZDM3YjAwYzhmNjA5NWRhZTljOQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyAxMSAxNTo1NDoyNSAyMDA4ICswMDAwCi0KLSAgICBDb2xkRmlyZTogTXVsdGlwbGUgZml4ZXMgZm9yIE01MjgyRVZCCi0KLSAgICBJbmNvcnJlY3QgQ0ZHX0haIHZhbHVlLCBjaGFuZ2UgMTAwMDAwMCB0byAxMDAwLgotICAgIFJlbmFtZSAjd2FyaW5nIHRvICN3YXJuaW5nLiBSQU1CQVIxIHVzZXMgdHdpY2UKLSAgICBpbiBzdGFydC5TLCByZW5hbWUgdGhlIGxhdGVyIHRvIEZMQVNIQkFSLiBJbnNlcnQKLSAgICBub3AgZm9yIERSQU0gc2V0dXAuIEFuZCwgZW52X29mZnNldCBpbiBsaW5rZXIgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxMGRiM2ExN2EyNzhkZDNhMjc2NjhiMzFjYjMyY2RkMTQ3NmU5NTEzCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXVnIDExIDE1OjI2OjQzIDIwMDggKzAwMDAKLQotICAgIENvbGRGaXJlOiBNb3ZlIG01MjgyZXZiIGZyb20gYm9hcmQgdG8gYm9hcmQvZnJlZXNjYWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTZkZjA5MWQzOTFmNzRiYmYyZGMyZjc5MzFmOWYzYzhmMjM1MjllNAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyAxMSAxNToyNTowNyAyMDA4ICswMDAwCi0KLSAgICBDb2xkRmlyZTogTW92ZSBtNTI3MmMzIGZyb20gYm9hcmQgdG8gYm9hcmQvZnJlZXNjYWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjU5ZTliYWQ2MjlhNDgwZjYwNmIyODZkNTcwM2FlZjcxNTllZGY5OAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyAxMSAxNToyMzoxNiAyMDA4ICswMDAwCi0KLSAgICBDb2xkRmlyZTogTW92ZSBtNTI3MWV2YiBmcm9tIGJvYXJkIHRvIGJvYXJkL2ZyZWVzY2FsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA1MzE2ZjhlY2U4MjA2MzM5YTIwOGVjMDUyZjAzOWNkMGY3Y2E5MjIKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBdWcgMTEgMTM6NDE6NDkgMjAwOCArMDAwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBNNTQ0NTFFVkIgcGxhdGZvcm0gc3VwcG9ydCBmb3IgTUNGNTQ0NXgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5MjJjZDc1MTU1OTdlOWEyYzA3ZDY4ZTJhNjI0MGIwYjdiMGYwMTM2Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDYgMTk6MTQ6MDggMjAwOCAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBTZXJpYWwgRmxhc2ggc3VwcG9ydCBmb3IgTTU0NDU1RVZCCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWY3NTE1NTE0NTY4MjhiMmQwZmY0MTdmMTA5NTlmYjBjNzExMGJkMAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAyMyAyMDozODo1MyAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogSW1wbGVtZW50IFNCRiBmZWF0dXJlIGZvciBNNTQ0NUVWQgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE3MzIzYmJhMjI5MjAzYWFlMjYwNGFmZGUxMzFhYjQ3YmFkNGVhZGMKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdWwgMjMgMTc6NTM6MzYgMjAwOCAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBTU1BJIGZlYXR1cmUgZm9yIE1DRjU0NDV4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjJkMDIyZDFhYzNmNTliZmZhOWNlYzI0OTM0MWU3N2FlYTE2OGFiYwotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAyMyAxNzozNzoxMCAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogVXNlIENGSSBGbGFzaCBkcml2ZXIgZm9yIE01NDQ1NUVWQgotCi0gICAgUmVtb3ZlIG5vbi1jb21tb24gZmxhc2ggZHJpdmVyIGluCi0gICAgYm9hcmQvZnJlZXNjYWxlL201NDQ1NWV2Yi9mbGFzaC5jLiBUaGUgbm9uLWNmaSBmbGFzaCB3aWxsCi0gICAgdXNlIENPTkZJR19GTEFTSF9DRklfTEVHQUNZIHRvIGNvbmZpZ3VyZSB0aGUgZmxhc2gKLSAgICBhdHRyaWJ1dGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNmQzM2M2YWNmYTM1YjExNDRkNDZmZmJmZjdlMjllZTc5NjkyOTBkMAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAyMyAxNzoxMTo0NyAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE01MjUzREVNTyBwbGF0Zm9ybSBzdXBwb3J0IGZvciBNQ0Y1MjUzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODBiYTYxZmQ4MjU2OWFmNDBlMDRkNGEwODkyNTdiODE4ODE4ODRmMgotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyA2IDE0OjE3OjA5IDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBSYWlzZSBNNTI1M0VWQkUgdWFydCBiYXVkcmF0ZSB0byAxMTUyMDAgYnBzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDM2MTMwN2U3M2NlMWY2ZmM2ODc2MDEyM2YzN2Q0ODc2Zjg1MWYzZQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyA2IDE0OjExOjM2IDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggTTUyNTNFVkIgZHJhbSBicmluZyB1cCBpc3N1ZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRiMDcwODA5M2UxNWI0MTIyOTYzMjhiZjgxMzI1Y2Y5YjY5ZmU1MTIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBBdWcgMTQgMTQ6NDE6MDYgMjAwOCArMDIwMAotCi0gICAgQ29kaW5nIFN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2OGNmMTlhYWU0OGYyOTY5ZWM3MDY2OTYwNGQwZDc3NmYwMmM4YmM0Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAxODoyNDowNSAyMDA4IC0wNTAwCi0KLSAgICBzb2NyYXRlczogVXBkYXRlIE5BTkQgZHJpdmVyIHRvIG5ldyBBUEkuCi0KLSAgICBBbHNvLCBmaXggc29tZSBtaW5vciBmb3JtYXR0aW5nIGlzc3VlcywgYW5kIHNpbXBsaWZ5IHRoZSBoYW5kbGluZyBvZgotICAgICJzdGF0ZSIgZm9yIHdyaXRlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmEyMmQxMGYzOWVhZWVkZDAzNWU4MjY1NjE2ZTMxZmY4OGUzMTRkNQotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMTg6MDM6NDAgMjAwOCAtMDUwMAotCi0gICAgcXVhZDEwMGhkOiBVcGRhdGUgTkFORCBkcml2ZXIgdG8gbmV3IEFQSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjY0Y2I2NTJhOGE4NGM1YzM0ZDBhZmNiZDdmZmVmODg2YWExZDgzOAotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMTc6NTM6NDggMjAwOCAtMDUwMAotCi0gICAgbTUzNzNldmI6IFVwZGF0ZSBOQU5EIGRyaXZlciB0byBuZXcgQVBJLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYTIzYTE5N2M4NzIyYjgwNWY0MDg5NTU0NGJiZGIxYTY0OGMxYzgyCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAxNzowNDozMCAyMDA4IC0wNTAwCi0KLSAgICBzM2MyNHgwOiBVcGRhdGUgTkFORCBkcml2ZXIgdG8gbmV3IEFQSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWE1Zjc1ZjIwZGI4YTcxMDNmYWQ5YzM0ZDZmMTE5M2UxMGQxODkwZgotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMTU6NTY6MDAgMjAwOCAtMDUwMAotCi0gICAgYXQ5MTogVXBkYXRlIGJvYXJkIE5BTkQgZHJpdmVycyB0byBjdXJyZW50IEFQSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDQzOGQ1MDg0OGU5NDI1Mjg2ZTVmYjA0OTNlMGFmZmI1YTBiMWUxYgotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CVdlZCBBdWcgMTMgMDk6MTE6MDIgMjAwOCArMDkwMAotCi0gICAgRml4IE9uZU5BTkQgYnVpbGQgYnJlYWsKLQotICAgIFNpbmNlIHBhZ2Ugc2l6ZSBmaWVsZCBpcyBjaGFuZ2VkIGZyb20gb29iYmxvY2sgdG8gd3JpdGVzaXplLiBCdXQgT25lTkFORCBpcyBub3QgdXBkYXRlZC4KLSAgICAtIGZpeCBidWZmZXJyYW0gbWFuYWdlbWVudCBhdCBlcmFzZSBvcGVyYXRpb24KLSAgICBUaGlzIHBhdGNoIGluY2x1ZGVzIHRoZSBOQU5EL09uZU5BTkQgc3RhdGUgZmlsZWQgdG9vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk0ODNkZjY0MDhjMjVmMTYwNjA0MzJkZTM4Njg5MDFlMzUyZTIzYmMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDMgMjAwOCArMDIwMAotCi0gICAgZHJpdmVycy9tdGQvbmFuZF9sZWdhY3k6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBjYzRhMGNlZWFjNTQ2MjEwNjE3MmQwY2M5ZDlkNTQyMjMzYWEzYWIyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgQXVnIDEzIDAxOjQwOjQzIDIwMDggKzAyMDAKLQotICAgIGRyaXZlcnMvbXRkL25hbmQ6IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIHJlbmFtZSBDRkdfTkFORF9MRUdBQ1kgdG8gQ09ORklHX05BTkRfTEVHQUNZCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNGZiMDliODE5MjBlNWRmZGZjNDU3Njg4MzE4NjczM2YwYmQ2MDU5YwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MiAyMDA4ICswMjAwCi0KLSAgICBkcml2ZXJzL210ZC9vbmVuYW5kOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMDBiMTg4M2E0Y2FjNTlkOTdjZDI5N2IxYTNhMzk4ZGI4NTk4Mjg2NQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MiAyMDA4ICswMjAwCi0KLSAgICBkcml2ZXJzL210ZDogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgcmVuYW1lIENGR19GTEFTSF9DRklfRFJJVkVSIHRvIENPTkZJR19GTEFTSF9DRklfRFJJVkVSCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgN2JhNDRhNTUyMWNkYjdmYTFjNzI4NjQwMjVjZGUxZTIxYTZmNjkyMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MSAyMDA4ICswMjAwCi0KLSAgICBkcml2ZXJzL3FlOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYWI2ODc4YzdiYzY4YTdiNWU1YjczMTY1NWJkYzEzMjIxYmJmYzQ5MwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MCAyMDA4ICswMjAwCi0KLSAgICBkcml2ZXJzL3BjaTogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDU1ZDZkMmQzOWZlM2ZlODc4MDJlMzk5YWExNzUzOTM2OGI0OTVkMmUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMDE6NDA6NDAgMjAwOCArMDIwMAotCi0gICAgZHJpdmVycy9taXNjOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNjVlNDFlYTA1NDhiODZlM2Q3ODkyZGVmYWM4ZTRkYzFlYTcwYWVkMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDo0MCAyMDA4ICswMjAwCi0KLSAgICBkcml2ZXJzL2lucHV0OiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgODhmNTdlMDkzMTE0YTQ0YWE5YTg1OGQ1MmIwOTliY2M1MjAzNGE4YwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDozOSAyMDA4ICswMjAwCi0KLSAgICBkcml2ZXJzL2RtYTogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDFhMDI4MDZjNGIxYjRhMDlhZDRlOTVkM2FhYzM3ODM4ODllNWY4ZDcKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzkgMjAwOCArMDIwMAotCi0gICAgZHJpdmVycy9ibG9jazogTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDFhNmZmYmZhZjQzNTNiZWMzNzllZDFmY2ZjNTRiNmYxYTMwYWYwOWEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzkgMjAwOCArMDIwMAotCi0gICAgc2VyaWFsOiBtb3ZlIENGR19OUzk3NTBfVUFSVCB0byBDT05GSUdfTlM5NzUwX1VBUlQKLQotICAgIG1vdmUgYWxzbyBjb25kaXRpb25hbCBjb21waWxhdGlvbiB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDZjNThhMDMwZjg2ODI5ZmE0ZjBkNDMzN2NmNGI3OTRjNDFhMTgyM2UKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBdWcgMTMgMDE6NDA6MzggMjAwOCArMDIwMAotCi0gICAgc2VyaWFsOiBtb3ZlIENGR19TQ0lGX0NPTlNPTEUgdG8gQ09ORklHX1NDSUZfQ09OU09MRQotCi0gICAgbW92ZSBhbHNvIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDZlOWVlOTJlODkwZjY3NTk0YWIxNTA2ODk1MTBkZjM2MTEzM2VhZAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEF1ZyAxMyAwMTo0MDozOCAyMDA4ICswMjAwCi0KLSAgICBjb21tb246IE1vdmUgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmNWFjYjlmZDliYmExMTYwZGUzZWYzNDljN2QzM2ZlNTEwZWRhMjg2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgQXVnIDEzIDAxOjQwOjA5IDIwMDggKzAyMDAKLQotICAgIG14MzE6IG1vdmUgZnJlZXNjYWxlJ3MgbXgzMSBib2FyZHMgdG8gdmVuZG9yIGJvYXJkIGRpcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDhlZDJmNWY5NTBlMjU4MTIxNGQyMGIwMTFhOGYyN2E2Mzk2ZDY1ZDIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBKdWwgNSAyMzoxMToxMSAyMDA4ICswMjAwCi0KLSAgICBhdDkxOiBtb3ZlIGFyY2gtYXQ5MXNhbTkgdG8gYXJjaC1hdDkxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTk1Y2NmYzU5OTFkNDg3NjRiMjUxOTk0MWUzNTA3ZjY5Mzg1MWQ1ZAotQXV0aG9yOiBGYXRoaSBCT1VEUkEgPGZhYm9AZGViaWFuLm9yZz4KLURhdGU6CVdlZCBBdWcgNiAxMDowNjoyMCAyMDA4ICswMjAwCi0KLSAgICBPbmVOQU5EOiBGaWxsIGluIE1URCBmdW5jdGlvbiBwb2ludGVycyBmb3IgT25lTkFORC4KLQotICAgIG9uZW5hbmRfcHJpbnRfZGV2aWNlX2luZm8oKToKLSAgICAgLSBOb3cgcmV0dXJucyBhIHN0cmluZyB0byBiZSBwbGFjZWQgaW4gbXRkLT5uYW1lLAotICAgICAgIHJhdGhlciB0aGFuIGNhbGxpbmcgcHJpbnRmLgotICAgICAtIFJlbW92ZSB2ZXJib3NlIHBhcmFtZXRlciBhcyBpdCBiZWNvbWVzIHVzZWxlc3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGYXRoaSBCb3VkcmEgPGZhYm9AZGViaWFuLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFhNjQ2NjQzYjZiYzI1MGNiM2E0OTY2YmY3Mjg4NzZlMGMxMGQzMjkKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyA2IDIxOjQyOjA3IDIwMDggKzAyMDAKLQotICAgIG5hbmRfc3BsOiBTdXBwb3J0IHBhZ2UtYWxpZ25lZCByZWFkIGluIG5hbmRfbG9hZCwgdXNlIGNoaXBzZWxlY3QKLQotICAgIFN1cHBvcnRpbmcgcGFnZS1hbGlnbmVkIHJlYWRzIGRvZXNuJ3QgaW5jdXJlIGFueSBzaW5pZmljYW50IG92ZXJoZWFkLCBqdXN0Ci0gICAgYSBzbWFsbCBjaGFuZ2UgaW4gdGhlIGFsZ29yaXRobS4gQWxzbyByZXBsYWNlIGluXzggd2l0aCByZWFkYiwgc2luY2UgdGhlcmUKLSAgICBpcyBubyBpbl84IG9uIEFSTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRmMzJkNzc2MGE1OGZlNzM5ODFiNmVkYzBiMDc1MTU2NWQyZGFhNGMKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDUgMTE6MTU6NTkgMjAwOCAtMDUwMAotCi0gICAgTkFORCBib290OiBVcGRhdGUgbGFyZ2UgcGFnZSBzdXBwb3J0IGZvciBjdXJyZW50IEFQSS4KLQotICAgIEFsc28sIHJlbW92ZSB0aGUgY3RybCB2YXJpYWJsZSBpbiBmYXZvciBvZiBwYXNzaW5nIHRoZSBjb25zdGFudHMKLSAgICBkaXJlY3RseSwgYW5kIHJlbW92ZSByZWR1bmRhbnQgKHU4KSBjYXN0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTRjMDk1MDg1NDVkMWM0NTYxN2JhNDUzOTFjMDNjMDNjYmMzNjBiOQotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdW4gMzAgMTQ6MTM6MjggMjAwOCAtMDUwMAotCi0gICAgTkFORCBib290OiBNUEM4MzEzRVJEQiBzdXBwb3J0Ci0KLSAgICBOb3RlIHRoYXQgd2l0aCBvbGRlciBib2FyZCByZXZpc2lvbnMsIE5BTkQgYm9vdCBtYXkgb25seSB3b3JrIGFmdGVyIGEKLSAgICBwb3dlci1vbiByZXNldCwgYW5kIG5vdCBhZnRlciBhIHdhcm0gcmVzZXQuICBJIGRvbid0IGhhdmUgYSBuZXdlciBib2FyZAotICAgIHRvIHRlc3Qgb247IGlmIHlvdSBoYXZlIGEgYm9hcmQgd2l0aCBhIDMzTUh6IGNyeXN0YWwsIHBsZWFzZSBsZXQgbWUga25vdwotICAgIGlmIGl0IHdvcmtzIGFmdGVyIGEgd2FybSByZXNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWNkYWI1YzMzZjFlYTZmNWUwOGYwNmYwOGJjNjRhZjIzZmY0MGQ3MQotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdW4gMjYgMTQ6MDY6NTIgMjAwOCAtMDUwMAotCi0gICAgbXBjODMxM2VyZGI6IEVuYWJsZSBOQU5EIGluIGNvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzNkYjhjNjQ5YzZhYjNkYTJmMTQxMWM0YzZkNjFhZWNlYTA1NGFhNAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMxIDEyOjM4OjI2IDIwMDggKzAyMDAKLQotICAgIE5BTkQ6IERvIG5vdCB3cml0ZSBvciByZWFkIGEgd2hvbGUgYmxvY2sgaWYgaXQgaXMgbGFyZ2VyIHRoYW4gdGhlIGVudmlyb25tZW50Ci0KLSAgICBFbnZpcm9ubWVudCBjYW4gYmUgc21hbGxlciB0aGFuIE5BTkQgYmxvY2sgc2l6ZSwgZG8gbm90IG5lZWQgdG8gcmVhZCBhIHdob2xlCi0gICAgYmxvY2sgYW5kIG1pbmltdW0gZm9yIHdyaXRpbmcgaXMgb25lIHBhZ2UuIEFsc28gcmVtb3ZlIGFuIHVudXNlZCB2YXJpYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVhZmNhYmQxNWYwMGMxNDIxNTYyMzVjNTE5ZmNjNTViMTA5OTMyNDEKLUF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgotRGF0ZToJU3VuIEp1biAyMiAxNjozMDowNiAyMDA4ICswMjAwCi0KLSAgICBOQU5EOiBjaGlwLT5zdGF0ZSBkb2VzIG5vdCBhbHdheXMgZ2V0IHNldC4KLQotICAgIEZpeGVzIGFuIGlzc3VlIHdpdGggY2hpcC0+c3RhdGUgbm90IGFsd2F5cyBiZWluZyBzZXQgY2F1c2luZyB0cm91Ymxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDEzZjBmZDk0ZTNjYWU2ZjhhMGQ5ZmJhNWQzNjdlMzExZWRjOGViZGUKLUF1dGhvcjogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci1EYXRlOglNb24gSnVuIDMwIDE1OjM0OjQwIDIwMDggKzAyMDAKLQotICAgIE5BTkQ6IFNjYW4gYmFkIGJsb2NrcyBsYXppbHkuCi0KLSAgICBSYXRoZXIgdGhhbiBzY2FubmluZyBvbiBib290LCBzY2FuIHVwb24gdGhlIGZpcnN0IGF0dGVtcHQgdG8gY2hlY2sgdGhlCi0gICAgYmFkbmVzcyBvZiBhIGJsb2NrLiAgVGhpcyBzcGVlZHMgdXAgYm9vdCB3aGVuIG5vdCB1c2luZyBOQU5ELCBhbmQgcmVkdWNlcwotICAgIHRoZSBsaWtlbGlob29kIG9mIG5lZWRpbmcgdG8gcmVmbGFzaCB2aWEgSlRBRyBpZiBOQU5EIGJlY29tZXMKLSAgICBub25mdW5jdGlvbmFsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkZmJmNjE3ZmYwNTVlNDIxNmY3OGQzNThiMDg2N2M1NDg5MTZkMTRiCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1biAxMiAxMzoyMDoxNiAyMDA4IC0wNTAwCi0KLSAgICBOQU5EIHJlYWQvd3JpdGUgZml4Ci0KLSAgICBJbXBsZW1lbnQgYmxvY2stc2tpcHBpbmcgcmVhZC93cml0ZSwgYmFzZWQgb24gYSBwYXRjaCBmcm9tCi0gICAgTW9ydGVuIEViYmVsbCBIZXN0ZW5zIDxtb3J0ZW4uaGVzdG5lc0B0YW5kYmVyZy5jb20+LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTW9ydGVuIEViYmVsbCBIZXN0bmVzIDxtb3J0ZW4uaGVzdG5lc0B0YW5kYmVyZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5ODRlMDNjZGYxNDMxYmI1OTNhZWFhMWI3NGM0NDVkNjE2Zjk1NWQzCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1biAxMiAxMzoxMzoyMyAyMDA4IC0wNTAwCi0KLSAgICBOQU5EOiBBbHdheXMgc2tpcCBibG9ja3Mgb24gcmVhZC93cml0ZS9ib290LgotCi0gICAgVXNlIG9mIHRoZSBub24tc2tpcHBpbmcgdmVyc2lvbnMgd2FzIGFsbW9zdCBhbHdheXMgKGlmIG5vdCBhbHdheXMpCi0gICAgYW4gZXJyb3IsIGFuZCBubyB2YWxpZCB1c2UgY2FzZSBoYXMgYmVlbiBpZGVudGlmaWVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlMWMzZGJhZGEzNDk5OTI4NzU5MzQ1NzVjOTdiMzI4YWIyY2IzM2NhCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IEp1biAxMiAxMToxMDoyMSAyMDA4IC0wNTAwCi0KLSAgICBuYW5kOiBmc2xfdXBtOiBjb252ZXJ0IHRvIHVwZGF0ZWQgTVREIE5BTkQgaW5mcmFzdHJ1Y3R1cmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzAwMjUzMzA2YWNjNzJiMWIyZTlmYWYwOTg3Zjg2NTUxMTUxZDdjZgotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjIgMTU6MDI6NDYgMjAwOCAtMDUwMAotCi0gICAgZnNsX2VsYmNfbmFuZDogSGFyZC1jb2RlIHRoZSBGQkFSL0ZQQVIgc3BsaXQuCi0KLSAgICBUaGUgaGFyZHdhcmUgaGFzIHNlcGFyYXRlIHJlZ2lzdGVycyBmb3IgYmxvY2sgYW5kIHBhZ2Utd2l0aGluLWJsb2NrLAotICAgIGJ1dCB0aGUgZGl2aXNpb24gYmV0d2VlbiB0aGUgdHdvIGhhcyBubyBhcHBhcmVudCByZWxhdGlvbiB0byB0aGUKLSAgICBhY3R1YWwgZXJhc2UgYmxvY2sgc2l6ZSBvZiB0aGUgTkFORCBjaGlwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5YzgxNGIwYTcxNmFhZTg4NGJlYzk3N2I5YTAzMmRmYTU5Y2ZiNzlhCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJRnJpIE1hciAyOCAyMjoxMDo1NCAyMDA4ICswMzAwCi0KLSAgICBmc2xfZWxiY19uYW5kOiB3b3JrYXJvdW5kIGZvciBoYW5ncyBkdXJpbmcgbmFuZCB3cml0ZQotCi0gICAgVXNpbmcgY3VycmVudCBkcml2ZXIgZWxiYyBzb21ldGltZXMgaGFuZ3MgZHVyaW5nIG5hbmQgd3JpdGUuIFJlYWRpbmcgYmFjawotICAgIGxhc3QgYnl0ZSBoZWxwcyB0aG91Z2ggKHRoYW5rcyB0byBTY290dCBXb29kIGZvciB0aGUgaWRlYSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDlmZDAyMGQ2YjRiMzZiOWZiNjdjZDgzNGJjMWFlN2ZkYmExNWVlOWUKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWFyIDIxIDE2OjEyOjUxIDIwMDggLTA1MDAKLQotICAgIEZyZWVzY2FsZSBlTEJDIEZDTSBOQU5EIGRyaXZlcgotCi0gICAgVGhpcyBpcyBhIGRyaXZlciBmb3IgdGhlIEZsYXNoIENvbnRyb2wgTWFjaGluZSBvZiB0aGUgZW5oYW5jaGVkIExvY2FsIEJ1cwotICAgIENvbnRyb2xsZXIgZm91bmQgb24gc29tZSBGcmVlc2NhbGUgY2hpcHMgKHN1Y2ggYXMgdGhlIG1wYzgzMTMgYW5kIHRoZQotICAgIG1wYzgzNzkpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0MWVmOGM3MTZlOTNmZGY1MGVmZTljMWJhNzMzY2E2Njc1ZGFhY2E2Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE1hciAxOCAxNToyOToxNCAyMDA4IC0wNTAwCi0KLSAgICBEb24ndCBwYW5pYyBpZiBhIGNvbnRyb2xsZXIgZHJpdmVyIGRvZXMgZWNjIGl0cyBvd24gd2F5LgotCi0gICAgU29tZSBoYXJkd2FyZSwgc3VjaCBhcyB0aGUgZW5oYW5jZWQgbG9jYWwgYnVzIGNvbnRyb2xsZXIgdXNlZCBvbiBzb21lCi0gICAgbXBjODN4eCBjaGlwcywgZG9lcyBlY2MgdHJhbnNwYXJlbnRseSB3aGVuIHJlYWRpbmcgYW5kIHdyaXRpbmcgZGF0YSwgcmF0aGVyCi0gICAgdGhhbiBwcm92aWRpbmcgYSBnZW5lcmljIGNhbGN1bGF0ZS9jb3JyZWN0IG1lY2hhbmlzbSB0aGF0IGNhbiBiZSBleHBvcnRlZCB0bwotICAgIHRoZSBuYW5kIHN1YnN5c3RlbS4KLQotICAgIFRoZSBzdWJzeXN0ZW0gc2hvdWxkIG5vdCBCVUcoKSB3aGVuIGNhbGN1bGF0ZSwgY29ycmVjdCwgb3IgaHdjdGwgYXJlCi0gICAgbWlzc2luZywgaWYgdGhlIG1ldGhvZHMgdGhhdCBjYWxsIHRoZW0gaGF2ZSBiZWVuIG92ZXJyaWRkZW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU1MmIzNGQ0MGE4YTY0NmUzZDExNjM4ZWE4Nzk3ZTk2Mzk4ZGJhMTMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEphbiAxMCAxODo0NzozMyAyMDA4ICswMTAwCi0KLSAgICBOQU5EOiBNYWtlIE5BTkQgZHJpdmVyIGxlc3MgdmVyYm9zZSBwZXIgZGVmYXVsdAotCi0gICAgVGhpcyBwYXRjaCB0dXJucyBvZmYgcHJpbnRpbmcgb2YgYmFkIGJsb2NrcyBwZXIgZGVmYXVsdCB1cG9uIGJvb3R1cC4KLSAgICBUaGlzIGNhbiBhbHdheXMgYmUgc2hvd24gdmlhIHRoZSAibmFuZCBiYWQiIGNvbW1hbmQgbGF0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmZTU2YTI3NzJlNWM1OTU3N2RmOTA2MTYzZDBkNGIyOWIwNTYxNDBlCi1BdXRob3I6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgotRGF0ZToJV2VkIEphbiA5IDE1OjM2OjIwIDIwMDggKzAxMDAKLQotICAgIE5BTkQ6IERhdmluY2kgZHJpdmVyIHVwZGF0ZXMKLQotICAgIEhlcmUgY29tZXMgYSB0cml2aWFsIHBhdGNoIHRvIGNwdS9hcm05MjZlanMvZGF2aW5jaS9uYW5kLmMuIFVuZm9ydHVuYXRlbHkgSQotICAgIGRvbid0IGhhdmUgaGFyZHdhcmUgaGFuZHkgc28gSSBjYW4gbm90IHRlc3QgaXQgYXQgdGhlIG1vbWVudCBidXQgY2hhbmdlcyBhcmUKLSAgICByYXRoZXIgdHJpdmlhbCBzbyBpdCBzaG91bGQgd29yay4gSXQgd291bGQgYmUgbmljZSBpZiBzb21lYm9keSB3aXRoIGEKLSAgICBoYXJkd2FyZSBjaGVja2VkIGl0IGFueXdheXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZXkgS3VidXNoeW4gPGtzaUBrb2k4Lm5ldD4KLQotY29tbWl0IGRlYWM5MTNlZmZkOGQ4MDUzNWM5ZmY0Njg3YjZmY2RmZjU0MGM1NTQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEphbiA1IDE2OjUwOjMyIDIwMDggKzAxMDAKLQotICAgIE5BTkQ6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGFuZCBzbWFsbCBjb2Rpbmcgc3R5bGUgaXNzdWUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGM1NjhmNzdhY2RmODk2ZmMzZGQ2NDEzY2U1MzIwNWIxN2JhODA5YTMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEphbiA1IDE2OjQ5OjM3IDIwMDggKzAxMDAKLQotICAgIE5BTkQ6IFVwZGF0ZSBuYW5kX3NwbCBkcml2ZXIgdG8gbWF0Y2ggdXBkYXRlZCBuYW5kIHN1YnN5c3RlbQotCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBOQU5EIGJvb3RpbmcgZHJpdmVyIG5hbmRfc3BsL25hbmRfYm9vdC5jIHRvIG1hdGNoCi0gICAgdGhlIG5ldyBpbmZyYXN0cnVjdHVyZSBmcm9tIHRoZSB1cGRhdGVkIE5BTkQgc3Vic3lzdGVtLiBUaGlzIE5BTkQKLSAgICBzdWJzeXN0ZW0gd2FzIHJlY2VudGx5IHN5bmNlZCBhZ2FpbiB3aXRoIHRoZSBMaW51eCAyLjYuMjIgTVREL05BTkQKLSAgICBzdWJzeXN0ZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzZGYyZWNlMGYwZmJiYTQ3ZDI3ZjAyZmZmOTZjNTMzNzMyYjk4YzE0Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBKYW4gNSAxNjo0Nzo1OCAyMDA4ICswMTAwCi0KLSAgICBOQU5EOiBVcGRhdGUgNHh4IE5ERkMgZHJpdmVyIHRvIG1hdGNoIHVwZGF0ZWQgbmFuZCBzdWJzeXN0ZW0KLQotICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgNHh4IE5BTkQgZHJpdmVyIG5kZmMuYyB0byBtYXRjaCB0aGUgbmV3Ci0gICAgaW5mcmFzdHJ1Y3R1cmUgZnJvbSB0aGUgdXBkYXRlZCBOQU5EIHN1YnN5c3RlbS4gVGhpcyBOQU5ECi0gICAgc3Vic3lzdGVtIHdhcyByZWNlbnRseSBzeW5jZWQgYWdhaW4gd2l0aCB0aGUgTGludXggMi42LjIyIE1URC9OQU5ECi0gICAgc3Vic3lzdGVtLgotCi0gICAgVGVzdGVkIHN1Y2Nlc3NmdWxseSBvbiBBTUNDIFNlcXVvaWEgYW5kIEJhbWJvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDEyMDcyMjY0NTI4ZWJhMzM3MzdiYzk2NzRlMTlmMGU5MjVmZmRhMjMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEphbiA1IDE2OjQzOjI1IDIwMDggKzAxMDAKLQotICAgIE5BTkQ6IENoYW5nZSBuYW5kX3dhaXRfcmVhZHkoKSB0byBub3QgY2FsbCBuYW5kX3dhaXQoKQotCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIG5hbmRfd2FpdF9yZWFkeSgpIHRvIG5vdCBqdXN0IGNhbGwgbmFuZF93YWl0KCksCi0gICAgc2luY2UgdGhpcyB3aWxsIHNlbmQgYSBuZXcgY29tbWFuZCB0byB0aGUgTkFORCBjaGlwLiBXZSBqdXN0IHdhbnQgdG8KLSAgICB3YWl0IGZvciB0aGUgY2hpcCB0byBiZWNvbWUgcmVhZHkgaGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDlhZDc1NGZlZjUwNTMxNDRkYWVkM2IwMDdhZGFmMWM5YmVjNjU0YzkKLUF1dGhvcjogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAZGF0YXJlc3BvbnMubm8+Ci1EYXRlOglGcmkgRGVjIDE0IDE2OjMzOjQ1IDIwMDcgKzAxMDAKLQotICAgIG1ha2UgbmFuZCBkdW1wIGFuZCBuYW5kIGR1bXAub29iIHdvcmsKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQzZWEzNmZiOGZkY2JjNmUyNmYwY2FmZmU4MDhjNjM2MzNiMTg4MzgKLUF1dGhvcjogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAZGF0YXJlc3BvbnMubm8+Ci1EYXRlOglNb24gTm92IDE5IDE0OjQ2OjAwIDIwMDcgKzAxMDAKLQotICAgIG1vdmluZyBmaWxlcyBmcm9tIHlhZmZzMi9kaXJlY3QvIHRvIHlhZmZzMi8gYW5kIGRlbGV0aW5nIGFsbCBzeW1saW5rcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgotCi1jb21taXQgOTg4MjRjZTNmOTVlNmM0ZDA4ZDQzOWI3NzljMGFjYjAwNDgwNDVhNgotQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEB0YW5kYmVyZy5jb20+Ci1EYXRlOglUdWUgSnVuIDEwIDE2OjE4OjEzIDIwMDggLTA1MDAKLQotICAgIENsZWFuIG91dCB1bm5lZWRlZCBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgotCi1jb21taXQgZWMyOWEzMmI1YTcxYjIwM2Y3ZDkwODdmMWY0ZDc4NmU3ZjEzZGQyMwotQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KLURhdGU6CUZyaSBOb3YgMTYgMDg6NDQ6MjcgMjAwNyArMDEwMAotCi0gICAgQ3JlYXRlIHN5bWxpbmtzIGZyb20geWFmZnMyL2RpcmVjdCB0byB5YWZmczIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KLQotY29tbWl0IDkwZWYxMTdiNjgzODdkNjY3NjMyOTFhZjAxMTc2Nzc2NDQxNjY2MTEKLUF1dGhvcjogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAZGF0YXJlc3BvbnMubm8+Ci1EYXRlOglUaHUgTm92IDE1IDEyOjIzOjU3IDIwMDcgKzAxMDAKLQotICAgIEluY29ycG9yYXRlIHlhZmZzMiBpbnRvIFUtYm9vdAotCi0gICAgVG8gdXNlIFlBRkZTMiBkZWZpbmUgQ09ORklHX1lBRkZTMgotCi0gICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGU4Y2M4YmQ5MjI1N2RhMmUxZGY4OGNiYzk4NWUxNjZlNDcyY2U2MQotQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KLURhdGU6CVRodSBOb3YgMTUgMTE6MTM6MDUgMjAwNyArMDEwMAotCi0gICAgWUFGRlMyIGltcG9ydAotCi0gICAgRGlyZWN0IGltcG9ydCBvZiB5YWZmcyBhcyBhIHRhcmJhbGwgYXMgb2YgMjAwNzExMTMgZnJvbSB0aGVpciBwdWJsaWMKLSAgICBDVlMtd2ViIGF0IGh0dHA6Ly93d3cuYWxlcGgxLmNvLnVrL2NnaS1iaW4vdmlld2N2cy5jZ2kveWFmZnMyLwotCi0gICAgVGhlIGNvZGUgY2FuIGFsc28gYmUgaW1wb3J0ZWQgb24gdGhlIGNvbW1hbmQgbGluZSB3aXRoOgotICAgIGV4cG9ydCBDVlNST09UPTpwc2VydmVyOmFub255bW91c0BjdnMuYWxlcGgxLmNvLnVrOi9ob21lL2FsZXBoMS9jdnMgY3ZzIGxvZ29uCi0gICAgKEhpdCByZXR1cm4gd2hlbiBhc2tlZCBmb3IgYSBwYXNzd29yZCkKLSAgICBjdnMgY2hlY2tvdXQgeWFmZnMyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEB0YW5kYmVyZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RpZyBPbHNlbiA8c3RpZy5vbHNlbkB0YW5kYmVyZy5jb20+Ci0KLWNvbW1pdCAzMDQzYzA0NWQ1YTk4OTdmYWJhN2Q1YzcyMThjMmY0ZDA2Y2QwMDM4Ci1BdXRob3I6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQGRhdGFyZXNwb25zLm5vPgotRGF0ZToJV2VkIE5vdiAxNCAxNDoyODoxMSAyMDA3ICswMTAwCi0KLSAgICBXaGl0ZXNwYWNlIGNsZWFudXAgYW5kIG1hcmtpbmcgYnJva2VuIGNvZGUuCi0KLSAgICBDaGFuZ2VzIHJlcXVlc3RlZCBieSBtYWludGFpbmVyIFN0ZWZhbiBSb2VzZSBhZnRlcgotICAgIHBvc3RpbmcgcGF0Y2ggdG8gVS1ib290IG1haWxpbmcgbGlzdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdpbGxpYW0gSnV1bCA8d2lsbGlhbS5qdXVsQHRhbmRiZXJnLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVlMWRhZTVjM2RiN2Y0MDI2ZjMxYjZhMmE4MWVjZDllOWRlZTQ3NWYKLUF1dGhvcjogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAZGF0YXJlc3BvbnMubm8+Ci1EYXRlOglGcmkgTm92IDkgMTM6MzI6MzAgMjAwNyArMDEwMAotCi0gICAgRml4aW5nIGNvZGluZyBzdHlsZSBpc3N1ZXMKLQotICAgICAtIEZpeGluZyBsZWFkaW5nIHdoaXRlIHNwYWNlcwotICAgICAtIEZpeGluZyBpbmRlbnRhdGlvbiB3aGVyZSA0IHNwYWNlcyBhcmUgdXNlZCBpbnN0ZWFkIG9mIHRhYgotICAgICAtIFJlbW92aW5nIEMrKyBjb21tZW50cyAoLy8pLCB3aGVyZXZlciBJIGludHJvZHVjZWQgdGhlbQotCi0gICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGNiYjY1MWIyOWNiNjRkMzc4YTA2NzI5OTcwZTFlMTUzYmI2MDViMQotQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KLURhdGU6CVRodSBOb3YgOCAxMDozOTo1MyAyMDA3ICswMTAwCi0KLSAgICBSZW1vdmUgd2hpdGUgc3BhY2UgYXQgZW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2ZhNDYwYWRmZGVmY2MzMGQxMDRlMWE5ZWU0NDk5NGVlMzQ5YmI3YgotQXV0aG9yOiBXaWxsaWFtIEp1dWwgPHdpbGxpYW0uanV1bEBkYXRhcmVzcG9ucy5ubz4KLURhdGU6CVdlZCBPY3QgMzEgMTM6NTM6MDYgMjAwNyArMDEwMAotCi0gICAgVXBkYXRlIE1URCB0byB0aGF0IG9mIExpbnV4IDIuNi4yMi4xCi0KLSAgICBBIGxvdCBjaGFuZ2VkIGluIHRoZSBMaW51eCBNVEQgY29kZSwgc2luY2UgaXQgd2FzIGxhc3QgcG9ydGVkIGZyb20KLSAgICBMaW51eCB0byBVLUJvb3QuIFRoaXMgcGF0Y2ggdGFrZXMgVS1Cb290IE5BTkQgc3VwcG9ydCB0byB0aGUgbGV2ZWwKLSAgICBvZiBMaW51eCAyLjYuMjIuMSBhbmQgd2lsbCBlbmFibGUgc3VwcG9ydCBmb3IgdmVyeSBsYXJnZSBOQU5EIGRldmljZXMKLSAgICAoNEtCIHBhZ2VzKSBhbmQgZWFzZSB0aGUgY29tcGF0aWJpbGl0eSBiZXR3ZWVuIFUtQm9vdCBhbmQgTGludXgKLSAgICBmaWxlc3lzdGVtcy4KLQotICAgIFRoaXMgcGF0Y2ggaXMgdGVzdGVkIG9uIHR3byBjdXN0b20gYm9hcmRzIHdpdGggUFBDIGFuZCBBUk0KLSAgICBwcm9jZXNzb3JzIHJ1bm5pbmcgWUFGRlMgaW4gVS1Cb290IGFuZCBMaW51eCB1c2luZyBnY2MtNC4xLjIKLSAgICBjcm9zcyBjb21waWxlcnMuCi0KLSAgICBNQUtFQUxMIHBwYy9hcm0gaGFzIHNvbWUgaXNzdWVzOgotICAgICAqIERPQy9PbmVOYW5kL25hbmRfc3BsIGlzIG5vdCBidWlsZGluZyAoSSBoYXZlIG5vdCB0cmllZCBwb3J0aW5nCi0gICAgICAgdGhlc2UgcGFydHMsIGFuZCBzaW5jZSBJIGRvIG5vdCBoYXZlIGFueSBIVyBhbmQgSSBhbSBub3QgZmFtaWxpYXIKLSAgICAgICB3aXRoIHRoaXMgY29kZS9IVyBJIHRoaW5rIGl0cyBiZXN0IGxlZnQgdG8gc29tZW9uZSBlbHNlLikKLQotICAgIEV4Y2VwdCBmb3IgdGhlIGlzc3VlcyBtZW50aW9uZWQgYWJvdmUsIEkgaGF2ZSBwb3J0ZWQgYWxsIGRyaXZlcnMKLSAgICBuZWNlc3NhcnkgdG8gcnVuIE1BS0VBTEwgcHBjL2FybSB3aXRob3V0IGVycm9ycyBhbmQgd2FybmluZ3MuIE1hbnkKLSAgICBkcml2ZXJzIHdlcmUgdHJpdmlhbCB0byBwb3J0LCBidXQgc29tZSB3ZXJlIG5vdCBzbyB0cml2aWFsLiBUaGUKLSAgICBmb2xsb3dpbmcgZHJpdmVycyBtdXN0IGJlIGV4YW1pbmVkIGNhcmVmdWxseSBhbmQgbWF5YmUgcmV3cml0dGVuIHRvCi0gICAgc29tZSBkZWdyZWU6Ci0gICAgIGNwdS9wcGM0eHgvbmRmYy5jCi0gICAgIGNwdS9hcm05MjZlanMvZGF2aW5jaS9uYW5kLmMKLSAgICAgYm9hcmQvZGVsdGEvbmFuZC5jCi0gICAgIGJvYXJkL3p5bG9uaXRlL25hbmQuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogV2lsbGlhbSBKdXVsIDx3aWxsaWFtLmp1dWxAdGFuZGJlcmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0aWcgT2xzZW4gPHN0aWcub2xzZW5AdGFuZGJlcmcuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2Q4MjkxOWU2YzhhNzNiMzYzYTI2ZjM0YjczNDkyMzg0NGU1MmQxYwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxMiAxNjowODozOCAyMDA4ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRywgcHJlcGFyZSByZWxlYXNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTdlOTAwYjhjMGYzOGQ5MjJkYTQ3MDczMjQ2MjE5ZGNlMmE4NDdmMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxMiAxNDo1NDowNCAyMDA4ICswMjAwCi0KLSAgICBNVkJDX1A6IGZpeCBjb21waWxlIHByb2JsZW0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1MmIwNDdhZTQ4MjE5YjU5YmViZTM3YmE3NDNhYjEwM2ZkNGY4MzE2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgQXVnIDEyIDEyOjEwOjExIDIwMDggKzAyMDAKLQotICAgIE1QQzgyNzJBRFM6IGZpeCBidWlsZCBlcnJvcjogJ2JkX3QnIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3BjaV9jbGsnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzljMTAxYzY2MGIzZDE5OTUwNDVjNjFjN2M2MDQxZjUyYjZjZjMzNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxMiAwMDozNjo1MyAyMDA4ICswMjAwCi0KLSAgICBhZHM1MTIxOiBmaXggY29tcGlsZXIgd2FybmluZ3MgKHVudXNlZCB2YXJpYWJsZXMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOTAyY2EwOTI0NjAzOTk2NGQ1OWJiY2I1MTliMWUxYjVhZWQwMTMwOAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEF1ZyAxMSAxMToyOToyOCAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBSZW5hbWUgQ09ORklHX05SX0NQVVMgdG8gQ09ORklHX05VTV9DUFVTCi0KLSAgICBVc2UgQ09ORklHX05VTV9DUFVTIHRvIG1hdGNoIGV4aXN0aW5nIGRlZmluZSB1c2VkIGJ5IDg2eHguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzIxNmNhOTY5MmZmODBkN2M2Mzg3MjNlZjQ0OGYzZDM2MzAxZDllNwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEF1ZyAxMSAwOToyMDo1MyAyMDA4IC0wNTAwCi0KLSAgICBGaXggZmFsbG91dCBmcm9tIGF1dG9zdGFydCByZXZlcnQKLQotICAgIFRoZSBhdXRvc3RhcnQgcmV2ZXJ0IGNhdXNlZCBhIGJpdCBvZiBkdXBsaWNhdGVkIGNvZGUgYXMgd2VsbCBhcwotICAgIGNvZGUgdGhhdCB3YXMgdXNpbmcgaW1hZ2VzLT5hdXRvc3RhcnQgdGhhdCBuZWVkcyB0byBnZXQgcmVtb3ZlZCBzbwotICAgIHdlIGNhbiBidWlsZCBhZ2Fpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzY2Y4YTIzNGI4ZThjMDJlNGRhMWYyMzU2NjA0M2JjMjg4YjA1MjIwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gQXVnIDExIDA5OjE2OjI1IDIwMDggLTA1MDAKLQotICAgIEZpeCBjb21waWxlIGVycm9yIHJlbGF0ZWQgdG8gcjhhNjY1OTctaGNkICYgdXNiCi0KLSAgICBXaGVuIGJ1aWxkaW5nIHRoZSA4NTQ0RFMgYm9hcmQgd2UgZ2V0IHRoaXMgZXJyb3I6Ci0KLSAgICBJbiBmaWxlIGluY2x1ZGVkIGZyb20gcjhhNjY1OTctaGNkLmM6MjI6Ci0gICAgdS1ib290L2luY2x1ZGUvdXNiLmg6MTkwOjI6IGVycm9yOiAjZXJyb3IgVVNCIExvd2xldmVsIG5vdCBkZWZpbmVkCi0gICAgbWFrZVsxXTogKioqIFtyOGE2NjU5Ny1oY2Qub10gRXJyb3IgMQotCi0gICAgVGhlIGNsZWFuZXN0IGZpeCBpcyB0byBvbmx5IGJ1aWxkIHI4YTY2NTk3LWhjZC5jIGlmIENPTkZJR19VU0JfUjhBNjY1OTdfSENECi0gICAgaXMgc2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDJkMGRhYTAzNjEyMzM4YTgxM2UzYzlkMjI2ODBlNTRlYWJmZWEzNzgKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXVnIDQgMTQ6MDI6MjYgMjAwOCAtMDUwMAotCi0gICAgUE9XRVJQQyA4Nnh4OiBNb3ZlIEJBVCBzZXR1cCBjb2RlIHRvIEMKLQotICAgIFRoaXMgaXMgbmVlZGVkIGJlY2F1c2Ugd2Ugd2lsbCBiZSBwb3NzaWJseSBiZSBsb2NhdGluZwotICAgIGRldmljZXMgYXQgcGh5c2ljYWwgYWRkcmVzc2VzIGFib3ZlIDMyYml0cywgYW5kIHRoZSBhc20KLSAgICBwcmVwcm9jZXNzaW5nIGRvZXMgbm90IGFwcGVhciB0byBkZWFsIHdpdGggVUxMIGNvbnN0YW50cwotICAgIHByb3Blcmx5LiBXZSBub3cgY2FsbCB3cml0ZV9iYXQgaW4gbGliX3BwYy9iYXRfcncuYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWRlNjcxNDlkYjU3NmM5MWI5YzJhMGExODI2NTIzMzFlN2U0NDIxMQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBdWcgNCAxNDowMTo1MyAyMDA4IC0wNTAwCi0KLSAgICBQT1dFUlBDOiBBZGQgc3luY2hyb25pemF0aW9uIHRvIHdyaXRlX2JhdCBpbiBsaWJfcHBjL2JhdF9ydy5jCi0KLSAgICBQZXJmb3JtIHN5bmMvaXN5bmMgYXMgcmVxdWlyZWQgYnkgdGhlIGFyY2hpdGVjdHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjNmOTM1YzA3M2U3NTc4YzYwNjY4MDRmZDJmOWVlMTE2Y2FlNmZmZQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBdWcgNCAxNDowMToxNiAyMDA4IC0wNTAwCi0KLSAgICBQT1dFUlBDOiA4Nnh4IC0gYWRkIG1pc3NpbmcgQ09ORklHX0hJR0hfQkFUUyB0byBzYmM4NjQxZCBjb25maWcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTI3NmEzNTg0ZDI2YTk1MzM0MDRmMGVjMDBjM2I2MWNmOWE5NzkzOQotQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDMgMjE6NDQ6MTAgMjAwOCArMDIwMAotCi0gICAgaS5NWDMxOiBGaXggbXgzMV9ncGlvX211eCgpIGZ1bmN0aW9uIGFuZCBNVVhfLW1hY3Jvcy4KLQotICAgIENvcnJlY3QgdGhlIG14MzFfZ3Bpb19tdXgoKSBmdW5jdGlvbiB0byBhbGxvdyBjaGFuZ2luZyBhbGwgaS5NWDMxIElPTVVYCi0gICAgY29udGFjdHMgaW5zdGVhZCBvZiBvbmx5IHRoZSBmaXJzdCAyNTYgb25lcyBhcyBpcyB0aGUgY2FzZSBwcmlvciB0bwotICAgIHRoaXMgcGF0Y2guCi0KLSAgICBBZGQgbWlzc2luZyBNVVhfKiBtYWNyb3MgYW5kIHVwZGF0ZSBib2FyZCBmaWxlcyB0byB1c2UgdGhlIG5ldyBtYWNyb3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBiNmIxODNjNWIyZmZmZDRjNDU2YjdlM2ZjYjA2NGNjZWI0N2ZlN2FjCi1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBdWcgMyAyMTo0MzozNyAyMDA4ICswMjAwCi0KLSAgICBpLk1YMzE6IEZpeCBJT01VWCByZWxhdGVkIHR5cG9zCi0KLSAgICBDb3JyZWN0IHRoZSBuYW1lcyBvZiBzb21lIElPTVVYIG1hY3Jvcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IDRkNTdiMGZiMjkyN2Q0ZjUwZDgzNDg4NGI0ZWM0YTdjYTAxNzA4YjAKLUF1dGhvcjogU3RldmUgU2Frb21hbiA8c3RldmVAc2Frb21hbi5jb20+Ci1EYXRlOglNb24gQXVnIDExIDIwOjI2OjE2IDIwMDggKzAyMDAKLQotICAgIE9uZU5BTkQ6IFJlbW92ZSB1bnVzZWQgcGFyYW1ldGVycyB0byBvbmVuYW5kX3ZlcmlmeV9wYWdlCi0KLSAgICBUaGUgYmxvY2sgYW5kIHBhZ2UgcGFyYW1ldGVycyBvZiBvbmVuYW5kX3ZlcmlmeV9wYWdlKCkgYXJlIG5vdCB1c2VkLiBUaGlzIGNhdXNlcyBhIGNvbXBpbGVyIGVycm9yIHdoZW4gQ09ORklHX01URF9PTkVOQU5EX1ZFUklGWV9XUklURSBpcyBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RldmUgU2Frb21hbiA8c3RldmVAc2Frb21hbi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Ci0KLWNvbW1pdCBlODRkNTY4ZmEyYTlmNGNlNzg4ODE0MWU3MTY3NjM2OGVmNmIzZjI1Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgOCAxODowMDo0MCAyMDA4ICswMjAwCi0KLSAgICB2aWRlbzogZml4IGJ1ZyBpbiBjZmJfY29uc29sZSBjb2RlCi0KLSAgICBGSUxMXzE1QklUXzU1NVJHQiBtYWNybyBleHRlbnNpb24gZm9yIHBpeGVsIHN3YXBwaW5nCi0gICAgYnkgY29tbWl0IGJlZDUzNzUzZGQxZDdlNmJjYmVhNDMzOWJlMGZiNzc2MDIxNGNjMzUKLSAgICBpbnRyb2R1Y2VkIGEgYnVnIGluIGNmYl9jb25zb2xlOgotCi0gICAgQml0bWFwcyB3aXRoIG9kZC1udW1iZXJlZCB3aWR0aCB3b24ndCBiZSByZW5kZXJlZAotICAgIGNvcnJlY3RseSBhbmQgZXZlbiBVLUJvb3QgY3Jhc2hlcyBhcmUgb2JzZXJ2ZWQgb24KLSAgICBzb21lIHBsYXRmb3JtcyB3aGlsZSByZXBlYXRlZCByZW5kZXJpbmcgb2Ygc3VjaAotICAgIGJpdG1hcHMgd2l0aCAiYm1wIGRpc3BsYXkiLiBBbHNvIGlmIGEgYml0bWFwIGlzCi0gICAgcmVuZGVyZWQgdG8gYW4gb2RkLW51bWJlcmVkIHggc3RhcnRpbmcgcG9zaXRpb24sCi0gICAgdGhlIHNhbWUgcHJvYmxlbSBvY2N1cnMuIFRoaXMgcGF0Y2ggaXMgYW4gYXR0ZW1wdAotICAgIHRvIGZpeCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGQ5MDE1ZjZhNTBkNzI1ODEyNTM0OWVmNWMyYWY4MzY0NThhMDAyOWEKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyA4IDE4OjAwOjM5IDIwMDggKzAyMDAKLQotICAgIHZpZGVvOiBmaXggYnVnIGluIGxvZ29fcGxvdAotCi0gICAgSWYgbG9nb19wbG90KCkgc2hvdWxkIGV2ZXIgYmUgY2FsbGVkIHdpdGggeCBzdGFydGluZwotICAgIHBvc2l0aW9uIG90aGVyIHRoYW4gemVybyBhbmQgZm9yIHBpeGVsIGRlcHRocyBncmVhdGVyCi0gICAgdGhhbiA4YnBwLCBsb2dvIGNvbG9ycyBkaXN0b3J0aW9uIHdpbGwgYmUgb2JzZXJ2ZWQuCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA0MDY4MTlhZTk0Zjc5ZjViNTllMDFkMTYzMzgwY2E3ZDgzNzA5MjUxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gQXVnIDExIDAwOjE3OjUyIDIwMDggKzAyMDAKLQotICAgIE1BSU5UQUlORVJTOiBzb3J0IGVudHJpZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjZmM0NDJkNzkxM2Q0ZDFjM2E5YmY0OTRmOTBjMDEyYzJmOGMzYmRjCi1BdXRob3I6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgNyAxODoxOToyOCAyMDA4ICswODAwCi0KLSAgICBBZGQgbXBjNzQ0OGhwYzIgbWFpbnRhaW5lciBpbmZvcm1hdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTlmZTBjM2U3Y2E0OGFmYTUwZDZhMGRiOTlmYTkxZTcyODJkNzNkOAotQXV0aG9yOiBHdXJ1cmFqYSBIZWJiYXIgSyBSIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotRGF0ZToJVGh1IEF1ZyA3IDEzOjEzOjI3IDIwMDggKzA1MzAKLQotICAgIGNvbW1vbi9jbWRfbG9hZC5jIC0gTWlub3IgY29kZSAmIENvZGluZyBTdHlsZSBjbGVhbnVwCi0KLSAgICAtIG9zX2RhdGFfaGVhZGVyIFZhcmlhYmxlIGlzIGEgY2Fycnkgb3ZlciBmZWF0dXJlCi0gICAgICAgJiB1bnVzZWQuIFNvIHJlbW92ZWQgYWxsIGluc3RhbmNlIG9mIHRoaXMgdmFyaWFibGUKLSAgICAgLSBNaW5vciBDb2RlIFN0eWxlIFVwZGF0ZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMGQyOGYzNGJiZTU2ZDA5NzFiZDYwMzc4OWRjYzZmZTdhZGYxMWYxNAotQXV0aG9yOiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci1EYXRlOglXZWQgQXVnIDYgMTk6MzI6MzMgMjAwOCArMDIwMAotCi0gICAgVXBkYXRlIHRoZSBVLUJvb3Qgd2lraSBVUkwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhYTVmZmExNmQ3ZTRjNDYxYjdiNzdiZjhlNzlkMmVmNTYzOGNmNzU0Ci1BdXRob3I6IGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20gPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTdW4gQXVnIDEwIDE3OjU2OjM2IDIwMDggKzAyMDAKLQotICAgIE9uZU5BTkQ6IFJlbW92ZSBiYXNlIGFkZHJlc3Mgb2Zmc2V0IHVzYWdlCi0KLSAgICBXaGlsZSBsb2NhbGx5IHByZXBhcmluZyBzb21lIFUtQm9vdCBwYXRjaGVzIGZvciBBUk0gYmFzZWQgT01BUDMgYm9hcmRzLCBzb21lCi0gICAgdXNpbmcgT25lTkFORCBhbmQgc29tZSB1c2luZyBOQU5ELCB3ZSBmb3VuZCBzb21lIGRpZmZlcmVuY2VzIGluIE9uZU5BTkQgYW5kCi0gICAgTkFORCBjb21tYW5kIGFkZHJlc3MgaGFuZGxpbmcuCi0KLSAgICBBcyB0aGlzIG1pZ2h0IGNvbmZ1c2UgdXNlcnMgKGl0IGFscmVhZHkgY29uZnVzZWQgdXMpLCB3ZSBsaWtlIHRvIGFsaWduIE9uZU5BTkQKLSAgICBhbmQgTkFORCBhZGRyZXNzIGhhbmRsaW5nLgotCi0gICAgVGhlIGlzc3VlIGlzIHRoYXQgY21kX29uZW5hbmQuYyBzdWJ0cmFjdHMgdGhlIG9uZW5hbmQgYmFzZSBhZGRyZXNzIGZyb20gdGhlCi0gICAgYWRkcmVzc2VzIHlvdSB0eXBlIGludG8gdGhlIHUtYm9vdCBjb21tYW5kIGxpbmUgc28sIHVubGlrZSBuYW5kLCB5b3UgY2FuJ3QKLSAgICB1c2UgYWRkcmVzc2VzIHJlbGF0aXZlIHRvIHRoZSBzdGFydCBvZiB0aGUgb25lbmFuZCBwYXJ0IGUuZy4gdGhpcyB3b24ndCB3b3JrOgotCi0gICAgb25lbmFuZCByZWFkIDgyMDAwMDAwIDI4MDAwMCA0MDAwMDAKLQotICAgIHlvdSBoYXZlIHRvIHVzZToKLQotICAgIG9uZW5hbmQgcmVhZCA4MjAwMDAwMCAyMDI4MDAwMCA0MDAwMDAKLQotICAgIExvb2tpbmcgYXQgcmVjZW50IGdpdCwgdGhlIG9ubHkgYm9hcmQgY3VycmVudGx5IHVzaW5nIE9uZU5BTkQgaXMgQXBvbGxvbiwgYW5kCi0gICAgZm9yIHRoaXMgdGhlIE9uZU5BTkQgYmFzZSBhZGRyZXNzIGlzIDAgKGFwb2xsb24uaCkKLQotICAgICNkZWZpbmUJQ0ZHX09ORU5BTkRfQkFTRQkweDAwMDAwMDAwCi0KLSAgICBzbyBwYXRjaCBiZWxvdyB3b24ndCBicmVhayBhbnkgZXhpc3RpbmcgYm9hcmRzIGFuZCB3aWxsIGFsaWduIE9uZU5BTkQgYW5kIE5BTkQKLSAgICBoYW5kbGluZyBvbiBib2FyZHMgd2hlcmUgT25lTkFORCBiYXNlIGFkZHJlc3MgaXMgIT0gMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlIFNha29tYW4gPHNha29tYW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hbmlrYW5kYW4gUGlsbGFpIDxtYW5pLnBpbGxhaUB0aS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjMTE1MjgwODNlZjZlNTVlNzZkZjc0MjIyOGMyNmUzOWQxNTE4MTNkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgQXVnIDcgMDk6Mjg6MjAgMjAwOCAtMDUwMAotCi0gICAgbXBjODV4eDogd29ya2Fyb3VuZCBvbGQgYmludXRpbHMgYnVnCi0KLSAgICBUaGUgcmVjZW50IGNoYW5nZSB0byBtb3ZlIHRoZSAuYnNzIG91dHNpZGUgb2YgdGhlIGltYWdlIGdpdmVzIG9sZGVyCi0gICAgYmludXRpbHMgKGxkIGZyb20gZWxkazQuMS9iaW51dGlscy0yLjE2KSBzb21lIGhlYWRhY2hlOgotCi0gICAgcHBjXzg1eHgtbGQ6IHUtYm9vdDogTm90IGVub3VnaCByb29tIGZvciBwcm9ncmFtIGhlYWRlcnMgKGFsbG9jYXRlZCAzLCBuZWVkIDQpCi0gICAgcHBjXzg1eHgtbGQ6IGZpbmFsIGxpbmsgZmFpbGVkOiBCYWQgdmFsdWUKLQotICAgIFdlIHdvcmthcm91bmQgaXQgYnkgYmVpbmcgZXhwbGljaXQgYWJvdXQgdGhlIHByb2dyYW0gaGVhZGVycyBhbmQgbm90Ci0gICAgYXNzaWduaW5nIHRoZSAuYnNzIHRvIGEgcHJvZ3JhbSBoZWFkZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMGJmMjAyZWM1ODZkNDQ2NmM5MDBlOTg3NzIwZmE2MzVjNTk0ZDY4OQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEF1ZyAxMCAwMToyNjoyNiAyMDA4ICswMjAwCi0KLSAgICBSZXZlcnQgIltuZXcgdUltYWdlXSBBZGQgYXV0b3N0YXJ0IGZsYWcgdG8gYm9vdG1faGVhZGVycyBzdHJ1Y3R1cmUiCi0KLSAgICBUaGlzIHJldmVydHMgY29tbWl0IGY1NjE0ZTc5MjY4NjNiZjAyMjVlYzg2MGQ5YjMxOTc0MWE5YzQwMDQuCi0KLSAgICBUaGUgY29tbWl0IHdhcyBiYXNlZCBvbiBhIG1pc3VuZGVyc3RhbmRpbmcgb2YgdGhlIChkb2N1bWVudGVkKQotICAgIG1lYW5pbmcgb2YgdGhlICdhdXRvc3RhcnQnIGVudmlyb25tZW50IHZhcmlhYmxlLiBJdCBtaWdodCBjYXVzZQotICAgIGJvYXJkcyB0byBoYW5nIGlmICdhdXRvc3RhcnQnIHdhcyB1c2VkLCB3aXRoIHRoZSBwb3RlbnRpYWwgdG8gYnJpY2sKLSAgICB0aGVtLiBHbyBiYWNrIHRvIHRoZSBkb2N1bWVudGVkIGJlaGF2aW91ci4KLQotICAgIENvbmZsaWN0czoKLQotCWNvbW1vbi9jbWRfYm9vdG0uYwotCWNvbW1vbi9pbWFnZS5jCi0JaW5jbHVkZS9pbWFnZS5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMjlmOGY1OGZmNDBjNjdmN2YyZTExYWZkMTcxNTE3MzA5NGU1MmFjMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEF1ZyA5IDIzOjE3OjMyIDIwMDggKzAyMDAKLQotICAgIFRRTTh4eHtMLE19OiB0cnkgdG8gbm9ybWFsaXplIGNvbmZpZyBmaWxlcyBmb3IgVFFNOHh4PyBiYXNlZCBib2FyZAotCi0gICAgLSBlbmFibGUgQ0ZJIGRyaXZlciB3aGVyZSB0aGlzIHdhcyBmb3Jnb3R0ZW4KLSAgICAtIGVuYWJsZSBtdGRwYXJ0cyBzdXBwb3J0Ci0gICAgLSBhZGp1c3QgZGVmYXVsdCBlbnZpcm9ubWVudAotICAgIGV0Yy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0MTI2NmM5YjVhNWY4NzNkZjNlYzg5MWJiMDkwNzYxNjk1OGI1NjAyCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUdWUgQXVnIDUgMTA6NTE6NTcgMjAwOCAtMDUwMAotCi0gICAgRklUOiBGaXggaGFuZGxpbmcgb2YgaW1hZ2VzIHdpdGhvdXQgcmFtZGlza3MKLQotICAgIGJvb3RfZ2V0X3JhbWRpc2soKSBzaG91bGQgbm90IHRyZWF0IHRoZSBjYXNlIHdoZW4gYSBGSVQgaW1hZ2UgZG9lcwotICAgIG5vdCBjb250YWluIGEgcmFtZGlzayBhcyBhbiBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci0gICAgQWNrZWQtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IGY3N2Q5MmEzZjU2ZDg4ZTYzY2MwMjIyNmExMjA0YjNiZGJhYzY5NjEKLUF1dGhvcjogU2VyZ2V5IExhcGluIDxzbGFwaW5Ab3NzZmFucy5vcmc+Ci1EYXRlOglTYXQgQXVnIDkgMDE6Mzk6MDkgMjAwOCArMDQwMAotCi0gICAgRGF0YUZsYXNoOiBBVDQ1REIwMjEgZml4IGFuZCBBVDQ1REIwODEgc3VwcG9ydAotCi0gICAgRml4IGZvciBwYWdlIHNpemUgb2YgQVQ0NURCMDIxLiBBbHNvIGFkZGluZyBiaWdnZXIgQVQ0NURCMDgxCi0gICAgd2hpY2ggY29tZXMgd2l0aCBzb21lIG5ld2VyIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgotCi1jb21taXQgYmE5MzI0NDUxYjY2MmRkMzkzYWZhNTNlNWNjMzZmYzVkM2QxMDk2NgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglGcmkgQXVnIDggMTY6MzA6MjMgMjAwOCArMDkwMAotCi0gICAgc2g6IFVwZGF0ZSBzaDc3NjNyZHAgY29uZmlnCi0KLSAgICBBZGQgc2hfZXRoIHN1cHBvcnQgdG8gc2g3NzYzcmRwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotCi1jb21taXQgMjFmOTcxZWMyNjVmNjA0MmVjMjE2MzZkNTVkMDZhNmJjMDc1MTA3NwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCA3IDAxOjIyOjI5IDIwMDggKzAyMDAKLQotICAgIFRRTTgyM0w6IHJlLWVuYWJsZSBsb2dvIHN1cHBvcnQ7IHVwZGF0ZSBMQ0RfSU5GTyB0ZXh0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgM2I4ZDE3ZjBmMDgyMDczMzQ2YzBkZjAxN2M5ZGZkNmFjZGI0MGQ2ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyA4IDE2OjQxOjU2IDIwMDggKzAyMDAKLQotICAgIFRRTTh4eEw6IGZpeCBzdXBwb3J0IGZvciBzZWNvbmQgZmxhc2ggYmFuawotCi0gICAgV2hlbiBzd2l0Y2hpbmcgdGhlIFRRTTh4eEwgbW9kdWxlcyB0byB1c2UgdGhlIENGSSBmbGFzaCBkcml2ZXIsCi0gICAgc3VwcG9ydCBmb3IgdGhlIHNlY29uZCBmbGFzaCBiYW5rIHdhcyBicm9rZW4gYmVjYXVzZSB0aGUgQ0ZJIGRyaXZlcgotICAgIGRpZCBub3Qgc3VwcG9ydCBkeW5hbWljYWxseSBzaXplZCBiYW5rcy4gVGhpcyBnZXRzIGZpeGVkIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyYTExMmIyMzRkODc5ZjYzOTA1MDNhNWY0ZTM4MjQ2YWNjZTlkMGIwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgQXVnIDggMTY6Mzk6NTQgMjAwOCArMDIwMAotCi0gICAgQ0ZJOiBhbGxvdyBmb3IgZHluYW1pY2FsbHkgZGV0ZXJtaW5lZCBmbGFzaCBzaXplcyBhbmQgYWRkcmVzc2VzCi0KLSAgICBUaGUgQ0ZJIGRyaXZlciBhbGxvd2VkIG9ubHkgZm9yIHN0YXRpYyBpbml0aWFsaXplcnMgaW4gdGhlCi0gICAgQ0ZHX0ZMQVNIX0JBTktTX0xJU1QgZGVmaW5pdGlvbiwgaS4gZS4gaXQgZGlkIG5vdCBhbGxvdyB0byBtYXAKLSAgICBzZXZlcmFsIGZsYXNoIGJhbmtzIGNvbnRpZ3VvdXNseSBpZiB0aGUgYmFuayBzaXplcyB3ZXJlIG5vdCBrbm93biBpbgotICAgIGFkdmFuY2UsIHdoaWNoIGtpbmQgb2YgdmlvbGF0ZXMgVS1Cb290J3MgZGVzaWduIHBoaWxvc29waHkuCi0KLSAgICAod2lsbCBiZSB1c2VkIGZvciBleGFtcGxlIGJ5IHRoZSBUUU04eHhMIGJvYXJkcykKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkOWQ3OGVlNDZkOWEzOTZkMGE4MWQwMGMyYjAwM2E5YmQzMmMyZTYxCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglUaHUgQXVnIDcgMjM6MjY6MzUgMjAwOCAtMDcwMAotCi0gICAgUUUgVUVDOiBGaXggY29tcGlsZXIgd2FybmluZ3MKLQotICAgIE1vdmVkIHN0YXRpYyBmdW5jdGlvbnMgZWFybGllciBpbiBmaWxlIHNvIGZvcndhcmQgZGVjbGFyYXRpb25zIGFyZSBub3QgbmVlZGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGQ1ZDI4ZmU0YWFkNWY0NTM1NDAwNjQ3YTU2MTdjMTEwMzk1MDY0NjcKLUF1dGhvcjogRGF2aWQgU2FhZGEgPERhdmlkLlNhYWRhQGVjaXRlbGUuY29tPgotRGF0ZToJTW9uIE1hciAzMSAwMjozNzozOCAyMDA4IC0wNzAwCi0KLSAgICBRRSBVRUM6IEFkZCBNSUkgQ29tbWFuZHMKLQotICAgIEFkZCBNSUkgY29tbWFuZHMgdG8gdGhlIFVFQyBkcml2ZXIuIE5vdGUgdGhhdCBvbmNlIGEgVUVDIGRldmljZSBpcyBzZWxlY3RlZCwKLSAgICBhbnkgZGV2aWNlIG9uIGl0cyBNRElPIGJ1cyBjYW4gYmUgYWRkcmVzc2VkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgU2FhZGEgPGRhdmlkLnNhYWRhQGVjaXRlbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmZDBmMmYzNzk2ZmYyYTdhMzJkMzVkZWIxYjc5OTZlNDg1ODQ5ZGY3Ci1BdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAyMTowNzozOCAyMDA4ICswOTAwCi0KLSAgICB1c2I6IGFkZCBzdXBwb3J0IGZvciBSOEE2NjU5NyB1c2IgY29udHJvbGxlcgotCi0gICAgYWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgUjhBNjY1OTcgdXNiIGNvbnRyb2xsZXIuCi0gICAgVGhpcyBwYXRjaCBzdXBwb3J0cyBVU0IgSG9zdCBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9zaGloaXJvIFNoaW1vZGEgPHNoaW1vZGEueW9zaGloaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCAxZDEwZGNkMDQxYWFlYWU5ZmQ3YzgyMTAwNTY5Mjg5OGEwMzAzMzgyCi1BdXRob3I6IEh1bnRlciwgSm9uIDxqb24taHVudGVyQHRpLmNvbT4KLURhdGU6CVNhdCBKdWwgMjYgMTg6NTk6MTYgMjAwOCAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIE9NQVA1OTEyIGFuZCBPTUFQMTZ4eCB0byB1c2JkY29yZV9vbWFwMTUxMC5jCi0KLSAgICBBZGQgc3VwcG9ydCB0byBkcml2ZXJzL3VzYi91c2JkY29yZV9vbWFwMTUxMC5jIGZvciBPTUFQNTkxMiBhbmQgT01BUDE2eHggZGV2aWNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBIdW50ZXIgPGpvbi1odW50ZXJAdGkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBlYWIxMDA3MzM0YjkzYTYyMDlmMWVjMzM2MTVlMjZlZjUzMTFlZGU3Ci1BdXRob3I6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Ci1EYXRlOglXZWQgQXVnIDYgMTU6NDI6NTIgMjAwOCAtMDQwMAotCi0gICAgcHBjNHh4OiBTZXF1b2lhIGhhcyB0d28gVUFSVHMgaW4gIjQtcGluIiBtb2RlLiBDb25maWd1cmUgdGhlIEdQSU9zIGFzIHBlciBzY2hlbWF0aWMuCi0KLSAgICBUaGUgU2VxdW9pYSBib2FyZCBoYXMgdHdvIFVBUlRzIGluICI0LXBpbiIgbW9kZS4gVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgR1BJTwotICAgIGNvbmZpZ3VyYXRpb24gdG8gbWF0Y2ggdGhlIHNjaGVtYXRpYywgYW5kIGFsc28gc2V0cyB0aGUgU0RSMF9QRkMxIHJlZ2lzdGVyIHRvCi0gICAgc2VsZWN0IHRoZSBjb3JyZXNwb25kaW5nIG1vZGUgZm9yIHRoZSBVQVJUcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGViNTcxN2E4NWI2Y2JhM2Y2N2MxMWZhODliZGRlMzhkY2QwODFiNQotQXV0aG9yOiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoYW5zLWNocmlzdGlhbi5lZ3R2ZWR0QGF0bWVsLmNvbT4KLURhdGU6CVdlZCBBdWcgNiAxNDo0MjoxMyAyMDA4ICswMjAwCi0KLSAgICBhdnIzMjogYWRkIHN1cHBvcnQgZm9yIEVhcnRoTENEIEZhdnItMzIgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgRmF2ci0zMiBib2FyZCBtYWRlIGJ5IEVhcnRoTENELgotCi0gICAgVGhpcyBraXQsIHdoaWNoIGlzIGFsc28gY2FsbGVkIGV6TENELTEwMSB3aGVuIHJ1bm5pbmcgd2l0aCBFYXJ0aExDRCBmaXJtd2FyZSwKLSAgICBoYXMgYSAxMC40IiB0b3VjaCBzY3JlZW4gTENEIHBhbmVsLCAxNiBNQiAzMi1iaXQgU0RSQU0sIDggTUIgcGFyYWxsZWwgZmxhc2gsCi0gICAgRXRoZXJuZXQsIGF1ZGlvIG91dCwgVVNCIGRldmljZSwgU0QtY2FyZCBzbG90LCBVU0FSVCBhbmQgdmFyaW91cyBvdGhlcgotICAgIGNvbm5lY3RvcnMgZm9yIGNlbm5lY3Rpbmcgc3R1ZmYgdG8gU1BJLCBJMkMsIEdQSU8sIGV0Yy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhhbnMtY2hyaXN0aWFuLmVndHZlZHRAYXRtZWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGJjOTAxOWUxOTc1OGExOWEzODhmYjIwZWYxOGRjNzcxY2QzOWZkZGEKLUF1dGhvcjogUmFmYWVsIENhbXBvcyA8cmFmYWVsLmNhbXBvc0BoYW5zY2FuLmNvbT4KLURhdGU6CVRodSBKdWwgMzEgMTA6MjI6MjAgMjAwOCArMDIwMAotCi0gICAgY2ZpLWZsYXNoOiBBZGRlZCBzdXBwb3J0IHRvIGZsYXNoX3JlYWxfcHJvdGVjdCBmb3IgQXRtZWwgZmxhc2ggZGV2aWNlcwotCi0gICAgU29tZSBvZiB0aGUgZmxhc2ggbWVtb3JpZXMgcHJvZHVjZWQgYnkgQVRNRUwgc3RhcnQgaW4gcmVhZC1vbmx5IG1vZGUuCi0gICAgV2UgbmVlZCB0byB1bnByb3RlY3QgaXQuIFRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBBVDQ5QlY2NDE2IHRvIHdvcmsgd2l0aAotICAgIGNmaV9mbGFzaCBtZW1vcmllcy4gVGVzdGVkIGluIHRoZSBhdDkxcm05MjAwZWsgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhZWwgQ2FtcG9zIExhcyBIZXJhcyA8cmFmYWVsLmNhbXBvc0BoYW5zY2FuLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3OTQ5ODM5ZTU4MzZiZjhiMTA3NGJiNjE0MmM0NmQzMGFjM2FhMzUwCi1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgNSAxNTozNjozOSAyMDA4ICswMjAwCi0KLSAgICBjZmktZmxhc2g6IEFkZCBkZWZpbml0aW9uIGZvciB0aGUgQU0yOUxWODAwQkIgQU1EIE5PUi1mbGFzaAotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDEzMTg2NzMwNDVmZTE4OGM2ZTI0YzU4MmIxZTZlZmMwMGFlMWM2MmMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyA2IDE0OjA2OjAzIDIwMDggKzAyMDAKLQotICAgIEZpeCBtZXJnZSBwcm9ibGVtcwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjIzMDJkNDQzMGU3ZjNmNDgzMDhkNmE1ODUzMjBmZTk2YWY4YWZiZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXVnIDYgMTQ6MDU6MzggMjAwOCArMDIwMAotCi0gICAgRml4IG1lcmdlIHByb2JsZW1zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2Njg5NDg0Y2NkNDMxODkzMjJhYWE1YTFjNmNkMDJjZGQ1MTFhZDdkCi1BdXRob3I6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KLURhdGU6CVR1ZSBKdWwgMTUgMTI6MTM6MzggMjAwOCArMDIwMAotCi0gICAgbXBjNTEyMTogTW92ZSBpb3BpbiBmZWF0dXJlcyBmcm9tIGJvYXJkIHNwZWNpZmljIHRvIGNvbW1vbiBmaWxlcy4KLQotICAgIEFuZCBpbiB0aGUgcHJvY2VzcyBlbGltaW5hdGUgc29tZSBkdXBsaWNhdGUgcmVnaXN0ZXIgZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KLQotY29tbWl0IGVmMTFkZjZiNjZlY2Y1Nzk3ZTk0YmEzMjIyNTRiOGZiN2E0ZTJlMTIKLUF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDUgMTc6Mzg6NTcgMjAwOCAtMDYwMAotCi0gICAgbXBjNTEyMTogc3F1YXNoIHNvbWUgZmR0IGZpeHVwIGVycm9ycwotCi0gICAgT24gQURTNTEyMSB3aGVuIGJvb3RpbmcgbGludXggdGhlIGZvbGxvd2luZyBlcnJvcnMgYXJlIHNlZW46Ci0JVW5hYmxlIHRvIHVwZGF0ZSBwcm9wZXJ0eSAvc29jNTEyMUA4MDAwMDAwMDpidXMtZnJlcXVlbmN5LCBlcnI9RkRUX0VSUl9OT1RGT1VORAotCVVuYWJsZSB0byB1cGRhdGUgcHJvcGVydHkgL3NvYzUxMjFAODAwMDAwMDAvZXRoZXJuZXRAMjgwMDpsb2NhbC1tYWMtYWRkcmVzcywgZXJyPUZEVF9FUlJfTk9URk9VTkQKLQlVbmFibGUgdG8gdXBkYXRlIHByb3BlcnR5IC9zb2M1MTIxQDgwMDAwMDAwL2V0aGVybmV0QDI4MDA6YWRkcmVzcywgZXJyPUZEVF9FUlJfTk9URk9VTkQKLQotICAgIFRoaXMgaXMgY2F1c2VkIGJ5IGZ0X2NwdV9zZXR1cCB0cnlpbmcgdG8gZGVhbCB3aXRoCi0gICAgYm90aCBvbGQgYW5kIG5ldyBzb2Mgbm9kZSBuYW1pbmcuICBUaGlzIHBhdGNoCi0gICAgZml4ZXMgdGhpcyBieSBiZWluZyBzbWFydGVyIGFib3V0IHdoYXQgdG8KLSAgICBmaXh1cC4KLQotICAgIEFsc28gZG8gc29jIG5vZGUgZml4dXBzIGJ5IGNvbXBhdGlibGUgaW5zdGVhZCBvZiBieSBwYXRoLgotICAgIEEgbmV3IGJvYXJkIGNvbmZpZyBjYWxsZWQgT0ZfU09DX0NPTVBBVCBkZWZpbmVkCi0gICAgdG8gYmUgImZzbCxtcGM1MTIxLWltbXIiIHJlcGxhY2VzIHRoZSBvbGQKLSAgICBPRl9TT0Mgbm9kZSBwYXRoIHRoYXQgd2FzIGRlZmluZWQgdG8gYmUgInNvY0A4MDAwMDAwMCIuCi0KLSAgICBPbGQgZGV2aWNlIHRyZWVzIHN0aWxsIHdvcmssIGJ1dCB0aGUgY29tcGF0aWJsaXR5Ci0gICAgaXMgY29uZGl0aW9uYWwgb24gQ09ORklHX09GX1NVUFBPUlRfT0xEX0RFVklDRV9UUkVFUwotICAgIHdoaWNoIGlzIG9uIGJ5IGRlZmF1bHQgaW4gaW5jbHVkZS9jb25maWdzL2FkczUxMjEuaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODEwOTFmNThmMGM1OGVjZDI2YzViMDVkZTJhZTIwY2E2Y2RiNTIxYwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEF1ZyAyIDIzOjQ4OjMwIDIwMDggKzAyMDAKLQotICAgIGRyaXZlcnMvc2VyaWFsOiBNb3ZlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIHRvIE1ha2VmaWxlIGZvciBDT05GSUdfKiBtYWNyb3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0Y2Q3ZTY1MjhmNjFlYzY2OTc1NWMzNzU0YmI0Zjk3Nzk4NzRmYWIzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgQXVnIDIgMjM6NDg6MzIgMjAwOCArMDIwMAotCi0gICAgbmlvczIvc3lzaWQ6IGZpeCBwcmludGYgd2FybmluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDY2ZGE2ZmEwZTM1ZTdlZTU2NjI4Yzg1OTgxNzA5YWZlNzE4MGZjOGUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBBdWcgMiAyMzo0ODozMyAyMDA4ICswMjAwCi0KLSAgICBGaXggcmVtYWluaW5nIGJ1aWxkIGlzc3VlcyB3aXRoIE1QQzh4eCBGQURTIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA4MWQzZjFmZGRkYWZkMWViNTNiYmNhODczOWY0ODhkNDE3ZWIzZGQyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgQXVnIDIgMjM6NDg6MzEgMjAwOCArMDIwMAotCi0gICAgbmlvczI6IGZpeCBwaHlzX2FkZHJfdCBhbmQgcGh5c19zaXplX3Qgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDVmYTYyMDAwZGI2ZDBiNDZlY2RlYWRiZWI1MGZhZjUxOTdkYjQ5ZWYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBBdWcgMiAyMzo0ODozNCAyMDA4ICswMjAwCi0KLSAgICBtdmJjX3A6IEZpeCBwcm9ibGVtIHdpdGggJyNpZiAoQ09ORklHX0NNRF9LR0RCKScKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxNDY0ZWZmNzdlN2ZkYWVkNjA5ZWNmMjYzYTI0MjNjOWRjZjk2YjFmCi1BdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgotRGF0ZToJRnJpIEF1ZyAxIDA5OjQ4OjI5IDIwMDggKzAxMDAKLQotICAgIEZpeCBiaXRtYXAgZGlzcGxheSBmb3IgYXRtZWwgbGNkIGNvbnRyb2xsZXIKLQotICAgIFRoZSBjdXJyZW50IGxjZF9kaXNwbGF5X2JpdG1hcCgpIGZ1bmN0aW9uIGRvZXMgbm90IHdvcmsgcHJvcGVybHkKLSAgICBmb3IgdGhlIEF0bWVsIExDRCBjb250cm9sbGVyLgotCi0gICAgMiBmaXhlcyBuZWVkIHRvIGJlIGRvbmU6LQotCi0gICAgKGEpIHdoZW4gc2V0dGluZyB0aGUgY29sb3VyIG1hcCwgdXNlIHRoZSBsY2Rfc2V0Y29scmVnKCkgZnVuY3Rpb24KLQlhcyBwcm92aWRlZCBieSB0aGUgQXRtZWwgZHJpdmVyCi0gICAgKGIpIHRoZSBkYXRhIGlzIG5ldmVyIGFjdHVhbGx5IHdyaXR0ZW4gdG8gdGhlIGxjZCBmcmFtZWJ1ZmZlciAhIQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Ci0KLWNvbW1pdCAyYTQzM2M2NmIxZTI3NzAzNDlmZTQ5MTFiZTIzYzM3NWYwNTNlYmQ4Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgQXVnIDEgMDg6NDA6MzQgMjAwOCArMDIwMAotCi0gICAgcWVtdV9taXBzOiB1cGRhdGUgUkVBRE1FIHRvIGZvbGxvdyBxZW11IHVwZGF0ZSBhYm91dCBkZWZhdWx0IG1hY2hpbmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBhYzE2OWQ2NDVmNWYwZTBiOWEyMzI1NjMwOTkyMDllOTJhMzU1ZDhlCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDMxIDE5OjUzOjIxIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggY29tcGlsYXRpb24gaXNzdWUgY2F1c2VkIGJ5IGEgbWlzc2luZyBmdW5jdGlvbgotCi0gICAgSW1wbGVtZW50IHVzZWMydGlja3MoKSB3aGljaCBpcyB1c2VkIGJ5IGZzbF9pMmMuYyBpbgotICAgIGxpYl9tNjhrL3RpbWUuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDAxYWU4NWI1OGI1MWQyZmIxZmFjNWI5MzA5NWY2MDQyY2Y0OGFlN2IKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgMzEgMTk6NTM6MDYgMjAwOCAtMDUwMAotCi0gICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGZvciBUQVNSRUcKLQotICAgIFRBU1JFRyBpcyBDb2xkRmlyZSBwbGF0Zm9ybSwgdGhlIGluY2x1ZGUgcHBjNHh4LmggaW4KLSAgICBib2FyZC9lc2QvY29tbW9uL2ZsYXNoLmMgY2F1c2VzIGNvbmZsaWN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDM1ZDNiZDNjYzM1YzUwOGE2ODIzZGFjNzdlMGZkMTI2ODA4ZTRmYzcKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgMzEgMTk6NTI6MzYgMjAwOCAtMDUwMAotCi0gICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGZvciBNQ0Y1Mjc1Ci0KLSAgICBSZW5hbWUgT0JKIHRvIENPQkogaW4gYm9hcmQvcGxhdGZvcm0vTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1YzQwNTQ4ZjAxMjE4MzYwYTFmMTM5NTE5OGM1MGZmNDVmMzAzNWI1Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDMxIDE5OjUyOjI4IDIwMDggLTA1MDAKLQotICAgIEZpeCBjb21waWxlIGVycm9yIGNhdXNlZCBieSBpbmNvcnJlY3QgZnVuY3Rpb24gcmV0dXJuIHR5cGUKLQotICAgIFJlbmFtZSBpbnQgbWlpX2luaXQodm9pZCkgdG8gdm9pZCBtaWlfaW5pdCh2b2lkKSBmb3IgaWRtcgotICAgIENvbGRGaXJlIHBsYXRmb3JtCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTU4Yzc4MDY3YzkyODk3NmMwODJjNzU4ZDM5ODdlODllYWQ1YjE5MQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyAxIDEyOjA2OjIyIDIwMDggKzAyMDAKLQotICAgIEZpeCBidWlsZCBpc3N1ZXMgd2l0aCBNUEM4eHggRkFEUyBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGI1MGNkMTJhM2IzYzY0NDE1M2M0Y2YzOTNmNGE0YzEyMjg5ZTVhYQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAzMSAxNzo1NDowMyAyMDA4ICswMjAwCi0KLSAgICBQcmVwYXJlIHYxLjMuNC1yYzI6IHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhNDgzMTE1NTdkYjZlN2U5NDczYTYxNjNiNDRiYjFlNmM2ZWQ2NGM0Ci1BdXRob3I6IE1hcmsgSmFja3NvbiA8bXBmakBtaW1jLmNvLnVrPgotRGF0ZToJVGh1IEp1bCAzMSAxNjowOTowMCAyMDA4ICswMTAwCi0KLSAgICBBZGQgZ3ppcHBlZCBsb2dvIHN1cHBvcnQKLQotICAgIFRoZSBSRUFETUUgZmlsZSBzdGF0ZXMgdGhhdCBDT05GSUdfVklERU9fQk1QX0daSVAgYmVoYXZlcyBhcyBmb2xsb3dzOgotCi0gICAgICBJZiB0aGlzIG9wdGlvbiBpcyBzZXQsIGFkZGl0aW9uYWxseSB0byBzdGFuZGFyZCBCTVAKLSAgICAgIGltYWdlcywgZ3ppcHBlZCBCTVAgaW1hZ2VzIGNhbiBiZSBkaXNwbGF5ZWQgdmlhIHRoZQotICAgICAgc3BsYXNoc2NyZWVuIHN1cHBvcnQgb3IgdGhlIGJtcCBjb21tYW5kLgotCi0gICAgSG93ZXZlciwgdGhlIHNwbGFzaHNjcmVlbiBmdW5jdGlvbiAqb25seSogc3VwcG9ydHMgc3RhbmRhcmQgQk1QIGltYWdlcy4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgZG9jdW1lbnRlZCBnemlwIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLQotY29tbWl0IGE1YmNiMDFmYmRlNmIxZjFjOTg2M2NkODZlNWM0YzM2OWYwMTIxYWMKLUF1dGhvcjogTWFyayBKYWNrc29uIDxtcGZqQG1pbWMuY28udWs+Ci1EYXRlOglUaHUgSnVsIDMxIDE1OjU2OjQ4IDIwMDggKzAxMDAKLQotICAgIEZpeCBBdG1lbCBMQ0QgY29udHJvbGxlciBlbmRpYW5lc3MgZm9yIEFWUjMyIHByb2Nlc3NvcnMKLQotICAgIFRoZSBBdG1lbCBsY2QgY29udHJvbGxlciBpcyB1c2VkIG9uIEF0bWVsJ3MgQVQ5MSAobGl0dGxlIGVuZGlhbikgYW5kCi0gICAgQVZSMzIgKGJpZyBlbmRpYW4pIHBsYXRmb3Jtcy4KLQotICAgIEFzIHN1Y2gsIHRoZSBjb250cm9sbGVyIGNhbiBoYW5kbGUgYm90aCBiaWcgYW5kIGxpdHRsZSBlbmRpYW4gbWVtb3J5LgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgZHJpdmVyIGZvciB0aGUgQVZSMzIgcGxhdGZvcm0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrIEphY2tzb24gPG1wZmpAbWltYy5jby51az4KLQotY29tbWl0IGNkYjhiZDJmZDNiY2JlNjVkOGU0MzM0YTU1ZjVhNjY3ODQ1NDI2YTEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBKdWwgMzEgMTU6NTY6MDEgMjAwOCArMDIwMAotCi0gICAgYXBvbGxvbjogZml4IGJ1aWxkIG91dCBvZiB0cmVlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMmU3NTJiZTM5ZDNlMzk4ZDRhYjg5ZmZhNjYzNGMzOTdkZjI5ODI5NwotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMxIDEyOjM1OjA0IDIwMDggKzAyMDAKLQotICAgIFVuY29tcHJlc3NlZCBpbWFnZXMgbG9hZGVkIHRvIHRoZWlyIHN0YXJ0IGFkZHJlc3Mgc2hhbGwgc2V0IGxvYWRfZW5kIHRvbwotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYzM3MjA3ZDdmNTFlMTljMTdmODU5OTY2ZjMxNGUyN2NjMTIzMTgwMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEp1bCAxNiAxNjozODo1OSAyMDA4ICswMjAwCi0KLSAgICBGaXggcHJpbnRmKCkgZm9ybWF0IHByb2JsZW1zIHdpdGggY29uZmlndXJhYmxlIHByb21wdHMKLQotICAgIFUtQm9vdCBhbGxvd3MgZm9yIGNvbmZpZ3VyYWJsZSBwcm9tcHQgc3RyaW5ncyB1c2luZyB0aGUKLSAgICBDT05GSUdfQVVUT0JPT1RfUFJPTVBUIHJlc3AuIENPTkZJR19NRU5VUFJPTVBUIGRlZmluaXRpb25zLiBTbyBmYXIsCi0gICAgdGhlIGFzc3VtcHRpb24gd2FzIHRoYXQgYW55IHN1Y2ggdXNlciBkZWZpbmVkIHByb2JsdHMgd291bGQgY29udGFpbgotICAgIGV4YWN0bHkgb25lICIlZCIgZm9ybWF0IHNwZWNpZmllci4gQnV0IHNvbWUgYm9hcmRzIGRpZCBub3QuCi0KLSAgICBUbyBhbGxvdyBmb3IgZmxleGlibGUgYm9vdCBwcm9tcHRzIHdpdGhvdXQgYWRkaW5nIHRvbyBjb21wbGV4IGNvZGUgd2UKLSAgICBub3cgYWxsb3cgdG8gc3BlY2lmeSB0aGUgd2hvbGUgbGlzdCBvZiBwcmludGYoKSBhcmd1bWVudHMgaW4gdGhlIHVzZXIKLSAgICBkZWZpbml0aW9uLiBUaGlzIGlzIHBvd2VyZnVsLCBidXQgcmVxdWlyZXMgYSByZXNwb25zaWJsZSB1c2VyIHdobwotICAgIHJlYWxseSB1bmRlcnN0YW5kcyB3aGF0IGhlIGlzIGRvaW5nLCBhcyBoZSBuZWVkcyB0byBrbm93IGZvciBleGFucGxlCi0gICAgd2hpY2ggdmFyaWFibGVzIGFyZSBhdmFpbGFibGUgaW4gdGhlIHJlc3BlY3RpdmUgY29udGV4dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1NDc1NDEyMDYzN2I2YTdmNGZmNzc0ZmIxOTlmYzU1MGJjZmVhMWRhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMxIDE3OjAyOjE0IDIwMDggKzAyMDAKLQotICAgIFRRTTg1eHg6IGZpeCB0eXBvIGludHJvZHVjZSBieSBjb21taXQgZmZiYjVjYjkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwYjQ5NTFkNGNkZGNhOWNjODAwNzQ1ODkxYzk1YjI5MWU0N2NiYmQ3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMxIDE1OjI3OjAxIDIwMDggKzAyMDAKLQotICAgIG12YmNfcCBib2FyZDogZml4IG1vc3QgYnVpbGQgd2FybmluZ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzRlYzZkYjA3NDA1MWQyZjZmYzc2YTY2NDExYzYwNjIxYjIyYmMwMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAzMSAxMzo1NzoyMCAyMDA4ICswMjAwCi0KLSAgICBFMTAwMDogY2xlYW4gdXAgQ09ORklHX0UxMDAwX0ZBTExCQUNLX01BQyBoYW5kbGluZwotCi0gICAgQXZvaWQgImludGVnZXIgY29uc3RhbnQgaXMgdG9vIGxhcmdlIGZvciAnbG9uZycgdHlwZSIgd2FybmluZ3MuCi0gICAgQW5kIHNpbXBsaWZ5IHRoZSBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDkxOTZiNDQzMzRjMzMwY2MxM2RlMjQ2NGM1OTE4MWU0ZGI3MWY1NDkKLUF1dGhvcjogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Ci1EYXRlOglXZWQgSnVsIDMwIDIzOjIxOjE5IDIwMDggKzA0MDAKLQotICAgIDgyNjA6IE1ha2luZyB0aGUgdXNlIG9mIGdkLT5wY2lfY2xrIGRlcGVuZGFudCBvbiB0aGUgQ09ORklHX1BDSQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2MzYxYWQ0YjU5NmY1YTk0MGEwMWM5MWFlMDI5N2Q5OGY3OTBjYmUwCi1BdXRob3I6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgotRGF0ZToJV2VkIEp1bCAzMCAyMzoyMDozMiAyMDA4ICswNDAwCi0KLSAgICBQUEM6IEFkZCBwY2lfY2xrIGluIHRoZSBnbG9iYWxfZGF0YSBmb3IgQ1BNMiBwcm9jZXNzb3JzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgcGNpX2NsayBmaWVsZCB0byB0aGUgZ2xvYmFsX2RhdGEgc3RydWN0dXJlIGZvciB0aGUKLSAgICBwcm9jZXNzb3JzIHdoaWNoIGhhdmUgQ1BNMiBtb2R1bGUgaW4gY2FzZSB0aGUgQ09ORklHX1BDSSBpcyBkZWZpbmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmMGZmODg1Y2E2NDY1NWJlZTY1NDBlYjhhMjVlZWQ5MGIxMTUyNjg2Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSnVsIDMwIDE0OjEzOjMwIDIwMDggLTA1MDAKLQotICAgIG1wYzg1eHg6IFVwZGF0ZSBsaW5rZXIgc2NyaXB0cyBmb3IgRnJlZXNjYWxlIGJvYXJkcwotCi0gICAgKiBNb3ZlIHRvIHVzaW5nIGFic29sdXRlIGFkZHJlc3NpbmcgYWx3YXlzLiAgTWFrZXMgdGhlIHNjcmlwdHMgYSBiaXQgbW9yZQotICAgICAgcG9ydGFibGUgYW5kIGNvbW1vbgotICAgICogTW92ZWQgLmJzcyBhZnRlciB0aGUgZW5kIG9mIHRoZSBpbWFnZS4gIFRoZXNlIGFsbG93cyB1cyB0byBoYXZlIG1vcmUKLSAgICAgIHJvb20gaW4gdGhlIHJlc3VsdGluZyBiaW5hcnkgaW1hZ2UgZm9yIGNvZGUgYW5kIGRhdGEuCi0gICAgKiBSZW1vdmVkIC50ZXh0IG9iamVjdCBmaWxlcyB0aGF0IGFyZW4ndCByZWFsbHkgbmVlZGVkCi0gICAgKiBNYWtlIHN1cmUgX2VuZCBpcyA0LWJ5dGUgYWxpZ25lZCBhcyB0aGUgLmJzcyBpbml0IGNvZGUgZXhwZWN0cyB0aGlzLgotICAgICAgKEl0cyBwb3NzaWJsZSB0aGF0IHRoZSBlbmQgb2YgLmJzcyBpc24ndCA0LWJ5dGUgYWxpZ25lZCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1N2MyMTlhZDVkMzRkZDlkNDk5OTE3NzdhNjJlMzg5OTU5NWYyZWM3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSnVsIDMwIDA4OjAxOjE1IDIwMDggLTA1MDAKLQotICAgIEZpeCBjb21waWxlIHdhcm5pbmdzIGluIGRsbWFsbG9jCi0KLSAgICBUaGUgb3JpZ2lvbmFsIGNvZGUgd2FzIHVzaW5nIG9uIG9kZCByZWZlcmVuY2UgdG8gZ2V0IHRvIHRoZSBmaXJzdAotICAgIHJlYWwgZWxlbWVudCBpbiBhdl9bXS4gIFRoZSBmaXJzdCB0d28gZWxlbWVudHMgb2YgdGhlIGFycmF5IGFyZQotICAgIG5vdCB1c2VkIGZvciBhY3R1YWwgYmlucywgYnV0IGZvciBob3VzZSBrZWVwaW5nLiAgSWYgd2UgYXJlIG1vcmUKLSAgICBleHBsaWNpdCBhYm91dCBob3cgdXNlIHRoZSBmaXJzdCBmZXcgZWxlbWVudHMgd2UgY2FuIGdldCByaWQgb2YgdGhlCi0gICAgd2FybmluZ3M6Ci0KLSAgICBkbG1hbGxvYy5jOiBJbiBmdW5jdGlvbiAnbWFsbG9jX2V4dGVuZF90b3AnOgotICAgIGRsbWFsbG9jLmM6MTk3MTogd2FybmluZzogZGVyZWZlcmVuY2luZyB0eXBlLXB1bm5lZCBwb2ludGVyIHdpbGwgYnJlYWsgc3RyaWN0LWFsaWFzaW5nIHJ1bGVzCi0gICAgZGxtYWxsb2MuYzoxOTk5OiB3YXJuaW5nOiBkZXJlZmVyZW5jaW5nIHR5cGUtcHVubmVkIHBvaW50ZXIgd2lsbCBicmVhayBzdHJpY3QtYWxpYXNpbmcgcnVsZXMKLSAgICBkbG1hbGxvYy5jOjIwMjk6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIC4uLgotCi0gICAgVGhlIGxvZ2ljIG9mIGhvdyB0aGlzIGNvZGUgY2FtZSB0byBiZSBpczoKLQliaW5fYXQoMCkgPSAoY2hhciopJihhdl9bMl0pIC0gMipTSVpFX1NaCi0KLSAgICBTSVpFX1NaIGlzIHRoZSBzaXplIG9mIHBvaW50ZXIsIGFuZCBhdl8gaXMgYXJyeSBvZiBwb2ludGVycyBzbzoKLQliaW5fYXQoMCkgPSAmKGF2X1swXSkKLQotICAgIEdvaW5nIGZyb20gdGhlcmUgdG8gYmluX2F0KDApLT5mZCBvciBiaW5fYXQoMCktPnNpemUgc2hvdWxkIGJlIHN0cmFpZ2h0IGZvcndhcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgM2Y5YWUxYTVkNDNjNDlhOGVjZjQ5NzQ3MGMzZDFkODAyNTVlNDRiOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDMwIDEwOjIxOjAxIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IFc3T0xNRyBjb21waWxlIHByb2JsZW1zIGJ5IGFkZGluZyBtaXNzaW5nIExNNzUgZGVmaW5lcwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWJiODZjNGVjZDM3YTc3MDEzNTgyODRlNDk3Y2E0YzY0ODNjN2NjNQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDMwIDA5OjU5OjUxIDIwMDggKzAyMDAKLQotICAgIGNtZF9ib290bS5jOiBGaXggcHJvYmxlbSB3aXRoICcjaWYgKENPTkZJR19DTURfVVNCKScKLQotICAgIEEgcmVjZW50IHBhdGNoIHVzZWQgJyNpZiAoQ09ORklHX0NNRF9VU0IpJyBpbnN0ZWFkIG9mCi0gICAgJyNpZiBkZWZpbmVkKENPTkZJR19DTURfVVNCKScuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtIGFuZCBtYWtlcwotICAgIGNvbW1vbi9ib290bS5jIGNvbXBpbGUgYWdhaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCAyY2I5MDgwNDI3ZmU2NDFkY2I3MWRhNDZjZDA2MzRkZDQwNmYzN2VkCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJVHVlIEp1bCAyMiAwODowMTo0MyAyMDA4ICswOTAwCi0KLSAgICBSZW1vdmUgdW51c2VkIEkyQyBhdCBhcG9sbG9uIGJvYXJkCi0KLSAgICBUaGVyZSBhcmUgbm8gSTJDIGRldmljZXMgb24gdGhpcyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCAzYzk1OTYwZTUyNmIzYjAyNmRhMjAyMDFkYjY0NTI2ZjQ2ZmFmMTRiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMxIDEwOjEyOjA5IDIwMDggKzAyMDAKLQotICAgIGF0OTFybTkyMDBkaywgY3NiNjM3OiBmaXggTkFORCByZWxhdGVkIGJ1aWxkIHByb2JsZW1zCi0KLSAgICBUcmllZCBmaXhpbmcgTkFORCBzdXBwb3J0IGZvciB0aGUgYXQ5MXJtOTIwMGRrIGJvYXJkOyB1bnRlc3RlZC4KLSAgICBEaXNhYmxlZCBOQU5EIHN1cHBvcnQgaW4gdGhlIGNzYjYzNyBib2FyZCBjb25maWcgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA5MjQ2ZjVlY2ZkMzUzYWUyOTdhMDJmZmQ1MzI4NDAyYWNmMTZjOWRkCi1BdXRob3I6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotRGF0ZToJV2VkIEp1bCAzMCAxMjozOToyOCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IE1MNTA3OiBFbnZpcm9ubWVudCBpbiBmbGFzaCBhbmQgTVREIFN1cHBvcnQKLQotICAgIC0gUmVsb2NhdGUgdGhlIGxvY2F0aW9uIG9mIFUtQm9vdCBpbiB0aGUgZmxhc2gKLSAgICAtIFNhdmUgdGhlIGVudmlyb25tZW50IGluIG9uZSBzZWN0b3Igb2YgdGhlIGZsYXNoIG1lbW9yeQotICAgIC0gTVREIFN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGE4YTE2YWY0ZDU5ZDE0Y2MxYzExODdjMTBhYWFkODBkNmI4Mzk0YjUKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglUdWUgSnVsIDI5IDE3OjE2OjEwIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogTUw1MDc6IFVzZSBvZiBnZXRfcmFtX3NpemUgaW4gYm9hcmQgbWw1MDcKLQotICAgIC0gQ2hhbmdlIHN1Z2dlc3RlZCBieSBXRAotCi0gICAgU2lnbmVkLW9mZi1ieTogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDFhMDA0MzEzYzVlYzJkMTI4YjYxMWRmNGMyMDhiMWIwZDNjM2ZiNAotQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLURhdGU6CU1vbiBKdWwgMjEgMjA6MzA6MDcgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBNTDUwNzogVS1Cb290IGluIGZsYXNoIGFuZCBTeXN0ZW0gQUNFCi0KLSAgICBUaGlzIHBhdGNoIGFsbG93cyBib290aW5nIGZyb20gRkxBU0ggdGhlIE1MNTA3IGJvYXJkIGJ5IFhpbGlueC4KLSAgICBQcmV2aW91c2x5LCBVLUJvb3QgbmVlZGVkIHRvIGJlIGxvYWRlZCBmcm9tIEpUQUcgb3IgYSBTeXRlbSBBQ0UgQ0YKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDVjMzc0YzllZTE2ZmVlMmJmNjg1MzNjYzQwMTBiM2MwZGYyMWY3ODMKLUF1dGhvcjogSnVsaWVuIE1heSA8bWFpbGluZ2xpc3RAbWlyb21pY28uY2g+Ci1EYXRlOglNb24gSnVuIDIzIDEzOjU3OjUyIDIwMDggKzAyMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgaGFtbWVyaGVhZCAoQVZSMzIpIGJvYXJkCi0KLSAgICBUaGUgSGFtbWVyaGVhZCBwbGF0Zm9ybSBpcyBidWlsdCBhcm91bmQgYSBBVlIzMiAzMi1iaXQgbWljcm9jb250cm9sbGVyCi0gICAgZnJvbSBBdG1lbC4gIEl0IG9mZmVycyB2ZXJzYXRpbGUgcGVyaXBoZXJhbHMsIHN1Y2ggYXMgZXRoZXJuZXQsIHVzYgotICAgIGRldmljZSwgdXNiIGhvc3QgZXRjLgotCi0gICAgVGhlIGJvYXJkIGFsc28gaW5jb29wZXJhdGVzIGEgcG93ZXIgc3VwcGx5IGFuZCBpcyBhIFBvd2VyIG92ZXIgRXRoZXJuZXQKLSAgICAoUG9FKSBQb3dlcmVkIERldmljZSAoUEQpLgotCi0gICAgQWRkaXRvbmFsbHksIGEgQ3ljbG9uZSBJSUkgRlBHQSBmcm9tIEFsdGVyYSBpcyBpbnRlZ3JhdGVkIG9uIHRoZSBib2FyZC4KLSAgICBUaGUgRlBHQSBpcyBtYXBwZWQgaW50byB0aGUgMzItYml0IEFWUiBtZW1vcnkgYnVzLiBUaGUgRlBHQSBvZmZlcnMgdHdvCi0gICAgRERSMiBTRFJBTSBpbnRlcmZhY2VzLCB3aGljaCB3aWxsIGNvdmVyIGV2ZW4gdGhlIG1vc3QgZXhjZXB0aW9uYWwgbmVlZAotICAgIG9mIG1lbW9yeSBiYW5kd2lkdGguIFRvZ2V0aGVyIHdpdGggdGhlIG9uYm9hcmQgdmlkZW8gZGVjb2RlciB0aGUgYm9hcmQKLSAgICBpcyByZWFkeSBmb3IgdmlkZW8gcHJvY2Vzc2luZy4KLQotICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIHNlZTogaHR0cDovLy93d3cubWlyb21pY28uY29tL2hhbW1lcmhlYWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEp1bGllbiBNYXkgPG1haWxpbmdsaXN0QG1pcm9taWNvLmNoPgotICAgIFtoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tOiB2YXJpb3VzIHNtYWxsIGZpeGVzIGFuZCBhZGFwdGlvbnNdCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMDlkMzE4YThiYjE0NDRlYzkyZTMxY2FmY2RiYTg3N2ViOTQwOWU1OAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEp1bCAyOSAxMjoyMzo0OSAyMDA4IC0wNTAwCi0KLSAgICBmc2xfaTJjOiBVc2UgdGltZWJhc2UgdGltZXIgZnVuY3Rpb25zIGluc3RlYWQgb2YgZ2V0X3RpbWVyKCkKLQotICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIGdldF90aW1lcigpIGlzIG9ubHkgcmVhbGx5IHVzZWZ1bCBhZnRlciB3ZQotICAgIGhhdmUgcmVsb2NhdGVkIHUtYm9vdCB0byBtZW1vcnkuICBUaGUgaTJjIGNvZGUgaXMgdXNlZCBiZWZvcmUgdGhhdCBhcyBwYXJ0Ci0gICAgb2YgdGhlIFNQRCBERFIgc2V0dXAuCi0KLSAgICBXZSBhY3R1YWxseSBoYXZlIGEgYnVnIHdoZW4gdXNpbmcgdGhlIGdldF90aW1lcigpIGNvZGUgYmVmb3JlIHJlbG9jYXRpb24KLSAgICBiZWNhdXNlIHRoZSAuYnNzIGhhc24ndCBiZWVuIHNldHVwIGFuZCB0aHVzIHdlIGNvdWxkIGJlIHJlYWRpbmcvd3JpdGluZwotICAgIGEgcmFuZG9tIGxvY2F0aW9uIChwcm9iYWJseSBpbiBmbGFzaCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNGZjNzJhMGQ2Y2E4NTA3MGE1ZTkwZDc2Y2M1YTg1MzUyNmFjMDljNAotQXV0aG9yOiBGcmFuayBTdmVuZHNiw7hlIDxmcmFuay5zdmVuZHNib2VAZ21haWwuY29tPgotRGF0ZToJVHVlIEp1bCAyOSAxNDo0OTozMSAyMDA4ICswMjAwCi0KLSAgICBBZGRlcjh4eDogRml4IENGR19NT05JVE9SX0xFTgotCi0gICAgRHVlIHRvIGluY3JlYXNlZCBzcGFjZSB1c2FnZSwgVS1Cb290IGNhbiBubyBsb25nZXIgYmUgc3RvcmVkIGluIHRocmVlIHNlY3RvcnMuCi0gICAgVGhlIGN1cnJlbnQgVS1Cb290IHVzZSBqdXN0IG92ZXIgdGhyZWUgZmxhc2ggc2VjdG9ycyAoMTk3ayksIGFuZCBVLUJvb3Qgd2lsbAotICAgIGJlY29tZSBjb3JydXB0IGFmdGVyIHNhdmluZyBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIFRoaXMgcGF0Y2ggYWRkcyBhbm90aGVyIDY0awotICAgIHRvIENGR19NT05JVE9SX0xFTi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZyYW5rIEUuIFN2ZW5kc2LDuGUgPGZyYW5rLnN2ZW5kc2JvZUBnbWFpbC5jb20+Ci0KLWNvbW1pdCBhNGM1OWFkNGEyMTE0MDU1MGFkYTZmOTc2OTBkMjUyN2M0MTQ2Y2U1Ci1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJVHVlIEp1bCAyOSAwODo0Nzo1NyAyMDA4ICswOTAwCi0KLSAgICBBZGQgT25lTkFORCBJUEwgcmVsYXRlZCBmaWxlcyB0byBnaXRpZ25vcmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA4ZDg3NTg5ZThlODc0ZGY3MTIwYTNkOTY2N2YwNTFiYzMzYmFjMjUwCi1BdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci1EYXRlOglNb24gSnVsIDI4IDIwOjM4OjI1IDIwMDggKzAyMDAKLQotICAgIEFQSTogVGVhY2ggdGhlIHN0b3JhZ2UgbGF5ZXIgYWJvdXQgU0FUQSBhbmQgTU1DIG9wdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBDenViYWsgPHJjekBzZW1paGFsZi5jb20+Ci0gICAgQWNrZWQtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA2YjczYjc1NGY3ODJlMWVjY2U1MDQ4YmYyMGIyMmNlNTZhMDdhNWI4Ci1BdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci1EYXRlOglNb24gSnVsIDI4IDIwOjM3OjQ4IDIwMDggKzAyMDAKLQotICAgIEFQSTogRHVtcCBjb250ZW50cyBvZiBzZWN0b3IgMCBpbiB0aGUgZGVtbyBhcHBsaWNhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDEzY2E2MzA1ZjJlYmE0OWMxNzVmNjM3MGMzNTI4NjE0MTA1OWM3ODkKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CU1vbiBKdWwgMjggMjA6Mzc6MTAgMjAwOCArMDIwMAotCi0gICAgQVBJOiBDb3JyZWN0IHN0b3JhZ2UgZW51bWVyYXRpb24gcm91dGluZSwgb3RoZXIgbWlub3IgZml4ZXMgaW4gQVBJIHN0b3JhZ2UgYXJlYS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDA1YzdmZTBmMDQ5YjFjOWViOWExOTkyZjI3ZTVlMzUwZDg2NWY0YTgKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CU1vbiBKdWwgMjggMjA6MzY6MTkgMjAwOCArMDIwMAotCi0gICAgQVBJOiBGaXggY29tcGlsYXRpb24gd2FybmluZ3MgaW4gYXBpX2V4YW1wbGVzL2RlbW8uYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEN6dWJhayA8cmN6QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGMxNGVlZmNjNDgyMTJhZjJmMzMxNDgwOTYwNTY5OGRkODM5M2E5MGEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBKdWwgMjcgMTc6MDk6NDMgMjAwOCArMDIwMAotCi0gICAgRml4IG1vcmUgcHJpbnRmKCkgZm9ybWF0IHdhcm5pbmdzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOTM2ODk3ZDRkMTM2NTQ1MmJiYmRmODQzMGRiNWU3NzY5ZWYwOGQzOAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIEp1bCAyNSAxNToxODoxNiAyMDA4ICswMjAwCi0KLSAgICBGaXggcmVtYWluaW5nIENGR19DTURfIGRlZmluZSwgaWZkZWYgYW5kIGNvbW1lbnRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNWQxZDAwZmIzNjAwNTQ4MmUxODAzYTAwZGRjNDZlZmExMWQ3MTlhZgotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgMjUgMDg6NTc6NDAgMjAwOCArMDIwMAotCi0gICAgQWRkIGluY2x1ZGUgZm9yIGNvbmZpZy5oIGluIGNvbW1hbmQuaC4KLQotICAgIEJlY2F1c2UgdGhlIGNtZF90YmxfcyBzdHJ1Y3R1cmUgZGVwZW5kcyBvbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlLCBpdAotICAgIG11c3QgYmUgYXNzdXJlZCB0aGF0IGNvbmZpZy5oIGlzIGluY2x1ZGVkIGJlZm9yZSB0aGUgc3RydWN0dXJlIGlzCi0gICAgZXZhbHVhdGVkIGJ5IHRoZSBjb21waWxlci4gSWYgdGhpcyBpcyBub3QgY2VydGFpbiwgaXQgY291bGQgaGFwcGVuCi0gICAgdGhhdCB0aGUgY29tcGlsZXIgZ2VuZXJhdGVzIHN0cnVjdHVyZXMgb2YgZGlmZmVyZW50IHNpemUsIGRlcGVuZGluZwotICAgIG9uIHRoZSBmYWN0IGlmIHRoZSBzb3VyY2UgZmlsZSBpbmNsdWRlcyA8Y29uZmlnLmg+IGJlZm9yZSBvciBhZnRlcgotICAgIDxjb21tYW5kLmg+LgotCi0gICAgVGhlIGVmZmVjdCBpcyB0aGF0IHUtYm9vdCBjcmFzaGVzIHdoZW4gdHJpZXMgdG8gcmVsb2NhdGUgdGhlIGNvbW1hbmQKLSAgICB0YWJsZSAoZm9yIHBwYykgb3IgdHJ5IHRvIGFjY2VzcyB0byB0aGUgY29tbWFuZCB0YWJsZSBmb3Igb3RoZXIKLSAgICBhcmNoaXRlY3R1cmVzLgotCi0gICAgVGhlIHByb2JsZW0gY2FuIGhhcHBlbiBvbiBib2FyZC1kZXBlbmRpbmcgY29tbWFuZHMuIEFsbCBnZW5lcmFsCi0gICAgY29tbWFuZHMgdW5kZXIgL2NvbW1vbiBhcmUgdW5hZmZlY3RlZCwgYmVjYXVzZSB0aGV5IGluY2x1ZGUgYWxyZWFkeQotICAgIGNvbmZpZy5oIGJlZm9yZSBjb21tYW5kLmguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDJkYWNiNzM0YmFjOWRiYTFkYjllNzA0ZDNlMGIyMDBlZjUyMWM3OWEKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVsIDIzIDEzOjE2OjA2IDIwMDggLTA1MDAKLQotICAgIE5BTkQ6ICQob2JqKS1xdWFsaWZ5IGVjYy5oIGluIGtpbGF1ZWEgTkFORCBib290IE1ha2VmaWxlLgotCi0gICAgVGhpcyBmaXhlcyBidWlsZGluZyBvdXQtb2YtdHJlZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzZkNTliZDlkYTllMTVkMTliODY3YjQ4NDQ5NDA4ODMwZjRlMmFkNQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgMjMgMDc6MzA6NDYgMjAwOCArMDIwMAotCi0gICAgRml4IHdhcm5pbmdzIGlmIGNvbXBpbGluZyB3aXRoIElERSBzdXBwb3J0LgotCi0gICAgY21kX2lkZS5jOjgyNzogV2FybnVuZzogd2VhayBkZWNsYXJhdGlvbiBvZiBgaWRlX291dGInIGFmdGVyIGZpcnN0IHVzZSByZXN1bHRzIGluIHVuc3BlY2lmaWVkIGJlaGF2aW9yCi0gICAgY21kX2lkZS5jOjgzOTogV2FybnVuZzogd2VhayBkZWNsYXJhdGlvbiBvZiBgaWRlX2luYicgYWZ0ZXIgZmlyc3QgdXNlIHJlc3VsdHMgaW4gdW5zcGVjaWZpZWQgYmVoYXZpb3IKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNzYxMGRiMTdmZDRkNTljNTFkODI1NDg4NTI2ZDg1ZWRlMmYwNjc2NwotQXV0aG9yOiBBZHJpYW4gRmlsaXBpIDxhZHJpYW4uZmlsaXBpQGV1cm90ZWNoLmNvbT4KLURhdGU6CVR1ZSBKdWwgMjIgMTQ6Mjg6MTEgMjAwOCAtMDQwMAotCi0gICAgUmVtb3ZlZCBzdXBwb3J0IGZvciB0aGUgYWRzdml4IGJvYXJkLgotCi0gICAgU3VwcG9ydCBmb3IgdGhlIGFkc3ZpeCB3YXMgb3JpZ2luYWxseSBwcm92aWRlZCBieSBBcHBsaWVkIERhdGEKLSAgICBTeXN0ZW1zIChBRFMpLCBpbmMuLCBub3cgRXVyb1RlY2gsIEluYy4KLSAgICBUaGUgYm9hcmQgbmV2ZXIgc2hpcHBlZCBhc2lkZSBmcm9tIHNvbWUgc2FtcGxlIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgotCi1jb21taXQgZjk2YjQ0Y2VmODk3YmQzNzJiZWI4NmRkZTFiMzM2MzdjMTE5ZDg0ZAotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVR1ZSBKdWwgMjIgMTY6MjI6MTEgMjAwOCArMDIwMAotCi0gICAgQVJNOiBzZXQgR0RfRkxHX1JFTE9DIGZvciBib2FyZHMgc2tpcHBpbmcgcmVsb2NhdGlvbiB0byBSQU0KLQotICAgIElmIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09UIGlzIHNldCB0aGUgZmxhZyBHRF9GTEdfUkVMT0MgaXMgdXN1YWxseQotICAgIG5ldmVyIHNldCwgYmVjYXVzZSByZWxvY2F0aW9uIHRvIFJBTSBpcyBhY3R1YWxseSBuZXZlciBkb25lIGJ5IFUtYm9vdAotICAgIGl0c2VsZi4gSG93ZXZlciwgc2V2ZXJhbCBwaWVjZXMgb2YgY29kZSBjaGVjayBpZiB0aGlzIGZsYWcgaXMgc2V0IGF0Ci0gICAgc29tZSB0aW1lLgotCi0gICAgU28sIHRvIG1ha2Ugc3VyZSB0aGlzIGZsYWcgaXMgc2V0IG9uIGJvYXJkcyBza2lwcGluZyByZWxvY2F0aW9uLCB0aGlzCi0gICAgaXMgYWRkZWQgdG8gdGhlIGluaXRpYWxpc2F0aW9uIG9mIFUtYm9vdCBhdCBhIG1vbWVudCB3aGVyZSBpdCBpcyBzYWZlCi0gICAgdG8gZG8gc28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLQotY29tbWl0IGU0ZGFmZmY4NmYyODliNTY3NzE0M2EzZTQxZGE3YjQ1YzZkMjdmYzcKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgMjEgMTQ6MjY6MjMgMjAwOCAtMDUwMAotCi0gICAgZnNsLWkyYzogZml4IHdyaXRlcyB0byBkYXRhIHNlZ21lbnQgYmVmb3JlIHJlbG9jYXRpb24KLQotICAgIFByZXZlbnQgaTJjX2luaXQoKSBpbiBmc2xfaTJjLmMgZnJvbSB3cml0aW5nIHRvIHRoZSBkYXRhIHNlZ21lbnQgYmVmb3JlCi0gICAgcmVsb2NhdGlvbi4gIENvbW1pdCBkOGM4MmRiNCBhZGRlZCB0aGUgYWJpbGl0eSBmb3IgaTJjX2luaXQoKSB0byBwcm9ncmFtIHRoZQotICAgIEkyQyBidXMgc3BlZWQgYW5kIHNhdmUgdGhlIHZhbHVlIGluIGkyY19idXNfc3BlZWRbXSwgd2hpY2ggaXMgYSBnbG9iYWwKLSAgICB2YXJpYWJsZS4gIEl0IGlzIGFuIGVycm9yIHRvIHdyaXRlIHRvIHRoZSBkYXRhIHNlZ21lbnQgYmVmb3JlIHJlbG9jYXRpb24sCi0gICAgd2hpY2ggaXMgd2hhdCBpMmNfaW5pdCgpIGRvZXMgd2hlbiBpdCBzdG9yZXMgdGhlIGJ1cyBzcGVlZCBpbiBpMmNfYnVzX3NwZWVkW10uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGJkMzIzODc5MjBlNWFkNmY5ZGQ1OGE3YjUwMTJiYmFiZTJhNmEyMQotQXV0aG9yOiBXb2xmZ2FuZyBPY2tlciA8d2VvQHJlY2Nvd2FyZS5kZT4KLURhdGU6CU1vbiBKdWwgMjggMTY6NTY6NTEgMjAwOCArMDIwMAotCi0gICAgbWlwczogRml4IGJhdWRyYXRlIGRpdmlzb3IgY29tcHV0YXRpb24gb24gYWxjaGVteSBjcHVzCi0KLSAgICBVc2UgQ0ZHX01JUFNfVElNRVJfRlJFUSB3aGVuIGNvbXB1dGluZyB0aGUgYmF1ZHJhdGUgZGl2aXNvcgotICAgIG9uIGFsY2hlbXkgY3B1cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIE9ja2VyIDx3ZW9AcmVjY293YXJlLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBjOGM4NDVjZmRjNmQwMjE3MTM1YzFkNTkyN2VlYmQyYjEzM2EzMzE0Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTYXQgSnVsIDUgMDA6MDg6NDggMjAwOCAtMDcwMAotCi0gICAgTW92ZWQgaW5pdGlhbGl6YXRpb24gb2YgQVZSMzIgRXRoZXJuZXQgY29udHJvbGxlcnMgdG8gYm9hcmRfZXRoX2luaXQoKQotCi0gICAgUmVuYW1lZCBpbml0aWFsaXphdGlvbiBmdW5jdGlvbnMgZm9yIGF0bmd3MTAwIGFuZCBhdHN0azEwMDAuCi0gICAgUmVtb3ZlZCBpbml0aWFsaXphdGlvbnMgZm9yIHRoZXNlIGJvYXJkcyBmcm9tIG5ldC9ldGguYwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBhMjI5ZDI5MWYzMzMwOGFiNzc2MWQzOWYyNWZhMWE1M2MwZmMwMGEyCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBKdWwgMjMgMTA6NTU6NDYgMjAwOCArMDIwMAotCi0gICAgc3BpIGZsYXNoOiBGaXggcHJpbnRmKCkgZm9ybWF0IHdhcm5pbmdzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAyNTJhNWUwNzM4YmNhZmFmMjVmN2ZiYjQwZjE5YTU5YWJjMmNiMTNlCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBKdWwgMjMgMTA6NTU6MzEgMjAwOCArMDIwMAotCi0gICAgYXRtZWxfbWNpOiBGaXggcHJpbnRmKCkgZm9ybWF0IHdhcm5pbmdzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA3ZjRiMDA5ZjQyMzJkNTcwODRjZTBlYzVhZWIzYjU3YmNjYjA4ZTRjCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBKdWwgMjMgMTA6NTU6MTUgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IEZpeCBwcmludGYoKSBmb3JtYXQgd2FybmluZ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGE3OWMzZThkOWMzMWRiMjVkNWNhM2VjOGUwOGE5N2YzMjM0MTBkZDQKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJV2VkIEp1bCAyMyAxMDo1MjoxOSAyMDA4ICswMjAwCi0KLSAgICBhdnIzMjogYXNtL2lvLmggbmVlZHMgYXNtL3R5cGVzLmgKLQotICAgIG1hcF9waHlzbWVtKCkgdGFrZXMgYSBwaHlzX2FkZHJfdCBhcyBwYXJhbWV0ZXIuIFRoaXMgdHlwZSBpcyBkZWZpbmVkIGluCi0gICAgYXNtL3R5cGVzLmgsIHNvIHdlIG5lZWQgdG8gaW5jbHVkZSB0aGF0IGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAxOTUzZDEyOGZkMDdmMDdkMWMzODEwYTI4YzA4NjNlYTY0ZGFlMWI2Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVRodSBKdWwgMTcgMTI6MjU6NDYgMjAwOCArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogRml4IHByaW50ZigpIGZvcm1hdCBpc3N1ZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IGRlMmEwN2U1MzRmMThiMWNhNWY5ODY5YTRlZjA2MDRjYTgyOWNmZjAKLUF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLURhdGU6CVRodSBKdWwgMTcgMDc6Mjc6NTEgMjAwOCArMDUzMAotCi0gICAgUmVtb3ZlIHVudXNlZCBjb2RlIGZyb20gbGliX2FybS9ib290bS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Ci0KLWNvbW1pdCBmZmJiNWNiOTQyZTk4NTZmYTI0ZTk0Njk3N2UwYTYwYzY0ZGYwNGFiCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJV2VkIEp1bCAxNiAxODo1Njo0NSAyMDA4ICswMjAwCi0KLSAgICB0cW04NXh4OiBEZW15c3RpZnkgJ0RLOiAhISEnIGNvbW1lbnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgYjJmNDRiYTU3MGYzYTAxMTEzYmJiNzQ1ZGFmNDZmMzg1OGQyMmY1MwotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgMTYgMTg6NTY6NDQgMjAwOCArMDIwMAotCi0gICAgODN4eC84NXh4Lzg2eHg6IEFkZCBMVEVEUiBsb2NhbCBidXMgZGVmaW5pdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgZjEzZjY0Y2Y0MmQ1YWJlYzNlMGY5MjAyMzNmNmE3YTYxZTdhZTQ5NAotQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLURhdGU6CVdlZCBKdWwgMTYgMTY6MjI6MzIgMjAwOCArMDIwMAotCi0gICAgc2VyaWFsX3h1YXJ0bGl0ZS5jOiBmaXggY29tcGlsZXIgd2FybmluZ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSBEZWxnYWRvIDxyaWNhcmRvLnJpYmFsZGFAdWFtLmVzPgotICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA4NjQ0NmQzYTVkOWQzY2E4MWU4NWQxY2NkM2FjY2FhYWU2ZjhlM2M5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgMTggMTE6MDM6MzUgMjAwOCArMDIwMAotCi0gICAgUE9TVDogQWRkIGRpc2FibGUgaW50ZXJydXB0cyBpbiBzb21lIG9mIHRoZSBtaXNzaW5nIENQVSBQT1NUIHRlc3RzCi0KLSAgICBTb21lIENQVSBQT1NUIHRlc3RzIGRpZCBub3QgZGlzYWJsZSB0aGUgaW50ZXJydXB0cyB3aGlsZSBydW5uaW5nLiBUaGlzCi0gICAgc2VlbXMgdG8gYmUgbmVjZXNzYXJ5IHRvIHByb3RlY3QgdGhpcyBzZWxmIG1vZGlmeWluZyBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTdhM2JmMjY4ZDA5NmUwZTk3ZTU0MDQ4NDQ4YzM1MTE0ZWRjZjU1NwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDE4IDEwOjQzOjI0IDIwMDggKzAyMDAKLQotICAgIGlkZTogVXNlIENGR182NEJJVF9MQkEgaW5zdGVhZCBvZiBDRkdfNjRCSVRfU1RSVE9VTAotCi0gICAgVGhpcyBpcyBuZWVkZWQgZm9yIGJvYXJkcyB0aGF0IGRlZmluZSBDRkdfNjRCSVRfU1RSVE9VTCBidXQgZG9uJ3QgZGVmaW5lCi0gICAgQ0ZHXzY0QklUX0xCQS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDAwNDNhYzU1MDI0OTYzMjk1ZmM3OWIzOWFmODViNmRjM2IyNjFlMTcKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLURhdGU6CUZyaSBKdWwgMTggMTE6MjI6MjMgMjAwOCArMDIwMAotCi0gICAgUE9TVCBQUEM0eHgvc3ByIElWUFIgb25seSBpZiBQUEM0NDAKLQotICAgIFRoZSBTUFIgSVZQUiByZWdpc3RlciBpcyBvbmx5IHByZXNlbnQgKGFzIGZhciBhcyBJIGtub3cpIGZvcgotICAgIHByb2Nlc3NvcnMgd2l0aCBhIFBQQzQ0MCBjb3JlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTA5MmZiZDY0NzQ4ZGZhMmU5NzliMTAyNjExZWNlOWJjNWVjMTg1NQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDE4IDEwOjQyOjI5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRW5hYmxlIDY0Yml0IHByaW50ZiBmb3JtYXQgb24gNDQwLzQ2MCBwbGF0Zm9ybXMKLQotICAgIFRoaXMgcGF0Y2ggZGVmaW5lcyBDRkdfNjRCSVRfVlNQUklOVEYgYW5kIENGR182NEJJVF9TVFJUT1VMIGZvciBhbGwKLSAgICA0NDAvNDYwIHBsYXRmb3Jtcy4gVGhpcyBtYXkgYmUgbmVlZGVkIHNpbmNlIHRob3NlIHBsYXRmb3JtcyBzdXBwb3J0Ci0gICAgMzZiaXQgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDY2ZmUxODNiMWRkOWM3NTM0NjA1MTQ3YThlY2ZlZDFjMDIzNDVlZTUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1bCAxOCAxNTo1NzoyMyAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBpbmNvcnJlY3QgTU9EVHggc2V0dXAgZm9yIHNvbWUgRElNTSBjb25maWd1cmF0aW9ucwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gd2l0aCBpbmNvcnJlY3QgTU9EVHggKE9uIERpZSBUZXJtaW5hdGlvbikKLSAgICBzZXR1cCBmb3IgYSBjb25maWd1cmF0aW9uIHdpdGggbXVsdGlwbGUgRElNTSdzIGFuZCBtdWx0aXBsZSByYW5rcy4KLSAgICBXaXRob3V0IHRoaXMgY2hhbmdlIEthdG1haSB3YXMgdW5hYmxlIHRvIGJvb3QgTGludXggd2l0aCBERFIyIGZyZXF1ZW5jeQotICAgID49IDUzM01IeiBhbmQgbWVtPj0zR0IuIFdpdGggdGhpcyBwYXRjaCBLYXRtYWkgc3VjY2Vzc2Z1bGx5IGJvb3RzIExpbnV4Ci0gICAgd2l0aCBERFIyIGZyZXF1ZW5jeSA9IDY0ME1IeiBhbmQgbWVtPTRHQi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDYwMjA0ZDA2ZWQ5ZjhjMmE2N2NjNzllYjY3ZmQyYjFkMjJiY2JjOGMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1bCAxOCAxMjoyNDo0MSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwIG9mIFhpbGlueCBWaXJ0ZXg1IG1sNTA3IHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDA4NjUxMWZjOTZhOGE5YmI1NmU1ZTE5YTNkODRjNDBmNGRiYTgwY2MKLUF1dGhvcjogUmljYXJkbyBSaWJhbGRhIERlbGdhZG8gPHJpY2FyZG8ucmliYWxkYUB1YW0uZXM+Ci1EYXRlOglUaHUgSnVsIDE3IDEyOjQ3OjA5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogTUw1MDcgQm9hcmQgU3VwcG9ydAotCi0gICAgVGhlIFhpbGlueCBNTDUwNyBCb2FyZCBpcyBhIFZpcnRleCA1IHByb3RvdHlwaW5nIGJvYXJkIHRoYXQgaW5jbHVkZXMsCi0JYW1vbmcgb3RoZXJzOgotCS1WaXJ0ZXggNSBGWCBGUEdBIChXaXRoIGEgcHBjNDQweDUgaW4gaXQpCi0JLTI1Nk1CIG9mIFNEUkFNMgotCS0zMk1CIG9mIEZsYXNoCi0JLUkyQyBFZXByb20KLQktU3lzdGVtIEFDRSBjaGlwCi0JLVNlcmlhbCBBVEEgY29ubmVjdG9ycwotCS1SUzIzMiBMZXZlbCBDb252ZXJzb3JzCi0JLUV0aGVybmV0IFRyYW5zY2VpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGdpdmVzIHN1cHBvcnQgdG8gYSBzdGFuZGFyZCBkZXNpZ24gcHJvZHVjZWQgYnkgRURLIGZvciB0aGlzCi0gICAgYm9hcmQ6IHBwYzQ0MCwgdWFydGxpdGUsIHhpbGlueF9pbnQgYW5kIGZsYXNoCi0KLSAgICAtIEluY2x1ZGVzIENoYW5nZXMgcHJvcG9zc2VkIGJ5IFN0ZWZhbiBSb2VzZSBhbmQgTWljaGFsIFNpbWVrCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDg2NWZkMDk4MDlhM2ExODY2OWYzNWY5NzA3ODE4MjBhZjQwZTRkZQotQXV0aG9yOiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLURhdGU6CVRodSBKdWwgMTcgMTE6NDQ6MTIgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDUFUgUFBDNDQweDUgb24gVmlydGV4NSBGWAotCi0gICAgLVRoaXMgcGF0Y2hzIGdpdmVzIHN1cHBvcnQgZm9yIHRoZSBlbWJiZWRkZWQgcHBjNDQwCi0gICAgIG9uIHRoZSBWaXJ0ZXg1IEZQR0FzCi0gICAgLWludGVycnVwdHMuYyBkaXZpZGVkIGluIHVpYy5jIGFuZCBpbnRlcnJ1cHRzLmMKLSAgICAteGlsaW54X2lycS5jIGZvciB4aWxpbnggaW50ZXJydXB0IGNvbnRyb2xsZXIKLSAgICAtSW5jbHVkZSBtb2RpZmljYXRpb25zIHByb3Bvc3NlZCBieSAgU3RlZmFuIFJvZXNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSaWNhcmRvIFJpYmFsZGEgRGVsZ2FkbyA8cmljYXJkby5yaWJhbGRhQHVhbS5lcz4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzQwY2NiMjYwZjIxNTE2YmUzNjA3NDVkNWM1ZTNiZDA2NTc2OThkZgotQXV0aG9yOiBTZWJhc3RpYW4gU2lld2lvciA8YmlnZWFzeUBsaW51dHJvbml4LmRlPgotRGF0ZToJV2VkIEp1bCAxNiAyMDowNDo0OSAyMDA4ICswMjAwCi0KLSAgICBjZmlfZmxhc2g6IGZpeCBmbGFzaCBvbiBCRSBtYWNoaW5lcyB3aXRoIENGR19XUklURV9TV0FQUEVEX0RBVEEKLQotICAgIFRoaXMgZ290IGJyb2tlbiBieSBjb21taXRzIDkzYzU2ZjIxMmMKLSAgICAgW2NmaV9mbGFzaDogc3VwcG9ydCBvZiBsb25nIGNtZCBpbiBVLWJvb3QuXQotCi0gICAgVGhhdCBjb21tYW5kIG5lZWRzIHRvIGJlIGluIGxpdHRsZSBlbmRpYW4gZm9ybWF0IG9uIEJFIG1hY2hpbmVzCi0gICAgd2l0aCBDRkdfV1JJVEVfU1dBUFBFRF9EQVRBLiBXaXRob3V0IHRoaXMgcGF0Y2gsIHRoZSBjb21tYW5kIDB4ZjAKLSAgICBnZXRzIHNhdmVkIG9uIHN0YWNrIGFzIDB4MDAgMDAgMDAgZjAgYW5kIDB4MDAgZ2V0cyB3cml0dGVuIGludG8KLSAgICB0aGUgY21kYnVmIGluIGNhc2UgcG9ydHdpZHRoID0gY2hpcHdpZHRoID0gOGJpdC4KLQotICAgIENjOiBBbGV4ZXkgS29yb2xldiA8YWtvcm9sZXZAaW5mcmFkZWFkLm9yZz4KLSAgICBDYzogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgotICAgIFNpZ25lZC1vZmYtYnk6IFNlYmFzdGlhbiBTaWV3aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXguZGU+Ci0KLWNvbW1pdCAxMTE4OGQ1NWJjMTZkZDkwNzQ1MWMwMDI4MmUwMGEwMzhmNzNkZDYyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMTcgMTA6NDA6NTEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggYWxwaGFiZXRpY2FsIG9yZGVyIGluIDR4eCBNYWtlZmlsZSBwYXJ0IChyZWR3b29kKQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDIxZjZkZjZlOTZhZjViMzg3ODEwY2Y5NmQyNDg0OGRhMWZhYTU1YwotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBKdWwgMTAgMTc6MjA6NTEgMjAwOCArMDQwMAotCi0gICAgODN4eDogbXBjODMxNWVyZGI6IGZpeCBzaWxseSB0aGlua28gaW4gZmR0X3RzZWMxX2ZpeHVwCi0KLSAgICBUaGUgdGhpbmtvIHdhcyBxdWl0ZSBzaWxseSBpbmRlZWQsIEkgbWVzc2VkIHdpdGggIXB0ci4gTm9ybWFsbHkgdGhpcwotICAgIHdvdWxkIHRyaWdnZXIgc29tZSBmYXVsdCwgYnV0IGluIFUtQm9vdCBOVUxMIHBvaW50ZXIgaXMgZXF1YWwgdG8gcGh5cwotICAgIDAsIHNvIHRoZSBjb2RlIHdhcyB3b3JraW5nIHN0aWxsLCBqdXN0IGRpZG4ndCBhY3R1YWxseSB0ZXN0IG1wYzgzMTVlcmRiCi0gICAgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWUuIEhlaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNWY1ZjBkNDlhM2FlODliZjQzOTZmMjU1N2NlOThkZWJmZWYyMWRhCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVHVlIEp1bCA4IDIxOjAwOjA0IDIwMDggKzA0MDAKLQotICAgIDgzeHg6IG1wYzgzMTVlcmRiOiBhZGQgc3VwcG9ydCBmb3Igc3dpdGNoaW5nIGJldHdlZW4gVUxQSS9VVE1JIFVTQiBQSFlzCi0KLSAgICBGcmVlc2NhbGUgc2hpcHMgTVBDODMxNUUtUkRCIGJvYXJkcyBlaXRoZXIgd2l0aCBUU0VDMSBhbmQgVVNCIFVUTUkKLSAgICBzdXBwb3J0LCBvciB3aXRob3V0IFRTRUMxIGJ1dCB3aXRoIFVTQiBVTFBJIFBIWSBzdXBwb3J0IGluIGFkZGl0aW9uLgotICAgIFdpdGggdGhpcyBwYXRjaCB1c2VyIGNhbiBzcGVjaWZ5IGRlc2lyZWQgVVNCIFBIWS4KLQotICAgIEFsc28sIGl0IHNlZW1zIHRoYXQgd2UgY2FuJ3QgZGlzdGluZ3Vpc2ggdGhlIHR3byBib2FyZHMgaW4gc29mdHdhcmUsIHNvCi0gICAgdXNlciBoYXZlIHRvIHNldCBgbXBjODMxNWVyZGInIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGVpdGhlciAndHNlYzEnCi0gICAgKFRTRUMxIGVuYWJsZWQpIG9yIGB1bHBpJyAoYm9hcmQgd2l0aCBVTFBJIFBIWSwgVFNFQzEgZGlzYWJsZWQpLCBzbyB0aGF0Ci0gICAgTGludXggd2lsbCBub3QgcHJvYmUgZm9yIFRTRUMxLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDAxNWIyN2I5ZTE2NWZjZjIyMGU0MmYyYzRhZmJhZWFhMjc1OGZjZjYKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglUdWUgSnVsIDggMjA6NTk6NDMgMjAwOCArMDQwMAotCi0gICAgZmR0X3N1cHBvcnQ6IGZkdF9maXh1cF9kcl91c2I6IGFkZCBzdXBwb3J0IGZvciBwaHlfdHlwZSBmaXh1cHMKLQotICAgIEN1cnJlbnRseSBVLUJvb3QgY2FuIG9ubHkgZml4dXAgdGhlIHVzYiBkcl9tb2RlLCBidXQgc29tZSBib2FyZHMgKG5hbWVseQotICAgIE1QQzgzMTVFLVJEQikgY2FuIHVzZSB0d28gUEhZIHR5cGVzOiBVTFBJIChzdGFuZC1hbG9uZSBPVEcgcG9ydCkgb3IgVVRNSQotICAgIChjb25uZWN0ZWQgdG8gdGhlIGZvdXItcG9ydHMgaHViLCB1c2IgaG9zdCBvbmx5KS4KLQotICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBzdXBwb3J0IGZvciBwYXNzaW5nIER1YWwtUm9sZSBVU0IgY29udHJvbGxlcidzCi0gICAgZGV2aWNlIHRyZWUgcHJvcGVydHkgcGh5X3R5cGUgdGhyb3VnaCB0aGUgdXNiX3BoeV90eXBlIGVudmlyb25tZW50Ci0gICAgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjk5ZjA1MTI1NTA5MjQ5MDcyYTBiODY1YzhkMzU1MjBkOTdjZDUwMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAxNSAyMjoyMjo0NCAyMDA4ICswMjAwCi0KLSAgICBQcmVwYXJlIHYxLjMuNC1yYzE6IENvZGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRywgc29ydCBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGJjYWI3NGJhYTZiMWIxYzk2OTAzOGFiNmY2NGExODYyMzkxODA0MDUKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglUdWUgSnVsIDE1IDExOjIzOjAyIDIwMDggLTA0MDAKLQotICAgIFJvdW5kIHRoZSBzZXJpYWwgcG9ydCBjbG9jayBkaXZpc29yIHZhbHVlIHJldHVybmVkIGJ5IGNhbGNfZGl2aXNvcigpCi0KLSAgICBSb3VuZCB0aGUgc2VyaWFsIHBvcnQgY2xvY2sgZGl2aXNvciB2YWx1ZSByZXR1cm5lZCBieQotICAgIGNhbGNfZGl2aXNvcigpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDAzMjhlZjBlZGZlOTUwZjBiN2I4YjM2OGRhZTQ4MjUzMTUwNmI3NGEKLUF1dGhvcjogUm9iaW4gR2V0eiA8cmdldHpAYmxhY2tmaW4udWNsaW51eC5vcmc+Ci1EYXRlOglUdWUgSnVsIDE1IDIxOjQ0OjQ2IDIwMDggKzAyMDAKLQotICAgIEZpeCBESENQIHByb3RvY29sIHNvIFUtQm9vdCBkb2VzIG5vdCByZXNwb25kIHRvbyBlYXJseQotICAgIG9uIHRoZSBuZXR3b3JrIHdpdGggaXQncyBvZmZlcmVkIElQIG51bWJlcjsgaXQgc2hvdWxkIG5vdCByZXBseSB1bnRpbAotICAgIGFmdGVyIGl0IGhhcyByZWNlaXZlZCBhIERIQ1AgQUNLIG1lc3NhZ2UuIEFsc28gZW5zdXJlcyB0aGF0IFUtQm9vdAotICAgIGRvZXMgaXQncyBESENQUkVRVUVTVCBhcyBicm9hZGNhc3QgKHBlciBSRkMgMjEzMSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2JpbiBHZXR6IDxyZ2V0ekBibGFja2Zpbi51Y2xpbnV4Lm9yZz4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNzI4OGY5NzJmY2FlZTE0YTk3NDFjYjA4Yzg2ODhhMjM4NzRiNGEyZQotQXV0aG9yOiBTZWJhc3RpYW4gU2lld2lvciA8YmlnZWFzeUBsaW51dHJvbml4LmRlPgotRGF0ZToJVHVlIEp1bCAxNSAxMzozNToyMyAyMDA4ICswMjAwCi0KLSAgICBjZmlfZmxhc2g6IG1ha2UgdGhlIGNvbW1hbmQgdTMyIG9ubHkKLQotICAgIFRoaXMgZ290IGNoYW5nZWQgYnkgY29tbWl0IDkzYzU2ZjIxMmMKLSAgICBbY2ZpX2ZsYXNoOiBzdXBwb3J0IG9mIGxvbmcgY21kIGluIFUtYm9vdC5dCi0KLSAgICBMb25nIGlzIHRoZSB3cm9uZyB0eXBlIGJlY2F1c2UgaXQgd2lsbCBiZWhhdmUgZGlmZmVyZW50bHkgb24gNjRiaXQKLSAgICBtYWNoaW5lcyBpbiBhIHdheSB0aGF0IGlzIHByb2JhYmx5IG5vdCBleHBlY3RlZC4gdTMyIHNob3VsZCBiZQotICAgIGVub3VnaC4KLQotICAgIENjOiBBbGV4ZXkgS29yb2xldiA8YWtvcm9sZXZAaW5mcmFkZWFkLm9yZz4KLSAgICBDYzogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgotICAgIFNpZ25lZC1vZmYtYnk6IFNlYmFzdGlhbiBTaWV3aW9yIDxiaWdlYXN5QGxpbnV0cm9uaXguZGU+Ci0KLWNvbW1pdCAzMWNmZTU3NDkxYjE4M2FjYWU1NzVkNDg2NzI5ZTE1OGYwMTZjMjdiCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gSnVsIDE0IDIzOjQ4OjQxIDIwMDggKzAyMDAKLQotICAgIHRvb2xzL2dpdGlnbm9yZTogdXBkYXRlIHRvIGFsbCBnZW5lcmF0ZWQgZmlsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA1ZTBkZTBlMjE2YjhmYjI3NjM0YWZiMTFjNjBhMmZhMjRjMjMzNDllCi1BdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLURhdGU6CVdlZCBKdWwgOSAxODozMDo0NCAyMDA4ICswMjAwCi0KLSAgICBtcGM1eHh4OiBBZGQgTVZCQ19QIGJvYXJkIHN1cHBvcnQKLQotICAgIFRoZSBNVkJDX1AgaXMgYSBNUEM1MjAwQiBiYXNlZCBjYW1lcmEgc3lzdGVtIHdpdGggSW50ZWwgR2lnYWJpdCBldGhlcm5ldAotICAgIGNvbnRyb2xsZXIgKHVzaW5nIGUxMDAwKSBhbmQgY3VzdG9tIEFsdGVyYSBDeWNsb25lLUlJIEZQR0Egb24gUENJLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGUyZDMxZmIzNDUwNjUzMTE1NDUyMTQ0MzYzZDViZGU0ZTVlM2U2OTMKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdW4gMTkgMTc6NTY6MTEgMjAwOCAtMDUwMAotCi0gICAgVXBkYXRlIEZyZWVzY2FsZSBzeXNfZWVwcm9tLmMgdG8gaGFuZGxlIENDSUQgZm9ybWF0cwotCi0gICAgVXBkYXRlIHRoZSBzeXNfZWVwcm9tLmMgZmlsZSB0byBoYW5kbGUgYm90aCBOWElEIGFuZCBDQ0lEIEVFUFJPTSBmb3JtYXRzLiAgVGhlCi0gICAgTlhJRCBmb3JtYXQgcmVwbGFjZXMgdGhlIG9sZGVyIENDSUQgZm9ybWF0LCBidXQgaXQncyBpbXBvcnRhbnQgdG8gc3VwcG9ydCBib3RoCi0gICAgc2luY2UgbW9zdCBib2FyZHMgb3V0IHRoZXJlIHN0aWxsIHVzZSB0aGUgQ0NJRCBmb3JtYXQuICBUaGlzIGNoYW5nZSBpcyBpbgotICAgIHByZXBhcmF0aW9uIGZvciB1c2luZyBvbmUgZmlsZSB0byBoYW5kbGUgYm90aCBmb3JtYXRzLiAgVGhpcyB3aWxsIGFsc28gdW5pZnkKLSAgICBFRVBST00gc3VwcG9ydCBmb3IgYWxsIEZyZWVzY2FsZSA4NXh4IGFuZCA4Nnh4IGJvYXJkcy4KLQotICAgIEFsc28gdXBkYXRlIHRoZSA4Nnh4IGJvYXJkIGhlYWRlciBmaWxlcyB0byB1c2UgdGhlIHN0YW5kYXJkIENGR19JMkNfRUVQUk9NX0FERFIKLSAgICBpbnN0ZWFkIG9mIElEX0VFUFJPTV9BRERSLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ4NWY0NmEyNWNjYjMzZWQ5YjI5NWRlM2MyY2ZlMWNlMjcwZWNlOWEKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJRnJpIEp1bCAxMSAxNzoyMjo0MyAyMDA4ICswOTAwCi0KLSAgICBwY2k6IHNoOiBBZGQgcGNpX3NraXBfZGV2IGFuZCBwY2lfcHJpbnRfZGV2IGZ1bmN0aW9uCi0KLSAgICBBZGQgZnVuY3Rpb24gb2YgbmV3IFBDSSwgcGNpX3NraXBfZGV2IGFuZCBwY2lfcHJpbnRfZGV2LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDExMDcwMTRlODM1ZWM5ZDQ2YzAzMzNmNDIxMWQxMDRmNzc0NDJkYjAKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCAxNCAyMDoyOTowNyAyMDA4IC0wNTAwCi0KLSAgICBDbGVhbiB1cCBJTklUX1JBTSBvcHRpb25zCi0KLSAgICBUaGUgTDJfSU5JVF9SQU0gb3B0aW9uIHdhcyB1bnVzZWQsIGFuZCByZWNlbnQgY2hhbmdlcyB0byB0aGUgVExCIGNvZGUKLSAgICBtZWFudCB0aGF0IHRoZSBJTklUX1JBTSBUTEJzIHdlcmVuJ3QgYmVpbmcgY2xlYXJlZCBvdXQuICBJbiBvcmRlciB0byByZWR1Y2UKLSAgICB0aGUgYW1vdW50IG9mIG1hcHBlZCBzcGFjZSBhdHRhY2hlZCB0byBub3RoaW5nLCB3ZSBjaGFuZ2UgdGhpbmdzIHNvIHRoZSBUTEJzCi0gICAgZ2V0IGNsZWFyZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0NTI0NTYxODIwYTkzMjdlODkxMDc4NTRiM2E3MTg3ODAwY2NmNzE5Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgMTQgMjA6MjY6NTcgMjAwOCAtMDUwMAotCi0gICAgUmVtb3ZlIGZha2UgZmxhc2ggYmFuayBmcm9tIDg1NDQgRFMKLQotICAgIFRoZSBmYWtlIGZsYXNoIGJhbmsgd2FzIGdlbmVyYXRpbmcgZXJyb3JzIGZvciBhbnlvbmUgd2hvIGRpZG4ndCBoYXZlIGEKLSAgICBQcm9tSkVUIGhvb2tlZCB1cCB0byB0aGUgYm9hcmQuICBBcyB0aGF0IGNvbnN0aXR1dGVzIHRoZSB2YXN0IG1ham9yaXR5IG9mCi0gICAgdXNlcnMsIHdlIHJlbW92ZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYzMGQ5YmZjYjVmNmQzYTQzZjI1MTkwMWE2YjQ4MDk5NGRjYjZlYTMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBKdWwgMTQgMTQ6MDc6MDMgMjAwOCAtMDUwMAotCi0gICAgTVBDODU0NERTOiBBZGQgQVRJIFZpZGVvIGNhcmQgc3VwcG9ydAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHVzaW5nIGEgUENJZSBBVEkgVmlkZW8gY2FyZCBvbiBQQ0llMi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3ZjlmNDM0N2NmMzI1YzYzYTM5ZmUzMDkxMGYzZmIyMTFhZTJjYzE1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gSnVsIDE0IDE0OjA3OjAyIDIwMDggLTA1MDAKLQotICAgIDg1eHg6IEFkZCBzb21lIEwxL0wyIFNQUiByZWdpc3RlciBkZWZpbml0aW9ucwotCi0gICAgQWRkIG5ldyBMMS9MMiBTUFJzIHJlbGF0ZWQgdG8gZTUwMG1jIGNhY2hlIGNvbmZpZyBhbmQgY29udHJvbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlNTg1Mjc4N2YwYzNjNDQyYTI3NjI2MmYxM2Q5MWNhNDUwNjA1YWMwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gSnVsIDE0IDE0OjA3OjAxIDIwMDggLTA1MDAKLQotICAgIE1QQzg1NDREUzogUmVwb3J0IGJvYXJkIGlkLCBib2FyZCB2ZXJzaW9uIGFuZCBmcGdhIHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNzNmMTVhMDYwZjY3YTI0NjI1NTFjMzM0MjE1YmQyMGZhYzZiODFkMQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEp1bCAxNCAxNDowNzowMCAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBDbGVhbnVwIEwyIGNhY2hlIHNpemUgZGV0ZWN0aW9uCi0KLSAgICBUaGUgTDIgc2l6ZSBkZXRlY3Rpb24gY29kZSB3YXMgYSBiaXQgY29uZnVzaW5nIGFuZCB3ZSBrZXB0IGhhdmluZyB0byBhZGQKLSAgICBjb2RlIHRvIGl0IHRvIGhhbmRsZSBuZXcgcHJvY2Vzc29ycy4gIENoYW5nZSB0aGUgc2Vuc2Ugb2YgZGV0ZWN0aW9uIHNvIHdlCi0gICAgbG9vayBmb3IgdGhlIG9sZGVyIHByb2Nlc3NvcnMgdGhhdCBhcmVuJ3QgY2hhbmdpbmcuCi0KLSAgICBBbHNvIGFkZGVkIHN1cHBvcnQgZm9yIDFNIGNhY2hlIHNpemUgb24gODU3Mi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjM2NhN2U1ZTAwYTI0NDUxZjIwZGYzYmRlZDlhNjFiYTU0MTkyMWRmCi1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJRnJpIEp1bCAxMSAxNTozMzowOCAyMDA4IC0wNDAwCi0KLSAgICBzYmM4NTYwOiBlbmFibGUgQ09ORklHX09GX0xJQkZEVCBieSBkZWZhdWx0Ci0KLSAgICBNYWtlIHRoZSBkZWZhdWx0IGJ1aWxkIGZvciB0aGUgc2JjODU2MCBib2FyZCBiZSBwb3dlcnBjCi0gICAgY2FwYWJsZSB3aXRoIGxpYmZkdCBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA2YjQ0YTQ0ZWMyYWFiMTgwZDcwOTVjMWM5MmU2NjljZWUxZDNlM2JkCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgMTQgMjA6MDQ6NDAgMjAwOCAtMDUwMAotCi0gICAgRml4IGluZGVudGF0aW9uIGZvciBkZWZhdWx0IGJvb3QgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0KLSAgICBUaGlzIHdhcyBwcm9wb3NlZCBieSBQYXVsIEdvcnRtYWtlciBpbiByZXNwb25zZSB0byBXb2xmZ2FuZydzIGNvbW1lbnRzIG9uCi0gICAgc2ltaWxhciAjZGVmaW5lcyBpbiBzYmM4NTYwLmguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzN2ZlZjQ5OTEwNGUyOGUwYTgzYjAyYjg1Y2EwZDFmYmU4MGQyOTRhCi1BdXRob3I6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotRGF0ZToJRnJpIEp1bCAxMSAxNTozMzowNyAyMDA4IC0wNDAwCi0KLSAgICBzYmM4NTYwOiBhZGQgZGVmYXVsdCBmZHQgdmFsdWVzCi0KLSAgICBBZGQgaW4gdGhlIGRlZmF1bHQgZmR0IHNldHRpbmdzIGFuZCB0aGUgdHlwaWNhbCBFWFRSQV9FTlYKLSAgICBzZXR0aW5ncyBhcyBib3Jyb3dlZCBmcm9tIHRoZSBtcGM4NTYwYWRzLiAgRml4IGEgY291cGxlCi0gICAgb2Ygc3RhbGUgcmVmZXJlbmNlcyB0byB0aGUgbXBjODU2MGFkcyBkYXRpbmcgYmFjayB0byB0aGUKLSAgICBvcmlnaW5hbCBjbG9uZS9mb3JrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDA0ZTc2ZWRmOTJmN2Y4OTY5Njk4OWU4NzAyYjk3ZTAyMDQ1NWFmMwotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBKdWwgMTEgMTU6MzM6MDYgMjAwOCAtMDQwMAotCi0gICAgc2JjODU2MDogYWRkIGluIGZ0X2JvYXJkX3NldHVwKCkKLQotICAgIEFkZCBpbiBmb3IgdGhlIHNiYzg1NjAsIHRoZSBmdF9ib2FyZF9zZXR1cCgpIHJvdXRpbmUsIGJhc2VkIG9uIHdoYXQgaXMKLSAgICBpbiB1c2UgZm9yIHRoZSBGcmVlc2NhbGUgTVBDODU2MEFEUyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgYzE1OGJjYWNhM2IzMWNiZTM4YzQxNDM4MTJlNjE3MGUzOGE1NzM5MwotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBKdWwgMTEgMTU6MzM6MDUgMjAwOCAtMDQwMAotCi0gICAgc2JjODU2MDogZGVmaW5lIGV0aDAgYW5kIGV0aDEgaW5zdGVhZCBvZiBldGgxIGFuZCBldGgyCi0KLSAgICBUaGUgZXhpc3RpbmcgY29uZmlnIGRvZXNuJ3QgZGVmaW5lIENPTkZJR19IQVNfRVRIMCwgYW5kIHNvIHRoZQotICAgIGZkdCBzdXBwb3J0IGRvZXNuJ3QgdXBkYXRlIHRoZSB6ZXJvcyBpbiB0aGUgZHRiIGxvY2FsLW1hYyB3aXRoCi0gICAgcmVhbCBkYXRhIGZyb20gdGhlIHUtYm9vdCBlbnYuICBTaW5jZSB0aGUgZXhpc3RpbmcgY29uZmlnIGlzCi0gICAgdGFpbG9yZWQgdG8ganVzdCB0d28gaW50ZXJmYWNlcywgZ2V0IHJpZCBvZiB0aGUgRVRIMiBkZWZpbml0aW9ucwotICAgIGF0IHRoZSBzYW1lIHRpbWUuCi0KLSAgICBBbHNvIGRvbid0IGluY2x1ZGUgYW55IGVuZCB1c2VyIHNwZWNpZmljIGRhdGEgaW50byB0aGUgZW52aXJvbm1lbnQKLSAgICBieSBkZWZhdWx0IC0tIHRoaW5ncyBsaWtlIE1BQyBhZGRyZXNzLCBuZXR3b3JrIHBhcmFtZXRlcnMgZXRjLiBuZWVkCi0gICAgdG8gY29tZSBmcm9tIHRoZSBlbmQgdXNlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBlYzQzNmQyZjk1MDc2ZDllNDZhZTU5NGRiNmU5YjFkODczMjg0MGQKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgSnVsIDExIDE1OjMzOjA0IDIwMDggLTA0MDAKLQotICAgIHNiYzg1NjA6IHByb3Blcmx5IHNldCBjczBfYm5kcyBmb3IgNTEyTUIKLQotICAgIFRoZSBzYmM4NTYwIGJvYXJkIHNoaXBzIHdpdGggNTEyTUIgb2YgbWVtb3J5IGluc3RhbGxlZCwKLSAgICBidXQgdGhlIGN1cnJlbnQgY3MwX2JuZHMgaXMgaGFyZCBjb2RlZCBmb3IgMjU2TUIuICBTZXQgdGhlCi0gICAgdmFsdWUgYmFzZWQgb24gQ0ZHX1NEUkFNX1NJWkUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDZkZTViZjI0MDA0YzhkOWM5YjA3MGJiOGY3NDE4ZDFjNDVlNWViMjcKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglGcmkgSnVsIDExIDE1OjMzOjAzIDIwMDggLTA0MDAKLQotICAgIHNiYzg1NjA6IHByb3BlciBkZWZpbml0aW9ucyBmb3IgVFNFQy4KLQotICAgIFRoZSBkZWZpbml0aW9ucyBmb3IgdGhlIFRTRUMgaGF2ZSBiZWNvbWUgb3V0IG9mIGRhdGUuICBUaGVyZSBpcyBubwotICAgIGxvbmdlciBhbnkgc3VjaCBvcHRpb25zIGxpa2UgIkNPTkZJR19NUEM4NXh4X1RTRUMxIiBvciBzaW1pbGFyLgotICAgIFVwZGF0ZSB0byBtYXRjaCB0aG9zZSBvZiBvdGhlciBib2FyZHMsIGxpa2UgdGhlIE1QQzg1NjBBRFMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDcxMDc0YWJiZTBjNzY0Mjk1NzdhZmY1OGFlZmYwYTI0YWQyMTBiMjMKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglXZWQgSnVsIDkgMTM6MjM6MDUgMjAwOCAtMDQwMAotCi0gICAgOHh4eC1mZHQ6IHNldCBuczE2NTUwIGNsb2NrIGZyb20gQ0ZHX05TMTY1NTBfQ0xLLCBub3QgYmlfYnVzZnJlcQotCi0gICAgU29tZSBib2FyZHMgdGhhdCBoYXZlIGV4dGVybmFsIDE2NTUwIFVBUlRzIGRvbid0IGhhdmUgYSBkaXJlY3QKLSAgICB0aWUgYmV0d2VlbiBiaV9idXNmcmVxIGFuZCB0aGUgY2xvY2sgdXNlZCBmb3IgdGhlIFVBUlRzLiAgQm9hcmRzCi0gICAgdGhhdCBkbyBoYXZlIHN1Y2ggYSB0aWUgc2hvdWxkIHNldCBDRkdfTlMxNjU1MF9DTEsgdG8gYmUKLSAgICBnZXRfYnVzX2ZyZXEoMCkgLS0gd2hpY2ggbW9zdCBvZiB0aGVtIGRvIGFscmVhZHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI0ZWY3NmYzMjBmYmFkZjA3NDEwNTIyOTgyNjUxNGRiMTQwZjkzOWYKLUF1dGhvcjogQW5kcmV3IEtsb3NzbmVyIDxhbmRyZXdAY2VzYS5vcGJ1Lnhlcm94LmNvbT4KLURhdGU6CVdlZCBKdWwgMiAwNzowMzo1MyAyMDA4IC0wNzAwCi0KLSAgICBDaGFuZ2UgdGhlIHRlbXAgbWFwIHRvIFJPTSB0byBhbGlnbiBhZGRyZXNzZXMgdG8gcGFnZSBzaXplLgotCi0gICAgV2l0aCBhIHBhZ2Ugc2l6ZSBvZiBCT09LRV9QQUdFU1pfMTZNLCBib3RoIHRoZSByZWFsIGFuZCBlZmZlY3RpdmUKLSAgICBhZGRyZXNzZXMgbXVzdCBiZSBtdWx0aXBsZXMgb2YgMTZNQi4gIFRoZSBoYXJkd2FyZSBzaWxlbnRseSB0cnVuY2F0ZXMKLSAgICB0aGVtIHNvIHRoZSBjb2RlIGhhcHBlbnMgdG8gd29yay4gIFRoaXMgcGF0Y2ggY2xhcmlmaWVzIHRoZSBzaXR1YXRpb24KLSAgICBieSBlc3RhYmxpc2hpbmcgYWRkcmVzc2VzIHRoYXQgdGhlIGhhcmR3YXJlIGRvZXNuJ3QgbmVlZCB0byB0cnVuY2F0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDZiNDE4NmMxMDIwNGI2NjgzZWRiMDQ3YWM1ZjUwNmZiMGNlMDkzNwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1biAxNyAxNzo0NToyMiAyMDA4IC0wNTAwCi0KLSAgICBtcGM4NXh4OiB1c2UgSVNfRV9QUk9DRVNTT1IgbWFjcm8KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2YjcwZmZiOWQxYjJlNzkxMTYxZjNjZjkyOTM3YWE0NWI0YTA3Yjc4Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVuIDE2IDE1OjU1OjUzIDIwMDggLTA1MDAKLQotICAgIGZkdDogYWRkIGNyeXB0byBub2RlIGhhbmRsaW5nIGZvciBNUEM4ezMsIDV9eHhFIHByb2Nlc3NvcnMKLQotICAgIERlbGV0ZSB0aGUgY3J5cHRvIG5vZGUgaWYgbm90IG9uIGFuIEUtcHJvY2Vzc29yLiAgSWYgb24gODM2MCBvciA4MzR4IGZhbWlseSwKLSAgICBjaGVjayByZXYgYW5kIHVwLXJldiBjcnlwdG8gbm9kZSAodG8gU0VDIHJldi4gMi40IHByb3BlcnR5IHZhbHVlcykKLSAgICBpZiBvbiBhbiAnRUEnIHByb2Nlc3NvciwgZS5nLiBNUEM4MzQ5RUEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODVlNTgwOGU4ZWE5Zjc3ZGE1MjE5ZjIzMzk0MTEyZjBiNDI0ZmE1ZQotQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLURhdGU6CUZyaSBKdWwgMTEgMTU6MTA6MTEgMjAwOCAtMDQwMAotCi0gICAgQVJNIERhVmluY2k6IFJlbW92ZSBleHRlcm4gcGh5X3QgZGVjbGFyYXRpb24gYnkgbW92aW5nIGNvZGUgdG8gcHJvcGVyIHBsYWNlCi0KLSAgICBBUk0gRGFWaW5jaTogUmVtb3ZlIGV4dGVybiBwaHlfdCBkZWNsYXJhdGlvbiBieSBtb3ZpbmcKLSAgICBjb2RlIHRvIHByb3BlciBwbGFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotCi1jb21taXQgM2E5ZTdiYTJhYzE0MDE4YzVkZDFlNzhhN2RkNzM1NTcxNTY5Yzk3MQotQXV0aG9yOiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLURhdGU6CUZyaSBKdWwgMTEgMTU6MTA6MTAgMjAwOCAtMDQwMAotCi0gICAgQVJNIERhVmluY2k6IFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgTUFDSF9UWVBFIGFuZCBwcm90b3R5cGUgb2YgaTJjX2luaXQoKQotCi0gICAgQVJNIERhVmluY2k6IFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgb2YgTUFDSF9UWVBFCi0gICAgYW5kIHByb3RvdHlwZSBvZiBpMmNfaW5pdCgpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0KLWNvbW1pdCAzNDg3NTNkNDE2Y2QyYzllN2VjNjUyMGE1NDRjOGYzM2NmMDJhNTYwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gSnVsIDE0IDE0OjAzOjAyIDIwMDggLTA1MDAKLQotICAgIEZpeCBzb21lIG1vcmUgcHJpbnRmKCkgZm9ybWF0IHByb2JsZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ1YjE2ZDIyYzY0Njc0Y2NkOGM0NjM3NDU2YTk4NzQ2MzYwOTE0MWMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBKdWwgMTQgMjI6Mzg6NDIgMjAwOCArMDIwMAotCi0gICAgRml4IGNvZGluZyBzdHlsZTsgbWFrZSBjb2RlIGJldHRlciBwYXJzYWJsZSBieSBleHRlcm5hbCB0b29scwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGI4ODBjYmYyMDdiMWMxMDlkM2E2NjE0MTdhOGZlZGRjYmQ3MjlhOWQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBKdWwgMTQgMjE6MTk6MDggMjAwOCArMDIwMAotCi0gICAgY3B1L2kzODYvc2VyaWFsLmM6IEZpeCBzeW50YXggZXJyb3JzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTJkNDVlNmY0ZDk5MTllMWFmZWFjNWUwOTU1N2IyMjUyODMyZmNjZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAxNCAyMDo0MTozNSAyMDA4ICswMjAwCi0KLSAgICBlbHBwYyBib2FyZDogQ29kaW5nIHN0eWxlIGNsZWFudXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgODJiMjRhOGE1MDVmYzgxNDY2NDg0YjNjNTViNTc0ZWUwYjQyMDViYwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAxNCAyMDo0MDoyMiAyMDA4ICswMjAwCi0KLSAgICBlbHBwYyBib2FyZDogZml4IHN5bnRheCBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwZmUzNDA1ODVhNmE0OGJkMzkyZDMxNWIwZGQ4NGQwNjhiMWMzNzkwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDE0IDIwOjM4OjI2IDIwMDggKzAyMDAKLQotICAgIEVCK01DRi1FVjEyMyBib2FyZDogZml4IGNvZGluZyBzdHlsZSAoYWxpbmdtZW50KQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDY4NDE3ODVhMGJiMGYzODE3NTQ1NmE5MjNlZGQ2MzRmYjdkZDY5NDcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBKdWwgMTQgMjA6MzY6NDQgMjAwOCArMDIwMAotCi0gICAgRUIrTUNGLUVWMTIzIGJvYXJkOiBmaXggc3ludHggZXJyb3IKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhYjVjZGE5Zjg4YzNlYWY5Y2Y1OTlhZGMzYTMzNzU5MDZjNGVkOTA0Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgNyAxODowMjowOCAyMDA4IC0wNTAwCi0KLSAgICBSZW1vdmUgTEJDX0NBQ0hFX0JBU0UgZnJvbSA4NTQ0IERTCi0KLSAgICBUaGUgODU0NCBEUyBkb2Vzbid0IGhhdmUgYW55IGNhY2hlYWJsZSBMb2NhbCBCdXMgbWVtb3JpZXMgc2V0IHVwLiAgQnkgbWFwcGluZwotICAgIHNwYWNlIGZvciBzb21lIGFueXdheSwgd2Ugd2VyZSBhbGxvd2luZyBzcGVjdWxhdGl2ZSBsb2FkcyBpbnRvIHVubWFwcGVkIHNwYWNlLAotICAgIHdoaWNoIHdvdWxkIGNhdXNlIGFuIGV4Y2VwdGlvbiAoYW5ub3lpbmcsIGV2ZW4gaWYgdWx0aW1hdGVseSBoYXJtbGVzcykuCi0gICAgUmVtb3ZpbmcgTEJDX0NBQ0hFX0JBU0UsIGFuZCB1c2luZyBMQkNfTk9OQ0FDSEVfQkFTRSBmb3IgdGhlIExCQyBMQVcgc29sdmVzIHRoZQotICAgIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkMGZmNTFiYTVkMDMwOWRiZTllMjVlYTU0ZjhhMDI4NWE2ZDVkYjkwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDE0IDE1OjE5OjA3IDIwMDggKzAyMDAKLQotICAgIENvZGUgY2xlYW51cDogZml4IG9sZCBzdHlsZSBhc3NpZ25tZW50IGFtYmlndWl0aWVzIGxpa2UgIj0tIiBldGMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZDc4NTQyMjNjNWM4NWI1ODQ5ZmJmNDIyY2M4YWMwZWZlZjQ2MWMzNwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAxNCAxNToxMDo1MyAyMDA4ICswMjAwCi0KLSAgICBBbWlnYU9uZUczU0U6IHJlbW92ZSBkZWFkIGFuZCBpbmNvbXBsZXRlIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYjY0ZjE5MGI3YTM0MjI0ZGYwOWI1NTljYTExMWViMWI3MzNmMDBhZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAxNCAxNTowNjozNSAyMDA4ICswMjAwCi0KLSAgICBGaXggcHJpbnRmKCkgZm9ybWF0IGlzc3VlcyB3aXRoIHNpemVvZl90IHR5cGVzIGJ5IHVzaW5nICV6dQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZjM1NGI3M2UxNmE4NmY5ZTkwODU0NzFhODMwNjA1Zjc0Zjg0ZWE1ZAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIEp1bCAxNCAxNDoxMTo0NSAyMDA4ICswMjAwCi0KLSAgICB2c3ByaW50ZjogYWRkIHogYW5kIHQgb3B0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDI1ZGJlOThhYmI2ODZkODIxMGUxNzMxZmJhODVjZWQ3ZDNjZTg3NGMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdWwgMTMgMjM6MDc6MzUgMjAwOCArMDIwMAotCi0gICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgaXNzdWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQ1OTk2ZGQ1NTVlZGY1MjcyMWI3NjkxYTRjNTlkZTAxNjI1MWVkMzkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKdWwgMTMgMTk6NTE6MDAgMjAwOCArMDIwMAotCi0gICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgcHJvYmxlbXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMGY5ZDVmNmQ2ZTgxNDkwNzc5NDk5NWM2YTIyYWY3NTIwNDBjMzVkOQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1bCAxMyAxOTo0ODoyNiAyMDA4ICswMjAwCi0KLSAgICBBRFM1MTIxOiBGaXggKGRlbGV0ZSkgaW5jb3JyZWN0IGFkczUxMjFfZGl1X2luaXQoKSBwcm90b3R5cGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzMjI3MTZhMWQxZWIzM2E3MTA2N2JhMGViMWM1MzQ2ZmIyZGQ2YjM0Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVNhdCBKdWwgMTIgMTc6MzE6MzYgMjAwOCArMDIwMAotCi0gICAgRml4IGJ1ZyBpbiBMaW1lIHZpZGVvIGRyaXZlcgotCi0gICAgV2UgbmVlZCB0byB3YWl0IHdoaWxlIGRyYXdpbmcgZW5naW5lIGNsZWFycyBmcmFtZQotICAgIGJ1ZmZlciBiZWZvcmUgYW55IGZ1cnRoZXIgc29mdHdhcmUgYWNjZXNzZXMgdG8gZnJhbWUKLSAgICBidWZmZXIgd2lsbCBiZSBpbml0aWF0ZWQuIE90aGVyd2lzZSBzb2Z0d2FyZSBkcmF3bgotICAgIHBhcnRzIGNvdWxkIGJlIHBhcnRpYWxseSBkZXN0cm95ZWQgYnkgdGhlIGRyYXdpbmcKLSAgICBlbmdpbmUgb3IgZXZlbiBHREMgY2hpcCBmcmVlemUgY291bGQgb2NjdXIgKGFzCi0gICAgb2JzZXJ2ZWQgb24gc29jcmF0ZXMgYm9hcmQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgMGE1Njc2YmVmYjBjNTkwMjEyYTUzZjc2MjdmYTVkMGQ4YTg0YmYzNAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEp1bCAxMiAxNDozNjozNCAyMDA4ICswMjAwCi0KLSAgICBGaXggc29tZSBtb3JlIHByaW50ZigpIGZvcm1hdCBpc3N1ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMThjOGEyOGFhZDQ5ODAzNzgwYmQ4ZDUyNDMyZGVkNTI4ZTM3ZTcwMQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgSnVsIDExIDE1OjExOjU3IDIwMDggKzAyMDAKLQotICAgIGh3bW9uOiByZW5hbWUgQ09ORklHX0RTMTcyMiB0byBDT05GSUdfRFRUX0RTMTcyMgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZWNiYjQ1YmIwMjdlOTBjMTlkNjNiNDhlN2IwYzA1YWNjMWE4N2MwCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBKdWwgMTEgMTE6NTA6NTMgMjAwOCArMDIwMAotCi0gICAgaHdtb246IENsZWFuaW5nIGh3bW9uIGRldmljZXMKLQotICAgIENsZWFuIE1ha2VmaWxlCi0gICAgTW92ZSBkZXZpY2Ugc3BlY2lmaWMgdmFsdWVzIHRvIGRyaXZlciBmb3IgYmV0dGVyIHJlYWRpbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzc4ZmNlNjk5YzdmZjQ2N2VjZDg0MWRhNmE3OWYwNjUxODBiZjU3OAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgSnVsIDExIDEwOjQzOjEzIDIwMDggKzAyMDAKLQotICAgIEZJUzogcmVwYXJlIGluY29ycmVjdCByZXR1cm4gdmFsdWUgd2l0aCByYW1kaXNrIGhhbmRsaW5nCi0KLSAgICBNaWNyb2JsYXplIGFuZCBQb3dlclBDIHVzZSBib290X2dldF9yYW1kaXNrIGZvciBsb2FkaW5nCi0gICAgcmFtZGlzayB0byBtZW1vcnkgd2l0aCBjaGVja2luZyByZXR1cm4gdmFsdWUuCi0gICAgUmV0dXJuIDAgbWVhbnMgc3VjY2Vzcy4gUmV0dXJuIDEgbWVhbnMgZmFpbGVkLgotICAgIEhlcmUgaXMgY29ycmVzcG9uZCBwYXJ0IG9mIGNvZGUgZnJvbSBib290bS5jIHdoaWNoIGNoZWNrCi0gICAgcmV0dXJuIGNvZGUuCi0KLSAgICByZXQgPSBib290X2dldF9yYW1kaXNrIChhcmdjLCBhcmd2LCBpbWFnZXMsIElIX0FSQ0hfUFBDLAotCQkmcmRfZGF0YV9zdGFydCwgJnJkX2RhdGFfZW5kKTsKLSAgICBpZiAocmV0KQotCWdvdG8gZXJyb3I7Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA4NGEyYzY0YTI2ZGM1ZTI3NWUxY2Y0ZTc2YTZlMTk0YTE4ZmI1NDc3Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBKdWwgMTEgMTA6MTA6MzIgMjAwOCArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogUmVtb3ZlIHVzZWxlc3MgYW5jaWVudCBoZWFkZXJzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA1M2VhOTgxYzMxMjRiMTNjMTM3YzJkMTBlOTc1YjdjNjY3MjI2NmUwCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBKdWwgMTEgMTA6MTA6MzEgMjAwOCArMDIwMAotCi0gICAgbWljcm9ibGF6ZTogQ2xlYW4gdWFydGxpdGUgZHJpdmVyCi0KLSAgICBSZWRlc2lnbiB1YXJ0bGl0ZSBkcml2ZXIgdG8gaW5fYmUzMiBhbmQgb3V0X2JlMzIgbWFjcm9zCi0gICAgRml4IG1pc3NpbmcgaGVhZGVyIGluIGlvLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLSAgICBBY2tlZC1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgZGJmM2RmYjM4NmEyZDVkMjM4MTgxNGUzOTk4NWFiMmUyMTg5NDU1MAotQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci1EYXRlOglGcmkgSnVsIDExIDAyOjM5OjE0IDIwMDggKzAyMDAKLQotICAgIEVuYWJsZSBwYXNzaW5nIG9mIEFUQUdzIHJlcXVpcmVkIGJ5IGxhdGVzdCBMaW51eCBrZXJuZWwuCi0KLWNvbW1pdCBlZjEzMGQzMDkzYmRmODhmMDFjZjNlMDAwZmU1ZGYyNDllYmYyYjFhCi1BdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotRGF0ZToJRnJpIEp1bCAxMSAxMDoyNDoxNSAyMDA4IC0wNDAwCi0KLSAgICBGaXggaW50ZWdlciBvdmVyZmxvdyB3YXJuaW5nIGluIGNhbGNfZGl2aXNvcigpCi0KLSAgICB3aGljaCBoYXBwZW5lZCB3aGVuIHJvdW5kaW5nIHRoZSBzZXJpYWwgcG9ydCBjbG9jayBkaXZpc29yCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLQotY29tbWl0IDZiNzYwMTg5ZDc3ZjAwMTY4NGUzMTYwYjM1NWMxODVjYTM4MDQ5NjEKLUF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgotRGF0ZToJRnJpIEp1bCAxMSAwMTowOTo1OSAyMDA4ICswMjAwCi0KLSAgICBGaXggYnVpbGQgdGltZSB3YXJuaW5ncyBpbiBmdW5jdGlvbiBtbWNfZGVjb2RlX2NzZCgpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCBjMTU5NDdkNmNlMGQ1OTkyNWM5N2ZkZmFjNjkyNDc2YWY2ZTI2MmQwCi1BdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotRGF0ZToJVGh1IEp1bCAxMCAxMDo0NjozMyAyMDA4IC0wNDAwCi0KLSAgICBBUk06IEZpeCBmb3IgYnJva2VuIGNvbXBpbGF0aW9uIHdoZW4gZGVmaW5pbmcgQ09ORklHX0NNRF9FTEYKLQotICAgIGNhdXNlZCBieSBtaXNzaW5nIGRjYWNoZSBzdGF0dXMvZW5hYmxlL2Rpc2FibGUgZnVuY3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0KLWNvbW1pdCAwNjhjMWI3N2M4ZjQyYTFhMzEwODRkMmY0YjFkNWNjODA3YzFhOWNlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMTAgMTM6NTM6MzEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgcmVkdW5kYW50IGZ0X2JvYXJkX3NldHVwKCkgZnVuY3Rpb25zIGZyb20gc29tZSA0eHggYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgc29tZSBmdF9ib2FyZF9zZXR1cCgpIGZ1bmN0aW9ucyBmcm9tIHNvbWUgNHh4IGJvYXJkcy4KLSAgICBUaGlzIGNhbiBiZSBkb25lIHNpbmNlIHdlIG5vdyBoYXZlIGEgZGVmYXVsdCB3ZWFrIGltcGxlbWVudGF0aW9uIGZvciB0aGlzCi0gICAgaW4gY3B1L3BwYzR4eC9mZHQuYy4gT25seSBib2FyZCBpbiBuZWVkIGZvciBhIGRpZmZlcmVudC9jdXN0b20KLSAgICBpbXBsZW1lbnRhdGlvbiBsaWtlIGNhbnlvbmxhbmRzIG5lZWQgdGhlaXIgb3duIHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkMzlhMDg5ZjhiYzk2MGJhOWFlNmEwOGZkYTU1ODJiNTc4NjIwY2MxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDEzIDE0OjU4OjE2IDIwMDggKzAyMDAKLQotICAgIEFkZCBsYXN0IGtub3duIG1haW50YWluZXIgZm9yIG9ycGhhbmVkIGJvYXJkczsgcmVmb3JtYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNWM3NjFkNTdiYjk5NDBlMDE2ZDU2MWZkYThiMmVkODRjNTVkZTViNgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgSnVsIDEwIDEzOjE2OjA0IDIwMDggKzAyMDAKLQotICAgIFJlbW92ZSBraGFycmlzQG5leHVzLXRlY2gubmV0IGZyb20gTUFJTlRBSU5FUlMKLQotICAgIE1haWwgdG8ga2hhcnJpc0BuZXh1cy10ZWNoLm5ldCBib3VuY2VzIGJlY2F1c2UgdGhlIHVzZXIgZG9lc24ndCBleGlzdAotICAgIGFueW1vcmUuIFlvdSBjYW4ndCBiZSBhIG1haW50YWluZXIgd2l0aG91dCBhIHZhbGlkIGUtbWFpbCBhZGRyZXNzLCBzbwotICAgIG1vdmUgYWxsIGJvYXJkcyB0aGF0IHVzZWQgdG8gYmUgbWFpbnRhaW5lZCBieSBLeWxlIEhhcnJpcyB0byB0aGUKLSAgICAib3JwaGFuZWQiIGxpc3QuCi0KLSAgICBDdXJyZW50bHksIG9ubHkgUG93ZXJQQyBoYXMgYSBsaXN0IG9mIG9ycGhhbmVkIGJvYXJkcywgc28gdGhpcyBwYXRjaAotICAgIGNyZWF0ZXMgb25lIGZvciBBUk0gYXMgd2VsbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDE3YmQxNzA3MTQ2M2IwY2RlMzkxYWM0YTA4NjNkNjAwNDc0YjRlYTEKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAxMCAwMToxNToxMCAyMDA4ICswMjAwCi0KLSAgICBhdDkxOiBGaXggdG8gZW5hYmxlIHVzaW5nIFRlcmlkaWFuIE1JSSBwaHkgKDc4UTIxeDMpIHdpdGggYXQ5MXNhbTkyNjAKLQotICAgIE9uIHRoZSBhdDkxc2FtOTI2MGVwIGRldmVsb3BtZW50IGJvYXJkIHRoZXJlIGlzIGFuIEVFUFJPTQotICAgIGNvbm5lY3RlZCB0byB0aGUgVFdJIGludGVyZmFjZSAoUEEyMywgUEEyNCBQZXJpcGhlcmFsIEEKLSAgICBtdWx0aXBsZXhpbmcpLCBzbyB3ZSBjYW5ub3QgdXNlIHRoZXNlIHBpbnMgYXMgRVRYMiwgRVRYMy4KLSAgICBUaGlzIHBhdGNoIGNvbmZpZ3VyZXMgUEExMCwgUEExMSBwaW5zIGZvciBFVFgyLCBFVFgzCi0gICAgaW5zdGVhZCBvZiBQQTIzLCBQQTI0IHBpbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWFudWVsIFNhaG0gPE1hbnVlbC5TYWhtQGZlaWcuZGU+Ci0KLWNvbW1pdCBmODg5MjY1NzUzZGRmNDQ2NWQ5ZDU4MDgyN2JiOTI4OWJmYWM1NWQ2Ci1BdXRob3I6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KLURhdGU6CVNhdCBKdWwgMTIgMTM6MTg6MzQgMjAwOCAtMDYwMAotCi0gICAgZml4IERJVSBmb3Igc21hbGwgc2NyZWVucwotCi0gICAgVGhlIERJVV9ESVYgcmVnaXN0ZXIgaXMgOCBiaXQgbm90IDUgYml0LiBUaGlzIHByZXZlbnRlZCBsYXJnZSBESVYgdmFsdWVzCi0gICAgc28gaXQgd2FzIG5vdCBwb3NzaWJsZSB0byBzZXQgYSBzbG93IHBpeGVsIGNsb2NrIGFuZCB0aHVzIHByZXZlbnRlZAotICAgIGRpc3BsYXkgb24gc21hbGwgc2NyZWVucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KLSAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNjBiODU3Mzg3NWU2NTBlNGM2OWJlNjY3YmZjODhkM2VkNDc0YTdjCi1BdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCAxMSAxNDo0NDowOSAyMDA4IC0wNjAwCi0KLSAgICBBRFM1MTIxIGNsZWFudXAgY29tcGlsZSB3YXJuaW5ncwotCi0gICAgYm9hcmQvYWRzNTEyMS9pb3Bpbi5jCi0JUmVwbGFjZSBiaXQgZmllbGRzIGluIHN0cnVjdCBpb3Bpbl90IHdpdGggYSBzaW5nbGUKLQlmaWVsZCBhbmQgaW50aWFsaXplIGl0IHZpYSBwbGFpbiBvbGQgbWFjcm9zLgotCVRoaXMgZml4ZXMgdGhlIHR5cGUgcHVuIHdhcm5pbmdzIGFuZCBtYWtlcyB0aGUgY29kZQotCW1vcmUgcmVhZGFibGUuCi0KLSAgICBib2FyZC9hZHM1MTIxL2FkczUxMjEuYwotCUFkZCBpbmNsdWRlIGlvcGluLmggdG8gYWRzNTEyMS5jIGZvciB0aGUgaW9waW5faW5pdGlhbGl6ZQotCXByb3RvdHlwZS4KLQotCUFkZCBhbiBleHRlcm4gdm9pZCBhZHM1MTIxX2RpdV9pbml0KHZvaWQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJkZTYzNTg3NjIyYzRiODMwYTI3ZDFkZGY3MjY1ODQzZGU5ZTk5NGYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgMTEgMjI6NTY6MTEgMjAwOCArMDIwMAotCi0gICAgRml4IHNvbWUgbW9yZSBwcmludGYoKSBmb3JtYXQgaXNzdWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDE4NGYxYjQwNGE5MGVlZjhiNDI1YzBlN2IzMDE4ZDU5ZWY5OTgyYzgKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgMTEgMjI6NTU6MzEgMjAwOCArMDIwMAotCi0gICAgRml4ZWQgc29tZSBvdXQtb2YtdHJlZSBidWlsZCBpc3N1ZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0N2JmOWM3MWFlODM4MzA1YTNlYTMxNjFhZjhkMTRlNmYzZmMyYzgyCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVsIDkgMTY6MjA6MjMgMjAwOCAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBGQiBDUyBub3Qgc2V0dXAgcHJvcGVybHkgZm9yIE1jZjUyODIKLQotICAgIFJlbW92ZSBhbGwgQ0ZHX0NTbl9STyBpbiBjcHUvbWNmNTJ4Mi9jcHVfaW5pdC5jLiBJZgotICAgIENGR19DU25fUk8gaXMgZGVmaW5lZCBhcyAwLCB0aGUgY2hpcHNlbGVjdCB3aWxsIG5vdAotICAgIGJlIGFzc2lnbmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJjM2NjYjEzOWYwODM2ZjBhODM0Y2ZkMzcwYTEyMGEwMGFkN2U2M2EKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAxNTo0NzoyNyAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IGluY29ycmVjdCBkZWZpbmUgZm9yIG1jZjUyMjd4IGFuZCBtY2Y1NDQ1eCBSVEMKLQotICAgIFJlbmFtZSBDT05GSUdfTUNGVE1SIHRvIENPTkZJR19NQ0ZSVEMgdG8gaW5jbHVkZSByZWFsIHRpbWUKLSAgICBjbG9jayBtb2R1bGUgaW4gY3B1LzxjZiBhcmNoPi9jcHVfaW5pdC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjk0OTQ1YjUxN2YxMGUwMTkyNzEwMTY3OWM2MjM2MWUwM2Q0ZTgzNwotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCA5IDE1OjI1OjAxIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggaW5jb3JyZWN0IGJvYXJkIG5hbWUgaW4gTUFLRUFMTCBmb3IgTTUyNTNFVkJFCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGUwYzQzNTdkMTRhMzU2M2M2YTJhMWU2ZDVhZDZhMmNjNGYzNWNhYgotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCA5IDE1OjIxOjQ0IDIwMDggLTA1MDAKLQotICAgIEZpeCBjb21waWxlIGVycm9yIGNhdXNlZCBieSBtaXNzaW5nIHRpbWVyIGZ1bmN0aW9uCi0KLSAgICBBZGQgI2RlZmluZSBDT05GSUdfTUNGVE1SIGluIEVCK01DRi1FVjEyMy5oIGNvbmZpZ3VyYXRpb24gZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGMzN2VhMDMxMTc1YjgwN2M1NGU2YmFkOWIyNzBlOWJlZGU2YzAwNzgKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAxNToxNDoyNSAyMDA4IC0wNTAwCi0KLSAgICBGaXggY29tcGlsZSBlcnJvciBjYXVzZWQgYnkgaW5jb3JyZWN0IGZ1bmN0aW9uIHJldHVybiB0eXBlCi0KLSAgICBSZW5hbWUgaW50IG1paV9pbml0KHZvaWQpIHRvIHZvaWQgbWlpX2luaXQodm9pZCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhYjQ4NjBiMjU1MjM5ZGJhZWNjY2RkMDAyYzhkMTFmNGVmNTRkZDc1Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDE4IDE5OjI3OjIzIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggcG93ZXIgdXAgaXNzdWUgZm9yIE1DRjUyMzUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkZDA4ZTk3MzYxZmJjOWU3OWZhNWVmMWE4YWNmMjkyNzNiOTM0YjExCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDE4IDE5OjE5OjA3IDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggY29tcGlsaW5nIGVycm9yIGZvciBNQ0Y1Mjc1Ci0KLSAgICBUaGUgY29tcGlsaW5nIGVycm9yIHdhcyBjYXVzZWQgYnkgbWlzc2luZyBhIGNsb3NlZCBwYXJlbnRoZXNlcwotICAgIGluIHNwZWVkLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5NDYwM2MyZmQ0ZGJlMDY1NTg3ODQxNmFhMGRhOWYzMDJkNGMzMGQzCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDE4IDE5OjE0OjAxIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggdGltZXIgaXNzdWUgZm9yIE1DRjUyNzIKLQotICAgIFRoZSB0aW1lciB3YXMgYXNzaWduZWQgdG8gd3JvbmcgdGltZXIgbWVtb3J5IG1hcHBlZCB3aGljaAotICAgIGNhdXNlZCB1ZGVsYXkoKSBhbmQgdGltZXIoKSBub3Qgd29ya2luZyBwcm9wZXJseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzYjFlOGFjOWI0M2Y4OWNjOTI5MWE2YTg2ZTZiMzNlZjU1ODAxNTE1Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDE4IDE5OjEyOjEzIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBDaGFuZ2UgaW52YWxpZCBKTVAgdG8gQlJBIGNhdWdodCBieSBuZXcgdjRlIHRvb2xjaGFpbgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VydCBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4MzcxZGMyMDY2MTM2YmUyMWUxMGI3YjkyOTNlNDY5Mjk3ZDc3Mjk4Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDE4IDE5OjA1OjIzIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBBZGQgLWdvdD1zaW5nbGUgcGFyYW0gZm9yIG5ldyBsaW51eCB2NGUgdG9vbGNoYWlucwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VydCBNYWhhbiA8a21haGFuQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1NmQ1MjYxNWNkNDdiYzUyMmVlMTNiYjdlYzdlNTlkNmNlOTQyNmM3Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDE4IDEzOjIxOjE5IDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBGaXggY29kZSBmbGFzaCBjb25maWd1cmF0aW9uIGZvciBNNTQ3eC9NNTQ4eCBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1cnQgTWFoYW4gPGttYWhhbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNmUzNzA5MWFmYzA3ZmRjYzE1NTkwMDkzZmQwNjZiMGNiNzM5OWY4NQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1biAyNCAxMjoxMjoxNiAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IHdhcm5pbmcgbWVzc2FnZXMgYnkgcGFzc2luZyBjb3JyZWN0IGRhdGEgdHlwZSBpbiBib2FyZC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODFjYzMyMzIyYWNiMWIzMjI1ZWU0NTYwNmNlZDQ4ZTJhMTQ4MjRkYwotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1heSAyOSAxMjoyMTo1NCAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IFVBUlQgYmF1ZHJhdGUgZm9ybXVsYQotCi0gICAgVGhlIGZvcm11bGEgImNvdW50ZXIgPSAodTMyKSAoZ2QtPmJ1c19jbGsgLyBnZC0+YmF1ZHJhdGUpIC8gMzIiCi0gICAgY2FuIGdlbmVyYXRlIHRoZSB3cm9uZyBkaXZpc29yIGR1ZSB0byBpbnRlZ2VyIGRpdmlzaW9uIHRydW5jYXRpb24uCi0gICAgUm91bmQgdGhlIGNhbGN1bGF0ZWQgZGl2aXNvciB2YWx1ZSBieSBhZGRpbmcgMS8yIHRoZSBiYXVkcmF0ZQotICAgIGJlZm9yZSBkaXZpZGluZyBieSB0aGUgYmF1ZHJhdGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgYjU3OGZiNDcxNDQ0Y2JkN2RiMTI4NTcwMWJhNTEzNDNiYWFmNzNmYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDEwIDExOjM4OjI2IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGluY2x1ZGUgc2VxdWVuY2UgaW4gNHh4X3BjaWUuYwotCi0gICAgVGhpcyBwYXRjaCBub3cgbW92ZXMgY29tbW9uLmggdG8gdGhlIHRvcCBvZiB0aGUgaW5sY3VkZSBsaXN0LiBUaGlzCi0gICAgaXMgbmVlZGVkIGZvciBib2FyZHMgd2l0aCBDT05GSUdfUEhZU182NEJJVCBzZXQgKGUuZy4ga2F0bWFpKSwgc28gdGhhdAotICAgIHRoZSBwaHlzX3NpemVfdC9waHlzX2FkZHJfdCBhcmUgZGVmaW5lZCB0byB0aGUgY29ycmVjdCBzaXplIGluIHRoaXMKLSAgICBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2OWUyYzZkMGQxM2Q3YzhjZjE2MTJhYzA5MGJkYzRjNTliYTY4NThlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgMTEgMTM6MTA6NTYgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggY29tcGlsZSB3YXJuaW5nIGluIDQ0eF9zcGRfZGRyMi5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2YmQ5MTM4NDk4YzJlNGY0ZjA5MTkwMTA4Yjk5MTU3ZDFiMjE0MGI1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgMTEgMTE6NDA6MTMgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggc21hbGwga29yYXQgbWVyZ2UgcHJvYmxlbQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMWQwNTU0NzM2YTBhMWRkNTk3MThhY2RhNjYwODcxY2U1NmI2OWUxOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDExIDExOjM0OjUyIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogU29tZSBSZXdvb2QgY2xlYW51cHMgKGNvZGluZyBzdHlsZSwgbGVhZGluZyB3aGl0ZSBzcGFjZXMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzYTgyMTEzZWQ1OTM0ZDQ5OGYyNTA4MDQ0MWE4MjYxZmM5NDU0YjE1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMTAgMTY6Mzc6MDkgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgNDYwU1ggVUlDIGRlZmluZXMKLQotICAgIE9ubHkgdGhlIHJlYWxseSBuZWVkZWQgb25lcyBhcmUgYWRkZWQgKGNhc2NhZGluZyBhbmQgRU1BQy9NQUwpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjYxNzNmYzZmNjA1MjFjMmE4MDcyZjY1MmY4NjM2MTdmYzExYmE5YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVuIDMwIDE0OjExOjA3IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ29udGludWUgY2xlYW51cCBvZiBwcGM0NDAuaAotCi0gICAgVGhpcyBwYXRjaCBjb250aW51ZXMgdGhlIHBwYzQ0MC5oIGNsZWFudXAgYnkgcmVtb3Zpbmcgc29tZSBvZiB0aGUgdW51c2VkCi0gICAgZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGQ5MDU2Yjc5MTNlZDZhMjI4ZDJmMzM2NzFkOTE2ZWZlZGVlNTQxZGQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1biAzMCAxNDowNTowNSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IENsZWFudXAgS2F0bWFpICYgWXVjY2EgUENJZSByZWdpc3RlciB1c2FnZQotCi0gICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgdGhlIDQ0MFNQZSBQQ0llIHJlZ2lzdGVyIHVzYWdlLiBOb3cgb25seSBkZWZpbmVzCi0gICAgZnJvbSB0aGUgaW5jbHVkZS9hc20tcHBjLzR4eF9wY2llLmggYXJlIHVzZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZGU4NTE0MDNiMDE0ODliNDkzZmE4MzEzN2FkOTkwYjhjZTYwZDFjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gMjYgMTc6MzY6MzkgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBSZXdvcmsgNDQwR1ggVUlDIGhhbmRsaW5nCi0KLSAgICBUaGlzIHBhdGNoIHJld29ya3MgdGhlIDQ0MEdYIGludGVycnVwdCBoYW5kbGluZyBzbyB0aGF0IHRoZSBjb21tb24gNHh4Ci0gICAgY29kZSBjYW4gYmUgdXNlZC4gVGhlIDQ0MEdYIGlzIGFuIGV4Y2VwdGlvbiB0byBhbGwgb3RoZXIgNHh4IHZhcmlhbnRzCi0gICAgYnkgaGF2aW5nIHRoZSBjYXNjYWRpbmcgaW50ZXJydXB0IHZlY3RvcnMgbm90IG9uIFVJQzAgYnV0IG9uIGEgc3BlY2lhbAotICAgIFVJQyBuYW1lZCBVSUNCMCAoVUlDIEJhc2UgMCkuIFdpdGggdGhpcyBwYXRjaCBub3csIFUtQm9vdCByZWZlcmVuY2VzCi0gICAgdGhlIDQ0MEdYIFVJQ0IwIHdoZW4gVUlDMCBpcyBzZWxlY3RlZC4gQW5kIHRoZSBjb21tb24gNHh4IGludGVycnVwdAotICAgIGhhbmRsaW5nIGlzIHNpbXBsZXIgd2l0aG91dCBhbnkgNDQwR1ggc3BlY2lhbCBjYXNlcy4KLQotICAgIEFsc28gc29tZSBhZGRpdGlvbmFsIGNsZWFudXAgdG8gY3B1L3BwYzR4eC9pbnRlcnJ1cHQuYyBpcyBkb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDE2MzFmZTFhMDViMDYzY2NhZjYyZWE4OTJhODg4N2I4Mjk4NDdkMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVuIDI2IDEzOjQwOjU3IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ29uc29saWRhdGUgUFBDNHh4IFVJQyBkZWZpbmVzCi0KLSAgICBUaGlzIDJuZCBwYXRjaCBub3cgcmVtb3ZlcyBhbGwgVUlDIG1hc2sgYml0IGRlZmluaXRpb24uIFRoZXkgc2hvdWxkIGJlCi0gICAgZ2VuZXJhdGVkIGZyb20gdGhlIHZlY3RvcnMgYnkgdXNpbmcgdGhlIFVJQ19NQVNLKCkgbWFjcm8gZnJvbSBub3cgb24uCi0gICAgVGhpcyB3YXkgb25seSB0aGUgdmVjdG9ycyBuZWVkIHRvIGdldCBkZWZpbmVkIGZvciBuZXcgUFBDJ3MuCi0KLSAgICBBbHNvIG9ubHkgdGhlIHJlYWxseSB1c2VkIGludGVycnVwdCB2ZWN0b3JzIGFyZSBub3cgZGVmaW5lZC4gVGhpcyBtYWtlcwotICAgIGRlZmluaXRpb25zIGZvciBuZXcgUFBDIHZlcnNpb25zIGVhc2llciBhbmQgbGVzcyBlcnJvciBwcm9uZS4KLQotICAgIEFub3RoZXIgcGFydCBvZiB0aGlzIHBhdGNoIGlzIHRoYXQgdGhlIDR4eCBlbWFjIGRyaXZlciBnb3QgYSBsaXR0bGUKLSAgICBjbGVhbnVwLCBzaW5jZSBub3cgdGhlIHVzYWdlIG9mIHRoZSBpbnRlcnJ1cHRzIGlzIGNsZWFyZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZmIyNWEzZGIzYjM4MzkwOTRhYTlhYjc0OGVmZDdhOTU5MjQ2OTBiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKdW4gMjUgMTA6NTk6MjIgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDb25zb2xpZGF0ZSBQUEM0eHggVUlDIGRlZmluZXMKLQotICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHN0ZXAgdG8gY29uc29saWRhdGUgdGhlIFVJQyByZWxhdGVkIGRlZmluZXMgaW4gdGhlCi0gICAgNHh4IGhlYWRlcnMuIE1vdmUgaGVhZGVyIGZyb20gYXNtLXBwYy9wcGM0eHgtaW50dmVjLmggdG8KLSAgICBhc20tcHBjL3BwYzR4eC11aWMuaCBhcyBpdCB3aWxsIGhvbGQgYWxsIFVJQyByZWxhdGVkIGRlZmluZXMgaW4gdGhlIG5leHQKLSAgICBzdGVwcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDdlZTI2MTljMjBjY2VjZDU3OTY2ZDc0ZDg0NGU2MzI5ZTE0MTI2MWMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1biAyNCAxNzoxODo1MCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IENvbnNvbGlkYXRlIFBQQzR4eCBFQkMgZGVmaW5lcwotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIGFsbCBFQkMgcmVsYXRlZCBkZWZpbmVzIGZyb20gdGhlIFBQQzR4eCBoZWFkZXJzCi0gICAgcHBjNDA1LmggYW5kIHBwYzQ0MC5oIGFuZCBpbnRyb2R1Y2VzIGEgbmV3IGhlYWRlcgotCi0gICAgaW5jbHVkZS9hc20tcHBjL3BwYzR4eC1lYmMuaAotCi0gICAgd2l0aCBhbGwgdGhvc2UgZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGUzMjE4MDFiZWQ1YTZkODk2ZDI5OGMwMGZkMjAwNDZmMDM5ZDVkNjYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAxMCAxMzo1Mjo0NCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSByZWR1bmRhbnQgZnRfYm9hcmRfc2V0dXAoKSBmdW5jdGlvbnMgZnJvbSBzb21lIDR4eCBib2FyZHMKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIGZ0X2JvYXJkX3NldHVwKCkgZnVuY3Rpb25zIGZyb20gc29tZSA0eHggYm9hcmRzLgotICAgIFRoaXMgY2FuIGJlIGRvbmUgc2luY2Ugd2Ugbm93IGhhdmUgYSBkZWZhdWx0IHdlYWsgaW1wbGVtZW50YXRpb24gZm9yIHRoaXMKLSAgICBpbiBjcHUvcHBjNHh4L2ZkdC5jLiBPbmx5IGJvYXJkIGluIG5lZWQgZm9yIGEgZGlmZmVyZW50L2N1c3RvbQotICAgIGltcGxlbWVudGF0aW9uIGxpa2UgY2FueW9ubGFuZHMgbmVlZCB0aGVpciBvd24gdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDA4MjUwZWIyZWRiZDk2NTE0ZDA0OTYwMmQ5ZTEzNDExMGFjMzE4NWYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAxMCAxNTozMjozMiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBtZXJnZSBwcm9ibGVtcyBpbiA0NHhfc3BkX2RkcjIuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTc0MGMxYmY0MGUzYzZkMDNhYzE2YzI5OTQzZmRkOWZjMWU4NzAzOAotQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotRGF0ZToJVHVlIEp1bCA4IDA4OjM1OjAwIDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogQWRkIE1JSSBtb2RlIHN1cHBvcnQgdG8gdGhlIEVNQUMgUkdNSUkgQnJpZGdlCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgcGxhY2luZyB0aGUgUkdNSUkgYnJpZGdlIG9uIHRoZQotICAgIFBQQzQwNUVYKHIpIGludG8gTUlJL0dNSUkgbW9kZSBhbmQgYWxsb3dzIGEgYm9hcmQtc3BlY2lmaWMKLSAgICBjb25maWd1cmF0aW9uIHRvIHNwZWNpZnkgdGhlIGJyaWRnZSBtb2RlIGF0IGNvbXBpbGUtdGltZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmUyMDUwODQyZTczMWM4MjNjZThkNDFmYjBjMTU1NzllYjcwY2VkOQotQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotRGF0ZToJV2VkIEp1bCA5IDE2OjQ2OjM1IDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogQWRkIE1uZW1vbmljcyBmb3IgQU1DQy9JQk0gRERSMiBTRFJBTSBDb250cm9sbGVyCi0KLSAgICBUaGlzIHBhdGNoIGNvbXBsZXRlcyB0aGUgcHJlcHJvY2Vzc29yIG1uZW9taWNzIGZvciB0aGUgSUJNIEREUjIgU0RSQU0KLSAgICBjb250cm9sbGVyIHJlZ2lzdGVycyAoTU9EVCBhbmQgSU5JVFBMUikgdXNlZCBieSB0aGUKLSAgICBQb3dlclBDNDA1RVgocikuIFRoZSBNTU9ERSBhbmQgTUVNT0RFIHJlZ2lzdGVycyBhcmUgdW5pZmllZCB3aXRoIHRoZWlyCi0gICAgcGVlciB2YWx1ZXMgdXNlZCBmb3IgdGhlIElOSVRQTFIgTVIgYW5kIEVNUiByZWdpc3RlcnMsCi0gICAgcmVzcGVjdGl2ZWx5LiBGaW5hbGx5LCBhIHNwZWxsaW5nIHR5cG8gaXMgY29ycmVjdCAoTUFOVUVMIHRvIE1BTlVBTCkuCi0KLSAgICBXaXRoIHRoZXNlIG1uZW1vbmljcyBpbiBwbGFjZSwgdGhlIENGR19TRFJBTTBfKiBtYWdpYyBudW1iZXJzIGZvcgotICAgIEtpbGF1ZWEgYXJlIHJlcGxhY2VkIGJ5IGVxdWl2YWxlbnQgbW5lbW9uaWNzIHRvIG1ha2UgaXQgZWFzaWVyIHRvCi0gICAgY29tcGFyZSBhbmQgY29udHJhc3Qgb3RoZXIgNDA1RVgociktYmFzZWQgYm9hcmRzIChlLmcuIGR1cmluZyBib2FyZAotICAgIGJyaW5nLXVwKS4KLQotICAgIEZpbmFsbHksIHVuaWZpZWQgdGhlIFNEUkFNIGNvbnRyb2xsZXIgcmVnaXN0ZXIgZHVtcCByb3V0aW5lIHN1Y2ggdGhhdAotICAgIGl0IGNhbiBiZSB1c2VkIGFjcm9zcyBhbGwgcHJvY2Vzc29yIHZhcmlhbnRzIHRoYXQgdXRpbGl6ZSB0aGUgSUJNIEREUjIKLSAgICBTRFJBTSBjb250cm9sbGVyIGNvcmUuIEl0IHByb2R1Y2VzIG91dHB1dCBvZiB0aGUgZm9ybToKLQotCVBQQzR4eCBJQk0gRERSMiBSZWdpc3RlciBEdW1wOgotCQkuLi4KLQkJU0RSQU1fTUIwQ0ZbNDBdID0gMHgwMDAwNjcwMQotCQkuLi4KLQotICAgIHdoaWNoIGlzICc8bW5lbW9uaWM+WzxEQ1IgIz5dID0gPHZhbHVlPicuIFRoZSBEQ1IgbnVtYmVyIGlzIGluY2x1ZGVkCi0gICAgc2luY2UgaXQgaXMgbm90IHVuY29tbW9uIHRoYXQgdGhlIERDUiB2YWx1ZXMgaW4gaGVhZGVyIGZpbGVzIGdldCBtaXhlZAotICAgIHVwIGFuZCBpdCBoZWxwcyB0byB2YWxpZGF0ZSwgYXQgYSBnbGFuY2UsIHRoZXkgbWF0Y2ggd2hhdCBpcyBwcmludGVkCi0gICAgaW4gdGhlIHVzZXIgbWFudWFsLgotCi0gICAgVGVzdGVkIG9uOgotICAgICAgQU1DQyBLaWxhdWVhL0hhbGVha2FsYToKLSAgICAgIC0gTkZTIExpbnV4IEJvb3Q6IFBBU1NFRAotICAgICAgLSBOQU5EIExpbnV4IEJvb3Q6IFBBU1NFRAotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhZDczODJkODI4OTgyZTljMWJhZmM0MzEzZWYxYjY2NmY2MTQ1ZjU4Ci1BdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci1EYXRlOglXZWQgSnVsIDkgMTY6MzE6NTkgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBBZGQgQU1DQy9JQk0gRERSMiBTRFJBTSBFQ0MgRmllbGQgTW5lbW9uaWNzCi0KLSAgICBBZGQgYWRkaXRpb25hbCBERFIyIFNEUkFNIG1lbW9yeSBjb250cm9sbGVyIERDUiBtbmVvbW5pY3MsIGNvbmRpdGlvbgotICAgIHJldmlzaW9uIElEIERDUiBiYXNlZCBvbiA0MDVFWCwgYW5kIGFkZCBmaWVsZCBtbmVtb25pY3MgZm9yIGJ1cyBlcnJvcgotICAgIHN0YXR1cyBhbmQgRUNDIGVycm9yIHN0YXR1cyByZWdpc3RlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDEwMzIwMTczMWJkOGU4NTQwNGQwZjUxYTViNGU4YWJkMTRjMGI2YzYKLUF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAxNjozMTozNiAyMDA4IC0wNzAwCi0KLSAgICBwcGM0eHg6IEFkZCBTRFIwX1NSU1QgTW5lbW9uaWNzIGZvciB0aGUgNDA1RVgocikKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiaXQgZmllbGQgbW5lbW9uaWNzIGZvciB0aGUgNDA1RVgocikgU0RSMF9TUlNUIHNvZnQgcmVzZXQgcmVnaXN0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDViNDU3ZDAwNzMwZDRhYTBjNjQ1MGQyMWE5MTA0NzIzZTYwNmZiOTgKLUF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAxMTo1NTo0NiAyMDA4IC0wNzAwCi0KLSAgICBQUEM0eHg6IENvcnJlY3QgU0RSQU1fTUNTVEFUIGZvciBQUEM0MDVFWChyKQotCi0gICAgV2hpbGUgdGhlIFBvd2VyUEMgNDA1RVgocikgc2hhcmVzIGluIGNvbW1vbiB0aGUgQU1DQy9JQk0gRERSMiBTRFJBTQotICAgIGNvbnRyb2xsZXIgY29yZSBhbHNvIHVzZWQgaW4gdGhlIDQ0MFNQLCA0NDBTUGUsIDQ2MEVYLCBhbmQgNDYwR1QsIGluCi0gICAgdGhlIDQwNUVYKHIpLCBTRFJBTV9NQ1NUQVQgaGFzIGEgZGlmZmVyZW50IERDUiB2YWx1ZS4KLQotICAgIEl0cyBwcmVzZW50IHZhbHVlIG9uIHRoZSA0MDVFWChyKSBjYXVzZXMgYSByZWFkIGJhY2sgb2YgMHhGRkZGRkZGRgotICAgIHdoaWNoIGNhdXNlcyBTRFJBTSBpbml0aWFsaXphdGlvbiB0byBwZXJpb2RpY2FsbHkgZmFpbCBzaW5jZSBpdCBjYW4KLSAgICBwcmVtYXR1cmVseSBpbmRpY2F0ZSBTRFJBTSByZWFkeSBzdGF0dXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDBjZTVjODY3NWJiMmM2MWYxZDcxZmI5N2YwYmJlODIyNjYzZmI5M2QKLUF1dGhvcjogRmVuZyBLYW4gPGZrYW5AYW1jYy5jb20+Ci1EYXRlOglUdWUgSnVsIDggMjI6NDg6NDIgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBJbml0aWFsIGZyYW1ld29yayBvZiB0aGUgQU1DQyBQUEM0NjBTWCByZWR3b29kIHJlZmVyZW5jZSBib2FyZC4KLQotICAgIEFkZCBBTUNDIFJlZHdvb2QgcmVmZXJlbmNlIGJvYXJkIHRoYXQgdXNlcyB0aGUgbGF0ZXN0Ci0gICAgUFBDIDQ2NCBDUFUgcHJvY2Vzc29yIGNvbWJpbmVkIHdpdGggYSByaWNoIG1peCBvZiBwZXJpcGhlcmFsCi0gICAgY29udHJvbGxlcnMuIFRoZSBib2FyZCB3aWxsIHN1cHBvcnQgUENJZSwgbXV0aXBsZSBHaWcgZXRoZXJuZXQKLSAgICBwb3J0cywgYWR2YW5jZWQgaGFyZHdhcmUgUkFJRCBhc3Npc3RhbmNlIGFuZCBJRUVFIDE1ODguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5NmU1ZmMwZTZhMTg2MWQwZmVhNGVmYTNjZDM3NmRmOTVhNWIxYjg5Ci1BdXRob3I6IEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgotRGF0ZToJVHVlIEp1bCA4IDIyOjQ4OjA3IDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogQWRkIGluaXRpYWwgNDYwU1ggcmVmZXJlbmNlIGJvYXJkIChyZWR3b29kKSBjb25maWcgZmlsZSBhbmQgZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEZlbmcgS2FuIDxma2FuQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDdkMzA3OTM2ODVlZmNhZGExODM4OTFjNzhmYzg5MmU2YzliYTUwYzcKLUF1dGhvcjogRmVuZyBLYW4gPGZrYW5AYW1jYy5jb20+Ci1EYXRlOglUdWUgSnVsIDggMjI6NDc6MzEgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBBZGQgaW5pdGlhbCA0NjBTWCBkZWZpbmVzIGZvciB0aGUgY3B1L3BwYzR4eCBkaXJlY3RvcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBGZW5nIEthbiA8ZmthbkBhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5YjU1YTI1MzY5MTlmNGRlMWJiMTA0NGU2ZWI4MjYyYzJmNTNiYzk2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDExIDAxOjE2OjAwIDIwMDggKzAyMDAKLQotICAgIEZpeCBzb21lIG1vcmUgcHJpbnQoKSBmb3JtYXQgZXJyb3JzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGZkZDcwZDE5MjFiODcyODdkOWE5OWQxYmU5OWJjMzUyMjZjMmI0MTIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBKdWwgMTAgMjA6NTc6NTQgMjAwOCArMDIwMAotCi0gICAgTUFLRUFMTDogcmVtb3ZlIGR1cGxpY2F0ZWQgYXQ5MSBmcm9tIEFSTTkgbGlzdCBhbmQgYWRkIExJU1RfYXQ5MSB0byBhcm0KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBjNjQ1N2UzYjhiYzc5YTk3MzgxY2Y3ZGVmZmEwOGY3YzVhMjRmODZjCi1BdXRob3I6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgotRGF0ZToJVGh1IEp1biA1IDExOjA2OjI5IDIwMDggKzA0MDAKLQotICAgIERhdGFGbGFzaCBBVDQ1REIwMjEgc3VwcG9ydAotCi0gICAgU29tZSBib2FyZHMgYmFzZWQgb24gQVQ5MVNBTTkyNlgtRUsgdXNlIHNtYWxsZXIgREYgY2hpcHMgdG8ga2VlcAotICAgIGJvb3RzdHJhcCwgdS1ib290IGFuZCBpdHMgZW52aXJvbm1lbnQsIHVzaW5nIE5BTkQgb3Igb3RoZXIgZXh0ZXJuYWwKLSAgICBzdG9yYWdlIGZvciBrZXJuZWwgYW5kIHJvb3Rmcy4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yCi0gICAgc21hbGwgMTAyNHgyNjMgY2hpcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBMYXBpbiA8c2xhcGluQG9zc2ZhbnMub3JnPgotCi1jb21taXQgNDEwOWRmNmY3NWZjMDBhYjdkYTU2ZDI4NmJhNTAxNDlhMGQxNmE2OQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCAxMCAxNDowMDoxNSAyMDA4IC0wNTAwCi0KLSAgICBzaWxlbmNlIG1pc2MgcHJpbnRmIGZvcm1hdHRpbmcgY29tcGlsZXIgd2FybmluZ3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzZDcxYzgxYTliYjAzZjg2NmExZTk4ZGE5NjM2M2VmM2Y0NmM3NmIzCi1BdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDEwIDE0OjQ3OjA5IDIwMDggKzAyMDAKLQotICAgIFVTQjogc2h1dGRvd24gVVNCIGJlZm9yZSBib290aW5nCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcG90ZW50aWFsbHkgc2VyaW91cyBpc3N1ZSByZWxhdGVkIHRvIFVTQiB3aGljaCB3YXMKLSAgICBkaXNjb3V2ZXJlZCBieSBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4gYW5kIGZpeGVkIGZvcgotICAgIEFSTTkyMFQuIE1hcnRpbiB3cm90ZToKLQotICAgICAgVHVybiBvZmYgVVNCIHRvIHByZXZlbnQgdGhlIGhvc3QgY29udHJvbGxlciBmcm9tIHdyaXRpbmcgdG8gdGhlCi0gICAgICBTRFJBTSB3aGlsZSBMaW51eCBpcyBib290aW5nLiBUaGlzIGNvdWxkIGhhcHBlbiwgYmVjYXVzZSB0aGUgSENDQQotICAgICAgKEhvc3QgQ29udHJvbGxlciBDb21tdW5pY2F0aW9uIEFyZWEpIGxpZXMgd2l0aGluIHRoZSBTRFJBTSBhbmQgdGhlCi0gICAgICBob3N0IGNvbnRyb2xsZXIgd3JpdGVzIGNvbnRpbm91c2x5IHRvIHRoaXMgYXJlYSAoYXMgYnVzbWFzdGVyISksIGZvcgotICAgICAgZXhhbXBsZSB0byBpbmNyZWFzZSB0aGUgSGNjYUZyYW1lTnVtYmVyIHZhcmlhYmxlLCB3aGljaCBoYXBwZW5zCi0gICAgICBldmVyeSAxIG1zLgotCi0gICAgVGhpcyBpcyBhIHNsaWdodGx5IG1vZGlmaWVkIHZlcnNpb24gb2YgdGhlIHBhdGNoIGluIG9yZGVyIHRvIHNodXRkb3duCi0gICAgVVNCIHdoZW4gYm9vdGluZyBvbiBhbGwgYXJjaGl0ZWN0dXJlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBmMzFjNDlkYjJhNWUwNzZmNDE1YzA3ODVlYjM3ZjY3ZjJmYWE1ZmM4Ci1BdXRob3I6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KLURhdGU6CVRodSBNYXkgMjkgMTQ6MjM6MjUgMjAwOCAtMDQwMAotCi0gICAgQ29uZmlndXJhdGlvbiBjaGFuZ2VzIGZvciBBRFM1MTIxIFJldiAzCi0KLSAgICBBRFM1MTIxIFJldiAzIGJvYXJkIGlzIG5vdyB0aGUgZGVmYXVsdCBjb25maWcKLQotICAgIGNvbmZpZyB0YXJnZXRzIGFyZSBub3cKLQotICAgIGFkczUxMjFfY29uZmlnCi0JUmV2IDMgYm9hcmQgd2l0aAotCVBDSQotCU00MVQ2MiBvbiBib2FyZCBSVEMKLQk1MTJNQiBEUkFNCi0KLSAgICBhZHM1MTIxX3JldjJfY29uZmlnCi0JUmV2IDIgYm9hcmQgd2l0aAotCU5vIFBDSQotCTI1Nk1CIERSQU0KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRoYSBNYXJ4IDxtbWFyeEBzaWxpY29udGt4LmNvbT4KLSAgICBBY2tlZC1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE2YmVlN2IwZGMyOTRlZTAxY2EyNDM0YWExZGQzYmQ3MTdhNjk2MTUKLUF1dGhvcjogTWFydGhhIE1hcnggPG1tYXJ4QHNpbGljb250a3guY29tPgotRGF0ZToJVGh1IE1heSAyOSAxNTozNzoyMSAyMDA4IC0wNDAwCi0KLSAgICBDb25zb2xpZGF0ZSBBRFM1MTIxIElPIFBpbiBjb25maWd1cmF0aW9uCi0KLSAgICBDb25zb2xpZGF0ZSBBRFM1MTIxIElPIFBpbiBjb25maWd1cmF0aW9uIHRvIG9uZSBmaWxlCi0gICAgYm9hcmQvYWRzNTEyMS9pb3Bpbi5jLgotCi0gICAgUmVtb3ZlIHBpbiBjb25maWcgZnJvbSBjcHUvbXBjNTEyeC9mZWMuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGhhIE1hcnggPG1tYXJ4QHNpbGljb250a3guY29tPgotICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0gICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDQ2OTJiMGJhODNiN2I0NTRiYmQ5MmJhZDFmNGJlZmU2ZTE2NTdiNwotQXV0aG9yOiBDaHJpc3RpYW4gRWdnZXJzIDxjaHJpc3RpYW5AcDI0MDAud2duZXR6Lnh4PgotRGF0ZToJRnJpIEp1biAyNyAxOTo0Njo1MSAyMDA4ICswMjAwCi0KLSAgICBGaXggInVzYiBwYXJ0IiBjb21tYW5kCi0KLSAgICBPbmx5IHByaW50IHBhcnRpdGlvbiBmb3Igc2VsZWN0ZWQgZGV2aWNlIGlmIHVzZXIgc3VwcGxpZWQgdGhlIDxkZXY+Ci0gICAgYXJnIHdpdGggdGhlICJ1c2IgcGFydCBbZGV2XSIgY29tbWFuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgotICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgY2M4M2IyNzIxN2Y3MzgwMDQxZmVhMzg2ZGRiNmQ2ZDliMjYxNjE3ZAotQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAZ251bW9ua3Mub3JnPgotRGF0ZToJTW9uIEp1bCA3IDAwOjU4OjA1IDIwMDggKzA4MDAKLQotICAgIGZpeCBVU0IgZGV2aWNlcyB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGJ1Z3MgaW4gdXNiZGNvcmUqLmMgcmVsYXRlZCB0byB0aGUgdXNlIG9mIGRldmljZXMKLSAgICB3aXRoIG11bHRpcGxlIGNvbmZpZ3VyYXRpb25zLgotCi0gICAgVGhlIG9yaWdpbmFsIGNvZGUgbWFkZSBtaXN0YWtlcyBhYm91dCB0aGUgbWVhbmluZyBvZiBjb25maWd1cmF0aW9uIHZhbHVlIGFuZAotICAgIGNvbmZpZ3VyYXRpb24gaW5kZXgsIGFuZCB0aGUgcmVzdWx0aW5nIG9mZi1ieS1vbmUgZXJyb3JzIHJlc3VsdGVkIGluOgotCi0gICAgKiBTRVRfQ09ORklHVVJBVElPTiBhbHdheXMgc2VsZWN0ZWQgdGhlIGZpcnN0IGNvbmZpZ3VyYXRpb24sIG5vIG1hdHRlciB3aGF0Ci0gICAgICB3VmFsdWUgaXMgYmVpbmcgcGFzc2VkLgotICAgICogR0VUX0RFU0NSSVBUT1IvQ09ORklHVVJBVElPTiBhbHdheXMgcmV0dXJuZWQgdGhlIGRlc2NyaXB0b3IgZm9yIHRoZSBmaXJzdAotICAgICAgY29uZmlndXJhdGlvbiAoaW5kZXggMCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgotICAgIEFja2VkLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgMDZjNTNiZWFlMWE3MjZlNzA3OTcxYzU1NTYxM2YwOWIyNzBhMjQ2MQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAxMCAxMzoxNjowOSAyMDA4ICswMjAwCi0KLSAgICBGaXggc29tZSBtb3JlIHByaW50KCkgZm9ybWF0IGVycm9ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkNGI1ZjNmYTAwMTIyOGQ3NmUyYzMzODBjZWRhZGY4MDRiODAyYzJhCi1BdXRob3I6IENocmlzdGlhbiBFZ2dlcnMgPGNocmlzdGlhbkBwMjQwMC53Z25ldHoueHg+Ci1EYXRlOglGcmkgSnVuIDI3IDE5OjQ2OjUxIDIwMDggKzAyMDAKLQotICAgIEZpeCAidXNiIHBhcnQiIGNvbW1hbmQKLQotICAgIE9ubHkgcHJpbnQgcGFydGl0aW9uIGZvciBzZWxlY3RlZCBkZXZpY2UgaWYgdXNlciBzdXBwbGllZCB0aGUgPGRldj4KLSAgICBhcmcgd2l0aCB0aGUgInVzYiBwYXJ0IFtkZXZdIiBjb21tYW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEVnZ2VycyA8Y2VnZ2Vyc0BnbXguZGU+Ci0gICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBlNzNiNTIxMmUwNDYzYTNkYjBhZjBhNWM5NWM3NWJmYjc2MmNhOTczCi1BdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBnbnVtb25rcy5vcmc+Ci1EYXRlOglNb24gSnVsIDcgMDA6NTg6MDUgMjAwOCArMDgwMAotCi0gICAgZml4IFVTQiBkZXZpY2VzIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYnVncyBpbiB1c2JkY29yZSouYyByZWxhdGVkIHRvIHRoZSB1c2Ugb2YgZGV2aWNlcwotICAgIHdpdGggbXVsdGlwbGUgY29uZmlndXJhdGlvbnMuCi0KLSAgICBUaGUgb3JpZ2luYWwgY29kZSBtYWRlIG1pc3Rha2VzIGFib3V0IHRoZSBtZWFuaW5nIG9mIGNvbmZpZ3VyYXRpb24gdmFsdWUgYW5kCi0gICAgY29uZmlndXJhdGlvbiBpbmRleCwgYW5kIHRoZSByZXN1bHRpbmcgb2ZmLWJ5LW9uZSBlcnJvcnMgcmVzdWx0ZWQgaW46Ci0KLSAgICAqIFNFVF9DT05GSUdVUkFUSU9OIGFsd2F5cyBzZWxlY3RlZCB0aGUgZmlyc3QgY29uZmlndXJhdGlvbiwgbm8gbWF0dGVyIHdoYXQKLSAgICAgIHdWYWx1ZSBpcyBiZWluZyBwYXNzZWQuCi0gICAgKiBHRVRfREVTQ1JJUFRPUi9DT05GSUdVUkFUSU9OIGFsd2F5cyByZXR1cm5lZCB0aGUgZGVzY3JpcHRvciBmb3IgdGhlIGZpcnN0Ci0gICAgICBjb25maWd1cmF0aW9uIChpbmRleCAwKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Ci0gICAgQWNrZWQtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBlODcwNjkwYmRjYTE1NDk0M2VjYWRkNTIxMmQyZDU5YzFiOWQzOTFiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMTAgMTA6MTA6NTQgMjAwOCArMDIwMAotCi0gICAgTVREL05BTkQ6IEZpeCBwcmludGYgZm9ybWF0IHdhcm5pbmcgaW4gbmFuZCBjb2RlCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIE5BTkQgcmVsYXRlZCBwcmludGYgZm9ybWF0IHdhcm5pbmcuIFRob3NlIHdhcm5pbmdzIGFyZQotICAgIG5vdyB2aXNpYmxlIHNpbmNlIHBhdGNoIGRjNGIwYjM4ZDRhYWRmMDg4MjZmNmMzMTI3MGYxZWVjZDI3OTY0ZmQKLSAgICBbRml4IHByaW50ZiBlcnJvcnMuXSBieSBBbmRyZXcgS2xvc3NuZXIgaGFzIGJlZW4gYXBwbGllZC4gVGhhbmtzLCB0aGlzIGlzCi0gICAgcmVhbGx5IGhlbHBmdWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMDk0M2M5YWZhMjU2OTRiZDk5OTk0NjFmNGU5ZTUwY2UyMmZmZjJiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgMTAgMTA6MDA6NDUgMjAwOCArMDIwMAotCi0gICAgcnRjOiBGaXggcHJpbnRmIGZvcm1hdCB3YXJuaW5nIGluIG00MXQ2MC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkYzFkYTQyZjgxNGNkNzFlNjc1NmMyY2Y2MmFmMWFkYTFkMDU4MWZiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKdWwgOCAxMjowMTo0NyAyMDA4ICswMjAwCi0KLSAgICBwY2k6IE1vdmUgUENJIGRldmljZSBjb25maWd1cmF0aW9uIGNoZWNrIGludG8gYSBzZXBhcmF0ZSB3ZWFrIGZ1bmN0aW9uCi0KLSAgICBUaGlzIHBhdGNoIG1vdmVzIHRoZSBjaGVjaywgaWYgYSBkZXZpY2Ugc2hvdWxkIGJlIHNraXBwZWQgaW4gUENJIFBOUAotICAgIGNvbmZpZ3VyYXRpb24gaW50byB0aGUgZnVuY3Rpb24gcGNpX3NraXBfZGV2KCkuIFRoaXMgZnVuY3Rpb24gaXMgZGVmaW5lZAotICAgIGFzIHdlYWsgc28gdGhhdCBpdCBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgYSBwbGF0Zm9ybSBzcGVjaWZpYyBvbmUgaWYKLSAgICBuZWVkZWQuIFRoZSBjaGVjayBpZiB0aGUgZGV2aWNlIHNob3VsZCBnZXQgcHJpbnRlZCBpbiB0aGUgUENJIHN1bW1hcnkgdXBvbgotICAgIGJvb3R1cCAod2hlbiBDT05GSUdfUENJX1NDQU5fU0hPVyBpcyBkZWZpbmVkKSBpcyBtb3ZlZCB0byB0aGUgZnVuY3Rpb24KLSAgICBwY2lfcHJpbnRfZGV2KCkgd2hpY2ggaXMgYWxzbyBkZWZpbmVkIGFzIHdlYWsgdG9vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjAwMjE0NGUxZGMyMTM3NGIxZWY1MjgxZmU2YjVkMDE0YWY5NjY1MAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDEwIDA5OjU4OjA2IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHByaW50ZiBmb3JtYXQgd2FybmluZ3Mgbm93IHZpc2libGUgd2l0aCB0aGUgdXBkYXRlZCBmb3JtYXQgY2hlY2sKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgcHBjNHh4IHJlbGF0ZWQgcHJpbnRmIGZvcm1hdCB3YXJuaW5nLiBUaG9zZSB3YXJuaW5ncyBhcmUKLSAgICBub3cgdmlzaWJsZSBzaW5jZSBwYXRjaCBkYzRiMGIzOGQ0YWFkZjA4ODI2ZjZjMzEyNzBmMWVlY2QyNzk2NGZkCi0gICAgW0ZpeCBwcmludGYgZXJyb3JzLl0gYnkgQW5kcmV3IEtsb3NzbmVyIGhhcyBiZWVuIGFwcGxpZWQuIFRoYW5rcywgdGhpcyBpcwotICAgIHJlYWxseSBoZWxwZnVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNWQ4MTJiOGI0YWQ5NjY3Yzc3YTViZjkyYjRiYTgxNjk5YWJjOWZjMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDkgMTc6MzM6NTcgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBFbmFibGUgc3VwcG9ydCBmb3IgPiAyR0IgU0RSQU0gb24gQU1DQyBLYXRtYWkKLQotICAgIE5ld2VyIFBQQydzIGxpa2UgNDQwU1BlLCA0NjBFWC9HVCBjYW4gYmUgZXF1aXBwZWQgd2l0aCBtb3JlIHRoYW4gMkdCIG9mIFNEUkFNLgotICAgIFRvIHN1cHBvcnQgc3VjaCBjb25maWd1cmF0aW9ucywgd2UgIm9ubHkiIG1hcCB0aGUgZmlyc3QgMkdCIHZpYSB0aGUgVExCJ3MuIFdlCi0gICAgbmVlZCBzb21lIGZyZWUgdmlydHVhbCBhZGRyZXNzIHNwYWNlIGZvciB0aGUgcmVtYWluaW5nIHBlcmlwaGVyYWxzIGxpa2UsIFNvQwotICAgIGRldmljZXMsIEZMQVNIIGV0Yy4KLQotICAgIE5vdGUgdGhhdCBFQ0MgaXMgY3VycmVudGx5IG5vdCBzdXBwb3J0ZWQgb24gY29uZmlndXJhdGlvbnMgd2l0aCBtb3JlIHRoYW4gMkdCCi0gICAgU0RSQU0uIFRoaXMgaXMgYmVjYXVzZSB3ZSBvbmx5IG1hcCB0aGUgZmlyc3QgMkdCIG9uIHN1Y2ggc3lzdGVtcywgYW5kIHRoZXJlZm9yZQotICAgIHRoZSBFQ0MgcGFyaXR5IGJ5dGUgb2YgdGhlIHJlbWFpbmluZyBhcmVhIGNhbid0IGJlIHdyaXR0ZW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjZjFjMmVkOTFkZjI2OTAzYjk1Njk0OGYzN2Y4MmRlOWUxMTU4YTg5Ci1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotRGF0ZToJU2F0IEp1biAxNCAxNzowMjo0OSAyMDA4IC0wNDAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSBpbXBsZW1lbnRhdGlvbiBvZiB0ZXN0ZHJhbSgpIGZyb20gS29yYXQgYm9hcmQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDdjZTRhMjhjY2ZjZmI4MDNhYTY4ZDNkNDUwNWE4ZGUwNTZhOGE1ZQotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVNhdCBKdW4gMTQgMTY6NTM6MDIgMjAwOCAtMDQwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgYW5kIGFkZCBGRFQgdG8gS29yYXQgYm9hcmQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDE4OGYwNDkxODg2YjNiNDg2MTY0ZTgxOWMwYTgzZmRiOTdlZmQ3ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAxMCAwMToxMzozMCAyMDA4ICswMjAwCi0KLSAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDg5MTVmMTE4OWMxZDI5ZDhiZTdmNGRlMzI1NzAyZDkwYTg5ODgyMTkKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglXZWQgSnVsIDkgMTc6NTA6NDUgMjAwOCAtMDQwMAotCi0gICAgZTEwMDA6IGFkZCBzdXBwb3J0IGZvciA4MjU0NUdNIDY0Yml0IFBDSS1YIGNvcHBlciB2YXJpYW50Ci0KLSAgICBUaGlzIFBDSS1YIGUxMDAwIHZhcmlhbnQgd29ya3MgYnkganVzdCBhZGRpbmcgaW4gdGhlIGNvcnJlY3QKLSAgICBQQ0kgSURzIGluIHRoZSBhcHByb3ByaWF0ZSBwbGFjZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDIxYWU2Y2EwMzE1YWZkYmM2NWRjM2U5NWZmZDU3NjNlNjc3M2QwMzAKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJV2VkIEp1bCA5IDEyOjM0OjExIDIwMDggKzAwMDAKLQotICAgIFNQQVJDOiBCdWlsZCBlcnJvciBmaXgKLQotICAgIChpbnRyb2R1Y2VkIGJ5IGNvbW1pdCAzOTFmZDkzYWIyM2UxNWFiM2RkNThhNTRmNWI2MDkwMjQwMDljMzc4KQotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyBTUEFSQyB0YXJnZXRzIGJ1aWxkIGFnYWluLiBJdCBpcyBjYXVzZWQgYnkKLSAgICBwaHlzX2FkZHJfdCBhbmQgcGh5c19zaXplX3QgYmVpbmcgZGVmaW5lZCBpbiB0aGUgd3JvbmcgaGVhZGVyCi0gICAgZmlsZS4gaW5jbHVkZS9sbWIuaCBuZWVkIHRob3NlIHR5cGVkZWZzIHRvIGJ1aWxkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotCi1jb21taXQgMTFjY2MzM2ZhMjFhY2NlMTA4ZjZiNGE2OTM2ZTMyNzFhZjkwNGM2NAotQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci1EYXRlOglXZWQgSnVsIDkgMDg6MTc6MTUgMjAwOCArMDIwMAotCi0gICAgTWFueSBzcGVsbGluZyBmaXhlcyBpbiBSRUFETUUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCBkYmFiMDY5MWQyNTMzNTYwZjdlOTFiOTJhZTg0NDA0NmE5YWQxZGYzCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAwODoxNzowNiAyMDA4ICswMjAwCi0KLSAgICBNaW5vciBzcGVsbGluZyBmaXggaW4gY29tbWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLQotY29tbWl0IDg5MTM0ZWExZjY3MjA4ZmQzMTYwYmRiYjBiOWVhYWI0ZWFiOTg0ODQKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglUdWUgSnVsIDggMTQ6NTQ6NTggMjAwOCAtMDQwMAotCi0gICAgUm91bmQgdGhlIHNlcmlhbCBwb3J0IGNsb2NrIGRpdmlzb3IgdmFsdWUgcmV0dXJuZWQgYnkgY2FsY19kaXZpc29yKCkKLQotICAgIFJvdW5kIHRoZSBzZXJpYWwgcG9ydCBjbG9jayBkaXZpc29yIHZhbHVlIHJldHVybmVkIGJ5Ci0gICAgY2FsY19kaXZpc29yKCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJvYmVydHMgPGpvaG4ucm9iZXJ0c0Bwd2F2LmNvbT4KLQotY29tbWl0IDlkMmUzOTQ3YjI5NDRlNWJiODViNDMzNTUzM2Y4YzkzYzU4NDQ1ZmUKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVsIDkgMTc6NDc6NTIgMjAwOCAtMDUwMAotCi0gICAgTkFORDogaWZkZWYtcHJvdGVjdCBtb3N0IG9mIG5hbmQuaCB3aGVuIHVzaW5nIGxlZ2FjeSBOQU5ELgotCi0gICAgU29tZSBtYWNyb3Mgc3VjaCBhcyBOQU5EX0NUTF9TRVRBTEUgY29uZmxpY3QgYmV0d2VlbiBjdXJyZW50IGFuZCBsZWdhY3kKLSAgICBOQU5ELCBiZWluZyBkZWZpbmVkIGJ5IHRoZSBzdWJzeXN0ZW0gaW4gdGhlIGZvcm1lciBjYXNlIGFuZCB0aGUgYm9hcmQKLSAgICBjb25maWcgZmlsZSBpbiB0aGUgbGF0dGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyYjFmYTlkMzgzY2JiYjdkMzQ3YzE1ODNiZDZjYTRlMTgxYmE4ZTllCi1BdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotRGF0ZToJVHVlIEp1bCA4IDExOjAyOjA1IDIwMDggLTA0MDAKLQotICAgIEFSTTogRml4IGZvciB3cm9uZyBwYXRjaCB2ZXJzaW9uIGFwcGxpZWQgZm9yIEx5cnRlY2ggU0ZGLVNEUiBib2FyZCAoQVJNOTI2RUpTKQotCi0gICAgQVJNOiBGaXggZm9yIGluY29ycmVjdCB2ZXJzaW9uIG9mIHBhdGNoIGFwcGxpZWQgd2hlbgotICAgIGFkZGluZyBzdXBwb3J0IGZvciB0aGUgTHlydGVjaCBTRkYtU0RSIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUGhpbGlwIEJhbGlzdGVyLCBPcGVuU0RSIDxwaGlsaXBAb3BlbnNkci5jb20+Ci0KLWNvbW1pdCA0NzA0MmIzNjNlZTUwMjJiODE4MGM2NWQzZjQ1NThlNzk3MmM3OWNkCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJVHVlIEp1bCA4IDA5OjA4OjQwIDIwMDggKzA5MDAKLQotICAgIFJlbW92ZSB1c2VsZXNzIHByaW50IG1lc3NhZ2UgYXQgYXBvbGxvbgotCi0gICAgUmVtb3ZlIHVzZWxlc3MgcHJpbnQgbWVzc2FnZSBhdCBhcG9sbG9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgOTg4NzRmZjMyOWQ0YTViMzJjNDY3YjQzZjZlOTY2ZTFhYTY4NDc5ZgotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVsIDcgMTQ6MjQ6MzkgMjAwOCAtMDUwMAotCi0gICAgRml4IExNQiB0eXBlIGlzc3VlcwotCi0gICAgVGhlIExNQiBjb2RlIG5vdyB1c2VzIHBoeXNfYWRkcl90IGFuZCBwaHlzX3NpemVfdC4JQWxzbywgdGhlcmUgd2VyZSBhIGNvdXBsZQotICAgIG9mIGNhc3RpbmcgcHJvYmxlbXMgaW4gdGhlIGJvb3RtIGNvZGUgdGhhdCBjYWxsZWQgdGhlIExNQiBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkYTg2OTNhOTFiOGVlZjc1YWRlOGRlNTBhMWIyY2UwMzViYzVmYjU0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gSnVsIDcgMDk6Mzk6MDYgMjAwOCAtMDUwMAotCi0gICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzCi0KLSAgICBnY2MtNC4zLnggZ2VuZXJhdGVzIHRoZSBmb2xsb3dpbmc6Ci0KLSAgICBib290bS5jOiBJbiBmdW5jdGlvbiAnZG9fYm9vdG1fbGludXgnOgotICAgIGJvb3RtLmM6MjA4OiB3YXJuaW5nOiBjYXN0IGZyb20gcG9pbnRlciB0byBpbnRlZ2VyIG9mIGRpZmZlcmVudCBzaXplCi0gICAgYm9vdG0uYzoyMTU6IHdhcm5pbmc6IGNhc3QgZnJvbSBwb2ludGVyIHRvIGludGVnZXIgb2YgZGlmZmVyZW50IHNpemUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1YmIxMmRiZDdhZTAzMTg5YjZjMTNkODczN2I1YTFiMzdjM2RmNjk4Ci1BdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBnbnVtb25rcy5vcmc+Ci1EYXRlOglNb24gSnVsIDcgMTU6NDA6MzkgMjAwOCArMDgwMAotCi0gICAgUmVtb3ZlIGNvZGUgZHVwbGljYXRpb24gZm9yIHNldHRpbmcgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQKLQotICAgIGNvbW1vbi9lbnZfY29tbW9uLmMgKGRlZmF1bHRfZW52KTogbmV3IGZ1bmN0aW9uIHRoYXQgcmVzZXRzIHRoZSBlbnZpcm9ubWVudCB0bwotCQkgICAgdGhlIGRlZmF1bHQgdmFsdWUKLSAgICBjb21tb24vZW52X2NvbW1vbi5jIChlbnZfcmVsb2NhdGUpOiB1c2UgZGVmYXVsdF9lbnYgaW5zdGVhZCBvZiBvd24gY29weQotICAgIGNvbW1vbi9lbnZfbmFuZC5jIChlbnZfcmVsb2NhdGVfc3BlYyk6IHVzZSBkZWZhdWx0X2VudiBpbnN0ZWFkIG9mIG93biBjb3B5Ci0gICAgaW5jbHVkZS9lbnZpcm9ubWVudC5oOiBhZGRlZCBkZWZhdWx0X2VudiBwcm90b3R5cGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdlcm5lciBBbG1lc2JlcmdlciA8d2VybmVyQG9wZW5tb2tvLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgotCi1jb21taXQgOTljMmI0MzRkMzc4NjNkZjVkZGE1MjA3YTUzNzYwYzY1MDZmYzJiZQotQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci1EYXRlOglTdW4gSnVuIDIyIDE2OjEzOjQ2IDIwMDggKzAyMDAKLQotICAgIE5BTkQ6IEZpeCB3YXJuaW5nIGR1ZSB0byBtaXNzaW5nIGVudl9wdHIgY2FzdHMgdG8gdV9jaGFyICogaW4gZW52X25hbmQuYy4KLQotICAgIFRoZSB3cml0ZWVudigpIGFuZCByZWFkZW52KCkgY2FsbHMgaW50cm9kdWNlZCBieSB0aGUgcmVjZW50bHkgYWRkZWQgYmFkIGJsb2NrCi0gICAgbWFuYWdlbWVudCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdlcmUgbWlzc2luZyBjYXN0cyB0aGVyZWZvcmUgcHJvZHVjaW5nCi0gICAgY29tcGlsZSB0aW1lIHdhcm5pbmdzLgotICAgIFdoaWxlIGF0IGl0IGZpeGluZyBzb21lIHR5cG8gaW4gYSBjb21tZW50IGFuZCBpbmRlbnRhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDMxNjdjNTM4NmVhMWM5OGI2MzhiZTVkODc2M2VmNmQ1OTM4ZWYxYmQKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVuIDIwIDEyOjM4OjU3IDIwMDggLTA1MDAKLQotICAgIE5BTkQ6IFJlbmFtZSBERUJVRyB0byBNVERERUJVRyB0byBhdm9pZCBuYW1lc3BhY2UgcG9sbHV0aW9uLgotCi0gICAgVGhpcyBpcyBwYXJ0aWN1bGFybHkgcHJvYmxlbWF0aWMgbm93IHRoYXQgbm9uLU5BTkQtc3BlY2lmaWMgY29kZSBpcwotICAgIGluY2x1ZGluZyA8bmFuZC5oPiwgYW5kIHRodXMgYWxsIGRlYnVnZ2luZyBjb2RlIGlzIGJlaW5nIGNvbXBpbGVkCi0gICAgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGl0IHdhcyByZXF1ZXN0ZWQsIGFzIHJlcG9ydGVkIGJ5IFNjb3R0IE1jTnV0dAotICAgIDxzbWNudXR0QHBzeWVudC5jb20+LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjM2JmMWFkN2JhYTFiMGRkOTg5ZGVkYzI2MGI3MDk4YjYwODlhZTA1Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVRodSBKdW4gMTIgMTk6Mjc6NTggMjAwOCArMDIwMAotCi0gICAgbW1jOiBNb3ZlIGF0bWVsX21jaSBkcml2ZXIgaW50byBkcml2ZXJzL21tYwotCi0gICAgVGhpcyBtYWtlcyBpdCBlYXNpZXIgdG8gdXNlIHRoZSBkcml2ZXIgb24gb3RoZXIgcGxhdGZvcm1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocml0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBkMmQ1NGVhNDQ5NjM5ZjNkMWE2MDA3ZTMzM2FiOWZjYzYwOWExOGYwCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVRodSBKdW4gMTIgMTk6Mjc6NTcgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IFVzZSBDT05GSUdfQVRNRUxfTUNJIHRvIHNlbGVjdCB0aGUgYXRtZWxfbWNpIGRyaXZlcgotCi0gICAgQWZ0ZXIgd2UgbW92ZSB0aGUgYXRtZWxfbWNpIGRyaXZlciBpbnRvIGRyaXZlcnMvbW1jLCB3ZSBjYW4ndCBzZWxlY3QKLSAgICBpdCB3aXRoIENPTkZJR19NTUMgYW55bW9yZS4gSW50cm9kdWNlIGEgbmV3IHN5bWJvbCBzcGVjaWZpY2FsbHkgZm9yCi0gICAgdGhpcyBkcml2ZXIgc28gdGhhdCB0aGVyZSdzIG5vIGFtYmlndWl0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNWNlMTMwNTFhNDhjNjJiZGE5NzIzZGYzYjQ3NzhjNDkyZmI0N2YzNgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgSnVuIDEyIDE5OjI3OjU2IDIwMDggKzAyMDAKLQotICAgIENyZWF0ZSBkcml2ZXJzL21tYyBzdWJkaXJlY3RvcnkKLQotICAgIEluIG9yZGVyIHRvIGNvbnNvbGlkYXRlIG1vcmUgb2YgdGhlIHZhcmlvdXMgTU1DIGRyaXZlcnMgYXJvdW5kIHRoZQotICAgIHRyZWUsIHdlIG11c3QgZmlyc3QgaGF2ZSBhIGNvbW1vbiBwbGFjZSB0byBwdXQgdGhlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYjUwMjYxMWI1MWYwMjcxOGMyZDExMTdkNDk4MWRhYmNlYjVhZjZkZQotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxqb2FraW0udGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVN1biBKdWwgNiAxMjozMDowOSAyMDA4ICswMjAwCi0KLSAgICBDaGFuZ2UgZW52X2dldF9jaGFyIGZyb20gYSBnbG9iYWwgZnVuY3Rpb24gcHRyIHRvIGEgZnVuY3Rpb24KLQotICAgIFRoaXMgYXZvaWRzIGFuIGVhcmx5IGdsb2JhbCBkYXRhIHJlZmVyZW5jZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgMjcyNjk0MTdhZGU0MzIxODliMjM0ZDlmYmFjOThiNTRlMzdiOTc4YwotQXV0aG9yOiBNYXR2ZWpjaGlrb3YgSWx5YSA8bWF0dmVqY2hpa292QGdtYWlsLmNvbT4KLURhdGU6CVN1biBKdWwgNiAxMzo1Nzo1OCAyMDA4ICswNDAwCi0KLSAgICBTb21lIGNvcHktbi1wYXN0ZSBmaXhlcyBpbiBwcmludGYgdXNhZ2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHZlamNoaWtvdiBJbHlhIDxtYXR2ZWpjaGlrb3ZAZ21haWwuY29tPgotCi1jb21taXQgMGU2OTg5YjlmYWYxNTg4ZTg3MjM1MzU1MzllODhhMGRmM2M3MTM1NgotQXV0aG9yOiBNYXR2ZWpjaGlrb3YgSWx5YSA8bWF0dmVqY2hpa292QGdtYWlsLmNvbT4KLURhdGU6CVN1biBKdWwgNiAxMzo1NzowMCAyMDA4ICswNDAwCi0KLSAgICBGRFQgbWVtb3J5IGFuZCBwY2kgbm9kZSBmaXhlcyBmb3IgTVBDODI2MEFEUwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dmVqY2hpa292IElseWEgPG1hdHZlamNoaWtvdkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkYzRiMGIzOGQ0YWFkZjA4ODI2ZjZjMzEyNzBmMWVlY2QyNzk2NGZkCi1BdXRob3I6IEFuZHJldyBLbG9zc25lciA8YW5kcmV3QGNlc2Eub3BidS54ZXJveC5jb20+Ci1EYXRlOglNb24gSnVsIDcgMDY6NDE6MTQgMjAwOCAtMDcwMAotCi0gICAgRml4IHByaW50ZiBlcnJvcnMuCi0KLSAgICBUaGUgY29tcGlsZXIgd2lsbCBoZWxwIGZpbmQgbWlzbWF0Y2hlcyBiZXR3ZWVuIHByaW50ZiBmb3JtYXRzIGFuZAotICAgIGFyZ3VtZW50cyBpZiB5b3UgbGV0IGl0LiAgVGhpcyBwYXRjaCBhZGRzIHRoZSBuZWNlc3NhcnkgYXR0cmlidXRlcyB0bwotICAgIGRlY2xhcmF0aW9ucyBpbiBpbmNsdWRlL2NvbW1vbi5oLCB0aGVuIGJlZ2lucyB0byBjb3JyZWN0IHRoZSByZXN1bHRpbmcKLSAgICBjb21waWxlciB3YXJuaW5ncy4JU29tZSBvZiB0aGVzZSB3ZXJlIGJ1Z3MsIGUuZy4sICIkZCIgaW5zdGVhZCBvZgotICAgICIlZCIgYW5kIGluY29ycmVjdCBhcmd1bWVudHMuICBPdGhlcnMgd2VyZSBqdXN0IGFubm95aW5nLCBsaWtlCi0gICAgaW50LWxvbmcgbWlzbWF0Y2hlcyBvbiBhIHN5c3RlbSB3aGVyZSBib3RoIGFyZSAzMiBiaXRzLiAgSXQncyB3b3J0aAotICAgIGZpeGluZyB0aGUgYW5ub3lpbmcgZXJyb3JzIHRvIGNhdGNoIHRoZSByZWFsIG9uZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgS2xvc3NuZXIgPGFuZHJld0BjZXNhLm9wYnUueGVyb3guY29tPgotCi1jb21taXQgNDE3ZmFmMjg1YjI1MjdhY2IyZGUyNGM1Y2QzZTI2MjFkMzg1NDA4YwotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdWwgOSAxMTowOTo0MSAyMDA4IC0wNTAwCi0KLSAgICBBbGxvdyBwcmludF9zaXplIHRvIHByaW50IGluIEdCCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU3YzM3NDUyOWM4NzUyNWM5YWE0NjNlMDU1N2MyODc4ODdhZTRlOWUKLUF1dGhvcjogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+Ci1EYXRlOglTdW4gSnVuIDggMjM6NTY6MDAgMjAwOCAtMDQwMAotCi0gICAgbWlwczogV2hlbiBib290aW5nIExpbnV4IGltYWdlcywgYWRkICdldGhhZGRyJyBhbmQgJ2V0aDFhZGRyJyB0byB0aGUgZW52aXJvbm1lbnQKLQotICAgIEFkZCAnZXRoYWRkcicgYW5kICdldGgxYWRkcicgdG8gdGhlIExpbnV4IGtlcm5lbCBlbnZpcm9ubWVudCBpZgotICAgIHRoZXkgYXJlIHNldCBpbiB0aGUgVS1Cb290IGVudmlyb25tZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDAxOTJkN2Q1NmU5MzIwODE5ZGVhMjYyZjQ5Nzg5YWUxOGZkZDJjNzIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCA4IDEyOjU3OjE0IDIwMDggKzAyMDAKLQotICAgIGplZGVjX2ZsYXNoOiBGaXggQU0yOURMODAwQkIgZGV2aWNlIElECi0KLSAgICBBcyBwb2ludGVkIG91dCBieSBKZXJyeSBIaWNrcywgdGhpcyBwYXRjaCBjb3JyZWN0cyB0aGUgZGV2aWNlIElEIG9mCi0gICAgdGhlIFNwYW5zaW9uIEFNMjlETDgwMEJCIE5PUiBkZXZpY2UuIFZlcmlmaWVkIGFnYWluc3QgbGF0ZXN0IFNwYW5zaW9uCi0gICAgZGF0YXNoZWV0IChyZXYgQzQgZnJvbSBEZXplbWJlciAyMDA2KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDY4OWMxYjMwY2FhY2JhM2ZiY2EwYjE4MTNmYWNiM2FiNzBiNmNkNjMKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJTW9uIEp1bCA3IDExOjIyOjM3IDIwMDggKzA5MDAKLQotICAgIHNoOiBGaXggY29tcGlsZSBlcnJvciBzaDc3NjNyZHAgYm9hcmQKLQotICAgIERpc2FibGUgU0ggZXRoZXIgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgOWUyM2ZlMDU2MGI4NGUzMjRkYzVmMGZmODgxM2RhYjJhYTM0ZjA3NAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglUdWUgSnVsIDggMTI6MDM6MjQgMjAwOCArMDkwMAotCi0gICAgc2g6IEZpeCBTSC1ib2FyZHMgY29tcGlsZSBlcnJvcgotCi0gICAgQnkgQ2xlYW51cCBvdXQtb3ItdHJlZSBidWlsZGluZyBmb3Igc29tZSBib2FyZHMgKC5kZXBlbmQpCi0gICAgKGNvbW1pdDpjOGEzYjEwOWYwN2YwMjM0MmQwOTdiMzA5MDg5NjVmNzI2MWQ5ZjE1KQotICAgIGJlY2F1c2UgZmlsc2Ugd2FyZSBjaGFuZ2VkLCBzb21lIFNILWJvYXJkcyBoYXZlIGNvbXBpbGUgZXJyb3IuCi0gICAgSSByZXZpc2VkIHRoaXMgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDM0NzNhYjczNzI4MmIwOGFkNjE4NDFmY2JiMTRjNGQyNjRhOTNhOGUKLUF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTMgMTE6NTA6MzYgMjAwOCArMDgwMAotCi0gICAgRmVlZCB0aGUgd2F0Y2hkb2cgaW4gdS1ib290IGZvciA4NjEwIGJvYXJkLgotCi0gICAgVGhlIHdhdGNoZG9nIG9uIDg2MTAgYm9hcmQgaXMgZW5hYmxlZCBieSBzZXR0aW5nIHN3WzZdCi0gICAgdG8gb24uIE9uY2UgZW5hYmxlZCwgdGhlIHdhdGNoZG9nIGNhbiBub3QgYmUgZGlzYWJsZWQKLSAgICBieSBzb2Z0d2FyZS4gU28gZmVlZCB0aGUgZG9nIGluIHUtYm9vdCBpcyBuZWNlc3NhcnkgZm9yCi0gICAgbm9ybWFsIG9wZXJhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2MzY3Njg0MWNhMmQ2MDNiMTM3NjVmM2Y3YjcyZmYxYTYxYzIzZjkwCi1BdXRob3I6IEh1Z28gVmlsbGVuZXV2ZSA8aHVnby52aWxsZW5ldXZlQGx5cnRlY2guY29tPgotRGF0ZToJV2VkIEp1biAxOCAxMjoxMDozMyAyMDA4IC0wNDAwCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlIGNvZGUgaW4gY3B1L2FybTkyNmVqcy9kYXZpbmNpL2x4dDk3Mi5jLgotCi0gICAgUmVtb3ZlIGR1cGxpY2F0ZSBjb2RlIGluIGNwdS9hcm05MjZlanMvZGF2aW5jaS9seHQ5NzIuYy4KLQotICAgIFJlbW92ZSBkdXBsaWNhdGUgY29kZSBpbiBhIGlmL2Vsc2UgYmxvY2sgaW4KLSAgICBjcHUvYXJtOTI2ZWpzL2RhdmluY2kvbHh0OTcyLmMuCi0gICAgRml4ZWQgc3R5bGUgaXNzdWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGZlYzYxNDMxYTAwM2Y1Nzc4YmFmYTI2MjQwNzNhNTcxYWY4YmVjOWYKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglXZWQgSnVuIDE4IDEyOjEwOjMxIDIwMDggLTA0MDAKLQotICAgIFJlbW92ZSBkdXBsaWNhdGUgZGVmaW5pdGlvbnMgaW4gaW5jbHVkZS9seHQ5NzFhLmguCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlIGRlZmluaXRpb25zIGluIGluY2x1ZGUvbHh0OTcxYS5oLgotCi0gICAgUmVtb3ZlIGR1cGxpY2F0ZSByZWdpc3RlcnMgYW5kIGJpdHMgZGVmaW5pdGlvbnMgaW4KLSAgICBpbmNsdWRlL2x4dDk3MWEuaCBmb3Igc3RhbmRhcmQgTUlJIHJlZ2lzdGVycywgYW5kCi0gICAgdXNlIHZhbHVlcyBpbiBpbmNsdWRlL21paXBoeS5oIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIdWdvIFZpbGxlbmV1dmUgPGh1Z28udmlsbGVuZXV2ZUBseXJ0ZWNoLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOTc1MWVlMDk5MGY0Njc5NDFkYTBiMDk1YTRlOTk1Zjg2MzY3MmQ3YQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglXZWQgSnVuIDExIDIxOjA1OjAwIDIwMDggKzA5MDAKLQotICAgIG5ldDogc2g6IFJlbmVzYXMgU0g3NzYzIEV0aGVybmV0IGRldmljZSBzdXBwb3J0Ci0KLSAgICBSZW5lc2FzIFNINzc2MyBoYXMgMiBjaGFubmVsIEV0aGVybmV0IGRldmljZS4KLSAgICBUaGlzIGlzIDEwLzEwMC8xMDAwIEJhc2Ugc3VwcG9ydC4KLSAgICBCdXQgdGhpcyBwYXRjaCBjaGVjayAxMC8xMDAgQmFzZSBvbmx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4NzNkOTdhYWJjMGIxYzg4MjJlZDFkODdlOGM1YzhhZTBhN2U0YWU5Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBKdW4gMTcgMTY6Mjg6MDUgMjAwOCArMDkwMAotCi0gICAgc2g6IFVwZGF0ZSBSZW5lc2FzIFIyRFBsdXMgYm9hcmQKLQotICAgIE5ldyBOT1IgRmxhc2ggYm9hcmQgc3VwcG9ydCBhbmQgcmVtb3ZlIG9sZCB0eXBlIGZsYXNoIGJvYXJkIGNvbmZpZy4KLSAgICBBbmQgUmVtb3ZlIG5ldHdvcmsgc2V0dGluZyBmcm9tIGNvbmZpZyBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGVjMzlkNDc5ZDIwMDNmMTVlODZlMjNlYmM0ZTAyYTFjOWEzYTE4MWMKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVHVlIEp1biAxNyAxNjoyODowMSAyMDA4ICswOTAwCi0KLSAgICBzaDogVXBkYXRlIFJlbmVzYXMgUjc3ODBNUCBib2FyZAotCi0gICAgTmV3IE5PUiBGbGFzaCBib2FyZCBzdXBwb3J0IGFuZCByZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYzAwMWNkNjA0ZTlmMTMzNzQzZWZmYmRkYjFjMjE1YjQ4ZTc2MWM1YQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUdWUgSnVuIDE3IDE2OjI3OjU2IDIwMDggKzA5MDAKLQotICAgIHNoOiBVcGRhdGUgUmVuZXNhcyBNaWdvLVIgYm9hcmQKLQotICAgIFJlbW92ZSBuZXR3b3JrIHNldHRpbmcgZnJvbSBjb25maWcgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBmOTU5OWVjYTdjYjVlYmU0MGU1MzA1YzgwMDZkY2VkNmVjYzVjZDllCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6NTIgMjAwOCArMDkwMAotCi0gICAgc2g6IFVwZGF0ZSBIaXRhY2hpIE1TNzcyMlNFIGJvYXJkCi0KLSAgICBSZW1vdmUgbmV0d29yayBzZXR0aW5nIGZyb20gY29uZmlnIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMjYyMDllNDhlODc5MTY3MGM5MzEwODAyOWE1YzMxYTMwMDE2YzZkZgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUdWUgSnVuIDE3IDE2OjI3OjQ4IDIwMDggKzA5MDAKLQotICAgIHNoOiBDbGVhbnVwIHNvdXJjZSBjb2RlIG9mIFNINzc2M1JEUAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDVjZDViMmM5NmVmMDAyNTc2MjkzMTM0OWQzNTAyODdhZWMwM2FiNDcKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVHVlIEp1biAxNyAxNjoyNzo0NCAyMDA4ICswOTAwCi0KLSAgICBzaDogQ2xlYW51cCBzb3VyY2UgY29kZSBvZiBSMkRQbHVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNGVjN2U5MTVjZmFhMzFiMzkyNzU1ZGQyYzgyMzFlNjQ3MzZkMmVhOAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglUdWUgSnVuIDE3IDE2OjI3OjQxIDIwMDggKzA5MDAKLQotICAgIHNoOiBDbGVhbnVwIHNvdXJjZSBjb2RlIG9mIFI3NzgwTVAKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAwOTU1ZWYzNGMwNDU0YWUyZWU1OWE3ODY1N2EwZjAxZmIzZWYxNmQ2Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6MzggMjAwOCArMDkwMAotCi0gICAgc2g6IENsZWFudXAgc291cmNlIGNvZGUgb2YgTVM3NzIyU0UKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAxZDdiMzFkOTdiMzRjY2I2ZjliMjBhMjQ2NTg2NDk5OGIwYmYyNjkxCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBKdW4gMTcgMTY6Mjc6MzQgMjAwOCArMDkwMAotCi0gICAgc2g6IENsZWFudXAgc291cmNlIGNvZGUgb2YgTVM3NzIwU0UKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAzYWI0ODI3Y2JlNDA5NDg4ZWJlYTFhMmVlNTA5NDc4M2YyNjcyMjE0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDcgMDA6NDU6MDMgMjAwOCArMDIwMAotCi0gICAgU0g6IGZpeCBvdXQgb2YgdHJlZSBidWlsZGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDkwNDdiZmExZTczN2Q3ODdiZTQ2MDM4N2RkNmY0NTczN2VlY2ViMTAKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJVGh1IEp1bCAzIDIzOjE2OjA2IDIwMDggKzA5MDAKLQotICAgIG5ldDogc21jOTExeDogRml4IHR5cG8KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLQotY29tbWl0IDVlZDU0NmZkZDBjYTQ2YTE2NTY2MWMyMDA5ZmE3NDNkOWM5ZmNlY2EKLUF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotRGF0ZToJV2VkIEp1bCAyIDE4OjU0OjA4IDIwMDggKzAyMDAKLQotICAgIHVwZGF0ZSBtdkJMLU03IGJvYXJkIGNvbmZpZwotCi0gICAgdXBkYXRlIG12QkwtTTcgY29uZmlnIGZpbGUgdG8gdXNlIFVCT09UX1ZFUlNJT04gYW5kIGRlZmluZQotICAgIENPTkZJR19ISUdIX0JBVFMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0KLWNvbW1pdCA1Y2FjYzVkMGVjNTI2NzhhNWViODNlY2RhNWMzYmNiMjJlYjQ3ZjMwCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CU1vbiBKdW4gMzAgMTc6NDU6MDEgMjAwOCArMDkwMAotCi0gICAgbmV0OiBmaXggY29tcGlsZSBwcm9ibGVtIGluIHNtYzkxMXggZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOWZlYTY1YTZjNDY5YjFiNDc0YjI3NDQ2ZmViNTg3MzhiYWJhMmQzMQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglUdWUgSnVuIDI0IDA5OjU0OjA5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogUmVuYW1lIENPTkZJR19YSUxJTlhfTUwzMDAgdG8gQ09ORklHX1hJTElOWF80MDUKLQotICAgIFRoaXMgY2hhbmdlIGhlbHBzIHdpdGggYmV0dGVyIGhhbmRsaW5nIHdpdGggb3RoZXJzCi0gICAgWGlsaW54IGJhc2VkIHBsYXRmb3JtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjYmI2Mjg5NTY5YWU0ZmM2ZTJkNjc2NTI4ZTQ2ZmZjYzcyZDc0M2QwCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVR1ZSBKdW4gMTcgMTM6MDc6MTEgMjAwOCArMDkwMAotCi0gICAgbmV0OiBuZTIwMDA6IE1vdmUgZGV2X2FkZHIgdmFyaWFibGUgZnJvbSBncm9iYWwgdG8gbG9jYWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGRkN2U1ZmE1Zjg0NzE4OGY3OGY2MmYyYzUyZGU2Y2IzZGVmM2VjZGIKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJVHVlIEp1biAxNyAxMzowNzoxNSAyMDA4ICswOTAwCi0KLSAgICBuZXQ6IG5lMjAwMDogRml4IGNvbXBpbGUgZXJyb3Igb2YgTkUyMDAwCi0KLSAgICBJZiBlbmFibGUgREVCVUcsIGNhbiBub3QgY29tcGlsZSBuZTIwMDAgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkZDM1NDc5YTUwZjZjN2MzMWVhNDkxYzA3YzUyMDBjNmRmZDA2YTI0Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglNb24gSnVuIDIzIDIyOjU3OjI3IDIwMDggLTA3MDAKLQotICAgIEFkZCBtZWNoYW5pc21zIGZvciBDUFUgYW5kIGJvYXJkLXNwZWNpZmljIEV0aGVybmV0IGluaXRpYWxpemF0aW9uCi0KLSAgICBUaGlzIHBhdGNoIGlzIHRoZSBmaXJzdCBzdGVwIGluIGNsZWFuaW5nIHVwIG5ldC9ldGguYywgYnkgbW92aW5nIEV0aGVybmV0Ci0gICAgaW5pdGlhbGl6YXRpb24gdG8gQ1BVIG9yIGJvYXJkLXNwZWNpZmljIGNvZGUuICBJbml0aWFsIGltcGxlbWVudGF0aW9uIGlzCi0gICAgb25seSBvbiB0aGUgRnJlZXNjYWxlIFRTRUMgY29udHJvbGxlciwgYnV0IG90aGVycyB3aWxsIGJlIGFkZGVkIHNvb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgNzc1NGYyYmU1ZDE4MzVkMjYzYWFkMjFiNWE2Mjk1MjZmM2U2ODBiMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEp1bCA2IDAxOjIxOjQ2IDIwMDggKzAyMDAKLQotICAgIGluY2x1ZGUvc2hhMjU2Lmg6IGZpeCBmaWxlIHBlcm1pc3Npb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQzYmNkZjgzOGUyOTkxZDU4NTcxMzA4ZmE2ZTA0Y2EzMzViYzA2ZTgKLUF1dGhvcjogUGF0cmljZSBWaWxjaGV6IDxwYXRyaWNlLnZpbGNoZXpAYXRtZWwuY29tPgotRGF0ZToJVHVlIE1heSAyNyAxMToxNToyOSAyMDA4ICswMjAwCi0KLSAgICBbQVQ5MVNBTTldIEZpeCBOQU5EIEZMQVNIIHRpbWluZ3MKLQotICAgIEZpeCBOQU5EIEZMQVNIIHRpbWluZ3MgZm9yIGF0OTFzYW05eCBldmFsdWF0aW9uIGtpdHMuCi0KLSAgICBOZXcgdGltaW5ncyBhcmUgYmFzZWQgb24gYXBwbGljYXRpb24gbm90ZQotICAgICJOQU5EIEZsYXNoIFN1cHBvcnQgb24gQVQ5MVNBTTkgTWljcm9jb250cm9sbGVycyIgYXZhaWxhYmxlIGF0Ci0gICAgaHR0cDovL2F0bWVsLmNvbS9keW4vcmVzb3VyY2VzL3Byb2RfZG9jdW1lbnRzL2RvYzYyNTUucGRmCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXRyaWNlIFZpbGNoZXogPHBhdGljZS52aWxjaGV6QGF0bWVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIEFja2VkLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotCi1jb21taXQgMTliZDY4ODQ4NDMyMmZlNjJkMWE2NmM4Mjk5ZGE2ZmY5ZTk2N2ZmOQotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSAyMiAwMDoxNTo0MCAyMDA4ICswMjAwCi0KLSAgICBGaXggYm9vdCBmcm9tIE5PUiBkdWUgdG8gaW5jb3JyZWN0IHJlc2V0IGRlbGF5LgotCi0gICAgQVQ5MSBSU1RDIHJlZ2lzdGVycyBhcmUgYmF0dGVyeS1iYWNrdXBlZCwgc28gdGhlaXIgdmFsdWVzCi0gICAgYXJlIG5vdCByZXNldCBhY3Jvc3MgcG93ZXIgY3ljbGVzLiBPbmUgb2YgdGhvc2UgcmVnaXN0ZXJzLAotICAgIHRoZSBBVDkxX1JTVENfTVIgcmVnaXN0ZXIsIGlzIGJlaW5nIG1vZGlmaWVkIGJ5IFUtQm9vdCwgaW4KLSAgICB0aGUgZXRoZXJuZXQgaW5pdGlhbGlzYXRpb24gcm91dGluZSwgdG8gZ2VuZXJhdGUgYSA1MDBtcwotICAgIHVzZXIgcmVzZXQuCi0KLSAgICBVbmZvcnR1bmF0ZWx5LCB0aGlzIHZhbHVlIGlzIG5vdCBiZWluZyByZXN0b3JlZCBhZnRlcndhcmRzLAotICAgIGNhdXNpbmcgc3Vic2VxdWVudCByZXNldHMgdG8gYWxzbyBsYXN0IGZvciA1MDBtcy4KLQotICAgIFRoaXMgbG9uZyByZXNldCBzZXF1ZW5jZSBjYXVzZXMgcHJvYmxlbXMgKGF0IGxlYXN0KSBpbiB0aGUKLSAgICBib290IHNlcXVlbmNlIGZyb20gTk9SOiBieSB0aGUgdGltZSB0aGUgQ1BVIHRyaWVzIHRvIGxvYWQKLSAgICBhIHByb2dyYW0gZnJvbSB0aGUgTk9SIGZsYXNoLCB0aGUgbGF0dGVyIGlzIHN0aWxsIGluIHJlc2V0Ci0gICAgYW5kIG5vdCB5ZXQgYXZhaWxhYmxlLgotCi0gICAgQWRkaXRpb25hbHksIHRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIG9yaWdpbmFsIGNvZGUgd2hpY2gKLSAgICBjYXVzZWQgdGhlIHJlc2V0IGRlbGF5IHRvIGxhc3QgZm9yIDJzIGluc3RlYWQgb2YgNTAwbXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmNDkyZGQ2MzZmYmJhZTUyOWUxNzUzMzk5NWJjNmU1ODEzYzAwN2Y2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDQgMjA6MTE6NDkgMjAwOCArMDIwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDVlNmUzNTBmYzQ4OWFhMTk0MDJmMWU3OTAzN2RkOGMwYTRiYmQ3M2QKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgNCAyMDowNzozNSAyMDA4ICswMjAwCi0KLSAgICBDQ00vU0NNIGJvYXJkczogZml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYWI0YzNhNDkwZGY5YTk2NDcxMTU1NmQyYTA1YjBjNzg3ZGI0NWZkZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAzIDIzOjIyOjI3IDIwMDggKzAyMDAKLQotICAgIFNDTSBib2FyZDogZml4IGJ1aWxkIGVycm9ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhNTY2NDY2ZjE3YmEwZTJkMmI2YzI1MGU3N2RhNjc4ZmI5MzI0NzBkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMgMjM6MDY6MzYgMjAwOCArMDIwMAotCi0gICAgSUFEMjEwIGJvYXJkOiBmaXggYGAiQUxJR04iIHJlZGVmaW5lZCcnIHdhcm5pbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYWQ3NTYzMTQ3OTdjMTZmYTVkY2EyM2UxMTVhYWI4ODEwMTFmMTY0ZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAzIDIzOjAwOjI0IDIwMDggKzAyMDAKLQotICAgIENDTSBib2FyZDogZml4IGJ1aWxkIGVycm9ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmMTZlZDUxNzAyY2I5ZmI2ZmEyZTAxOWJiYzBmY2QxNDY2YjU3YzNiCi1BdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLURhdGU6CVdlZCBKdWwgMiAxODo1NDowOCAyMDA4ICswMjAwCi0KLSAgICB1cGRhdGUgbXZCTC1NNyBib2FyZCBjb25maWcKLQotICAgIHVwZGF0ZSBtdkJMLU03IGNvbmZpZyBmaWxlIHRvIHVzZSBVQk9PVF9WRVJTSU9OLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjZWQyMDljNTBlODBjMjVmMTNjMDgzMDk5YjA1MDQ0MDQ4ZDIxZjRmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMgMjI6Mzk6MjEgMjAwOCArMDIwMAotCi0gICAgc2Fjc25nIGJvYXJkOiBmaXggd2FybmluZ3MgInN1Z2dlc3QgZXhwbGljaXQgYnJhY2VzIHRvIGF2b2lkIGFtYmlndW91cyAnZWxzZSciCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGZmMTcwYTgxODBhNzlkYTRjZGFhYjFiMzBkNThjZDdiNmJlNTY1ZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAzIDIyOjM0OjA4IDIwMDggKzAyMDAKLQotICAgIENsZWFudXA6IGZpeCAiZXhwZWN0ZWQgc3BlY2lmaWVyLXF1YWxpZmllci1saXN0IGJlZm9yZSAncGh5c19zaXplX3QnIiBlcnJvcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA3MzBmMjk4NDg1OTg0YjAxMWI2ZWU4ZjRhY2I1MTFjYjQ1YTg0M2RkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDMgMjI6MDQ6MTcgMjAwOCArMDIwMAotCi0gICAgbG1iOiBmaXggImltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdsbWJfZnJlZSciIHdhcm5pbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzMjJlZjVlMjhkMmRjNjI1NzFhZmM2OTliMDBhZGQyMmE4ZTAwNmU0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDIgMjM6NTM6MjMgMjAwOCArMDIwMAotCi0gICAgQ2xlYW51cDogcmVtb3ZlIHJlZHVuZGFudCBkZWxldGluZyBvbiAqfiBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGM4YTNiMTA5ZjA3ZjAyMzQyZDA5N2IzMDkwODk2NWY3MjYxZDlmMTUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgMiAyMzo0OToxOCAyMDA4ICswMjAwCi0KLSAgICBDbGVhbnVwIG91dC1vci10cmVlIGJ1aWxkaW5nIGZvciBzb21lIGJvYXJkcyAoLmRlcGVuZCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhMzBjYzVhMzQwZTdmOGY1Zjg1YTBlMDhlN2Y2YzQxMDZjZTExN2M0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDIgMjM6Mzg6NTAgMjAwOCArMDIwMAotCi0gICAgQ2xlYW51cDogZml4IG91dC1vZi10cmVlIGJ1aWxkaW5nIGZvciBzb21lIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDQ2MWZhNjhkMjA4NjE4MTE0ODc5NDRkMjIyOTFkYjVhMTM0MTBlMjAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgMiAyMzowMDoxNCAyMDA4ICswMjAwCi0KLSAgICBDbGVhbnVwOiByZXBsYWNlIGhhcmQtd2lyZWQgJChBUikgJ2Nydicgc2V0dGluZ3MgYnkgJChBUkZMQUdTKQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDU5ODFlYmQzMjAxN2UwNjJiMDhhYTY3NDdjZjU5MTI3NmYyZGI3NzkKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDIwIDIyOjI2OjI0IDIwMDggKzAyMDAKLQotICAgIGZkdDogRml4IHR5cG8gaW4gdmFyaWFibGUgbmFtZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgYTdhNTk4MmNkMGYzNDgyZjg4MjI1YWY0ZGE3Nzk1YmM0ZjZjYjliYwotQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gMTkgMTE6MTE6MTkgMjAwOCArMDIwMAotCi0gICAgQWRkIGxvZ29zIGZvciBSUnZpc2lvbiBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci0KLWNvbW1pdCBlZTRhZTM4MzQyMTQyMjM3Y2E4NTkxM2Y4OGVlNTcwYzFlYjVjYTdjCi1BdXRob3I6IEVzYmVuIEhhYWJlbmRhbCA8RXNiZW5IYWFiZW5kYWxAZ21haWwuY29tPgotRGF0ZToJV2VkIEp1biAxOCAxMTowMzo1NyAyMDA4ICswMjAwCi0KLSAgICBtcGM4MjYwOiBhZGQgZmR0X2ZpeHVwX2V0aGVybmV0IHN1cHBvcnQKLQotICAgIEFkZCBzdXBwb3J0IGZvciB1cGRhdGluZyBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MgaW4gZmR0IGZvcgotICAgIGFsbCBNUEM4MjYwIHRhcmdldHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFc2JlbiBIYWFiZW5kYWwgPGVoYUBkb3JlZGV2ZWxvcG1lbnQuZGs+Ci0KLWNvbW1pdCBmNmE2OTU1OWQ2NDQ5OGEwNGUxZTBiMDg3YTliOTIwZTU3NzVmODY2Ci1BdXRob3I6IFN0ZXZlbiBBLiBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Ci1EYXRlOglUaHUgSnVuIDEyIDEzOjI0OjQyIDIwMDggLTA0MDAKLQotICAgIGNtZF9udmVkaXQuYzogY2xlYW4gdXAgc3ludGF4IGhpZ2hsaWdodGluZwotCi0gICAgTXkgdGV4dC1lZGl0b3IgKHZpbSkgaGFzIGEgYml0IG9mIHRyb3VibGUgc3ludGF4LWhpZ2hsaWdodGluZyB0aGUKLSAgICBjbWRfbnZlZGl0LmMgZmlsZSwgYmVjYXVzZSBpdCBhcHBhcmVudGx5IGRvZXMgbm90IHBhcnNlIEMKLSAgICBpZmRlZi9lbHNlL2VuZGlmLiBUaGUgZm9sbG93aW5nIHBhdGNoIGRvZXMgbm90IGNoYW5nZSB0aGUgYmVoYXZpb3Igb2YKLSAgICB0aGUgY29kZSBhdCBhbGwsIGJ1dCBkb2VzIGFsbG93IHRoZSBlZGl0b3IgdG8gcHJvcGVybHkKLSAgICBzeW50YXgtaGlnaGxpZ2h0IHRoZSBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RldmUgRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgotCi1jb21taXQgNzU2NzhjODA3YTYyNzJlY2M1NTQxZWIzMjg5OGM5Mzg4N2YwODQwMAotQXV0aG9yOiBTdGV2ZW4gQS4gRmFsY28gPHNmYWxjb0BoYXJyaXMuY29tPgotRGF0ZToJVGh1IEp1biAxMiAxMzoyMjoxMiAyMDA4IC0wNDAwCi0KLSAgICBNYWtlIHNldGVudigpIHJldHVybiBzdGF0dXMKLQotICAgIEN1cnJlbnRseSwgdGhlIHNldGVudiBmdW5jdGlvbiBkb2VzIG5vdCByZXR1cm4gYW4gZXJyb3IgY29kZS4KLSAgICBUaGlzIHBhdGNoIGFsbG93cyB0byB0ZXN0IGZvciBlcnJvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGV2ZSBGYWxjbyA8c2ZhbGNvQGhhcnJpcy5jb20+Ci0KLWNvbW1pdCA0OTI4ZTk3Yzg1MzEyODNjYTliMzY4YjdjMjlhOGExMmU3MjY1NjJhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSnVuIDExIDEwOjE0OjA2IDIwMDggLTA1MDAKLQotICAgIFBQQzogQWRkZWQgZmxzLCBmbHM2NCwgX19pbG9nMl91NjQsIGFuZCBmZnM2NCB0byBiaXRvcHMKLQotICAgIGZsczY0LCBfX2lsb2cyX3U2NCwgZmZzNjQgYXJlIHZhcmlhbnRzIHRoYXQgd29yayBvbiBhbiB1NjQsCi0gICAgYW5kIGZscyBpcyB1c2VkIHRvIGltcGxlbWVudCB0aGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgzMDAyYTc3Y2JkZjM4MzAxNWNhMzg0ZWZmNWZhMzE3MjJkOGU1NzEKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJTW9uIEp1biA5IDIyOjU4OjQ4IDIwMDggKzAyMDAKLQotICAgIGkuTVgzMTogQ2xlYW51cCBjb21tZW50cyBpbiBsb3dsZXZlbF9pbml0LlMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBmOGNjMzEyYmJlZTY5MjU3ZDc0MWRjOWY0MDYyZjRhMGY1YWRmNjA5Ci1BdXRob3I6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci1EYXRlOglTdW4gSnVuIDggMjM6Mjg6MzMgMjAwOCAtMDcwMAotCi0gICAgTW92ZSBjb25kaXRpb25hbCBjb21waWxhdGlvbiBvZiBNUEM4WFhYIFNQSSBkcml2ZXIgdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkOTJlYTIxYmFmYjY3NGVlMmJmMjc0NDc5NzBiMDQ3ODQ1ZTdiMGEyCi1BdXRob3I6IEp1ZXJnZW4gS2lsYiA8Si5LaWxiQGdteC5kZT4KLURhdGU6CVN1biBKdW4gOCAxNzo1OTo1MyAyMDA4ICswMjAwCi0KLSAgICBpLk1YMzE6IGZpeGVkIENUUkwtQyBkZXRlY3Rpb24KLQotICAgIFRoZSBSZWdpc3RlciBVUlhEIGNvbnRhaW5zIHN0YXR1cyBpbmZvcm1hdGlvbiBpbiBiaXRzIFsxNS4uOF0uCi0gICAgV2l0aCBzdGF0dXMgYml0IDE1IHNldCwgQ1RSTC1DIHdhcyByZXBvcnRlZCBhcyAweDgwMDMgaW5zdGVhZAotICAgIG9mIDB4MDMuIFRoZXJlZm9yZSBDVFJMLUMgd2FzIG5vdCBkZXRlY3RlZC4KLSAgICBUbyBzb2x2ZSB0aGlzLCBiaXRzIFsxNS4uOF0gd2VyZSBtYXNrZWQgb3V0IG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEp1ZXJnZW4gS2lsYiA8Si5LaWxiQGdteC5kZT4KLSAgICBBY2tlZC1ieTogRmVsaXggUmFkZW5za3kgPGZlbGl4QGVtYmVkZGVkLXNvbC5jb20+Ci0KLWNvbW1pdCBkZDFjNTUyM2Q2ZjQ0ZTg0MmU2OWYyZmNiNTA3ODhjNjA2MGVhYjg2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKdWwgMSAxNzowMzoxOSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCA0NjBFWC9HVCBQQ0llIHBvcnQgaW5pdGlhbGl6YXRpb24KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgd2hlcmUgdGhlIDQ2MEVYL0dUIFBDSWUgVVRMU0VUMSByZWdpc3RlciB3YXMKLSAgICBjb25maWd1cmVkIGluY29ycmVjdGx5LiBUaGFua3MgdG8gT2xnYSBCdWNob25pbmEgZnJvbSBBTUNDIGZvciBwb2ludGluZwotICAgIHRoaXMgb3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjU3MWFmZGUwMjk1YjAwN2E0NTA1NWVlNDlmODgyMmM3NTNhNTY1MQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEp1biA3IDEyOjI5OjUyIDIwMDggKzAyMDAKLQotICAgIGFkZCBTSEEyNTYgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBGcmFuY2VzY28gQWxiYW5lc2UgPEZyYW5jZXNjby5BbGJhbmVzZUBzd2lzc2NvbS5jb20+Ci0KLWNvbW1pdCAzYmFiNzZhMjZlMDNkZjRmZjgxMzQyZmNjMTYzOTNjZTM3ZDk3NjZiCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgSnVuIDYgMjM6MDc6NDAgMjAwOCArMDIwMAotCi0gICAgRGVsYXkgRklUIGZvcm1hdCBjaGVjayBvbiBzZWN0b3IgYmFzZWQgZGV2aWNlcwotCi0gICAgR2xvYmFsIEZJVCBpbWFnZSBvcGVyYXRpb25zIGxpa2UgZm9ybWF0IGNoZWNrIGNhbm5vdCBiZSBwZXJmb3JtZWQgb24KLSAgICBhIGZpcnN0IHNlY3RvciBkYXRhLCBkZWZlciB0aGVtIHRvIHRoZSBwb2ludCB3aGVuIHdob2xlIEZJVCBpbWFnZSB3YXMKLSAgICB1cGxvYWRlZCB0byBhIHN5c3RlbSBSQU0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotICAgIFBhcnRpYWwgKCdjbWRfbmFuZCcgY2FzZSkgQWNrZWQtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci0gICAgTkFORCBhbmQgRE9DIGJpdHMgQWNrZWQtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTgxMDI2M2FmZWM1YWM1ZjM4ZjkyOTYzYmIzYjZkNzk5ZTQzMzFkMAotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDMgMTc6Mzg6MTkgMjAwOCArMDgwMAotCi0gICAgc2F0YTogd2FpdCBmb3IgZGV2aWNlIHVwZGF0aW5nIHNpZ25hdHVyZSB0byBob3N0Ci0KLSAgICBUaGUgZHJpdmVyIG5lZWQgd2FpdCBmb3IgdGhlIGRldmljZSB1cGRhdGluZyBzaWduYXR1cmUgdG8gaG9zdC4KLSAgICBJZiB3ZSBkb24ndCB3YWl0IGZvciBpdCwgdGhlIGRyaXZlciBjYW4gbm90IGRldGVjdCB0aGUgZGV2aWNlKGRpc2spCi0gICAgd2hlbiB0aGUgc3lzdGVtIHBvd2VycyB1cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3NDVkOGEwZDNjZWE4MmU2ZDE3NTNlMTRhZmI0NTg4YzM0NzYxYjE1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBKdW4gMjggMTQ6NTY6MTcgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggNDYwRVggZXJyYXRhIHdpdGggQ1BVIGxvY2t1cCB1cG9uIGhpZ2ggQUhCIHRyYWZmaWMKLQotICAgIFRoaXMgcGF0Y2ggaW1wbGVtZW50cyBhIGZpeCBwcm92aWRlZCBieSBBTUNDIHNvIHRoYXQgdGhlIGxvY2t1cCB1cG9uCi0gICAgc2ltdWx0YW5pb3VzIHRyYWZmaWMgb24gQUhCIFVTQiBPVEcsIFVTQiAyLjAgYW5kIFNBVEEgZG9lc24ndCBvY2N1cgotICAgIGFueW1vcmU6Ci0KLSAgICBTZXQgU0RSMF9BSEJfQ0ZHW0EyUF9JTkNSNF0gKGJpdCAyNCkgYW5kIGNsZWFyIFNEUjBfQUhCX0NGR1tBMlBfUFJPVDJdCi0gICAgKGJpdCAyNSkgZm9yIGEgbmV3IDQ2MEVYIGVycmF0YSByZWdhcmRpbmcgY29uY3VycmVudCB1c2Ugb2YgQUhCIFVTQiBPVEcsCi0gICAgVVNCIDIuMCBob3N0IGFuZCBTQVRBLgotCi0gICAgVGhpcyBlcnJhdGEgaXMgbm90IG9mZmljaWFsbHkgYXZhaWxhYmxlIHlldC4gSSdsbCB1cGRhdGUgdGhlIGNvbW1lbnQKLSAgICB0byBhZGQgdGhlIGVycmF0YSBudW1iZXIgbGF0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4YjYxNmVkYjExOGUzN2QwNWY2NDAxMzg5ZWFlZTFjNjM2YjIyODI4Ci1BdXRob3I6IFN0dWFydCBXb29kIDxzdHVhcnQud29vZEBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KLURhdGU6CU1vbiBKdW4gMiAxNjo0MjoxOSAyMDA4IC0wNDAwCi0KLSAgICBzZXJpYWxfcGwwMTAuYzogYWRkIHdhdGNoZG9nIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0dWFydCBXb29kIDxzdHVhcnQud29vZEBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KLQotY29tbWl0IDg2ZDMyNzNlMmI3YmUzZmZmYjQ1ZTIwYzA4NTM1ZDZhZDNhZGVkNmIKLUF1dGhvcjogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgotRGF0ZToJTW9uIEp1biAyIDE2OjQwOjA4IDIwMDggLTA0MDAKLQotICAgIGpmZnMyXzFwYXNzLmM6IGFkZCB3YXRjaGRvZyBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdHVhcnQgV29vZCA8c3R1YXJ0Lndvb2RAbGFieHRlY2hub2xvZ2llcy5jb20+Ci0KLWNvbW1pdCA1NzQ0ZGRjNjYzN2ZlYTRmN2I5MTFhNTRhNWZhODYwY2I4MWE1ZDg5Ci1BdXRob3I6IFNhc2NoYSBMYXVlIDxzYXNjaGEubGF1ZUBsaWViaGVyci5jb20+Ci1EYXRlOglGcmkgTWF5IDMwIDA5OjQ4OjE0IDIwMDggKzAyMDAKLQotICAgIENvbmZpZ3VyZSBEU1AgUE9TVDsgYWRkIHdhdGNoZG9nIHJlc2V0IHRvIGRpYWcgY29tbWFuZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KLQotY29tbWl0IGYxMzUyNjUxNzg1OWJmNmI1NzNlMjNmZjQ3MTk5ZTEwN2QxMDA5YjUKLUF1dGhvcjogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KLURhdGU6CVRodSBNYXkgMjkgMTA6NDA6MTcgMjAwOCArMDIwMAotCi0gICAgQWRkIHNhdGEgc2lsMzExNCBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgotCi1jb21taXQgZTA5M2EyNDc2MjgyMjgxMDBmNDA1YjZkN2Y2YjFiZmMxNjE0MTkzOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEp1biAyOCAyMzozNDozNyAyMDA4ICswMjAwCi0KLSAgICBDb2RpbmcgU3R5bGUgQ2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDAxZGIyMzJkZDdhMGNlYjgxMjA4YTlmMjU0NTcyMGM4MGU1YmZkODMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKdW4gMjggMjM6MTY6MDEgMjAwOCArMDIwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGM3Zjg3OWVjMmIzODljNGYyYmY3MjZiMjkzYmQ1MTZmNGM2OTJlMDMKLUF1dGhvcjogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci1EYXRlOglXZWQgTWF5IDIxIDEzOjU4OjQxIDIwMDggLTA0MDAKLQotICAgIEFSTTogQWRkIHN1cHBvcnQgZm9yIEx5cnRlY2ggU0ZGLVNEUiBib2FyZCAoQVJNOTI2RUpTKQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBMeXJ0ZWNoIFNGRi1TRFIgYm9hcmQsCi0gICAgYmFzZWQgb24gdGhlIFRJIERhVmluY2kgYXJjaGl0ZWN0dXJlIChBUk05MjZFSlMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSHVnbyBWaWxsZW5ldXZlIDxodWdvLnZpbGxlbmV1dmVAbHlydGVjaC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUGhpbGlwIEJhbGlzdGVyIDxwaGlsaXBAYmFsaXN0ZXIub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzNDExODhiOWNjYWE4ZDQ0NjJkNzcyY2MwNjdhY2E4ZDc2MTg2MzNhCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVRodSBNYXkgMjIgMTE6MDk6NTkgMjAwOCArMDIwMAotCi0gICAgTU1DOiBDb25zb2xpZGF0ZSBNTUMvU0QgY29tbWFuZCBkZWZpbml0aW9ucwotCi0gICAgVGhpcyBtb3ZlcyB0aGUgTU1DIGFuZCBTRCBDYXJkIGNvbW1hbmQgZGVmaW5pdGlvbnMgZnJvbQotICAgIGluY2x1ZGUvYXNtL2FyY2gvbW1jLmggaW50byBpbmNsdWRlL21tYy5oLiBUaGVzZSBkZWZpbml0aW9ucyBhcmUKLSAgICBnaXZlbiBieSB0aGUgTU1DIGFuZCBTRCBDYXJkIHN0YW5kYXJkcywgbm90IGJ5IGFueSBwYXJ0aWN1bGFyCi0gICAgYXJjaGl0ZWN0dXJlLgotCi0gICAgVGhlcmUncyBhIGxvdCBtb3JlIHJvb20gZm9yIGNvbnNvbGlkYXRpb24gaW4gdGhlIE1NQyBkcml2ZXJzIHdoaWNoCi0gICAgSSdtIGhvcGluZyB0byBnZXQgZG9uZSBldmVudHVhbGx5LCBidXQgdGhpcyBwYXRjaCBpcyBhIHN0YXJ0LgotCi0gICAgQ29tcGlsZS10ZXN0ZWQgZm9yIGFsbCBhdnIzMiBib2FyZHMgYXMgd2VsbCBhcyBscGMyMjkyc29kaW1tIGFuZAotICAgIGx1YmJvY2suIFRoaXMgc2hvdWxkIGNvdmVyIGFsbCB0aHJlZSBtbWMgZHJpdmVycyBpbiB0aGUgdHJlZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGZhNjBlZGZjNGM5NTI2MjZlMDQ4YzBlMDY1ZjY1NGIzYzE4MjJmYTUKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+Ci1EYXRlOglXZWQgTWF5IDIxIDE0OjM4OjA4IDIwMDggKzA5MDAKLQotICAgIFVzZSBiZXR0ZXIgRXRoZXJuZXQgdGltaW5ncyBmb3IgYXBvbGxvbiBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDQxYzVlYWE3MjUzZWQ4MmJiYWUxZWRhNTY2Nzc1NTg3MmM2MTUxNjQKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1biAxNiAxMzo1ODo1NiAyMDA4IC0wNTAwCi0KLSAgICBSZXNpemUgZGV2aWNlIHRyZWUgdG8gYWxsb3cgc3BhY2UgZm9yIGJvYXJkIGNoYW5nZXMgYW5kIHRoZSBjaG9zZW4gbm9kZQotCi0gICAgQ3VycmVudCBjb2RlIHJlcXVpcmVzIHRoYXQgYSBjb21waWxlZCBkZXZpY2UgdHJlZSBoYXZlIHNwYWNlIGFkZGVkIHRvIHRoZSBlbmQgdG8KLSAgICBsZWF2ZSByb29tIGZvciBleHRyYSBub2RlcyBhZGRlZCBieSBib2FyZCBjb2RlIChhbmQgdGhlIGNob3NlbiBub2RlKS4gIFRoaXMKLSAgICByZXF1aXJlcyB0aGF0IGRldmljZSB0cmVlIGNyZWF0b3JzIGFudGljaXBhdGUgaG93IG11Y2ggc3BhY2UgVS1Cb290IHdpbGwgYWRkIHRvCi0gICAgdGhlIHRyZWUsIHdoaWNoIGlzIGFic3VyZC4JSWRlYWxseSwgdGhlIGNvZGUgd291bGQgcmVzaXplIGFuZC9vciByZWxvY2F0ZSB0aGUKLSAgICB0cmVlIHdoZW4gaXQgbmVlZGVkIG1vcmUgc3BhY2UsIGJ1dCB0aGlzIHdvdWxkIHJlcXVpcmUgYSBzeXN0ZW1pYyBjaGFuZ2UgdG8gdGhlCi0gICAgZmR0IGNvZGUsIHdoaWNoIGlzIG5vbi10cml2aWFsLiAgSW5zdGVhZCwgd2UgcmVzaXplIHRoZSB0cmVlIGluc2lkZQotICAgIGJvb3RfcmVsb2NhdGVfZmR0LCByZXNlcnZpbmcgZWl0aGVyIHRoZSByZW1haW5kZXIgb2YgdGhlIGJvb3RtYXAgKGluIHRoZSBjYXNlCi0gICAgd2hlcmUgdGhlIGZkdCBpcyBpbnNpZGUgdGhlIGJvb3RtYXApLCBvciBhZGRpbmcgQ0ZHX0ZEVF9QQUQgYnl0ZXMgdG8gdGhlIHNpemUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3NTcwYTk5NDFmYzU2NTkyMjA3ODY3OWE3MmQyNDZmZTIwOGQ2OTZkCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdW4gMTYgMTM6NTg6NTUgMjAwOCAtMDUwMAotCi0gICAgRml4IGFuIHVuZGVyZmxvdyBidWcgaW4gX19sbWJfYWxsb2NfYmFzZQotCi0gICAgX19sbWJfYWxsb2NfYmFzZSBjYW4gdW5kZXJmbG93IGlmIGl0IGZhaWxzIHRvIGZpbmQgZnJlZSBzcGFjZS4gIFRoaXMgd2FzIGZpeGVkCi0gICAgaW4gbGludXggd2l0aCBjb21taXQgZDkwMjRkZjAyZmZlNzRkNzIzZDk3ZDU1MmY4NmRlM2IzNGJlYjhjYy4gIFRoaXMgcGF0Y2gKLSAgICBtZXJlbHkgdXBkYXRlcyBfX2xtYl9hbGxvY19iYXNlIHRvIHJlc2VtYmxlIHRoZSBjdXJyZW50IHZlcnNpb24gaW4gTGludXguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2Mzc5NmM0ZTYxYjIwN2QyZTYzNTcyOWQ0MWI3YTdmN2QxODhiMDNjCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdW4gMTYgMTM6NTg6NTQgMjAwOCAtMDUwMAotCi0gICAgQWRkIGxtYl9mcmVlCi0KLSAgICBsbWJfZnJlZSBhbGxvd3MgdXMgdG8gdW5yZXNlcnZlIHNvbWUgbWVtb3J5IHNvIHdlIGNhbiB1c2UgbG1iX2FsbG9jX2Jhc2Ugb3IKLSAgICBsbWJfcmVzZXJ2ZSB0byB0ZW1wb3JhcmlseSByZXNlcnZlIHNvbWUgbWVtb3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGIwM2FjOGI1MTAyYWQ5NWY5ZmVkZTdkMTNmYTIzNjk3NzU5M2U3ZAotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVuIDE2IDEzOjU4OjUzIDIwMDggLTA1MDAKLQotICAgIEFkZCBBTElHTigpIG1hY3JvCi0KLSAgICBBTElHTigpIHJldHVybnMgdGhlIHNtYWxsZXN0IGFsaWduZWQgdmFsdWUgZ3JlYXRlciB0aGFuIHRoZSBwYXNzZWQKLSAgICBpbiBhZGRyZXNzIG9yIHNpemUuICBUYWtlbiBmcm9tIExpbnV4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTMyNjJhZjg1ZTNlOWQ5OTc0YzZjMDhmYmQzN2E5YTcyZTA5MGNhMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVuIDI0IDE3OjE1OjIyIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGNvbXBpbGF0aW9uIHByb2JsZW1zIHdpdGggcGh5c19zaXplX3QKLQotICAgIFRoaXMgcGF0Y2ggaW5jbHVkZXMgPGFzbS90eXBlcy5oPiBiZWZvcmUgPGFzbS91LWJvb3QuaD4gaW4gc29tZSA0eHgKLSAgICBib2FyZCBzcGVjaWZpYyBmaWxlcyB3aGVyZSBpdCBoYXMgYmVlbiBtaXNzaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjhlYWIwZDc3MzUyYjg0ODg1ZjkzODc1OWJmMjYxMmI3YmYwYmM0NAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CU1vbiBNYXkgMTkgMTI6MjY6MzggMjAwOCArMDIwMAotCi0gICAgQ29uZGl0aW9uYWxseSBhZGQgLWZuby1zdGFjay1wcm90ZWN0b3IgdG8gQ0ZMQUdTCi0KLSAgICBXaGVuIGNvbXBpbGUtdGVzdGluZyBvbiBwb3dlcnBjLCBJIGdldCBlcnJvcnMgbGlrZSB0aGlzOgotCi0gICAgbmV0L25mcy5jOjQyMjogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zdGFja19jaGtfZmFpbF9sb2NhbCcKLQotICAgIFRoaXMgc2VlbXMgdG8gYmUgYmVjYXVzZSAtZnN0YWNrLXByb3RlY3RvciBpcyBvbiBieSBkZWZhdWx0LCBzbwotICAgIGxldCdzIGV4cGxpY2l0bHkgZGlzYWJsZSBpdCBvbiBhbGwgYXJjaGl0ZWN0dXJlcyB0aGF0IHN1cHBvcnQgdGhlCi0gICAgb3B0aW9uLgotCi0gICAgVGhlIFVidW50dSB0b29sY2hhaW4gaXMgYWZmZWN0ZWQgYnkgdGhpcyBwcm9ibGVtLCBhbmQgYWNjb3JkaW5nIHRvCi0gICAgTWlrZSBGcnlzaW5nZXIsIEdlbnRvbyBoYXMgYmVlbiBydW5uaW5nIHdpdGggU1NQIGVuYWJsZWQgZm9yIHllYXJzLgotICAgIE1vcmUgYW5kIG1vcmUgZGlzdHJvcyBhcmUgdHVybmluZyBTU1Agb24gYnkgZGVmYXVsdCwgc28gdGhpcyBwcm9ibGVtCi0gICAgaXMgbGlrZWx5IHRvIGdldCB3b3JzZSBpbiB0aGUgZnV0dXJlLgotCi0gICAgQWxzbywgcG93ZXJwYyBqdXN0IGhhcHBlbnMgdG8gYmUgb25lIG9mIHRoZSBhcmNoZXMgSSBkbwotICAgIGNvbXBpbGUtdGVzdGluZyBvbi4gVGhlcmUgbWF5IGJlIG90aGVyIGFyY2hlcyBhZmZlY3RlZCBieSB0aGlzIHRvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgZGZkM2JlODgxYzAzYTI2ZTMxZjBkZWE0YTQyZTc2MDYxZmE2MTBhYwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1MiAyMDA4ICswMjAwCi0KLSAgICBwY21jaWEvdGlfcGNpMTQxMGE6IE1vdmUgY29tcGlsZSBjb25kaXRpb24gdG8gdGhlIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzJkNWQ1ZjdiNWM3NGExODhkZjIzOGVjNmRkODI0ZDgwYzc0ODU3YQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1MSAyMDA4ICswMjAwCi0KLSAgICBweGFfcGNtY2lhOiBNb3ZlIGNvbXBpbGUgY29uZGl0aW9uIHRvIHRoZSBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGM5ZWZmMzI4ODFmYjQyOTEwMWM5MzdjZjhjMjY4ZjFkNDJlNWMyYTkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTggMTk6MDk6NTAgMjAwOCArMDIwMAotCi0gICAgbWFyYWJ1bl9wY21jaWE6IE1vdmUgY29tcGlsZSBjb25kaXRpb24gdG8gdGhlIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNmExOWM0NmNhZTQzYzE2YzUyOGVkZGVmYWUzZGI5NzEzNGYxOTE1ZAotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglNb24gSnVuIDIzIDEzOjI1OjM0IDIwMDggKzAyMDAKLQotICAgIGZpeCBub24td29ya2luZyBtdkJMLU03Ci0KLSAgICBBZGQgbWlzc2luZyAjZGVmaW5lIENPTkZJR19ISUdIX0JBVFMgaW4gbXZCTC1NNyBib2FyZCBjb25maWcgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODQ2ZjE1NzRkZGRkZWRhMmJjMjI3NjU1ZTY4NzMwODY5NWY0MWNkYwotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglNb24gSnVuIDIzIDExOjQwOjU2IDIwMDggKzAyMDAKLQotICAgIGZpeCBzeXN0ZW0gY29uZmlnIG92ZXJ3cml0ZSBAIE1QQzgzNHggYW5kIE1QQzgzMTMKLQotICAgIER1cmluZyA4M3h4IHNldHVwIHRoZSAiU3lzdGVtIEkvTyBjb25maWd1cmF0aW9uIHJlZ2lzdGVyIGhpZ2giIGdldHMKLSAgICBvdmVyd3JpdHRlbiB3aXRoIHVzZXIgZGVmaW5lZCB2YWx1ZSBpZiBDRkdfU0lDUkggaXMgZGVmaW5lZC4KLQotICAgIFJlZ2FyZGluZyB0byB0aGUgTVBDODM0eCBtYW51YWwgKFRhYmxlIDUtMjggcmV2ZS4xKSBiaXRzIDI4KzI5IG9mIFNJQ1JICi0gICAgbXVzdCBrZWVwIHRoZWlyIHJlc2V0IHZhbHVlIHJlZ2FyZGxlc3Mgb2YgY29uZmlndXJhdGlvbi4KLQotICAgIE9uIG15IGJvYXJkICh1c2luZyBSR01JSSkgdGhvc2UgYml0cyBhcmUgc2V0IGFmdGVyIHJlc2V0IC0geWV0IGl0J3MKLSAgICB1bmNsZWFyIHdoZXJlIHRoZXkgY29tZSBmcm9tLgotCi0gICAgVGhlIHBhdGNoIGtlZXBzIGJvdGggYml0cyBvbiBNUEM4MzR4IGFuZCBNUEM4MzEzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0ODkwMjQ2YTJjNWRmOTBhNzRlMjk0MWUzNjczYTQ5YmJkMzZhZWU5Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDE3IDE3OjQ1OjI3IDIwMDggLTA1MDAKLQotICAgIG1wYzgzeHg6IG1vdmUgQ1BVX1RZUEVfRU5UUlkgb3ZlciB0byBwcm9jZXNzb3IuaAotCi0gICAgdG8gYXZvaWQgdGhpczoKLQotICAgIGNwdS5jOjQ3OjE6IHdhcm5pbmc6ICJDUFVfVFlQRV9FTlRSWSIgcmVkZWZpbmVkCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGNwdS5jOjMzOgotICAgIC9ob21lL2tpbS9naXQvdS1ib290L2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oOjk4MjoxOiB3YXJuaW5nOiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcHJldmlvdXMgZGVmaW5pdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFhYzdhNTA5NWI5NjhkNmM5YTNlNjQyMmYzMWI0YWQyMDNjYWM5YzgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1biAyMyAxMToxNTowOSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIGluIGdwaW9fY29uZmlnKCkKLQotICAgIEFzIHBvaW50ZWQgb3V0IGJ5IEd1ZW5uYWRpIExpYWtob3ZldHNraSAodGhhbmtzKSwgcGluMiBpcyBhbHJlYWR5IHNoaWZ0ZWQKLSAgICBsZWZ0IGJ5IG9uZS4gU28gdGhlIGFkZGl0aW9uYWwgc2hpZnQgaXMgYm9ndXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0MDc3NzgxMjMxNmZjMjUyYzk0MTY2NWMwZjYwYzE0OGZkNzlkNTBmCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAyMCAyMjoyNDowNSAyMDA4ICswMjAwCi0KLSAgICBmZHQ6IEZpeCB0eXBvIGluIHZhcmlhYmxlIG5hbWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDVmNzIzYTNiOThjNjMwYmRlMzNkZTc0MzUxZjIxMjE2OTFmZGVmMTQKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIEp1biAyMCAxMDo0MTowNSAyMDA4ICswMjAwCi0KLSAgICBhdnIzMjogRW5hYmxlIFNQSSBmbGFzaCBzdXBwb3J0IG9uIEFUTkdXMTAwCi0KLSAgICBUaGUgQVROR1cxMDAgaGFzIDhNQiBEYXRhRmxhc2ggb24gYm9hcmQuIEdpdmUgdXNlcnMgYWNjZXNzIHRvIGl0IHRocm91Z2gKLSAgICB0aGUgbmV3IFNQSSBmbGFzaCBmcmFtZXdvcmsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA1NjA1ZWY2YjU4MDI5MjFjYmVmZTZhOTMzYTlkZWEzNDk3Mzk2YjVjCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBKdW4gMjAgMTI6NDQ6MjggMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IEZpeCBTUEkgcG9ydG11eCBpbml0aWFsaXphdGlvbgotCi0gICAgVXNlIHRoZSBuZXcgR1BJTyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIHRvIHNldCB1cCB0aGUgY2hpcCBzZWxlY3QgbGluZXMsCi0gICAgYW5kIG1ha2Ugc3VyZSBib3RoIGJ1c3NlcyB1c2UgR1BJTyBmb3IgY2hpcCBzZWxlY3QgY29udHJvbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDQ2ODhmOWUzNGE4N2U4MjVhZWQzNGQwN2M5Y2E3YTI3M2U2ZmM4YWIKLUF1dGhvcjogUGV0ZXIgTWEgPHBtYUBtZWRpYW1hdGVjaC5jb20+Ci1EYXRlOglTdW4gSnVuIDEgMjI6NTk6MjQgMjAwOCAtMDcwMAotCi0gICAgYXZyMzI6IEFkZCBHUElPIG1hbmlwdWxhdGlvbiBmdW5jdGlvbnMKLQotICAgIEFkZHMgR1BJTyBtYW5pcHVsYXRpb24gZnVuY3Rpb25zIGZvciBBVlIzMiBBUDcgcGxhdGZvcm0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQZXRlciBNYSA8cG1hQG1lZGlhbWF0ZWNoLmNvbT4KLSAgICBbaGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbTogY29kaW5nIHN0eWxlIGZpeHVwLCBzbGlnaHQgc2ltcGxpZmljYXRpb25dCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYjRmZTFhNzEwOTBjNzNlZmM2ZTQxODhlZWQxODhiMmZmNjdmYzAyYQotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVRodSBKdW4gNSAxMzowMjozMCAyMDA4ICswMjAwCi0KLSAgICBNUEM4MzYwRVJESzogYWRhcHQgTkFORCBpbnRlcmZhY2UgZm9yIHRoZSByZS13cml0dGVuIEZTTCBOQU5EIFVQTSBkcml2ZXIKLQotICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyBwYXRjaCBzZW50IGEgZmV3IG1pbnV0ZXMgYWdvOgotICAgICJOQU5EIEZTTCBVUE06IGRyaXZlciByZS13cml0ZSB1c2luZyB0aGUgaHdjb250cm9sIGNhbGxiYWNrIgotICAgIEl0IGlzIHVudGVzdGVkLCBvZiBjb3Vyc2UuIEFudG9uLCBjb3VsZCB5b3UgcGxlYXNlIGdpdmUgaXQgYSB0cnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLSAgICBBY2tlZC1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCA5NjAyNmQ0MmZhNGU2NDZkMjgzMThjMGExNDM4YWFjNGIyMDE3OTA5Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVRodSBKdW4gMTIgMTI6NDA6MTEgMjAwOCArMDIwMAotCi0gICAgRml4IDR4eCBidWlsZCBpc3N1ZQotCi0gICAgQnVpbGRpbmcgZm9yIDR4eCBkb2Vzbid0IHdvcmsgc2luY2UgY29tbWl0IDRkYmRiNzY4OgotCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIDR4eF9wY2llLmM6Mjg6Ci0gICAgaW5jbHVkZS9hc20vcHJvY2Vzc29yLmg6OTcxOiBlcnJvcjogZXhwZWN0ZWQgJyknIGJlZm9yZSAndmVyJwotICAgIG1ha2VbMV06ICoqKiBbNHh4X3BjaWUub10gRXJyb3IgMQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYTAzNmIwNDQzNjU3ZmUwZjQ3NzM3ODZkZTkwOTIyNTE4NjlmMDhhYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEp1biAxOSAwMTo0NTo1MCAyMDA4IC0wNTAwCi0KLSAgICBNUEM4NjEwSFBDRDogUmVwb3J0IGJvYXJkIGlkLCBib2FyZCB2ZXJzaW9uIGFuZCBmcGdhIHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgN2RlOGMyMWYxNGRmOWMyMGZkY2Y2MDI3YWVjOGU4NTQ1Zjc1ZjgzNQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEp1biAxOSAwMTo0NToyNyAyMDA4IC0wNTAwCi0KLSAgICBNUEM4NjQxSFBDTjogUmVwb3J0IGJvYXJkIGlkLCBib2FyZCB2ZXJzaW9uIGFuZCBmcGdhIHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmI4YzA2MWVhMDVmYzY4ZDM3ZTJhOGI5ZjhjOTQ5ZDc2YzhkNzFhOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVuIDE2IDEwOjQwOjAyIDIwMDggKzAyMDAKLQotICAgIGNmaS1mbGFzaDogRml4IHByb2JsZW0gaW4gZmxhc2hfdG9nZ2xlKCksIGJ1c3kgd2FzIG5vdCBkZXRlY3RlZCByZWxpYWJseQotCi0gICAgVGhpcyBwYXRjaCBzaW1wbGlmaWVzIGZsYXNoX3RvZ2dsZSgpIChBTUQgY29tbWFuZHNldCksIHdoaWNoIGlzIHVzZWQgdG8KLSAgICBkZXRlY3QgaWYgYSBGTEFTSCBkZXZpY2UgaXMgc3RpbGwgYnVzeSB3aXRoIGVyYXNlL3Byb2dyYW0gb3BlcmF0aW9ucy4gT24KLSAgICA4MDBNSHogQ2FueW9ubGFuZHMvR2xhY2llciBib2FyZHMgKDQ2MEVYL0dUKSB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbgotICAgIGRpZCBub3QgZGV0ZWN0IHRoZSBidXN5IHN0YXRlIHJlbGlhYmx5LCByZXN1bHRpbmcgaW4gbm9uIGVyYXNlZCBzZWN0b3JzCi0gICAgZXRjLiBUaGlzIHBhdGNoIG5vdyBzaW1wbGlmaWVzIHRoaXMgZnVuY3Rpb24gYnkgImp1c3QiIGNvbXBhcmluZyB0aGUKLSAgICBjb21wbGV0ZSBkYXRhLXdvcmQgaW5zdGVhZCBvZiBBTkRpbmcgaXQgd2l0aCB0aGUgY29tbWFuZC13b3JkICgweDQwKQotICAgIGJlZm9yZSB0aGUgY29tcGF0aXNvbi4gSXQgaXMgZG9uZSB0aGUgc2FtZSB3YXkgaW4gdGhlIExpbnV4IGltcGxlbWVudGF0aW9uCi0gICAgY2hpcF9yZWFkeSgpIGluIGNmaV9jbWRzZXRfMDAwMi5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOWU0MDA2YmNhM2Q5ZmI0YTJkMDYxOTk2NzcxMDM2Y2IwMWU1MzlkMwotQXV0aG9yOiBQaGlsaXAgQmFsaXN0ZXIgPHBoaWxpcEBiYWxpc3Rlci5vcmc+Ci1EYXRlOglNb24gSnVuIDE2IDA4OjU4OjA3IDIwMDggLTA0MDAKLQotICAgIE5BTkQ6IEFkZCBtaXNzaW5nIGRlY2xhcmF0aW9uIHRvIG5vbi1yZWR1bmRhbnQgc2F2ZWVudigpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyY2RiN2Y1MGFjNTk1OTQ1NDBmZmZkZjhkYmQ3YjEyYmVhYzc5YzUyCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJTW9uIEp1biAyIDE1OjA5OjU1IDIwMDggKzAyMDAKLQotICAgIE1QQzgzNjBFUkRLOiBhZGFwdCBOQU5EIGludGVyZmFjZSBmb3IgdGhlIHJlLXdyaXR0ZW4gRlNMIE5BTkQgVVBNIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0gICAgQWNrZWQtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjEyZWQ5MDYxNWMzZDIwZmE2YmQ3M2Q3MGQ1MTUzYmQwZDEyNGU1ZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVuIDEwIDE1OjM0OjExIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ2FueW9ubGFuZHM6IERpc2FibGUgdGhlIFJUQyBNNDFUNjIgc3F1YXJlIHdhdmUgb3V0cHV0Ci0KLSAgICBUaGlzIHBhdGNoIGRpc2FibGVzIHRoZSBzcXVhcmUgd2F2ZSBvdXRwdXQgb2YgdGhlIE00MVQ2MiBSVEMgdXNlZCBvbgotICAgIENhbnlvbmxhbmRzICYgR2xhY2llci4gSGVyZSB0aGUgZXhwbGFuYXRpb246Ci0KLSAgICBUaGUgc2VyaWFsIHJlYWwtdGltZSBjbG9jayBwYXJ0IHVzZWQgaW4gdGhlIGRlc2lnbiBpcyBhbgotICAgIFNUTWljcm8gTTQxVDYyLiBUaGlzIHBhcnQgaGFzIGEgZnVsbC10aW1lIDMyS0h6IHNxdWFyZSB3YXZlCi0gICAgb3V0cHV0IHRoYXQgaXMgY29ubmVjdGVkIHRvIHRoZSBUbXJDbGsgaW5wdXQgdG8gdGhlCi0gICAgcHJvY2Vzc29yLiBUaGUgZGVmYXVsdCBzdGF0ZSBmb3IgdGhpcyBzcXVhcmUgd2F2ZSBvdXRwdXQgaXMKLSAgICBlbmFibGVkIHNvIHRoZSBvdXRwdXQgcnVucyBjb250aW51b3VzbHkgd2hlbiB0aGUgYm9hcmQgaXMKLSAgICBwb3dlcmVkIG5vcm1hbGx5IGFuZCBhbHNvIGZyb20gdGhlIGJhdHRlcnkuIFRoZSBUbXJDbGsgaW5wdXQKLSAgICB0byB0aGUgcHJvY2Vzc29yIGdvZXMgdG8gZ3JvdW5kIHdoZW4gdGhlIHBvd2VyIGlzIHJlbW92ZWQKLSAgICBmcm9tIHRoZSBib2FyZC9wcm9jZXNzb3IsIGFuZCB0aGVyZWZvcmUgdGhlIHJ1bm5pbmcgc3F1YXJlCi0gICAgd2F2ZSBvdXRwdXQgaXMgZHJpdmluZyBncm91bmQgd2hpY2ggZHJhaW5zIHRoZSBiYXR0ZXJ5IHF1aWNrbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhOTRmMjJmMDhmMjgwOTA1OTI2MjE5ZTU2ODU2ODk2NGNiOWVlYjlkCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMTEgMTg6MTA6MjAgMjAwOCAtMDUwMAotCi0gICAgRml4IGJ1aWxkIGlzc3VlIHdpdGggc3RyaW5nLmggYW5kIGxpbnV4L3N0cmluZy5oCi0KLSAgICBUaGlzIGNvbW1pdDoKLSAgICBjb21taXQgMzM4Y2MwMzg0NjFhNmM3NzA5YzViODZmZDlhMjQwMjA5MzM4YTFhZQotICAgIEF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBEYXRlOiAgIEZyaSBKdW4gNiAxNDoyODoxNCAyMDA4ICswMjAwCi0KLQl0b29scy9ta2ltYWdlOiBmaXggY29tcGlsZXIgd2FybmluZ3Mgb24gc29tZSBzeXN0ZW1zLgotCi0gICAgQnJva2UgYnVpbGRpbmcgb24gc29tZSBzeXN0ZW1zLCBiZWNhdXNlIHRoZSBob3N0J3Mgc3RyaW5nLmggd2FzIGludGVyZmVyaW5nCi0gICAgd2l0aCB1LWJvb3QncyBsaW51eC9zdHJpbmcuaC4gIEl0IGRvZXNuJ3QgbG9vayBsaWtlIHdlIG5lZWQgdGhlIHUtYm9vdCBvbmUgaWYKLSAgICB3ZSdyZSBidWlsZGluZyBmb3IgdGhlIGhvc3QsIHNvIG5vdyB3ZSBvbmx5IGluY2x1ZGUgd2hlbiBidWlsZGluZyBpbnNpZGUKLSAgICB1LWJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5OTczZTNjNjE0NzIxYmJmMTY5ODgyZmZjM2JlMjY2YTY2MTFjZDYwCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1biA5IDE2OjAzOjQwIDIwMDggLTA1MDAKLQotICAgIENoYW5nZSBpbml0ZHJhbSgpIHJldHVybiB0eXBlIHRvIHBoeXNfc2l6ZV90Ci0KLSAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIG9mIGluaXRkcmFtKCkgZnJvbSBsb25nIGludCB0byBwaHlzX3NpemVfdC4KLSAgICBUaGlzIGlzIHJlcXVpcmVkIGZvciBhIGNvdXBsZSBvZiByZWFzb25zOiBsb25nIGludCBsaW1pdHMgdGhlIGFtb3VudCBvZiBkcmFtCi0gICAgdG8gMkdCLCBhbmQgdS1ib290IGluIGdlbmVyYWwgaXMgbW92aW5nIG92ZXIgdG8gcGh5c19zaXplX3QgdG8gcmVwcmVzZW50IHRoZQotICAgIHNpemUgb2YgcGh5c2ljYWwgbWVtb3J5LiAgcGh5c19zaXplX3QgaXMgZGVmaW5lZCBhcyBhbiB1bnNpZ25lZCBsb25nIG9uIGFsbW9zdAotICAgIGFsbCBjdXJyZW50IHBsYXRmb3Jtcy4KLQotICAgIFRoaXMgcGF0Y2ggKm9ubHkqIGNoYW5nZXMgdGhlIHJldHVybiB0eXBlIG9mIHRoZSBpbml0ZHJhbSBmdW5jdGlvbiAoaW4KLSAgICBpbmNsdWRlL2NvbW1vbi5oLCBhcyB3ZWxsIGFzIGluIGVhY2ggYm9hcmQncyBpbXBsZW1lbnRhdGlvbiBvZiBpbml0ZHJhbSkuICBJdAotICAgIGRvZXMgbm90IGFjdHVhbGx5IG1vZGlmeSB0aGUgY29kZSBpbnNpZGUgdGhlIGZ1bmN0aW9uIG9uIGFueSBvZiB0aGUgcGxhdGZvcm1zOwotICAgIHBsYXRmb3JtcyB3aGljaCB3aXNoIHRvIHN1cHBvcnQgbW9yZSB0aGFuIDJHQiBvZiBEUkFNIHdpbGwgbmVlZCB0byBtb2RpZnkKLSAgICB0aGVpciBpbml0ZHJhbSgpIGZ1bmN0aW9uIGNvZGUuCi0KLSAgICBCdWlsZCB0ZXN0ZWQgd2l0aCBNQUtFQUxMIGZvciBwcGMsIGFybSwgbWlwcywgbWlwcy1lbC4gQm9vdGVkIG9uIHBvd2VycGMKLSAgICBNUEM4NjQxSFBDTi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzkxZmQ5M2FiMjNlMTVhYjNkZDU4YTU0ZjViNjA5MDI0MDA5YzM3OAotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdW4gOSAyMDozNzoxOCAyMDA4IC0wNTAwCi0KLSAgICBDaGFuZ2UgbG1iIHRvIHVzZSBwaHlzX3NpemVfdC9waHlzX2FkZHJfdAotCi0gICAgVGhpcyB1cGRhdGVzIHRoZSBsbWIgY29kZSB0byB1c2UgcGh5c19zaXplX3QKLSAgICBhbmQgcGh5c19hZGRyX3QgaW5zdGVhZCBvZiB1bnNpZ25lZCBsb25nLiAgT3RoZXIgY29kZQotICAgIHdoaWNoIGludGVyYWN0cyB3aXRoIHRoaXMgY29kZSwgbGlrZSBnZXRlbnZfYm9vdG1fc2l6ZSgpCi0gICAgaXMgYWxzbyB1cGRhdGVkLgotCi0gICAgQm9vdGVkIG9uIE1QQzg2NDFIUENOLCBidWlsZC10ZXN0ZWQgcHBjLCBhcm0sIG1pcHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYxYjA5ZmMyOTUyZGM2MzYwMTdkZjRlNzk3MGUzZGUxMzIyNzZiYTEKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVuIDkgMjA6Mzc6MTcgMjAwOCAtMDUwMAotCi0gICAgQ2hhbmdlIHByaW50X3NpemUgdG8gdGFrZSBwaHlzX3NpemVfdAotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNTdjYTNlMTI4Y2MxMGExMzNiYTc5YmM3ZWMzZTdiNTBlN2M4ZmJlCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1biA5IDIwOjM3OjE2IDIwMDggLTA1MDAKLQotICAgIENoYW5nZSBiZC9nZCBtZW1zaXplL3JhbV9zaXplIHRvIGJlIHBoeXNfc2l6ZV90LgotCi0gICAgQ3VycmVudGx5LCBib3RoIGFyZSBkZWZpbmVkIGFzIGFuIHVuc2lnbmVkIGxvbmcsIGJ1dAotICAgIHNob3VsZCBiZSBwaHlzX3NpemVfdC4gVGhpcyBzaG91bGQgcmVzdWx0IGluIG5vIHJlYWwgY2hhbmdlLAotICAgIHNpbmNlIHBoeXNfc2l6ZV90IGlzIGN1cnJlbnRseSBhbiB1bnNpZ25lZCBsb25nIGZvciBhbGwgdGhlCi0gICAgZGVmYXVsdCBjb25maWdzLiAgQWxzbyBhZGQgcHJpbnRfbG51bSB0byBjbWRfYmRpbmZvIHRvIGRlYWwKLSAgICB3aXRoIHRoZSBwb3RlbnRpYWxseSB3aWRlciBtZW1zaXplLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiYTA0ZjcwMTA5NThlODhhODkxMGYyYTEyM2ZlZTUzZmRjNzJlMDEzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgSnVuIDEwIDE2OjE2OjAyIDIwMDggLTA1MDAKLQotICAgIEZTTCBMQVc6IEFkZCBuZXcgaW50ZXJmYWNlIHRvIHVzZSB0aGUgbGFzdCBmcmVlIExBVwotCi0gICAgTEFXcyBoYXZlIHRoZSBjb25jZXB0IG9mIHByaW9yaXR5IHNvIGl0cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBhbGxvY2F0ZQotICAgIHRoZSBsb3dlc3QgKGhpZ2hlc3QgbnVtYmVyKSBwcmlvcml0eS4gIFdlIHdpbGwgZW5kIHVwIHVzaW5nIHRoaXMgd2l0aCB0aGUKLSAgICBuZXcgRERSIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgODU5YTg2YTI1YzU2OWQzNjY1ZmY0MTNkMWQ5MjMzOTRiOGE5NjFmMwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEp1biAxMSAwMDo1MTo0NSAyMDA4IC0wNTAwCi0KLSAgICA4NXh4Lzg2eHg6IE1vdmUgdG8gZHluYW1pYyBtZ210IG9mIExBV3MKLQotICAgIFdpdGggdGhlIG5ldyBMQVcgaW50ZXJmYWNlIChzZXRfbmV4dF9sYXcpIHdlIGNhbiBtb3ZlIHRvIGxldHRpbmcgdGhlCi0gICAgc3lzdGVtIGFsbG9jYXRlIHdoaWNoIExBV3MgYXJlIHVzZWQgZm9yIHdoYXQgcHVycG9zZS4gIFRoaXMgbWFrZXMgbGlmZQotICAgIGEgYml0IGVhc2llciBnb2luZyBmb3J3YXJkIHdpdGggdGhlIG5ldyBERFIgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGYwNjAwNTRkYWRiYmU3MDI3Y2EwODhlZWQ4MDZhM2VmMWY4MmZkYjcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKdW4gMTEgMDA6NDQ6MTAgMjAwOCAtMDUwMAotCi0gICAgRlNMIExBVzogS2VlcCB0cmFjayBvZiBMQVcgYWxsb2NhdGlvbnMKLQotICAgIE1ha2UgaXQgc28gd2Uga2VlcCB0cmFjayBvZiB3aGljaCBMQVdzIGhhdmUgYWxsb2NhdGVkIGFuZCBwcm92aWRlCi0gICAgYSBmdW5jdGlvbiAoc2V0X25leHRfbGF3KSB3aGljaCBjYW4gYWxsb2NhdGUgYSBMQVcgZm9yIHVzIGlmIG9uZSBpcwotICAgIGZyZWUuCi0KLSAgICBJbiB0aGUgZnV0dXJlIHdlIHdpbGwgbW92ZSB0byBkb2luZyBtb3JlICJkeW5hbWljIiBMQVcgYWxsb2NhdGlvbgotICAgIHNpbmNlIHRoZSBtYWpvcml0eSBvZiB1c2VycyBkb250IHJlYWxseSBjYXJlIGFib3V0IHdoYXQgTEFXIG51bWJlcgotICAgIHRoZXkgYXJlIGF0LgotCi0gICAgQWxzbywgYWRkIENPTkZJR19NUEM4NTQwIG9yIENPTkZJR19NUEM4NTYwIHRvIHRob3NlIGJvYXJkcyB3aGljaCBuZWVkZWQgdGhlbQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkZGRlNzRhMTU5Y2FhNmUxOGI0ODFmZWMwMWQ0MGI4ODVhZWJiNTY2Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gSnVuIDkgMjI6MzE6NTcgMjAwOCAtMDUwMAotCi0gICAgODV4eDogcmVtb3ZlIGR1bW15IGJvYXJkX2Vhcmx5X2luaXRfZgotCi0gICAgQSBudW1iZXIgb2YgYm9hcmQgcG9ydHMgaGF2ZSBlbXB0eSB2ZXJzaW9uIG9mIGJvYXJkX2Vhcmx5X2luaXRfZgotICAgIGZvciBubyByZWFzb24gc2luY2Ugd2UgY29udHJvbCBpdHMgdmlhIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX0YuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgODFlNTZlOWFmMGQ0MzcxMmRiOGVmYjg0MzYwNmE4ZDYyZWFiNDU0ZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEp1biA5IDE4OjU1OjM4IDIwMDggLTA1MDAKLQotICAgIE1QQzg1NDREUzogVXBkYXRlIGNvbmZpZy5oCi0KLSAgICAqIEVuYWJsZSBmbGFzaCBwcm9ncmVzcwotICAgICogcmVtb3ZlIENMRUFSX0xBVzAgc2luY2Ugd2UgZG9udCByZWFsbHkgdXNlIGl0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOTc4ZTgxNjA0YzFiMjg1MjZlZDU4MGRmMGZiZTY0ZWI4Mzg0ZTk0ZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEp1biA5IDEzOjM3OjI0IDIwMDggLTA1MDAKLQotICAgIDg1eHg6IFJlbW92ZSB1bnVzZWQgYW5kIHVuY29uZmlndXJlZCBtZW1vcnkgdGVzdCBjb2RlLgotCi0gICAgUmVtb3ZlIHVudXNlZCBhbmQgdW5jb25maWd1cmVkIEREUiB0ZXN0IGNvZGUgZnJvbSBGU0wgODV4eCBib2FyZHMuCi0gICAgQmVzaWRlcywgb3RoZXIgY29tbW9uIGNvZGUgZXhpc3RzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGEyM2NkZGRlMWE5NWY5ODdlM2ZlMmE3MjBhN2VjOTM3NWI3MjY0ZDcKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0NSAyMDA4ICswMjAwCi0KLSAgICBTb2NyYXRlczogQWRkZWQgRlBHQSBiYXNlIGFkZHJlc3MgdXBkYXRlIGluIEZEVC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBmZDUxYjBlMGU2MjBiOGJjOWZkNGY2ZGFhM2E0ZmE2ZjVlMTMxNmY0Ci1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgSnVuIDYgMTU6NDI6NDQgMjAwOCArMDIwMAotCi0gICAgU29jcmF0ZXM6IE5BTkQgc3VwcG9ydCBhZGRlZC4gQ2hhbmdlZCB0aGUgVS1Cb290IGJhc2UgYWRkcmVzcyBhbmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCAyNDhhZTVjZmM4YmY2OTA3NGQxZGEwOTlkYzQ5NWQ4ZTA2MDcwNTQ3Ci1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgSnVuIDYgMTU6NDI6NDMgMjAwOCArMDIwMAotCi0gICAgTkFORDogQWRkZWQgc3VwcG9ydCBmb3IgMTI4LWJpdCBPT0IsIGFkYXB0ZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCAzMWNhMDIwODYxMmYyZWI1NzY5MDExMGQ3YzI4MTU5NTM2NTBlNDdiCi1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgSnVuIDYgMTU6NDI6NDIgMjAwOCArMDIwMAotCi0gICAgU29jcmF0ZXM6IGFkZGVkIG1pc3NlZCBmaWxlIHdpdGggVVBNQSBjb25maWd1cmF0aW9uIGRhdGEuCi0KLSAgICBTaWduZWQtb2YtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA1OWFiZDE1YjQzY2FiN2E0ZDE5ZGU0YmEwOTQzODM3ZDk1NTVmN2JhCi1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgSnVuIDYgMTU6NDI6NDEgMjAwOCArMDIwMAotCi0gICAgU29jcmF0ZXM6IEFkZGVkIEZQR0EgbWFwcGluZy4gTEFXcyBhbmQgVExCcyBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDc0MDI4MGU2OGNjYzBiOTcxZTYxM2ZhY2U3ZWFhYThiZDEzODJiOGMKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CUZyaSBKdW4gNiAxNTo0Mjo0MCAyMDA4ICswMjAwCi0KLSAgICBBZGRlZCB0aGUgdXBtY29uZmlnKCkgZnVuY3Rpb24gZm9yIDg1eHguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQzOWU2ODUxNGZmOTQzOTMwZWU2OTJjZmYzZmRlMDM1MzJlYjdmZWMKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CUZyaSBKdW4gNiAxNTo0MjozOSAyMDA4ICswMjAwCi0KLSAgICBTb2NyYXRlczogY29uZmlnIGZpbGUgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBlOGNjM2YwNGIxMjRmNzU3YWY0NTI4MjA2ZTYwZDhlYjcxNWFlMDgzCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJVGh1IEp1biA1IDEzOjEyOjEwIDIwMDggKzAyMDAKLQotICAgIFRRTTg1eHg6IENoYW5nZSBtZW1vcnkgbWFwIHRvIHN1cHBvcnQgRmxhc2ggbWVtb3J5ID4gMTI4IE1pQgotCi0gICAgU29tZSBUUU04NXh4IGJvYXJkcyBjb3VsZCBiZSBlcXVpcHBlZCB3aXRoIHVwIHRvIDEgR2lCIChOT1IpIEZsYXNoCi0gICAgbWVtb3J5LiBUaGUgY3VycmVudCBtZW1vcnkgbWFwIG9ubHkgc3VwcG9ydHMgdXAgdG8gMTI4IE1pQiBGbGFzaC4KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGNvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19UUU1fQklHRkxBU0guIElmCi0gICAgc2V0LCB1cCB0byAxIEdpQiBmbGFzaCBpcyBzdXBwb3J0ZWQuIFRvIGFjaGlldmUgdGhpcywgdGhlIG1lbW9yeQotICAgIG1hcCBoYXMgdG8gYmUgYWRqdXN0ZWQgaW4gZ3JlYXQgcGFydHMgKGZvciBleGFtcGxlIHRoZSBDQ1NSQkFSIGlzCi0gICAgbW92ZWQgZnJvbSAweEUwMDAwMDAwIHRvIDB4QTAwMDAwMDApLgotCi0gICAgSWYgeW91IHdhbnQgdG8gYm9vdCBMaW51eCB3aXRoIENPTkZJR19UUU1fQklHRkxBU0ggc2V0LCB0aGUgbmV3Ci0gICAgbWVtb3J5IG1hcCBhbHNvIGhhcyB0byBiZSBjb25zaWRlcmVkIGluIHRoZSBrZXJuZWwgKGNoYW5nZWQKLSAgICBDQ1NSQkFSIGFkZHJlc3MsIGNoYW5nZWQgUENJIElPIGJhc2UgYWRkcmVzcywgLi4uKS4gUGxlYXNlIHVzZQotICAgIGFuIGFwcHJvcHJpYXRlIEZsYXQgRGV2aWNlIFRyZWUgYmxvYiAodHFtODU0OC5kdGIpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0KLWNvbW1pdCAxYzJkZWZmMjJjZDZlMmJmMGU2MThmZDZlMDljYTNlZWM1YThkMDUxCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJVGh1IEp1biA1IDEzOjEyOjA5IDIwMDggKzAyMDAKLQotICAgIFRRTTg1eHg6IE5BTkQgc3VwcG9ydCB2aWEgbG9jYWwgYnVzIFVQTUIKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBOQU5EIEZMQVNIIG9uIHRoZSBUUU04NTQ4LiBJdCBpcyBkaXNhYmxlZCBieQotICAgIGRlZmF1bHQgYW5kIGNhbiBiZSBlbmFibGVkIGZvciB0aGUgVFFNODU0OCBtb2R1bGVzLiBJdCBpcyBub3cgYmFzZWQgb24KLSAgICB0aGUgcmUtd3JpdHRlbiBGU0wgTkFORCBVUE0gZHJpdmVyLiBBIHBhdGNoIGhhcyBiZWVuIHBvc3RlZCBlYXJsaWVyIHRvZGF5Ci0gICAgd2l0aCB0aGUgc3ViamVjdDoKLQotICAgICJOQU5EIEZTTCBVUE06IGRyaXZlciByZS13cml0ZSB1c2luZyB0aGUgaHdjb250cm9sIGNhbGxiYWNrIgotCi0gICAgTm90ZSB0aGF0IHRoZSBSL0IgcGluIGlzIG5vdCBzdXBwb3J0ZWQgYnkgdGhhdCBtb2R1bGUgcmVxdWlyaW5nIHRvIHVzZQotICAgIHRoZSBzcGVjaWZpZWQgbWF4aW11bSBkZWxheSB0aW1lLgotCi0gICAgTm90ZTogV2l0aCBOQU5EIHN1cHBvcnQgZW5hYmxlZCB0aGUgc2l6ZSBvZiB0aGUgVS1Cb290IGltYWdlIGV4Y2VlZHMKLSAgICAyNTYgS0IgYW5kIFRFWFRfQkFTRSBtdXN0IHRoZXJlZm9yZSBiZSBzZXQgdG8gMHhmZmY4MDAwMCBpbiBjb25maWcubWssCi0gICAgZG91YmxpbmcgdGhlIGltYWdlIHNpemUgOi0oLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIFdhZWhuZXIgPHRob21hcy53YWVobmVyQHRxcy5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLQotY29tbWl0IGI5ZTgwNzhiYjNmM2M0ODExMWE3MDgxZTI3Mjc5OTM4YzNhNDQ1ZTEKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglUaHUgSnVuIDUgMTM6MTI6MDggMjAwOCArMDIwMAotCi0gICAgVFFNODU0ODogUENJIGV4cHJlc3Mgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFBDSSBleHByZXNzIGNhcmRzLiBUaGUgYm9hcmQgc3VwcG9ydAotICAgIG5vdyB1c2VzIGNvbW1vbiBGU0wgUENJIGluaXQgY29kZSwgZm9yIGJvdGgsIFBDSSBhbmQgUENJZSBvbiBhbGwKLSAgICBUUU04NXh4IG1vZHVsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgV2FlaG5lciA8dGhvbWFzLndhZWhuZXJAdHFzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgMTI4N2UwYzU1YTJlZTJjNTc1YWM5Y2U4ZTQzMDJjZDQwODViZTg3NgotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVRodSBKdW4gNSAxMzoxMjowNyAyMDA4ICswMjAwCi0KLSAgICBUUU04NTQ4OiBCYXNpYyBzdXBwb3J0IGZvciB0aGUgVFFNODU0OCBtb2R1bGVzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDggbW9kdWxlIGZyb20gVFEtQ29tcG9uZW50cwotICAgIChodHRwOi8vd3d3LnRxYy5kZS8pIGluY2x1ZGluZyBERFIyIFNEUkFNIGluaXRpYWxpc2F0aW9uIGFuZCBzdXBwb3J0IGZvcgotICAgIGVUU0VDIDMgYW5kIDQKLQotICAgIEZ1cnRoZXJtb3JlIEZsYXNoIGJ1ZmZlciB3cml0ZSBoYXMgYmVlbiBlbmFibGVkIHRvIHNwZWVkIHVwIG91dHB1dCB0bwotICAgIHRoZSBGbGFzaCBieSBhcHByb3guIGEgZmFjdG9yIG9mIDEwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGhvbWFzIFdhZWhuZXIgPHRob21hcy53YWVobmVyQHRxcy5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLQotY29tbWl0IDI1OTkxMzUzMjA0Yzc4YjA5NGMzYzFmZWM5MDE4MmRjZDYwN2FiOGYKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglUaHUgSnVuIDUgMTM6MTI6MDYgMjAwOCArMDIwMAotCi0gICAgVFFNODV4eDogU3VwcG9ydCBmb3IgRmxhdCBEZXZpY2UgVHJlZQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIExpbnV4IGtlcm5lbHMgdXNpbmcgdGhlIEZsYXQgRGV2aWNlIFRyZWUuCi0gICAgSXQgYWxzbyByZS1kZWZpbmVzIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IHNldHRpbmdzIGZvciBib290aW5nIExpbnV4Ci0gICAgd2l0aCB0aGUgRkRUIGJsb2IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLQotY29tbWl0IGQ5ZWU4NDNkNTRjNTQ3NzZlMWZkYjg2MzM2Y2U1NTQ5MDZhODczMzEKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglUaHUgSnVuIDUgMTM6MTI6MDUgMjAwOCArMDIwMAotCi0gICAgVFFNODV4eDogU3VwcG9ydCBmb3IgSW50ZWwgODI1MjcgY29tcGF0aWJsZSBDQU4gY29udHJvbGxlcgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGluaXRpYWxpemF0aW9uIG9mIHRoZSBVUE1DIFJBTSB0byBzdXBwb3J0IHVwIHRvIHR3bwotICAgIEludGVsIDgyNTI3IGNvbXBhdGlibGUgQ0FOIGNvbnRyb2xsZXIgb24gdGhlIFRRTTg1eHggbW9kdWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRob21hcyBXYWVobmVyIDx0aG9tYXMud2FlaG5lckB0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0KLWNvbW1pdCA1MThkNWNmZTcyOTE2MzIzYzc0NmFmMTY0Nzc2NDQ1OTkxNGY1NTVmCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJVGh1IEp1biA1IDEzOjEyOjA0IDIwMDggKzAyMDAKLQotICAgIFRRTTg1eHg6IEJ1Z2ZpeCBpbiB0aGUgU0RSQU0gaW5pdGlhbGlzYXRpb24KLQotICAgIFRoZSBDUzBfQk5EUyByZWdpc3RlciBpcyBub3cgc2V0IGFjY29yZGluZyB0byB0aGUgZGV0ZWN0ZWQKLSAgICBtZW1vcnkgc2l6ZS4KLQotICAgIFNpZ25lZC1vZmYtYnkgTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0KLWNvbW1pdCA0NWRlZTJlNjIwY2NlYzZhYzdiMzU0OGZlODk3OWEzNGZkMDMwZTVkCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJVGh1IEp1biA1IDEzOjEyOjAzIDIwMDggKzAyMDAKLQotICAgIFRRTTg1eHg6IEZpeCBjaGlwIHNlbGVjdCBjb25maWd1cmF0aW9uIGZvciBzZWNvbmQgRkxBU0ggYmFuawotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcmUtY2FsY3VsYXRpb24gb2YgdGhlIGF1dG9tYXRpYyBjaGlwIHNlbGVjdAotICAgIGNvbmZpZ3VyYXRpb24gZm9yIGJvYXJkcyB3aXRoIHR3byBwb3B1bGF0ZWQgRkxBU0ggYmFua3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IDQ2MzQ2ZjI3Y2RhNmZkMDI1YTQ5NmJkZThmMmQ0YWVlZTA0YWNhNWYKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglUaHUgSnVuIDUgMTM6MTI6MDIgMjAwOCArMDIwMAotCi0gICAgVFFNODV4eDogU3VwcG9ydCBmb3IgU3BhbnNpb24gJ04nIHR5cGUgZmxhc2hlcyBhZGRlZAotCi0gICAgVGhlICdOJyB0eXBlIFNwYW5zaW9uIGZsYXNoZXMgKFMyOUdMeHh4TiBzZXJpZXMpIGhhdmUgYmlnZ2VyIHNlY3RvcnMsCi0gICAgdGhhbiB0aGUgZm9ybWVybHkgdXNlZCAnTScgdHlwZXMgKFMyOUdMeHh4TSBzZXJpZXMpLCBzbyB0aGUgZmxhc2ggbGF5b3V0Ci0gICAgbmVlZHMgdG8gYmUgY2hhbmdlZCAtPiBuZXcgc3RhcnQgYWRkcmVzcyBvZiB0aGUgZW52aXJvbm1lbnQuIFRoZSBtYWNybwotICAgIGRlZmluaXRpb24gQ09ORklHX1RRTV9GTEFTSF9OX1RZUEUgaXMgdW5kZWZpbmVkIGJ5IGRlZmF1bHQgYW5kIG11c3QgYmUKLSAgICBkZWZpbmVkIGZvciBib2FyZHMgd2l0aCAnTicgdHlwZSBmbGFzaGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0KLWNvbW1pdCA1ZDViZDgzOGY3NmVhZGUyMmMwZWE0MGE1MDAzODlmOTI0ZDBkYTM2Ci1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJVGh1IEp1biA1IDEzOjEyOjAxIDIwMDggKzAyMDAKLQotICAgIFRRTTg1eHg6IEZpeCBDUE0gcG9ydCBwaW4gY29uZmlndXJhdGlvbgotCi0gICAgRG8gbm90IGNvbmZpZ3VyZSBwb3J0IHBpbnMgUEQzMC9QRDMxIGFzIFNDQzEgVHhEL1J4RCBleGNlcHQgZm9yIHRoZSBUUU04NTYwCi0gICAgYm9hcmQuIE9uIHRoZSBvdGhlciBUUU04NXh4IGJvYXJkcyAoVFFNODU0MSBhbmQgVFFNODU1NSkgU0NDMSBpcyBub3QgdXNlZAotICAgIGFzIHNlcmlhbCBpbnRlcmZhY2UgYW55d2F5LiBXb3JzZSwgb24gc29tZSBib2FyZCB2YXJpYW50cyBjb25maWd1cmluZyB0aGUKLSAgICBwaW5zIGZvciBTQ0MxIGxlYWRzIHRvIHNob3J0IGNpcmN1aXRzIChmb3IgZXhhbXBsZSBvbiB0aGUgVFFNODU0MS1CRykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IGI5OWJhMTY3OWU4Y2Q1MWIwMjNlNjcwOThjODllNjA2ZTQ3MTM3ZDIKLUF1dGhvcjogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci1EYXRlOglUaHUgSnVuIDUgMTM6MTI6MDAgMjAwOCArMDIwMAotCi0gICAgVFFNODV4eDogVmFyaW91cyBjb2Rpbmcgc3R5bGUgZml4ZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgYWU5ZTk3ZmE5NmY2NDNjOGJhMmI2NjZiMDZhMDI2Y2M4NzE3ZWIwMAotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJVHVlIEp1biAxMCAyMjoxNTo1OCAyMDA4IC0wNDAwCi0KLSAgICBsaWJmZHQ6IE1vdmUgdGhlIHdvcmtpbmdfZmR0IHBvaW50ZXIgdG8gY21kX2ZkdC5jCi0KLSAgICBUaGUgd29ya2luZ19mZHQgcG9pbnRlciB3YXMgZGVjbGFyZWQgaW4gY29tbW9uL2ZkdF9zdXBwb3J0LmMgYnV0IHdhcwotICAgIG5vdCB1c2VkIHRoZXJlLiAgTW92ZSBpdCB0byBjb21tb24vY21kX2ZkdC5jIHdoZXJlIGl0IGlzIHVzZWQgKGl0IGlzCi0gICAgYWxzbyB1c2VkIGluIGxpYl9wcGMvYm9vdG0uYykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgZTQ4OWI5YzA3OGUyMmIwZDllNzVmMDAyY2QyYTFiZDk2N2U4OGY1ZQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1biAxMCAxMTowNjoxNyAyMDA4IC0wNTAwCi0KLSAgICBmZHQ6IHVuc2hhZG93IGdsb2JhbCB3b3JraW5nIGZkdCB2YXJpYWJsZQotCi0gICAgZGlmZmVyZW50aWF0ZSB3aXRoIGxvY2FsIHZhcmlhYmxlcyBvZiB0aGUgc2FtZSBuYW1lIGJ5IHJlbmFtaW5nIHRoZQotICAgIGdsb2JhbCAnZmR0JyB2YXJpYWJsZSAnd29ya2luZ19mZHQnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGUxZWIwZTI1ZDlkOGZkOGVmZGZiOTNmNjcwYTQxNzY2M2YzODYwMjIKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1biAxMCAxODo0OTozNCAyMDA4IC0wNTAwCi0KLSAgICBzb2NyYXRlczogRml4IFBDSSBjbGsgZml4IHBhdGNoCi0KLSAgICBUaGUgc3VibWl0dGVkIHBhdGNoIHNlZW1zIHRvIGhhdmUgYmVlbiBtb3JlIHVwLXRvLWRhdGUsIGJ1dCBhbiBvbGRlciBwYXRjaCB3YXMKLSAgICBhbHJlYWR5IGluIHRoZSByZXBvc2l0b3J5LglUaGlzIHBhdGNoIGVuY29tcGFzc2VzIHRoZSBkaWZmZXJlbmNlcwotCi0gICAgVGFrZW4gZW50aXJlbHkgZnJvbSBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTc1YTU3ZWY2ZTRiNjEzYzgxNDM0OTcxZTk2ZWQ3MGNmOWVjOWJhMAotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVRodSBKdW4gNSAxMzowMjoyOSAyMDA4ICswMjAwCi0KLSAgICBOQU5EIEZTTCBVUE06IGRyaXZlciByZS13cml0ZSB1c2luZyB0aGUgaHdjb250cm9sIGNhbGxiYWNrCi0KLSAgICBUaGlzIGlzIGEgcmUtd3JpdGUgb2YgdGhlIE5BTkQgRlNMIFVQTSBkcml2ZXIgdXNpbmcgdGhlIG1vcmUgdW5pdmVyc2FsCi0gICAgaHdjb250cm9sIGNhbGxiYWNrIChpbnN0ZWFkIG9mIHRoZSBjbWRmdW5jIGNhbGxiYWNrKS4gSGVyZSBpcyBhIGJyaWVmCi0gICAgbGlzdCBvZiBmdXJoZXIgbW9kaWZpY2F0aW9uczoKLQotICAgIC0gRm9yIHRoZSB0aW1lIGJlaW5nLCB0aGUgVVBNIHNldHVwIHdyaXRpbmcgdGhlIFVQTSBhcnJheSBoYXMgYmVlbgotICAgICAgcmVtb3ZlZCBmcm9tIHRoZSBkcml2ZXIgYW5kIG11c3Qgbm93IGJlIGRvbmUgYnkgdGhlIGJvYXJkIHNwZWNpZmljCi0gICAgICBjb2RlLgotCi0gICAgLSBUaGUgYnVzIHdpZHRoIGRlZmluaXRpb24gaW4gInN0cnVjdCBmc2xfdXBtX25hbmQiIGlzIG5vdyBpbiBiaXRzIHRvCi0gICAgICBjb21wbHkgd2l0aCB0aGUgY29ycmVzcG9uZGluZyBMaW51eCBkcml2ZXIgYW5kIDgsIDE2IGFuZCAzMiBiaXQKLSAgICAgIGFjY2Vzc2VzIGFyZSBzdXBwb3J0ZWQuCi0KLSAgICAtIGNoaXAtPmRldl9yZWFkIGlzIG9ubHkgc2V0IGlmIGZ1bi0+ZGV2X3JlYWR5ICE9IE5VTEwsIHdoaWNoIGlzCi0gICAgICByZXF1aXJlZCBmb3IgYm9hcmRzIG5vdCBjb25uZWN0aW5nIHRoZSBSL0IgcGluLgotCi0gICAgLSBBIGZldyBpc3N1ZSBoYXZlIGJlZW4gZml4ZWQgd2l0aCBNeE1SIGJpdCBtYW5pcHVsYXRpb24gbGlrZSBpbiB0aGUKLSAgICAgIGNvcnJlc3BvbmRpbmcgTGludXggZHJpdmVyLgotCi0gICAgTm90ZTogSSB0aGluayB0aGUgImlvX2FkZHIiIGZpZWxkIG9mICJzdHJ1Y3QgZnNsX3VwbSIgY291bGQgYmUgcmVtb3ZlZAotCSAgYXMgd2VsbCwgYmVjYXVzZSB0aGUgYWRkcmVzcyBpcyBhbHJlYWR5IGRldGVybWluZWQgYnkKLQkgICJuYW5kLT5JT19BRERSX1tSV10iLCBidXQgSSdtIG5vdCAxMDAlIHN1cmUuCi0KLSAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIHRlc3RlZCBvbiBhIFRRTTg1NDggbW9kdWxlcyB3aXRoIHRoZSBOQU5EIGNoaXAKLSAgICBNaWNyb24gTVQyOUY4RzA4RkFCV1AuCi0KLSAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBmb2xsb3dpbmcgcGF0Y2hlcyBwb3N0ZWQgdG8gdGhpcyBsaXN0IGEgZmV3Ci0gICAgbWludXRlcyBhZ286Ci0KLSAgICAgIFBQQzogYWRkIGFjY2Vzc29yIG1hY3JvcyB0byBjbGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QKLSAgICAgIDgzeHgvODV4eC84Nnh4OiBhZGQgbW9yZSBNeE1SIGxvY2FsIGJ1cyBkZWZpbml0aW9ucwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0gICAgQWNrZWQtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgNmJlZWNmYmI1NDI5OTJlZWRlNTgzMTI0MGNkNTg2NzgyNzQ2ODNhOQotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CVRodSBKdW4gNSAxMzoxMTo1OSAyMDA4ICswMjAwCi0KLSAgICBNUEM4NXh4OiBCZWF1dGlmeSBib290IG91dHB1dCBvZiBMMiBjYWNoZSBjb25maWd1cmF0aW9uCi0KLSAgICBUaGUgYm9vdCBvdXRwdXQgaXMgbm93IGFsaWduZWQgcG9wZXJseSB3aXRoIG90aGVyIGJvb3Qgb3V0cHV0Ci0gICAgbGluZXMsIGUuZy46Ci0KLSAgICAgIEZMQVNIOiAxMjggTUIKLSAgICAgIEwyOiAgICA1MTIgS0IgZW5hYmxlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0KLWNvbW1pdCAzOTg0MTUxMTRmMGE3MDUxNjNhMTQ1NDNlOWZlZjAzZjczNGIxZmZhCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJV2VkIEp1biA0IDEyOjQ1OjIyIDIwMDggKzAyMDAKLQotICAgIFBQQzogYWRkIGFjY2Vzc29yIG1hY3JvcyB0byBjbGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QKLQotICAgIFBQQzogYWRkIGFjY2Vzc29yIG1hY3JvcyB0byBjbGVhciBhbmQgc2V0IGJpdHMgaW4gb25lIHNob3QKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBtYWNyb3MgZnJvbSBsaW51eC9pbmNsdWRlL2FzbS1wb3dlcnBjL2lvLmggdG8gY2xlYXIgYW5kCi0gICAgc2V0IGJpdHMgaW4gb25lIHNob3QgdXNpbmcgdGhlIGluX2JlMzIsIG91dF9iZTMyLCBldGMuIGFjY2Vzc29yIGZ1bmN0aW9ucy4KLSAgICBUaGV5IGFyZSB2ZXJ5IGhhbmR5IHRvIG1hbmlwdWxhdGUgYml0cyBpdCBJL08gcmVnaXN0ZXJzLgotCi0gICAgVGhpcyBwYXRjaCBpcyByZXF1aXJlZCBmb3IgbXkgZm9ydGhjb21pbmcgRlNMIE5BTkQgVVBNIGRyaXZlciByZS13cml0ZSBhbmQKLSAgICB0aGUgc3VwcG9ydCBmb3IgdGhlIFRRTTg1NDggbW9kdWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0KLWNvbW1pdCA0Njc3OTg4YzdlZGMwNzBjMzc4NmQzZGI3OTk0YWJlY2EzYWI4MmEwCi1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJV2VkIEp1biA0IDEzOjUyOjE3IDIwMDggKzAyMDAKLQotICAgIFRRTTogbW92ZSBUUU0gYm9hcmRzIHRvIGJvYXJkL3RxYwotCi0gICAgTW92ZSBhbGwgVFFNIGJvYXJkIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZW5kb3Igc3BlY2lmaWMgZGlyZWN0b3J5ICJ0cWMiCi0gICAgZm9yIG1vZHVsZXMgZnJvbSBUUS1Db21wb25lbnRzIEdtYkggKGh0dHA6Ly93d3cudHFjLmRlKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgNmZhYjJmZTcyY2E1YmY5NTI4MGNkNTJjZGYzNzhhZjNlNTA2ZWI1MAotQXV0aG9yOiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLURhdGU6CU1vbiBKdW4gMiAxMjowOTozMCAyMDA4ICswMjAwCi0KLSAgICA4M3h4Lzg1eHgvODZ4eDogYWRkIG1vcmUgTXhNUiBsb2NhbCBidXMgZGVmaW5pdGlvbnMKLQotICAgIDgzeHgvODV4eC84Nnh4OiBhZGQgbW9yZSBNeE1SIGxvY2FsIGJ1cyBkZWZpbml0aW9ucwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIG1vcmUgbWFjcm8gZGVmaW5pdGlvbnMgZm9yIHRoZSBVUE0gTWFjaGluZSBNb2RlIFJlZ2lzdGVycwotICAgIFRoZXkgYXJlIGNvcGllZCBmcm9tICJpbmNsdWRlL21wYzgyeHguaCIgdG8gc2ltcGxpZnkgdGhlIG1lcmdlIG9mIGFsbCA4eHh4Ci0gICAgY29tbW9uIGxvY2FsIGJ1cyBkZWZpbml0aW9ucyBpbnRvIGluY2x1ZGUvYXNtLXBwYy9mc2xfbGJjLmguIFRoZXkgYXJlCi0gICAgcmVxdWlyZWQgZm9yIG15IGZvcnRoY29taW5nIEZTTCBOQU5EIFVQTSBkcml2ZXIgcmUtd3JpdGUgYW5kIHRoZSBzdXBwb3J0Ci0gICAgZm9yIHRoZSBUUU04NTQ4IG1vZHVsZS4KLQotICAgIFRoaXMgcGF0Y2ggaXMgYmFzZWQgb24gdGhlIGZvbGxvd2luZyB0d28gcGF0Y2hlcyBmcm9tIEFudG9uIFZvcm9udHNvdjoKLQotICAgIGh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS91LWJvb3QtdXNlcnNAbGlzdHMuc291cmNlZm9yZ2UubmV0L21zZzA2NTExLmh0bWwKLSAgICBodHRwOi8vd3d3Lm1haWwtYXJjaGl2ZS5jb20vdS1ib290LXVzZXJzQGxpc3RzLnNvdXJjZWZvcmdlLm5ldC9tc2cwNjU4Ny5odG1sCi0KLSAgICBJIGxlYXZlIGNvZGluZyBzdHlsZSB2aW9sYXRpb24gZml4ZXMsIGNvZGUgYmVhdXRpZmljYXRpb24gYW5kIG5hbWUKLSAgICBjb3JyZWN0aW9ucyB0byBzb21lYm9keSBlbHNlIDstKC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotCi1jb21taXQgYzhjNWZjMjY2ZTQ0OTllMjgzYzI5M2NjYjk3Mjg2MzE1NmFhNDEzNAotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVRodSBNYXkgMjkgMTg6MTQ6NTYgMjAwOCArMDQwMAotCi0gICAgODN4eC84NXh4OiBmdXJ0aGVyIGxvY2FsYnVzIGNsZWFudXBzCi0KLSAgICBNZXJnZSBtcGM4NXh4LmgncyBMQkMgZGVmaW5lcyB0byBmc2xfbGJjLmguIEFsc28sIGFkb3B0IEFDUyBuYW1lcwotICAgIGZyb20gbXBjODV4eC5oLCBzbyBBQ1NfMGIxMCByZW5hbWVkIHRvIEFDU19ESVY0LCBBQ1NfMGIxMSB0byBBQ1NfRElWMi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgNDJkYmQ2NjdjODhkNDk2ODgyZDUzZTIyNjU2ZTg5YjY1NDIwNTQ5MgotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBNYXkgMjggMTg6MjA6MTUgMjAwOCArMDQwMAotCi0gICAgODN4eC84NXh4Lzg2eHg6IGZhY3RvciBvdXQgRnJlZXNjYWxlIExvY2FsYnVzIGRlZmluZXMgb3V0IG9mIG1wYzgzeHguaAotCi0gICAgVGhpcyBwYXRjaCBtb3ZlcyBGcmVlc2NhbGUgTG9jYWxidXMgZGVmaW5lcyBvdXQgb2YgbXBjODN4eC5oLCBzbyB3ZSBjb3VsZAotICAgIHVzZSBpdCBvbiBNUEM4NXh4IGFuZCBNUEM4Nnh4IHByb2Nlc3NvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLQotY29tbWl0IDczMGIyZmNmNmZjZDllZWMzZWE4NmZiYjA4N2MzZjk4YWEyM2E3NjkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBNYXkgMjkgMTE6MjI6MDYgMjAwOCAtMDUwMAotCi0gICAgODV4eDogQWRkIHNldHRpbmcgb2YgY2FjaGUgcHJvcHMgaW4gdGhlIGRldmljZSB0cmVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDRkYmRiNzY4MWUyNDM0MzE1MzBkZjA3MjU2MjcxOTJhMGM0YWVmZGEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBKdW4gMTAgMTY6NTM6NDYgMjAwOCAtMDUwMAotCi0gICAgODV4eDogZXhwb3NlIGNwdSBpZGVudGlmaWNhdGlvbgotCi0gICAgVGhlIGN1cnJlbnQgY3B1IGlkZW50aWZpY2F0aW9uIGNvZGUgaXMgdXNlZCBqdXN0IHRvIHJldHVybiB0aGUgbmFtZQotICAgIG9mIHRoZSBwcm9jZXNzb3IgYXQgYm9vdC4gIFRoZXJlIGFyZSBzb21lIG90aGVyIGxvY2F0aW9ucyB0aGF0IHRoZSBuYW1lCi0gICAgaXMgdXNlZnVsIChkZXZpY2UgdHJlZSBzZXR1cCkuICBFeHBvc2UgdGhlIGZ1bmN0aW9uYWxpdHkgdG8gb3RoZXIgYml0cwotICAgIG9mIGNvZGUuCi0KLSAgICBBbHNvLCBkcm9wIHRoZSAnRScgc3VmZml4IGFuZCBhZGQgaXQgb24gYnkgbG9va2luZyBhdCB0aGUgU1ZSIHZlcnNpb24KLSAgICB3aGVuIHdlIHByaW50IHRoaXMgb3V0LiAgVGhpcyBpcyBtYWlubHkgdG8gYWxsb3cgdGhlIG1vc3QgZmxleGlibGUgdXNlCi0gICAgb2YgdGhlIG5hbWUuICBUaGUgZGV2aWNlIHRyZWUgY29kZSB0ZW5kcyB0byBub3QgY2FyZSBhYm91dCB0aGUgJ0UnIHN1ZmZpeC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyMzI5ZmUxMTNkODQ3ZTQzY2NhOGU0YTBlNGVkZDYxM2I1MGI4NDkyCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDEwIDEzOjI1OjI0IDIwMDggLTA1MDAKLQotICAgIG1wYzgzeHg6IE1WQkxNNzogbWlub3IgYnVpbGQgZml4dXBzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTEyOTNlNTQ5YjU2ZGExMzVlZjMyZmZjYTViOWQzNWExNmFhNjgwMgotQXV0aG9yOiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci1EYXRlOglUdWUgSnVuIDEwIDA5OjE0OjA1IDIwMDggKzAyMDAKLQotICAgIGFkZCBNUEM4MzQzIGJhc2VkIGJvYXJkIG12Qmx1ZUxZTlgtTTcgKGJvYXJkK21ha2UgZmlsZXMpCi0KLSAgICBBZGQgTVBDODM0MyBiYXNlZCBib2FyZCBtdkJsdWVMWU5YLU03LgotICAgIEl0J3MgYSBzaW5nbGUgYm9hcmQgc3RlcmVvIGNhbWVyYSBzeXN0ZW0uCi0gICAgUGxlYXNlIHJlYWQgZG9jL1JFQURNRS5tdmJsbTcgZm9yIGRldGFpbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGMwMDViOTM5MjViYTQ5ZjA3ZGEyYWE3NDg1Mjc5OTZkOTI3ZTE3MmYKLUF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotRGF0ZToJVHVlIEp1biAxMCAwOToxMzoxNiAyMDA4ICswMjAwCi0KLSAgICBhZGQgTVBDODM0MyBiYXNlZCBib2FyZCBtdkJsdWVMWU5YLU03IChkb2MrY29uZmlnKQotCi0gICAgQWRkIE1QQzgzNDMgYmFzZWQgYm9hcmQgbXZCbHVlTFlOWC1NNy4KLSAgICBJdCdzIGEgc2luZ2xlIGJvYXJkIHN0ZXJlbyBjYW1lcmEgc3lzdGVtLgotICAgIFBsZWFzZSByZWFkIGRvYy9SRUFETUUubXZibG03IGZvciBkZXRhaWxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmOTAyM2FmYmRmZDlmMjdlN2MzOGYzY2NlOTY1NzQ2ZTU2ZDYyZGQzCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJVGh1IE1heSAyOSAxODoxNDo1NiAyMDA4ICswNDAwCi0KLSAgICA4M3h4Lzg1eHg6IGZ1cnRoZXIgbG9jYWxidXMgY2xlYW51cHMKLQotICAgIG1vdmUgdGhlIEJSeF8qIGFuZCBPUnhfKiBsZWZ0IGJlaGluZCBpbiBtcGM4NXh4LmgKLQotICAgIFRoZSBzYW1lIGlzIG5lZWRlZCBmb3IgbXBjOHh4LmggYW5kIG1wYzgyNjAuaCAoZGVmaW5lcyBhcmUgYWxtb3N0Ci0gICAgdGhlIHNhbWUsIGp1c3QgZmV3IGRpZmZlcmVuY2VzIHdoaWNoIG5lZWRzIHNvbWUgYXR0ZW50aW9uIHRob3VnaCkuCi0KLSAgICBCdXQgdGhlIGJhZCBuZXdzIGZvciBtcGM4eHggYW5kIG1wYzgyNjAgaXMgdGhhdCB0aGVyZSBhcmUgYSBsb3Qgb2YgdXNlcnMKLSAgICBvZiB0aGVzZSBkZWZpbmVzLiBTbyB0aGlzIGNsZWFudXAgSSdsbCBsZWF2ZSBmb3IgdGhlICJiZXR0ZXIgdGltZXMiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJmMzBiYjFmN2M5NTRkNzg1NWQ5YjIzNjI0YjMzYjAwYzUwYjQ2OTcKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgTWF5IDI4IDE4OjIwOjE1IDIwMDggKzA0MDAKLQotICAgIDgzeHgvODV4eC84Nnh4OiBmYWN0b3Igb3V0IEZyZWVzY2FsZSBMb2NhbGJ1cyBkZWZpbmVzIG91dCBvZiBtcGM4M3h4LmgKLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgRnJlZXNjYWxlIExvY2FsYnVzIGRlZmluZXMgb3V0IG9mIG1wYzgzeHguaCwgc28gd2UgY291bGQKLSAgICB1c2UgaXQgb24gTVBDODV4eCBhbmQgTVBDODZ4eCBwcm9jZXNzb3JzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDgyYjRmYzBjZThjY2E5NWU4NTdmYzUxMDIyZTg0MWNiMmRiZWU2YQotQXV0aG9yOiBUb3IgS3JpbGwgPHRvckBleGNpdG8uY29tPgotRGF0ZToJTW9uIEp1biAyIDE1OjA5OjMwIDIwMDggKzAyMDAKLQotICAgIEFkZCBtaXNzaW5nIENTQ09ORklHX0JBTktfQklUXzMgZGVmaW5lIHRvIG1wYzgzeHguaAotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2I5MDRjY2I5M2MzMTk2NzI3ZTJlOTg3MGNiMWRmOTAzY2FiMTlhZAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJTW9uIEp1biA5IDIzOjM3OjQ0IDIwMDggKzA5MDAKLQotICAgIG5ldDogQ29uZGl0aW9uYWwgQ09CSlMgaW5jbHVzaW9uIG9mIG5ldHdvcmsgZHJpdmVycwotCi0gICAgUmVwbGFjZSBDT0JKUy15IHdpdGggYXBwcm9wcmlhdGUgZHJpdmVyIGNvbmZpZyBuYW1lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDJmYjY5OGJmNTBmNGFmZjI0ODU1ODFhMTJmYTYzNGEwN2MwNDBlNGEKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CU1vbiBKdW4gOSAyMTowMjoxNyAyMDA4IC0wNDAwCi0KLSAgICBVc2Ugc3RybmNtcCgpIGZvciB0aGUgZmR0IGNvbW1hbmQKLQotICAgIENsZWFuZXIgdGhhbiBkb2luZyBtdWx0aXBsZSBjb25kaXRpb25hbHMgb24gY2hhcmFjdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCA0N2FiZThhYjI5MGQyNzIxYThlZWFkZmY2NWI5MzllNmFmOGMwMWIwCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglTYXQgSnVuIDcgMTI6MjU6MDUgMjAwOCAtMDQwMAotCi0gICAgVGhlIGZkdCBib2FyZHNldHVwIGNvbW1hbmQgY3JpdGVyaWEgd2FzIG5vdCB1bmlxdWUKLQotICAgIEl0IHdhcyBjaGVja2luZyBqdXN0IGZvciAiYiIsIHdoaWNoIGlzIG5vdCB1bmlxdWUgd2l0aCByZXNwZWN0IHRvIHRoZQotICAgICJib290IiBjb21tYW5kLiAgQ2hhbmdlIHRvIGNoZWNrIGZvciAiYm9hIltyZHNldHVwXS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCAyZjA4YmZhOTUyNmJhZTRmNDYxZTA0MzUzMGNmYjkwM2ZlYzBkMjczCi1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJVHVlIE1heSAyMCAxNzoxOToxMSAyMDA4ICsxMDAwCi0KLSAgICBsaWJmZHQ6IFNldmVyYWwgY2xlYW51cHMgdG8gcGFyYW1ldGVyIGNoZWNraW5nCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIGEgY291cGxlIG9mIHNtYWxsIGNsZWFudXBzIHRvIHBhcmFtZXRlciBjaGVja2luZyBvZgotICAgIGxpYmZkdCBmdW5jdGlvbnMuCi0KLQktIEluIHNldmVyYWwgZnVuY3Rpb25zIHdoaWNoIHRha2UgYSBub2RlIG9mZnNldCwgd2UgdXNlIGFuCi0gICAgaWRpb20gaW52b2x2aW5nIGZkdF9uZXh0X3RhZygpIGZpcnN0IHRvIGNoZWNrIHRoYXQgd2UgaGF2ZSBpbmRlZWQgYmVlbgotICAgIGdpdmVuIGEgbm9kZSBvZmZzZXQuICBUaGlzIHBhdGNoIGFkZHMgYSBoZWxwZXIgZnVuY3Rpb24KLSAgICBfZmR0X2NoZWNrX25vZGVfb2Zmc2V0KCkgdG8gZW5jYXBzdWxhdGUgdGhpcyB1c2FnZSBvZiBmZHRfbmV4dF90YWcoKS4KLQotCS0gSW4gZmR0X3J3LmMgaW4gc2V2ZXJhbCBwbGFjZXMgd2UgaGF2ZSB0aGUgZXhwYW5kZWQgdmVyc2lvbgotICAgIG9mIHRoZSBSV19DSEVDS19IRUFERVIoKSBtYWNybyBmb3Igbm8gcGFydGljdWxhciByZWFzb24uICBUaGlzIHBhdGNoCi0gICAgcmVwbGFjZXMgdGhvc2UgaW5zdGFuY2VzIHdpdGggYW4gaW52b2NhdGlvbiBvZiB0aGUgbWFjcm87IHRoYXQncyB3aGF0Ci0gICAgaXQncyBmb3IuCi0KLQktIEluIGZkdF9zdy5jIHdlIHJlbmFtZSB0aGUgY2hlY2tfaGVhZGVyX3N3KCkgZnVuY3Rpb24gdG8KLSAgICBzd19jaGVja19oZWFkZXIoKSB0byBtYXRjaCB0aGUgYW5hbGdvdXMgZnVuY3Rpb24gaW4gZmR0X3J3LmMsIGFuZCB3ZQotICAgIHByb3ZpZGUgYW4gU1dfQ0hFQ0tfSEVBREVSKCkgd3JhcHBlciBtYWNybyBhcyBSV19DSEVDS19IRUFERVIoKQotICAgIGZ1bmN0aW9ucyBpbiBmZHRfcncuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0KLWNvbW1pdCBmZWM2ZDllZTdjMTA0NDNmNjVjZTE3ODhlZjgxODkxOTE2N2JiZjJlCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglUdWUgSnVuIDMgMjA6MzQ6NDUgMjAwOCAtMDQwMAotCi0gICAgUmVtb3ZlIHRoZSBkZXByZWNhdGVkIENPTkZJR19PRl9GTEFUX1RSRUUKLQotICAgIFVzZSBDT05GSUdfT0ZfTElCRkRUIGluc3RlYWQgdG8gc3VwcG9ydCBmbGF0dGVuZWQgZGV2aWNlIHRyZWVzLiAgSXQgaXMKLSAgICBjbGVhbmVyLCBoYXMgYmV0dGVyIGZ1bmN0aW9uYWxpdHksIGFuZCBpcyBiZXR0ZXIgc3VwcG9ydGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDYyYmNkZGEyOTNlZmE3NTJmODI4MWZiZDlkYTAzODIyYjI3Y2U4MmYKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVR1ZSBKdW4gMyAyMDoyNjoyOSAyMDA4IC0wNDAwCi0KLSAgICBDaGFuZ2UgdGhlIHN0eHhzdCB0byBDT05GSUdfT0ZfTElCRkRUCi0KLSAgICBUaGlzIHdhcyBjb25maWd1cmVkIHRvIHVzZSB0aGUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfRkxBVF9UUkVFLCBjaGFuZ2UKLSAgICB0byBDT05GSUdfT0ZfTElCRkRULgotCi0gICAgV0FSTklORzogSXQgYXBwZWFycyB0aGF0IHRoaXMgYm9hcmQgbG9zdCBpdHMgYWJpbGl0eSB0byBib290IHZpYSBhCi0gICAgZmxhdHRlbmVkIGRldmljZSB0cmVlIHByaW9yIHRvIHRoaXMgY2hhbmdlc2V0LgotCi0gICAgV0FSTklORzogVGhpcyBjb252ZXJzaW9uIHdhcyB1bnRlc3RlZCBiZWNhdXNlIEkgZG8gbm90IGhhdmUgYSBib2FyZCB0bwotICAgIHRlc3QgaXQgb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgNTg5YzA0MjcxZDEyOTcyOWE4YjAxMzkxNDUzODUxYWI5Y2M0MDY5YwotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJVHVlIEp1biAzIDIwOjI0OjU4IDIwMDggLTA0MDAKLQotICAgIENvbnZlcnQgbXBjNzQ0OGhwYzIgdG8gQ09ORklHX09GX0xJQkZEVAotCi0gICAgVGhpcyB3YXMgY29uZmlndXJlZCB0byB1c2UgdGhlIGRlcHJlY2F0ZWQgQ09ORklHX09GX0ZMQVRfVFJFRSwgY2hhbmdlCi0gICAgdG8gQ09ORklHX09GX0xJQkZEVC4KLQotICAgIFdBUk5JTkc6IFRoaXMgY29udmVyc2lvbiBpcyB1bnRlc3RlZCBiZWNhdXNlIEkgZG8gbm90IGhhdmUgYSBib2FyZCB0bwotICAgIHRlc3QgaXQgb24uCi0KLSAgICBOT1RFOiBUaGUgRkRUIGJsb2IgKERUUykgbXVzdCBoYXZlIGFuIC9hbGlhc2VzL2V0aGVybmV0MCBhbmQgKG9wdGlvbmFsbHkpCi0gICAgL2FsaWFzZXMvZXRoZXJuZXQxIHByb3BlcnR5IGZvciB0aGUgZXRoZXJuZXQgdG8gd29yay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCBlZTFlMzViZWRlOTFkZWJjOGJmZjliMDJmNzU1NzQ0ODYwMzNiNjUyCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTWF5IDI5IDAxOjIxOjI0IDIwMDggLTA1MDAKLQotICAgIDg1eHg6IE9ubHkgdXNlIFBPUlBMTFNSW0REUl9SYXRpb10gb24gcGxhdGZvcm1zIHRoYXQgZGVmaW5lIGl0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgM2I5NTE5ZmM1MDgwMjQzNmU0MTdjODM5ZTY5ZGY3YjIwMTZjYWRlNQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMTQgMTM6MTA6MDQgMjAwOCAtMDUwMAotCi0gICAgTVBDODV4eDogQ2hhbmdlIHRyYXBzLmMgdG8gbm90IHJlZmVyZW5jZSBub24tYWRkcmVzc2FibGUgbWVtb3J5Ci0KLSAgICBDdXJyZW50bHksIEVORF9PRl9SQU0gaXMgdXNlZCBieSB0aGUgdHJhcCBjb2RlIHRvIGRldGVybWluZSBpZgotICAgIHdlIHNob3VsZCBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgc3RhY2sgcG9pbnRlciBvciBub3QuIEhvd2V2ZXIsCi0gICAgb24gc3lzdGVtcyB3aXRoIGEgbG90IG9mIFJBTSwgb25seSBhIHN1YnNldCBvZiB0aGUgUkFNIGlzCi0gICAgZ3VhcmFudGVlZCB0byBiZSBtYXBwZWQgaW4gYW5kIGFjY2Vzc2libGUuCUNoYW5nZSBFTkRfT0ZfUkFNCi0gICAgdG8gdXNlIGdldF9lZmZlY3RpdmVfbWVtc2l6ZSgpIGluc3RlYWQgb2YgdXNpbmcgdGhlIHJhdyByYW0KLSAgICBzaXplIG91dCBvZiB0aGUgYmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdmYWRkYWVjZWE1MmY1ODVmNTM4ZmRmOWMyZTYxZjg1YTc4OWIxOWMKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1Lm5vYnVoaXJvQHJlbmVzYXMuY29tPgotRGF0ZToJTW9uIEp1biA5IDEzOjM5OjU3IDIwMDggKzA5MDAKLQotICAgIHNoOiBSZW5lc2FzIFNvbHV0aW9ucyBTSDc3NjNSRFAgYm9hcmQgc3VwcG9ydAotCi0gICAgU0g3NzYzUkRQIGhhcyBTQ0lGLCBOT1IgRmxhc2gsIEV0aGVybmV0LCBVU0IgaG9zdCwgTENEQyBhbmQgTU1DLgotICAgIEluIHRoaXMgcGF0Y2gsIHN1cHBvcnQgU0NJRiwgTk9SIEZsYXNoLCBhbmQgRXRoZXJuZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNjAxNzkwOThhOTVlYWE5NzIwMDdkN2VjNThlNGMxNTg4MDI5NzIwZgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglGcmkgSnVuIDYgMTY6MjQ6MTMgMjAwOCArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IFJlbmVzYXMgU0g3NzYzCi0KLSAgICBSZW5lc2FzIFNINzc2MyBoYXMgMyBTQ0lGLCBNTUMsIExDREMsIEV0aGVybmV0IGFuZCBvdGhlci4KLSAgICBUaGlzIHBhdGNoIHN1cHBydHMgQ1BVIHJlZ2lzdGVyJ3MgaGVhZGVyIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMDhjNWZhYmUxODFkNjYzZWVjMGZlYmE1ZWNkMDJjMGI3ODkzNGE1MgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3Uubm9idWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglGcmkgSnVuIDYgMTY6MTY6MDggMjAwOCArMDkwMAotCi0gICAgc2g6IFNINzc2MyBTQ0lGIHN1cHBvcnQKLQotICAgIFNINzc2MyBoYXMgMyBTQ0lGIGNoYW5uZWxzLiBTQ0lGMCBhbmQgMSBhcmUgc2FtZSByZWdpc3RlciBjb25zdGl0dXRpb24sCi0gICAgYnV0IG9ubHkgU0NJRjIgaXMgZGlmZmVyZW50LiBUaGlzIHBhdGNoIHdvcmsgYWxsIFNDSUYgY2hhbm5lbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdS5ub2J1aGlyb0ByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA3OWI1MWZmODIwNWYwMzU0ZDUzMDA1NzA2MTRjMWQyZGI0OTk2NzljCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgSnVuIDcgMjA6NTE6NTkgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIGNwdS9taXBzL01ha2VmaWxlOiBTcGxpdCBbQ1NdT0JKUyBvbnRvIHNlcGFyYXRlIGxpbmVzCi0KLSAgICBBbHNvIGdldCByaWQgb2Ygc29tZSAjaWZkZWZzIGluICouYyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCA4YmRlNjNlYjNmNzlkNjhmNjkzMjAxNTI4ZGFmYzhhZTdhYTA4N2RlCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgSnVuIDcgMjA6NTE6NTYgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIFJlbmFtZSBBbGNoZW15IHByb2Nlc3NvciBjb25maWdzIGludG8gQ09ORklHX1NPQ18qCi0KLSAgICBDT05GSUdfU09DX0FVMVgwMAotCi0gICAgICBDb21tb24gQWxjaGVteSBBdTF4MDAgc3R1ZmYuIEFsbCBBbGNoZW15IHByb2Nlc3NvciBiYXNlZCBtYWNoaW5lcwotICAgICAgbmVlZCB0byBoYXZlIHRoaXMgY29uZmlnIGFzIGEgc3lzdGVtIHR5cGUgc3BlY2lmaWVyLgotCi0gICAgQ09ORklHX1NPQ19BVTEwMDAsIENPTkZJR19TT0NfQVUxMTAwLCBDT05GSUdfU09DX0FVMTIwMCwKLSAgICBDT05GSUdfU09DX0FVMTUwMCwgQ09ORklHX1NPQ19BVTE1NTAKLQotICAgICAgTWFjaGluZSB0eXBlIHNwZWNpZmllcnMuIEVhY2ggcG9ydCBzaG91bGQgaGF2ZSBvbmUgb2YgYWJvdmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGNjNDljYWRlZWI4YmIyZjBhZTNmZGMxM2FmNzA1MWFlNTlmMDgzYmMKLUF1dGhvcjogU3R1YXJ0IFdvb2QgPHN0dWFydC53b29kQGxhYnh0ZWNobm9sb2dpZXMuY29tPgotRGF0ZToJRnJpIE1heSAzMCAxNjowNToyOCAyMDA4IC0wNDAwCi0KLSAgICBlbnZfbmFuZC5jOiBBZGRlZCBiYWQgYmxvY2sgbWFuYWdlbWVudCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0KLSAgICBNb2RpZmllZCB0byBjaGVjayBmb3IgYmFkIGJsb2NrcyBhbmQgdG8gc2tpcHBpbmcgb3ZlciB0aGVtIHdoZW4KLSAgICBDRkdfRU5WX1JBTkdFIGhhcyBiZWVuIGRlZmluZWQuCi0gICAgQ0ZHX0VOVl9SQU5HRSBtdXN0IGJlIGxhcmdlciB0aGFuIENGR19FTlZfU0laRSBhbmQgYWxpZ25lZCB0byB0aGUgTkFORAotICAgIGZsYXNoIGJsb2NrIHNpemUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdHVhcnQgV29vZCA8c3R1YXJ0Lndvb2RAbGFieHRlY2hub2xvZ2llcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNzk3MjZiZDAwNTU4ZTgwMjYzZDQ0NTgxYzQ0MTY3NjI1YjdmYjlhCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1heSAxNCAxMzowOTo1OCAyMDA4IC0wNTAwCi0KLSAgICBNUEM4Nnh4OiBDaGFuZ2UgdHJhcHMuYyB0byBub3QgcmVmZXJlbmNlIG5vbi1hZGRyZXNzYWJsZSBtZW1vcnkKLQotICAgIEN1cnJlbnRseSwgRU5EX09GX1JBTSBpcyB1c2VkIGJ5IHRoZSB0cmFwIGNvZGUgdG8gZGV0ZXJtaW5lIGlmCi0gICAgd2Ugc2hvdWxkIGF0dGVtcHQgdG8gYWNjZXNzIHRoZSBzdGFjayBwb2ludGVyIG9yIG5vdC4gSG93ZXZlciwKLSAgICBvbiBzeXN0ZW1zIHdpdGggYSBsb3Qgb2YgUkFNLCBvbmx5IGEgc3Vic2V0IG9mIHRoZSBSQU0gaXMKLSAgICBndWFyYW50ZWVkIHRvIGJlIG1hcHBlZCBpbiBhbmQgYWNjZXNzaWJsZS4JQ2hhbmdlIEVORF9PRl9SQU0KLSAgICB0byB1c2UgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgaW5zdGVhZCBvZiB1c2luZyB0aGUgcmF3IHJhbQotICAgIHNpemUgb3V0IG9mIHRoZSBiZCB0byBwcmV2ZW50IHVzIGZyb20gdHJ5aW5nIHRvIGFjY2VzcwotICAgIG5vbi1tYXBwZWQgbWVtb3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzMzhjYzAzODQ2MWE2Yzc3MDljNWI4NmZkOWEyNDAyMDkzMzhhMWFlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDYgMTQ6Mjg6MTQgMjAwOCArMDIwMAotCi0gICAgdG9vbHMvbWtpbWFnZTogZml4IGNvbXBpbGVyIHdhcm5pbmdzIG9uIHNvbWUgc3lzdGVtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBiMjgxNWY3OTI4OGQ0ZGE3YTNiYTE4YmRiZDA1MTIwY2UwOWQ1NjIyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gNiAxNjoxMDo0MSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBtaXNzcGVsbGVkIENPTkZJR180NDBTUEUvNDQwRVBYL0dSWCBjb25maWcgb3B0aW9ucwotCi0gICAgV2UgdXNlIHVwcGVyIGNhc2UgbGV0dGVycyBmb3IgdGhlIEFNQ0MgcHJvY2Vzc29yIGRlZmluZXMgKGxpa2UKLSAgICBDT05GSUdfNDQwU1BFKSBpbiBVLUJvb3QuIFNvIHRoZSA0NDBTUGUgaXMgbGFiZWxlZCBDT05GSUdfNDQwU1BFIGFuZAotICAgIG5vdCBDT05GSUdfNDQwU1BlLiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBsYXN0IG1pc3NwZWxsZWQgY29uZmlnIG9wdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3MjY3NWRjNmMwNmE0ODg0NmQxODAxMDYxNjFkNDlkZDcxNDM4M2NjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gNiAxNTo1NToyMSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFVuaWZ5IEFNQ0MncyBib2FyZCBjb25maWcgZmlsZXMgKHBhcnQgMy8zKQotCi0gICAgVGhpcyBwYXRjaCBzZXJpZXMgdW5pZmllcyB0aGUgQU1DQyBldmFsIGJvYXJkIHBvcnRzIGJ5IGludHJvZHVjaW5nCi0gICAgYSBjb21tb24gaW5jbHVkZSBoZWFkZXIgZm9yIGFsbCBBTUNDIGV2YWwgYm9hcmRzOgotCi0gICAgaW5jbHVkZS9jb25maWdzL2FtY2MtY29tbW9uLmgKLQotICAgIFRoaXMgaGVhZGVyIG5vdyBpbmNsdWRlcyBhbGwgY29tbW9uIGNvbmZpZ3VyYXRpb24gb3B0aW9ucy9kZWZpbmVzIHdoaWNoCi0gICAgYXJlIHJlbW92ZWQgZnJvbSB0aGUgYm9hcmQgc3BlY2lmaWMgaGVhZGVycy4KLQotICAgIFRoZSByZWFzb24gZm9yIHRoaXMgaXMgZWFzZSBvZiBtYWludGVuYW5jZSBhbmQgdW5pZmllZCBsb29rIGFuZCBmZWVsCi0gICAgb2YgYWxsIEFNQ0MgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDkwZjIwNDA5NmQ2ZTJjOTk0MGY2NzgxNmYxNTRhODEyNWJhYjExNgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDYgMTU6NTU6MDMgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBVbmlmeSBBTUNDJ3MgYm9hcmQgY29uZmlnIGZpbGVzIChwYXJ0IDIvMykKLQotICAgIFRoaXMgcGF0Y2ggc2VyaWVzIHVuaWZpZXMgdGhlIEFNQ0MgZXZhbCBib2FyZCBwb3J0cyBieSBpbnRyb2R1Y2luZwotICAgIGEgY29tbW9uIGluY2x1ZGUgaGVhZGVyIGZvciBhbGwgQU1DQyBldmFsIGJvYXJkczoKLQotICAgIGluY2x1ZGUvY29uZmlncy9hbWNjLWNvbW1vbi5oCi0KLSAgICBUaGlzIGhlYWRlciBub3cgaW5jbHVkZXMgYWxsIGNvbW1vbiBjb25maWd1cmF0aW9uIG9wdGlvbnMvZGVmaW5lcyB3aGljaAotICAgIGFyZSByZW1vdmVkIGZyb20gdGhlIGJvYXJkIHNwZWNpZmljIGhlYWRlcnMuCi0KLSAgICBUaGUgcmVhc29uIGZvciB0aGlzIGlzIGVhc2Ugb2YgbWFpbnRlbmFuY2UgYW5kIHVuaWZpZWQgbG9vayBhbmQgZmVlbAotICAgIG9mIGFsbCBBTUNDIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGE4YTExYTllZDA0NmI0ODBhMTZlNDdhMTU4ZjhmNTMwMDAyOGRmYTYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biA2IDE1OjU0OjMxIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogVW5pZnkgQU1DQydzIGJvYXJkIGNvbmZpZyBmaWxlcyAocGFydCAxLzMpCi0KLSAgICBUaGlzIHBhdGNoIHNlcmllcyB1bmlmaWVzIHRoZSBBTUNDIGV2YWwgYm9hcmQgcG9ydHMgYnkgaW50cm9kdWNpbmcKLSAgICBhIGNvbW1vbiBpbmNsdWRlIGhlYWRlciBmb3IgYWxsIEFNQ0MgZXZhbCBib2FyZHM6Ci0KLSAgICBpbmNsdWRlL2NvbmZpZ3MvYW1jYy1jb21tb24uaAotCi0gICAgVGhpcyBoZWFkZXIgbm93IGluY2x1ZGVzIGFsbCBjb21tb24gY29uZmlndXJhdGlvbiBvcHRpb25zL2RlZmluZXMgd2hpY2gKLSAgICBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBib2FyZCBzcGVjaWZpYyBoZWFkZXJzLgotCi0gICAgVGhlIHJlYXNvbiBmb3IgdGhpcyBpcyBlYXNlIG9mIG1haW50ZW5hbmNlIGFuZCB1bmlmaWVkIGxvb2sgYW5kIGZlZWwKLSAgICBvZiBhbGwgQU1DQyBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwZTM4YzkzOGVkNGJjYWRiNGY0ZmMxNDE5YTU0MTQzMWU5NGZjMjAyCi1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJVGh1IEp1biA1IDEzOjAzOjM2IDIwMDggKzAyMDAKLQotICAgIERNOTAwMCBmaXggc3RhdHVzIGNoZWNrIGZhaWwgMHg2ZCBlcnJvciBmb3IgdHJpemVwcyBib2FyZAotCi0gICAgQWNjb3JkaW5nIHRvIHRoZSBBcHBsaWNhdGlvbiBOb3RlcyBvZiB0aGUgRE05MDAwLCBvbmx5IHRoZSAyIGJpdHMgMDoxIG9mCi0gICAgdGhlIHN0YXR1cyBieXRlIG5lZWQgdG8gYmUgY2hlY2tlZCB0byBpZGVudGlmeSBhIHZhbGlkIHBhY2tldCBpbiB0aGUgZmlmbwotCi0gICAgQnV0LCBUaGUgc2V2ZXJhbCBkaWZmZXJlbnQgQXBwbGljYXRpb24gTm90ZXMgZG8gbm90IGFsbCBzcGVhayB0aGUgc2FtZQotICAgIGxhbmd1YWdlIG9uIHRoZXNlIGJpdHMuIFRoZXkgZG8gbm90IGRpc2FncmVlLCBidXQgb25seSAxIEFwcGxpY2F0aW9uIE5vdGUKLSAgICBub3RlZCBleHBsaWNpdGx5IHRoYXQgb25seSB0aGVzZSAyIGJpdHMgbmVlZCB0byBiZSBjaGVja2VkLgotICAgIEV2ZW4gdGhlIGRhdGFzaGVldHMgZG8gbm90IG1lbnRpb24gYW55dGhpbmcgYWJvdXQgdGhlc2UgMiBiaXRzLgotCi0gICAgQmVjYXVzZSB0aGUgb2xkIGNvZGUsIGFuZCB0aGUga2VybmVsIGNoZWNrIHRoZSB3aG9sZSBieXRlLCBJIGxlZnQgdGhpcyBwaWVjZQotICAgIHVudG91Y2hlZC4KLQotICAgIEhvd2V2ZXIsIEkgdGVzdGVkIGFsbCBib2FyZC9ETTkwMDBbQXxFfEVQXSBkZXZpY2VzIHdpdGggdGhpcyAyIGJpdCBjaGVjaywgc28KLSAgICBpdCBzaG91bGQgd29yay4KLQotICAgIE5vdGljZSwgdGhhdCB0aGUgMm5kIGl0ZXJhdGlvbiB0aHJvdWdoIHRoaXMgcmVjZWl2ZSBsb29wICh3aGVuIGEgMm5kIHBhY2tldCBpcwotICAgIGluIHRoZSBmaWZvKSBpcyBtdWNoIHNob3J0ZXIgbm93LCBjb21wYXJlZCB0byB0aGUgb2xkZXIgVS1ib290IGRyaXZlciBjb2RlLAotICAgIHNvIHRoYXQgd2UgY2FuIG1heWJlIHJ1biBpbnRvIGEgaGFyZHdhcmUgY29uZGl0aW9uIG5vdyB0aGF0IHdhcyBuZXZlciBzZWVuCi0gICAgYmVmb3JlLCBvciBtYXliZSB3YXMgc2VlbiB2ZXJ5IHVuZnJlcXVlbnRseS4KLQotICAgIEFkZGl0aW9uYWx5IGFkZGVkIGEgY2xlYW51cCBvZiBhIHN0YWNrIHZhcmlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDdkYWYyZWJlOTE5NmRkNjcxMzFhMDZkODUwNDljM2E4YTA4Y2E0MTMKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVRodSBKdW4gNSAyMjoyOTowMCAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gVXBkYXRlIDxhc20vYWRkcnNwYWNlLmg+IGhlYWRlcgotCi0gICAgLSBGaXggdHJhZGl0aW9uYWwgS1NFRyBuYW1lcwotICAgIC0gUmVwbGFjZSBQSFlTQUREUiB3aXRoIENQSFlTQUREUgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGYwZDVhNmYwNjBkMDAzNThiODVjNjJhOTIxYTQyM2VhOGRmNzExODQKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVRodSBKdW4gNSAyMjoyOTowMCAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gbWlwc19jb25maWcubWs6IE1pc2MgZml4ZXMKLQotICAgIC0gS2lsbCByZWR1bmRhbnQgYC1waXBlJyAodGhpcyB3aWxsIGJlIGFkZGVkIGJ5ICQoVE9QRElSKS9jb25maWcubWspCi0gICAgLSBNb2RpZnkgY29tbWVudHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCA1ZjY0ZDIxYzlhMjk5ODc5NGYyNTViNDY5MTY1YjkxZjA5MmRmYzJkCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIEtpbGwgdW51c2VkIDx2ZXJzaW9uLmg+IGluY2x1c2lvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBhNTVkNDgxNzRjZmQxYTViYzE4NDE1OTUxM2Y0OGRjYmJlNDA5YzgzCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUaHUgSnVuIDUgMjI6Mjk6MDAgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIGxpYl9taXBzL3RpbWUuYzogRml4IENQMCBjb3VudCByZWdpc3RlciB1c2FnZSBhbmQgdGltZXIgcm91dGluZXMKLQotICAgIE1JUFMgcG9ydCBoYXMgdHdvIHByb2JsZW1zIGluIHRpbWVyIHJvdXRpbmVzLiBPbmUgaXMgbm93IHdlIGFzc3VtZSBDRkdfSFoKLSAgICBlcXVhbHMgdG8gQ1AwIGNvdW50ZXIgZnJlcXVlbmN5LCBidXQgdGhpcyBpcyB3cm9uZy4gQ0ZHX0haIGhhcyB0byBiZSAxMDAwCi0gICAgaW4gdGhlIFUtQm9vdCBzeXN0ZW0uCi0KLSAgICBUaGUgb3RoZXIgaXMgd2UgZG9uJ3QgaGF2ZSBhIHByb3BlciB0aW1lIG1hbmFnZW1lbnQgY291bnRlciBsaWtlIHRpbWVzdGFtcAotICAgIG90aGVyIEFSQ0hzIGhhdmUuIFdlIG5lZWQgdGhlIDMyLWJpdCBtaWxsaXNlY29uZCBjbG9jayBjb3VudGVyLgotCi0gICAgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIHRpbWVzdGFtcCBhbmQgQ1lDTEVTX1BFUl9KSUZGWS4gdGltZXN0YW1wIGlzIGEKLSAgICAzMi1iaXQgbm9uLW92ZXJmbG93aW5nIENGR19IWiBjb3VudGVyLCBhbmQgQ1lDTEVTX1BFUl9KSUZGWSBpcyB0aGUgbnVtYmVyCi0gICAgb2YgY2FsY3VsYXRlZCBDUDAgY291bnRlciBjeWNsZXMgaW4gYSBDRkdfSFouCi0KLSAgICBTVFJBVEVHWToKLQotICAgICogRml4IGltcHJvcGVyIENGR19IWiB2YWx1ZSB0byBoYXZlIDEwMDAKLQotICAgICogVXNlIENGR19NSVBTX1RJTUVSX0ZSRVEgZm9yIHRpbWVyIGNvdW50ZXIgZnJlcXVlbmN5LCBpbnN0ZWFkLgotCi0gICAgKiB0aW1lcl9pbml0OiBpbml0aWFsaXplIHRpbWVzdGFtcCBhbmQgc2V0IHVwIHRoZSBmaXJzdCB0aW1lciBleHBpcmF0aW9uLgotICAgICAgTm90ZSB0aGF0IHdlIGRvbid0IG5lZWQgdG8gaW5pdGlhbGl6ZSBDUDAgY291bnQvY29tcGFyZSByZWdpc3RlcnMgaGVyZQotICAgICAgYXMgdGhleSBoYXZlIGJlZW4gYWxyZWFkeSB6ZXJvZWQgb3V0IG9uIHRoZSBzeXN0ZW0gcmVzZXQuIExlYXZlIHRoZW0gYXMKLSAgICAgIHRoZXkgYXJlLgotCi0gICAgKiBnZXRfdGltZXI6IGNhbGN1bGF0ZSBob3cgbWFueSB0aW1lc3RhbXBzIGhhdmUgYmVlbiBwYXNzZWQsIHRoZW4gcmV0dXJuCi0gICAgICBiYXNlLXJlbGF0aXZlIHRpbWVzdGFtcC4gTWFrZSBzdXJlIHdlIGNhbiBlYXNpbHkgY291bnQgbWlzc2VkIHRpbWVzdGFtcHMKLSAgICAgIHJlZ2FyZGxlc3Mgb2YgQ1AwIGNvdW50L2NvbXBhcmUgdmFsdWUuCi0KLSAgICAqIGdldF90aWNrczogcmV0dXJuIHRoZSBjdXJyZW50IHRpbWVzdGFtcCwgdGhhdCBpcyBnZXRfdGltZXIoMCkuCi0KLSAgICBNb3N0IHBhcnRzIGFyZSBmcm9tIGdvb2Qgb2xkIExpbnV4IHYyLjYuMTYga2VybmVsLgotCi0gICAgdjI6Ci0gICAgLSBSZW1vdmUgRklYTUUgY29tbWVudHMgYXMgdGhleSB0dXJuZWQgb3V0IHRvIGJlIHRyaXZpYWwuCi0gICAgLSBVc2UgQ1AwIGNvbXBhcmUgcmVnaXN0ZXIgYXMgYSBnbG9iYWwgdmFyaWFibGUgZm9yIGV4cGlyZWxvLgotICAgIC0gS2lsbCBhIGdsb2JhbCB2YXJpYWJsZSAnY3ljbGVzX3Blcl9qaWZmeScuIFVzZSAjZGVmaW5lIENZQ0xFU19QRVJfSklGRlkKLSAgICAgIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMTk5ZTRmNjU3YzhhZjQyZWZlM2ZiM2JhMWQxMTA0ZWI2YmIyOGMyNQotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJVGh1IEp1biA1IDIyOjI5OjAwIDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBsaWJfbWlwcy90aW1lLmM6IEZpeCB1ZGVsYXkKLQotICAgIFdoYXQgd2UgaGF2ZSB0byBkbyBpcyBqdXN0IHRvIHdhaXQgZm9yIGdpdmVuIG1pY3JvLXNlY29uZHMuIE5vIG5lZWQgdG8KLSAgICB0YWtlIGludG8gYWNjb3VudCBjdXJyZW50IHRpbWUsIGdldF90aW1lciBhbmQgQ0ZHX0haLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGM3ZTM4ZTQxM2FlNjkxMjBkM2U1MWYxMzJjN2NiMWQ2YjM1MTRkMDMKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVRodSBKdW4gNSAyMjoyODo1OSAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gbGliX21pcHMvdGltZS5jOiBSZXBsYWNlIENQMCBhY2Nlc3MgZnVuY3Rpb25zIHdpdGggZXhpc3RpbmcgbWFjcm9zCi0KLSAgICBXZSBhbHJlYWR5IGhhdmUgbWFueSBwcmUtZGVmaW5lZCBDUDAgYWNjZXNzIG1hY3JvcyBpbiA8YXNtL21pcHNyZWdzLmg+LgotICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgbWlwc197Y29tcGFyZSxjb3VudH1fc2V0IGFuZCBtaXBzX2NvdW50X2dldCB3aXRoCi0gICAgZXhpc3RpbmcgbWFjcm9zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDZiNTJjZmUxNmNkNTM5OTM1ZTMyYmQ4Y2YxOTE0NjUyMmU0NjJhNGQKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglUdWUgSnVuIDMgMTU6NDg6MTcgMjAwOCArMDIwMAotCi0gICAgR2V0IHJpZCBvZiBhbm5veWluZy9zdXBlcmZsdW91cyBiYWQtY2hlY2tzdW0gd2FybmluZyBtZXNzYWdlCi0KLSAgICBVLWJvb3QgY2FuIGNvbXBsYWluIGEgbG90IGFib3V0ICdjaGVja3N1bSBiYWQnIHdoZW4gaXQgaXMgYXR0YWNoZWQgdG8gdGhlIG5ldHdvcmsuCi0gICAgSXQgaXMgYW5ub3lpbmcgZm9yIG9yZGluYXJ5IHVzZXJzIHdobyBzdGFydCB0byBkb3VidCB0aGUgbmV0d29yayBjb25uZWN0aW9uCi0gICAgaW4gZ2VuZXJhbCB3aGVuIHRoZXkgc2VlIG1lc3NhZ2VzIGxpa2UgdGhpcy4KLQotICAgIFRoaXMgaXMgY2F1c2VkIGJ5IHRoZSByb3V0aW5lIE5ldENrc3VtT2soKSB3aGljaCBjYW5ub3QgaGFuZGxlIElQLWhlYWRlcnMgbG9uZ2VyCi0gICAgdGhhbiAyMCBieXRlcy4gVGhvc2UgcGFja2FnZXMgY2FuIGJlIGlnbm9yZWQgYW55d2F5IGJ5IFUtYm9vdCwgc28gd2UgdHJhc2ggdGhlbQotICAgIG5vdyBiZWZvcmUgY2hlY2tpbmcgdGhlIGNoZWNrc3VtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGQ2ZWU1ZmE0MGMyNjk3MGQzOTk5MGM2ZmM0YTJmMjBhOTc4MjI2NTAKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglXZWQgSnVuIDQgMTA6NDc6MjUgMjAwOCArMDIwMAotCi0gICAgRml4IG9yZGVyIGZvciByZWFkaW5nIHJ4LXN0YXR1cyByZWdpc3RlcnMgaW4gMzJiaXQgbW9kZSBvZiBETTkwMDAKLQotICAgIEEgbGFzdCBtaW51dGUgY2xlYW51cCBiZWZvcmUgc3VibWl0dGluZyB0aGUgRE05MDAwQSBwYXRjaCBzZXJpZXMgeWVzdGVyZGF5IGludHJvZHVjZWQKLSAgICBhIGJ1ZyBpbiByZWFkaW5nIHRoZSByeC1zdGF0dXMgcmVnaXN0ZXJzIGluIDMyYml0IG1vZGUgb25seS4KLSAgICBUaGlzIHBhdGNoIHJlcGFpcnMgdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5ODI5MWUyZTY4OTA5NjQyMDQ2NTA3NGNjZTkyNmIyMjZkMmU3MWI0Ci1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJVHVlIEp1biAzIDE1OjI2OjI2IDIwMDggKzAyMDAKLQotICAgIERNOTAwMDogU29tZSBtaW5vciBjb2RlIGNsZWFudXBzCi0KLSAgICBTb21lIGxpbmVzIG9mIHRoZSBVLWJvb3QgRE05MDAweCBkcml2ZXIgYXJlIGxvbmdlciB0aGFuIDgwIGNoYXJhY3RlcnMsIG9yCi0gICAgbmVlZCBzb21lIG90aGVyIG1pbm9yIGNsZWFudXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgODUwYmE3NTU1ZGJkNGNhOGQxNGZjNDc1Yjg2NGQ1MzQ3OTdhZGFiMwotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVR1ZSBKdW4gMyAxNToyNjoyNSAyMDA4ICswMjAwCi0KLSAgICBETTkwMDA6IE1ha2UgZHJpdmVyIHdvcmsgcHJvcGVybHkgZm9yIERNOTAwMEEKLQotICAgIFRoZSBETTkwMDBBIG5ldHdvcmsgY29udHJvbGxlciBkb2VzIG5vdCB3b3JrIHdpdGggdGhlIFUtYm9vdCBETTkwMDB4IGRyaXZlci4KLSAgICBBbmFseXNpcyBzaG93ZWQgdGhhdCBtYW55IGluY29taW5nIHBhY2tldHMgYXJlIGxvc3QuCi0KLSAgICBUaGUgRE05MDAwQSBBcHBsaWNhdGlvbiBOb3RlcyBWMS4yMCAoc2VjdGlvbiA1LjYuMSkgcmVjb21tZW5kIHRoYXQgdGhlIHBvbGwgdG8KLSAgICBjaGVjayBmb3IgYSB2YWxpZCByeCBwYWNrZXQgYmUgZG9uZSBvbiB0aGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3Rlciwgbm90Ci0gICAgZGlyZWN0bHkgYnkgcGVyZm9ybWluZyB0aGUgZHVtbXkgcmVhZCBhbmQgdGhlIHJ4IHN0YXR1cyBjaGVjayBhcyBpcyBjdXJyZW50bHkKLSAgICB0aGUgY2FzZSBpbiB0aGUgdS1ib290IGRyaXZlci4KLQotICAgIFdoZW4gdGhlIHJlY29tbWVuZGVkIHBvbGwgaXMgZG9uZSBhcyBzdWdnZXN0ZWQgdGhlIGRyaXZlciBzdGFydHMgd29ya2luZwotICAgIGNvcnJlY3RseSBvbiAxME1iaXQvSEQsIGJ1dCBvbiAxMDBNQml0L0ZEIHBhY2tldHMgY29tZSBpbiBmYXN0ZXIgc28gdGhhdCB0aGVyZQotICAgIGNhbiBiZSBtb3JlIHRoYW4gMSBwYWNrYWdlIGluIHRoZSBmaWZvIGF0IHRoZSBzYW1lIHRpbWUuCi0KLSAgICBUaGUgZHJpdmVyIG11c3QgcGVyZm9ybSB0aGUgcngtc3RhdHVzIGNoZWNrIGluIGEgbG9vcCBhbmQgcmVhZCBhbmQgaGFuZGxlIGFsbAotICAgIHBhY2thZ2VzIHVudGlsIHRoZXJlIGlzIG5vIG1vcmUgbGVmdCBfYWZ0ZXJfIHRoZSBpbnRlcnJ1cHQgUlggZmxhZyBpcyBzZXQuCi0KLSAgICBUaGlzIGNoYW5nZSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBETTkwMDBBLCBETTkwMDBFLCBETTkwMDBFUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmYmNiN2VjZTBlYTFlMzY0MTgwZjFjZjk2M2UwZmEwY2U3ZjY1NjBkCi1BdXRob3I6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotRGF0ZToJVHVlIEp1biAzIDE1OjI2OjI0IDIwMDggKzAyMDAKLQotICAgIERNOTAwMDogSW1wcm92ZSBldGhfcmVzZXQoKSByb3V0aW5lCi0KLSAgICBBY2NvcmRpbmcgdG8gdGhlIGFwcGxpY2F0aW9uIG5vdGVzIG9mIHRoZSBETTkwMDAgdjEuMjIgY2hhcHRlciA1LjIgYnVsbGV0IDIsIHRoZQotICAgIHJlc2V0IHByb2NlZHVyZSBtdXN0IGJlIGRvbmUgdHdpY2UgdG8gcHJvcGVybHkgcmVzZXQgdGhlIERNOTAwMCBieSBtZWFucyBvZiBzb2Z0d2FyZS4KLSAgICBUaGlzIGVycmF0YSBpcyBub3QgbmVlZGVkIGFueW1vcmUgZm9yIHRoZSBETTkwMDBBLCBidXQgaXQgZG9lcyBub3QgYm90aGVyIGl0LgotCi0gICAgVGhpcyBjaGFuZ2UgaGFzIGJlZW4gdGVzdGVkIHdpdGggRE05MDAwQSwgRE05MDAwRSwgRE05MDAwRVAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgYWNiYTMxODQ3ZmFkOWFlNDA3MDhjYzJjOWYzYTYzNGVjMzVmMzQxNgotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVR1ZSBKdW4gMyAxNToyNjoyMyAyMDA4ICswMjAwCi0KLSAgICBETTkwMDA6IGltcHJvdmUgZXRoX3NlbmQoKSByb3V0aW5lCi0KLSAgICBUaGUgZXRoX3NlbmQgcm91dGluZSBvZiB0aGUgVS1ib290IERNOTAwMHggZHJpdmVyIGRvZXMgbm90IG1hdGNoIHRoZQotICAgIERNOTAwMCBvciBETTkwMDBBIGFwcGxpY2F0aW9uIG5vdGVzL3Byb2dyYW1taW5nIGd1aWRlcy4KLQotICAgIFRoaXMgY2hhbmdlIGltcHJvdmVzIHRoZSBzdGFiaWxpdHkgb2YgdGhlIERNOTAwMEEgbmV0d29yayBjb250cm9sbGVyLgotCi0gICAgVGhpcyBjaGFuZ2UgaGFzIGJlZW4gdGVzdGVkIHdpdGggRE05MDAwQSwgRE05MDAwRSwgRE05MDAwRVAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgMTM0ZTI2NjI1M2MwMmE3ODMyNTYwZGE1OWQzOTQ5ODljNGY2NDQ1MwotQXV0aG9yOiBSZW15IEJvaG1lciA8bGludXhAYm9obWVyLm5ldD4KLURhdGU6CVR1ZSBKdW4gMyAxNToyNjoyMiAyMDA4ICswMjAwCi0KLSAgICBETTkwMDA6IHJlcGFpciBkZWJ1ZyBsb2dnaW5nCi0KLSAgICBJdCBzZWVtcyB0aGF0IHRoZSBkZWJ1Z2dpbmcgY29kZSBvZiB0aGUgRE05MDAweCBkcml2ZXIgaW4gVS1ib290IGhhcyBub3QgYmVlbgotICAgIGNvbXBpbGVkIGZvciBhIGxvbmcgdGltZSwgYmVjYXVzZSBpdCBjYW5ub3QgY29tcGlsZS4uLgotCi0gICAgQWxzbyByZWFycmFuZ2VkIHNvbWUgbG9nbGluZXMgdG8gZ2V0IG1vcmUgdXNlZnVsIGluZm8gd2hpbGUgZGVidWdnaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGExMDEzNjFiZmUyM2MxMjAzMjFlNDVkMTE0YzA2MDNiOGUwNzYzZTkKLUF1dGhvcjogUmVteSBCb2htZXIgPGxpbnV4QGJvaG1lci5uZXQ+Ci1EYXRlOglUdWUgSnVuIDMgMTU6MjY6MjEgMjAwOCArMDIwMAotCi0gICAgRE05MDAwOiBBZGQgZGF0YSBidXMtd2lkdGggYXV0byBkZXRlY3Rpb24uCi0KLSAgICBUaGUgVS1ib290IERNOTAwMHggZHJpdmVyIGNvbnRhaW5zIGEgY29tcGlsZSB0aW1lIGJ1cy13aWR0aCBkZWZpbml0aW9uIGZvcgotICAgIHRoZSBkYXRhYnVzIGNvbm5lY3RlZCB0byB0aGUgbmV0d29yayBjb250cm9sbGVyLgotCi0gICAgVGhpcyBjb21waWxlIGNoZWNrIG1ha2VzIHRoZSBjb2RlIHVuY2xlYXIsIGluZmxleGlibGUgYW5kIGlzIHVubmVjY2Vzc2FyeS4KLSAgICBJdCBjYW4gYmUgYXNrZWQgdG8gdGhlIG5ldHdvcmsgY29udHJvbGxlciB3aGF0IGl0cyBidXMtd2lkdGggaXMgYnkgcmVhZGluZyBiaXRzCi0gICAgNiBhbmQgNyBvZiB0aGUgaW50ZXJydXB0IHN0YXR1cyByZWdpc3Rlci4KLQotICAgIFRoZSBsaW51eCBrZXJuZWwgYWxyZWFkeSB1c2VzIGEgcnVudGltZSBtZWNoYW5pc20gdG8gZGV0ZXJtaW5lIHRoaXMgYnVzLXdpZHRoLAotICAgIHNvIHRoZSBpbXBsZW1lbnRhdGlvbiBiZWxvdyBsb29rcyBzb21ld2hhdCBsaWtlIHRoYXQgaW1wbGVtZW50YXRpb24uCi0KLSAgICBUaGlzIGNoYW5nZSBoYXMgYmVlbiB0ZXN0ZWQgd2l0aCBETTkwMDBBLCBETTkwMDBFLCBETTkwMDBFUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlbXkgQm9obWVyIDxsaW51eEBib2htZXIubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2M2EwYWZhMGMzMmU1ZjRlYTk4YTk0Mzk1NDI4NzAwNzI0Mzc0MDRkCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKdW4gNCAxOToxOToyMCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIHdpdGggU0RSQU0gaW5pdCBpbiBiYW1ib28gTkFORCBib290aW5nIHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHNwb3R0ZWQgYnkgRXVnZW5lIE8nQnJpYW4gKHRoYW5rcyBFdWdlbmUpCi0gICAgaW50cm9kdWNlZCBieSB0aGUgY29tbWl0OgotCi0gICAgcHBjNHh4L05BTkRfU1BMOiBDb25zb2xpZGF0ZSA0MDUgYW5kIDQ0MCBOQU5EIGJvb3RpbmcgY29kZSBpbiBzdGFydC5TCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggU0RSQU0gd2lsbCBnZXQgaW5pdGlhbGl6ZWQgYWdhaW4gYW5kIGJvb3RpbmcgZnJvbSBOQU5ECi0gICAgaXMgd29ya2luZyBhZ2Fpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogRXVnZW5lIE8nQnJpZW4gPGV1Z2VuZS5vYnJpZW5AYWR2YW50ZWNoYW10LmNvbT4KLQotY29tbWl0IDllZjFjYmVmMWE2NDllMzc3OTI5OGIwZTY2M2JlNDg2NWNiYmJmYmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXkgMjcgMTQ6MTk6MzAgMjAwOCArMDIwMAotCi0gICAgU29jcmF0ZXM6IEZpeCBQQ0kgYnVzIGZyZXF1ZW5jeSByZXBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA4ZWM2ZTMzMmVhY2UwZWU3OGM3MWVlNWY2NDVkMTJiMDY4MTNiODZmCi1BdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Ci1EYXRlOglUaHUgTWF5IDI5IDExOjEwOjMwIDIwMDggKzAyMDAKLQotICAgIEZpeCBpbmNvcnJlY3Qgc3dpdGNoIGZvciBJRl9UWVBFIGluIHBhcnQuYwotCi0gICAgVXNlIGNvcnJlY3QgZmllbGQgaW4gYmxvY2tfZGV2X2Rlc2NfdCB3aGVuIHdyaXRpbmcgaW50ZXJmYWNlIHR5cGUgaW4KLSAgICBkZXZfcHJpbnQuIEVycm9yIGludHJvZHVjZWQgaW4gNTc0YjMxOTUuCi0KLSAgICBBbHNvIGFkZGVkIGZpeCBmcm9tIE1hcnRpbiBLcmF1c2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Ci0KLWNvbW1pdCBiNjRiOGEwYmQzMTA5MzViNzBhZjY5YWM5NzA5NTJmMmIzNjRhZTU2Ci1BdXRob3I6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLURhdGU6CVR1ZSBNYXkgMjcgMTA6MjU6MzkgMjAwOCArMDIwMAotCi0gICAgQWRkIHNpemUgI2RlZmluZXMgZm9yIEFsdGVyYSBDeWNsb25lLUlJIEVQMkM4IGFuZCBFUDJDMjAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZSBTY2h3YXJ6IDxhbmRyZS5zY2h3YXJ6QG1hdHJpeC12aXNpb24uZGU+Ci0KLWNvbW1pdCAzNWVmODc3ZjBhOGY2MjMyY2RlZjc0OGY0NDJmZWQ1YWNjYjJiNjQxCi1BdXRob3I6IFBldGVyIFR5c2VyIDxwdHlzZXJAeGVzLWluYy5jb20+Ci1EYXRlOglUaHUgTWF5IDIyIDE4OjU2OjUyIDIwMDggLTA1MDAKLQotICAgIEFkZGl0aW9uYWwgZml4IHRvIHJlYWRsaW5lX2ludG9fYnVmZmVyKCkgd2l0aCBDT05GSUdfQ01ETElORV9FRElUSU5HIGJlZm9yZSByZWxvY2F0aW5nCi0KLSAgICBSZW1vdmVkIHVubmVlZGVkIGNvbW1hbmQgbGluZSBoaXN0b3J5IGluaXRpYWxpemF0aW9uLiAgQWxzbywgdGhlIG9yaWdpbmFsCi0gICAgY29kZSB3b3VsZCBhY2Nlc3MgdGhlICdpbml0dGVkJyB2YXJpYWJsZSBiZWZvcmUgcmVsb2NhdGlvbiB0byBTRFJBTQotICAgIHdoaWNoIHJlc3VsdGVkIGluIGVycmF0aWMgYmVoYXZpb3Igc2luY2UgdGhlIGJzcyBpcyBub3QgaW5pdGlhbGl6ZWQgd2hlbgotICAgIGV4ZWN1dGluZyBmcm9tIGZsYXNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgVHlzZXIgPHB0eXNlckB4ZXMtaW5jLmNvbT4KLQotY29tbWl0IDIyZjM3MWI2MzAzOGE0ZWNhYjA0MDY4ODc3YzEwODllNTFhMDFiYTEKLUF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLURhdGU6CVdlZCBNYXkgMjEgMTM6Mjg6MzAgMjAwOCAtMDcwMAotCi0gICAgUFBDNHh4OiBTaW1wbGlmaWVkIHBvc3Rfd29yZF97bG9hZCwgc3RvcmV9Ci0KLSAgICBUaGlzIHBhdGNoIHNpbXBsaWZpZXMgcG9zdF93b3JkX3tsb2FkLHN0b3JlfSBieSB1c2luZyB0aGUgcHJlcHJvY2Vzc29yCi0gICAgdG8gZWxpbWluYXRlIHJlZHVuZGFudCwgY29weS1hbmQtcGFzdGVkIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotCi1jb21taXQgOWMwNDhiNTIzNDEzYWU1ZjNmZjM0ZTAwY2Y1NzU2OWMzMzY4YWI1MQotQXV0aG9yOiBWYXNpbGl5IExlb2VuZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgotRGF0ZToJV2VkIE1heSA3IDIxOjI1OjMzIDIwMDggKzA0MDAKLQotICAgIGNmaV9mbGFzaDogZW5hYmxlIE0xOCBmbGFzaCBjaGlwcyBmYW1pbHkgc3VwcG9ydC4KLQotICAgIEFkZGVkIG5ldyBjb21tYW5kIHNldCBJRC4gQnVmZmVyZWQgd3JpdGUgY29tbWFuZCBwcm9jZXNzaW5nIGlzIGNoYW5nZWQKLSAgICBpbiBvcmRlciB0byBzdXBwb3J0IE0xOCBmbGFzaCBjaGlwcyBmYW1pbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4ZXkgS29yb2xldiA8YWtvcm9sZXZAaW5mcmFkZWFkLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBWYXNpbGl5IExlb25lbmtvIDx2YXNpbGl5Lmxlb25lbmtvQG1haWwucnU+Ci0KLWNvbW1pdCA5M2M1NmYyMTJjY2RhZGMxODIwMThmMDc2OWNiMjg0NDI2Yjg4ZjFkCi1BdXRob3I6IFZhc2lsaXkgTGVvZW5lbmtvIDx2YXNpbGl5Lmxlb25lbmtvQG1haWwucnU+Ci1EYXRlOglXZWQgTWF5IDcgMjE6MjQ6NDQgMjAwOCArMDQwMAotCi0gICAgY2ZpX2ZsYXNoOiBzdXBwb3J0IG9mIGxvbmcgY21kIGluIFUtYm9vdC4KLQotICAgIFNvbWUgTk9SIGZsYXNoIGNoaXBzIG5lZWRzIHN1cHBvcnQgb2YgY29tbWFuZHMgd2l0aCBsZW5ndGggZ3JldGhlciB0aGFuIG1heAotICAgIHZhbHVlIHNpemUgb2YgdWNoYXIuIEZvciBleGFtcGxlIGFsbCBNMTggZmFtaWx5IGNoaXBzIHVzZSAweDFmZiBjb21tYW5kIGluCi0gICAgYnVmZmVyZWQgd3JpdGUgbW9kZSBhcyB2YWx1ZSBvZiBwcm9ncmFtIGxvb3BzIGNvdW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxleGV5IEtvcm9sZXYgPGFrb3JvbGV2QGluZnJhZGVhZC5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogVmFzaWxpeSBMZW9uZW5rbyA8dmFzaWxpeS5sZW9uZW5rb0BtYWlsLnJ1PgotCi1jb21taXQgNGQ5MWQxZGYyZjE2YjUxMWFiODBkZWM1MGM4MGUwNTBiYTBkODQxZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgTWF5IDE2IDExOjA2OjA2IDIwMDggKzAyMDAKLQotICAgIERUVDogSXNzdWUgb25lLXNob3QgY29tbWFuZCBvbiBBRDc0MTQgKExNNzUgY29kZSkgdG8gcmVhZCB0ZW1wCi0KLSAgICBPbiBBRDc0MTQgdGhlIGZpcnN0IHZhbHVlIHVwb24gYm9vdHVwIGlzIG5vdCByZWFkIGNvcnJlY3RseS4KLSAgICBUaGlzIGlzIG1vc3QgbGlrZWx5IGJlY2F1c2Ugb2YgdGhlIDgwMG1zIHVwZGF0ZSB0aW1lIG9mIHRoZQotICAgIHRlbXAgcmVnaXN0ZXIgaW4gbm9ybWFsIHVwZGF0ZSBtb2RlLiBUbyBnZXQgY3VycmVudCB2YWx1ZXMKLSAgICBlYWNoIHRpbWUgd2UgaXNzdWUgdGhlICJkdHQiIGNvbW1hbmQgaW5jbHVkaW5nIHVwb24gcG93ZXJ1cAotICAgIHdlIHN3aXRjaCBpbnRvIG9uZS1zaG9ydCBtb2RlLgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSBvbiBBRDc0MTQgZXF1aXBwZWQgYm9hcmRzIChTZXF1b2lhLAotICAgIENhbnlvbmxhbmRzIGV0YyksIHRoYXQgdGVtcCB2YWx1ZSBwcmludGVkIGluIHRoZSBib290dXAgbG9nIHdhcwotICAgIGluY29ycmVjdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRlNWJmY2Y3YjA0MjVlMDMyYmUxMjY5ODI1MmRiYWE2YjY1YTI4YzAKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgTWF5IDMwIDE2OjU1OjA2IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ2xlYW51cCBDUENJNDA1IHZhcmlhbnQncyBjb25maWcgZmlsZQotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHNvbWUgZGVhZCBjb2RlIGZyb20gQ1BDSTQwNSBib2FyZCdzCi0gICAgY29uZmlnIGZpbGVzLiBKRkZTMiBzdXBwb3J0IGlzIGFsc28gcmVtb3ZlZC4gSXQncyBub3QgdXNlZCBhbmQKLSAgICBDUENJNDA1MiBkb2VzIG5vdCBidWlsZCBhbnltb3JlIHdpdGhvdXQgc29tZSBzaXplIHJlZHVjdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgMjkxOGViOWQ0MmJjNzA1ZmNiZDE4YzlmY2MzOWQxNWZmMjg0M2M2NQotQXV0aG9yOiBLZW5uZXRoIEpvaGFuc3NvbiA8a2VubmV0aEBzb3V0aHBvbGUuc2U+Ci1EYXRlOglUaHUgTWF5IDI5IDE2OjMyOjMzIDIwMDggKzAyMDAKLQotICAgIFJlbW92ZSBzaGVsbCB2YXJpYWJsZSBVTkRFRl9TWU0uCi0KLSAgICBVTkRFRl9TWU0gaXMgYSBzaGVsbCB2YXJpYWJsZSBpbiB0aGUgbWFpbiBNYWtlZmlsZSB1c2VkIHRvIGZvcmNlIHRoZQotICAgIGxpbmtlciB0byBhZGQgYWxsIHUtYm9vdCBjb21tYW5kcyB0byB0aGUgZmluYWwgaW1hZ2UuIEl0IGhhcyBubyB1c2UgaGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtlbm5ldGggSm9oYW5zc29uIDxrZW5uZXRoQHNvdXRocG9sZS5zZT4KLQotY29tbWl0IDhjNjY0OTdlMDZiZjgwMzQ4OWM1ODlkZjU4ZWU1OTFkNzEwMzMyNzQKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIE1heSAxNiAxMToxMDozNSAyMDA4ICswMjAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZW52aXJvbm1lbnQgaW4gU1BJIGZsYXNoCi0KLSAgICBUaGlzIGlzIHByZXR0eSBpbmNvbXBsZXRlLi4uaXQgZG9lc24ndCBoYW5kbGUgcmVhZGluZyB0aGUgZW52aXJvbm1lbnQKLSAgICBiZWZvcmUgcmVsb2NhdGlvbiwgaXQgZG9lc24ndCBzdXBwb3J0IHJlZHVuZGFudCBlbnZpcm9ubWVudCwgYW5kIGl0Ci0gICAgZG9lc24ndCBzdXBwb3J0IGVtYmVkZGVkIGVudmlyb25tZW50LiBCdXQgYXBhcnQgZnJvbSB0aGF0LCBpdCBkb2VzCi0gICAgc2VlbSB0byB3b3JrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYjYzNjg0NjdlNmE5N2YyMjVlMGE1ZmQ3YmZjNWM3NTk4ZWY1ZGRjNAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglGcmkgTWF5IDE2IDExOjEwOjM0IDIwMDggKzAyMDAKLQotICAgIFNQSSBGbGFzaDogQWRkICJzZiIgY29tbWFuZAotCi0gICAgVGhpcyBhZGRzIGEgbmV3IGNvbW1hbmQsICJzZiIgd2hpY2ggY2FuIGJlIHVzZWQgdG8gbWFuaXB1bGF0ZSBTUEkKLSAgICBmbGFzaC4gQ3VycmVudGx5LCBpbml0aWFsaXphdGlvbiwgcmVhZGluZywgd3JpdGluZyBhbmQgZXJhc2luZyBpcwotICAgIHN1cHBvcnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGQyNWNlN2QyNGNjMGY5Mzg4MTU1OWY0MDA5MTc1ZWEzMDVhZjY1ZTgKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIE1heSAxNiAxMToxMDozMyAyMDA4ICswMjAwCi0KLSAgICBTUEkgRmxhc2ggc3Vic3lzdGVtCi0KLSAgICBUaGlzIGFkZHMgYSBuZXcgU1BJIGZsYXNoIHN1YnN5c3RlbS4KLQotICAgIEN1cnJlbnRseSwgb25seSBBVDQ1IERhdGFGbGFzaCBpbiBub24tcG93ZXItb2YtdHdvIG1vZGUgaXMgc3VwcG9ydGVkLAotICAgIGJ1dCBzb21lIHByZWxpbWluYXJ5IHN1cHBvcnQgZm9yIG90aGVyIGZsYXNoIHR5cGVzIGlzIGluIHBsYWNlIGFzCi0gICAgd2VsbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDYwNDQ1Y2I1YzNlYjc3ZWQxYTA3ZjJkOTA4ZWVmMDkxNzQ0ODM2OTgKLUF1dGhvcjogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KLURhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzIgMjAwOCArMDIwMAotCi0gICAgYXRtZWxfc3BpOiBEcml2ZXIgZm9yIHRoZSBBdG1lbCBTUEkgY29udHJvbGxlcgotCi0gICAgVGhpcyBhZGRzIGEgZHJpdmVyIGZvciB0aGUgU1BJIGNvbnRyb2xsZXIgZm91bmQgb24gbW9zdCBBVDkxIGFuZCBBVlIzMgotICAgIGNoaXBzLCBpbXBsZW1lbnRpbmcgdGhlIG5ldyBTUEkgQVBJLgotCi0gICAgQ2hhbmdlZCBpbiB2NDoKLSAgICAgIC0gVXBkYXRlIHRvIG5ldyBBUEkKLSAgICAgIC0gSGFuZGxlIHplcm8tbGVuZ3RoIHRyYW5zZmVycyBhcHByb3ByaWF0ZWx5LiBUaGUgdXNlciBtYXkgc2VuZCBhCi0JemVyby1sZW5ndGggU1BJIHRyYW5zZmVyIHdpdGggU1BJX1hGRVJfRU5EIHNldCBpbiBvcmRlciB0bwotCWRlYWN0aXZhdGUgdGhlIGNoaXAgc2VsZWN0IGFmdGVyIGEgc2VyaWVzIG9mIHRyYW5zZmVycyB3aXRoIGNoaXAKLQlzZWxlY3QgYWN0aXZlLiBUaGlzIGlzIHVzZWZ1bCBlLmcuIHdoZW4gcG9sbGluZyB0aGUgc3RhdHVzCi0JcmVnaXN0ZXIgb2YgRGF0YUZsYXNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBkMjU1YmIwZTc4ZDFjYWM1YjdjOGM5OGNiNzdhMDk1ZjVmMTZkZTBkCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIE1heSAxNiAxMToxMDozMSAyMDA4ICswMjAwCi0KLSAgICBTUEkgQVBJIGltcHJvdmVtZW50cwotCi0gICAgVGhpcyBwYXRjaCBnZXRzIHJpZCBvZiB0aGUgc3BpX2NoaXBzZWwgdGFibGUgYW5kIGFkZHMgYSBoYW5kZnVsIG9mIG5ldwotICAgIGZ1bmN0aW9ucyB0aGF0IG1ha2VzIHRoZSBTUEkgbGF5ZXIgY2xlYW5lciBhbmQgbW9yZSBmbGV4aWJsZS4KLQotICAgIEluc3RlYWQgb2YgdGhlIHNwaV9jaGlwc2VsIHRhYmxlLCBlYWNoIGJvYXJkIHRoYXQgd2FudHMgdG8gdXNlIFNQSQotICAgIGdldHMgdG8gaW1wbGVtZW50IHRocmVlIGhvb2tzOgotICAgICAgKiBzcGlfY3NfYWN0aXZhdGUoKTogQWN0aXZhdGVzIHRoZSBjaGlwc2VsZWN0IGZvciBhIGdpdmVuIHNsYXZlCi0gICAgICAqIHNwaV9jc19kZWFjdGl2YXRlKCk6IERlYWN0aXZhdGVzIHRoZSBjaGlwc2VsZWN0IGZvciBhIGdpdmVuIHNsYXZlCi0gICAgICAqIHNwaV9jc19pc192YWxpZCgpOiBEZXRlcm1pbmVzIGlmIHRoZSBnaXZlbiBidXMvY2hpcHNlbGVjdAotCWNvbWJpbmF0aW9uIGNhbiBiZSBhY3RpdmF0ZWQuCi0KLSAgICBOb3QgYWxsIGRyaXZlcnMgbWF5IG5lZWQgdGhvc2UgZXh0cmEgZnVuY3Rpb25zIGhvd2V2ZXIuIElmIHRoYXQncyB0aGUKLSAgICBjYXNlLCB0aGUgYm9hcmQgY29kZSBtYXkganVzdCBsZWF2ZSB0aGVtIG91dCAoYXNzdW1pbmcgdGhleSBrbm93IHdoYXQKLSAgICB0aGUgZHJpdmVyIG5lZWRzKSBvciByZWx5IG9uIHRoZSBsaW5rZXIgdG8gc3RyaXAgdGhlbSBvdXQgKGFzc3VtaW5nCi0gICAgLS1nYy1zZWN0aW9ucyBpcyBiZWluZyB1c2VkLikKLQotICAgIFRvIHNldCB1cCBjb21tdW5pY2F0aW9uIHBhcmFtZXRlcnMgZm9yIGEgZ2l2ZW4gc2xhdmUsIHRoZSBkcml2ZXIgbmVlZHMKLSAgICB0byBjYWxsIHNwaV9zZXR1cF9zbGF2ZSgpLiBUaGlzIHJldHVybnMgYSBwb2ludGVyIHRvIGFuIG9wYXF1ZQotICAgIHNwaV9zbGF2ZSBzdHJ1Y3Qgd2hpY2ggbXVzdCBiZSBwYXNzZWQgYXMgYSBwYXJhbWV0ZXIgdG8gc3Vic2VxdWVudCBTUEkKLSAgICBjYWxscy4gVGhpcyBzdHJ1Y3QgY2FuIGJlIGZyZWVkIGJ5IGNhbGxpbmcgc3BpX2ZyZWVfc2xhdmUoKSwgYnV0IG1vc3QKLSAgICBkcml2ZXIgcHJvYmFibHkgZG9uJ3Qgd2FudCB0byBkbyB0aGlzLgotCi0gICAgQmVmb3JlIHN0YXJ0aW5nIG9uZSBvciBtb3JlIFNQSSB0cmFuc2ZlcnMsIHRoZSBkcml2ZXIgbXVzdCBjYWxsCi0gICAgc3BpX2NsYWltX2J1cygpIHRvIGdhaW4gZXhjbHVzaXZlIGFjY2VzcyB0byB0aGUgU1BJIGJ1cyBhbmQgaW5pdGlhbGl6ZQotICAgIHRoZSBoYXJkd2FyZS4gV2hlbiBhbGwgdHJhbnNmZXJzIGFyZSBkb25lLCB0aGUgZHJpdmVyIG11c3QgY2FsbAotICAgIHNwaV9yZWxlYXNlX2J1cygpIHRvIG1ha2UgdGhlIGJ1cyBhdmFpbGFibGUgdG8gb3RoZXJzLCBhbmQgcG9zc2libHkKLSAgICBzaHV0IGRvd24gdGhlIFNQSSBjb250cm9sbGVyIGhhcmR3YXJlLgotCi0gICAgc3BpX3hmZXIoKSBiZWhhdmVzIG1vc3RseSB0aGUgc2FtZSBhcyBiZWZvcmUsIGJ1dCBpdCBub3cgdGFrZXMgYQotICAgIHNwaV9zbGF2ZSBwYXJhbWV0ZXIgaW5zdGVhZCBvZiBhIHNwaV9jaGlwc2VsIGZ1bmN0aW9uIHBvaW50ZXIuIEl0IGFsc28KLSAgICBnb3QgYSBuZXcgcGFyYW1ldGVyLCBmbGFncywgd2hpY2ggaXMgdXNlZCB0byBzcGVjaWZ5IGNoaXAgc2VsZWN0Ci0gICAgYmVoYXZpb3VyLiBUaGlzIG1heSBiZSBleHRlbmRlZCB3aXRoIG90aGVyIGZsYWdzIGluIHRoZSBmdXR1cmUuCi0KLSAgICBUaGlzIHBhdGNoIGhhcyBiZWVuIGJ1aWxkLXRlc3RlZCBvbiBhbGwgcG93ZXJwYyBhbmQgYXJtIGJvYXJkcwotICAgIGludm9sdmVkLiBJIGhhdmUgbm90IHRlc3RlZCBOSU9TIHNpbmNlIEkgZG9uJ3QgaGF2ZSBhIHRvb2xjaGFpbiBmb3IgaXQKLSAgICBpbnN0YWxsZWQsIHNvIEkgZXhwZWN0IHNvbWUgYnJlYWthZ2UgdGhlcmUgZXZlbiB0aG91Z2ggSSd2ZSB0cmllZAotICAgIGZpeGluZyB1cCBldmVyeXRoaW5nIEkgY291bGQgZmluZCBieSB2aXN1YWwgaW5zcGVjdGlvbi4KLQotICAgIEkgaGF2ZSBydW4tdGltZSB0ZXN0ZWQgdGhpcyBvbiBBVlIzMiBBVE5HVzEwMCB1c2luZyB0aGUgYXRtZWxfc3BpIGFuZAotICAgIERhdGFGbGFzaCBkcml2ZXJzIHBvc3RlZCBhcyBhIGZvbGxvdy11cC4gSSdkIGxpa2Ugc29tZSBoZWxwIHRlc3RpbmcKLSAgICBvdGhlciBib2FyZHMgdGhhdCB1c2UgdGhlIGV4aXN0aW5nIFNQSSBBUEkuCi0KLSAgICBCdXQgbW9zdCBvZiBhbGwsIEknZCBsaWtlIHNvbWUgY29tbWVudHMgb24gdGhlIG5ldyBBUEkuIElzIHRoaXMgc3R1ZmYKLSAgICB1c2FibGUgZm9yIGV2ZXJ5b25lPyBJZiBub3QsIHdoeT8KLQotICAgIENoYW5nZWQgaW4gdjQ6Ci0gICAgICAtIEJ1aWxkIGZpeGVzIGZvciB2YXJpb3VzIGJvYXJkcywgZHJpdmVycyBhbmQgY29tbWFuZHMKLSAgICAgIC0gUHJvdmlkZSBjb21tb24gc3RydWN0IHNwaV9zbGF2ZSBkZWZpbml0aW9uIHRoYXQgY2FuIGJlIGV4dGVuZGVkIGJ5Ci0JZHJpdmVycwotICAgICAgLSBQYXNzIGEgc3RydWN0IHNwaV9zbGF2ZSAqIHRvIHNwaV9jc19hY3RpdmF0ZSBhbmQgc3BpX2NzX2RlYWN0aXZhdGUKLSAgICAgIC0gTWFrZSBkZWZhdWx0IGJ1cyBhbmQgbW9kZSBidWlsZC10aW1lIGNvbmZpZ3VyYWJsZQotICAgICAgLSBPdmVycmlkZSBkZWZhdWx0IFNQSSBidXMgSUQgYW5kIG1vZGUgb24gbXgzMmFkcyBhbmQgaW14MzFfbGl0ZWtpdC4KLQotICAgIENoYW5nZWQgaW4gdjM6Ci0gICAgICAtIEFkZCBvcGFxdWUgc3RydWN0IHNwaV9zbGF2ZSBmb3IgY29udHJvbGxlci1zcGVjaWZpYyBkYXRhIGFzc29jaWF0ZWQKLQl3aXRoIGEgc2xhdmUuCi0gICAgICAtIEFkZCBzcGlfY2xhaW1fYnVzKCkgYW5kIHNwaV9yZWxlYXNlX2J1cygpCi0gICAgICAtIEFkZCBzcGlfZnJlZV9zbGF2ZSgpCi0gICAgICAtIHNwaV9zZXR1cCgpIGlzIG5vdyBjYWxsZWQgc3BpX3NldHVwX3NsYXZlKCkgYW5kIHJldHVybnMgYQotCXN0cnVjdCBzcGlfc2xhdmUKLSAgICAgIC0gc29mdF9zcGkgbm93IHN1cHBvcnRzIGZvdXIgU1BJIG1vZGVzIChDUE9MfENQSEEpCi0gICAgICAtIEFkZCBidXMgcGFyYW1ldGVyIHRvIHNwaV9zZXR1cF9zbGF2ZSgpCi0gICAgICAtIENvbnZlcnQgdGhlIG5ldyBpLk1YMzIgU1BJIGRyaXZlcgotICAgICAgLSBDb252ZXJ0IHRoZSBuZXcgTUMxMzc4MyBSVEMgZHJpdmVyCi0KLSAgICBDaGFuZ2VkIGluIHYyOgotICAgICAgLSBDb252ZXJ0IHRoZSBtcGM4eHh4X3NwaSBkcml2ZXIgYW5kIHRoZSBtcGM4MzQ5ZW1kcyBib2FyZCB0byB0aGUKLQluZXcgQVBJLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0gICAgVGVzdGVkLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCAyODkwMTEyMDdkOTk5YjJlNDA4NTE1MGQyYWEzMGQ1NDdhZDliODAwCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBNYXkgMTYgMTE6MTA6MzAgMjAwOCArMDIwMAotCi0gICAgTW92ZSBkZWZpbml0aW9uIG9mIGNvbnRhaW5lcl9vZigpIHRvIGNvbW1vbi5oCi0KLSAgICBBVlIzMiBhbmQgQVQ5MVNBTTkgYm90aCBoYXZlIHRoZWlyIG93biBpZGVudGljYWwgZGVmaW5pdGlvbnMgb2YKLSAgICBjb250YWluZXJfb2YoKSB0YWtlbiBmcm9tIHRoZSBMaW51eCBrZXJuZWwuIE1vdmUgaXQgdG8gY29tbW9uLmggc28KLSAgICB0aGF0IGFsbCBhcmNoaXRlY3R1cmVzIGNhbiB1c2UgaXQuCi0KLSAgICBjb250YWluZXJfb2YoKSBpcyBhbHJlYWR5IHVzZWQgYnkgc29tZSBkcml2ZXJzLCBhbmQgd2lsbCBiZSB1c2VkCi0gICAgZXh0ZW5zaXZlbHkgYnkgdGhlIG5ldyBhbmQgaW1wcm92ZWQgU1BJIEFQSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDExMGUwMDZmZTY3ZmI0YTZlMTcxOWFlNjk1NmM3OWI3ZmZjMDE0OGIKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIE1heSAxNiAxMTowODoxMSAyMDA4ICswMjAwCi0KLSAgICBzb2Z0X2kyYzogUHVsbCBTREEgaGlnaCBiZWZvcmUgcmVhZGluZwotCi0gICAgU3BvdHRlZCBieSBEZWFuIENhcGluZGFsZS4KLQotICAgIFN5c3RlbXMgdGhhdCBzdXBwb3J0IG9wZW4tZHJhaW4gR1BJTyBwcm9wZXJseSBhcmUgYWxsb3dlZCBwcm92aWRlIGFuCi0gICAgZW1wdHkgSTJDX1RSSVNUQVRFIGRlZmluZS4gSG93ZXZlciwgdGhpcyBtZWFucyB0aGF0IHdlIG5lZWQgdG8gYmUKLSAgICBjYXJlZnVsIG5vdCB0byBkcml2ZSBTREEgbG93IHdoZW4gdGhlIHNsYXZlIGlzIGV4cGVjdGVkIHRvIHJlc3BvbmQuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYSBtaXNzaW5nIEkyQ19TREEoMSkgdG8gcmVhZF9ieXRlKCkgcmVxdWlyZWQgdG8KLSAgICB0cmlzdGF0ZSB0aGUgU0RBIGxpbmUgb24gc3lzdGVtcyB0aGF0IHN1cHBvcnQgb3Blbi1kcmFpbiBHUElPLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgM2MxZGUxYTZkMzZiZTllZWUyODRhNmM1OTZhODZlOTRmMTljYzViMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTWF5IDE5IDExOjM0OjUzIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIGltcGxlbWVudGF0aW9ucyBvZiB0ZXN0ZHJhbSgpCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgdGhlIHVzZWQgdGVzdGRyYW0oKSBpbXBsZW1lbnRhdGlvbnMgb2YgdGhlIGJvYXJkCi0gICAgdGhhdCBhcmUgbWFpbnRhaW5lZCBieSBteXNlbGYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiYmVmZjMwY2JkMWM1ZDU1MWViMGFkMWMyMjM5ZWMwMTg0NGMwYjBhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBKdW4gMiAxNzozNzoyOCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSBzdXBlcmZsdW91cyBkcmFtX2luaXQoKSBjYWxsIG9yIHJlcGxhY2UgaXQgYnkgaW5pdGRyYW0oKQotCi0gICAgSGlzdG9yaWNhbGx5IHRoZSA0MDUgVS1Cb290IHBvcnQgaGFkIGEgZHJhbV9pbml0KCkgY2FsbCBpbiBlYXJseSBpbml0Ci0gICAgc3RhZ2UuIFRoaXMgZnVuY3Rpb24gd2FzIHN0aWxsIGNhbGxlZCBmcm9tIHN0YXJ0LlMgYW5kIG1vc3Qgb2YgdGhlIHRpbWUKLSAgICBjb2RlZCBpbiBhc3NlbWJsZXIuIFRoaXMgaXMgbm90IG5lZWRlZCBhbnltb3JlIChzaW5jZSBhIGxvbmcgdGltZSkgYW5kCi0gICAgYm9hcmRzIHNob3VsZCBpbXBsZW1lbnQgdGhlIGNvbW1vbiBpbml0ZHJhbSgpIGZ1bmN0aW9uIGluIEMgaW5zdGVhZC4KLQotICAgIFRoaXMgcGF0Y2ggbm93IHJlbW92ZWQgdGhlIGRyYW1faW5pdCgpIGNhbGwgZnJvbSBzdGFydC5TIGFuZCByZW1vdmVzIHRoZQotICAgIGVtcHR5IGltcGxlbWVudGF0aW9ucyB0aGF0IGFyZSBzY2F0dGVyZWQgdGhyb3VnaCBtb3N0IG9mIHRoZSA0MDUgYm9hcmQKLSAgICBwb3J0cy4gU29tZSBvbGRlciBib2FyZCBwb3J0cyByZWFsbHkgaW1wbGVtZW50IHRoaXMgZHJhbV9pbml0KCkgdGhvdWdoLgotICAgIFRoZXNlIGFyZToKLQotICAgIGNzYjI3MgotICAgIGNzYjQ3MgotICAgIEVSSUMKLSAgICBFWEJJVEdFTgotICAgIFc3T0xNQwotICAgIFc3T0xNRwotCi0gICAgSSBjaGFuZ2VkIHRob3NlIGJvYXJkcyB0byBjYWxsIHRoaXMgYXNzZW1ibGVyIGRyYW1faW5pdCgpIGZ1bmN0aW9uIG5vdwotICAgIGZyb20gdGhlaXIgYm9hcmQgc3BlY2lmaWMgaW5pdGRyYW0oKSBpbnN0ZWFkLiBUaGlzICpzaG91bGQqIHdvcmssIGJ1dCBwbGVhc2UKLSAgICB0ZXN0IGFnYWluIG9uIHRob3NlIHBsYXRmb3Jtcy4gQW5kIGl0IGlzIHBlcmhhcHMgYSBnb29kIGlkZWEgdGhhdCB0aG9zZQotICAgIGJvYXJkcyB1c2Ugc29tZSBjb21tb24gNDA1IFNEUkFNIGluaXRpYWxpemF0aW9uIGNvZGUgZnJvbSBjcHUvcHBjNHh4IGF0Ci0gICAgc29tZSB0aW1lLiBTbyBmdXJ0aGVyIHBhdGNoZXMgd2VsY29tZSBoZXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTkyZjkwZTI3MmIzOTg5ZWU3YjRhNjY2ZDFmZGFiODMxZjIwZjhkMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVuIDIgMTc6MjI6MTEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBVc2UgbmV3IDR4eCBTRFJBTSBjb250cm9sbGVyIGVuYWJsZSBkZWZpbmVzIGluIGNvbW1vbiBFQ0MgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzliMzJiZTE4Y2QzM2I1M2E4NDA2NWVkY2Q0ZTQ2NTE2NWNjNTU2NAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVuIDIgMTc6MjA6MDMgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggY29tbW9uIEVDQyBnZW5lcmF0aW9uIGNvZGUgZm9yIDQ0MEdQIHN0eWxlIHBsYXRmb3JtcwotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgY29tbW9uIDR4eCBFQ0MgY29kZSByZWFsbHkgdXNhYmxlIG9uIDQ0MEdQIHN0eWxlCi0gICAgcGxhdGZvcm1zLgotCi0gICAgU2luY2UgdGhlIElCTSBERFIgY29udHJvbGxlciB1c2VkIG9uIDQ0MEdQL0dYL0VQL0dSIGlzIG5vdCByZWdpc3RlcgotICAgIGNvbXBhdGlibGUgdG8gdGhlIElCTSBERFIvMiBjb250cm9sbGVyIHVzZWQgb24gNDA1RVgvNDQwU1AvU1BlLzQ2MEVYL0dUCi0gICAgd2UgbmVlZCB0byBtYWtlIHNvbWUgcHJvY2Vzc29yIGRlcGVuZGFudCBkZWZpbmVzIHVzZWQgbGF0ZXIgb24gYnkgdGhlCi0gICAgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWM3MjRmODgzZWUzZjM5MjVlNmM1NTAyN2U4ZmZhNzBhZGE4MzMwMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVuIDIgMTc6MTM6NTUgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDaGFuZ2UgS2lsYXVlYSB0byB1c2UgdGhlIGNvbW1vbiBERFIyIGluaXQgZnVuY3Rpb24KLQotICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUga2lsYXVlYSBhbmQga2lsYXVlYV9uYW5kIChmb3IgTkFORCBib290aW5nKQotICAgIGJvYXJkIHBvcnQgdG8gbm90IHVzZSBhIGJvYXJkIHNwZWNpZmljIEREUjIgaW5pdCByb3V0aW5lIGFueW1vcmUuIE5vdwotICAgIHRoZSBjb21tb24gY29kZSBmcm9tIGNwdS9wcGM0eHggaXMgdXNlZC4KLQotICAgIFRoYW5rcyB0byBHcmFudCBFcmlja3NvbiBmb3IgYWxsIGhpcyBiYXNpYyB3b3JrIG9uIHRoaXMgNDA1RVggZWFybHkKLSAgICBib290dXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxN2NlYjA2OWI4NWZiYjkyNjljNGRjMDliMmMyMzdmODgzMzRjNWJhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBKdW4gMiAxNDo1OToyMSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IENvbnNvbGlkYXRlIFBQQzR4eCBTRFJBTS9ERFIvRERSMiBkZWZpbmVzLCBwYXJ0MgotCi0gICAgVGhpcyBwYXRjaCBub3cgYWRkcyBhIG5ldyBoZWFkZXIgZmlsZSAoYXNtLXBwYy9wcGM0eHgtc2RyYW0uaCkgZm9yIGFsbAotICAgIHBwYzR4eCByZWxhdGVkIFNEUkFNL0REUi9ERFIyIGNvbnRyb2xsZXIgZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDM2ZWExNmY2YTA2NmNjYjA0NmU5MWViY2U0ZjMyNmI2OWY0YzA1NjkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1biAyIDE0OjU3OjQxIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ29uc29saWRhdGUgUFBDNHh4IFNEUkFNL0REUi9ERFIyIGRlZmluZXMsIHBhcnQxCi0KLSAgICBUaGlzIHBhdGNoIHJlbW92ZXMgYWxsIFNEUkFNIHJlbGF0ZWQgZGVmaW5lcyBmcm9tIHRoZSBQUEM0eHggaGVhZGVycwotICAgIHBwYzQwNS5oIGFuZCBwcGM0NDAuaC4gVGhpcyBpcyBuZWVkZWQgc2luY2Ugbm93IHNvbWUgNDA1IFBQQydzIHVzZQotICAgIHRoZSBzYW1lIFNEUkFNIGNvbnRyb2xsZXIgYXMgNDQwIHN5c3RlbXMgZG8gKGxpa2UgNDA1RVggYW5kIDQ0MFNQKS4KLQotICAgIEl0IGFsc28gaW50cm9kdWNlcyBuZXcgZGVmaW5lcyBmb3IgdGhlIGVxdWlwcGVkIFNEUkFNIGNvbnRyb2xsZXIgYmFzZWQgb24KLSAgICB3aGljaCBQUEMgdmFyaWFudCBpcyB1c2VkLiBUaGVyZSBuZXcgZGVmaW5lcyBhcmU6Ci0KLSAgICB1c2VkIG9uIDQwNUdSL0NSL0VQIGFuZCBzb21lIFhpbGlueCBWaXJ0ZXggYm9hcmRzLgotCi0gICAgdXNlZCBvbiA0NDBHUC9HWC9FUC9HUi4KLQotICAgIHVzZWQgb24gNDQwRVB4L0dSeC4KLQotICAgIHVzZWQgb24gNDA1RVgvci80NDBTUC9TUGUvNDYwRVgvR1QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2NDg1MmQwOWUwNmRkNmRiMmIyZGIyYTNjNTliYzJkYjE3NmE1NGQ2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBKdW4gMiAxNDozNTo0NCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHgvTkFORF9TUEw6IENvbnNvbGlkYXRlIDQwNSBhbmQgNDQwIE5BTkQgYm9vdGluZyBjb2RlIGluIHN0YXJ0LlMKLQotICAgIFRoaXMgcGF0Y2ggY29uc29saWRhdGVzIHRoZSA0MDUgYW5kIDQ0MCBwYXJ0cyBvZiB0aGUgTkFORCBib290aW5nIGNvZGUKLSAgICBzZWxlY3RlZCB2aWEgQ09ORklHX05BTkRfU1BMLiBOb3cgY29tbW9uIGNvZGUgaXMgdXNlZCB0byBpbml0aWFsaXplIHRoZQotICAgIFNEUkFNIGJ5IGNhbGxpbmcgaW5pdGRyYW0oKSBhbmQgdG8gImNvcHkvcmVsb2NhdGUiIHRvIFNEUkFNL09DTS9ldGMuCi0gICAgT25seSAqYWZ0ZXIqIHJ1bm5pbmcgZnJvbSB0aGlzIGxvY2F0aW9uLCBuYW5kX2Jvb3QoKSBpcyBjYWxsZWQuCi0KLSAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBpbml0c2RyYW0oKSBjYWxsIGlzIG5vdyBtb3ZlZCBmcm9tIG5hbmRfYm9vdC5jCi0gICAgdG8gc3RhcnQuUy4gSSBleHBlcmllbmNlZCBwcm9ibGVtcyB3aXRoIHNvbWUgYm9hcmRzIGxpa2UgS2lsYXVlYQotICAgICg0MDVFWCksIHdoaWNoIGRvbid0IGhhdmUgaW50ZXJuYWwgU1JBTSAoT0NNKSBhbmQgcmVsb2NhdGlvbiBuZWVkcyB0bwotICAgIGJlIGRvbmUgdG8gU0RSQU0gYmVmb3JlIHRoZSBOQU5EIGNvbnRyb2xsZXIgY2FuIGdldCBhY2Nlc3NlZC4gV2hlbgotICAgIGluaXRkcmFtKCkgaXMgY2FsbGVkIGxhdGVyIG9uIGluIG5hbmRfYm9vdCgpLCB0aGlzIGNhbiBsZWFkIHRvIHByb2JsZW1zCi0gICAgd2l0aCB2YXJpYWJsZXMgaW4gdGhlIGJzcyBzZWN0aW9ucyBsaWtlIG5hbmRfZWNjX3Bvc1tdLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotICAgIEFja2VkLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhhMjRjMDdiYTVkYTJjNzJhZDFmMDVlM2ViOGE0NjM3NTAyMDBjOTgKLUF1dGhvcjogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLURhdGU6CVRodSBNYXkgMjIgMTQ6NDQ6MjQgMjAwOCAtMDcwMAotCi0gICAgcHBjNHh4OiBFbmFibGUgUHJpbW9yZGlhbCBTdGFjayBmb3IgNDB4IGFuZCBVbmlmeSBFQ0MgSGFuZGxpbmcKLQotICAgIFRoaXMgcGF0Y2ggKFBhcnQgMiBvZiAyKToKLQotICAgICogUm9sbHMgdXAgYSBzdWl0ZSBvZiBjaGFuZ2VzIHRvIGVuYWJsZSBjb3JyZWN0IHByaW1vcmRpYWwgc3RhY2sgYW5kCi0gICAgICBnbG9iYWwgZGF0YSBoYW5kbGluZyB3aGVuIHRoZSBkYXRhIGNhY2hlIGlzIHVzZWQgZm9yIHN1Y2ggYSBwdXJwb3NlCi0gICAgICBmb3IgUFBDNDB4LXZhcmlhbnRzIChpLmUuIENGR19JTklUX0RDQUNIRV9DUykuCi0KLSAgICAqIFJlbGF0ZWQgdG8gdGhlIGZpcnN0LCB1bmlmaWVzIEREUjIgU0RSQU0gYW5kIEVDQyBpbml0aWFsaXphdGlvbiBieQotICAgICAgZWxpbWluYXRpbmcgcmVkdW5kYW50IEVDQyBpbml0aWFsaXphdGlvbiBpbXBsZW1lbnRhdGlvbnMgYW5kIG1vdmluZwotICAgICAgcmVkdW5kYW50IFNEUkFNIGluaXRpYWxpemF0aW9uIG91dCBvZiBib2FyZCBjb2RlIGludG8gc2hhcmVkIDR4eAotICAgICAgY29kZS4KLQotICAgICogRW5hYmxlcyBNQ1NSIHZpc2liaWxpdHkgb24gdGhlIDQwNUVYKHIpLgotCi0gICAgKiBFbmFibGVzIHRoZSB1c2Ugb2YgdGhlIGRhdGEgY2FjaGUgZm9yIGluaXRpYWwgUkFNIG9uCi0gICAgICBib3RoIEFNQ0MncyBLaWxhdWVhIGFuZCBNYWthbHUgYW5kIHJlbW92ZXMgYSByZWR1bmRhbnQKLSAgICAgIENGR19QT1NUX01FTU9SWSBmbGFnIGZyb20gZWFjaCBib2FyZCdzIENPTkZJR19QT1NUIHZhbHVlLgotCi0gICAgICAtIFJlbW92ZWQsIHBlciBTdGVmYW4gUm9lc2UncyByZXF1ZXN0LCBkZWZ1bmN0IG1lbW9yeS5jIGZpbGUgZm9yCi0JTWFrYWx1IGFuZCByb2xsZWQgc2RyYW1faW5pdCBmcm9tIGl0IGludG8gbWFrYWx1LmMuCi0KLSAgICBXaXRoIHJlc3BlY3QgdG8gdGhlIDR4eCBERFIgaW5pdGlhbGl6YXRpb24gYW5kIEVDQyB1bmlmaWNhdGlvbiwgdGhlcmUKLSAgICBpcyBjZXJ0YWlubHkgbW9yZSB3b3JrIHRoYXQgY2FuIGFuZCBzaG91bGQgYmUgZG9uZSAoZmlsZSByZW5hbWluZywKLSAgICBldGMuKS4gSG93ZXZlciwgdGhhdCBjYW4gYmUgaGFuZGxlZCBhdCBhIGxhdGVyIGRhdGUgb24gYSBzZWNvbmQgb3IKLSAgICB0aGlyZCBwYXNzLiBBcyBpdCBzdGFuZHMsIHRoaXMgcGF0Y2ggbW92ZXMgdGhpbmdzIGZvcndhcmQgaW4gYW4KLSAgICBpbmNyZW1lbnRhbCB5ZXQgcG9zaXRpdmUgd2F5IGZvciB0aG9zZSBwbGF0Zm9ybXMgdGhhdCB1dGlsaXplIHRoaXMKLSAgICBjb2RlIGFuZCB0aGUgZmVhdHVyZXMgYXNzb2NpYXRlZCB3aXRoIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjODIxYjVmMTIwYmVkZjczODY3NTEzNDY2NDEyNTg3YzY5MTJhOGY4Ci1BdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci1EYXRlOglUaHUgTWF5IDIyIDE0OjQ0OjE0IDIwMDggLTA3MDAKLQotICAgIHBwYzR4eDogRW5hYmxlIFByaW1vcmRpYWwgU3RhY2sgZm9yIDQweCBhbmQgVW5pZnkgRUNDIEhhbmRsaW5nCi0KLSAgICBUaGlzIHBhdGNoIChQYXJ0IDEgb2YgMik6Ci0KLSAgICAqIFJvbGxzIHVwIGEgc3VpdGUgb2YgY2hhbmdlcyB0byBlbmFibGUgY29ycmVjdCBwcmltb3JkaWFsIHN0YWNrIGFuZAotICAgICAgZ2xvYmFsIGRhdGEgaGFuZGxpbmcgd2hlbiB0aGUgZGF0YSBjYWNoZSBpcyB1c2VkIGZvciBzdWNoIGEgcHVycG9zZQotICAgICAgZm9yIFBQQzQweC12YXJpYW50cyAoaS5lLiBDRkdfSU5JVF9EQ0FDSEVfQ1MpLgotCi0gICAgKiBSZWxhdGVkIHRvIHRoZSBmaXJzdCwgdW5pZmllcyBERFIyIFNEUkFNIGFuZCBFQ0MgaW5pdGlhbGl6YXRpb24gYnkKLSAgICAgIGVsaW1pbmF0aW5nIHJlZHVuZGFudCBFQ0MgaW5pdGlhbGl6YXRpb24gaW1wbGVtZW50YXRpb25zIGFuZCBtb3ZpbmcKLSAgICAgIHJlZHVuZGFudCBTRFJBTSBpbml0aWFsaXphdGlvbiBvdXQgb2YgYm9hcmQgY29kZSBpbnRvIHNoYXJlZCA0eHgKLSAgICAgIGNvZGUuCi0KLSAgICAqIEVuYWJsZXMgTUNTUiB2aXNpYmlsaXR5IG9uIHRoZSA0MDVFWChyKS4KLQotICAgICogRW5hYmxlcyB0aGUgdXNlIG9mIHRoZSBkYXRhIGNhY2hlIGZvciBpbml0aWFsIFJBTSBvbgotICAgICAgYm90aCBBTUNDJ3MgS2lsYXVlYSBhbmQgTWFrYWx1IGFuZCByZW1vdmVzIGEgcmVkdW5kYW50Ci0gICAgICBDRkdfUE9TVF9NRU1PUlkgZmxhZyBmcm9tIGVhY2ggYm9hcmQncyBDT05GSUdfUE9TVCB2YWx1ZS4KLQotICAgICAgLSBSZW1vdmVkLCBwZXIgU3RlZmFuIFJvZXNlJ3MgcmVxdWVzdCwgZGVmdW5jdCBtZW1vcnkuYyBmaWxlIGZvcgotCU1ha2FsdSBhbmQgcm9sbGVkIHNkcmFtX2luaXQgZnJvbSBpdCBpbnRvIG1ha2FsdS5jLgotCi0gICAgV2l0aCByZXNwZWN0IHRvIHRoZSA0eHggRERSIGluaXRpYWxpemF0aW9uIGFuZCBFQ0MgdW5pZmljYXRpb24sIHRoZXJlCi0gICAgaXMgY2VydGFpbmx5IG1vcmUgd29yayB0aGF0IGNhbiBhbmQgc2hvdWxkIGJlIGRvbmUgKGZpbGUgcmVuYW1pbmcsCi0gICAgZXRjLikuIEhvd2V2ZXIsIHRoYXQgY2FuIGJlIGhhbmRsZWQgYXQgYSBsYXRlciBkYXRlIG9uIGEgc2Vjb25kIG9yCi0gICAgdGhpcmQgcGFzcy4gQXMgaXQgc3RhbmRzLCB0aGlzIHBhdGNoIG1vdmVzIHRoaW5ncyBmb3J3YXJkIGluIGFuCi0gICAgaW5jcmVtZW50YWwgeWV0IHBvc2l0aXZlIHdheSBmb3IgdGhvc2UgcGxhdGZvcm1zIHRoYXQgdXRpbGl6ZSB0aGlzCi0gICAgY29kZSBhbmQgdGhlIGZlYXR1cmVzIGFzc29jaWF0ZWQgd2l0aCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTQzOTY4MDAxOWUwNjE3MWQ0YTU2OTRiNzk5MmFjY2NlODdmNTkwZQotQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotRGF0ZToJV2VkIE1heSAyMSAxMzoyODozMCAyMDA4IC0wNzAwCi0KLSAgICBQUEM0eHg6IFNpbXBsaWZpZWQgcG9zdF93b3JkX3tsb2FkLCBzdG9yZX0KLQotICAgIFRoaXMgcGF0Y2ggc2ltcGxpZmllcyBwb3N0X3dvcmRfe2xvYWQsc3RvcmV9IGJ5IHVzaW5nIHRoZSBwcmVwcm9jZXNzb3IKLSAgICB0byBlbGltaW5hdGUgcmVkdW5kYW50LCBjb3B5LWFuZC1wYXN0ZWQgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci0KLWNvbW1pdCBmOTc5NjkwZWUzMzc0NTBiMjAzMGFiYTEyOGY5NWI3YThkOTg4MWMwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTWF5IDE1IDE1OjEzOjA4IDIwMDggLTA1MDAKLQotICAgIEZpeCB3YXJuaW5ncyBmcm9tIGdjYy00LjMuMCBidWlsZCBvbiBhIHBwYyBob3N0Ci0KLSAgICAqIFRoZSBjZmlfZmxhc2guYyBtZW1zZXQgZml4IGFjdHVhbCBhbGxvd3MgdGhlIGJvYXJkIHRvIGJvb3Qgc28gdGhlcmUgaXMKLSAgICAgIGEgYml0IG1vcmUgZ29pbmcgb24gaGVyZSB0aGFuIGp1c3QgcmVzb2x2aW5nIHdhcm5pbmdzIGFzc29jaWF0ZWQgd2l0aAotICAgICAgdW5pbml0aWFsaXplZCB2YXJpYWJsZXMuCi0KLSAgICAqIGluY2x1ZGUvYXNtL2JpdG9wcy5oOjMwMjogd2FybmluZzogJ19fc3dhYjMycCcgaXMgc3RhdGljIGJ1dCB1c2VkIGluCi0gICAgICBpbmxpbmUgZnVuY3Rpb24gJ2V4dDJfZmluZF9uZXh0X3plcm9fYml0JyB3aGljaCBpcyBub3Qgc3RhdGljCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOWIxMjRhNjgzNDZjZTk2MDViNmUxZmNmNzllMTAyMTU0MWNkYmE5ZQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMTQgMTM6MDk6NTEgMjAwOCAtMDUwMAotCi0gICAgTVBDNTEyeDogQ2hhbmdlIHRyYXBzLmMgdG8gbm90IHJlZmVyZW5jZSBub24tYWRkcmVzc2FibGUgbWVtb3J5Ci0KLSAgICBDdXJyZW50bHksIEVORF9PRl9SQU0gaXMgdXNlZCBieSB0aGUgdHJhcCBjb2RlIHRvIGRldGVybWluZSBpZgotICAgIHdlIHNob3VsZCBhdHRlbXB0IHRvIGFjY2VzcyB0aGUgc3RhY2sgcG9pbnRlciBvciBub3QuIEhvd2V2ZXIsCi0gICAgb24gc3lzdGVtcyB3aXRoIGEgbG90IG9mIFJBTSwgb25seSBhIHN1YnNldCBvZiB0aGUgUkFNIGlzCi0gICAgZ3VhcmFudGVlZCB0byBiZSBtYXBwZWQgaW4gYW5kIGFjY2Vzc2libGUuCUNoYW5nZSBFTkRfT0ZfUkFNCi0gICAgdG8gdXNlIGdldF9lZmZlY3RpdmVfbWVtc2l6ZSgpIGluc3RlYWQgb2YgdXNpbmcgdGhlIHJhdyByYW0KLSAgICBzaXplIG91dCBvZiB0aGUgYmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDgxNjczZTlhZTE0Yjc3MWNkMTNmYWYxOTk0NzE5MjU5OWNhZTM5NTkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBNYXkgMTMgMTk6MDE6NTQgMjAwOCAtMDUwMAotCi0gICAgTWFrZSBzdXJlIGNvbW1vbi5oIGlzIHRoZSBmaXJzdCBpbmNsdWRlLgotCi0gICAgSWYgY29tbW9uLmggaXNuJ3QgZmlyc3Qgd2UgY2FuIGdldCBDT05GSUdfIG9wdGlvbnMgZGVmaW5lZCBpbiB0aGUKLSAgICBib2FyZCBjb25maWcgZmlsZSBpZ25vcmVkLglUaGlzIGNhbiBjYXVzZSBhbiBpc3N1ZSBpZiBhbnkgb2YgdGhvc2UKLSAgICBjb25maWcgb3B0aW9ucyBpbXBhY3QgdGhlIHNpemUgb2YgdHlwZXMgb2YgZGF0YSBzdHJ1Y3R1cmVzCi0gICAgKGVnIENPTkZJR19QSFlTXzY0QklUKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA5NWQ0NDlhZDRkZTc5ZGQzMmIxNzA1YjhhNGQzNTUwZjFlOTA4MWUzCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgTWF5IDEzIDE1OjUzOjI5IDIwMDggKzAyMDAKLQotICAgIEF2b2lkIGluaXRyZCBhbmQgbG9nYnVmZmVyIGFyZWEgb3ZlcmxhcHMKLQotICAgIEFkZCBsb2didWZmZXIgdG8gcmVzZXJ2ZWQgTE1CIGFyZWFzIHRvIHByZXZlbnQgaW5pdHJkIGFsbG9jYXRpb24KLSAgICBmcm9tIG92ZXJsYXBpbmcgd2l0aCBpdC4KLQotICAgIE1ha2Ugc3VyZSB0byB1c2UgY29ycmVjdCBsb2didWZmZXIgYmFzZSBhZGRyZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDY5NTZkNTNkOTkzNDg2MjUwN2Y4M2YwZTMyNTVkZmQ0NjYyZTc0ODIKLUF1dGhvcjogU2FzY2hhIExhdWUgPHNhc2NoYS5sYXVlQGxpZWJoZXJyLmNvbT4KLURhdGU6CVR1ZSBNYXkgMTMgMTM6Mjk6NTQgMjAwOCArMDIwMAotCi0gICAgbHdtb241OiBhZGQgbWVtb3J5LXBhdHRlcm4tdGVzdCB0byBGUEdBIFBPU1QuCi0KLWNvbW1pdCBlMzRhMGU5MTFiNmExNTY4ZDBjYTg2NDIzNGZiZDBlZTA2MGQ5YjM1Ci1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1heSA4IDE5OjAyOjUxIDIwMDggLTA1MDAKLQotICAgIFBQQzogODZ4eCBBZGQgYmF0IHJlZ2lzdGVycyB0byByZWdpbmZvIGNvbW1hbmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDViOWI4Y2RiOGI2ZWIzYThiMGY1ZDk5MDlkNjljY2M5YzcwM2VkOQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXkgOSAxNTo0MTozNSAyMDA4IC0wNTAwCi0KLSAgICBQUEM6IEFkZCBwcmludF9iYXRzKCkgdG8gbGliX3BwYy9iYXRfcncuYwotCi0gICAgVGhpcyBmdW5jdGlvbiBwcmludHMgdGhlIHZhbHVlcyBvZiBhbGwgdGhlIEJBVCByZWdpc3RlcgotICAgIHBhaXJzIC0gSSBuZWVkZWQgdGhpcyBmb3IgZGVidWcgZWFybGllciB0aGlzIHdlZWs7IGFkZGluZyBpdCB0bwotICAgIGxpYl9wcGMgc28gb3RoZXJzIGNhbiB1c2UgaXQgKGFuZCBhZGQgaXQgdG8gcmVnaW5mbyBjb21tYW5kcwotICAgIGlmIHNvIGRlc2lyZWQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjMTQ4ZjI0YzE1NzQzYTAyZTg1NTYzNmU2YmVkMDEzYmQxMjFmN2YyCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1heSAxNSAyMToyOTowNCAyMDA4IC0wNTAwCi0KLSAgICBQUEM6IENoYW5nZSBsaWJfcHBjL2JhdF9ydy5jIHRvIHVzZSBoaWdoIGJhdHMKLQotICAgIEN1cnJlbnRseSwgdGhpcyBjb2RlIG9ubHkgZGVhbHMgd2l0aCBCQVRzIDAtMywgd2hpY2ggbWFrZXMKLSAgICBpdCB1c2VsZXNzIG9uIHN5c3RlbXMgdGhhdCBzdXBwb3J0IEJBVHMgNC03LiAgQWRkIHRoZQotICAgIHN1cHBvcnQgZm9yIHRoZXNlIHJlZ2lzdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxCZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzFkODI2NzIyNDM0OTMxZTExNTJhMDlkMTQwMTg3ZGNmNzJmOGFhYwotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgOCAxOTowMjoxMiAyMDA4IC0wNTAwCi0KLSAgICBQUEM6IENyZWF0ZSBhbmQgdXNlIENPTkZJR19ISUdIX0JBVFMKLQotICAgIENoYW5nZSBhbGwgY29kZSB0aGF0IGNvbmRpdGlvbmFsbHkgb3BlcmF0ZXMgb24gaGlnaCBiYXQKLSAgICByZWdpc3RlcnMgKHRoYXQgaXMsIEJBVHMgNC03KSB0byBsb29rIGF0IENPTkZJR19ISUdIX0JBVFMKLSAgICBpbnN0ZWFkIG9mIHRoZSBteXJpYWQgd2F5cyB0aGlzIGlzIGRvbmUgbm93LiAgRGVmaW5lIHRoZSBvcHRpb24KLSAgICBmb3IgZXZlcnkgY29uZmlnIGZvciB3aGljaCBoaWdoIGJhdHMgYXJlIHN1cHBvcnRlZCAoYW5kCi0gICAgZW5hYmxlZCBieSBlYXJseSBib290LCBvbiBwYXJ0cyB3aGVyZSB0aGV5J3JlIG5vdCBhbHdheXMKLSAgICBlbmFibGVkKQotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhYTNiOGJmOWMzMDA2NWJiMmVhODUyNzk5ZDMyZGI1MDIwNTk4NDk1Ci1BdXRob3I6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotRGF0ZToJV2VkIE1heSAyOCAxOTo1NToxOSAyMDA4ICswMjAwCi0KLSAgICBFMTAwMDogQWRkIHN1cHBvcnQgZm9yIHRoZSA4MjU0MUdJIExGIEludGVsIFBybyAxMDAwIEdUIERlc2t0b3AgQWRhcHRlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGZmMzZmYmIyZTc1ODNmYjgwOGVlZjc3M2Y1MTE0ODljN2E5YzJkZjMKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMjggMTM6MDY6MjUgMjAwOCAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEFkZCAxMCBiYXNlIGV0aGVybmV0IHN1cHBvcnQgZm9yIG1jZjU0NDV4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAxYTlmY2M0Yjc2NTU5OWRiMjRmYTljMzIyOTM1OTlmMjRjN2ExOWJhCi1BdXRob3I6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgotRGF0ZToJRnJpIE1heSAzMCAwMDo1MzozOCAyMDA4ICswOTAwCi0KLSAgICBtaXBzOiBBZGQgYW4gJ2luY2x1ZGUvYXNtL2Vycm5vLmgnLCBsaWtlIGFsbCBvdGhlciBhcmNoaXRlY3R1cmVzCi0KLSAgICBBbGwgb3RoZXIgdS1ib290IGFyY2hpdGVjdHVyZXMgaGF2ZSBhbiBpbmNsdWRlL2FzbS9lcnJuby5oLCBzbwotICAgIHRoaXMgY2hhbmdlIGFkZHMgaXQgdG8gdGhlIG1pcHMgaW5jbHVkZS9hc20tbWlwcyBoZWFkZXJzIGFsc28uCi0KLSAgICBTdG9sZW4gZnJvbSBMaW51eCAyLjYuMjUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KLQotY29tbWl0IGUyYWQ4NDI2NjI0YmFjNDU3YWNjNjkyNWI2ZmY0MDhlOWJmMjA0NjYKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CUZyaSBNYXkgMzAgMDA6NTM6MzggMjAwOCArMDkwMAotCi0gICAgW01JUFNdIDxhc20vbWlwc3JlZ3MuaD46IFVwZGF0ZSBjb3Byb2Nlc3NvciByZWdpc3RlciBhY2Nlc3MgbWFjcm9zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMWEzYWRhYzgxYzI5MmYyZWU3NmU0M2NkZWIyZmJlOGY5MTVmZTE5NAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJRnJpIE1heSAzMCAwMDo1MzozOCAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gPGFzbS9taXBzcmVncy5oPjogVXBkYXRlIHJlZ2lzdGVyIC8gYml0IGZpZWxkIGRlZmluaXRpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgYmY0NjJhZTQ1MGE3ZjJlZWVkZGM2OTllZDM0NWIzOTFlMzI2MzU0MAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJRnJpIE1heSAzMCAwMDo1MzozNyAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gPGFzbS9taXBzcmVncy5oPjogQ29kaW55Z1N0eWxlIGNsZWFudXBzCi0KLSAgICBObyBmdW5jdGlvbmFsIGNoYW5nZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgODlhMTU1MGVjNmI3NDQ1MjI3NGE3YTIzMTI3OTM2ZTJjN2VlYzcxMQotQXV0aG9yOiBKYXNvbiBNY011bGxhbiA8bWNtdWxsYW5AbmV0YXBwLmNvbT4KLURhdGU6CUZyaSBNYXkgMzAgMDA6NTM6MzcgMjAwOCArMDkwMAotCi0gICAgbWlwczogSWYgQ09ORklHX0NNRF9TUEkgaXMgZGVmaW5lZCwgY2FsbCBzcGlfaW5pdCgpCi0KLSAgICBUaGUgbWlwcyBhcmNoaXRlY3R1cmUgY3VycmVudGx5IGRvZXMgbm90IGNhbGwgJ3NwaV9pbml0KCknIGluIHRoZSBnZW5lcmljCi0gICAgYm9hcmQgaW5pdGlhbGl6YXRpb24gcm91dGluZSBpcyBDT05GSUdfQ01EX1NQSSBpcyBkZWZpbmVkLgotCi0gICAgVGhpcyBwYXRjaCByZWN0aWZpZXMgdGhhdCBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGU5OTZiYzMzOWIwZjM5ZjZjMGIyOWIxNDU1YmE3ZWIzMThiMDIzZDMKLUF1dGhvcjogSmFzb24gTWNNdWxsYW4gPG1jbXVsbGFuQG5ldGFwcC5jb20+Ci1EYXRlOglGcmkgTWF5IDMwIDAwOjUzOjM3IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBsaWJfbWlwcy9ib2FyZC5jOiBBZGQgbmFuZF9pbml0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIHN0YW5kYXJkICduYW5kX2luaXQoKScgY2FsbCB0byB0aGUgbWlwcyBnZW5lcmljCi0gICAgJ2JvYXJkX2luaXRfcigpJyBjYWxsLCBicmluZ2luZyBNSVBTIGluIGxpbmUgd2l0aCB0aGUgb3RoZXIgYXJjaGl0ZWN0dXJlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIE1jTXVsbGFuIDxtY211bGxhbkBuZXRhcHAuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBkNmFjMmVkODkzYzIxNjg3MzhhZWUwMTU3OWQ2MjgzYWY4ZDM3MDQ1Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1heSAyMiAxMDo0OTo0NiAyMDA4IC0wNTAwCi0KLSAgICBSZW1vdmUgcHJvdG90eXBlcyBvZiBuYW5kX2luaXQoKSBpbiBmYXZvciBvZiBpbmNsdWRpbmcgbmFuZC5oLgotCi0gICAgTGlrZXdpc2Ugd2l0aCBvbmVuYW5kX2luaXQoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjI5YzU2ZjA3YTgyZWFjZGE4Yzg3MjBjYjE0NmZjOWJlMGY2ZGI1NAotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMjIgMTA6NDk6MDAgMjAwOCAtMDUwMAotCi0gICAgTWFrZSBvbmVuYW5kX3Vib290Lmggc2VsZi1zdWZmaWNpZW50LgotCi0gICAgRG9uJ3QgYXNzdW1lIHR5cGVzIGFyZSBwcm92aWRlZCBieSBwcmV2aW91c2x5IGluY2x1ZGVkIGhlYWRlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk3MjNiYmI0NmFiYjdiMmNhMjRlZWFkNTExNGEzZmFhNTgwNjBjMjAKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Ci1EYXRlOglXZWQgSmFuIDE2IDE0OjI2OjU5IDIwMDggKzAxMDAKLQotICAgIG5hbmQ6IENvcnJlY3QgTkFORCBlcmFzZSBwZXJjZW50YWdlIG91dHB1dAotCi0gICAgRm9yIE5BTkQgZXJhc2Ugc2l6ZXMgc21hbGxlciB0aGFuIG9uZSBOQU5EIGVyYXNlIGJsb2NrLCBlcmFzZQotICAgIHBlcmNlbnRhZ2Ugb3V0cHV0IGJlY29tZXMgZ3JhdGVyIHRoYW4gMTAwJSBlLmcuCi0KLSAgICAtLSBjdXQgLS0KLSAgICAgID4gbmFuZCBpbmZvCi0gICAgRGV2aWNlIDA6IE5BTkQgNjRNaUIgMSw4ViA4LWJpdCwgc2VjdG9yIHNpemUgMTYgS2lCCi0gICAgICA+IG5hbmQgZXJhc2UgMHgxMDAwMDAgMHgyMDAwCi0gICAgTkFORCBlcmFzZTogZGV2aWNlIDAgb2Zmc2V0IDB4MTAwMDAwLCBzaXplIDB4MjAwMAotICAgIEVyYXNpbmcgYXQgMHgxMDAwMDAgLS0gMjAwJSBjb21wbGV0ZS4KLSAgICBPSwotICAgICAgPgotICAgIC0tIGN1dCAtLQotCi0gICAgQ29ycmVjdCB0aGlzIGFuZCBnaXZlIHVzZXIgYSB3YXJuaW5nIHRoYXQgbW9yZSBpcyBlcmFzZWQgdGhhbiBzcGVjaWZpZWQ6Ci0KLSAgICAtLSBjdXQgLS0KLSAgICAgID4gbmFuZCBlcmFzZSAweDEwMDAwMCAweDIwMDAKLSAgICBOQU5EIGVyYXNlOiBkZXZpY2UgMCBvZmZzZXQgMHgxMDAwMDAsIHNpemUgMHgyMDAwCi0gICAgV2FybmluZzogRXJhc2Ugc2l6ZSAweDAwMDAyMDAwIHNtYWxsZXIgdGhhbiBvbmUgZXJhc2UgYmxvY2sgMHgwMDAwNDAwMAotCSAgICAgICBFcmFzaW5nIDB4MDAwMDQwMDAgaW5zdGVhZAotICAgIEVyYXNpbmcgYXQgMHgxMDAwMDAgLS0gMTAwJSBjb21wbGV0ZS4KLSAgICBPSwotICAgICAgPgotICAgIC0tIGN1dCAtLQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1OTIyZGI2YzA5NDg1MDZiZTkxZTBkZTQ0ZTdhNjg2M2ExOGE0MTdmCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUdWUgTWF5IDEzIDE3OjMxOjI0IDIwMDggKzAyMDAKLQotICAgIENsZWFudXAgbmFuZF9pbmZvW10gZGVjbGFyYXRpb24uCi0KLSAgICBUaGUgbmFuZF9pbmZvIGFycmF5IGlzIGRlY2xhcmVkIGFzIGV4dGVybiBpbiBzZXZlcmFsIC5jIGZpbGVzLgotICAgIFRob3NlIGRheXMsIG5hbmQuaCBjb250YWlucyBhIHJlZmVyZW5jZSB0byB0aGUgYXJyYXksIHNvIHRoZXJlIGlzCi0gICAgbm8gbmVlZCB0byBkZWNsYXJlIGl0IGVsc2V3aGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxMzVmMGE3NDg4YWYyOTQ3YWRiZTRiNDBiNzkyODBiZGZlNWU5ODg2Ci1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1heSAxOSAwOTozMDo0MyAyMDA4IC0wNTAwCi0KLSAgICBOQU5EOiBQcm92aWRlIGEgc2FuZSBkZWZhdWx0IGZvciBOQU5EX01BWF9DSElQUy4KLQotICAgIFRoaXMgYWxsb3dzIHRoZSBoZWFkZXIgdG8gYmUgaW5jbHVkZWQgcmVnYXJkbGVzcyBvZiB3aGV0aGVyIGEgYm9hcmQncwotICAgIGNvbmZpZyBmaWxlIHByb3ZpZGVzIE5BTkQtcmVsYXRlZCBkZWZpbmluaXRpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhODA5MmMwMjFkMjdmMjdmNGIzMjNiN2Q0OTk3OWNhMDFiM2ZjMTlkCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CU1vbiBNYXkgMjYgMTI6MTk6MTAgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IEZpeCB0aGVvcmV0aWNhbCByYWNlIGluIHVkZWxheSgpCi0KLSAgICBJZiB0aGUgc3BlY2lmaWVkIGRlbGF5IGlzIHZlcnkgc2hvcnQsIHRoZSBjeWNsZSBjb3VudGVyIG1heSBnbyBwYXN0IHRoZQotICAgICJlbmQiIHRpbWUgd2UgYXJlIHdhaXRpbmcgZm9yIGJlZm9yZSB3ZSBnZXQgYXJvdW5kIHRvIHJlYWRpbmcgaXQuCi0KLSAgICBGaXggaXQgYnkgY2hlY2tpbmcgdGhlIGRpZmZlcmVudCBiZXR3ZWVuIHRoZSBjeWNsZSBjb3VudCAibm93IiBhbmQgdGhlCi0gICAgY3ljbGUgY291bnQgYXQgdGhlIGJlZ2lubmluZy4gVGhpcyB3aWxsIHdvcmsgYXMgbG9uZyBhcyB0aGUgZGVsYXkKLSAgICBtZWFzdXJlZCBpbiBudW1iZXIgb2YgY3ljbGVzIGlzIGJlbG93IDJeMzEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA0OGVhNjIzZWFlODY3NDc5MzM3MmUzZTdjOTVlNzJlNWE0NGQ3YTk1Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBNYXkgMjEgMTM6MDE6MDkgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IENvbXBpbGUgYXRtZWxfbWNpLm8gY29uZGl0aW9uYWxseQotCi0gICAgUmVtb3ZlICNpZmRlZiBDT05GSUdfTU1DIGZyb20gdGhlIHNvdXJjZSBmaWxlIGFuZCB1c2UgY29uZGl0aW9uYWwKLSAgICBjb21waWxhdGlvbiBpbiB0aGUgTWFrZWZpbGUgaW5zdGVhZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGU5MmE1YmY4MzMwNjU0ZTMzYWMxM2Y2YjMwNTg2MzRlNThmNWQxYzAKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJVGh1IE1heSAyMiAxMjoyODoyNSAyMDA4ICswMjAwCi0KLSAgICBhdnIzMjogRml4IHdyb25nIGVycm9yIGZsYWdzIGluIGF0bWVsX21jaSBkcml2ZXIKLQotICAgIE1ha2Ugc3VyZSB3ZSBjaGVjayBmb3IgQ1JDIGVycm9ycyB3aGVuIHNlbmRpbmcgY29tbWFuZHMgdGhhdCB1c2UgQ1JDCi0gICAgY2hlY2tpbmcuCi0KLSAgICBSZXBvcnRlZC1ieTogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA3YTk2ZGRhZGQxM2U2YWM5YTgyOWFmZmNlOWI2Zjg4MjNmNTgwZTQ5Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBNYXkgMjEgMTE6MTA6NTkgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IEZpeCB0d28gd2FybmluZ3MgaW4gYXRtZWxfbWNpLmMKLQotICAgIFRoZSB3YXJuaW5ncyBhcmUgaGFybWxlc3MgYnV0IGFubm95aW5nLiBMZXQncyBmaXggdGhlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGEyM2UyNzdjNGEzYTJiYmM0MmQyMzdhYWUyOWRhM2E4OTcxZTc1N2YKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIE1heSAxOSAxMTozNjoyOCAyMDA4ICswMjAwCi0KLSAgICBhdnIzMjogUmV3b3JrIFNEUkFNIGluaXRpYWxpemF0aW9uIGNvZGUKLQotICAgIFRoaXMgY2xlYW5zIHVwIHRoZSBTRFJBTSBpbml0aWFsaXphdGlvbiBhbmQgcmVsYXRlZCBjb2RlIGEgYml0LCBhbmQKLSAgICBhbGxvd3MgZmFzdGVyIGJvb3RpbmcuCi0KLSAgICAgICogQWRkIGRlZmluaXRpb25zIGZvciBFQkkgYW5kIGludGVybmFsIFNSQU0gdG8gYXNtL2FyY2gvbWVtb3J5LW1hcC5oCi0gICAgICAqIFJlbW92ZSBtZW1vcnkgdGVzdCBmcm9tIHNkcmFtX2luaXQoKSBhbmQgbWFrZSBjYWxsZXIgcmVzcG9uc2libGUKLQlmb3IgdmVyaWZ5aW5nIHRoZSBTRFJBTSBhbmQgZGV0ZXJtaW5pbmcgaXRzIHNpemUuCi0gICAgICAqIFJlbW92ZSBiYXNlX2FkZHJlc3MgbWVtYmVyIGZyb20gc3RydWN0IHNkcmFtX2NvbmZpZyAod2FzIHNkcmFtX2luZm8pCi0gICAgICAqIEFkZCBkYXRhX2JpdHMgbWVtYmVyIHRvIHN0cnVjdCBzZHJhbV9jb25maWcgYW5kIGtpbGwgQ0ZHX1NEUkFNXzE2QklUCi0gICAgICAqIEFkZCBzdXBwb3J0IGZvciBhIGNvbW1vbiBTVEsxMDAwIGhhY2s6IDE2TUIgU0RSQU0gaW5zdGVhZCBvZiA4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgOTUxMDdiN2MwMjg4MDY5MTk2MzBiZjAyYzY1M2FhOGY0Zjg2N2M5NAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglNb24gTWF5IDE5IDExOjI3OjM3IDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBEbyBzdHJpY3RlciBzdGFjayBjaGVja2luZyBpbiB0aGUgZXhjZXB0aW9uIGhhbmRsZXIKLQotICAgIERvbid0IGRvIGEgc3RhY2sgZHVtcCBpZiB0aGUgc3RhY2sgcG9pbnRlciBpcyBvdXRzaWRlIHRoZSBtZW1vcnkgYXJlYQotICAgIHJlc2VydmVkIGZvciBzdGFjay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGNhZjgzZWE4ODhhMDIyMGY0MTc0N2QwYjc3NDhmYTQzYjRhNGJkNDkKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIE1heSAyIDE1OjMyOjU3IDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBVc2UgdGhlIHNhbWUgZW50cnkgcG9pbnQgZm9yIHJlc2V0IGFuZCBleGNlcHRpb24gaGFuZGxpbmcKLQotICAgIFNpbmNlIHRoZSByZXNldCB2ZWN0b3IgaXMgYWx3YXlzIGFsaWduZWQgdG8gYSB2ZXJ5IGxhcmdlIGJvdW5kYXJ5LCB3ZQotICAgIGNhbiBzYXZlIGEgY291cGxlIG9mIEtCIHdvcnRoIG9mIGFsaWdubWVudCBwYWRkaW5nIGJ5IHBsYWNpbmcgdGhlCi0gICAgZXhjZXB0aW9uIHZlY3RvcnMgYXQgdGhlIHNhbWUgYWRkcmVzcy4KLQotICAgIERlY2lkaW5nIHdoaWNoIG9uZSBpdCBpcyBpcyBlYXN5OiBJZiB3ZSdyZSBoYW5kbGluZyBhbiBleGNlcHRpb24sIHRoZQotICAgIENQVSBpcyBpbiBFeGNlcHRpb24gbW9kZS4gSWYgd2UncmUgc3RhcnRpbmcgdXAgYWZ0ZXIgcmVzZXQsIHRoZSBDUFUgaXMKLSAgICBpbiBTdXBlcnZpc29yIG1vZGUuIFNvIHRoaXMgYWRkcyBhIHZlcnkgbWluaW1hbCBvdmVyaGVhZCB0byB0aGUgcmVzZXQKLSAgICBwYXRoIChvbmx5IGV4ZWN1dGVkIG9uY2UpIGFuZCB0aGUgZXhjZXB0aW9uIGhhbmRsaW5nIHBhdGggKG5vcm1hbGx5Ci0gICAgbmV2ZXIgZXhlY3V0ZWQgYXQgYWxsLikKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDBjMTZlZWQyMTg5YTE5MGJkNTY1NWIzM2MwMjlmODA5YTliMzExMjgKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIE1heSAyIDE1OjI0OjIyIDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBQdXQgbWVtc2V0IGluIGl0cyBvd24gc2VjdGlvbgotCi0gICAgQWxsIEMgY29kZSBpcyBjb21waWxlZCB3aXRoIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zLgotICAgIEFzc2VtYmx5IGZ1bmN0aW9ucyBzaG91bGQgZ2V0IHRoZWlyIG93biBzZWN0aW9ucyBhcyB3ZWxsIHNvIHRoYXQKLSAgICBldmVyeXRoaW5nIGxvb2tzIGNvbnNpc3RlbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAzYWNlMjUyN2JhODBiZDJmZTFiY2VhYWI1MGQwYjNjNGZiNWRkMDIwCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBNYXkgMiAxNToyMTo0MCAyMDA4ICswMjAwCi0KLSAgICBhdnIzMjogUmVuYW1lIHBtX2luaXQoKSBhcyBjbGtfaW5pdCgpIGFuZCBtYWtlIFNvQy1zcGVjaWZpYwotCi0gICAgcG1faW5pdCgpIHdhcyBhbHdheXMgbW9yZSBhYm91dCBjbG9jayBpbml0aWFsaXphdGlvbiB0aGFuIGFueXRoaW5nCi0gICAgZWxzZS4gRGVhbGluZyB3aXRoIFBMTHMsIGNsb2NrIGdhdGluZyBhbmQgc3VjaCBpcyBhbHNvIGluaGVyZW50bHkKLSAgICBTb0Mtc3BlY2lmaWMsIHNvIG1vdmUgaXQgaW50byBhIFNvQy1zcGVjaWZpYyBkaXJlY3RvcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA0ZjU5NzJjM2IyNDU0YzIyOTU3ZjI4NDJjZmU2NGVjODExOGUwMTViCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBBcHIgMzAgMTY6MTU6NTcgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IFVzZSBuZXctc3R5bGUgTWFrZWZpbGUgZm9yIHRoZSBhdDMyYXAgcGxhdGZvcm0KLQotICAgIFRoaXMgbWFrZXMgaXQgZWFzaWVyIHRvIGF2b2lkIGNvbXBpbGluZyBjZXJ0YWluIGZpbGVzIGxhdGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYTliMmJiNzhhMWJkOGViZGI2MzM1MDliZGQxYzgxMzRkNTI3YjIxMwotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglXZWQgQXByIDMwIDE0OjM2OjQ3IDIwMDggKzAyMDAKLQotICAgIGF2cjMyOiBSZW1vdmUgdW51c2VkIGZpbGUgY3B1L2F0MzJhcC9wbS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA0NDQ1M2IyNWIwNjQyNmVlZjBiN2IyZmE3YzAyNmZkZjE5Y2UzNGYyCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBBcHIgMzAgMTQ6MTk6MjggMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IENsZWFuIHVwIHRoZSBITUFUUklYIGNvZGUKLQotICAgIFJld29yayB0aGUgSE1BVFJJWCBjb25maWd1cmF0aW9uIGludGVyZmFjZSBzbyB0aGF0IGl0IGJlY29tZXMgZWFzaWVyCi0gICAgdG8gY29uZmlndXJlIHRoZSBITUFUUklYIGZvciBib2FyZHMgd2l0aCBzcGVjaWFsIG5lZWRzLCBhbmQgYWRkIG5ldwotICAgIHBhcnRzLgotCi0gICAgVGhlIEhNQVRSSVggaGVhZGVyIGZpbGUgaGFzIGJlZW4gc3BsaXQgaW50byBhIGdlbmVyYWwsCi0gICAgY2hpcC1pbmRlcGVuZGVudCBwYXJ0IHdpdGggcmVnaXN0ZXIgZGVmaW5pdGlvbnMsIGV0Yy4gYW5kIGEKLSAgICBjaGlwLXNwZWNpZmljIHBhcnQgd2l0aCBTRlIgYml0ZmllbGQgZGVmaW5pdGlvbnMgYW5kIG1hc3Rlci9zbGF2ZQotICAgIGlkZW50aWZpZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMGEyZTQ4NzkyZGQzNzJjOTBiODAwNTlmMzIzNWU2N2E1NjdlMTZmYwotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgTm92IDIyIDEyOjE0OjExIDIwMDcgKzAxMDAKLQotICAgIGF2cjMyOiBBZGQgc3VwcG9ydCBmb3IgdGhlIEFUU1RLMTAwNiBib2FyZAotCi0gICAgVGhpcyBpcyBhIHJlcGxhY2VtZW50IGZvciBBVFNUSzEwMDIgd2l0aCA2NE1CIFNEUkFNIGFuZCBOQU5EIGZsYXNoIG9uCi0gICAgYm9hcmQuIEl0J3MgY3VycmVudGx5IGluIHByb2R1Y3Rpb24gYW5kIHdpbGwgYmUgYXZhaWxhYmxlIHNvb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA3ODFlYjlhMWU0YWY0YmQzNGMxMzhlNjEyNmVjNWNjNmRkNGI1NDQwCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVR1ZSBBcHIgMjkgMTI6NTM6MDUgMjAwOCArMDIwMAotCi0gICAgYXZyMzI6IEdldCByaWQgb2YgdGhlIC5mbGFzaHByb2cgc2VjdGlvbgotCi0gICAgVGhlIC5mbGFzaHByb2cgc2VjdGlvbiB3YXMgb25seSBuZWVkZWQgYmFjayB3aGVuIHdlIHdlcmUgcnVubmluZwotICAgIGRpcmVjdGx5IGZyb20gZmxhc2gsIGFuZCBpdCdzIGV2ZW4gbW9yZSB1c2VsZXNzIG9uIE5HVzEwMCBzaW5jZSBpdAotICAgIHVzZXMgdGhlIENGSSBmbGFzaCBkcml2ZXIgd2hpY2ggbmV2ZXIgdXNlZCB0aGlzIHdvcmthcm91bmQgaW4gdGhlCi0gICAgZmlyc3QgcGxhY2UuCi0KLSAgICBSZW1vdmUgaXQgb24gU1RLMTAwMCBhcyB3ZWxsLCBhbmQgZ2V0IHJpZCBvZiBhbGwgdGhlIGFzc29jaWF0ZWQgY29kZSBhbmQKLSAgICBhbm5vdGF0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGNkZDQyYzBjN2E1MjA1ZmMzODA5MTJkODMyMjkwNjlhNzFlYTNhYmYKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJV2VkIEFwciAzMCAxMzowOTo1NiAyMDA4ICswMjAwCi0KLSAgICBhdnIzMjogVXNlIGNvcnJlY3QgY29uZGl0aW9uIGFyb3VuZCBtYWNiIGNsb2NrIGFjY2Vzc29ycwotCi0gICAgZ2V0X21hY2JfcGNsa19yYXRlKCkgYW5kIGdldF9tYWNiX2hjbGtfcmF0ZSgpIHNob3VsZCBiZSBhdmFpbGFibGUgd2hlbgotICAgIHRoZSBjaGlwIGhhcyBhIE1BQ0IgY29udHJvbGxlciwgbm90IHdoZW4gaXQgaGFzIGEgVVNBUlQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBmNzkzYTM1ODE5MDFmZjM5YzJhYmI5NDAxMmQ5YmJjODU3M2NjZjAyCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgotRGF0ZToJV2VkIEFwciAxNiAyMjo1Nzo1OCAyMDA4IC0wNzAwCi0KLSAgICBhdnIzMjogRGlzYWJsZSB0aGUgQVA3MDAwIGludGVybmFsIHdhdGNoZG9nIG9uIHN0YXJ0dXAKLQotICAgIFRoaXMgcGF0Y2ggZm9yY2VzIHRoZSB3YXRjaGRvZyBvZmYgaW4gYWxsIGNhc2VzLiAgVGhhdCB3aWxsIGF0IGxlYXN0Ci0gICAgZ2V0IHJpZCBvZiB0aGUgY29uc3RhbnQgcmVib290IGN5Y2xlLCB0aG91Z2ggaXQgd29uJ3QgbGV0IHRoZSB3YXRjaGRvZwotICAgIGFjdHVhbGx5IHJ1biBpbiB0aGUgbmV3IGtlcm5lbHM6ICBpdHMgcHJvYmUoKSBjb21lcyB1cCB3aXRoIGEgcG9saXRlCi0gICAgd2FybmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDU1YWM3YTc0OTBiNTVkYTU2NjU5Zjk1ZDgyYTBjODNiOTc1NmRmMjcKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+Ci1EYXRlOglGcmkgRmViIDIyIDEyOjU0OjM5IDIwMDggLTA4MDAKLQotICAgIGF2cjMyOiBzdGsxMDAyIGFuZCBuZ3cxMDAgY29udmVyZ2VuY2UKLQotICAgIE1ha2UgU1RLMTAwMiBhbmQgTkdXMTAwIGJvYXJkcyBhY3QgbW9yZSBhbGlrZToKLSAgICAgIC0gU1RLIGJvYXJkcyBjYW4gdXNlIGFzIG1hbnkgYXJndW1lbnRzIGFzIE5HVwotICAgICAgLSBTVEsgYm9hcmRzIGRvbid0IG5lZWQgdG8gbWFuYWdlIEZQR0FzIGVpdGhlcgotICAgICAgLSBOR1cgY29tbWFuZHMgc2hvdWxkIG1hdGNoIFNUSyBvbmVzCi0KLSAgICBBbHNvIHNwZWxsIFUtQm9vdCByaWdodCBpbiBwcm9tcHRzIGZvciBTVEsxMDAyIGFuZCBOR1cxMDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLSAgICBbaGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbTogdXBkYXRlIFNUSzEwMFszNF0gYXMgd2VsbF0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhhYXZhcmQuc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA1ZTE4ODJkZjZhM2VmYzdkZTU1MjRkMjhjZWE0ZWNkZTdkMTYzZDU0Ci1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglUdWUgTWF5IDI3IDEzOjQ3OjAwIDIwMDggKzAyMDAKLQotICAgIFNvY3JhdGVzOiBGaXggUENJIGJ1cyBmcmVxdWVuY3kgcmVwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgNzkxZTFkYmE4ZGU3NmFkOGU3NjJhN2JhZGI4NjlmMjI0YTFmOGI4MgotQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotRGF0ZToJVHVlIE1heSAyNyAxMTo0OToxMyAyMDA4ICswMjAwCi0KLSAgICBTb2NyYXRlczogQWRkZWQgVVNCIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgNWE5MDRlNTYzN2NmZjFkNzA4ZGM2NzA5ODAwNGY4M2JhOWU4NGM1NAotQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotRGF0ZToJVHVlIE1heSAyNyAxMTozNTowMiAyMDA4ICswMjAwCi0KLSAgICBVU0I6IGFkZCBuZXcgY29uZmlndXJhdGlvbiB2YXJpYWJsZSBDT05GSUdfUENJX09IQ0lfREVWTk8KLQotICAgIEluIGNhc2Ugb2Ygc2V2ZXJhbCBQQ0kgVVNCIGNvbnRyb2xsZXJzIG9uIGEgYm9hcmQgdGhpcyB2YXJpYWJsZQotICAgIHNwZWNpZnlzIHdoaWNoIGNvbnRyb2xsZXIgdG8gdXNlLgotICAgIFNlZSBkb2MvUkVBRE1FLmdlbmVyaWNfdXNiX29oY2kgZm9yIGRldGFpbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgMmY3NDY4YWViYTYwZTEyODgwMzBhOGQwMDdjNGU2M2JkM2YxMzIyMQotQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotRGF0ZToJVHVlIE1heSAyNyAxMDozNjowNyAyMDA4ICswMjAwCi0KLSAgICBTb2NyYXRlczogYWRkIHN1cHBvcnQgZm9yIERTNzUgRGlnaXRhbCBUaGVybW8gU2Vuc29yIG9uIEkyQyBidXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgODNlOWQ3YTI2MTRkNDAwNmI5MjY5MGFmYTMzOTBjMjkxNzM0MjY3ZQotQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotRGF0ZToJTW9uIE1heSAyNiAxODoxNjowNCAyMDA4ICswMjAwCi0KLSAgICBTb2NyYXRlczogQ29uZmlnIGZpbGUgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA2MDJjYWMxMzg5Yjc1NWIyMjMyNzJmMjMyOGE0N2U2ZjhjMjQwODQ4Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTWF5IDI0IDEyOjQ3OjQ2IDIwMDggKzAyMDAKLQotICAgIE1BS0VBTEw6IGFkZCBhdDkxIGxpc3QKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAyOTBlZjY0MzY4MzhiMWNjMDEzYmQ2N2UwZTA0OTVjOWViM2UyM2MwCi1BdXRob3I6IFJvbiBNYWRyaWQgPHJvbl9tYWRyaWRAc2JjZ2xvYmFsLm5ldD4KLURhdGU6CUZyaSBNYXkgMjMgMTU6Mzc6MDUgMjAwOCAtMDcwMAotCi0gICAgQWRkIE1hcnZlbGwgODhFMTExOCBzdXBwb3J0IGZvciBUU0VDCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb24gTWFkcmlkIDxyb25fbWFkcmlkQHNiY2dsb2JhbC5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDU1N2IzNzdkOGJmYzhiODMzYjZlNzQ5NDU3YmNkZmEyOTgzMzFhMjQKLUF1dGhvcjogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgotRGF0ZToJTW9uIE1heSA1IDE0OjA2OjExIDIwMDggKzAyMDAKLQotICAgIHNtYzkxMXg6IGFkZCAxNiBiaXQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA2MzI0ZTViZWM4ODI1ZjdmZWUzMDI2ZmZiZDM5NDQ1NGFlOGI1M2ZiCi1BdXRob3I6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgotRGF0ZToJV2VkIE1heSAyMSAyMToyOToxMCAyMDA4ICswMjAwCi0KLSAgICBGaXggZW5kaWFuZXNzIGNvbnZlcnNpb24gaW4gdXNiX29oY2kuYwotCi0gICAgU29ycnksIEkgZm9yZ290IHRoaXMgbGluZToKLQotICAgIFNpZ25lZC1vZmYtYnk6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgotCi0gICAgSSB0aGluayB0aGlzIG11c3QgYmUgc3dhcHBlZCAocmVzdWx0IG1heSBiZSBlcXVhbCkuCi0KLWNvbW1pdCBjOTE4MjYxYzZkOWYyNjVmODhiYWY3MGY4YTczZGZlNmYwY2I5NTk2Ci1BdXRob3I6IENocmlzdGlhbiBFZ2dlcnMgPGNlZ2dlcnNAZ214LmRlPgotRGF0ZToJV2VkIE1heSAyMSAyMjoxMjowMCAyMDA4ICswMjAwCi0KLSAgICBVU0I6IHJlcGxhY2Ugb2xkIHN3YXBfIHdpdGggcHJvcGVyIGVuZGlhbmVzcyBjb252ZXJzaW9uIG1hY3JvcwotCi0gICAgU2lnbmVkLW9mZi1ieTogQ2hyaXN0aWFuIEVnZ2VycyA8Y2VnZ2Vyc0BnbXguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IGZiNjM5MzliNGZlMTQwODQ5Y2RiYTY5ZjllNjRhM2UwZTJmM2NlMWMKLUF1dGhvcjogQ2hyaXN0aWFuIEVnZ2VycyA8Y2VnZ2Vyc0BnbXguZGU+Ci1EYXRlOglXZWQgTWF5IDIxIDIxOjI5OjEwIDIwMDggKzAyMDAKLQotICAgIEZpeCBlbmRpYW5lc3MgY29udmVyc2lvbiBpbiB1c2Jfb2hjaS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBDaHJpc3RpYW4gRWdnZXJzIDxjZWdnZXJzQGdteC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgNDc3NDM0YzYzYzJlYTViYWE1YzZjNGU0MzUwMDc4NmY0MzY1MTFmZgotQXV0aG9yOiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IE1heSAyMiAwMToxNTo1MyAyMDA4ICswMjAwCi0KLSAgICBVU0I6IGFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBQQ0kgT0hDSSBjb250cm9sbGVycwotCi0gICAgQWRkIG5ldyBjb25maWd1cmF0aW9uIHZhcmlhYmxlIENPTkZJR19QQ0lfT0hDSV9ERVZOTy4KLSAgICBJbiBjYXNlIG9mIHNldmVyYWwgUENJIFVTQiBjb250cm9sbGVycyBvbiBhIGJvYXJkIHRoaXMgdmFyaWFibGUKLSAgICBzcGVjaWZ5cyB3aGljaCBjb250cm9sbGVyIHRvIHVzZS4KLQotICAgIEFsc28gYWRkIFVTQiBzdXBwb3J0IGZvciBzb2tyYXRlcyBib2FyZC4KLQotICAgIFNlZSBkb2MvUkVBRE1FLmdlbmVyaWNfdXNiX29oY2kgZm9yIGRldGFpbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBjZTY3NTRkZjYxY2JlMjNiNWI3M2QwOTVhMDBhYzlhODUwNGIzZDc3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDIxIDE2OjU2OjA4IDIwMDggKzAyMDAKLQotICAgIEZpeCBzb21lIHdoaXRlc3BhY2UgaXNzdWVzCi0KLSAgICBpbnRyb2R1Y2VkIGJ5IDUzNjc3ZWYxOCAiQmlnIHdoaXRlLXNwYWNlIGNsZWFudXAuIgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDQ0MTY2MDNhZWIwNjg2MWI0NjhiMDZhOTgxZTUyYzNmZjgwNWRiN2IKLUF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXkgMTIgMTQ6MzY6MzkgMjAwOCAtMDUwMAotCi0gICAgTWFrZSBhZHM1MTIxIG91dC1vZi10cmVlIGNvbXBpbGluZyBzYWZlCi0KLSAgICBSZXVzZSB0aGUgZXhpc3RpbmcgRElVIGRyaXZlciBpbiBib2FyZC9mcmVlc2NhbGUvY29tbW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBlMWJhZDQ3Y2QzNDVjNzZjOTFhNjRjYWY0MTAxMWU0MzFiNjI1OTkKLUF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXkgNSAxMDoyMDowMSAyMDA4IC0wNTAwCi0KLSAgICBBZGRpbmcgRElVIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSA1MTIxQURTCi0KLSAgICBBZGQgRElVIGFuZCBjZmIgY29uc29sZSBzdXBwb3J0IHRvIEZTTCA1MTIxQURTIGJvYXJkLgotCi0gICAgVXNlICNkZWZpbmUgQ09ORklHX1ZJREVPIGluIGNvbmZpZyBmaWxlIHRvIGVuYWJsZSBmYiBjb25zb2xlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE0OGZmNjhkMjM1ZTY3MTE3NmY2YjQ5NmM0NDI0NmRiZTVlMGE5M2YKLUF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXkgNSAxMDoyMDowMCAyMDA4IC0wNTAwCi0KLSAgICBSZXBsYWNlIERQUklOVEYgd2l0aCBkZWJ1ZwotCi0gICAgUmVtb3ZlIERQUklOVEYgbWFjcm8gYW5kIHJlcGxhY2UgaXQgd2l0aCBnZW5lcmljIGRlYnVnIG1hY3JvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDNiODBjNWY1NzRhZDdmNmUxYzU1YTY4ZjQyNzUyYjQyN2ZkZjc3OGQKLUF1dGhvcjogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXkgNSAxMDoxOTo1OSAyMDA4IC0wNTAwCi0KLSAgICBNb3ZlIHBpeGVsIGNsb2NrIHNldHRpbmcgdG8gYm9hcmQgZmlsZQotCi0gICAgVGhlIGNsb2NrIGRpdmlkZXIgaGFzIGRpZmZlcmVudCBmb3JtYXQgaW4gNTEyMSBhbmQgODYxMC4gVGhpcyBwYXRjaCBtb3ZlcyBpdCB0bwotICAgIGJvYXJkIHNwZWNpZmljIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTM2NzdlZjE4ZTI1Yzk3YWM2MTMzNDkwODdjNWNiMzNhZTVhMjc0MQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE1heSAyMCAxNjowMDoyOSAyMDA4ICswMjAwCi0KLSAgICBCaWcgd2hpdGUtc3BhY2UgY2xlYW51cC4KLQotICAgIFRoaXMgY29tbWl0IGdldHMgcmlkIG9mIGEgaHVnZSBhbW91bnQgb2Ygc2lsbHkgd2hpdGUtc3BhY2UgaXNzdWVzLgotICAgIEVzcGVjaWFsbHksIGFsbCBzZXF1ZW5jZXMgb2YgU1BBQ0VzIGZvbGxvd2VkIGJ5IFRBQiBjaGFyYWN0ZXJzIGdldAotICAgIHJlbW92ZWQgKHVubGVzcyB0aGV5IGFwcGVhciBpbiBwcmludCBzdGF0ZW1lbnRzKS4KLQotICAgIEFsc28gcmVtb3ZlIGFsbCBlbWJlZGRlZCAidmltOiIgYW5kICJ2aToiIHN0YXRlbWVudHMgd2hpY2ggaGlkZQotICAgIGluZGVudGF0aW9uIHByb2JsZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDJmODQ1ZGMyYmRmNDYxYmZlZTlmYTI1ODIzZjc2OWY1ZGI5ZWJhMGIKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBNYXkgOCAxNzo0NjoyMyAyMDA4ICswMjAwCi0KLSAgICBzb2NyYXRlczogZml4IHNlY29uZCBUU0VDIGNvbmZpZ3VyYXRpb24gKGl0IGlzIGFjdHVhbGx5IFRTRUMzKQotCi0gICAgU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDc5MzY3MGMzYzBmMGY3MmNhZWFkNjJmMGJlOWZjM2Q5ZmJjNjA2MGYKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBNYXkgOCAxNDoxNzowOCAyMDA4ICswMjAwCi0KLSAgICBGaXhlZCByZXNldCBmb3Igc29jcmF0ZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBlMTg1NzVkNWY1ODlhNjJlMTljNzBkNDcxZDRiNGUyN2NhZDNhZjU2Ci1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglXZWQgTWF5IDcgMTU6MTA6NDkgMjAwOCArMDIwMAotCi0gICAgc29jcmF0ZXM6IGNoYW5nZXMgdG8gc3VwcG9ydCBGRFQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDVkMTA4YWM4ZjQzNTkyNGM2MjRjZDZhYWFjZDQ0ZjM1ZjVjZjk0YzAKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVdlZCBBcHIgMzAgMTE6NDI6NTAgMjAwOCArMDIwMAotCi0gICAgSW5pdGlhbCBzdXBwb3J0IGZvciAiU29jcmF0ZXMiIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgMGUxNWRkZDExZjFhODRjNDY1ZTQzNGViMDUxZDJlZjA4ZWYwMmI5YgotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTWF5IDggMTU6NDY6NDIgMjAwOCArMDIwMAotCi0gICAgUE9TVDogcmVwbGFjZSB0aGUgTE9HQlVGRl9JTklUSUFMSVpFRCBmbGFnIGluIGdkLT5wb3N0X2xvZ193b3JkICgxIDw8IDMxKSB3aXRoIHRoZSBHRF9GTEdfTE9HSU5JVCBmbGFnIGluIGdkLT5mbGFncy4KLQotICAgIFRoaXMgd2F5IHdlIGJlY29tZSBhYmxlIHRvIHV0aWxpemUgdGhlIGZ1bGwgcG9zdF9sb2dfd29yZCBmb3IgUE9TVAotICAgIGFjdGl2aXRpZXMgKG92ZXJ3aXNlLCBQT1NUIEVDQywgd2hpY2ggaGFzIDB4ODAwMCBJRCwgY291bGQgYmUKLSAgICBlcnJvbmVvdXNseSB0cmVhdGVkIGFzIHN0YXJ0ZWQgaW4gcG9zdF9vdXRwdXRfYmFja2xvZygpIGV2ZW4gaWYgdGhlcmUKLSAgICB3YXMgYWN0dWFsbHkgbm8gUE9TVCBFQ0MgcnVuIChiZWNhdXNlIG9mIE9DTSBQT1NUIGZhaWx1cmUsIGZvcgotICAgIGV4YW1wbGUpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgNzg0NWQ0OTA5NGM4MTMyMTAyMWI1MGE0ZGJiODg2NGQyZjM3NzdlNAotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTWF5IDggMTU6NDY6MDIgMjAwOCArMDIwMAotCi0gICAgUE9TVDogbWFyayBPQ00gdGVzdCBhcyBQT1NUX1NUT1AKLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotCi1jb21taXQgMjhhMzg1MDY1ODgyZDZjYjZhYzVmNDQzMzExZmY4Nzg4N2VkN2MxMwotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTWF5IDggMTU6NDU6MjYgMjAwOCArMDIwMAotCi0gICAgUE9TVDogYWRkIFBPU1RfU1RPUCBmbGFnCi0KLSAgICBEb24ndCBydW4gZnV0aGVyIHRlc3RzIGluIGNhc2Ugb2YgYSB0ZXN0IGZhaWxzIHRoYXQgaXMgbWFya2VkIGFzCi0gICAgUE9TVF9TVE9QLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgYTUyNTE0NWQ4MTEwZDE1YjQzODlkMjNjM2VhOGE3OGYyMjUwOWQzZgotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTWF5IDggMTU6NDQ6MTYgMjAwOCArMDIwMAotCi0gICAgUE9TVDogc3dpdGNoIENGR19QT1NUX09DTSB3aXRoIENGR19QT1NUX0NPREVDICh3b3JrYXJvdW5kKQotCi0gICAgU3dpdGNoIHRoZSBPQ00gdGVzdGlkIHdpdGggdGhlIGNvZGVjIG9uZS4gVGhlIHJlYXNvbiBpcyB0aGF0IGN1cnJlbnQKLSAgICBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB0aGUgUE9TVF9ST00gdGVzdGlkIHRvIGZpdCBpbnRvIGxvd2VyIDE2Ci0gICAgYml0cywgYW5kIHRoZSBjb2RlYyB0ZXN0IHdpbGwgbmV2ZXIgcnVuIHdpdGggUE9TVF9ST00gaG9wZWZ1bGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA4Yjk2Yzc4OGQ1OGY3Y2I4NWE4OWVlM2YxOWM5YjMzNWQyMjQ0M2NkCi1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBNYXkgOCAxNTo0MzoyOCAyMDA4ICswMjAwCi0KLSAgICBsd21vbjU6IGVuYWJsZSBPQ00gcG9zdCB0ZXN0IG9uIGx3bW9uNSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSWx5YSBZYW5vayA8eWFub2tAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA2ZThlYzY4MjI2ODQ5M2I4ZDA5OGY5OWUxN2IxY2U3MWI0NDQ4OTc3Ci1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBNYXkgOCAxNTo0Mjo0NyAyMDA4ICswMjAwCi0KLSAgICBQT1NUOiBPQ00gdGVzdCBhZGRlZC4KLQotICAgIEFkZGVkIE9DTSB0ZXN0IHRvIFBPU1QgbGF5ZXIuIFRoaXMgdmVyc2lvbiBydW5zIGJlZm9yZSBhbGwgb3RoZXIgdGVzdHMKLSAgICBidXQgZG9lc24ndCB5ZXQgaW50ZXJydXB0IHBvc3Qgc2VxdWVuY2Ugb24gZmFpbHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IElseWEgWWFub2sgPHlhbm9rQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDY4OTEyNjBiZGQ5MzVhMzgyYzk1ZDlmYTMzMzkyMmIwZGZkZWQ2OGEKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotRGF0ZToJVGh1IE1heSA4IDE1OjQwOjM5IDIwMDggKzAyMDAKLQotICAgIFBPU1Q6IHR5cG8gZml4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJbHlhIFlhbm9rIDx5YW5va0BlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDcyN2Y2MzMzNDY3NmU3NjA4NzdkNDNiZmI4ZjBlOTMzMWFjOGIxMDEKLUF1dGhvcjogSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotRGF0ZToJVHVlIE1heSAyMCAwMjoxNjozNiAyMDA4IC0wNzAwCi0KLSAgICBjb21tb24vdXNiLmM6IGZpeCBpbmNvcnJlY3QgZXNjYXBlIHNlcXVlbmNlCi0KLSAgICBTaWduZWQgb2ZmIGJ5OiBHdXJ1cmFqYSBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Ci0KLWNvbW1pdCA0Y2UxZTIzYjVlMTIyODM1Nzk4MjhiM2QyM2U4ZmQ2ZTEzMjhhN2FhCi1BdXRob3I6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTWF5IDE1IDE1OjI2OjI3IDIwMDggLTA1MDAKLQotICAgIEZpeCA4MzEzRVJEQiBib2FyZCBjb25maWd1cmF0aW9uCi0KLSAgICBDaGFuZ2UgTENSUiBjbG9jayByYXRpbyBmcm9tIDIgdG8gNCB0byBjb21tb2RhdGUgVlNDNzM4NS4KLSAgICBDb3JyZWN0IFRTRUMxIHZzIFRTRUMyIGFzc2lnbm1lbnQuCi0gICAgRGVmaW5lIEVUSEFERFIgYW5kIEVUSDFBRERSIGFsd2F5cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDJjMjg5ZTMyMGRjZmIzNzYwZTk5Y2YxZDc2NWNiMDY3MTk0YTEyMDIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXkgMTkgMDk6NDc6MjUgMjAwOCAtMDUwMAotCi0gICAgbXBjODZ4eDogUmVtb3ZlZCB1bnVzZWQgYW5kIHVuY29uZmlndXJlZCBtZW1vcnkgdGVzdCBjb2RlLgotCi0gICAgQmVzaWRlcywgb3RoZXIgY29tbW9uIGNvZGUgZXhpc3RzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE4MGE5MGFiZGFlNzI1ODdjMGY2NzllZGY4OTkxNDU1ZTU1OTQ0MGQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgMTkgMTI6NDc6MTEgMjAwOCArMDIwMAotCi0gICAgUmVsZWFzZSB2MS4zLjMKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cgZm9yIHJlbGVhc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTZiZWRjNjYxZGUwZGFlNzY3YjEzNzdkODQxMzM3M2EzZmJjZmE3OQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTWF5IDE5IDA3OjE0OjM4IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ2FueW9ubGFuZHM6IERpc2FibGUgUENJZTAvU0FUQSBpbiBkZXYtdHJlZSBkZXBlbmRpbmcgb24gc2VsZWN0aW9uCi0KLSAgICBXaGVuIFNBVEEgaXMgc2VsZWN0ZWQgKHZpYSBqdW1wZXIgSjYpIHdlIG5lZWQgdG8gZGlzYWJsZSB0aGUgZmlyc3QgUENJZQotICAgIG5vZGUgaW4gdGhlIGRldmljZSB0cmVlLCBzbyB0aGF0IExpbnV4IGRvZXNuJ3QgaW5pdGlhbGl6ZSBpdC4gT3RoZXJ3aXNlCi0gICAgdGhlIExpbnV4IFNBVEEgZHJpdmVyIHdpbGwgZmFpbCB0byBkZXRlY3QgdGhlIGRldmljZXMuCi0KLSAgICBUaGUgc2FtZSBnb2VzIHRoZSBvdGhlciB3YXkgYXJvdW5kIHRvby4gU28gaWYgUENJZSBpcyBzZWxlY3RlZCB3ZSBuZWVkCi0gICAgdG8gZGlzYWJsZSB0aGUgU0FUQSBub2RlIGluIHRoZSBkZXZpY2UgdHJlZS4KLQotICAgIFRoaXMgaXMgYmVjYXVzZSBQQ0llIHBvcnQgMCBhbmQgU0FUQSBvbiA0NjBFWCBzaGFyZSB0aGUgc2FtZSBwaW5zCi0gICAgKG11bHRpcGxleGVkKSBhbmQgd2UgaGF2ZSB0byBjb25maWd1cmUgaW4gVS1Cb290IHdoaWNoIHBlcmlwaGVyYWwgaXMKLSAgICBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgM2NjMjdiNDI2YWVlZmUyOTMwZjkxMTY5MmU5ZGYzMTQzZmIyNTY1ZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1heSAxOCAxOTowOTo1OCAyMDA4ICswMjAwCi0KLSAgICBpMzg2OiBGaXggbXVsdGlwbGUgZGVmaW5pdGlvbnMgb2YgX19zaG93X2Jvb3RfcHJvZ3Jlc3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAzMTFmMzQ0NjkzMGMxZTY0YzEyMDI2YzFjZmQwMDUwMGIwNWJlNTJkCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWF5IDE4IDE5OjA5OjU3IDIwMDggKzAyMDAKLQotICAgIHNjNTMwX3NwdW5rOiBhZGQgbWlzc2luZyBTT0JKUyBlbnRyeQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGE1NTkzMTcxNDNiNGY5NTkyN2IwOGNkMzg4NzA3ZTZmMDc3ZTk1ZmEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTggMTk6MDk6NTYgMjAwOCArMDIwMAotCi0gICAgc2M1MjBfc3B1bms6IEZpeCBmbGFzaAotCi0gICAgZmxhc2guYzo1OTM6IHdhcm5pbmc6IGRlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlciB3aWxsIGJyZWFrIHN0cmljdC1hbGlhc2luZyBydWxlcwotICAgIGZsYXNoLmM6Mzk4OiBlcnJvcjogbGFiZWwgYXQgZW5kIG9mIGNvbXBvdW5kIHN0YXRlbWVudAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDkxZjIyMTMxN2FmNjQxOTFlZThjYWYzMDNlYTkzMDU5NDMxNTg2OTEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTggMTk6MDk6NDkgMjAwOCArMDIwMAotCi0gICAgZHJpdmVycy9wY21jaWE6IGFkZCBtaXNzaW5nIGk4MjM2NQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGRkMjIzOTQ0MTMyZjk3ZmZhNTI5NzdlYTk1ZTVhNTI0MjhmNWNjMmYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTggMTk6MDk6NDcgMjAwOCArMDIwMAotCi0gICAgaTM4Ni9ib290bTogcmVtb3ZlIHVudXNlZCB2YXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBhOWRhMzQxZGYxOWIzMmFkMmVjYjU4Y2U1MjlmN2U0ZmFkYTc4MTRlCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWF5IDE4IDE5OjA5OjQ1IDIwMDggKzAyMDAKLQotICAgIGV4YW1wbGUvZ2l0aWdub3JlOiB1cGRhdGUgd2l0aCBhbGwgZ2VuZXJhdGVkIGV4YW1wbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYTM4ZGMzZWE4NjE0ZjhiMGM0MWU0MzJiNDQ1YTk5NTliOTcxMTI5NQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IE1heSAxNSAwMDo0Mjo0NSAyMDA4ICswMjAwCi0KLSAgICBUUU04MjcyOiBmaXggb3V0LW9mLXRyZWUgYnVpbGRpbmcKLQotICAgIC4uLmFuZCBhZGQgdG8gTUFLRUFMTCBzY3JpcHQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZjgwNWMxZTNhNjBiOTI2M2RhOGVjM2JjZDFmNDVlZGNlZmE3ZGNmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDE0IDIzOjM0OjUzIDIwMDggKzAyMDAKLQotICAgIGVudmlyb25tZW50OiBmaXggYnVnIGludHJvZHVjZWQgYnkgY29tbWl0IGE4NDA5ZjRmMWFjOAotCi0gICAgZW52X2dldF9jaGFyIGlzIG5vdCBhIGZ1bmN0aW9uLCBidXQgYSBwb2ludGVyIHRvIG9uZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwYzExOTM1Y2Q2MmNhMWY2NWVlYjIyOGZmNGM4NDg0NDBkNDU1M2JmCi1BdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgotRGF0ZToJV2VkIE1heSAxNCAxMzozOToyMiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFFVQUQxMDBIRDogQWxsb3cgdGhlIGVudmlyb25tZW50IHRvIGJlIHB1dCBpbnRvIGZsYXNoLgotCi0gICAgQWZ0ZXIgbW92aW5nIFRFWFRfQkFTRSB0aGUgdmFsdWUgZm9yIENGR19FTlZfQUREUiB3YXMgaW5jb3JyZWN0LiAgQWxzbwotICAgIHVzZSBhIHJlZHVuZGFudCBlbnZpcm9ubWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgotCi1jb21taXQgY2RhMmE0YTk5NjFmZDQzNDFiN2RiMzA1Y2IyMmZjMDU5NTdlOGI3NwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIE1heSAxNCAxMzo1NTozMCAyMDA4ICswMjAwCi0KLSAgICBGaXggY29uZmlnIGZpbGVzIGZvciBvdXQtb2YtdHJlZSBidWlsZGluZwotCi0gICAgU2V2ZXJhbCBib2FyZC88Li4uPi9jb25maWcubWsgZmlsZXMgaW5jbHVkZSBkeW5hbWljYWxseSBidWlsdCAoYnkKLSAgICB0aGUgTWFrZWZpbGUpIGNvbmZpZyBmaWxlcyBidXQgdXNlZCB0aGUgd3JvbmcgZmlsZSBuYW1lIG9mCi0JJChUT1BESVIpL2JvYXJkLyQoQk9BUkRESVIpL2NvbmZpZy50bXAKLSAgICBpbnN0ZWFkIGlmIHRoZSBjb3JyZWN0Ci0JJChPQkpUUkVFKS9ib2FyZC8kKEJPQVJERElSKS9jb25maWcudG1wCi0KLSAgICBUaGUgYnVnIGlzIG5hc3R5IGJlY2F1c2UgdGhlIGJ1aWxkIHJlc3VsdCBpcyBjb3JyZWN0IGZvciB0aGUgKG5vcm1hbCkKLSAgICBpbi10cmVlIGJ1aWxkcywgYW5kIGJlY2F1c2UgJ3NpbmNsdWRlJyBpcyB1c2VkIG5vIGVycm9ycyBnZXQgcmFpc2VkCi0gICAgZXZlbiBmb3Igb3V0LW9mLXRyZWUgYnVpbGQgdGVzdHMuIEJ1dCBvdXQtb2YtdHJlZSBidWlsZHMgdXNlIGFuCi0gICAgaW5jb21wbGV0ZSBhbmQgdGh1cyB1c3VhbGx5IGluY29ycmVjdCBjb25maWd1cmF0aW9uLi4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMmRkNzA4MmUwNmQ1ODA0MDQwMTBiMDZmZTRlMGU4YjcwMzhhMDBjOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDE0IDEzOjQwOjAzIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGJvZ3VzIENhbnlvbmxhbmRzIGNvbmZpZy5tawotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgY2FueW9ubGFuZHMgY29uZmlnLm1rIGZpbGUgdG8gZW5hYmxlIGNvcnJlY3QKLSAgICBvdXQtb2YtdHJlZSBidWlsZHMuIFRoYW5rcyB0byBXb2xmZ2FuZyBEZW5rIGZvciBzcG90dGluZyB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZmRkMTI0N2E2NmQ3ODhhMzQ0NjI0NGY2ZmRlOTk1NWE5M2MyNjMyMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDE0IDEwOjMyOjMyIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogSW5kaXZpZHVhbCBoYW5kbGluZyBvZiBkZHIyX2ZpeGVkLmMgZm9yIGNhbnlvbmxhbmRzX25hbmQgYnVpbGQKLQotICAgIENhbnlvbmxhbmRzIGhhcyBhIGZpbGUgZGRyMl9maXhlZC5jIHdoaWNoIG5lZWRzIHNwZWNpYWwgdHJlYXRtZW50IHdoZW4KLSAgICBidWlsZGluZyBpbiBzZXBhcmF0ZSBkaXJlY3RvcnkuIEl0IGhhcyB0byBiZSBsaW5rZWQgdG8gYnVpbGQgZGlyZWN0b3J5Ci0gICAgb3RoZXJ3aXNlIGl0IGlzIG5vdCBzZWVuLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTg0MDlmNGYxYWM4NGMzNjI3M2MxYTFlMzQxMTg5NjYyNTIxYmNmYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIE1heSAxNCAxMjoyMjo0OSAyMDA4ICswMjAwCi0KLSAgICBlbnZpcm9ubWVudDogY2xlYW51cCBwcm90b3R5cGUgZGVjbGFyYXRpb25zIG9mIGVudiBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgY2YzOWIwNzk0ODAxNWM0ODBiNzJhNmU3MzJjZjdkODM5YWE5M2E5ZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIE1heSAxNCAxMjoyMTo0OCAyMDA4ICswMjAwCi0KLSAgICBsaW5rc3RhdGlvbl9IR0xBTjogRml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDA4NTU1MWMwNWNhMDllNmM0OTFlYTExYTFjNjcyN2EzNjc3NmE1NDUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1heSAxNCAxMDozMjozMiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEluZGl2aWR1YWwgaGFuZGxpbmcgb2YgZGRyMl9maXhlZC5jIGZvciBjYW55b25sYW5kc19uYW5kIGJ1aWxkCi0KLSAgICBDYW55b25sYW5kcyBoYXMgYSBmaWxlIGRkcjJfZml4ZWQuYyB3aGljaCBuZWVkcyBzcGVjaWFsIHRyZWF0bWVudCB3aGVuCi0gICAgYnVpbGRpbmcgaW4gc2VwYXJhdGUgZGlyZWN0b3J5LiBJdCBoYXMgdG8gYmUgbGlua2VkIHRvIGJ1aWxkIGRpcmVjdG9yeQotICAgIG90aGVyd2lzZSBpdCBpcyBub3Qgc2Vlbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE1MTBiODJkNTA2MTVmMzQ0ZTg5ZDQyNTMzZTgyMjRjY2UwNjdkYzAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXkgMTMgMjM6MTU6NTIgMjAwOCArMDIwMAotCi0gICAgTWFrZWZpbGU6IGZpeCAiZXJyb3I6IHZlcnNpb25fYXV0b2dlbmVyYXRlZC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5IgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDU0Njk0YTkxNDI4ZjZjMzI4MGZlMWVlMDkyMzQ4OGExZTdlOGRiYzQKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVR1ZSBNYXkgMTMgMTc6MzE6MjQgMjAwOCArMDIwMAotCi0gICAgQ2xlYW51cCBuYW5kX2luZm9bXSBkZWNsYXJhdGlvbi4KLQotICAgIFRoZSBuYW5kX2luZm8gYXJyYXkgaXMgZGVjbGFyZWQgYXMgZXh0ZXJuIGluIHNldmVyYWwgLmMgZmlsZXMuCi0gICAgVGhvc2UgZGF5cywgbmFuZC5oIGNvbnRhaW5zIGEgcmVmZXJlbmNlIHRvIHRoZSBhcnJheSwgc28gdGhlcmUgaXMKLSAgICBubyBuZWVkIHRvIGRlY2xhcmUgaXQgZWxzZXdoZXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzBmYWIxOTA4ZmMxNzM0YTQwMzcxMWVhYWJiZWY1NDZiYzRiNzdkYwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWF5IDEzIDIwOjIyOjAxIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIDQwNUVYKHIpIHJldmlzaW9uIEMgUFZSIGRlZmluaXRpb25zIGFuZCBkZXRlY3Rpb24gY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjVkY2ZhNzkyMDRmNDc1MGI5MDVhMTczYTUzNjVlMGIyZWI2YzJmNgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIE1heSAxMiAwMToxMToyMSAyMDA4ICswMjAwCi0KLSAgICBSZXZlcnQgInBjaTogQWRkIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRSBjb25maWcgb3B0aW9uIgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCA1NTc3NGI1MTJmZGY2M2MwNTE2ZDQ0MWNjNWRhN2M1NGJiZmZiN2YyCi0gICAgd2hpY2ggYnJva2UgbWFueSBQb3dlclBDIGJvYXJkcy4KLQotY29tbWl0IGVlMGNmYTcwODAzYTNlNjI5ZWE1ODFhOWIyMTZmOGVjZWY0MDJiZmMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgMTIgMDA6NTY6MjggMjAwOCArMDIwMAotCi0gICAgUmV2ZXJ0ICJBdm9pZCBpbml0cmQgYW5kIGxvZ2J1ZmZlciBhcmVhIG92ZXJsYXBzIgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCAxYjU2MDVjYTU3ZmJiMzY0ZjRkNzhlZWVlMjhiOTc0ZWQ4NzVlODg4Ci0gICAgd2hpY2ggYnJlYWtzIGJ1aWxkaW5nIG9uIGFsbCBQUEMgYm9hcmRzIHRoYXQgZG9uJ3QgdXNlIGEgbG9nIGJ1ZmZlci4KLQotY29tbWl0IDAyYjliMjI0NDZlM2Q3YWQ2YTYzODJiZTE3YTFjZTc5YTdkZTU4OWIKLUF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTYXQgTWF5IDEwIDE0OjAyOjA0IDIwMDggLTA3MDAKLQotICAgIEZpeCBvZmZzZXQgY2FsY3VsYXRpb24gZm9yIG11bHRpLXR5cGUgbGVnYWN5IGltYWdlcy4KLQotICAgIENhbGN1bGF0aW9uIG9mIHRhaWwgd2FzIGluY29ycmVjdCB3aGVuIHNpemUgJSA0ID09IDAuCi0KLSAgICBOZXcgY29kZSByZW1vdmVzIHRoZSBjb25kaXRpb25hbCBhbmQgZG9lcyB0aGUgc2FtZSB0aGluZyBidXQgd2l0aCBhcml0aG1ldGljCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGM5ZGNhM2MzZjM3ZDI2NDdhZWM0NTA5YjI0YjE2ZDE1ODgyYWUzZTQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgMTIgMDA6NDA6NTggMjAwOCArMDIwMAotCi0gICAgUmV2ZXJ0ICJDaGFuZ2UgZW52X2dldF9jaGFyIGZyb20gYSBnbG9iYWwgZnVuY3Rpb24gcHRyIHRvIGEgZnVuY3Rpb24uIgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCBjMDU1OWJlMzcxYjJhNjRiMWE4MTcwODhjMzMwODY4OGUyMTgyZjkzCi0gICAgd2hpY2ggaXMga25vd24gdG8gYnJlYWsgYm9vdGluZyBmcm9tIGRhdGFmbGFzaCBhbmQgTkFORC4KLQotY29tbWl0IDIwZTVlZDEzNzQ4MzgyM2FhZWE1MTc4MTY5ZjNiMTQ0YzdhNGQ5ZTAKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXkgMTEgMjM6MTM6NTcgMjAwOCArMDIwMAotCi0gICAgQVBJOiByZW1vdmUgZHVwbGljYXRlIHN5c2NhbGwgY2hlY2sKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2N2UzYmViNTJjMzIwYjBhMzFjZjAzMDcxNmM5OTM5MmNkZTJkNTMyCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglGcmkgTWF5IDkgMjE6NDY6NTEgMjAwOCArMDIwMAotCi0gICAgQVQ5MTogQ2xlYW51cCB1bnVzZWQgY29uZmlnIGhlYWRlciBmaWxlIGRlZmluaXRpb25zLgotCi0gICAgQ09ORklHX0VOVl9PVkVSV1JJVEUgaXMgY29tbWVudGVkIG91dCBpbiB0aGUgY29uZmlnIGhlYWRlciBmaWxlcywKLSAgICBzbyBsZXQncyBjbGVhbnVwIHRoZSBmaWxlcyBieSByZW1vdmluZyB0aGUgd2hvbGUgZGVmaW5pdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDE5ODgzYWVkZTJhYzBhNTIyNDkzYmZiMmIzNWE3ZGJiMjAwMDcxYjEKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAxNDo1MjozNCAyMDA4ICswMjAwCi0KLSAgICBTdXBwb3J0IEFUOTFDQVA5IHJldkMgQ1BVcwotCi0gICAgVGhlIEFUOTFDQVA5IHJldkMgQ1BVIGhhcyBhIGZldyBkaWZmZXJlbmNlcyBvdmVyIHRoZSBwcmV2aW91cywKLSAgICByZXZCIENQVSB3aGljaCB3YXMgZGlzdHJpYnV0ZWQgaW4gc21hbGwgcXVhbnRpdGllcyBvbmx5IChyZXZBIHdhcwotICAgIGFuIGludGVybmFsIEF0bWVsIHByb2R1Y3Qgb25seSkuCi0KLSAgICBUaGUgcmV2QyBzaWxpY29uIG5lZWRzIGEgc3BlY2lhbCBpbml0aWFsaXNhdGlvbiBzZXF1ZW5jZSB0bwotICAgIHN3aXRjaCBmcm9tIHRoZSBpbnRlcm5hbCAoaW1wcmVjaXNlKSBSQyBvc2NpbGxhdG9yIHRvIHRoZQotICAgIGV4dGVybmFsIDMyayBjbG9jay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDA5OGI3YjRiNDQxYjEyYzJhNjRkZDUxNzkzMGY0M2M3OTM1NDI3NTkKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAxNDo1MjozMyAyMDA4ICswMjAwCi0KLSAgICBVc2UgY3VzdG9tIGxvZ28gZm9yIEF0bWVsIGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgY3VzdG9tIHZlbmRvciBsb2dvIGZvciB0aGUgQXRtZWwgQVQ5MSBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA3NjFjNzBiODBjZGQzYmVhZDQwMTQ2Yjk2YThlNzEzZDZhZTAxNjMyCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUaHUgTWF5IDggMTQ6NTI6MzIgMjAwOCArMDIwMAotCi0gICAgQVQ5MVNBTTlSTEVLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBuZWNlc3NhcnkgYWRhcHRhdGlvbnMgKFBJTyBjb25maWd1cmF0aW9ucyBhbmQKLSAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKLSAgICBBVDkxU0FNOVJMRUsgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA1NmEyNDc5Y2Q3ZmVjYWJkZDkxMzQ4YTc3NWIyODAxZGQyZTY1YzdmCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUaHUgTWF5IDggMTQ6NTI6MzEgMjAwOCArMDIwMAotCi0gICAgQVQ5MVNBTTkyNjNFSzogaG9vayB1cCB0aGUgQVRNRUwgTENEIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgbmVjZXNzYXJ5IGFkYXB0YXRpb25zIChQSU8gY29uZmlndXJhdGlvbnMgYW5kCi0gICAgZGVmaW5lcyBpbiBjb25maWcgaGVhZGVyIGZpbGUpIHRvIGhvb2sgdXAgdGhlIEF0bWVsIExDRCBkcml2ZXIgdG8gdGhlCi0gICAgQVQ5MVNBTTkyNjNFSyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDgyMGYyYTk1ODMyNTA2MWE0NDYxMTVmMzAzNWU0OGU0NzI2YjMzOTAKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAxNDo1MjozMCAyMDA4ICswMjAwCi0KLSAgICBBVDkxU0FNOTI2MUVLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBuZWNlc3NhcnkgYWRhcHRhdGlvbnMgKFBJTyBjb25maWd1cmF0aW9ucyBhbmQKLSAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKLSAgICBBVDkxU0FNOTI2MUVLIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYzEzOWIxN2QyMGM4MzcxYzFlMGE4ZDdmYjI3YzExMDUwY2Y4NjMwNAotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDE0OjUyOjI5IDIwMDggKzAyMDAKLQotICAgIEFUOTFDQVA5QURLOiBob29rIHVwIHRoZSBBVE1FTCBMQ0QgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBuZWNlc3NhcnkgYWRhcHRhdGlvbnMgKFBJTyBjb25maWd1cmF0aW9ucyBhbmQKLSAgICBkZWZpbmVzIGluIGNvbmZpZyBoZWFkZXIgZmlsZSkgdG8gaG9vayB1cCB0aGUgQXRtZWwgTENEIGRyaXZlciB0byB0aGUKLSAgICBBVDkxQ0FQOUFESyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDM5Y2Y0ODA0ODRmY2NlNWMwNGE1OTBlZTFjMzBiZTBjMTdiMDJjMzQKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CUZyaSBNYXkgOSAyMTo1NzoxOCAyMDA4ICswMjAwCi0KLSAgICBBZGQgQVRNRUwgTENEIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVE1FTCBMQ0RDIGRyaXZlciB3aGljaCBpcyB1c2VkIG9uIHNvbWUKLSAgICBBVDkxIGFuZCBBVlIgcGxhdGZvcm1zLgotCi0gICAgSXMgaGFzIGJlZW4gdGVzdGVkIHdpdGggdGhlIEFUOTFDQVA5QURLLCBBVDkxU0FNOTI2MUVLLCBBVDkxU0FNOTI2M0VLIGFuZAotICAgIEFUOTFTQU05UkxFSyBib2FyZHMuIEFkYXB0YXRpb24gZm9yIEFWUjMyIHNob3VsZCBwcm9iYWJseSBiZSBlYXN5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMjExOGViYjQ0ZGM0MGY4MTE3Yzk0OTUwZmQ5NTc5OWE5ZWY4MjFiMgotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDE4OjUyOjI1IDIwMDggKzAyMDAKLQotICAgIEFUOTFTQU05UkxFSyBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFUOTFTQU05UkwgY2hpcCBhbmQgdGhlIEFUOTFTQU05UkxFSwotICAgIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOGU0MjliM2VlZTIzOTI3YzEyMjI2NzlmNmI2ZjUzNjY3YjIxNTk1YwotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDE4OjUyOjIzIDIwMDggKzAyMDAKLQotICAgIEFUOTFTQU05MjYzRUsgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVDkxU0FNOTI2MyBjaGlwIGFuZCB0aGUgQVQ5MVNBTTkyNjNFSwotICAgIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDk5YThmZjY2ZDhhZTg3ZTVjODc1OTBlZDJlNGVhZDYyOTU0MDYwNwotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDIwOjUyOjIyIDIwMDggKzAyMDAKLQotICAgIEFUOTFTQU05MjYxRUsgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVDkxU0FNOTI2MSBjaGlwIGFuZCB0aGUgQVQ5MVNBTTkyNjFFSwotICAgIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgODZjOGM4YTQxNDk4OGM1MDEwNGEzYjAyYzI5ZjUwYWYyYmU3MzhjMAotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDIwOjUyOjIxIDIwMDggKzAyMDAKLQotICAgIEFUOTFTQU05MjYwRUs6IEZpeCBkYXRhZmxhc2ggb2Zmc2V0cyBpbiBDT05GSUdfQk9PVENPTU1BTkQKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIGRhdGFmbGFzaCBvZmZzZXRzIHVzZWQgaW4gQ09ORklHX0JPT1RDT01NQU5ECi0gICAgaW4gb3JkZXIgdG8gY29wZSB3aXRoIHRoZSBjaGFuZ2VzIGluIERhdGFGbGFzaCBwYXJ0aXRpb25uaW5nIHNjaGVtZQotICAgIChjc2V0IGMzYTYwY2IzKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDk2OTk2YWMyNWQ1MjIyNjExYTg4ODg5NjhkYjZlNTNhNmQzNzI2ZGEKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAyMDo1MjoyMCAyMDA4ICswMjAwCi0KLSAgICBBVDkxU0FNOTI2MEVLOiBOb3JtYWxpemUgQk9PVEFSR1MKLQotICAgIFRoaXMgcGF0Y2ggYWRhcHRzIENPTkZJR19CT09UQVJHUyB0byB0aGUgY2hvc2VuIGJvb3QgbWV0aG9kIChib290IGZyb20KLSAgICBEYXRhRmxhc2ggb3IgZnJvbSBOQU5EKSwgYW5kIGdpdmVzIHRvIExpbnV4IGEgZnVsbHkgc3BlY2lmaWVkIG10ZHBhcnRzCi0gICAgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA3OWYwY2I2ZTljNTRkMzFhMWQ5ZTNmNWUyMjZhOWJlYmMzYzNhNDdhCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUaHUgTWF5IDggMjA6NTI6MTkgMjAwOCArMDIwMAotCi0gICAgQVQ5MVNBTTkyNjBFSzogTm9ybWFsaXplIFNQSSB0aW1pbmdzCi0KLSAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIFNQSSB0aW1pbmdzIHRvIGNsb3NlbHkgbWF0Y2ggdGhlIG9uZXMKLSAgICB1c2VkIGJ5IHRoZSBMaW51eCBrZXJuZWwgYW5kIHRoZSBBdG1lbCdzIG93biBib290c3RyYXAgcHJvamVjdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGMxMjEyYjJmNWM1ZWQ0NDBiZjhlOWViYzhlNGZkNzQ4ODg1OGI5MzUKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAyMDo1MjoxOCAyMDA4ICswMjAwCi0KLSAgICBBVDkxU0FNOTI2MEVLOiBIYW5kbGUgOCBvciAxNiBiaXQgTkFORAotCi0gICAgVGhlIEF0bWVsIGJvYXJkcyBjYW4gaGFuZGxlIDggb3IgMTYgYml0IE5BTkQgbWVtb3JpZXMuIFRoaXMgcGF0Y2gKLSAgICBtYWtlcyB0aGUgc3VwcG9ydCBjb25maWd1cmFibGUgaW4gdGhlIGJvYXJkIGNvbmZpZyBoZWFkZXIgZmlsZQotICAgIChDRkdfTkFORF9EQldfOCBvciBDRkdfTkFORF9EQldfMTYpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYWI1MjY0MGZjMDE2MjRlMjA4NDI0ZTUyN2FmMGI3YjNhNWE2NWExMgotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDIwOjUyOjE3IDIwMDggKzAyMDAKLQotICAgIEFUOTFDQVA5QURLOiBGaXggZGF0YWZsYXNoIG9mZnNldHMgaW4gQ09ORklHX0JPT1RDT01NQU5ECi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBkYXRhZmxhc2ggb2Zmc2V0cyB1c2VkIGluIENPTkZJR19CT09UQ09NTUFORAotICAgIGluIG9yZGVyIHRvIGNvcGUgd2l0aCB0aGUgY2hhbmdlcyBpbiBEYXRhRmxhc2ggcGFydGl0aW9ubmluZyBzY2hlbWUKLSAgICAoY3NldCBjM2E2MGNiMykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAzMjY3NTA4ZWM0YzllNzRjMzllZTQxYzlhZTY5NTFhZDE4NWZlMjcwCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUaHUgTWF5IDggMjA6NTI6MTYgMjAwOCArMDIwMAotCi0gICAgQVQ5MUNBUDlBREs6IE5vcm1hbGl6ZSBCT09UQVJHUwotCi0gICAgVGhpcyBwYXRjaCBhZGFwdHMgQ09ORklHX0JPT1RBUkdTIHRvIHRoZSBjaG9zZW4gYm9vdCBtZXRob2QgKGJvb3QgZnJvbQotICAgIERhdGFGbGFzaCBvciBmcm9tIE5BTkQpLCBhbmQgZ2l2ZXMgdG8gTGludXggYSBmdWxseSBzcGVjaWZpZWQgbXRkcGFydHMKLSAgICB2YXJpYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDkzZGE0OGI5MTA1MTE5MTFjZTExMDY1NmUxN2VkNzMzYzhhYzRjNDUKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAyMDo1MjoxNSAyMDA4ICswMjAwCi0KLSAgICBBVDkxQ0FQOUFESzogTm9ybWFsaXplIFNQSSB0aW1pbmdzCi0KLSAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIFNQSSB0aW1pbmdzIHRvIGNsb3NlbHkgbWF0Y2ggdGhlIG9uZXMKLSAgICB1c2VkIGJ5IHRoZSBMaW51eCBrZXJuZWwgYW5kIHRoZSBBdG1lbCdzIG93biBib290c3RyYXAgcHJvamVjdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDFjOTBkZjNlMTQ4Y2UwYTNlMmM4NmM2M2IzOGIxOWQ0Nzc3MmYyYTAKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAyMDo1MjoxNCAyMDA4ICswMjAwCi0KLSAgICBBVDkxQ0FQOUFESzogSGFuZGxlIDggb3IgMTYgYml0IE5BTkQKLQotICAgIFRoZSBBdG1lbCBib2FyZHMgY2FuIGhhbmRsZSA4IG9yIDE2IGJpdCBOQU5EIG1lbW9yaWVzLiBUaGlzIHBhdGNoCi0gICAgbWFrZXMgdGhlIHN1cHBvcnQgY29uZmlndXJhYmxlIGluIHRoZSBib2FyZCBjb25maWcgaGVhZGVyIGZpbGUKLSAgICAoQ0ZHX05BTkRfREJXXzggb3IgQ0ZHX05BTkRfREJXXzE2KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDExYjE2MmJhZTA1OGU5NmM3OTI5ZTM1OGQ0YWRmZjJiZWU2YzJjYzQKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAyMDo1MjoxMyAyMDA4ICswMjAwCi0KLSAgICBVc2UgYSBjb21tb24gdS1ib290LmxkcyBmaWxlIGFjcm9zcyBhbGwgQVQ5MUNBUDkvQVQ5MVNBTTkgcGxhdGZvcm1zCi0KLSAgICBBbGwgdGhlIEFUOTFDQVA5L0FUOTFTQU05IGJvYXJkcyBoYXZlIHRoZSBzYW1lIGxpbmtlciBzY3JpcHQuIFRoZSBwYXRjaAotICAgIGJlbG93IGF2b2lkcyB0aGUgZHVwbGljYXRpb24gb2YgdS1ib290LmxkcyBieSBwdXR0aW5nIHRoZSBmaWxlIGluIHRoZQotICAgIGNwdSBkaXJlY3RvcnkgaW5zdGVhZCBvZiB0aGUgYm9hcmQgb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDQ4YWJlYTRiODlhZGFmNWU0NWVhNzViNWUzOGMwZDhkZTE3OWVjZQotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDIwOjUyOjEyIDIwMDggKzAyMDAKLQotICAgIEFkZCBwcm9wZXIgY29weXJpZ2h0IG5vdGljZXMgaW4gQXRtZWwgYm9hcmRzIE1ha2VmaWxlcwotCi0gICAgVGhlIE1ha2VmaWxlcyBmb3IgdGhlIEFUOTFDQVA5L0FUOTFTQU05IGJvYXJkcyBoYXZlIGFuIGluY29tcGxldGUKLSAgICBjb3B5cmlnaHQgbm90aWNlLiBUaGlzIHBhdGNoIGFkZHMgdGhlIG1pc3NpbmcgcGllY2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZTgxN2EwNDJjZWY2MTY0YmYyNmZlZTg2ZjkwMzI2ZjJlYzllNjc0NQotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDIwOjUyOjExIDIwMDggKzAyMDAKLQotICAgIEFkZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24gaW4gQXRtZWwgYm9hcmRzIHBhcnRpdGlvbi5jCi0KLSAgICBXaGVuIFVsZiBkaWQgdGhlIGRhdGFmbGFzaC5jIGNsZWFudXAsIGhlIGRpZG4ndCBhZGQgaGlzIGNvcHlyaWdodCBvbgotICAgIHRoZSBuZXcgY3JlYXRlZCBmaWxlcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDRmNmM4MTAxMDZmNGY3NmQ4M2NmYzU3ZDk4ZjQ1NDBjZDQ1ZjlhMTkKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBNYXkgOCAyMDo1MjoxMCAyMDA4ICswMjAwCi0KLSAgICBVcGRhdGUgb3JpZ2luIGFuZCBjb3B5cmlnaHQgaW5mb3JtYXRpb24gaW4gYXJjaC1hdDkxc2FtOSBoZWFkZXIgZmlsZXMKLQotICAgIFdoZW4gZG9pbmcgdGhlIEFUOTFDQVA5L0FUOTFTQU05IHBvcnQsIGEgbnVtYmVyIG9mIGhlYWRlciBmaWxlcyB3ZXJlCi0gICAgY29waWVkIGZyb20gdGhlIExpbnV4IGtlcm5lbCBzb3VyY2VzLiBUaGlzIHBhdGNoIGV4cGxpY2l0bHkgc3BlY2lmaWVzCi0gICAgdGhpcyBvcmlnaW4gZm9yIGFsbCB0aGUgY29waWVkIGhlYWRlcnMsIGFuZCBmb3IgdGhvc2UgbWlzc2luZyBjb3B5cmlnaHQKLSAgICBpbmZvcm1hdGlvbiwgYWRkcyBpdC4KLQotICAgIEFkZGl0aW9uYWx5LCB0aGUgaGVhZGVyIGZpbGUgJ2F0OTFzYW05MjZ4X21jLmgnIGhhcyBiZWVuIHN1cGVyY2VlZGVkCi0gICAgaW4gdGhlIGxhdGVzdCBrZXJuZWwgc291cmNlcyBieSAnYXQ5MXNhbTlfc21jLmgnLgotCi0gICAgVGhlIGNvcHlyaWdodCBpbmZvcm1hdGlvbiBoYXMgYmVlbiBjb25maXJtZWQgYnkgdGhlIEFUOTEgTGludXgga2VybmVsCi0gICAgbWFpbnRhaW5lciwgQW5kcmV3IFZpY3RvciA8YXZpY3Rvci56YUBnbWFpbC5jb20+LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzlkZDE3MTI2ODlkNmE1MDMxZDdjYmZmNTQ5NTcwNDk2ODA3NTFjNwotQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJVGh1IE1heSA4IDE2OjAwOjU1IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogS2lsYXVlYTogQWRkIENPTkZJR19CT09UUF9TVUJORVRNQVNLIHRvIEtpbGF1ZWEgYm9hcmQgY29uZmlnCi0KLSAgICBXaGVuIHVzaW5nIGRoY3AvYm9vdHAgdGhlICJuZXRtYXNrIiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3Qgc2V0Ci0gICAgYmVjYXVzZSBDT05GSUdfQk9PVFBfU1VCTkVUTUFTSyBpcyBub3QgZGVmaW5lZC4gQnV0IHVzdWFsbHkgdGhpcyBpcwotICAgIGRlc2lyZWFibGUsIHNvIHRoZSBmb2xsb3dpbmcgcGF0Y2ggYWRkcyB0aGlzIHRoaXMgb3B0aW9uIHRvIHRoZSBib2FyZAotICAgIGNvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODY5ZDE0YjRjYzJlNDdkZTJkZGNiMTE3YmFkMDQwN2E0NDQzNjY4NAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDEwIDEwOjMwOjM2IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIE1ha2FsdSBkZWZjb25maWcgdG8gdXNlIGRldmljZS10cmVlIGJvb3RpbmcgYXMgZGVmYXVsdAotCi0gICAgVGhpcyBwYXRjaCByZXdvcmtzIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IG9uIE1ha2FsdS4gTm93ICJuZXRfbmZzIiBmb3IKLSAgICBleGFtcGxlIHVzZXMgdGhlIGRldmljZS10cmVlIHN0eWxlIGJvb3RpbmcgZm9ybWVybHkga25vdyBhcyAibmV0X25mc19mZHQiLgotICAgIEFsc28gdGhlIGFkZHJlc3NlcyBpbiBSQU0gd2VyZSBjaGFuZ2VkIGJlY2F1c2Ugb2YgdGhlIG5ldyBpbWFnZSBib290aW5nCi0gICAgc3VwcG9ydCwgd2hpY2ggY2hlY2sgZm9yIGltYWdlIG92ZXJ3cml0aW5nLiBTbyB0aGUgYWRkcmVzc2VzIG5lZWRlZCB0bwotICAgIGdldCBhZGp1c3RlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGYzNjEyYTdiMTk5Y2FiMzk0MmY2MGQ5YzEzOTJlYjM5ZDU4Y2M2OTkKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJnaWxsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDcgMTM6Mjg6MTYgMjAwOCAtMDUwMAotCi0gICAgUFBDOiBmaXggbWFwX3BoeXNtZW0gYnVpbGQgd2FybmluZwotCi0gICAgbWFwX3BoeXNtZW0gY3VycmVudGx5IGdlbmVyYXRlcyBhIHdhcm5pbmcgd2hlbiBDT05GSUdfUEhZU182NEJJVCBpcwotICAgIGVuYWJsZWQuICBUaGlzIHF1aWV0cyB0aGUgd2FybmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxCZWNreS5CcnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzZmMzI2NzVmNDAyOTIwMDJlZTFmZWQyNTJjMTgwYTQzMDIyZDJkNAotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmdpbGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgNyAxMzoyNDo1NyAyMDA4IC0wNTAwCi0KLSAgICBVcGRhdGUgcGNpIGNvZGUgdG8gdXNlIHBoeXNfYWRkcl90Ci0KLSAgICBQaHlzaWNhbCBhZGRycyBuZWVkIHRvIGJlIHJlcHJlc2VudGVkIGJ5IHBoeXNfYWRkcl90LCBub3QKLSAgICB1bnNpZ25lZCBsb25nLiAgT3RoZXJ3aXNlLCBzeXN0ZW1zIHRoYXQgdXNlIENPTkZJR19QSFlTXzY0QklUCi0gICAgYXJlIGdvaW5nIHRvIGZhaWwgbWlnaHRpbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkxYTYxNjc0MWZjMTI4Y2RiODhmMzliZGRjZDRkNzJmZTE3NDY2ZDAKLUF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTWF5IDggMjI6MzI6MjIgMjAwOCAtMDcwMAotCi0gICAgU3VwcG9ydCBsZWdhY3kgbXVsdGktdHlwZSBpbWFnZXMgd2l0aG91dCBGRFQgc2VjdGlvbi4KLQotICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyBsZWdhY3kgbXVsdGktdHlwZSBpbWFnZXMgY29udGFpbmluZyBvbmx5IGEgTGludXgga2VybmVsCi0gICAgYW5kIHJvb3QgZmlsZSBzeXN0ZW0gdG8gYmUgbG9hZGVkLCBtYWludGFpbmluZyBjb21wYXRpYmlsaXR5IHdpdGggcHJldmlvdXMKLSAgICB2ZXJzaW9ucyBvZiB1LWJvb3QuCi0KLSAgICBUaGlzIGlzIHJlcXVpcmVkIHdoZW4gdXNpbmcgb2xkIGltYWdlIGZpbGVzIHN1Y2ggYXMgYSBMaW51eCAyLjQga2VybmVsIC8KLSAgICBmaWxlc3lzdGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA4ODEwMzFkOTczMjc4M2I3YWVhZTIxOThmYzdlYjQ4MGFlODk3NGE2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDEwIDAwOjM4OjAyIDIwMDggKzAyMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTVlOWQ2YzljMDgxNjBiZTdlNWEzNmUwNGQxMjVjY2NlOTliODc3NAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1heSAxMCAwMDozNjowOSAyMDA4ICswMjAwCi0KLSAgICBwb3N0L2NwdS9wcGM0eHgvTWFrZWZpbGU6IGxpbmUgbGVuZ3RoIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjY2U5Y2ZkYWJjZjQxNmVjZDJhYWNjMzY4MWM5MWU1Mzc4Yzc1YTNkCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUaHUgTWF5IDggMjI6NTI6MDkgMjAwOCArMDIwMAotCi0gICAgRml4IEAgLT4gPGF0PiBzdWJzdGl0dXRpb24KLQotICAgIFdoZW4gYXBwbHlpbmcgdGhlIEFUOTFDQVA5IHBhdGNoZXMgdXBzdHJlYW0sIHNvbWV0aGluZyB0cmFuc2Zvcm1lZAotICAgIHRoZSAnQCcgY2hhcmFjdGVyIGludG8gdGhlICcgPGF0PiAnIHNlcXVlbmNlLgotCi0gICAgVGhlIHBhdGNoIGJlbG93IHJlc3RvcmVzIHRoZSBvcmlnaW5hbCBmb3JtIGluIGFsbCB0aGUgcGxhY2VzIHdoZXJlCi0gICAgaXQgaGFzIGJlZW4gbW9kaWZpZWQgKHRoZSBBVDkxQ0FQOSBmaWxlcywgdGhlIEFUOTFTQU05MjYwIGZpbGVzIHdoaWNoCi0gICAgd2VyZSBjb3BpZWQgZnJvbSBBVDkxQ0FQOSwgYW5kIGEgY291cGxlIG9mIG90aGVyIGZpbGVzIHdoZXJlIHRoZQotICAgICcgPGF0PiAnIHNlcXVlbmNlIHdhcyBwcmVzZW50KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCA5NjA2YjNjODFiM2M0N2ExZDU4NTE0ZTlhMjMyYzZmNDYxYTE3NTk3Ci1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUaHUgTWF5IDggMjI6NTI6MTAgMjAwOCArMDIwMAotCi0gICAgVXBkYXRlIG9yaWdpbiBhbmQgY29weXJpZ2h0IGluZm9ybWF0aW9uIGluIGFyY2gtYXQ5MXNhbTkgaGVhZGVyIGZpbGVzCi0KLSAgICBXaGVuIGRvaW5nIHRoZSBBVDkxQ0FQOS9BVDkxU0FNOSBwb3J0LCBhIG51bWJlciBvZiBoZWFkZXIgZmlsZXMgd2VyZQotICAgIGNvcGllZCBmcm9tIHRoZSBMaW51eCBrZXJuZWwgc291cmNlcy4gVGhpcyBwYXRjaCBleHBsaWNpdGx5IHNwZWNpZmllcwotICAgIHRoaXMgb3JpZ2luIGZvciBhbGwgdGhlIGNvcGllZCBoZWFkZXJzLCBhbmQgZm9yIHRob3NlIG1pc3NpbmcgY29weXJpZ2h0Ci0gICAgaW5mb3JtYXRpb24sIGFkZHMgaXQuCi0KLSAgICBBZGRpdGlvbmFseSwgdGhlIGhlYWRlciBmaWxlICdhdDkxc2FtOTI2eF9tYy5oJyBoYXMgYmVlbiBzdXBlcmNlZWRlZAotICAgIGluIHRoZSBsYXRlc3Qga2VybmVsIHNvdXJjZXMgYnkgJ2F0OTFzYW05X3NtYy5oJy4KLQotICAgIFRoZSBjb3B5cmlnaHQgaW5mb3JtYXRpb24gaGFzIGJlZW4gY29uZmlybWVkIGJ5IHRoZSBBVDkxIExpbnV4IGtlcm5lbAotICAgIG1haW50YWluZXIsIEFuZHJldyBWaWN0b3IgPGF2aWN0b3IuemFAZ21haWwuY29tPi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCBjZWI2YjRmYmUxZGNjNDBiYjY3MmVmODEzM2RkZjQ4MTNlOTdjYmIxCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglUaHUgTWF5IDggMjI6NTI6MTEgMjAwOCArMDIwMAotCi0gICAgQWRkIGNvcHlyaWdodCBpbmZvcm1hdGlvbiBpbiBBdG1lbCBib2FyZHMgcGFydGl0aW9uLmMKLQotICAgIFdoZW4gVWxmIGRpZCB0aGUgZGF0YWZsYXNoLmMgY2xlYW51cCwgaGUgZGlkbid0IGFkZCBoaXMgY29weXJpZ2h0IG9uCi0gICAgdGhlIG5ldyBjcmVhdGVkIGZpbGVzLiBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLQotY29tbWl0IDJhYjAyZmQ0NTZkOGVmOTJhZTlmNTQzOTYxOGQxZmE3Y2ExNmU1ZjMKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVGh1IE1heSA4IDEwOjA5OjI3IDIwMDggKzAyMDAKLQotICAgIG14MzFhZHM6IGZpeCAzMmtIeiBjbG9jayBoYW5kbGluZwotCi0gICAgQWNjb3JkaW5nIHRvIHNjaGVtYXRpY3MgYW5kIHRvIFJlZEJvb3Qgc291cmNlcywgdGhlIE1YMzFBRFMgdXNlcyBhIDMyNzY4SHoKLSAgICBvc2NpbGxhdG9yIGFzIGEgU0tJTCBzb3VyY2UuIEZpeCBwcmV2aW91c2x5IHdyb25nbHkgYXNzdW1lZCAzMjAwMEh6IHZhbHVlLgotICAgIEFsc28gZml4IGEgdHlwbyB3aGVuIHZlcmlmeWluZyBhIGp1bXBlciBjb25maWd1cmF0aW9uLiBXaGlsZSBhdCBpdCwgbWFrZQotICAgIHR3byBuZWVkbGVzc2x5IGdsb2JhbCBmdW5jdGlvbnMgc3RhdGljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgMWI1NjA1Y2E1N2ZiYjM2NGY0ZDc4ZWVlZTI4Yjk3NGVkODc1ZTg4OAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1heSA3IDEzOjEwOjA0IDIwMDggKzAyMDAKLQotICAgIEF2b2lkIGluaXRyZCBhbmQgbG9nYnVmZmVyIGFyZWEgb3ZlcmxhcHMKLQotICAgIEFkZCBsb2didWZmZXIgdG8gcmVzZXJ2ZWQgTE1CIGFyZWFzIHRvIHByZXZlbnQgaW5pdHJkIGFsbG9jYXRpb24KLSAgICBmcm9tIG92ZXJsYXBpbmcgd2l0aCBpdC4KLQotICAgIE1ha2Ugc3VyZSB0byB1c2UgY29ycmVjdCBsb2didWZmZXIgYmFzZSBhZGRyZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGM1OTUxOGUxNTk0OWIzNDAzZGY1YzViMGMyYzQ4ZWEwZTViZWEyNGIKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBNYXkgNyAxMzowODo1NCAyMDA4ICswMjAwCi0KLSAgICBwcGM6IENsZWFudXAgZ2V0X2VmZmVjdGl2ZV9tZW1zaXplKCkgdXNlCi0KLSAgICBSZW1vdmVkIGR1cGxpY2F0ZWQgZWZmZWN0aXZlIG1lbW9yeSBzaXplIGNhbGN1bGF0aW9uIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMjczYzM3ZDg0M2Q1YjU4MTA5MDM3ODAxNmNkMTJkZDljNTg2OTA3YgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1heSA3IDA5OjAzOjUzIDIwMDggKzAyMDAKLQotICAgIEZpeCBidWlsZCBlcnJvcnMgd2hlbiBDT05GSUdfTE9HQlVGRkVSIGFuZCBDT05GSUdfRklUIGFyZSBlbmFibGVkCi0KLSAgICBSZWNlbnQgbW9kaWZjYXRpb25zIHRvIExPR0JVRkZFUiBoYW5kbGluZyBjb2RlIHdlcmUgaW5jb3JyZWNseQotICAgIGludHJvZHVjZWQgdG8gZml0X2NoZWNrX2tlcm5lbCgpIHJvdXRpbmUgZHVyaW5nCi0gICAgIk1lcmdlIGJyYW5jaCAnbmV3LWltYWdlJyBvZiBnaXQ6Ly93d3cuZGVueC5kZS9naXQvdS1ib290LXRlc3RpbmciLAotICAgIGNvbW1pdCAyN2YzM2U5ZjQ1ZWY3Zjk2ODVjYmRjNjUwNjZhMTgyOGU4NWRkZTRmLgotCi0gICAgVGhpcyBwYXRjaCBjbGVhbnMgdXAgdGhpcyBtZXJnZSBpc3N1ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBiYzExNzU2ZGFmZjg5YTNkZTA5Y2E4MGFkYWM5NjJiODhjZjA2ZTZlCi1BdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci1EYXRlOglUdWUgTWF5IDYgMjA6MTY6MTUgMjAwOCAtMDcwMAotCi0gICAgUHJvcGFnYXRlIEVycm9yIFN0YXR1cyB0byB0aGUgU2hlbGwgb24gZndfcHJpbnRlbnYgRXJyb3JzCi0KLSAgICBDaGFuZ2VkIGltcGxlbWVudGF0aW9uIHN1Y2ggdGhhdCBmd19wcmludGVudiByZXR1cm5zIGZhaWx1cmUgc3RhdHVzCi0gICAgd2hlbiBvbmUgb3IgbW9yZSBzcGVjaWZpZWQgdmFyaWFibGVzIGRvIG5vdCBleGlzdCBvciB3aGVuIGluY29ycmVjdAotICAgIGNvbW1hbmQgc3ludGF4IGlzIHVzZWQuCi0KLSAgICBUaGlzIGFpZHMgc2NyaXB0aW5nIGZ3X3ByaW50ZW52IHN1Y2ggdGhhdCB0aGUgc2NyaXB0IGNhbiBrZXkgb2YgdGhlCi0gICAgcmV0dXJuIHN0YXR1cyByYXRoZXIgdGhhbiByZWx5aW5nIG9uIHN0YW5kYXJkIGVycm9yICJzY3JhcGluZyIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmM2I2ZDUyOGU0ZGQ3MTk2NDBhNGJmY2Q5NTRmNGU0YzdmNWRiMGQ2Ci1BdXRob3I6IEdyYW50IEVyaWNrc29uIDxnZXJpY2tzb25AbnVvdmF0aW9ucy5jb20+Ci1EYXRlOglUdWUgTWF5IDYgMTY6MTg6MDAgMjAwOCAtMDcwMAotCi0gICAgRml4IENvbXBpbGF0aW9uIEVycm9ycyB3aXRoICd0b29scy9lbnYvZndfcHJpbnRlbnYnCi0KLSAgICBJbiB0aGUgY3VycmVudCB0b3Atb2YtdHJlZSwgMS4zLjMuLXJjMiwgdGhlIG9wdGlvbmFsIHRvb2wKLSAgICAndG9vbHMvZW52L2Z3X3ByaW50ZW52JyBmYWlscyB0byBjb21waWxlIGZvciB0d28gcmVhc29uczoKLQotICAgIDEpIFRoZSBoZWFkZXIgd2F0Y2hkb2cuaCBjYW5ub3QgYmUgZm91bmQuCi0gICAgMikgVGhlIGhlYWRlciB6bGliLmggaXMgcGlja2VkIHVwIGZyb20gdGhlIHRvb2wgY2hhaW4gcmF0aGVyIHRoYW4gdGhlCi0gICAgICAgcHJvamVjdCBjYXVzaW5nIGEgcHJvdG90eXBlIGNvbmZsaWN0IGZvciBjcmMzMi4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcmVzc2VzIGJvdGggb2YgdGhlc2UgaXNzdWVzLgotCi0gICAgUGxhdGZvcm1zIFRlc3RlZCBPbjoKLSAgICAtIEFNQ0MgIktpbGF1ZWEiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotCi1jb21taXQgNTk3ZjZjMjZhMThiMzg5OTAzYTY0NjkyYmFjYmY5YTFjYTY5MzU1YgotQXV0aG9yOiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gTWF5IDUgMTA6MjI6NTMgMjAwOCAtMDUwMAotCi0gICAgRml4IHJlYWRsaW5lX2ludG9fYnVmZmVyKCkgd2l0aCBDT05GSUdfQ01ETElORV9FRElUSU5HIGJlZm9yZSByZWxvY2F0aW5nCi0KLSAgICBXaGVuIENPTkZJR19DTURMSU5FX0VESVRJTkcgaXMgZW5hYmxlZCwgcmVhZGxpbmVfaW50b19idWZmZXIoKSBkb2Vzbid0Ci0gICAgd29yayBiZWZvcmUgcmVsb2NhdGluZyB0byBSQU0gYmVjYXVzZSBjb21tYW5kIGhpc3RvcnkgaXMgd3JpdHRlbiBpbnRvCi0gICAgYSBnbG9iYWwgYXJyYXkgdGhhdCBpcyBub3Qgd3JpdGFibGUgYmVmb3JlIHJlbG9jYXRpb24uICBUaGlzIHBhdGNoCi0gICAgZGVmZXJzIHRvIHRoZSBuby1lZGl0aW5nIGFuZCBuby1oaXN0b3J5IGNvZGUgaW4gcmVhZGxpbmVfaW50b19idWZmZXIoKQotICAgIGlmIGl0IGlzIGNhbGxlZCBiZWZvcmUgcmVsb2NhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNzI2YzBmMWU1ZjEwOGRjY2VhMDUyOTY1MTIzYjk1ODM3ZDJiZDQwMgotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgNSAxNjoxMToyMiAyMDA4ICswMjAwCi0KLSAgICBjb3NtZXRpYzogQWRqdXN0IGNvZGluZyBzdHlsZSBmb3Igc3dpdGNoIHN0YXRlbWVudHMgdG8gYmUgY29uc2lzdGVudAotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA1NzRiMzE5NTEyYjEzZTEwODAwZjAwNDVlMzliOTkzZjRjYTI1ZTQyCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJTW9uIE1heSA1IDE2OjExOjIxIDIwMDggKzAyMDAKLQotICAgIEZpeCBkaXNrIHR5cGUgb3V0cHV0IGluIGRpc2svcGFydC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDA0NWI0ZDJkNzE2OGVmMDljNzM0OWRjZjZlY2ViZTc0MzJiNzQxNzEKLUF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZC5sdW5ndUB3aW5kcml2ZXIuY29tPgotRGF0ZToJTW9uIE1heSA1IDE0OjIwOjAzIDIwMDggKzAzMDAKLQotICAgIE1haWwgYWRkcmVzcyBjaGFuZ2UsIGRvY3VtZW50YXRpb24gbW9kaWZpZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJ2aWVyLmNvbT4KLQotY29tbWl0IDRkNDliMjgwMzhlMjgxOTA4OGU4MzU2YTc3MjEyZmM5NWE4OWNlNWEKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJU3VuIE1heSA0IDE1OjQyOjQxIDIwMDggKzAyMDAKLQotICAgIG1pY3JvYmxhemU6IFJlcGFyZSBpbnRjIGhhbmRsaW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA4NzhiM2IxZTE5M2U1NzBjYWYzZTk2YWQ4ZTMxZTU2MWY2OGQwMjg3Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTWF5IDQgMTU6MTc6NTIgMjAwOCArMDIwMAotCi0gICAgaW5jbHVkZS9naXRpZ25vcmU6IHVwZGF0ZSB0byBhbGwgYXJjaGl0ZWN0dXJlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDFkZjM2OGFlZDNiOGJjMjQwZmUxNTk1ZDI5MGIwZTkxYjIyOTYxZGEKLUF1dGhvcjogTWFyY2VsIFppc3dpbGVyIDxtYXJjZWxAemlzd2lsZXIuY29tPgotRGF0ZToJTW9uIE1heSA1IDAyOjEyOjA2IDIwMDggKzAyMDAKLQotICAgIGlkZTogUmVtb3ZlIHNwdXJpb3VzIHNlY29uZCBpbmNsdWRlIG9mIGlvLmgKLQotICAgIFJlbW92ZWQgdGhlIHNlY29uZCBpbmNsdWRlLCB3aXRoIGFsbCB0aGUgI2lmZGVmIGFyb3VuZCBhcyBzdWdnZXN0ZWQgYnkgV29sZmdhbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCA4ZmJjOTg1YmRhZDA5YjIzYjdlYjRkZjFkMmVhNTg5NjE5ZDhkYjRjCi1BdXRob3I6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgotRGF0ZToJVHVlIE1heSA2IDE2OjQ2OjM3IDIwMDggLTA0MDAKLQotICAgIEZpeCBzb21lIHR5cG9zCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRocmVlIHR5cG9zLgotICAgIFRoZSBmaXJzdCBpcyBhIHJlcGV0aXRpb24gb2YgQ09ORklHX0NNRF9CU1AuCi0gICAgVGhlIHNlY29uZCBtYWtlcyB0aGUgI2VuZGlmIGNvbW1lbnQgbWF0Y2ggaXRzICNpZi4KLSAgICBUaGUgdGhpcmQgaXMgYSBzcGVsbGluZyBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFkcmlhbiBGaWxpcGkgPGFkcmlhbi5maWxpcGlAZXVyb3RlY2guY29tPgotCi1jb21taXQgZTQxOWUxMmQwNGFlM2IyODBjOTlhODdhMmVhNGFkN2E0MDYyOGJjYgotQXV0aG9yOiBHcmFudCBFcmlja3NvbiA8Z2VyaWNrc29uQG51b3ZhdGlvbnMuY29tPgotRGF0ZToJU3VuIE1heSA0IDE2OjQ1OjAxIDIwMDggLTA3MDAKLQotICAgIFJlY29nbml6ZSAncG93ZXJwYycgQXMgYW4gQWxpYXMgZm9yIElIX0FSQ0hfUFBDCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIHJlY29nbml0aW9uIG9mICdwb3dlcnBjJyBhcyBhbiBhbGlhcyBmb3IgdGhlIFBvd2VyUEMKLSAgICBhcmNoaXRlY3R1cmUgdHlwZSBzaW5jZSBMaW51eCBpcyBhbHJlYWR5IHRyZW5kaW5nIGluIHRoYXQgZGlyZWN0aW9uLAotICAgIHByZWZlcnJpbmcgJ3Bvd2VycGMnIHRvICdwcGMnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgRXJpY2tzb24gPGdlcmlja3NvbkBudW92YXRpb25zLmNvbT4KLQotY29tbWl0IGY1YTI0MjU5MTkwYzM4OGMyNTI3YmRjNDlmZWUzNDU3N2Q4NjJjYzcKLUF1dGhvcjogV2hlYXRsZXkgVHJhdmlzIDxUcmF2aXMuV2hlYXRsZXlAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXkgMiAxMzozNToxNSAyMDA4IC0wNzAwCi0KLSAgICA3NDUwIGFuZCA4Nnh4IEwyIGNhY2hlIGludmFsaWRhdGUgYnVnIGNvcnJlY3Rpb25zCi0KLSAgICBUaGUgNzYxMCBhbmQgcmVsYXRlZCBwYXJ0cyBoYXZlIGFuIEwySVAgYml0IGluIHRoZSBMMkNSIHRoYXQgaXMKLSAgICBtb25pdG9yZWQgdG8gc2lnbmFsIHdoZW4gdGhlIEwyIGNhY2hlIGludmFsaWRhdGUgaXMgY29tcGxldGUgd2hlcmVhcyB0aGUKLSAgICA3NDUwIGFuZCByZWxhdGVkIHBhcnRzIHV0aWxpemUgTDJJIGZvciB0aGlzIHB1cnBvc2UuIEhvd2V2ZXIsIHRoZQotICAgIGN1cnJlbnQgY29kZSBkb2VzIG5vdCBhY2NvdW50IGZvciB0aGlzIGRpZmZlcmVuY2UuIEFkZGl0aW9uYWxseSB0aGUgODZ4eAotICAgIEwyIGNhY2hlIGludmFsaWRhdGUgY29kZSB1c2VkIGFuICJhbmRpIiBpbnN0cnVjdGlvbiB3aGVyZSBhbiAiYW5kaXMiCi0gICAgaW5zdHJ1Y3Rpb24gc2hvdWxkIGhhdmUgYmVlbiB1c2VkLgotCi0gICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMgYm90aCBvZiB0aGVzZSBidWdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHJhdmlzIFdoZWF0bGV5IDx0cmF2aXMud2hlYXRsZXlAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1CeTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRkMzFjZGM0NWQzNTkyYTU1NDVhNjQ5ZmI1YTI0YjQ1OGE0ZTRiNzIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgOSAxMDoxNjoxMyAyMDA4ICswMjAwCi0KLSAgICBBdm9pZCBpbmZpbml0ZSBsb29wICJHZW5lcmF0aW5nIGluY2x1ZGUvYXV0b2NvbmYubWsiCi0KLSAgICBGaXggYSBib2d1cyBjaXJjdWxhciBkZXBlbmRlbmN5IHRoYXQgY2F1c2VkIGFuIGluZmluaXRlIGxvb3Agb2YKLSAgICAiR2VuZXJhdGluZyBpbmNsdWRlL2F1dG9jb25mLm1rIiBhZ2FpbiBhbmQgYWdhaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNTY3ZmI4NTIxNzhkYmY1OTUyOWQ3MzAxNjIwYTNmMzczMmE0YjAyZAotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJVGh1IE1heSA4IDIyOjUyOjA5IDIwMDggKzAyMDAKLQotICAgIEZpeCBAIC0+IDxhdD4gc3Vic3RpdHV0aW9uCi0KLSAgICBXaGVuIGFwcGx5aW5nIHRoZSBBVDkxQ0FQOSBwYXRjaGVzIHVwc3RyZWFtLCBzb21ldGhpbmcgdHJhbnNmb3JtZWQKLSAgICB0aGUgJ0AnIGNoYXJhY3RlciBpbnRvIHRoZSAnIDxhdD4gJyBzZXF1ZW5jZS4KLQotICAgIFRoZSBwYXRjaCBiZWxvdyByZXN0b3JlcyB0aGUgb3JpZ2luYWwgZm9ybSBpbiBhbGwgdGhlIHBsYWNlcyB3aGVyZQotICAgIGl0IGhhcyBiZWVuIG1vZGlmaWVkICh0aGUgQVQ5MUNBUDkgZmlsZXMsIHRoZSBBVDkxU0FNOTI2MCBmaWxlcyB3aGljaAotICAgIHdlcmUgY29waWVkIGZyb20gQVQ5MUNBUDksIGFuZCBhIGNvdXBsZSBvZiBvdGhlciBmaWxlcyB3aGVyZSB0aGUKLSAgICAnIDxhdD4gJyBzZXF1ZW5jZSB3YXMgcHJlc2VudCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA3M2NjYjM0MTBhMDc4NTU5M2NkYTdhZWU0NTVkZmM1MWY3OTBlMjgxCi1BdXRob3I6IEdhcnkgSmVubmVqb2huIDxnYXJ5Lmplbm5lam9obkBmcmVlbmV0LmRlPgotRGF0ZToJTW9uIEFwciAyOCAxNDowNDozMiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCB0aGUgSGFycmlzIFFVQUQxMDBIRCBBTUNDIDQwNUVQLWJhc2VkIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlZjI2NDI2MjVjYmZiMWMzNjk1ZTM0NzhkMDhhZTUxNTA1MmE0OTUwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBNYXkgOCAxMToxMDo0NiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEtpbGF1ZWE6IEZpeCBpbmNvcnJlY3QgRlBHQSBGSUZPIGFkZHJlc3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGEwMGVjY2ZlYmM5NTRhZDk0ODUxNjFlZmVjYTdkOWFhZjYyNmQ1MzAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1heSA4IDExOjA1OjE1IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIGZkdCBzdXBwb3J0IHRvIGFsbCByZW1haW5pbmcgQU1DQyBQUEM0eHggZXZhbCBib2FyZHMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBmZHQgKGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSkgc3VwcG9ydCB0byBhbGwgcmVtYWluaW5nIEFNQ0MKLSAgICBldmFsIGJvYXJkcy4gTW9zdCBuZXdlciBib2FyZHMgYWxyZWFkeSBzdXBwb3J0IGRldmljZSB0cmVlLiBXaXRoIHRoaXMgcGF0Y2gsCi0gICAgYWxsIEFNQ0MgYm9hcmRzIG5vdyBlbmFibGUgZGV2aWNlIHRyZWUgcGFzc2luZyBmcm9tIFUtQm9vdCB0byBMaW51eAotICAgIGFyY2gvcG93ZXJwYyBrZXJuZWxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2I1ZDg4Yjk2MTFlMGMzNWM1MzU0M2FkM2I0YWI5OWZhODIyMDNlMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWF5IDggMTE6MDE6MDkgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgd2VhayBkZWZhdWx0IGZ0X2JvYXJkX3NldHVwKCkgcm91dGluZQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgZGVmYXVsdCBmdF9ib2FyZF9zZXR1cCgpIHJvdXRpbmUgdG8gdGhlIDR4eCBmZHQgY29kZS4KLSAgICBUaGlzIHJvdXRpbmUgaXMgZGVmaW5lZCBhcyB3ZWFrIGFuZCBjYW4gYmUgb3ZlcndyaXR0ZW4gYnkgYSBib2FyZCBzcGVjaWZpYwotICAgIG9uZSBpZiBuZWVkZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkMWMxYmE4NWM3OTE1MDUzYWRmNmE4ZDE0YTA4YWM2ZmNiNzUwZDAxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBNYXkgOCAxMDo0ODo1OCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IGFjYWRpYTogQWRkIGZkdCBzdXBwb3J0IGFuZCBmaXggc2VjdGlvbiBvdmVybGFwIHByb2JsZW0KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBmZHQgKGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSkgc3VwcG9ydCB0byB0aGUgQU1DQwotICAgIEFjYWRpYSBldmFsIGJvYXJkLiBUaGlzIGluY3JlYXNlcyB0aGUgaW1hZ2Ugc2l6ZSBhbmQgaXQgZG9lc24ndAotICAgIGZpdCBhbnltb3JlIGludG8gMjU2a0J5dGUuIFNpbmNlIHdlIGRpZG4ndCB3YW50IHRvIHJlbW92ZSBmZWF0dXJlcwotICAgIGZyb20gdGhlIGNvbmZpZ3VyYXRpb24sIHdlIGRlY2lkZWQgdG8gaW5jcmVhc2UgdGhlIFUtQm9vdCBpbWFnZSBzaXplCi0gICAgKGFkZCBvbmUgZmxhc2ggc2VjdG9yKS4KLQotICAgIEFsc28gY2hhbmdlZCB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBkZWZpbml0aW9uIHRvIG1ha2UgaXQKLSAgICBpbmRlcGVuZGVudCBvZiBzdWNoIGNoYW5nZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0YWRiMzAyM2RlNzViYzE1MGYwODhjODkzNWRiMzQwOTMwYWQzOGM4Ci1BdXRob3I6IElyYSBTbnlkZXIgPGl3c0BvdnJvLmNhbHRlY2guZWR1PgotRGF0ZToJVHVlIEFwciAyOSAxMToxODo1NCAyMDA4IC0wNzAwCi0KLSAgICBwcGM0eHg6IEFkZCBkZXZpY2UgdHJlZSBzdXBwb3J0IHRvIEFNQ0MgWW9zZW1pdGUKLQotICAgIEFkZCBzdXBwb3J0IGZvciBib290aW5nIHdpdGggYSBkZXZpY2UgdHJlZSBibG9iLiBUaGlzIGlzIG5lZWRlZCB0byBib290Ci0gICAgQVJDSD1wb3dlcnBjIGtlcm5lbHMuIEFsc28gYWRkIHN1cHBvcnQgZm9yIHNldHRpbmcgdGhlIGV0aDAgbWFjIGFkZHJlc3MKLSAgICB2aWEgdGhlIGV0aGFkZHIgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJcmEgVy4gU255ZGVyIDxpd3NAb3Zyby5jYWx0ZWNoLmVkdT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiOWJiZWZjZTFhNjUzZWEzNWY3NGE2NmVjMTE3Y2RkYTJlMDQzYTRiCi1BdXRob3I6IERhdmUgTWl0Y2hlbGwgPGRtaXRjaGVsbEBhbWNjLmNvbT4KLURhdGU6CVdlZCBNYXkgNyAwOTowMDoyMyAyMDA4IC0wNzAwCi0KLSAgICBwcGM0eHg6IEZpeCB0eXBvcyBpbiA0NjBHVC9FWCBGQkRWIGFycmF5Ci0KLSAgICBDb3JyZWN0ZWQgdHdvIHR5cG9zIGluIHRoZSA0NjBHVC9FWCBGQkRWIGFycmF5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBNaXRjaGVsbCA8ZG1pdGNoZWxsQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDY2ZjVmYTkyNjM2MjkyNzFlZGM4NjE3OGIxZjIyNGUzYzlhYWIyYjMKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1heSA3IDE2OjU0OjMxIDIwMDggLTA1MDAKLQotICAgIDg1eHg6IExpbWl0IENQVTIgd29ya2Fyb3VuZCB0byBwYXJ0cyB0aGF0IGhhdmUgdGhlIGVycmF0YQotCi0gICAgU2lnbmVkLW9mZi1ieTogRWJvbnkgWmh1IDxlYm9ueS56aHVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhNWZlNTE0ZThhY2U1NjQzMDBkMmMxZDczODQ2ZGRmZjQ5NjU0MjQzCi1BdXRob3I6IExlZSBOaXBwZXIgPGxlZS5uaXBwZXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBcHIgMjUgMTU6NDQ6NDUgMjAwOCAtMDUwMAotCi0gICAgbXBjODN4eDogc3lzdGVtIHBlcmZvcm1hbmNlIHNldHRpbmdzIGZvciBNUEM4MzQ5RU1EUy4KLQotICAgIFRoZXNlIHNhbWUgc2V0dGluZ3MgYXJlIHVzZWQgb24gTVBDODM0OUlUWCwgYW5kCi0gICAgaW1wcm92ZSBwZXJmb3JtYW5jZSBvbiBNUEM4MzQ5RU1EUy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExlZSBOaXBwZXIgPGxlZS5uaXBwZXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDkzODdkYmE5MTBlNDg1NjQwYjU3NWU5MjBlZTQ2M2I3ZTYxMWRjMwotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJVHVlIE1heSA2IDEzOjIyOjUyIDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBjcHUvbWlwcy9jYWNoZS5TOiBGaXggYnVpbGQgd2FybmluZwotCi0gICAgU29tZSBvbGQgR05VIGFzc2VtYmxlcnMsIHN1Y2ggYXMgdjIuMTQgKEVMREsgMy4xLjEpLCB2Mi4xNiAoRUxESyA0LjEuMCksCi0gICAgd2FybnMgaWxsZWdhbCBnbG9iYWwgc3ltYm9sIHJlZmVyZW5jZXMgYnkgYmFsIChhbmQgamFsIGFsc28pIGluc3RydWN0aW9uLgotICAgIFRoaXMgZG9lcyBub3QgaGFwcGVuIHdpdGggdGhlIGxhdGVzdCBiaW51dGlscyB2Mi4xOC4KLQotICAgIEhlcmUncyBhbiBleGFtcGxlIG9uIGd0aDJfY29uZmlnOgotCi0gICAgbWlwc180S0MtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4OTAwMDAwMDAgLUkvaG9tZS9za3VyaWJheS9kZXZlbC91LWJvb3QuZ2l0L2luY2x1ZGUgLWZuby1idWlsdGluIC1mZnJlZXN0YW5kaW5nIC1ub3N0ZGluYyAtaXN5Ci0gICAgc3RlbSAvb3B0L2VsZGszMTEvdXNyL2Jpbi8uLi9saWIvZ2NjLWxpYi9taXBzLWxpbnV4LzMuMy4zL2luY2x1ZGUgLXBpcGUgIC1EQ09ORklHX01JUFMgLURfX01JUFNfXyAtRyAwIC1tYWJpY2FsbHMgLWZwaWMgLXBpcGUgLW1zb2Z0LWZsb2F0IC1tYXJjaD00a2MgLW10dW5lPTRrCi0gICAgYyAtRUIgLWMgLW8gY2FjaGUubyBjYWNoZS5TCi0gICAgY2FjaGUuUzogQXNzZW1ibGVyIG1lc3NhZ2VzOgotICAgIGNhY2hlLlM6MjQzOiBXYXJuaW5nOiBQcmV0ZW5kaW5nIGdsb2JhbCBzeW1ib2wgdXNlZCBhcyBicmFuY2ggdGFyZ2V0IGlzIGxvY2FsLgotICAgIGNhY2hlLlM6MjUwOiBXYXJuaW5nOiBQcmV0ZW5kaW5nIGdsb2JhbCBzeW1ib2wgdXNlZCBhcyBicmFuY2ggdGFyZ2V0IGlzIGxvY2FsLgotCi0gICAgSW4gcHJpbmNpcGxlLCBnYXMgbWlnaHQgYmUgc2Vuc2l0aXZlIHRvIGdsb2JhbCBzeW1ib2wgcmVmZXJlbmNlcyBpbiBQSUMKLSAgICBjb2RlIGJlY2F1c2UgdGhleSBzaG91bGQgYmUgcHJvY2Vzc2VkIHRocm91Z2ggR09UIChnbG9iYWwgb2Zmc2V0IHRhYmxlKS4KLSAgICBCdXQgaWYgYGJhbCcgaW5zdHJ1Y3Rpb24gaXMgdXNlZCwgaXQgcmVzdWx0cyBpbiBQQy1iYXNlZCBvZmZzZXQganVtcC4KLSAgICBUaGlzIGlzIHRoZSBjYXVzZSBvZiB0aGlzIHdhcm5pbmcuCi0KLSAgICBJbiBwcmFjdGljZSwgd2Uga25vdyBpdCBkb2Vzbid0IG1hdHRlciB3aGV0aGVyIFBDLWJhc2VkIHJlZmVyZW5jZSBvciBHT1QtCi0gICAgYmFzZWQuIEFzIGZvciB0aGlzIGNhc2UsIGJvdGggd2lsbCB3b3JrIGJlZm9yZS9hZnRlciByZWxvY2F0aW9uLiBCdXQgbGV0J3MKLSAgICBmaXggdGhlIGNvZGUuCi0KLSAgICBUaGlzIHBhdGNoIGV4cGxpY2l0bHkgc2V0cyB1cCBhIHRhcmdldCBhZGRyZXNzLCB0aGVuIGp1bXAgdGhlcmUuCi0gICAgSGVyZSdzIGFuIGV4YW1wbGUgb2YgZGlzYXNzZW1ibGVkIGNvZGUgd2l0aC93aXRob3V0IHRoaXMgcGF0Y2guCi0KLSAgICAgOTAwMDA2Njg6CSAgICAgMTQ4NWZmZWYJICAgICBibmUgICAgIGEwLGExLDkwMDAwNjI4IDxtaXBzX2NhY2hlX3Jlc2V0KzB4MjA+Ci0gICAgIDkwMDAwNjZjOgkgICAgIGFjODBmZmZjCSAgICAgc3cgICAgICB6ZXJvLC00KGEwKQotICAgICA5MDAwMDY3MDoJICAgICAwMTQwMjgyMQkgICAgIG1vdmUgICAgYTEsdDIKLSAgICAtOTAwMDA2NzQ6CSAgICAgMDQxMWZmYmEJICAgICBiYWwgICAgIDkwMDAwNTYwIDxtaXBzX2luaXRfaWNhY2hlPgotICAgIC05MDAwMDY3ODoJICAgICAwMTgwMzAyMQkgICAgIG1vdmUgICAgYTIsdDQKLSAgICAtOTAwMDA2N2M6CSAgICAgMDE2MDI4MjEJICAgICBtb3ZlICAgIGExLHQzCi0gICAgLTkwMDAwNjgwOgkgICAgIDA0MTFmZmNjCSAgICAgYmFsICAgICA5MDAwMDViNCA8bWlwc19pbml0X2RjYWNoZT4KLSAgICAtOTAwMDA2ODQ6CSAgICAgMDFhMDMwMjEJICAgICBtb3ZlICAgIGEyLHQ1Ci0gICAgLTkwMDAwNjg4OgkgICAgIDAzMDAwMDA4CSAgICAganIgICAgICB0OAotICAgIC05MDAwMDY4YzoJICAgICAwMDAwMDAwMAkgICAgIG5vcAotICAgICs5MDAwMDY3NDoJICAgICAwMTgwMzAyMQkgICAgIG1vdmUgICAgYTIsdDQKLSAgICArOTAwMDA2Nzg6CSAgICAgOGY4ZjgzZWMJICAgICBsdyAgICAgIHQ3LC0zMTc2NChncCkKLSAgICArOTAwMDA2N2M6CSAgICAgMDFlMGY4MDkJICAgICBqYWxyICAgIHQ3Ci0gICAgKzkwMDAwNjgwOgkgICAgIDAwMDAwMDAwCSAgICAgbm9wCi0gICAgKzkwMDAwNjg0OgkgICAgIDAxNjAyODIxCSAgICAgbW92ZSAgICBhMSx0MwotICAgICs5MDAwMDY4ODoJICAgICAwMWEwMzAyMQkgICAgIG1vdmUgICAgYTIsdDUKLSAgICArOTAwMDA2OGM6CSAgICAgOGY4ZjgxZTAJICAgICBsdyAgICAgIHQ3LC0zMjI4OChncCkKLSAgICArOTAwMDA2OTA6CSAgICAgMDFlMGY4MDkJICAgICBqYWxyICAgIHQ3Ci0gICAgKzkwMDAwNjk0OgkgICAgIDAwMDAwMDAwCSAgICAgbm9wCi0gICAgKzkwMDAwNjk4OgkgICAgIDAzMDAwMDA4CSAgICAganIgICAgICB0OAotICAgICs5MDAwMDY5YzoJICAgICAwMDAwMDAwMAkgICAgIG5vcAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDBmOGM2MmExNGI1MjNjNTY4NzRlYmNiNjdjMWExNmM5OWFhZDQ4YjMKLUF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZC5sdW5ndUB3aW5kcml2ZXIuY29tPgotRGF0ZToJTW9uIE1heSA1IDE0OjA0OjAwIDIwMDggKzAzMDAKLQotICAgIEFsbG93IGJ1aWxkaW5nIG1pcHMgdmVyc2lvbnMgd2l0aCBFTERLIDMuMS4xCi0KLSAgICAuZ3B3b3JkIHdvcmtzIG9ubHkgd2l0aCBsb2NhbCBzeW1ib2xzIG9uIGNlcnRhaW4gYmludXRpbHMgdmVyc2lvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWQubHVuZ3VAd2luZHJ2aWVyLmNvbT4KLQotY29tbWl0IDEyYTY3YTllNTFmNmIzZWMyNmNiMGYwNzdmYjU2ODVhNDQ3YzM1OWQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgNSAxMjo1MjozNiAyMDA4ICswMjAwCi0KLSAgICBNQUtFQUxMOiBhZGQgaW5rYTR4MCBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGI4M2RjYzEzYWU3YjJkYWIzOTRiZmVmNmY2OTk3NTBkMTE0OTBlZTIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXkgNCAyMTozNDoyMyAyMDA4ICswMjAwCi0KLSAgICBrYjkyMDIgYm9hcmQ6IGZpeCBidWlsZCBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZhZGY2MWRjNGNiNWM1M2EyZGY5OTBjYmM4ZGYyYmNlYWNiZmQ4NjkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXkgNCAxMjoxMDozMyAyMDA4ICswMjAwCi0KLSAgICBQcmVwYXJlIGZvciB2MS4zLjMtcmMzCi0KLSAgICBVcGRhdGUgQ2hOQUdFTE9HLCBtaW5vciB3aGl0ZSBzcGFjZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDdjMDc3M2ZkZTYxMDBiNjFiZTI1NThjYjVkOGM0NDJhMzE5NGFlY2IKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXkgNCAwMDozNToxNSAyMDA4ICswMjAwCi0KLSAgICBkcml2ZXJzL25ldC90c2VjLmM6IEZpeCB0eXBvLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGFhNzM3OTQ1ZTZmMzdhNWRlNWRiYWQ1NTBhNzY5NGUwY2IyYTgxMjAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJRnJpIE1heSAyIDIxOjQ1OjEyIDIwMDggLTA0MDAKLQotICAgIHZlcnNpb25fYXV0b2dlbmVyYXRlZC5oOiB1c2UgcHJpbnRmIHJhdGhlciB0aGFuIGVjaG8gLW4KLQotICAgIFNvbWUgc3lzdGVtcyBhcmUgZHVtYiBhbmQgZG8gbm90IGltcGxlbWVudCB0aGUgLW4gZmxhZyB0byBlY2hvIChsaWtlIE9TIFgpLgotICAgIENvbnZlcnQgdGhlIE1ha2VmaWxlIHRvIHVzZSBwcmludGYgYXMgdGhpcyBzaG91bGQgd29yayBldmVyeXdoZXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0YWNjMmExMDhhZDBhNjY5MTY1OTI0NzA0YTZjYjA4M2Y5MTM4MjQyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CUZyaSBNYXkgMiAxODoxNzo1MCAyMDA4IC0wNDAwCi0KLSAgICBmaXggYnVpbGRpbmcgd2hlbiBzYXZlZW52IGlzIGRpc2FibGVkIGluIHNvbWUgc2V0dXBzCi0KLSAgICBJZiB5b3UgZW5hYmxlIGVudmlyb25tZW50IGluIHRoZSBmbGFzaCwgYnV0IGRpc2FibGUgdGhlIGVtYmVkZGVkCi0gICAgb3B0aW9uLCBhbmQgeW91IGRpc2FibGUgdGhlIHNhdmVlbnYgY29tbWFuZCwgdGhlbiB0aGUgI2lmIG5lc3RlZAotICAgIGxvZ2ljIHdpbGwgdHJpZ2dlciBhIGNvbXBpbGUgZmFpbHVyZToKLSAgICBlbnZfZmxhc2guYzogSW4gZnVuY3Rpb24gJ2Vudl9yZWxvY2F0ZV9zcGVjJzoKLSAgICBlbnZfZmxhc2guYzozOTk6IGVycm9yOiAnZmxhc2hfYWRkcicgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0gICAgVGhlIGZpeCBpcyB0byBhZGQgQ01EX1NBVkVFTlYgaWZkZWYgcHJvdGVjdGlvbiBsaWtlIGV2ZXJ5d2hlcmUgZWxzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGNjZjFhZDUzNWFlMWMwZGMyZDQ2NjIzNWM2NjhhZGJkZmUzYTU1YjcKLUF1dGhvcjogSmVyZW15IE1jTmljb2xsIDxqZXJlbXkubWNuaWNvbGxAd2luZHJpdmVyLmNvbT4KLURhdGU6CUZyaSBNYXkgMiAxNjoxMDowNCAyMDA4IC0wNDAwCi0KLSAgICBTQkM4NTQ4OiBmaXggYWRkcmVzcyBtYXNrIHRvIGFsbG93IDY0TSBmbGFzaAotCi0gICAgRml4IGluY29ycmVjdCBtYXNrIHRvIGVuYWJsZSBhbGwgNjRNQiBvZiBvbmJvYXJkIGZsYXNoLgotICAgIFByZXZpb3VzbHkgVS1Cb290IGluY29ycmVjdGx5IG1hcHBlZCBvbmx5IDhNQiBvZiBmbGFzaCwgdGhpcwotICAgIHBhdGNoIGNvcnJlY3RseSBtYXBzIGFsbCB0aGUgYXZhaWxhYmxlIGZsYXNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVyZW15IE1jTmljb2xsIDxqZXJlbXkubWNuaWNvbGxAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IDM2NDgwODVjNDY0YzhjMjJlZjc2ZmFiMDA2Y2E0MzQ0ZDM3OTYxMjQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBNYXkgMiAxOTo0ODo1NiAyMDA4ICswMjAwCi0KLSAgICBxZW11X21pcHM6IGFkZCBSRUFETUUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2ZmRkMDAyNjg5MTkwYTAwMjJjN2IzZGJhYjM3ZmNiYTcyNDU4MGNlCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CUZyaSBNYXkgMiAwMjozNTo1OSAyMDA4ICswMjAwCi0KLSAgICBGaXggbWlzc3BlbGxlZCBjb21tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCBmYTk1NmZkZTYwYjdlYzRkZDY2YmQ2MmY5OTEwZmQzNDFiNTA0OWExCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVRodSBNYXkgMSAwNDoxMzowNSAyMDA4IC0wNDAwCi0KLSAgICBta2ltYWdlOiBtYWtlIG1tYXAoKSBjaGVja3MgY29uc2lzdGVudAotCi0gICAgVGhlIG1tYXAoKSByZWxhdGVkIGNvZGUgaXMgZnVsbCBvZiBpbmNvbnNpc3RlbnQgY2FzdHMvY29uc3RhbnRzIHdoZW4KLSAgICBpdCBjb21lcyB0byBlcnJvciBjaGVja2luZywgYW5kIG1heSBicmVhayB3aGVuIGJ1aWxkaW5nIG9uIHNvbWUKLSAgICBzeXN0ZW1zIChsaWtlIG9uZXMgdGhhdCBkbyBub3QgaW1wbGljaXRseSBkZWZpbmUgdGhlIGNhZGRyX3QgdHlwZSkuCi0gICAgTGV0J3MganVzdCBhdm9pZCB0aGUgd2hvbGUgbWVzcyBieSB3cml0aW5nIHRoZSBjb2RlIG5pY2UgYW5kIGNsZWFuIGluCi0gICAgdGhlIGZpcnN0IHBsYWNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOGU5MGNkMDQ0N2EwZjBjY2Y1MjllZjg2ZjBlNmI1NjE4N2QzYjgyYQotQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci1EYXRlOglUaHUgTWF5IDEgMDk6MDU6MzQgMjAwOCArMDIwMAotCi0gICAgRml4IGRlZmluZWQgYnV0IG5vdCB1c2VkIGJ1aWxkIHdhcm5pbmcKLQotICAgIC0gd2FybmluZzogJ3Nyb20nIGRlZmluZWQgYnV0IG5vdCB1c2VkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCBiNzExOTBmMzI1MGFhZmZjYzgxYzM1ZjZjZmQzNDk4Y2I3YzQ4MDEzCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CVRodSBNYXkgMSAwOTowNToyNiAyMDA4ICswMjAwCi0KLSAgICBGaXggaW1wbGljaXQgZGVjbGFyYXRpb24gYnVpbGQgd2FybmluZ3MKLQotICAgIC0gd2FybmluZzogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24g4oCYc2VyaWFsX2luaXRpYWxpemXigJkKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLQotY29tbWl0IDlhY2RlMTI5Y2MzZjljMWIzYmMxMWE4MjE0ODBkZDQ0Njc3NGQ2MTgKLUF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotRGF0ZToJVHVlIEFwciAyOSAxOToxODozMiAyMDA4ICswMjAwCi0KLSAgICBUU0VDOiBhZGQgY29uZmlnIG9wdGlvbnMgZm9yIFZTQzg2MDEgUkdNSUkgUEhZCi0KLSAgICBUaGUgVml0ZXNzZSBWU0M4NjAxIFJHTUlJIFBIWSBoYXMgaW50ZXJuYWwgZGVsYXkgZm9yIGJvdGggUngKLSAgICBhbmQgVHggY2xvY2sgbGluZXMuIFRoZXkgYXJlIGNvbmZpZ3VyZWQgdXNpbmcgMiBiaXRzIGluIGV4dGVuZGVkCi0gICAgcmVnaXN0ZXIgMHgxNy4KLSAgICBUaGVyZWZvcmUgQ0ZHX1ZTQzg2MDFfU0tFV19UWCBhbmQgQ0ZHX1ZTQzg2MDFfU0tFV19SWCBoYXZlCi0gICAgYmVlbiBpbnRyb2R1Y2VkIHdpdGggdmFsaWQgdmFsdWVzIDAtMyBnaXZpbmcgMC4wLCAxLjQsMS43IGFuZCAyLjBucyBkZWxheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotICAgIC0tCi0KLSAgICAgZHJpdmVycy9uZXQvdHNlYy5jIHwgICAgNiArKysrKysKLSAgICAgZHJpdmVycy9uZXQvdHNlYy5oIHwgICAgMyArKysKLSAgICAgMiBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDAgZGVsZXRpb25zKC0pCi0KLWNvbW1pdCBiZDk4ZWU2MGRmNDNlZTZkZDZmNWViZTMyYzY3ZDAzZTkwNTEzZmY4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDMgMjM6MDc6MTUgMjAwOCArMDIwMAotCi0gICAgUmV2ZXJ0ICJDb2xkRmlyZTogR2V0IGluZm9ybWF0aW9uIGZyb20gdGhlIGNvcnJlY3QgR0NDIgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCBiNzE2NmUwNWE1MTNjMDgwNmI2M2I5ZGZiNmYxZDc3NjQ1Y2VkZTJhCi0gICAgKHJlcGxhY2VkIGJ5IGNvbW1pdCBjNGU1ZjUyYTU4ZDI3OGVlYmI4N2Y0NzZlMzUzOTcyYzVkYWNlYTQwKS4KLQotY29tbWl0IGM0ZTVmNTJhNThkMjc4ZWViYjg3ZjQ3NmUzNTM5NzJjNWRhY2VhNDAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXkgMyAyMjoyNTowMCAyMDA4ICswMjAwCi0KLSAgICBjb25maWcubWs6IHVzZSBjb3JyZWN0IChjcm9zcykgY29tcGlsZXIKLQotICAgIFNvbWUgY29uZmlnLm1rIGZpbGVzIHJlZmVyZW5jZSAkKENDKSB0byB0ZXN0IGZvciBzcGVjaWZpYyB0b29sIGNoYWluCi0gICAgZmVhdHVyZXMsIHNvIG1ha2Ugc3VyZSAkKENDKSBnZXRzIHNldCBiZWZvcmUgaW5jbHVkaW5nIGFueSBzdWNoCi0gICAgY29uZmlnIGZpbGVzLgotCi0gICAgVGhpcyBwYXRjaCByZXBsYWNlcyBjb21taXQgYjcxNjZlMDVhNSAoIkNvbGRGaXJlOiBHZXQgaW5mb3JtYXRpb24gZnJvbQotICAgIHRoZSBjb3JyZWN0IEdDQyIpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDI3YzM4Njg5ZDBjZmRlMGU0NDQyMzkzNDVmOTdiNWVlY2M5ZjQwNjcKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBNYXkgMSAwMjoxMzo0NCAyMDA4ICswMjAwCi0KLSAgICBweGE6IGZpeCBwcmV2aW91cyBkZWZpbml0aW9uIG9uIGNwdSBpbml0Ci0KLSAgICBzdGFydC5TOjE4MzoxOiB3YXJuaW5nOiAiSUNNUiIgcmVkZWZpbmVkCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0YXJ0LlM6MzM6Ci0gICAgaW5jbHVkZS9hc20vYXJjaC9weGEtcmVncy5oOjkzNToxOiB3YXJuaW5nOiB0aGlzIGlzIHRoZSBsb2NhdGlvbiBvZiB0aGUgcHJldmlvdXMgZGVmaW5pdGlvbgotICAgIHN0YXJ0LlM6MTg3OjE6IHdhcm5pbmc6ICJSQ1NSIiByZWRlZmluZWQKLSAgICAuLi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2ZDEyZTY5N2RlNzk0ZDcwMDc2N2YyMmY5NTBlMzAyNmNjZjRkYWY2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUaHUgTWF5IDEgMDI6MTM6NDMgMjAwOCArMDIwMAotCi0gICAgcHhhOiBmaXggcGNtY2lhIG9wZXJhdGlvbiBvbiAnaScgbWF5IGJlIHVuZGVmaW5lZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNGQ3N2Y1MTAyZGZlYWEzNmNkNThkOWE5ZjA4M2JkMmNjNDkxNTI2ZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEFwciAzMCAxNjoyNDozNSAyMDA4IC0wNTAwCi0KLSAgICBNUEM4NjEwSFBDRDogRHJvcCAtTzIgZnJvbSB0aGUgYnVpbGQgZmxhZ3MKLQotICAgIE1ha2UgdGhlIGZsYWdzIHVzZSAtT3MgbGlrZSBhbGwgb3RoZXIgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMDA3MmI3OGJlMmI0MWU1YTBjYTNkZGMzOTMzNTU3NGRjMmU4NTViZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDMwIDE1OjUwOjM5IDIwMDggKzAyMDAKLQotICAgIFJUQzogRml4IG1vbnRoIG9mZnNldCBieSBvbmUgcHJvYmxlbSBpbiBNNDFUNjIgUlRDIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gd2l0aCB0aGUgbW9udGggYmVpbmcgcmVhZCBhbmQgd3JpdHRlbgotICAgIGluY29ycmVjdGx5IChvZmZzZXQgYnkgb25lKS4gVGhpcyBvbmx5IGdldHMgdmlzaWJsZSBieSBhbHNvIHVzaW5nCi0gICAgdGhlIExpbnV4IGRyaXZlciAocnRjLW00MXQ4MCkuCi0KLSAgICBUZXN0ZWQgb24gQU1DQyBDYW55b25sYW5kcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE0MWJhMWNhZDhlNjU5OGEyNDY2ZTdlMjk3NmM2YTEyMjg1ZGY2MTkKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVNhdCBNYXkgMyAxMzo1MTo0NCAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gY3B1L21pcHMvY29uZmlnLm1rOiBGaXggR05VIGFzc2VtYmxlciBtaW5vciB2ZXJzaW9uIHBpY2tlcgotCi0gICAgQ3VycmVudCB0cmljayB0byBwaWNrIHVwIEdOVSBhc3NlbWJsZXIgbWlub3IgdmVyc2lvbiB1c2VzIGEgZG90KC4pIGFzIGEKLSAgICBkZWxpbWl0ZXIsIGFuZCB0YWtlIHRoZSBzZWNvbmQgZmllbGQgdG8gb2J0YWluIG1pbm9yIHZlcnNpb24gbnVtYmVyLiBCdXQKLSAgICBhcyBjYW4gYmUgZXhwZWN0ZWQsIHRoaXMgZG9lc24ndCB3b3JrIHdpdGggYSB2ZXJzaW9uIHN0cmluZyB3aGljaCBoYXMKLSAgICBkb3RzIG1vcmUgdGhhbiBuZWVkcy4KLQotICAgIEhlcmUncyBhbiBleGFtcGxlOgotCi0gICAgJCBtaXBzLWxpbnV4LWdudS1hcyAtLXZlcnNpb24gfCBncmVwICdHTlUgYXNzZW1ibGVyJwotICAgIEdOVSBhc3NlbWJsZXIgKFNvdXJjZXJ5IEcrKyBMaXRlIDQuMi0xMjkpIDIuMTguNTAuMjAwODAyMTUKLSAgICAkIG1pcHMtbGludXgtZ251LWFzIC0tdmVyc2lvbiB8IGdyZXAgJ0dOVSBhc3NlbWJsZXInIHwgY3V0IC1kLiAtZjIKLSAgICAyLTEyOSkgMgotICAgICQKLQotICAgIFRoaXMgcGF0Y2ggcmVzdHJpY3RzIHRoZSB2ZXJzaW9uIGZvcm1hdCB0byAyLlhYLlhYLi4uIFRoaXMgd2lsbCB3b3JrCi0gICAgaW4gbW9zdCBjYXNlcy4KLQotICAgICQgbWlwcy1saW51eC1nbnUtYXMgLS12ZXJzaW9uIHwgZ3JlcCAnR05VIGFzc2VtYmxlcicgfCBlZ3JlcCAtbyAnMlwuWzAtOVwuXSsnCi0gICAgMi4xOC41MC4yMDA4MDIxNQotICAgICQgbWlwcy1saW51eC1nbnUtYXMgLS12ZXJzaW9uIHwgZ3JlcCAnR05VIGFzc2VtYmxlcicgfCBlZ3JlcCAtbyAnMlwuWzAtOVwuXSsnIHwgY3V0IC1kLiAtZjIKLSAgICAxOAotICAgICQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBlYTYzODk1MWFjZWFkN2YxMDg2YzkwOGMwYjlmMDg2YmVhYjgyYTIyCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgTWF5IDMgMTM6NTE6MjggMjAwOCArMDkwMAotCi0gICAgW01JUFNdIGNwdS9taXBzL2NhY2hlLlM6IEFkZCBkY2FjaGVfZW5hYmxlCi0KLSAgICBSZWNlbnQgYm9vdGVsZiBjb21tYW5kIGZpeGVzICgwMTdlOWI3OTI1Zjc0ODc4ZDBlOTQ3NTM4OGNjYTliZGE1ZWY5NDgyLAotICAgICJhbGxvdyBwb3J0cyB0byBvdmVycmlkZSBib290ZWxmIGJlaGF2aW9yIikgcmVxdWlyZXMgcG9ydHMgdG8gaGF2ZSB0aGlzCi0gICAgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotICAgIEFja2VkLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDJjNmZiZWM0Mzk3YzkzNmIxOGNkNDI0ODJiNjk3M2NkNjc4MWJkZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IE1heSAxIDIxOjMwOjE2IDIwMDggKzAyMDAKLQotICAgIG9uZW5hbmQ6IHJlbmFtZSAxNiBiaXQgbWVtb3J5IGNvcHkgaW50byBtZW1jcHlfMTYoKSB0byBhdm9pZCBjb25mbGljdHMKLQotICAgIE9uZW5hbmQgbmVlZHMgYSB2ZXJzaW9uIG9mIG1lbWNweSgpIHdoaWNoIHBlcmZvcm1zIDE2IGJpdCBhY2Nlc3NlcwotICAgIG9ubHk7IG1ha2Ugc3VyZSB0aGUgbmFtZSBkb2VzIG5vdCBjb25mbGljdCB3aXRoIHRoZSBzdGFuZGFyZAotICAgIGZ1bmN0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDEyYmM0ZTk0MjUxYzM2OWM1MjlmZmE1MDVjZjU4YjE0OGMzNzJmN2YKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBcHIgMzAgMjI6Mzg6MTcgMjAwOCArMDIwMAotCi0gICAgY21kX25hbmQ6IGZpeCB3YXJuaW5nOiBzdHIybG9uZyBuY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxYjllZDI1NzRhMzhjOTNjYjAzZGFkNDE4ODVmYzA2YmU0YmZjOWRkCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgQXByIDQgMTE6MTY6MTEgMjAwOCAtMDUwMAotCi0gICAgRml4IGNhbGN1bGF0aW9uIG9mIEkyQyBjbG9jayBmb3Igc29tZSA4Nnh4IGNoaXBzCi0KLSAgICBTb21lIDg2eHggY2hpcHMgdXNlIENDQiBhcyB0aGUgYmFzZSBjbG9jayBmb3IgdGhlIEkyQywgYW5kIG90aGVycyB1c2VkIENDQi8yLgotICAgIFRoZXJlIGlzIG5vIHBhdHRlcm4gdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2ggY2hpcHMgdXNlIHdoaWNoCi0gICAgZnJlcXVlbmN5LCBzbyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlzIHRvIGxvb2sgdXAgdGhlIGFjdHVhbCBTT0MKLSAgICBkZXNpZ25hdGlvbiBhbmQgdXNlIHRoZSByaWdodCB2YWx1ZSBmb3IgdGhhdCBTT0MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjMyZjdmZTdiZDNhNWJkYTNhNDc2NTIwZjAwZTFhY2E3YzIxMDNhOQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEFwciAzMCAxMjoxMToxOSAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IGV0aGVybmV0IGhhbmcgaXNzdWUgZm9yIG1jZjU0N3hfOHgKLQotICAgIFRoZSBldGhlcm5ldCBoYW5nIGlzIGNhdXNlZCBieSByZWNlaXZpbmcgYnVmZmVyIGluIERSQU0gaXMgbm90Ci0gICAgeWV0IHJlYWR5IGR1ZSB0byBhY2Nlc3MgY3ljbGVzIHJlcXVpcmUgbG9uZ2VyIHRpbWUgaW4gRFJBTS4KLSAgICBSZWxvY2F0ZSBETUEgYnVmZmVyIGRlc2NyaXB0b3JzIGZyb20gRFJBTSB0byBpbnRlcm5hbCBTUkFNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg4NmQ5MDE3NmZjMjU3ZTBhYjRkMGRiMDVkMTFkMDc0OWJiZWQzY2EKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBcHIgMzAgMTI6MTA6NDcgMjAwOCAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBjb21waWxhdGlvbiBpc3N1ZSBjYXVzZWQgYnkgbmV3IGNoYW5nZXMgaW4gZnNsX2kyYy5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMdWlnaSBDb21pbyBNYW50ZWxsaW5pIDxsdWlnaS5tYW50ZWxsaW5pQGlkZi1oaXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNzE2NmUwNWE1MTNjMDgwNmI2M2I5ZGZiNmYxZDc3NjQ1Y2VkZTJhCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXByIDMwIDEyOjEwOjIzIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBHZXQgaW5mb3JtYXRpb24gZnJvbSB0aGUgY29ycmVjdCBHQ0MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1cnQgTWFoYW4gPGttYWhhbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzNzhlN2VjOTVkYTQ3NTFlYzhmZTQ2MWJhYWNhYjJiZjdkMjUxMmE5Ci1BdXRob3I6IGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20gPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglXZWQgQXByIDMwIDE4OjAyOjU5IDIwMDggKzAyMDAKLQotICAgIEZpeCB3YXJuaW5nIGluIGVudl9uYW5kLmMgaWYgY29tcGlsZWQgZm9yIERhVmluY2kgU2NobW9vZ2llCi0KLSAgICBGaXggd2FybmluZ3MKLQotICAgIG52X25hbmQuYzogSW4gZnVuY3Rpb24gJ3NhdmVlbnYnOgotICAgIGVudl9uYW5kLmM6MjAwOiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDMgb2YgJ25hbmRfd3JpdGUnIGZyb20gaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZQotICAgIGVudl9uYW5kLmM6IEluIGZ1bmN0aW9uICdlbnZfcmVsb2NhdGVfc3BlYyc6Ci0gICAgZW52X25hbmQuYzoyNzU6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMyBvZiAnbmFuZF9yZWFkJyBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKLQotICAgIGlmIGNvbXBpbGVkIGZvciBkYXZpbmNpX3NjaG1vb2dpZV9jb25maWcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KLSAgICBBY2sgYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgotCi1jb21taXQgMzNhNGE3MGQ0OGQ2MjJjYzQ5NTBjNjBhODRmZWMyM2I5NDIxZjIzZQotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDMwIDEzOjM0OjQwIDIwMDggKzAyMDAKLQotICAgIEZpeCB3YXJuaW5ncyB3aGlsZSBjb21waWxpbmcgbmV0L25ldC5jIGZvciBNUEM4NjEwSFBDRCBib2FyZAotCi0gICAgTVBDODYxMEhQQ0QgYm9hcmQgYWRkcyAtTzIgZ2NjIG9wdGlvbiB0byBQTEFURk9STV9DUFBGTEFHUwotICAgIGNhdXNpbmcgb3ZlcnJpZGluZyBkZWZhdWx0IC1PcyBvcHRpb24uIE5ldyBnY2MgKHZlci4gNC4yLjIpCi0gICAgcHJvZHVjZXMgd2FybmluZ3Mgd2hpbGUgY29tcGlsaW5nIG5ldC9uZXQuYyBmaWxlIHdpdGggLU8yCi0gICAgb3B0aW9uLiBUaGUgcGF0Y2ggaXMgYW4gYXR0ZW1wdCB0byBmaXggdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDU4YjU3NWU1NzVjMjVmZGY4Yzg4MTQxZTE0NWRiMjAxZjMwOTIxNDkKLUF1dGhvcjogU2FzY2hhIExhdWUgPFNhc2NoYS5MYXVlQGdteC5iaXo+Ci1EYXRlOglXZWQgQXByIDMwIDE1OjIzOjM4IDIwMDggKzAyMDAKLQotICAgIGx3bW9uNTogZml4IG9mZnNldCBlcnJvciBpbiBzeXNtb24wIFBPU1QKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBMYXVlIDxzYXNjaGEubGF1ZUBsaWViaGVyci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGU3NDE5YjI0M2EzNzNkZTRlZTA0MmY3ZDRmNDVmNjZkZTc4NzI0MGQKLUF1dGhvcjogU2FzY2hhIExhdWUgPFNhc2NoYS5MYXVlQGdteC5iaXo+Ci1EYXRlOglXZWQgQXByIDMwIDE1OjE2OjM1IDIwMDggKzAyMDAKLQotICAgIGx3bW9uNTogZml4IG1hbnVhbCBtZXJnZSBlcnJvciBpbiBQT1NUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgotCi1jb21taXQgNDJmZmNlYzNmOWViYTAxMGE2NjJkNWI0Mjk4MTgxMmI2YmViZmI5YQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAzMCAxNzo0NjoyNiAyMDA4ICswMjAwCi0KLSAgICBjbWRfbmFuZC5jOiBmaXggYW5vdGhlciAnaW5jb21wYXRpYmxlIHBvaW50ZXIgdHlwZScgd2FybmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkZTEwOWQ5MDk3MDdlMmRmZTgwNmJlNWVmYzNjZGIxMDNiNDdjOGFkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDMwIDE3OjI1OjA3IDIwMDggKzAyMDAKLQotICAgIE1ha2VmaWxlOiBmaXggcGFyYWxsZWwgYnVpbGRzCi0KLSAgICBUaGlzIHByb2JsZW0gc2hvd3MgdXAgd2l0aCBwYXJhbGxlbCBidWlsZHMgb25seTsgaXQgcmVzdWx0cyBpbgotICAgIHNvbWV3aGF0IGNyeXB0aWMgZXJyb3IgbWVzc2FnZXMgbGlrZQotCi0JJCBKT0JTPS1qNiBNQUtFQUxMIG5ldHN0YXIKLQlDb25maWd1cmluZyBmb3IgbmV0c3RhciBib2FyZC4uLgotCWFybS1saW51eC1sZDogY2Fubm90IGZpbmQgLWxnZW5lcmljCi0JbWFrZVsxXTogKioqIFtlZXByb20uc3JlY10gRXJyb3IgMQotCi0gICAgQSBmZXcgYm9hcmRzIChsaWtlIG5ldHN0YXIgYW5kIHZvaWNlYmx1ZSkgbmVlZCBzb21lIGxpYnJhcmllcyBmb3IKLSAgICBidWlsZGluZzsgaG93ZXZlciwgdGhlIGJvYXJkIE1ha2VmaWxlIGRvZXMgbm90IGNvbnRhaW4gYW55IHN1Y2gKLSAgICBkZXBlbmRlbmNpZXMgd2hpY2ggbWF5IGNhdXNlIHByb2JsZW1zIHdpdGggcGFyYWxsZWwgYnVpbGRzLiBBZGRpbmcKLSAgICBzdWNoIGRlcGVuZGVuY2llcyBpcyBkaWZmaWN1bHQgYXMgd2Ugd291bGQgYWxzbyBoYXZlIHRvIHByb3ZpZGUgYnVpbGQKLSAgICBydWxlcywgd2hpY2ggYWxyZWFkeSBleGlzdCBpbiB0aGUgcmVzcGVjdGl2ZSBsaWJyYXJ5IE1ha2VmaWxlcy4KLQotICAgIFRvIHNvbHZlIHRoaXMsIHdlIG1ha2Ugc3VyZSB0aGF0IGFsbCBsaWJyYXJpZXMgZ2V0IGJ1aWx0IGJlZm9yZSB0aGUKLSAgICBib2FyZCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDRmMjcwOThlNWIwNzM2OTg5YjEzY2Q2MWQ3YmNhOTRiMzU3NGNmNWYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAzMCAxNDo1MTozNiAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkYXB0IENhbnlvbmxhbmRzIGZpeGVkIEREUjIgc2V0dXAgdG8gbmV3IERJTU0gbW9kdWxlCi0KLSAgICBUaGlzIHBhdGNoIGNoYW5nZXMgdGhlIENhbnlvbmxhbmRzL0dsYWNpZXIgZml4ZWQgRERSMiBjb250cm9sbGVyIHNldHVwCi0gICAgdXNlZCBmb3IgTkFORCBib290aW5nIHRvIG1hdGNoIHRoZSB2YWx1ZXMgbmVlZGVkIGZvciB0aGUgbmV3IDUxMk1CCi0gICAgRElNTSBtb2R1bGVzIHNoaXBwZWQgd2l0aCB0aGUgcHJvZHVjdGlvbnMgYm9hcmRzOgotCi0gICAgQ3J1Y2lhbDogQ1Q2NDY0QUM2NjcuOEZCCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlYTkyMDJhNjU5ZGM3NTk5NmZhY2YxNDc1ZjE4NjZhMTlhOWQzMTI5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgMzAgMTA6NDk6NDMgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggcHJvYmxlbSB3aXRoIERJTU1zIHdpdGggOCBiYW5rcyBpbiA0NHhfc3BkX2RkcjIuYwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gd2l0aCBESU1NcyB0aGF0IGhhdmUgOCBiYW5rcy4gTm93IHRoZQotICAgIE1DSUYwX01CeENGIHJlZ2lzdGVyIHdpbGwgYmUgc2V0dXAgY29ycmVjdGx5IGZvciB0aGlzIHNldHVwIHRvby4KLQotICAgIFRoaXMgd2FzIG5vdGljZWQgd2l0aCB0aGUgNTEyTUIgRElNTSBvbiBDYW55b25sYW5kcy9HbGFjaWVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzY2MTcyOTkzNThlYmJhMjYwZWNjMDJkMzNlOGU3NWQ4ZDEzZGQzYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEFwciAyOSAyMzo0MTowNiAyMDA4ICswMjAwCi0KLSAgICBQcmVwYXJlIHYxLjMuMy1yYzIsIGFnYWluLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGI3ZmNjNGMxMzk5Mzc4MjM0MmNmNWNkMjBkMjM3YTYyODE2NDhhMGIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMjkgMjM6MzU6MjQgMjAwOCArMDIwMAotCi0gICAgUHJlcGFyZSB2MS4zLjMtcmMyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZjdiMTZhMGE0ZDU3MWRkMzNiMmI1MTg1YTU0ZjdkZGMzMTFmODlkNAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEFwciAyOSAyMzozMjoyMCAyMDA4ICswMjAwCi0KLSAgICBjb21tb24vZW52X25hbmQuYzogZml4IG9uZSBtb3JlIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgaXNzdWUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlYTZmNjY4OTRmOTUyMjI5ZWViZmM0YWQwM2NkMjFmZTVjOGIzZjBmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDI5IDIxOjMzOjA4IDIwMDggKzAyMDAKLQotICAgIHBvc3QvYm9hcmQvbHdtb241L3N5c21vbi5jOiBmaXggbWFudWFsIG1lcmdlIGVycm9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDcwYTBmODE0MTJiMGIxOGE2ZmQwYmVhOTYwNDUxYmM2YzJjY2E0OWEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBcHIgMjkgMTI6NTQ6NTkgMjAwOCAtMDUwMAotCi0gICAgODV4eDogQWRkIC1tbm8tc3BlIHRvIGU1MDAvODV4eCBidWlsZHMKLQotICAgIE5ld2VyIGdjYydzIG1pZ2h0IGJlIGNvbmZpZ3VyZWQgdG8gZW5hYmxlIGF1dG92ZWN0b3JpemF0aW9uIGJ5IGRlZmF1bHQuCi0gICAgSWYgd2UgaGFwcGVuIHRvIGJ1aWxkIHdpdGggb25lIG9mIHRob3NlIGNvbXBpbGVycyB3ZSB3aWxsIGdldCBTUEUKLSAgICBpbnN0cnVjdGlvbnMgaW4gcmFuZG9tIGNvZGUuCi0KLSAgICAtbW5vLXNwZSBkaXNhYmxlcyB0aGUgY29tcGlsZXIgZm9yIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGluZyBTUEUKLSAgICBpbnN0cnVjdGlvbnMgd2l0aG91dCBvdXIga25vd2xlZGdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDhlYTA4ZTViZTY5NDM2YWJjYzk1ZDNkYTExNGRlNGEyZmY4YTZhYjUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBcHIgMjkgMTA6MTg6MzQgMjAwOCAtMDUwMAotCi0gICAgVXBkYXRlIC5naXRpZ25vcmUgZm9yIHpsaWIuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ1MjM5Y2Y0MTUyMTA5Y2FhOTI1MTQ1Y2NkNDMzNTI5OTAyZGY4ODcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBBcHIgMjkgMTA6Mjc6MDggMjAwOCAtMDUwMAotCi0gICAgODV4eC84Nnh4OiBSZW5hbWUgZXh0X3JlZnJlYyB0byB0aW1pbmdfY2ZnXzMgdG8gbWF0Y2ggZG9jcwotCi0gICAgQWxsIHRoZSA4NXh4IGFuZCA4Nnh4IFVNIGRlc2NyaWJlIHRoZSByZWdpc3RlciBhcyB0aW1pbmdfY2ZnXzMKLSAgICBub3QgYXMgZXh0X3JlZnJlYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBlZjdkMzBiMTQzOTRlNGM0YTE1MzExOGY1ODQ1NzYwY2FkYWRhMDJhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgQXByIDI5IDEwOjI4OjM0IDIwMDggLTA1MDAKLQotICAgIDg1eHgvODZ4eDogUmVuYW1lIEREUiBpbml0IGFkZHJlc3MgYW5kIGluaXQgZXh0ZW5kZWQgYWRkcmVzcyByZWdpc3RlcgotCi0gICAgUmVuYW1lIGluaXRfYWRkciBhbmQgaW5pdF9leHRfYWRkciB0byBtYXRjaCB0aGUgZG9jcyBiZXR3ZWVuCi0gICAgODV4eCBhbmQgODZ4eC4gIEJvdGggbm93IHVzZSAnaW5pdF9hZGRyJyBhbmQgJ2luaXRfZXh0X2FkZHInLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGNmNmNjMDE0MjcwNTQ5Njg0ODczYTU5NzJkMjU5NTA1MmM0NjhjYjYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBBcHIgMjggMDI6MjQ6MDQgMjAwOCAtMDUwMAotCi0gICAgODV4eDogQWRkaXRpb25hbCBmaXhlcyBhbmQgY2xlYW51cCBvZiBNUCBjb2RlCi0KLSAgICAqIGFkanVzdCBfX3NwaW5fdGFibGUgYWxpZ25tZW50IHRvIG1hdGNoIGVQQVBSIHYwLjk0IHNwZWMKLSAgICAqIGxvb3Agb3ZlciBhbGwgY3B1cyB3aGVuIGRldGVybWluZyB3aG8gaXMgdXAuICBUaGlzIGZpeGVzIGFuIGlzc3VlIGlmCi0gICAgICB0aGUgImJvb3QgY3B1IiBpc24ndCBjb3JlMC4gIFRoZSAiYm9vdCBjcHUiIHdpbGwgYWxyZWFkeSBiZSBpbiB0aGUKLSAgICAgIGNwdV91cF9tYXNrIHNvIHRoZXJlIGlzIG5vIGhhcm0KLSAgICAqIEFkZGVkIHNvbWUgcHJvdGVjdGlvbiBpbiB0aGUgY29kZSB0byBlbnN1cmUgcHJvcGVyIGJlaGF2aW9yLiAgVGhlc2UKLSAgICAgIGNoYW5nZXMgYXJlIGV4cGxpY2l0bHkgbmVlZGVkIGJ1dCBkb24ndCBodXJ0OgotICAgICAgLSBBZGRlZCBlaWVpbyB0byBlbnN1cmUgdGhlICJob3Qgd29yZCIgb2YgdGhlIHRhYmxlIGlzIHdyaXR0ZW4gYWZ0ZXIKLQlhbGwgb3RoZXIgdGFibGUgdXBkYXRlcyBoYXZlIG9jY3VycmVkLgotICAgICAgLSBBZGRlZCBpc3luYyB0byBlbnN1cmUgd2UgZG9uJ3QgcHJlZmV0Y2ggbG9hZGluZyBvZiB0YWJsZSBlbnRyaWVzCi0JdW50aWwgd2UgYSByZWxlYXNlZAotCi0gICAgVGhlc2UgaXNzdWVzIHdlIHJhaXNlZCBieSBEYXZlIExpdS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiMmQ1MjdhOGI5ZmI1MGFmY2NiYWY3OWI1NTQwOTUyNTg1Y2RjNzYwCi1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CVR1ZSBBcHIgMjkgMTU6MDY6NDEgMjAwOCArMDIwMAotCi0gICAgbHdtb241OiBtaW5vciBjbGVhbi11cCB0byBpbmNsdWRlL2NvbmZpZ3MvbHdtb241LmgKLQotICAgIExXTU9ONSBEU1BJQyBQT1NUIHVzZXMgdGhlIHdhdGNoLWRvZyBzY3JhdGNoIHJlZ2lzdGVyLiBTbywgbWFrZQotICAgIHRoZSBDRkdfRFNQSUNfVEVTVF9BRERSIGRlZmluaXRpb24gbW9yZSByZWFkYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IGY0YzRkMjFhODg1Y2NjMjIyZmQwYWNkZjY1M2I2ODMyNDllODUxMTcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEFwciAyOSAxNjowODowNSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBDRkdfTU9OSVRPUl9MRU4gb24gS2F0bWFpIGZhaWxzYXZlIHRoaXMgdGltZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTM4MTA1ZWZlMWQyYjFhNDBhM2E5N2I0YzFmODVjMjExMWJlYTJkOAotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglUdWUgQXByIDI5IDEzOjMyOjQ1IDIwMDggKzAyMDAKLQotICAgIHBwYyBmbHVzaF9jYWNoZTogYWRkIHdhdGNoLWRvZyB0cmlnZ2VyaW5nIGludG8gdGhlIGxvb3BzLgotCi0gICAgU29tZSBib2FyZHMgKGUuZy4gbHdtb241KSBuZWVkIHJhdGhlciBhIGZyZXF1ZW50IHdhdGNoLWRvZwotICAgIGtpY2tpbmcuIFNpbmNlIHRoZSB0aW1lIGl0IHRha2VzIGZvciB0aGUgZmx1c2hfY2FjaGUoKSBmdW5jdGlvbgotICAgIHRvIGNvbXBsZXRlIGl0cyBqb2IgZGVwZW5kcyBvbiB0aGUgc2l6ZSBvZiBkYXRhIGJlaW5nIGZsdXNoZWQsIG9uZQotICAgIG1heSBlbmNvdW50ZXIgd2F0Y2gtZG9nIHJlc2V0cyBvbiBzdWNoIGJvYXJkcyB3aGVuLCBmb3IgZXhhbXBsZSwKLSAgICBkb3dubG9hZCBiaWcgZmlsZXMgb3ZlciBldGhlcm5ldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IGNhYjk5ZDZmMzI4MWFiNjc4NGZlY2NmOThiOWI0MjVkYWE1ODQxOGEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEFwciAyOSAxNDo0NDo1NCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGluIGRlbmFsaV9zcGRfZGRyMi5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZWM5ZDc4ZmU1Y2Q1ODVkMjg2ODczMWZhMTA4Y2ExZTYyNzMwZTcwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMjkgMTQ6MTI6MDcgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggS2F0bWFpIENGR19NT05JVE9SX0xFTgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODVhZDE4NGIzYjJiMGY4YWY5MjI4NDc3MzAzYzU1ZGNhMWI1MmVkNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDI5IDEzOjU3OjA3IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ29tcGxldGUgcmVtb3ZlIGJvZ3VzIGRmbHVzaCgpCi0KLSAgICBTaW5jZSB0aGUgY3VycmVudCBkZmx1c2goKSBpbXBsZW1lbnRhdGlvbiBpcyBrbm93IHRvIGhhdmUgc29tZSBwcm9ibGVtcwotICAgIChhcyBzZWVtIG9uIGx3bW9uNSBFQ0MgaW5pdCkgdGhpcyBwYXRjaCByZW1vdmVzIGl0IGNvbXBsZXRlbHkgYW5kIHJlcGxhY2VzCi0gICAgaXQgYnkgdXNpbmcgY2xlYW5fZGNhY2hlX3JhbmdlKCkuCi0KLSAgICBUZXN0ZWQgb24gS2F0bWFpIHdpdGggRUNDIERJTU0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMzU4NDZkNmVjYWFkMjU1YWQyOGQ5M2ViYmI3OGIzZDVkYTY4Y2RjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMjkgMTM6MzY6NTEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDaGFuZ2UgRUNDIGluaXRpYWxpemF0aW9uIG9uIGx3bW9uNSB0byB1c2UgY2xlYW5fZGNhY2hlX3JhbmdlKCkKLQotICAgIEFzIGl0IHNlZW1zIHRoZSAib2xkIiBFQ0MgaW5pdGlhbGl6YXRpb24gcm91dGluZSBieSB1c2luZyBkZmx1c2goKSBkaWRuJ3QKLSAgICB3cml0ZSBhbGwgbGluZXMgaW4gdGhlIGRjYWNoZSBiYWNrIHRvIG1lbW9yeSBvbiBsd21vbjUuIFRoaXMgY291bGQgbGVhZAotICAgIHRvIEVDQyBlcnJvciB1cG9uIExpbnV4IGJvb3RpbmcuIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgcHJvZ3JhbV9lY2MoKQotICAgIHJvdXRpbmUgdG8gbm93IHVzZSBjbGVhbl9kY2FjaGVfcmFuZ2UoKSBpbnN0ZWFkIG9mIGRmbHVzaCgpLgotICAgIGNsZWFuX2RjYWNoZV9yYW5nZSgpIHVzZXMgZGNic3Qgd2hpY2ggaXMgZXhhY3RseSB3aGF0IHdlIHdhbnQgaW4gdGhpcwotICAgIGNhc2UuCi0KLSAgICBTaW5jZSBkZmx1c2goKSBpcyBrbm93biBpcyBjYXVzZSBwcm9ibGVtcywgdGhpcyByb3V0aW5lIHdpbGwgYmUKLSAgICByZW1vdmVkIGNvbXBsZXRlbHkgYW5kIHJlcGxhY2VkIGJ5IGNsZWFuX2RjYWNoZV9yYW5nZSgpIHdpdGggYW4KLSAgICBhZGRpdGlvbmFsIHBhdGNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMThlYzE5ZTRhYTFhMDQ1ZGZiZjJjN2MyZTMzOTYzNDg4ZTkyZDc1NwotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglNb24gQXByIDI4IDE4OjE5OjM0IDIwMDggKzAyMDAKLQotICAgIFBPU1Q6IGZpeCBNYWtlZmlsZXMgZm9yIG1wYzh4eCwgbHdtb24sIGFuZCBuZXR0YSBQT1NUcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IGVlYTVhNzQzYTIxOTNlZjJhMDViOWJjNmRjNDQ3YmEyNDE0MTZmMzUKLUF1dGhvcjogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdvb2dsZW1haWwuY29tPgotRGF0ZToJTW9uIEFwciAyOCAwODo0Nzo0NyAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeHVwIGViYyBjbG9jayBpbiBGRFQgZm9yIDQwNUdQL0VQCi0KLSAgICBPbiBwcGM0MDVFUCBhbmQgcHBjNDA1R1AgKGF0IGxlYXN0KSB0aGUgZWJjIGlzIGRpcmVjdGx5IGF0dGFjaGVkIHRvIHRoZSBwbGIKLSAgICBhbmQgbm90IHRvIHRoZSBvcGIuIFRoaXMgcGF0Y2ggd2lsbCB0cnkgdG8gZml4dXAgL3BsYi9lYmMgaWYgL3BsYi9vcGIvZWJjCi0gICAgZG9lc24ndCBleGlzdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBCcnVubmVyIDxzdXBlci5maXJldHdpc3RlckBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyZWY3NTAzYTU5M2M3N2E4MGMyYTA1NDAxMTk3MDIyN2M0YjYyNzc0Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUaHUgQXByIDI0IDA3OjU3OjE3IDIwMDggKzAyMDAKLQotICAgIE5FMjAwMDogRml4IHJlZ3Jlc3NzaW9uIGludHJvZHVjZWQgYnkgZTcxMDE4NWFhZTkwIG9uIG5vbiBBWDg4Nzk2Ci0KLSAgICBNb3ZlIG5vbi1pbmxpZWQgZnVuY3Rpb25zIGludG8gc3BlY2lmaWMgZHJpdmVycyBmaWxlCi0gICAgU2V0IGdldF9wcm9tIGFzIHdlYWsKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDQwY2I5MGVlMmI5N2RiMWY2OTdlMWI1NGYxOWE1NDhmZmM5NmQ3MWIKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVGh1IEFwciAzIDE3OjA0OjE5IDIwMDggKzAyMDAKLQotICAgIG5ldDogbWFrZSBBUlAgdGltZW91dCBjb25maWd1cmFibGUKLQotICAgIEN1cnJlbnRseSB0aGUgdGltZW91dCB3YWl0aW5nIGZvciBhbiBBUlAgcmVwbHkgaXMgaGFyZCBzZXQgdG8gNSBzZWNvbmRzLgotICAgIE9uIGkuTVgzMUFEUyBkdWUgdG8gYSBoYXJkd2FyZSAic3RyYW5nZW5lc3MiIHVwIHRvIGZvdXIgZmlyc3QgSVAgcGFja2V0cwotICAgIHRvIHRoZSBib2FyZHMgZ2V0IGxvc3QsIHdoaWNoIHR5cGljYWxseSBhcmUgQVJQIHJlcGxpZXMuIEJ5IGNvbmZpZ3VyaW5nCi0gICAgdGhlIHRpbWVvdXQgdG8gYSBsb3dlciB2YWx1ZSB3ZSBzaWduaWZpY2FudGx5IGltcHJvdmUgdGhlIGZpcnN0IG5ldHdvcmsKLSAgICB0cmFuc2ZlciB0aW1lIG9uIHRoaXMgYm9hcmQuIFRoZSB0aW1lb3V0IGlzIHNwZWNpZmllZCBpbiBtaWxsaXNlY29uZHMsCi0gICAgbGF0ZXIgaW50ZXJuYWxseSBpdCBpcyBjb252ZXJ0ZWQgdG8gZGVjaXNlY29uZHMsIGJlY2F1c2UgaXQgaGFzIHRvIGJlCi0gICAgY29udmVydGVkIHRvIGhhcmR3YXJlIHRpY2tzLCBhbmQgQ0ZHX0haIHJhbmdlcyBmcm9tIDkwMCB0byAyNzAwMDAwMCBvbgotICAgIGRpZmZlcmVudCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDEzZTBiOGY3Y2E5ZDI5MjY3YmYwMWQ3YTAxZTUyMWEwNTE3YWRjZTEKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVGh1IEFwciAzIDEzOjM2OjE4IDIwMDggKzAyMDAKLQotICAgIG1pbm9yIGNzODkwMCBkcml2ZXIgY2xlYW4gdXAKLQotICAgIFJlbW92ZSBhIHJlZHVuZGFudCByZWdpc3RlciBkZWZpbml0aW9uLCBjbGVhbiB1cCBzb21lIGNvZGluZyBzdHlsZQotICAgIHZpb2xhdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDcwN2ZhOTE3Y2NhMjRjMGYyMjc3NmY0OGFjNGE2ZmE1ZTUxODliMTAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBcHIgMjggMjI6MDE6MDQgMjAwOCArMDIwMAotCi0gICAgamZmczJfMXBhc3MuYzogZml4IGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUgd2FybmluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZhZWUwMGY1ZTZhMWNmMjlkOGZlOGZkYzliNzI1MmZiZDMxMTE1ZDkKLUF1dGhvcjogU2FzY2hhIExhdWUgPFNhc2NoYS5MYXVlQGdteC5iaXo+Ci1EYXRlOglUdWUgQXByIDEgMTA6MTA6MTggMjAwOCArMDIwMAotCi0gICAgbHdtb241OiB1cGRhdGUgZHNQSUMgUE9TVCBzcGV6aWZpY2F0aW9uCi0KLSAgICBUaGUgc3BlY2lmaWNhdGlvbiBmb3IgdGhlIGx3bW9uNSBib2FyZCBkc1BJQyBQT1NUIGdvdCBjaGFuZ2VkLgotICAgIEFsc28gYWRkIGRlZmluZXMgZm9yIHRoZSB0ZW1wZXJhdHVyZXMgIGFuZCB2b2x0YWdlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBMYXVlIDxzYXNjaGEubGF1ZUBsaWViaGVyci5jb20+Ci0KLWNvbW1pdCAzZTQ2MTVhYjdmZjM4NzgxYTVkZDgwZDBmNDliOWFmNTViNGZlMGI3Ci1BdXRob3I6IFNhc2NoYSBMYXVlIDxTYXNjaGEuTGF1ZUBnbXguYml6PgotRGF0ZToJVHVlIEFwciAxIDE1OjEzOjAzIDIwMDggKzAyMDAKLQotICAgIEZpeCB3YXRjaGRvZyBQT1NUIGZvciBsd21vbjUKLQotICAgIElmIHRoZSBoYXJkd2FyZSB3YXRjaGRvZyBkZXRlY3RzIGEgdm9sdGFnZSBlcnJvciwgdGhlIHdhdGNoZG9nIHNldHMKLSAgICBHUElPNjIgdG8gbG93LiBUaGUgd2F0Y2hkb2cgUE9TVCBoYXMgdG8gZGV0ZWN0IHRoaXMgbG93IGxldmVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIExhdWUgPGxlZ2xhczBAbGVncGMxODAubGVnLmxpZWJoZXJyLmk+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGRkNTc0OGJjZDY2OWY0NmFlYjY2ODZjMWIzNDEzMjM4NDM3MzhjY2MKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+Ci1EYXRlOglNb24gQXByIDI4IDE0OjM3OjE0IDIwMDggKzAyMDAKLQotICAgIHJ0bDgxNjk6IGZpeCBjb21waWxlciB3YXJuaW5ncwotCi0gICAgRml4IG11bHRpcGxlIGNvbXBpbGVyIHdhcm5pbmdzIHJlbGF0ZWQgdG8gYXJndW1lbnQgdHlwZSBtaXNtYXRjaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgotCi1jb21taXQgNDEzYmY1ODYyNjZmODZjNmJkYmM2YzZkMTQwZjY3YTE1YWY0YzRmMQotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KLURhdGU6CU1vbiBBcHIgMjggMTQ6MzY6MDYgMjAwOCArMDIwMAotCi0gICAgSURFOiBmaXggY29tcGlsZXIgd2FybmluZ3MKLQotICAgIFRoZSBJREUgZHJpdmVyIGNhbiB1c2UgMzItYml0IGFkZHJlc3NlcyBpbiBMQkEgbW9kZSwgaW4gd2hpY2ggY2FzZSBpdAotICAgIHNwaXRzIG11bHRpcGxlIHdhcm5pbmdzIGR1cmluZyBjb21waWxhdGlvbi4gRml4IHRoZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KLQotY29tbWl0IGRiOTA4NGRlMjhjNDZhYzgxYzhmNjgxNzIyY2IwZDc0MTFiZTRkN2YKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+Ci1EYXRlOglNb24gQXByIDI4IDE0OjM1OjU3IDIwMDggKzAyMDAKLQotICAgIExpbmtTdGF0aW9uOiBmaXggY29tcGlsZXIgd2FybmluZywgYWRkIGEgbWFpbnRhaW5lcgotCi0gICAgb3V0Xzggd2FudHMgYSBwb2ludGVyIHRvIGFuIHVuc2lnbmVkIGFzIHRoZSBmaXJzdCBhcmd1bWVudC4gQWRkIGEKLSAgICBtYWludGFpbmVyIGZvciBMaW5rc3RhdGlvbiBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KLQotY29tbWl0IGM3MWFiYmEzY2I2N2IwNjNmNzg5ZjE3YWJmNmM3NDQ3NzI3YzBjZDUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBcHIgMjggMTQ6NTU6MTIgMjAwOCArMDIwMAotCi0gICAgY21kX25hbmQuYzogZml4ICJkaWZmZXIgaW4gc2lnbmVkbmVzcyIgcHJvYmxlbQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGYyYzI4OGEzNTM0MWFkMDJhYzAzYjE1NjNkNzg2NzYzYzljOGYxNTkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBcHIgMjggMTI6NDg6NDcgMjAwOCArMDIwMAotCi0gICAgcGNuZXQuYzogZml4IGEgbWVyZ2UgaXNzdWUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0Y2E3OWY0NzdlYmQyNWE2ODcyZTYxOTZkODBlMmY1ZWZmNDQxMzc2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gQXByIDI4IDEyOjA4OjE4IDIwMDggKzAyMDAKLQotICAgIE5BTkQ6IGZpeCBzb21lIHN0cmljdC1hbGlhc2luZyBjb21waWxlciB3YXJuaW5ncwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDVjZDAxMzBlY2M3OWQ2ZGNkZTFiMWFjMjUzYWJjNDU3Y2E4YzMxMTUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEFwciAyOCAxMTozNzoxNCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBjb21waWxlIHdhcm5pbmcgb2YgaGN1NCBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNTM3OWNkMTVkZDZjNzRhYzUxNDk5YmNlMzQ1NWJmNmUwY2RiZTlmMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEFwciAyOCAxMTozMToyMyAyMDA4ICswMjAwCi0KLSAgICBNUEM4MzIzRVJEQjogZml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdtYWNfcmVhZF9mcm9tX2VlcHJvbScKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA3NjAyZWQ1MGEyZjBlZjNkYzhkN2RhOTNmMTE2ZGU1MDI4OGY1YjU5Ci1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CU1vbiBBcHIgMjggMDA6MjU6MzIgMjAwOCArMDIwMAotCi0gICAgbXgzMWFkczogZml4IGxvYWRhZGRyIGVudmlyb25tZW50IHZhcmlhYmxlIGRlZmluZQotCi0gICAgQXJpdGhtZXRpYyBleHByZXNzaW9ucyBkbyBub3QgZ2V0IGV2YWx1YXRlZCB1bmRlciBzdHJpbmdpZmljYXRpb24uIFJlbW92ZQotICAgIGRlZmF1bHQgbmV0d29yayBjb25maWd1cmF0aW9uLCBhZGQgREhDUCBjb21tYW5kIHN1cHBvcnQuIFRoYW5rcyB0byBGZWxpeAotICAgIFJhZGVuc2t5IGZvciByZXBvcnRpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCAxNDRlZWM3NzdhYzA3YmNiMTJiZDM4MjQ1YTVhMjg5ZjY5NGE3Zjk4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gQXByIDI4IDEwOjU1OjI0IDIwMDggKzAyMDAKLQotICAgIGthdG1haTogZml4IHNlY3Rpb24gb3ZlcmxhcCBwcm9ibGVtCi0KLSAgICBTaW5jZSB3ZSBkaWRuJ3Qgd2FudCB0byByZW1vdmUgZmVhdHVyZXMgZnJvbSB0aGUgY29uZmlndXJhdGlvbiwgd2UKLSAgICBkZWNpZGVkIHRvIGluY3JlYXNlIHRoZSBVLUJvb3QgaW1hZ2Ugc2l6ZSAoYWRkIG9uZSBmbGFzaCBzZWN0b3IpLgotCi0gICAgQWxzbyBjaGFuZ2VkIHRoZSBkZWZhdWx0IGVudmlyb25tZW50IGRlZmluaXRpb24gdG8gbWFrZSBpdAotICAgIGluZGVwZW5kZW50IG9mIHN1Y2ggY2hhbmdlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDk0MWQ2OTZkMjU2MjRlM2NjNjVlYmY5MjQxOTk1NDFhY2Y1MmQ3NGUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBcHIgMjggMTA6NTU6MjQgMjAwOCArMDIwMAotCi0gICAga2F0bWFpOiBmaXggc2VjdGlvbiBvdmVybGFwIHByb2JsZW0KLQotICAgIFNpbmNlIHdlIGRpZG4ndCB3YW50IHRvIHJlbW92ZSBmZWF0dXJlcyBmcm9tIHRoZSBjb25maWd1cmF0aW9uLCB3ZQotICAgIGRlY2lkZWQgdG8gaW5jcmVhc2UgdGhlIFUtQm9vdCBpbWFnZSBzaXplIChhZGQgb25lIGZsYXNoIHNlY3RvcikuCi0KLSAgICBBbHNvIGNoYW5nZWQgdGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgZGVmaW5pdGlvbiB0byBtYWtlIGl0Ci0gICAgaW5kZXBlbmRlbnQgb2Ygc3VjaCBjaGFuZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDNjNmNkMzlmOTE4NDE0M2ZkOGM1Mzc4NzJiM2Q0YjJlMDNmMTQ2NgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJU2F0IEFwciAyNiAxMTo0NDo0NCAyMDA4IC0wNTAwCi0KLSAgICBwb3N0OiBGaXggYnVpbGRpbmcgd2l0aCBPPQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGZkNzUzMWMxZTlkNTZiOWU1ZTA2ZDJjMGUwMmI3OThkYWI3MmY3MGMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBBcHIgMjYgMDE6NTU6MDAgMjAwOCArMDIwMAotCi0gICAgUHJlcGFyZSB2MS4zLjMtcmMxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTljZjJlYzkwZDhjZTUyZGE2MGMxNjkzNjkzYzQwNDhjYjgxMDk2NwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEFwciAyNiAwMToyNTozOSAyMDA4ICswMjAwCi0KLSAgICBwb3N0L01ha2VmaWxlOiBtYWtlIHN1cmUgdG8gdXNlIHRoZSBjb3JyZWN0IGZsYWdzCi0KLSAgICBBUkZMQUdTIHdhcyBub3Qgc2V0LCB3aGljaCBjYXVzZWQgInBwY184eHgtYXI6IGNyZWF0aW5nIGxpYmdlbnBvc3QuYSIKLSAgICBtZXNzYWdlcyB0byBiZSBwcmludGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDdlZDQwMTE3MzNlN2RjYThmNjRkMjEyOTFlNDI5NDY2MmY3ZGMzZTIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBBcHIgMjYgMDA6MzQ6NDIgMjAwOCArMDIwMAotCi0gICAgQ29kaW5nIFN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmOTIwNGUxNTE3MzgzNGZmOGQxMjNlMzYyNzljZTQ5YzNjNmM3NGZjCi1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBcHIgMjAgMTA6Mzg6MTIgMjAwOCArMDIwMAotCi0gICAgaS5NWDMxOiBFbmFibGUgU1BJIGFuZCBNQzEzNzgzL1JUQyBzdXBwb3J0IGZvciB0aGUgTGl0ZWtpdCBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBlbmFibGVzIFNQSSBhbmQgTUMxMzc4My9SVEMgc3VwcG9ydCBmb3IgdGhlIExpdGVraXQgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBmOTdhYmJmYjQ3ZDllNDA3MzU0ZTE1N2NhZTNmNjM2OWU0NjBjZDM3Ci1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgQXByIDI1IDAxOjA4OjMyIDIwMDggLTA1MDAKLQotICAgIE1QQzg1NDREUzogZGVjb2RlIHBjaWUzIGVuZC1wb2ludCBjb25maWd1cmF0aW9uIGNvcnJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDI5MjE4OGUxNTUyM2MxNjVjNDI2OTQwM2ZkY2QzM2MyNmQ4OTE3NmUKLUF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEFwciAyNSAwMDo1NTowOSAyMDA4IC0wNTAwCi0KLSAgICBNUEM4NTQ0RFM6IFJlbW92ZXMgdGhlIHVua25vd24gZmxhc2ggbWVzc2FnZSBpbmZvcm1hdGlvbgotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSB1bmtub3duIGZsYXNoIG1lc3NhZ2UgaW5mb3JtYXRpb246Ci0gICAgJyMjIFVua25vd24gRkxBU0ggb24gQmFuayAxIC0gU2l6ZSA9IDB4ZGVhZGJlZWYgPSAtMjg2MjYxMjQ4IE1CJwotICAgIFRoaXMgdW5rbm93biBmbGFzaCBtZXNzYWdlIGlzIGNhdXNlZCBieSBQcm9tSmV0LgotICAgIFNvbWUgb2YgdGhlIGJvYXJkIHVzZXIgaXMgdW5oYXBweSB3aXRoIHRoaXMgaW5mb3JtYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGIyMTE1NzU3NDAzYmVlZjBhYzZiYzJjNmMzYjI0ZjMxMjU2YTc1ZDIKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBcHIgMjQgMTQ6MDc6MzggMjAwOCAtMDUwMAotCi0gICAgbXBjODN4eDogYnVtcCBsb2FkYWRkciBvdmVyIGZkdGFkZHIgdG8gMHg1MDAwMDAKLQotICAgIHRoaXMgc2VlbXMgYXMgYSBnb29kIGNvbXByb21pc2UgYmV0d2VlbiBodW1hbiBtZW1vcnksIHR5cGluZywKLSAgICBhbmQgbGFzdCBidXQgbm90IGxlYXN0LCB0byBhY2NvbW1vZGF0ZSBmb3IgY3VycmVudCBhbmQgZnV0dXJlIGtlcm5lbCBibG9hdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZTVhNzE5MDI2NWEzNGQ5Njg1NzhmZjI2NjU0OWM2MGY2ZjU3NjU0Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBcHIgMTUgMTM6MTI6MjMgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogY2xlYW4gdXAgdGhlIHJlYWRtZSBmb3IgODN4eCBib2FyZHMKLQotICAgIDEuIGNvcnJlY3QgdGhlIHR5cG8KLSAgICAyLiBjb3JyZWN0IHRoZSBtZW1vcnkgbWFwIGZvciA4Mzd4ZXJkYiBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJjYWU1MmE2ODE5ZWU5ZGFkNWQwZDk2Y2Q3ZGFlYjIwMTA4ZDQ1ZmYKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEFwciAxNSAxMzoxMToxMSAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiByZW1vdmUgdGhlIHVudXNlZCBDUE0ncyBzdHVmZgotCi0gICAgVGhlIE1QQzgzeHggZmFtaWx5IG5ldmVyIGhhdmUgQ1BNIGJsb2NrLCBzbyByZW1vdmUgaXQgZnJvbSA4M3h4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGM2M2FkNjMyNWE4YWMwMDk3YTU0YjQxOGEzMjg4OTI2YjA0ODRiMTgKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgQXByIDE4IDE2OjI5OjQwIDIwMDggKzAyMDAKLQotICAgIGNmaS1mbGFzaDogQWRkIENGR19GTEFTSF9BVVRPUFJPVEVDVF9MSVNUCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYSBjb25maWd1cmFibGUgZmxhc2ggYXV0byBwcm90ZWN0aW9uIGxpc3QgdGhhdCBjYW4gYmUgdXNlZAotICAgIHRvIG1ha2UgVS1Cb290IHByb3RlY3QgZmxhc2ggcmVnaW9ucyBpbiBmbGFzaF9pbml0KCkuCi0KLSAgICBUaGUgaWRlYSBoYXMgYmVlbiBkaXNjdXNzZWQgb24gdGhlIHUtYm9vdCBtYWlsaW5nIGxpc3Qgc3RhcnRpbmcKLSAgICBvbiBOb3YgMTh0aCwgMjAwNy4KLQotICAgIEV2ZW4gdGhpcyBwYXRjaCBicmluZ3MgYSBuZXcgZmVhdHVyZSBpdCBpcyB1c2VkIGFzIGEgYnVnZml4IGZvciA0eHgKLSAgICBwbGF0Zm9ybXMgd2hlcmUgZmxhc2hfaW5pdCgpIGRvZXMgbm90IGNvbXBsZXRlbHkgcHJvdGVjdCB0aGUKLSAgICBtb25pdG9yJ3MgZmxhc2ggcmFuZ2UgaW4gYWxsIHNpdHVhdGlvbnMuCi0KLSAgICBVLUJvb3QgcHJvdGVjdHMgdGhlIGZsYXNoIHJhbmdlIGZyb20gQ0ZHX01PTklUT1JfQkFTRSB0bwotICAgIChDRkdfTU9OSVRPUl9CQVNFICsgbW9uaXRvcl9mbGFzaF9sZW4gIC0gMSkgYnkgZGVmYXVsdC4gVGhpcyBkb2VzIG5vdAotICAgIGluY2x1ZGUgdGhlIHJlc2V0IHZlY3RvciBhdCAweGZmZmZmZmZjLgotCi0gICAgRXhhbXBsZToKLSAgICAjZGVmaW5lIENGR19GTEFTSF9BVVRPUFJPVEVDVF9MSVNUIHt7MHhmZmY4MDAwMCwgMHg4MDAwMH19Ci0KLSAgICBUaGlzIGNvbmZpZyBvcHRpb24gd2lsbCBhdXRvIHByb3RlY3QgdGhlIGxhc3QgNTEyayBvZiBmbGFzaCB0aGF0Ci0gICAgY29udGFpbnMgdGhlIGJvb3Rsb2FkZXIgb24gYm9hcmQgbGlrZSBBUEM0MDUgYW5kIFBNQzQwNS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgZDBkOTFhZTNhY2I0ZjI5ZDFhMmEzYTc2Njc0NzQ3OGVkNTRlMjg0OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgQXByIDI1IDEzOjU5OjAzIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIGRvdWJsZSBkZWZpbmVzIGluIGx3bW9uNS5oCi0KLSAgICBpbnRyb2R1Y2VkIHdpdGggbGF0ZXN0IGx3bW9uNS9QT1NUIG1lcmdlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3NTkwMzc4ZmI5YzY4NjcwOTQ5MmNlYjE0MjgyNWNkMDU4MjU1OTU2Ci1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgQXByIDI1IDEzOjU0OjAyIDIwMDggKzAyMDAKLQotICAgIFVzZSB3YXRjaGRvZy1hd2FyZSBmdW5jdGlvbnMgd2hlbiBjYWxjdWxhdGluZyBoYXNoZXMgb2YgaW1hZ2VzIC0gdGFrZSB0d28KLQotICAgIFNvbWUgZmlsZXMgZGlkbid0IGdldCB1cGRhdGVkIHByb3Blcmx5IHdpdGggdGhlICJVc2Ugd2F0Y2hkb2ctYXdhcmUKLSAgICBmdW5jdGlvbnMgd2hlbiBjYWxjdWxhdGluZyBoYXNoZXMgb2YgaW1hZ2VzIiBjb21taXQsIHRoaXMgY29tbWl0Ci0gICAgZml4ZXMgdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDhlMDQ4YzQzOGUyMGVjODliNDlkYTVmMDg1ZjhmNzU2ZWJhNmU1ODcKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgQXByIDI1IDEyOjAxOjM5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIGJvb3Rjb3VudCBsaW1pdCBoYW5kbGluZyBmb3IgQVBDNDA1IGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCAxZGU2YjI4YmU1ZDEwN2FlOTBhZDdhOGE0MzY1M2M0OTk2NmU4YWZlCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgQXByIDI1IDEyOjEwOjA5IDIwMDggKzAyMDAKLQotICAgIFVzZSB3YXRjaGRvZy1hd2FyZSBmdW5jdGlvbnMgd2hlbiBjYWxjdWxhdGluZyBoYXNoZXMgb2YgaW1hZ2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZDAwY2UwOTA0MGQzMTAwZTJjNzk5OGVmNTZkYjYyYzJkMjBkOWVlMwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAyNSAxMjo0NDowOCAyMDA4ICswMjAwCi0KLSAgICBVU0I6IGZpeCBtb3JlIEdDQyA0LjIueCBhbGlhc2luZyB3YXJuaW5ncwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IGFmZjRmODY0NDhmNjU4NjkzMGYwYTNiZTdmYzRiMGRkY2Y0NTA5ODAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBBcHIgMjUgMTI6NDE6NTMgMjAwOCArMDIwMAotCi0gICAgbGliX2dlbmVyaWMvY3JjMzIuYzogYWRkIG1pc3NpbmcgI2luY2x1ZGUgPHdhdGNoZG9nLmg+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMDNjY2RiY2Q1NjAyNjEwY2VhNGJkMGRiN2U0OGUxZWY4ODFhNTFlZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAyNSAxMTo1MjoyMSAyMDA4ICswMjAwCi0KLSAgICBsaWJfZ2VuZXJpYy9jcmMzMi5jOiBmaXggY29tcGlsZSBwcm9ibGVtCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMjRiZmVkYmQwYmU0ZGNhYTk0ODYxNDA3ODIwZDZhNzBmZWE3ZTAzYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDIyIDEyOjIwOjMyIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogUGFzcyBQQ0llIHJvb3QtY29tcGxleC9lbmRwb2ludCBjb25maWd1cmF0aW9uIHRvIExpbnV4IHZpYSB0aGUgZmR0Ci0KLSAgICBUaGUgUENJZSByb290LWNvbXBsZXgvZW5kcG9pbnQgc2V0dXAgYXMgY29uZmlndXJlZCB2aWEgdGhlICJwY2llX21vZGUiCi0gICAgZW52aXJvbm1lbnQgdmFyaWFibGUgd2lsbCBub3cgZ2V0IHBhc3NlZCB0byB0aGUgTGludXgga2VybmVsIGJ5IHNldHRpbmcKLSAgICB0aGUgZGV2aWNlX3R5cGUgcHJvcGVydHkgb2YgdGhlIFBDSWUgZGV2aWNlIHRyZWUgbm9kZS4gRm9yIG5vcm1hbCByb290LQotICAgIGNvbXBsZXggY29uZmlndXJhdGlvbiBpdCB3aWxsIGtlZXAgaXRzIGRlZmF1bHRzIHZhbHVlIG9mICJwY2kiIGFuZCBmb3IKLSAgICBlbmRwb2ludCBjb25maWd1cmF0aW9uIGl0IHdpbGwgZ2V0IGNoYW5nZWQgdG8gInBjaS1lbmRwb2ludCIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlYjA2MTViZjYwMGQyY2FmNWFhMjk1OGY0N2Y1YmEzNjRjNTJkNWU3Ci1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBBcHIgMjQgMTA6MzA6NTMgMjAwOCArMDIwMAotCi0gICAgbHdtb241OiB3YXRjaGRvZyBQT1NUIGZpeAotCi0gICAgVXNlIHRoZSBHUFQwX01BU0t4IHJlZ2lzdGVycyBhcyB0aGUgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHdhdGNoLWRvZwotICAgIHRpbWVyIFBPU1QgdGVzdCBpbnN0ZWFkIG9mIEdQVDBfQ09NUHguIFRoZSBsYXR0ZXIKLSAgICAoR1BUMF9DT01QMS4uR1BUMF9DT01QNSkgYXJlIHVzZWQgZm9yIHRoZSBsb2ctYnVmZmVyIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgNzhlNDg4Mjk4ODI0YmMxNTBiNWYzZWJmNzk1OGNkNzFmYTJhZjFiOQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEFwciAyMSAxODoxMDoxNCAyMDA4IC0wNTAwCi0KLSAgICBsaWJfcHBjOiBSZXZlcnQgIk1ha2UgTVBDODN4eCBvbmUgc3RlcCBjbG9zZXIgdG8gZnVsbCByZWxvY2F0aW9uLiIKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgNzA0MzFlOGE3MzkzYjZiNzkzZjc3OTU3Zjk1Yjk5OWZjOWEyNjliOCB3aGljaCBoYXMKLSAgICBwcm92ZW4gcHJvYmxlbWF0aWMgZ2V0dGluZyByaWdodCBmcm9tIHRoZSBzdGFydCBhdCBsZWFzdCBvbiA4M3h4IGFuZAotICAgIDR4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhOTk3MTViOGViZmM1MDBmM2Y0MGUwMWIzNmI2NGQ0NzM5Mzg0NDNkCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAxOCAxNDo1MDowMSAyMDA4ICswMjAwCi0KLSAgICBSZWFsaW5pbmcgc29tZSBoZWFkZXIgZGVmaW5pdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDRhY2JjNmM3Zjk5M2NhZTQwOWM0MjQ2MTU0MTVhM2U3NjgyMGYxM2QKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBBcHIgMjQgMDc6NTc6MTYgMjAwOCArMDIwMAotCi0gICAgTkUyMDAwOiBjb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGI0YWZmMWZmYWY3MTIwMDMyYzY1MzM1N2MwMDdmYWExNGY3NGQyOWQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBcHIgMjMgMDA6MTE6NDcgMjAwOCArMDkwMAotCi0gICAgcWVtdS1taXBzLmg6IEFkZCBDRkkgc3VwcG9ydAotCi0gICAgQ09ORklHX0VOVl9PVkVSV1JJVEUgaXMgYWxzbyBhZGRlZC4KLQotICAgIFRoaXMgcGF0Y2ggaXMgb3JpZ2luYWxseSBjcmVhdGVkIGJ5IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJELgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgNGExZjExYjQ1YTgyOTA4ZTViMGRmNjAyZDcwMzA4MjQxM2E2YjdlZAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJVHVlIEFwciAyMiAyMjo0NzoyNyAyMDA4ICswOTAwCi0KLSAgICBkb2MvUkVBRE1FLm1pcHM6IEFkZCBNSVBTIG5vdGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMjE1YjAxYmJhOGJjNjYyZDM1ZjcyYjA4NDcwMGIxOTJkMzY3ZGZiNAotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEFwciAyMiAxMjoyNzo1NiAyMDA4ICswMjAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgY2FsY3VsYXRpbmcgaGFzaGVzIHdpdGggd2F0Y2hkb2cgdHJpZ2dlcmluZwotCi0gICAgSW1wbGVtZW50IHdhdGNob2RnLWF3YXJlIHZhcmlhbnRzIG9mIGhhc2ggY2FsY3VsYXRpb24gZnVuY3Rpb25zOgotICAgIC0gY3JjMzJfd2QoKQotICAgIC0gbWQ1X3dkKCkKLSAgICAtIHNoYTFfY3N1bV93ZCgpCi0gICAgVGhlIGFib3ZlIGZ1bmN0aW9ucyBjYWxjdWxhdGUgdGhlIGhhc2ggb2YgdGhlIGlucHV0IGJ1ZmZlciBpbiBjaHVua3MsCi0gICAgdHJpZ2dlcmluZyB0aGUgd2F0Y2hkb2cgYWZ0ZXIgcHJvY2Vzc2luZyBlYWNoIGNodW5rLiBUaGUgY2h1bmsgc2l6ZQotICAgIGlzIGdpdmVuIGFzIGEgZnVuY3Rpb24gY2FsbCBwYXJhbWV0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgODg3NWUzYWJhYjk4NmRmOTMwMTY3Y2U1YzFhYzRmOTVkY2FjYzgxYwotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci1EYXRlOglXZWQgQXByIDIzIDExOjAyOjEyIDIwMDggKzA5MDAKLQotICAgIHFlbXUtbWlwczogQ2xlYW51cCB3aGl0ZXNwYWNlLCBpbmRlbnRhdGlvbiwgZXRjLgotCi0gICAgTm8gZnVuY3Rpb25hbCBjaGFuZ2UuCi0KLSAgICBUaGlzIHBhdGNoIHdhcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCBieSBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRC4KLSAgICBUaGVuIEkgcmUtY3JlYXRlZCBmcm9tIHNjcmF0Y2gsIGFuZCBjaGFuZ2VkIG1vcmUgbGluZXMgdGhhbiB0aGUgb3JpZ2luYWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCAzODY1NjMxOTdlM2E1MGIwZTk3YWQ5YWFlODdmNTdkOWFhYjkwOWFiCi1BdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgotRGF0ZToJV2VkIE9jdCAxMCAyMzowMjowOSAyMDA3ICswMzAwCi0KLSAgICBGaXhlZCBwY25ldCBpb19iYXNlCi0KLSAgICBCdXMgYW5kIHBoeXMgYWRkcmVzcyBhcmUgbm90IGFsd2F5cyB0aGUgc2FtZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Ci0KLWNvbW1pdCAxMWVhMjZmZDFjYjYzYzkxNDAzZmUwNGE2ZWVhOTc1Y2Q0MTg2MDNmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgQXByIDI0IDIzOjQ0OjI2IDIwMDggKzAyMDAKLQotICAgIGRyaXZlcnMvbmV0L3BjbmV0LmM6IENvZGluZyBTdHlsZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDg5OWVmN2I4NDU3OGI3Y2FmYWRmZDc4NDg4YzJmZDJhYWM5M2Y2MzYKLUF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Ci1EYXRlOglXZWQgT2N0IDEwIDIzOjA0OjIzIDIwMDcgKzAzMDAKLQotICAgIEFkZGVkIEFtNzlDOTcwQSBjaGlwIGlkIHRvIHBjbmV0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KLQotY29tbWl0IDE3YzlkZTZiYjMzZjY3NmViNzc2ZGNiZmM0NmZjMWIxNGMzODcxYTUKLUF1dGhvcjogTWFnbnVzIExpbGphIDxsaWxqYS5tYWdudXNAZ21haWwuY29tPgotRGF0ZToJU3VuIEFwciAyMCAxMDozNTowMyAyMDA4ICswMjAwCi0KLSAgICBpLk1YMzE6IEZpeCBhcmNoaXRlY3R1cmUgbnVtYmVycyBmb3IgQURTIGFuZCBMaXRla2l0IGJvYXJkcwotCi0gICAgQ29ycmVjdCB0aGUgTGludXggYXJjaGl0ZWN0dXJlIG51bWJlciBmb3IgaS5NWDMxIExpdGVraXQgYW5kIEFEUyBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBlN2FlODRkNmM3Mjg4NzkwZTg4NjM5ZjU3Y2I2MGRhZjg5YzExMzY5Ci1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBcHIgMjAgMTA6MzY6MzYgMjAwOCArMDIwMAotCi0gICAgaS5NWDMxOiBVc2Ugc3ltYm9saWMgbmFtZXMgZm9yIExpdGVraXQgbWVtYmFzZXMuCi0KLSAgICBVc2Ugc3ltYm9saWMgbmFtZXMgaW5zdGVhZCBvZiBoYXJkIGNvZGVkIGFkZHJlc3NlcyBmb3IgTGl0ZWtpdCBtZW1iYXNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLQotY29tbWl0IDJlZjFkOWI2MDMwZDAyZjU3NmIxYmNkOWZlYzk0OGU2MDI1MjIwMTIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBBcHIgMTkgMTc6NTk6MjAgMjAwOCArMDIwMAotCi0gICAgRml4IHNob3dfYm9vdF9wcm9ncmVzcyBwcm90b3R5cGUKLQotICAgIGluIGNvbW1pdCBmYWQ2MzQwNzEgIm1ha2Ugc2hvd19ib290X3Byb2dyZXNzICgpIHdlYWsuIgotICAgIHNob3dfYm9vdF9wcm9ncmVzcyBpcyBzdXBwb3NlZCB0byBiZSBkZWNsYXJlZCBhcyB3ZWFrIGJ1dCBkZWNsYXJlZCBhcwotICAgIGlubGluZSBpbnN0ZWFkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGVkYmVkMjQ3YTE0ZDcwYjk0OTU4MDEwZjczNjYyMTIxMjI4NWRlOTEKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBBcHIgMTggMTI6Mzk6MjMgMjAwOCArMDIwMAotCi0gICAgTWVtb3J5IGZvb3RwcmludCBvcHRpbWl6YXRpb25zCi0KLSAgICBBcyBzdWdnZXN0ZWQgYnkgV29sZmdhbmcgRGVuazoKLSAgICAtIGltYWdlIHByaW50aW5nIGZ1bmN0aW9uczoKLSAgICAgIC0gcmVtb3ZlIHdyYXBwZXJzCi0gICAgICAtIHJlbW92ZSBpbmRlbnRhdGlvbiBwcmVmaXggZnJvbSBmdW5jdGlvbnMnIHNpZ25hdHVyZXMKLSAgICAtIG1lcmdlIGdldGVudl92ZXJpZnkgYW5kIGdldGVudl9hdXRvc3RhcnQgaW50byBvbmUgcGFyYW1ldHJpemVkIGZ1bmN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMGEwYjYwNmZhYWVjNGFmYjNmNzUwYjA5YWE0ZGYxZTQwYTM5ZGNiOAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDE1IDEzOjMzOjExIDIwMDggKzAyMDAKLQotICAgIE1YMzFBRFMgZW52aXJvbm1lbnQgdmFyaWFibGUgdXBkYXRlLCBzcGkgYW5kIHJ0YyBzdXBwb3J0Ci0KLSAgICBVcGRhdGUgTVgzMUFEUyBkZWZhdWx0IGVudmlyb25tZW50IHRvIGJldHRlciBtYXRjaCB0aGUgZmxhc2ggbGF5b3V0IGFuZAotICAgIHRoZSBtZW1vcnkgbWFwLCBzdXBwb3J0IFNQSSBhbmQgUlRDLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgMDIyZjEyMTYzNTk1YjlhNTUzODBjNmQ3N2MzMTE5YjkzZDZhOWE0YgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEFwciAyMSAwOToyODozNiAyMDA4IC0wNTAwCi0KLSAgICA4NXh4OiBSb3VuZCB1cCBmcmVxdWVuY3kgY2FsY3VsYXRpb25zIHRvIGdldCByZWFzb25hYmxlIG91dHB1dAotCi0gICAgZWcuIGJlY2F1c2Ugb2Ygcm91bmRpbmcgZXJyb3Igd2UgY2FuIGdldCA3OTlNaHogaW5zdGVhZCBvZiA4MDBNaHouCi0KLSAgICBJbnRyb2R1Y2VkIERJVl9ST1VORF9VUCBhbmQgcm91bmR1cCB0YWtlbiBmcm9tIGxpbnV4IGtlcm5lbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERlamFuIE1pbmljIDxtaW5pY0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFNyaWthbnRoIFNyaW5pdmFzYW4gPHNyaWthbnRoLnNyaW5pdmFzYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4NzZiOGY5Nzg5ODIyMTZhYjRhMjJkY2Q5ZWZkZGZjZDliMGUwNGU2Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgQXByIDIzIDE2OjU4OjA0IDIwMDggLTA1MDAKLQotICAgIGZzbF9wY2k6IE9ubHkgbW9kaWZ5IHJlZ2lzdGVycyBpZiB3ZSBoYXZlIHRoZW0KLQotICAgIHBtZV9tc2dfZGV0IGV4aXN0cyBvbmx5IG9uIFBDSWUgY29udHJvbGxlcnMgb25seSBzZXQgaXQgaWYgd2UgYXJlIGEgImJyaWRnZSIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgODNmZTMyMzM0MzM3ZGVmMTYwYjMwMmFhOWQxNTJkODA4YmZjYzY4ZQotQXV0aG9yOiBNYXJrdXMgS2xvdHpiw7xjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJV2VkIEFwciAyMyAxMDo1NzozMyAyMDA4ICswMjAwCi0KLSAgICBVU0I6IHJlbW92ZSBhIGNwdSBidWcgd29ya2Fyb3VuZCBmb3IgYW4gdW5zdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IGY5NTc1NzZjYjUzZTZjZmFiNDEyNzA5Y2ZjOGRiMWFmZDM5ZDIxYzMKLUF1dGhvcjogTWFya3VzIEtsb3R6YsO8Y2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgMjMgMTA6NTM6MjMgMjAwOCArMDIwMAotCi0gICAgVVNCOiBmaXggdGhvc2UgcGVza3kgYWxpYXNpbmcgd2FybmluZ3MgaXNzdWVkIGJ5IGdjYy00LjIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCA4OWNkYWI3ODhmMzcxNmIzMzVmZWZiNjBiODM2ZWJjZjk3NWFjZWFiCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBNYXIgMzEgMTE6MDI6MDEgMjAwOCAtMDQwMAotCi0gICAgY3JjMzI6IHVzZSB1aW50MzJfdCByYXRoZXIgdGhhbiB1bnNpZ25lZCBsb25nCi0KLSAgICBUaGUgZW52Y3JjLmMgZG9lcyBzaXplb2YodW5zaWduZWQgbG9uZykgd2hlbiBjYWxjdWxhdGluZyB0aGUgY3JjLCBidXQKLSAgICB0aGlzIGlzIGRvbmUgd2l0aCB0aGUgYnVpbGQgdG9vbGNoYWluIGluc3RlYWQgb2YgdGhlIHRhcmdldCB0b29sCi0gICAgY2hhaW4sIHNvIGlmIHRoZSBidWlsZCBpcyBhIDY0Yml0IHN5c3RlbSBidXQgdGhlIHRhcmdldCBpcyAzMmJpdHMsCi0gICAgdGhlIHNpemUgd2lsbCBvYnZpb3VzbHkgYmUgd3JvbmcuIFRoaXMgY29udmVydHMgYWxsIHVuc2lnbmVkIGxvbmcKLSAgICBzdHVmZiByZWxhdGVkIHRvIGNyYzMyIHRvIHVpbnQzMl90IHR5cGVzLiBDb21waWxlIHRlc3RlZCBvbmx5OiBvdXRwdXQKLSAgICBvZiAuL3Rvb2xzL2VudmNyYyB3aGVuIHJ1biBvbiBhIDMyYml0IGJ1aWxkIHN5c3RlbSBtYXRjaGVzIHRoYXQgb2YgYQotICAgIDY0Yml0IGJ1aWxkIHN5c3RlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDgwYzQwYjc2NWIzNjQyZGRiOWYzMzkyYjc4OTg3MTVhYWI0NGEyOWMKLUF1dGhvcjogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnb29nbGVtYWlsLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMDk6NTM6MjkgMjAwOCArMDEwMAotCi0gICAgQVJNOiBEYXZpbmNpOiBGaXggRE02NDR4IHRpbWVyIG92ZXJmbG93IGhhbmRsaW5nIGFuZCBjbGVhbnVwCi0KLSAgICBGaXggQVJNIGJhc2VkIERhVmluY2kgRE02NDR4IHRpbWVyIG92ZXJmbG93IGhhbmRsaW5nIGFuZCBjbGVhbnVwIHRpbWVyIGNvZGUuCi0KLSAgICBDaGFuZ2VzOgotCi0gICAgLSBSZW1vdmUgKl9tYXNrZWQoKSBmdW5jdGlvbnMgYXMgbm90ZWQgYnkgV29sZmdhbmcKLQotICAgIC0gQWRhcHQgcmVnaXN0ZXIgbmFtaW5nIHRvIHJlY2VudCBUSSBzcGVjIChzcHJ1ZTI2LCBNYXJjaCAyMDA3KQotCi0gICAgLSBGaXggcmVzZXRfdGltZXIoKSBoYW5kbGluZwotCi0gICAgLSBBcyByZXBvcnRlZCBieSBQaWV0ZXIgWzFdIHRoZSBvdmVyZmxvdyBmaXggaW50cm9kdWNlZCBhIGRlbGF5IG9mIGZhY3RvciAxNiAoZS5nIDIgc2Vjb25kcyBiZWNhbWUgMzIpLiBXaGlsZSB0aGUgb3ZlcmZsb3cgZml4IGlzIGJhc2ljYWxseSBva2F5LCBpdCBtaXNzZWQgdG8gZGl2aWRlIHVkZWxheSBieSAxNiwgdG9vLiBGaXggdGhpcy4KLQotICAgIFsxXSBodHRwOi8vYXJ0aWNsZS5nbWFuZS5vcmcvZ21hbmUuY29tcC5ib290LWxvYWRlcnMudS1ib290LzM4MTc5Ci0KLSAgICAtIFJlbW92ZSBzb2Z0d2FyZSBkaXZpc2lvbiBvZiB0aW1lciBjb3VudCB2YWx1ZSAoRElWKHgpIG1hY3JvKSBhbmQgZG8gaXQgaW4gaGFyZHdhcmUgKFRJTV9DTEtfRElWKS4KLQotICAgIE1hbnkgdGhhbmtzIHRvIFRyb3kgS2lza3kgPHRyb3kua2lza3lAYm91bmRhcnlkZXZpY2VzLmNvbT4gYW5kIFBpZXRlciBWb29ydGh1aWpzZW4gPHBpZXRlci52b29ydGh1aWpzZW5AUHJvZHJpdmUubmw+IGZvciB0aGUgaGludHMgJiB0ZXN0aW5nIQotCi0gICAgUGF0Y2ggaXMgY29tcGlsZSB0ZXN0ZWQgd2l0aCBkYXZpbmNpX2R2ZXZtICYgc29uYXRhICYgc2NobW9vZ2llIGNvbmZpZ3VyYXRpb24gYW5kIHRlc3RlZCBieSBQaWV0ZXIgb24gRGFWaW5jaSBFVk0gaGFyZHdhcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4KLQotY29tbWl0IGE2ZTZmYzYxMGUzOWRlYzQxYjc5NjgwNDEzZDRlZDM4MTQ1YmQzYzgKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVdlZCBBcHIgOSAxNjowOTo0MSAyMDA4ICswMjAwCi0KLSAgICBBZGRlZCB3YXRjaGRvZyB0cmlnZ2VyaW5nIGNhbGxzIGluIHRoZSAibXRlc3QiIHRlc3QgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgZDMyYTg3NGI5YjRjMWU5NDllZTM4YmU3NzkwZjZiZjZkNjE0MzQ1MQotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglTdW4gQXByIDYgMTk6MTk6MTQgMjAwOCArMDIwMAotCi0gICAgbHdtb241IHdhdGNoZG9nOiBsaW1pdCB0cmlnZ2VyIHJhdGUKLQotICAgIExpbWl0IHRoZSByYXRlIG9mIGgvdyB3YXRjaC1kb2cgdHJpZ2dlcmluZyBvbiB0aGUgTFdNT041IGJvYXJkIGJ5Ci0gICAgdGhlIENPTkZJR19XRF9NQVhfUkFURSB2YWx1ZS4KLQotICAgIE5vdGUgdGhhdCBhbiBlYXJsaWVyIHZlcnNpb24gb2YgdGhpcyBwYXRjaCB3aGljaCB1c2VkIG1pY3Jvc2Vjb25kcwotICAgIGluc3RlYWQgb2YgdGlja3MgZGlzIG5vdCB3b3JrLiBUaGUgcHJvYmxlbSB3YXMgdGhhdCB3ZSB1c2VkCi0gICAgdXNlYzJ0aWNrcygpIHRvIGNvbnZlcnQgbWljcm9zZWNvbmRzIGludG8gdGlja3MuIHVzZWMydGlja3MoKSB1c2VzCi0gICAgZ2V0X3RiY2xrKCksIHdoaWNoIGluIHR1cm4gY2FsbHMgZ2V0X3N5c19pbmZvKCkuIEl0IHR1cm5zIG91dCB0aGF0Ci0gICAgdGhpcyBmdW5jdGlvbiBkb2VzIGEgbG90IG9mIHByb2xvbmdlZCBvcGVyYXRpb25zIChsaWtlIGRpdmlzaW9ucykKLSAgICB3aGljaCB0YWtlIHRvbyBtdWNoIHRpbWUgc28gd2UgZG8gbm90IHRyaWdnZXIgdGhlIHdhdGNoZG9nIGluIHRpbWUsCi0gICAgYW5kIGl0IHJlc2V0cyB0aGUgc3lzdGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgMmQyYjk5NGEzMGJiMTAwNzc0ZGM3NDdhZTk4NjViN2Y5NTI4NWE4OAotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglNb24gTWFyIDMxIDEwOjUxOjM3IDIwMDggKzAyMDAKLQotICAgIFBPU1Q6IG1vdmUgQ09ORklHX1BPU1QgdG8gTWFrZWZpbGVzCi0KLSAgICBJbnRyb2R1Y2UgdGhlIG5ldyBsb2dpY2FsIG9wdGlvbiBDT05GSUdfSEFTX1BPU1Qgd2hpY2ggaXMgc2V0IHdoZW4gdGhlCi0gICAgcGxhdGZvcm0gaGFzIENPTkZJR19QT1NUIHNldC4gVXNlIENPTkZJR19IQVNfUE9TVCBpbiB0aGUgcG9zdC8gTWFrZWZpbGVzCi0gICAgdG8gZGV0ZXJtaW5lIHNob3VsZCB0aGUgUE9TVCBsaWJzIGJlIGNvbXBpbGVkIGZvciB0aGUgc2VsZWN0ZWQgdGFyZ2V0Ci0gICAgcGxhdGZvcm0sIG9yIG5vdC4KLQotICAgIFRvIGF2b2lkIGJyZWFraW5nIHUtYm9vdCBsaW5raW5nIHByb2Nlc3MsIHRoZSBlbXB0eSBwb3N0L2xpYnBvc3QuYSBmaWxlIGlzCi0gICAgY3JlYXRlZCBmb3IgcGxhdGZvcm1zIHdoaWNoIGRvIG5vdCBoYXZlIFBPU1RzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwYTUxZTkyNDhlMmQyN2UwYTAyZWYxZTc0MGM1NzZjZTkwYTM5ZWUxCi1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CU1vbiBNYXIgMzEgMTA6NDk6MzQgMjAwOCArMDIwMAotCi0gICAgUE9TVDogcHJlcGFyYXRpb25zIGZvciBtb3ZpbmcgQ09ORklHX1BPU1QgdG8gTWFrZWZpbGVzCi0KLSAgICBSZW1vdmUgQ09ORklHX1BPU1QgaWZkZWZzIGZyb20gdGhlIHBvc3QvIHNvdXJjZSBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNWQ0MGQ0NDMwZDllYmM4NDM0YzZmMDc5ODU5NDgzNmUxZWZhN2ExZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDIyIDE0OjE0OjIwIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IENhbnlvbmxhbmRzIGFuZCBHbGFjaWVyIGRlZmF1bHQgZW52aXJvbm1lbnQgZm9yIGZkdCB1c2FnZQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgQ2FueW9ubGFuZHMgYW5kIEdsYWNpZXIgZGVmYXVsdCBlbnZpcm9ubWVudCB0byBiZXR0ZXIKLSAgICBmaXQgdG8gdGhlIGFyY2gvcG93ZXJwYyBkZXZpY2UtdHJlZSBrZXJuZWxzLiBUaGUgdmFyaWFibGVzIGRlYWxpbmcgd2l0aAotICAgIGFyY2gvcHBjIGJvb3RpbmcgYXJlIHJlbW92ZWQsIHNpbmNlIHRoZXNlIGJvYXJkcyBhcmUgc3VwcG9ydGVkIG9ubHkgaW4KLSAgICBhcmNoL3Bvd2VycGMuIEdsYWNpZXIgdXNlcyB0aGUgc2FtZSBjb25maWcgZmlsZSBhcyBDYW55b25sYW5kcy4KLQotICAgIEFsc28sIHRoZSBHbGFjaWVyIG5vdyB1c2VzIG5vbi1GUFUgcm9vdHBhdGgsIHNpbmNlIDQ2MEdUIGhhcyBubyBGUFUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiNzg5Y2I0YTRjMGMxZGVmZjgyMDUzNTM5Y2ZlMjlhOWM2ZTIzZjhiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMjIgMTQ6MDY6NDIgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBTbWFsbCBjb2Rpbmcgc3R5bGUgY2xlYW51cCBmb3IgdGhlIGxhdGVzdCBlc2QgcGF0Y2hlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzk5NDFkNjNiYzAzYWVkOGM0OGQ3NjAyZjE4MjE3Y2MyMDBlZTkzMQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CU1vbiBBcHIgMjEgMTg6MDE6MDcgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgQ1BVIHN0cmFwcGluZyBmb3IgUE1DNDQwIGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSB0ZW1wb3JhcnkgJ3Rlc3QnIHN0cmFwcGluZyBvcHRpb24KLSAgICBvZiB0aGUgc2JlIGNvbW1hbmQuIFRoZSAnNjY3JyBzdHJhcHBpbmcgb3B0aW9uIG5vdyB1c2VzCi0gICAgYSBQTEIvUENJIGRpdmlkZXIgb2YgMy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgZjAwY2YzMTkzYTY2MzUzNTViMTIxZTkwZGViYjJmNTRlNzc3ZTdkYQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CU1vbiBBcHIgMjEgMTQ6NDI6MjEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgdW51c2VkIEFQQzQwNSBzdHJhdGFmbGFzaCBkcml2ZXIKLQotICAgIFRoZSBBUEM0MDUgYm9hcmQgc3VwcG9ydCBoYXMgYmVlbiBtaWdyYXRlZCB0byB1c2UgdGhlIGNvbW1vbgotICAgIENGSSBmbGFzaCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDFjNjg2Njc2YTg2NDczYmJkOTIxNTFmMDU0NGUxMDk0MTNmNmVkMDYKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglNb24gQXByIDIxIDE0OjQyOjE3IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEFQQzQwNSBjb25maWd1cmF0aW9uCi0KLSAgICAtIGVuYWJsZSBlc2QncyBhdXRvX3VwZGF0ZSBtZWNoYW5pc20KLSAgICAtIHN1cHBvcnQgYWx0ZXJuYXRpdmUgZmxhc2ggbGF5b3V0IG9uIHJldi4gMS44IGJvYXJkcwotICAgIC0gdXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQKLSAgICAtIHVzZSBjb21tb24gQ0ZJIGZsYXNoIGRyaXZlcgotICAgIC0gY29kaW5nIHN0eWxlIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgMGI5ODcyNTE1YTUyMWJmNzg2NmRjMjRiODVkZGNlNzA4ZTYwZDcwMgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CU1vbiBBcHIgMjEgMTQ6NDI6MTEgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgQVBDNDA1IGJvYXJkIHN1cHBvcnQKLQotICAgIC0gZW5hYmxlIGVzZCdzIGF1dG9fdXBkYXRlIG1lY2hhbmlzbQotICAgIC0gZml4IExDRCBzdXBwb3J0IG9uIGxhdGVzdCBoYXJkd2FyZSByZXZpc2lvbiAodXNlcyBvdGhlciBMQ0QgY29udHJvbGxlcikKLSAgICAtIHN1cHBvcnQgYWx0ZXJuYXRpdmUgZmxhc2ggbGF5b3V0IG9uIHJldi4gMS44IGJvYXJkcwotICAgIC0gY29kaW5nIHN0eWxlIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgODM5NzVkMDJlMjI1ZTIzMTk2MDc4NDk3MmU3ODIwYThiMzAzNzU2YgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CU1vbiBBcHIgMjEgMTQ6NDI6MDYgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiB1cGRhdGUgZXNkJ3MgY29tbW9uIGF1dG9fdXBkYXRlIGNvZGUgZm9yIDQwNSBib2FyZHMKLQotICAgIC0gQ29kaW5nIHN0eWxlIGNsZWFudXAgKGxvbmcgbGluZXMpCi0gICAgLSBpbXByb3ZlIGhhbmRsaW5nIG9mIHByb3RlY3RlZCBmbGFzaCByZWdpb25zCi0gICAgLSByZW1vdmUgZGVhZCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGI5MjMzZmU1ZDU5Y2IyNWQ5NzUwNzE2MTZiZDEwMzVkNmY0YzIyODUKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglNb24gQXByIDIxIDE0OjQxOjU5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIGVzZCdzIGNvbW1vbiBMQ0QgY29kZSBmb3IgNDA1IGJvYXJkcwotCi0gICAgLSBDb2Rpbmcgc3R5bGUgY2xlYW51cCAobG9uZyBsaW5lcykKLSAgICAtIEFkZCBzMWQxMzUwNSBzdXBwb3J0Ci0gICAgLSBNYWtlIHNvbWUgZnVuY3Rpb25zIHJldHVybiBhIHJlc3VsdCBjb2RlIGluc3RlYWQgb2Ygdm9pZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBkZWE2ODE4OTQyNGMzZjEyNDI0MjdhODE0NmEzODYxYmYwOTMxNzNjCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJTW9uIEFwciAyMSAxMTozNjo1NSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBGUEdBIGltYWdlIGZvciBBUEM0MDUgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDJhMDViMTUyOTI0YWNmY2VjM2IwMzc2OTMzMjllNTE3ZTZkMzU3OGYKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglNb24gQXByIDIxIDExOjM2OjA4IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIGJvb3Rsb2dvIGZvciBBUEM0MDUgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDhkZWFmZGM2YWQzNjgzNjhjZjAzYjU4Y2FiNGJkMzlmNDVkNjRiNWMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAxOCAxNjo0MTozMSAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBkY2FjaGVfZW5hYmxlKCkgZm9yIDQ0MAotCi0gICAgZGNhY2hlX2VuYWJsZSgpIHdhcyBtaXNzaW5nIGZvciA0NDAgYW5kIHRoZSBwYXRjaAotICAgIDAxN2U5Yjc5MjVmNzQ4NzhkMGU5NDc1Mzg4Y2NhOWJkYTVlZjk0ODIgWyJhbGxvdyBwb3J0cyB0byBvdmVycmlkZSBib290ZWxmCi0gICAgIl0gYmVoYXZpb3IgdXNlcyB0aGlzIGZ1bmN0aW9uLgotCi0gICAgTm90ZTogQ3VycmVudGx5IHRoZSBjYWNoZSBoYW5kbGluZyBmdW5jdGlvbnMgbGlrZQotICAgIGQvaWNhY2hlX2Rpc2FibGUvZW5hYmxlKCkgYXJlIE5PUCdzIG9uIDQ0MC4gVGhpcyBtYXkgYmUgY2hhbmdlZCBpbiB0aGUKLSAgICBmdXR1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhNDllMGQxNzdhMDc0OTYxNGIzMTZlYzg0N2ZiNjIzZjA5YzgyYzA3Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJTW9uIEFwciAyMSAxMToxOTowNCAyMDA4ICswMjAwCi0KLSAgICB2aWRlbzogQWRkIG1pc3NpbmcgZnJlZSBmb3IgbG9nbyBtZW1vcnkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0d28gbWlzc2luZyBmcmVlKClzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA4NGMwMWQzYTA1YWUzYWNhNWY3YzBjMTNhMzFjYTcyYmExMTk5YTQyCi1BdXRob3I6IFRyb3kgS2lza3kgPHRyb3kua2lza3lAYm91bmRhcnlkZXZpY2VzLmNvbT4KLURhdGU6CU1vbiBTZXAgMjQgMTY6NDE6NDMgMjAwNyAtMDcwMAotCi0gICAgUEFUQ0ggLSBGaXggb29iIGRhdGEgY29waWVkIGludG8gc3VwcGxpZWQgYnVmZmVyCi0KLSAgICBUaGlzIHBhdGNoIGNvcnJlY3RseSBzZXRzIHRoZSBvb2JhdmFpbCB2YXJpYWJsZQotICAgIGFuZCBmaXhlcyBhIGJ1ZyB3aGVyZSB0aGUgb29iIGRhdGEgd2FzIG5vdCB2YWxpZCB3aGVuCi0gICAgdGhlcmUgd2hlcmUgbXVsdGlwbGUgZ3JvdXBzIGluIG9vYmZyZWUuCi0KLSAgICBGaXJzdCBzZWdtZW50IGZpeGVzIGEgdHlwbwotICAgIFNlY29uZCBzZWdtZW50IGZpeGVzIGEgYnVnIHdoZXJlIG9vYiBkYXRhIG1heSBiZSBjb3BpZWQgaW5jb3JyZWN0bHkuCi0gICAgVGhpcmQgc2VnbWVudCBhZGRzIGFuIGVycm9yIG1lc3NhZ2Ugd2hlbiBleGl0aW5nIGR1ZSB0byB3cml0ZSBwcm90ZWN0LgotICAgIEZvcnRoIHNlZ21lbnQgZml4ZXMgYSBidWcgd2hlcmUgb29iYXZhaWwgbWF5IGJlIHNldCBpbmNvcnJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRyb3kgS2lza3kgPHRyb3kua2lza3lAYm91bmRhcnlkZXZpY2VzLmNvbT4KLQotY29tbWl0IGUxZDA5NjgwZjY0YjQ1MmFkZGU4OWVkOWZlMjhhNzdjNTZiZWRjOWEKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgQXByIDE4IDE3OjI0OjMyIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHN5c19nZXRfaW5mbygpIGZvciA0MDVHUChyKQotCi0gICAgVGhpcyBwYXRjaCBhc3NpZ25zIHRoZSBjb3JyZWN0IEVCQyBjbG9jayBmb3IgNDA1R1AocikgQ1BVcwotICAgIHRvIFBQQzR4eF9TWVNfSU5GTyBzdHJ1Y3R1cmUuIFdpdGhvdXQgdGhpcyBwYXRjaCBVLUJvb3QKLSAgICB1c2VzIGFuIHVuaW5pdGlhbGl6ZWQgRUJDIGNsb2NrIGluIGl0cyBzdGFydHVwIG1lc3NhZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGRjNzc0NmQ4NmQyYTNkZmUwMWFiOWE3MGNiNDI3ZjkyYWRjMzAzYzcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBBcHIgMjAgMTU6Mzk6MzggMjAwOCAtMDcwMAotCi0gICAgTWFrZWZpbGU6IHJlbW92ZSBuYW5kX3NwbC9TeXN0ZW0ubWFwIHdoZW4gY2xlYW5pbmcgdXAuCi0KLWNvbW1pdCBkOWE0MmMwYWNlNGQ0ZjljYjA2MWQ2MmE3MjY1ZDE3ODBmOTA0NDdiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gQXByIDIwIDE1OjM1OjUyIDIwMDggLTA3MDAKLQotICAgIE1BS0VBTEw6IHNvcnQgZW50cmllcyAvIGxpc3RzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDA4NzhhZjE2OWIxODE4NjhhMTA1YjVjMzNmM2E2NDIzZTJjOWZkNjAKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBBcHIgMTggMTE6Mjk6MDEgMjAwOCAtMDUwMAotCi0gICAgODV4eDogRml4IHNpemUgb2YgY3B1LXJlbGVhc2UtYWRkciBwcm9wZXJ0eQotCi0gICAgVGhlIGNwdS1yZWxlYXNlLWFkZHIgaXMgZGVmaW5lZCBhcyBhbHdheXMgYmVpbmcgYSA2NC1iaXQgcXVhbml0eSByZWdhcmRsZXNzCi0gICAgaWYgd2UgYXJlIHJ1bm5pbmcgb24gYSAzMi1iaXQgb3IgNjQtYml0IG1hY2hpbmUuCi0KLWNvbW1pdCA4ODM1M2E5ODUxMDk1NjJhNjM5YjJmOGEwYzkwZDc3MDExYmZlMzc0Ci1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgQXByIDQgMTE6MTU6NTggMjAwOCAtMDUwMAotCi0gICAgRml4IGNhbGN1bGF0aW9uIG9mIEkyQyBjbG9jayBmb3Igc29tZSA4NXh4IGNoaXBzCi0KLSAgICBTb21lIDg1eHggY2hpcHMgdXNlIENDQiBhcyB0aGUgYmFzZSBjbG9jayBmb3IgdGhlIEkyQy4gIFNvbWUgdXNlIENDQi8yLCBhbmQKLSAgICBzb21lIHVzZSBDQ0IvMy4gIFRoZXJlIGlzIG5vIHBhdHRlcm4gdGhhdCBjYW4gYmUgdXNlZCB0byBkZXRlcm1pbmUgd2hpY2gKLSAgICBjaGlwcyB1c2Ugd2hpY2ggZnJlcXVlbmN5LCBzbyB0aGUgb25seSB3YXkgdG8gZGV0ZXJtaW5lIGlzIHRvIGxvb2sgdXAgdGhlCi0gICAgYWN0dWFsIFNPQyBkZXNpZ25hdGlvbiBhbmQgdXNlIHRoZSByaWdodCB2YWx1ZSBmb3IgdGhhdCBTT0MuCi0KLSAgICBVcGRhdGUgaW1tYXBfODV4eC5oIHRvIGluY2x1ZGUgdGhlIEdVVFMgUE9SREVWU1IyIHJlZ2lzdGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFlMDE0NzdhZWFmNDA5ZGRiOTdlMjYzM2FhYjljZjhjOWM2MDYxMmUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBBcHIgMTggMTE6NDQ6MjcgMjAwOCAtMDcwMAotCi0gICAgRml4IGJ1aWxkIGJyZWFrYWdlIGNhc3VlZCBieSBjb21taXQgYzA1NTliZTM3MWIyCi0KLQlDaGFuZ2UgZW52X2dldF9jaGFyIGZyb20gYSBnbG9iYWwgZnVuY3Rpb24gcHRyIHRvIGEgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMjY4YTgwNGQ3ZTJmYTA3YjY0MjExZmQyZjlhOTYxNWRiNDUzOWYyMwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAxOCAxMDo1Mzo0MSAyMDA4IC0wNzAwCi0KLSAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA5MmJhZDIwYWQ3NGI3MGFkZjM4MzlkZjlhMGE0N2NjZTAwMGFjM2Q3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBBcHIgOCAxNDowMDo1NyAyMDA4IC0wNDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdS1ib290IGluIHN2biBhbmQgbG9jYWx2ZXJzaW9uLSogZmlsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQyM2ZmNjgyN2RlY2YxMjE0NjFmYmM1NjIyNjEyZmQ3ZWZmZTIwN2UKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVGh1IEFwciAzIDE3OjA0OjIyIDIwMDggKzAyMDAKLQotICAgIE1YMzFBRFMgbmV0d29yayBhbmQgZmxhc2ggdXBkYXRlcwotCi0gICAgVGhpcyBwYXRjaCBhbGxvd3MgVS1Cb290IHRvIHVzZSBidWZmZXJlZCB3cml0ZXMgdG8gdGhlIFNwYW5zaW9uIE5PUgotICAgIGZsYXNoIGluc3RhbGxlZCBvbiB0aGlzIGJvYXJkLCBhbmQgZWxpbWluYXRlcyBsb25nIGRlbGF5cyBpbiBuZXR3b3JrCi0gICAgdHJhbnNmZXJzIGFmdGVyIHRoZSBib2FyZCBzdGFydHVwLgotCi0gICAgQWxzbyBtb2RpZnkgZmxhc2ggbGF5b3V0IHRvIGVtYmVkIG1haW4gYW5kIHJlZHVuZGFudCBlbnZpcm9ubWVudAotICAgIGJsb2NrcyBpbiB0aGUgVS1Cb290IGltYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgYjVkYzliMzA0ZDI4OTgzMWYyOTE4NDNmZjg4YTQ1Y2JkZjFhNjI5MAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglNb24gQXByIDE0IDEwOjUzOjEyIDIwMDggKzAyMDAKLQotICAgIFN1cHBvcnQgZm9yIHRoZSBNWDMxQURTIGV2YWx1YXRpb24gYm9hcmQgZnJvbSBGcmVlc2NhbGUKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgTVgzMUFEUyBldmFsdWF0aW9uIGJvYXJkIGZyb20gRnJlZXNjYWxlLAotICAgIGluaXRpYWxpemF0aW9uIGNvZGUgaXMgY29waWVkIGZyb20gUmVkQm9vdCBzb3VyY2VzLCBhbHNvIHByb3ZpZGVkIGJ5Ci0gICAgRnJlZXNjYWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgNDk5ZTc4MzFlMWJhYWFjNmJmYjk1OTIxM2YxOTUwYzIxNmZiYzViYQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDggMTA6MzM6MjkgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBDaGFuZ2UgQ2FueW9ubGFuZHMgdG8gc3VwcG9ydCBib290aW5nIGZyb20gMmsgcGFnZSBOQU5EIGRldmljZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDVlMTgyZGNlMDRkNjhjYzk0NDA3YTFiMWZhMDkzMDdmMmJiOTY3MTkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEFwciA4IDEwOjMzOjI4IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQWRqdXN0IENhbnlvbmxhbmRzIGZpeGVkIEREUjIgc2V0dXAgKE5BTkQgYm9vdGluZykgdG8gNTEyTUIgU09ESU1NCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmZTdjMGRiNmIyYTkwMDRmOTZjMmEyZDRmZmYyODQ5ZTE5YzJkODI1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgOCAxMDozMzoyNyAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBHbGFjaWVyIE5BTkQgYm9vdGluZyB0YXJnZXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQ2ZjM3MzgzOGUzODRhNGMyM2QxMzU4MWIxZGZhNWFjYjY2YjU4MTAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEFwciA4IDEwOjMxOjAwIDIwMDggKzAyMDAKLQotICAgIG5hbmRfc3BsOiBVcGRhdGUgbmFuZF9zcGwgdG8gc3VwcG9ydCAyayBwYWdlIHNpemUgTkFORCBkZXZpY2VzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgYm9vdGluZyBmcm9tIDJrIHBhZ2Ugc2l6ZWQgTkFORCBkZXZpY2UKLSAgICAoZS5nLiBNaWNyb24gMjlGMkcwOEFBQykuCi0KLSAgICBUZXN0ZWQgb24gQU1DQyBDYW55b25sYW5kcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDVlM2RjYTU3N2I3YzFiZjU4YmQyYjQ4NDQ5YjE4YjdlN2RjZDhlMDQKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVGh1IEFwciAxNyAxODoxODowMCAyMDA4ICswMjAwCi0KLSAgICBGaXggY3Jhc2ggb24gc2VxdW9pYSBpbiBwcGNfNHh4X2V0aF9pbml0Ci0KLSAgICBDdXJyZW50bHkgVS1Cb290IGNyYXNoZXMgaW4gcHBjXzR4eF9ldGhfaW5pdCBvbiBzZXF1b2lhCi0gICAgd2l0aCBjYWNoZSBlbmFibGVkIChUTEIgUGFyaXR5IGV4ZXB0aW9uKS4gVGhpcyBwYXRjaAotICAgIGZpeGVzIHRoZSBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgYWNjZjczNTU3NjdkYzdmNmI4NWQ4OGJiMWM3NWM5ZDk1ZTg0YmE1YgotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglUaHUgQXByIDE3IDE4OjE1OjI3IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGNyYXNoIG9uIHNlcXVvaWEgd2l0aCBjYWNoZSBlbmFibGVkCi0KLSAgICBDdXJyZW50bHkgVS1Cb290IGNyYXNoZXMgb24gc2VxdW9pYSBib2FyZCBpbiBDUFUgUE9TVCBpZgotICAgIGNhY2hlIGlzIGVuYWJsZWQgKENPTkZJR180eHhfRENBQ0hFIGRlZmluZWQpLiBUaGUgY2FjaGUKLSAgICB3b24ndCBiZSBkaXNhYmxlZCBieSBjaGFuZ2VfdGxiIGJlZm9yZSBDUFUgUE9TVCBiZWNhdXNlCi0gICAgdGhlcmUgaXMgYW4gaW5zdWZmaWNpZW50IGFkcmVzcyByYW5nZSBjaGVjayBzaW5jZQotICAgIENGR19NRU1fVE9QX0hJREUgd2FzIGludHJvZHVjZWQuIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4Ci0gICAgdGhpcyBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNDNjNTA5MjU0ZmFiMzc1YzQ5OTM2NDk4ZGE5NDQ2NTgxMTdlZDA3YwotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJVGh1IEFwciAxNyAyMzozNToxMyAyMDA4ICswOTAwCi0KLSAgICBVc2UganIgYXMgcmVnaXN0ZXIganVtcCBpbnN0cnVjdGlvbgotCi0gICAgQ3VycmVudCBhc3NlbWJsZXIgY29kZXMgYXJlIGluY29uc2lzdGVudCBpbiB0aGUgd2F5IG9mIHJlZ2lzdGVyIGp1bXAKLSAgICBpbnN0cnVjdGlvbiB1c2FnZTsgc29tZSB1c2UganIsIHNvbWUgdXNlIGouIE9mIGNvdXJzZSBHTlUgYXMgYWxsb3dzIGJvdGgKLSAgICB1c2FnZXMsIGJ1dCBhcyBjYW4gYmUgZXhwZWN0ZWQgZnJvbSBgSnVtcCBSZWdpc3RlcicgdGhlIG1uZW1vbmljIGBqcicgaXMKLSAgICBtb3JlIGludHVpdGl2ZSB0aGFuIGBqJy4gRm9yIGV4YW1wbGUsIExpbnV4IGRvZXNuJ3QgaGF2ZSBgaiA8cmVnPicgdXNhZ2UKLSAgICBhdCBhbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgN2NlNjM3MDk4MjhkMzdiMDg4NjZlNTM3MzM5YTE2OWJkMGRiMmJkMwotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDE1IDE0OjE1OjMwIDIwMDggKzAyMDAKLQotICAgIFJUQyBkcml2ZXIgZm9yIE1DMTM3ODMKLQotICAgIE1DMTM3ODMgaXMgYSBtdWx0aWZ1bmN0aW9uIElTIHdpdGggYW4gU1BJIGludGVyZmFjZSB0byB0aGUgaG9zdC4gVGhpcwotICAgIGRyaXZlciBoYW5kbGVzIHRoZSBSVEMgY29udHJvbGxlciBpbiB0aGlzIGNoaXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCAzODI1NGY0NWIwYjQxMjMzMjcyNmM5MGQzMTg0YWQ0NzQ3OWZjZmZiCi1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMTUgMTQ6MTQ6MjUgMjAwOCArMDIwMAotCi0gICAgTmV3IGkuTVgzMSBTUEkgZHJpdmVyCi0KLSAgICBUaGlzIGlzIGFuIFNQSSBkcml2ZXIgZm9yIGkuTVggYW5kIE1YQyBiYXNlZCBTb0NzIGZyb20gRnJlZXNjYWxlLiBTbyBmYXIKLSAgICBvbmx5IGltcGxlbWVudGVkIGFuZCB0ZXN0ZWQgb24gaS5NWDMxLCBjYW4gd2l0aCBhIG1vZGlmaWVkIHJlZ2lzdGVyIGxheW91dAotICAgIGFuZCBkZWZpbml0aW9ucyBiZSB1c2VkIGZvciBpLk1YMjcsIEkgdGhpbmssIE1YQyBDUFVzIGhhdmUgc2ltaWxhciBTUEkKLSAgICBjb250cm9sbGVycyB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCA3MDY0MTIyYzJlZWY5MmYwMmEwM2VmMzdhMWExYzA3ZTcwY2Q0ZTM4Ci1BdXRob3I6IE1hZ251cyBMaWxqYSA8bGlsamEubWFnbnVzQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBBcHIgMTUgMTk6MDk6MTAgMjAwOCArMDIwMAotCi0gICAgRml4IG5hbWUgb2YgaS5NWDMxIGJvYXJkcyBpbiBjb25maWcgZmlsZSBoZWFkZXIKLQotICAgIENvcnJlY3QgdGhlIG5hbWUgb2YgdGhlIGkuTVgzMSBMaXRla2l0IGFuZCBwaHlDT1JFIGJvYXJkcyBpbiBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWdudXMgTGlsamEgPGxpbGphLm1hZ251c0BnbWFpbC5jb20+Ci0KLWNvbW1pdCBhNDk4NjQ1OTNlMDgzYTVkMDc3OWZiOWNhOThlNWEwZjIwNTMxODNkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBBcHIgMTMgMTk6NDI6MTkgMjAwOCAtMDQwMAotCi0gICAgYWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgZ28gYmVoYXZpb3IKLQotICAgIFNwbGl0IHRoZSBhcmNoLXNwZWNpZmljIGxvZ2ljIG91dCBvZiB0aGUgY29tbW9uIGdvIGNvZGUgYW5kIGludG8gYSBkZWRpY2F0ZWQKLSAgICB3ZWFrIGZ1bmN0aW9uIGNhbGxlZCBkb19nb19leGVjKCkgdGhhdCBsaXZlcyBpbiBjcHUgZGlyZWN0b3JpZXMuICBUaGlzIHdpbGwKLSAgICBuZWVkIHJldmlldyBmcm9tIGkzODYvbmlvcyBwZW9wbGUgdG8gbWFrZSBzdXJlIEkgZGlkbid0IGJyZWFrIHRoZW0uCi0KLWNvbW1pdCAwMTdlOWI3OTI1Zjc0ODc4ZDBlOTQ3NTM4OGNjYTliZGE1ZWY5NDgyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVN1biBBcHIgMTMgMTk6NDI6MTggMjAwOCAtMDQwMAotCi0gICAgYWxsb3cgcG9ydHMgdG8gb3ZlcnJpZGUgYm9vdGVsZiBiZWhhdmlvcgotCi0gICAgQ2hhbmdlIHRoZSBib290ZWxmIHNldHVwIGZ1bmN0aW9uIGludG8gYSBkZWRpY2F0ZWQgd2VhayBmdW5jdGlvbiBjYWxsZWQKLSAgICBkb19ib290ZWxmX2V4ZWMuICBUaGlzIHdheSBwb3J0cyBjYW4gY29udHJvbCB0aGUgYmVoYXZpb3IgaG93ZXZlciB0aGV5Ci0gICAgbGlrZSBiZWZvcmUvYWZ0ZXIgY2FsbGluZyB0aGUgRUxGIGVudHJ5IHBvaW50LgotCi1jb21taXQgYTRiNDZlZDZiMzUwMjMzNWMzZjNhNWQ2NzJhYmUwYmNiNDRmMjBiNwotQXV0aG9yOiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KLURhdGU6CVNhdCBBcHIgMTIgMjA6NTY6MDMgMjAwOCArMDIwMAotCi0gICAgUmVvcmRlciBBUk0gYm9hcmRzIGluIE1ha2VmaWxlCi0KLSAgICBSZWFycmFuZ2UgQVJNIGJvYXJkcyBpbiBNYWtlZmlsZSBzbyB0aGF0IEFSTTkyNkVKLVMgYm9hcmRzCi0gICAgYXJlIG5vIGxvbmdlciB1bmRlciBBUk05MnhUIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFVsZiBTYW11ZWxzc29uIDx1bGZAYXRtZWwuY29tPgotICAgIEFjay1CeSBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYzNhNjBjYjNiZDY3ZTEyMGZjOTliNmJhODhkOTI5NWMzYzA3ZjY4OAotQXV0aG9yOiBVbGYgU2FtdWVsc3NvbiA8dWxmQGF0bWVsLmNvbT4KLURhdGU6CVNhdCBBcHIgMTIgMjA6Mjk6NDQgMjAwOCArMDIwMAotCi0gICAgQ2xlYW4gdXAgZGF0YWZsYXNoIHBhcnRpdGlvbmluZwotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBib2FyZCBkZXBlbmRlbnQgcGFydHMgZnJvbQotICAgICJkcml2ZXJzL210ZC9kYXRhZmxhc2guYyIuCi0gICAgRWFjaCBib2FyZCByZWx5aW5nIG9uIHRoaXMsIHdpbGwgaGF2ZSB0aGUgYXBwcm9wcmlhdGUKLSAgICBjb2RlIGluIGEgbmV3IGZpbGUsICJwYXJ0aXRpb24uYyIgaW4gdGhlIGJvYXJkIGRpcmVjdG9yeS4KLSAgICBib2FyZCBNYWtlZmlsZXMgdXBkYXRlZCB0byB1c2UgdGhlIGZpbGUuCi0KLSAgICBUaGUgZGF0YWZsYXNoIHBhcnRpdGlvbnMgYXJlIGFsaWduZWQgb24gc2VjdG9yL3BhZ2UgYm91bmRhcmllcy4KLQotICAgIFRoZSBDT05GSUdfTkVXX0RGX1BBUlRJVElPTiB3YXMgdXNlZCB0byBjcmVhdGUgbmFtZWQgcGFydGl0aW9ucwotICAgIFRoaXMgaXMgbm93IHRoZSBkZWZhdWx0IG9wZXJhdGlvbiwgYW5kIHRoZSBDT05GSUcgdmFyaWFibGUgaXMgcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFVsZiBTYW11ZWxzc29uIDx1bGZAYXRtZWwuY29tPgotCi1jb21taXQgNTFlY2RlOTQ2ZmVjNTExYTE2MzQ2ZTQ5ODIwNGNhMTBhZDcxMDgwZAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEFwciAxMiAxNDowODo0NSAyMDA4ICswMjAwCi0KLSAgICBnaXRpZ25vcmU6IHVkcGF0ZSBzdGdpdCBnZW5lcmF0ZWQgYW5kIC5wYXRjaCBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNjZlMzk4MThlOTVmNTFlZTFjMWRkMjA5NDQwN2E4OTI5NTQzZmE2ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAxOCAwMDoxNTozNiAyMDA4IC0wNzAwCi0KLSAgICBHZXQgcmlkIG9mIHJlZHVuZGFudCBjb3B5IG9mIHJlbmFtZWQgaGVhZGVyIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYzNhYWZkOGNmODE0ZTMzYTc3ZGU4MWMyZjIyYjhjNzcyMjE2YTNjYwotQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KLURhdGU6CUZyaSBBcHIgMTEgMjE6MjA6MTQgMjAwOCArMDMwMAotCi0gICAgRml4IGRlcGVuZGVuY3kgZ2VuZXJhdGlvbiBmb3Igb2xkZXIgZ2NjIHZlcnNpb25zCi0KLSAgICAgV2l0aCBnY2MgMy4zLjMgYXQgbGVhc3QsIGNvbXBpbGF0aW9uIGZhaWxzIHdpdGgKLQotICAgIEdlbmVyYXRpbmcgaW5jbHVkZS9hdXRvY29uZi5tawotICAgIGdjYzogY29tcGlsYXRpb24gb2YgaGVhZGVyIGZpbGUgcmVxdWVzdGVkCi0gICAgbWFrZTogKioqIFtpbmNsdWRlL2F1dG9jb25mLm1rXSBFcnJvciAxCi0KLSAgICBzaW5jZSBjb21taXQgMTZmZTc3NzUyZWVlMDk5YjlmYjYxZWQ3MzQ2MGU1MWNjOTRiMzdiYS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgotCi1jb21taXQgY2IxYzQ4OTY5MDVhYjIyZmNkOTgyZTZhOGE1MzlmMDAzMTk0MmU3MQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEFwciAxMSAxMTowNzo0OSAyMDA4ICswMjAwCi0KLSAgICBSZXN0b3JlIHRoZSBhYmlsaXR5IHRvIGNvbnRpbnVlIGJvb3RpbmcgYWZ0ZXIgbGVnYWN5IGltYWdlIG92ZXJ3cml0ZQotCi0gICAgQmVmb3JlIG5ldyB1SW1hZ2UgY29kZSB3YXMgbWVyZ2VkLCBib290bSBjb2RlIGFsbG93ZWQgZm9yIHRoZSBrZXJuZWwgaW1hZ2UgdG8KLSAgICBnZXQgb3ZlcndyaXR0ZW4gZHVyaW5nIGRlY29tcHJlc2lvbi4gbmV3IHVJbWFnZSBpbnRyb2R1Y2VkIGEgY2hlY2sgZm9yIGltYWdlCi0gICAgb3ZlcndyaXRlcyBhbmQgcmVmdXNlZCB0byBib290IHRoZSBpbWFnZSB0aGF0IGdvdCBvdmVyd3JpdHRlbi4gVGhpcyBwYXRjaAotICAgIHJlc3RvcmVzIHRoZSBvbGQgYmVoYXZpb3IuIEl0IGFsc28gYWRkcyBhIHdhcm5pbmcgd2hlbiB0aGUgaW1hZ2Ugb3ZlcndyaXRlbiBpcwotICAgIGEgbXVsdGktaW1hZ2UgZmlsZSwgYmVjYXVzZSBpbiBzdWNoIGNhc2UgYWNjZXNzaW5nIGNvbXBvbmVudGVzIG90aGVyIHRoYW4gdGhlCi0gICAgZmlyc3Qgb25lIHdpbGwgZmFpbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBkZTJiMzIxNmU2YjRmM2IyZmU5Mzc1OWMwNWIxNzUwNGY5ZGZlMDM2Ci1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgQXByIDExIDExOjA3OjQzIDIwMDggKzAyMDAKLQotICAgIHBwYzogRml4IGZ0ZF9ibG9iIHZhcmlhYmxlIGluaXQgd2hlbiBwcm9jZXNzaW5nIHJhdyBibG9iCi0KLSAgICBTZXQgZmR0X2Jsb2IgdmFyaWFibGUgYmVmb3JlIGl0cyB2YWx1ZSBpcyBwcmludGVkIG91dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAzZDM2YmUwMzAwNDNjZDg0MWEyNTUxZDAwYTM5NTEzNWUzNjNhNjRiCi1BdXRob3I6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+Ci1EYXRlOglUaHUgQXByIDEwIDE0OjMwOjE2IDIwMDggLTA1MDAKLQotICAgIFJlbW92ZSBhbGwgdGhlIHNlYXJjaCBwYXRocyBmcm9tIHRoZSAubGRzIGZpbGVzLgotCi0gICAgVGhlIGNyb3NzIGNvbXBpbGVyIGlzIHJlc3BvbnNpYmxlIGZvciBwcm92aWRpbmcgdGhlIGNvcnJlY3QgbGlicmFyaWVzCi0gICAgYW5kIHRoZSBsb2dpYyB0byBmaW5kIHRoZSBsaW5raW5nIGxpYnJhcmllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+Ci0KLWNvbW1pdCA3ZDcyMWUzNGFlNmJlN2Q3ZGI2M2U4ZDA2MGEyNDYyNzhiYjdhZTU4Ci1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglNb24gQXByIDE0IDE1OjQ0OjE2IDIwMDggKzAyMDAKLQotICAgIEJvb3QtcmVsYXRlZCBkb2N1bWVudGF0aW9uIHVwZGF0ZQotCi0gICAgLSBkb2N1bWVudCAnYm9vdG1fbG93JyBhbmQgJ2Jvb3RtX3NpemUnIGVudmlyb25tZW50IHZhcmlhYmxlcwotICAgIC0gdXBkYXRlIGluYWNjdXJhdGUgQ0ZHX0JPT1RNQVBTWiBlbnRyeQotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGE2ZjBiZDlmMmIxOTcxZTJhNjFhYzBmZDFmYzJjOTZjYjdhNGI2N2EKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJV2VkIEFwciA5IDE3OjM0OjA4IDIwMDggKzAyMDAKLQotICAgIEZpeCByZWdyZXNzaW9uIGludHJvZHVjZWQgYnkgYSB0eXBvIGluICJUaWRpZWQgb3RoZXIgY3B1L2FybTkyMHQvc3RhcnQuUyBjb2RlIgotCi0gICAgUmVzdG9yZSBsb2dpYyByZXZlcnRlZCBieSBjb21taXQKLQotICAgIGNvbW1pdCA4MDc2N2E2Y2VhZDk5OTBkOWU3N2U2MmJlOTQ3ODQzYzJjNzJmNDY5Ci0gICAgQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotICAgIERhdGU6ICAgV2VkIFNlcCA1IDE2OjA0OjQxIDIwMDcgKzAxMDAKLQotCUNoYW5nZWQgQVBJIG5hbWUgdG8gY29sb3VyZWRfbGVkLmgKLQlSZW1vdmVkIGNvZGUgdXNpbmcgZGVwcmVjYXRlZCBpZmRlZiBDT05GSUdfQk9PVEJJTkZVTkMKLQlUaWRpZWQgb3RoZXIgY3B1L2FybTkyMHQvc3RhcnQuUyBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCBlMjVjYjhkM2Y0ZmNjMjY1YTljZGY4ZTlkNTc3YjU5YmRiNjRiYmFmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBBcHIgOCAxMDoyNDoyNCAyMDA4IC0wNDAwCi0KLSAgICBSZW1vdmUgY29uZmxpY3RpbmcgTkFORCBJRAotCi0gICAgVGhlcmUgYXJlIHR3byBOQU5EIGVudHJpZXMgd2l0aCBJRCAweERDIGFuZCB0aGlzIG9idmlvdXNseSBjYXVzZXMgcHJvYmxlbXMuCi0gICAgSW4gdGhlIGtlcm5lbCwgdGhleSBwdW50ZWQgdGhlIGZpcnN0IGVudHJ5LCBzbyB3ZSBzaG91bGQgZG8gdGhlIHNhbWUuCi0KLSAgICBTZWUgdGhpcyB1cHN0cmVhbSBlLW1haWwgZm9yIG1vcmUgaW5mbzoKLSAgICBodHRwOi8vbGlzdHMuaW5mcmFkZWFkLm9yZy9waXBlcm1haWwvbGludXgtbXRkLzIwMDctSnVseS8wMTg3OTUuaHRtbAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMTg4ZTk0YzM3MDYyMTcwOGQxMzU0N2Q1OGRiYzZlZDNjNTYwMmFhOAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci1EYXRlOglUdWUgQXByIDggMTY6MjA6MzUgMjAwOCArMDkwMAotCi0gICAgY3B1L21pcHMvY3B1LmM6IEZpeCBmbHVzaF9jYWNoZSBidWcKLQotICAgIENhY2hlIG9wZXJhdGlvbnMgaGF2ZSB0byB0YWtlIGxpbmUgYWRkcmVzcyAoYWRkciksIG5vdCBzdGFydF9hZGRyLgotICAgIEkgbm90aWNlZCB0aGlzIGJ1ZyB3aGVuIGRlYnVnZ2luZyBwaW5nIGZhaWx1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCA4ZjJhNjhhMDdjMDU4ZmNhMWQ0MTNlNTRmNzFjMmU3ZTc4YTc0ZWQ0Ci1BdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotRGF0ZToJVGh1IEFwciAzIDE0OjI5OjAxIDIwMDggKzAyMDAKLQotICAgIFRRTTUyMDA6IGZpeCBkZWZhdWx0IElERSByZXNldCBsZXZlbAotCi0gICAgQmVmb3JlIHRoZSBmaXJzdCBjYWxsIG9mIGlkZV9yZXNldCgpLCB0aGUgbGV2ZWwgb2YgdGhlIElERSByZXNldAotICAgIHNpZ25hbCBvbiB0aGUgVFFNNTIwMCBpcyBsb3cgKHJlc2V0IGFzc2VydGVkKS4gVGhpcyBwYXRjaCBzZXRzIHRoZQotICAgIGRlZmF1bHQgdmFsdWUgdG8gaGlnaCAocmVzZXQgbm90IGFzc2VydGVkKS4KLQotICAgIEN1cnJlbnRseSB0aGlzIHBhdGNoIGZpeGVzIG5vIHJlYWwgcHJvYmxlbSwgYnV0IGl0IGlzIGNsZWFuZXIgdG8KLSAgICBhc3NlcnQgdGhlIHJlc2V0IHNpZ25hbCBvbmx5IG9uIGRlbWFuZCwgYW5kIG5vdCBwZXJtYW5lbnRseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgYzYxZTAzM2Q2ZThhYmI3YjQwNjBlZTM2MDYwOTYxZTEzOTlmNjA3OQotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVRodSBBcHIgMyAxNDoxODo0OCAyMDA4ICswMjAwCi0KLSAgICBtZ2NvZ2UsIG1nc3V2OiByZWFsaWduIENPTkZJR19FWFRSQV9FTlZfU0VUVElORwotCi0gICAgU2lnbmVkLW9mZi1ieTogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci0KLWNvbW1pdCBmMzA4NTcyZTE5ZWI3ZmU2M2FhM2Q0MWYyMTRjZGU0YzIzYzk4MDBmCi1BdXRob3I6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotRGF0ZToJVGh1IEFwciAzIDE0OjE4OjQ3IDIwMDggKzAyMDAKLQotICAgIG1nY29nZSwgbWdzdXY6IHJlbmFtZSAnYWRkY29uJyB0byAnYWRkY29ucycKLQotICAgIFRoZSBsYXR0ZXIgbmFtZSB3aXRoIDEzIHVzZXJzIGlzIGFscmVhZHkgZXN0YWJsaXNoZWQsIHNvIHdlIHdpbGwgdXNlCi0gICAgdGhhdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgZTE3NWVhY2M4N2MzYTllNGRhZDA3OTlmZWUwZTk1NzMyNTIwYWZjNwotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CVRodSBBcHIgMyAxMzozNzo1NiAyMDA4ICswMjAwCi0KLSAgICBJREU6IGZpeCBidWcgaW4gcmVzZXQgc2VxdWVuY2UKLQotICAgIEFjY29yZGluZyB0byB0aGUgYXRhIChhdGE1KSBzcGVjaWZpY2F0aW9uIHRoZSBSRVNFVC0gc2lnbmFsCi0gICAgc2hhbGwgYmUgYXNzZXJ0ZWQgZm9yIGF0IGxlYXN0IDI1IHVzLiBXaXRob3V0IHRoaXMgcGF0Y2gsCi0gICAgdGhlIFJFU0VULSBzaWduYWwgaXMgYXNzZXJ0ZWQgb24gc29tZSBib2FyZHMgZm9yIG9ubHkgPCAxIHVzCi0gICAgKGUuIGcuIG9uIHRoZSBUUU01MjAwKS4gVGhpcyBwYXRjaCBhZGRzIGEgZ2VuZXJhbCBkZWxheSBvZgotICAgIDI1IHVzIHRvIHRoZSBSRVNFVC0gc2lnbmFsLgotCi0gICAgV2l0aG91dCB0aGlzIHBhdGNoIGEgUGxhdGludW0gNCBHaUIgQ0YgY2FyZCBpcyBub3QgcmVjb2duaXNlZAotICAgIHByb3Blcmx5IG9uIGJvYXJkcyB3aXRoIGEgVFFNNTIwMCAoU1RLNTJ4eCwgVEI1MjAwKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgODEzYmVhOTZhOTYwOTE2YzcyYjRhM2E3ZGY4NDAxNTE1MjljMjZjZQotQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KLURhdGU6CVRodSBBcHIgMyAxNDo0MzoxMSAyMDA4ICswMjAwCi0KLSAgICBsd21vbjU6IGRpc2FibGUgQ09ORklHX1pFUk9fQk9PVERFTEFZCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgTGF1ZSA8c2FzY2hhLmxhdWVAbGllYmhlcnIuY29tPgotCi1jb21taXQgNTNlZWM2ZjFkMjU5MzJlNzZkNjNjY2IxNDA4Mjc5MmIwYjk2YmY0MQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEFwciAyIDA4OjAzOjU4IDIwMDggKzAyMDAKLQotICAgIGRzMTc0eDogRml4IHdhcm5pbmcgb24gcmV0dXJuIGluIHJ0Y19nZXQgYW5kIHJ0Y19zZXQgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYTI1M2IzOGJmNTBjODUyMjdjMzNjYTBmZWJjODcwZWU0OWQxNTg4ZQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIEFwciAyIDA4OjAzOjU3IDIwMDggKzAyMDAKLQotICAgIGNtZF9sb2cuYzogRml4IGFzc2lnbm1lbnQgZGlmZmVyIGluIHNpZ25lZG5lc3MKLQotICAgIEluIGZ1bmN0aW9uICdsb2didWZmX2luaXRfcHRycyc6Ci0gICAgY21kX2xvZy5jOjc5OiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gYXNzaWdubWVudCBkaWZmZXIgaW4gc2lnbmVkbmVzcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDZjMGU5YThmMWNjMDkwZmJmYmM2Zjg2YjZiNGZkMTdhMTYyOGYzZGYKLUF1dGhvcjogR3VydXJhamEgSGViYmFyIEsgUiA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLURhdGU6CVdlZCBBcHIgMiAxMTowNDo0MyAyMDA4ICswNTMwCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlICN1bmRlZiBTSE9XX0lORk8gaW4gZHJpdmVycy91c2IvdXNiX29oY2kuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogZ3VydXJhamEgaGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotCi1jb21taXQgNDc4ZDVlYzlhZTNjYmNjNjA0MDI0MWQyZDczZGJiYzYxZmU5YjQ5ZAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIEFwciAxIDE0OjA3OjEwIDIwMDggKzAyMDAKLQotICAgIHMzYzQ1MTBiX2V0aDogZml4ICdwYWNrZWQnIGF0dHJpYnV0ZSBpZ25vcmVkIGZvciBmaWVsZHMgb2YgTUFDRnJhbWUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBjMDhmYjNlYTM2ZDE5YjE2NDBiNzkwNjI2NDU4MWU5MTA1NTM0Mzk5Ci1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgotRGF0ZToJVHVlIEFwciAxNSAxMDoyNDoxNCAyMDA4ICswMjAwCi0KLSAgICBBZGRpdGlvbmFsIFBDSSBJRHMgZm9yIElERSBhbmQgbmV0d29yayBjb250cm9sbGVycwotCi0gICAgVGhlc2UgUENJIElEcyBhcmUgcmVxdWlyZWQgYnkgdGhlIExpbmtzdGF0aW9uIHBsYXRmb3Jtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgotCi1jb21taXQgYzA1NTliZTM3MWIyYTY0YjFhODE3MDg4YzMzMDg2ODhlMjE4MmY5MwotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxqb2FraW0udGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CU1vbiBBcHIgMTQgMjM6MDE6NTAgMjAwOCArMDIwMAotCi0gICAgQ2hhbmdlIGVudl9nZXRfY2hhciBmcm9tIGEgZ2xvYmFsIGZ1bmN0aW9uIHB0ciB0byBhIGZ1bmN0aW9uLgotCi0gICAgVGhpcyBhdm9pZHMgYW4gZWFybHkgZ2xvYmFsIGRhdGEgcmVmZXJlbmNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci0KLWNvbW1pdCAzZTBmMzMxYzA1ZDcyZjE0MDcxNWMxZTlmY2E5OTE5MjdlNDRkNDIyCi1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMjkgMTI6MzU6MDggMjAwOCArMDAwMAotCi0gICAgQ2xlYW4gdXAgc21zYzkxMXggZHJpdmVyCi0KLSAgICBSZXBsYWNlIGRpcmVjdCByZWdpc3RlciBhZGRyZXNzIGRlcmVmZW5jaW5nIHdpdGggYWNjZXNzb3IgZnVuY3Rpb25zLgotICAgIFJlc3RyaWN0IGV4cGxpY2l0bHkgMzItYml0IGJ1cy13aWR0aCwgZXh0ZW5kIGFmZmVjdGVkIGNvbmZpZ3VyYXRpb25zCi0gICAgcmVzcGVjdGl2ZWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBkZTFiNjg2Yjc2M2FhOGI4N2E4NmY2NzQ4Y2U5MTY5ZTdmYzBlNGNkCi1BdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLURhdGU6CVR1ZSBBcHIgMTUgMDA6MDg6MjAgMjAwOCAtMDQwMAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgZHJpdmVyIGZvciB0aGUgZm9sbG93aW5nIHNtc2MgbmV0d29yayBjb250cm9sbGVyczoKLSAgICBMQU45MTE1Ci0gICAgTEFOOTExNgotICAgIExBTjkxMTcKLSAgICBMQU45MjE1Ci0gICAgTEFOOTIxNgotICAgIExBTjkyMTcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2k8bGdAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgM2RmZDRhYWI5MjljY2NkZGI2M2Q5ZWE1MDk5Njc4NjFlMTMzM2I1MgotQXV0aG9yOiBTYXNjaGEgTGF1ZSA8U2FzY2hhLkxhdWVAZ214LmJpej4KLURhdGU6CVR1ZSBBcHIgMSAxNToxMzowMyAyMDA4ICswMjAwCi0KLSAgICBGaXggd2F0Y2hkb2cgUE9TVCBmb3IgbHdtb241Ci0KLSAgICBJZiB0aGUgaGFyZHdhcmUgd2F0Y2hkb2cgZGV0ZWN0cyBhIHZvbHRhZ2UgZXJyb3IsIHRoZSB3YXRjaGRvZyBzZXRzCi0gICAgR1BJTzYyIHRvIGxvdy4gVGhlIHdhdGNoZG9nIFBPU1QgaGFzIHRvIGRldGVjdCB0aGlzIGxvdyBsZXZlbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBMYXVlIDxsZWdsYXMwQGxlZ3BjMTgwLmxlZy5saWViaGVyci5pPgotCi1jb21taXQgMjRiNDQ4NDQ4YTkxN2U1MjgwNmY4MjY2MGE1YzlkNDc2MDg4OTRmYgotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXByIDEgMTU6MjI6MTEgMjAwOCArMDgwMAotCi0gICAgYXRhOiB1cGRhdGUgdGhlIGxpYmF0YS5oIGZyb20gYXRhLmggb2YgbGludXgga2VybmVsCi0KLSAgICBDdXJyZW50IGxpYmF0YS5oIG9mIHUtYm9vdCBpcyBvdXQgb2Ygc3luYyBmcm9tIGxpbnV4IGtlcm5lbCwKLSAgICB0aGlzIHBhdGNoIG1ha2UgaXQgYmUgY29uc2lzdGVudCB3aXRoIGxpbnV4IGtlcm5lbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KLQotY29tbWl0IGY4ZjlkYzk4ODgzZjY2ZjU5ZWIwNjAxZGE2NTgwOGU2YjEzOWM4N2MKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBNYXIgMzEgMTE6NTk6MjcgMjAwOCAtMDUwMAotCi0gICAgQWxsb3cgdXNlIG9mIEFSQ0g9cG93ZXJwYyB3aGVuIGJ1aWxkaW5nCi0KLSAgICBUaGUgbGludXgga2VybmVsIGlzIG5vdyBtb3N0bHkgQVJDSD1wb3dlcnBjLCBzbyB0byBtYWtlIGxpZmUgZWFzaWVyCi0gICAgYWxsb3cgdXNlIHRvIHVzZSBBUkNIPXBvd2VycGMgYW5kIGNvbnZlcnQgaXQgdG8gQVJDSD1wcGMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOGFmNjU3ZDJjNmQxY2E0ZjJmNzY5NzM1MzEzOTRkNDU3OGJhMmVmMAotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CU1vbiBNYXIgMzEgMTA6NDA6NTQgMjAwOCArMDkwMAotCi0gICAgQWRkIGFwb2xsb24gYm9hcmQgTUFJTlRBSU5FUlMgZW50cnkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA3N2U0NzVjYzBlZDE4MzIxNjAwMTdkMzY0YmUzMmEwYmU5ZmYwMmE5Ci1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJTW9uIE1hciAzMSAxMDo0MDozNiAyMDA4ICswOTAwCi0KLSAgICBGaXggT25lTkFORCByZWFkCi0KLSAgICBJdCBzaG91bGQgYWNjZXNzIHdpdGggMTYtYml0IGluc3RlYWQgb2YgOC1iaXQKLQotICAgIE5vdyBpdCB1c2VzIHRoZSBnZW5lcmljIG1lbWNweSB3aXRoIDgtYml0IGFjY2Vzcy4gSXQgbWVhbnMgaXQgcmVhZHMgd3JvbmcgZGF0YSBmcm9tIE9uZU5BTkQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgYTlkYTJiNDEwNzlkMjMwZGIzYTU2NDE2MjUzMTE5ODNmODVjZTFmYgotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CU1vbiBNYXIgMzEgMTA6NDA6MTkgMjAwOCArMDkwMAotCi0gICAgRml4IE9uZU5BTkQgZXJhc2UgY29tbWFuZAotCi0gICAgSXQgbWlzLWNhbGN1bGF0ZXMgdGhlIGJsb2NrIGFkZHJlc3MuCi0gICAgQWxzbyBmaXggREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgaW4gZW52X29uZW5hbmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgNjE1MjVmMmZmYTE1NjY2NWE2NjkwOGZkYTQ3ZGJmMjlkNjVlYTU3OQotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGcubGlha2hvdmV0c2tpQGdteC5kZT4KLURhdGU6CU1vbiBNYXIgMzEgMDE6MzI6MTUgMjAwOCArMDIwMAotCi0gICAgU3VwcG9ydCBmb3IgTGlua1N0YXRpb24gLyBLdXJvQm94IEhEIGFuZCBIRyBQUEMgbW9kZWxzCi0KLSAgICBUaGlzIHBhdGNoIGlzIGJhc2VkIG9uIHRoZSBwb3J0IGJ5IE1paGFpIEdlb3JnaWFuIChzZWUgbGlua3N0YXRpb24uYyBmb3IKLSAgICBDb3B5cmlnaHQgaW5mb3JtYXRpb24pIGFuZCBpbXBsZW1lbnRzIHN1cHBvcnQgZm9yIExpbmtTdGF0aW9uIC8gS3Vyb0JveCBIRAotICAgIGFuZCBIRyBQUEMgbW9kZWxzIGZyb20gQnVmZmFsbyBUZWNobm9sb2d5LCB3aGVyZWJ5IEhEIGlzIGRlYWN0aXZhdGVkIGF0Ci0gICAgdGhlIG1vbWVudCwgcGVuZGluZyBuZXR3b3JrIGRyaXZlciBmaXhpbmcuCi0KLSAgICBOb3RpY2UgdG8gdXNlcnM6IHRoaXMgaXMgcHJldHR5IG11Y2ggYSBiYXJlYm9uZSBwb3J0LiBTdXBwb3J0IGZvciBuZXR3b3JrCi0gICAgb24gSEcgbW9kZWxzIGlzIGFscmVhZHkgaW4gdGhlIFUtQm9vdCBtYWlubGluZSwgYnV0IHlvdSBtaWdodCBhbHNvIHdhbnQKLSAgICBwYXRjaGVzIHRvIHN3aXRjaCBmYW4gLyBwaHkgbW9kZXMgZGVwZW5kaW5nIG9uIHRoZSBuZWdvdGlhdGVkIGV0aGVybmV0Ci0gICAgcGFyYW1ldGVycy4gVGhpcyBwYXRjaCBhbHNvIGRvZXNuJ3Qgc3VwcG9ydCBjb25zb2xlIHN3aXRjaGluZywgYm9vdGluZyBFTQotICAgIG1vZGUsIEJ1ZmZhbG8gc3BlY2lmaWMgZXh0MiBtYWdpYyBudW1iZXIuIFNvLCBpZiB5b3Ugd2FudCB0byB1c2UgYW55IG9mCi0gICAgdGhvc2UsIHlvdSBuZWVkIGFkZGl0aW9uYWwgcGF0Y2hlcy4gT3RoZXJ3aXNlIHRoaXMgcGF0Y2hlIHByb3ZpZGVzIGEgZnVsbHkKLSAgICBmdW5jdGlvbmFsIHUtYm9vdCB3aXRoIGEgbmV0d29yayBjb25zb2xlIG9uIHlvdXIgc3lzdGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgMGYzYmE3ZTk3ODNmMzUyMzE4ZjE5N2EzMTQ4ZjZkNWNjM2Q3NWJlYQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIE1hciAzMCAwMToyMjoxMyAyMDA4IC0wNTAwCi0KLSAgICBBZGQgQ09ORklHX01JSV9JTklUIHN1cHBvcnQgdG8gcmVsYXRlZCBib2FyZHMKLQotICAgIFJlcGxhY2UgQ09ORklHXzh4eCBhbmQgQ09ORklHX01DRjUzMnggdG8gQ09ORklHX01JSV9JTklUIGluCi0gICAgY21kX2luaXQuYy4gQWRkIENPTkZJR19NSUlfSU5JVCB0byBib2FyZCBjb25maWd1cmF0aW9uIGZpbGVzCi0gICAgdGhhdCB1c2UgbWlpX2luaXQoKSBpbiBjbWRfaW5pdC5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGYzM2ZjYTIyZTc2ZjIwZTRlNDc5MzgxMGNhN2EwNmE0ODA1YTZjZjQKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBNYXIgMzAgMDE6MTk6MDYgMjAwOCAtMDUwMAotCi0gICAgVXBkYXRlIENPTkZJR19QQ0lBVVRPX1NLSVBfSE9TVF9CUklER0UgdG8gcmVsYXRlZCBib2FyZHMKLQotICAgIFJlbW92ZSB0ZXN0IGZvciBDT05GSUdfTVBDNTIwMCBpbiBkcml2ZXJzL3BjaS9wY2lfYXV0by5jIGFuZCBkZWZpbmUKLSAgICBDT05GSUdfUENJQVVUT19TS0lQX0hPU1RfQlJJREdFIGluIHJlbGF0ZWQgYm9hcmQgY29uZmlndXJhdGlvbiBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlOTljY2I0ODgxODFkMDEyMjQ4YzZiZTMwYjIwOTNlOTUwMzE5ZmM1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTWFyIDI3IDExOjQ2OjM4IDIwMDggLTA1MDAKLQotICAgIEludHJvZHVjZSBwaHlzX3NpemVfdCBhbmQgbW92ZSBwaHlzX2FkZHJfdCBpbnRvIGFzbS90eXBlcy5oCi0KLSAgICBBbHNvIGFkZCBDT05GSUdfUEhZU182NEJJVCBvbiBwb3dlcnBjIHRvIGRlYWwgd2l0aCAzMi1iaXQgcHBjJ3MKLSAgICB0aGF0IGhhdmUgbGFyZ2VyIHBoeXNpY2FsIGFkZHJlc3NlcyBsaWtlIDQ0eCwgODV4eCwgYW5kIDg2eHguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjBhMTRhNDJhMjVmNzJlMzc5ZjM4NDYwYjhhODQ4NDY2NzUzNjc5NQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXByIDIgMTY6MTk6MDcgMjAwOCAtMDUwMAotCi0gICAgUmVuYW1lIGluY2x1ZGUvbWQ1LmggdG8gaW5jbHVkZS91LWJvb3QvbWQ1LmgKLQotICAgIFNvbWUgc3lzdGVtcyBoYXZlIG1kNS5oIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvLiBUaGlzIGlzbid0IHRoZQotICAgIGRlc2lyZWQgZmlsZSAod2Ugd2FudCB0aGUgb25lIGluIGluY2x1ZGUvbWQ1LmgpLiBUaGlzIHdpbGwgYXZvaWQgdGhlCi0gICAgY29uZmxpY3QuIFRoaXMgZml4ZXMgdGhlIGhvc3QgdG9vbHMgYnVpbGRpbmcgcHJvYmxlbSBieSBjcmVhdGluZyBhIG5ldwotICAgIGRpcmVjdG9yeSBmb3IgVS1Cb290IHNwZWNpZmljIGhlYWRlciBmaWxlcy4KLQotICAgIFtQYXRjaCBieSBBbmR5IEZsZW1pbmcsIG1vZGlmaWVkIHRvIHVzZSBzZXBhcmF0ZSBkaXJlY3RvcnkgYnkgV29sZmdhbmcKLSAgICBEZW5rXQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmMjk3YjdhMWVjODc0MzNmNjYzMjBkODlkOTkzZTFiYzczOGM2NmI4Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXIgMjcgMTg6NTE6MTcgMjAwOCArMDgwMAotCi0gICAgZHJpdmVyczogY29kZSBjbGVhbiB1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBmZjdjYmE0YTJlNTFjOTA4MjdmNmQyMWEwYjI4YjRkNjcxMDk1OTcKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1hciAyNyAxODo1MDo0MSAyMDA4ICswODAwCi0KLSAgICBkcml2ZXJzOiBjbGVhbiB1cCB0aGUgYXRhX3BpaXguaAotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU4ZjdiYTQwNGYxNDA5NjA2OTYyODE1ZWNjOTU1YTA2OTg0YjA4YjMKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1hciAyNyAxODo0OTo1NiAyMDA4ICswODAwCi0KLSAgICBkb2M6IGVuZ2xpc2ggcG9saXNoaW5nIGZvciBSRUFETUUuc2F0YQotCi0gICAgYWNjb3JkaW5nIHRvIGd2YidzIHN1Z2dlc3Rpb24sIHBvbGlzaGluZyBmb3IgdGhlIGRvYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplcnJ5IFZhbiBCYXJlbiA8Z2VyYWxkLnZhbmJhcmVuQGdlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2UzZjc2NmE1Mjc0ZDIwNDc4MDQ2MGUxODc5NzIzYjU2NTI5NmQzNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE1hciAyNiAxODo1MzoyOCAyMDA4IC0wNTAwCi0KLSAgICBGaXggd2FybmluZ3MgaW50cm9kdWNlZCBieSBJMkMgYnVzIHNwZWVkIHNldHRpbmcgcGF0Y2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzYzczNWU3NDM3MTUwZTg2MTVmMjY5MzBjNzgxOWRiODU2MzQyNzZkCi1BdXRob3I6IGVyYW4gbGliZXJ0eSA8ZXJhbi5saWJlcnR5QGdtYWlsLmNvbT4KLURhdGU6CVRodSBNYXIgMjcgMDA6NTA6NDkgMjAwOCArMDEwMAotCi0gICAgQWx0ZXJhIFN0cmF0aXggSUkgc3VwcG9ydAotCi0gICAgQWRkcyBTdXBwb3J0IGZvciBBbHRlcmEncyBTdHJhdGl4IElJLgotCi0gICAgV2l0aGluIHlvdXIgYm9hcmQgc3BlY2lmaWMgaW5pdCBmaWxlIHlvdSB3aWxsIGhhdmUgdG8gY2FsbAotCi0gICAgMS4gZnBnYV9pbml0ICgvKiByZWxvY2F0ZWQgY29kZSBvZmZzZXQuIHVzdWFsbHkgPT4gKi8gZ2QtPnJlbG9jX29mZik7Ci0gICAgMi4gZnBnYV9hZGQgKGZwZ2FfYWx0ZXJhLCAoQWx0ZXJhX2Rlc2MqKSZhbHRlcmFfZGVzYyk7Ci0KLSAgICBBbHRlcmFfZGVzYyogY29udGluZXMgKGZvciBleGFtcGxlKToKLQl7Ci0JIEFsdGVyYV9TdHJhdGl4SUksCS8qIHBhcnQgdHlwZSAqLwotCSBwYXNzaXZlX3NlcmlhbCwJLyogaW50ZXJmYWNlIHR5cGUgKi8KLQkgMSwJCQkvKiBieXRlcyBvZiBkYXRhIHBhcnQgY2FuIGFjY2VwdCAqLwotCSAodm9pZCAqKSgmZnVuY3MpLAkvKiBpbnRlcmZhY2UgZnVuY3Rpb24gdGFibGUgKi8KLQkgMEwsCQkJLyogYmFzZSBpbnRlcmZhY2UgYWRkcmVzcyAqLwotCSAwCQkJLyogaW1wbGVtZW50YXRpb24gc3BlY2lmaWMgY29va2llICovCi0JIH0KLQotICAgIGZ1bmNzIGlzIHRoZSBpbnRlcmZhY2UuIEl0IGlzIG9mIHR5cGUgYWx0ZXJhX2JvYXJkX3NwZWNpZmljX2Z1bmMuCi0gICAgSXQgbG9va3MgbGlrZSB0aGlzOgotICAgIGFsdGVyYV9ib2FyZF9zcGVjaWZpY19mdW5jIGZ1bmMgPSB7Ci0JcHJlX2ZuLAotCWNvbmZpZ19mbiwKLQlzdGF0dXNfZm4sCi0JZG9uZV9mbiwKLQljbGtfZm4sCi0JZGF0YV9mbiwKLQlhYm9ydF9mbiwKLQlwb3N0X2ZuLAotICAgIH07Ci0KLSAgICB5b3Ugd2lsbCBoYXZlIHRvIGltcGxlbWVudCB0aGVzZSBmdW5jdGlvbnMsIHdoaWNoIGlzIHVzdWFsbHkgYml0Ci0gICAgYmFuZ2luZyBzb21lIGdwaW8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFcmFuIExpYmVydHkgPGxpYmVydHlAZXh0cmljb20uY29tPgotCi1jb21taXQgNWVjZTllYzlmNmNkNTI5NTBhYjg0OGUyZmU0MjJkYWNmMWQzYTMzNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEFwciAxMyAxNDozMjo1NCAyMDA4IC0wNzAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNWFkODYyMTY2YWEyNGQ2MmE2OWFhOWM3MDhmNmIyZjVjMGQyOGZiNwotQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOglXZWQgTWFyIDI2IDIwOjQxOjE3IDIwMDggKzAxMDAKLQotICAgIFBoeXRlYyBQaHljb3JlLWkuTVgzMSBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFBoeXRlYyBQaHljb3JlLWkuTVgzMSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IGNhZWJjOTViZTNiNDJlNTE0N2I1ZmFjNzY3MmFjNGIyNjkzZWY3ZTEKLUF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotRGF0ZToJV2VkIE1hciAyNiAyMDo0MTowOSAyMDA4ICswMTAwCi0KLSAgICBteDMxIGxpdGVraXQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBteDMxIGxpdGVraXQgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCBjZGFjZTA2NjEyMDg3NTRhNTMwMTllYTBkYzdiODAzYTA0MGUwOTM5Ci1BdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLURhdGU6CVdlZCBNYXIgMjYgMjA6NDA6NDkgMjAwOCArMDEwMAotCi0gICAgYWRkIGFuIGkyYyBkcml2ZXIgZm9yIG14MzEKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhbiBpMmMgZHJpdmVyIGZvciBGcmVlc2NhbGUgaS5NWCBwcm9jZXNzb3JzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgOWI1NmY0ZjAzMDZmMzk0MGIwYWFmZDgyM2VkNmVjZmMyZDc1ZDZjNgotQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOglXZWQgTWFyIDI2IDIwOjQwOjQyIDIwMDggKzAxMDAKLQotICAgIGNvcmUgc3VwcG9ydCBmb3IgRnJlZXNjYWxlIG14MzEKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29yZSBzdXBwb3J0IGZvciBGcmVlc2NhbGUgbXgzMQotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IDdlYzY4ODYyYTI3YzhmNmY2ZDU2NjIyOGRlOGY2NzI0ZDk2NGE5MzkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBBcHIgMTMgMTQ6MTk6MjMgMjAwOCAtMDcwMAotCi0gICAgRml4IGNvbXBpbGUgZXJyb3IKLQotICAgIC4uLmFzIHN1Z2dlc3RlZCBieSBQZXRlciBQZWFyc2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1MjUyZWQ5NTIwNGJkZjU1YmVjNWE5MGVhNjk4NjBiZjJmNzhjNjQzCi1BdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLURhdGU6CVdlZCBNYXIgMjYgMjA6NDA6MzYgMjAwOCArMDEwMAotCi0gICAgU2VwYXJhdGUgb21hcDI0eHggc3BlY2lmaWMgY29kZSBmcm9tIGFybTExMzYKLQotICAgIE1vdmUgb21hcDI0eHggY29kZSB0byBjcHUvYXJtMTEzNi9vbWFwMjR4eCwgcmVuYW1lIGluY2x1ZGUvYXNtLWFybS9hcmNoLWFybTExMzYKLSAgICB0byBjcHUvYXJtMTEzNi9vbWFwMjR4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCAxZjFkODhkZDQwODE1MzMyZGYzMjk4MmU3MzlmMmRkZDJkYTZmZTFhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBKYW4gMjkgMTg6MjE6MDUgMjAwOCAtMDUwMAotCi0gICAgZGlzYWJsZSBjYWNoZXMgYmVmb3JlIGJvb3RpbmcgYW4gYXBwIGZvciBCbGFja2ZpbiBhcHBzCi0KLSAgICBJdCBpc24ndCBnZW5lcmFsbHkgc2F2ZSB0byBleGVjdXRlIGFwcGxpY2F0aW9ucyBvdXRzaWRlIG9mIFUtQm9vdCB3aXRoIGNhY2hlcwotICAgIGVuYWJsZWQgZHVlIHRvIHRoZSB3YXkgdGhlIEJsYWNrZmluIHByb2Nlc3NvciBoYW5kbGVzIGNhY2hlcyAocmVxdWlyZXMKLSAgICBzb2Z0d2FyZSBhc3Npc3RhbmNlKS4gIFRoaXMgcGF0Y2ggZGlzYWJsZXMgY2FjaGVzIGJlZm9yZSBib290aW5nIGFuIEVMRiBvcgotICAgIGp1c3QgYm9vdGluZyByYXcgY29kZS4gIFRoZSBwcmV2aW91cyBkaXNjdXNzaW9uIG9uIHRoZSBwYXRjaCB3YXMgdGhhdCB3ZQotICAgIHdhbnRlZCB0byB1c2Ugd2Vha3MgaW5zdGVhZCwgYnV0IHRoYXQgcHJvdmVkIHRvIG5vdCBiZSBmZWFzaWJsZSB3aGVuIG11bHRpcGxlCi0gICAgc3ltYm9scyBhcmUgaW52b2x2ZWQsIHdoaWNoIHB1dHMgdXMgYmFjayBhdCB0aGUgaWZkZWYgc29sdXRpb24uICBJJ3ZlCi0gICAgbWluaW1pemVkIHRoZSB1Z2xpbmVzcyBieSBtb3ZpbmcgdGhlIHNldHVwIHN0ZXAgb3V0c2lkZSBvZiB0aGUgbWFpbiBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGU2ZGZlZDcwNWVmYTQ0ZWJmMDBkMjFiYjE1ODhjNmNjYzhmM2FkMzIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBBcHIgMTMgMTA6MDM6NTQgMjAwOCAtMDcwMAotCi0gICAgcHBjOiBHZXQgcmlkIG9mIHVudXNlZCBtYWNoaW5lIHR5cGUgZGVmaW5pdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxYWVlZDhkNzFhY2IzMjkwY2YyNDQ2ZjMxNmQ2YmE0MzdlNzg4MWM0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gQXByIDEzIDA5OjU5OjI2IDIwMDggLTA3MDAKLQotICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNzc1NGYzM2M2ZmI3YTJjMDUwMzg4ZDIwYmYzODQ3MDM4NTU4YmRjZgotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVRodSBGZWIgMjEgMTM6NTg6MTEgMjAwOCAtMDUwMAotCi0gICAgTE03MyBidWcgZml4IGZvciBuZWdhdGl2ZSB0ZW1wZXJhdHVyZXMgYW5kIGNsZWFudXAKLQotICAgIFdoZW4gdGhlIExNNzMgdGVtcGVyYXR1cmUgc2Vuc29yIG1lYXN1cmVzIGEgdGVtcGVyYXR1cmUgYmVsb3cgMCBDLCB0aGUKLSAgICBjdXJyZW50IGRyaXZlciBkb2VzIG5vdCBwZXJmb3JtIHNpZ24gZXh0ZW5zaW9uLCBzbyB0aGUgcmVzdWx0IHJldHVybmVkIGlzCi0gICAgNTEyIEMgdG9vIGhpZ2guICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLCBhbmQgZG9lcyBnZW5lcmFsIGNsZWFudXAKLSAgICBvZiB0aGUgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgOTZlZjgzMWY3MTMyODlhZmJhMTlkYTBjOGY5MDVlOTlkYTJiMjNlMAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUaHUgQXByIDMgMTM6MzY6MDIgMjAwOCArMDIwMAotCi0gICAgY2ZpX2ZsYXNoOiBTdXBwb3J0IGJ1ZmZlcmVkIHdyaXRlcyBvbiBub24tc3RhbmRhcmQgU3BhbnNpb24gTk9SIGZsYXNoCi0KLSAgICBTb21lIE5PUiBmbGFzaCBjaGlwIGZyb20gU3BhbnNpb24sIGZvciBleGFtcGxlLCB0aGUgczI5d3MtbiBNaXJyb3JCaXQKLSAgICBzZXJpZXMgcmVxdWlyZSBkaWZmZXJlbnQgYWRkcmVzc2VzIGZvciBidWZmZXJlZCB3cml0ZSBjb21tYW5kcy4gRGVmaW5lIGEKLSAgICBjb25maWd1cmF0aW9uIG9wdGlvbiB0byBzdXBwb3J0IGJ1ZmZlcmVkIHdyaXRlcyBvbiB0aG9zZSBjaGlwcy4gQSBtb3JlCi0gICAgZWxlZ2FudCBzb2x1dGlvbiB3b3VsZCBiZSB0byBhdXRvbWF0aWNhbGx5IGRldGVjdCB0aG9zZSBjaGlwcyBieSBwYXJzaW5nCi0gICAgdGhlaXIgQ0ZJIHJlY29yZHMsIGJ1dCB0aGF0IHdvdWxkIHJlcXVpcmUgaW50cm9kdWN0aW9uIG9mIGEgZml4dXAgdGFibGUKLSAgICBpbnRvIHRoZSBjZmlfZmxhc2ggZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgM2Y5YzU0MmQzZDY5YjFhMTBhNWUxOTNlNzc5MTMzYTA0NTRkMWY0NAotQXV0aG9yOiBMZWUgTmlwcGVyIDxsZWUubmlwcGVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXByIDEwIDA5OjM1OjA2IDIwMDggLTA1MDAKLQotICAgIG1wYzgzeHg6IFVwZGF0ZSBESU1NIGRhdGEgYnVzIHdpZHRoIHRlc3QgdG8gc3VwcG9ydCA0MC1iaXQgd2lkdGgKLQotICAgIDMyLWJpdCB3aWRlIEVDQyBtZW1vcnkgbW9kdWxlcyByZXBvcnQgNDAtYml0IHdpZHRoLgotICAgIENoYW5nZWQgdGhlIERJTU0gZGF0YSBidXMgd2lkdGggdGVzdCB0byAnbGVzcyB0aGFuIDY0JyBpbnN0ZWFkIG9mICdlcXVhbCAzMicuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMZWUgTmlwcGVyIDxsZWUubmlwcGVyQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVmYjVhNjg5ZDgyMmNhNjFlODE0YmQ1MjNmYzkzMGFmMzM1MjQyZmEKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAzMSAxNzowNToxMiAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiBGaXggdGhlIGJ1ZyBvZiBzZXJkZXMgaW5pdGlhbGl6YXRpb24KLQotICAgIEN1cnJlbnRseSB0aGUgc2VyZGVzIHdpbGwgbm90IGJlIGluaXRpYWxpemF0ZWQgZHVlIHRvIHRoZQotICAgIHBhcnRpZCdzIGVycm9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjAwMDc4NDgxOGYwNDNkYjdjYTYwZTI4NDZhNzJkMDk3NzY2Yjg5NAotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXByIDMgMTY6Mjg6MjkgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogRml4IHRoZSBTQVRBIGNsb2NrIHNldHRpbmcgb2YgODM3eCB0YXJnZXRzCi0KLSAgICBDdXJyZW50bHkgdGhlIFNBVEEgY29udHJvbGxlciBjbG9jayBpcyBjb25maWd1cmVkIGFzIENTQiBjbG9jaywKLSAgICB1c3VhbGx5IHRoZSBDU0IgY2xvY2sgaXMgNDAwLzMzMy8yNjZNSHouCi0KLSAgICBIb3dldmVyLCBUaGUgU0FUQSBJUCBibG9jayBpcyBvbmx5IGd1YXJhbnRlZWQgdG8gb3BlcmF0ZSB1cCB0bwotICAgIDIwMCBNSHogYXMgc3RhdGVkIGluIHRoZSBIVyBzcGVjLgotCi0gICAgVGhlIGJ1ZyBpcyByZXBvcnRlZCBieSBKb2UgRCdBYmJyYWNjaW8gPGxqZDAxNUBmcmVlc2NhbGUuY29tPgotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgU0FUQSBjbG9jayBhcyBoYWxmIG9mIENTQiBjbG9jay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFhYzRmMzIwYmYwYjU5M2FhMGE3NDFmMmQ2NDlhOGVjZTg4Mzg2NzIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBcHIgMiAxMzo0MToyMSAyMDA4ICswMjAwCi0KLSAgICBtcGM4Mzd4ZXJkYjogRml4IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdmZHRfZml4dXBfZHJfdXNiJwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTdiM2VjYjU3NWE5MmZhMzRjMTc2NTIyOWRiYzA2ZjJiNjYyZjEzOQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEFwciA5IDA0OjIwOjU3IDIwMDggLTA1MDAKLQotICAgIDg1eHg6IEZpeCBkZXRlY3Rpb24gb2YgTVAgY3B1IHNwaW4gdXAKLQotICAgIFdlIHdlcmUgbG9va2luZyBhdCB0aGUgd3JvbmcgbWVtb3J5IG9mZnNldCB0byBkZXRlcm1pbmUgb2YgYSBzZWNvbmRhcnkKLSAgICBjcHUgaGFkIGJlZW4gc3B1biB1cCBvciBub3QuICBBbHNvIGFkZGVkIGEgd2FybmluZyBtZXNzYWdlIGlmIHRoZQotICAgIGFsbCB0aGUgc2Vjb25kYXJ5IGNwdXMgd2UgZXhwZWN0IGRvbid0IHNwaW4gdXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjNlMDRiZGMzZjM2MGM2NjgwMWE5MDQ4OTU2ZTYxZTQxYTE2ZWRiYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEFwciA4IDEwOjQ1OjUwIDIwMDggLTA1MDAKLQotICAgIDg1eHg6IFVzZSBTVlJfU09DX1ZFUiBpbnN0ZWFkIG9mIFNWUl9WRVIKLQotICAgIFRoZSByZWNlbnQgY2hhbmdlIGludHJvZHVjZWQgYnkgJ1VwZGF0ZSBTVlIgbnVtYmVycyB0byBleHBhbmQgc3VwcG9ydCcKLSAgICBub3cgcmVxdWlyZXMgdGhhdCB3ZSB1c2UgU1ZSX1NPQ19WRVIgaW5zdGVhZCBvZiBTVlJfVkVSIGlmIHdlIHdhbnQKLSAgICB0byBjb21wYXJlIGFnYWluc3QgYSBwYXJ0aWN1bGFyIHByb2Nlc3NvciBpZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1YjIwNTJlNWY1ZmNjZTVkYmQ0ZDI3NTBhMjljMGU0NWJjZTgwNmU3Ci1BdXRob3I6IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+Ci1EYXRlOglGcmkgQXByIDExIDEwOjAwOjM1IDIwMDggLTA0MDAKLQotICAgIHBwYzR4eDogRml4IHBvd2VyIG1ndCBkZWZpbml0aW9ucyBmb3IgUFBDNDQwCi0KLSAgICBDb3JyZWN0ZWQgRENSIGFkZHJlc3NlcyBvZiBQUEM0NDBFUCBwb3dlciBtYW5hZ2VtZW50IHJlZ2lzdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+Ci0KLWNvbW1pdCA5NTBhMzkyNDY0ZTYxNmI0NTkwYmM0NTAxYmU0NmUyZDdkMTYyZGVhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgQXByIDExIDE1OjExOjI2IDIwMDggKzAyMDAKLQotICAgIFJldmVydCBtZXJnZSBvZiBnaXQ6Ly93d3cuZGVueC5kZS9naXQvdS1ib290LWFybSwgY29tbWl0IDYyNDc5YjE4OgotCi0gICAgUmV2ZXJ0aW5nIGJlY2FtZSBuZWNlc3NhcnkgYWZ0ZXIgaXQgdHVybmVkIG91dCB0aGF0IHRoZSBwYXRjaGVzIGluCi0gICAgdGhlIHUtYm9vdC1hcm0gcmVwbyB3ZXJlIG1vZGlmaWVkLCBhbmQgaW4gc29tZSBjYXNlcyBjb3JydXB0ZWQuCi0KLSAgICBUaGlzIHJldmVydHMgdGhlIGZvbGxvd2luZyBjb21taXRzOgotCi0JMDY2YmViZDYzNTNlMzNhZjNhZGVmYzM0MDQ1NjA4NzE2OTllOTk2MQotCTdhODM3YjczMTAxNjZhZThmYzhiOGQ2NmQ3ZWYwMWI2MGE4MGY5ZDYKLQljODhhZTIwNTgwYjJiMDE0ODdiNGNkY2M4YjJhMTEzZjU1MWFlZTM2Ci0JYTE0N2U1NmYwMzg3MWJiYTRmMDUwNThkNWUwNGNlN2RlYjAxMGIwNAotCWQ2Njc0ZTBlMmE2YTFmMDMzOTQ1Zjc4ODM4NTY2MjEwZDNmMjhjOTUKLQk4Yzg0NjNjY2U0NGQ4NDllMzc3NDQ3NDliMzJkMzhlMWRmYjEyZTUwCi0JYzk4YjQ3YWQyNGIyZDkxZjQxYzA5YTNkNjJkN2Y3MGFkODRmNGI3ZAotCThiZjY5ZDgxNzgyNjE5MTg3OTMzYTYwNWYxYTk1ZWUxZDA2OTQ3OGQKLQk4YzE2Y2IwZDNiOTcxZjQ2ZmJlNzdjMDcyNjY0YzBmMmRjZDQ0NzFkCi0JYTU3NGE3Mzg1MmE1Mjc3NzkyMzRlNzNlMTdlNzU5N2ZkODEyODg4MgotCTEzNzdiNTU4M2E0ODAyMWQ5ODNlMWZkNTY1ZjdkNDBjODllODRkNjMKLQkxNzA0ZGMyMDkxN2I0ZjcxZTM3M2UyYzg4ODQ5N2VlNjY2ZDQwMzgwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjRlNTQxZjRjMWI0MTNkZDg0YzdlNDA5ZjVjMmJmMzI4ZGIyYWMxMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgQXByIDExIDA3OjAyOjI5IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEtpbGF1ZWEgZGVmY29uZmlnIHRvIHVzZSBkZXZpY2UtdHJlZSBib290aW5nIGFzIGRlZmF1bHQKLQotICAgIFRoaXMgcGF0Y2ggcmV3b3JrcyB0aGUgZGVmYXVsdCBlbnZpcm9ubWVudCBvbiBLaWxhdWVhL0hhbGVha2FsYS4gTm93Ci0gICAgIm5ldF9uZnMiIGZvciBleG1hcGxlIHVzZXMgdGhlIGRldmljZS10cmVlIHN0eWxlIGJvb3RpbmcgZm9ybWVybHkga25vdwotICAgIGFzICJuZXRfbmZzX2ZkdCIuIEFsc28gdGhlIGFkZHJlc3NlcyBpbiBSQU0gd2VyZSBjaGFuZ2VkIGJlY2F1c2Ugb2YgdGhlCi0gICAgbmV3IGltYWdlIGJvb3Rpbmcgc3VwcG9ydCwgd2hpY2ggY2hlY2sgZm9yIGltYWdlIG92ZXJ3cml0aW5nLiBTbyB0aGUKLSAgICBhZGRyZXNzZXMgbmVlZGVkIHRvZ2VldCBhZGp1c3RlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc1NmY1ZGFjZGEzODEwYjA5NGI5NGJjY2VmZmQzY2U2YzdmZjlhMjgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEFwciA5IDExOjU4OjAyIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogRml4IENhbnlvbmxhbmRzIGRlZmF1bHQgZW52aXJvbm1lbnQgdG8gd29yayB3aXRoIG5ldyBpbWFnZSBzdXBwb3J0Ci0KLSAgICBTaW5jZSB0aGUgbmV3IGltYWdlIHN1cHBvcnQgY2hlY2tzIGZvciBpbWFnZSBvdmVyd3JpdGluZywgdGhlIGRlZmF1bHQKLSAgICBlbnZpcm9ubWVudCBuZWVkcyB0byBnZXQgYWRqdXN0ZWQgdG8gdXNlIGNvcnJlY3QgYWRkcmVzc2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZGZjNmM3YjY0N2RiYTdhYjg2NzQ5NjE2ZjBlOWU1NzQwZGVlZDQyMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDkgMTE6NTQ6MTEgMjAwOCArMDIwMAotCi0gICAgcHBjOiBSZXZlcnQgcGF0Y2ggNzA0MzFlOGEgdGhhdCB1c2VkIF9zdGFydCBpbnN0ZWFkIG9mIENGR19NT05JVE9SX0JBU0UKLQotICAgIFRoZSBwYXRjaCA3MDQzMWU4YTczOTNiNmI3OTNmNzc5NTdmOTViOTk5ZmM5YTI2OWI4IChNYWtlIE1QQzgzeHggb25lIHN0ZXAKLSAgICBjbG9zZXIgdG8gZnVsbCByZWxvY2F0aW9uLikgZG9lc24ndCB1c2UgQ0ZHX01PTklUT1JfQkFTRSBhbnltb3JlLiBCdXQKLSAgICBvbiA0eHggc3lzdGVtcyBfc3RhcnQgY3VycmVudGx5IGNhbm5vdCBiZSB1c2VkIGZvciB0aGlzIGNhbGN1bGF0aW9uLgotICAgIFNvIHJldmVydCBiYWNrIHRvIHRoZSBvcmlnaW5hbCB2ZXJzaW9uIGZvciBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmOTEzNzRmNjVlYWU4YjQyY2FjMzI5ZTA2YmExYzU0NzI4Mjc4ZWZiCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBNYXIgMjggMTI6NDk6NTIgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogU29ydCBtaWNyb2JsYXplIGJvYXJkcyBpbiBNQUtFQUxMIHNjcmlwdAotCi1jb21taXQgNjIwMzJkZWI3MjE0YzZkOWI0Mzk2Mjk3ZTJhYWE1NTliYzJmODQ5NQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgTWFyIDI4IDExOjU4OjQ1IDIwMDggKzAxMDAKLQotICAgIG1pY3JvYmxhemU6IGNsZWFuIG1pY3JvYmxhemVfY29uZmlnLm1rCi0KLSAgICBGTEFHUyBhcmUgZ2VuZXJhdGVkIGJ5IFUtQk9PVCBnZW5lcmF0b3IuCi0gICAgQm9hcmQgc3BlY2lmaWMgRkxBR1MgYXJlIGluIGJvYXJkIGRpcmVjdG9yeQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgY2Y1YzY3OWNhMDRhNmI1NGJmNTNhNTViOGI5YzI5MzM1YjM4NzI4NwotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgTWFyIDI4IDEyOjQ3OjE5IDIwMDggKzAxMDAKLQotICAgIG1pY3JvYmxhemU6IHh1cHYycCBmaXggY29uZmlnIGZpbGUgZm9yIHN1cHBvcnRpbmcgRkRUCi0KLWNvbW1pdCAxODhkYzE2YjE4OTE0MzU3M2IxZWQ5MGU1ODRiZjg2NmQ3NWNkZDEyCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBNYXIgMjggMTE6NTM6MDIgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogbWw0MDEgZml4IGNvbmZpZyBmaWxlIGZvciBzdXBwb3J0aW5nIEZEVAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgNGM2YTZmMDJlMjM5MjM2MjYxMzMzNzU5OTk3ZWVhZjg2YjMwYjU0YwotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgTWFyIDI4IDExOjIyOjQ4IDIwMDggKzAxMDAKLQotICAgIG1pY3JvYmxhemU6IG1sNDAxIC0gYWRkIGlmZGVmIGZvciBHUElPCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCBhZjdhZTFhNDExYzY3ZWU5ZDE3YTY2ZDE3Y2U1MGIzNzRmM2RkNGU3Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBNYXIgMjggMTI6MTM6MDMgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogY2xlYW4gdWFydDE2NTUwIGFuZCB1YXJ0bGl0ZSBoYW5kbGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgMGIyMGYyNTA4Nzc0NDE0NjBmYjc5ZDcyMTkyOTU0YWJlODQ5ODgzNAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgTWFyIDI4IDExOjA4OjMxIDIwMDggKzAxMDAKLQotICAgIG1pY3JvYmxhemU6IEFkZCBFbWFjbGl0ZSBkcml2ZXIgdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IDg2OGNkZTUzMTBmODgyMzRiNzc0ODc4ZTRmMDZlNzlkZjEwYTg4YjMKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIE1hciAyOCAxMTowODowMSAyMDA4ICswMTAwCi0KLSAgICBtaWNyb2JsYXplOiBBZGQgRW1hYyBkcml2ZXIgdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IDZmOTYxYjRmNDYxZjZjYmI4M2E0NjdkNDY4YTAyZTYwNzhjMmIzMjcKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIE1hciAyOCAxMjo0MjoyOSAyMDA4ICswMTAwCi0KLSAgICBtaWNyb2JsYXplOiBhZGQgRW1hYyBldGhlcm5ldCBkcml2ZXIKLQotY29tbWl0IDg5YzUzODkxYjE4Y2JhZmQyOWFiODkzMWI0MGUyN2FkMjMxYjYwODUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIE1hciAyOCAxMjo0MTo1NiAyMDA4ICswMTAwCi0KLSAgICBtaWNyb2JsYXplOiBhZGQgRW1hY2xpdGUgZXRoZXJuZXQgZHJpdmVyCi0KLWNvbW1pdCBlNTg0NWUyMTIyNGRiZTJmZTQ3YjExZjFjZGY5NWRlN2Y4NGJlN2NiCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBNYXIgMjggMTE6MDQ6MDEgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogTUw0MDEgYW5kIFhVUFYyUCByZW1vdmUgZW1hYyBhbmQgZW1hY2xpdGUgcmVmZXJlbmNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci0KLWNvbW1pdCA2YmYzZTk4MmFlZmRiMWRhZjlmNTQ2MmQ0ODJjOGY5ZDFjYzkwYTU3Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBNYXIgMjggMTA6NTk6MzIgMjAwOCArMDEwMAotCi0gICAgbWljcm9ibGF6ZTogcmVtb3ZlIG9sZCBzZXR0aW5nIGZvciBlbWFjIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgY2QyYjc1ZWZiOWNjMDM3Yzc0ZWNlZTliMzU4NmY5YmY5ZTFkNGU1NwotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgTWFyIDI4IDEwOjU4OjE1IDIwMDggKzAxMDAKLQotICAgIG1pY3JvYmxhemU6IENsZWFuIE1ha2VmaWxlIGZyb20gYW5jaWVudCBlbWFjIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotCi1jb21taXQgYWI2OGY5MjFkOWM3NDE4MzBmNzIxYzNkODc5YzEzYTBjNTU5NzE4MwotQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci1EYXRlOglGcmkgTWFyIDI4IDEwOjIwOjQzIDIwMDggKzAxMDAKLQotICAgIFNQQVJDL0xFT04yOiBhZGRlZCBzdXBwb3J0IGZvciBHYWlzbGVyIHNpbXVsYXRvciBHUlNJTS9UU0lNIGZvciBTUEFSQy9MRU9OMiB0YXJnZXRzLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IDZlZDhhNDNhMTliYjAyNzU1MDFiYzI4NjAwN2RhYWZhOTIzNTUyY2YKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJV2VkIE1hciAyNiAyMzozODo0OCAyMDA4ICswMTAwCi0KLSAgICBTUEFSQy9MRU9OMzogYWRkZWQgc3VwcG9ydCBmb3IgR1ItQ1BDSS1BWDIwMDAgRlBHQSBBWCBib2FyZC4gVGhlIEZQR0EgaXMgZXhjaGFuZ2VhYmxlIGJ1dCBhIHN0YW5kYXJkIExFT04zIGRlc2lnbiBpcyBhc3N1bWVkLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IDY5NDAzODNkOWVjMWJmZTJmMTNlMzM5ZTZmNzIzZThkMzRhZjJiMTIKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJV2VkIE1hciAyNiAyMzozNDo0NyAyMDA4ICswMTAwCi0KLSAgICBTUEFSQy9MRU9OMzogYWRkZWQgc3VwcG9ydCBmb3IgQWx0ZXJhIE5JT1MgRGV2ZWxvcG1lbnQga2l0IChTVFJBVElYIElJIEVkaXRpb24pIHdpdGggR1JMSUIgdGVtcGxhdGUgZGVzaWduLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IDgyM2VkZDhhNjZlZDUwYWY1YWFiYTBjNzk1NjdmNjcwNjFlNGQ3OWEKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJRnJpIE1hciAyOCAxMDowNjo1MiAyMDA4ICswMTAwCi0KLSAgICBTUEFSQy9MRU9OMzogYWRkZWQgc3VwcG9ydCBmb3IgR2Fpc2xlciBHUlNJTS9UU0lNMiBTUEFSQy9MRU9OMyBzaW11bGF0b3JuLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBpbmZvcm1hdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IDcxZDdlNGMwNDg5ZTVlZDhmYzY5MzgyMjM2YWFhMmExZTUxMGMxMzUKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJV2VkIE1hciAyNiAyMzoyNjo0OCAyMDA4ICswMTAwCi0KLSAgICBTUEFSQy9MRU9OMzogYWRkZWQgc3VwcG9ydCBmb3IgR1ItWEMzUy0xNTAwIGJvYXJkIHdpdGggR1JMSUIgdGVtcGxhdGUgZGVzaWduLiBTZWUgd3d3LmdhaXNsZXIuY29tIGZvciBib2FyZCBpbmZvcm1hdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IGIzMzA5OTBjMmYzNmVlNGE4YmIzMTgzNjBlMWM4YmE5NjUyNjlhYjYKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJRnJpIE1hciAyOCAxMDowMDozMyAyMDA4ICswMTAwCi0KLSAgICBTUEFSQzogQWRkZWQgc3VwcG9ydCBmb3IgU1BBUkMgTEVPTjIgU09DIFByb2Nlc3Nvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IDJhMmZhNzk3ZTYzYjFlM2NkNGQ1NzAzMThjYTVmYmY4NzIzZWY1M2EKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJV2VkIE1hciAyNiAyMzowMDozOCAyMDA4ICswMTAwCi0KLSAgICBTUEFSQy9MRU9OMzogQWRkZWQgQU1CQSBCdXMgUGx1ZyZQbGF5IGluZm9ybWF0aW9uIHByaW50IGNvbW1hbmQgKGFtYmFwcCkuIEl0IGNhbiBwcmludCBhdmFpbGFibGUgY29yZXMgKHR5cGU6IEFIQiBNYXN0ZXIsIEFIQiBTbGF2ZSwgQVBCIFNsYXZlKSwgdGhlaXIgYWRkcmVzcyByYW5nZXMsIElSUSBudW1iZXIgYW5kIHZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci0KLWNvbW1pdCAxZTlhMTY0ZTIyOTc2OTMzMDAyYzVlNGIwYjc5YjA5ZmNlZGU5Y2Q0Ci1BdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTE6MjkgMjAwOCArMDEwMAotCi0gICAgU1BBUkM6IEFkZGVkIHN1cHBvcnQgZm9yIFNQQVJDIExFT04zIFNPQyBwcm9jZXNzb3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci0KLWNvbW1pdCBiZjNkOGIzMTE2OTU0NmZjZGRiNDczNzM5MWUxODkzZmIxMmQwMzNhCi1BdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLURhdGU6CUZyaSBNYXIgMjggMDg6Mjk6MjYgMjAwOCArMDEwMAotCi0gICAgU1BBUkM6IGFkZGVkIFNQQVJDIHN1cHBvcnQgZm9yIG5ldyB1aW1hZ2UgaW4gY29tbW9uIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci0KLWNvbW1pdCAwMGFiMzJjODU0MDVhNGZlNjVmZDQxMjgyNDMwODYyMTBmYzkwYTIxCi1BdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6MzY6MDMgMjAwOCArMDEwMAotCi0gICAgU1BBUkM6IGFkZGVkIFNQQVJDIGJvYXJkIGluZm9ybWF0aW9uIHRvIHRoZSBjb21tYW5kIGJkaW5mby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLQotY29tbWl0IGMyZjAyZGEyMWEzZjM3ZjA4Nzg1NTRlZWJjNzg1ZTA0ZmRjNGUxMjgKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJRnJpIE1hciAyOCAwOTo0NzowMCAyMDA4ICswMTAwCi0KLSAgICBTUEFSQzogQWRkZWQgZ2VuZXJpYyBzdXBwb3J0IGZvciBTUEFSQyBhcmNoaXRlY3R1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci0KLWNvbW1pdCBlNTRlYzBmMDE2ODAzZTRkOTUyNGZmNzFmNzk3MWJkYTBjNTFiMjg3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBBcHIgMyAxNDo1MDozNCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCA0eHggZW5ldCBkcml2ZXIgdG8gc3VwcG9ydCA0NjBHVCBFTUFDMiszCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSB3aXRoIHRoZSBSR01JSSBzZXR1cCBvZiB0aGUgNDYwR1QuIFRoZSA0NjBHVAotICAgIGhhcyAyIFJHTUlJIGluc3RhbmNlcyBhbmQgd2UgbmVlZCB0byBjb25maWd1cmUgdGhlIDJuZCBSR01JSSBpbnN0YW5jZQotICAgIGZvciB0aGUgRU1BQzIrMyBjaGFubmVscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGMyYTU0NWNlMzNiMjZkODAzMzdmODBiNTMzODI4ODM5MjQ5ZmIxYzkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBBcHIgMiAwODowMzo1NiAyMDA4ICswMjAwCi0KLSAgICBNUEM4eHg6IEZpeCBsaWJmZHQgc3VwcG9ydCBpbnRyb2R1Y2VkIGluIGNvbW1pdCA3N2ZmN2I3NAotCi0gICAgZmR0LmM6IEluIGZ1bmN0aW9uICdmdF9jcHVfc2V0dXAnOgotICAgIGZkdC5jOjMzOiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZG9fZml4dXBfYnlfcHJvcF91MzInCi0gICAgZmR0LmM6Mzk6IHdhcm5pbmc6IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdkb19maXh1cF9ieV9jb21wYXRfdTMyJwotICAgIGZkdC5jOjQzOiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZmR0X2ZpeHVwX2V0aGVybmV0JwotICAgIGZkdC5jOjQ1OiB3YXJuaW5nOiBpbXBsaWNpdCBkZWNsYXJhdGlvbiBvZiBmdW5jdGlvbiAnZmR0X2ZpeHVwX21lbW9yeScKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0YWJkODQ0ZDhlYjEwODczNmUxY2Y4ZmJmM2RiZjYxZjJkNWZjMTFiCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXIgMzEgMjA6NDU6NTYgMjAwOCAtMDUwMAotCi0gICAgRml4IGZkdCBzZXQgY29tbWFuZCB0byBjb25mb3JtIHRvIGR0cyBzcGVjCi0KLSAgICBUaGUgZmR0IHNldCBjb21tYW5kIHdhcyB0cmVhdGluZyBwcm9wZXJ0aWVzIHNwZWNpZmllZCBhcyA8MDA+IGFuZCA8MDAxMT4KLSAgICBhcyBieXRlIHN0cmVhbXMsIHJhdGhlciB0aGFuIGFzIGFuIGFycmF5IG9mIGNlbGxzLglBcyB3ZSBhbHJlYWR5IGhhdmUKLSAgICBzeW50YXggZm9yIGV4cHJlc3NpbmcgdGhlIGRlc2lyZSBmb3IgYSBzdHJlYW0gb2YgYnl0ZXMgKFsgeHggeHggLi4uXSksCi0gICAgd2Ugc2hvdWxkIHVzZSB0aGUgPD4gc3ludGF4IHRvIGRlc2NyaWJlIGFycmF5cyBvZiBjZWxscywgd2hpY2ggYXJlIGFsd2F5cwotICAgIDMyLWJpdHMgcGVyIGVsZW1lbnQuICBJZiB3ZSBpbWFnaW5lIHRoaXMgbGlrZWx5IChJTUhPKSBzY2VuYXJpbzoKLQotICAgID4gZmR0IHNldCAvZXRoZXJuZXQtcGh5QDEgcmVnIDwxPgotCi0gICAgV2l0aCB0aGUgb2xkIGNvZGUsIHRoaXMgd291bGQgY3JlYXRlIGEgYmFkIGZkdCwgc2luY2UgdGhlIHJlZyBjZWxsIHdvdWxkIGJlCi0gICAgbWFkZSB0byBiZSBvbmUgYnl0ZSBpbiBsZW5ndGguICBCdXQgdGhlIGNlbGwgbXVzdCBiZSA0IGJ5dGVzLCBzbyB0aGlzIHdvdWxkCi0gICAgYnJlYWsgbXlzdGVyaW91c2x5LgotCi0gICAgQWxzbywgdGhlIGR0cyBzcGVjIGNhbGxzIGZvciBjb25zdGFudHMgaW5zaWRlIHRoZSBhbmdsZSBicmFja2V0cyAoPD4pCi0gICAgdG8gY29uZm9ybSB0byBDIGNvbnN0YW50IHN0YW5kYXJkcyBhcyB0aGV5IHBlcnRhaW4gdG8gYmFzZS4KLSAgICBUYWtlIHRoaXMgc2NlbmFyaW86Ci0KLSAgICA+IGZkdCBzZXQgL2V0aGVybmV0QGYwMCByZWcgPDB4ZTI1MDAwMFwgMHgxMDAwPgotCi0gICAgVGhlIG9sZCBmZHQgY29tbWFuZCB3b3VsZCBjb21wbGFpbiB0aGF0IGl0IGNvdWxkbid0IHBhcnNlIHRoYXQuICBPciwgaWYgeW91Ci0gICAgd2FudGVkIHRvIHNwZWNpZnkgdGhhdCBhIGNlcnRhaW4gY2xvY2sgcmFuIGF0IDMzIE1IeiwgeW91J2QgYmUgcmVxdWlyZWQgdG8KLSAgICBkbyB0aGlzOgotCi0gICAgPiBmZHQgc2V0IC9teWRldiBjbG9jayA8MWY3OGE0MD4KLQotICAgIFdoZXJlYXMgdGhlIG5ldyBjb2RlIHdpbGwgYWNjZXB0IGRlY2ltYWwgbnVtYmVycy4KLQotICAgIFdoaWxlIEkgd2FzIGluIHRoZXJlLCBJIGV4dGVuZGVkIHRoZSBmZHQgY29tbWFuZCBwYXJzZXIgdG8gaGFuZGxlIHByb3BlcnR5Ci0gICAgc3RyaW5ncyB3aGljaCBhcmUgc3BsaXQgYWNyb3NzIG11bHRpcGxlIGFyZ3VtZW50czoKLQotICAgID4gZmR0IHNldCAvZXRoZXJuZXRAZjAwIGludGVycnVwdHMgPCAzMyAyIDM0IDIgMzYgMiA+Ci0gICAgPiBmZHQgcCAvZXRoZXJuZXRAZjAwCi0gICAgZXRoZXJuZXRAZjAwIHsKLQlpbnRlcnJ1cHRzID0gPDB4MjEgMHgyIDB4MjIgMHgyIDB4MjQgMHgyPjsKLSAgICB9OwotCi0gICAgTGFzdGx5LCB0aGUgZmR0IHByaW50IGNvZGUgd2FzIHJlYXJyYW5nZWQgc2xpZ2h0bHkgdG8gcHJpbnQgYXJyYXlzIG9mIGNlbGxzCi0gICAgaWYgdGhlIGxlbmd0aCBvZiB0aGUgcHJvcGVydHkgaXMgYSBtdWx0aXBsZSBvZiA0IGJ5dGVzLCBhbmQgdG8gbm90IHByaW50Ci0gICAgbGVhZGluZyB6ZXJvcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFjMjkyNmFiZGQ3ZGI4OTI5NmE4Y2M3ZjIyNGRkOWQ1ZDRlMzdhNTYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAyIDA4OjM5OjMzIDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogQ2FueW9ubGFuZHM6IEluaXQgU0FUQS9QQ0llIHBvcnQgY29ycmVjdGx5Ci0KLSAgICBDYW55b25sYW5kcyAoNDYwRVgpIHNoYXJlcyB0aGUgZmlyc3QgUENJZSBpbnRlcmZhY2Ugd2l0aCB0aGUgU29DIFNBVEEKLSAgICBpbnRlcmZhY2UuIFRoaXMgdXNhZ2UgY2FuIGJlIGNvbmZpZ3VyZWQgd2l0aCB0aGUganVtcGVyIEo2LiBUaGlzIHBhdGNoCi0gICAgY29ycmVjdGx5IGNvbmZpZ3VyZXMgdGhlIFNBVEEvUENJZSBQSFkgZm9yIFNBVEEgdXNhZ2Ugd2hlbiB0aGlzIGp1bXBlcgotICAgIGlzIGluc3RhbGxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZmZTI5NDZmMTk4NDgxMjU0YTZlZTk2MDBkNzQ1NmI4MzE2YTQwODMKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgMjggMTc6Mzc6NDkgMjAwOCAtMDUwMAotCi0gICAgcmVtb3ZlIHJlbWFpbmluZyBDT05GSUdfT0ZfSEFTX3tVQk9PVF9FTlYsQkRfVH0gY29kZQotCi0gICAgZmluaXNoIG9mZiB3aGF0IGNvbW1pdCA0M2RkZDljODIwZmVjNDQ4MTYxODhmNTMzNDZiNDY0ZTIwYjMxNDJkLAotICAgICJSZW1vdmUgZGVwcmVjYXRlZCBDT05GSUdfT0ZfSEFTX1VCT09UX0VOViBhbmQgQ09ORklHX09GX0hBU19CRF9UIgotICAgIHN0YXJ0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjU4NzNmMTczMmI5MmEyNTY5MGUxNTEzYjkwZGZiMGQ2NDRmNjY5NwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIEFwciAxIDA3OjMwOjUxIDIwMDggKzAyMDAKLQotICAgIGRhdGFmbGFzaDogTW92ZSBDT05GSUdfSEFTX0RBVEFGTEFTSCB0byBNYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDJkOTM0ZWE1MWYyNzY1MjJiNTMyZjg3MGE4MjBlODQ0ZmY0ODBiNWIKLUF1dGhvcjogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KLURhdGU6CUZyaSBNYXIgMjggMTU6Mjk6NDUgMjAwOCArMDEwMAotCi0gICAgQWRkIFZpdGVzc2UgODYwMSBzdXBwb3J0IHRvIFRTRUMgZHJpdmVyCi0KLSAgICBBZGQgcGh5X2luZm8gZm9yIFZpdGVzc2UgVlNDODYwMS4KLSAgICBBZGQgY29uZmlnIG9wdGlvbiwgQ0ZHX1ZTQzg2MDFfU0tFV0ZJWCwgdG8gZW5hYmxlIFJHTUlJIHNrZXcgdGltaW5nIGNvbXBlbnNhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Ci0gICAgUmV2aWV3ZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDNlYWM2NDAyYTUwOGIwZjY4YTIxY2M5Y2JjMmNjNDkzNDdkZTBjMzEKLUF1dGhvcjogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotRGF0ZToJTW9uIE1hciAzMSAxNDoyNTowMCAyMDA4ICswMDAwCi0KLSAgICBTUEFSQzogYWRkZWQgU01DOTExMTEgZHJpdmVyIGluIGFuZCBvdXQgbWFjcm9zIGZvciBMRU9OIHByb2Nlc3NvcnMuCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIFNQQVJDL0xFT04gcHJvY2Vzc29ycyBhYmxlIHRvIHJlYWQgYW5kIHdyaXRlCi0gICAgdG8gdGhlIFNNQzkxMTExIGNoaXAgdXNpbmcgdGhlIGNoaXAgZXh0ZXJuYWwgSS9PIGJ1cyBvZiB0aGUgbWVtb3J5Ci0gICAgY29udHJvbGxlci4gVGhpcyBwYXRjaHMgZGVmaW5lcyB0aGUgc3RhbmRhcmQgaW4gYW5kIG91dCBtYWNyb3MKLSAgICBleHBlY3RlZCBieSB0aGUgU01DOTExMSBkcml2ZXIuCi0KLSAgICBUbyBhY2Nlc3MgdGhhdCBJL08gYnVzIG9uZSBtdXN0IHNldCB1cCB0aGUgbWVtb3J5IGNvbnRyb2xsZXIKLSAgICAoTUNUUkwgb3IgRlRNQ1RSTCkgY29ycmVjdGx5LiBJdCBpcyBhc3N1bWVkIHRoYXQgdGhlIHVzZXIgc2V0cwotICAgIHVwIHRoaXMgY29ycmVjdGx5IHdoZW4gdGhlIG90aGVyIE1DVFJMIHBhcmFtZXRlcnMgYXJlIHNldCB1cC4gSXQKLSAgICBjYW4gYmUgc2V0IHVwIGZyb20gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24gaGVhZGVyIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDNjYTdjNTU4ZWJhMzYzMzI1NTZiYzQ3MGQ0NWUyZjVkNDJiZDBjYTYKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVdlZCBNYXIgMjYgMTg6NTI6MzQgMjAwOCArMDEwMAotCi0gICAgQWRkIG1haW50YWluZXJzaGlwIGluZm9ybWF0aW9uIGZvciBBVDkxQ0FQOUFESyBhbmQgQVQ5MVNBTTkyNjBFSyBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCA0ZTAzZGRlODRkZDJjOTFlMzI3Y2RjMjNhZTExOWQ0MzI1NTlhN2EzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gTWFyIDMxIDIxOjMxOjA0IDIwMDggKzAyMDAKLQotICAgIEFUOTFTQU05MjYwRUs6IE1vdmUgQ09ORklHX0NNRF9OQU5EIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMDE3NmQ0M2U3NTlhNmUwMGNhY2M4NWVmZjI2ZmQ2MGY3NGI0ZjZiNwotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJV2VkIE1hciAyNiAxODo1MjozMyAyMDA4ICswMTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgQVQ5MVNBTTkyNjBFSwotCi0gICAgU3VwcG9ydCBmb3IgYm9vdGluZyBmcm9tIGludGVybmFsIERhdGFGbGFzaCwgZXh0ZXJuYWwgRGF0YUZsYXNoIGNhcmQKLSAgICBvciBOQU5EIGZsYXNoIGlzIGF2YWlsYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCAxNzYyZjEzYjRhYWI4OGI2ODViMTcyMmYxN2RhZGEyNDc5NDU2MjRiCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gTWFyIDMxIDIxOjIwOjQ5IDIwMDggKzAyMDAKLQotICAgIEFUOTFTQU05OiBNb3ZlIENPTkZJR19IQVNfREFUQUZMQVNIIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzYxNzEyMTg4YjM1MzQ5NGRlZmIyYjY0NDQ5MWZmNzNkMGRhYWE2ZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIE1hciAzMSAyMToxMjoxNyAyMDA4ICswMjAwCi0KLSAgICBBVDkxQ0FQOUFESzogTW92ZSBDT05GSUdfQ01EX05BTkQgdG8gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5ODNjMWRiMDRjMWRkMGY5MmUwMmYwNmQyOWYwYzY1YTNkOWEyNjg3Ci1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglXZWQgTWFyIDI2IDIwOjUyOjMyIDIwMDggKzAxMDAKLQotICAgIFBvcnQgQVQ5MUNBUDkgdG8gdGhlIG5ldyBoZWFkZXJzCi0KLSAgICBBZGFwdCB0aGUgZXhpc3RpbmcgQVQ5MUNBUDkgY29kZSB0byB0aGUgbmV3IGhlYWRlcnMgYW5kIEFQSXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotCi1jb21taXQgMTc3ZThhNWFjODFiYmM1MzFhMWQ1NGFiZGI0N2YyODYwMjY2YzNhYQotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJV2VkIE1hciAyNiAxOTo1MjozMSAyMDA4ICswMTAwCi0KLSAgICBGaW5pc2ggaGVhZGVyIGZpbGVzIHJld29ya2luZwotCi0gICAgUmVwbGFjZSBBVDkxQ0FQOS5oIGZpbGUgd2l0aCBzZXZlcmFsIHNwbGl0dGVkIGhlYWRlciBmaWxlcyBjb21pbmcKLSAgICBmcm9tIHRoZSBMaW51eCBrZXJuZWwuCi0KLSAgICBUaGlzIGlzIHBhcnQgMiBvZiB0aGUgcmVwbGFjZW1lbnQ6IG1vcmUgaGVhZGVyIGltcG9ydHMgYW5kIGVkaXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLQotY29tbWl0IDZkMWRiYmJmOWZkZjcyNzM4NDAwMmU1NTNlNjE1YzE1ZDhiOTY3ZjQKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVdlZCBNYXIgMjYgMTk6NTI6MzAgMjAwOCArMDEwMAotCi0gICAgSW1wb3J0IHNldmVyYWwgaGVhZGVyIGZpbGVzIGZyb20gTGludXgKLQotICAgIFJlcGxhY2UgQVQ5MUNBUDkuaCBmaWxlIHdpdGggc2V2ZXJhbCBzcGxpdHRlZCBoZWFkZXIgZmlsZXMgY29taW5nCi0gICAgZnJvbSB0aGUgTGludXgga2VybmVsLgotCi0gICAgVGhpcyBpcyBwYXJ0IDEgb2YgdGhlIHJlcGxhY2VtZW50OiBwcmlzdGluZSBoZWFkZXIgZmlsZXMgaW1wb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLQotY29tbWl0IGE4YTc4ZjJkOTlkYzFiZDMwZGMzNTk1ZGExMTg1MzliNTA2YzYxMTgKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVdlZCBNYXIgMjYgMjA6NTI6MjggMjAwOCArMDEwMAotCi0gICAgTW92ZSBhdDkxY2FwOSBzcGVjaWZpYyBmaWxlcyB0byBhdDkxc2FtOSBkaXJlY3RvcnkKLQotICAgIEFUOTFDQVA5IGFuZCBBVDkxU0FNOSBTb0NzIGFyZSB2ZXJ5IGNsb3NlIGhhcmR3YXJlIHdpc2UsIHNvIGEKLSAgICBjb21tb24gaW5mcmFzdHJ1Y3R1cmUgY2FuIGJlIHVzZWQuIExldCB0aGlzIGluZnJhc3RydWN0dXJlIGJlCi0gICAgbmFtZWQgYWZ0ZXIgdGhlIEFUOTFTQU05IGZhbWlseSwgYW5kIG1vdmUgdGhlIGV4aXN0aW5nIEFUOTFDQVA5Ci0gICAgZmlsZXMgdG8gdGhlIG5ldyBwbGFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCA2MTEwNmE1NjU4NzBmZjUwM2Y5MmIyNTFiOTRiZDdhZmVmODg5YTA0Ci1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglXZWQgTWFyIDI2IDIxOjUyOjI3IDIwMDggKzAxMDAKLQotICAgIFVzZSB0aW1lcl9pbml0KCkgaW5zdGVhZCBvZiBib2FyZCBzdXBwbGllZCBpbnRlcnJ1cHRfaW5pdCgpCi0KLSAgICBUaGUgdGltZXIgb24gQVQ5MUNBUDkvQVQ5MVNBTTkgaXMgc3VwcGxpZWQgYnkgdGhlIFNvQywgYW5kIG5vdCBieQotICAgIHRoZSBib2FyZCwgc28gdXNlIHRpbWVyX2luaXQoKSBpbnN0ZWFkIG9mIGludGVycnVwdF9pbml0KCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotCi1jb21taXQgNTYwNGUyMTc4YzUyMThmYmZkYmEyZTQyOTNjYTc2NTJlODI5YWMyNQotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJV2VkIE1hciAyNiAyMTo1MjozNiAyMDA4ICswMTAwCi0KLSAgICBDbGVhbnVwIERhdGFGbGFzaCBwYXJ0aXRpb24gaGFuZGxpbmcKLQotICAgIERhdGFGbGFzaCBwYXJ0aXRpb24gaW5mb3JtYXRpb24gaGFzIGJlY29tZSBhIG1lc3MuIFRoaXMgcGF0Y2gKLSAgICBkZWZpbmVzIGEgc2luZ2xlIHBhcnRpdGlvbiBzY2hlbWUgZm9yIEF0bWVsIERhdGFGbGFzaGVzLiBUaGlzIHBhcnRpdGlvbgotICAgIHNjaGVtZSB3aWxsIGJlIHVzZWQgYnkgYWxsIEFUOTFDQVA5IGFuZCBBVDkxU0FNOSBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotCi1jb21taXQgOWI0NjQzMmZjNjVjZTBmMDgyNmIzMmU0ZjE1YzE1YjMzY2NiOGQ0MgotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE1hciAyOCAwODo0Nzo0NSAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IGFsaWdubWVudCBpc3N1ZSBhZnRlciBDT05GSUdfSURFTlRfU1RSSU5HIGluIHN0YXJ0LlMKLQotICAgIFdoZW4gdGhlIHZlcnNpb25fc3RyaW5nIGZ1bmN0aW9uIGluIHN0YXJ0LlMgaXMgbm90IDQtYnl0ZSBhbGlnbiwKLSAgICBpdCB3aWxsIGNhdXNlIHRoZSBjb21waWxlciBnZW5lcmF0ZXMgInVuYWxpZ25lZCBvcGNvZGVzIGRldGVjdGVkCi0gICAgaW4gZXhlY3V0YWJsZSBzZWdtZW50Ii4gVGhpcyBpc3N1ZSBhZmZlY3RzIGFsbCBDb2xkRmlyZSBDUFVzLgotICAgIEJ5IGFkZGluZyAuYWxpZ24gNCBhZnRlciBDT05GSUdfSURFTlRfU1RSSU5HLCBpdCB3aWxsIHBhZCAwJ3MgaWYKLSAgICBpdCBpcyBub3QgYWxpZ25lZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmFlNjFlZWZlMTViNGQ0NTQwNjBhNzE0MGU0OWFlNTgzMjJiZTgwMwotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE1hciAyNSAxNTo0MToxNSAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogQWRkIGRzcGkgYW5kIHNlcmlhbCBmbGFzaCBzdXBwb3J0IGZvciBNQ0Y1NDQ1eAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0OGVhZDdhN2E5MjJmY2VhZjQ5NGUzNTJhYmZhYjgyMTZhNDFiNDE3Ci1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWFyIDE4IDE3OjM3OjAxIDIwMDggLTA1MDAKLQotICAgIENvbGRGaXJlOiBSZW1vdmUgUjUyMDAgYm9hcmQKLQotICAgIFRoaXMgYm9hcmQgbmV2ZXIgd2VudCBpbnRvIHByb2R1Y3Rpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFphY2hhcnkgUC4gTGFuZGF1IDx6YWNoYXJ5LmxhbmRhdUBsYWJ4dGVjaG5vbG9naWVzLmNvbT4KLSAgICBBY2tlZC1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1NDVjOGUwYTdjZDNjYTlkMzg0NjY2OGY2OWIwZDIwMTI1MGFiZWE4Ci1BdXRob3I6IE1hdHRoZXcgRmV0dGtlIDxbbWF0dGhldy5mZXR0a2VAZ21haWwuY29tXT4KLURhdGU6CVRodSBKYW4gMjQgMTQ6MDI6MzIgMjAwOCAtMDYwMAotCi0gICAgQ29sZEZpcmU6IEFkZGVkIE01Mjc1RVZCIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IEZldHRrZSA8bWZldHRrZUB2aWRlb24tY2VudHJhbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNzFkOWQ5MWEyY2Q5YzMwYjJiNjM2OWYxNWMxYTQ2YzExNTM3YzJiCi1BdXRob3I6IE1hdHRoZXcgRmV0dGtlIDxbbWF0dGhldy5mZXR0a2VAZ21haWwuY29tXT4KLURhdGU6CU1vbiBGZWIgNCAxNTozODoyMCAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogQWRkZWQgTUNGNTI3NSBjcHUgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgRmV0dGtlIDxtZmV0dGtlQHZpZGVvbi1jZW50cmFsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ0ZTViOWVkYWIwNzdhYmE2ZTliODQ5YWZhNGI3ZmJkOGZkN2IwMmIKLUF1dGhvcjogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXIgMTcgMTI6MTQ6MTEgMjAwOCAtMDUwMAotCi0gICAgQ29sZEZpcmU6IERlZmluZSBib290ZGVsYXkgaW4gY29uZmlndXJhdGlvbiBmaWxlIGZvciBNNTIyNzdFVkIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHQgV2FkZWwgPE1hdHQuV2FkZGVsQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzc4NzhmMTZjZWRlZTE3MTYxZmYyMzM2OTkwOTcwZmZmYzZjZWEzNQotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAxNyAxMjowOTowNyAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IHNlY29uZCBtZW1vcnkgQ2hpcHNlbGVjdCBmb3IgTTU0NzVFVkIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDNkNjA2NDIzOTVhNTUwOTU2Y2IyMWQyODdjOGNmYTU2MzkxM2QyOAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1hciAxMyAxNDoyNjozMiAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogVXBkYXRlIGNvcnJlY3QgRkxBU0hCQVIgYW5kIFJBTUJBUjEgZm9yIE1DRjUyODIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZWIxNGViZTgxM2EwY2I1ZDQ3OTA1MjI4ZGE0NDZhNWFkNjkyNDczYgotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVN1biBNYXIgMzAgMjA6MzM6MDQgMjAwOCAtMDUwMAotCi0gICAgcHBjNHh4OiBBZGQgQ0ZHX01FTV9UT1BfSElERSB0byBEZW5hbGkgU1BELWJhc2VkIFNEUkFNIHNldHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IDAyZTM4OTIwMjExMTJmMjEwNjdkOWVkMWQwNGFlNDE4MjcyNWJhNTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE1hciAzMSAxMjoyMDo0OCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IFNtYWxsIHdoaXRlc3BhY2UgZml4IG9mIGVzZCBwYXRjaGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwMzQzOTRhYmI1MjQ3ODUwNDdjODE1ZjAwZGRlOGNkYmRjMTU5M2M1Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJU3VuIE1hciAzMCAxODo1Mjo0NCAyMDA4ICswMjAwCi0KLSAgICBwcGM0eHg6IENsZWFudXAgUE1DNDQwIGJvYXJkIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgYTZjYzZjMzcxODhkODVjMjVkMTY3YTQ1MTVkYTg2ZjQ4ZDlhNTgzZQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVN1biBNYXIgMzAgMTg6NTI6MDYgMjAwOCArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgcHRtIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIGZvciBQTUM0NDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgcHRtMWxhLCBwdG0xbXMsIHB0bTJsYSBhbmQgcHRtMm1zCi0gICAgZW52aXJvbm1lbnQgdmFyaWFibGVzLgotCi0gICAgQ2xlYW51cCBwY2lfdGFyZ2V0X2luaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDdjOTFmNTFhMmZlMjk2OTA5MTQ3ZjE2NDZhMTQxMjcyOWRkMTBiMWQKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglTdW4gTWFyIDMwIDE4OjAxOjE1IDIwMDggKzAyMDAKLQotICAgIHBwYzR4eDogTWlub3IgdXBkYXRlcyBmb3IgRFU0NDAgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGQ1YmZmZWI4NjhkNmI0ZDQ2MmY1NThkYWM0MzAxMTAyN2I2NjQ0YjcKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIEZlYiAxOSAwMDo1NDoyMCAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogY2xlYW51cCBhbmQgb3ZlcmhhdWwgY29tbW9uIGJvYXJkIGluaXQgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiODZiMzQxNmY4NzQzNThhY2FmMDc1MTllNzYyMGNkYjIxNDVmNzViCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBGZWIgMTkgMDA6NTA6NTggMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGNsZWFudXAgbGliX2JsYWNrZmluL2NhY2hlLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDkxNzFmYzgxNzIyYzIwZmRiNWE4MjlhNThiMTdjOWVhYWRkNWZiNDQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIE1hciAzMCAxNTo0NjoxMyAyMDA4IC0wNDAwCi0KLSAgICBCbGFja2ZpbjogdW5pZnkgY3B1IGFuZCBib290IG1vZGVzCi0KLSAgICBBbGwgb2YgdGhlIGR1cGxpY2F0ZWQgY29kZSBmb3IgQmxhY2tmaW4gcHJvY2Vzc29ycyBhbmQgYm9vdCBtb2RlcyBoYXZlIGJlZW4KLSAgICB1bmlmaWVkLiAgQWZ0ZXIgYWxsLCB0aGUgY29yZSBpcyB0aGUgc2FtZSBmb3IgYWxsIHByb2Nlc3NvcnMsIGp1c3QgdGhlCi0gICAgcGVyaXBoZXJhbCBzZXQgZGlmZmVycyAod2hpY2ggZ2V0cyBoYW5kbGVkIGluIHRoZSBkcml2ZXJzKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDg4MGNjNDM4MWVhODM2MDI0OGNkZGNkZjg3YTY0NTY2NzQ1YTU3MjQKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTI6MzUgMjAwOCArMDEwMAotCi0gICAgRml4IENGR19OT19GTEFTSCBjb21waWxhdGlvbi4KLQotICAgIE1hbnkgQXRtZWwgYm9hcmRzIGhhdmUgbm8gInJlYWwiIChOT1IpIGZsYXNoIG9uIGJvYXJkLCBhbmQgcmVseSBvbmx5Ci0gICAgb24gRGF0YUZsYXNoIGFuZCBOQU5EIG1lbW9yaWVzLiBUaGlzIHBhdGNoIGVuYWJsZXMgQ0ZHX05PX0ZMQVNIIHRvCi0gICAgYmUgcHJlc2VudCBpbiBhIGJvYXJkIGNvbmZpZ3VyYXRpb24gZmlsZSwgd2hpbGUgc3RpbGwgZW5hYmxpbmcgZmxhc2gKLSAgICBjb21tYW5kcyBsaWtlICdmbGluZm8nLCAncHJvdGVjdCcsIGV0Yy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCA5Y2U3ZTUzYWJkMDM5ZGVjZWExYWY2N2FlYzgxYmJkNWRmN2EyNTkzCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBGZWIgMTkgMDA6NTg6MTMgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IEJGNTM3LXN0YW1wOiBjbGVhbnVwIHNwaSBmbGFzaCBkcml2ZXIKLQotICAgIFRoaXMgcHVudHMgdGhlIG9sZCBzcGkgZmxhc2ggZHJpdmVyIGZvciBhIG5ldy9nZW5lcmFsaXplZCBvbmUgdW50aWwgdGhlCi0gICAgY29tbW9uIG9uZSBjYW4gYmUgaW50ZWdyYXRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGJiOGUzY2YyNWJjMGIwNDkzNmMwYzFhMDc1OTg1ZGQ4NzAwYTI0NGIKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVN1biBNYXIgMzAgMTE6MzQ6MzQgMjAwOCAtMDQwMAotCi0gICAgRml4IG1hY3JvIHR5cG8gaW4gY29tbW9uL2NtZF9taWkuYwotCi0gICAgVGhpcyB0eXBvIHdhcyBpbnRyb2R1Y2VkIGluIGNvbW1pdCAyMzNhOGJjZDk0OTk3ZjNmMzQ1ODMzYTNiODJlODM2MjIyZjJhMjA2LiAgSQotICAgIGFjdHVhbGx5IGFwcGxpZWQgdGhlIHdyb25nIHBhdGNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGYxYjk4NWYyZDcyNGNjYWE0ZDNkZWYwNzkxN2YwY2FhZjE4ZmE3N2QKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgMzAgMTY6Mzk6NTMgMjAwOCArMDIwMAotCi0gICAgdXNlIGNvcnJlY3QgYXQ5MXJtOTIwMCByZWdpc3RlciBuYW1lIGluIG01MDFzayBib2FyZAotCi0gICAgVGhpcyBmaXhlcyBhIG5hbWluZyBidWcgZm9yIGF0OTFybTkyMDAgbG93bGV2ZWwgaW5pdCBjb2RlOgotICAgIE5PUiBib290IGZsYXNoIGlzIG9uIGNoaXBzZWxlY3QgMCwgbm90IGNoaXBzZWxlY3QgMi4gIFRoaXMKLSAgICBtYWtlcyBjb2RlIHVzZSB0aGUgcmVnaXN0ZXIgbmFtZSBmcm9tIGNoaXAgZGF0YXNoZWV0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0ODBlZDFkZWExMDNhMWM4ZjQ1OTFhZmM3N2QyZGUzYzc4NjhkOTgzCi1BdXRob3I6IERhdmlkIEJyb3duZWxsIDxkYXZpZC1iQHBhY2JlbGwubmV0PgotRGF0ZToJRnJpIEphbiAxOCAxMjo1NTowMCAyMDA4IC0wODAwCi0KLSAgICB1c2UgY29ycmVjdCBhdDkxcm05MjAwIHJlZ2lzdGVyIG5hbWUKLQotICAgIFRoaXMgZml4ZXMgYSBuYW1pbmcgYnVnIGZvciBhdDkxcm05MjAwIGxvd2xldmVsIGluaXQgY29kZToKLSAgICBOT1IgYm9vdCBmbGFzaCBpcyBvbiBjaGlwc2VsZWN0IDAsIG5vdCBjaGlwc2VsZWN0IDIuICBUaGlzCi0gICAgbWFrZXMgY29kZSB1c2UgdGhlIHJlZ2lzdGVyIG5hbWUgZnJvbSBjaGlwIGRhdGFzaGVldHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBCcm93bmVsbCA8ZGJyb3duZWxsQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KLQotY29tbWl0IGEzNTQzZDZkYzUyYjBiYTljNjQwMTY2ODdjZjMyZDYwMGIzMWE0NzYKLUF1dGhvcjogRGF2aWQgQnJvd25lbGwgPGRhdmlkLWJAcGFjYmVsbC5uZXQ+Ci1EYXRlOglGcmkgSmFuIDE4IDEyOjQ1OjQ1IDIwMDggLTA4MDAKLQotICAgIGFkZCBtaXNzaW5nIEFSTSBib2FyZHMgdG8gTUFLRUFMTAotCi0gICAgQWRkIHNvbWUgbWlzc2luZyBBUk0gYm9hcmRzIHRvIE1BS0VBTEwuICBUaGVzZSBidWlsZCBjb3JyZWN0bHksCi0gICAgdW5saWtlIHNldmVyYWwgb2YgdGhlIGJvYXJkcyBhbHJlYWR5IGxpc3RlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEJyb3duZWxsIDxkYnJvd25lbGxAdXNlcnMuc291cmNlZm9yZ2UubmV0PgotCi1jb21taXQgMDY2YmViZDYzNTNlMzNhZjNhZGVmYzM0MDQ1NjA4NzE2OTllOTk2MQotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJU3VuIE1hciAzMCAxMTozNDowOSAyMDA4ICswMTAwCi0KLSAgICBCcmFja2V0IFJFQURfVElNRVIgbWFjcm8gaW4gY3B1L2FybTExMzYvb21hcDI0eHgvaW50ZXJydXB0cy5jCi0gICAgdG8gcHJldmVudCBjb21waWxhdGlvbiBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci0KLWNvbW1pdCA3YTgzN2I3MzEwMTY2YWU4ZmM4YjhkNjZkN2VmMDFiNjBhODBmOWQ2Ci1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8W2xnQGRlbnguZGVdPgotRGF0ZToJU3VuIE1hciAzMCAxMTozMjozMCAyMDA4ICswMTAwCi0KLSAgICBTdXBwb3J0IGZvciB0aGUgTVgzMUFEUyBldmFsdWF0aW9uIGJvYXJkIGZyb20gRnJlZXNjYWxlCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIE1YMzFBRFMgZXZhbHVhdGlvbiBib2FyZCBmcm9tIEZyZWVzY2FsZSwKLSAgICBpbml0aWFsaXphdGlvbiBjb2RlIGlzIGNvcGllZCBmcm9tIFJlZEJvb3Qgc291cmNlcywgYWxzbyBwcm92aWRlZCBieSBGcmVlc2NhbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCBjODhhZTIwNTgwYjJiMDE0ODdiNGNkY2M4YjJhMTEzZjU1MWFlZTM2Ci1BdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLURhdGU6CVN1biBNYXIgMzAgMTE6MzI6MjcgMjAwOCArMDEwMAotCi0gICAgUGh5dGVjIFBoeWNvcmUtaS5NWDMxIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgUGh5dGVjIFBoeWNvcmUtaS5NWDMxIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgYTE0N2U1NmYwMzg3MWJiYTRmMDUwNThkNWUwNGNlN2RlYjAxMGIwNAotQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOglTdW4gTWFyIDMwIDExOjMyOjI0IDIwMDggKzAxMDAKLQotICAgIG14MzEgbGl0ZWtpdCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG14MzEgbGl0ZWtpdCBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IGQ2Njc0ZTBlMmE2YTFmMDMzOTQ1Zjc4ODM4NTY2MjEwZDNmMjhjOTUKLUF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotRGF0ZToJU3VuIE1hciAzMCAxMTozMjoyMSAyMDA4ICswMTAwCi0KLSAgICBhZGQgU01TQyBMQU45eDF4IE5ldHdvcmsgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYSBkcml2ZXIgZm9yIHRoZSBmb2xsb3dpbmcgc21zYyBuZXR3b3JrIGNvbnRyb2xsZXJzOgotICAgIExBTjkxMTUKLSAgICBMQU45MTE2Ci0gICAgTEFOOTExNwotICAgIExBTjkyMTUKLSAgICBMQU45MjE2Ci0gICAgTEFOOTIxNwotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IDhjODQ2M2NjZTQ0ZDg0OWUzNzc0NDc0OWIzMmQzOGUxZGZiMTJlNTAKLUF1dGhvcjogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotRGF0ZToJU3VuIE1hciAzMCAxMTozMjoxNiAyMDA4ICswMTAwCi0KLSAgICBhZGQgYW4gaTJjIGRyaXZlciBmb3IgbXgzMQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGFuIGkyYyBkcml2ZXIgZm9yIEZyZWVzY2FsZSBpLk1YIHByb2Nlc3NvcnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCBjOThiNDdhZDI0YjJkOTFmNDFjMDlhM2Q2MmQ3ZjcwYWQ4NGY0YjdkCi1BdXRob3I6IFNhc2NoYSBIYXVlciA8cy5oYXVlckBwZW5ndXRyb25peC5kZT4KLURhdGU6CVN1biBNYXIgMzAgMTE6MzA6NDMgMjAwOCArMDEwMAotCi0gICAgY29yZSBzdXBwb3J0IGZvciBGcmVlc2NhbGUgbXgzMQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBjb3JlIHN1cHBvcnQgZm9yIEZyZWVzY2FsZSBteDMxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgOGJmNjlkODE3ODI2MTkxODc5MzNhNjA1ZjFhOTVlZTFkMDY5NDc4ZAotQXV0aG9yOiBTYXNjaGEgSGF1ZXIgPHMuaGF1ZXJAcGVuZ3V0cm9uaXguZGU+Ci1EYXRlOglTdW4gTWFyIDMwIDExOjI4OjQ2IDIwMDggKzAxMDAKLQotICAgIFNlcGFyYXRlIG9tYXAyNHh4IHNwZWNpZmljIGNvZGUgZnJvbSBhcm0xMTM2Ci0KLSAgICBNb3ZlIG9tYXAyNHh4IGNvZGUgdG8gY3B1L2FybTExMzYvb21hcDI0eHgsIHJlbmFtZSBpbmNsdWRlL2FzbS1hcm0vYXJjaC1hcm0xMTM2IHRvIGNwdS9hcm0xMTM2L29tYXAyNHh4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FzY2hhIEhhdWVyIDxzLmhhdWVyQHBlbmd1dHJvbml4LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLQotY29tbWl0IDhjMTZjYjBkM2I5NzFmNDZmYmU3N2MwNzI2NjRjMGYyZGNkNDQ3MWQKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CVN1biBNYXIgMzAgMTE6MjM6MDUgMjAwOCArMDEwMAotCi0gICAgQWRkIHBtZHJhIGludG8gTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLQotY29tbWl0IGE1NzRhNzM4NTJhNTI3Nzc5MjM0ZTczZTE3ZTc1OTdmZDgxMjg4ODIKLUF1dGhvcjogUGlldGVyIFZvb3J0aHVpanNlbiA8W3BpZXRlci52b29ydGh1aWpzZW5AUHJvZHJpdmUubmxdPgotRGF0ZToJU3VuIE1hciAzMCAxMToyMTo1OCAyMDA4ICswMTAwCi0KLSAgICBBZGRzIHN1cHBvcnQgZm9yIHRoZSBQcm9kcml2ZSBQTURSQSBib2FyZCwgYmFzZWQgb24gYSBETTY0NDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBWb29ydGh1aWpzZW4gPHB2QHByb2RyaXZlLm5sPgotCi1jb21taXQgMTM3N2I1NTgzYTQ4MDIxZDk4M2UxZmQ1NjVmN2Q0MGM4OWU4NGQ2MwotQXV0aG9yOiBQaWV0ZXIgVm9vcnRodWlqc2VuIDxbcGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubF0+Ci1EYXRlOglTdW4gTWFyIDMwIDExOjExOjM0IDIwMDggKzAxMDAKLQotICAgIFJlbW92ZXMgYWxsIGJvYXJkIHNwZWNpZmljIGNvZGUgZnJvbSB0aGUgYXJjaC4gcGFydCBmb3IgRE02NDR4IChEYVZpbmNpKSBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpZXRlciBWb29ydGh1aWpzZW4gPHB2QHByb2RyaXZlLm5sPgotCi1jb21taXQgMTcwNGRjMjA5MTdiNGY3MWUzNzNlMmM4ODg0OTdlZTY2NmQ0MDM4MAotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KLURhdGU6CVN1biBNYXIgMzAgMTE6MDk6MDEgMjAwOCArMDEwMAotCi0gICAgLSBSZW1vdmUgKl9tYXNrZWQoKSBmdW5jdGlvbnMgYXMgbm90ZWQgYnkgV29sZmdhbmcKLSAgICAtIEFkYXB0IHJlZ2lzdGVyIG5hbWluZyB0byByZWNlbnQgVEkgc3BlYyAoc3BydWUyNiwgTWFyY2ggMjAwNykKLSAgICAtIEZpeCByZXNldF90aW1lcigpIGhhbmRsaW5nCi0gICAgLSBBcyByZXBvcnRlZCBieSBQaWV0ZXIgWzFdIHRoZSBvdmVyZmxvdyBmaXggaW50cm9kdWNlZCBhCi0gICAgZGVsYXkgb2YgZmFjdG9yIDE2IChlLmcgMiBzZWNvbmRzIGJlY2FtZSAzMikuIFdoaWxlIHRoZQotICAgIG92ZXJmbG93IGZpeCBpcyBiYXNpY2FsbHkgb2theSwgaXQgbWlzc2VkIHRvIGRpdmlkZSB1ZGVsYXkgYnkKLSAgICAxNiwgdG9vLiBGaXggdGhpcy4KLSAgICBbMV0gaHR0cDovL2FydGljbGUuZ21hbmUub3JnL2dtYW5lLmNvbXAuYm9vdC1sb2FkZXJzLnUtYm9vdC8zODE3OQotICAgIC0gUmVtb3ZlIHNvZnR3YXJlIGRpdmlzaW9uIG9mIHRpbWVyIGNvdW50IHZhbHVlIChESVYoeCkKLSAgICBtYWNybykgYW5kIGRvIGl0IGluIGhhcmR3YXJlIChUSU1fQ0xLX0RJVikuCi0gICAgTWFueSB0aGFua3MgdG8gVHJveSBLaXNreSA8dHJveS5raXNreUBib3VuZGFyeWRldmljZXMuY29tPgotICAgIGFuZCBQaWV0ZXIgVm9vcnRodWlqc2VuIDxwaWV0ZXIudm9vcnRodWlqc2VuQFByb2RyaXZlLm5sPiBmb3IKLSAgICB0aGUgaGludHMgJiB0ZXN0aW5nIQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGlyayBCZWhtZSA8ZGlyay5iZWhtZUBnbWFpbC5jb20+Ci0KLSAgICBBY2tlZC1ieTogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBQcm9kcml2ZS5ubD4KLQotY29tbWl0IGFjMzMxNWMyNmUxNDNjMzE2ODA3NTBjOWMxM2YwMjdlZmJjYzg4N2UKLUF1dGhvcjogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotRGF0ZToJVGh1IE1hciA2IDE2OjQ1OjQ0IDIwMDggKzAxMDAKLQotICAgIG5ldyBQSFkgQCBlMTAwMCAtIDJuZCB0cnkKLQotICAgIEFkZCA4MjU0MUVSIGRldmljZSB3aXRoIGxhdGVzdCBpbnRlZ3JhdGVkIElHUDIgUEhZLgotICAgIEludHJvZHVjZWQgQ09ORklHX0UxMDAwX0ZBTExCQUNLX01BQyBmb3IgTklDIGJyaW5nLXVwIHdpdGggZW1wdHkgZWVwcm9tLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmUgU2Nod2FyeiA8YW5kcmUuc2Nod2FyekBtYXRyaXgtdmlzaW9uLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjMmI3ZGE1NTIyOTNiNTBjOWM5ZTQ2ZWQ3MTI2N2IwMmMyZGU5ZWE4Ci1BdXRob3I6IERhbmllbCBIZWxsc3Ryb20gPGRhbmllbEBnYWlzbGVyLmNvbT4KLURhdGU6CUZyaSBNYXIgMjggMjA6MjI6NTMgMjAwOCArMDEwMAotCi0gICAgU1BBUkMvTEVPTjM6IEFkZGVkIEdSRVRIIEV0aGVybmV0IDEwLzEwMC8xMDAwIGRyaXZlci4KLQotICAgIEdSRVRIIGlzIGFuIEV0aGVybmV0IDEwLzEwMCBvciAxMC8xMDAvMTAwMCBNQUMgd2l0aCBvdXQgd2l0aG91dAotICAgIGEgZGVidWcgbGluayAoRURDTCkuIFRoZSBHUkVUSCBjb3JlIGlzIGRvY3VtZW50ZWQgaW4gR1JJUC5wZGYKLSAgICBhdmFpbGFibGUgYXQgd3d3LmdhaXNsZXIuY29tLgotCi0gICAgSWYgdGhlIEdSRVRIIGhhcyBHaWdhQml0IHN1cHBvcnQgKEdCSVQsIFNjYXR0ZXIgZ2F0aGVyLCBjaGVja3N1bQotICAgIG9mZmxvYWRpbmcgZXRjLikgY2FuIGJlIGRldGVybWluZWQgYnkgYSBiaXQgaW4gdGhlIGNvbnRyb2wgcmVnaXN0ZXIuCi0gICAgVGhlIEdCSVQgTUFDIGlzIHN1cHBvcnRlZCBieSBvcGVyYXRpbmcgaW4gR1JURUggMTAvMTAwIGxlZ2FjeSBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAyMzNhOGJjZDk0OTk3ZjNmMzQ1ODMzYTNiODJlODM2MjIyZjJhMjA2Ci1BdXRob3I6IFRzaS1DaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAxNyAxNzowODoyMiAyMDA4IC0wNTAwCi0KLSAgICBBZGQgQ09ORklHX01JSV9JTklUIGluIGNtZF9taWkuYwotCi0gICAgUHJvdmlkZSBjb21tb24gY29uZmlndXJhdGlvbiBpbiBkb19taWkoKSB0byBleGVjdXRlIG1paV9pbml0KCkKLSAgICBmb3IgYWxsIGNwdSBhcmNoaXRlY3R1cmVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBmNjA1NDc5ZGUyZGViMTFlODM0ZjMxZGZkYjBhZjEwN2M4NmFjZWQ2Ci1BdXRob3I6IFRzaS1DaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAxNyAxNzowODoxNiAyMDA4IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogRml4IEZFQyB0cmFuc21pdCBpc3N1ZSBmb3IgTUNGNTI3NQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgZDlhMmY0MTZkNmFjNjA1OGNkNzg0NTAzM2FlNGRjMzJlZjFjMDc0NgotQXV0aG9yOiBBcmFzIFZhaWNoYXMgPGFyYXN2QG1hZ3RlY2guY29tLmF1PgotRGF0ZToJV2VkIE1hciAyNiAwOTo0Mzo1NyAyMDA4ICsxMTAwCi0KLSAgICBESENQIHJlcXVlc3QgZml4IGZvciBXaW5kb3dzIFNlcnZlciAyMDAzCi0KLSAgICBBZGRlZCBvcHRpb24gQ09ORklHX0JPT1RQX0RIQ1BfUkVRVUVTVF9ERUxBWS4gVGhpcyBwcm92aWRlcyBhbiBvcHRpb25hbAotICAgIGRlbGF5IGJlZm9yZSBzZW5kaW5nICJESENQIFJlcXVlc3QiIGluIG5ldC9ib290cC5jLiBSZXF1aXJlZCB0byBvdmVyY29tZQotICAgIGludGVyb3BlcmFiaWxpdHkgcHJvYmxlbXMgd2l0aCBXaW5kb3dzIFNlcnZlciAyMDB4IERIQ1Agc2VydmVyIHdoZW4gVS1Cb290Ci0gICAgY2xpZW50IHJlc3BvbmRzIHRvbyBmYXN0IGZvciBzZXJ2ZXIgdG8gaGFuZGxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQXJhcyBWYWljaGFzIDxhcmFzdkBtYWd0ZWNoLmNvbS5hdT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotCi1jb21taXQgOTdiZjg1ZDc4NGZiZWQ0ODVlNjUyZWI5MDc1ODlhZDBkNWNiNzI2MgotQXV0aG9yOiBEYW5pZWwgSGVsbHN0cm9tIDxkYW5pZWxAZ2Fpc2xlci5jb20+Ci1EYXRlOglGcmkgTWFyIDI4IDIwOjQwOjE5IDIwMDggKzAxMDAKLQotICAgIE1URC9DRkk6IGZsYXNoX3JlYWQ2NCBpcyBkZWZpbmVkIGEgd2VhayBmdW5jdGlvbiAoZm9yIFNQQVJDKQotCi0gICAgU1BBUkMgaGFzIGltcGxlbWVudGVkIF9fcmF3X3JlYWRxLCBpdCByZWFkcyA2NC1iaXQgZnJvbSBhbnkgMzItYml0IGFkZHJlc3MuCi0gICAgU1BBUkMgQ1BVcyBpbXBsZW1lbnQgZmxhc2hfcmVhZDY0IHdoaWNoIGNhbGxzIF9fcmF3X3JlYWRxLgotCi0gICAgRm9yIGN1cnJlbnQgU1BBUkMgYXJjaGl0ZWN0dXJlcyAoTEVPTjIgYW5kIExFT04zKSBlYWNoIHJlYWQgZnJvbSB0aGUKLSAgICBGTEFTSCBtdXN0IGxlYWQgdG8gYSBjYWNoZSBtaXNzLiBUaGlzIGlzIGJlY2F1c2UgRkxBU0ggY2FuIG5vdCBiZSBzZXQKLSAgICBub24tY2FjaGVhYmxlIHNpbmNlIHByb2dyYW0gY29kZSByZXNpZGVzIHRoZXJlLCBhbmQgYWx0ZXJuYXRpdmVseSBkaXNhYmxpbmcKLSAgICBjYWNoZSBpcyBwb29yIGZyb20gcGVyZm9ybWFuY2Ugdmlldywgb3IgZG9pbmcgYSBjYWNoZSBmbHVzaCBiZXR3ZWVuIGVhY2gKLSAgICByZWFkIGlzIGV2ZW4gcG9vcmVyLgotCi0gICAgRm9yY2luZyBhIGNhY2hlIG1pc3Mgb24gYSBTUEFSQyBpcyBkb25lIGJ5IGEgc3BlY2lhbCBpbnN0cnVjdGlvbiAibGRhIiAtCi0gICAgbG9hZCBhbHRlcm5hdGl2ZSBzcGFjZSwgdGhlIGFsdGVybmF0aXZlIHNwYWNlIG51bWJlciAoQVNJKSBpcyBwcm9jZXNzb3IKLSAgICBpbXBsZW1lbnRhdGlvbiBzcGNpZmljIGFuZCBjYW4gYmUgZm91bmQgYnkgaW5jbHVkaW5nIDxhc20vcHJvY2Vzc29yLmg+LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGFuaWVsIEhlbGxzdHJvbSA8ZGFuaWVsQGdhaXNsZXIuY29tPgotCi1jb21taXQgNzA0MzFlOGE3MzkzYjZiNzkzZjc3OTU3Zjk1Yjk5OWZjOWEyNjliOAotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CUZyaSBNYXIgMjggMTU6NDE6MjUgMjAwOCArMDEwMAotCi0gICAgTWFrZSBNUEM4M3h4IG9uZSBzdGVwIGNsb3NlciB0byBmdWxsIHJlbG9jYXRpb24uCi0KLSAgICBSZW1vdmUgYSBmZXcgYWJzb2x1dGUgcmVmZXJlbmNlcyB0byBDRkdfTU9OSVRPUl9CQVNFIGZvciBwcGMvbXBjODN4eAotICAgIGFuZCB1c2UgR09UIHJlbGF0aXZlIHJlZmVyZW5jZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1YjI3OTNhM2YzZGUzNGQ0MzkyMzJiMDVhY2M4YWY2N2EwMjhmZDM1Ci1BdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1hciAyNyAxNDozNDo0MyAyMDA4IC0wNDAwCi0KLSAgICBtcGM4MzIzZXJkYjogZml4IEVFUFJPTSBwYWdlIHNpemUgYW5kIGdldCBNQUMgZnJvbSBFRVBST00KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgZWVwcm9tIHBhZ2Ugc2l6ZSBzbyB0aGF0IHlvdSBjYW4gbm93IHdyaXRlIG1vcmUgdGhhbgotICAgIDY0IGJ5dGVzIGF0IGEgdGltZS4KLQotICAgIEl0IGFsc28gbWFrZXMgdGhlIGJvYXJkIHRha2UgTUFDIGFkZHJlc3NlcywgaWYgZm91bmQsIGZyb20gRUVQUk9NLgotCi0gICAgVXNlciBzaG91bGQgcGxhY2UgdXAgdG8gNCBhZGRyZXNzZXMgYXQgb2Zmc2V0IDB4N2YwMCwgZm9yCi0gICAgZXRoeywxLDIsM31hZGRyLiAgQW55IHVudXNlZCBhZGRyZXNzZXMgc2hvdWxkIGJlIHplcm8uICBUaGlzIGdyb3VwIG9mCi0gICAgZm91ciBzaXgtYnl0ZSB2YWx1ZXMgc2hvdWxkIGhhdmUgaXQncyBDUkMgYXQgdGhlIGVuZC4gIGNyYzMyIGFuZAotICAgIGVlcHJvbSBjb21tYW5kcyBjYW4gYmUgdXNlZCB0byBhY2NvbXBsaXNoIHRoaXMuCi0KLSAgICBJZiBDUkMgZmFpbHMsIE1BQyBhZGRyZXNzZXMgY29tZSBmcm9tIHRoZSBlbnZpcm9ubWVudC4gIElmIENSQwotICAgIHN1Y2NlZWRzLCB0aGUgZW52aXJvbm1lbnQgaXMgb3ZlcndyaXR0ZW4gYXQgc3RhcnR1cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4ZjMyNWNmZjMxZjZlNzQ1ZTY1NDAwMTRiMTMxYjlhOTdmNjE5NDRjCi1BdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE1hciAyOCAxNToxNTozOCAyMDA4IC0wNDAwCi0KLSAgICBtcGM4MzIzZXJkYjogZGVmaW5lIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRQotCi0gICAgQ29tbWl0IDU1Nzc0YjUxMmZkZjYzYzA1MTZkNDQxY2M1ZGE3YzU0YmJmZmI3ZjIgYnJva2UgdGhlIG9uYm9hcmQgVVNCCi0gICAgY29udHJvbGxlciBvbiB0aGUgUENJIGJ1cyBpbiBMaW51eCBvbiB0aGUgTVBDODMyM0VSREIuCi0KLSAgICBUaGlzIGZpeGVzIGl0IGJ5IGRlZmluaW5nIENPTkZJR19QQ0lfU0tJUF9IT1NUX0JSSURHRSBpbiB0aGUgYm9hcmQncwotICAgIGNvbmZpZyBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBCYXJrb3dza2kgPG1pY2hhZWwuYmFya293c2tpQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU1YzRhZGU0ZGIxZTE2ZDNlNWQ0YTc4ODdmMzRlMTBlNTE2ZWQzYTkKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgMjggMTA6MTk6MDcgMjAwOCAtMDUwMAotCi0gICAgbXBjODN4eDogY2xlYW51cCBTeXN0ZW0gUGFydCBhbmQgUmV2aXNpb24gSUQgUmVnaXN0ZXIgKFNQUklEUikgY29kZQotCi0gICAgaW4gdGhlIHNwaXJpdCBvZiBjb21taXQgMWNlZDEyMTYwMGIyMDYwYWIyZmY5ZjBmZGRkOTQyMWZkNzBhMGRjNiwKLSAgICA4NXh4J3MgIlVwZGF0ZSBTVlIgbnVtYmVycyB0byBleHBhbmQgc3VwcG9ydCIsIHNpbXBsaWZ5IFNQUklEUiBwcm9jZXNzaW5nCi0gICAgYW5kIHByb2Nlc3NvciBJRCBkaXNwbGF5LiAgQWRkIFJFVklEX3tNQUosTUlOfU9SIG1hY3JvcyB0byBtYWtlCi0gICAgUkVWSUQgZGVwZW5kZW50IGNvZGUgc2ltcGxlci4gIEFsc28gYWRkZWQgUEFSVElEX05PX0UgYW5kIElTX0VfUFJPQ0VTU09SCi0gICAgY29udmVuaWVuY2UgbWFjcm9zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDgxZmQ1MmM2YzhmZDE5ZjBiNzg1NmI5ODIxN2NlMzdjNDZjNTIxYWYKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgMjggMTA6MTg6NTMgMjAwOCAtMDUwMAotCi0gICAgbXBjODN4eDogZGlzcGxheSBkZHIgZnJlcXVlbmN5IGluIGJvYXJkX2FkZF9yYW1faW5mbyBiYW5uZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzNWNmMTU1YzVlYzFjZWFiMjg0OWZhNWI2YWEzZDlhM2U5ZTZmNDgyCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWFyIDI4IDEwOjE4OjQwIDIwMDggLTA1MDAKLQotICAgIG1wYzgzeHg6IHVucmVpbnZlbnQgbWVtX2NsawotCi0gICAgZGVsZXRlIGRkcl9jbGsgYW5kIHVzZSBtZW1fY2xrIGluc3RlYWQuICBSZW5hbWUgb3RoZXIgZGRyXypfY2xrIHRvCi0gICAgbWVtXypfY2xrIGZvciBjb25zaXN0ZW5jeSdzIHNha2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzMwZTc5MjkyNmNhM2ZlNGRkMWI3MzRhM2JmNDRlNTVhZmE2ZjUzNgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE1hciAyOCAxNDozMToyMyAyMDA4IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBlbmFibGUgdGhlIFNBVEEgaW50ZXJmYWNlIG9uIG1wYzgzMTUgcmRiIGFuZCBtcGM4Mzd4IHJkYiBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyZWViM2U0ZmM1NGVmMmY1ZDU3NGRhZmQ0MmM2Y2U5M2FmYTMwMzkzCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTc6MTkgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogZW5hYmxlIHRoZSBTQVRBIGludGVyZmFjZSBvbiBtcGM4Mzd4ZW1kcyBib2FyZAotCi0gICAgRW5hYmxlIHRoZSBmaXJzdCB0d28gU0FUQSBpbnRlcmZhY2VzIG9uIE1QQzgzN3hFTURTIGJvYXJkLAotICAgIFRoZSB0d28gU0FUQSBwb3J0cyBhcmUgb24gTFlOWDEuIChTQVRBMC8xIG9uIEo0LzUpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2ZjhjODVlOGQxODY1NzMwYzE1OGQ5ZWY1YTA2YzcwYzNhMTA2MDBhCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTY6MzYgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogaW5pdGlhbGl6ZSBzZXJkZXMgZm9yIE1QQzgzN3hFTURTIGJvYXJkcwotCi0gICAgVGhpcyBwYXRjaCBpcyBzdG9sZW4gZnJvbSBBbnRvbiBWb3JvbnRzb3YncyBwYXRjaAotICAgIGZvciBtcGM4Mzd4ZXJkYiBib2FyZHMuCi0KLSAgICBUaGUgcmVmZXJlbmNlIGNsayBhbmQgeGNvcmV2ZGQgdm9sdGFnZSBvZiBzZXJkZXMxLzIKLSAgICBpcyBzYW1lIGJldHdlZW4gbXBjODM3eGVtZHMgYW5kIG1wYzgzN3hlcmRiLgotCi0gICAgODM3N0U6IExZTlgxLSAyIFNBVEEJTFlOWDItIDIgUENJRQotICAgIDgzNzhFOiBMWU5YMS0gMiBTR01JSQlMWU5YMi0gMiBQQ0lFCi0gICAgODM3OUU6IExZTlgxLSAyIFNBVEEJTFlOWDItIDIgU0FUQQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2M4ZTgzOWFiYzgwODg3YWU4MzI3NjdiNTkzMGQ0MGVkZDZkN2ViNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgTWFyIDI4IDE0OjA5OjA0IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQ2FueW9ubGFuZHM6IFByaW50IFNBVEEvUENJZSBjb25maWd1cmF0aW9uIGFuZCBib2FyZCByZXZpc2lvbgotCi0gICAgQ2FueW9ubGFuZHMgKDQ2MEVYKSBzaGFyZXMgdGhlIGZpcnN0IFBDSWUgaW50ZXJmYWNlIHdpdGggdGhlIFNvQyBTQVRBCi0gICAgaW50ZXJmYWNlLiBUaGlzIHVzYWdlIGNhbiBiZSBjb25maWd1cmVkIHdpdGggdGhlIGp1bXBlciBKNi4gVGhpcyBwYXRjaAotICAgIGRpc3BsYXlzIHRoZSBjdXJyZW50IGNvbmZpZ3VyYXRpb24gdXBvbiBib290dXAgYW5kIGNoYW5nZXMgdGhlIFBDSWUKLSAgICBpbml0IGxvb3AsIHRvIG9ubHkgaW5pdGlhbGl6ZSB0aGUgYXZhaWxhYmVsIFBDSWUgc2xvdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5MDQ0N2VjYmJhYzg1NzI0NTdiNmQ4OTAzMDczYWMzZjEyMDk5NWJhCi1BdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Ci1EYXRlOglGcmkgTWFyIDI4IDExOjI5OjEwIDIwMDggKzAxMDAKLQotICAgIE1URC9DRkk6IEFkZCBzdXBwb3J0IGZvciAxNmJpdCBsZWdhY3kgQU1EIGZsYXNoCi0KLSAgICBBZGQgZW50cnkgZm9yIDUxMkt4MTYgQU1EIGZsYXNoIHRvIGplZGVjX3RhYmxlLgotICAgIFJlYWQgb3V0IDE2Yml0IGRldmljZSBpZCBpZiBjaGlwd2lkdGggaXMgMTZiaXQuCi0gICAgRml4ZWQgY29kaW5nIHN0eWxlIGFmdGVyIFN0ZWZhbnMgZmVlZGJhY2sKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Ci0KLWNvbW1pdCA1ZTEyZTc1ZDE3YzRiMTVhMzEwYTQ1Y2Q3OGZlNzFiNzY5OGE4YThlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBNYXIgMjggMTE6MDI6NTMgMjAwOCArMDEwMAotCi0gICAgcHBjOiBTbWFsbCBjaGFuZ2UgdG8gQ0ZHX01FTV9UT1BfSElERSBkZXNjcmlwdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjgwZGY1OWE4ZDYyYzZlNzRjMjgxYjFjYjdlMjA1MmRmNGQ2Y2IwMAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglUaHUgTWFyIDI3IDE1OjQ0OjEyIDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBzdGF0IHN0cnVjdHVyZSBhbmQgc3RhdC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA0YmU5ZWI3ODllNzJiODQ1ZDY2OTNjYzM2YjcwYTBiMzUyOWIzZjA5Ci1BdXRob3I6IE1hcmsgSm9uYXMgPHRvZXJ0ZWxAZ21haWwuY29tPgotRGF0ZToJU2F0IE1hciAyMiAxOToyNzo1MiAyMDA4ICswMTAwCi0KLSAgICBzaDogUmVtb3ZlZCB3YXJuaW5nIHdoZW4gY29tcGlsaW5nIGRyaXZlcnMvc2VyaWFsL3NlcmlhbF9zaC5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyayBKb25hcyA8bWFyay5qb25hc0BkZS5ib3NjaC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgZjMwOWZhMzg5MjlmZmJhNzEyMzBjMDIzMzBmZmE0MmY0YmJhNjMzMwotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglXZWQgTWFyIDEyIDE4OjAyOjU3IDIwMDggKzA5MDAKLQotICAgIHNoOiBSZW1vdmUgZGlzYWJsZV9jdHJsYyBmdW5jdGlvbiBmcm9tIFI3NzgwTVAKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDZmNGIyNjZmZjJhNGZjYzJiZmY5ODVkNmEyMTc4NTI0NjlhZmRkYjMKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJV2VkIE1hciAxMiAxNzo1NToxNSAyMDA4ICswOTAwCi0KLSAgICBzaDogQWRkIG1haW50YWluZXIgb2YgUjc3ODBNUCB0byBNQUlOVEFJTkVSIGZpbGUKLQotICAgIFVwZGF0ZSBNQUlOVEFJTkVSIGVudHJ5IGZvciBSNzc4ME1QLiBBbmQgZml4IG1haW50YWluZXIncyBuYW1lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgZjVlMjQ2NmY3YmFhODg3YTdkZjBjNTM2MzMzZWVhODIzMTMzMzQ5NwotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglUdWUgTWFyIDI1IDE3OjExOjI0IDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBSZW5lc2FzIFNvbHV0aW9ucyBSMkQgcGx1cyBib2FyZAotCi0gICAgUjJEIHBsdXMgaXMgU0ggcmVmZXJlbmNlIGJvYXJkIHVzZWQgd2l0aCBTSDc3NTFSLgotICAgIFRoaXMgYm9hcmQgaGFzIDI2Nk1oeiBDUFUsIDY0TUIgU0RSQU0sIENhcmRidXMsIENGIGludGVyZmFjZSwKLSAgICBvbmUgUENJIGJ1cywgVkdBLCBhbmQgdHdvIEV0aGVybmV0IGNvbnRyb2xsZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBlOTJjOTUxODBiYjViYzVmZDQwNTE1OThhOWQ2MGJlYWJhNDg5ODhkCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVdlZCBNYXIgMTIgMTI6MTU6MjkgMjAwOCArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IFNINCBjYWNoZSBjb250cm9sCi0KLSAgICBBZGQgc3VwcG9ydCBTSDQgY2FjaGUgY29udHJvbCBhbmQgZmxhc2hfY2FjaGUgZnVuY3Rpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDI4ZTVlZmRlNGQ5MjVmY2IzNDkwMWQwMDMwZDA2NDhkZTJkYTdlODkKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJTW9uIE1hciAyNCAwMTo1MzowMSAyMDA4ICswOTAwCi0KLSAgICBzaDogQWRkIHN1cHBvcnQgUENJIGhvc3QgZHJpdmVyIGZvciBTSDc3NTEvU0g3NzUxUgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYWI4ZjRkNDBkMDY5Y2QzY2JlNzU2M2RkZmUzZTVmMDNiMGM3YzcyMQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglNb24gTWFyIDI0IDAyOjExOjI2IDIwMDggKzA5MDAKLQotICAgIHNoOiBNb3ZlIFN1cGVySCBQQ0kgZHJpdmVyIGZyb20gY3B1L3NoNCB0byBkcml2ZXJzL3BjaQotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNTY2OTMzMjc4MTAxYzE0NGQ3NTM2MWVhNjgyNjc4YTMyNmMxMjkwZAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglXZWQgTWFyIDEyIDEyOjEwOjI4IDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBTdXBlckggU0g3NzUxL1NINzc1MVIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDMzMTNlMGUyNjIyNGZjOWEwYzQ0NTEyNGYzNDU1MDU4YzY5NmRmODQKLUF1dGhvcjogTWFyayBKb25hcyA8dG9lcnRlbEBnbWFpbC5jb20+Ci1EYXRlOglNb24gTWFyIDEwIDExOjM3OjEwIDIwMDggKzAxMDAKLQotICAgIHNoOiBBZGRlZCBzdXBwb3J0IGZvciBTSDc3MjAgYmFzZWQgYm9hcmQgTVBSMi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmsgSm9uYXMgPG1hcmsuam9uYXNAZGUuYm9zY2guY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDNlY2ZmMWQ3MGFlOTNlNjI4ZmU2NWIzZmUxZmM3YzljNzZjZGY5OWYKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJVGh1IE1hciA2IDE0OjA1OjUzIDIwMDggKzA5MDAKLQotICAgIHNoOiBGaXggcmVjZWl2ZSBGSUZPIGxldmVsIHJlZ2lzdGVyIG9mIFNINEEKLQotICAgIFJlY2VpdmUgRklGTyBsZXZlbCByZWdpc3RlciBpcyBkaWZmZXJlbnQgaW4gU0g0QS4KLSAgICBCZWNhdXNlIHJlZ2lzdGVyIGlzIGRpZmZlcmVudCwgY2Fubm90IG9jY2FzaW9uYWxseSByZWNlaXZlIGRhdGEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBjMTMzYzFmYjBiNTkwNjYyMjA2YjBlYmE3MGY0NDc4ZWUwMzAwYTlhCi1BdXRob3I6IFl1c3VrZSBHb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KLURhdGU6CVR1ZSBNYXIgMTEgMTI6NTU6MTIgMjAwOCArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IFJlbmVzYXMgU29sdXRpb25zIFI3NzgwTVAKLQotICAgIFJlbmVzYXMgU29sdXRpb25zIFI3NzgwTVAgaXMgYSByZWZlcmVuY2UgYm9hcmQgb24gU0g3NzgwLgotICAgIFRoaXMgYm9hcmQgaGFzIHNlcmlhbCwgMTAvMTAwIGJhc2UgRXRoZXJuZXQgZGVpdmljZSwgQ0Ygc2xvdAotICAgIGFuZCBWR0EgZGV2aWNlcy4gVGhpcyBib2FyZCBjYW4gc2V0IGV4dGVuc2lvbiBib2FyZC4KLSAgICBFeHRlbnNpb24gYm9hcmQgaGFzIDEwLzEwMC8xMDAwIGJhc2UgRXRoZXJuZXQgZGV2aWNlLCBQQ0kgc2xvdCwKLSAgICBTLUFUQSwgaURWUiBzbG90LgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDFhMjMzNGE0ZWI2Mzg2ZDdjZDM1ZDlkZTVmYTM5YWYyYzc2NGFkMjgKLUF1dGhvcjogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotRGF0ZToJV2VkIE1hciA1IDE0OjMwOjAyIDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBQQ0kgb2YgU3VwZXJIIGFuZCBTSDc3ODAKLQotICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgUENJIG9mIFN1cGVySCBiYXNlIGNvZGUgYW5kIFNINzc4MCBzcGVjaWZpYyBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGI1NTUyM2VmZmYyYWUxMWYwYjlhZTNjYzQwNTg5M2MzMmViNzgxNTYKLUF1dGhvcjogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotRGF0ZToJV2VkIE1hciA1IDE0OjIzOjI2IDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBTSDc3ODAKLQotICAgIFNINzc4MCBpcyBDUFUgb2YgUmVuZXNhcyBUZWNobm9sb2d5LgotICAgIFRoaXMgQ1BVIGhhcwotICAgICAtIENQVSBjbG9jayA0MDBNSHoKLSAgICAgLSBQQ0kgc3VwcG9ydAotICAgICAtIEREUi1TRFJBTSBjb250cm9sbGVyCi0gICAgIC0gZXRjIC4uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVzdWtlIEdvZGEgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGMyMDQyZjU5NTJhNjg2YzQxNDAzMTMwOWI4ZjI0NDUxM2JmNTc4ZjAKLUF1dGhvcjogZ29kYS55dXN1a2UgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotRGF0ZToJRnJpIEphbiAyNSAyMDo0NjozNiAyMDA4ICswOTAwCi0KLSAgICBzaDogQWRkIHN1cHBvcnQgUmVuZXNhcyBTb2x1dGlvbnMgTWlnby1SIGJvYXJkCi0KLSAgICBNaWdvLVIgaXMgYSBib2FyZCBiYXNlZCBvbiBTSDc3MjIgYW5kIGhhcyBtYXkgZGV2aWNlcy4KLSAgICBJbiB0aGlzIHBhdGNoLCBzdXBwb3J0ZWQgU0NJRiwgTk9SIGZsYXNoIGFuZCBFdGhlcm5ldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1c3VrZSBHb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA3NGQxZTY2ZDIyZGFjOTEzODhiYzUzOGIyZmUxOWY3MzVlZGM1YjgyCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgTWFyIDI3IDE1OjA2OjQwIDIwMDggKzAxMDAKLQotICAgIEZpeCBob3N0IHRvb2wgYnVpbGQgYnJlYWthZ2UsIHRha2UgdHdvCi0KLSAgICBSZXZlcnQgY29tbWl0IDg3Yzg0MzFmIGFuZCBmaXggYnVpbGQgYnJlYWthZ2Ugc28gdGhhdCB0aGUgYnVpbGQgY29udGludWVzCi0gICAgdG8gd29yayBvbiBGQyBzeXN0ZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDdlNGEwZDI1ZWQxOGY2NDM3YmRmNTllYmZhNDliYjBlZGMyZjI0ZTYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAxOSAwOTozNjo0NyAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEVuYWJsZSBFQ0Mgb24gTFdNT041Ci0KLSAgICBTaW5jZSBhbGwgRUNDIHJlbGF0ZWQgcHJvYmxlbXMgc2VlbSB0byBiZSByZXNvbHZlZCBvbiBMV01PTjUsIHRoaXMgcGF0Y2gKLSAgICBub3cgZW5hYmxlcyBFQ0Mgc3VwcG9ydC4KLQotICAgIFdlIGhhdmUgdG8gd3JpdGUgdGhlIEVDQyBieXRlcyBieSB6ZXJvaW5nIGFuZCBmbHVzaGluZyBpbiBzbWFsbGVyCi0gICAgc3RlcHMsIHNpbmNlIHRoZSB3aG9sZSAyNTZNQnl0ZSB0YWtlcyB0b28gbG9uZyBmb3IgdGhlIGV4dGVybmFsCi0gICAgd2F0Y2hkb2cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2NDMzZmEyMDJhOTFhNjU5NGRkNDhmMDY4MDdhYzM4YmEyN2ZhMGJiCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotRGF0ZToJTW9uIE1hciAxNyAxMToxMDozNSAyMDA4IC0wNTAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZXMgdG8gS29yYXQtc3BlY2lmaWMgY29kZQotCi0gICAgVGhpcyBwYXRjaCBjb250YWlucyB1cGRhdGVzIGZvciBjaGFuZ2VzIGZvciB0aGUgS29yYXQgUFBDNDQwRVB4IGJvYXJkLgotICAgIFRoZXNlIGNoYW5nZXMgaW5jbHVkZToKLQotICAgICgxKSBTdXBwb3J0IGZvciAicGVybWFuZW50IiBhbmQgInVwZ3JhZGFibGUiIGNvcGllcyBvZiBVLUJvb3QsIGFzCi0gICAgZGVzY3JpYmVkIGluIHRoZSBuZXcgImRvYy9SRUFETUUua29yYXQiIGZpbGU7Ci0KLSAgICAoMikgYSBuZXcgbWVtb3J5IG1hcCBmb3IgdGhlIHJlZ2lzdGVycyBpbiB0aGUgYm9hcmQncyBDUExEOwotCi0gICAgKDMpIGEgcmV2aXNlZCBmb3JtYXQgZm9yIG1hbnVmYWN0dXJlcidzIGRhdGEgaW4gc2VyaWFsIEVFUFJPTTsgYW5kCi0KLSAgICAoNCkgY2hhbmdlcyB0byB0cmFjayB1cGRhdGVzIHRvIFUtQm9vdCBmb3IgdGhlIFNlcXVvaWEgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IGY3NjZjZGY4OWIzYTJhNzYzNGI4YzU4NjlmNjA2MTUwZTMzMjAzNmMKLUF1dGhvcjogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdtYWlsLmNvbT4KLURhdGU6CVRodSBNYXIgMjcgMTA6NDY6MjUgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBQUEM0MDVFUCBTZXQgRU1BQyBub2lzZSBmaWx0ZXIgYml0cwotCi0gICAgVGhpcyBidWcgd2FzIGludHJvZHVjZWQgd2l0aCBjb21taXQgYWVlNzQ3ZjE5YjQ2MGEwZTlkYTIwZmYyMWU5MGZkYWFjMWNlYzM1OQotICAgIHdoaWNoIGVuYWJsZWQgQ0ZHXzR4eF9HUElPX1RBQkxFIGZvciBQUEM0MDUgYW5kIHVuaW50ZW50aW9uYWxseQotICAgIGRpc2FibGVkIHRoZSBzZXR0aW5nIG9mIHRoZSBlbWFjIG5vaXNlIGZpbHRlciBiaXRzIGZvciBQUEM0MDVFUCB3aGVuIENGR180eHhfR1BJT19UQUJMRSBpcyBzZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgQnJ1bm5lciA8c3VwZXIuZmlyZXR3aXN0ZXJAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGY2NmUyYzhiMjVjMDRiNzllNWZiMzg1YmM4OTg5YzJkZTdmNjM5OTEKLUF1dGhvcjogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+Ci1EYXRlOglXZWQgRmViIDIwIDExOjU0OjIwIDIwMDggLTA1MDAKLQotICAgIHBwYzR4eDogUmVjb25maWd1cmUgUExMIGZvciA2NjdNSHogcHJvY2Vzc29yIGZvciBQUEM0NDBFUHgKLQotICAgIE9uIFBQQzQ0MEVQeCB3aXRob3V0IGEgYm9vdHN0cmFwIEkyQyBFRVBST00sIHRoZSBQTEwgY2FuIGJlIHJlY29uZmlndXJlZAotICAgIGFmdGVyIHN0YXJ0dXAgdG8gY2hhbmdlIHRoZSBzcGVlZCBvZiB0aGUgY2xvY2tzLiBUaGlzIHBhdGNoIGFkZHMgdGhlCi0gICAgb3B0aW9uIENGR19QTExfUkVDT05GSUcuIElmIHRoaXMgb3B0aW9uIGlzIHNldCB0byA2NjcsIHRoZSBDUFUKLSAgICBpbml0aWFsaXphdGlvbiBjb2RlIHdpbGwgcmVjb25maWd1cmUgdGhlIFBMTCB0byBydW4gdGhlIHN5c3RlbSB3aXRoIGEgQ1BVCi0gICAgZnJlcXVlbmN5IG9mIDY2N01IeiBhbmQgUExCIGZyZXF1ZW5jeSBvZiAxNjZNSHosIHdpdGhvdXQgdGhlIG5lZWQgZm9yIGFuCi0gICAgZXh0ZXJuYWwgRUVQUk9NLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg3Yzg0MzFmZTI0ZDQ4MTIxZjA1M2ZlNjdjZmY0Y2NmZTA5N2Q0ZDEKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoYWF2YXJkLnNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJVGh1IE1hciAyNyAwOToxMjo0MCAyMDA4ICswMTAwCi0KLSAgICBuZXctaW1hZ2U6IEZpeCBob3N0IHRvb2wgYnVpbGQgYnJlYWthZ2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aGFhdmFyZC5za2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDZmYjRiNjQwNTYyYTEwZGFmZjBkYmU1Mzc2MzhkNTExYjViNDg2NTAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciAyNyAxMDoyNDowMyAyMDA4ICswMTAwCi0KLSAgICBwcGM6IFNldCBDRkdfTUVNX1RPUF9ISURFIHRvIDAgaWYgbm90IGFscmVhZHkgZGVmaW5lZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTQ2MjczMmEzZWM1NTFjMTE4NjI0NTA5MDJjZDhlZTFiZWRlYTZkOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDE5IDEwOjIzOjQzIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIGZkdCBzdXBwb3J0IHRvIFByb2RyaXZlIGFscHIKLQotICAgIFNpbmNlIHRoaXMgYm9hcmQgd2lsbCBwcm9iYWJseSBiZSBwb3J0ZWQgdG8gYXJjaC9wb3dlcnBjIGluIHRoZQotICAgIG5lYXIgZnV0dXJlLCB3ZSBhZGQgZGV2aWNlIHRyZWUgc3VwcG9ydCBub3cuIFRoaXMgd2F5IHdlIGFyZQotICAgICJyZWFkeSIgZm9yIGFyY2gvcG93ZXJwYyBmcm9tIG5vdyBvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDUxMWU0ZjllN2Y3YjY3MTllNGQ5MWQ3ZjBmYzg5NDEyYjEzYjUxNTAKLUF1dGhvcjogUGlldGVyIFZvb3J0aHVpanNlbiA8cGlldGVyLnZvb3J0aHVpanNlbkBwcm9kcml2ZS5ubD4KLURhdGU6CU1vbiBNYXIgMTcgMDk6Mjc6NTYgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBFbmFibGUgY2FjaGUgc3VwcG9ydCBvbiB0aGUgQUxQUiBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogUGlldGVyIFZvb3J0aHVpanNlbiA8cHZAcHJvZHJpdmUubmw+Ci0KLWNvbW1pdCAxNGY3M2NhNjc5ZjZmZGI0NGNmZjBiNzMwNGQ0MTlkYjQxYTBhYjY5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMjYgMTA6MTQ6MTEgMjAwOCArMDEwMAotCi0gICAgcHBjOiBBZGQgQ0ZHX01FTV9UT1BfSElERSBvcHRpb24gdG8gaGlkZSBtZW1vcnkgYXJlYSB0aGF0IGRvZXNuJ3QgZ2V0ICJ0b3VjaGVkIgotCi0gICAgSWYgQ0ZHX01FTV9UT1BfSElERSBpcyBkZWZpbmVkIGluIHRoZSBib2FyZCBjb25maWcgaGVhZGVyLCB0aGlzIHNwZWNpZmllZAotICAgIG1lbW9yeSBhcmVhIHdpbGwgZ2V0IHN1YnRyYWN0ZWQgZnJvbSB0aGUgdG9wIChlbmQpIG9mIHJhbSBhbmQgd29uJ3QgZ2V0Ci0gICAgInRvdWNoZWQiIGF0IGFsbCBieSBVLUJvb3QuIEJ5IGZpeGluZyB1cCBnZC0+cmFtX3NpemUgdGhlIExpbnV4IGtlcm5lbAotICAgIHNob3VsZCBnZXRzIHBhc3NlZCB0aGUgbm93ICJjb3JyZWN0ZWQiIG1lbW9yeSBzaXplIGFuZCB3b24ndCB0b3VjaCBpdAotICAgIGVpdGhlci4gVGhpcyBzaG91bGQgd29yayBmb3IgYXJjaC9wcGMgYW5kIGFyY2gvcG93ZXJwYy4gT25seSBMaW51eCBib2FyZAotICAgIHBvcnRzIGluIGFyY2gvcG93ZXJwYyB3aXRoIGJvb3R3cmFwcGVyIHN1cHBvcnQsIHdoaWNoIHJlY2FsY3VsYXRlIHRoZQotICAgIG1lbW9yeSBzaXplIGZyb20gdGhlIFNEUkFNIGNvbnRyb2xsZXIgc2V0dXAsIHdpbGwgaGF2ZSB0byBnZXQgZml4ZWQKLSAgICBpbiBMaW51eCBhZGRpdGlvbmFsbHkuCi0KLSAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhpcyBjb25maWcgb3B0aW9uIG9uIHNvbWUgUFBDNDQwRVB4IGJvYXJkcyBhcyBhIHdvcmthcm91bmQKLSAgICBmb3IgdGhlIENISVAgMTEgZXJyYXRhLiBIZXJlIHRoZSBkZXNjcmlwdGlvbiBmcm9tIHRoZSBBTUNDIGRvY3VtZW50YXRpb246Ci0KLSAgICBDSElQXzExOiBFbmQgb2YgbWVtb3J5IHJhbmdlIGFyZWEgcmVzdHJpY3RlZCBhY2Nlc3MuCi0gICAgQ2F0ZWdvcnk6IDMKLQotICAgIE92ZXJ2aWV3OgotICAgIFRoZSA0NDBFUHggRERSIGNvbnRyb2xsZXIgZG9lcyBub3QgYWNrbm93bGVkZ2UgYW55Ci0gICAgdHJhbnNhY3Rpb24gd2hpY2ggaXMgZGV0ZXJtaW5lZCB0byBiZSBjcm9zc2luZyBvdmVyIHRoZQotICAgIGVuZC1vZi1tZW1vcnktcmFuZ2UgYm91bmRhcnksIGV2ZW4gaWYgdGhlIHN0YXJ0aW5nIGFkZHJlc3MgaXMKLSAgICB3aXRoaW4gdmFsaWQgbWVtb3J5IHNwYWNlLiBBbnkgc3VjaCB0cmFuc2FjdGlvbiBmcm9tIGFueSBQTEI0Ci0gICAgbWFzdGVyIHdpbGwgcmVzdWx0IGluIGEgUExCIHRpbWUtb3V0IG9uIFBMQjQgYnVzLgotCi0gICAgSW1wYWN0OgotICAgIEluIGNhc2Ugb2Ygc3VjaCBtaXNhbGlnbmVkIGJ1cnN0cywgUExCNCBtYXN0ZXJzIHdpbGwgbm90Ci0gICAgcmV0cmlldmUgYW55IGRhdGEgYXQgYWxsLCBqdXN0IHRoZSBhdmFpbGFibGUgZGF0YSB1cCB0byB0aGUKLSAgICBlbmQgb2YgbWVtb3J5LCBlc3BlY2lhbGx5IHRoZSA0NDAgQ1BVLiBGb3IgZXhhbXBsZSwgaWYgYSBDUFUKLSAgICBpbnN0cnVjdGlvbiByZXF1aXJlZCBhbiBvcGVyYW5kIGxvY2F0ZWQgaW4gbWVtb3J5IHdpdGhpbiB0aGUKLSAgICBsYXN0IDcgd29yZHMgb2YgbWVtb3J5LCB0aGUgRENVIG1hc3RlciB3b3VsZCBidXJzdCByZWFkIDgKLSAgICB3b3JkcyB0byB1cGRhdGUgdGhlIGRhdGEgY2FjaGUgYW5kIGNyb3NzIG92ZXIgdGhlCi0gICAgZW5kLW9mLW1lbW9yeS1yYW5nZSBib3VuZGFyeS4gU3VjaCBhIERDVSByZWFkIHdvdWxkIG5vdCBiZQotICAgIGFuc3dlcmVkIGJ5IHRoZSBERFIgY29udHJvbGxlciwgcmVzdWx0aW5nIGluIGEgUExCNCB0aW1lLW91dAotICAgIGFuZCB1bHRpbWF0ZWx5IGluIGEgTWFjaGluZSBDaGVjayBpbnRlcnJ1cHQuIFRoZSBkYXRhIHdvdWxkCi0gICAgYmUgaW5hY2Nlc3NpYmxlIHRvIHRoZSBDUFUuCi0KLSAgICBXb3JrYXJvdW5kOgotICAgIEZvcmJpZCBhbnkgYXBwbGljYXRpb24gdG8gYWNjZXNzIHRoZSBsYXN0IDI1NiBieXRlcyBvZiBERFIKLSAgICBtZW1vcnkuIEZvciBleGFtcGxlLCBtYWtlIHlvdXIgb3BlcmF0aW5nIHN5c3RlbSBiZWxpZXZlIHRoYXQKLSAgICB0aGUgbGFzdCAyNTYgYnl0ZXMgb2YgRERSIG1lbW9yeSBhcmUgYWJzZW50LiBBTUNDIGhhcyBhIHBhdGNoCi0gICAgdGhhdCBkb2VzIHRoaXMsIGF2YWlsYWJsZSBmb3IgTGludXguCi0KLSAgICBUaGlzIHBhdGNoIHNldHMgQ0ZHX01FTV9UT1BfSElERSBmb3IgdGhlIGZvbGxvd2luZyA0NDBFUHggYm9hcmRzOgotICAgIGx3bW9uNSwga29yYXQsIHNlcXVvaWEKLQotICAgIFRoZSBvdGhlciByZW1haW5pbmcgNDQwRVB4IGJvYXJkIHdlcmUgaW50ZW50aW9uYWxseSBub3QgaW5jbHVkZWQKLSAgICBzaW5jZSBpdCBpcyBub3QgY2xlYXIgdG8gbWUsIGlmIHRoZXkgdXNlIHRoZSBlbmQgb2YgcmFtIGZvciBzb21lCi0gICAgb3RoZXIgcHVycG9zZS4gVGhpcyBpcyB1bmNsZWFyLCBzaW5jZSB0aGVzZSBib2FyZHMgaGF2ZSBDT05GSUdfUFJBTQotICAgIGRlZmluZWQgYW5kIGV2ZW4gY29tbWVudHMgbGlrZSB0aGlzOgotCi0gICAgUE1DNDQwLmg6Ci0gICAgLyogZXNkIGV4cGVjdHMgcHJhbSBhdCBlbmQgb2YgcGh5c2ljYWwgbWVtb3J5LgotICAgICAqIFNvIG5vIGxvZ2J1ZmZlciBhdCB0aGUgbW9tZW50LgotICAgICAqLwotCi0gICAgSXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gbm90IHVzZSB0aGUgbGFzdCAyNTYgYnl0ZXMgb24gdGhvc2UKLSAgICBib2FyZHMgdG9vLiBQYXRjaGVzIGZyb20gdGhlIGJvYXJkIG1haW50YWluZXJzIGFyZSB3ZWxjb21lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzY2NGJmOGMzYzliYjllMjM2ODkxZjBkOGRmZGE4ODNlODZkMTU5YgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDI3IDEwOjA5OjA1IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogRml4IENhbnlvbmxhbmRzIGxpbmtlciBzY3JpcHQgKHJlbW92ZSBib2d1cyBBU1NFUlQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkNTZhM2NlMTc5Njg4Y2RlNjEwNzNhMzY5MGUyMTcwM2Q2OGZhZmQ3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMjUgMTc6NTE6MTMgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBDb3JyZWN0bHkgcGFzcyBwaHlpc2NhbCBGTEFTSCBiYXNlIGFkZHJlc3MgaW50byBkdGIKLQotICAgIFRoZSByb3V0aW5lIGZ0X2JvYXJkX3NldHVwKCkgY29uZmlndXJlcyB0aGUgRUJDIE5PUiBtYXBwaW5ncyBmb3IgdGhlCi0gICAgTGludXggcGh5c21hcF9vZiBkcml2ZXIuIFNpbmNlIG9uIDQ2MEVYL0dUIHdlIHJlbWFwIHRoZSBGTEFTSCBmcm9tCi0gICAgMHg0LmZjMDAuMDAwMCB0byAweDQuY2MwMC4wMDAwIGJlY2F1c2Ugb2YgdGhlIG1heC4gMTZNQnl0ZSBib290LUNTCi0gICAgcHJvYmxlbSwgd2UgbmVlZCB0byBwYXNzIHRoZSBjb3JyZWN0ZWQgYWRkcmVzcyBoZXJlIHRvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDlhZDMxOTg5ZGUxMmNlNWM2N2IwN2M0ODY3ZWFkNDc0NjU2NTVjNGIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAxOSAxNjozNToxMiAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBjb21waWxhdGlvbiB3YXJuaW5nIGluIDR4eF9lbmV0LmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDRjOWU4NTU3MzRjNTIzOTAwMzIyYTdjM2NkZDkwOTliNGY1MWI1MWQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAxOSAxNjoyMDo0OSAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEFkZCBBTUNDIEdsYWNpZXIgNDA2R1QgZXZhbCBib2FyZCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgR2xhY2llciA0NjBHVCBldmFsIGJvYXJkLgotICAgIFRoZSBtYWluIGRpZmZlcmVuY2UgdG8gdGhlIENhbnlvbmxhbmRzIGJvYXJkIGFyZSBsaXN0ZWQgaGVyZToKLQotICAgIC0gNCBldGhlcm5ldCBwb3J0cyBpbnN0ZWFkIG9mIDIKLSAgICAtIG5vIFNBVEEgcG9ydAotICAgIC0gbm8gVVNCIHBvcnQKLQotICAgIEN1cnJlbnRseSBFTUFDMiszIGFyZSBub3Qgd29ya2luZy4gVGhpcyB3aWxsIGJlIGZpeGVkIGluIGEgbGF0ZXIKLSAgICByZWxlYXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDhiZDY0MzE0MWFmNDcxMGQ3ZjFiNjliYmFiNmI3NjBkZTBhZjBhMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDI3IDA4OjQ3OjI2IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogTWFzayAndmVjJyB3aXRoIDB4MWYgaW4gdWljX2ludGVycnVwdCgpIGZvciBiaXQgc2V0L2NsZWFyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiOTY3MGRkODViZTZlMDQ5NmVmMmUyMzEwNDNjMjNjYWQ5YjFkOTAzCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMjYgMjE6MDU6NDMgMjAwOCArMDEwMAotCi0gICAgRml4IG91dCBvZiB0cmVlIGJ1aWxkaW5nIGlzc3VlCi0KLSAgICBDdXJyZW50bHkgVS1Cb290IGJ1aWxkaW5nIGluIHNvbWUgZXh0ZXJuYWwgZGlyZWN0b3J5Ci0gICAgZG9lc24ndCB3b3JrLiBUaGlzIHBhdGNoIHRyaWVzIHRvIGZpeCB0aGUgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGQ0ZWU3MTFkOGE1YzM2NmVlM2Y4NTdjMjZiOTI3ZDEyZTY2NjE0ZmYKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAyNiAxODoxMzozMyAyMDA4ICswMTAwCi0KLSAgICBSRUFETUU6IHVwZGF0ZSBkb2N1bWVudGF0aW9uIChhdmFpbGFiaWxpdHksIGxpbmtzLCBldGMuKQotCi0gICAgRml4IHR5cG8gaW4gUkVBRE1FCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCBlODEzZWFlM2JmZWJhOWMwYmRhOWQxYmY5ZmMzZDA4MWY3OTA5NzJmCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMjYgMTc6NDc6NDQgMjAwOCArMDEwMAotCi0gICAgRml4IGNvbXBpbGF0aW9uIGVycm9yIGluIGNtZF91c2IuYwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBjb21waWxhdGlvbiBlcnJvcgotICAgIGNtZF91c2IuYzogSW4gZnVuY3Rpb24gJ2RvX3VzYic6Ci0gICAgY21kX3VzYi5jOjU1MjogZXJyb3I6IHZvaWQgdmFsdWUgbm90IGlnbm9yZWQgYXMgaXQgb3VnaHQgdG8gYmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGQ4YzgyZGI0ODJkNmI1MzVkMTJiNDE5ZDY0NDBiODhiZjcwOTFjOWIKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXIgMTQgMTc6NDU6MjkgMjAwOCAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHNldHRpbmcgdGhlIEkyQyBidXMgc3BlZWQgaW4gZnNsX2kyYy5jCi0KLSAgICBBZGQgc3VwcG9ydCB0byB0aGUgRnJlZXNjYWxlIEkyQyBkcml2ZXIgKGZzbF9pMmMuYykgZm9yIHNldHRpbmcgYW5kIHF1ZXJ5aW5nCi0gICAgdGhlIEkyQyBidXMgc3BlZWQuCUN1cnJlbnQgOFszNTZdeHggYm9hcmRzIGRlZmluZSB0aGUgQ0ZHX0kyQ19TUEVFRCBtYWNybywKLSAgICBidXQgZnNsX2kyYy5jIGlnbm9yZXMgaXQgYW5kIHVzZXMgY29uc2VydmF0aXZlIHZhbHVlIHdoZW4gcHJvZ3JhbW1pbmcgdGhlCi0gICAgSTJDIGJ1cyBzcGVlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQwNDljYzdmNzFjMGQ4NzVlOGY1MDk5ZDFlZDIzNjY2YTgyYjhmOGUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBNYXIgMjcgMDA6MDM6NTcgMjAwOCArMDEwMAotCi0gICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmZDBiMWZlM2MzODhhNzdlOGZlMDBjZGQ5MzBjYTMxN2E5MTE5OGQ0Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTU6MzIgMjAwOCArMDgwMAotCi0gICAgZHJpdmVyczogYWRkIHRoZSBzdXBwb3J0IGZvciBGcmVlc2NhbGUgU0FUQSBjb250cm9sbGVyCi0KLSAgICBBZGQgdGhlIEZyZWVzY2FsZSBvbi1jaGlwIFNBVEEgY29udHJvbGxlciBkcml2ZXIgdG8gdS1ib290LAotICAgIFRoZSBTQVRBIGNvbnRyb2xsZXIgaXMgdXNlZCBvbiB0aGUgODM3eCBhbmQgODMxNSB0YXJnZXRzLAotICAgIFRoZSBkcml2ZXIgY2FuIGJlIHVzZWQgdG8gbG9hZCBrZXJuZWwsIGZzIGFuZCBkdGIuCi0KLSAgICBUaGUgZmVhdHVyZXMgbGlzdDoKLSAgICAtIDEuNS8zIEdicHMgbGluayBzcGVlZAotICAgIC0gTEJBNDgsIExCQTI4IHN1cHBvcnQKLSAgICAtIERNQSBhbmQgRlBETUEgc3VwcG9ydAotICAgIC0gVHdvIHBvcnRzIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZWRlODdmNGM4N2MzY2NkODY4Y2M2MGViZjc5MmUwNTYwYzZkMDI0Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTQ6NDQgMjAwOCArMDgwMAotCi0gICAgYXRhOiBhZGQgdGhlIHJlYWRtZSBmb3IgU0FUQSBjb21tYW5kIGxpbmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjZDU0MDgxY2Q0NzllNTQyZmMzOTliOGE0MDY1MWZmMTFhMWFkODQ5Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTM6MjQgMjAwOCArMDgwMAotCi0gICAgYXRhOiBlbmFibGUgdGhlIHNhdGEgaW5pdGlhbGl6ZSBvbiBib290IHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjkzODYzODNjNWMyYjMyM2M2NjQ5NWIwYjBjZWY2YTk3MTRkODNiZgotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDI2IDIyOjUyOjM2IDIwMDggKzA4MDAKLQotICAgIGF0YTogYWRkIHRoZSBmaXMgc3RydWN0IGZvciBTQVRBCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmZjNjY0ZTgwZGZiMmUxN2RlMGRmNWFkMzllOTFhMDJlOWMzNjFiYwotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDI2IDIyOjUxOjQ0IDIwMDggKzA4MDAKLQotICAgIGF0YTogYWRkIHRoZSBsaWJhdGEgc3VwcG9ydAotCi0gICAgYWRkIHNpbXBsZSBsaWJhdGEgc3VwcG9ydCBpbiB1LWJvb3QKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4ZTliYjQzNDI5ZTUwZGY1NWZhNDE5MzJjYmU2NTg0MWZmNTc5MjIwCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgMjYgMjI6NTA6NDUgMjAwOCArMDgwMAotCi0gICAgYXRhOiBtYWtlIHRoZSBhdGFfcGlpeCBkcml2ZXIgdXNpbmcgbmV3IFNBVEEgZnJhbWV3b3JrCi0KLSAgICBvcmlnaW5hbCBhdGFfcGlpeCBkcml2ZXIgaXMgdXNpbmcgSURFIGZyYW1ld29yaywgbm90IHJlYWwKLSAgICBTQVRBIGZyYW1ld29yay4gRm9yIG5vdywgdGhlIGF0YV9waWl4IGRyaXZlciBpcyBvbmx5IHVzZWQKLSAgICBieSB4ODYgc2M1MjBfY2RwIGJvYXJkLiBUaGlzIHBhdGNoIG1ha2VzIHRoZSBhdGFfcGlpeCBkcml2ZXIKLSAgICB1c2UgdGhlIG5ldyBTQVRBIGZyYW1ld29yaywgc28KLQotICAgIC0gcmVtb3ZlIHRoZSBkdXBsaWNhdGVkIGNvbW1hbmQgc3R1ZmYKLSAgICAtIHJlbW92ZSB0aGUgQ09ORklHX0NNRF9JREUgZGVmaW5lIGluIHRoZSBzYzUyMF9jZHAuaAotICAgIC0gYWRkIHRoZSBDT05GSUdfQ01EX1NBVEEgZGVmaW5lIHRvIHNjNTIwX2NkcC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzcwNTdiNTI5YzNjM2NiOWMwYWM5MDYwNjg2YTQwNjhmMTQ5MWJiZQotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDI2IDIyOjQ5OjQ0IDIwMDggKzA4MDAKLQotICAgIGF0YTogYWRkIHRoZSBzdXBwb3J0IGZvciBTQVRBIGZyYW1ld29yawotCi0gICAgLSBhZGQgdGhlIFNBVEEgZnJhbWV3b3JrCi0gICAgLSBhZGQgdGhlIFNBVEEgY29tbWFuZCBsaW5lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODNjN2Y0NzBhNGNlOTRmMzM2MDBmMTFhZTg1Y2U0ZGNmMDBhYTkwYwotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDI2IDIyOjQ4OjE4IDIwMDggKzA4MDAKLQotICAgIGF0YTogbWVyZ2UgdGhlIGhlYWRlciBvZiBhdGFfcGlpeCBkcml2ZXIKLQotICAgIG1vdmUgdGhlIHNhdGEuaCBmcm9tIGluY2x1ZGUvIHRvIGRyaXZlcnMvYmxvY2svYXRhX3BpaXguaAotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDllZWY2MjgwNGQ5Njk1NDI1YjI0Yzg3YjQ2YTYxYTdmYTc0YWZlZTAKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1hciAyNiAyMjo0NzowNiAyMDA4ICswODAwCi0KLSAgICBhdGE6IG1lcmdlIHRoZSBhdGFfcGlpeCBkcml2ZXIKLQotICAgIG1vdmUgdGhlIGNtZF9zYXRhLmMgZnJvbSBjb21tb24vIHRvIGRyaXZlcnMvYXRhX3BpaXguYywKLSAgICB0aGUgY21kX3NhdGEuYyBoYXZlIHNvbWUgcGFydCBvZiBhdGFfcGlpeCBjb250cm9sbGVyIGRyaXZlcnMuCi0gICAgY29uc29saWRhdGUgdGhlIGRyaXZlciB0byBoYXZlIGJldHRlciBmcmFtZXdvcmsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjllNzQ5ZTk1MzU0ZjMzZWI1ZGM2NjUzYzZkYjdkNTAyYWRiOTVmZQotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJV2VkIE1hciAyNiAxODoyNjo0MyAyMDA4ICswMTAwCi0KLSAgICBVU0IsIFN0b3JhZ2U6IGZpeCBhIGJ1ZyBpbnRyb2R1Y2VkIGluIGNvbW1pdAotICAgIGY2YjQ0ZTBlNGQxOGZlNTA3ODMzYTBmNzZkMjRhOWFhNzJjMTIzZjEgdGhhdCB3aWxsIGNhdXNlIHVzYl9zdG9yX2luZm8KLSAgICB0byBvbmx5IHByaW50IG9ubHkgaW5mb3JtYXRpb24gb24gb25lIHN0b3JhZ2UgZGV2aWNlLCBidXQgbm90IGZvcgotICAgIG11bHRpcGxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IDg0MWU1ZWRkMTYyM2YzZmVjYjZiZmZjNWMyZjkzOGVkN2E5NDczNjAKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAyNiAxNzo0Nzo0NCAyMDA4ICswMTAwCi0KLSAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgaW4gY21kX3VzYi5jCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGNvbXBpbGF0aW9uIGVycm9yCi0gICAgY21kX3VzYi5jOiBJbiBmdW5jdGlvbiAnZG9fdXNiJzoKLSAgICBjbWRfdXNiLmM6NTUyOiBlcnJvcjogdm9pZCB2YWx1ZSBub3QgaWdub3JlZCBhcyBpdCBvdWdodCB0byBiZQotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBkZDZjOTEwYWFkZjI3YzgyMmYxN2I4N2VhZTFhOWJkMGIyZTNhYTE1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgTWFyIDI2IDA4OjUzOjUzIDIwMDggLTA1MDAKLQotICAgIDg1eHg6IEFkZCBjcHVfbXBfbG1iX3Jlc2VydmUgaGVscGVyIHRvIHJlc2VydmUgYm9vdCBwYWdlCi0KLSAgICBQcm92aWRlIGEgYm9hcmRfbG1iX3Jlc2VydmUgaGVscGVyIGZ1bmN0aW9uIHRvIGVuc3VyZSB3ZSByZXNlcnZlCi0gICAgdGhlIHBhZ2Ugb2YgbWVtb3J5IHdlIGFyZSB1c2luZyBmb3IgdGhlIGJvb3QgcGFnZSB0cmFuc2xhdGlvbiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDc5Njc5ZDgwMDIxYWIwOTVlNjM5ZTI1MGNhNDcyZmU1MjZkYTAyZTIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBNYXIgMjYgMDg6MzQ6MjUgMjAwOCAtMDUwMAotCi0gICAgODV4eDogVXBkYXRlIG11bHRpY29yZSBib290IG1lY2hhbmlzbSB0byBlUEFQUiB2MC44MSBzcGVjCi0KLSAgICBUaGUgZm9sbG93aW5nIGNoYW5nZXMgYXJlIG5lZWRlZCB0byBiZSBpbmxpbmUgd2l0aCBlUEFQUiB2MC44MToKLQotICAgICogcjQsIHI1IGFuZCBub3cgYWx3YXlzIHNldCB0byAwIG9uIGJvb3QgcmVsZWFzZQotICAgICogcjcgaXMgdXNlZCB0byBwYXNzIHRoZSBzaXplIG9mIHRoZSBpbml0aWFsIG1hcCBhcmVhIChJTUEpCi0gICAgKiBFUEFQUl9NQUdJQyB2YWx1ZSBjaGFuZ2VkIGZvciBib29rLWUgcHJvY2Vzc29ycwotICAgICogY2hhbmdlcyBpbiB0aGUgc3BpbiB0YWJsZSBsYXlvdXQKLSAgICAqIHNwaW4gdGFibGUgc3VwcG9ydHMgYSA2NC1iaXQgcGh5c2ljYWwgcmVsZWFzZSBhZGRyZXNzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjVlZWRiMmMxOTU4YTEzMTEwYzdkZTFmYzgwOWI2MjQwNTNjYzY5YwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1hciAxOSAxNTowMjowNyAyMDA4IC0wNTAwCi0KLSAgICBGU0w6IENsZWFuIHVwIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vTWFrZWZpbGUKLQotICAgIEVhY2ggZmlsZSB0aGF0IGNhbiBiZSBidWlsdCBoZXJlIG5vdyBmb2xsb3dzIHNvbWUKLSAgICBDT05GSUdfIG9wdGlvbiBzbyB0aGF0IHRoZXkgYXJlIGFwcHJvcHJpYXRlbHkgYnVpbHQKLSAgICBvciBub3QsIGFzIG5lZWRlZC4JQW5kIENPTkZJR18gZGVmaW5lcyB3ZXJlIGFkZGVkCi0gICAgdG8gdmFyaW91cyBib2FyZCBjb25maWcgZmlsZXMgdG8gbWFrZSBzdXJlIHRoYXQgaGFwcGVucy4KLQotICAgIFRoZSBvdGhlciBib2FyZC9mcmVlc2NhbGUvKi9NYWtlZmlsZXMgbm8gbG9uZ2VyIG5lZWQKLSAgICB0byByZWFjaCB1cCBhbmQgb3ZlciBpbnRvIC4uL2NvbW1vbiB0byBidWlsZCB0aGVpcgotICAgIGluZGl2aWR1YWxseSBuZWVkZWQgZmlsZXMgYW55IG1vcmUuCi0KLSAgICBCb2FyZHMgdGhhdCBhcmUgQ0RTIHNwZWNpZmljIHdlcmUgcmVuYW1lZCB3aXRoIGNkc18gcHJlZml4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE1YWY0YjM1OGE3Y2FhOWMwYWEzNzRkNGQ4OTRiZjc2MmVjMzc2NjkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBGZWIgMjcgMjI6MDA6MjcgMjAwOCAtMDYwMAotCi0gICAgODV4eDogRml4IG1lcmdlIGR1cGxpY2F0aW9uCi0KLSAgICBmdF9maXh1cF9jcHUoKSBnb3QgZHVwbGljYXRlZCBpbiBzb21lIG1lcmdlIHNuYWZ1LglSZW1vdmUgdGhlIGR1cGxpY2F0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1ODkzYjNkMGE0MDg0Zjg3YTA2YTVkM2RjMDNkYjkxMjA2ODE4OTQxCi1BdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBGZWIgMTIgMTY6MzU6MDcgMjAwOCAtMDYwMAotCi0gICAgODV4eDogRXhwYW5kIENDU1Igc3BhY2Ugd2l0aCBtb3JlIEREUiBjb250cm9sbGVyIHJlZ2lzdGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhM2U3N2ZhNTM1OWIzZjlmNTllNGU5NDZiNDZkNTdhNTMwNTdjYzg1Ci1BdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBGZWIgOCAxODowNTowOCAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBTcGVlZCB1cCBnZXRfZGRyX2ZyZXEoKSBhbmQgZ2V0X2J1c19mcmVxKCkKLQotICAgIGdldF9kZHJfZnJlcSgpIGFuZCBnZXRfYnVzX2ZyZXEoKSB1c2VkIGdldF9zeXNfaW5mbygpIGVhY2ggdGltZSB0aGV5IHdlcmUKLSAgICBjYWxsZWQuICBIb3dldmVyLCBnZXRfc3lzX2luZm8oKSByZWNhbGN1bGF0ZXMgZXh0cmFuZW91cyBpbmZvcm1hdGlvbiB3aGVuCi0gICAgY2FsbGVkIGVhY2ggdGltZS4gIEhhdmUgZ2V0X2Rkcl9mcmVxKCkgYW5kIGdldF9idXNfZnJlcSgpIHJldHVybiBtZW1vaXplZAotICAgIHZhbHVlcyBmcm9tIGdsb2JhbF9kYXRhIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGU5ZWE2Nzk5MThmYmM5YTUzZmEyZjJhOTA0YWFjODc0ZWE3MzYwMzYKLUF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEZlYiA4IDE2OjQ2OjI3IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IFNob3cgRERSIG1lbW9yeSBkYXRhIHJhdGUgaW4gYWRkaXRpb24gdG8gdGhlIG1lbW9yeSBjbG9jayBmcmVxdWVuY3kuCi0KLSAgICBTaG93IHRoZSBERFIgbWVtb3J5IGRhdGEgcmF0ZSBpbiBhZGRpdGlvbiB0byB0aGUgbWVtb3J5IGNsb2NrCi0gICAgZnJlcXVlbmN5LglGb3IgRERSL0REUjIgbWVtb3JpZXMgdGhlIG1lbW9yeSBkYXRhIHJhdGUgaXMgMnggdGhlCi0gICAgbWVtb3J5IGNsb2NrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA1OTE5MzNjYTZlYWJjNDQwZTZlZDY5NjcyMzNhYWY1NmZjZTQ2NGEzCi1BdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBGZWIgOCAxNjo0NDo1MyAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBnZXRfdGJjbGsoKSBzcGVlZCB1cCBhbmQgcm91bmRpbmcgZml4Ci0KLSAgICBTcGVlZCB1cCBnZXRfdGJjbGsoKSBieSByZWZlcmVuY2luZyBwcmUtY29tcHV0ZWQgYnVzIGNsb2NrCi0gICAgZnJlcXVlbmN5IHZhbHVlIGZyb20gZ2xvYmFsIGRhdGEgaW5zdGVhZCBvZiBzeXNfaW5mb190LiAgRml4Ci0gICAgcm91bmRpbmcgb2YgcmVzdWx0IHRvIG5lYXJlc3Q7IHByZXZpb3VzbHkgaXQgd2FzIHJvdW5kaW5nCi0gICAgdXB3YXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMWNlZDEyMTYwMGIyMDYwYWIyZmY5ZjBmZGRkOTQyMWZkNzBhMGRjNgotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRmViIDYgMDE6MTk6NDAgMjAwOCAtMDYwMAotCi0gICAgVXBkYXRlIFNWUiBudW1iZXJzIHRvIGV4cGFuZCBzdXBwb3J0Ci0KLSAgICBGU0wgaGFzIHRha2VuIHRvIHVzaW5nIFNWUlsxNjoyM10gYXMgYW4gU09DIHN1Yi12ZXJzaW9uIGZpZWxkLiAgVGhpcwotICAgIGlzIHVzZWQgdG8gZGlzdGluZ3Vpc2ggY2VydGFpbiB2YXJpYW50cyB3aXRoaW4gYW4gU09DIGZhbWlseS4gIFRvCi0gICAgYWNjb3VudCBmb3IgdGhpcywgd2UgYWRkIHRoZSBTVlJfU09DX1ZFUigpIG1hY3JvLCBhbmQgdXBkYXRlIHRoZSBTVlJfKgotICAgIGNvbnN0YW50cyB0byByZWZsZWN0IHRoZSBsYXJnZXIgdmFsdWUuICBXZSBhbHNvIGFkZCBTVlIgbnVtYmVycyBmb3IgYWxsCi0gICAgb2YgdGhlIGN1cnJlbnQgdmFyaWFudHMuICBGaW5hbGx5LCB0byBtYWtlIHRoaW5ncyBuZWF0ZXIsIHJhdGhlciB0aGFuCi0gICAgdXNlIGFuIGVub3Jtb3VzIHN3aXRjaCBzdGF0ZW1lbnQgdG8gcHJpbnQgb3V0IHRoZSBDUFUgdHlwZSwgd2UgY3JlYXRlCi0gICAgYW5kIGFycmF5IG9mIFNWUi9uYW1lIHBhaXJzICh1c2luZyBhIG1hY3JvKSwgYW5kIHByaW50IG91dCB0aGUgQ1BVIG5hbWUKLSAgICB0aGF0IG1hdGNoZXMgdGhlIFNWUiBTT0MgdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI4M2VlZjQ0MGNmM2NlZjgxNjE3MmNjYmI1ODk3Y2NkOGU0MDNjZjMKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiA2IDAxOjEyOjU3IDIwMDggLTA2MDAKLQotICAgIEFkZCB0aGUgRnJlZXNjYWxlIFBDSSBkZXZpY2UgSURzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3YWZmMGMwNTFhZDA2MTMxNzFjZjJiOTk0MWVlNDg2NzVjNjJlN2NkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgRmViIDE0IDExOjA0OjIzIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpY29yZSBib290IG1lY2hhbmlzbQotCi0gICAgQWRkZWQgdGhlIGNwdSBjb21tYW5kIHRoYXQgcHJvdmlkZXMgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBnZXQgc3RhdHVzLAotICAgIHJlc2V0LCBhbmQgcmVsZWFzZSBzZWNvbmRhcnkgY29yZXMgaW4gbXVsdGljb3JlIHByb2Nlc3NvcnMuCi0KLSAgICBBZGRlZCBzdXBwb3J0IGZvciB1c2luZyB0aGUgZVBBUFIgZGVmaW5lZCBzcGluLXRhYmxlIG1lY2hhbmlzbSBvbiA4NXh4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlYzJiNzRmZmQzNmYwMmM2MTIzNzI1ZTdjMjUzM2RkMmRlYWY0YjY0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDE2OjQ4OjMzIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IEFkZGVkIHN1cHBvcnQgZm9yIG11bHRpY29yZSBib290IG1lY2hhbmlzbQotCi0gICAgQWRkZWQgdGhlIGNwdSBjb21tYW5kIHRoYXQgcHJvdmlkZXMgYSBnZW5lcmljIG1lY2hhbmlzbSB0byBnZXQgc3RhdHVzLAotICAgIHJlc2V0LCBhbmQgcmVsZWFzZSBzZWNvbmRhcnkgY29yZXMgaW4gbXVsdGljb3JlIHByb2Nlc3NvcnMuCi0KLSAgICBBZGRlZCBzdXBwb3J0IGZvciB1c2luZyB0aGUgZVBBUFIgZGVmaW5lZCBzcGluLXRhYmxlIG1lY2hhbmlzbSBvbiA4NXh4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGY2OTc2NmU0YjVkNDdlY2QzYWE1ODY3N2E4ZGE4NzU2OTRmMzY0ZjIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMzAgMTQ6NTU6MTQgMjAwOCAtMDYwMAotCi0gICAgODV4eDogQWRkIHRoZSBjb25jZXB0IG9mIENGR19DQ1NSQkFSX1BIWVMKLQotICAgIFdoZW4gd2UgZ28gdG8gMzYtYml0IHBoeXNpY2FsIGFkZHJlc3NlcyB3ZSBuZWVkIHRvIGtlZXAgdGhlIGNvbmNlcHQgb2YKLSAgICB0aGUgcGh5c2ljYWwgQ0NTUkJBUiBhZGRyZXNzIHNlcGVyYXRlIGZyb20gdGhlIHZpcnR1YWwgb25lLgotCi0gICAgRm9yIHRoZSBtYWpvcml0eSBvZiBib2FyZHMgQ0ZHX0NDU0JBUl9QSFlTID09IENGR19DQ1NSQkFSCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNWI1ZWI5Y2E1Yjc3OGY3NjNiY2YzMzI2OTdiMzVjYzFlNzQ3NjI2ZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAyNiAxNTozODo0NyAyMDA4ICswMTAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkYTg4MDhkZjdhOWNlZjVhM2QyZWUyODZlZjllYmY5ZGUxNzgwNjYwCi1BdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotRGF0ZToJV2VkIE1hciAyNiAxMzowMjoxMyAyMDA4ICswMTAwCi0KLSAgICBBZGQgQ0ZHX1JUQ19EUzEzMzdfTk9PU0MgdG8gdHVybiBvZmYgT1NDIG91dHB1dAotCi0gICAgVGhlIGRlZmF1bHQgc2V0dGluZ3MgZm9yIFJUQyBEUzEzMzcga2VlcHMgdGhlIE9TQwotICAgIG91dHB1dCwgMzIsNzY4IEh6LCBvbi4gVGhpcyBhZGQgQ0ZHX1JUQ19EUzEzMzdfTk9PU0MgdG8KLSAgICB0dXJuIGl0IG9mZi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgNDM4YTRjMTEyNjBiNGVhOTgwNTAzOWIwYjRmOTJmOWRmNTMwNmIwMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAyNiAxMTo0ODo0NiAyMDA4ICswMTAwCi0KLSAgICBDbGVhbnVwIGNvZGluZyBzdHlsZSwgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDIxOGNhNzI0YzA4Y2E4YTY0OWYwOTE3Y2YyMDFjZjIzZDRiMzNmMzkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMjYgMTA6NDA6MTIgMjAwOCArMDEwMAotCi0gICAgUkVBRE1FOiB1cGRhdGUgZG9jdW1lbnRhdGlvbiAoYXZhaWxhYmlsaXR5LCBsaW5rcywgZXRjLikKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmNmI0NGUwZTRkMThmZTUwNzgzM2EwZjc2ZDI0YTlhYTcyYzEyM2YxCi1BdXRob3I6IEFyYXMgVmFpY2hhcyA8YXJhc3ZAbWFndGVjaC5jb20uYXU+Ci1EYXRlOglUdWUgTWFyIDI1IDEyOjA5OjA3IDIwMDggKzExMDAKLQotICAgIFVTQiBTdG9yYWdlLCBhZGQgbWVhbmluZ2Z1bCByZXR1cm4gdmFsdWUKLQotICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgInVzYiBzdG9yYWdlIiBjb21tYW5kIHRvIHJldHVybiBzdWNjZXNzIGlmIGl0Ci0gICAgZmluZHMgYSBVU0Igc3RvcmFnZSBkZXZpY2UsIG90aGVyd2lzZSBpdCByZXR1cm5zIGVycm9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IDE4ZTY5YTM1ZWZiYjA3ODQwM2RiMGMwMDYzOTg2NDcwZGFkN2QwODIKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglGcmkgTWFyIDE0IDIzOjIwOjE4IDIwMDggKzAzMDAKLQotICAgIDgzeHgvZmR0X3N1cHBvcnQ6IGxldCB1c2VyIHNwZWNpZml5IEZTTCBVU0IgRHVhbC1Sb2xlIGNvbnRyb2xsZXIgcm9sZQotCi0gICAgTGludXggdW5kZXJzdGFuZHMgImhvc3QiIChkZWZhdWx0KSwgInBlcmlwaGVyYWwiIGFuZCAib3RnIiAoYnJva2VuKS4KLSAgICBUaG91Z2gsIFUtQm9vdCBkb2Vzbid0IHJlc3RyaWN0IGRyX21vZGUgdmFyaWFibGUgdG8gdGhlc2UgdmFsdWVzICh0aGluawotICAgIG9mIHJlbmFtZXMgaW4gZnV0dXJlKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNzYwNDc4M2IyMzZlMzY4ZjIyNWVmYjdiM2VmYjQxOGZlMjBiNDA0Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJRnJpIE1hciAxNCAyMzoyMDozMCAyMDA4ICswMzAwCi0KLSAgICB0c2VjOiBmaXggbGluayBkZXRlY3Rpb24gZm9yIHRoZSBSVEw4MjExQiBQSFkKLQotICAgIFJUTDgyMTFCIHNldHMgbGluayBzdGF0ZSByZWdpc3RlciBhZnRlciBhdXRvbmVnb3RpYXRpb24gY29tcGxldGUsCi0gICAgc28gd2l0aCBib290ZGVsYXk9MCBSVEw4MjExQiB3aWxsIHJlcG9ydCBsYWNrIG9mIHRoZSBsaW5rLgotCi0gICAgVG8gZml4IHRoaXMsIHdlIHNob3VsZCB3YWl0IGZvciBhbmVnIHRvIGNvbXBsZXRlLCBldmVuIGlmIHRoZQotICAgIGxpbmsgaXMgY3VycmVudGx5IGRvd24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2ZhOWNiYjAwZGM4M2ZjZjE3NTA0MmI2ZjIwYzJjOWJjZTlhMTVmNAotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBNYXIgMjQgMjA6NDc6MDkgMjAwOCArMDMwMAotCi0gICAgbXBjODN4eDogYWRkICJmc2wsc29jIiBhbmQgImZzbCxpbW1yIiBjb21wYXRpYmxlIGZpeHVwcwotCi0gICAgZGV2aWNlX3R5cGUgPSAic29jIiBpcyBiZWluZyBkZXByZWNhdGVkLCBuZXdlciBkZXZpY2UgdHJlZXMgd2lsbCB1c2UKLSAgICAiZnNsLHNvYyIgYW5kL29yICJmc2wsaW1tciIgZm9yIHRoZSBzb2Mgbm9kZXMuCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBjbG9jay1mcmVxdWVuY3kgcHJvcGVydHkgZm9yIHNvYyBub2RlcyAodGhlIHNhbWUKLSAgICB2YWx1ZSBhcyBidXMtZnJlcXVlbmN5KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgNTA3ZTJkNzljOTE0NDFhMGJiMmNkM2QwYzMxYzhiZmUzZjhjZWMwNwotQXV0aG9yOiBKb2UgRCdBYmJyYWNjaW8gPGxqZDAxNUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAyNCAxMzowMDo1OSAyMDA4IC0wNDAwCi0KLSAgICBNb2RpZmllZCB0aGUgRERSIFNEUkFNIGNsb2NrIGNvbnRyb2wgcmVnaXN0ZXIgdG8gZGVsYXkgTUNLL01DS19CIDMvNCBjbG9jawotCi0gICAgV2l0aCB0aGUgb3JpZ2luYWwgdmFsdWUgb2YgMS8yIGNsb2NrIGN5Y2xlIGRlbGF5LCB0aGUgc3lzdGVtIHJhbiByZWxhdGl2ZWx5Ci0gICAgc3RhYmxlIGV4Y2VwdCB3aGVuIHdlIHJ1biBiZW5jaG1hcmtzIHRoYXQgYXJlIGludGVuc2l2ZSB1c2VycyBvZiBtZW1vcnkuCi0gICAgV2hlbiBJIHJ1biBzYW1iYSBjb25uZWN0ZWQgZGlzayB3aXRoIGEgSERCRU5DSCB0ZXN0LCB0aGUgc3lzdGVtIGxvY2tzLXVwCi0gICAgb3IgcmVib290cyBzcG9yYWRpY2FsbHkuCi0KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2UgRCdBYmJyYWNjaW8gPEpvZS5EJ2FiYnJhY2Npb0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTdiYTMyZDQ4MGE4NmRiNWRiOGRjZDhjYTY2YjIxYjRjYWRkYTkyMwotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBNYXIgMjQgMTI6NDQ6MTMgMjAwOCAtMDUwMAotCi0gICAgbXBjODN4eDogU2V0IFBDSSBJL08gYnVzLWFkZHJlc3MgYmFzZSB0byB6ZXJvLgotCi0gICAgVGhlIGRldmljZSB0cmVlcyBmb3IgdGhlc2UgYm9hcmRzIGRlc2NyaWJlIFBDSSBJL08gYXMgc3RhcnRpbmcgZnJvbQotICAgIGFkZHJlc3MgemVybyBmcm9tIHRoZSBkZXZpY2UncyBwZXJzcGVjdGl2ZS4KLQotICAgIFBsYWNpbmcgSS9PIGVsc2V3aGVyZSBtYXkgY2F1c2UgcHJvYmxlbXMgd2l0aCBjZXJ0YWluIFBDSSBib2FyZHMsIGFuZCBtYXkKLSAgICBjYXVzZSBwcm9ibGVtcyB3aXRoIExpbnV4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNzAwZTdkZjdmZWNmMmQzNzY1YWU1NjhjZTc3Y2U3ODhjZGU0ZjNlCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE1hciAyNCAyMDo0NzowNSAyMDA4ICswMzAwCi0KLSAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IHVzZSAzMy4zKDMpTUh6IENMS0lOL1NZU19DTEsKLQotICAgIEF0IGxlYXN0IG9uIHRoZSAiMzNNSHogUGlsb3QiIGJvYXJkIGNyeXN0YWwgaXMgYWN0dWFsbHkgMzMuM01Iei4KLSAgICBUaGlzIHBhdGNoIGZpeGVzICJzeXN0ZW0gdGltZSBkcmlmdGluZyIgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgM2EwY2ZkZDU3NmRjOWIxNmQxNDY4ZDM3MzM5MTgyNjA3YzY5N2ZiNwotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBNYXIgMjQgMjA6NDc6MDIgMjAwOCArMDMwMAotCi0gICAgbXBjODN4eDogTVBDODM2MEUtUkRLOiBkZWZpbmUgQ09ORklHX09GX1NURE9VVF9WSUFfQUxJQVMKLQotICAgIFRoaXMgaXMgbmVlZGVkIHRvIHVwZGF0ZSAvY2hvb3Nlbi9saW51eCxzdGRvdXQtcGF0aCBwcm9wZXJseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgMzQxOWViNjJmMDg4ZDdhMjJmMWQyYTNjZWJmNzZiNzdlNDA4YjViOQotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBNYXIgMjQgMjA6NDc6MDAgMjAwOCArMDMwMAotCi0gICAgbXBjODN4eDogTVBDODM2MEUtUkRLOiBhZGQgZGhjcCBjb21tYW5kCi0KLSAgICBQbHVzIG1vZGlmeSBlbnZpcm9ubWVudCB0byB1c2UgaXQgYW5kIHJlbW92ZSBib290ZmlsZSBlbnYgdmFyaWFibGUsCi0gICAgaXQgaXMgaW50ZXJuYWwgYW5kIENPTkZJR19CT09URklMRSBpcyB1c2VkIGZvciB0aGVzZSBwdXJwb3Nlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgZDg5MmIyZGJiNDA4N2EyNjc3OGJmZDQyNDcwYzNlYTdkMGUyYjZhYQotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBNYXIgMjQgMjA6NDY6NTcgMjAwOCArMDMwMAotCi0gICAgbXBjODN4eDogTVBDODM2MEUtUkRLOiByZXdvcmsgZGRyIHNldHVwLCBlbmFibGUgZWNjCi0KLSAgICBDdXJyZW50IEREUiBzZXR1cCBlYXNpbHkgY2F1c2VzIG1lbW9yeSBjb3JydXB0aW9uLCB0aGlzIHBhdGNoIGZpeGVzIGl0LgotCi0gICAgQWxzbyBmaXggVElNSU5HX0NGRzBfTVJTX0NZQyBkZWZpbml0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCBkNDdkNDljYzM3YTM4ZjI3MTlhM2UxYjliYmUwOGFjODEwY2YyZDlhCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE1hciAyNCAyMDo0Njo1MyAyMDA4ICswMzAwCi0KLSAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IGNvbmZpZ3VyZSBwYXJpbyBwaW5zIGZvciBBRDc4NDMgYW5kIEZIQ0kKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBxZSBwYXJpbyBwaW5zIGNvbmZpZ3VyYXRpb24gZm9yIEFENzg0MyBBREMvVG91Y2hzY3JlZW4KLSAgICBjb250cm9sbGVyIGFuZCBGSENJIChRRSBVU0IpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCA3YWQ5NTk0OTA5NjJlNjg0MjY0OGQ4N2Q0YmQ3OTVlYTZjZGNjZTY3Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE1hciAyNCAyMDo0Njo1MSAyMDA4ICswMzAwCi0KLSAgICBtcGM4M3h4OiBNUEM4MzYwRS1SREs6IGFkZCBzdXBwb3J0IGZvciBOQU5ECi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLQotY29tbWl0IDlhM2U4MzJhZWI0OTE4NjFkMDI5OTkxMjQxNTcyZWJkZjRiNWI2MWIKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglNb24gTWFyIDI0IDIwOjQ2OjQ2IDIwMDggKzAzMDAKLQotICAgIG1wYzgzeHg6IE1QQzgzNjBFLVJESzogdXNlIFJHTUlJX1JYSUQgaW50ZXJmYWNlIG1vZGUKLQotICAgIFRoaXMgaXMgbmVlZGVkIGZvciBCQ00gUEhZcyB0byB3b3JrIG9uIHRoaXMgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLQotY29tbWl0IDMwMDYxNWRjNWQ5YjBhMjAyMmZiYzZhZjBjMTMxNTllMzNmZDc1MmUKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglNb24gTWFyIDI0IDIwOjQ2OjM0IDIwMDggKzAzMDAKLQotICAgIHVlYzogYWRkIHN1cHBvcnQgZm9yIEJyb2FkY29tIEJDTTU0ODEgR2lnYWJpdCBQSFkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBzdXBwb3J0IGZvciBCcm9hZGNvbSBCQ001NDgxIFBIWS4KLQotICAgIFJYRC1SWEMgZGVsYXkgcXVpcmsgY29tZXMgZnJvbSBNUEM4MzYwRS1SREsgQlNQIHNvdXJjZSwgYXV0aG9yIGlzCi0gICAgUGV0ZXIgQmFyYWRhIDxwZXRlcmJAbG9naWNwZC5jb20+LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCA2YTYwMGMzYTE4NzZiYzIwMzQ0NWRmNGYwZmQ2YjEyNjQ4MjU5NjY2Ci1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE1hciAyNCAyMDo0NjoyOCAyMDA4ICswMzAwCi0KLSAgICB1ZWM6IGFkZCBzdXBwb3J0IGZvciBSR01JSV9SWElEIGludGVyZmFjZSBtb2RlCi0KLSAgICBQSFkgZHJpdmVycyB3aWxsIHVzZSBpdCB0byBzZXR1cCBzb2Z0d2FyZSBkZWxheSBiZXR3ZWVuIFJYRCBhbmQgUlhDCi0gICAgc2lnbmFscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgOTFjZGFhM2E5ZDc1NjJiODY5ZDk2Nzc0ZTljOWRkZjE0MmMwODQ4ZAotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBNYXIgMjQgMjA6NDY6MjQgMjAwOCArMDMwMAotCi0gICAgdWVjOiBhZGQgc3VwcG9ydCBmb3IgZ2JpdCBtaWkgc3RhdHVzIHJlYWRpbmdzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLQotY29tbWl0IGFhYmNlN2ZiNTA1ZmZlNTVlYmYzYmY0ZGNhZmRhZTk3YTU4MTU1OGQKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglNb24gTWFyIDI0IDE3OjQwOjQ3IDIwMDggKzAzMDAKLQotICAgIDgzeHg6IGRlZmluZSBDT05GSUdfT0ZfU1RET1VUX1ZJQV9BTElBUyBmb3IgdGhlIE1QQzgzN1hFUkRCIGJvYXJkcwotCi0gICAgVGhpcyBpcyBwcmltYXJpbHkgZm9yIHRoZSBlYXJseSBjb25zb2xlIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLQotY29tbWl0IDJiZDc0NjBlOTI4M2VjOTg1NjUxODliM2NkYmNmYjJiY2RjZGQ2MzUKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglNb24gTWFyIDI0IDE3OjQwOjQzIDIwMDggKzAzMDAKLQotICAgIDgzeHg6IGluaXRpYWxpemUgc2VyZGVzIGZvciBNUEM4MzdYUkRCIGJvYXJkcwotCi0gICAgT24gdGhlIE1QQzgzNzdFUkRCOiAyIFNBVEEgYW5kIDIgUENJLUUuCi0gICAgT24gdGhlIE1QQzgzNzhFUkRCOiAyIFBDSS1FCi0gICAgT24gdGhlIE1QQzgzNzlFUkRCOiA0IFNBVEEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgNDUzMzE2YTJhMTk2NDJkOGFmY2JjYTc0NTJlNDBhNmI0NGExOTdiMQotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBNYXIgMjQgMTc6NDA6MzIgMjAwOCArMDMwMAotCi0gICAgODN4eDogc2VyZGVzIHNldHVwIHJvdXRpbmVzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgZmV3IHJvdXRpbmVzIHRvIGNvbmZpZ3VyZSBzZXJkZXMgb24gODM3eCB0YXJnZXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCBhNzk2Y2RmOWMzNzdjYjRlNWQ2MWQxMDc5YTI5NjYwOGY4ZmJkOTAzCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE1hciAyNCAxNzo0MDoyNyAyMDA4ICswMzAwCi0KLSAgICA4M3h4OiBzcGxpdCBDT0JKUyBvbnRvIHNlcGFyYXRlIGxpbmVzCi0KLSAgICAuLnBsdXMgZ2V0IHJpZCBvZiBzb21lICNpZmRlZnMgaW4gdGhlIC5jIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCA0NmEzYWVlYTczYzEzYWIwNGViZjdhODczOWFmYjg3YWM1ZGE5NGEzCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE1hciAyNCAxNzo0MDoyMyAyMDA4ICswMzAwCi0KLSAgICA4M3h4OiBuYW5kIHN1cHBvcnQgZm9yIE1QQzgzN1hSREIgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLQotY29tbWl0IDgyZTQ1YTIwNDE5MDU5M2U4NjEzMTQ1YTkyOGY5OThmYjhjOTA5YzQKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJVHVlIE1hciAxOCAyMTo0NDo0MSAyMDA4IC0wNDAwCi0KLSAgICBFbmFibGUgQ09ORklHX0ZMQVNIX1NIT1dfUFJPR1JFU1Mgb24gdGhlIE1QQzgzNjBFTURTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGZhN2ExYjQ3MTllMzI1ZmNlMzMyNjg5ZmI4NzU0ZWMxNjYxOTFmZgotQXV0aG9yOiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXIgMjAgMTM6MTU6MzkgMjAwOCAtMDQwMAotCi0gICAgbXBjODMyM2VyZGI6IHJlbW92ZSBSVEMgYW5kIGFkZCBFRVBST00KLQotICAgIFRoZXJlJ3Mgbm8gb24tYm9hcmQgUlRDIG9uIHRoZSBNUEM4MzIzRVJEQiwgYnV0IHRoZXJlIGlzIGFuIEVFUFJPTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWJiZWVhODZlYjZhZmI4NzIzNzRjZDIzMjE3Y2IzYzEwMTg0NDNlZAotQXV0aG9yOiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXIgMjAgMTM6MTU6MzQgMjAwOCAtMDQwMAotCi0gICAgbXBjODMyM2VyZGI6IEltcHJvdmUgdGhlIHN5c3RlbSBwZXJmb3JtYW5jZQotCi0gICAgVGhlIGZvbGxvd2luZyBjaGFuZ2VzIGFyZSBiYXNlZCBvbiBrZXJuZWwgVUNDIGV0aGVybmV0IHBlcmZvcm1hbmNlOgotCi0gICAgMS4JTWFrZSB0aGUgQ1NCIGJ1cyBwaXBlbGluZSBkZXB0aCBhcyA0LCBhbmQgZW5hYmxlIHRoZSByZXBlYXQgbW9kZQotICAgIDIuCU9wdGltaXplIHRyYW5zYWN0aW9ucyBiZXR3ZWVuIFFFIGFuZCBDU0IuICBBZGRlZCBDRkdfU1BDUl9PUFQKLQlzd2l0Y2ggdG8gZW5hYmxlIHRoaXMgc2V0dGluZy4KLQotICAgIFRoZSBmb2xsb3dpbmcgY2hhbmdlcyBhcmUgYmFzZWQgb24gdGhlIEFwcCBOb3RlIEFOMzM2OSBhbmQKLSAgICB2ZXJpZmllZCB0byBpbXByb3ZlIG1lbW9yeSBsYXRlbmN5IHVzaW5nIExNYmVuY2g6Ci0KLSAgICAzLglDUzBfQ09ORklHW0FQX25fRU5dIGlzIGNoYW5nZWQgZnJvbSAxIHRvIDAKLSAgICA0LglDUzBfQ09ORklHW09EVF9XUl9DT05GSUddIHNldCB0byAxLiAgV2FzIGEgcmVzZXJ2ZWQgc2V0dGluZwotCXByZXZpb3VzbHkuCi0gICAgNS4JVElNSU5HX0NGR18xW1dSUkVDXSBpcyBjaGFuZ2VkIGZyb20gM2Nsa3MgdG8gMmNsa3MgIChiYXNlZCBvbgotCVR3cj0xNW5zLCBhbmQgdGhpcyB3YXMgYWxyZWFkeSB0aGUgc2V0dGluZyBpbiBERFJfTU9ERSkKLSAgICA2LglUSU1JTkdfQ0ZHXzFbUFJFVE9BQ1RdIGlzIGNoYW5nZWQgZnJvbSAzY2xrcyB0byAyY2xrcy4gKGJhc2VkIG9uCi0JVHJwPTE1bnMpCi0gICAgNy4JVElNSU5HX0NGR18xW0FDVFRPUFJFXSBpcyBjaGFuZ2VkIGZyb20gOWNsa3MgdG8gNmNsa3MuIChiYXNlZCBvbgotCVRyYXM9NDBucykKLSAgICA4LglUSU1JTkdfQ0ZHXzFbQUNUVE9SV10gaXMgY2hhbmdlZCBmcm9tIDNjbGtzIHRvIDJjbGtzLiAoYmFzZWQgb24KLQlUcmNkPTE1bnMpCi0gICAgOS4JVElNSU5HX0NGR18xW1JFRlJFQ10gY2hhbmdlZCBmcm9tIDIxIGNsa3MgdG8gMTFjbGtzLiAgKGJhc2VkIG9uCi0JVHJmYz03NW5zKQotICAgIDEwLiBUSU1JTkdfQ0ZHXzJbRk9VUl9BQ1RdIGlzIGNoYW5nZWQgZnJvbSAxMCBjbGtzIHRvIDdjbGtzLiAgKGJhc2VkCi0Jb24gVGZhdz01MG5zKQotICAgIDExLiBUSU1JTkdfQ0ZHXzJbQUREX0xBVF0gYW5kIEREUl9NT0RFW0FMXSBjaGFuZ2VkIGZyb20gMCB0byAxIChiYXNlZAotCW9uIENMPTMgYW5kIFdMPTIpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBCYXJrb3dza2kgPG1pY2hhZWwuYmFya293c2tpQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmYzU0OWM4NzFmNDM5MzMzOTZhNWIzZTIxZDg5NzAyM2Q0YjMxYjhkCi1BdXRob3I6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1hciAyMCAxMzoxNToyOCAyMDA4IC0wNDAwCi0KLSAgICBtcGM4MzIzZXJkYjogdXNlIHJlYWRhYmxlIEREUiBjb25maWcgbWFjcm9zCi0KLSAgICBVc2UgYXZhaWxhYmxlIHNoaWZ0L21hc2sgbWFjcm9zIHRvIGRlZmluZSBERFIgY29uZmlndXJhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgQmFya293c2tpIDxtaWNoYWVsLmJhcmtvd3NraUBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODljNzc4NGVkOTBiYTUwMzAxZWVjNTIxMTQ0Zjk1MTExZTQ3MjkwNgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEZlYiA4IDEzOjE1OjU1IDIwMDggLTA2MDAKLQotICAgIDgzeHg6IEFkZCBWaXRlc3NlIFZTQzczODUgZmlybXdhcmUgdXBsb2FkaW5nCi0KLSAgICBVcGRhdGUgdGhlIE1QQzgzNDlFLW1JVFgsIE1QQzgzMTNFLVJEQiwgYW5kIE1QQzgzN1hFLVJEQiBib2FyZCBmaWxlcyB0byB1cGxvYWQKLSAgICB0aGUgVml0ZXNzZSBWU0M3Mzg1IGZpcm13YXJlLiAgQ2hhbmdlZCBDT05GSUdfVlNDNzM4NSB0byBDT05GSUdfVlNDNzM4NV9FTkVULgotICAgIENsZWFuZWQgdXAgdGhlIGJvYXJkIGhlYWRlciBmaWxlcyB0byBtYWtlIHNlbGVjdGluZyB0aGUgVlNDNzM4NSBlYXNpZXIgdG8KLSAgICBjb250cm9sLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjU1ZDk4YzZkNWI4Njk0ZTU2MGEwZTcyN2IxNGNiNjkyMWQ3Y2ZjYwotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEZlYiA4IDEzOjE1OjU0IDIwMDggLTA2MDAKLQotICAgIE5FVDogQWRkIFZpdGVzc2UgVlNDNzM4NSBmaXJtd2FyZSB1cGxvYWRpbmcKLQotICAgIFRoZSBWaXRlc3NlIFZTQzczODUgaXMgYSA1LXBvcnQgc3dpdGNoIGZvdW5kIG9uIHRoZSBGcmVlc2NhbGUgTVBDODM0OUUtbUlUWAotICAgIGFuZCBvdGhlciBib2FyZHMuICBBIHNtYWxsIGZpcndtYXJlIG11c3QgYmUgdXBsb2FkZWQgdG8gaXRzIG9uLWJvYXJkIG1lbW9yeQotICAgIGJlZm9yZSBpdCBjYW4gYmUgZW5hYmxlZC4gIFRoaXMgcGF0Y2ggYWRkcyB0aGUgY29kZSB3aGljaCB1cGxvYWRzIGZpcm13YXJlCi0gICAgKGJ1dCBub3QgdGhlIGZpcm13YXJlIGl0c2VsZikuCi0KLSAgICBQcmV2aW91c2x5LCB0aGlzIGZlYXR1cmUgd2FzIHByb3ZpZGVkIGJ5IGEgVS1Cb290IGFwcGxpY2F0aW9uIHRoYXQgd2FzCi0gICAgbWFkZSBhdmFpbGFibGUgb25seSBvbiBGcmVlc2NhbGUgQlNQcy4gIFRoZSBWU0M3Mzg1IGZpcm13YXJlIG11c3Qgc3RpbGwKLSAgICBiZSBvYnRhaW5lZCBzZXBhcmF0ZWx5LCBidXQgYXQgbGVhc3QgdGhlcmUgaXMgbm8gbG9uZ2VyIGEgbmVlZCBmb3IgYSBzZXBhcmF0ZQotICAgIGFwcGxpY2F0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGFhNmY2ZDE3MWExZjlmNDZlZTRmMDNhZDZhY2I5N2E2YmZiNzE4NTUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMjYgMDA6NTI6MTAgMjAwOCArMDEwMAotCi0gICAgQ29kaW5nIFN0eWxlIGNsZWFueXA7IHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0M2RkZDljODIwZmVjNDQ4MTYxODhmNTMzNDZiNDY0ZTIwYjMxNDJkCi1BdXRob3I6IEplcnJ5IFZhbiBCYXJlbiA8Z3ZiLnVib290QGdtYWlsLmNvbT4KLURhdGU6CVNhdCBNYXIgMjIgMTQ6MjM6NDkgMjAwOCAtMDQwMAotCi0gICAgUmVtb3ZlIGRlcHJlY2F0ZWQgQ09ORklHX09GX0hBU19VQk9PVF9FTlYgYW5kIENPTkZJR19PRl9IQVNfQkRfVAotCi0gICAgVGhlc2UgZGVmaW5lcyBlbWJlZGRlZCB0aGUgdS1ib290IGVudiB2YXJpYWJsZXMgYW5kL29yIHRoZSBiZF90IHN0cnVjdHVyZQotICAgIGluIHRoZSBmZHQgYmxvYi4gIFRoZSBjb25jbHVzaW9uIG9mIGRpc2N1c3Npb24gb24gdGhlIHUtYm9vdCBlbWFpbCBsaXN0Ci0gICAgd2FzIHRoYXQgZW1iZWRkaW5nIHRoZXNlIGluIHRoZSBmZHQgYmxvYiBpcyBub3QgdXNlZnVsOiB0aGVyZSBhcmUgYmV0dGVyCi0gICAgd2F5cyBvZiBwYXNzaW5nIHRoZSBkYXRhIChpbiBmYWN0LCB0aGUgZmR0IGJsb2IgaXRzZWxmIHJlcGxhY2VzIHRoZQotICAgIGJkX3Qgc3RydWN0KS4KLQotICAgIFRoZSBvbmx5IGJvYXJkIHRoYXQgZW5hYmxlcyB0aGVzZSBpcyB0aGUgc3R4eHRjIGFuZCB0aGV5IGRvbid0IGFwcGVhcgotICAgIHRvIGJlIHVzZWQgYnkgbGludXguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotICAgIEFja2VkLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjJlZDIyODU3NDMzNTlmZDFmZTczZTQxMWRmZjkxNGIyMjU2ZTY4ZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTWFyIDE3IDEwOjQ5OjI1IDIwMDggKzAxMDAKLQotICAgIHJ0YzogUmVtb3ZlIDJuZCByZWZlcmVuY2UgdG8gbWF4NjkwMC5vIGluIGRyaXZlcnMvcnRjL01ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxYmI3MDdjMzlhMDgzM2U5MWQ5Zjc5N2RkODYyYWFhYWY0YWYyNjRkCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJTW9uIE1hciAxNyAwODo1NDowNiAyMDA4ICswOTAwCi0KLSAgICBBZGQgRmxleC1PbmVOQU5EIGJvb3Rpbmcgc3VwcG9ydAotCi0gICAgRmxleC1PbmVOQU5EIGlzIGEgbW9ub2xpdGhpYyBpbnRlZ3JhdGVkIGNpcmN1aXQgd2l0aCBhIE5BTkQgRmxhc2ggYXJyYXkKLSAgICB1c2luZyBhIE5PUiBGbGFzaCBpbnRlcmZhY2UuIFRoaXMgb24tY2hpcCBpbnRlZ3JhdGlvbiBlbmFibGVzIHN5c3RlbSBkZXNpZ25lcnMKLSAgICB0byByZWR1Y2UgZXh0ZXJuYWwgc3lzdGVtIGxvZ2ljIGFuZCB1c2UgaGlnaC1kZW5zaXR5IE5BTkQgRmxhc2gKLSAgICBpbiBhcHBsaWNhdGlvbnMgdGhhdCB3b3VsZCBvdGhlcndpc2UgaGF2ZSB0byB1c2UgbW9yZSBOT1IgY29tcG9uZW50cy4KLQotICAgIEZsZXgtT25lTkFORCBlbmFibGVzIHVzZXJzIHRvIGNvbmZpZ3VyZSB0byBwYXJ0aXRpb24gaXQgaW50byBTTEMgYW5kIE1MQyBhcmVhcwotICAgIGluIG1vcmUgZmxleGlibGUgd2F5LiBXaGlsZSBNTEMgYXJlYSBvZiBGbGV4LU9uZU5BTkQgY2FuIGJlIHVzZWQgdG8gc3RvcmUgZGF0YQotICAgIHRoYXQgcmVxdWlyZSBsb3cgcmVsaWFiaWxpdHkgYW5kIGhpZ2ggZGVuc2l0eSwgU0xDIGFyZWEgb2YgRmxleC1PbmVOQU5ECi0gICAgdG8gc3RvcmUgZGF0YSB0aGF0IG5lZWQgaGlnaCByZWxpYWJpbGl0eSBhbmQgaGlnaCBwZXJmb3JtYW5jZS4gRmxleC1PbmVOQU5ECi0gICAgY2FuIGxldCB1c2VycyB0YWtlIGFkdmFudGFnZSBvZiBzdG9yaW5nIHRoZXNlIHR3byBkaWZmZXJlbnQgdHlwZXMgb2YgZGF0YQotICAgIGludG8gb25lIGNoaXAsIHdoaWNoIGlzIG1ha2luZyBGbGV4LU9uZU5BTkQgbW9yZSBjb3N0LSBhbmQgc3BhY2UtZWZmZWN0aXZlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGM1MTIzODljYzRhMTAyNTMyNDkyNzFmZjZjODg3YzZkYWIxZjBkYjIKLUF1dGhvcjogQW5kcsOpIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLURhdGU6CVRodSBNYXIgMTMgMTM6NTA6NTIgMjAwOCArMDEwMAotCi0gICAgTVBDNTIwMDogc3VwcG9ydCBzZXR1cCB3aXRob3V0IEZFQwotCi0gICAgSW5jbHVkZSBGRUMgc3BlY2lmaWMgbm9kZXMgaW4gZnRfY3B1X3NldHVwIG9ubHkgaWYgQ09ORklHX01QQzV4eHhfRkVDIGlzCi0gICAgZGVmaW5lZC4gU3lzdGVtcyB3aXRob3V0IEZFQywgaS5lLiBubyBGRUMgbm9kZSBpbiBEVEIsIHNob3VsZCBiZSBwb3NzaWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJlIFNjaHdhcnogPGFuZHJlLnNjaHdhcnpAbWF0cml4LXZpc2lvbi5kZT4KLSAgICBBY2tlZC1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgYWEzNTExZTQyMjk0NjA0MWVmNjI2ZjgwYTA1YWU1ZThiZmM3MDBlNgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1hciA1IDE4OjA1OjQ2IDIwMDggLTA2MDAKLQotICAgIEZTTDogTW92ZSBib2FyZC9tcGM4MjY2YWRzIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdmMWQ4NDZlNWM1NzU0NDQ5YzI4NjU4N2QwOTlkODUyNDYwNjI3NzIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgNSAxODowNTo0NyAyMDA4IC0wNjAwCi0KLSAgICBGU0w6IE1vdmUgYm9hcmQvbXBjNzQ0OGhwYzIgdW5kZXIgYm9hcmQvZnJlZXNjYWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjdlMjRkMjgzZTM0NzI3YzJhNmNkZmRhYzJlMDlhNDI2YzU3OWI3MwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE1hciA1IDE4OjA1OjQ1IDIwMDggLTA2MDAKLQotICAgIEZTTDogTW92ZSBib2FyZC9tcGM4MjYwYWRzIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZhOGE1ZGM0NzU5ODY3YzQ1YWE5NTU4MGRlYjhiZjI2NjY5YTVkOTcKLUF1dGhvcjogZ29kYS55dXN1a2UgPGdvZGEueXVzdWtlQHJlbmVzYXMuY29tPgotRGF0ZToJV2VkIE1hciA1IDE3OjA4OjMzIDIwMDggKzA5MDAKLQotICAgIG5ldDogQWRkIHN1cHBvcnQgQVg4ODc5NkwgZXRoZXJuZXQgZGV2aWNlCi0KLSAgICBBWDg4Nzk2TCBpcyBkZXZpY2Ugb2YgTkUyMDAwIGNvbXBhdGlibGUuCi0gICAgVGhpcyBwYXRjaCBzdXBwb3J0IEFYODg3OTZMIGV0aGVybmV0IGRldmljZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1c3VrZSBHb2RhIDxnb2RhLnl1c3VrZUByZW5lc2FzLmNvbT4KLSAgICBBY2tlZC1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgZTBhNjE0MGRkMzgxZTFlZWQxYWRhMjI5MTE2NmVmMjYxNmQ4ODIyYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE1hciAyNSAyMjo1MDo0MSAyMDA4ICswMTAwCi0KLSAgICBuZTIwMDAgZHJpdmVyOiBjaGFuZ2UgI2lmZGVmIHRvIE1ha2VmaWxlIGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTcxMDE4NWFhZTkwYzY0ZDM5YzJkNDUzZTQwZTU4Y2VlZmU0ZjI1MAotQXV0aG9yOiBnb2RhLnl1c3VrZSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+Ci1EYXRlOglXZWQgTWFyIDUgMTc6MDg6MjAgMjAwOCArMDkwMAotCi0gICAgbmV0OiBEaXZpZGVkIGNvZGUgb2YgTkUyMDAwIGV0aGVybmV0IGRyaXZlcgotCi0gICAgVGhlcmUgYXJlIG1vcmUgZGV2aWNlcyBvZiB0aGUgTkUyMDAwIGJhc2UuCi0gICAgQSBwcmVzZW50IGNvZGUgaXMgZGlmZmljdWx0IGZvciB1cyB0byBzdXBwb3J0IG1vcmUgZGV2aWNlcy4KLSAgICBUbyBzdXBwb3J0IG1vcmUgTkUyMDAwIGNsb25lIGRldmljZXMsIHNlcGFyYXRlZCB0aGUgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZdXN1a2UgR29kYSA8Z29kYS55dXN1a2VAcmVuZXNhcy5jb20+Ci0gICAgQWNrZWQtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDM5NWJjZTRmNTlhNTA3YTYwYTQ3NWY3ZWU0NmJlZDQ3ZGU5NDgyZGYKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEZlYiAyNCAyMzo1ODoxMyAyMDA4IC0wNTAwCi0KLSAgICBuZXQvQmxhY2tmaW46IG1vdmUgb24tY2hpcCBNQUMgZHJpdmVyIGludG8gZHJpdmVycy9uZXQvCi0KLSAgICBUaGUgQmxhY2tmaW4gb24tY2hpcCBNQUMgZHJpdmVyIHdhcyBiZWluZyBtYW5hZ2VkIGluIHRoZSBCRjUzNy1TVEFNUCBib2FyZAotICAgIGRpcmVjdG9yeSwgYnV0IGl0IGlzIG5vdCBib2FyZCBzcGVjaWZpYywgc28gcmVsb2NhdGUgaXQgdG8gdGhlIGRyaXZlcnMgZGlyCi0gICAgc28gdGhhdCBvdGhlciBCbGFja2ZpbiBwb3J0cyBjYW4gdXRpbGl6ZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDhhMzBiNDcwMDk0MmYzNzQ5NWQyZTY3ZjU5OThjZGZmYjZlM2JhOGEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJU3VuIEZlYiAyNCAyMzo1MjozNSAyMDA4IC0wNTAwCi0KLSAgICBzbWM5MTExMTogdXNlIFNTWU5DKCkgcmF0aGVyIHRoYW4gYXNtKHNzeW5jKSBmb3IgQmxhY2tmaW4KLQotICAgIFNpbmNlIHRoZSAic3N5bmMiIGluc3RydWN0aW9uIG1heSBoYXZlIGhhcmR3YXJlIGFub21hbGllcyBhc3NvY2lhdGVkIHdpdGgKLSAgICBpdCwgaGF2ZSB0aGUgc21jOTExMTEgZHJpdmVyIHVzZSB0aGUgU1NZTkMgbWFjcm8gcmF0aGVyIHRoYW4gaW52b2tpbmcgaXQKLSAgICBkaXJlY3RseS4gIFdlIHdvcmthcm91bmQgYWxsIHRoZSBhbm9tYWxpZXMgdmlhIHRoaXMgbWFjcm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA3N2ZmN2I3NDQ0Y2ViODAyMmI0NjExNGYzZDBiNmQxOGUyZmQxMTM4Ci1BdXRob3I6IEJyeWFuIE8nRG9ub2dodWUgPGJvZG9ub2dodWVAY29kZWhlcm1pdC5pZT4KLURhdGU6CVN1biBGZWIgMTcgMjI6NTc6NDcgMjAwOCArMDAwMAotCi0gICAgOHh4OiBVcGRhdGUgT0Ygc3VwcG9ydCBvbiA4eHgKLQotICAgIFRoaXMgcGF0Y2ggZG9lcyBzb21lIHNoaWZ0aW5nIGFyb3VuZCBvZiBPRiBzdXBwb3J0IG9uIDh4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJyeWFuIE8nRG9ub2dodWUgPGJvZG9ub2dodWVAY29kZWhlcm1pdC5pZT4KLQotY29tbWl0IDljNjY2YTdkYjBiMjI4NWEyNzBjNjg4MTA4ODljZTdkNWRiYTMwNGIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBGZWIgMTUgMTU6MTY6MTggMjAwOCAtMDYwMAotCi0gICAgcHBjOiBBbGxvdyBib2FyZHMgdG8gc3BlY2lmeSBob3cgbXVjaCBtZW1vcnkgdGhleSBjYW4gbWFwCi0KLSAgICBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHdlIGxpbWl0ZWQgdGhlIHN0YWNrIHRvIDI1Nk0gYmVjYXVzZSBzb21lIGJvYXJkcwotICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKLSAgICBtYXBwaW5nIG1vcmUgbWVtb3J5IChmb3IgZXhhbXBsZSA4NXh4IGlzIGNhcGJsZSBvZiBkb2luZyB1cCB0byAyRykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYTZmNWYzMTdjZDA3NGJiYmZhMmFhYjRmY2EwNTkwNGM4MTFjMTlmYgotQXV0aG9yOiBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+Ci1EYXRlOglGcmkgRmViIDE1IDAxOjA1OjU4IDIwMDggKzAwMDAKLQotICAgIDh4eCA6IEFkZCBPRiBzdXBwb3J0IHRvIEFkZGVyODc1IGJvYXJkIHBvcnQgLSByZXN1Ym1pdAotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJ5YW4gTydEb25vZ2h1ZSA8Ym9kb25vZ2h1ZUBjb2RlaGVybWl0LmllPgotCi1jb21taXQgZDA1ODY5OGZkMmQ5Zjc2OWZmMzhhYzUzYzg3MDhiM2ZkZDMxNGYyZAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEZlYiAxNCAyMDo0NDo0MiAyMDA4IC0wNjAwCi0KLSAgICBBZGQgc2V0ZXhwciBjb21tYW5kCi0KLSAgICBBZGQgYSBzaW1wbGUgZXhwciBzdHlsZSBjb21tYW5kIHRoYXQgd2lsbCBzZXQgYW4gZW52IHZhcmlhYmxlIGFzIHRoZSByZXN1bHQKLSAgICBvZiB0aGUgY29tbWFuZC4gIFRoaXMgYWxsb3dzIHVzIHRvIGRvIHNpbXBsZSBtYXRoIGluIHNoZWxsLiAgVGhlIGZvbGxvd2luZwotICAgIG9wZXJhdGlvbnMgYXJlIHN1cHBvcnRlZDogJiwgfCwgXiwgKywgLSwgKiwgLy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzZjEwNWZhYTY0Yjk4MjZlMDg4NzExZmRmY2FhNzBjYjEyMzAzOTdhCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDUgMTc6Mjc6NDggMjAwOCAtMDYwMAotCi0gICAgRlNMOiBNb3ZlIGJvYXJkL21wYzc0NDhocGMyIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ0OWM3MDMzNzRhODg2ODQ1MzQyNWUxNWRhN2UyZjc2MjIxYjcyZTQKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXIgNSAxNzoyMTo0MyAyMDA4IC0wNjAwCi0KLSAgICBGU0w6IE1vdmUgYm9hcmQvbXBjODI2NmFkcyB1bmRlciBib2FyZC9mcmVlc2NhbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1ODYzNTc3OTg5YWQ2ODk0MjdiYjc1MDEwN2U5YTc1ZjFjMTY0NWQyCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDUgMTY6NDE6NDEgMjAwOCAtMDYwMAotCi0gICAgRlNMOiBNb3ZlIGJvYXJkL21wYzgyNjBhZHMgdW5kZXIgYm9hcmQvZnJlZXNjYWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOGE3NzM5ODM5NTdlZTZjNGFhMzQ0NDY5Yjc0MmYyOWM3ZDI2YWZiZAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJVHVlIE1hciAyNSAyMTozMDowOCAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gTW92ZSBndGgyX2NvbmZpZyBmcm9tIEFSTSBzZWN0aW9uIHRvIE1JUFMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCAzNzNiMTZmYzBjNWFlMzRkMjhiOTAyN2Y4MDlhZTNjYmY0NWNkZDE1Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA3IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBFeHRlbmQgTUlQU19NQVhfQ0FDSEVfU0laRSB1cHRvIDY0a0IKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBkOThlMzQ4ZTJlZDVhYWI4ZjdhNjQ3MWZmNjI4YWIwNjg4YjhhNDU5Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA3IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBGaXggZGNhY2hlX3N0YXR1cygpCi0KLSAgICBZb3UgY2FuJ3QganVkZ2UgVU5DQUNIRUQgYnkgQ29uZmlnLkswIExTQi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBiMGM2NmFmNTNlYzkzODVhYzJkMWNjMmU1ZDdkMWVjZGM4MWNhZjM0Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA3IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBJbnRyb2R1Y2UgX21hY2hpbmVfcmVzdGFydAotCi0gICAgSGFuZGxlcyBtYWNoaW5lIHNwZWNpZmljIGZ1bmN0aW9ucyBieSB1c2luZyB3ZWFrIGZ1bmN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBkZWNhYmE2ZjVjZjM4NmQ1NjlhYzM5OTdiZWJiODcxYjk2NmM2YjE4Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA3IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBDbGVhbnVwIENQMCBTdGF0dXMgaW5pdGlhbGl6YXRpb24KLQotICAgIEFkZCBzZXR1cF9jMF9zdGF0dXMgZnJvbSBMaW51eC4gRm9yIHRoZSBtb21lbnQgd2UgZGlzYWJsZSBpbnRlcnJ1cHRzLCBzZXQKLSAgICBDVTAsIG1hcmsgdGhlIGtlcm5lbCBtb2RlLCBhbmQgY2xlYXIgRVJMIGFuZCBFWEwuIFRoaXMgaXMgZ29vZCBlbm91Z2ggZm9yCi0gICAgcmVzZXQtdGltZSBjb25maWd1cmF0aW9uIGFuZCB3aWxsIHdvcmsgd2VsbCBhY3Jvc3MgbW9zdCBwcm9jZXNzb3JzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGQ0M2Q0M2VmMjg0NWFmMzA5YzI1YTY0YmI5YzJjNWZiMzI2MWJjMjMKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDcgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIEluaXRpYWxpemUgQ1AwIENhdXNlIGJlZm9yZSBzZXR0aW5nIHVwIENQMCBTdGF0dXMgcmVnaXN0ZXIKLQotICAgIFdpdGhvdXQgdGhpcyBjaGFuZ2UsIHdlJ2xsIGJlIHN1ZmZlcmluZyBmcm9tIGRlZmZlcmVkIFdBVENIIGV4Y2VwdGlvbgotICAgIG9uY2UgU3RhdHVzLkVYTCBpcyBjbGVhcmVkLiBNYWtlIHN1cmUgQ2F1c2UuV1AgaXMgY2xlYXJlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCAyNjEzODYyMzIzMGNhMmJhZDNjNzhlMDVhNjU1MjdlYTcwYzhiNjg4Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA3IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBJTkNBLUlQOiBNb3ZlIHdhdGNoZG9nIGluaXQgY29kZSBmcm9tIHN0YXJ0LlMgdG8gbG93bGV2ZWxfaW5pdCgpCi0KLSAgICBNb3ZlIHRoaW5ncyB0byBhcHByb3ByaWF0ZSBwbGFjZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBjY2Y4ZjgyNGVmNjdkZjAyOGRlZGIyOWY4ZWE1ZDcxYTVhODhkODk1Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUdWUgTWFyIDI1IDIxOjMwOjA2IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBJbXBsZW1lbnQgZmx1c2hfY2FjaGUoKQotCi0gICAgV2UgZG8gSGl0X1dyaXRlYmFja19JbnZfRCBhbmQgSGl0X0ludmFsaWRhdGVfSS4gWW91IG1pZ2h0IHRoaW5rIHRoYXQgeW91Ci0gICAgZG9uJ3QgbmVlZCB0byBkbyBIaXRfSW52YWxpZGF0ZV9JLCBidXQgZmx1c2hfY2FjaGUoKSBuZWVkcyBpdCBzaW5jZSB0aGlzCi0gICAgZnVuY3Rpb24gaXMgdXNlZCBub3Qgb25seSBpbiBVLUJvb3Qgc3BlY2ZpYyBwcm9ncmFtcyBidXQgYWxzbyBhdCBsb2FkaW5nCi0gICAgdGFyZ2V0IGJpbmFyaWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDJlMGU1MjcxYWFjOTE3ODEyYTc2YzcyMDMwYTJiMmM2ZjFkMzM4N2QKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDYgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIEZpeCBJLS9ELWNhY2hlIGluaXRpYWxpemF0aW9uIGxvb3BzCi0KLSAgICBDdXJyZW50bHkgd2UgZG8gMSkgSW5kZXhfU3RvcmVfVGFnX0ksIDIpIEZpbGwgYW5kIDMpIEluZGV4X1N0b3JlX1RhZ19JCi0gICAgYWdhaW4gcGVyIGEgbG9vcCBmb3IgSS1jYWNoZSBpbml0aWFsaXphdGlvbi4gQnV0IGFjY29yZGluZyB0byAnU2VlIE1JUFMKLSAgICBSdW4nLCB3ZSdyZSBlbmNvdXJhZ2VkIHRvIHVzZSB0aHJlZSBzZXBhcmF0ZSBsb29wcyByYXRoZXIgdGhhbiBjb21iaW5pbmcKLSAgICB0aGVtICpmb3IgYm90aCBJLSBhbmQgRC1jYWNoZSouIFRoaXMgcGF0Y2ggdHJpZXMgdG8gZml4IHRoaXMuCi0KLSAgICBJbiBhY2NvcmRhbmNlIHdpdGggZml4aW5nIGFib3ZlLCBtaXBzX2luaXRfW2lkXWNhY2hlIGFyZSBzZXBhcmF0ZWQgZnJvbQotICAgIG1pcHNfY2FjaGVfcmVzZXQoKSwgYW5kIHJld3JpdGUgY2FjaGUgbG9vcHMgYXJlIGNvbXBsZXRlbHkgcmV3cml0dGVuIHdpdGgKLSAgICB1c2VmdWwgbWFjcm9zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDE4OTg4NDA3OTdjN2Y1MDc5OTM3N2JkNWIyODVhOGE5M2E4MmM0MTkKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVR1ZSBNYXIgMjUgMjE6MzA6MDYgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIFJlcGxhY2UgbWVtb3J5IGNsZWFyYW5jZSBjb2RlIHdpdGggZl9maWxsNjQKLQotICAgIFRoaXMgcm91dGluZSBmaWxscyBtZW1vcnkgd2l0aCB6ZXJvIGJ5IDY0IGJ5dGVzLCBhbmQgaXMgNjQtYml0IGNhcGFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMmY1ZDQxNGNjYjQwMjRkZDA5OTJmZjZiMjI1NjE3MzJkYmM3MzU5MAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJVHVlIE1hciAyNSAyMTozMDowNiAyMDA4ICswOTAwCi0KLSAgICBbTUlQU10gY3B1L21pcHMvY2FjaGUuUzogSW50cm9kdWNlIE5FU1RFRC9MRUFGL0VORCBtYWNyb3MKLQotICAgIFRoaXMgcGF0Y2ggcmVwbGFjZXMgdGhlIGN1cnJlbnQgZnVuY3Rpb24gZGVmaW5pdGlvbnMgd2l0aCBORVNURUQsIExFQUYKLSAgICBhbmQgRU5EIG1hY3JvLiBUaGV5IHNwZWNpZnkgc29tZSBtb3JlIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gYWJvdXQgdGhlCi0gICAgZnVuY3Rpb247IGFuIGFsaWdubWVudCBvZiBzeW1ib2wsIHR5cGUgb2Ygc3ltYm9sLCBzdGFjayBmcmFtZSB1c2FnZSwgZXRjLgotICAgIFRoZXNlIGluZm9ybWF0aW9uIGV4cGxpY2l0bHkgdGVsbHMgdGhlIGFzc2VtYmxlciBhbmQgdGhlIGRlYnVnZ2VyIGFib3V0Ci0gICAgdGhlIHR5cGVzIG9mIGNvZGUgd2Ugd2FudCB0byBnZW5lcmF0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCAyODIyMjNhNjA3YzYxMTQyNWZhMzNmNTQyOGY4ZWFlNjYzNjk3MmJiCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglUdWUgTWFyIDI1IDExOjQzOjE3IDIwMDggKzA5MDAKLQotICAgIFtNSVBTXSBhc20gaGVhZGVycycgdXBkYXRlcwotCi0gICAgTWFrZSBzb21lIGFzbSBoZWFkZXJzIGFkanVzdGVkIHRvIHRoZSBsYXRlc3QgTGludXgga2VybmVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGUxMzkwODAxYTNjMWEyYjZkMTJmYTkwYmUzNjhlZmMxOWY1YjliZmQKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVR1ZSBNYXIgMjUgMTE6Mzk6MjkgMjAwOCArMDkwMAotCi0gICAgW01JUFNdIFJlcXVlc3QgZm9yIHRoZSAnbWlwc19jYWNoZV9sb2NrKCknIHJlbW92YWwKLQotICAgIFRoZSBpbml0aWFsIGludGVuc2lvbiBvZiBoYXZpbmcgbWlwc19jYWNoZV9sb2NrKCkgd2FzIHRvIHVzZSB0aGUgY2FjaGUKLSAgICBhcyBtZW1vcnkgZm9yIHRlbXBvcmFyeSBzdGFjayB1c2Ugc28gdGhhdCBhIEMgZW52aXJvbm1lbnQgY2FuIGJlIHNldCB1cAotICAgIGFzIGVhcmx5IGFzIHBvc3NpYmxlLgotCi0gICAgQnV0IG5vdyBtaXBzX2NhY2hlX2xvY2soKSBmb2xsb3cgbG93bGV2ZWxfaW5pdCgpLiBXZSd2ZSBhbHJlYWR5IGhhdmUgdGhlCi0gICAgcmVhbCBtZW1vcnkgaW5pdGlsYWl6ZWQgYXQgdGhpcyBwb2ludCwgdGhlcmVmb3JlIHdlIGNvdWxkL3Nob3VsZCB1c2UgaXQuCi0gICAgTm8gcmVhc29uIHRvIGxvY2sgYXQgYWxsLgotCi0gICAgT3RoZXIgcHJvYmxlbXM6Ci0KLSAgICBDYWNoZSBsb2NraW5nIGlzIG5vdCBjb25zaXN0ZW50IGFjcm9zcyBNSVBTIGltcGxlbWVudGFpb25zLiBTb21lIGltcGxlLQotICAgIG1lbnRhdGlvbnMgZG9uJ3Qgc3VwcG9ydCBsb2NraW5nIGF0IGFsbC4gVGhlIHN0eWxlIG9mIGxvY2tpbmcgdmFyaWVzIC0KLSAgICBzb21lIHN1cHBvcnQgcGVyIGxpbmUgbG9ja2luZywgb3RoZXJzIHBlciB3YXksIGV0Yy4gU29tZSBwYXJ0cyB1c2UgYml0cwotICAgIGluIHN0YXR1cyByZWdpc3RlcnMgaW5zdGVhZCBvZiBjYWNoZSBvcHMuIEN1cnJlbnQgbWlwc19jYWNoZV9sb2NrKCkgaXMKLSAgICBub3QgbmVjZXNzYXJpbHkgZ2VuZXJhbC1wdXJwb3NlLgotCi0gICAgQW5kIHRoaXMgaXMgd29ydGh5IG9mIHNwZWNpYWwgbWVudGlvbjsgb25jZSBVLUJvb3QvTUlQUyBsb2NrcyB0aGUgbGluZXMsCi0gICAgdGhleSBhcmUgbmV2ZXIgZ2V0IHVubG9ja2VkLCBzbyB0aGUgY29kZSByZWxpZXMgb24gd2hhdGV2ZXIgZ2V0cyBsb2FkZWQKLSAgICBhZnRlciBVLUJvb3QgdG8gcmUtaW5pdGlhbGl6ZSB0aGUgY2FjaGUgYW5kIGNsZWFyIHRoZSBsb2Nrcy4gV2UncmUgc3VwLQotICAgIHBvc2VkIHRvIGhhdmUgQ0ZHX0lOSVRfUkFNX0xPQ0sgYW5kIHVubG9ja19yYW1faW5fY2FjaGUoKSBpbXBsZW1lbnRlZCwKLSAgICBidXQgbGVhdmUgdGhlIHNpdHVhdGlvbiBhcyBpdCBpcyBmb3IgYSBsb25nIHRpbWUuCi0KLSAgICBGb3IgdGhlc2UgcmVhc29ucywgSSBwcm9wb3NlZCB0aGUgcmVtb3ZhbCBvZiBtaXBzX2NhY2hlX2xvY2soKSBmcm9tIHRoZQotICAgIGdsb2JhbCBzdGFydC11cCBjb2RlLgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIENGR19JTklUX1JBTV9MT0NLX01JUFMgdG8gbWFrZSBleGlzdGluZyB1c2VycyBhd2FyZSB0aGF0Ci0gICAgKnRoaW5ncyBoYXZlIGNoYW5nZWQqLiBJZiBoZSB3YW50cyB0aGUgc2FtZSBiZWhhdmlvciBhcyBiZWZvcmUsIGhlIG5lZWRzCi0gICAgdG8gaGF2ZSBDRkdfSU5JVF9SQU1fTE9DS19NSVBTIGluIGhpcyBjb25maWcgZmlsZS4KLQotICAgIElmIHdlIGRvbid0IGhhdmUgYW55IHJlZ3Jlc3Npb24gcmVwb3J0IHRocm91Z2ggc2V2ZXJhbCByZWxlYXNlcywgdGhlbgotICAgIHdlJ2xsIHJlbW92ZSBjb2RlcyBlbnRpcmVseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0gICAgQWNrZWQtYnk6IEFuZHJldyBEeWVyIDxhbWR5ZXJAZ21haWwuY29tPgotCi1jb21taXQgMGQ0ODkyNmM4N2VjOTZmOTc0YTZhYzQwMzRmNGEyZjJlYWIzMjU1ZgotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglNb24gTWFyIDI0IDExOjMwOjU0IDIwMDggKzAxMDAKLQotICAgIGx3bW9uNSBTWVNNT04gUE9TVDogZml4IGJhY2tsaWdodCBjb250cm9sCi0KLSAgICBJZiB0aGUgTFdNT041IGNvbmZpZyBoYXMgU1lTTU9OIFBPU1QgYW1vbmcgQ09ORklHX1BPU1RzIHdoaWNoIG1heSBiZQotICAgIHJ1biBvbiB0aGUgYm9hcmQsIHRoZW4gdGhlIFNZU01PTiBQT1NUIGNvbnRyb2xzIHRoZSBkaXNwbGF5IGJhY2tsaWdodAotICAgIChkb2Vzbid0IHN3aXRjaCBiYWNrbGlnaHQgT04gaWYgUE9TVCBGQUlMRUQsIGFuZCBkb2VzIHN3aXRjaCB0aGUKLSAgICBiYWNrbGlnaHQgT04gaWYgUEFTU0VEKS4KLQotICAgIElmIG5vdCwgdGhlbiB0aGUgdmlkZW8gZHJpdmVyIGNvbnRyb2xzIHRoZSBkaXNwbGF5IGJhY2tsaWdodCAoanVzdAotICAgIHN3aXRjaCBPTiB0aGUgYmFja2xpZ2h0IHVwb24gaW5pdGlhbGl6YXRpb24pLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgZmYyYmRmYjJjMWUwNzNmNjVjMDY1MDExZjFlMThkMGExMzBiZDNkOAotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglNb24gTWFyIDI0IDExOjI5OjE0IDIwMDggKzAxMDAKLQotICAgIGx3bW9uNSBTWVNNT04gUE9TVDogZml4IGhhbmRsaW5nIG9mIG5lZ2F0aXZlIHRlbXBlcmF0dXJlcwotCi0gICAgRml4IGVycm9ycyBpbiB0aGUgTFdNT041IFN5c21vbiBQT1NUIGZvciBuZWdhdGl2ZSB0ZW1wZXJhdHVyZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCA1NTc3NGI1MTJmZGY2M2MwNTE2ZDQ0MWNjNWRhN2M1NGJiZmZiN2YyCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CUZyaSBNYXIgNyAxNjowNDoyNSAyMDA4ICswOTAwCi0KLSAgICBwY2k6IEFkZCBDT05GSUdfUENJX1NLSVBfSE9TVF9CUklER0UgY29uZmlnIG9wdGlvbgotCi0gICAgSW4gY3VycmVudCBzb3VyY2UgY29kZSwgd2hlbiB0aGUgZGV2aWNlIG51bWJlciBvZiBQQ0kgaXMgMCwgcHJvY2VzcyBQQ0kKLSAgICBicmlkZ2Ugd2l0aG91dCBmYWlsLiBIb3dldmVyLCB3aGVuIHRoZSBkZXZpY2UgbnVtYmVyIGlzIDAsIGl0IGlzIG5vdCBQQ0kKLSAgICBhbHdheXMgYnJpZGdlLiBUaGVyZSBhcmUgdGltZXMgd2hlbiBkZXZpY2Ugb2YgUENJIGFsbG9jYXRlcy4KLQotICAgIFdoZW4gQ09ORklHX1BDSV9TS0lQX0hPU1RfQlJJREdFIGlzIGVuYWJsZSwgdGhpcyBwcm9ibGVtIGlzIHNvbHZlZCB3aGVuCi0gICAgdXNlIHRoaXMgcGF0Y2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg2YWVhM2VhZWZhMjQ4ZmZiOTMyOGUyYjUwYzY0NzIwNDg5Y2RiZWIKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotRGF0ZToJRnJpIE1hciAyMSAwOToxODo0MCAyMDA4ICswMTAwCi0KLSAgICBMV01PTjU6IGZpeCBkc1BJQyBQT1NUCi0KLSAgICBBZGQgdGVzdCBmb3IgRFBJQ19TWVNfRVJST1JfUkVHIHRvIGJlIHplcm8gaW4gdGhlIExXTU9ONSBkc1BJQyBQT1NULgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPiAtLS0KLQotY29tbWl0IDM4OGI4MmZkZGM3YzA1NTk2ZjNmNjE1ZjE5MGRhMDQ0ODIyN2RjODIKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBNYXIgMjAgMjM6MjM6MTMgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIEVuYWJsZSBuZXcgdUltYWdlIHN1cHBvcnQgZm9yIHRoZSBwY3M0NDBlcCBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA5NWY0ZWMyYjljOTEwYzcyNjFlNmYwNjBlYTUzMGQ1OGIwMzk2OTJkCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgTWFyIDIwIDIzOjIzOjEzIDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBEbyBub3QgY29tcGlsZSBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0IGJ5IGRlZmF1bHQKLQotICAgIERpc2FibGUgZGVmYXVsdCBidWlsZGluZyBvZiBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0IGluIHByZXBhcmF0aW9uCi0gICAgZm9yIG1lcmdlIHdpdGggdGhlIG1hc3Rlci4gU3VwcG9ydCBmb3IgbmV3IGZvcm1hdCBjYW4gYmUgZW5hYmxlZCBvbgotICAgIGEgcGVyLWJvYXJkIGJhc2lzLCBieSBkZWZpbmluZyB0aGUgZm9sbG93aW5nIGluIHRoZSBib2FyZCdzIGNvbmZpZyBmaWxlOgotCi0gICAgI2RlZmluZSBDT05GSUdfRklUCQkgICAxCi0gICAgI2RlZmluZSBDT05GSUdfT0ZfTElCRkRUCSAgIDEKLQotICAgIFRoaXMgY2FuIGJlIG9wdGlvbmFsbHkgZGVmaW5lZCB0byBnaXZlIG1vcmUgdmVyYm9zZSBvdXRwdXQ6Ci0KLSAgICAjZGVmaW5lIENPTkZJR19GSVRfVkVSQk9TRQkgICAxIC8qIGVuYWJsZSBmaXRfZm9ybWF0X3tlcnJvcix3YXJuaW5nfSgpICovCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZGFmYWVkZThhNDZjNzE1OTMxMDIzOWUwMzZjOTNlMzFjNjM3NDQ4NwotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IE1hciAyMCAyMzoyMDozMSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gRGlzYWJsZSBkZWJ1Z2luZyBvdXRwdXQgaW4gcHJlcGFyYXRpb24gZm9yIG1lcmdlIHdpdGggbWFzdGVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZmJlN2ExNTUwMjdiZWFjZWJhZWU5YjMyZTFhZGE3ODFmZTkyNGJjYQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IE1hciAyMCAxOTozODo0NSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQ29tcGlsYXRpb24gYW5kIG5ldyB1SW1hZ2UgaGFuZGxpbmcgZml4ZXMgZm9yIGlteHRyYWN0Ci0KLSAgICBGaXggaW14dHJhY3QgY29tbWFuZCBub3QgYmVpbmcgY29tcGlsZWQtaW4gZGVzcGl0ZSBDT05GSUdfQ01EX1hJTUcgYmVpbmcgaW4KLSAgICBpbmNsdWRlL2NvbmZpZ19jbWRfZGVmYXVsdC5oLiBGaXggZmV3IHdhcm5pbmdzIGFuZCBoYW5kbGluZyBvZiBuZXcgZm9ybWF0Ci0gICAgaW1hZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDM2Y2M4Y2JiMzM3OWQ1MTY2Zjg4MjY0MTEyMzUyMTczNWM0NjlmOTIKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBNYXIgMjAgMjM6MTA6MTkgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIEZpeCBhdXRvc2NyIGNvbW1hbmQgdXNlZCB3aXRoIG5ldyB1SW1hZ2UgZm9ybWF0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNDMxNDJlODE3ZjA1OTdiZTQxMmU3Y2JlMTk0MTNmNTUzMmVhZmE1ZAotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IE1hciAyMCAyMzoxMDoxOSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gRml4ICouaXRzIGZpbGVzIGxvY2F0aW9uIGluIGRvY3VtZW50YXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA4MWEwYWM2MmVhMjlmODI1MmQwYTcxNDcwOWQwZWNmZGJiYTJhMTVlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDIwIDIyOjAxOjM4IDIwMDggKzAxMDAKLQotICAgIGx3bW9uNSBQT1NUOiByZW1vdmUgdW5yZWFjaGFibGUgY29kZQotCi0gICAgcGx1cyBzb21lIGNvZGluZyBzdHlsZSBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYjczYTE5ZTE2MDlkMGY3MDVjYmFiODAxNGNhMTdhZWZlODllNGM3NgotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgTWFyIDIwIDE3OjU2OjA0IDIwMDggKzAzMDAKLQotICAgIExXTU9ONTogUE9TVCBSVEMgZml4Ci0KLSAgICBNb2RpZnkgdGhlIFJUQyBBUEkgdG8gcHJvdmlkZSBvbmUgYSBzdGF0dXMgZm9yIHRoZSB0aW1lIHJlcG9ydGVkIGJ5Ci0gICAgdGhlIHJ0Y19nZXQoKSBmdW5jdGlvbjoKLSAgICAgIDAgLSBhIHJlbGlhYmxlIHRpbWUgaXMgZ3VhcmFudGVlZCwKLSAgICA8IDAgLSBhIHJlbGlhYmxlIHRpbWUgaXNuJ3QgZ3VhcmFudGVlZCAocG93ZXIgZmF1bHQsIGNsb2NrIGlzc3VlcywKLQkgIGFuZCBzbyBvbikuCi0KLSAgICBUaGUgUlRDIGNoaXAgZHJpdmVycyBhcmUgcmVzcG9uc2libGUgZm9yIHByb3ZpZGluZyB0aGlzIGluZm8gaWYgdGhlCi0gICAgY29ycmVzcG9uZGluZyBjaGlwIHN1cHBvcnRzIHN1Y2ggZnVuY3Rpb25hbGl0eS4gSWYgbm90IC0gYWx3YXlzCi0gICAgcmVwb3J0IHRoYXQgdGhlIHRpbWUgaXMgcmVsaWFibGUuCi0KLSAgICBUaGUgUE9TVCBSVEMgdGVzdCB3YXMgbW9kaWZpZWQgdG8gZGV0ZWN0IHRoZSBSVEMgZmF1bHRzIHV0aWxpemluZwotICAgIHRoaXMgbmV3IHJ0Y19nZXQoKSBmZWF0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgYTVjYzU1NTVjY2VlNTk2OTA4YTdkOGNmMjJhMTA0ZjZiOTkzYmZkNQotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CVdlZCBNYXIgMTkgMTQ6MjU6MTQgMjAwOCArMDEwMAotCi0gICAgVFFNNTIwMEI6IHVwZGF0ZSBNVEQgcGFydGl0aW9uIGxheW91dAotCi0gICAgLSBpbnNlcnQgcGFydGl0aW9uIGZvciBkdGIgYmxvYiB0byBUUU01MjAwQiBNVEQgbGF5b3V0Ci0gICAgLSBzZXQgZW52IHZhcmlhYmxlcyBkZXBlbmRlbnQgb24gdGhlIGNvbmZpZ3VyZWQgYm9hcmQKLSAgICAgIChUUU01MjAwIG9yIFRRTTUyMDBCKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0KLWNvbW1pdCBmMDEwNTcyN2QxMzJmNTZhMjFmYTNlZDhiMTYyMzA5Y2NhNmNhYzQ0Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMTkgMDc6MDk6MjYgMjAwOCArMDEwMAotCi0gICAgQ0ZJOiBTbWFsbCBjbGVhbnVwIGZvciBGTEFTSF9TSE9XX1BST0dSRVNTCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggd2UgZG9uJ3QgbmVlZCB0aGF0IG1hbnkgI2lmZGVmJ3MgaW4gdGhlIGNvZGUuIEl0IG1vdmVzCi0gICAgdGhlIHN1YnRyYWN0aW9uIGludG8gdGhlIG1hY3JvIGFuZCBkZWZpbmVzIGEgTk9QLW1hY3JvIHdoZW4KLSAgICBDT05GSUdfRkxBU0hfU0hPV19QUk9HUkVTUyBpcyBub3QgZGVmaW5lZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDlhMDQyZTljYTUxMmJlYWFhMmNiNDUwMjc0MzEzZmM0NzcxNDEyNDEKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJU2F0IE1hciA4IDEzOjQ4OjAxIDIwMDggLTA1MDAKLQotICAgIEZsYXNoIHByb2dyYW1taW5nIHByb2dyZXNzIGNvdW50ZG93bi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCA1ZTMzOWZkOWVkNTM5YTdkN2ZlYzU5Y2ZjODhmMDg1N2FiMjZhNTNmCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDE5IDEwOjAwOjA2IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBGaXggc3R5bGUgaXNzdWUgc3BvdHRlZCBieSBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54Lm9yZz4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAxMWFiZTQ1YzQ4ZWMzNDg1YTZjMWE1MTY4Y2U4ZDc5YzMyODhhZGMxCi1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJTW9uIEZlYiAxOCAxODowOTowNCAyMDA4ICsxMTAwCi0KLSAgICBsaWJmZHQ6IFJlbW92ZSBubyBsb25nZXIgdXNlZCBjb2RlIGZyb20gZmR0X25vZGVfb2Zmc2V0X2J5X2NvbXBhdGlibGUoKQotCi0gICAgU2luY2UgZmR0X25vZGVfb2Zmc2V0X2J5X2NvbXBhdGlibGUoKSB3YXMgY29udmVydGVkIHRvIHRoZSBuZXcKLSAgICBmZHRfbmV4dF9ub2RlKCkgaXRlcmF0b3IsIGEgY2h1bmsgb2YgaW5pdGlhbGl6YXRpb24gY29kZSBiZWNhbWUKLSAgICByZWR1bmRhbnQsIGJ1dCB3YXMgbm90IHJlbW92ZWQgYnkgb3ZlcnNpZ2h0LiAgVGhpcyBwYXRjaCBjbGVhbnMgaXQgdXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLQotY29tbWl0IGQwY2NiOWIxNDBiNDcyMDM5NzMyZGUxMDJmYzE0NTk3ZWVkYjE0ZGYKLUF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci1EYXRlOglNb24gRmViIDE4IDE4OjA2OjMxIDIwMDggKzExMDAKLQotICAgIGxpYmZkdDogVHJpdmlhbCBjbGVhbnVwIGZvciBDSEVDS19IRUFERVIpCi0KLSAgICBDdXJyZW50bHkgdGhlIENIRUNLX0hFQURFUigpIG1hY3JvIGlzIGRlZmluZWQgbG9jYWwgdG8gZmR0X3JvLmMuCi0gICAgSG93ZXZlciwgdGhlcmUgYXJlIGEgaGFuZGZ1bCBvZiBmdW5jdGlvbnMgKGZkdF9tb3ZlLCByd19jaGVja19oZWFkZXIsCi0gICAgZmR0X29wZW5faW50bykgZnJvbSBvdGhlciBmaWxlcyB3aGljaCBjb3VsZCBhbHNvIHVzZSBpdCAoY3VycmVudGx5Ci0gICAgdGhleSBvcGVuLWNvZGUgc29tZXRoaW5nIG1vcmUtb3ItbGVzcyBpZGVudGljYWwpLiAgVGhlcmVmb3JlLCB0aGlzCi0gICAgcGF0Y2ggbW92ZXMgQ0hFQ0tfSEVBREVSKCkgdG8gbGliZmR0X2ludGVybmFsLmggYW5kIHVzZXMgaXQgaW4gdGhvc2UKLSAgICBwbGFjZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLQotY29tbWl0IGZlMzBhMzU0Y2RiYjgwOGI1ZjE1MzY2YTkzNWIxNTFhNGNjZWU3NGYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBGZWIgMjAgMTQ6MzI6MzYgMjAwOCAtMDYwMAotCi0gICAgRml4IGZkdCBib2FyZHNldHVwIGNvbW1hbmQgcGFyc2luZwotCi0gICAgVGhlIGludHJvZHVjaXRvbiBvZiB0aGUgJ2ZkdCBib290Y3B1JyBicm9rZSBwYXJzaW5nIGZvciAnZmR0IGJvYXJkc2V0dXAnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgwNDg4N2U2MDAxZTJmMDBiZWExMTQzMWJmMzRkNmQ0NzI1MTJjZGEKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBGZWIgMTUgMDM6MzQ6MzYgMjAwOCAtMDYwMAotCi0gICAgQWRkIHN1Yi1jb21tYW5kcyB0byBmZHQKLQotICAgIGZkdCBoZWFkZXIJCQkJLSBEaXNwbGF5IGhlYWRlciBpbmZvCi0gICAgZmR0IGJvb3RjcHUgPGlkPgkJCS0gU2V0IGJvb3QgY3B1aWQKLSAgICBmZHQgbWVtb3J5IDxhZGRyPiA8c2l6ZT4JCS0gQWRkL1VwZGF0ZSBtZW1vcnkgbm9kZQotICAgIGZkdCByc3ZtZW0gcHJpbnQJCQktIFNob3cgY3VycmVudCBtZW0gcmVzZXJ2ZXMKLSAgICBmZHQgcnN2bWVtIGFkZCA8YWRkcj4gPHNpemU+CS0gQWRkIGEgbWVtIHJlc2VydmUKLSAgICBmZHQgcnN2bWVtIGRlbGV0ZSA8aW5kZXg+CQktIERlbGV0ZSBhIG1lbSByZXNlcnZlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGY4NGQ2NWY5YjA4NWZmYmVkNDY0ZDFkNThlOGFhYThmNWEyZWZjMDcKLUF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci1EYXRlOglUaHUgRmViIDE0IDE2OjUwOjM0IDIwMDggKzExMDAKLQotICAgIGxpYmZkdDogRml4IE5PUCBoYW5kbGluZyBidWcgaW4gZmR0X2FkZF9zdWJub2RlX25hbWVsZW4oKQotCi0gICAgZmR0X2FkZF9zdWJub2RlX25hbWVsZW4oKSBoYXMgYSBidWcgaWYgYXNrZWQgdG8gYWRkIGEgc3Vibm9kZSB0byBhCi0gICAgbm9kZSB3aGljaCBoYXMgTk9QIHRhZ3MgaW50ZXJzcGVyc2VkIHdpdGggaXRzIHByb3BlcnRpZXMuICBJbiB0aGlzCi0gICAgY2FzZSBmZHRfYWRkX3N1Ym5vZGVfbmFtZWxlbigpIHdpbGwgcHV0IHRoZSBuZXcgc3Vibm9kZSBiZWZvcmUgdGhlCi0gICAgZmlyc3QgTk9QIHRhZywgZXZlbiBpZiB0aGVyZSBhcmUgcHJvcGVydGllcyBhZnRlciBpdCwgd2hpY2ggd2lsbAotICAgIHJlc3VsdCBpbiBhbiBpbnZhbGlkIGJsb2IuCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBidWcsIGFuZCBhZGRzIGEgdGVzdGNhc2UgZm9yIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0KLWNvbW1pdCBhZTBiNTkwOGRlM2I5ODU1Zjg5MzFiYzliMzJjOWZjNDk2MmRmNWE5Ci1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJVHVlIEZlYiAxMiAxMTo1ODozMSAyMDA4ICsxMTAwCi0KLSAgICBsaWJmZHQ6IEFkZCBhbmQgdXNlIGEgbm9kZSBpdGVyYXRpb24gaGVscGVyIGZ1bmN0aW9uLgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGFuIGZkdF9uZXh0X25vZGUoKSBmdW5jdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0bwotICAgIGl0ZXJhdGUgdGhyb3VnaCBub2RlcyBvZiB0aGUgdHJlZSB3aGlsZSBrZWVwaW5nIHRyYWNrIG9mIGRlcHRoLiAgVGhpcwotICAgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2ltcGxpZnkgdGhlIGl0ZXJhdGlvbiBjb2RlIGluIGEgbG90IG9mIG90aGVyCi0gICAgZnVuY3Rpb25zLCBhbmQgaXMgYWxzbyBleHBvcnRlZCBmb3IgdXNlIGJ5IGxpYnJhcnkgdXNlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLQotY29tbWl0IDllYWViMDdhNzE4NWQ4NTJjN2FhMTA3MzVlY2Q0ZTllZGYyNGZiNWQKLUF1dGhvcjogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci1EYXRlOglGcmkgSmFuIDExIDE0OjU1OjA1IDIwMDggKzExMDAKLQotICAgIGxpYmZkdDogQWRkIGZkdF9zZXRfbmFtZSgpIGZ1bmN0aW9uCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYW4gZmR0X3NldF9uYW1lKCkgZnVuY3Rpb24gdG8gbGliZmR0LCBtaXJyb3JpbmcKLSAgICBmZHRfZ2V0X25hbWUoKS4gIFRoaXMgaXMgYSByL3cgZnVuY3Rpb24gd2hpY2ggYWx0ZXJzIHRoZSBuYW1lIG9mIGEKLSAgICBnaXZlbiBkZXZpY2UgdHJlZSBub2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgR2lic29uIDxkYXZpZEBnaWJzb24uZHJvcGJlYXIuaWQuYXU+Ci0KLWNvbW1pdCAyM2UyMGFhNjQ4OGU2YzA2MjI0OTY1NDk4NjFiZmRjNzQxMDhkZWJlCi1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMTggMTM6MzM6MzAgMjAwOCArMDEwMAotCi0gICAgbHdtb241OiBGaXggcmVnaXN0ZXIgdGVzdCBsb2dpYyB0byBtYXRjaCB0aGUgc3BlY2lmaWMgR0RDIGgvdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDQ2YmMwYTkzODc3OWFhMWQ2NjRiODQ3ZDM2YjA4YWEwMGYyMmU1MzkKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIE1hciAxOCAxMzoyNzo1NyAyMDA4ICswMTAwCi0KLSAgICBGaXggYmFja2xpZ2h0IGluIHRoZSBsd21vbjUgUE9TVC4KLQotICAgIEJhY2tsaWdodCB3YXMgc3dpdGNoZWQgb24gZXZlbiB3aGVuIHRlbXBlcmF0dXJlIHdhcyB0b28gbG93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgM2Q2MTAxODY0M2EyY2QzOGMxNDVhYTZkZGU1M2YzZjVmMWEwZTljZgotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDYgMTg6NDg6MzYgMjAwOCArMDEwMAotCi0gICAgVGhlIHBhdGNoIGludHJvZHVjZXMgdGhlIGFsdGVybmF0aXZlIGNvbmZpZ3VyYXRpb24gb2YgdGhlIGxvZyBidWZmZXIgZm9yIHRoZSBsd21vbjUgYm9hcmQ6IHRoZSBzdG9yYWdlIGZvciB0aGUgbG9nLWJ1ZmZlciBpdHNlbGYgaXMgT0NNKG9uLWNoaXAgbWVtb3J5KSwgdGhlIGxvZy1idWZmZXIgaGVhZGVyIGlzIG1vdmVkIHRvIHNpeCBHUFQgcmVnaXN0ZXJzIChQUEM0NDBFUFhfR1BUMF9DT01QMSwgLi4uLCBQUEM0NDBFUFhfR1BUMF9DT01QNSkuCi0KLSAgICAgVG8gZW5hYmxlIHRoaXMsIGFsdGVybmF0aXZlLCBjb25maWd1cmF0aW9uIHRoZSBVLUJvb3QgYm9hcmQgY29uZmlndXJhdGlvbgotICAgIGZpbGUgZm9yIGx3bW9uNSBpbmNsdWRlcyB0aGUgZGVmaW5pdGlvbnMgb2YgYWx0ZXJuYXRpdmUgYWRkcmVzc2VzIGZvciBoZWFkZXIKLSAgICAoQ09ORklHX0FMVF9MSF9BRERSKSBhbmQgYnVmZmVyIChDT05GSUdfQUxUX0xCX0FERFIpLgotCi0gICAgIFRoZSBMaW51eCBzaGFsbCBiZSBjb25maWd1cmVkIHdpdGggdGhlIENPTkZJR19BTFRfTEJfTE9DQVRJT04gb3B0aW9uIHNldCwKLSAgICBhbmQgaGFzIHRoZSBCT0FSRF9BTFRfTEhfQUREUiBhbmQgQk9BUkRfQUxUX0xCX0FERFIgY29uc3RhbnRzIGRlZmluZWQgaW4gdGhlCi0gICAgbHdtb241IGJvYXJkLXNwZWNpZmljIGhlYWRlciAoYXJjaC9wcGMvcGxhdGZvcm1zLzR4eC9sd21vbjUuaCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCAwZjAwOWY3ODFiNWI4OGYyNTc2OWUxNTRlYTRkNDJkYjEzYmFmMGM2Ci1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgNCAxNzoxMTo1MyAyMDA4ICswMTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIGx3bW9uNSBib2FyZCByZXNldCB2aWEgR1BJTzU4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgZjY5NGUzMmY5MzU2NWVjMWZhOGQwMjI2YzU4NGQ2Yjg5ZTkzMWVkOQotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gRmViIDQgMTc6MDk6NTUgMjAwOCArMDEwMAotCi0gICAgU29tZSBmaXhlcyB0byBkc3BpYywgZnBnYSwgYW5kIGdkYyBwb3N0IHRlc3RzIGZvciBsd21vbjUuIERpc2FibGUgZXh0ZXJuYWwgd2F0Y2gtZG9nIGZvciBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBiNDI4ZjZhOGM2NWM1MzAzZTVmOTZkYjhkMjRmMmY2OTlkOTRhOThjCi1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgNCAxNDoxMTowMyAyMDA4ICswMTAwCi0KLSAgICBUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgQ1JJVElDQUwgZmVhdHVyZSBvZiBQT1NUIHRlc3RzLiBJZiB0aGUgdGVzdCBtYXJrZWQgYXMgUE9TVF9DUklUSUNBTCBmYWlscyB0aGVuIHRoZSBhbHRlcm5hdGl2ZSwgcG9zdF9jcml0aWNhbCwgYm9vdC1jb21tYW5kIGlzIHVzZWQuIElmIHRoaXMgY29tbWFuZCBpcyBub3QgZGVmaW5lZCB0aGVuIFUtQm9vdCBlbnRlcnMgaW50byBpbnRlcmFjdGl2ZSBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgOGYxNWQ0YWRkZDQ5Yzk1NjQxMmUxZTNiZmM3NjRhMGM4YjFmMzE4NAotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gRmViIDQgMTQ6MTA6NDIgMjAwOCArMDEwMAotCi0gICAgVGhlIHBhdGNoIGFkZHMgbmV3IFBPU1QgdGVzdHMgZm9yIHRoZSBMd21vbjUgYm9hcmQuIFRoZXNlIGFyZToKLQotICAgICogRXh0ZXJuYWwgV2F0Y2hkb2cgdGVzdDsKLSAgICAqIGRzUElDIHRlc3RzOwotICAgICogRlBHQSB0ZXN0OwotICAgICogR0RDIHRlc3Q7Ci0gICAgKiBTeXNtb24gdGVzdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBjMmVkMzNlZmJmZmY1NzY3YmNhMjM2ODI4ZTAyMWM1NWZkNTQ3YjZjCi1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgNCAxNDoxMDowMSAyMDA4ICswMTAwCi0KLSAgICBFbmFibGUgQ09ERUMgUE9TVCB3aXRoIENGR19QT1NUX0NPREVDIHJhdGhlciB0aGFuIHdpdGggQ0ZHX1BPU1RfRFNQLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCAzYTVkMWU3ZjEzMDk5OTg3OTE3MDJiMmE1NTllMzEyNjc4MTc0NmI5Ci1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMTggMTM6MzM6MzAgMjAwOCArMDEwMAotCi0gICAgbHdtb241OiBGaXggcmVnaXN0ZXIgdGVzdCBsb2dpYyB0byBtYXRjaCB0aGUgc3BlY2lmaWMgR0RDIGgvdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDBmODU1YTFmMDU2YThjMjIxMTZhMjEwM2EzOTAwY2JmYjY2OWRmMGIKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIE1hciAxOCAxMzoyNzo1NyAyMDA4ICswMTAwCi0KLSAgICBGaXggYmFja2xpZ2h0IGluIHRoZSBsd21vbjUgUE9TVC4KLQotICAgIEJhY2tsaWdodCB3YXMgc3dpdGNlaGQgb24gZXZlbiB3aGVuIHRlbXBlcmF0dXJlIHdhcyB0b28gbG93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgMmQ5OTE5NThiMWU0MjBmYmZlMTdiMTI4YmQyNmFkZTc0YmU1ZWZjYwotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDYgMTg6NDg6MzYgMjAwOCArMDEwMAotCi0gICAgIFRoZSBwYXRjaCBpbnRyb2R1Y2VzIHRoZSBhbHRlcm5hdGl2ZSBjb25maWd1cmF0aW9uIG9mIHRoZSBsb2cgYnVmZmVyIGZvcgotICAgIHRoZSBsd21vbjUgYm9hcmQ6IHRoZSBzdG9yYWdlIGZvciB0aGUgbG9nLWJ1ZmZlciBpdHNlbGYgaXMgT0NNKG9uLWNoaXAgbWVtb3J5KSwKLSAgICB0aGUgbG9nLWJ1ZmZlciBoZWFkZXIgaXMgbW92ZWQgdG8gc2l4IEdQVCByZWdpc3RlcnMgKFBQQzQ0MEVQWF9HUFQwX0NPTVAxLCAuLi4sCi0gICAgUFBDNDQwRVBYX0dQVDBfQ09NUDUpLgotCi0gICAgIFRvIGVuYWJsZSB0aGlzLCBhbHRlcm5hdGl2ZSwgY29uZmlndXJhdGlvbiB0aGUgVS1Cb290IGJvYXJkIGNvbmZpZ3VyYXRpb24KLSAgICBmaWxlIGZvciBsd21vbjUgaW5jbHVkZXMgdGhlIGRlZmluaXRpb25zIG9mIGFsdGVybmF0aXZlIGFkZHJlc3NlcyBmb3IgaGVhZGVyCi0gICAgKENPTkZJR19BTFRfTEhfQUREUikgYW5kIGJ1ZmZlciAoQ09ORklHX0FMVF9MQl9BRERSKS4KLQotICAgICBUaGUgTGludXggc2hhbGwgYmUgY29uZmlndXJlZCB3aXRoIHRoZSBDT05GSUdfQUxUX0xCX0xPQ0FUSU9OIG9wdGlvbiBzZXQsCi0gICAgYW5kIGhhcyB0aGUgQk9BUkRfQUxUX0xIX0FERFIgYW5kIEJPQVJEX0FMVF9MQl9BRERSIGNvbnN0YW50cyBkZWZpbmVkIGluIHRoZQotICAgIGx3bW9uNSBib2FyZC1zcGVjaWZpYyBoZWFkZXIgKGFyY2gvcHBjL3BsYXRmb3Jtcy80eHgvbHdtb241LmgpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgZmY4MThiMjFiMDY5ZjRiYzljYjczMzczY2M1YTE2MDE0YmUxMDFiNwotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gRmViIDQgMTc6MTE6NTMgMjAwOCArMDEwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBsd21vbjUgYm9hcmQgcmVzZXQgdmlhIEdQSU81OC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDYwM2YxOTRlNWFkODFiYjJlZjQyZDZkOGFhYTc0ZGUxNzViY2I0MTEKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJTW9uIEZlYiA0IDE3OjA5OjU1IDIwMDggKzAxMDAKLQotICAgIFNvbWUgZml4ZXMgdG8gZHNwaWMsIGZwZ2EsIGFuZCBnZGMgcG9zdCB0ZXN0cyBmb3IgbHdtb241LgotICAgIERpc2FibGUgZXh0ZXJuYWwgd2F0Y2gtZG9nIGZvciBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci0KLWNvbW1pdCBlMjYyZWZlMzU3NDJjMWFkNGIwOTY2ZmY1MDFlZmMyNmYzNGEwYWVjCi1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBwb2xsdXguZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgNCAxNDoxMTowMyAyMDA4ICswMTAwCi0KLSAgICBUaGUgcGF0Y2ggaW50cm9kdWNlcyB0aGUgQ1JJVElDQUwgZmVhdHVyZSBvZiBQT1NUIHRlc3RzLiBJZiB0aGUgdGVzdAotICAgIG1hcmtlZCBhcyBQT1NUX0NSSVRJQ0FMIGZhaWxzIHRoZW4gdGhlIGFsdGVybmF0aXZlLCBwb3N0X2NyaXRpY2FsLAotICAgIGJvb3QtY29tbWFuZCBpcyB1c2VkLiBJZiB0aGlzIGNvbW1hbmQgaXMgbm90IGRlZmluZWQgdGhlbiBVLUJvb3QKLSAgICBlbnRlcnMgaW50byBpbnRlcmFjdGl2ZSBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IFJha2hjaGV2IDxyZGFAZW1jcmFmdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgNjViMjBkY2VmYzg5NjE4MTkzZmE1MTk0Nzk2OGRhZGE5MWU0Yzc3OAotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gRmViIDQgMTQ6MTA6NDIgMjAwOCArMDEwMAotCi0gICAgVGhlIHBhdGNoIGFkZHMgbmV3IFBPU1QgdGVzdHMgZm9yIHRoZSBMd21vbjUgYm9hcmQuCi0gICAgVGhlc2UgYXJlOgotCi0gICAgKiBFeHRlcm5hbCBXYXRjaGRvZyB0ZXN0OwotICAgICogZHNQSUMgdGVzdHM7Ci0gICAgKiBGUEdBIHRlc3Q7Ci0gICAgKiBHREMgdGVzdDsKLSAgICAqIFN5c21vbiB0ZXN0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDhkYzNiMjMwM2QyYjU3Yzc3NGI2MDljYTBlNzA0M2VkOGY5Yjg4YzEKLUF1dGhvcjogWXVyaSBUaWtob25vdiA8eXVyQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJTW9uIEZlYiA0IDE0OjEwOjAxIDIwMDggKzAxMDAKLQotICAgIEVuYWJsZSBDT0RFQyBQT1NUIHdpdGggQ0ZHX1BPU1RfQ09ERUMgcmF0aGVyIHRoYW4gd2l0aCBDRkdfUE9TVF9EU1AuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEbWl0cnkgUmFraGNoZXYgPHJkYUBlbWNyYWZ0LmNvbT4KLQotY29tbWl0IDM1MTVmZDE4ZDRlOGU0NGY4NjNhYzcxNDJiNTVlMjJiMTA5ZTlhZjIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMTggMTc6MzU6NTEgMjAwOCArMDEwMAotCi0gICAgSE1JMTAwMTogZml4IGNvbXBpbGUgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxZjJhOTk3MDEwOWNlYmY3NDQ2ZTA1MDNiMTBiNzFmODY3MzA0NWVlCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgMTggMDU6MzI6MzAgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IEJGNTM3LXN0YW1wOiBkcm9wIGJvYXJkLXNwZWNpZmljIGZsYXNoIGRyaXZlciBmb3IgQ0ZJCi0KLSAgICBUaGUgcGFyYWxsZWwgZmxhc2ggb24gdGhlIEJGNTM3LVNUQU1QIGlzIENGSSBjb21wbGlhbnQsIHNvIHRoZXJlIGlzIG5vIG5lZWQKLSAgICBmb3IgdGhlIGJvYXJkIHNwZWNpZmljIGRyaXZlciBhdCBhbGwuICBKdXN0IHVzZSB0aGUgY29tbW9uIENGSSBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA1YjIyMTYzZmVmODY1YWYyYjZiZmI2Yjc1ZjFiN2JmNDQzY2UxNzBjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBGZWIgMTkgMDA6MzY6MTQgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IGFkZCBwcm9wZXIgRUxGIG1hcmtpbmdzIHRvIHNvbWUgYXNzZW1ibHkgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBjZjY3NWQzYjJiOWMzNTExYzFkOTliYzhmOGYzOGZkMmYwOGJmY2FmCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVR1ZSBGZWIgMTkgMDA6MzU6MTcgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IG5ldyBjcGxiaW5mbyBjb21tYW5kIGZvciB2aWV3aW5nIGNwbGIgdGFibGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBhYWRiNzI1MDNjZDE2MDIzNDlhNWZlNTMzNTZkNWY1NWVjYzFiOTAwCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgMTggMDU6Mzc6NTEgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IHVwZGF0ZSBNQUlOVEFJTkVSUyBsaXN0Ci0KLSAgICBBZGQgbWFpbnRhaW5lciBpbmZvcm1hdGlvbiBmb3IgdGhlIEJsYWNrZmluIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGY3Y2UxMmNiNjVhMzBjNmUxNTJlZWNmMjZmMDMwNGI3ZDc4Y2YzOWQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiAxOCAwNToyNjo0OCAyMDA4IC0wNTAwCi0KLSAgICBCbGFja2ZpbjogY29udmVydCBCRklOX0NQVSB0byBDT05GSUdfQkZJTl9DUFUKLQotICAgIFN0b3AgdHlpbmcgdGhpbmdzIHRvIHRoZSBwcm9jZXNzb3IgdGhhdCBzaG91bGQgYmUgdGllZCB0byBvdGhlciBkZWZpbmVzIGFuZAotICAgIGNoYW5nZSBCRklOX0NQVSB0byBDT05GSUdfQkZJTl9DUFUgc28gdGhhdCBpdCBjYW4gYmUgdXNlZCBpbiB0aGUgYnVpbGQKLSAgICBzeXN0ZW0gdG8gc2VsZWN0IHRoZSAtbWNwdSBvcHRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4NmEyMGZiOTIwYmQxOTgxMDVhY2Y3YjExOTExMTdmNTY2ZDYzN2VkCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBGZWIgMTYgMDc6NDA6MzYgMjAwOCAtMDUwMAotCi0gICAgQmxhY2tmaW46IG1vdmUgYm9vdGxkciBjb21tYW5kIHRvIGNvbW1vbiBjb2RlCi0KLSAgICBUaGlzIG1vdmVzIHRoZSBCbGFja2Zpbi1jb21tb24gYm9vdGxkciBjb21tYW5kIG91dCBvZiB0aGUgQkY1MzctU1RBTVAKLSAgICBzcGVjaWZpYyBib2FyZCBkaXJlY3RvcnkgYW5kIGludG8gdGhlIGNvbW1vbiBkaXJlY3Rvcnkgc28gdGhhdCBhbGwgQmxhY2tmaW4KLSAgICBib2FyZHMgbWF5IHV0aWxpemUgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBkZWNiZTAyOWIyYTlkMzMzM2QwMmM0MzMzODliMWM4MjFlZWE5NmQ3Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIE1hciAxNCAxMTowNToyMCAyMDA4ICswMTAwCi0KLSAgICBtZ2NvZ2U6IHVwZGF0ZSBjb25maWd1cmF0aW9uCi0KLSAgICBGaXggY29uZmlndXJhdGlvbiBmb3IgbWdjb2dlIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGMxMzY3MjRjZGEwMjE5YzQ5ZjFkNGIzNDZmMDBkYTI5YjE0ZmRmMTQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXIgMTYgMDE6MjI6NTkgMjAwOCArMDEwMAotCi0gICAgZHJpdmVycy9ydGMvTWFrZWZpbGU6IGtlZXAgbGlzdCBzb3J0ZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA5NTM2ZGZjY2UwM2U3YmU0Y2NiY2ViNDdhMDhkOWJhMDdhZGEzNjJmCi1BdXRob3I6IFRvciBLcmlsbCA8dG9yQGV4Y2l0by5jb20+Ci1EYXRlOglTYXQgTWFyIDE1IDE1OjQwOjI2IDIwMDggKzAxMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBJbnRlcnNpbCBpc2wxMjA4IFJUQwotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9yIEtyaWxsIDx0b3JAZXhjaXRvLmNvbT4KLQotY29tbWl0IDAyMTBjZmYzZDA3OWQ5N2IyMTU2YjEzNjg1ZWU4ZGUzNjhlNjhhMWEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBNYXIgMTUgMTc6MzY6NDEgMjAwOCArMDEwMAotCi0gICAgY3JhbWZzOiBGaXggaWZkZWYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwYjhmMmEyNzg2MWE5ZmQwNmViNTVhMzRmODU1ZWM5YzUxMDJhYWI0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDE2IDAxOjEyOjU4IDIwMDggKzAxMDAKLQotICAgIENvbmRpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDQxNzEyYjRlOGM5NWRmZjIzMzU0YmNkNjIwZTFmOTQ3NzE2MGMxOTAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1hciA1IDEyOjMxOjUzIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIFVTQiBPSENJIHN1cHBvcnQgdG8gQU1DQyBDYW55b25sYW5kcyA0NjBFWCBldmFsIGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgVVNCIE9IQ0kgc3VwcG9ydCB0byB0aGUgQ2FueW9ubGFuZHMgYm9hcmQgcG9ydC4gSXQgYWxzbwotICAgIGVuYWJsZXMgRVhUMiBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjU5NmY1YjlkMzUzZmYzZTQzODdhMzMyNWQwNTc0MGYxNjk1ODAzOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDUgMTI6Mjk6MzIgMjAwOCArMDEwMAotCi0gICAgdXNiOiBBZGQgQ0ZHX09IQ0lfVVNFX05QUyB0byBjb21tb24gVVNCLU9IQ0kgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgQ0ZHX09IQ0lfVVNFX05QUyB0byB0aGUgY29tbW9uIFVTQi1PSENJIGRyaXZlci4gVGhpcwotICAgIHdheSBhIGJvYXJkIGp1c3QgbmVlZHMgdG8gZGVmaW5lIHRoaXMgbmV3IG9wdGlvbiB0byBlbmFibGUgdGhlICJmb3JjZQotICAgIE5vUG93ZXJTd2l0Y2hpbmcgbW9kZSIgaW5zdGVhZCBvZiBhZGRpbmcgbmV3IENQVS9hcmNoaXRlY3R1cmUgZGVmaW5lcwotICAgIHRvIHRoZSBVU0Igc291cmNlIGl0c2VsZi4KLQotICAgIFRoaXMgbmV3IG9wdGlvbiB3aWxsIGJlIHVzZWQgZmlyc3Qgd2l0aCB0aGUgbmV3IEFNQ0MgNDYwRVggQ2FueW9ubGFuZHMKLSAgICBib2FyZCBwb3J0LCB3aGljaCB3aWxsIGJlIHBvc3RlZCBpbiBhIGZldyBkYXlzLgotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIGEgc21hbGwgY29tcGlsYXRpb24gcHJvYmxlbSB3aGVuIERFQlVHIGlzIGVuYWJsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3MTY2NWViZjg4NDA4ZmYyYWNiNzYyYWY0Nzk4OWZkNDM2NWIzMjFhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBNYXIgMyAxNzoyNzowMiAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEFkZCBDYW55b25sYW5kcyBOQU5EIGJvb3Rpbmcgc3VwcG9ydAotCi0gICAgNDYwRVggZG9lc24ndCBzdXBwb3J0IGEgZml4ZWQgYm9vdHN0cmFwIG9wdGlvbiB0byBib290IGZyb20gNTEyIGJ5dGUgcGFnZQotICAgIE5BTkQgZGV2aWNlcy4gVGhlIG9ubHkgYm9vdHN0cmFwIG9wdGlvbiBmb3IgTkFORCBib290aW5nIGlzIG9wdGlvbiBGIGZvcgotICAgIDJrIHBhZ2UgZGV2aWNlcy4gU28gdG8gYm9vdCBmcm9tIGEgNTEyIGJ5cGUgcGFnZSBkZXZpY2UsIHRoZSBJMkMgYm9vdHN0cmFwCi0gICAgRUVQUk9NIG5lZWRzIHRvIGJlIHByb2dyYW1tZWQgYWNjb3JkaW5nbHkuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgTkFORCBib290aW5nIHN1cHBvcnQgZm9yIHRoZSBBTUNDIENhbnlvbmxhbmRzIGF2YWwKLSAgICBib2FyZCBhbmQgYWxzbyBhZGRzIHN1cHBvcnQgdG8gdGhlICJib290c3RyYXAiIGNvbW1hbmQsIHRvIGVuYWJsZSBOQU5ECi0gICAgYm9vdGluZyBJMkMgc2V0dGluZy4KLQotICAgIFRlc3RlZCB3aXRoIDUxMiBieXRlIHBhZ2UgTkFORCBkZXZpY2UgKDMyTUJ5dGUpIG9uIENhbnlvbmxhbmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzgxM2YxZjgzNWE3ZWRmZGI5MjlmMjg0M2IwOWRiNzJjZDVjZDJmMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDExIDE2OjUzOjAwIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIEFNQ0MgQ2FueW9ubGFuZHMgc3VwcG9ydCAoNDYwRVgpICgzLzMpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgQ2FueW9ubGFuZHMgNDYwRVggZXZhbHVhdGlvbgotICAgIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjk4M2ZlMjFmNzc0YTkyNGQzYWRiMjYzYTI3MGJjMmYzMDFmMmFhMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDExIDE2OjUyOjI0IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIEFNQ0MgQ2FueW9ubGFuZHMgc3VwcG9ydCAoNDYwRVgpICgyLzMpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgQ2FueW9ubGFuZHMgNDYwRVggZXZhbHVhdGlvbgotICAgIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGUxYTNmZTU0NWJiY2ZjZWFmZTE4MzM0NGViYzlmMWFkMDM4MTljMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDExIDE2OjUxOjE3IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIEFNQ0MgQ2FueW9ubGFuZHMgc3VwcG9ydCAoNDYwRVgpICgxLzMpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgQ2FueW9ubGFuZHMgNDYwRVggZXZhbHVhdGlvbgotICAgIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDNjNjA5OTJjZGY3MjQ5NmU3ZWFhYTNmYmQzN2ViYmU3NTgzNWY2OQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDExIDE1OjExOjQzIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDUvNSkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBzdXBwb3J0IGZvciB0aGUgQU1DQyA0NjBFWC80NjBHVCBQUEMncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZmMmViM2YzZDhlYTJkYmIyMjRkMGRhNWExMjAzODY5M2JhYjk5NDUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE1hciAxMSAxNToxMToxOCAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEFkZCBiYXNpYyBzdXBwb3J0IGZvciBBTUNDIDQ2MEVYLzQ2MEdUICg0LzUpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5OTllY2Q1YWNhMzgxOTg0ZDhlYmJlYjIwN2VjZTgyYTFjMjc1NTc3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMTEgMTU6MDc6MTAgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgQU1DQyA0NjBFWC80NjBHVCAoMy81KQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGJhc2ljIHN1cHBvcnQgZm9yIHRoZSBBTUNDIDQ2MEVYLzQ2MEdUIFBQQydzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjgwMWIyZDJhOTkwNmYyMDZhYjllZThkMGI2ZTc0NmQyYjdmZTA1YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDExIDE1OjA1OjUwIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIGJhc2ljIHN1cHBvcnQgZm9yIEFNQ0MgNDYwRVgvNDYwR1QgKDIvNSkKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBiYXNpYyBzdXBwb3J0IGZvciB0aGUgQU1DQyA0NjBFWC80NjBHVCBQUEMncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDhhYzQxZTNlMzdjMzA4MGM2YjFkOTQ2MWQ2NTQxNjFjZmUyYWE0OTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE1hciAxMSAxNTowNToyNiAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEFkZCBiYXNpYyBzdXBwb3J0IGZvciBBTUNDIDQ2MEVYLzQ2MEdUICgxLzUpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgNDYwRVgvNDYwR1QgUFBDJ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1NmU0MTAxNzgzNzVkOWYyMGJlMjVmYjI0ZTE4MDk3NGYwYWUxMjBiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMTkgMjI6MDc6NTcgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBpbnRlcnJ1cHQuYyByZXdvcmtlZAotCi0gICAgVGhpcyBwYXRjaCBpcyBhIHJld29yayBvZiB0aGUgNHh4IGludGVycnVwdCBoYW5kbGluZyBkb25lIHdoaWxlCi0gICAgYWRkaW5nIHRoZSA0NjBFWC9HVCBzdXBwb3J0LiBJbnRlcnJ1cHRzIGFyZSBuZWVkZWQgb24gNHh4IGZvciB0aGUKLSAgICBFTUFDIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg0YTk5OWI2Y2RkMGIwMmRjN2RlMmNhY2MzMDZlYWE4NGFmZTJiNDYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAxOSAyMjowMTo1NyAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IHByb2dyYW1fdGxiIG5vdyB1c2VzIDY0Yml0IHBoeXNpY2FsIGFkZGVzcwotCi0gICAgVGhpcyBwYXRjaCBjaGFuZ2VzIHRoZSBwaHlzaWNhbCBhZGRlc3MgcGFyYW1ldGVyIGZyb20gMzJiaXQgdG8gNjRiaXQuCi0gICAgVGhpcyBpcyBuZWVkZWQgZm9yIDM2Yml0IDR4eCBwbGF0Zm9ybXMgdG8gYWNjZXNzIGFyZWFzIGxvY2F0ZWQKLSAgICBiZXlvbmQgdGhlIDRHQiBib3JkZXIsIGxpa2UgU29DIHBlcmlwaGVyYWxzIChFQkMgZXRjLikuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjMzMwN2ZhMTg2YWY4NTc3MTkyNGM0MzQ5OTcwODliODEwNGMwYTQ2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMTkgMjE6NTg6MjUgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBtaWlwaHkuYyByZXdvcmtlZAotCi0gICAgV2hpbGUgYWRkaW5nIHRoZSA0NjBFWC9HVCBzdXBwb3J0IEkgcmV3b3JrZWQgdGhlIDR4eCBtaWlwaHkgY29kZS4gSXQKLSAgICBiYWRseSBuZWVkZSBzb21lIGNsZWFudXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4OGFmZjYyZGYzOWMwNzU2MjQxZWE5ZjliNWE3YjNhZGUyNmNiODJiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMTkgMTY6MjE6NDkgMjAwOCArMDEwMAotCi0gICAgcnRjOiBBZGQgTTQxVDYyIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSBTVE0gTTQxVDYyIFJUQy4gSXQgaXMgdXNlZCBhbmQgdGVzdGVkCi0gICAgb24gdGhlIEFNQ0MgQ2FueW9ubGFuZHMgNDA2RVggcGxhdGZvcm0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyMTdkMzgzZTIwMWFkYzdmMjI3MTE0NWFlMzQ1ZWE1ZWFlMmI3MTcwCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglNb24gRmViIDI1IDE4OjQ2OjQzIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIDQwNUdQciBiYXNlZCBNQ1UyNSBib2FyZCBzcGVjaWZpYyBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDc1YTY2ZGNkYjM4Mzg2M2FkMzNmMDUzNGNmYzI3YjdhODY5NDdkYWQKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLURhdGU6CU1vbiBGZWIgMjUgMTg6NDY6NDIgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgNDA1R1ByIGJhc2VkIE1DVTI1IGJvYXJkIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgYjA1ZjM1NDM2YjczM2EyNDA1NTllNzdlNDZiZWQ4NDM5NjY1ZWNjNQotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotRGF0ZToJTW9uIEZlYiAyNSAxODo0Njo0MSAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEFkZCA0MDVHUHIgYmFzZWQgTUNVMjUgYm9hcmQuIEdsb2JhbCBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDE0YzI3YjM1YWM4MTJhNzFhYmNlNmUzZTJmNDEyOWQ1ZTkzMTM2NjAKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLURhdGU6CU1vbiBGZWIgMjUgMTg6Mzc6MDIgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBIQ1U0LzUuIHJlbW92ZSBvYnNvbGV0ZSBoY3VfZmxhc2guYwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IGEwNzk0OTQ4NTNjYzJiZmVkZGIyNjY3MzIxOWRiMGI0YjJiMzE1NjYKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLURhdGU6CU1vbiBGZWIgMjUgMTg6Mzc6MDEgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBIQ1U0LzUuIFVzZSBGTEFTSF9DRklfTEVHQUNZCi0KLSAgICBDbGVhbnVwOiBSZW1vdmUgY3VzdG9tIGZsYXNoIGRyaXZlciBmb3IgOCBiaXQgYm9vdC1lcHJvbSBhbmQgcmVwbGFjZSBpdCB3aXRoCi0gICAgdGhlIEZMQVNIX0NGSV9MRUdBQ1kgZXQgYWwuIGNvbmZpZyBvcHRpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IGU0MTcwZTVhNTBjODExMGY3OTJiYzM3NDcyODMzYWU2NjlkNjk5NTEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE1hciAxMSAxMzo1MjoyNSAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBjb21tZW50IGluIDQwNUVYIEREUjIgaW5pdCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3NjY1MjlmY2NjODYwZWNiOWU5NTViNDIzOWRmZjY5Y2Q5ZTRlYTA5Ci1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgTWFyIDE0IDE2OjIyOjM0IDIwMDggKzAxMDAKLQotICAgIEFkZCBNRDUgc3VwcG9ydCB0byB0aGUgbmV3IHVJbWFnZSBmb3JtYXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAwZWRlMGMzODM1MzBhNDE4Y2Y5OGJlOTEyMjM3MWE4NjU3M2NkMGRiCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgTWFyIDE0IDE2OjIyOjM0IDIwMDggKzAxMDAKLQotICAgIEFkZCB0aGUgTUQ1IGFsZ29yaXRobQotCi0gICAgTUQ1IHN1cG9wcnQgaXMgdHVybmVkIG9uIGJ5IGRlZmluaW5nIENPTkZJR19NRDUsIHRoZSBkaWdlc3QgY2FuIGJlIHRoZW4KLSAgICBjYWxjdWxhdGVkIHVzaW5nIHRoZSBtZDUoKSBmdW5jdGlvbiAtLSBzZWUgaW5jbHVkZS9tZDUuaCBmb3IgZGV0YWlscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBiOGFhNTdiNWQ0ZDY5ZThmMDgxMGE1ZTYzMmMwY2U0MWMwZjQ2ZWUwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgTWFyIDE0IDE2OjA0OjU0IDIwMDggKzAxMDAKLQotICAgIHRvb2xzL3NldGxvY2FsdmVyc2lvbjogdXNlIGEgZ2l0LWRlc2NyaWJlLWlzaCBmb3JtYXQKLQotICAgIENoYW5nZSB0aGUgYXV0b21hdGljIGxvY2FsIHZlcnNpb24gdG8gaGF2ZSB0aGUgZm9ybSAtbm5ubm4tZ1NIQTFTVU1JRCwKLSAgICB3aGVyZSAnbm5ubm4nIGlzIHRoZSBudW1iZXIgb2YgY29tbWl0cyBzaW5jZSB0aGUgbGFzdCB0YWcgKGkuZS4sCi0gICAgMS4zLjItcmMzKS4gIFRoaXMgbWFrZXMgaXQgbXVjaCBlYXNpZXIgdG8gcmVjb2duaXplICJuZXdlciIgdmVyc2lvbnMKLSAgICBhbmQgdG8gc2VlIGhvdyBtdWNoIGhhcyBiZWVuIGNoYW5nZWQgc2luY2UgdGhlIHJlZmVyZW5jZWQgdGFnLgotCi0gICAgU3RvbGVuIGZyb20gTGludXgga2VybmVsJ3Mgc2NyaXB0cy9zZXRsb2NhbHZlcnNpbywgc2VlIGNvbW1pdCBkODgyNDIxZi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjNmRjMjFjODRkZTBmMTU5YTE3NTJjNWViZDMzY2ZmODQzZjYzNjA5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDEzIDE0OjMyOjAzIDIwMDggKzAxMDAKLQotICAgIEhNSTEwMDE6IGFkZCBzdXBwb3J0IGZvciBNUEM1MjAwIFJldi4gQiBwcm9jZXNzb3JzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDkwZjEzZGNlN2E3YTlhODRkNTczMDU3NmM5YTI0ZDBkYmIwN2NiM2EKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBNYXIgMTMgMTQ6Mjk6NDkgMjAwOCArMDEwMAotCi0gICAgVFFNNTIwMDogcmVtb3ZlIGRlYWQgY29kZQotCi0gICAgVGhpcyBib2FyZCBuZXZlciB1c2VkIGEgTUdUNTEwMCBwcm9jZXNzb3IuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYWZlNDVjODdlM2M1ZDc3YmFkNzZiMWE1N2RjY2QyMDc2NGQ0NWI1ZAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMjoxNDoxNSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gRml4IGJ1aWxkIGlzc3VlIG9uIEFSTQotCi0gICAgQVJNIHBsYXRmb3JtcyBkb24ndCBoYXZlIGEgYmQtPmJpX21lbXNpemUgc28gdXNlIGJkLT5iaV9kcmFtWzBdLnNpemUgaW5zdGVhZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzMzEwYzU0OWE3M2E5NDk0MzBiZmRhOTA4NzZkZjc1NTJhMWRhYjBjCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDEyIDEyOjEzOjEzIDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgZG9jdW1lbnRhdGlvbiBhbmQgZXhhbXBsZXMKLQotICAgIENyZWF0ZSBkb2MvdUltYWdlLkZJVCBkb2N1bWVudGF0aW9uIGRpcmVjdG9yeSB3aXRoIHRoZSBmb2xsb3dpbmcgZmlsZXM6Ci0gICAgLSBjb21tYW5kX3N5bnRheF9leHRlbnNpb25zLnR4dCA6IGV4dGVuZGVkIGNvbW1hbmQgc3ludGF4IGRlc2NyaXB0aW9uCi0gICAgLSBob3d0by50eHQJCQkgICAgOiBzaG9ydCB1c2FnZSBob3d0bwotICAgIC0gc291cmNlX2ZpbGVfZm9ybWF0LnR4dAkgICAgOiBpbnRlcm5hbCBuZXcgdUltYWdlIGZvcm1hdCBkZXNjcmlwdGlvbgotCi0gICAgQWRkIGV4YW1wbGUgaW1hZ2Ugc291cmNlIGZpbGVzOgotICAgIC0ga2VybmVsLml0cwotICAgIC0ga2VybmVsX2ZkdC5pdHMKLSAgICAtIG11bHRpLml0cwotCi0gICAgVXBkYXRlIFJFQURNRSBhcHByb3ByaWF0ZWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMWVjNzM3NjFkMmUyNDcwNzhmNDUyMGEyNjVkNDYzZThiNzMzOTFhMgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMDozNTo1MiAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gRml4IGRlZmluaXRpb24gb2YgY29tbW9uIGJvb3RtX2hlYWRlcnNfdCBmaWVsZHMKLQotICAgIHZlcmlmeSwgYXV0b3N0YXJ0IGFuZCBsbWIgZmllbGRzIGFyZSB1c2VkIHJlZ2FyZGxlc3Mgb2YgQ09ORklHX0ZJVAotICAgIHNldHRpbmcsIG1vdmUgdGhlaXIgZGVmaW5pdGlvbnMgdG8gY29tbW9uIHNlY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMWQxY2I0MjcwZWRjNmE5OTI3NjgzNDA2NDA2OTcxN2Y5NzgyYzQ5MQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMDozNTo1MSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gRml4IGJ1aWxkIHByb2JsZW1zIG9uIHRyYWIgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBmNzczYmVhOGUxMWY0YTExYzM4OGRjZWU5NTZiMjQ0NDIwM2U2YjY1Ci1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDEyIDEwOjM1OjQ2IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgcHJvcGVyIHJhbWRpc2svRkRUIGhhbmRsaW5nIHdoZW4gRklUIGNvbmZpZ3VyYXRpb24gaXMgdXNlZAotCi0gICAgU2F2ZSBGSVQgY29uZmlndXJhdGlvbiBwcm92aWVkIGluIHRoZSBmaXJzdCBib290bSBhcmd1bWVudCBhbmQgdXNlIGl0Ci0gICAgd2hlbiB0byBnZXQgcmFtZGlzay9GRFQgc3ViaW1hZ2VzIHdoZW4gc2Vjb25kIGFuZCB0aGlyZCAocmFtZGlzay9GRFQpCi0gICAgYXJndW1lbnRzIGFyZSBub3Qgc3BlY2lmaWVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDI2ODJjZThhNDIyNWYyM2Q3MmJiN2ZlZDA2OWU5MjhkZDM5ZDM0YWUKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBNYXIgMTIgMTA6MzM6MDEgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIE1vcmUgdmVyYm9zZSBrZXJuZWwgaW1hZ2UgdW5jb21wcmVzcyBlcnJvciBtZXNzYWdlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMTM3MmNjZTJiOTA0MGZiNjQwZTUwMzJiODRlM2EwMzNhMjJkNmZmMAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMDozMzowMSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gVXNlIHNob3dfYm9vdF9wcm9ncmVzcygpIGZvciBuZXcgdUltYWdlIGZvcm1hdAotCi0gICAgVGhpcyBwYXRjaCBhbGxvY2F0ZXMgYSBzZXQgb2Ygc2hvd19ib290X3Byb2dyZXNzKCkgSURzIGZvciBuZXcgdUltYWdlIGZvcm1hdAotICAgIGFuZCBhZGRzIHNob3dfYm9vdF9wcm9ncmVzcygpIGNhbGxzIGluIG5ldyB1SW1hZ2UgZm9ybWF0IGhhbmRsaW5nIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYzI4YzRkMTkzZGJmYjIwYjJkZDNhNTQ0NzY0MGZkNmRlN2ZkMDcyMAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMDozMzowMSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZnJvbWF0IHN1cHBvcnQgdG8gZnBnYSBjb21tYW5kCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMDk0NzVmNzUyNzQ2MGU0MjZjMGUwNjI4ZmM1YjhmMzc1NGZiYWEyMwotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMDozMzowMSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IGhhbmRsaW5nIHRvIG90aGVyIGJvb3RtIHJlbGF0ZWQgY29tbWFuZHMKLQotICAgIFVwZGF0ZWQgY29tbWFuZHM6Ci0KLSAgICBkb2Nib290ICAtIGNtZF9kb2MuYwotICAgIGZkY2Jvb3QgIC0gY21kX2ZkYy5jCi0gICAgZGlza2Jvb3QgLSBjbWRfaWRlLmMKLSAgICBuYm9vdCAgICAtIGNtZF9uYW5kLmMKLSAgICBzY3NpYm9vdCAtIGNtZF9zY3NpLmMKLSAgICB1c2Jib290ICAtIGNtZF91c2IuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDFiNzg5N2YyOGQ0OWE4MGQ3OGQ3NjBlYzZmNmYxMWRjMGY5MTQzMzgKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBNYXIgMTIgMTA6MzM6MDAgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIEFkZCBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0IHRvIGltZ2V4dHJhY3QgY29tbWFuZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDQyNGM0YWJkZDE3NWQyYzQ3MDUxMGRmOGNlMGUzMmQzZjQ2M2VjMTYKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBNYXIgMTIgMTA6MzM6MDAgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIEFkZCBuZXcgdUltYWdlIGZvcm1hdCBzdXBwb3J0IHRvIGF1dG9zY3JpcHQgcm91dGluZQotCi0gICAgYXV0b3NjcmlwdCgpIHJvdXRpbmUgaXMgdXBkYXRlZCB0byBhY2NlcHQgc2Vjb25kIGFyZ3VtZW50LCB3aGljaAotICAgIGlzIG9ubHkgdXNlZCBmb3IgRklUIGltYWdlcyBhbmQgcHJvdmlkZXMgYSBGSVQgc3ViaW1hZ2UgdW5pdCBuYW1lLgotCi0gICAgYXV0b3NjcmlwdCgpIHJvdXRpbmUgY2FsbGVycyBtdXN0IG5vdyBwYXNzIHR3byBhcmd1bWVudHMuIEZvcgotICAgIG5vbi1pbnRlcmFjdGl2ZSB1c2UgKGxpa2UgaW4gY21kX2xvYWQuYywgY21kX25ldC5jKSwgbmV3IGVudmlyb25tZW50Ci0gICAgdmFyaWFibGUgJ2F1dG9zY3JpcHRfdW5hbWUnIGlzIGludHJvZHVjZWQgYW5kIHVzZWQgYXMgYSBGSVQKLSAgICBzdWJpbWFnZSB1bml0IG5hbWUgc291cmNlLgotCi0gICAgYXV0b3NjcmlwdCBjb21tYW5kIGFjY2VwdHMgZXh0ZW5kZWQgc3ludGF4IG9mIHRoZSBhZGRyIGFyZ3VtZW50OgotICAgIGFkZHI6PHN1YmltZ191bmFtZT4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBjZDdjNTk2ZTlmNTYxZGJiYzE3YjcxNzI3NzQzOGFlZTc4Y2RlMTRmCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDEyIDEwOjMzOjAwIDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCB0byBhcmNoIHNwZWNpZmljIGRvX2Jvb3RtX2xpbnV4KCkgcm91dGluZXMKLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb25zIG9mCi0gICAgZG9fYm9vdG1fbGludXgoKSBhZGRpbmcgbmV3IHVJbWFnZSBmb3JtYXQgaGFuZGxpbmcgZm9yCi0gICAgb3BlcmF0aW9ucyBsaWtlIGdldCBrZXJuZWwgZW50cnkgcG9pbnQgYWRkcmVzcywgZ2V0IGtlcm5lbAotICAgIGltYWdlIGRhdGEgc3RhcnQgYWRkcmVzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAzZGZlMTEwMTQ5MzExNDI1OTE5ZTZkNmExNGI1NjFiNDIwNzQ5OGYxCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDEyIDEwOjMyOjU5IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgbm9kZSBvZmZzZXRzIGZvciBGSVQgaW1hZ2VzIGxpc3RlZCBpbiBzdHJ1Y3QgYm9vdG1faGVhZGVycwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIG5ldyBub2RlIG9mZnNldCBmaWVsZHMgdG8gc3RydWN0IGJvb3RtX2hlYWRlcnMKLSAgICBhbmQgdXBkYXRlcyBib290bV9oZWFkZXJzIHByb2Nlc3NpbmcgY29kZSB0byBtYWtlIHVzZSBvZiB0aGVtLgotICAgIFNhdmVkIG5vZGUgb2Zmc2V0cyBhbGxvdyB0byBhdm9pZCByZXBlYXRpbmcgZml0X2ltYWdlX2dldF9ub2RlKCkgY2FsbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYmM4ZWQ0ODZiMTI1NDUyYmEzYmQ4MzQ0ZjA1MmY0MzczMjkxNTBjNQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMDozMjo1MyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gcHBjOiBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCB0byBGRFQgaGFuZGxpbmcgcm91dGluZXMKLQotICAgIFN1cHBvcnQgZm9yIG5ldyAoRklUKSBmb3JtYXQgdUltYWdlcyBpcyBhZGRlZCB0byBwb3dlcnBjIHNwZWNpZmljCi0gICAgYm9vdF9nZXRfZmR0KCkgcm91dGluZSB3aGljaCBub3cgcmVjb2duaXplcywgc2FuaXR5IGNoZWNrcyBGSVQgaW1hZ2UKLSAgICBhbmQgaXMgYWJsZSB0byBhY2Nlc3MgZGF0YSBzZWN0aW9ucyBvZiB0aGUgcmVxdWVzdGVkIGNvbXBvbmVudCBpbWFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBhNDRhMjY5YTkwNWY5MjRiNDIwMDIwNTA2YTRkN2Q3ZWVkY2MwZWFmCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDEyIDEwOjE0OjU3IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBSZS1lbmFibGUgaW50ZXJydXB0cyBmb3Igbm9uIGF1dG9tYXRpYyBib290aW5nCi0KLSAgICBSZS1lbmFibGUgaW50ZXJydXB0cyBpZiB3ZSByZXR1cm4gZnJvbSBkb19ib290bV88b3M+IGFuZCAnYXV0b3N0YXJ0JwotICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGlzIG5vdCBzZXQgdG8gJ3llcycuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZDk4NWM4NDk4YzRlNDcwOTU4MjBkYTk3YWE3MjIzODFkMzkxNzJjNQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE1hciAxMiAxMDoxNDozOCAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gUmVtb3ZlIHVubmVjZXNzYXJ5IGFyZ3VtZW50cyBwYXNzZWQgdG8gcmFtZGlzayByb3V0aW5lcwotCi0gICAgYm9vdF9nZXRfcmFtZGlzaygpIGFuZCBpbWFnZV9nZXRfcmFtZGlzaygpIGRvIG5vdCBuZWVkIGFsbAotICAgIGNtZHRwLCBmbGFnLCBhcmdjIGFuZCBhcmd2IGFyZ3VtZW50cy4gU2ltcGxpZnkgcm91dGluZXMgZGVmaW5pdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBjODc3OTY0ODNiYzdjMjkwMDQ3MGRjNzQ3YzM2N2Y2MDI1Nzc2MDhkCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDEyIDEwOjEyOjM3IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBmb3IgcmFtZGlzayBoYW5kbGluZwotCi0gICAgVGhpcyBwYXRjaCB1cGRhdGVzIGJvb3RfZ2V0X3JhbWRpc2soKSByb3V0aW5lIGFkZGluZyBmb3JtYXQKLSAgICB2ZXJpZmljYXRpb24gYW5kIGhhbmRsaW5nIGZvciBuZXcgKEZJVCkgdUltYWdlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA2OTg2YTM4NTY3MTc0OWVjYjNmNjBjZjk5ZTljYmFlOGU0N2JiNTBlCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTWFyIDEyIDEwOjAxOjA1IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCBmb3Iga2VybmVsIGJvb3RpbmcKLQotICAgIE5ldyBmb3JtYXQgdUltYWdlcyBhcmUgcmVjb2duaXplZCBieSB0aGUgYm9vdG0gY29tbWFuZCwKLSAgICB2YWxpZGl0eSBvZiBzcGVjaWZpZWQga2VybmVsIGNvbXBvbmVudCBpbWFnZSBpcyBjaGVja2VkIGFuZAotICAgIGl0cyBkYXRhIHNlY3Rpb24gbG9jYXRlZCBhbmQgdXNlZCBmb3IgZnVydGhlciBwcm9jZXNzaW5nCi0gICAgKHVuY29tcHJlc3MsIGxvYWQsIGV0Yy4pCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZTMyZmVhNmFkYjYyMGVjZjJiZDcwYWNmMmRkMzdlNTNkZjlkMTU0NwotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIE1hciAxMSAxMjozNToyMCAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIG5ldyB1SW1hZ2UgZm9ybWF0IHN1cHBvcnQgZm9yIGltbHMgYW5kIGltaW5mbyBjb21tYW5kcwotCi0gICAgaW1scyBhbmQgaW1pbmZvIGNhbiBub3cgcmVjb2duaXplIG5hZCBwcmludCBvdXQgY29udGVudHMgb2YgdGhlIG5ldyAoRklUKQotICAgIGZvcm1hdCB1SW1hZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDlkMjU0MzhmZTdkNzBjZjM1YThhMjkzZWE1ZTM5MmZlZmM2NzI2MTMKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBNYXIgMTEgMTI6MzQ6NDcgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIEFkZCBzdXBwb3J0IGZvciBuZXcgdUltYWdlIGZvcm1hdCB0byBta2ltYWdlIHRvb2wKLQotICAgIFN1cHBvcnQgZm9yIHRoZSBuZXcgdUltYWdlIGZvcm1hdCAoRklUKSBpcyBhZGRlZCB0byBta2ltYWdlIHRvb2wuCi0gICAgQ29tbWFuZGxpbmUgc3ludGF4IGlzIGFwcHJvcHJpYXRlbHkgZXh0ZW5kZWQ6Ci0KLSAgICBta2ltYWdlIFstRCBkdGNfb3B0aW9uc10gLWYgZml0LWltYWdlLml0cyBmaXQtaW1hZ2UKLQotICAgIG1raW1hZ2UgKHRvZ2V0aGVyIHdpdGggZHRjKSB0YWtlcyBmaXQtaW1hZ2UuaXRzIGFuZCByZWZlcmVuY2VkIHRoZXJlaW4KLSAgICBiaW5hcmllcyAobGlrZSB2bWxpbnV4LmJpbi5neikgYXMgaW5wdXRzLCBhbmQgcHJvZHVjZXMgZml0LWltYWdlIGZpbGUgLS0gdGhlCi0gICAgZmluYWwgaW1hZ2UgdGhhdCBjYW4gYmUgdHJhbnNmZXJyZWQgdG8gdGhlIHRhcmdldCAoZS5nLiwgdmlhIHRmdHApIGFuZCB0aGVuCi0gICAgYm9vdGVkIHVzaW5nIHRoZSBib290bSBjb21tYW5kIGluIFUtQm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBlYjYxNzVlZGQ2YzEyMGQ4Yjg5Njc4MjQzZTVhMmJlMzYyZWU4ZTQwCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglNb24gTWFyIDEwIDE3OjUzOjQ5IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBNYWtlIG5vZGUgdW5pdCBuYW1lcyBjb25zdCBpbiBzdHJ1Y3QgYm9vdG1faGVhZGVycwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDVkZmI1MjEzODY4OGNjYmYwMTQ2ZjYyNjgzZmU2MjE3YjNjZTFiMDUKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBGZWIgMjkgMjE6MjQ6MDYgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIE5ldyB1SW1hZ2UgbG93LWxldmVsIEFQSQotCi0gICAgQWRkIEZEVC1iYXNlZCBmdW5jdGlvbnMgZm9yIGhhbmRsaW5nIG5ldyBmb3JtYXQgY29tcG9uZW50IGltYWdlcywKLSAgICBjb25maWd1cmF0aW9ucywgbm9kZSBvcGVyYXRpb25zLCBwcm9wZXJ0eSBnZXQvc2V0LCBldGMuCi0KLSAgICBmaXRfCS0gcm91dGluZXMgaGFuZGxpbmcgZ2xvYmFsIG5ldyBmb3JtYXQgdUltYWdlIG9wZXJhdGlvbnMKLQkJICBsaWtlIGdldC9zZXQgdG9wIGxldmVsIHByb3BlcnR5LCBwcm9jZXNzIGFsbCBub2RlcywgZXRjLgotICAgIGZpdF9pbWFnZV8JLSByb3V0aW5lcyBoYW5kbGluZyBjb21wb25lbnQgaW1hZ2VzIHN1Ym5vZGVzCi0gICAgZml0X2NvbmZfCS0gcm91dGluZXMgaGFuZGxpbmcgY29uZmlndXJhdGlvbnMgbm9kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMzBmMTgwNmY2MDk3OGQ3MDdiMGNmZjJkN2JmODlkMTQxZmMyNDI5MAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIE1hciA5IDE2OjIwOjAyIDIwMDggKzAxMDAKLQotICAgIFJlbGVhc2UgdjEuMy4yCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HIGZvciByZWxlYXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDViNDY0YzI4OWJhNzE1ZDA5NzliNmUxZjk0OTQ3YmI4ZjEwNjhkMTYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgOSAxNDo1MjoxMSAyMDA4ICswMTAwCi0KLSAgICBTQ006IGZpeCAncGFja2VkJyBhdHRyaWJ1dGUgaWdub3JlZCBmb3IgZmllbGQgb2YgdHlwZSAnY2FuX21zZ190JyB3YXJuaW5ncwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZGI2OTViNzg1MTVkZGI4OGEyZDRmMzM1N2MxMjAzNDVlZmJmNTllYwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE1hciA5IDEwOjQ0OjAxIDIwMDggKzAxMDAKLQotICAgIHNjYjkzMjg6IEZpeCBmbGFzaCB3YXJuaW5nOiB0eXBlIHF1YWxpZmllcnMgaWdub3JlZCBvbiBmdW5jdGlvbiByZXR1cm4gdHlwZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDJiM2U3ZTYxZDZhNzJmMTZhZWU5M2Y4NzBiYzZhZjY3ZjMwNzU4YzQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXIgOSAxMDo1MDo0MSAyMDA4ICswMTAwCi0KLSAgICBlc2QvY29tbW9uL2ZwZ2EuYzogZml4IGluZGVudGF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGNjMzg0M2UzNjQ1M2UyYjhkYjY1ZDdlNTZkZTkzOGJhMDQ1MDE2YTAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXIgOSAxMDozMzozMSAyMDA4ICswMTAwCi0KLSAgICBjb21tb24va2dkYi5jOiBmaXggJ2RlcmVmZXJlbmNpbmcgdHlwZS1wdW5uZWQgcG9pbnRlcicgd2FybmluZwotCi0gICAgYW5kIGdldCByaWQgb2YgYSBjb3VwbGUgb2YgdW5uZWVkZWQgY2FzdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOGQ0ZjRhODM4ZDdkYzdjZjRkZTE3ZTNlOWE2N2UyZjIyMmI2YTFjOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIE1hciA5IDEwOjA5OjUzIDIwMDggKzAxMDAKLQotICAgIGVzZC9jb21tb24vZnBnYS5jOiBmaXggJ2Fzc2lnbm1lbnQgb2YgcmVhZC1vbmx5IGxvY2F0aW9uJyBlcnJvcgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGM2ZmU0ZGFiYWMwNjZlODc1ODM0NWQyNDkwMzI3Njg0OTY5ODNhM2UKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXIgOSAwMjoxMzoxOSAyMDA4ICswMTAwCi0KLSAgICBNYWtlZmlsZTogbWFrZSBidWlsZCBzaWxlbnRseSBhZ2Fpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA3NmJhYmM4NjU3NmYwOTI1NzM1OTkzMzRjODVlYzU0M2ZkYmM2MDE1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDkgMDI6MDc6NDkgMjAwOCArMDEwMAotCi0gICAgbTUwMXNrOiBGaXggb3V0IG9mIHRyZWUgYnVpbGRpbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyMTBlZDIwMDRlMDYyZmRkMDNmMjVhYjQ5MjU5OThhYTFiZDA4YTA3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDkgMDA6MDY6MDkgMjAwOCArMDEwMAotCi0gICAgQURTNTEyMTogZml4IG91dCBvZiB0cmVlIGJ1aWxkCi0KLSAgICBhbmQgc2ltcGxpZnkgTWFrZWZpbGUgYSBiaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNDZjYjUwNzRhM2Y3NGRlNjRlYmQ5N2RkMGM0ZWM3ZWIzZDc2OGI5MwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1hciA4IDIyOjM1OjMxIDIwMDggKzAxMDAKLQotICAgIFJlbGVhc2UgdjEuMy4yCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNzhhOTBmODI3ZGY3NDUyMGU5MzljNzk0ZmM3NDEzZGFjZTIxYzRkYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1hciA4IDIyOjM1OjA0IDIwMDggKzAxMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1OGYzYzU3YzYwMDhiNDJlMDFmNTUxZDNiZTZlZmQ4OGMxNGFjODdmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTWFyIDggMjE6MzA6MDQgMjAwOCArMDEwMAotCi0gICAgZXNkOiBGaXggd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICdmcGdhX2Jvb3QnIGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZDc1NDY5ZDQ4YzA1Nzk1MTQ0ZjRiOGJhNzZhZGRiYjQ5MjBhN2JiYQotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglTYXQgTWFyIDggMDk6MjU6NDkgMjAwOCArMDkwMAotCi0gICAgbmV0OiBydGw4MTY5OiBBZGQgcHJvY2Vzc2luZyB3aGVuIE9XTmJpdCBkaWQndCBlbmFibGUgaW4gcnRsX3JlY3YoKQotCi0gICAgV2hlbiBydGxfcmVjdigpIG9mIHJ0bDgxNjkgaXMgY2FsbGVkLCBPV05iaXQgb2Ygc3RhdHVzIHJlZ2lzdGVyCi0gICAgaXMgbm90IGVuYWJsZSBvY2Nhc2lvbmFsbHkuCi0gICAgcnRsX3JlY3YoKSBkb2Vzbid0IHdvcmsgbm9ybWFsbHkgd2hlbiB0aGUgZHJpdmVyIGRvZXNuJ3QgZG8KLSAgICBhcHByb3ByaWF0ZSBwcm9jZXNzaW5nLgotICAgIFRoaXMgcGF0Y2ggZml4IHRoaXMgcHJvYmxlbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDgyYWZhYmZlYjhhZTZhMjdjN2IzOTYwMTFlYTk5ZjQ3MTJhYTczZmEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglGcmkgTWFyIDcgMDg6MTU6MjggMjAwOCArMDEwMAotCi0gICAgbWdzdXZkOiB1cGRhdGUgYm9hcmQgY29uZmlndXJhdGlvbgotCi0gICAgaW5pdGlhbGl6ZSB0aGUgVVBJT3ggY29udHJvbGxlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgZTQ5MmM5MGMyNjIxNWU0NTlhZWMwZmRmMGY4ZWYxZmQyMDQ5ODhmNQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBNYXIgNyAwODoxMzo0MSAyMDA4ICswMTAwCi0KLSAgICBtZ2NvZ2U6IHVwZGF0ZSBib2FyZCBjb25maWd1cmF0aW9uCi0KLSAgICBhZGQgc3VwcG9ydCBmb3IgdGhlIGNvbmZpZyBGbGFzaC4KLSAgICBpbml0aWFsaXplIHRoZSBVUElPeCBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAyNzBmZTI2MWI3ZjkyOTI4MDBiMmIzZDFiZjE5YWU3Y2JjODgwMjU4Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTWFyIDcgMTI6Mjc6MzEgMjAwOCAtMDYwMAotCi0gICAgbXBjODN4eDogbWFrZSBkdGIgYmFzZW5hbWUgZmlsZSByZWZlcmVuY2VzIGVxdWFsIHRob3NlIG9mIGxpbnV4Ci0KLSAgICB0aGUgZHRzIGZpbGUgYmFzZW5hbWVzIHdlcmUgdXBkYXRlZCBpbiBsaW51eCAtIHRoaXMgaGVscHMgYXZvaWQKLSAgICBpbmFkdmVydGVudGx5IGxvYWRpbmcgYW55IG9sZCBkdGJzIGxheWluZyBhcm91bmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjMwYjYxNTRmMTZmNWZmYTRhOWY1YmZjYTVlMTE0ZDcyYjZlZjY3NQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAyNyAxNjowODoyMiAyMDA4IC0wNjAwCi0KLSAgICBuZXQ6IHVlY19waHk6IGFjdHVhbGx5IGluY3JlbWVudCB0aGUgdGltZW91dCBjb3VudGVyCi0KLSAgICBhbGxvdyB1LWJvb3QgdG8gcmVjb3ZlciAoYW5kLCBlLmcuLCBzd2l0Y2ggdG8gYW5vdGhlciBpbnRlcmZhY2UpIGluIHRoZQotICAgIGNhc2Ugd2hlcmUgYSBQSFkgZG9lcyBub3QgcmVwb3J0IGF1dG9uZWdvdGlhdGlvbiBpcyBjb21wbGV0ZSB3aXRoaW4gaXRzCi0gICAgdHdvIHNlY29uZCB0aW1lb3V0IHZhbHVlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc3MjAwM2U0Mzk1N2VlMGM4OTVhYmVkN2NkODJjYmU3MjgyMGNiYjgKLUF1dGhvcjogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdvb2dsZW1haWwuY29tPgotRGF0ZToJV2VkIE1hciA1IDIxOjM4OjEyIDIwMDggKzAxMDAKLQotICAgIGZpeCB0YWlodSBzb2Z0IHNwaV9yZWFkCi0KLSAgICBUaGUgdGFpaHUgYm9hcmQgdXNlZCBncGlvX3JlYWRfb3V0X2JpdCB3aGljaCByZWFkcyB0aGUgb3V0cHV0IHJlZ2lzdGVyIGFuZCBub3QKLSAgICB0aGUgcGluIHN0YXRlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEJydW5uZXIgPHN1cGVyLmZpcmV0d2lzdGVyQGdtYWlsLmNvbT4KLQotY29tbWl0IGZjODRhODQ5NWFjNzUwZjZiNGFkYWU4MWY4YzRmMTAwZjY1YjYzNDAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIE1hciA3IDA4OjAxOjQzIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogU2VxdW9pYTogQWRkIGRldmljZSB0cmVlIChmZHQpIExpbnV4IGJvb3RpbmcgZGVmYXVsdCBlbnYgdmFyaWFibGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiZDQ0NThjYjQ3YWJlY2FiZDQwNmIxMjEwNDU3YmU5NmM2OWZjNDlkCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBNYXIgNCAxNjo1OToyMiAyMDA4ICswODAwCi0KLSAgICA4Mzd4RU1EUzogSW1wcm92ZSB0aGUgc3lzdGVtIHBlcmZvcm1hbmNlCi0KLSAgICAxLiBNYWtlIHRoZSBDU0IgYnVzIHBpcGVsaW5lIGRlcHRoIGFzIDQsIGFuZCBlbmFibGUKLSAgICAgICB0aGUgcmVwZWF0IG1vZGU7Ci0gICAgMi4gUmFpc2UgdGhlIGVUU0VDIGVtZXJnZW5jeSBwcmlvcml0eTsKLSAgICAzLiBVc2UgdGhlIGhpZ2hlc3QgSVAgYmxvY2tzIGNsb2NrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ4YWI1OGIyMTI0ODFiMWM1Nzk0N2VhMjFhYTk2YzRjZTgwMGQwYjQKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDYgMTY6NDU6NTMgMjAwOCArMDEwMAotCi0gICAgUmVwbGFjZSAicnVuIGxvYWQ7IHJ1biB1cGRhdGUiIHdpdGggY29uZGl0aW9uYWxpemVkICJydW4gbG9hZCB1cGRhdGUiLgotCi0gICAgVGhlIGxhdHRlciB2ZXJzaW9uIHN0b3BzIHdoZW4gInJ1biBsb2FkIiBmYWlscyBmb3Igd2hhdGV2ZXIgcmVhc29ucwotICAgIHJlbmRlcmluZyB0aGUgY29tYmluYXRpb24gKmEgbG90KiBtb3JlIHNlY3VyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgNmJjMTEzODg2ZDdkMzE2ZGYxYTRlNDU5YmVjOGJhZjAyNzUxODU1MQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDQgMTc6NDA6NDEgMjAwOCArMDEwMAotCi0gICAgbmV0OiBQcmludCBlcnJvciBtZXNzYWdlIHVwb24gbmV0IHVzYWdlIHdoZW4gbm8gZXRoZXJuZXQtaW50ZXJmYWNlIGlzIGZvdW5kCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBzZWVuIG9uIFBQQzR4eCBib2FyZHMsIHdoZW4gbm8gTUFDIGFkZHJlc3MgaXMKLSAgICBkZWZpbmVkLiBUaGVuIG5vIGV0aGVybmV0IGludGVyZmFjZSBpcyBhdmFpbGFibGUgYnV0IGEgc2ltcGxlICJ0ZnRwIgotICAgIGNvbW1hbmQgd2lsbCByZXR1cm4gd2l0aG91dCBhbnkgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyBxdWl0ZSBjb25mdXNpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhMzBhNTQ5YTM1NTMwMzJkODA5ZTAzNTYzMDZiNjJkZTBiMTI1OTAxCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWFyIDQgMTA6MDM6MDMgMjAwOCAtMDYwMAotCi0gICAgUmVtb3ZlIGVycm9uZW91cyBvciBleHRyYSBzcGQuaCAjaW5jbHVkZXJzLgotCi0gICAgTWFueSBvZiB0aGUgc3BkLmggI2luY2x1ZGVycyBkb24ndCBuZWVkIGl0LAotICAgIGFuZCB3YW50ZWQgdG8gaGF2ZSBzcGRfc2RyYW0oKSBkZWNsYXJlZCBpbnN0ZWFkLgotICAgIFNpbmNlIHRoZXkgZGlkbid0IGdldCB0aGF0LCBzb21lIGFsc28gaGFkIG9wZW4KLSAgICBjb2RlZCBleHRlcm4gZGVjbGFyYXRpb25zIG9mIGl0IGluc3RlYWQgb3IgYXMgd2VsbC4KLSAgICBGaXggaXQgYWxsIHVwIGJ5IHVzaW5nIHNwZF9zZHJhbS5oIHdoZXJlIG5lZWRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhNDQ3NTM4NmNlZjE0YWYzZmQ4OGYwNTE4YjY4OGU3NTU2Njk0ODZkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDQgMTc6NDE6MjggMjAwOCArMDEwMAotCi0gICAgUENTNDQwRVA6IGZpeCBidWlsZCBwcm9ibGVtcyAocmVkdW5kYW50ICNkZWZpbmUpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTg1ZTJmYTg1ZWMwOWE2ZmFjMjg0NmQxZDg4MWQ4NzM3ZTJiYmRhOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDQgMTc6Mzk6MjUgMjAwOCArMDEwMAotCi0gICAgbmV0OiBQcmludCBlcnJvciBtZXNzYWdlIHVwb24gbmV0IHVzYWdlIHdoZW4gbm8gZXRoZXJuZXQtaW50ZXJmYWNlIGlzIGZvdW5kCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIGEgcHJvYmxlbSBzZWVuIG9uIFBQQzR4eCBib2FyZHMsIHdoZW4gbm8gTUFDIGFkZHJlc3MgaXMKLSAgICBkZWZpbmVkLiBUaGVuIG5vIGV0aGVybmV0IGludGVyZmFjZSBpcyBhdmFpbGFibGUgYnV0IGEgc2ltcGxlICJ0ZnRwIgotICAgIGNvbW1hbmQgd2lsbCByZXR1cm4gd2l0aG91dCBhbnkgZXJyb3IgbWVzc2FnZSB3aGljaCBpcyBxdWl0ZSBjb25mdXNpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzODRmYWFhZmI5OTljYWUzY2U0NDdjOTNlMjhhMGI3ZTJlNWZlZjUzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDQgMTc6Mzg6NTAgMjAwOCArMDEwMAotCi0gICAgVzdPTE1DL1c3T0xNRzogZml4IGJ1aWxkIHByb2JsZW1zIChyZWR1bmRhbnQgI2RlZmluZSkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmOTMwMWUxY2RhMjk2MjQ1YmEwNTJkN2IwODMyMTE5OWMzZDBhZjlkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDQgMTQ6NTg6MzEgMjAwOCArMDEwMAotCi0gICAgTWFrZWZpbGU6IGZpeCBwcm9ibGVtIHdpdGggb3V0LW9mLXRyZWUgYnVpbGRzIGludHJvZHVjZWQgYnkgNTAxM2MwOWYKLQotICAgIENvbW1pdCA1MDEzYzA5ZiAoTWFrZWZpbGU6IGNsZWFudXAgImNsZWFuIiB0YXJnZXQpIGludHJvZHVjZWQgYQotICAgIHByb2JsZW0gZm9yIG91dC1vZi10cmVlIGJ1aWxkcyB3aGljaCBjYXVzZWQgIm1ha2UgY2xlYW4iIHRvIGZhaWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZGZlY2U5NTAwNTU2YmVkNWQ4MjQ0YjFjMTVkOTczY2VjN2MyNWJmZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE1hciA0IDExOjU4OjI2IDIwMDggKzAxMDAKLQotICAgIGV4YW1wbGVzL01ha2VmaWxlOiBidWlsZCAiaGVsbG9fd29ybGQiIG9uIDh4eCwgdG9vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDc0ZWIwMjIyNTk0ZmQyM2FhZmRmMTY4ZTYwZTg3MjgxNGVlYThiNjIKLUF1dGhvcjogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+Ci1EYXRlOglNb24gTWFyIDMgMTU6Mjc6MDUgMjAwOCAtMDUwMAotCi0gICAgUFBDNHh4IChTZXF1b2lhKTogRml4IEV0aGVybmV0ICJyZW1vdGUgZmF1bHQiIHByb2JsZW1zCi0KLSAgICBFdmVyeSBub3cgYW5kIHRoZW4gYSBTZXF1b2lhIGJvYXJkIChvciBlcXVpdmFsZW50IGhhcmR3YXJlKSBoYWQKLSAgICBwcm9ibGVtcyBjb25uZWN0aW5nIHRvIGEgR2lnYWJpdCBjYXBhYmxlIG5ldHdvcmsgaW50ZXJmYWNlLgotCi0gICAgVGhlcmUgd2VyZSBkaWZmZXJlbmNlcyBpbiB0aGUgUEhZIHNldHVwIGJldHdlZW4gTGludXggYW5kIFUtQm9vdC4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uIEFwcGFyZW50bHkgInJlbW90ZSBmYXVsdCIgaXMgYmVpbmcgc2V0LAotICAgIHdoaWNoIHNpZ25hbHMgdG8gc29tZSBkZXZpY2VzIChvbiB0aGUgb3RoZXIgZW5kIG9mIHRoZSBjYWJsZSkgdGhhdCBhCi0gICAgZmF1bHQgaGFzIG9jY3VycmVkLCB3aGlsZSBvdGhlciBkZXZpY2VzIGlnbm9yZSBpdC4gSSBiZWxpZXZlIHRoZSBSRiBiaXQKLSAgICB3YXMgY2F1c2luZyB0aGUgaXNzdWUsIGJ1dCBJIHJlbW92ZWQgVDQgYWxzbywgdG8gbWF0Y2ggdXAgd2l0aCBMaW51eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgTnVzcyA8bWlrZUB0ZXJhc2NhbGEuY29tPgotCi1jb21taXQgNDkxZmI2ZGVhOWY1MmZkYjljYjU5OTZlOGU5NzhiOWU5Njg1MTc5ZgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1hciAzIDA5OjU4OjUyIDIwMDggLTA2MDAKLQotICAgIGZpeCBRRSBmaXJtd2FyZSB1cGxvYWRpbmcgbGltaXQKLQotICAgIEZpeCBhIHR5cG8gaW4gcWVfdXBsb2FkX2Zpcm13YXJlKCkgdGhhdCBwcmV2ZW50ZWQgdXBsb2FkaW5nIGZpcm13YXJlIG9uCi0gICAgc3lzdGVtcyB3aXRoIG1vcmUgdGhhbiBvbmUgUklTQyBjb3JlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQyYmE1OGUwYzMwMmIzMzlhM2MyZmFhNjAwNmEwMTNjNmYxODZiN2EKLUF1dGhvcjogQmVybmhhcmQgTmVtZWMgPGJuZW1lY0BnYW5zc2xvc2VyLmNvbT4KLURhdGU6CU1vbiBNYXIgMyAxMTo1NzoyMyAyMDA4ICswMDAwCi0KLSAgICBGaXggZW5kaWFuZXNzIHByb2JsZW0gaW4gY3JhbWZzIGNvZGUgKGNyYW1mcyBpcyBhbHdheXMgaG9zdC1lbmRpYW4gaW4gTGludXgpCi0KLSAgICBPcmlnaW5hbGx5IHBvaW50ZWQgb3V0IGJ5IExhdXJlbnQgUGluY2hhcnQgPGxhdXJlbnQucGluY2hhcnRAdGJveC5iaXo+LAotICAgIHNlZSBodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLmJvb3QtbG9hZGVycy51LWJvb3QvMjI4NDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlcm5oYXJkIE5lbWVjIDxibmVtZWMgPGF0PiBnYW5zc2xvc2VyLmNvbT4KLQotY29tbWl0IDg0ZDBjMmYxZTM5Y2FmZjU4YmY3NjVhN2FiN2M3MmRhMjNjMjVlYzgKLUF1dGhvcjogS2ltIEIuIEhlaW5vIDxLaW0uSGVpbm9AYmx1ZWdpZ2EuY29tPgotRGF0ZToJTW9uIE1hciAzIDEwOjM5OjEzIDIwMDggKzAyMDAKLQotICAgIGZpeCBjb3B5IGZyb20gcmFtIHRvIGRhdGFmbGFzaAotCi0gICAgSWYgSSB0cnkgdG8gImNwLmIgPHJhbT4gPGRhdGFmbGFzaD4iLCB1LWJvb3Qgc2VsZWN0cyBub3JtYWwgZmxhc2gKLSAgICByb3V0aW5lcyBpbnN0ZWFkIG9mIGRhdGFmbGFzaC4gVGhpcyBpcyBiZWNhdXNlIGl0IGNoZWNrcyAiaWYgc291cmNlCi0gICAgYWRkcmVzcyBpcyBub3QgZGF0YWZsYXNoIiBpbnN0ZWFkIG9mIHRhcmdldCBhZGRyZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIEIuIEhlaW5vIDxLaW0uSGVpbm9AYmx1ZWdpZ2EuY29tPgotCi1jb21taXQgMzJiZjNkMTQzYTg4OGY4ZGVhY2ZkY2M5N2U4OThmNmMwNmQwYWVhNAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIE1hciAzIDEyOjE2OjQ0IDIwMDggKzAxMDAKLQotICAgIEZpeCBxdW90aW5nIHByb2JsZW0gKHByZWJvb3Qgc2V0dGluZykgaW4gbWFueSBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNWIwYjJiNmZjOWZlMjJlMzg2NGMyYTU3MzE2ZDkxYTI1MDdlYzIxNQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIE1hciAzIDEyOjM2OjQ5IDIwMDggKzAxMDAKLQotICAgIEFEUzUxMjE6IEZpeCBkZWZhdWx0IGVudmlyb25tZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDkxYzgyMDc2YWU0OTJiYjFmOWQ5YzQ3YTQ4MTMxNDYzMWQzMmRjOGUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBNYXIgMiAxNjoxMjozMSAyMDA4ICswMTAwCi0KLSAgICBNYWtlZmlsZTogRml4IG1pc3NpbmcgdW5jb25maWcgYW5kIG1rY29uZmlnIHVzZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDhjZTRlNWMyYzAyY2I3ZThhZGRkZjdiNjUxZDMwNTBkODFjZTRjMWQKLUF1dGhvcjogbWljaGFlbCA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci1EYXRlOglTdW4gTWFyIDIgMjM6MzM6NDYgMjAwOCArMDEwMAotCi0gICAgRml4IGNoZWNraW5nIGZhdDMyIGNsdXN0ZXIgc2l6ZS4KLQotICAgIFRoaXMgZml4ZXMgdGhlIGNsdXN0ZXIgc2l6ZSB0ZXN0cyBpbiB0aGUgRkFUMzIgZmlsZSBzeXN0ZW0uCi0gICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgVkZBVCBzdXBwb3J0IGRvZXNuJ3Qgd29yayBpZiB0aGUKLSAgICByZWZlcnJlZCBjbHVzdGVyIGhhcyBhbiBvZmZzZXQgPiAxNmJpdCByZXByZXNlbnRhdGlvbiwgY2F1c2luZwotICAgICJmYXRsb2FkIiBhbmQgImZhdGxzIiBjb21tYW5kcyBldGMuIHRvIGZhaWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBtaWNoYWVsIHRyaW1hcmNoaSA8dHJpbWFyY2hpQGdhbmRhbGYuc3NzdXAuaXQ+Ci0KLWNvbW1pdCA2NjFiYWQ2M2EwNzZhOTZjMzljNjRmMTM2OTE1ZjE0NjcyNWFmOTJiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTWFyIDIgMjI6NTc6MjMgMjAwOCArMDEwMAotCi0gICAgUHJlcGFyZSB2MS4zLjItcmMyIHJlbGVhc2UgY2FuZGlkYXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNzY5NTdjYjNkNjIxYmY2NjQzMTE5MDhlNTk2MmUxNTFjNjMzYzI4NQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWFyIDEgMTI6MTE6NDAgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBFTUFDOiBGaXggNDA1RVogZmlmbyBzaXplIHNldHVwIGluIEVNQUNfTVIxCi0KLSAgICBUaGUgNDA1RVogb25seSBzdXBwb3J0cyA1MTIgYnl0ZXMgb2YgcngtL3R4LWZpZm8gRU1BQyBzaXplcy4gQnV0Ci0gICAgY3VycmVudGx5IDRrLzJrIGlzIGNvbmZpZ3VyZWQuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZS4KLQotICAgIFRoYW5rcyB0byBUaG9tYXMgS2luZGxlciA8dGtpbmRsZXJAbGVub3JkLmRlPiBmb3IgcG9pbnRpbmcgdGhpcyBvdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMTg5NzhjOGViNDM4MDNlMjc5NDIzMzkyMmRmNDI0OWZhMjc4YjgzCi1BdXRob3I6IFdvb2RydWZmLCBSaWNoYXJkIDxyLXdvb2RydWZmMkB0aS5jb20+Ci1EYXRlOglGcmkgRmViIDI5IDE3OjM0OjM1IDIwMDggLTA2MDAKLQotICAgIEZpeCBhbGlnbm1lbnQgZXJyb3Igb24gQVJNIGZvciBtb2R1bGVzCi0KLSAgICBGaXggYWxpZ25tZW50IGZhdWx0IG9uIEFSTSB3aGVuIHJ1bm5pbmcgbW9kdWxlcy4gIFdpdGggb3V0IGFuIGV4cGxpY2l0Ci0gICAgbGlua2VyIGZpbGUgZ2NjNC4yLjEgd2lsbCBoYWxmIHdvcmQgYWxpZ24gX19ic3Nfc3RhcnQncyB2YWx1ZS4gIFRoZSB3b3JkCi0gICAgZGVyZWZlcmVuY2Ugd2lsbCBjcmFzaCBoZWxsb193b3JsZC4KLQotICAgIHNpZ25lZC1vZmYtYnkgUmljaGFyZCBXb29kcnVmZiA8ci13b29kcnVmZjJAdGkuY29tPgotCi1jb21taXQgY2UxMTIwZGQ3MDNlNmYxMmM1OWU0ZWJhOTk2MjM1NmEwMzAwYjgzMgotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgRmViIDI5IDE3OjQ1OjMxIDIwMDggKzA4MDAKLQotICAgIGZzOiBGaXggZXh0MiByZWFkIGlzc3VlCi0KLSAgICBUaGUgZXh0MiBhbGlnbmVkIHByb2Nlc3Mgd2lsbCBjb3JydXB0IHRoZSBrZXkKLSAgICBkYXRhIHN0cnVjdCwgdGhlIHBhdGNoIGZpeCB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDUwMTNjMDlmN2E1Njc1OTUyYTNjYTg4YjZiYzZjOTI0ZTYzYWYzM2UKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBNYXIgMiAyMjo0NTozMyAyMDA4ICswMTAwCi0KLSAgICBNYWtlZmlsZTogY2xlYW51cCAiY2xlYW4iIHRhcmdldAotCi0gICAgTWFrZSBzdXJlIENEUEFUSCBzZXR0aW5ncyBjYW5ub3QgaW50ZXJmZXJlLgotICAgIFVwZGF0ZSBDSEFOR0VMT0cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZmZkYTU4NmZjMTM3MzI0M2M5Nzk0YmFiZGU2OTUwMGY2MjkzYThkOAotQXV0aG9yOiBMaSBZYW5nIDxsZW9saUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEZlYiAyOSAxMTo0NjowNSAyMDA4ICswODAwCi0KLSAgICBhZGQgY3Njb3BlIGJ1aWxkIHRhcmdldAotCi0gICAgQWRkIGNzY29wZSBidWlsZCB0YXJnZXQgdG8gZ2VuZXJhdGUgY3Njb3BlIGRhdGFiYXNlIGZvciBjb2RlIGJyb3dzaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGkgWWFuZyA8bGVvbGlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGY2NTVhZGVmNjVlNGNmNmI5MjkwNTRiMDQ5ZWUxOWFlOWI1Y2NiZTIKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBGZWIgMjcgMTU6MDY6MzkgMjAwOCAtMDYwMAotCi0gICAgbmV0OiB1ZWNfcGh5OiBoYW5kbGUgODhlMTExMSByZXYuQjIgZXJyYXR1bSA1LjYKLQotICAgIGVycmF0dW0gNS42IHN0YXRlcyB0aGUgYXV0b25lZyBjb21wbGV0aW9uIGJpdCBpcyBmdW5jdGlvbmFsIG9ubHkgaWYgdGhlCi0gICAgYXV0b25lZyBiaXQgaXMgYXNzZXJ0ZWQuCi0KLSAgICBUaGlzIGZpeGVzIGFueSBzZWNvbmRhcmlseS1pc3N1ZWQgbmV0d29ya2luZyBjb21tYW5kcyBvbiBub24tZ2lnYWJpdAotICAgIGxpbmtzIG9uIHRoZSBtcGM4MzYwIG1kcyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1ZjkxZGI3ZjU4MmNhMTdiMWYxOWYxMDE4OWMwMjU2OTZmMzMzZDJlCi1BdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEZlYiAyNiAwOTozODoxNCAyMDA4IC0wNzAwCi0KLSAgICBNUEM1MTIxZSBBRFMgUENJIHN1cHBvcnQgdGFrZSAzCi0KLSAgICBBZGRzIFBDSSBzdXBwb3J0IGZvciBNUEM1MTIxCi0KLSAgICBUZXN0ZWQgd2l0aCBkcml2ZXJzL25ldC9ydGw4MTM5LmMKLQotICAgIFN1cHBvcnQgaXMgY29uZGl0aW9uYWwgc2luY2UgUENJIG9uIG9sZCBzaWxpY29uIGRvZXMgbm90IHdvcmsuCi0KLSAgICBhZHM1MTIxX1BDSV9jb25maWcgdHVybnMgb24gUENJCi0KLSAgICBJbiB0aGlzIHZlcnNpb24sIGNvbmRpdGlvbiBjb21waWxhdGlvbiBvZiBQQ0kgY29kZSBoYXMgYmVlbiBtb3ZlZAotICAgIGZyb20gaWZkZWYgaW4gYm9hcmQvYWRzNTEyMS9wY2kuYyB0byBib2FyZC9hZHM1MTIxL01ha2VmaWxlIGFzCi0gICAgc3VnZ2VzdGVkIGJ5IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJECi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ0YjRkYmVkNDEzM2Y2NTc3MDViN2M1MTkzMjA5ZGE5OTc4MjQzYTcKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJTW9uIEZlYiAyNSAyMzo1MzowNyAyMDA4ICswMTAwCi0KLSAgICBGaXggd2FybmluZ3Mgd2hpbGUgY29tcGlsYXRpb24gb2YgcG9zdC9kcml2ZXJzL21lbW9yeS5jCi0KLSAgICBGaXggd2FybmluZ3Mgd2hpbGUgY29tcGlsYXRpb24gd2l0aCBuZXcgZ2NjIGluIGVsZGstNC4yCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA0ZmFlMzVhNTNiM2U5NTgyNTRkNjU3NGExY2M3ZTEwODExZmM2NzI2Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgMjUgMjA6NTQ6MDQgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggcHJvYmxlbSBpbiA0eHhfZW5ldC5jIGRyaXZlcgotCi0gICAgVS1Cb290IGNyYXNoZXMgaW4gdGhlIG5ldCBsb29wIGlmIENPTkZJR180eHhfRENBQ0hFIGlzCi0gICAgZW5hYmxlZC4gVG8gcmVwcm9kdWNlIHRoZSBwcm9ibGVtIGVuc3VyZSB0aGF0ICdldGhyb3RhdGUnCi0gICAgZW52aXJvbm1lbnQgdmFyaWFibGUgaXNuJ3Qgc2V0IHRvICJubyIgYW5kIHRoZW4gcnVuCi0gICAgInRmdHAgMjAwMDAwIG5vdF9leGlzdGVudF9maWxlIi4KLSAgICBUaGlzIHBhdGNoIHRyaWVzIHRvIGZpeCB0aGUgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA2MGVjNjU0YzVlYjgwZDBmZTBjMzhhM2JkNDIxNDAyMTViYzA2NDg0Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgMjUgMjA6MDQ6MjAgMjAwOCArMDEwMAotCi0gICAgUE9TVDogRGlzYWJsZSBjYWNoZSB3aGlsZSBTUFIgUE9TVAotCi0gICAgQ3VycmVudGx5IChzaW5jZSBjb21taXQgYjJlMjE0MmMpIHUtYm9vdCBjcmFzaGVzIG9uCi0gICAgc2VxdW9pYSBib2FyZCB3aGlsZSBTUFIgdGVzdCBpZiBDT05GSUdfNHh4X0RDQUNIRSBpcwotICAgIGVuYWJsZWQuIFRoaXMgcGF0Y2ggZGlzYWJsZXMgdGhlIGNhY2hlIHdoaWxlIFNQUiB0ZXN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgYzMxM2IyYzZjNTU1ZTdkODllYzU5YmQ1MWM1OWFiMTY0YWQwMTA1ZAotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CU1vbiBGZWIgMjUgMTc6NTI6NDAgMjAwOCArMDEwMAotCi0gICAgVFFNNTIwMDogdXNlIGF1dG9tYXRpYyBmZHQgbWVtb3J5IGZpeHVwIChwYXJ0IDIpCi0KLSAgICBDYWxsIGZkdF9maXh1cF9tZW1vcnkoKSBvbiB0aGUgYm9hcmRzIFRRTTUyMDAsIFRRTTUyMDBfQiwgVFFNNTIwMFMsCi0gICAgVEI1MjAwIGFuZCBUQjUyMDBfQiB0byBmaXh1cCB0aGUgL21lbW9yeSBub2RlIHdpdGggdGhlIG1lbW9yeSB2YWx1ZXMKLSAgICBkZXRlY3RlZCBieSBVLUJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IDQ0Y2VlYzI1M2VhOTQxYjMwMWFiZjRiMDc5ZDUyMzI0ZGVmNjlkOTIKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci1EYXRlOglNb24gRmViIDI1IDE1OjE3OjA1IDIwMDggKzAxMDAKLQotICAgIFRRTTUyMDA6IHVzZSBhdXRvbWF0aWMgZmR0IG1lbW9yeSBmaXh1cAotCi0gICAgQ2FsbCBmZHRfZml4dXBfbWVtb3J5KCkgb24gdGhlIGJvYXJkcyBUUU01MjAwLCBUUU01MjAwX0IsIFRRTTUyMDBTLAotICAgIFRCNTIwMCBhbmQgVEI1MjAwX0IgdG8gZml4dXAgdGhlIC9tZW1vcnkgbm9kZSB3aXRoIHRoZSBtZW1vcnkgdmFsdWVzCi0gICAgZGV0ZWN0ZWQgYnkgVS1Cb290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0KLWNvbW1pdCBmM2EzMjlhY2IyNjAxN2Q4ZTEwZTljOTNlMWU3MjZjMmE1YWM2MzRhCi1BdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotRGF0ZToJTW9uIEZlYiAyNSAxMzoyNzo1MiAyMDA4ICswMTAwCi0KLSAgICBUUU01MjAwOiBmaXggYnVnIGluIFNEUkFNIGluaXRpYWxpemF0aW9uIGNvZGUKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBidWcgaW4gdGhlIFNEUkFNIGluaXRpYWxpemF0aW9uIGNvZGUgZm9yIHRoZQotICAgIFRRTTUyMDAuIFRoZSBoaV9hZGRyIGJpdCBpcyBub3cgc2V0IGNvcnJlY3RseS4gV2l0aG91dCB0aGlzIHBhdGNoCi0gICAgdGhlIGhpX2FkZHIgYml0IGlzIGFsd2F5cyBzZXQgdG8gMSwgaWYgdGhlIHNlY29uZCBTRFJBTSBiYW5rIGlzCi0gICAgbm90IHBvcHVsYXRlZC4KLQotICAgIEZvciBvdGhlciBNUEM1MjAwIGJvYXJkcyBhIGNvcnJlc3BvbmRpZyBwYXRjaCBoYXMgYWxyZWFkeSBiZWVuIGFwcGxpZWQKLSAgICBzb21lIHRpbWUgYWdvLCBzZWUgY29tbWl0IGE2MzEwOTI4MWFkNDFiMGZiNDg5ZmRjYjkwMTE3MWY3NmJjZGJjMmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLSAgICAtLQotICAgIEZvcmdldCB0aGUgZmlyc3QgcGF0Y2ggcGxlYXNlLiBJIGNvbmZ1c2VkIGZsYXNoIHdpdGggU0RSQU0gaW4KLSAgICB0aGUgY29tbWVudCAuLi4KLQotY29tbWl0IDIxN2JmNmI2YTMxM2Q5Y2NiNjE5YTRkYmMwOWY3M2Y3N2NkNDhkZjEKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBGZWIgMjUgMDA6MDM6MTIgMjAwOCArMDEwMAotCi0gICAgbXgxZnMyL2ZsYXNoOiBGaXggbXVsdGlwbGUgY29tcGlsZXIgd2FybmluZ3MKLQotICAgICJwb2ludGVyIHRhcmdldHMgaW4gYXNzaWdubWVudCBkaWZmZXIgaW4gc2lnbmVkbmVzcyIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA1NTk5YzI4Y2VmNTViZTQyYThjYTZmYTgwODZiMWE0NGU1NmE4NWQyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglNb24gRmViIDI1IDAwOjAzOjExIDIwMDggKzAxMDAKLQotICAgIGFybS1pbXg6IEZpeCByZWdpc3RlciBkZWZpbml0aW9ucwotCi0gICAgU3luYyByZWdpc3RlciBkZWZpbml0aW9ucyB3aXRoIGxpbnV4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYzliY2Y3NWZlY2M1ODg4NmFmNzdkMmE1NzFjZmYyZWFiMzllYWI2ZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIEZlYiAyNSAwMDowMzoxMCAyMDA4ICswMTAwCi0KLSAgICBhY3R1YTEvYWN0dWEyL2FjdHVhMzogRml4IG11bHRpcGxlIHVudXNlZCB2YXJpYWJsZSB3YXJuaW5ncwotCi0gICAgLSBhY3R1YTE6Ci0JYWN0dXgxLmM6IEluIGZ1bmN0aW9uICdjaGVja2JvYXJkJzoKLQlhY3R1eDEuYzo5Mjogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdyZXZpc2lvbicKLQotICAgIC0gYWN0dWEyOgotCWFjdHV4Mi5jOiBJbiBmdW5jdGlvbiAnY2hlY2tib2FyZCc6Ci0JYWN0dXgyLmM6MTAwOiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3MnCi0JYWN0dXgyLmM6OTk6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV2aXNpb24nCi0JYWN0dXgyLmM6IEluIGZ1bmN0aW9uICdyZXNldF9waHknOgotCWFjdHV4Mi5jOjEzMDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdpJwotCi0gICAgLSBhY3R1YTM6Ci0JYWN0dXgzLmM6IEluIGZ1bmN0aW9uICdjaGVja2JvYXJkJzoKLQlhY3R1eDMuYzoxMTQ6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV2aXNpb24nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZjhmYTYzNjhhNmEwYzAyMTY0ZGE4ZTJmNTJmMThkNDU3YzY5NzdiZAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU3VuIEZlYiAyNCAxMTo0NDoyOSAyMDA4ICswOTAwCi0KLSAgICBSZW1vdmUgdGhlIF9fU1RSSUNUX0FOU0lfXyBjaGVjayBmcm9tIHRoZSBfX3U2NC9fX3M2NCBkZWNsYXJhdGlvbiBvbiAzMmJpdCB0YXJnZXRzLgotCi0gICAgVGhlIHByZXZpb3VzIHBhdGNoIHdhcyBsYWNraW5nIG9mIGkzODYsIG1pY3JvYmxhemUsIG5pb3MgYW5kIG5pb3MyLiBUaGlzCi0gICAgcGF0Y2ggdHJpZXMgdG8gZml4IHRoZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMDVlMDdiMWVhMjI4NDRlOTQ2Y2ZjZjdkNWU4YTAxOTlkMThkMmE5NQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEZlYiAyOSAyMjoyMjo0NiAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gRml4IEZEVCBibG9iIHRvdGFsc2l6ZSBjYWxjdWxhdGlvbiBpbiBib290X3JlbG9jYXRlX2ZkdCgpCi0KLSAgICBEbyBub3QgdXNlIGdsb2JhbCBmZHQgYmxvYiBwb2ludGVyLCBjYWxjdWxhdGUgYmxvYiBzaXplIGZyb20gcm91dGluZQotICAgIGFyZ3VtZW50IGJsb2IgcG9pbnRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBkMWNjNTI4NzljODk2NjUwN2RhZDlmYjU3NTQ4MWU2ZDM5ODVlNjRlCi1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJVHVlIEZlYiAxMiAwMDo1ODozMSAyMDA4ICsxMTAwCi0KLSAgICBsaWJmZHQ6IEFkZCBhbmQgdXNlIGEgbm9kZSBpdGVyYXRpb24gaGVscGVyIGZ1bmN0aW9uLgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGFuIGZkdF9uZXh0X25vZGUoKSBmdW5jdGlvbiB3aGljaCBjYW4gYmUgdXNlZCB0bwotICAgIGl0ZXJhdGUgdGhyb3VnaCBub2RlcyBvZiB0aGUgdHJlZSB3aGlsZSBrZWVwaW5nIHRyYWNrIG9mIGRlcHRoLiAgVGhpcwotICAgIGZ1bmN0aW9uIGlzIHVzZWQgdG8gc2ltcGxpZnkgdGhlIGl0ZXJhdGlvbiBjb2RlIGluIGEgbG90IG9mIG90aGVyCi0gICAgZnVuY3Rpb25zLCBhbmQgaXMgYWxzbyBleHBvcnRlZCBmb3IgdXNlIGJ5IGxpYnJhcnkgdXNlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLQotY29tbWl0IDhjZjMwODA5YTgyOTAyYTQ3MTg2NmQyZjA3NzI1Y2UzYjhhMjIyOTEKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBGZWIgMjkgMTY6MDA6MjQgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIEFkZCBsaWJmZHQgc3VwcG9ydCB0byBta2ltYWdlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYTZlNTMwZjAwZDMxYTg0OTRhMDQyMjc5OWIyYjlhNjkyYTljMGViOQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEZlYiAyOSAxNjowMDoyMyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIHNoYTEubyBvYmplY3QgdG8gbWtpbWFnZSBiaW5hcnkgYnVpbGQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBkZjZmMWI4OTVjOTk3OTc4ZjAzYWZlMDQ1MDJlZTc2YjdiYTM0YWI5Ci1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgRmViIDI5IDE2OjAwOjA2IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBGaXggY29tcG9uZW50IGhhbmRsaW5nIGZvciBsZWdhY3kgbXVsdGkgY29tcG9uZW50IGltYWdlcwotCi0gICAgVXNlIHVpbnQzMl90IHdoZW4gYWNjZXNzaW5nIHNpemUgdGFibGUgaW4gaW1hZ2VfbXVsdGlfY291bnQoKSBhbmQKLSAgICBpbWFnZV9tdWx0aV9nZXRpbWcoKSBmb3IgbXVsdGkgY29tcG9uZW50IGltYWdlcy4KLQotICAgIEFkZCBtaXNzaW5nIHVpbWFnZV90b19jcHUoKSBlbmRpYW5uZXNzIGNvbnZlcnNpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNTcwYWJiMGFkMTIwZjYwMDJiY2FhM2NmNmYzMmJkNGNhMmUxYjI0OAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEZlYiAyOSAxNTo1OTo1OSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gU2hhcmUgY29tbW9uIHVJbWFnZSBjb2RlIGJldHdlZW4gbWtpbWFnZSBhbmQgVS1ib290Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGZvbGxvd2luZyBjb21tb24gcm91dGluZXM6Ci0KLSAgICAxKSBEZWRpY2F0ZWQgbWtpbWFnZSBwcmludF9oZWFkZXIoKSBpcyByZXBsYWNlZCB3aXRoIGNvbW1vbgotICAgIGltYWdlX3ByaW50X2NvbnRlbnRzKCkKLSAgICBpbWFnZV9wcmludF9jb250ZW50c19ub2luZGVudCgpCi0KLSAgICAyKSBDb21tb24gb3MvYXJjaC90eXBlL2NvbXAgZmllbGRzIG5hbWUgPC0tPiBpZCB0cmFuc2xhdGlvbiByb3V0aW5lcwotICAgIGdlbmltZ19nZXRfb3NfbmFtZSgpCi0gICAgZ2VuaW1nX2dldF9hcmNoX25hbWUoKQotICAgIGdlbmltZ19nZXRfdHlwZV9uYW1lKCkKLSAgICBnZW5pbWdfZ2V0X2NvbXBfbmFtZSgpCi0gICAgZ2VuaW1nX2dldF9vc19pZCgpCi0gICAgZ2VuaW1nX2dldF9hcmNoX2lkKCkKLSAgICBnZW5pbWdfZ2V0X3R5cGVfaWQoKQotICAgIGdlbmltZ19nZXRfY29tcF9pZCgpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgOWE0ZGFhZDBhMzVlYjUxNDMwMzdlZWE5Zjc4NmEzZTlkNjcyYmRkNgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEZlYiAyOSAxNDo1ODozNCAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gVXBkYXRlIG5hbWluZyBjb252ZW50aW9uIGZvciBib290bS91SW1hZ2UgcmVsYXRlZCBjb2RlCi0KLSAgICBUaGlzIHBhdGNoIGludHJvZHVjZXMgdGhlIGZvbGxvd2luZyBwcmVmaXggY29udmVudGlvbiBmb3IgdGhlCi0gICAgaW1hZ2UgZm9ybWF0IGhhbmRsaW5nIGFuZCBib290bSByZWxhdGVkIGNvZGU6Ci0KLSAgICBnZW5pbWdfCQktIGR1YWwgZm9ybWF0IHNoYXJlZCBjb2RlCi0gICAgaW1hZ2VfCQktIGxlZ2FjeSB1SW1hZ2UgZm9ybWF0IHNwZWNpZmljIGNvZGUKLSAgICBmaXRfCQktIG5ldyB1SW1hZ2UgZm9ybWF0IHNwZWNpZmljIGNvZGUKLSAgICBib290XwkJLSBib290aW5nIHByb2Nlc3MgcmVsYXRlZCBjb2RlCi0KLSAgICBSZWxhdGVkIHJvdXRpbmVzIGFyZSByZW5hbWVkIGFuZCBhIGZldyBwaWVjZXMgb2YgY29kZSBhcmUgbW92ZWQgYXJvdW5kIGFuZAotICAgIHJlLWdyb3VwZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNzVmYTAwMmM0NzE3MWI3M2ZiNGMxZjJjMmZlNGQ2MzkxYzEzNjI3NgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo1MSAyMDA4IC0wNjAwCi0KLSAgICBbbmV3IHVJbWFnZV0gUmVzcGVjdCBhdXRvc3RhcnQgc2V0dGluZyBpbiBsaW51eCBib290bQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGQzZjJmYTBkMjc4NDY3YjIyMzJlNGViMjM3MmY5MDVjM2ZlYmZiZWIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBGZWIgMjcgMjE6NTE6NTAgMjAwOCAtMDYwMAotCi0gICAgW25ldyB1SW1hZ2VdIFByb3ZpZGUgYWJpbGl0eSB0byByZXN0cmljdCByZWdpb24gdXNlZCBmb3IgYm9vdCBpbWFnZXMKLQotICAgIEFsbG93IHRoZSB1c2VyIHRvIHNldCAnYm9vdG1fbG93JyBhbmQgJ2Jvb3RtX3NpemUnIGVudiB2YXJzIGFzIGEgd2F5Ci0gICAgdG8gcmVzdHJpY3Qgd2hhdCBtZW1vcnkgcmFuZ2UgaXMgdXNlZCBmb3IgYm9vdG0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZTgyMmQ3ZmM0ZGQ0NzU1ZDRkMGEyMmYwNWUzM2YzM2QxYTA0ODFkYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0OSAyMDA4IC0wNjAwCi0KLSAgICBbbmV3IHVJbWFnZV0gVXNlIGxtYiBmb3IgYm9vdG0gYWxsb2NhdGlvbnMKLQotICAgIENvbnZlcnQgZ2VuZXJpYyByYW1kaXNrX2hpZ2goKSwgZ2V0X2Jvb3RfY21kbGluZSgpLCBnZXRfYm9vdF9rYmQoKQotICAgIGZ1bmN0aW9ucyBvdmVyIHRvIHVzaW5nIGxtYiBmb3IgYWxsb2NhdGlvbiBvZiB0aGUgcmFtZGlzaywgY29tbWFuZCBsaW5lCi0gICAgYW5kIGtlcm5lbCBiZCBpbmZvLgotCi0gICAgQ29udmVydCBQUEMgc3BlY2lmaWMgZmR0X3JlbG9jYXRlKCkgdG8gdXNlIGxtYiBmb3IgYWxsb2NhdGlvbiBvZiB0aGUgZGV2aWNlCi0gICAgdHJlZS4KLQotICAgIFByb3ZpZGVkIGEgd2VhayBmdW5jdGlvbiB0aGF0IGJvYXJkIGNvZGUgY2FuIGNhbGwgdG8gZG8gYWRkaXRpb25hbAotICAgIGxtYiByZXNlcnZlcyBpZiBuZWVkZWQuCi0KLSAgICBBbHNvIGludHJvZHVjZSB0aGUgY29uY2VwdCBvZiBib290bWFwX2Jhc2UgdG8gc3BlY2lmeSB0aGUgb2Zmc2V0IGluCi0gICAgcGh5c2ljYWwgbWVtb3J5IHRoYXQgdGhlIGJvb3RtYXAgaXMgbG9jYXRlZCBhdC4gIFRoaXMgaXMgdXNlZCBmb3IKLSAgICBhbGxvY2F0aW9ucyBvZiB0aGUgY21kbGluZSwga2VybmVsIGJkLCBhbmQgZGV2aWNlIHRyZWUgYXMgdGhleSBzaG91bGQKLSAgICBiZSBjb250YWluZWQgd2l0aGluIGJvb3RtYXBfYmFzZSBhbmQgYm9vdG1hcF9iYXNlICsgQ0ZHX0JPT1RNQVBTWi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmNTYxNGU3OTI2ODYzYmYwMjI1ZWM4NjBkOWIzMTk3NDFhOWM0MDA0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ4IDIwMDggLTA2MDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgYXV0b3N0YXJ0IGZsYWcgdG8gYm9vdG1faGVhZGVycyBzdHJ1Y3R1cmUKLQotICAgIFRoZSBhdXRvc3RhcnQgZW52IHZhcmlhYmxlIHdhcyBkcm9wcGVkIGFzIHBhcnQgb2YgdGhlIGluaXRpYWwgbmV3IHVJbWFnZQotICAgIGNsZWFudXAuICBBZGQgaXQgYmFjayBoZXJlIHNvIHRoZSBhcmNoIHNwZWNpZmljIGNvZGUgY2FuIGRlY2lkZSBpZiBpdAotICAgIHdhbnRzIHRvIHJlYWxseSBib290IG9yIG5vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0gICAgQWNrZWQtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA0ZWQ2NTUyZjcxNTk4M2JmYzdkMjEyYzExOTlhMWY3OTZmMTE0NGFkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ3IDIwMDggLTA2MDAKLQotICAgIFtuZXcgdUltYWdlXSBJbnRyb2R1Y2UgbG1iIGZyb20gbGludXgga2VybmVsIGZvciBtZW1vcnkgbWdtdCBvZiBib290IGltYWdlcwotCi0gICAgSW50cm9kdWNlIHRoZSBMTUIgbGliIHVzZWQgb24gUFBDIGluIHRoZSBrZXJuZWwgYXMgYSBjbGVhbiB3YXkgdG8gbWFuYWdlCi0gICAgdGhlIG1lbW9yeSBzcGFjZXMgdXNlZCBieSB2YXJpb3VzIGJvb3QgaW1hZ2VzIGFuZCBzdHJ1Y3R1cmVzLiAgVGhpcyBjb2RlCi0gICAgd2lsbCBhbGxvdyB1cyB0byBzaW1wbGlmeSB0aGUgY29kZSBpbiBib290bSBhbmQgaXRzIHN1cHBvcnQgZnVuY3Rpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ2NDhjMmU3YTE3M2IwZDdmMTdiZWY0YWRhYTA2MjMwOTBjOWU5MDQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBGZWIgMTkgMjI6MDM6NDcgMjAwOCAtMDYwMAotCi0gICAgW25ldyB1SW1hZ2VdIHBwYzogQWxsb3cgYm9hcmRzIHRvIHNwZWNpZnkgZWZmZWN0aXZlIGFtb3VudCBvZiBtZW1vcnkKLQotICAgIEZvciBoaXN0b3JpY2FsIHJlYXNvbnMgd2UgbGltaXRlZCB0aGUgc3RhY2sgdG8gMjU2TSBiZWNhdXNlIHNvbWUgYm9hcmRzCi0gICAgY291bGQgb25seSBtYXAgdGhhdCBtdWNoIHZpYSBCQVRTLglIb3dldmVyIG5ld2VyIGJvYXJkcyBhcmUgY2FwYWJsZSBvZgotICAgIG1hcHBpbmcgbW9yZSBtZW1vcnkgKGZvciBleGFtcGxlIDg1eHggaXMgY2FwYWJsZSBvZiBkb2luZyB1cCB0byAyRykuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMjc0Y2VhMmJkZGJjYTEwY2RhZDdkYWE1MTg5NTFiNzVjNDRlZjZiYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0NiAyMDA4IC0wNjAwCi0KLSAgICBbbmV3IHVJbWFnZV0gcmV3b3JrIGVycm9yIGhhbmRsaW5nIHNvIGNvbW1vbiBmdW5jdGlvbnMgZG9uJ3QgcmVzZXQKLQotICAgIENoYW5nZWQgaW1hZ2VfZ2V0X3JhbWRpc2soKSB0byBqdXN0IHJldHVybiBOVUxMIG9uIGVycm9yIGFuZCBoYXZlCi0gICAgZ2V0X3JhbWRpc2soKSBwcm9wb2dhdGUgdGhhdCBlcnJvciB0byB0aGUgY2FsbGVyLiAgSXQncyBsZWZ0IHRvIHRoZQotICAgIGNhbGxlciB0byBjYWxsIGRvX3Jlc2V0KCkgaWYgaXQgd2FudHMgdG8uCi0KLSAgICBBbHNvIG1vdmVkIGNhbGxpbmcgZG9fcmVzZXQoKSBpbiBnZXRfZmR0KCkgYW5kIGZkdF9yZWxvY2F0ZSgpIG9uIHBwYwotICAgIHRvIGEgY29tbW9uIGxvY2F0aW9uLiAgSW4gdGhlIGZ1dHVyZSB3ZSB3aWxsIGNoYW5nZSBnZXRfZmR0KCkgYW5kCi0gICAgZmR0X3JlbG9jYXRlKCkgdG8gcmV0dXJuIHN1Y2Nlc3MvZmFpbHVyZSBhbmQgbm90IGNhbGwgZG9fcmVzZXQoKSBhdCBhbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIEFja2VkLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZDJiYzA5NWE2Mzk2NzJkZWYxMWQ1ZDA0M2I1Njg4ZDBkYmQ2OTJlYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEZlYiAyNyAyMTo1MTo0NSAyMDA4IC0wNjAwCi0KLSAgICBbbmV3IHVJbWFnZV0gcHBjOiBSZS1vcmRlciByYW1kaXNrL2ZkdCBoYW5kbGluZyBzZXF1ZW5jZQotCi0gICAgRG9pbmcgdGhlIGZkdCBiZWZvcmUgdGhlIHJhbWRpc2sgYWxsb3dzIHVzIHRvIGdyb3cgdGhlIGZkdCB3L28gY29uY2VybgotICAgIGhvd2V2ZXIgaXQgZG9lcyBtZWFuIHdlIGhhdmUgdG8gZ28gaW4gYW5kIGZpeHVwIHRoZSBpbml0cmQgaW5mbyBzaW5jZQotICAgIHdlIGRvbid0IGtub3cgd2hlcmUgaXQgd2lsbCBiZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNzk1MzQ5M2VmMDI1ZmI2OThkNjhjNWRlZTM5YjM2ZjAxZjRkNTMwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgRmViIDI3IDIxOjUxOjQ0IDIwMDggLTA2MDAKLQotICAgIFtuZXcgdUltYWdlXSBwcGM6IERldGVybWluZSBpZiB3ZSBhcmUgYm9vdGluZyBhbiBPRiBzdHlsZQotCi0gICAgSWYgd2UgYXJlIGJvb3RpbiBPRiBzdHlsZSB0aGFuIHdlIGNhbiBza2lwIHNldHRpbmcgdXAgc29tZSB0aGluZ3MKLSAgICB0aGF0IGFyZSB1c2VkIGZvciB0aGUgb2xkIGJvb3QgbWV0aG9kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGE2NjEyYmRmZTdlZjM3Yjk3ODdiNjY4MDBjZjAyYWFkZWQwNWZiZWIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBGZWIgMjcgMjE6NTE6NDMgMjAwOCAtMDYwMAotCi0gICAgW25ldyB1SW1hZ2VdIERvbid0IHBhc3Mga2RiIHRvIHJhbWRpc2tfaGlnaCBzaW5jZSB3ZSBtYXkgbm90IGhhdmUgb25lCi0KLSAgICBXZSBkb24ndCBhY3R1YWxseSBuZWVkIHRoZSBrZGIgcGFyYW0gYXMgd2UgYXJlIGp1c3QgdXNpbmcgaXQgdG8gZ2V0Ci0gICAgYmQtPmJpX21lbXNpemUgd2hpY2ggd2UgY2FuIGdldCBmcm9tIGdkLT5iZC0+YmlfbWVtc2l6ZS4gIEFsc28sIGlmIHdlCi0gICAgYm9vdCB2aWEgT0Ygd2UgbWlnaHQgbm90IGFjdHVhbGx5IGZpbGwgb3V0IGEga2RiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLSAgICBBY2tlZC1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDJiMjJmYTRiYWVlNTFlNmI0NjdjNDRlYTFiZTBkMWVjZDg2ZTg3NzUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBGZWIgMjcgMTY6MzA6NDcgMjAwOCAtMDYwMAotCi0gICAgODV4eDogRG9uJ3QgaWNiaSB3aGVuIHVubG9ja2luZyB0aGUgY2FjaGUKLQotICAgIFRoZXJlIGlzIG5vIHJlYXNvbiB0byBpY2JpIHdoZW4gaW52YWxpZGF0aW5nIHRoZSB0ZW1wb3Jhcnkgc3RhY2sgaW4KLSAgICB0aGUgZC1jYWNoZS4gIEl0cyBpbXBvc3NpYmxlIG9uIGU1MDAgdG8gaGF2ZSB0aGUgaS1jYWNoZSBjb250YWluCi0gICAgYW55IGFkZHJlc3NlcyBpbiB0aGUgdGVtcCBzdGFjayBhbmQgaXQgY2FuIGJlIHByb2JsZW1hdGljIGluIGdlbmVyYXRpbmcKLSAgICB0cmFuc2FjdGlvbnMgb24gdGhlIGJ1cyB0byBub24tdmFsaWQgYWRkcmVzc2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDUzNGVhNmI2Zjg2ZjhiNzVlZjJhYzA2MWVmMTEwYTk4ZjEwM2Q3ZDYKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAyNyAxNTo1MDo1MCAyMDA4IC0wNjAwCi0KLSAgICBGaXggc291cmNlIGZvciBFQ00gZXJyb3IgSVZQUgotCi0gICAgVGhlIHNvdXJjZSB2ZWN0b3IgZm9yIHRoZSBFQ00gd2FzIGJlaW5nIHNldCB0byAyLAotICAgIGJ1dCB0aGF0J3Mgd2hhdCB0aGUgc291cmNlIHZlY3RvciBmb3IgRERSIHdhcyBiZWluZwotICAgIHNldCB0by4gIENoYW5nZSBpdCB0byAxLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjFmYWU4YjJiNGU0ZTZlNjQ4Nzk2ZTA3ZTIwYWIxM2U5Y2IxODkyMwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRmViIDI3IDE0OjI5OjU4IDIwMDggLTA2MDAKLQotICAgIEludmFsaWRhdGUgSU5JVF9SQU0gVExCIG1hcHBpbmdzCi0KLSAgICBDb21taXQgMGRiMzdkYy4uLiAgKGFuZCBzb21lIG90aGVycykgY2hhbmdlZCB0aGUgSU5JVF9SQU0gVExCCi0gICAgbWFwcGluZ3MgdG8gYmUgdW5ndWFyZGVkLiAgVGhpcyBjb2xsaWRlZCB3aXRoIGFuIGV4aXN0aW5nICJidWciCi0gICAgd2hlcmUgdGhlIG1hcHBpbmdzIGZvciB0aGUgSU5JVF9SQU0gd2VyZSBiZWluZyBrZXB0IGFyb3VuZC4KLSAgICBUaGlzIG1lYW50IHRoYXQgc3BlY3VsYXRpdmUgbG9hZHMgdG8gdGhvc2UgYWRkcmVzc2VzIHdlcmUKLSAgICBzdWNjZWVkaW5nIGluIHRoZSBUTEIsIGFuZCBnb2luZyBvdXQgdG8gdGhlIGJ1cywgd2hlcmUgdGhleQotICAgIHdlcmUgY2F1c2luZyBhbiBleGNlcHRpb24gKHRoZXJlJ3Mgbm90aGluZyBhdCB0aGF0IGFkZHJlc3MpLiBUaGUKLSAgICBGbGFzaCBjb2RlIHdhcyBjb2luY2lkZW50YWxseSBjYXVzaW5nIHN1Y2ggYSBzcGVjdWxhdGl2ZSBsb2FkLgotICAgIFJhdGhlciB0aGFuIGdvIGJhY2sgdG8gbWFwcGluZyB0aGUgSU5JVCBSQU0gYXMgZ3VhcmRlZCwgd2UgZml4Ci0gICAgaXQgc28gdGhhdCB0aGUgZW50cmllcyBmb3IgdGhlIElOSVRfUkFNIGFyZSBpbnZhbGlkYXRlZC4gIFRodXMKLSAgICB0aGUgc3BlY3VsYXRpdmUgbG9hZHMgd2lsbCBmYWlsIGluIHRoZSBUTEIsIGFuZCBoYXZlIG5vIGVmZmVjdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDM0N2I3OTM4ZDNlNTYxZWIyMTVhYTM4NmMzN2ZiNWFjYjVhMzgzYzYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMTcgMjI6NTY6MTcgMjAwOCArMDEwMAotCi0gICAgc2JjODU0ODogRml4IFJldmlzaW9uIHJlYWRpbmcgYW5kIHVudXNlZCB2YXJpYWJsZSAncGF0aCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0OTVkMTYyMzc0YzQ3MmY0NjQ1NDQ1MzU1MzM4MmFkMDczNWRjNzI1Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gRmViIDE3IDIyOjU2OjE2IDIwMDggKzAxMDAKLQotICAgIHNiYzg1NDg6IEZpeCBjZmkgZmxhc2ggYmFuayBkZWNsYXJhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDRlZmJlOWRiYjEyOWY4NTdmMjc4NTY5MzYxMTJjOGMwMmYwMTZiZTYKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBGZWIgMjcgMTE6MDI6MjYgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIENvcnJlY3QgcmF3IEZEVCBibG9iIGhhbmRsaWcgd2hlbiBDT05GSUdfRklUIGlzIGRpc2FibGVkCi0KLSAgICBEdWFsIGZvcm1hdCBpbWFnZSBjb2RlIG11c3QgcHJvcGVybHkgaGFuZGxlIGFsbCB0aHJlZSBGRFQgcGFzc2luZyBtZXRob2RzOgotICAgIC0gcmF3IEZEVCBibG9iIHBhc3NlZAotICAgIC0gRkRUIGJsb2IgZW1iZWRkZWQgaW4gdGhlIGxlZ2FjeSB1SW1hZ2UKLSAgICAtIEZEVCBibG9iIGVtYmVkZGVkIGluIHRoZSBuZXcgdUltYWdlCi0KLSAgICBUaGlzIHBhdGNoIGVuYWJsZXMgcHJvcGVyIHJhdyBGRFQgaGFuZGxpbmcgd2hlbiBubyBGSVQgaW1hZWcgc3VwcG9ydAotICAgIGlzIGNvbXBpbGVkIGluLiBUaGlzIGlzIGEgYml0IHRyaWNreSBhcyB3ZSBtdXN0IGRlY3RlZCBGSVQgZm9ybWF0IGV2ZW4KLSAgICB3aGVuIEZJVCB1SW1hZ2UgaGFuZGxpbmcgaXMgbm90IGVuYWJsZWQgYXMgYm90aCBGSVQgdUltYWdlcyBhbmQgcmF3IEZEVAotICAgIGJsb2JzIHVzZSB0aGEgc2FtZSBsb3cgbGV2ZWwgZm9ybWF0IChsaWJmZHQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGZmMDczNGNmZjBmYjUzOTdjZTJmNDYwMmY0ZjNlNWVjOWM4YTM2ZTgKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBGZWIgMjcgMTE6MDI6MjYgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIFBPV0VSUEM6IEFkZCBpbWFnZV9nZXRfZmR0KCkgcm91dGluZQotCi0gICAgRkRUIGJsb2IgbWF5IGJlIHBhc3NlZCBlaXRoZXI6ICgxKSByYXcgKDIpIG9yIGVtYmVkZGVkIGluIHRoZSBsZWdhY3kgdUltYWdlCi0gICAgKDMpIG9yIGVtYmVkZGVkIGluIHRoZSBuZXcgdUltYWdlLiBGb3IgdGhlICgyKSBjYXNlIGVtYmVkZGluZyBpbWFnZSBtdXN0IGJlCi0gICAgdmVyaWZpZWQgYmVmb3JlIHdlIGdldCBGRFQgZnJvbSBpdC4gVGhpcyBwYXRjaCBmYWN0b3JzIG91dCBsZWdhY3kgaW1hZ2UKLSAgICBzcGVjaWZpYyB2ZXJpZmljYXRpb24gcm91dGluZSB0byB0aGUgc2VwYXJhdGUgaGVscGVyIHJvdXRpbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotICAgIEFja2VkLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMWVmZDQzNjAxZjkwZGUyMWVjNmMwZWJiOTg4MDgyM2U4MjI5MjdiMQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIEZlYiAyNyAxMTowMjowNyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIGltYWdlX2dldF9rZXJuZWwoKSByb3V0aW5lCi0KLSAgICBMZWdhY3kgaW1hZ2Ugc3BlY2lmaWMgdmVyaWZpY2F0aW9uIGlzIGZhY3RvcmVkIG91dCB0byBhIHNlcGFyYXRlIGhlbHBlcgotICAgIHJvdXRpbmUgdG8ga2VlcCBnZXRfa2VybmVsKCkgZ2VuZXJpYyBhbmQgc2ltcGxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDhhNWVhM2U2MTY4ZmU2YTI3ODBlZWFmMjU3YTNiMTlmMzBkZWM2NTgKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBGZWIgMjcgMTE6MDE6MDQgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIE1vdmUgaW1hZ2UgdmVyaWZ5IGZsYWcgdG8gYm9vdG1faGVhZGVycyBzdHJ1Y3R1cmUKLQotICAgIERvIG5vdCBwYXNzIGltYWdlIHZlcmlmaWNhdGlvbiBmbGFnIGRpcmVjdGx5IHRvIHJlbGF0ZWQgcm91dGluZXMuCi0gICAgU2ltcGxpZnkgYXJndW1lbnQgcGFzc2luZyBhbmQgbW92ZSBpdCB0byB0aGUgYm9vdG1faGVhZGVyIHN0cnVjdHVyZSB3aGljaAotICAgIGNvbnRhaW5zIGN1cmVudGx5IHByb2Nlc3NlZCBpbWFnZSBzcGVjaWZpYyBkYXRhIGFuZCBpcyBhbHJlYWR5IGJlaW5nIHBhc3NlZAotICAgIG9uIHRoZSBhcmd1bWVudCBsaXN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgyM2FmZTdjZWZlMDBkYWZlZmM2Njk2YzFjYzdhYTgyOGMzOTQyMzQKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBGZWIgMjcgMTE6MDA6NDcgMjAwOCArMDEwMAotCi0gICAgW01ha2VmaWxlXSBTb3J0IENPQkpTIGluIGxpYl88YXJjaD4gTWFrZWZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNmYwZjlkZmM0ZWU4ODBmYmY0MDBhMmViZTE0MjM4MTgxYTZjM2Y5MQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIEZlYiAyNyAxMTowMDo0NyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gT3B0aW1pemUgZ2VuX2dldF9pbWFnZSgpIGZsb3cgY29udHJvbAotCi0gICAgV2hlbiBDT05GSUdfSEFTX0RBVEFGTEFTSCBpcyBub3QgZGVmaW5lZCBnZW5fZ2V0X2ltYWdlKCkgcm91dGluZSBoYXMgbm90aGluZwotICAgIHRvIGRvLCB1cGRhdGUgaXRzIGNvbnRyb2wgZmxvdyB0byBiZXR0ZXIgcmVmbGVjdCB0aGF0IHNpbXBsZSBjYXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGQyY2VkOWViMTllYzc0ZjRhMzU5OTQ5ZGJlMzUzNDI3ZmE2ZDU1Y2EKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CU1vbiBGZWIgNCAwODoyODoxNyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gUE9XRVJQQzogU3BsaXQgZ2V0X2ZkdCgpIGludG8gZ2V0IGFuZCByZWxvY2F0ZSByb3V0aW5lcwotCi0gICAgUFBDIHNwZWNpZmljIEZEVCBibG9iIGhhbmRsaW5nIGNvZGUgaXMgZGl2aWRlZCBpbnRvIHR3byBzZXBhcmF0ZSByb3V0aW5lczoKLQotICAgIGdldF9mZHQoKQktIGZpbmQgYW5kIHZlcmlmeSBhIEZEVCBibG9iIChlaXRoZXIgcmF3IG9yIGltYWdlIGVtYmVkZGVkKQotICAgIGZkdF9yZWxvY2F0ZSgpCS0gbW92ZSBGRFQgYmxvYiB0byB3aXRoaW4gQk9PVE1BUCBpZiBuZWVkZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0gICAgQWNrZWQtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAzM2ZhNWMwYmZhZjQ2NWRlOGNlYjIzZmNkNmIzOTdmNjhiMzVhODE3Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gRmViIDI1IDEzOjEzOjM3IDIwMDggLTA2MDAKLQotICAgIDg2eHg6IEZpeCByZW5hbWVkIEdVUiBzeW1ib2xzIGluIHNiYzg2NDFkIGJvYXJkLgotCi0gICAgQmFjayBpbiBjb21taXQgYTU1MWNlZTk5YWQxZDFkYTIwZmQyM2FkMjY1ZGU0NzQ0ODg1MmY1NgotICAgICg4Nnh4OiBGaXggR1VSIFBDSSBjb25maWcgcmVnaXN0ZXJzIHByb3Blcmx5KSwgd2Ugc2hvdWxkIGhhdmUKLSAgICBjaGFuZ2VkIHRoZSBNUEM4Nnh4X1BPUkJNU1JfSEEgYW5kIE1QQzg2eHhfUE9SREVWU1JfSU9fU0VMCi0gICAgc3ltYm9scyBpbiB0aGUgc2JjODY0MWQgYm9hcmQgYXMgd2VsbC4gIEZpeCB0aGlzIG92ZXJzaWdodC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2NGNkNTk0ZTYyM2MzOWY3Mzk2NGQxODc4Nzc2M2U0NTMzZjc5MWY3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgMjUgMTY6NTA6NDggMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggYWNhZGlhX25hbmQgYnVpbGQgcHJvYmxlbQotCi0gICAgRG9uJ3QgaW5jbHVkZSB0ZXN0ZHJhbSgpIG9uIE5BTkQtYm9vdGluZyB0YXJnZXQgYWNhZGlhX25hbmQuIFRoaXMgc2F2ZXMKLSAgICBhIGZldyBieXRlcyBhbmQgbWFrZXMgdGhlIHRhcmdldCBidWlsZCBjbGVhbiBhZ2Fpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE0ZTA5OWU2OThkNDFlODE3OWQwNWMyYjJkYmNmNzA0YTIzNmY3NDgKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMjQgMjM6MDM6MTIgMjAwOCArMDAwMAotCi0gICAgbXgxZnMyL2ZsYXNoOiBGaXggbXVsdGlwbGUgcG9pbnRlcnRhcmdldHMgaW4gYXNzaWdubWVudCBkaWZmZXIgaW4gc2lnbmVkbmVzcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDcyNDkwMmM4NDY0ZTYxMDY0MmIzYTE3MDI3OGI5OTcxMDMyNTg4OGUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMjQgMjM6MDM6MTEgMjAwOCArMDAwMAotCi0gICAgYXJtLWlteDogRml4IHJlZ2lzdGVycyBkZWZpbml0aW9uCi0KLSAgICBTeW5jIHJlZ2lzdGVycyBkZWZpbml0aW9uIHdpdGggbGludXgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0Y2QyODhiNTg5ZWExMTc4OTQ3YzZlMzY0NDUzYzMyYjNkZWRlNmI3Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gRmViIDI0IDIzOjAzOjEwIDIwMDggKzAwMDAKLQotICAgIGFjdHVhMS9hY3R1YTIvYWN0dWEzOiBGaXggbXVsdGlwbGV1bnVzZWQgdmFyaWFibGUKLQotICAgIC0gYWN0dWExOgotCWFjdHV4MS5jOiBJbiBmdW5jdGlvbiAnY2hlY2tib2FyZCc6Ci0JYWN0dXgxLmM6OTI6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAncmV2aXNpb24nCi0KLSAgICAtIGFjdHVhMjoKLQlhY3R1eDIuYzogSW4gZnVuY3Rpb24gJ2NoZWNrYm9hcmQnOgotCWFjdHV4Mi5jOjEwMDogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdzJwotCWFjdHV4Mi5jOjk5OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3JldmlzaW9uJwotCWFjdHV4Mi5jOiBJbiBmdW5jdGlvbiAncmVzZXRfcGh5JzoKLQlhY3R1eDIuYzoxMzA6IHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSAnaScKLQotICAgIC0gYWN0dWEzOgotCWFjdHV4My5jOiBJbiBmdW5jdGlvbiAnY2hlY2tib2FyZCc6Ci0JYWN0dXgzLmM6MTE0OiB3YXJuaW5nOiB1bnVzZWQgdmFyaWFibGUgJ3JldmlzaW9uJwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGQ1OTM0YWQ3NzU2ZjAzOGEzOTNhOWNmYWI3NmE0ZmUzMDZkOWQ5MzAKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CU1vbiBGZWIgNCAwODoyODowOSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIGR1YWwgZm9ybWF0IHVJbWFnZSBzdXBwb3J0IGZyYW1ld29yawotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGZyYW1ld29yayBmb3IgZHVhbCBmb3JtYXQgaW1hZ2VzLiBGb3JtYXQgZGV0ZWN0aW9uIGlzIGFkZGVkCi0gICAgYW5kIHRoZSBib290bSBjb250cm9sbCBmbG93IGlzIHVwZGF0ZWQgdG8gaW5jbHVkZSBjYXNlcyBmb3IgbmV3IEZJVCBmb3JtYXQKLSAgICB1SW1hZ2VzLgotCi0gICAgV2hlbiB0aGUgbGVnYWN5IChpbWFnZV9oZWFkZXIgYmFzZWQpIGZvcm1hdCBpcyBkZXRlY3RlZCBhcHByb3ByaWF0ZQotICAgIGxlZ2FjeSBzcGVjaWZpYyBoYW5kbGluZyBpcyBpbnZva2VkLiBGb3IgdGhlIG5ldyAoRklUIGJhc2VkKSBmb3JtYXQgdUltYWdlcwotICAgIGR1YWwgYm9vdCBmcmFtZXdvcmsgaGFzIGEgbWluaWFsIHN1cHBvcnQsIHRoYXQgd2lsbCBvbmx5IHByaW50IG91dCBhCi0gICAgY29ycmVzcG9uZGluZyBkZWJ1ZyBtZXNzYWdlcy4gSW1wbGVtZW50YXRpb24gb2YgdGhlIEZJVCBzcGVjaWZpYyBoYW5kbGluZyB3aWxsCi0gICAgYmUgYWRkZWQgaW4gZm9sbG93aW5nIHBhdGNoZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYjI5NjYxZmMxMTUxMDc3Nzc2NDU0Mjg4MDUxYmM5YTQ4ODM1MWNlOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEZlYiAyNCAxNToyMTozNiAyMDA4ICswMTAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4gUHJlcGFyZSB2MS4zLjItcmMyIHJlbGVhc2UgY2FuZGlkYXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMDBiNDhhNDg0MjQ4OTRkYWE1ODlkMTY2ZDczMjc3ODMwYjFjNmFjNAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IEZlYiAyMyAxMjoxNTo1NiAyMDA4ICswMTAwCi0KLSAgICBFTlY6IHJlbW92ZSBzYXZlZW52IHdoZW4gQ0ZHX0VOVl9JU19OT1dIRVJFIGlzIHNlbGVjdGVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYjA3NWQ3NGVmYjcwZmY2OGM0OWEyNTMyZjI2YjU2ZDY3MDNiNjljMQotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU2F0IEZlYiAyMyAxNzoyNDoxNiAyMDA4ICswOTAwCi0KLSAgICBSZW1vdmUgdGhlIF9fU1RSSUNUX0FOU0lfXyBjaGVjayBmcm9tIHRoZSBfX3U2NC9fX3M2NCBkZWNsYXJhdGlvbiBvbiAzMmJpdCB0YXJnZXRzLgotCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICAgIE9sYWYgSGVyaW5nIFtXZWQsIDE3IE9jdCAyMDA3IDA2OjI3OjEzICswMDAwICgyMzoyNyAtMDcwMCldCi0KLSAgICBSZW1vdmUgdGhlIF9fU1RSSUNUX0FOU0lfXyBjaGVjayBmcm9tIHRoZSBfX3U2NC9fX3M2NCBkZWNsYXJhdGlvbiBvbgotICAgIDMyYml0IHRhcmdldHMuCi0KLSAgICBHQ0MgY2FuIGJlIG1hZGUgdG8gd2FybiBhYm91dCB1c2FnZSBvZiBsb25nIGxvbmcgdHlwZXMgd2l0aCBJU08gQzkwCi0gICAgKC1hbnNpKSwgYnV0IG9ubHkgd2l0aCAtcGVkYW50aWMuICBZb3UgY2FuIHdyaXRlIHRoaXMgaW4gYSB3YXkgdGhhdCBldmVuCi0gICAgdGhlbiBpdCBkb2Vzbid0IGNhdXNlIHdhcm5pbmdzLCBuYW1lbHkgYnk6Ci0KLSAgICAjaWZkZWYgX19HTlVDX18KLSAgICBfX2V4dGVuc2lvbl9fIHR5cGVkZWYgX19zaWduZWRfXyBsb25nIGxvbmcgX19zNjQ7Ci0gICAgX19leHRlbnNpb25fXyB0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbG9uZyBfX3U2NDsKLSAgICAjZW5kaWYKLQotICAgIFRoZSBfX2V4dGVuc2lvbl9fIGtleXdvcmQgaW4gZnJvbnQgb2YgdGhpcyBzd2l0Y2hlcyBvZmYgYW55IHBlZGFudGljCi0gICAgd2FybmluZ3MgZm9yIHRoaXMgZXhwcmVzc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE9sYWYgSGVyaW5nIDxvbGhAc3VzZS5kZT4KLSAgICBDYzogPGxpbnV4LWFyY2hAdmdlci5rZXJuZWwub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHJldyBNb3J0b24gPGFrcG1AbGludXgtZm91bmRhdGlvbi5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogTGludXMgVG9ydmFsZHMgPHRvcnZhbGRzQGxpbnV4LWZvdW5kYXRpb24ub3JnPgotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCAyMDhhY2QxMTJlNjUxN2IyMWZjMzBjNDIwMzk2OTAyYjEwMzU2M2FjCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgRmViIDIzIDE3OjA3OjU3IDIwMDggKzA5MDAKLQotICAgIGNwdS9tY2Y1MngyL2NvbmZpZy5tazogTWFrZSBuZWVkbGVzc2x5IGRlZmZlcmVkIGV4cGFuc2lvbnMgaW1tZWRpYXRlLgotCi0gICAgVGhpcyB3aWxsIHJlZHVjZSB0aGUgYnVpbGQgdGltZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCA0OTVhMGRkZTdmYTFiMTRjZGMxNTYwN2Q4NjUwM2VjMmJkY2QwMmM0Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgRmViIDIzIDE3OjA1OjAwIDIwMDggKzA5MDAKLQotICAgIGNwdS9wcGM0eHgvY29uZmlnLm1rOiBNYWtlIGEgbmVlZGxlc3NseSBkZWZmZXJlZCBleHBhbnNpb24gaW1tZWRpYXRlLgotCi0gICAgVGhpcyB3aWxsIHJlZHVjZSB0aGUgYnVpbGQgdGltZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBlNjgyYmEzOTlhMWQ3NmYwOWQ4Y2M3YWYxZTU3MDY2ZjFkMzYwZDkxCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgRmViIDIzIDE2OjU4OjQxIDIwMDggKzA5MDAKLQotICAgIGNwdS9taXBzL2NvZmlnbC5tazogTWFrZSBhIG5lZWRsZXNzbHkgZGVmZmVyZWQgZXhwYW5zaW9uIGltbWVkaWF0ZS4KLQotICAgIFRoaXMgcmVkdWNlcyB0aGUgYnVpbGQgdGltZSBieSB+MTAlLiBIZXJlJ3MgdGhlIGd0aDJfY29uZmlnIGV4YW1wbGUuCi0KLQkgICAgQkVGT1JFCSBBRlRFUgotICAgIHJlYWwgICAgMG0zMS40NDFzCSAwbTI3LjgzM3MKLSAgICB1c2VyICAgIDBtMjQuNzY2cwkgMG0yMy4wNDVzCi0gICAgc3lzICAgICAwbTEwLjQyNXMJIDBtNy40NjhzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMDI0MDlmOGNmNTRjN2NkOTE5ODFmMGRmZWMxMzVkYmYzODU4MDkwYwotQXV0aG9yOiBNYXJjZWwgTW9vbGVuYWFyIDxtYXJjZWxtQGp1bmlwZXIubmV0PgotRGF0ZToJRnJpIEZlYiAyMiAxMDo0ODowNyAyMDA4IC0wODAwCi0KLSAgICBtYWtlIGRlZmluZTJtay5zZWQgd29yayBvbiBGcmVlQlNECi0KLSAgICBJbiB0aGUgdGhyZWFkICJbMS4zLjItcmMxXSBNUEM4NTQ4Q0RTL01QQzg1NTVDRFMgY29uZmlncyBmYWlscyB0byBsaW5rIiwKLSAgICB0aGUgZGVmaW5lMm1rLnNlZCBzY3JpcHQgd2FzIGlkZW50aWZpZWQgYXMgdGhlIHNvdXJjZSBvZiB0aGUgbGluawotICAgIGZhaWx1cmUgb24gRnJlZUJTRC4gVGhlIHByb2JsZW0gaXMgdGhhdCBzZWQoMSkgZG9lcyBub3QgYWx3YXlzIHN1cHBvcnQKLSAgICB0aGUgJysnIG9wZXJhdG9yLiBJdCBpc24ndCBvbiBGcmVlQlNELiBUaGUgYXR0YWNoIHBhdGNoIGltcGxlbWVudHMgdGhlCi0gICAgZXF1aXZhbGVudCwgdXNpbmcgdGhlICcqJyBvcGVyYXRvciBpbnN0ZWFkIGFuZCBzaG91bGQgd29yayBldmVyeXdoZXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyY2VsIE1vb2xlbmFhciA8bWFyY2VsbUBqdW5pcGVyLm5ldD4KLQotY29tbWl0IGU1MDg0YWY4ZGVkNTg0NTNjZDA3ZWMxYWY4YjBmMjlmMzQxMjJiYmMKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglGcmkgRmViIDIyIDE3OjIxOjMyIDIwMDggKzAxMDAKLQotICAgIFJlcGxhY2UgZGVwcmVjYXRlZCAicmFtZGlzayIgd2l0aCAicmFtZGlza19zaXplIiBrZXJuZWwgcGFyYW1ldGVyLgotCi0gICAgVGhlIExpbnV4IGNvbW1pdCBmYWM4YjIwOWIxMDg0YmM4NTc0OGJkNTRlMTNkMDBjMTI2MmIyMjBmICgiUmVtb3ZlCi0gICAgZmluYWwgdHJhY2VzIG9mIGxvbmctZGVwcmVjYXRlZCAicmFtZGlzayIga2VybmVsIHBhcm0iKSBtYWtlcyB0aGVzZQotICAgIGNoYW5nZXMgbmVjY2Vzc2FyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgZDAxYjg0N2M1Y2QwNzA4OTVjNGJhMTc4Yzg1Y2QwNjhhOTVjZjdjZAotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVRodSBGZWIgMjEgMTM6NTg6MTYgMjAwOCAtMDUwMAotCi0gICAgTE03NSBidWcgZml4IGZvciBuZWdhdGl2ZSB0ZW1wZXJhdHVyZXMKLQotICAgIFdoZW4gdGhlIExNNzUgdGVtcGVyYXR1cmUgc2Vuc29yIG1lYXN1cmVzIGEgdGVtcGVyYXR1cmUgYmVsb3cgMCBDLCB0aGUKLSAgICBjdXJyZW50IGRyaXZlciBkb2VzIG5vdCBwZXJmb3JtIHNpZ24gZXh0ZW5zaW9uLCBzbyB0aGUgcmVzdWx0IHJldHVybmVkIGlzCi0gICAgMjU2IEMgdG9vIGhpZ2guICBUaGlzIHBhdGNoIGZpeGVzIHRoZSBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCA1YTkxMGMyMjRiMTNlNDEzYmRhNDE5MjIzNzlhZGQ2ZDc1YzMyZGEzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJVGh1IEZlYiAyMSAxODozMzo0NSAyMDA4ICswMTAwCi0KLSAgICBJRFM4MjQ3OiB1cGRhdGUgTUFJTlRBSU5FUiBlbnRyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNzllYWMyYmZiNTkxZjJiMDI4ZWMxNzM1MDQ5ZGM5MWU0MzIwZGU0YQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgMjEgMTg6MzE6MTUgMjAwOCArMDEwMAotCi0gICAgRml4IGRldmljZSB0cmVlIGZvciBtZ3N1dmQgYm9hcmQuCi0KLSAgICBSZW5hbWUgdGhlICJzY2MiIG5vZGUgaW4gImV0aGVybmV0IiBmb3IgdGhlIG1nc3V2ZCBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMmU3MjEwOTRhNzBhNTIyMDZhZjJlMWJmMTIwOGQ5YTcxMzFmNmRhZAotQXV0aG9yOiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci1EYXRlOglUaHUgRmViIDIxIDE0OjIzOjQyIDIwMDggKzAxMDAKLQotICAgIGx3bW9uNTogZW5hYmxlIGhhcmR3YXJlIHdhdGNoZG9nCi0KLSAgICBTb21lIGJvYXJkcyAoZS5nLiBsd21vbjUpIG1heSB1c2UgcmF0aGVyIHNtYWxsIHdhdGNoZG9nIGludGVydmFscywgc28KLSAgICBjYXVzaW5nIGl0IHRvIHJlYm9vdCB0aGUgYm9hcmQgaWYgVS1Cb290IGRvZXMgYSBsb25nIGJ1c3ktd2FpdCB3aXRoCi0gICAgdWRlbGF5KCkuIFRodXMsIGZvciB0aGVzZSBib2FyZHMgd2UgaGF2ZSB0byByZXN0YXJ0IFdEIG1vcmUKLSAgICBmcmVxdWVudGx5LgotCi0gICAgVGhpcyBwYXRjaCBzcGxpdHMgdGhlIGJ1c3ktd2FpdCB1ZGVsYXkoKSBpbnRvIHNtYWxsZXIsIHByZWRlZmluZWQsCi0gICAgaW50ZXJ2YWxzLCBzbyB0aGF0IHRoZSB3YXRjaGRvZyB0aW1lciBtYXkgYmUgcmVzZXR0ZWQgd2l0aCB0aGUKLSAgICBjb25maWd1cmFibGUgKENPTkZJR19XRF9QRVJJT0QpIGludGVydmFsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotCi1jb21taXQgYmM3Nzg4MTI0N2VlNmY5NWQ3YTllYmM0OTlkMjZiOTZiYWUzOGM5ZAotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglUaHUgRmViIDIxIDEyOjUyOjI5IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogU3VwcG9ydCBmb3IgQVRJIFJhZGVvbiA5MjAwIGNhcmQgb24gc2VxdW9pYQotCi0gICAgQWRkcyBjb25maWd1cmF0aW9uIG9wdGlvbiBmb3IgQVRJIFJhZGVvbiA5MjAwIGNhcmQKLSAgICBzdXBwb3J0IHRvIHNlcXVvaWEgY29uZmlnIGZpbGUuIElmIENPTkZJR19WSURFTwotICAgIGlzIGVuYWJsZWQsIFRFWFRfQkFTRSBzaG91bGQgYmUgY2hhbmdlZCB0byAweEZGRjgwMDAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgNWE5YWJjYzMxN2NmM2M4YTY5NTU5ZmY4MzA4MWY0ZTVkNzE5ZWRiNwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEZlYiAxOCAwODoxODowNyAyMDA4IC0wNjAwCi0KLSAgICBSZW1vdmUgZHVwbGljYXRlIGRlZmluZXMgZm9yIEFSUkFZX1NJWkUKLQotICAgIEEgZmV3IGR1cGxpY2F0ZSBvZiB0aGUgQVJSQVlfU0laRSBtYWNybyBzbmVha2VkIGluIHNpbmNlIHdlIHB1dAotICAgIHRoZSBkZWZpbmUgaW4gY29tbW9uLmguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgODFkOTNlNWM0YjgzZDhiNmRjZWU2OWRlNmY0YTE0Y2NmNmY3MTE0YQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEZlYiAxOCAwODowOTozNyAyMDA4IC0wNjAwCi0KLSAgICBwcGM6IEFsbG93IGJvYXJkcyB0byBzcGVjaWZ5IGVmZmVjdGl2ZSBhbW91bnQgb2YgbWVtb3J5Ci0KLSAgICBGb3IgaGlzdG9yaWNhbCByZWFzb25zIHdlIGxpbWl0ZWQgdGhlIHN0YWNrIHRvIDI1Nk0gYmVjYXVzZSBzb21lIGJvYXJkcwotICAgIGNvdWxkIG9ubHkgbWFwIHRoYXQgbXVjaCB2aWEgQkFUUy4JSG93ZXZlciBuZXdlciBib2FyZHMgYXJlIGNhcGFibGUgb2YKLSAgICBtYXBwaW5nIG1vcmUgbWVtb3J5IChmb3IgZXhhbXBsZSA4NXh4IGlzIGNhcGFibGUgb2YgZG9pbmcgdXAgdG8gMkcpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDc1NWMzNWY1NGJhN2ViNzY4N2FhNzkzNWUwNGEwMmEwMWVmMWIyN2IKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiAxOCAwNToyNDoxMyAyMDA4IC0wNTAwCi0KLSAgICBpbmNsdWRlIGF1dG9jb25mLm1rIGJlZm9yZSBhbnkgb3RoZXIgLm1rIGZpbGVzCi0KLSAgICBUaGlzIGJ1bXBzIHRoZSBhdXRvY29uZi5tayBpbmNsdWRlIHN0ZXAgYWJvdmUgYm9hcmQvY3B1L2FyY2gvZXRjLi4uIHNvIHRoYXQKLSAgICB0aG9zZSAubWsgZmlsZXMgY2FuIGhhdmUgbWFrZSBpZiBzdGF0ZW1lbnRzIGJhc2VkIG9uIHRoZSBjdXJyZW50IGNvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDE2ZmU3Nzc1MmVlZTA5OWI5ZmI2MWVkNzM0NjBlNTFjYzk0YjM3YmEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiAxOCAwNToxMDowNyAyMDA4IC0wNTAwCi0KLSAgICBlcnJvciBjaGVjayBhdXRvY29uZi5tayBnZW5lcmF0aW9uCi0KLSAgICBJZiBhbnkgb2YgdGhlIHN0ZXBzIGZvciBnZW5lcmF0aW5nIGF1dG9jb25mLm1rIGZhaWwgY3VycmVudGx5LCB0aGV5IGdvCi0gICAgdW5ub3RpY2VkLglUbyBmaXgsIHdlIGNhbiBzaW1wbHkgYWRkICdzZXQgLWUnIHRvIHRoZSBsb25nIGxpc3Qgb2YgY29tbWFuZHMuCi0gICAgVGhpcyBpcyBzaW1wbGVyIGFuZCBtb3JlIHJvYnVzdCB0aGFuIHBsYWNpbmcgJ3x8IGV4aXQgJCQ/JyBhZnRlciBldmVyeSBsaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMDE5ODk1YThkZWU3MWE5ZjAwZGEwNWMwM2UzNzlmNDVkNTgxYjBmZQotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CU1vbiBGZWIgMTggMDg6MDM6NTEgMjAwOCArMDEwMAotCi0gICAgRml4IGJ1ZyBpbiBkZXBlbmRlbmN5IGNoZWNraW5nCi0KLSAgICBCeSBhZGRpbmcgVkVSU0lPTl9GSUxFIHRvIHRoZSBQSE9OWSB0YXJnZXRzIHRoZSBzY3JpcHQKLSAgICAvdG9vbHMvc2V0bG9jYWx2ZXJzaW9uIGlzIGFsd2F5cyBjYWxsZWQgYW5kIHZlcnNpb25fYXV0b2dlbmVyYXRlZC5oCi0gICAgaXMgcmVwbGFjZWQgb25seSBpZiB0aGUgc2NyaXB0IGZpbmQgYSBtb2RpZmllZCBzb3VyY2UgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgOThiYTE0NGNjYzkxMmVlZTkwZGQ0MjY5OWYwMjNjNDk3Y2U3NzRjNgotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CU1vbiBGZWIgMTggMTQ6MzU6NDMgMjAwOCArMDkwMAotCi0gICAgRml4IEdQTUMgQ1MyIG1lbW9yeSBzZXR1cCBhdCBhcG9sbG9uCi0KLSAgICBJdCBkaXNhYmxlcyB0aGUgY3VycmVudCBtYXAgZmlyc3QKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCBlODQ1ZTA3ZTFlNmU2NGY0MGUzNTY4ODQzOWQzY2RjZjAxY2ZmZjRmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gRmViIDE3IDIzOjUyOjQ2IDIwMDggKzAxMDAKLQotICAgIHVsaTUyNng6IEZpeCBtdWx0aXBsZSBkaWZmZXIgaW4gc2lnbmVkbmVzcyBhbmQgcGFyZW50aGVzZXMgYXJvdW5kIGNvbXBhcmlzb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBiZWVjY2Y3YTVkYzU0MTVjMjAyZTAxMzJhMzNjNThmYzMxNmMyYTYyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gRmViIDE3IDE2OjU4OjA0IDIwMDggKzAxMDAKLQotICAgIE1JUFM6IEZpeCBDRkdfTk9fRkxBU0ggc3VwcG9ydAotCi0gICAgLSBGaXggZmxhc2hfaW5pdCBjYWxsIHdoZW4gQ0ZHX05PX0ZMQVNIIGlzIHVzZWQKLSAgICAtIFJlbW92ZSBubyBtb3JlIG5lZWRlZCBmbGFzaC5jIGZvciBxZW11LW1pcHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlZGZlZDFkOTFkZjJiMjY3MGE4MTJjYTlkMWExZjlmYWFlN2RiYTQ3Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CVNhdCBGZWIgMTYgMDI6NDA6MTggMjAwOCAtMDUwMAotCi0gICAgZWFzeWxvZ286IGNsZWFuIHVwIHNvbWUgbW9yZSBhbmQgYWRkIC1yIChyZ2IpIHN1cHBvcnQKLQotICAgIE1pY2hhZWwgSGVubmVyaWNoIGFkZGVkIHN1cHBvcnQgZm9yIG91dHB1dHRpbmcgYW4gaW1hZ2UgaW4gUkdCIGZvcm1hdCByYXRoZXIKLSAgICB0aGFuIGZvcmNpbmcgWVVZViBhbGwgdGhlIHRpbWUuICBUaGlzIG1ha2VzIG9idmlvdXMgc2Vuc2UgaWYgdGhlIGRpc3BsYXkgeW91Ci0gICAgaGF2ZSB0YWtlcyBSR0IgaW5wdXQgcmF0aGVyIHRoYW4gWVVZVi4KLQotICAgIFJhdGhlciB0aGFuIGhhY2sgaW4gc3VwcG9ydCBmb3Igb3B0aW9ucywgSSd2ZSBjb252ZXJ0ZWQgaXQgdG8gdXNlIGdldG9wdCBhbmQKLSAgICBjbGVhbmVkIHVwIHRoZSBhcmd1bWVudCBwYXJzaW5nIGluIHRoZSBwcm9jZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBIZW5uZXJpY2ggPG1pY2hhZWwuaGVubmVyaWNoQGFuYWxvZy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZjY1Yzk4MTI5Y2NhZGEzZjdjYWY5N2Q4MDM5NWE5NWI4NGU5MTFkZQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglTYXQgRmViIDE2IDAyOjEyOjM3IDIwMDggLTA1MDAKLQotICAgIE1ha2VmaWxlOiBhZGQgdGFyZ2V0IGZvciAkKExEU0NSSVBUKQotCi0gICAgSWYgdGhlICQoTERTQ1JJUFQpIGRvZXMgbm90IGV4aXN0IChub3JtYWxseSBpdCdzIGJvYXJkLyQoQk9BUkQpL3UtYm9vdC5sZHMpLAotICAgIHRoZW4gY2hhbmdlIGludG8gdGhlIGJvYXJkIGRpcmVjdG9yeSBhbmQgdHJ5IGFuZCBjcmVhdGUgaXQuICBUaGlzIGFsbG93cyB5b3UKLSAgICB0byBnZW5lcmF0ZSB0aGUgbGlua2VyIHNjcmlwdCBvbiB0aGUgZmx5IGJhc2VkIHVwb24gYm9hcmQgZGVmaW5lcyAobGlrZSB0aGUKLSAgICBCbGFja2ZpbiBib2FyZHMgZG8pLgotCi0gICAgVGhlcmUgc2hvdWxkIGJlIG5vIHJlZ3Jlc3Npb25zIGR1ZSB0byB0aGlzIGNoYW5nZSBhcyB0aGUgbm9ybWFsIGNhc2UgaXMgdG8KLSAgICBhbHJlYWR5IGhhdmUgYSB1LWJvb3QubGRzIGZpbGUuICBJZiB0aGF0J3MgdGhlIGNhc2UsIHRoZW4gdGhlcmUncyBub3RoaW5nIHRvCi0gICAgZ2VuZXJhdGUsIGFuZCBzbyBtYWtlIHdpbGwgYWx3YXlzIGV4aXQuICBUaGUgZml4IGhlcmUgaXMgdGhhdCBpZiB0aGUgbGlua2VyCi0gICAgc2NyaXB0IGRvZXMgbm90IGV4aXN0LCB0aGUgaW1wbGljaXQgcnVsZXMgdGFrZSBvdmVyIGFuZCBhdHRlbXB0IHRvIGd1ZXNzIGhvdwotICAgIHRvIGdlbmVyYXRlIHRoZSBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNTU4M2NiZjczNjQ3NGVmNzU0ZTEyOGE1NGZiNzg2MzJmNTdiNDhmZAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEZlYiAyMSAxNzoyNzo0OSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gRml4IGVycm9uZW91cyB1c2Ugb2YgaW1hZ2VfZ2V0X21hZ2ljKCkgaW4gZmRjL3VzYiBjbWRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMjI0MmY1MzY5ODIyYmM3NzgwZGI5NWM0Nzk4NWJiNDA4ZWE5MTU3YgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEZlYiAyMSAxNzoyNzo0MSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gUmVuYW1lIGFuZCBtb3ZlIHByaW50X2ltYWdlX2hkcigpIHJvdXRpbmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBmNTA0MzNkNjcwZWMyZWU5ZTk2YWJhYzY3Y2RjNmU1ZTA2MWE4MTBkCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgRmViIDIxIDE3OjIwOjIwIDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBBZGQgZml0X3BhcnNlX2NvbmYoKSBhbmQgZml0X3BhcnNlX3N1YmltYWdlKCkgcm91dGluZXMKLQotICAgIEludHJvZHVjaW5nIHJvdXRpbmVzIGZvciBwYXJzaW5nIG5ldyB1SW1hZ2UgZm9ybWF0IGJvb3RtIGFyZ3VtZW50czoKLSAgICBbPGFkZHI+XSM8Y29uZj4JCS0gY29uZmlndXJhdGlvbiBzcGVjaWZpY2F0aW9uCi0gICAgWzxhZGRyPl06PHN1YmltZz4JLSBzdWJpbWFnZSBzcGVjaWZpY2F0aW9uCi0KLSAgICBOZXcgZm9ybWF0IGltYWdlcyBjYW4gY29udGFpbiBtdWx0aXBsZSBzdWJpbWFnZXMgb2YgdGhlIHNhbWUgdHlwZS4gRm9yIGV4YW1wbGUKLSAgICBhIHNpbmdsZSBuZXcgZm9ybWF0IGltYWdlIGZpbGUgY2FuIGNvbnRhaW4gdGhyZWUga2VybmVscywgdHdvIHJhbWRpc2tzIGFuZCBhCi0gICAgY291cGxlIG9mIEZEVCBibG9icy4gU3ViaW1hZ2UgYW5kIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNhdGlvbnMgYXJlIGV4dGVuc2lvbnMKLSAgICB0byBib290bSAoYW5kIG90aGVyIGltYWdlLXJlbGF0ZWQgY29tbWFuZHMpIGFyZ3VtZW50cycgc3ludGF4IHRoYXQgYWxsb3cgdG8KLSAgICBzcGVjaWZ5IHdoaWNoIHBhcnRpY3VsYXIgc3ViaW1hZ2Ugc2hvdWxkIGJlIG9wZXJhdGVkIG9uLgotCi0gICAgU3ViaW1hZ2Ugc3BlY2lmaWNhdGlvbiBpcyB1c2VkIHRvIGRlbm90ZSBhIHBhcnRpY3VsYXIgc3ViaW1hZ2UuIENvbmZpZ3VyYXRpb25zCi0gICAgYXJlIGEgYml0IG1vcmUgY29tcGxleCAtLSB0aGV5IGFyZSB1c2VkIHRvIGRlZmluZSBhIHBhcnRpY3VhbHIgYm9vdGluZyBzZXR1cCwKLSAgICBmb3IgZXhhbXBsZSBhIChrZXJuZWwsIGZkdCBibG9iKSBwYWlyLCBvciBhIChrZXJuZWwsIHJhbWRpc2ssIGZkdCBibG9iKSB0dXBsZSwKLSAgICBldGMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZmZmODg4YTE5OTdmZjdkZTliMjllMjQwNTBmYzRhMGZkNDAzYmExNgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEZlYiAyMSAxNzoyMDoxOSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIGdlbl9nZXRfaW1hZ2UoKSByb3V0aW5lCi0KLSAgICBUaGlzIHJvdXRpbmUgYXNzdXJlcyB0aGF0IGltYWdlICh3aGV0aGVyIGxlZ2FjeSBvciBGSVQpIGlzIG5vdAotICAgIGluIGEgc3BlY2lhbCBkYXRhZmxhc2ggc3RvcmFnZS4KLQotICAgIElmIGltYWdlIGFkZHJlc3MgaXMgYSBkYXRhZmxhc2ggYWRkcmVzcyBpbWFnZSBpcyBtb3ZlZCB0byBzeXN0ZW0gUkFNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDc1ZDNlOGZiZDkzYzE0ZDk5MjlkMDI0Yzc1YWYyZDc0MmM3NmRiNzAKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBGZWIgMjEgMTc6MjA6MTggMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIFB1bGwgaW4gbGliZmR0IGlmIENPTkZJR19GSVQgaXMgZW5hYmxlZAotCi0gICAgTmV3IHVJbWFnZSBmb3JtYXQgKEZsYXR0ZW5lZCBJbWFnZSBUcmVlKSByZXF1aXJlcyBsaWJmZHQKLSAgICBmdW5jdGlvbmFsaXR5LCBwcmludCBvdXQgZXJyb3IgbWVzc2FnZSBpZiBDT05GSUdfT0ZfTElCRkRUCi0gICAgaXMgbm90IGRlZmluZWQuCi0KLSAgICBOZXcgdUltYWdlIHN1cHBvcnQgaXMgZW5hYmxlZCBieSBkZWZpbmluZyBDT05GSUdfRklUIChhbmQgQ09ORklHX09GX0xJQkZEVCkuCi0gICAgVGhpcyBjb21taXQgdHVybnMgaXQgb24gYnkgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAxYmE2MzlkYTU2MDRhNjRiM2VkODg0YTJjYmIxYzU0MTRhOWZhNzI4Ci1BdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+Ci1EYXRlOglNb24gRmViIDE4IDIzOjE2OjM1IDIwMDggKzAxMDAKLQotICAgIENGSTogRG8gbm90IHVzZSB1bmluaXRpYWxpemVkIGNtZF9yZXNldAotCi0gICAgRG8gbm90IHVzZSB1bmluaXRpYWxpemVkIGNtZF9yZXNldDsgaXNzdWUgYm90aCBBTUQgYW5kIEludGVsIHJlc2V0Ci0gICAgY29tbWFuZHMgaW5zdGVhZAotCi0gICAgRnJvbSBhIHNob3J0IHRlc3QsIGl0IGxvb2tzIGxpa2UgQU1ELXN0eWxlIGZsYXNoIHJvbXMgdHJlYXQgKmFueSogdW5rbm93bgotICAgIGNvbW1hbmQgd3JpdGUgYXMgYSByZXNldCwgYXQgbGVhc3Qgd2hlbiBpbiBDRkkgUXVlcnkgbW9kZSwgc28gaXNzdWluZyB0aGUKLSAgICBJbnRlbCByZXNldCBjb21tYW5kIHRvIEFNRC1zdHlsZSBmbGFzaHMgc2VlbXMgc2FmZSAoZnJvbSB0aGUgc21hbGwgc2FtcGxlIEkKLSAgICBoYXZlKSwgcGx1cyB0aGUgMy1jeWNsZSBtYWdpYyBzZXF1ZW5jZSBzaG91bGQga2ljayB0aGUgc3RhdGUgbWFjaGluZSBpbnRvCi0gICAgdGhlIHJpZ2h0IHN0YXRlIGV2ZW4gd2l0aG91dCBhIHJlc2V0IGNvbW1hbmQuIFNpbmNlIHRoZSBBTUQtc3R5bGUgZmxhc2hzCi0gICAgcmVxdWlyZSB0aGUgdW5sb2NrIHNlcXVlbmNlIGZvciByZWFsIG9wZXJhdGlvbiwgSSBjaG9zZSB0byB0cnkgdGhlIEFNRCByZXNldAotICAgIGNvbW1hbmQgZmlyc3QsIHNvIHRoYXQgSW50ZWwgZmxhc2hzIGRvIG5vIHNlZSBhbiBpbnZhbGlkIGNvbW1hbmQgcHJpb3IgdG8KLSAgICB0aGUgQ0ZJIHF1ZXJ5LgotCi0gICAgSSBoYXZlIHRlc3RlZCB0aGUgcGF0Y2ggb24gQU0yOUxWMzIwLXN0eWxlIGZsYXNocyBmcm9tIEZ1aml0c3UgYW5kIE1hY3Jvbml4LAotICAgIHBsdXMgSW50ZWwgU3RyYXRhRmxhc2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGU3YTg1ZjI2ODMwYzlmMmU3ODUwNjQyMWMyZDUxOWEyOTY1YmM3YTEKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBGZWIgMjEgMTE6NTY6NDQgMjAwOCArMDEwMAotCi0gICAgQVBJOiBBZGQgKGMpIGFuZCBsaWNlbnNpbmcgbm90aWNlIHRvIHRoZSBwdWJsaWMgQVBJIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA5MjhkMWQ3N2Y4NjIzYzEyMGQ4NzYzZTIwZTFjYTU4ZGY5YzVjNGM2Ci1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBGZWIgMjEgMTE6MDY6MDcgMjAwOCArMDEwMAotCi0gICAgRml4IENQVSBQT1NUIHRlc3QgZmFpbHVyZQotCi0gICAgVGhlIENQVSBQT1NUIHRlc3QgY29kZSAocnVuIGZyb20gY3B1X3Bvc3RfZXhlY18zMSgpKSBkb2Vzbid0IGZvbGxvdyB0aGUKLSAgICBBQkkgY2FyZWZ1bGx5LCBhdCBsZWFzdCB0aGUgQ1IzLCBDUjQsIGFuZCBDUjUgZmllbGRzIG9mIENSIGFyZSBjbG9iYmVyZWQKLSAgICBieSBpdC4gVGhlIGdjYy00LjIgd2l0aCBpdHMgbW9yZSBhZ2dyZXNzaXZlIG9wdGltaXphdGlvbiBleHBvc2VzIHRoaXMgZmFjdC4KLSAgICBUaGlzIHBhdGNoIGp1c3Qgc2F2ZXMgdGhlIENSIHZhbHVlIGJlZm9yZSBydW5uaW5nIHRoZSB0ZXN0IGNvZGUsIHNvIGFsbG93aW5nCi0gICAgaXQgdG8gZG8gYW55dGhpbmcgaXQgd2FudHMgd2l0aCBDUi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERtaXRyeSBSYWtoY2hldiA8cmRhQGVtY3JhZnQuY29tPgotICAgIEFja2VkLWJ5OiBZdXJpIFRpa2hvbm92IDx5dXJAZW1jcmFmdC5jb20+Ci0gICAgLS0KLQotY29tbWl0IGQ1OTA4YjA5Mzk1NTQxNWYzZDM0MDcwNjM3OGI5OTFmOTExYWY2NzEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBGZWIgMjAgMTU6MjY6NTEgMjAwOCAtMDYwMAotCi0gICAgODYxMEhQQ0Q6IERvY3VtZW50IHRoZSBmbGFzaGJhbmsgc2VsZWN0aW9uIHN3aXRjaGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE1NTFjZWU5OWFkMWQxZGEyMGZkMjNhZDI2NWRlNDc0NDg4NTJmNTYKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBGZWIgMjAgMTQ6MjI6MjYgMjAwOCAtMDYwMAotCi0gICAgODZ4eDogRml4IEdVUiBQQ0kgY29uZmlnIHJlZ2lzdGVycyBwcm9wZXJseS4KLQotICAgIEJhY2sgaW4gY29tbWl0IDk3NWEwODNhNWVmNzg1YzQxNGIzNWY5YzViOGFlMjViMjZiNDE1MjQgd2hlcmUKLSAgICBJIHRyaWVkIHRvICI4NjEwSFBDRDogRml4IHR5cG9zIGluIHR3byBQQ0kgc2V0dXAgcmVnaXN0ZXJzIiwgSQotICAgIGJvdGNoZWQgaXQgZHVlIHRvIG5vdCByZWFsaXppbmcgdGhhdCA4NjEwIGFuZCA4NjQxIGhhZCBkaWZmZXJlbnQKLSAgICBHbG9iYWwgVXRpbGl0eSBSZWdpc3RlciBkZWZpbnRpb25zLCBvbmUgb2Ygd2hpY2ggd2FzIGxpa2UgODV4eCwKLSAgICBhbmQgdGhlIG90aGVyIHdhc24ndC4gIENvcnJlY3QgdGhpcyBwcm9ibGVtIGJ5IGludHJvZHVjaW5nIHR3bwotICAgIHN5bWJvbHMsIG9uZSBmb3IgZWFjaCA4Nnh4IFNvQywgYnV0IG5laXRoZXIgb2Ygd2hpY2ggaXMgbmFtZWQKLSAgICBhbnl0aGluZyBsaWtlIDg1eHguCi0KLSAgICBNeSBiYWQuICBMb3ZlbHkgV2VkbmVzZGF5IHdpdGggZ2l0IGJpc2VjdC4JWW91IGtub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2IwNmViOTYxYmRmZmM4NzI4YjM4YzI0MjQ3M2Q4MDJlODNhYjJiNAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAyMCAxMjoyNDoxMSAyMDA4IC0wNjAwCi0KLSAgICA4NjEwSFBDRDogRG9uJ3QgdXNlIFZJREVPL0NGQl9DT05TT0xFIGJ5IGRlZmF1bHQuCi0KLSAgICBXaXRob3V0IGFuIGFjdHVhbCBzdXBwb3J0ZWQgdmlkZW8gY2FyZCBob29rZWQgdXAsIGVuYWJsaW5nCi0gICAgdGhlIENPTkZJR19WSURFTyBieSBkZWZhdWx0IGp1c3QgbWFrZXMgaXQgbG9vayBicm9rZW4gYnkKLSAgICByb3V0aW5nIGFsbCBjb25zb2xlIG91dHB1dCB0byB0aGUgdmlkZW8gY2FyZC4gICBEb24ndC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0ZDI2NGVmZjQzMTJmMjMwNzc2YjkxM2VkYWRlN2NlYjc1ZjFiMWUwCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMzAgMTU6MDg6MTUgMjAwOCAtMDYwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBtaXNzaW5nIGNvZGUgZmxhc2ggc2l6ZSBmb3IgTTU0ODVFVkIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIE1haGFuIDxrbWFoYW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzU0ZjkyNjNlNGUxMWUzNGIxZTcwYzE2MGJjNDY3ZWYxZDhlYzU5ZAotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDMwIDE1OjA0OjQyIDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBGaXggNTI4MiBhbmQgNTI3MSBpbnRlcnJ1cHQgbWFzayBiaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5NzVhMDgzYTVlZjc4NWM0MTRiMzVmOWM1YjhhZTI1YjI2YjQxNTI0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgRmViIDE5IDEyOjMxOjA4IDIwMDggLTA2MDAKLQotICAgIDg2MTBIUENEOiBGaXggdHlwb3MgaW4gdHdvIFBDSSBzZXR1cCByZWdpc3RlcnMuCi0KLSAgICBUaGUgdHdvIHN5bWJvbHMgTVBDODZ4eF9QT1JERVZTUl9JT19TRUwgYW5kIE1QQzg2eHhfUE9SQk1TUl9IQQotICAgIHdlcmUgZXJyb25lb3VzbHkgcHJlc2VudCBhcyA4NXh4IG5hbWVzIGFuZCB2YWx1ZXMsIGxlZnRvdmVyIGZyb20KLSAgICB0aGUgY2xvbmUgd2Fycy4gIEZpeCB0aGlzIGJ5IHJlbW92aW5nIHRoZSA4NXh4IGNydWZ0IGZyb20gdGhlCi0gICAgODZ4eCBjb2RlYmFzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxM2Y1NDMzZjcwMGQ0ZGE5ZjZmZGYyYTRiYjgwMzEwMTMzYTdjMTcwCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gRmViIDE4IDE0OjAxOjU2IDIwMDggLTA2MDAKLQotICAgIDg2eHg6IENvbnZlcnQgc2JjODY0MWQgdG8gdXNlIGxpYmZkdC4KLQotICAgIFRoaXMgaXMgdGhlIHByb3BlciBmaXggZm9yIGEgbWlzc2luZyBjbG9zaW5nIGJyYWNlIGluIHRoZSBmdW5jdGlvbgotICAgIGZ0X2NwdV9zZXR1cCgpIG5vdGljZWQgYnkgam9lLmhhbW1hbiA8YXQ+IGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tLgotICAgIFRoZSBmdF9jcHVfc2V0dXAoKSBmdW5jdGlvbiBpbiBtcGM4NjQxaHBjbi5jIHNob3VsZCBoYXZlIGJlZW4KLSAgICByZW1vdmVkIGVhcmxpZXIgYXMgaXQgd2FzIHVuZGVyIHRoZSBvYnNvbGV0ZSBDT05GSUdfT0ZfRkxBVF9UUkVFLAotICAgIGJ1dCB3YXMgbWlzc2VkLiAgT25seSwgdGhlIHNiYzg2NDFkIHdhcyBub21pbmFsbHkgc3RpbGwgdXNpbmcgaXQuCi0gICAgSXQgYWxsIGdvdCByaXBwZWQgb3V0LCBhbmQgdGhlIGZ1bmNhbGl0eSB0aGF0IHdhcyBpbiBmdF9ib2FyZF9zZXR1cCgpCi0gICAgd2FzIHJlZmFjdG9yZWQgdG8gcmVtb3ZlIHRoZSBDUFUgcG9ydGlvbnMgaW50byB0aGUgbmV3IGZpbGUKLSAgICBjcHUvbXBjODZ4eC9mZHQuYyBpbnN0ZWFkLglNYWtlIHNiYzg2NDFkIHVzZSB0aGlzIG5vdy4KLQotICAgIEJhc2VkIGxvb3NlbHkgb24gYW4gb3JpZ2luYWwgcGF0Y2ggZnJvbSBqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDRlZmRkYzg3YzUwYzg0Zjg1ZGFkNWMzMzFjNjM0YTZjZTgzMGE4MwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEZlYiAxNyAyMzozNTozMSAyMDA4ICswMTAwCi0KLSAgICBtcGM4Nnh4OiBGaXggdW51c2VkIHZhcmlhYmxlICdjb25maWcnIGFuZCAnaW1tYXAnCi0KLSAgICBhbmQgcmVtb3ZlIHVzZWxlc3MgQ09ORklHX0REUl9JTlRFUkxFQVZFCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgODNkMWIzODc2Njk1YzRmMjFmYWZmMmI3MzFkOWVmODNmMzhlZDIwOAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEZlYiAxNyAyMzowMzozNiAyMDA4ICswMTAwCi0KLSAgICBtcGM4Nnh4OiBGaXggaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb25zICdpbml0X2xhd3MnIGFuZCAnZGlzYWJsZV9sYXcnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYjZmMjljODRjMjA4YTA5MWY5NWExMGNiYzk4NTJkNzI5NjU5YmEyMAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEZlYiAxNyAxNDoxNTozMSAyMDA4ICswMTAwCi0KLSAgICBzM2MyNHgwOiBGaXggdW51c2VkIHZhcmlhYmxlICdpJyBpbiBmdW5jdGlvbiAnc2VyaWFsX2luaXRfZGV2JwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDA5MzdiOGQ4NjlmZGI0MmQ2YWQ0ZmUzMTI5NTg2MzliZDYyYzk3M2YKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBGZWIgMTcgMTQ6MTU6MzIgMjAwOCArMDEwMAotCi0gICAgcHhhOiBmaXggYXNzaWdubWVudCBmcm9tIGluY29tcGF0aWJsZSBwb2ludGVyIHR5cGUKLQotICAgIGZpeCBtbWNfYnJlYWQgZnVuY3Rpb24gcHJvdG90eXBlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNjRkNzkyMDYzZmZmOTBiODExODE3OWIwOTJmZWVlMDlmZTVjYWUxMwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEZlYiAxNyAxNDoxNTozMCAyMDA4ICswMTAwCi0KLSAgICBhdDkxY2FwOWFkazogZml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdldGhfaW5pdCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAzNzVjNDM1M2RiOGY5MDBmN2VjNzcyZTI2ZmFiMTE2ZWMwMGY3ZDNhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gRmViIDE3IDE1OjQzOjQ0IDIwMDggKzAxMDAKLQotICAgIFJlbW92ZSBmaWxlcyBhZGRlZCBieSBtaXN0YWtlLCB1cGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGI3Mzg2NTRkM2M4NGEzMGYyYmZkOWE4ZDc2NTJmZjIwODA3Yzg5MGMKLUF1dGhvcjogTWlrZSBOdXNzIDxtaWtlQHRlcmFzY2FsYS5jb20+Ci1EYXRlOglXZWQgRmViIDYgMTE6MTA6MTEgMjAwOCAtMDUwMAotCi0gICAgUFBDNDQwRVB4OiBPcHRpb25hbGx5IGVuYWJsZSBzZWNvbmQgSTJDIGJ1cwotCi0gICAgVGhlIG9wdGlvbiBDT05GSUdfSTJDX01VTFRJX0JVUyBkb2VzIG5vdCBoYXZlIGFueSBlZmZlY3Qgb24gU2VxdW9pYSwgdGhlCi0gICAgUFBDNDQwRVB4IHJlZmVyZW5jZSBwbGF0Zm9ybSwgYmVjYXVzZSBJSUMxIGlzIG5ldmVyIGVuYWJsZWQuIEFkZCBTZXF1b2lhIGJvYXJkCi0gICAgY29kZSB0byB0dXJuIG9uIElJQzEgaWYgQ09ORklHX0kyQ19NVUxUSV9CVVMgaXMgc2VsZWN0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIE51c3MgPG1pa2VAdGVyYXNjYWxhLmNvbT4KLSAgICBDYzogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWY1YjRmMjIxYzIyZDA1NzcwODc4NTEzOTUxNzQ1ZjIzNmI1YjQzZgotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotRGF0ZToJVHVlIEZlYiA1IDEwOjI2OjQ0IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogSENVNC81LiBDbGVhbnVwIGNvbmZpZ3MKLQotICAgIC0gaGN1NC5oOiBSZW1vdmVkIGRlZmluZSBvZiBDT05GSUdfUFBDNDA1R1ByCi0gICAgLSBDb3JyZWN0ZWQgcGh5IGFkZHJlc3NlcwotICAgIC0gRml4IGJvb3QgdmFyaWFibGVzCi0gICAgLSBSZXNwZWN0IGxpbmUgbGVuZ3RoIG9mIDgwIGNoYXJzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgNzQ5NzMxMjZkMWJlNjNhYzc1YmRjMTkyZjQ2MjM0ZGNhM2E3YzQyMQotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotRGF0ZToJVHVlIEZlYiA1IDExOjMxOjI4IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogSENVNC81LiBDbGVhbnVwcwotCi0gICAgLSBGaXggc29tZSBjb2Rpbmcgc3R5bGUgdmlvbGF0aW9ucy4KLSAgICAtIFVzZSBpbi9vdXRfdTE2LzMyIHdoZXJlIGFwcHJvcHJpYXRlLgotICAgIC0gVXNlIHJlZ2lzdGVyIG5hbWVzIGZyb20gcHBjNDA1LmguCi0gICAgLSBGaXggdHJhY2UgdXNlYWdlIGZvciBMYXV0ZXJiYWNoLgotICAgIC0gUmVtb3ZlIG9ic29sZXRlIGdlbmVyYXRpb24gSENVMi4KLSAgICAtIFJlbmFtZWQgZml4ZWRfaGN1NF9zZHJhbSB0byBpbml0X3BwYzQwNV9zZHJhbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCA4Y2MxMGQwNmI4MzNlZDkxN2ExOWFkMzU4YzhlYmJlZDhiYzE5NTU1Ci1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglUdWUgRmViIDUgMTA6MjY6NDEgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBQUEM0MDVHUHIgZml4IG1pc3NpbmcgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCAyMTQzOThkOWNiMjIyNjhkOWQ0Zjc1NjMzNTllZGNhMGY3ODI5N2EyCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotRGF0ZToJRnJpIEphbiAxOCAyMTo0OTowNSAyMDA4IC0wNTAwCi0KLSAgICBwcGM0eHg6IEJlYXV0aWZ5IGNvbmZpZ3VyYXRpb24gZmlsZXMgZm9yIFNlcXVvaWEgYW5kIEtvcmF0IGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCAzMGM2YTI0MWU4ODQ5OWY1MzZlODZkMzI1NzU5ZTI5YmEwMGZmNjdmCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBGZWIgMTUgMjA6MDk6MDEgMjAwOCArMDEwMAotCi0gICAgV2lwZSBvdXQgYXNzZW1ibGVyIHdhcm5pbmdzIHdoaWxlIGNvbXBpbGluZyB4ODYgYmlvc2VtdQotCi0gICAgVGhpcyBwYXRjaCB0cmllcyB0byBnZXQgcmlkIG9mIHNvbWUgYXNzZW1ibGVyIHdhcm5pbmdzIGFib3V0Ci0gICAgY2hhbmdlZCAuZ290MiBzZWN0aW9uIHR5cGUgd2hpbGUgY29tcGlsaW5nIHg4NiBiaW9zIGVtdWxhdG9yCi0gICAgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDY3YTQzODllMzlhZDg1M2Q2NWI3MmUyYjdjYWQxNWM3ZTgyOTExNDcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBGZWIgMTUgMDA6NTc6MDkgMjAwOCArMDEwMAotCi0gICAgUHJlcGFyZSB2MS4zLjItcmMxIHJlbGVhc2UgY2FuZGlkYXRlCi0KLWNvbW1pdCBmMzNlOTY1M2M5YzA5ODY4OTk1ZDc4ODUxMWQ1NzM3NzFjMjA5ZmU1Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBGZWIgMTUgMDA6MTM6MjAgMjAwOCArMDEwMAotCi0gICAgRml4IGNvbXBpbGUgd2FybmluZyBvbiBsaWJfcHBjL2JvYXJkLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IGU1YzZmOWY4YmVjNGRmZjk2MDM0MTkxNjFlM2ExNWNjOGFkNWQ1ZjQKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVGh1IEZlYiAxNCAxODoyMjowNCAyMDA4ICswMTAwCi0KLSAgICBBZGQgUmFkZW9uIE1vYmlsaXR5IDkyMDAgcGNpIGRldmljZSBpZCB0byB0aGUgcmFkZW9uIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCBleHRlbmRzIFBDSSBkZXZpY2UgaWQgdGFibGUgb2YgdGhlCi0gICAgcmFkZW9uIGRyaXZlciBzbyB0aGF0IHRoZSBkcml2ZXIgd2lsbCBhbHNvIHN1cHBvcnQKLSAgICBSYWRlb24gTW9iaWxpdHkgOTIwMCAoTTkrKSBiYXNlZCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCAxYjg2MDdlMWY3MTQzNTQ4YzYwNjJjMjgzNzE0NDllYzY5NTg4YzAwCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgMTQgMTg6MTk6NTAgMjAwOCArMDEwMAotCi0gICAgRXh0ZW5kIEFUSSBSYWRlb24gZHJpdmVyIHRvIHN1cHBvcnQgbW9yZSB2aWRlbyBtb2RlcwotCi0gICAgQWRkcyBBVEkgUmFkZW9uIDkyMDAgc3VwcG9ydCBmb3IgMTI4MHgxMDI0LCAxMDI0eDc2OCwKLSAgICA4MDB4NjAwLCA2NDB4NDgwIGF0IDI0LCAxNiBhbmQgOCBicHAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA0MTI0MzgyZGUwMjlkMzYxMTYyYTRiOGNlY2M3NzNlYjhmMjZlMmE4Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gRmViIDEwIDE3OjA1OjIwIDIwMDggKzAxMDAKLQotICAgIHhzZW5naW5lOiBmaXggdHlwbyBhbmQgZmV3IGNvZGluZyBzdHlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDZmNGFiZWU3ODliNmQ5YmUzZWM0Yjk3YWQ0OGY1MDkzNTU1NTllOWUKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+Ci1EYXRlOglGcmkgRmViIDggMjE6MjU6NTggMjAwOCArMDEwMAotCi0gICAgRml4IHdyb25nIG1lbW9yeSBsaW1pdCBjYWxjdWxhdGlvbiBpbiBtZW1vcnktdGVzdAotCi0gICAgSWYgdGhlIGxlbmd0aCBvZiB0aGUgbWVtb3J5IGFkZHJlc3MgcmFuZ2UgcGFzc2VkIHRvIHRoZSAibXRlc3QiIGNvbW1hbmQgaXMKLSAgICBub3Qgb2YgdGhlIGZvcm0gMl54IC0gMSwgbm90IGFsbCBhZGRyZXNzIGxpbmVzIGFyZSB0ZXN0ZWQuIFRoaXMgYnVnIGlzCi0gICAgaW5oZXJpdGVkIGZyb20gdGhlIG9yaWdpbmFsIHNvZnR3YXJlIGF0Ci0gICAgaHR0cDovL3d3dy5uZXRyaW5vLmNvbS9FbWJlZGRlZC1TeXN0ZW1zL0hvdy1Uby9NZW1vcnktVGVzdC1TdWl0ZS1DLiBGaXgKLSAgICB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxnLmxpYWtob3ZldHNraUBnbXguZGU+Ci0KLWNvbW1pdCA3ZTMwZjVlYWM3ZjA3MDgyYTdjYTc3YjdkOTFiOTQ0YThkMGFmNmRiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgRmViIDE1IDAwOjExOjM5IDIwMDggKzAxMDAKLQotICAgIENvZGluZyBTVHlsZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGY2OTIxZTNkYzMzMTI5M2M4NzNlYzRkMTA5ZmQ1NTE3YTQyYTkwYjMKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJVHVlIEZlYiA1IDEzOjMwOjQzIDIwMDggKzA5MDAKLQotICAgIHNoOiBGaXggcmVnaXN0ZXIgYWRkcmVzcyBvZiBTSDc3MjIKLQotICAgIFRoZSBhZGRyZXNzIG9mIFNINzcyMiBpcyB3cm9uZyBieSBvbGQgZG9jdW1lbnQuCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAwZWM3YTA2MWZiMWMyNzdmNmFmZDczZDYxZGQ3MWJkMjFlN2VmN2IyCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxNzo0NDoyMyAyMDA4IC0wNTAwCi0KLSAgICBvbmx5IHVwZGF0ZSB2ZXJzaW9uIGhlYWRlciBhcyBuZWVkZWQKLQotICAgIENvbnN0YW50bHkgcmVidWlsZGluZyB0aGUgdmVyc2lvbiBoZWFkZXIgd2lsbCBmb3JjZSB1c2VsZXNzIHJlbGlua2luZywgc28gd2UKLSAgICBzaW1wbHkgbmVlZCB0byBjb21wYXJlIHRoZSBuZXcgaGVhZGVyIHdpdGggdGhlIGV4aXN0aW5nIG9uZSBiZWZvcmUgdXBkYXRpbmcKLSAgICBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDIwODQ0N2Y4ZTk1M2YzNDc0MjVlYjkyYzhlMjhkNTllNmQ5MTEzNjMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEphbiAyOCAwNTo1NjoxOSAyMDA4IC0wNTAwCi0KLSAgICBEbyBub3Qgc3BlY2lmeSBhIENST1NTX0NPTVBJTEUgZGVmYXVsdCB3aGVuIGV4ZWN1dGluZyBzaXplCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAxZjc4MGFhNmYxN2E1ZDc5NzkxZDY5ZWMxZDJmNjZkNzZhYzQ1ZDhlCi1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgotRGF0ZToJV2VkIEZlYiAxMyAxMToxOToxOSAyMDA4ICswMTAwCi0KLSAgICBGaXggcmV0dXJuIHZhbHVlIG9mIG10ZXN0IHdoZW4gQ0ZHX0FMVF9NRU1URVNUIHNldAotCi0gICAgRml4IGEgbWlzc2luZyByZXR1cm4gc3RhdGVtZW50IGZyb20gYSBub24tdm9pZCBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8Zy5saWFraG92ZXRza2lAZ214LmRlPgotCi1jb21taXQgOTQzYWZhMjI5Y2Y1YmY3MGVmOTE3YzdlYjZiZDBkYjU5YTFiYTYwMgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEphbiA5IDE0OjM1OjI2IDIwMDggLTA2MDAKLQotICAgIDg1eHgsIDg2eHg6IERldGVybWluZSBJMkMgY2xvY2sgZnJlcXVlbmNpZXMgYW5kIHN0b3JlIGluIGdsb2JhbF9kYXRhCi0KLSAgICBVcGRhdGUgZ2xvYmFsX2RhdGEgdG8gZGVmaW5lIGkyYzFfY2xrIGFuZCBpMmMyX2NsayB0byA4NXh4IGFuZCA4Nnh4LgotCi0gICAgVXBkYXRlIHRoZSBnZXRfY2xvY2tzKCkgZnVuY3Rpb24gaW4gODV4eCBhbmQgODZ4eCB0byBkZXRlcm1pbmUgdGhlIEkyQwotICAgIGNsb2NrIGZyZXF1ZW5jeSBhbmQgc3RvcmUgaXQgaW4gZ2QtPmkyYzFfY2xrIGFuZCBnZC0+aTJjMl9jbGsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjkzMWIzYTljM2JkZmFhZWFhNzFlNTdhNjAyNmVlYzcyNjAwNWIwOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IEZlYiAxNCAyMzoxODowMSAyMDA4ICswMTAwCi0KLSAgICBUUU04MzR4OiBjbGVhbiB1cCBjb25maWd1cmF0aW9uCi0KLSAgICBHZXQgYm9hcmQgbmFtZSBjb25zaXN0ZW50IHdpdGggTGludXggYW5kIGVsc2V3aGVyZTsKLSAgICBnZXQgcmlkIG9mIGxvY2FsIG5ldHdvcmsgZGVmaW5pdGlvbnMgZXRjLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDM4Y2MwOWM1NWIxZDdmMjMzNzg5MDUyYzZmYzQ2MmU1Mzc3NjY5YTkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBGZWIgMTQgMDg6MDI6MTIgMjAwOCArMDEwMAotCi0gICAgVEZUUDogZml4IHNlYXJjaCBvZiAnOicgaW4gQm9vdEZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwYmM5ZWZhZGExNzAwOTZjNmIyNzNmMTkxNjVlMzI5MzZkMzMwZDgwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgRmViIDE0IDIyOjQ2OjU1IDIwMDggKzAxMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGU3NjcwZjZjMWU1MmFlNmQyYTQzZmY3NWE4YmNmYTdhNWM4NmU0N2IKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgMTQgMjI6NDM6MjIgMjAwOCArMDEwMAotCi0gICAgUFBDOiBVc2UgcjIgaW5zdGVhZCBvZiByMjkgYXMgZ2xvYmFsIGRhdGEgcG9pbnRlcgotCi0gICAgUjI5IHdhcyBhbiB1bmx1Y2t5IGNob2ljZSBhcyB3aXRoIHJlY2VudCB0b29sY2hhaW5zIChnY2MtNC4yLngpIGdjYwotICAgIHdpbGwgcmVmdXNlIHRvIHVzZSBsb2FkL3N0b3JlIG11bHRpcGxlIGluc25zOyBpbnN0ZWFkLCBpdCBpc3N1ZXMgYQotICAgIGxpc3Qgb2Ygc2ltcGxlIGxvYWQvc3RvcmUgaW5zdHJ1Y3Rpb25zIHVwb24gZnVuY3Rpb24gZW50cnkgYW5kIGV4aXQsCi0gICAgcmVzdWx0aW5nIGluIGJpZ2dlciBjb2RlIHNpemUsIHdoaWNoIGluIHR1cm4gbWFrZXMgdGhlIGJ1aWxkIGZvciBhCi0gICAgZmV3IGJvYXJkcyBmYWlsLgotCi0gICAgVXNlIHIyIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgM2MyMzRlZmE2OTNiYzU5OTA2YzJiZTU1Yzc5MThlY2JiNTUzOTJlYQotQXV0aG9yOiBVd2UgS2xlaW5lLUvDtm5pZyA8VXdlLktsZWluZS1Lb2VuaWdAZGlnaS5jb20+Ci1EYXRlOglXZWQgSmFuIDMwIDA5OjA4OjQ5IDIwMDggKzAxMDAKLQotICAgIEFSTTogbWFrZSB0aGUgbWFjaGlkIGNvbmZpZ3VyYWJsZSB2aWEgdGhlIGVudmlyb25tZW50Ci0KLSAgICBJZiB0aGUgdmFyaWFibGUgIm1hY2hpZCIgZXhpc3RzLCBsZXQgZG9fYm9vdG1fbGludXggdXNlIHRoYXQgaW5zdGVhZAotICAgIG9mIGJkLT5iaV9hcmNoX251bWJlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFV3ZSBLbGVpbmUtS/ZuaWcgPFV3ZS5LbGVpbmUtS29lbmlnQGRpZ2kuY29tPgotCi1jb21taXQgZGQyNDA1ODQwN2M1YWRkNDVjYzYwYWVjNmM3NTdkZGMxYTE3ZTFiMAotQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KLURhdGU6CVdlZCBKYW4gMjMgMTY6MzQ6NDYgMjAwOCArMDIwMAotCi0gICAgVXNlICNpZmRlZiBDT05GSUdfRlNMRE1BRkVDCi0KLSAgICBNQ0RfdGFza3MuYyBsYWNrcyBbc3ViamVjdF0gc28gY29tcGlsYXRpb24gb2YgbWlwcyB0YXJnZXRzIChhbmQgbW9yZSwgcHJvYmFibHkpCi0gICAgZmFpbHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgotCi1jb21taXQgMjZjN2JhYjgxZTA4ZGM3YmQ2OTZjNDhmNzUzNDI4YTgyOTYyOWJkOAotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU2F0IEphbiAxOSAxMDoyNTo1OSAyMDA4ICswOTAwCi0KLSAgICBjb21tb24vbWlpcGh5dXRpbC5jOiBDbGVhbnVwIE1JSV9ERUJVRyBhbmQgZGVidWcoKQotCi0gICAgQ3VycmVudCBNSUlfREVCVUcgaXMgY29uZnVzaW5nIGluIHR3byB3YXlzLiBPbmUgaXMgdXNlbGVzcyBkZWZpbmUtdGhlbi0KLSAgICB1bmRlZiBhdCB0aGUgdG9wIG9mIHRoZSBmaWxlLiBUaGUgb3RoZXIgaXMgdGhlcmUgaXMgb25seSBvbmUgZGVidWcoKSBpbgotICAgIHRoaXMgZmlsZSwgYW5kIHRoYXQgZG9lc24ndCBzZWVtIHdvcnRod2hpbGUgdG8gYm90aGVyIGhhdmluZyBNSUlfREVCVUcuCi0gICAgV2hpbGUgdGhlcmUgYXJlIG1hbnkgdXNlZnVsIHByaW50ZigpL3B1dHMoKSBkZWJ1ZyBjb2RlcywgYnV0IHRoZXkgYXJlIGZvcgotICAgIERFQlVHLCBub3QgZm9yIE1JSV9ERUJVRy4KLQotICAgIFRoaXMgcGF0Y2ggdHJpZXMgdG8gcHV0IHRoZW0gYWxsIHRvZ2V0aGVyIGludG8gTUlJX0RFQlVHIGFuZCBkZWJ1ZygpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDc1MWI5YjUxODlmMzI3NGIwM2M4MDkxNzI2MzEzMTZkNmIwMDJjODIKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDE2OjQzOjI1IDIwMDggKzA5MDAKLQotICAgIE9uZU5BTkQgSW5pdGlhbCBQcm9ncmFtIExvYWRlciAoSVBMKSBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIE9uZU5BTkQgYm9vdCB3aXRoaW4gVS1Cb290LgotICAgIEJlZm9yZSB0aGlzIHdvcmssIHdlIHVzZWQgYW5vdGhlciBPbmVOQU5EIElQTCBjYWxsZWQgWC1Mb2FkZXIgYmFzZWQKLSAgICBvbiBvcGVuIHNvdXJjZS4gV2l0aCB0aGlzIHdvcmssIHdlIGNhbiBidWlsZCB0aGUgb25lYm9vdC5iaW4gaW1hZ2UKLSAgICB3aXRob3V0IG90aGVyIHByb2dyYW0uCi0KLSAgICBUaGUgYnVpbGQgc2VxdWVuY2UgaXMgc2ltcGxlLgotICAgIEZpcnN0LCBpdCBjb21waWxlcyB0aGUgdS1ib290LmJpbgotICAgIFNlY29uZCwgaXQgY29tcGlsZXMgT25lTkFORCBJUEwKLSAgICBGaW5hbGx5LCBpdCBiZWNvbWVzIHRoZSBvbmVib290LmJpbiBmcm9tIE9uZU5BTkQgSVBMIGFuZCB1LWJvb3QuYmluCi0gICAgVGhlIG1lY2hhbmlzbSBpcyBzaW1pbGFyIHdpdGggTkFORCBib290IGV4Y2VwdCBpdCBib290cyBmcm9tIGl0c2VsZi4KLQotICAgIEFub3RoZXIgdGhpbmcgaXMgdGhhdCB5b3UgY2FuIG9ubHkgdXNlIHRoZSBPbmVOQU5EIElQTCBvbmx5IHRvIHdvcmsKLSAgICBvdGhlciBib290bG9hZGVyIHN1Y2ggYXMgUmVkQm9vdCBhbmQgc28gb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgMjFmNmY5NjM2ZjBlOTc4Mzk3NTQ4NzUxMzQ3NDI1ZmJmOGQ0MmJiMwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDE2IDEzOjA2OjU5IDIwMDggLTA2MDAKLQotICAgIEZpeCBDT05GSUdfTU1DIHVzYWdlIGluIGZhdCBjb2RlCi0KLSAgICBBICNpZiBzdGF0ZW1lbnQgaW4gZmF0LmMgZGVwZW5kZWQgb24gQ09ORklHX01NQywgaW5zdGVhZCBvZgotICAgIGRlZmluZWQoQ09ORklHX01NQykuICBUaGlzIG1lYW50IENPTkZJR19NTUMgbmVlZGVkIHRvIGJlIGRlZmluZWQKLSAgICBhcyAiMSIgcmF0aGVyIHRoYW4ganVzdCBkZWZpbmVkLiAgTm93IGl0J3MgYmV0dGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjU3ZDdkMzY0Y2UxODllMzliMGE2NDMzOGQyZjgwMTJjMDc0YTJiZAotQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiAxNSAxMjo1MjozMSAyMDA4ICswMTAwCi0KLSAgICBwcGM6IFJlZmFjdG9yIGNhY2hlIHJvdXRpbmVzLCBzbyB0aGVyZSBpcyBvbmx5IG9uZSBjb21tb24gc2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDNmMmFjOGY5MjhjNzZjYmQyMzc0NDM3YjJkMDc5ZjhiNDMyNGFhYmEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKYW4gMjMgMTU6NTU6MDIgMjAwOCAtMDYwMAotCi0gICAgODZ4eDogRml4IGNvbXBpbGF0aW9uIHdhcm5pbmcgaW4gc3lzX2Vwcm9tLmMKLQotICAgIHN5c19lZXByb20uYzo4Mjo5OiB3YXJuaW5nOiB1bmtub3duIGVzY2FwZSBzZXF1ZW5jZSAnXC8nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjUyMzAxMDcwMjU3MzNlODllMjhmZDVlNWNmZDkxNmQ0OTUzYzI4YQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuIGF0PgotRGF0ZToJRnJpIEZlYiAyMiAxMTo0MDo1MCAyMDA4ICswMDAwCi0KLSAgICBNb3ZlIEFUOTFSTTkyMDBESyBib2FyZCBzdXBwb3J0IHVuZGVyIGJvYXJkL2F0bWVsCi0KLSAgICBXZSBhbHJlYWR5IGhhdmUgYSB2ZW5kb3Igc3ViZGlyIGZvciBBdG1lbCwgc28gd2Ugc2hvdWxkIHVzZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW4gPGF0PiBhdG1lbC5jb20+Ci0KLWNvbW1pdCA2ZDA5NDNhNmJlOTk5NzdkNmQ4NTNkNTE3NDllOTk2M2Q2OGViMTkyCi1BdXRob3I6IEFuZHJlYXMgRW5nZWwgPGFuZHJlYXMuZW5nZWxAZXJpY3Nzb24uY29tPgotRGF0ZToJTW9uIEphbiAxNCAwOTowNjo1MiAyMDA4ICswMDAwCi0KLSAgICBBUk06IGNsZWFudXAgZHVwbGljYXRlZCBleGNlcHRpb24gaGFuZGxpbmdjb2RlCi0KLSAgICBNb3ZlIGR1cGxpY2F0ZWQgZXhjZXB0aW9uIGhhbmRsaW5nIGNvZGUgaW50byBsaWJfYXJtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBFbmdlbCA8YW5kcmVhcy5lbmdlbEBlcmljc3Nvbi5jb20+Ci0KLWNvbW1pdCBlYThkOTg5ZjRlZjgyMDNlMWMwMjkxZTYyNDM1YThjNjJlM2NmYjI5Ci1BdXRob3I6IFRpbW8gVHV1bmFpbmVuIDx0aW1vLnR1dW5haW5lbkBzeXNhcnQuZmk+Ci1EYXRlOglGcmkgRmViIDEgMTA6MDk6MDMgMjAwOCArMDAwMAotCi0gICAgU3VwcG9ydCBmb3IgQXJ0aWxhIE0tNTAxIHN0YXJ0ZXIga2l0Ci0KLSAgICBLaW1tbyBMZXBwYWxhIC8gU3lzYXJ0IGFuZAotICAgIFRpbW8gVHV1bmFpbmVuIC8gU3lzYXJ0Ci0KLWNvbW1pdCA5NjA0YjZlNTNkZGFlNGZlMDBhNDg4Y2JjZDZiMGU2Y2IzNDRiY2NjCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglNb24gRmViIDExIDEwOjUwOjE5IDIwMDggKzAwMDAKLQotICAgIEFUOTFDQVA5IHN1cHBvcnQKLQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotCi0gICAgcmVhZF9kYXRhZmxhc2goKSB0YWtlcyBhIHNpZ25lZCBjaGFyIHBvaW50ZXIgYXMgYSBwYXJhbWV0ZXIuIFNpbGVuY2UgYQotICAgIGZldyB3YXJuaW5ncyBkdWVzIHRvIGluY29ycmVjdCBwYXJhbWV0ZXIgdHlwZXMgaW4gZW52X2RhdGFmbGFzaC5jLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLQotY29tbWl0IDY0ZThhMDZhZjY4Y2RhMTc0YThhMDZkMGE2MWZjZTVlNWJiMTg5ZDcKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBGZWIgNyAwOTo0Mjo1NyAyMDA4ICswMDAwCi0KLSAgICBBVDkxQ0FQOSBzdXBwb3J0IDogbW92ZSBib2FyZCBmaWxlcyB0byBBdG1lbCB2ZW5kb3IgZGlyZWN0b3J5LgotCi0gICAgQVQ5MUNBUDkgc3VwcG9ydCA6IG1vdmUgYXQ5MWNhcDlhZGsgYm9hcmQgZmlsZXMgdG8gQXRtZWwgdmVuZG9yIGRpcmVjdG9yeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCA3MjYzZWYxOTFiODdkYTk0NzY4Zjc2MmM3MDkzYmVkZWI3MGRiOThmCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuIGF0PgotRGF0ZToJVGh1IEphbiAzIDIxOjE1OjU2IDIwMDggKzAwMDAKLQotICAgIEFUOTFDQVA5IHN1cHBvcnQgOiBNQUNCIGNoYW5nZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuIDxhdD4gcG9waWVzLm5ldD4KLSAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbiA8YXQ+IGF0bWVsLmNvbT4KLQotY29tbWl0IDZhZmNhYmYxMWQ3MzIxODUwZjRmZWFhZGZlZTg0MTQ4OGFjZTU0YzUKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBGZWIgNyAxNjozNzo1NCAyMDA4ICswMDAwCi0KLSAgICBBVDkxQ0FQOSBzdXBwb3J0IDogYm9hcmQvIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotCi1jb21taXQgZmVmYjZjMTA5MjhjYWE5ZTcxMzM1Y2FkNjRkY2I2NWM4M2ZjZThhYgotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbiBhdD4KLURhdGU6CVdlZCBKYW4gMzAgMjE6MTU6NTQgMjAwOCArMDAwMAotCi0gICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGNwdS8gZmlsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuIDxhdD4gcG9waWVzLm5ldD4KLQotY29tbWl0IGZhNTA2YTkyNmNlYzM0ODgwNTE0MzU3NmM5NDFmOGU2MWIzMzNjYzAKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVRodSBKYW4gMzEgMjE6MTU6NTMgMjAwOCArMDAwMAotCi0gICAgQVQ5MUNBUDkgc3VwcG9ydCA6IGluY2x1ZGUvIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotCi1jb21taXQgMjBiMTk3YzZmMjc5OWFmMzk5YTY4Zjk2YTFhZmY1NDNhNzU2MjFiOAotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJU3VuIEphbiAyMCAxOTo0OToyMSAyMDA4ICswMDAwCi0KLSAgICBBVDkxQ0FQOSBzdXBwb3J0IDogYnVpbGQgaW50ZWdyYXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCBkNDlmZTRiZWQ1YjY5ZWM5MTA5MDlkMWJkNjJkYTIzZWNkODgwMWZkCi1BdXRob3I6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci1EYXRlOglTdW4gSmFuIDIwIDIxOjA3OjAwIDIwMDggKzAwMDAKLQotICAgIEltcHJvdmUgRGF0YUZsYXNoIENTIGRlZmluaXRpb24uCi0KLSAgICBVc2UgYSBzdHJ1Y3R1cmUgaW5zdGVhZCBvZiB0aGUgZXJyb3IgcHJvbmUgdW5uYW1lZCBhcnJheSB0bwotICAgIGRlZmluZSB0aGUgcG9zc2libGUgZGF0YWZsYXNoIGJhbmtzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLQotY29tbWl0IGE2Y2RkMjFiNTYwMTQyMDg3MDYyMzg3MTJhODUzYTllOWEwYTIyOTAKLUF1dGhvcjogU3RlbGlhbiBQb3AgPHN0ZWxpYW5AcG9waWVzLm5ldD4KLURhdGU6CVNhdCBKYW4gMTkgMjE6MDk6MzUgMjAwOCArMDAwMAotCi0gICAgRml4IGFybTkyNmVqcyBjb21waWxlIHdoZW4gU0tJUF9MT1dMRVZFTF9JTklUIGlzIG9uCi0KLSAgICBGaXggYXJtOTI2ZWpzIGNvbXBpbGUgd2hlbiBTS0lQX0xPV0xFVkVMX0lOSVQgaXMgb24uCi0KLSAgICBjcHUvYXJtOTI2ZWpzL3N0YXJ0Lm86IEluIGZ1bmN0aW9uIGBjcHVfaW5pdF9jcml0JzoKLSAgICAuLi4vY3B1L2FybTkyNmVqcy9zdGFydC5TOjIyNzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbG93bGV2ZWxfaW5pdCcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCBlYTY4NmY1MmU0NWIzZGYyOTM4ODY2ZDNmNWE5OGJiMjU1NmRmZTJiCi1BdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci1EYXRlOglGcmkgRmViIDEgMTY6NTA6MjQgMjAwOCArMDAwMAotCi0gICAgRml4IHRpbWVyIG92ZXJmbG93IGluIERhVmluY2kKLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KLQotY29tbWl0IGY0ZTdjYmZjYjBmY2JjMzI1YTJiY2ZlYTdlMDBlM2RkMzdmOTM4NDYKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CUZyaSBGZWIgMSAxNjo0OTowOCAyMDA4ICswMDAwCi0KLSAgICBVcGRhdGUgYm9hcmQgTmV0U3RhcgotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotY29tbWl0IGI3ZjYxOTNlNzY2NTFlMWZkNjA2ZTQ2ZWIxMTkxNWI1M2NiNjYxOGIKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLURhdGU6CVR1ZSBGZWIgNSAxMDoyNjo0MiAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEhDVTQvNS4gRml4IG1ha2UgTz0uLi94eAotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDI5ZTM1MDBjYmM0M2M4OWVmZjZlNzIwY2E4M2UzNzVkZWVlY2Q5YjMKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci1EYXRlOglUdWUgSmFuIDIyIDA4OjUxOjU5IDIwMDggLTA1MDAKLQotICAgIHBwYzR4eDogQWRkIENPTkZJR180eHhfRENBQ0hFIGNvbXBpbGUgc3dpdGNoIHRvIERlbmFsaS1jb3JlIFNQRCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IGZlODkxZWNmNGQxODdlOWQxMWRkZTg2OWVkNDYyM2FmNTJiNTQ0NTEKLUF1dGhvcjogSGlyb3NoaSBJdG8gPGl0b0BtbGIuY28uanA+Ci1EYXRlOglUaHUgSmFuIDMxIDE4OjM1OjA0IDIwMDggKzA5MDAKLQotICAgIE5GUyBUaW1lb3V0IHdpdGggbGFyZ2UgZmlsZXMuCi0KLSAgICBSZXRyeSB0byBzZW5kIE5GUyBwYWNrZXQgYmVmb3JlIHJlYWNoaW5nIHRpbWVvdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIaXJvc2hpIEl0byA8aXRvQG1sYi5jby5qcD4KLQotY29tbWl0IDg4ZjcyNTI3ZjViODljMDkwNWFkNWMzNmNjMmVmOGQyOWRkNmJiZjAKLUF1dGhvcjogSm9oYW5uZXMgU3RlemVuYmFjaCA8anNAc2lnMjEubmV0PgotRGF0ZToJVHVlIEphbiAyOSAwMDoxMToyNSAyMDA4ICswMTAwCi0KLSAgICBBZGQgZGVwZW5kZW5jaWVzIHRvIGF2b2lkIHJhY2UgY29uZGl0aW9ucyB3aXRoIHBhcmFsbGVsIG1ha2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2hhbm5lcyBTdGV6ZW5iYWNoIDxqc0BzaWcyMS5uZXQ+Ci0KLWNvbW1pdCA2ZDFiNmY5Zjg5YzgxNWVhY2E0NGFjZmY4ZTczZWNlNzE4MWY2MWI2Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBKYW4gMjggMDU6NDY6MDEgMjAwOCAtMDUwMAotCi0gICAgTWFyayBib2FyZF9pbml0X1tmcl0gYXMgbm9yZXR1cm4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDE2MWIyYWY0ZDdiNDhmZDYwMmNlMzMzYzM1NWE0ZGYwMzM3ODkyYmIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEphbiAyOCAwNToyODo1MCAyMDA4IC0wNTAwCi0KLSAgICBPbmx5IHVzZSBURVhUX0JBU0UgaWYgZGVmaW5lZCBieSB0aGUgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDFiNzY5ODgxNzUwMDMwZjEwNzQzODA4YjlkNjAxM2UxMWY1NTkzNTAKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBKYW4gMjUgMDc6NTQ6NDcgMjAwOCArMDEwMAotCi0gICAgRml4IHJlbWFpbmluZyBDT05GSUdfQ09NTUFORFMKLQotICAgIHVwZGF0ZSBjb21tZW50cwotICAgIEZpeCBjb2Rpbmcgc3R5bGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwYzlkNDJlNmIwYjgzZDUwNzMzNWEyOTFlM2VhOTkyNDAwMzhmNGI5Ci1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglNb24gSmFuIDIxIDE2OjQ2OjAwIDIwMDggKzAxMDAKLQotICAgIEFkZCAqfiB0byAuZ2l0aWdub3JlCi0KLSAgICBPbmUgc2hvdWxkIG5ldmVyIGFkZCBhIGJhY2t1cCBmaWxlIGVuZGluZyBpbiB3aXRoIH4gdG8gdGhlIGdpdCByZXBvc2l0b3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDNjZmIwYzUxYjJiYjVlZGU1NGVjYTg1YWNlNWIxYmExMmJlMzE0YjAKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKYW4gMTcgMDA6MDI6MTAgMjAwOCAtMDYwMAotCi0gICAgUmVtb3ZlIGR1cGxpY2F0ZSBkZWZpbmVzIGZvciBBUlJBWV9TSVpFCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYzc3Y2U0NzRiMWM1N2IxM2U5ZDM2ZDk4MzBmMTQ3OTY2YzE0MzY5NAotQXV0aG9yOiBTdGVsaWFuIFBvcCA8c3RlbGlhbkBwb3BpZXMubmV0PgotRGF0ZToJTW9uIEphbiAxNCAyMjowODoxNCAyMDA4ICswMTAwCi0KLSAgICBGaXggaW5jb3JyZWN0IGFkZHJlc3MgdGVzdCBpbiBBVDkxRl9EYXRhZmxhc2hTZWxlY3QoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWxpYW4gUG9wIDxzdGVsaWFuQHBvcGllcy5uZXQ+Ci0KLWNvbW1pdCBkOWFkMTE1YmJmN2JiMDg0MmRlN2RiZDI1MDJiN2U0MzBmODNjYzNkCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgRmViIDEzIDE1OjA5OjU4IDIwMDggLTA2MDAKLQotICAgIEZpeCBidWlsZGluZyBvZiBmZHRfc3VwcG9ydC5jIGlmIERFQlVHIHNldAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGNjZDZlMTQ2NGU1Mzk2YmMxYTlhZWJmNzA3N2RkZjQzNDJlYWZlMDMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBGZWIgMTIgMTQ6NTM6MjggMjAwOCAtMDYwMAotCi0gICAgQWRkIENGR19NUEM4Nnh4X0REUl9BRERSIGFuZCBDRkdfTVBDODZ4eF9ERFIyX0FERFIgc3ltYm9scwotCi0gICAgVGhlc2UgcmVwbGFjZSBkaXJlY3Qgc3RydWN0dXJlIHJlZmVyZW5jZXMgZm9yIElNTVIgc2VjdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzYyNzc2YmU4ZGNhNDA5N2NhMDNkNGY5NDE1ZjA4ZDQ4ODdiNDVkMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAxMiAwMDo0NTowNiAyMDA4ICswMTAwCi0KLSAgICBHZXQgcmlkIG9mICIjdW5kZWYgREVCVUciIGZyb20gYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDczYmYxZTJkZTc4NjJiY2RiZDVhOWY5OTNiM2U4NGI2N2M4ZWE5YzgKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTUgMTc6MDk6NDEgMjAwOCAtMDYwMAotCi0gICAgUmVtb3ZlICN1bmRlZiBERUJVRyBmcm9tIE1QQzgzeHggYm9hcmQgaGVhZGVyIGZpbGVzCi0KLSAgICBSZW1vdmUgdGhlICIjdW5kZWYgREVCVUciIGxpbmUgZnJvbSBhbGwgRnJlZXNjYWxlIDgzeHggYm9hcmQgaGVhZGVyIGZpbGVzLgotICAgIFRoZSBpbmNsdXNpb24gb2YgdGhpcyBsaW5lIG1ha2VzIGl0IGltcG9zc2libGUgdG8gZW5hYmxlIGRlYnVnIGNvZGUgaW4KLSAgICBvdGhlciBzb3VyY2UgZmlsZXMsIGJlY2F1c2UgIiNkZWZpbmUgREVCVUciIHR5cGljYWxseSBuZWVkcyB0byBiZSBkZWZpbmVkCi0gICAgYmVmb3JlIGFueSBoZWFkZXIgZmlsZXMgYXJlIGluY2x1ZGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDY5MDE4Y2UyZTA4NmU5Y2FmMzViOTE0ZDY3NWI4MmJjNDg4OGYwNzcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKYW4gMTcgMDg6MjU6NDUgMjAwOCAtMDYwMAotCi0gICAgUUU6IE1vdmUgRkRUIHN1cHBvcnQgaW50byBhIGNvbW1vbiBmaWxlCi0KLSAgICBNb3ZlIHRoZSBmbGF0IGRldmljZSB0cmVlIHNldHVwIGZvciBRRSByZWxhdGVkIGRldmljZXMgaW50bwotICAgIGEgY29tbW9uIGZpbGUgc2hhcmVkIGJldHdlZW4gODN4eCAmIDg1eHggcGxhdGZvcm1zIHRoYXQgaGF2ZSBRRSdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDVjZjc0NmMzMDM3MTAzMjlmODA0MGQ5YzYyZWUzNTQzMTNlM2U5MWYKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBKYW4gMzEgMTM6NTk6MDkgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIE1vdmUga2VybmVsIGRhdGEgZmluZCBjb2RlIHRvIGdldF9rZXJuZWwoKSByb3V0aW5lCi0KLSAgICBWZXJpZmljYXRpb24gb2YgdGhlIGtlcm5lbCBpbWFnZSAoaW4gb2xkIGZvcm1hdCkgYW5kIGZpbmRpbmcga2VybmVsCi0gICAgZGF0YSBpcyBtb3ZlZCB0byBhIGRlZGljYXRlZCByb3V0aW5lLiBUaGUgcm91dGluZSB3aWxsIGFsc28gaG9sZAotICAgIHN1cHBvcnQgZm9yLCB0byBiZSBhZGRlZCwgbmV3IGltYWdlIGZvcm1hdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA3YjMyNTQ1NGZkMjMxZDQyNzNkZTNmZTM3Mzg1MGY3NzdmYjA4NmJmCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgSmFuIDMxIDEzOjU4OjIwIDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBDbGVhbnVwIEZEVCBoYW5kbGluZyBpbiBQUEMgZG9fYm9vdF9saW51eCgpCi0KLSAgICBNb3ZlIEZEVCBibG9iIGZpbmRpbmcgYW5kIHJlbG9jYXRpb24gdG8gYSBkZWRpY2F0ZWQKLSAgICBnZXRfZmR0KCkgcm91dGluZS4gSXQgaW5jcmVhc2VzIGNvZGUgcmVhZGFiaWxpdHkgYW5kCi0gICAgd2lsbCBtYWtlIGFkZGluZyBzdXBwb3J0IGZvciBuZXcgdUltYWdlIGZvcm1hdCBlYXNpZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYjZiMGZlNjQ2MGI3MDYzYWM2MGI5YTM1MzFlZjIxMGFlZGIzMTQ1MQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEphbiAzMSAxMzo1ODoxMyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQ2xlYW51cCBkb19ib3RtX2xpbnV4KCkgYm9vdCBhbGxvY2F0aW9ucwotCi0gICAgVGhpcyBwYXRjaCBtb3ZlcyBjb21tb24gcHJlLWJvb3QgYWxsb2NhdGlvbiBzdGVwcyBzaGFyZWQgYmV0d2VlbiBQUEMKLSAgICBhbmQgTTY4SyB0byBhIGhlbHBlciByb3V0aW5lczoKLQotICAgIGNvbW1vbjoKLSAgICAtIGdldF9ib290X3NwX2xpbWl0KCkKLSAgICAtIGdldF9ib290X2NtbGluZSgpCi0gICAgLSBnZXRfYm9vdF9rYmQoKQotCi0gICAgcGxhdGZvcm06Ci0gICAgLSBzZXRfY2xvY2tzX2luX21oeigpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgY2VhZWQyYjFlNTRlYmYxNGQ2MDBlMDJmZWYwMTZjOGRmNWNjNGQ0MAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEphbiAzMSAxMzo1NzoxNyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gTW92ZSByYW1kaXNrIGxvYWRpbmcgdG8gYSBjb21tb24gcm91dGluZQotCi0gICAgUmFtZGlzayBsb2FkaW5nIGNvZGUsIGluY2x1ZGluZyBpbml0cmRfaGlnaCB2YXJpYWJsZSBoYW5kbGluZywKLSAgICB3YXMgZHVwbGljYXRlZCBmb3IgUFBDIGFuZCBNNjhLIHBsYXRmb3Jtcy4gVGhpcyBwYXRjaCBjcmVhdGVzCi0gICAgY29tbW9uIGhlbHBlciByb3V0aW5lIHRoYXQgaXMgYmVpbmcgY2FsbGVkIGZyb20gYm90aCBwbGF0Zm9ybQotICAgIGRvX2Jvb3RtX2xpbnV4KCkgcm91dGluZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNjhkNGYwNWU2YjIzODNhNDQyZmI3MWY4MGYyYTlmYmIzZDhkZWY2OAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEphbiAzMSAxMzo1NTo1MyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gUmVtb3ZlZCBkZWFkIHJhbWRpc2sgY29kZSBvbiBtaWNyb2JsYXplIGFyY2hpdGVjdHVyZXMKLQotICAgIE1pY3JvYmxhemUgZG9fYm9vdG1fbGludXgoKSBpbmNsdWRlcyByYW1kaXNrIHByb2Nlc3NpbmcgY29kZSBidXQKLSAgICB0aGUgcmFtZGlzayBkb2VzIG5vdCBnZXQgdXNlZCBhbnl3aGVyZSBsYXRlciBvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA1YWQwM2ViMzg1NGMxNjI2ODQyMjJhNzE4YjQ0YzA3MTZlYTBkYjAzCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgSmFuIDMxIDEzOjU1OjM5IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBGYWN0b3Igb3V0IGNvbW1vbiBpbWFnZV9nZXRfcmFtZGlzaygpIHJvdXRpbmUKLQotICAgIEFyY2hpdGVjdHVyZSBzcGVjaWZpYyBkb19ib290bV9saW51eCgpIHJvdXRpbmVzIHNoYXJlIGNvbW1vbgotICAgIHJhbWRpc2sgaW1hZ2UgcHJvY2Vzc2luZyBjb2RlLiBNb3ZlIHRoaXMgY29kZSB0byBhIGNvbW1vbgotICAgIGhlbHBlciByb3V0aW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGQzYzVlYjZkZDFmNGVkM2MzMzg4Mzg2Y2YxZDFiZjgyYWE1MWQ1NmIKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBKYW4gMzEgMTM6MjA6MDggMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIE1vdmUgRkRUIGVycm9yIHByaW50aW5nIHRvIGNvbW1vbiBmZHRfZXJyb3IoKSByb3V0aW5lCi0KLSAgICBGRFQgZXJyb3IgaGFuZGxpbmcgaW4gUFBDIGRvX2Jvb3RtX2xpbnV4KCkgc2hhcmVzIHRoZSBzYW1lIG1lc3NhZ2UgZm9ybWF0LgotICAgIFRoaXMgcGF0Y2ggbW92ZXMgZXJyb3IgbWVzc2FnZSBwcmludGluZyB0byBhIGhlbHBlciBmZHRfZXJyb3IoKSByb3V0aW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDQyYjczZThlZTAwZDQ4MDA0NzkxZGVhNjRiODA5M2ZiOTc0YzU3ZTEKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBKYW4gMzEgMTM6MjA6MDcgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIEZhY3RvciBvdXQgY29tbW9uIHJvdXRpbmVzIGZvciBnZXR0aW5nIG9zL2FyY2gvdHlwZS9jb21wIG5hbWVzCi0KLSAgICBNb3ZlIG51bWVyaWMtaWQgdG8gbmFtZSB0cmFuc2xhdGlvbiBmb3IgaW1hZ2Ugb3MvYXJjaC90eXBlL2NvbXAgaGVhZGVyCi0gICAgZmllbGRzIHRvIGEgaGVscGVyIHJvdXRpbmVzOiBpbWFnZV9nZXRfb3NfbmFtZSgpLCBpbWFnZV9nZXRfYXJjaF9uYW1lKCksCi0gICAgaW1hZ2VfZ2V0X3R5cGVfbmFtZSgpLCBpbWFnZV9nZXRfY29tcF9uYW1lKCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZTk5YzI2Njk0YTM4NDIyMWQzMzZmNjQ0OGMwNmE1NzQ3OWMwYmFhNAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowNyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gUmVtb3ZlIHN0YW5kYWxvbmUgYXBwbGljYXRpb25zIGhhbmRsaW5nIGZyb20gYm9vb3RtCi0KLSAgICBTdGFuZGFsb25lIGFwcGxpY2F0aW9ucyBhcmUgc3VwcG9zZWQgdG8gYmUgcnVuIHVzaW5nIHRoZSAiZ28iIGNvbW1hbmQuCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHN0YW5kYWxvbmUgaW1hZ2VzIGhhbmRsaW5nIGZyb20gdGhlIGRvX2Jvb3RtKCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNGEyYWQ1ZmY2NDAwNjk4NDMzZGQ3MjAzZDM0OTM5YzNjOWNjOWJmZgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowNyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gUmVtb3ZlIE9GX0ZMQVRfVFJFRSBzdXBwb3J0IGZyb20gUFBDIGJvb3RtIGNvZGUKLQotICAgIFN1cHBvcnQgZm9yIE9GX0ZMQVRfVFJFRSBpcyB0byBiZSBvYnNvbGV0ZWQgaW4gdGhlIG5lYXIgZnV0dXJlLAotICAgIHJlbW92ZSByZWxhdGVkIGNvZGUgZnJvbSB0aGUgYm9vdG0gcm91dGluZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgODI4NTBmM2QzMmEyNjYxODY4ZWM2ODc2YmVkN2EyMmM1NWNlZjcxOAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IEphbiAzMSAxMzoyMDowNiAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gVXNlIGltYWdlIEFQSSBpbiBTSCBkb19ib290bV9saW51eCgpIHJvdXRpbmUKLQotICAgIEludHJvZHVjZSBpbWFnZSBoYW5kbGluZyBBUEkgZm9yIGxhdGVseSBhZGRlZCBIaXRhY2hpIFNIIGFyY2hpdGVjdHVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA0YTk5NWVkZWMxYWMxNjNkOTMyNmQxNDNmZmUyYjQ3ZTc1NDM0MDdmCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgSmFuIDMxIDEzOjIwOjA2IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBSZW5hbWUgYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGJvb3RtIGNvZGUgZmlsZXMKLQotICAgIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkb19ib290bV9saW51eCgpIGFuZCBvdGhlciBib290bSBoZWxwZXIgcm91dGluZXMgaXMKLSAgICBhcmNoaXRlY3R1cmUgc3BlY2lmaWMgY29kZS4gQXMgc3VjaCBpdCByZXNpZGVzIGluIGxpYl88YXJjaD4gZGlyZWN0b3JpZXMKLSAgICBpbiBmaWxlcyBuYW1lZCA8YXJjaD5fbGludXguYwotCi0gICAgVGhpcyBwYXRjaCByZW5hbWVzIHRob3NlIGZpbGVzIHRvIGEgbW9yZSBjbGVhciBhbmQgYWNjdXJhdGUKLSAgICBsaWJfPGFyY2g+L2Jvb3RtLmMgZm9ybS4KLQotICAgIExpc3Qgb2YgdGhlIHJlbmFtZWQgZmlsZXM6Ci0gICAgICAgbGliX2FybS9hcm1saW51eC5jIC0+IGxpYl9hcm0vYm9vdG0uYwotICAgICAgIGxpYl9hdnIzMi9hdnIzMl9saW51eC5jIC0+IGxpYl9hdnIzMi9ib290bS5jCi0gICAgICAgbGliX2JsYWNrZmluL2JmNTMzX2xpbnV4LmMgLT4gbGliX2JsYWNrZmluL2Jvb3RtLmMKLSAgICAgICBsaWJfaTM4Ni9pMzg2X2xpbnV4LmMgLT4gbGliX2kzODYvYm9vdG0uYwotICAgICAgIGxpYl9tNjhrL202OGtfbGludXguYyAtPiBsaWJfbTY4ay9ib290bS5jCi0gICAgICAgbGliX21pY3JvYmxhemUvbWljcm9ibGF6ZV9saW51eC5jIC0+IGxpYl9taWNyb2JsYXplL2Jvb3RtLmMKLSAgICAgICBsaWJfbWlwcy9taXBzX2xpbnV4LmMgLT4gbGliX21pcHMvYm9vdG0uYwotICAgICAgIGxpYl9uaW9zL25pb3NfbGludXguYyAtPiBsaWJfbmlvcy9ib290bS5jCi0gICAgICAgbGliX25pb3MyL25pb3NfbGludXguYyAtPiBsaWJfbmlvczIvYm9vdG0uYwotICAgICAgIGxpYl9wcGMvcHBjX2xpbnV4LmMgLT4gbGliX3BwYy9ib290bS5jCi0gICAgICAgbGliX3NoL3NoX2xpbnV4LmMgLT4gbGliX3NoL2Jvb3RtLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA3NTgyNDM4YzI4NWJmMGNlZjgyOTA5ZDBmMjMyZGU2NGVjNTY3YThhCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgSmFuIDMxIDEzOjIwOjA2IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBSZXR1cm4gZXJyb3Igb24gaW1hZ2UgbW92ZS91bmNvbXByZXNzIG92ZXJ3cml0ZXMKLQotICAgIENoZWNrIGZvciBvdmVyd3JpdGVzIGR1cmluZyBpbWFnZSBtb3ZlL3VuY29tcHJlc3MsIHJldHVybiB3aXRoIGVycm9yCi0gICAgd2hlbiB0aGUgb3JpZ2luYWwgaW1hZ2UgZ2V0cyBjb3JydXB0ZWQuIFJlcG9ydCBjbGVhciBtZXNzYWdlIHRvIHRoZSB1c2VyCi0gICAgYW5kIHByZXZlbnQgZnVydGhlciB0cm91YmxlcyB3aGVuIHBvaW50ZXIgdG8gdGhlIGNvcnJ1cHRlZCBpbWFnZXMgaXMgcGFzc2VkCi0gICAgdG8gZG9fYm9vdG1fbGludXggcm91dGluZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBmMTNlN2IyZTk5M2M2MWZlZDFmNjA3OTYyNTAxZTA1MTk0MGQ2ZTgwCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgSmFuIDggMTg6MTI6MTcgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIENsZWFudXAgaW1hZ2UgaGVhZGVyIHBvaW50ZXIgdXNlIGluIGJvb3RtIGNvZGUKLQotICAgIC0gdXNlIHNpbmdsZSBpbWFnZSBoZWFkZXIgcG9pbnRlciBpbnN0ZWFkIG9mIGEgc2V0IG9mIGF1eGlsbGlhcnkgdmFyaWFibGVzLgotICAgIC0gYWRkIG11bHRpIGNvbXBvbmVudCBpbWFnZSBoZWxwZXIgcm91dGluZXM6IGdldCBjb21wb25lbnQgc2l6ZS9kYXRhIGFkZHJlc3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAxZWUxMTgwYjZlOTNlNTZkMDI4MmFjOGQ5NDNlNDQ4ZTlkMGVhYjIwCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgSmFuIDggMTg6MTc6MTAgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIENsZWFudXAgY21kX2Jvb3RtLmMKLQotICAgIC0gc29ydCBhbmQgY2xlYW51cCBoZWFkZXJzLCBkZWNsYXJhdGlvbnMsIGV0Yy4KLSAgICAtIGdyb3VwIHJlbGF0ZWQgcm91dGluZXMKLSAgICAtIGNsZWFudXAgaW5kZW50YXRpb24sIHdoaXRlIHNwYWNlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGFmMTNjZGJjMDFlYWY4ODg4MDk3OGJmYjRmNjAzZTAxMjgxOGJhMjQKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBKYW4gOCAxODoxMTo0NSAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQWRkIG1lbW1vdmVfd2QoKSBjb21tb24gcm91dGluZQotCi0gICAgTW92ZSBjb21tb24sIHdhdGNoZG9nIHNlbnNpYmxlIG1lbW1vdmUgY29kZSB0byBhIGhlbHBlciBtZW1tbW92ZV93ZCgpIHJvdXRpbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgOTU4ZmM0OGFiZGRlYWI1MTNlYTQ4NDdlMzRmMjJhMmU5ZmU2N2ZlMQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiA4IDE4OjExOjQ0IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBGaXggRkRUIGhlYWRlciB2ZXJpZmljYXRpb24gaW4gUFBDIGRvX2Jvb3RfbGludXgoKSByb3V0aW5lCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMTUxNTg5NzFmNDkyNTVjY2VmNTRmMDk3OWE5NDJjZmQzZGUyYWU1MgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiA4IDE4OjExOjQ0IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBGaXggdUltYWdlIGhlYWRlciBwb2ludGVyIHVzZSBpbiBpMzg2IGRvX2Jvb3RtX2xpbnV4KCkKLQotICAgIFVzZSBpbWFnZSBoZWFkZXIgY29weSBpbnN0ZWFkIG9mIGEgKHBvc3NpYmx5IGNvcnJ1cHRlZCkgcG9pbnRlciB0bwotICAgIGEgaW5pdGlhbCBpbWFnZSBsb2NhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAyNjFkY2Y0NjI0YjI1ZjNjNTUxZWZjZjg2MzRlOTE5NGZhYmJhOWMzCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgSmFuIDggMTg6MTE6NDQgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIFJlbW92ZSBJMzg2IHVJbWFnZSBmYWtlX2hlYWRlcigpIHJvdXRpbmUKLQotICAgIEkzODYgdGFyZ2V0cyBhcmUgbm90IHVzaW5nIGEgdUltYWdlIGZvcm1hdCwgaW5zdGVhZCBmYWtlIGhlYWRlcgotICAgIGlzIGFkZGVkIHRvIHJhbSBpbWFnZSBiZWZvcmUgaXQgaXMgZnVydGhlciBwcm9jZXNzZWQgYnkgYm9vdG0uCi0KLSAgICBSZW1vdmUgdGhpcyBmaXh1cCBhbmQgZm9yY2UgcHJvcGVyIHVJbWFnZSB1c2UgZm9yIEkzODYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNTU5MzE2ZmFmN2VhZTA2MTRjOTFkNzdmNTA5YjU3ZDZjNGMwOTFiYQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiA4IDE4OjExOjQ0IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBNb3ZlIENIVU5LU1ogZGVmaW5pdGlvbiB0byBpbWFnZS5oCi0KLSAgICBDSFVOS1NaIGRlZmluZWQgZm9yIFBQQyBhbmQgTTY4SyBpcyBzZXQgdG8gdGhlIHNhbWUgdmFsdWUgb2YgNjRLLAotICAgIG1vdmUgdGhpcyBkZWZpbml0aW9uIHRvIGEgY29tbW9uIGhlYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAzMjEzNTlmMjA4MjNlMGI4YzVhZDM4YjY0ZDAwN2E2YzQ4Y2RhMTZlCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgSmFuIDggMTg6MTE6NDMgMjAwOCArMDEwMAotCi0gICAgW25ldyB1SW1hZ2VdIE1vdmUgZ3VuemlwKCkgY29tbW9uIGNvZGUgdG8gY29tbW9uL2d1bnppcC5jCi0KLSAgICBNb3ZlIGd1bnppcCgpLCB6YWxsb2MoKSBhbmQgemZyZWUoKSB0byBhIHNlcGFyYXRlIGZpbGUuCi0gICAgU2hhcmUgemFsbG9jKCkgYW5kIHpmcmVlKCkgd2l0aCBjcmFtZnMgdW5jb21wcmVzcyByb3V0aW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGQ0NWQ1YTE4YjZiMzY2ODhmMjM2NTYyM2Y5ZDU1MDU2NmM2NjRiNWIKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBKYW4gOCAxODoxMTo0MyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gQ2xlYW51cCBPRi9GRFQgI2lmLyNlbGlmLyNlbmRpZiB1c2UgaW4gZG9fYm9vdG1fbGludXgoKQotCi0gICAgTWFrZSBDT05GSUdfT0ZfTElCRkRUIGFuZCBDT05GSUdfT0ZfRkxBVF9UUkVFIHVzZSBtb3JlCi0gICAgcmVhZGFibGUgaW4gUFBDIHZhcmlhbnQgb2YgZG9fYm9vdG1fbGludXgoKSByb3V0aW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDVkM2NjNTVlY2JhZTI3N2UwOGY1ZmY3NzFkYTIwYjFkNmEzNmVjMzYKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBKYW4gOCAxODoxMTo0MyAyMDA4ICswMTAwCi0KLSAgICBbbmV3IHVJbWFnZV0gTW92ZSBQUEMgZG9fYm9vdG1fbGludXgoKSB0byBsaWJfcHBjL3BwY19saW51eC5jCi0KLSAgICBQUEMgaW1wbGVtZW50YXRpb24gb2YgZG9fYm9vdG1fbGludXgoKSByb3V0aW5lIGlzIG1vdmVkIHRvCi0gICAgYSBkZWRpY2F0ZWQgZmlsZSBsaWJfcHBjL3BwY19saW51eC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYjk3YTJhMGEyMWYyNzlkNjZkZThhOWJkYmZlMjE5MjA5NjhiY2IxYwotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiA4IDE4OjE0OjA5IDIwMDggKzAxMDAKLQotICAgIFtuZXcgdUltYWdlXSBEZWZpbmUgYSBBUEkgZm9yIGltYWdlIGhhbmRsaW5nIG9wZXJhdGlvbnMKLQotICAgIC0gQWRkIGlubGluZSBoZWxwZXIgbWFjcm9zIGZvciBiYXNpYyBoZWFkZXIgcHJvY2Vzc2luZwotICAgIC0gTW92ZSBjb21tb24gbm9uIGlubGluZSBjb2RlIGNvbW1vbi9pbWFnZS5jCi0gICAgLSBSZXBsYWNlIGRpcmVjdCBoZWFkZXIgYWNjZXNzIHdpdGggdGhlIEFQSSByb3V0aW5lcwotICAgIC0gUmVuYW1lIElIX0NQVV8qIHRvIElIX0FSQ0hfKgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGVkMjliYzRlODE0MmI0NmI2MjZmNjc1MjQyMDdiMzZlNDNkOWFhZDYKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBKYW4gMzEgMTM6MTk6NTggMjAwOCArMDEwMAotCi0gICAgQWRkIG1pc3NpbmcgY21kX3hpbWcubyB0byBjb21tb24vTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAzN2UzYzYyZmEwN2E4MjNlNzU2OWM4NzJlM2E5Mzk1ZDIyN2VkOGUzCi1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJTW9uIEphbiAyOCAxMDoxNTowMiAyMDA4ICswMTAwCi0KLSAgICBBRFM1MTIxZTogRERSMiBpbml0L3RpbWluZyB1cGRhdGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGFjOTE1MjgzMGQ3ZmRlYmFjZThhMjYwYjc3MzdlZjI4NzBjMjFjYTAKLUF1dGhvcjogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDMwIDEzOjM2OjU3IDIwMDggLTA3MDAKLQotICAgIERldmljZSB0cmVlIHVwZGF0ZXMKLQotICAgIENoYW5nZXMgdG8gbWF0Y2ggNTEyMSBkZXZpY2UgdHJlZSBnb2luZyBtYWlubGluZSBpbiAyLjYuMjUuCi0KLSAgICBDaGFuZ2UgT0ZfU09DIGZyb20gInNvYzUxMjEiIHRvIHBsYWluICJzb2MiLgotICAgIFJlbW92ZSB1bm5lZWRlZCAicmVmLWZyZXF1ZW5jeSIgZml4dXBzLgotICAgIFJlbW92ZSAiYWRkcmVzcyIgZW5ldGFkZHIgZml4dXAuCi0KLSAgICBBZGQgYnVzLWZyZXF1ZW5jeSBmaXh1cCBmb3Igb2xkIE9GX1NPQyBzbyBvbGQKLSAgICBrZXJuZWxzIHdpdGggb2xkIGRldmljZSB0cmVlcyB3aWxsIHdvcmsgd2l0aCBuZXcKLSAgICB1LWJvb3Qgd2l0aCA2Nk1IeiBJUFMgY2xvY2sKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGU1NWQxOGRmM2ZmMmVhNjE0NjI0ZTc0NzkzZGU3YzQzNTIwZTBlNwotQXV0aG9yOiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMzAgMTM6MzY6NTYgMjAwOCAtMDcwMAotCi0gICAgQ2hhbmdlIElQUyBmcmVxIHRvIDY2TUh6Ci0KLSAgICBSZWNvbW1lbmRlZCBmcmVxdWVuY3kgaXMgNjZNSHoKLSAgICBDaGFuZ2UgZGl2aWRlciBmcm9tIDQgdG8gMy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2Q5Y2I2MmY5ZDhiNzhkNmMzYWY1ZDFlOWI1YTNkNjhhM2Q3Mzk3NAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJTW9uIEphbiAxNCAyMjozODo1NSAyMDA4ICswMTAwCi0KLSAgICB4c2VuZ2luZTogcmVuYW1lIGJvYXJkX3Bvc3RfaW5pdCB0byBib2FyZF9sYXRlX2luaXQKLQotICAgIG1pc3NpbmcgbWlncmF0aW9uIGZyb20gIkNsZWFudXAgb2Ygc29tZSBpbml0IGZ1bmN0aW9ucyIKLSAgICBpbiBjODM3ZGNiMWEzMTY3NDUwOTI1NjdiZmU0ZmIyNjZkMDk0MTg4NGZmCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgOGRhZmE4NzQ3NmIwZDcxNzBlMjE5YzJmNWUzODQyYzgzM2E5MTgwNwotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVNhdCBKYW4gMTIgMjM6MzU6MzMgMjAwOCAtMDUwMAotCi0gICAgQWRkIGF0dHJpYnV0ZSBQT1NUX1BSRVJFTCB0byBFQ0MgbWVtb3J5IFBPU1QKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgZWQyY2Y1NDhjYWM4MGNkM2NmODE1NGRjZmU3YjI2ODViZWY0NTkzOAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEphbiAxNyAwODoyNTo0NSAyMDA4IC0wNjAwCi0KLSAgICBRRTogTW92ZSBGRFQgc3VwcG9ydCBpbnRvIGEgY29tbW9uIGZpbGUKLQotICAgIE1vdmUgdGhlIGZsYXQgZGV2aWNlIHRyZWUgc2V0dXAgZm9yIFFFIHJlbGF0ZWQgZGV2aWNlcyBpbnRvCi0gICAgYSBjb21tb24gZmlsZSBzaGFyZWQgYmV0d2VlbiA4M3h4ICYgODV4eCBwbGF0Zm9ybXMgdGhhdCBoYXZlIFFFJ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZDM4ZGE1Mzc5NDNjZDM2MzU2YjlkM2Q5ZDliNjA1MzM1NTRiODFkOAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBKYW4gMjMgMTc6MjA6MTQgMjAwOCArMDEwMAotCi0gICAgQVZSMzI6IE1ha2UgU0RSQU0gcmVmcmVzaCByYXRlIGNvbmZpZ3VyYWJsZQotCi0gICAgVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyB0aGUgU0RSQU0gcm93IHJlZnJlc2ggcGVyaW9kIHNob3VsZCBhbHdheXMKLSAgICBiZSAxNS42IHVzLiBUaGlzIGlzIG5vdCBhbHdheXMgdHJ1ZSwgYW5kIGluZGVlZCBvbiB0aGUgQVROR1cxMDAsIHRoZQotICAgIHJlZnJlc2ggcmF0ZSBzaG91bGQgcmVhbGx5IGJlIDcuODEgdXMuCi0KLSAgICBBZGQgYSByZWZyZXNoX3BlcmlvZCBtZW1iZXIgdG8gc3RydWN0IHNkcmFtX2luZm8gYW5kIGluaXRpYWxpemUgaXQKLSAgICBwcm9wZXJseSBmb3IgYm90aCBBVFNUSzEwMDAgYW5kIEFUTkdXMTAwLiBPdXQtb2YtdHJlZSBib2FyZHMgd2lsbAotICAgIHBhbmljKCkgdW50aWwgdGhlIHJlZnJlc2hfcGVyaW9kIG1lbWJlciBpcyB1cGRhdGVkIHByb3Blcmx5LgotCi0gICAgQmlnIHRoYW5rcyB0byBHZXJoYXJkIEJlcmdob2ZlciBmb3IgcG9pbnRpbmcgb3V0IHRoaXMgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDYxMTUxY2NjYjY2MGNkYjA2YTA3ZmIyODNkZTYwODk5MTNkN2JkZTAKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgQXByIDE5IDEwOjEwOjExIDIwMDcgKzAyMDAKLQotICAgIEFUU1RLMTAwMDogRml4IHBvdGVudGlhbCBmbGFzaCBwcm9ncmFtbWluZyBidWcKLQotICAgIFRoZSAobm93IG9ic29sZXRlKSBhdG5ndzEwMCBmbGFzaCBwcm9ncmFtbWluZyBjb2RlIHdhcyBoYXZpbmcgcHJvYmxlbXMKLSAgICBwcm9ncmFtbWluZyB0aGUgb25ib2FyZCBhdDQ5YnY2NDIgY2hpcC4gVGhlIGF0c3RrMTAwMCBmbGFzaAotICAgIHByb2dyYW1taW5nIGNvZGUgbWF5IGhhdmUgdGhlIHNhbWUgYnVnLCBzbyBpbXBvcnQgZml4IGZvciB0aGlzIHByb2JsZW0KLSAgICBmcm9tIHRoZSBBVlIzMiBMaW51eCBCU1AuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGIyZTFkNWI2NDQ2OWYxMGRmY2NlMjdmN2IwYWZkOTM1Njg0YThlMTEKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgTm92IDIyIDE3OjA0OjEzIDIwMDcgKzAxMDAKLQotICAgIEFUU1RLMTAwNDogRml4IGNvbW1lbnQgYWJvdXQgZGVmYXVsdCBsb2FkIGFkZHJlc3MKLQotICAgIFRoZSBkZWZhdWx0IGxvYWQgYWRkcmVzcyBpcyBTRFJBTSArIDJNQiwgbm90IFNEUkFNICsgNE1CLiBUaGUgbGF0dGVyCi0gICAgd291bGRuJ3QgaGF2ZSB3b3JrZWQgYW55d2F5IHNpbmNlIHRoZSBib2FyZCBjYW4gb25seSBhY2Nlc3MgNE1CIG9mCi0gICAgU0RSQU0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDgyNjlhYjUzNjA4ZDhkYjJhYTA2OTY5YzMzN2FiMGIwNTE4MjExZTUKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgTm92IDIyIDE3OjAxOjI0IDIwMDcgKzAxMDAKLQotICAgIEFUU1RLMTAwMjogVXNlIFNEUkFNICsgNE1CIGFzIGRlZmF1bHQgbG9hZCBhZGRyZXNzCi0KLSAgICBNYW55IHBlb3BsZSBydW4gaW50byBwcm9ibGVtcyB3aGVuIHRoZXkgY29tcGlsZSBhIGJpZyBrZXJuZWwgYW5kIGxvYWQKLSAgICB0aGUgdUltYWdlIGF0IHRoZSBkZWZhdWx0IFNEUkFNICsgMk1CIGFkZHJlc3MgYXMgdGhlIGtlcm5lbCB3aWxsCi0gICAgb3ZlcndyaXRlIHRoZSB1SW1hZ2UgYXMgaXQgaXMgYmVpbmcgdW5wYWNrZWQuIEluY3JlYXNlIHRoZSBkZWZhdWx0Ci0gICAgbG9hZCBhZGRyZXNzIHNvIHRoYXQgd2UgY2FuIGxvYWQgYSA0TUIga2VybmVsIGltYWdlIHdpdGhvdXQgYW55Ci0gICAgcHJvYmxlbXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDJiY2FjYzJkODQxYjc3ZjNkMmQzOTEwZGI3MjIwMDM3NDI3MjdlOWYKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgTm92IDIyIDE2OjUxOjM5IDIwMDcgKzAxMDAKLQotICAgIEFUTkdXMTAwOiBGaXggZGVmYXVsdCBtdGVzdCByYW5nZQotCi0gICAgTGV0IG10ZXN0IGNvdmVyIHRoZSB3aG9sZSBTRFJBTSBleGNlcHQgdGhlIGxhc3QgbWVnYWJ5dGUsIHdoaWNoIGlzCi0gICAgd2hlcmUgdS1ib290IGxpdmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA5ODU2YTZiMzEwNGUwYmMyMTBiMDg2OGRmZTY5MWM1MmJmMDNjMjI3Ci1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVR1ZSBKYW4gMjIgMTU6MzE6NTYgMjAwOCArMDkwMAotCi0gICAgc2g6IEZpeCByZWdpc3RlciBhZGRyZXNzIG9mIFNINzcyMi4KLQotICAgIFRoZSBhZGRyZXNzIG9mIFNINzcyMiBpcyB3cm9uZyBieSBvbGQgZG9jdW1lbnQuCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAzMDk0MmIxOGI2NmYzNWYyY2VlZGFiMzlhZjEwZTllY2NhYTk0M2NjCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCi0KLSAgICBuZXcgY29tbWFuZCBmb3IgZGlzcGxheWluZyBzdHJpbmdzIGF0IHNwZWNpZmllZCBtZW1vcnkgbG9jYXRpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiNThkOGI0OGUyNWIwYzg2NmQxNjdjYzU3N2YxMThmNTI4Y2Q5ZTBhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCi0KLSAgICByZXdyaXRlL2NsZWFudXAgQmxhY2tmaW4gUlRDIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOTRhOTFlMjQ4YjcxYzNmZjk1MWZjMjdjZmY2OTA5ZTgyY2EzN2QxNQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTcgMjAwOCAtMDUwMAotCi0gICAgZ2VuZXJhdGUgdS1ib290LmxkciBmb3IgQmxhY2tmaW4gdGFyZ2V0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYjc3OWY3YTU5NTMwNDM2MDQwZjE1N2Y3ODQxZGI3YWI3OTY1NDJkZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTcgMjAwOCAtMDUwMAotCi0gICAgc2NydWIgdW51c2VkIHN5bWJvbHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGNjMjk3N2FjYzNiYmJiNzg1MGYxNjY0NWRkMTA4MWY5NTMzNTg2OGQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU3IDIwMDggLTA1MDAKLQotICAgIG1vdmUgQmxhY2tmaW4gY3B1IG9iamVjdCBsaXN0IHRvIHJlc3BlY3RpdmUgY3B1IGRpcmVjdG9yaWVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBkMGIwMWEyNDZkMGEzNTFiYzdkY2UxZDBjOWNmNmFlYmRmNmQ3NTA1Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxOToyNjo1NyAyMDA4IC0wNTAwCi0KLSAgICBpbnRlcmZhY2UgdG8gQmxhY2tmaW4gb24tY2hpcCBPbmUtVGltZS1Qcm9ncmFtbWFibGUgbWVtb3J5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA0YzcyN2M3N2U0Mzg3MmQzYTFkMWY3NmE5NDlmY2IzZjI2YTM4Nzg4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxOToyNjo1NiAyMDA4IC0wNTAwCi0KLSAgICBhZGQgc3VwcG9ydCBmb3IgbWVtb3J5IGNvbW1hbmRzIHdpdGggQmxhY2tmaW4gTDEgaW5zdHJ1Y3Rpb24gbWVtb3J5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA2YjkwOTdlNWU3NDkwYWE3YjgyOGM2ZjFhMWM3YTBlODc1ZGY4NDY0Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxOToyNjo1NiAyMDA4IC0wNTAwCi0KLSAgICB1c2UgQyBjb2RlIHJhdGhlciB0aGFuIGlubGluZSBhc3NlbWJseQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOTdjMjZlMDA2ZDJmYTZkNGUxNTYwOTMzZWU2ZjM4NWQ4Yjg5MDhiOQotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTYgMjAwOCAtMDUwMAotCi0gICAgYWRkIEJsYWNrZmluLXNwZWNpZmljIHJlZ2luZm8gY29tbWFuZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMDg1OGI4MzVlN2VhNTAxZWEwODRkMzRjZWY3NTkzMmYwOTgzNDJiYgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTUgMjAwOCAtMDUwMAotCi0gICAgYWRkIHN1cHBvcnQgZm9yIEJsYWNrZmluIHN5bWJvbCBwcmVmaXhlcyB0byBleGFtcGxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgOGRjNDhkNzFhNGJlNzUzZWE5Zjg0OTU2Y2QzMzYwMGRlMzVmYWQwNAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTUgMjAwOCAtMDUwMAotCi0gICAgYWRkIEJsYWNrZmluLXNwZWNpZmljIGJkaW5mbyBjb21tYW5kCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCAwMDAzNjEzZTNjN2RmM2I4NGIyY2I5MmU3OTdkNzdmNDZmMTVhNDNhCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxOToyNjo1NSAyMDA4IC0wNTAwCi0KLSAgICBtb3ZlIC1mZml4ZWQtUDUgdG8gYmxhY2tmaW5fY29uZmlnLm1rIGFuZCBkcm9wIHVudXNlZCAtRF9fQkxBQ0tGSU5fXwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgNjBmYTcyZDY1NjEwYzdlZjMzZTFkNmRiODU4OTc5ZDA1ZmYwZGY1OAotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTUgMjAwOCAtMDUwMAotCi0gICAgdW5pZnkgdGhlIEJsYWNrZmluIGJvYXJkIHRhcmdldHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQ0ZDc3MzA4NTNlNWQ2NzVmNzZlYzY2NjgwN2RhMzAyOGM5MWQ1OTIKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU1IDIwMDggLTA1MDAKLQotICAgIHB1bnQgQmxhY2tmaW4gVkRTUCBoZWFkZXJzIGFuZCBpbXBvcnQgc2FuaXRpemVkL2F1dG8tZ2VuZXJhdGVkIG9uZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDZjZmNjZTY3NjcxYTM0MjUyMjlkNjYyMDMzODZmYTNjYmQwY2MzYmQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU0IDIwMDggLTA1MDAKLQotICAgIGFsd2F5cyBwdWxsIGluIGFzbS9ibGFja2Zpbi5oIGZvciBCbGFja2ZpbiBwb3J0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgYmY1Mzk3NGMyZGRhZTY3OGQ3NjYwZjJiNWNjZmViMDczMmI2ZjVkYwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAotCi0gICAgYWRkIG1pc3NpbmcgX19yYXcgdmVyc2lvbnMgb2YgQmxhY2tmaW4gcmVhZC93cml0ZSBpbyBmdW5jdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDI0ZTAyZDBmZDNhY2M1MGU3M2UxYTNjZGQ1NjdmMGE3Nzk0NmYxNWQKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU0IDIwMDggLTA1MDAKLQotICAgIGFkZCB0aGUgZGVmYXVsdCBCbGFja2ZpbiBsb2dvIHVzZWQgYnkgQmxhY2tmaW4gYm9hcmRzIHdpdGggc3BsYXNoIHNjcmVlbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDRjNThlYjU1NTIyMjBlNDI1YzhhZjZhYzhkMjgzOTI0NGEyZjU3YjEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU0IDIwMDggLTA1MDAKLQotICAgIGFkZCBzb21lIG1vcmUgQmxhY2tmaW4gZG9jcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgMzJhOWY1ZjIxNjBhMDM0ZWE4N2VhNjUxYjIzM2VmN2M2MzVlNTVjZgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gRmViIDQgMTk6MjY6NTQgMjAwOCAtMDUwMAotCi0gICAgbWFrZSBzbWM5MTExMV9lZXByb20gbWFuYWdtZW50IHNpbXBsZXIgYnkgZGVwZW5kaW5nIG9uIHRoZSBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUgcmF0aGVyIHRoYW4gYSBoYXJkY29kZWQgbGlzdCBvZiBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDQwODdiYzg4Y2ViZWM3NWM0MzJhN2ZlOWY2YWZiNTQ1YjA5MTk4MzEKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJTW9uIEZlYiA0IDE5OjI2OjU0IDIwMDggLTA1MDAKLQotICAgIGZpeCBidWlsZGluZyBvbiBCbGFja2ZpbiBhcyB0aGUgYXNzZW1ibGVyIHN1cHBvcnRzIHRoZSAuc2V0IHN5bnRheCwgbm90IHRoZSA9IHN5bnRheCwgZm9yIGFzc2lnbmluZyBzeW1ib2xzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiNDUyNjRlZTg1Y2JkOTIwMjA2NDBhMzJlMDJmYjQzNGZkNTU3MTA4Ci1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBGZWIgNCAxOToyNjo1MyAyMDA4IC0wNTAwCi0KLSAgICBhZGQgZ2l0aWdub3JlcyBmb3IgQmxhY2tmaW4gcGllY2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBhOTM5MDdjNDNmODQ3ZjA3NmRkMGUzNGVlM2I2OWI1ZThlNmQwZDI5Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgSmFuIDE4IDAxOjE0OjAzIDIwMDggKzAxMDAKLQotICAgIFRGVFA6IGFkZCBob3N0IGlwIGFkZHIgc3VwcG9ydAotCi0gICAgYWxsb3cgdG8gdXNlIGEgZGlmZmVyZW50IHNlcnZlciBhcyBzZXQgaW4gc2VydmVyaXAKLSAgICBhZGQgQ09ORklHX1RGVFBfRklMRV9OQU1FX01BWF9MRU4gdG8gY29uZmlndXJlIHRoZSBmaWxlIG5hbWUgbGVuZ3RoCi0gICAgaWYgbm90IGRlZmluZWQgdGhlIG1heCBsZW5ndGggd2lsbCBiZSBhdCAxMjgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBlNTZiNGI0OTRjZDkyZGVmNTc3OTY5Zjk2NzgzOTVhYTIyZDM0YzlmCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDkgMTQ6MzU6MjYgMjAwOCAtMDYwMAotCi0gICAgODV4eCw4Nnh4OiBEZXRlcm1pbmUgSTJDIGNsb2NrIGZyZXF1ZW5jaWVzIGFuZCBzdG9yZSBpbiBnbG9iYWxfZGF0YQotCi0gICAgVXBkYXRlIGdsb2JhbF9kYXRhIHRvIGRlZmluZSBpMmMxX2NsayBhbmQgaTJjMl9jbGsgdG8gODV4eCBhbmQgODZ4eC4KLQotICAgIFVwZGF0ZSB0aGUgZ2V0X2Nsb2NrcygpIGZ1bmN0aW9uIGluIDg1eHggYW5kIDg2eHggdG8gZGV0ZXJtaW5lIHRoZSBJMkMKLSAgICBjbG9jayBmcmVxdWVuY3kgYW5kIHN0b3JlIGl0IGluIGdkLT5pMmMxX2NsayBhbmQgZ2QtPmkyYzJfY2xrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdlYzhiYjE1ZWUzNjhlYTU0ZDQ4ZDY0ODY3NzY3YTcwNGQ5YWI0YzIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBEZWMgMjcgMTA6NTY6NTQgMjAwNyArMDEwMAotCi0gICAgT01BUDU5MTI6IGZpeCBGSUZPIGhhbmRsaW5nIGluIFVBUlQgZHJpdmVyCi0KLSAgICBBY2NvcmRpbmcgdG8gdGhlIE9NQVA1OTEyIFNlcmlhbCBJbnRlcmZhY2VzIFJlZmVyZW5jZSBHdWlkZSAoc2VlCi0gICAgaHR0cDovL2ZvY3VzLnRpLmNvbS9saXQvdWcvc3BydTc2MGMvc3BydTc2MGMucGRmLCBwYWdlIDE1MCksIHRoZQotICAgIEZJRk9fRU4gZW5hYmxlIGJpdCBpbiB0aGUgRklGTyBDb250cm9sIFJlZ2lzdGVyIChGQ1IpIGNhbiBvbmx5IGJlCi0gICAgY2hhbmdlZCB3aGVuIHRoZSBiYXVkIGNsb2NrIGlzIG5vdCBydW5uaW5nLCBpLiBlLiB3aGVuIGJvdGggRExMIGFuZAotICAgIERMSCBhcmUgc2V0IHRvIDAuCi0KLSAgICBUaHVzIG1ha2Ugc3VyZSB0aGF0IERMTCBhbmQgRExIIGFyZSAwIHdoZW4gd3JpdGluZyB0aGUgRkNSLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDE2MTU4Nzc4YjVmNTJmMjAxZTk1ZGVkMmQyZDkwODRiMGVkNTY3MGQKLUF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLURhdGU6CVdlZCBEZWMgMTkgMTU6MTA6NTIgMjAwNyArMDEwMAotCi0gICAgQVJNOiBTM0MyNHgwIFNvQyBOQU5EIGNvbnRyb2xsZXIgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgc3VwcG9ydCB0byB0aGUgUzNDMjR4MCBTb0MgY29kZSBpbiB1LWJvb3QKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Ci0KLWNvbW1pdCBhN2MxODVlZDNkOWY4ZWJkODVjZmMyODZlMWZmZWU3MmU0ODAzMTYzCi1BdXRob3I6IEhhcmFsZCBXZWx0ZSA8bGFmb3JnZUBvcGVubW9rby5vcmc+Ci1EYXRlOglXZWQgRGVjIDE5IDE0OjI0OjQwIDIwMDcgKzAxMDAKLQotICAgIEFSTTogczNjMjR4eDogTXVsdGlwbGUgc2VyaWFsIHBvcnQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIENPTkZJR19TRVJJQUxfTVVMVEkgb24gczNjMjR4MCBDUFUncwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLQotY29tbWl0IGEyNWY3MmYxZjczYTExZGU2ODI1MWZiODhjODk5OTFlMjAyZTY4ZmEKLUF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLURhdGU6CVdlZCBEZWMgMTkgMTQ6MTY6NTcgMjAwNyArMDEwMAotCi0gICAgQVJNOiBhcm05MjB0OiBBbGxvdyB1c2Ugb2YgJ2dkJyBwb2ludGVyIGZyb20gSVJRCi0KLSAgICBUaGlzIHBhdGNoIGFsbG93cyB1cyB0byB1c2UgdGhlICdnZCcgcG9pbnRlciAoYW5kIHRodXMgZW52aXJvbm1lbnQKLSAgICBhbmQgZXZlcnl0aGluZyBlbHNlIGFzc29jaWF0ZWQgd2l0aCBpdCkgZnJvbSBpbnRlcnJ1cHQgY29udGV4dCBvbgotICAgIGFybTkyMHQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgotCi1jb21taXQgYmUxOWJkNWNkMGY0NTRiNjMyOTg4NDRhMGI1Mzc3ZTAyOWIyY2FhZAotQXV0aG9yOiBIYXJhbGQgV2VsdGUgPGxhZm9yZ2VAb3Blbm1va28ub3JnPgotRGF0ZToJV2VkIERlYyAxOSAxNDoxOTozOCAyMDA3ICswMTAwCi0KLSAgICBBUk06IGFybTkyMC9zM2MyNHh4OiBJUlEgZGVtdWxpdHBsZXhlciBjYWxsYmFjawotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgSVJRIGRlbXVsdGlwbGV4ZXIgY2FsbGJhY2sgdG8gdGhlIGFybTkyMCBjcHUgY29yZSBjb2RlLAotICAgIHBsdXMgYSBzdHViIGltcGxlbWVudGF0aW9uIG9mIGl0IGZvciB0aGUgUzNDMjQxMC4KLQotICAgIFRoZSBwdXJwb3NlIGlzIHRvIGFsbG93IGFybTkyMHQgaW1wbGVtZW50YXRpb25zIHN1Y2ggYXMgdGhlIHMzYzI0eDAgdG8KLSAgICBpbXBsZW1lbnQgaW50ZXJydXB0IGhhbmRsZXJzIGluIHUtYm9vdCB3aXRob3V0IGhhdmluZyB0byB0b3VjaCBjb3JlCi0gICAgYXJtOTIwdCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLQotY29tbWl0IGE0MWRiYmQ5OGQyMDFkOGFlYTMxYjVkMjFkZjQ3NDJjMjBjZDdlZGEKLUF1dGhvcjogSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotRGF0ZToJVHVlIERlYyAxOCAxNjowMzowNyAyMDA3IC0wODAwCi0KLSAgICBBUk06IERpc3BsYXkgRXRoZXJuZXQgaW5mbyBpbiBkb19iZGluZm8gb25seSBpZiBDT05GSUdfQ01EX05FVCBpcyBkZWZpbmVkCi0KLSAgICBBZGQgaWZkZWYgdG8gYmRpbmZvIGNvbW1hbmQgdG8gZGlzcGxheSBldGhlcm5ldCBpbmZvcm1hdGlvbgotICAgIG9ubHkgaWYgQ09ORklHX0NNRF9ORVQgaXMgZGVmaW5lZCBmb3IgYXJtIG1vZHVsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLIFIgR3VydXJhamEgSGViYmFyIDxndXJ1cmFqYWtyQHNhbnlvLmNvLmluPgotCi1jb21taXQgZjdhZDc5YjZmOWYwZjQ1NDM3YjYyZTE5YjQ1MzU2Y2MyYWFmNDg4NAotQXV0aG9yOiBIZWJiYXIgPGd1cnVyYWpha3JAc2FueW8uY28uaW4+Ci1EYXRlOglUdWUgRGVjIDE4IDE2OjAwOjU0IDIwMDcgLTA4MDAKLQotICAgIEFSTTogYWRkIEkyQyBpbml0IGZ1bmN0aW9uIGNhbGwgaW4gbGliX2FybS9ib2FyZC5jCi0KLSAgICBBZGRzIEkyQyBpbml0IGZ1bmMgY2FsbCB0byBpbml0IHNlcXVlbmNlIGZvciBBUk0gYm9hcmRzLiBUaGlzIGlzCi0gICAgcHJlc2VudCBpbiBwcGMsYmxhY2tmaW4gYW5kIG90aGVyIHByb2Nlc3NvciBpbml0IHNlcXVlbmNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSyBSIEd1cnVyYWphIEhlYmJhciA8Z3VydXJhamFrckBzYW55by5jby5pbj4KLQotY29tbWl0IGZmMDJmMTM5ODA0ZjNjYjYxNDE0ZjdiYmNiZmRhYTAyNzllM2VmYWUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEZlYiAxIDA5OjM4OjI5IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogRml4IG5kZmMgSFcgRUNDIGJ5dGUgb3JkZXIKLQotICAgIFRoZSBjdXJyZW50IG5kZmMgSFcgRUNDIGltcGxlbWVudGF0aW9uIHN3YXBzIHRoZSBmaXJzdCB0d28gRUNDIGJ5dGVzLgotICAgIEJ1dCB0aGUgNHh4IE5ERkMgYWxyZWFkeSB1c2VzIHRoZSBTTUMgKFNtYXJ0IE1lZGlhIENhcmQpIEVDQyBvcmRlcmluZywKLSAgICBzbyB0aGlzIHN3YXBwaW5nIGluIHRoZSBIVyBFQ0MgZHJpdmVyIGlzIGJvZ3VzLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMKLSAgICBwcm9ibGVtIGFuZCBub3cgcmVhbGx5IHVzZXMgdGhlIFNNQyBFQ0MgYnl0ZSBvcmRlci4KLQotICAgIFRoYW5rcyB0byBTZWFuIE1hY0xlbm5hbiBmb3IgcG9pbnRpbmcgdGhpcyBvdXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlMWQxNDI5YjQ5YjBlZTU4YzgwZjhjN2IyOWMxZWJhZjhiZTdmNWYxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMzAgMTU6MzU6NTAgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggR1BJTyBjb25maWd1cmF0aW9uIGZvciBwY3M0NDBlcAotCi0gICAgVGhlIFNSRDBfUEZDMCByZWdpc3RlciB3YXMgbm90IGNvbmZpZ3VyZWQgY29ycmVjdGx5IHRvIGVuYWJsZSB0aGUgR1BJTydzCi0gICAgNDktNjMgZm9yIEdQSU8uIFRoZXkgaGF2ZSBiZWVuIGNvbmZpZ3VyZWQgYXMgdHJhY2Ugc2lnbmFscy4gVGhpcyBwYXRjaAotICAgIGZpeGVzIHRoaXMgYnkgY2xlYXJpbmcgdGhlIGNvcnJlc3BvbmRpbmcgYml0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjhkNzdkOTY4YmZlMDMxNmRlYjViZjE1YzE3ZjU3ZDVmZjJjODgyMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDMwIDE0OjQ4OjI4IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBpbml0LXJhbSBiaWdnZXIgdGhhbiA0ayBvbiA0NDAgcGxhdGZvcm1zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZmVkZmRkZjk3NDYxYjg4NjY4YjlhZWM3NzRkZmI3YTBjNmRjMzY4Ci1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLURhdGU6CUZyaSBEZWMgNyAwMDo0MjozMiAyMDA3ICswMTAwCi0KLSAgICBBUk06IEJvYXJkIHZvaWNlYmx1ZSB1cGRhdGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotY29tbWl0IDJjNTI2MGY3MTExNjhkNWVlOTFjNzBkZGJiN2Q4OTcwMTNlZWZjNDYKLUF1dGhvcjogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotRGF0ZToJVGh1IERlYyA2IDIzOjI0OjU3IDIwMDcgKzAxMDAKLQotICAgIEFSTTogQVQ5MVJNOTIwMCBiYXNlZCBib2FyZHMgY29uZmlnIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotICAgIFJlbW92ZSBub3doZXJlIHVzZWQgc3RydWN0IGJkX2luZm9fZXh0LCByZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZXMsIGZpeAotICAgIGluZGVudGF0aW9uLgotCi1jb21taXQgNDgxZjI4YjFkYjVjZDIxZGViNTVmNjkzOTliYTI0MGUxMDdhZjRjNwotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglUaHUgRGVjIDYgMjI6NTk6MTYgMjAwNyArMDEwMAotCi0gICAgQVJNOiBGaXggYXQ5MXJtOTIwMGRrIGJhc2UgYWRkcmVzcwotCi0gICAgU29tZXdoZXJlIGR1cmluZyBkZXZlbG9wbWVudCBvZiBVLUJvb3QtMS4xLjMgQ09ORklHX0JPT1RCSU5GVU5DIHdhcwotICAgIHJlbmFtZWQgaW50byBDT05GSUdfSU5JVF9DUklUSUNBTCB3aGljaCB3YXMgMDQgQXByIDIwMDUgcmVwbGFjZWQKLSAgICB3aXRoIENPTkZJR19TS0lQX0xPV0xFVkVMX0lOSVQgYW5kIENPTkZJR19TS0lQX1JFTE9DQVRFX1VCT09ULgotICAgIEhvd2V2ZXIgQ09ORklHX1NLSVBfTE9XTEVWRUxfSU5JVCBoYXMgb3Bvc2l0ZSBtZWFuaW5nIHRvCi0gICAgQ09ORklHX0JPT1RCSU5GVU5DLCBzbyBmaXggY29uZmlndXJhdGlvbiB0byByZWZsZWN0IHRoaXMgZmFjdC4KLSAgICBJJ20gc2VuZGluZyB0aGlzIHBhdGNoIDR0aCAoISkgdGltZSBpbiBob3BlIGl0IHByb2R1Y2VzIGF0IGxlYXN0IHNvbWUKLSAgICByZWFjdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLQotICAgIEZpeCBhdDkxcm05MjAwZGsgYmFzZSBhbmQgZW52aXJvbm1lbnQgYWRkcmVzcy4KLQotY29tbWl0IGM5NTIxOWZhZTJhN2FkZDdkYWEyZjkxYWVkY2E2NWIxNjk4NDY1YzcKLUF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDIwIDEwOjQwOjI0IDIwMDcgKzAxMDAKLQotICAgIE1NQyBmb3IgUFhBIDI3WCAocmVzdWJtaXQpCi0KLSAgICBNTUMgc3VwcG9ydCBmb3IgWF9TY2FsZSBQWEEgaXMgYnJva2VuIGFuZCBkb2VzIG5vdCB3b3JrLgotICAgIE1haW5seSwgdGhlIG1tY19pbml0KCkgZnVuY3Rpb24gY2Fubm90IHJlY29nbml6ZSBjdXJyZW50IFNEL01NQyBjYXJkcy4KLSAgICBUaGVyZSB3ZXJlIGFscmVhZHkgc29tZSBwYXRjaGVzIGFyb3VuZCB0aGUgd29ybGQgYnV0IG5vbmUgb2YgdGhlbSB3YXMKLSAgICBtZXJnZWQgaW50byB0aGUgb2ZmaWNpYWwgdS1ib290IHRyZWUuCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIG9yZGVyIGZpeGluZyB0aGlzIGlzc3VlLiBSZXN1Ym1pdCBhZnRlciBjb2RlIGNsZWFudXAuCi0KLSAgICBBcHBsaWVkIGFuZCB0ZXN0ZWQgb24gUFhBIDI3MCAoVHJpemVwc0lWIG1vZHVsZSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDk2YmJmYTFlNjYyNWNlMjNhMTUwOTM2ODYzYjNlY2Y0Yzg1M2ViMzMKLUF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDIwIDEwOjM3OjA0IDIwMDcgKzAxMDAKLQotICAgIEZpeCBnY2MgaXNzdWVzIGluIHB4YS1yZWdzLmgKLQotICAgIEZpeCBnY2M0IGlzc3VlLiBXaXRoIHNvbWUgdG9vbGNoYWluLCBhIHByZXZpb3VzIHBhdGNoIHRoYXQgZml4ZXMgZ2NjNAotICAgIGlzc3VlcyBnZW5lcmF0ZXMgd3JvbmcgY29kZS4KLSAgICAoUHJvYmxlbSB3YXMgcmVwb3J0ZWQgd2l0aCBnY2MtNC4wLjItZ2xpYmMtMi4zLjYvYXJtLXNvZnRmbG9hdC1saW51eC1nbnUpLgotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0gYW5kIHNvbHZlcyB0aGUgZ2NjLTQgaXNzdWVzIGFzIHRoZSBsaW51eAotICAgIGtlcm5lbCBkb2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogRG1pdHJ5IEl2YW5vdiA8aXZhZG1pdHJ5QGdtYWlsLmNvbT4KLQotY29tbWl0IDcwNDdiMzg4ODc2ZTdiOTA1YjJlYzRlZGI4MDEwNTQzZTM2NDFiODUKLUF1dGhvcjogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgotRGF0ZToJVHVlIEphbiAyOSAwODo0NTowMyAyMDA4ICswMTAwCi0KLSAgICBUUU04MzR4OiBlbmFibGUgREhDUAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVucyBHZWhybGVpbiA8c2V3X3NAdHFzLmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhODc3MDA0ZDQ0Y2E3ZGJjMWU2MThhZGQzZWViMWRhN2M4NGU0YmVjCi1BdXRob3I6IEplbnMgR2VocmxlaW4gPHNld19zQHRxcy5kZT4KLURhdGU6CVR1ZSBKYW4gMjkgMDg6NDU6MDIgMjAwOCArMDEwMAotCi0gICAgVFFNODM0eDogc3VwcG9ydCBmb3IgU3BhbnNpb24gTi10eXBlIEZsYXNoZXMgKHNlY3RvciBzaXplID0gMjU2IEtpQiBhdCAyeDE2IEJpdCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZW5zIEdlaHJsZWluIDxzZXdfc0B0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg5MzFhYjE3NjAyNWIwM2NmYzMyMGIzZmQxZWNhNDMyYTg4ZWQ1NjAKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVNhdCBKYW4gMjYgMjM6NDE6MTkgMjAwOCAtMDUwMAotCi0gICAgRml4IGNvbmRpdGlvbmFsIGNvbXBpbGF0aW9uIG9mIG1weDh4eHhfc3BpIGRyaXZlcgotCi0gICAgVGhpcyBkcml2ZXIgc2hvdWxkIG9ubHkgY29tcGlsZSBpZiBDT05GSUdfTVBDOFhYWF9TUEkgaXMgc2V0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2M2Y3MzJkM2QzODgwZmViNTMxZjQ4YWYyNDdjMDI1YmYwMTQ2MmIwCi1BdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgSmFuIDI5IDE3OjAwOjM0IDIwMDggKzAxMDAKLQotICAgIEFQSTogUHJvdmlkZSBkdW1teSBoYWx0KCkgaW4gdGhlIGdsdWUgbGF5ZXIuCi0KLSAgICBUaGlzIGZpeGVzIGEgZGVtbyBhcHAgbGluayBmYWlsdXJlIG9uIHBsYXRmb3JtcyBjb25maWd1cmVkIHdpdGggQ09ORklHX1BBTklDX0hBTkcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMGRjMWZjMjJhZjg2ZDE2OTkzMzg4ZDllZDk2MzBkYmFhMmQ1MTgyNgotQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiAyOSAxNjo1NzozOCAyMDA4ICswMTAwCi0KLSAgICBBUEk6IENvbnZlcnQgY29uZGl0aW9uYWwgYnVpbGRpbmcgdG8gdGhlIG5ldyBzY2hlbWUuCi0KLSAgICBUaGlzIGZpeGVzIGEgYnVpbGQgYnJlYWthZ2Ugd2l0aCBDT05GSUdfQVBJIGVuYWJsZWQsIHdoaWNoIGFwcGVhcmVkIGFmdGVyCi0gICAgdGhlIHJlY2VudCBjaGFuZ2VzIGluIHRoZSBVLUJvb3QgYnVpbGQgc3lzdGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDk4Yjc0MjQ4OWMwOTc4MGJlNmE4MzJlZWFhNGU1ZWZmODI0NzkyYmIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gMjUgMDk6NTY6MTcgMjAwOCArMDEwMAotCi0gICAgaW5rYTR4MDogcmVtb3ZlIGRlYWQgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDRmOTNmOGIxYTRkMzViNmQzMDI4NDIxMzJlZGJhOTIwZWY4ZjYyYWEKLUF1dGhvcjogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDIzIDE2OjMxOjA2IDIwMDggLTA2MDAKLQotICAgIDg2eHg6IEFkZCByZWdpbmZvIGNvbW1hbmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGRjZWJjYjYzODcxNWE2Mjc4ZGE5M2I1NTNkNTAxNmY5OTgyMzgxNgotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDUgMjAwOCAtMDYwMAotCi0gICAgODZ4eDogQWRkIHByaW50X2xhd3MgZnVuY3Rpb24gdG8gZnNsX2xhdy5jCi0KLSAgICBUaGlzIGNhbiBiZSB1c2VkIGZvciBkZWJ1ZywgYW5kIHdpbGwgYmUgdXNlZCBieSBib2FyZCBjb2RlCi0gICAgdG8gaGVscCBpbXBsZW1lbnQgcmVnaW5mby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWNkMzI0MjZmMjZhMDU2N2JiNjFmMzM5ZWRkODNjNmEyY2U5YmZjMwotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDQgMjAwOCAtMDYwMAotCi0gICAgODZ4eDogUmVtb3ZlIG9sZC1zdHlsZSBsYXcgc2V0dXAgY29kZQotCi0gICAgVGhpcyBpbmNsdWRlcyBtcGM4NjEwaHBjZCwgbXBjODY0MWhwY24sIGFuZCBzYmM4NjQxZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzEzZDgxODY2NDlkYWU4NzQ2MTNkNDk1YjBjZWNhYTAzOWE5OGIzMAotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDMgMjAwOCAtMDYwMAotCi0gICAgODZ4eDogQ29udmVydCBzYmM4NjQxZCB0byB1c2UgbmV3IGxhdyBzZXR1cCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwMzE5NzZmNjM2NGI5MzgzM2U5ODlmNTdlOWYxZTAyM2UwYmU4YzRjCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEphbiAyMyAxNjozMTowMiAyMDA4IC0wNjAwCi0KLSAgICA4Nnh4OiBDb252ZXJ0IG1wYzg2MTBocGNkIHRvIG5ldyBsYXcgc2V0dXAgbWV0aG9kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVja3kgQnJ1Y2UgPGJlY2t5LmJydWNlQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0OTMzYjkxZjhhNDllNDM2NjgxZjE2M2RmMzE3M2JlYjkxY2FjNDRhCi1BdXRob3I6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEphbiAyMyAxNjozMTowMSAyMDA4IC0wNjAwCi0KLSAgICA4Nnh4OiBTdXBwb3J0IG5ldyBsYXcgc2V0dXAgbWV0aG9kIGFuZCBjb252ZXJ0IG1wYzg2NDEKLQotICAgIEFkZHMgdGhlIHN1cHBvcnQgY29kZSBpbiBjcHUvbXBjODZ4eCBmb3IgdGhlIG5ldyBsYXcgc2V0dXAgY29kZQotICAgIHJlY2VudGx5IGNyZWF0ZWQgZnNsX2xhdy5jLCBhbmQgY2hhbmdlcyB0aGUgTVBDODY0MUhQQ04gY29uZmlnCi0gICAgdG8gdXNlIHRoaXMgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMWE0MWY3Y2U5YzA4NmUyMDhjMGVhYmY1MjU2NWEyMzdhZjJhMmJkMQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmVja3kuYnJ1Y2VAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMjMgMTY6MzE6MDAgMjAwOCAtMDYwMAotCi0gICAgODZ4eDogUmVhcnJhbmdlIHRoZSBzZXF1ZW5jZSBpbiBzdGFydC5TCi0KLSAgICAqIHNwbGl0IHRoZSBCQVQgaW5pdGlhbGl6YXRpb24gc28gdGhhdCBvbmx5IDIgQkFUcyAoZm9yIHRoZSBib290IHBhZ2UKLSAgICBhbmQgc3RhY2spIGFyZSBwcm9ncmFtbWVkIHZlcnkgZWFybHkgb24uICBUaGUgcmVzdCBhcmUgaW5pdGlhbGl6ZWQgbGF0ZXIuCi0gICAgKiBNb3ZlIG90aGVyIEJBVCBzZXR1cCwgIGNjc3JiYXIgc2V0dXAsIGFuZCBsYXcgc2V0dXAgbGF0ZXIgaW4gdGhlIGNvZGUKLSAgICBhZnRlciB0cmFuc2xhdGlvbiBoYXMgYmVlbiBlbmFibGVkLgotCi0gICAgVGhlc2UgY2hhbmdlcyB3aWxsIGZhY2lsaXRhdGUgdGhlIG1vdmluZyBvZiBsYXcgYW5kIEJBVCBpbml0aWFsaXphdGlvbgotICAgIHRvIEMgY29kZSwgYW5kIHdpbGwgYWlkIHdpdGggMzYtYml0IHBoeXNpY2FsIGFkZHJlc3Npbmcgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlY2t5IEJydWNlIDxiZWNreS5icnVjZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzNkYWMwM2IxYjVkNjFlNGZlZDdiYWQ0NDViYTQwYjRjOTdmZWJhMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyMyAxNDo0MTozNyAyMDA4ICswMTAwCi0KLSAgICBDb2RpbmcgU3R5bGUgQ2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDg2NWYwZjk3NTRiOTUxODNjYWQzOTVkZTdlOGNiODVkZjBjNmVhMWYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMjMgMTQ6MzE6MTcgMjAwOCArMDEwMAotCi0gICAgQ29kaW5nIFN0eWxlIENsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjZmU1Y2E3Nzk3NmFmZGJlN2VjYjg2ZTM5ZmQ3NTA1YmRlNjM2YWNlCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKYW4gMTggMTA6MDc6MDQgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogQ29ycmVjdCB0aGUgc3RydWN0IHNwaTh4eHggaW4gbXBjOHh4eF9zcGkuaAotCi0gICAgVGhlIGNvbW1pdCAwNGE5ZTExODBhYzc2YTdiYWNjMTVhNmZjZDk1YWQ4MzlkNjViZGRiCi0gICAgY2F1c2UgdGhlIDgzeHggaW1tYXAgYnJva2VuLCBzbyB0aGUgRE1BIGFuZCBQQ0kgd2lsbAotICAgIGJlIGZhaWxlZC4KLQotICAgIFRoZSBwYXRjaCBmaXggdGhlIHN0cnVjdCBzcGk4eHh4IGFuZCBybSBzdHJ1Y3Qgc3BpODN4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZiNDQzOTQ0NDI4NmUwZmNkMDE1OTZkZjUwNGU2Y2E4OTdhZDNlNWEKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTYXQgQXByIDE0IDE3OjExOjQ5IDIwMDcgKzAyMDAKLQotICAgIEFWUjMyOiBBVE5HVzEwMCBib2FyZCBzdXBwb3J0Ci0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdGhlIEFUTkdXMTAwIE5ldHdvcmsgR2F0ZXdheSByZWZlcmVuY2UgZGVzaWduLAotICAgIGluY2x1ZGluZyBmbGFzaCwgZXRoZXJuZXQgYW5kIE1NQyBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBlMDA2OTI3YTBiOWE1NGU4ZWU3Njg1ZDhhYzc0OGFhYWQ2ODAxODYyCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU2F0IE5vdiAyNCAxODoxNTozMSAyMDA3ICswMTAwCi0KLSAgICBBVlIzMjogSW5pdGlhbGl6ZSBpcGFkZHIsIGxvYWRhZGRyIGFuZCBib290ZmlsZSBhdCBzdGFydHVwCi0KLSAgICBJIGRvbid0IGtub3cgd2h5IHRoZSByZWxldmFudCBsYXllcnMgY2FuJ3QgZG8gdGhpcyBieSBpdHNlbGYsIGJ1dCB0aGlzCi0gICAgaXMgd2hhdCBwcGMgZG9lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNzk5ODkxZWY3YjFiMzQzMjAzMmVjMjM0NjZkZjZiNjY1YTc5N2ZhNAotQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgotRGF0ZToJRnJpIEphbiAxOCAwMDowNDoyOCAyMDA4ICswMTAwCi0KLSAgICBBZGQgQWNUdXggYm9hcmQgc3VwcG9ydAotCi0gICAgSGksCi0KLSAgICBUaGUgcGF0Y2ggYWRkcyA0IGJvYXJkcywgY2FsbGVkIEFjVHV4LTEgLi4gQWNUdXgtNC4gVGhpcyBwYXRjaCBjb250YWlucyB0aGUKLSAgICBmaWxlcyB0aGF0Ci0gICAgY29udGFpbiBjaGFuZ2VzIGZvciBtdWx0aXBsZSBib2FyZHMsIHRoZSBib2FyZC1zcGVjaWZpYyBmaWxlcyBmb2xsb3cgYXMKLSAgICBzZXBhcmF0ZSBwYXRjaGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLQotY29tbWl0IDY2YTQzNDRhNGQ5MTBhMTExMjVkZjc3Njg4OTlhZDUyOTcxOTg1NWUKLUF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMTk6NTM6MjMgMjAwOCArMDEwMAotCi0gICAgYWRkIEFjVHV4LTQgYm9hcmQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLQotY29tbWl0IGJjMjQzNDVlNDEwMWE1Yzk5NmQ2YjQ4Y2U0OTdiMDljNTMwMjVkYzYKLUF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMTk6NTE6NTUgMjAwOCArMDEwMAotCi0gICAgYWRkIEFjVHV4LTMgYm9hcmQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLQotY29tbWl0IGFlYmYwMGZjNGQxMzQzYjI0NzE1MzczODkzZjdiMjBiZjQ2MmQxZTkKLUF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMTk6NTE6MTQgMjAwOCArMDEwMAotCi0gICAgYWRkIEFjVHV4LTIgYm9hcmQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLQotY29tbWl0IGVhOTllOGYwNWI3MjQwZmQ2NTc3MzllMjg2NjY0NjY0YWUxNjBhYmUKLUF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMTk6NTA6MzcgMjAwOCArMDEwMAotCi0gICAgYWRkIEFjVHV4LTEgYm9hcmQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLQotY29tbWl0IDNkOWYzYmZiN2EzM2VmZThlNDFlMDFiMDI1NTYzY2Q3MTJjNTdkNjQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBKYW4gMTQgMTk6MjA6MDggMjAwOCArMDEwMAotCi0gICAgQVJNOiByZW1vdmUgdXNlbGVzcyBmdW5jdGlvbiBib2FyZF9wb3N0X2luaXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5NmJkNDYyOTQyMDIyZTQ1NjliNTgyYzA3MmEwZWQyNmRlMWNkMTliCi1BdXRob3I6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+Ci1EYXRlOglUaHUgSmFuIDEwIDE0OjU5OjQ2IDIwMDggKzAxMDAKLQotICAgIElYUDogZW5hYmxlIFJUUwotCi0gICAgZW5hYmxlcyB0aGUgUlRTIHNpZ25hbCB3aXRoIENPTkZJR19TRVJJQUxfUlRTX0FDVElWRS4KLSAgICBObyBoYW5kc2hha2luZyBpcyBkb25lLCBidXQgdGhlIGFjdGl2ZSBSVFMgc2lnbmFsIGFsbG93cyB0bwotICAgIGNvbm5lY3QgdG8gdGhlIHRhcmdldCB1c2luZyBhIFBDIHdoaWNoIGlzIHVzaW5nIFJUUy9DVFMKLSAgICBoYW5kc2hha2UsIGFuZCBkb2VzIG5vIGhhcm0gaWYgdGhlIFBDIGlzIHNldCB0byBpZ25vcmUgUlRTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLQotY29tbWl0IGExY2YwMjdhMDhmOWRjMWMwZTc2OTQ5OWU2ZjRmYmRkY2Y5Y2FiOTMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBKYW4gNyAwODo0MTozNCAyMDA4ICswMTAwCi0KLSAgICBJWFA6IGFkZCBkeW5hbWljIG1pY3JvY29kZSBhZGRyCi0KLSAgICBhbGxvdyB0byBsb2FkIHRoZSBtaWNyb2RlIGZyb20gZmxhc2ggb3IgcmFtIGJ5IGRvd25sb2FkIGl0IHRocm91Z2gKLSAgICB0aGUgc2VyaWFsIG9yIG90aGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjNlYmNjNDYxNWRkMzk5MjZjY2Y2MWYxZDVmMzUxMDI2MmVmNjU2NAotQXV0aG9yOiBNaWNoYWVsIFNjaHdpbmdlbiA8bWljaGFlbEBzY2h3aW5nZW4ub3JnPgotRGF0ZToJU2F0IE5vdiAxMCAxNTo0NDoxMiAyMDA3ICswMTAwCi0KLSAgICBsb2FkIGl4cDQyeCBOUEUgZmlybXdhcmUgZnJvbSBzZXBhcmF0ZSBmbGFzaCBibG9jaywgcmVtb3ZlIGRlYWQgY29kZQotCi0gICAgSGksCi0KLSAgICB0aGUgZm9sbG93aW5nIHBhdGNoIGFkZHMgc3VwcG9ydCB0byBtb3ZlIHRoZSBJWFA0MlggTlBFIGZpcm13YXJlIHRvIGEKLSAgICBzZXBhcmF0ZSBmbGFzaCBibG9jaywgd2hvc2Ugc3RhcnQgYWRkcmVzcyBpcyBkZWZpbmVkIGluCi0gICAgQ09ORklHX0lYUDRYWF9OUEVfRVhUX1VDT0RFX0JBU0UuIFVzaW5nIHRoYXQsIGl0IGlzIHBvc3NpYmxlIHRvIGJ1aWxkCi0gICAgTlBFLWVuYWJsZWQgdS1ib290IHdpdGhvdXQgY29weXJpZ2h0IHByb2JsZW1zIGR1ZSB0byB0aGUgTlBFIGZpcm13YXJlLgotCi0gICAgSSBob3BlIHRoZSBwYXRjaCBhcHBsaWVzLCBJIGdldCB3aGl0ZXNwYWNlLXJlbGF0ZWQgZGlmZmVyZW5jZXMgaW4gdGhlIE5QRQotICAgIGZpbGVzIGR1ZSB0byB0cmFpbGluZyB3aGl0ZXNwYWNlIGluIHRoZSBvcmlnaW5hbCB2ZXJzaW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgU2Nod2luZ2VuIDxtaWNoYWVsQHNjaHdpbmdlbi5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDU3YTEyNzIwMWViM2Q4Y2MxOTE3MGEwMDhlMGJkN2FmNjA4YmQ3MmYKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAxNSAxNDoxNTo0NiAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTQ3eF84eCAtIEFkZCBNNTQ3NUVWQiBhbmQgTTU0ODVFVkIgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMWFlZTExMTEzNWQ4NjYwYTE2NGQ0ZjZiZjdkNjZiMDMyZWE1MzVjZgotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSmFuIDE1IDE0OjAyOjQ5IDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBNQ0Y1NDd4Xzh4IC0gQWRkIE01NDd4RVZCIGFuZCBNNTQ4eEVWQiBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzc3ZDFhYmQ5Nzk2ZjFjMmUxNDg0MTdjYzEwNjU3ZTg0N2QzMThjZQotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSmFuIDE1IDE0OjAwOjI1IDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBBZGQgTUNGNTQ3eF84eCBGRUMgZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDcyZjU2YWRjMGIyNWQ0Mzg3NWFkMDY3YmFlNmJlMWJjZWE4NmI3OWYKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAxNSAxMzo1NDowOSAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE1DRjU0N3hfOHggZG1hIGNvZGUgYW5kIGhlYWRlciBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2UwOWZjNDliNTZlYTNjNDQyNzk0YjZiZTliN2RiNGI5OWRmZGM4NwotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSmFuIDE1IDEzOjUyOjAzIDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBBZGQgTUNGNTQ3eF84eCBkbWEgY29kZSAtIDIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDExODY1ZWE4NDRlNzE1NGZkMzBjN2UyODYwZGE0ZWVkNGExMmFkMWYKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAxNSAxMzo0ODo1MiAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE1DRjU0N3hfOHggZG1hIGNvZGUgLSAxCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0NjIxZmMzZmU3Y2Q2NWI3OGIzY2JkMzFmNjVjOWY3ZjcyYjIyYmQzCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTUgMTM6Mzk6NDQgMjAwOCAtMDYwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBNQ0Y1NDd4Xzh4IHJlbGF0ZWQgaGVhZGVyIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDU3MGMwMTg2YWVjYWIxYjc0N2IyZDQ0ZDBlMWQzYzFhYzRjYjI3ZjUKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAxNSAxMzozNzozNCAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE1DRjU0N3hfOHggY3B1IGFyY2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGUyNzU2ZjRiNTRhYmEwZTA1MjNiODFkZDE0NTY2NjgyOWNmN2ZkNTkKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiAxNCAxNzo0NzoyMyAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE1DRjUyMjd4IGNwdSBhbmQgTTUyMjc3RVZCIHN1cHBvcnQtMwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzg3NTgxMDI3OTk0YzE0ODEzMWIyZjExYWE3NTUwMWY3ODJlYzE5YQotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSmFuIDE0IDE3OjQ2OjE5IDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBBZGQgTUNGNTIyN3ggY3B1IGFuZCBNQ0Y1MjI3N0VWQiBzdXBwb3J0LTIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE1NTJhZjcwZWNhYjExYjlmM2RjZWZmNzUyOGVkMTVmYWY2NzhiOWQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiAxNCAxNzo0MzozMyAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE1DRjUyMjd4IGNwdSBhbmQgTTUyMjc3RVZCIHN1cHBvcnQtMQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzk3YjdiODFhMWYxMDA4Nzk4YWUxMjA2OTEzNTA4Y2M4OWNiM2E3ZAotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSmFuIDE0IDE3OjM1OjQ0IDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBGaXggQ0ZJIEZsYXNoIGxvdyBsZXZlbCBSZWFkL1dyaXRlIG1hY3JvCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZiBieTogSm9obiBSaWdieSA8anJpZ2J5QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhYTVmMWY5ZGM4MTVhNzZmNmRmZmI1ODA3OTg1OTljMDI4ZmU3ZmViCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKYW4gMTQgMTc6MjM6MDggMjAwOCAtMDYwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBNNTM3M0VWQiBwbGF0Zm9ybSBzdXBwb3J0IC0gMgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMWFjNTU5ZDRhYTM1OGY2M2I0OGM2MmI1NjQyMjRjMDZmZWViNGUzNgotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSmFuIDE0IDE3OjE5OjU0IDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBBZGQgTTUzNzNFVkIgcGxhdGZvcm0gc3VwcG9ydCAtIDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDMyMGQ2MTk5MWZhMzE5MGVlNDE3NjU2MDFlZDAxN2I2YjVmZjdiMmIKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiAxNCAxNzoxNzowMyAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogVXBkYXRlIEZsZXhCdXMgQ1MgZm9yIE1DRjUzMngKLQotICAgIERlZmluaXRpb24gdXBkYXRlIGFuZCBjaGFuZ2UgZnJvbSAxNmJpdCB0byAzMmJpdAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMmU3MmFkMDY0NGI5NDA4MTdhODlhMzU5MGNlMGQ3Yjk5YzA1YzM5NgotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSmFuIDE0IDE3OjExOjQ3IDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBQQ0kgYW5kIG1pc2MgdXBkYXRlcyBmb3IgTUNGNTQ0NXgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQyYjE2NDkzNDgwYWMzZDRhNjBhZDdkODM1YjBkYzI3ZDJlOTljZWUKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiAxNCAxNzowNjo1NSAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTQ0NXggaGVhZGVyIGZpbGVzIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ5YWFlNjI2MDk5M2E5M2Y3ZmNmMTNhYmZmODVhNjAxZjRmNTBlYTcKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiAxNCAxNjo1OTo0MiAyMDA4IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTMyeCBoZWFkZXIgZmlsZXMgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYgYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2FmNzc1MWQwNDdlNzRiMmVjNTg0MDBmOTdiODc5YzU2NDQ2YjNlOAotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSmFuIDE0IDE1OjMwOjE1IDIwMDggLTA2MDAKLQotICAgIENvbGRGaXJlOiBBZGQgbW9kdWxlcyBoZWFkZXIgZmlsZXMKLQotICAgIEFkZCBDRiBzcGVjaWZpYyBtb2R1bGVzIGhlYWRlciBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2huIFJpZ2J5IDxqcmlnYnlAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI5NTZhY2Q1ZWY5M2E0OTgzMzdmOGFjMmVjNmFlNmE3N2Q0OTFkYzUKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gMTcgMTI6NDg6MDAgMjAwOCAtMDYwMAotCi0gICAgY29kaW5nc3R5bGUgY2xlYW51cCBmb3Igc3BpIGRyaXZlcgotCi0gICAgLi5hbmQgcm0gdW51c2VkIENPTkZJR19GU0xfU1BJIGRlZmluZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ1OWZlZmZiNDJjOWYxNzQxMTZkYjdhODJhMzExZGY5ODk4M2RmY2UKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMTYgMTc6MTI6MTIgMjAwOCAtMDUwMAotCi0gICAgRlNMOiBGaXggY29tbW9uIEVFUFJPTV9kYXRhIHN0cnVjdHVyZSBkZWZpbml0aW9uCi0KLSAgICAtIEZpeCBFRVBST01fZGF0YSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbiBhY2NvcmRpbmcgdG8gU3lzdGVtIEVFUFJPTSBEYXRhIEZvcm1hdC4KLSAgICAtIFJlYWQgTUFDIGFkZHJlc3NlcyBmcm9tIEVFUFJPTSB0byBldGhYYWRkciBiZWZvcmUgc2F2aW5nIGV0aFhhZGRyIHRvCi0gICAgICBiZC0+YmlfZXRoYWRkci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2YmVlNzY0YmQ2ZGE1MTBhNGFhZDYxNDg4MDMwMGM5NjhiYzczMThkCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDE2IDE1OjQ4OjEyIDIwMDggLTA2MDAKLQotICAgIDg2eHg6IGVuYWJsZSBjb21tYW5kLWxpbmUgZWRpdGluZwotCi0gICAgRW5hYmxlIGNvbW1hbmQtbGluZSBlZGl0aW5nIGZvciBhbGwgTVBDODZ4eCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODBkZGQyMjYyNmQzMjFhNzcyZWJmYmEzMDRlYjc4MzBjYjRmNmJhYwotQXV0aG9yOiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotRGF0ZToJV2VkIEphbiAxNiAyMjozNzo0MiAyMDA4IC0wNTAwCi0KLSAgICBJbXBsZW1lbnQgaGFyZCBTUEkgZHJpdmVyIG9uIE1QQzgzNDlFTURTCi0KLSAgICBUaGlzIHBhdGNoIGltcGxlbWVudHMgdGhlIGZzbF9zcGkgZHJpdmVyIG9uIHRoZSBNUEM4MzQ5RU1EUyBldmFsdWF0aW9uIGJvYXJkLgotICAgIFRoaXMgYm9hcmQgaGFzIGFuIFNUIE0yNVA0MCA0TWJpdCBFRVBST00gb24gaXRzIFNQSSBidXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA0YTllMTE4MGFjNzZhN2JhY2MxNWE2ZmNkOTVhZDgzOWQ2NWJkZGIKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBKYW4gMTYgMjI6Mzc6MzUgMjAwOCAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIGEgRnJlZXNjYWxlIG5vbi1DUE0gU1BJIGNvbnRyb2xsZXIKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgU1BJIGNvbnRyb2xsZXIgZm91bmQgb24gRnJlZXNjYWxlIFBvd2VyUEMKLSAgICBwcm9jZXNzb3JzIHN1Y2ggYXMgdGhlIE1DUDgzNHggZmFtaWx5LiAgQWRkaXRpb25hbGx5LCBhIG5ldyBjb25maWcgb3B0aW9uLAotICAgIENPTkZJR19IQVJEX1NQSSwgaXMgYWRkZWQgZm9yIGdlbmVyYWwgcHVycG9zZSBTUEkgY29udHJvbGxlciB1c2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxiaWdnZXJiYWRkZXJiZW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhOGNiNDNhODliZTZjZmQyODMyNTdhNjAzZGQ5ODQxNTAzY2NjZTBmCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gMTcgMTg6MjM6MTkgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogRml4IHRoZSBmYXRhbCBjb25mbGljdCBvZiBtZXJnZQotCi0gICAgVGhlIGNvbW1pdCA5ZTg5NjQ3ODg5Y2Q0YjVhZGE1YjVlN2NhZDZjYmU1NTczN2EwOGQ3Ci0gICAgd2lsbCBjYXVzZSB0aGUgbXBjODMxNWVyZGIgYm9hcmQgY2FuJ3QgYm9vdCB1cC4KLQotICAgIFRoZSBwYXRjaCBmaXggdGhhdCBidWcsIGFuZCByZW1vdmUgdGhlIGR1cGxpY2F0ZWQgI2lmZGVmCi0gICAgQ0ZHX1NQQ1JfVFNFQ0VQIGNvZGUgYW5kIGNsZWFuIHRoZSBTQ0NSX1RTRUMyIGZvcgotICAgIE1QQzgzMTNFIHByb2Nlc3Nvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDMyNTllZWFhNDE0ODEyNWE4MTQxNzQ3N2Y2MmMwNWJkNjdmNjA1ODcKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDA4OjUwOjA5IDIwMDggLTA1MDAKLQotICAgIE1lcmdlIFNlcXVvaWEgYmVhdXRpZmljYXRpb24gaW50byBLb3JhdCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IGUxNjkyNTc3MzIxMTI5MWI1NjJlNzcxODcwNjFlOWRkMWQ3NTcyMTcKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgSmFuIDE3IDA3OjQ1OjA1IDIwMDggKzAxMDAKLQotICAgIG5ldDogYWRkICdldGhyb3RhdGUnIGVudmlyb25tZW50IHZhcmlhYmxlCi0KLSAgICBbUEFUQ0hdIG5ldDogYWRkICdldGhyb3RhdGUnIGVudmlyb25tZW50IHZhcmlhYmxlCi0KLSAgICBUaGlzIHBhdGNoIHJlcGxhY2VzIHRoZSBidWlsZHRpbWUgY29uZmlndXJhdGlvbiBvcHRpb24KLSAgICBDT05GSUdfTkVUX0RPX05PVF9UUllfQU5PVEhFUiB0aHJvdWdoIHRoZSAnZXRocm90YXRlJyBydW50aW1lCi0gICAgY29uZmlndXJhdGlvbiB2ZXJpYWJsZS4gU2VlIFJFQURNRS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBiYTUyYmUzZDBlNjE4YzI2MDcwZTkzYWFmM2MxZjJkMmFkZjU1NzFmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKYW4gMTcgMTQ6Mjk6MDQgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggY29tcGlsYXRpb24gd2FybmluZ3MgYW5kIGNvZGluZyBzdHlsZSBpc3N1ZXMgaW4gSENVNC9IQ1U1Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1NWVkMTUxNmNiYzFkYWQzYWUyNzdjNjdlZTA2ZmM0YTQ2ZWFhYzdkCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVRodSBKYW4gMTcgMTg6MDc6MzIgMjAwOCArMDkwMAotCi0gICAgc2g6IFJlbW92ZSBDT05GSUdfQ09NTUFORFMgZnJvbSBNUzc3MjBTRSBjb25maWcgZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMDU1NjA2YmQyNWU4OGMwY2QwNGFkMzQ4YTY3OWEwNGIxYjYxNmJlZQotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotRGF0ZToJV2VkIEphbiAxNiAxODozOToyMCAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IE5ldHN0YWwgSENVNCBib2FyZDogYWRkZWQgdmFyaW91cyBmaXhlcyBhbmQgUE9TVAotCi0gICAgLSBNb3ZlZCBzb21lIGNvbW1vbiBjb2RlIHRvIG5ldHN0YWwvY29tbW9uL25tX2JzcC5jLgotICAgIC0gc2RyYW0gaW5pdGlhbGlzYXRpb24gZ29lcyBnbyBuZXRzdGFsL2NvbW1vbi9maXhlZF9zZHJhbS5jLgotICAgIC0gQWRkZWQgc3VwcG9ydCBmb3IgUE9TVC4KLSAgICAtIFN0eWxpc3RpYyBjbGVhbnVwcyAobXVsdGktbGluZSBjb21tZW50cy8gZW5mb3JjZSA4MCBjb2xvbW4gd2lkdGgpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgNjliMDYzNGE0ZWU5OGM5NzkxODE1NjAwZDQzYjk5ZjYyNmE5NTJmMwotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotRGF0ZToJVGh1IEphbiAxNyAxMjo1Mzo1NiAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IG5ldHN0YWwvY29tbW9uIGRlZmluZSByb3V0aW5lcyB1c2VkIGJ5IGFsbCBib2FyZHMKLQotICAgIEFkZGVkIHNvbWUgcm91dGluZXMgdXNlZCBieSBhbGwgTmV0c3RhbCBib2FyZHM6Ci0gICAgLSBubV9ic3AuYzogLSBubV9zaG93X3ByaW50IGFuZAotCSAgICAtICBjb21tb25fbWlzY19pbml0X3IKLQkgICAgLSBzZXRfcGFyYW1zX2Zvcl9zd19pbnN0YWxsLiBWZXJ5IHNwZWNpZmljIGNvZGUgdG8gaGFuZGxlIG91ciBTVwotCSAgICAgIGluc3RhbGxhdGlvbiBwcm9jZWR1cmUKLSAgICAtIGZpeGVkX3NkcmFtLmM6IENvbW1vbiByb3V0aW5lcyBmb3IgSENVNCAoYW5kIHVwY29taW5nKSBNQ1UyNSBib2FyZHMKLSAgICAgIHRvIGhhbmRsZSBzZHJhbSBpbml0aWFsaXphdGlvbi4KLSAgICAtIG5tLmg6IENvbW1vbiBoZWFkZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCBlZmVmZjUzODJiN2E5MWI0OGExYWE2OGIyYjc1ZjkyYWQxZDMzZmY4Ci1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglXZWQgSmFuIDE2IDE4OjM5OjE4IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogTmV0c3RhbCBIQ1U1IGJvYXJkOiBhZGRlZCB2YXJpb3VzIGZpeGVzIGFuZCBQT1NUCi0KLSAgICAtIE1vdmVkIHNvbWUgY29tbW9uIGNvZGUgdG8gbmVzdGFsL2NvbW1vbi9ubV9ic3AuYy4KLSAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIHRoZSB2eFdvcmtzIEVEUi4KLSAgICAtIEVuYWJsZSB0cmFjZSBmb3IgTGF1dGVyYmFjaCwgaWYgcHJlc2VudC4KLSAgICAtIEFkZGVkIHN1cHBvcnQgZm9yIFBPU1QuCi0gICAgLSBTdHlsaXN0aWMgY2xlYW51cHMgKG11bHRpLWxpbmUgY29tbWVudHMvIGVuZm9yY2UgODAgY29sb21uIHdpZHRoKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDQzNzEwOTBlNWRhNzdlZGM3YmY5ZjI5NjM2NGRiNDgwMTYzOWQ5YzQKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLURhdGU6CVdlZCBKYW4gMTYgMTg6Mzk6MDggMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBOZXRzdGFsIEhDVTUgYm9hcmQuIEFkZGVkIFBPU1QuIFZhcmlvdXMgZml4ZXMKLQotICAgIC0gVmFyaW91cyBmaXhlcwotICAgIC0gUmVkdWNlZCByb21fc2l6ZSBmcm9tIDM4NCB0byAzMjAga0IKLSAgICAtIEVudmlyb25tZW50IGlzIG5vdyBpbiBmbGFzaAotICAgIC0gQWRkZWQgUE9TVAotICAgIC0gU3VwcG9ydCBmb3IgT0YKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCA0YmQ1MDM2ZTYwYWZhYzM3ZTQ4NGMyZDM1Y2JiZTdmNmNjMTYyM2U3Ci1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglXZWQgSmFuIDE2IDE4OjM3OjUwIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogTmV0c3RhbCBIQ1U0IGJvYXJkLiBBZGRlZCBQT1NULiBWYXJpb3VzIGZpeGVzCi0KLSAgICAtIFZhcmlvdXMgZml4ZXMKLSAgICAtIFJlZHVjZWQgcm9tX3NpemUgZnJvbSAzODQgdG8gMzIwIGtCCi0gICAgLSBFbnZpcm9ubWVudCBpcyBub3cgaW4gZmxhc2gKLSAgICAtIEFkZGVkIFBPU1QKLSAgICAtIFN1cHBvcnQgZm9yIE9GCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgMWEzYWM4NmI3OWZjYjY5MDI3NWM4NTg2MWM4ZWZhNmEzODk5MDYwYQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVRodSBKYW4gMTcgMTA6NTM6MDggMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBDb21wbGV0ZSBEVTQ0MCBib2FyZCBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDE1YTA4YmMyYmVmOTFlNWYxZWE0YjljZjYwZTQ2ODMyZDg2YmNjMWYKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgSmFuIDE3IDEwOjUyOjMwIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIERVNDQwIGJvYXJkIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgYWMzMzFkYTA3ZGIzODYwZjExZmExZDBmZDNkYjdjODEwYmNlMTE5OAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDE1OjUzOjUyIDIwMDggKzA5MDAKLQotICAgIHNoOiBVcGRhdGUgU3VwZXJIIFNDSUYgZHJpdmVyCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVkIHdyb25nIFNINzcyMCBDUFUgbWFjcm8gYW5kIGNoYW5nZWQgbWFjcm8gdGhhdAotICAgIGNhbGN1bGF0ZWQgdmFsdWUgb2YgU0NCUlIgcmVnaXN0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAzMzRlNDQyZTZmYWM1OWJlOTEyNDQwNjNlOWIzZjZjYTI1ZThkYWY4Ci1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIEphbiAxNiAxNToxMjo0NyAyMDA4ICswMTAwCi0KLSAgICBTZXQgaXBzIGRpdmlkb3IgdG8gMS80IG9mIGNzYiBjbG9jay4KLQotICAgIFByZXZpb3VzIHNldHRpbmcgY2F1c2UgaXBzIGNsb2NrIHRvIGJlIG91dCBvZiBzcGVjLiBUaGlzIGJ1ZyB3YXMgZm91bmQgYnkgSm9obgotICAgIFJpZ2J5IGZyb20gRnJlZXNjYWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA3ZGMzNThiYjBkZTllMmZhMzQxZjNiNGM5MTQ0NjZiMWYzNGIyZDg5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDAyOjE5OjE4IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IEdldCByaWRlIG9mIG9sZCBUTEIgc2V0dXAgY29kZQotCi0gICAgTm93IHRoYXQgYWxsIGJvYXJkcyBoYXZlIGJlZW4gY29udmVydGVkLCByZW1vdmUgb2xkIGNvbmZpZyBjb2RlIGFuZCB0aGUKLSAgICBjb25maWcgb3B0aW9uIGZvciB0aGUgbmV3IHN0eWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDNiNTU4ZTI2YTVlZjMxNjM1Nzg3ZDZkNmU5N2Q3MDkzOWQ0Zjg5MmQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKYW4gMTcgMDI6MDI6MTAgMjAwOCAtMDYwMAotCi0gICAgODV4eDogQ29udmVydCBUUU04NXh4IHRvIG5ldyBUTEIgc2V0dXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3NDEyMWI0NzBjMTRmN2VhZjI4NGVlODM4YmZmY2E2Zjk1MjEwNjllCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDAxOjU2OjMyIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IENvbnZlcnQgU1RYR1AzICYgU1RYU1NBIHRvIG5ldyBUTEIgc2V0dXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxNDNiNTE4ZDkxMjViNTRmOTZmMWQ3ZjFhZmM2NDBiOGFhZTgxZmYwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDAxOjQ0OjM0IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IENvbnZlcnQgU0JDODU0MC9TQkM4NTYwL1NCQzg1NDggdG8gbmV3IFRMQiBzZXR1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgxODIxOGJhYzZhMTE1OTFlMjU0MmMzNDRkMjMzMGUwZjRlMTk2OGIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKYW4gMTcgMDE6MzE6MzQgMjAwOCAtMDYwMAotCi0gICAgODV4eDogQ29udmVydCBQTTg1NC9QTTg1NiB0byBuZXcgVExCIHNldHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZmY0NjgxYzkyODViMmI0ZDI0NTUyYTE5Y2FjYzE3NjlmZTJmYzdlMAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEphbiAxNyAwMToyNTozMyAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBDb252ZXJ0IE1QQzg1NDBFVkFMIHRvIG5ldyBUTEIgc2V0dXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA3M2FhOWFjMmI0NmYxY2ZkMDM5MTA2ZWJkNmI5ODY1MDE2MDA1MjM0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDAxOjEyOjIyIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IENvbnZlcnQgTVBDODU2OCBNRFMgdG8gbmV3IFRMQiBzZXR1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDBkYjM3ZGMyZWVkMzA4ODRkYjJkYWEyNGRiZDlhMTEzYjVkMDA2MTAKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKYW4gMTcgMDE6MDE6MDkgMjAwOCAtMDYwMAotCi0gICAgODV4eDogQ29udmVydCBNUEM4NTQxL01QQzg1NTUvTVBDODU0OCBDRFMgdG8gbmV3IFRMQiBzZXR1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDIxOWE4MWI5OGQ4MzRmOTA3MWI2ZjdjM2JkYzZiN2VjMzljYzQ2Y2MKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBKYW4gMTcgMDA6NTI6MjkgMjAwOCAtMDYwMAotCi0gICAgODV4eDogQ29udmVydCBNUEM4NTQwL01QQzg1NjAgQURTIHRvIG5ldyBUTEIgc2V0dXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4MGQwYjZhMTQ5ODc2MWM0MzU1YjJkYjljODAwMWIwNGMyOTVlN2I4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSmFuIDE3IDAwOjMyOjE3IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IENvbnZlcnQgQVRVTTg1NDggdG8gbmV3IFRMQiBzZXR1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDBmN2EzZGM5NWNiZmYzYzIxYmQ2ZGJjNjM5MzEzNzk2NDEyYmJiYWIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMjM6MTE6NTcgMjAwOCAtMDYwMAotCi0gICAgODV4eDogQ29udmVydCBNUEM4NTQ0IERTIHRvIG5ldyBUTEIgc2V0dXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4NzE2MzE4MDU3YTVmNjBhYjFiYTA4MWVjZTJkYmU4MmFlMDBlMWVlCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSmFuIDE2IDIyOjM4OjM0IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IFJld29ya2VkIGluaXRpYWwgcHJvY2Vzc29yIGluaXQKLQotICAgIFJld29ya2VkIHRoZSBpbml0aWFsIHByb2Nlc3NvciBpbml0aWFsemF0aW9uIHNlcXVlbmNlOgotICAgICogaW50cm9kdWNlZCBjcHVfZWFybHlfaW5pdF9mIHRoYXQgaXMgcnVuIGluIGFkZHJlc3Mgc3BhY2UgMSAoQVM9MSkKLSAgICAqIE1vdmVkIFRMQi9MQVcgYW5kIENDU1IgaW5pdCBpbnRvIGNwdV9lYXJseV9pbml0X2YoKQotICAgICogUmV3b3JrZWQgaW5pdGlhbCBhc20gY29kZSB0byBkbyBtb3N0IG9mIHRoZSBjb3JlIGluaXQgYmVmb3JlIFRMQnMKLQotICAgIFRoZSBtYWluIHJlYXNvbnMgZm9yIHRoZXNlIGNoYW5nZXMgYXJlIHRvIGFsbG93IGhhbmRsaW5nIG9mIDM2LWJpdCBwaHlzCi0gICAgYWRkcmVzc2VzIGluIHRoZSBmdXR1cmUgYW5kIHNvbWUgb2YgdGhlIGlzc3VlcyB0aGF0IHdpbGwgZXhpc3Qgd2hlbiB3ZQotICAgIGRvIHRoYXQuCi0KLSAgICBUaGVyZSBhcmUgYSBmZXcgY2F2ZWF0cyBvbiB3aGF0IGNhbiBiZSBpbml0aWFsaXplZCB2aWEgdGhlIExBVyBhbmQgVExCCi0gICAgc3RhdGljIHRhYmxlczoKLSAgICAqIFRMQiBlbnRyeSAxNC8xNSBjYW4ndCBiZSBpbml0aWFsaXplZCB2aWEgdGhlIFRMQiB0YWJsZQotICAgICogYW55IExBVyB0aGF0IGNvdmVycyB0aGUgaW1wbGljaXQgYm9vdCB3aW5kb3cgKDRHLThNIHRvIDRHKSBtdXN0IG1hcCB0bwotICAgICAgdGhlIGNvZGUgdGhhdCBpcyBjdXJyZW50bHkgZXhlY3V0aW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDQ0YTIzY2ZkNjM2MGE2OGVhYTQxZjk0NTE5MDYxOGE1NTUxOWVhYzMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMjI6MzM6MjIgMjAwOCAtMDYwMAotCi0gICAgODV4eDogSW50cm9kdWNlIG5ldyB0bGIgQVBJCi0KLSAgICBBZGQgYSBzZXQgb2YgZnVuY3Rpb25zIHRvIG1hbmlwdWxhdGUgVExCIGVudHJpZXM6Ci0gICAgICogc2V0X3RsYigpIC0gd3JpdGUgYSB0bGIgZW50cnkKLSAgICAgKiBpbnZhbGlkYXRlX3RsYigpIC0gaW52YWxpZGF0ZSBhIHRsYiBhcnJheQotICAgICAqIGRpc2FibGVfdGxiKCkgLSBkaXNhYmxlIGEgdmFyaWFibGUgc2l6ZSB0bGIgZW50cnkKLSAgICAgKiBpbml0X3RsYnMoKSAtIHNldHVwIGluaXRpYWwgdGxicyBiYXNlZCBvbiBzdGF0aWMgdGFibGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiZTg4YjE2OTk4NjNjMjYyODE4ZjNhZjdmNjAxNzNiNGQ0OGRmOGZjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBKYW4gMTcgMDc6NTA6MTcgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggcmVtYWluaW5nIENPTkZJR19DT01NQU5EUyBpbiA0eHggZmlsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGM4YzQxZDRhODBiMWE4YWQ1OTg0YTI4N2Q4MWVhNzgwNDk2MjU5ZjgKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMTA6MDQ6NDIgMjAwOCAtMDYwMAotCi0gICAgODV4eDogVXNlIHByb3BlciBkZWZpbmVzIGZvciBQQ0kgYWRkcmVzc2VzCi0KLSAgICBXZSBzaG91bGQgYmUgdXNpbmcgdGhlIF9NRU1fUEhZUyBmb3IgTEFXIGFuZCBUTEIgc2V0dXAgYW5kIG5vdCBfTUVNX0JBU0UuCi0gICAgV2hpbGUgX01FTV9CQVNFICYgX01FTV9QSFlTIGFyZSBub3JtYWxseSB0aGUgc2FtZSwgX01FTV9CQVNFIHNob3VsZCBvbmx5Ci0gICAgYmUgdXNlZCBmb3IgY29uZmlndXJpbmcgdGhlIFBDSSBBVE1VLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDU0YTUwNzAxMTVlZmYzOGU5YjMyNGI3OGFiZGZhMGI0NTIwNTgwYjkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMDk6MjI6MjkgMjAwOCAtMDYwMAotCi0gICAgODV4eDogUmVtb3ZlIG9sZCBzdHlsZSBvZiBMQVcgaW5pdAotCi0gICAgQWxsIGJvYXJkcyBhcmUgbm93IHVzaW5nIHRoZSBuZXcgZnNsX2xhdyBjb2RlIHNvIHdlIGNhbiBkcm9wIHRoZSBvbGQgdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA0ZDM1MjFjYzc5Y2FiYzYxZWRmMTJjNDhjMGNlMzE4ZDRlZmI3MTJmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSmFuIDE2IDA5OjE1OjI5IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IGNvbnZlcnQgcmVtYWluaW5nIDg1eHggYm9hcmRzIG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCi0KLSAgICBDb252ZXJ0ZWQgQVRVTTg1NDgsIE1QQzg1NjggTURTLCBNUEM4NTQwIEVWQUwsIGFuZCBUUU04NXh4IGJvYXJkcyBvdmVyCi0gICAgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDU3MmIxM2FmYzQyNzEwZjI5NTdjMzgyYTcxMDM2MDQyOWMwZTA5OWIKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMDk6MTE6NTMgMjAwOCAtMDYwMAotCi0gICAgODV4eDogY29udmVydCBTVFhHUDMvU1RYU1NBIG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNDVmMjE2NmFjMDIzM2E5MjYzMDU4Mzc4ZjM5NjEyYmQxMWY2MTE5NgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEphbiAxNiAwOTowNjo0OCAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBjb252ZXJ0IFBNODU0L1BNODU2IG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZTJiMTU5ZDAwNzBlZTA2ZTRhYzdlMmY5MzgxZDNlOGU1NDJlNjE0YQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEphbiAxNiAwOTowNToyNyAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBjb252ZXJ0IFNCQzg1NDAvU0JDODU2MC9TQkM4NTQ4IG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMmNmYWExYWExYWFjMzlhODEwMDZiN2IyN2UwZTQzMWJmMjFmNmRmYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEphbiAxNiAwMTo0NToxMCAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBjb252ZXJ0IE1QQzg1NDEvTVBDODU1NS9NUEM4NTQ4IENEUyBvdmVyIHRvIHVzZSBuZXcgTEFXIGluaXQgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDcyMzJhMjcyNGNjYzlkY2JjM2VjNGVmODRhZGEwMmYxM2NjZDEyMzgKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBKYW4gMTYgMDE6MzI6MDYgMjAwOCAtMDYwMAotCi0gICAgODV4eDogY29udmVydCBNUEM4NTQwL01QQzg1NjAgQURTIG92ZXIgdG8gdXNlIG5ldyBMQVcgaW5pdCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNGJjYWU5YzkyYWVlMGQ3MmEyZjE5YjgxY2FiMjdlZjM4MTA3Y2U3NQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEphbiAxNiAwMToxNjoxNiAyMDA4IC0wNjAwCi0KLSAgICA4NXh4OiBjb252ZXJ0IE1QQzg1NDQgRFMgb3ZlciB0byB1c2UgbmV3IExBVyBpbml0IGNvZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4M2Q0MGRmZDc5ZmU4Njg3OTYyNzU4MDJmNjAxMTZkODRiOWU0Mzk1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgSmFuIDE2IDAxOjEzOjU4IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IE1vdmUgTEFXIGluaXQgY29kZSBpbnRvIEMKLQotICAgIE1vdmUgdGhlIGluaXRpYWxpemF0aW9uIG9mIHRoZSBMQVdzIGludG8gQyBjb2RlIGFuZCBwcm92aWRlIGFuIEFQSQotICAgIHRvIGFsbG93IG1vZGlmaWNhdGlvbiBvZiBMQVdzIGFmdGVyIGluaXQuCi0KLSAgICBCb2FyZCBjb2RlIGlzIHJlc3BvbnNpYmxlIHRvIHByb3ZpZGUgYSBsYXdfdGFibGUgYW5kIG51bV9sYXdfZW50cmllcy4KLQotICAgIFdlIHNob3VsZCBiZSBhYmxlIHRvIHVzZSB0aGUgc2FtZSBjb2RlIG9uIDg2eHggYXMgd2VsbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiZWQ4Y2U4MzhhNjA5YWFhYjEzNmQ0M2IyNWU2ZGYyYTUyMGJjODU0Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgRGVjIDIyIDE1OjAzOjEyIDIwMDcgKzAxMDAKLQotICAgIHFlbXUtbWlwczogYWN0aXZlIEhVU0ggUEFSU0VSLCBBVVRPX0NPTVBMRVRFIGFuZCBDTURMSU5FX0VESVRJTkcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwNzY0YzE2NGZlZDYyNzdkMzU5Y2YxMzJkNTUxODdlYTM0MjkwMTE0Ci1BdXRob3I6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgotRGF0ZToJV2VkIEphbiAxNiAxOToyNzo1MSAyMDA4ICswMjAwCi0KLSAgICBNSVBTOlRhcmdldCBzdXBwb3J0IGZvciBxZW11IC1NIG1pcHMKLQotICAgIFdpdGggc2VyaWFsLCBORTIwMDAsIElERSBzdXBwb3J0LiBUZXN0ZWQgaW4gYmlnLWVuZGlhbiBtb2RlLgotICAgIE1lbW9yeSBzaXplIGhhcmQtY29kZWQgdG8gMTI4TSBmb3Igbm93LCBzbyBkb24ndCBwbGF5IHdpdGgKLSAgICB0aGUgLW0gb3B0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Ci0KLWNvbW1pdCA3ZjUyZmEzYzJkZjU5ZTQ5ZGMyYmFkZDdjMDg0Y2YyZDAwN2M0MzhmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgSmFuIDExIDAwOjAxOjM3IDIwMDggKzAxMDAKLQotICAgIEZpeCBuZnMgY29tbWFuZCBoZWxwIHRvIHJlZmxlY3QgdGhhdCB0aGUgc2VydmVyaXAgaXMgb3B0aW9uYWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGI4ZjQxNjJhNGY3YTliZWU1ZTlkMDMwNWMxN2YyZDM0ZGU0NjZhOWIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CU1vbiBEZWMgMTAgMjI6MzI6MTQgMjAwNyArMDEwMAotCi0gICAgYmY1Mzctc3RhbXA6IHJlbW92ZSBhbHJlYWR5IGRlZmluZWQgaXNfemVyb19ldGhlcl9hZGRyIGFuZCBpc19tdWx0aWNhc3RfZXRoZXJfYWRkcgotCi0gICAgYW5kIG1vdmUgaXNfdmFsaWRfZXRoZXJfYWRkciBib2FyZCBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCBjMmY4OTZiOGZjNDcyMmUzNjkxNTkwM2UxOTQyZTEzOGU2OGNlODA0Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CVdlZCBKYW4gMTYgMTY6MTM6MzEgMjAwOCArMDkwMAotCi0gICAgZHJpdmVycy9uZXQvcnRsODEzOS5jOiByeF9zdGF0dXMgc2hvdWxkIGJlIGxlMzJfdG9fY3B1KHJ4X3N0YXR1cykuCi0KLSAgICByeF9zdGF0dXMgb24gdGhlIG1lbW9yeSBpcyBiYXNpY2FsbHkgaW4gTEUsIGJ1dCBuZWVkcyB0byBiZSBoYW5kbGVkIGluIENQVQotICAgIGVuZGlhbi4gbGUzMl90b19jcHUoKSB0YWtlcyB1cCB0aGlzIG1pc3Npb24uIEV2ZW4gaWYgb24gdGhlIHNhbmUgaGFyZHdhcmUsCi0gICAgaXQnbGwgd29yayBmaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotICAgIENjOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KLSAgICBDYzogTHVjYXMgSmluIDxsdWNhc2ppbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDk2YTIzNjc0NmZlNmE3Yjg0ODAyYWZiNGVkMzE1MzY2OTZkMzQ4MTIKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotRGF0ZToJV2VkIEphbiAxNiAxNjoxMjoyNiAyMDA4ICswOTAwCi0KLSAgICBkcml2ZXJzL25ldC9ydGw4MTM5LmM6IEZpeCBjYWNoZSBjb2hlcmVuY3kgaXNzdWVzCi0KLSAgICBDdXJyZW50IGRyaXZlciBpcyBtZWFudCBmb3IgY2FjaGUgY29oZXJlbnQgc3lzdGVtcy4gVGhpcyBwYXRjaCBhZGRzCi0gICAgZmx1c2hfY2FjaGUoKSByb3V0aW5lcyB0byBzdXBwb3J0IGNhY2hlIG5vbi1jb2hlcmVudCBzeXN0ZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotICAgIENjOiBNYXNhbWkgS29taXlhIDxta29taXlhQHNvbmFyZS5pdD4KLSAgICBDYzogTHVjYXMgSmluIDxsdWNhc2ppbkBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGQxMjc2Yzc2YzFlMmI1MDM1Mjk2Njg5MjgwYmExYWNiMmM0MjUxMDQKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotRGF0ZToJV2VkIEphbiAxNiAxNjoxMToxNCAyMDA4ICswOTAwCi0KLSAgICBkcml2ZXJzL25ldC9ydGw4MTM5LmM6IEZpeCB0eCB0aW1lb3V0Ci0KLSAgICAidG8gPSAoY3VycnRpY2tzKCkgKyBSVExfVElNRU9VVCkiIGhhcyBwb3NzaWJpbGl0aWVzIHRvIHdyYXAgYXJvdW5kLiBJZiBpdAotICAgIGRvZXMsIHRoZSBjb25kaXRpb24gIihjdXJydGlja3MoKSA8IHRvKSIgYmVjb21lcyBpbnZhbGlkIGFuZCBpbW1lZGlhdGVseQotICAgIGxlYWRzIHRvIHR4IHRpbWVvdXQgZXJyb3IuIFRoaXMgcGF0Y2ggaW50cm9kdWNlcyB0aGUgZmluZS1ncmFkZWQgdWRlbHkoMTApCi0gICAgbG9vcHMgdG8gZWFzZSB0aGUgaW1wYWN0IG9mIHdyYXBwaW5nIGFyb3VuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLSAgICBDYzogTWFzYW1pIEtvbWl5YSA8bWtvbWl5YUBzb25hcmUuaXQ+Ci0gICAgQ2M6IEx1Y2FzIEppbiA8bHVjYXNqaW5AZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCAxOGVlMzIwZmY2M2VkYmY3YjI3YmJlYjA1ZjBlMTJhNTIzMDJjNjhhCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKYW4gMTEgMTg6NDU6MjggMjAwOCArMDgwMAotCi0gICAgVFNFQzogQWRkIHRoZSBzdXBwb3J0IGZvciBSZWFsVGVrIFJUTDgyMTFCIFBIWQotCi0gICAgQWRkIHRoZSBzdXBwb3J0IG9mIFJlYWxUZWsgUlRMODIxMUIgUEhZLCB0aGUgUlRMODIxMUIKLSAgICBQSFkgb25seSBzdXBwb3J0cyBSR01JSSBhbmQgTUlJIG1vZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA4NGEzMDQ3YjcyYjcwZTg2MmIwYjdhOGUyMDU4MDc3NDU3Zjg5YTMyCi1BdXRob3I6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotRGF0ZToJV2VkIEphbiAxNiAwOTo0MDo0MSAyMDA4ICswMTAwCi0KLSAgICBSZW1vdmUgYW5ub3lpbmcgZGVidWcgcHJpbnRvdXQgZm9yIFBIWSBsZXNzIGJvYXJkcy4KLQotICAgIFBIWSBsZXNzIGJvYXJkIHByaW50cyBvdXQgbG90cyBvZiAicmVhZCB3cm9uZyAuLi4iOgotICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDIsIGJhc2UgZTAxMDIzMjAKLSAgICByZWFkIHdyb25nIHZhbHVlIDogbWlpX2lkIDMsbWlpX3JlZyAzLCBiYXNlIGUwMTAyMzIwCi0gICAgVUVDOiBQSFkgaXMgR2VuZXJpYyBNSUkgKGZmZmZmZmZmKQotICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDQsIGJhc2UgZTAxMDIzMjAKLSAgICByZWFkIHdyb25nIHZhbHVlIDogbWlpX2lkIDMsbWlpX3JlZyAwLCBiYXNlIGUwMTAyMzIwCi0gICAgcmVhZCB3cm9uZyB2YWx1ZSA6IG1paV9pZCAzLG1paV9yZWcgMSwgYmFzZSBlMDEwMjMyMAotICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKLSAgICByZWFkIHdyb25nIHZhbHVlIDogbWlpX2lkIDMsbWlpX3JlZyA1LCBiYXNlIGUwMTAyMzIwCi0gICAgcmVhZCB3cm9uZyB2YWx1ZSA6IG1paV9pZCAzLG1paV9yZWcgMSwgYmFzZSBlMDEwMjMyMAotICAgIHJlYWQgd3JvbmcgdmFsdWUgOiBtaWlfaWQgMyxtaWlfcmVnIDEsIGJhc2UgZTAxMDIzMjAKLSAgICByZWFkIHdyb25nIHZhbHVlIDogbWlpX2lkIDMsbWlpX3JlZyA1LCBiYXNlIGUwMTAyMzIwCi0gICAgRlNMIFVFQzA6IEZ1bGwgRHVwbGV4Ci0gICAgRlNMIFVFQzA6IFNwZWVkIDEwMEJUCi0gICAgRlNMIFVFQzA6IExpbmsgaXMgdXAKLSAgICBVc2luZyBGU0wgVUVDMCBkZXZpY2UKLQotICAgIE1ha2UgdGhpcyBwcmludG91dCBkZXBlbmQgb24gVUVDX1ZFUkJPU0VfREVCVUcgYW5kCi0gICAgcmVtb3ZlIGl0cyBkZWZpbml0aW9uIGluIHVlY19waHkuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGVlNjJlZDMyODZmODNiOThiNzc4NWUwMzE4ZGM2Mzc5ZTc4ZjdmZjYKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTUgMTQ6MTE6MDAgMjAwOCAtMDYwMAotCi0gICAgbmV0OiByZWR1Y2UgYm9vdCBsYXRlbmN5IG9uIFFFIFVFQyBiYXNlZCBib2FyZHMKLQotICAgIGFjdHVhbGx5IHBvbGxpbmcgZm9yIFBIWSBhdXRvbmVnb3RpYXRpb24gdG8gZmluaXNoIGVuYWJsZXMgdXMgdG8gcmVtb3ZlIHRoZQotICAgIDUgc2Vjb25kIGJvb3QgcHJvbXB0IGxhdGVuY3kgcHJlc2VudCBvbiBRRSBiYXNlZCBib2FyZHMuCi0KLSAgICBjYWxsIHRvIHFlX3NldF9taWlfY2xrX3NyYyBpbiBpbml0X3BoeSwgYW5kIG12IGNhbGwgdG8gaW5pdF9waHkgZnJvbQotICAgIHVlY19pbml0aWFsaXplIHRvIHVlY19pbml0IGJ5IEpvYWtpbSBUamVybmx1bmQ7IGF1dG9uZWdvdGlhdGlvbiB3YWl0Ci0gICAgY29kZSBzaGFtZWxlc3NseSBzdG9sZW4gZnJvbSB0c2VjIGRyaXZlci4KLQotICAgIGFsc28gcm0gdW51c2VkIENPTkZJR19STUlJX01PREUgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDU1ZmU3YzU3YThiOTlhMTMwOTI1MDUyZGNkYmI3N2YwNTNkYzUwZTMKLUF1dGhvcjogbWljaGFlbC5maXJ0aEBidC5jb20gPG1pY2hhZWwuZmlydGhAYnQuY29tPgotRGF0ZToJV2VkIEphbiAxNiAxMTo0MDo1MSAyMDA4ICswMDAwCi0KLSAgICBUU0VDIGRyaXZlcjogQ2hhbmdlIE1ESU8gc3VwcG9ydCB0byBhbGxvdyBhY2Nlc3MgdG8gYW55IFBIWXMgb24gdGhlIE1ESU8gYnVzCi0KLSAgICBUaGUgY3VycmVudCBUU0VDIGRyaXZlciBsaW1pdHMgTURJTyBhY2Nlc3MgdG8gdGhlIGRldmljZXMgdGhhdCBoYXZlIGJlZW4gY29uZmlndXJlZCBhcyBhdHRhY2hlZAotICAgIHRvIGEgVFNFQyBNQUMuIFRoaXMgcGF0Y2ggYWxsb3dzIGFjY2VzcyB0byBhbnkgUEhZIGRldmljZSBvbiB0aGUgTURJTyBidXMgdGhyb3VnaCB0aGUgJ21paScgY29tbWFuZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEZpcnRoIDxtaWNoYWVsLmZpcnRoQGJ0LmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1ZTkxOGE5OGMyNmU4YWI5YjVkMmQ0OGQ5OThhMmNlZDJiNWI4NWIzCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDE2IDAwOjM4OjA1IDIwMDggLTA2MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM3eEVSREIKLQotICAgIE1QQzgzN3hFUkRCIGJvYXJkIHN1cHBvcnQgaW5jbHVkZXM6Ci0gICAgKiBERFIyIDMzME1IeiBoYXJkY29kZWQgKHNvbGRlcmVkIG9uIHRoZSBib2FyZCkKLSAgICAqIExvY2FsIEJ1cyBOT1IgRmxhc2gKLSAgICAqIEkyQywgVUFSVCBhbmQgUlRDCi0gICAgKiBlVFNFQyBSR01JSSAoVFNFQzAgLSBSVEw4MjExQiB3aXRoIE1JSTsKLSAgICAqCSAgICAgICBUU0VDMSAtIFZTQzczODUgbG9jYWwgYnVzLCBoYXJkY29kZWQsIHJlcXVpcmVzIHNlcGVyYXRlIGZpcm13YXJlCi0gICAgKgkJICAgICAgIGxvYWQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLZXZpbiBMYW0gPGtldmluLmxhbUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBEJ0FiYnJhY2NpbyA8am9lLmQnYWJicmFjY2lvQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDllODk2NDc4ODljZDRiNWFkYTViNWU3Y2FkNmNiZTU1NzM3YTA4ZDcKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMTYgMTI6MDY6MTYgMjAwOCAtMDYwMAotCi0gICAgbXBjODN4eDogYWRkIHN1cHBvcnQgZm9yIG1vcmUgc3lzdGVtIGNsb2NrIHBlcmZvcm1hbmNlIGNvbnRyb2xzCi0KLSAgICBTeXN0ZW0gcmVnaXN0ZXJzIHRoYXQgYXJlIG1vZGlmaWVkIGFyZSB0aGUgQXJiaXRlciBDb25maWd1cmF0aW9uCi0gICAgUmVnaXN0ZXIgKEFDUiksIHRoZSBTeXN0ZW0gUHJpb3JpdHkgQ29udHJvbCBSZWdpc3RlciAoU1BDUiksIGFuZCB0aGUKLSAgICBTeXN0ZW0gQ2xvY2sgQ29uZmlndXJhdGlvbiBSZWdpc3RlciAoU0NDUikuCi0KLSAgICBTaWduZWQtb2ZmIGJ5OiBNaWNoYWVsIEYuIFJlaXNzIDxNaWNoYWVsLkYuUmVpc3NAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmIGJ5OiBKb2UgRCdBYmJyYWNjaW8gPGxqZDAxNUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxNmMzY2RlMDUwZTJkMjQzZTYyYjM3NDg2ZjE1NTg1NzA3ODdiZWI4Ci1BdXRob3I6IEphbWVzIFlhbmcgPGphbWVzLnlhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gMTYgMTE6NTg6MDggMjAwOCAtMDYwMAotCi0gICAgRlNMOiBHZW5lcmFsaXplIFBJWElTIHJlc2V0IGNvbW1hbmQgcGFyc2luZy4KLQotICAgIEJlZm9yZSwgdGhlIG9yZGVyIG9mIGFyZ3VtZW50cyB0byB0aGUgcGl4aXNfcmVzZXQKLSAgICBjb21tYW5kIG5lZWRlZCB0byBiZSBzdXBwbGllZCBpbiBhIGhhcmQtY29kZWQgb3JkZXIuCi0gICAgR2VuZXJhbGl6ZSB0aGUgY29tbWFuZCBwYXJzaW5nIHRvIGFsbG93IGFueSBvcmRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPGphbWVzLnlhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFkOGY4Njg3Yjc4YzNlOTE3YjE3M2YwMzg5MjY2OTUzODNjNTU1NTUKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTUgMTM6NDI6NDEgMjAwOCAtMDYwMAotCi0gICAgRlNMOiBDb252ZXJ0IGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vTWFrZWZpbGUgdG8gdXNlIENPTkZJR18KLQotICAgIENvbnZlcnQgdGhlIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vTWFrZWZpbGUgdG8gdXNlCi0gICAgQ09ORklHXyogb3B0aW9ucyB0byBzZWxlY3Qgd2hpY2ggZmlsZXMgdG8gY29uZGl0aW9uYWxseQotICAgIGNvbXBpbGUgaW50byB0aGUgYm9hcmQvZnJlZXNjYWxlL2NvbW1vbiBsaWJyYXJ5IHJhdGhlcgotICAgIHRoYW4gY29uZGl0aW9uYWxseSBjb21waWxpbmcgZW50aXJlIGZpbGVzLgotCi0gICAgTm93IGhhbmRsZXM6OgotCUNPTkZJR19GU0xfUElYSVMKLQlDT05GSUdfRlNMX0RJVV9GQgotCUNPTkZJR19QUV9NRFNfUElCCi0KLSAgICBDT05GSUdfSURfRUVQUk9NIGlzIGludHJvZHVjZWQgdW50aWwgQ0ZHX0lEX0VFUFJPTSBpcyBnb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdjMjIyMWViMjMwMzcyYTllNTM3YzRmNjYzNmIxNDdiMDkwOTMyNWYKLUF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAxNSAxNjozODozOCAyMDA4ICswODAwCi0KLSAgICBVc2UgQ09ORklHX1VMSTUyNlggYXMgTVBDODYxMEhQQ0QgZGVmYXVsdCBFdGhlcm5ldCBkcml2ZXIKLQotICAgIFVzZSBkcml2ZXIvbmV0L3VsaTUyNnguYyBhcyBNUEM4NjEwSFBDRCBkZWZhdWx0IEV0aGVybmV0IGRyaXZlci4KLSAgICBSZW1vdmUgdW51c2VkIGV0aGVybmV0IENPTkZJR18gb3B0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDcxMWE3OTQ2Mjc3ZDJlMjlhZjQ4MTAxMWU4NjM1ZTk5NzVjNTRlNDUKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTUgMTQ6MDU6MTQgMjAwOCAtMDYwMAotCi0gICAgbXBjODN4eDogZml4IFFFIEVUSFBSSU1FcyB0byBjb3JyZWN0ICdGU0wgVUVDMCcgdmFsdWUKLQotICAgIGNvbnRpbnVhdGlvbiBvZiBjb21taXQgYjk2YzgzZDRhZTQ3NWE3MGVmMjYzNWNkMGU3NDgxNzRjNDRjODYwMQotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDM2M2VlYTlmZjdmMTlhMmNiYTE3ZjI2MmJkMTc1NTlmMTY2ZTEzNGUKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTUgMDk6NTE6MTIgMjAwOCAtMDYwMAotCi0gICAgbXBjODN4eDogY2xlYW4gdXAgbXBjODM2MGVtZHMuYyB3YXJuaW5ncwotCi0gICAgbXBjODM2MGVtZHMuYzogSW4gZnVuY3Rpb24gJ2Z0X2JvYXJkX3NldHVwJzoKLSAgICBtcGM4MzYwZW1kcy5jOjMyNzogd2FybmluZzogYXNzaWdubWVudCBtYWtlcyBwb2ludGVyIGZyb20gaW50ZWdlciB3aXRob3V0IGEgY2FzdAotICAgIG1wYzgzNjBlbWRzLmM6MzI5OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2ZkdF9nZXRwcm9wJyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdAotICAgIG1wYzgzNjBlbWRzLmM6MzM0OiB3YXJuaW5nOiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ2ZkdF9zZXRwcm9wJyBtYWtlcyBpbnRlZ2VyIGZyb20gcG9pbnRlciB3aXRob3V0IGEgY2FzdAotICAgIG1wYzgzNjBlbWRzLmM6MzQxOiB3YXJuaW5nOiBhc3NpZ25tZW50IG1ha2VzIHBvaW50ZXIgZnJvbSBpbnRlZ2VyIHdpdGhvdXQgYSBjYXN0Ci0gICAgbXBjODM2MGVtZHMuYzozNDM6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiAnZmR0X2dldHByb3AnIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyIHdpdGhvdXQgYSBjYXN0Ci0gICAgbXBjODM2MGVtZHMuYzozNDg6IHdhcm5pbmc6IHBhc3NpbmcgYXJndW1lbnQgMiBvZiAnZmR0X3NldHByb3AnIG1ha2VzIGludGVnZXIgZnJvbSBwb2ludGVyIHdpdGhvdXQgYSBjYXN0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjA5ODgwZWE3MmExYzgwNmRiMjIzY2U1OTRjNWZiMWI2NTQyZmY2YQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiAxNCAxNjoxNDo0NiAyMDA4IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBmaXggcGh5LWNvbm5lY3Rpb24tdHlwZSBmaXh1cCBjb2RlCi0KLSAgICB1c2UgdHJlZSBwYXNzZWQgdG8gdXMgaW4gbG9jYWwgYmxvYiwgbm90IGdsb2JhbCBmZHQuCi0KLSAgICBBbHNvIHVzZSBmZHRfcGF0aF9vZmZzZXQgdG8gY29udmVydCB0byByZWxhdGl2ZSBvZmZzZXQsIHNpbmNlIGFic29sdXRlCi0gICAgcmVmZXJlbmNlIGlzIG5lZWRlZCB0byBjaGVjayBmb3IgcmdtaWktaWQgbW9kZSBzdHJpbmcgdmFsdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMmI0Yzk1MmJlN2M0MzU3YTEzZTgzOWQ0OGRmODA4NTM4MjBjMzNlYgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIEphbiAxNCAwOTowMTo0MCAyMDA4IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBmaXggbXBjODMxMy9tcGM4MzE1L21wYzgzNDlpdHggTWFrZWZpbGVzIGZvciBzaWxlbnQgYnVpbGQgKHdpdGggLXMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlMWQ4ZWQyYzA4ZGExNGIxNjg2NThjYzVmYTc4NTI5ZDQ2MWFlYTcwCi1BdXRob3I6IFBvb25hbSBBZ2dyd2FsIDxiMTA4MTJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKYW4gMTQgMDk6NDE6MTQgMjAwOCArMDUzMAotCi0gICAgQ2hhbmdlcyBpbiB1Ym9vdCBERFIgY29uZmlndXJhdGlvbiBmb3IgTVBDODMxM2VSREIKLQotICAgIFRoZXNlIGNoYW5nZXMgd2VyZSBpZGVudGlmaWVkIGJ5IEhpZ2hTbWl0aCBCaWxsICxNYXp6eWFyIGFuZCBKb3NlcGggZm9yCi0gICAgRERSIGNvbmZpZ3VyYXRpb24gaW4gdS1ib290IGNvZGUuIFNvbWUgYXJlIHJlbGF0ZWQgdG8gcGVyZm9ybWFuY2UsIHNvbWUKLSAgICBhZmZlY3Qgc3RhYmlsaXR5IGFuZCBzb21lIGNvcnJlY3QgZmV3IGJhc2ljIGVycm9ycyBpbiB0aGUgY3VycmVudAotICAgIGNvbmZpZ3VyYXRpb24uCi0KLSAgICBUaGUgY2hhbmdlcyBoYXZlIGJlZW4gdGVzdGVkIGFuZCBmb3VuZCB0byBnaXZlIGJldHRlciBtZW1vcnkgbGF0ZW5jeQotICAgIGZpZ3VyZXMgb24gTVBDODMxM2VSREIuTE1CZW5jaCBmaWd1cmVzIHByb3ZlIGl0LgotCi0gICAgVGhlIGNoYW5nZXMgYXJlOgotCi0gICAgLSBDUzBfQ09ORklHWyBBUF9uX0VOXSBpcyBjaGFuZ2VkIGZyb20gMSB0byAwCi0gICAgICAodGhpcyBtYXkgaW1wcm92ZSBwZXJmb3JtYW5jZSBmb3IgYXBwbGljYXRpb24gd2l0aCBtYW55IHJlYWQKLSAgICAgIG9yIHdyaXRlIHRvIG9wZW4gcGFnZXMpLgotICAgIC0gQ1MwX0NPTkZJR1tPRFRfV1JfQ0ZHXSBpcyBjdXJyZW50bHkgY2hhbmdlZCBmcm9tIDEwMCB0bwotICAgICAgMDAxIChhY3RpdmF0aW5nIGFsbCB0aGUgQ1Mgd2hlbiBvbmx5IG9uZSBpcyB1c2VkIG1heSBjYXVzZQotICAgICAgdW53YW50ZWQgbm9pc2Ugb24gdGhlIHN5c3RlbSkKLQotICAgIC0gVElNSU5HX0NGR18xW0FDVFRPUFJFXSBpcyBjaGFuZ2VkIGZyb20gOWNsa3MgdG8gOGNsa3MgKGJhc2VkIG9uCi0gICAgICBUcmFzPTQ1bnMpCi0gICAgLSBUSU1JTkdfQ0ZHXzFbUkVGUkVDXSBjaGFuZ2VkIGZyb20gMjEgY2xrcyB0byAxOGNsa3MuCi0KLSAgICAtIFRJTUlOR19DRkdfMltBTF0gdmFsdWUgY2hhbmdlZCBmcm9tIDAgc2V0dGluZyB0byAxIGNsayB0bwotICAgICAgY29tcGx5IHdpdGggdGhlIDMgT0RUIGNsayByZXF1aXJlbWVudHMpCi0gICAgLSBUSU1JTkdfQ0ZHXzJbQ1BPXSB3YXMgc2V0IHRvIGEgcmVzZXJ2ZWQgdmFsdWUsIGNoYW5nZWQgdG8gUkwrMy80LgotICAgIC0gVElNSU5HX0NGR18yW0ZPVVJfQUNUXSBpcyBjaGFuZ2VkIGZyb20gMTAgY2xrcyB0byA2Y2xrcy4KLQotICAgIC0gRERSX1NEUkFNX01PREVbQUxdY2hhbmdlZCBmcm9tIDAgdG8gMS4KLSAgICAtIEREUl9TRFJBTV9NT0RFW1dSUkVDXSBjaGFuZ2VkIGZyb20gMSBjbGsgdG8gMyBjbGtzLgotCi0gICAgLSBERFJfU0RSQU1fSU5URVJWQUxbUkVGSU5UXSBpcyBjaGFuZ2VkIGZyb20gMHgwMzIwIHRvIDB4MDUxMC4KLSAgICAtIEREUl9TRFJBTV9JTlRFUlZBTFtCU1RPUFJFXSBpcyBjaGFuZ2VkIGZyb20gMHg2NCB0byAweDA1MDAuCi0KLSAgICBUaGUgcGF0Y2ggaXMgYmFzZWQgb2YgZ2l0Oi8vd3d3LmRlbnguZGUvZ2l0L3UtYm9vdC1tcGM4M3h4LmdpdAotICAgIFRoZSBsYXN0IGNvbW1pdCBvbiB0aGlzIHRyZWUgd2FzIDY3NzVjNjg2ODNhNTNjN2FiYzc3ODc3NDY0MWFhYzZmODMzYTJjYmYKLQotICAgIFNpZ25lZC1vZmYtYnk6IFBvb25hbSBBZ2dyd2FsLWIxMDgxMiA8YjEwODEyQGZyZWVzY2FsZS5jb20+Ci0gICAgQ2M6IEJpbGwgSGlnaFNtaXRoIDxCaWxsLkhpZ2hzbWl0aEBmcmVlc2NhbGUuY29tPgotICAgIENjOiBSYXp6YXogTWF6eWFyIDxNUmF6emF6QGZyZWVzY2FsZS5jb20+Ci0gICAgQ2M6IEpvc2VwIFAgSiA8UEouSm9zZXBoQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI1Y2RkN2RmNGEwNmVkYjkxNTM5YzlhMmVhN2MxNzhhODcwYzNhOTUKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJU2F0IEphbiAxMiAxMzoyNDoxNCAyMDA4IC0wNTAwCi0KLSAgICBFbmFibGUgdGhlIGlzZHJhbSBjb21tYW5kIG9uIHRoZSBNUEM4MzYwRU1EUyBib2FyZAotCi0gICAgVGhlIGlzZHJhbSBjb21tYW5kIHByaW50cyBvdXQgZGVjb2RlZCBpbmZvcm1hdGlvbiB0aGUgInNlcmlhbCBwcmVzZW5jZQotICAgIGRldGVjdCIgKFNQRCkgY2hpcCBvbiB0aGUgU0RSQU0gU0lNTXMuICBUaGlzIGNhbiBiZSB2ZXJ5IGhlbHBmdWwgd2hlbgotICAgIGRlYnVnZ2luZyBtZW1vcnkgY29uZmlndXJhdGlvbiBwcm9ibGVtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhiZDUyMmNlNGFmZGEzZDQ4NjhlZThjOTEzZjUzOTQwOTQzMjZiZTEKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEphbiAxMSAxODo0ODoyNCAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiBBZGQgdGhlIHN1cHBvcnQgZm9yIE1QQzgzMTVFUkRCIGJvYXJkCi0KLSAgICBUaGUgZmVhdHVyZXMgbGlzdDoKLSAgICAtIEJvb3QgZnJvbSBOT1IgRmxhc2gKLSAgICAtIEREUjIgMjY2TUh6IGhhcmRjb2RlZCBjb25maWd1cmF0aW9uCi0gICAgLSBMb2NhbCBidXMgTk9SIEZsYXNoIFIvVyBvcGVyYXRpb24KLSAgICAtIEkyQywgVUFSVCwgTUlJIGFuZCBSVEMKLSAgICAtIGVUU0VDMC8xIHN1cHBvcnQKLSAgICAtIFBDSSBob3N0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiMDU4ODRlZmE2MTRlNGQ4YTk0MTMxNThmYzIyOGUwZGMwMmFiNzA0Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKYW4gMTEgMTg6NDY6NTAgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogQWRkIGNvbmZpZyBvZiBlVFNFQyBlbWVyZ2VuY3kgcHJpb3JpdHkgaW4gU1BDUgotCi0gICAgVGhlIFRTRUMgZW1lcmdlbmN5IHByaW9yaXR5IGRlZmluaXRpb24gb2YgODMxeC84Mzd4Ci0gICAgaXMgZGlmZmVyZW50IHRoYW4gdGhlIGRlZmluaXRpb24gb2YgODM0eCBpbiBTUENSIHJlZ2lzdGVyLgotCi0gICAgQWRkIHRoZSBvdGhlciBjb25maWcgb2YgVFNFQyBlbWVyZ2VuY3kgcHJpb3JpdHkgaW50bwotICAgIGNwdV9pbml0LmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDliOTU4MjM0YjA3ODNmMTNkOTJmMDA3Zjc1M2ZkMmMzYWUyYzg2ODAKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEphbiAxMSAxODo0MjoxOSAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiBSZW1vdmUgY2FjaGUgY29uZmlnIGZyb20gTVBDODM2MEVSREsuaAotCi0gICAgVGhlIE1QQzgzNjBFUkRLIGJvYXJkIHN1cHBvcnQgcGF0Y2ggaXMgYWRkZWQgYmVmb3JlCi0gICAgdGhlIGNvbW1pdCAyYzViNDhmYzIwNWMzZTI3NTI5MTBkYThmMzkyMDllZDA3NTkyOWU1Ci0gICAgc28sIG1pc3MgY2xlYW4gdXAgaXQuCi0KLSAgICBUaGUgcGF0Y2ggY2xlYW4gdXAgdGhlIG1pc3MgY2FjaGUgY29uZmlnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2Q5ZDIzMDUzZDQzNWMwOGZjODY5NTAxN2I1Y2I5MDAzZmNkYTc4NgotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBKYW4gMTQgMjM6MDk6MzIgMjAwOCArMDMwMAotCi0gICAgbmFuZDogRlNMIFVQTSBOQU5EIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCA2Y2IyMjM5YWU3NmZhZWU2NDQzNDI4NmM0ZjhmYzcxMzc0NzAyZGQyCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJVHVlIEphbiAxNSAwODo1OTo0NCAyMDA4ICswOTAwCi0KLSAgICBPbmVOQU5EOiBTZXBhcmF0ZSBVLUJvb3QgZGVwZW5kZW50IGNvZGUgZnJvbSBPbmVOQU5ECi0KLSAgICBPbmVOQU5EOiBTZXBhcmF0ZSBVLUJvb3QgZGVwZW5kZW50IGNvZGUgZnJvbSBPbmVOQU5ECi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgODNhNDljOGRkNzk5OGJlMmQxZjBkNDIwNTk3YTM2YmJmMGJmNDE2NAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVdlZCBKYW4gMTYgMTA6MzM6NDYgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBTZXF1b2lhIGNvZGluZyBzdHlsZSBjbGVhbnVwIGFuZCBiZWF1dGlmaWNhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA0YjNjYzZlY2U5YzQ1NTUwNGNmMTI5MDlmYWUzOGQwODVkODQ4YWMwCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotRGF0ZToJVHVlIEphbiAxNSAxNDozNTo1OCAyMDA4IC0wNTAwCi0KLSAgICBwcGM0eHg6IFJlZmFjdG9yIEVDQyBQT1NUIGZvciBBTUNDIERlbmFsaSBjb3JlCi0KLSAgICBUaGUgRUNDIFBPU1QgcmVwb3J0ZWQgaW50ZXJtaXR0ZW50IGZhaWx1cmVzIHJ1bm5pbmcgYWZ0ZXIgcG93ZXItdXAgb24KLSAgICB0aGUgS29yYXQgUFBDNDQwRVB4IGJvYXJkLglFdmVuIHdoZW4gdGhlIHRlc3QgcGFzc2VkLCB0aGUgZGVidWdnaW5nCi0gICAgb3V0cHV0IG9jY2FzaW9uYWxseSByZXBvcnRlZCBhZGRpdGlvbmFsIHVuZXhwZWN0ZWQgRUNDIGVycm9ycy4KLQotICAgIFRoaXMgcmVmYWN0b3JpbmcgaGFzIHRocmVlIG1haW4gb2JqZWN0aXZlczogKDEpIG1pbmltaXplIHRoZSBjb2RlCi0gICAgZXhlY3V0ZWQgd2l0aCBFQ0MgZW5hYmxlZCBkdXJpbmcgdGhlIHRlc3RzLCAoMikgYWRkIG1vcmUgY2hlY2tpbmcgb2YgdGhlCi0gICAgcmVzdWx0cyBzbyBhbnkgdW5leHBlY3RlZCBFQ0MgZXJyb3JzIHdvdWxkIGNhdXNlIHRoZSB0ZXN0IHRvIGZhaWwsIGFuZAotICAgICgzKSB1c2Ugc3luY2hyb25pemF0aW9uIChvbmx5KSB3aGVyZSByZXF1aXJlZCBieSB0aGUgcHJvY2Vzc29yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCAyNDY1NjY1YjczYWMyZjY4OGFmOTQ1YjFlZDUxMDc1MmFmYTgxNmE0Ci1BdXRob3I6IERhdmlkIFNhYWRhIDxEYXZpZC5TYWFkYUBlY2l0ZWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMTUgMTA6NDA6MjQgMjAwOCArMDIwMAotCi0gICAgUUUgVUVDOiBFeHRlbmQgbnVtYmVyIG9mIHN1cHBvcnRlZCBVRUNzIHRvIDQKLQotICAgIFRoaXMgcGF0Y2ggZXh0ZW5kcyB0aGUgbnVtYmVyIG9mIHN1cHBvcnRlZCBVRUNzIHRvIDQuIE5vdGUgdGhhdCB0aGUKLSAgICBwcm9ibGVtIG9mIFFFIHRocmVhZCByZXNvdXJjZXMgZXhoYXVzdGlvbiBpcyByZXNvbHZlZCBieSBzZXR0aW5nIHRoZQotICAgIGNvcnJlY3QgbnVtYmVyIG9mIFFFIHRocmVhZHMgYWNjb3JkaW5nIHRvIEV0aGVybmV0IHR5cGUgKEdCRSBvciBGRSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBTYWFkYSA8ZGF2aWQuc2FhZGFAZWNpdGVsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDU4ZDIwNDI1NmNiMWNlMWJkMzIzODQ3ZDlmNjQ0YWNmNzBhNzJlNmEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMTYgMDA6MDE6MDEgMjAwOCArMDEwMAotCi0gICAgTFdNT041OiBlbmFibGUgaHVzaCBzaGVsbCBhcyBjb21tYW5kIGxpbmUgcGFyc2VyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjZmZmIxODgzZmVlZGRkYzgxM2Q4YTUwN2QwNjBmMmE5NDBlYjJiMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEphbiAxNSAxNzoyMjoyOCAyMDA4ICswMTAwCi0KLSAgICBBRFM1MTIxOiBkaXNhYmxlIHdhdGNoZG9nOyBlbmFibGUgaW1hZ2UgdGltZXN0YW1wcwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDJiNGY3NzhmZTlkMWRlNjFkNzQ0NWJhZTdiMzI1MzQwYWJhNjk2OGQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gMTUgMTc6MjE6MjggMjAwOCArMDEwMAotCi0gICAgVEs4ODVEOiBmaXhlcyBmb3IgYmlnZ2VyIGZsYXNoIHNlY3RvciBzaXplcyBvbiBuZXcgbW9kdWxlczsKLSAgICBhZGp1c3QgZGVmYXVsdCBlbnZpcm9ubWVudDsKLSAgICBkaXNhYmxlIFNDQyBldGhlcm5ldCAobm90IHVzZWQgb24gdGhpcyBib2FyZCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZjkxZDdhZTVjYTg5YWNmOWZhMWVkMTAxNWRjMDc4Y2YyOTU4MTYwNwotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglUdWUgSmFuIDE1IDE3OjQ4OjEzIDIwMDggKzA5MDAKLQotICAgIHBjbWNpYTogUmVtb3ZlIENPTkZJR19DT01NQU5EUyBmcm9tIG1hcnVidW4gcGNtY2lhIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNzZlNDlhYTdmYjhlNzZjYzQ5MDkyYzFhY2Q1M2ZmZjkyMWUyNjM2MAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglUdWUgSmFuIDE1IDIzOjI1OjI1IDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBTSDc3MTAvU0g3NzEyCi0KLSAgICBTSDc3MTAvU0g3NzEyIG9mIFNIMyBDUFUgYXJlIHN1cHBvcnRlZC4KLSAgICBTSDc3MVggaXMgY2FsbGVkIFNILUV0aGVyLCBhbmQgaGFzIHRoZSBFdGhlciBjb250cm9sbGVyIGluIENQVS4KLSAgICBUaGUgZHJpdmVyIG9mIEV0aGVyIGlzIG5vdCBpbmNsdWRlZCBpbiB0aGlzIHBhdGNoLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNjNhMTFiZTY4MzA2ODcwZTA0ZDM4NTFlZDlmYTQxOTU1Y2RmNDg5NAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglUdWUgSmFuIDE1IDIzOjA2OjE3IDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBvZiBtYXBfcGh5c21lbSgpIGFuZCB1bm1hcF9waHlzbWVtKCkgdG8gU3VwZXJICi0KLSAgICBUaGlzIHBhdGNoIGFkZCB0aGUgc3VwcG9ydCBvZiBtYXBfcGh5c21lbSgpIGFuZCB1bm1hcF9waHlzbWVtKCkKLSAgICB1c2VkIHdpdGggQ29tbW9uIEZsYXNoIEludGVyZmFjZShDRkkpIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGRiMzk5NWZlNTE2NGFjNWQ2MzBiN2VjYjk2Mjg2YTk4MjhkZmJiNTQKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJV2VkIEphbiA5IDE0OjQyOjI3IDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgbWFpbnRhaW5lciBvZiBNUzc3MjBTRSB0byB0aGUgTUFJTlRBSU5FUiBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBkY2Q5OWU4OGUwM2Q1NmEwYWVlY2Q0MmI1MDdkMmQyOWQyMGFiMGUzCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVdlZCBKYW4gOSAxNDozOTo1OCAyMDA4ICswOTAwCi0KLSAgICBzaDogRml4IGJvYXJkIG5hbWUgaW4gTVM3NzIwU0UncyBjb25maWcubWsKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGMwYTA0ZDkzNzM0ZDc2OGIzOWRiYjcyZmI1MDFiNjU2MTRjODYxNWQKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJV2VkIEphbiA5IDE0OjM3OjM2IDIwMDggKzA5MDAKLQotICAgIHNoOiBBZGQgTVM3NzIwU0UgdG8gTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYjJiNWUyYmI3OGExZWY0YWU4NTA0ZjVhMjZiZmRjMzI5M2VhNzRhZQotQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglNb24gRGVjIDMgMjI6NTg6NTAgMjAwNyArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IGZvciBNUzc3MjBSUDAyIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci0gICAgQ0M6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLSAgICBBY2tlZC1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgN2MxMGM1NzI3NTkwMTkzOWE4ZWNlNGE5ZWYzZTdjY2I3YzEyYTBlZAotQXV0aG9yOiBZb3NoaWhpcm8gU2hpbW9kYSA8c2hpbW9kYS55b3NoaWhpcm9AcmVuZXNhcy5jb20+Ci1EYXRlOglXZWQgSmFuIDkgMTQ6MzA6MDIgMjAwOCArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IGZvciBTSDc3MjAgaW4gc2VyaWFsX3NoIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLSAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIEFja2VkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBmOTkxM2E4ZWU3MWZmMTRmY2ZjMWM3ZmQwZTY5MTJmODk3ZTY5NDAzCi1BdXRob3I6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLURhdGU6CU1vbiBEZWMgMyAyMjo1ODo0NSAyMDA3ICswOTAwCi0KLSAgICBzaDogQWRkIHN1cHBvcnQgU0gzIGFuZCBTSDc3MjAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFlvc2hpaGlybyBTaGltb2RhIDxzaGltb2RhLnlvc2hpaGlyb0ByZW5lc2FzLmNvbT4KLSAgICBDQzogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotICAgIEFja2VkLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA5YWRmYzlmYjlhZGU2NGNkZjFlZDlmZjg0MmU0ZjkwMGNiZGE3OGJkCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gMTUgMTA6MTE6MDIgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgY29tcGlsZXIgd2FybmluZyBpbiBjcHUvcHBjNHh4LzQ0eF9zcGRfZGRyMi5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxN2JlZjY4MDk3YWIzNjkyNTAwYTM2ZmIzMTExNWJmZjc5MTBhYTk5Ci1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+Ci1EYXRlOglNb24gSmFuIDE0IDE0OjA0OjQyIDIwMDggKzAxMDAKLQotICAgIHBwY180eHg6IEZpeCBwb3N0IHNwci5jIGZvciBQUEM0MDUKLQotICAgIHBvc3QvY3B1L3BwYzR4eC9zcHIuYyBjb250YWluZWQgYSBmZXcgY2hlY2tzIGZvciByZWdpc3RlcnMgb25seSBwcmVzZW50Ci0gICAgZm9yIFBQQzQ0MCBhbmQgZGVyaXZhdGVzIHByb2Nlc3Nvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCAwNmM0MjhiY2Q0NDEzMDE0YjQzMjM2ZTc3NzY1MDIyMDcxNDI0ZmE2Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKYW4gMTQgMTE6MTI6MDEgMjAwOCArMDgwMAotCi0gICAgUUU6IGZpeCBjb21waWxlIHdhcm5pbmcKLQotICAgIHFlLmM6IEluIGZ1bmN0aW9uICdxZV91cGxvYWRfZmlybXdhcmUnOgotICAgIHFlLmM6MzkwOiB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gcGFzc2luZyBhcmd1bWVudCAyCi0gICAgdWVjLmM6IEluIGZ1bmN0aW9uICd1ZWNfaW5pdGlhbGl6ZSc6Ci0gICAgdWVjLmM6MTIzNjogd2FybmluZzogJ3VlY19pbmZvJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTBkZDk5ZDUxZWZhNTVmZTAyM2UxOWM5N2VhZDkyNjgzNzI1ZWIxMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSmFuIDE0IDEwOjA1OjA1IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEtpbGF1ZWEgQ1BMRCBjb25maWd1cmF0aW9uIHdpdGggVVNCIFBIWSByZXNldCBiaXQKLQotICAgIE5vdyB0aGF0IGJpdCAyOSBpcyB0aGUgVVNCIFBIWSByZXNldCBiaXQsIHVwZGF0ZSB0aGUgS2lsYXVlYSBwb3J0Ci0gICAgdG8gcmVtb3ZlIHRoZSBVU0IgUEhZIHJlc2V0IGFmdGVyIHBvd2VydXAuIFRoZSBDUExEIHdpbGwga2VlcCB0aGUKLSAgICBVU0IgUEhZIGluIHJlc2V0IChhY3RpdmUgbG93KSB1bnRpbCB0aGUgYml0IGlzIHNldCB0byAxIGluCi0gICAgYm9hcmRfZWFybHlfaW5pdF9mKCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmNDNhZDUzOTA4ZjFlYTgzYTdjMjZjMzUwNWJiZTg0MzgyZTQ3YWFkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSmFuIDEzIDIzOjI2OjQ1IDIwMDggKzAxMDAKLQotICAgIEFSTTogdXBkYXRlIG1hY2gtdHlwZXMuaCBmcm9tIDIuNi4yNC1yYzcgTGludXgga2VybmVsIHRyZWUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA4ZDEwMzA3MWI3YjBlM2VjODg4ODU5YmZjYjlkNDIyNTY1ZTZkNzUwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSmFuIDEzIDIzOjM3OjUwIDIwMDggKzAxMDAKLQotICAgIEFEUzUxMjE6IEZpeCB0eXBvIGluIGFkczUxMjEuYywgYWRqdXN0IGRlZmF1bHQgZW52aXJvbm1lbnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1MWI2N2QwNmZhYTY3MGM2NWRlNmYyOWVjNWI1YWFjZTc0YjJhMDQ3Ci1BdXRob3I6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAyNCAxODoxODo0MyAyMDA3IC0wNjAwCi0KLSAgICBBRFM1MTIxOiBNQVggc2xldyByYXRlIGZvciBQQVRBIHBpbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gUmlnYnkgPGpyaWdieUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGQ1MzFhYWMzNGFhYWQxMzhmMTZjYWNkYjUxZDYxOTA4ZDU5YzBlMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEphbiAxMyAyMTowNTo1MiAyMDA4ICswMTAwCi0KLSAgICBGaXggTWFrZWZpbGUgZGVwZW5kZW5jeSBwcm9ibGVtIHdpdGggcGFyYWxsZWwgYnVpbGRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDg5OTY3ODQxZTNlYTAyZTNkMGU1ZTEyOTVhYjY4NzU3NmU1YjEwODkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKYW4gMTMgMTk6NTE6MzkgMjAwOCArMDEwMAotCi0gICAgTVBDODU0NERTOiBmaXggYm9hcmQgTWFrZWZpbGUgZm9yIHNpbGVudCBidWlsZCAod2l0aCAtcykKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZDcxNGY4MmZiNGI4YmI3ZTI2N2U5YzcxYjgwMDliYzY3MGJmZTg4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gSmFuIDEzIDE2OjQ0OjA4IDIwMDggKzAxMDAKLQotICAgIFBNQzQ0MCBib2FyZDogZml4IGJvYXJkIE1ha2VmaWxlIGZvciBvdXQtb2YtdHJlZSBidWlsZGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZlYjNmYjE1NTg4ZDMxOWJkMzA5OWQ1ZjliOTEwMDUxZGZlYWI2YjIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKYW4gMTMgMTY6MDc6NDQgMjAwOCArMDEwMAotCi0gICAgTWFrYWx1OiBmaXggY29tcGlsZSB3YXJuaW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMGExZTAzYmNhZGM3NzM0Njg4YTIxZThkZDJlNDZhNGY2MDgxOTNjMAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIEphbiAxMyAxMjozNjoxMiAyMDA4ICswMTAwCi0KLSAgICBjbWRfbmFuZCA6IGZpeCBjb21waWxlciB3YXJuaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDgyMjVkMWUzYWMwYWIxNDdjZGRlNGIwMDQyODEyNTgzMzgwYWZiOGEKLUF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPHJpbmNld2luZEBkaXNjd29ybGQuZGFzY29uLmRlPgotRGF0ZToJU2F0IEphbiAxMiAyMDoyOTo0NyAyMDA4ICswMTAwCi0KLSAgICBDRkk6IEZpeCBDT05GSUdfRkxBU0hfQ0ZJX0xFR0FDWSBjb21waWxhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmIyZjQzZWQ2YTMwZWNlNzdmNzYxOTFjODQ1YWM5NTI2N2RhYTMxYQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEphbiAxMyAwMjoxOTo0NCAyMDA4ICswMTAwCi0KLSAgICBNUEM4MzYwRVJESzogZml4IGluY29ycmVjdCBpbml0aWFsaXphdGlvbiBvZiBDRkdfSTJDX05PUFJPQkVTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMDhlOTllMWRkMDFhM2UwZTNkYzNhNzEzOGViODI3Yzk5N2UyYjc0ZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEphbiAxMyAwMjoxOToxMyAyMDA4ICswMTAwCi0KLSAgICBNUEM4eHggRkVDIGRyaXZlcjogZml4IGNvbXBpbGVyIHdhcm5pbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYWU2ZDEwNTZkMmMyZTRkMTI2NjQxM2MwYWU4YTZkNTUyOWVjZGU0YgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEphbiAxMyAwMDo1OToyMSAyMDA4ICswMTAwCi0KLSAgICBGaXggTWFrZWZpbGUgZGVwZW5kZW5jaWVzIGlzc3VlczsgYWxsb3cgc2lsZW50IGJ1aWxkCi0KLSAgICAtIGdldCByaWQgb2YgInZlcnNpb24iIHRhcmdldCB3aGljaGRpZG4ndCByZWFsbHkgd29yawotICAgIC0gbWFrZSBhdXRvY29uZi5tayBkZXBlbmQgb24gdmVyc2lvbl9hdXRvZ2VuZXJhdGVkLmggdG8gbWFrZSBzdXJlCi0gICAgICB0byByZWJ1aWxkIGZpbGVzIGFzIG5lZWRlZAotICAgIC0gYWRkIFhFQ0hPIG1hY3JvIHRvIGFsbG93IGZvciBzaWxlbnQgYnVpbGQgdXNpbmcgIm1ha2UgLXMiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTM0M2FiODNkNTEzNWI1NThhYTU4ZGI5YmU4ZmM3ZmFhNjhkNzdlZAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEphbiAxMyAwMDo1NTo0NyAyMDA4ICswMTAwCi0KLSAgICBBRFM1MTIxZTogZml4IGNvbXBpbGUgd2FybmluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGYyYjZmNDYxMDYyN2ZlM2Q2MDc2MjBlMjUwODI5MTZhMDE1Mzg4NzUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBKYW4gMTMgMDA6NTU6MTggMjAwOCArMDEwMAotCi0gICAgTVVOSUNlczogZml4IGJvYXJkIE1ha2VmaWxlIGZvciByZW1vdGUgYnVpbGQgZGlyZWN0b3J5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMmFkNGQzOTk5ZmU4MDFhYTcxNjIyMWQ3ZDlhNGM1YmRhZDc0NzgzYQotQXV0aG9yOiBPbGl2ZXIgV2ViZXIgPGFsbW9lbGlAZ214LmRlPgotRGF0ZToJV2VkIEphbiA5IDE3OjA0OjM4IDIwMDggKzAxMDAKLQotICAgIE1QQzUyMDA6IGRvbid0IHVzZSBoYXJkY29kZWQgTUJBUiBhZGRyZXNzIGluIEJlc3Rjb21tIGZpcm13YXJlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBPbGl2ZXIgV2ViZXIgPGFsbW9lbGlAZ214LmRlPgotCi1jb21taXQgMDBhYzUwZTM0OGQxYmFjZTI3YTE3NGI3ZjUyOGQxMTNiYzdjZGY3ZgotQXV0aG9yOiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KLURhdGU6CVdlZCBKYW4gOSAxNzoxMDo1NiAyMDA4ICswMTAwCi0KLSAgICBNYWtlIGJvb3RyZXRyeSB3b3JrIHdoZW4gY29tbWFuZCBsaW5lIGVkaXRpbmcgaXMgZW5hYmxlZAotCi0gICAgQ3VycmVudGx5LCB3aGVuIENPTkZJR19DTURMSU5FX0VESVRJTkcgaXMgc2V0LCBib290cmV0cnkgZG9lc24ndCB3b3JrLgotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIEVuZ2VsIDxhbmRyZWFzLmVuZ2VsQGVyaWNzc29uLmNvbT4KLQotY29tbWl0IDYzMmRlMDY3MmQzYzNhYjUzYWQ3OThjNDdmNWYxZWIyNjAwOGEwZTQKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci1EYXRlOglGcmkgSmFuIDExIDIzOjI2OjE4IDIwMDggLTA1MDAKLQotICAgIFJlZmFjdG9yIGNvZGUgZm9yICJpMmMgc2RyYW0iIGNvbW1hbmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgMGRmNmI4NDQ2YzQ3MjFiOTFjZTMxMTU0ODExNDg5MTEzMDM3MTA4MwotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CVRodSBKYW4gMTAgMjI6MjM6MzkgMjAwOCAtMDUwMAotCi0gICAgRml4ICJpMmMgc2RyYW0iIGNvbW1hbmQgZm9yIEREUjIgRElNTXMKLQotICAgIE1hbnkgb2YgdGhlIFNQRCBieXRlcyBmb3IgRERSMiBTRFJBTSBhcmUgbm90IGludGVycHJldGVkIGNvcnJlY3RseSBieSB0aGUKLSAgICAiaTJjIHNkcmFtIiBjb21tYW5kLiAgVGhpcyBwYXRjaCBwcm92aWRlcyBjb3JyZWN0IGFsdGVybmF0aXZlCi0gICAgaW50ZXJwcmV0YXRpb25zIHdoZW4gRERSMiBtZW1vcnkgaXMgZGV0ZWN0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IDY0MTM0ZjAxMTI1NDEyMzYxODc5OGZmNzdjNDJiYTE5NmIyZWM0ODUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKYW4gMTIgMjA6MzE6MzkgMjAwOCArMDEwMAotCi0gICAgRml4IGxpbmtlciBzY3JpcHRzOiBhZGQgTk9MT0FEIGF0cmlidXRlIHRvIC5ic3MvLnNic3Mgc2VjdGlvbnMKLQotICAgIFdpdGggcmVjZW50IHRvb2xjaGFpbiB2ZXJzaW9ucywgc29tZSBib2FyZHMgd291bGQgbm90IGJ1aWxkIGJlY2F1c2UKLSAgICBvciBlcnJvcnMgbGlrZSB0aGlzIG9uZSAoaGVyZSBmb3Igb2NvdGVhIGJvYXJkIHdoZW4gYnVpbGRpbmcgd2l0aAotICAgIEVMREsgNC4yIGJldGEpOgotICAgIHBwY180eHgtbGQ6IHNlY3Rpb24gLmJvb3RwZyBbZmZmZmYwMDAgLT4gZmZmZmYyM2JdIG92ZXJsYXBzIHNlY3Rpb24gLmJzcyBbZmZmZWU5MDAgLT4gZmZmZmY4YWJdCi0KLSAgICBGb3IgbWFueSBib2FyZHMsIHRoZSAuYnNzIHNlY3Rpb24gaXMgYmlnIGVub3VnaCB0aGF0IGl0IHdyYXBzIGFyb3VuZAotICAgIGF0IHRoZSBlbmQgb2YgdGhlIGFkZHJlc3Mgc3BhY2UgKDB4RkZGRkZGRkYpLCBzbyB0aGUgcHJvYmxlbSB3aWxsIG5vdAotICAgIGJlIHZpc2libGUgdW5sZXNzIHlvdSB1c2UgYSA2NCBiaXQgdG9vbCBjaGFpbiBmb3IgZGV2ZWxvcG1lbnQuIE9uCi0gICAgc29tZSBib2FyZHMgaG93ZXZlciwgY2hhbmdlcyB0byB0aGUgY29kZSBzaXplIChkdWUgdG8gZGlmZmVyZW50Ci0gICAgb3B0aW1pemF0aW9ucykgd2UgYmFpbCBvdXQgd2l0aCBzZWN0aW9uIG92ZXJsYXBzIGxpa2UgYWJvdmUuCi0KLSAgICBUaGUgZml4IGlzIHRvIGFkZCB0aGUgTk9MT0FEIGF0dHJpYnV0ZSB0byB0aGUgLmJzcyBhbmQgLnNic3MKLSAgICBzZWN0aW9ucywgdGVsbGluZyB0aGUgbGlua2VyIHRoYXQgLmJzcyBkb2VzIG5vdCBjb25zdW1lIGFueSBzcGFjZSBpbgotICAgIHRoZSBpbWFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzYWZhYzc5ZWMyN2I5MWRmMTg1ZjA5MGIzMWRhZDk2MjA3NzlmNDQwCi1BdXRob3I6IFRzaUNodW5nIExpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSmFuIDExIDIwOjQyOjU4IDIwMDggLTA2MDAKLQotICAgIFVTQjogQWRkIFBoaWxpcHMgMTU2MSBQQ0ktT0hDSSBpZHMKLSAgICAobmVlZGVkIGZvciBNNTQ3NUVWQikKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVlOGRlZjY3MzFjZDdiZWM3NGJmZjQyYTE2YjEzOWRlMDQwMTAzNTMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKYW4gMTIgMTU6NTE6MzQgMjAwOCArMDEwMAotCi0gICAgQWRkIE1BSU5UQUlORVJTIGVudHJpZXMgZm9yIGlkczgyNDcsIGp1cGl0ZXIsIG11bmljc2UsIHNjMyBhbmQgdWMxMDEKLSAgICBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNWQ0OWUwZTE1MmE4YjgxY2MwNjAyMjcxZThmZDI1OTM3MWY1NTliNwotQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBKYW4gMTEgMTI6MDM6NDMgMjAwOCArMDEwMAotCi0gICAgTVBDNTEyWDogQ2xlYW51cCBidXMgY2xvY2sgbmFtZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDY2YTk0NTViNmJmNDZkNjljZWM1Yzg4ZDFhNjAwZDFkOWExMDY3MGQKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgSmFuIDggMTc6MTY6NTkgMjAwOCArMDEwMAotCi0gICAgTVBDNTEyWDogRml4ZWQgdHlwbyBpbiBtYWNybyBuYW1lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAyODFmZjlhNDVjZjllYjE3YjhhOWFmYzQzNmNiNzgzY2YxZjYyMzYzCi1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiA4IDE3OjE2OjE1IDIwMDggKzAxMDAKLQotICAgIGFkczUxMjE6IEFkZGVkIHN1cHBvcnQgZm9yIEZEVC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYTEwZmY5MTk2MTgzZTdlNWYyYWUzYzRmNWYzY2JlOTJhZTljYjcxOQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEphbiAxMiAwMTowNTo1MCAyMDA4ICswMTAwCi0KLSAgICBDb2RpbmcgU3R5bGUgY2xlYW51cDsgdXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmNmRiOTQ1NjQ5ZTVlOWQwYzdlZmUzM2I1MDdkMjQzY2RjODZjZjAzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIEphbiAxMSAxNToxNToxNyAyMDA4ICswMTAwCi0KLSAgICBGaXhlZCBzeW50YXggZXJyb3IgaW4gZnVuY3Rpb24gaW5pdF9lMzAwX2NvcmUoKSBvZiBtcGM4M3h4L3N0YXJ0LlMgaWYKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBmYTA1NjY0Y2Q4YzdhYjFlY2YwNjJhYTczYjk5MmI3YjU4YmJhNDljCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIEphbiAxMSAxNToxNToxNiAyMDA4ICswMTAwCi0KLSAgICBNVU5JQ2VzOiBTZXQgdGhlIHJpZ2h0IENGR19ERUZBVUxUX01CQVIgdmFsdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDVmYjJiMjM0MmVjZThkNzg2YzZmN2ZkYmExYmMyNzNmZWJkM2IzZDIKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDExIDE1OjE1OjE1IDIwMDggKzAxMDAKLQotICAgIGFkZGVkIHRoZSBjb25maWcgRmlsZSBmb3IgdGhlIE1VTklDZXMgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDYzNDFkOWQ3MjNiNzFiNGMwYmY4NmY5NzllNGNiMjI4YzAyZmQwOWQKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDExIDE1OjE1OjE0IDIwMDggKzAxMDAKLQotICAgIGFkZGVkIGJhc2ljIHN1cHBvcnQgZm9yIHRoZSBNVU5JQ2VzIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAzYmI3N2ZiMDlhMWNhYWJmNWEyOTJjYzViNDg2YTc4Yjk3N2ZiZTE5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgSmFuIDEyIDAwOjM5OjM3IDIwMDggKzAxMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cgYW5kIE1BSU5UQUlORVJTIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDViYTczOTBjM2NiNTc5MTcyYmU2Njg4OGEzNzE3MDdiNDdiNWJlNGUKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJRnJpIEphbiAxMSAwMjoxNTowMiAyMDA4ICswMTAwCi0KLSAgICBGaXggY29tcGlsYXRpb24gcHJvYmxlbSBpbiBjb21tb24vY21kX2JtcC5jCi0KLSAgICBjb21tb24vY21kX2JtcC5jIGZhaWxzIHRvIGNvbXBpbGUgaWYgQ09ORklHX1ZJREVPX0JNUF9HWklQCi0gICAgaXNuJ3QgZGVmaW5lZC4gVGhpcyBwYXRjaCBmaXggdGhpcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLQotY29tbWl0IDVhYTQzN2JhYWU1ZmU2MjlhYmVhYjk5YmVmNzkzYTJhMWZjNzFiNTgKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDExIDAxOjEyOjA5IDIwMDggKzAxMDAKLQotICAgIEZpeCBkZWZhdWx0Y29uZmlnIGZvciB0aGUgbWdjb2dlIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBhYzlkYjA2NmIyNjkzNWYzMWJmZjE1Yzk4MTY4YjE5ZmFlYjYwM2YzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotRGF0ZToJRnJpIEphbiAxMSAwMToxMjowOCAyMDA4ICswMTAwCi0KLSAgICBBZGRlZCBzdXBwb3J0IGZvciB0aGUgbWdjb2dlIGJvYXJkIGZyb20ga2V5bWlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgYjQyM2QwNTVjYzJlMTNjNGVmMWYwMzg5YzNmYTI5ODhkMGVlZDgxOAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gMTEgMDE6MTI6MDcgMjAwOCArMDEwMAotCi0gICAgRW5hYmxlIFNNQyBtaWNyb2NvZGUgcmVsb2NhdGlvbiBwYXRjaCBmb3IgU01DMS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMzgxZTRlNjM5NzIwZDhkMmVmYjgwNjZjN2M0OGVjOTU4OGNiMjhjNwotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gMTEgMDE6MTI6MDYgMjAwOCArMDEwMAotCi0gICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIG1nc3V2ZCBib2FyZCBmcm9tIGtleW1pbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGJmMDUyOTM5NzNiMzQ4ZjY5NDZjOWRmOTJjZDNjNjVlY2U0MmQwYmUKLUF1dGhvcjogSmFtZXMgWWFuZyA8amFtZXMueWFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEphbiAxMCAxNjowMjowNyAyMDA4IC0wNjAwCi0KLSAgICBGaXggNjQtYml0IHZzcHJpbnRmLgotCi0gICAgVGhlcmUgd2VyZSBzb21lIHNpemUgYW5kIHVuc2lnbmVkIHByb2JsZW1zLgotICAgIEFsc28gYWRkIHN1cHBvcnQgZm9yICJsbCIgc2l6ZSBtb2RpZmllciBpbiBmb3JtYXQgc3RyaW5nIGxpa2UgZ2xpYmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkyZmEzN2VhYzUzMDg2MDY0M2FmYTI2YWUzNDdhZjNkMjNkNjczMDkKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci1EYXRlOglXZWQgSmFuIDkgMTI6NDI6MzUgMjAwOCAtMDUwMAotCi0gICAgUmVtb3ZlIHN1cGVyZmx1b3VzIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMgZnJvbSBMTTczIGRyaXZlcgotCi0gICAgKDEpIFJlbW92ZSB1bnVzZWQgc3ltYm9sICJDRkdfRUVQUk9NX1BBR0VfV1JJVEVfRU5BQkxFIi4KLQotICAgICgyKSBVc2UgY29uZGl0aW9uYWwgTWFrZWZpbGUuby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgZWZjNmY0NDdjMWI5NDBkMTY1MGM0Yjg1NGM1NTk4YTU5NWRkYzNkYQotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDEwIDE3OjU5OjA3IDIwMDggKzAxMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgVEs4ODVEIGJhc2Vib2FyZCBmcm9tIFRFTEUtREFUQQotCi0gICAgVGhlIFRLODg1RCBib2FyZCB1c2VzIGEgVFFNODg1RCBtb2R1bGUgZnJvbSBUUSwgdGhpcyBwb3J0IGFkZHMgYW4KLSAgICBvd24gY29uZmlndXJhdGlvbiBmaWxlIGFuZCBhZGRzIGEgbGFzdF9zdGFnZV9pbml0KCkgbWV0aG9kIHRvCi0gICAgY29uZmlndXJlIHRoZSB0d28gUEhZcywgZGVwZW5kaW5nIG9uIHRoZSBwaHlfYXV0b19uZWdvIGVudmlyb25tZW50Ci0gICAgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCAwZWM1OTUyNDNkYzk5ZWRjZDI0OGJiY2ZiZmQ1YTFkYzg2MGJkZTg5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgSmFuIDEwIDAyOjIyOjA1IDIwMDggLTA2MDAKLQotICAgIEZpeCBjb21waWxlciB3YXJuaW5nCi0KLSAgICBtYWluLmM6IEluIGZ1bmN0aW9uICdyZWFkbGluZV9pbnRvX2J1ZmZlcic6Ci0gICAgbWFpbi5jOjkyNzogd2FybmluZzogdW51c2VkIHZhcmlhYmxlICdwX2J1ZicKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBiZWQ1Mzc1M2RkMWQ3ZTZiY2JlYTQzMzliZTBmYjc3NjAyMTRjYzM1Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gMTEgMTQ6MzA6MDEgMjAwOCArMDEwMAotCi0gICAgQWRkIEZ1aml0c3UgQ29yYWxQL0xpbWUgdmlkZW8gZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Ci0KLWNvbW1pdCAyMGM0NTBlZjYxZWYyZWIxYzk2ZjliNTliYTBlYjhkODQ5YmJhMDU4Ci1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gMTEgMDI6Mzk6NDcgMjAwOCArMDEwMAotCi0gICAgRml4IHZpZGVvIGNvbnNvbGUgbmV3bGluZSBhbmQgY2FycmlhZ2UgcmV0dXJuIGhhbmRsaW5nCi0KLSAgICBMaW5lcyBvZiB0aGUgbGVuZ2h0IENPTlNPTEVfQ09MUyBvciBncmVhdGVyIHRoYW4gQ09OU09MRV9DT0xTCi0gICAgYXJlIG5vdCBkaXNwbGF5ZWQgY29ycmVjdGx5LiBUaGlzIGlzIGFuIGF0dGVtcHQgdG8gZml4Ci0gICAgdGhpcyBpc3N1ZS4gQWxzbyBhZGQgY2FycmlhZ2UgcmV0dXJuIGhhbmRsaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgotCi1jb21taXQgZDVhMTYzZDZiYWEwNGY1YThlZGNjMTBlYmM2ZmFkMDg2NTdkMzA5MwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDExIDE1OjUzOjU4IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogRml4IHNkcmFtIGluaXQgb24gU2VxdW9pYSBib2FyZHMKLQotICAgIENsZWFyIHBvc3NpYmxlIGVycm9ycyBpbiBNQ1NSIHJlc3VsdGluZyBmcm9tIGRhdGEtZXllLXNlYXJjaC4KLSAgICBJZiBub3QgZG9uZSwgdGhlbiB3ZSBjb3VsZCBnZXQgYW4gaW50ZXJydXB0IGxhdGVyIG9uIHdoZW4KLSAgICBleGNlcHRpb25zIGFyZSBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDYxMGE2MDczMGI3NDY0ZjZmNjU5ZGI0OWQyNjRkODlhN2M3MTA2MQotQXV0aG9yOiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDExIDE1OjMxOjA5IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogUmV3b3JrIExpbWUgc3VwcG9ydCBmb3IgbHdtb241Ci0KLSAgICBSZXdvcmsgTGltZSBzdXBwb3J0IGZvciBsd21vbjUgdXNpbmcgbmV3IHZpZGVvIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotCi1jb21taXQgZmY0MWZmYzkzYzE1OTJlNzdhNDRiZGJlYmQ1ZDc4MTczOWYzYWFlMAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBKYW4gMTEgMTQ6NTU6MTYgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgUE1DNDQwIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGUzZWRjYjM2ZjE0ZjBhYWJiNmY1MGU5NjAxNGQ2ODc3ZjczZDY0ZWEKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgSmFuIDExIDE0OjU1OjA4IDIwMDggKzAxMDAKLQotICAgIHBweDR4eDogRml4IHNkcmFtIGluaXQgb24gUE1DNDQwIGJvYXJkcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCAwNjFhYWQ0ZDMyMGRkZGNlMjYyNDc2OTlkY2YyODc1ZWUyZWExMzY2Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gMTAgMjM6MDk6MzMgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogRml4IHRoZSBidWcgb2YgMjY2TUh6IGRhdGEgcmF0ZSBERFIKLQotICAgIFRoZSBERFIgZG9lc24ndCB3b3JrIG9uIHRoZSAyNjZNSHogZGF0YSByYXRlLAotICAgIHRoZSBwYXRjaCBmaXggdGhlIGJ1Zy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRlZDA4MzE3YWQ5ZTM0MGI4ODdiZjJlYjQ2ZTk1NjVhMGY2MTBhOTMKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEphbiAxMCAyMzowODoyNiAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiBNYWtlIHRoZSBjb2RlIG1vcmUgcmVhZGFibGUKLQotICAgIEZvcm1hdCB0aGUgY29kZSwgbWFrZSBpdCBtb3JlIHJlYWRhYmxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3ZTc0ZDYzZDFhMjExZmJjMzRlYzQyNGUyZGM2NzI2NjAxZjMyM2QwCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gMTAgMjM6MDc6MjMgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogUmVkdWNlIHRoZSBsYXRlbmN5IG9mIEREUgotCi0gICAgUmVkdWNlIHRoZSBBTCBmcm9tIDIgdG8gMSBjbG9jayB0byBpbXByb3ZlIHRoZSBwZXJmb3JtYW5jZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZmMzkzMWEyYmVkNTQxMmMyMGQ1ZTU1MzZjODY1ZmJkNjU3ZjdkMjgKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEphbiAxMCAyMzowNjowNSAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiBGaXggdGhlIHdyb25nIGRlZmluaXRpb24gb2YgTVBDODMxNUUKLQotICAgIEFjY29yZGluZyB0byB0aGUgbGF0ZXN0IHVzZXIgbWFudWFsIG9mIE1QQzgzMTVFLAotICAgIDEpIFRoZSBTVkNPRCBvZiBIUkNXTCBpcyBkaWZmZXJlbnQgdGhhbiA4Mzd4Ci0gICAgMikgVGhlIFNDQ1IgaGFzIGNoYW5nZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVjMjYzOGVhMDhhNTM3YTFiZDQwOWRiODczYWFhYTMzYTA1M2ViYWUKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEphbiAxMCAyMzowNTowMCAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiBGaXggdGhlIHR5cG8gaW4gbXBjODN4eC5oCi0KLSAgICBUaGUgU1BDUiBhYm91dCBUU0VDIHByaW9yaXR5IGlzIHdyb25nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBCYXJrb3dza2kgPE1pY2hhZWwuQmFya293c2tpQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9lIEQnQWJicmFjY2lvIDxKb2UuRCdhYmJyYWNjaW9AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjODZlZjJjZDllZjgxOTM1MDQ5MjMxZmE4OWYzNmM3Yjc5M2YyZDRiCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gMTAgMjM6MDQ6MTMgMjAwOCArMDgwMAotCi0gICAgbXBjODN4eDogRml4IHRoZSB0eXBvIGluIGdsb2JhbCBkYXRhIHN0cnVjdAotCi0gICAgRml4IHRoZSB0eXBvIGluIGdsb2JhbF9kYXRhLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDJjNWI0OGZjMjA1YzNlMjc1MjkxMGRhOGYzOTIwOWVkMDc1OTI5ZTUKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEphbiAxMCAyMzowMzowMyAyMDA4ICswODAwCi0KLSAgICBtcGM4M3h4OiBSZW1vdmUgY2FjaGUgY29uZmlnIGZyb20gY29uZmlnLmgKLQotICAgIGNsZWFuIHVwIHRoZSBjYWNoZSBjb25maWcgZnJvbSBjb25maWdzLmggb2YgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGZhYjZmNTU2YmJiYmQxYmIzNWE1NDMzMTYxZjdmMTczYzE4ZGY1NTkKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgSmFuIDkgMjA6NTc6NDcgMjAwOCArMDMwMAotCi0gICAgbXBjODN4eDogYWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzYwRS1SREsKLQotICAgIFRoaXMgaXMgTVBDODM2MEUgYmFzZWQgYm9hcmQgd2l0aDoKLSAgICAtIDI1Nk1CIGZpeGVkIFNEUkFNOwotICAgIC0gOE1CIEludGVsIFN0cmF0YSBOT1IgZmxhc2g7Ci0gICAgLSBTdE1JQ1JPIDY0TWlCIE5BTkQgZmxhc2g7Ci0gICAgLSB0d28gMTAvMTAwLzEwMDAgZXRoZXJuZXQgcG9ydHMgY29ubmVjdGVkIHZpYSBCcm9hZGNvbQotICAgICAgQkNNNTQ4MSBQSFlzOwotICAgIC0gdHdvIDEwLzEwMCBldGhlcm5ldCBwb3J0cyBjb25uZWN0ZWQgdmlhIE5hdGlvbmFsCi0gICAgICBEUDgzODQ4IFBIWXM7Ci0gICAgLSBvbmUgUENJIGFuZCBvbmUgbWluaVBDSSBzbG90czsKLSAgICAtIGZvdXIgc2VyaWFsIHBvcnRzICh0d28gTlMxNjU1MC1jb21wYXRpYmxlLCB0d28gVUNDcyk7Ci0gICAgLSBmb3VyIFVTQiBwb3J0cyB3b3JraW5nIHRocm91Z2ggTVBDODM2MEUgIkZIQ0kiIFVTQiBjb250cm9sbGVyOwotICAgIC0gRnVqaXRzdSBNQjg2Mjc3IGdyYXBoaWNzIGNvbnRyb2xsZXI7Ci0gICAgLSBBbmFsb2cgdG8gRGlnaXRhbCBDb252ZXJ0ZXIvVG91Y2hzY3JlZW4gY29udHJvbGxlciwgQUQ3ODQzCi0gICAgICBjb25uZWN0ZWQgdG8gU1BJLgotCi0gICAgRmVhdHVyZXMgbm90IHN1cHBvcnRlZCBpbiB0aGlzIHBhdGNoIGFyZToKLSAgICAtIFN0TUlDUk8gNjRNaUIgTkFORCBmbGFzaCAocGF0Y2ggc2VudCk7Ci0gICAgLSBNSU5UIGZyYW1lYnVmZmVyIGluaXRpYWxpemF0aW9uIChwYXRjaCBpcyBwZW5kaW5nKTsKLSAgICAtIEZldGNoaW5nIHByb2R1Y3Rpb24gaW5mb3JtYXRpb24gZnJvbSB0aGUgRUVQUk9NIHZpYSBJMkM7Ci0gICAgLSBGSENJIFVTQjsKLSAgICAtIFR3byBzbG93IFVDQ3MgdXNlZCBhcyBSUy00ODUgVUFSVHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjNkMmNkZTdhM2FhMWU4M2I3OTY4Y2RmZjkyOWU1MmM4Y2M2MTdiYgotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CVdlZCBKYW4gOSAyMDo1Nzo0MCAyMDA4ICswMzAwCi0KLSAgICBtcGM4M3h4OiBhZGQgImZzbCwgcWUiIGNvbXBhdGlibGUgZml4dXBzCi0KLSAgICBOZXcgZGV2aWNlIHRyZWVzIHdpbGwgdXNlICJmc2wscWUiIGNvbXBhdGlibGUgcHJvcGVydGllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5NzdiNTc1ODNhN2MzNDAxMGU1NjZhMDlhNjc5ZWMzYzE4MzZmOTk2Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDkgMTU6MjQ6MDYgMjAwOCAtMDYwMAotCi0gICAgbXBjODN4eDogYWRkIG1pc3NpbmcgQ09ORklHX0hBU19FVEgwIGRlZmluZXMKLQotICAgIHRoZSBuZXcgbGliZmR0IGNvZGUgb25seSB1cGRhdGVzIGV0aDAgaWYgQ09ORklHX0hBU19FVEgwCi0gICAgaXMgZGVmaW5lZDsgYWRkIHRoZSBkZWZpbmUgdG8gdGhlIG1pc3NpbmcgYm9hcmQgY29uZmlncy4KLQotICAgIFRoYW5rcyB0byBFbWlsaWFuIE1lZHZlIGZvciBmaW5kaW5nIHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjgzMGI3ZjE2MzU5ODRiYTYwNzIxOWZjYmQ3ODU5N2MyOGVlYjUyOQotQXV0aG9yOiBCZWNreSBCcnVjZSA8YmdpbGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gMTAgMTQ6MDA6MjggMjAwOCAtMDYwMAotCi0gICAgODZ4eDogU3VwcG9ydCAyR0IgRElNTXMKLQotICAgIENvbmZpZ3VyZSB0aGUgbnVtYmVyIG9mIGJpdHMgdXNlZCB0byBhZGRyZXNzIHRoZSBiYW5rcyBpbnNpZGUgdGhlIFNEUkFNCi0gICAgZGV2aWNlLiAgVGhlIGRlZmF1bHQgcmVnaXN0ZXIgdmFsdWUgb2YgMCBtZWFucyAyIGJpdHMgdG8gYWRkcmVzcyA0IGJhbmtzLgotICAgIEhpZ2hlciBjYXBhY2l0eSBkZXZpY2VzIGxpa2UgYSAyR0IgRElNTSByZXF1aXJlIDMgYml0cyB0byBhZGRyZXNzIDggYmFua3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZWNreSBCcnVjZSA8YmdpbGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRkMzMyZGJlYjA4ZjU4NjNkMWVhNjlkOTFhMDBjNTQ5OWQzYTg3ZWQKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KLURhdGU6CVRodSBKYW4gMTAgMTg6NTA6MzMgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBNYWtlIFNlcXVvaWEgYm9vdCB2eFdvcmtzCi0KLSAgICB2eFdvcmtzIGV4cGVjdHMgaW4KLSAgICBUTEIgMCBhIGVudHJ5IGZvciB0aGUgTWFjaGluZSBDaGVjayBpbnRlcnJ1cHQKLSAgICBUTEIgMSBhIGVudHJ5IGZvciB0aGUgUkFNCi0gICAgVExCIDIgYSBlbnRyeSBmb3IgdGhlIEVCQwotICAgIFRMQiAzIGEgZW50cnkgZm9yIHRoZSBib290IGZsYXNoCi0KLSAgICBBZnRlciBjaGFuZ2luZyB0aGUgYmF1ZHJhdGUgdG8gOTYwMCBJIGhhZCBubyBwcm9ibGVtcyB0byBib290IHRoZQotICAgIHZ4V29ya3MgaW1hZ2UgYXMgZGlzdHJpYnV0ZWQgYnkgV2luZFJpdmVyIChSZXZpc2lvbiAyLjAvMSBmcm9tCi0gICAgSnVuZSAxOCwgMjAwNykKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCA2ZDgxODRiMDBjMGQxZDcwOTBlNGEyZjUxNGUzMTBkOThhMzk0ZjhkCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgotRGF0ZToJV2VkIEphbiA5IDIzOjEwOjI3IDIwMDggLTA1MDAKLQotICAgIHBwYzR4eDogRml4IGRmbHVzaCgpIHRvIHJlc3RvcmUgRFZMSU0gcmVnaXN0ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgMjUyZjYwYjA2OGQxZjk0MTkwYjViY2ZkYTE2OWRiNTgyMzg3ZTE1ZQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVGh1IEphbiAxMCAwMzo1Mjo0NCAyMDA4IC0wNTAwCi0KLSAgICBOaW9zMjogcmVtb3ZlIGNvbW1vbi9jbWRfYmRpbmZvLmMgdW51c2VkIHZhcmlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBNY051dHQgPHNtY251dHRAcHN5ZW50LmNvbT4KLQotY29tbWl0IDQyMmIxYTAxNjAyYjZlMmZiZjg0NDRhMTE5MmM3YmEzMTQ2MWZkNGMKLUF1dGhvcjogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLURhdGU6CVdlZCBKYW4gOSAxODoxNTo1MyAyMDA4IC0wNTAwCi0KLSAgICBGaXggRXRoZXJuZXQgaW5pdCgpIHJldHVybiBjb2RlcwotCi0gICAgQ2hhbmdlIHJldHVybiB2YWx1ZXMgb2YgaW5pdCgpIGZ1bmN0aW9ucyBpbiBhbGwgRXRoZXJuZXQgZHJpdmVycyB0byBjb25mb3JtCi0gICAgdG8gdGhlIGZvbGxvd2luZzoKLQotCT49MDogU3VjY2VzcwotCTwwOiAgRmFpbHVyZQotCi0gICAgQWxsIGRyaXZlcnMgZ29pbmcgZm9yd2FyZCBzaG91bGQgcmV0dXJuIDAgb24gc3VjY2Vzcy4gIEN1cnJlbnQgZHJpdmVycyB0aGF0Ci0gICAgcmV0dXJuIDEgb24gc3VjY2VzcyB3ZXJlIGxlZnQgYXMtaXMgdG8gbWluaW1pemUgY2hhbmdlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0gICAgQWNrZWQtQnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkM2E2NTMyY2JlMjYzZDk5MmY0OWU4NmFjOTViZWRlMjhlOTZmOWM4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDEwIDAwOjU1OjE0IDIwMDggKzAxMDAKLQotICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTdhNDFlNDQ5MjEyMWNjZjlmYTJjMTBjMmNiMWE2ZDFjMThkNzRmNwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEphbiA5IDE2OjU2OjU0IDIwMDggLTA2MDAKLQotICAgIEFkZCBRRSBicmcgZnJlcSBhbmQgY29ycmVjdCBxZSBidXMgZnJlcSBmZHQgdXBkYXRlIGNvZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODkwZGZlZjA2YzJkMTY5YTMzNTYzNTk1OTY4OTA3NTRkZmI4ZWUxYwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDkgMTY6MzQ6NTEgMjAwOCAtMDYwMAotCi0gICAgUmVtb3ZlIGNhY2hlIGNvbmZpZyBmcm9tIEFUVU04NTQ4IGFuZCBzYmM4NTQ4IGNvbmZpZ3MKLQotICAgIFRoZXNlIGJvYXJkcyB3ZXJlbid0IHVwZGF0ZWQgYnkgS3VtYXIncyBjb25maWcgcGF0Y2ggYmVjYXVzZSB0aGV5Ci0gICAgd2VyZW4ndCBpbiB0aGUgdHJlZSwgeWV0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjhlYzIzODUwMzhjMDk0YjA3ZWM1YjQ5MzM2Mjg5YTQ2YjZlOWNjNgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiA3IDEzOjMxOjE5IDIwMDggLTA2MDAKLQotICAgIDg1eHg6IGFkZCBhYmlsaXR5IHRvIHVwbG9hZCBRRSBmaXJtd2FyZQotCi0gICAgRGVmaW5lIHRoZSBsYXlvdXQgb2YgYSBiaW5hcnkgYmxvYiB0aGF0IGNvbnRhaW5zIGEgUUUgZmlybXdhcmUgYW5kIGluc3RydWN0aW9ucwotICAgIG9uIGhvdyB0byB1cGxvYWQgaXQuICBBZGQgZnVuY3Rpb24gcWVfdXBsb2FkX2Zpcm13YXJlKCkgdG8gcGFyc2UgdGhlIGJsb2IgYW5kCi0gICAgcGVyZm9ybSB0aGUgYWN0dWFsIHVwbG9hZC4JQWRkIGNvbW1hbmQtbGluZSBjb21tYW5kICJxZSBmdyIgdG8gdGFrZSBhIGZpcm13YXJlCi0gICAgYmxvYiBpbiBtZW1vcnkgYW5kIHVwbG9hZCBpdC4gIFVwZGF0ZSBmdF9jcHVfc2V0dXAoKSBvbiA4NXh4IHRvIGNyZWF0ZSB0aGUKLSAgICAnZmlybXdhcmUnIGRldmljZSB0cmVlIG5vZGUgaWYgVS1Cb290IGhhcyB1cGxvYWRlZCBhIGZpcm13YXJlLiAgRnVsbHkgZGVmaW5lCi0gICAgJ3N0cnVjdCByc3AnIGluIGltbWFwX3FlLmggdG8gaW5jbHVkZSB0aGUgYWN0dWFsIFJJU0MgU3BlY2lhbCBSZWdpc3RlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjAwOWYzZWNhOTliYjdiOWU2YmE2NjM5YTg5MDlhMTM4ZGQ1ZTlmZQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIEphbiA4IDAxOjIyOjIxIDIwMDggLTA2MDAKLQotICAgIDg1eHg6IFJlbW92ZSBjYWNoZSBjb25maWcgZnJvbSBjb25maWdzLmgKLQotICAgIEVpdGhlciB1c2UgdGhlIHN0YW5kYXJkIGRlZmluZXMgaW4gYXNtL2NhY2hlLmggb3IgZ3JhYiB0aGUgaW5mb3JtYXRpb24KLSAgICBhdCBydW50aW1lIGZyb20gdGhlIEwxQ0ZHIFNQUi4KLQotICAgIEFsc28sIG1pbm9yIGNsZWFudXAgaW4gY2FjaGUuaCB0byBtYWtlIHRoZSBjb2RlIGEgYml0IG1vcmUgcmVhZGFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYjk2NGU5MzY4ZjQ1MzcyYWFmMWRhMGMxM2ZlNTZmNmQ4MWFlOGU5NgotQXV0aG9yOiByb2JlcnQgbGF6YXJza2kgPHJvYmVydGxhemFyc2tpQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBEZWMgMjEgMTA6Mzk6MjcgMjAwNyAtMDUwMAotCi0gICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIEFUVU04NTQ4ICh1cGRhdGVkKQotCi0gICAgQWRkIHN1cHBvcnQgZm9yIEluc3RpdHV0byBBdGxhbnRpY28ncyBBVFVNODU0OCBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogcm9iZXJ0IGxhemFyc2tpIDxyb2JlcnRsYXphcnNraUBnbWFpbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2JkNjEwNGI3MWRlOWJjYTgwYWM4ZTA5MzYwMDM0NDNiYjQyZjJmYwotQXV0aG9yOiByb2JlcnQgbGF6YXJza2kgPHJvYmVydGxhemFyc2tpQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBEZWMgMjEgMTA6MzY6MzcgMjAwNyAtMDUwMAotCi0gICAgbXBjODV4eDogQWRkIHN1cHBvcnQgZm9yIEFUVU04NTQ4ICh1cGRhdGVkKQotCi0gICAgQWRkIHN1cHBvcnQgZm9yIEluc3RpdHV0byBBdGxhbnRpY28ncyBBVFVNODU0OCBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogcm9iZXJ0IGxhemFyc2tpIDxyb2JlcnRsYXphcnNraUBnbWFpbC5jb20+Ci0KLWNvbW1pdCA5ZTNlZDM5MmQyYzg5NjVlMjRjOTQyYjU4Nzk2YzMxYzY0NGMyZjcwCi1BdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci1EYXRlOglUaHUgRGVjIDEzIDA2OjQ1OjE0IDIwMDcgLTA2MDAKLQotICAgIG1wYzg1eHg6IEFkZCBzdXBwb3J0IGZvciBTQkM4NTQ4ICh1cGRhdGVkKQotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFdpbmQgUml2ZXIncyBTQkM4NTQ4IHJlZmVyZW5jZSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci0KLWNvbW1pdCAxMWM0NWViZDQ2ZDY1MTdiNTFiN2E5MmRkNTJhNjE4YjJmNGU1NTg2Ci1BdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci1EYXRlOglUaHUgRGVjIDEzIDA2OjQ1OjA4IDIwMDcgLTA2MDAKLQotICAgIG1wYzg1eHg6IEFkZCBzdXBwb3J0IGZvciBTQkM4NTQ4ICh1cGRhdGVkKQotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFdpbmQgUml2ZXIncyBTQkM4NTQ4IHJlZmVyZW5jZSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci0gICAgU2lnbmVkLW9mZiBieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjRkNGJjYjA4N2MyZWNlMWM0ZDBkZThlZmU4NWUwMDc1ZTViMTU5NAotQXV0aG9yOiBBbnRvbiBWb3JvbnRzb3YgPGF2b3JvbnRzb3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBPY3QgMjIgMTk6NTg6MTkgMjAwNyArMDQwMAotCi0gICAgTVBDODU2OEUtTURTOiBzZXQgdXAgUUUgcGFyaW8gZm9yIFVBUlQxCi0KLSAgICBUbyB1c2UgVUFSVDEgb24gdGhlIE1QQzg1NjhFLU1EUywgUUUgcGFyaW8gcGlucyBQQ1swOjNdIHNob3VsZAotICAgIGJlIHNldCB1cCBhcHByb3ByaWF0ZWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCBhZDE2MjI0OWNiMzcxZTllMzg5NzE2NzZmMDliZTc5MWU1ZjNjZjRhCi1BdXRob3I6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIE9jdCAyMiAxODoxMjo0NiAyMDA3ICswNDAwCi0KLSAgICBNUEM4NTY4RS1NRFM6IHJlc2V0IFVDQ3MgdG8gdXNlIHRoZW0gcmVsaWFibHkKLQotICAgIEluIG9yZGVyIHRvIHVzZSBHRVRIMSBhbmQgR0VUSDIgb24gdGhlIE1QQzg1NjhFLU1EUywgd2Ugc2hvdWxkIHJlc2V0Ci0gICAgVUNDcy4KLQotICAgIHAucyBTaW1pbGFyIGNvZGUgZXhpc3RzIGluIHRoZSBMaW51eCBrZXJuZWwgYm9hcmQgZmlsZSAoZm9yIGNhcGFiaWxpdHkKLSAgICByZWFzb25zIHdpdGggb2xkZXIgVS1Cb290cyksIGJ1dCBzaG91bGQgYmUgcmVtb3ZlZCBzb21lIGRheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFudG9uIFZvcm9udHNvdiA8YXZvcm9udHNvdkBydS5tdmlzdGEuY29tPgotCi1jb21taXQgMjE0NmNmNTY4MjFjMzM2NDc4NmNhOTRhNzMwNjAwOGM1ODI0YjIzOAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIERlYyAxOSAwMToxODoxNSAyMDA3IC0wNjAwCi0KLSAgICBSZXdvcmtlZCBGU0wgQm9vay1FIFRMQiBtYWNyb3MgdG8gYmUgbW9yZSByZWFkYWJsZQotCi0gICAgVGhlIG9sZCBtYWNyb3MgbWFkZSBpdCBkaWZmaWN1bHQgdG8ga25vdyB3aGF0IFdJTUdFIGFuZCBwZXJtIGJpdHMKLSAgICB3ZXJlIHNldCBmb3IgYSBUTEIgZW50cnkuICBBY3R1YWxseSB1c2UgdGhlIGJpdCBtYXNrcyBmb3IgdGhlc2UgaXRlbXMKLSAgICBzaW5jZSB0aGV5IGFyZSBvbmx5IGEgc2luZ2xlIGJpdC4KLQotICAgIEFsc28gbW92ZWQgdGhlIG1hY3JvcyBpbnRvIG1tdS5oIG91dCBvZiBlNTAwLmggc2luY2UgdGhleSBhcmVuJ3Qgc3BlY2lmaWMKLSAgICB0byBlNTAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDFkNDcyNzNkNDY5MjU5MjlmOGYyYzE5MTNjZDk2ZDcyNTdhYWRlODgKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBEZWMgMTggMjM6MjE6NTEgMjAwNyAtMDYwMAotCi0gICAgVXNlIEZTTCBCb29rLUUgTU1VIG1hY3JvcyBmcm9tIExpbnV4IEtlcm5lbAotCi0gICAgR3JhYiB0aGUgRlNMIEJvb2stRSBNQVMgcmVnaXN0ZXIgbWFjcm9zIGZyb20gTGludXguICBBbHNvIGFkZGVkCi0gICAgZGVmaW5lcyBmb3IgcGFnZSBzaXplcyB1cCB0byA0VEIgYW5kIHJlbW92ZWQgU0hBUkVOIHNpbmNlIGl0IGRvZXNudAotICAgIHJlYWxseSBleGlzdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwMmRmNGEyNzBmODE3ZWY2ZWMzOTA0N2EwMWI1NWZlY2RjNWYzYjM3Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gOSAxMzo1MTozMiAyMDA4IC0wNjAwCi0KLSAgICBGaXggbXkgb3duIG1lcmdlIHN0dXBpZGl0eQotCi0gICAgV2F5IGJhY2sgaW4gQXVndXN0IEkgbWVyZ2VkIEhlaWtvJ3MgcGF0Y2g6Ci0gICAgNTY2YTQ5NGY1OTI6IFtQQ1M0NDBFUF0gdXBncmFkZSB0aGUgUENTNDQwRVAgYm9hcmQKLQotICAgIHdpdGggSm9uJ3MgQ09ORklHX0NPTU1BTkRTIHBhdGNoZXMuCi0KLSAgICBUaGlzIHdhcyBkb25lIGluIGNvbW1pdDogNmJmNmYxMTRkY2RkOTdlYzNmODBjMjc2MWVkNDBlMzEyMjlkNmI3OAotCi0gICAgSG93ZXZlciwgaW4gdGhlIHByb2Nlc3MsIEkgbGVmdCBvdXQgc29tZSBvZiBIZWlrbydzIGdvb2QgY2hhbmdlcy4KLQotICAgIE5vdyBIZWlrbydzIGFuZCBKb24ncyBwYXRjaGVzIGFyZSBwcm9wZXJseSBtZXJnZWQgaW4gZmF0X3JlZ2lzdGVyX2RldmljZSgpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2NjM2YjYyYTZlZmM3ZjE0ZTZlNzg4Nzg4NjMxYWU3YTdmY2E0NTM3Ci1BdXRob3I6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gOSAxMToxNzo0OSAyMDA4IC0wNjAwCi0KLSAgICBFeHBvc2UgcGFyc2VfbGluZSgpIGdsb2JhbGx5LgotCi0gICAgQWRkIG5ldyBmdW5jdGlvbiByZWFkbGluZV9pbnRvX2J1ZmZlcigpIHRoYXQgYWxsb3dzIHRoZQotICAgIG91dHB1dCBvZiByZWFkbGluZSB0byBiZSBwdXQgaW50byBhIHBvaW50ZXIgdG8gY2hhciBidWZmZXIuCi0KLSAgICBUaGlzIHJlZmFjdG9yaW5nIGFsbG93cyBvdGhlciBmdW5jdGlvbnMgYmVzaWRlcyB0aGUKLSAgICBtYWluIGNvbW1hbmQgbG9vcCB0byBhbHNvIHVzZSB0aGUgc2FtZSBpbnB1dCBtZWNoYW5pc20uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYW1lcyBZYW5nIDxKYW1lcy5ZYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3Y2E5MDUxMzQ4NmFiZDRhZTUwYmQxYjc0MDNmNDdjYzU4YzVhZDI1Ci1BdXRob3I6IEd1ZW5uYWRpIExpYWtob3ZldHNraSA8bGdAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gOSAwMToxNToyNSAyMDA4ICswMTAwCi0KLSAgICB0cml2aWFsOiBmaXggY29uc2VxdWVuY2VzIG9mIGEgYmFkIG1lcmdlCi0KLSAgICBGaXggd2hhdCBsb29rcyBsaWtlIGEgbWVyZ2UgYXJ0aWZhY3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCA0Nzg1YTY5NGMwMDQ1OTk2Y2NmMGFjNWI4ZWRmNTMxZWZjMWI3MzBlCi1BdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSmFuIDMgMTA6NTE6MTUgMjAwOCArMDgwMAotCi0gICAgQWRkIEN0cmwgY29tYm8ga2V5IHN1cHBvcnQgdG8gdXNiIGtleWJvYXJkIGRyaXZlci4KLQotICAgIEN0cmwgY29tYm8ga2V5IHN1cHBvcnQgaXMgYWRkZWQsIHdoaWNoIGlzIHZlcnkgdXNlZnVsIHRvIGlucHV0IEN0cmwtQwotICAgIGZvciBpbnRlcnJ1cHQgY3VycmVudCBqb2IuCi0gICAgQWxzbyBhZGQgdXNiX2V2ZW50X3BvbGwoKSBjYWxsaW5nIHRvIHVzYl9rYmRfdGVzdGMoKSwgd2hpY2ggY2FuIGdldAotICAgIGtleSBpbnB1dCB3aGVuIHRzdGMoKSBpcyBjYWxsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTBjNzM4MmJjNWQ1ZTY0YzQ3Zjk0YWMyY2E3OGNjNTc0NDQyZTgyZAotQXV0aG9yOiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci1EYXRlOglTdW4gRGVjIDMwIDAzOjMwOjU2IDIwMDcgKzAxMDAKLQotICAgIGZpeCB2YXJpb3VzIGNvbW1lbnRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCA3ODE3Y2IyMDgzZDk4MjkyMzc1MmZlMGYxMmI2N2MwZTdjMDlhMDI3Ci1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CVN1biBEZWMgMzAgMDM6MzA6NDYgMjAwNyArMDEwMAotCi0gICAgZml4IGNvbW1lbnRzIHdpdGggbmV3IGRyaXZlcnMgb3JnYW5pemF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCBhOWI0MTBkYzdkMmE0NzIxYzQwOGIxM2FiZmMwMzc5ODgxNTBmMTQ1Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CUZyaSBEZWMgMjggMTI6NTA6NTkgMjAwNyArMDkwMAotCi0gICAgUmVtb3ZlIHRoZSBvYnNvbGV0ZSB0ZXJzZSB2ZXJzaW9uIG9mIGRvX21paSgpCi0KLSAgICBXZSBub3cgaGF2ZSBtb3JlIHVzZWZ1bCB2ZXJzaW9uIG9mIGRvX21paSgpIGFuZCBldmVyeWJvZHkgdXNlIGl0LgotICAgIEdlcmFsZCBWYW4gQmFyZW4gc2F5czoKLQotICAgID4gV2hlbiBJIG9yaWdpbmFsbHkgd3JvdGUgdGhlIG1paSBjb21tYW5kIDYoISkgeWVhcnMgYWdvLCBJIHdyb3RlIGEKLSAgICA+IHZlcmJvc2UgdmVyc2lvbiB0aGF0IHByaW50ZWQgaHVtYW4gcmVhZGFibGUgZGVjb21wb3NpdGlvbiBvZiB0aGUgZmxhZ3MsCi0gICAgPiBldGMuLCBhbmQgYSB0ZXJzZSBvbmUgdGhhdCBkaWRuJ3QgcHJpbnQgYXMgbXVjaCBzdHVmZiBhbmQgdGh1cyBoYWQgYQotICAgID4gc21hbGxlciBtZW1vcnkgZm9vdHByaW50LgotICAgID4KLSAgICA+IEl0IHNvdW5kcyBsaWtlIHRoZSB0ZXJzZSB2ZXJzaW9uIGhhcyB3aXRoZXJlZCBhbmQgZGllZCwgYXBwYXJlbnRseQotICAgID4gcGVvcGxlIGFyZSBvbmx5IHVzaW5nIHRoZSB2ZXJib3NlIHZlcnNpb24gKHdoaWNoIGlzIHZlcnkgdW5kZXJzdGFuZGFibGUsCi0gICAgPiBJIGRvIG15c2VsZikuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDAxYzY4N2FhNmUwNjViZDRmYWY4MGY3MjMzNjFlNzk4OTQxZGQ2YjAKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVGh1IERlYyAyNyAxMzo0Mjo1NiAyMDA3IC0wNTAwCi0KLSAgICBEbyBub3QgcmVmZXJlbmNlIHNoYTEuYyB3aGVuIGJ1aWxkaW5nIG1raW1hZ2UuCi0KLSAgICByZW1vdmUgc2hhMS5vIGZyb20gbWtpbWFnZSBsaW5raW5nIHNpbmNlIGl0IGlzbid0IGFjdHVhbGx5IHVzZWQuCi0KLSAgICBTaWduZWQtT2ZmLUJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCBiOTE3M2FmNzNlNTI0ZDM3YzgxMmYyMTAxNzNjZjgzMzg1YzUxNzFhCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CVRodSBEZWMgMjcgMTU6Mzk6NTQgMjAwNyArMDkwMAotCi0gICAgY29tbW9uL2NtZF9taWkuYzogQWRkIHNhbml0eSBhcmdjIGNoZWNrCi0KLSAgICBJZiB0eXBlIG1paSBjb21tYW5kIHdpdGhvdXQgYXJndW1lbnRzLCB3ZSBzdWZmZXIgZnJvbSB1bmluaXRpYWxpemVkIGFyZ3ZbXQotICAgIGVudHJpZXM7IGZvciBleGFtcGxlIHdlIE1JUFMgZ2V0IHN0dWNrIGJ5IFRMQiBlcnJvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLQotY29tbWl0IDUwMDg1NmViMTcwN2VkMTdkOTIwNGJhYTYxZGQ1OTk0OGQzYjI4OTkKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBKYW4gOSAxOTozOTozNiAyMDA4ICswMTAwCi0KLSAgICBBUEkgZm9yIGV4dGVybmFsIGFwcGxpY2F0aW9ucy4KLQotICAgIFRoaXMgaXMgYW4gQVBJIGZvciBleHRlcm5hbCAoc3RhbmRhbG9uZSkgYXBwbGljYXRpb25zIHJ1bm5pbmcgb24gdG9wIG9mCi0gICAgVS1Cb290LCBhbmQgaXMgbWVhbnQgdG8gYmUgbW9yZSBleHRlbnNpYmxlIGFuZCByb2J1c3QgdGhhbiB0aGUgZXhpc3RpbmcKLSAgICBqdW1wdGFibGUgbWVjaGFuaXNtLiBJdCBpcyBzaW1pbGFyIHRvIFVOSVggc3lzY2FsbCBhcHByb2FjaC4gU2VlIGFwaS9SRUFETUUKLSAgICBmb3IgbW9yZSBkZXRhaWxzLgotCi0gICAgSW5jbHVkZWQgaXMgdGhlIGRlbW8gYXBwbGljYXRpb24gdXNpbmcgdGhpcyBuZXcgZnJhbWV3b3JrIChhcGlfZXhhbXBsZXMpLgotCi0gICAgUGxlYXNlIG5vdGUgdGhpcyBpcyBzdGlsbCBhbiBleHBlcmltZW50YWwgZmVhdHVyZSwgYW5kIGlzIHR1cm5lZCBvZmYgYnkKLSAgICBkZWZhdWx0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGZlOGRkMGIyMjIwYjdjMDJiMGQ0YzljNGY5OTY3ODc5OTcwNDc3YjEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKYW4gOSAxMjoxNDo1NSAyMDA4IC0wNjAwCi0KLSAgICA4Nnh4OiBSZW1vdmUgY2FjaGUgY29uZmlnIGZyb20gY29uZmlncy5oCi0KLSAgICBKdXN0IHVzZSB0aGUgc3RhbmRhcmQgZGVmaW5lcyBpbiBhc20vY2FjaGUuaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNmE0MTc5MGY4ZWJhMTlhZDQ1MGUxOGFlOTEzNTFkYWY0ODViM2UyCi1BdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgSmFuIDkgMTg6MDU6MjcgMjAwOCArMDEwMAotCi0gICAgR2xvYmFsaXplIGVudm1hdGNoKCkKLQotICAgIFRoZSBuZXdseSBpbnRyb2R1Y2VkIEFQSSAocm91dGluZXMgcmVsYXRlZCB0byBlbnYgdmFycykgd2lsbCBuZWVkIHRvIGNhbGwKLSAgICBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIFphYmR5ciA8YXJtb0BzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCAxZGYxNzBmOGIyYTk5ZTFlMmY5NDBmOWYwYjU2NTExZTFlNGM5ZTFmCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSmFuIDQgMTI6MDc6MjcgMjAwOCAtMDYwMAotCi0gICAgQ29udmVydCBNUEM4NjEwSFBDRCB0byB1c2UgbGliZmR0LgotCi0gICAgQXNzdW1lcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGFsaWFzZXMgbm9kZSBpbiB0aGUgRFRTIHRvCi0gICAgbG9jYXRlIHRoZSBwY2kgYW5kIHNlcmlhbCBub2RlcyBmb3IgZml4dXBzLgotCi0gICAgVXNlIGNvbnNpc3RlbnQgZmR0YWRkciBhbmQgZmR0ZmlsZSBpbiBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzk5NzRhYjBhNGQzNzMxY2RiNzZhNzU5OWQ5ZmU5NDQ1ZDc2NGQ2MAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEphbiA0IDExOjU4OjIzIDIwMDggLTA2MDAKLQotICAgIDg2MTA6IEZpeCBsaW5nZXJpbmcgY29tcGlsZSB3YXJuaW5ncy4KLQotICAgIFR1cm4gb2ZmIERFQlVHLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYwMDdmMzI1MWMwOTY3YWRjMTNmMmVkOGJlMWI5MjRkZGMzMDEyNGQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gOSAxNToxNDo0NiAyMDA4ICswMTAwCi0KLSAgICBDb2RpbmcgU3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGZjNjQxNGVjYTU1ZjFmYzEwOGZiMTJmYzhjZGM0M2JkOGI0NDYzZjkKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIERlYyAxOCAwNDoyOTo1NSAyMDA3IC0wNTAwCi0KLSAgICBmaXggZWFzeWxvZ28gb24gYmlnIGVuZGlhbiBkZXYgc3lzdGVtcwotCi0gICAgZGlkbnQgcmVhbGl6ZSBob3cgb3V0IG9mIHNoYXBlIGVhc3lsb2dvIGFjdHVhbGx5IHdhcyB1bnRpbCBpIHRyaWVkIHVzaW5nIGl0LgotICAgIHRoaXMgcGF0Y2ggZG9lcyBieXRlIHN3YXBwaW5nIGFzIG5lZWQgYmUgb24gdGhlIGlucHV0IHRnYSBoZWFkZXIgc2luY2UgdGhlIHRnYQotICAgIGlzIGluIGxpdHRsZSBlbmRpYW4gYnV0IHRoZSBob3N0IGNvdWxkIGp1c3QgYXMgd2VsbCBiZSBiaWcgZW5kaWFuLglpIGRpZG50Ci0gICAgYm90aGVyIHVzaW5nIGJzd2FwIG1hY3JvcyBvciBzdWNoIHN0dWZmIGZyb20gc3lzdGVtIGhlYWRlcnMgYXMgbm90aGluZyBpbgotICAgIFBPU0lYIGRpY3RhdGVzIGJ5dGUgc3dhcHBpbmcgZnVuY3Rpb25hbGl0eS4KLQotICAgIFNpZ25lZC1PZmYtQnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IDM4ZDI5OWMyZGI4MWJkODg5YzYwMWI1ZGZjMTJjNGU4M2VmODMzMzMKLUF1dGhvcjogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZToJVHVlIERlYyAxOCAwMzoyMzoyNSAyMDA3IC0wNTAwCi0KLSAgICBjbGVhbnVwIGVhc3lsb2dvCi0KLSAgICAtIG1ha2UgdGhlIE1ha2VmaWxlIG5vdCBzdWNrCi0gICAgLSBpbmNsdWRlIHByb3BlciBoZWFkZXJzIGZvciBwcm90b3R5cGVzCi0gICAgLSBmaXggb2J2aW91cyBicm9rZW4gaGFuZGxpbmcgb2Ygc3RyY2hyKCkgd2hlbiBoYW5kbGluZyAnLicgaW4gZmlsZW5hbWVzCi0KLSAgICBTaWduZWQtT2ZmLUJ5OiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci0KLWNvbW1pdCA4ODNlMzkyNWQ5OWE4ZGQ2OWM1YjAyMDFjYmE1YjE4ODdmODhmOTVjCi1BdXRob3I6IHJhcHRvcmJyaW5vQGFpbS5jb20gPHJhcHRvcmJyaW5vQGFpbS5jb20+Ci1EYXRlOglUaHUgRGVjIDEzIDIxOjIzOjI4IDIwMDcgLTA1MDAKLQotICAgIEZpeCBidWlsZCBwcm9ibGVtcyB1bmRlciBDeWd3aW4KLQotICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHUtYm9vdCB0byBidWlsZCB3aXRob3V0IGVycm9yIGluIGEgY3lnd2luCi0gICAgZW52aXJvbm1lbnQuICBDeWd3aW4gZG9lcyBub3QgZGVmaW5lIF9fdTY0IGluIGl0J3MKLSAgICBpbmNsdWRlL2FzbS90eXBlcy5oIGZpbGUuICBUaGUgLWlkaXJhZnRlciBmbGFnIGluIHRoZSB1LWJvb3QKLSAgICBidWlsZCBjYXVzZXMgdGhlIGluY2x1c2lvbiBvZiB0aGUgY3lnd2luIHR5cGVzLmggZmlsZSBhcyBvcHBvc2VkCi0gICAgdG8gdS1ib3QvaW5jbHVkZS9hc20vdHlwZXMuaCBmaWxlIHdoaWNoIGRvZXMgZGVmaW5lIF9fdTY0LgotICAgIFN1YnNlcXVlbnRseSwgc2hhMS5jIGNvbXBpbGUgZmFpbHMgZHVlIHRvIHVua25vd24gc3ltYm9sLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQnJpYW4gTWlsbGVyIDxyYXB0b3Jicmlub0BuZXRzY2FwZS5uZXQ+Ci0KLWNvbW1pdCA0M2VmMWMzODFmOTE5NTUwNGEyNDg4ZjVjYjkwOTIyN2ViOTdkNDc1Ci1BdXRob3I6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+Ci1EYXRlOglGcmkgTm92IDMwIDE3OjI5OjU5IDIwMDcgKzAxMDAKLQotICAgIGNtZF9ibXA6IEFkZCBzdXBwb3J0IGZvciBkaXNwbGF5aW5nIGd6aXAgY29tcHJlc3NlZCBibXBzCi0KLSAgICBUaGUgZXhpc3RpbmcgY29kZSBjYW4gc2hvdyBpbmZvcm1hdGlvbiBhYm91dCBhIGd6aXAgY29tcHJlc3NlZCBCTVAKLSAgICBpbWFnZSwgYnV0IGNhbid0IGFjdHVhbGx5IGRpc3BsYXkgaXQuCi0KLSAgICBUaGVyZWZvcmUsIG1vdmUgdGhlIGRlY29tcHJlc3Npb24gY29kZSBvdXQgb2YgYm1wX2luZm8oKSBhbmQgdXNlIGl0IGluCi0gICAgYm1wX2Rpc3BsYXkoKSBhcyB3ZWxsIGluIG9yZGVyIHRvIGRpc3BsYXkgYSBjb21wcmVzc2VkIEJNUCBpbWFnZS4KLQotICAgIEFsc28sIGNsZWFuIHRoaW5ncyB1cCBhIGJpdCBhbmQgZml4IGEgbWVtb3J5IGxlYWsgd2hpbGUgd2UncmUgYXQgaXQuCi0KLSAgICBbaHNraW5uZW1vZW5AYXRtZWwuY29tOiBhIGJpdCBvZiByZWZhY3RvcmluZ10KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGQxOTdmZmQ4MTcyYzZmZGVmMzg3MzM0MjQ2NDBhOWE0NzI5NWQ2ZTkKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVGh1IE5vdiAyOSAyMToxNTo1NiAyMDA3ICswMTAwCi0KLSAgICBGaXggYW5kIG9wdGltaXplIE1JSSBvcGVyYXRpb25zIG9uIEZFQyAoTVBDOHh4KSBjb250cm9sbGVycwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBzZXZlcmFsIGlzc3VlcyBhdCBsZWFzdCBvbiBhIE1QQzg4NSBiYXNlZCBzeXN0ZW0gd2l0aCB0d28KLSAgICBGRUMgaW50ZXJmYWNlcyB1c2VkIGluIE1JSSBtb2RlLgotCi0gICAgMS4gUEhZIGRpc2NvdmVyeSBzaG91bGQgZmlyc3QgcmVhZCBQSFlfUEhZSURSMiByZWdpc3RlciBhbmQgb25seSB0aGVuCi0gICAgICAgUEhZX1BIWUlEUjEgbGlrZSBjcHUvbXBjOHh4L2ZlYy5jOjptaWlfZGlzY292ZXJfcGh5KCkgZG9lcyBpdCwKLSAgICAgICBvdGhlcndpc2UgdGhlIHZhbHVlcyByZWFkIGFyZSB3cm9uZy4gQWxzbyBub3RpY2UsIHRoYXQgUEhZIGRpc2NvdmVyeQotICAgICAgIGNhbm5vdCB3b3JrIG9uIE1QQzg4eCAvIE1QQzg3eCBpbiBzZXR1cHMgd2l0aCBib3RoIEZFQ3MgYWN0aXZlIGF0IGFsbAotICAgICAgIGluIGl0cyBwcmVzZW50IGZvcm0sIGJlY2F1c2UgZm9yIGJvdGggaW50ZXJmYWNlcyB0aGUgcmVnaXN0ZXJzIGZyb20gRkVDCi0gICAgICAgMSBhcmUgdXNlZCB0byBjb21tdW5pY2F0ZSBvdmVyIE1JSS4KLQotICAgIDIuIFJlbW92ZSBjb2RlIGR1cGxpY2F0aW9uIGZvciByZXNldHRpbmcgdGhlIEZFQyBieSBpc29sYXRpbmcgaXQgaW50byBhCi0gICAgICAgc2VwYXJhdGUgZnVuY3Rpb24uCi0KLSAgICAzLiBJbml0aWFsaXplIE1JSSBvbiBGRUMgMSB3aGVuIGNvbW11bmljYXRpbmcgb3ZlciBGRUMgMiBpbiBmZWNfaW5pdCgpLgotCi0gICAgNC4gT3B0aW1pemUgbWlpX2luaXQoKSB0byBvbmx5IHJlc2V0IHRoZSBGRUMgMSBjb250cm9sbGVyIG9uY2UuCi0KLSAgICA1LiBGaXggYSB0eXBvIGluIG1paV9pbml0KCkgdXNpbmcgaW5kZXggaSBpbnN0ZWFkIG9mIGogdGh1cyBwb3RlbnRpYWxseQotICAgICAgIGxlYWRpbmcgdG8gdW5wcmVkaWN0YWJsZSByZXN1bHRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgNmE1ZTFkNzViZjEwNmZhMTU3ZTljZTY4YmNhZjRiMTNlOGExZDIxNAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDIwIDEzOjE0OjIwIDIwMDcgKzAxMDAKLQotICAgIEZpeCBlbmRpYW5uZXNzIGNvbnZlcnNpb25zIGluIHJ0bDgxNjkgZHJpdmVyCi0KLSAgICBJdCBpcyB1bmNsZWFyIG9uIHdoYXQgcGxhdGZvcm1zIHRoaXMgZHJpdmVyIGhhcyBiZWVuIHRlc3RlZCwgc2luY2UKLSAgICBub29uZSB1cCB0byBub3cgZGVmaW5lcyBDT05GSUdfUlRMODE2OSBpbiB0aGUgYm9hcmQgY29uZmlndXJhdGlvbgotICAgIGhlYWRlci4gTm93IGl0IGhhcyBiZWVuIGZpeGVkIGZvciBhIGJpZy1lbmRpYW4gbXBjODI0MSBiYXNlZAotICAgIGxpbmtzdGF0aW9uIHBsYXRmb3JtLiBUaGlzIHBhdGNoIHByZXNlbnRzIHRoZSBuZWNlc3NhcnkgZW5kaWFubmVzcwotICAgIGNvbnZlcnNpb24gZml4ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCA1ODY5NGY5NzA5YzBjM2UzMTc4ZTM0OWFlNzQ4ZDk4Y2ZiMGM2MzlhCi1BdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSmFuIDMgMTA6NTE6MTUgMjAwOCArMDgwMAotCi0gICAgQWRkIEN0cmwgY29tYm8ga2V5IHN1cHBvcnQgdG8gdXNiIGtleWJvYXJkIGRyaXZlci4KLQotICAgIEN0cmwgY29tYm8ga2V5IHN1cHBvcnQgaXMgYWRkZWQsIHdoaWNoIGlzIHZlcnkgdXNlZnVsIHRvIGlucHV0IEN0cmwtQwotICAgIGZvciBpbnRlcnJ1cHQgY3VycmVudCBqb2IuCi0gICAgQWxzbyBhZGQgdXNiX2V2ZW50X3BvbGwoKSBjYWxsaW5nIHRvIHVzYl9rYmRfdGVzdGMoKSwgd2hpY2ggY2FuIGdldAotICAgIGtleSBpbnB1dCB3aGVuIHRzdGMoKSBpcyBjYWxsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCAwN2ViMDI2ODdmMDA4NzIxOTc0YTJmYjU0Y2Q3ZmRjMjgwMzNhYjNjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDkgMTM6NDM6MzggMjAwOCArMDEwMAotCi0gICAgQ29kaW5nIFN0eWxlIGNsZW5hdXA7IHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjMjZhY2MxYTQzYjMxZGRjYTVhZGQ0MmZkMDM2MGZmMGVlZTkwYzgwCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVGh1IERlYyAyNyAxNzoxMzoxMSAyMDA3ICswMTAwCi0KLSAgICBSZW1vdmUgYml0IHN3YXBwaW5nIGluIFhpbGlueCBTcGFydGFuIGJpdGZpbGUgbG9hZGluZwotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHRoZSB1bm5lY2Vzc2FyeSBiaXQgc3dhcHBpbmcgd2hlbgotICAgIGJvb3RpbmcgLmJpdCBmaWxlcyB3aXRoIHRoZSAnZnBnYSBsb2FkYicgY29tbWFuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgNDM3ZmM3MzI3ZjA2MTFmODI5Mzc4NThmMmQ4MGU0Y2Q2MWI0MDk4NAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVRodSBEZWMgMjcgMTc6MTM6MDUgMjAwNyArMDEwMAotCi0gICAgRml4IE1TQiBjaGVjayBpbiBYaWxpbnggU3BhcnRhbiBzbGF2ZSBzZXJpYWwgbW9kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCAzYmZmNGZmYTMzNzI5YTQyNjQ1ZTMyOGEyMWU4ZDE2NDg4ODcyOTU4Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVGh1IERlYyAyNyAxNzoxMjo1NiAyMDA3ICswMTAwCi0KLSAgICBBZGQgbmV3IFhpbGlueCBTcGFydGFuIEZQR0EgdHlwZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgMjFkMzlkNTk4YzRlNzRkNGU3NzYxNjA4Yzc5ZGJhMjcxNWQ0MGE0YwotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVRodSBEZWMgMjcgMTc6MTI6NDMgMjAwNyArMDEwMAotCi0gICAgQWRkIHByZSBhbmQgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrcyBmb3IgU3BhcnRhbiBGUEdBcwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGEgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIGZvciBTcGFydGFuMi8zIEZQR0FzLgotICAgIHByZSBhbmQgcG9zdCBjb25maWd1cmF0aW9uIGNhbGxiYWNrIGFyZSBub3cgb3B0aW9uYWwgYW5kCi0gICAgbm90IGNhbGxlZCB3aGVuIHRoZSBmdW5jdGlvbiBwb2ludGVyIGlzIHNldCB0byBOVUxMLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCAwMTMzNTAyZTM5ZmY4OWI2N2MyNmNiNDAxNWUwZTdlOGQ5NTcxMTg0Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVGh1IERlYyAyNyAxNzoxMjozNCAyMDA3ICswMTAwCi0KLSAgICBJbXByb3ZlIGNvbmZpZ3VyYXRpb24gb2YgRlBHQSBzdWJzeXN0ZW0KLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgRlBHQSBzdWJzeXN0ZW0gY29uZmlndXJhdGlvbiB0aHJvdWdoCi0gICAgdGhlIENPTkZJR19GUEdBIGJpdG1hc2sgY29uZmlndXJhdGlvbiBvcHRpb24uCi0KLSAgICBTZWUgUkVBRE1FIGZvciB0aGUgbmV3IG9wdGlvbnM6Ci0KLQlDT05GSUdfRlBHQSwKLQlDT05GSUdfRlBHQV88dmVuZG9yPiwKLQlDT05GSUdfRlBHQV88ZmFtaWx5PgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA5NWM2YmM3ZDRhMzU4OGI0NTJiYWNhNjEwZjhjNzk1YTgzNjMwNDc3Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVGh1IERlYyAyNyAxNjo1NToxNyAyMDA3ICswMTAwCi0KLSAgICBBZGQgRXBzb24gUlg4MDI1IFJUQyBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDEyMDhhMmRmZGUwMmJlZGQzYzViZGEyOWE2MDY2MzJiOGUwYmUwNTgKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgRGVjIDI3IDE2OjU3OjIzIDIwMDcgKzAxMDAKLQotICAgIHNlcmlhbDogTWFrZSBkZWZhdWx0X3NlcmlhbF9jb25zb2xlKCkgYSB3ZWFrIGZ1bmN0aW9uCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggaXQgaXMgcG9zc2libGUgdG8gcmVpbXBsZW1lbnQgZGVmYXVsdF9zZXJpYWxfY29uc29sZSgpCi0gICAgaW4gYm9hcmQgc3BlY2lmaWMgY29kZS4gVGhpcyB3aWxsIGJlIGRvbmUgaW4gdGhlIHVwY29tbWluZyBQTUM0NDAKLSAgICBVLUJvb3QgcG9ydC4gVGhpcyBhbHNvIGFsbG93cyB0aGUgbHdtb24gYm9hcmQgbWFpbnRhaW5lciB0bwotICAgIHJlbW92ZSB0aGUgJyNpZiAhZGVmaW5lZChDT05GSUdfTFdNT04pIC4uLicgZnJvbSBjb21tb24vc2VyaWFsLmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGQxNjQ3MWVlMDVjZTdhYzUzOTJiYzBlOWZlM2ZmNGI1OGE3NjhmMzMKLUF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLURhdGU6CVdlZCBEZWMgMTkgMTQ6MTQ6NDcgMjAwNyArMDEwMAotCi0gICAgYWRkICd0ZXJtaW5hbCBwcm9ncmFtJyBmdW5jdGlvbmFsaXR5Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYSAnY3UnIGxpa2Ugc2VyaWFsIHRlcm1pbmFsIGNvbW1hbmQgdG8gdS1ib290Ci0gICAgdXNpbmcgd2hpY2ggeW91IGNhbiBhY2Nlc3Mgb3RoZXIgc2VyaWFsIHBvcnRzIGZyb20gdGhlIHN5c3RlbSBjb25zb2xlLgotCi0gICAgT3Blbk1va28gdXNlcyB0aGlzIGluIHRoZWlyIE5lbzE5NzMgcGhvbmVzIHRvIGdldCBhY2Nlc3MgdG8gdGhlIEdTTQotICAgIE1vZGVtIGFuZCBHUFMgY2hpcCBmcm9tIHRoZSBib290bG9hZGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLQotY29tbWl0IDYyZDRmNDM2NTM0MTU3NmY1YTUzMDdiMmIyMDVhNWFhMmUzYzZiZTYKLUF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLURhdGU6CVdlZCBEZWMgMTkgMTQ6MTI6NTMgMjAwNyArMDEwMAotCi0gICAgUmUtaW50cm9kdWNlIHRoZSAnbmFuZCByZWFkLm9vYicgYW5kICduYW5kIHdyaXRlLm9vYicgY29tbWFuZHMKLSAgICB0aGF0IHVzZWQgdG8gZXhpc3Qgd2l0aCB0aGUgbGVnYWN5IE5BTkQgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLQotY29tbWl0IGY1NDBjNDJkOTU2NDg1NGIxOWNlOWJiYjcwYWZmZTE3MjUyOWZlNzAKLUF1dGhvcjogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLURhdGU6CVdlZCBEZWMgMTkgMTQ6MDk6NTggMjAwNyArMDEwMAotCi0gICAgRml4IGJ1aWxkaW5nIHdpdGggQ1JBTUZTIGJ1dCBub3QgSkZGUzIgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4KLQotY29tbWl0IDIzZDBiYWY5NjdmZWNkYWYxODA0ZjA0NWY2MzM5MzM3YzU2MDdlZWMKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBEZWMgMjIgMTU6NTI6NTggMjAwNyArMDEwMAotCi0gICAgQWxsb3cgQ09ORklHX0FVVE9fQ09NUExFVEUgYW5kIGNvbW1hbmQgaGlzdG9yeSBDT05GSUdfQ01ETElORV9FRElUSU5HIGF0IHRoZSBzYW1ldGltZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAyMzc3NmZmMjkyOTY2YTg1ZDgxMTEyNjkzMzgzMGJlZDQ4MjExODI2Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUdWUgRGVjIDExIDEwOjUzOjEyIDIwMDcgKzAxMDAKLQotICAgIEFSTTogc3VwcG9ydCBib2FyZC1zcGVjaWZpYyBldGhlcm5ldCBQSFkgaW5pdAotCi0gICAgQWRkIHVudGlsIHRoZSBuZXcgcGh5bGliIHdpbGwgYmUgYXJyaXZlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDdiNzRlYmU3MjNlNTc2YmFlZGY1YThiNjI0MDU4OWIxOWI4NDVhMWIKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBEZWMgOCAxNjozNDowOCAyMDA3ICswMTAwCi0KLSAgICBJWFA6IEFkZCBmdWxsIGJhdWQtcmF0ZSBzdXBwb3J0IGZvciBpeHA0MngsIGl4cDQ1eCBhbmQgaXhwNDZ4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYTJkZjRkYTMxYjFhMWU0MWUzZTllMTM1OGNmYzUyYjgwNjA0NmNlMQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIERlYyA5IDExOjAxOjEwIDIwMDcgKzAxMDAKLQotICAgIEFkZCBtaXNzaW5nIGZpbGUgaW4gZ2l0aWdub3JlIGFuZCBjb21tZW50cwotCi0gICAgYmFzZWQgb24gTGludXggc291cmNlIHRyZWUncyAuZ2l0aWdub3JlIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNDM1ZGM4ZmNkYjNiYzYxZDNkNDkwNzczYThmMzY5Zjk4YTIwYzg2OAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEphbiA5IDExOjM2OjIxIDIwMDggKzAxMDAKLQotICAgIENvZGluZyBTdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYjJlMjE0MmM1MDBjNDhhNTdmMThmOWRkMzBlNjZjMTNjYWVhMDk3MQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDkgMTA6Mzg6NTggMjAwOCArMDEwMAotCi0gICAgUE9TVDogRXhlY3V0ZSBTUFIgdGVzdCBhZnRlciByZWxvY2F0aW9uCi0KLSAgICBPbiBMV01PTjUgd2Ugbm93IHVzZSBkLWNhY2hlIGFzIGluaXQtcmFtIGFuZCBzdGFjay4gVGhlIFNQUiBQT1NUIHRlc3QgdXNlcwotICAgIHNlbGYgbW9kaWZ5aW5nIGNvZGUgYW5kIHRoaXMgZG9lc24ndCB3b3JrIHdpdGggc3RhY2sgaW4gZC1jYWNoZSwgc2luY2UKLSAgICBJIGNhbid0IG1vdmUgdGhlIGNvZGUgZnJvbSBkLWNhY2hlIHRvIGktY2FjaGUuIFdlIG1vdmUgdGhlIFNQUiB0ZXN0IHRvCi0gICAgYmUgZXhlY3V0ZWQgYSBsaXR0bGUgbGF0ZXIsIGFmdGVyIHJlbG9jYXRpb24uIFRoZW4gc3RhY2sgaXMgbG9jYXRlZCBpbgotICAgIFNEUkFNIGFuZCB0aGlzIHNlbGYtbW9kaWZ5aW5nIGNvZGUgaXMgbm8gcHJvYmxlbSBhbnltb3JlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGYyNGUwNjM3YWUxMTM1MDBkOGJkNjBkODBkNTdhZmNjMGFhOGJkZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDkgMTA6Mjg6MjAgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBDaGFuZ2UgTFdNT041IHRvIG5vdCB1c2UgT0NNIGZvciBpbml0LXJhbSBhbmQgUE9TVCBhbnltb3JlCi0KLSAgICBUaGlzIHBhdGNoIGNvbmZpZ3VyZXMgdGhlIExXTU9ONSBwb3J0IHRvIHVzZSBkLWNhY2hlIGFzIGluaXQtcmFtIGFuZAotICAgIHRoZSB1bnVzZWQgR1BUMF9DT01QNiBhcyBQT1NUIFdPUkQgc3RvcmFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE3NTRmNTBiNzEwMTk0Zjg4NmI2ZjI4MzE4MDNkODk2MDE3MWExNGQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEphbiA5IDEwOjI1OjQ2IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIENGR19QT1NUX0FMVF9XT1JEX0FERFIgdG8gc3VwcG9ydCBub24gT0NNIFBPU1QgV09SRCBzdG9yYWdlCi0KLSAgICBUaGUgcHJpdmlvdXMgNHh4IFBPU1QgaW1wbGVtZW50YXRpb24gb25seSBzdXBwb3J0ZWQgc3RvcmluZyB0aGUgUE9TVAotICAgIFdPUkQgaW4gT0NNLiBTaW5jZSB3ZSBuZWVkIHRvIHJlc2VydmUgdGhlIE9DTSBvbiBMV01PTjUgZm9yIHRoZSBsb2didWZmZXIKLSAgICB3ZSBuZWVkIHRvIHN0b3JlIHRoZSBQT1NUIFdPUkQgaW4gc29tZSBvdGhlciBub24gdm9sYXRpbGUgbG9jYXRpb24uCi0gICAgVGhpcyBwYXRjaCBhZGRzIENGR19QT1NUX0FMVF9XT1JEX0FERFIgdG8gc3BlY2lmeSBhbiBhZGRyZXNzIGZvciBzdWNoCi0gICAgYSBsb2NhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGUwMmM1MjFkOTRiNDVkN2IwNWFhNTIyZTRjY2RlNmI3NGJmNWZlNTcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEphbiA5IDEwOjIzOjE2IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIDQ0eCBjYWNoZSBsb2NraW5nIHRvIGJldHRlciBzdXBwb3J0IGluaXQtcmFtIGluIGQtY2FjaGUKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBsb2NraW5nIHRoZSBpbml0LXJhbS9zdGFjayBpbiBkLWNhY2hlLAotICAgIHNvIHRoYXQgb3RoZXIgcmVnaW9ucyBtYXkgdXNlIGQtY2FjaGUgYXMgd2VsbAotCi0gICAgTm90ZSwgdGhhdCB0aGlzIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gbG9ja3MgZXhhY3RseSA0ayBvZiBkLWNhY2hlLAotICAgIHNvIHBsZWFzZSBtYWtlIHN1cmUgdGhhdCB5b3UgZG9uJ3QgZGVmaW5lIGEgYmlnZ2VyIGluaXQtcmFtIGFyZWEuIFRha2UKLSAgICBhIGxvb2sgYXQgdGhlIGx3bW9uNSA0NDBFUHggaW1wbGVtZW50YXRpb24gYXMgYSByZWZlcmVuY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwZGRiODk2MDFhOGQyOWU4MDhkYjQ1MDM2Njc1MmZmZGM2MjY3YzUzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDkgMTA6MTY6MzMgMjAwOCArMDEwMAotCi0gICAgRml4IG1lbXNldCBidWcgaW4gZXh0MmZzX3JlYWRfZmlsZSgpCi0KLSAgICBleHQyZnNfcmVhZF9maWxlKCkgaGFkIHRoZSBmdW5jdGlvbiBhcmd1bWVudHMgc3dhcHBlZC4KLQotICAgIFBvaW50ZWQgb3V0IGJ5IE1pa2UgTW9udG91ciwgMTkgRGVjIDIwMDcgMjI6MzQ6MjUgLTA4MDAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAzMmQ2ZjFiYzA5MTc1ZjNiNzc0Njk3NzFlODM5YmM3MjU1YTlmMjJlCi1BdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglUdWUgSmFuIDUgMDg6MTc6MTUgMTk4OCArMDEwMAotCi0gICAgRml4IHByb2JsZW1zIHdpdGggdXNiIHN0b3JhZ2UgZGV2aWNlcyBvbiBNUEM1MjAwIC9UUU01MjAwCi0KLSAgICBUaGUgTVBDNTIwMCBPSENJIGNvbnRyb2xsZXIgb3BlcmF0ZXMgaW4gYmlnIGVuZGlhbiwgc28KLSAgICBDRkdfT0hDSV9CRV9DT05UUk9MTEVSIG11c3QgYmUgZGVmaW5lZCBmb3IgaXQgdG8gd29yayBwcm9wZXJseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCA0NmY2ZTUwMTkwNDhiMTAzZDc2OTNkNTMxMGRlMGYxY2ZiYWY0YzE5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgSmFuIDggMjI6NTg6MjcgMjAwOCArMDEwMAotCi0gICAgRml4IGNvbXBpbGUgcHJvYmxlbSB3aXRoIG5ldyBlbnYgY29kZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2NGIzNzI3Yjk3NzlkODYxMjdjZDU3NmUzOTJhOTg3ZGU1ZWJiOWZkCi1BdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDI3IDEwOjIzOjIwIDIwMDcgKzAxMDAKLQotICAgIHRvb2xzOiBmaXggZndfcHJpbnRlbnYgdG9vbCB0byBjb21waWxlIGFnYWluCi0KLSAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIGZ3X3ByaW50ZW52L2Z3X3NldGVudiB1c2Vyc3BhY2UgdG9vbCB0byBpbmNsdWRlCi0gICAgdGhlIGNvcnJlY3QgTVREIGhlYWRlciBpbiBvcmRlciB0byBjb21waWxlIGFnYWluc3QgY3VycmVudCBrZXJuZWwKLSAgICBoZWFkZXJzLiBCYWNrd2FyZCBjb21wYXRpYmlsaXR5IGlzIHByZXNlcnZlZCBieSBpbnRyb2R1Y2luZyBhbiBvcHRpb24KLSAgICBNVERfVkVSU0lPTiB3aGljaCBjYW4gYmUgc2V0IHRvICJvbGQiIGZvciBjb21waWxhdGlvbiB1c2luZyB0aGUgb2xkIE1URAotICAgIGhlYWRlcnMuIEFsb25nIHdpdGggdGhpcyBhIG51bWJlciBvZiB3YXJuaW5ncyBhcmUgZml4ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgMWY4NDAyMWE4NWFiZWI4MzdkMmNlMGRjODQyOTdiNGYxZDQ1ZDUxNgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBKYW4gOCAxNTo0MDowOSAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IGFzc2lnbiBQQ0kgaW50ZXJydXB0cyBvbiBzZXVxb2lhIGJvYXJkcwotCi0gICAgU29tZSBvcGVyYXRpbmcgc3lzdGVtcyByZWx5IG9uIGFzc2lnbmVkIFBDSSBpbnRlcnJ1cHRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA2ZTkyMzNkMzBhZmU1N2NiNmUxNDhmYmZhNDg5NWU3ODEwMTk2ZmFjCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIEphbiA4IDE1OjUwOjQ5IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogTW92ZSBjcHUvcHBjNHh4L3ZlY251bS5oIGludG8gaW5jbHVkZSBwYXRoCi0KLSAgICBUaGlzIHBhdGNoIGFsbG93cyB0aGUgdXNlIG9mIDR4eCBpbnRlcnJ1cHQgdmVjdG9yIG51bWJlciBkZWZpbmVzCi0gICAgaW4gYm9hcmQgc3BlY2lmaWMgY29kZSBvdXRzaWRlIGNwdS9wcGM0eHguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDU4MGQxZDMxODZhMmJjNmRiZGI2MjY5NDFiNzE2ZGFlMTc4OGU1MWUKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgSmFuIDggMTU6Mzk6MDEgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggVUlDMiB2ZWN0b3IgbnVtYmVyIGJhc2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgZmY1ZmI4YTZjY2JhNTZlMzQ4MmQwZTI5N2Q4Y2ZiN2ZhYTA0MDgxMQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBKYW4gOCAxMjo0OTo1OCAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBQTEIvUENJIGRpdmlkZXIgZm9yIFBNQzQ0MCBib2FyZAotCi0gICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBQTEIvUENJIGRpdmlkZXIgd2hlbiBydW5uaW5nIGF0Ci0gICAgNDAwTUh6IENQVSBmcmVxdWVuY3kgZnJvbSA0IHRvIDMgd2hpY2ggcmVzdWx0cyBpbiA0NE1IeiBQQ0kgc3luYyBjbG9jay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgN2Q1ZDc1NjMzMTc0ODY3MzE2YTBjMGYyZmNhNWNlYjJjZjMxMmNkZQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBKYW4gOCAxMToxMzowOSAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IERpc2FibGUgZXJyb3IgbWVzc2FnZSB3aGVuIG5vIE5BTkQgY2hpcCBpcyBpbnN0YWxsZWQgb24gUE1DNDQwCi0KLSAgICBBZGQgQ0ZHX05BTkRfUVVJRVRfVEVTVCBvcHRpb24gdG8gZGlzYWJsZSBlcnJvciBtZXNzYWdlIHdoZW4KLSAgICBubyBOQU5EIGNoaXAgaXMgaW5zdGFsbGVkIG9uIFBNQzQ0MCBib2FyZHMuCi0KLSAgICBEaXNhYmxlIGEgY291cGxlIG9mIGNvbmZpZyBkZWZpbmVzIHRoYXQgYXJlIG9ubHkgdXNlZCBmb3IgTkFORF9VX0JPT1QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGM4M2Q3Y2E0ZGFkZDQ0YWU0MzAyMzUwNzdmNjNiNjRhMTFmMzZmNmUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gOCAyMjo1ODoyNyAyMDA4ICswMTAwCi0KLSAgICBGaXggY29tcGlsZSBwcm9ibGVtIHdpdGggbmV3IGVudiBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZkZTY2YjM1NDI2MzEyYTIxMTc0YTliZjA1NzZhMDk0ZTI5MDRiZWEKLUF1dGhvcjogTWFya3VzIEtsb3R6YsO8Y2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVR1ZSBOb3YgMjcgMTA6MjM6MjAgMjAwNyArMDEwMAotCi0gICAgdG9vbHM6IGZpeCBmd19wcmludGVudiB0b29sIHRvIGNvbXBpbGUgYWdhaW4KLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyB0aGUgZndfcHJpbnRlbnYvZndfc2V0ZW52IHVzZXJzcGFjZSB0b29sIHRvIGluY2x1ZGUKLSAgICB0aGUgY29ycmVjdCBNVEQgaGVhZGVyIGluIG9yZGVyIHRvIGNvbXBpbGUgYWdhaW5zdCBjdXJyZW50IGtlcm5lbAotICAgIGhlYWRlcnMuIEJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXMgcHJlc2VydmVkIGJ5IGludHJvZHVjaW5nIGFuIG9wdGlvbgotICAgIE1URF9WRVJTSU9OIHdoaWNoIGNhbiBiZSBzZXQgdG8gIm9sZCIgZm9yIGNvbXBpbGF0aW9uIHVzaW5nIHRoZSBvbGQgTVRECi0gICAgaGVhZGVycy4gQWxvbmcgd2l0aCB0aGlzIGEgbnVtYmVyIG9mIHdhcm5pbmdzIGFyZSBmaXhlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBhZDMwMDZmZTdlODQ2NjcwMjE3NTNiNzQyNDdiMGJhZmQ5N2JhMzVmCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglNb24gSmFuIDcgMjM6NDc6MzIgMjAwOCAtMDUwMAotCi0gICAgTElCRkRUOiB1c2UgbWVtbW92ZSgpIGluc3RlYWQgb2YgbWVtY3B5KCkKLQotICAgIFRoaXMgaXMgcGFydGlhbCBwYXRjaCBmcm9tIHRoZSBEVEMvbGliZmR0Ci0gICAgY29tbWl0ICA2N2I2YjMzYjliNDEzYTQ1MGE3MjEzNWI1ZGM1OWMwYTFlMzNlNjQ3Ci0gICAgQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLSAgICBEYXRlOiAgIFdlZCBOb3YgMjEgMTE6NTY6MTQgMjAwNyArMTEwMAotCi0JVGhlIHBhdGNoIGFsc28gZml4ZXMgb25lIGdlbnVpbmUgYnVnIGNhdWdodCBieSB2YWxncmluZCAtCi0JX3BhY2tibG9ja3MoKSBpbiBmZHRfcncuYyB3YXMgdXNpbmcgbWVtY3B5KCkgd2hlcmUgaXQgc2hvdWxkIGhhdmUgYmVlbgotCXVzaW5nIG1lbW1vdmUoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCBhZWM3MTM1YmMzMDBlMzM0MGQxOGYyMDMzNDdlZTAwYzViNWY2OGMwCi1BdXRob3I6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotRGF0ZToJTW9uIERlYyAxNyAxNDo0MjowNyAyMDA3ICsxMTAwCi0KLSAgICBsaWJmZHQ6IEFkZCBtb3JlIGRvY3VtZW50YXRpb24gKHBhdGNoIHRoZSBzZXZlbnRoKQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIG1vcmUgZG9jdW1lbnRpbmcgY29tbWVudHMgdG8gbGliZmR0LmguICBTcGVjaWZpY2FsbHksCi0gICAgdGhlc2UgZG9jdW1lbnQgdGhlIHJlYWQvd3JpdGUgZnVuY3Rpb25zIChub3QgaW5jbHVkaW5nIGZkdF9vcGVuX2ludG8oKQotICAgIGFuZCBmZHRfcGFjaygpLCBmb3Igbm93KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotCi1jb21taXQgOWQ0NDUwYjVhZGMzNjYyM2U5YzFkZTFmOTI1MzlkYjc3YWQwYzU3ZQotQXV0aG9yOiBEYXZpZCBHaWJzb24gPGRhdmlkQGdpYnNvbi5kcm9wYmVhci5pZC5hdT4KLURhdGU6CU1vbiBEZWMgMTcgMTQ6NDE6NTIgMjAwNyArMTEwMAotCi0gICAgbGliZmR0OiBBZGQgbW9yZSBkb2N1bWVudGF0aW9uIChwYXRjaCB0aGUgc2l4dGgpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc29tZSBtb3JlIGRvY3VtZW50aW5nIGNvbW1lbnRzIHRvIGxpYmZkdC5oLgotICAgIFNwZWNpZmljYWxseSB0aGlzIGRvY3VtZW50cyBhbGwgdGhlIHdyaXRlLWluLXBsYWNlIGZ1bmN0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIEdpYnNvbiA8ZGF2aWRAZ2lic29uLmRyb3BiZWFyLmlkLmF1PgotCi1jb21taXQgYjYwYWYzZDRjMTY4MDQ4N2VlMzdlMTFhYTFiM2RiNmRlYzA0ZDhmMAotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJU2F0IERlYyAyOSAyMjo0NToyNyAyMDA3IC0wNTAwCi0KLSAgICBGaW5lIGdyYWluZWQgcGVyIHByb3BlcnR5IC9jaG9zZW4gdXBkYXRpbmcuCi0KLSAgICBJbXBsZW1lbnQgYSBzdWdnZXN0aW9uIGJ5IFNjb3R0IFdvb2QgdG8gbWFrZSB0aGUgL2Nob3NlbiBoYW5kbGluZyBmaW5lCi0gICAgZ3JhaW5lZC4gIERvbid0IG92ZXJ3cml0ZSBwcmUtZXhpc3RpbmcgcHJvcGVydGllcyBvbiBhIHBlci1wcm9wZXJ0eSBiYXNpcywKLSAgICBzbyBpZiAvY2hvc2VuIGV4aXN0cyBidXQgYSBuZWNlc3NhcnkgL2Nob3Nlbi9wcm9wZXJ0eSBkb2Vzbid0LCBpdCBnZXRzCi0gICAgY3JlYXRlZC4gIElmIGEgL2Nob3NlbiBwcm9wZXJ0eSBleGlzdHMsIGl0IGlzIE5PVCBvdmVyd3JpdHRlbiB1bmxlc3MgdGhlCi0gICAgImZvcmNlIiBmbGFnIGlzIHRydWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgMjM4Y2I3YTQyM2M2ZWFhMzY0OTZlZmI3ODhjZmI5Nzk4Y2VhN2Y5NQotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJU2F0IEphbiA1IDE1OjMzOjI5IDIwMDggLTA1MDAKLQotICAgIEltcHJvdmUgdGhlIEZEVCBoZWxwIG1lc3NhZ2UuCi0KLSAgICBBZGQgYSBub3RlIHRoYXQgImZkdCBjb3B5IiBtYWtlcyB0aGUgbmV3IGFkZHJlc3MgYWN0aXZlLgotICAgIFJlbW92ZSBtb3N0IG9mIHRoZSBleHRyYSBoaW50cyBhdCB0aGUgZW5kIG9mIHRoZSBmZHQgaGVscC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCBlYTZkOGJlMTUzY2VhZjE2OTU4ZjgwMDljZWE2ZDc1ZjNmZjU4ZDkyCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglTYXQgSmFuIDUgMTQ6NTI6MDQgMjAwOCAtMDUwMAotCi0gICAgU3VwcG9ydCBzZXR0aW5nIEZEVCBwcm9wZXJ0aWVzIHdpdGggb3B0aW9uYWwgdmFsdWVzLgotCi0gICAgRml4IGEgYnVnIGZvdW5kIGFuZCBkb2N1bWVudGVkIGJ5IEJhcnRsb21pZWogU2lla2Egd2hlcmUgdGhlIG9wdGlvbmFsCi0gICAgdmFsdWUgb24gImZkdCBzZXQgPHBhdGg+IDxwcm9wPiBbPHZhbD5dIiB3YXNuJ3Qgb3B0aW9uYWwuCi0KLSAgICA9PiBmZHQgbWtub2RlIC8gdGVzdG5vZGUKLSAgICA9PiBmZHQgcHJpbnQgL3Rlc3Rub2RlCi0gICAgdGVzdG5vZGUgewotICAgIH07Ci0gICAgPT4gZmR0IHNldCAvdGVzdG5vZGUgdGVzdHByb3AKLSAgICA9PiBmZHQgcHJpbnQgL3Rlc3Rub2RlCi0gICAgdGVzdG5vZGUgewotCSAgICB0ZXN0cHJvcDsKLSAgICB9OwotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDIyZmIyMjQ2ZGY5MWJmYzg0MGQ4N2YwYzU5MTA4MThiYWQ1NTU3N2EKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgRGVjIDI4IDExOjU2OjMwIDIwMDcgKzAxMDAKLQotICAgIEFkZCBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIHRvIGZkdF9zdXBwb3J0LmgKLQotICAgIGZkdF9maW5kX2FuZF9zZXRwcm9wKCkgaXMgdXNlZCBieSBzZXZlcmFsIDR4eCBib2FyZHMgYW5kIGl0J3MKLSAgICBtaXNzaW5nIGluIHRoZSBhcHByb3ByaWF0ZSBoZWFkZXIuIFRoaXMgcGF0Y2ggZWxpbWluYXRlcyBhCi0gICAgd2FybmluZyB3aGVuIGJ1aWxkaW5nIFUtQm9vdCBmb3Igc3VjaCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODAyYjc2OWJhYzE3YjA1NjBkMzUzNWE0MmM1MDI0NjllZTE5MGNkMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSmFuIDggMTg6Mzk6MzAgMjAwOCArMDEwMAotCi0gICAgcHBjNHh4OiBSZXR1cm4gMCBvbiBzdWNjZXNzIGluIDR4eCBldGhlcm5ldCBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDY3NzVjNjg2ODNhNTNjN2FiYzc3ODc3NDY0MWFhYzZmODMzYTJjYmYKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gOCAwOTo1OTo0OSAyMDA4IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBmaXggbWlzc2VkIHBjaV9ob3NlIC0+IGhvc2UgY29udmVyc2lvbiBmb3IgbmV3IGxpYmZkdCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTRmYWIyNWY1ZjFhN2QxYzBjYzYzYzE3ZTgxM2VhODk0M2ZlNDljNwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IERlYyAyMCAxNjoyODozNCAyMDA3IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBybSByZW1haW5pbmcgRkxBVF9UUkVFIGNvZGUKLQotICAgIC4uaW4gYm9hcmQgcGNpLmMgZmlsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiMzQ1OGQyY2Q1NWQwMTczMmUzMGE3NmQ4OThhZmQ5OWU4NzFjZDY3Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgRGVjIDIwIDE1OjU3OjI4IDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IHJlbW92ZSBGTEFUX1RSRUUgY29kZQotCi0gICAgbmVlZCB0byBybSBpdCBmcm9tIHBjaSBjb2RlLCB0b28hCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWI4YmM2MDZjNjE0NTY1NjZhZjY5MTJmODE4YTE1M2I2YjA2ZjI0MgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IERlYyAyMCAxNDowOToyMiAyMDA3IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBjb252ZXJ0IHRvIHVzaW5nIGRvX2ZpeHVwXyooKQotCi0gICAgY29udmVydCB0byB1c2luZyBzaW1wbGVyIG1wYzg1eHggc3R5bGUgZmR0IHVwZGF0ZSBjb2RlOyBzdHJlYW1saW5lIGJ5Ci0gICAgZWxpbWluYXRpbmcgbWFjcm9zIE9GX1NPQywgT0ZfQ1BVLCBldGMuIHdoaWNoIGFsbG93cyB1cyB0byBybQotICAgIHRoZSBvbGQgc2Nob29sIEZMQVRfVFJFRSBjb2RlIGZyb20gODN4eCAoc2luY2UgdGhlIHNiYzgzNDkgd2FzIGp1c3QKLSAgICBjb252ZXJ0ZWQgb3ZlciB0byB1c2luZyBsaWJmZHQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU0OTY4NjVlY2MzMWEyZmUyZjlhYmZlNzk4MzM0YmIwMmFhZjA1YWIKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglUaHUgRGVjIDIwIDEyOjU4OjUxIDIwMDcgLTA1MDAKLQotICAgIHNiYzgzNDk6IGVuYWJsZSBsaWJmZHQgYnkgZGVmYXVsdCBvbiBXUlMgU0JDODM0OSBib2FyZC4KLQotICAgIE1ha2UgbGliZmR0IHRoZSBkZWZhdWx0IGZvciB0aGUgV1JTIFNCQzgzNDkgYm9hcmQuCi0gICAgUGFyYWxsZWwgb2YgY29tbWl0IDM1Y2M0ZTQ4MjM2NjhlODc0NTg1NDg5OWNmYWVkZDQ0ODliZWIwZWYKLSAgICBkb25lIGZvciB0aGUgb3RoZXIgODN4eCBiYXNlZCBib2FyZHMuICBBbHNvIGZpeCBhIHR5cG8gaW4gQ09ORklHX1BDSS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgMjQwOGIzZjIwYmNiZGQ5YzZjMzk3Y2QwM2FiMGQ3MWQ1NDY4MGE0MAotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CVRodSBEZWMgMjAgMTI6NTg6MTYgMjAwNyAtMDUwMAotCi0gICAgc2JjODM0OTogbWlncmF0ZSBib2FyZCB0byBsaWJmZHQKLQotICAgIFRoaXMgYWRkcyBsaWJmZHQgc3VwcG9ydCBjb2RlIGZvciB0aGUgV2luZCBSaXZlciBzYmM4MzQ5IGJvYXJkLgotCi0gICAgUGFyYWxsZWwgb2YgY29tbWl0IDNmZGU5ZThiMjJjZmJkN2FmNDg5MjE0NzU4Zjk4MzlhMjA2NTc2Y2IgZm9yCi0gICAgdGhlIG90aGVyIEZyZWVzY2FsZSA4M3h4IGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBhdWwgR29ydG1ha2VyIDxwYXVsLmdvcnRtYWtlckB3aW5kcml2ZXIuY29tPgotCi1jb21taXQgMjdhMjU2YTkwY2M4NjM5MmFjOWJmMDAzOWEzYWZlNjM4ZWMyYzE4ZAotQXV0aG9yOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLURhdGU6CVRodSBEZWMgMjAgMTI6NTY6MTkgMjAwNyAtMDUwMAotCi0gICAgc2JjODM0OTogUmVtb3ZlIGJvYXJkIHNwZWNpZmljIEVDQyBjb2RlCi0KLSAgICBFQ0MgY29kZSBpcyBub3cgc2hhcmVkIGZvciBhbGwgODN4eCBib2FyZHMsIHNvIHJlbW92ZSBib2FyZCBzcGVjaWZpYyBvbmUuCi0gICAgU2VlIGNvbW1pdCBkYWFiOGM2N2QyZGVmZWY3M2RjMjZhYjA3ZjBjM2FmZDFiMDVkMDE5IGZvciByZWZlcmVuY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLQotY29tbWl0IGExZTFhYzg0OTI0OTMxMGU1ZTJlNWM3MTQ4ZTlmYjM1M2E4MzE3YTcKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBEZWMgMjAgMDE6MzA6NDggMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogUmVtb3ZlIENPTkZJRyBvcHRpb25zIHJlbGF0ZWQgdG8gT0YgdGhhdCB3ZSBkb250IHVzZSAob24gODM3eCkKLQotICAgIGNvbnRpbnVhdGlvbiBvZiBjb21taXQgMzczOTVmYTJiMGQ5ZDYxN2YyOGQ0NGNhMTE1OTIyNjBlZjE2MTA1YSB0byA4Mzd4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2NmMjFjMzExZTY4ZDQ4Mzk5ZWZmMWU3MjkzNjA1Mjg4NWY2ZTNmNwotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVRodSBEZWMgNiAxNjo0Mzo0MCAyMDA3ICswMTAwCi0KLSAgICBBZGQgc3VwcG9ydCBDT05GSUdfVUVDX0VUSDMgaW4gTVBDODN4eAotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9ha2ltIFRqZXJubHVuZCA8Sm9ha2ltLlRqZXJubHVuZEB0cmFuc21vZGUuc2U+Ci0KLWNvbW1pdCBlNmFmOTkzMmQzMTE3MWUzNWRiODgwZTdiMmYyOWY5MDNiMWI3NjYwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gTm92IDI2IDExOjAwOjU0IDIwMDcgLTA2MDAKLQotICAgIFJlbW92ZSBDT05GSUcgb3B0aW9ucyByZWxhdGVkIHRvIE9GIHRoYXQgd2UgZG9udCB1c2UKLQotICAgIFRoZSBNUEM4MzYwRSBNRFMgY29uZmlnIGRlZmluZWQ6Ci0JQ09ORklHX09GX0hBU19CRF9UCi0JQ09ORklHX09GX0hBU19VQk9PVF9FTlYKLQotICAgIFdoaWNoIHdlIGRvbid0IHVzZSBvciBldmVyIG5lZWRlZC4JVGhpcyBzZWVtcyBsaWtlIGNvcHktcGFzdGUgZmVhdHVyZSBjcmVlcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmNjAyMDgyYjRiN2VkNGVlMTY0MzIwNjdjYzY3YTBhMjRmZWRjNzE1Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gRGVjIDEwIDE0OjE2OjIyIDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IHN1cHJlc3MgY29tcGlsZXIgd2FybmluZwotCi0gICAgbXBjODM2MGVtZHMuYzogSW4gZnVuY3Rpb24g4oCYZnRfYm9hcmRfc2V0dXDigJk6Ci0gICAgbXBjODM2MGVtZHMuYzozMzU6IHdhcm5pbmc6IGFzc2lnbm1lbnQgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKLSAgICBtcGM4MzYwZW1kcy5jOjM0NTogd2FybmluZzogYXNzaWdubWVudCBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGMxNmU0NGZhODM1ZmI5ZWVjOTgyZDkxOTg2M2EwNGUyZjc4ZTVjZTcKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjcgMTQ6MTc6MjkgMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogZml4IHJlbWFpbmluZyBmZHRfZmluZF9ub2RlX2J5X3BhdGggcmVmZXJlbmNlcwotCi0gICAgcmVuYW1lIHRvIGZkdF9wYXRoX29mZnNldAotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkyMWQ0YjE5YWQxYmU3MDRkZjU4NzI1NDg1ZDkyOTJkYzA0MTRhZGYKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBOb3YgMTkgMTI6MzA6MDkgMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogZml4IENGR19FTlZfQUREUiBhbmQgQ0ZHX0VOVl9TRUNUX1NJWkUgZGVmaW5pdGlvbnMgZm9yIDgzN3gKLQotICAgIEZpeCB0aGUgZGVmaW5pdGlvbnMgb2YgQ0ZHX0VOVl9BRERSIGFuZCBDRkdfRU5WX1NFQ1RfU0laRSBmb3IgODM3eC4KLSAgICBUaGlzIGNoYW5nZSBndWFyYW50ZWVzIHRoYXQgdGhlIGVudmlyb25tZW50IHdpbGwgYmUgbG9jYXRlZCBvbiB0aGUKLSAgICBmaXJzdCBmbGFzaCBzZWN0b3IgYWZ0ZXIgdGhlIFUtQm9vdCBpbWFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNGY4Njg0MzNiNTBlY2JhYTg4ZTExOGFhZGM3YmQyNTQwMTNjNmFlCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDkgMTQ6Mjg6MDggMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogbXBjODM2MCByZXYuMi4xIGVycmF0dW0gMjogcmVwbGFjZSByZ21paS1pZCB3aXRoIHJnbWlpLXJ4aWQKLQotICAgIHUtYm9vdCBpdHNlbGYgdXNlcyBHTUlJIG1vZGUgb24gdGhlIDgzNjAuICBGaXggdXAgVUNDIHBoeS1jb25uZWN0aW9uLXR5cGUKLSAgICBwcm9wZXJ0aWVzIGluIHRoZSBkZXZpY2UgdHJlZSBzbyB0aGUgUEhZIGdldHMgY29uZmlndXJlZCBmb3IgaW50ZXJuYWwgZGVsYXkgb24KLSAgICBSWCBvbmx5IGJ5IHRoZSBPUywgYXMgcHJlc2NyaWJlZCBieSBtcGM4MzYwIHJldi4gMi4xIHBiIG1kcyBlcnJhdHVtICMyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDIyYjQ0OGRiZmJlMmE5OGYwMWZmNGFkYzNjMzk3OWY4YzU0MWFkN2IKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIFNlcCAxOCAxMjo0MToxNSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiB1cGRhdGUgdGhlIENSRURJVFMgYW5kIE1BSU5UQUlORVJTCi0KLSAgICB1cGRhdGUgdGhlIENSRURJVFMgYW5kIE1BSU5UQUlORVJTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGIyMWFkZDRiNDJhZjdiNzY3NDQ4MjUxYjU5OWI5MTA2NmExNjBlMGQKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIFNlcCAxOCAxMjo0MDoyMSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBhZGQgTUFJTlRBSU5FUiBhbmQgTUFLRUFMTCBlbnRyaWVzIGZvciB0aGUgbXBjODM3eGVtZHMKLQotICAgIEFkZCB0aGUgTUFJTlRBSU5FUiBhbmQgTUFLRUFMTCBlbnRyaWVzIGZvciBtcGM4Mzd4ZW1kcwotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGY4OTAwY2U5MDk0YzQ2MjM1NWViNzkyZWVhMjY0ZmYxNmFjOGZkMTYKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIFNlcCAxOCAxMjozODo1MyAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBBZGQgdGhlIE1QQzgzN3hFTURTIGJvYXJkIHJlYWRtZQotCi0gICAgQWRkIHRoZSBSRUFETUUubXBjODM3eGVtZHMgdG8gL2RvYwotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE5NTgwZTY2MGNjOGRhNDlmMTY1MzZhOGJkNzhjMDQ3YzdiYzEyZTUKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIFNlcCAxOCAxMjozNzo1NyAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBBZGQgdGhlIHN1cHBvcnQgb2YgTVBDODM3eEVNRFMgYm9hcmQKLQotICAgIFRoZSBNUEM4Mzd4RU1EUyBib2FyZCBzdXBwb3J0OgotICAgICogRERSMiA0MDBNSHogaGFyZGNvZGVkIGFuZCBTUEQgaW5pdAotICAgICogTG9jYWwgYnVzIE5PUiBGbGFzaAotICAgICogSTJDLCBVQVJULCBNSUkgYW5kIFJUQwotICAgICogZVRTRUMgUkdNSUkKLSAgICAqIFBDSSBob3N0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTU1ZGE2MTcwMjc3MWZlMGY3NmYzZGUyM2I0ZTc1OTBmMzcwNDE2MQotQXV0aG9yOiBEYXZlIExpdSA8cjYzMjM4QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgU2VwIDE4IDEyOjM2OjU4IDIwMDcgKzA4MDAKLQotICAgIG1wYzgzeHg6IEFkZCB0aGUgc3VwcG9ydCBvZiBNUEM4MzE1RSBTb0MKLQotICAgIFRoZSBNUEM4MzE1RSBTb0MgaW5jbHVkaW5nIGUzMDBjMyBjb3JlIGFuZCBuZXcgSVAgYmxvY2tzLAotICAgIHN1Y2ggYXMgVERNLCBQQ0kgRXhwcmVzcyBhbmQgU0FUQSBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDAzMDUxYzNkMzVjOTk4MWNlYWEwNTkwMDU2NjBlNjk5ZjNlYWNmMWMKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIFNlcCAxOCAxMjozNjoxMSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBBZGQgdGhlIHN1cHBvcnQgb2YgTVBDODM3eCBTb0MKLQotICAgIFRoZSBNUEM4Mzd4IFNvQyBpbmNsdWRpbmcgZTMwMGM0IGNvcmUgYW5kIG5ldyBJUCBibG9ja3MsCi0gICAgc3VjaCBhcyBTREhDLCBQQ0kgRXhwcmVzcyBhbmQgU0FUQSBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDY1MWQ5NmY3ZTRjODRhZGNkYjk4ZWYwN2VjODc4YzIwMzI2ZTMzNTkKLUF1dGhvcjogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci1EYXRlOglXZWQgTm92IDE0IDE4OjU0OjUzIDIwMDcgKzAzMDAKLQotICAgIE1QQzgzNjBFLU1EUzogY29uZmlndXJlIGFuZCBlbmFibGUgc2Vjb25kIFVBUlQKLQotICAgIERlc3BpdGUgdXNlciBtYW51YWwsIEJDU1I5LjcgaXMgbmVnYXRlZCAoaGlnaCkgb24gSFJTVCwgc28KLSAgICBVQVJUMiBpcyBkaXNhYmxlZC4gRml4IHRoYXQgYW5kIGNvbmZpZ3VyZSBRRSBwaW5zIHByb3Blcmx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW50b24gVm9yb250c292IDxhdm9yb250c292QHJ1Lm12aXN0YS5jb20+Ci0KLWNvbW1pdCBiMjg5M2UxZmNiMjhmYWQ4YzhiMzE3MTA0ZGY4Y2VlMDE0MmM3NjMxCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gTm92IDUgMDk6MzQ6MDYgMjAwNyAtMDYwMAotCi0gICAgODN4eDogZml4IENGR19FTlZfQUREUiBhbmQgQ0ZHX0VOVl9TRUNUX1NJWkUgZGVmaW5pdGlvbnMKLQotICAgIEZpeCB0aGUgZGVmaW5pdGlvbnMgb2YgQ0ZHX0VOVl9BRERSIGFuZCBDRkdfRU5WX1NFQ1RfU0laRSBmb3IgYWxsIG9mIHRoZQotICAgIGN1cnJlbnRseS1kZWZpbmVkIDgzeHggYm9hcmRzLiAgVGhpcyBjaGFuZ2UgZ3VhcmFudGVlcyB0aGF0IHRoZSBlbnZpcm9ubWVudAotICAgIHdpbGwgYmUgbG9jYXRlZCBvbiB0aGUgZmlyc3QgZmxhc2ggc2VjdG9yIGFmdGVyIHRoZSBVLUJvb3QgaW1hZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlMDUzMjk1MTZhMTM2MTZiNTMyNDBjZDg1YjczOTIxN2MyYmY4N2YxCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotRGF0ZToJRnJpIEphbiA0IDEzOjI3OjAyIDIwMDggLTA1MDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIHdlYWsgYmluZGluZyBmcm9tIGNvbW1vbiBEZW5hbGkgZGF0YS1leWUgc2VhcmNoIGNvZGUKLQotICAgIE5vdyB0aGF0IHRoZXJlIGFyZSBubyBib2FyZC1zcGVjaWZpYyB2ZXJzaW9ucyBvZgotICAgICJkZW5hbGlfY29yZV9zZWFyY2hfZGF0YV9leWUoKSIsIHRoZSB3ZWFrIGJpbmRpbmcgb24gdGhlIGNvbW1vbiB2ZXJzaW9uCi0gICAgY2FuIGJlIHJlbW92ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IDViYTU3NmMwMTYwMmZkMzI4ODAwYTQyNzk2NGMzNmEwYTA1YzVkY2UKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEphbiA1IDA5OjEzOjQ2IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIHVudXNlZCBDT05GSUdfRUNDX0VSUk9SX1JFU0VUIGZyb20gNDR4X3NwZF9kZHIyLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg0NWM2Yzk1ZGJmZTZjOTE1Y2U2OGEwYTExNTg1MmZhMTc5MzJmYjQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEphbiA1IDA5OjEyOjQxIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEthdG1haS80NHhfc3BkX2RkcjIuYyBjb2RlIGZvciBvcHRpbWFsIEREUjIgc2V0dXAKLQotICAgIE9uIEthdG1haSB0aGUgY29tcGxldGUgYXV0by1jYWxpYnJhdGlvbiBzb21laG93IGRvZXNuJ3Qgc2VlbSB0bwotICAgIHByb2R1Y2UgdGhlIGJlc3QgcmVzdWx0cywgbWVhbmluZyBvcHRpbWFsIHZhbHVlcyBmb3IgUlFGRC9SRkZELgotICAgIFRoaXMgd2FzIGRpc2NvdmVyZWQgYnkgR0RBIHVzaW5nIGEgaGlnaCBiYW5kd2lkdGggc2NvcGUsCi0gICAgYW5hbHl6aW5nIHRoZSBERFIyIHNpZ25hbHMuIEdEQSBwcm92aWRlZCBhIGZpeGVkIHZhbHVlIGZvciBSUUZELAotICAgIHNvIG5vdyBvbiBLYXRtYWkgIm9ubHkiIFJGRkQgaXMgYXV0by1jYWxpYnJhdGVkLgotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgUkRDQyBjYWxpYnJhdGlvbiBhcyBtZW50aW9uZWQgb24gcGFnZSA3IG9mCi0gICAgdGhlIEFNQ0MgUG93ZXJQQzQ0MFNQL1NQZSBERFIyIGFwcGxpY2F0aW9uIG5vdGU6Ci0gICAgIkREUjEvRERSMiBJbml0aWFsaXphdGlvbiBTZXF1ZW5jZSBhbmQgRHluYW1pYyBUdW5pbmciCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0OWRiNDdiOGFlNmFmZmYyYjg5OGJlMzEyOTQ4ZmY1MDEzNTdkYzgwCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIEphbiAyIDE2OjQ4OjQyIDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIHNkcmFtLmggZnJvbSBQTUM0NDAgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgMzQwNjVhMmNlMGQ4OTcyZjJlYzY2NTIwNzYwMTRhYjI0M2QyY2U4YQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVdlZCBKYW4gMiAxNjo0ODozNCAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IHVzZSBjb21tb24gZGVuYWxpIGNvcmUgZGVmaW5lcyBhbmQgZGF0YSBleWUgc2VhcmNoIGNvZGUgZm9yIFBNQzQ0MAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA5YWM2YjZmM2QzZjFiMDcyZDg5MjY4YjJlZmU0N2U5NWU2NjU5NDg5Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIEphbiAyIDEyOjA1OjE0IDIwMDggKzAxMDAKLQotICAgIHBwYzR4eDogTW9yZSBjbGVhbnVwIGZvciBlc2QncyBMQ0QgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBmZTljMjZiMzMwYTIxY2U3M2U1MmI1YmQzNDdkNzI1Y2I4MWUzY2ZiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gNCAxMjowMDowMSAyMDA4ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCBTZXF1b2lhIE5BTkQgYm9vdGluZyB0YXJnZXQKLQotICAgIFRoZSBTZXF1b2lhIE5BTkQgYm9vdGluZyB0YXJnZXQgbm93IHVzZXMgdGhlIHJlY2VudGx5IGV4dHJhY3RlZAotICAgIGNwdS9wcGM0eHgvZGVuYWxpX2RhdGFfZXllLmMgZmlsZSB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwZGRkOTY5YWVjNTMyYmQ3ZWFlMzBmYzA5NTkwNDg4YTNhYWE2MjlhCi1BdXRob3I6IExhd3JlbmNlIFIuIEpvaG5zb24gPGxyakBhY20ub3JnPgotRGF0ZToJVGh1IEphbiAzIDE1OjAyOjAyIDIwMDggLTA1MDAKLQotICAgIHBwYzR4eDogVXNlIENGR180eHhfR1BJT19UQUJMRSB0byBjb25maWd1cmUgS29yYXQgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgYjA1ZThiZjU4YmU5ZDg5NTZmZGZkZTNkOGM4ZTg3YzE0MDQxNDY2MwotQXV0aG9yOiBMYXdyZW5jZSBSLiBKb2huc29uIDxscmpAYWNtLm9yZz4KLURhdGU6CUZyaSBKYW4gNCAwMjoxMTo1NiAyMDA4IC0wNTAwCi0KLSAgICBwcGM0eHg6IFVzZSBDRkdfNHh4X0dQSU9fVEFCTEUgdG8gY29uZmlndXJlIFNlcXVvaWEgYm9hcmQKLQotICAgIE5vdGU6IHRoaXMgcGF0Y2ggY2hhbmdlcyB0aGUgY29uZmlndXJhdGlvbiBvZiBzb21lIEdQSU8gcmVnaXN0ZXJzOgotCi0gICAgICAgUmVnaXN0ZXIgICAgICBPbGQgVmFsdWUJIE5ldyBWYWx1ZQotICAgIC0tLS0tLS0tLS0tLS0tLSAgLS0tLS0tLS0tLSAgLS0tLS0tLS0tLQotICAgIERDUiBHUElPMF9UQ1IgICAgMHgwMDAwMDAwRiAgMHgwMDAwRjBDRgotICAgIERDUiBHUElPMF9UU1JIICAgMHg1NTAwNTAwMCAgMHgwMDAwMDAwMAotICAgIERDUiBHUElPMV9UQ1IgICAgMHhDMjAwMDAwMCAgMHhFMjAwMDAwMAotICAgIERDUiBHUElPMV9UU1JMICAgMHgwQzAwMDAwMCAgMHgwMDIwMDAwMAotICAgIERDUiBHUElPMV9JU1IyTCAgMHgwMDA1MDAwMCAgMHgwMDExMDAwMAotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCA1YWI4ODRiMjU0Y2EyZTcwN2FiNTA1NDVjZDcwNWYzMDEwOGNmNDkxCi1BdXRob3I6IExhd3JlbmNlIFIuIEpvaG5zb24gPGxyakBhY20ub3JnPgotRGF0ZToJVGh1IEphbiAzIDE4OjU0OjAwIDIwMDggLTA1MDAKLQotICAgIHBwYzR4eDogQWRkIGZ1bmN0aW9uYWxpdHkgdG8gR1BJTyBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIHR3byBhZGRpdGlvbnMgdG8gR1BJTyBzdXBwb3J0OgotCi0gICAgRmlyc3QsIGl0IGFkZHMgZnVuY3Rpb24gZ3Bpb19yZWFkX2luX2JpdCgpIHRvIHJlYWQgdGhlIGEgYml0IGZyb20gdGhlCi0gICAgR1BJTyBJbnB1dCBSZWdpc3RlciAoR1BJT3hfSVIpIGluIHRoZSBzYW1lIHdheSB0aGF0IGZ1bmN0aW9uCi0gICAgZ3Bpb19yZWFkX291dF9iaXQoKSByZWFkcyBhIGJpdCBmcm9tIHRoZSBHUElPIE91dHB1dCBSZWdpc3RlcgotICAgIChHUElPeF9PUikuCi0KLSAgICBTZWNvbmQsIGl0IG1vZGlmaWVzIGZ1bmN0aW9uIGdwaW9fc2V0X2NoaXBfY29uZmlndXJhdGlvbigpIHRvIHByb3ZpZGUKLSAgICBhbiBhZGRpdGlvbmFsIG9wdGlvbiBmb3IgY29uZmlndXJpbmcgdGhlIEdQSU8gZnJvbSB0aGUKLSAgICAiQ0ZHXzR4eF9HUElPX1RBQkxFIi4KLQotICAgIEFjY29yZGluZyB0byB0aGUgNDQwRVB4IFVzZXIncyBNYW51YWwsIHdoZW4gYW4gYWx0ZXJuYXRlIG91dHB1dCBpcyB1c2VkLAotICAgIHRoZSB0aHJlZS1zdGF0ZSBjb250cm9sIGlzIGNvbmZpZ3VyZWQgaW4gb25lIG9mIHR3byB3YXlzLCBkZXBlbmRpbmcgb24KLSAgICB0aGUgcGFydGljdWxhciBvdXRwdXQuICBUaGUgZmlyc3Qgb3B0aW9uIGlzIHRvIHNlbGVjdCB0aGUgY29ycmVzcG9uZGluZwotICAgIGFsdGVybmF0ZSB0aHJlZS1zdGF0ZSBjb250cm9sIGluIHRoZSBHUElPeF9UUlNIL0wgcmVnaXN0ZXJzLiAgVGhlIHNlY29uZAotICAgIG9wdGlvbiBpcyB0byBzZWxlY3QgdGhlIEdQSU8gVGhyZWUtU3RhdGUgQ29udHJvbCBSZWdpc3RlciAoR1BJT3hfVENSKSBpbgotICAgIHRoZSBHUElPeF9UUlNIL0wgcmVnaXN0ZXJzLCBhbmQgc2V0IHRoZSBjb3JyZXNwb25kaW5nIGJpdCBpbiB0aGUKLSAgICBHUElPeF9UQ1IgcmVnaXN0ZXIgdG8gZW5hYmxlIHRoZSBvdXRwdXQuICBGb3IgZXhhbXBsZSwgdGhlIE1hbnVhbAotICAgIHNwZWNpZmllcyBjb25maWd1cmluZyB0aGUgR1BJTzAwIEFsdGVybmF0ZSAxIFNpZ25hbCAoUHJlQWRkcjA3KSB0byB1c2UKLSAgICB0aGUgYWx0ZXJuYXRlIHRocmVlLXN0YXRlIGNvbnRyb2wgKGZpcnN0IG9wdGlvbiksIGFuZCBzcGVjaWZpZXMKLSAgICBjb25maWd1cmluZyB0aGUgR1BJTzMyIEFsdGVybmF0ZSAxIFNpZ25hbCAoVVNCMk9NMCkgd2l0aCB0aGUgb3V0cHV0Ci0gICAgZW5hYmxlZCBpbiB0aGUgR1BJT3hfVENSIHJlZ2lzdGVyIChzZWNvbmQgb3B0aW9uKS4KLQotICAgIEN1cnJlbnRseSwgZ3Bpb19zZXRfY2hpcF9jb25maWd1cmF0aW9uKCkgY29uZmlndXJlcyBhbGwgYWx0ZXJuYXRlIHNpZ25hbAotICAgIG91dHB1dHMgdG8gdXNlIHRoZSBmaXJzdCBvcHRpb24uICBUaGlzIHBhdGNoIGFsbG93IHRoZSBzZWNvbmQgb3B0aW9uIHRvCi0gICAgYmUgc2VsZWN0ZWQgYnkgc2V0dGluZyB0aGUgIm91dF92YWwiIGVsZW1lbnQgaW4gdGhlIHRhYmxlIGVudHJ5IHRvCi0gICAgIkdQSU9fT1VUXzEiLiAgVGhlIGZpcnN0IG9wdGlvbiBpcyB1c2VkIHdoZW4gdGhlICJvdXRfdmFsIiBlbGVtZW50IGlzCi0gICAgc2V0IHRvICJHUElPX09VVF8wIi4gIEJlY2F1c2UgIm91dF92YWwiIGlzIG5vdCBjdXJyZW50bHkgdXNlZCB3aGVuIGFuCi0gICAgYWx0ZXJuYXRlIHNpZ25hbCBpcyBzZWxlY3RlZCwgYW5kIGJlY2F1c2UgYWxsIGN1cnJlbnQgR1BJTyB0YWJsZXMgc2V0Ci0gICAgIm91dF92YWwiIHRvICJHUElPX09VVF8wIiBmb3IgYWxsIGFsdGVybmF0ZSBzaWduYWxzLCB0aGlzIHBhdGNoIHNob3VsZAotICAgIG5vdCBjaGFuZ2UgYW55IGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCAxOTY0MDRjZGMxZGU0OTVkNjE4MmU4NDczMWMyMDBmYzU3NDhkZjE1Ci1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgotRGF0ZToJU3VuIERlYyAzMCAwMTowMTo1NCAyMDA3IC0wNTAwCi0KLSAgICBQUEM0eHg6IFJlbW92ZSBzZHJhbS5oIGZyb20gYm9hcmQvbHdtb241Ci0KLSAgICBUaGVzZSBkZWZpbml0aW9ucyBhcmUgbm93IGluICJpbmNsdWRlL3BwYzQ0MC5oIi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgZWYxNmZjY2Y5NmU1NWVhYjkzZmUyNWQwM2ViZTJlOWI1NmU1MzMyYgotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVN1biBEZWMgMzAgMDE6MDE6MzIgMjAwNyAtMDUwMAotCi0gICAgUFBDNHh4OiBVc2UgY29tbW9uIGNvZGUgZm9yIExXTU9ONSBib2FyZCBTRFJBTSBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFsc28gbW9kaWZpZXMgdGhlIGZ1bmN0aW9uYWxpdHkgb2YgdGhlIGNvZGUgc28gdGhhdCB0aGUgZGF0YS1leWUKLSAgICBzZWFyY2ggaXMgbm93IGRvbmUgd2l0aCB3aXRoIHRoZSBjYWNoZSBkaXNhYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgNjJjYzM5NTFhYjcyMTM1ZDljMTAxZjE4NDViNzk0ZTYzYTBmYTE4OQotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVN1biBEZWMgMzAgMDE6MDE6MTQgMjAwNyAtMDUwMAotCi0gICAgUFBDNHh4OiBSZW1vdmUgc2RyYW0uaCBmcm9tIGJvYXJkL2FtY2Mvc2VxdW9pYQotCi0gICAgVGhlc2UgZGVmaW5pdGlvbnMgYXJlIG5vdyBpbiAiaW5jbHVkZS9wcGM0NDAuaCIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IGNlMzkwMmUxNzY1YmJmYjA3Y2Y1YmJlOThiZTlhNjhlMzAwOTk5NmEKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+Ci1EYXRlOglTdW4gRGVjIDMwIDAxOjAwOjUwIDIwMDcgLTA1MDAKLQotICAgIFBQQzR4eDogVXNlIGNvbW1vbiBjb2RlIGZvciBTZXF1b2lhIGJvYXJkIFNEUkFNIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgOGIwYzVjMTI3NjkwMzM1NzU4MTAwYzI1ZWFlYzJiODRkYjk3YzEwMQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVRodSBEZWMgMjcgMTY6NTg6NDEgMjAwNyArMDEwMAotCi0gICAgbmV0OiBBZGQgQ09ORklHX05FVF9ET19OT1RfVFJZX0FOT1RIRVIgb3B0aW9uCi0KLSAgICBXaGVuIENPTkZJR19ORVRfRE9fTk9UX1RSWV9BTk9USEVSIGlzIGRlZmluZWQgVS1Cb290J3MKLSAgICBuZXR3b3JraW5nIHN0YWNrIGRvZXMgbm90IGF1dG9tYXRpY2FsbHkgc3dpdGNoIHRvCi0gICAgYW5vdGhlciBpbnRlcmZhY2UuIFRoaXMgcGF0Y2ggZG9lcyBub3QgdG91Y2ggdGhlIGRlZmF1bHQKLSAgICBiZWhhdmlvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJpZ2dlcmJhZGRlcmJlbkBnbWFpbC5jb20+Ci0KLWNvbW1pdCA1MDViZTg3YTY1ZTRmODdhZDdkOGRhMWQ1N2VhNGRjZDQ4N2Q3ZTMyCi1BdXRob3I6IFVwYWt1bCBCYXJrYWthdHkgPHVwYWt1bEBnbWFpbC5jb20+Ci1EYXRlOglUaHUgTm92IDI5IDEyOjE2OjEzIDIwMDcgKzA1MzAKLQotICAgIE5FVDogUHJvcGVyIHJldHVybiBjb2RlIGhhbmRsaW5nIGluIGV0aF9pbml0KCkgZnVuY3Rpb24gaW4gZmlsZSBldGguYwotCi0gICAgVGhpcyBwYXRjaCBtb2RpZmllcyB0aGUgcmV0dXJuIGNvZGUgaGFuZGxpbmcgaW4gdGhlIGV0aF9pbml0KCkKLSAgICBmdW5jdGlvbiwgdG8gYmUgY29tcGF0aWJsZSB3aXRoIHRoZSBoYW5kbGluZyBvZiB0aGUgcmV0dXJuIGNvZGVzIGluCi0gICAgdGhlIG90aGVyIG5ldHdvcmsgc3RhY2sgZmlsZXMuIEl0IG5vdyByZXR1cm5zIGEgMCBvbiBTdWNjZXNzIGFuZCAtMSBvbgotICAgIGVycm9yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVXBha3VsIEJhcmtha2F0eSA8dXBha3VsLmJhcmtha2F0eUBjb25leGFudC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDVjYTJkMDk1M2U0NTc5YTgwODEwOTY2Y2NhMjA3N2UyMGQ5MTJjOTcKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotRGF0ZToJTW9uIE5vdiAxOSAyMDoyNzowNCAyMDA3ICswOTAwCi0KLSAgICBuZXQvZXRoLmM6IEZpeCBlbnZfZW5ldGFkZHIgc2lnbmVkIG92ZXJmbG93Ci0KLSAgICBBc3NpZ25pbmcgdGhlIG91dHB1dCBvZiBzaW1wbGVfc3RydG91bChDQjpBOTo4Nzo2NTo0MzoyMSkgdG8gYGNoYXInLCB3ZSBhcmUKLSAgICB3YXJuZWQgYXMgYmVsb3c6Ci0KLSAgICAgIFUtQm9vdCAxLjIuMCAoQXVnIDMwIDIwMDcgLSAwODoyNzozNykKLQotICAgICAgRFJBTTogIDI1NiBNQgotICAgICAgRmxhc2g6IDMyIE1CCi0gICAgICBJbjogICAgc2VyaWFsCi0gICAgICBPdXQ6ICAgc2VyaWFsCi0gICAgICBFcnI6ICAgc2VyaWFsCi0gICAgICBOZXQ6ICAgTkVDLUNhbmR5Ci0gICAgICBXYXJuaW5nOiBORUMtQ2FuZHkgTUFDIGFkZHJlc3NlcyBkb24ndCBtYXRjaDoKLSAgICAgIEFkZHJlc3MgaW4gU1JPTSBpcwkgMDA6MDA6NEM6ODA6OTI6QTIKLSAgICAgIEFkZHJlc3MgaW4gZW52aXJvbm1lbnQgaXMgIEZGRkZGRkNCOkZGRkZGRkE5OkZGRkZGRjg3OjY1OjQzOjIxCi0KLSAgICBUaGlzIHBhdGNoIGNoYW5nZXMgZW52X2VuZXRhZGRyIHR5cGUgZnJvbSBgY2hhcicgdG8gYHVuc2lnbmVkIGNoYXInLgotCi0gICAgQ2M6IE1hc2FraSBJc2hpa2F3YSA8aXNoaWthd2EtbWFzYWtpQGNudC5teGUubmVzLm5lYy5jby5qcD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IGY4NWI2MDcxMDU3MWIzNzI5M2QyMjMzOTMzYjc2ZTJhYTNkYjU2MzUKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBEZWMgMjcgMTg6MTk6MDIgMjAwNyArMDEwMAotCi0gICAgSW50cm9kdWNlIG5ldyBldGhfcmVjZWl2ZSByb3V0aW5lCi0KLSAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHJvdXRpbmUgaXMgcmVjZWl2aW5nIGEgc2luZ2xlIG5ldHdvcmsgZnJhbWUsIG91dHNpZGUgb2YKLSAgICBVLUJvb3QncyBOZXRMb29wKCkuIEV4cG9ydGluZyBpdCB0byBzdGFuZGFsb25lIHByb2dyYW1zIHRoYXQgcnVuIG9uIHRvcCBvZgotICAgIFUtQm9vdCB3aWxsIGxldCB0aGVtIHV0aWxpc2UgbmV0d29ya2luZyBmYWNpbGl0aWVzLiBGb3Igc2VuZGluZyBhIHJhdyBmcmFtZQotICAgIHRoZSBhbHJlYWR5IGV4aXN0aW5nIGV0aF9zZW5kKCkgY2FuIGJlIHVzZWQuCi0KLSAgICBUaGUgZGlyZWN0IGNvbnN1bWVyIG9mIHRoaXMgcm91dGluZSBpcyB0aGUgbmV3bHkgaW50cm9kdWNlZCBBUEkgbGF5ZXIgZm9yCi0gICAgZXh0ZXJuYWwgYXBwbGljYXRpb25zIChlbmFibGVkIHdpdGggQ09ORklHX0FQSSkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YmlnZ2VyYmFkZGVyYmVuQGdtYWlsLmNvbT4KLQotY29tbWl0IDVjNzQwNzExZjBlYTViNTE0MTRiMzQxYjcxNTk3YzRhMDc1MWJlNzQKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKYW4gMyAxMDo0MTowNCAyMDA4IC0wNjAwCi0KLSAgICA4NjEwOiBNb3ZlIGluY2x1ZGUgb2YgY29uZmlnLmggZWFybGllci4KLQotICAgIEluY2x1ZGUgY29uZmlnLmggZWFybGllciBpbiB0aGUgc2V0IG9mICNpbmNsdWRlcwotICAgIHNvIGFzIHRvIGF2b2lkIGEgaW5jaWRlbnRhbCBhbmQgZHVwbGljYXRlIGRlZmluaXRpb24KLSAgICBvZiBDRkdfQ0FDSEVMSU5FX1NJWkUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIKLQotY29tbWl0IDYxZDM0MjFiZGVhMDkwYmQwMzk5YjE0YzNlMTBhM2JlYmNjOGQ1ZmYKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBEZWMgNCAxMDo1MzozNCAyMDA3IC0wNjAwCi0KLSAgICBEb24ndCBzbGFtICN1bmRlZiBERUJVRyBpbiB0aGUgODY0MUhQQ04gY29uZmlnIGZpbGUuCi0KLSAgICBEb2luZyBzbyBwcmV2ZW50cyBpdCBmcm9tIGJlaW5nIGluZGl2aWR1YWxseSBzZXQKLSAgICBhbmQgdXNlZnVsIGluIG90aGVyIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVhOWY3Mzk1ZWMzNjI1ODRlNWU0ZjI2NmJkMGIwYzQ0MjJjZjZhNGMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgMjggMTQ6NDc6MTggMjAwNyAtMDYwMAotCi0gICAgQ29udmVydCBNUEM4NjQxSFBDTiB0byB1c2UgbGliZmR0LgotCi0gICAgQXNzdW1lcyB0aGUgcHJlc2VuY2Ugb2YgdGhlIGFsaWFzZXMgbm9kZSBpbiB0aGUgRFRTIHRvCi0gICAgbG9jYXRlIHRoZSBldGhlcm5ldCwgcGNpIGFuZCBzZXJpYWwgbm9kZXMgZm9yIGZpeHVwcy4KLQotICAgIFVzZSBjb25zaXN0ZW50IGZkdGFkZHIgYW5kIGZkdGZpbGUgaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNlMzc0MjJkMDAwMmUxMDQ5MGUyNjgzOTJlMGM0ZTMwMjhlNTJjZWMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyIDE0OjA2OjI2IDIwMDggKzAxMDAKLQotICAgIGNmaV9mbGFzaDogRml4IGJ1ZyBpbiBmbGFzaF9pc3NldCgpIHRvIHVzZSBjb3JyZWN0IDMyYml0IGZ1bmN0aW9uCi0KLSAgICBUaGlzIGJ1ZyB3YXMgZGV0ZWN0ZWQgb24gdGhlIExXTU9ONSB0YXJnZXQgd2hpY2ggaGFzIDIgSW50ZWwgMTZiaXQgd2lkZQotICAgIGZsYXNoIGNoaXBzIGNvbm5lY3RlZCB0byBhIDMyYml0IHdpZGUgcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDExODJlOWY4ZTNiOTJmYzM3MmQ2NDk0MzI5M2RlNTNkYWEyZTI2Y2YKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMiAxNTo1ODo0NCAyMDA4ICswMTAwCi0KLSAgICBGaXggY29tcGlsZSBwcm9ibGVtIGludHJvZHVjZWQgYnkgImNsZWFudXAiIGNvbW1pdCAzZGZkNzA4YwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDFhYWFiOWJmYWUwYjNiMmVlMmI0MThjMjJjNjUxMjgwZWU3YjY1YzcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMiAxNTo1NDo0NSAyMDA4ICswMTAwCi0KLSAgICBNYWtlIHNjcmlwdHMgYW5kIE1ha2VmaWxlcyBQT1NJWCBjb21wbGlhbnQKLQotICAgIFRoZSBiYXNoIGJ1aWx0aW4gdmVyc2lvbnMgb2YgdGhlICJ0ZXN0IiAocmVzcC4gIlsiKSBjb21tYW5kIGFsbG93Ci0gICAgdXNpbmcgIj09IiBmb3Igc3RyaW5nIGNvbXBhcmlzb25zLCBidXQgUE9TSVggY29tcGF0aWJsZSBpbXBsZW1lbi0KLSAgICB0YXRpb25zIChsaWtlIC91c3IvYmluL3Rlc3QpIGluc2lzdCBvbiB1c2luZyAiPSIgb25seS4gT24gc3VjaCBzeXN0ZW1zCi0gICAgeW91IHdpbGwgc2VlOgotCi0JJCAvdXNyL2Jpbi90ZXN0IGEgPT0gYSAmJiBlY2hvIE9LCi0JL3Vzci9iaW4vdGVzdDogPT06IGJpbmFyeSBvcGVyYXRvciBleHBlY3RlZAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBNYWtlZmlsZXMgYW5kIHNjcmlwdHMgdG8gdXNlIFBPU0lYIHN0eWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDQ3Y2MyM2NiZTlhNjY5YzUxMDE4M2Y0ZjA0OWJmNzAzZWY0NDVmM2IKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEphbiAyIDE0OjA1OjM3IDIwMDggKzAxMDAKLQotICAgIGNmaV9mbGFzaDogRml4IGJ1ZyBpbiBmbGFzaF9pc3NldCgpIHRvIHVzZSBjb3JyZWN0IDMyYml0IGZ1bmN0aW9uCi0KLSAgICBUaGlzIGJ1ZyB3YXMgZGV0ZWN0ZWQgb24gdGhlIExXTU9ONSB0YXJnZXQgd2hpY2ggaGFzIDIgSW50ZWwgMTZiaXQgd2lkZQotICAgIGZsYXNoIGNoaXBzIGNvbm5lY3RlZCB0byBhIDMyYml0IHdpZGUgcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDNkZmQ3MDhjYzFiMmE5NjZhZDQ1NGNhOWVkMTI1ZGQxN2RiYWRiY2MKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKYW4gMiAxMjozODo0MyAyMDA4ICswMTAwCi0KLSAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlMTc0YWMzNGFkZjVkNTY1M2RmMTJiYzNjZjE5YzUyMDYzYTcxMjY5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBEZWMgMjggMTc6Mjk6NTYgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBDb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGJhMTMyY2FiMThhZTQzOGI2ZGQ1YjAyMTRjMjhhOGZjMGQ5NzZlNQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBEZWMgMjggMTc6MDc6MjQgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBDb21wbGV0ZSBQTUM0NDAgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBicmluZ3MgdGhlIFBNQzQ0MCBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUuCi0gICAgRmluYWxseSBpdCBlbmFibGVzIHRoZSBQTUM0NDAgYm9hcmQgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgNDA3ODQzYTU4MjU2MGZjNTIzMTI5OTU2MWFiM2MyYjZiNmNkMzM5NwotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBEZWMgMjggMTc6MDc6MTggMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgRlBHQSBzdXBwb3J0IGFuZCBCU1AgY29tbWFuZHMgZm9yIFBNQzQ0MCBib2FyZHMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIEJTUCBjb21tYW5kcyBhbmQgRlBHQSBib290aW5nIHN1cHBvcnQKLSAgICBmb3IgZXNkJ3MgUE1DNDQwIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgNzJjNWQ1MmFlZGNjZTM1ZTRiNGZhNTg5NTYwNTU1NDgyNWI2YTc2ZgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBEZWMgMjggMTc6MDc6MTQgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgaW5pdGlhbCBlc2QgUE1DNDQwIGJvYXJkIGZpbGVzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIGZpcnN0IGZpbGVzIGZvciB0aGUgbmV3IGVzZCBQTUM0NDAgYm9hcmRzLgotICAgIFRoZSBuZXh0IHR3byBwYXRjaGVzIHdpbGwgY29tcGxldGUgdGhlIFBNQzQ0MCBib2FyZCBzdXBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBmNmUwZjFmNjE4OTZjZTc3MjliYTFiY2VhMmZmYmQxMzhkMzk0N2Y1Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIERlYyAyOCAxNzoxMDozNiAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IEFkZCBFRVBST00gd3JpdGUgcHJvdGVjdGlvbiBmb3IgUExVNDA1IGJvYXJkcyArIG1pc2MuIHVwZGF0ZXMKLQotICAgIC0gYWRkIEVFUFJPTSB3cml0ZSBwcm90ZWN0aW9uIGZvciBlc2QgUExVNDA1IGJvYXJkcy4KLSAgICAtIGluaXRpYWxpemUgTkFORCBHUElPcwotICAgIC0gdXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzCi0gICAgLSBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDc3NjYwYzRiNTkwNTVkNjIxZDJhODU5NWJkNGMxOGJiMjc3MjY4ZmMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgRGVjIDI4IDE3OjEwOjQ0IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogdXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIGZvciBlc2QncyBMQ0QgY29kZQotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBlc2QncyBMQ0QgZGVjdGVjdGlvbiBjb2RlIHRvIHdvcmsgY29ycmVjdGx5IHdpdGgKLSAgICBuZXdlciBnY2MgdmVyc2lvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGI1NmJkMGZjZmMxYzczZGI3MjJlMzQ2MmM4YTliZjYwN2JhNzc3NWUKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgRGVjIDI4IDE3OjEwOjQyIDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogTWFpbnRlbmFuY2UgcGF0Y2ggZm9yIFZPSDQwNSBib2FyZHMKLQotICAgIC0gYWRkIEVFUFJPTSB3cml0ZSBwcm90ZWN0aW9uCi0gICAgLSBpbml0aWFsaXplIE5BTkQgR1BJT3MKLSAgICAtIHVzZSBjb3JyZWN0IGlvIGFjY2Vzc29ycwotICAgIC0gc2xvdyBkb3duIEkyQyBjbG9jayB0byAxMDBrSHoKLSAgICAtIGVuYWJsZSBleHQuIEkyQyBidXMKLSAgICAtIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgYzA1NTY5MDY2ZGJjYmEzZmRmMzZkNGQxOTQzZGYyNjVkYzMxNmE4NgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgRGVjIDI4IDE2OjA4OjA4IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRW5hYmxlIDQwNUVQIFBDSSBhcmJpdGVyIHBlciBkZWZhdWx0IG9uIGFsbCBib2FyZHMKLQotICAgIEluIGFuIGF0dG1lbXQgdG8gY2xlYW4gdXAgdGhlIDR4eCBzdGFydC5TIGZpbGUsIEkgcmVtb3ZlZCB0aGUgZW5hYmxpbmcKLSAgICBvZiB0aGUgaW50ZXJuYWwgNDA1RVAgUENJIGFyYml0ZXIuIFRoaXMgaXMgbmVlZGVkIGZvciBtdWx0aXBsZSBvdGhlcgotICAgIDQwNUVQIHBsYXRmb3JtcywgbGlrZSBtb3N0IG9mIHRoZSBlc2QgNDA1RVAuIE5vdyB0aGUgaW50ZXJuYWwgUENJCi0gICAgYXJiaXRlciBpcyBlbmFibGVkIGFnYWluIHBlciBkZWZhdWx0IGFzIGl0IGhhcyBiZWVuIGJlZm9yZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLSAgICBBY2tlZC1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBiZWM5MjY0NjE2ZmI3ODI3M2ExZDkzZTg3ZmY0YjBiNjdjN2JlYzFiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBEZWMgMjggMTU6NTM6NDYgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggYnVnIGluIGNwdV9pbml0LmMgKDQwNUVQIGluc3RlYWQgb2YgNDUwRVApCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgZmI4M2E2NWM2MGFiNWNhMTIzNThiNzVmMTI1N2U1ZWVlNmNkYmY3OQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgRGVjIDI4IDA2OjA2OjA0IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRml4IGNvbXBpbGF0aW9uIHByb2JsZW0gb2Yga2lsYXVlYS9oYWxlYWthbGEgbmFuZCBib290aW5nIHRhcmdldAotCi0gICAgVXNlIGNvcnJlY3QgbGluayB0byBuYW5kX2VjYyBub3cgbG9jYXRlZCBpbiBkcml2ZXJzL210ZC9uYW5kLyBmb3IgdGhlCi0gICAgcGxhdGZvcm1zIG1lbnRpb25lZCBhYm92ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGI1NjhmZDI1NTc0MTgxYTNiMTJhZTNkNjZiMjkxMzkwMzQ0MmNiODMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgRGVjIDI3IDE3OjAzOjQ2IDIwMDcgKzAxMDAKLQotICAgIFJlbW92ZSBDUENJNDQwIGJvYXJkCi0KLSAgICBUaGlzIGJvYXJkIG5ldmVyIGxlZnQgcHJvdG90eXBpbmcgc3RhdGUgYW5kIGl0Ci0gICAgYmVjYW1lIGEgbWlsbHN0b25lIHJvdW5kIG15IG5lY2suIFNvIHJlbW92ZSBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgYzU5MWRmZmUwY2JhY2Q4OTZjY2JhZDA2MDExZmU2ZDZhZmEwODBkYQotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVRodSBEZWMgMjcgMTE6Mjg6NTEgMjAwNyAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIEtvcmF0IFBQQzQ0MEVQeCBib2FyZAotCi0gICAgVGhlc2UgcGF0Y2hlcyBhZGQgc3VwcG9ydCBmb3IgdGhlIFBQQzQ0MEVQeC1iYXNlZCAiS29yYXQiIGJvYXJkIHRvCi0gICAgVS1Cb290LiAgVGhleSBhcmUgYmFzZWQgcHJpbWFyaWx5IG9uIHN1cHBvcnQgZm9yIHRoZSBTZXF1b2lhIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCA4N2RjMDk2ODI5ZTZhNjM2M2Y0ZmRkNzM2NTNiMDA5M2E4NWFkYmUwCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgotRGF0ZToJU2F0IERlYyAyMiAxNToxNjoyNSAyMDA3IC0wNTAwCi0KLSAgICBBZGQgY29uZmlndXJhdGlvbiBmaWxlIGZvciBLb3JhdCBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBzdXBwbGllcyB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGZvciB0aGUgS29yYXQgUFBDNDQwRVB4LQotICAgIHByb2Nlc3NvciBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgOGViNTJkNWQ5ODJiNzY0YjM5Yzg4ZDlkMTA2NGQ1NmM1Mzk3YmZhNQotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVNhdCBEZWMgMjIgMTU6MTY6MTEgMjAwNyAtMDUwMAotCi0gICAgQWRkIGRlbmFsaV9kYXRhX2V5ZS5vIGFuZCBkZW5hbGlfc3BkX2RkcjIubyB0byBQUEM0eHggTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgYWJhMTk2MDRkODQ4YjI4MzhjZmI5ZWJlODE4OTA5ZTZhMjE2MDU4ZQotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVRodSBEZWMgMjcgMTA6NTQ6NDggMjAwNyAtMDUwMAotCi0gICAgQWRkIDQ0MEVQeCBERFIyIFNQRCBESU1NIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBTUEQgRERSMiBzdXBwb3J0IGZvciB0aGUgNDQwRVB4ICgiRGVuYWxpIikgU0RSQU0KLSAgICBjb250cm9sbGVyLiAgSXQgc2hvdWxkIGFsc28gd29yayBvbiB0aGUgNDQwR1J4LiAgSXQgaXMgYmFzZWQgb24gdGhlIEREUjIKLSAgICBTUEQgY29kZSBmb3IgdGhlIDQ0MEVQLzQ0MEVQeCwgYnV0IG1ha2VzIG5vIHByb3Zpc2lvbiBmb3IgRERSMSBzdXBwb3J0LgotCi0gICAgVGhpcyBjb2RlIGhhcyBiZWVuIHRlc3RlZCBvbiBwcm90b3R5cGUgS29yYXQgYm9hcmRzIHdpdGggdGhyZWUgS2luZ3N0b24KLSAgICBESU1NUzogNTEyIE1pQiBFQ0MgKG9uZSByYW5rKSwgNTEyIE1pQiBub24tRUNDIChvbmUgcmFuaykgYW5kIDEgR2lCIEVDQwotICAgICh0d28gcmFua3MpLiAgVGhlIEtvcmF0IGJvYXJkIGhhcyBhIHNpbmdsZSBESU1NIHNvY2tldCwgYnV0IHN1cHBvcnQgaGFzCi0gICAgYmVlbiBwcm92aWRlZCAodGhvdWdoIG5vdCB0ZXN0ZWQpIGZvciBib2FyZHMgd2l0aCB0d28gRElNTSBzb2NrZXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCA4YTI0YTY5NjMwMDJjYjg2N2Q1YTZiNzBlMzU2MGYwYjE0NjdmNTVmCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgotRGF0ZToJU2F0IERlYyAyMiAxNToxNTozMCAyMDA3IC0wNTAwCi0KLSAgICBDb3B5IDQ0MEVQeC9HUnggU0RSQU0gZGF0YS1leWUgc2VhcmNoIHRvIGNvbW1vbiBkaXJlY3RvcnkKLQotICAgIFRoaXMgcGF0Y2ggY3JlYXRlcyBhIG5vbi1ib2FyZC1zcGVjaWZpYyBmaWxlIGZvciBwZXJmb3JtaW5nIHRoZSBTRFJBTQotICAgIGRhdGEtZXllIHNlYXJjaC4gIEl0IGFsc28gYWRkcyBFQ0MgZXJyb3IgY2hlY2tpbmcgdG8gdGhlIHRlc3Qgb2YgdmFsaWQKLSAgICBkYXRhIG9uIHJlYWRiYWNrIHdoZW4gRUNDIGlzIGVuYWJsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IGM0NmY1MzMzM2IyMmIxZjkwOTg2NzZiZWE4ODg0ZmM3ZGI4MjBjZjMKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+Ci1EYXRlOglTYXQgRGVjIDIyIDE1OjE1OjEzIDIwMDcgLTA1MDAKLQotICAgIEFkZCBkZWZpbml0aW9ucyBmb3IgNDQwRVB4L0dSeCBTRFJBTSBjb250cm9sbGVyIHRvIHBwYzQ0MC5oCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgdGhlIERlbmFsaSBTRFJBTSBjb250cm9sbGVyIGRlZmluaXRpb25zIHRvICJwcGM0NDAuaCIuCi0gICAgSXQgYWxzbyBmaXhlcyB0d28gdHlwb3MgaW4gdGhlIGRlZmluaXRpb25zLCBzbyB0aGUgYm9hcmQtc3BlY2lmaWMKLSAgICAic2RyYW0uaCIgZmlsZXMgY29udGFpbmluZyB0aGVzZSBkZWZpbml0aW9ucyBhcmUgYWxzbyBmaXhlZCB0byBhdm9pZAotICAgIGNvbXBpbGVyIHdhcm5pbmdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCBjMzQ4NTc4YmY2MTJkMGM1NmQ4ZDM3NmQyM2NhZTE2ZGVmYmQ4NmFmCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgotRGF0ZToJVGh1IERlYyAyNyAxMDo1MDo1NSAyMDA3IC0wNTAwCi0KLSAgICBBZGQgRXRoZXJuZXQgMTAwMEJBU0UtWCBzdXBwb3J0IGZvciBQUEM0eHgKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIG5ldyBzd2l0Y2g6ICJDT05GSUdfUEhZX0RZTkFNSUNfQU5FRyIuICBXaGVuIHRoaXMgc3ltYm9sCi0gICAgaXMgZGVmaW5lZCwgdGhlIFBIWSB3aWxsIGFkdmVydGlzZSBpdCdzIGNhcGFiaWxpdGllcyBmb3IgYXV0b25lZ290aWF0aW9uCi0gICAgYmFzZWQgb24gdGhlIGNhcGFiaWxpdGllcyBzaG93biBpbiB0aGUgUEhZJ3Mgc3RhdHVzIHJlZ2lzdGVycywgaW5jbHVkaW5nCi0gICAgMTAwMEJBU0UtWC4gIFdoZW4gIkNPTkZJR19QSFlfRFlOQU1JQ19BTkVHIiBpcyBub3QgZGVmaW5lZCwgdGhlIFBIWSB3aWxsCi0gICAgYWR2ZXJ0aXNlIGhhcmQtY29kZWQgY2FwYWJpbGl0aWVzLCBhcyBiZWZvcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IDllMmMzNDcxNTFkYjVhZThhY2Y1ZjE4Yjk5NDkzY2Q1M2U2NjM3ZTMKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+Ci1EYXRlOglUaHUgRGVjIDI3IDA5OjUyOjE3IDIwMDcgLTA1MDAKLQotICAgIEFkZCBkcml2ZXIgZm9yIE5hdGlvbmFsIFNlbWljb25kdWN0b3IgTE03MyB0ZW1wZXJhdHVyZSBzZW5zb3IKLQotICAgIFRoaXMgZHJpdmVyIGlzIGJhc2VkIG9uIHRoZSBkcml2ZXIgZm9yIHRoZSBMTTc1LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCAxMjYxODI3ODY4OGVhOWIzZDc2NTM2OTYwYTVhZDJlMzc5MGZhYzQwCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgotRGF0ZToJU2F0IERlYyAyMiAxNToxNDowMCAyMDA3IC0wNTAwCi0KLSAgICBBZGQgZHJpdmVyIGZvciBTVE1pY3JvZWxlY3Ryb25pY3MgTTQxVDYwIFJUQwotCi0gICAgVGhpcyBkcml2ZXIgaXMgYmFzZWQgb24gdGhlIGRyaXZlciBmb3IgdGhlIE00MVQxMS4JSW4gdGhlIGludGVuZGVkCi0gICAgYXBwbGljYXRpb24sIHRoZSBSVEMgd2lsbCBiZSBwb3dlcmVkIGJ5IGEgbGFyZ2UgY2FwYWNpdG9yLCByYXRoZXIgdGhhbiBhCi0gICAgYmF0dGVyeS4gIFRoZSBkcml2ZXIgdGhlcmVmb3JlIGNoZWNrcyB0byBzZWUgd2hldGhlciB0aGUgUlRDIGhhcyBsb3N0Ci0gICAgcG93ZXIuICBUaGUgY2hpcCdzIE9VVCBiaXQgaXMgbm9ybWFsbHkgcmVzZXQgZnJvbSBpdHMgcG93ZXItdXAgc3RhdGUuICBJZgotICAgIHRoZSBPVVQgYml0IGlzIHJlYWQgYXMgc2V0LCBvciBpZiB0aGUgZGF0ZSBhbmQgdGltZSBhcmUgbm90IHZhbGlkLCB0aGVuIHRoZQotICAgIFJUQyBpcyBhc3N1bWVkIHRvIGhhdmUgbG9zdCBwb3dlciwgYW5kIGl0cyBkYXRlIGFuZCB0aW1lIGFyZSByZXNldCB0bwotICAgIDE5MDAtMDEtMDEgMDA6MDA6MDAuCi0KLSAgICBTdXBwb3J0IGZvciBhZGp1c3RpbmcgdGhlIHNwZWVkIG9mIHRoZSBjbG9jayB0byBpbXByb3ZlIGFjY3VyYWN5IGlzCi0gICAgcHJvdmlkZWQgdGhyb3VnaCBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgZDM0NzExNzNlMTRiNzU0NGJiNjAzMzllZGE4ZDNkMzkwNjY5NGIwYQotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVNhdCBEZWMgMjIgMTU6MzQ6MzkgMjAwNyAtMDUwMAotCi0gICAgVXNlIG91dF9iZTMyKCkgYW5kIGZyaWVuZHMgdG8gYWNjZXNzIG1lbW9yeS1tYXBwZWQgcmVnaXN0ZXJzIGluIHNlcXVvaWEuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFycnkgSm9obnNvbiA8bHJqQGFjbS5vcmc+Ci0KLWNvbW1pdCBjNjhmNTlmZTNlYzE2NzY5ZjgyYjVmY2E3NDIxOTgzYzMzNmQzYWFjCi1BdXRob3I6IExhcnJ5IEpvaG5zb24gPGxyakBhcmxpbnguY29tPgotRGF0ZToJU2F0IERlYyAyMiAxNTozNDoyMCAyMDA3IC0wNTAwCi0KLSAgICBVc2UgZGVmaW5pdGlvbnMgZnJvbSAiYXNtLXBwYy9tbXUuaCIgaW4gaW5pdC5TIGZvciBTZXF1b2lhCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IDBkOWNkZWFjMWQzZmE4ZDYyZWQ3ZDg4M2FjYzk1MGMzNjRmNWJkYTgKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+Ci1EYXRlOglTYXQgRGVjIDIyIDE1OjIzOjUwIDIwMDcgLTA1MDAKLQotICAgIENvc21ldGljIGNoYW5nZXMgdG8gRUNDIFBPU1QgZm9yIEFNQ0MgRGVuYWxpIGNvcmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgMmU1ODNkNmM4MTAzNGY4MGEyNjdiODlmYTU1NDk4YWUwNjNjY2VmMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRGVjIDI2IDIwOjIwOjE5IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRml4IGNvbXBpbGF0aW9uIHByb2JsZW0gaW4gNDA1IGNhY2hlIFBPU1QgdGVzdAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDJkNTVlYTBiZGUwNmU0N2Q1YTNiNDliMGQ5MTAwMmFjZDhlNTcwOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgRGVjIDIyIDEyOjIwOjA5IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogTW92ZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgUE9TVCBjYWNoZSB0ZXN0IHRvIGJpZ2dlciBhZGRyZXNzCi0KLSAgICBPbiBTZXF1b2lhICYgTFdNT041IHRoZSB2aXJ0dWFsIGFkZHJlc3Mgb2YgdGhlIFBPU1QgY2FjaGUgdGVzdCBpcyBub3cKLSAgICBtb3ZlZCB0byBhIGJpZ2dlciBhZGRyZXNzLiBUaGlzIGVuYWJsZXMgdXNhZ2Ugb2YgbW9yZSBtZW1vcnkgb24gdGhvc2UKLSAgICBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkOTE3MjIxMDJjZjYzZjc3YTAxNDhlZDNmM2Q1NGEyNmQ4NzU3NWU5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBEZWMgMjIgMTI6MTg6MjYgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggcHJvYmxlbSBpbiA0NHggY2FjaGUgUE9TVCByb3V0aW5lCi0KLSAgICBBcyByZXBvdGVkIGJ5IExhcnJ5IEpvaG5zb24sIHJ1bm5pbmcgImRpYWcgcnVuIGNhY2hlIiBjYXVzZWQgYSBjcmFzaAotICAgIGluIFUtQm9vdC4gVGhpcyBwcm9ibGVtIHdhcyBpbnRyb2R1Y2VkIGJ5IGEgcGF0Y2ggdGhhdCByZW1vdmVkIHRoZQotICAgIFRMQiBlbnRyeSBmb3IgdGhlIGNhY2hlIHRlc3QgYWZ0ZXIgdGhlIHRlc3QgaGFzIGNvbXBsZXRlZC4gU2luY2UgdGhpcwotICAgIFRMQiB3YXMgb25seSBzZXR1cCBvbmNlLCBhIDJuZCBhdHRlbXB0IHRvIHJ1biB0aGlzIGNhY2hlIHRlc3QKLSAgICBmYWlsZWQgd2l0aCBhIGNyYXNoLiBOb3cgdGhpcyBUTEIgZW50cnkgaXMgY3JlYXRlZCBldmVyeSB0aW1lIHRoZQotICAgIHJvdXRpbmUgaXMgY2FsbGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjAyNjViNTc2YmI4ZmE5NDY1Zjk5ZTk5YzMyMzc2OGI1NjJmYWRjMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgRGVjIDIxIDA3OjUxOjI5IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIE1ha2FsdSBmZHQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYmY4MzI0ZTRhNTA3NThkYWZmOGNkZGQwNGM2YTJmZjhlZDc3NWJlYQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRGVjIDE5IDA5OjA1OjQwIDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIGZkdCBzdXBwb3J0IHRvIEFNQ0MgS2F0bWFpIGV2YWwgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDMyOGEzNDAzOTJhNWRmOWFhZjAwNzkyYmU5ODlkZjczZTc1MDg1OWUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIERlYyAxOCAwODo0NDo1MSAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IGZkdDogQ2xlYW51cCBzZXR1cCBvZiBjcHUgbm9kZSBzZXR1cAotCi0gICAgTm93IHRoZSBjcHUgbm9kZSBzZXR1cCAoInRpbWViYXNlLWZyZXF1ZW5jeSIgYW5kICJjbG9jay1mcmVxdWVuY3kiKSBpcwotICAgIHdpdGhvdXQgdXNpbmcgdGhlIGFic29sdXRlIHBhdGggdG8gdGhlIGNwdSBub2RlLiBUaGlzIG1ha2VzIGl0IHBvc3NpYmxlCi0gICAgdG8gdXNlIHRoaXMgVS1Cb290IHZlcnNpb24gd2l0aCBib3RoIHZlcnNpb25zIG9mIGNwdS1ub2RlIG5hbWluZwotICAgICJjcHVAMCIgYW5kIHRoZSBmb3JtZXIgIlBvd2VyUEMsNDQwRVB4QDAiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzgxMmJjNGEyZTI0MzZlYmJjMGNlNWI0ZTk5YzFkZmMyZTc3ZWI1YgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gRGVjIDE3IDE3OjI2OjIxIDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRml4IGx3bW9uNSBjb21waWxhdGlvbiBwcm9ibGVtCi0KLSAgICBOb3cgdGhhdCB0aGUgNDQwRVB4IEVDQyB0ZXN0IGlzIG5vdCBib2FyZCBzcGVjaWZpYyBhbnltb3JlCi0gICAgcmVtb3ZlIHRoaXMgTWFrZWZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0MmVkMzNmZmUxMzVmNjE4NjgwZjlkNmU5NzEyZWIzNWE4NWJjYjYyCi1BdXRob3I6IEFuYXRvbGlqIEd1c3RzY2hpbiA8YWd1c3RzY2hpbkB0LW9ubGluZS5kZT4KLURhdGU6CVdlZCBEZWMgNSAxNzo0MzoyMCAyMDA3ICswMTAwCi0KLSAgICBGaXggcHBjNHh4IGNsZWFyX2JzcygpIGNvZGUKLQotICAgIHBwYzR4eCBjbGVhcl9ic3MoKSBmYWlscyBpZiBCU1Mgc2VnbWVudCBzaXplIGlzIG5vdAotICAgIGRpdmlzaWJsZSBieSA0IHdpdGhvdXQgcmVtYWluZGVyLiBUaGlzIHBhdGNoIHByb3ZpZGVzCi0gICAgZml4IGZvciB0aGlzIHByb2JsZW0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmF0b2xpaiBHdXN0c2NoaW4gPGFndXN0QGRlbnguZGU+Ci0KLWNvbW1pdCA4NWRjMmE3ZjgyZDExZTE3ZjBjYTJhNDQ4MTE4YWVkN2Y3YTRiODVkCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+Ci1EYXRlOglGcmkgTm92IDMwIDE4OjM1OjExIDIwMDcgKzAxMDAKLQotICAgIFBQQzR4eDogTWluaW1hbCBjaGFuZ2VzIHRvIGFkZCB2eFdvcmtzIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCAwNTI0NDBiMDIyY2E4OTgxZDM5YjZmOGMxMGQxYWE2MzI2ZjQ3NDgwCi1BdXRob3I6IE1hcmt1cyBLbG90emLDvGNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglGcmkgTm92IDIzIDEzOjA5OjE4IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogQWRkIENPTkZJR19CT09UUF9TVUJORVRNQVNLIHRvIFNlcXVvaWEgYm9hcmQgY29uZmlnCi0KLSAgICBXaGVuIHVzaW5nIGRoY3AvYm9vdHAgdGhlICJuZXRtYXNrIiBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QKLSAgICBzZXQgYmVjYXVzZSBDT05GSUdfQk9PVFBfU1VCTkVUTUFTSyBpcyBub3QgZGVmaW5lZC4gQnV0IHVzdWFsbHkgdGhpcyBpcwotICAgIGRlc2lyZWFibGUsIHNvIHRoZSBmb2xsb3dpbmcgcGF0Y2ggYWRkcyB0aGlzIHRoaXMgb3B0aW9uIHRvIHRoZSBib2FyZAotICAgIGNvbmZpZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTcyNGE5YjQwYzdmYmViNmFkZTE5M2NhNTIzMjFiNDQxZWFlY2I0ZQotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVNhdCBPY3QgMjcgMTI6NDg6MTUgMjAwNyAtMDQwMAotCi0gICAgRml4L2VuaGFuY2UgRUNDIFBPU1QgZm9yIDQ0MEVQeC9HUngKLQotICAgIFRoaXMgcGF0Y2ggYWxsb3dzIHRoZSBFQ0MgUE9TVCB0byBiZSB1c2VkIGZvciBkaWZmZXJlbnQgYm9hcmRzIHdpdGggdGhlCi0gICAgUFBDNDQwIERlbmFsaSBTRFJBTSBjb250cm9sbGVyLiAgTW9kaWZpY2F0aW9ucyBpbmNsdWRlIHNraXBwaW5nIHRoZSB0ZXN0Ci0gICAgaWYgRUNDIGlzIG5vdCBlbmFibGVkIChhcyBmb3Igbm9uLUVDQyBESU1NcykgYW5kIGFkZGluZyBzeW5jaHJvbml6YXRpb24KLSAgICB0byBwcmV2ZW50IHRpbWluZyBlcnJvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLQotY29tbWl0IDQ1NGE2Y2Y4ZDQ5OGY3MGQyYjNlMThmMDc4Mzc2MDNlYjI0YjEyZDQKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+Ci1EYXRlOglTYXQgT2N0IDI3IDEyOjQ4OjA1IDIwMDcgLTA0MDAKLQotICAgIFBQQzR4eDogTW92ZS9yZW5hbWUgRUNDIFBPU1QgZm9yIDQ0MEVQeC9HUngKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotCi1jb21taXQgYzI5ZDJkMzY4MDA0NmQ0MzAwMjJjNTVlNTBmY2IyN2Y1ODY2NTE3ZQotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBEZWMgMTQgMTE6MjA6MzMgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiB1c2UgY29ycmVjdCBpbyBhY2Nlc3NvcnMgZm9yIDR4eCBldGhlcm5ldCBQT1NUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGJhNzlmZGU1OGE0OGMwYTZmZjhlMmE5NmNhYmE5NTE1OTQxNDIyMDMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglGcmkgRGVjIDE0IDExOjE5OjU2IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogZml4IGZsdXNoICsgaW52YWxpZGF0ZV9kY2FjaGVfcmFuZ2UgYXJndW1lbnRzCi0KLSAgICBmbHVzaCArIGludmFsaWRhdGVfZGNhY2hlX3JhbmdlKCkgZXhwZWN0IHRoZSBzdGFydCBhbmQgc3RvcCsxIGFkZHJlc3MuCi0gICAgU28gdGhlIHN0b3AgYWRkcmVzcyBpcyB0aGUgZmlyc3QgYWRkcmVzcyBiZWhpbmQgKCEpIHRoZSByYW5nZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgODcxZTZjZTE4OGE3YzZiYzczMjFiY2Y4MzcyODU3MDM1ZDIwZjFjZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgRGVjIDE0IDA4OjQxOjI5IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogZmR0OiB1c2UgZmR0X2ZpeHVwX2V0aGVybmV0KCkKLQotICAgIEJ5IHVzaW5nIGFsaWFzZXMgaW4gdGhlIGR0cyBmaWxlLCB0aGUgZXRoZXJuZXQgbm9kZSBmaXh1cCBpcwotICAgIG11Y2ggZWFzaWVyIHdpdGggdGhlIHJlY2VudGx5IGFkZGVkIGZ1bmN0aW9ucy4KLQotICAgIFBsZWFzZSBub3RlIHRoYXQgdGhlIGR0cyBmaWxlIG5lZWRzIHRoZSBhbGlhc2VzIGZvciB0aGlzIHRvIHdvcmsuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMzYyODg4NDdlM2IwNGYyZmYzNTdhMDY3YWQ0NWUxMGFmYTBhMjRjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBEZWMgMTMgMTQ6NTI6NTMgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBCcmluZyA0eHggZmR0IHN1cHBvcnQgdXAtdG8tZGF0ZQotCi0gICAgVGhpcyBwYXRjaCB1cGRhdGUgdGhlIDR4eCBmZHQgc3VwcG9ydC4gSXQgZW5hYmxlZCBmZHQgYm9vdGluZwotICAgIG9uIHRoZSBBTUNDIEtpbGF1ZWEgYW5kIFNlcXVvaWEgZm9yIG5vdy4gTW9yZSBjYW4gZm9sbG93IGxhdGVyCi0gICAgcXVpdGUgZWFzaWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGRjODBlMjc1OWZiYTg1OWNjYzRjZGFkYzYzMzU3N2NhMjk3MWYzZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgRGVjIDI3IDA3OjUwOjU0IDIwMDcgKzAxMDAKLQotICAgIGNmaV9mbGFzaDogQWRkIG1pc3NpbmcgY2hlY2sgZm9yIGVyYXNlZCBkZXN0IHRvIGZsYXNoX3dyaXRlX2NmaWJ1ZmZlcigpCi0KLSAgICBUaGUgY2hlY2sgZm9yIGFuIHN1ZmZpY2llbnRseSBlcmFzZWQgZGVzdGluYXRpb24gd2FzIG1pc3NpbmcgaW4gdGhlCi0gICAgYnVmZmVyZWQgd3JpdGUgZnVuY3Rpb24gb2YgdGhlIGNmaSBmbGFzaCBkcml2ZXIgKHdoZW4KLSAgICBDRkdfRkxBU0hfVVNFX0JVRkZFUl9XUklURSBpcyBkZWZpbmVkKS4gVGhpcyBwYXRjaCBhZGRzIHRoaXMgY2hlY2sgdG8gdGhhdAotICAgIHdyaXRpbmcgdG8gc3VjaCBhIHJlZ2lvbiB3aWxsIGZhaWwgd2l0aCB0aGUgY3VycmVjdCBlcnJvciBtZXNzYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzNlZDczYmMwZTM4ZDBmMmI1YzE4M2Q0NjI5ZDhmMjA3ZTViOTk5NAotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CU1vbiBOb3YgMTIgMTA6NTY6MTcgMjAwNyArMDEwMAotCi0gICAgU29tZSBjb25maWd1cmF0aW9uIHVwZGF0ZXMgZm9yIHRoZSBUUU01MjAwIGJhc2VkIFRCNTIwMCBib2FyZDoKLQotICAgIC0gZW5hYmxlIGNvbW1hbmQgbGluZSBoaXN0b3J5Ci0gICAgLSBpbmNyZWFzZSBtYWxsb2Mgc3BhY2UgKGJlY2F1c2Ugb2YgYmlnZ2VyIGZsYXNoIHNlY3RvcnMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IGUzMThkOWU5MDIxYTBhZjc1MDgxNzFmODRlZDA5ZDBlNzlmMDI4NGUKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci1EYXRlOglUaHUgU2VwIDI3IDExOjEwOjA4IDIwMDcgKzAyMDAKLQotICAgIFRRTTh4eDogdXNlIHRoZSBDRkkgZmxhc2ggZHJpdmVyIG9uIGFsbCBUUU04eHggYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IDExZDllZWM0NzliNDcwZWFiOTI0MmFiOTM3ZmNhNzBhODc2ZDkzNzYKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci1EYXRlOglXZWQgU2VwIDI2IDE3OjU1OjU2IDIwMDcgKzAyMDAKLQotICAgIFRRTTg4NUQ6IGFkanVzdCBmb3IgZG91YmxlZCBmbGFzaCBzZWN0b3Igc2l6ZSArIHNvbWUgbWlub3IgZml4ZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgMjJkMWE1NmNiZmIwYmZmMzRmNDc3YjRkYjZhNTVkMDc2ZDgyOWI4MwotQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxqZW5zLmdlaHJsZWluQHRxcy5kZT4KLURhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTQgMjAwNyArMDIwMAotCi0gICAgVFFNODg1RDogRXhjaGFuZ2VkIFNEUkFNIHRpbWluZyBieSBhIG1vcmUgcmVsYXhlZCB0aW1pbmcuCi0KLSAgICBDQVMtTGF0ZW5jeT0yLCBXcml0ZSBSZWNvdmVyeSBUaW1lIHRXUj0yCi0gICAgVGhlIG1heC4gc3VwcG9ydGVkIGJ1cyBmcmVxdWVuY3kgaXMgNjYgTUh6LiBUaGVyZWZvcmUsIGNoYW5nZWQKLSAgICB0aHJlc2hvbGQgdG8gc3dpdGNoIGZyb20gMToxIG1vZGUgdG8gMjoxIGZyb20gODAgTUh6IHRvIDY2IE1Iei4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgYjk4OGI4Y2Q0NDM5ODliZTY1MTYxODg4ZWVhMDEyN2FkMDNmODQ2ZgotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTYgMjAwNyArMDIwMAotCi0gICAgVFFNODg1RDogdXNlIGNhbGN1bGF0ZWQgY3B1Y2xrIGluc3RlYWQgb2YgbWVhc3VyaW5nIGl0Ci0KLSAgICBPbiB0aGUgVFFNODg1RCB0aGUgbWVhc3VyZW1lbnQgb2YgY3B1Y2xrIHdpdGggdGhlIFBJVCByZWZlcmVuY2UKLSAgICB0aW1lciBpc3Qgbm90IG5lY2Vzc2FyeS4gU2luY2UgYWxsIG1vZHVsZSB2YXJpYW50cyB1c2UgdGhlIHNhbWUKLSAgICBleHRlcm5hbCAxMCBNSHogb3NjaWxsYXRvciwgdGhlIGNwdWNsayBvbmx5IGRlcGVuZHMgb24gdGhlIFBMTAotICAgIGNvbmZpZ3VyYXRpb24gLSB3aGljaCBpcyByZWFkYWJsZSBieSBzb2Z0d2FyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgNDkyYzcwNDk4NjkzNDhkMzExNjhkZThkYWQ4OTY1MTMxNWU0NjhlMAotQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxqZW5zLmdlaHJsZWluQHRxcy5kZT4KLURhdGU6CVRodSBTZXAgMjcgMTQ6NTQ6NDYgMjAwNyArMDIwMAotCi0gICAgVFFNODg1RDogZml4IFNEUkFNIHJlZnJlc2gKLQotICAgIEF0IDEzMyBNSHogdGhlIGN1cnJlbnQgU0RSQU0gcmVmcmVzaCByYXRlIGlzIHRvbyBmYXN0Ci0gICAgKG1lYXN1cmVkIDQgKiAxLjE3IHVzKS4KLSAgICBDRkdfTUFNUl9QVEEgY2hhbmdlcyBmcm9tIDM5IHRvIDEyOC4gVGhpcyByZXN1bHQKLSAgICBpbiBhIHJlZnJlc2ggcmF0ZSBvZiA0ICogNy44IHVzIGF0IHRoZSBkZWZhdWx0IGNsb2NrCi0gICAgNjYgTUh6LiBBdCAxMzMgTUh6IHRoZSB2YWx1ZSB3aWxsIGJlIHRoZW4gNCAqIDMuOCB1cy4KLSAgICBUaGlzIGlzIGEgY29tcHJvbWlzZSB1bnRpbCBhIG5ldyBtZXRob2QgaXMgZm91bmQgdG8KLSAgICBhZGp1c3QgdGhlIHJlZnJlc2ggcmF0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgZGFiYWQ0YjliYzQ2OTA4ZTMwMWY3M2NlNzZiMzhiMjM2MjZhOTZlOQotQXV0aG9yOiBKZW5zIEdlaHJsZWluIDxqZW5zLmdlaHJsZWluQHRxcy5kZT4KLURhdGU6CVRodSBTZXAgMjcgMTQ6NTQ6NDYgMjAwNyArMDIwMAotCi0gICAgVFFNODYwTTogU3VwcG9ydCBmb3IgMTBjb2wgU0RSQU1zLCBtYXguIDEyOCBNaUIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgNjFmYjE1YzUxNmZlZjU2MzFlMzA1ZjE5NzZkN2IzYTY3OTcyNTg1NgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IERlYyAyNyAwMTo1Mjo1MCAyMDA3ICswMTAwCi0KLSAgICBGaXggY29kaW5nIHN0eWxlIGlzc3VlczsgdXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0NjdiY2VlMTFmZTI2YWQ0MjJmMmRlOTcxYWE3MDg2NjA3OTg3MGYyCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIERlYyAxNCAxNTozNjoxOCAyMDA3ICswMTAwCi0KLSAgICBjZmlfZmxhc2g6IEFkZCBtYW51ZmFjdHVyZXItc3BlY2lmaWMgZml4dXBzCi0KLSAgICBSdW4gZml4dXBzIGJhc2VkIG9uIHRoZSBKRURFQyBtYW51ZmFjdHVyZXIgSUQgaW5kZXBlbmRlbnQgb2YgdGhlCi0gICAgY29tbWFuZCBzZXQgSUQuCi0KLSAgICBUaGlzIGNoYW5nZXMgY3VycmVudCBiZWhhdmlvdXI6IFByZXZpb3VzbHksIGdlb21ldHJ5IHJldmVyc2FsIGZvciBBTUQKLSAgICBjaGlwcyB3ZXJlIGRvbmUgYmFzZWQgb24gdGhlIGNvbW1hbmQgc2V0IElELCB3aGlsZSB0aGV5IGFyZSBub3cgZG9uZQotICAgIGJhc2VkIG9uIHRoZSBKRURFQyBtYW51ZmFjdHVyZXIgYW5kIGRldmljZSBJRC4KLQotICAgIEFsc28gYWRkIGZpeHVwIGZvciB0b3AtYm9vdCBBdG1lbCBjaGlwcy4gQSBmaXh1cCBpcyBuZWVkZWQgZm9yCi0gICAgQVQ0OUJWNjQxNihUKSB0b28sIGJ1dCBzaW5jZSB1LWJvb3QgY3VycmVudGx5IG9ubHkgcmVhZHMgdGhlIGxvdyBieXRlCi0gICAgb2YgdGhlIGRldmljZSBJRCwgdGhlcmUncyBubyB3YXkgdG8gdGVsbCBpdCBhcGFydCBmcm9tIEFUNDlCVjY0MkQsCi0gICAgd2hpY2ggc2hvdWxkIG5vdCBoYXZlIHRoaXMgZml4dXAuIFNpbmNlIEFUNDlCVjY0MkQgc3VwcG9ydCBpcwotICAgIG5lY2Vzc2FyeSB0byBnZXQgQVROR1cxMDAgYm9hcmQgc3VwcG9ydCBpbnRvIG1haW5saW5lLCBJJ3ZlIGNvbW1lbnRlZAotICAgIG91dCB0aGUgZml4dXAgZm9yIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMGRkZjA2ZGRmNmI0YmQwNTdhZDRjNWYwZGZmZWE3ODcwYmEwNmEyYQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBEZWMgMTQgMTU6MzY6MTcgMjAwNyArMDEwMAotCi0gICAgY2ZpX2ZsYXNoOiBBZGQgY21kc2V0LXNwZWNpZmljIGluaXQgZnVuY3Rpb25zCi0KLSAgICBNb3ZlIHRoaW5ncyBsaWtlIHJlYWRpbmcgSkVERUMgSURzIGFuZCBmaXhpbmcgdXAgZ2VvbWV0cnkgcmV2ZXJzYWwKLSAgICBpbnRvIHNlcGFyYXRlIGZ1bmN0aW9ucy4gVGhlIGdlb21ldHJ5IHJldmVyc2FsIGZpeHVwIGlzIG5vdyBwZXJmb3JtZWQKLSAgICBieSBhbHRlcmluZyB0aGUgcXJ5IHN0cnVjdHVyZSBkaXJlY3RseSwgd2hpY2ggbWFrZXMgdGhlIHNlY3RvciBpbml0Ci0gICAgY29kZSBzbGlnaHRseSBjbGVhbmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBlMjM3NDFmNGE2ZDgwNDc1MjBlZjBkNDk3MTc2Mjc0OWIzNTg3ZDMyCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIERlYyAxNCAxNTozNjoxNiAyMDA3ICswMTAwCi0KLSAgICBjZmlfZmxhc2g6IFJlYWQgd2hvbGUgUVJZIHN0cnVjdHVyZSBpbiBvbmUgZ28KLQotICAgIFJlYWQgb3V0IHRoZSB3aG9sZSBDRkkgU3RhbmRhcmQgUXVlcnkgc3RydWN0dXJlIGFmdGVyIHN1Y2Nlc3NmdWwgY2ZpCi0gICAgaWRlbnRpZmljYXRpb24uIFRoaXMgYWxsb3dzIHN1YnNlcXVlbnQgY29kZSB0byBhY2Nlc3MgdGhpcyBpbmZvcm1hdGlvbgotICAgIGRpcmVjdGx5IHdpdGhvdXQgaGF2aW5nIHRvIGdvIHRocm91Z2ggZmxhc2hfcmVhZF91Y2hhcigpIGFuZCBmcmllbmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBkZjljMjVlYTA0YjM4YTBlMDVkNGY4YzczYzVjYzE0NGNkYWZhN2RiCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIERlYyAxNyAxMTowMjo0NCAyMDA3ICswMTAwCi0KLSAgICBBVlIzMjogRml4IGxvZ2ljIGludmVyc2lvbiBpbiBkaXNhYmxlX2ludGVycnVwdHMoKQotCi0gICAgZGlzYWJsZV9pbnRlcnJ1cHRzKCkgc2hvdWxkIHJldHVybiBub256ZXJvIGlmIGludGVycnVwdHMgd2VyZQotICAgIF9lbmFibGVkXyBiZWZvcmUsIG5vdCBkaXNhYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYWNhYzQ3NTIxMmNiZWRiMTdiMzIxYTM2M2ExYzg3OGUyYjQ3YjM3ZgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBEZWMgMTQgMTY6NTE6MjIgMjAwNyArMDEwMAotCi0gICAgQVZSMzI6IEVuYWJsZSBpbnRlcnJ1cHRzIGF0IGJvb3R1cAotCi0gICAgVGhlIHRpbWVyIGNvZGUgZGVwZW5kcyBvbiB0aGUgdGltZXIgaW50ZXJydXB0IHRvIGtlZXAgdHJhY2sgb2YgdGhlCi0gICAgdXBwZXIgMzIgYml0cyBvZiB0aGUgY3ljbGUgY291bnRlci4gVGhpcyBvYnZpb3VzbHkgZG9lc24ndCB3b3JrIHdoZW4KLSAgICBpbnRlcnJ1cHRzIGFyZSBkaXNhYmxlZCB0aGUgd2hvbGUgdGltZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgOTU3MGJjZDg3ZjRkYjI1NTUxNGY0M2I2NzAxNzQ2YzQxMmY4ZmVmMAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVRodSBOb3YgMTUgMTA6MDM6NDUgMjAwNyArMDEwMAotCi0gICAgQVZSMzI6IEZpeCB3cm9uZyBwaW4gc2V0dXAgZm9yIFVTQVJUMwotCi0gICAgQXMgcmVwb3J0ZWQgYnkgR2VyaGFyZCBCZXJnaG9mZXI6Ci0KLSAgICBpbiAiZ3Bpb19lbmFibGVfdXNhcnQzIiB0aGUgY29ycmVjdCBwaW5zIGZvciBVU0FSVCAzIGFyZSBQQjE3IGFuZCBQQjE4Ci0gICAgaW5zdGVhZCBvZiBQQjE4IGFuZCBQQjE5LgotCi0gICAgd2hpY2ggaXMgb2J2aW91c2x5IGNvcnJlY3QuIFRoZXJlJ3MgY3VycmVudGx5IG5vIGNvZGUgdGhhdCB1c2VzCi0gICAgVVNBUlQzLCBidXQgY3VzdG9tIGJvYXJkcyBtYXkgcnVuIGludG8gcHJvYmxlbXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDA5ZWEwZGUwM2RjYzNlZTdhZjA0NWIwYjU3MjIyN2JkYTJjMWM5MTgKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgTm92IDEgMTI6NDQ6MjAgMjAwNyArMDEwMAotCi0gICAgUkVBRE1FOiBSZW1vdmUgQVRTVEsxMDAwIGRhdWdodGVyYm9hcmQgbGlzdAotCi0gICAgQXMgbm90ZWQgYnkgS2ltIFBoaWxsaXBzLCB0aGVzZSBsaXN0cyB0ZW5kIHRvIGJlY29tZSBvdXQgb2YgZGF0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYzgxY2JiYWQyMWNiMGFlOTgzZTJlNzk2MjExMjAyMjM0Y2RjOGJlMgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVR1ZSBPY3QgMzAgMTQ6NTY6MzYgMjAwNyArMDEwMAotCi0gICAgQWRkIEFUU1RLMTAwWzIzNF0gdG8gTUFJTlRBSU5FUlMKLQotICAgIEFkZCBhbGwgdGhlIEFUU1RLMTAwMCBkYXVnaHRlcmJvYXJkcyB0byBNQUlOVEFJTkVSUyBhbG9uZyB3aXRoIHRoZWlyCi0gICAgIm1vdGhlciIuIEFsc28gdXBkYXRlIHRoZSBlbnRyeSBmb3IgQVRTVEsxMDAwIHRvIGJlIG5vdCBvbmx5IGFib3V0IHRoZQotICAgIEFQNzAwMCBDUFU7IGl0J3MgaW50ZW5kZWQgdG8gaGFuZGxlIGFsbCBDUFVzIGluIHRoZSBBVDMyQVAgZmFtaWx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA2NGZmMjM1N2IxNzI3MjEzODAzNTkxODEzZGJjNzc5YzkyNGJmNzcyCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIE9jdCAyOSAxMzowMjo1NCAyMDA3ICswMTAwCi0KLSAgICBBVlIzMjogQWRkIHN1cHBvcnQgZm9yIHRoZSBBVFNUSzEwMDQgYm9hcmQKLQotICAgIEFUU1RLMTAwNCBpcyBhIGRhdWdodGVyYm9hcmQgZm9yIEFUU1RLMTAwMCB3aXRoIHRoZSBBVDMyQVA3MDAyIENQVSwKLSAgICB3aGljaCBpcyBhIGRlcml2YXRpdmUgb2YgQVQzMkFQNzAwMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNjY3NTY4ZGIxNTdmMzc0Yjg1YWJkN2UwMzU5NmRkZDFmMGIyNTY4MQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CU1vbiBPY3QgMjkgMTM6MDI6NTQgMjAwNyArMDEwMAotCi0gICAgQVZSMzI6IEFkZCBzdXBwb3J0IGZvciB0aGUgQVRTVEsxMDAzIGJvYXJkCi0KLSAgICBBVFNUSzEwMDMgaXMgYSBkYXVnaHRlcmJvYXJkIGZvciBBVFNUSzEwMDAgd2l0aCB0aGUgQVQzMkFQNzAwMSBDUFUsCi0gICAgd2hpY2ggaXMgYSBkZXJpdmF0aXZlIG9mIEFUMzJBUDcwMDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDVmZWU4NGE3OTRhNTFlYzgzMDU0OGNkYTQ4NWE3NzBlZmIwMThiOTIKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglNb24gT2N0IDI5IDEzOjIzOjMzIDIwMDcgKzAxMDAKLQotICAgIEFWUjMyOiBNYWtlIHNvbWUgQVQzMkFQNzAweCBwZXJpcGhlcmFscyBvcHRpb25hbAotCi0gICAgQWRkIGEgY2hpcC1mZWF0dXJlcyBmaWxlIHByb3ZpZGluZyBkZWZpbml0aW9ucyBvZiB0aGUgZm9ybQotCi0gICAgQVQzMkFQNzAweF9DSElQX0hBU188cGVyaXBoZXJhbD4KLQotICAgIHRvIGluZGljYXRlIHRoZSBhdmFpbGFiaWxpdHkgb2YgdGhlIGdpdmVuIHBlcmlwaGVyYWwgb24gdGhlIGN1cnJlbnRseQotICAgIHNlbGVjdGVkIGNoaXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDM2ZjI4ZjhhOTYwNWVlNWRjZmEzMzA0ODJjZmM2MjE3MTI2MWFmOTcKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglNb24gT2N0IDI5IDEzOjA5OjU2IDIwMDcgKzAxMDAKLQotICAgIEFWUjMyOiBSZW5hbWUgYXQzMmFwNzAwMCAtPiBhdDMyYXA3MDB4Ci0KLSAgICBUaGUgU29DLXNwZWNpZmljIGNvZGUgZm9yIGFsbCB0aGUgQVQzMkFQNzAweCBDUFVzIGlzIHByYWN0aWNhbGx5Ci0gICAgaWRlbnRpY2FsOyB0aGUgb25seSBkaWZmZXJlbmNlIGlzIHRoYXQgc29tZSBjaGlwcyBoYXZlIGxlc3MgZmVhdHVyZXMKLSAgICB0aGFuIG90aGVycy4gQnkgZG9pbmcgdGhpcyByZW5hbWUsIHdlIGNhbiBhZGQgc3VwcG9ydCBmb3IgdGhlIEFQNzAwMAotICAgIGRlcml2YXRpdmVzIHNpbXBseSBieSBtYWtpbmcgc29tZSBmZWF0dXJlcyBjb25kaXRpb25hbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNGQ1ZmE5OWM3M2YzNTRlN2NmOTg1ZWZjZjQxN2VhNTVjYTJmNmE1ZQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBKdW4gMjkgMTg6MjI6MzQgMjAwNyArMDIwMAotCi0gICAgYXRtZWxfbWNpOiBTaG93IFNSIHdoZW4gYmxvY2sgcmVhZCBmYWlscwotCi0gICAgU2hvdyBjb250cm9sbGVyIHN0YXR1cyBhcyB3ZWxsIGFzIGNhcmQgc3RhdHVzIHdoZW4gYW4gZXJyb3Igb2NjdXJzCi0gICAgZHVyaW5nIGJsb2NrIHJlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDg2OTdlNmExOWIxMGY1MTQ1MTFiNmE5Yzg2ZGU4OGJkMTA4YzRmOGQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IERlYyAxMyAxNDo1Mjo1MyAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IEJyaW5nIDR4eCBmZHQgc3VwcG9ydCB1cC10by1kYXRlCi0KLSAgICBUaGlzIHBhdGNoIHVwZGF0ZSB0aGUgNHh4IGZkdCBzdXBwb3J0LiBJdCBlbmFibGVkIGZkdCBib290aW5nCi0gICAgb24gdGhlIEFNQ0MgS2lsYXVlYSBhbmQgU2VxdW9pYSBmb3Igbm93LiBNb3JlIGNhbiBmb2xsb3cgbGF0ZXIKLSAgICBxdWl0ZSBlYXNpbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMmQzMGFhNzk3NzljMmFhN2E5OThiYmFlNGMwNzVmODIyYTUzMDA0Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJVGh1IERlYyAxMyAxMjo1NjozNCAyMDA3ICswMTAwCi0KLSAgICBjZmlfZmxhc2g6IFVzZSBtYXBfcGh5c21lbSgpIGFuZCB1bm1hcF9waHlzbWVtKCkKLQotICAgIFVzZSBtYXBfcGh5c21lbSgpIGFuZCB1bm1hcF9waHlzbWVtKCkgdG8gY29udmVydCBmcm9tIHBoeXNpY2FsIHRvCi0gICAgdmlydHVhbCBhZGRyZXNzZXMuIFRoaXMgZ2l2ZXMgdGhlIGFyY2ggYSBjaGFuY2UgdG8gcHJvdmlkZSBhbiB1bmNhY2hlZAotICAgIG1hcHBpbmcgZm9yIGZsYXNoIGFjY2Vzc2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA0ZDdkNjkzNmViMjlhZjdjY2EzMzA5Mzc4MDgzMTJhYTVmNjE0NTRkCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJVGh1IERlYyAxMyAxMjo1NjozMyAyMDA3ICswMTAwCi0KLSAgICBJbnRyb2R1Y2UgbWFwX3BoeXNtZW0oKSBhbmQgdW5tYXBfcGh5c21lbSgpCi0KLSAgICBtYXBfcGh5c21lbSgpIHJldHVybnMgYSB2aXJ0dWFsIGFkZHJlc3Mgd2hpY2ggY2FuIGJlIHVzZWQgdG8gYWNjZXNzIGEKLSAgICBnaXZlbiBwaHlzaWNhbCBhZGRyZXNzIHdpdGhvdXQgaW52b2x2aW5nIHRoZSBjYWNoZS4gdW5tYXBfcGh5c21lbSgpCi0gICAgc2hvdWxkIGJlIGNhbGxlZCB3aGVuIHRoZSB2aXJ0dWFsIGFkZHJlc3MgcmV0dXJuZWQgYnkgbWFwX3BoeXNtZW0oKSBpcwotICAgIG5vIGxvbmdlciBuZWVkZWQuCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgYSBzdHViIGltcGxlbWVudGF0aW9uIHdoaWNoIHNpbXBseSByZXR1cm5zIHRoZQotICAgIHBoeXNpY2FsIGFkZHJlc3MgY2FzdCB0byBhIHVjaGFyICogZm9yIGFsbCBhcmNoaXRlY3R1cmVzIGV4Y2VwdCBBVlIzMiwKLSAgICB3aGljaCBjb252ZXJ0cyB0aGUgcGh5c2ljYWwgYWRkcmVzcyB0byBhbiB1bmNhY2hlZCB2aXJ0dWFsIG1hcHBpbmcuCi0gICAgdW5tYXBfcGh5c21lbSgpIGlzIGEgbm8tb3Agb24gYWxsIGFyY2hpdGVjdHVyZXMsIGJ1dCBpZiBhbnkKLSAgICBhcmNoaXRlY3R1cmUgbmVlZHMgdG8gZG8gc3VjaCBtYXBwaW5ncyB0aHJvdWdoIHRoZSBUTEIsIHRoaXMgaXMgdGhlCi0gICAgaG9vayB3aGVyZSB0aG9zZSBUTEIgZW50cmllcyBjYW4gYmUgaW52YWxpZGF0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGNkYmFlZmI1ZjVmMDNlNTQ0NTVkMDQzOWRjZjZkYmQ5N2VhZDFmOWQKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgRGVjIDEzIDEyOjU2OjMyIDIwMDcgKzAxMDAKLQotICAgIGNmaV9mbGFzaDogSW50cm9kdWNlIHJlYWQgYW5kIHdyaXRlIGFjY2Vzc29ycwotCi0gICAgSW50cm9kdWNlIGZsYXNoX3JlYWR7OCwxNiwzMiw2NCkgYW5kIGZsYXNoX3dyaXRlezgsMTYsMzIsNjR9IGFuZCB1c2UKLSAgICB0aGVtIHRvIGFjY2VzcyB0aGUgZmxhc2ggbWVtb3J5LiBUaGlzIG1ha2VzIGl0IGNsZWFyZXIgd2hlbiB0aGUgZmxhc2gKLSAgICBpcyBhY3R1YWxseSBiZWluZyBhY2Nlc3NlZDsgbWVyZWx5IGRlcmVmZXJlbmNpbmcgYSB2b2xhdGlsZSBwb2ludGVyCi0gICAgbG9va3MganVzdCBsaWtlIGFueSBvdGhlciBraW5kIG9mIGFjY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgODEyNzExY2U2YjNhMzg2MTI1ZGNmMGQ2YTU5NTg4ZTQ2MWFiYmI4NwotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVRodSBEZWMgMTMgMTI6NTY6MzEgMjAwNyArMDEwMAotCi0gICAgSW1wbGVtZW50IF9fcmF3X3tyZWFkLHdyaXRlfVtid2xdIG9uIGFsbCBhcmNoaXRlY3R1cmVzCi0KLSAgICBUaGlzIGFkZHMgaW1wbGVtZW50YXRpb25zIG9mIF9fcmF3X3JlYWRbYndsXSBhbmQgX19yYXdfd3JpdGVbYndsXSB0bwotICAgIG02OGssIHBwYywgbmlvcyBhbmQgbmlvczIuIFRoZSBtNjhrIGFuZCBwcGMgaW1wbGVtZW50YXRpb25zIHdlcmUgdGFrZW4KLSAgICBmcm9tIExpbnV4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBiZTYwYTkwMjFjODJmYzVhZWNkNWIyYjFmYzk2ZjcwYTljODFiYmNkCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU2F0IE9jdCA2IDE4OjU1OjM2IDIwMDcgKzAyMDAKLQotICAgIGNmaV9mbGFzaDogUmVvcmRlciBmdW5jdGlvbnMgYW5kIGVsaW1pbmF0ZSBleHRyYSBwcm90b3R5cGVzCi0KLSAgICBSZW9yZGVyIHRoZSBmdW5jdGlvbnMgaW4gY2ZpX2ZsYXNoLmMgc28gdGhhdCBlYWNoIGZ1bmN0aW9uIG9ubHkgdXNlcwotICAgIGZ1bmN0aW9ucyB0aGF0IGhhdmUgYmVlbiBkZWZpbmVkIGJlZm9yZSBpdC4gVGhpcyBhbGxvd3MgdGhlIHN0YXRpYwotICAgIHByb3RvdHlwZSBkZWNsYXJhdGlvbnMgbmVhciB0aGUgdG9wIHRvIGJlIGVsaW1pbmF0ZWQgYW5kIG1pZ2h0IGFsbG93Ci0gICAgZ2NjIHRvIGRvIGEgYmV0dGVyIGpvYiBpbmxpbmluZyBmdW5jdGlvbnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDMwNTU3OTNiY2JkZjI0YjFmODExN2Y2MDZmZmI3NjZkMzJlYjc2NmYKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglUaHUgRGVjIDEzIDEyOjU2OjI5IDIwMDcgKzAxMDAKLQotICAgIGNmaV9mbGFzaDogTWFrZSBzb21lIG5lZWRsZXNzbHkgZ2xvYmFsIGZ1bmN0aW9ucyBzdGF0aWMKLQotICAgIE1ha2UgZnVuY3Rpb25zIG5vdCBkZWNsYXJlZCBpbiBhbnkgaGVhZGVyIGZpbGUgc3RhdGljLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA3ZTViOWI0NzE1MThjNTY1MmZlYmM2OGJhNjJiNDMyMTkzZDZhYmY0Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJVGh1IERlYyAxMyAxMjo1NjoyOCAyMDA3ICswMTAwCi0KLSAgICBjZmlfZmxhc2g6IEJyZWFrIGxvbmcgbGluZXMKLQotICAgIFRoaXMgcGF0Y2ggdHJpZXMgdG8ga2VlcCBhbGwgbGluZXMgaW4gdGhlIGNmaV9mbGFzaCBkcml2ZXIgYmVsb3cgODAKLSAgICBjb2x1bW5zLiBUaGVyZSBhcmUgYSBmZXcgbGluZXMgbGVmdCB3aGljaCBkb24ndCBmaXQgdGhpcyByZXF1aXJlbWVudAotICAgIGJlY2F1c2UgSSBjb3VsZG4ndCBmaW5kIGFueSB0cml2aWFsIHdheSB0byBicmVhayB0aGVtIChpLmUuIGl0IHdvdWxkCi0gICAgdGFrZSBzb21lIHJlc3RydWN0dXJpbmcsIHdoaWNoIEkgaW50ZW5kIHRvIGRvIGluIGEgbGF0ZXIgcGF0Y2guKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA0MjAyNmM5Y2IzYTc2ODQ5YjQxZTZlMjRhYmZiN2I1NjgwN2E1YzFhCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgRGVjIDExIDEzOjU5OjU3IDIwMDcgKzAxMDAKLQotICAgIENGSTogc3luY2hyb25pemUgY29tbWFuZCBvZmZzZXRzIHdpdGggTGludXggQ0ZJIGRyaXZlcgotCi0gICAgRml4ZXMgbm9uLXdvcmtpbmcgQ0ZJIEZsYXNoIG9uIHRoZSBJbmthNHgwIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDhmZjNkZTYxZmM1ZjliM2IyMTY0N2JjZTA4MWEzYjdmNzEwZjBkNGQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBEZWMgNyAxMjoxNzozNCAyMDA3IC0wNjAwCi0KLSAgICBIYW5kbGUgTVBDODV4eCBQQ0llIHJlc2V0IGVycmF0YSAoUENJLUV4IDM4KQotCi0gICAgT24gdGhlIE1QQzg1eHggYm9hcmRzIHRoYXQgaGF2ZSBQQ0llIGVuYWJsZSB0aGUgUENJZSBlcnJhdGEgZml4LgotICAgIChNUEM4NTQ0RFMsIE1QQzg1NDhDRFMsIE1QQzg1NjhNRFMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDgyYWM4Yzk3MTQ1YTRjM2JmOGIzZGJmYWQwMGZhOTZlOTIwZjliOWMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CUZyaSBEZWMgNyAxMjowNDozMCAyMDA3IC0wNjAwCi0KLSAgICBVcGRhdGUgRnJlZXNjYWxlIE1QQzg1eHggQURTL0NEUy9NRFMgYm9hcmQgY29uZmlnCi0KLSAgICAqIEVuYWJsZWQgQ09ORklHX0NNRF9FTEYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkNDM1NzkzMjI5Y2UyOWE0Mjc5N2MxZWRjMzlmNWIzNGY5ODdmOTFhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglGcmkgRGVjIDcgMDQ6NTk6MjYgMjAwNyAtMDYwMAotCi0gICAgSGFuZGxlIEFzeW5jaHJvbm91cyBERFIgY2xvY2sgb24gODV4eAotCi0gICAgVGhlIE1QQzg1NzIgaW50cm9kdWNlcyB0aGUgY29uY2VwdCBvZiBhbiBhc3luY2hyb25vdXMgRERSIGNsb2NrIHdpdGgKLSAgICByZWdhcmRzIHRvIHRoZSBwbGF0Zm9ybSBjbG9jay4KLQotICAgIEludHJvZHVjZSBnZXRfZGRyX2ZyZXEoKSB0byByZXBvcnQgdGhlIEREUiBmcmVxIHJlZ2FyZGxlc3Mgb2Ygc3luYy9hc3luYwotICAgIG1vZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMjJhYmIyZDJlYWY3Yjc5NWE2OTIzYzYyNzNlYzljYjUzZmRhOWExMAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE5vdiAyOSAxMDozNDoyOCAyMDA3IC0wNjAwCi0KLSAgICBVcGRhdGUgRnJlZXNjYWxlIE1QQzg1eHggQURTL0NEUy9NRFMgYm9hcmQgY29uZmlnCi0KLSAgICAqIFJlbW92ZWQgc29tZSBtaXNjIGVudmlyb25tZW50IHNldHVwCi0gICAgKiBFbmFibGVkIENPTkZJR19DTURMSU5FX0VESVRJTkcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA0MTVhNjEzYmFiYjg0ZDVlNWQ1YjQyZThlNTUzODY4YzcxZmMzYTY0Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTm92IDI5IDEwOjQ3OjQ0IDIwMDcgLTA2MDAKLQotICAgIE1vdmUgdGhlIE1QQzg1NDEvTVBDODU1NS9NUEM4NTQ4IENEUyBib2FyZCB1bmRlciBib2FyZC9mcmVlc2NhbGUuCi0KLSAgICBNaW5vciBwYXRoIGNvcnJlY3Rpb25zIG5lZWRlZCB0byBlbnN1cmUgYnVpbGRhYmlsaXR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGMyZDk0M2ZmYmZkMzM1OWIzYjQ1ZDE3N2I0MzczNzlkMmNiODZmYmYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBOb3YgMjkgMTA6MTY6MTggMjAwNyAtMDYwMAotCi0gICAgTW92ZSB0aGUgTVBDODU0MCBBRFMgYm9hcmQgdW5kZXIgYm9hcmQvZnJlZXNjYWxlLgotCi0gICAgTWlub3IgcGF0aCBjb3JyZWN0aW9ucyBuZWVkZWQgdG8gZW5zdXJlIGJ1aWxkYWJpbGl0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCA4NzBjZWFjNWIzYTM0ODZjMTA5Mzk2ZTAwNWFmODFhZTc2MmI1NzEwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTm92IDI5IDEwOjE0OjUwIDIwMDcgLTA2MDAKLQotICAgIE1vdmUgdGhlIE1QQzg1NjAgQURTIGJvYXJkIHVuZGVyIGJvYXJkL2ZyZWVzY2FsZS4KLQotICAgIE1pbm9yIHBhdGggY29ycmVjdGlvbnMgbmVlZGVkIHRvIGVuc3VyZSBidWlsZGFiaWxpdHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYWNiY2E4NzZmYjNmZWMyNWNkOWM1NWIwZWZjODFmZjYxOGZmNTI2MgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE5vdiAyOSAxMDoxMzo0NyAyMDA3IC0wNjAwCi0KLSAgICBNb3ZlIHRoZSBNUEM4NTY4IE1EUyBib2FyZCB1bmRlciBib2FyZC9mcmVlc2NhbGUuCi0KLSAgICBNaW5vciBwYXRoIGNvcnJlY3Rpb25zIG5lZWRlZCB0byBlbnN1cmUgYnVpbGRhYmlsaXR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGE4NTNkNTZjNTliMzM0MTUzMDQ1MzE0NDM2MzM4MDg3MzZhY2ZjNmUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBOb3YgMjkgMDI6MTg6NTkgMjAwNyAtMDYwMAotCi0gICAgVXNlIHN0YW5kYXJkIExBV0FSX1RSR1RfSUZfKiBkZWZpbmVzIGZvciBMQVcgc2V0dXAgb24gODV4eAotCi0gICAgV2UgYWxyZWFkeSBoYWQgZGVmaW5lcyBmb3IgTEFXQVJfVFJHVF9JRl8qIHRoYXQgd2Ugc2hvdWxkIHVzZQotICAgIHJhdGhlciB0aGFuIGNyZWF0aW5nIG5ldyBvbmVzLiAgQWxzbywgYWRkZWQgc29tZSBtaXNzaW5nIGRlZmluZXMgZm9yCi0gICAgUENJRSB0YXJnZXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDA0ZGI0MDA4OTJkYTM3Yjc2YTU4NWUzMzJhMGMxMzc5NTRhZDIwMTUKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVRodSBOb3YgMjkgMDI6MTA6MDkgMjAwNyAtMDYwMAotCi0gICAgU3RvcCB1c2luZyBpbW1hcF90IG9uIDg1eHgKLQotICAgIEluIHRoZSBmdXR1cmUgdGhlIG9mZnNldHMgdG8gdmFyaW91cyBibG9ja3MgbWF5IG5vdCBiZSBpbiBzYW1lIGxvY2F0aW9uLgotICAgIE1vdmUgdG8gdXNpbmcgQ0ZHX01QQzg1eHhfKl9BRERSIGFzIHRoZSBiYXNlIG9mIHRoZSByZWdpc3RlcnMKLSAgICBpbnN0ZWFkIG9mIGdldHRpbmcgaXQgdmlhICZpbW1hcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAyNzE0MjIzZjhlMDRhYjNlNDEzM2ZmNjU4NzJlZWYzNjZkOTBiZmVhCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTm92IDI5IDAxOjIzOjA5IDIwMDcgLTA2MDAKLQotICAgIFJlbW92ZSBDT05GSUdfT0ZfRkxBVF9UUkVFIHJlbGF0ZWQgY29kZSBmcm9tIG1wYzg1eHggc2luY2Ugd2Ugbm93IHVzZSBsaWJmZHQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBjNDgwODYxYmYwMDAxNTZlNmEzZTkzMmMyNThkYjU5ZmYyMjEyZGQzCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgTm92IDI5IDAxOjA2OjE5IDIwMDcgLTA2MDAKLQotICAgIFVwZGF0ZSBNUEM4NTY4IE1EUyB0byB1c2UgbGliZmR0Ci0KLSAgICBVcGRhdGVkIHRoZSBNUEM4NTY4IE1EUyBjb25maWcgdG8gdXNlIGxpYmZkdCBhbmQgYXNzdW1lIHVzZSBvZiBhbGlhc2VzIGZvcgotICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDE1NjNmNTZlMGM2OGY2OTIwZjk1NjM4MmQ2ZDEzYmVlM2YwMWMwZjcKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgMTQgMTU6NTI6MDYgMjAwNyAtMDUwMAotCi0gICAgQWRkIFBDSSBFeHByZXNzIHN1cHBvcnQgb24gTVBDODU2OE1EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYjkwZDI1NDk3NjI1YjkwZmZhM2YyOTExYTA4OTVjYTIzNzU1NmZmNQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE5vdiAyOSAwMDoxMTo0NCAyMDA3IC0wNjAwCi0KLSAgICBVcGRhdGUgTVBDODV4eCBDRFMgdG8gdXNlIGxpYmZkdAotCi0gICAgVXBkYXRlZCB0aGUgTVBDODV4eCBDRFMgY29uZmlnIHRvIHVzZSBsaWJmZHQgYW5kIGFzc3VtZSB1c2Ugb2YgYWxpYXNlcyBmb3IKLSAgICBldGhlcm5ldCwgcGNpLCBhbmQgc2VyaWFsIGZvciB0aGUgdmFyaW91cyBmaXh1cHMgdGhhdCBhcmUgZG9uZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwZmQ1ZWM2NmIxMDUyMWEwNTdhZDczZTY5YWI1ZjBmOWVhZmJhMjU1Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgTm92IDI4IDIyOjU0OjI3IDIwMDcgLTA2MDAKLQotICAgIFVwZGF0ZSBNUEM4NTQwIEFEUyB0byB1c2UgbGliZmR0Ci0KLSAgICBVcGRhdGVkIHRoZSBNUEM4NTQwIEFEUyBjb25maWcgdG8gdXNlIGxpYmZkdCBhbmQgYXNzdW1lIHVzZSBvZiBhbGlhc2VzIGZvcgotICAgIGV0aGVybmV0LCBwY2ksIGFuZCBzZXJpYWwgZm9yIHRoZSB2YXJpb3VzIGZpeHVwcyB0aGF0IGFyZSBkb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDVjZTcxNTgwMmY2YzUwZGM3OGIzNDA1YjkyZjE4NGIxZTM3MTA1MTkKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgMjggMjI6NDA6MzEgMjAwNyAtMDYwMAotCi0gICAgVXBkYXRlIE1QQzg1NjAgQURTIHRvIHVzZSBsaWJmZHQKLQotICAgIFVwZGF0ZWQgdGhlIE1QQzg1NjAgQURTIGNvbmZpZyB0byB1c2UgbGliZmR0IGFuZCBhc3N1bWUgdXNlIG9mIGFsaWFzZXMgZm9yCi0gICAgZXRoZXJuZXQsIHBjaSwgYW5kIHNlcmlhbCBmb3IgdGhlIHZhcmlvdXMgZml4dXBzIHRoYXQgYXJlIGRvbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYWFmZWVmYmRiOGIwMjlmNWNhMmExOTU1OThkMGE1MDFhNjA2ZWVhOQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE5vdiAyOCAwMDozNjozMyAyMDA3IC0wNjAwCi0KLSAgICBTdG9wIHVzaW5nIGltbWFwX3QgZm9yIGNwbSBvZmZzZXQgb24gODV4eAotCi0gICAgSW4gdGhlIGZ1dHVyZSB0aGUgb2Zmc2V0cyB0byB2YXJpb3VzIGJsb2NrcyBtYXkgbm90IGJlIGluIHNhbWUgbG9jYXRpb24uCi0gICAgTW92ZSB0byB1c2luZyBDRkdfTVBDODV4eF9DUE1fQUREUiBhcyB0aGUgYmFzZSBvZiB0aGUgQ1BNIHJlZ2lzdGVycwotICAgIGluc3RlYWQgb2YgZ2V0dGluZyBpdCB2aWEgJmltbWFwLT5pbV9jcG0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjU5YjU1YTViOGZjYWRhYTk5NzgxYmE0OGU3YTM4ZTk1NmFmYTUyNwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE5vdiAyNyAyMzoyNTowMiAyMDA3IC0wNjAwCi0KLSAgICBTdG9wIHVzaW5nIGltbWFwX3QgZm9yIGd1dHMgb2Zmc2V0IG9uIDg1eHgKLQotICAgIEluIHRoZSBmdXR1cmUgdGhlIG9mZnNldHMgdG8gdmFyaW91cyBibG9ja3MgbWF5IG5vdCBiZSBpbiBzYW1lIGxvY2F0aW9uLgotICAgIE1vdmUgdG8gdXNpbmcgQ0ZHX01QQzg1eHhfR1VUU19BRERSIGFzIHRoZSBiYXNlIG9mIHRoZSBndXRzIHJlZ2lzdGVycwotICAgIGluc3RlYWQgb2YgZ2V0dGluZyBpdCB2aWEgJmltbWFwLT5pbV9ndXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNTBjMDNjOGNmNDk0ZDkxY2RlYzM5NjcwZDk1MzM3Yzc0M2UxNmVjOQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE5vdiAyNyAyMjo0MjozNCAyMDA3IC0wNjAwCi0KLSAgICBVcGRhdGUgTVBDODU0NCBEUyBjb25maWcKLQotICAgICogUmVtb3ZlZCBIQVNfRVRIMi9IQVNfRVRIMyAtIE1QQzg1NDQgb25seSBoYXMgVFNFQzEvMgotICAgICogUmVtb3ZlZCBzb21lIG1pc2MgZW52aXJvbm1lbnQgc2V0dXAKLSAgICAqIE1vdmVkIHRvIHVzaW5nIGZkdGZpbGUgJiBmZHRhZGRyIGFzIGZkdCBlbnYgdmFyIG5hbWVzCi0gICAgKiBFbmFibGVkIENPTkZJR19DTURMSU5FX0VESVRJTkcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhZGRjZTU3ZTJlNGM0OWU3N2ZmYjIwMjBhODQ2OTA3MTNiYjE4YjQ3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gTm92IDI2IDE3OjEyOjI0IDIwMDcgLTA2MDAKLQotICAgIFVwZGF0ZSBNUEM4NTQ0RFMgdG8gdXNlIGxpYmZkdAotCi0gICAgVXBkYXRlZCB0aGUgTVBDODU0NERTIGNvbmZpZyB0byB1c2UgbGliZmR0IGFuZCBhc3N1bWUgdXNlIG9mIGFsaWFzZXMgZm9yCi0gICAgZXRoZXJuZXQsIHBjaSwgYW5kIHNlcmlhbCBmb3IgdGhlIHZhcmlvdXMgZml4dXBzIHRoYXQgYXJlIGRvbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZjg1MmNlNzJmMTAwY2FiZDFmMTFjMjFjMDg1YTBhZDhlY2E5ZmI2NQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE5vdiAyOSAwMDoxNTozMCAyMDA3IC0wNjAwCi0KLSAgICBBZGQgbGliZmR0IGJhc2VkIGZ0X2NwdV9zZXR1cCBmb3IgbXBjODV4eAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDNiOWFiZGM0NDhhMWMyYzZhNGMyYWEyOTI3MjRiNGQxYTA1MTY2YTkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIERlYyAxMSAxMzozODoxOSAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IENvcnJlY3QgR1BJTyBvZmZzZXQgaW4gZ3Bpb19jb25maWcoKQotCi0gICAgVGhhbmtzIHRvIEdhcnkgSmVubmVqb2huIGZvciBwb2ludGluZyB0aGlzIG91dC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg4MDlhMjcxM2IxY2VhZjNkYTU1ZDlkNzg1NDcwMjk0ZjE1ZGUwNmEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIERlYyAxMSAxMTo0NjowMSAyMDA3ICswMTAwCi0KLSAgICBydGM6IEZpeCBtZXJnaW5nIHByb2JsZW0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDdjZmMxMmE3ZGNmZGIzNTBlMmFiNzZkYjRkYWZjYzMwZjdlNzdjMmIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IERlYyA4IDE0OjQ3OjM0IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogNDA1RVg6IENvcnJlY3RseSBlbmFibGUgVVNCIHBpbnMKLQotICAgIFRoaXMgcGF0Y2ggc2VsZWN0cyB0aGUgVVNCIGRhdGEgcGlucyBpbiB0aGUgNDA1RVggR1BJTyBhbmQgTUZDIChtdWx0aQotICAgIGZ1bmN0aW9uIGNvbnRyb2wpIHJlZ2lzdGVycy4gVGhpcyBpcyBkb25lIGZvciB0aGUgQU1DQyBLaWxhdWVhIGFuZAotICAgIE1ha2FsdSBldmFsIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDk2OTJjMjczNGE0N2YyM2I0NGEwZjY4MDQyYTNlMmNhOGQxYmZiMzkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IERlYyA4IDA4OjI1OjA5IDIwMDcgKzAxMDAKLQotICAgIENGSTogQ29kaW5nIHN0eWxlIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDgxYjIwY2NjMmQ3OTVhZTlhMTE5OWRiNWE1MGFkOWMyOGQxZTRkMjIKLUF1dGhvcjogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLURhdGU6CUZyaSBEZWMgNyAyMzozNTowMiAyMDA3ICswMTAwCi0KLSAgICBDRkk6IHN1cHBvcnQgSkVERUMgZmxhc2ggcm9tcyBpbiBDRkktZmxhc2ggZnJhbWV3b3JrCi0KLSAgICBUaGUgZm9sbG93aW5nIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3Igbm9uLUNGSSBmbGFzaCBST01TLCBieSBob29raW5nIGludG8gdGhlCi0gICAgQ0ZJIGZsYXNoIGNvZGUgYW5kIHVzaW5nIG1vc3Qgb2YgaXRzIGNvZGUsIGFzIHJlY2VudGx5IGRpc2N1c3NlZCBoZXJlIGluIHRoZQotICAgIHRocmVhZCAiTWl4aW5nIENGSSBhbmQgbm9uLUNGSSBmbGFzaHMiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWljaGFlbCBTY2h3aW5nZW4gPG1pY2hhZWxAc2Nod2luZ2VuLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjMDFiMTdkZDg1NmZhMTIwYjI5NzBmNTBkOTU5ODU0NmE0OTI3ZWMzCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglXZWQgTm92IDI4IDIxOjI0OjUwIDIwMDcgLTA1MDAKLQotICAgIENvbmRpdGlvbmFsbHkgY29tcGlsZSBmZHRfZml4dXBfZXRoZXJuZXQoKQotCi0gICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzOiBPbiBib2FyZHMgdGhhdCBkb24ndCBoYXZlIGV0aGVybmV0cyBkZWZpbmVkLAotICAgIGRvbid0IGNvbXBpbGUgZmR0X2ZpeHVwX2V0aGVybmV0KCkuCi0KLWNvbW1pdCAyNDZkNGFlNmJjMjgyYmMxODQxMjI0ZTFjNWZjNDlkYzkyNWUwYmY3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgTm92IDI3IDIxOjU5OjQ2IDIwMDcgLTA2MDAKLQotICAgIENvbnZlcnQgYm9hcmRzIHRoYXQgc2V0IG1lbW9yeSBub2RlIHRvIHVzZSBmZHRfZml4dXBfbWVtb3J5KCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAxNTFjOGIwOWIzNWVlYmU4ZmQ5MTM5Y2I2YzFkOTFjMjdiMjJmMDU4Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglNb24gTm92IDI2IDE3OjA2OjE1IDIwMDcgLTA2MDAKLQotICAgIEFkZGVkIGZkdF9maXh1cF9zdGRvdXQgdGhhdCB1c2VzIGFsaWFzZXMgdG8gc2V0IGxpbnV4LHN0ZG91dC1wYXRoCi0KLSAgICBXZSB1c2UgYSBjb21iaW5hdGlvbiBvZiB0aGUgc2VyaWFsTiBhbGlhcyBhbmQgQ09ORklHX0NPTlNfSU5ERVggdG8KLSAgICBkZXRlcm1pbmUgd2hpY2ggc2VyaWFsIGFsaWFzIHdlIHNob3VsZCBzZXQgbGludXgsc3Rkb3V0LXBhdGggdG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgM2M5MjcyODEzZmFkODRjNjkxZDBlNDk4OWJiMThhM2ZmZWJkZWJmYwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIE5vdiAyNiAxNDo1Nzo0NSAyMDA3IC0wNjAwCi0KLSAgICBBZGQgY29tbW9uIG1lbW9yeSBmaXh1cCBmdW5jdGlvbgotCi0gICAgQWRkIHRoZSBmdW5jdGlvbiBmZHRfZml4dXBfbWVtb3J5KCkgdG8gZml4dXAgdGhlIC9tZW1vcnkgbm9kZSBvZiB0aGUgZmR0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOWM5MTA5ZTdmY2Y3YWMyY2ExOWM5NWI4YWM1NGI4ZDFjNzczYjE1NwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIE5vdiAyNiAxMToxOToxMiAyMDA3IC0wNjAwCi0KLSAgICBDb25kaXRpb25hbGx5IGNvbXBpbGUgZmR0X3N1cHBvcnQuYwotCi0gICAgTW9kaWZ5IGNvbW1vbi9NYWtlZmlsZSB0byBjb25kaXRpb25hbGx5IGNvbXBpbGUgZmR0X3N1cHBvcnQuYyBiYXNlZAotICAgIG9uIENPTkZJR19PRl9MSUJGRFQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZDg4ZTdiYTA5ODA3NzM0NzllMWE2NGJhZGIyOTMxMTYwNzFiN2VmMAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJTW9uIE5vdiAyNiAxMDo0MTo0MCAyMDA3IC0wNjAwCi0KLSAgICBGaXggYnVpbGQgYnJlYWthZ2UgZHVlIHRvIGxpYmZkdCBpbXBvcnQKLQotICAgIFRoZSBJRFM4MjQ3IGdvdCBsb3N0IGluIHRoZSB1cGRhdGUgYW5kIG5lZWQgYW4gQVBJIHVwZGF0ZQotICAgIGRvIHRvIHJlbmFtZSBvZiBmdW5jdGlvbnMgaW4gbGliZmR0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDI4ZjM4NGIxNzFiYmYxZmIyZGFmYjEwNDZlNmQyNTlhNmIyZjg3MTQKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CUZyaSBOb3YgMjMgMTk6NDM6MjAgMjAwNyAtMDUwMAotCi0gICAgQWRkIHNwYWNlcyBhcm91bmQgdGhlID0gaW4gdGhlIGZkdCBwcmludCBmb3JtYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgMjk1OTJlY2JhM2I5MzJiOWIxNTJiY2VjNmMwYzA4MDY0MTJkYjRhMwotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglGcmkgRGVjIDcgMDE6MjU6MzggMjAwNyArMDkwMAotCi0gICAgc2g6IE1vdmVkIGRyaXZlciBvZiB0aGUgU3VwZXJIIGRlcGVuZGVuY2UKLQotICAgIFRoZSBjb21wb3NpdGlvbiBvZiB0aGUgZGlyZWN0b3J5IGluIHRoZSBkcml2ZXJzLyBjaGFuZ2VkLgotICAgIEkgbW92ZWQgU3VwZXJIIHNlcmlhbCBkcml2ZXIgYW5kIG1hcnVidW4gUENNQ0lBIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDQxYmU5NjlmNDk1NzExNWVkN2IxZmU4Yjg5MGJmYWVlOTlkN2E3YTIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBEZWMgNiAxMDoyMToxOSAyMDA3ICswMTAwCi0KLSAgICBSZWxlYXNlIHYxLjMuMQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGNmNTkzM2JhMWU5N2ExY2Q4ZjVmMjQwNzBlODIwZjIxZDk3NmVhZWIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBEZWMgNiAxMDoyMTowMyAyMDA3ICswMTAwCi0KLSAgICBBRFM1MTIxIEJvYXJkOiBmaXggY29tcGlsZSBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGEyNzA0NGIxNGE5ZTkzNjc4YTgyZDdiMzVmMjAyYjkzZTc2ODdhYmMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IERlYyA2IDA1OjU4OjQzIDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRW5hYmxlIGhhcmR3YXJlLWZpeCBmb3IgUENJL0RNQSBlcnJhdGEgb24gQU1DQyA0NDBTUC9TUGUgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIGhhcmR3YXJlLWZpeCBmb3IgdGhlIFBDSS9ETUEgZXJyYXRhJ3MgMTkrMjIgYnkKLSAgICBzZXR0aW5nIHRoZSBGSVhEIGJpdCBpbiB0aGUgU0RSMF9NRlIgcmVnaXN0ZXIuIEhlcmUgYSBkZXNjcmlwdGlvbiBvZiB0aGUKLSAgICBzeW1wdG9tczoKLQotICAgIFByb2JsZW0gRGVzY3JpcHRpb24KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAgICBJZiBhIERNQSBpcyBwZXJmb3JtZWQgYmV0d2VlbiBtZW1vcnkgYW5kIFBDSSB3aXRoIHRoZSBETUEgMSBDb250cm9sbGVyCi0gICAgdXNpbmcgcHJlZmV0Y2gsIGFuZCBhcyBhIHJlc3VsdCB1c2VzIGEgc3BlY2lhbCBwdXJwb3NlIGJ1ZmZlciBzZWxlY3RlZCBieQotICAgIHRoZSBQQ0lYbiBCcmlkZ2UgT3B0aW9ucyAxIFJlZ2lzdGVyIChQQ0lYbl9CUkRHT1BUMVtSQlA3XSAtIGJpdHMgMzEtMjkpLAotICAgIHRoZSBmaXJzdCBwYXJ0IG9mIHRoZSB0cmFuc2ZlciBzZXF1ZW5jZSBpcyBwZXJmb3JtZWQgdHdpY2UuIFRoZQotICAgIFBQQzQ0MFNQZSBQQ0kgQ29udHJvbGxlciByZXF1ZXN0cyBtb3JlIGRhdGEgdGhhbiB3YXMgbmVlZGVkIHN1Y2ggdGhhdCBpbgotICAgIHRoZSBjYXNlIG9mIGVuZm9yY2UgbWVtb3J5IHByb3RlY3Rpb24sIGEgaG9zdCBDUFUgIGV4Y2VwdGlvbiBjYW4gb2NjdXIuCi0gICAgTm8gZGF0YSBpcyBjb3JydXB0ZWQsIGJlY2F1c2UgZGF0YSB0cmFuc2ZlciBpcyBzdG9wcGVkIGluIHRoZSBQQ0kKLSAgICBDb250cm9sbGVyLiBQcmVmZXRjaCBlbmFibGUgaXMgc3BlY2lmaWVkIGJ5IHNldHRpbmcgRE1BIENvbmZpZ3VyYXRpb24KLSAgICBSZWdpc3RlciAoSTJPMF9ETUF4X0NGR1tEWEVQRF0gLSBiaXQgMzEpIHRvIDAuCi0KLSAgICBCZWhhdmlvciB0aGF0IG1heSBiZSBvYnNlcnZlZCBpbiBhIHJ1bm5pbmcgc3lzdGVtCi0gICAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0KLSAgICAxLiBETUEgcGVyZm9ybWFuY2UgaXMgZGVjcmVhc2VkIGJlY2F1c2Ugb2YgdGhlIGRvdWJsZSBhY2Nlc3Mgb24gdGhlIFBDSSBidXMKLSAgICBpbnRlcmZhY2UuCi0gICAgMi4gSWYgYW4gaWxsZWdhbCBhY2Nlc3MgdG8gc29tZSBhZGRyZXNzIG9uIHRoZSBQQ0kgYnVzIGlzIGRldGVjdGVkIGF0IHRoZQotICAgIHN5c3RlbSBsZXZlbCwgYSBtYWNoaW5lIGNoZWNrIG9yIHNpbWlsYXIgc3lzdGVtIGVycm9yIG1heSBvY2N1ci4KLQotICAgIFdvcmthcm91bmRzIEF2YWlsYWJsZQotICAgIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotICAgIDEuIERvIG5vdCBwcm9ncmFtIHByZWZldGNoLiBOb3RlIHRoYXQgYSBwcmVmZXRjaCBjb21tYW5kIGNhbm5vdCBiZSBwcm9ncmFtbWVkCi0gICAgd2l0aG91dCBzZWxlY3RpbmcgYSBzcGVjaWFsIHB1cnBvc2UgYnVmZmVyLgotICAgIDIuIFRvIGF2b2lkIGNyb3NzaW5nIGEgcGh5c2ljYWwgYm91bmRhcnkgb2YgdGhlIFBDSSBzbGF2ZSBkZXZpY2UsIGFkZCA1MTIKLSAgICBieXRlcyBvZiBhZGRyZXNzIHRvIHRoZSBQQ0kgYWRkcmVzcyByYW5nZS4KLQotICAgIFRoaXMgcGF0Y2ggd2FzIG9yaWdpbmFsbHkgcHJvdmlkZWQgYnkgUHJhdmluIE0uIEJhdGhpamEgPHBiYXRoaWphQGFtY2MuY29tPgotICAgIGZyb20gQU1DQyBhbmQgc2xpZ2hseSBjaGFuZ2VkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUHJhdmluIE0uIEJhdGhpamEgPHBiYXRoaWphQGFtY2MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGE5MDkyMWY3MWQyMjViZjllMGYwZmM3YjhiZWFkZWI4MDAxYmY3OGEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIERlYyA0IDE2OjI5OjQ4IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogWW9zZW1pdGUvWWVsbG93c3RvbmU6IEFkZCBEVFQgQUQ3NDE0IHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDhkNGYwNDBhM2MxNTAzNmE2ZWEyNWE5YzM5ZTdkODlmZWZhODQ0MGQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBEZWMgMyAwMDoxNToyOCAyMDA3ICswMTAwCi0KLSAgICBQcmVwYXJlIGZvciAxLjMuMS1yYzEKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlMTVlMzM0MzNlN2MwNTExMTk2OGRjOWI0MzRhNTJmZDQyY2JkMjIxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBOb3YgMzAgMDc6MTU6NDEgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBLaWxhdWVhOiBBZGQgUENJZSByZXNldCBhc3NlcnRpb24gdXBvbiBwb3dlci11cAotCi0gICAgVGhpcyBtYW51YWwgUENJZSByZXNldCB0cmlnZ2VyaW5nIHNvbHZlcyB0aGUgcHJvYmxlbSBzZWVuIHdpdGggdGhlCi0gICAgSW50ZWwgRVBSTy8xMDAwIGNhcmQsIHdoaWNoIHdhcyBub3QgZGV0ZWN0ZWQgKGxpbmsgbm90IGVzdGFibGlzaGVkKQotICAgIHVwb24gcG93ZXItdXAgcmVzZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyNjBlZWE1Njc2Y2E0NjkwM2EzMzU2ODZjYzAyMGIyOWM0Y2E0NmZlCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVRodSBOb3YgMjkgMDE6MjE6NTQgMjAwNyArMDkwMAotCi0gICAgc2g6IEFkZCBTdXBlckggYm9hcmRzIG1haW50YWluZXIgdG8gTUFJTlRBSU5FUlMgZmlsZQotCi0gICAgQWRkIE1TNzc1MFNFIGFuZCBNUzc3MjJTRSdzIGJvYXJkIG1haW50YWluZXIgdG8gTUFJTlRBSU5FUlMgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGFhOWM0ZjFkMjI3MDFhOTIzNDdjMWM4MWYzNGQxMmM4YWQzYTM3NDcKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJVGh1IE5vdiAyOSAwMDoxMzowNCAyMDA3ICswOTAwCi0KLSAgICBzaDogQWRkIG1zNzc1MHNlIHN1cHBvcnQgaW4gTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYzcxNDQzNzM0MjdhMTc4MzMyYmY5NzU0MTMxYzhjMzRjNTJjMjAwYQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIE5vdiAyNyAwOTo0NDo1MyAyMDA3ICswMTAwCi0KLSAgICBzaDogQWRkIHNoMyBhbmQgc2g0IHN1cHBvcnQgaW4gTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCAxMzAwODA4NzRhM2QyODQ1MDA5ODQ4MWEyNjJjNWY3Yzg1NWU5MDhkCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVN1biBOb3YgMjUgMDI6NTE6MTcgMjAwNyArMDkwMAotCi0gICAgc2g6IEFkZCBkb2N1bWVudCBmb3IgU3VwZXJILgotCi0gICAgVGhpcyBkb2N1bWVudCBpcyBhIHN1bW1hcnkgb2YgaW5mb3JtYXRpb24gY29uY2VybmluZyBTdXBlckggb2YgVS1Cb290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMzNlY2RjMmY5ZDY0OTI2ZTFhNjA2N2IyOGYzYTBhZWZjM2I2ZDIzZAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglTdW4gTm92IDI1IDAyOjM5OjMxIDIwMDcgKzA5MDAKLQotICAgIHNoOiBBZGQgbWFydWJ1bidzIHBjbWNpYSBkcml2ZXIKLQotICAgIE1hcnVidW4gcGNtY2lhIGlzIGEgY2hpcCBmb3IgUENNQ0lBIHVzZWQgd2l0aCBTdXBlckguCi0gICAgT2YgY291cnNlLCB0aGlzIGNhbiBiZSB1c2VkIGV2ZW4gYnkgb3RoZXIgYXJjaGl0ZWN0dXJlcy4KLSAgICBXaGVuIHVzZSB0aGlzIGRyaXZlciwgY2FtZSB0byBiZSBhYmxlIHRvIHVzZSBDb21wYWN0Rmxhc2gKLSAgICBhbmQgRXRoZXJuZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCBmZWJkODZiOTY5Yjk3NTI4OWVkOTQ4ZjFhYzBlYjk3MjJkYTQxY2VkCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVN1biBOb3YgMjUgMDI6MzI6MTMgMjAwNyArMDkwMAotCi0gICAgc2g6IFVwZGF0ZSBTdXBlckggU0NJRiBkcml2ZXIKLQotICAgIC0gQ2hhbmdlZCB2b2xhdGlsZSB1bnNpZ25lZCB0byB2dV8uCi0gICAgLSBDaGFuZ2VkIE1ha2VmaWxlIGZvciBrY29uZmlnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgOGJlNzYwOTAzNjQ1YWYwOTg3MWJlNTBhZDBhNmY5ZWJiNjJiMzExZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDI3IDExOjU3OjM1IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogS2lsYXVlYSAmIE1ha2FsdTogRml4IGV4dCBJUlEgcGluIG11bHRpcGxleGluZwotCi0gICAgQWZ0ZXIgYW4gZXJyb3IgaW4gdGhlIEFNQ0MgNDA1RVggdXNlcnMgbWFudWFsIG5vdyBjb3JyZWN0bHkgY29uZmlndXJlCi0gICAgSVJRMiAoS2lsYXVlYSkvSVJRMCAoTWFrYWx1KSBhcyBhbHRlcm5hdGUgMiBzaWduYWwgZm9yIGV4dGVybmFsIElSUQotICAgIHVzYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTVmNjAxZmQxYjEyNzhkZWFlNWFhOWZjMjdhMjMyYjBkMWMxYzc4OAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIE5vdiAyNiAxOToxODoyMSAyMDA3ICswMTAwCi0KLSAgICBDbGVhbnVwIGNvZGluZyBzdHlsZTsgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDNkZWNhOWQ0NDc2N2VmZDFiODNmNGI3MDFmMGRiZjIxYTc1OTVmN2IKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBOb3YgMjUgMjI6Mzk6MjUgMjAwNyArMDEwMAotCi0gICAgTUFLRUFMTDogYWRkIG1pc3NpbmcgNTEyeCBib2FyZHMgaW4gcHBjCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgYTM0MGMzMjVlNjY4Y2E3Mzg2YzIyNzYzODc2ODE3MjBiZTljMzc1NwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE5vdiAyNSAxODo0NTo0NyAyMDA3ICswMTAwCi0KLSAgICBNYWtlZmlsZSA6IGZpeCB0YWdzIGN0YWdzIGV0YWdzIHdpdGggbmV3IGRyaXZlcnMgb3JnYW5pemF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNjMzNjJjZmM2YmFhOTdhZTBlMzdiYTJjNmVjZTUzMGZjYWM5Zjc5ZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI2IDE1OjA2OjE0IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogTWFrYWx1OiBDaGFuZ2UgRUJDIHNldHVwIGZvciBDUzAgdG8gZW5hYmxlIDQwME1IeiB1c2FnZQotCi0gICAgQXMgc3VnZ2VzdGVkIGJ5IFNlbmFvLCB1c2UgYSBkaWZmZXJlbnQgRUJDX1BCMEFQIHNldHVwIGZvciA0MDBNSHoKLSAgICBvcGVyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjYTFjZTIyNjI4NzI3MGJiMDFlMjViOGUzNjc0YzcwMWYxMmVkZjE5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjYgMTU6MDE6NDUgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBLaWxhdWVhOiBDb25maWd1cmUgcGluIG11eCB0byB1c2UgZXh0IElSUTIgYXMgaW50ZXJydXB0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4N2RkZWRkNmFkODA0NDI3Y2UxMjVjZWFhMDc2ZDdhNGY3NGU5ZDVkCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTm92IDI1IDE4OjQ1OjQ3IDIwMDcgKzAxMDAKLQotICAgIE1ha2VmaWxlIDogZml4IHRhZ3MgY3RhZ3MgZXRhZ3Mgd2l0aCBuZXcgZHJpdmVycyBvcmdhbml6YXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA1OTgyOWNjMTg5Mzc4YzE0MmMxM2QyYWE4ZDlhODk3ZDhiZWYzOTYxCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTm92IDI0IDIxOjI2OjU2IDIwMDcgKzAxMDAKLQotICAgIGRyaXZlcnMvbXRkIDogbW92ZSBtdGQgZHJpdmVycyB0byBkcml2ZXJzL210ZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDMxOGMwYjkwNDMxZjI2NDg1NTJlNWFkZTc4ODMzZjQyNjUyY2U4NTkKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBOb3YgMjQgMjE6MTc6NTUgMjAwNyArMDEwMAotCi0gICAgZHJpdmVycy9taXNjIDogbW92ZSBtaXNjIGRyaXZlcnMgdG8gZHJpdmVycy9taXNjCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMzNkYWY1Yjc4NTg4MDdjYjRjZTQxNThjMmM1NjUyNDY3MWMxNGMwOAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE5vdiAyNCAyMToxMzo1OSAyMDA3ICswMTAwCi0KLSAgICBkcml2ZXJzL2Jsb2NrIDogbW92ZSBibG9jayBkcml2ZXJzIHRvIGRyaXZlcnMvYmxvY2sKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAwYzY5OGRjYWE3MDI3NWViODgxNGY2NjViNTQ1NTQ3Y2VlMDEzODkyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTm92IDI0IDIwOjU5OjUwIDIwMDcgKzAxMDAKLQotICAgIGRyaXZlcnMvcnRjIDogbW92ZSBydGMgZHJpdmVycyB0byBkcml2ZXJzL3J0YwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGY4NjhjYzVhNTA3NTdkOTRmMzZjMzEyMzk1NDgxY2IwZjE4N2Q5ZTYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBOb3YgMjQgMjA6MTQ6NDQgMjAwNyArMDEwMAotCi0gICAgZHJpdmVycy9od21vbiA6IG1vdmUgaGFyZHdhcmUgbW9uaXRvciBkcnZpZXJzIHRvIGRyaXZlcnMvaHdtb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAxNmIxOTVjODJhMThjYmZkMTY0ODAwZjE3YTFlZjlkYjJlNDgzMzFhCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTm92IDI0IDE5OjQ2OjQ1IDIwMDcgKzAxMDAKLQotICAgIGRyaXZlcnMvaW5wdXQgOiBtb3ZlIGlucHV0IGRyaXZlcnMgdG8gZHJpdmVycy9pbnB1dAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IGU0NTU4NjY2MjkzMzY0ZmMzYWYxYzFkOTM4MWNhOTMzZmEwZjEyNzUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVNhdCBOb3YgMjQgMTk6NDA6MTEgMjAwNyArMDEwMAotCi0gICAgZHJpdmVycy91c2IgOiBtb3ZlIHVzYiBkcml2ZXJzIHRvIGRyaXZlcnMvdXNiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTM3OGRmNzkyYTdmZjNhYmQxYmY1NGE2M2Y1NDc1Nzg0ZjViMDgzYwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU2F0IE5vdiAyNCAxOTozMzozOCAyMDA3ICswMTAwCi0KLSAgICBkcml2ZXJzL3NlcmlhbCA6IG1vdmUgc2VyaWFsIGRyaXZlcnMgdG8gZHJpdmVycy9zZXJpYWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAyNDM5ZTRiZmExMTFiYWJmNGJjMDdiYTIwZWZiZjNlMzYwMzY4MTNlCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglXZWQgTm92IDIxIDIxOjE5OjI0IDIwMDcgKzAxMDAKLQotICAgIGRyaXZlcnMvbmV0IDogbW92ZSBuZXQgZHJpdmVycyB0byBkcml2ZXJzL25ldAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDM1MmQyNTkxMzBiMzQ5ZmU5NTkzYjhkYWRhNjQxYmQ3OGE5NjU5ZTUKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVR1ZSBOb3YgMjAgMjA6NDE6NDggMjAwNyArMDEwMAotCi0gICAgZHJpdmVycy92aWRlbyA6IG1vdmUgdmlkZW8gZHJpdmVycyB0byBkcml2ZXJzL3ZpZGVvCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNzM2NDYyMTcxODZhYTE3YWZjOGUzMDVjNWYwNmYwNmRkMzM1ZWFhZAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIE5vdiAyMCAyMDozMzowOSAyMDA3ICswMTAwCi0KLSAgICBkcml2ZXJzL3BjbWNpYSA6IG1vdmUgcGNtY2lhIGRyaXZlcnMgdG8gZHJpdmVycy9wY21jaWEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5M2E2ODZlZTljNWRkYzZmYTM2OGMzMmNmYmZkZTZmNjcyNDU5OWZjCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUdWUgTm92IDIwIDIwOjI4OjA5IDIwMDcgKzAxMDAKLQotICAgIGRyaXZlcnMvcGNpIDogbW92ZSBwY2kgZHJpdmVycyB0byBkcml2ZXJzL3BjaQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDkxNjIzNTI4MTc1Nzk4NDBkNzgwMmRhNmQ4NTg3MmIzY2EwMDNjOTcKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVRodSBOb3YgMjIgMTc6MjM6MjMgMjAwNyAtMDUwMAotCi0gICAgRml4IGZkdCBwcmludGluZyBmb3IgdXBkYXRlZCBsaWJmZHQKLQotICAgIEFsc28gaW1wcm92ZSBwcmludGluZyAoYWRvcHQgZHRjIHYxICJjIHN0eWxlIiBoZXggZm9ybWF0KSwgd2hpdGVzcGFjZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDllYjc3Y2VhMWZhMTJkNTk2OWViMjZhMWQxZDgxZGEzODFiZDZiMWMKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgMjEgMTM6MzA6MTUgMjAwNyAtMDYwMAotCi0gICAgQWRkIGFkZGl0aW9uYWwgZmR0IGZpeHVwIGhlbHBlciBmdW5jdGlvbnMKLQotICAgIEFkZGVkIHRoZSBmb2xsb3dpbmcgZmR0IGZpeHVwIGhlbHBlcnM6Ci0gICAgICogZG9fZml4dXBfYnlfcHJvcHtfdTMyfSAtIEZpbmQgbWF0Y2hpbmcgbm9kZXMgYnkgcHJvcGVydHkgbmFtZS92YWx1ZQotICAgICAqIGRvX2ZpeHVwX2J5X2NvbXBhdHtfdTMyfSAtIEZpbmQgbWF0Y2hpbmcgbm9kZXMgYnkgY29tcGF0Ci0KLSAgICBUaGUgX3UzMiB2YXJpYW50cyB3b3JrIHRoZSBzYW1lIG9ubHkgdGhlIHByb3BlcnR5IHRoZXkgYXJlIHNldHRpbmcKLSAgICBpcyBrbm93IHRvIGJlIGEgMzItYml0IGludGVnZXIgaW5zdGVhZCBvZiBhIGJ5dGUgYnVmZmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGFiNTQ0NjMzYWJkZDE0ZjRkZDVkOTJlNTAwYjczZWI1OWVmNTdlNjcKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVdlZCBOb3YgMjEgMTE6MTE6MDMgMjAwNyAtMDYwMAotCi0gICAgQWRkIGZkdF9maXh1cF9ldGhlcm5ldCBoZWxwZXIgdG8gc2V0IG1hYyBhZGRyZXNzZXMKLQotICAgIEFkZGVkIGEgZml4dXAgaGVscGVyIHRoYXQgdXNlcyBhbGlhc2VzIHRvIHNldCBtYWMgYWRkcmVzc2VzCi0gICAgaW4gdGhlIGRldmljZSB0cmVlIGJhc2VkIG9uIHRoZSBiZF90Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZGJhZjA3Y2U2MjBhYWIyNDllMzUwMmIyMGE5ODYyMzRhNmFmMWQzYQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE5vdiAyMSAxNDowNzo0NiAyMDA3IC0wNjAwCi0KLSAgICBGaXggd2FybmluZ3MgZnJvbSBpbXBvcnQgb2YgbGliZmR0Ci0KLSAgICBjbWRfZmR0LmM6IEluIGZ1bmN0aW9uIGZkdF9wcmludDoKLSAgICBjbWRfZmR0LmM6NTg2OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCi0gICAgY21kX2ZkdC5jOjYxMzogd2FybmluZzogYXNzaWdubWVudCBkaXNjYXJkcyBxdWFsaWZpZXJzIGZyb20gcG9pbnRlciB0YXJnZXQgdHlwZQotICAgIGNtZF9mZHQuYzo2MzU6IHdhcm5pbmc6IGFzc2lnbm1lbnQgZGlzY2FyZHMgcXVhbGlmaWVycyBmcm9tIHBvaW50ZXIgdGFyZ2V0IHR5cGUKLSAgICBjbWRfZmR0LmM6NjM2OiB3YXJuaW5nOiBhc3NpZ25tZW50IGRpc2NhcmRzIHF1YWxpZmllcnMgZnJvbSBwb2ludGVyIHRhcmdldCB0eXBlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOGQwNGYwMmY2MjI0ZTY5ODNmNDgxMmVhNGRhNzA0OTUwZWM4NTM5YwotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE9jdCAyNCAxMTowNDoyMiAyMDA3IC0wNTAwCi0KLSAgICBVcGRhdGUgbGliZmR0IGZyb20gZGV2aWNlIHRyZWUgY29tcGlsZXIgKGR0YykKLQotICAgIFVwZGF0ZSBsaWJmZHQgdG8gY29tbWl0IDhlYWY1ZTM1ODM2NjAxN2FhMmU4NDZjNTAzOGQxYWExOTk1ODMxNGUgZnJvbQotICAgIHRoZSBkZXZpY2UgdHJlZSBjb21waWxlciAoZHRjKSBwcm9qZWN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IGU5M2JlY2Y4MGQ3MzJiNjRhZWY4MWIyM2U4YjZlY2UwMmM0MDUzM2QKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVNhdCBOb3YgMyAxOTo0NjoyOCAyMDA3IC0wNTAwCi0KLSAgICBNb3ZlIGRvX2ZpeHVwKiBmb3IgbGliZmR0IGludG8gY29tbW9uIGNvZGUKLQotICAgIE1vdmVkIHRoZSBnZW5lcmljIGZpeHVwIGhhbmRsaW5nIGNvZGUgb3V0IG9mIGNwdS9tcGM1eHh4IGFuZCBjcHUvbXBjODI2MAotICAgIGludG8gY29tbW9uL2ZkdF9zdXBwb3J0LmMgYW5kIHJlbmFtZWQ6Ci0KLSAgICBkb19maXh1cCgpCS0+IGRvX2ZpeHVwX2J5X3BhdGgoKQotICAgIGRvX2ZpeHVwX3UzMigpCS0+IGRvX2ZpeHVwX2J5X3BhdGhfdTMyKCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmNzM4YjRhNzU5OThmNDJhNzQwOGRlZmFkYzliYWFjN2EzMWM5MmRiCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgT2N0IDI1IDE2OjE1OjA3IDIwMDcgLTA1MDAKLQotICAgIE1ha2Ugbm8gb3B0aW9ucyB0byBmZHQgcHJpbnQgZGVmYXVsdCB0byAnLycKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhM2MyOTMzZTAyNTAzZmUzNmFkZTJjMWI2NWFmNDZmMmI3YTE2OGU3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglXZWQgT2N0IDI0IDEwOjIxOjU3IDIwMDcgLTA1MDAKLQotICAgIFJlbW92ZWQgc29tZSBub251c2VkIGZkdCBmdW5jdGlvbnMgYW5kIG1vdmVkIGZkdF9maW5kX2FuZF9zZXRwcm9wIG91dCBvZiBsaWJmZHQKLQotICAgIFJlbW92ZWQ6Ci0JZmR0X25vZGVfaXNfY29tcGF0aWJsZQotCWZkdF9maW5kX25vZGVfYnlfdHlwZQotCWZkdF9maW5kX2NvbXBhdGlibGVfbm9kZQotCi0gICAgVG8gZWFzZSBtZXJnZSBvZiBuZXdlciBsaWJmZHQgYXMgd2UgYXJlbid0IHVzaW5nIHRoZW0gYW55d2hlcmUgYXQgdGhpcyB0aW1lLgotCi0gICAgQWxzbyBtb3ZlZCBmZHRfZmluZF9hbmRfc2V0cHJvcCBvdXQgb2YgbGliZmR0IGludG8gZmR0X3N1cHBvcnQuYyBmb3IgdGhlIHNhbWUKLSAgICByZWFzb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgOThlMjg2N2NjODU0MDliOTE5Zjg2MmU2YzE2MDI2NDYxZWM5NTVkZgotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglXZWQgTm92IDIxIDA5OjE5OjM3IDIwMDcgLTA3MDAKLQotICAgIFtCVUlMRF0gUmVtb3ZlIGxpYnJhcmllcyB3aGVuIHVwZGF0aW5nIGF1dG9jb25mLm1rCi0KLSAgICBGaXggbGlicmFyeSBwcm9ibGVtcyBjYXVzZWQgYnkgY29uZGl0aW9uYWwgY29tcGlsYXRpb24uICBVc2luZwotICAgIGF1dG9jb25mLm1rIHRvIGRlY2lkZSB3aGljaCBmaWxlcyB0byBjb21waWxlIGhhcyBjYXVzZWQgYSBwcm9ibGVtIHdoZW4KLSAgICBjaGFuZ2luZyBjb25maWd1cmF0aW9uIGZyb20gb25lIGJvYXJkIHRvIGFub3RoZXIgd2l0aG91dCBjbGVhcmluZyBvdXQKLSAgICB0aGUgbGlicmFyeSAoKi5hKSBmaWxlcy4KLQotICAgIEl0IHVzZWQgdG8gYmUgdGhhdCB0aGUgbGlua2VyIHdhcyBhbHdheXMgcGFzc2VkIHRoZSBzYW1lIGxpc3Qgb2YgLm8KLSAgICBmaWxlcyB3aGVuIGJ1aWxkaW5nIHRoZSAuYSBmaWxlcy4gIEhvd2V2ZXIsIHRoYXQgaXMgbm90IGxvbmdlciB0cnVlCi0gICAgd2l0aCBjb25kaXRpb25hbCBjb21waWxhdGlvbi4gIE5vdywgYSBkaWZmZXJlbnQgYm9hcmQgY29uZmlnIHdpbGwgaGF2ZQotICAgIGEgZGlmZmVyZW50IGZpbGUgbGlzdCBwYXNzZWQgdG8gdGhlIGxpbmtlci4gIFRoZSBwcm9ibGVtIG9jY3VycyB3aGVuCi0gICAgYSBsaWJyYXJ5IGhhcyBhbHJlYWR5IGJlZW4gYnVpbHQgYW5kIHRoZSBib2FyZCBjb25maWcgaXMgY2hhbmdlZC4KLQotICAgIFNpbmNlIHRoZSBsaW5rZXIgd2lsbCB1cGRhdGUgaW5zdGVhZCBvZiByZXBsYWNlIGEgcHJlZXhpc3RpbmcgbGlicmFyeSwKLSAgICB0aGVuIGlmIHRoZSBmaWxlIGxpc3QgY2hhbmdlcyB0byByZW1vdmUgc29tZSBvYmplY3QgZmlsZXMgdGhlIG9sZAotICAgIG9iamVjdHMgd2lsbCBzdGlsbCBleGlzdCBpbiB0aGUgbGlicmFyeS4KLQotICAgIFRoZSBzb2x1dGlvbiBpcyB0byByZW1vdmUgYWxsIG9sZCBsaWJyYXJ5IGZpbGVzIHdoZW4gYXV0b2NvbmYubWsgaXMKLSAgICBtYWRlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgZWQxMzUzZDc0YjljZThhN2ZjZDY2MDU3MGI4NDhhMTg0ZDYxNGI1ZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIE5vdiAyMSAwODo0OTo1MCAyMDA3IC0wNjAwCi0KLSAgICBbQlVJTERdIGNvbmRpdGlvbmFsbHkgY29tcGlsZSBsaWJmZHQvKi5jIGluIGxpYmZkdC9NYWtlZmlsZQotCi0gICAgTW9kaWZ5IGxpYmZkdC9NYWtlZmlsZSB0byBjb25kaXRpb25hbGx5IGNvbXBpbGUgdGhlICouYyBmaWxlcyBiYXNlZAotICAgIG9uIHRoZSBib2FyZCBjb25maWcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgNGE0MzcxOWE3NzM4NzEyODExZDgyMmNhODEyNTQyN2IyN2E1NWNkYwotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKLQotICAgIFtCVUlMRF0gY29uZGl0aW9uYWxseSBjb21waWxlIGNvbW1vbi9jbWRfKi5jIGluIGNvbW1vbi9NYWtlZmlsZQotCi0gICAgTW9kaWZ5IGNvbW1vbi9NYWtlZmlsZSB0byBjb25kaXRpb25hbGx5IGNvbXBpbGUgdGhlIGNtZF8qLmMgZmlsZXMgYmFzZWQKLSAgICBvbiB0aGUgYm9hcmQgY29uZmlnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgMmYxNTVmNmMwYTFmNWU5YTMwNmEzZjFmNGZiZTA2N2RiN2NlZDNiMQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKLQotICAgIFtCVUlMRF0gR2VuZXJhdGUgaW5jbHVkZS9hdXRvY29uZi5tayBmcm9tIGJvYXJkIGNvbmZpZyBmaWxlcwotCi0gICAgVXNlIGNwcCBhbmQgc2VkIHRvIHBvc3Rwcm9jZXNzIGNvbmZpZy5oIGFuZCBpbXBvcnQgdGhlIGRlZmluZWQgdmFsdWVzCi0gICAgaW50byBpbmNsdWRlL2F1dG9jb25mLm1rLiAgYXV0b2NvbmYubWsgaXMgdGhlbiBpbmNsdWRlZCBieSBjb25maWcubWsgdG8KLSAgICBnaXZlICdtYWtlJyBhY2Nlc3MgdG8gdGhlIGJvYXJkIGNvbmZpZ3VyYXRpb24uCi0KLSAgICBEb2luZyB0aGlzIGVuYWJsZXMgY29uZGl0aW9uYWwgY29tcGlsYXRpb24gYXQgdGhlIE1ha2VmaWxlIGxldmVsIGluc3RlYWQKLSAgICBvZiBieSB3cmFwcGluZyBldmVyeSAuYyBmaWxlIHdpdGggI2lmZGVmLyNlbmRpZiB3cmFwcGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDY4Yjg4OTk5ZGE4N2FiODhlNzFlMTMwNjE5MjkwNWJlMzQ1MDE5OGUKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjAgMTU6MDI6MjYgMjAwNyAtMDYwMAotCi0gICAgODYxMEhQQ0Q6IEVuYWJsZSB0aGUgODYxMCBEaXNwbGF5IEludGVyZmFjZSBVbml0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzRmODlmYWE5ZDFlNzdlZDk0N2U2MjhkM2VmZmFhNTEzZmUwNWQwNQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE5vdiAyMCAxNTowMDo1MyAyMDA3IC0wNjAwCi0KLSAgICBNb3ZlIDg2MTAgRElVIGludGVyZmFjZSBzdHJ1Y3R1cmUgZGVmaW5pdGlvbnMgdG8gaGVhZGVyIGZpbGUuCi0KLSAgICBUaGVzZSB0d28gc3RydWN0dXJlcyBhcmUgc3RpbGwgbmVlZGVkIGR1cmluZyB0aGUKLSAgICBpbml0aWFsaXphdGlvbiBhbmQgc2V0dXAgb2YgdGhlIERJVSBoYXJkd2FyZS4KLSAgICBTbyBtb3ZlIHRoZW0gdG8gdGhlIGZzbF9kaXVfZmIuaCBmaWxlIGZvciBub3cuCi0gICAgT2ZmaWNpYWwgImJsYWgiLgotCi0gICAgTm90aWNlZC1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDgwYzY0NmRiZjQ3NGExMDljM2Y4NTcxOGZiMDFjZTA0MmEzOGM0NQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJVHVlIE5vdiAyMCAyMDoxNDoxOCAyMDA3ICswMTAwCi0KLSAgICBkcml2ZXJzL2kyYyA6IG1vdmUgaTJjIGRyaXZlcnMgdG8gZHJpdmVycy9pMmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA5YTMzN2RkYzE1NGExMGEyNmYxMTdmZDE0N2IwMDlhYmNkZWJhNzVhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDE5IDIyOjIwOjI0IDIwMDcgKzAxMDAKLQotICAgIFByZXBhcmUgZm9yIDEuMy4wIHJlbGVhc2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZjMwYWQ0OWIxNmJmOTk4YjAzYzFhNTIyOGI2Yzg2MzY5ZDYxYzI1OAotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE5vdiAxOSAxMDowMjoxMyAyMDA3IC0wNTAwCi0KLSAgICBNb3ZlIENPTkZJR19RRSBvdXQgb2YgQ09ORklHX1BDSSB3cmFwIGZvciBNUEM4NTY4TURTCi0KLSAgICBDT05GSUdfUUUgc2hvdWxkbid0IGJlIGluIHRoZSB3cmFwIG9mIENPTkZJR19QQ0ksIGZpeCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmOGMzMjA2MDkzNjYxNzZiMzExMDRkOWJmNWUyOTUyMzJlMWM3ZjFkCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CU1vbiBOb3YgMTkgMTE6MTQ6MTYgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIGJvYXJkL2d0aDIvbG93bGV2ZWxfaW5pdC5TOiBGaXggYSBidWlsZCB3YXJuaW5nCi0KLSAgICBsb3dsZXZlbF9pbml0LlM6IEFzc2VtYmxlciBtZXNzYWdlczoKLSAgICBsb3dsZXZlbF9pbml0LlM6NDEzOiBXYXJuaW5nOiBQcmV0ZW5kaW5nIGdsb2JhbCBzeW1ib2wgdXNlZCBhcyBicmFuY2ggdGFyZ2V0IGlzIGxvY2FsLgotCi0gICAgTG9va2luZyBhdCBjb2RlcywgdGhlIGBtZW10ZXN0JyBhbmQgYGNsZWFybWVtJyBhcmUgaW50ZW50aW9uYWwgbWl4ZWQKLSAgICB1c2Ugb2YgYGdsb2JhbCBzeW1ib2xzJyBhbmQgYGxhYmVsJyBmb3IgZGVidWdnaW5nIHB1cnBvc2UuIFRvIG1ha2UgaXQKLSAgICBidWlsZCwganVzdCBkaXNhYmxlIGdsb2JhbC1zeW1ib2xzLXVzZSBmb3Igbm93LiBBcyBhIHJlc3VsdCBgbWVtdGVzdCcKLSAgICBzdGlsbCByZW1haW5zIGFzIHVudXNlZCwgYnV0IGxlYXZlIGl0IGJlLi4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCBlOGRhNThmMmJjMDkyODkxZThjYzkyYjkyN2VkNWM0YmQwY2IwY2FiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDE5IDEyOjU5OjE0IDIwMDcgKzAxMDAKLQotICAgIEZpeCBidWlsZCBwcm9ibGVtcyB3aXRoIG1wMnVzYiBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZiZjRjNjg2YWZjYTFlODZlMWMzODRkNTkyMThmOTE0NjA1NzEzYmYKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVN1biBOb3YgMTggMTg6MzY6MTEgMjAwNyArMDEwMAotCi0gICAgczNjMjR4MDogRml4IHVzYl9vaGNpLmMgbWlzc2luZyBpbiBNYWtlZmlsZQotICAgIGFuZCB1c2Jfb2hjaS5jIHdhcm5pbmcgZGlmZmVyIGluIHNpZ25lZG5lc3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA2MDczZjYxZTA3OGRhNWRkYjUyMWI1NjI1NmJjYzM2NTA4NTg5ODgzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTdW4gTm92IDE4IDEyOjU1OjAyIDIwMDcgKzAxMDAKLQotICAgIHBiMXgwMCBib2FyZDogRml4IHUxNiBzdGF0dXMgZGVjbGFyYXRpb24gd2hlbiBQQ01DSUEgaXMgZGVmaW5lZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDg0MTJkODE0Y2U4YmY1NTcwYTJiNzQ3ZjFlN2ZkMzIxMDk3ZmU5ODcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBOb3YgMTggMTc6MTE6MDkgMjAwNyArMDEwMAotCi0gICAgRml4IGNvbXBpbGVyIHdhcm5pbmdzIGZvciBBUk0gc3lzdGVtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA0MDllY2RjMGJiNDdkZDI4YjBhZjZjMjVmZmQ2NThkMjJjYzM2YjM3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gTm92IDE4IDE2OjM2OjI3IDIwMDcgKzAxMDAKLQotICAgIEZpeCBjb21waWxlciB3YXJuaW5ncyBmb3IgUFBDIHN5c3RlbXMuIFVwZGF0ZSBDSEFOR0VMT0cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjUzODExYTNjMmIzNTg1NmJmMTJlMTk2ZGNjOGM0Njk0ZTI4ZTQyMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTdW4gTm92IDE4IDE0OjQ0OjQ0IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogQ29ycmVjdCA0MDVFWCBQQ0llIFVUTCByZWdpc3RlciBtYXBwaW5nCi0KLSAgICBNYXAgNGsgbWVtIHNwYWNlIGZvciBVVEwgcmVnaXN0ZXJzIGZvciBlYWNoIHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwNzljMmM0ZmE3MWMwZDFlYmVmMzk0NTA4ZGY5MDg4ZGY4YTMwOGQzCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgTm92IDE3IDExOjMxOjEwIDIwMDcgKzAxMDAKLQotICAgIEZpeCB3YXJuaW5nIGRpZmZlciBpbiBzaWduZWRuZXNzIGluIG5ldC9uZXQuYyBhbmQgbmV0L25mcy5jCi0KLWNvbW1pdCA3ZTE0ZmM2NTM2OGNiZDI4NjFiMTIwNzQ1M2RhNTVhNGZjN2IzZjgxCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgTm92IDE3IDIwOjQyOjQ1IDIwMDcgKzA5MDAKLQotICAgIGd0aDIuYzogRml4IGEgd2FybmluZyBvbiBndGgyIGJ1aWxkLgotCi0gICAgZ3RoMi5jOiBJbiBmdW5jdGlvbiAnbWlzY19pbml0X3InOgotICAgIGd0aDIuYzo0MzQ6IHdhcm5pbmc6IHBvaW50ZXIgdGFyZ2V0cyBpbiBwYXNzaW5nIGFyZ3VtZW50IDIgb2YgJ3NldGVudicgZGlmZmVyIGluIHNpZ25lZG5lc3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCAyMzA5YzEzMGFhNGM4NGI5MWJkODc0YTQxMjY5YzkyM2ViNjFiNTU1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBOb3YgMTcgMDc6NTg6MjUgMjAwNyArMDEwMAotCi0gICAgRml4IHdhcm5pbmcgZGlmZmVyIGluIHNpZ25lZG5lc3MgaW4gY29tbW9uL2NtZF9zY3NpLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDllYTYxYjU3OTY4NTU0ZWFmMGY0NzRlYzdlMDg4YjE3ZDM2N2Y0NzQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IE5vdiAxNyAxNDo1MjoyOSAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBBTUNDIEtpbGF1ZWEgY29uZmlnIGZpbGUKLQotICAgIC0gVXNlIGdlbmVyaWMgR1BJTyBjb25maWd1cmF0aW9uIGZyYW1ld29yayAoQ0ZHXzR4eF9HUElPX1RBQkxFKQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgN2UxZDg4NGI3Y2I2MDIwMDczMjljNTE3ZWMxYzQ1M2UzYTZhNWQ5YwotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU2F0IE5vdiAxNyAyMDowNToyNiAyMDA3ICswOTAwCi0KLSAgICBbTUlQU10gY3B1L21pcHMvY29uZmlnLm1rOiBGaXggR05VIGFzc2VtYmxlciBtaW5vciB2ZXJzaW9uIHBpY2tlcgotCi0gICAgQ3VycmVudCB0cmljayB0byBwaWNrIHVwIEdOVSBhc3NlbWJsZXIgbWlub3IgdmVyc2lvbiBkb2VzIG5vdCB3b3JrIHdpdGggdGhlCi0gICAgbGF0ZXN0IGJpbnV0aWxzICgyMDA3LTAzLTAxIG9yIGxhdGVyKSBkdWUgdG8gJHtQS0dWRVJTSU9OfSBub3cgZGVmYXVsdCB0bwotICAgICIoR05VIEJpbnV0aWxzKSAiLgotCi0gICAgICAkIHNkZS1hcyAtLXZlcnNpb24gfGdyZXAgIkdOVSBhc3NlbWJsZXIiCi0gICAgICBHTlUgYXNzZW1ibGVyIDIuMTUuOTQgbWlwc3NkZS02LjAyLjAyLTIwMDUwNjAyCi0gICAgICAkIHNkZS1hcyAtLXZlcnNpb24gfGdyZXAgIkdOVSBhc3NlbWJsZXIiIHxhd2sgJ3twcmludCAkM30nCi0gICAgICAyLjE1Ljk0Ci0gICAgICAkIHNkZS1hcyAtLXZlcnNpb24gfGdyZXAgIkdOVSBhc3NlbWJsZXIiIHxhd2sgJ3twcmludCAkM30nIHxhd2sgLUYuICd7cHJpbnQgJDJ9JwotICAgICAgMTUKLSAgICAgICQKLQotICAgICAgJCBtaXBzLWxpbnV4LWFzIC0tdmVyc2lvbiB8Z3JlcCAiR05VIGFzc2VtYmxlciIKLSAgICAgIEdOVSBhc3NlbWJsZXIgKEdOVSBCaW51dGlscykgMi4xOAotICAgICAgJCBtaXBzLWxpbnV4LWFzIC0tdmVyc2lvbiB8Z3JlcCAiR05VIGFzc2VtYmxlciIgfGF3ayAne3ByaW50ICQzfScKLSAgICAgIChHTlUKLSAgICAgICQgbWlwcy1saW51eC1hcyAtLXZlcnNpb24gfGdyZXAgIkdOVSBhc3NlbWJsZXIiIHxhd2sgJ3twcmludCAkM30nIHxhd2sgLUYuICd7cHJpbnQgJDJ9JwotICAgICAgKG5vIG91dHB1dCkKLSAgICAgICQKLQotICAgIEFzIGEgcmVzdWx0IG9mIGFib3ZlLCB5b3UnbGwgc2VlIG1hbnkgbm9pc2VzIHdpdGggc3VjaCBiaW51dGlsczoKLQotICAgICAgbWFrZSAtQyBjcHUvbWlwcy8KLSAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKLSAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKLSAgICAgIG1ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSBgL2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9jcHUvbWlwcycKLSAgICAgIG1pcHMtbGludXgtZ2NjICAtRF9fQVNTRU1CTFlfXyAtZyAgLU9zICAgLURfX0tFUk5FTF9fIC1EVEVYVF9CQVNFPTB4QjAwMDAwMDAgIC1JL2hvbWUvc2t1cmliYXkvZGV2ZWwvdS1ib290LmdpdC9pbmNsdWRlIC1mbm8tYnVpbHRpbiAtZmZyZWVzdGFuZGluZyAtbm9zdGRpbmMgLWlzeXN0ZW0gL2hvbWUvc2t1cmliYXkvZGV2ZWwvYnVpbGRyb290L2J1aWxkX21pcHMvc3RhZ2luZ19kaXIvdXNyL2Jpbi8uLi9saWIvZ2NjL21pcHMtbGludXgtdWNsaWJjLzQuMi4xL2luY2x1ZGUgLXBpcGUgIC1EQ09ORklHX01JUFMgLURfX01JUFNfXyAtRyAwIC1tYWJpY2FsbHMgLWZwaWMgLXBpcGUgLW1zb2Z0LWZsb2F0IC1tYXJjaD00a2MgLW10dW5lPTRrYyAtRUIgLWMgLW8gaW5jYWlwX3dkdC5vIGluY2FpcF93ZHQuUwotICAgICAgL2Jpbi9zaDogbGluZSAwOiBbOiA6IGludGVnZXIgZXhwcmVzc2lvbiBleHBlY3RlZAotICAgICAgbWlwcy1saW51eC1nY2MgIC1EX19BU1NFTUJMWV9fIC1nICAtT3MgICAtRF9fS0VSTkVMX18gLURURVhUX0JBU0U9MHhCMDAwMDAwMCAgLUkvaG9tZS9za3VyaWJheS9kZXZlbC91LWJvb3QuZ2l0L2luY2x1ZGUgLWZuby1idWlsdGluIC1mZnJlZXN0YW5kaW5nIC1ub3N0ZGluYyAtaXN5c3RlbSAvaG9tZS9za3VyaWJheS9kZXZlbC9idWlsZHJvb3QvYnVpbGRfbWlwcy9zdGFnaW5nX2Rpci91c3IvYmluLy4uL2xpYi9nY2MvbWlwcy1saW51eC11Y2xpYmMvNC4yLjEvaW5jbHVkZSAtcGlwZSAgLURDT05GSUdfTUlQUyAtRF9fTUlQU19fIC1HIDAgLW1hYmljYWxscyAtZnBpYyAtcGlwZSAtbXNvZnQtZmxvYXQgLW1hcmNoPTRrYyAtbXR1bmU9NGtjIC1FQiAtYyAtbyBjYWNoZS5vIGNhY2hlLlMKLSAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKLSAgICAgIG1pcHMtbGludXgtZ2NjIC1nICAtT3MgICAtRF9fS0VSTkVMX18gLURURVhUX0JBU0U9MHhCMDAwMDAwMCAgLUkvaG9tZS9za3VyaWJheS9kZXZlbC91LWJvb3QuZ2l0L2luY2x1ZGUgLWZuby1idWlsdGluIC1mZnJlZXN0YW5kaW5nIC1ub3N0ZGluYyAtaXN5c3RlbSAvaG9tZS9za3VyaWJheS9kZXZlbC9idWlsZHJvb3QvYnVpbGRfbWlwcy9zdGFnaW5nX2Rpci91c3IvYmluLy4uL2xpYi9nY2MvbWlwcy1saW51eC11Y2xpYmMvNC4yLjEvaW5jbHVkZSAtcGlwZSAgLURDT05GSUdfTUlQUyAtRF9fTUlQU19fIC1HIDAgLW1hYmljYWxscyAtZnBpYyAtcGlwZSAtbXNvZnQtZmxvYXQgLW1hcmNoPTRrYyAtbXR1bmU9NGtjIC1FQiAtV2FsbCAtV3N0cmljdC1wcm90b3R5cGVzIC1jIC1vIGFzY19zZXJpYWwubyBhc2Nfc2VyaWFsLmMKLSAgICAgIC9iaW4vc2g6IGxpbmUgMDogWzogOiBpbnRlZ2VyIGV4cHJlc3Npb24gZXhwZWN0ZWQKLQotICAgIFRoaXMgcGF0Y2ggc2ltcGxpZmllcyB0aGUgdHJpY2sgYW5kIG1ha2VzIGl0IHdvcmsgd2l0aCBib3RoIHZlcnNpb25zIG9mIGdhcy4KLSAgICBJIGFsc28gcmVwbGFjZSBhbiBleHBlbnNpdmUgYGF3ayAob3IgZ2F3ayknIHdpdGggYGN1dCcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMTY2NjRmNzI4NTA4NDZlNjQ1NjE2ZGExYzBmYTVhZmNkNmQxNWYxNQotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU2F0IE5vdiAxNyAyMDowNToyNiAyMDA3ICswOTAwCi0KLSAgICBbTUlQU10gUmVtb3ZlIHVzZWxlc3MgaW5zdHJ1Y3Rpb25zIGZvciBpbml0aWFsaXppbmcgJGdwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDAzYzAzMWQ1NjYwZWE5NDZjMzlhZjZlMmUxNjI2N2RhODU3YzYwOWYKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVNhdCBPY3QgMjcgMTU6Mjc6MDYgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIE1JUFMgNEsgY29yZTogQ29kaW5nIHN0eWxlIGNsZWFudXBzCi0KLSAgICBObyBsb2dpY2FsIGNoYW5nZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgZjVlNDI5ZDM4NjBiYmE0YzZhZThiZWFkOGY3ODM0OWZhMjQ0OTFiMgotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU2F0IE5vdiAxNyAyMDowNToyMCAyMDA3ICswOTAwCi0KLSAgICBbTUlQU10gZ3RoMi5jOiBGaXggYSB3YXJuaW5nIG9uIGd0aDIgYnVpbGQuCi0KLSAgICBndGgyLmM6IEluIGZ1bmN0aW9uICdtaXNjX2luaXRfcic6Ci0gICAgZ3RoMi5jOjQzNDogd2FybmluZzogcG9pbnRlciB0YXJnZXRzIGluIHBhc3NpbmcgYXJndW1lbnQgMiBvZiAnc2V0ZW52JyBkaWZmZXIgaW4gc2lnbmVkbmVzcwotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDRmYmQwNzQxYjJiNjQ0MWRhMTBiZTkzZTEwMjY3MTIyNTgxYjcwNzkKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVNhdCBPY3QgMjcgMTU6MjI6MzMgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIGF1MXgwMF9ldGguYzogRml4ZWQgYSB3YXJuaW5nIG9uIHBiMTAwMCBidWlsZC4KLQotICAgIGF1MXgwMF9ldGguYzogSW4gZnVuY3Rpb24gJ2F1MXgwMF9taWlwaHlfd3JpdGUnOgotICAgIGF1MXgwMF9ldGguYzoxMzk6IHdhcm5pbmc6ICdyZXR1cm4nIHdpdGggbm8gdmFsdWUsIGluIGZ1bmN0aW9uIHJldHVybmluZyBub24tdm9pZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGYwMTMyMDQ1OTczNmYxNTY3MDc0MjVjZjgxMTJmOTg2MDYzMDFhYTQKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVNhdCBPY3QgMjcgMTU6MDA6MjUgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIGF1MXgwMF9ldGguYzogRml4IGF1MXgwMF9taWlwaHlfe3JlYWQsd3JpdGV9IGJ1aWxkIGVycm9yCi0KLSAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfZW5ldF9pbml0aWFsaXplJzoKLSAgICBhdTF4MDBfZXRoLmM6MjQ2OiBlcnJvcjogJ2F1MXgwMF9taWlwaHlfcmVhZCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pCi0gICAgYXUxeDAwX2V0aC5jOjI0NjogZXJyb3I6IChFYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UKLSAgICBhdTF4MDBfZXRoLmM6MjQ2OiBlcnJvcjogZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbi4pCi0gICAgYXUxeDAwX2V0aC5jOjI0NjogZXJyb3I6ICdhdTF4MDBfbWlpcGh5X3dyaXRlJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbikKLSAgICBhdTF4MDBfZXRoLmM6IEluIGZ1bmN0aW9uICdhdTF4MDBfbWlpcGh5X3dyaXRlJzoKLSAgICBhdTF4MDBfZXRoLmM6Mjk4OiB3YXJuaW5nOiAncmV0dXJuJyB3aXRoIG5vIHZhbHVlLCBpbiBmdW5jdGlvbiByZXR1cm5pbmcgbm9uLXZvaWQKLSAgICBtYWtlWzFdOiAqKiogW2F1MXgwMF9ldGgub10gRXJyb3IgMQotCi0gICAgRml4ZWQgYnkgbW92aW5nIHRoZXNlIHR3byBmdW5jdGlvbnMgZm9yd2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCBiMDkyNThjNTM5M2VkZDEwODdjNWYzOWFlNjgzMzhmMTZiNDlmOGIzCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgT2N0IDI3IDE1OjAwOjI1IDIwMDcgKzA5MDAKLQotICAgIE1BS0VBTEw6IEFkZGVkIG1pc3NpbmcgcGIxMDAwIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotCi1jb21taXQgMmU0YTZlMzY2N2ExZTM5YzBlNmU5OTQ5ODY4NmIxNWQyNzE4YjM2OQotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNrdXJpYmF5QHJ1YnkuZHRpLm5lLmpwPgotRGF0ZToJU2F0IE9jdCAyNyAxNTowMDoyNCAyMDA3ICswOTAwCi0KLSAgICBbTUlQU10gcGIxMDAwOiBSZXBsYWNlIG9ic29sZXRlIG1lbXNldHVwLlMgd2l0aCBsb3dsZXZlbF9pbml0LlMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci0KLWNvbW1pdCA2NjJlNWNiMzk3MjQ5YzNlYTg4YTRjMzI1NWU5Y2NmYzQwYjk4ZDgyCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2t1cmliYXlAcnVieS5kdGkubmUuanA+Ci1EYXRlOglTYXQgT2N0IDI3IDE1OjAwOjI0IDIwMDcgKzA5MDAKLQotICAgIFtNSVBTXSB1LWJvb3QubGRzOiBDbGVhbnVwIF9fdV9ib290X2NtZF97c3RhcnQsZW5kfQotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IDU5NDdmNjk5OWFhZmE3YzU0YzEzOTA5ODNkMjY0YTg0NjNkZmVhOGUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBOb3YgMTcgMDI6MzQ6MzggMjAwNyArMDEwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPSUcsIHByZXBhcmUgZm9yIC1yYzQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBmZDMyOWU2ZjA1YmJkZmU2YmQ3MWIwZTA5ZjBjNzZkM2IwYTAyNWE1Ci1BdXRob3I6IEx1b3RhbyBGdSA8bC5mdUBwZW5ndXRyb25peC5kZT4KLURhdGU6CVdlZCBOb3YgMTQgMTg6NTg6MzMgMjAwNyArMDEwMAotCi0gICAgRml4IHRoZSBpMmMgZnJlcXVlbmN5IGFuZCBkZWZhdWx0IGFkZHJlc3MgaW4gcnNkcHJvdG8gYm9hcmQKLQotICAgIHJzZHByb3RvIGJvYXJkIHN1cHBvcnQgaGFzIHdyb25nIEkyQyBmcmVxdWVuY3kgYW5kIHdyb25nIHJldHVybiB2YWx1ZQotICAgIGhhbmRsaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTHVvdGFvIEZ1IDxsLmZ1QHBlbmd1dHJvbml4LmRlPgotCi1jb21taXQgNDI5YzE4MGVkYWQwMzhmOTFjOTg5Y2IxNGI0NzgyMjgwOTJlNzA1NAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE5vdiAxNyAwMTo0NTozOCAyMDA3ICswMTAwCi0KLSAgICBwb3dlcnBjOiBCYWNrb3V0IHJlbG9jYXRpb24gY2hhbmdlcyBmb3IgTVBDNTEyMSwgdG9vLgotCi0gICAgQXBwbHkgR3JhbnQgTGlrZWx5J3MgYmFja291dCB0byBNUEM1MTIxIGNvZGUsIHRvby4KLQotICAgIFBvaW50ZWQgb3V0IGJ5IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMWMzZGQ0MzMzOGEwNzcxNjVlN2UwMzA5Y2IzOTk0ZTY1ZDJiZGJmOAotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgTm92IDEzIDIyOjE4OjMzIDIwMDcgLTA3MDAKLQotICAgIHBvd2VycGM6IEJhY2tvdXQgcmVsb2NhdGlvbiBjaGFuZ2VzLgotCi0gICAgVWdoLiAgSSAqaGF0ZSogdG8gYmFjayB0aGlzIGNoYW5nZSBvdXQsIGJ1dCB0aGVzZSBjb21waWxlciBmbGFncyBkb24ndAotICAgIHdvcmsgZm9yIHJlbG9jYXRpb24gb24gYWxsIHZlcnNpb25zIG9mIEdDQy4gIEkndmUgbm90IGJlZW4gYWJsZSB0bwotICAgIHJlcHJvZHVjZSB0aGUgZW52aXJvbm1lbnQgaW4gbXkgc2V0dXAgKGFuZCBoZW5jZSwgbm90IGJlZW4gYWJsZSB0bwotICAgIGZpbmQgYSBjb21iaW5hdGlvbiB0aGF0ICpkb2VzKiB3b3JrKSwgc28gSSd2ZSBnb3Qgbm8gY2hvaWNlIGJ1dCB0byBnbwotICAgIGJhY2sgdG8gdGhlIG9sZCBnY2MgZmxhZ3MgYW5kIGxpbmtlciBzY3JpcHQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA1YzE1MDEwZWZhZDk4MGFkNTQ5OGNjNTY1ZmMxZWQ3MGRmMmY1MmI0Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglUdWUgTm92IDEzIDA5OjExOjA1IDIwMDcgKzAxMDAKLQotICAgIEZpeGVkIG1pcHNfaW9fcG9ydF9iYXNlIGJ1aWxkIGVycm9ycy4KLQotICAgIFRoaXMgcGF0Y2ggaGFzIGJlZW4gc2VudCBvbjoKLSAgICAtIDI5IFNlcCAyMDA3Ci0KLSAgICBBbHRob3VnaCBtaXBzX2lvX3BvcnRfYmFzZSBpcyBjdXJyZW50bHkgYSBwYXJ0IG9mIElERSBjb21tYW5kLCBpdCBpcyBxdWl0ZQotICAgIGZ1bmRhbWVudGFsIGZvciBNSVBTIEkvTyBwb3J0IGFjY2VzcyBzdWNoIGFzIGluW2J3bF0gYW5kIG91dFtid2xdLiBTbyBtb3ZlCi0gICAgaXQgdG8gTUlQUyBnZW5lcmFsIHBhcnQsIGFuZCBpbnRyb2R1Y2UgYHNldF9pb19wb3J0X2Jhc2UoKScgZnJvbSBMaW51eC4KLQotICAgIFRoaXMgcGF0Y2ggaXMgdHJpZ2dlcmVkIGJ5IG11bHRpcGxlIGRlZmluaXRpb24gb2YgYG1pcHNfaW9fcG9ydF9iYXNlJyBidWlsZAotICAgIGVycm9yIG9uIGd0aDIgKGFuZCB0YjAyMjkgYWxzbyBuZWVkcyB0aGlzIGZpeC4pCi0KLSAgICBib2FyZC9ndGgyL2xpYmd0aDIuYShndGgyLm8pOiBJbiBmdW5jdGlvbiBgbG9nX3NlcmlhbF9jaGFyJzoKLSAgICAvaG9tZS9za3VyaWJheS9kZXZlbC91LWJvb3QuZ2l0L2JvYXJkL2d0aDIvZ3RoMi5jOjQ3OiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGBtaXBzX2lvX3BvcnRfYmFzZScKLSAgICBjb21tb24vbGliY29tbW9uLmEoY21kX2lkZS5vKTovaG9tZS9za3VyaWJheS9kZXZlbC91LWJvb3QuZ2l0L2NvbW1vbi9jbWRfaWRlLmM6NzEyOiBmaXJzdCBkZWZpbmVkIGhlcmUKLSAgICBtYWtlOiAqKiogW3UtYm9vdF0gRXJyb3IgMQotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNmVjYmI3YTNmYTliMDk0MGVkMzNlNDkwZDE5NWQ0YjY4MzBiMjQyMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE5vdiAxNyAwMTozMDo0MCAyMDA3ICswMTAwCi0KLSAgICBGaXggYSBidWcgaW4gdGhlIHNsYXZlIHNlcmlhbCBwcm9ncmFtbWluZyBtb2RlIGZvciB0aGUgWGlsaW54Ci0gICAgU3BhcnRhbjIvMyBGUEdBcy4gVGhlIG9sZCBjb2RlIHVzZWQgIjwgMCIgb24gYSAiY2hhciIgdHlwZSB0byB0ZXN0IGlmCi0gICAgdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYml0IHdhcyBzZXQsIHdoaWNoIGRpZCBub3Qgd29yayBvbiBhbnkKLSAgICBhcmNoaXRlY3R1cmUgd2hlcmUgImNoYXIiIGRlZmF1bHRlZCB0byBiZSBhbiB1bnNpZ25lZCB0eXBlLgotCi0gICAgQmFzZWQgb24gYSBwYXRjaCBieSBBbmdlbG9zIE1hbm91c2FyaWRpcyA8YW1hbm91c0BpbmFjY2Vzc25ldHdvcmtzLmNvbT4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkMDhiNzIzM2JjMjUyZmFhZDgzMzllN2NhMGRkZmQ2MmZhNzk5MDNjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTm92IDEgMTI6MjM6MjkgMjAwNyAtMDUwMAotCi0gICAgODZ4eDogRml4IGJyb2tlbiB2YXJpYWJsZSByZWZlcmVuY2Ugd2hlbiAjZGVmIERFQlVHaW5nLgotCi0gICAgU29tZXRpbWVzIHlvdSBjYW4ndCByZWZlcmVuY2UgdGhlIEREUjIgY29udHJvbGxlciB2YXJpYWJsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjlkOTE2NGQ5YzZiNWE3ZjAzOTNmZDhkN2UyNDZiOGEwMzI2YmMxOQotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAyNiAxODozMjowMCAyMDA3ICswODAwCi0KLSAgICBtYWtlIDg2MTAgYm9hcmQgdXNlIHBpeGlzIHJlc2V0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGI3NGIzYzFjOTQ4MWE2YmZmYmY4Y2Q0NDVlNWJjYmY2OTA4ZTgzNgotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE9jdCAyOSAxOToyNjoyMSAyMDA3ICswODAwCi0KLSAgICBVbmlmeSBwaXhpc19yZXNldCBhbHRiYW5rIGFjcm9zcyBib2FyZCBmYW1pbGllcwotCi0gICAgQmFzaWNhbGx5LCByZWZhY3RvciB0aGUgQ0ZHX1BJWElTX1ZCT09UX01BU0sgdmFsdWVzCi0gICAgaW50byB0aGUgc2VwYXJhdGUgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjRiZjU1NTQ2NWM3OTI2YmUxM2UxMDQ2YWMwZDBmMDVhYzcyODI5YwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIE5vdiA3IDA4OjE5OjIxIDIwMDcgKzAxMDAKLQotICAgIEZpeCB3YXJuaW5nOiBwb2ludGVyIHRhcmdldHMgaW4gYXNzaWdubWVudCBkaWZmZXIgaW4gc2lnbmVkbmVzcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDdhNjBlZTdjNjI0OGE5NThjNTc1N2QzNjYwYTE3MDI3MjNhMjc4NmQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVdlZCBOb3YgNyAwODoxOToxOSAyMDA3ICswMTAwCi0KLSAgICBGaXggd2FybmluZyBkaWZmZXIgaW4gc2lnbmVkbmVzcyBpbiBjb21tb24vY21kX2lkZS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZjMxZDM4YjllZWE5YjMyZjZhMWFjODQ4YTI5OGNjNzFjYTRjOWEwMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgTm92IDE2IDE0OjE2OjU0IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRW5hYmxlIDQwNUVYIFBDSWUgVVRMIHJlZ2lzdGVyIGNvbmZpZ3VyYXRpb24KLQotICAgIFRpbGwgbm93IHRoZSBVVEwgcmVnaXN0ZXJzIG9uIDQwNUVYIHdlcmUgbm90IGluaXRpYWxpemVkIGJ1dCBsZWZ0IHdpdGgKLSAgICB0aGVpciBkZWZhdWx0IHZhbHVlcy4gVGhpcyBwYXRjaCBuZXcgaW5pdGlhbGl6ZXMgc29tZSBvZiB0aGUgVVRMCi0gICAgcmVnaXN0ZXJzIG9uIDQwNUVYLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWNkY2JkNGY4YzFmOGNlZmQ3ODU3NTJmNGU3NTM2YWFlMmE0ZWNmOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgTm92IDE2IDE0OjAwOjU5IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgTWFrYWx1IGZvciBib2FyZCByZXYgMS4xCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgY2hhbmdlcyBuZWVkZWQgZm9yIE1ha2FsdSByZXYgMS4xOgotCi0gICAgLSBFbmFibGUgMm5kIEREUjIgYmFuayByZXN1bHRpbmcgaW4gMjU2TUJ5dGUgb2YgU0RSQU0KLSAgICAtIEVuYWJsZSAybmQgZXRoZXJuZXQgcG9ydCBFTUFDMQotICAgIC0gVXNlIGdlbmVyaWMgR1BJTyBjb25maWd1cmF0aW9uIGZyYW1ld29yayAoQ0ZHXzR4eF9HUElPX1RBQkxFKQotICAgIC0gUmVzZXQgUENJZSBwb3J0cyB2aWEgR1BJTyB1cG9uIGJvb3R1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNGQ0ZmFhZTY1ZTExNWUzMjc0MjVjZDUxNGMxYTM1MTQ2YTg1MTY2YgotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKLQotICAgIEdyb3VwIFBDSSBhbmQgUENNQ0lBIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNTc5OGY4N2RjMTBhNDk2ZDc5ZDMxNzdiOWY1YTc2NDg4OTg3ZmQzNQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKLQotICAgIEdyb3VwIGJsb2NrL2ZsYXNoIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgZGY1OGM4MTU1MTcwMGYwNThiNDRjYWNmNTVhNzk5N2ZhNjNiZmUwYQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglNb24gU2VwIDI0IDA5OjA1OjMxIDIwMDcgLTA2MDAKLQotICAgIEdyb3VwIFVTQiBkcml2ZXJzIGluIGRyaXZlcnMvTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDVkYmI2ZWQ2MjJlNTM5YjBjODQ5M2VmN2U1NzhkM2E1MzMxODFkMjkKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMCAyMDA3IC0wNjAwCi0KLSAgICBHcm91cCBpMmMgZHJpdmVycyBpbiBkcml2ZXJzL01ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBlYzAwYzc2ZGUwZTU5NzEyNzM5MDU5OThkNjJkNmJiMTE5MzI0MjE4Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CU1vbiBTZXAgMjQgMDk6MDU6MzAgMjAwNyAtMDYwMAotCi0gICAgR3JvdXAgY29uc29sZSBkcml2ZXJzIGluIGRyaXZlcnMvTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDc1NGYyMzBhYTAxYjhjNzg5ZmMzMWY4MDEzYzI0ODc5NTQwNzMzMDAKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJTW9uIFNlcCAyNCAwOTowNTozMCAyMDA3IC0wNjAwCi0KLSAgICBHcm91cCBuZXR3b3JrIGRyaXZlcnMgaW4gZHJpdmVycy9NYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgZjAwMzdjNTZiMGQxMmNkNDYyMTUxMjQ2NjdiOWY4M2Q2MGVmOTM5MQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglNb24gU2VwIDI0IDA5OjA1OjMwIDIwMDcgLTA2MDAKLQotICAgIEJ1aWxkOiBzcGxpdCBDT0JKUyB2YWx1ZSBpbnRvIG11bHRpcGxlIGxpbmVzCi0KLSAgICBUaGlzIGNoYW5nZSBpcyBpbiBwcmVwYXJhdGlvbiBmb3IgY29uZHRpdGlvbmlhbCBjb21waWxlIHN1cHBvcnQgaW4gdGhlCi0gICAgYnVpbGQgc3lzdGVtLiAgQnkgc3BsaXRpbmcgdGhlbSBhbGwgaW50byBzZXBlcmF0ZSBsaW5lcyBub3csIHN1YnNlcXVlbnQKLSAgICBwYXRjaGVzIHRoYXQgY2hhbmdlICdDT0JKUy15ICs9ICcgaW50byAnQ09CSlMtJChDT05GSUdfPGJsYWg+KSArPSAnIHdpbGwKLSAgICBiZSBsZXNzIGludmFzaXZlIGFuZCBlYXNpZXIgdG8gcmV2aWV3Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCAxYjRhYWZmZTRmYjJhNWU5NWQ5MTExYTVkOTRmZDFmODkyMTVkY2U0Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CU1vbiBTZXAgMjQgMDk6MDU6MzAgMjAwNyAtMDYwMAotCi0gICAgQWRkIC5naXRpZ25vcmUgZmlsZXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLSAgICBBY2tlZC1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk1NTQxM2YzNWYwNTRhODJlNDAwNDJmMWRiY2Y1MDFjNmEwNTcxOWIKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVGh1IE5vdiAxNSAwODoyNzo1MiAyMDA3IC0wNzAwCi0KLSAgICBSZXZlcnQgIkNvcnJlY3QgcmVsb2NhdGlvbiBmaXh1cCBmb3IgbXBjNXh4IgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCAzNjQ5Y2Q5OWJhODE1YjY2MDE4Njg3MzU3NjU2MDJmMDBlZjM2OTJiLgotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGUxNTYzMzg4OGEwNThhYWNiMzFhNjJkMmNmMTI3OGUxZTRjMjM2YWIKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVGh1IE5vdiAxNSAwODoyNDozMiAyMDA3IC0wNzAwCi0KLSAgICBSZXZlcnQgIkNvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgTVBDNXh4eCIKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgNmY3NTc2YjIwZWNmMGQwNDBjM2FjM2IwMzJiNWNiYzg2MGUzOGE5MC4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCAxMzkzNjVmYmU1NjZkMGZjNjE5YTFlZDA0NDUyZWM1Mzg4ZjBjZWY4Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVRodSBOb3YgMTUgMDg6MjE6MDQgMjAwNyAtMDcwMAotCi0gICAgUmV2ZXJ0ICJDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24gZm9yIG1wYzgyMjAiCi0KLSAgICBUaGlzIHJldmVydHMgY29tbWl0IGE4NWRkMjU0YzA1NzdmY2ExMzYyN2M0NmU5M2ZjMmFkNGM0ZjFmMDAuCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNzA5MjIzNDIzNjllNWUzOWIyODZmZTIxZTc2OGEyMzljYTA3YTUxNAotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUaHUgTm92IDE1IDA4OjIwOjU3IDIwMDcgLTA3MDAKLQotICAgIFJldmVydCAiQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjR4IgotCi0gICAgVGhpcyByZXZlcnRzIGNvbW1pdCBmM2E1MmZlMDU5MjM5MzVkYjg2OTg1ZGFmOTQzOGUyZjcwYWMzOWFhLgotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDk2Mjc5YWI0Y2FkNjBjYjU5NzJhYTkzNGZiZTQ4NDVhYzAyY2M3NWEKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVGh1IE5vdiAxNSAwODoyMDo1MCAyMDA3IC0wNzAwCi0KLSAgICBSZXZlcnQgIkNvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgbXBjODI2MCIKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgNWFmNjFiMmY0YjgzOGEwNWY3OWJlMjc0ZjNlNWE2NmVkZDJkOWM5Ni4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA5MjhmZTMzYjI0Y2RmMzgyYThkYzg2ODdmZWQyNGIxOTYxY2RiNWQ2Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVRodSBOb3YgMTUgMDg6MjA6NDMgMjAwNyAtMDcwMAotCi0gICAgUmV2ZXJ0ICJDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24gZm9yIG1wYzgzeHgiCi0KLSAgICBUaGlzIHJldmVydHMgY29tbWl0IDA1NzAwNGY0YTQ4NjM1NTRkNTZjYzU2MjY4YmZhN2M3ZDk3MzhlMjcuCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgYzkzOTQ1ZThmOWUzMDA4NjBkMmJmNzNhMjU0OWNlNTc5NGY4YmQwMAotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUaHUgTm92IDE1IDA4OjIwOjI1IDIwMDcgLTA3MDAKLQotICAgIFJldmVydCAiW01QQzUxMnhdIENvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiIKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgOGQxNzk3OWQwMzU5NDkyYTgyMmEwYTQwOWQyNmUzYTM1NDliNGNkNC4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBjOTY3MmY4MWYxYmRiNGU4ZGRmNjJhYTcyY2EwMjA2ZThiNzJhYTFjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMTUgMTQ6MjU6MDkgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBTbWFsbCBBTUNDIEtpbGF1ZWEgY2xlYW51cAotCi0gICAgUmVtb3ZlIG5vdCBuZWVkZWQgcGNpX3RhcmdldF9pbml0KCkgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhZWU3NDdmMTliNDYwYTBlOWRhMjBmZjIxZTkwZmRhYWMxY2VjMzU5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMTUgMTQ6MjM6NTUgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBFbmFibGUgNDQwIEdQSU8gaW5pdCB0YWJsZSBDRkdfNDQwX0dQSU9fVEFCTEUgZm9yIDQwNSBwbGF0Zm9ybXMKLQotICAgIC0gUmVuYW1lIENGR180NDBfR1BJT19UQUJMRSB0byBDRkdfNHh4X0dQSU9fVEFCTEUKLSAgICAtIENsZWFudXAgb2YgdGhlIDR4eCBHUElPIGZ1bmN0aW9ucwotICAgIC0gTW92ZSBzb21lIEdQSU8gZGVmaW5lcyBmcm9tIHRoZSBjcHUgaGVhZGVycyBwcGM0MDUuaC9wcGM0NDAuaCBpbnRvIGdwaW8uaAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGFkYTBlYmYzOGU0MDczYmVlYTAzMDkxODhiMjVkODJhMTEyYTJhZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTm92IDE1IDE0OjIwOjA4IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogQU1DQyBUYWlodSBib2FyZCBjb25maWcgZmlsZSBjbGVhbnVwCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIHRoZSBBTUNDIFRhaWh1IGEgbGl0dGxlIG1vcmUgY29tcGF0aWJsZSB0byB0aGUgb3RoZXIKLSAgICBBTUNDIGV2YWwgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNWU3MWM1MWQ3NGM5NjNkMzE3NDA2MGMwNzhkY2FjZjEzYmRkMDJlZgotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IE5vdiAxNSAxMzozNzoyOCAyMDA3ICswMTAwCi0KLSAgICBbSU5LQTR4MF0gTkcgaGFyZHdhcmU6IGZsYXNoIHN1cHBvcnQKLQotICAgIERpc2FibGVkIGFuZCByZW1vdmUgaW5rYTR4MCBjdXN0b20gZmxhc2ggZHJpdmVyLCB1c2UgQ0ZJIGZsYXNoCi0gICAgZHJpdmVyIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNWZiNmQ3MTkxZTIwNmNkZGUwZTIzMTQwZmQ4MTExY2FlZDkzYTU5NQotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IE5vdiAxNSAxMzoyOTo1NSAyMDA3ICswMTAwCi0KLSAgICBbSU5LQTR4MF0gTkcgaGFyZHdhcmU6IFNEUkFNIHN1cHBvcnQKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aHJlZSBuZXcgRERSIGNoaXBzIHRoYXQgbWF5ICBiZSBwcmVzZW50IG9uIGEgTkcKLSAgICBJTktBNHgwIGhhcmR3YXJlOiBIWUIyNUQ1MTIxNjBCRi01LCBLNEg1MTE2MzhDLTdDQjMsIFQ0NlYzMk0xNkJOLTZJVC4KLQotICAgIENsZWFudXAgYm9hcmQvaW5rYTR4MC9tdDQ4bGMxNm0xNmEyLTc1LmggZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBmMjNjYjM0YzM2N2JiMjc1ODVhNGZkYjhhNzUyNzczNzBlN2QwNTk2Ci1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgTm92IDE1IDEzOjI0OjQzIDIwMDcgKzAxMDAKLQotICAgIFtJTktBNHgwXSBORyBoYXJkd2FyZTogcGxhdGZvcm0gY29kZSB1cGRhdGUKLQotICAgIC0gQ2xlYW51cCBjb21waWxlIHdhcm5pbmdzLgotICAgIC0gQWRkIG1pc3NpbmcgJ1wwJyBpbiBkZWZhdWx0IGVudmlyb25tZW50LgotICAgIC0gSW5jcmVhc2UgQ0ZHX01PTklUT1JfTEVOIHRvIDI1NiBLaUIuCi0gICAgLSBBZGQgcmVxdWlyZWQgQ0ZHX1VTRV9QUENFTlYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMmFlNjRmNTEzNWU1MWJiMTg3NTM4ODRkMTI2NWI5OWU4OWI1YWVkZAotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJVGh1IE5vdiAxNSAwODo1ODowMCAyMDA3ICswMDAwCi0KLSAgICBSZW1vdmUgd2FybmluZ3MgcmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwotICAgIFJlbW92ZSB3YXJuaW5ncyByZSBvbmVuYW5kX3JlYWQoKSAmIHdyaXRlKCkKLQotY29tbWl0IDJkYjkxNmUxNDQxMGUzZWMxNzM4NTA4YzdiZjRkZmViMmIyOTlhZTcKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CVRodSBOb3YgMTUgMDg6NDU6MTMgMjAwNyArMDAwMAotCi0gICAgQ29ycmVjdGlvbiBwYXRjaAotCi1jb21taXQgMWQ4YTQ5ZWNhMWM3YmRjOGRiMWM0N2E5MmY5MDE0YTI5ZWFkMDNhZQotQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgU2VwIDEzIDE4OjUyOjI4IDIwMDcgKzA4MDAKLQotICAgIEVuYWJsZSBVTGkxNTc1IEV0aGVybmV0IHN1cHBvcnQgaW4gODYxMEhQQ0QgY29uZmlnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1NGZkNmM5M2MyOGEwYTQ1MzUyZmZmNWRkOTI2NzM0MDFmZjU2M2YyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBOb3YgMTMgMDg6MTg6MjAgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBsd21vbjU6IENoYW5nZSBQSFkgcmVzZXQgc2VxdWVuY2UgZm9yIFBIWSBNRElPIGFkZHJlc3MgbGF0Y2hpbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDdkMGE0MDY2YjVhNmI2OThlNWZjMWI2NmNmZTk3MDU3NzRiYmNlOTMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE5vdiAxMyAwODowNjoxMSAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IEZpeCA0MDVFWCBQQ0llIFVUTFNFVCByZWdpc3RlciBzZXR1cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMWNlNTUxNTFjODVkMDY4ZjcwMzE3YThkNjVjNjEwNThiODkxYWZiNAotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLURhdGU6CVR1ZSBOb3YgMTMgMDc6NTA6MjkgMjAwNyArMDEwMAotCi0gICAgW1VDMTAxXSBTUkFNIG5vdyB3aXRoIDIgTUIgd29ya2luZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMmQxNDY4NDM0MTEwOWE2OTYxNmU0ZDYwMTZjZDYxNDAyZDU1MDg2ZgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBOb3YgOSAxNTozNzo1MyAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IFVzZSBnZW5lcmljIHVzYi1vaGNpIGRyaXZlciBmb3Igc2VxdW9pYSBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBtYWtlcyB0aGUgc2VxdW9pYSBib2FyZCB1c2UgdGhlIGdlbmVyaWMgdXNiLW9oY2kgZHJpdmVyCi0gICAgaW5zdGVhZCBvZiBjcHUvcHBjNHh4L3VzYl9vaGNpLmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5YmU2NTlhYzA4NjhkYzM2N2NhYTk1N2M1YzcyNWU0NmIwN2Y2YTVmCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIE5vdiA5IDE1OjM3OjIzIDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogTWFrZSBVU0Igd29ya2luZyB3aXRoIENPTkZJR180eHhfRENBQ0hFIGRlZmluZWQKLQotICAgIFRoaXMgcGF0Y2ggZGlzYWJsZXMgdGhlIDQ0eCBkLWNhY2hlIG9uICd1c2Igc3RhcnQnIGFuZAotICAgIHJlZW5hYmxlcyBpdCBvbiAndXNiIHN0b3AnLiBUaGlzIHNob3VsZCBiZSBzZWVuIGFzIGEKLSAgICB0ZW1wb3JhcnkgZml4IHVudGlsIHRoZSBnZW5lcmljIHVzYi1vaGNpIGRyaXZlciBjYW4KLSAgICBsaWZlIHdpdGggZC1jYWNoZSBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZmJkZTIxNjlkMmM0OGZjYzlmZjAzNDg5NTM0YTc4ZmZiMGE4YTBkNAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CUZyaSBOb3YgOSAxNTozNjo0NCAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSByZWR1bmRhbnQgY29kZSBmcm9tIDR4eCBuZXR3b3JrIGRyaXZlcgotCi0gICAgVGhpcyBwYXRjaCByZW1vdmVzIHNvbWUgcmVkdW5kYW50IGNvZGUgYW5kIGRlY3JlbWVudHMgdGhlIGVuZAotICAgIGFkZHJlc3Mgb2YgY2FjaGUgZmx1c2ggYW5kIGludmFsaWRhdGUgYnkgMS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDVjYTk4ODFhYWQ4YzQxM2FjMmE4Mjg2OGE1ZTM3MTkxNzgyNTQ1MDIKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CUZyaSBOb3YgOSAxNToyNDoyNiAyMDA3ICswMDAwCi0KLSAgICBBZGQgYXBvbGxvbiBib2FyZCBzdXBwb3J0Ci0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IGI1MzMxM2RiZmM3NDUyNWQ4NWYxZTdlMDEwMmY5MDJkNWM4NjNiZWIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIE5vdiA5IDEyOjE5OjU4IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIEluOi9PdXQ6L0VycjogYm9vdCBvdXRwdXQgZm9yIEFNQ0MgS2lsYXVlYQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzdmNjljMzQwMjc3OTM1YTZjMTlhOTU2NDIxODUyZGE5NDRhMzY1ZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgTm92IDkgMTI6MTg6NTQgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBNYWtlIG91dHB1dCBhIGxpdHRsZSBzaG9ydGVyIG9uIEkyQyBib290cm9tIGRldGVjdGlvbgotCi0gICAgTW9zdCA0eHggUFBDIGNhcGFibGUgb2YgdXNpbmcgYW4gSTJDIGJvb3Ryb20gZm9yIGJvb3RzdHJhcCBzZXR0aW5nCi0gICAgYWxyZWFkeSBwcmludCBhIGxpbmUgd2l0aCB0aGUgaW5mb3JtYXRpb24gd2hpY2ggSTJDIGJvb3Ryb20gaXMKLSAgICB1c2VkIGZvciBib290c3RyYXAgY29uZmlndXJhdGlvbi4gU28gd2UgZG9uJ3QgbmVlZCB0aGlzIGV4dHJhIGxpbmUKLSAgICB3aXRoICJJMkMgYm9vdCBFRVBST00gZW4tL2Rpcy1hYmxlZCIuCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gaGFzIGEgbGl0dGxlIGNvZGUgY2xlYW51cCBpbnRlZ3JhdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGQ3MzdhMjgxNTJlYzEyODczZjg1NDRjY2ExZmIzOWE0OWU1ZTY5MwotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTm92IDggMTI6NTA6MTggMjAwNyAtMDYwMAotCi0gICAgQ29sZEZpcmU6IE1DRjUzMjkgLSBSZW1vdmUgcmVzZXQgcmVnaXN0ZXJzIGZyb20gQ0NNCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3ZDdjZGVhNzY5YTYwYjBhNmU0YzE4YmVmN2Y5ZDY0OGZkMTRiOGQ3Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgOCAxMjozMToxMSAyMDA3IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTMyOSAtIEFkZCBSZXNldCBzdHJ1Y3R1cmUgdG8gaW1tYXBfNTMyOS5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwOWIyNmNmMDBkNzZkNzVmZGY3ZmRjNGIxM2U0ZGQ5Mjk3NDNiYzIxCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgOCAxMjoxOTowMSAyMDA3IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTMyOSAtIHJldmVydCBpbmNsdWRlL2FzbS1tNjhrL201MzI5LmggZmlsZSBtb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyMjVhMjRiNWUwNjJhZDk0NjI3NDI0NTA4YWU4MTRmNTFkYmUxYTM0Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgNyAxODowMDo1NCAyMDA3IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTQ0NXggLSBVcGRhdGUgY29ycmVjdCBSQU1CQVIgYW5kIG1pc3NpbmcgbGlua2VyIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNDhjN2MxNDgzNWYzNGQ1ZDkxMGI0NWU1NjAwMDUwZTU4Y2E2Y2FiCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBOb3YgNyAxNzo1NjoxNSAyMDA3IC0wNjAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTMyeCAtIFVwZGF0ZSBkb19yZXNldCgpIHVzaW5nIGNvcmUgcmVzZXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ5MjQwYTVmODI3ZWIzYjQ3NmE2YmEyOTM4ZDAxZjFhOWU3Njg4ZjQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE5vdiA3IDE3OjUxOjAwIDIwMDcgLTA2MDAKLQotICAgIENvbGRGaXJlOiBVcGRhdGUgY3B1IGZsYWcgZm9yIDQuMi14eCBjb21waWxlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDcwYmE1NjExNWI0ZGE2M2I0NmU5NzQyODdmYTQ1NTBkNDAyMzM4NgotQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE9jdCAzMSAxNDo1OTowNCAyMDA3IC0wNTAwCi0KLSAgICA4NjEwOiBBZGQgY29uc29sZSBmcmFtZSBidWZmZXIgc3VwcG9ydCB0byBGU0wgODYxMCBESVUgZHJpdmVyLgotCi0gICAgQWRkIGNmYiBjb25zb2xlIHN1cHBvcnQgdG8gRlNMIDg2MTAgRElVIGRyaXZlci4KLSAgICBJbnNwZWN0IGJvYXJkIHZlcnNpb24gZnJvbSBQSVhJUyB0byBvYnRhaW4gY29ycmVjdCBwaXhlbCBmb3JtYXQuCi0KLSAgICBVc2UgI2RlZmluZSBDT05GSUdfVklERU8gaW4gY29uZmlnIGZpbGUgdG8gZW5hYmxlIGZiIGNvbnNvbGUuCi0KLSAgICBUbyBzd2l0Y2ggbW9uaXRvciwgc2V0IG1vbml0b3IgdmFyaWFibGUgdG8KLSAgICAwIC0gRFZJLCAxIC0gU2luZ2xlIGxpbmsgTFZEUywgMiAtIERvdWJsZSBsaW5rIExWRFMKLSAgICBmb2xsb3dlZCBieSAiZGl1ZmIgaW5pdCIuCi0KLSAgICBQcmVzZXJ2ZSBsb2dvIGJpdG1hcCBhdCB0aGUgdG9wIG9mIHRoZSBmYiBjb25zb2xlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTg3Nzg4MGM2OTQ5ZTk0OGJkNjNjZDZlYTRlMjE2NTczZDJmNTNkZAotQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE9jdCAyOSAxMzo1ODozOSAyMDA3IC0wNTAwCi0KLSAgICA4NjEwOiBBZGQgODYxMCBESVUgZGlzcGxheSBkcml2ZXIKLQotICAgIDEyODB4MTAyNCBhbmQgMTAyNHg3NjggQCAzMiBicHAgYXJlIHN1cHBvcnRlZCBub3cuCi0gICAgRFZJLCBTaW5nbGUtbGluayBMVkRTLCBEb3VibGUtbGluayBMVkRTIGFyZSBhbGwgc3VwcG9ydGVkLgotCi0gICAgRW52aXJvbm1lbnRhbCB2YXJpYWJsZSAibW9uaXRvciIgaXMgdXNlZCB0byBzcGVjaWZ5IG1vbml0b3IgcG9ydC4KLQotICAgIEEgbmV3IGNvbW1hbmQgImRpdWZiIiBpcyBpbnRyb2R1Y2VkIHRvIHJlaW5pdGlhbGl6ZSBtb25pdG9yCi0gICAgYW5kIGRpc3BsYXkgYSBCTVAgZmlsZSBpbiB0aGUgbWVtb3J5LiBTbyBmYXIsIDEtYml0LCA0LWJpdCwKLSAgICA4LWJpdCBhbmQgMjQtYml0IEJNUCBmb3JtYXRzIGFyZSBzdXBwb3J0ZWQuCi0KLQlkaXVmYiBpbml0Ci0JICAgIC0gaW5pdGlhbGl6ZSB0aGUgZGl1IGRyaXZlcgotCUVuYWJsZSB0aGUgcG9ydCBzcGVjaWZpZWQgaW4gdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUgIm1vbml0b3IiCi0KLQlkaXVmYiBhZGRyCi0JICAgIC0gZGlzcGxheSBibXAgZmlsZSBpbiBtZW1vcnkuCi0JVGhlIGJtcCBpbWFnZSBzaG91bGQgYmUgbm8gYmlnZ2VyIHRoYW4gdGhlIHJlc29sdXRpb24sIDEyODB4MTAyNAotCWZvciBEVkkgYW5kIGRvdWJsZS1saW5rIExWRFMsIDEwMjR4NzY4IGZvciBzaW5nbGUtbGluayBMVkRTLgotCi0gICAgTm90ZSwgdGhpcyBkcml2ZXIgYWxsb2NhdGUgbWVtb3J5IGJ1dCBkb2Vzbid0IGZyZWUgaXQgYWZ0ZXIgdXNlCi0gICAgSXQgaXMgd3JpdHRlbiBvbiBwdXJwb3NlIC0tIHRvIGF2b2lkIGEgZmFpbHVyZSBvZiByZWFsbG9jYXRpb24KLSAgICBkdWUgdG8gbWVtb3J5IGZyYWdlbWVudC4KLQotICAgIEVDQyBvZiBERFIgaXMgZGlzYWJsZWQgZm9yIERJVSBwZXJmb3JtYW5jZS4gTDIgZGF0YSBjYWNoZSBpcyBhbHNvIGRpc2FibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gbG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTJlNWRkZmVjZGRhMzA4Zjc1NzgyZmFlMjA2YjY3N2IxODEwZjVmOQotQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE9jdCAzMSAxMDo0Mzo1OSAyMDA3IC0wNTAwCi0KLSAgICBGU0w6IEFkZCBhIGZyZWVzY2FsZSBiaXRtYXAgbG9nby4KLQotICAgIFRoaXMgRnJlZXNjYWxlIGxvZ28gaXMgYSAzNDAgeCAxMjggeCA0YnBwIEJNUCBmaWxlCi0gICAgdGhhdCBjYW4gYmUgZGlzcGxheWVkIGJ5IHRoZSBESVUgRnJhbWVidWZmZXIgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTgxNTMzOGZiZDFjMGY5NGY4Mjc2ZDI4OTFiOTljYWE1YTA1ZjYyMgotQXV0aG9yOiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE9jdCAyOSAxMzo1Nzo1MyAyMDA3IC0wNTAwCi0KLSAgICA4NjEwOiBNYWtlIHNvbWUgZXh0cmEgZGVidWcgZW52aXJvbm1lbnQgdmFyaWFibGVzIGNvbmRpdGlvbmFsLgotCi0gICAgT25lIG1heSAjZGVmaW5lIEVOVl9ERUJVRyB0byBnZXQgdGhlbSBiYWNrIGFnYWluLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWW9yayBTdW4gPHlvcmtzdW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc2MTQyMWNjY2E4MGE5ZmIzN2IxOWMzN2FhNjFkNDZlZjc1ZTA2NDcKLUF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBPY3QgMjkgMTk6MjY6MjEgMjAwNyArMDgwMAotCi0gICAgODYxMDogQWN0dWFsbHkgZW5hYmxlIHBpeGlzX3Jlc2V0IENPTkZJR3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmM2JjZWFhYjIzMGI0NzQ4ZDBhZmM0MTA5YjY4MzczMDhmMDE4YjQwCi1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDI2IDE4OjMxOjU5IDIwMDcgKzA4MDAKLQotICAgIEZpeCB0aGUgQkFUIGRlZmluaXRpb24gb2YgUENJIElPIG9uIDg2MTAgYm9hcmQKLQotICAgIFRoZSBhZGRyZXNzIGluIHRoZSBCQVQgcmVnaXN0ZXIgaXMgYWxpZ25lZCB3aXRoIHRoZSBCQVQgc2l6ZS4KLSAgICBUaGUgb3JpZ2luYWwgZGVmaW5pdGlvbiBhY3R1YWxseSBkaWQgbm90IGRlZmluZSBCQVQgZm9yIFBDSUUyIElPLgotICAgIFRoaXMgcGF0Y2ggZml4IHRoaXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWYyM2NhMzM0YTZmNWYwMjFlZjllOWQwZmFkOWRhODBkNjNiMmQ1NgotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE9jdCAyOSAxOToyNjoyMSAyMDA3ICswODAwCi0KLSAgICBVbmlmeSBwaXhpc19yZXNldCBhbHRiYW5rIGFjcm9zcyBib2FyZCBmYW1pbGllcwotCi0gICAgQmFzaWNhbGx5LCByZWZhY3RvciB0aGUgQ0ZHX1BJWElTX1ZCT09UX01BU0sgdmFsdWVzCi0gICAgaW50byB0aGUgc2VwYXJhdGUgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTgzMThlYzIwNWM4ZTg3OTRiNWY5ZjFiODU4NGFiYWRiNDQwZThiYQotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAyNiAxODozMjowMCAyMDA3ICswODAwCi0KLSAgICBtYWtlIDg2MTAgYm9hcmQgdXNlIHBpeGlzIHJlc2V0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWM4NDcwOWVlZGNlOWM2ODBkZDY5NTk4NGFiN2QyMzI4ZjRmMDRmNQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAxIDEyOjIzOjI5IDIwMDcgLTA1MDAKLQotICAgIDg2eHg6IEZpeCBicm9rZW4gdmFyaWFibGUgcmVmZXJlbmNlIHdoZW4gI2RlZiBERUJVR2luZy4KLQotICAgIFNvbWV0aW1lcyB5b3UgY2FuJ3QgcmVmZXJlbmNlIHRoZSBERFIyIGNvbnRyb2xsZXIgdmFyaWFibGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFmMTAzMTA1YTM3NDZhYjEyMjc5YjYzYjhjMWQzNzJjMGNlMmNjNTgKLUF1dGhvcjogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE5vdiA1IDE3OjM5OjI0IDIwMDcgKzA4MDAKLQotICAgIEltcGxlbWVudCBnZW5lcmFsIFVMaSA1MjZ4IEV0aGVybmV0IGRyaXZlciBzdXBwb3J0IGluIFUtYm9vdAotCi0gICAgVGhpcyBwYXRjaCBpbXBsZW1lbnRzIGdlbmVyYWwgVUxpIDUyNnggRXRoZXJuZXQgZHJpdmVyLgotICAgIFVudGlsIG5vdywgaXQgaXMgdGhlIG9ubHkgbmF0aXZlIEV0aGVybmV0IHBvcnQgb24KLSAgICBNUEM4NjEwSFBDRCBib2FyZCwgYnV0IGl0IGNvdWxkIGJlIHVzZWQgb24gb3RoZXIgYm9hcmRzCi0gICAgd2l0aCBVTGkgNTI2eCBFdGhlcm5ldCBwb3J0IGFzIHdlbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLQotY29tbWl0IDcxYmM2ZTY0NzRmZWE4ZWY0ODFiOWI0NWQxZWRkN2FkMWY2ZGZiYmQKLUF1dGhvcjogTGFycnkgSm9obnNvbiA8bHJqQGFybGlueC5jb20+Ci1EYXRlOglUaHUgTm92IDEgMDg6NDY6NTAgMjAwNyAtMDUwMAotCi0gICAgTkVUOiBBZGQgRXRoZXJuZXQgMTAwMEJBU0UtWCBzdXBwb3J0IGZvciBQUEM0eHgKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciAxMDAwQkFTRS1YIHRvIGZ1bmN0aW9ucyAibWlpcGh5X3NwZWVkICgpIiBhbmQKLSAgICAibWlpcGh5X2R1cGxleCgpIi4JSXQgYWxzbyBhZGRzIGZ1bmN0aW9uICJtaWlwaHlfaXNfMTAwMGJhc2VfeCAoKSIsIHdoaWNoCi0gICAgcmV0dXJucyBub24temVybyBpZmYgdGhlIFBIWSByZWdpc3RlcnMgYXJlIGNvbmZpZ3VyZWQgZm9yIDEwMDBCQVNFLVguICBUaGUKLSAgICAibWlpIGluZm8iIGNvbW1hbmQgaXMgbW9kaWZpZWQgdG8gZGlzdGluZ3Vpc2ggYmV0d2VlbiAxMDAwQkFTRS1UIGFuZCAtWC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhcnJ5IEpvaG5zb24gPGxyakBhY20ub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgotCi1jb21taXQgMjk4MDM1ZGY0OTQ4YjExM2QyOWFjMGU2OTQ3MTdkMzRiOTViYzVkYwotQXV0aG9yOiBMYXJyeSBKb2huc29uIDxscmpAYXJsaW54LmNvbT4KLURhdGU6CVdlZCBPY3QgMzEgMTE6MjE6MjkgMjAwNyAtMDUwMAotCi0gICAgTkVUOiBDb3NtZXRpYyBjaGFuZ2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYXJyeSBKb2huc29uIDxscmpAYWNtLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLQotY29tbWl0IDY1NGYzOGIzYTM4Nzg4Njk5NmE1YTc1NzcxZmJmYzI5Y2I0ZjIyNWUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE5vdiA1IDA3OjQzOjA1IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogTWFrZSBvdXRwdXQgYSBsaXR0bGUgc2hvcnRlciBvbiBQQ0llIGRldGVjdGlvbgotCi0gICAgTm93IG5vdCBtYXggMyBsaW5lcyBidXQgMiBsaW5lcyBhcmUgcHJpbnRlZCBwZXIgUENJZSBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTkyNzQyYTViMDlkOTA0MGFkYmQxNTZmYjkwNzU2YWY2NmFkZTMxMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE5vdiAzIDIzOjA5OjI3IDIwMDcgKzAxMDAKLQotICAgIENsZWFudXAgY29kaW5nIHN0eWxlOyB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZTg4MWNiNTYzZTMyZjQ1ODMyYjdiNmRiNzdiZGNkMDE3YWRjYmI0MQotQXV0aG9yOiBCcnVjZSBBZGxlciA8YnJ1Y2UuYWRsZXJAY2NwdS5jb20+Ci1EYXRlOglGcmkgTm92IDIgMTM6MTU6NDIgMjAwNyAtMDcwMAotCi0gICAgZml4IHdvcmRpbmcgaW4gUkVBRE1FCi0KLSAgICBDaGFuZ2VkIHRoZSB3b3JkaW5nIHRvIHByb3Blcmx5IGRlc2NyaWJlIHRoZSBzaGFkb3dpbmcKLSAgICBvZiB0aGUgZW52aXJvbm1lbnQgZnJvbSBST00gdG8gUkFNCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCcnVjZSBBZGxlciA8YnJ1Y2UuYWRsZXJAYWNtLm9yZz4KLQotY29tbWl0IGFkODQ1YmVlZjA2MjQ1NDI2YzU3YjUzZGNkYzAxYjdkYzcwZTBkNDUKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLURhdGU6CVdlZCBPY3QgMzEgMDI6MTg6MTUgMjAwNyArMDkwMAotCi0gICAgYmxhY2tmaW46IE1vdmUgYC1EX19CTEFDS0ZJTl9fJyB0byAkKEFSQ0gpX2NvbmZpZy5tawotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxza3VyaWJheUBydWJ5LmR0aS5uZS5qcD4KLQotY29tbWl0IGVjMjI3NTU3OTk0NjZjOGExMDM2NjRiYjNhNWU2NDdiZjljMjM4ZjQKLUF1dGhvcjogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Ci1EYXRlOglUaHUgT2N0IDI1IDE2OjA4OjE0IDIwMDcgKzAzMDAKLQotICAgIFRyaW1tZWQgc29tZSB2YXJpYWJsZXMgaW4gbmUyMDAwLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgotCi1jb21taXQgZWI2ZjIxNGQzNjQ0YjJhNzc5NjhjMTc2ZWQzNmRjZjg1OGNmZTdlMAotQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAyNSAxNzo1MToyNyAyMDA3ICswODAwCi0KLSAgICBGaXggdGhlIGlzc3VlIG9mIHVzYl9rYmQgZHJpdmVyIG1pc3NpbmcgdGhlIHNjYW4gY29kZSBvZiBrZXkgJ3onLgotCi0gICAgVGhlIHNjYW4gY29kZSBvZiB0aGUga2V5ICd6JyBpcyAweDFkLCB3aGljaCBzaG91bGQgYmUgaGFuZGxlZC4KLQotICAgIFRoZSBjaGFuZ2UgaGFzIGJlIHRlc3RlZCBvbiBOT1ZBVEVLIFVTQiBrZXlib2FyZCBhbmQgVUxJIFBDSSBPSENJCi0gICAgY29udHJvbGxlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiYmY0Nzk2ZjY0OThmYmFkZTU2ZDU2ZWZmM2EwYTQ5YjI5OWQ5M2U1Ci1BdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDI1IDE3OjMwOjA0IDIwMDcgKzA4MDAKLQotICAgIEZpeCBVU0Igc3VwcG9ydCBpc3N1ZSBmb3IgTVBDODY0MUhQQ04gYm9hcmQuCi0KLSAgICBUaGUgY29uZmlndXJhdGlvbiBmaWxlIGhhcyBhbHJlYWR5IGVuYWJsZWQgVVNCLCBidXQgaXQKLSAgICBtaXNzZWQgZGVmaW5pdGlvbiBvZiBDRkdfT0hDSV9TV0FQX1JFR19BQ0NFU1MsIHRoZSBVU0IKLSAgICBvbiBNUEM4NjQxSFBDTiBjYW4gbm90IHdvcmsgYmVjYXVzZSBvZiB0aGUgd3JvbmcgVVNCCi0gICAgcmVnaXN0ZXIgZW5kaWFuLgotCi0gICAgQW5kIGFkZCB0aGUgVVNCIGNvbW1hbmQgdG8gVS1Cb290IGNvbW1hbmRzIGxpc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGU2MjA0MTAyM2RjM2RlOWQ5OGQ5NzdiYjA4MDIzNWJjNmQwMzVlMAotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJV2VkIE9jdCAyNCAxODoxNjowMSAyMDA3ICswMjAwCi0KLSAgICBVc2UgY29uZmlnX2NtZF9kZWZhdWx0LmggaW5zdGVhZCBvZiBjb25maWdfY21kX2FsbC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgNTY2MjJmODc4NTc0MzliMWMyMjFlOWRlZWYxMWE5ZDViYjVkNDMwOAotQXV0aG9yOiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE9jdCAyNCAwMTozNzozNiAyMDA3ICswMjAwCi0KLSAgICBUUU01MjAwOiBDYWxsIHVzYl9jcHVfaW5pdCgpIGR1cmluZyBib2FyZCBpbml0Ci0KLSAgICB1c2JfY3B1X2luaXQoKSBjb25maWd1cmVzIEdQUyBVU0IgcGlucywgY2xvY2tzLCBldGMuIGFuZAotICAgIGlzIHJlcXVpcmVkIGZvciBwcm9wZXIgb3BlcmF0aW9uIG9mIGtlcm5lbCBVU0Igc3Vic3lzdGVtLgotICAgIFRoaXMgc2V0dXAgd2FzIHByZXZpb3VzbHkgZG9uZSBpbiB0aGUga2VybmVsIGJ5IHRoZSBmaXh1cAotICAgIGNvZGUgd2hpY2ggaXMgYmVpbmcgcmVtb3ZlZCwgdGh1cyBsb3cgbGV2ZWwgaW5pdCBtdXN0IGJlCi0gICAgZG9uZSBieSBVLWJvb3Qgbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDI5YzI5YzAyNjdmZTg1N2U3MjAxNGNlOTBjNWQzNWIyZWY2MzAyYmQKLUF1dGhvcjogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyMyAxNjoyNTo1MCAyMDA3ICswMjAwCi0KLSAgICBGaXggdHlwbyBpbiBuZnMuYwotCi0gICAgQW4gb2J2aW91cyB0eXBvLiBPcmlnaW5hbGx5IGZpeGVkIGluIGxpbmtzdGF0aW9uIHUtYm9vdCBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3Vlbm5hZGkgTGlha2hvdmV0c2tpIDxsZ0BkZW54LmRlPgotCi1jb21taXQgNTk1NDNmZTAwYTRjZTcyMGVmOWY1YWE3ZmIzODdjNmRhZjFjN2Q3OAotQXV0aG9yOiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIzIDE0OjM1OjA1IDIwMDcgKzAyMDAKLQotICAgIEZpeCBhIHR5cG8gaW4gY3B1L21wYzgyNHgvaW50ZXJydXB0cy5jCi0KLSAgICBTaW5jZSBEZWNlbWJlciAyMDAzIHRoZSB0aW1lcl9pbnRlcnJ1cHRfY3B1KCkgZnVuY3Rpb24gaW4KLSAgICBjcHUvbXBjODI0eC9pbnRlcnJ1cHRzLmMgY29udGFpbnMgd2hhdCBzZWVtcyB0byBiZSBhIHN1cGVyZmx1b3VzCi0gICAgcGFyYW1ldGVyLiBSZW1vdmUgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHdWVubmFkaSBMaWFraG92ZXRza2kgPGxnQGRlbnguZGU+Ci0KLWNvbW1pdCBjOWU3YjliOWExNzAwZmUwMDk2NzhkMWY5YjQxZTYzNjRhYzVkZjJkCi1BdXRob3I6IFNlcmdlaiBTdGVwYW5vdiA8U2VyZ2VqLlN0ZXBhbm92QGlkcy5kZT4KLURhdGU6CVdlZCBPY3QgMTcgMTE6MTM6NTEgMjAwNyArMDIwMAotCi0gICAgYWRkIGZ0X2NwdV9zZXR1cCguLikgb24gbXBjODI2MAotCi0gICAgQWRkIGZ0X2NwdV9zZXR1cCguLiktZnVuY3Rpb24gdG8gYWRhcHQgaXQgZm9yIHVzZSB3aXRoIGxpYmZkdAotICAgIGJhc2VkIG9uIGNvZGUgZnJvbSBtcGM1eHh4Ci0KLSAgICBTaWdlbmQtb2ZmLWJ5OiBTZXJnZWogU3RlcGFub3YgPFNlcmdlai5TdGVwYW5vdkBpZHMuZGU+Ci0gICAgLS0KLQotY29tbWl0IDZhYmQ4MmUxOWFlOTNjMGI0ZDEwNGU1MDE2NWUyMzU5MTVlYzA4NzUKLUF1dGhvcjogU2VyZ2VqIFN0ZXBhbm92IDxTZXJnZWouU3RlcGFub3ZAaWRzLmRlPgotRGF0ZToJV2VkIE9jdCAxNyAxMToxODo0MiAyMDA3ICswMjAwCi0KLSAgICBjaGFuZ2VzIGZvciBJRFM4MjQ3IGJvYXJkIHN1cHBvcnQKLQotICAgIFRvIGdldCB0aGUgSURTODI0NyBib2FyZCB3b3JraW5nIGZvbGxvd2luZyBhcmUgZG9uZToKLSAgICAgLSBGQ0MyIGlzIGRlYWN0aXZhdGVkCi0gICAgIC0gRkNDMSBpcyBhY3RpdmF0ZWQKLSAgICAgLSBJMkMgaXMgYWN0aXZhdGVkCi0gICAgIC0gQ0ZJIGRyaXZlciBpcyBhY3RpdmF0ZWQKLSAgICAgLSBBZGFwdGVkIGZvciB1c2Ugd2l0aCBMSUJGRFQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaiBTdGVwYW5vdiA8U2VyZ2VqLlN0ZXBhbm92QGlkcy5kZT4KLSAgICAtLQotCi1jb21taXQgM2Q2Y2IzYjI0YWRkNjQxNWY4NmEwZjAxM2VhNDBmNTYzOWI5MDA0NwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTm92IDMgMTI6MDg6MjggMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgQU1DQyBLaWxhdWVhL0hhbGVha2FsYSBOQU5EIGJvb3Rpbmcgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciB0aGUgQU1DQyA0MDVFWChyKSBldmFsIGJvYXJkcy4KLSAgICBBZ2Fpbiwgb25seSBvbmUgaW1hZ2Ugc3VwcG9ydHMgYm90aCB0YXJnZXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGI2Njg0YTY5ODUwMGJlOWMxNDJlYzJjOWY0NmNmYzM0OGUxN2YwYwotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBPY3QgMjQgMTU6NDg6MzcgMjAwNyArMDIwMAotCi0gICAgQVRTVEsxMDAyOiBSZW1vdmUgZGVmYXVsdCBldGhlcm5ldCBhZGRyZXNzZXMKLQotICAgIFdvbGZnYW5nIGlzIHJpZ2h0OiBJdCdzIG5vdCBhIGdvb2QgaWRlYSB0byBzZXQgdXAgZGVmYXVsdCBpbml0aWFsCi0gICAgZXRoZXJuZXQgYWRkcmVzc2VzIGZvciBhIGJvYXJkLCBldmVuIHRob3VnaCB0aGV5IGJlbG9uZyB0byB0aGUgbG9jYWwKLSAgICByYW5nZS4KLQotICAgIFRoaXMgd2lsbCBjaGFuZ2UgdGhlIGZhaWx1cmUgbW9kZSBmcm9tICJJVCBtYW5hZ2VyIHNjcmVhbXMgYXQgeW91IGZvcgotICAgIHVzaW5nIGR1cGxpY2F0ZSBldGhlcm5ldCBhZGRyZXNzZXMiIHRvIGEgbmljZSBlcnJvciBtZXNzYWdlIGV4cGxhaW5pbmcKLSAgICB0aGF0IHRoZSBldGhlcm5ldCBhZGRyZXNzIGhhc24ndCBiZWVuIHNldCBwcm9wZXJseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgZTVjNzk0ZTQ5MWE1N2Q4MjliNmQ4NzMzZTJlZDgzNjhhMjI2OWFiZgotQXV0aG9yOiBKdXN0aW4gRmxhbW1pYSA8amZsYW1taWFAc2F2YW50YXYuY29tPgotRGF0ZToJTW9uIE9jdCAyOSAxNzo0MDozNSAyMDA3IC0wNDAwCi0KLSAgICBESENQIENsaWVudCBGaXgKLQotICAgIFRoaXMgaXMgYSBtdWx0aS1wYXJ0IG1lc3NhZ2UgaW4gTUlNRSBmb3JtYXQuCi0KLSAgICBjb21taXQgZTZlNTA1ZWFlOTRlZDcyMWUxMjNlMTc3NDg5MjkxZmM0NTQ0YjdiOAotICAgIEF1dGhvcjogSnVzdGluIEZsYW1taWEgPGpmbGFtbWlhQHNhdmFudGF2LmNvbT4KLSAgICBEYXRlOiAgIE1vbiBPY3QgMjkgMTc6MTk6MDMgMjAwNyAtMDQwMAotCi0JRm91bmQgYSBidWcgaW4gdGhlIHdheSB0aGUgREhDUCBSZXF1ZXN0IHBhY2tldCBpcyBidWlsdCwgd2hlcmUgdGhlIElQIGFkZHJlc3MKLQl0aGF0IGlzIG9mZmVyZWQgYnkgdGhlIHNlcnZlciBpcyBib3VuZCB0byBwcmVtYXR1cmVseS4gVGhpcyBwYXRjaCBpcyBhIGZpeCBvZgotCXRoYXQgYnVnIHdoZXJlIHRoZSBJUCBhZGRyZXNzIG9mZmVyZWQgYnkgdGhlIERIQ1Agc2VydmVyIGlzIG5vdCB1c2VkIHVudGlsCi0JYWZ0ZXIgdGhlIERIQ1AgQUNLIGZyb20gdGhlIHNlcnZlciBpcyByZWNlaXZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEp1c3RpbiBGbGFtbWlhIDxqZmxhbW1pYUBzYXZhbnRhdi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci0KLWNvbW1pdCA1ZDk2ZDQwZDNmMzZkYTMzMzQ4ZTY4ZjllYTk5M2YzODNlMTFmOTk3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMzEgMjA6NTg6MzQgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBGaXggYWNhZGlhX25hbmQgYnVpbGQgcHJvYmxlbQotCi0gICAgU2luY2UgdGhlIGNhY2hlIGhhbmRsaW5nIGZ1bmN0aW9ucyB3ZXJlIG1vdmVkIGZyb20gc3RhcnQuUyBpbnRvIGNhY2hlLlMKLSAgICB0aGUgYWNhZGlhIE5BTkQgYm9vdGluZyBNYWtmaWxlIG5lZWRzIHRvIGJlIGFkYXB0ZWQgYWNjb3JkaW5nbHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlYTJlMTQyODQzNTMzY2E1OTNmY2I1Y2IzZTFkYWYxYjdmNWU1OTQ5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMzEgMjA6NTc6MTEgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgQ09ORklHXzR4eF9EQ0FDSEUgY29tcGlsZSBvcHRpb25zIHRvIGVuYWJsZSBjYWNoZWQgU0RSQU0KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyB0aGUgQ09ORklHXzR4eF9EQ0FDSEUgb3B0aW9ucyB0byBzb21lIFNEUkFNIGluaXQgZmlsZXMKLSAgICBhbmQgdG8gdGhlIFNlcXVvaWEgVExCIGluaXQgY29kZS4gTm93IHRoZSBjYWNoZSBjYW4gYmUgZW5hYmxlZCBvbiA0NHgKLSAgICBib2FyZHMgYnkgZGVmaW5pbmcgQ09ORklHXzR4eF9EQ0FDSEUgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlLiBUaGlzCi0gICAgb3B0aW9uIHdpbGwgZGlzYXBwZWFyLCB3aGVuIG1vcmUgYm9hcmRzIHVzZSBpcyBzdWNjZXNzZnVsbHkgYW5kIG5vCi0gICAgbW9yZSBrbm93biBwcm9ibGVtcyBleGlzdC4KLQotICAgIFRoaXMgaXMgdGVzdGVkIHN1Y2Nlc3NmdWxseSBvbiBTZXF1b2lhIGFuZCBLYXRtYWkuIFRoZSBvbmx5IHByb2JsZW0gdGhhdAotICAgIG5lZWRzIHRvIGJlIGZpeGVkIGlzLCB0aGF0IFVTQiBpcyBub3Qgd29ya2luZyBvbiBTZXF1b2lhIHJpZ2h0IG5vdywgc2luY2UKLSAgICBpdCB3aWxsIG5lZWQgc29tZSBjYWNoZSBoYW5kbGluZyBjb2RlIHRvbywgc2ltaWxhciB0byB0aGUgNHh4IEVNQUMgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgM2RiOTNiOGJlZGQzMmU5MTRiMzg5NzYxNDFiM2ZkZjRlYTNmZjczOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDMxIDIwOjUxOjEwIDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRW5hYmxlIENQVSBQT1NUIHRlc3QgZm9yIDR4eCB3aXRoIGRjYWNoZSBlbmFibGVkCi0KLSAgICBOb3cgd2l0aCBjYWNoZXMgZW5hYmxlZCAoaS0gYW5kIGQtY2FjaGUpIG9uIDQ0eCwgd2UgbmVlZCBhIGNoYW5jZSB0bwotICAgIGRpc2FibGUgdGhlIGNhY2hlIGZvciB0aGUgQ1BVIFBPU1QgdGVzdHMsIHNpbmNlIHRoZXNlIHRlc3RzIGNvbnNpc3QKLSAgICBvZiBzZWxmIG1vZGlmeWluZyBjb2RlLiBUaGlzIGlzIGRvbmUgdmlhIHRoZSBuZXcgY2hhbmdlX3RsYigpIGZ1bmN0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjcxYjI4ODhiNGIzYzg3MDkwOWEwMzQxNDI3YjJhOTE0MjQ2ZjgxZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDMxIDIwOjQ3OjI2IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogQ2hhbmdlIDR4eCBQT1NUIGV0aGVybmV0IHRlc3QgdG8gaGFuZGxlIGNhY2hlZCBtZW1vcnkgdG9vCi0KLSAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIDR4eCBFTUFDIFBPU1QgZHJpdmVyIHRvIHdvcmsgdG9vLCB3aGVuIGRjYWNoZSBpcwotICAgIGVuYWJsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhMjY4NTkwNDA2MWIzNWExNzU4M2Q2NWZlNDdjZGMyNjg2YTY5ZWFhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMzEgMjA6NDU6NTMgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBSZW1vdmUgdGVtcG9yYXJ5IFRMQiBlbnRyeSBpbiBQT1NUIGNhY2hlIHRlc3Qgb25seSBmb3IgNDQwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmZjc2OGNiMTY4ZDgxNTdjMjRhMjUwMTZkYmZiZWI0NjVlNDdmNDIwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMzEgMTg6MDE6MjQgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBDaGFuZ2UgNHh4IGV0aGVybmV0IGRyaXZlciB0byBoYW5kbGUgY2FjaGVkIG1lbW9yeSB0b28KLQotICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgNHh4IEVNQUMgZHJpdmVyIHRvIHdvcmsgdG9vLCB3aGVuIGRjYWNoZSBpcwotICAgIGVuYWJsZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ODNlMDlhMjIzYzY2NjI2OWVmODFkMzU3M2E2NTkxYjEwNDZiMGVmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMzEgMTc6NTk6MjIgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBBZGQgY2hhbmdlX3RsYiBmdW5jdGlvbiB0byBtb2RpZnkgSSBhdHRyaWJ1dGUgb2YgVExCKHMpCi0KLSAgICBUaGlzIGZ1bmN0aW9uIGlzIHVzZWQgdG8gZWl0aGVyIHR1cm4gY2FjaGUgb24gb3Igb2ZmIGluIGEgc3BlY2lmaWMKLSAgICBtZW1vcnkgYXJlYS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGQyNWRmZTA4ZmJkMTIyMGNiOTk0ZTdlNmIxMDUwNDlhYTlhYThlNzkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE9jdCAzMSAxNzo1Nzo1MiAyMDA3ICswMTAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSBjYWNoZSBkZWZpbml0aW9uIGZyb20gNHh4IGJvYXJkIGNvbmZpZyBmaWxlcwotCi0gICAgQWxsIDR4eCBib2FyZCBjb25maWcgZmlsZXMgZG9uJ3QgbmVlZCB0aGUgY2FjaGUgZGVmaW5pdGlvbnMgYW55bW9yZS4KLSAgICBUaGVzZSBhcmUgbm93IGRlZmluZWQgaW4gY29tbW9uIGhlYWRlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5Yjk0YWM2MWQyMTc2MTg1YzMwYWRmMDc5M2UwNzllYzMwZTY4Njg3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMzEgMTc6NTU6NTggMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBSZXdvcmsgNHh4IGNhY2hlIHN1cHBvcnQKLQotICAgIE5ldyBjYWNoZSBoYW5kbGluZyBmdW5jdGlvbnMgYWRkZWQgYW5kIGFsbCBleGlzdGluZyBmdW5jdGlvbnMKLSAgICBtb3ZlZCBmcm9tIHN0YXJ0LlMgaW50byBzZXBlcmF0ZSBjYWNoZS5TLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDY3MTM3NzNkYTRhYzNkMzkwYzYzZDgyNjQxZWI1NTMyMjRiMjdjMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIzIDE4OjAzOjEyIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogUmVtb3ZlIGNvbXBpbGVyIHdhcm5pbmcgZnJvbSBwcmV2aW91cyBjb21taXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZmYTM5N2RmNjdjMGYyNjllNDUyOGJmMTgxYTZlOGM4OGY5NzIzZjkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyMyAxNDo0MDozMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSB0ZW1wb3JhcnkgVExCIGVudHJ5IGluIFBPU1QgY2FjaGUgdGVzdAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTMzOGU2YTgxODM0MDk5YmExOTczM2I2OWFhZmQ4ZWY1ZjA5ODA5NAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIzIDE0OjA1OjA4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ2hhbmdlIGF1dG9uZWdvdGlhdGlvbiB0aW1lb3V0IGZyb20gNCB0byA1IHNlY29uZHMKLQotICAgIEkgbGF0ZWx5IG5vdGljZWQsIHRoYXQgbmV3ZXIgNHh4IGJvYXJkIHdpdGggR0JpdCBzdXBwb3J0IHNvbWV0aW1lcyBkb24ndAotICAgIGZpbmlzaCBsaW5rIGF1dG9uZWdvdGlhdGlvbiBpbiA0IHNlY29uZHMuIENoYW5naW5nIHRoaXMgdGltZW91dCB0byA1Ci0gICAgc2Vjb25kcyBzZWVtcyBmaW5lIGhlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyZDgzNDc2YTRjMWM5OTExZDE1OGEzZjhhNDMxMmQzNTRiYzFiZGI3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBPY3QgMjMgMTQ6MDM6MTcgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBDaGFuZ2UgNHh4X2VuZXQgJiBtaWlwaHkgdG8gdXNlIG91dF9iZTMyKCkgYW5kIGZyaWVuZHMKLQotICAgIFRoaXMgcGF0Y2ggY2hhbmdlcyBhbGwgaW4zMi9vdXQzMiBjYWxscyB0byB1c2UgdGhlIHJlY29tbWVuZGVkIGluX2JlMzIvCi0gICAgb3V0X2JlMzIgbWFjcm9zIGluc3RlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3ZDQ3Y2VlMmNjNTdmOTA3MzgwZjJjMDZmNWI2YzY4M2QwM2U0MjNhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBPY3QgMjUgMTI6MjQ6NTkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggUE9TVCBldGhlcm5ldCB0ZXN0IGZvciBIYWxlYWthbGEKLQotICAgIFRoZSBQT1NUIGV0aGVybmV0IHRlc3QgbmVlZGVkIHRvIGJlIGNoYW5nZWQgdG8gZHluYW1pY2FsbHkgZGV0ZXJtaW5lCi0gICAgdGhlIGNvdW50IG9mIGV0aGVybmV0IGRldmljZXMuIFRoaXMgY29kZSBpcyBjbG9uZWQgZnJvbSB0aGUgNHh4Ci0gICAgZXRoZXJuZXQgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjEwNDkzYzZkNzdhMWUwN2E2YzJmZjRkNzcyOTM3YTVlNzM1OWQ2YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIzIDExOjMxOjA1IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ29ycmVjdCBVQVJUIGlucHV0IGNsb2NrIGNhbGN1bGF0aW9uIGFuZCBwYXNzaW5nIHRvIGZkdAotCi0gICAgV2Ugbm93IHVzZSBhIHZhbHVlIGluIHRoZSBnZCAoZ2xvYmFsIGRhdGEpIHN0cnVjdHVyZSBmb3IgdGhlIFVBUlQgaW5wdXQKLSAgICBmcmVxdWVuY3ksIHNpbmNlIHRoZSBQUEM0eHhfU1lTX0lORk8gc3RydWN0IGlzIGFsd2F5cyByZXdyaXR0ZW4gY29tcGxldGVseQotICAgIGluIGdldF9zeXNfaW5mbygpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzUzZjI2ODhiNGUwZmM3Yjk2OWJjNzBhMDJiZTRiNDBiZjBkZDEyNAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIzIDEwOjEwOjA4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIGluaXRpYWwgQU1DQyBIYWxlYWthbGEgUFBDNDA1RVhyIGV2YWwgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhlIEhhbGVha2FsYSBpcyBuZWFybHkgaWRlbnRpY2FsIHdpdGggdGhlIEtpbGF1ZWEgZXZhbCBib2FyZC4gVGhlIG9ubHkKLSAgICBkaWZmZXJlbmNlIGlzIHRoYXQgdGhlIDQwNUVYciBvbmx5IHN1cHBvcnRzIG9uZSBFTUFDIGFuZCBvbmUgUENJZQotICAgIGludGVyZmFjZS4gVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBIYWxlYWthbGEgYm9hcmQgYnkgdXNpbmcKLSAgICB0aGUgaWRlbnRpY2FsIGltYWdlIGZvciBLaWxhdWVhIGFuZCBIYWxlYWthbGEuIFRoZSBkaXN0aW5jdGlvbiBpcyBkb25lCi0gICAgYnkgY29tcGFyaW5nIHRoZSBQVlIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5Zjc5ODc2NmFhODVlNjJlYjhmYThjNzIxZTE0OGRmNjA5Yjc4MTM3Ci1BdXRob3I6IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+Ci1EYXRlOglUdWUgT2N0IDIzIDA4OjI5OjEwIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRml4ZWQgb2Zmc2V0IG9mIHJlZnJlc2ggcmF0ZSB0eXBlIGZvciBCYW1ib28gb24tYm9hcmQgRERSIFNEUkFNCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhIG5vdGUgdG8gdGhlIGZpeGVkIEREUiBzZXR1cCBmb3IgQmFtYm9vIE5BTkQgYm9vdGluZzoKLQotICAgIE5vdGU6Ci0gICAgQXMgZm91bmQgb3V0IGJ5IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+LCB0aGUgZml4ZWQKLSAgICBERFIgc2V0dXAgaGFzIHByb2JsZW1zIChVLUJvb3QgY3Jhc2hlcyByYW5kb21seSB1cG9uIFRGVFApLCB3aGVuIHRoZSBESU1NCi0gICAgbW9kdWxlcyBhcmUgc3RpbGwgcGx1Z2dlZCBpbi4gU28gaXQgaXMgcmVjb21tZW5kZWQgdG8gcmVtb3ZlIHRoZSBESU1NCi0gICAgbW9kdWxlcyB3aGlsZSB1c2luZyB0aGUgTkFORCBib290aW5nIGNvZGUgd2l0aCB0aGUgZml4ZWQgU0RSQU0gc2V0dXAhCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGFmZTlmYTU5Y2I2M2I0ZjlkMTZiZjAxYzkzZWIyMTJmMjVhMzhjMmEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE9jdCAyMiAxNjoyNDo0NCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBTTlRQIHN1cHBvcnQgdG8gQU1DQyBLYXRtYWksIEtpbGF1ZWEgJiBNYWthbHUgYm9hcmRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzMjQ4ZjYzYWQ4OWNiMDMxNDkxZWRiNzAxNjU4N2ZlNmU5YTIzOGI5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBPY3QgMjIgMTY6MjI6NDAgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBSZXdvcmsgb2YgNHh4IHNlcmlhbCBkcml2ZXIgKDQpCi0KLSAgICBDaGFuZ2UgNHh4X3VhcnQuYzoKLQotICAgIC0gVXNlIGluXzgvb3V0XzggbWFjcm9zIGluc3RlYWQgb2YgaW44L291dDgKLSAgICAtIE5vIG5lZWQgZm9yIFVBUlRfQkFTRSBtYXJjbyBhbnltb3JlLCBub3cgcmVhbGx5IGhhbmRsZWQgdmlhIGZ1bmN0aW9uCi0gICAgICBwYXJhbWV0ZXIKLSAgICAtIHNlcmlhbF9pbml0X2NvbW1vbigpIGludHJvZHVjZWQKLSAgICAtIEZ1cnRoZXIgY29kaW5nIHN0eWxlIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGU2MWNiODE2M2E2NmI4YTEzNTY5NmFlMjMyZTJiZWFkMWNlMGEwNDkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE9jdCAyMiAxNTo0NTo0OSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMykKLQotICAgIENoYW5nZSBhbGwgbGlua2VyIHNjcmlwdHMgdG8gcmVmZXJlbmNlIHRoZSBjaGFuZ2VkIGRyaXZlciBuYW1lIGlvcDQ4MF91YXJ0Lm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4ODJhZTQxMjc0OTIxZjkwMTYxMzE4MDZiZGViMjdlMTk2MDZmNDdhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBPY3QgMjIgMTU6NDQ6MzkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBSZXdvcmsgb2YgNHh4IHNlcmlhbCBkcml2ZXIgKDIpCi0KLSAgICBDaGFuZ2UgYWxsIGxpbmtlciBzY3JpcHRzIHRvIHJlZmVyZW5jZSB0aGUgY2hhbmdlZCBkcml2ZXIgbmFtZSA0eHhfdWFydC5vLgotCi0gICAgTm90ZTogSW4gbW9zdCBjYXNlZCBhbGwgdGhlc2UgZXhwbGljaXQgcmVmZXJlbmNpbmcgb2YgdGhlc2Ugb2JqZWN0IGZpbGVzCi0gICAgaW4gdGhlIGxpbmtlciBzY3JpcHRzIGlzIG5vdCBuZWNjZXNzYXJ5LiBPbmx5IGZvciBtYW51YWxseSBlbWJlZGRlZAotICAgIGVudmlyb25tZW50IGludG8gdGhlIFUtQm9vdCBpbWFnZSwgd2hpY2ggaXMgbm90IGRvbmUgaXMgbW9zdCBjYXNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGFkMzFlNDBiZWQwNDJjYjY3MGQwMDM2ZmVhOTY0MzUwMDdhZmI4MzgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE9jdCAyMiAxNTowOTo1OSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFJld29yayBvZiA0eHggc2VyaWFsIGRyaXZlciAoMSkKLQotICAgIFRoaXMgcGF0Y2ggc3RhcnRzIHRoZSByZXdvcmsgb2YgdGhlIFBQQzR4eCBzZXJpYWwgZHJpdmVyLiBGaXJzdCB3ZSBzcGxpdAotICAgIHRoZSBmaWxlIGludG8gdHdvIHNlcGVyYXRlIGZpbGVzLCBvbmUgNHh4X3VhcnQuYyB3aXRoIHRoZSA0MDUvNDQwIFVBUlQKLSAgICBoYW5kbGluZyBjb2RlIGFuZCB0aGUgb3RoZXIgb25lIGlvcDQ4MF91YXJ0LmMgd2l0aCB0aGUgVUFSVCBjb2RlIGZvciB0aGUKLSAgICBQTFgtVGVjaCBJT1A0ODAgUFBDIChQUEM0MDMgYmFzZWQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzY0ZTc0MTdlZTVmNmUyNWIxNzE1NzIwZTdkN2RkMzQ4NzEwOTM4NQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gT2N0IDIyIDEwOjMwOjM4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ29ycmVjdCBVQVJUIGlucHV0IGNsb2NrIGNhbGN1bGF0aW9uIGFuZCBwYXNzaW5nIHRvIGZkdAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjExZWE5MWFjNmMyMjViZWM3ZTY2OGEwM2QwYmE3ZDczMTA2NzlmYQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gT2N0IDIyIDA3OjM0OjM0IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIGluaXRpYWwgQU1DQyBNYWthbHUgNDA1RVggc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZmE4YWVhMjA0NTZlNmYxZGJhNDNmNDZiY2M3MjAyNGRkOTQ5OTk5OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gT2N0IDIyIDA3OjMzOjUyIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIGZyZXFVQVJUIHRvIENQVSBzcGVlZCBkZXRlY3Rpb24KLQotICAgIFRoaXMgdmFsdWUgaXMgbmVlZGVkIGxhdGVyIGZvciB0aGUgZGV2aWNlIHRyZWUgY29uZmlndXJhdGlvbiBvZgotICAgIHRoZSB1YXJ0IGNsb2NrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODM3YzczMGI0ZDdjNmIxZGRmM2QxZTI0N2NiNDQ0NTAwNWQ5YmYwZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTdW4gT2N0IDIxIDE0OjI2OjI5IDIwMDcgKzAyMDAKLQotICAgIHBwYzogU21hbGwgS2lsYXVlYSBjbGVhbnVwIG9mIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3NThjMDM3YWVlYWQzNGI0OTYzMWI4ZGEzYTkwYjFiYmExNGMwNDEwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVN1biBPY3QgMjEgMDg6MTY6MTIgMjAwNyArMDIwMAotCi0gICAgcnRjOiBBZGQgWGljb3IvSW50ZXJzaWwgWDEyMDUgUlRDIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgWGljb3IvSW50ZXJzaWwgWDEyMDUgUlRDIHVzZWQgb24gdGhlCi0gICAgQU1DQyBNYWthbHUgZXZhbCBib2FyZC4gVGhpcyBkcml2ZXIgaXMgYmFzaWNhbGx5IGNsb25lZCBmcm9tIHRoZSBMaW51eAotICAgIGRyaXZlciB2ZXJzaW9uICgyLjYuMjMpLgotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZXMgdGhlIExpbnV4IGJjZC5oIGhlYWRlciBmb3IgdGhlIEJDRDJCSU4vCi0gICAgQklOMkJDRCBjb252ZXJzaW9ucy4gSW4gdGhlIGZ1dHVyZSBzb21lIG9mIHRoZSBvdGhlciBVLUJvb3QgUlRDIGRyaXZlcgotICAgIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gYWxzbyB1c2UgdGhpcyBoZWFkZXIgaW5zdGVhZCBvZiBpbXBsZW1lbnRpbmcKLSAgICB0aGVpciBvd24gbG9jYWwgY29weSBvZiB0aGVzZSBmdW5jdGlvbnMvbWFjcm9zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDg3ZGZkYjc5YjVmZDFhYjk5YTI2OTkwYzYyYTczMmMwMWE4YzdmNgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTdW4gT2N0IDIxIDA4OjEyOjQxIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ29uc29saWRhdGUgc29tZSBvZiB0aGUgNDA1IGFuZCA0NDAgbWFjcm9zL3N0cnVjdHMgaW50byA0eHgKLQotICAgIFRoaXMgcGF0Y2ggbW92ZXMgc29tZSBjb21tb24gNHh4IG1hY3JvcyBhbmQgdGhlIFBQQzQwNV9TWVNfSU5GTy8KLSAgICBQUEM0NDBfU1lTX0lORk8gc3RydWN0dXJlIGludG8gdGhlIGNvbW1vbiBwcGM0eHguaCBoZWFkZXIuCi0KLSAgICBMb3QncyBvZiBvdGhlciBtYWNyb3MgYXJlIGdvb2QgY2FuZGlkYXRlcyB0byBiZSBjb25zb2xpZGF0ZWQgdGhpcyB3YXkKLSAgICBpbiB0aGUgZnV0dXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzcwYzdhZjU4MDBmNTk4ZDIyNzMwZDFmNGI3MGYxNmM5YjMzNTEyZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTdW4gT2N0IDIxIDA4OjA1OjE4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHNpemUgc2V0dXAgaW4gS2lsYXVlYSBERFIyIGluaXQgcm91dGluZQotCi0gICAgVGhlIHNpemUgd2FzIGluaXRpbGl6ZWQgd3JvbmcuIEluc3RlYWQgb2YgMjU2TUIsIHRoZSBERFIyIGNvbnRyb2xsZXIKLSAgICB3YXMgc2V0dXAgdG8gNTEyTUIuIE5vdyB0aGUgY29ycmVjdCB2YWx1ZXMgaXMgdXNlZC4KLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBkb2VzIGEgbGl0dGxlIGNsZWFudXAgYW5kIGFkZHMgYSBjb21tZW50IGhlcmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmNmJhOWI1NjYwN2Q0YjI3NTUwMzAxYzdjN2Y2YjU1YjY1NGZkNjJhCi1BdXRob3I6IEV1Z2VuZSBPJ0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+Ci1EYXRlOglUaHUgT2N0IDE4IDE3OjI5OjA0IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRGVmaW5lIENPTkZJR19CT09LRSBmb3IgYWxsIFBQQzQ0MCBiYXNlZCBwcm9jZXNzb3JzCi0KLSAgICBDT05GSUdfQk9PS0UgbXVzdCBiZSBkZWZpbmVkIGZvciBQUEM0NDAgcHJvY2Vzc29ycyBzbyB0aGF0IHRoZSBwcm9wZXIgU1BSCi0gICAgbnVtYmVyIGlzIHVzZWQgdG8gYWNjZXNzIHN5c3RlbSByZWdpc3RlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFdWdlbmUgTydCcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGMzNmM2ODE2MDMzM2FjNWZlNDFlYzNkYjEyYTcyOGI3MDc1YjM5MTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE9jdCAxOCAwNzo0MjoyNyAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IENoYW5nZSBpbmJvdW5kIFBDSWUgbG9jYXRpb24gZm9yIGVuZHBvaW50IHRlc3RzIG9uIEthdG1haQotCi0gICAgT24gWXVjY2EgJiBLYXRtYWksIHRoZSBpbmJvdW5kIG1lbW9yeSBtYXAgcG9pbnRlZCB0byAweDQuMDAwMC4wMDAwLCB3aGljaAotICAgIGlzIHRoZSBpbnRlcm5hbCBTUkFNLiBTaW5jZSBJIG5vdyBwb3J0ZWQgYW5kIHRlc3RlZCB0aGlzIGVuZHBvaW50IG1vZGUKLSAgICBvbiBLaWxhdWVhIHN1Y2Nlc3NmdWxseSB0byBtYXAgdG8gMCAoU0RSQU0pLCBJIGFsc28gY2hhbmdlZCB0aGlzIGZvcgotICAgIEthdG1haS4KLQotICAgIFl1Y2NhIHdpbGwgc3RheSBhdCBpbnRlcm5hbCBTUkFNIGZvciBub3cuIE5vdCBzdXJlIGlmIHNvbWVib2R5IHJlbGllcyBvbgotICAgIHRoaXMgc2V0dXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1Y2I0YWY0NzkxZjYxODQzNDMyMTU1MTQyYjZjZmFjOTAxZjY2YzEwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBPY3QgMTggMDc6Mzk6MzggMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgUENJZSBlbmRwb2ludCBzdXBwb3J0IG9uIEtpbGF1ZWEgKDQwNUVYKQotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGVuZHBvaW50IHN1cHBvcnQgZm9yIHRoZSBBTUNDIEtpbGF1ZWEgZXZhbCBib2FyZC4gSXQgY2FuCi0gICAgYmUgdGVzdGVkIGJ5IGNvbm5lY3RpbmcgYSByZXdvcmtlZCBQQ0llIGNhYmxlIChvbmx5IDF4IGxhbmUgc2luZ2xlcwotICAgIGNvbm5lY3RlZCkgdG8gYW5vdGhlciByb290LWNvbXBsZXguCi0KLSAgICBJbiB0aGlzIHRlc3Qgc2V0dXAsIGEgNjRNQiBpbmJvdW5kIHdpbmRvdyBpcyBjb25maWd1cmVkIGF0IEJBUjAgd2hpY2ggbWFwcwotICAgIHRvIDAgb24gdGhlIFBMQiBzaWRlLiBTbyBhY2Nlc3NpbmcgdGhpcyBCQVIwIGZyb20gdGhlIHJvb3QtY29tcGxleCB3aWxsCi0gICAgYWNjZXNzIHRoZSBmaXJzdCA2NE1CIG9mIHRoZSBTRFJBTSBvbiB0aGUgUFBDIHNpZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkNGNiMmQxNzk0NjQ2Njc0MGFmZWIxOTVhNTdkNmNiMjkwYmY0Y2MwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBPY3QgMTMgMTY6NDM6MjMgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBEeW5hbWljIGNvbmZpZ3VyYXRpb24gb2YgNHh4IFBDSWUgbW9kZSBhcyByb290IG9yIGVuZHBvaW50IG1vZGUKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciBkeW5hbWljIGNvbmZpZ3VyYXRpb24gb2YgUENJZSBwb3J0cyBmb3IgdGhlCi0gICAgQU1DQyBQUEM0eHggYm9hcmRzIGVxdWlwcGVkIHdpdGggUENJZSBpbnRlcmZhY2VzLiBUaGVzZSBhcmUgdGhlIFBQQzQ0MFNQZQotICAgIGJvYXJkcyBZdWNjYSAmIEthdG1haSBhbmQgdGhlIDQwNUVYIGJvYXJkIEtpbGF1ZWEuCi0KLSAgICBUaGlzIGR5bmFtaWMgY29uZmlndXJhdGlvbiBpcyBkb25lIHZpYSB0aGUgInBjaWVfbW9kZSIgZW52aXJvbmVtZW50Ci0gICAgdmFyaWFibGUuIFRoaXMgdmFyaWFibGUgY2FuIGJlIHNldCB0byAiRVAiIG9yICJSUCIgZm9yIGVuZHBvaW50IG9yCi0gICAgcm9vdHBvaW50IG1vZGUuIE11bHRpcGxlIHZhbHVlcyBjYW4gYmUgam9pbmVkIHZpYSB0aGUgIjoiIGRlbGltaXRlci4KLSAgICBIZXJlIGFuIGV4YW1wbGU6Ci0KLSAgICBwY2llX21vZGU9UlA6RVA6RVAKLQotICAgIFRoaXMgd2F5LCBQQ0llIHBvcnQgMCB3aWxsIGJlIGNvbmZpZ3VyZWQgYXMgcm9vdHBvaW50LCBQQ0llIHBvcnQgMSBhbmQgMgotICAgIGFzIGVuZHBvaW50LgotCi0gICAgUGVyIGRlZmF1bHQgWXVjY2Egd2lsbCBiZSBjb25maWd1cmVkIGFzOgotICAgIHBjaWVfbW9kZT1SUDpFUDpFUAotCi0gICAgUGVyIGRlZmF1bHQgS2F0bWFpIHdpbGwgYmUgY29uZmlndXJlZCBhczoKLSAgICBwY2llX21vZGU9UlA6UlA6UkVQCi0KLSAgICBQZXIgZGVmYXVsdCBLaWxhdWVhIHdpbGwgYmUgY29uZmlndXJlZCBhczoKLSAgICBwY2llX21vZGU9UlA6UlAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpcnVtYWxhIFIgTWFycmkgPHRtYXJyaUBhbWNjLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmZDY3MTgwMmI2N2EwZWYzN2EwNjEyNGZhMmNlODVmMDBhYTIyYzZmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBPY3QgMTEgMTE6MTU6NTkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBFbmFibGUgZGV2aWNlIHRyZWUgc3VwcG9ydCAoZmR0KSBvbiBLaWxhdWVhIHBlciBkZWZhdWx0Ci0KLSAgICBUaGlzIHBhdGNoIGVuYWJsZXMgdGhlIGZkdCBzdXBwb3J0IG9uIHRoZSBBTUNDIEtpbGF1ZWEgZXZhbCBib2FyZC4KLSAgICBBZGRpdGlvbmFsbHkgbm93IEVCQyByYW5nZXMgZmR0IGZpeHVwIGlzIGluY2x1ZGVkIHRvIHN1cHBvcnQgTk9SCi0gICAgRkxBU0ggbWFwcGluZyB2aWEgdGhlIExpbnV4IHBoeXNtYXBfb2YgZHJpdmVyLgotCi0gICAgVGhpcyBLaWxhdWVhIHBvcnQgbm93IHN1cHBvcnQgYm9vdGluZyBhcmNoL3BwYyBhbmQgYXJjaC9wb3dlcnBjCi0gICAgTGludXgga2VybmVscy4gVGhlIGRlZmF1bHQgZW52aXJvbm1lbnQgIm5ldF9uZnMiIGlzIGZvciBhcmNoL3BwYwotICAgIGFuZCAibmV0X25mc19mZHQiIGlzIGZvciBhcmNoL3Bvd2VycGMuIEluIHRoZSBsb25nIHJ1biwgYXJjaC9wcGMKLSAgICBzdXBwb3J0IHdpbGwgYmUgcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQ5OTRmZmQ4OTBiOWQ5NWQ4MDczODdhOWI3YmQ4YTQ4MDNlZTQwNmUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE9jdCAxMSAxMToxMTo0NSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBhZGRpdGlvbmFsIGRlYnVnIGluZm8gdG8gNHh4IGZkdCBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkYjMyMzJkZGIwNThkMGVkMGJjMzFmN2M1YzI5Njc0OGExYWZhYzY3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgNSAyMToyODo1OCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBzbWFsbCBtZXJnZSBwcm9ibGVtcyB3aXRoIENQQ0k0NDAgYW5kIEFjYWRpYSBib2FyZHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE5NDFjY2U3MWIxYWU5NzU2MDI4NTQwNDUwNjFlODJmOTRlY2QwMTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIE9jdCA1IDE3OjM1OjEwIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHNtYWxsIG1lcmdlIHByb2JsZW0gaW4gNHh4X2VuZXQuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNTY2ODA2Y2ExYTFiZjRkODk1ZGFhZjBiMmJhNTQ5NGFiYmZmZWJhZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDUgMTc6MTE6MzAgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgaW5pdGlhbCBBTUNDIEtpbGF1ZWEgNDA1RVggc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZGJiZDEyNTcyMWFlYTY2NDVmZGI5NjJmMzZiZDQxZjU5ZTI3MmY5ZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDUgMTc6MTA6NTkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgUFBDNDA1RVggc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMWQ3Yjg3NGU5YzlhN2M2NmY1ZDhkYTllYzc4YTM3MzM3NjVkM2UzMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDUgMTc6MDk6MzYgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBDbGVhbnVwIG9mIDR4eCBQQ0kgYW5kIFBDSWUgc3VwcG9ydCAocmVuYW1pbmcpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZjE0ZWQ2MjMwYjljMTA5YWFjOWE2ZmI4Nzg0OTdkYWJkNDRjMmRiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgNSAxNzowNzo1MCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBpbml0aWFsIGZkdCBzdXBwb3J0IHRvIDR4eCAoZmlyc3QgbmVlZGVkIG9uIDQwNUVYKQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTQyNGE4YmIyOTI0YjkwNzI0Yjk0NDE2NWQzMTQxZjFmYThkZmU1YgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDUgMTc6MDQ6NTcgMjAwNyArMDIwMAotCi0gICAgUE9TVDogQWRkIDQwNUVYIHN1cHBvcnQgdG8gNHh4IFVBUlQgUE9TVCB0ZXN0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZjJlOTJjMTFmNmUyMzkyZmM4MTg3ODI5MjExYTVjYTdmMGMxZTEyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgNSAxNToxMDowMiAyMDA3ICswMjAwCi0KLSAgICBEVFQ6IFByZXBhcmUgRFMxNzc1IGRyaXZlciBmb3IgdXNlIG9mIGRpZmZlcmVudCBJMkMgYWRkcmVzc2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxOWU5M2IxZTE2ZDI2NzIyMDQ0MGQ4MjdiOTIwZmJhZDhhYmZhNzBmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgNSAxNDoyMzo0MyAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IDR4eF9wY2llOiBDaGFuZ2UgUENJZSBzdGF0dXMgb3V0cHV0IHRvIG1hdGNoIGNvbW1vbiBzdHlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZmY2OGY2NmJjYjBkYTg0Nzg0NWFhMmZhYzExZWJhNmMyNTkzOGM5OQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDUgMDk6MjI6MzMgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiA0eHhfcGNpZTogRGlzYWJsZSBkZWJ1ZyBvdXRwdXQgYXMgZGVmYXVsdAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTc5MjM3NzBjYjUyYjY0ZDY5ZWVjOTU4YTExYjJlZGE4ZDQ2ZTBmNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDUgMDk6MTg6MjMgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiA0eHhfcGNpZTogTW9yZSBnZW5lcmFsIGNsZWFudXAgYW5kIDQwNUVYIFBDSWUgc3VwcG9ydCBhZGRlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNGRiZWU4YTkwZGY2MTNlYjUxN2FhZGJlY2ViZDcwZjE2ODkxM2QzMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDUgMDc6NTc6MjAgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiA0eHhfcGNpZTogQ2hhbmdlIENGR19QQ0lFX01FTVNJWkUgdG8gMTI4TUIgb24gWXVjY2EgJiBLYXRtYWkKLQotICAgIDEyOE1CIHNlZW1zIHRvIGJlIHRoZSBzbWFsbGVzdCBwb3NzaWJsZSB2YWx1ZSBmb3IgdGhlIG1lbW9yeSBzaXplCi0gICAgZm9yIG9uIFBDSWUgcG9ydC4gV2l0aCB0aGlzIGNoYW5nZSBub3cgdGhlIEJBUidzIG9mIHRoZSBQQ0llIGNhcmRzCi0gICAgYXJlIGFjY2Vzc2libGUgdW5kZXIgVS1Cb290LgotCi0gICAgT25lIGJpZyBub3RlOiBUaGlzIG9ubHkgd29ya3MgZm9yIFBDSWUgcG9ydCAwICYgMS4gRm9yIHBvcnQgMiB0aGlzCi0gICAgY3VycmVudGx5IGRvZXNuJ3Qgd29yaywgc2luY2UgdGhlIGJhc2UgYWRkcmVzcyBpcyBub3cgMHhjMDAwMDAwMAotICAgICgweGIwMDAwMDAwICsgMiAqIDB4MDgwMDAwMDApLCBhbmQgdGhpcyBpcyBhbHJlYWR5IG9jY3VwaWVkIGJ5Ci0gICAgQ0ZHX1BDSUUwX0NGR0JBU0UuIEJ1dCBzb2x2aW5nIHRoaXMgaXNzdWUgZm9yIHBvcnQgMiB3b3VsZCBtZWFuCi0gICAgdG8gY2hhbmdlIHRoZSBiYXNlIGFkZHJlc3NlcyBjb21wbGV0ZWx5IGFuZCB0aGlzIGNoYW5nZSB3b3VsZCBoYXZlCi0gICAgdG9vIG11Y2ggaW1wYWN0IHJpZ2h0IG5vdy4KLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBkZWJ1ZyBvdXRwdXQgdG8gdGhlIDR4eCBwY2llIGRyaXZlciB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZDk1Mjg5MjgxZWQyOTU4ZWJmNzZkMmI1NWY4NmJiZDg4NTkxZmQyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMyAyMToxNjozMiAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IDR4eF9wY2llOiBGaXggcHJvYmxlbSB3aXRoIFNEUk4gYWNjZXNzIHVzaW5nIHBvcnQgbnVtYmVyIGFzIGlkeAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzA0OGJjYmYwYmFkMjYyMzc4YzVhZjY4ZjJiZjY3NzhmYjdkODI5YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDMgMTU6MDE6MDIgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBSZW5hbWUgNDA1Z3BfcGNpIHRvIDR4eF9wY2kgc2luY2UgaXRzIHVzZWQgb24gYWxsIDR4eCBwbGF0Zm9ybXMKLQotICAgIFRoZXNlIGZpbGVzIHdlcmUgaW50cm9kdWNlZCB3aXRoIHRoZSBJQk0gNDA1R1AgYnV0IGFyZSBjdXJyZW50bHkgdXNlZCBvbiBhbGwKLSAgICA0eHggUFBDIHBsYXRmb3Jtcy4gU28gdGhlIG5hbWUgZG9lc24ndCBtYXRjaCB0aGUgY29udGVudCBhbnltb3JlLiBUaGlzIHBhdGNoCi0gICAgcmVuYW1lcyB0aGUgZmlsZXMgdG8gNHh4X3BjaS5jL2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA5NDI3NmViMGE3YTM1YjllOGMwNTNkNTg5YWUyMjViMGYwMTdhMjM3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMyAxNDoxNDo1OCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBhIGNvbW1lbnQgZm9yIDQwNUVYIFBDSWUgZW5kcG9pbnQgY29uZmlndXJhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDNkMzQ0YmI2YTVmMDgyZWExMGVjOWQ3NTM1NThlYTdkZmQxYzYyNgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDMgMTA6Mzg6MDkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBNYWtlIDQ0MFNQZSBQQ0llIGNvZGUgbW9yZSBnZW5lcmljIHRvIHVzZSBvbiBkaWZmZXJlbnQgNHh4IFBQQ3MgKDMpCi0KLSAgICAoMykgVGhpcyBwYXRjaCBpbnRyb2R1Y2VzIG1hY3JvcyBsaWtlIFNEUk5fUEVTRFJfRExQU0VUKHBvcnQpIHRvIGFjY2VzcwotCXRoZSBTRFIgcmVnaXN0ZXJzIG9mIHRoZSBQQ0llIHBvcnRzLiBUaGlzIG1ha2VzIHRoZSBvdmVyYWxsIGRlc2lnbgotCWNsZWFyZXIsIHNpbmNlIGl0IHJlbW92ZWQgYSBsb3Qgb2Ygc3dpdGNoIHN0YXRlbWVudHMgd2hpY2ggYXJlIG5vdAotCW5lZWRlZCBhbnltb3JlLgotCi0JQWxzbywgdGhlIGZ1bmN0aW9ucyBwcGM0eHhfaW5pdF9wY2llX3Jvb3Rwb3J0KCkgYW5kCi0JcHBjNHh4X2luaXRfcGNpZV9lbnRwb3J0KCkgYXJlIG1lcmdlZCBpbnRvIGEgc2luZ2xlIGZ1bmN0aW9uCi0JcHBjNHh4X2luaXRfcGNpZV9wb3J0KCksIHNpbmNlIG1vc3Qgb2YgdGhlIGNvZGUgd2FzIGR1cGxpY2F0ZWQuCi0JVGhpcyBtYWtlcyBtYWludGFpbmFuY2UgYW5kIHBvcnRpbmcgdG8gb3RoZXIgNHh4IHBsYXRmb3JtcwotCWVhc2llci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDAyNmY3MTEwNjg3MWYzMWQxN2QwZWEwZGI5YTc1NDdmZjkyOTM0YmMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE9jdCAzIDA3OjQ4OjA5IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogTWFrZSA0NDBTUGUgUENJZSBjb2RlIG1vcmUgZ2VuZXJpYyB0byB1c2Ugb24gZGlmZmVyZW50IDR4eCBQUENzICgyKQotCi0gICAgVGhpcyBwYXRjaCBpcyB0aGUgZmlyc3QgcGF0Y2ggb2YgYSBzZXJpZXMgdG8gbWFrZSB0aGUgNDQwU1BlIFBDSWUgY29kZQotICAgIHVzYWJsZSBvbiBkaWZmZXJlbnQgNHh4IFBQQyBwbGF0Zm9ybXMuIEluIHByZXBlcmF0aW9uIGZvciB0aGUgbmV3IDQwNUVYCi0gICAgd2hpY2ggaXMgYWxzbyBlcXVpcHBlZCB3aXRoIFBDSWUgaW50ZXJmYWNlcy4KLQotICAgICgyKSBUaGlzIHBhdGNoIHJlbmFtZXMgdGhlIGZ1bmN0aW9ucyBmcm9tIDQ0MHNwZV8gdG8gNHh4XyB3aXRoIGEKLQlsaXR0bGUgYWRkaXRpb25hbCBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjN2M2ZGEyMzAyOGYxNDZkOTEyNTE0Yjk1YWVmYTNkYTdjZjM3Njk5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBPY3QgMyAwNzozNDoxMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IE1ha2UgNDQwU1BlIFBDSWUgY29kZSBtb3JlIGdlbmVyaWMgdG8gdXNlIG9uIGRpZmZlcmVudCA0eHggUFBDcyAoMSkKLQotICAgIFRoaXMgcGF0Y2ggaXMgdGhlIGZpcnN0IHBhdGNoIG9mIGEgc2VyaWVzIHRvIG1ha2UgdGhlIDQ0MFNQZSBQQ0llIGNvZGUKLSAgICB1c2FibGUgb24gZGlmZmVyZW50IDR4eCBQUEMgcGxhdGZvcm1zLiBJbiBwcmVwZXJhdGlvbiBmb3IgdGhlIG5ldyA0MDVFWAotICAgIHdoaWNoIGlzIGFsc28gZXF1aXBwZWQgd2l0aCBQQ0llIGludGVyZmFjZXMuCi0KLSAgICAoMSkgVGhpcyBwYXRjaCByZW5hbWVzIHRoZSBmaWxlcyBmcm9tIDQ0MHNwZV9wY2llIHRvIDR4eF9wY2llCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyNDVhMzYyYWQzYzBjMWI4NGZjY2M5ZmVjN2I2MjNlYjE0ZjZlNTAyCi1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgT2N0IDI0IDAxOjM3OjM2IDIwMDcgKzAyMDAKLQotICAgIFRRTTUyMDA6IENhbGwgdXNiX2NwdV9pbml0KCkgZHVyaW5nIGJvYXJkIGluaXQKLQotICAgIHVzYl9jcHVfaW5pdCgpIGNvbmZpZ3VyZXMgR1BTIFVTQiBwaW5zLCBjbG9ja3MsIGV0Yy4gYW5kCi0gICAgaXMgcmVxdWlyZWQgZm9yIHByb3BlciBvcGVyYXRpb24gb2Yga2VybmVsIFVTQiBzdWJzeXN0ZW0uCi0gICAgVGhpcyBzZXR1cCB3YXMgcHJldmlvdXNseSBkb25lIGluIHRoZSBrZXJuZWwgYnkgdGhlIGZpeHVwCi0gICAgY29kZSB3aGljaCBpcyBiZWluZyByZW1vdmVkLCB0aHVzIGxvdyBsZXZlbCBpbml0IG11c3QgYmUKLSAgICBkb25lIGJ5IFUtYm9vdCBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCBiNWFmNzczZjhkOTI2NzdlMDZmMzI5NWI0NTU1N2M5ZDBhNDg3YzI0Ci1BdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDI1IDE3OjUxOjI3IDIwMDcgKzA4MDAKLQotICAgIEZpeCB0aGUgaXNzdWUgb2YgdXNiX2tiZCBkcml2ZXIgbWlzc2luZyB0aGUgc2NhbiBjb2RlIG9mIGtleSAneicuCi0KLSAgICBUaGUgc2NhbiBjb2RlIG9mIHRoZSBrZXkgJ3onIGlzIDB4MWQsIHdoaWNoIHNob3VsZCBiZSBoYW5kbGVkLgotCi0gICAgVGhlIGNoYW5nZSBoYXMgYmUgdGVzdGVkIG9uIE5PVkFURUsgVVNCIGtleWJvYXJkIGFuZCBVTEkgUENJIE9IQ0kKLSAgICBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgODVhYzk4OGU4NmY5NDE0ZmE2NDViMDE0OGRjNjZjMzUyMGExZWI4NAotQXV0aG9yOiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+Ci1EYXRlOglNb24gT2N0IDE1IDExOjU5OjE3IDIwMDcgKzAyMDAKLQotICAgIFBYQSBVU0IgT0hDSTogInVzYiBzdG9wIiBpbXBsZW1lbnRhdGlvbi4KLQotICAgIFNvbWUgVVNCIGtleXMgbmVlZCB0byBiZSBzd2l0Y2hlZCBvZmYgYmVmb3JlIGxvYWRpbmcgdGhlIGtlcm5lbAotICAgIG90aGVyd2lzZSB0aGV5IGNhbiByZW1haW4gaW4gYW4gdW5kZWZpbmVkIHN0YXR1cyB3aGljaCBwcmV2ZW50cyB0aGVtCi0gICAgdG8gYmUgY29ycmVjdGx5IHJlY29nbml6ZWQgYnkgdGhlIGtlcm5lbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci0KLWNvbW1pdCAzMTU0ODI0OWRlY2YxOGE2Yjg3N2ExODQzNmI2MTM5ZGQ0ODNmZTRhCi1BdXRob3I6IEp1c3RpbiBGbGFtbWlhIDxqZmxhbW1pYUBzYXZhbnRhdi5jb20+Ci1EYXRlOglNb24gT2N0IDI5IDE3OjQwOjM1IDIwMDcgLTA0MDAKLQotICAgIERIQ1AgQ2xpZW50IEZpeAotCi0gICAgVGhpcyBpcyBhIG11bHRpLXBhcnQgbWVzc2FnZSBpbiBNSU1FIGZvcm1hdC4KLQotICAgIGNvbW1pdCBlNmU1MDVlYWU5NGVkNzIxZTEyM2UxNzc0ODkyOTFmYzQ1NDRiN2I4Ci0gICAgQXV0aG9yOiBKdXN0aW4gRmxhbW1pYSA8amZsYW1taWFAc2F2YW50YXYuY29tPgotICAgIERhdGU6ICAgTW9uIE9jdCAyOSAxNzoxOTowMyAyMDA3IC0wNDAwCi0KLQlGb3VuZCBhIGJ1ZyBpbiB0aGUgd2F5IHRoZSBESENQIFJlcXVlc3QgcGFja2V0IGlzIGJ1aWx0LCB3aGVyZSB0aGUgSVAgYWRkcmVzcwotCXRoYXQgaXMgb2ZmZXJlZCBieSB0aGUgc2VydmVyIGlzIGJvdW5kIHRvIHByZW1hdHVyZWx5LiBUaGlzIHBhdGNoIGlzIGEgZml4IG9mCi0JdGhhdCBidWcgd2hlcmUgdGhlIElQIGFkZHJlc3Mgb2ZmZXJlZCBieSB0aGUgREhDUCBzZXJ2ZXIgaXMgbm90IHVzZWQgdW50aWwKLQlhZnRlciB0aGUgREhDUCBBQ0sgZnJvbSB0aGUgc2VydmVyIGlzIHJlY2VpdmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSnVzdGluIEZsYW1taWEgPGpmbGFtbWlhQHNhdmFudGF2LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLQotY29tbWl0IGU4ZWU4ZjNhZGUyYTA2YzE4OTNkZDVlNjhmMjIzMDcwZDY1MGM3ZWQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAyNSAxNzoxNjoyMiAyMDA3IC0wNTAwCi0KLSAgICBDb2xkRmlyZSA1NDQ1NTogRml4IGNvcnJlY3QgYm9vdCBsb2NhdGlvbiBmb3IgYXRtZWwgYW5kIGludGVsCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2ODhlOGViNDE0YWMxMTFjY2E3Y2U2MGJkZjMwZTgwNWFiOWE3YmNiCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMjUgMTc6MTQ6MDAgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEZpeCBidWlsZCBlcnJvciB3aGVuIENPTkZJR19XQVRDSERPRyBpcyBkZWZpbmVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNjdlMTJlNzA1YjIwNGNmZTkxNGUzZTNlNjkzZDY5YTQ0NWRjYWJmCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMjUgMTc6MTI6MzYgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmUgNTMyOTogQXNzaWduIGNvcnJlY3QgU0RSQU0gc2l6ZSBhbmQgZml4IGNhY2hlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5NWU5ZjJjMjEyYTY1NjEwYjJlNTlhNWMwMGQwMTEzMzgzYTRkYTBiCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMjUgMTc6MTA6MjMgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmUgNTI1MzogQXNzaWduIGNvcnJlY3QgU0RSQU0gc2l6ZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMmFjZWZhNzJlZTAwMjZmODYyYWI2NTU5N2NhNjg3NDI4ZjYzYTk3MwotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDI1IDE3OjA5OjE3IDIwMDcgLTA1MDAKLQotICAgIENvbGRGaXJlIDUyODI6IEZpeCBleHRlcm5hbCBmbGFzaCBib290IGFuZCByZXR1cm4gZHJhbXNpemUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ3ODc5MWFlOTE0ZDRlN2M1ZWRjYTFjZGFkNzNiM2RjODFhNGViODIKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBPY3QgMjUgMTc6MjA6MDEgMjAwNyArMDIwMAotCi0gICAgVFFNNTIwMDogaW5jcmVhc2Uga2VybmVsX2FkZHJfciBhbmQgZmR0X2FkZHJfciAoaGludGVkIGJ5IFdvbGZnYW5nIERlbmspLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDFhMGNlMjBhYTRjYjRlMzA2OGRhMDRlNzI5MGVlOTk4NmZkMGI4MzQKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci1EYXRlOglXZWQgT2N0IDI0IDA4OjQyOjI1IDIwMDcgKzAyMDAKLQotICAgIFRRTTUyMDA6IGZpeCBzcHVyaW91cyBjaGFyYWN0ZXJzIG9uIHNlY29uZCBzZXJpYWwgaW50ZXJmYWNlCi0KLSAgICBXaXRoIHRoaXMgcGF0Y2ggUFNDMyBpcyBjb25maWd1cmVkIGFzIFVBUlQuIFRoaXMgaXMgZG9uZSwgYmVjYXVzZSBpZgotICAgIHRoZSBwaW5zIG9mIFBTQzMgYXJlIG5vdCBjb25maWd1cmVkIGF0IGFsbCAoLT4gYWxsIHBpbnMgYXJlIEdQSSksCi0gICAgZHVlIHRvIGNyb3NzdGFsaywgc3B1cmlvdXMgY2hhcmFjdGVycyBtYXkgYmUgc2VuZCBvdmVyIHRoZSBSWDIzMl8yX1RYRAotICAgIHNpZ25hbCBsaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgYmU0YTg3ZjExZTI5N2E1Y2VkZWRiZjdkZDcxYzAyNDhmMzg3NGFjZAotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CVdlZCBPY3QgMjQgMDg6NDE6MjcgMjAwNyArMDIwMAotCi0gICAgVFFNNTIwMFM6IGZpeCBjb21tYW5kcyBmb3IgU1RLNTJ4eCBiYXNlIGJvYXJkIGJlY2F1c2Ugb2YgbWlzc2luZyBTTTUwMSBncmFmaWMgY29udHJvbGxlcgotCi0gICAgU29tZSBjb21tYW5kcyBmb3IgdGhlIFNUSzUyeHggYmFzZSBib2FyZCB0cnkgdG8gYWNjZXNzIHRoZSBTTTUwMSBncmFmaWMKLSAgICBjb250cm9sbGVyLiBCdXQgdGhlIFRRTTUyMDBTIGhhcyBubyBncmFmaWMgY29udHJvbGxlciAob25seSB0aGUgVFFNNTIwMAotICAgIGFuZCB0aGUgVFFNNTIwMEIgaGF2ZSkuIFRoaXMgcGF0Y2ggZGVhY3RpdmF0ZXMgdGhlIGNvbW1hbmRzIGFjY2Vzc2luZwotICAgIHRoZSBTTTUwMSBmb3IgdGhlIFRRTTUyMDBTLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgYjMxZjY0MzQzZWFkOTQ4MmNkNDM5YjFhZGJlNGMzNDAyNmE2NDFiMQotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CU1vbiBPY3QgMjIgMTY6NDU6NTMgMjAwNyArMDIwMAotCi0gICAgVFFNNTIwMDogZml4IHNwdXJpb3VzIGNoYXJhY3RlcnMgb24gc2Vjb25kIHNlcmlhbCBpbnRlcmZhY2UKLQotICAgIFdpdGggdGhpcyBwYXRjaCBQU0MzIGlzIGNvbmZpZ3VyZWQgYXMgVUFSVC4gVGhpcyBpcyBkb25lLCBiZWNhdXNlIGlmCi0gICAgdGhlIHBpbnMgb2YgUFNDMyBhcmUgbm90IGNvbmZpZ3VyZWQgYXQgYWxsICgtPiBhbGwgcGlucyBhcmUgR1BJKSwKLSAgICBkdWUgdG8gY3Jvc3N0YWxrLCBzcHVyaW91cyBjaGFyYWN0ZXJzIG1heSBiZSBzZW5kIG92ZXIgdGhlIFJYMjMyXzJfVFhECi0gICAgc2lnbmFsIGxpbmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IDBmYzBmOTFiMjBmZmE4MDJmNWE2NjUzNGNhNWMyODQ0OTEwNTgzZjYKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci1EYXRlOglNb24gT2N0IDIyIDE2OjQwOjA2IDIwMDcgKzAyMDAKLQotICAgIFRRTTUyMDBTOiBmaXggY29tbWFuZHMgZm9yIFNUSzUyeHggYmFzZSBib2FyZCBiZWNhdXNlIG9mIG1pc3NpbmcgU001MDEgZ3JhZmljIGNvbnRyb2xsZXIKLQotICAgIFNvbWUgY29tbWFuZHMgZm9yIHRoZSBTVEs1Mnh4IGJhc2UgYm9hcmQgdHJ5IHRvIGFjY2VzcyB0aGUgU001MDEgZ3JhZmljCi0gICAgY29udHJvbGxlci4gQnV0IHRoZSBUUU01MjAwUyBoYXMgbm8gZ3JhZmljIGNvbnRyb2xsZXIgKG9ubHkgdGhlIFRRTTUyMDAKLSAgICBhbmQgdGhlIFRRTTUyMDBCIGhhdmUpLiBUaGlzIHBhdGNoIGRlYWN0aXZhdGVzIHRoZSBjb21tYW5kcyBhY2Nlc3NpbmcKLSAgICB0aGUgU001MDEgZm9yIHRoZSBUUU01MjAwUy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgN2IwYTQyMjE5ZjMwMjc3ZjcxZjQ0MDVjYmFmOGEyNjlmNmQyZDIyNwotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJU3VuIE9jdCAyMSAwOToxNDoyOCAyMDA3ICswMjAwCi0KLSAgICBNaXBzOiBGaXggc3RyaW5nIGZ1bmN0aW9ucyBkaWZmZXIgcHJvdG90eXBlIGRlY2xhcmF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgY2I4MjUwZmU0YjNjNGVkNTQ5YjI3MGU4YTIwYmMyMjA2MGU3ZTFkMgotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAxOSAxNzo1MTo0MCAyMDA3IC0wNTAwCi0KLSAgICBmc2xfcGNpX2luaXQgZW5hYmxlIENPTU1BTkRfTUVNT1JZIGlmIGluYm91bmQgd2luZG93Ci0KLSAgICBQYXRjaCAxNmUyM2MzZiByZW1vdmVkIFBDU1JCQVIgYWxsb2NhdGlvbi4JQnV0IHBhc3NpbmcgemVybyB3aW5kb3dzCi0gICAgdG8gcGNpYXV0b19zZXR1cF9kZXZpY2UgaGFzIHRoZSBzaWRlIGVmZmVjdCBvZiBub3QgZ2V0dGluZwotICAgIENPTU1BTkRfTUVNT1JZIHNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlOWQwZDUyNzk5MjU2NmViZWY5ODI2OTYyZmYxNzQ1YjJmMDgyYjkyCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgT2N0IDE5IDEwOjU1OjI0IDIwMDcgKzAyMDAKLQotICAgIGRlbHRhOiBGaXggT0hDSV9SRUdTX0JBU0UgdW5kZWNsYXJlZCBhbmQgd2FpdF9tcyBpbXBsaWNpdCBkZWNsYXJhdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDljNDg4NGY1NGRhOTgyY2U5OTBjN2QxNzYwYWM4MWIwNzA0ZDNjNjQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBPY3QgMTkgMDg6MTA6MTUgMjAwNyArMDIwMAotCi0gICAgZml4IHdhcm5pbmc6IG5vIHJldHVybiBzdGF0ZW1lbnQgaW4gZnVuY3Rpb24gcmV0dXJuaW5nIG5vbi12b2lkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgZTc4MjIwZjZlNTE0MjA2NzU3YWNmZTI0NzI5N2ZjOWEzMjhhODgxZgotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE9jdCAxOSAwNjozMzo0NSAyMDA3ICswMjAwCi0KLSAgICB4c2VuZ2luZTogRml4IG5vIHBhcnRpdGlvbiB0eXBlIHNwZWNpZmllZCwgdXNlIERPUyBhcyBkZWZhdWx0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgMTBjZGI4ZGJkNjdhODE4ODIzYWI5ZWM4OGI2OGZjMzQ4OTAzZGI1OQotQXV0aG9yOiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotRGF0ZToJRnJpIE9jdCAxOSAwMDoyNDo1OSAyMDA3ICswMjAwCi0KLSAgICBsdWJib2NrOiBGaXggbm8gcGFydGl0aW9uIHR5cGUgc3BlY2lmaWVkLCB1c2UgRE9TIGFzIGRlZmF1bHQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCA0MWI0ZDI4MmQzOGZhNzIzMWMzMTVjNWY2Y2ZmZjViZGQyNGUwMTkxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIzIDE2OjUwOjAzIDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBzdHlsZToga2VlcCBsaXN0cyBzb3J0ZWQ7IHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1OGI3NGIwNWM2MjFlMjgzNWVjZjRlMmQzMjQzMDQyY2Y0MTg2Nzc3Ci1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglGcmkgT2N0IDE5IDAwOjA5OjA1IDIwMDcgKzAyMDAKLQotICAgIEZpeCBtaXNzaW5nIGRyaXZlcnMgbWFrZWZpbGUgZW50cmllcyBkczE3MjIuYyBtd19lZXByb20uYwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLQotY29tbWl0IDk2NDU1YmZlYmM5ODg3ODM3MDk1YzkwNTFkMjE2ZjUzYzYxYjVmMTAKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CUZyaSBPY3QgMTkgMDA6MDc6MzkgMjAwNyArMDIwMAotCi0gICAgRml4IHdhcm5pbmcgZGlmZmVyIGluIHNpZ25lZG5lc3MgaW4gYm9hcmQvaW5ub2tvbS9pbm5va29tLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCAyYTQ3NDFkOWExNGVjNDc1ZjUwZTk4NTZkMmMwYTY3ZThiNDI3MWJkCi1BdXRob3I6IE1hcmNlbCBaaXN3aWxlciA8bWFyY2VsQHppc3dpbGVyLmNvbT4KLURhdGU6CUZyaSBPY3QgMTkgMDA6MjU6MzMgMjAwNyArMDIwMAotCi0gICAgZml4IHB4YTI1NV9pZHAgYm9hcmQKLQotICAgIFRoZSBweGEyNTVfaWRwIGJlaW5nIGFuIG9sZCB1bm1haW50YWluZWQgYm9hcmQgc2hvd2VkIHNldmVyYWwgaXNzdWVzOgotICAgIDEuIENPTkZJR19JTklUX0NSSVRJQ0FMIHdhcyBzdGlsbCBkZWZpbmVkLgotICAgIDIuIE5laXRoZXIgQ09ORklHX01BQ19QQVJUSVRJT04gbm9yIENPTkZJR19ET1NfUEFSVElUSU9OIHdhcyBkZWZpbmVkLgotICAgIDMuIFN5bWJvbCBmbGFzaF9hZGRyIHdhcyB1bmRlY2xhcmVkLgotICAgIDQuIFRoZSBib2FyZHMgbG93bGV2ZWxfaW5pdCBmdW5jdGlvbiB3YXMgc3RpbGwgY2FsbGVkIG1lbXNldHVwLgotICAgIDUuIFRoZSBURVhUX0JBU0Ugd2FzIHN0aWxsIDB4YTMwMDAwMDAgcmF0aGVyIHRoYW4gMHhhMzA4MDAwMC4KLSAgICA2LiBVc2luZyAtbWFyY2g9YXJtdjUgaW5zdGVhZCBvZiAtbWFyY2g9YXJtdjV0ZSByZXN1bHRlZCBpbiBsb3RzIG9mCi0gICAgJ3RhcmdldCBDUFUgZG9lcyBub3Qgc3VwcG9ydCBpbnRlcndvcmtpbmcnIHdhcm5pbmdzIG9uIHJlY2VudCBjb21waWxlcnMuCi0gICAgNy4gVGhlIFBYQSdzIHNlcmlhbCBkcml2ZXIgcmVkZWZpbmVkIEZGVUFSVCwgQlRVQVJUIGFuZCBTVFVBUlQgdXNlZCBhcwotICAgIGluZGV4ZXMgcmF0aGVyIHRoYW4gdGhlIHJlZ2lzdGVyIGRlZmluaXRpb25zIGZyb20gdGhlIHB4YS1yZWdzIGhlYWRlcgotICAgIGZpbGUuIFJlbmFtZWQgdGhlbSB0byBGRlVBUlRfSU5ERVgsIEJUVUFSVF9JTkRFWCBhbmQgU1RVQVJUX0lOREVYIHRvCi0gICAgYXZvaWQgYW55IGFtYmlndWl0aWVzLgotICAgIDguIFRoZXJlIHdlcmUgc2V2ZXJhbCByZWRlZmluaXRpb24gd2FybmluZ3MgY29uY2VybmluZyBJQ01SLCBPU01SMywKLSAgICBPU0NSLCBPV0VSLCBPSUVSLCBSQ1NSIGFuZCBDQ0NSIGluIHRoZSBQWEEncyBhc3NlbWJseSBzdGFydCBmaWxlLgotICAgIDkuIFRoZSBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUgd2FzIHJhdGhlciBvdXRkYXRlZC4KLSAgICAxMC4gVGhlIHBhcnQgaGVhZGVyIGZpbGUgZGVmaW5lZCB0aGUgdmVuZG9yLCBwcm9kdWN0IGFuZCByZXZpc2lvbiBhcnJheXMKLSAgICBhcyB1bnNpZ25lZCBjaGFycyBpbnN0ZWFkIG9mIGp1c3QgY2hhcnMgaW4gdGhlIGJsb2NrX2Rldl9kZXNjX3QKLSAgICBzdHJ1Y3R1cmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJjZWwgWmlzd2lsZXIgPG1hcmNlbEB6aXN3aWxlci5jb20+Ci0KLWNvbW1pdCAyOThjZDRjYWZlODFmZjhhNmM4N2JlOGZiYzQ0MGEyMDcyMGQzZWQ2Ci1BdXRob3I6IFJ1bmUgVG9yZ2Vyc2VuIDxydW5ldEBpbm5vdnN5cy5jb20+Ci1EYXRlOglXZWQgT2N0IDE3IDExOjU2OjMxIDIwMDcgLTA1MDAKLQotICAgIE1ha2UgTVBDODI2NkFEUyBjb21tYW5kIHNlbGVjdGlvbiBtb3JlIHJvYnVzdAotCi0gICAgRml4IE1QQzgyNjYgY29tbWFuZCBsaW5lIGRlZmluaXRpb24gc28gaXQgd29uJ3QgYnJlYWsgd2hlbiBuZXcgY29tbWFuZHMKLSAgICBhcmUgYWRkZWQgdG8gdS1ib290LgotICAgIFNpZ25lZC1vZmYtYnkgUnVuZSBUb3JnZXJzZW4gPHJ1bmV0QGlubm92c3lzLmNvbT4KLQotY29tbWl0IGQzYWZhMWVlMTkzNDVhMzFmZDFlYWFkM2U5OGI5N2QxM2NhNDczMTUKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjMgMTM6MTQ6MTAgMjAwNyArMDIwMAotCi0gICAgTW90aW9uLVBSTzogVXBkYXRlIGNvbmZpZ3VyYXRpb24gdG8gYWNjb21vZGF0ZSBuZXh0IGdlbmVyYXRpb24gYm9hcmQuCi0KLSAgICBOZXcgYm9hcmQgaGFzIGZhc3RlciBvc2NpbGxhdG9yIGFuZCBhIGRpZmZlcmVudCBGbGFzaCBjaGlwLiBUaGlzIGFmZmVjdHM6Ci0gICAgLSBDRkdfTVBDNVhYWF9DTEtJTgotICAgIC0gU0RSQU0gdGltaW5ncwotICAgIC0gRmxhc2ggQ1MgY29uZmlndXJhdGlvbiAodGltaW5ncykKLSAgICAtIEZsYXNoIHNlY3RvciBzaXplLCBhbmQgdGh1cyBNVEQgcGFydGl0aW9uIGxheW91dAotICAgIC0gbWFsbG9jKCkgYXJlbmEgc2l6ZSAoZHVlIHRvIGJpZ2dlciBGbGFzaCBzZWN0b3JzKQotICAgIC0gc21hbGxlciBtZW1vcnkgdGVzdCByYW5nZSAoZHVlIHRvIGJpZ2dlciBtYWxsb2MoKSBhcmVuYSkKLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBlbmFibGVzIG1vcmUgZXh0ZW5zaXZlIG1lbW9yeSB0ZXN0aW5nIHZpYSAibXRlc3QiLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGVmZjUwMTkwNGRmMmJmMTcyNGE3NTAwNjI2MjhiYTJjNTFkYmIxZjgKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBPY3QgMjMgMTE6MzY6MDcgMjAwNyArMDIwMAotCi0gICAgTW90aW9uLVBSTzogQWRkIHNldHRpbmcgb2YgU0RlbGF5IHJlZy4gdG8gU0RSQU0gY29udHJvbGxlciBjb25maWd1cmF0aW9uLgotCi0gICAgUGVyIEFOMzIyMSAoTVBDNTIwMEIgU0RSQU0gSW5pdGlhbGl6YXRpb24gYW5kIENvbmZpZ3VyYXRpb24pLCB0aGUgU0RlbGF5Ci0gICAgcmVnaXN0ZXIgbXVzdCBiZSB3cml0dGVuIGEgdmFsdWUgb2YgMHgwMDAwMDAwNCBhcyB0aGUgZmlyc3Qgc3RlcCBvZiB0aGUKLSAgICBTRFJBTSBjb250b3JsbGVyIGNvbmZpZ3VyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgN2E5MzQ4NzI4ZWJkYTYzY2RiYWFjZmZkODMwOTlhYTcxZDlkNGM1NAotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJVHVlIE9jdCAyMyAxMDoyMjoxNiAyMDA3ICswMTAwCi0KLSAgICBNb3ZlIFBMMDEqIHNlcmlhbCBkcml2ZXJzIHRvIGRyaXZlcnMvc2VyaWFsIGFuZCBhZGp1c3QgTWFrZWZpbGVzLgotCi1jb21taXQgMjBkNTAwZDUzMWE2Yjk3MWNlNmNjMWJmMTkxY2IwMDkyY2RjMGFmYwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIzIDEwOjE3OjQyIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogbHdtb241OiBTb21lIGZ1cnRoZXIgR1BJTyBjb25maWcgY2hhbmdlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZGU5YTczOGZhYTdjMmY0NzI4NjExOWMzYmZlYmMzZGZiZmU3ZDg2ZAotQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KLURhdGU6CVN1biBPY3QgMjEgMjI6MTA6MTAgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIEZpeCBVTkNBQ0hFRF9TRFJBTQotCi0gICAgUEhZU0FERFIgaXMgZm9yIHBoeXNpY2FsIGFkZHJlc3MsIEtTRUcxQUREUiBpcyBmb3IgdW5jYWNoZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCAwMDEwMWRkN2EzMmQxMmY2OTgxNTAxMjNlNDdlNGIzNDIwMjc5Zjg2Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CVN1biBPY3QgMjEgMjE6MzA6NDIgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIEFkZCBQSUMtcmVsYXRlZCBzd2l0Y2hlcyB0byBQTEFURk9STV97Q1BQLExEfUZMQUdTIGFuZCBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCBlYjcwMDYzNmRiMDE3ZDMxMGVkYWViNTU5YjEzZDgyNTg4NTYwNjc0Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CVN1biBPY3QgMjEgMTA6NTU6MzcgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIHUtYm9vdC5sZHM6IERlZmluZSBfZ3AgaW4gYSBzdGFuZGFyZCBtYW5uZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLQotY29tbWl0IDIyMDY5MjE1ZWI3YWRmNWEzODg4YmY3Yzc3ODRlYTlkNzBhNzJjZDAKLUF1dGhvcjogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotRGF0ZToJU3VuIE9jdCAyMSAxMDo1NTozNiAyMDA3ICswOTAwCi0KLSAgICBbTUlQU10gRml4ICRncCB1c2FnZQotCi0gICAgTm93IHdlIGxvYWQgJGdwIHdpdGggX0dMT0JBTF9PRkZTRVRfVEFCTEVfLCBidXQgdGhpcyBpcyBpbmNvcnJlY3QgdXNlLgotICAgIEFzIGEgZ2VuZXJhbCBwcmluY2lwbGUsIHdlIHNob3VsZCB1c2UgX2dwIGZvciAkZ3AuCi0KLSAgICBUaGFua3MgdG8gbGlua2VyIHNjcmlwdCdzIGhlbHAgd2UgZm9ydHVuYXRlbHkgaGF2ZSBfZ3Agd2hpY2ggZXF1YWxzIHRvCi0gICAgX0dMT0JBTF9PRkZTRVRfVEFCTEVfLiBCdXQgb25jZSBfZ3AgZ2V0cyBvdXQgb2YgYWxpZ25tZW50LCB3ZSB3aWxsIG5vdAotICAgIGJlIGFibGUgdG8gYWNjZXNzIHRvIEdPVCBlbnRpcmVzLCBnbG9iYWwgdmFyaWFibGVzIGFuZCBwcm9jZWR1cmUgZW50cnkKLSAgICBwb2ludHMuIFRoZSByaWdodCB0aGluZyB0byBkbyBpcyB0byB1c2UgX2dwLgotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGludHJvZHVjZSBhIG5ldyBzeW1ib2wgYC5ncHdvcmQgX0dMT0JBTF9PRkZTRVRfVEFCTEVfJwotICAgIHdoaWNoIGhvbGRzIHRoZSBvZmZzZXQgZnJvbSBfZ3AuIFdoZW4gdXBkYXRpbmcgR09UIGVudHJpZXMsIHdlIHVzZSB0aGlzCi0gICAgb2Zmc2V0IGFuZCBfZ3AgdG8gY2FsY3VsYXRlIHRoZSBmaW5hbCBfR0xPQkFMX09GRlNFVF9UQUJMRV8uCi0KLSAgICBUaGlzIHBhdGNoIGlzIG9yaWdpbmFsbHkgc3VibWl0dGVkIGJ5IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPiwgdGhlbgotICAgIEkgbWFkZSBzb21lIGNoYW5nZSB0byBsZWF2ZSBvdmVyIG51bV9nb3RfZW50cmllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLSAgICBDYzogVmxhZCBMdW5ndSA8dmxhZEBjb21zeXMucm8+Ci0KLWNvbW1pdCBjYmYyMzIzYjViODI4NWVhMDFhY2JhN2JiYjkwNWEzMTYyZDliMDIxCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CVN1biBPY3QgMjEgMTA6NTU6MzYgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIHUtYm9vdC5sZHM6IEZpeCBfX2dvdF9zdGFydCBhbmQgX19nb3RfZW5kCi0KLSAgICBFbnN1cmUgdGhhdCBfX2dvdF9zdGFydCBwb2ludHMgdG8gdG9wIG9mIHRoZSBgLmdvdCcsIGFuZCBfX2dvdF9lbmQgcG9pbnRzCi0gICAgdG8gYm90dG9tIGFzIHdlbGwsIHNvIHRoYXQgd2UgbmV2ZXIgZmFpbCB0byBjb3VudCBudW1fZ290X2VudHJpZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCBlNWYzMjVmZWM1YjQ4YWU3MDVjODk1MjI5MjNiYTVhMmUzN2NkNWM3Ci1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CVN1biBPY3QgMjEgMTA6NTU6MzYgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIHUtYm9vdC5sZHM6IFJlbW92ZSBkdXBsaWNhdGVkIC5zZGF0YSBzZWN0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCAwNWJmNDkxOWMxY2U0OWNkZWRhZGFjZDU2NGQwNzg2YThlZDc5NmExCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gT2N0IDIxIDAxOjAxOjE3IDIwMDcgKzAyMDAKLQotICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZmYyODVjYTA3ZWRhMWVhNGE4OTA5ODQ4Y2MxY2M2MDRlYzhmZWM5YwotQXV0aG9yOiBWbGFkIEx1bmd1IDx2bGFkQGNvbXN5cy5ybz4KLURhdGU6CVRodSBPY3QgNCAyMDo0NzoxMCAyMDA3ICswMzAwCi0KLSAgICBGaXggTkUyMDAwIGRyaXZlcjoKLQotICAgIEZpeGVkIHR5cG8gaW4gbmUyMDAwLmgsIHRoaW5rbyByZSBuMmtfaW5iKCkgdXNhZ2UsIGRvbid0IHRyeQotICAgIHRvIGRvIGFueXRoaW5nIGluIGV0aF9zdG9wKCkgaWYgZXRoX2luaXQoKSB3YXMgbm90IGNhbGxlZC4KLSAgICBTaW1wbGlmaWVkIFJYIHBhdGggaW4gb3JkZXIgdG8gYXZvaWQgdGltZW91dHMgb24gcmVhbGx5IHJlYWxseQotICAgIGZhc3QgTkUyMDAwIGNhcmRzIChyZWFkOiBxZW11IHdpdGggaW50ZXJuYWwgdGZ0cCksIE5ldExvb3AoKSBpcwotICAgIGNsZXZlciBlbm91Z2ggdG8gY29wZSB3aXRoIDEgcGFja2V0IHBlciBldGhfcngoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFZsYWQgTHVuZ3UgPHZsYWRAY29tc3lzLnJvPgotCi1jb21taXQgZGY5MDk2OGI0OGZiMzRmYTkwNzJmYWIxNTBkYjJhYzg5Njc4ZjUzNwotQXV0aG9yOiB1cndpdGhzdWdob3NoQGdtYWlsLmNvbSA8dXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20+Ci1EYXRlOglNb24gU2VwIDI0IDEzOjMyOjEzIDIwMDcgLTA0MDAKLQotICAgIFNldHRpbmcgTVNSW0RFXSBpbiBkb19yZXNldAotCi0gICAgSGVsbG8sCi0gICAgICAgVGhpcyBwYXRjaCBlbnN1cmVzIHRoZSBzb2Z0IHJlc2V0IG9mIHRoZSBib2FyZCBmb3IgdGhlIDg1eHggYm9hcmRzCi0gICAgICAgYnkgc2V0dGluZyB0aGUgTVNSW0RFXSBpbiB0aGUgZG9fcmVzZXQgZnVuY3Rpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdWdob3NoIEdhbnUgPHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tPgotCi1jb21taXQgMWU3MDFlNzAxMzA0YjNjM2EzNzY4Y2E4M2RkMmFiN2I5ZTg4Yzc3ZAotQXV0aG9yOiB1cndpdGhzdWdob3NoQGdtYWlsLmNvbSA8dXJ3aXRoc3VnaG9zaEBnbWFpbC5jb20+Ci1EYXRlOglNb24gU2VwIDI0IDEzOjM2OjAxIDIwMDcgLTA0MDAKLQotICAgIE1TUiBvdmVyd3JpdGUgZml4Ci0KLSAgICBIZWxsbywKLSAgICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIE1TUiBvdmVyd3JpdGUgaW4gdGhlIHN0YXJ0LlMgd2hlbiBtb3Zpbmcgb3V0IG9mCi0gICAgICB0aGUgbGFzdCA0SyBwYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3VnaG9zaCBHYW51IDx1cndpdGhzdWdob3NoQGdtYWlsLmNvbT4KLQotY29tbWl0IDVjN2VhNjRiYjc0YTg1MGEyYjIzMDNmODUzYTgyNzA2OTVhZDg2MDIKLUF1dGhvcjogRGFuIFdpbHNvbiA8ZHdpbHNvbkBmdWxjcnVtbWljcm8uY29tPgotRGF0ZToJRnJpIE9jdCAxOSAxMTozMzo0OCAyMDA3IC0wNTAwCi0KLSAgICB0c2VjIGRyaXZlciBzaG91bGQgY2xlYXIgUkhBTFQgb24gc3RhcnR1cAotCi0gICAgVGhpcyB3YXMgY2F1c2luZyBwcm9ibGVtcyBmb3Igc29tZSBwZW9wbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGFpbiBHcmF2ZWwgPGFncmF2ZWxAZnVsY3J1bW1pY3JvLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYW4gV2lsc29uIDxkd2lsc29uQGZ1bGNydW1taWNyby5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzYwMGQ0N2I4ZjZhMTAwMTllNTM3ZGM5YTYyYWExNDk4ZGY1OGQyNQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE9jdCAxMSAwMDoyOToxOCAyMDA3IC0wNTAwCi0KLSAgICBJbXByb3ZlIGhhbmRsaW5nIG9mIFBDSSBpbnRlcnJ1cHQgZGV2aWNlIHRyZWUgZml4dXAgb24gTVBDODV4eCBDRFMKLQotICAgIE9uIHRoZSBNUEM4NXh4IENEUyB3ZSBoYXZlIHR3byBpc3N1ZXM6Ci0KLSAgICAxLiBUaGUgZGV2aWNlIHRyZWUgZml4dXAgY29kZSBkaWQgbm90IGNoZWNrIHRvIHNlZSBpZiB0aGUgcHJvcGVydHkgd2UgYXJlCi0gICAgdHJ5aW5nIHRvIHVwZGF0ZSBpcyBhY3R1YWxseSBmb3VuZC4gIEl0cyBwb3NzaWJsZSB0aGF0IGl0IHdvdWxkIHVwZGF0ZQotICAgIHJhbmRvbSBtZW1vcnkgc3RhcnRpbmcgYXQgMC4KLQotICAgIDIuIE5ld2VyIExpbnV4IGtlcm5lbCdzIGhhdmUgbW92ZWQgdGhlIGxvY2F0aW9uIG9mIHRoZSBQQ0kgbm9kZXMgdG8gYmUKLSAgICBzaWJpbGluZ3Mgb2YgdGhlIHNvYyBub2RlIGFuZCBub3QgY2hpbGRyZW4uICBUaGUgZXhwbGljaXQgUEFUSCB0byB0aGUgUENJCi0gICAgbm9kZSB3b3VsZCBub3QgYmUgZm91bmQgZm9yIHRoZXNlIGRldmljZSB0cmVlcy4gIEFkZCB0aGUgYWJpbGl0eSB0byBoYW5kbGUKLSAgICBib3RoIHBhdGhzLiAgSW4gdGhlIGZ1dHVyZSB3ZSBzaG91bGRuJ3QgaGFuZGxlIHN1Y2ggZml4dXBzIGJ5IGV4cGxpY2l0IHBhdGguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgYTMwNjNlZWM3NzU3MTliN2U5MTAyM2JiZWMzZjY0YjMxMTg3OTFkZgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IE9jdCAxMSAwMDoxODo0OCAyMDA3IC0wNTAwCi0KLSAgICBTZXQgT0ZfU1RET1VUX1BBVEggdG8gbWF0Y2ggdGhlIGRlZmF1bHQgY29uc29sZSBvbiBNUEM4NTY4IE1EUwotCi0gICAgT24gdGhlIE1QQzg1NjggTURTIHdlIHVzZSB0dHlTMCwgVUFSVDAsIGV0Yy4gYXMgdGhlIHN0YW5kYXJkIGNvbmZpZ3VyZWQKLSAgICBjb25zb2xlLiAgTWFrZSBpdCBzbyB3ZSBtYXRjaCB0aGF0IGNvbmZpZyB3aGF0IHdlIHRlbGwgTGludXggYXMgdGhlIGVhcmx5Ci0gICAgU1RET1VUIGNvbnNvbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZTFjZTNjYjYxN2JiMDZmOTFmODJmOTg5MTUzOTExNzVhZGRmM2U4MgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVHVlIE9jdCAyIDExOjEyOjI3IDIwMDcgLTA1MDAKLQotICAgIFJlbW92ZSBtYWdpYyBudW1iZXJzIGZyb20gY2FjaGUgcmVsYXRlZCBvcGVyYXRpb25zIGZvciBtcGM4NXh4Ci0KLSAgICBUaGUgbXBjODV4eCBzdGFydCBjb2RlIHVzZXMgc29tZSBtYWdpYyBudW1iZXJzIHRoYXQgd2UgYWN0dWFsbHkKLSAgICBoYXZlICNkZWZpbmVzIGZvciBpbiA8Y29uZmlnLmg+IHNvIHVzZSB0aG9zZSBpbnN0ZWFkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotY29tbWl0IDU0NDFmNjFhM2Q4YjcwMzRmMTlmYzEzNjExODNlOTM2MTk4ZTZkYmIKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglGcmkgT2N0IDE5IDE2OjQ3OjI2IDIwMDcgKzAyMDAKLQotICAgIEZpeCB0d28gdHlwb3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDI4MWRmNDU3YzFhYTUwZDI3NTIxNjVkMGM1YzMyODJkNDAyN2I5NzQKLUF1dGhvcjogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAxOCAxNzo0NzoxOSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBBZGQgY29uZmlndXJlIGVudHJ5IGZvciBNUEM4M3h4IEFUTSBzdXBwb3J0Ci0KLSAgICBBZGQgTVBDODM2MEVNRFNfQVRNX2NvbmZpZyBhbmQgTVBDODMyWEVNRFNfQVRNX2NvbmZpZyBpbnRvCi0gICAgTWFrZmlsZSBhbmQgTUFLRUFMTAotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkMjY0NjU1NGY1MjlhOTU3NzUxNWVjZWIwZWM1ZWNlZWUxODI0NGJhCi1BdXRob3I6IFRvbnkgTGkgPHRvbnkubGlAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMTggMTc6NDQ6MzggMjAwNyArMDgwMAotCi0gICAgbXBjODN4eDogcHEtbWRzLXBpYi5jIHR5cG8gZXJyb3IKLQotICAgIENvcnJlY3QgdG8gdmFsOCBmcm9tIHZhbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRvbnkgTGkgPHRvbnkubGlAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2UxMWFlODBmZWMxZWUxMjE5NDk0MDk1NTQzMTE4NmFiZjYwMDljMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgT2N0IDE3IDE1OjQwOjE5IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIDY2Ny8xMzMgKENQVS9QTEIpIGZyZXF1ZW5jeSBzZXR1cCB0byBTZXF1b2lhIGJvb3RzdHJhcCBjb21tYW5kCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzYzg5ZDc1NDA5ZWIyNjYzOWQzNmRmYTExZDRlZTNkOGI5NjJkYzNjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDE2IDE1OjI3OjQzIDIwMDcgLTA1MDAKLQotICAgIEluaXRpYWwgbXBjODYxMGhwY2QgTWFrZWZpbGUgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1haGVzaCBKYWRlIDxtYWhlc2guamFkZUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk1NTNkZjg2ZDNhMzE5YzNhMWE3Y2RlN2U0ZWRkNmVlYjVhYTY0YzcKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMTYgMTU6MjY6NTEgMjAwNyAtMDUwMAotCi0gICAgSW5pdGlhbCBtcGM4NjEwaHBjZCBjcHUvLCBSRUFETUUgYW5kIGluY2x1ZGUvIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYWhlc2ggSmFkZSA8bWFoZXNoLmphZGVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzZGQyZGI1M2NlYjBkZmY4MGYyNWMyYTA3ZjgzZjI5YjkwN2I0MDNlCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDE2IDEzOjU0OjAxIDIwMDcgLTA1MDAKLQotICAgIEluaXRpYWwgbXBjODYxMGhwY2QgYm9hcmQgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1haGVzaCBKYWRlIDxtYWhlc2guamFkZUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdlZTZiYTFhMDU2ZTQwNjFhYjRjZmRlMzAxMjdlMzMyZTc5NTdhZmQKLUF1dGhvcjogcnVuZXRAaW5ub3ZzeXMuY29tIDxydW5ldEBpbm5vdnN5cy5jb20+Ci1EYXRlOglUdWUgT2N0IDE2IDE0OjUwOjQwIDIwMDcgLTA1MDAKLQotICAgIE1ha2UgTVBDODI2NkFEUyBib2FyZCBjb21waWxlIGFnYWluLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUnVuZXQgVG9yZ2Vyc2VuIDxydW5ldEBpbm5vdnN5cy5jb20+Ci0KLWNvbW1pdCAyNDkxMTY3YzI0NWQ4ZWJlNmYyZGJkOGM0Mjg3YWFhMGQxNGZlOTNhCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXVnIDI3IDEyOjQxOjAzIDIwMDcgLTA1MDAKLQotICAgIDg2eHg6IEFsbG93IGZvciBmZXdlciBERFIgc2xvdHMgcGVyIG1lbW9yeSBjb250cm9sbGVyLgotCi0gICAgQXMgYSBkaXJlY3QgY29ycmVsYXRpb24gZXhpc3RzIGJldHdlZW4gRERSIERJTU0gc2xvdHMKLSAgICBhbmQgU1BEIEVFUFJPTSBhZGRyZXNzZXMgdXNlZCB0byBjb25maWd1cmUgdGhlbSwgdXNlCi0gICAgdGhlIGluZGl2aWR1YWxseSBkZWZpbmVkIFNQRF9FRVBST01fQUREUkVTUyogdmFsdWVzIHRvCi0gICAgZGV0ZXJtaW5lIGlmIGEgRERSIERJTU0gc2xvdCBzaG91bGQgaGF2ZSBpdHMgU1BECi0gICAgY29uZmlndXJhdGlvbiByZWFkIG9yIG5vdC4KLQotICAgIEVmZmVjdGl2ZWx5LCB0aGlzIG5vdyBhbGxvd3MgZm9yIDEgb3IgMiBESU1NIHNsb3RzCi0gICAgcGVyIG1lbW9yeSBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRkNGE5NDVlMTg5YTJmMzg0YzY2NDMyMzE2ZGEyNzg4YTBhYzE2MDcKLUF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgotRGF0ZToJTW9uIE9jdCAxNSAxMTo1OToxNyAyMDA3ICswMjAwCi0KLSAgICBQWEEgVVNCIE9IQ0k6ICJ1c2Igc3RvcCIgaW1wbGVtZW50YXRpb24uCi0KLSAgICBTb21lIFVTQiBrZXlzIG5lZWQgdG8gYmUgc3dpdGNoZWQgb2ZmIGJlZm9yZSBsb2FkaW5nIHRoZSBrZXJuZWwKLSAgICBvdGhlcndpc2UgdGhleSBjYW4gcmVtYWluIGluIGFuIHVuZGVmaW5lZCBzdGF0dXMgd2hpY2ggcHJldmVudHMgdGhlbQotICAgIHRvIGJlIGNvcnJlY3RseSByZWNvZ25pemVkIGJ5IHRoZSBrZXJuZWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBsaW51eC5pdD4KLQotY29tbWl0IGUyZTkzNDQyZTU1OGNmMTUwMGU5Mjg2MWY5OTcxM2IyZjA0NWVhMjIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE9jdCAxNSAxMTozOTowMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBidWcgaW4gSTJDIGJvb3RzdHJhcCB2YWx1ZXMgZm9yIFNlcXVvaWEvUmFpbmllcgotCi0gICAgVGhlIEkyQyBib290c3RyYXAgdmFsdWVzIHRoYXQgY2FuIGJlIHNldHVwIHZpYSB0aGUgImJvb3RzdHJhcCIgY29tbWFuZCwKLSAgICB3ZXJlIHNldHVwIGluY29ycmVjdCByZWdhcmRpbmcgdGhlIGdlbmVyYXRpb24gb2YgdGhlIGludGVybmFsIHN5bmMgUENJCi0gICAgY2xvY2suIFRoZSB2YWx1ZXMgZm9yIFBMQiBjbG9jayA9PSAxMzNNSHogd2VyZSBzbGlnaGx5IGluY29ycmVjdCBhbmQgdGhlCi0gICAgdmFsdWVzIGZvciBQTEIgY2xvY2sgPT0gMTY2TUh6IHdlcmUgdG90YWxseSBpbmNvcnJlY3QuIFRoaXMgY291bGQKLSAgICBsZWFkIHRvIGEgaGFuZ3VwIHVwb24gYm9vdGluZyB3aGlsZSBQQ0kgY29uZmlndXJhdGlvbiBzY2FuLgotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlIGFuZCBjb25maWd1cmVzIHZhbGlkIFBDSSBkaXZpc29yIHZhbHVlcwotICAgIGZvciB0aGUgc3luYyBQQ0kgY2xvY2ssIHdpdGggcmVzcGVjdCB0byB0aGUgcHJvdmlkZWQgZXh0ZXJuYWwgYXN5bmMKLSAgICBQQ0kgZnJlcXVlbmN5LgotCi0gICAgSGVyZSB0aGUgdmFsdWVzIG9mIHRoZSBmb3JtdWxhIGluIHRoZSBjaGFwdGVyIDE0LjIgIlBDSSBjbG9ja2luZyIKLSAgICBmcm9tIHRoZSA0NDBFUHggdXNlcnMgbWFudWFsOgotCi0gICAgQXN5bmNQQ0lDTEsgLSAxTUh6IDw9IFN5bmNQQ0lDbGsgPD0gKDIgKiBBc3luY1BDSUNsaykgLSAxTUh6Ci0KLSAgICAzM01IeiBhc3luYyBQQ0kgZnJlcXVlbmN5OgotICAgIFBMQiA9IDEzMzoKLSAgICA9PgkgICAgMzIgPD0gNDQuMyA8PSA2NQkgICAgKGRpdiA9IDMpCi0KLSAgICBQTEIgPSAxNjY6Ci0gICAgPT4JICAgIDMyIDw9IDU1LjMgPD0gNjUJICAgIChkaXYgPSAzKQotCi0gICAgNjZNSHogYXN5bmMgUENJIGZyZXF1ZW5jeToKLSAgICBQTEIgPSAxMzM6Ci0gICAgPT4JICAgIDY1IDw9IDY2LjUgPD0gMTMyCSAgICAoZGl2ID0gMikKLQotICAgIFBMQiA9IDE2NjoKLSAgICA9PgkgICAgNjUgPD0gODMgPD0gMTMyCSAgICAoZGl2ID0gMikKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDVhNTk1OGI3ZGU3MGFlOTlmMGU3Y2JkNWM5N2VjMTM0NmUwNTE1ODcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE9jdCAxNSAxMToyOTozMyAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBpbmNvcnJlY3QgMzMvNjZNSHogUENJIGNsb2NrIGxvZy1tZXNzYWdlIG9uIFNlcXVvaWEgJiBZb3NlbWl0ZQotCi0gICAgVGhlIEJDU1Igc3RhdHVzIGJpdCBmb3IgdGhlIDY2TUh6IFBDSSBvcGVyYXRpb24gd2FzIGNvcnJlY3RseQotICAgIGFkZHJlc3NlZCAoTVNCL0xTQiBwcm9ibGVtKS4gTm93IHRoZSBjb3JyZWN0IGN1cnJlbnRseSBzZXR1cAotICAgIFBDSSBmcmVxdWVuY3kgaXMgZGlzcGxheWVkIHVwb24gYm9vdHVwLgotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGZpeGVzIHRoaXMgcHJvYmxlbSBvbiBSYWluaWVyICYgWWVsbG93c3RvbmUsIHNpbmNlIHRoZXNlCi0gICAgYm9hcmRzIHVzZSB0aGUgc2FtZSBzb3VjZSBjb2RlIGFzIFNlcXVvaWEgJiBZb3NlbWl0ZSBkby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRhM2FhZDU1Y2JkZTgwYWI2ZTMwMWFhZmE4MmEyYzQxMWFhNTNlZmYKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci1EYXRlOglXZWQgU2VwIDI2IDE3OjU1OjU2IDIwMDcgKzAyMDAKLQotICAgIFRRTTg2ME06IGFkanVzdCBmb3IgZG91YmxlZCBmbGFzaCBzZWN0b3Igc2l6ZS4KLQotICAgIEFkanVzdCBmbGFzaCBtYXAgdG8gc3VwcG9ydCB0aGUgbmV3IFMyOUdMeHhOIChOLVR5cGUpIEZsYXNoZXMgd2l0aAotICAgIGRvdWJsZWQgc2VjdG9yIHNpemUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IDlkMjkyNTBlMmU2MmY0YmYyMGM3YTIwYjQxNzNkODRjNDhmMTFmNWQKLUF1dGhvcjogSmVucyBHZWhybGVpbiA8amVucy5nZWhybGVpbkB0cXMuZGU+Ci1EYXRlOglXZWQgU2VwIDI2IDE3OjU1OjU0IDIwMDcgKzAyMDAKLQotICAgIFRRTTh4eDogRml4IENBTiB0aW1pbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLQotY29tbWl0IGQ0M2U0ODliYWYwMmFmYWU0OTA3Nzc5MWZiMjIzMzJkMjQwZDg2NTYKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci1EYXRlOglUaHUgU2VwIDI3IDE0OjU0OjM2IDIwMDcgKzAyMDAKLQotICAgIFRRTTg2Nk06IGZpeCBTRFJBTSByZWZyZXNoCi0KLSAgICBBdCAxMzMgTUh6IHRoZSBjdXJyZW50IFNEUkFNIHJlZnJlc2ggcmF0ZSBpcyB0b28gZmFzdAotICAgIChtZWFzdXJlZCA0ICogMS4xNyB1cykuCi0gICAgQ0ZHX01BTVJfUFRBIGNoYW5nZXMgZnJvbSAzOSB0byA5Ny4gVGhpcyByZXN1bHQKLSAgICBpbiBhIHJlZnJlc2ggcmF0ZSBvZiA0ICogNy44IHVzIGF0IHRoZSBkZWZhdWx0IGNsb2NrCi0gICAgNTAgTUh6LiBBdCAxMzMgTUh6IHRoZSB2YWx1ZSB3aWxsIGJlIHRoZW4gNCAqIDIuOSB1cy4KLSAgICBUaGlzIGlzIGEgY29tcHJvbWlzZSB1bnRpbCBhIG5ldyBtZXRob2QgaXMgZm91bmQgdG8KLSAgICBhZGp1c3QgdGhlIHJlZnJlc2ggcmF0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgOWVmNTdiYmVlMWM2N2NjMDFkYTIwMjZjMjQyYzQ2OTJkYjMyYmUzNgotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CVdlZCBTZXAgMjYgMTc6NTU6NTUgMjAwNyArMDIwMAotCi0gICAgVFFNODY2TTogYWRqdXN0IGZvciBkb3VibGVkIGZsYXNoIHNlY3RvciBzaXplLgotCi0gICAgQWRqdXN0IGZsYXNoIG1hcCB0byBzdXBwb3J0IHRoZSBuZXcgUzI5R0x4eE4gKE4tVHlwZSkgRmxhc2hlcyB3aXRoCi0gICAgZG91YmxlZCBzZWN0b3Igc2l6ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgZjhiZjkwNDYxZDliYWQyZTZmZWQzMWZjZWJhZjIzNWY2MGRkNjc2MwotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTdW4gT2N0IDE0IDE2OjEyOjI5IDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIFhVUFYyUCBjaGFuZ2UgY29tbWFuZCBoYW5kbGluZwotICAgIGFuZCByZW1vdmUgY29kZSB2aW9sYXRpb24KLQotY29tbWl0IDYzNjQwMDE5ODIyOGQ5Njk4M2MwNjY1N2IxN2Y3NjBmNTk4OTk1OGUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBPY3QgMTQgMDA6MTM6MTkgMjAwNyArMDIwMAotCi0gICAgUHJlcGFyZSBmb3IgMS4zLjAtcmMzIHJlbGVhc2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2OGYxNGY3N2NhNWZlNWY5Y2MwMjVjOGNhZTEwMTY3MWY2MjgzMDlmCi1BdXRob3I6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci1EYXRlOglTYXQgU2VwIDI5IDEzOjQxOjM3IDIwMDcgKzAyMDAKLQotICAgIEZpeCB3YXJuaW5nIGRpZmZlciBpbiBzaWduZWRuZXNzIGluIGNwdS9weGEvbW1jLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplYW4tQ2hyaXN0b3BoZSBQTEFHTklPTC1WSUxMQVJEIDxwbGFnbmlvakBqY3Jvc29mdC5jb20+Ci0KLWNvbW1pdCBmYzE5ZTM2Zjc0MWU4YmM3MjdjMGEzMzAxNzBiM2I1ZGI5MDM5OWVmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgT2N0IDEzIDIzOjUxOjE0IDIwMDcgKzAyMDAKLQotICAgIEZpeCB3YXJuaW5nIGRpZmZlciBpbiBzaWduZWRuZXNzIGluIGJvYXJkL21wbC92Y21hOS92Y21hOS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBkZTc0YjllZWFjY2NhZjBhNDJlNWVjYzlhZTc5YTg4ZjdhMzExMjk2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgT2N0IDEzIDIxOjE1OjM5IDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBTdHlsZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGUxODkzODE1YjA5OTk0MTBkN2EzMjc1ODk2MTFjN2IzOGU5NTI5OWUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBPY3QgMTIgMTU6NDk6MzkgMjAwNyArMDIwMAotCi0gICAgR1AzIFNTQTogZW5hYmxlIFJUQwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDgwMDIwMTIwNDFmMWZmOWY5OTdhNTcyN2FiZTUwMTVmNzBjZDJlNDYKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgT2N0IDkgMTM6NTg6MjQgMjAwNyArMDIwMAotCi0gICAgW2FkczUxMjFdIEVFUFJPTSBzdXBwb3J0IGFkZGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA3YjYyNGFkMjU0Yjk3ZTVhMjVkY2EyMzA0YTM5OGI2NGFlZWRhZmZlCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU2F0IE9jdCA2IDE4OjU1OjM1IDIwMDcgKzAyMDAKLQotICAgIEFWUjMyOiBJbml0aWFsaXplIGJpX2ZsYXNoKiBpbiBib2FyZF9pbml0X3IKLQotICAgIFRoZSBBVFNUSzEwMDAtc3BlY2lmaWMgZmxhc2ggZHJpdmVyIGludGlhbGl6ZXMgYmlfZmxhc2hzdGFydCwKLSAgICBiaV9mbGFzaHNpemUgYW5kIGJpX2ZsYXNob2Zmc2V0LCBidXQgb3RoZXIgZmxhc2ggZHJpdmVycywgbGlrZSB0aGUgQ0ZJCi0gICAgZHJpdmVyLCBkb24ndC4KLQotICAgIEluaXRpYWxpemUgdGhlc2UgaW4gYm9hcmRfaW5pdF9yIGluc3RlYWQgc28gdGhhdCB0aGluZ3Mgd2lsbCBzdGlsbCBiZQotICAgIHNldCB1cCBjb3JyZWN0bHkgd2hlbiB3ZSBzd2l0Y2ggdG8gdGhlIENGSSBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDJiMmE1ODdkNmQzMDc2Mzg3ZDIyYWM3NDBmNDQwNDRiZjQ2ZTJjYjgKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBPY3QgNSAxMDo0MDo1NCAyMDA3ICswMjAwCi0KLSAgICB0cW01MjAwOiBGaXggQ09ORklHX0NNRF9QQ0kgdHlwbyBpbiBib2FyZCBjb25maWcgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA5Mjg2OTE5NWVmODIxMDc1OGQyMTc2MjMwYzBhMzY4OTdhZmQ1MGVkCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgT2N0IDUgMDk6NDY6MDYgMjAwNyArMDIwMAotCi0gICAgQ001MjAwOiBGaXggbWlzc2luZyBudWxsLXRlcm1pbmF0aW9uIGluIGhvc3RuYW1lIG1hbmlwdWxhdGlvbiBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgOWFkZDk4ODRiMWZkZGMzNGNhMTg2ZTAwYTJmODY4Y2NkNWQwMmQ4NwotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVR1ZSBPY3QgMiAxOTowOTowMSAyMDA3ICswMjAwCi0KLSAgICBGaXggbWVtdGVzdCBicmVha2FnZQotCi0gICAgQ0ZHX01FTVRFU1RfU1RBUlQgdXNlcyB3ZWlyZCBtYWdpYyBpbnZvbHZpbmcgZ2QsIHdoaWNoIGZhaWxzIHRvCi0gICAgY29tcGlsZS4gVXNlIGhhcmRjb2RlZCB2YWx1ZXMgaW5zdGVhZCAod2UgYWN0dWFsbHkga25vdyBob3cgbXVjaCBSQU0KLSAgICB3ZSBoYXZlIG9uIGJvYXJkLikKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNzM4ODE1YzBjYzQ0YWEzMjkwOTdmODY4ZGMxZWZjNDllZGU5YzViYQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIgMTE6NDQ6NDYgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBDb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODdjMTgzM2EzOWU5NDRkYjY2Mzg1Mjg2ZmQ1ZTI4ZjliM2ZjZGQ1MAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDIgMTE6NDQ6MTkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBsd21vbjU6IFJlbW92ZSB3YXRjaGRvZyBmb3Igbm93LCBzaW5jZSBub3QgZnVsbHkgdGVzdGVkIHlldAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmRiNjQ3ODQwNjFiZmMzNGY0YmE3MGVmMWQyZmJlNzEzM2I1NTY3MAotQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLURhdGU6CU1vbiBPY3QgMSAwOTo1MTo1MCAyMDA3ICswMjAwCi0KLSAgICBQcm9ncmFtIEVQTEQgdG8gZm9yY2UgZnVsbCBkdXBsZXggbW9kZSBmb3IgUEhZLgotCi0gICAgRVBMRCBmb3JjZXMgbW9kZXMgb2YgUEhZIG9wZXJhdGlvbi4gQnkgZGVmYXVsdCBmdWxsIGR1cGxleCBpcyB0dXJuZWQgb2ZmLgotICAgIFRoaXMgZml4IHR1cm5zIGl0IG9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA3ODVjMTM0NzdiNzdkY2QyZTZjNTEyOGZmZmNkYjRlMTk0M2Y0ODE4Ci1BdXRob3I6IFRpbW8gS2V0b2xhIDx0aW1vLmtldG9sYUBleGVydHVzLmZpPgotRGF0ZToJTW9uIFNlcCAyNCAxNDo1MDozMiAyMDA3ICswMzAwCi0KLSAgICBCdWdmaXg6IFVzZSBvbmx5IG9uZSBQVEQgZm9yIG9uZSBlbmRwb2ludAotCi0gICAgT3JpZ2luYWwgaXNwMTE2eC1oY2QgY29kZSBwcmVwYXJlZCBtdWx0aXBsZSBQVERzIGZvciBsb25nZXIgdGhhbiAxNgotICAgIGJ5dGUgdHJhbnNmZXJzIGZvciBvbmUgZW5kcG9pbnQuIFRoYXQgaXMgdW5uZWNlc3NhcnkgYmVjYXVzZSB0aGUKLSAgICBJU1AxMTZ4IGlzIGFibGUgdG8gc3BsaXQgbG9uZyBkYXRhIGZyb20gb25lIFBURCBpbnRvIG11bHRpcGxlCi0gICAgdHJhbnNhY3Rpb25zIGJhc2VkIG9uIHRoZSBidWZmZXIgc2l6ZSBvZiB0aGUgZW5kcG9pbnQuIEl0IGFsc28gY2F1c2VkCi0gICAgc2VyaW91cyBwcm9ibGVtcyBpZiB0aGUgZW5kcG9pbnQgTkFLZWQgc29tZSBvZiB0aGUgdHJhbnNhY3Rpb25zLiBJbgotICAgIHRoYXQgY2FzZSBJU1AxMTZ4IHdvdWxkbid0IG5vdGljZSB0aGF0IHRoZSBvdGhlciBQVERzIHdlcmUgZm9yIHRoZSBzYW1lCi0gICAgZW5kcG9pbnQgYW5kIHdvdWxkIHRyeSB0aGUgb3RoZXIgUFREcyBwb3NzaWJseSBvdXQgb2Ygb3JkZXIuIFRoYXQgd291bGQKLSAgICBicmVhayB0aGUgd2hvbGUgdHJhbnNmZXIuCi0KLSAgICBUaGlzIHBhdGNoIG1ha2VzIGlzcDExNnhfc3VibWl0X2pvYiB0byB1c2Ugb25lIFBURCBmb3Igb25lIHRyYW5zZmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltbyBLZXRvbGEgPHRpbW8ua2V0b2xhQGV4ZXJ0dXMuZmk+Ci0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IDg2ZWM4NmMwNDMyNmMzOTEzMTc4YTc2NzlhYTkxMGRlMDcxZGE3NWQKLUF1dGhvcjogSmVhbi1DaHJpc3RvcGhlIFBMQUdOSU9MLVZJTExBUkQgPHBsYWduaW9qQGpjcm9zb2Z0LmNvbT4KLURhdGU6CVRodSBTZXAgMjcgMjM6Mjc6NDcgMjAwNyArMDIwMAotCi0gICAgRml4IG1pc3NpbmcgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgb24gQ09ORklHX0xQQzIyOTIgaW4gc2VyaWFsCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWFuLUNocmlzdG9waGUgUExBR05JT0wtVklMTEFSRCA8cGxhZ25pb2pAamNyb3NvZnQuY29tPgotCi1jb21taXQgM2U5NTRiZWI2MTRiNWIxOTBkN2Y0ZjRjM2I2NDE0MzdhMDEzMmUzNQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgU2VwIDExIDE0OjEyOjU1IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogbHdtb241OiBDaGFuZ2UgR1BJTyA1OCB0byBkZWZhdWx0IHRvIGxvdyAod2F0Y2hkb2cgdGVzdCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDE0ODdhZGJkY2Y5NTk0YmIyZWI2ODYzMjVhNmY5NTQwZGFkMWI3MGEKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBTZXAgMjYgMTY6MzU6NTQgMjAwNyAtMDUwMAotCi0gICAgODV4eCBpbyBvdXQgZnVuY3Rpb25zIG5lZWQgc3luYyBhZnRlciB3cml0ZS4KLQotICAgIFRoaXMgZml4ZXMgdGhlIG1jMTQ2ODE4IHJ0Y19yZWFkL3dyaXRlIGZ1bmN0aW9ucyBmb3IgODV4eC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwZDM4ZWZmYzZlMzU5ZTZiMWIwYzc4ZDY2ZThiYzFhNGRjMTVhMmFlCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBTZXAgMjUgMTU6NDg6MDUgMjAwNyAtMDYwMAotCi0gICAgRnBnYTogZml4IGluY29ycmVjdCB0ZXN0IG9mIENGR19GUEdBX1hJTElOWCBtYWNybwotCi0gICAgQ0ZHX0ZQR0FfWElMSU5YIGlzIGEgYml0IHZhbHVlIHVzZWQgdG8gdGVzdCBhZ2FpbnN0IHRoZSB2YWx1ZSBpbgotICAgIENPTkZJR19GUEdBLiAgVGVzdGluZyBmb3IgYSB2YWx1ZSB3aWxsIGFsd2F5cyByZXR1cm4gVFJVRS4JSSBkb24ndAotICAgIHRoaW5rIHRoYXQgaXMgdGhlIGludGVudGlvbiBpbiB0aGlzIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA4NTM2NDNkOGNmMmNhODBjYjJlMjVjNTNhZDVkYzU4MGFiYWZlMTY2Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBTZXAgMjQgMDA6NDE6MzAgMjAwNyArMDIwMAotCi0gICAgW0ZJWF0gY2hhbmdlIGNvbW1hbmQgaGFuZGxpbmcgYW5kIHJlbW92aW5nIGNvZGUgdmlvbGF0aW9uCi0KLWNvbW1pdCBmMjQwMzU2NTA3MDM4ZTVjZTU1ZThhMjRjYjI2MDdlOWVhZTZkMTBjCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBTZXAgMjQgMDA6MzY6MDYgMjAwNyArMDIwMAotCi0gICAgW0ZJWF0gY2hhbmdlIHNldHMgb2YgY29tbWFuZHMKLSAgICBiZWNhdXNlIGNoYW5naW5nIG9mIGNvbW1hbmQgaGFuZGxpbmcgYnJpbmdzCi0gICAgY29tcGlsYXRpb24gcHJvYmxlbXMKLQotY29tbWl0IGNiMWJjNjNiNzVhMjMyNTcxZWI2OWFhMmM4YWE5MTkzMjE2NTU4NDUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIFNlcCAyNCAwMDozMDo0MiAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBFbWFpbCByZXBhcmF0aW9uICYgQ29weXJpZ2h0Ci0gICAgQm90aCBjb2RlcyBhcmUgd3JpdHRlbiBieSBteXNlbGYgd2l0aG91dCBhbnkKLSAgICBzdXBwb3J0IGZyb20gQ1RVCi0KLWNvbW1pdCAwNzMxY2JhZTZjMmZlYWI5M2IyNDRkODNmZDZhNDNmNWNjOWJmODUyCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBTZXAgMjQgMDA6MjU6MTEgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBDaGFuZ2UgbWFjcm8gbmFtZSBmb3IgVWFydExpdGUKLSAgICBiZWNhdXNlIFBvd2VyUEMgNDA1IGNhbiB1c2UgVWFydExpdGUgYXMgY29uc29sZQotCi1jb21taXQgMWMxMTAwZDJmY2Y0NmI5ZDExZGNmNzhkNmU1YWVhNzVlMmU4YjcxNgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gU2VwIDI0IDAwOjIxOjE5IDIwMDcgKzAyMDAKLQotICAgIFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIGRlc2lnbiB3aXRob3V0IGludGVycnVwdCBjb250cm9sbGVyCi0gICAgUG9sbGluZyB0aW1lcgotCi1jb21taXQgMDczMTkzM2VjOGVjNDVkMDJiYTg5YjUyZGY2NzNkNTI2ODczY2RkZQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gU2VwIDI0IDAwOjE5OjQ4IDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIHJlc29sdmUgcHJvYmxlbSB3aXRoIGNwdSB3aXRob3V0IGJhcnJlbCBzaGlmdGVyCi0KLWNvbW1pdCBkYjE0ZDc3OTk1Y2U1MTViNzI4YjE3OGI2M2Y4MmJhYmU2MGUzZDU2Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBTZXAgMjQgMDA6MTg6NDYgMjAwNyArMDIwMAotCi0gICAgW0ZJWF0gcmVwYWlyIGVtYWlsIGFkZHJlc3MKLQotY29tbWl0IDQ4MWQ0MzI4NjE4ODA0YWRkMWY4MThhNmM5NjI5NjEyMWNkMDUyOGUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIFNlcCAyNCAwMDoxNzo0MiAyMDA3ICswMjAwCi0KLSAgICBbRklYXSByZXBhaXIgTUZTTCBjb21tYW5kcwotCi1jb21taXQgYjkwYzA0NWYwMzVjM2NjOWI1ZDJlZGFlZDYwNDhkZmI3NGU0MDc2MwotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gU2VwIDI0IDAwOjA4OjM3IDIwMDcgKzAyMDAKLQotICAgIHN5bmNocm9uaXppdGlvbiB3aXRoIG1haW5saW5lCi0KLWNvbW1pdCBlZGEzZTFlNjYxOWFkMGJlZTk0YWU0YjE2Yzk5ZDg4ZTc3ZTJhZjEzCi1BdXRob3I6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLURhdGU6CVN1biBTZXAgMjMgMDI6NDI6MzggMjAwNyArMDkwMAotCi0gICAgc2g6IEFkZCBzdXBwb3J0IGNvbW1hbmQgb2YgaWRlIHdpdGggc2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IGQ5MWVhNDVkMTVjZjhlMDk4NzQ1NmJkMjExZmZiYjY1MDgyNGI2ZjEKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotRGF0ZToJU3VuIFNlcCAyMyAwMjozODo0MiAyMDA3ICswOTAwCi0KLSAgICBzaDogVXBkYXRlIE1ha2VmaWxlCi0KLSAgICBBZGQgc3VwcG9ydCBNUzc3MjJTRTAxIHRvIE1ha2VmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNmMwYmJkY2NkMzc5ZjVjODcwMmFmOWUwNzY1Mjk0YzJmYjc0NzJhNgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglTdW4gU2VwIDIzIDAyOjMxOjEzIDIwMDcgKzA5MDAKLQotICAgIHNoOiBBZGQgc3VwcG9ydCBSZW5lc2FzIHNoNzcyMiBwcm9jZXNzb3IgYW5kIEhpdGFjaGkgTVM3NzIyU0UwMSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMDQ3Mzc1YmZhNGMzMDUyZmE1MGE3NDhkYTdmZjg5ZTlkYWQzYjM2NAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglTdW4gU2VwIDIzIDAyOjE5OjI0IDIwMDcgKzA5MDAKLQotICAgIHNoOiBVcGRhdGUgTVM3NzUwU0UwMSBwbGF0Zm9ybQotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgNTE2YWQ3NjBkYjM1NTM3NjYyNjdhZGEwMWI3ZDVkNzI3ZmFhNGJiZAotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglTdW4gU2VwIDIzIDAyOjE3OjA4IDIwMDcgKzA5MDAKLQotICAgIHNoOiBSZW1vdmUgY29tbWVudCBvdXQgY29kZSBmcm9tIGluY2x1ZGUvYXNtLXNoL2NwdV9zaDQuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgYjAyYmFkMTI4NjY5ZTU2N2ZjZTg3ZDhkZjgyM2IwNmEwMTQ0YjhkYgotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci1EYXRlOglTdW4gU2VwIDIzIDAyOjEyOjMwIDIwMDcgKzA5MDAKLQotICAgIHNoOiBVcGRhdGUgY29yZSBjb2RlIG9mIFN1cGVySC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KLQotY29tbWl0IDY2ZGNhZDNhOWE1M2UwNzY2ZDkwZTAwODQxMjNiZDg1Mjk1MjJmYjAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBTZXAgMjAgMDA6MDQ6MTQgMjAwNyArMDIwMAotCi0gICAgdjEuMy4wLXJjMgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDEzNWUxOWJjMjc3M2ViY2E0ODdlOWE4MzcxZjY3ZTFiYTIwMjMxM2EKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBTZXAgMTggMjE6MzY6MzUgMjAwNyArMDIwMAotCi0gICAgQXZvaWQgY29tcGlsZXIgd2FybmluZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA4YTc4M2E2NTg1MWJjNzQyMWFiNjlmNDQyMjYxMjE1ZTIxYjg4OTFhCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBTZXAgMTggMTI6MjQ6NTcgMjAwNyAtMDYwMAotCi0gICAgQnVnZml4OiByZW1vdmUgZW1iZWRkZWQgbnVsbCAoXDApIGZyb20gQ0ZHX0JPT1RGSUxFIG1hY3JvIGluIFRRTTg1NDBfY29uZmlnCi0KLSAgICAvYmluL2Jhc2ggYW5kIC9iaW4vZGFzaCAod2hpY2ggL2Jpbi9zaCBpcyBsaW5rZWQgdG8gb24gdWJ1bnR1KSBoYW5kbGUgZW1iZWRkZWQKLSAgICBudWxscyBpbiBhIHN0cmluZyBkaWZmZXJlbnRseS4gIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIHN0YXRlbWVudDoKLQllY2hvICJ0aGlzIGlzIGEgc3RyaW5nXDAiID4gYWZpbGUKLSAgICBXaWxsIHByb2R1Y2UgdGhlIGZvbGxvd2luZyB3aXRoIC9iaW4vYmFzaDoKLQkidGhpcyBpcyBhIHN0cmluZ1wwIgotICAgIEJ1dCB3aXRoIC9iaW4vZGFzaCwgd2lsbCBwcm9kdWNlOgotCSJ0aGlzIGlzIGEgc3RyaW5nCi0KLSAgICBCdWcgZml4ZWQgYnkgbW92aW5nIHRoZSBlbWJlZGRlZCBudWxsIG91dCBvZiB0aGUgbWFrZWZpbGUgYW5kIGludG8gdGhlCi0gICAgY29uZmlnIGhlYWRlci4gIEFsc28gcmVuYW1lZCB0aGUgbWFjcm8gdG8gYXZvaWQgdXNhZ2UgY29saXNpb24gd2l0aCB0aGUgc2FtZQotICAgIG1hY3JvIHVzZWQgYnkgb3RoZXIgYm9hcmQgcG9ydHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBmOGQzY2E3YjZmYTMyMmFjNTdlOGU4MzFmMDdkYmVlYTAzOWE5ZjM1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgU2VwIDE4IDE3OjQwOjI3IDIwMDcgKzAyMDAKLQotICAgIE1DQzIwMDogZml4IGJ1aWxkIHdhcm5pbmcKLQotICAgIFRoZSBNQ0MyMDAgYm9hcmQgY29uZmlnIGZpbGUgaW5jbHVkZXMgdmVyc2lvbi5oIGZvciBzb21lIGN1c3RvbWVyLQotICAgIHNwZWNpZmljIHNldHRpbmcsIHdoaWNoIGNhdXNlcyB3YXJuaW5ncyB3aXRoICJtYWtlIGRlcGVuZCI7IGJ1aWxkCi0gICAgdmVyc2lvbi5oIGJlZm9yZSBkZXBlbmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgYmQ4NjIyMGY1OGI5OWQ2ODk2MTk4YzM4NWZkYTEzMmYwYzk4MDkxNQotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJVHVlIFNlcCAxOCAxMzowNzo1NCAyMDA3ICswMTAwCi0KLSAgICBNb3ZlIGNvbG91cmVkIGxlZCBBUEkgdG8gc3RhdHVzX2xlZC5oCi0gICAgSW1wcm92ZSBpbmRlbnRhdGlvbiBpbiBkcml2ZXJzL2F0NDUuYwotCi1jb21taXQgZTgwZTU4NWIwMGZiYmFiN2FkMWJmNzE2MTk3NDFmMmM1YjAyOWFiNwotQXV0aG9yOiBFaXJpayBBYW5vbnNlbiA8ZWFhQHdwcm1lZGljYWwuY29tPgotRGF0ZToJVHVlIFNlcCAxOCAwODo0NzoyMCAyMDA3ICswMjAwCi0KLSAgICBVcGRhdGUgYXRzdGsxMDAyIGJvb3RhcmdzLgotCi0gICAgVXBkYXRlcyB0byBhdHN0azEwMDIgVS1Cb290IGhlYWRlciBmaWxlOgotICAgIC0gQ2hhbmdlZCBib290YXJnczoKLQkqIFNldCB0aGUgYm9vdGFyZ3MgZm9yIGF0MTAwMiB0byBwb2ludCB0byB0aGUgU0QtY2FyZCBwYXJ0aXRpb24gaW5zdGVhZAotCSogLi4uIG9mIHRoZSBib290IGZsYXNoLgotCSogUmVtb3ZpbmcgdGhlIHJvb3Rmc3R5cGUgc2luY2UgdGhhdCBhcmd1bWVudCBhcmUgbm90IG5lZWRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVpcmlrIEFhbm9uc2VuIDxlYWFAd3BybWVkaWNhbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBhNGYzYWFiNmRmYmVkNmMyOTM2N2M2ODhiZmI4YTQ3ZWVmNjJjMjI1Ci1BdXRob3I6IEVpcmlrIEFhbm9uc2VuIDxlYWFAd3BybWVkaWNhbC5jb20+Ci1EYXRlOglXZWQgU2VwIDEyIDEzOjMyOjM3IDIwMDcgKzAyMDAKLQotICAgIEFkZCBzb21lIGNvbW1lbnRzIHRvIGNsb2NrcyBpbiBhdHN0azEwMDIuaAotCi0gICAgVGhpcyBwYXRjaCBhcHBsaWVzIHNvbWUgY2xhcmlmeWluZyBjb21tZW50cyB0byBob3cgdGhlIGRpZmZlcmVudAotICAgIGNsb2NrcyBhcmUgc2V0dXAgYWNjb3JkaW5nIHRvIGF0c3RrMTAwMi5oIFNvbWUgb2YgdGhlIHByZXZpb3VzCi0gICAgY29tbWVudHMgd2hlcmUgc3RhdGluZyB3cm9uZ2Z1bCBpbmZvcm1hdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgOTcyMTNmMzI0MTZlYWQ4ODVkZWFmZWE4Njc3NGU5MTJmZmQ2MGFkMAotQXV0aG9yOiBEYXZpZCBTYWFkYSA8RGF2aWQuU2FhZGFAZWNpdGVsZS5jb20+Ci1EYXRlOglNb24gU2VwIDE3IDE3OjA0OjQ3IDIwMDcgKzAyMDAKLQotICAgIERlc2NyaXB0aW9uOiBBZGQgTkVDJ3MgUENJIE9IQ0kgbW9kdWxlIElEIHRvIHRoZSBVU0IgT0hDSSBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmlkIFNhYWRhIDxkYXZpZC5zYWFkYUBlY2l0ZWxlLmNvbT4KLQotY29tbWl0IDMwMzYzZTk4ZmE0NzBmYmVjZWE1ZThiYzBmMTQ0MzM1Mjc1NGYzMDMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIFNlcCAxNyAwODoyMDo0NyAyMDA3ICswMjAwCi0KLSAgICBTbWFsbCB3aGl0ZXNwYWNlIGNsZWFudXAgb2YgT25lTkFORCBwYXRjaAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDdlOGNlMTAxYTRhNDVlZDZlZDQ1NzM5ZmMyZGU1Zjg3YjEzZjdmMQotQXV0aG9yOiBLeXVuZ21pbiBQYXJrIDxrbXBhcmtAaW5mcmFkZWFkLm9yZz4KLURhdGU6CU1vbiBTZXAgMTAgMTc6MTU6MTQgMjAwNyArMDkwMAotCi0gICAgT25lTkFORCBzdXBwb3J0ICh0YWtlICMyKQotCi0gICAgW1BBVENIIDMvM10gT25lTkFORCBzdXBwb3J0ICh0YWtlICMyKQotCi0gICAgT25lTkFORCBzdXBwb3J0IGF0IFUtQm9vdAotCi0gICAgU2lnbmVkLW9mZi1ieTogS3l1bmdtaW4gUGFyayA8a3l1bmdtaW4ucGFya0BzYW1zdW5nLmNvbT4KLQotY29tbWl0IDE3YWEyODAwNDU3ZGYwYzA2YjQxNTE2ZjQ2ZjEyNjcxMmMxOTYyMTkKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+Ci1EYXRlOglNb24gU2VwIDEwIDE3OjE0OjM0IDIwMDcgKzA5MDAKLQotICAgIE9uZU5BTkQgc3VwcG9ydCAodGFrZSAjMikKLQotICAgIFtQQVRDSCAyLzNdIE9uZU5BTkQgc3VwcG9ydCAodGFrZSAjMikKLQotICAgIE9uZU5BTkQgc3VwcG9ydCBhdCBVLUJvb3QKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt5dW5nbWluIFBhcmsgPGt5dW5nbWluLnBhcmtAc2Ftc3VuZy5jb20+Ci0KLWNvbW1pdCA5MTY1MjdmNDgwOWE3YmNkODExZjFmMWRhZjM0YWYxODRlMzFkZDhjCi1BdXRob3I6IEt5dW5nbWluIFBhcmsgPGttcGFya0BpbmZyYWRlYWQub3JnPgotRGF0ZToJTW9uIFNlcCAxMCAxNzoxMzo0OSAyMDA3ICswOTAwCi0KLSAgICBPbmVOQU5EIHN1cHBvcnQgKHRha2UgIzIpCi0KLSAgICBbUEFUQ0ggMS8zXSBPbmVOQU5EIHN1cHBvcnQgKHRha2UgIzIpCi0KLSAgICBPbmVOQU5EIHN1cHBvcnQgYXQgVS1Cb290Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgYjQ5YzkwZGY2ZTdjZmNmYjhiODYyYjhiYmY4NDQ4ZGZmNWVlZDlhNQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTdW4gU2VwIDE2IDIwOjUxOjU3IDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIHJlbW92ZSBmaWxlcyBmb3JtIHJlcG9zaXRvcnkKLQotY29tbWl0IDY3YzMxMDM2YWNhYWFhOTkyZmMzNDZjYzg5ZGIwOTA5YTdlNzMzYzQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBTZXAgMTYgMTc6MTA6MDQgMjAwNyArMDIwMAotCi0gICAgVFFNOHh4W0xNXTogRml4IGJyb2tlbiBlbnZpcm9ubWVudCBhbGlnbm1lbnQuCi0KLSAgICBXaXRoIHJlY2VudCB0b29sY2hhaW5zLCB0aGUgZW52aXJvbm1lbnQgc2VjdG9ycyB3ZXJlIG5vIGxvbmdlciBhbGlnbmVkIHRvCi0gICAgc2VjdG9yIGJvdW5kYXJpZXMuIFRoZSByZWFzb24gd2FzIGEgY29tYmluYXRpb24gb2YgdHdvIGJ1Z3M6Ci0KLSAgICAxKSBjb21tb24vZW52aXJvbm1lbnQuYyBhc3N1bWVkIHRoYXQgQ09ORklHX1RRTTh4eEwgd291bGQgYmUgZGVmaW5lZAotICAgICAgIGZvciBhbGwgVFFNOHh4TCBhbmQgVFFNOHh4TSBib2FyZHMuIEJ1dCAiaW5jbHVkZS9jb21tb24uaCIsIHdoZXJlCi0gICAgICAgdGhpcyBnZXRzIGRlZmluZWQsIGlzIG5vdCBpbmNsdWRlZCBoZXJlIChhbmQgY2Fubm90IGJlIGluY2x1ZGVkCi0gICAgICAgd2l0aG91dCBjYXVzaW5nIGxvdHMgb2YgcHJvYmxlbXMpLgotCi0gICAgICAgQWRkZWQgYSBuZXcgI2RlZmluZSBDRkdfVVNFX1BQQ0VOViBmb3IgYWxsIGJvYXJkcyB3aGljaCByZWFsbHkKLSAgICAgICB3YW50IHRvIHB1dCB0aGUgZW52aXJvbm1lbnQgaXMgYSAiLnBwY2VudiIgc2VjdGlvbi4KLQotICAgIDIpIFRoZSBsaW5rZXIgc2NyaXB0cyBqdXN0IGluY2x1ZGUgZW52aXJvbm1lbnQubywgc2lsZW50bHkgYXNzdW1pbmcKLSAgICAgICB0aGF0IHRoZSBvYmplY3RzIGluIHRoYXQgZmlsZSBhcmUgcmVhbGx5IGluIHRoZSBvcmRlciBpbiB3aGljaAotICAgICAgIHRoZXkgYXJlIGNvZGVkIGluIHRoZSBDIGZpbGUsIGkuIGUuICJlbnZpcm9ubWVudCIgZmlyc3QsIHRoZW4KLSAgICAgICAicmVkdW5kYW5kX2Vudmlyb25tZW50IiwgYW5kICJlbnZfc2l6ZSIgbGFzdC4gSG93ZXZlciwgY3VycmVudAotICAgICAgIHRvb2xjaGFpbnMgKEdDQy00LngpIHJlb3JkZXIgdGhlIG9iamVjdHMsIGNhdXNpbmcgdGhlIGVudmlyb25tZW50Ci0gICAgICAgZGF0YSBub3QgdG8gc3RhcnQgb24gYSBmbGFzaCBzZWN0b3IgYm91bmRhcnk6Ci0KLSAgICAgICBJbnN0ZWFkIG9mOgkJCQkJd2UgZ290OgotCi0JNDAwMDgwMDAgVCBlbnZpcm9ubWVudAkJCTQwMDA4MDAwIFQgZW52X3NpemUKLQk0MDAwYzAwMCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAk0MDAwODAwNCBUIHJlZHVuZGFuZF9lbnZpcm9ubWVudAotCTQwMDEwMDAwIFQgZW52X3NpemUJCQk0MDAwYzAwNCBUIGVudmlyb25tZW50Ci0KLSAgICAgICBOb3RlOiB0aGlzIHBhdGNoIGZpeGVzIGp1c3QgdGhlIGZpcnN0IHBhcnQsIGFuZCBjdXJlcyB0aGUgYWxpZ25tZW50Ci0gICAgICAgcHJvYmxlbSBieSBtYWtpbmcgc3VyZSB0aGF0ICJlbnZfc2l6ZSIgZ2V0cyBwbGFjZWQgY29ycmVjdGx5LiBIb3dldmVyLAotICAgICAgIHdlIHN0aWxsIGhhdmUgYSBwb3RlbnRpYWwgaXNzdWUgYmVjYXVzZSBwcmltYXJ5IGFuZCByZWR1bmRhbnQKLSAgICAgICBlbnZpcm9ubWVudCBzZWN0b3JzIGFyZSBhY3R1YWxseSBzd2FwcGVkLCBpLiBlLiB3ZSBoYXZlIG5vdzoKLQotCTQwMDA4MDAwIFQgcmVkdW5kYW5kX2Vudmlyb25tZW50Ci0JNDAwMGMwMDAgVCBlbnZpcm9ubWVudAotCTQwMDEwMDAwIFQgZW52X3NpemUKLQotICAgICAgIFRoaXMgc2hhbGwgYmUgZml4ZWQgaW4gdGhlIG5leHQgdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlYjZkYTgwNTA3OTdjMjA0YzlkMDEwNTQ4NDI0MTg2YzdjZTMyZmMxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gU2VwIDE2IDAyOjM5OjM1IDIwMDcgKzAyMDAKLQotICAgIFRRTTh4eC9GUFM4eHg6IGFkanVzdCBmbGFzaCBwYXJ0aXRpb25zIGZvciAyLjYgQVJDSD1wb3dlcnBjIGtlcm5lbHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBjZDJkMTYwMmM1NGNjNjk1N2JkZWYzODcyMjcyYTRiMjY0ODkzOTYwCi1BdXRob3I6IHVyd2l0aHN1Z2hvc2hAZ21haWwuY29tIDx1cndpdGhzdWdob3NoQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBTZXAgMTAgMTQ6NTQ6NTYgMjAwNyAtMDQwMAotCi0gICAgVHlwbyBmaXggaW4gdHNlYy5jCi0KLSAgICBGaXh1cCBmb3IgdGhlIGJyZWFrIHN0YXRlbWVudCBpbiB3cm9uZyBwbGFjZS4KLQotICAgIFtQYXRjaCBieSB1cndpdGhzdWdob3NoQGdtYWlsLmNvbV0KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6CVdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1YmQ3ZmU5YWViNzY5MDYzNzFmNDBiOGZkMDc2MTNmMTA5MjJlM2U3Ci1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJVHVlIFNlcCAxMSAxNzowNDowMCAyMDA3ICswMjAwCi0KLSAgICBGaXggZG9fZGl2KCkgdXNhZ2UgaW4gbmFuZCBwcm9jZXNzIG91dHB1dAotCi0gICAgRml4IHVzYWdlIG9mIGRvX2RpdigpIGluIG5hbmQgZXJhc2V8cmVhZHx3cml0ZSBwcm9jZXNzIG91dHB1dC4KLQotICAgIFRoZSBsYXN0IHBhdGNoIHRvIG5hbmRfdXRpbC5jIGludHJvZHVjZWQgZG9fZGl2KCkgaW5zdGVhZCBvZiBsaWJnY2MncwotICAgIGltcGxlbWVudGF0aW9uLiBCdXQgZG9fZGl2KCkgcmV0dXJucyB0aGUgcXVvdGllbnQgaW4gaXRzIGZpcnN0Ci0gICAgbWFjcm8gcGFyYW1ldGVyIGFuZCBub3QgYXMgcmVzdWx0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBjNzUwZDJlNjY5MmEwMDBhODJmMjlkZTdiZjI0ZTNkYzIxMjM5MTYxCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJV2VkIFNlcCAxMiAxMjozNjo1MyAyMDA3ICswMjAwCi0KLSAgICBOQU5EOiBBZGQgQ0ZHX05BTkRfUVVJRVQgb3B0aW9uCi0KLSAgICBUaGlzIGNvbmZpZyBvcHRpb24gc2V0cyB0aGUgZGVmYXVsdCBmb3IgdGhlIHByb2dyZXNzIGluZm9ybWF0aW9uCi0gICAgb3V0cHV0IGJlaGF2aW9yIHRoYXQgY2FuIGFsc28gYmUgY29uZmlndXJlZCB0aHJvdWdoIHRoZSAncXVpZXQnCi0gICAgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICBUaGUgbGVnYWN5IE5BTkQgY29kZSBkb2VzIG5vdCBwcmludCB0aGUgY3VycmVudCBwcm9ncmVzcyBpbmZvCi0gICAgb24gdGhlIGNvbnNvbGUuIFNvIHRoaXMgb3B0aW9uIGlzIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IGZvcgotICAgIHVuaXRzIHRoYXQgYXJlIGluIHRoZSBmaWVsZCBhbmQgd2hlcmUgc2V0dGluZyB0aGUgcXVpZXQgdmFyaWFibGUKLSAgICBpcyBub3QgYW4gb3B0aW9uLiBXaXRoIENGR19OQU5EX1FVSUVUIHNldCB0byAnMScgdGhlIGNvbnNvbGUKLSAgICBwcm9ncmVzcyBpbmZvIGlzIHR1cm5lZCBvZmYuIFRoaXMgY2FuIHN0aWxsIGJlIG92ZXJ3cml0dGVuCi0gICAgdGhyb3VnaCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGRjYjg4NjMwMjkwZDJiY2Q4MDMzODZkZDRjMmJlNzMxNDI5OTRjNGYKLUF1dGhvcjogTGlldyBUc2kgQ2h1bmctcjVhYWhwIDxUc2ktY2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IFNlcCAxMyAxNjowNjowNSAyMDA3IC0wNzAwCi0KLSAgICBDb2xkRmlyZTogZml4IGJ1aWxkIGVycm9yIGJlY2FzdWUgb2YgYmFkIHR5cGUgb2YgbWlpX2luaXQoKQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzE0ZDViNmNlNTJhNGVkMTlkZDI5NWQxMzY0ZTI0NmM1ZTYwNTAxNwotQXV0aG9yOiBMaWV3IFRzaSBDaHVuZy1yNWFhaHAgPFRzaS1jaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgU2VwIDEzIDE2OjA0OjA1IDIwMDcgLTA3MDAKLQotICAgIENvbGRGaXJlOiBGaXggYnVpbGQgZXJyb3IgY2F1c2VkIGJ5IHBpeGlzLmMKLQotICAgIE1vdmVkIHRoZSAjaW5jbHVkZSA8YXNtL2NhY2hlLmg+IGluc2lkZSB0aGUgI2lmZGVmIENPTkZJR19GU0xfUElYSVMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlMjE2NTllMzA2NjBhMTM3N2M0MmFmMTM1YTYxMTRlZmUzOTgwMWQ5Ci1BdXRob3I6IFNhbSBTcGFya3MgPFNTcGFya3NAdHdhY3MuY29tPgotRGF0ZToJRnJpIFNlcCAxNCAxMToxNDo0MiAyMDA3IC0wNjAwCi0KLSAgICBVcGRhdGUgTVBDODM0OUlUWCpfY29uZmlnIHRvIHBsYWNlIGNvbmZpZy50bXAgaW4gcmlnaHQgcGxhY2UuCi0KLSAgICBNUEM4MzRJVFgqX2NvbmZpZyBkb2VzIG5vdCBzdG9yZSBjb25maWcudG1wIGF0IHRoZSBjb3JyZWN0IGxvY2F0YXRpb24sCi0gICAgY2F1c2luZyBNUEM4MzQ5SVRYR1AgdG8gaGF2ZSB0aGUgd3JvbmcgVEVYVF9CQVNFLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU2FtIFNwYXJrcyA8U1NwYXJrc0B0d2Fjcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgMTIxOGFiZjFiNTgxN2EzOWE4MjM5OWI0YjkyOGIwMDc1MDU3NWJkYQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IFNlcCAxNSAyMDo0ODo0MSAyMDA3ICswMjAwCi0KLSAgICBGaXggY2FzZXMgd2hlcmUgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgd2FzIG5vdCBkZWNsYXJlZCBhcyBnbG9iYWwKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2NmIzZjI0ZDY2NWJlNjc4YTlkYmIxMjViMWU4NDE4NTQwMGY2M2I1Ci1BdXRob3I6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ29vZ2xlbWFpbC5jb20+Ci1EYXRlOglTYXQgU2VwIDE1IDExOjU1OjQyIDIwMDcgKzAyMDAKLQotICAgIE1ha2UgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIgZ2xvYmFsIGZvciBEYVZpbmNpCi0KLSAgICBBcyBkaXNjdXNzZWQgaW4gWzFdLCBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUiBoYXMgdG8gYmUgZ2xvYmFsIGFuZCBub3QKLSAgICBmdW5jdGlvbiBsb2NhbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgotCi0gICAgWzFdIGh0dHA6Ly9hcnRpY2xlLmdtYW5lLm9yZy9nbWFuZS5jb21wLmJvb3QtbG9hZGVycy51LWJvb3QvMzE4MDUKLQotY29tbWl0IDk5MWIwODlkMWNlNWFkOTQ1NzI1ZTM2NTdhOGYxMDZkZmEwMmEzOGUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJU2F0IFNlcCAxNSAwMDowMzozNSAyMDA3ICswMjAwCi0KLSAgICBTeW5jaHJvbml6ZSB3aXRoIFUtQk9PVCBtYWlubGluZQotCi1jb21taXQgZDdmZWUzMmI3ZTYxZmUxMWM2NGUzNzFjZGU3OWZhYTQ3NjhlODM1MAotQXV0aG9yOiBTYW0gU3BhcmtzIDxTU3BhcmtzQHR3YWNzLmNvbT4KLURhdGU6CUZyaSBTZXAgMTQgMTE6MTQ6NDIgMjAwNyAtMDYwMAotCi0gICAgVXBkYXRlIE1QQzgzNDlJVFgqX2NvbmZpZyB0byBwbGFjZSBjb25maWcudG1wIGluIHJpZ2h0IHBsYWNlLgotCi0gICAgTVBDODM0SVRYKl9jb25maWcgZG9lcyBub3Qgc3RvcmUgY29uZmlnLnRtcCBhdCB0aGUgY29ycmVjdCBsb2NhdGF0aW9uLAotICAgIGNhdXNpbmcgTVBDODM0OUlUWEdQIHRvIGhhdmUgdGhlIHdyb25nIFRFWFRfQkFTRS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbSBTcGFya3MgPFNTcGFya3NAdHdhY3MuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNmU3YjdiNmVhMWI2ZDA0ZGJlOTYyNDJlYjZhMGMxYzY2NGM5OGU4YwotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IFNlcCAxMyAxODoyMTo0OCAyMDA3ICswMjAwCi0KLSAgICBjbTUyMDA6IEZpeCBhIHR5cG8gaW50cm9kdWNlZCBieSBhZmFhYzg2ZmUyOTQ4YWM4NGNkOWExMmJiZWQ4ODNiM2M2ODNlN2Q5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJpYW4gQmFsYWtvd2ljeiA8bThAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZTFmNjAxYjU3MmRiNWRlOWFhODFhMGI3N2M2OGE4Njk5NGZlMjRjNAotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IFNlcCAxMyAxNjozMzo1OSAyMDA3ICswMjAwCi0KLSAgICB0cW01MjAwOiBSZXN0b3JlIGN1c3RvbWFyeSBlbnYuIHZhcmlhYmxlIGJvb3QgY29tbWFuZHMgZm9yIHBvd2VycGMga2VybmVscwotCi0gICAgLSB1cGRhdGUgZGVmYXVsdCBkZWZpbml0aW9ucyBvZiBrZXJuZWxfYWRkciBhbmQgZmR0X2FkZHIgZW52LiB2YXJpYWJsZXMKLSAgICAtIG1ha2UgYXJjaC9wb3dlcnBjIGJvb3RpbmcgdGhlIGRlZmF1bHQgc2NlbmFyaW8KLSAgICAtIHVwZGF0ZSBNVEQgcGFydGl0aW9uIGxheW91dCB0byBtYXRjaCB0aGUgYWJvdmUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBmMzQwMjRkNGEzMjhlNmVkZDkwNjQ1NmRhOThkMmM1MzcxNTVjNGY3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgU2VwIDEyIDAwOjQ4OjU3IDIwMDcgKzAyMDAKLQotICAgIEZpeCBtZW1vcnkgY29ycnVwdGlvbiBwcm9ibGVtIG9uIFNUWCBHUDMgU1NBIEJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQ5NGM3OWU0NzAxMWFmNWU4ZGQxMGVkNjE2M2MwOWI0Y2ZjNzQzY2MKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CVR1ZSBTZXAgMTEgMTU6MzU6MDEgMjAwNyArMDEwMAotCi0gICAgRmluYWwgdGlkeQotCi1jb21taXQgMzhhZDgyZGEwYzExODBlY2RlYjIxMmE4ZjQyNDVlOTQ1YmNjNTQ2ZQotQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBTZXAgMTEgMTU6NDI6MTEgMjAwNyArMDIwMAotCi0gICAgW0dQM1NTQV0gQWRkIGRlZmluZSBDT05GSUdfTVBDODVYWF9QQ0kyIGluIGNvbmZpZyBmaWxlIHRvIGFsbG93IHUtYm9vdCB0bwotICAgIHNjYW4gb24gc2Vjb25kIHBjaSBidXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDZjMmY0ZjM4OGU4MTgxNjU1ZWE4YjY5MzQzZWEwMGI2OGFhNmU4ZDAKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgU2VwIDExIDEyOjU3OjUyIDIwMDcgKzAyMDAKLQotICAgIFtwcGM0eHhdIEluZGl2aWR1YWwgaGFuZGxpbmcgb2Ygc2RyYW0uYyBmb3IgYmFtYm9vX25hbmQgYnVpbGQKLQotICAgIEJhbWJvbyBoYXMgYSBmaWxlIHNkcmFtLmMgd2hpY2ggbmVlZHMgc3BlY2lhbCB0cmVhdG1lbnQgd2hlbiBidWlsZGluZyBpbgotICAgIHNlcGFyYXRlIGRpcmVjdG9yeS4gSXQgaGFzIHRvIGJlIGxpbmtlZCB0byBidWlsZCBkaXJlY3Rvcnkgb3RoZXJ3aXNlIGl0IGlzCi0gICAgbm90IHNlZW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGQ0NTk2Mzg1NGVmZjM5ZDU3NTEyNGQ4NTk0MTliYjQ5NTNjZTJjODcKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJVHVlIFNlcCAxMSAwMDozNzowNCAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBNaWNyb2JsYXplIE1MNDAxIC0gcmVwYXJlIEZMQVNIIGhhbmRsaW5nCi0KLWNvbW1pdCAzOGMxZWY3MjhkMTk5NTA0MTRhOGFiMWNjZmM1Mzc2Nzg0OGZhMzQ2Ci1BdXRob3I6IFNlYW4gTUNHT09HQU4gPHNlYW4ubWNnb29nYW5Ac3QuY29tPgotRGF0ZToJTW9uIFNlcCAxMCAxNjo1NTo1OSAyMDA3ICswMTAwCi0KLSAgICBBbGxvY2F0ZSBDUFUgQXJjaGl0ZWN0dXJlIENvZGUgZm9yIFNUTWljcm9lbGVjdHJvbmljcycgU1QyMDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZWFuIE1jR29vZ2FuIDxTZWFuLk1jR29vZ2FuQHN0LmNvbT4KLSAgICAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLQotY29tbWl0IDc1NGJhYzQ4MTU2Zjg5NThkOGY2YTUzYTUxZWRhODhhYjU3NTg5MjkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBTZXAgMTAgMjA6NDI6MzEgMjAwNyArMDIwMAotCi0gICAgVXBkYXRlIHZlcnNpb24gdG8gbWF0Y2ggY3VycmVudCBzdGF0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA3YTg4OGQ2YjNjMzJhMTI2ZGJiNTA0ZWYxNDZiYjRjMjY1NzRjYTdiCi1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJTW9uIFNlcCAxMCAxNzozOTowOCAyMDA3ICswMjAwCi0KLSAgICBbTVBDNTEyeF0gU3RyZWFtbGluZSBmcmFtZSBoYW5kbGluZyBpbiB0aGUgRkVDIGRyaXZlcgotCi0gICAgLSBjb252ZXJ0IGZyYW1lIHNpemUgc2V0dGluZ3MgdG8gYmUgZGVyaXZlZCBmcm9tIGEgc2luZ2xlIGJhc2UKLSAgICAtIHNldCBmcmFtZSBzaXplIHRvIHRoZSByZWNvbW1lbmRlZCBkZWZhdWx0IHZhbHVlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGUyNTFlMDBkMGRiNGIzNmQxZDJiN2UzOGZlYzQzYTcyOTZiNTI5YTIKLUF1dGhvcjogS3l1bmdtaW4gUGFyayA8a21wYXJrQGluZnJhZGVhZC5vcmc+Ci1EYXRlOglNb24gU2VwIDEwIDExOjM0OjAwIDIwMDcgKzA5MDAKLQotICAgIFJlbW92ZSBjb21waWxlciB3YXJuaW5nOiB0YXJnZXQgQ1BVIGRvZXMgbm90IHN1cHBvcnQgaW50ZXJ3b3JraW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLeXVuZ21pbiBQYXJrIDxreXVuZ21pbi5wYXJrQHNhbXN1bmcuY29tPgotCi1jb21taXQgMWQ5ZTMxZTA0OTExYTZiYjdjYzY2ZGQ5MTEzMmM2OTkxMDFjMzJlMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIFNlcCA5IDIxOjIxOjMzIDIwMDcgKzAyMDAKLQotICAgIEZpeCBjb21waWxlIGVycm9yIGluIHNwYzE5MjAgY29uZmlnLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YvxjaGVyIDxta0BkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhN2Q3ZWNhNzkxYTM3ZjQ1MmM5ZGExMGZlZjRiMzFkZDdhYTlhNjIyCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CUZyaSBTZXAgNyAwOToyNTowNyAyMDA3IC0wNjAwCi0KLSAgICBCdWdmaXg6IG1ha2UgYm9vdG0rbGliZmR0IGNvbXBpbGUgb24gYm9hcmRzIHdpdGggbm8gZmxhc2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDZlZmMxZmMwYjYzZTU1Zjk0YzViYzYxZDhkZDIzYzkxOGUzYmM3NzgKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgU2VwIDcgMTg6MzU6MzcgMjAwNyArMDIwMAotCi0gICAgW1BQQzQ0MFNQZV0gUENJZSBlbnZpcm9ubWVudCBzZXR0aW5ncyBmb3IgS2F0bWFpIGFuZCBZdWNjYQotCi0gICAgLSAncGNpY29uZmlnaG9zdCcgaXMgc2V0IGJ5IGRlZmF1bHQgaW4gb3JkZXIgdG8gYmUgYWJsZSB0byBzY2FuIGJyaWRnZXMKLSAgICBiZWhpbmQgdGhlIHByaW1hcnkgaG9zdC9QQ0llCi0KLSAgICAtICdwY2lzY2FuZGVsYXknIGVudiB2YXJpYWJsZSBpcyByZWNvZ25pemVkIHRvIGFsbG93IGZvciB1c2VyLWNvbnRyb2xsZWQKLSAgICBkZWxheSBiZWZvcmUgdGhlIFBDSWUgYnVzIGVudW1lcmF0aW9uOyBzb21lIHBlcmlwaGVyYWwgZGV2aWNlcyByZXF1aXJlIGEKLSAgICBzaWduaWZpY2FudCBkZWxheSBiZWZvcmUgdGhleSBjYW4gYmUgc2Nhbm5lZCAoZS5nLiBMU0k4NDA4RSk7IHdpdGhvdXQgdGhlCi0gICAgZGVsYXkgdGhleSBhcmUgbm90IGRldGVjdGVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDdmMTkxMzkzODk4NGVmNmM2YTQ2Y2I1M2UwMDM3MTkxOTZkOWM1ZGUKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgU2VwIDcgMTg6MjA6MjMgMjAwNyArMDIwMAotCi0gICAgW1BQQzQ0MFNQZV0gSW1wcm92ZSBQQ0llIGNvbmZpZ3VyYXRpb24gc3BhY2UgYWNjZXNzCi0KLSAgICAtIGNvcnJlY3QgY29uZmlndXJhdGlvbiBzcGFjZSBtYXBwaW5nCi0gICAgLSBjb3JyZWN0IGJ1cyBudW1iZXJpbmcKLSAgICAtIGJldHRlciBhY2Nlc3MgdG8gY29uZmlnIHNwYWNlCi0KLSAgICBQcmlvciB0byB0aGlzIHBhdGNoLCB0aGUgNDQwU1BlIGhvc3QvUENJZSBicmlkZ2Ugd2FzIGFibGUgdG8gY29uZmlndXJlIG9ubHkgdGhlCi0gICAgZmlyc3QgZGV2aWNlIG9uIHRoZSBmaXJzdCBidXMuIFdlIG5vdyBhbGxvdyB0byBjb25maWd1cmUgdXAgdG8gMTYgYnVzZXM7Ci0gICAgYWxzbywgc2Nhbm5pbmcgZm9yIGRldmljZXMgYmVoaW5kIHRoZSBQQ0llLVBDSWUgYnJpZGdlIGlzIHN1cHBvcnRlZCwgc28KLSAgICBwZXJpcGhlcmFsIGRldmljZXMgZmFydGhlciBpbiBoaWVyYXJjaHkgY2FuIGJlIGlkZW50aWZpZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDE1ZWU0NzM0ZTRlMDgwMDNkNzNkOWVhZDNjYTgwZTJhMDY3MmU0MjcKLUF1dGhvcjogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgU2VwIDcgMTc6NDY6MTggMjAwNyArMDIwMAotCi0gICAgW1BQQzQ0MFNQZV0gQ29udmVydCBtYWNoaW5lIGNoZWNrIGV4Y2VwdGlvbnMgaGFuZGxpbmcKLQotICAgIENvbnZlcnQgdXNpbmcgZml4dXAgbWVjaGFuaXNtIHRvIHN1cHByZXNzaW5nIE1DSyBmb3IgdGhlIGR1cmF0aW9uIG9mIGNvbmZpZwotICAgIHJlYWQvd3JpdGUgdHJhbnNhY3Rpb246IHdoaWxlIGZpeHVwcyB3b3JrIGZpbmUgd2l0aCB0aGUgY2FzZSBvZiBhIHByZWNpc2UKLSAgICBleGNlcHRpb24sIHdlIGlkZW50aWZpZWQgYSBtYWpvciBkcmF3YmFjayB3aXRoIHRoaXMgYXBwcm9hY2ggd2hlbiB0aGVyZSdzCi0gICAgYW4gaW1wcmVjaXNlIGNhc2UuIEluIHRoaXMgc2NlbmFyaW8gdGhlcmUgaXMgdGhlIGZvbGxvd2luZyByYWNlIGNvbmRpdGlvbjoKLSAgICB0aGUgZml4dXAgaXMgKGJ5IGRlc2lnbikgc2V0IHRvIGNhdGNoIHRoZSBpbnN0cnVjdGlvbiBmb2xsb3dpbmcgdGhlIG9uZQotICAgIGFjdHVhbGx5IGNhdXNpbmcgdGhlIGV4Y2VwdGlvbjsgaWYgYW4gaW50ZXJydXB0IChlLmcuIGRlY3JlbWVudGVyKSBoYXBwZW5zCi0gICAgYmV0d2VlbiB0aG9zZSB0d28gaW5zdHJ1Y3Rpb25zLCB0aGUgSVNSIGNvZGUgaXMgZXhlY3V0ZWQgYmVmb3JlIHRoZSBmaXh1cAotICAgIGhhbmRsZXIgdGhlIG1hY2hpbmUgY2hlY2sgaXMgbm8gbG9uZ2VyIHByb3RlY3RlZCBieSB0aGUgZml4dXAgaGFuZGxlciBhcyBpdAotICAgIGFwcGVhcnMgYXMgd2l0aGluIHRoZSBJU1IgY29kZS4gSW4gY29uc2VxdWVuY2UgdGhlIGZpeHVwIGFwcHJvYWNoIGlzIGJlaW5nCi0gICAgcGhhc2VkIG91dCBhbmQgcmVwbGFjZWQgd2l0aCBleHBsaWNpdCBzdXBwcmVzc2luZyBvZiBNQ0sgZHVyaW5nIGEgUENJZQotICAgIGNvbmZpZyByZWFkL3dyaXRlIGN5Y2xlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3J6ZWdvcnogQmVybmFja2kgPGdqYkBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBmZjc2NDBjOWVhZDg4MDZiNWQ4MjdmMmIyOWY5Y2IyNjMyYWRkNzI5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDcgMTc6NDM6MzYgMjAwNyArMDIwMAotCi0gICAgRml4IHR5cG8gaW4gTUFLRUFMTCBzY3JpcHQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMDhlMmU1ZmNkMmUwNjY3MGI2MmUxNjgwYTM5MzRjMGU1NWM3MjgxMAotQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBTZXAgNyAxNzowOToyMSAyMDA3ICswMjAwCi0KLSAgICBbTVBDNTEyeF0gUHJvcGVyIGhhbmRsaW5nIG9mIGxhcmdlciBmcmFtZXMgaW4gdGhlIEZFQyBkcml2ZXIKLQotICAgIFdoZW4gZnJhbWUgbGFyZ2VyIHRoYW4gbG9jYWwgUlggYnVmZmVyIGlzIHJlY2VpdmVkLCBpdCBpcyBzcGxpdCBhbmQgaGFuZGxlZAotICAgIGJ5IHR3byBidWZmZXIgZGVzY3JpcHRvcnMuIFByaW9yIHRvIHRoaXMgcGF0Y2ggdGhlIEZFQyBkcml2ZXIgZGlzY2FyZGVkCi0gICAgY29udGVudHMgb2YgYSBidWZmZXIgZGVzY3JpcHRvciB3aXRob3V0IHRoZSAnTEFTVCcgYml0IHNldCwgc28gdGhlIGZpcnN0Ci0gICAgcGFydCBvZiB0aGUgZnJhbWUgd2FzIGxvc3QgaW4gY2FzZSBvZiBsYXJnZXIgZnJhbWVzLiBUaGlzIGZpeCBhbGxvd3MgdG8KLSAgICBzYWZlbHkgY29tYmluZSB0aGUgdHdvIHBpZWNlcyBpbnRvIHRoZSB3aG9sZSBmcmFtZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgOGQxNzk3OWQwMzU5NDkyYTgyMmEwYTQwOWQyNmUzYTM1NDliNGNkNAotQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIFNlcCA3IDE3OjA1OjM2IDIwMDcgKzAyMDAKLQotICAgIFtNUEM1MTJ4XSBDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBhODljYmJkMjdhNjBlNjc0MDc3MjAwMGZkMDY4OGZmYmExYzI1NzZhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgU2VwIDcgMDE6MjE6MjUgMjAwNyArMDIwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRywgbWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCi0KLWNvbW1pdCA1ZTU4MDNlMTE5ZGUzYmViZDc2ZmM5YTU3YmFhYzBiNWFlY2NjOGEzCi1BdXRob3I6IHN0ZWZhbm8gYmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyAzMCAyMzowMTo0OSAyMDA3ICswMjAwCi0KLSAgICBQWEEyNzA6IEFkZGVkIHN1cHBvcnQgZm9yIFRyaXplcHNJViBib2FyZC4KLQotICAgIFRoaXMgcGF0Y2ggYWRkIHN1cHBvcnQgZm9yIHRoZSBUcml6ZXBzIElWIG1vZHVsZSAoNTIwTWh6KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgODAxNzJjNjE4MWM5MTJmYmIzNGVhM2JhMGMyMmIyMzJiNDE5YjQ3ZgotQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVRodSBBdWcgMzAgMjI6NTc6MDQgMjAwNyArMDIwMAotCi0gICAgUFhBMjcwOiBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc2VyaWFsIHBvcnRzLgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG11bHRpcGxlIHNlcmlhbCBwb3J0cyB0byB0aGUgUFhBIHRhcmdldC4KLSAgICBGRlVBUlQsIEJUVUFSVCBhbmQgU1RVQVJUIGFyZSBzdXBwb3J0ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDI4YmIzZjcyYzY4N2FjNmIyZWIwNzZiMDFkZDIxYTVmZDY1N2Q0NWUKLUF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDMwIDIyOjQ4OjQ3IDIwMDcgKzAyMDAKLQotICAgIFBYQTI3MDogZml4IGNvbXBpbGUgaXNzdWUgKGludmFsaWQgbHZhbHVlKQotCi0gICAgQ29kZSBpcyBicm9rZW4gZm9yIFBYQTI3MCBkdWUgdG8gImludmFsaWQgbHZhbHVlIGluIGFzc2lnbm1lbnQiLgotCi0gICAgVGhpcyBwYXRjaCBmaXggaXQgaW4gcHhhLXJlZ3MuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+Ci0KLWNvbW1pdCAxZDJjYTQ0NmUxYTczMWRmNDIwMjA2ZDA0ZmUyNzhjMjdlYTZiOGU4Ci1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDMwIDE4OjE5OjA1IDIwMDcgKzA4MDAKLQotICAgIEFkZCBCVUlMRF9ESVIgc3VwcG9ydCBmb3IgYmlvcyBlbXVsYXRvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNGQ4YTU1MTQ1NDQyZjEzNjk4MjYzNDg2MjM0MWEzZTAyMDAyYmRhCi1BdXRob3I6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLURhdGU6CUZyaSBBdWcgMzEgMTQ6NDE6NTEgMjAwNyArMDkwMAotCi0gICAgW01JUFNdIFJlbW92ZSBpbmxpbmUgYXNtIHN0cmluZyBmdW5jdGlvbnMKLQotICAgIFN0b3AgdXNpbmcgaW5saW5lIHN0cmluZyBmdW5jdGlvbnMgb24gTUlQUyBhcyBvdGhlciBBUkNIcyBkbyBzbywKLSAgICBzaW5jZSB0aGUgb3B0aW1pemVkIGlubGluZSBhc20gdmVyc2lvbnMgYXJlIG5vdCBzbWFsbC4KLQotICAgIFRoaXMgY2hhbmdlIGlzIHRyaWdnZXJlZCBieSBhIGZvbGxvd2luZyBNSVBTIGJ1aWxkIGVycm9yOgotICAgIGNvbW1vbi9saWJjb21tb24uYShleHBvcnRzLm8pKC50ZXh0KzB4ZGMpOiBJbiBmdW5jdGlvbiBganVtcHRhYmxlX2luaXQnOgotICAgIGNvbW1vbi9leHBvcnRzLmM6MzI6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHN0cmNtcCcKLSAgICBtYWtlOiAqKiogW3UtYm9vdF0gRXJyb3IgMQotCi0gICAgU2lnbmVkLW9mZi1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotCi1jb21taXQgOGVhMmM0ZTU0ODMzZGVhZWJjMjRjM2NhNmI3ZjIxMzUzYzI1YjBmNQotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci1EYXRlOglGcmkgQXVnIDMxIDE0OjQxOjQ1IDIwMDcgKzA5MDAKLQotICAgIFtNSVBTXSBVcGRhdGUgYXNtIHN0cmluZyBoZWFkZXIKLQotICAgIFRoaXMgcGF0Y2hlcyBjb250YWlucyBzZXZlcmFsIGJ1Z2ZpeGVzIGFuZCBjbGVhbnVwcyBpbiB0aGUgbGF0ZXN0IHVwc3RyZWFtOgotCi0gICAgIC0gRG9uJ3QgaW5jbHVkZSBsaW51eC9jb25maWcuaAotICAgICAtIFJlbW92ZSBidWdneSBpbmxpbmUgdmVyc2lvbiBvZiBtZW1zY2FuLgotICAgICAtIE1lcmdlIHdpdGggTGludXggMi42LjExLXJjMy4KLSAgICAgLSBGaXggdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBzdHJjcHkgaW4gYmluZm10X21pc2MgY2F1c2VkIGJ5IGdjYyAzLjQuCi0gICAgIC0gR29vZGJ5ZSBtaXBzNjQuCTMxNzA0IGxpbmVzIG9mIGNvZGUgYml0ZSB0aGUgZHVzdC4KLSAgICAgLSBSZXBsYWNlIGV4dGVybiBpbmxpbmUgd2l0aCBzdGF0aWMgaW5saW5lLgotICAgICAtIEZpeCByZXR1cm4gdmFsdWUgb2Ygc3RybmNweS4KLSAgICAgLSBSZW1vdmUgYSBidW5jaCBtb3JlICIkMSIgY2xvYmJlcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci0KLWNvbW1pdCA1YjcyOWZiM2JkOThmNDk4NTVkNmJmYzY1N2MzZmJhZTk1ZjJhZGMyCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgU2VwIDQgMTc6MzE6MjIgMjAwNyArMDIwMAotCi0gICAgRml4IGRvX2Jvb3RtX2xpbnV4KCkgc28gdGhhdCBtdWx0aS1maWxlIGltYWdlcyB3aXRoIEZEVCBibG9iIGJvb3QuCi0KLSAgICBGaXggaW5jb3JyZWN0IGJsb2IgYWRkcmVzcyBjYWxjdWxhdGlvbiBpbiBkb19ib290bV9saW51eCgpIHRoYXQgcHJldmVudHMKLSAgICBib290aW5nIHRoZSBrZXJuZWwgZnJvbSBhIG11bHRpLWZpbGUgaW1hZ2UgKGtlcm5lbCArIGluaXRyZCArIGJsb2IpLgotCi0gICAgQWxzbywgbWFrZSBtaW5vciB1cGRhdGVzIHRvIHRoZSBVLUJvb3QncyBvdXRwdXQgYW5kIHRvIHRoZSBjb2Rpbmcgc3R5bGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgMDQxYTI1NTRhZDYxOWU4MGRjZTUyMGMxYTMzMjEwYWZmY2I2YTNmMgotQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeS5qZW5uZWpvaG5AZnJlZW5ldC5kZT4KLURhdGU6CUZyaSBBdWcgMzEgMTQ6Mjk6MDQgMjAwNyArMDIwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFNpbDY4MCBJREUgY29udHJvbGxlci4KLQotICAgIG8gYWRkIGRyaXZlcnMvc2lsNjgwLmMgdG8gc3VwcG9ydCB0aGUgU2lsNjgwIElERS1jb250cm9sbGVyLgotICAgIG8gZHJpdmVycy9NYWtlZmlsZTogYWRkIHNpbDY4MC5vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2FyeSBKZW5uZWpvaG4gPGdhcnlqQGRlbnguZGU+Ci0KLWNvbW1pdCBlNzkwMjEyMjNiYzMzOWRmNjU1ZTM2MDY0NWE1MmM0NTdhNzRiMDY3Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVRodSBTZXAgNiAwOTo0Nzo0MCAyMDA3IC0wNjAwCi0KLSAgICBib290bS9mZHQ6IE9ubHkgcHJvY2VzcyB0aGUgZmR0IGlmIGFuIGZkdCBhZGRyZXNzIHdhcyBwcm92aWRlZAotCi0gICAgQm9hcmRzIHdpdGggQ09ORklHX09GX0xJQkZEVCBlbmFibGVkIGFyZSBub3QgYWJsZSB0byBib290IG9sZC1zdHlsZQotICAgIGtlcm5lbHMgdXNpbmcgdGhlIGJvYXJkIGluZm8gc3RydWN0dXJlIChpbnN0ZWFkIG9mIHBhc3NpbmcgYSBkZXZpY2UgdHJlZSkKLSAgICBUaGlzIGNoYW5nZSBhbGxvd3MgdGhlIG9sZCBzdHlsZSBib290aW5nIHRvIGJlIHVzZWQgaWYgdGhlIGZkdCBhcmd1bWVudAotICAgIHdhcyBub3QgcGFzc2VkIHRvICdib290bScuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0gICAgQWNrZWQtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjZjI4MTdhODRjMmU5YmVhMmM1ZGZjMDg0YmNlMmYyZDI1NjNhYzQzCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVRodSBTZXAgNiAwOTo0NjoyMyAyMDA3IC0wNjAwCi0KLSAgICBNaWdyYXRlIDV4eHggYm9hcmRzIGZyb20gQ09ORklHX09GX0ZMQVRfVFJFRSB0byBDT05GSUdfT0ZfTElCRkRUCi0KLSAgICBBZmZlY3RzIGJvYXJkczogaWNlY3ViZSAobGl0ZTUyMDApLCBqdXBpdGVyLCBtb3Rpb25wcm8sIHRxbTUyMDAKLQotICAgIFRlc3RlZCBvbjogbGl0ZTUyMDBiCi0KLSAgICBOb3RlOiB0aGUgZml4dXAgZnVuY3Rpb25zIGhhdmUgbm90IGJlZW4gbW92ZWQgdG8gYSBjb21tb24gcGxhY2UuICBUaGlzCi0gICAgcGF0Y2ggaXMgdGFyZ2V0ZWQgZm9yIGltbWVkaWF0ZSBtZXJnaW5nIGFzIGluIHNvbHZlcyBhIGJ1aWxkIGlzc3VlLCBidXQKLSAgICB0aGUgZmluYWwgbmFtZS9sb2NhdGlvbiBvZiB0aGUgZml4dXBzIGlzIHN0aWxsIHN1YmplY3QgdG8gZGViYXRlLiAgSQotICAgIHByb3Bvc2UgdG8gbWVyZ2UgdGhpcyBub3csIGFuZCBtb3ZlIHRoZSBmaXh1cHMgaW4gdGhlIG5leHQgbWVyZ2Ugd2luZG93Ci0gICAgdG8gYmUgdXNhYmxlIGJ5IGFsbCB0YXJnZXRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNDFiYjc2ZTk0MTkyOWY1NGE3MzIwNmZiMTMyZjdhNGMyNzU1NDNhMwotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUaHUgU2VwIDYgMDk6NDY6MTcgMjAwNyAtMDYwMAotCi0gICAgbGliZmR0OiBhZGQgY29udmVuaWVuY2UgZnVuY3Rpb24gZmR0X2ZpbmRfYW5kX3NldHByb3AoKQotCi0gICAgR2l2ZW4gdGhlIHBhdGggdG8gYSBub2RlLCBmZHRfZmluZF9hbmRfc2V0cHJvcCgpIGFsbG93cyBhIHByb3BlcnR5IHZhbHVlCi0gICAgdG8gYmUgc2V0IGRpcmVjdGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgODA3NjdhNmNlYWQ5OTkwZDllNzdlNjJiZTk0Nzg0M2MyYzcyZjQ2OQotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJV2VkIFNlcCA1IDE2OjA0OjQxIDIwMDcgKzAxMDAKLQotICAgIENoYW5nZWQgQVBJIG5hbWUgdG8gY29sb3VyZWRfbGVkLmgKLSAgICBSZW1vdmVkIGNvZGUgdXNpbmcgZGVwcmVjYXRlZCBpZmRlZiBDT05GSUdfQk9PVEJJTkZVTkMKLSAgICBUaWRpZWQgb3RoZXIgY3B1L2FybTkyMHQvc3RhcnQuUyBjb2RlCi0KLWNvbW1pdCA1NmE5MjcwNTIxYmFhYTAwZTEyNjM5YTk3ODMwMmE2N2Y2MWVmMDYwCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUaHUgQXVnIDMwIDE2OjE4OjE4IDIwMDcgLTA1MDAKLQotICAgIEZpeCBVTEkgUlRDIHN1cHBvcnQgb24gTVBDODU0NCBEUwotCi0gICAgVGhlIFJUQyBvbiB0aGUgTTE1NzUgVUxJIGNoaXBzZXQgcmVxdWlyZXMgYSBkdW1teSByZWFkIGJlZm9yZQotICAgIHdlIGFyZSBhYmxlIHRvIHRhbGsgdG8gdGhlIFJUQy4gIFdlIGFjY29tcGxpc2ggdGhpcyBieSBhZGRpbmcgYQotICAgIHNlY29uZCBtZW1vcnkgcmVnaW9uIHRvIHRoZSBQSEIgdGhlIFVMSSBpcyBvbiBhbmQgcmVhZCBmcm9tIGl0LgotCi0gICAgVGhlIHNlY29uZCByZWdpb24gaXMgYWRkZWQgdG8gbWFpbnRhaW4gY29tcGF0aWFiaWx0eSB3aXRoIExpbnV4J3MKLSAgICB2aWV3IG9mIHRoZSBQQ0kgbWVtb3J5IG1hcC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBmNzVlODllOWI1NzE0ZGIyYjBlODAwNzQwNzFkZmJkZDZmNTk0ODhhCi1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDMwIDAxOjU4OjQ4IDIwMDcgLTA1MDAKLQotICAgIGZ0X2JvYXJkX3NldHVwIHVwZGF0ZSA4NXh4Lzg2eHggb2YgcGNpL3BjaWUgYnVzLXJhbmdlIHByb3BlcnR5LgotCi0gICAgcGNpZSBpcyBub3cgZGlmZmVyZW50aWF0ZWQgZnJvbSBwY2kuICBBZGQgODY0MSBidXMtcmFuZ2UgdXBkYXRlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5ZjVjM2QzNzIwZTc3N2E1NzJkY2RjOGFmMjAwOGI0NGM3MjQzODg1Ci1BdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci1EYXRlOglUdWUgU2VwIDQgMTY6MTg6MzggMjAwNyArMDEwMAotCi0gICAgQWRkIGNvbG91cmVkIGxlZCBpbnRlcmZhY2UgZm9yIEFSTSBib2FyZHMuCi0gICAgVXNlIGl0IGluIGNwdS9hcm05MjB0L3N0YXJ0LlMgdG8gaW5kaWNhdGUgVS1Cb290IGNvZGUgaGFzIGJlZW4gZW50ZXJlZC4KLQotY29tbWl0IDc0NjJmZTBkNWE5ZDQwY2RlMDgzZmIxYTNjZDczOTExOTk2YjVlY2IKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CVR1ZSBTZXAgNCAxNDo0OToyOCAyMDA3ICswMTAwCi0KLSAgICBNb3ZlIGluY2x1ZGUvbGVkLmggdG8gYm9hcmQvYXQ5MXJtOTIwMGRrCi0KLWNvbW1pdCA2ZTRiZjliMjRlNTdjMTVhYmM2NTQyZTY4NWQwNjM4MGJjNjRhZjI3Ci1BdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci1EYXRlOglUdWUgU2VwIDQgMTQ6MjU6NTEgMjAwNyArMDEwMAotCi0gICAgUmFuIExpbmRlbnQgb24gZHJpdmVycy9hdDQ1LmMKLQotY29tbWl0IDU1N2FiODlkMjk0ZjA4ZGQ1MzJmMjFkMTk4NjFiNDAwOTMyMDBhMzMKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CVR1ZSBTZXAgNCAxNDoyMzo1MCAyMDA3ICswMTAwCi0KLSAgICBSZW5hbWUgQ09ORklHX0NNRF9NVVggdG8gQ09ORklHX0NNRF9BVDkxX1NQSU1VWAotCi1jb21taXQgODFiNzNkZWMxNmZkMTIyNzM2OWExOTFlNzI1ZTEwMDQ0YTlkNTZiOAotQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMzEgMTU6MjE6NDYgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiAoUmUtKUVuYWJsZSBDT05GSUdfUENJX1BOUCBvbiBBTUNDIDQ0MEVQeCBTZXF1b2lhCi0KLSAgICBUaGUgNDQwRVB4IGhhcyBhIHByb2JsZW0gd2hlbiB0aGUgUENJX0NBQ0hFX0xJTkVfU0laRSByZWdpc3RlciBpcwotICAgIHNldCB0byBub24temVybywgYmVjYXVzZSBpdCBkb2Vzbid0IHN1cHBvcnQgTVJNIChtZW1vcnktcmVhZC0KLSAgICBtdWx0aXBsZSkgY29ycmVjdGx5LiBXZSBub3cgYWRkZWQgdGhlIHBvc3NpYmlsaXR5IHRvIGNvbmZpZ3VyZQotICAgIHRoaXMgcmVnaXN0ZXIgaW4gdGhlIGJvYXJkIGNvbmZpZyBmaWxlLCBzbyB0aGF0IHRoZSBkZWZhdWx0IHZhbHVlCi0gICAgb2YgOCBjYW4gYmUgb3ZlcnJpZGRlbi4KLQotICAgIEhlcmUgdGhlIGRldGFpbHMgb2YgdGhpcyBwYXRjaDoKLQotICAgIG8gZHJpdmVyc19wY2lfYXV0by5jOiBpbnRyb2R1Y2UgQ0ZHX1BDSV9DQUNIRV9MSU5FX1NJWkUgdG8gYWxsb3cKLSAgICAgIGJvYXJkLXNwZWNpZmljIHNldHRpbmdzLiBBcyBhbiBleGFtcGxlIHRoZSBzZXF1b2lhIGJvYXJkIHJlcXVpcmVzIDAuCi0gICAgICBJZGVhIGZyb20gU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPi4KLSAgICBvIGJvYXJkL2FtY2Mvc2VxdW9pYS9pbml0LlM6IGFkZCBhIFRMQiBtYXBwaW5nIGF0IDB4RTgwMDAwMDAgZm9yIHRoZQotICAgICAgUENJIElPLXNwYWNlLiBPYnRhaW5lZCBmcm9tIFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4uCi0gICAgbyBpbmNsdWRlL2NvbmZpZ3Mvc2VxdW9pYS5oOiB0dXJuIENPTkZJR19QQ0lfUE5QIGJhY2sgb24gYW5kIHNldAotICAgICAgQ0ZHX1BDSV9DQUNIRV9MSU5FX1NJWkUgdG8gMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdhcnkgSmVubmVqb2huIDxnYXJ5akBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDYwMTc0NzQ2YzY2OGIzMDkzNzhhOTE0ODhkZGVkODk4ZTk1NTNlYWUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMzEgMTA6MDE6NTEgMjAwNyArMDIwMAotCi0gICAgRml4IFRGVFAgT0FDSyBjb2RlIGZvciBzaG9ydCBwYWNrZXRzLgotCi0gICAgVGhlIG9sZCBjb2RlIGhhZCBhIGxvb3AgbGltaXQgb3ZlcmZsb3cgYnVnIHdoaWNoIGNhdXNlZCBhIHNlbWktCi0gICAgaW5maW5pdGUgbG9vcCBmb3Igc21hbGwgcGFja2V0cywgYmVjYXVzZSBpbiAiaTxsZW4tOCIsICJpIiB3YXMgc2lnbmVkLAotICAgIGJ1dCAibGVuIiB3YXMgdW5zaWduZWQsIGFuZCAibGVuLTgiIGJlY2FtZSBhIGh1Z2UgbnVtYmVyIGZvciBzbWFsbAotICAgIHZhbHVlcyBvZiAibGVuIi4KLQotICAgIFRoaXMgaXMgYSB3b3JrYXJvdW5kIHdoaWNoIHJlcGxhY2VzIGJyb2tlbiBjb21taXQgOGYxYmMyODQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjk2ZGQxMzA3Y2Q4ZTczYTEwZTliYjNjNTE3MzFiZmQ2ZjgzN2JlZQotQXV0aG9yOiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoY2VndHZlZHRAYXRtZWwuY29tPgotRGF0ZToJVGh1IEF1ZyAzMCAxNTowMzowNSAyMDA3ICswMjAwCi0KLSAgICBSZWR1Y2UgQk9PVERFTEFZIHZhcmlhYmxlIHRvIDEgc2Vjb25kIGJ5IGRlZmF1bHQgZm9yIFNUSzEwMDIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBjODhiNmUxY2JmOWE4YWUyYTM0ZmI2MDJmNzhhMWJmNGU2NjkyYjZhCi1BdXRob3I6IEhhbnMtQ2hyaXN0aWFuIEVndHZlZHQgPGhjZWd0dmVkdEBhdG1lbC5jb20+Ci1EYXRlOglUaHUgQXVnIDMwIDE1OjAzOjA0IDIwMDcgKzAyMDAKLQotICAgIFJlbW92ZSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFyb3VuZCBNQUMgYWRkcmVzcyBmb3IgU1RLMTAwMgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFucy1DaHJpc3RpYW4gRWd0dmVkdCA8aGNlZ3R2ZWR0QGF0bWVsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGZmMTNhYzhjN2JiZWJiMjM4ZTMzOTU5MmRlNzY1YzU0NmRiYTEwNzMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBBdWcgMzAgMTQ6NDI6MTUgMjAwNyArMDIwMAotCi0gICAgQmFja291dCBjb21taXQgOGYxYmMyODQgYXMgaXQgY2F1c2VzIFRGVFAgdG8gZmFpbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAxOTAwZmJmMjU1YWNiYThiOTRmYjQ0MmExNjQwOGVhODVhMWQ0NmE2Ci1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDMwIDAyOjI2OjE3IDIwMDcgLTA1MDAKLQotICAgIFJldmVydCAiRml4IE1QQzg1NDREUyBQQ0llMyBzY3NpLiIKLQotICAgIFRoaXMgcmV2ZXJ0cyBjb21taXQgOTQ2OGU2ODAuCi0gICAgQ29tbWl0IDE2ZTIzYzNmNWRhIHJlbW92aW5nIGFsbG9jYXRpb24gb2YgUENTUkJBUiBpcyBzdWZmaWNpZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhmMWJjMjg0MDhkZWQyMTM0MThkOWJjMDc4MGM3ZDhmYjhhMDM3NzQKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJV2VkIEF1ZyAyOSAxODoyNjoyNCAyMDA3IC0wNjAwCi0KLSAgICB0ZnRwOiBkb24ndCBpbXBsaWNpdHkgdHJ1c3QgdGhlIGZvcm1hdCBvZiByZWNldmllZCBwYWNrZXRzCi0KLSAgICBUaGUgVEZUUCBPQUNLIGNvZGUgdHJ1c3RzIHRoYXQgdGhlIGluY29taW5nIHBhY2tldCBpcyBmb3JtYXRlZCBhcwotICAgIEFTQ0lJIHRleHQgYW5kIGNhbiBiZSBwcm9jZXNzZWQgYnkgc3RyaW5nIGZ1bmN0aW9ucy4gSXQgYWxzbyBoYXMgYQotICAgIGxvb3AgbGltaXQgb3ZlcmZsb3cgYnVnIHdoZXJlIGlmIHRoZSBwYWNrZXQgbGVuZ3RoIGlzIGxlc3MgdGhhbiA4LCBpdAotICAgIGVuZHMgdXAgbG9vcGluZyBvdmVyICphbGwqIG9mIG1lbW9yeSB0byBmaW5kIHRoZSAnYmxrc2l6ZScgc3RyaW5nLgotCi0gICAgVGhpcyBwYXRjaCBzb2x2ZXMgdGhlIHByb2JsZW0gYnkgZm9yY2luZyB0aGUgcGFja2V0IHRvIGJlIG51bGwKLSAgICB0ZXJtaW5hdGVkIGFuZCB1c2luZyBzdHJzdHIoKSB0byBzZWFyY2ggZm9yIHRoZSBzdWIgc3RyaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgMDQ2MjU3NjRjYzkzY2U4YTYxNjI1YWMxOWQ3ZmUyYTJjZWVlODE0MwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXVnIDI5IDE2OjMxOjE4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ2hhbmdlIGx3bW9uNSBkZWZhdWx0IGVudmlyb25tZW50IHRvIHN1cHBvcnQgTGludXggUlRDCi0KLSAgICBUaGUgTGludXggUENGODU2MyBSVEMgZHJpdmVyIGRvZXNuJ3QgZG8gYXV0b3Byb2JpbmcsIHNvIHdlIG5lZWQKLSAgICB0byBzdXBwbHkgdGhlIFJUQyBJMkMgYWRkcmVzcyBhcyBib290bGluZSBwYXJhbWV0ZXIuIFRoaXMgcGF0Y2gKLSAgICBhZGRzIHN1cHBvcnQgZm9yIHRoaXMgcnRjIHByb2JpbmcgcGFyYW1ldGVyIHRvIHRoZSBib290YXJnczoKLQotICAgICJydGMtcGNmODU2My5wcm9iZT0wLDB4NTEiCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyNjAyYTVjNDBhZTM3YWI5NjVhNGUyNDA4NTRmZGFmZmI1MTMyOGE0Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDI5IDA5OjA2OjA1IDIwMDcgLTA1MDAKLQotICAgIHNiYzg2NDE6IHJlbW92ZSB1bnVzZWQgT0ZfRkxBVF9UUkVFX01BWF9TSVpFCi0KLSAgICB0aGlzIGhhZCBzbGlwcGVkIHRocm91Z2ggdGhlIGNyYWNrcywgc2luY2UgdGhlIHNiYyBib2FyZCB3YXMgYWRkZWQKLSAgICBhZnRlciBJIHdyb3RlIHRoZSBvcmlnaW5hbCBwYXRjaCB0byByZW1vdmUgYWxsIHRoZXNlIHN5bWJvbHMsIGFuZAotICAgIGJlZm9yZSBpdCB3YXMgbWVyZ2VkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGM1YmRlZDNjODhlNDhhZTY0OGE3NWQzNTdkYzgxYTgyNTVmYTgxZjEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBBdWcgMjkgMTQ6MDU6MzAgMjAwNyArMDIwMAotCi0gICAgQWRkIG1paV9pbml0KCkgcHJvdG90eXBlCi0KLSAgICB0byBnZXQgcmlkIG9mIGEgKmxvdCogb2YgY29tcGlsZXIgd2FybmluZ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMmQxZjIzYWExZTc0ZTRhOGY4ZmZhNjdmMjQ2ZWI5OGM1MjJkZmQ3ZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyAyOSAxMzozNTowMyAyMDA3ICswMjAwCi0KLSAgICBEaXNhYmxlIG5ldHdvcmsgc3VwcG9ydCBvbiBjbWlfbXBjNXh4IGJvYXJkCi0KLSAgICAuLmJlY2F1c2UgaXQgY2F1c2VkIGNvbXBpbGVyIGVycm9ycyBhbmQgdGhlcmUgc2VlbXMgdG8gYmUgbm8KLSAgICBib2FyZCBtYWludGFpbmVyIHRvIHRha2UgY2FyZSBvZiB0aGlzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDk0NjhlNjgwNGI3ZTI1YjBmNmY1MmU1M2Y0N2JjZTMxNzU0MDBhMTYKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CU1vbiBBdWcgMjAgMDk6NDQ6MDAgMjAwNyAtMDUwMAotCi0gICAgRml4IE1QQzg1NDREUyBQQ0llMyBzY3NpLgotCi0gICAgPGVkLnN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotCi0gICAgVGhlIHByb2JsZW0gaXMgcGNpYXV0b19zZXR1cF9kZXZpY2UoKSBnZXR0aW5nIGNhbGxlZCBmcm9tIGZzbF9wY2lfaW5pdC5jCi0gICAgaXMgYWxsb2NhdGluZyBtZW1vcnkgc3BhY2UgaXQgZG9lc24ndCBuZWVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxlZC5zd2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0YmY0YWJiOGE0ZTk5NTU1NTZiMTIwYTFhYWZhMzBjMDNlNzQwMzJhCi1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDIxIDA5OjM4OjU5IDIwMDcgLTA1MDAKLQotICAgIDg1NDhjZHMgZml4ZXMKLQotICAgIFJlc3RvcmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUyBkZWZpbml0aW9uIHdoaWNoIGNvbnRhaW5zIHRoZQotICAgIGNvcnJlY3QgY29uc29sZWRldiBuZWVkZWQgZm9yIGxpbnV4IGJvb3QuCi0gICAgU3RhbmRhcmRpemUgb24gZmR0e2ZpbGUsYWRkcn0gdmFyIHRvIGhvbGQgZHRiIGZpbGUgbmFtZS4KLQotICAgIFNldCBQQ0kgaW5ib3VuZCBtZW1vcnkgcmVnaW9uIGZyb20gQ0ZHX01FTU9SWV97QlVTLFBIWVN9LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdhMWFjNDE5ZmEwZDJkMjNkZGQwOGJkNjFkMTY4OTZhOWYzM2M5MzMKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMjMgMTU6MjA6NTQgMjAwNyAtMDQwMAotCi0gICAgRW5hYmxlIEwyIGNhY2hlIGZvciBNUEM4NTY4TURTIGJvYXJkCi0KLSAgICBUaGUgTDIgY2FjaGUgc2l6ZSBpcyA1MTJLQiBmb3IgODU2OCwgcHJpbnQgb3V0IHRoZSBjb3JyZWN0IGluZm9ybWFpdG9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk0YzQ3ZmRhZjE0Y2IyOWZhM2ZiNGQ0ZGEyZWZkZDk2YzgwM2I0NmIKLUF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMjIgMTc6NTQ6NDkgMjAwNyArMDgwMAotCi0gICAgUmVtb3ZlIHRoZSBiaW9zIGVtdWxhdG9yIGJpbmFyeSBmaWxlcyBmcm9tIE1BSSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc2MDhkNzVmOWM4N2M5ZWI1YjNhNDMyMTlkMDUwNmQzZTk3OWExM2YKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjEgMTc6MDA6MTcgMjAwNyAtMDUwMAotCi0gICAgc3VwcG9ydCBib2FyZCB2ZW5kb3ItY29tbW9uIG1ha2VmaWxlcwotCi0gICAgaWYgYSBib2FyZC8kKFZFTkRPUikvY29tbW9uL01ha2VmaWxlIGV4aXN0cywgYnVpbGQgaXQuCi0KLSAgICBhbHNvIGFkZCB0aGUgZmlyc3Qgc3VjaCBjYXNlLCBib2FyZC9mcmVlc2NhbGUvY29tbW9uL01ha2VmaWxlLCB0bwotICAgIGhhbmRsZSBidWlsZGluZyBib2FyZC1zaGFyZWQgRUVQUk9NLCBQSVhJUywgYW5kIE1EUy1QSUIgY29kZSwgYXMKLSAgICBkaWN0YXRlZCBieSBib2FyZCBjb25maWd1cmF0aW9uLgotCi0gICAgdGh1c2x5IGdldCByaWQgb2YgYWx0ZXJuYXRlIGJ1aWxkIGRpciBlcnJvcnMgc3VjaCBhczoKLQotICAgIEZBVEFMOiBjYW4ndCBjcmVhdGUgL3dvcmsvd2QvdG1wL3UtYm9vdC1wcGMvYm9hcmQvZnJlZXNjYWxlL21wYzgzNjBlbWRzLy4uL2NvbW1vbi9wcS1tZHMtcGliLm86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLQotICAgIGJ5IHB1dHRpbmcgdGhlIGNvbW1vbi8gbWtkaXIgY29tbWFuZCBpbiBpdHMgcHJvcGVyIHBsYWNlICh0aGUgY29tbW9uCi0gICAgTWFrZWZpbGUpLiBDb21tb24gYml0cyBmcm9tIGV4aXN0aW5nIGluZGl2aWR1YWwgYm9hcmQgTWFrZWZpbGVzIGhhdmUKLSAgICBiZWVuIHJlbW92ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZWY4ZjIwNzUyNzEyZGMxY2RiZDg2ZjQ3ZTNiZDZlMzVmODFjODNmZAotQXV0aG9yOiBzdGVmYW5vIGJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMjEgMTU6NTI6MzMgMjAwNyArMDIwMAotCi0gICAgRml4OiBURlRQIGlzIG5vdCB3b3JraW5nIG9uIGxpdHRsZSBlbmRpYW4gc3lzdGVtcwotCi0gICAgVEZUUCBkb2VzIG5vdCB3b3JrIGFueW1vcmUgYWZ0ZXIgbXVsdGljYXN0IHRmdHAKLSAgICBwYXRjaCB3YXMgYXBwbGllZCBvbiBsaXR0bGUgZW5kaWFuIHN5c3RlbXMuCi0gICAgVGhpcyBwYXRjaCBmaXggaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLQotY29tbWl0IDVmNDcwOTQ4NTcwNTI2ZTkxODZmMDUzYTMwMDNkYTc3MTk2MDRlOTAKLUF1dGhvcjogc3RlZmFubyBiYWJpYyA8c2JhYmljQGRlbnguZGU+Ci1EYXRlOglUdWUgQXVnIDIxIDE1OjUwOjMzIDIwMDcgKzAyMDAKLQotICAgIEZpeCBNQUMgYWRkcmVzcyBzZXR0aW5nIGluIERNOTAwMCBkcml2ZXIuCi0KLSAgICBUaGUgbG9naWMgdG8gY2hlY2sgaWYgdGhlcmUgaXMgYSBjb3JyZWN0IE1BQyBhZGRyZXNzIGluIHRoZSBETTkwMDAKLSAgICBFRVBST00sIGFkZGVkIGluIHRoZSBsYXN0IHBhdGNoLCBpcyB3cm9uZy4gTm93IHRoZSBNQUMgYWRkcmVzcyBpcwotICAgIGFsd2F5cyB0YWtlbiBmcm9tIHRoZSBlbnZpcm9ubWVudCwgZXZlbiBpZiBhIHN1aXRhYmxlIE1BQyBpcyBwcmVzZW50Ci0gICAgaW4gdGhlIEVFUFJPTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgNGE4NTI3ZWYwODZlYzdjODlmNDA2NzRlZjAyNGFlNmY5ODhhNjE0YQotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CVR1ZSBBdWcgMjEgMTI6NDA6MzQgMjAwNyArMDIwMAotCi0gICAgTVBDNXh4eDogZml4IHNvbWUgY29tcGlsZXIgd2FybmluZ3MgaW4gVVNCIGNvZGUKLQotICAgIEZpeCB0aGUgZm9sbG93aW5nIHdhcm5pbmdzOgotICAgIC0gdXNiLmM6eHg6IHdhcm5pbmc6IGZ1bmN0aW9uIGRlY2xhcmF0aW9uIGlzbid0IGEgcHJvdG90eXBlCi0gICAgLSB1c2Jfb2hjaS5jOnh4eDogd2FybmluZzogcGFzc2luZyBhcmd1bWVudCAxIG9mICdfX2Zzd2FiMzInIG1ha2VzIGludGVnZXIKLSAgICAgIGZyb20gcG9pbnRlciB3aWh0b3V0IGEgY2FzdAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXNlQHRxcy5kZT4KLQotY29tbWl0IDE2ZTIzYzNmNWRhYjY5MzdmNTEwOTM2NTQxNjgwOGM3ZjE1YzEyMmIKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBdWcgMjAgMjM6NTU6MzMgMjAwNyAtMDUwMAotCi0gICAgZnNsX3BjaV9pbml0IC0gUmVtb3ZlIHNlbGYgUENTUkJBUiBhbGxvY2F0aW9uCi0KLSAgICBDUFUgcGh5c2ljYWwgYWRkcmVzcyBzcGFjZSB3YXMgYmVpbmcgd2FzdGVkIGJ5IGFsbG9jYXRpbmcgYQotICAgIFBDU1JCQVIgUENJIGluYm91bmQgcmVnaW9uIHRvIGl0J3MgbWVtb3J5IHNwYWNlLgotCi0gICAgQXMgYSBydWxlLCBQQ1NSQkFSIHNob3VsZCBiZSBsZWZ0IGFsb25lIHNpbmNlIGl0IGRvZXMgbm90IGFmZmVjdAotICAgIHRyYW5zYWN0aW9ucyBmcm9tIHNlbGYgYW5kIG90aGVyIG1hc3RlcnMgbWF5IGhhdmUgY2hhbmdlZCBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8ZWQuc3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwZTcwMGNlMDNhMjNiYjE5MjExNDliYzc3MDA4YWNlNzEwM2Q1Mjg5Ci1BdXRob3I6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotRGF0ZToJTW9uIEF1ZyAyMCAxMzo1Njo0NyAyMDA3ICswMjAwCi0KLSAgICBGaXggY29tcGlsZXIgd2FybmluZyBpbiBpbmNsdWRlL3MzYzI0MTAuaAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgInR5cGUgcXVhbGlmaWVycyBpZ25vcmVkIG9uIGZ1Y3Rpb24gcmV0dXJuIHRweWUiCi0gICAgd2FybmluZyBmb3IgaW5jbHVkZS9zM2MyNDEwLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgOWJiOGIyMDllZDIwNThhNTc1NmVjYmViNTQ0YzA2N2U0NGE0MmFlYQotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJTW9uIEF1ZyAyMCAwNzowOTowNSAyMDA3ICswMjAwCi0KLSAgICBGaXggY29tcGlsYXRpb24gZXJyb3IgZm9yIG9tYXAyNDIwaDRfY29uZmlnLgotCi0gICAgb21hcDI0MjBoNCBzd2l0Y2hlZCB0byBjZmksIHNvIHJlbW92ZSBvbGQgKGFscmVhZHkgZGlzYWJsZWQpIGZsYXNoLmMKLSAgICBhbmQgZmxhc2hfcHJvYmUoKSBjYWxscyBpbiBlbnZfZmxhc2guYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgotCi1jb21taXQgM2JiMzQyZmM4NWQ3OWRiYjZiOGMyMDM5ZTdjZGNkZGM4MmI4ZDkwZgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAxMCAxNDozNDoxNCAyMDA3IC0wNTAwCi0KLSAgICBmZHQ6IHJlbW92ZSB1bnVzZWQgT0ZfRkxBVF9UUkVFX01BWF9TSVpFIHJlZmVyZW5jZXMKLQotICAgIGFuZCBtYWtlIHNvbWUgbWlub3IgY29ycmVjdGlvbnMgdG8gdGhlIEZEVCBwYXJ0IG9mIHRoZSBSRUFETUUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNmFmMmVlYjFlOTljMmRjYzU4NGQ0YzVhYjdmY2FlMzBhMzI1ZjRkZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyAyOSAwMTozMjowNSAyMDA3ICswMjAwCi0KLSAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhODYxNTU4YzY1ZjY1ZjFjZjEzMDJmM2EzNWU5ZGI3Njg2YjllMWEzCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMjggMTc6NDA6MzMgMjAwNyArMDIwMAotCi0gICAgW1VDMTAxXSBGaXg6IGlmIG5vIENGIGluIHRoZSBib2FyZCwgVS1Cb290IHJlc2V0cyBzb21ldGltZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGY5ODk4NGNiMTk0YmIzNGRiZTFkYjk0MjlkM2I1MTEzM2FmMzBkMDcKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAyOCAxNzozOToxNCAyMDA3ICswMjAwCi0KLSAgICBJREU6CS0gbWFrZSBpZGVfaW5iICgpIGFuZCBpZGVfb3V0YiAoKSAid2VhayIsIHNvIGJvYXJkcyBjYW4KLQkgICAgICBkZWZpbmUgdGhlcmUgb3duIEkvTyBmdW5jdGlvbnMuCi0JICAgICAgKE5lZWRlZCBmb3IgdGhlIHBjczQ0MGVwIGJvYXJkKS4KLQkgICAgLSBUaGUgZGVmYXVsdCBJL08gRnVuY3Rpb25zIGFyZSBhZ2FpbiA4IEJpdCBhY2Nlc3Nlcy4KLQkgICAgLSBBZGRlZCBDT05GSUdfQ01EX0lERSBmb3IgdGhlIHBjczQ0MGVwIEJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCAyYzA1ZmQxMjU3NDQ5ODFlNWYyODI4ZDI0ZTY2Y2NjMjBhNzdkMjVkCi1BdXRob3I6IFNlbWloIEhhemFyIDxzZW1paC5oYXphckBpbmRlZmlhLmNvbT4KLURhdGU6CU1vbiBBdWcgMjAgMTk6MDA6MDEgMjAwNyArMDMwMAotCi0gICAgQVZSMzI6IENoYW5nZSBwcm90b3R5cGUgb2YgbWVtc2V0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZW1paCBIYXphciA8c2VtaWguaGF6YXJAaW5kZWZpYS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA5YzAyZGVmYzI5YjU3OTQ1YjYwMDcxNGNmNjFkZGZkMDJiMDJmYjE0Ci1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CVNhdCBBdWcgMjUgMDU6MDc6MTYgMjAwNyArMDIwMAotCi0gICAgUE9TVDogbGltaXQgbWVtb3J5IHRlc3QgYXJlYSB0byBub3QgdG91Y2ggZ2xvYmFsIGRhdGEgYW55bW9yZQotCi0gICAgQXMgZXhwZXJpZW5jZWQgb24gbHdtb241LCBvbiBzb21lIGJvYXJkcyB0aGUgUE9TVCBtZW1vcnkgdGVzdCBjYW4KLSAgICBjb3JydXB0IHRoZSBnbG9iYWwgZGF0YSBidWZmZXIgKGJkKS4gVGhpcyBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlCi0gICAgYnkgY2hlY2tpbmcgYW5kIGxpbWl0aW5nIHRoaXMgYXJlYS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3NWUxYTg0ZDQ4M2UzNmJlMTBlMjA2ZTUzOWIwMjhjNDg4OWUxMTU4Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMjQgMTU6NDE6NDIgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgUlRDIFBPU1QgdGVzdCB0byBsd21vbjUgYm9hcmQgY29uZmlndXJhdGlvbgotCi0gICAgU2luY2UgdGhpcyBSVEMgUE9TVCB0ZXN0IGlzIHRha2luZyBxdWl0ZSBhIHdoaWxlIHRvIGNvbXBsZXRlCi0gICAgaXQncyBvbmx5IGluaXRpYXRlZCB1cG9uIHNwZWNpYWwga2V5cHJlc3Mgc2FtZSBhcyB0aGUgY29tcGxldGUKLSAgICBtZW1vcnkgUE9TVC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGQ3YmZhNjIwMDM3YTZkMjIxMDE1OTM4NzU3MWJkZjkzYWEzMmMxNjIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyAyNCAxNToxOToxMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IENoYW5nZSBHUElPIHNpZ25hbCBmb3Igd2F0Y2hkb2cgdHJpZ2dlcmluZyBvbiBsd21vbjUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGMyNWRkOGZjMjVlOWNhMzY5NWRiOTk2YTI1N2Q5YmE0ZGFiNDE0ZGIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyAyMyAxMTowMjozNyAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBzdXBwb3J0IGZvciAybmQgSTJDIEVFUFJPTSBvbiBsd21vbjUgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgMm5kIEVFUFJPTSAoQVQyNEMxMjgpIG9uIHRoZSBsd21vbjUKLSAgICBib2FyZC4gTm93IHRoZSAiZWVwcm9tIiBjb21tYW5kIGNhbiBiZSB1c2VkIHRvIHJlYWQvd3JpdGUgZnJvbS90byB0aGlzCi0gICAgZGV2aWNlLiBBZGRpdGlvbmFsbHkgYSBuZXcgY29tbWFuZCB3YXMgYWRkZWQgImVlcHJvbXdwIiB0byBlbi0vZGlzYWJsZQotICAgIHRoZSB3cml0ZS1wcm90ZWN0IG9mIHRoaXMgMm5kIEVFUFJPTS4KLQotICAgIFRoZSAxc3QgRUVQUk9NIGlzIG5vdCBhZmZlY3RlZCBieSB0aGlzIHdyaXRlLXByb3RlY3QgY29tbWFuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGM2NGZiMzBlNGM1OTc2MDA3ZDU2ZmMxNzg5YzdhMDY2NjA4MmI1MzYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyAyMiAwODo1NjowOSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSB1bnVzZWQgb3B0aW9uIENGR19JTklUX1JBTV9PQ00KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDNhZDYzODc4NzM3YTVhMmIxZTYwODI1YmYwYTdkNjAxZDdhNjk1ZTcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAyMSAxNjoyNzo1NyAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBtYXRyaXgga2JkIHN1cHBvcnQgdG8gbHdtb241IGJvYXJkICg0NDBFUHggYmFzZWQpCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG1hdHJpeCBrZXlib2FyZCBvbiB0aGUgbHdtb241IGJvYXJkLgotICAgIFNpbmNlIHRoZSBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgZHNQQ0kgaXMga2luZCBvZiBjb21wYXRpYmxlIHdpdGggdGhlCi0gICAgIm9sZCIgbHdtb24gYm9hcmQsIG1vc3Qgb2YgdGhlIGNvZGUgaXMgY29waWVkIGZyb20gdGhlIGx3bW9uCi0gICAgYm9hcmQgZGlyZWN0b3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgM2U2NmMwNzgwMDM2MDdhN2QxZDIxNGMxNWE1ZjI2MmJjMWI0MDMyZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEF1ZyAxOSAxMDoyNzozNCAyMDA3ICswMjAwCi0KLSAgICBGaXggc29tZSBidWlsZCBlcnJvcnMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMDU2NzU3MzVlZjc3ZGMyM2I1ZTBlYjc4MmJhZDFmZjQ3N2I1NWU4NgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IEF1ZyAxOCAyMjowMDozOCAyMDA3ICswMjAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HLgotCi1jb21taXQgNzlmMjQwZjdlY2MwNTA2YjQzYWM1MGQxZWE0MDVmZjY1NDBkNGQ1NwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAxNiAyMjo1MjozOSAyMDA3IC0wNTAwCi0KLSAgICBsaWJfcHBjOiBtYWtlIGJvYXJkX2FkZF9yYW1faW5mbyB3ZWFrCi0KLSAgICBwbGF0Zm9ybXMgd2lzaGluZyB0byBkaXNwbGF5IFJBTSBkaWFnbm9zdGljcyBpbiBhZGRpdGlvbiB0byBzaXplLAotICAgIGNhbiBkbyBzbywgb24gb25lIGxpbmUsIGluIHRoZWlyIG93biBib2FyZF9hZGRfcmFtX2luZm8oKQotICAgIGltcGxlbWVudGF0aW9uLgotCi0gICAgdGhpcyBjb25zZXF1ZW50bHkgZWxpbWluYXRlcyBDT05GSUdfQUREX1JBTV9JTkZPLgotCi0gICAgVGhhbmtzIHRvIFN0ZWZhbiBmb3IgdGhlIGhpbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODE1YjViZDViMTg1Njk5MTdjM2UwNGI5NzU3NTExZTZlZDIzYjlmNgotQXV0aG9yOiBTaGlueWEgS3VyaWJheWFzaGkgPHNoaW55YS5rdXJpYmF5YXNoaUBuZWNlbC5jb20+Ci1EYXRlOglGcmkgQXVnIDE3IDEyOjQzOjQ0IDIwMDcgKzA5MDAKLQotICAgIFBDSV9SRUFEX1ZJQV9EV09SRF9PUDogRml4ICp2YWwgdW5pbml0aWFsaXplZCBidWcKLQotICAgIFRoaXMgcGF0Y2ggaGFzIGJlZW4gc2VudCBvbjoKLSAgICAtIDYgSnVuIDIwMDcKLQotICAgIE1hbnkgdXNlcnMgb2YgUENJIGNvbmZpZyByZWFkIHJvdXRpbmVzIHRlbmQgdG8gaWdub3JlIHRoZSBmdW5jdGlvbgotICAgIHJldCB2YWx1ZSwgYW5kIGFyZSBvbmx5IGNvbmNlcm5lZCBhYm91dCB0aGUgY29udGVudHMgb2YgKnZhbC4gQmFzZWQKLSAgICBvbiB0aGlzLCBwY2lfaG9zZV9yZWFkX2NvbmZpZ197Ynl0ZSx3b3JkfV92aWFfZHdvcmQgc2hvdWxkIGluaXRpYWxpemUKLSAgICB0aGUgKnZhbCBvbiBkd29yZCByZWFkIGVycm9yLgotCi0gICAgV2l0aG91dCB0aGlzIGZpeCwgZm9yIGV4YW1wbGUsIHdlJ2xsIGdvIG9uIHNjYW5uaW5nIGJ1cyB3aXRoIHZlbmRvciBvcgotICAgIGhlYWRlcl90eXBlIHVuaW5pdGlhbGl6ZWQuIFRoaXMgYnJpbmdzIG1hbnkgdW5uZWNlc3NhcnkgY29uZmlnIHRyaWFscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNoaW55YSBLdXJpYmF5YXNoaSA8c2hpbnlhLmt1cmliYXlhc2hpQG5lY2VsLmNvbT4KLQotY29tbWl0IDI2NjY3YjdmYTA1YThiZjJmYzY1ZmI5ZjMyMzBiMDJiMWExMGMzNjcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEF1ZyAxOCAxNDozNzo1MiAyMDA3ICswMjAwCi0KLSAgICBDb2xkRmlyZTogRml4IHNvbWUgcmVtYWluaW5nIHByb2JsZW1zIHdpdGggQ0ZHX0NNRF8KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDgyODBmNmExYzQzMjQ3NjE2YjY4MjI0Njc1MTg4ZTVjY2QxMjQ2NTAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEF1ZyAxOCAxNDozMzowMiAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNGE0NDJkMzE4NmIzMTg5M2I0Zjc3YzZlODJmNjNjNDUxN2E1MjI0YgotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDE2IDE5OjIzOjUwIDIwMDcgLTA1MDAKLQotICAgIENvbGRGaXJlOiBBZGQgTTUyMzVFVkIgUGxhdGZvcm0gZm9yIE1DRjUyM3gKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRjYzFjZDU5NDE4MjdhMDRjZjVjNTFhMDdmY2M0MmU4OTQ1ODk0YWEKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBdWcgMTcgMDk6MzA6MDAgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogZml4IHR5cG8gaW4gRERSMiBwcm9ncmFtbWluZwotCi0gICAgaW50cm9kdWNlZCBpbiB0aGUgaW1wbGVtZW50IGJvYXJkX2FkZF9yYW1faW5mbyBwYXRjaCBhcyBJIHdhcyBjbGVhbmluZyBvdXQgdGhlCi0gICAgbWFnaWMgbnVtYmVycy4gIHNvcnJ5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU1OGZlOTU3ODRkMjUxNGZjOWMyMTAyOGRjNTlmMmIzMTlhMzVkODAKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMTYgMjI6NTM6MDkgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogbW92ZSBmcmVlc2NhbGUgYm9hcmRzIHRvIGJvYXJkcy9mcmVlc2NhbGUKLQotICAgIGluY2x1ZGVzIGJ1aWxkIGZpeGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVhYTRhZDhkOGU3ZTk0NjgyMTk5OTBjNzg3NWQ1ZmRjOWU5NjJmNDcKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMTYgMjI6NTI6NTkgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogc3VwcHJlc3MgdW51c2VkIHZhcmlhYmxlICd2YWw4JyB3YXJuaW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmJlYTQ2Zjc2Zjc2N2I5MTkwNzBiNDgyOWJmMzRjODZiZDIyMzI0OAotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAxNiAyMjo1Mjo0OCAyMDA3IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBpbXBsZW1lbnQgYm9hcmRfYWRkX3JhbV9pbmZvCi0KLSAgICBhZGQgYm9hcmRfYWRkX3JhbV9pbmZvLCB0byBtYWtlIG1lbW9yeSBkaWFnbm9zdGljIG91dHB1dCBtb3JlCi0gICAgY29uc2lzdGVudC4gdS1ib290IGJhbm5lciBvdXRwdXQgbm93IGxvb2tzIGxpa2U6Ci0KLSAgICBEUkFNOiAgMjU2IE1CIChERFIxLCA2NC1iaXQsIEVDQyBvbikKLQotICAgIGFuZCBmb3IgYm9hcmRzIHdpdGggU0RSQU0gb24gdGhlIGxvY2FsIGJ1cywgYSBsaW5lIHN1Y2ggYXMgdGhpcyBpcwotICAgIGFkZGVkOgotCi0gICAgU0RSQU06IDY0IE1CIChsb2NhbCBidXMpCi0KLSAgICBhbHNvIHJlcGxhY2VkIHNvbWUgbWFnaWMgbnVtYmVycyB3aXRoIHRoZWlyIGVxdWl2YWxlbnQgZGVmaW5lIG5hbWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE0Nzc4NTg1ZDEzODlkODZkNTg0NmVmZWMyOWU1ZmNlODkyNjgwY2UKLUF1dGhvcjogVG9ueSBMaSA8dG9ueS5saUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAxNyAxMDozNTo1OSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBTcGxpdCBQSUIgaW5pdCBjb2RlIGZyb20gcGNpLmMgYW5kIGFkZCBRb2MzIEFUTSBjYXJkIHN1cHBvcnQKLQotICAgIFRoZSBwYXRjaCBzcGxpdCB0aGUgUElCIGluaXQgY29kZSBmcm9tIHBjaS5jIHRvIGEgc2luZ2xlIGZpbGUgYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9wcS1tZHMtcGliLmMKLSAgICBBbmQgYWRkIFFvYzMgQVRNIGNhcmQgc3VwcG9ydCBmb3IgTVBDODM2MEVNRFMgYW5kIE1QQzgzMlhFTURTIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieSBUb255IExpIDx0b255LmxpQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4YWUxNThjZDg3YTRhMjU3MjJiMjc4MzUyNjFiNmZmMGZhMmFhNmE3Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMTYgMTU6MDU6MTEgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBNNTQ0NTVFVkIgZm9yIE1DRjU0NDV4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMTQzNmE4NDI2NTRhOGQzOTI3ZDA4MmE4YWU5ZWUwYTEwZGE2MmQ3Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMTYgMTM6MjA6NTAgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IEFkZCBNNTI1M0VWQkUgcGxhdGZvcm0gZm9yIE1DRjUyeDIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE2MDVhYWNkODMyNDA5NDE5OTQwMjgxNmNjNmQ5MTI0YWJhNTdiOGQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAxNiAwNTowNDozMSAyMDA3IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogQWRkIE01MjQ5RVZCIHBsYXRmb3JtIGZvciBNQ0Y1MngyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmMjhlMWJkOWRhYTZkZTVlYjMzYWU0ODIyYmRhNmIwMDhjY2I0ZTllCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMjA6MzI6MDYgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IFVwZGF0ZSBGcmVlc2NhbGUgTUNGNTJ4MiBwbGF0Zm9ybXMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg3MDQ3MGRiZjZmNGJiOTg2NGUwZDk3YWVlZGJjMTdjMTY3YzZkMWMKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAxOTo1NToxMCAyMDA3IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogVXBkYXRlIEVCK01DRi1FVjEyMyBwbGF0Zm9ybQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWE5M2Q4NTlkOWIxZmNkOGVlYTUyZDUxYjA2ZTg2YzM4ZjcyMTExYgotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDE5OjQ2OjM4IDIwMDcgLTA1MDAKLQotICAgIENvbGRGaXJlOiB1cGRhdGUgVEFTUkVHIHBsYXRmb3JtIGZvciBNQ0Y1MngyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhOTUwNTUxMGJmNTZhOWI1NTU4MjQ4ZGQ4YjczZWM5ZDlhMTU1NmEyCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMTk6NDU6NTEgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IHVwZGF0ZSByNTIwMCBwbGF0Zm9ybSBmb3IgTUNGNTJ4MgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNmNmZDNjN2JjODEzZmIzMTdhYjdjMDc4MWYwZDE4NzRiMWMwODc3YwotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDE5OjQzOjIwIDIwMDcgLTA1MDAKLQotICAgIENvbGRGaXJlOiBpZG1yIHBsYXRmb3JtIE1DRjUyeDIgdXBkYXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2NzA2NDI0ZDBiYjg1MWZiNTJhZjAwY2QxYzMzMDFlOTFlZTdmMmIwCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMTk6NDE6MDYgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IGNvYnJhNTI3MiBwbGF0Zm9ybSBmb3IgTUNGNTJ4MiB1cGRhdGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDU2MTE1NjY1YjRhNjRjMTBjMDE0NDBjNTc3NDliMjY1ZTA5MDhmYTQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAxOTozODoxNSAyMDA3IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTJ4MiBIZWFkZXIgZmlsZXMgdXBkYXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4M2VjMjBiYzQzODBlZWJkZGZkZTQ1ZGE2ZTNhNjlhOTJkNGRiMjFkCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMTk6MjE6MjEgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IE1DRjUyeDIgdXBkYXRlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNTJlNzgzMDRkY2MwYWM0NTljMGVhMWZhNWJlMjc1YzdkMTY0MmNmCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMTg6NDY6MTEgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IE1DRjUzMjkgdXBkYXRlIGNhY2hlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3MTcxOTc3ZmI4ZmQ3N2NmYjY2NzY5NTNmYTlhMDU3ODljNDUwNTEzCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMTU6NDA6MjAgMjAwNyAtMDUwMAotCi0gICAgQ29sZEZpcmU6IE1DRjUzMjkgaGVhZGVyIGZpbGUgY2xlYW4gdXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFiNzdiYzU0N2JhNTYxYzI1ZWEzNDQ1N2VkMTdhYTBiMmY3YzI3MjMKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAxNTozOToxNyAyMDA3IC0wNTAwCi0KLSAgICBDb2xkRmlyZTogTUNGNTMyOSBVcGRhdGUgYW5kIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDEwMzI3ZGM1NTQxZjk0N2MwY2Y3ZTMxZmVmODZjNDcwNjE2OTYwN2EKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAxNiAxNjozNTowMiAyMDA3IC0wNTAwCi0KLSAgICBBZGQgQ09ORklHX0hBU19FVEgwIHRvIGFsbCBib2FyZHMgd2l0aCBUU0VDCi0KLSAgICBUaGUgODV4eCBjb2RlIG5vdyByZWxpZXMgb24gQ09ORklHX0hBU19FVEgwIHRvIGRldGVybWluZSB3aGV0aGVyCi0gICAgdG8gdXBkYXRlIFRTRUMxJ3MgZGV2aWNlLXRyZWUgbm9kZSwgc28gd2UgbmVlZCB0byBhZGQgaXQKLSAgICB0byBhbGwgdGhlIGJvYXJkcyB3aXRoIFRTRUNzLiAgRG8gdGhpcyBmb3IgODN4eCBhbmQgODZ4eCwgdG9vLAotICAgIHNpbmNlIHRoZXkgd2lsbCBldmVudHVhbGx5IGRvIHNvbWV0aGluZyBzaW1pbGFyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDY0ZWU5MDhhMWI1MjVlNWJiMmI0Y2JlYjVjNDQ5YWQ2YTQ2OTY2NgotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEF1ZyAxNiAxNTowNTowNCAyMDA3IC0wNTAwCi0KLSAgICBVcGRhdGUgTVBDODU0NCBEUyBQQ0kgbWVtb3J5IG1hcAotCi0gICAgVGhlIFBDSWUgYnVzIHRoYXQgdGhlIFVMSSBNMTU3NSBpcyBjb25uZWN0ZWQgdG8gaGFzIG5vIHBvc3NpYmxlIHdheSBvZgotICAgIG5lZWRpbmcgbW9yZSB0aGFuIHRoZSBmaXhlZCBhbW91bnQgb2YgSU8gJiBNZW1vcnkgc3BhY2UgbmVlZGVkIGJ5IHRoZSBVTEkuCi0KLSAgICBTbyBtYWtlIGl0IHVzZSBmYXIgbGVzcyBJTyAmIG1lbW9yeSBzcGFjZSBhbmQgaGF2ZSBpdCB1c2UgdGhlIHNoYXJlZCBMQVcuICBUaGlzCi0gICAgZnJlZSdzIHVwIGEgTEFXIGZvciBQQ0llMSBJTyBzcGFjZS4gIEFsc28gcmVkdWNlIHRoZSBhbW91bnQgb2YgSU8gc3BhY2UgbmVlZGVkCi0gICAgYnkgZWFjaCBidXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgZWE1ODc3ZTMxZWQ2M2FkZTk0OGZkMTI5Mzg5NWVjMjNmZTAxNDcyZQotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJVGh1IEF1ZyAxNiAxMTowMToyMSAyMDA3IC0wNTAwCi0KLSAgICBGaXggdXAgc29tZSBmZHQgaXNzdWVzIG9uIDg1NDREUwotCi0gICAgSXQgbG9va3MgbGlrZSB3ZSBoYWQgYSBtZXJnZSBpc3N1ZSB0aGF0IGR1cGxpY2F0ZWQgYSBiaXQgb2YgY29kZQotICAgIGluIGZ0X2JvYXJkX3NldHVwLglBbHNvLCB3ZSBuZWVkIHRvIHNldCBDT05GSUdfSEFTX0VUSDAgdG8gZ2V0Ci0gICAgdGhlIE1BQyBhZGRyZXNzIHByb3Blcmx5IHNldCBpbiB0aGUgZGV2aWNlIHRyZWUgb24gYm9vdCBmb3IgVFNFQzEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCAwN2JjMjA1NjBjYjlkM2QxODZjY2EyNjhjMDVjODI3NjJlOGM1NWFkCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglUaHUgQXVnIDE2IDE1OjE2OjAzIDIwMDcgKzAyMDAKLQotICAgIFBQQzR4eDpIQ1U0LzUgY2xlYW51cAotCi0gICAgTWlub3IgY2xlYW51cHMgdG8gY29uZmlybSB0byB0aGUgdS1ib290IGNvZGluZyBzdHlsZS4KLSAgICBTb21lIGdlcm1hbiBleHByZXNzaW9ucyAtPiBlbmdsaXNoLgotICAgIEhDVTUgZW5mb3JjZXMgYSB1bmlxdWUgSVAgYWRyZXNzIGZvciBhIGdpdmVuIHNsb3QgaW4gdGhlIHJhY2suCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgMWU2YjA3YzY0OTY3YzFlYjJjZDg0ZmFhNGMzMmJmMmE3NjliYzhlYgotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotRGF0ZToJVGh1IEF1ZyAxNiAxNToxNjowMiAyMDA3ICswMjAwCi0KLSAgICBQUEM0eHg6SENVNC81IGNsZWFudXAgZWNjL3NkcmFtIGluaXQKLQotICAgIE1ha2UgZWNjIGluaXRpYWxpc2F0aW9uIHJvYnVzdCwgYXMgRERSMi1FQ0MgZXJyb3JzIG1heSBiZSBnZW5lcmF0ZWQKLSAgICB3aGlsZSB6ZXJvaW5nIHRoZSBSQU0uCi0KLSAgICBSZXR1cm4gMTYgYnl0ZXMgKGEgY2FjaGVsaW5lKSBsZXNzIHRoYW4gdGhlIGF2YWlsYWJsZSBtZW1vcnksIGFzIHRoZQotICAgIGJvYXJkIGFuZC9vciBQUEM0NDBFUHggbWlnaHQgaGF2ZSBwcm9ibGVtcyBhY2Nlc3NpbmcgdGhlIGxhc3QgYnl0ZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgZDM1YjUwOGE1NTUwODUzNWI2ZTg0NDViNzE4NTg1ZDI3ZGY3MzNkMwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAyMjoyOTo1NiAyMDA3IC0wNTAwCi0KLSAgICBmZHQ6IHN1cHByZXNzIHVudXNlZCB2YXJpYWJsZSAnYmQnIHdhcm5pbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4MmJkOWVlNzc0OTA1ODhkNGRhNzg1ZDc1ODI5Y2E2M2QwMTc2YmFmCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMjA6MDY6NTAgMjAwNyAtMDUwMAotCi0gICAgRml4IHdhcm5pbmdzIGZyb20gb2ZfZGF0YSBjb3B5IGZpeAotCi0gICAgRm9yZ290IHRvIGNhc3Qgb2ZfZmxhdF90cmVlIHRvIHVsb25nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzYxM2FmZGE3N2Q1ZWVjMGY0N2QzMDMwMjViMGM2NjFiNzBlNGM3MwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIwOjAzOjQ0IDIwMDcgLTA1MDAKLQotICAgIERvbid0IHdhaXQgZm9yIGRpc2Nvbm5lY3RlZCBUU0VDcwotCi0gICAgVGhlIFRTRUMgZHJpdmVyJ3MgUEhZIGNvZGUgd2FpdHMgYSBsb25nIHRpbWUgZm9yIGF1dG9uZWdvdGlhdGlvbiB0bwotICAgIGNvbXBsZXRlLCBldmVuIGlmIHRoZSBsaW5rIGlzIGRvd24uICBUaGUgUEhZIGtub3dzIHRoZSBsaW5rIGlzCi0gICAgZG93biBvciB1cCBiZWZvcmUgYXV0b25lZ290aWF0aW9uIGNvbXBsZXRlcywgc28gd2UgY2FuIHNob3J0LWNpcmN1aXQKLSAgICB0aGUgcHJvY2VzcyBpZiB0aGUgbGluayBpcyBkb3duLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjk2YzgzZDRhZTQ3NWE3MGVmMjYzNWNkMGU3NDgxNzRjNDRjODYwMQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIwOjAzOjM0IDIwMDcgLTA1MDAKLQotICAgIEZpeCBudW1lcm91cyBidWdzIGluIHRoZSA4NTY4IFVFQyBzdXBwb3J0Ci0KLSAgICBBY3R1YWxseSwgZml4ZWQgYSBsYXJnZSBidWcgaW4gdGhlIFVFQyBmb3IgKmFsbCogcGxhdGZvcm1zLgotICAgIEhvdyBkaWQgdGhpcyBldmVyIHdvcms/Ci0KLSAgICB1ZWNfaW5pdCgpIGRpZCBub3QgZm9sbG93IHRoZSBzcGVjIGZvciBldGhfaW5pdCgpLCBhbmQgcmV0dXJuZWQKLSAgICAwIG9uIHN1Y2Nlc3MuICBTd2l0Y2ggaXQgdG8gcmV0dXJuIHRoZSBsaW5rIGxpa2UgdHNlY19pbml0KCkKLSAgICAoYW5kIDAgb24gZXJyb3IpCi0KLSAgICBUaGUgaW1tYXAgZm9yIHRoZSA4NTY4IHdhcyBkZWZpbmVkIGJhc2VkIG9uIE1QQzg1NjgsIHJhdGhlciB0aGFuCi0gICAgQ09ORklHX01QQzg1NjgKLQotICAgIENPTkZJR19RRSB3YXMgb2ZmCi0KLSAgICBDT05GSUdfRVRIUFJJTUUgd2FzIHNldCB0byAiRnJlZXNjYWxlIEdFVEgiLiAgTm93IGlzICJGU0wgVUVDMCIKLQotICAgIEZpeGVkIGEgY29tbWVudCBhYm91dCB0aGUgcmFuZ2VzIGZvciBDT05GSUdfRVRIUFJJTUUgaWYgVFNFQ19FTkVUIGlzCi0gICAgZW5hYmxlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2E3OTAxM2UyYWRkYTUzMzMyZGZkMGI1MTEwNjZhODA1ZTkyOWE5ZAotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIwOjAzOjI1IDIwMDcgLTA1MDAKLQotICAgIERlZmluZSB0c2VjIGZsYWcgdmFsdWVzIGluIGNvbmZpZyBmaWxlcwotCi0gICAgVGhlIHRzZWNfaW5mbyBzdHJ1Y3R1cmUgYW5kIGFycmF5IGhhcyBhICJmbGFncyIgZmllbGQgZm9yIGVhY2gKLSAgICBldGhlcm5ldCBjb250cm9sbGVyLiAgVGhpcyBmaWVsZCBpcyB0aGUgb25seSByZWFzb24gdGhlcmUgYXJlCi0gICAgc2V0dGluZ3MuICBTd2l0Y2ggdG8gZGVmaW5pbmcgVFNFQ25fRkxBR1MgZm9yIGVhY2ggY29udHJvbGxlcgotICAgIGluIHRoZSBjb25maWcgaGVhZGVyLCBhbmQgd2UgY2FuIGdyZWF0bHkgc2ltcGxpZnkgdGhlIGFycmF5LCBhbmQKLSAgICBhbHNvIHNpbXBsaWZ5IHRoZSBhZGRpdGlvbiBvZiBmdXR1cmUgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZWM3MjM4MjI5NTA3ZTdmNDc1MzNhNjExZWE4YzUzMzE5ZDIzNGNmMwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIwOjAzOjEzIDIwMDcgLTA1MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBidWlsZGluZyBhbGwgYm9hcmRzIHdpdGggYSBUU0VDCi0KLSAgICBDaGFuZ2VzIHRvIHRoZSBUU0VDIGRyaXZlciBhZmZlY3QgYWxtb3N0IGFsbCA4M3h4LCA4NXh4LCBhbmQgODZ4eCBib2FyZHMuCi0gICAgTm93IHdlIGNhbiBkbyBhIE1BS0VBTEwgdGVzdCBvbiBhbGwgb2YgdGhlbSEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDEwYWFmNzE2Y2IwZGM2NjE0ZGY1NGVmNzhiZWQ1MTQ0YWZkMjNlZjgKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAxNzozMDo1NiAyMDA3IC0wNTAwCi0KLSAgICBGaXggb2ZfZGF0YSBjb3B5aW5nIGZvciBDT05GSUdfT0ZfRkxBVF9UUkVFLXVzaW5nIGJvYXJkcwotCi0gICAgVGhlIGZpeCwgIkZpeCB3aGVyZSB0aGUgI2lmZGVmIENGR19CT09UTUFQU1ogaXMgcGxhY2VkIgotICAgIG5lZ2xlY3RlZCB0byAqYWxzbyogcHV0IHRoZSBjb2RlIGluc2lkZSB0aGUgc2ltaWxhciAjaWZkZWYKLSAgICBmb3IgQ09ORklHX09GX0ZMQVRfVFJFRS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc4ZjlmZWY3ZjQwNjA3OGM4YmY3MTkxZTY2NWE3M2Y3OTUxNTc3NDYKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDE1OjQ2OjQ2IDIwMDcgLTA1MDAKLQotICAgIG1wYzg4NWFkczogRG9uJ3QgZGVmaW5lIENPTkZJR19CWklQMi4KLQotICAgIGJ6aXAyIHJlcXVpcmVzIGEgc2lnbmlmaWNhbnQgY2h1bmsgb2YgbWFsbG9jIHNwYWNlLCBhbmQgdGhlcmUgaXNuJ3QKLSAgICBlbm91Z2ggcm9vbSBvbiBtcGM4ODVhZHMgKHdpdGggb25seSA4TUIgUkFNKSBmb3IgYm90aCBiemlwMidzIG1hbGxvYyBhcmVhCi0gICAgYW5kIGEgZG93bmxvYWRlZCBpbWFnZSBhdCAweDQwMDAwMC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDAyMjc1YTNlZDhiMTE0ODg1ZjY3MDJkNmQ1NDRkMDc4MGRmZTY4OQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPE1vbnN0ckBzZXpuYW0uY3o+Ci1EYXRlOglUaHUgQXVnIDE2IDA4OjU0OjEwIDIwMDcgKzAyMDAKLQotICAgIEJpb3MgZW11bGF0b3IgLSBmaXggbWljcm9ibGF6ZSB0b29sY2hhaW4gcHJvYmxlbQotCi0gICAgbWljcm9ibGF6ZSBDUFUgaGF2ZSBwcm9ibGVtIHdpdGggYmlvc19lbXVsYXRvciBjb2RlLgotICAgIE1pY3JvYmxhemUgdG9vbGNoYWluIGRvZXNuJ3Qgc3VwcG9ydCBQUkFHTUEgUEFDSy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLQotY29tbWl0IGE1YTM4ZjRmZDdlNTM2NmQ3MDZmZjZhOTg1ZjliNjcxNWRkYmM5OGIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBBdWcgMTYgMTE6NTE6MDQgMjAwNyArMDIwMAotCi0gICAgTWlub3IgQ29kaW5nIFN0eWxlIGZpeDsgVXBkYXRlIENIQU5HRUxPRyBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDhmYjZlODBjMDY4NDllMzAxM2FjNWM5MzUwZDhlZDllNTI5Njc5OTEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyAxNiAxMToyMTo0OSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFJlbW92ZSAjd2FybmluZyBpbiBlc2QgYXV0b191cGRhdGUuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmQ3ODA3NGQyZTgwNmVkYzM4MGMxNDY0ZWI5ZTVkZjMzNWVjZTY1ZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDIyIDE3OjMyOjI4IDIwMDcgKzAyMDAKLQotICAgIHBwYzd4eDogVXBkYXRlIENQQ0k3NTAgYm9hcmQKLQotICAgIFRoaXMgc21hbGwgQ1BDSTc1MCB1cGRhdGUgZXh0ZW5kcyB0aGUgYm9hcmQgc3BlY2lmaWMgY29tbWFuZAotICAgICJzaG93X2NvbmZpZyIgdG8gZGlzcGxheSB0aGUgTWFydmVsbCBzdHJhcHBpbmcgcmVnaXN0ZXJzIGFuZAotICAgIGV4dGVuZHMgdGhlIFBDSSBJREUgY29udHJvbGxlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJlaW5oYXJkIEFybHQgPHJlaW5oYXJkLmFybHRAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3OGNmZjUwZWRiYTZiMTUwOGViMTVjMmY1M2NlOTY2YWM4OTFlYjllCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVRodSBBdWcgMTYgMTA6NDY6MjggMjAwNyArMDIwMAotCi0gICAgW0ZJWF0gQ2hhbmdlcyBmb3IgYmlvc19lbXVsYXRvciBjb2RlIGZvciBvdGhlcnMgYXJjaGl0ZWN0dXJlCi0KLWNvbW1pdCA2ZTBlMjI1M2YwMzkzNDRmOGViZDI3ODcyODVmZGJhOTBlNjcxNGU4Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVRodSBBdWcgMTYgMTA6NDU6MDkgMjAwNyArMDIwMAotCi0gICAgW0ZJWF0gUmVtb3ZlIHVudXNlZCBpbmNsdWRlIGZpbGUKLQotY29tbWl0IDlkZTQ2OWJkOTYwY2MxODcwYmI0MGQ2NjcyZWQ0MjcyNmI4YjUwZDcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyAxNiAxMDoxODozMyAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IE9ubHkgZW5hYmxlIFBPU1QgRlBVIHRlc3Qgb24gU2VxdW9pYSBhbmQgbm90IFJhaW5pZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZkYTBjNWJkNGE1M2U0MGViNGY3ZWI3MmE0YzA1MWVjYWJhZDc4M2MKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEF1ZyAxNiAwOTo1NDo1MSAyMDA3ICswMjAwCi0KLSAgICBBZGQgbWlzc2luZyByYWluaWVyIChQUEM0NDBHUngpIHRhcmdldCB0byBNQUtFQUxMIGFuZCBNQUlOVEFJTkVScyBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDJiYTcwMjJmNjJiYjc1OTA4Mjk2YzU4YzYzODY2ZTFkMjk0YjY5YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDE2IDA5OjUyOjI5IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIFNlcXVvaWEvUmFpbmllciBib290c3RyYXAgY29tbWFuZAotCi0gICAgQXMgc3VnZ2VzdGVkIGJ5IERhdmlkIE1pdGNoZWxsLCBoZXJlIGFuIHVwZGF0ZSBmb3IgdGhlIFNlcXVvaWEvUmFpbmllcgotICAgIGJvb3RzdHJhcCBjb21tYW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzVjYzRlNDgyMzY2OGU4NzQ1ODU0ODk5Y2ZhZWRkNDQ4OWJlYjBlZgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAyMjozMDozOSAyMDA3IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBlbmFibGUgbGliZmR0IGJ5IGRlZmF1bHQgb24gZnJlZXNjYWxlIGJvYXJkcwotCi0gICAgdGhpcyBlbmFibGVzIGxpYmZkdCBjb2RlIGJ5IGRlZmF1bHQgZm9yIHRoZQotICAgIGZyZWVzY2FsZSBtcGM4MzEzZXJkYiwgbXBjODMyeGVtZHMsIG1wYzgzNDllbWRzLAotICAgIG1wYzgzNDlpdHggYW5kIGdwIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzZmRlOWU4YjIyY2ZiZDdhZjQ4OTIxNDc1OGY5ODM5YTIwNjU3NmNiCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIyOjMwOjMzIDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IG1pZ3JhdGUgcmVtYWluaW5nIGZyZWVzY2FsZSBib2FyZHMgdG8gbGliZmR0Ci0KLSAgICB0aGlzIGFkZHMgbGliZmR0IHN1cHBvcnQgY29kZSBmb3IgdGhlIGZyZWVzY2FsZQotICAgIG1wYzgzMTNlcmRiLCBtcGM4MzJ4ZW1kcywgbXBjODM0OWVtZHMsIG1wYzgzNDlpdHgsCi0gICAgYW5kIGdwIGJvYXJkcy4KLQotICAgIEJvYXJkcyByZW1haW4gY29tcGF0aWJsZSB3aXRoIE9GX0ZMQVRfVFJFRS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2YTE2ZTBkZmNjNDExOWI0NmFkYjFkY2UyZDZjOGZiM2M1ZDEwOGUxCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIyOjMwOjI2IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IG1vdmUgY29tbW9uIC9tZW1vcnkgbm9kZSB1cGRhdGUgbWVjaGFuaXNtIHRvIGNwdS5jCi0KLSAgICBhbHNvIGFkZHMgY29tbW9uIHByb3RvdHlwZXMgdG8gaW5jbHVkZS9jb21tb24uaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4ZjllMGU5ZjMzOWFlZTRjZTMxYTMzOGQ1ZjI3MzU2ZWI1NDU3Zjg1Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIyOjMwOjE5IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IHJlbWFpbmluZyA4MzYwIGxpYmZkdCBmaXhlcwotCi0gICAgUENJIGNsb2NrcyBhbmQgUUUgZnJlcXVlbmNpZXMgd2VyZW4ndCBiZWluZyB1cGRhdGVkLCBhbmQgdGhlIGNvcmUgY2xvY2sKLSAgICB3YXMgYmVpbmcgdXBkYXRlZCBpbmNvcnJlY3RseS4gIFRoaXMgcGF0Y2ggYWxzbyBhZGRzIGEgL21lbW9yeSBub2RlIGlmCi0gICAgaXQgZG9lc24ndCBhbHJlYWR5IGV4aXN0IHByaW9yIHRvIHVwZGF0ZS4KLQotICAgIHBsdXMgc29tZSBjb3NtZXRpYyB0cmltbWluZyB0byBzaW5nbGUgbGluZSBjb21tZW50cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNGIyYWM1ZWQ5YWFmZjk5MjBkNDg3YmZmOGE1OTY5NmMwODNhNTI0Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIyOjMwOjEyIDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IGZpeCBVRUMyLT4xIHR5cG8gaW4gbGliZmR0IHNldHVwIGNvZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxOWZhMWMzNTM2ODQ4NGQ0ZWQxMGRkY2U4YTc3OTNjMjE4NjJlM2EzCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDIyOjMwOjA1IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IGFkZCBNQUlOVEFJTkVSIGFuZCBNQUtFQUxMIGVudHJpZXMgZm9yIHRoZSBtcGM4MzIzZXJkYgotCi0gICAgYW5kIHJlb3JkZXIgdGhlIGV4aXN0aW5nIDgzeHggbWFpbnRhaW5lcnMgYWxwaGEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWI0ZGU5MzA5ZDdhMDNhYTFkYjJlNTM5MWFiNjk2MzYzMzkxZjQ2MAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglXZWQgQXVnIDE1IDIxOjE1OjA1IDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIFJlc29sdmUgcHJvYmxlbSB3aXRoIHdhcm5pbmdzCi0gICAgbWljcm9ibGF6ZSB0b29sY2hhaW4gZG9uJ3Qgc3VwcG9ydCBQUkFHTUEgUEFDSy4KLQotY29tbWl0IGQxZWQyOGNmMzZhYjZiMWQ0YzQ3OTgwOWRlNzI1MmJmNTNkMmYyZDQKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJV2VkIEF1ZyAxNSAyMTowNTowNyAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBDb3JyZWN0aW9uIGNvbW1hbmQgc2V0dGluZyBmb3IgTWljcm9ibGF6ZSBib2FyZHMKLQotY29tbWl0IDdhYTYzZDhjZDMwYWIyMGFjMmZkMWFiODZlNjA0NzFkZThiMWYxZTUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJV2VkIEF1ZyAxNSAyMTowMzo0MSAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBDb3JyZWN0aW9uIGNvbW1hbmQgZGVmaW5pdGlvbgotCi1jb21taXQgMzBiNTJkZjllOTA2YmYwZTQ2NTkxNmMyYzZiYjUxOTJiNDM4ZTBiOAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAxMTo1NTozNSAyMDA3IC0wNTAwCi0KLSAgICA4Nnh4OiBGaXggbGluZ2VyaW5nIENGR19DTURfKiByZWZlcmVuY2VzIGluIHNiYzg2NDFkLmgKLQotICAgIFJlbW92ZSBhIGxlZnRvdmVyIGluIG5ldC90ZnRwLmMgd2hpbGUgd2UncmUgYXQgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNGNlOTE3NzQyYjFlNDhmYWE5YmY5YTk3NTc1NDVlNTZmYjRjZmU0NAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAxMjoyMDo0MCAyMDA3IC0wNTAwCi0KLSAgICBNb3ZlIHRoZSBNUEM4NjQxSFBDTiBib2FyZCB1bmRlciBib2FyZC9mcmVlc2NhbGUuCi0KLSAgICBNaW5vciBwYXRoIGNvcnJlY3Rpb25zIG5lZWRlZCB0byBlbnN1cmUgYnVpbGRhYmlsaXR5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg2NjI1NzdmZTM2ZmRiNmE0NGI1NWI5OThkOWRhYWM2MzkyYTczNmEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTUgMTE6NDY6MjIgMjAwNyAtMDUwMAotCi0gICAgODZ4eDogRml4IGxpbmdlcmluZyBDRkdfQ01EXyogcmVmZXJlbmNlcyBpbiBzYmM4NjQxZC5oCi0KLSAgICBSZW1vdmUgYSBsZWZ0b3ZlciBpbiBuZXQvdGZ0cC5jIHdoaWxlIHdlJ3JlIGF0IGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDIxMGY0NjNjNzE5MTdiN2E0NDk1YzIxMDNjMjI4YjljMTc5YWU2NGQKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJV2VkIEF1ZyAxNSAxMToxMzoxNSAyMDA3IC0wNDAwCi0KLSAgICBGaXggd2hlcmUgdGhlICNpZmRlZiBDRkdfQk9PVE1BUFNaIGlzIHBsYWNlZC4KLQotICAgIENvbW1pdCAwNzNlMWI1MDk5ODBjZWZlNmY1M2MyZDdmYmJjZDEzNWRmMWUzOTI0ICJGaXggaW5pdHJkL2R0YgotICAgIGludGVyYWN0aW9uIiBwdXQgdGhlIG5ldyBjb2RlIG91dHNpZGUgb2YgdGhlICNpZiBkZWZpbmVkKENPTkZJR19PRl9MSUJGRFQpCi0gICAgd2hlbiBpdCBzaG91bGQgaGF2ZSBnb25lIGluc2lkZSBvZiB0aGUgY29uZGl0aW9uYWwuICBBcyBhIHJlc3VsdCwgaXQKLSAgICBicm9rZSBub24tTElCRkRUIGJvYXJkIGJ1aWxkcy4KLQotICAgIEFsc28gYWRkZWQgYSBtaXNzaW5nICJub3QuIiB0byB0aGUgY29tbWVudC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCAwZTE5MjA5NzY3MTk0YTk3Y2VjNmQ5M2RiYTllNjRkMWRhOGQ1NDhlCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci1EYXRlOglXZWQgQXVnIDE1IDEyOjE0OjIzIDIwMDcgKzAyMDAKLQotICAgIFBQQzR4eDpIQ1U0LzUtQm9hcmQgZml4IGNvbXBpbGUgd2FybmluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDU5NGU3OTgzOGNlNTA3OGE5MGQwYzI3YWJiMmIyZDYxZDVmOGU4YTcKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTQgMTQ6MDY6NDUgMjAwNyAtMDUwMAotCi0gICAgRml4IG1hbGxvYyBzaXplIGVycm9yIGluIGFoY2lfaW5pdF9vbmUuCi0KLSAgICBUeXBpY2FsbHkgdGhpcyBjYXVzZXMgc2NzaSBpbml0IHRvIGNvcnJ1cHQgdGhlCi0gICAgZGV2bGlzdCBhbmQgYnJlYWsgdGhlIGNvbmluZm8gY29tbWFuZC4KLSAgICBGaXggYSBjb21waWxlciBzaXplIHdhcm5pbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPGphc29uLmppbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGIzNjFhY2Q2NGZkMjUyNWMwODFiOWIyODhiMDgwNGVmZTIwOWMwZTkKLUF1dGhvcjoga3NpQGtvaTgubmV0IDxrc2lAa29pOC5uZXQ+Ci1EYXRlOglUdWUgQXVnIDE0IDEwOjAyOjE2IDIwMDcgLTA3MDAKLQotICAgIFRJIERhVmluY2kgLSBmaXggdW5zdXBwb3J0ZWQgJWhoeCBmb3JtYXQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgotCi1jb21taXQgZjAxZGJiNTQyNGE4MTQ1M2M4MTE5MGRkMzBlOTQ1ODkxNDY2ZjYyMQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxNCAxODo0MjozNiAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAwNzNlMWI1MDk5ODBjZWZlNmY1M2MyZDdmYmJjZDEzNWRmMWUzOTI0Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTQgMTA6MzI6NTkgMjAwNyAtMDUwMAotCi0gICAgRml4IGluaXRyZC9kdGIgaW50ZXJhY3Rpb24KLQotICAgIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIHdyb25nbHkgcmVsb2NhdGUgdGhlIGJsb2IgdG8gYmUgcmlnaHQgYmVmb3JlCi0gICAgdGhlIGluaXRyZCBpZiBpdCBleGlzdGVkLiAgVGhlIGJsb2IgKm11c3QqIGJlIHdpdGhpbiBDRkdfQk9PVE1BUFNaLAotICAgIGlmIGl0IGlzIGRlZmluZWQuICBTbyB3ZSBtYWtlIHR3byBjaGFuZ2VzOgotCi0gICAgMSkgZmxhZyB0aGUgYmxvYiBmb3IgcmVsb2NhdGlvbiB3aGVuZXZlciBpdHMgYWRkcmVzcyBpcyBhYm92ZSBCT09UTUFQU1oKLQotICAgIDIpIElmIHRoZSBibG9iIGlzIGJlaW5nIHJlbG9jYXRlZCwgcmVsb2NhdGUgaXQgYmVmb3JlIGtiZCwgbm90IGluaXRyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTU0Yjk3MDE3Mzc2OTMwN2ExMTZiZDM0MDI4YjZkMGMyZWVhMmE0ZQotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJVHVlIEF1ZyAxNCAxNTo0MDowMCAyMDA3ICswMTAwCi0KLSAgICBTdXBwbHkgc3BpIGludGVyZmFjZSBpbiBhdDQ1LmMKLQotY29tbWl0IDRjZTg0NmVjNTlmMzZiODVkNjY0NGE3Njk2OTBhZDNmZWI2Njc1NzUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxNCAxNToxMjowMSAyMDA3ICswMjAwCi0KLSAgICBQT1NUOiBGaXggbWVyZ2UgcHJvYmxlbQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDI5ZDk1NzFmNjA2MzFhZThhMmZlMTJiMTFiZTRjNzViMGMyYjM3YwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXVnIDE0IDE1OjAzOjE3IDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3NzllOTc1MTE3YTc1ZTkxZmNlYmUyMjZhNjMxMDRkYmZiOTI0YWIxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMTQgMTQ6NDQ6NDEgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgaW5pdGlhbCBaZXVzIChQUEM0MDVFUCkgYm9hcmQgc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzVhMTcyYTVmZDYzNmMxMjQ2NzQyOWUzZjc5MTBlNTM3NzM5NzljNgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXVnIDE0IDE0OjQxOjU1IDIwMDcgKzAyMDAKLQotICAgIFBPU1Q6IEFkZCBvcHRpb24gZm9yIGV4dGVybmFsIGV0aGVybmV0IGxvb3BiYWNrIHRlc3QKLQotICAgIFdoZW4gQ0ZHX1BPU1RfRVRIRVJfRVhUX0xPT1BCQUNLIGlzIGRlZmluZWQsIHRoZSBldGhlcm5ldCBQT1NUCi0gICAgaXMgbm90IGRvbmUgdXNpbmcgYW4gaW50ZXJuYWwgbG9vcGJhY2sgY29ubmVjdGlvbiwgYnV0IGJ5IGFzc3VtaW5nCi0gICAgdGhhdCBhbiBleHRlcm5hbCBsb29wYmFjayBjb25uZWN0b3IgaXMgcGx1Z2dlZCBpbnRvIHRoZSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGViMmI0MDEwYWU0MjYyNDUxNzI5ODg4MDRlZThkOTE5M2ZiNDEwMzgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxNCAxNDozOTo0NCAyMDA3ICswMjAwCi0KLSAgICBQT1NUOiBBZGQgcHBjNDA1IHN1cHBvcnQgdG8gY2FjaGUgYW5kIFVBUlQgUE9TVAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGM0MmYzNmYxNTA3NGJkOTgwOGE3ZGJkN2VmNjExZmFkOWJmNTM3YwotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJVHVlIEF1ZyAxNCAxMDo0NjozMiAyMDA3ICswMTAwCi0KLSAgICBSZXBsYWNlIGxvc3QgZW5kIG9mIGF0NDUuYy4KLQotY29tbWl0IDY1ZDdhZGE2NDU1N2U3NjA5NGI0ZmQzYmFkMzBhMGYxOGY1ZmIyYjIKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTQgMTA6MzA6MDYgMjAwNyArMDEwMAotCi0gICAgVXBkYXRlIE1ha2VmaWxlcyBmb3IgbWVyZ2VkIGFuZCBzcGxpdCBhdDQ1LmMuCi0KLWNvbW1pdCAzNDU0Y2VjZTJkYjU3Y2I5ZWI3MDg3OTk1ZjdlNzMwNjZhMTYzZjcxCi1BdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci1EYXRlOglUdWUgQXVnIDE0IDEwOjIxOjA2IDIwMDcgKzAxMDAKLQotICAgIERlbGV0ZSB0aGUgbWVyZ2VkIGZpbGVzLgotCi1jb21taXQgZGNiZmQyZTU2NDlmOTdhYTA0ZmJiYzZlYTJiMDA4YWE0NDg2ZTIyNQotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJVHVlIEF1ZyAxNCAxMDoxNDowNSAyMDA3ICswMTAwCi0KLSAgICBBZGQgdGhlIGZpbGVzLgotCi1jb21taXQgZDRmYzYwMTJmZDBhNWMyMTFiODI1NjkxZjQ0YjA2ZjgwMzJjMDU1MQotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJVHVlIEF1ZyAxNCAxMDoxMDo1MiAyMDA3ICswMTAwCi0KLSAgICBBZGQgTUFDSF9UWVBFIHJlY29yZHMgZm9yIHNldmVyYWwgQVQ5MSBib2FyZHMuCi0gICAgTWVyZ2UgdG8gdHdvIGF0NDUuYyBmaWxlcyBpbnRvIGEgY29tbW9uIGZpbGUsIHNwbGl0IHRvIGF0NDUuYyBhbmQgc3BpLmMKLSAgICBGaXggc3BlbGxpbmcgZXJyb3IgaW4gRE05MTYxIFBIWSBTdXBwb3J0LgotICAgIEluaXRpYWxpemUgYXQ5MXJtOTIwMCBib2FyZCAoYW5kIHNldCBMRUQpLgotICAgIEFkZCBQSU8gY29udHJvbCBmb3IgYXQ5MXJtOTIwMGRrIExFRHMgYW5kIE11eC4KLSAgICBDaGFuZ2UgZGF0YWZsYXNoIHBhcnRpdGlvbiBib3VuZGFyaWVzIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBMaW51eCAyLjYuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OglQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotICAgIFNpZ25lZC1vZmYtYnk6CVVsZiBTYW11ZWxzc29uIDx1bGZAYXRtZWwuY29tPgotCi1jb21taXQgNGVmMzVlNTNjNjkzNTU2YzU0YjBjMjJkNmY4NzNkZTg3YmFkZTI1MwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIEF1ZyAxNCAwOTo1NDo0NiAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cCwgdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDg1ZWI1Y2FmNmI5MDZmN2VjNWI1NDgxNGU4YzdjNzRmNTU5ODZiYjcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMTQgMDk6NDc6MjcgMjAwNyArMDIwMAotCi0gICAgQ29kaW5nIHN0eWxlIGNsZWFudXA7IHJlYnVpbGQgQ0hBTkdFTE9HCi0KLWNvbW1pdCA3ZjNmMmJkMmRjMDhlMGIwNWUxODU2NjJjYTJlMmQyODM3NTcxMDRhCi1BdXRob3I6IFJhbmR5IFZpbnNvbiA8cnZpbnNvbkBsaW51eGJveC4obm9uZSk+Ci1EYXRlOglUdWUgRmViIDI3IDE5OjQyOjIyIDIwMDcgLTA3MDAKLQotICAgIDg1eHhDRFM6IEFkZCBtYWtlIHRhcmdldHMgZm9yIGxlZ2FjeSBzeXN0ZW1zLgotCi0gICAgVGhlIFBDSSBJRCBzZWxlY3QgdmFsdWVzIG9uIHRoZSBBcmNhZGlhIG1haW4gYm9hcmQgZGlmZmVyIGRlcGVuZGluZwotICAgIG9uIHRoZSB2ZXJzaW9uIG9mIHRoZSBoYXJkd2FyZS4gVGhlIHN0YW5kYXJkIGNvbmZpZ3VyYXRpb24gc3VwcG9ydHMKLSAgICBSZXYgMy4xLiBUaGUgbGVnYWN5IHRhcmdldCBzdXBwb3J0cyBSZXYgMi54LgotCi0gICAgU2lnbmVkLW9mZi1ieSBSYW5keSBWaW5zb24gPHJ2aW5zb25AbXZpc3RhLmNvbT4KLQotY29tbWl0IGU0MTA5NGM3ZTM4MTc3Yzc1NWZiZDliMTgyMDE4MDY5NjE0ZjA4MGQKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyAxNCAwMTo1MDowOSAyMDA3IC0wNTAwCi0KLSAgICA4NXh4Q0RTOiBFbmFibGUgdGhlIFZJQSBQQ0ktdG8tSVNBIGJyaWRnZS4KLQotICAgIEF1dGhvcjogUmFuZHkgVmluc29uIDxydmluc29uQGxpbnV4Ym94Lihub25lKT4KLQotICAgIEVuYWJsZSB0aGUgUENJLXRvLUlTQSBicmlkZ2UgaW4gdGhlIFZJQSBTb3V0aGJyaWRnZSBsb2NhdGVkIG9uIHRoZQotICAgIEFyY2FkaWEgbWFpbiBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhbmR5IFZpbnNvbiA8cnZpbnNvbkBtdmlzdGEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFlvcmsgU3VuIDx5b3Jrc3VuQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkYTlkNDYxMGQ3NmU1MmM0ZDIwYThmM2Q4NDMzNDM5YTdmY2Y1YjcxCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTQgMDA6MTQ6MjUgMjAwNyAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFVFQyB0byA4NTY4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGM1OWU0MDkxZmZlMDE0ODM5OGI5ZTlmZjE0YTAxOWVhMDM4Yjc0MzIKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdW4gMTkgMTQ6MTg6MzQgMjAwNyAtMDQwMAotCi0gICAgQWRkIFBDSSBzdXBwb3J0IGZvciBNUEM4NTY4TURTIGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIGlzIGFnYWluc3QgdS1ib290LW1wYzg1eHguZ2l0IG9mIHd3dy5kZW54LmNvbQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBFYm9ueSBaaHUgPGVib255LnpodUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDExMWQ2MzgyYzk5ZmRlYTA4YzIzMTJlZWVhZTg3ODY5NDVlMTg5YQotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1biAxOSAxNDoxODozMiAyMDA3IC0wNDAwCi0KLSAgICBFbXBpcmljYWxseSBzZXQgY3BvIGFuZCBjbGtfYWRqdXN0IGZvciBtcGM4NXh4IEREUjIgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBpcyBhZ2FpbnN0IHUtYm9vdC1tcGM4NXh4LmdpdCBvZiB3d3cuZGVueC5jb20KLQotICAgIFNldHRpbmcgY3BvIHRvIDB4OSBmb3IgZnJlcXVlbmNpZXMgaGlnaGVyIHRoYW4gMzMzTUh6IGlzIHZlcmlmaWVkIG9uCi0gICAgYm90aCBNUEM4NTQ4Q0RTIGJvYXJkIGFuZCBNUEM4NTY4TURTIGJvYXJkLCBlc3BlY2lhbGx5IGZvciBzdXBwb3J0aW5nCi0gICAgNTMzTUh6IEREUjIuCi0KLSAgICBTZXR0aW5nIGNsa19hZGp1c3QgdG8gMHg2KDMvNCBsYXRlIGN5Y2xlKSBmb3IgTVBDODU2OE1EUyBib2FyZCBpcyBmb3IKLSAgICBERFIyIG9uIGFsbCBjdXJyZW50IGJvYXJkIHZlcnNpb25zIGVzcGVjaWFsbHkgdmVyIDEuOTIgb3IgbGF0ZXIgdG8gYnJpbmcKLSAgICB1cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzZGIwYmVmNTllYWIxMTU1ODAxNjE4Y2VmNWM0ODFlOTc1NTNiNTk3Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgQXVnIDcgMTg6MDc6MjcgMjAwNyAtMDUwMAotCi0gICAgVXNlIGFuIGFic29sdXRlIGFkZHJlc3Mgd2hlbiBqdW1waW5nIG91dCBvZiA0ayBib290IHBhZ2UKLQotICAgIE9uIGU1MDAgd2hlbiB3ZSBsZWF2ZSB0aGUgNGsgYm9vdCBwYWdlIHdlIHNob3VsZCB1c2UgYW4gYWJzb2x1dGUgYWRkcmVzcyBzaW5jZQotICAgIHdlIGRvbid0IGtub3cgd2hlcmUgdGhlIGJvYXJkIGNvZGUgbWF5IHdhbnQgdXMgdG8gYmUgcmVhbGx5IHJ1bm5pbmcgYXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMzk5ODBjNjEwYzlhNGMzODE5MDdjOWUxZDFiOWMwZTFjMGRjYTU3YQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXVnIDEzIDE0OjQ5OjU5IDIwMDcgLTA1MDAKLQotICAgIE1QQzg1eHggQkEgYml0cyBub3Qgc2V0IGZvciAzLWJpdCBiYW5rIGFkZHJlc3MgRElNTQotCi0gICAgVGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gZG9lcyBub3Qgc2V0IHRoZSBudW1iZXIgb2YgYmFuayBhZGRyZXNzIGJpdHMKLSAgICAoQkEpIGluIHRoZSBwcm9jZXNzb3IuIFRoZSBkZWZhdWx0IGFzc3VtZXMgMiBsb2dpY2FsIGJhbmsgYml0cy4gVGhpcwotICAgIHdvcmtzIGZpbmUgZm9yIGEgRElNTSB0aGF0IHVzZXMgZGV2aWNlcyB3aXRoIDQgaW50ZXJuYWwgYmFua3MgKFNQRAotICAgIGJ5dGUxNyA9IDB4NCkgYnV0IG5lZWRzIHRvIGJlIHNldCBhcHByb3ByaWF0ZWx5IGZvciBhIERJTU0gdGhhdCB1c2VzCi0gICAgZGV2aWNlcyB3aXRoIDggaW50ZXJuYWwgYmFua3MgKFNQRCBieXRlMTcgPSAweDgpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JlZyBEYXZpcyA8RGF2aXNHQGVtYmVkZGVkcGxhbmV0LmNvbT4KLQotY29tbWl0IDZjNTQzNTk3YmI0YjFlY2Y1ZDg1ODlmN2FiYjBmMzk5MjlmYjdmZDEKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyAxMyAxNDozODowNiAyMDA3IC0wNTAwCi0KLSAgICBGaXggbWlub3IgODV4eCB3YXJuaW5ncwotCi0gICAgU29tZSBwYXRjaGVzIGhhZCBpbnNlcnRlZCB3YXJuaW5ncyBpbnRvIHRoZSBidWlsZDoKLSAgICAqIG1wYzg1NjBhZHMgZGVjbGFyZWQgZGF0YSB3aXRob3V0IHVzaW5nIGl0Ci0gICAgKiBjcHVfaW5pdCBkZWNsYXJlZCBlY20gYW5kIGltbWFwIHdpdGhvdXQgdXNpbmcgaXQgaW4gYWxsIENPTkZJR3MKLSAgICAqIE1QQzg1NDhDRFMuaCBoYWQgaXRzIGRlZmF1bHQgZmlsZW5hbWVzIGNoYW5nZWQgc28gdGhhdCB0aGV5IGNvbnRhaW5lZAotICAgICAgIlxtIiBpbiB0aGUgcGF0aHMuICBNYWRlIHRoZSBkZWZhdWx0cyBub3QgV2luZG93cy1zcGVjaWZpYyAob3IKLSAgICAgIGFueXRoaW5nLXNwZWNpZmljKQotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjJjZmY2YjEwNGY4MmI5OTNiZWY2MDg2Y2UwYzk3MTU5YmJlMWFkZAotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCAyNyAwMTo1MDo1MiAyMDA3IC0wNTAwCi0KLSAgICA4NTQ4Y2RzIFBDSUUgc3VwcG9ydC4KLQotICAgIE1ha2UgdGhlIGVhcmx5IEwxIGNhY2hlIHN0YWNrIHJlZ2lvbiBndWFyZGVkIHRvIHByZXZlbnQgc3BlY3VsYXRpdmUKLSAgICBmZXRjaGVzIG91dHNpZGUgdGhlIGxvY2tlZCByYW5nZS4KLQotICAgIFVzZSBfUEhZUyBkZWZpbmVzLCBub3QgX01FTSBmb3IgY3B1LXNpZGUgUENJIG1lbW9yeSBtYXBwZWQgcmVnaW9ucy4KLSAgICBpbml0LlMgd2hpdGVzcGFjZSBjbGVhbnVwLgotCi0gICAgQWxsb3cgVEVYVF9CQVNFIHZhbHVlIHRvIGJlIHNwZWNpZmllZCBvbiBjb21tYW5kIGxpbmUuICBUaGlzIGFsbG93cyBpdAotICAgIHRvIGJlIHNldCB0byAweGZmZmMwMDAwIHdoaWNoIGN1dHMgdGhlIHVib290IGJpbmFyeSBpbiBoYWxmLgotCi0gICAgQ2xlYXIgYW5kIGVuYWJsZSBsYmMgYW5kIGVjbSBlcnJvcnMuCi0KLSAgICBVcGRhdGUgbGFzdF9idXNubyBpbiBkZXZpY2UtdHJlZSBmb3IgcGNpIGFuZCBwY2llLgotCi0gICAgUmVtb3ZlIGxvYWQgb2Ygb2Jzb2xldGUgY3B1L21wYzg1eHgvcGNpLjAKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDgzN2YxYmEwNWNmYjI0OGFiYTVhYjhlMWZiMWJmZWVmYTA3ZDU5NjIKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NTEgMjAwNyAtMDUwMAotCi0gICAgODU0NGRzIFBDSUUgc3VwcG9ydAotCi0gICAgUENJMSBMQVcgbWFwcGluZyBzaG91bGQgdXNlIENGR19QQ0kxX01FTV9QSFkgYW5kIG5vdCBfQkFTRSBhZGRyZXNzLgotCi0gICAgRW5hYmxlIExCQyBhbmQgRUNNIGVycm9ycyBhbmQgY2xlYXIgZXJyb3IgcmVnaXN0ZXJzLgotCi0gICAgQWRkIHRmdHBmbGFzaCBlbnYgdmFyIHRvIGdldCB1Ym9vdCBmcm9tIHRmdHAgc2VydmVyIGFuZCBmbGFzaCBpdC4KLQotICAgIEFkZCBwY2kvcGNpZSBjb252ZW5pZW5jZSBlbnYgdmFycyB0byBkaXNwbGF5IHJlZ2lzdGVyIHNwYWNlOgotICAgICAgInJ1biBwY2llM3JlZ3MiIHRvIHNlZSBhbGwgcGNpZTMgY2NzciByZWdpc3RlcnMKLSAgICAgICJydW4gcGNpZTNjZmciIHRvIHNlZSBhbGwgY2ZnIHJlZ2lzdGVycwotICAgIFdoaXRlc3BhY2UgY2xlYW51cCBhbmQgTVBDODU0NERTLmgKLQotICAgIEVuYWJsZSBDT05GSUdfSU5URVJSVVBUUy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYxYTIxZTk4MGE3YjkxODg0MjRkMDRmMWMyNjVmZGM1YzIxYzdlODUKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyAxNCAwMTozNDoyMSAyMDA3IC0wNTAwCi0KLSAgICA4NXh4IHN0YXJ0LlMgY2xlYW51cCBhbmQgZXhjZXB0aW9uIHN1cHBvcnQKLQotICAgIEZyb206IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLSAgICBTdXBwb3J0IGV4dGVybmFsIGludGVycnVwdHMgZnJvbSBwbGF0Zm9ybSB0byBlbGltaW5hdGUgc3lzdGVtIGhhbmdzLgotICAgIERlZmluZSBDT05GSUdfSU5URVJSVVBUUyBib2FyZCBjb25maWd1cmUgb3B0aW9uIHRvIGVuYWJsZS4KLSAgICBFbmFibGUgZWNtLCBkZHIsIGxiYywgYW5kIHBjaS9wY2llIGVycm9yIGludGVycnVwdHMgaW4gUElDLgotCi0gICAgUmVtb3ZlIGV4dHJhIGNwdSBpbml0aWFsaXphdGlvbiByZWR1bmRhbnQgd2l0aCBoYXJkd2FyZSBpbml0aWFsaXphdGlvbi4KLSAgICBXaGl0ZXNwYWNlIGNsZWFudXAuCi0KLSAgICBEZWZpbmUgYW5kIHVzZSBfU1RBUlRfT0ZGU0VUIGNvbnNpc3RlbnQgd2l0aCBvdGhlciBwcm9jZXNzb3JzIHVzaW5nCi0gICAgcHBjX2FzbS50bXBsCi0KLSAgICBNb3ZlIGFkZGl0aW9uYWwgY29kZSBmcm9tIC50ZXh0IHRvIGJvb3QgcGFnZSB0byBtYWtlIHJvb20gZm9yCi0gICAgZXhjZXB0aW9uIHZlY3RvcnMgYXQgc3RhcnQgb2YgaW1hZ2UuCi0KLSAgICBIYW5kbGUgTWFjaGluZSBDaGVjaywgRXh0ZXJuYWwgYW5kIENyaXRpY2FsIGV4Y2VwdGlvbnMuCi0KLSAgICBGaXggZTUwMCBtYWNoaW5lIGNoZWNrIGVycm9yIGRldGVybWluYXRpb24gaW4gdHJhcHMuYwotCi0gICAgVEVYVF9CQVNFIGNhbiBub3cgYmUgMHhmZmZjXzAwMDAgLSB3aGljaCBjdXRzIGJpbmFyeSBpbWFnZSBpbiBoYWxmLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2JkMzBmYzRhNjQ3NWI0MWQ2Njc5YWUzYWFmYzlmYTUwNTI2MGM0NwotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDE0IDAxOjMzOjE4IDIwMDcgLTA1MDAKLQotICAgIEFkZCBNUEM4NTQ0RFMgUkVBRE1FCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0MGM3ZjliMGRlNGUzMDAzNzBhZGZjNzA0MTI4ZmEwZjc5YTE0M2I2Ci1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDI3IDAxOjUwOjQ4IDIwMDcgLTA1MDAKLQotICAgIDg1eHggYWxsb3cgZGVidWdnZXIgdG8gY29uZmlndXJlIGRkci4KLQotICAgIE9ubHkgY2hlY2sgZm9yIG1wYzg1NDggcmV2IDEgd2hlbiBjb21waWxlZCBmb3IgODU0OC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI5MzcyZmYzOGM1YmFhYjdkMGUzYThjMTRmZTExZmExOTRhMzg3MDQKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NDcgMjAwNyAtMDUwMAotCi0gICAgbXBjODV4eCBMMiBjYWNoZSByZXBvcnRpbmcgYW5kIFNSQU0gcmVsb2NhdGlvbiBvcHRpb24uCi0KLSAgICBBbGxvdyBkZWJ1Z2dlciB0byBvdmVycmlkZSBmbGFzaCBjczAvY3MxIHNldHRpbmdzIHRvIGVuYWJsZSBhbHRlcm5hdGUKLSAgICBib290IHJlZ2lvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQxZjBmOGZiMWFiOTJmMGNiYTdkMzI5ZGU5MDA3MGY4MjJmODI5OWYKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NDYgMjAwNyAtMDUwMAotCi0gICAgZTUwMCBuZWVkcyBwcGNfYXNtLnRtcCBNQ0tfRVhDRVBUSU9OCi0KLSAgICBBbHdheXMgZGVmaW5lIE1DS19FWENFUFRJT04gbWFjcm8gLSBzbyBlNTAwIGNhbiB1c2UgaXQgdG9vLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTNhNWM0MjRiZjg2NTViN2I0ZTJjMzA1YTQ0MTk2MzI1OWEyNmE4MQotQXV0aG9yOiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+Ci1EYXRlOglNb24gSnVuIDExIDEwOjQxOjA3IDIwMDcgLTA1MDAKLQotICAgIG11bHRpY2FzdCB0ZnRwOiBSRkMyMDkwCi0KLSAgICBJbXBsZW1lbnRlZCBJRVRGIFJGQzIwOTAsIE11bHRpY2FzdCBURlRQLiAgSW5pdGlhbCBpbXBsZW1lbnRhdGlvbgotICAgIG9uIFJlYWx0ZWsgUlRMODEzOSBhbmQgRnJlZXNjYWxlIFRTRUMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZpZCBVcGRlZ3JhZmYgPGRhdmVAY3JheS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci0KLWNvbW1pdCA1ZDExMGYwYWE2OWYwNjVlZTM4NmVjMTg0MGRmZWUxZThjYzQ2YmMxCi1BdXRob3I6IFdpbHNvbiBDYWxsYW4gPHdjYWxsYW5Ac2F2YW50YXYuY29tPgotRGF0ZToJU2F0IEp1bCAyOCAxMDo1NjoxMyAyMDA3IC0wNDAwCi0KLSAgICBOZXcgQ09ORklHX0JPT1RQX1NFUlZFUklQIG9wdGlvbgotCi0gICAgQWRkZWQgQ09ORklHX0JPT1RQX1NFUlZFUklQIHRvIGFsbG93IHRoZSB0ZnRwIHNlcnZlciB0byBiZSBkaWZmZXJlbnQKLSAgICBmcm9tIHRoZSBib290cCBzZXJ2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdpbHNvbiBDYWxsYW4gPHdjYWxsYW5Ac2F2YW50YXYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgotCi1jb21taXQgNTBjY2E4Yjk3NmVjNzQwNjk4NjAyMDhjMzZlNjRjZThmNGQ1ZTRjMQotQXV0aG9yOiBNaWtlIFJhcG9wb3J0IDxtaWtlQGNvbXB1bGFiLmNvLmlsPgotRGF0ZToJU3VuIEF1ZyAxMiAwODo0ODoyNyAyMDA3ICswMzAwCi0KLSAgICBBZGQgYWJpbGl0eSB0byB0YWtlIE1BQyBhZGRyZXNzIGZyb20gdGhlIGVudmlyb25tZW50IHRvIERNOTAwMCBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgUmFwb3BvcnQgPG1pa2VAY29tcHVsYWIuY28uaWw+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci0KLWNvbW1pdCBiZTVkNzJkMTBkNDc2MDkzMjYyMjYyMjUxODFlMzAxZmI5YTMzYjU4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gQXVnIDEzIDIxOjU3OjUzIDIwMDcgKzAyMDAKLQotICAgIE1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLiBVcGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGNjYTM0OTY3Y2JkMTNmZjZiZDM1MmJlMjllM2YxY2M4OGFiMjRjMDUKLUF1dGhvcjogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KLURhdGU6CVNhdCBBdWcgMTEgMDY6NTQ6NTggMjAwNyAtMDUwMAotCi0gICAgTW9kaWZ5IFNCQzg2NDFEIHRvIHVzZSBuZXcgRnJlZXNjYWxlIFBDSSByb3V0aW5lcwotCi0gICAgUENJLUV4cHJlc3Mgc29ja2V0cyAxIGFuZCAyIHZlcmlmaWVkIHdvcmtpbmcgd2l0aCBJbnRlbCBQcm8vMTAwMCBQVAotICAgIGFkYXB0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb2UgSGFtbWFuIDxqb2UuaGFtbWFuQGVtYmVkZGVkc3BlY2lhbHRpZXMuY29tPgotICAgIFNpZ25kZS1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMDg0NTgzMDNlN2Y5ZGI2N2YyOTY5ODAwMzZkMzI5MmMzNWNiNDVjCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJRnJpIEp1biAyOSAxODozODo1MSAyMDA3ICswMjAwCi0KLSAgICBhdG1lbF9tY2k6IEZpeCBkYXRhIHRpbWVvdXQgdmFsdWUKLQotICAgIENhbGN1bGF0ZSB0aGUgZGF0YSB0aW1lb3V0IGJhc2VkIG9uIHZhbHVlcyBmcm9tIHRoZSBDU0QgaW5zdGVhZCBvZgotICAgIGp1c3QgdXNpbmcgYSBoYXJkY29kZWQgRFRPUiB2YWx1ZS4gVGhpcyBpcyBhIGJhY2twb3J0IG9mIGEgc2ltaWxhciBmaXgKLSAgICBpbiBCU1AgMi4wLCB3aXRoIG9uZSBhZGRpdGlvbmFsIGZpeDogdGhlIERUT0NZQyB2YWx1ZSBpcyByb3VuZGVkIHVwCi0gICAgaW5zdGVhZCBvZiBkb3duLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAwYmE4ZWVkMjhiNTc1NjI2YjE3ZTBhNzg4MmY5MjNiODNlMGQ3NTg0Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJTW9uIEF1ZyAxMyAxNzoyMjozMSAyMDA3ICswMjAwCi0KLSAgICBBVlIzMjogSW5jbHVkZSA8ZGl2NjQuaD4gaW5zdGVhZCBvZiA8YXNtL2RpdjY0Lmg+Ci0KLSAgICBpbmNsdWRlL2FzbS1hdnIzMi9kaXY2NC5oIHdhcyByZWNlbnRseSBtb3ZlZCB0byBpbmNsdWRlL2RpdjY0LmgsIGJ1dAotICAgIGNwdS9hdDMyYXAvaW50ZXJydXB0cy5jIHdhc24ndCBwcm9wZXJseSB1cGRhdGVkIChhbiBlYXJsaWVyIHZlcnNpb24gb2YKLSAgICB0aGUgcGF0Y2ggd2FzIG1lcmdlZCBwZXJoYXBzPykKLQotICAgIFRoaXMgcGF0Y2ggdXBkYXRlcyBjcHUvYXQzMmFwL2ludGVycnVwdHMuYyBzbyB0aGF0IHRoZSBhdnIzMiBwb3J0Ci0gICAgY29tcGlsZXMgYWdhaW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGYwZDEyNDZlZDdjYjVhODg1MjIyNDRjNTk2ZDdhZTdlNmYxNjEyODMKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglXZWQgSnVuIDI3IDEzOjM0OjI2IDIwMDcgKzAyMDAKLQotICAgIGF0bWVsX21jaTogVXNlIDUxMiBieXRlIGJsb2Nrc2l6ZSBpZiBwb3NzaWJsZQotCi0gICAgSW5zdGVhZCBvZiBhbHdheXMgdXNpbmcgdGhlIGxhcmdlc3QgYmxvY2tzaXplIHRoZSBjYXJkIHN1cHBvcnRzLCBjaGVjawotICAgIGlmIGl0IGNhbiBzdXBwb3J0IHNtYWxsZXIgYmxvY2sgc2l6ZXMgYW5kIHVzZSA1MTIgYnl0ZXMgaWYgcG9zc2libGUuCi0gICAgTW9zdCBjYXJkcyBkbyBzdXBwb3J0IHRoaXMsIGFuZCBvdGhlciBwYXJ0cyBvZiB1LWJvb3Qgc2VlbSB0byBoYXZlCi0gICAgdHJvdWJsZSB3aXRoIGJsb2NrIHNpemVzIGRpZmZlcmVudCBmcm9tIDUxMiBieXRlcy4KLQotICAgIEFsc28gZW5hYmxlIHVuZGVycnVuL292ZXJydW4gcHJvdGVjdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotICAgIEFja2VkLWJ5OiBIYW5zLUNocmlzdGlhbiBFZ3R2ZWR0IDxoY2VndHZlZHRAYXRtZWwuY29tPgotCi1jb21taXQgMjczZGI3ZTFiZGQxOTM3ZTMyZjFkNDUwNzMyMWJiNzIxZWJkMzExOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gQXVnIDEzIDA5OjA1OjMzIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHByb2JsZW0gaW4gUExMIGNsb2NrIGNhbGN1bGF0aW9uCi0KLSAgICBUaGlzIHBhdGNoIHdhcyBvcmlnaW5hbGwgcHJvdmlkZWQgYnkgRGF2aWQgTWl0Y2hlbGwgPGRtaXRjaGVsbEBhbWNjLmNvbT4KLSAgICBhbmQgZml4ZXMgYSBidWcgaW4gdGhlIFBMTCBjbG9jayBjYWxjdWxhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDk5ODZiYzNlNDBlODk5YmVhMzcyYTk5YTJiY2E0MDcxYmRmMmUyNGIKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBBdWcgMTIgMjE6MzQ6NTAgMjAwNyArMDIwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRwotCi1jb21taXQgNzdkMTlhOGJmM2IwYjFlNDAxY2I5ZjIzYzgxZTJlZjQxOTcwNWMxYQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEF1ZyAxMiAyMTozNDozNCAyMDA3ICswMjAwCi0KLSAgICBNaW5vciBhbGlnbm1lbnQgb2Ygb3V0cHV0LCAybmQgdHJ5LgotICAgIEFsc28gdXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZiMzA5ZjIyYTcyNGZhZDg0MThlODExNzUxYTA3NDFiODkzNDE5Y2YKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBBdWcgMTIgMjA6MzU6NDkgMjAwNyArMDIwMAotCi0gICAgTWlub3IgYWxpZ25tZW50IG9mIG91dHB1dAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDZmNmQ3YjljODU1OWUyNDFlOGQyMzI2MjE1NDJiOGI1OTY5OWIwN2IKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVN1biBBdWcgMTIgMTg6Mjg6MTggMjAwNyArMDIwMAotCi0gICAgQ2xlYW51cCBvdXRwdXQgb24gQURTNTEyMSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuawotCi1jb21taXQgYTRkMjYzNmYyYTg1OTI0NWVkM2E0MDFmMjYxODlkYTJkZmRhNGNlYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU3VuIEF1ZyAxMiAxNToxMTozOCAyMDA3ICswMjAwCi0KLSAgICBBZGFwdCBib2FyZCBjb25maWd1cmF0aW9uIGFuZCBmaXgga2VybmVsIGNyYXNoIG9uIE1DQzIwMCBib2FyZC4KLQotICAgIFRoZSB1cGRhdGUgcHJvY2VkdXJlIHdhcyBtb2RpZmllZCB0byB0dXJuIG9mZiB0aGUgVVNCIHN1YnN5c3RlbQotICAgIGJlZm9yZSBleGl0IGZvciBNQ0MyMDAgYW5kIFRSQUIuIFRoaXMgaXMgbmVjZXNzYXJ5IGFzIG90aGVyd2lzZSB0aGUKLSAgICBVU0IgY29udHJvbGxlciBjb250aW51ZXMgdG8gd3JpdGUgcGVyaW9kaWNhbGx5IHRvIHN5c3RlbSBtZW1vcnkhCi0KLSAgICBNQ0MyMDAtc3BlY2lmaWMgbm90ZXM6Ci0gICAgLSB0aGUgcGF0Y2ggZGlzYWJsZXMgdGhlIG1hZ2ljIGtleSBjaGVjayBmb3IgTUNDMjAwCi0gICAgLSB0aGUgcGF0Y2ggY29udGFpbnMgdGhlIGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBtYWRlCi0gICAgICBmb3IgdGhlIG5ldyByZXZpc2lvbiBvZiB0aGUgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBlMjdmM2E2ZWZiOWRiNWE1MzMyMjNiMDVjNjI5ZmY0YWM4ZDkyMWJmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gQXVnIDEyIDE0OjQ3OjU0IDIwMDcgKzAyMDAKLQotICAgIEFkanVzdCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gb2YgQURTNTEyMSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhZmFhYzg2ZmUyOTQ4YWM4NGNkOWExMmJiZWQ4ODNiM2M2ODNlN2Q5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTdW4gQXVnIDEyIDE0OjI3OjM5IDIwMDcgKzAyMDAKLQotICAgIENsZWFuIHVwIHNvbWUgcmVtYWluaW5nIENGR19DTURfIC0+IENPTkZJR19DTURfIGlzc3Vlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZmU2YmU2MjA4ZGRhODUyYzM1NjRlMzg0YmQ3OGQ3NTc4NGRlYTNlCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglUdWUgQXVnIDcgMjE6MTQ6MjIgMjAwNyAtMDQwMAotCi0gICAgSW1wcm92ZSBlcnJvciBwcmludCBtZXNzYWdlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCA5OWRmZmNhM2I3NTkwYTE2YTAwYmM0NzVjODYwYjY3YjJhM2YxNDYyCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVsIDE3IDEzOjU3OjA0IDIwMDcgLTA1MDAKLQotICAgIGZkdDogYWxsb3cgZm9yIGJ1aWxkcyB0aGF0IGRvbid0IHdhbnQgZW52IGFuZCBiZF90IG5vZGVzCi0KLSAgICBwcm90ZWN0IGZkdF9lbnYgYW5kIGZkdF9iZF90IGludm9jYXRpb25zLCBmaXggY29kaW5nc3R5bGUgd2hpbGUgaW4gdGhlCi0gICAgYXJlYS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5MTE0OGJmN2FlYmExNDJkNmYzNDg4MDVkYjc2MjVkYjdkYTY0ZDZmCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVsIDE3IDEzOjU2OjUzIDIwMDcgLTA1MDAKLQotICAgIGZkdDogZG8gYm9hcmQgc2V0dXAgYmFzZWQgb24gZmR0IGFkZHJlc3Mgc3BlY2lmaWVkIG9uIGJvb3RtIGxpbmUKLQotICAgIFRoZSBsYXN0IGZkdCBwYXRjaCB0byBib290bSBkaWQgYm9hcmQgc2V0dXAgYmFzZWQgb24gdGhlIGFkZHJlc3MKLSAgICBzcGVjaWZpZWQgYnkgYSBwcmlvciBmZHQgYWRkcmVzcyBjb21tYW5kIGludm9jYXRpb24uICBUaGUgYm9vdG0KLSAgICBjb2RlLCBhcyBpdHMgY2FsbCB0byBmZHRfY2hvc2VuIGRvZXMsIHNob3VsZCB1c2UgdGhlIGZkdCBzcGVjaWZpZWQKLSAgICBieSB0aGUgdXNlciBvbiB0aGUgYm9vdG0gY29tbWFuZC4gIE5vdGUgdGhpcyByZXN0b3JlcyBmdWxsCi0gICAgZnVuY3Rpb25hbGl0eSBmb3IgdGhlIDgzNjAncyBleGlzdGluZyBkZWZhdWx0IGJvb3QgZW52aXJvbm1lbnQKLSAgICB2YWx1ZXMsIGUuZy4gJ3J1biBuZnNib290JyAoaS5lLiBubyBoYXZpbmcgdG8gJ2ZkdCBhZGRyICRmZHRhZGRyJwotICAgIGJlZm9yZSBib290aW5nIGEga2VybmVsKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlMTI1YTJmZmMyMDlkZDM0Nzk0ZTMyNmM3MTc1NjU4MjUzYmVhZGYzCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglUdWUgSnVsIDEwIDIwOjQwOjM5IDIwMDcgLTA0MDAKLQotICAgIENhbGwgZnRfYm9hcmRfc2V0dXAoKSBmcm9tIHRoZSBib290bSBjb21tYW5kLgotCi0gICAgSW4gdGhlIHBhdGNoIHRpdGxlZCAiQ3JlYXRlIG5ldyBmZHQgYm9hcmRzZXR1cCBjb21tYW5kLi4uIiBJIHJlbW92ZWQgdGhlCi0gICAgY2FsbCB0byBmdF9ib2FyZF9zZXR1cCgpIGZyb20gdGhlIHJvdXRpbmUgZmR0X2Nob3NlbigpLCBidXQgSSBmb3Jnb3QKLSAgICB0byBhZGQgYSBkaXJlY3QgY2FsbCBiYWNrIGludG8gY21kX2Jvb3RtLmMKLQotICAgIFRoaXMgZml4ZXMgdGhlIG92ZXJzaWdodCBieSBhZGRpbmcgdGhlIGRpcmVjdCBjYWxsIHRvIHRoZSBib290bSBjb21tYW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IGZkNjFlNTVkZDhjYjUyY2UzZmY5MWIzOTE3YWYyNmUyNGI2YjA4NDUKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CU1vbiBKdW4gMjUgMjM6MjU6MjggMjAwNyAtMDQwMAotCi0gICAgQ3JlYXRlIG5ldyBmZHQgYm9hcmRzZXR1cCBjb21tYW5kLCBmaXggYnVnIHBhcnNpbmcgW10gZm9ybSBvZiBzZXQgdmFsdWVzLgotCi0gICAgUHJldmlvdXNseSBmdF9ib2FyZF9zZXR1cCgpIHdhcyBjYWxsZWQgYnkgZmR0X2Nob3NlbigpIHdoaWNoIHdhcyBub3QKLSAgICByZWFsbHkgY29ycmVjdGx5IHN0cnVjdHVyZWQuICBUaGlzIHNwbGl0cyBmdF9ib2FyZF9zZXR1cCgpIG91dCBieSBjcmVhdGluZwotICAgIGEgbmV3IGZkdCBib2FyZHNldHVwIGNvbW1hbmQuCi0KLSAgICBGaXggYSBidWcgd2hlbiBwYXJzaW5nIGZkdCBzZXQgY29tbWFuZCB2YWx1ZXMgd2hpY2ggaGF2ZSB0aGUgc3F1YXJlCi0gICAgYnJhY2tldCBmb3JtIFswMCAxMSAyMiAzM10gLSB0aGUgbGVuZ3RoIHdhcyB1cGRhdGVkIGluY29ycmVjdGx5IGluIHdoZW4KLSAgICBwYXJzaW5nIHRoYXQgZm9ybS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCA2ZjM1ZGVkOWU4NTQ5MzU5NWUwZWI2NmE4MmI1MDJhOTUzMjZkMDQ5Ci1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglNb24gSnVuIDI1IDIwOjU1OjU4IDIwMDcgLTA0MDAKLQotICAgIFRpZ2h0ZW4gdXAgdGhlIGVycm9yIG1lc3NhZ2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IGM0NTg3NGIwNWFhZTg5N2E2YzI5ZDFhOTdkNGJiNzA4ZmNhMjc1NmMKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CU1vbiBKdW4gMjUgMTk6NTI6MjMgMjAwNyAtMDQwMAotCi0gICAgQXN0aGV0aWMgaW1wcm92ZW1lbnRzOiBlcnJvciBtZXNzYWdlcyBhbmQgbGluZSBsZW5ndGhzLgotCi0gICAgVGlnaHRlbiB1cCB0aGUgZXJyb3IgbWVzc2FnZXMsIHNwbGl0IG92ZXJsZW5ndGggbGluZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgMzVlYzM5OGYxNmUxN2RmNjAwZWRjMWIzOGMxZTllNjJjMTVjOWFhMQotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJRnJpIE1heSAyNSAyMjowODo1NyAyMDA3IC0wNDAwCi0KLSAgICBGaXggZmR0X2Nob3NlbigpIHRvIGNhbGwgZnRfYm9hcmRfc2V0dXAoKSwgY2xlYW4gdXAgbG9uZyBsaW5lcy4KLQotICAgIFRoZSBmZHRfY2hvc2VuKCkgZnVuY3Rpb24gd2FzIGFkZGluZy9zZXRpbmcgc29tZSBwcm9wZXJ0aWVzIGFkLWhvYwotICAgICAgaW1wcm9wZXJseSBhbmQgZHVwbGljYXRlZCAocG9vcmx5KSB3aGF0IHdhcyBkb25lIGluIGZ0X2JvYXJkX3NldHVwKCkKLQotICAgIENsZWFuIHVwIGxvbmcgbGluZXMgKHNldHRpbmcgcHJvcGVydGllcywgcHJpbnRpbmcgZXJyb3JzKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCAwNmUxOWEwNzcwMWM5NjhmMTVkNzJjMDgzYjU4NzJhMWExMWM3YjAxCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglNb24gTWF5IDIxIDIzOjI3OjE2IDIwMDcgLTA0MDAKLQotICAgIEZvciBmZHRfZmluZF9ub2RlX2J5X3BhdGgoKSwgaGFuZGxlIHRoZSByb290IHBhdGggcHJvcGVybHkuCi0KLSAgICBBbHNvIHJlbW92ZXMgdGhlIHNwZWNpYWwgY2FzZSByb290IHBhdGggZGV0ZWN0aW9uIGluIGNtZF9mZHQuYyBzaW5jZSBpdAotICAgIGlzIG5vIGxvbmdlciBuZWNlc3NhcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgOTY3NWVlNzIwOGFiOTY1ZDEzZWE4ZDgyNjJkNzdhYzQxNjBlZjU0OQotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJVGh1IE1heSAxNyAyMzo1NDozNiAyMDA3IC0wNDAwCi0KLSAgICBBZGQgZmR0X2ZpbmRfbm9kZV9ieV90eXBlKCkgYW5kIGZkdF9maW5kX2NvbXBhdGlibGVfbm9kZSgpIHRvIExJQkZEVAotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgR3JhbmRlZ2dlciA8d2dAZ3JhbmRlZ2dlci5jb20+Ci0gICAgQWNrZWQtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0KLWNvbW1pdCAxYTg2MTE2OWJjMzc1OGY5ZGUzYWVhZDYyYjA1ODczNmM2ODkxMjQ2Ci1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglXZWQgSnVuIDYgMjI6NDc6NTggMjAwNyAtMDQwMAotCi0gICAgUmVwbGFjZSBmZHRfbm9kZV9vZmZzZXQoKSB3aXRoIGZkdF9maW5kX25vZGVfYnlfcGF0aCgpLgotCi0gICAgVGhlIG5ldyBuYW1lIG1hdGNoZXMgbW9yZSBjbG9zZWx5IHRoZSBrZXJuZWwncyBuYW1lLCB3aGljaCBpcyBhbHNvCi0gICAgYSBtdWNoIGJldHRlciBkZXNjcmlwdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIEdyYW5kZWdnZXIgPHdnQGdyYW5kZWdnZXIuY29tPgotICAgIEFja2VkLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgYWRkZDhjZTgzMDc4YzI1ZjBlY2E1ZjIzYWRiZGZjNjRjYTUwYTI0MwotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJV2VkIE1heSAxNiAyMjozOTo1OSAyMDA3IC0wNDAwCi0KLSAgICBGaXggY21kX2ZkdCBsaW5lIGxlbmd0aHMsIHJlZmFjdG9yIGNvZGUuCi0KLSAgICBCcmVhayBsaW5lcyB0aGF0IHdlcmUgZ3JlYXRlciB0aGFuIDgwIGNoYXJhY3RlcnMgaW4gbGVuZ3RoLgotICAgIE1vdmUgdGhlIGZkdCBwcmludCBhbmQgcHJvcGVydHkgcGFyc2luZyBjb2RlIHRvIHNlcGFyYXRlIHN0YXRpYyBmdW5jdGlvbnMKLSAgICAgIHRvIHJlZHVjZSBjb2RpbmcgY2x1dHRlciBpbiB0aGUgZmR0X2NtZCBoYW5kbGluZyBib2R5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDI1MTE0MDMzYWIyMTc4ODgxMGM0OGJhNGRmMTAzYjY0OWRhMTIyM2IKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVNhdCBNYXkgMTIgMDk6NDc6MjUgMjAwNyAtMDQwMAotCi0gICAgRkRUIGNvbW1hbmQgaW1wcm92ZW1lbnRzLgotCi0gICAgRml4ICJmZHQgc2V0IiBzbyB0aGF0IGl0IHdpbGwgY3JlYXRlIGEgbm9uLWV4aXN0aW5nIHByb3BlcnR5LgotICAgIEFkZCAiZmR0IG1rbm9kZSIgdG8gY3JlYXRlIG5vZGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDM4ZWI1MDhlOGU4MTFlMmU1NzYyOGY0NDVkZTNhMjRhMjNjN2Q4MDQKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVNhdCBNYXkgMTIgMDk6NDU6NDYgMjAwNyAtMDQwMAotCi0gICAgUmVvcmdhbml6ZSBhbmQgZml4IHByb2JsZW1zIChyZXR1cm5zKSBpbiB0aGUgYm9vdG0gY29tbWFuZC4KLQotICAgIERvICpOT1QqIHJldHVybiBhZnRlciB0aGUgInBvaW50IG9mIG5vIHJldHVybiIgaGFzIGJlZW4gcGFzc2VkLgotICAgICAgSWYgc29tZXRoaW5nIGdvZXMgd3JvbmcsIHRoZSBib2FyZCBtdXN0IGJlIHJlc2V0IGFmdGVyIHRoYXQgcG9pbnQuCi0gICAgTW92ZSB0aGUgIlRyYW5zZmVycmluZyBjb250cm9sIHRvIExpbnV4IiBkZWJ1ZyBtZXNzYWdlIGJhY2sgdG8gd2hlcmUgaXQKLSAgICAgIGJlbG9uZ3M6IGp1c3QgYmVmb3JlIHRyYW5zZmVycmluZyBjb250cm9sIHRvIGxpbnV4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDg5Yzg3NTdkOGYyMTNjNDc3MDliZGM0ZWZlMDY5NTI2M2E2MDgwYTYKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVR1ZSBNYXkgOCAyMToyNzozNSAyMDA3IC0wNDAwCi0KLSAgICBGaXggYnVncyBpbiB0aGUgQ09ORklHX09GX0xJQkZEVAotCi0gICAgU3R1cGlkIGNvZGluZyBtaXN0YWtlcyAoaWRlbnRpZmllZCBieSBUaW11ciBUYWJpLCB0aGFua3MpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDZiZTA3Y2MxY2E0NTgyNzhjODVlY2RiZjFhMDUzNmNmZjRjNzAxZWMKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVdlZCBBcHIgMjUgMjI6NDc6MTUgMjAwNyAtMDQwMAotCi0gICAgSW1wcm92ZSBmZHQgbW92ZSBsZW5ndGggaGFuZGxpbmcuCi0KLSAgICBNYWtlIHRoZSBsZW5ndGggcGFyYW1ldGVyIG9wdGlvbmFsOiBpZiBub3Qgc3BlY2lmaWVkLCBkbyB0aGUgbW92ZSB1c2luZwotICAgIHRoZSBjdXJyZW50IHNpemUgdW5jaGFuZ2VkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IGJiOTMwZTc2ZmVhNmNmODljYTJkOThlMmY3YzdhNjA0M2Q3OTMyN2QKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVdlZCBBcHIgMjUgMjI6MjM6MzYgMjAwNyAtMDQwMAotCi0gICAgTWlub3IgY29kZSBjbGVhbiB1cC4KLQotICAgIERlY2xhcmUgdGhlIHZhcmlhYmxlIGZkdCBwcm9wZXJseSBhcyBleHRlcm4uCi0gICAgQ2FsbCB0aGUgInNldF9mbiIgZnVuY3Rpb24gcG9pbnRlciB0aGUgInNob3J0IHdheSIgd2l0aG91dCB0aGUgZnVsbAotICAgICAgZGVyZWZlcmVuY2luZyBzeW50YXguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgYmEyNGUyYWMzYmRiNWM0ODlmM2M3ODdlNzU0MmI2NDc0YzRkNjVjNgotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJV2VkIEFwciAyNSAyMToyNDoyNyAyMDA3IC0wNDAwCi0KLSAgICBJbXByb3ZlIGVycm9yIG1lc3NhZ2VzLCBtb3JlIGluZm9ybWF0aXZlLgotCi0gICAgUHJpbnQgbW9yZSB0aGFuIHRoZSByYXcgbGliZmR0IGVycm9yIG1lc3NhZ2Ugc3RyaW5ncy4gIFRoaXMgaXMgZXNwZWNpYWxseQotICAgIHVzZWZ1bCBmb3IgY2x1aW5nIGluIHRoZSB1c2VyIHdoZW4gdGhlIGJvb3RtIGNvbW1hbmQgYWJvcnRzIGR1ZSB0bwotICAgIGJsb2IgcHJvYmxlbXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgODA5NmIzYjhmNzcyYzE4OTRkZGVkYTlkYmNlZmY2YTg4MjY0NzNhNAotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJRnJpIEFwciAyMCAyMjo0Njo1MyAyMDA3IC0wNDAwCi0KLSAgICBsaWJmZHQ6IENvbmRpdGlvbmFsbHkgY29tcGlsZSBiYXNlZCBvbiBDT05GSUdfT0ZfTElCRkRUCi0KLSAgICBUaGlzIGlzIHRoZSB3YXkgdS1ib290IHJlZHVjZXMgY29uZmlndXJlZC1vdXQgY29kZS4gIEF0IFdvbGZnYW5nCi0gICAgR3JhbmRlZ2dlciBhbmQgV29sZmdhbmcgRGVuaydzIHJlcXVlc3QsIG1ha2UgbGliZmR0IGNvbmZvcm0uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotCi1jb21taXQgOTIzZWZkMjg2NDExZWQwNTJkOWUwNzRmNTlmODk4NmQ2MDgxMDYxYwotQXV0aG9yOiBCcnVjZSBBZGxlciA8YnJ1Y2UuYWRsZXJAY2NwdS5jb20+Ci1EYXRlOglGcmkgQXVnIDEwIDE0OjU0OjQ3IDIwMDcgLTA3MDAKLQotICAgIGFkZCBpbWFnZSBzaXplIGFuZCBkZXNjcmlwdG9ycyBmb3IgU3BhcnRhbiAzRSBGUEdBIGNoaXBzCi0KLSAgICBTcGFydGFuIDNFIGltYWdlIHNpemVzIHRha2VuIGZyb20gVGFibGUgMS00IGluIFhpbGlueCBVRzMzMiAodjEuMSkKLQotICAgIFNpZ25lZC1vZmYgYnk6IEJydWNlIEFkbGVyIDxicnVjZS5hZGxlckBjY3B1LmNvbT4KLQotY29tbWl0IGZiNTY1NzlmZmU3ZWYzMjc1YjcwMzZiYjdiOTI0ZTVhMGQzMmJkNzAKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBdWcgMTAgMTU6MzQ6NDggMjAwNyAtMDUwMAotCi0gICAgbWFrZSBNQUtFQUxMIG1vcmUgaW1tdW5lIHRvIG1lcmdlIGNvbmZsaWN0cwotCi0gICAgLi5ieSBwbGFjaW5nIGJvYXJkIGVudHJpZXMgb25lIHBlciBsaW5lLCBhcyBzdWdnZXN0ZWQgYnkgamRsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI2MjgxMTRlYzU2NGY5NjlmMzRiNWY3MTA1ZmJkMTY4Y2I4YzljM2YKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBdWcgMTAgMTM6Mjg6MjUgMjAwNyAtMDUwMAotCi0gICAgUkVBRE1FOiBSZW1vdmUgb3V0ZGF0ZWQgY3B1IHR5cGUsIGJvYXJkIHR5cGUsIGFuZCBOQU1FX2NvbmZpZyBsaXN0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ5YmI1OTkxMmQyMWFhY2I1MDdlYjgxZmQyMWZiN2FmNjUwYzcwNmMKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAxMCAxNTo0ODo1OSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBTdXBwcmVzcyB0aGUgd2FybmluZyAnYnVyc3RsZW4nCi0KLSAgICBzdXBwcmVzcyB0aGUgd2FybmluZyAnYnVyc3RsZW4nIG9mIHNwZF9zZHJhbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNjQ2YmJhNjQ2NWE0NWM2MDc0NmQ0Y2MxNjAyY2QwNmMxOTYwZjJkCi1BdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci1EYXRlOglUaHUgQXVnIDkgMTU6MTE6MDMgMjAwNyAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFNCQzg2NDFELiBDb25maWcgZmlsZXMuCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgV2luZCBSaXZlcidzIFNCQzg2NDFEIHJlZmVyZW5jZSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci0gICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4YWMyNzMyNzFkNTczMjFmOTA1MDVjN2E1MWNkYjFlZjIxMTNiNjI4Ci1BdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci1EYXRlOglUaHUgQXVnIDkgMTU6MTA6NTMgMjAwNyAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFNCQzg2NDFELiAgQm9hcmQgZmlsZXMuCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgV2luZCBSaXZlcidzIFNCQzg2NDFEIHJlZmVyZW5jZSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYgYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci0gICAgQWNrZWQtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0gICAgQWNrZWQtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjMmMwYWI0YWZmODY2MjJiODM3YTQ4YTBlNTYwMzUxZjlhZmFmYjk1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBBdWcgMTAgMjA6MzQ6NTggMjAwNyArMDIwMAotCi0gICAgQ29uZGluZyBzdHlsZSBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjNzRiMjEwOGUzMWZlMDliZDFjNWQyOTFjM2NmMzYwNTEwZDRmMTNlCi1BdXRob3I6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgotRGF0ZToJRnJpIEF1ZyAxMCAyMDoyNjoxOCAyMDA3ICswMjAwCi0KLSAgICBbQVJNXSBUSSBEYVZpbmNpIHN1cHBvcnQsIGhvcGVmdWxseSBmaW5hbAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHRoZSBmb2xsb3dpbmcgRGFWaW5jaSBib2FyZHM6Ci0gICAgLSBEVl9FVk0KLSAgICAtIFNDSE1PT0dJRQotICAgIC0gU09OQVRBCi0KLSAgICBDaGFuZ2VzOgotCi0gICAgLSBTcGxpdCBpbnRvIHNlcGFyYXRlIGJvYXJkIGRpcmVjdG9yaWVzCi0gICAgLSBSZW1vdmVkIGNoYW5nZXMgdG8gTVREX0RFQlVHIChvciB3aGF0ZXZlciBpdCdzIGNhbGxlZCkKLSAgICAtIE5ldyBDT05GSUdfQ01EIHBhcnR5IGxpbmUgZm9sbG93ZWQKLSAgICAtIFNvbWUgY29zbWV0aWMgZml4ZXMsIGNsZWFudXAgZXRjLgotICAgIC0gUGF0Y2hlcyBhZ2FpbnN0IHRoZSBsYXRlc3QgVS1Cb290IHRyZWUgYXMgb2Ygbm93LgotICAgIC0gRml4ZWQgQ09ORklHX0NNRF9ORVQgaW4gbmV0IGZpbGVzLgotICAgIC0gRml4ZWQgQ09ORklHX0NNRF9FRVBST00gZm9yIHNjaG1vb2dpZS4KLSAgICAtIE1hZGUgc3VyZSBpdCBjb21waWxlcyBhbmQgd29ya3MgKGZvcmNlZW52KCkgbGluayBwcm9ibGVtKSBvbiBTQ0hNT09HSUUgYW5kCi0gICAgICAgRFZfRVZNLiBDYW4ndCBjaGVjayBpZiBpdCB3b3JrcyBvbiBTT05BVEEsIGRvbid0IGhhdmUgYSBib2FyZCBhbnkgbW9yZSwKLSAgICAgICBidXQgaXQgYXQgbGVhc3QgY29tcGlsZXMuCi0KLSAgICBIZXJlIGlzIGFuIGV4Y2VycHQgZnJvbSBzZXNzaW9uIGxvZyBvbiBTQ0hNT09HSUUuLi4KLQotICAgIFUtQm9vdCAxLjIuMC1nNmMzM2M3ODUtZGlydHkgKEF1ZyAgNyAyMDA3IC0gMTM6MDc6MTcpCi0KLSAgICBEUkFNOiAgMTI4IE1CCi0gICAgTkFORDogIDEyOCBNaUIKLSAgICBJbjogICAgc2VyaWFsCi0gICAgT3V0OiAgIHNlcmlhbAotICAgIEVycjogICBzZXJpYWwKLSAgICBBUk0gQ2xvY2sgOiAyOTdNSHoKLSAgICBERFIgQ2xvY2sgOiAxNjJNSHoKLSAgICBFVEggUEhZICAgOiBEUDgzODQ4IEAgMHgwMQotICAgIFUtQm9vdCA+IGlwcm9iZQotICAgIFZhbGlkIGNoaXAgYWRkcmVzc2VzOiAxQiAzOCAzQSAzRCAzRiA1MCA1RCA2RgotICAgIFUtQm9vdCA+IHBpbmcgMTkyLjE2OC4yNTMuMTAKLSAgICBob3N0IDE5Mi4xNjguMjUzLjEwIGlzIGFsaXZlCi0gICAgVS1Cb290ID4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdleSBLdWJ1c2h5biA8a3NpQGtvaTgubmV0PgotICAgIEFja2VkLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KLSAgICBBY2tlZC1ieTogWmFjaCBTYWRlY2tpIDxaYWNoLlNhZGVja2lAcmlwY29kZS5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDJlNGQ5NGYxZTNjMjk2MTQyODk2N2EzM2I2ZmYyNTIwNTY4MzkxYjMKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NDUgMjAwNyAtMDUwMAotCi0gICAgZnNsX3BjaV9pbml0IGNsZWFudXAuCi0KLSAgICBEbyBub3QgZW5hYmxlIG5vcm1hbCBlcnJvcnMgY3JlYXRlZCBkdXJpbmcgcHJvYmUgKG1hc3RlciBhYm9ydCwgcGVyciwKLSAgICBhbmQgcGNpZSBJbnZhbGlkIENvbmZpZ3VyYXRpb24gYWNjZXNzKS4KLQotICAgIEFkZCBDT05GSUdfUENJX05PU0NBTiBib2FyZCBvcHRpb24gdG8gcHJldmVudCBidXMgc2Nhbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkzNmIzZTY5YjY2N2MzZWI5YTYxZWNlNGU3ODY0N2QzZmNlOWZjMmEKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMjcgMDE6NTA6NDQgMjAwNyAtMDUwMAotCi0gICAgcGNpYXV0b19zZXR1cF9kZXZpY2UgYmFyc19udW0gZml4Ci0KLSAgICBQYXNzaW5nIGJhcnNfbnVtPTAgdG8gcGNpYXV0b19zZXR1cF9kZXZpY2Ugc2hvdWxkIGFzc2lnbiBubyBiYXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogU2hpbnlhIEt1cmliYXlhc2hpIDxzaGlueWEua3VyaWJheWFzaGlAbmVjZWwuY29tPgotICAgIEFja2VkLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjZjBiMTg1ZTU4Y2EwYWVjOGFlMmIyYTg4MDRlYzBlZjU4ZWUyMWQ0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXVnIDYgMTc6Mzk6NDQgMjAwNyAtMDUwMAotCi0gICAgODY0MWhwY246IERvIGNvcnJlY3Qgc2l6ZWQgcG9pbnRlciBtYXRoLgotCi0gICAgV2hlbiBJIHJlYmFzZWQgRWQncyBwYXRjaCBhbmQgY2xlYW5lZCB1cCBhIGZldyBjb21waWxhdGlvbgotICAgIHByb2JsZW1zLCBJIGFwcGFyZW50bHkgcmViYXNlZCBteSBicmFpbiBvbiBjcmFjayBmaXJzdC4KLSAgICBGaXggdGhhdCBieSBkb2luZyAoY2hhciAqKSBzaXplZCBwb2ludGVyIG1hdGggYXMgbmVlZGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNmYzdhN2Y1YmIzMjczYzk5NTExNzNjNzg4MDAxZDQ1MTE4ZjE0MWYKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMiAxNDo0MjoyMCAyMDA3IC0wNTAwCi0KLSAgICBjcHUvODZ4eCBmaXhlcy4KLQotICAgIFJlbW92ZSByZXYgMSBmaXhlcy4KLSAgICBBbHdheXMgc2V0IFBJQ0dDUl9NT0RFLgotICAgIEVuYWJsZSBtYWNoaW5lIGNoZWNrIGFuZCBwcm92aWRlIGJvYXJkIGNvbmZpZyBvcHRpb24KLSAgICB0byBzZXQgYW5kIGhhbmRsZSBTb0MgZXJyb3IgaW50ZXJydXB0cy4KLQotICAgIEluY2x1ZGUgTVNTU1IwIGluIGVycm9yIG1lc3NhZ2UuCi0KLSAgICBJc29sYXRlIGEgUkFNQk9PVCBiaXQgb2YgY29kZSB3aXRoICNpZmRlZiBDRkdfUkFNQk9PVC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDM1ZDIyZjk1N2E4NWEyMmJiM2NkMWFkMDg0ZmE1NDA0NjIwZDFjNDIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyAxMCAxMDo0MjoyNSAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgM2E2ZDU2YzIwOTg5ZmUyNzM2MGFmZTc0M2JkMmE3YWQ0ZDc2ZTQ4ZgotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJVGh1IEF1ZyAyIDE3OjQyOjA4IDIwMDcgKzAyMDAKLQotICAgIE1ha2UgdXNlIG9mIGdlbmVyaWMgNjRiaXQgZGl2aXNpb24gaW4gbmFuZF91dGlsLmMKLQotICAgIFVzZSBnZW5lcmljIDY0Yml0IGRpdmlzaW9uIGluIG5hbmRfdXRpbC5jLiBUaGlzIG1ha2VzIG5hbmRfdXRpbC5jCi0gICAgaW5kZXBlbmRlbnQgb2YgYW55IHRvb2xjaGFpbiA2NGJpdCBkaXZpc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERpcmsgQmVobWUgPGRpcmsuYmVobWVAZ21haWwuY29tPgotCi1jb21taXQgZjdjMDg2ZTk0ZThjZTlhYWQ3MjY4YWY5N2Y3M2FhNjg4NDY4NmYyNwotQXV0aG9yOiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdvb2dsZW1haWwuY29tPgotRGF0ZToJVGh1IEF1ZyAyIDE3OjQxOjE0IDIwMDcgKzAyMDAKLQotICAgIE1vdmUgNjRiaXQgZGl2aXNpb24gZnJvbSBhdnIzMiB0byBnZW5lcmljIGxpYgotCi0gICAgTW92ZSB0aGUgNjRiaXQgZGl2aXNpb24gZnJvbSBsaWJfYXZyMzIgdG8gbGliX2dlbmVyaWMuIFdpdGggdGhpcywgYWxsCi0gICAgYm9hcmRzIGNhbiBkb19kaXYvX19kaXY2NF8zMiBpZiBuZWVkZWQsIG5vdCBvbmx5IGF2ciBvbmUuIENvZGUgaXMgcHV0Ci0gICAgdG8gbGliX2dlbmVyaWMsIHNvIG5vIGxhcmdlciBtZW1vcnkgZm9vdHByaW50IGlmIG5vdCB1c2VkLiBObyBjb2RlCi0gICAgbW9kaWZpY2F0aW9ucy4gVGhhbmtzIGZvciBwcm9wb3NhbCBieSBIw6V2YXJkIFNraW5uZW1vZW4uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEaXJrIEJlaG1lIDxkaXJrLmJlaG1lQGdtYWlsLmNvbT4KLQotY29tbWl0IDE1N2NkYTRkMGMzZDU5MmNjYmIxOWJiZmMwN2Q5MjUxODk0ZjA4OTQKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KLURhdGU6CUZyaSBKdWwgMjcgMTE6MzE6MjIgMjAwNyArMDIwMAotCi0gICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSENVNSBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDZlNWRlMjZjNmU3NTgwZmFmMTZlODc3NDVjZDQ4OGI5MmI0OTJkMGMKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KLURhdGU6CUZyaSBKdWwgMjcgMTE6MzA6MzMgMjAwNyArMDIwMAotCi0gICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSENVNCBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IGU4Mzk3ZmM3OGM5Mzk0ZDcxZGUyMzNhNGQ4MTBmYmM5MDQ3ZTRjNzYKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KLURhdGU6CUZyaSBKdWwgMjcgMTE6Mzg6MjYgMjAwNyArMDIwMAotCi0gICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogY29tbW9uIGZpbGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgYWM5ODJlYTVhNGYyZjk5M2VmY2Y1MmRjYTEyMmY1YTU5ZGYwNDdkOAotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzZ2lnZXJAZ214LmNoPgotRGF0ZToJRnJpIEp1bCAyNyAxMToyODo0NCAyMDA3ICswMjAwCi0KLSAgICBBZGQgUFBDNHh4LUhDVTQgYW5kIEhDVTUgYm9hcmRzOiBtYWtlIHJlbGF0ZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmV0c3RhbC5jb20+Ci0KLWNvbW1pdCAxMzdmZGQ5ZjQ3NGVjYjg1M2VmZGFjZTUyMDA1NzYzMDhjNjdmMThkCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXNnaWdlckBnbXguY2g+Ci1EYXRlOglGcmkgSnVsIDI3IDExOjI4OjAzIDIwMDcgKzAyMDAKLQotICAgIEFkZCBQUEM0eHgtSENVNCBhbmQgSENVNSBib2FyZHM6IEhDVTUgY29uZmlnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5ldHN0YWwuY29tPgotCi1jb21taXQgNzE0YmM1NWIzNWI2ZjZhNjVjYzg3NDBhMzg0MmE1NDNlODhjZGVmMgotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzZ2lnZXJAZ214LmNoPgotRGF0ZToJRnJpIEp1bCAyNyAxMToyNzoxNSAyMDA3ICswMjAwCi0KLSAgICBBZGQgUFBDNHh4LUhDVTQgYW5kIEhDVTUgYm9hcmRzOiBIQ1U0IGNvbmZpZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDE4OTRkZDM4MTEyNGJkYmZiZGFlN2NmM2E2Y2E1MmE4ZWIxZjQ0MjEKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KLURhdGU6CUZyaSBKdWwgMjcgMTE6MjU6MzEgMjAwNyArMDIwMAotCi0gICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogUkVBRE1FcwotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDY0MWNjYTk1NjljZTM1MWRkYjI4N2ZkMzM0M2Q4YjFkY2I1OTFkYjQKLUF1dGhvcjogTmlrbGF1cyBHaWdlciA8bmlrbGF1c2dpZ2VyQGdteC5jaD4KLURhdGU6CUZyaSBKdWwgMjcgMTE6Mzc6NDAgMjAwNyArMDIwMAotCi0gICAgQWRkIFBQQzR4eC1IQ1U0IGFuZCBIQ1U1IGJvYXJkczogSW5mcmFzdHJ1Y3R1cmUKLQotICAgIFRoaXMgc2VyaWVzIG9mIHBhdGNoZXMgYWRkcyBzdXBwb3J0IGZvciAyIGJvYXJkcyBmcm9tIE5ldHN0YWwgTWFzY2hpbmVuLgotCi0gICAgVGhlIEhDVTQgaGFzIGEgUFBDNDA1R3ByIGFuZAotICAgIHRoZSBIQ1U1IGhhcyBhIFBQQzQ0MEVQWC4KLQotICAgIFRoZSBIQ1U0IGhhcyBhIHNvbWVob3cgY29tcGxpY2F0ZWQgZmxhc2ggc2V0dXAsIGFzIHRoZSBib290ZXByb20gaXMKLSAgICBvbmx5IDggYml0cyBhbmQgdGhlIENGSSAxNiBiaXRzIHdpZGUsIHdoaWNoIG1ha2VzIGl0IGltcG9zc2libGUgdG8gdXNlIGEgbW9yZQotICAgIGVsZWdhbnQgc29sdXRpb24uCi0KLSAgICBUaGUgSENVNSBoYXMgb25seSBhIGJvb3RlcHJvbSBhcyB0aGUgd2hvbGUgY29kZSB3aWxsIGJlIGRvd25sb2FkZWQgZnJvbSBhCi0gICAgZGlmZmVyZW50IGJvYXJkIHdoaWNoIGhhcyBIRCwgQ0QtUk9NLCBldGMgYW5kIHdoZXJlIGFsbCBjb2RlIGlzIHN0b3JlZC4KLQotICAgIFRoaXMgaXMgbXkgdGhpcmQgdHJ5LiBJIGluY29ycG9yYXRlZCBhbGwgc3VnZ2VzdGlvbnMgbWFkZSBieSBXb2xmZ2FuZyBhbmQgU3RlZmFuLgotICAgIFRoYW5rcyB0aGVtIGEgbG90LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXRzdGFsLmNvbT4KLQotY29tbWl0IDNlNGM5MGM2MjMzNjE4ZmMxODA2ZTYzZmRlNjhkZjVmM2Q2YTAxNzEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEF1ZyAxMCAwODo0Mjo1NSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBsd21vbjUgUE9TVCBjb25maWd1cmF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyOWNiMjVkYTU2YWZlMThjZjVlNzA3MmE5MmE5ZDk4ZWE4YWYxZmQ0Ci1BdXRob3I6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLURhdGU6CUZyaSBBdWcgMTAgMDg6MjU6MjIgMjAwNyArMDIwMAotCi0gICAgUE9TVDogQWRkIHBwYzR4eCBVQVJUIFBPU1Qgc3VwcG9ydCB3aXRob3V0IGV4dGVybmFsIHVhcnQgY2xvY2sgKGx3bW9uNSkKLQotICAgIFRoZSBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIFVBUlQgUE9TVCBvbiBwcGM0NHgtYmFzZWQgYm9hcmRzIHdpdGggbm8KLSAgICBleHRlcm5hbCBzZXJpYWwgY2xvY2tzIGluc3RhbGxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFl1cmkgVGlraG9ub3YgPHl1ckBlbWNyYWZ0LmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTljMmZkYWI5MWJjNjMzZTQ2ZmI0MWRiYWE2MjlmODdjY2Y2ZTAwZgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyA2IDE4OjE4OjM0IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IGZpeCBJVFhbR1BdIE89YnVpbGRkaXIgYnVpbGRzCi0KLSAgICBtYWtlOiAqKiogTm8gcnVsZSB0byBtYWtlIHRhcmdldCBgL3dvcmsvd2QvdG1wL2JvYXJkL21wYzgzNDlpdHgvdS1ib290LmxkcycsIG5lZWRlZCBieSBgL3dvcmsvd2QvdG1wL3UtYm9vdCcuICBTdG9wLgotCi0gICAgQm90aCB0aGUgSVRYIGFuZCBJVFgtR1AgZmFpbCB3aGVuIHlvdSB1c2UgIm1ha2UgTz08c29tZSBkaXI+IC4uLiIgb3IKLSAgICAiQlVJTERfRElSPTxzb21lIGRpcj4gLi9NQUtFQUxMIC4uLiIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0N2U4YmM4NDY3NTllMDM3YjhhZjBlNWY5YzlmOWNmYTdhMTA1MGMzCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMSAxNTowMDo1OSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBDb3JyZWN0IHRoZSBSRUFETUUgZm9yIEREUiBFQ0MKLQotICAgIFVwZGF0ZSB0aGUgUkVBRE1FIGZvciBERFIgRUNDLCBjaGFuZ2UgdGhlIG5hbWUKLSAgICB0byBSRUFETUUubXBjODN4eC5kZHJlY2MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkYWFiOGM2N2QyZGVmZWY3M2RjMjZhYjA3ZjBjM2FmZDFiMDVkMDE5Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMSAxNTowMDoxNSAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBDb25zb2xpZGF0ZSB0aGUgRUNDIHN1cHBvcnQgb2YgODN4eAotCi0gICAgUmVtb3ZlIHRoZSBkdXBsaWNhdGVkIHNvdXJjZSBjb2RlIG9mIGVjYyBjb21tYW5kIG9uIHRoZSA8Ym9hcmQ+LmMsCi0gICAgZm9yIHJldXNlZCwgbW92ZSB0aGVzZSBjb2RlIHRvIGNwdS9tcGM4M3h4IGRpcmVjdG9yeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDAzNjU3NWM1NDRjZjFiNjk2NTRkOGZiMzM0YmRhNjljNmZmM2RhMzYKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IEF1ZyA0IDEzOjM3OjM5IDIwMDcgKzA4MDAKLQotICAgIG1wYzgzeHg6IENvcnJlY3QgdGhlIGJ1cnN0IGxlbmd0aCBmb3IgRERSMiB3aXRoIDMyIGJpdHMKLQotICAgIFRoZSBidXJzdCBsZW5ndGggc2hvdWxkIGJlIDQgZm9yIEREUjIgd2l0aCAzMiBiaXRzIGJ1cwotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFjMjc0YzRlMDViNmRjOWIyNGVkYzhhYTYxOGIwMmY2MDdlZTZlZWQKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdWwgMjUgMTk6MjU6MzMgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogYWRkIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzIzRSBSREIKLQotICAgIE1QQzgzMjNFIGJhc2VkIGJvYXJkIHdpdGggNjRNQiBmaXhlZCBTRFJBTSwgMTZNQiBmbGFzaCwKLSAgICBmaXZlIDEwLzEwMCBldGhlcm5ldCBwb3J0cyBjb25uZWN0ZWQgdmlhIGFuIElDUGx1cyBJUDE3NUMKLSAgICBzd2l0Y2gsIG9uZSBQQ0kgc2xvdCwgYW5kIHNlcmlhbC4gIEZlYXR1cmVzIG5vdCBzdXBwb3J0ZWQKLSAgICBpbiB0aGlzIHBhdGNoIGFyZSBTRCBjYXJkIGludGVyZmFjZSwgMiBVU0IgcG9ydHMsIGFuZCB0aGUKLSAgICB0d28gcGhvbmUgcG9ydHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNaWNoYWVsIEJhcmtvd3NraSA8bWljaGFlbC5iYXJrb3dza2lAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzQzZDkxMDA5ZDU1ZmM1YjNmZjhjYzk0MDU5N2FmNmM2YWExZDM1OQotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAyNSAxOToyNToyOCAyMDA3IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBmaXh1cCBnZW5lcmljIHBjaSBmb3IgbGliZmR0Ci0KLSAgICBhZGQgbGliZmR0IHN1cHBvcnQgdG8gdGhlIGdlbmVyaWMgODN4eCBwY2kgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGY1N2FjN2E3YjM3MTA5MjQ1YjY5ZGI4MDgzOWViZWUyNjE3OTk2NmEKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdWwgMjUgMTk6MjU6MjIgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogZml4IDgzNjAgYW5kIGNwdSBmdW5jdGlvbnMgdG8gdXBkYXRlIGZkdCBiZWluZyBwYXNzZWQKLQotICAgIC4uYW5kIG5vdCB0aGUgZ2xvYmFsIGZkdC4gUmVuYW1lIGxvY2FsIGZkdCB2YXJzIHRvIGJsb2Igc28gYXMgbm90IHRvCi0gICAgYmUgY29uZnVzZWQgd2l0aCB0aGUgZ2xvYmFsIHZhciB3aXRoIHRoZSBzYW1lIHRocmVlLWxldHRlciBuYW1lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhiZTQwNDQ1OWE2YjczOTU0MTVhNTdiYjM1ZTgzNzdlM2IyYjVhY2IKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJV2VkIEp1bCA0IDIxOjM0OjI0IDIwMDcgLTA0MDAKLQotICAgIG1wYzgzeHg6IEZpeCBlcnJvcnMgd2hlbiBDT05GSUdfT0ZfTElCRkRUIGlzIGVuYWJsZWQKLQotICAgIFNldmVyYWwgbm9kZSBzdHJpbmdzIHdlcmUgbm90IGNvcnJlY3QgKHRyYWlsaW5nIHNsYXNoZXMgYW5kIHByb3BlcnRpZXMKLSAgICAgIGluIHRoZSBzdHJpbmdzKQotICAgIEFkZGVkIHNldHRpbmcgb2YgdGhlIHRpbWViYXNlLWZyZXF1ZW5jeS4KLSAgICBJbXByb3ZlZCBlcnJvciBtZXNzYWdlcyBhbmQgdXNlIGRlYnVnKCkgaW5zdGVhZCBvZiBwcmludGYoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI2ZDAyYzliYmFjMTc1MWM1ZTE5Mjk0ZjAwMDEwMGI0OGQ0M2E5MjAKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxndmIudWJvb3RAZ21haWwuY29tPgotRGF0ZToJV2VkIEp1bCA0IDIxOjI3OjMwIDIwMDcgLTA0MDAKLQotICAgIG1wYzgzeHg6IFJlcGxhY2UgZmR0X25vZGVfb2Zmc2V0KCkgd2l0aCBmZHRfZmluZF9ub2RlX2J5X3BhdGgoKS4KLQotICAgIFRoZSBuZXcgbmFtZSBtYXRjaGVzIG1vcmUgY2xvc2VseSB0aGUga2VybmVsJ3MgbmFtZSwgd2hpY2ggaXMgYWxzbwotICAgIGEgbXVjaCBiZXR0ZXIgZGVzY3JpcHRpb24uCi0KLSAgICBUaGVzZSBhcmUgdGhlIG1wYzgzeHggY2hhbmdlcyBtYWRlIG5lY2Vzc2FyeSBieSB0aGUgZnVuY3Rpb24gbmFtZSBjaGFuZ2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBHcmFuZGVnZ2VyIDx3Z0BncmFuZGVnZ2VyLmNvbT4KLSAgICBBY2tlZC1ieTogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWJlMzlhNjdjOWY4ZmVmNzEwN2Y1ZGYwOWQ2NzMwMDVmMDRkMDk2MwotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1biAyNSAxMDo0MTo1NiAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBBZGQgc3VwcG9ydCBmb3IgdGhlIGRpc3BsYXkgb2YgcmVzZXQgc3RhdHVzCi0KLSAgICA4M3h4IHByb2Nlc3NvciBmYW1pbHkgaGFzIG1hbnkgcmVzZXQgc291cmNlcywgc3VjaCBhcwotICAgIHBvd2VyIG9uIHJlc2V0LCBzb2Z0d2FyZSBoYXJkIHJlc2V0LCBzb2Z0d2FyZSBzb2Z0IHJlc2V0LAotICAgIEpUQUcsIGJ1cyBtb25pdG9yLCBzb2Z0d2FyZSB3YXRjaGRvZywgY2hlY2sgc3RvcCByZXNldCwKLSAgICBleHRlcm5hbCBoYXJkIHJlc2V0LCBleHRlcm5hbCBzb2Z0d2FyZSByZXNldC4KLSAgICBzb21ldGltZXMsIHRvIGZpZ3VyZSBvdXQgdGhlIGZhdWx0IG9mIHN5c3RlbSwgd2UgbmVlZCB0bwotICAgIGtub3cgdGhlIGNhdXNlIG9mIHJlc2V0IGVhcmx5IGJlZm9yZSB0aGUgcHJvbXB0IG9mCi0gICAgdS1ib290IHByZXNlbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmZjk2NThkNzA0OWJmOGM4ZThlMGEwNWRiZTVlOWY3ZTkxYWE1YTVkCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVuIDI1IDEwOjQxOjA0IDIwMDcgKzA4MDAKLQotICAgIG1wYzgzeHg6IEZpeCB0aGUgYWxpZ24gYnVnIG9mIFNETUEgYnVmZmVyCi0KLSAgICBBY2NvcmRpbmcgdG8gdGhlIGxhdGVzdCB1c2VyIG1hbnVhbCwgdGhlIFNETUEgdGVtcG9yYXJ5Ci0gICAgYnVmZmVyIGJhc2UgYWRkcmVzcyBtdXN0IGJlIDRLQiBhbGlnbmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjZkYzJjMmRjNTFmOGI4OGJiOGUyMzFiYzgwY2Q5MmVhZTFkNjQ3NgotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1biAyNSAxMzoyMToxMiAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBSZXZpc2UgdGhlIE1QQzgzNjBFTURTIHJlYWRtZSBkb2MKLQotICAgIFdoZW4gdGhlIHJldjIueCBzaWxpY29uIG1vdW50IG9uIHRoZSBNUEM4MzYwRU1EUyBiYW9yZCwKLSAgICBhbmQgaWYgeW91IGFyZSB1c2luZyB0aGUgdS1ib290IHZlcnNpb24gYWZ0ZXIgdGhlIGNvbW1pdAotICAgIDNmYzBiZDE1OTEwM2I1MzZlMWM1NGM2ZjQ0NTdhMDliM2FiYTY2Y2EuCi0gICAgdG8gbWFrZSB0aGUgZXRoZXJuZXQgaW50ZXJmYWNlIHVzYWJsZSwgd2UgaGF2ZSB0byBzZXR1cAotICAgIHRoZSBqdW1wZXJzIGNvcnJlY3RseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU3MzliYzk1Nzk3YWFjNGZlZmM0Yzc1YjU1YzdjNzhlNTlkM2VhOWMKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMyAxMzo0NjozMiAyMDA3IC0wNTAwCi0KLSAgICBGU0wgSTJDIGRyaXZlciBwcm9ncmFtcyB0aGUgdHdvIEkyQyBidXNzZXMgZGlmZmVyZW50bHkKLQotICAgIFRoZSBpMmNfaW5pdCgpIGZ1bmN0aW9uIGluIGZzbF9pMmMuYyBwcm9ncmFtcyB0aGUgdHdvIEkyQyBidXNzZXMgZGlmZmVyZW50bHkuCi0gICAgVGhlIHNlY29uZCBJMkMgYnVzIGhhcyBpdHMgc2xhdmUgYWRkcmVzcyBwcm9ncmFtbWVkIGluY29ycmVjdGx5IGFuZCBpcwotICAgIG1pc3NpbmcgYSA1LXVzIGRlbGF5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGYzM2Y2YjRkNmQ2MzY5M2RkOTIwMDgwOGIyNDJkZTFiODZjYjhlOAotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1bCAzIDEzOjA0OjM0IDIwMDcgLTA1MDAKLQotICAgIFVwZGF0ZSBTQ0NSIHByb2dyYW1taW5nIGluIGNwdV9pbml0X2YoKSB0byBzdXBwb3J0IGFsbCA4M3h4IHByb2Nlc3NvcnMKLQotICAgIFVwZGF0ZSB0aGUgY3B1X2luaXRfZigpIGZ1bmN0aW9uIGluIGNwdS9tcGM4M3h4L2NwdV9pbml0LmMgdG8gcHJvZ3JhbSB0aGUKLSAgICBiaXRmaWVsZHMgZm9yIGFsbCA4M3h4IHByb2Nlc3NvcnMuCVRoZSBjb2RlIHRvIHVwZGF0ZSBzb21lIGJpdGZpZWxkcyB3YXMKLSAgICBjb21waWxlZCBvbmx5IG9uIHNvbWUgcHJvY2Vzc29ycy4gIE5vdywgdGhlIGJpdGZpZWxkcyBhcmUgcHJvZ3JhbW1lZCBhcyBsb25nCi0gICAgYXMgdGhlIGNvcnJlc3BvbmRpbmcgQ0ZHX1NDQ1Igb3B0aW9uIGlzIGRlZmluZWQgaW4gdGhlIGJvYXJkIGhlYWRlciBmaWxlLgotICAgIFRoaXMgbWVhbnMgdGhhdCB0aGUgYm9hcmQgaGVhZGVyIGZpbGUgc2hvdWxkIG5vdCBkZWZpbmUgYW55IENGR19TQ0NSIG1hY3JvcwotICAgIGZvciBiaXRmaWVsZHMgdGhhdCBkb24ndCBleGlzdCBvbiB0aGF0IHByb2Nlc3Nvciwgb3RoZXJ3aXNlIHRoZSBTQ0NSIHdpbGwgYmUKLSAgICBwcm9ncmFtbWVkIGluY29ycmVjdGx5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTU0NjI2Njk5OWYwYjliNTEzNzI2MzY2MTQyMTFiODhkOTBmMGYyNQotQXV0aG9yOiBNYXJ0aW4gS3JhdXNlIDxtYXJ0aW4ua3JhdXNlQHRxcy5kZT4KLURhdGU6CUZyaSBKdW4gMjIgMTM6MDQ6MjIgMjAwNyArMDIwMAotCi0gICAgVFFNODM0eDogY2xlYW51cCBjb25maWd1cmF0b24KLQotICAgIFJlbW92ZSBpcnJpdGF0aW5nICN1bmRlZiBERUJVRwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFydGluIEtyYXVzZSA8bWFydGluLmtyYXVzZUB0cXMuZGU+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVkNDk3ZTZiZjBmNWJmNjM3MjliNGE0N2IzZmQ3ODZkM2M3N2ExYmMKLUF1dGhvcjogZGF2aWQuc2FhZGEgPERhdmlkLlNhYWRhQGVjaXRlbGUuY29tPgotRGF0ZToJTW9uIEp1biAxOCAwOTowOTo1MyAyMDA3IC0wNzAwCi0KLSAgICBNUEM4M3h4OiBGaXggbWFrZWZpbGUgdG8gZ2VuZXJhdGUgY29uZmlnLmggZmlsZSBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5Ci0KLSAgICBNUEM4M3h4OiBGaXggdGhlIE1ha2VmaWxlIGNvbmZpZyBzZWN0aW9ucyB0byBnZW5lcmF0ZSB0aGUgaW5jbHVkZS9jb25maWcuaAotICAgIGZpbGUgaW4gdGhlIGJ1aWxkIGRpcmVjdG9yeSBpbnN0ZWFkIG9mIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgU2FhZGEgPGRhdmlkLnNhYWRhQGVjaXRlbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxZGVkMDI0MmU0MzcyNTkzNjY3OTJkNTJiN2U5ZDFlMTkzMWQ4ZmE1Ci1BdXRob3I6IExlZSBOaXBwZXIgPExlZS5OaXBwZXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdW4gMTQgMjA6MDc6MzMgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIDgzNjAgc2lsaWNvbiByZXZpc2lvbiAyLjEKLQotICAgIFRoaXMgY2hhbmdlIGFkZHMgODM2MCBzaWxpY29uIHJldmlzaW9uIDIuMSBzdXBwb3J0IHRvIHUtYm9vdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExlZSBOaXBwZXIgPGxlZS5uaXBwZXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTIyODA2NDY5YThmMmI2OWM4MjlmNGZkNTM2MWZkZWJkMGNiMDFiNAotQXV0aG9yOiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotRGF0ZToJV2VkIEF1ZyA4IDA0OjE0OjI4IDIwMDcgLTA1MDAKLQotICAgIFRyZWF0IHBwYzY0IGhvc3QgYXMgcHBjCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgMGRjNDI3OWIwOGZmODI0NzJiZWMyZTJjOTA4NTg2MDI0NTlmZWJlOAotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyA4IDA5OjAxOjQ2IDIwMDcgKzA4MDAKLQotICAgIE1pbm9yIGZpeCBmb3IgYmlvcyBlbXVsYXRvciBtYWtlZmlsZQotCi0gICAgQWRkICQob2JqKSB0byBMSUIgYXZvaWRpbmcgb2JqZWN0cyBiZSBidWlsdCBpbiB0aGUgc291cmNlIGRpcgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNlOTgxZGM4NTdhZGZjODAzNmNhMmY2ZDVkNWEwNmMyYThhYTc3ZDYKLUF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgOCAwODozMzoxMSAyMDA3ICswODAwCi0KLSAgICBBZGQgQ09ORklHX0JJT1NFTVUgZGVmaW5lIHRvIGd1YXJkIGFsbCB0aGUgYmlvcyBlbXVsYXRvciBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi0gICAgVGhpcyBwYXRjaCBmaXggdGhlIGNvbXBpbGUgaXNzdWUgb24gdGhlIGJvYXJkIHRoYXQgZGlkIG5vdCBlbmFibGUgdGhlIGJpb3MgZW11bGF0b3IKLQotY29tbWl0IGVkODEwNjQzMzUyMmYyZWE4OTMzZTk4MDgzNDY4NjBkMDYxZDc3MzEKLUF1dGhvcjogWmFjaCBTYWRlY2tpIDxaYWNoLlNhZGVja2lAcmlwY29kZS5jb20+Ci1EYXRlOglUdWUgSnVsIDMxIDEyOjI3OjI1IDIwMDcgLTA1MDAKLQotICAgIHRzZWM6IGZpeCBtdWx0aXBsZSBQSFkgc3VwcG9ydAotCi0gICAgVGhlIGNoYW5nZSBlbnRpdGxlZCAiUmVkdWNlIENPTkZJR19NUEM4WVhYX1RTRUN4IHRvIENPTkZJR19UU0VDeCIKLSAgICBicm9rZSBtdWx0aXBsZSBQSFkgc3VwcG9ydCBpbiB0c2VjLmMuICBUaGlzIGZpeGVzIGl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogWmFjaCBTYWRlY2tpIDxaYWNoLlNhZGVja2lAcmlwY29kZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRjYjg0YjcyMDhhZGUwYmJlYmJlYjU2YmVjOWMyYzY0ZjhiMmVlZGUKLUF1dGhvcjogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KLURhdGU6CVRodSBBdWcgOSAwOTowODoxOCAyMDA3IC0wNTAwCi0KLSAgICB0c2VjOiBBbGxvdyBUZW4gQml0IEludGVyZmFjZSBhZGRyZXNzIHRvIGJlIGNvbmZpZ3VyYWJsZQotCi0gICAgQWxsb3cgdGhlIGFkZHJlc3Mgb2YgdGhlIFRlbiBCaXQgSW50ZXJmYWNlIChUQkkpIHRvIGJlIGNoYW5nZWQgaW4gdGhlCi0gICAgZXZlbnQgb2YgYSBjb25mbGljdCB3aXRoIGFub3RoZXIgZGV2aWNlLgotCi0gICAgU2lnbmVkLW9mZiBieTogSm9lIEhhbW1hbiA8am9lLmhhbW1hbkBlbWJlZGRlZHNwZWNpYWx0aWVzLmNvbT4KLQotY29tbWl0IDNiYTRjMmQ2OGY2NTQxZGI0Njc3YjRhZWExMjA3MWY1NmU2ZmY2ZTYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEF1ZyA4IDA5OjU0OjI2IDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhNDFkZTFmMGQzNzNlMDljNzgyZGVhNTU4Mzg1YTA2MjQ3MTExYmE1Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBBdWcgNSAwNToxNToxOCAyMDA3IC0wNTAwCi0KLSAgICBQb3J0IGVuYWJsZWQgZm9yIEkyQyBzaWduYWxzIGFuZCBjaGlwc2VsZWN0cyBwb3J0IGNvbmZpZ3VyYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYTMzY2U2NWE0YzUxYTY5MTkwZGQ4YzQwOGY5ZTFjNjJhNjZlOTRmCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBBdWcgNSAwNDozMToxOCAyMDA3IC0wNTAwCi0KLSAgICBBZGRlZCBOQU5EIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVhZjllNDQ3YmViM2U0OTg4MThlZjhhZDBiOGMxNTk3Y2Q1MDYxNDkKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEF1ZyA1IDA0OjExOjIwIDIwMDcgLTA1MDAKLQotICAgIEFkZGVkIEkyQyBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5OWMwM2MxNzVkMjY4OTA5MzE3NmZhY2YxN2M1OGNlMmNiMzIwMDAxCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBBdWcgNSAwMzo1ODo1MiAyMDA3IC0wNTAwCi0KLSAgICBDaGFuZ2VkIENGR19DTEsgdG8gZ2QtPmJ1c19jbGsgZm9yIENGR19USU1FUl9QUkVTQ0FMRVIuIEFkZGVkIERFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSIGZvciB0aW1lLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhkMWQ2NmFmNTRkMzA1ZGUyOWQwYmJmNGFhOGM5ZTYzNzVmN2Y3MzEKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEF1ZyA1IDAzOjU1OjIxIDIwMDcgLTA1MDAKLQotICAgIEFkZGVkIHVhcnRfZ3Bpb19jb25mKCkgaW4gc2VyaWFsX2luaXQoKSwgc2VwZXJhdGVkIHVhcnQgcG9ydCBjb25maWd1cmF0aW9uIGZyb20gY3B1X2luaXQoKSB0byB1YXJ0X2dwaW9fY29uZigpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2ZmRlODRhNDRiN2U1NzVlYTgwZmUwZTJkNWJlM2I2ZjczZDFlNjMwCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBBdWcgNSAwMzo0MzozMCAyMDA3IC0wNTAwCi0KLSAgICBNb3ZlZCBzeW5jKCkgZnJvbSBib2FyZCBmaWxlIHRvIGluY2x1ZGUvYXNtLW02OGsvaW8uaAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOWU3MzdkODQ3NmU3ZDZhNTk2ZDE2Y2FhZjZhMzg1M2E5YTExOTBhMgotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTdW4gQXVnIDUgMDM6MzA6NDQgMjAwNyAtMDUwMAotCi0gICAgRGVjbGFyZWQgYXR0cmlidXRlcyBvZiB2b2lkIF9fbWlpX2luaXQodm9pZCkgYXMgYW4gYWxpYXMgZm9yIGludCBtaWlfaW5pdCh2b2lkKQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTk5OGJkMzdlYWQ4NWU5Mzk1MzU1OTcyMDcxMGQzYjA2ODVjODFlNgotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTdW4gQXVnIDUgMDM6MTk6MTAgMjAwNyAtMDUwMAotCi0gICAgUmVuYW1lZCBDT05GSUdfTUNGU0VSSUFMIHRvIENPTkZJR19NQ0ZVQVJUCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3YzRjMzcyMmEzOGQ0MGIwY2Y1MzdkZGFlNzJiMDRmNDA4OGIxOTBjCi1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDcgMTY6MTc6MDYgMjAwNyArMDgwMAotCi0gICAgQWRkIENPTkZJR19CSU9TRU1VIGRlZmluZSB0byBndWFyZCBhbGwgdGhlIGJpb3MgZW11bGF0b3IgY29kZQotCi0gICAgVGhpcyBwYXRjaCBmaXggdGhlIGNvbXBpbGUgaXNzdWUgb24gdGhlIGJvYXJkIHRoYXQgZGlkIG5vdCBlbmFibGUgdGhlIGJpb3MgZW11bGF0b3IKLQotY29tbWl0IGJmMTA2MGVhNGY5ZWFhN2U3ZDE2NGE3MGE3ZDZmMjg5Mzk4ODIwNTMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgNyAxNjowMjoxMyAyMDA3ICswMjAwCi0KLSAgICBGaXggbWlzc2luZyBicmFjZSBlcnJvciBpbiBmcy9mYXQvZmF0LmMKLSAgICBbcG9pbnRlZCBvdXQgYnkgUm9kZXJpayBXaWxkZW5idXJnXQotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDcwNjcxNGQ5N2EwZDA4ZDU5ZWRhNGRlMjI2OGMzOWY1MDQ2ODgzMjkKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIEF1ZyA2IDIzOjQxOjUzIDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIHJlbW92ZSBjdXRlIGNvZGUKLQotY29tbWl0IGY1MDBkOWZkZWI1NzYyODg2NTZkYWM0MjcwNTJhZDJjNWNhMGFkMWEKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIEF1ZyA2IDIzOjM1OjI2IDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIEZpeCByb21mcyBjb2RlCi0KLWNvbW1pdCBhYjRiOTU2ZDMxNDNmOGY4MTc0MDg5MDUzZjVkZmFiYmIwNDc2MmIwCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBBdWcgNiAyMzozMTo0OSAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBDb2Rpbmcgc3R5bGUgY2xlYW51cCAtIFdvbGZnYW5nJ3Mgc3VnZ2VzdGlvbnMKLQotY29tbWl0IDZjMzNjNzg1NTdjYTZmOGRhNjhjMDFjZTMzZTI3ODY5NTE5N2QzZjQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBdWcgNiAyMzoyMTowNSAyMDA3ICswMjAwCi0KLSAgICBGaXhlZCB0eXBvIGluIFJFQURNRSAocG9pbnRlZCBvdXQgYnkgTWFydGluIEpvc3QpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDUzNzIyM2FmYTYxZjY0NDgwZGYzMWNlNDQwYTljYjM4NmRmNGE4MTQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEF1ZyA2IDIxOjEwOjE3IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgQmFtYm9vIFJFQURNRSBkb2MvUkVBRE1FLmJhbWJvbwotCi0gICAgQXMgc3VnZ2VzdGVkIGJ5IEV1Z2VuZSBPJ0JyaWVuIDxFdWdlbmUuTydCcmllbkBhZHZhbnRlY2hhbXQuY29tPiwKLSAgICBoZXJlIGFuIHVwZGF0ZWQgQmFtYm9vIFJFQURNRS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDljN2U0YjA2MjE0ZGI2MWJiMjFmMWJjYmU1N2M5NzUxOTY2OWJhYWUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBBdWcgNiAwMjoxNzozNiAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyMjE4MzhjYzdlYjE3ODM3MGZmNjJhYTA1OTIwYTU4MmUxMmFjMzIyCi1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVsIDEwIDA5OjAzOjIyIDIwMDcgKzA4MDAKLQotICAgIFJlbW92ZSB0aGUgYmlvcyBlbXVsYXRvciBmcm9tIE1BSSBib2FyZC4KLQotICAgIFRoZSBiaW9zIGVtdWxhdG9yIGluIHRoZSBNQUkgYm9hcmQgY2FuIG5vdCBwYXNzIGNvbXBpbGUKLSAgICBhbmQgaGF2ZSBhIGxvdCBvZiBjcmFwIGluIGl0LiByZW1vdmUgaXQgYW5kIHdpbGwgaGF2ZSBhCi0gICAgY2xlYW4gYW5kIHNtYWxsIGJpb3MgZW11bGF0b3IgaW4gdGhlIGRyaXZlcnMgZGlyZWN0b3J5Ci0gICAgd2hpY2ggY2FuIGJlIHVlc2VkIGZvciBldmVyeSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1NjE4MzMyNDA5YmI5NmY0NDQ4ZDE3MTI4OTkzNjlmYzgwYzBiNDg5Ci1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDEzIDEyOjE0OjU5IDIwMDcgKzA4MDAKLQotICAgIEZpeCBzb21lIGNvbXBpbGUgaXNzdWVzIGZvciBNQUkgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGY0NjBhMWVlMTQ4YjY0OGVlMjQyYzMxNTc2NTAyODdkNDI5NjI2MAotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCAxMyAxMjoxNDo1OCAyMDA3ICswODAwCi0KLSAgICBDb25maWd1cmF0aW9ucyBmb3IgQVRJIHZpZGVvIGNhcmQgQklPUyBlbXVsYXRvcgotCi0gICAgVGhpcyBwYXRjaCBhZGQgZGVmaW5pdGlvbiBvZiB0aGUgQklPUyBlbXVsYXRvciBhbmQgdGhlIEFUSSBmcmFtZWJ1ZmZlcgotICAgIGRyaXZlciBmb3IgTVBDODY0MUhQQ04gYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlY2U5MmY4NTA1M2I4ZGY2MTNlZGNmMDViMjZhNDE2Y2JjM2Q2MjljCi1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDYgMDg6MzQ6NTYgMjAwNyArMDgwMAotCi0gICAgVGhpcyBpcyBhIEJJT1MgZW11bGF0b3IsIHBvcnRpbmcgZnJvbSBTY2lUZWNoIGZvciB1LWJvb3QsIG1haW5seSBmb3IKLSAgICBBVEkgdmlkZW8gY2FyZCBCSU9TLiBhbmQgY2FuIGJlIHVzZWQgZm9yIHg4NiBjb2RlIGVtdWxhdGlvbiBieSBzb21lCi0gICAgbW9kaWZpY2F0aW9ucy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1MDcyMTg4YWNhYmRlMzE3OGZhYzdmNWE1OTcxNTBlNmU3NGZkNDBjCi1BdXRob3I6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDYgMDg6MzM6MzMgMjAwNyArMDgwMAotCi0gICAgVGhpcyBpcyBhIGZyYW1lYnVmZmVyIGRyaXZlciBmb3IgQVRJIHZpZGVvIGNhcmQsIGNhbiB3b3JrIGZvciBQQ0k5MjAwLAotICAgIFgzMDAsIFg3MDAsIFg4MDAgQVRJIHZpZGVvIGNhcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTcyOGJlMzg5ZTY1ZmQ0N2YzNGIzM2MyNTk2MjcxZWI0ZGI3NTFhZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIEF1ZyA2IDAxOjAxOjQ5IDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLiBVcGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDgwOTJmZWY0YzI5YjM5NTk1OGJiNjQ5NjQ3ZGE3ZTM3NzU3MzE1MTcKLUF1dGhvcjogTWFydGluIEtyYXVzZSA8TWFydGluLktyYXVzZUB0cXMuZGU+Ci1EYXRlOglUdWUgRGVjIDEyIDE0OjI2OjAxIDIwMDYgKzAxMDAKLQotICAgIEFkZCBmdW5jdGlvbnMgdG8gbGlzdCBvZiBleHBvcnRlZCBmdW5jdGlvbnMKLQotICAgIEFkZGl0aW9uYWxseSBleHBvcnQgdGhlIGZvbGxvd2luZyBmdWN0aW9ucyAodG8gbWFrZSB0cmFiX2NvbmZpZyBidWlsZCBhZ2Fpbik6Ci0gICAgLSBzaW1wbGVfc3RydG9sKCkKLSAgICAtIHN0cmNtcCgpCi0KLSAgICBBbHNvIGJ1bXAgdGhlIEFCSSB2ZXJzaW9uIHRvIHJlZmxlY3QgdGhpcyBjaGFuZ2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hcnRpbiBLcmF1c2UgPG1hcnRpbi5rcmF1c2VAdHFzLmRlPgotCi1jb21taXQgNjNjZWM1ODE0ZmFiNWQyYjFjODY5ODIzMjc0MzM4MDdhNWFjMDI0OQotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAyIDE0OjA5OjQ5IDIwMDcgLTA1MDAKLQotICAgIE1ha2UgTVBDODY0MSdzIFBDSS9QQ0ktRSBkcml2ZXIgYSBjb21tb24gZHJpdmVyIGZvciBtYW55IEZTTCBwYXJ0cy4KLQotICAgIEFsbCBvZiB0aGUgUENJL1BDSS1FeHByZXNzIGRyaXZlciBhbmQgaW5pdGlhbGl6YXRpb24gY29kZSB0aGF0Ci0gICAgd2FzIGluIHRoZSBNUEM4NjQxSFBDTiBwb3J0IGhhcyBub3cgYmVlbiBtb3ZlZCBpbnRvIHRoZSBjb21tb24KLSAgICBkcml2ZXJzL2ZzbF9wY2lfaW5pdC5jLiAgSW4gYSBzdWJzZXF1ZW50IHBhdGNoLCB0aGlzIHdpbGwgYmUKLSAgICB1dGlsaXplZCBieSB0aGUgODV4eCBwb3J0cyBhcyB3ZWxsLgotCi0gICAgQ29tbW9uIFBDSS1FIElNTUFQIHJlZ2lzdGVyIGJsb2NrcyBmb3IgRlNMIDg1eHgvODZ4eCBhcmUgYWRkZWQuCi0KLSAgICBBbHNvIGVuYWJsZSB0aGUgc2Vjb25kIFBDSS1FeHByZXNzIGNvbnRyb2xsZXIgb24gODY0MQotICAgIGJ5IGdldHRpbmcgaXRzIEJBVFMgYW5kIENGR18gc2V0dXAgcmlnaHQuCi0KLSAgICBGaXhlZCBhIHUxNiB2ZW5kb3IgY29tcGlsZXIgd2FybmluZyBpbiBBSENJIGRyaXZlciB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGEyNzRjYTRmNmQ2ODgzMGU3YzkxNmY4OTc1NjFjZmY4YzQxMDFjMzgKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJU3VuIEF1ZyA1IDIyOjMzOjA1IDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIENvZGluZyBzdHlsZSBjbGVhbnVwCi0KLWNvbW1pdCBhZjgzNzdkNGViM2EwYWM1YTgzMTgzMGQ1Y2U2M2ZiZjY1ZmVjYjdmCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVN1biBBdWcgNSAxNjoxMzozMSAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBYaWxpbnggVWFydGxpdGUgZHJpdmVyCi0gICAgQmVjYXVzZSBQUEM0MDUgY2FuIHVzZSBVQVJUTElURSBzZXJpYWwgaW50ZXJmYWNlIGFuZAotICAgIE1pY3JvYmxhemUgY2FuIHVzZSBVYXJ0MTY1NTAgc2VyaWFsIGludGVyZmFjZSBub3Qgb25seSBVYXJ0bGl0ZS4KLQotY29tbWl0IDk4ODg5ZWRkNTBhYWRmODYyMDcxZWI1NjY0NzQ3YWQwZDU2OGEyMGUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJU3VuIEF1ZyA1IDE1OjU0OjUzIDIwMDcgKzAyMDAKLQotICAgIFtGSVhdIENoYW5nZSBjb25maWd1cmF0aW9uIGZvciBYVVBWMlAgTWljcm9ibGF6ZSBib2FyZAotCi1jb21taXQgNTM3MDkxYjRlZWQ5MzAyODY1ZDAzZmVmM2Y3MjEyYjRmZTVjZjI4ZgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTdW4gQXVnIDUgMTU6NTM6NTAgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBBZGRlZCBzdXBwb3J0IGZvciBYaWxpbnggRW1hYyBjb21tdW5pdHkgZHJpdmVyCi0KLWNvbW1pdCA4NmIxMTZiMWIxZTE2NWNhNDg0MGRhZWZlZDM2ZDJlM2I4NDYwMTczCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgQXVnIDMgMTI6MDg6MTYgMjAwNyArMDIwMAotCi0gICAgY20xX3FwMSAtPiBjbTUyMDA6IHNpbmdsZSBVLUJvb3QgaW1hZ2UgZm9yIG1vZHVsZXMgZnJvbSB0aGUgY201MjAwIGZhbWlseS4KLQotICAgIEFkZCB0aGUgYWJpbGl0eSBmb3IgbW9kdWxlcyBmcm9tIHRoZSBTY2hpbmRsZXIgY201MjAwIGZhbWlseSB0byB1c2UgYQotICAgIHNpbmdsZSBVLUJvb3QgaW1hZ2U6Ci0gICAgLSByZW5hbWUgY20xX3FwMSB0byBjbTUyMDAKLSAgICAtIGFkZCBydW4tdGltZSBtb2R1bGUgZGV0ZWN0aW9uCi0gICAgLSBwYXJhbWV0cml6ZSBTRFJBTSBjb25maWd1cmF0aW9uIGFjY29yZGluZyB0byB0aGUgbW9kdWxlIHdlIGFyZSBydW5uaW5nIG9uCi0KLSAgICBGZXcgbWlub3IsIGJvYXJkLXNwZWNpZmljIGZpeGVzIGluY2x1ZGVkIGluIHRoaXMgcGF0Y2g6Ci0gICAgLSBiZXR0ZXIgTUFDIGFkZHJlc3MgaGFuZGxpbmcKLSAgICAtIHVwZGF0ZWQgZGVmYXVsdCBlbnZpcm9ubWVudCAoJ3VwZGF0ZScgY29tbWFuZCB1c2VzICt7ZmlsZXNpemV9IG5vdykKLSAgICAtIGltcHJvdmVkIGVycm9yIG1lc3NhZ2VzIGluIHRoZSBhdXRvLXVwZGF0ZSBjb2RlCi0gICAgLSBhbGxvdyBib290aW5nIFUtQm9vdCBmcm9tIFJBTSAoQ0ZHX1JBTUJPT1QpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBjN2U3MTdlYmMyYjA0NGQ3YTcxMDYyNTUyYzlkYzBmNTRlYTliNzc5Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBBdWcgMyAwNDowNToyNSAyMDA3IC0wNTAwCi0KLSAgICBBZGQgTWFydmVsbCAxMTQ5IFBIWSBzdXBwb3J0IHRvIHRoZSBUU0VDCi0KLWNvbW1pdCBiMWI1NGUzNTIwMjhlZDM3MGMzYWE5NWQ2ZmRlYjlkNjRjNWQyZjg2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDIgMjE6Mjc6NDYgMjAwNyArMDIwMAotCi0gICAgQ29kaW5nIHN0eWxlIGNsZWFudXAsIHVwZGF0ZSBDSEFOR0VMT0cKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA2M2UyMjc2NGQyZjg2NTNmNjg4ODhjNjY3ZWI2NWIzOTk2YjUyNjgwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDIgMTA6MTE6MTggMjAwNyArMDIwMAotCi0gICAgTWlub3IgY2xlYW51cCBvZiA8Ym9hcmQ+X25hbmQgYnVpbGQgcnVsZXMuCi0KLWNvbW1pdCA5Y2E4ZDc5ZGUwOTZjNjViOWI5Yzg2NzI1OWIzZmY0Njg1Zjc3NWVmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBBdWcgMiAwODozMzo1NiAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IENvZGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYzkyNDA5ODEyMjA2YWM2N2E3ZmE3YWFlMjk4NTM5YTljMzgwNGE0NgotQXV0aG9yOiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBKdWwgMzEgMTg6NTE6NDggMjAwNyArMDIwMAotCi0gICAgW3BwYzQ0MFNQZV0gR3JhY2VmdWwgcmVjb3ZlcnkgZnJvbSBtYWNoaW5lIGNoZWNrIGR1cmluZyBQQ0llIGNvbmZpZ3VyYXRpb24KLQotICAgIER1cmluZyBjb25maWcgdHJhbnNhY3Rpb25zIG9uIHRoZSBQQ0llIGJ1cyBhbiBhdHRlbXB0IHRvIHNjYW4gZm9yIGEKLSAgICBub24tZXhpc3RlbnQgZGV2aWNlIGNhbiBsZWFkIHRvIGEgbWFjaGluZSBjaGVjayBleGNlcHRpb24gd2l0aCBjZXJ0YWluCi0gICAgcGVyaXBoZXJhbCBkZXZpY2VzLiBJbiBvcmRlciB0byBhdm9pZCBjcmFzaGluZyBpbiBzdWNoIHNjZW5hcmlvcyB0aGUKLSAgICBpbnN0cnVtZW50ZWQgdmVyc2lvbnMgb2YgdGhlIGNvbmZpZyBjeWNsZSByZWFkIHJvdXRpbmVzIGFyZSBpbnRyb2R1Y2VkLCBzbwotICAgIHRoZSBleGNlcHRpb25zIGZpeHVwcyBmcmFtZXdvcmsgY2FuIGdyYWNlZnVsbHkgcmVjb3Zlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotICAgIEFja2VkLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZGVjOTk1NThiOWVhNzVhMzc5NDBkMDdmNDFhMzU2NWE1MGI1NGFkMQotQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEp1bCAzMSAxODoxOTo1NCAyMDA3ICswMjAwCi0KLSAgICBbcHBjNHh4XSBTZXBhcmF0ZSBzZXR0aW5ncyBmb3IgUENJZSBidXMgbnVtYmVyaW5nIG9uIDQ0MFNQZSByZXYuQQotCi0gICAgVGhpcyBicmluZ3MgYmFjayBzZXBhcmF0ZSBzZXR0aW5ncyBmb3IgUENJZSBidXMgbnVtYmVycyBkZXBlbmRpbmcgb24gY2hpcAotICAgIHJldmlzaW9uLCB3aGljaCBnb3QgZWxpbWluYXRlZCBpbiAyYjM5M2IwZjBhZjg0MDJlZjQzYjI1YzE5NjhiZmQyOTcxNGRkZmZhCi0gICAgY29tbWl0LiA0NDBTUGUgcmV2LiBBIGRvZXMgTk9UIHdvcmsgcHJvcGVybHkgd2l0aCB0aGUgc2FtZSBzZXR0aW5ncyBhcyBmb3IKLSAgICB0aGUgcmV2LiBCIChubyBkZXZpY2VzIGFyZSBzZWVuIG9uIHRoZSBidXMgZHVyaW5nIGVudW1lcmF0aW9uKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBjZGQ5MTdhNDNkYTZmYTdmYzhmNTRhM2NjOWY0MjBjZTVlY2YzMTk3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgQXVnIDIgMDA6NDg6NDUgMjAwNyArMDIwMAotCi0gICAgRml4IGJ1aWxkIGVycm9ycyBhbmQgd2FybmluZ3MgLyBjb2RlIGNsZWFudXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZDJmNjgwMDY2MjdlZGE2Y2I2YzdmMzY0YmRkZjYyMWRiZmQyZmM2OAotQXV0aG9yOiBFdWdlbmUgT0JyaWVuIDxldWdlbmUub2JyaWVuQGFkdmFudGVjaGFtdC5jb20+Ci1EYXRlOglUdWUgSnVsIDMxIDEwOjI0OjU2IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEFNQ0MgQmFtYm9vIDQ0MEVQIHN1cHBvcnQKLQotICAgIENoYW5nZWQgc3RvcmFnZSB0eXBlIG9mIGNmZ19zaW11bGF0ZV9zcGRfZWVwcm9tIHRvIGNvbnN0Ci0gICAgQ2hhbmdlZCBzdG9yYWdlIHR5cGUgb2YgZ3Bpb190YWIgdG8gc3RhY2sgc3RvcmFnZQotICAgIChDYW5ub3QgYWNjZXNzIGdsb2JhbCBkYXRhIGRlY2xhcmF0aW9ucyBpbiAuYnNzIHVudGlsIGFmZXIgY29kZSByZWxvY2F0aW9uKQotCi0gICAgSW1wcm92ZWQgU0RSQU0gdGVzdHMgdG8gY2F0Y2ggcHJvYmxlbXMgd2hlcmUgZGF0YSBpcyBub3QgdW5pcXVlbHkgYWRkcmVzc2FibGUKLSAgICAoZS5nLiBpbmNvcnJlY3RseSBwcm9ncmFtbWVkIFNEUkFNIHJvdyBvciBjb2x1bW5zKQotCi0gICAgQWRkZWQgQ09ORklHX1BST0dfU0RSQU1fVExCIHRvIHN1cHBvcnQgQmFtYm9vIFNJTU0vRElNTSBtb2R1bGVzCi0gICAgRml4ZWQgQU0yOUxWMzIwRFQgKE9wQ29kZSBGbGFzaCkgc2VjdG9yIG1hcAotCi0gICAgU2lnbmVkLW9mZi1ieTogRXVnZW5lIE9CcmllbiA8ZXVnZW5lLm9icmllbkBhZHZhbnRlY2hhbXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGVhOWY2YmNlMzgzY2M5ZmJjZGVlMjhiNTgzNjEwOWIxYTZkYmE1NzQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAzMSAwODozNzowMSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSA0NDBFUHggbHdtb241IGJvYXJkIHN1cHBvcnQKLQotICAgIC0gQ2xlYXIgRUNDIHN0YXR1cyByZWdzIGFmdGVyIEVDQyBQT1NUIHRlc3QKLSAgICAtIFNldCBkY2J6IGZvciBFQ0MgZ2VuZXJhdGlvbiB3aXRoIGNhY2hlcyBlbmFibGVkIGFzIGRlZmF1bHQKLSAgICAtIENvZGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjdhNTI4ZmI0MTQzM2M0YzFlMmI1ZDZiZDNmZDhkNzg2MDZmYzcyNAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDMwIDExOjA0OjU3IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogT25seSBwcmludCBFQ0MgcmVsYXRlZCBpbmZvIHdoZW4gdGhlIGVycm9yIGJpcyBhcmUgc2V0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlMzYyMjBhNGJhZjFmMTg4YmE2MGYxN2U5ZDBmMDQzMDY5YjEzNjJhCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJRnJpIEp1bCAyNyAxNjo0NDozMSAyMDA3ICswMjAwCi0KLSAgICBuZXcgRlBHQSBpbWFnZSBmb3IgUExVNDA1IGJvYXJkCi0KLSAgICBuZXcgRlBHQSBpbWFnZSBmb3IgUExVNDA1IGJvYXJkIHdpdGggaW1wcm92ZWQgQ29tcGFjdEZsYXNoIHRpbWluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA4OTkzZTU0YjZmMzk3OTczNzk0ZjNkNmY0N2QzYjNjMGM5OGRkNGY2Ci1BdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgSnVsIDI3IDE0OjQzOjU5IDIwMDcgKzAyMDAKLQotICAgIFtBRFM1MTIxXSBTdXBwb3J0IGZvciB0aGUgQURTNTEyMSBib2FyZAotCi0gICAgVGhlIGZvbGxvd2luZyBNUEM1MTIxZSBzdWJzeXN0ZW1zIGFyZSBzdXBwb3J0ZWQ6Ci0KLSAgICAtIGxvdy1sZXZlbCBDUFUgaW5pdAotICAgIC0gTk9SIEJvb3QgRmxhc2ggKGNvbW1vbiBDRkkgZHJpdmVyKQotICAgIC0gRERSIFNEUkFNCi0gICAgLSBGRUMKLSAgICAtIEkyQwotICAgIC0gV2F0Y2hkb2cKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSmFuIFdyb2JlbCA8d3JyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDE4NjNjZmI3YjEwMGJhMGVlMzQwMTc5OTQ1N2EwMWRjMDU4NzQ1ZjgKLUF1dGhvcjogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBKdWwgMjcgMTQ6MjI6MDQgMjAwNyArMDIwMAotCi0gICAgW1BQQ10gUmVtb3ZlIHVudXNlZCBNU1JfVVNFUiBkZWZpbml0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotCi1jb21taXQgZDQwMjRiYjcyZGQ4MTY5NWVjMDk5YjIxOTllZGEwZDI3YzYyM2U2MgotQXV0aG9yOiBKb2huIE90a2VuIDxqb2huQHNvZnRhZHZhbmNlcy5jb20+Ci1EYXRlOglUaHUgSnVsIDI2IDE3OjQ5OjExIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIHN1cHBvcnQgZm9yIEFNQ0MgNDA1RVAgVGFpaHUgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gT3RrZW4gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KLQotY29tbWl0IGI2NjA5MWRlNmM3MzkwNjIwMzEyYzI1MDFkYjIzZDgzOTFlN2NhYmIKLUF1dGhvcjogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotRGF0ZToJVGh1IEp1bCAyNiAxNTowODowMSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IGx3bW9uNTogVXBkYXRlIExpbWUgaW5pdGlhbGl6YXRpb24KLQotICAgIENoYW5nZSBMaW1lIFNEUkFNIGluaXRpYWxpemF0aW9uIHRvIG5vdyBzdXBwb3J0IDEwME1IeiBhbmQKLSAgICAxMzNNSHogKGlmIGVuYWJsZWQpLiBBbHNvIHRoZSBmcmFtZWJ1ZmZlciBpcyBpbml0aWFsaXplZCB0bwotICAgIGRpc3BsYXkgYSBibHVlIHJlY3RhbmdsZSB3aXRoIGEgd2hpdGUgYm9yZGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5hdG9saWogR3VzdHNjaGluIDxhZ3VzdEBkZW54LmRlPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDlmMjRhODA4ZjE3ZmMwZjM3YjdmYjQ4MDVmNzM0NzQxMzM1Y2FlY2MKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyNCAwOTo1Mjo1MiAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IGx3bW9uNTogU3VwcG9ydCBmb3IgMTI4IE1CeXRlIE5PUiBGTEFTSCBhZGRlZAotCi0gICAgVGhlIHVzZWQgSW50ZWwgTk9SIEZMQVNIIGNoaXBzIGhhdmUgaW50ZXJuYWxseSB0d28gZGllcywgYW5kIGFyZSBub3cKLSAgICB0cmVhdGVkIGFzIHR3byBzZXBlcmF0ZSBjaGlwcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGFlZGY1YmRlMTc5ZWNmYmQwYTk2MTMwZDE4OTk2YTk2NTE4Yjc4NWYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1bCAyNCAwNzoyMDowOSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBsd21vbjUgaW50ZXJydXB0IGNvbnRyb2xsZXIgc2V0dXAgKHBvbGFyaXR5LCB0cmlnZ2VyLi4uKQotCi0gICAgQXMgc3VnZ2VzdGVkIGJ5IEhha2FuIEVyeWlnaXQsIGhlcmUgYW4gdXBkYXRlZCBzZXR1cCBmb3IgdGhlIGx3bW9uNQotICAgIGludGVycnVwdCBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTcxZDk2ZWFjODEzMGI1M2E5MWY5M2NkMTBjNzBmY2EwZGIxOGQ1MgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDIwIDE1OjAzOjQ0IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IGJ1ZyB3aXRoIGRlZmF1bHQgR1BJTyBvdXRwdXQgdmFsdWUKLQotICAgIEFzIHNwb3R0ZWQgYnkgTWF0dGhpYXMgRnVjaHMsIHRoZSBkZWZhdWx0IG91dHB1dCB2YWx1ZXMgZm9yIGFsbCBHUElPMQotICAgIG91dHB1dHMgd2VyZSBub3Qgc2V0dXAgY29ycmVjdGx5LiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1MzFlM2U4YjgzMWYzNTcwNTY0NDhmYTU3MzEzN2Q1ZmIzNzAwMGZkCi1BdXRob3I6IFBhdmVsIEtvbGVzbmlrb3YgPGNvbmNvcmRAZW1jcmFmdC5jb20+Ci1EYXRlOglGcmkgSnVsIDIwIDE1OjAzOjAzIDIwMDcgKzAyMDAKLQotICAgIFBPU1Q6IEFkZCBFQ0MgUE9TVCBmb3IgdGhlIGx3bW9uNSBib2FyZAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIEVDQyBQb3N0IHRlc3QgZm9yIHRoZSBMd21vbjUgYm9hcmQgYmFzZWQKLSAgICBvbiBQUEM0NDBFUHggdG8gVS1Cb290LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGF2ZWwgS29sZXNuaWtvdiA8Y29uY29yZEBlbWNyYWZ0LmNvbT4KLSAgICBBY2tlZC1ieTogWXVyaSBUaWtob25vdiA8eXVyQGVtY3JhZnQuY29tPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjYzMwMjNiOWY5NWQ3YWM5NTlhNzY0NDcxYTY1MDAxMDYyYWVjZjQxCi1BdXRob3I6IFJhZmFsIEphd29yb3dza2kgPHJhakBzZW1paGFsZi5jb20+Ci1EYXRlOglUaHUgSnVsIDE5IDE3OjEyOjI4IDIwMDcgKzAyMDAKLQotICAgIEZpeCBicmVha2FnZSBvZiA4eHggYm9hcmRzIGZyb20gcmVjZW50IGNvbW1pdC4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhlIG5lZ2F0aXZlIGNvbnNlcXVlbmNlcyBmb3IgOHh4IG9mIHRoZSByZWNlbnQKLSAgICAicHBjNHh4OiBDbGVhbiB1cCA0NDAgZXhjZXB0aW9ucyBoYW5kbGluZyIgY29tbWl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUmFmYWwgSmF3b3Jvd3NraSA8cmFqQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGM4ODNmNmVhMzJkY2U5MWYwNzY3MGIzYWFmZWNmNmM5OWIxZTUzNDEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAxNiAxMzoxMToxMiAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2xlYW51cAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODg0OGVjODU4Zjc0ZWQ2ZGFiMDZmYjZkNWRkYzkzM2UwYTEzMjhiZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDE2IDEwOjAyOjEyIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ29kZSBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyYTQ5ZmMxN2QwOTAyMGU3ZWJkOTUzNjY5NGQ5OWQyMGU0MTlmY2I4Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBKdWwgMTYgMTA6MDE6MzggMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBTUNDIEx1YW4gdXNlcyB0aGUgbmV3IGJvYXJkc3BlY2lmaWMgRERSMiBjb250cm9sbGVyIHNldHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkZjNmMTc0MjJhZWIwM2ZiODFhN2FjOGM3OGQyYjA1ZDA1YWE0Y2Y5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBKdWwgMTYgMTA6MDA6NDMgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBTdXBwb3J0IGZvciBZdWNjYSBib2FyZCB3aXRoIDQ0MFNQZSBSZXYgQSBhZGRlZCB0byA0NHhfc3BkX2RkcjIuYwotCi0gICAgVGhlIG5ldyBib2FyZHNwZWNpZmljIEREUjIgY29udHJvbGxlciBjb25maWd1cmF0aW9uIGlzIHVzZWQgZm9yIHRoZSBZdWNjYQotICAgIGJvYXJkLiBOb3cgdGhlIFl1Y2NhIGJvYXJkIHdpdGggNDQwU1BlIFJldi4gQSBjaGlwcyBpcyBhbHNvIHN1cHBvcnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZlZDE0YWRkZjk3YzhjZDhmNTMxZTlhZTdiMmQzZTIyMmZmZmQ1M2UKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCAxNiAwOTo1NzowMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBuZXcgd2VhayBmdW5jdGlvbnMgdG8gc3VwcG9ydCBib2FyZHNwZWNpZmljIEREUjIgY29uZmlndXJhdGlvbgotCi0gICAgVGhlIG5ldyAid2VhayIgZnVuY3Rpb25zIGRkcl93cmR0cigpIGFuZCBkZHJfY2xrdHIoKSBhcmUgYWRkZWQgdG8gYmV0dGVyCi0gICAgc3VwcG9ydCBub24gZGVmYXVsdCwgYm9hcmRzcGVjaWZpYyBERFIoMikgY29udHJvbGxlciBjb25maWd1cmF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNTc0M2E5MjA3YTM3MGI5MGYwOWIyMGViZDYxMTY3YzgwNmI5MzdmMwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gSnVsIDE2IDA4OjUzOjUxIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIHJlbW92ZV90bGIoKSBmdW5jdGlvbiB0byByZW1vdmUgYSBtZW0gYXJlYSBmcm9tIFRMQiBzZXR1cAotCi0gICAgVGhlIG5ldyBmdW5jdGlvbiByZW1vdmVfdGxiKCkgY2FuIGJlIHVzZWQgdG8gcmVtb3ZlIHRoZSBUTEIncyB1c2VkIHRvCi0gICAgbWFwIGEgc3BlY2lmaWMgbWVtb3J5IHJlZ2lvbi4gVGhpcyBpcyBlc3BlY2lhbGx5IHVzZWZ1bCBmb3IgdGhlIEREUigyKQotICAgIHNldHVwIHJvdXRpbmVzIHdoaWNoIGNvbmZpZ3VyZSB0aGUgU0RSQU0gYXJlYSB0ZW1wb3JhcmlseSBhcyBhIGNhY2hlZAotICAgIGFyZWEgKGZvciBzcGVlZHVwIG9uIGF1dG8tY2FsaWJyYXRpb24gYW5kIEVDQyBnZW5lcmF0aW9uKSBhbmQgbGF0ZXIKLSAgICBuZWVkIHRoaXMgYXJlYSB1bmNhY2hlZCBmb3Igbm9ybWFsIHVzYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMGMwYTljZGExYmRlMzcxMDY1MjA0NzZlZDQ4NmJkNjdlYjhkMzBhZQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gSnVsIDE2IDAwOjMxOjA3IDIwMDcgKzAyMDAKLQotICAgIFtQQVRDSF0gU3VwcG9ydCBmb3IgWGlsaW54IEVtYWNMaXRlIGNvbnRyb2xsZXIKLQotY29tbWl0IDNhNmNhYjg0NGNmNzRmNzY2MzlkNzk1ZTBiZTg3MTdlMDJjODZhZjcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBKdWwgMTQgMjI6NTE6MDIgMjAwNyArMDIwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDUyODBmMzUyYzhkYTMzYjFkN2ZiZjQ0ODc2ODcxN2Q5ZTE2ZmY5YTEKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJU2F0IEp1bCAxNCAxMzoxMToyOCAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBzdXBwb3J0IGZvciBzaW1wbHkgbWVhc3VyaW5nIHRpbWUKLQotY29tbWl0IDkxYmI0Y2E2NjVkMmUwY2Y3ZjYwYzRiNWIzNzA5OTAyNTBlYzBjNDMKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJU2F0IEp1bCAxNCAxMjo0MToyMyAyMDA3ICswMjAwCi0KLSAgICBbRlNdIEFkZGVkIHN1cHBvcnQgZm9yIFJPTUZTCi0KLWNvbW1pdCAwMTE1OTUzMDc3MzFhN2E2N2E3NDQ1ZDEwN2MyNzlkMDMxZThhYjk3Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CVNhdCBKdWwgMTQgMDE6MDY6NTggMjAwNyArMDIwMAotCi0gICAgW1BDUzQ0MEVQXQktIGZpeCBjb21waWxlIGVycm9yLCBpZiBCVUlMRF9ESVIgaXMgdXNlZAotCi1jb21taXQgNWEyZjEwOThkODFhZDU4YjMwOWU1ZTU1OGQwNDkyNjQzMTY2YTc5OQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTYXQgSnVsIDE0IDAwOjE4OjQ4IDIwMDcgKzAyMDAKLQotICAgIFtQQVRDSF0gU3VwcG9ydCB0aW1lIHdpdGhvdXQgdGltZXIKLQotY29tbWl0IGE0NzZjYTJhYzIyMTdkZGQwNWEyYmYwYzUxNDA3NTgxNGIxMGEzYzAKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIEp1bCAxMyAyMTo0Mzo1NSAyMDA3ICswMjAwCi0KLSAgICBbUEFUQ0hdIFJlbW92ZSBwcm9ibGVtIHdpdGggZGlzYWJsZWQgQkFSUkVMIFNISUZURVIKLQotY29tbWl0IDU1ZTI2YWQ2MjEwN2QyZjE0Zjc1N2RlM2FlMGIxNGI5YWE3YWVkOTQKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJRnJpIEp1bCAxMyAyMTo0MTo0NCAyMDA3ICswMjAwCi0KLSAgICBbRklYXSBjb3JyZWN0IGhlbHAgZm9yIHJzcHIKLQotY29tbWl0IGZhZDYzNDA3MTU0ZjQ2MjQ2Y2U4MGQ1M2E5YzY2OWE0NDM2MmFjNjcKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJRnJpIEp1bCAxMyAwOTo1NDoxNyAyMDA3ICswMjAwCi0KLSAgICBtYWtlIHNob3dfYm9vdF9wcm9ncmVzcyAoKSB3ZWFrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA5MDc5MDI0NzIzOTFiNmNhMTg3NmVjMzAwNjg3NTYyZWNhZjQ1OWIxCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgMTMgMDg6MjY6MDUgMjAwNyArMDIwMAotCi0gICAgW1BDUzQ0MEVQXQktIFRoZSBESUFHIExFRHMgYXJlIG5vdyBibGlua2luZywgaWYgYW4gZXJyb3Igb2NjdXIKLQkJLSBmaXggY29tcGlsZSBlcnJvciwgaWYgQlVJTERfRElSIGlzIHVzZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgYTJlMWM3MDk4Y2Y5NTc0Mzg2YjBjOTY4NDFkZmM4ZWE1Y2M5MzU3OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDEyIDE2OjMyOjA4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ2hhbmdlIHJlY2VpdmUgYnVmZmVyIGhhbmRsaW5nIGluIHRoZSA0eHggZW1hYyBkcml2ZXIKLQotICAgIFRoaXMgY2hhbmdlIGZpeGVzIGEgYnVnIGluIHRoZSByZWNlaXZlIGJ1ZmZlciBoYW5kbGluZywgdGhhdAotICAgIGNvdWxkIGxlYWQgdG8gcHJvYmxlbXMgdXBvbiBoaWdoIG5ldHdvcmsgdHJhZmZpYyAoYnJvYWRjYXN0cy4uLikuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyMzlmMDVlZTRkZDRjZmUwYjUwZjI1MWI1MzNkY2ViZTllNjdjMzYwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgSnVsIDEyIDAxOjQ1OjM0IDIwMDcgKzAyMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0csIG1pbm9yIGNvZGluZyBzdHlsZSBjbGVhbnVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDVhNTZhZjNiNTIyYmE0N2ZiMzNhM2ZlZTg0ZDIzYmYxZTU0Mjk2NTQKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1biA4IDE2OjQxOjE4IDIwMDcgLTA1MDAKLQotICAgIFJlbW92ZSBlcnJvbmVvdXMgZXJyYXRhIGNvZGUgZnJvbSBNYXJ2ZWwgODhFMTExMVMgZHJpdmVyCi0KLSAgICBUaGUgTWFydmVsIDg4RTExMTFTIGRyaXZlciBmb3IgdGhlIFRTRUMgd2FzIGNvcGllZCBmcm9tIHRoZQotICAgIDg4RTExMDEgZHJpdmVyLCBhbmQgaW5jbHVkZWQgYSBmaXggZm9yIGFuIGVycmF0dW0gd2hpY2ggZG9lcyBub3QKLSAgICBleGlzdCBvbiB0aGF0IHBhcnQuICBOb3cgaXQgaXMgcmVtb3ZlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTgyZWZjZjIzZmQwMzY0N2UwMWUyZmJlMjhhN2EzNjIzOTE1NmNjMAotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDUgMTY6Mzg6NDQgMjAwNyAtMDUwMAotCi0gICAgRnJvbTogZXJhbiBsaWJlcnR5IDxlcmFuLmxpYmVydHlAZ21haWwuY29tPgotCi0gICAgYWRkcyB0aGUgcmVzZXQgcmVnaXN0ZXIgdG8gODV4eCBpbW1hcAotCi0gICAgU2lnbmVkLW9mZi1ieTogRXJhbiBMaWJlcnR5IDxlcmFuLmxpYmVydHlAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQzZWMwZDk0M2EwNDViZGI5OWUxNTllN2JiYzc3NDMwZTA5ZjExZDcKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE1heSAxMCAxNzo1MDowMSAyMDA3IC0wNTAwCi0KLSAgICBQb2xpc2hlZCB0aGUgODV4eCBBRFMgY29uZmlnIGZpbGVzCi0KLSAgICBNYWRlIHRoZSBib290IGNvbW1hbmRzIHVzZSBkZXZpY2UgdHJlZXMgYnkgZGVmYXVsdC4KLSAgICBBbHNvIG1vdmVkIHRoZSByYW1kaXNrIHRvIDEwMDAwMDAgKEkgdGhpbmsgdGhlIHByZXZpb3VzIGFkZHJlc3MKLSAgICB3YXMgZ2V0dGluZyBvdmVycmlkZGVuIGR1cmluZyBib290KS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJmYjM3YjMyZDFiMGIwM2YxODA3N2RiYTQ5Y2M2NmE2ZTc2ZmEwMzgKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgOSAxMTowMzozMiAyMDA3IC0wNTAwCi0KLSAgICA4NTQ0ZHM6IEZpeCBNYWtlZmlsZSBhZnRlciBtb3ZpbmcgcGl4aXMgdG8gYm9hcmQvZnJlZXNjYWxlLgotCi0gICAgVGhlIE9CSlRSRUUgIT0gU1JDVFJFRSBidWlsZCBzY2VuYXJpbyB3YXMgYnJva2VuLgotICAgIFRoaXMgZml4ZXMgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyYTNjZWU0M2MzYjcxZmE1YjhkOTFkYjE5ZjA1MDY3ODY1MjkwZjNlCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgOSAwMDo1NDoyMCAyMDA3IC0wNTAwCi0KLSAgICB0c2VjOiBGaXggUEhZIGNvZGUgdG8gbWF0Y2ggZmlyc3QgZHJpdmVyCi0KLSAgICBKYXJyb2xkIFdlbiBub3RpY2VkIHRoYXQgdGhlIGdlbmVyaWMgUEhZIGNvZGUgYWx3YXlzIG1hdGNoZXMKLSAgICB1bmRlciB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbi4gIENoYW5nZSBpdCBzbyB0aGUgZmlyc3QgbWF0Y2gKLSAgICB3aW5zLCBhbmQgKm9ubHkqIHVua25vd24gUEhZcyB0cmlnZ2VyIHRoZSBnZW5lcmljIGRyaXZlcgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2NjMDkxYWFjNjFhMzhjZDk5OGQ1NzVkOTJmNzIzMmUyNTZkNjMxMgotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWF5IDggMTc6Mjc6NDMgMjAwNyAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIENQTSBkZXZpY2UgdHJlZSBjb25maWd1cmF0aW9uIHRvIDg1NjAgQURTCi0KLSAgICAqIEFkZHMgY29kZSB0byBtb2RpZnkgQ1BNIGZyZXF1ZW5jaWVzCi0gICAgKiBDbGVhbnMgdXAgdGhlIGNvbmZpZyBmaWxlIHRvICNkZWZpbmUgVFNFQyBhbmQgKGZvciBub3cpICN1bmRlZiBGQ0MKLSAgICAqIEFkZHMgdGhlIE1JSSBjb21tYW5kIGZvciBhbGwgODU2MCBBRFMgY29uZmlndXJhdGlvbnMKLSAgICAqIFVwZGF0ZXMgY29uZmlnIGZpbGUgdG8gcHJvdmlkZSBjb252ZW5pZW5jZSBjb21tYW5kcyBmb3IgYm9vdGluZwotICAgICAgd2l0aCBhIGRldmljZSB0cmVlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBWaXRhbHkgQm9yZHVnIDx2Ym9yZHVnQHJ1Lm12aXN0YS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzUwN2Q1NmNjYWY3YWFlMWM0NzQzNDJhOWE1NTQwMTY1Y2Q3ZTlkOQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWF5IDggMTc6MjM6MDIgMjAwNyAtMDUwMAotCi0gICAgRml4IE1hcnZlbGwgODhlMTE0NSBQSFkgaW5pdCBjb2RlCi0KLSAgICBGaXggYSBidWcgaW4gdGhlIE1hcnZlbGwgODhlMTE0NSBQSFkgaW5pdCBjb2RlIGluIHRoZSBUU0VDIGRyaXZlcgotICAgIHdoZXJlIHRoZSByZXNldCB3YXMgYmVpbmcgZG9uZSBhZnRlciB0aGUgZXJyYXRhIGNvZGUgaW5zdGVhZCBvZgotICAgIGJlZm9yZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWRjMjEwZGVjNWJhY2U5OGE1MGI2YmE5MDUzNDc4OTAwOTFhOWJiMAotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAxMSAxNDo1MjoxNiAyMDA3IC0wNTAwCi0KLSAgICBBZGQgc2ltcGxlIGFnZW50L2VuZC1wb2ludCBjb25maWd1cmF0aW9uIGluIFBDSSBBdXRvQ29uZmlnIGZvciBQQ0lfQ0xBU1NfUFJPQ0VTU09SX1BPV0VSUEMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZThiODVmM2JhNGNkODkzMGUwYTJmZWEyMTAwYzgxNWQ2NDIwMTc2NQotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAxMSAxNDo1MjowOCAyMDA3IC0wNTAwCi0KLSAgICBwY2lhdXRvIHNldHVwIGJyaWRnZQotCi0gICAgVGhlIFAyUCBicmlkZ2UgYnVzIG51bWJlcnMgcHJvZ3JhbW1lZCBpbnRvIHRoZSBkZXZpY2UgYXJlIHJlbGF0aXZlIHRvCi0gICAgaG9zZS0+Zmlyc3RfYnVzbm8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTcxZjQ5ZmE3MTcwMDRjYTQyNjhiNGUyNDA1N2VmYzdiZjlmOTg3YgotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAxMSAxNDo1MjowMSAyMDA3IC0wNTAwCi0KLSAgICBTdXBwb3J0IFBDSWUgZXh0ZW5kZWQgY29uZmlnIHJlZ2lzdGVycwotCi0gICAgRlNMIFBDSWUgYmxvY2sgaGFzIGV4dGVuZGVkIGNmZyByZWdpc3RlcnMgaW4gdGhlIDEwMCBhbmQgNDAwIHJhbmdlLgotICAgIEZvciBleGFtcGxlLCB0byByZWFkIHRoZSBMVFNTTSByZWdpc3RlcjogcGNpIGRpc3BsYXkgPGJ1c24+LjAgNDA0IDEKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiYTVmZWIxMjU4MWJiMjkxMmNlMzAxZTQ4NjZiNzFmODQ2ZTlmYzA3Ci1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVsIDExIDE0OjUxOjQ4IDIwMDcgLTA1MDAKLQotICAgIE1pbm9yIGltcHJvdmVtZW50cyB0byBkcml2ZXJzL3BjaV9hdXRvLmMKLQotICAgIC0gTWFrZSBwY2lhdXRvX3twcmUscG9zdH1zY2FuX3NldHVwX2JyaWRnZSBub24tc3RhdGljCi0gICAgLSBBZGRlZCBwaHlzaWNhbCBhZGRyZXNzIGRpc3BsYXkgaW4gZGVidWcgbWVzc2FnZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDBlODFhZGRhYjdiYjc0ZDIwZGRmNjgxY2U5YmFiYzg4MGE4MjhlZQotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1bCAxMSAxNDo1MTozNSAyMDA3IC0wNTAwCi0KLSAgICBTdGFydCBwY2kgaG9zZSBzY2FuIGZyb20gaG9zZS0+Y3VycmVudF9idXNuby4KLQotICAgIEVuc3VyZSBob3NlLT5jdXJyZW50X2J1c25vIGlzIG5vdCBsZXNzIHRoYW4gZmlyc3RfYnVzbm8uICBUaGlzIGZpeGVzCi0gICAgYnJva2VuIGJvYXJkIGNvZGUgd2hpY2ggbGVhdmVzIGN1cnJlbnRfYnVzbm89MCB3aGVuIGZpcnN0X2J1c25vIGlzCi0gICAgZ3JlYXRlciB0aGFuIDAgZm9yIHRoZSBjYXNlcyB3aXRoIG11bHRpcGxlIGNvbnRyb2xsZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDM4NjViMWZiNzg0M2EwOGFkNDlhNjMxOWEzNjQxNTc1MjI3NmZmNDgKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEp1bCAxMSAxMjoxMzo1MyAyMDA3ICswMjAwCi0KLSAgICBGaXggc29tZSBjb21waWxlIHByb2JsZW1zIGludHJvZHVjZWQgYnkgdGhlIGxhdGVzdCBDRkdfQ01EX3h4eCBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmYTFkZjMwODkyNmE2ZjcwZTM1MDRjNTc1MTRlZjI3YWMzMWZkMTNhCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgSnVsIDExIDIwOjExOjA3IDIwMDcgKzAyMDAKLQotICAgIENNMS5RUDE6IFN1cHBvcnQgZm9yIHRoZSBTY2hpbmRsZXIgQ00xLlFQMSBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDk2ZTFkNzViZTgxOTNjYTc5ZTQyMTVhMzY4YmY5ZDdmMjM2MjQ1MGYKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJV2VkIEp1bCAxMSAxODozOToxMSAyMDA3ICswMjAwCi0KLSAgICBbUENTNDQwRVBdCS0gU2hvdyBvbiB0aGUgRElBRyBMRURzLCBpZiB0aGUgU0hBMSBjaGVjayBmYWlsZWQKLQkJLSBub3cgdGhlIEZsYXNoIFNUIE0yOVcwNDBCIGlzIHN1cHBvcnRlZCAobm90IHRlc3RlZCkKLQkJLSBmaXggdGhlICJsZWQiIGNvbW1hbmQKLQkJLSBmaXggY29tcGlsZSBlcnJvciwgaWYgQlVJTERfRElSIGlzIHVzZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgZTk1MTQ3NTFjZmE1Y2NlNjFlYTY5OWZhMGQzZWIzNzg5OGE1ZWViNQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTdW4gSnVsIDggMTM6NDQ6MjcgMjAwNyArMDIwMAotCi0gICAgRml4IG1hbGxvYyBwcm9ibGVtIGludHJvZHVjZWQgd2l0aCB0aGUgcmVsb2NhdGlvbiBmaXh1cCBmb3IgdGhlIFBQQyBwbGF0Zm9ybQotCi0gICAgVGhlIHJlbG9jYXRpb24gZml4dXAgZGlkbid0IGhhbmRsZSB0aGUgbWFsbG9jIHBvaW50ZXIgaW5pdGlhbGl6YXRpb24KLSAgICBjb3JyZWN0bHkuIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBwcm9ibGVtLiBUZXN0ZWQgc3VjY2Vzc2Z1bGx5IG9uIDR4eC4KLSAgICBUaGUgcmVsb2NhdGlvbiBmaXh1cCBwYXRjaGVzIGZvciA0eHggd2lsbCBmb2xsb3cgc29vbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDBkY2E4NzRkYjYyNzE4ZTQxMjUzNjU5ZTYwZjNhMWRlN2ViNDE4Y2UKLUF1dGhvcjogVHNpQ2h1bmcgPHRjbGlld0BHb2t1Lihub25lKT4KLURhdGU6CVR1ZSBKdWwgMTAgMTU6NDU6NDMgMjAwNyAtMDUwMAotCi0gICAgQ2FjaGUgdXBkYXRlIGFuZCBhZGRlZCBDRkdfVU5JRllfQ0FDSEUKLQotICAgIEVuYWJsZWQgY2FjaGUgaW4gY3B1X2luaXRfZigpIGZvciBmYXN0ZXIgZmxhc2ggdG8gbWVtIGFsbG9jYXRpb24uIFVwZGF0ZWQgY2FjaGUgaGFuZGxpbmcgaW4gc3RhcnQuUy4gQXBwbGllZCBjYWNoZSBpbnZhbGlkYXRlIGluIGZlY19zZW5kKCkgYW5kIGZlY19yZWN2KCkuIEFkZGVkIENGR19VTklGWV9DQUNIRSBmb3IgQ0YgVjMgb25seS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nIDx0Y2xpZXdAR29rdS4obm9uZSk+Ci0KLWNvbW1pdCA1MmIwMTc2MDRhOGY0ZDRhNzk1ODgwZWY2ZTc4NjFkN2YyZjFiMDA1Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMzozNjoxNiAyMDA3IC0wNTAwCi0KLSAgICBVcGRhdGUgaGVhZGVyIGZpbGUuIEluY2x1ZGUgZHRpbWVyX2ludHJfc2V0dXAoKS4gQ2hhbmdlZCB0aW1lciBkaXZpZGVyIHRvIGdsb2JhbCBkZWZpbmUuCi0KLSAgICBJbmNsdWRlIGltbWFwLmggYW5kIHRpbWVyLmguIE1vdmVkIGR0aW1lciBpbnRlcnJ1cHQgc2V0dXAgdG8gZHRpbWVyX2ludHJfc2V0dXAoKSBmcm9tIGNwdS9tY2Y1MzJ4L2ludGVycnVwdHMuYy4gQ2hhbmdlZCAoQ0ZHX0NMSyAvMTAwMDAwMCkgLTEgPDwgOCB0byBDRkdfVElNRVJfUFJFU0NBTEVSCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1Y2RjMDdjN2VmOGYwOGVhNTVkM2M0N2VkOTIyMWQ5MWFhNmQ1ZmFjCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMzozMToyNSAyMDA3IC0wNTAwCi0KLSAgICBVcGRhdGUgaGVhZGVyIGZpbGVzCi0KLSAgICBJbmNsdWRlIGltbWFwLmggYW5kIHJlbmFtZWQgbWNmcnRjLmggdG8gcnRjLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI4NzBlOThhYzhlNTU1M2U5MTg3YjEyYTQ3ZTVmNDZiYWJiNTM5OTAKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIzOjI5OjIxIDIwMDcgLTA1MDAKLQotICAgIEFkZCBtY2ZmZWNfaW5pdGlhbGl6ZSgpCi0KLSAgICBBZGRlZCBtY2ZmZWNfaW5pdGlhbGl6ZSgpIGluIGV0aF9pbml0aWFsaXplKCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ1YTI1YmZkMGM1MmY4YTNmYTEzNzIxNmJjOTRkMzJmOTBiZWRjNWQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIzOjI3OjQwIDIwMDcgLTA1MDAKLQotICAgIFVwZGF0ZSBoZWFkZXIgZmlsZSBhbmQgY2xlYW4gdXAKLQotICAgIEluY2x1ZGUgaW1tYXAuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGNlZTljNjYzMTg2MDJjODU2YTg5OWFlNWZhNzU3OWNjYmE2NDQzYQotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDUgMjM6MjM6MTUgMjAwNyAtMDUwMAotCi0gICAgTmV3IHVhcnQgc3RydWN0dXJlIGFuZCBkZWZpbmVzCi0KLSAgICBTZXBlcmF0ZWQgZnJvbSBtY2Z1YXJ0LmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE5MGU3OWRlOGQ5OWU5YzlkNjlkNjBiZmZmOWYyNGMzMzcxNjU5MDAKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIzOjIyOjMxIDIwMDcgLTA1MDAKLQotICAgIE5ldyB0aW1lciBzdHJ1Y3R1cmUgYW5kIGRlZmluZXMKLQotICAgIFNlcGVyYXRlZCBmcm9tIG1jZnRpbWVyLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGUwNGFjYjJlYmE0NzgyNDg5NDE3MjQwZWZmNzZlMjBlMTc2YWVjMTAKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIzOjIxOjA5IDIwMDcgLTA1MDAKLQotICAgIFJlbmFtZSBtY2ZydGMgdG8gcnRjCi0KLSAgICBTaW5jZSBpdCBpcyBhbHJlYWR5IGluIG02OGsgZm9sZGVyLCB1bi1uZWNlc3NhcnkgdG8gcGFkIG1jZi4gUmVwbGFjZWQgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHRvIGltbWFwLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDJiZDgwNmZlNGZjMjM5NThiOGY3ODc3ODE5OWU3YTZlM2Y4ZjZhZDUKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIzOjE3OjM2IDIwMDcgLTA1MDAKLQotICAgIFJlbmFtZSBtY2ZzZXJpYWwuYy4gVXBkYXRlIGluY2x1ZGUgaGVhZGVyCi0KLSAgICBSZW5hbWVkIG1jZnNlcmlhbC5jIHRvIG1jZnVhcnQuYy4gTW9kaWZpZWQgTWFrZWZpbGUgZm9yIG1jZnVhcnQubyBmcm9tIG1jZnNlcmlhbC5vLiBSZXBsYWNlIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB0byBpbW1hcC5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmMjIwOGZiYzJlYjlkZTNmNDI4NWJmYWEwMjFjNmViYWUxNmM5YjBlCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMzoxMzo1OCAyMDA3IC0wNTAwCi0KLSAgICBIZWFkZXIgZmlsZSB1cGRhdGUsIGNsZWFuIHVwIGFuZCBjYWNoZSBoYW5kbGluZwotCi0gICAgUmVwbGFjZWQgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHdpdGggaW1tYXAuaC4gSW5jbHVkZWQgY2FjaGVfaW52YWxpZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDJlM2YyNWFlOTA4MmRhYTlmNWQxODFkYjQ1ZGZiYzJlNTJjZTBmOTcKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIzOjEwOjQwIDIwMDcgLTA1MDAKLQotICAgIENyZWF0ZSBpbnRlcnJ1cHRzLmMgYW5kIG1vZGlmeSBNYWtlZmlsZQotCi0gICAgaW50ZXJydXB0X2luaXQoKSBhbmQgZHRpbWVyX2ludHJfc2V0dXAoKSBhcmUgcGxhY2VkIGluIGludGVycnVwdHMuYy4gQWRkZWQgaW50ZXJydXB0cy5vIHRvIE1ha2VmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkZGQxMDRmMWVkNjU1ZWRhNTBjMDZiYTYzNjIzN2E4M2VkOTQzZjM0Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMzowNjo1NSAyMDA3IC0wNTAwCi0KLSAgICBFbmFibGUgSWNhY2hlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiOWJmM2RlMzc3YjJiYWU3MGM5ODNjOWI5N2ZlYWU5MTQ5OTllNzM1Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMzowNTozMSAyMDA3IC0wNTAwCi0KLSAgICBVcGRhdGUgaGVhZGVyIGZpbGUgYW5kIHNvbWUgY2xlYW4gdXAKLQotICAgIFJlcGxhY2VkIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB3aXRoIGltbWFwLmguIFJlbW92ZWQgd2hpdGVzcGFjZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4NGEwMTViNTJlYzgyMGE1YWUxNzM3MTdkNzg1MTZkZTczMWM4OWMyCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMzowMzoyOCAyMDA3IC0wNTAwCi0KLSAgICBVcGRhdGUgaGVhZGVyIGZpbGUgYW5kIGVuYWJsZSBpY2FjaGUKLQotICAgIFJlcGxhY2VkIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB3aXRoIGltbWFwLmguIEVuYWJsZWQgaWNhY2hlX2VuYWJsZSgpIGluIGNwdV9pbml0X3IoKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdhMTdlNzU5YzdhOGI1OGU5MTBkYWY1NGRmNjExZTk0ZmM4Y2EwNzQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIzOjAxOjIyIDIwMDcgLTA1MDAKLQotICAgIFVwZGF0ZSBoZWFkZXIgZmlsZSBhbmQgcmVtb3ZlZCBpbnRlcnJ1cHRfaW5pdCgpCi0KLSAgICBSZXBsYWNlIGltbWFwXzUzMjkuaCBhbmQgbTUzMjkuaCB3aXRoIGltbWFwLmguIFJlbW92ZWQgaW50ZXJydXB0X2luaXQoKSBhbmQgcGxhY2VkIGl0IGluIGludGVycnVwdHMuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2I2MzU0OTJjOTViZDBkNmUwOGY5M2Y2OTk4MjFjYmExZjYwMmE2NAotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDUgMjI6NTc6NDYgMjAwNyAtMDUwMAotCi0gICAgVXBkYXRlIGZvciBmbGFzaC5vIGFuZCBtaWkubwotCi0gICAgUmVtb3ZlZCBmbGFzaC5vIGFuZCBhZGRlZCBtaWkubwotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzVkZWQyNzVkODM5ZTRmZjc5ZjQxNzE4ZDUwYTgzNWQ5ODlmNTdiYwotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDUgMjI6NTY6MTkgMjAwNyAtMDUwMAotCi0gICAgTUlJIGZ1bmN0aW9ucyBjYWxscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQyN2M4MTQxMDQ1NjBlMjliZGExNDk1NWM2NzcwMzI0NWFhYWE1YjQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIyOjU0OjQyIDIwMDcgLTA1MDAKLQotICAgIFJlbW92ZWQgTUlJIGZ1bmN0aW9ucyBhbmQgcmVwbGFjZWQgaW1tYXBfNTMyOS5oIGFuZCBtNTMyOS5oIHdpdGggaW1tYXAuaC4KLQotICAgIFRoZSByZW1vdmVkIE1JSSByb3V0aW5lcyB3aWxsIGJlIHBsYWNlZCBpbiBtaWkuYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDAxYTc5M2ZkYTA5YzYzZGY1YTQ5NmYwOWRjMWM3Y2IyNmU2NzUxYTIKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIyOjUxOjA1IDIwMDcgLTA1MDAKLQotICAgIER1cGxpY2F0ZSBjb2RlCi0KLSAgICBUaGVyZSBpcyBhIENvbW1vbiBGbGFzaCBJbnRlcmZhY2UgRHJpdmVyIGV4aXN0ZWQuIFRvIHVzZSB0aGUgQ0ZJIGRyaXZlciwgZGVmaW5lIENGR19GTEFTSF9DRkkgaW4gY29uZmlndXJhdGlvbiBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjc0NDM1NGE4NDM3YjhmNzhkYjE3OGUzMDY2MDIxNTY4OGJmZjU3MAotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDUgMjI6NDY6MzggMjAwNyAtMDUwMAotCi0gICAgU2VwZXJhdGUgb2xkIHN0cnVjdHVyZSBkZWZpbmVzIGFuZCBuZXcgc3RydWN0dXJlIGRlZmluZXMKLQotICAgIFJlbW92ZWQgbmV3IHVhcnQgc3RydWN0dXJlIGFuZCBkZWZpbmVzIHRvIHVhcnQuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMmJkNTg2MDhkYmNmZjg4OTBjYTlhMGM1OWU4NjFhYzI0ZjhiYjIzMAotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDUgMjI6NDU6MDEgMjAwNyAtMDUwMAotCi0gICAgU2VwZXJhdGUgb2xkIHN0cnVjdHVyZSBkZWZpbmVzIGFuZCBuZXcgc3RydWN0dXJlIGRlZmluZXMKLQotICAgIE5ldyB0aW1lciBzdHJ1Y3R1cmUgYW5kIGRlZmluZXMgd2lsbCBtb3ZlIHRvIG5ldyB0aW1lci5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4Y2Q1Y2Q2ZGU0ZmY5MmUwMzk3ODMzOGVkN2FlYjNjZTdiN2I5Nzg0Ci1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMjo0MjoyMyAyMDA3IC0wNTAwCi0KLSAgICBDbGVhbiB1cAotCi0gICAgUmVtb3ZlZCB3aGl0ZXNwYWNlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1MTQ4NzFmNTY1ZGQ4YmQxMTIxZTRhM2FjMTY2NWE3OTBlMjBiOGYyCi1BdXRob3I6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdWwgNSAyMjo0MToyNCAyMDA3IC0wNTAwCi0KLSAgICBDbGVhbiB1cAotCi0gICAgUmVwbGFjZWQgd2hpdGVzcGFjZSB3aXRoIHRhYnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ4ZGJmZWFiYzdhZmZmZTMwNjA5YTQ0ODlmMTBjMjJjYjY3ZWY3ZGQKLUF1dGhvcjogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDIyOjM5OjA3IDIwMDcgLTA1MDAKLQotICAgIENyZWF0ZSBuZXcgaGVhZGVyIGZpbGUgYW5kIG1vdmUgcGVyaXBoZXJhbHMgYmFzZSBhZGRyZXNzIGZyb20gY29uZmlncyBmaWxlIHRvIG5ldyBoZWFkZXIgZmlsZS4KLQotICAgIENyZWF0ZSBuZXcgaGVhZGVyIGZpbGUgdG8gaW5jbHVkZSBpbW1hcF81eHh4LmggYW5kIG01eHh4LmggYW5kIHRvIHNoYXJlIGFtb25nIGRyaXZlcnMgd2l0aG91dCB1cGRhdGUgaW4gZHJpdmVyIGZpbGUgZWFjaCBwcm9jZXNzb3IgaXMgYWRkZWQuIE1vdmVkIHBlcmlwaGVyYWxzIGJhc2UgYWRkcmVzcyBhbmQgZGVmaW5lcyBmcm9tIGNvbmZpZ3MgZmlsZSB0byBpbW1hcC5oLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmdMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmUyOTZlMzFjNDQxMWY5NmQ5Y2IzZDJhZmM4ZmNiMDA2ODY3YWJmYQotQXV0aG9yOiBUc2lDaHVuZ0xpZXcgPFRzaS1DaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDUgMjI6MjQ6NTggMjAwNyAtMDUwMAotCi0gICAgUmV2ZXJ0IGZpbGUgbW9kZQotCi0gICAgQ2hhbmdlZCBNQUtFQUxMIGZpbGUgbW9kZSB0byBleGVjdXRhYmxlLCByZW1vdmVkIGV4ZWN1dGFibGUgZmlsZSBtb2RlIGZyb20gTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFRzaUNodW5nTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGIzYWZmMGNiOWVjZjIzNmQ3ZThjOTM3NjFkZDFkYWRmNjgzN2E1ODIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMTE6MTk6NTAgMjAwNyAtMDUwMAotCi0gICAgZGlzay8gZG9jLyBsaWJfKi8gYW5kIHRvb2xzLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgotCi0gICAgRml4ZWQgc29tZSBicm9rZW4gaW5zdGFuY2VzIG9mICIjaWZkZWYgQ01EX0NGR19JREUiIHRvby4KLSAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCi0gICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRkYjVkODZmMDIxNWJjYjZjMjkzNTEwYzUwZWIwNTBlOTI4ODNiN2EKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMTE6MTM6MjEgMjAwNyAtMDUwMAotCi0gICAgZHJpdmVycy86IFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KLQotICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCi0gICAgVGhvc2UgYWx3YXlzIGV2YWx1YXRlZCBUUlVFLCBhbmQgdGh1cyB3ZXJlIGFsd2F5cyBjb21waWxlZAotICAgIGV2ZW4gd2hlbiBJREUgcmVhbGx5IHdhc24ndCBkZWZpbmVkL3dhbnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNDBhN2YzZTM4ODhiNDJhNDM2NzRiMDk5ZTU0NzAwMjJjOGM1NDRjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVsIDEwIDExOjA3OjU2IDIwMDcgLTA1MDAKLQotICAgIGZzLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgotCi0gICAgRml4ZWQgc29tZSBicm9rZW4gaW5zdGFuY2VzIG9mICIjaWZkZWYgQ01EX0NGR19JREUiIHRvby4KLSAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCi0gICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYxMGYyZTljMjhhOWMxMDFlMDlmYTFiNzgxNDNjZjVmMDBlZDE1OTMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMTE6MDU6MDIgMjAwNyAtMDUwMAotCi0gICAgbmV0LzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgotCi0gICAgRml4ZWQgc29tZSBicm9rZW4gaW5zdGFuY2VzIG9mICIjaWZkZWYgQ01EX0NGR19JREUiIHRvby4KLSAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCi0gICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkwMjUzMTc4ODM3NjA0NmRhMjEyYWZkMTY2MWNmZmI2MmYzZGFhMWMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMTE6MDI6NDQgMjAwNyAtMDUwMAotCi0gICAgY29tbW9uLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgotCi0gICAgRml4ZWQgc29tZSBicm9rZW4gaW5zdGFuY2VzIG9mICIjaWZkZWYgQ01EX0NGR19JREUiIHRvby4KLSAgICBUaG9zZSBhbHdheXMgZXZhbHVhdGVkIFRSVUUsIGFuZCB0aHVzIHdlcmUgYWx3YXlzIGNvbXBpbGVkCi0gICAgZXZlbiB3aGVuIElERSByZWFsbHkgd2Fzbid0IGRlZmluZWQvd2FudGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQzOWI1NzQxNTgzOGM3M2ZiMGEzN2VjYTg0ZGUzYzY4YmE5OTA1ODYKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMTA6NDg6MjIgMjAwNyAtMDUwMAotCi0gICAgYm9hcmQvW2otel0qOiBSZW1vdmUgbGluZ2VyaW5nIHJlZmVyZW5jZXMgdG8gQ0ZHX0NNRF8qIHN5bWJvbHMuCi0KLSAgICBGaXhlZCBzb21lIGJyb2tlbiBpbnN0YW5jZXMgb2YgIiNpZmRlZiBDTURfQ0ZHX0lERSIgdG9vLgotICAgIFRob3NlIGFsd2F5cyBldmFsdWF0ZWQgVFJVRSwgYW5kIHRodXMgd2VyZSBhbHdheXMgY29tcGlsZWQKLSAgICBldmVuIHdoZW4gSURFIHJlYWxseSB3YXNuJ3QgZGVmaW5lZC93YW50ZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzdhMzE4NTQ1ZDU3YWVmYTg0NDc1MjQ2NWI5NGM3ZTA5YTNmMjZkMAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1bCAxMCAxMDozOToxMCAyMDA3IC0wNTAwCi0KLSAgICBib2FyZC9bQS1aYS1pXSo6IFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KLQotICAgIEZpeGVkIHNvbWUgYnJva2VuIGluc3RhbmNlcyBvZiAiI2lmZGVmIENNRF9DRkdfSURFIiB0b28uCi0gICAgVGhvc2UgYWx3YXlzIGV2YWx1YXRlZCBUUlVFLCBhbmQgdGh1cyB3ZXJlIGFsd2F5cyBjb21waWxlZAotICAgIGV2ZW4gd2hlbiBJREUgcmVhbGx5IHdhc24ndCBkZWZpbmVkL3dhbnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwNjhiNjBhMGViN2U3M2IyNDNjYTU1Mzk5ZjJhN2RmNzZlMmMzZjNkCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVsIDEwIDEwOjI3OjM5IDIwMDcgLTA1MDAKLQotICAgIGNwdS8gcnRjLyBpbmNsdWRlLzogUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA3OWExMzZjMzU4ODgxNDc4NDU2MWQ2ZTQ4NTY5NzBlZTgyZDZlMmEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMTA6MTI6MTAgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzL1twLXpdKiArIG1pc2M6IENsZWFudXAgQk9PVFAgYW5kIGxpbmdlcmluZyBDRkdfQ01EXyouCi0KLSAgICBFeHBsaWNpdGx5IGFkZCBpbiBkZWZhdWx0IENPTkZJR19CT09UUF8qIG9wdGlvbnMgd2hlcmUgY21kX2NvbmZkZWZzLmgKLSAgICB1c2VkIHRvIGJlIGluY2x1ZGVkIGJ1dCBDT05GSUdfQk9PVFBfTUFTSyB3YXMgbm90IGRlZmluZWQuCi0KLSAgICBSZW1vdmUgbGluZ2VyaW5nIHJlZmVyZW5jZXMgdG8gQ0ZHX0NNRF8qIHN5bWJvbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2Y1YzAxNTc3NDAwYzc0Y2M1YmFjNzRmNDFkZDBkM2M3OWRmNjIzYwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1bCAxMCAwOTozODowMiAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3MvW2ctb10qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgotCi0gICAgRXhwbGljaXRseSBhZGQgaW4gZGVmYXVsdCBDT05GSUdfQk9PVFBfKiBvcHRpb25zIHdoZXJlIGNtZF9jb25mZGVmcy5oCi0gICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgotCi0gICAgUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDgwZmY0Zjk5Yjg0YjY0ZWRjYTNmZDEwZGEzNjVlYzE0OTNiZTFjOTUKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMDk6Mjk6MDEgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzL1thLWVdKjogQ2xlYW51cCBCT09UUCBhbmQgbGluZ2VyaW5nIENGR19DTURfKi4KLQotICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAotICAgIHVzZWQgdG8gYmUgaW5jbHVkZWQgYnV0IENPTkZJR19CT09UUF9NQVNLIHdhcyBub3QgZGVmaW5lZC4KLQotICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMWFhMGJiNTAyZTI1ZmQ1OThiNWUwY2NkZmIyYzE3NDkyMWQ3MTRhCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVsIDEwIDA5OjIyOjIzIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlncy9bUC1aXSo6IENsZWFudXAgQk9PVFAgYW5kIGxpbmdlcmluZyBDRkdfQ01EXyouCi0KLSAgICBFeHBsaWNpdGx5IGFkZCBpbiBkZWZhdWx0IENPTkZJR19CT09UUF8qIG9wdGlvbnMgd2hlcmUgY21kX2NvbmZkZWZzLmgKLSAgICB1c2VkIHRvIGJlIGluY2x1ZGVkIGJ1dCBDT05GSUdfQk9PVFBfTUFTSyB3YXMgbm90IGRlZmluZWQuCi0KLSAgICBSZW1vdmUgbGluZ2VyaW5nIHJlZmVyZW5jZXMgdG8gQ0ZHX0NNRF8qIHN5bWJvbHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjU5ZTJmNjczNjIzMmEwOGFjY2E4Nzg1YzIwNmUyYjRkOWNkMDdkNwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1bCAxMCAwOToxMDo0OSAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3MvW0otT10qOiBDbGVhbnVwIEJPT1RQIGFuZCBsaW5nZXJpbmcgQ0ZHX0NNRF8qLgotCi0gICAgRXhwbGljaXRseSBhZGQgaW4gZGVmYXVsdCBDT05GSUdfQk9PVFBfKiBvcHRpb25zIHdoZXJlIGNtZF9jb25mZGVmcy5oCi0gICAgdXNlZCB0byBiZSBpbmNsdWRlZCBidXQgQ09ORklHX0JPT1RQX01BU0sgd2FzIG5vdCBkZWZpbmVkLgotCi0gICAgUmVtb3ZlIGxpbmdlcmluZyByZWZlcmVuY2VzIHRvIENGR19DTURfKiBzeW1ib2xzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDExNzk5NDM0YzVmZjE1YTYxMjU3N2JiMWFkMWY0ZWExYTA1OTVlNGIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdWwgMTAgMDk6MDI6NTcgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzL1tBLUldKjogQ2xlYW51cCBCT09UUCBhbmQgbGluZ2VyaW5nIENGR19DTURfKi4KLQotICAgIEV4cGxpY2l0bHkgYWRkIGluIGRlZmF1bHQgQ09ORklHX0JPT1RQXyogb3B0aW9ucyB3aGVyZSBjbWRfY29uZmRlZnMuaAotICAgIHVzZWQgdG8gYmUgaW5jbHVkZWQgYnV0IENPTkZJR19CT09UUF9NQVNLIHdhcyBub3QgZGVmaW5lZC4KLQotICAgIFJlbW92ZSBsaW5nZXJpbmcgcmVmZXJlbmNlcyB0byBDRkdfQ01EXyogc3ltYm9scy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxZmU4MGQ3OWM1YzRlNTJkMzQxMGE3YWI0Yjg1MTVkYTA5NWNkYWIzCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVsIDkgMjI6MDg6MzQgMjAwNyAtMDUwMAotCi0gICAgRmluYWxseSByZXRpcmUgY21kX2NvbmZkZWZzLmggYW5kIENPTkZJR19CT09UUF9NQVNLIQotCi0gICAgQWxsIG9mIHRoZSBjaG9pY2VzIGZvciBDT05GSUdfQk9PVFBfIGFyZSBub3cgZG9jdW1lbnRlZCBpbgotICAgIHRoZSBSRUFETUUgZmlsZS4gIFlvdSBtdXN0IG5vdyBpbmRpdmlkdWFsbHkgc2VsZWN0IGV4YWN0bHkKLSAgICB0aGUgc2V0IHRoYXQgeW91IHdhbnQgdXNpbmcgYSBzZXJpZXMgb2YKLQkjZGVmaW5lIENPTkZJR19CT09UUF88eD4KLSAgICBzdGF0ZW1lbnRzIGluIHRoZSBib2FyZCBwb3J0IGNvbmZpZyBmaWxlcyBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDNiOGMxYTc0M2RjZDMxNjI1Yzk5ZTZhNDQ1OTBmMjA3ZWIwMDAyOAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDIxOjU3OjMxIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlncy9bbS16XSo6IERpcmVjdGx5IHVzZSBDT05GSUdfQk9PVFBfKiBzeW1ib2xzIHJhdGhlciB0aGFuIENPTkZJR19CT09UUF9NQVNLLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDJmZDkwY2U1NzViMDJkMTg5Y2JmNDQzYzg1MzA5YmNkMDAxYWEzOTMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAyMTo0ODoyNiAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3MvW2EtbV0qOiBEaXJlY3RseSB1c2UgQ09ORklHX0JPT1RQXyogc3ltYm9scyByYXRoZXIgdGhhbiBDT05GSUdfQk9PVFBfTUFTSy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzN2Q0YmI3MDU4NjY1OWRlZGVmMTY1OGNlMWJlZDA3MWJlMDk4YWVjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVsIDkgMjE6Mzg6MDIgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzL1tULVpdKjogRGlyZWN0bHkgdXNlIENPTkZJR19CT09UUF8qIHN5bWJvbHMgcmF0aGVyIHRoYW4gQ09ORklHX0JPT1RQX01BU0suCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTgyMjVlOGRkMTk1MGJkNmRiZjM1MDExZTQzNmRiN2Y0NzRjMTg3ZAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDIxOjMxOjI0IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlncy9bUC1TXSo6IERpcmVjdGx5IHVzZSBDT05GSUdfQk9PVFBfKiBzeW1ib2xzIHJhdGhlciB0aGFuIENPTkZJR19CT09UUF9NQVNLLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdiZTA0NGU0ZWE2NDRiMGVmMWM0ODZkYWRjMWE0YzI2NjViNDM3NGQKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAyMToyNDoxOSAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3MvW0gtTl0qOiBEaXJlY3RseSB1c2UgQ09ORklHX0JPT1RQXyogc3ltYm9scyByYXRoZXIgdGhhbiBDT05GSUdfQk9PVFBfTUFTSy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA1ZDJlYmUxYjNlZjAwNTVjNjYxYmIxYTBkMjUyYmYyNTIzODAwNjlmCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVsIDkgMjE6MTY6NTMgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzL1tBLUddKjogRGlyZWN0bHkgdXNlIENPTkZJR19CT09UUF8qIHN5bWJvbHMgcmF0aGVyIHRoYW4gQ09ORklHX0JPT1RQX01BU0suCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjU1ZjdmOGQ4M2YzNjAyMWFiMWYwZTNkNzM4ZjVkOGM4MDgzYTdlMwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE5OjEyOjMwIDIwMDcgLTA1MDAKLQotICAgIFJldGlyZSBDT05GSUdfQ09NTUFORFMgZmluYWxseS4KLSAgICBTdHJpcCBvbGQgQ0ZHX0NNRF8qIHN5bWJvbHMgb3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI1NTAxZjdkNzIwZmVkOTlhYjBiNDJjODNmNWRlYTUyODY4Y2UwMDcKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxOToxMDowMyAyMDA3IC0wNTAwCi0KLSAgICBVcGRhdGUgUkVBRE1FLiogdG8gcmVmZXJlbmNlIG5ldyBDT05GSUdfQ01EXyogbmFtZXMgbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ0MzEyODNjN2U2ZDU0YWUxODBkNDY2ZTUxYmYyZDk3NDcxYTBhZDkKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxOTowNjowMCAyMDA3IC0wNTAwCi0KLSAgICBjcHUvbSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDNhMWVkMWUxZjkyMmM0MTliYjcxZjdkZjQ5NDlkNzgzYWRlMzY5ZmEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxODo1NzoyMiAyMDA3IC0wNTAwCi0KLSAgICBjcHUvWzdhLWxuLXpdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWIzYWJjYmFiZDg0MDkyOGZiMWViNTEyMjExOGNhNDY2YjVlNTAxMwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE4OjQ1OjE2IDIwMDcgLTA1MDAKLQotICAgIGJvYXJkL1txLXpdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2ZlMDAxMDlhNWYxMmRlNTViNmUyNWIxZjk4ZGZjMjRiYzkwOTBjOQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE4OjM4OjM5IDIwMDcgLTA1MDAKLQotICAgIGJvYXJkL1ttLXBdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzUwOGE0Y2VmZDhhOTUzZmM2NDk1NzY1MDUwNmEwMzVlNmUzZDlkMQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE4OjMxOjI4IDIwMDcgLTA1MDAKLQotICAgIGJvYXJkL1tmLWxdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjkzMDcyNjJmOGE5ZjNiNWM5ZTE1YTYwNjdlYWRjMTc0MDcxNDZmNgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE4OjI0OjU1IDIwMDcgLTA1MDAKLQotICAgIGJvYXJkL1tkLWVdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmNlYzJlYjkzZTEyNjQwMDAwOTcyOTMyOGU3OTdmMTJiYzk0ZjFmZAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE4OjE5OjA5IDIwMDcgLTA1MDAKLQotICAgIGJvYXJkL1tBLVphLWNdKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTU5MzgxNGYyYmUwYzljZGMzMTMzY2Q1NTBiMTY3YjhhOTg4MzI4ZgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE4OjEwOjUwIDIwMDcgLTA1MDAKLQotICAgIHJ0Yy86IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDY3MzUwNTY4ZjlkNDZlNjZjMjE4MjlmMzUxM2IzZGIwY2FlYjk0OGIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxODowNTozOCAyMDA3IC0wNTAwCi0KLSAgICBsaWJfe2FybSxhdnIzMixibGFja2ZpbixnZW5lcmljLGkzODZ9LzogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2RlZjZiMzRmOTEwZjA4ZDdlZjBhMTQ2NDZkYTA2NzcxOTIzN2NhMgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE4OjAyOjExIDIwMDcgLTA1MDAKLQotICAgIGxpYl97bTY4ayxtaWNyb2JsYXplLG1pcHMscHBjfS86IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGRkNjBkMTIyM2I5OWE4OGE3MjE2ZjNlMDQxZmU0MDYzNGFkNGMyYmIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxNzo1Njo1MCAyMDA3IC0wNTAwCi0KLSAgICBmcy86IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGM5MTg5OGJiYzUwNWFmZjNlMTJhODA3YWY4OGU3NmRhMThlZmI3ZWUKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxNzo0NjowOSAyMDA3IC0wNTAwCi0KLSAgICB0b29scy86IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDY0M2QxYWIyMzk2MDk1MGI1MmUwYTI4MDNjMmQzZWE0YzU1OGZhMDEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxNzo0NToxNCAyMDA3IC0wNTAwCi0KLSAgICBuZXQvOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjYjUxYzBiZjg4Zjk1YTFiY2E2ODMyNGIwMTI2ZjhlZWQ4YjQzMjczCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVsIDkgMTc6Mzk6NDIgMjAwNyAtMDUwMAotCi0gICAgZHJpdmVycy9bbi16XSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA3ZDM4YTE3ZTk2NGFlYzRjNzgyN2YwZWU5YTU4M2JjOGNjMWFkNmIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdWwgOSAxNzozMDowMSAyMDA3IC0wNTAwCi0KLSAgICBkcml2ZXJzL1thLW1dKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgY2RlNWM2NGQxN2NmNDgzNGFhN2I1YzM3M2YyODhiYzdkYWQyN2IyOQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1bCA5IDE3OjIyOjM3IDIwMDcgLTA1MDAKLQotICAgIGRpc2svOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2MzkyMjFjNzZjODgyMTViZDU1YWY4M2FkMTc0ZmMzMGQxOTQwZjhmCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSnVsIDkgMTc6MTU6NDkgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS86IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUwotICAgIE1vc3RseSByZW1vdmVkIGZyb20gY29tbWVudHMgaGVyZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0ZWYyMThmNmZkZjhkNzQ3ZjQ1ODlkYTUyNTJiMDA0ZTdkMmMyODc2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVsIDEwIDAwOjAxOjI4IDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwOyB1cGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGM4NjAzY2ZiZDQ1NzMzNzlhNjA3NmM5YzIwODU0NWJhMmJiZjAxOWEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEp1bCA5IDExOjAwOjI0IDIwMDcgKzAyMDAKLQotICAgIFNtYWxsIGNvZGluZyBzdHlsZSBjbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwZjkyYzdlN2M5YTYyNzU1YjE0NTdkM2M0NmY5M2M4YzFmNmMxOWZjCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJTW9uIEp1bCA5IDEwOjEwOjA4IDIwMDcgKzAyMDAKLQotICAgIE1pZ3JhdGUgZXNkIDQwNUVQIGJvYXJkcyB0byBuZXcgTkFORCBzdWJzeXN0ZW0KLQotICAgIFJlbW92ZSB1bnVzZWQgQ0ZHX05BTkRfTEVHQUNZIGRlZmluZQotCi0gICAgVGhlc2UgYm9hcmRzIHRvIG5vdCBoYXZlIE5BTkQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGJkODRlZTRjMjAyMGMzYTY4NjFmNGJiMmU3ZWEwZmI0OWY4MmU4MDMKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglNb24gSnVsIDkgMTA6MTA6MDYgMjAwNyArMDIwMAotCi0gICAgTWlncmF0ZSBlc2QgNDA1RVAgYm9hcmRzIHRvIG5ldyBOQU5EIHN1YnN5c3RlbQotCi0gICAgTWlncmF0ZSBlc2QgNDA1RVAgYm9hcmRzIHRvIG5ldyBOQU5EIHN1YnN5c3RlbQotCi0gICAgLWNsZWFudXAKLSAgICAtdXNlIGNvcnJlY3QgaW8gYWNjZXNzb3JzIChpbi9vdXRfYmUzMigpKQotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCBlMDlmN2FiNTc0OWMzNDVmOTI0ZGEyNzJiZWEwNTIxYTczYWY1YjExCi1BdXRob3I6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotRGF0ZToJTW9uIEp1bCA5IDEwOjEwOjA0IDIwMDcgKzAyMDAKLQotICAgIE1pZ3JhdGUgZXNkIDQwNUVQIGJvYXJkcyB0byBuZXcgTkFORCBzdWJzeXN0ZW0KLQotICAgIFRoaXMgcGF0Y2ggcHJlcGFyZXMgdGhlIG1pZ3JhdGlvbiBmcm9tIHRoZSBsZWdhY3kgTkFORCBkcml2ZXIKLSAgICB0byBVLUJvb3QncyBuZXcgTkFORCBzdWJzeXN0ZW0gZm9yIGVzZCBib2FyZHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGMzNTE3ZjkxOWQwZjYxNjUwY2YzMDI3ZmQ0ZmFmMGY2MzExNDJmNmMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBKdWwgOCAxODoxMDowOCAyMDA3IC0wNTAwCi0KLSAgICBjb21tb24vKiBub24tY21kKjogUmVtb3ZlIG9ic29sZXRlIHJlZmVyZW5jZXMgdG8gQ09ORklHX0NPTU1BTkRTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmQ5YmNhYTM1YmU2NGZlNDFhNDIyM2ZkYjZlY2RiYWQ1MjQ3MGIzOQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE4OjA1OjM5IDIwMDcgLTA1MDAKLQotICAgIGNvbW1vbi9jbWRfW3AteF0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzc2ZmU0NzQyNWFmYzdkNWQ2NzBmZjA1Mzk4MjNjODVkNjVkOWM0MgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE4OjAyOjIzIDIwMDcgLTA1MDAKLQotICAgIGNvbW1vbi9jbWRfW2ktbl0qOiBSZW1vdmUgb2Jzb2xldGUgcmVmZXJlbmNlcyB0byBDT05GSUdfQ09NTUFORFMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmFhMjZkYjQxMTM2NzliODA5NzBmZjQ0N2Q5MWNjMTAyMTc3NDJhNgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE3OjUxOjM5IDIwMDcgLTA1MDAKLQotICAgIGNvbW1vbi9jbWRfW2FmXSo6IFJlbW92ZSBvYnNvbGV0ZSByZWZlcmVuY2VzIHRvIENPTkZJR19DT01NQU5EUy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhZjA3NWVlOTZlNTJkZGE3YjZiY2E2YzkzNzU4OGFlYWFlYzVmMmNkCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTdW4gSnVsIDggMTc6MDI6MDEgMjAwNyAtMDUwMAotCi0gICAgQ2xlYXIgdXAgY29uZnVzaW9uIG92ZXIgdGhlIENNRF9QT1NUIGFuZCBQT1NUX0RJQUcgbWVzcy4KLQotICAgIEZvciBzb21lIHJlYXNvbiwgQ09ORklHX1BPU1QgcGVybWVhdGVkIGFzIENPTkZJR19DTURfUE9TVF9ESUFHCi0gICAgd2hlbiBpdCByZWFsbHkgbWVhbnMganVzdCBDT05GSUdfQ01EX0RJQUcuCVRoZXJlIGlzIG5vIENNRF9QT1NULgotICAgIENsZWFyIHRoaXMgbWVzcyB1cCBzb21lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGIzNjMxNDg3MTA1YTU3YWI3Y2JhZGZjMjZlZmJhZjk2NzYyNzUwMTgKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBKdWwgOCAxNTo0NTowOCAyMDA3IC0wNTAwCi0KLSAgICBSZW1vdmUgcmVmZXJlbmNlcyB0byB0aGUgb2xkIGNtZF9jb25mZGVmcy5oIGluY2x1ZGUgZmlsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhMjJkNGRhOTVlMjAwNDliNGRhYTFjMmEwMjJmNjFlOGE3MmYyZmI2Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTdW4gSnVsIDggMTU6NDI6NTkgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBDYXRjaCBzb21lIENPTkZJR19DTURfKiBjb252ZXJzaW9uIHN0cmFnZ2xlcnMuCi0KLSAgICBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBsd21vbjUuaCBib2FyZCBjb25maWcgZmlsZS4KLSAgICBGaXggQ09ORklHX0NNRF8qIHR5cG8gYnJhaW5kYW1hZ2UgaW4gb21hcDE1MTBpbm4uaAotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE1NTYyOTAxNjYxYmQ0MjhmN2U1ZmViMzMzZjc5NjM3MmNiODEwMTkKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVN1biBKdWwgOCAxNTozMTo1NyAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW1RVVldaWVpdKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmU3Zjc4MmQ1YjhjNjRhMDE5NWM2OGMzMWEwYTExZDRmNjQxMzU1ZQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE1OjAyOjQ0IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBTKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTlhMGY4ZjE1YzExZjMzNzk2N2FhMDYwMGFkNmU4YWYzMzAzN2Y1MAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE1OjEyOjQwIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBSKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTJhYTlmZDIzZDcyNGJkNmFiODhlMWJhYTBkYjM1MTMzYTI3MzAzZgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE0OjU1OjA3IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBRKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWNmMDI2OTc3OTQyMmYzZTE0N2QyZGRmYjQ5OWM5ZjZmZjEwYWQ1ZQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE0OjQ5OjQ0IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBQKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTE4YTEwNjFhODYzMGNiNjc5OTVmZGY5OWFmZDNmYjUwZDFiMTg3ZAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE0OjIxOjQzIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBbTk9dKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODM1M2UxMzliZmFkOTA1OWM1NGY1YjI0MjFmMWEzMDkwZTE1YTJlMgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDE0OjE0OjE3IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBNKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzQ4ZjI1OGYyNDI1MzQzM2U0YTIzMDJhMGJiY2ViNjc0MGE2NzI0NgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU3VuIEp1bCA4IDEzOjQ2OjE4IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBbSUpLTF0qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2YzRmNGRhOWJmYzlmOTQwM2Y1NGZjZTY3OGVkMDM2NGI3Yzg2YTZhCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTdW4gSnVsIDggMTA6MDk6MzUgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEgqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2MGEwODc2YjUxMDZiMzQyMjBlNDU5YzIwOGJiZjY0ODA3MzMwNmMwCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTYXQgSnVsIDcgMjE6MDQ6MjYgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIEYqIGFuZCBHKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGNhYTcxNTYyODI2YTI0NjZlODk0Yzg2OGQxMzI1MDlkY2RhODQ0NAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IEp1bCA3IDIwOjU2OjA1IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBFKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgM2MzMjI3ZjNjNzM3NTAyMzExYjI1YjcyMDg0NTczOTAxY2JiZjE3ZAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IEp1bCA3IDIwOjQwOjQzIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBEKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDljZjdlOGVlN2VmOTQzZmRmZTg2NmNlMjg0MTBiMGJmYmY2YTI2YwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDE5OjUyOjM1IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBDKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGU4YjJhNmUzMzI5OGRjZGIxMGJkZGE0OGRiMjVlNTNjMzA4OWViYQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDE5OjMyOjA3IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBCKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDk4ZmY5YTIyODQ4NWJkNGI5ZjIzZDA2NmJhZGEyNjhmOWFkZDFkZAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1bCA1IDE5OjEzOjUyIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBBKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaW5jZSBBRFM4NjAuaCBpbmNsdWRlcyAiYm9hcmQvZmFkcy9mYWRzLmgiIHdpdGggcmFtaWZpY2F0aW9ucwotICAgIG9uIHRoZSBDT05GSUdfQ09NTUFORCB0cmVhdG1lbnQsIGl0IHRvbyBoYXMgdG8gYmUgYWRqdXN0ZWQgdG8KLSAgICBleGNsdWRlIGFscmVhZHkgY29uZmlndXJlZCBjb21tYW5kcyBpbiB0aGlzIHNhbWUgY29tbWl0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDEwZTAzODkzMmYyMmVlODBlYmQ1M2RlMzEyNTMxZTcwZTY1OTBhMmYKLUF1dGhvcjogVGhvbWFzIEtub2Jsb2NoIDxrbm9ibG9jaEBzaWVtZW5zLmNvbT4KLURhdGU6CUZyaSBKdWwgNiAxNDo1ODozOSAyMDA3ICswMjAwCi0KLSAgICBbTkFORF0gQmFkIGJsb2NrIHNraXBwaW5nIGZvciBjb21tYW5kIG5ib290Ci0KLSAgICBUaGUgb2xkIGltcGxlbWVudGF0aW9uIG9mIGNvbW1hbmQgbmJvb3QgZG9lcyBub3Qgc3VwcG9ydCByZWFkaW5nIHRoZSBpbWFnZSBmcm9tCi0gICAgTkFORCBmbGFzaCB3aXRoIHNraXBwaW5nIG9mIGJhZCBibG9ja3MuIFRoZSBwYXRjaCBpbXBsZW1lbnRzIGEgbmV3IHZlcnNpb24gb2YKLSAgICB0aGUgbmJvb3QgY29tbWFuZDogYnkgY2FsbGluZyBuYm9vdC5qZmZzMiBmcm9tIHRoZSB1LWJvb3QgY29tbWFuZCBsaW5lIHRoZQotICAgIGNvbW1hbmQgd2lsbCBsb2FkIHRoZSBpbWFnZSBmcm9tIE5BTkQgZmxhc2ggd2l0aCByZXNwZWN0IHRvIGJhZCBibG9ja3MgKGJ5IHVzaW5nCi0gICAgbmFuZF9yZWFkX29wdHMoKSkuIFRoaXMgaXMgc2ltaWxhciB0byBlLmcuIHRoZSBOQU5EIHJlYWQgY29tbWFuZDogIm5hbmQKLSAgICByZWFkLmpmZnMyIC4uLiIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgS25vYmxvY2ggPGtub2Jsb2NoQHNpZW1lbnMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDMzNDA0M2Y2MDFhOTBhYzUzZTVlY2M4NDZmYmI3M2ExZWYzOGNiMWYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1bCA2IDEyOjI2OjUxIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIGx3bW9uNSBkZWZhdWx0IGVudmlyb25tZW50Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZDE4NzQzMGEwNTVkNjJmMTdjYTg0ZDc1ZTcyNDU0MzlkMWY3ZTc1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdWwgNiAxMTo0ODoyNCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSBsd21vbjUgYm9hcmQKLQotICAgIEFkZCB1bmxvY2s9eWVzIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIGRlZmF1bHQgdmFyaWFibGVzIHRvIHVubG9jawotICAgIHRoZSBDRkkgZmxhc2ggYnkgZGVmYXVsdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZiMGExNzRhMWU2ZjU1ZTFmNWExZmJiMjIzY2RhZDc2NDVhNDY0NmUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1bCA2IDA5OjQ1OjQ3IDIwMDcgKzAyMDAKLQotICAgIEZpeCBwcm9ibGVtIHdpdGggZ2V0L3NldGRjciBjb21tYW5kcyBpbnRyb2R1Y2VkIGJ5IGNmZyBwYXRjaGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmMTE1MmY4YzI4ZGI0YTIyMDg3YzIxYzYxOGEzZjdiYWE0OGU5YTRmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVsIDYgMDI6NTA6MTkgMjAwNyArMDIwMAotCi0gICAgQ29kZSBjbGVhbnVwIGFuZCBkZWZhdWx0IGNvbmZpZyB1cGRhdGUgZm9yIFNUQyBHUDMgU1NBIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGU0ZGJlMWIyMTVmNWM2YzQ2MmU3NjkwOWQyNDBiZDk2NDcyYjg0ZGUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgNSAxNzo1NjoyNyAyMDA3ICswMjAwCi0KLSAgICBGaXhpbmcgc29tZSB0eXBvcyBldGMuIGludHJvZHVjZWQgbWFpbmx5IGJ5IGNmZyBwYXRjaGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGI2YjQ2ODQ1NDY4MDlmODljOGJhYzcyODYzY2E0OWI1ZmQ4YWMwY2QKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVRodSBKdWwgNSAxMToxMjoxNiAyMDA3ICswMjAwCi0KLSAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRy4KLQotY29tbWl0IGRjYTNiM2Q2ZDYzOTZiNjdlNWU4NGFmNTM0NTIxNjQ5MjNjNzM0NDMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMzo0NiAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgW3Ytel0qIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2YzE4ZWI5ODA0YjUyNWYzZTRmM2JiM2QwMTRkZDY5YTIwMGQ5ZmE3Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzM6MzggMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIHQqIGFuZCB1KiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDZkYTFlOTZiN2RiMTRmNGZjZDJjOTI1NDRlN2MwODYyMDI0YmM3NgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJV2VkIEp1bCA0IDIyOjMzOjMwIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBzKiBuYW1lZCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOTBjYzNlYjZkMmJlODU2ZDlkZGQ4MTQzNmRlOWNmMzQzYmM2YjVjOAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJV2VkIEp1bCA0IDIyOjMzOjIzIDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gdmFyaW91cyBxKiBhbmQgciogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI2YTM0NTYwZDU2YTlkZjViYzJhZTIzNTI1ZDkyMjk3MzYxMzQ3NTcKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMzoxNyAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgcCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE1Y2IyMzA5MmE3ZDMxNDkwYTMzZDRlYzg3MTQ2OGI2M2JhYmZhM2MKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMzoxMyAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgbyogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkyOWEyYmZkMTQyNzM3MDAzYThmYzMyZTFiODZlMWYyYzE4NTAyNTcKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMzowNyAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgbiogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVkYzExYTUxMTk2MGQ0OTBmN2YwMWZmZDc0NmVkZmU2Mjc3Zjk5YjAKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMzowMSAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgbSogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDliYmIxYzA4MjBjMWZiZDM4MTFhYjZlZTRiYTBmNmM2Zjc2YjI3ZTQKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMjo1NyAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgbCogbmFtZWQgYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJjMjM0YzEyOWZhMDRmYjlmYTMzNTMwOTMwZTVjYmM2MDg0Y2Q0N2EKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMjo1MSAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgaiogYW5kIGsqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxZDJjNmJjNDkxOTY5ZjhkOGZiMzRjOGUzMGU4YmVhN2EyYWY5YzMxCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzI6MzIgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGkqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0OGQ1ZDEwMmEyZjJlNjE5YzkyMDUwYjlhZWRiYjY5Njg5MTg1YmMwCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzI6MjUgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGgqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3MmViMGVmYWVkNzA0OGFmY2M2MWZjNmYwMDg1YzQ5Mzk0YjVkYzM2Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzI6MTkgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGcqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxYmVjM2QzMDAyZDNiYmJhZTZmMjQ2OGEwZjczNzZkYjExMjBkMzNlCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzI6MTAgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGUqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhYjk5OWJhMWIzMWViZTc4ZGQxNjM3NDM5NGE1NWQ3YzZlNWFhNmU0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzI6MDMgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGQqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzN2U0ZjI0Yjg3ZmEyNTVhZTQ1NmQxOTNiN2NkMjNjMThkZDFkNTZiCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzE6NTYgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGMqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiYTIzNTFmOWQxZTg0MWJkMDBlYTZkYWQxZTNjMTZkMDI1OWFkMjY0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzE6NDkgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGIqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwYjM2MWM5MTY2MTdhZmY3OWU2NDdiNDBmMGU0MzM2MWUwYmJhY2NmCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzE6NDIgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiB2YXJpb3VzIGEqIG5hbWVkIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiNzMwY2RhODJlMzYyZGY2YTIyZjRjNTljMGE5Yjk3ZTg4NWIxMDE0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzE6MzUgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBtcGM1eHggYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ3OTRjZmVmZWFkNWZjMTc3Y2Y0ZjQxMTY0ZTgwMzgyZTljOTQ4NGEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMToxNSAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIHZhcmlvdXMgNTIwMCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZWYwZGY1MmFiNDllZWE0YTMwYzE1MDg3ZmQyN2Q1NGMxZDk0NmYyYwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJV2VkIEp1bCA0IDIyOjMxOjA3IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gU1R4IGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4NjZlMzA4OWJmYzgyNmJiNGRjNzQ2MzdmOGFhZDg3YTNiYWI3OWZjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzA6NTggMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBzYmMqIGJvYXJkIGNvbmZpZyBmaWxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyNjk0NjkwZTI4NWFjYWEzNDkyMmY1NWY0YjVhZTAzMGRhNjBjNTVhCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVsIDQgMjI6MzA6NTAgMjAwNyAtMDUwMAotCi0gICAgaW5jbHVkZS9jb25maWdzOiBVc2UgbmV3IENPTkZJR19DTURfKiBpbiBUUU0gYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFjYzRjNDU4MzI5NzY1YjU4ZTU4NGExOTgyMWU3OTZiM2MxMGU5NzYKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMDoyOCAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIDgyeHggYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhlYTU0OTlhZmRhYmEwYWNmNjA5MjNkZDk5MDAxYzM5OWQ0YTdjOGUKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdWwgNCAyMjozMDowNiAyMDA3IC0wNTAwCi0KLSAgICBpbmNsdWRlL2NvbmZpZ3M6IFVzZSBuZXcgQ09ORklHX0NNRF8qIGluIDgzeHggYm9hcmQgY29uZmlnIGZpbGVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI0NDg5NjIxNWEwOWM2MGZhNDBjYWU5MDZmN2VkMjA3YmJjMmM0OTIKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVRodSBKdWwgNSAwODoxNzozNyAyMDA3ICswMjAwCi0KLSAgICBNZXJnZWQgUE9TVCBmcmFtZXdvcmsgd2l0aCB0aGUgY3VycmVudCBUT1QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgUG9zZWxlbm92IDxzcG9zZWxlbm92QGVtY3JhZnQuY29tPgotCi1jb21taXQgYjI0NjI5ZmEzNzcyMTRkNjNiYjQwZDEzNjBlMzU0YjZkM2U0YWY1NgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJV2VkIEp1biAxMyAxMzoyMzoxNSAyMDA3IC0wNTAwCi0KLSAgICBtcGM4Nnh4OiBSZW1vdmUgb2xkIENGR19DTURfKiByZWZlcmVuY2VzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ2MTc1ZDk3NjRkYTEyOWJiNGZkMzQxY2QyNTU0ZGM3ZDU1ZjViMmEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdW4gMTMgMTM6MjI6NTQgMjAwNyAtMDUwMAotCi0gICAgQWRkIE1QQzg1NjhNRFMgdG8gTUFLRUFMTCA4NXh4IHRhcmdldC4KLQotICAgIEl0IHdhcyBtaXNzaW5nIGZyb20gdGhlIG9yaWdpbmFsIHBvcnQgc3VibWlzc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyODM1ZTUxOGM5NjllNTEyNGJhMTE3NGVlZjNlODM3NWUxMmZhN2Q1Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgSnVuIDEzIDEzOjIyOjA4IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvY29uZmlnczogVXNlIG5ldyBDT05GSUdfQ01EXyogaW4gODV4eCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTZiMzA0YWMyMDkxNjg5NTA2MDg4YTlhZTY3ZjYzZmQ2MzAwY2YxNgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJV2VkIEp1biAxMyAxMzoyMTozNyAyMDA3IC0wNTAwCi0KLSAgICBGaXggI2lmIHR5cG8gaW4gQ09ORklHX0NNRF8qIGNoYW5nZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjc4MGI4MzMxNmQ5YWYxZjYxZDcxY2M4OGIxOTE3YjM4N2I5Yjk5NQotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzZ2lnZXJAZ214LmNoPgotRGF0ZToJV2VkIEp1biAyNyAxODoxMTozOCAyMDA3ICswMjAwCi0KLSAgICByZXN1Ym1pdDogcHBjNHh4OiBSZW1vdmUgc2VxdW9pYS9zZXF1aW9hLmguIENsZWFudXAgcHBjNDQwLmggZm9yIFBQQzQ0MEVQWAotCi0gICAgU2lnbmVkLW9mZi1ieTogTmlrbGF1cyBHaWdlciA8bmlrbGF1cy5naWdlckBuZXN0YWwuY29tPgotCi1jb21taXQgMDRlNmMzOGI3NjZlYWEyZjMyODc1NjE1NjNjOWUyMTVlMGMzYTBkNAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVsIDQgMTA6MDY6MzAgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgbHdtb241IGJvYXJkCi0KLSAgICAtIEFkZCBvcHRpb25hbCBFQ0MgZ2VuZXJhdGlvbiByb3V0aW5lIHRvIHByZXNlcnZlIGV4aXN0aW5nCi0gICAgICBSQU0gdmFsdWVzLiBUaGlzIGlzIG5lZWRlZCBmb3IgdGhlIExpbnV4IGxvZy1idWZmZXIgc3VwcG9ydAotICAgIC0gQWRkIG9wdGlvbmFsIEREUjIgc2V0dXAgd2l0aCBDTD00Ci0gICAgLSBHUElPNTAgbm90IHVzZWQgYW55bW9yZQotICAgIC0gTGltZSByZWdpc3RlciBzZXR1cCBhZGRlZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjgxMGEzNDY3N2RiYzQ0NjMzNGY1ZTQ1MWYxNjgyNDI2ZGQzM2I0OQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MTc6MjggMjAwNyAtMDYwMAotCi0gICAgRml4IE1ha2VmaWxlIHRvIHVzZSAkKE1LQ09ORklHKSBtYWNybyBmb3IgYWxsIGJvYXJkIHBvcnRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA5MGIxYjJkNjliOTM5NmZmMmYwMTE2NWViYzE2YzlhNTk0ZWI1OTI2Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDoxNzoyOCAyMDA3IC0wNjAwCi0KLSAgICBGaXggTWFrZWZpbGUgdG8gdXNlICQoTUtDT05GSUcpIG1hY3JvIGZvciBhbGwgYm9hcmQgcG9ydHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDA1NzAwNGY0YTQ4NjM1NTRkNTZjYzU2MjY4YmZhN2M3ZDk3MzhlMjcKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjQ5IDIwMDcgLTA2MDAKLQotICAgIENvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgbXBjODN4eAotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNWFmNjFiMmY0YjgzOGEwNWY3OWJlMjc0ZjNlNWE2NmVkZDJkOWM5NgotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MzQ6NDQgMjAwNyAtMDYwMAotCi0gICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBtcGM4MjYwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBmM2E1MmZlMDU5MjM5MzVkYjg2OTg1ZGFmOTQzOGUyZjcwYWMzOWFhCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozNDozOSAyMDA3IC0wNjAwCi0KLSAgICBDb3JyZWN0IGZpeHVwIHJlbG9jYXRpb24gZm9yIG1wYzgyNHgKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGE4NWRkMjU0YzA1NzdmY2ExMzYyN2M0NmU5M2ZjMmFkNGM0ZjFmMDAKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEp1bCAzIDAwOjM0OjM0IDIwMDcgLTA2MDAKLQotICAgIENvcnJlY3QgZml4dXAgcmVsb2NhdGlvbiBmb3IgbXBjODIyMAotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNmY3NTc2YjIwZWNmMGQwNDBjM2FjM2IwMzJiNWNiYzg2MGUzOGE5MAotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MzQ6MjkgMjAwNyAtMDYwMAotCi0gICAgQ29ycmVjdCBmaXh1cCByZWxvY2F0aW9uIGZvciBNUEM1eHh4Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCAzNjQ5Y2Q5OWJhODE1YjY2MDE4Njg3MzU3NjU2MDJmMDBlZjM2OTJiCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozNDoyNCAyMDA3IC0wNjAwCi0KLSAgICBDb3JyZWN0IHJlbG9jYXRpb24gZml4dXAgZm9yIG1wYzV4eAotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgZjgyYjNiNjMwNGI2MjBlZjdlMjhiZmFhMWVhODg3YTJhZDJmYTMyNQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MzQ6MTkgMjAwNyAtMDYwMAotCi0gICAgRG9uJ3Qgc2V0IGdkLT5yZWxvY19vZmYgaWYgcmVsb2NhdGlvbiBvZiAuZml4dXAgd29ya3MgY29ycmVjdGx5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBlMWE2MTQ0YzMyZGM3ZGU3M2JjZGQzMzk5NWRlMDE0OGNiZDBiZDI4Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozNDoxNCAyMDA3IC0wNjAwCi0KLSAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODN4eCBsaW5rZXIgc2NyaXB0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgMTdlMzJmYzM5MDhiZjcwODlkM2YxNmZjODJhMWMzYWU2NzRkZDY1YgotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MzQ6MDkgMjAwNyAtMDYwMAotCi0gICAgQ29uc29saWRhdGUgbXBjODI2MCBsaW5rZXIgc2NyaXB0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgYWY3ZDM4YjM5MzY5MGQ3ZWVhZjQxOGFjODVhMWU4MzFhNTBkNWZkMAotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MzQ6MDQgMjAwNyAtMDYwMAotCi0gICAgUmVtb3ZlIG9ic29sZXRlIG1wYzgyNHggbGlua2VyIHNjcmlwdHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGY5NGEzYWVjZWJjNDBjYTA5MzljN2Q2NmQwMTAwMDljZjUxYmU5ZTIKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjU5IDIwMDcgLTA2MDAKLQotICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM4MjR4IGxpbmtlciBzY3JpcHRzICgzIG9mIDQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBhNzFjMDg0ZjNhYzdmZWRmMTQ0NTM3ZGIyYjJkYTQ3MzIzMDY4ODMzCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMzo1MyAyMDA3IC0wNjAwCi0KLSAgICBSZW1vdmUgb2Jzb2xldGUgbXBjODI0eCBsaW5rZXIgc2NyaXB0cyAoMiBvZiA0KQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgZjY3MGExNTQ2OGQxMzY1MjQxZDQwMDIyYjk0MDhlMTAwNDE4MWY1ZQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MzM6NDggMjAwNyAtMDYwMAotCi0gICAgUmVtb3ZlIG9ic29sZXRlIG1wYzgyNHggbGlua2VyIHNjcmlwdHMgKDEgb2YgNCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDA5NTU1YmQ0NWEwNGMwZTU0ZjE3MjUyOGQyMWJjMTg4OTY1NTBkMjgKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjQzIDIwMDcgLTA2MDAKLQotICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM4MjIwIGxpbmtlciBzY3JpcHRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA1ZWZiOTkyZjA0NmU1MTIyNWM5M2Q1MmY4MGZlY2JlNDMzYWJkNzg5Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMzozOCAyMDA3IC0wNjAwCi0KLSAgICBSZW1vdmUgb2Jzb2xldGUgbXBjNXh4eCBsaW5rZXIgc2NyaXB0cyAoMyBvZiAzKQotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgMDdjMTNkZmVmNjViMzE2NDdlNjlkOGI2MWRhYTFlZWM1OThhZGQxYQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgSnVsIDMgMDA6MzM6MzMgMjAwNyAtMDYwMAotCi0gICAgUmVtb3ZlIG9ic29sZXRlIG1wYzV4eHggbGlua2VyIHNjcmlwdHMgKDIgb2YgMykKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGI0ZjY3NTEzYTYyNGNlODU4NjZjNjZjNTc1YmQyZDlkNzk3N2Q3ZjAKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEp1bCAzIDAwOjMzOjI4IDIwMDcgLTA2MDAKLQotICAgIFJlbW92ZSBvYnNvbGV0ZSBtcGM1eHh4IGxpbmtlciBzY3JpcHRzICgxIG9mIDMpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBiN2Q4ZTA1Zjg2NzUyNDliNWYyMDhhYTczYmFiZWVkMzg0YTQ1MTlkCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMzoyMyAyMDA3IC0wNjAwCi0KLSAgICBSZW1vdmUgb2Jzb2xldGUgbXBjNXh4IGxpbmtlciBzY3JpcHRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA0MTZhMGI2ZDQwZjZlYmEzYTJmYzU0NzI1M2MxNmJkYTI4ZDkyMmY3Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMzoxOCAyMDA3IC0wNjAwCi0KLSAgICBDb25zb2xpZGF0ZSBtcGM4M3h4IGxpbmtlciBzY3JpcHRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA1ZmM1OTE3NWI5Mjg4M2VkNWQyNjY2YTA0ZTZiYzQ5ZTcwYTRhMzY1Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMzoxMyAyMDA3IC0wNjAwCi0KLSAgICBDb25zb2xpZGF0ZSBtcGM4MjYwIGxpbmtlciBzY3JpcHRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA3MzdmOWViMDJkNzMzNWRmMmIzZTRkN2E0ZDMzNDg3ODRkMWRhMjA3Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMzowOCAyMDA3IC0wNjAwCi0KLSAgICBDb25zb2xpZGF0ZSBtcGM4MjR4IGxpbmtlciBzY3JpcHRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA5Yzc1N2I3ODlhNTlhODU1ZGI1N2I0NDhkZDgyNTMyOWM0ZTljNGEwCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMzowMyAyMDA3IC0wNjAwCi0KLSAgICBDb25zb2xpZGF0ZSBtcGM4MjIwIGxpbmtlciBzY3JpcHRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBkMTgxYzlhMTVjZDQxODYzZmUyNDg0MGQxNzg0ODQyOWYyN2QzYzhjCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMjo1OCAyMDA3IC0wNjAwCi0KLSAgICBDb25zb2xpZGF0ZSBtcGM1eHh4IGxpbmtlciBzY3JpcHRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCAyODdhYzkyNGFkYjcyOTFiZWJlNTA4NjY1MmEzNjJhMzBhYjI4YjEzCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBKdWwgMyAwMDozMjo1MyAyMDA3IC0wNjAwCi0KLSAgICBDb25zb2xpZGF0ZSBtcGM1eHggbGlua2VyIHNjcmlwdHMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDUyYjg3MDRkMDI0NWU1ODlmODZkNDYyZTllYzI1YWViN2VjYmJiZGQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgNCAwMDo0Mzo1MyAyMDA3ICswMjAwCi0KLSAgICBGaXggYSBmZXcgZmlsZSBwZXJtaXNzaW9uIHByb2JsZW1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDc4ZTBjZjJkZTdiZTdmMWVhZWViNjIyZWI2MWZkNTBlNGQ1ZTIwNWMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBKdWwgNCAwMDozODozOCAyMDA3ICswMjAwCi0KLSAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4gUmVidWlsZCBDSEFOR0VMT0cgZmlsZS4KLQotY29tbWl0IDJmOWMxOWU0OTZhY2I2YmI1MGQ5Mjk5ZTFhYWIzNzc2MjVkNDhjMzgKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDM6NDQgMjAwNyAtMDUwMAotCi0gICAgY29uZmlncy8gbXBjODZ4eDogUmV3cml0ZSBjb21tYW5kIGxpbmUgb3B0aW9ucyB1c2luZyBuZXcgQ09ORklHX0NNRC0qIHN0eWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYwMmFkM2IzM2Q5Y2VlZjgzZGJhYjQ2YmU2ODY0NmQ2NDVkNjM3ZWUKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MzkgMjAwNyAtMDUwMAotCi0gICAgUkVBRE1FOiBSZXdyaXRlIGNvbW1hbmQgbGluZSBjb25maWcgdG8gdXNlIENPTkZJR19DTURfKiBuYW1lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3MmEwNzRjZWM2OGU1YmFkNjBkNjMyMDZjMDUwOTc0ZTA4YWZkODA0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglNb24gSnVuIDExIDE5OjAzOjM0IDIwMDcgLTA1MDAKLQotICAgIGluY2x1ZGUvIG5vbi1jb25maWc6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgotCi0gICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCi0gICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCi0gICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KLQotICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgotICAgIEJlZm9yZToKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKLSAgICBBZnRlcjoKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWZjZjU0M2UwYjY2MjhjNzZmZjQ4NzA1YjFiMDU2NmJmZDExNTA3YgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJTW9uIEp1biAxMSAxOTowMzoyOCAyMDA3IC0wNTAwCi0KLSAgICB0b29scy8gOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KLQotICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQotICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgotICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCi0KLSAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKLSAgICBCZWZvcmU6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCi0gICAgQWZ0ZXI6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkxMDdlYmUwZDM1MjQyMDg5NWFiNjliNzE1Njk3YmRlYmM4Y2FmNTAKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MjMgMjAwNyAtMDUwMAotCi0gICAgYm9hcmQvW2stel0qOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KLQotICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQotICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgotICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCi0KLSAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKLSAgICBCZWZvcmU6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCi0gICAgQWZ0ZXI6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDVlMzc4MDAzZDU5MmVhODI4ZWM2OWQ2ZGVmY2Q0ZGU3OTA5NmRkNWMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MTkgMjAwNyAtMDUwMAotCi0gICAgYm9hcmQvW01hLWldKjogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCi0KLSAgICBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBzdGVwIHRoYXQgYWxsb3dzIGJvdGggdGhlIG9sZGVyIGZvcm0KLSAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KLSAgICBiZSByZW1vdmVkIGVudGlyZWx5LgotCi0gICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06Ci0gICAgQmVmb3JlOgotCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKQotICAgIEFmdGVyOgotCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3MzcxODQxMTRlYzljOWUwYWI5NGQ2NzEzNTM2MTI2MDczYmQyNDcyCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglNb24gSnVuIDExIDE5OjAzOjE1IDIwMDcgLTA1MDAKLQotICAgIGNwdS8gbm9uLW1wYyo6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgotCi0gICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCi0gICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCi0gICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KLQotICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgotICAgIEJlZm9yZToKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKLSAgICBBZnRlcjoKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjQ4MDcwZmU1ZmU0NDBkZmI1ZWU1MjY4YzkyMGRlNzBlNDhlYTMyNwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJTW9uIEp1biAxMSAxOTowMzowOCAyMDA3IC0wNTAwCi0KLSAgICBjcHUvbXBjKi8gOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KLQotICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQotICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgotICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCi0KLSAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKLSAgICBCZWZvcmU6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCi0gICAgQWZ0ZXI6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBjNTA1ZGIwYTBkYzFmNjcwYjEzY2UzYjRkM2ZiZjFlYzViM2NiZDIKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDM6MDMgMjAwNyAtMDUwMAotCi0gICAgbGliXyovOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KLQotICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQotICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgotICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCi0KLSAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKLSAgICBCZWZvcmU6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCi0gICAgQWZ0ZXI6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDczZjAzMjAyMWVjNWYxM2NkYThmYWE0ZTM0YjZkZTgwOTYwZWI4NmYKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDI6NTggMjAwNyAtMDUwMAotCi0gICAgbGliX3BwYy86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgotCi0gICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCi0gICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCi0gICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KLQotICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgotICAgIEJlZm9yZToKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKLSAgICBBZnRlcjoKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOThiNzkwMDNjMjFjMjU3ODIwNjAwMzI1NmRlNGU3ODFkNmIzNmNhOAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJTW9uIEp1biAxMSAxOTowMjo1MyAyMDA3IC0wNTAwCi0KLSAgICBydGMvOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KLQotICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQotICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgotICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCi0KLSAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKLSAgICBCZWZvcmU6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCi0gICAgQWZ0ZXI6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDZlMjExNWFjYjZhODkyZDUzYTY4ODFiZjI1M2FlNDFkM2RmMzkxNTYKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDI6NDkgMjAwNyAtMDUwMAotCi0gICAgbmV0LzogQXVnbWVudCBDT05GSUdfQ09NTUFORFMgdGVzdHMgd2l0aCBkZWZpbmVkKENPTkZJR19DTURfKikuCi0KLSAgICBUaGlzIGlzIGEgY29tcGF0aWJpbGl0eSBzdGVwIHRoYXQgYWxsb3dzIGJvdGggdGhlIG9sZGVyIGZvcm0KLSAgICBhbmQgdGhlIG5ldyBmb3JtIHRvIGNvLWV4aXN0IGZvciBhIHdoaWxlIHVudGlsIHRoZSBvbGRlciBjYW4KLSAgICBiZSByZW1vdmVkIGVudGlyZWx5LgotCi0gICAgQWxsIHRyYW5zZm9ybWF0aW9ucyBhcmUgb2YgdGhlIGZvcm06Ci0gICAgQmVmb3JlOgotCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKQotICAgIEFmdGVyOgotCSNpZiAoQ09ORklHX0NPTU1BTkRTICYgQ0ZHX0NNRF9BVVRPU0NSSVBUKSB8fCBkZWZpbmVkKENPTkZJR19DTURfQVVUT1NDUklQVCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0NWNkYjliNzJjOTQ2NTVjNzMwOGI0NjRhMjY2NjA1N2MwYjI4NmUwCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglNb24gSnVuIDExIDE5OjAyOjM0IDIwMDcgLTA1MDAKLQotICAgIGRpc2svOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KLQotICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQotICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgotICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCi0KLSAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKLSAgICBCZWZvcmU6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCi0gICAgQWZ0ZXI6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRlMTA5YWU5ODI5NGE1Y2E3ZmY4NDhiNzY1MmM3YmZkNDAyM2E5NGEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDI6MjAgMjAwNyAtMDUwMAotCi0gICAgZnMvOiBBdWdtZW50IENPTkZJR19DT01NQU5EUyB0ZXN0cyB3aXRoIGRlZmluZWQoQ09ORklHX0NNRF8qKS4KLQotICAgIFRoaXMgaXMgYSBjb21wYXRpYmlsaXR5IHN0ZXAgdGhhdCBhbGxvd3MgYm90aCB0aGUgb2xkZXIgZm9ybQotICAgIGFuZCB0aGUgbmV3IGZvcm0gdG8gY28tZXhpc3QgZm9yIGEgd2hpbGUgdW50aWwgdGhlIG9sZGVyIGNhbgotICAgIGJlIHJlbW92ZWQgZW50aXJlbHkuCi0KLSAgICBBbGwgdHJhbnNmb3JtYXRpb25zIGFyZSBvZiB0aGUgZm9ybToKLSAgICBCZWZvcmU6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpCi0gICAgQWZ0ZXI6Ci0JI2lmIChDT05GSUdfQ09NTUFORFMgJiBDRkdfQ01EX0FVVE9TQ1JJUFQpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9BVVRPU0NSSVBUKQotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ1YmU0M2RlOTNmZjkwNWM0NjVlNTA5ZDQ1YTMxNjRlZjQ4ZDI2ZTcKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTk6MDI6MTAgMjAwNyAtMDUwMAotCi0gICAgZHJpdmVycy86IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgotCi0gICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCi0gICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCi0gICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KLQotICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgotICAgIEJlZm9yZToKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKLSAgICBBZnRlcjoKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjQ1Mzk2MGQ0ZmRiODdiMzk3MGQ5NjExOWI5MGRmMmVkMDI0ZmM0YQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJTW9uIEp1biAxMSAxOTowMjowNSAyMDA3IC0wNTAwCi0KLSAgICBjb21tb24vIG5vbi1jbWQ6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgotCi0gICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCi0gICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCi0gICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KLQotICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgotICAgIEJlZm9yZToKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKLSAgICBBZnRlcjoKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNjVjNDUwYjQ3YTYyNjU5ZDUyMmNmYThmNGZhMWU0ZTVjNjBkY2NkMAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJTW9uIEp1biAxMSAxOTowMTo1NCAyMDA3IC0wNTAwCi0KLSAgICBjb21tb24vY21kX1tpLXpdKiA6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgotCi0gICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCi0gICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCi0gICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KLQotICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgotICAgIEJlZm9yZToKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKLSAgICBBZnRlcjoKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTc2YWRjODE0MmMxZDk1NjM4NWExMDllMGI3MGY5MzE5ZWRlNGQ2NgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJTW9uIEp1biAxMSAxOTowMTo0MyAyMDA3IC0wNTAwCi0KLSAgICBjb21tb24vY21kX1thLWZdKiA6IEF1Z21lbnQgQ09ORklHX0NPTU1BTkRTIHRlc3RzIHdpdGggZGVmaW5lZChDT05GSUdfQ01EXyopLgotCi0gICAgVGhpcyBpcyBhIGNvbXBhdGliaWxpdHkgc3RlcCB0aGF0IGFsbG93cyBib3RoIHRoZSBvbGRlciBmb3JtCi0gICAgYW5kIHRoZSBuZXcgZm9ybSB0byBjby1leGlzdCBmb3IgYSB3aGlsZSB1bnRpbCB0aGUgb2xkZXIgY2FuCi0gICAgYmUgcmVtb3ZlZCBlbnRpcmVseS4KLQotICAgIEFsbCB0cmFuc2Zvcm1hdGlvbnMgYXJlIG9mIHRoZSBmb3JtOgotICAgIEJlZm9yZToKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkKLSAgICBBZnRlcjoKLQkjaWYgKENPTkZJR19DT01NQU5EUyAmIENGR19DTURfQVVUT1NDUklQVCkgfHwgZGVmaW5lZChDT05GSUdfQ01EX0FVVE9TQ1JJUFQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZWM2M2IxMGI2MWZkNjgyMzhkNGMxNWMxY2QwNGMwYjM4MjI4ZTJjMQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJTW9uIEp1biAxMSAxOTowMTozNCAyMDA3IC0wNTAwCi0KLSAgICBJbnRyb2R1Y2UgaW5pdGlhbCB2ZXJzaW9ucyBvZiBuZXcgQ29tbWFuZCBDb25maWcgZmlsZXMuCi0KLSAgICBEZXJpdmUgdGhyZWUgbmV3IGZpbGVzIGZyb20gY21kX2NvbmZkZWZzLmg6Ci0JY29uZmlnX2Jvb3RwLmggLSBIYXMgQk9PVFAgcmVsYXRlZCBjb25maWcgb3B0aW9ucywgbm90IGNvbW1hbmRzCi0JY29uZmlnX2NtZF9hbGwuaCAtIEhhcyBhIENPTkZJR19DTURfKiBkZWZpbml0aW9uIGZvciBldmVyeSBjb21tYW5kCi0JY29uZmlnX2NtZF9kZWZhdWx0LmggLSBIYXMgYSBDT05GSUdfQ01EXyogZGVmaW5pdGlvbiBmb3IgZGVmYXVsdCBjbWRzLgotCi0gICAgRm9yIG5vdywgaW5jbHVkZSAiY29uZmlnX2Jvb3RwLmgiIGZvciBjb21wYXRhYmlsaXR5IHVudGlsIGFsbAotICAgIHVzZXJzIG9mIGl0IGRpcmVjdGx5IGluY2x1ZGUgaXQgcHJvcGVybHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMWYyYTA1ODk4NjU4OTAwZGM1NzE3NzYxZTI3YWJmMjA1MmU2N2UxMwotQXV0aG9yOiBNdXNodGFxIEtoYW4gPG11c2h0YXFrXzkyMUB5YWhvby5jby5pbj4KLURhdGU6CVNhdCBKdW4gMzAgMTg6NTA6NDggMjAwNyArMDIwMAotCi0gICAgRml4IFMtQVRBIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBtdXNodGFxIGtoYW4gPG11c2h0YXFrXzkyMUB5YWhvby5jby5pbj4KLQotY29tbWl0IGE1ZDcxZTI5MGYzNjczMjY5YmU4ZWVmYjRlYzQ0ZjUzNDEyZjk0NjEKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJTW9uIEp1biAyNSAxOToxMTozNyAyMDA3ICswMjAwCi0KLSAgICBbUENTNDQwRVBdCWdldCByaWQgb2YgQ09ORklHX1BQQzR4eF9VU0VfU1BEX0REUl9JTklUX0hBTkcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgYTFiZDYyMDBlY2NkM2EwMjA0MGE5NTVkNWY0M2QzZWUxZmM5ZjkzYgotQXV0aG9yOiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5lc3RhbC5jb20+Ci1EYXRlOglNb24gSnVuIDI1IDE3OjAzOjEzIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogUFBDNDQwRVB4IEVtaXQgRERSMCByZWdpc3RlcnMgb24gbWFjaGluZSBjaGVjayBpbnRlcnJ1cHQKLQotICAgIFRoaXMgcGF0Y2ggcHJpbnRzIHRoZSBERFIgc3RhdHVzIHJlZ2lzdGVycyB1cG9uIG1hY2hpbmUgY2hlY2sKLSAgICBpbnRlcnJ1cHQgb24gdGhlIDQ0MEVQeC9HUnguIFRoaXMgY2FuIGJlIHVzZWZ1bCBlc3BlY2lhbGx5IHdoZW4KLSAgICBFQ0Mgc3VwcG9ydCBpcyBlbmFibGVkLgotCi0gICAgSSBhZGRlZCBzb21lIHNtYWxsIGNoYW5nZXMgdG8gdGhlIG9yaWdpbmFsIHBhdGNoIGZyb20gTmlrbGF1cyB0bwotICAgIG1ha2UgaXQgY29tcGlsZSBjbGVhbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmVzdGFsLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4MDcwMThmYjdmYWNlYjQyOWNlMGNiNDdiYWEyMDczNzQ2YjMzYTRlCi1BdXRob3I6IE5pa2xhdXMgR2lnZXIgPG5pa2xhdXMuZ2lnZXJAbmVzdGFsLmNvbT4KLURhdGU6CU1vbiBKdW4gMjUgMTY6NTA6NTUgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggTz1idWlsZGlyIGJ1aWxkcwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyB0aGUgcHJvYmxlbSB0byBhc3NlbWJsZSBjcHUvcHBjNHh4L3N0YXJ0LlMKLSAgICBleHBlcmllbmNlZCBsYXN0IHdlZWsgd2hlcmUgYnVpbGRpbmcgZmFpbGVkIGhhdmluZyBzcGVjaWZpZWQKLSAgICBPPS4uL2J1aWxkLnNlcXVvaWEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWtsYXVzIEdpZ2VyIDxuaWtsYXVzLmdpZ2VyQG5lc3RhbC5jb20+Ci0KLWNvbW1pdCA0NjZmZmYxYTdiYjVmZTc2NGEwNjQ1MDYyNmY2MDk4MjE5ZjQ0NmI4Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBKdW4gMjUgMTU6NTc6MzkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgcGNpX3ByZV9pbml0KCkgZm9yIDQwNSBib2FyZHMKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyB0aGUgQ0ZHX1BDSV9QUkVfSU5JVCBvcHRpb24gY29tcGxldGVseSwgc2luY2UKLSAgICBpdCdzIG5vdCBuZWVkZWQgYW55bW9yZSB3aXRoIHRoZSBwYXRjaCBmcm9tIE1hdHRoaWFzIEZ1Y2hzIHdpdGgKLSAgICB0aGUgIndlYWsiIHBjaV9wcmVfaW5pdCgpIGltcGxlbWVudGF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNmYzNWM1MzE2NjIxM2MyNGE1YTBlMjM5MGVkODYxMTM2ZmY3Mzg3MAotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVN1biBKdW4gMjQgMTc6NDE6MjEgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBNYWludGVuYW5jZSBwYXRjaCBmb3IgZXNkJ3MgQ1BDSTQwNSBkZXJpdmF0cwotCi0gICAgLWFkZCBwY2lfcHJlX2luaXQoKSBmb3IgcGNpIGludGVycnVwdCBmaXh1cCBjb2RlCi0gICAgLWRpc2FibGUgcGh5IHNsZWVwIG1vZGUgdmlhIHJlc2V0X3BoeSgpIGZ1bmN0aW9uCi0gICAgLXVzZSBjb3JyZWN0IGlvIGFjY2Vzc29ycwotICAgIC1jbGVhbnVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDVhMWM5ZmYwYzQ0MzA1YjU3Y2I0ZDhmOTM2OWJiYTkwYmNmMGUxZjgKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglTdW4gSnVuIDI0IDE3OjIzOjQxIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIHBjaV9wcmVfaW5pdCgpIGZvciA0MDUgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgY2FsbGluZyBhIHBsYXR0Zm9ybSBkZXBlbmRhbnQKLSAgICBwY2lfcHJlX2luaXQoKSBmdW5jdGlvbiBmb3IgNDA1IGJvYXJkcy4gVGhpcyBjYW4gYmUgdXNlZCB0bwotICAgIG1vdmUgdGhlIGN1cnJlbnQgcGNpXzQwNWdwX2ZpeHVwX2lycSgpIGZ1bmN0aW9uIGludG8gdGhlCi0gICAgYm9hcmQgY29kZS4KLQotICAgIFRoaXMgcGF0Y2ggYWxzbyBtYWtlcyB0aGUgQ0ZHX1BDSV9QUkVfSU5JVCBkZWZpbmUgb2Jzb2xldGUuCi0gICAgQSBkZWZhdWx0IGZ1bmN0aW9uIHdpdGggJ3dlYWsnIGF0dHJpYnV0ZSBpcyB1c2VkIHdoZW4KLSAgICBhIGJvYXJkIHNwZWNpZmljIHBjaV9wcmVfaW5pdCgpIGlzIG5vdCBpbXBsZW1lbnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgMTYzNmQxYzg1MjljMDA2ZDEwNjI4N2NmYmMyMGNkMGEyNDZmZTFjYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAyMiAyMzo1OTowMCAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGtlIGNsZWFudXA7IHJlYnVpbGQgQ0hBTkdFTE9HCi0KLWNvbW1pdCAyZGM2NDQ1MWI0YzA4ZmZkNjE5MzcyYWJmZGMyNTA2YTJlMjM2M2I5Ci1BdXRob3I6IElnb3IgTGlzaXRzaW4gPGlnb3JAZW1jcmFmdC5jb20+Ci1EYXRlOglXZWQgQXByIDE4IDE0OjU1OjE5IDIwMDcgKzA0MDAKLQotICAgIEFkYXB0IGxvZyBidWZmZXIgY29kZSB0byBzdXBwb3J0IExpbnV4IDIuNgotCi0gICAgQSBuZXcgZW52aXJvbm1lbnQgdmFyaWFibGUsICJsb2d2ZXJzaW9uIiwgc2VsZWN0cyB0aGUgbG9nIGJ1ZmZlcgotICAgIGJlaGF2aW91ci4gSWYgaXQgaXMgbm90IHNldCBvciBzZXQgdG8gYSB2YWx1ZSBvdGhlciB0aGFuIDIsIHRoZW4gdGhlCi0gICAgb2xkLCBMaW51eCAyLjQuNCwgYmVoYXZpb3VyIGlzIHNlbGVjdGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSWdvciBMaXNpdHNpbiA8aWdvckBlbWNyYWZ0LmNvbT4KLSAgICAtLQotCi1jb21taXQgYTExZTA2OTY1ZWM5MTI3MGM1MTg1MzQwN2ZmMTI2MWQzYzc0MDM4NgotQXV0aG9yOiBJZ29yIExpc2l0c2luIDxpZ29yQGVtY3JhZnQuY29tPgotRGF0ZToJV2VkIE1hciAyOCAxOTowNjoxOSAyMDA3ICswNDAwCi0KLSAgICBFeHRlbmQgUE9TVCBzdXBwb3J0IGZvciBQUEM0NDAKLQotICAgIEFkZGVkIG1lbW9yeSwgQ1BVLCBVQVJULCBJMkMgYW5kIFNQUiBQT1NUIHRlc3RzIGZvciBQUEM0NDAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIExpc2l0c2luIDxpZ29yQGVtY3JhZnQuY29tPgotICAgIC0tCi0KLWNvbW1pdCA1NjZhNDk0ZjU5MmFlM2IzYzA3ODVkOTBkNGUxYmE0NTU3NDg4MGM0Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gMjIgMTk6MTE6NTQgMjAwNyArMDIwMAotCi0gICAgW1BDUzQ0MEVQXQkgICAgdXBncmFkZSB0aGUgUENTNDQwRVAgYm9hcmQ6Ci0JCSAgICAtIFNob3cgb24gdGhlIFN0YXR1cyBMRURzLCBzb21lIFN0YXRlcyBvZiB0aGUgYm9hcmQuCi0JCSAgICAtIEdldCB0aGUgTUFDIGFkZHJlc3NlcyBmcm9tIHRoZSBFRVByb20KLQkJICAgIC0gdXNlIFBSRUJPT1QKLQkJICAgIC0gdXNlIHRoZSBDRiBvbiB0aGUgYm9hcmQuCi0JCSAgICAtIGNoZWNrIHRoZSBVLUJvb3QgaW1hZ2UgaW4gdGhlIEZsYXNoIHdpdGggYSBTSEExCi0JCSAgICAgIGNoZWNrc3VtLgotCQkgICAgLSB1c2UgZHluYW1pYyBUTEIgZW50cmllcyBnZW5lcmF0aW9uIGZvciB0aGUgU0RSQU0KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgM2ExZjVjODFiMGI5NTU3ODE3YTc4OWJlY2U4Mzk5MDU1ODFjMjIwNQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDIyIDE2OjU4OjQwIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRml4IHByb2JsZW0gd2l0aCBleHRlbmRlZCBwcm9ncmFtX3RsYigpIGZ1bnRpb24KLQotICAgIFRoZSByZWNlbnRseSBleHRlbmRlZCBwcm9ncmFtX3RsYigpIGZ1bmN0aW9uIGhhZCBhIHByb2JsZW0gd2hlbgotICAgIG11bHRpcGxlIFRMQidzIGhhZCB0byBiZSBzZXR1cCAoZm9yIGV4YW1wbGUgd2l0aCA1MTJNQiBvZiBTRFJBTSkuIFRoZQotICAgIHZpcnR1YWwgYWRkcmVzcyB3YXMgbm90IGluY3JlbWVudGVkLiBUaGlzIHBhdGNoIGZpeGVzIHRoaXMgaXNzdWUKLSAgICBhbmQgaXMgdGVzdGVkIG9uIEthdG1haSB3aXRoIDUxMk1CIFNEUkFNLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDIwMzJlOGYxNDc1MWExYTc1MWIwOTI0MGE0ZjFjZjlmOGEyMDc3ZgotQXV0aG9yOiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEp1biAyMiAxNDo1ODowNCAyMDA3ICswMjAwCi0KLSAgICBbcHBjXSBGaXggYnVpbGQgYnJlYWthZ2UgZm9yIGFsbCBub24tNHh4IFBvd2VyUEMgdmFyaWFudHMuCi0KLSAgICAtIGFkYXB0IHRvIHRoZSBtb3JlIGdlbmVyaWMgRVhDRVBUSU9OX1BST0xPRyBhbmQgQ1JJVF9FWENFUFRJT04gbWFjcm9zCi0gICAgLSBtaW5vciA0eHggY2xlYW51cAotCi1jb21taXQgZDY3N2IzMjg1NWY1NzdhZTI2OTBkY2Q2NGExNzJjZGQ3MDZlMGZmYwotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglGcmkgSnVuIDIyIDEwOjM0OjEyIDIwMDcgKzAyMDAKLQotICAgIFtwYXRjaF0gYWRkIG5hbmRfaW5pdCgpIHByb3RvdHlwZSB0byBuYW5kLmgKLQotICAgIHNpbmNlIG5hbmRfaW5pdCgpIGlzIGV4cGVjdGVkIHRvIGJlIGNhbGxlZCBieSBvdGhlciBwYXJ0cyBvZiB1LWJvb3QsIHRoZXJlCi0gICAgc2hvdWxkIGJlIGEgcHJvdG90eXBlIGZvciBpdCBpbiBuYW5kLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4M2I0Y2ZhM2Q2MjlkZmYwMjY0MzY2MjYzYzVlOTRkOWE1MGFkODBiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVuIDIwIDE4OjE0OjI0IDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBzdHlsZSBjbGVhbnVwLiBSZWZyZXNoIENIQU5HRUxPRy4KLQotY29tbWl0IGIzZjllYzg2ZTM4ODIwN2ZkMDNkY2RmN2IxNDViOWVkMDgwYmYwMjQKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEp1biAxOSAxNzoyMjo0NCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCBib290c3RyYXAgY29tbWFuZCBmb3IgQU1DQyBTZXF1b2lhICg0NDBFUHgpIGV2YWwgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBhIGJvYXJkIGNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBJMkMgYm9vdHN0cmFwIEVFUFJPTQotICAgIHZhbHVlcy4gUmlnaHQgbm93IDUzMyBhbmQgNjY3TUh6IGFyZSBzdXBwb3J0ZWQgZm9yIGJvb3RpbmcgZWl0aGVyIHZpYSBOT1IKLSAgICBvciBOQU5EIEZMQVNILiBIZXJlIHRoZSB1c2FnZToKLQotICAgID0+IGJvb3RzdHJhcCA1MzMgbm9yCTt0byBjb25maWd1cmUgdGhlIGJvYXJkIGZvciA1MzNNSHogTk9SIGJvb3RpbmcKLSAgICA9PiBib290c3RyYXAgNjY3IG5hbmQJO3RvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgZm9yIDY2N01IeiBOTkFORCBib290aW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBkZjhhMjRjZGQzMDE1MTUwNWNmNTdiYmVlNTI4OWU5MWJmNTNiZDFiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKdW4gMTkgMTY6NDI6MzEgMjAwNyArMDIwMAotCi0gICAgW3BwYzR4eF0gRml4IHByb2JsZW0gd2l0aCBOQU5EIGJvb3Rpbmcgb24gQU1DQyBBY2FkaWEKLQotICAgIFRoZSBsYXRlc3QgY2hhbmdlcyBzaG93ZWQgYSBwcm9ibGVtIHdpdGggdGhlIGxvY2F0aW9uIG9mIHRoZSBOQU5ELVNQTAotICAgIGltYWdlIGluIHRoZSBPQ00gYW5kIHRoZSBpbml0LWRhdGEgYXJlYSAoaW5jbC4gY2FjaGUpLiBUaGlzIHBhdGNoCi0gICAgZml4ZXMgdGhpcyBwcm9ibGVtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODZiYTk5ZTM0MTk0Mzk0MDUyZDI0YzA0ZGM0MGQxMjYzZDI5YTI2ZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSnVuIDE5IDE2OjQwOjU4IDIwMDcgKzAyMDAKLQotICAgIFtwcGM0eHhdIENoYW5nZSBib2FyZC9hbWNjL2FjYWRpYS9jcHIuYyB0byBwbGwuYwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOGU1ODVmMDJmODJjMTdjYzY2Y2QyMjlkYmYwZmQzMDY2YmJiZjY1OAotQXV0aG9yOiBUc2lDaHVuZyBMaWV3IDxUc2ktQ2h1bmcuTGlld0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEp1biAxOCAxMzo1MDoxMyAyMDA3IC0wNTAwCi0KLSAgICBBZGRlZCBNNTMyOUFGRUUgYW5kIE01MzI5QkZFRSBQbGF0Zm9ybXMKLQotICAgIEFkZGVkIGJvYXJkL2ZyZWVzY2FsZS9tNTMyOWV2YiwgY3B1L21jZjUzMngsIGRyaXZlcnMvbmV0LAotICAgIGRyaXZlcnMvc2VyaWFsLCAgaW1tYXBfNTMyOS5oLCBtNTMyOS5oLCBtY2ZydGMuaCwKLSAgICBpbmNsdWRlL2NvbmZpZ3MvTTUzMjlFVkIuaCwgbGliX202OGsvaW50ZXJydXB0cy5jLCBhbmQKLSAgICBydGMvbWNmcnRjLmMKLQotICAgIE1vZGlmaWVkIENSRURJVFMsIE1BS0VGSUxFLCBNYWtlZmlsZSwgUkVBRE1FLCBjb21tb24vY21kX2JkaW5mby5jLAotICAgIGNvbW1vbi9jbWRfbWlpLmMsIGluY2x1ZGUvYXNtLW02OGsvYnl0ZW9yZGVyLmgsIGluY2x1ZGUvYXNtLW02OGsvZmVjLmgsCi0gICAgaW5jbHVkZS9hc20tbTY4ay9pby5oLCBpbmNsdWRlL2FzbS1tNjhrL21jZnRpbWVyLmgsCi0gICAgaW5jbHVkZS9hc20tbTY4ay9tY2Z1YXJ0LmgsIGluY2x1ZGUvYXNtLW02OGsvcHRyYWNlLmgsCi0gICAgaW5jbHVkZS9hc20tbTY4ay91LWJvb3QuaCwgbGliX202OGsvTWFrZWZpbGUsIGxpYl9tNjhrL2JvYXJkLmMsCi0gICAgbGliX202OGsvdGltZS5jLCBuZXQvZXRoLmMgYW5kIHJ0Yy9NYWtlZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogVHNpQ2h1bmcgTGlldyA8VHNpLUNodW5nLkxpZXdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA5MzE3MmYwOGQ2YWZiM2YzNGQ4YTJmMjZlZTBlZTg3NDI2MWNmMjcKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJU3VuIEp1biAxNyAxOTowNDoxMSAyMDA3ICswMjAwCi0KLSAgICBbZml4XSBlbWFpbCByZXBhcmF0aW9uCi0KLWNvbW1pdCAzNjY2YWZmZmU3YmFmODU5YzZhZTBjZTJiZWJiYzhhYjdlNTEyZGRjCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVN1biBKdW4gMTcgMTk6MDM6MjEgMjAwNyArMDIwMAotCi0gICAgW0ZJWF0gZml4IG1pY3JvYmxhemUgZmlsZSBwZXJtaXRpc3Npb24KLQotY29tbWl0IGU3Mzg0NmI3Y2YxZTI5YWU2MzViZjliYjU1NzAyNjk2NjNkZjJlZTUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxNSAxMTozMzo0MSAyMDA3ICswMjAwCi0KLSAgICBbcHBjNHh4XSBDaGFuZ2UgbHdtb241IHBvcnQgdG8gd29yayB3aXRoIHJlY2VudCA0NDAgZXhjZXB0aW9uIHJld29yawotCi0gICAgTm93IENPTkZJR180NDAgaGFzIHRvIGJlIGRlZmluZWQgaW4gYWxsIFBQQzQ0MCBib2FyZCBjb25maWcgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlZmEzNWNmMTJkOTE0ZDRjYWJhOTQyYWNkNWE2YzQ1ZjIxN2RlMzAyCi1BdXRob3I6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotRGF0ZToJRnJpIEp1biAxNSAxMToxOToyOCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IENsZWFuIHVwIDQ0MCBleGNlcHRpb25zIGhhbmRsaW5nCi0KLSAgICAtIEludHJvZHVjZWQgZGVkaWNhdGVkIHN3aXRjaGVzIGZvciBidWlsZGluZyA0NDAgYW5kIDQwNSBpbWFnZXMgcmVxdWlyZWQKLSAgICAgIGZvciA0NDAtc3BlY2lmaWMgbWFjaGluZSBpbnN0cnVjdGlvbnMgbGlrZSAncmZtY2knIGV0Yy4KLQotICAgIC0gRXhjZXB0aW9uIHZlY3RvcnMgbW92ZWQgdG8gdGhlIHByb3BlciBsb2NhdGlvbiAoX3N0YXJ0IG1vdmVkIGF3YXkgZnJvbQotICAgICAgdGhlIGNyaXRpY2FsIGV4Y2VwdGlvbiBoYW5kbGVyIHNwYWNlLCB3aGljaCBpdCBvY2N1cGllZCkKLQotICAgIC0gQ3JpdGljYWxJbnB1dCBub3cgc2VydmljZWQgKHdpdGggZGVmYXVsdCBoYW5kbGVyKQotCi0gICAgLSBNYWNoaW5lQ2hlY2sgcHJvcGVybHkgc2VydmljZWQgKGFkZGVkIGEgZGVkaWNhdGVkIGhhbmRsZXIgYW5kIHJldHVybgotICAgICAgc3Vicm91dGluZSkKLQotICAgIC0gT3ZlcmFsbCBjbGVhbnVwIG9mIGV4Y2VwdGlvbnMgZGVjbGFyZWQgd2l0aCBTVERfRVhDRVBUSU9OIG1hY3JvICh1bnVzZWQsCi0gICAgICB1bmhhbmRsZWQgYW5kIHRob3NlIG5vdCByZWxldmFudCBmb3IgNHh4IHdlcmUgZWxpbWluYXRlZCkKLQotICAgIC0gRWxpbWluYXRlZCBMaW51eCBsZWZ0b3ZlcnMsIHJlbW92ZWQgZGVhZCBjb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBCZXJuYWNraSA8Z2piQHNlbWloYWxmLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSYWZhbCBKYXdvcm93c2tpIDxyYWpAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGI3NjVmZmI3NzNmNWEzY2Q1YWE5NGVjNzZiNmEwNTI3NmI4Y2Q1YjIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxNSAwODoxODowMSAyMDA3ICswMjAwCi0KLSAgICBbcHBjNHh4XSBBZGQgaW5pdGlhbCBsd21vbjUgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGluaXRpYWwgc3VwcG9ydCBmb3IgdGhlIExpZWJoZXJyIGx3bW9uNSBib2FyZCBldXFpcHBlZAotICAgIHdpdGggYW4gQU1DQyA0NDBFUHggUG93ZXJQQy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg1ZjczNzM3NmQ1ZmYzZDVmMGQ0NWE4YjY1NzY4NjMyNmQxNzUzMDcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxNSAwNzozOTo0MyAyMDA3ICswMjAwCi0KLSAgICBbcHBjNHh4XSBFeHRlbmQgNDR4IEdQSU8gc2V0dXAgd2l0aCBkZWZhdWx0IG91dHB1dCBzdGF0ZQotCi0gICAgVGhlIGJvYXJkIGNvbmZpZyBhcnJheSBDRkdfNDQwX0dQSU9fVEFCTEUgZm9yIHRoZSBwcGM0NDAgR1BJTyBzZXR1cAotICAgIGlzIGV4dGVuZGVkIHdpdGggdGhlIGRlZmF1bHQgR1BJTyBvdXRwdXQgc3RhdGUgKGxldmVsKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGRiY2EyMDg1MThlNWU3ZjAxYTY0MjA1ODhkMWNkNmU2MGRiNzRjMmIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEp1biAxNCAxMToxNDozMiAyMDA3ICswMjAwCi0KLSAgICBbcHBjNHh4XSBFeHRlbmQgcHJvZ3JhbV90bGIoKSB3aXRoIHZpcnR1YWwgJiBwaHlzaWNhbCBhZGRyZXNzZXMKLQotICAgIE5vdyBwcm9ncmFtX3RsYigpIGFsbG93cyB0byBwcm9ncmFtIGEgVExCIChvciBtdWx0aXBsZSkgd2l0aAotICAgIGRpZmZlcmVudCB2aXJ0dWFsIGFuZCBwaHlzaWNhbCBhZGRyZXNzZXMuIFdpdGggdGhpcyBjaGFuZ2UsIG5vdyBvbmUKLSAgICBwaHlzaWNhbCByZWdpb24gKGUuZy4gU0RSQU0pIGNhbiBiZSBtYXBwZWQgMiB0aW1lcywgb25jZSB3aXRoIGNhY2hlcwotICAgIGRpYWJsZWQgYW5kIG9uY2Ugd2l0aCBjYWNoZXMgZW5hYmxlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDk5MTIxMjFmN2VkODA0ZWE1OGZkNjJmM2YyMzBiNWRjZmMzNTdkODgKLUF1dGhvcjogRGV0bGV2IFp1bmRlbCA8ZHp1QGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDIzIDE5OjAyOjQxIDIwMDcgKzAyMDAKLQotICAgIENoYW5nZSAncmVwZWF0YWJsZScgYXR0cmlidXRlIG9mIHNvbWUgY29tbWFuZHMgdG8gc2Vuc2libGUgdmFsdWVzLgotCi0gICAgTW9zdCBwcm9taW5lbnRseSB0aGlzIGNoYW5nZXMgJ2VyYXNlJyB0byBiZSBub24tcmVwZWF0YWJsZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERldGxldiBadW5kZWwgPGR6dUBkZW54LmRlPgotCi1jb21taXQgNWFmYjIwMjA5M2Y2YTAwMTc5N2RiOTJjZjY5NWI5M2E3MGVhOWFiNAotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CVdlZCBNYXkgMjMgMTg6NDc6NDggMjAwNyArMDIwMAotCi0gICAgRml4ICdydW4nIG5vdCB0byBjb250aW51ZSBhZnRlciBpbnRlcnJ1cHRlZCBjb21tYW5kCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDliNzQ2NGEyYzg4NjE0ZTEwNjFmNTA5YzQ4OTMwYTNkMjQwZDFhMzUKLUF1dGhvcjogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBKdW4gMTEgMTU6MTQ6MjQgMjAwNyArMDIwMAotCi0gICAgVVNCOiBUaGlzIHBhdGNoIGZpeCByZWFkbCBpbiBvaGNpIHN3YXAgcmVnIGFjY2Vzcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA4Zjg0MTZmYWRhOWZhZjk0YjlhOTJmMjFmZTYwMDA2NDNjYjUyMWQ1Ci1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglGcmkgSnVuIDggMTQ6NTI6MjIgMjAwNyArMDIwMAotCi0gICAgVFFNNTIwMDogQWRkIEZsYXQgRGV2aWNlIFRyZWUgc3VwcG9ydCwgdXBkYXRlIGRlZmF1bHQgZW52LiBhY2NvcmRpbmdseS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbiBXcm9iZWwgPHdyckBzZW1paGFsZi5jb20+Ci0gICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA5MDQ1ZjMzYzAyM2Y2OTg2NjBhMmU0NWQxYjIxOTRjMDcxMWFiZWJjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDggMTA6MjQ6NTggMjAwNyArMDIwMAotCi0gICAgRml4IGNvbmZpZyBwcm9ibGVtcyBvbiBTQzMgYm9hcmQ7IG1ha2UgaWRlX3Jlc2V0X3RpbWVvdXQgd29yay4KLQotY29tbWl0IGZiYTNmYjA0NDliOGE1NDU0MmFlZDFlNzI5ZGU3NmU3ZjVhMmZmMWIKLUF1dGhvcjogQmVub8OudCBNb25pbiA8Ym1vbmluQGFkZW5lby5ldT4KLURhdGU6CUZyaSBKdW4gOCAwOTo1NToyNCAyMDA3ICswMjAwCi0KLSAgICBbUEFUQ0hdIGZpeCBncGlvIHNldHRpbmcgd2hlbiB1c2luZyBDRkdfNDQwX0dQSU9fVEFCTEUKLQotICAgIFNldCB0aGUgY29ycmVjdCB2YWx1ZSBpbiBHUElPeF9UQ1Igd2hlbiBjb25maWd1cmluZyB0aGUgZ3BpbwotICAgIHdpdGggQ0ZHXzQ0MF9HUElPX1RBQkxFLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVub2l0IE1vbmluIDxibW9uaW5AYWRlbmVvLmV1PgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGY1MzllZGMwNzZjZmU1MmJmZjkxOWRkNTEyYmE4ZDdhZjBlMjIwOTIKLUF1dGhvcjogVmFkaW0gQmVuZGVidXJ5IDx2YmVuZGViQGdvb2dsZS5jb20+Ci1EYXRlOglUaHUgTWF5IDI0IDE1OjUyOjI1IDIwMDcgLTA3MDAKLQotICAgIGNvc21ldGljIGNoYW5nZXMgdG8gYmNtNTcweCBkcml2ZXIKLQotICAgIFRoaXMgaXMgYSBjb3NtZXRpYyBvbmx5IGNoYW5nZXMgc3VibWlzc2lvbi4KLSAgICBJdCBhZmZlY3RzIGZpbGVzIHJlbGV2YW50IHRvIGJjbTU3MHggZHJpdmVyLgotICAgIHRoZSBjb21tYW5kcyB1c2VkIHRvIGdlbmVyYXRlIHRoaXMgY2hhbmdlIHdhcwotCi0gICAgY2QgZHJpdmVycwotICAgIExpbmRlbnQgLXBjcyAtbDgwICBiY201NzB4LmMgICBiY201NzB4X2xtLmggICBiY201NzB4X21tLmgJdGlnb24zLmMgIHRpZ29uMy5oCi0KLSAgICBUaGUgQk1XIHRhcmdldCAodGhlIG9ubHkgb25lIHVzaW5nIHRoaXMgY2hpcCBzbyBmYXIpIGJ1aWxkcyBjbGVhbmx5LCB0aGUKLSAgICBgYmVmb3JlIGFuZCBhZnRlcicgZ2VuZXJhdGVkIG9iamVjdCBmaWxlcyBmb3IgZHJpdmVycy9iY201NzB4LmMgYW5kCi0gICAgZHJpdmVycy90aWdvbjMubyBhcmUgaWRlbnRpY2FsIGFzIHJlcG9ydGVkIGJ5IG9iamR1bXAgLWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFZhZGltIEJlbmRlYnVyeSA8dmJlbmRlYkBnb29nbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgotCi1jb21taXQgNzI1NjcxY2NkMmNkMDRjOWViYzUwYzllNWE5NGRkOGNiYWRlNjZiNwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEp1biA2IDE2OjI2OjU2IDIwMDcgKzAyMDAKLQotICAgIENvZGluZyBTdHlsZSBjbGVhbnVwOyBnZW5lcmF0ZSBuZXcgQ0hBTkdFTE9HIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMTlkNzYzYzM1ZTBiNTU2OGVhZjBiOGFkYmY3YTY4Y2NmZTdmYTI0MwotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJV2VkIEp1biA2IDExOjQ5OjQ0IDIwMDcgKzAyMDAKLQotICAgIFRSQUIsIFVTQjogdXBkYXRlIHRyYWIgYm9hcmQgY29uZmlndXJhdGlvbiBmb3IgdXNlIG9mIGdlbmVyaWMgb2hjaSBkcml2ZXIKLQotY29tbWl0IGRhY2U0NWFjZDFjMTM1N2RhYTkzMjIwOTlkMDdjOWE5ZTA4YjAwMjQKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVdlZCBKdW4gNiAxMTo0OTo0MyAyMDA3ICswMjAwCi0KLSAgICBVU0I6IG9oY2kgZml4ZXMgYW5kIGNsZWFudXAgZm9yIHBwYzR4eCBhbmQgeW9zZW1pdGUgYm9hcmQuCi0KLWNvbW1pdCA3MjY1NzU3MGI2MTYzNWM3NGZhMGMzZjBlOWU3ZDA2NzFhOWQwOGRmCi1BdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVuIDYgMTE6NDk6NDMgMjAwNyArMDIwMAotCi0gICAgVVNCOiBvaGNpIGZpeGVzIGFuZCBjbGVhbnVwIGZvciBtcGM1eHh4IGFuZCBJY2VDdWJlIGJvYXJkIGNvbmZpZwotCi1jb21taXQgZmM0M2JlNDc4ZjJhYTM3Y2UzOGFjZDg1MzU1MDM4ODY2ZTQxNjJhZgotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJV2VkIEp1biA2IDExOjQ5OjM1IDIwMDcgKzAyMDAKLQotICAgIFVTQi9PSENJOiBlbmRpYW5uZXNzIGNsZWFudXAgaW4gdGhlIGdlbmVyaWMgb2hjaSBkcml2ZXIKLQotY29tbWl0IGM0NDBiZmU2ZDZkOTJkNjY0NzhhN2U4NDQwMmIzMWY0ODQxMzYxN2IKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIEp1biA2IDExOjQyOjEzIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciBBTUNDIEFjYWRpYSAoNDA1RVopIGV2YWwgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBOQU5EIGJvb3Rpbmcgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgQWNhZGlhIGV2YWwgYm9hcmQuCi0KLSAgICBQbGVhc2UgbWFrZSBzdXJlIHRvIGNvbmZpZ3VyZSBqdW1wZXIgSjcgdG8gcG9zaXRpb24gMi0zIHdoZW4gYm9vdGluZwotICAgIGZyb20gTk9SLCBhbmQgdG8gcG9zaXRpb24gMS0yIHdoZW4gYm9vdGluZyBmb3IgTkFORC4KLQotICAgIEkgYWxzbyBhZGRlZCBhIGJvYXJkIGNvbW1hbmQgdG8gY29uZmlndXJlIHRoZSBJMkMgYm9vdHN0cmFwIEVFUFJPTQotICAgIHZhbHVlcy4gUmlnaHQgbm93IG9ubHkgMjY3TUh6IGlzIHN1cHBvcnQgZm9yIGJvb3RpbmcgZWl0aGVyIHZpYSBOT1IKLSAgICBvciBOQU5EIEZMQVNILiBIZXJlIHRoZSB1c2FnZToKLQotICAgID0+IGJvb3RzdHJhcCAyNjcgbm9yCTt0byBjb25maWd1cmUgdGhlIGJvYXJkIGZvciAyNjdNSHogTk9SIGJvb3RpbmcKLSAgICA9PiBib290c3RyYXAgMjY3IG5hbmQJO3RvIGNvbmZpZ3VyZSB0aGUgYm9hcmQgZm9yIDI2N01IeiBOTkFORCBib290aW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxODEzNTEyNWY5MDk5NDhiODVkMWQ2ODgxYWI0YWMwZWZiNGExYzU4Ci1BdXRob3I6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgotRGF0ZToJV2VkIEp1biA2IDEwOjA4OjE0IDIwMDcgKzAyMDAKLQotICAgIEZpbGVzIGluY2x1ZGUvbGludXgvYnl0ZW9yZGVyL3tiaWcsbGl0dGxlfV9lbmRpYW4uaCBkZWZpbmUKLSAgICBfX0JJR19FTkRJQU4gYW5kIF9fTElUVExFX0VORElBTi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgotCi1jb21taXQgYTgxZDFjMGI4NWIxM2U5ZDQ1ZjJkODdkZTk2YTUxYTZlMGVmMGY4MgotQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biA2IDEwOjA4OjE0IDIwMDcgKzAyMDAKLQotICAgIEFkZCBVU0IgUENJLU9IQ0ksIFVTQiBrZXlib2FyZCBhbmQgZXZlbnQgcG9sbCBzdXBwb3J0IHRvIHRoZQotICAgIE1QQzg2NDFIUENOIGJvYXJkIGNvbmZpZyBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRkYWUxNGNlOGZiZGYzODAwMTdkYzU0ZjE3MjIxOGU3ZDJhY2M4ODkKLUF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gNiAxMDowODoxNCAyMDA3ICswMjAwCi0KLSAgICBVU0IgUENJLU9IQ0ksIGludGVycnVwdCBwaXBlIGFuZCB1c2IgZXZlbnQgcG9sbCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZGVkIFVTQiBQQ0ktT0hDSSBjaGlwcyBzdXBwb3J0LCBpbnRlcnJ1cHQgcGlwZSBzdXBwb3J0Ci0gICAgYW5kIHVzYiBldmVudCBwb2xsIHN1cHBvcnQuIEZvciBzdXBwb3J0aW5nIHRoZSBVU0IgaW50ZXJydXB0IHBpcGUsIHRoZQotICAgIGdsb2JlIHVyYl9wcml2IGlzIG1vdmVkIHRvIHB1cmIgaW4gZWQgc3RydWN0LiBOb3csIHdlIGNhbiBwcm9jZXNzCi0gICAgc2V2ZXJhbCB1cmJzIGF0IG9uZSB0aW1lLiBUaGUgaW50ZXJydXB0IHBpcGUgc3VwcG9ydCBjb2RlcyBhcmUgcG9ydGVkCi0gICAgZnJvbSBMaW51eCBrZXJuZWwgMi40LgotCi0gICAgU2lnbmVkLW9mZi1ieTogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGZkY2ZhYTFiMDIyNjhiMjg5OWUzNzRiMzVhZGY5MzZjOTExYTQ3ZWIKLUF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gNiAxMDowODoxMyAyMDA3ICswMjAwCi0KLSAgICBVU0IgZXZlbnQgcG9sbCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgVVNCIGV2ZW50IHBvbGwgc3VwcG9ydCwgd2hpY2ggY291bGQgYmUgdXNlZCBpbiB1c2JrYmQKLSAgICBhbmQgb3RoZXIgdXNiIGRldmljZXMgZHJpdmVyIHdoZW4gdGhlIGFzeW5jaHJvbm91cyBpbnRlcnJ1cHQKLSAgICBwcm9jZXNzaW5nIGlzIHN1cHBvcnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20KLQotY29tbWl0IDlhMWQwMGZhNDdjMWUwNWUzZmRiNjBiMzMyMTNhZjRlMThkNGMxOGUKLUF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Ci1EYXRlOglXZWQgSnVuIDYgMTA6MDg6MTIgMjAwNyArMDIwMAotCi0gICAgSVNQMTE2eDogZGVsYXkgZm9yIGNyYXBweSBVU0Iga2V5cwotCi0gICAgVXNpbmcgc29tZSAodmVyeSkgc2xvdyBVU0Iga2V5cyBjYXVzZSB0aGUgVVNCIGhvc3QgY29udHJvbGxlciBidWZmZXJzCi0gICAgYXJlIG5vdCByZWFkeSB0byBiZSByZWFkIGJ5IHRoZSBDUFUgc28gd2UgbmVlZCBhbiBleHRyYSBkZWxheSBiZWZvcmUKLSAgICByZWFkaW5nIHRoZSBVU0Igc3RvcmFnZSBkYXRhLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Ci0KLWNvbW1pdCAwOTQ0NDE0MzY3MGM5YzIyNDNjYjdhYmE5ZjcwYjM3MTNkMzNiZWQxCi1BdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglXZWQgSnVuIDYgMTA6MDg6MTIgMjAwNyArMDIwMAotCi0gICAgQ2hhbmdlIGR1cGxpY2F0ZSB1c2JfY3B1X2luaXRfZmFpbCB0byB1c2JfYm9hcmRfaW5pdF9mYWlsCi0KLSAgICBUaGFua3MgdG8gTGlldyBUc2kgQ2h1bmcgPFRzaS1jaHVuZy5MaWV3QGZyZWVzY2FsZS5jb20+IGZvciBwb2ludGluZwotICAgIHRoaXMgb3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IDMyOTIyY2RjNDcwZmRmZDM5YmVhMGMxYzRmNTgyZDNmYjM0MDQyMWUKLUF1dGhvcjogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdW4gNSAxMjozMDo1MiAyMDA3IC0wNTAwCi0KLSAgICBtcGM4NjQxIGltYWdlIHNpemUgY2xlYW51cAotCi0gICAgZTYwMCBkb2VzIG5vdCBoYXZlIGEgYm9vdHBnIHJlc3RyaWN0aW9uLgotICAgIE1vdmUgdGhlIHZlcnNpb24gc3RyaW5nIHRvIGJlZ2lubmluZyBvZiBpbWFnZSBhdCBmZmYwMDAwMC4KLSAgICBSZXNldHZlYy5TIGlzIG5vdCBuZWVkZWQuCi0gICAgVXBkYXRlIGZsYXNoIGNvcHkgaW5zdHJ1Y3Rpb25zLgotICAgIEFkZCB0ZnRwZmxhc2ggZW52IHZhcmlhYmxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlM2NiZTFmOTNjNTcyMmY4ZWJiYWQ0NjhlMzBjMDY5YTJiNTExMDk3Ci1BdXRob3I6IEJlbm/DrnQgTW9uaW4gPGJtb25pbkBhZGVuZW8uZXU+Ci1EYXRlOglNb24gSnVuIDQgMDg6MzY6MDUgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBGaXggcHBjNHh4IGJvb3RzdHJhcCBsZXR0ZXIgZGlzcGxheWVkIG9uIHN0YXJ0dXAKLQotICAgIFRoZSBhdHRhY2hlZCBwYXRjaCBpcyBtYWlubHkgY29zbWV0aWMsIGFsbG93aW5nIHUtYm9vdCB0bwotICAgIGRpc3BsYXkgdGhlIGNvcnJlY3QgYm9vdHN0cmFwIG9wdGlvbiBsZXR0ZXIgYWNjb3JkaW5nIHRvIHRoZQotICAgIGRhdGFzaGVldHMuCi0KLSAgICBUaGUgb3JpZ2luYWwgcGF0Y2ggd2FzIGV4dGVuZGVkIHdpdGggNDA1RVogc3VwcG9ydCBieSBTdGVmYW4KLSAgICBSb2VzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEJlbm9pdCBNb25pbiA8Ym1vbmluQGFkZW5lby5ldT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1YjEzMTNmYjI3NThmZmNlOGI2MjQ0NTdmNzc3ZDhjYzY3MDk2MDhkCi1BdXRob3I6IE5pa2l0YSBWLiBZb3VzaGNoZW5rbyA8eW91c2hAZGViaWFuLm9yZz4KLURhdGU6CVdlZCBNYXkgMjMgMTI6NDU6MTkgMjAwNyArMDQwMAotCi0gICAgZml4IGNvbXBpbGF0aW9uIHByb2JsZW0gZm9yIG1wYzgzNDlpdHggQ0ZHX1JBTUJPT1QKLQotICAgIEN1cnJlbnQgaW5jbHVkZS9jb25maWdzL01QQzgzNDlJVFguaCBkb2VzIGNvbnRhaW4gc29tZSBzdXBwb3J0IGZvciBidWlsZGluZwotICAgIGltYWdlIHRoYXQgd2lsbCBiZSBzdGFydGVkIGZyb20gbWVtb3J5ICh3aXRob3V0IHB1dHRpbmcgaW4gaW50byBmbGFzaCkuCi0gICAgSXQgY291bGQgYmUgdHJpZ2dlcmVkIGJ5IGJ1aWxkaW5nIHdpdGggVEVYVF9CQVNFIHNldCB0byBhIGxvdyB2YWx1ZS4KLQotICAgIEhvd2V2ZXIsIHRoaXMgc3VwcG9ydCBpcyBpbmNvbXBsZXRlOiB1c2luZyBvZiBsb3cgVEVYVF9CQVNFIGNhdXNlcwotICAgIGRlZmluaW5nIGNvbmZpZ3VyYXRpb24gbWFjcm9zIGluIGluY29uc2lzdGVudCB3YXksIHdoaWNoIGxhdGVyIGxlYWRzCi0gICAgdG8gY29tcGlsYXRpb24gZXJyb3JzLiBJbiBwYXJ0aWN1bGFyLiBmbGFzaCBzdXBwb3J0IGlzIGJlaW5nIGRpc2FibGVkLAotICAgIGJ1dCB0aGVuIGZsYXNoIHN0cnVjdHVyZXMgZ2V0IHJlZmVyZW5jZWQuCi0KLSAgICBUaGlzIHBhdGNoIGZpeGVzIHRoaXMsIG1ha2luZyBpdCBwb3NzaWJsZSB0byBidWlsZCB3aXRoIGxvdyBURVhUX0JBU0UuCi0KLSAgICBTaWduZWQtT2ZmLUJ5OiBOaWtpdGEgWW91c2hjaGVua28gPHlvdXNoQGRlYmlhbi5vcmc+Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOGEzNjRmMDk3MGRlNDk5NDlkNjM1ZTYwYWNjZjQ2M2M2NDQzZWY4YwotQXV0aG9yOiBOaWtpdGEgVi4gWW91c2hjaGVua28gPHlvdXNoQGRlYmlhbi5vcmc+Ci1EYXRlOglXZWQgTWF5IDIzIDEyOjQ1OjI1IDIwMDcgKzA0MDAKLQotICAgIGFkZCBtaXNzaW5nICdjb25zb2xlJyB2YXIgdG8gZGVmYXVsdCBtcGM4MzQ5aXR4IGNvbmZpZwotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE4ZDE1NmViMzdjOTBmYWRjOGVjN2E4MWEzYjg5MTc2MTYxZjg1YjcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxIDE2OjE4OjE3IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIG1pc3NpbmcgZmlsZSBmb3IgQmFtYm9vIE5BTkQgYm9vdGluZyBzdXBwb3J0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxNTVhOTY0NzhhMDg4MWU2ZGE5NmNiYmJjZjM0OTUyZDZhM2IxYjRiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gMSAxNTo1ODoxOSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFVuZG8gU2VxdW9pYSBwYXRjaCBmb3IgZHluYW1pYyBFQkMgc3BlZWQgc3VwcG9ydCBvZiA4M01IegotCi0gICAgVGhpcyBwYXRjaCB1bmRvZXMgdGhlIHBhdGNoIGJ5IEplZmYgTWFubiB3aXRoIGNvbW1pdC1pZCBhZGE0Njk3ZC4gQXMKLSAgICBzdWdnZXN0ZWQgYnkgQU1DQyBpdCBpcyBub3QgcmVjb21tZW5kZWQgdG8gZHluYW1pY2FsbHkgY2hhbmdlIHRoZSBFQkMKLSAgICBzcGVlZCBhZnRlciBib290dXAuIFNvIHdlIHVuZG8gdGhpcyBjaGFuZ2UgdG8gYmUgb24gdGhlIHNhZmUgc2lkZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDlkOTA5NjA0M2U4ZjcxM2Q0YmYxNzQzZDMyZTE0NTllNmExMTY0NGIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxIDE1OjI5OjA0IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIFNlcXVvaWEgTkFORCBib290aW5nIHN1cHBvcnQgd2l0aCBFQ0MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGNmOTU5YzdkNjY4NzU2N2MzMDhlMzY2ZTk1ODFlMWE1YWZmNWNjNWIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxIDE1OjI3OjExIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIE5BTkQgYm9vdGluZyBzdXBwb3J0IGZvciBBTUNDIEJhbWJvbyAoNDQwRVApIGV2YWwgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBOQU5EIGJvb3Rpbmcgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgQmFtYm9vIGV2YWwgYm9hcmQuCi0gICAgU2luY2UgdGhlIE5BTkQtU1BMIGJvb3QgaW1hZ2UgaXMgbGltaXRlZCB0byA0a2J5dGVzLCB0aGlzIHZlcnNpb24KLSAgICBvbmx5IHN1cHBvcnRzIHRoZSBvbmJvYXJkIDY0TUJ5dGVzIG9mIEREUi4gVGhlIERJTU0gbW9kdWxlcyBjYW4ndCBiZQotICAgIHN1cHBvcnRlZCwgc2luY2UgdGhlIHNldHVwIGNvZGUgZm9yIEkyQyBESU1NIGF1dG9kZXRlY3Rpb24gYW5kCi0gICAgY29uZmlndXJhdGlvbiBpcyB0b28gYmlnIGZvciB0aGlzIE5BTkQgYm9vdGxvYWRlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDQyYmU1NmY1M2M4YjEwNzg2OGU2MTI1Yzg1MjRhZTg0MjkzZTk1YTcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxIDE1OjIzOjA0IDIwMDcgKzAyMDAKLQotICAgIE5BTkQ6IEFkZCBFQ0Mgc3VwcG9ydCB0byBOQU5EIGJvb3Rpbmcgc3VwcG9ydCBpbiBuYW5kX3NwbC9uYW5kX2Jvb3QuYwotCi0gICAgVGhlIFUtQm9vdCBOQU5EIGJvb3Rpbmcgc3VwcG9ydCBpcyBub3cgZXh0ZW5kZWQgdG8gc3VwcG9ydCBFQ0MKLSAgICB1cG9uIGxvYWRpbmcgb2YgdGhlIE5BTkQgVS1Cb290IGltYWdlLgotCi0gICAgVGVzdGVkIG9uIEFNQ0MgU2VxdW9pYSAoNDQwRVB4KSBhbmQgQmFtYm9vICg0NDBFUCkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhNDcxZGIwN2ZiYjY1YTg0MWZmYzlmNGYxMTI1NjJiOTQ1MjMwZjk4Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gMSAxNToxOToyOSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFByZXBhcmUgQmFtYm9vIHBvcnQgZm9yIE5BTkQgYm9vdGluZyBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlICJub3JtYWwiIEJhbWJvbyBOT1IgYm9vdGluZyBwb3J0LCBzbwotICAgIHRoYXQgaXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBjb21pbmcgc29vbiBOQU5EIGJvb3RpbmcKLSAgICBCYW1ib28gcG9ydC4KLQotICAgIEl0IGFsc28gZW5hYmxlcyB0aGUgMm5kIE5BTkQgZmxhc2ggb24gdGhlIEJhbWJvby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDUzYWQwMjEwM2ZiOGJlNDEzOGE5OTM3YThhYjkxZmNkZmY3YjQ5ODcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxIDE1OjE2OjU4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIGluX2JlMzIoKSBmdW5jdGlvbnMgYW5kIGZyaWVuZHMgdG8gbGF0ZXN0IExpbnV4IHZlcnNpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDkxZGEwOWNmYmNlMGMxZGUwNWQ2ZDg0YWE4MzYzZDY2NmZhN2VhM2MKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEp1biAxIDE1OjE1OjEyIDIwMDcgKzAyMDAKLQotICAgIE5BTkQ6IEFkZCBoYXJkd2FyZSBFQ0Mgc3VwcG9ydCB0byB0aGUgUFBDNHh4IE5BTkQgZHJpdmVyIG5kZmMuYwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGhhcmR3YXJlIEVDQyBzdXBwb3J0IHRvIHRoZSBOREZDIGRyaXZlci4gSXQgYWxzbwotICAgIGNoYW5nZXMgdGhlIHJlZ2lzdGVyIGFjY2VzcyBmcm9tIHVzaW5nIHRoZSAic2ltcGxlIiBpbjMyL291dDMyCi0gICAgZnVuY3Rpb25zIHRvIHRoZSBpbl9iZTMyL291dF9iZTMyIGZ1bmN0aW9ucywgd2hpY2ggbWFrZSBzdXJlCi0gICAgdGhhdCB0aGUgYWNjZXNzIGlzIGNvcnJlY3RseSBzeW5jZWQuIFRoaXMgaXMgdGhlIG9ubHkgcmVjb21tZW5kZWQKLSAgICBhY2Nlc3MgdG8gU29DIHJlZ2lzdGVycyBpbiB0aGUgY3VycmVudCBMaW51eCBrZXJuZWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxN2I1ZTg2MjI4N2NjYTc2ZjE5ZGNmOGI3NDFlNjFhN2QwNjYxN2YyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gMSAxNToxMjoxNSAyMDA3ICswMjAwCi0KLSAgICBOQU5EOiBVcGRhdGUgbmFuZF9lY2MuYyB0byBsYXRlc3QgTGludXggdmVyc2lvbgotCi0gICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSBuYW5kX2VjYyBjb2RlIHRvIHRoZSBsYXRlc3QgTGludXggdmVyc2lvbi4KLSAgICBUaGUgbWFpbiByZWFzb24gZm9yIHRoaXMgaXMgdGhlIG1vcmUgY29tcGFjdCBjb2RlLiBUaGlzIG1ha2VzCi0gICAgaXQgcG9zc2libGUgdG8gaW5jbHVkZSB0aGUgRUNDIGNvZGUgaW50byB0aGUgTkFORCBib290bG9hZGVyCi0gICAgaW1hZ2UgKE5BTkRfU1BMKSBmb3IgUFBDNHh4LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDJkNDMyNzYwZDIxOTlkMGU4NTU4ZmRkOWQxNzg5YjgxMzFhYmNmNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSnVuIDEgMTU6MDk6NTAgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiA0NHggRERSIGRyaXZlciBjb2RlIGNsZWFudXAgYW5kIHNtYWxsIGZpeCBmb3IgQmFtYm9vCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlNGJiZWQyODAzYTJhZDA1MjFjNzM2MmY1ZDNlMDY1Zjk5YWJhZWRjCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gMSAxMzo0NToyNCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IENoYW5nZSBMdWFuIGNvbmZpZyBmaWxlIHRvIHN1cHBvcnQgRUNDCi0KLSAgICBXaXRoIHRoZSB1cGRhdGVkIDQ0eCBERFIyIGRyaXZlciB0aGUgTHVhbiBib2FyZCBub3cgc3VwcG9ydHMKLSAgICBFQ0MgZ2VuZXJhdGlvbiBhbmQgY2hlY2tpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3MTg3ZGI3MzQ5MWM4ZGUwZmI1NmVmYjVlNTEzNGJhNWVjNDQzMDg5Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKdW4gMSAxMzo0NTowMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSA0NHhfc3BkX2RkcjIgY29kZSAoNDQwU1AvNDQwU1BlKQotCi0gICAgQWRkIGNvbmZpZyBvcHRpb24gZm9yIDE4MCBkZWdyZWUgYWR2YW5jZSBjbG9jayBjb250cm9sIGFzIG5lZWRlZAotICAgIGZvciB0aGUgQU1DQyBMdWFuIGV2YWwgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlZTE1Mjk4MzhhYmJmYWEzNWYxNGUzZmZiZWFhYmE2OTMxNTk0NzVmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgTWF5IDMxIDE3OjIwOjA5IDIwMDcgKzAyMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBTVFggR1AzU1NBIChzdHhzc2EpIEJvYXJkIHdpdGggNCBNaUIgZmxhc2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNzA0OTI4OGZiMWYxNmYxYjMxNzE0MDIyNmNkZWJkMDdiZDQxNjM5NQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJU3VuIE1heSAyNyAxNzoyNjo0NiAyMDA3ICswMjAwCi0KLSAgICBNb3Rpb24tUFJPOiBDb2RlIGNsZWFudXAsIGZpeCBvZiBhIHR5cG8gaW4gT0ZfU1RET1VUX1BBVEguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgNDUyMGZkNGQyYzQ1MGRhNDk2MzcyMTZhYTBlNTM3MzliNjFjNjBhYwotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJU3VuIE1heSAyNyAxNzowNjozNiAyMDA3ICswMjAwCi0KLSAgICBNb3Rpb24tUFJPOiBBZGQgc3VwcG9ydCBmb3IgcmVkdW5kYW50IGVudmlyb25tZW50LgotCi0gICAgRW5hYmxlIHJlZHVuZGFudCBlbnZpcm9ubWVudCwgYWRkIGEgTVREIHBhcnRpdGlvbiBmb3IgaXQ7IGFsc28gYWRkIGVudi4KLSAgICB2YXJpYWJsZSBjb21tYW5kIGZvciBwYXNzaW5nIE1URCBwYXJ0aXRpb25zIHRvIHRoZSBrZXJuZWwgY29tbWFuZCBsaW5lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IGEyNmVhYmVlYzMxNzQ2ZjA2ZDMwOTEwMzY5MDg5MjgwNTY5NmUzNDQKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVN1biBNYXkgMjcgMTc6MDU6MTEgMjAwNyArMDIwMAotCi0gICAgTW90aW9uLVBSTzogQ2hhbmdlIG1heGltdW0gY29uc29sZSBidWZmZXIgc2l6ZSBmcm9tIDI1NiB0byAxMDI0IGJ5dGVzLgotCi0gICAgQWxsb3cgcGFzc2luZyBsb25nZXIgY29tbWFuZCBsaW5lIHRvIHRoZSBrZXJuZWwgLSB1c2VmdWwgZXNwZWNpYWxseQotICAgIGZvciBwYXNzaW5nIE1URCBwYXJ0aXRpb24gbGF5b3V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogUGlvdHIgS3J1c3p5bnNraSA8cHBrQHNlbWloYWxmLmNvbT4KLSAgICBBY2tlZC1ieTogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLQotY29tbWl0IDkxNjBiOTZmNzE0ODNhMTE2ZGU4MWM2ODk4NWU4ZWUzMDZkMzY3NjQKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVN1biBNYXkgMjcgMTc6MDQ6MTggMjAwNyArMDIwMAotCi0gICAgRml4OiBBZGQgbWlzc2luZyBOVUxMIHRlcm1pbmF0aW9uIGluIHN0cmluZ3MgZXhwYW5kZWQgYnkgbWFjcm9zIHBhcnNlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+Ci0gICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA2MzBlYzg0YWVmNzIyOGZjMWRiZmIzOGRlYzc4NTQxNDAzYTc4NmNkCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglTdW4gTWF5IDI3IDE3OjAzOjM3IDIwMDcgKzAyMDAKLQotICAgIE1vdGlvbi1QUk86IFVwZGF0ZSBFRVBST00ncyBwYWdlIHdyaXRlIGJpdHMgYW5kIHdyaXRlIGRlbGF5LgotCi0gICAgQ2hhbmdlIEVFUFJPTSBjb25maWd1cmF0aW9uIGFjY29yZGluZyB0byB0aGUgZGF0YXNoZWV0OiAiVGhlIDI0QzAxQSBhbmQgMjRDMDJBCi0gICAgaGF2ZSBhIHBhZ2Ugd3JpdGUgY2FwYWJpbGl0eSBvZiB0d28gYnl0ZXMiLCBhbmQgIlRoaXMgZGV2aWNlIG9mZmVycyBmYXN0ICgxbXMpCi0gICAgYnl0ZSB3cml0ZSIuIEFkZCAzbXMgb2YgZXh0cmEgZGVsYXkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgotICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYzAwMTI1ZTA3YzFlYmMxMjViYWI0MGUxZTE4YmNlZWQ4YmUwYzE2MgotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJU3VuIE1heSAyNyAxNjo1ODo0NSAyMDA3ICswMjAwCi0KLSAgICBNUEM1WFhYLCBNb3Rpb24tUFJPOiBGaXggUEhZIGluaXRpYWxpemF0aW9uIHByb2JsZW0uCi0KLSAgICBBZnRlciBiZWluZyByZXNldCBpbiBtcGM1eHh4X2ZlY19pbml0X3BoeSgpLCBQSFkgZ29lcyBpbnRvIEZYIG1vZGUsIGluIHdoaWNoCi0gICAgbmV0d29ya2luZyBkb2VzIG5vdCBmdW5jdGlvbi4gVGhpcyBjb21taXQgc3dpdGNoZXMgUEhZIHRvIFRYIG1vZGUgYnkgY2xlYXJpbmcKLSAgICB0aGUgRlhfU0VMIGJpdCBvZiBNb2RlIENvbnRyb2wgUmVnaXN0ZXIuIEl0IGFsc28gcmV2ZXJzZXMgY29tbWl0Ci0gICAgMDA4ODYxYTJmM2VmMmMwNjI3NDRkNzMzNzg3YzdlNTMwYTFiODc2MSwgaS5lLiwgYSB0ZW1wb3Jhcnkgd29ya2Fyb3VuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgOTNiNzhmNTM0YTZlNzA4YjRjZjFhNGZmYjRkODQzOGM2N2EwMDdkYgotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJU3VuIE1heSAyNyAxNjo1NzoxNSAyMDA3ICswMjAwCi0KLSAgICBNb3Rpb24tUFJPOiBBZGQgc3VwcG9ydCBmb3IgdGhlIHRlbXBlcmF0dXJlIHNlbnNvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBpb3RyIEtydXN6eW5za2kgPHBwa0BzZW1paGFsZi5jb20+Ci0gICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCBjNzVlNjM5NjMwY2MxMzJkYzE5Y2QxZWNkYTU5MjJjMGRiMGJmYmJhCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglTdW4gTWF5IDI3IDE2OjU1OjIzIDIwMDcgKzAyMDAKLQotICAgIE1vdGlvbi1QUk86IEFkZCBkaXNwbGF5aW5nIG9mIENQTEQgcmV2aXNpb24gaW5mb3JtYXRpb24gZHVyaW5nIGJvb3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYW4gV3JvYmVsIDx3cnJAc2VtaWhhbGYuY29tPgotICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYzk5NTEyZDZiZDM5NzNmMDFjYTJmYzQ4OTZkODI5YjQ2ZTY4ZjE1MAotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJU3VuIE1heSAyNyAxNjo1Mzo0MyAyMDA3ICswMjAwCi0KLSAgICBNUEM1eHh4OiBDaGFuZ2UgbmFtZXMgb2YgZGVmaW5lcyByZWxhdGVkIHRvIElQQiBhbmQgUENJIGNsb2Nrcy4KLQotICAgIEJvdGggQ0ZHX1BDSVNQRUVEXzY2IGFuZCBDRkdfSVBCU1BFRURfMTMzIGFyZSBtaXNuYW1lZCwgYXMgZGVmaW5pbmcKLSAgICB0aGVtIGRvZXMgbm90IGNhdXNlIFBDSSBvciBJUEIgY2xvY2tzIHRvIHJ1biBhdCB0aGUgc3BlY2lmaWVkIHNwZWVkLgotICAgIEluc3RlYWQsIHRoZXkgY29uZmlndXJlIGRpdmlzb3JzIHVzZWQgdG8gY2FsY3VsYXRlIHNhaWQgY2xvY2tzLiBUaGlzCi0gICAgcGF0Y2ggcmVuYW1lcyB0aGUgZGVmaW5lcyBhY2NvcmRpbmcgdG8gdGhlaXIgcmVhbCBmdW5jdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyemVnb3J6IEJlcm5hY2tpIDxnamJAc2VtaWhhbGYuY29tPgotICAgIEFja2VkLWJ5OiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotCi1jb21taXQgYTExYzBiODVkYzM2NjRiYjNjMWU3ODExMzcxMTg3MzBjOGY2MTlhYgotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJU3VuIE1heSAyNyAxNjo1MTo0OCAyMDA3ICswMjAwCi0KLSAgICBNb3Rpb24tUFJPOiBBZGQgTEVEIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKYW4gV3JvYmVsIDx3cnJAc2VtaWhhbGYuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci0gICAgQWNrZWQtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0KLWNvbW1pdCA3ZWJiNDQ3OWIwN2ZmMjk0ZWI0ZDc2ZTQyMDc1M2EwMzQ5ZjdjOTNiCi1BdXRob3I6IFVsZiBTYW11ZWxzc29uIDx1bGZAYXRtZWwuY29tPgotRGF0ZToJVGh1IE1heSAyNCAxMjoxMjo0NyAyMDA3ICswMjAwCi0KLSAgICBbUEFUQ0hdW05BTkRdIERlZmluZSB0aGUgVmVuZG9yIElkIGZvciBNaWNyb24gTkFORCBGbGFzaAotCi0gICAgU2lnbmVkLW9mZi1ieTogVWxmIFNhbXVlbHNzb24gPHVsZkBhdG1lbC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGQ3NTY4OTQ3MjJjODg4ZDA5YTlmYTFkZjgzMjM3NTM3NzJkM2RjY2UKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1heSAyNCAwOTo0OTowMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBzbWFsbCA0MDVFWiBPQ00gaW5pdGlsaXphdGlvbiBidWcgaW4gc3RhcnQuUwotCi0gICAgQXMgcG9pbnRlZCBvdXQgYnkgQnJ1Y2UgQWRsZXIgPGJydWNlLmFkbGVyQGFjbS5vcmc+IHRoaXMgcGF0Y2gKLSAgICBmaXhlcyBhIHNtYWxsIGJ1ZyBpbiB0aGUgNDA1RVogT0NNIGluaXRpYWxpemF0aW9uLiBUaGFua3MgZm9yCi0gICAgc3BvdHRpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZDRhMTc5MDEzZDU5YTc2NDQ2NDYyZTFlYjBhOTY5ZmJhNjNlYjgxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBNYXkgMjQgMDg6MjI6MDkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgQU1DQyBBY2FkaWEgc3VwcG9ydCBmb3IgYm9hcmQgcmV2aXNpb24gMS4xCi0KLSAgICBUaGlzIHBhdGNoIHVwZGF0ZXMgdGhlIEFjYWRpYSAoNDA1RVopIHN1cHBvcnQgZm9yIHRoZSBuZXcgMS4xIGJvYXJkCi0gICAgcmV2aXNpb24uIEl0IGFsc28gYWRkcyBzdXBwb3J0IGZvciBOQU5EIEZMQVNIIHZpYSB0aGUgNHh4IE5ERkMuCi0KLSAgICBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBqdW1wZXIgSjcgbXVzdCBiZSBpbiBwb3NpdGlvbiAyLTMgZm9yIHRoaXMKLSAgICBOQU5EIHN1cHBvcnQuIFBvc2l0aW9uIDEtMiBpcyBmb3IgTkFORCBib290aW5nIG9ubHkuIE5BTkQgYm9vdGluZwotICAgIHN1cHBvcnQgd2lsbCBmb2xsb3cgbGF0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4MjJkNTUzNjViYjU1N2UwODRkMGUzMzYyNWE2ZGVkY2M4NjYxMTBiCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDIzIDE0OjA5OjQ2IDIwMDcgLTA1MDAKLQotICAgIEFkZCBMSVNUXzg2eHggTUFLRUFMTCB0YXJnZXQgZm9yIFBvd2VyUEMgYnVpbGRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDlmMDA3N2FiZDY5ZjdhN2M3NTZhOTE1Yjk2MTAzNzMwMmJlM2U2ZjIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE1heSAyMiAxMjo0ODowOSAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFVzZSBkbyB7IC4uLiB9IHdoaWxlICgwKSBmb3IgQ1BSICYgU0RSIGFjY2VzcyBtYWNyb3MKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZmM2RmYzEzOWE4MzhiMDg0MWMxNTFlZmUwMGFkNDdkYjIzNjZlNzkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE1heSAyMiAxMjo0NjoxMCAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEFkZCA0MDUgc3VwcG9ydCB0byA0eHggTkFORCBkcml2ZXIgbmRmYy5jCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgNDA1IFBQQydzIHRvIHRoZSA0eHggTkFORCBkcml2ZXIKLSAgICBuZGZjLmMuIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSBuZXcgQU1DQyA0MDVFWi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDEwNjAzZDc2NzY3NDI2YmU4MDNkYWRkNGZiNjg4Yjk3ZWI2OTQ4MWMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE1heSAyMSAwNzo0MToyMiAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IEZpeCBwcm9ibGVtIGluIDQwNUVaIE9DTSBpbml0aWFsaXphdGlvbgotCi0gICAgQXMgc3BvdHRlZCBieSBCcnVjZSBBZGxlciB0aGlzIHBhdGNoIGZpeGVzIGFuIGluaXRpYWxpemF0aW9uIHByb2JsZW0KLSAgICBmb3IgdGhlIDQwNUVaIE9DTS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDNlM2I5NTY5MDZlYmE5ZTRhZDc5MzE1ODFlY2VkYWFkMTBlY2NjZTgKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CUZyaSBNYXkgMTggMTY6NDc6MDMgMjAwNyArMDEwMAotCi0gICAgUmVkdWNlIGxpbmUgbGVuZ3RocyB0byA4MCBjaGFyYWN0ZXJzIG1heC4KLQotY29tbWl0IDkzZWY0NWM5ZGRmZGQ5ZmMxN2M0ZTc0YmQ4ZTJmMjQ1NjU4MGViNzIKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CUZyaSBNYXkgMTggMTQ6MzQ6MDcgMjAwNyArMDEwMAotCi0gICAgTWFrZWZpbGUgcGVybWlzc2lvbnMKLQotY29tbWl0IDE0NDNhMzE0NTdkNjhmN2U4ZjBiOTQwM2U5ODMyZWMxZTc5ZGM1OWQKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CUZyaSBNYXkgMTggMTQ6MzM6MTEgMjAwNyArMDEwMAotCi0gICAgTWFrZWZpbGUgcGVybWlzc2lvbnMKLQotY29tbWl0IDI1NWEzNTc3Yzg0ODcwNjQ0MWRhZWUwMTc0NTQzZWZlMjA1YTc3ZjgKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBNYXkgMTYgMTY6NTI6MTkgMjAwNyAtMDUwMAotCi0gICAgUmVkdWNlIENPTkZJR19NUEM4WVhYX1RTRUN4IHRvIENPTkZJR19UU0VDeAotCi0gICAgRm9yIGFsbCBwcmFjdGljYWwgdS1ib290IHB1cnBvc2VzLCBUU0VDcyBkb24ndCBkaWZmZXIgdGhyb3VnaG91dCB0aGUKLSAgICBtcGM4WzM1Nl14eCBmYW1pbGllczsgcmVkdWNlIENPTkZJR19NUEM4WVhYX1RTRUN4IHRvIENPTkZJR19UU0VDeC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3MDEyNGMyNjAyYWUyZDRjNWQzZGJhMDViNDgyZDkxNTQ4MjQyZGU4Ci1BdXRob3I6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotRGF0ZToJV2VkIE1heSAxNiAxNDo0OToxMiAyMDA3ICswMjAwCi0KLSAgICBGaXggY29tcGlsZSBwcm9ibGVtIGNhdXNlIG15IE1pY3JvYmxhemUgbWVyZ2UKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbm8gQmFiaWMgPHNiYWJpY0BkZW54LmRlPgotCi1jb21taXQgYWRhNDY5N2QwMjMwZDZkYTU1Mjg2Nzc3N2Y5OGE2N2VjM2JhMjU3OQotQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KLURhdGU6CVdlZCBNYXkgMTYgMTM6MjM6MTAgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBSdW4gbmV3IHNlcXVvaWEgYm9hcmRzIHdpdGggYW4gRUJDIHNwZWVkIG9mIDgzTUh6Ci0KLSAgICBCZWNhdXNlIHRoZSBTZXF1b2lhIGJvYXJkIGRvZXMgbm90IGJvb3Qgd2l0aCBhbiBFQkMgZmFzdGVyIHRoYW4gNjZNSHosCi0gICAgdGhlIGNsb2NrIGRpdmlkZXIgYXJlIGNoYW5nZWQgYWZ0ZXIgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLgotCi0gICAgVGhpcyBhbGxvd3MgZm9yIG1heGltdW0gY2xvY2tpbmcgc3BlZWRzICB0byBiZSBhY2hpZXZlZCBvbiBuZXdlciBib2FyZHMuCi0gICAgU2VxdW9pYSBib2FyZHMgd2l0aCA2NjYuNjYgTUh6IHByb2Nlc3NvcnMgcmVxdWlyZSB0aGF0IHRoZSBFQkMgZGl2aWRlcgotICAgIGJlIHNldCB0byAzIGluIG9yZGVyIHRvIHN0YXJ0IHRoZSBpbml0aWFsIGJvb3QgcHJvY2VzcyBhdCBhIHNsb3dlciBFQkMKLSAgICBzcGVlZC4gQWZ0ZXIgdGhlIGluaXRpYWwgYm9vdCBwcm9jZXNzLCB0aGUgZGl2aWRlciBjYW4gYmUgc2V0IGJhY2sgdG8gMiwKLSAgICB3aGljaCB3aWxsIGNhdXNlIHRoZSBib2FyZHMgdG8gcnVuIGF0IDgzLjMzM01Iei4gVGhpcyBpcyBiYWNrd2FyZAotICAgIGNvbXBhdGlibGUgd2l0aCBib2FyZHMgd2l0aCA1MzMuMzMgTUh6IHByb2Nlc3NvcnMsIGFzIHRoZXNlIGJvYXJkcyB3aWxsCi0gICAgYWxyZWFkeSBiZSBzZXQgd2l0aCBhbiBFQkMgZGl2aWRlciBvZiAyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+Ci0KLWNvbW1pdCBhNzY3NmVhNzczMmYzYzU5NjgwNTA3OWZlZDdlNWM5ZmFjNjUyY2ZjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgTWF5IDE2IDAxOjE2OjUzIDIwMDcgKzAyMDAKLQotICAgIE1pbm9yIENvZGluZyBTdHlsZSBjbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IGQ2MmY2NGNjMjNhOTQwZWFmZTcxMmM3NzZiMzI0OWU0MTYwNzUzZDEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXkgMTYgMDA6MTM6MzMgMjAwNyArMDIwMAotCi0gICAgQ29kaW5nIFN0eWxlIENsZWFudXAsIG5ldyBDSEFOR0VMT0cKLQotY29tbWl0IDMxNjJlYjgzNjkwM2M4YjI0N2ZkYzc0NzBkZDM5YmZhNjk5NmY0OTUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXkgMTUgMjM6Mzg6MDUgMjAwNyArMDIwMAotCi0gICAgTWlub3IgY29kaW5nIHN0eWxlIGNsZWFudXAuCi0KLWNvbW1pdCA2NmQ5ZGJlYzFjYzI3ZDYzOThlZTZjZjg0NjM5ZGJlMTQ5NzEyNTFlCi1BdXRob3I6IG11c2h0YXEga2hhbiA8bXVzaHRhcV9rQHByb2NzeXMuY29tPgotRGF0ZToJRnJpIEFwciAyMCAxNDoyMzowMiAyMDA3ICswNTMwCi0KLSAgICBBZGQgZHJpdmVyIGZvciBTLUFUQS1jb250cm9sbGVyIG9uIEludGVsIHByb2Nlc3NvcnMgd2l0aCBTb3V0aAotICAgIEJyaWRnZSwgSUNILTUsIElDSC02IGFuZCBJQ0gtNy4KLQotICAgIEltcGxlbWVudGF0aW9uOgotCi0gICAgMS4gQ29kZSBpcyBkaXZpZGVkIGluIHRvIHR3byBmaWxlcy4gQWxsIGZ1bmN0aW9ucywgd2hpY2ggYXJlCi0gICAgICAgY29udHJvbGxlciBzcGVjaWZpYyBhcmUga2VwdCBpbiAiZHJpdmVycy9hdGFfcGlpeC5jIiBmaWxlIGFuZAotICAgICAgIGZ1bmN0aW9ucywgd2hpY2ggYXJlIG5vdCBjb250cm9sbGVyIHNwZWNpZmljLCBhcmUga2VwdCBpbgotICAgICAgICJjb21tb24vY21kX3NhdGEuYyIgZmlsZS4KLQotICAgIDIuIFJlYWRpbmcgYW5kIFdyaXRpbmcgZnJvbSB0aGUgUy1BVEEgZHJpdmUgaXMgZG9uZSB1c2luZyBQSU8gbWV0aG9kLgotCi0gICAgMy4gRHJpdmVyIGNhbiBiZSBjb25maWd1cmVkIGZvciA0OC1iaXQgYWRkcmVzc2luZyBieSBkZWZpbmluZyBtYWNybwotICAgICAgIENPTkZJR19MQkE0OCwgaWYgdGhpcyBtYWNybyBpcyBub3QgZGVmaW5lZCBkcml2ZXIgdXNlcyB0aGUgMjgtYml0Ci0gICAgICAgYWRkcmVzc2luZy4KLQotICAgIDQuIFMtQVRBIHJlYWQgZnVuY3Rpb24gaXMgaG9va2VkIHRvIHRoZSBGaWxlIHN5c3RlbSwgY29tbWFuZHMgbGlrZQotICAgICAgIGV4dDJscyBhbmQgZXh0MmxvYWQgZmlsZSBjYW4gYmUgdXNlZC4gVGhpcyBoYXMgYmVlbiB0ZXN0ZWQuCi0KLSAgICA1LiBVLUJvb3QgY29tbWFuZCAiU0FUQV9pbml0IiBpcyBhZGRlZCwgd2hpY2ggaW5pdGlhbGl6ZXMgdGhlIFMtQVRBCi0gICAgICAgY29udHJvbGxlciBhbmQgaWRlbnRpZmllcyB0aGUgUy1BVEEgZHJpdmVzIGNvbm5lY3RlZCB0byBpdC4KLQotICAgIDYuIFUtQm9vdCBjb21tYW5kICJzYXRhIiBpcyBhZGRlZCwgd2hpY2ggaXMgdXNlZCB0byByZWFkL3dyaXRlLCBwcmludAotICAgICAgIHBhcnRpdGlvbiB0YWJsZSBhbmQgZ2V0IGluZm8gYWJvdXQgdGhlIGRyaXZlcyBwcmVzZW50LiBUaGlzIEkgaGF2ZQotICAgICAgIGltcGxlbWVudGVkIGluIHNhbWUgd2F5IGFzICJpZGUiIGNvbW1hbmQgaXMgaW1wbGVtZW50ZWQgaW4gVS1Cb290LgotCi0gICAgNy4gVGhpcyBkcml2ZXIgaXMgZm9yIFMtQVRBIGluIG5hdGl2ZSBtb2RlLgotCi0gICAgOC4gVGhpcyBkcml2ZXIgZG9lcyBub3Qgc3VwcG9ydCB0aGUgTmF0aXZlIGNvbW1hbmQgcXVldWluZyBhbmQKLSAgICAgICBIb3QtcGx1Z2dpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNdXNodGFxIEtoYW4gPG11c2h0YXFfa0Bwcm9jc3lzLmNvbT4KLQotY29tbWl0IDY0NGU2ZmI0ZWI4YmU5MGVhMDRiYTM0YjY0M2E4YmYwMTlkNjgwZTAKLUF1dGhvcjogbXVzaHRhcSBraGFuIDxtdXNodGFxX2tAcHJvY3N5cy5jb20+Ci1EYXRlOglNb24gQXByIDMwIDE1OjU3OjIyIDIwMDcgKzA1MzAKLQotICAgIEZpeGVzIGJ1ZyBjbGVhcmluZyB0aGUgYnNzIHNlY3Rpb24gZm9yIGkzODYKLQotICAgIEhpLAotICAgIFRoZXJlIGlzIGEgYnVnIGluIHRoZSBjb2RlIG9mIGNsZWFyaW5nIHRoZSBic3Mgc2VjdGlvbiBmb3IgcHJvY2Vzc29yCi0gICAgaTM4Ni4oRmlsZTogY3B1L2kzODYvc3RhcnQuUykKLSAgICBJbiB0aGUgY29kZSwgYnNzX3N0YXJ0IGFkZHIgKHN0YXJ0aW5nIGFkZHIgb2YgYnNzIHNlY3Rpb24pIGlzIHB1dCBpbnRvCi0gICAgdGhlIHJlZ2lzdGVyICVlYXgsIGJ1dCB0aGUgY29kZSB3aGljaCBjbGVhcnMgdGhlIGJzcyBzZWN0aW9uIHJlZmVycyB0bwotICAgIHRoZSBhZGRyIHBvaW50ZWQgYnkgJWVkaS4KLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgdGhpcyBidWcgYnkgcHV0dGluZyBic3Nfc3RhcnQgaW50byAlZWRpIHJlZ2lzdGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTXVzaHRhcSBLaGFuIDxtdXNodGFxX2tAcHJvY3N5cy5jb20+Ci0KLWNvbW1pdCBjMzI0M2NmN2I0OTAwNTcyNzdkNjFhY2ZmZTRhZDA5NDZmOWViNGE0Ci1BdXRob3I6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci1EYXRlOglNb24gQXByIDMwIDE2OjQ3OjI4IDIwMDcgLTA1MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciBCQ001NDY0IFF1YWQgUGh5Ci0KLSAgICBBZGRlZCBzdXBwb3J0IGZvciBCcm9hZGNvbSdzIEJDTTU0NjQgUXVhZCBQaHkKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvZSBIYW1tYW4gPGpvZS5oYW1tYW5AZW1iZWRkZWRzcGVjaWFsdGllcy5jb20+Ci0KLWNvbW1pdCAxYjMwNWJkYzc1NGM4NDY4ZTFkNWQ4NThmNWRjZjhhN2EwYTRiYjdhCi1BdXRob3I6IFphbmcgUm95LXI2MTkxMSA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDkgMDg6MTA6NTcgMjAwNyArMDgwMAotCi0gICAgU2VhcmNoIHRoZSBleGNlcHRpb24gdGFibGUgd2l0aCBsaW5lYXIgYWxnb3JpdGhtCi0KLSAgICBTZWFyY2ggdGhlIGV4Y2VwdGlvbiB0YWJsZSB3aXRoIGxpbmVhciBhbGdvcml0aG0gaW5zdGVhZCBvZgotICAgIGJpc2VjdGluZyBhbGdvcml0aG0uCi0gICAgQmVjYXVzZSB0aGUgZXhjZXB0aW9uIHRhYmxlIG1pZ2h0IGJlIHVuc29ydGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWRmYWE1MGViODE5Njg2YmZiYTE5MjdlOGM1YjhhNzBhNGQ2NWZkMwotQXV0aG9yOiBBdWJyZXkuTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJTW9uIE1heSAxNCAxMTo0NzozNSAyMDA3ICswODAwCi0KLSAgICBGaXggY29tcGlsYXRpb24gaXNzdWVzIG9uIE1BQ09TWAotCi0gICAgU2luZ2VkLW9mZi1ieTogTWFyYyBIb2ZmbWFuIDxNYXJjLkhvZmZtYW5AYW5hbG9nLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotCi1jb21taXQgNTZmZDcxNjI5ODVjNDEyMzE3YmJmNzYzYTIyNWZiYTIzYzY0ZmQzMQotQXV0aG9yOiBTdGVwaGVuIFdpbGxpYW1zIDxzdGV2ZUBpY2FydXMuY29tPgotRGF0ZToJVHVlIE1heSAxNSAwNzo1NTo0MiAyMDA3IC0wNzAwCi0KLSAgICBGaXggZm9yIGNvbXBpbGUgb2YgSlNFIHRhcmdldAotCi0gICAgVGhlIGF0dGFjaGVkIHBhdGNoIGZpeGVzIHRoZSBjb21waWxlIG9mIHRoZSBKU0UgYm9hcmQgaW4gdGhlCi0gICAgZGVueCBnaXQgYXMgb2YgMTQgbWF5IDIwMDcuIEl0IGlzIGFuIGV4dHJlbWVseSBzaW1wbGUgcGF0Y2gsCi0gICAgaXQganVzdCBhZGRzIHRoZSBtaXNzaW5nIGRlZmluZSBvZiBDRkdfU1lTVEVNQUNFX1dJRFRILgotCi0gICAgIEZpeCB0byBjb21waWxlIEpTRSBhZ2FpbnN0IDIwMDcwNTE0IGdpdCBvZiB1LWJvb3QKLQotY29tbWl0IDY5ZGYzYzRkYTBjOTMwMTdjY2ViMjVhMzY2ZTc5NDU3MGJkMGVkOTgKLUF1dGhvcjogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QHJhaHV0ZS4obm9uZSk+Ci1EYXRlOglTdW4gTWF5IDEzIDIxOjAxOjAzIDIwMDcgKzA5MDAKLQotICAgIHNoOiBNUzc3NTBTRSBzdXBwb3J0LgotCi0gICAgVGhpcyBhZGRzIHN1cHBvcnQgZm9yIHRoZSBIaXRhY2hpIE1TNzc1MFNFLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTm9idWhpcm8gSXdhbWF0c3UgPGl3YW1hdHN1QG5pZ2F1cmkub3JnPgotCi1jb21taXQgMGIxMzVjZmMyZTUyNGRjMjQ5Yjc1MDU3YjU1ZGQ0Y2MwOTg0MmUyNwotQXV0aG9yOiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAcmFodXRlLihub25lKT4KLURhdGU6CVN1biBNYXkgMTMgMjA6NTg6MDAgMjAwNyArMDkwMAotCi0gICAgc2g6IEZpcnN0IHN1cHBvcnQgY29kZSBvZiBTdXBlckguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOb2J1aGlybyBJd2FtYXRzdSA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0KLWNvbW1pdCA2MTkzNjY2N2U4NmEyNTBhZTEyZmQyZGMxODlkMzU4OGYwYTU5ZTBiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgMTEgMTI6MDE6NDkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBBZGQgbXRjcHIvbWZjcHIgYWNjZXNzIG1hY3JvcwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzQzYzQ4YmQ4NDYwNmM0MDI1YzhhN2M3MjYzZmRhNDY1ZDZlMjg0YwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgTWF5IDExIDEyOjAxOjA2IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogU2V0IGJkLT5iaV9wY2lfYnVzZnJlcSBvbiA0NDBFUHgvR1J4IHRvbwotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgN2Q5OGJhNzcwYTdlYWVmYTI5Y2U5MjdmMzFhMDk1NmRmODViZjY1MAotQXV0aG9yOiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgotRGF0ZToJVGh1IE1heSAxMCAxNjo1NTo1MiAyMDA3ICswMjAwCi0KLSAgICBbTW90aW9uLVBST10gQWRkIE1URCBhbmQgSkZGUzIgc3VwcG9ydCwgYWxzbyBhZGQgZGVmYXVsdCBwYXJ0aXRpb24KLSAgICBkZWZpbml0aW9uLgotCi1jb21taXQgNjVmYjZhNjc2ZTgyMWY5NTcwYTJhMzc2ZGMyMDRiZjYxMWNlNWY4MQotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJV2VkIE1heSA5IDExOjQyOjQ0IDIwMDcgKzAxMDAKLQotICAgIEFkZCB0aGUgYm9hcmQgZGlyZWN0b3J5IGZvciBTTU40MgotCi1jb21taXQgMTYwMTMxYmY5NjU3ODU0MTk2MjZkZjZjMzg4NzI5ZmUwYjU5Nzk5MgotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJV2VkIE1heSA5IDExOjQxOjU4IDIwMDcgKzAxMDAKLQotICAgIEFkZCB0aGUgZmlsZXMgZm9yIHRoZSBTTU40MiBib2FyZAotCi1jb21taXQgNWM2ZDJiNWE1MDBmOGM0OTY3MGRlODkxMDE1MGI3OGE0MWY3ODFmYwotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJV2VkIE1heSA5IDExOjQwOjM0IDIwMDcgKzAxMDAKLQotICAgIFJlbW92ZSB0aGUgZGVsZXRlZCBmaWxlcyBmb3IgdGhlIFNNTjQyIHBhdGNoCi0KLWNvbW1pdCBiMGQ4ZjViZjBkMjE1YWRjOTQyNGNiMjI4YjI0ODRkYmYwN2Y3NzYxCi1BdXRob3I6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci1EYXRlOglXZWQgTWF5IDkgMTE6Mzc6NTYgMjAwNyArMDEwMAotCi0gICAgTmV3IGJvYXJkIFNNTjQyIGJyYW5jaAotCi1jb21taXQgMjlmM2JlMGNhZjA3OTljYTZiODlkZmQ5ODI0YzE1NjE5YTUwMDAwZgotQXV0aG9yOiBQZXRlciBQZWFyc2UgPHBldGVyLnBlYXJzZUBhcm0uY29tPgotRGF0ZToJV2VkIE1heSA5IDEwOjI0OjM4IDIwMDcgKzAxMDAKLQotICAgIE1ha2VmaWxlIHBlcm1pc3Npb25zCi0KLWNvbW1pdCBiODQyODliNTk1NzMxZTg4NTFkZjQ2ZTg5Mzg0NWNjMTMyMmM5YjliCi1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWF5IDggMTQ6MTc6MDcgMjAwNyAtMDUwMAotCi0gICAgODY0MWhwY246IEZpeCBNYWtlZmlsZSBhZnRlciBtb3ZpbmcgcGl4aXMgdG8gYm9hcmQvZnJlZXNjYWxlLgotCi0gICAgVGhlIE9CSlRSRUUgIT0gU1JDVFJFRSBidWlsZCBzY2VuYXJpbyB3YXMgYnJva2VuLgotICAgIFRoaXMgZml4ZXMgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlNjlmNjZjNmViZTgyYmJiZDFkYTc2NmJjNGVkYTQwZWM3ZWU1YWYxCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVR1ZSBNYXkgOCAxNTo1Nzo0MyAyMDA3ICswMjAwCi0KLSAgICBhZGQ6IHJlYWRpbmcgc3BlY2lhbCBwdXJwb3NlIHJlZ2lzdGVycwotCi1jb21taXQgMWE1MGYxNjRiZWIwNjVmMzYwZmJkZGI3NjAyOTYwN2Q2YjA5OTY5OAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglUdWUgTWF5IDggMTQ6NTI6NTIgMjAwNyArMDIwMAotCi0gICAgYWRkOiBNaWNyb2JsYXplIFY1IGV4Y2VwdGlvbiBoYW5kbGluZwotCi1jb21taXQgYWI4NzRkNTA0N2U1ZDMwZGJjMWU1MTdmZjI2MDgzZWZmZmE5OGVjYgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglUdWUgTWF5IDggMTQ6Mzk6MTEgMjAwNyArMDIwMAotCi0gICAgYWRkOiBGU0wgY29udHJvbCByZWFkIGFuZCB3cml0ZQotCi1jb21taXQgZGUxZGUwMmE3Y2JmMDVlNmI2M2UwZDhmZmM2MjRmMTI0OTNmNmJhMwotQXV0aG9yOiBQaW90ciBLcnVzenluc2tpIDxwcGtAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIE1heSA4IDEzOjA1OjQ0IDIwMDcgKzAyMDAKLQotICAgIFtNb3Rpb24tUFJPXSBBZGQgc3VwcG9ydCBmb3IgSTJDLCBFRVBST00gYW5kIFJUQy4KLQotY29tbWl0IGZhNWMyYmExMjNiMWJmODg0NTViZmMyMWRiNWU3ODZjYTA0NTAyOWQKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBNYXkgOCAxMDoyMzo1NiAyMDA3ICswMjAwCi0KLSAgICBbTW90aW9uLVBST10gQWRkIEFUQSBzdXBwb3J0LiBBZGQgQ0YtYm9vdGluZyBjb21tYW5kcyB0byB0aGUgZGVmYXVsdAotICAgIGVudmlyb25tZW50LgotCi1jb21taXQgMDYyNDFkNTBhM2FiMWIyMGEwYjA4YmFlZWFmZmNhYTIzYWU0YjgzOQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIE1heSA4IDA5OjM5OjEyIDIwMDcgKzAyMDAKLQotICAgIFtNb3Rpb24tUFJPXSBDaGFuZ2UgSVBCIGNsb2NrIGZyZXF1ZW5jeSBmcm9tIDUwTUh6IHRvIDEwME1Iei4gVGhpcwotICAgIGVsaW1pbmF0ZXMgbmV0d29ya2luZyBwcm9ibGVtcyBpbiBMaW51eCAodGltZW91dHMpLgotCi1jb21taXQgMWYxMzY5YzM0YjYyOWJlOTQ3MDI2ODRkNDFkM2ZkZGYwZjYxOTNlNwotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIE1heSA4IDA5OjIxOjU3IDIwMDcgKzAyMDAKLQotICAgIFtNb3Rpb24tUFJPXSBFbmFibGUgRmxhdCBEZXZpY2UgVHJlZSBzdXBwb3J0IGFuZCBtb2RpZnkgZGVmYXVsdCBlbnZpcm9ubWVudAotICAgIHRvIGFsbG93IGJvb3Rpbmcgb2YgRkRULWV4cGVjdGluZyBrZXJuZWxzLgotCi1jb21taXQgZmIwNWY2ZGEzNWVhMWMxNWM1NTNhYmU2ZjIzZjY1NmJmMThkYzVkYgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gTWF5IDcgMjM6NTg6MzEgMjAwNyArMDIwMAotCi0gICAgbmV3OiBVU0VfTVNSX0lOVFIgc3VwcG9ydAotCi1jb21taXQgMDA4ODYxYTJmM2VmMmMwNjI3NDRkNzMzNzg3YzdlNTMwYTFiODc2MQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJTW9uIE1heSA3IDIyOjM2OjE1IDIwMDcgKzAyMDAKLQotICAgIFtNUEM1eHh4XSBUaGVyZSBhcmUgbmV0d29ya2luZyBwcm9ibGVtcyBvbiB0aGUgTW90aW9uLVBSTyBib2FyZCB3aXRoCi0gICAgY3VycmVudCBQSFkgaW5pdGFsaXphdGlvbiBjb2RlICh0ZnRwIHRpbWVvdXRzIGFsbCB0aGUgdGltZSkuIFRoaXMgY29tbWl0Ci0gICAgdGVtcG9yYXJpbHkgZGlzYWJsZXMgUEhZIGluaXRhbGl6YXRpb24gc2VxdWVuY2UgdG8gbWFrZSB0aGUgbmV0d29ya2luZwotICAgIG9wZXJhdGlvbmFsLCB1bnRpbCBhIGZpeCBpcyBmb3VuZC4KLQotY29tbWl0IGFiY2E5MDE4NjljMzc2MGI2YzVmZWNiODI1ZGI2YzFkOTFhNzhhOTMKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgNyAyMjoxMDozNiAyMDA3ICswMjAwCi0KLSAgICBHZXQgcmlkIG9mIGR1cGxpY2F0ZWQgZmlsZSAoc2VlIGluY2x1ZGUvY29uZmlncy9zYmM4NTYwLmggaW5zdGVhZCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyMDdiN2IyYzlkOTc1MmUwZjY0NzhjMzBjMjliNzA4N2Y2ZTZjYmI2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglNb24gTWF5IDcgMjI6MDc6MDggMjAwNyArMDIwMAotCi0gICAgR2V0IHJpZCBvZiBkdXBsaWNhdGVkIGZpbGUgKHNlZSBkb2MvUkVBRE1FLlNCQzg1NjAgaW5zdGVhZCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCBhN2JhYzdlOWI1N2JhOTQ4MDUxYmViMTllYzViZTNhNzVjZTc1MzgzCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBNYXkgNyAxOTo0MzoxMCAyMDA3ICswMjAwCi0KLSAgICBmaXg6IHJlYWQgYW5kIHdyaXRlIE1TUiAtIHJlcGFpciBudW1iZXIgb2YgcGFyYW1ldGVycwotCi1jb21taXQgMTkzYjRhM2JiM2FjYWRkZjc5OGRhOGRlMGRhMDVkOTRiYTg3NzRlZQotQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KLURhdGU6CU1vbiBNYXkgNyAxOTo0Mjo0OSAyMDA3ICswMjAwCi0KLSAgICBbUEFUQ0hdIHBwYzR4eDogRml4IENPTkZJR19TWVNfQ0xLX0ZSRVEgZGVmaW5pdGlvbiBpbiBTZXF1b2lhIGNvbmZpZyBmaWxlCi0KLSAgICBBICczJyBnb3QgY3V0IG9mZiBpbiB0aGUgZm9ybWF0dGluZyBvZiB0aGUgbGFzdCBwYXRjaCB0byBhdXRvbWF0aWNhbGx5Ci0gICAgY2hhbmdlIHRoZSBjbG9jayBzcGVlZCBvZiB0aGUgc3lzdGVtIGNsb2NrIG9uIHNlcXVvaWEgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxOWJmMWZiYWQ3ZjE5ZDVhMTIwYmU5YjFkYWYxMzZlMDUyZmNhYjM5Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBNYXkgNyAxOTozMzo1MSAyMDA3ICswMjAwCi0KLSAgICBuZXc6IGZzbCBpbnRlcnJ1cHQgc3VwcG9ydAotICAgIEZTTF9IYXNfZGF0YSBpcyBjb25uZWN0ZWQgdG8gSU5UQy4KLQotY29tbWl0IDc5MjAzMmJhYTdkNjI1ZTM0Yzk4MWFiNmRmNTIxOTExYmQ4ZGM4NjEKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIE1heSA3IDE5OjMwOjEyIDIwMDcgKzAyMDAKLQotICAgIGZpeDogaW50ZXJydXB0IGhhbmRsZXIKLSAgICByZW1vdmUgYXNtIGNvZGUKLQotY29tbWl0IGYzZjAwMWEzNDFlZjE4NWQwZjEzODQxYmU1YjVkYzMzOTVhYWNjMzEKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxtb25zdHJAbW9uc3RyLmV1PgotRGF0ZToJTW9uIE1heSA3IDE5OjI1OjA4IDIwMDcgKzAyMDAKLQotICAgIGZpeDogcmVtb3ZlIGFzbSBjb2RlCi0KLWNvbW1pdCBmYjdjMmRiZWYwMmM5ZjZmOGQ3YjA0ZWM0YzJiZmI5MTQxOGI5YzAxCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CU1vbiBNYXkgNyAxOToxMjo0MyAyMDA3ICswMjAwCi0KLSAgICBmaXg6IGNsZWFuIGludGVycnVwdAotCi1jb21taXQgNDJlZmVkNjEzMGM4ZmNmN2RhODgxMzg1YjU0MjcwNjVkMjgwMTc1NwotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gTWF5IDcgMTc6MjI6MjUgMjAwNyArMDIwMAotCi0gICAgZml4OiBpbnRlcnJ1cHQgaGFuZGxlciBmb3IgbXVsdGlwbGUgc291cmNlcwotCi1jb21taXQgNDhmYmQzYTRjZGFiYmViYzFkZWJkN2VlZDczYzAwYzJjYWY5MTRmNgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglNb24gTWF5IDcgMTc6MTE6MDkgMjAwNyArMDIwMAotCi0gICAgbmV3OiBhZGQgd3JpdGluZyB0byBtc3IgcmVnaXN0ZXIKLQotY29tbWl0IDNhNjE5ZGQ3YmVkMDNlOGI0ZDIyYTM5MTFmOTBmZDEyYWY1Mzc2YzIKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgNyAxNjo0Mzo1NiAyMDA3ICswMjAwCi0KLSAgICBGaXggYW4gYW5jaWVudCBDSEFOR0VMT0cgY29uZmxpY3QKLQotY29tbWl0IGFjNGNkNTlkNTljOWJmM2Y4OWNiN2EzNDRhYmY4MTg0ZDY3OGY1NjIKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVNhdCBNYXkgNSAwODoxMjozMCAyMDA3ICswMjAwCi0KLSAgICA1eHh4OiB3cml0ZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MKLQotICAgIFNvbWUgZGV2aWNlIHRyZWVzIGhhdmUgYSBtYWMtYWRkcmVzcyBwcm9wZXJ0eSwgc29tZSBoYXZlIGxvY2FsLW1hYy1hZGRyZXNzLAotICAgIGFuZCBzb21lIGhhdmUgYm90aC4gIFRvIHN1cHBvcnQgYWxsIG9mIHRoZXNlIGRldmljZSB0cmVlcywgZnRwX2NwdV9zZXR1cCgpCi0gICAgc2hvdWxkIHdyaXRlIHRoZSBNQUMgYWRkcmVzcyB0byBtYWMtYWRkcmVzcyBhbmQgbG9jYWwtbWFjLWFkZHJlc3MsIGlmIHRoZXkKLSAgICBleGlzdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGE5ZDg3ZTI3MDdkY2IyNDlmNmJiN2Y3ZmY3ZTAwYWNkOGNkYTlmZDIKLUF1dGhvcjogR3J6ZWdvcnogV2lhbmVja2kgPGdyemVnb3J6LndpYW5lY2tpQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBcHIgMjkgMTQ6MDE6NTQgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBVc2UgUFZSIHRvIGRpc3Rpbmd1aXNoIE1QQzUyMDBCIGZyb20gTVBDNTIwMCBpbiBib290IG1lc3NhZ2UKLQotICAgIE1QQzUyMDBCIHN5c3RlbXMgYXJlIGluY29ycmVjdGx5IHJlcG9ydGVkIGFzIE1QQzUyMDAgaW4gVS1Cb290IHN0YXJ0LXVwCi0gICAgbWVzc2FnZS4gVXNlIFBWUiB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28gdmFyaWFudHMsIGFuZCBwcmludCBwcm9wZXIgQ1BVCi0gICAgaW5mb3JtYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBXaWFuZWNraSA8Z3J6ZWdvcnoud2lhbmVja2lAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNGVjNWJkNTVlZDFmZmE5MWE3NzRhZjI5ODc2OTYyMWY0ZmJiMThjMQotQXV0aG9yOiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci1EYXRlOglXZWQgQXByIDI1IDE2OjAxOjI2IDIwMDcgKzAyMDAKLQotICAgIFtQQVRDSF0gc2ltcGxpZnkgc2lsZW50IGNvbnNvbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYjc1OThhNDNmMmI0MjFhNzEzZDgxMzVlOThhNDJjMzdkOWViOWRmMAotQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJTW9uIEFwciAyMyAxNTozMDozOSAyMDA3ICswMjAwCi0KLSAgICBbUEFUQ0hdIEF2b2lkIGFzc2lnbmluZyBQQ0kgcmVzb3VyY2VzIGZyb20gemVybyBhZGRyZXNzCi0KLSAgICBJZiBhIFBDSSBJREUgY2FyZCBoYXBwZW5zIHRvIGdldCBhIHplcm8gYWRkcmVzcyBhc3NpZ25lZCB0byBpdCwgdGhlIExpbnV4IElERQotICAgIGNvcmUgY29tcGxhaW5zIGFuZCBJREUgZHJpdmVycyBmYWlscyB0byB3b3JrLiAgQWxzbywgYXNzaWduaW5nIHplcm8gdG8gYSBCQVIKLSAgICB3YXMgaWxsZWdhbCBhY2NvcmRpbmcgdG8gUENJIDIuMSAodGhlIGxhdGVyIHJldmlzaW9ucyBzZWVtIHRvIGhhdmUgZXhjbHVkZWQgdGhlCi0gICAgc2VudGVuY2UgYWJvdXQgIjAiIGJlaW5nIGNvbnNpZGVyZWQgYW4gaW52YWxpZCBhZGRyZXNzKSAtLSBzbywgdXNlIGEgcmVhc29uYWJsZQotICAgIHN0YXJ0aW5nIHZhbHVlIG9mIDB4MTAwMCAodGhhdCdzIHdoYXQgdGhlIG1vc3QgTGludXggYXJjaHMgYXJlIHVzaW5nKS4KLQotICAgIEFsdGVybmF0aXZlbHksIG9uZSBtaWdodCBoYXZlIGZpeGVkIHRoZSBjYWxscyB0byBwY2lfc2V0X3JlZ2lvbigpIGluZGl2aWR1YWxseQotICAgIChzb21lIGNvZGUgZXZlbiBzZWVtcyB0byBoYXZlIHRha2VuIGNhcmUgb2YgdGhpcyBpc3N1ZSkgYnV0IHRoYXQgd291bGQgaGF2ZQotICAgIGJlZW4gYSBsb3QgbW9yZSB3b3JrLiA6LSkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+Ci0gICAgQWNrZWQtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDlmZmQ0NTFhZmViMDhlNWJlN2RkYWU2ODA0ODdlYzk2MmIyYmNhMjUKLUF1dGhvcjogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+Ci1EYXRlOglNb24gQXByIDIzIDE0OjAwOjExIDIwMDcgKzAyMDAKLQotICAgIFtwYXRjaF0gc2V0ZW52KC4uLikgY2FuIGRlbGV0ZSBlbnZpcm9ubWVudGFsdmFyaWFibGVzCi0KLSAgICB1cGRhdGUgc2V0ZW52KCkgZnVuY3Rpb24gc28gdGhhdCBlbnRlcmluZyBhIE5VTEwgdmFsdWUgZm9yIHRoZQotICAgIHZhcmlhYmxlJ3MgdmFsdWUgd2lsbCBkZWxldGUgdGhlIGVudmlyb25tZW50YWwgdmFyaWFibGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlYmQwYTBhZTA1YTQ0NzY5YzRlMjc0NThhZDRlOWYzNDM4MjUwNDQzCi1BdXRob3I6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLURhdGU6CU1vbiBBcHIgMjMgMTM6NTQ6MjQgMjAwNyArMDIwMAotCi0gICAgW3BhdGNoXSB1c2UgdW5zaWduZWQgY2hhciBpbiBzbWM5MTExMSBkcml2ZXIgZm9yIG1hYwotCi0gICAgdGhlIHZfbWFjIHZhcmlhYmxlIGluIHRoZSBzbWM5MTExMSBkcml2ZXIgaXMgZGVjbGFyZWQgYXMgYSBzaWduZWQgY2hhciAuLi4KLSAgICB0aGlzIGNhdXNlcyBwcm9ibGVtcyB3aGVuIG9uZSBvZiB0aGUgYnl0ZXMgaW4gdGhlIE1BQyBpcyAic2lnbmVkIiBsaWtlIDB4RTAKLSAgICBiZWNhdXNlIHdoZW4gaXQgZ2V0cyBwcmludGVkIG91dCwgeW91IGdldCBhIGRpc3BsYXkgbGlrZToKLSAgICAweEZGRkZGRkUwIGFuZCB0aGF0J3Mgbm8gZ29vZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotCi1jb21taXQgZmZjNTBmOWJiMTk0MzQzYzYzMDM1MTdhNTE3NzA4NDU3YTVlYjZiOAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTYXQgTWF5IDUgMTg6NTQ6NDIgMjAwNyArMDIwMAotCi0gICAgbmV3OiBGU0wgYW5kIE1TUiBzdXBwb3J0ICMyCi0KLWNvbW1pdCBmN2UyZTBlYjA2NjgxMzYzMDVmNzhiYjljMjFiZTc5YjQ4YTM0MjQ3Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVNhdCBNYXkgNSAxODoyNzoxNiAyMDA3ICswMjAwCi0KLSAgICBuZXc6IEZTTCBhbmQgTVNSIHN1cHBvcnQKLQotY29tbWl0IDJmMTUyNzhjMmViOTExYzY2OGI0ZmU1NjIxMzBiNzhjZjU1NGQxMzkKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVNhdCBNYXkgNSAxODoyMzoxMSAyMDA3ICswMjAwCi0KLSAgICBDb2Rpbmcgc3R5bGtlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgODg1ZWM4OWI2NDhhODk5YTJmMzIzOTNmZDNmZmQ5ZjcyMzRjNDQwMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE1heSA1IDE4OjA1OjAyIDIwMDcgKzAyMDAKLQotICAgIEFkZCBTVFggR1AzIFNTQSBib2FyZCB0byBNQUtFQUxMIHNjcmlwdDsgdXBkYXRlIENIQU5HRUxPRy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA1NDk5NjQ1YjNmZTE3YTU0OGFmOWRmYzQ3OWNhNmUyNDU1ZjE3OWEyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDUgMTc6MTU6NTAgMjAwNyArMDIwMAotCi0gICAgTWFrZSAiZmlsZSIgY29tbWFuZCBoYXBweSB3aXRoIHNvbWUgY29uZmlnLm1rIGZpbGVzOyB1cGRhdGUgQ0hBTkdFTE9HCi0KLWNvbW1pdCBlM2I4Yzc4YmMyNDg5YzI3YWUwMjA5ODZlZjBlYWNhNjg0ODY2Y2VmCi1BdXRob3I6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgotRGF0ZToJU2F0IE1heSA1IDA4OjMyOjE0IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRGV0ZWN0IGlmIHRoZSBzeXNjbGsgb24gU2VxdW9pYSBpcyAzMyBvciAzMy4zMzMgTUh6Ci0KLSAgICBUaGUgQU1DQyBTZWNxdW9pYSBib2FyZCBoYXMgYmVlbiBjaGFuZ2VkIGluIGEgbmV3IHJldmlzaW9uIGZyb20gdXNpbmcgYQotICAgIDMzLjAwMCBNSHogY2xvY2sgdG8gYSAzMy4zMzMgTUh6IHN5c3RlbSBjbG9jay4gQSBiaXQgaW4gdGhlIENQTEQKLSAgICBpbmRpY2F0ZXMgdGhlIGRpZmZlcmVuY2UuIFRoaXMgcGF0Y2ggcmVhZHMgdGhhdCBiaXQgYW5kIHVzZXMgdGhlIGNvcnJlY3QKLSAgICBjbG9jayBzcGVlZCBmb3IgdGhlIGJvYXJkLiBUaGlzIGNvZGUgaXMgYmFja3dhcmQgY29tcGF0YWJsZSB3aWxsIGFsbAotICAgIHByaW9yIGJvYXJkcy4gQWxsIHByaW9yIGJvYXJkcyB3aWxsIGJlIHJlYWQgYXMgMzMuMDAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVmZnJleSBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZjU0NGZmNjY1NmZjYTI2M2VkMWViZTM5ODk5YjZkOTVkYTY3YzhiOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWF5IDUgMDg6Mjk6MDEgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBTZXF1b2lhOiBSZW1vdmUgY3B1L3BwYzR4eC9zcGVlZC5jIGZyb20gTkFORCBib290aW5nCi0KLSAgICBVc2luZyBjcHUvcHBjNHh4L3NwZWVkLmMgdG8gY2FsY3VsYXRlIHRoZSBidXMgZnJlcXVlbmN5IGlzIHRvbyBiaWcKLSAgICBmb3IgdGhlIDRrIE5BTkQgYm9vdCBpbWFnZSBzbyBkZWZpbmUgYnVzX2ZyZXF1ZW5jeSB0byAxMzNNSHogaGVyZQotICAgIHdoaWNoIGlzIHNhdmUgZm9yIHRoZSByZWZyZXNoIGNvdW50ZXIgc2V0dXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyZjU1MGFiOTc2NDA1MzAwZjViMDdiZjI4OTA4MDA4NDBkMGFhMDVmCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglTYXQgTWF5IDUgMDg6MTI6MzAgMjAwNyArMDIwMAotCi0gICAgNXh4eDogd3JpdGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgYW5kIGxvY2FsLW1hYy1hZGRyZXNzCi0KLSAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKLSAgICBhbmQgc29tZSBoYXZlIGJvdGguICBUbyBzdXBwb3J0IGFsbCBvZiB0aGVzZSBkZXZpY2UgdHJlZXMsIGZ0cF9jcHVfc2V0dXAoKQotICAgIHNob3VsZCB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgYW5kIGxvY2FsLW1hYy1hZGRyZXNzLCBpZiB0aGV5Ci0gICAgZXhpc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBhNzk4ODY1OTA1OTNiYTFkNjY3Yzg0MGNhYTQ5NDBjNjE2MzlmMThmCi1BdXRob3I6IFRob21hcyBLbm9ibG9jaCA8a25vYmxvY2hAc2llbWVucy5jb20+Ci1EYXRlOglTYXQgTWF5IDUgMDc6MDQ6NDIgMjAwNyArMDIwMAotCi0gICAgTkFORDogV3JvbmcgY2FsY3VsYXRpb24gb2YgcGFnZSBudW1iZXIgaW4gbmFuZF9ibG9ja19iYWQoKQotCi0gICAgSW4gY2FzZSB0aGF0IHRoZXJlIGlzIG5vIG1lbW9yeSBiYXNlZCBiYWQgYmxvY2sgdGFibGUgYXZhaWxhYmxlIHRoZQotICAgIGZ1bmN0aW9uIG5hbmRfYmxvY2tfY2hlY2tiYWQoKSBpbiBkcml2ZXJzL210ZC9uYW5kL25hbmRfYmFzZS5jIHdpbGwgY2FsbAotICAgIG5hbmRfYmxvY2tfYmFkKCkgZGlyZWN0bHkuIFdoZW4gcGFyYW1ldGVyICdnZXRjaGlwJyBpcyBzZXQgdG8gemVybywKLSAgICBuYW5kX2Jsb2NrX2JhZCgpIHdpbGwgbm90IHJpZ2h0IHNoaWZ0IHRoZSBvZmZzZXQgdG8gY2FsY3VsYXRlIHRoZQotICAgIGNvcnJlY3QgcGFnZSBudW1iZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaG9tYXMgS25vYmxvY2ggPGtub2Jsb2NoQHNpZW1lbnMuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDk4NzdkN2RjZDFlZWJlNjFhYTVkOGI4ZmZlOWMwNDhlYTQyNmU2ZjYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CUZyaSBNYXkgNCAxMDowMjozMyAyMDA3ICswMjAwCi0KLSAgICBGaXggaW5pdHJkIGxlbmd0aCBjb3JydXB0aW9uIGluIGJvb3RtIGNvbW1hbmQuCi0KLSAgICBXaGVuIHVzaW5nIEZEVCBJbWFnZXMsIHRoZSBsZW5ndGggb2YgYW4gaW5pdGFsIHJhbWRpc2sgd2FzCi0gICAgb3ZlcndyaXR0ZW4gKGJ1ZyBpbnRyb2R1Y2VkIGJ5IGNvbW1pdCA4N2E0NDljOCwgMjIgQXVnIDIwMDYpLgotCi0gICAgUGF0Y2hlcyBieSBUaW11ciBUYWJpICYgSm9obnMgRGFuaWVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDA2OGFhYjY2MGJjMzkxMmI5MzBiZTU1NDBlNmIzZjNmZDZhZDNjOTYKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBNYXkgMyAxOTo0Mzo1MiAyMDA3IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBmaXggdHJpdmlhbCBlcnJvciBpbiBNQUtFQUxMCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzY0YTg5ZDZjZTg1ODRiOWZjNjRmNGU4NWRhOWVjYWMzY2ZjMmMyYQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVGh1IE1heSAzIDE2OjM0OjQxIDIwMDcgKzAyMDAKLQotICAgIFVwZGF0ZSBib2FyZCBjb25maWd1cmF0aW9uIGZvciBTVFggR1AzU1NBIGJvYXJkOgotCi0gICAgRW5hYmxlIGh1c2ggc2hlbGwsIGVudmlyb25tZW50IGluIGZsYXNoIHJhdGhlciBpbiBFRVBST00sCi0gICAgbW9yZSB1c2VyLWZyaWVuZGx5IGRlZmF1bHQgZW52aXJvbm1lbnQsIGV0Yy4KLSAgICBUaGUgc2ltcGxlIEVFUFJPTSBlbnZpcm9ubWVudCBjYW4gYmUgc2VsZWN0ZWQgZWFzaWx5IGluIHRoZSBib2FyZAotICAgIGNvbmZpZyBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDJjNmZiMTk5ZGM1NzU2ZmM3MmY0OWQxZjRkZTEwNWUwODkwNDlkNjUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVR1ZSBBcHIgMjQgMTQ6Mzc6NDkgMjAwNyArMDIwMAotCi0gICAgQ2xlYW51cCBTVFggR1AzU1NBIGNvZGU7IGZpeCBidWlsZCBhbmQgY29tcGlsZSBwcm9ibGVtcy4KLQotY29tbWl0IDM1MTcxZGMwNGUwMjhlY2FjYzIzYWQ5MTZhNjYyOTU0NzI1NTVkYmYKLUF1dGhvcjogRGFuIE1hbGVrIDxkYW5AZW1iZWRkZWRhbGxleS5jb20+Ci1EYXRlOglGcmkgSmFuIDUgMDk6MTU6MzQgMjAwNyArMDEwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIFNUWCBHUDNTU0EgKHN0eHNzYSkgQm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnkgRGFuIE1hbGVrLCA8ZGFuQGVtYmVkZGVkYWxsZXkuY29tPgotCi1jb21taXQgZjIxMzRmOGU5ZWIwMDZiZGNkNzI5ZTg5ZjMwOWMwN2IyZmE0NTE4MAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBNYXkgMiAxMzozMTo1MyAyMDA3ICswMjAwCi0KLSAgICBtYWNiOiBEb24ndCByZXN0YXJ0IGF1dG9uZWdvdGlhdGlvbiBpZiB3ZSBhbHJlYWR5IGhhdmUgbGluawotCi0gICAgUmV3b3JrIG1hY2JfcGh5X2luaXQgc28gdGhhdCBpdCBkb2Vzbid0IGF0dGVtcHQgdG8gcmUtbmVnb3RpYXRlIGlmIHRoZQotICAgIGxpbmsgaXMgYWxyZWFkeSB1cC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMDRmY2I1ZDM4YmM5MDc3OWNkOWE3MTBkNjA3MDIwNzU5ODZmMGUyOQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBNYXkgMiAxMzoyMjozOCAyMDA3ICswMjAwCi0KLSAgICBtYWNiOiBJbnRyb2R1Y2UgYSBmZXcgYmFycmllcnMgd2hlbiBkZWFsaW5nIHdpdGggRE1BIGRlc2NyaXB0b3JzCi0KLSAgICBUaGVyZSB3ZXJlIGEgZmV3IHRoZW9yZXRpY2FsIHBvc3NpYmlsaXRpZXMgdGhhdCB0aGUgY29tcGlsZXIgbWlnaHQKLSAgICBvcHRpbWl6ZSBhd2F5IERNQSBkZXNjcmlwdG9yIHJlYWRzIGFuZC9vciB3cml0ZXMgYW5kIHRodXMgY2F1c2UKLSAgICBzeW5jaHJvbml6YXRpb24gcHJvYmxlbXMgd2l0aCB0aGUgaGFyZHdhcmUuIEluc2VydCBiYXJyaWVycyB3aGVyZQotICAgIHdlIGRlcGVuZCBvbiByZWFkcy93cml0ZXMgYWN0dWFsbHkgaGl0dGluZyBtZW1vcnkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGZmYTYyMWEwZDEyYTFjY2Q4MWM5MzZjNTY3Zjg5MTdhMjEzNzg3YTgKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IEZlYiAyNCAwMTowODoxMyAyMDA3IC0wNjAwCi0KLSAgICBDbGVhbmVkIHVwIHNvbWUgODV4eCBQQ0kgYnVncwotCi0gICAgKiBDbGVhbmVkIHVwIHRoZSBDRFMgUENJIENvbmZpZyBUYWJsZXMgYW5kIGFkZGVkIE5VTEwgZW50cmllcyB0bwotICAgICAgdGhlIGVuZAotICAgICogRml4ZWQgUENJZSBMQVdCQVIgYXNzaWduZW10IHRvIHVzZSB0aGUgY3B1LXJlbGF0aXZlIGFkZHJlc3MKLSAgICAqIEZpeGVkIDg1eHggUENJIGNvZGUgdG8gYXNzaWduIHBvd2FyIHJlZ2lvbiBzaXplcyBiYXNlZCBvbiB0aGUKLSAgICAgIGNvbmZpZyB2YWx1ZXMgKHJhdGhlciB0aGFuIGhhcmQtY29kaW5nIHRoZW0pCi0gICAgKiBGaXhlZCB0aGUgODU0OCBDRFMgUENJMiBJTyB0byBvbmNlIGFnYWluIGhhdmUgMCBhcyB0aGUgYmFzZSBhZGRyZXNzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2NzQzMTA1OTg4ZmM0NGQ1YjBkMzAzODhjNzkwNjA3ODM1YWFlN2E2Ci1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBcHIgMjMgMDI6NTQ6MjUgMjAwNyAtMDUwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHRoZSA4NTY4IE1EUyBib2FyZAotCi0gICAgVGhpcyBpbmNsdWRlZCBzb21lIGNoYW5nZXMgdG8gY29tbW9uIGZpbGVzOgotICAgICogQWRkIDg1NjggcHJvY2Vzc29yIFNWUiB0byB2YXJpb3VzIHBsYWNlcwotICAgICogQWRkIHN1cHBvcnQgZm9yIHNldHRpbmcgdGhlIHFlIGJ1cy1mcmVxdWVuY3kgdmFsdWUgaW4gdGhlIGR0cwotICAgICogQWRkIHRoZSA4NTY4TURTIHRhcmdldCB0byB0aGUgTWFrZWZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGFmMWMyYjg0YmYyN2M4NTY1YmFkZGM4MmQxYWJiOTM3MDBkMTBlMmUKLUF1dGhvcjogRGF2aWQgVXBkZWdyYWZmIDxkYXZlQGNyYXkuY29tPgotRGF0ZToJRnJpIEFwciAyMCAxNDozNDo0OCAyMDA3IC0wNTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgdHJlYXRpbmcgdW5rbm93biBQSFlzIGFzIGdlbmVyaWMgUEhZcy4KLQotICAgIFdoZW4gYnJpbmdpbmcgdXAgdS1ib290IG9uIG5ldyBib2FyZHMsIFBIWSBzdXBwb3J0IHNvbWV0aW1lcyBnZXRzCi0gICAgbmVnbGVjdGVkLglNb3N0IFBIWXMgZG9uJ3QgcmVhbGx5IG5lZWQgYW55IHNwZWNpYWwgc3VwcG9ydCwKLSAgICB0aG91Z2guICBCeSBhZGRpbmcgYSBnZW5lcmljIGVudHJ5IHRoYXQgYWx3YXlzIG1hdGNoZXMgaWYgbm90aGluZwotICAgIGVsc2UgZG9lcywgd2UgY2FuIHByb3ZpZGUgc3VwcG9ydCBmb3IgInVuc3VwcG9ydGVkIiBQSFlzIGZvciB0aGUKLSAgICB0c2VjLgotCi0gICAgVGhlIGdlbmVyaWMgUEhZIGRyaXZlciBzdXBwb3J0cyBtb3N0IFBIWXMsIGluY2x1ZGluZyBnaWdhYml0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2aWQgVXBkZWdyYWZmIDxkYXZlQGNyYXkuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGE3NWFmOWJmZDhmZmYwNDk5ZWZkYmI5MDYwMWNlYzVhMmFmZWYxMTcKLUF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiA3IDE1OjI4OjA0IDIwMDcgLTA2MDAKLQotICAgIENvbmRpdGlvbmFsaXplIDg2NDEgUmV2MS4wIE1DTSB3b3JrYXJvdW5kcwotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNjQ3MDJiN2ZjOGY4ZGYzOWQzMWFkZDc3MGRmNmUzNzJmOWU5Y2UzCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDMwIDEzOjU5OjUwIDIwMDcgLTA1MDAKLQotICAgIEZpeCBtZW1vcnkgaW5pdGlhbGl6YXRpb24gb24gTVBDODM0OUUtbUlUWAotCi0gICAgRGVmaW5lIENGR19ERFJfU0RSQU1fQ0xLX0NOVEwgZm9yIHRoZSBNUEM4MzQ5RS1tSVRYIGFuZCBNUEM4MzQ5RS1tSVRYLUdQLgotICAgIFRoaXMgYWxsb3dzIGRkci0+c2RyYW1fY2xrX2NudGwgdG8gYmUgcHJvcGVybHkgaW5pdGlhbGl6ZWQuICBUaGlzIGlzIG5lY2Vzc2FyeQotICAgIG9uIHNvbWUgSVRYIGJvYXJkcywgbm90YWJseSB0aG9zZSB3aXRoIGEgcmV2aXNpb24gMy4xIENQVS4KLQotICAgIEFsc28gY2hhbmdlIHNwZF9zZHJhbSgpIGluIGNwdS9tcGM4M3h4L3NwZF9zZHJhbS5jIHRvIG5vdCB3cml0ZSBhbnl0aGluZyBpbnRvCi0gICAgZGRyLT5zZHJhbV9jbGtfY250bCBpZiBDRkdfRERSX1NEUkFNX0NMS19DTlRMIGlzIG5vdCBkZWZpbmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogTWljaGFlbCBCZW5lZGljdCA8TUJlbmVkaWN0QHR3YWNzLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTRiMmQ0MzRhZTlkMDE3ODc5MzZmMzRmZTE3NTljZjNkNzYyNGFlMwotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEFwciAzMCAxNToyNjoyMSAyMDA3IC0wNTAwCi0KLSAgICBtcGM4M3h4OiByZXBsYWNlIGVsYWJvcmF0ZSBib290dGltZSB2ZXJib3NpdHkgd2l0aCAnY2xvY2tzJyBjb21tYW5kCi0KLSAgICBhbmQgZml4IENQVTogdG8gYWxpZ24gd2l0aCBCb2FyZDogZGlzcGxheSB0ZXh0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGMxYWI4MjY2OWQ5NTI1OTk4YzM0ZTgwMmExMmNhZDY2MjcyM2YyMmEKLUF1dGhvcjogSmFtZXMgWWFuZyA8SmFtZXMuWWFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE1hciAxNiAxMzowMjo1MyAyMDA3IC0wNTAwCi0KLSAgICBSZXdyb3RlIHBpY29zX3RvX2NsaygpIHRvIGF2b2lkIHJvdW5kaW5nIGVycm9ycy4KLSAgICBDbGFyaWZpZWQgdGhhdCBjb252ZXJzaW9uIGlzIHRvIERSQU0gY2xvY2tzIHJhdGhlciB0aGFuIHBsYXRmb3JtIGNsb2Nrcy4KLSAgICBNYWRlIGZ1bmN0aW9uIHN0YXRpYyB0byBzcGRfc2RyYW0uYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphbWVzIFlhbmcgPEphbWVzLllhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgOGIzOTUwMWQyODc1NGU3MjcyNmNlN2ZiMDIzMTBlNTZkYmRmMTE2YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTdW4gQXByIDI5IDE0OjEzOjAxIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQmFtYm9vOiBVc2UgY3VycmVudCBOQU5EIGRyaXZlciBhbmQgKm5vdCogdGhlIGxlZ2FjeSBkcml2ZXIKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg2NGFhNmE2YTQ2NmZjYjkyYmYzMmIxZDdkYmE3OWNkNzA5YjUyYzkKLUF1dGhvcjogR3J6ZWdvcnogV2lhbmVja2kgPGdyemVnb3J6LndpYW5lY2tpQGdtYWlsLmNvbT4KLURhdGU6CVN1biBBcHIgMjkgMTQ6MDE6NTQgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBVc2UgUFZSIHRvIGRpc3Rpbmd1aXNoIE1QQzUyMDBCIGZyb20gTVBDNTIwMCBpbiBib290IG1lc3NhZ2UKLQotICAgIE1QQzUyMDBCIHN5c3RlbXMgYXJlIGluY29ycmVjdGx5IHJlcG9ydGVkIGFzIE1QQzUyMDAgaW4gVS1Cb290IHN0YXJ0LXVwCi0gICAgbWVzc2FnZS4gVXNlIFBWUiB0byBkaXN0aW5ndWlzaCBiZXR3ZWVuIHRoZSB0d28gdmFyaWFudHMsIGFuZCBwcmludCBwcm9wZXIgQ1BVCi0gICAgaW5mb3JtYXRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcnplZ29yeiBXaWFuZWNraSA8Z3J6ZWdvcnoud2lhbmVja2lAZ21haWwuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNWM1ZDMyNDI5MzVjZjM1NDNhZjAxMTQyNjI3NDk0NDM0ODM0Y2Y5OAotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEFwciAyNSAxMjozNDozOCAyMDA3IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBtaW5vciBmaXh1cHMgZm9yIDgzMTNyZGIgaW50cm9kdWN0aW9uCi0KLWNvbW1pdCBhZGE0ZDQwMDkxZjZlZDRhNGYwMDQwZTA4ZDIwZGIyMTk2N2U0YTY3Ci1BdXRob3I6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLURhdGU6CVdlZCBBcHIgMjUgMTY6MDE6MjYgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBzaW1wbGlmeSBzaWxlbnQgY29uc29sZQotCi0gICAgU2lnbmVkLW9mZi1ieTogTGFkaXNsYXYgTWljaGwgPGxhZGlzQGxpbnV4LW1pcHMub3JnPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxNDQ4NzZhMzgwZjU3NTZmNTc0MTJjYWY3NGMxZDZkYzIwMWRkNzk2Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVR1ZSBBcHIgMjQgMjM6MDE6MDIgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBNVEQgcGFydGl0aW9uIHN1cHBvcnQsIEpGRlMyIHN1cHBvcnQKLQotY29tbWl0IDM3ZWQ2Y2RkNDE1OTE5NWJmYWQ2OGQ4YTIzN2Y2YWRkYThmNDgyY2IKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUdWUgQXByIDI0IDE0OjAzOjQ1IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogc2V0dXAgNDQwRVB4L0dSeCBaTUlJL1JHTUlJIGJyaWRnZSBkZXBlbmRpbmcgb24gUEZDIHJlZ2lzdGVyIGNvbnRlbnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IDY2ZWQ2Y2NhM2YzNDBmN2E4YTA2ZDkyNzJhZTJlZjhlOTZmMDI3M2QKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEFwciAyMyAwMjozNzo0NyAyMDA3IC0wNTAwCi0KLSAgICBSZXdvcmtlZCA4NXh4IHNwZWVkIGRldGVjdGlvbiBjb2RlCi0KLSAgICBDaGFuZ2VkIHRoZSBjb2RlIHRvIHJlYWQgdGhlIHJlZ2lzdGVycyBhbmQgY2FsY3VsYXRlIHRoZSBjbG9jawotICAgIHJhdGVzLCByYXRoZXIgdGhhbiB1c2luZyBhICJzd2l0Y2giIHN0YXRlbWVudC4KLQotICAgIElkZWEgZnJvbSBBbmRyZXcgS2xvc3NuZXIgPGFuZHJld0BjZXNhLm9wYnUueGVyb3guY29tPgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODFmNDgxY2E3MDhlZDZhNTZiZjljNDEwZTMxOTFkYmFkNTgxYzU2NQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDIzIDAyOjI0OjI4IDIwMDcgLTA1MDAKLQotICAgIEVuYWJsZSA4NTQ0IHN1cHBvcnQKLQotICAgICogQWRkIHN1cHBvcnQgdG8gdGhlIE1ha2VmaWxlCi0gICAgKiBBZGQgODU0NCBjb25maWd1cmF0aW9uIHN1cHBvcnQgdG8gdGhlIHRzZWMgZHJpdmVyCi0gICAgKiBBZGQgODU0NCBTVlIgbnVtYmVycyB0byBwcm9jZXNzb3IuaAotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGQ4YzNhMjA5NmVhZmY4ZDdkZTg5ZDQ1ZTlhZjRkNGIwZDQ4NjhmZQotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgRmViIDIzIDE3OjEyOjI1IDIwMDcgLTA2MDAKLQotICAgIFN1cHBvcnQgMUcgc2l6ZSBvbiA4NTQ4Ci0KLSAgICBlNTAwdjIgYW5kIG5ld2VyIGNvcmVzIHN1cHBvcnQgMUcgcGFnZSBzaXplcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDVjZWY2MTJjYzYwMWQyZDFjODkwZmJiZDdjZGM5NjA5YTE4OWE0NgotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgRmViIDIzIDE3OjExOjE2IDIwMDcgLTA2MDAKLQotICAgIENoYW5nZWQgQk9PS0VfUEFHRVNaX25HQiB0byBCT09LRV9QQUdFU1pfbkcKLQotICAgIFRoZSBvdGhlciBwYWdlc3ogY29uc3RhbnRzIHVzZSBvbmUgbGV0dGVyIHRvIHNwZWNpZnkgb3JkZXIgb2YKLSAgICBtYWduaXR1ZGUuCUFsc28gY2hhbmdlIHRoZSBvbmUgcmVmZXJlbmNlIHRvIGl0IGluIG1wYzg1NDhjZHMvaW5pdC5TCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAxZjlhMzE4Y2VhMTQyNzJlZGQxMGQ2MzczOWUyZDMyNmM5MGY0MzBlCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBGZWIgMjMgMTY6Mjg6NDYgMjAwNyAtMDYwMAotCi0gICAgT25seSBzZXQgZGRyaW9vdmNyIGZvciA4NTQ4IHJldjEuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkzNDNkYmY4NWJjMDMwMzNmMjEwMmQ4ZTg1NDM1NjdjMmMxYWQyZDIKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IEZlYiAyNCAwMToxNjo0NSAyMDA3IC0wNjAwCi0KLSAgICBUd2VhayBERFIgRUNDIGVycm9yIGNvdW50ZXIKLQotICAgIEVuYWJsZSBzaW5nbGUtYml0IGVycm9yIGNvdW50ZXIgd2hlbiBtZW1vcnkgd2FzIGNsZWFyZWQgYnkgZGRyIGNvbnRyb2xsZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg1ZTdjN2E0NWUzZGQ5YzdjZTNlNzIyMzUyYmE2MGY4ZGYxYTdhNGIKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBGZWIgMTIgMTM6MzQ6NTUgMjAwNyAtMDYwMAotCi0gICAgODV4eDogd3JpdGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgYW5kIGxvY2FsLW1hYy1hZGRyZXNzCi0KLSAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKLSAgICBhbmQgc29tZSBoYXZlIGJvdGguICBUbyBzdXBwb3J0IGFsbCBvZiB0aGVzZSBkZXZpY2UgdHJlZXMsIGZ0cF9jcHVfc2V0dXAoKQotICAgIHNob3VsZCB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgYW5kIGxvY2FsLW1hYy1hZGRyZXNzLCBpZiB0aGV5Ci0gICAgZXhpc3QuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDNiODFiNDhlZWMwYWQyNDllYzk3YTRhZTE2YzM2ZmEyZTAxNGZmNAotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDIzIDAxOjQ0OjQ0IDIwMDcgLTA1MDAKLQotICAgIFNvbWUgODV4eCBjcHUgY2xlYW51cHMKLQotICAgICogQ2xlYW5lZCB1cCB0aGUgVFNSW1dJU10gY2xlYXJpbmcKLSAgICAqIENsZWFuZWQgdXAgRE1BIGluaXRpYWxpemF0aW9uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0gICAgQWNrZWQtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE1MWQ1ZDk5MmVhYjhjNDk3YjI0YzgxNmM3M2RjMWFkOGJmZmI0ZWIKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEFwciAyMyAwMTozMjoyMiAyMDA3IC0wNTAwCi0KLSAgICBBZGQgY3B1IHN1cHBvcnQgZm9yIHRoZSA4NTQ0Ci0KLSAgICBSZWNvZ25pemUgbmV3IFNWUiB2YWx1ZXMsIGFuZCBhZGQgYSBmZXcgcmVnaXN0ZXIgZGVmaW5pdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjVkODNkN2Y0YWM2NTcyNzE4MmQ4ZGRhZjdiYTQyZmE3NGNmNjVhZQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEFwciAxMSAxNjo1MTowMiAyMDA3IC0wNTAwCi0KLSAgICBBZGQgTVBDODU0NERTIGJhc2ljIHBvcnQgYm9hcmQgZmlsZXMuCi0KLSAgICBBZGQgYm9hcmQgcG9ydCB1bmRlciBuZXcgYm9hcmQvZnJlZXNjYWxlIGRpcmVjdG9yeQotICAgIHN0cnVjdHVyZSBhbmQgcmV1c2UgZXhpc3RpbmcgUElYSVMgRlBHQSBzdXBwb3J0IHRoZXJlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGNkZTRiMDBmYzczOTNiODlmMzc5ZDgzYTlkNDM2ZGNiMTMzNGJmYQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEFwciAxMSAxNjo1MDo1NyAyMDA3IC0wNTAwCi0KLSAgICBBZGQgTVBDODU0NERTIG1haW4gY29uZmlndXJhdGlvbiBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0IDxFZC5Td2FydGhvdXRAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzYyZGQ4MzA3N2FjMDRjMDI5NmJjYTNlODI0ZWMyZmIzZDQ0ZDlkNgotQXV0aG9yOiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgotRGF0ZToJV2VkIERlYyAyNyAyMjowNzoxNSAyMDA2ICswMzAwCi0KLSAgICBGaXggUENJIEkvTyBzcGFjZSBtYXBwaW5nIG9uIEZyZWVzY2FsZSBNUEM4NXgwQURTCi0KLSAgICBUaGUgUENJIEkvTyBzcGFjZSBtYXBwaW5nIGZvciBGcmVlc2NhbGUgTVBDODU0MEFEUyBib2FyZCB3YXMgYnJva2VuIGJ5IGNvbW1pdAotICAgIDUyYzdhNjhiOGQ1ODdlYmNmNWE2YjA1MWI1OGIzZDNmZmEzNzdkZGMgd2hpY2ggZmFpbGVkIHRvIHVwZGF0ZSB0aGUgI2RlZmluZSdzCi0gICAgZGVzY3JpYmluZyB0aGUgbG9jYWwgYWRkcmVzcyB3aW5kb3cgdXNlZCBmb3IgdGhlIFBDSSBJL08gc3BhY2UgYWNjZXNzZXMgLS0gZml4Ci0gICAgdGhpcyBhbmQgY2Fycnkgb3ZlciB0aGUgbmVjZXNzYXJ5IGNoYW5nZXMgaW50byB0aGUgTVBDODU2MEFEUyBjb2RlIHNpbmNlIHRoZQotICAgIFBDSSBJL08gc3BhY2UgbWFwcGluZyB3YXMgYWxzbyBicm9rZW4gZm9yIHRoaXMgYm9hcmQgKGJ5IHRoZSBlYXJsaWVyIGNvbW1pdAotICAgIDA4NzQ1NDYwOWU0NzI5NTQ0M2FmNzkzYTI4MmNkZGNkOTFhNWY0OWMpLglBZGQgdGhlIGNvbW1lbnRzIGNsYXJpZnlpbmcgaG93Ci0gICAgdGhlIFBDSSBJL08gc3BhY2UgbXVzdCBiZSBtYXBwZWQgdG8gYWxsIHRoZSBNUEM4NXh4IGJvYXJkIGNvbmZpZy4gaGVhZGVycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNlcmdlaSBTaHR5bHlvdiA8c3NodHlseW92QHJ1Lm12aXN0YS5jb20+Ci0KLSAgICAgYm9hcmQvbXBjODU0MGFkcy9pbml0LlMJICB8ICAgIDQgKystLQotICAgICBib2FyZC9tcGM4NTYwYWRzL2luaXQuUwkgIHwgICAgNCArKy0tCi0gICAgIGluY2x1ZGUvY29uZmlncy9NUEM4NTQwQURTLmggfCAgICA1ICsrLS0tCi0gICAgIGluY2x1ZGUvY29uZmlncy9NUEM4NTQxQ0RTLmggfCAgICAyICstCi0gICAgIGluY2x1ZGUvY29uZmlncy9NUEM4NTQ4Q0RTLmggfCAgICAyICstCi0gICAgIGluY2x1ZGUvY29uZmlncy9NUEM4NTYwQURTLmggfCAgICA4ICsrKystLS0tCi0gICAgIDYgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTMgZGVsZXRpb25zKC0pCi0KLWNvbW1pdCA5NjYyOWNiYWJkYjcyN2Q0YTVlNjI1NDJkZWVmYzAxZDQ5OGRiNmRjCi1BdXRob3I6IFphbmcgUm95LXI2MTkxMSA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgRGVjIDUgMTY6NDI6MzAgMjAwNiArMDgwMAotCi0gICAgdS1ib290OiBGaXggZTUwMCB2MiBjb3JlIHJlc2V0IGJ1ZwotCi0gICAgVGhlIGZvbGxvd2luZyBwYXRjaCBmaXhlcyB0aGUgZTUwMCB2MiBjb3JlIHJlc2V0IGJ1Zy4KLSAgICBGb3IgZTUwMCB2MiBjb3JlLCBhIG5ldyByZXNldCBjb250cm9sIHJlZ2lzdGVyIGlzIGFkZGVkIHRvIHJlc2V0IHRoZQotICAgIHByb2Nlc3Nvci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYzMjQ3YTVhY2Q1ODAzMmU2Y2YzM2Y1MjViYzM5MjNiNDY3YmFjODgKLUF1dGhvcjogWmFuZyBSb3ktcjYxOTExIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBEZWMgMjAgMTE6MDE6MDAgMjAwNiArMDgwMAotCi0gICAgdS1ib290OiB2MjogUmVtb3ZlIHRoZSBmaXhlZCBUTEIgYW5kIExBVyBlbnRyeW51Ym1lcgotCi0gICAgUmVtb3ZlIHRoZSBmaXhlZCBUTEIgYW5kIExBVyBlbnRyeSBudWJtZXIuIFVzZSBhY3R1YWxseSBUTEIgYW5kIExBVwotICAgIGVudHJ5IG51bWJlciB0byBjb250cm9sIHRoZSBsb29wLiAgVGhpcyBjYW4gcmVkdWNlIHRoZSBwb3RlbnRpYWwgcmlzawotICAgIGZvciB0aGUgODV4eCBwcm9jZXNzb3IgaW5jcmVhc2luZyBpdHMgVExCIGFkbiBMQVcgZW50cnkgbnVtYmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3dhcnRob3V0IEVkd2FyZCA8c3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGIxOTM0YmExMmZkNDA4ZmNjM2I4YmQ5ZjRiMDQ4NjRjNDJhNDJiZgotQXV0aG9yOiBaYW5nIFJveS1yNjE5MTEgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIERlYyAxOCAxNzowMTowNCAyMDA2ICswODAwCi0KLSAgICB1LWJvb3Q6IEZpeCB0aGUgODV4eGNkcyB0c2VjIGJ1ZwotCi0gICAgRml4IHRoZSA4NXh4Y2RzIHRzZWMgYnVnLgotICAgIFdoZW4gZW5hYmxlIFBDSSwgdHNlYy5vIHNob3VsZCBiZSBhZGRlZCB0byB1LWJvb3QubGRzIHRvIG1ha2UgdHNlYyB3b3JrLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzMzN2IyMzdmZmM0YWFmMWI5NDY3MDI0ZmU0NzJhODgwZDg1MjU5OAotQXV0aG9yOiBaYW5nIFJveS1yNjE5MTEgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIERlYyAxNSAxNDo0MzozMSAyMDA2ICswODAwCi0KLSAgICB1LWJvb3Q6IEZpeCBDUFUyIGVycmF0YSBvbiBNUEM4NTQ4Q0RTIGJvYXJkCi0KLSAgICBUaGlzIHBhdGNoIGFwcGx5IHdvcmthcm91bmQgb2YgQ1BVMiBlcnJhdGEgb24gTVBDODU0OENEUyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6RWJvbnkgWmh1IDxlYm9ueS56aHVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDM5YjE4YzRmM2UwYjZkMGRjMDBmNGU2OGJhZDJkYTM3NjZjODVmMDkKLUF1dGhvcjogZWJvbnkuemh1QGZyZWVzY2FsZS5jb20gPGVib255LnpodUBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIERlYyAxOCAxNjoyNToxNSAyMDA2ICswODAwCi0KLSAgICB1LWJvb3Q6IERpc2FibGVzIE1QQzg1NDhDRFMgMlRfVElNSU5HIGZvciBERFIgYnkgZGVmYXVsdAotCi0gICAgVGhpcyBwYXRjaCBkaXNhYmxlcyBNUEM4NTQ4Q0RTIDJUX1RJTUlORyBmb3IgRERSIGJ5IGRlZmF1bHQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OkVib255IFpodSA8ZWJvbnkuemh1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0MWZiN2UwZjFlYzliOTFiZGFlMjU2NWJhYjVmMmUzZWUxNTAzOWM3Ci1BdXRob3I6IFphbmcgUm95LXI2MTkxMSA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgRGVjIDE0IDE0OjE0OjU1IDIwMDYgKzA4MDAKLQotICAgIHUtYm9vdDogRW5hYmxlIFBDSSBmdW5jdGlvbiBhbmQgYWRkIFBFWCAmIHJhcGlkaW8gbWVtb3J5IG1hcCBvbiBNUEM4NTQ4Q0RTIGJvYXJkCi0KLSAgICBFbmFibGUgUENJIGZ1bmN0aW9uIGFuZCBhZGQgUEVYICYgcmFwaWRpbyBtZW1vcnkgbWFwIG9uIE1QQzg1NDhDRFMKLSAgICBib2FyZC4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5NmI4YTA1NDMyZjM0NmYzNjQ5MzUzNWM4NTMyMGI3MGVjOWM3YzFiCi1BdXRob3I6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEFwciAxNiAxNDo1NDoxNSAyMDA3IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBBZGQgTVBDODMxM0VSREIgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNDllYTNiNmVhZmU2MDYyODVhZTRkNWMzNzgwMjYxNTNkZGU1MzIwMAotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBcHIgMTYgMTQ6MzQ6MjEgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogQWRkIGdlbmVyaWMgUENJIHNldHVwIGNvZGUuCi0KLSAgICBCb2FyZCBjb2RlIGNhbiBub3cgcmVxdWVzdCB0aGUgZ2VuZXJpYyBzZXR1cCBjb2RlIHJhdGhlciB0aGFuIGhhdmluZyB0bwotICAgIGNvcHktYW5kLXBhc3RlIGl0IGZvciB0aGVtc2VsdmVzLiAgQm9hcmRzIHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8gdXNlIHRoaXMKLSAgICBvbmNlIHRoZXkncmUgdGVzdGVkIHdpdGggaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDdjOThlNTE5M2U5M2RmNmI5YjY1MTg1MWQ1NGI2MzhhNjFlYmIwZWEKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDE2IDE0OjM0OjE5IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IEFkZCA4MzF4IHN1cHBvcnQgdG8gc3BlZWQuYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMGYyNTMyODNhMzJkOTFlMDY4NDRkN2Y4N2Y5YjMzZjRmNGZiY2U4ZgotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBcHIgMTYgMTQ6MzQ6MTggMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogQWRkIDgzMXggc3VwcG9ydCB0byBnbG9iYWxfZGF0YS5oCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk1ZTdlZjg5N2U1NDU5MWU2MTVmYzFiNDU4Yjc0YzI4NmZlMWZiMDYKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDE2IDE0OjM0OjE2IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IENoYW5nZSBQVlJfODN4eCB0byBQVlJfRTMwMEMxLTMsIGFuZCB1cGRhdGUgY2hlY2tjcHUoKS4KLQotICAgIFJhdGhlciB0aGFuIG1pc2xlYWRpbmdseSBkZWZpbmUgUFZSXzgzeHggYXMgdGhlIHNwZWNpZmljIHR5cGUgb2YgODN4eAotICAgIGJlaW5nIGJ1aWx0IGZvciwgdGhlIFBWUiBvZiBlYWNoIGNvcmUgcmV2aXNpb24gaXMgZGVmaW5lZC4gY2hlY2tjcHUoKSBub3cKLSAgICBwcmludHMgdGhlIGNvcmUgdGhhdCBpdCBkZXRlY3RzLCByYXRoZXIgdGhhbiBhYm9ydGluZyBpZiBpdCBkb2Vzbid0IGZpbmQKLSAgICB3aGF0IGl0IHRoaW5rcyBpdCB3YW50cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTM1YjBjNDk1MGQ4NGNmOWUzYTllMzJiOTE2MTM1OTU2ZDFhYzYzNgotQXV0aG9yOiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBBcHIgMTYgMTQ6MzQ6MTUgMjAwNyAtMDUwMAotCi0gICAgbXBjODN4eDogUmVjb2duaXplIFNQUiB2YWx1ZXMgZm9yIE1QQzgzMTEgYW5kIE1QQzgzMTMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTY290dCBXb29kIDxzY290dHdvb2RAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQ4N2M1N2IyMDFiNDU3MmQxNmYxYjY0Mjk5OGZhYTAwYzk5MTJiMTYKLUF1dGhvcjogU2NvdHQgV29vZCA8c2NvdHR3b29kQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXByIDE2IDE0OjMxOjU1IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IEFkZCByZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgTVBDODMxeC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNjb3R0IFdvb2QgPHNjb3R0d29vZEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2ZjNGM3MWExNDNiZTg2NjZkNzA4MDNmYjI1YWU2MDM3OWM5NTYyMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gQXByIDIzIDE1OjM5OjU5IDIwMDcgKzAyMDAKLQotICAgIEZpeCBmaWxlIG1vZGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDM4MjU3OTg4YWJmZTc0ZDQ1OWNhMmFkNzQ4YjEwOWNhMDRlNGVmZTEKLUF1dGhvcjogU2VyZ2VpIFNodHlseW92IDxzc2h0eWx5b3ZAcnUubXZpc3RhLmNvbT4KLURhdGU6CU1vbiBBcHIgMjMgMTU6MzA6MzkgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBBdm9pZCBhc3NpZ25pbmcgUENJIHJlc291cmNlcyBmcm9tIHplcm8gYWRkcmVzcwotCi0gICAgSWYgYSBQQ0kgSURFIGNhcmQgaGFwcGVucyB0byBnZXQgYSB6ZXJvIGFkZHJlc3MgYXNzaWduZWQgdG8gaXQsIHRoZSBMaW51eCBJREUKLSAgICBjb3JlIGNvbXBsYWlucyBhbmQgSURFIGRyaXZlcnMgZmFpbHMgdG8gd29yay4gIEFsc28sIGFzc2lnbmluZyB6ZXJvIHRvIGEgQkFSCi0gICAgd2FzIGlsbGVnYWwgYWNjb3JkaW5nIHRvIFBDSSAyLjEgKHRoZSBsYXRlciByZXZpc2lvbnMgc2VlbSB0byBoYXZlIGV4Y2x1ZGVkIHRoZQotICAgIHNlbnRlbmNlIGFib3V0ICIwIiBiZWluZyBjb25zaWRlcmVkIGFuIGludmFsaWQgYWRkcmVzcykgLS0gc28sIHVzZSBhIHJlYXNvbmFibGUKLSAgICBzdGFydGluZyB2YWx1ZSBvZiAweDEwMDAgKHRoYXQncyB3aGF0IHRoZSBtb3N0IExpbnV4IGFyY2hzIGFyZSB1c2luZykuCi0KLSAgICBBbHRlcm5hdGl2ZWx5LCBvbmUgbWlnaHQgaGF2ZSBmaXhlZCB0aGUgY2FsbHMgdG8gcGNpX3NldF9yZWdpb24oKSBpbmRpdmlkdWFsbHkKLSAgICAoc29tZSBjb2RlIGV2ZW4gc2VlbXMgdG8gaGF2ZSB0YWtlbiBjYXJlIG9mIHRoaXMgaXNzdWUpIGJ1dCB0aGF0IHdvdWxkIGhhdmUKLSAgICBiZWVuIGEgbG90IG1vcmUgd29yay4gOi0pCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTZXJnZWkgU2h0eWx5b3YgPHNzaHR5bHlvdkBydS5tdmlzdGEuY29tPgotICAgIEFja2VkLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBhZmI5MDNhMmViOTQzNmJhYTkyNzBjY2MwYzI3MDgyZDg2NDk3ZDg5Ci1BdXRob3I6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgotRGF0ZToJTW9uIEFwciAyMyAxNDowMDoxMSAyMDA3ICswMjAwCi0KLSAgICBbcGF0Y2hdIHNldGVudiguLi4pIGNhbiBkZWxldGUgZW52aXJvbm1lbnRhbHZhcmlhYmxlcwotCi0gICAgdXBkYXRlIHNldGVudigpIGZ1bmN0aW9uIHNvIHRoYXQgZW50ZXJpbmcgYSBOVUxMIHZhbHVlIGZvciB0aGUKLSAgICB2YXJpYWJsZSdzIHZhbHVlIHdpbGwgZGVsZXRlIHRoZSBlbnZpcm9ubWVudGFsIHZhcmlhYmxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KLSAgICBBY2tlZC1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzZmMTA0ZTVjYWE3NDdkNTY4ZWZmMjZiMzY5NTY1YWY1N2MyZmZhNgotQXV0aG9yOiBNaWtlIEZyeXNpbmdlciA8dmFwaWVyQGdlbnRvby5vcmc+Ci1EYXRlOglNb24gQXByIDIzIDEzOjU0OjI0IDIwMDcgKzAyMDAKLQotICAgIFtwYXRjaF0gdXNlIHVuc2lnbmVkIGNoYXIgaW4gc21jOTExMTEgZHJpdmVyIGZvciBtYWMKLQotICAgIHRoZSB2X21hYyB2YXJpYWJsZSBpbiB0aGUgc21jOTExMTEgZHJpdmVyIGlzIGRlY2xhcmVkIGFzIGEgc2lnbmVkIGNoYXIgLi4uCi0gICAgdGhpcyBjYXVzZXMgcHJvYmxlbXMgd2hlbiBvbmUgb2YgdGhlIGJ5dGVzIGluIHRoZSBNQUMgaXMgInNpZ25lZCIgbGlrZSAweEUwCi0gICAgYmVjYXVzZSB3aGVuIGl0IGdldHMgcHJpbnRlZCBvdXQsIHlvdSBnZXQgYSBkaXNwbGF5IGxpa2U6Ci0gICAgMHhGRkZGRkZFMCBhbmQgdGhhdCdzIG5vIGdvb2QKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1pa2UgRnJ5c2luZ2VyIDx2YXBpZXJAZ2VudG9vLm9yZz4KLQotY29tbWl0IGQ5OGMwODg1YWQ2MTdmY2NmMjFlN2MyNmVmOGNiNzI4ZmJmYjI0NTkKLUF1dGhvcjogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAZW5uZWVubmUuY29tPgotRGF0ZToJTW9uIEFwciAyMyAxMzoxMDo1MiAyMDA3ICswMjAwCi0KLSAgICBVU0I6IChBbm90aGVyKSBkZWxheSBmb3IgY3JhcHB5IFVTQiBrZXlzLgotCi0gICAgU29tZSBVU0Iga2V5cyBhcmUgc2xvdyBpbiBnaXZpbmcgYmFjayBhbiBhbnN3ZXIgd2hlbiB0aGUgUm9vdCBIVUIKLSAgICBlbmFibGVzIHBvd2VyIGxpbmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUm9kb2xmbyBHaW9tZXR0aSA8Z2lvbWV0dGlAbGludXguaXQ+Ci0KLWNvbW1pdCAzMjNiZmE4ZjQzNmRjM2JjNTcxODdjOWIxNDg4YmMzMTQ2ZmYxNTIyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBBcHIgMjMgMTI6MDA6MjIgMjAwNyArMDIwMAotCi0gICAgUmVtb3ZlIEJPQVJETElCUyB1c2FnZSBjb21wbGV0ZWx5Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAzMjU1NjQ0Mzg0MGYxMjcxNzBlNGJhYThiZGQ1YjU2NzAzOWY2YzM2Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVNhdCBBcHIgMjEgMjE6MDc6MjIgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBTeXN0ZW1BQ0Ugc3VwcG9ydCBmb3IgTWljcm9ibGF6ZQotCi1jb21taXQgMDY0MzYzMWFhMTAzNmNkNzQ2YmY1ZDE1ZjVhMzRiYzdiYzAxZWE0ZgotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTYXQgQXByIDIxIDIxOjAyOjQwIDIwMDcgKzAyMDAKLQotICAgIDE2Yml0IHJlYWQvd3JpdGUgbGl0dGxlIGVuZGlhbgotCi1jb21taXQgOWQxZDZhMzRkMjZjNTkzM2JjMDk3Y2U3M2M5MzQ4Zjk1NTczY2RkNAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTYXQgQXByIDIxIDIwOjUzOjMxIDIwMDcgKzAyMDAKLQotICAgIENoYW5nZSBNTDQwMSBwYXJhbWV0ZXJzIC0gWGlsaW54IEJTUAotCi1jb21taXQgMmUzNDNiOWE1N2YzMmUxYmQwOGMzNWM5OTc2OTEwMzMzZmI0ZTEzZAotQXV0aG9yOiBFZCBTd2FydGhvdXQgPEVkLlN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAyOCAwNTozNzoyOSAyMDA3IC0wNjAwCi0KLSAgICBtcGM4NjQxaHBjbjogRml4IExBVyBhbmQgVExCIHNldHVwIHRvIHVzZSB0aGUgSU9fUEhZUyAjZGVmaW5lcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3OWNiNDczOTFlZWJlZjg1YWNhZGIzZjY5NjFlZjZjNTVjYWNlNmFjCi1BdXRob3I6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSmFuIDE5IDEwOjQyOjM3IDIwMDcgKzA4MDAKLQotICAgIEVuYWJsZSBMQVdzIGZvciBNUEM4NjQxIFBDSS1FeDIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZDc4NTFjZTFlMWYxNDA2NjViNTIwMDI2YWJmMTA0Mjk2OGIxMTAyCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgQXByIDIwIDE0OjEyOjI2IDIwMDcgLTA1MDAKLQotICAgIG1wYzg2eHg7IFdyaXRlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcwotCi0gICAgU29tZSBkZXZpY2UgdHJlZXMgaGF2ZSBhIG1hYy1hZGRyZXNzIHByb3BlcnR5LCBzb21lIGhhdmUgbG9jYWwtbWFjLWFkZHJlc3MsCi0gICAgYW5kIHNvbWUgaGF2ZSBib3RoLiAgVG8gc3VwcG9ydCBhbGwgb2YgdGhlc2UgZGV2aWNlIHRyZWVzLCBmdHBfY3B1X3NldHVwKCkKLSAgICBzaG91bGQgd3JpdGUgdGhlIE1BQyBhZGRyZXNzIHRvIG1hYy1hZGRyZXNzIGFuZCBsb2NhbC1tYWMtYWRkcmVzcywgaWYgdGhleQotICAgIGV4aXN0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgN2RiZGYyOGI4YmQ4NTVhODUzMGRjMzI5MmU0OTgyNTc1YTE5NzA2MAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEFwciAyMCAxNDoxMTozOCAyMDA3IC0wNTAwCi0KLSAgICBtcGM4Nnh4OiBwcm90ZWN0IG1lbWNweSB0byBiYWQgYWRkcmVzcyBpZiBhIG1hYy1hZGRyZXNzIGlzIG1pc3NpbmcgZnJvbSBkdAotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTRkYTVmNzY3NWJiYjQyN2M0NjllM2Y0NTAwNmUwMjdiNmUyMWRiOQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJRnJpIEFwciAyMCAxNzo0MzoyOCAyMDA3ICswMjAwCi0KLSAgICBDbGVhbnVwIGNvbXBpbGVyIHdhcm5pbmdzLCB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNjkyMzU2NWRiMTJhZjM0ZmQ1ZTAyZDM1NGVlNjVhOGM3OGFjNDYwZgotQXV0aG9yOiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLURhdGU6CUZyaSBBcHIgMjAgMTI6MDE6NDcgMjAwNyArMDIwMAotCi0gICAgRml4IGJyZWFrYWdlIG9mIE5DNjUwIGJvYXJkIHdpdGggcmVzcGVjdCB0byBuYW5kIHN1cHBvcnQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEZXRsZXYgWnVuZGVsIDxkenVAZGVueC5kZT4KLQotY29tbWl0IDM5ZjIzY2Q5MDk0NzYzOWFjMjc4YTE4ZmYyNzdlYzc4NmI1YWMxNjcKLUF1dGhvcjogRG9tZW4gUHVuY2VyIDxkb21lbi5wdW5jZXJAdGVsYXJnby5jb20+Ci1EYXRlOglGcmkgQXByIDIwIDExOjEzOjE2IDIwMDcgKzAyMDAKLQotICAgIFtSRkMgUEFUQ0hdIGljZWN1YmUvbGl0ZTUyMDBiOiBmaXggT0ZfVEJDTEsgKHRpbWViYXNlLWZyZXF1ZW5jeSkgY2FsY3VsYXRpb24KLQotICAgIEcyIGNvcmUgcmVmZXJlbmNlIG1hbnVhbCBzYXlzIGRlY3JlbWVudGVyIGFuZCB0aW1lIGJhc2UKLSAgICBhcmUgZGVjcmVhc2luZy9pbmNyZWFzaW5nIG9uY2UgZXZlcnkgNCBidXMgY2xvY2sgY3ljbGVzLgotICAgIExldHMgZml4IGl0LCBzbyB0aW1lIGluIExpbnV4IHdvbid0IHJ1biB0d2ljZSBhcyBmYXN0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEb21lbiBQdW5jZXIgPGRvbWVuLnB1bmNlckB0ZWxhcmdvLmNvbT4KLSAgICBBY2tlZC1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgNzY1MWY4YmRiYmEwM2JiMGI0ZjI0MWUyZDJjNGNiNjViMjMwYmQ1NgotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJVGh1IEFwciAxOSAyMzoxNDozOSAyMDA3IC0wNDAwCi0KLSAgICBGaXggc2VyaW91cyBwb2ludGVyIGJ1ZyB3aXRoIGJvb3RtIGFuZCByZXNlcnZlIG1hcC4KLQotICAgIFdoYXQgd2FzIHN1cHBvc2UgdG8gYmUgYSBzdGFjayB2YXJpYWJsZSB3YXMgZGVjbGFyZWQgYXMgYSBwb2ludGVyLAotICAgICAgb3ZlcndyaXRpbmcgcmFuZG9tIG1lbW9yeS4KLSAgICBBbHNvIG1vdmVkIHRoZSBsaWJmZHQuYSByZXF1aXJlbWVudCBpbnRvIHRoZSBtYWluIE1ha2VmaWxlLiAgVGhhdCBpcwotICAgICAgVGhlIFUtQm9vdCBXYXkuCi0KLWNvbW1pdCBkMjE2ODYyNjM1NzRlOTVjYjNlOWU5YjA0OTZmOTY4YjFiODk3ZmRiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBBcHIgMTkgMDk6NTM6NTIgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggY2hpcCBzZWxlY3QgdGltaW5nIGZvciBTeXNBQ0UgYWNjZXNzIG9uIEFNQ0MgS2F0bWFpCi0KLSAgICBQcmV2aW91cyB2ZXJzaW9ucyB1c2VkIGZ1bGwgd2FpdCBzdGF0ZXMgZm9yIHRoZSBjaGlwIHNlbGVjdCAjMSB3aGljaAotICAgIGlzIGNvbm5lY3RlZCB0byB0aGUgWGlsaW5peCBTeXN0ZW1BQ0UgY29udHJvbGxlciBvbiB0aGUgQU1DQyBLYXRtYWkKLSAgICBldmFsdWF0aW9uIGJvYXJkLiBUaGlzIGxlYWRzIHRvIHJlYWxseSBzbG93IGFjY2VzcyBhbmQgdGhlcmVmb3JlIGxvdwotICAgIHBlcmZvcm1hbmNlLiBUaGlzIHBhdGNoIG5vdyBzZXRzIHVwIHRoZSBjaGlwIHNlbGVjdCBhIGxvdCBmYXN0ZXIKLSAgICByZXN1bHRpbmcgaW4gbXVjaCBiZXR0ZXIgcmVhZC93cml0ZSBwZXJmb3JtYW5jZSBvZiB0aGUgTGludXggZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzc4Mzc4MjhkODkwODQ4NzliZWUyZjJiOGM3YzY4ZDQ2OTU5NDBkZgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxOCAxNzo0OToyOSAyMDA3ICswMjAwCi0KLSAgICBDbGVuYXVwLCB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgZmQwOTRjNjM3OWUyZWY4YTRkMGNlYjU2NDBiMjRjYjBjOGQwNDQ0OQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxOCAxNzoyMDo1OCAyMDA3ICswMjAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMmEyNmVjNDczMmVmZDdhMzA4ZDBiYmM5NzcxNGMxZDc1ZWYxMTczYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxOCAxNzowNzoyNiAyMDA3ICswMjAwCi0KLSAgICBDbGVhbnVwLCB1cGRhdGUgQ0hBTkdFTE9HCi0KLSAgICBTaWdlbmQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgNWY2YzczMmFmZmVhOTY0Nzc2MmQyN2E0NjE3YTJhZTY0YzUyZGNlYgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJV2VkIEFwciAxOCAxNjoxNzo0NiAyMDA3ICswMjAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLWNvbW1pdCBhZDRlYjU1NTY3MWQ5N2Y5NmRjNTZlYWI1NTEwM2IxZjg2ODc0YjAxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDE4IDE0OjMwOjM5IDIwMDcgKzAyMDAKLQotICAgIE1DQzIwMCBib2FyZDogcmVtb3ZlIHdhcm5pbmcgd2hpY2ggaXMgb2Jzb2xldGUgYWZ0ZXIgUFNvQyBmaXJtd2FyZSBjaGFuZ2VzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgMzc0N2EzZjAxMGIyYjE0NDJkZWMzZTg3MWM2OTc4OGI2MDE3YWFhZQotQXV0aG9yOiBEb21lbiBQdW5jZXIgPGRvbWVuLnB1bmNlckB0ZWxhcmdvLmNvbT4KLURhdGU6CVdlZCBBcHIgMTggMTI6MTE6MDUgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBpY2VjdWJlL2xpdGU1MjAwYjogZG9jdW1lbnQgd2FrZXVwIGZyb20gbG93LXBvd2VyIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IERvbWVuIFB1bmNlciA8ZG9tZW4ucHVuY2VyQHRlbGFyZ28uY29tPgotCi1jb21taXQgZTY3MzIyNmZmOWQ2YWE5MWI0N2NlYWM3NGI4YzEzNzcwYjA2YmIzNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDE4IDEyOjA3OjQ3IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEFjYWRpYSB0byBub3Qgc2V0dXAgUExMIHdoZW4gYm9vdGluZyB2aWEgYm9vdHN0cmFwIEVFUFJPTQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTBlNmY0MWNmMDlmYzk4ZjZjY2I1MTBlMTgzZDUzYWI4NTQ2Y2YyZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgQXByIDE4IDEyOjA1OjU5IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQWRkIG91dHB1dCBmb3IgYm9vdHJvbSBsb2NhdGlvbiB0byA0MDVFWiBwb3J0cwotCi0gICAgTm93IDQwNUVaIHBvcnRzIGFsc28gc2hvdyB1cG9uIGJvb3R1cCBmcm9tIHdoaWNoIGJvb3QgZGV2aWNlCi0gICAgdGhleSBhcmUgY29uZmlndXJlZCB0byBib290OgotCi0gICAgVS1Cb290IDEuMi4wLWdkMzgzMmU4Zi1kaXJ0eSAoQXByIDE4IDIwMDcgLSAwNzo0NzowNSkKLQotICAgIENQVTogICBBTUNDIFBvd2VyUEMgNDA1RVogUmV2LiBBIGF0IDE5OS45OTkgTUh6IChQTEI9MTMzLCBPUEI9NjYsIEVCQz02NiBNSHopCi0JICAgQm9vdHN0cmFwIE9wdGlvbiBFIC0gQm9vdCBST00gTG9jYXRpb24gRUJDICgzMiBiaXRzKQotCSAgIDE2IGtCIEktQ2FjaGUgMTYga0IgRC1DYWNoZQotICAgIEJvYXJkOiBBY2FkaWEgLSBBTUNDIFBQQzQwNUVaIEV2YWx1YXRpb24gQm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDljMDBkZmIwYmY4OWM4YzIzZThhZjViNWJkZjQ5Y2Y2NmQ3NjlmODUKLUF1dGhvcjogUGV0ZXIgUGVhcnNlIDxwZXRlci5wZWFyc2VAYXJtLmNvbT4KLURhdGU6CVR1ZSBBcHIgMTcgMTM6MzA6MzMgMjAwNyArMDEwMAotCi0gICAgTW92ZSBwcGVhcnNlIHRvIEFSTSBib2FyZCBsaXN0Ci0gICAgQWRkIEtvbnN0YW50aW4gS2xldHNjaGtlIGZvciBzY2I5MzI4LgotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFBlYXJzZSA8cGV0ZXIucGVhcnNlQGFybS5jb20+Ci0KLWNvbW1pdCBkMzgzMmU4ZmUxYjIxNGVjNjI0MjRlYWMzNmNmZGE5ZmM1NmQyMWIzCi1BdXRob3I6IERvbWVuIFB1bmNlciA8ZG9tZW4ucHVuY2VyQHRlbGFyZ28uY29tPgotRGF0ZToJTW9uIEFwciAxNiAxNDowMDoxMyAyMDA3ICswMjAwCi0KLSAgICBbUEFUQ0hdIGljZWN1YmUvbGl0ZTUyMDBiOiB3YWtldXAgZnJvbSBsb3ctcG93ZXIgc3VwcG9ydAotCi0gICAgVS1Cb290IHBhcnQgb2YgTGl0ZTUyMDBiIGxvdyBwb3dlciBtb2RlIHN1cHBvcnQuCi0gICAgUHV0cyBTRFJBTSBvdXQgb2Ygc2VsZi1yZWZyZXNoIGFuZCB0cmFuc2ZlcnMgY29udHJvbCB0bwotICAgIGFkZHJlc3Mgc2F2ZWQgYXQgcGh5c2ljYWwgMHgwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRG9tZW4gUHVuY2VyIDxkb21lbi5wdW5jZXJAdGVsYXJnby5jb20+Ci0gICAgQWNrZWQtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGYzNWE1M2ZjN2IwYzc5ZmNmZTdiZGMwMTE2M2M0YjM0YWFiYTE0NjAKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVN1biBBcHIgMTUgMTM6NTQ6MjYgMjAwNyAtMDQwMAotCi0gICAgRml4IHRoZSBmdF9jcHVfc2V0dXAoKSBwcm9wZXJ0eSBzZXR0aW5ncy4KLQotICAgIFVzZSAic2V0dGVyIiBmdW5jdGlvbnMgaW5zdGVhZCBvZiBmbGFncywgY2xlYW5lciBhbmQgbW9yZSBmbGV4aWJsZS4KLSAgICBJdCBhbHNvIGZpeGVzIHRoZSBwcm9ibGVtIG5vdGVkIGJ5IFRpbXVyIFRhYmkgdGhhdCB0aGUgZXRoZXJuZXQgTUFDCi0gICAgYWRkcmVzc2VzIHdlcmUgYWxsIGJlaW5nIHNldCBpbmNvcnJlY3RseSB0byB0aGUgc2FtZSBNQUMgYWRkcmVzcy4KLQotY29tbWl0IGMyOGFiYjljNjE0ZjY1Y2UyMDk2Y2M0YTY2ZmM4ODZjNzdkMGU1YTQKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVNhdCBBcHIgMTQgMjI6NTE6MjQgMjAwNyAtMDQwMAotCi0gICAgSW1wcm92ZSB0aGUgYm9vdG0gY29tbWFuZCBmb3IgQ09ORklHX09GX0xJQkZEVAotCi0gICAgSW4gYm9vdG0sIGNyZWF0ZSB0aGUgIi9jaG9zZW4iIG5vZGUgb25seSBpZiBpdCBkb2Vzbid0IGFscmVhZHkgZXhpc3QKLSAgICAgIChiZXR0ZXIgbWF0Y2hlcyB0aGUgcHJldmlvdXMgYmVoYXZpb3IpLgotICAgIFVwZGF0ZSBmb3IgcHJvcGVyIHJlc2VydmVkIG1lbW9yeSBtYXAgaGFuZGxpbmcgZm9yIGluaXRyZC4KLQotY29tbWl0IDNmOWYwOGNmOTFjOGE2OTQ5YTVkNzhhMThiZDNkOGRmN2I4NmQ4ODgKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVNhdCBBcHIgMTQgMjI6NDY6NDEgMjAwNyAtMDQwMAotCi0gICAgQWRkIHNvbWUgdXRpbGl0aWVzIHRvIG1hbmlwdWxhdGUgdGhlIHJlc2VydmVkIG1lbW9yeSBtYXAuCi0KLWNvbW1pdCA4MDQ4Y2RkNTZmMDRhNzU2ZWVlYTQ5NTFmNDAyYmY1Y2MzMzc4NWRiCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglTYXQgQXByIDE0IDIxOjE2OjU0IDIwMDcgKzAyMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotY29tbWl0IDhlNjg3NTE4M2NkY2E5MWMxMzQ0MDhkMTE5ZDRhYmNkNDhlZjY4NTYKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTdW4gRGVjIDE3IDE4OjU2OjQ2IDIwMDYgKzAxMDAKLQotICAgIEFWUjMyOiBFbmFibGUgTU1DIHN1cHBvcnQKLQotICAgIFNldCB1cCB0aGUgcG9ydG11eCBmb3IgdGhlIE1NQyBpbnRlcmZhY2UgYW5kIGVuYWJsZSB0aGUgTU1DIGRyaXZlcgotICAgIGFsb25nIHdpdGggc3VwcG9ydCBmb3IgRE9TIHBhcnRpdGlvbnMsIGV4dDIgYW5kIEZBVCBmaWxlc3lzdGVtcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgZmMyNmM5N2JiNmRmNDFiNGE5NTY2MmMzNDA1NGZlOTEyMzg3YmYzOAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBKYW4gMjAgMTA6MDM6NTMgMjAwNiArMDEwMAotCi0gICAgQXRtZWwgTUNJIGRyaXZlcgotCi0gICAgRHJpdmVyIGZvciB0aGUgQXRtZWwgTUNJIGNvbnRyb2xsZXIgKE1NQyBpbnRlcmZhY2UpIGZvciBBVDMyQVAgQ1BVcy4KLQotICAgIFRoZSBBVDkxIEFSTS1iYXNlZCBDUFVzIHVzZSBiYXNpY2FsbHkgdGhlIHNhbWUgaGFyZHdhcmUsIHNvIGl0IHNob3VsZAotICAgIGJlIHBvc3NpYmxlIHRvIHNoYXJlIHRoaXMgZHJpdmVyLCBidXQgbm8gZWZmb3J0IGhhcyBiZWVuIG1hZGUgc28gZmFyLgotCi0gICAgSGFyZHdhcmUgZG9jdW1lbnRhdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlIEFUMzJBUDcwMDAgZGF0YSBzaGVldCwKLSAgICB3aGljaCBjYW4gYmUgZG93bmxvYWRlZCBmcm9tCi0KLSAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcHJvZHVjdHMvZGF0YXNoZWV0cy5hc3A/ZmFtaWx5X2lkPTY4MgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAwNWZkYWIxZWY2YTEwZDA0OWE1MDAyMWE4NmYxMjI2ZjQ0NGQ5YjlmCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU3VuIERlYyAxNyAxODo1NTozNyAyMDA2ICswMTAwCi0KLSAgICBBVlIzMjogQWRkIGNsayBhbmQgZ3BpbyBpbmZyYXN0cnVjdHVyZSBmb3IgbW1jaQotCi0gICAgSW1wbGVtZW50IGZ1bmN0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIG1tY2kgcGlucywgYXMgd2VsbCBhcwotICAgIGZ1bmN0aW9ucyBmb3IgZ2V0dGluZyB0aGUgY2xvY2sgcmF0ZSBvZiB0aGUgbW1jaSBjb250cm9sbGVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA3ZmFjM2Y2OWU5ZjA1YzVlNTMyNjY4MTk3NmMzNWQxMjkzMjRjNGRlCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU3VuIERlYyAxNyAxODo1Mzo1NiAyMDA2ICswMTAwCi0KLSAgICBFbmFibGUgcGFydGl0aW9uIHN1cHBvcnQgd2l0aCBNTUMKLQotICAgIEluY2x1ZGUgaW1wbGVtZW50YXRpb25zIG9mIGluaXRfcGFydCgpIGFuZCBnZXRfcGFydGl0aW9uX2luZm8oKSB3aGVuCi0gICAgQ09ORklHX01NQyBpcyBzZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDlhMjRmNDc3YTFlZDViYjBmNzQzNzdjOTg1ZDc1NGViYmZhNDQ4NzIKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTdW4gRGVjIDE3IDE3OjE0OjMwIDIwMDYgKzAxMDAKLQotICAgIEFWUjMyOiBFbmFibGUgbmV0d29ya2luZwotCi0gICAgSW1wbGVtZW50IE1BQ0IgaW5pdGlhbGl6YXRpb24gZm9yIEFWUjMyIGFuZCBBVFNUSzEwMDAsIGFuZCB0dXJuCi0gICAgZXZlcnl0aGluZyBvbiwgaW5jbHVkaW5nIHRoZSBNQUNCIGRyaXZlci4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNWMxZmUxZmZmZmQxNzUwYTdlNDdlNWEyZTJjZDYwMGMwMGU0ZjAwOQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CUZyaSBKYW4gMjAgMTA6MDM6MzQgMjAwNiArMDEwMAotCi0gICAgQXRtZWwgTUFDQiBldGhlcm5ldCBkcml2ZXIKLQotICAgIERyaXZlciBmb3IgdGhlIEF0bWVsIE1BQ0Igb24tY2hpcCBldGhlcm5ldCBjb250cm9sbGVyLgotCi0gICAgVGhpcyBkcml2ZXIgaGFzIGJlZW4gdGVzdGVkIG9uIHRoZSBBVFNUSzEwMDAgYm9hcmQgd2l0aCBhIEFUMzJBUDcwMDAKLSAgICBDUFUuIEl0IHNob3VsZCBwcm9iYWJseSB3b3JrIG9uIEFUOTFTQU05MjZ4IGFzIHdlbGwgd2l0aCBzb21lIG1pbm9yCi0gICAgbW9kaWZpY2F0aW9ucy4KLQotICAgIEhhcmR3YXJlIGRvY3VtZW50YXRpb24gY2FuIGJlIGZvdW5kIGluIHRoZSBBVDMyQVA3MDAwIGRhdGEgc2hlZXQsCi0gICAgd2hpY2ggY2FuIGJlIGRvd25sb2FkZWQgZnJvbQotCi0gICAgaHR0cDovL3d3dy5hdG1lbC5jb20vZHluL3Byb2R1Y3RzL2RhdGFzaGVldHMuYXNwP2ZhbWlseV9pZD02ODIKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgYjRlYzljMmQ0M2Q4OTQ3MjliYjYzM2JmZGJkZmE5NWE5NjJjMTU1NgotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVN1biBEZWMgMTcgMTY6NTY6MTQgMjAwNiArMDEwMAotCi0gICAgQVZSMzI6IEFkZCBjbGsgYW5kIGdwaW8gaW5mcmFzdHJ1Y3R1cmUgZm9yIG1hY2IwIGFuZCBtYWNiMQotCi0gICAgSW1wbGVtZW50IGZ1bmN0aW9ucyBmb3IgY29uZmlndXJpbmcgdGhlIG1hY2IwIGFuZCBtYWNiMSBwaW5zLCBhcwotICAgIHdlbGwgYXMgZnVuY3Rpb25zIGZvciBnZXR0aW5nIHRoZSBjbG9jayByYXRlIG9mIHRoZSB2YXJpb3VzCi0gICAgYnVzc2VzIHRoZSBtYWNiIGV0aGVybmV0IGNvbnRyb2xsZXJzIGFyZSBjb25uZWN0ZWQgdG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGQ1YWNiOTViMTZhMGE3NGM2NDM1MjQzNDJjMzQzN2U3NjU0MjZkMDUKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTdW4gRGVjIDE3IDE1OjM5OjE1IDIwMDYgKzAxMDAKLQotICAgIEFWUjMyOiBJbXBsZW1lbnQgc2ltcGxlIERNQSBtZW1vcnkgYWxsb2NhdG9yCi0KLSAgICBJbXBsZW1lbnQgZG1hX2FsbG9jX2NvaGVyZW50KCkgd2hpY2ggcmV0dXJucyBjYWNoZS1hbGlnbmVkCi0gICAgdW5jYWNoZWFibGUgbWVtb3J5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA5MTk3NWIwZmVhNzczYzllNjgxZmVhOGNmMzM0OTY2OWYyNzY4NWVlCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU3VuIERlYyAxNyAxNTo0NjowMiAyMDA2ICswMTAwCi0KLSAgICBJbXBvcnQgPGxpbnV4L21paS5oPiBmcm9tIHRoZSBMaW51eCBrZXJuZWwKLQotICAgIEluc3RlYWQgb2YgY3JlYXRpbmcgeWV0IGFub3RoZXIgc2V0IG9mIE1JSSByZWdpc3RlciBkZWZpbml0aW9ucwotICAgIGluIHRoZSBtYWNiIGRyaXZlciwgaGVyZSdzIGEgY29tcGxldGUgc2V0IG9mIGRlZmluaXRpb25zIGZvciBldmVyeW9uZQotICAgIHRvIHVzZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMWI4MDRiMjI5NTU2YTRkODYyZGE5M2MwZWM5NGU3OTQxOTM2NGIyYwotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVdlZCBNYXIgMjEgMTk6NDc6MzYgMjAwNyArMDEwMAotCi0gICAgQVZSMzI6IEluY2x1ZGUgbW9yZSBjb21tYW5kcyBmb3IgQVRTVEsxMDAwCi0KLSAgICBJbmNsdWRlIHRoZSBpbWksIGltbHMgYW5kIGpmZnMgY29tbWFuZHMgc2V0cyBieSBkZWZhdWx0IG9uIEFUU1RLMTAwMC4KLSAgICBBbHNvIGRlZmluZSBDT05GSUdfQk9PVEFSR1MgdG8gc29tZXRoaW5nIG1vcmUgdXNlZnVsLCBkZWZpbmUKLSAgICBDT05GSUdfQk9PVENPTU1BTkQgYW5kIGVuYWJsZSBhdXRvYm9vdCBieSBkZWZhdWx0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCA5YzBkZWI1YWUzZWEwMTg5ZjJlMDhhYzI5ZWYxMzE2ZjFmYjg1NDhkCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJV2VkIE1hciAyMSAxOTo0NDo0OCAyMDA3ICswMTAwCi0KLSAgICBBVlIzMjogUHJvdmlkZSBhIGRlZmluaXRpb24gb2Ygc3RydWN0IHN0YXQKLQotICAgIENvcHkgdGhlIGRlZmluaXRpb24gb2Ygc3RydWN0IHN0YXQgZnJvbSB0aGUgTGludXgga2VybmVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAxMmYwOTljMDgxNjdhN2E1MWFlZWU2MjNiYzE2ZGFmZDA4NDEyNzFjCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU3VuIERlYyAxNyAxNDo0NjowNiAyMDA2ICswMTAwCi0KLSAgICBBVlIzMjogVXNlIGluaXRkcmFtKCkgaW5zdGVhZCBvZiBib2FyZF9pbml0X21lbW9yaWVzKCkKLQotICAgIENvbmZvcm0gdG8gdGhlICJzdGFuZGFyZCIgaW50ZXJmYWNlIGFuZCB1c2UgaW5pdGRyYW0oKSBpbnN0ZWFkIG9mCi0gICAgYm9hcmRfaW5pdF9tZW1vcmllcygpIG9uIEFWUjMyLiBUaGlzIGVuYWJsZXMgdXMgdG8gZ2V0IHJpZCBvZiB0aGUKLSAgICBzZHJhbV9zaXplIG1lbWJlciBvZiB0aGUgZ2xvYmFsX2RhdGEgc3RydWN0IGFzIHdlbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDFmNGYyMTIxYzI2ODUxODJlYjg3ZmE5YTliNzk5ZDE5MTczODdhMWMKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglNb24gTm92IDIwIDE1OjUzOjEwIDIwMDYgKzAxMDAKLQotICAgIEFWUjMyOiBSZWxvY2F0ZSB1LWJvb3QgdG8gU0RSQU0KLQotICAgIFJlbG9jYXRlIHRoZSB1LWJvb3QgaW1hZ2UgaW50byBTRFJBTSBsaWtlIGV2ZXJ5b25lIGVsc2UgZG9lcy4gVGhpcwotICAgIG1lYW5zIHRoYXQgd2UgY2FuIGhhbmRsZSBtdWNoIGxhcmdlciAuZGF0YSBhbmQgLmJzcyB0aGFuIHdlIHVzZWQgdG8uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGRmNTQ4ZDNjM2UyYmJjNDAyNTg3MTMxNjc4NTlmZmMyY2U5OWE5MDAKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTdW4gTm92IDE5IDE4OjA2OjUzIDIwMDYgKzAxMDAKLQotICAgIEFWUjMyOiBSZXNvdXJjZSBtYW5hZ2VtZW50IHJld3JpdGUKLQotICAgIFJld3JpdGUgdGhlIHJlc291cmNlIG1hbmFnZW1lbnQgY29kZSAoaS5lLiBJL08gbWVtb3J5LCBjbG9jayBnYXRpbmcsCi0gICAgZ3Bpbykgc28gaXQgZG9lc24ndCBkZXBlbmQgb24gYW55IGdsb2JhbCBzdGF0ZS4gVGhpcyBpcyBuZWNlc3NhcnkKLSAgICBiZWNhdXNlIHRoaXMgY29kZSBpcyBoZWF2aWx5IHVzZWQgYmVmb3JlIHJlbG9jYXRpb24gdG8gUkFNLCBzbyB3ZQotICAgIGNhbid0IHdyaXRlIHRvIGFueSBnbG9iYWwgdmFyaWFibGVzLgotCi0gICAgQXMgYW4gYWRkZWQgYm9udXMsIHRoaXMgbWFrZXMgdS1ib290J3MgbWVtb3J5IGZvb3RwcmludCBhIGJpdCBzbWFsbGVyLAotICAgIGFsdGhvdWdoIHNvbWUgZnVuY3Rpb25hbGl0eSBoYXMgYmVlbiBsZWZ0IG91dDsgYWxsIGNsb2NrcyBhcmUgZW5hYmxlZAotICAgIGFsbCB0aGUgdGltZSwgYW5kIHRoZXJlJ3Mgbm8gY2hlY2tpbmcgZm9yIGdwaW8gbGluZSBjb25mbGljdHMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDAzZDFlMTM2NTc5NmNkMTVkMTcyNmU4YTUxZmQ4YjViZTUwYjJmZTkKLUF1dGhvcjogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci1EYXRlOglTYXQgTm92IDE4IDE4OjAxOjEzIDIwMDYgKzAxMDAKLQotICAgIEFWUjMyOiBDbGVhbiB1cCBtZW1vcnktbWFwLmggZm9yIGF0MzJhcDcwMDAKLQotICAgIENvbnZlcnQgc3BhY2VzIHRvIHRhYnMgKG11c3QgaGF2ZSBtaXNzZWQgdGhpcyBvbmUgbGFzdCB0aW1lIGFyb3VuZCksCi0gICAgc29ydCB0aGUgZW50cmllcyBieSBhZGRyZXNzIGFuZCBncm91cCB0aGVtIHRvZ2V0aGVyIGJ5IGJ1cwotICAgIGNvbm5lY3Rpdml0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgMjhjNjk5ZWY2OWY0YjZjZGYyNTJlNDc0N2I3YjU5MDAyOGE4ODk4MQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVNhdCBOb3YgMTggMTc6MzI6MzEgMjAwNiArMDEwMAotCi0gICAgQVZSMzI6IEJ1aWxkIHBvc2l0aW9uLWluZGVwZW5kZW50IHUtYm9vdAotCi0gICAgQWRkIC1mUElDIC1tbm8taW5pdC1nb3QgdG8gdGhlIGF2cjMyLXNwZWNpZmljIENGTEFHUyB0byBtYWtlIHUtYm9vdAotICAgIHBvc2l0aW9uIGluZGVwZW5kZW50LiBUaGlzIHdpbGwgbWFrZSByZWxvY2F0aW9uIGEgbG90IGVhc2llci4KLQotICAgIC1tbm8taW5pdC1nb3QgbWVhbnMgdGhhdCBnY2Mgc2hvdWxkbid0IGVtaXQgY29kZSB0byBsb2FkIHRoZSBHT1QKLSAgICBhZGRyZXNzIGludG8gcjYgaW4gZXZlcnkgZnVuY3Rpb24gcHJvbG9ndWUuIFdlIGRvIGl0IG9uY2UgYW5kIGZvcgotICAgIGFsbCBpbiB0aGUgZWFybHkgc3RhcnR1cCBhc3NlbWJseSBjb2RlLCBzbyBlbmFibGluZyB0aGlzIG9wdGlvbgotICAgIG1ha2VzIHUtYm9vdCBhIGJpdCBmYXN0ZXIgYW5kIHNtYWxsZXIuCi0KLSAgICBUaGUgYXNzZW1ibHkgcGFydHMgaGF2ZSBhbHdheXMgYmVlbiBwb3NpdGlvbi1pbmRlcGVuZGVudCwgc28gbm8gY29kZQotICAgIGNoYW5nZXMgc2hvdWxkIGJlIG5lY2Vzc2FyeS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgNTM3NGIzNmRlOTFkMDA2ZDFkZjk1MzYyNTlmYTlmNjZiMDFhYTNhYQotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVNhdCBOb3YgMTggMTc6MjQ6MzEgMjAwNiArMDEwMAotCi0gICAgQVZSMzI6IFVzZSBhdnIzMi1saW51eC0gY3Jvc3MtY29tcGlsYXRpb24gcHJlZml4IGJ5IGRlZmF1bHQKLQotICAgIEl0IGRvZXNuJ3QgcmVhbGx5IG1hdHRlciB3aGljaCB0b29sY2hhaW4geW91IHVzZSB0byBjb21waWxlIHUtYm9vdCwKLSAgICBidXQgdGhlIGF2cjMyLWxpbnV4IG9uZSBpcyBwcm9iYWJseSB3aGF0IG1vc3QgcGVvcGxlIGhhdmUgaW5zdGFsbGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBjODQxYmVlZGRlYmVjZTAwMzllNzI0ZmIyN2Y0ZDFhMzllZTFjNmI2Ci1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJU2F0IE5vdiAxOCAxNzoxNTozMCAyMDA2ICswMTAwCi0KLSAgICBBVlIzMjogU3BsaXQgc3RhcnRfdV9ib290IGludG8gYm9hcmRfaW5pdF9mIGFuZCBib2FyZF9pbml0X3IKLQotICAgIFNwbGl0IHRoZSBhdnIzMiBpbml0aWFsaXphdGlvbiBjb2RlIGludG8gYSBmdW5jdGlvbiB0byBydW4gYmVmb3JlCi0gICAgcmVsb2NhdGlvbiwgYm9hcmRfaW5pdF9mIGFuZCBhIGZ1bmN0aW9uIHRvIHJ1biBhZnRlciByZWxvY2F0aW9uLAotICAgIGJvYXJkX2luaXRfci4gRm9yIG5vdywgYm9hcmRfaW5pdF9mIHNpbXBseSBjYWxscyBib2FyZF9pbml0X3IKLSAgICBhdCB0aGUgZW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAzNzQwMzAwNWNmZTZiYjEzOTY0ZDQ1MGY2YTQ4YTBiMGYyZjcwMTdlCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CVNhdCBBcHIgMTQgMDU6MjY6NDggMjAwNyArMDIwMAotCi0gICAgW0ZpeF0JU2V0IHRoZSBMRUQgc3RhdHVzIHJlZ2lzdGVyIG9uIHRoZSBVQzEwMSBmb3IgdGhlIExYVDk3MSBQSFkuCi0JICAgIGNsZWFyIHRoZSBEaXNwbGF5IGFmdGVyIHJlc2V0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA3ODgyNzUxYzc4YjdlY2FiZmQ0OWIwZWZmOGRlMjc2NjFjNzFmMTZjCi1BdXRob3I6IERlbmlzIFBldGVyIDxkLnBldGVyQG1wbC5jaD4KLURhdGU6CUZyaSBBcHIgMTMgMDk6MTM6MzMgMjAwNyArMDIwMAotCi0gICAgW1BBVENIXSBGaXggYnVncyBpbiBjbWRfaWRlLmMgYW5kIGNtZF9zY3NpLmMKLQotICAgIEZpeCBidWcgaW50cm9kdWNlZCBieSAiRml4IGdldF9wYXJ0aXRpb25faW5mbygpIHBhcmFtZXRlciBlcnJvciBpbiBhbGwKLSAgICBvdGhlciBjYWxscyIgZnJvbSAyMDA1LTAzLTA0IGluIGNtZF9pZGUuYyBhbmQgY21kX3Njc2kuYywgd2hpY2ggcHJldmVudGVkCi0gICAgdG8gdXNlIGRpc2tib290IG9yIHNjc2lib290IGZvcm0gYW5vdGhlciBkZXZpY2UgdGhhbiAwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRGVuaXMgUGV0ZXIgPGQucGV0ZXJAbXBsLmNoPgotCi1jb21taXQgMGI5NDUwNGQyMmU3MGY1MzdjMTdhMGQzOGM4N2VkYjZlMzcwOTc3ZAotQXV0aG9yOiBHcmVnIExvcHAgPGxvcHBAcG9ib3guY29tPgotRGF0ZToJRnJpIEFwciAxMyAwODowMjoyNCAyMDA3ICswMjAwCi0KLSAgICBbUEFUQ0hdIEZpeCB1c2Ugb2YgInZvaWQgKiIgZm9yIGJsb2NrIGRldiByZWFkL3dyaXRlIGJ1ZmZlciBwb2ludGVycwotCi0gICAgU2lnbmVkLW9mLWJ5OiBHcmVnIExvcHAgPGxvcHBAcG9ib3guY29tPgotICAgIEFja2VkLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA2ZmJmMjYxZjhkZjI5NGU1ODljZmFkZWJlYmU1NDY4ZTNjMGYyOWU5Ci1BdXRob3I6IFhpZSBYaWFvYm8gPHI2MzA2MUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE1hciA5IDE5OjA4OjI1IDIwMDcgKzA4MDAKLQotICAgIEZpeCB0d28gYnVncyBmb3IgTVBDODN4eCBERFIyIGNvbnRyb2xsZXIgU1BEIEluaXQKLQotICAgIFRoZXJlIGFyZSBhIGZldyBidWdzIGluIHRoZSBjcHUvbXBjODN4eC9zcGRfc2RyYW0uYwotICAgIHRoZSBmaXJzdCBidWcgaXMgdGhhdCB0aGUgcGljb3NfdG9fY2xrIHJvdXRpbmUgaW50cm9kdWNlcyBhIGh1Z2UKLSAgICByb3VuZGluZyBlcnJvciBpbiA4M3h4LgotICAgIHRoZSBzZWNvbmQgYnVnIGlzIHRoYXQgdGhlIG1vZGUgcmVnaXN0ZXIgd3JpdGUgcmVjb3ZlcnkgZmllbGQgaXMKLSAgICB0V1ItMSwgbm90IHRXUiA+PiAxLgotCi1jb21taXQgMmFkM2FiYTAxZDM3YjcyZTdjOTU3YjA3ZTEwMmZjY2Q2NGZlNmQxMwotQXV0aG9yOiBKZWZmcmV5IE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KLURhdGU6CVRodSBBcHIgMTIgMTQ6MTU6NTkgMjAwNyArMDIwMAotCi0gICAgcHBjNHh4OiBGaXggaTJjIGRpdmlzb3IgY2FsY3VsYXJpb24gZm9yIFBQQzR4eAotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBjaGFuZ2VzIHRoZSBpMmNfaW5pdCguLi4pIGZ1bmN0aW9uIHRvIHVzZSB0aGUgZnVuY3Rpb24KLSAgICBnZXRfT1BCX2ZyZXEoKSByYXRoZXIgdGhhbiBjYWxjdWxhdGluZyB0aGUgT1BCIHNwZWVkIGJ5Ci0gICAgc3lzSW5mby5mcmVxUExCL3N5c0luZm8ucGxsT3BiRGl2LiBUaGUgZ2V0X09QQl9mcmVxKCkgZnVuY3Rpb24gaXMKLSAgICBzcGVjaWZpYyBwZXIgcHJvY2Vzc29yLiBUaGUgcHJpb3IgbWV0aG9kIHdhcyBub3QgYW5kIHNvIHdhcyBjYWxjdWxhdGluZwotICAgIHRoZSB3cm9uZyBzcGVlZCBmb3Igc29tZSBQUEM0eHggcHJvY2Vzc29ycy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplZmZyZXkgTWFubiA8bWFubmpAZW1iZWRkZWRwbGFuZXQuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZjOWJhOTE5Mzc1ZGI5NzdhYWFkOTE0NmJmMzIwYzdhZmQwN2FlN2EKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgMTEgMTc6MjU6MDEgMjAwNyArMDIwMAotCi0gICAgVXBkYXRlIENIQU5HRUxPRwotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLQotY29tbWl0IDUxMDU2ZGQ5ODYzZTZhMWJjMzYzYWZiYmUxNzc1YzU4Y2Q5Njc0MTgKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgMTEgMTc6MjI6NTUgMjAwNyArMDIwMAotCi0gICAgVXBkYXRlIGZvciBTQzMgYm9hcmQKLQotICAgICogTWFrZSBJREUgdGltZW91dCBjb25maWd1cmFibGUgdGhyb3VnaCBpZGVfcmVzZXRfdGltZW91dCB2YXJpYWJsZS4KLSAgICAqIFVzZSBOZXdsaW5lIGFzICJwYXNzd29yZCIgc3RyaW5nCi0gICAgKiBVc2UganVzdCBhIHNpbmdsZSBwYXJ0aXRpb24gaW4gTkFORCBmbGFzaAotCi1jb21taXQgM2Q5OGI4NTgwMGM4MGRjNjgyMjdjOGYxMGJmNWM5MzQ1NmQ2ZDA1NAotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEphbiAyMiAxMjozNzozMCAyMDA3IC0wNjAwCi0KLSAgICBBZGQgUElYSVMgRlBHQSBzdXBwb3J0IGZvciBNUEM4NjQxSFBDTiBib2FyZC4KLQotICAgIE1vdmUgdGhlIDg2NDFIUENOJ3MgUElYSVMgY29kZSB0byB0aGUgbmV3IGRpcmVjdG9yeQotICAgIGJvYXJkL2ZyZWVzY2FsZS9jb21tb24vIGFzIGl0IHdpbGwgYmUgc2hhcmVkIGJ5Ci0gICAgZnV0dXJlIGJvYXJkcyBub3QgaW4gdGhlIHNhbWUgcHJvY2Vzc29yIGZhbWlseS4KLQotICAgIFdyaXRlIGEgInBpeGlzX3Jlc2V0IiBjb21tYW5kIHRoYXQgdXRpbGl6ZXMgdGhlIEZQR0EKLSAgICByZXNldCBzZXF1ZW5jZXIgdG8gc3VwcG9ydCBhbHRlcm5hdGUgc29mdC1yZXNldCBvcHRpb25zCi0gICAgc3VjaCBhcyB1c2luZyB0aGUgImFsdGVybmF0ZSIgZmxhc2ggYmFuaywgZW5hYmxpbmcKLSAgICB0aGUgd2F0Y2ggZG9nLCBvciBjaG9vc2luZyBkaWZmZXJlbnQgQ1BVIGZyZXF1ZW5jaWVzLgotCi0gICAgQWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBwaXhpc19yZXNldCB0byBSRUFETUUubXBjODY0MWhwY24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2NGRiYmQ0MGM1ODM0OWI2NGY0M2ZkMzNkYmI1Y2EwYWRiNjdkNjQyCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglGcmkgQXByIDYgMTQ6MTk6NDMgMjAwNyAtMDQwMAotCi0gICAgTW92ZWQgZmR0IGNvbW1hbmQgc3VwcG9ydCBjb2RlIHRvIGZkdF9zdXBwb3J0LmMKLQotICAgIC4uLmluIHByZXBhcmF0aW9uIGZvciBpbXByb3ZpbmcgdGhlIGJvb3RtIGNvbW1hbmQncyBoYW5kbGluZyBvZiBmZHQgYmxvYnMuCi0gICAgQWxzbyBjbGVhbmVkIHVwIHNvbWUgY29kaW5nIHNsb3BwaW5lc3MuCi0KLWNvbW1pdCA2Njc5ZjkyOTk1MzRlNDg4YTE3MWE5YmI4ZjliYjg5MWRlMjQ3YWFiCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglGcmkgQXByIDYgMTQ6MTc6MTQgMjAwNyAtMDQwMAotCi0gICAgbGliZmR0OiBNYWtlIGZkdF9jaGVja19oZWFkZXIoKSBwdWJsaWMKLQotICAgIENoYW5nZWQgX2ZkdF9jaGVja19oZWFkZXIoKSB0byBmZHRfY2hlY2tfaGVhZGVyKCkgYW5kIG1hZGUgaXQgcGFydCBvZgotICAgIHRoZSBpbnRlcmZhY2UgLSBpdCBpcyBhIHVzZWZ1bCByb3V0aW5lLgotCi0gICAgQWxzbyBkaWQgc29tZSBhc3RoZXRpY3MgY2xlYW51cCB0byB0aGUgaW5jbHVkZSBmaWxlcyAoaGVhZGVycykuCi0KLWNvbW1pdCBjMDcwN2NlNjU2Nzc2NTBiNWNlYWIwNTAwZWU1MGFlNTE2OGFmZWYyCi1BdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+Ci1EYXRlOglUaHUgQXByIDUgMTg6MzQ6MDYgMjAwNyArMDgwMAotCi0gICAgW0JsYWNrZmluXVtQQVRDSF0gS2lsbCBvZmYgYSBidW5jaCBvZiBjb21tb24gbG9jYWwgcHJvdG90eXBlcwotCi1jb21taXQgN2I3ZTMwYWE2NGJiNjY1N2ExYmZkMzJmZGJkYmZlYjU2MWU2YTQ4ZAotQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJVGh1IEFwciA1IDE4OjMzOjA0IDIwMDcgKzA4MDAKLQotICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEZpeCBkeW5hbWljIENQTEIgZ2VuZXJhdGlvbiBpc3N1ZQotCi1jb21taXQgMDQ0NWUzYTI2NDI1MWQ3NWIxYmU0NWVmNzEzYzcwNzI2YTI5NTJmMAotQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJVGh1IEFwciA1IDE4OjMxOjQ3IDIwMDcgKzA4MDAKLQotICAgIFtCbGFja2Zpbl1bUEFUQ0hdIG1pbmlvciBjbGVhbnVwCi0KLWNvbW1pdCAxNTVmZDc2NjU3Mzk4MTA5MGU2MzhiNDkzZDU4NTc1NjIxNTE4NjJlCi1BdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+Ci1EYXRlOglUaHUgQXByIDUgMTg6MzE6MTggMjAwNyArMDgwMAotCi0gICAgW0JsYWNrZmluXVtQQVRDSF0gRml4IGNvcHlyaWdodCBhbmQgdXBkYXRlIGxpY2Vuc2UKLQotY29tbWl0IDlmZDQzN2JiZDc1ZDI4MmY4OTllMWRhNTBiZTIwYTJiZjM4NDUwYmMKLUF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KLURhdGU6CVRodSBBcHIgNSAxODozMDoyNSAyMDA3ICswODAwCi0KLSAgICBbQmxhY2tmaW5dW1BBVENIXSBBZGQgQkY1MzcgRU1BQyBkcml2ZXIgaW5pdGlhbGl6YXRpb24KLQotY29tbWl0IDg4OTI1NmU4NjA0ZTBjNjhkYjFkODY2ZDcyMDg5NGRmZmVkZTlkZjYKLUF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KLURhdGU6CVRodSBBcHIgNSAxODoyOTo1NSAyMDA3ICswODAwCi0KLSAgICBbQmxhY2tmaW5dW1BBVENIXSBjYWxsIHJlYWwgdGhlIHN5c3RlbSBzeW5jaHJvbml6ZSBpbnN0cnVjdGlvbgotCi1jb21taXQgZTBkZjFjOTIxYjc4ODI4OTU2NGU0YzFlZTcxMjBhNmE5Y2QzYWIwNQotQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJVGh1IEFwciA1IDE4OjI5OjE3IDIwMDcgKzA4MDAKLQotICAgIFtCbGFja2Zpbl1bUEFUQ0hdIHJlbW92ZSBhc20vcGFnZS5oIGFzIHdlIGRvIG5vdCBhY3R1YWxseSB1c2Uvd2FudCBhbnkgb2YgdGhlc2UgZGVmaW5pdGlvbnMgbm9yIGRvZXMgYW55IG90aGVyIGFyY2ggaW5jbHVkZSBpdAotCi1jb21taXQgZGZlZWFiMmNkNjgwZGYwNDdlNjhlNzIzYjI0NmFkZjZmMzNiYjU1NgotQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJVGh1IEFwciA1IDE4OjI4OjM0IDIwMDcgKzA4MDAKLQotICAgIFtCbGFja2Zpbl1bUEFUQ0hdOiBmaXggZmxhc2ggdW5hbGlnbmVkIGNvcHkgaXNzdWUKLQotY29tbWl0IDQ0M2ZlYjc0MDU4NGU0MDZlZmEyMDNhZjkwOWZlMjkyNjYwOGU4ZDUKLUF1dGhvcjogSWdvciBNYXJuYXQgPG1hcm55QHJhbWJsZXIucnU+Ci1EYXRlOglXZWQgTWFyIDIxIDA5OjU1OjAxIDIwMDcgKzAzMDAKLQotICAgIFVwZGF0ZSB1c2FnZSBvZiAnbmMnIGluIFJFQURNRS5OZXRDb25zb2xlCi0KLSAgICBBZGRlZCBpbmZvcm1hdGlvbiBhYm91dCB1c2FnZSBvZiBOZXRDb25zb2xlIG9uIHN5c3RlbXMgd2hlcmUgdGhlIC1sIGFuZCAtcAotICAgIHN3aXRjaGVzIGFyZSBtdXR1YWxseSBleGNsdXNpdmUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBJZ29yIE1hcm5hdCA8bWFybnlAcmFtYmxlci5ydT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLQotY29tbWl0IDMxYzk4YTg4MjI4MDIxYjMxNGM4OWViYjgxMDRmYjY0NzNkYTQ0NzEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgNCAwMjowOTozMCAyMDA3ICswMjAwCi0KLSAgICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KLQotY29tbWl0IDk0YWJkN2MwNTgzZWJlMDFlNzk5YjI1ZjQ1MTIwMWRlZWFhYjU1MGQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBBcHIgNCAwMTo0OToxNSAyMDA3ICswMjAwCi0KLSAgICBNaW5vciBjbGVhbnVwLgotCi1jb21taXQgODIyYWYzNTFhZDJiYWJjN2Q5OTAzMzM2MWE1ZmNhY2QzMGY2YmM3OAotQXV0aG9yOiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+Ci1EYXRlOglUdWUgQXByIDMgMTQ6Mjc6MTggMjAwNyArMDIwMAotCi0gICAgU3VwcG9ydCBmb3IgdGhlIFBoaWxpcHMgSVNQMTE2eCBIQ0QgKEhvc3QgQ29udHJvbGxlciBEcml2ZXIpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+Ci0KLWNvbW1pdCBlZGY1ODUxYmU2YzE3YzAzMWQ0ZjcxZGQ1YjBhMTIwNDBiN2M1MGM4Ci1BdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglUdWUgQXByIDMgMTQ6Mjc6MDggMjAwNyArMDIwMAotCi0gICAgVVNCOiBjbGVhbnVwIG1vbmFoYW5zIHVzYiBzdXBwb3J0LiBSZW1vdmUgZGVhZCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IGE2NWM1NzY4ZTU1Mzc1MzBiZDE3ODBhZjNkM2ZkZGMzMTEzYTE2M2MKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEFwciAyIDEwOjA5OjMwIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ2hhbmdlIFN5c0FDRSBhZGRyZXNzIG9uIEthdG1haQotCi0gICAgV2l0aCB0aGlzIG5ldyBiYXNlIGFkZHJlc3Mgb2YgdGhlIFhpbGlueCBTeXN0ZW1BQ0UgY29udHJvbGxlcgotICAgIHRoZSBMaW51eCBkcml2ZXIgd2lsbCBiZSBlYXNpZXIgdG8gYWRhcHQsIHNpbmNlIGl0IGNhbiBub3cgYmUKLSAgICBtYXBwZWQgdmlhIHRoZSAibm9ybWFsIiBpb3JlbWFwKCkgY2FsbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGFlYTAzYzRlOGMzYTIxY2U0M2QzZmFmNDhhNmU2ZDQ3NGM4YmRmNzMKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVNhdCBNYXIgMzEgMTQ6MzA6NTMgMjAwNyAtMDQwMAotCi0gICAgRml4IHNvbWUgbWlub3Igd2hpdGVzcGFjZSB2aW9sYXRpb25zLgotCi1jb21taXQgMjEzYmY4YzgyMmRlOGVlY2FmNjk4NjA2ODQ0NjljZGFiYTJlOWU2YQotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJU2F0IE1hciAzMSAxMjoyMzo1MSAyMDA3IC0wNDAwCi0KLSAgICBBZGQgYSBmbGF0dGVuZWQgZGV2aWNlIHRyZWUgKGZkdCkgY29tbWFuZCAoMiBvZiAyKQotCi0gICAgTW9kaWZpY2F0aW9ucyB0byB0aGUgZXhpc3RpbmcgY29kZSB0byBzdXBwb3J0IHRoZSBuZXcgZmR0IGNvbW1hbmQuCi0KLWNvbW1pdCA3ODFlMDllZTZlM2UzZTM5MmFiMzYyYzFmMGVmMTA2OGFkYzc2ZTNlCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglTYXQgTWFyIDMxIDEyOjIyOjEwIDIwMDcgLTA0MDAKLQotICAgIEFkZCBhIGZsYXR0ZW5lZCBkZXZpY2UgdHJlZSAoZmR0KSBjb21tYW5kICgxIG9mIDIpCi0KLSAgICBUaGUgZmR0IGNvbW1hbmQgdXNlcyBEYXZpZCBHaWJzb24ncyBsaWJmZHQgbGlicmFyeSB0byBtYW5pcHVsYXRlIGFzIHdlbGwKLSAgICBhcyBwcmludCB0aGUgZmxhdHRlbmVkIGRldmljZSB0cmVlLiAgVGhpcyBwYXRjaCBpcyB0aGUgbmV3IGNvbW1hbmQsCi0gICAgdGhlIHNlY29uZCBwYXJ0IGlzIHRoZSBtb2RpZmljYXRpb25zIHRvIHRoZSBleGlzdGluZyBjb2RlLgotCi1jb21taXQgM2FmMGQ1ODdkOTNlMGJlNWY5NmUxYjMwZmE0MWU2NjJmOGIwODAzZQotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJU2F0IE1hciAzMSAxMjoxMzo0MyAyMDA3IC0wNDAwCi0KLSAgICBsaWJmZHQ6IEVuaGFuY2VkIGFuZCBwdWJsaXNoZWQgZmR0X25leHRfdGFnKCkKLQotICAgIEVuaGFuY2VkIHRoZSBmb3JtZXJseSBwcml2YXRlIGZ1bmN0aW9uIF9mZHRfbmV4dF90YWcoKSB0byBhbGxvdyBzdGVwcGluZwotICAgICAgdGhyb3VnaCB0aGUgdHJlZSwgdXNlZCB0byBwcm9kdWNlIGEgaHVtYW4tcmVhZGFibGUgZHVtcCwgYW5kIG1hZGUKLSAgICAgIGl0IHBhcnQgb2YgdGhlIHB1Ymxpc2hlZCBpbnRlcmZhY2UuCi0gICAgQWxzbyBhZGRlZCBzb21lIGNvbW1lbnRzLgotCi1jb21taXQgZmEzYTc0Y2VjNzNkZmQwNmE1YWUzNWE5YTMzNjgyMDAyNzNhYWE3MQotQXV0aG9yOiBHZXJhbGQgVmFuIEJhcmVuIDx2YW5iYXJlbkBjaWRlYXMuY29tPgotRGF0ZToJU2F0IE1hciAzMSAxMjowNTozOSAyMDA3IC0wNDAwCi0KLSAgICBsaWJmZHQ6IEN1c3RvbWl6YXRpb25zIGZvciB1c2UgYnkgdS1ib290LgotCi0gICAgQ2hhbmdlcyB0byBEYXZpZCBHaWJzb24ncyBvcmlnaW5hbCBzb3VyY2UgdG8gZml0IGludG8gdS1ib290J3MKLSAgICBlbnZpcm9ubWVudC4gIE5vIGZ1bmN0aW9uYWxpdHkgY2hhbmdlcy4KLQotY29tbWl0IDM1NzQ4MTc3YzY0YTRhODNhMDAwNTdlOTNiYjMzZTQwMjc4YTJhOTYKLUF1dGhvcjogR2VyYWxkIFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLURhdGU6CVNhdCBNYXIgMzEgMTI6MDA6NTYgMjAwNyAtMDQwMAotCi0gICAgbGliZmR0OiBJbXBvcnQgbGliZmR0IHNvdXJjZSAoMiBvZiAyKQotCi0gICAgVGhpcyBhZGRzIHRoZSBhcHBsaWNhYmxlIGxpYmZkdCBzb3VyY2UgZmlsZXMgKHVubW9kaWZpZWQpIGFuZCBhIFJFQURNRQotICAgIHRvIGV4cGxhaW4gd2hlcmUgdGhlIHNvdXJjZSBjYW1lIGZyb20uCi0KLWNvbW1pdCA3Y2Q1ZGEwZmU4NzdlNzE3MWE0Y2RkNDQ4ODBiY2U3ODMxMzI4NzFhCi1BdXRob3I6IEdlcmFsZCBWYW4gQmFyZW4gPHZhbmJhcmVuQGNpZGVhcy5jb20+Ci1EYXRlOglTYXQgTWFyIDMxIDExOjU5OjU5IDIwMDcgLTA0MDAKLQotICAgIGxpYmZkdDogSW1wb3J0IGxpYmZkdCBzb3VyY2UgKDEgb2YgMikKLQotICAgIFRoaXMgYWRkcyB0aGUgYXBwbGljYWJsZSBsaWJmZHQgc291cmNlIGZpbGVzICh1bm1vZGlmaWVkKSBhbmQgYSBSRUFETUUKLSAgICB0byBleHBsYWluIHdoZXJlIHRoZSBzb3VyY2UgY2FtZSBmcm9tLgotCi1jb21taXQgZGE2ZWJjMWJjMDgyY2JlM2I2YmJkZTA3OWNhZmUwOWY3ZWJiYWQ0YgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWFyIDMxIDEzOjE2OjIzIDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIEthdG1haSBib290c3RyYXAgY29tbWFuZAotCi0gICAgTm93IHRoZSBERFIyIGZyZXF1ZW5jeSBpcyBhbHNvIDIqUExCIGZyZXF1ZW5jeSB3aGVuIDE2Nk1IeiBQTEIKLSAgICBpcyBzZWxlY3RlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGNhYmVlNzU2YTY1MzI5ODY3Mjk0NzdjM2NjMWVhMTZlZjg1MTdhZDIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IE1hciAzMSAxMzoxNTowNiAyMDA3ICswMjAwCi0KLSAgICBwcGM0eHg6IFVwZGF0ZSA0NHhfc3BkX2RkcjIgY29kZSAoNDQwU1AvNDQwU1BlKQotCi0gICAgQWRkaXRpb25hbCBSQU0gaW5mb3JtYXRpb24gaXMgbm93IHByaW50ZWQgdXBvbiBwb3dlcnVwLCBsaWtlCi0gICAgRERSMiBmcmVxdWVuY3kgYW5kIENBUyBsYXRlbmN5LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjA3MjM4MDM0MzFhYzc1Y2FkMDg1NjkwNzg5ZTQzM2Q1YWI5MTc0ZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWFyIDMxIDA4OjQ4OjM2IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogQ2hhbmdlIFl1Y2NhIGNvbmZpZyBmaWxlIHRvIHN1cHBvcnQgRUNDCi0KLSAgICBXaXRoIHRoZSB1cGRhdGVkIDQ0eCBERFIyIGRyaXZlciB0aGUgWXVjY2EgYm9hcmQgbm93IHN1cHBvcnRzCi0gICAgRUNDIGdlbmVyYXRpb24gYW5kIGNoZWNraW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDkwZTU3MzBjNjc0YjIwZDcwOGI3ODNhMmM1ZmZkNzIwOGY4Mzg3MwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWFyIDMxIDA4OjQ3OjM0IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogRml4ICJib290c3RyYXAiIGNvbW1hbmQgZm9yIEthdG1haSBib2FyZAotCi0gICAgVGhlIGJvYXJkIHNwZWNpZmljICJib290c3RyYXAiIGNvbW1hbmQgaXMgbm93IGZpeGVkIGFuZCBjYW4KLSAgICBiZSB1c2VkIGZvciB0aGUgQU1DQyBLYXRtYWkgYm9hcmQgdG8gY29uZmlndXJlIGRpZmZlcmVudAotICAgIENQVS9QTEIvT1BCIGZyZXF1ZW5jaWVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgOTRmNTQ3MDNjM2E3NzZlYzIzZTQyN2NhMmExNmUwYTc5YTVkNTBjMQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgTWFyIDMxIDA4OjQ2OjA4IDIwMDcgKzAyMDAKLQotICAgIHBwYzR4eDogVXBkYXRlIDQ0eF9zcGRfZGRyMiBjb2RlICg0NDBTUC80NDBTUGUpCi0KLSAgICBGaXggYSBidWcgaW4gdGhlIGF1dG8gY2FsaWJyYXRpb24gcm91dGluZS4gVGhpcyBkcml2ZXIgbm93IHJ1bnMKLSAgICBtb3JlIHJlbGlhYmxlIHdpdGggdGhlIHRlc3RlZCBtb2R1bGVzLiBJdCdzIGFsc28gdGVzdGVkIHdpdGgKLSAgICAxNjdNSHogUExCIGZyZXF1ZW5jeSAoNjY3TUh6IEREUjIgZnJlcXVlbmN5KSBvbiB0aGUgS2F0bWFpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzQyY2QwOTdiZTFlN2FmZmU4MmY0MmFiM2RhMjIwOTU5YTY5OWU2NAotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglGcmkgTWFyIDMwIDIyOjUyOjA5IDIwMDcgKzAyMDAKLQotICAgIFtQQVRDSF0gQ2xlYW4gaW5jbHVkZSBkZXBlbmRlbmNlCi0KLWNvbW1pdCA2ZjkzNDIxMGZiMjkzZmRlMmNmYjQyNTFjNmQ5NmZkYzU4YjZhOTA2Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CUZyaSBNYXIgMzAgMjI6NDI6NDUgMjAwNyArMDIwMAotCi0gICAgW0NMRUFOXSBSZW1vdmUgaW5lZmZpY2llbnQgU3V6YWt1IGNvZGUKLQotY29tbWl0IDQzMGYxYjBmOWE2NzBjMmYxM2VhYTUyZTY2YTEwZGI5NmRkMzY0N2QKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1hciAyOCAxNTowMzoxNiAyMDA3ICswMjAwCi0KLSAgICBNZXJnZSBzb21lIEFNQ0MgbWFrZSB0YXJnZXRzIHRvIGtlZXAgdGhlIHRvcC1sZXZlbCBNYWtlZmlsZSBzbWFsbGVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwYzc1YzlkODQzMDdhOWYxY2JlMWZmMGM0ZDg5MzdlZTNhOTY0NzVlCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMjggMTQ6NTI6MTIgMjAwNyArMDIwMAotCi0gICAgaTJjOiBFbmFibGUgIm9sZCIgaTJjIGNvbW1hbmRzIGV2ZW4gd2hlbiBDT05GSUdfSTJDX0NNRF9UUkVFIGlzIGRlZmluZWQKLQotICAgIFRoZSAib2xkIiBpMmMgY29tbWFuZHMgKGlwcm9iZSwgaW1kLi4uKSBhcmUgbm93IGNvbXBpbGVkIGluIGFnYWluLAotICAgIGV2ZW4gd2hlbiB0aGUgaTJjIGNvbW1hbmQgdHJlZSBpcyBlbmFibGVkIHZpYSB0aGUgQ09ORklHX0kyQ19DTURfVFJFRQotICAgIGNvbmZpZyBvcHRpb24uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA1ZGEwNDhhZGY0NGJlYTVlM2I5NDA4MGQwMjkwM2MyZTNmZTdhYTRhCi1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVR1ZSBNYXIgMjcgMDA6MzI6MTYgMjAwNyArMDIwMAotCi0gICAgUEFUQ0g6IFJlc29sdmUgR1BMIGxpY2Vuc2UgcHJvYmxlbQotCi1jb21taXQgYWUwMGJiNGIyOTQ0ZGM2NGE0ODVlZDcyYTE5NzU0YjExYWY3YzIyMwotQXV0aG9yOiBSb2RvbGZvIEdpb21ldHRpIDxnaW9tZXR0aUBlbm5lZW5uZS5jb20+Ci1EYXRlOglNb24gTWFyIDI2IDEyOjAzOjM2IDIwMDcgKzAyMDAKLQotICAgIFBYQTogcHhhMjd4IFVTQiBPSENJIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJvZG9sZm8gR2lvbWV0dGkgPGdpb21ldHRpQGxpbnV4Lml0PgotCi1jb21taXQgYWU3OWY2MDY3N2MyMDgzMjY1MzU2NDdkY2JkNWMzZWM0MGRiY2IwYgotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJTW9uIE1hciAyNiAxMToyMTowNSAyMDA3ICswMjAwCi0KLSAgICBVU0I6IHJlbW92ZSB0aGUgUzNDMjRYMF9tZXJnZSAjZGVmaW5lLCB3aGljaCB3YXMgaW50cm9kdWNlZCB3aGlsZQotICAgIG1lcmdpbmcgT0hDSSBkcml2ZXJzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLQotY29tbWl0IDE3OTgwNDk1MjJmNTk0MDEzYWVhMjk0NTdkNDY3OTQyOThjNmFlMTUKLUF1dGhvcjogTWljaGFsIFNpbWVrIDxyb290QG1vbnN0ci5ldT4KLURhdGU6CU1vbiBNYXIgMjYgMDE6Mzk6MDcgMjAwNyArMDIwMAotCi0gICAgU3VwcG9ydCBmb3IgWFVQVjJQIGJvYXJkCi0gICAgUmVzZXQgc3VwcG9ydAotICAgIEJTUCBhdXRvY29uZmlnIHN1cHBvcnQKLQotY29tbWl0IDBkOTc0ZDUyOTczNDk1MDRhMmRkZmEwOTMxNGJlNTczYjVkZjMyMGEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IE1hciAyNCAxNTo1NzowOSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIEFkZCA0eHggR1BJTyBmdW5jdGlvbnMKLQotICAgIFRoaXMgcGF0Y2ggYWRkcyBzb21lIDR4eCBHUElPIGZ1bmN0aW9ucy4gSXQgYWxzbyBtb3ZlcyBzb21lIG9mIHRoZQotICAgIGNvbW1vbiBjb2RlIGFuZCBkZWZpbmVzIGludG8gYSBjb21tb24gNHh4IEdQSU8gaGVhZGVyIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyZGI2MzM2NThiYmYzNjZhYjBjOGRhZDdhMDcyN2UxZmIyYWU2YjExCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBNYXIgMjQgMTU6NTU6NTggMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBTbWFsbCBTZXF1b2lhIGNsZWFudXAKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDNjYjg2ZjNlNDBkMmE4MDM1NjE3NzQzNGE5OWY3NWJjOGJhYTljYWYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IE1hciAyNCAxNTo0NTozNCAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIENsZWFuIHVwIDQwRVovQWNhZGlhIHN1cHBvcnQKLQotICAgIFRoaXMgcGF0Y2ggY2xlYW5zIHVwIGFsbCB0aGUgb3BlbiBpc3N1ZSBvZiB0aGUgcHJlbGltaW5hcnkKLSAgICBBY2FkaWEgc3VwcG9ydC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDZlYjFkZjgzNTE5MWQ4Y2U0YjgxZDVhZjQwZmE4ZTBmYmU3OGU5OTcKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBEZWMgMTIgMTE6MDI6MjAgMjAwNiAtMDYwMAotCi0gICAgRml4IDg2NDFIUENOIHByb2JsZW0gd2l0aCBsZCB2ZXJzaW9uIDIuMTYKLQotICAgIChEb3Qgb3V0c2lkZSBzZWN0aW9ucyBwcm9ibGVtKS4KLQotICAgIFRoaXMgZml4IGlzIGluIHRoZSBzcGlyaXQgb2YgODA3ZDVkNzMxOTMzMGUzMzZhYjM0YTU2MjNjNWUwZDczYjg3ZDU0MC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5OTY0YTRkZDBkNGVmNWEwMzdmZWJhZWJmMWFhNDk0YjFhNzI5OTFjCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgRGVjIDcgMTA6MzU6NTUgMjAwNiAtMDYwMAotCi0gICAgU2V0IFJldiAyLnggODZ4eCBQSUMgaW4gbWl4ZWQgbW9kZS4KLQotICAgIFByZXZlbnQgZmFsc2UgaW50ZXJydXB0IGZyb20gaGFuZ2luZyBMaW51eCBhcyBNU1JbRUVdIGlzIHNldAotICAgIHRvIGVuYWJsZSBpbnRlcnJ1cHRzIGJ5IGNoYW5naW5nIHRoZSBQSUMgb3V0IG9mIHRoZSBkZWZhdWx0Ci0gICAgcGFzcyB0aHJvdWdoIG1vZGUgaW50byBtaXhlZCBtb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNWE1OGE3M2NlYjBhNDA1OWM0MmVmNjRjZWRiYzFhNDVlMGFhYTAwZQotQXV0aG9yOiBKYXNvbiBKaW4gPGphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IERlYyA3IDEwOjMyOjM1IDIwMDYgLTA2MDAKLQotICAgIEFkZCBmbGFzaCBjbWQgZnVuY3Rpb24gdG8gODY0MUhQQ04gcmFtYm9vdAotCi0gICAgQWxzbyBmaXhlcyBzb21lIGNvbW1tYW5kIGZvciA4NjQxIEhQQ04gcmFtYm9vdCBjYXNlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxqYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMmNjY2VhY2MwNGIwMDlkOTIzYWZiN2MyNjE4OWJhMmY4YTJhNWQ0NgotQXV0aG9yOiBFZCBTd2FydGhvdXQgPGVkLnN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IERlYyA3IDEwOjM0OjE0IDIwMDYgLTA2MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciA4NjQxIFJldiAyIHNpbGljb24uCi0KLSAgICBXaXRob3V0IHRoaXMgcGF0Y2gsIEkgYW0gdW5hYmxlIHRvIGdldCB0byB0aGUgcHJvbXB0IG9uIHJldiAyIHNpbGljb24uCi0gICAgT25seSBzZXQgZGRyaW9vdmNyIGZvciByZXYxLgotCi0gICAgU2lnbmVkLW9mZi1ieTogRWQgU3dhcnRob3V0PGVkLnN3YXJ0aG91dEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0NGJhNDY0Yjk5MDAxZjhiZDFjNDU2YTFlOWQ1OTcyNjI1MmY3MDdhCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDIyIDAwOjEzOjEyIDIwMDcgKzAxMDAKLQotICAgIENvZGUgY2xlYW51cCAvIHJlLWluc2VydCBwcmV2aW91cyBDb3B5cmlnaHQgZW50cmllcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCAyYThkZmUwODM1OWExYjY2MzQxOGIyZmFhMWRhMWQ3YmNlMzRkMzAyCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDIxIDIzOjI2OjE1IDIwMDcgKzAxMDAKLQotICAgIENvZGUgY2xlYW51cC4gVXBkYXRlIENIQU5HRUxPRwotCi1jb21taXQgZTY2MTVlY2Y0ZWFmNGRkNTI2OTY5MzRhZWQ4ZjVjNjQ3NGNmZDI4NgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDIxIDE0OjU0OjI5IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRml4IGZpbGUgbW9kZSBvZiBpbmNsdWRlL2NvbmZpZ3MvYWNhZGlhLmgKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGQ1ZjQ2MTRjOTM1MGQ5MzMzZTU3NTEwMGZiMjUwYWFiNzc0ZDAyNTgKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgMjEgMTQ6NDE6NDYgMjAwNyArMDEwMAotCi0gICAgU1BDMTkyMDogZml4IHNtYWxsIGNsb2NrIHJvdXRpbmcgYnVnCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotCi1jb21taXQgMTZjMGNjMWM4MjA4MWE0OTNhYjg3YzUxOTgwYjI4MzM2Y2UxYmNlOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDIxIDEzOjM5OjU3IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gQWRkIEFNQ0MgQWNhZGlhICg0MDVFWikgZXZhbCBib2FyZCBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIG5ldyBBTUNDIEFjYWRpYSBldmFsIGJvYXJkLgotCi0gICAgUGxlYXNlIG5vdGUgdGhhdCB0aGlzIEFjYWRpYS80MDVFWiBzdXBwb3J0IGlzIHN0aWxsIGluIGEgYmV0YSBzdGFnZS4KLSAgICBTdGlsbCBsb3QncyBvZiBjbGVhbnVwIG5lZWRlZCBidXQgd2UgbmVlZCBhIHByZWxpbWluYXJ5IHJlbGVhc2Ugbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZTAxYmQyMThiMDBhZjczNDk5MzMxYTFhNzAxNjI1YTg1MmNkMjg2ZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDIxIDEzOjM4OjU5IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gQWRkIEFNQ0MgUFBDNDA1RVogc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBuZXcgQU1DQyA0MDVFWiBQUEMuIEl0IGlzIGluCi0gICAgcHJlcGFyYXRpb24gZm9yIHRoZSBBTUNDIEFjYWRpYSBib2FyZCBzdXBwb3J0LgotCi0gICAgUGxlYXNlIG5vdGUgdGhhdCB0aGlzIEFjYWRpYS80MDVFWiBzdXBwb3J0IGlzIHN0aWxsIGluIGEgYmV0YSBzdGFnZS4KLSAgICBTdGlsbCBsb3QncyBvZiBjbGVhbnVwIG5lZWRlZCBidXQgd2UgbmVlZCBhIHByZWxpbWluYXJ5IHJlbGVhc2Ugbm93LgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDdlODJjYjJlMjg0YTg5M2RmNjY5M2YyYTEzMzdhYjJjNDdiZjZhMQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglXZWQgTWFyIDIxIDA4OjQ1OjE3IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVFFNODI3MjogZG9udCBjaGFuZ2UgdGhlIGJpdHMgZ2l2ZW4gZnJvbSB0aGUgSFJDVwotCQkgICAgIGZvciB0aGUgU0lVTUNSIGFuZCBCQ1IgUmVnaXN0ZXIuCi0JCSAgICAgRml4IHRoZSBjYWxjdWxhdGlvbiBmb3IgdGhlIEVFcHJvbSBTaXplCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDY1NDU4OTg3M2RiYWZjZjEwNGRmZjEzM2NlMGQwM2E0NTA2ZTljYzMKLUF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KLURhdGU6CVR1ZSBNYXIgMjAgMTg6MTY6MjQgMjAwNyArMDgwMAotCi0gICAgW0JsYWNrZmluXVtQQVRDSF0gQWRkIEJGNTYxIEVaS0lUIGJvYXJkIHN1cHBvcnQKLQotY29tbWl0IGE2MTU0ZmQxY2ZkMDIwZjZkYTg1MjdlMDM2NWIxMDIwYTExYTcxZDAKLUF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBNYXIgMTkgMjI6NTU6NTggMjAwNyArMDgwMAotCi0gICAgW0JsYWNrZmluXVtQQVRDSF0gbWlub3IgY2xlYW51cAotCi1jb21taXQgMzg5YjZiYjUwZjc0NWJmNTAzOGNlMDMwMzAwZDhhODUxMmU5NmY3OQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJTW9uIE1hciAxOSAxMzoxMDowOCAyMDA3ICswMTAwCi0KLSAgICBSZW1vdmUgb2Jzb2xldGVkIFBPU1QgZmlsZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotCi1jb21taXQgOGU3MDliYmIyNjM2YjU2NzBhOGYyYjU3NWUxMzhlYjFmNTU3NzNmNgotQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJTW9uIE1hciAxOSAwMToyNjoxMSAyMDA3ICswODAwCi0KLSAgICBbUEFUQ0hdIEFkZCBmbGFzaCBjaGlwIE0yOVczMjBFVC9CIHN1cHBvcnQKLQotY29tbWl0IDI2YmY3ZGVjYTM2NGE1YjMzZjM5ZThmMTRkZGQzZjQwODEzNDUwMTUKLUF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBNYXIgMTkgMDE6MjQ6NTIgMjAwNyArMDgwMAotCi0gICAgW0JsYWNrZmluXVtQQVRDSF0gQWRkIEJGNTM3IHN0YW1wIGJvYXJkIHN1cHBvcnQKLQotY29tbWl0IDg0MjNlNWUzMWE3MjM1ZDA1YTQ4MjYyNzMxNWZiMTFkNDljMTdiZDcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIE1hciAxNiAyMToxMTo0MiAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFVzZSBkeW5hbWljIFNEUkFNIFRMQiBzZXR1cCBvbiBBTUNDIEVib255IGV2YWwgYm9hcmQKLQotICAgIERlZmluZSBDT05GSUdfUFJPR19TRFJBTV9UTEIgc28gdGhhdCB0aGUgVExCIGVudHJpZXMgZm9yIHRoZQotICAgIEREUiBtZW1vcnkgYXJlIGR5bmFtaWNhbGx5IHByb2dyYW1tZWQgbWF0Y2hpbmcgdGhlIHRvdGFsIHNpemUKLSAgICBvZiB0aGUgZXF1aXBwZWQgbWVtb3J5IChESU1NIG1vZHVsZXMpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzZkMTQ2NmY5MThiODgxY2RhMmQyNTkyNTQ3NjFlNzM4ODUwOTNjMgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVR1ZSBNYXIgMTMgMTM6Mzg6MDUgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSByZW5hbWVkIGVudmlyb25tZW50IHZhcmlhYmxlICdhZGRjb24nIHRvICdhZGRjb25zJyBmb3IgUENJNDA1Ci0JICAgIGJvYXJkcyBpbiB0ZXJtcyBvZiB1bmlmaWNhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgYTcwOTBiOTkzZDNkNGQyMjIxYWMzZjMzZTZjYjFkMWIyY2NjNmJmMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE1hciAxMyAxNjowNTo1NSAyMDA3ICswMTAwCi0KLSAgICBNYWtlIFNDMyBib2FyZCBidWlsZCB3aXRoICdtYWtlIE89JzsgdXNlICdhZGRjb25zJyBjb25zaXN0ZW50bHkKLSAgICAoU0MzIGFuZCBKdXBpdGVyIHVzZWQgdG8gdXNlICdhZGRjb24nIGluc3RlYWQpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogV29sZmdhbmcgRGVuayB3ZEBkZW54LmRlCi0KLWNvbW1pdCA4NTAyZTMwYTI4ZTQ5MmM3NTZlYTJkN2RmMGFjZTAyNjM4OGZjZTRiCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CVR1ZSBNYXIgMTMgMDk6NDA6NTkgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSB1cGRhdGUgYm9hcmQgY29uZmlnIGZvciBqdXBpdGVyIEJvYXJkOgotCSAgICBhZGRlZCBIdXNoIFNoZWxsLAotCQkgIENPTkZJR19DTURMSU5FX0VESVRJTkcsCi0JCSAgQ0ZHX0VOVl9BRERSX1JFRFVORCBhY3RpdmF0ZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMGQ5M2RlMTE0NDkzOTBhNTk4NGIwMjM2YzM2MTJlNTBmNmRiYjdlOAotQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJTW9uIE1hciAxMiAxMjoxMTo1NSAyMDA3ICswODAwCi0KLSAgICBbQmxhY2tmaW5dW1BBVENIXSBtaW5vciBjbGVhbnVwCi0KLWNvbW1pdCBiZmE1NzU0YTU4NDc3YWM5MTdkMjE1MjdjZDBmMDc5ZDg3Y2YxODhlCi1BdXRob3I6IEF1YnJleSBMaSA8YXVicmV5LmFkaUBnbWFpbC5jb20+Ci1EYXRlOglNb24gTWFyIDEyIDAxOjQyOjA2IDIwMDcgKzA4MDAKLQotICAgIFtCbGFja2Zpbl1bUEFUQ0hdIEZpeCBCVUlMRF9ESVIgb3B0aW9uIG9mIE1BS0VBTEwgYnVpbGRpbmcgaXNzdWUKLQotY29tbWl0IDg0NDBiYjE0NTgxYTI5NDM3NWMzNGI5MWI0MjUxMmY5NzUzZDExMzAKLUF1dGhvcjogQXVicmV5IExpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KLURhdGU6CU1vbiBNYXIgMTIgMDA6MjU6MTQgMjAwNyArMDgwMAotCi0gICAgW0JsYWNrZmluXVtQQVRDSF0gY29kZSBjbGVhbnVwCi0KLWNvbW1pdCBjZmM2NzExNmE3MDZmZDE4YjhmNmE5YzExYTE2NzUzYzU2MjZkNjg5Ci1BdXRob3I6IE1pY2hhbCBTaW1layA8bW9uc3RyQG1vbnN0ci5ldT4KLURhdGU6CVN1biBNYXIgMTEgMTM6NDg6MjQgMjAwNyArMDEwMAotCi0gICAgW01pY3JvYmxhemVdW1BBVENIXSBwYXJ0IDIKLSAgICB0aW1lciBzdXBwb3J0Ci0gICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgc3VwcG9ydAotICAgIGZsYXNoIHN1cHBvcnQKLSAgICBldGhlcm5ldCBzdXBwb3J0Ci0gICAgY2FjaGUgc3VwcG9ydAotICAgIGJvYXJkIGluZm9ybWF0aW9uIHN1cHBvcnQKLSAgICBlbnYgc3VwcG9ydAotICAgIGJvb3RpbmcgaW1hZ2Ugc3VwcG9ydAotCi0gICAgYWRkaW5nIHN1cHBvcnQgZm9yIFhpbGlueCBNTDQwMQotCi1jb21taXQgNzYzMTZhMzE4ZGU5MWY2MTg0ZTdjMjJhMTBlMDJkMjc1YWRlMjQ0MQotQXV0aG9yOiBNaWNoYWwgU2ltZWsgPG1vbnN0ckBtb25zdHIuZXU+Ci1EYXRlOglTdW4gTWFyIDExIDEzOjQyOjU4IDIwMDcgKzAxMDAKLQotICAgIFtNaWNyb2JsYXplXVtQQVRDSF0KLSAgICB0aW1lciBzdXBwb3J0Ci0gICAgaW50ZXJydXB0IGNvbnRyb2xsZXIgc3VwcG9ydAotICAgIGZsYXNoIHN1cHBvcnQKLSAgICBldGhlcm5ldCBzdXBwb3J0Ci0gICAgY2FjaGUgc3VwcG9ydAotICAgIGJvYXJkIGluZm9ybWF0aW9uIHN1cHBvcnQKLSAgICBlbnYgc3VwcG9ydAotICAgIGJvb3RpbmcgaW1hZ2Ugc3VwcG9ydAotCi0gICAgYWRkaW5nIHN1cHBvcnQgZm9yIFhpbGlueCBNTDQwMQotCi1jb21taXQgOGRiMTNkNjMxNTc4MTFjODM5ZDE1YTMxM2Q5ZjJkMmY1ZmQxMGFmMwotQXV0aG9yOiBBdWJyZXkgTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJU2F0IE1hciAxMCAyMzo0OToyOSAyMDA3ICswODAwCi0KLSAgICBbQmxhY2tmaW5dW1BBVENIXSBjb2RlIGNsZWFudXAKLQotY29tbWl0IGVmMjZhMDhmZWY5MjhiN2JjMTFhZTJjMTA5ZTYzOGRjM2EwMTZkOTEKLUF1dGhvcjogQXVicmV5LkxpIDxhdWJyZXkuYWRpQGdtYWlsLmNvbT4KLURhdGU6CUZyaSBNYXIgOSAxMzo0MDo1NiAyMDA3ICswODAwCi0KLSAgICBbQmxhY2tmaW5dW1BBVENILTIvMl0gQ29tbW9uIGZpbGVzIGNoYW5nZWQgdG8gc3VwcG9ydCBiZjUzMyBwbGF0Zm9ybQotCi1jb21taXQgM2YwNjA2YWQwYjU2MzlmN2YyMjg0OGZlNWI0NTc0ZTc1NGQwNDcwZgotQXV0aG9yOiBBdWJyZXkuTGkgPGF1YnJleS5hZGlAZ21haWwuY29tPgotRGF0ZToJRnJpIE1hciA5IDEzOjM4OjQ0IDIwMDcgKzA4MDAKLQotICAgIFtCbGFja2Zpbl1QQVRDSC0xLzJdOiBSZW1vdmUgb2Jzb2xldGUgYmxhY2tmaW4gcG9ydCBhbmQgYWRkIGJmNTMzIHBsYXRmb3JtIHN1cHBvcnQKLQotY29tbWl0IDk5MjQyM2FiNDNjMmJjZjZiNzA0ODUzYmQwMGFmNzc0NTA5MTVlMjAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciA4IDIzOjAwOjA4IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogRml4IGZpbGUgbW9kZSBvZiBzZXF1b2lhLmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGViOTJmNjEzNTU2ODAwZjc0ODM2NjZkYjA5ZDlhMjM3YWQ5MTFkNGEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDggMjI6NTI6NTEgMjAwNyArMDEwMAotCi0gICAgTWlub3IgY2xlYW51cC4KLQotY29tbWl0IDhjZTE2ZjU1YzdiOTc1MmFmM2Q4YmVkODQ1MjFhZWM1MzM3ZTJkZTEKLUF1dGhvcjogSm9obiBPdGtlbiBqb2huQHNvZnRhZHZhbmNlcy5jb20gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KLURhdGU6CVRodSBNYXIgOCAwOTozOTo0OCAyMDA3IC0wNjAwCi0KLSAgICBwcGM0eHg6IENsZWFyIFNlcXVvaWEvUmFpbmllciBzZWN1cml0eSBlbmdpbmUgcmVzZXQgYml0cwotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9obiBPdGtlbiBqb2huQHNvZnRhZHZhbmNlcy5jb20gPGpvaG5Ac29mdGFkdmFuY2VzLmNvbT4KLQotY29tbWl0IDY1MGEzMzBkZDI1MzkxMzBjOGMzMjQ3OTFlMmY5Zjc1YWVkNzlkNGUKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgTWFyIDggMTY6MjY6NTIgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBJMkM6IGFkZCBzb21lIG1vcmUgU1BEIGVlcHJvbSBkZWNvZGluZyBmb3IgRERSMiBtb2R1bGVzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGQ5ZmM3MDMyNDY4NDBjNGIyNjhkZWJmNDhjMzM0YmE1NWM1OTdkYzAKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgTWFyIDggMTY6MjU6NDcgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBJMkM6IGRpc2FibGUgZmxhdCBpMmMgY29tbWFuZHMgd2hlbiBDT05GSUdfSTJDX0NNRF9UUkVFIGlzIGRlZmluZWQKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoaWFzIEZ1Y2hzIDxtYXR0aGlhcy5mdWNoc0Blc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgY2VkNWI5MDI5MDQzMzk3MzQ4Y2RjODhlMGNmY2Q2YjFmNjI5MjUwYgotQXV0aG9yOiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLURhdGU6CVRodSBNYXIgOCAxNjoyMzoxMSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIDR4eDogYWxsb3cgQ09ORklHX0kyQ19DTURfVFJFRSB3aXRob3V0IENPTkZJR19JMkNfTVVMVElfQlVTCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGQ4YThlYTVjNDc2ZDM3MDA2ZmM3Zjg1YjdmOTAzMTQyNzk1YzhiMTQKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglUaHUgTWFyIDggMTY6MjA6MzIgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBJMkM6IEFkZCBtaXNzaW5nIGRlZmF1bHQgQ0ZHX1NQRF9CVVNfTlVNCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBGdWNocyA8bWF0dGhpYXMuZnVjaHNAZXNkLWVsZWN0cm9uaWNzLmNvbT4KLQotY29tbWl0IGY5ZmM2YTU4NTJhNjMzNTg0MDg4MmZhMjExMTkyNTAxMGVlYTFhYmUKLUF1dGhvcjogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci1EYXRlOglXZWQgTWFyIDcgMTU6MzI6MDEgMjAwNyArMDEwMAotCi0gICAgZml4ZWQgZXRoZXJuZXQgcGh5IGNvbmZpZ3VyYXRpb24gZm9yIHBsdTQwNSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhpYXMgRnVjaHMgPG1hdHRoaWFzLmZ1Y2hzQGVzZC1lbGVjdHJvbmljcy5jb20+Ci0KLWNvbW1pdCA3NjkxMDRjOTM1NjU5NGRlYjIwOTJlMjA0YTM5YzA1YjMzMjAyZDZjCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVGh1IE1hciA4IDIxOjQ5OjI3IDIwMDcgKzAxMDAKLQotICAgIE1pbm9yIGNsZWFudXAKLQotY29tbWl0IDAwY2RiNGNlNWUxYjQyMjQ4ZTdlNjUyMmFkMGRhMzQyMWI5ODhhZmEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciA4IDEwOjEzOjE2IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVXBkYXRlIEFNQ0MgTHVhbiA0NDBTUCBldmFsIGJvYXJkIHN1cHBvcnQKLQotICAgIFRoZSBBTUNDIEx1YW4gbm93IHVzZXMgdGhlIGNvbW1vbiA0NDBTUChlKSBERFIgU1BEIGNvZGUgZm9yIEREUgotICAgIGluaXRpdGlhbGl6aXRpb24uIFRoaXMgaW5jbHVkZXMgRERSIGF1dG8gY2FsaWJyYXRpb24gYW5kIHN1cHBvcnQKLSAgICBmb3IgZGlmZmVyZW50IERJTU0gbW9kdWxlcywgaW5zdGVhZCBvZiB0aGUgZml4ZWQgc2V0dXAgdXNlZCBpbgotICAgIHRoZSBlYXJsaWVyIHZlcnNpb24uCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gZW5hYmxlcyB0aGUgY2FjaGUgaW4gRkxBU0ggZm9yIHRoZSBzdGFydHVwCi0gICAgcGhhc2Ugb2YgVS1Cb290ICh3aGlsZSBydW5uaW5nIGZyb20gRkxBU0gpLiBBZnRlciByZWxvY2F0aW5nIHRvCi0gICAgU0RSQU0gdGhlIGNhY2hlIGlzIGRpc2FibGVkIGFnYWluLiBUaGlzIHdpbGwgc3BlZWQgdXAgdGhlIGJvb3QKLSAgICBwcm9jZXNzLCBlc3BlY2lhbGx5IHRoZSBTRFJBTSBzZXR1cCwgc2luY2UgdGhlcmUgYXJlIHNvbWUgbG9vcHMKLSAgICBmb3IgbWVtb3J5IHRlc3RpbmcgKGF1dG8gY2FsaWJyYXRpb24pLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMmY1ZGY0NzM1MTkxMGEyOTM2Yzc3NDFjZjExMTg1NTgyOTIwMDk0MwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDggMTA6MTA6MTggMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBVcGRhdGUgQU1DQyBZdWNjYSA0NDBTUGUgZXZhbCBib2FyZCBzdXBwb3J0Ci0KLSAgICBUaGUgQU1DQyBZdWNjYSBub3cgdXNlcyB0aGUgY29tbW9uIDQ0MFNQKGUpIEREUiBTUEQgY29kZSBmb3IgRERSCi0gICAgaW5pdGl0aWFsaXppdGlvbi4gVGhpcyBpbmNsdWRlcyBERFIgYXV0byBjYWxpYnJhdGlvbiBhbmQgc3VwcG9ydAotICAgIGZvciBkaWZmZXJlbnQgRElNTSBtb2R1bGVzLCBpbnN0ZWFkIG9mIHRoZSBmaXhlZCBzZXR1cCB1c2VkIGluCi0gICAgdGhlIGVhcmxpZXIgdmVyc2lvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDI3MjFhNjhhOWVhOTFmMWU0OTQ2NDljZTY4YjI1NzcyNjFmNTc4ZTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciA4IDEwOjA3OjE4IDIwMDcgKzAxMDAKLQotICAgIHBwYzR4eDogU21hbGwgQU1DQyBLYXRtYWkgNDQwU1BlIHVwZGF0ZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZGYyOTQ0OTc0NzliMWRjYTZkZDg2MzE4YjJhOTEyZjcyZmVkZTBkZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDggMTA6MDY6MDkgMjAwNyArMDEwMAotCi0gICAgcHBjNHh4OiBVcGRhdGUgNDQwU1AvNDQwU1BlIEREUiBTUEQgc2V0dXAgY29kZSB0byBzdXBwb3J0IDQ0MFNQCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4Mzg1MzE3OGJkMzZiY2E2ZjBmOGYxMzMxNDc2NjIwYzg0YTU4N2ZjCi1BdXRob3I6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWFyIDcgMTI6MTQ6NTAgMjAwNyAtMDYwMAotCi0gICAgbmV0IC0gU3VwcG9ydCBwaW5nIHJlcGx5IHdoZW4gcHJvY2Vzc2luZyBuZXQtbG9vcAotCi0gICAgQWRkIElDTVBfRUNIT19SRVFVRVNUIHBhY2tldCBzdXBwb3J0IGJ5IHJlc3BvbmRpbmcgd2l0aCBhIElDTVBfRUNIT19SRVBMWS4KLQotICAgIFRoaXMgcGVybWl0cyB0aGUgcGluZyBjb21tYW5kIHRvIHRlc3QgdGhlIHBoeSBpbnRlcmZhY2Ugd2hlbiB0aGUgcGh5Ci0gICAgaXMgcHV0IGluIGxvb3BiYWNrIG1vZGUgKHR5cGljYWxseSBieSBzZXR0aW5nIHJlZ2lzdGVyIDAgYml0IDE0KS4KLQotICAgIEl0IGFsc28gYWxsb3dzIHRoZSBwb3J0IHRvIHJlc3BvbmQgdG8gYW4gZXh0ZXJuYWwgcGluZyB3aGVuIHUtYm9vdCBpcwotICAgIHByb2Nlc3Npbmcgc29tZSBvdGhlciBuZXQgY29tbWFuZCAoc3VjaCBhcyB0ZnRwKS4gIFRoaXMgaXMgdXNlZnVsIHdoZW4KLSAgICB0ZnRwIGFwcGVhcnMgdG8gaGFuZy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEVkIFN3YXJ0aG91dCA8RWQuU3dhcnRob3V0QGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci0KLWNvbW1pdCBmYTFhZWYxNWJjZDQ3NzM2Njg3YmUxYWY1NDQ1MDZlOTBmYmE1NDVkCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgNyAxNjo0MzowMCAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFVzZSBkeW5hbWljIFNEUkFNIFRMQiBzZXR1cCBvbiBBTUNDIE9jb3RlYSBldmFsIGJvYXJkCi0KLSAgICBEZWZpbmUgQ09ORklHX1BST0dfU0RSQU1fVExCIHNvIHRoYXQgdGhlIFRMQiBlbnRyaWVzIGZvciB0aGUKLSAgICBERFIgbWVtb3J5IGFyZSBkeW5hbWljYWxseSBwcm9ncmFtbWVkIG1hdGNoaW5nIHRoZSB0b3RhbCBzaXplCi0gICAgb2YgdGhlIGVxdWlwcGVkIG1lbW9yeSAoRElNTSBtb2R1bGVzKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGUyZWJlNjk2ODE4OTM5ZTJiOTc0NjI4YmU5YzkyMWVhM2ZlOWRlMTMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE1hciA3IDE2OjM5OjM2IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gRml4IEFNQ0MgNDR4IFNQRCBTRFJBTSBpbml0IGNvZGUgdG8gc3VwcG9ydCAyIERJTU0ncwotCi0gICAgVGhpcyBwYXRjaCBmaXhlcyBhIHByb2JsZW0gdGhhdCBvY2N1cnMgd2hlbiAyIERJTU0ncyBhcmUKLSAgICB1c2VkLiBUaGlzIHByb2JsZW0gd2FzIGZpcnN0IHNwb3R0ZWQgYW5kIGZpeGVkIGJ5IEdlcmFsZCBKYWNrc29uCi0gICAgPGdlcmFsZC5qYWNrc29uQHJlYW9uaXhzZWN1cml0eS5jb20+IGJ1dCB0aGlzIHBhdGNoIGZpeGVzIHRoZQotICAgIHByb2JsZW0gaW4gYSBsaXR0bGUgbW9yZSBjbGV2ZXIgd2F5LgotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgdGhlIG5pY2UgZnVuY3Rpb25hbGl0eSB0byBkeW5hbWljYWxseQotICAgIGNyZWF0ZSB0aGUgVExCIGVudHJpZXMgZm9yIHRoZSBTRFJBTSAodGxiLmMpLiBTbyB3ZSBzaG91bGQKLSAgICBuZXZlciBydW4gaW50byBzdWNoIHByb2JsZW1zIHdpdGggd3JvbmcgKHRvbyBzaG9ydCkgVExCCi0gICAgaW5pdGlhbGl6YXRpb24gYWdhaW4gb24gdGhlc2UgcGxhdGZvcm1zLgotCi0gICAgQXMgdGhpcyBmZWF0dXJlIGlzIG5ldyB0byB0aGUgIm9sZCIgNDR4IFNQRCBERFIgZHJpdmVyLCBpdAotICAgIGhhcyB0byBiZSBlbmFibGVkIHZpYSB0aGUgQ09ORklHX1BST0dfU0RSQU1fVExCIGRlZmluZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDM5MjE4NDMzOTgzNDE3YjlkZjA4Nzk3NmE3OWUzZjgwZGQ1ZTgzZDYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAZGVueC5kZT4KLURhdGU6CVdlZCBNYXIgNyAxNjozMzo0NCAyMDA3ICswMTAwCi0KLSAgICBVQzEwMTogZml4IGNvbXBpbGVyIHdhcm5pbmdzCi0KLWNvbW1pdCA4ZDdlMjczMjIyMWJjMmQ2NGRmMTRmNzAwYzY0YzIzZTBhNGMzZGNlCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJV2VkIE1hciA3IDE2OjE5OjQ2IDIwMDcgKzAxMDAKLQotICAgIEhNSTEwMDE6IGZpeCBidWlsZCBlcnJvciwgY2xlYW51cCBjb21waWxlciB3YXJuaW5ncy4KLQotY29tbWl0IGFkNWJiNDUxYWRlNTUyYzQ0YmVmOTExOWQ5MDc5MjllYmMyYzEyNmYKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDYgMTg6MDg6NDMgMjAwNyArMDEwMAotCi0gICAgUmVzdHJ1Y3R1cmUgUE9TVCBkaXJlY3RvcnkgdG8gc3VwcG9ydCBvZiBvdGhlciBDUFVzLCBib2FyZHMsIGV0Yy4KLQotY29tbWl0IGE1Mjg0ZWZkMTI1OTY3Njc1YjJlOWM2ZWY3Yjk1ODMyMjY4YWQzNjAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDYgMTg6MDE6NDcgMjAwNyArMDEwMAotCi0gICAgRml4IEhPU1RBUkNIIGhhbmRsaW5nLgotICAgIFBhdGNoIGJ5IE1pa2UgRnJ5c2luZ2VyLCBNYXIgMDUgMjAwNwotCi1jb21taXQgMDdiN2IwMDM3YWFjNTEwMjkzOTkxN2Q3Y2JlNTYxYjVjMGQ1YWE0NAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTWFyIDYgMDc6NDc6MDQgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBTcGVlZCBvcHRpbWl6YXRpb24gb2YgQU1DQyBTZXF1b2lhL1JhaW5pZXIgRERSMiBzZXR1cAotCi0gICAgQXMgcHJvdmlkZWQgYnkgdGhlIEFNQ0MgYXBwbGljYXRpb25zIHRlYW0sIHRoaXMgcGF0Y2ggb3B0aW1pemVzIHRoZQotICAgIEREUjIgc2V0dXAgZm9yIDE2Nk1IeiBidXMgc3BlZWQuIFRoZSB2YWx1ZXMgcHJvdmlkZWQgYXJlIGFsc28gc2F2ZQotICAgIHRvIHVzZSBvbiBhICJub3JtYWwiIDEzM01IeiBQTEIgYnVzIHN5c3RlbS4gT25seSB0aGUgcmVmcmVzaCBjb3VudGVyCi0gICAgc2V0dXAgaGFzIHRvIGJlIGFkanVzdGVkIGFzIGRvbmUgaW4gdGhpcyBwYXRjaC4KLQotICAgIEZvciB0aGlzIHRoZSBOQU5EIGJvb3RpbmcgdmVyc2lvbiBoYWQgdG8gaW5jbHVkZSB0aGUgInNwZWVkLmMiIGZpbGUKLSAgICBmcm9tIHRoZSBjcHUvcHBjNHh4IGRpcmVjdG9yeS4gV2l0aCB0aGlzIGFkZGl0aW9uIHRoZSBOQU5EIFNQTCBpbWFnZQotICAgIHdpbGwganVzdCBmaXQgaW50byB0aGUgNGtieXRlcyBvZiBwcm9ncmFtIHNwYWNlLiBnY2MgdmVyc2lvbiA0LnggYXMKLSAgICBwcm92aWRlZCB3aXRoIEVMREsgNC54IGlzIG5lZWRlZCB0byBnZW5lcmF0ZSB0aGlzIG9wdGltaXplZCBjb2RlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNjQ3ZDNjM2VlZDBkYTFkMTUwNWVlY2FiZTBiMGZhYjk2Zjk1NmU2OAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVN1biBNYXIgNCAwMTozNjowNSAyMDA3ICswMTAwCi0KLSAgICBTb21lIGNvZGUgY2xlYW51cC4KLQotY29tbWl0IDc4MWUwMjZjOGFhNmY3ZTllYjVmMGU3MmNjNGQyMDk3MTIxOWIxNDgKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBGZWIgMjggMDA6MDI6MDQgMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogZml4IGltcGxpY2l0IGRlY2xhcmF0aW9uIG9mIGZ1bmN0aW9uICdmdF9nZXRfcHJvcCcgd2FybmluZ3MKLQotICAgIChjaGVycnkgcGlja2VkIGZyb20gYzViZjEzYjAyMjg0YzMyMDRhNzIzNTY2YTliYWI3MDBlNTA1OTY1OSBjb21taXQpCi0KLWNvbW1pdCA0ZmVhYjRkZTdiZmMyY2IyZmVkMzZhZDc2ZjkzYzNhNjk2NTliYmFmCi1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgRmViIDI3IDIzOjUxOjQyIDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IEZpeCBjb25maWcgb2YgQXJiaXRlciwgU3lzdGVtIFByaW9yaXR5LCBhbmQgQ2xvY2sgTW9kZQotCi0gICAgVGhlIGNvbmZpZyB2YWx1ZSBmb3I6Ci0gICAgKiBDRkdfQUNSX1BJUEVfREVQCi0gICAgKiBDRkdfQUNSX1JQVENOVAotICAgICogQ0ZHX1NQQ1JfVFNFQzFFUAotICAgICogQ0ZHX1NQQ1JfVFNFQzJFUAotICAgICogQ0ZHX1NDQ1JfVFNFQzFDTQotICAgICogQ0ZHX1NDQ1JfVFNFQzJDTQotCi0gICAgV2VyZSBub3QgYmVpbmcgdXNlZCB3aGVuIHNldHRpbmcgdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyCi0KLSAgICBBZGRlZDoKLSAgICAqIENGR19TQ0NSX1VTQk1QSENNCi0gICAgKiBDRkdfU0NDUl9VU0JEUkNNCi0gICAgKiBDRkdfU0NDUl9QQ0lDTQotICAgICogQ0ZHX1NDQ1JfRU5DQ00KLQotICAgIFRvIGFsbG93IGZ1bGwgY29uZmlnIG9mIHRoZSBTQ0NSLgotCi0gICAgQWxzbyByZW1vdmVkIHJhbmRvbSBDRkdfU0NDUiBzZXR0aW5ncyBpbiBNUEM4MzQ5RU1EUywgVFFNODM0eCwgYW5kIHNiYzgzNDkKLSAgICB0aGF0IHdlcmUganVzdCBib2d1cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBkNTFiM2NmMzcxY2Q0NDEwMzA0NjBlZjE5ZDM2YjI5MjRjMzYxYjFhCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgRmViIDIyIDIwOjA2OjU3IDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IHVwZGF0ZSBbbG9jYWwtXW1hYy1hZGRyZXNzIHByb3BlcnRpZXMgb24gVUVDIGJhc2VkIGRldmljZXMKLQotICAgIDgzNjAgYW5kIDgzMnggd2VyZW4ndCB1cGRhdGluZyB0aGVpciBbbG9jYWwtXW1hYy1hZGRyZXNzCi0gICAgcHJvcGVydGllcy4gVGhpcyBwYXRjaCBmaXhlcyB0aGF0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDYxZjRmOTEyYWNiZTYwNzc2YzVlMDBkZjFlYzk0MDk0Y2U2NzI5NTcKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBGZWIgMTMgMTA6NDE6NDIgMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogd3JpdGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgYW5kIGxvY2FsLW1hYy1hZGRyZXNzCi0KLSAgICBTb21lIGRldmljZSB0cmVlcyBoYXZlIGEgbWFjLWFkZHJlc3MgcHJvcGVydHksIHNvbWUgaGF2ZSBsb2NhbC1tYWMtYWRkcmVzcywKLSAgICBhbmQgc29tZSBoYXZlIGJvdGguICBUbyBzdXBwb3J0IGFsbCBvZiB0aGVzZSBkZXZpY2UgdHJlZXMsIHRoaXMgcGF0Y2gKLSAgICB1cGRhdGVzIGZ0cF9jcHVfc2V0dXAoKSB0byB3cml0ZSB0aGUgTUFDIGFkZHJlc3MgdG8gbWFjLWFkZHJlc3MgaWYgaXQgZXhpc3RzLgotICAgIFRoaXMgZnVuY3Rpb24gYWxyZWFkeSB1cGRhdGVzIGxvY2FsLW1hYy1hZGRyZXNzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDIyZDcxYTcxZjU3ZmQ1ZDM4YjI3YWMzODQ4ZTUwZDc5MDM2MGE1OTgKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBGZWIgMjcgMTg6NDE6MDggMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogYWRkIGNvbW1hbmQgbGluZSBlZGl0aW5nIGJ5IGRlZmF1bHQKLQotY29tbWl0IDNmYzBiZDE1OTEwM2I1MzZlMWM1NGM2ZjQ0NTdhMDliM2FiYTY2Y2EKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBGZWIgMTQgMTk6NTA6NTMgMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogRGlzYWJsZSBHMVRYQ0xLLCBHMlRYQ0xLIGgvdyBidWZmZXJzCi0KLSAgICBEaXNhYmxlIEcxVFhDTEssIEcyVFhDTEsgaC93IGJ1ZmZlcnMuIFRoaXMgcGF0Y2gKLSAgICBmaXhlcyBhIG5ldHdvcmtpbmcgdGltZW91dCBpc3N1ZSB3aXRoIE1QQzgzNjBFQSAoUmV2LjIpIFBCcy4KLQotICAgIFZlcmlmaWVkIG9uIFJldi4gMS4xLCBSZXYuIDEuMiwgYW5kIFJldi4gMi4wIGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogRW1pbGlhbiBNZWR2ZSA8RW1pbGlhbi5NZWR2ZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDYxODUzY2YyNDcyZTBiOGJjYmQxMzE0NjFhOTNkMWM0OWZmMGMxZgotQXV0aG9yOiBYaWUgWGlhb2JvIDxyNjMwNjFAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBGZWIgMTQgMTg6Mjc6MTcgMjAwNyArMDgwMAotCi0gICAgbXBjODN4eDogQWRkIEREUjIgY29udHJvbGxlciBmaXhlZC9TUEQgSW5pdCBmb3IgTVBDODN4eAotCi0gICAgVGhlIGNvZGUgc3VwcGx5IGZpeGVkIGFuZCBTUEQgaW5pdGlhbGl6YXRpb24gZm9yIE1QQzgzeHggRERSMiBDb250cm9sbGVyLgotICAgIGl0IHBhc3MgRERSL0REUjIgY29tcGxpYW5jZSB0ZXN0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFhpZSBYaWFvYm8gPFguWGllQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiMTEwZjQwYmQxODBjNmI1NjAyNzY1ODliZWVkZjc1M2U5N2M0NmNlCi1BdXRob3I6IFhpZSBYaWFvYm8gPHI2MzA2MUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAxNCAxODoyNzowNiAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBBZGQgdGhlIGNwdSBzcGVjaWZpYyBjb2RlIGZvciBNUEM4MzYwRSByZXYyLjAgTURTCi0KLSAgICBNUEM4MzYwRSByZXYyLjAgaGF2ZSBuZXcgc3ByaWRyLGFuZCBQVlIgdmFsdWUsCi0gICAgVGhlIE1EUyBib2FyZCBmb3IgTVBDODM2MEUgcmV2Mi4wIGhhcyAzMk0gYnl0ZXMgRmxhc2ggYW5kIDI1Nk0gRERSMiBESU1NLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWGllIFhpYW9ibyA8WC5YaWVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhkMTcyYzBmMGQ4NTk5OGEyNTZhOTViNzQ1OWE1NDAzYTMwMzgwZWQKLUF1dGhvcjogWGllIFhpYW9ibyA8cjYzMDYxQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgRmViIDE0IDE4OjI2OjQ0IDIwMDcgKzA4MDAKLQotICAgIG1wYzgzeHg6IEFkZCB0aGUgY3B1IGFuZCBib2FyZCBzcGVjaWZpYyBjb2RlIGZvciBNUEM4MzQ5RSByZXYzLjEgTURTCi0KLSAgICBNUEM4MzQ5RSByZXYzLjEgaGF2ZSBuZXcgc3ByaWRyLGFuZCBQVlIgdmFsdWUsCi0gICAgVGhlIE1EUyBib2FyZCBmb3IgTVBDODM0OUUgcmV2My4xIGhhcyAzMk0gYnl0ZXMgRmxhc2ggYW5kIDI1Nk0gRERSMiBESU1NLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWGllIFhpYW9ibzxYLlhpZUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjZmNWY3MDllNWM4ZTQ1NjRjNGRmZWVjZmRmMjI3OTI0NGY5YzgzYgotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxqb2FraW0udGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVdlZCBKYW4gMzEgMTE6MDQ6MTkgMjAwNyArMDEwMAotCi0gICAgbXBjODN4eDogRml4IGVtcHR5IGkyYyByZWFkcy93cml0ZXMgaW4gZnNsX2kyYy5jCi0KLSAgICBGaXggZW1wdHkgaTJjIHJlYWRzL3dyaXRlcywgaTJjX3dyaXRlKDB4NTAsIDB4MDAsIDAsIE5VTEwsIDApCi0gICAgd2hpY2ggaXMgdXNlZCB0byBzZSBpZiBhbiBzbGF2ZSB3aWxsIEFDSyBhZnRlciByZWNlaXZpbmcgaXRzIGFkZHJlc3MuCi0KLSAgICBDb3JyZWN0IGkyYyBwcm9iaW5nIHRvIHVzZSB0aGlzIG1ldGhvZCBhcyB0aGUgb2xkIG1ldGhvZCBjb3VsZCB1cHNldAotICAgIGEgc2xhdmUgYXMgaXQgd3JvdGUgYSBkYXRhIGJ5dGUgdG8gaXQuCi0KLSAgICBBZGQgYSBzbWFsbCBkZWxheSBpbiBpMmNfaW5pdCgpIHRvIGxldCB0aGUgY29udHJvbGxlcgotICAgIHNodXRkb3duIGFueSBvbmdvaW5nIEkyQyBhY3Rpdml0eS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvYWtpbSBUamVybmx1bmQgPEpvYWtpbS5UamVybmx1bmRAdHJhbnNtb2RlLnNlPgotCi1jb21taXQgN2E3OGYxNDhkNmE3Mjk4ZTRmZmFjZTY4MGRjN2VhY2Q4NzdiMWFiYQotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEphbiAzMSAxNTo1NDoyOSAyMDA3IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzgzNDlFLW1JVFgtR1AKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWC1HUCwgYSBzdHJpcHBlZC1kb3duIHZlcnNpb24gb2YgdGhlCi0gICAgTVBDODM0OUUtbUlUWC4gIEJvbnVzIGZlYXR1cmVzIGluY2x1ZGUgc3VwcG9ydCBmb3IgbG93LWJvb3QgKEJNUyBiaXQgaW4KLSAgICBIUkNXIGlzIDApIGZvciB0aGUgSVRYIGFuZCBhIFJFQURNRSBmb3IgdGhlIElUWCBhbmQgdGhlIElUWC1HUC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmYWIxNjgwN2FkYWQzNTBmNjE4MDI0MzUwYzY5NTAxNjVjMjQ3YzcyCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDMxIDE1OjU0OjIwIDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IERlbGV0ZSBzZHJhbV9pbml0KCkgZm9yIE1QQzgzNDlFLW1JVFgKLQotICAgIFRoZXJlIGlzIG5vIFNEUkFNIG9uIGFueSBvZiB0aGUgODM0OSBJVFggdmFyaWFudHMsIHNvIGZ1bmN0aW9uIHNkcmFtX2luaXQoKQotICAgIG5ldmVyIGRvZXMgYW55dGhpbmcuICBUaGlzIHBhdGNoIGRlbGV0ZXMgaXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTg3Yzg1NmViNDExYjkzNjU5MzdkMGQ0YjljMjFlNDZhZGJlMWMxNAotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEphbiAxOSAxMDo0MzoyNiAyMDA3ICswODAwCi0KLSAgICBtcGM4M3h4OiBGaXggdGhlIExBVzEvMyBidWcKLQotICAgIFRoZSBwYXRjaCBzb2x2ZXMgdGhlIGFsaWdubWVudCBwcm9ibGVtIG9mIHRoZSBsb2NhbCBidXMgYWNjZXNzIHdpbmRvd3MgdG8KLSAgICByZW5kZXIgYWNjZXNzaWJsZSB0aGUgbWVtb3J5IGJhbmsgYW5kIFBIWSByZWdpc3RlcnMgb2YgVVBDIDEgKHN0YXJ0aW5nIGF0Ci0gICAgMHhmODAxIDAwMDApLiBXaGF0IHdlIGFjdHVhbGx5IGRpZCB3YXMgdG8gYWRqdXN0IHRoZSBzaXplcyBvZiB0aGUgYnVzCi0gICAgYWNjZXNzIHdpbmRvd3Mgc28gdGhhdCB0aGUgYmFzZSBhZGRyZXNzIGFsaWdubWVudCByZXF1aXJlbWVudCB3b3VsZCBiZSBtZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBDaGVyZWppIE1hcmlhbiA8bWFyaWFuLmNoZXJlamlAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmlkaXNoIFNobG9taSA8Z3JpZGlzaEBmcmVlc2NhbGUuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5N2M0YjM5N2RjZTIzNmE3MzE4YjMwNDY2N2JmODllNTlkMDhiMTdjCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSmFuIDMwIDE2OjE1OjMxIDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IGRvbid0IGhhbmcgaWYgd2F0Y2hkb2cgY29uZmlndXJlZCBvbiA4MzYwLCA4MzJ4Ci0KLSAgICBkb24ndCBoYW5nIGlmIHdhdGNoZG9nIGNvbmZpZ3VyZWQgb24gODM2MCwgODMyeAotCi0gICAgVGhlIHdhdGNoZG9nIHByb2dyYW1taW5nIG1vZGVsIGlzIHRoZSBzYW1lIGFjcm9zcyBhbGwgODN4eCBkZXZpY2VzOwotICAgIG1ha2UgdGhlIGNvZGUgcmVmbGVjdCB0aGF0LgotCi1jb21taXQgYjcwMDQ3NDc4NTcwZTM3MWNlNzIyM2JlMzQyY2U5OGFmZWEwZjdkNgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEphbiAzMCAxNjoxNToyMSAyMDA3IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBwcm90ZWN0IG1lbWNweSB0byBiYWQgYWRkcmVzcyBpZiBhIGxvY2FsLW1hYy1hZGRyZXNzIGlzIG1pc3NpbmcgZnJvbSBkdAotCi0gICAgcHJvdGVjdCBtZW1jcHkgdG8gYmFkIGFkZHJlc3MgaWYgYSBsb2NhbC1tYWMtYWRkcmVzcyBpcyBtaXNzaW5nIGZyb20gZHQKLQotY29tbWl0IDY3NTJlZDA4OGM3NWMyNmE4OWI3MGM0NmI3MzI2YTRjZDYwMTVmMjkKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKYW4gMzAgMTY6MTU6MDQgMjAwNyAtMDYwMAotCi0gICAgbXBjODN4eDogbWFrZSA4MzYwIGRlZmF1bHQgZW52aXJvbm1lbnQgZmR0IGJlIDgzNjAgKG5vdCA4MzQ5KQotCi0gICAgbWFrZSA4MzYwIGRlZmF1bHQgZW52aXJvbm1lbnQgZmR0IGJlIDgzNjAgKG5vdCA4MzQ5KQotCi1jb21taXQgYTI4ODk5YzkxMDAyNGEwMjI2MzMxZGYwNzIwN2IxMDM4YzMwMGM5MwotQXV0aG9yOiBFbWlsaWFuIE1lZHZlIDxFbWlsaWFuLk1lZHZlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSmFuIDMwIDE2OjE0OjUwIDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IEZpeCBhbHRlcm5hdGluZyB0eCBlcnJvciAvIHR4IGJ1ZmZlciBub3QgcmVhZHkgYnVnIGluIFFFIFVFQwotCi0gICAgVGhlIHByb2JsZW0gaXMgbm90IGdjYzQgYnV0IHRoZSBjb2RlIGl0c2VsZi4gVGhlIEJEX1NUQVRVUygpIG1hY3JvIGNhbid0Ci0gICAgYmUgdXNlZCBmb3IgYnVzeS13YWl0aW5nIHNpbmNlIGl0IHN0cmlwcyB0aGUgJ3ZvbGF0aWxlJyBwcm9wZXJ0eSBmcm9tCi0gICAgdGhlIGJkIHZhcmlhYmxlLiBnY2MzIHdhcyB3b3JraW5nIGJ5IHB1cmUgbHVjay4KLQotICAgIFRoaXMgaXMgYSBmb2xsb3cgb24gcGF0Y2ggdG8gIkZpeCB0aGUgVUVDIGRyaXZlciBidWcgb2YgUUUiCi0KLWNvbW1pdCAzZTc4YTMxY2ZlM2QzMDIyZjQ2ZjY3ZWI4OGUxMjgxZDVjYzJlYjg5Ci1BdXRob3I6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci1EYXRlOglUdWUgSmFuIDMwIDE0OjA4OjMwIDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IFJlcGxhY2UgQ09ORklHX01QQzgzNDkgYW5kIHVzZSBDT05GSUdfTVBDODM0WCBpbnN0ZWFkCi0KLSAgICBUaGUgY29kZSB0aGF0IGlzIGlmZGVmJ2Qgd2l0aCBDT05GSUdfTVBDODM0OSBpcyBhY3R1YWxseSBhcHBsaWNhYmxlIHRvIGFsbAotICAgIE1QQzgzNFggY2xhc3MgcHJvY2Vzc29ycy4gIENoYW5nZSB0aGUgcHJvdGVjdGlvbnMgZnJvbSBDT05GSUdfTVBDODM0OSB0bwotICAgIENPTkZJR19NUEM4MzRYIHNvIHRoZXkgYXJlIG1vcmUgZ2VuZXJpYy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEt1bWFyIEdhbGEgPGdhbGFrQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLWNvbW1pdCBhZTI0NmRjNmMxOTM3YzI5MTAxNGVhZGQ5MGI2ZDQ4YzQzOGM3Y2IwCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSmFuIDI1IDEzOjQwOjU1IDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IGFkZCBNUEM4MzJYRU1EUyBhbmQgc2JjODM0OSB0byBNQUtFQUxMCi0KLWNvbW1pdCA0ZGVjZDg0ZThmMDQyNzljNWNmZmY3ZjhlOTA3NDY1ZWY4ZDhhM2ZiCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSmFuIDI0IDE3OjE4OjM3IDIwMDcgLTA2MDAKLQotICAgIG1wYzgzeHg6IHNvcnQgTWFrZWZpbGUgdGFyZ2V0cwotCi0gICAgcmVvcmRlcmVkIHRhcmdldHMgYWxwaGFiZXRpY2FsbHkKLQotY29tbWl0IDkxZTI1NzY5NzcxYzExNjRlZDYzZmZjYTBhZGQ0OWY5MzRhZTMzNDMKLUF1dGhvcjogUGF1bCBHb3J0bWFrZXIgPHBhdWwuZ29ydG1ha2VyQHdpbmRyaXZlci5jb20+Ci1EYXRlOglUdWUgSmFuIDE2IDExOjM4OjE0IDIwMDcgLTA1MDAKLQotICAgIG1wYzgzeHg6IFUtQm9vdCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyIFNCQzgzNDkKLQotICAgIEkndmUgcmVkb25lIHRoZSBTQkM4MzQ5IHN1cHBvcnQgdG8gbWF0Y2ggZ2l0LWN1cnJlbnQsIHdoaWNoCi0gICAgaW5jb3Jwb3JhdGVzIGFsbCB0aGUgTVBDODM0eCB1cGRhdGVzIGZyb20gRnJlZXNjYWxlIHNpbmNlIHRoZSAxLjEuNgotICAgIHJlbGVhc2UsICBpbmNsdWRpbmcgdGhlIEREUiBjaGFuZ2VzLgotCi0gICAgSSd2ZSBrZXB0IGFsbCB0aGUgU0JDODM0OSBmaWxlcyBhcyBwYXJhbGxlbCBhcyBwb3NzaWJsZSB0byB0aGUKLSAgICBNUEM4MzQ5RU1EUyBvbmVzIGZvciBlYXNlIG9mIG1haW50ZW5hbmNlIGFuZCB0byBhbGxvdyBmb3IgZWFzeQotICAgIGluc3BlY3Rpb24gb2Ygd2hhdCB3YXMgY2hhbmdlZCB0byBzdXBwb3J0IHRoaXMgYm9hcmQuICBIZW5jZSB0aGUgU0JDODM0OQotICAgIFUtQm9vdCBoYXMgRkRUIHN1cHBvcnQgYW5kIGV2ZXJ5dGhpbmcgZWxzZSB0aGF0IHRoZSBNUEM4MzQ5RU1EUyBoYXMuCi0KLSAgICBGb3J0dW5hdGVseSB0aGUgRnJlZXNjYWxlIHVwZGF0ZXMgYWRkZWQgc3VwcG9ydCBmb3IgYm9hcmRzIHVzaW5nIENTMCwKLSAgICBidXQgSSBoYWQgdG8gY2hhbmdlIHNwZF9zZHJhbS5jIHRvIGFsbG93IGZvciBib2FyZCBzcGVjaWZpYyBzZXR0aW5ncyBmb3IKLSAgICB0aGUgc2RyYW1fY2xrX2NudGwgKGl0IGlzL3dhcyBoYXJkIGNvZGVkIHRvIHplcm8sIGFuZCB0aGF0IHJlbWFpbnMgdGhlCi0gICAgZGVmYXVsdCBpZiB0aGUgYm9hcmQgZG9lc24ndCBzcGVjaWZ5IGEgdmFsdWUuKQotCi0gICAgSG9wZWZ1bGx5IHRoaXMgc2hvdWxkIGJlIG1lcmdlYWJsZSBhcy1pcyBhbmQgcmVxdWlyZSBubyB3aGl0ZXNwYWNlCi0gICAgY2xlYW51cHMgb3Igc2ltaWxhciwgYnV0IGlmIHNvbWV0aGluZyBkb2Vzbid0IG1lYXN1cmUgdXAgdGhlbiBsZXQgbWUKLSAgICBrbm93IGFuZCBJJ2xsIGZpeCBpdC4KLQotICAgIFRoYW5rcywKLSAgICBQYXVsLgotCi1jb21taXQgMDUwMzFkYjQ1NmFiMjI3ZjNlMzc1MmYzN2I5YjgxMmI2NWJiODNhZAotQXV0aG9yOiBTYW0gU29uZyA8c2Ftc29uZ3NodUB5YWhvby5jb20uY24+Ci1EYXRlOglUaHUgRGVjIDE0IDE5OjAzOjIxIDIwMDYgKzA4MDAKLQotICAgIG1wYzgzeHg6IFJlbW92ZSBhIHJlZHVuZGFudCBzZW1pY29sb24gaW4gbXBjODM0OWl0eC5jCi0KLSAgICBBIHJlZHVuZGFudCBzZW1pY29sb24gZXhpc3RlZCBpbiBtcGM4MzQ5aXR4LmMKLSAgICBzaG91bGQgYmUgcmVtb3ZlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFNhbSBTb25nIDxzYW1zb25nc2h1QHlhaG9vLmNvbS5jbj4KLQotY29tbWl0IGYzNWYzNTgyNDFjNTQ5YmUzZjc1Y2ZlMmVhYTY0MjkxNDI3NWI3YmEKLUF1dGhvcjogSmVycnkgVmFuIEJhcmVuIDxnZXJhbGQudmFuYmFyZW5AY29tY2FzdC5uZXQ+Ci1EYXRlOglXZWQgRGVjIDYgMjE6MjM6NTUgMjAwNiAtMDUwMAotCi0gICAgbXBjODN4eDogUHV0IHRoZSB2ZXJzaW9uIChhbmQgbWFnaWMpIGFmdGVyIHRoZSBIUkNXLgotCi0gICAgUHV0IHRoZSB2ZXJzaW9uIChhbmQgbWFnaWMpIGFmdGVyIHRoZSBIUkNXLiAgVGhpcyBwdXRzIGl0IGluIGEgZml4ZWQKLSAgICBsb2NhdGlvbiBpbiBmbGFzaCwgbm90IGF0IHRoZSBzdGFydCBvZiBmbGFzaCBidXQgYXMgY2xvc2UgYXMgd2UgY2FuIGdldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEplcnJ5IFZhbiBCYXJlbiA8dmFuYmFyZW5AY2lkZWFzLmNvbT4KLQotY29tbWl0IDQ4YWVjZDk2OTE3MWE2ZTk5YTU1ZmFlMDQ5MzM4NTc3ODdmOWE1YmQKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IERlYyA3IDIxOjE0OjUxIDIwMDYgKzA4MDAKLQotICAgIG1wYzgzeHg6IEFkZCB0aGUgTVBDODMyWEVNRFMgYm9hcmQgcmVhZG1lCi0KLSAgICBBZGQgdGhlIE1QQzgzMlhFTURTIGJvYXJkIHJlYWRtZQotCi0gICAgU2lnbmVkLW9mZi1ieTogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI0YzNhY2EzZjEzNThiMTEzZDMyMTVhZGI1NDMzYjE1NmU5OWY3MmIKLUF1dGhvcjogRGF2ZSBMaXUgPHI2MzIzOEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IERlYyA3IDIxOjEzOjE1IDIwMDYgKzA4MDAKLQotICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODMyWEVNRFMgYm9hcmQKLQotICAgIFRoaXMgcGF0Y2ggc3VwcG9ydHMgRFVBUlQsIEVUSDMvNCBhbmQgUENJIGV0Yy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlMDgwMzEzYzMyMzIyZTE1YWI1YTE4ZWI4OTZhMjUyODU4YzU3Mjg0Ci1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBEZWMgNyAyMToxMTo1OCAyMDA2ICswODAwCi0KLSAgICBtcGM4M3h4OiBzdHJlYW1saW5lIHRoZSA4M3h4IGltbXIgaGVhZCBmaWxlCi0KLSAgICBGb3IgYmV0dGVyIGZvcm1hdCBhbmQgc3R5bGUsIEkgc3RyZWFtbGluZWQgdGhlIDgzeHggaGVhZCBmaWxlcywKLSAgICBpbmNsdWRpbmcgaW1tYXBfODN4eC5oIGFuZCBtcGM4M3h4LmguIEluIHRoZSBvbGQgaGVhZCBmaWxlcywgMSkKLSAgICBkdXBsaWNhdGVkIG1hY3JvIGRlZmluaXRpb24gYXBwZWFyIGluIHRoZSBib3RoIGZpbGVzOyAyKSB0aGUgc3RydWN0dXJlCi0gICAgb2YgUUUgaW1tciBpcyBkdXBsaWNhdGVkIGluIHRoZSBpbW1hcF84M3h4LmggYW5kIGltbWFwX3FlLmg7IDMpIFRoZQotICAgIG1hY3JvIGRlZmluaXRpb24gcHV0IGluc2lkZSB0aGUgZWFjaCBzdHJ1Y3R1cmUuIFNvLCBJIGNsZWFuZWQgdXAgdGhlCi0gICAgc3RydWN0dXJlIG9mIFFFIGltbXIgZnJvbSBpbW1hcF84M3h4LmgsIGRlbGV0ZWQgdGhlIGR1cGxpY2F0ZWQgc3R1ZmYgYW5kCi0gICAgbW92ZWQgdGhlIG1hY3JvIGRlZmluaXRpb24gdG8gbXBjODN4eC5oLCBKdXN0IGxpa2UgTVBDODI2MC4KLQotICAgIENIQU5HRUxPRwotCi0gICAgKnN0cmVhbWxpbmUgdGhlIDgzeHggaW1tciBoZWFkIGZpbGUKLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkZGQwMjQ5MmY0M2RiNTQwOGY1YWI5ZjgyM2IwYmE1Nzk2ZTI4ZWYwCi1BdXRob3I6IERhdmUgTGl1IDxyNjMyMzhAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBEZWMgNiAxMTozODoxNyAyMDA2ICswODAwCi0KLSAgICBtcGM4M3h4OiBGaXggdGhlIFVFQyBkcml2ZXIgYnVnIG9mIFFFCi0KLSAgICBUaGUgcGF0Y2ggcHJldmVudHMgdGhlIEdDQyB0b29sIGNoYWluIGZyb20gc3RyaXBpbmcgdXNlZnVsIGNvZGUgZm9yCi0gICAgb3B0aW1pemF0aW9uLiBJdCB3aWxsIG1ha2UgVUVDIGV0aGVybmV0IGRyaXZlciB3b3JrYWJsZSwgT3RoZXJ3aXNlIHRoZQotICAgIFVFQyB3aWxsIGZhaWwgaW4gdHggd2hlbiB5b3UgYXJlIHVzaW5nIGdjYzQueC4gYnV0IHRoZSBkcml2ZXIgY2FuIHdvcmsKLSAgICB3aGVuIHVzaW5nIGdjYzMuNC4zLgotCi0gICAgQ0hBTkdFTE9HCi0KLSAgICAqUHJldmVudCB0aGUgR0NDIGZyb20gc3RyaXBpbmcgY29kZSBmb3Igb3B0aW1pemF0aW9uLCBPdGhlcndpc2UgdGhlIFVFQwotICAgIHdpbGwgdHggZmFpbGVkIHdoZW4geW91IGFyZSB1c2luZyBnY2M0LnguCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYmE1OGU0YzlhOWE5MTdjZTc5NWRkMTZkNGVjOGQ1MTVmOWY3YWEzNQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgTWFyIDEgMjE6MTE6MzYgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBVcGRhdGUgQU1DQyBLYXRtYWkgNDQwU1BlIGV2YWwgYm9hcmQgc3VwcG9ydAotCi0gICAgVGhpcyBwYXRjaCB1cGRhdGVzIHRoZSByZWNlbnRseSBhZGRlZCBLYXRtYWkgYm9hcmQgc3VwcG9ydC4gVGhlIGJpZ2dlc3QKLSAgICBjaGFuZ2UgaXMgdGhlIHN1cHBvcnQgb2YgRUNDIERJTU0gbW9kdWxlcyBpbiB0aGUgNDQwU1AoZSkgU1BEIEREUjIKLSAgICBkcml2ZXIuCi0KLSAgICBQbGVhc2Ugbm90ZSwgdGhhdCBzdGlsbCBzb21lIHByb2JsZW1zIGFyZSBsZWZ0IHdpdGggc29tZSBtZW1vcnkKLSAgICBjb25maWd1cmF0aW9ucy4gU2VlIHRoZSBkcml2ZXIgZm9yIG1vcmUgZGV0YWlscy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDhjMTIwNDVhM2IwNmM1YjY2NzVkM2ZlMDJmYmM5ZjU0NTk4ODEyOWEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IE1hciAxIDA3OjAzOjI1IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gSTJDOiBBZGQgbWlzc2luZyBkZWZhdWx0IENGR19SVENfQlVTX05VTSAmIENGR19EVFRfQlVTX05VTQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2NiYzcwMzY2NDhlNDY1Njk3Y2EyOThiYTUxZTBlNzZkZGEzNTJhMAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVdlZCBGZWIgMjggMDE6Mjg6NTMgMjAwNyArMDEwMAotCi0gICAgU0MzOiBmaXggdHlwbyBpbiBkZWZhdWx0IGVudmlyb25tZW50Ci0KLWNvbW1pdCBlMzQ0NTY4YjFiNDZhZjg1ZWMzMmQ4MTU1ODZmOTFiYzExNWQ2MjIzCi1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglUdWUgRmViIDI3IDIwOjE1OjMwIDIwMDcgKzAzMDAKLQotICAgIE1DQzIwMDogRml4ZXMgZm9yIHVwZGF0ZSBwcm9jZWR1cmUKLQotICAgIC0gZml4IGxvZ2ljIGVycm9yIGluIGltYWdlIHR5cGUgaGFuZGxpbmcKLSAgICAtIG1ha2Ugc3VyZSBmaWxlIHN5c3RlbSBpbWFnZXMgKGNyYW1mcyBldGMuKSBnZXQgc3RvcmVkIGluIGZsYXNoCi0gICAgICB3aXRoIGltYWdlIGhlYWRlciBzdHJpcHBlZCBzbyB0aGV5IGNhbiBiZSBtb3VudGVkIHRocm91Z2ggTVRECi0KLWNvbW1pdCA3NDM1NzExNDViMzcxODI3NTdkNGU2ODhhNzc4NjBiMzZlZTc3NTczCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyNyAxNDoyNjowNCAyMDA3ICswMTAwCi0KLSAgICBNaW5vciBjb2RlIGNsZWFudXAuCi0KLWNvbW1pdCA2MzhkZDE0NThiYmRjMmE1NWQ0YjllMjVjNWM0ZTFmODM4YTVkYzcyCi1BdXRob3I6IFNlcmdlaSBQb3NlbGVub3YgPHNwb3NlbGVub3ZAZW1jcmFmdC5jb20+Ci1EYXRlOglUdWUgRmViIDI3IDEyOjQwOjE2IDIwMDcgKzAzMDAKLQotICAgIE1DQzIwMCB1cGRhdGUgLSBhZGQgTENEIFByb2dyZXNzIEluZGljYXRvcgotCi1jb21taXQgNmM3Y2FjOGM0ZmNlMGVhMmJmOGUxNWVkODY1OGQ4Nzk3NDE1NWI0NAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgRmViIDIyIDA3OjQzOjM0IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gZ2V0X2RldigpIG5vdyB1bmNvbmRpdGlvbmFsbHkgdXNlcyBtYW51YWwgcmVsb2NhdGlvbgotCi0gICAgU2luY2UgdGhlIHJlbG9jYXRpb24gZml4IGlzIG5vdCBpbmNsdWRlZCB5ZXQgYW5kIHdlJ3JlIG5vdCBzdXJlIGhvdwotICAgIGl0IHdpbGwgYmUgYWRkZWQsIHRoaXMgcGF0Y2ggcmVtb3ZlcyBjb2RlIHRoYXQgcmVxdWlyZWQgcmVsb2NhdGlvbgotICAgIHRvIGJlIGZpeGVkIGZvciBub3cuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4Mjc0ZWMwYmQwMWQyZmViMmM3ZjA5NWViYTc4ZDQyZWEwMDk3OThiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgMjIgMDc6NDA6MjMgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBDaGFuZ2Ugc3lzdGVtYWNlIGRyaXZlciB0byBzZWxlY3QgOCAmIDE2Yml0IG1vZGUKLQotICAgIEFzIHN1Z2dlc3RlZCBieSBHcmFudCBMaWtlbHkgdGhpcyBwYXRjaCBlbmFibGVzIHRoZSBYaWxpbnggU3lzdGVtQUNFCi0gICAgZHJpdmVyIHRvIHNlbGVjdCA4IG9yIDE2Yml0IG1vZGUgdXBvbiBzdGFydHVwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgM2ExOTdiMmZlNDlkNmZhMDM5NzhlNjBhZjIzOTRlZmU5YzcwYjUyNwotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEZlYiAyMSAxNjo1MjozMSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0ggdjNdIEFkZCBzeW5jIHRvIGVuc3VyZSBmbGFzaF93cml0ZV9jbWQgaXMgZnVsbHkgZmluaXNoZWQKLQotICAgIFNvbWUgQ1BVcyBsaWtlIFBQQywgQkxBQ0tGSU4gbmVlZCBzeW5jKCkgdG8gZW5zdXJlIGNmaSBmbGFzaCB3cml0ZSBjb21tYW5kCi0gICAgaXMgZnVsbHkgZmluaXNoZWQuIFRoZSBzeW5jKCkgaXMgZGVmaW5lZCBpbiBlYWNoIENQVSdzIGlvLmggZmlsZS4gRm9yCi0gICAgdGhvc2UgQ1BVcyB3aGljaCBkbyBub3QgbmVlZCBzeW5jIGZvciBub3csIGEgZHVtbXkgc3luYygpIGlzIGRlZmluZWQgaW4KLSAgICB0aGVpciBpby5oIGFzIHdlbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWl5aW5nIFdhbmcgPEhhaXlpbmcuV2FuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGEwNDk5NWM3ZGM2NzcyMDEzYTlhMGRjNWM3NjdmMTkwYzQwMjQ3OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgRmViIDIxIDEzOjQ0OjM0IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gRml4IHByb2JsZW0gaW4gc3lzdGVtYWNlIGRyaXZlciAoYWNlX3dyaXRldyBpbnN0ZWFkIG9mIGFjZV93cml0ZSkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc1MWJiNTcxMDdkNzg5NzhhZTA4ZTY5N2MzZGViYTgxNmY1YmUwOTEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyMCAxMzoyMTo1NyAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIEZpeCByZWxvY2F0aW9uIHByb2JsZW0gd2l0aCAibmV3IiBnZXRfZGV2KCkgZnVuY3Rpb24KLQotICAgIFRoaXMgcGF0Y2ggZW5hYmxlcyB0aGUgIm5ldyIgZ2V0X2RldigpIGZ1bmN0aW9uIGZvciBibG9jayBkZXZpY2VzCi0gICAgaW50cm9kdWNlZCBieSBHcmFudCBMaWtlbHkgdG8gYmUgdXNlZCBvbiBzeXN0ZW1zIHRoYXQgc3RpbGwgc3VmZmVyCi0gICAgZnJvbSB0aGUgcmVsb2NhdGlvbiBwcm9ibGVtcyAobWFudWFsIHJlbG9jYXRpb24gbmVlZGUgYmVjYXVzZSBvZgotICAgIHByb2JsZW1zIHdpdGggbGlua2VyIHNjcmlwdCkuCi0KLSAgICBIb3BlZnVsbHkgd2UgY2FuIHJlc29sdmUgdGhpcyByZWxvY2F0aW9uIGlzc3VlIHNvb24gZm9yIGFsbCBwbGF0Zm9ybQotICAgIHNvIHdlIGRvbid0IG5lZWQgdGhpcyBhZGRpdGlvbmFsIGNvZGUgYW55bW9yZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGQ5M2UyMjEyZjk2MjY2OGIzZGNlMDkxZmY1ZWRjMzNmMjM0N2ZlMzcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyMCAxMzoxNzo0MiAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFVwZGF0ZSBTeXN0ZW1BQ0UgZHJpdmVyIGZvciAxNmJpdCBhY2Nlc3MKLQotICAgIFRoaXMgcGF0Y2ggcmVtb3ZlcyBzb21lIHByb2JsZW1zIHdoZW4gdGhlIFhpbGlueCBTeXN0ZW1BQ0UgZHJpdmVyCi0gICAgaXMgdXNlZCB3aXRoIDE2Yml0IGFjY2VzcyBvbiBhbiBiaWcgZW5kaWFuIHBsYXRmb3JtIChsaWtlIHRoZQotICAgIEFNQ0MgS2F0bWFpKS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDg3NGJiN2I4OGZlOWI0NjQ4ZTEyODhhMzg3YWYyZTMxMDE0YTcyZjMKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyMCAxMzoxNTo0MCAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIENsZWFuIHVwIEthdG1haSAoNDQwU1BlKSBsaW5rZXIgc2NyaXB0Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0NzQ1YWNhYTFhNjAzYjY3ZjZiOWI3OTcwMzY1ZWJhZGQ3ZDY1ODZmCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBGZWIgMjAgMTA6NTc6MDggMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgdGhlIEFNQ0MgS2F0bWFpICg0NDBTUGUpIGV2YWwgYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDBkYzAxOGVjZTEzZWZmYzY4OWU0NzQ3OWVhOWViZjFjOThhNTA3ZjUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEZlYiAyMCAxMDo1MToyNiAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIEkyQzogQWRkIHN1cHBvcnQgZm9yIG11bHRpcGxlIEkyQyBidXNzZXMgZm9yIFJUQyAmIERUVAotCi0gICAgVGhpcyBwYXRjaCBzd2l0Y2hlcyB0byB0aGUgZGVzaXJlZCBJMkMgYnVzIHdoZW4gdGhlIGRhdGUvZHR0Ci0gICAgY29tbWFuZHMgYXJlIGNhbGxlZC4gVGhpcyBjYW4gYmUgY29uZmlndXJlZCB1c2luZyB0aGUKLSAgICBDRkdfUlRDX0JVU19OVU0gYW5kL29yIENGR19EVFRfQlVTX05VTSBkZWZpbmVzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNDAzN2VkM2I2MzkyM2NmY2VjMjdmNzg0YTg5MDU3YzNjYmFiY2VkYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgRmViIDIwIDEwOjQzOjM0IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gUFBDNHh4OiBBZGQgNDQwU1AoZSkgRERSMiBTUEQgRElNTSBzdXBwb3J0Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEREUjIgY29udHJvbGxlciB1c2VkIG9uIHRoZQotICAgIDQ0MFNQIGFuZCA0NDBTUGUuIEl0IGlzIHRlc3RlZCBvbiB0aGUgS2F0bWFpICg0NDBTUGUpIGV2YWwKLSAgICBib2FyZCBhbmQgd29ya3MgZmluZSB3aXRoIHRoZSBmb2xsb3dpbmcgRElNTSBtb2R1bGVzOgotCi0gICAgLSBDb3JzYWlyIENNMlg1MTItNTQwMEM0ICg1MTJNQnl0ZSBwZXIgRElNTSkKLSAgICAtIEtpbmdzdG9uIFZhbHVlUkFNIEtWUjY2N0QyTjUvNTEyICg1MTJNQnl0ZSBwZXIgRElNTSkKLSAgICAtIEtpbmdzdG9uIFZhbHVlUkFNIEtWUjY2N0QyTjVLMi8yRyAoMUdCeXRlIHBlciBESU1NKQotCi0gICAgVGhpcyBwYXRjaCBhbHNvIGFkZHMgdGhlIG5pY2UgZnVuY3Rpb25hbGl0eSB0byBkeW5hbWljYWxseQotICAgIGNyZWF0ZSB0aGUgVExCIGVudHJpZXMgZm9yIHRoZSBTRFJBTSAodGxiLmMpLiBTbyB3ZSBzaG91bGQKLSAgICBuZXZlciBydW4gaW50byBzdWNoIHByb2JsZW1zIHdpdGggd3JvbmcgKHRvbyBzaG9ydCkgVExCCi0gICAgaW5pdGlhbGl6YXRpb24gYWdhaW4gb24gdGhlc2UgcGxhdGZvcm1zLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzZkODMwYzk4MzAzNzkwNDVmNWRhYTlmNTQyYWMxYzk5MGM3MDA2OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgRmViIDIwIDEwOjM1OjQyIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gUFBDNHh4OiBTcGxpdCA0eHggU1BEIFNEUkFNIGluaXQgcm91dGluZXMgaW50byAyIGZpbGVzCi0KLSAgICBTaW5jZSB0aGUgZXhpc3RpbmcgNHh4IFNQRCBTRFJBTSBpbml0aWFsaXphdGlvbiByb3V0aW5lcyBmb3IgdGhlCi0gICAgNDA1IFNEUkFNIGNvbnRyb2xsZXIgYW5kIHRoZSA0NDAgRERSIGNvbnRyb2xsZXIgZG9uJ3QgaGF2ZSBtdWNoIGluCi0gICAgY29tbW9uIHRoaXMgcGF0Y2ggc3BsaXRzIGJvdGggZHJpdmVycyBpbnRvIGRpZmZlcmVudCBmaWxlcy4KLQotICAgIFRoaXMgaXMgaW4gcHJlcGFyYXRpb24gZm9yIHRoZSA0NDAgRERSMiBjb250cm9sbGVyIHN1cHBvcnQgKDQ0MFNQL2UpLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNzliMmQwYmIyZWFlMDk2MDI0NDhmN2E3Y2I1NjUzMGQyZjMxZTZjNgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgRmViIDIwIDEwOjI3OjA4IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gUFBDNHh4OiBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgSTJDIGJ1c3NlcwotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIG11bHRpcGxlIEkyQyBidXNzZXMgb24gdGhlIFBQQzR4eAotICAgIHBsYXRmb3Jtcy4gRGVmaW5lIENPTkZJR19JMkNfTVVMVElfQlVTIGluIHRoZSBib2FyZCBjb25maWcgZmlsZQotICAgIHRvIG1ha2UgdXNlIG9mIHRoaXMgZmVhdHVyZS4KLQotICAgIEl0IGFsc28gbWVyZ2VzIHRoZSA0MDUgYW5kIDQ0MCBpMmMgaGVhZGVyIGZpbGVzIGludG8gb25lIGNvbW1vbgotICAgIGZpbGUgNHh4X2kyYy5oLgotCi0gICAgQWxzbyB0aGUgNHh4IGkyYyByZXNldCBwcm9jZWR1cmUgaXMgcmV3b3JrZWQgc2luY2UgSSBleHBlcmllbmNlZAotICAgIHNvbWUgcHJvYmxlbXMgd2l0aCB0aGUgZmlyc3QgYWNjZXNzIG9uIHRoZSA0NDBTUGUgS2F0bWFpIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWI4NjdhNzYyMzhmYjM4ZTk1MmMzNzg3MWIxNmQwZDdmZDYxYzk1ZgotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgRmViIDIwIDA5OjA1OjQ1IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSCA5XzldIFVzZSAidm9pZCAqIiBub3QgInVuc2lnbmVkIGxvbmcgKiIgZm9yIGJsb2NrIGRldiByZWFkX3dyaXRlIGJ1ZmZlciBwb2ludGVycwotCi0gICAgQmxvY2sgZGV2aWNlIHJlYWQvd3JpdGUgaXMgYW5vbnltb3VzIGRhdGE7IHRoZXJlIGlzIG5vIG5lZWQgdG8gdXNlIGEKLSAgICB0eXBlZCBwb2ludGVyLiAgdm9pZCAqIGlzIGZpbmUuICBBbHNvIGFkZCBhIGhvb2sgZm9yIGJsb2NrX3JlYWQgZnVuY3Rpb25zCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA1Mzc1OGZhMjBlOTM1Y2M4N2VlYjA1MTllZDM2NWRmNzUzYTZmMjg5Ci1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBGZWIgMjAgMDk6MDU6MzggMjAwNyArMDEwMAotCi0gICAgW1BBVENIIDhfOV0gQWRkIGJsb2NrX3dyaXRlIGhvb2sgdG8gYmxvY2tfZGV2X2Rlc2NfdAotCi0gICAgUHJlcGFyYXRpb24gZm9yIGZ1dHVyZSBwYXRjaGVzIHdoaWNoIHN1cHBvcnQgYmxvY2sgZGV2aWNlIHdyaXRpbmcKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IGY0ODUyZWJlNmNhOTQ2YTUwOTY2N2ViNjhiZTQyMDI2ZjgzN2JlNzYKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEZlYiAyMCAwOTowNTozMSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0ggN185XSBSZXBsYWNlIGFjZV9yZWFkd19hY2Vfd3JpdGViIGZ1bmN0aW9ucyB3aXRoIG1hY3JvcwotCi0gICAgUmVnaXN0ZXIgcmVhZC93cml0ZSBkb2VzIG5vdCBuZWVkIHRvIGJlIHdyYXBwZWQgaW4gYSBmdWxsIGZ1bmN0aW9uLiAgVGhlCi0gICAgcGF0Y2ggcmVwbGFjZXMgdGhlbSB3aXRoIG1hY3Jvcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDNhOGNlOWFmNmZjYjU3NDRhNzg1MWI0NDQwYzA3Njg4YWNjNDA4NDQKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEZlYiAyMCAwOTowNToyMyAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0ggNl85XSBNb3ZlIGNvbW1vbl9jbWRfYWNlLmMgdG8gZHJpdmVyc19zeXN0ZW1hY2UuYwotCi0gICAgVGhlIGNvZGUgaW4gdGhpcyBmaWxlIGlzIG5vdCBhIGNvbW1hbmQ7IGl0IGlzIGEgZGV2aWNlIGRyaXZlci4gIFB1dCBpdCBpbgotICAgIHRoZSBjb3JyZWN0IHBsYWNlLglUaGVyZSBhcmUgemVybyBmdW5jdGlvbmFsIGNoYW5nZXMgaW4gdGhpcyBwYXRjaCwgaXQKLSAgICBvbmx5IG1vdmVzIHRoZSBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgOTg0NjE4ZjNlNzc5NGM3ODNlYzhkMTUxMWU3NGM2ZWUyZDY5YmZlNAotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgRmViIDIwIDA5OjA1OjE2IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSCA1XzldIFdoaXRlc3BhY2UgZml4dXAgb24gY29tbW9uX2NtZF9hY2UuYyAodXNpbmcgTGluZGVudCkKLQotICAgIFRoaXMgcGF0Y2ggaXMgaW4gcHJlcGFyYXRpb24gb2YgYWRkaXRpb25hbCBjaGFuZ2VzIHRvIHRoZSBzeXNhY2UgZHJpdmVyLgotICAgIE1heSBhcyB3ZWxsIHRha2UgdGhpcyBvcHBvcnR1bml0eSB0byBmaXh1cCB0aGUgaW5jb25zaXN0ZW50IHdoaXRlc3BhY2Ugc2luY2UKLSAgICB0aGlzIGZpbGUgaXMgYWJvdXQgdG8gdW5kZXJnbyBtYWpvciBjaGFuZ2VzIGFueXdheS4KLQotICAgIFRoZXJlIGFyZSB6ZXJvIGZ1bmN0aW9uYWwgY2hhbmdlcyBpbiB0aGlzIHBhdGNoLiAgSXQgb25seSBjbGVhbnMgdXAgdGhlCi0gICAgdGhlIHdoaXRlc3BhY2UuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCA4MGJhOTgxZDk0MDQ3MWZlN2U1MzllNjRmYTNkMmJkODAwMDJiZWRhCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBGZWIgMjAgMDk6MDU6MDcgMjAwNyArMDEwMAotCi0gICAgW1BBVENIIDRfNF0gUmVtb3ZlIGxvY2FsIGltcGxlbWVudGF0aW9uIG9mIGlzcHJpbnQoKSBpbiBmdF9idWlsZC5jCi0KLSAgICBpc3ByaW50IGlzIGFscmVhZHkgZGVmaW5lZCBpbiBjdHlwZS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBjOTVjNDI4MGQ3NTFjYTA3OGMyZmY1ODIyOGQyZjJiNDRjY2YwNjAwCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVR1ZSBGZWIgMjAgMDk6MDU6MDAgMjAwNyArMDEwMAotCi0gICAgW1BBVENIIDNfOV0gTW92ZSBidWZmZXIgcHJpbnQgY29kZSBmcm9tIG1kIGNvbW1hbmQgdG8gY29tbW9uIGZ1bmN0aW9uCi0KLSAgICBQcmludGluZyBhIGJ1ZmZlciBpcyBhIGRhcm4gdXNlZnVsIHRoaW5nLiAgTW92ZSB0aGUgYnVmZmVyIHByaW50IGNvZGUKLSAgICBpbnRvIHByaW50X2J1ZmZlcigpIGluIGxpYl9nZW5lcmljLwotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotCi1jb21taXQgOTliMGYwZmQzZmJmMjU3MmFlMWE3NzIzZGQ5MGNmZmM4ZTg1MTMwYQotQXV0aG9yOiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci1EYXRlOglUdWUgRmViIDIwIDA5OjA0OjUyIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSCAyXzRdIFVzZSBjb25maWcuaCwgbm90IHhwYXJhbWV0ZXJzLmgsIGZvciB4aWxpbnggdGFyZ2V0cwotCi0gICAgQ2hhbmdlIHRoZSB4aWxpbnggZGV2aWNlIGRyaXZlcnMgYW5kIGJvYXJkIGNvZGUgdG8gaW5jbHVkZSBjb25maWcuaAotICAgIGluc3RlYWQgb2YgeHBhcmFtZXRlcnMuaCBkaXJlY3RseS4JY29uZmlnLmggYWx3YXlzIGluY2x1ZGVzIHRoZQotICAgIGNvcnJlY3QgeHBhcmFtZXRlcnMgZmlsZS4gIFRoaXMgY2hhbmdlIHJlZHVjZXMgdGhlIHBvc2liaWxpdHkgb2YKLSAgICBpbmNsdWRpbmcgdGhlIHdyb25nIGZpbGUgd2hlbiBhZGRpbmcgYSBuZXcgeGlsaW54IGJvYXJkIHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDczNWRkOTdiMWIyMGU3NzdkMDU5YzdiMzg5ZmU5ZDcwY2QzZjgwYzcKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIEZlYiAyMCAwOTowNDozNCAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0ggMV80XSBNZXJnZSBjb21tb24gZ2V0X2RldigpIHJvdXRpbmVzIGZvciBibG9jayBkZXZpY2VzCi0KLSAgICBFYWNoIG9mIHRoZSBmaWxlc3lzdGVtIGRyaXZlcnMgZHVwbGljYXRlIHRoZSBnZXRfZGV2IHJvdXRpbmUuICBUaGlzIGNoYW5nZQotICAgIG1lcmdlcyB0aGVtIGludG8gYSBzaW5nbGUgZnVuY3Rpb24gaW4gcGFydC5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBHcmFudCBMaWtlbHkgPGdyYW50Lmxpa2VseUBzZWNyZXRsYWIuY2E+Ci0KLWNvbW1pdCBmNWZjYzNjMjBiNjU1NTRlOThhMTY1NTQyYzM2ZWUwYzYxMGEyZDgxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJTW9uIEZlYiAxOSAyMzowOTo1MSAyMDA3ICswMTAwCi0KLSAgICBNQ0MyMDA6IFNvZnR3YXJlIFVwZGF0ZXI6IGFsbG93IGJvdGggInJhbWRpc2siIGFuZCAiZmlsZXN5c3RlbSIgdHlwZXMKLSAgICBhcyByb290IGZpbGUgc3lzdGVtIGltYWdlcy4KLQotY29tbWl0IDQ4OWM2OTZhZTcyMTEyMTg5NjFkMTU5ZTQzZTcyMmQ3NGMzNmZjYmMKLUF1dGhvcjogU2VyZ2VpIFBvc2VsZW5vdiA8c3Bvc2VsZW5vdkBlbWNyYWZ0LmNvbT4KLURhdGU6CVdlZCBGZWIgMTQgMTQ6MzA6MjggMjAwNyArMDMwMAotCi0gICAgTUNDMjAwOiBFeHRlbnNpb25zIHRvIFNvZnR3YXJlIFVwZGF0ZSBNZWNoYW5pc20KLQotICAgIFVwZGF0ZSAvIGV4dGVuZCBTb2Z0d2FyZSBVcGRhdGUgTWVjaGFuaXNtIGZvciBNQ0MyMDAgYm9hcmQ6Ci0KLSAgICAtIEFkZCBzdXBwb3J0IGZvciByb290ZnMgaW1hZ2UgYWRkZWQuIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLSAgICAgICJyb290ZnNfc3QiIGFuZCAicm9vdGZzX25kIiBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSB0aGUgZGVmYXVsdAotICAgICAgdmFsdWVzIG9mIHRoZSBpbWFnZSBzdGFydCBhbmQgZW5kLgotICAgIC0gUmVtb3ZlIGV4Y2Vzc2l2ZSBrZXkgY2hlY2sgY29kZS4KLSAgICAtIENvZGUgY2xlYW51cC4KLQotY29tbWl0IDRiZTIzYTEyZjIzZjEzNzI2MzRlZGMzMjE1MTM3YjA5NzY4Yjc5NDkKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEZlYiAxOSAwODoyMzoxNSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFVwZGF0ZSBTZXF1b2lhIEVCQyBjb25maWd1cmF0aW9uIChOT1IgRkxBU0gpCi0KLSAgICBBcyBzcG90dGVkIGJ5IE1hdHRoaWFzIEZ1Y2hzLCB0aGUgUkVBRFkgaW5wdXQgc2hvdWxkIG5vdCBiZQotICAgIGVuYWJsZWQgZm9yIHRoZSBOT1IgRkxBU0ggb24gdGhlIFNlcXVvaWEgYm9hcmQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyNjA1ZTkwYmY2NzZkNDgxMjNhZmU1NzE5YTg0NmQyYjUyYjI0YWFjCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CUZyaSBGZWIgMTYgMDc6NTc6NDIgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBBZGRlZCBzdXBwb3J0IGZvciB0aGUganVwaXRlciBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNDk3ZDAxMmU1YmUwMTk0ZTEwODQwNzNkMDA4MWViMWE4NDQ3OTZiMgotQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gRmViIDEyIDEzOjExOjUwIDIwMDcgKzAxMDAKLQotICAgIExQQzIyOTI6IHBhdGNoIGZyb20gU2llbWVucy4KLQotY29tbWl0IGIwYjFhOTIwYWViZWFkMGQ0NDE0NmU3MzY3NmFlOWQ4MGZmZmM4ZTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEZlYiAxMCAwODo0OTozMSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIEFkZCBtaXNzaW5nIHAzbXguaCBmaWxlIHRvIHJlcG9zaXRvcnkgKHVwcykKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDUzZDRhNDk4M2ZiOWIzYWU1ZjdiMmYxMGM1OTlhY2EyYjFiNDAzNGEKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CUZyaSBGZWIgOSAxMDo0NTo0MiAyMDA3ICswMTAwCi0KLSAgICBbTW90aW9uLVBST10gUHJlbGltaW5hcnkgc3VwcG9ydCBmb3IgdGhlIE1vdGlvbi1QUk8gYm9hcmQuCi0KLWNvbW1pdCA1YTc1M2Y5OGM2YTAxYmQxYzYxYTlhM2Y5NWU4MzI5YTM1ZjYyOTk0Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBGZWIgNyAxNjo1MTowOCAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFVwZGF0ZSBzb21lIEFNQ0MgNHh4IGJvYXJkIGNvbmZpZyBmaWxlcyAoc2V0IGluaXRyZF9oaWdoKQotCi0gICAgU29tZSBib2FyZHMgdGhhdCBjYW4gaGF2ZSBtb3JlIHRoYW4gNzY4TUJ5dGVzIG9mIFNEUkFNIG5lZWQgdG8KLSAgICBzZXQgImluaXRyZF9oaWdoIiwgc28gdGhhdCB0aGUgaW5pdHJkIGNhbiBiZSBhY2Nlc3NlZCBieSB0aGUKLSAgICBMaW51eCBrZXJuZWwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3MzcyY2E2ODIyNzkzMGQwM2NmZmE1NDgzMTA1MjRjYWQ1Yjk2NzMzCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBGZWIgMiAxMjo0NDoyMiAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIENvcnJlY3RseSBkaXNwbGF5IFBDSSBhcmJpdGVyIGVuLS9kaXNhYmxlZCBvbiBzb21lIDR4eCBib2FyZHMKLQotICAgIFByZXZpb3VzbHkgdGhlIHN0cmFwcGluZyBEQ1IvU0RSIHdhcyByZWFkIHRvIGRldGVybWluZSBpZiB0aGUgaW50ZXJuYWwgUENJCi0gICAgYXJiaXRlciBpcyBlbmFibGVkIG9yIG5vdC4gVGhpcyBzdHJhcHBpbmcgYml0IGNhbiBiZSBvdmVycmlkZGVuLCBzbyBub3cKLSAgICB0aGUgY3VycmVudCBzdGF0dXMgaXMgcmVhZCBmcm9tIHRoZSBjb3JyZWN0IERDUi9TRFIgcmVnaXN0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyYWE1NGY2NTFhNDJkMTk4NjczMzE4ZjA3YTIwYzg5YTQzZTRkMTk3Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBGZWIgMiAxMjo0MjowOCAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIENoYW5nZSBjb25maWd1cmF0aW9uIG91dHB1dCBvZiBTeWNhbW9yZSwgWWVsbG93c3RvbmUgJiBSYWluaWVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAyMzc0NGQ2YjViZjE3NTkyZWI2YTBlZjRmMzE4ZjYwODlmNTU5OTNiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVRodSBGZWIgMSAxMzoyMjo0MSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFJlbW92ZSBQQ0ktUE5QIGNvbmZpZ3VyYXRpb24gZnJvbSBTZXF1b2lhL1JhaW5pZXIgY29uZmlnIGZpbGUKLQotICAgIFdoZW4gUENJIFBOUCBpcyBlbmFibGVkIHRoZSBwY2kgcG5wIGNvbmZpZ3VyYXRpb24gcm91dGluZSBpcyBjYWxsZWQKLSAgICB3aGljaCBzZXRzIHRoZSBQQ0lfQ0FDSEVfU0laRV9MSU5FIHRvIDguIFRoaXMgc2VlbXMgdG8gZ2VuZXJhdGUgc29tZQotICAgIHByb2JsZW1zIHdpdGggc29tZSBQQ0kgY2FyZHMuIEZvciBub3cgZGlzYWJsZSB0aGUgUENJIFBOUCBjb25maWd1cmF0aW9uLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMjkwMmZhZGFkZTNiZTc2NTk0NjdlOGQwNzQwNDhjNmI3MDY4ZjVjMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDMxIDE2OjU2OjEwIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVXBkYXRlIDQ0MEVQeC80NDBHUnggY3B1IGRldGVjdGlvbgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDVlYTI4N2IwMmE2OTQ1YzM5Nzc0MTBlMzY0YTg3OWRkMWE1NTVjOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDMxIDE2OjM4OjA0IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVXBkYXRlIGVzZCBjcGNpNTIwMCBmaWxlcwotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgOGI3ZDFmMGFiN2Q3YzRmZTMxNjBiYmY3NGE3ZTk2OTBkOWYzYTNhYgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDMxIDE2OjM3OjM0IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIGVzZCBtZWNwNTIwMCBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogUmVpbmhhcmQgQXJsdCA8cmVpbmhhcmQuYXJsdEBlc2QtZWxlY3Ryb25pY3MuY29tPgotCi1jb21taXQgNzFhNGU1ZmRhOGI2MDA0NGFiOWY0NjA2OWZhMWNmYTI2YmRkMDdmZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDMxIDEyOjM4OjUwIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gUmVtb3ZlIHVubmVjY2Vzc2FyeSB5ZWxsb3dzdG9uZSBib2FyZCBjb25maWcgZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZTgwMjU5NGI2ZmExYjE2NjMwODgyMGMyNzZiOTZkYzBkN2NjNzMxYwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSmFuIDMwIDE3OjA2OjEwIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVXBkYXRlIFNlcXVvaWEgKDQ0MEVQeCkgY29uZmlnIGZpbGUKLQotICAgIFRoZSBjb25maWcgZmlsZSBub3cgaGFuZGxlcyB0aGUgMm5kIHRhcmdldCwgdGhlIFJhaW5pZXIgKDQ0MEdSeCkKLSAgICBldmFsdWF0aW9uIGJvYXJkIGJldHRlci4gQWRkaXRpb25hbGx5IHRoZSBQUEMgaW5wdXQgY2xvY2sgd2FzCi0gICAgYWRqdXN0ZWQgdG8gbWF0Y2ggdGhlIGNvcnJlY3QgdmFsdWUgb2YgMzMuMCBNSHouCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA3MDAyMDBjNjdlNzNiODM3NTE0MThhYmU3ODE1ODQwZGNhOGZkNmNiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gMzAgMTc6MDQ6MTkgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBNZXJnZSBZb3NlbWl0ZSAmIFllbGxvd3N0b25lIGJvYXJkIHBvcnRzCi0KLSAgICBOb3cgdGhlIEFNQ0MgZXZhbCBib2FyZHMgWW9zZW1pdGUgKDQ0MEVQKSBhbmQgWWVsbG93c3RvbmUgKDQ0MEdSKQotICAgIHNoYXJlIG9uZSBjb25maWcgZmlsZSBhbmQgYWxsIGJvYXJkIHNwZWNpZmljIGZpbGVzLiBUaGlzIHdheSB3ZQotICAgIGRvbid0IGhhdmUgdG8gbWFpbnRhaW4gdHdvIGRpZmZlcmVudCBzZXRzIG9mIGZpbGVzIGZvciBuZWFybHkKLSAgICBpZGVudGljYWwgYm9hcmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMWJiZjVlYWUzMjJmNWYxZjY0MjdlY2MzYWMxM2EwY2I3ZGJhOGFkNgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgSmFuIDMwIDE1OjAxOjQ5IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVXBkYXRlIFByb2RyaXZlIFNDUFUgKFBETkIzIHZhcmlhbnQpIGJvYXJkCi0KLSAgICBTQ1BVIGRvZXNuJ3QgdXNlIHJlZHVuZGFudCBlbnZpcm9ubWVudCBpbiBmbGFzaC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDYzMDQ0MzBlZDY0MmVhOGZhMTVjOWU1YWY5NjVhYzJlMDMzZWVjNDUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIEphbiAzMCAxMjo1MTowNyAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIGFscHI6IFVwZGF0ZSBhbHByIGJvYXJkIGNvbmZpZyBmaWxlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmOGRiODRmMTMyYjFlMzM1ZjIwZjk2MTM4YTFmMDllZDk3YjA4NjY0Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIEphbiAzMCAwMDo1MDo0MCAyMDA3ICswMTAwCi0KLSAgICBMUEMyMjkyIFNPRElNTSBwb3J0IGNvZGluZyBzdHlsZSBjbGVhbnVwLgotCi1jb21taXQgNmJkMjQ0N2VlNDdlZTIzYzE4ZDJiM2M3Y2NkNWEyMGY3NjI2ZjViMwotQXV0aG9yOiBHYXJ5IEplbm5lam9obiA8Z2FyeWpAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglXZWQgSmFuIDI0IDEyOjE2OjU2IDIwMDcgKzAxMDAKLQotICAgIEFkZCBwb3J0IGZvciB0aGUgbHBjMjI5MnNvZGltbSBldmFsdWF0aW9uIGJvYXJkIGZyb20gRW1iZWRkZWRBcnRpc3RzCi0KLWNvbW1pdCAyZGFmMDQ2YmE2MjdmODVmNDQxOTU4MTU3NzgxNDAwMzk2MzYyNDRlCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglUdWUgSmFuIDIzIDE3OjIyOjA2IDIwMDcgKzAxMDAKLQotICAgIFtpRE1SXSBBZGQgTVREIGFuZCBKRkZTMiBzdXBwb3J0LCBhbHNvIGFkZCBkZWZhdWx0IHBhcnRpdGlvbiBkZWZpbml0aW9uLgotCi1jb21taXQgZjdkYjMzMTAxZmJjOWM4ZjBhMTA3MzhjZTg3MDM0ODc1YTE3YWViOQotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJVHVlIEphbiAyMyAxNDoyMToxNCAyMDA3ICswMTAwCi0KLSAgICBbaURNUl0gRmxhc2ggZHJpdmVyIG9uIGluaXRpYWxpc2F0aW9uIHdyaXRlLXByb3RlY3RzIHNvbWUgc2VjdG9ycywKLSAgICBjdXJyZW50bHkgc2VjdG9ycyAwLTMuIFNlY3RvciAzIGRvZXMgbm90IG5lZWQgdG8gYmUgcHJvdGVjdGVkLCB0aG91Z2gKLSAgICAoVS1ib290IG9jY3VwaWVzIHNlY3RvcnMgMC0xIGFuZCB0aGUgZW52aXJvbm1lbnQgc2VjdG9yIDIpLiBUaGlzIGNvbW1pdAotICAgIGZpeGVzIHRoaXMsIGkuZS4sIG9ubHkgc2VjdG9ycyAwLTIgYXJlIHByb3RlY3RlZC4KLQotY29tbWl0IDBlZDQ3YmIxMTljZDJjNGMxNmVkYjI1NDg3ODkxNDhmOWU2ZGM5ZGUKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBKYW4gMjMgMTQ6MTE6MjIgMjAwNyArMDEwMAotCi0gICAgW2lETVJdIFVzaW5nIE1JSS1yZWxhdGVkIGNvbW1hbmRzIG9uIGlEUk0gYm9hcmQgZG9lc24ndCB3b3JrIG5vdyAoZS5nLiwKLSAgICAibWlpIGRldmljZSIgcmVzdWx0cyBpbiAiVW5leHBlY3RlZCBleGNlcHRpb24iKS4gRml4aW5nIHRoaXMgcHJvcGVybHkKLSAgICByZXF1aXJlcyBzb21lIGNsZWFuLXVwIGluIHRoZSBGRUMgZHJpdmVycyBpbmZyYXN0cnVjdHVyZSBmb3IgQ29sZEZpcmUsIHNvCi0gICAgdGhpcyBjb21taXQgZGlzYWJsZXMgTUlJIGNvbW1hZHMgZm9yIG5vdy4KLQotY29tbWl0IDM2M2QxZDhmOWM5OWI2M2RhZWY4MWY1OTg1Y2FiM2ZjMDBlZGRlNWMKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVR1ZSBKYW4gMjMgMTM6MjU6MjIgMjAwNyArMDEwMAotCi0gICAgW0NvbGRGaXJlIE1DRjUyNzEgZmFtaWx5XSBBZGQgQ1BVIGRldGVjdGlvbiBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgQ2hpcAotICAgIElkZW50aWZpY2F0aW9uIFJlZ2lzdGVyIChDSVIpLgotCi1jb21taXQgZmRlZjM4ODc1ODUwNjc2NWQ0ZDZhNzE1NWM4ZjE1ODRjNjNmZjU4MQotQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gSmFuIDIyIDEzOjE5OjIxIDIwMDcgKzA4MDAKLQotICAgIHVzZSAgQ0ZHX1dSSVRFX1NXQVBQRURfREFUQSBkZWZpbmUgaW5zdGVhZCBvZiBkZWZpbmUgQ0ZHX0ZMQVNIX0NGSV9TV0FQCi0gICAgVGhlIHBhdGNoIGJ5IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4gb24gSmFuLCAxOSwgMjAwNwotICAgIGZpeGVzIGNmaV9kcml2ZXIgYnVnIGZvciBtcGM3NDQ4aHBjMiBib2FyZC4gVGhlIGRlZmF1bHQgY2ZpX2RyaXZlciBjYW4gc3VwcG9ydAotICAgIG1wYzc0NDhocGMyIGJvYXJkLgotCi1jb21taXQgYTQwMTIzOTY2NDU1MzNhZWYyMTgzNTRlZWJhNzU0ZGZmMGRlYWNlOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gMTkgMjM6MDg6MzkgMjAwNyArMDEwMAotCi0gICAgTWlub3IgY29kZSBjbGVhbnVwLgotCi1jb21taXQgZjUzOWI3YmE3ZDdlZjZkZDE4N2M4MjA5NjA5MDAxY2IxY2Q5NWUzOQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDE5IDE5OjU3OjEwIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gU0MzIGJvYXJkOiBhZGRlZCBDRkdfQ01EX0FVVE9TQ1JJUFQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IGQwYjZlMTQwODdkZGQ4Nzg5ZjIyNGE0OGUxZDMzZjJhNWRmNGQxNjcKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJRnJpIEphbiAxOSAxODowNToyNiAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIENGSTogZGVmaW5lIENGR19XUklURV9TV0FQUEVEX0RBVEEgZm9yIHRoZSBDRkktRmxhc2ggZHJpdmVyCi0JCSBpZiB5b3UgbXVzdCBzd2FwIHRoZSBieXRlcyBiZXR3ZWVuIHJlYWRpbmcvd3JpdGluZy4KLQkJIChOZWVkZWQgZm9yIHRoZSBTQzMgYm9hcmQpCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIZWlrbyBTY2hvY2hlciA8aHNAZGVueC5kZT4KLQotY29tbWl0IDlkOGQ1YTViZmI2NDc2OGYyOWEwY2I0N2ZjMzdjZDZmNGM0MGUyNzYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVGh1IEphbiAxOCAxNjowNTo0NyAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBQcm9kcml2ZSBTQ1BVIChQRE5CMyB2YXJpYW50KSBib2FyZAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMDA1N2Q3NThlM2U4NzRjYmU3ZjI0NzQ1ZDBjY2U4YzFjYjZjMjA3ZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDE4IDExOjU0OjUyIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVXBkYXRlIFByb2RyaXZlIFAzTXggc3VwcG9ydAotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzQxNjdhMzZjMjllZTk0NmI3Mjc0NjVkYjVjMDE0NzQ2YTA4ZTk3OAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDE4IDExOjQ4OjEwIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gQWRkIG1pc3NpbmcgVGFpc2hhbiBjb25maWcgZmlsZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2I0ODIwNzI1ZTlmYzQwOWM1Y2JjOGU4MzA1NGE2ZWQ1MjJkMjExMQotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDE4IDExOjI4OjUxIDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gRml4OiBDb21waWxlcndhcm5pbmdzIGZvciBTQzMgYm9hcmQuCi0JCSBUaGUgRUJDIENvbmZpZ3VyYXRpb24gUmVnaXN0ZXIgaXMgbm93IGJ5IENGR19FQkNfQ0ZHIGRlZmluYWJsZQotCQkgQWRkZWQgSkZGUzIgc3VwcG9ydCBmb3IgdGhlIFNDMyBib2FyZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgNWZiNjkyY2FlNTdkMTcxMGM4ZjUyYTQyN2NmN2YzOWEzNzM4M2ZjZAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDE4IDEwOjI1OjM0IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIEFNQ0MgVGFpc2hhbiBQUEM0NDBHWCBldmFsIGJvYXJkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZDNlMDEwNzIzNWFhMGU2YTZkY2I3N2Y5ODg0NDk3MjgwYmY4NWFkCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIEphbiAxNiAxODozMDo1MCAyMDA3ICswMTAwCi0KLSAgICBSYW5hbWUgc29saWRjYXJkMyBpbnRvIHNjMzsgYWRkIHJlZHVuZGFudCBlbnYgZm9yIHNjMwotCi1jb21taXQgMWJiYmJkZDIwZmNlYzk5MzM2OTcwMDBkY2Y1NWZmNzk3MjYyMjU5NgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gMTYgMTI6NDY6MzUgMjAwNyArMDEwMAotCi0gICAgVXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQgZm9yIFNvbGlkY2FyZDMKLQotY29tbWl0IDVhNWM1Njk4NmE5Y2NmNzE2NDJjOGI2Mzc0ZWIxODQ4N2IxNWZlY2QKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIEphbiAxNSAwOTo0NjoyOSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIEZpeCA0NDBTUGUgcmV2IEIgZGV0ZWN0aW9uIGZyb20gcHJldmlvdXMgcGF0Y2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGE0NDNkMzE0MTBjNTcxZWU4Zjk3MGRhODE5YTQ0ZDY5OGZkZDZiMWYKLUF1dGhvcjogSGVpa28gU2Nob2NoZXIgPGhzQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJU3VuIEphbiAxNCAxMzozNTozMSAyMDA3ICswMTAwCi0KLQlbRklYXSBjb3JyZWN0IEkyQyBXcml0ZXMgZm9yIHRoZSBMTTgxIFNlbnNvci4KLQotCVNpZ25lZC1vZmYtYnk6IEhlaWtvIFNjaG9jaGVyIDxoc0BkZW54LmRlPgotCi1jb21taXQgMGJiYTU0NTI4MzVmMTlhNjEyMDRlZGNkYTNhNTgxMTJmZDhlMjIwOAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVNhdCBKYW4gMTMgMTE6MTc6MTAgMjAwNyArMDEwMAotCi0gICAgVW5kbyBjb21taXQgMzAzM2ViYjI6IHJlc2V0IGNvbW1hbmQgZG9lcyBub3QgdGFrZSBhbnkgYXJndW1lbnRzCi0KLSAgICBIYWl5aW5nIFdhbmcncyBtb2RpZmljYXRpb24gdG8gdGhlIHJlc2V0IGNvbW1hbmQgd2FzIGJyb2tlbiwgdW5kbyBpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFdvbGZnYW5nIERlbmsgPHdkQGRlbnguZGU+Ci0KLWNvbW1pdCA5NTk4MTc3OGNmZjAwMzhmZDk5NDEwNDRkNmEzZWRhODEwZTMzMjU4Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBKYW4gMTMgMDg6MDE6MDMgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBVcGRhdGUgNDQwU1AoZSkgY3B1IHJldmlzaW9ucwotCi0gICAgQWxzbyBkaXNwbGF5IGVuYWJsZWQvZGlzYWJsZWQgUkFJRCA2IHN1cHBvcnQgZm9yIDQ0MFNQLzQ0MFNQZSBQUEMncy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDc3ZGRjNWI5YWZiMzI1MjYyZmQ4ODc1MmJhNDMwYTFkZGVkMWYwYzcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IEphbiAxMyAwNzo1OTo1NiAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFVwZGF0ZSBZZWxsb3dzdG9uZSAoNDQwR1IpIHRvIGRpc3BsYXkgYm9hcmQgcmV2IGFuZCBQQ0kgYnVzIHNwZWVkCi0KLSAgICBOb3cgdGhlIGJvYXJkIHJldmlzaW9uIGFuZCB0aGUgY3VycmVudCBQQ0kgYnVzIHNwZWVkIGFyZSBwcmludGVkIGFmdGVyCi0gICAgdGhlIGJvYXJkIG1lc3NhZ2UuCi0KLSAgICBBbHNvIHRoZSBFQkMgaW5pdGlhbGlzaW5nIGlzIG5vdyBkb25lIHZpYSBkZWZpbmVzIGluIHRoZSBib2FyZCBjb25maWcKLSAgICBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMzZhZGZmMzYyYzJjMDE0MWZmOGE4MTBkNDJhN2U0NzhmNzc5MTMwZgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgSmFuIDEzIDA3OjU5OjE5IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gVXBkYXRlIFlvc2VtaXRlICg0NDBFUCkgdG8gZGlzcGxheSBib2FyZCByZXYgYW5kIFBDSSBidXMgc3BlZWQKLQotICAgIE5vdyB0aGUgYm9hcmQgcmV2aXNpb24gYW5kIHRoZSBjdXJyZW50IFBDSSBidXMgc3BlZWQgYXJlIHByaW50ZWQgYWZ0ZXIKLSAgICB0aGUgYm9hcmQgbWVzc2FnZS4KLQotICAgIEFsc28gdGhlIEVCQyBpbml0aWFsaXNpbmcgaXMgbm93IGRvbmUgdmlhIGRlZmluZXMgaW4gdGhlIGJvYXJkIGNvbmZpZwotICAgIGZpbGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlMGI5ZWE4YzhhMjk0ZGU2YTUzNTBhZTYzODg3OWQyNGI1YjcwOWQ2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBKYW4gMTMgMDc6NTc6NTEgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBVcGRhdGUgU2VxdW9pYSAoNDQwRVB4KSB0byBkaXNwbGF5IGJvYXJkIHJldiBhbmQgUENJIGJ1cyBzcGVlZAotCi0gICAgTm93IHRoZSBib2FyZCByZXZpc2lvbiBhbmQgdGhlIGN1cnJlbnQgUENJIGJ1cyBzcGVlZCBhcmUgcHJpbnRlZCBhZnRlcgotICAgIHRoZSBib2FyZCBtZXNzYWdlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgY2E0M2JhMThlOTEwMjA2ZWY4MDYzZTRiMjJkMjgyNjMwYmZmM2ZkMgotQXV0aG9yOiBIZWlrbyBTY2hvY2hlciA8aHNAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUaHUgSmFuIDExIDE1OjQ0OjQ0IDIwMDcgKzAxMDAKLQotCUFkZGVkIHN1cHBvcnQgZm9yIHRoZSBTT0xJRENBUkQgSUlJIGJvYXJkIGZyb20gRXVyb2Rlc2lnbgotCi0JU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA2YWJhZWU0MjYyMWMwN2U4MWEyY2QxODlhZDQzNjhiNWU4YzUwMjgwCi1BdXRob3I6IFJlaW5oYXJkIFRoaWVzIDxSZWluaGFyZC5UaGllc0B3ZWIuZGU+Ci1EYXRlOglXZWQgSmFuIDEwIDE0OjQxOjE0IDIwMDcgKzAxMDAKLQotICAgIEFkanVzdGVkIGRlZmF1bHQgZW52aXJvbm1lbnQgZm9yIGNhbTUyMDAgYm9hcmQuCi0KLWNvbW1pdCBiYWI1YTkwZDRjY2MxYTQ2YTgxMjdiODY3ZmE1OTAyOGNjNjIzYWQ5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJV2VkIEphbiAxMCAxNTozNTo1MiAyMDA3ICswMTAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLWNvbW1pdCA3ODdmYTE1ODYwYTU3ODMzZTUwYmQzMDU1NTA3OWE5Y2Q0ZTUxOWI4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJV2VkIEphbiAxMCAwMToyODozOSAyMDA3ICswMTAwCi0KLSAgICBGaXggYXV0b191cGRhdGUgZm9yIE1DQzIwMCBib2FyZC4KLQotICAgIFRoZSBpbnZvY2F0aW9uIG9mIGRvX2F1dG9fdXBkYXRlKCkgaXMgbW92ZWQgdG8gdGhlIGVuZCBvZiB0aGUKLSAgICBtaXNjX2luaXRfcigpIGZ1bmN0aW9uLCBhZnRlciB0aGUgZmxhc2ggbWFwcGluZ3MgaGF2ZSBiZWVuCi0gICAgaW5pdGlhbGl6ZWQuIFBsZWFzZSBmaW5kIGF0dGFjaGVkIGEgcGF0Y2ggdGhhdCBpbXBsZW1lbnRzIHRoYXQKLSAgICBjaGFuZ2UuCi0KLSAgICBBbHNvIGNvcnJlY3QgdGhlIGRlY29kaW5nIG9mIHRoZSBrZXlwYWQgc3RhdHVzLiBXaXRoIHRoaXMgdXBkYXRlLCB0aGUKLSAgICBrZXkgdGhhdCB3aWxsIHRyaWdnZXIgdGhlIHVwZGF0ZSBpcyBDb2x1bW4gMiwgUm93IDIuCi0KLWNvbW1pdCBkOTM4NGRlMmY1NzEwNDZlNzEwODFiYWUyMmI0OWUzZDVjYTJlM2Q1Ci1BdXRob3I6IE1hcmlhbiBCYWxha293aWN6IDxtOEBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgSmFuIDEwIDAwOjI2OjE1IDIwMDcgKzAxMDAKLQotICAgIENBTTUyMDAgZmxhc2ggZHJpdmVyIG1vZGlmaWNhdGlvbnM6Ci0gICAgLSB1c2UgQ0ZJIGRyaXZlciAocmVwbGFjZXMgY3VzdG9tIGZsYXNoIGRyaXZlcikgZm9yIG1haW4gJ2NhbTUyMDAnIHRhcmdldAotICAgIC0gYWRkIHNlY29uZCBidWlsZCB0YXJnZXQgJ2NhbTUyMDBfbmlvc2ZsYXNoJyB3aGljaCBzdGlsbCB1c2VzIGN1c3RvbSBkcml2ZXIKLQotY29tbWl0IDY3ZmVhMDIyZmE5NTdmNTk2NTNiNTIzOGM3NDk2ZjgwYTZiNzA0MzIKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gOSAxNjowMjo0OCAyMDA3ICswMTAwCi0KLSAgICBTUEMxOTIwOiBjbGVhbnVwIG1lbW9yeSBjb250b2xsZXIgc2V0dXAKLQotY29tbWl0IDhmYzIxMDJmYWEyMzU5M2M4MDM4MTQzN2MwOWY3NzQ1YTE0ZGViNDAKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxNCAyMDA3ICswMTAwCi0KLSAgICBGaXggdGhlIGNwdSBzcGVlZCBzZXR1cCB0byB3b3JrIHdpdGggYWxsIGJvYXJkcy4KLQotY29tbWl0IDkyOTVhY2I3NzQ4MWNmMDk5ZWY5YjQwZTFmYTJkMTQ1YjNjNzQ5MGMKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMyAyMDA3ICswMTAwCi0KLSAgICBTUEMxOTIwOiBhZGQgc3VwcG9ydCBmb3IgdGhlIEZNMThMMDggUmFtdHJvbiBGUkFNCi0KLWNvbW1pdCAzOGNjZDJmZGYzMzY0YTUzZmU4MGU5YjM2NTMwM2VjZGFmYzllMjIzCi1BdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTMgMjAwNyArMDEwMAotCi0gICAgU1BDMTkyMDogdXBkYXRlIHRoZSBIUEkgcmVnaXN0ZXIgYWRkcmVzc2VzIHRvIHdvcmsgd2l0aCB0aGUgc2Vjb25kCi0gICAgZ2VuZXJhdGlvbiBvZiBoYXJkd2FyZQotCi1jb21taXQgNTkyMWU1MzEzZmMzZWFkZDQyNzcwYzJiOTliYWRkN2ZhZTVlY2YxZQotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BjcmVhbW5ldC5kZT4KLURhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMyAyMDA3ICswMTAwCi0KLSAgICBNaXNjZWxsYW5pb3VzIHNwYzE5MjAgcmVsYXRlZCBjbGVhbnVwcwotCi1jb21taXQgZTRjMmQzN2FkYzhiYjFiZjY5ZGNmNjAwY2JjNmM3NWY5MTZhNjEyMAotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJVHVlIEphbiA5IDE0OjU3OjEyIDIwMDcgKzAxMDAKLQotICAgIFNQQzE5MjAgR08vTk9HTyBsZWQgc2hvdWxkIGJlIHNldCB0byBjb2xvciByZWQgaW4gVS1Cb290Ci0KLWNvbW1pdCAwYmU2MjcyOGFhYzQ1OWJhMjY4ZDZkNzUyZWQ0OWVjMGUyYmM3MzQ4Ci1BdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgotRGF0ZToJVHVlIEphbiA5IDE0OjU3OjEyIDIwMDcgKzAxMDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRFMzMjMxIFJUQwotCi1jb21taXQgODEzOTU2N2I2MGQ2Nzg1ODRiMDVmMDcxOGE2ODFmMjA0N2M1ZTE0ZgotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BjcmVhbW5ldC5kZT4KLURhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMSAyMDA3ICswMTAwCi0KLSAgICBTTUMxIHVzZXMgZXh0ZXJuYWwgQ0xLNCBpbnN0ZWFkIG9mIEJSRyBvbiBzcGMxOTIwCi0KLWNvbW1pdCBkOGQ5ZGUxYTAyZmJkODgwYjYxM2Q2MDcxNDNkMWY1NzM0MmFmZmM3Ci1BdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGNyZWFtbmV0LmRlPgotRGF0ZToJVHVlIEphbiA5IDE0OjU3OjEwIDIwMDcgKzAxMDAKLQotICAgIFVwZGF0ZSB0aGUgU1BDMTkyMCBDTUIgUExEIGRyaXZlcgotCi1jb21taXQgM2YzNGY4NjkxNjI3NTBlNWU5OTlmZDE0MGY4ODRmNWRlOTUyYmNmZQotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BjcmVhbW5ldC5kZT4KLURhdGU6CVR1ZSBKYW4gOSAxNDo1NzoxMCAyMDA3ICswMTAwCi0KLSAgICBBZGQgLyBlbmFibGUgSTJDIHN1cHBvcnQgb24gdGhlIHNwYzE5MjAgYm9hcmQKLQotY29tbWl0IGQyODcwN2RiY2UxZTlhYzIwMTdhZDA1MWRhNDEzM2JmMjJiNDIwNGYKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAY3JlYW1uZXQuZGU+Ci1EYXRlOglUdWUgSmFuIDkgMTQ6NTc6MTAgMjAwNyArMDEwMAotCi0gICAgQWRkIHN1cHBvcnQgZm9yIHRoZSB0bXMzMjA2NzF4IGhvc3QgcG9ydCBpbnRlcmZhY2UgKEhQSSkKLQotY29tbWl0IGY0ZWI1NDUyOWJiMzY2NGMzYTU2MmU0ODhiNDYwZmUwNzVmNzlkNjcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglTdW4gSmFuIDcgMDA6MTM6MTEgMjAwNyArMDEwMAotCi0gICAgUHJlcGFyZSBmb3IgcmVsZWFzZSAxLjIuMAotCi1jb21taXQgZjA3YWU3YTlkYWVmMjdhM2QwMjEzYTRmM2ZlMzlkNTM0MjE3M2MwMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgSmFuIDYgMTU6NTg6MDkgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSA0NHg6IEZpeCBwcm9ibGVtIHdpdGggRERSIGNvbnRyb2xsZXIgc2V0dXAgKHJlZnJlc2ggcmF0ZSkKLQotICAgIFRoaXMgcGF0Y2ggZml4ZXMgYSBwcm9ibGVtIHdpdGggYW4gaW5jb3JyZWN0IHNldHVwIGZvciB0aGUgcmVmcmVzaAotICAgIHRpbWVyIG9mIHRoZSA0NHggRERSIGNvbnRyb2xsZXIgaW4gdGhlIGZpbGUgY3B1L3BwYzR4eC9zZHJhbS5jCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBmMTZjMWRhOTU3N2YwNmM1ZmMwODY1MWE0MDY1NTM3NDA3ZGU0NjM1Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBKYW4gNiAxNTo1NjoxMyAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIFVwZGF0ZSBBTFBSIGJvYXJkIGZpbGVzCi0KLSAgICBUaGlzIHVwZGF0ZSBicmluZ3MgdGhlIEFMUFIgYm9hcmQgc3VwcG9ydCB0byB0aGUgbmV3ZXN0IHZlcnNpb24uCi0gICAgSXQgYWxzbyBmaXhlcyBhIHByb2JsZW0gd2l0aCB0aGUgTkFORCBkcml2ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBjZDFkOTM3ZjkwMjUwYTMyOTg4YzM3YjJiNGFmODM2NGQyNWRlOGVkCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CUZyaSBKYW4gNSAxMTo0NjowNSAyMDA3ICswMTAwCi0KLSAgICBbUEFUQ0hdIG5hbmQ6IEZpeCBwcm9ibGVtIHdpdGggb29ic2l6ZSBjYWxjdWxhdGlvbgotCi0gICAgSGVyZSB0aGUgZGVzY3JpcHRpb24gZnJvbSBCcmlhbiBCcmVsc2ZvcmQgPEJyaWFuX0JyZWxzZm9yZEBkZWxsLmNvbT46Ci0KLSAgICBUaGUgSHluaXggcGFydCByZXR1cm5zIGEgMHgxZCBpbiB0aGUgNHRoIElEIGJ5dGUuIFRoZSBTYW1zdW5nIHBhcnQKLSAgICByZXR1cm5zIGEgMHgxNS4gSW4gdGhlIGNvZGUgZnJhZ21lbnQgYmVsb3cgYml0cyBbMTowXSBkZXRlcm1pbmUgdGhlCi0gICAgcGFnZSBzaXplLCBpdCBpcyBBTkRlZCB2aWEgIihleHRpZCAmIDB4MykiIHRoZW4gc2hpZnRlZCBvdXQuIFRoZQotICAgIG5leHQgZmllbGQgaXMgYWxzbyBBTkRlZCB3aXRoIDB4My4gSG93ZXZlciB0aGlzIGlzIGEgb25lIGJpdCBmaWVsZAotICAgIGFzIGRlZmluZWQgaW4gdGhlIEh5bml4IGFuZCBTYW1zdW5nIHBhcnRzIGluIHRoZSA0dGggSUQgYnl0ZSB0aGF0Ci0gICAgZGV0ZXJtaW5zIHRoZSBvb2JzaXplLCBub3QgYSB0d28gYml0IGZpZWxkLiBJdCB3b3JrcyBvbiBTYW1zdW5nIGFzCi0gICAgYml0c1szOjJdIGFyZSAwMS4gSG93ZXZlciBmb3IgdGhlIEh5bml4IHRoZXJlIGlzIGEgMTEgaW4gdGhlc2UgdHdvCi0gICAgYml0cywgc28gdGhlIG9vYiBzaXplIGdldHMgbWVzc2VkIHVwLgotCi0gICAgSSBjaGVja2VkIHRoZSBjb3JyZWN0IGxpbnV4IGNvZGUgYW5kIHRoZSBzdWdnZXN0ZWQgZml4IGZyb20gQnJpYW4gaXMKLSAgICBhbHNvIGF2YWlsYWJsZSBpbiB0aGUgbGludXggbmFuZCBtdGQgZHJpdmVyLgotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgYTc4YmM0NDNhZTVhNGE4YmE4NzU5MDU4N2Q1ZTM1YmY1YTc4N2IyZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglGcmkgSmFuIDUgMTA6NDA6MzYgMjAwNyArMDEwMAotCi0gICAgW1BBVENIXSBDbGVhciBQTEI0QTBfQUNSW1dSUF0gb24gU2VxdW9pYSAoNDQwRVB4KQotCi0gICAgVGhpcyBmaXggd2lsbCBtYWtlIHRoZSBNQUwgYnVyc3QgZGlzYWJsaW5nIHBhdGNoIGZvciB0aGUgTGludXgKLSAgICBFTUFDIGRyaXZlciBvYnNvbGV0ZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDAyMzg4OTgzODI4MmI2MjM3YjQwMTY2NGYyMmRkMjJkZmJhMmMwNjYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIEphbiA1IDEwOjM4OjA1IDIwMDcgKzAxMDAKLQotICAgIFtQQVRDSF0gQWRkIEREUjIgb3B0aW1pemF0aW9uIGNvZGUgZm9yIFNlcXVvaWEgKDQ0MEVQeCkgYm9hcmQKLQotICAgIFRoaXMgY29kZSB3aWxsIG9wdGltaXplIHRoZSBERFIyIGNvbnRyb2xsZXIgc2V0dXAgb24gYSBib2FyZCBzcGVjaWZpYwotICAgIGJhc2lzLgotCi0gICAgTm90ZTogVGhpcyBjb2RlIGRvZXNuJ3Qgd29yayByaWdodCBub3cgb24gdGhlIE5BTkQgYm9vdGluZyBpbWFnZSBmb3IgdGhlCi0gICAgU2VxdW9pYSBib2FyZCwgc2luY2UgaXQgZG9lc24ndCBmaXQgaW50byB0aGUgNGtCeXRlcyBmb3IgdGhlIFNQTCBpbWFnZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGNjZTRhY2JiNjgzOTg2MzRiOGQwMTFlZDdiYjBkMTIyNjljODQyMzAKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVRodSBEZWMgMjggMTk6MDg6MjEgMjAwNiArMDEwMAotCi0gICAgRmV3IFYzOEIgY2hhbmdlczoKLSAgICAgIC0gZml4IGEgdHlwbyBpbiBWMzhCIGNvbmZpZyBmaWxlCi0gICAgICAtIG1vdmUgd2F0Y2hkb2cgaW5pdGlhbGlzYXRpb24gZWFybGllciBpbiB0aGUgYm9vdCBwcm9jZXNzCi0gICAgICAtIGFkZCAid2R0PW9mZiIgdG8gZGVmYXVsdCBrZXJuZWwgY29tbWFuZCBsaW5lIChkaXNhYmxlcyBrZXJuZWwgd2F0Y2hkb2cpCi0KLWNvbW1pdCA5MmViNzI5YmFkODc2NzI1YWVlYTkwOGQyYWRkYmEwODAwNjIwODQwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJV2VkIERlYyAyNyAwMToyNjoxMyAyMDA2ICswMTAwCi0KLSAgICBGaXggYnVnIGluIGFkYXB0aW9uIG9mIFN0ZWZhbm8gQmFiaWMncyBDRkkgZHJpdmVyIHBhdGNoLgotCi1jb21taXQgOWMwZjQyZWNmZTI1ZjdmZmNlOGVjN2E4MTVmMDM4NjRkNzIzZmZlMwotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVN1biBEZWMgMjQgMDE6NDI6NTcgMjAwNiArMDEwMAotCi0gICAgTWlub3IgY29kZSBjbGVhbnVwLgotCi1jb21taXQgZDc4NGZkYjA1OTAwYWRhMzY4NmQ1Nzc4NzgzZTFmYjMyOGU5ZmI2NgotQXV0aG9yOiBTdGVmYW5vIEJhYmljIDxzYmFiaWNAZGVueC5kZT4KLURhdGU6CVR1ZSBEZWMgMTIgMDA6MjI6NDIgMjAwNiArMDEwMAotCi0gICAgRml4IGNmaSBmYWlsdXJlIHdpdGggU3BhbnNpb24gRmxhc2ggKFNwYW5zaW9uIEZsYXNoIERldmljZXMgaGF2ZSBhIGRpZmZlcmVudCBvZmZzZXQgdG8gZ28gaW50byBDRkkgbW9kZSkKLQotY29tbWl0IDFiM2MzNjBjMjM1ZGM2ODRlYzA2YzJkNWYxODNmMGEyODJjZTQ1ZTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJRnJpIERlYyAyMiAxNDoyOTo0MCAyMDA2ICswMTAwCi0KLSAgICBbUEFUQ0hdIEZpeCBzZXF1b2lhIGZsYXNoIGF1dG9kZXRlY3Rpb24gKGZpbmFsbHkgY29ycmVjdCkKLQotICAgIE5vdyAzMk1CeXRlIGFuZCA2NE1CeXRlIEZMQVNIIGlzIGtub3cgdG8gd29yayBhbmQgb3RoZXIKLSAgICBjb25maWd1cmF0aW9ucyBzaG91bGQgd29yayB0b28uCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA4MmU1MjM2YThiNzE5NTQzNjQzZmQyNmQ1ODI3OTM4YWIyYjk0ODE4Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJRnJpIERlYyAyMiAxMDozMDoyNiAyMDA2ICswMTAwCi0KLSAgICBNaW5vciBjb2RlIGNsZWFudXA7IHVwZGF0ZSBDSEFOR0VMT0cuCi0KLWNvbW1pdCBmYTIzMDQ0NTY0MDkxZjA1ZDk2OTViZWI3YjViOWE5MzFlN2Y0MWE0Ci1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CVRodSBEZWMgMjEgMTc6MTc6MDIgMjAwNiArMDEwMAotCi0gICAgQWRkZWQgc3VwcG9ydCBmb3IgdGhlIFRRTTgyNzIgYm9hcmQgZnJvbSBUUQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCA2ZGVkZjNkNDlkZDE0YzNiZjU0MWM4ZWNlZTdmZmFhYzVmMGUxZDZjCi1BdXRob3I6IEhlaWtvIFNjaG9jaGVyIDxoc0Bwb2xsdXguZGVueC5kZT4KLURhdGU6CVRodSBEZWMgMjEgMTY6MTQ6NDggMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgdGhlIFVDMTAxIGJvYXJkIGZyb20gTUFOLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGVpa28gU2Nob2NoZXIgPGhzQGRlbnguZGU+Ci0KLWNvbW1pdCBjODRiYWQwZWY2MGU3MDU1YWIwYmQ0OWI5MzA2OTUwOWNlY2MzODJhCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgRGVjIDIwIDAwOjI5OjQzIDIwMDYgKzAxMDAKLQotICAgIEZpeCB0byBtYWtlIHRoZSBiYXVkcmF0ZSBjaGFuZ2VzIGltbWVkaWF0ZSBmb3IgdGhlIE1DRjUyeDIgZmFtaWx5LgotCi1jb21taXQgZGFhNmU0MThiY2MwYzcxNzc1MmU4ZGU5MzljMjEzYzc5MDI4NjA5NgotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIERlYyAyMCAwMDoyNzozMiAyMDA2ICswMTAwCi0KLSAgICBQcmVsaW1pbmFyeSBzdXBwb3J0IGZvciB0aGUgaURNUiBib2FyZCAoQ29sZEZpcmUpLgotCi1jb21taXQgY2RiOTdhNjY3ODgyNmY4NWU3YzY5ZWFlNmExYzExM2QwMzRjOWIxMAotQXV0aG9yOiBBbmRyZWkgU2Fmcm9ub3YgPHNhZnJvbm92QHBvbGx1eC5kZW54LmRlPgotRGF0ZToJRnJpIERlYyA4IDE2OjIzOjA4IDIwMDYgKzAxMDAKLQotICAgIGF1dG9tYXRpYyB1cGRhdGUgbWVjaGFuaXNtCi0KLWNvbW1pdCA5ZDI3YjNhMDY4NWZmOTlmYzQ3Nzk4M2YzMTVjMDRkNDlmNjU3YThhCi1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBEZWMgNCAxNzo1Njo1OSAyMDA2ICswODAwCi0KLSAgICBTbGlnaHQgY29kZSBjbGVhbiB1cC4KLSAgICBBZGQgY29tbWVudHMsIGRlbGV0ZSBkdXBsaWNhdGUgZGVmaW5lIGFuZCByZW1vdmUgc3BhY2VzLgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRkYmNkNjllM2UyNzc2ZWEzMzQ1OTBkNTc2OGUzNjkyYzVmYWU1YzEKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIERlYyA0IDE3OjU0OjIxIDIwMDYgKzA4MDAKLQotICAgIEludHJvZHVjZSBQTExfQ0ZHWzA6NF0gdGFibGUgZm9yIHByb2Nlc3NvciA3NDQ4Lzc0NDdBLzc0NTUvNzQ1Ny4gVGhlIG9yaWdpbmFsCi0gICAgbXVsdGlwbGllciB0YWJsZSBjYW4gbm90IHJlZmVjdCB0aGUgcmVhbCBQTEwgY2xvY2sgYmVoYXZpb3Igb2YgdGhlc2UKLSAgICBwcm9jZXNzb3JzLiBQbGVhc2UgcmVmZXIgdG8gdGhlIGhhcmR3YXJlIHNwZWNpZmljYXRpb24gZm9yIGRldGFpbGVkCi0gICAgaW5mb3JtYXRpb24gb2YgdGhlIGNvcnJlc3BvbmRpbmcgcHJvY2Vzc29ycy4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0ZWZlMjBjOTU3OTAxMWQ5OTg3ZjYyZWQ3ZDM1ZWU4Y2RjMWNmMGUwCi1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBEZWMgNCAxNDo0NjoyMyAyMDA2ICswODAwCi0KLSAgICBSZW1vdmUgdGhlIHN0YXRpYyBNQUMgYWRkcmVzcywgaXAgYWRkcmVzcywgc2VydmVyIGlwLCBuZXRtYXNrIGFuZAotICAgIGdhdGV3YXkgaXAgZm9yIG5ldHdvcmsgc2V0dGluZy4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2ZjEyYzYxY2YzMWVkNzNkNzJkZGZjZmM3MTJhODU0YTNhMTc3YWFmCi1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CU1vbiBEZWMgNCAxNDozMzowOCAyMDA2ICswODAwCi0KLSAgICBSZW1vdmUgdGhlIGR1cGxpY2F0ZSBtZW1vcnkgdGVzdCBjb2RlIGZvciBtcGM3NDRpaHBjMiBib2FyZC4KLSAgICBJZiBhIG1lbW9yeSB0ZXN0IGlzIG5lZWRlZCwgcGxlYXNlIHVzZSB0aGUgZnVuY3Rpb25zIGluCi0gICAgcG9zdC9tZW1vcnkuYyBvciBtZW10ZXN0IGNvbW1hbmQuCi0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYzljMWVlZWQ3ZGQxOTNmYTY1ZmIxOTQ2NTQxMzIwNDBkNDlkNGQzYQotQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgRGVjIDEgMTk6MDE6MjUgMjAwNiArMDgwMAotCi0gICAgRml4IHRoZSBleGNlcHRpb24gb2NjdXJpbmcgaW4gUkFNIHRhYmxlIHNlYXJjaCBpc3N1ZS4KLSAgICBUaGUgb3JpZ2luYWwgc2VhcmNoX29uZV90YWJsZSgpIGZ1bmN0aW9uIGNvZGUgY2FuIG9ubHkgcHJvY2Vzc2VzIHRoZSBzZWFyY2gKLSAgICBmb3IgdGhlIGV4Y2VwdGlvbiBvY2N1cnJpbmcgaW4gRkxBU0gvUk9NLCBiZWNhdXNlIHRoZSBleGNlcHRpb24gYW5kIGZpeHVwCi0gICAgdGFibGUgdXN1YWxseSBsb2NhdGUgaW4gRkxBU0guIElmIHRoZSBleGNlcHRpb24gYWRkcmVzcyBpcyBhbHNvIGluCi0gICAgRkxBU0gsIGl0IHdpbGwgYmUgT0suCi0gICAgSWYgdGhlIGV4Y2VwdGlvbiBvY2N1cnMgaW4gUkFNLCBhZnRlciB0aGUgdS1ib290IHJlbG9jYXRpb24sIGEKLSAgICByZWxvY2F0aW9uIG9mZnNldCBzaG91bGQgYmUgYWRkZWQuCi0KLSAgICBjbGVhbiB1cCB0aGUgY29kZSBpbiBjcHUvNzR4eF83eHgvY3B1LmMKLQotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGVlMzExMjE0ZTBkMjE2ZjkwNGZlZWEyNjk1OTlkMDkzNGJmNzFmMjMKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIERlYyAxIDExOjQ3OjM2IDIwMDYgKzA4MDAKLQotICAgIENsZWFuIHVwIHRoZSBjb2RlIGFjY29yZGluZyB0byBjb2Rlc3R5bGU6Ci0gICAgKDEpIHJlbW92ZSBzb21lIEMrKyBjb21tZW50cy4KLSAgICAoMikgcmVtb3ZlIHRyYWlsaW5nIHdoaXRlIHNwYWNlLgotICAgICgzKSByZW1vdmUgdHJhaWxpbmcgZW1wdHkgbGluZS4KLSAgICAoNCkgSW5kZW50YXRpb24gYnkgdGFibGUuCi0gICAgKDUpIHJlbW92ZSB7fSBpbiBvbmUgbGluZSBjb25kaXRpb24uCi0gICAgKDYpIGFkZCBzcGFjZSBiZWZvcmUgJygnIGluIGZ1bmN0aW9uIGNhbGwuCi0gICAgUmVtb3ZlIHNvbWUgd2VpcmQgcHJpbnRmICgpIG91dHB1dC4KLSAgICBBZGQgbmVjZXNzYXJ5IGNvbW1lbnRzLgotICAgIE1vZGlmaWVkIE1ha2VmaWxlIHRvIHN1cHBvcnQgYnVpbGRpbmcgaW4gYSBzZXBhcmF0ZSBkaXJlY3RvcnkuCi0KLWNvbW1pdCBkZDUyMGJmMzE0YzdhZGQ0MTgzYzUxOTE2OTIxODBmNTc2Zjk2YjYwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVGh1IE5vdiAzMCAxODowMjoyMCAyMDA2ICswMTAwCi0KLSAgICBDb2RlIGNsZWFudXAuCi0KLWNvbW1pdCA4ZDlhODYxMGI4MjU2MzMxMTMyMjI3ZTllNjU4NWM2YmQ1NzQyNzg3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVGh1IE5vdiAzMCAwMTo1NDowNyAyMDA2ICswMTAwCi0KLSAgICBDb2RlIGNsZWFudXAuIFVwZGF0ZSBDSEFOR0VMT0cuCi0KLWNvbW1pdCA3MjZlOTBhYWNmMGIxZWNiMGU3MDU1YmU1NzQ2MjJmYmUzZTQ1MGJhCi1BdXRob3I6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLURhdGU6CVdlZCBOb3YgMjkgMTY6MjM6NDIgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBbTVBDNTJ4eF0gVXNlIElQQiBidXMgZnJlcXVlbmN5IGZvciBTT0MgcGVyaXBoZXJhbHMKLQotICAgIFRoZSBzb2Mgbm9kZSBvZiB0aGUgbXBjNTJ4eCBuZWVkcyB0byBiZSBsb2FkZWQgd2l0aCB0aGUgSVBCIGJ1cyBmcmVxdWVuY3ksCi0gICAgbm90IHRoZSBYTEIgZnJlcXVlbmN5LgotCi0gICAgVGhpcyBwYXRjaCBkZXBlbmRzIG9uIHRoZSBwcmV2aW91cyBwYXRjaGVzIGZvciBNUEM1Mnh4IGRldmljZSB0cmVlIHN1cHBvcnQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTeWx2YWluIE11bmF1dCA8dG50QDI0NnROdC5jb20+Ci0KLWNvbW1pdCAxZWFjMmE3MTQxN2I2Njc1YjExYWFjZTcyMTAyYTJlN2ZkZThmNWM2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBOb3YgMjkgMTU6NDI6MzcgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBBZGQgc3VwcG9ydCBmb3IgUHJvZHJpdmUgUDNNNzUwICYgUDNNNzQ0OCAoUDNNeCkgYm9hcmRzCi0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFByb2RyaXZlIFAzTTc1MCAoUFBDNzUwICYgTVY2NDQ2MCkKLSAgICBhbmQgdGhlIFAzTTc0NDggKE1QQzc0NDggJiBNVjY0NDYwKSBQTUMgbW9kdWxlcy4gQm90aCBtb2R1bGVzIGFyZQotICAgIHF1aXRlIHNpbWlsYXIgYW5kIHNoYXJlIHRoZSBzYW1lIGJvYXJkIGRpcmVjdG9yeSAicHJvZHJpdmUvcDNteCIKLSAgICBhbmQgdGhlIHNhbWUgY29uZmlnIGZpbGUgInAzbXguaCIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxYmRkNDY4MzJhZWI1NjlmNWUwNGIxZjIwZjY0MzE4NTI1YjY1MjVhCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVdlZCBOb3YgMjkgMTI6NTM6MTUgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBjb21tb24vY21kX2VsZi5jOiBFbmFibGUgbG9hZGFkZHIgYXMgcGFyYW1ldGVyIGluIGJvb3R2eCBjb21tYW5kCi0KLSAgICBJbiB0aGUgYm9vdHZ4IGNvbW1hbmQgdGhlIGxvYWQgYWRkcmVzcyB3YXMgb25seSByZWFkIGZyb20gdGhlIGVudgotICAgIHZhcmlhYmxlICJsb2FkYWRkciIgYW5kIG5vdCBvcHRpb25hbGx5IHBhc3NlZCBhcyBwYXJhbXRlciBhcyBkZXNjcmliZWQKLSAgICBpbiB0aGUgaGVscC4gVGhpcyBpcyBmaXhlZCB3aXRoIHRoaXMgcGF0Y2guIFRoZSBiZWhhdmlvdXIgaXMgbm93IHRoZQotICAgIHNhbWUgYXMgaW4gdGhlIGJvb3RlbGYgY29tbWFuZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDRlMjZmMTA3NGMzYWMxYmQ4ZmQwOTRmMGRjNGExYzRhMGIxNWE1OTIKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJV2VkIE5vdiAyOSAxMjowMzo1NyAyMDA2ICswMTAwCi0KLSAgICBbUEFUQ0hdIGluY2x1ZGUvcHBjNDQwLmggbWlub3IgZXJyb3IgYWZmZWN0aW5nIGludGVycnVwdHMKLQotICAgIEZpeGVkIGluY2x1ZGUvcHBjNDQwLmMgZm9yIFVJQyBhZGRyZXNzIEJ1ZwotCi0gICAgQ29ycmVjdHMgYnVnIGFmZmVjdGluZyB0aGUgYWRkcmVzc2VzIGZvciB0aGUgdW5pdmVyc2FsIGludGVycnVwdAotICAgIGNvbnRyb2xsZXIgVUlDMiBhbmQgVUlDMyBvbiB0aGUgUFBDNDQwIEVweCwgR1J4LCBhbmQgU1BFIGNoaXBzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSmVmZiBNYW5uIDxtYW5uakBlbWJlZGRlZHBsYW5ldC5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTkzOWQ5Njk0NDNjY2YzMTZjYWIyYmYzMmFiMTAyN2Q0ZGI1YmExYQotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVR1ZSBOb3YgMjggMTY6MTc6MjcgMjAwNiAtMDYwMAotCi0gICAgTWFrZSBmc2wtaTJjIG5vdCBjb25mbGljdCB3aXRoIFNPRlQgSTJDCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTQxOThiZjc2OGZkYzk1OGUzYzFhZmQyNDA0ZTUyNjIyMDhlOThkNwotQXV0aG9yOiBKb2FraW0gVGplcm5sdW5kIDxKb2FraW0uVGplcm5sdW5kQHRyYW5zbW9kZS5zZT4KLURhdGU6CVR1ZSBOb3YgMjggMTY6MTc6MTggMjAwNiAtMDYwMAotCi0gICAgRml4IEkyQyBtYXN0ZXIgYWRkcmVzcyBpbml0aWFsaXphdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjZjNkMDQ1ZTUxY2E4ZGNjNmNmNzU5ODI3MTQwODYxZDZhYzI1YzA0Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTm92IDI4IDIzOjMxOjE5IDIwMDYgLTA2MDAKLQotICAgIEFzc2lnbiBtYWludGFpbmVycyBmb3IgbXBjODM0OWVtZHMgYW5kIG1wYzgzNjBlbWRzCi0KLSAgICBEYXZlIGZvciBtcGM4MzYwZW1kcywgYW5kIG1lIGZvciBtcGM4MzQ5ZW1kcy4KLQotY29tbWl0IDFhYTkzNGM4MWI3N2YyMDgwZDNjYTRiMjI2ZWFiNjdiMTdhMzM5NjEKLUF1dGhvcjogS2ltIFBoaWxsaXBzIDxraW0ucGhpbGxpcHNAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBOb3YgMjggMjM6Mjg6MzMgMjAwNiAtMDYwMAotCi0gICAgRWxpbWluYXRlIGdjYyA0ICd1c2VkIHVuaW5pdGlhbGl6ZWQnIHdhcm5pbmdzIGluIGRyaXZlcnMvcWUvdWNjZi5jCi0KLSAgICBnaXZlIGluaXRpYWwgdmFsdWVzIGZvciByZWdfbnVtLCBzaGlmdCwgcF9jbXh1Y3IgaW4gdWNjX3NldF9jbGtfc3JjCi0gICAgc2luY2UgdGhleSBhcmUgcGFzc2VkIGJ5IHJlZmVyZW5jZSB0byB1Y2NfZ2V0X2NteHVjcl9yZWcgYW5kIGFzc2lnbmVkLgotCi1jb21taXQgZTg1N2E1YmRiMzk1NGI4OTZjMDkyMGNiOWQ4ZDJiMWI5YzEwN2NlNQotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE5vdiAyOCAxMjowOTozNSAyMDA2IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBNaXNjZWxsYW5lb3VzIGNvZGUgc3R5bGUgZml4ZXMKLQotICAgIEltcGxlbWVudCB2YXJpb3VzIGNvZGUgc3R5bGUgZml4ZXMgYW5kIHNpbWlsYXIgY2hhbmdlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBlNTk1ODFjNTZhYjVkNmUwMjA3ZGRhYzNiMmMxZDU1Y2IzNmVjNzA2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBOb3YgMjggMTc6NTU6NDkgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBFbmFibGUgdGhlIEljZUN1YmUvbGl0ZTUyMDAgdmFyaWFudHMgdG8gcGFzcyBhIGRldmljZSB0cmVlIHRvIExpbnV4LgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHRoZSBjb2RlIGFuZCBjb25maWd1cmF0aW9uIG5lY2Vzc2FyeSB0byBib290IHdpdGggYW4KLSAgICBhcmNoL3Bvd2VycGMgTGludXgga2VybmVsLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAZ21haWwuY29tPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTczMmZhZWM5NWE4M2NiNDY4YjQ4NTBhZTgwN2M4MzAxZGRlOGY2YQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDI4IDE2OjA5OjI0IDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gUFBDNHh4OiA0NDBTUCBSZXYuIEMgZGV0ZWN0aW9uIGFkZGVkCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBlN2YzZTlmZjAxZmJkN2ZhNzJlYjQyYTk2NzVmYmVkNmJjNDczNmIwCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBOb3YgMjggMTE6MDQ6NDUgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBuYW5kOiBGaXggcGF0Y2ggbWVyZ2UgcHJvYmxlbQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgNThlM2IxNGMxOGVkMzI4OGNlZWY4ZDA4Njk0NmRiZjNkZjY0Y2NmMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgTm92IDI4IDExOjA0OjQ1IDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gbmFuZDogRml4IHBhdGNoIG1lcmdlIHByb2JsZW0KLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDRmNGI2MDJlYzc1MjRhMDMyYmRmM2M2ZDI4YzdmNTI1YTRhNjdlYWEKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI3IDIyOjUzOjUzIDIwMDYgKzAxMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotY29tbWl0IGY2ZTQ5NWY1NGNkYjhmZTM0MGI5YzAzZGVhYjQwYWQ3NDZkNTJmYWUKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE5vdiAyNyAxNzo0MzoyNSAyMDA2ICswMTAwCi0KLSAgICBbUEFUQ0hdIDR4eF9lbmV0LmM6IENvcnJlY3QgdGhlIHNldHRpbmcgb2Ygem1paWZlciByZWdpc3RlcgotCi0gICAgUGF0Y2ggYmVsb3cgY29ycmVjdHMgdGhlIHNldHRpbmcgb2YgdGhlIHptaWlmZXIgcmVnaXN0ZXIsIGl0IHdhcwotICAgIG92ZXJ3cml0dGluZyB0aGUgcmVnaXN0ZXIgcmF0aGVyIHRoYW4gT1JpbmcgdGhlIHNldHRpbmdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmVpbCBXaWxzb24gPE5XaWxzb25AYWlyc3Bhbi5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZDFhNzI1NDUyOTY4MDBiN2UyMTlmOTMxMDRhZDU4MzZmMDAwM2Q2NgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI3IDE3OjM0OjEwIDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gU2VsZWN0IE5BTkQgZW1iZWRkZWQgZW52aXJvbm1lbnQgZnJvbSBib2FyZCBjb25maWd1cmF0aW9uCi0KLSAgICBUaGUgY3VycmVudCBOQU5EIEJvb3Rsb2FkZXIgc2V0dXAgZm9yY2VzIHRoZSBlbnZpcm9ubWVudAotICAgIHZhcmlhYmxlcyB0byBiZSBpbiBsaW5lIHdpdGggdGhlIGJvb3Rsb2FkZXIuIFRoaXMgY2hhbmdlCi0gICAgZW5hYmxlcyB0aGUgY29uZmlndXJhdGlvbiB0byBiZSBtYWRlIGluIHRoZSBib2FyZCBpbmNsdWRlCi0gICAgZmlsZSBpbnN0ZWFkIHNvIHRoYXQgaXQgY2FuIGJlIGluZGl2aWR1YWxseSBlbmFibGVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgMTU3ODQ4NjI4NTdjM2MyMjE0NDk4ZGVmY2ZlZDg0ZmYxMzdmYjgxZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI3IDE3OjIyOjE5IDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gbmFuZF93YWl0KCkgdGltZW91dCBmaXhlcwotCi0gICAgVHdvIGZpeGVzIGZvciB0aGUgbmFuZF93YWl0KCkgZnVuY3Rpb24gaW4KLSAgICBkcml2ZXJzL25hbmQvbmFuZF9iYXNlLmM6Ci0KLSAgICAxLiBVc2UgY29ycmVjdCB0aW1lb3V0cy4gVGhlIG9yaWdpbmFsIHRpbWVvdXRzIGluIExpbnV4Ci0gICAgc291cmNlIGFyZSA0MDBtcyBhbmQgMjBtcyBub3QgNDBzIGFuZCAyMHMKLQotICAgIDIuIFJldHVybiBjb3JyZWN0IGVycm9yIHZhbHVlIGluIGNhc2Ugb2YgdGltZW91dC4gMCBpcwotICAgIGludGVycHJldGVkIGFzIE9LLgotCi0gICAgU2lnbmVkLW9mZi1ieTogUnVpIFNvdXNhIDxydWkuc291c2FAbGFwb3N0ZS5uZXQ+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZGE1NTUzYjA5NWJmMDRmNGYxMDlhZDdlNTY1ZGFlM2FiYTQ3YjIzMAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI3IDE3OjA0OjA2IDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gQWxsb3cgQ09ORklHX09GX0ZMQVRfVFJFRSB0byBib290IGEgbm9uLWFyY2gvcG93ZXJwYyBrZXJuZWwKLQotICAgIFRoaXMgcGF0Y2ggYWxsb3dzIGFuIGFyY2gvcHBjIGtlcm5lbCB0byBiZSBib290ZWQgYnkganVzdCBwYXNzaW5nIDEgb3IgMgotICAgIGFyZ3VtZW50cyB0byBib290bS4gIEl0IHJlbW92ZXMgdGhlIGdldGVudigiZGlzYWJsZV9vZiIpIHRlc3QgdGhhdCB1c2VkCi0gICAgdG8gYmUgdXNlZCBmb3IgdGhpcyBwdXJwb3NlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotICAgIEFja2VkLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYTkzOThlMDE4NTkzNzgyYzVmYTdkMDc0MTk1NWZjMTI1NmIzNGMxZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjcgMTU6MzI6NDIgMjAwNiArMDEwMAotCi0gICAgTWlub3IgY29kZSBjbGVhbnVwLiBVcGRhdGUgQ0hBTkdFTE9HLgotCi1jb21taXQgMTcyOWI5MmNkZTU3NTQ3NjY4NGJmZmU4MTlkMGI3NzkxYjU3YmZmMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI3IDE0OjUyOjA0IDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gNHh4OiBGaXggcHJvYmxlbSB3aXRoIGJvYXJkIHNwZWNpZmljIHJlc2V0IGNvZGUgKG5vdyBmb3IgcmVhbCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGNjNWVlOGE5MmEwZTNjYTZmNzI3YWY3MWI4ZmQyMDY0NjBjN2FmZDcKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE5vdiAyNyAxNDo0OTo1MSAyMDA2ICswMTAwCi0KLSAgICBbUEFUQ0hdIGFscHI6IHJlbW92ZSB1bnVzZWQgYm9hcmQgc3BlY2lmaWMgZmxhc2ggZHJpdmVyCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxZjk0ZDE2MmUyYjVmMGVkYzI4ZDlmYjExNDgyNTAyYzQ0ZDIxOGUxCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjcgMTQ6NDg6NDEgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSA0eHg6IEZpeCBwcm9ibGVtIHdpdGggYm9hcmQgc3BlY2lmaWMgcmVzZXQgY29kZQotCi0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgZWMwYzJlYzcyNWFlYzk1MjRhMTc3YTc3Y2U3NTU1OWU2NDRhOTMxYQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI3IDE0OjQ2OjA2IDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gUmVtb3ZlIHRlc3RpbmcgNHh4IGVuZXQgUEhZIHNldHVwCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxYzJjZTIyNjIwNjk1MTBmMzFjN2QzZmQ3ZWZkM2Q1OGI4YzBjMTQ4Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjcgMTQ6MTI6MTcgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBVcGRhdGUgUHJvZHJpdmUgQUxQUiBib2FyZCBzdXBwb3J0ICg0NDBHWCkKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IDU4YjQ4NTc3NjY5OGMzZDcxZWM1YTIxNWUzOTIxMjNiNGMxNWFmYTMKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjcgMTE6NTE6MjEgMjAwNiArMDEwMAotCi0gICAgQWRkIGEgc21hbGwgUkVBRE1FIHdpdGggaW5mb3JtYXRpb24gb24gdGhlIGdlbmVyaWMgb2hjaSBkcml2ZXIuCi0KLWNvbW1pdCBhZTNiNzcwZTRlYWU4ZTk4YjZlOWUyOTY2MmUxOGM0N2ZkZjAxNzFmCi1BdXRob3I6IE1hcmt1cyBLbG90emJ1ZWNoZXIgPG1rQGRlbnguZGU+Ci1EYXRlOglNb24gTm92IDI3IDExOjQ2OjQ2IDIwMDYgKzAxMDAKLQotICAgIEZpeCBzb21lIGVuZGlhbm5lc3MgaXNzdWVzIHJlbGF0ZWQgdG8gdGhlIGdlbmVyaWMgb2hjaSBkcml2ZXIKLQotY29tbWl0IDdiNTliM2M3YThjZTJlNGI1NjdhYmY5OWMxY2Q2NjdiZjM1Yjk0MTgKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjcgMTE6NDQ6NTggMjAwNiArMDEwMAotCi0gICAgSW50cm9kdWNlZCB0aGUgY29uZmlndXJhdGlvbiBvcHRpb24gQ09ORklHX1VTQl9PSENJX05FVyBpbiBvcmRlciB0byBiZSBhYmxlCi0gICAgdG8gY2hvb3NlIGJldHdlZW4gdGhlIG9sZCBhbmQgdGhlIGdlbmVyaWMgT0hDSSBkcml2ZXJzLgotCi1jb21taXQgNTNlMzM2ZTlmZmM1MTAzNWJkYzRlNTg2NzYzMWIzMzc4NzYxYjRkZgotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJTW9uIE5vdiAyNyAxMTo0MzowOSAyMDA2ICswMTAwCi0KLSAgICBNb2RpZmllZCB0aGUgbXBjNXh4eCBhbmQgdGhlIHBwYzR4eCBjcHUgdG8gdXNlIHRoZSBnZW5lcmljIE9IQ0kgZHJpdmVyCi0gICAgYW5kIGFkYXB0ZWQgYm9hcmQgY29uZmlncyBUUU01MjAwIGFuZCB5b3NlbWl0ZSBhY2NvcmRpbmdseS4gVGhpcyBjb21taXQKLSAgICBhbHNvIG1ha2VzIHRoZSBtYXhpbXVtIG51bWJlciBvZiByb290IGh1YiBwb3J0cyBjb25maWd1cmFibGUKLSAgICAoQ0ZHX1VTQl9PSENJX01BWF9ST09UX1BPUlRTKS4KLQotY29tbWl0IDc4ZDYyMGViYjU4NzFkMjUyMjcwZGVkZmFkNjBjNjU2ODk5M2I3ODAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAYXRsYXMuZGVueC5kZT4KLURhdGU6CVRodSBOb3YgMjMgMjI6NTg6NTggMjAwNiArMDEwMAotCi0gICAgVXBkYXRlcyBmb3IgVFFNNTIwMCBtb2R1bGVzOgotICAgIC0gZml4IG9mZi1ieS1vbmUgZXJyb3IgaW4gYm9hcmQvdHFtNTIwMC9jYW01MjAwX2ZsYXNoLmMgZXJyb3IgbWVzc2FnZQotICAgIC0gc2ltcGxpZnkgInVkYXRlIiBkZWZpbml0aW9ucwotCi1jb21taXQgMjA1MzI4MzMwNGVlZGRmMjUwZDEwOWU2NzkxZWI2ZmE0Y2FkMTRmNwotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglXZWQgTm92IDIyIDEzOjIwOjUwIDIwMDYgKzAxMDAKLQotICAgIFtQQVRDSF0gUFBDNHh4IHN0YXJ0LlM6IEZpeCBmb3IgcHJvY2Vzc29yIGVycmF0YQotCi0gICAgRml4ZWQgY3B1L3BwYzR4eC9zdGFydC5TIGZvciA0NDBFUHggRXJyYXRhOiBmdXJ0aGVyIGNvcnJlY3RzIFBQQzQ0MEVQeAotICAgIGVycmF0YSAxLjEyOiA0NDBfMzMgYnkgbW92aW5nIHBhdGNoIHVwIGluIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKZWZmIE1hbm4gPG1hbm5qQGVtYmVkZGVkcGxhbmV0LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCA0ZWY2MjUxNDAzZjYzNzg0MTAwMGUwZmVmOWU4MzJhYTAxMzM5ODIyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CU1vbiBOb3YgMjAgMjA6Mzk6NTIgMjAwNiArMDEwMAotCi0gICAgW1BBVENIXSBVcGRhdGUgQU1DQyBTZXF1b2lhIGNvbmZpZyBmaWxlIHRvIHN1cHBvcnQgNjRNQnl0ZSBOT1IgRkxBU0gKLQotICAgIFNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLQotY29tbWl0IGU0YmJkOGRhMTY0Yjk3NmQzODYxNmJkOWM2OWM1ZTg2ZTE5M2NkZjAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gTm92IDIwIDEwOjI4OjMwIDIwMDYgKzAxMDAKLQotICAgIFVwZGF0ZSBDSEFOR0VMT0cKLQotY29tbWl0IDI2MDQyMWEyMWU5MzRhNjhkMzFmYjYxMjViMGZiZDI2MzFhOGNhMjAKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJTW9uIE5vdiAxMyAxMzo1NToyNCAyMDA2ICswMTAwCi0KLSAgICBbUEFUQ0hdIENGSSBkcml2ZXIgQU1EIENvbW1hbmQgU2V0IFRvcCBib290IGdlb21ldHJ5IHJldmVyc2FsLCBldGMuIFtVcGRhdGVkXQotCi0gICAgICAgKiBBZGRzIHN1cHBvcnQgZm9yIEFNRCBjb21tYW5kIHNldCBUb3AgQm9vdCBmbGFzaCBnZW9tZXRyeSByZXZlcnNhbAotICAgICAgICogQWRkcyBzdXBwb3J0IGZvciByZWFkaW5nIEpFREVDIE1hbnVmYWN0dXJlciBJRCBhbmQgRGV2aWNlIElECi0gICAgICAgKiBBZGRzIHN1cHBvcnQgZm9yIGRpc3BsYXlpbmcgY29tbWFuZCBzZXQsIG1hbnVmYWN0dXJlciBpZCBhbmQKLQkgZGV2aWNlIGlkcyAoZmxpbmZvKQotICAgICAgICogTWFrZXMgZmxpbmZvIG91dHB1dCB0byBiZSBjb25zaXN0ZW50IHdoZW4gQ0ZHX0ZMQVNIX0VNUFRZX0lORk8gZGVmaW5lZAotICAgICAgICogUmVtb3ZlcyBvdXRkYXRlZCBjaGFuZ2UgaGlzdG9yeSAocmVmZXIgdG8gZ2l0IGxvZyBpbnN0ZWFkKQotCi0gICAgU2lnbmVkLW9mZi1ieTogVG9sdW5heSBPcmt1biA8bGlzdG1lbWJlckBvcmt1bi51cz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCBiMjFiNTExZDRjNTA0MDhmNDg1M2Y0NmYwNmI2MDEyNzIxOTYyMjNmCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJU3VuIE5vdiAxMiAyMToxMzoyMyAyMDA2ICswMTAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HCi0KLWNvbW1pdCBjZTNmMWE0MGM1MDdhZmJhYjA2YzVlYjU4Y2NkYzY3MTNlZGEzMjQ1Ci1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglTYXQgTm92IDExIDIyOjQ4OjIyIDIwMDYgKzAxMDAKLQotICAgIERpc2FibGUgdGhlIHdhdGNoZG9nIGluIHRoZSBkZWZhdWx0IGNvbmZpZyBmb3IgdGhlIFYzOEIgYm9hcmQuCi0KLWNvbW1pdCA0NGE0N2U2ZGIyNjk0ODQxMjExZjFjOGZkYmFmZDM2OTkyZTljZDFhCi1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglTYXQgTm92IDExIDIyOjQzOjAwIDIwMDYgKzAxMDAKLQotICAgIENoYW5nZSB0aGUgR1BJTyBwaW4gbXVsdGlwbGV4aW5nIGNvbmZpZ3VyYXRpb24gZm9yIFYzOEIuIFRoZSBVU0IgR1BJTyBwaW4KLSAgICBncm91cCBpcyBlbmFibGVkIGZvciBVU0IgZWFybGllciAoaW4gY3B1X2luaXRfZigpIGluc3RlYWQgb2YKLSAgICB1c2JfbG93bGV2ZWxfaW5pdCgpKS4KLQotY29tbWl0IDkxNjUwYjNlNGRlNjg4MDM4ZDRmNzEyNzljNDQ4NThlM2UyYzY4NzAKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglNb24gTm92IDYgMTc6MDY6MzYgMjAwNiArMDEwMAotCi0gICAgU2VxdWVudGlhbCBhY2Nlc3NlcyB0byBub24tZXhpc3RlbnQgbWVtb3J5IG11c3QgYmUgc3luY2hyb25pemVkLAotICAgIGF0IGxlYXN0IG9uIEcyIGNvcmVzLgotCi0gICAgVGhpcyBmaXhlcyBnZXRfcmFtX3NpemUoKSBwcm9ibGVtcyBvbiBNUEM1MjAwIFJldi4gQiBib2FyZHMuCi0KLWNvbW1pdCBiZTVlNjE4MTVkNWExZmFjMjkwY2U5YzBlZjA5Y2I2YThlNDI4OGZhCi1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDMgMTk6MTU6MDAgMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogVXBkYXRlIDgzeHggdG8gdXNlIGZzbF9pMmMuYwotCi0gICAgVXBkYXRlIHRoZSA4M3h4IHRyZWUgdG8gdXNlIEkyQyBzdXBwb3J0IGluIGRyaXZlcnMvZnNsX2kyYy5jLiAgRGVsZXRlCi0gICAgY3B1L21wYzgzeHgvaTJjLmMsIGluY2x1ZGUvYXNtLXBwYy9pMmMuaCwgYW5kIGFsbCByZWZlcmVuY2VzIHRvIHRob3NlIGZpbGVzLgotICAgIEFkZGVkIG11bHRpcGxlIEkyQyBidXMgc3VwcG9ydCB0byBmc2xfaTJjLmMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDIzOWQ3NGIxYzkzNzk4NGJjNTE5MDgzYThlN2RlMzczYTM5MGYwNgotQXV0aG9yOiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE5vdiAzIDEyOjAwOjI4IDIwMDYgLTA2MDAKLQotICAgIG1wYzgzeHg6IFJlcGxhY2UgQ0ZHX0lNTVJCQVIgd2l0aCBDRkdfSU1NUgotCi0gICAgUmVwbGFjZSBhbGwgaW5zdGFuY2VzIG9mIENGR19JTU1SQkFSIHdpdGggQ0ZHX0lNTVIsIHNvIHRoYXQgdGhlIDgzeHgKLSAgICB0cmVlIG1hdGNoZXMgdGhlIG90aGVyIDh4eHggdHJlZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjdmYjJlNzAzZWM5Njg4NTQxNDE2OTYyNzI0YWRmZjcwYTczMjJjYgotQXV0aG9yOiBLaW0gUGhpbGxpcHMgPGtpbS5waGlsbGlwc0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyIDE5OjQ3OjExIDIwMDYgLTA2MDAKLQotICAgIG1wYzgzeHg6IExpbmRlbnQgYW5kIGNsZWFuIHVwIGNwdS9tcGM4M3h4L3NwZWVkLmMKLQotY29tbWl0IDkwZjMwYTcxMGEzYzYxOWI1NDA1ODYwYTY4NmM0ZGRmYzQ5NWQ0YjYKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgMiAxODowNTo1MCAyMDA2IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBGaXggdGhlIGluY29ycmVjdCBkY2J6IG9wZXJhdGlvbgotCi0gICAgVGhlIDgzNHggcmV2MS54IHNpbGljb24gaGFzIG9uZSBDUFU1IGVycmF0YS4KLQotICAgIFRoZSBpc3N1ZSBpcyB3aGVuIHRoZSBkYXRhIGNhY2hlIGxvY2tlZCB3aXRoCi0gICAgSElEMFtETE9DS10sIHRoZSBkY2J6IGluc3RydWN0aW9uIGxvb2tzIGxpa2Ugbm8tb3AgaW5zdC4KLQotICAgIFRoZSByaWdodCBiZWhhdmlvciBvZiB0aGUgZGF0YSBjYWNoZSBpcyB3aGVuIHRoZSBkYXRhIGNhY2hlCi0gICAgTG9ja2VkIHdpdGggSElEMFtETE9DS10sIHRoZSBkY2J6IGluc3RydWN0aW9uIGFsbG9jYXRlcwotICAgIG5ldyB0YWdzIGluIGNhY2hlLgotCi0gICAgVGhlIDgzNHggcmV2My4wIGFuZCBsYXRlciBhbmQgODM2MCBoYXZlIG5vdCB0aGlzIGJ1ZyBpbnNpZGUuCi0KLSAgICBTbywgd2hlbiA4MzR4IHJldjMuMC84MzYwIGFyZSB3b3JraW5nIHdpdGggRUNDLCB0aGUgZGNiegotICAgIGluc3RydWN0aW9uIHdpbGwgY29ycnVwdCB0aGUgc3RhY2sgaW4gY2FjaGUsIHRoZSBwcm9jZXNzb3Igd2lsbAotICAgIGNoZWNrc3RvcCByZXNldC4KLQotICAgIEhvd2V2ZXIsIHRoZSA4MzR4IHJldjEueCBjYW4gd29yayB3aXRoIEVDQyB3aXRoIHRoZXNlIGNvZGUsCi0gICAgYmVjYXVzZSB0aGUgc2lsbGljb24gaGFzIHRoaXMgY2FjaGUgYnVnLiBUaGUgZGNieiB3aWxsIG5vdAotICAgIGNvcnJ1cHQgdGhlIHN0YWNrIGluIGNhY2hlLgotICAgIFJlYWxseSwgaXQgaXMgdGhlIGZhdWx0IGNvZGUgcnVubmluZyBvbiBmYXVsdCBzaWxsaWNvbi4KLQotICAgIFRoaXMgcGF0Y2ggZml4IHRoZSBpbmNvcnJlY3QgZGNieiBvcGVyYXRpb24uIEluc3RlYWQgb2YKLSAgICBDUFUgRlAgd3JpdGluZyB0byBpbml0aWFsaXNlIHRoZSBFQ0MuCi0KLSAgICBDSEFOR0VMT0c6Ci0gICAgKiBGaXggdGhlIGluY29ycmVjdCBkY2J6IG9wZXJhdGlvbiBpbnN0ZWFkIG9mIENQVSBGUAotICAgIHdyaXRpbmcgdG8gaW5pdGlhbGlzZSB0aGUgRUNDIG1lbW9yeS4gT3RoZXJ3aXNlLCBpdAotICAgIHdpbGwgY29ycnVwdCB0aGUgc3RhY2sgaW4gY2FjaGUsIFRoZSBwcm9jZXNzb3Igd2lsbCBjaGVja3N0b3AKLSAgICByZXNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZjBiNTQyZDY3NzNhNWExY2JjZTc3NjkxZjAwOWIwNmQ5YWViNTdkCi1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTm92IDEgMDA6MTA6NDAgMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogYWRkIE9GX0ZMQVRfVFJFRSBiaXRzIHRvIDgzeHggYm9hcmRzCi0KLSAgICBhZGQgZnRfcGNpX3NldHVwLCBPRl9DUFUsIE9GX1NPQywgT0ZfVEJDTEssIGFuZAotICAgIFNURE9VVF9QQVRIIGNvbmZpZ3VyYXRpb24gYml0cyB0byBtcGM4MzQ5ZW1kcywKLSAgICBtcGM4MzQ5aXR4LCBhbmQgbXBjODM2MGVtZHMgYm9hcmQgY29kZS4KLQotICAgIHJlZG8gZW52aXJvbm1lbnQgdG8gdXNlIGJvb3RtIHdpdGggdGhlIGZkdGFkZHIKLSAgICBmb3IgYm9vdGluZyBBUkNIPXBvd2VycGMga2VybmVscyBieSBkZWZhdWx0LAotICAgIGFuZCBwcm92aWRlIGRlZmF1bHQgZmR0YWRkciB2YWx1ZXMuCi0KLWNvbW1pdCA0ODA0MTM2NWIzNDIwNTg5YWQ0NjRlYmM3NzUyZTAwNTM1MzhiNzI5Ci1BdXRob3I6IEtpbSBQaGlsbGlwcyA8a2ltLnBoaWxsaXBzQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTm92IDEgMDA6MDc6MjUgMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogY2hhbmdlIGZ0IGNvZGUgdG8gbW9kaWZ5IGxvY2FsLW1hYy1hZGRyZXNzIHByb3BlcnR5Ci0KLSAgICBVcGRhdGUgODN4eCBPRiBjb2RlIHRvIHVwZGF0ZSBsb2NhbC1tYWMtYWRkcmVzcyBwcm9wZXJ0aWVzCi0gICAgZm9yIGV0aGVybmV0IGluc3RlYWQgb2YgdGhlIG9ic29sZXRlICdhZGRyZXNzJyBwcm9wZXJ0eS4KLQotY29tbWl0IDljYTg4MGEyNTA4NzBhN2Q1NTc1NDI5MWI1NTkxZDJiNWZlODliNTQKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMzEgMjE6MjM6MTYgMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogRml4IGR1YWwgSTJDIHN1cHBvcnQgZm9yIHRoZSBNUEM4MzQ5SVRYLCBNUEM4MzQ5RU1EUywgVFFNODM0eCwgYW5kIE1QQzgzNjBFTURTCi0KLSAgICBUaGlzIHBhdGNoIGFsc28gYWRkcyBhbiBpbXByb3ZlZCBJMkMgc2V0X3NwZWVkKCksIHdoaWNoIGhhbmRsZXMgYWxsIGNsb2NrCi0gICAgZnJlcXVlbmNpZXMuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWM0YjU2MjJjZTA1MGI1ZWUxZTE1NGI5OGRmNjMwZDc3ODY2MTYzMgotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAzMSAxOTo1NDo1OSAyMDA2IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBhZGQgdGhlIFJFQURNRS5tcGM4MzYwZW1kcwotCi0gICAgYWRkIGRvYy9SRUFETUUubXBjODM2MGVtZHMgdG8gYWNjb21wYW55IHRoZSBuZXcgYm9hcmQgc3VwcG9ydAotCi1jb21taXQgNzczN2Q1YzY1OGM2MDZmOTk5ZGZiZTNlODZiMGZlZDQ5ZTVjNTBlZgotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE5vdiAzIDEyOjExOjE1IDIwMDYgLTA2MDAKLQotICAgIG1wYzgzeHg6IGFkZCBRRSBldGhlcm5ldCBzdXBwb3J0Ci0KLSAgICB0aGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIFFVSUNDIEVuZ2luZSBiYXNlZCBVQ0MgZ2lnYWJpdCBldGhlcm5ldCBkZXZpY2UuCi0KLWNvbW1pdCA1ZjgyMDQzOTRlMzliYmU4Y2Q5ZjA4YjhmOGQxNDViNmMwMWY3YzczCi1BdXRob3I6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgTm92IDMgMTk6MzM6NDQgMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogQWRkIE1QQzgzNjBFTURTIGJhc2ljIGJvYXJkIHN1cHBvcnQKLQotICAgIEFkZCBzdXBwb3J0IGZvciB0aGUgRnJlZXNjYWxlIE1QQzgzNjBFTURTIGJvYXJkLgotICAgIEluY2x1ZGVzIEREUiwgRFVBUlQsIExvY2FsIEJ1cywgUENJLgotCi1jb21taXQgMjM4OTJlNDkzNTJkZTc0ZjdmYWMzNmZmOTBiYjFiZTE0M2QxOTVlMwotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAzMSAxOTozMDo0MCAyMDA2IC0wNjAwCi0KLSAgICBtcGM4M3h4OiBhZGQgdGhlIFFVSUNDIEVuZ2luZSAoUUUpIGltbWFwIGZpbGUKLQotICAgIGNvbW1vbiBRRSBpbW1hcCBmaWxlLiAgQWxzbyByZXF1aXJlZCBmb3IgODM2MC4KLQotY29tbWl0IGI3MDE2NTJhNDk5MmJkY2M2MmZiMWE2MDM4YTg1YmVlZjllNTVkYTQKLUF1dGhvcjogRGF2ZSBMaXUgPGRhdmVsaXVAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMzEgMTk6MjU6MzggMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogQWRkIDgzNjAgc3BlY2lmaWNzIHRvIDgzeHggaW1tYXAKLQotICAgIE1haW5seSBhZGQgUUUgZGV2aWNlIGRlcGVuZGVuY2llcywgd2l0aCBhcHByb3ByaWF0ZSA4MzYwIHByb3RlY3Rpb24uCi0gICAgTGluZGVudCBhbHNvIHJ1bi4KLQotY29tbWl0IDk4ODgzMzMyNGE3ZmRhNDgyYzhhYzNjYTIzZWI1MzlmODIzMmU0MDQKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMzEgMTk6MTQ6NDEgMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogRml4IFBDSSwgVVNCLCBib290YXJncyBmb3IgTVBDODM0OUUtbUlUWAotCi0gICAgUFJFUkVRVUlTSVRFIFBBVENIRVM6Ci0KLSAgICAqIFRoaXMgcGF0Y2ggY2FuIG9ubHkgYmUgYXBwbGllZCBhZnRlciB0aGUgZm9sbG93aW5nIHBhdGNoZXMgaGF2ZSBiZWVuIGFwcGxpZWQ6Ci0KLSAgICAgIDEpIEROWCMyMDA2MDkyMTQyMDAwMDE1ICJBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzgzNDlFLW1JVFggIDEvMiIKLSAgICAgIDIpIEROWCMyMDA2MDkyMTQyMDAwMDI0ICJBZGQgc3VwcG9ydCBmb3IgdGhlIE1QQzgzNDlFLW1JVFggIDIvMiIKLQotICAgIENIQU5HRUxPRzoKLQotICAgICogRm9yIHRoZSA4MzQ5RS1tSVRYLCBmaXggc29tZSBzaXplIHZhbHVlcyBpbiBwY2lfaW5pdF9ib2FyZCgpLCBlbmFibGUKLSAgICAgIHRoZSBjbG9jayBmb3IgdGhlIDJuZCBVU0IgYm9hcmQgKExpbnV4IGtlcm5lbCB3aWxsIGhhbmcgb3RoZXJ3aXNlKSwKLSAgICAgIGFuZCBmaXggdGhlIENPTkZJR19CT09UQVJHUyBtYWNyby4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyYWQ2YjUxM2IzMTA3MGJkMGMwMDM3OTJlZDFjM2U3ZjVkNzQwMzU3Ci1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDMxIDE4OjQ0OjQyIDIwMDYgLTA2MDAKLQotICAgIG1wYzgzeHg6IEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODM0OUUtbUlUWAotCi0gICAgUFJFUkVRVUlTSVRFIFBBVENIRVM6Ci0KLSAgICAqIFRoaXMgcGF0Y2ggY2FuIG9ubHkgYmUgYXBwbGllZCBhZnRlciB0aGUgZm9sbG93aW5nIHBhdGNoZXMgaGF2ZSBiZWVuIGFwcGxpZWQ6Ci0KLSAgICAgIDEpIEROWCMyMDA2MDkwNzQyMDAwMDI0ICJBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgSTJDIGJ1c2VzIgotICAgICAgMikgRE5YIzIwMDYwOTA3NDIwMDAwMzMgIk11bHRpLWJ1cyBJMkMgaW1wbGVtZW50YXRpb24gb2YgTVBDODM0eCIKLSAgICAgIDMpIEROWCMyMDA2MDkxMjQyMDAwMDQxICJBZGRpdGlvbmFsIE1QQzgzNDkgc3VwcG9ydCBmb3IgbXVsdGlidXMgaTJjIgotICAgICAgNCkgRE5YIzIwMDYwOTEyNDIwMDAwNzggIkFkZCBzdXBwb3J0IGZvciB2YXJpYWJsZSBmbGFzaCBtZW1vcnkgc2l6ZXMgb24gODN4eCBzeXN0ZW1zIgotICAgICAgNSkgRE5YIzIwMDYwOTEyNDIwMDAwNjkgIkFkZCBzdXBwb3J0IGZvciBFcnJhdGEgRERSNiBvbiBNUEMgODM0eCBzeXN0ZW1zIgotCi0gICAgQ0hBTkdFTE9HOgotCi0gICAgKiBBZGQgc3VwcG9ydCBmb3IgdGhlIEZyZWVzY2FsZSBNUEM4MzQ5RS1tSVRYIHJlZmVyZW5jZSBkZXNpZ24gcGxhdGZvcm0uCi0gICAgICBUaGUgc2Vjb25kIFRTRUMgKFZpdGVzc2UgNzM4NSBzd2l0Y2gpIGlzIG5vdCBzdXBwb3J0ZWQgYXQgdGhpcyB0aW1lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDE4M2RhNmQ5YjQ0NmNjMTIxMjM0NTU4NDRhZDExODdlMjM3NTYyNmYKLUF1dGhvcjogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci1EYXRlOglUdWUgU2VwIDEyIDEwOjE1OjUzIDIwMDYgLTA0MDAKLQotICAgIEFkZGl0aW9uYWwgTVBDODM0OSBzdXBwb3J0IGZvciBtdWx0aWJ1cyBpMmMKLQotICAgIEhlbGxvLAotCi0gICAgSGVyZSBpcyBhIHBhdGNoIGZvciBhIGZpbGUgdGhhdCB3YXMgYWNjaWRlbnRhbGx5IGxlZnQgb3V0IG9mIGEgcHJldmlvdXMKLSAgICBhdHRlbXB0LgotCi0gICAgSXQgYWNjb21wYW5pZXMgdGhlIHBhdGNoIHdpdGggdGlja2V0IEROWCMyMDA2MDkwNzQyMDAwMDI0Ci0KLSAgICBDSEFOR0VMT0c6Ci0JICAgIENoYW5nZSBQQ0kgaW5pdGlhbGl6YXRpb24gdG8gdXNlIG5ldyBtdWx0aS1idXMgSTJDIEFQSS4KLQotICAgIHJlZ2FyZHMsCi0gICAgQmVuCi0KLWNvbW1pdCBiMjRmMTE5ZDY3MmI3MDlkMTUzZmYyYWMwOTFkNGFhNjNlYzY4NzdkCi1BdXRob3I6IEJlbiBXYXJyZW4gPGJ3YXJyZW5AcXN0cmVhbXMuY29tPgotRGF0ZToJVGh1IFNlcCA3IDE2OjUxOjA0IDIwMDYgLTA0MDAKLQotICAgIE11bHRpLWJ1cyBJMkMgaW1wbGVtZW50YXRpb24gb2YgTVBDODM0eAotCi0gICAgSGVsbG8sCi0KLSAgICBBdHRhY2hlZCBpcyBhIHBhdGNoIGltcGxlbWVudGluZyBtdWx0aXBsZSBJMkMgYnVzZXMgb24gdGhlIE1QQzgzNHggQ1BVCi0gICAgZmFtaWx5IGFuZCB0aGUgTVBDODM0OUVNRFMgYm9hcmQgaW4gcGFydGljdWxhci4KLSAgICBUaGlzIHBhdGNoIHJlcXVpcmVzIFBhdGNoIDEgKEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBJMkMgYnVzZXMpLgotICAgIFRlc3Rpbmcgd2FzIHBlcmZvcm1lZCBvbiBhIDUzM01IeiBib2FyZC4KLQotICAgIC8qKiogTm90ZTogVGhpcyBwYXRjaCByZXBsYWNlcyB0aWNrZXQgRE5YIzIwMDYwODMwNDIwMDAwMjcgKioqLwotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci0KLSAgICBDSEFOR0VMT0c6Ci0JICAgIEltcGxlbWVudGVkIGRyaXZlci1sZXZlbCBjb2RlIHRvIHN1cHBvcnQgdHdvIEkyQyBidXNlcyBvbiB0aGUKLSAgICBNUEM4MzR4IENQVSBmYW1pbHkgYW5kIHRoZSBNUEM4MzQ5RU1EUyBib2FyZC4gIEF2YWlsYWJsZSBJMkMgYnVzIHNwZWVkcwotICAgIGFyZSA1MGtIeiwgMTAwa0h6IGFuZCA0MDBrSHogb24gZWFjaCBidXMuCi0KLSAgICByZWdhcmRzLAotICAgIEJlbgotCi1jb21taXQgYmI5OWFkNmQ4MjU3YmY4MjhmMTUwZDQwZjUwN2IzMGQ4MGE0YTdhZQotQXV0aG9yOiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLURhdGU6CVRodSBTZXAgNyAxNjo1MDo1NCAyMDA2IC0wNDAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgSTJDIGJ1c2VzCi0KLSAgICBIZWxsbywKLQotICAgIEF0dGFjaGVkIGlzIGEgcGF0Y2ggcHJvdmlkaW5nIHN1cHBvcnQgZm9yIG11bHRpcGxlIEkyQyBidXNlcyBhdCB0aGUKLSAgICBjb21tYW5kIGxldmVsLiAgVGhlIHNlY29uZCBwYXJ0IG9mIHRoZSBwYXRjaCBpbmNsdWRlcyBhbiBpbXBsZW1lbnRhdGlvbgotICAgIGZvciB0aGUgTVBDODM0eCBDUFUgYW5kIE1QQzgzNDlFTURTIGJvYXJkLgotCi0gICAgLyoqKiBOb3RlOiBUaGlzIHBhdGNoIHJlcGxhY2VzIHRpY2tldCBETlgjMjAwNjA4MzA0MjAwMDAxOCAqKiovCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLQotICAgIE92ZXJ2aWV3OgotCi0gICAgMS4gSW5jbHVkZSBuZXcgJ2kyYycgY29tbWFuZCAoYmFzZWQgb24gVVNCIGltcGxlbWVudGF0aW9uKSB1c2luZwotICAgIENPTkZJR19JMkNfQ01EX1RSRUUuCi0KLSAgICAyLiBBbGxvdyBtdWx0aXBsZSBidXNlcyBieSBkZWZpbmluZyBDT05GSUdfSTJDX01VTFRJX0JVUy4gIE5vdGUgdGhhdAotICAgIHRoZSBjb21tYW5kcyB0byBjaGFuZ2UgYnVzIG51bWJlciBhbmQgc3BlZWQgYXJlIG9ubHkgYXZhaWxhYmxlIHVuZGVyIHRoZQotICAgIG5ldyAnaTJjJyBjb21tYW5kIG1lbnRpb25lZCBpbiB0aGUgZmlyc3QgYnVsbGV0LgotCi0gICAgMy4gVGhlIG9wdGlvbiBDRkdfSTJDX05PUFJPQkVTIGhhcyBiZWVuIGV4cGFuZGVkIHRvIHdvcmsgaW4gbXVsdGktYnVzCi0gICAgc3lzdGVtcy4gIFdoZW4gQ09ORklHX0kyQ19NVUxUSV9CVVMgaXMgdXNlZCwgdGhpcyBvcHRpb24gdGFrZXMgdGhlIGZvcm0KLSAgICBvZiBhbiBhcnJheSBvZiBidXMtZGV2aWNlIHBhaXJzLiAgT3RoZXJ3aXNlLCBpdCBpcyBhbiBhcnJheSBvZiB1Y2hhci4KLQotICAgIENIQU5HRUxPRzoKLQkgICAgQWRkZWQgbmV3ICdpMmMnIG1hc3RlciBjb21tYW5kIGZvciBhbGwgSTJDIGludGVyYWN0aW9uLiAgVGhpcyBpcwotICAgIGNvbmRpdGlvbmFsbHkgY29tcGlsZWQgd2l0aCBDT05GSUdfSTJDX0NNRF9UUkVFLiAgTmV3IGNvbW1hbmRzIGFkZGVkIGZvcgotICAgIHNldHRpbmcgSTJDIGJ1cyBzcGVlZCBhcyB3ZWxsIGFzIGNoYW5naW5nIHRoZSBhY3RpdmUgYnVzIGlmIHRoZSBib2FyZAotICAgIGhhcyBtb3JlIHRoYW4gb25lIChjb25kaXRpb25hbGx5IGNvbXBpbGVkIHdpdGgKLSAgICBDT05GSUdfSTJDX01VTFRJX0JVUykuICBVcGRhdGVkIE5PUFJPQkUgbG9naWMgdG8gaGFuZGxlIG11bHRpcGxlIGJ1c2VzLgotICAgIFVwZGF0ZWQgUkVBRE1FLgotCi0gICAgcmVnYXJkcywKLSAgICBCZW4KLQotY29tbWl0IGJlZDg1Y2FmODcyNzE0ZWJmNTMwMTM5NjdhNjk1YzlkNjNhY2ZjNjgKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMzEgMTg6MTM6MzYgMjAwNiAtMDYwMAotCi0gICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIEVycmF0YSBERFI2IG9uIE1QQyA4MzR4IHN5c3RlbXMKLQotICAgIENIQU5HRUxPRzoKLQotICAgICogRXJyYXRhIEREUjYsIHdoaWNoIGFmZmVjdHMgYWxsIGN1cnJlbnQgTVBDIDgzNHggcHJvY2Vzc29ycywgbGlzdHMgY2hhbmdlcwotICAgICAgcmVxdWlyZWQgdG8gbWFpbnRhaW4gY29tcGF0aWJpbGl0eSB3aXRoIHZhcmlvdXMgdHlwZXMgb2YgRERSIG1lbW9yeS4gIFRoaXMKLSAgICAgIHBhdGNoIGltcGxlbWVudHMgdGhvc2UgY2hhbmdlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhZmQ2ZTQ3MGY2Mzk4ODMwMDJjN2M1OWQ1NjI2OTBhNWNiMGY0ODY1Ci1BdXRob3I6IFRpbXVyIFRhYmkgPHRpbXVyQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgT2N0IDI1IDE4OjQ1OjIzIDIwMDYgLTA1MDAKLQotICAgIG1wYzgzeHg6IGZpeCBUUU0gYnVpbGQgYnkgZGVmaW5pbmcgYSBDRkdfRkxBU0hfU0laRSBmb3IgaXQKLQotY29tbWl0IDMxMDY4YjdjNGFiZWVmY2IyYzhmZDRmYmVjY2M4ZWM2YzZkMDQ3NWEKLUF1dGhvcjogVGltdXIgVGFiaSA8dGltdXJAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjIgMTc6MDc6MDAgMjAwNiAtMDUwMAotCi0gICAgbXBjODN4eDogQWRkIHN1cHBvcnQgZm9yIHZhcmlhYmxlIGZsYXNoIG1lbW9yeSBzaXplcyBvbiA4M3h4IHN5c3RlbXMKLQotICAgIENIQU5HRUxPRzoKLQotICAgICogT24gODN4eCBzeXN0ZW1zLCB1c2UgdGhlIENGR19GTEFTSF9TSVpFIG1hY3JvIHRvIHByb2dyYW0gdGhlIExCQyBsb2NhbCBhY2Nlc3MKLSAgICAgICB3aW5kb3cgcmVnaXN0ZXJzLCBpbnN0ZWFkIG9mIHVzaW5nIGEgaGFyZC1jb2RlZCB2YWx1ZSBvZiA4TUIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUaW11ciBUYWJpIDx0aW11ckBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMmZjMzRhZTY2ZTczZmE3ODQxZDFhMDA2ZGMxYjVkY2JjMWY3ODk2NQotQXV0aG9yOiBUYW55YSBKaWFuZyA8dGFueWEuamlhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBdWcgMyAxODozODoxMyAyMDA2ICswODAwCi0KLSAgICBtcGM4M3h4OiBVbmlmaWVkIFRRTTgzNHggdmFyaWFibGUgbmFtZXMgd2l0aCA4M3h4IGFuZCBjb25zb2xpZGF0ZWQgbWFjcm9zCi0KLSAgICBVbmlmaWVkIFRRTTgzNHggdmFyaWFibGUgbmFtZXMgd2l0aCA4M3h4IGFuZCBjb25zb2xpZGF0ZWQgbWFjcm8KLSAgICBpbiBwcmVwYXJhdGlvbiBmb3IgdGhlIDgzNjAgYW5kIG90aGVyIHVwY29taW5nIDgzeHggZGV2aWNlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZjZlZGE3ZjgwY2NjMTNkNjU4MDIwMjY4YzUwN2Q3MTczY2YyZThhYQotQXV0aG9yOiBEYXZlIExpdSA8ZGF2ZWxpdUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIE9jdCAyNSAxNDo0MToyMSAyMDA2IC0wNTAwCi0KLSAgICBtcGM4M3h4OiBDaGFuZ2VkIHRvIHVuaWZpZWQgbXB4ODN4eCBuYW1lcyBhbmQgYWRkZWQgY29tbW9uIDgzeHggY2hhbmdlcwotCi0gICAgSW5jb3Jwb3JhdGVkIHRoZSBjb21tb24gdW5pZmllZCB2YXJpYWJsZSBuYW1lcyBhbmQgdGhlIGNoYW5nZXMgaW4gcHJlcGFyYXRpb24KLSAgICBmb3IgcmVsZWFzaW5nIG1wYzgzNjAgcGF0Y2hlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IERhdmUgTGl1IDxkYXZlbGl1QGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzODk0YzQ2YzI3YzY0ODkxZjkzYWMwNGVkZGU4NmE5ZmE5NzU4ZDkyCi1BdXRob3I6IFRhbnlhIEppYW5nIDx0YW55YS5qaWFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAzIDE4OjM2OjAyIDIwMDYgKzA4MDAKLQotICAgIG1wYzgzeHg6IEZpeCBtaXNzaW5nIGJ1aWxkIGZvciBtcGM4MzQ5ZW1kcyBwY2kuYwotCi0gICAgTWFrZSBwY2kgYnVpbGQgZm9yIG1wYzgzNDllbWRzCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBUYW55YSBKaWFuZyA8dGFueWEuamlhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDA5YTgxZmY3NDBiMjlkZWVhMWUyYWIwOGEzYzJhYzEzNmMyZTYyMTkKLUF1dGhvcjogVGFueWEgSmlhbmcgPHRhbnlhLmppYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgQXVnIDMgMTg6Mzk6NDkgMjAwNiArMDgwMAotCi0gICAgbXBjODN4eDogUmVtb3ZlZCB1bnVzZWQgZmlsZSByZXNldHZlYy5TIGZvciBtcGM4M3h4IGNwdQotCi0gICAgUmVtb3ZlZCB1bnVzZWQgZmlsZSByZXNldHZlYy5TIGZvciBtcGM4M3h4IGNwdQotCi0gICAgU2lnbmVkLW9mZi1ieTogVGFueWEgSmlhbmcgPHRhbnlhLmppYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAwNGY4OTlmYzQ2NWMzZTQ0ZjJiNTVlY2M3MDYxOGY1Njk2ZmMwZGRmCi1BdXRob3I6IE5pY2sgU3BlbmNlIDxOaWNrLlNwZW5jZUBmcmVlc2NhbGUuY29tPgotRGF0ZToJU2F0IFNlcCAzMCAwMDozMjo1OSAyMDA2IC0wNzAwCi0KLSAgICBOQU5EIEZsYXNoIHZlcmlmeSBhY3Jvc3MgYmxvY2sgYm91bmRhcmllcwotCi0gICAgVGhpcyBwYXRjaCBhZGRyZXNzZXMgYSBwcm9ibGVtIHdoZW4gQ09ORklHX01URF9OQU5EX1ZFUklGWV9XUklURSBpcwotICAgIGRlZmluZWQKLSAgICBhbmQgdGhlIHdyaXRlIGNyb3NzZXMgYSBibG9jayBib3VuZGFyeS4gVGhlIHBvaW50ZXIgdG8gdGhlIHZlcmlmaWNhdGlvbgotICAgIGJ1ZmZlciAoYnVmc3RhcnQpIGlzIG5vdCBiZWluZyB1cGRhdGVkIHRvIHJlZmxlY3QgdGhlIHN0YXJ0aW5nIG9mIHRoZQotICAgIG5ldwotICAgIGJsb2NrIHNvIHRoZSB2ZXJpZmljYXRpb24gb2YgdGhlIHNlY29uZCBibG9jayBmYWlscy4KLQotICAgIENIQU5HRUxPRzoKLQotICAgICogRml4IE5BTkQgRkxBU0ggcGFnZSB2ZXJpZmljYXRpb24gYWNyb3NzIGJsb2NrIGJvdW5kYXJpZXMKLQotY29tbWl0IGY0ODRkYzc5MWEzOTMyNTM3MjEzYzQzYzY1NGNjMTI5NWM2NGI4NGMKLUF1dGhvcjogTmljayBTcGVuY2UgPG5pY2suc3BlbmNlQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgU2VwIDcgMDc6Mzk6NDYgMjAwNiAtMDcwMAotCi0gICAgQWRkZWQgUkdNSUkgc3VwcG9ydCB0byB0aGUgVFNFQ3MgYW5kIE1hcnZlbGwgODgxMTExIFBoeQotCi0gICAgQWRkZWQgYSBwaHkgaW5pdGlhbGl6YXRpb24gdG8gYWRqdXN0IHRoZSBSR01JSSBSWCBhbmQgVFggdGltaW5nCi0gICAgQWx3YXlzIHNldCB0aGUgUjEwMCBiaXQgaW4gMTAwIEJhc2VUIG1vZGUgcmVnYXJkbGVzcyBvZiB0aGUgVFNFQyBtb2RlCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBOaWNrIFNwZW5jZSA8bmljay5zcGVuY2VAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQ4MzFjOGI4YTk3Nzk5ZGE3NzkyM2Q2YmJiNGMyNjBjMGQ0NTUyMWMKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE5vdiAzIDEzOjEwOjAwIDIwMDYgKzA4MDAKLQotICAgIFJlbW92ZSBzb21lIHVudXNlZCBDRkcgZGVmaW5lLgotICAgIHVuZGVmIENGR19EUkFNX1RFU1QKLQotY29tbWl0IDk5YzA5YzRkZWMzNGY3N2MyNDNiZjUxYmVhNTMyZTNmMzM5NDEwYWQKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE5vdiAzIDEzOjA3OjM2IDIwMDYgKzA4MDAKLQotICAgIENoYW5nZSB0aGUgVEVYVF9CQVNFIGZyb20gMHhGRkYwMDAwMCB0byAweEZGMDAwMDAwLgotICAgIEJvdGggd29yay4gMHhGRjAwMDAwMCBzZWVtcyBtb3JlIHJlYXNvbmFibGUuCi0KLWNvbW1pdCBjNTkyMDA0NDMwNzIzNTMwNDRhYTRiZjczN2E1YTYwZjlhOWFmMjMxCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVGh1IE5vdiAyIDE1OjE1OjAxIDIwMDYgKzAxMDAKLQotICAgIFJlbGVhc2UgVS1Cb290IDEuMS42Ci0KLWNvbW1pdCBjMWZiZTQxMDNhMGQ2Yzg5NTdmOTEyYWY5MDJkNzA1YmE2NzgzNmYyCi1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgMiAxOToxNDo0OCAyMDA2ICswODAwCi0KLSAgICBUaGlzIHBhdGNoIGNvbWVzIGZyb20gWXVsaSdzIHBvc3RlZCBwYXRjaCBvbiA4LzgvMjAwNgotICAgIHRpdGxlZCAiQ0ZJIERyaXZlciBMaXR0bGUtRW5kaWFuIHdyaXRlIElzc3VlIi4KLQotICAgIGh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvbWFpbGFyY2hpdmUvbWVzc2FnZS5waHA/bXNnX2lkPTM2MzExOTk5Ci0KLSAgICBJZiB0aGF0IHBhdGNoIGFwcGxpZWQsIHBsZWFzZSBkaXNjYXJkIHRoaXMgb25lLgotICAgIFVudGlsIG5vdyAsIEkgZG8gbm90IHNlZSBoaXMgcGF0Y2ggaXMgYXBwbGllZC4gU28gcGxlYXNlIGFwcGx5IHRoaXMgb25lLgotCi0gICAgU2lnbmVkLW9mZi1ieTogWXVsaSBCYXJjb2hlbiA8eXVsaUBhcmFiZWxsYXN3LmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiODI1ZjE1OGU0NDllMWU5Y2Y3NGMwOGU1NzI5NTVlMTIyMzk0Yzk2Ci1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgMiAxOToxMjozMSAyMDA2ICswODAwCi0KLSAgICBUc2kxMDggb24gY2hpcCBpMmMgc3VwcG9ydC4KLQotICAgIFRoZSBpMmMgIEludGVyZmFjZSBwcm92aWRlcyBhIG1hc3Rlci1vbmx5LCBzZXJpYWwgaW50ZXJmYWNlIHRoYXQgY2FuIGJlCi0gICAgdXNlZCBmb3IgaW5pdGlhbGl6aW5nIFRzaTEwOC9Uc2kxMDkgcmVnaXN0ZXJzIGZyb20gYW4gRUVQUk9NIGFmdGVyIGEKLSAgICBkZXZpY2UgcmVzZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDkyMjZlN2Q2ZjA5YjlhMWFjMDc0Y2Q5MThjODEyMjVhNDY4OWJiYTgKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyIDE5OjExOjA2IDIwMDYgKzA4MDAKLQotICAgIFRzaTEwOCBvbiBjaGlwIHBjaSBjb250cm9sbGVyIHN1cHBvcnQuCi0KLSAgICBJZiB0aGVyZSBpcyBubyBwY2kgY2FyZCwgdGhlIHRzaTEwOC8xMDkgcGNpIGNvbmZpZ3VyZSByZWFkIHdpbGwKLSAgICBjYXVzZSBhIG1hY2hpbmUgY2hlY2sgZXhjZXB0aW9uIHRvIHRoZSBwcm9jZXNzb3IuIFBDSSBlcnJvciBzaG91bGQKLSAgICBhbHNvIGJlIGNsZWFyZWQgYWZ0ZXIgdGhlIHJlYWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQxOTI3Y2VlOTc3MTI2ZTU0N2NlZWJhMjNlNGY5NzhmMzc3Y2ZiOGYKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyIDE5OjA4OjU1IDIwMDYgKzA4MDAKLQotICAgIFR1bmRyYSB0c2kxMDggb24gY2hpcCBFdGhlcm5ldCBjb250cm9sbGVyIHN1cHBvcnQuCi0KLSAgICBUaGUgZm9sbG93aW5nIGlzIGEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIEV0aGVybmV0IGNvbnRyb2xsZXI6Ci0gICAgVGhlIFRzaTEwOC85IEV0aGVybmV0IENvbnRyb2xsZXIgY29ubmVjdHMgU3dpdGNoIEZhYnJpYyB0byB0d28gaW5kZXBlbmRlbnQKLSAgICBHaWdhYml0IEV0aGVybmV0IHBvcnRzLEUwIGFuZCBFMS4gIEl0IHVzZXMgYSBzaW5nbGUgTWFuYWdlbWVudCBpbnRlcmZhY2UKLSAgICB0byBtYW5hZ2UgdGhlIHR3byBwaHlzaWNhbCBjb25uZWN0aW9uIGRldmljZXMgKFBIWXMpLiAgRWFjaCBFdGhlcm5ldCBwb3J0Ci0gICAgaGFzIGl0cyBvd24gc3RhdGlzdGljcyBtb25pdG9yIHRoYXQgdHJhY2tzIGFuZCByZXBvcnRzIGtleSBpbnRlcmZhY2UKLSAgICBzdGF0aXN0aWNzLiAgRWFjaCBwb3J0IHN1cHBvcnRzIGEgMjU2LWVudHJ5IGhhc2ggdGFibGUgZm9yIGFkZHJlc3MKLSAgICBmaWx0ZXJpbmcuCUluIGFkZGl0aW9uLCBlYWNoIHBvcnQgaXMgYnJpZGdlZCB0byB0aGUgU3dpdGNoIEZhYnJpYwotICAgIHRocm91Z2ggYSAyLUtieXRlIHRyYW5zbWl0IEZJRk8gYW5kIGEgNC1LYnl0ZSBSZWNlaXZlIEZJRk8uCi0KLSAgICBFYWNoIEV0aGVybmV0IHBvcnQgYWxzbyBoYXMgYSBwYWlyIG9mIGludGVybmFsIEV0aGVybmV0IERNQSBjaGFubmVscyB0bwotICAgIHN1cHBvcnQgdGhlIHRyYW5zbWl0IGFuZCByZWNlaXZlIGRhdGEgZmxvd3MuICBUaGUgRXRoZXJuZXQgRE1BIGNoYW5uZWxzCi0gICAgdXNlIGRlc2NyaXB0b3JzIHNldCB1cCBpbiBtZW1vcnksIHRoZSBtZW1vcnkgbWFwIG9mIHRoZSBkZXZpY2UsIGFuZAotICAgIGFjY2VzcyB2aWEgdGhlIFN3aXRjaCBGYWJyaWMuICBUaGUgRXRoZXJuZXQgQ29udHJvbGxlcj9zIERNQSBhcmJpdGVyCi0gICAgaGFuZGxlcyBhcmJpdHJhdGlvbiBmb3IgdGhlIFN3aXRjaCBGYWJyaWMuCVRoZSBDb250cm9sbGVyIGFsc28KLSAgICBoYXMgYSByZWdpc3RlciBidXNpbnRlcmZhY2UgZm9yIHJlZ2lzdGVyIGFjY2Vzc2VzIGFuZCBzdGF0dXMgbW9uaXRvcgotICAgIGNvbnRyb2wuCi0KLSAgICBUaGUgUE1EIChQaHlzaWNhbCBNZWRpYSBEZXZpY2UpIGludGVyZmFjZSBvcGVyYXRlcyBpbiBNSUksIEdNSUksIG9yIFRCSQotICAgIG1vZGVzLiAgVGhlIE1JSSBtb2RlIGlzIHVzZWQgZm9yIGNvbm5lY3Rpbmcgd2l0aCAxMCBvciAxMDAgTWJpdC9zIFBNRHMuCi0gICAgVGhlIEdNSUkgYW5kIFRCSSBtb2RlcyBhcmUgdXNlZCB0byBjb25uZWN0IHdpdGggR2lnYWJpdCBQTURzLiAgSW50ZXJuYWwKLSAgICBkYXRhIGZsb3dzIHRvIGFuZCBmcm9tIHRoZSBFdGhlcm5ldCBDb250cm9sbGVyIHRocm91Z2ggdGhlIFN3aXRjaCBGYWJyaWMuCi0KLSAgICBFYWNoIEV0aGVybmV0IHBvcnQgdXNlcyBpdHMgdHJhbnNtaXQgYW5kIHJlY2VpdmUgRE1BIGNoYW5uZWxzIHRvIG1hbmFnZQotICAgIGRhdGEgZmxvd3MgdGhyb3VnaCBidWZmZXIgZGVzY3JpcHRvcnMgdGhhdCBhcmUgcHJlZGVmaW5lZCBieSB0aGUKLSAgICBzeXN0ZW0gKHRoZSBkZXNjcmlwdG9ycyBjYW4gZXhpc3QgYW55d2hlcmUgaW4gdGhlIHN5c3RlbSBtZW1vcnkgbWFwKS4KLSAgICBUaGVzZSBkZXNjcmlwdG9ycyBhcmUgZGF0YSBzdHJ1Y3R1cmVzIHRoYXQgcG9pbnQgdG8gYnVmZmVycyBmaWxsZWQKLSAgICB3aXRoIGRhdGEgcmVhZHkgdG8gdHJhbnNtaXQgb3ZlciBFdGhlcm5ldCwgb3IgdGhleSBwb2ludCB0byBlbXB0eQotICAgIGJ1ZmZlcnMgcmVhZHkgdG8gcmVjZWl2ZSBkYXRhIGZyb20gRXRoZXJuZXQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDc4YWEwYzM0MjdmM2VjZGViMzRhYWJmYmJlMmRkMjNiNmFkOGY0MGUKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyIDE5OjAxOjMzIDIwMDYgKzA4MDAKLQotICAgIFR1bmRyYSB0c2kxMDggaGVhZGVyIGZpbGUuCi0KLSAgICBUaGUgVHVuZHJhIFNlbWljb25kdWN0b3IgQ29ycG9yYXRpb24gKFR1bmRyYSkgVHNpMTA4IGlzIGEgaG9zdCBicmlkZ2UgZm9yCi0gICAgUG93ZXJQQyBwcm9jZXNzb3JzIHRoYXQgb2ZmZXJzIG51bWVyb3VzIHN5c3RlbSBpbnRlcmNvbm5lY3Qgb3B0aW9ucyBmb3IKLSAgICBlbWJlZGRlZCBhcHBsaWNhdGlvbiBkZXNpZ25lcnMuIFRoZSBUc2kxMDggY2FuIGludGVyY29ubmVjdCA2MHggb3IKLSAgICBNUFggcHJvY2Vzc29ycyB0byBQQ0kvWCBwZXJpcGhlcmFscywgRERSMi00MDAgbWVtb3J5LCBHaWdhYml0IEV0aGVybmV0LAotICAgIGFuZCBGbGFzaC4gUHJvdmlkZWQgdGhlIG1hY3JvIGRlZmluZSBmb3IgdHNpMTA4IGNoaXAuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg3YzRkYjA5Njk5YzZiODkxNzZiMzEwMDRhZmNiODNlYjE1ODVkNDcKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyIDE4OjU5OjE1IDIwMDYgKzA4MDAKLQotICAgIEFkZCAgbXBjNzQ0OGhwYzIgIChtcGM3NDQ4ICsgdHNpMTA4KSAgYm9hcmQgYXNzb2NpYXRlZCBjb2RlIHN1cHBvcnQuCi0gICAgbXBjNzQ0OGhwYzIgYm9hcmQgc3VwcG9ydCBoaWdoIGxldmVsIGNvZGU6dHNpMTA4IGluaXQgKyBtcGM3NDQ4aHBjMi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRyZSBCb3VuaW5lIDxhbGV4YW5kcmViQHR1bmRyYS5jb20+Ci0gICAgU2lnbmVkLW9mZi1ieTogUm95IFphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjc4MDFiOGFiMTFjNjFiNTc3ZTQ1NzQyYTUxNWJiM2IyM2I4MDI0MQotQXV0aG9yOiByb3kgemFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgTm92IDIgMTg6NTc6MjEgMjAwNiArMDgwMAotCi0gICAgQWRkICBtcGM3NDQ4aHBjMiAgKG1wYzc0NDggKyB0c2kxMDgpICBib2FyZCBhc3NvY2lhdGVkIGNvZGUgc3VwcG9ydC4KLSAgICBNYWtlICxjb25maWcubWsgYW5kIGxpbmsgZmlsZSBmb3IgdGhlIG1wYzc0NDhocGMyIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjNjQxMWMwYzNiYmM3OWY5YmE4YWVmNTgyOTZhNDJkOGY5ZDhhMGE2Ci1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgMiAxODo1NTowNCAyMDA2ICswODAwCi0KLSAgICBBZGQgIG1wYzc0NDhocGMyICAobXBjNzQ0OCArIHRzaTEwOCkgIGJvYXJkIGFzc29jaWF0ZWQgY29kZSBzdXBwb3J0LgotICAgIFRoZSBtcGM3NDQ4aHBjMiBib2FyZCBzdXBwb3J0IGhlYWRlciBmaWxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2MjViYjVkZGI1MGIyNDNmOTMxMjYyY2E4YzQ2OTU2NDA5NDcxOTE3Ci1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgMiAxODo1MjoyMSAyMDA2ICswODAwCi0KLSAgICBBZGQgIG1wYzc0NDhocGMyICAobXBjNzQ0OCArIHRzaTEwOCkgIGJvYXJkIGFzc29jaWF0ZWQgY29kZSBzdXBwb3J0LgotICAgIFRoZSBtcGM3NDQ4aHBjMiBib2FyZCBzdXBwb3J0IGxvdyBsZXZlbCBhc3NlbWJsZSBsYW5ndWFnZSBpbml0IGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kcmUgQm91bmluZSA8YWxleGFuZHJlYkB0dW5kcmEuY29tPgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRjNTI3ODNiM2QwMjRlMTUzYzQ5NzJiOTczMzJlMzE0YmMzYmRjNDYKLUF1dGhvcjogcm95IHphbmcgPHRpZS1mZWkuemFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE5vdiAyIDE4OjQ5OjUxIDIwMDYgKzA4MDAKLQotICAgIEdlbmVyYWwgY29kZSBtb2RpZmljYXRpb24gZm9yIG1wYzc0NDhocGMyIGJvYXJkIHN1cHBvcnQuCi0gICAgMS4gQWRkIDc0NDdBIGFuZCA3NDQ4IHByb2Nlc3NvciBzdXBwb3J0LgotICAgIDIuIEFkZCB0aGUgZm9sbG93aW5nIGZsYWdzLgotCi0gICAgQ0ZHX0NPTkZJR19CVVNfQ0xLIDogSWYgdGhlIDc0eHggYnVzIGZyZXF1ZW5jeSBjYW4gYmUgY29uZmlndXJlZCBkeW5hbWljYWxseQotICAgIChzdWNoIGFzIGJ5IHN3aXRjaCBvbiBib2FyZCksIHRoaXMgZmxhZyBzaG91bGQgYmUgc2V0LgotCi0gICAgQ0ZHX0VYQ0VQVElPTl9BRlRFUl9SRUxPQ0FURTogSWYgYW4gZXhjZXB0aW9uIG9jY3VycyBhZnRlciB0aGUgdS1ib290Ci0gICAgcmVsb2NhdGVzIHRvIFJBTSwgdGhpcyBmbGFnIHNob3VsZCBiZSBzZXQuCi0KLSAgICBDRkdfU0VSSUFMX0hBTkdfSU5fRVhDRVBUSU9OOiBJZiB0aGUgcHJpbnQgb3V0IGZ1bmN0aW9uIHdpbGwgY2F1c2UgdGhlCi0gICAgc3lzdGVtIGhhbmcgaW4gZXhjZXB0aW9uLCB0aGlzIGZsYWcgc2hvdWxkIGJlIHNldC4KLQotICAgIFRoZXJlIGlzIGEgZGVzaWduIGlzc3VlIGZvciB0c2kxMDgvMTA5IHBjaSBjb25maWd1cmUgIHJlYWQuIFdoZW4gcGNpIHNjYW4KLSAgICB0aGUgc2xvdHMsIGlmIHRoZXJlIGlzIG5vIHBjaSBjYXJkLCB0aGUgdHNpMTA4Lzkgd2lsbCBjYXVzZSBhIG1hY2hpbmUKLSAgICBjaGVjayBleGNlcHRpb24gZm9yIG1wYzc0NDggcHJvY2Vzc29yLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQWxleGFuZHJlIEJvdW5pbmUgPGFsZXhhbmRyZWJAdHVuZHJhLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA2OTM2NmJmNDJmMjJkNjdlZmNlOGRhM2Y4YzQwYTQzZDRhM2MyNjk1Ci1BdXRob3I6IHJveSB6YW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBOb3YgMiAxODozNDo0NyAyMDA2ICswODAwCi0KLSAgICBBZGQgUkVBRE1FIGZpbGUgZm9yIG1wYzc0NDhocGMyIGJvYXJkLgotICAgIFNpZ25lZC1vZmYtYnk6IFJveSBaYW5nIDx0aWUtZmVpLnphbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDI1NzIxYjVjZWMyYmU0YmNlNzljZmFkZTE3ZWM4ZjZhYTFlNjc1MjYKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBOb3YgMSAwMjowNDozOCAyMDA2ICswMTAwCi0KLSAgICBGaW5pc2ggdXAgc3VwcG9ydCBmb3IgTWFyZWxWMzhCIGJvYXJkCi0gICAgIC0gYWRkIHdhdGNoZG9nIHN1cHBvcnQKLSAgICAgLSBlbmFibGUgR1BJT19XS1VQXzcgcGluIGZvciBpbnB1dAotICAgICAtIGNvZGUgY2xlYW51cAotCi1jb21taXQgZmZhMTUwYmM5MGM5NDNjYTI2NTE3MGJkMWJlM2YyOTM2NzRkZDVjNwotQXV0aG9yOiBCYXJ0bG9taWVqIFNpZWthIDx0dXJAc2VtaWhhbGYuY29tPgotRGF0ZToJV2VkIE5vdiAxIDAxOjQ1OjQ2IDIwMDYgKzAxMDAKLQotICAgIC0gRml4IGlzc3VlcyByZWxhdGVkIHRvIHRoZSB1c2Ugb2YgRUxESyA0IHdoZW4gY29tcGlsaW5nIGZvciBNYXJlbFYzOEI6Ci0JICAqIHJlbW92ZSB3YXJuaW5ncyB3aGVuIGNvbXBpbGluZyBldGhhZGRyLmMKLQkgICogYWRqdXN0IGxpbmtlciBzY3JpcHQgKGZpeGVzIGEgY3Jhc2ggcmVzdWx0aW5nIGZyb20gaW5jb3JyZWN0Ci0JICBkZWZpbml0aW9uIG9mIF9fdV9ib290X2NtZF9zdGFydCkKLSAgICAtIFNvbWUgTWFyZWxWMzhCIGNvZGUgY2xlYW51cC4KLQotY29tbWl0IGRhZTgwZjNjYWY5NzU0YTZkZDNkZGYzY2Y5MDNkMGM0NmNiZDQzODUKLUF1dGhvcjogQmFydGxvbWllaiBTaWVrYSA8dHVyQHNlbWloYWxmLmNvbT4KLURhdGU6CVdlZCBOb3YgMSAwMTozODoxNiAyMDA2ICswMTAwCi0KLSAgICAtIEFkZCBNUEM1WFhYIHJlZ2lzdGVyIGRlZmluaXRpb24gTVBDNVhYWF9XVV9HUElPX0RBVEFfSSBhbmQgY2hhbmdlIHRoZQotICAgICAgTVBDNVhYWF9XVV9HUElPX0RBVEEgbWFjcm8gdG8gTVBDNVhYWF9XVV9HUElPX0RBVEFfTyAocGVyIE1QQzUyMDAgVXNlcidzCi0gICAgICBNYW51YWwpLiBSZXBsYWNlIHRoZSB1c2VzIG9mIE1QQzVYWFhfV1VfR1BJT19EQVRBIHdpdGgKLSAgICAgIE1QQzVYWFhfV1VfR1BJT19EQVRBX08gZm9yIGFmZmVjdGVkIGJvYXJkcy4KLQotICAgIC0gQWRkIGRlZmludGlvbnMgZm9yIHNvbWUgTVBDNVhYWCBHUElPIHBpbnMuCi0KLWNvbW1pdCA4MmQ5YzllYzI5YTFiZWMxYjAzYmE2MTY0MjVlYmFlZDIzMTA3MmM4Ci1BdXRob3I6IEJhcnRsb21pZWogU2lla2EgPHR1ckBzZW1paGFsZi5jb20+Ci1EYXRlOglXZWQgTm92IDEgMDE6MzQ6MjkgMjAwNiArMDEwMAotCi0gICAgQ2hhbmdlZCBNYXJlbFYzOEIgYm9hcmQgbWFrZSB0YXJnZXQgdG8gbG93ZXJjYXNlLiBDb25maWcgZmlsZSBjbGVhbnVwLgotCi1jb21taXQgMTk1NGJlNmU5Yzk0MjFiNDVkMGE5ZDA1YjEwMzU2YWNjNzU2MzE1MAotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVN1biBPY3QgMjkgMDE6MDM6NTEgMjAwNiArMDIwMAotCi0gICAgQXV0b21hdGljYWxseSBhZGp1c3QgQVJGTEFHUyBzbyAibWFrZSAtcyIgaXMgcmVhbGx5IHNpbGVudC4KLQotY29tbWl0IGZhZTY4NGU4OTg0NDg1NjM4M2JkZjEwMTQ0MDg4OTU1N2RmM2U2YjEKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJU2F0IE9jdCAyOCAxNjo0NTowMCAyMDA2ICswMjAwCi0KLSAgICBbUEFUQ0hdIG9tYXA5MjUuYzogUmVtb3ZlIHVudXNlZCBmdW5jdGlvbnMKLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAxMjY1NTgxNTAyYWI4ZWE4YzA4ZThlZGJlOWJmNjRmYmQ2MmZkNzc2Ci1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBPY3QgMjggMTc6MTI6NTggMjAwNiArMDIwMAotCi0gICAgW1BBVENIXSBBZGQgc29tZSBtaXNzaW5nIG1hY2h0eXBlcyBmb3IgbmV0c3RhciAmIHZvaWNlYmx1ZSBib2FyZHMKLQotICAgIFVzZSBNQUNIX1RZUEVfTkVUU1RBUiBhbmQgTUFDSF9UWVBFX1ZPSUNFQkxVRSBkZWZpbmVzIGluc3RlYWQgb2YKLSAgICBudW1iZXJzIGluIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBMYWRpc2xhdiBNaWNobCA8bGFkaXNAbGludXgtbWlwcy5vcmc+Ci0gICAgU2lnbmVkLW9mZi1ieTogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotCi1jb21taXQgODU2ZjA1NDQxMGNlZjUyZDg2OGZlYjMzMDE2OGIyYTRjNDA5MTMyOAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgT2N0IDI4IDE1OjU1OjUyIDIwMDYgKzAyMDAKLQotICAgIFtQQVRDSF0gTkFORDogUGFydGl0aW9uIG5hbWUgc3VwcG9ydCBhZGRlZCB0byBOQU5EIHN1YnN5c3RlbQotCi0gICAgY2hwYXJ0LCBuYm9vdCBhbmQgTkFORCBzdWJzeXN0ZW0gcmVsYXRlZCBjb21tYW5kcyBub3cgYWNjZXB0IGFsc28gcGFydGl0aW9uCi0gICAgbmFtZSB0byBzcGVjaWZ5IG9mZnNldC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IExhZGlzbGF2IE1pY2hsIDxsYWRpc0BsaW51eC1taXBzLm9yZz4KLSAgICBTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci0KLWNvbW1pdCAwN2E2OWExOGMyZWNmZGE5MDQyMzFmZGYyM2UyNTIzZWE3NzkyZWI2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJU2F0IE9jdCAyOCAwMjoyOTo0NCAyMDA2ICswMjAwCi0KLSAgICBVcGRhdGUgQ0hBTkdFTE9HLgotCi1jb21taXQgMjc1MWE5NWFiZDFiOTY5MTEwODFjMzU3ZTk2YTEyZmE5N2I0MGRlZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVNhdCBPY3QgMjggMDI6Mjk6MTQgMjAwNiArMDIwMAotCi0gICAgRW5hYmxlIGNvbW1hbmRsaW5lIGVkaXRpbmcgYW5kIGh1c2ggc2hlbGwgb24gYWxsIFRRTSBib2FyZHMuCi0KLWNvbW1pdCA4MDc4ZjFhNWY2M2E3MzliODUzMzQ3OGY2YzJiNjJmYjFlMmY3OWQ3Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJU2F0IE9jdCAyOCAwMjoyODowMiAyMDA2ICswMjAwCi0KLSAgICBSRUFETUUgc2F5cyBDRkdfQVVUT19DT01QTEVURSwgYnV0IG9jZGUgdXNlcyBDT05GSUdfQVVUT19DT01QTEVURQotCi1jb21taXQgNDcxYTdiZTdhMDQyZTk1ZTQ0MGY1ZGU5NjljOTc2NTIxNGFlOGQ2ZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJU2F0IE9jdCAyOCAwMToxNDozMiAyMDA2ICswMjAwCi0KLSAgICBDaGVjayBmb3IgaWxsZWdhbCBjaGFyYWN0ZXIgJz0nIGluIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzLgotCi0gICAgTWFrZSBzdXJlIHRoZSBzdHJpbmcgcGFzc2VkIGFzIHZhcmlhYmxlIG5hbWUgZG9lcyBub3QgY29udGFpbiBhICc9JwotICAgIGNoYXJhY3Rlci4gVGhpcyBub3Qgb25seSBwcmV2ZW50cyB0aGUgY29tbW9uIGVycm9yIG9yIHR5cGluZwotICAgICJzZXRlbnYgZm9vPWJhciIgaW5zdGVhZCBvZiAic2V0ZW52IGZvbyBiYXIiLCBidXQgKG1vcmUgaW1wb3J0YW50bHkpCi0gICAgYWxzbyBjbG9zZXMgYSBiYWNrZG9vciB3aGljaCBhbGxvd2VkIHRvIGRlbGV0ZSB3cml0ZS1wcm90ZWN0ZWQKLSAgICBlbnZpcm9ubWVudCB2YXJpYWJsZXMsIGZvciBleGFtcGxlIGJ5IHVzaW5nICJzZXRlbnYgZXRoYWRkcj0iLgotCi1jb21taXQgMTk5NzNiNmFkOTg2M2E1NmY1YzVmYmNmZDkwZTIwYWIyNDkwYTJjMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVNhdCBPY3QgMjggMDA6Mzg6MzkgMjAwNiArMDIwMAotCi0gICAgTWlub3IgY29kZSBjbGVhbnVwLgotCi1jb21taXQgZTExODg3YTc3ZDgxMDc3NDE2YTJkMWM1ZTAzNTQ5MTZmZWU4YzAzNAotQXV0aG9yOiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLURhdGU6CVRodSBPY3QgMjYgMTc6NTU6MzEgMjAwNiArMDIwMAotCi0gICAgRG9uJ3QgcGFzcyBhbnkgZGVidWcgb3B0aW9ucyBkaXJlY3RseSB0byB0aGUgYXNzZW1ibGVyCi0KLSAgICBXaGVuIHBhc3NpbmcgdGhlIC1nIG9wdGlvbiB0byBnY2MsIGdjYyBhdXRvbWF0aWNhbGx5IHNlbGVjdHMgYQotICAgIHN1aXRhYmxlIC0tZzxmb3JtYXQ+IG9wdGlvbiB0byBwYXNzIG9uIHRvIHRoZSBhc3NlbWJsZXIuCi0gICAgVGh1cywgdGhlcmUncyBubyBwb2ludCBpbiBmb3JjaW5nIGEgc3BlY2lmaWMgZGVidWcgb3B0aW9uIG9uIHRoZQotICAgIGFzc2VtYmxlciB1c2luZyB0aGUgLVdhIG1lY2hhbmlzbS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotCi1jb21taXQgZWEwOGZmNmUxNGY5ZWJiOGMwN2NmYTc5YzUxZWY1NDBlYjA4NzM5MwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAyNyAwNzo0NzoyMiAyMDA2IC0wNTAwCi0KLSAgICBNUEM4Nnh4OiBDbGVhbmVkIHVwIHVudXNlZCBhbmQgY29uZGl0aW9uYWxseSB1c2VkIGxvY2FsIHZhcmlhYmxlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkMzg5MzZjZGFlNDZiZmQyNjIzZmY4M2Y2Y2U5YjYxNmQzNmFiMGY5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJRnJpIE9jdCAyNyAxMTo1NToyMSAyMDA2ICswMjAwCi0KLSAgICBGaXggImFyIiBmbGFncyBpbiBzb21lIE1ha2VmaWxlcyB0byBhbGxvdyBmb3Igc2lsZW50ICJtYWtlIC1zIgotCi1jb21taXQgNDY1M2Y5MWMxM2VkNTFjMjFjYzRjMzg1NTc0NWQ2OWEzZmIxODE3ZgotQXV0aG9yOiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLURhdGU6CVRodSBPY3QgMjYgMTQ6Mzg6MjUgMjAwNiAtMDQwMAotCi0gICAgRml4IFRTRUMgZHJpdmVyIChub3cgZm9yIHJlYWwpOiBhdm9pZCBjcmFzaGVzIGlmIFBIWSBpcyBub3QgYXR0YWNoZWQKLSAgICB0byBhIFRTRUMgKGUuZy4gYSBzd2l0Y2ggaXMgY29ubmVjdGVkIHZpYSBSTUlJKSBvcgotICAgIGlmIHRoZSBQSFkgaXMgZGVmZWN0aXZlL2luY29ycmVjdGx5IGNvbmZpZ3VyZWQuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBCZW4gV2FycmVuIDxid2FycmVuQHFzdHJlYW1zLmNvbT4KLQotY29tbWl0IGI5ODViNWQ2ZTRmYjg4ZjUwOGY3YWEwZjEyNmMyZTI3YWRhMmI5OTkKLUF1dGhvcjogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci1EYXRlOglUaHUgT2N0IDI2IDE0OjM4OjI1IDIwMDYgLTA0MDAKLQotICAgIEZpeCBUU0VDIGRyaXZlcjogYXZvaWQgY3Jhc2hlcyBpZiBQSFkgaXMgbm90IGF0dGFjaGVkCi0gICAgdG8gYSBUU0VDIChlLmcuIGEgc3dpdGNoIGlzIGNvbm5lY3RlZCB2aWEgUk1JSSkgb3IKLSAgICBpZiB0aGUgUEhZIGlzIGRlZmVjdGl2ZS9pbmNvcnJlY3RseSBjb25maWd1cmVkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogQmVuIFdhcnJlbiA8YndhcnJlbkBxc3RyZWFtcy5jb20+Ci0KLWNvbW1pdCAyYjJhNDBiZWJiZjE4MjI1MDZlODBlNjMxZDcyNTNlNjBmMGUwZmU2Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVGh1IE9jdCAyNiAxNjoyNDozMSAyMDA2ICswMjAwCi0KLSAgICBDb2RlIGNsZWFudXAuCi0KLWNvbW1pdCA1ZTNiMGJjMTlmMDdlZDI3N2Q4NTMyNGFkMDQyNzY0MmM4OTgxYmFmCi1BdXRob3I6IEhhYXZhcmQgU2tpbm5lbW9lbiA8aHNraW5uZW1vZW5AYXRtZWwuY29tPgotRGF0ZToJV2VkIE9jdCAyNSAxNTo0ODo1OSAyMDA2ICswMjAwCi0KLSAgICBGaW5pc2ggdXAgc3VwcG9ydCBmb3IgdGhlIEFUU1RLMTAwMC9BVFNUSzEwMDIgYm9hcmRzCi0KLSAgICBBZGQgYXRzdGsxMDAyX2NvbmZpZyB0YXJnZXQgdG8gTWFrZWZpbGUgYW5kIG1vdmUgdGhlIEFWUjMyIHNlY3Rpb24KLSAgICBkb3duIGJlbG93IEJsYWNrZmluIHNvIHRoYXQgaXQgZG9lc24ndCBlbmQgdXAgaW4gdGhlIG1pZGRsZSBvZgotICAgIE1JUFMuCi0KLSAgICBEcm9wIHRoZSBhdXRvZ2VuZXJhdGVkIGxpbmtlciBzY3JpcHQgdGhpbmcgZm9yIG5vdy4gV2lsbCBoYXZlIHRvCi0gICAgcmV2aXNpdCBob3cgdG8gaGFuZGxlIGNoaXBzIHdpdGggZGlmZmVyZW50IGZsYXNoIGFuZCBSQU0gbGF5b3V0Ci0gICAgbGF0ZXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IGM3NmY5NTFhNzQ3Y2ZiODdiYTgyNmVmNDViNWFlYTgyZDViNWRiYjQKLUF1dGhvcjogS3VtYXIgR2FsYSA8Z2FsYWtAa2VybmVsLmNyYXNoaW5nLm9yZz4KLURhdGU6CVR1ZSBPY3QgMjQgMjM6NDc6MzcgMjAwNiAtMDUwMAotCi0gICAgQWRkZWQgc3VwcG9ydCBmb3IgTXVsdGktSW1hZ2UgZmlsZXMgdGhhdCBjb250YWluIGEgZGV2aWNlIHRyZWUKLQotICAgIElmIGEgTXVsdGktSW1hZ2UgZmlsZSBjb250YWlucyBhIHRoaXJkIGltYWdlIHdlIHRyeSB0byB1c2UgaXQgYXMgYQotICAgIGRldmljZSB0cmVlLiAgVGhlIGRldmljZSB0cmVlIGltYWdlIGlzIGFzc3VtZWQgdG8gYmUgdW5jb21wcmVzc2VkIGluIHRoZQotICAgIGltYWdlIGZpbGUuICBXZSBhdXRvbWF0aWNhbGx5IGFsbG9jYXRlIHNwYWNlIGZvciB0aGUgZGV2aWNlIHRyZWUgaW4gbWVtb3J5Ci0gICAgYW5kIHByb3ZpZGUgYW4gOGsgcGFkIHRvIGFsbG93IG1vcmUgdGhhbiBhIHJlYXNvbmFibGUgYW1vdW50IG9mIGdyb3d0aC4KLQotICAgIEFkZGl0aW9uYWxseSwgYSBkZXZpY2UgdHJlZSB0aGF0IHdhcyBjb250YWluZWQgaW4gZmxhc2ggd2lsbCBub3cgYXV0b21hdGljYWxseQotICAgIGdldCBjb3BpZWQgdG8gc3lzdGVtIG1lbW9yeSBhcyBwYXJ0IG9mIGJvb3QuICBQcmV2aW91c2x5IGFuIGVycm9yIHdhcwotICAgIHJlcG9ydGVkIGlmIG9uZSB0cmllZCB0byBib290IGEgZGV2aWNlIHRyZWUgdGhhdCB3YXMgaW4gZmxhc2guCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBLdW1hciBHYWxhIDxnYWxha0BrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1jb21taXQgN2M1MmM0Yjk0M2ZmNTJiYmU4Nzk2YTdlMmQzZTQ3NmNlYWYzZjUxMgotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyNCAyMTozNTo1NSAyMDA2ICswMjAwCi0KLSAgICBTd2l0Y2ggdG8gYXV0b21hdGljYWxseSBnZW5lcmF0ZWQgQ0hBTkdFTE9HIGZpbGUuCi0gICAgKHVzZSAibWFrZSBDSEFOR0VMT0ciIHRvIHVwZGF0ZSBpdCBmcm9tIHRpbWUgdG8gdGltZSkKLQotY29tbWl0IDdhZGUwYzYzNGE5NzljMzJmYTkxYTc0ZThmNTc3NWYyNDY1MWZiZTYKLUF1dGhvcjogU3RlZmFuIFJvZXNlIDxzckBkZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyNCAxODowNjo0OCAyMDA2ICswMjAwCi0KLSAgICBGaXggYnVnIGluIFBQQzQ0MCBOQU5EIGRyaXZlciBjcHUvcHBjNHh4L25kZmMuYwotICAgIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjQgT2N0IDIwMDYKLQotY29tbWl0IDhhZTNiNzEzYjIyODZlMGMzMjEzYjc4MDIwNjJlNGMxNTk5MDEwZGUKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDI0IDE3OjI0OjU1IDIwMDYgKzAyMDAKLQotICAgIE1lcmdlIHdpdGggL2hvbWUvd2QvZ2l0L3UtYm9vdC9tYXN0ZXIKLQotY29tbWl0IDQ3YTY5ODljMTA2ODVkMmFiM2VmY2Y5NTIyOGNlNTBkMmE0OTZkM2UKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDI0IDE1OjMyOjU3IDIwMDYgKzAyMDAKLQotICAgIENvZGUgY2xlYW51cAotCi1jb21taXQgM2E3OGUzZTc1YjYzM2VjYjY0MTMxMTRmZmQxMWUyZjAwMGM0ZjExZQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVR1ZSBPY3QgMjQgMTQ6NTE6MzYgMjAwNiArMDIwMAotCi0gICAgTW92ZSBhdHN0azEwMDAgZmlsZXMgaW50byB2ZW5kb3Igc3BlY2lmaWMgZGlyZWN0b3J5LgotICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMTIgU2VwIDIwMDYKLQotY29tbWl0IDZjY2VjNDQ5MmU3NzQyOGZkNmVhZmQzZGZlOTRmYmRmMDhlOTFkMzcKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDI0IDE0OjQyOjM3IDIwMDYgKzAyMDAKLQotICAgIEFkZCBBVFNUSzEwMDAgYW5kIEFUU1RLMTAwMiBib2FyZCBzdXBwb3J0Ci0gICAgUGF0Y2ggYnkgSGFhdmFyZCBTa2lubmVtb2VuLCAwNiBTZXAgMjAwNgotCi0gICAgVGhpcyBwYXRjaCBhZGRzIHN1cHBvcnQgZm9yIHRoZSBBVFNUSzEwMDAgd2l0aCB0aGUgQVRTVEsxMDAyIENQVQotICAgIGRhdWdodGVyYm9hcmQuCi0KLSAgICBBVFNUSzEwMDAgaXMgYSBmdWxsLWZlYXR1cmVkIGRldmVsb3BtZW50IGJvYXJkIGZvciBBVDMyQVAgQ1BVcy4gSXQKLSAgICBoYXMgdHdvIGV0aGVybmV0IHBvcnRzLCBhIGhpZ2ggcXVhbGl0eSBRVkdBIExDRCBwYW5lbCwgYSBsb3Vkc3BlYWtlciwKLSAgICBhbmQgY29ubmVjdG9ycyBmb3IgVVNBUlQsIFBTLzIsIFZHQSwgVVNCLCBNTUMvU0QgY2FyZHMgYW5kCi0gICAgQ29tcGFjdEZsYXNoIGNhcmRzLiBGb3IgbW9yZSBpbmZvcm1hdGlvbiwgcGxlYXNlIHNlZSB0aGlzIHBhZ2U6Ci0KLSAgICBodHRwOi8vd3d3LmF0bWVsLmNvbS9keW4vcHJvZHVjdHMvdG9vbHMuYXNwP2ZhbWlseV9pZD02ODIKLQotICAgIFRoZSBBVFNUSzEwMDIgaXMgYSBkYXVnaHRlcmJvYXJkIGZvciB0aGUgQVRTVEsxMDAwIHN1cHBvcnRpbmcgdGhlCi0gICAgQVQzMkFQNzAwMCBjaGlwLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCBmOTNhZTc4OGMzNjQwZmNkZTVkYjM4MzQ3MWQ0NTU0OGZmNDA2MGQwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyNCAxNDozMToyNCAyMDA2ICswMjAwCi0KLSAgICBBZGQgY29tbW9uIHNlcmlhbCBkcml2ZXIgZm9yIEF0bWVsIEFUMzIgYW5kIEFUOTEgY2hpcHMKLSAgICBQYXRjaCBieSBIYWF2YXJkIFNraW5uZW1vZW4sIDA2IFNlcCAyMDA2Ci0KLSAgICBUaGlzIGlzIGEgZmlyc3QgYXR0ZW1wdCBhdCBjcmVhdGluZyBhIGNvbW1vbiBzZXJpYWwgZHJpdmVyIGZvciBBdG1lbAotICAgIGNoaXBzLiBGb3Igbm93LCBpdCBzdXBwb3J0cyB0aGUgQVQzMkFQNzAwMCBBVlIzMiBjaGlwLCBidXQgaXQgc2hvdWxkCi0gICAgYmUgcG9zc2libGUgdG8gc3VwcG9ydCBBVDkxUk05MjAwIGFuZCBvdGhlciBBUk0tYmFzZWQgY2hpcHMgd2l0aCBzb21lCi0gICAgbWlub3IgbW9kaWZpY2F0aW9ucy4KLQotICAgIFRoZXJlJ3Mgbm90aGluZyBmdW5kYW1lbnRhbGx5IEFWUjMyLXNwZWNpZmljIGluIHRoaXMgZHJpdmVyLCBidXQgaXQKLSAgICBkb2VzIHVzZSBzb21lIGZlYXR1cmVzIHdoaWNoIGFyZSBjdXJyZW50bHkgb25seSBkZWZpbmVkIGZvciB0aGUKLSAgICBBVDMyQVAgQ1BVIHBvcnQ6Ci0gICAgICAqIHBtX2dldF9jbG9ja19mcmVxOiBPYnRhaW4gdGhlIGNsb2NrIGZyZXF1ZW5jeSBvZiBhIGdpdmVuIGRvbWFpbgotICAgICAgKiBnZC0+Y29uc29sZV91YXJ0OiBBICJzdHJ1Y3QgZGV2aWNlIiBjb250YWluaW5nIGluZm9ybWF0aW9uIGFib3V0Ci0JcmVnaXN0ZXIgbWFwcGluZ3MsIGdwaW8gcmVzb3VyY2VzIGFuZCBjbG9ja3MgYXNzb2NpYXRlZCB3aXRoIHRoZQotCVVBUlQgZGV2aWNlLgotCi0gICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gYWJvdXQgdGhlc2UgZmVhdHVyZXMsIHBsZWFzZSBzZWUgdGhlICJBVDMyQVAKLSAgICBDUFUiIHBhdGNoLgotCi1jb21taXQgNzJhMDg3ZTA0NzA1YzI2Y2FkOTgyODc5ZWJkMDZiNTI4MWJmODI1YQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVR1ZSBPY3QgMjQgMTQ6Mjc6MzUgMjAwNiArMDIwMAotCi0gICAgQWRkIEFUMzJBUCBDUFUgYW5kIEFUMzJBUDcwMDAgU29DIHN1cHBvcnQKLSAgICBQYXRjaCBieSBIYWF2YXJkIFNraW5uZW1vZW4sIDA2IFNlcCAyMDA2Ci0KLSAgICBUaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIEFUMzJBUCBDUFUgZmFtaWx5IGFuZCB0aGUgQVQzMkFQNzAwMAotICAgIGNoaXAsIHdoaWNoIGlzIHRoZSBmaXJzdCBjaGlwIGltcGxlbWVudGluZyB0aGUgQVZSMzIgYXJjaGl0ZWN0dXJlLgotCi0gICAgVGhlIEFUMzJBUCBDUFUgY29yZSBpcyBhIGhpZ2gtcGVyZm9ybWFuY2UgaW1wbGVtZW50YXRpb24gZmVhdHVyaW5nIGEKLSAgICA3LXN0YWdlIHBpcGVsaW5lLCBzZXBhcmF0ZSBpbnN0cnVjdGlvbi0gYW5kIGRhdGEgY2FjaGVzLCBhbmQgYSBNTVUuCi0gICAgRm9yIG1vcmUgaW5mb3JtYXRpb24sIHBsZWFzZSBzZWUgdGhlICJBVlIzMiBBUCBUZWNobmljYWwgUmVmZXJlbmNlIjoKLQotICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9yZXNvdXJjZXMvcHJvZF9kb2N1bWVudHMvZG9jMzIwMDEucGRmCi0KLSAgICBJbiBhZGRpdGlvbiB0byB0aGlzLCB0aGUgQVQzMkFQNzAwMCBjaGlwIGNvbWVzIHdpdGggYSBsYXJnZSBzZXQgb2YKLSAgICBpbnRlZ3JhdGVkIHBlcmlwaGVyYWxzLCBtYW55IG9mIHdoaWNoIGFyZSBzaGFyZWQgd2l0aCB0aGUgQVQ5MSBzZXJpZXMKLSAgICBvZiBBUk0tYmFzZWQgbWljcm9jb250cm9sbGVycyBmcm9tIEF0bWVsLiBGdWxsIGRhdGEgc2hlZXQgaXMKLSAgICBhdmFpbGFibGUgaGVyZToKLQotICAgIGh0dHA6Ly93d3cuYXRtZWwuY29tL2R5bi9yZXNvdXJjZXMvcHJvZF9kb2N1bWVudHMvZG9jMzIwMDMucGRmCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBIYWF2YXJkIFNraW5uZW1vZW4gPGhza2lubmVtb2VuQGF0bWVsLmNvbT4KLQotY29tbWl0IDdiNjRmZWYzM2M2NmJlNjQ4ODI2YzBmZjk3NTgyOThlZjEzZDA2MDQKLUF1dGhvcjogV29sZmdhbmcgRGVuayA8d2RAcG9sbHV4LmRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDI0IDE0OjIxOjE2IDIwMDYgKzAyMDAKLQotICAgIEFkZCBBVlIzMiBhcmNoaXRlY3R1cmUgc3VwcG9ydAotICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgNiBTZXAgMjAwNiAxNjoyMzowMiArMDIwMAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIGNvbW1vbiBpbmZyYXN0cnVjdHVyZSBjb2RlIGZvciB0aGUgQXRtZWwgQVZSMzIKLSAgICBhcmNoaXRlY3R1cmUuIFNlZSBkb2MvUkVBRE1FLkFWUjMyIGZvciBkZXRhaWxzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFhdmFyZCBTa2lubmVtb2VuIDxoc2tpbm5lbW9lbkBhdG1lbC5jb20+Ci0KLWNvbW1pdCAyZGEyZDlhNDc2NjA2M2I5ODQ4ZjNhMzVhZDYwMjU0OTljZjg3MjY1Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyNCAxMzo1NzozMyAyMDA2ICswMjAwCi0KLSAgICBVc2UgLWcgaW5zdGVhZCBvZiAtZ3N0YWJzIGluIEFGTEFHU19ERUJVRwotICAgIFBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMzAgQXVnIDIwMDYKLQotICAgIEluIGNvbmZpZy5taywgLVdhLC1nc3RhYnMgaXMgdW5jb25kaXRpb25hbGx5IGFwcGVuZGVkIHRvIEFGTEFHUyBubwotICAgIG1hdHRlciB3aGF0IHRoZSB0YXJnZXQncyBwcmVmZXJyZWQgZGVidWdnaW5nIGZvcm1hdCBpcy4gVGhpcyBwYXRjaAotICAgIHNpbXBseSByZXBsYWNlcyAtZ3N0YWJzIHdpdGggLWcsIHNvIHRoYXQgdGhlIGRlZmF1bHQgZGVidWdnaW5nIGZvcm1hdAotICAgIGZvciB0aGUgYXJjaGl0ZWN0dXJlIGlzIHVzZWQuCi0KLWNvbW1pdCA5NjU4Mjk4NzIxNjljMjk5NjAyMzg0MGQ5OGUxZDg1YWQxNDhkNjI5Ci1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJVHVlIE9jdCAyNCAxMzo1NToxOCAyMDA2ICswMjAwCi0KLSAgICBGaXgvd29ya2Fyb3VuZCBicm9rZW4gZGVwZW5kZW5jeSBoYW5kbGluZyB3aXRoIG1ha2UgMy44MQotICAgIEJhc2VkIG9uIHBhdGNoIGJ5IEhhYXZhcmQgU2tpbm5lbW9lbiwgMjkgQXVnIDIwMDYgMTE6MjA6MzkgKzAyMDAKLQotY29tbWl0IDgzMThmYmY4Y2MzMDQxOGI2MjFlYTlmMzliODRiNGMxYTA4ZjAwM2EKLUF1dGhvcjogTWFyaWFuIEJhbGFrb3dpY3ogPG04QHNlbWloYWxmLmNvbT4KLURhdGU6CU1vbiBPY3QgMjMgMjI6MTc6MDUgMjAwNiArMDIwMAotCi0gICAgRml4IHNlcXVvaWEgc2VwYXJhdGUgb2JqZWN0IGRpcmVjb3J5IGJ1aWxkaW5nIHByb2JsZW1zLgotCi1jb21taXQgM2RmYTljZmRjZWU3OGIzMGRhMzQzMjMxOGIzMjgyMWZmYWJlOTc0YgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIE9jdCAyMCAxNzoxNjozNSAyMDA2IC0wNTAwCi0KLSAgICBVc2UgZ2VuZXJpYyBJMkMgcmVnaXN0ZXIgYmxvY2sgb24gODV4eCBhbmQgODZ4eC4KLQotICAgIFJlcGxhY2UgcHJpdmF0ZSBJTU1BUCBJMkMgc3RydWN0dXJlcyB3aXRoIGdlbmVyaWMgcmVnIGJsb2NrCi0gICAgYW5kIGFsbG93IDg2eHggdG8gaGF2ZSBtdWx0aXBsZSBJMkMgZGV2aWNlIGJ1c3Nlcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmNTAxMjgyN2RmMTFjYTBjOWJlMWRmNWY4YjE1M2UxODhkYzJmYTdjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDIwIDE1OjU0OjM0IDIwMDYgLTA1MDAKLQotICAgIEZpeCBjb21waWxhdGlvbiB3YXJuaW5ncyBvbiBhIGZldyA4NXh4IGJvYXJkcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAyMDQ3NjcyNjg0Y2Y4NWNiNmY5NmExZmJjOTkzMTgwYWFhZjE5YTk5Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgT2N0IDIwIDE1OjUwOjE1IDIwMDYgLTA1MDAKLQotICAgIENvbnZlcnRlZCBhbGwgODV4eCBib2FyZHMgdG8gdXNlIGEgY29tbW9uIEZTTCBJMkMgZHJpdmVyLgotICAgIEludHJvZHVjZWQgQ09GSUdfRlNMX0kyQyB0byBzZWxlY3QgdGhlIGNvbW1vbiBGU0wgSTJDIGRyaXZlci4KLSAgICBBbmQgcmVtb3ZlZCBoYXJkIGkyYyBwYXRoIGZyb20gYSBmZXcgdS1ib290LmxkcyBzY2lwdHMgdG9vLgotICAgIE1pbm9yIHdoaXRlc3BhY2UgY2xlYW51cHMgYWxvbmcgdGhlIHdheS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0ZDQ1ZjY5ZTM2MmIwNTg5MmM5ZTkyYTc5MDdlNTgyMDk5NTYxMmFhCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgT2N0IDE5IDEyOjAyOjI0IDIwMDYgLTA1MDAKLQotICAgIFJld3JpdGUgYSBzZXJpZXMgb2YgZ290byBzdGF0ZW1lbnRzIGFzIGEgc2VxdWVuY2VzIG9mCi0gICAgY29uZGl0aW9uYWwgZXhwcmVzc2lvbnMgaW5zdGVhZC4KLQotICAgIFVzZSBjb25zaXN0ZW50IHJldHVybiBjb2RlIDAvLTEgZm9yIGdvb2QvYmFkIGluZGljYXRvcnMuCi0KLSAgICBJbmNsdWRlIG9uZSBmZXdlciBmaWxlIGlmIHRoZSBkcml2ZXIgaXNuJ3QgdXNlZCBhdCBhbGwuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzIzN2MwMzNiMDJmZTI5NTg4MDQzNWYxZWI4MDgxOWEwYzk4NzUzMgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAxOSAxMTowMjoxNiAyMDA2IC0wNTAwCi0KLSAgICBNb3ZlZCBpMmMgZHJpdmVyIG91dCBvZiBjcHUvbXBjODZ4eC9pMmMuYyBpbnRvIGRyaXZlcnMvZnNsX2kyYy5jCi0KLSAgICBpbiBhbiBlZmZvcnQgdG8gYmVnaW4gdG8gdW5pZnkgdGhlIHVtcHRlZW4gRlNMIEkyQyBkcml2ZXJzIHRoYXQKLSAgICBhcmUgYWxsIG90aGVyd2lzZSB2ZXJ5IHNpbWlsYXIuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMTNhN2ZjZGYzN2Y2ZWE5NDI5YWUwNGM5ZGY2N2Y4OTMzNjRjZmU0YgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IE9jdCAxOSAxMTozMzo1MiAyMDA2IC0wNTAwCi0KLSAgICAqIEZpeCBhIGJ1bmNoIG9mIGNvbXBpbGVyIHdhcm5pbmdzIGZvciBnY2MgNC4wCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYWY5ZTFmNWI5ZTZmOWNlODEwZjVlOGJmMjk2MWM5NTQyYTU4NjVjMgotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgT2N0IDE3IDA2OjE0OjMxIDIwMDYgKzAyMDAKLQotICAgIEFkZCBtb25pdG9yIGZ1bmN0aW9ucyBmb3IgaW5kaXJlY3QgYWNjZXNzIHRvIFBQQzQ0MCBEQ1IncwotICAgIFBhdGNoIGJ5IExlb25pZCBCYXJ5dWRpbiwgMTIgT2N0IDIwMDYKLQotY29tbWl0IDVmMzI0OWEwYTE2OGU0NDZhNGNjOTY2OWIyYmNlMGJjNDU2ZjBhMDkKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBPY3QgMTMgMTY6NDc6NTMgMjAwNiAtMDUwMAotCi0gICAgRml4ZWQgbGVhZGluZyB3aGl0ZXNwYWNlIGlzc3Vlcy4KLSAgICBSZW1vdmVkIHNwdXJpb3VzIExBV0FSIHRoaW5nLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBlZTkwY2I3N2UwMWQ2ZThjY2QzN2UxYmQ5NjY3ODU5Nzg3NWMzOTEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBPY3QgMTIgMTA6NDI6MzYgMjAwNiAtMDUwMAotCi0gICAgUmVtb3ZlIHVubmVlZGVkIGluY2x1ZGUgZmlsZXMgYW5kIGxvY2FsIHZhcmlhYmxlLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDFlYWYzYTVmZjQ5NjBhNDZmM2E5MDYzNTY4YmEyYWY3ODgzZjA3YzUKLUF1dGhvcjogR3JhbnQgTGlrZWx5IDxncmFudC5saWtlbHlAc2VjcmV0bGFiLmNhPgotRGF0ZToJVHVlIE9jdCAxMCAwMDoyMzozMiAyMDA2IC0wNjAwCi0KLSAgICBGaXggcG9zc2libGUgdW5pbml0aWFsaXplZCB2YXJpYWJsZSBjb21waWxlciB3YXJuaW5nLgotCi0gICAgV2hlbiBDT05GSUdfT0ZfRkxBR19UUkVFIGlzIHNldCwgdGhlIGNvbXBpbGVyIGNvbXBsYWlucyB0aGF0ICdsZW4nIGluCi0gICAgZG9fYm9vdG1fbGludXgoKSBtYXkgYmUgdW5pbml0aWFsaXplZC4gIFRoZXJlIGlzIG5vIHBvc3NpYmlsaXR5IGluIHRoZQotICAgIGN1cnJlbnQgY29kZSB0aGF0IGxlbiB3aWxsIGdldCB1c2VkIHVuaW5pdGlhbGl6ZWQsIGJ1dCB0aGlzIGZpeCBmb2xsb3dzCi0gICAgdGhlIGV4aXN0aW5nIGNvbnZlbnRpb24gb2Ygc2V0dGluZyBib3RoIGxlbiBhbmQgZGF0YSB0byB6ZXJvIGF0IHRoZSBzYW1lCi0gICAgdGltZS4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEdyYW50IExpa2VseSA8Z3JhbnQubGlrZWx5QHNlY3JldGxhYi5jYT4KLQotY29tbWl0IDczNzZlYjg3YWFhNjAxZjcyOGY5YjhlNWU5Y2QyNzExYTY3ZjUyOWUKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgMTEgMTU6MTM6MDEgMjAwNiAtMDUwMAotCi0gICAgKiBGaXggYSBidW5jaCBvZiBjb21waWxlciB3YXJuaW5ncyBmb3IgZ2NjIDQuMAotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJmNjUxYmFhMzY1ZTU0NDcyNDZhYWQ2YTYzM2NjZDY2N2NmMjRhMzkKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBPY3QgMTEgMTA6MTA6NDMgMjAwNiAtMDUwMAotCi0gICAgTW92ZSAiYXIiIGZsYWdzIHRvIGNvbmZpZy5tayB0byBhbGxvdyBmb3Igc2lsZW50ICJtYWtlIC1zIgotCi1jb21taXQgMWZkNTY5OWE0YTI0ZjVjMWRhYjFiMzJmNDgwYmFjZTFlYmI5ZmMzZQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAxMCAxNzoxOTowMyAyMDA2IC0wNTAwCi0KLSAgICBDb2Rpbmcgc3R5bGUgY2hhbmdlcyB0byByZW1vdmUgbG9jYWwgdmFyaWJsZSBibG9ja3MKLSAgICBhbmQgcmVmb3JtYXQgYSBiaXQgbmljZXIuCi0KLWNvbW1pdCA4YjI4M2RiYjNhMDhkMWI4ZDQwNmJjMTVmMTE5ZTA4MWIzZTI2MDZhCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDEwIDE3OjE2OjA0IDIwMDYgLTA1MDAKLQotICAgIEZpeCB3aGl0ZXNwYWNlIGlzc3Vlcy4KLQotY29tbWl0IDdiMzgyYjcxMjVmMjM5N2NjZTYzMjUzZGY2MmYxODNlM2RmYTI3NzAKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBPY3QgMTAgMTc6MTQ6NDUgMjAwNiAtMDUwMAotCi0gICAgRml4IHdoaXRlc3BhY2UgaXNzdWVzLgotCi1jb21taXQgZTEwMzkwZGRkNzM2YjBkYWQxNTI4ZWVjNGIwZmUzNWMwODI3MTM5YQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE9jdCAxMCAxNzowNjo1MyAyMDA2IC0wNTAwCi0KLSAgICBGaXggd2hpdGVzcGFjZSBpc3N1ZXMuCi0KLWNvbW1pdCA4OTg3NWU5NmJhM2YwMjMxNTdiZjUwZDVmOGUzM2JmMjU0OTY0YTc2Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDEwIDE3OjAzOjQzIDIwMDYgLTA1MDAKLQotICAgIFJhbiBsaW5kZW50IGFuZCBjbGVhbmVkIHVwIHdoaXRlc3BhY2UgaXNzdWVzLgotICAgIEZvcm1hdCBmb3IgODAtY29sdW1ucyB0b28uCi0KLWNvbW1pdCAzMzM5NjFhZTcwOTVmYzY2ZDhhMDQxZmNlMWFjOWVlODczYjA5ZDg2Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgT2N0IDEwIDE3OjAyOjIyIDIwMDYgLTA1MDAKLQotICAgIEZpeCB3aGl0ZXNwYWNlIGFuZCA4MC1jb2wgaXNzdWVzLgotCi1jb21taXQgNWM5MTJjYjFjMzEyNjZjNjZjYTU5YjM2ZjliNmY4NzI5NjQyMWQ3NQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgT2N0IDcgMTE6MzY6NTEgMjAwNiArMDIwMAotCi0gICAgQ0ZHX05BTkRfUVVJRVRfVEVTVCBhZGRlZCB0byBub3Qgd2FybiB1cG9uIG1pc3NpbmcgTkFORCBkZXZpY2UKLSAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Ci0KLWNvbW1pdCA1YmM1MjhmYTRkYTc1MWQ0NzIzOTdiMzA4MTM3MjM4YTY0NjVhZmQyCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVNhdCBPY3QgNyAxMTozNToyNSAyMDA2ICswMjAwCi0KLSAgICBVcGRhdGUgQUxQUiBjb2RlIChOQU5EIHN1cHBvcnQgd29ya2luZyBub3cpCi0gICAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwNyBPY3QgMjAwNgotCi1jb21taXQgNzdkNTAzNDg0N2QzMjg3NTNiODBjNDZiODNmOTYwYTE0YTI2ZjQwZQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgT2N0IDcgMTE6MzM6MDMgMjAwNiArMDIwMAotCi0gICAgUmVtb3ZlIGNvbXBpbGUgd2FybmluZ3MgaW4gZnBnYSBjb2RlCi0gICAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwNyBPY3QgMjAwNgotCi1jb21taXQgZjM0NDM4NjdlOTBkMjk3OWE3ZGQxYzY1YjBkNTM3Nzc3ZTFmOTg1MAotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglTYXQgT2N0IDcgMTE6MzA6NTIgMjAwNiArMDIwMAotCi0gICAgQWRkIENPTkZJR19CT0FSRF9SRVNFVCB0byBjb25maWd1cmUgYm9hcmQgc3BlY2lmaWMgcmVzZXQgZnVuY3Rpb24KLSAgICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE9jdCAyMDA2Ci0KLWNvbW1pdCBmNTVkZjE4MTg3ZTdhNDVjYjczZmVjNDM3MGQxMjEzNWU2NjkxYWUxCi1BdXRob3I6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIFNlcCAyOSAwODoyMzoxMiAyMDA2ICswMTAwCi0KLSAgICBGaXggbWlzc2luZyB0Q3ljbGUvbW9kZnJlcSBjYWxjdWxhdGlvbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODI3MmRjMmY1OGYyNDczZDg5OTVmY2M5YjkxNjQ0MGNmYmEwODBmMAotQXV0aG9yOiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgU2VwIDEzIDEwOjMzOjM1IDIwMDYgLTA1MDAKLQotICAgIFVwZGF0ZWQgY29uZmlnIGhlYWRlcnMgdG8gYWRkIGRlZmF1bHQgRkRULWJhc2VkIGJvb3RpbmcKLQotY29tbWl0IDA5ZjNlMDllOWViY2ZhNzkxOWNhODkzMWE0YjU1MDRmYWRkMWYxZDMKLUF1dGhvcjogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIFNlcCAxMyAxMDozNDoxOCAyMDA2IC0wNTAwCi0KLSAgICBBZGQgc3VwcG9ydCBmb3IgZVRTRUMgMyAmIDQgb24gODU0OCBDRFMKLQotICAgICogQWRkZWQgc3VwcG9ydCBmb3IgdXNpbmcgZVRTRUMgMyBhbmQgZVRTRUMgNCBvbiB0aGUgODU0OCBDRFMuCi0gICAgICBUaGlzIHdpbGwgb25seSB3b3JrIG9uIHJldiAxLjMgYm9hcmRzIChidXQgZG9lc24ndCBicmVhayBvbGRlciBib2FyZHMpCi0gICAgKiBDbGVhbmVkIHVwIHNvbWUgY29tbWVudHMgdG8gcmVmbGVjdCB0aGUgZXhwYW5kZWQgcm9sZSBvZiB0c2VjCi0gICAgICBpbiBvdGhlciBzeXN0ZW1zCi0KLWNvbW1pdCAwODRkNjQ4YjEwOWM4OTg0ZjgzNjc0MDQzYzFhN2ZhMzg4NWVmODAxCi1BdXRob3I6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBTZXAgMTMgMTA6MzM6NTYgMjAwNiAtMDUwMAotCi0gICAgQWRkZWQgY29kZSB0byBzdXBwb3J0IDIuNi4xOCBQQ0kgY2hhbmdlcyBpbiB1LWJvb3QKLQotICAgICogQWRkZWQgY29kZSB0byBzd2l6emxlIHRoZSBJUlEgbWFwIGZvciB0aGUgUENJCi0KLWNvbW1pdCBhZmJkYzY0OWY4NzUxZTRmNGYxYTZmNTI3ZWRmZTEzOTc3M2YyYzE1Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgU2VwIDE5IDA5OjM0OjEwIDIwMDYgLTA1MDAKLQotICAgIE1vZGlmaWVkIG1ha2VmaWxlIGZvciBuZXcgYnVpbGQgbWVjaGFuaXNtLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQxNGJhNmE3OThiZWI3NTNlN2E4NjQ1MDA0MTRmY2MyZDE5OGI4YmMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBTZXAgMTQgMDg6NDA6MzYgMjAwNiAtMDUwMAotCi0gICAgSGFuZGxlIDg2eHggU1ZSIHZhbHVlcyBhY2NvcmRpbmcgdG8gdGhlIG5ldyBSZWZlcmVuY2UgTWFudWFsLgotICAgIEJvdGggODY0MSBhbmQgODY0MUQgaGF2ZSBTVlIgPT0gMHg4MDkwLCBhbmQgYXJlIGRpc3Rpbmd1aXNoZWQKLSAgICBieSB0aGUgYnl0ZSBpbiBiaXRzIDE2LTIzIGluc3RlYWQuCi0gICAgVGhhbmtzIHRvIEphc29uIEppbiBmb3Igbm90aWNpbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODhjOGY0OTIxZmM0N2ZiMGViMjM4NGIxNjU4NmYxYmQ3ZjI3NWJlNwotQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyAyOCAxNDoyNTozMSAyMDA2ICswODAwCi0KLSAgICBGaXhlZCBhbiBPRi10cmVlIG9mZi1ieS1vbmUgYnVnIHdoZW4gYWRkaW5nIGEgbmV3IHByb3BlcnR5IG5hbWUuCi0gICAgVGhpcyBidWcgd2lsbCBjYXVzZSB0aGUga2VybmVsIGJvb3RpbmcgdG8gcGF1c2UgYSBsb25nIHRpbWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotICAgIChjaGVycnkgcGlja2VkIGZyb20gMmYxNTc3NmNjYzZkYzMyMzc3ZDhiYTk2NTJiOGY1ODA1OWMyN2M2ZCBjb21taXQpCi0KLWNvbW1pdCA5YmZmN2E2OWE4ODVhZGViYmQyYmQ0NTk5MDQ5NGVjNGNmOTk4YTMwCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDI5IDExOjA1OjA5IDIwMDYgLTA1MDAKLQotICAgIFJlbW92ZSB0cmFpbGluZyBlbXB0eSBsaW5lcy4KLQotY29tbWl0IGNkNmQ3M2Q1Yjg5NWE1OTM1YWM0ZmRlMGEzNTYyODgxNDJhNTg0ZTAKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjkgMDk6NDg6NDkgMjAwNiAtMDUwMAotCi0gICAgUmVtb3ZlIGJvZ3VzIG1zeW5jIGFuZCB1c2Ugdm9sYXRpbGUgYXNtLgotCi1jb21taXQgNzc4ZDQ1MDQ5Y2U1OTI3YjY1YjNmZjFkOGU2NjkyYjY1NGJkZDQ5ZQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyAyOSAwODoxNzoxNCAyMDA2IC0wNTAwCi0KLSAgICBBZGQgbXlzZWxmIGFzIG1haW50YWluZXIgZm9yIE1QQzg2NDFIUENOLgotCi1jb21taXQgMmYxNTc3NmNjYzZkYzMyMzc3ZDhiYTk2NTJiOGY1ODA1OWMyN2M2ZAotQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIEF1ZyAyOCAxNDoyNTozMSAyMDA2ICswODAwCi0KLSAgICBGaXhlZCBhbiBPRi10cmVlIG9mZi1ieS1vbmUgYnVnIHdoZW4gYWRkaW5nIGEgbmV3IHByb3BlcnR5IG5hbWUuCi0gICAgVGhpcyBidWcgd2lsbCBjYXVzZSB0aGUga2VybmVsIGJvb3RpbmcgdG8gcGF1c2UgYSBsb25nIHRpbWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTU2NzgwNmI2N2QwYWU4MzQ5M2FhODgyM2FkM2I2YzkxNGY1ODFkNwotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEF1ZyAyNSAxNDozODozNCAyMDA2IC0wNDAwCi0KLSAgICBDaGFuZ2UgcmFtZGlza2FkZHIgYW5kIGR0YmFkZHIKLSAgICBSZW1vdmUgUEVYIGZsdWZmIGNvbW1hbmRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjJiNzg0MjFkOWRiNDljMjFhODIxYWY4YTE5YzIxYzFmN2RmYjI5ZQotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAyMyAxMzozMjo0NSAyMDA2IC0wNTAwCi0KLSAgICAqIEFub3RoZXIgc21hbGwgZml4IGZvciBib290aW5nIHdpdGggZGlzYWJsZV9vZgotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRhN2NjMGYyMTkxOGU2ZWNmMDdlZDU3MDc1ZDY3ZGYyYzRhMTI5OWMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMjMgMTE6MDQ6NDMgMjAwNiAtMDUwMAotCi0gICAgQ2xlYW51cCBhbmQgbGluZGVudCBuZXcgQUhDSSBkcml2ZXIuCi0KLWNvbW1pdCBkYWJmOWVmOGMxMGI0ZGVhZDVlZjIxMDZlZjc0MmIxYzA2YjU0MmRlCi1BdXRob3I6IEppbiBaaGVuZ3hpb25nIDxqYXNvbkBidXMuYXAuZnJlZXNjYWxlLm5ldD4KLURhdGU6CVdlZCBBdWcgMjMgMTk6MTU6MTIgMjAwNiArMDgwMAotCi0gICAgQWRkIEFIQ0kgZGVmaW5lIGFuZCBzYXRhIHN1cHBvcnQgZm9yIE1QQzg2NDFIUENOIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTpKYXNvbiBKaW48amFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0NzgyYWM4MGIwMmYwZDAxYWZkMzA5ZTIyMDBkZDNjNzAzN2YyYmE0Ci1BdXRob3I6IEppbiBaaGVuZ3hpb25nIDxqYXNvbkBidXMuYXAuZnJlZXNjYWxlLm5ldD4KLURhdGU6CVdlZCBBdWcgMjMgMTk6MTA6NDQgMjAwNiArMDgwMAotCi0gICAgQWRkIEFIQ0kgc3VwcG9ydCB0byB1LWJvb3QKLQotICAgIEFkZCBBSENJIHN1cHBvcnQgaW4gdS1ib290LCBlbmFibGUgdGhlIHNhdGEgZGlzayBjb250cm9sbGVycyB3aGljaAotICAgIGZvbGxvd2luZyB0aGUgQUhDSSBwcm90b2NvbC4KLQotICAgIFNpZ25lZC1vZmYtYnk6SmFzb24gSmluPGphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZDhlYTJhY2Y1ZjEzN2NhZTk5NDE3ZGY0ZjU3M2QwMzZlZTM4NDY2OAotQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAyMyAxNzo1NDozMiAyMDA2ICswODAwCi0KLSAgICBBZGQgZHRiIGJvb3QtdXAgcGFyYW1ldGVyIHRvIGRlZmF1bHQgYm9vdCBjb21tYW5kcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiOTM3NzVjMjAzNmI5OWJhYTM5MGVhNDI1YzQ3NzE4OTViYmM2M2M0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDIyIDE4OjI2OjA4IDIwMDYgLTA1MDAKLQotICAgIENsZWFudXAgZXZlbiBtb3JlIHBvb3JseSBpbnRyb2R1Y2VkIHdoaXRlc3BhY2UuCi0KLWNvbW1pdCBhZTYyNDE2ODVjYmNmMGM3OWEzNjM2NTMwZDJjZWFiMWZiMjkxYTk0Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDIyIDE4OjA3OjAwIDIwMDYgLTA1MDAKLQotICAgIENsZWFudXAgbW9yZSBwb29ybHkgaW50cm9kdWNlZCB3aGl0ZXNwYWNlLgotCi1jb21taXQgMmMzM2U4YTFjNTM1YjNhZTkxY2YwYjI4NDQ4MDYwMGJmM2Y1N2M1NwotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyAyMiAxNzo1NDowNSAyMDA2IC0wNTAwCi0KLSAgICBDbGVhbnVwIHBvb3JseSBpbnRyb2R1Y2VkIHdoaXRlc3BhY2UuCi0KLWNvbW1pdCA4MGU5NTVjN2RkOThmNGI0ZmQyM2MyMTEzY2FmNzVlZDJiNzdiNWIzCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDIyIDEyOjI1OjI3IDIwMDYgLTA1MDAKLQotICAgIEdlbmVyYWwgaW5kZW50IGFuZCB3aGl0ZXNwYWNlIGNsZWFudXBzLgotCi1jb21taXQgZmZmZjNhZTU2ZjU4NDJjYTM2NzllNGNlNzkyMmI4MTlhODdhYWQ5ZgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyAyMiAxMjowNjoxOCAyMDA2IC0wNTAwCi0KLSAgICBHZW5lcmFsIGluZGVudCBhbmQgd2hpdGVzcGFjZSBjbGVhbnVwcy4KLQotY29tbWl0IDQxYTBlOGIzMDRkM2ZmNTVmZTI3YTIzMDUwN2FhYzc5Njg0MDE2YWMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjIgMTA6NDI6MjEgMjAwNiAtMDUwMAotCi0gICAgQ2xlYW51cCBjb21waWxlciB3YXJuaW5ncy4KLQotY29tbWl0IDVkZTYyYzQ3YTg2MjhiM2RhNGQ3M2Y3YzA3MDI3ZjMyYTMzNDJkNDAKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjIgMDk6MzE6NTkgMjAwNiAtMDUwMAotCi0gICAgRml4IGRpc2FibGVfb2YgYm9vdGluZwotCi0gICAgU2lnbmVkLW9mZi1ieTogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg3YTQ0OWM4YWMzOTY0MjBjYjI0MjYwZjcxN2VhOWU2ZmFhODIwNDcKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMjIgMDk6MjM6NTUgMjAwNiAtMDUwMAotCi0gICAgU3VwcG9ydCBmb3IgRkRUIGluIHVJbWFnZSBmb3JtYXQsIGVycm9yIHdoZW4gdXNpbmcgRkRUIGZyb20gZmxhc2gKLQotICAgIFNpZ25lZC1vZmYtYnk6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA3NWMyOTljMzgzNjlkMDFhZGRkNWUwNTRiOGExNjIxN2I3MGY0YTg2Ci1BdXRob3I6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgQXVnIDE1IDE1OjEyOjU1IDIwMDYgLTA0MDAKLQotICAgIFVubG9jayBjYWNoZSBiZWZvcmUga2VybmVsIHN0YXJ0cyB1cCBmb3IgTVBDODZ4eAotCi1jb21taXQgNjcyNTY2NzhmMDBjMDliMGE3ZjE5ZTg2MmU1YzE4NDc1NTNkMzFiYwotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyAxNSAxNToxMzoxNSAyMDA2IC0wNDAwCi0KLSAgICBDb3B5IEdsb2JhbCBEYXRhIFBvaW50ZXIgdG8gcjI5IGZvciBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUgotCi1jb21taXQgMWM4ZjZkOGZiMDI4ZjE1NjA5NGQwNWYyZDE0Mjk4ZTY0NzkzNjRhYwotQXV0aG9yOiBIYWl5aW5nIFdhbmcgPGhhaXlpbmcud2FuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyAxNSAxNToxMjo1NSAyMDA2IC0wNDAwCi0KLSAgICBVbmxvY2sgY2FjaGUgYmVmb3JlIGtlcm5lbCBzdGFydHMgdXAgZm9yIE1QQzg2eHgKLQotY29tbWl0IDBkOWNjYzU1ZWRmOWE3ZjNjNWIyYjYyNjM1ODBhNmVhOGQ3MDJhMDQKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBBdWcgMTUgMTU6MTM6MTUgMjAwNiAtMDQwMAotCi0gICAgQ29weSBHbG9iYWwgRGF0YSBQb2ludGVyIHRvIHIyOSBmb3IgREVDTEFSRV9HTE9CQUxfREFUQV9QVFIKLQotY29tbWl0IDg2YzhlMTdmMjVlOTcyYTdlMjcyOTUwYTA3MzVmYWQ4NGUwODJiODgKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBBdWcgMTYgMTM6NTk6NDcgMjAwNiAtMDUwMAotCi0gICAgKiBGaXggZGlzYWJsZV9vZiBib290aW5nCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjVjNzUxZTlhZGM4NmUyMmZlM2I1YjQ3Y2YyODA2Mzc5YjU3NWRiNwotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyAxNiAxMDo1NDowOSAyMDA2IC0wNTAwCi0KLSAgICAqIFN1cHBvcnQgZm9yIEZEVCBpbiB1SW1hZ2UgZm9ybWF0LCBlcnJvciB3aGVuIHVzaW5nIEZEVCBmcm9tIGZsYXNoCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgODk5NjIwYzJkNjZkNGVlZjNiMmEwMDM0ZDA2MmU3MWQ0NWQ4ODZjOQotQXV0aG9yOiBTdGVmYW4gUm9lc2UgPHNyQGRlbnguZGU+Ci1EYXRlOglUdWUgQXVnIDE1IDE0OjIyOjM1IDIwMDYgKzAyMDAKLQotICAgIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIHRoZSBBTFBSIGJvYXJkIGZyb20gUHJvZHJpdmUKLSAgICBOQU5EIG5lZWRzIHNvbWUgYWRkaXRpb25hbCB0ZXN0aW5nCi0gICAgUGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIsIDE1IEF1ZyAyMDA2Ci0KLWNvbW1pdCBmMGZmNDY5MmZmMzM3MmRlYzU1MDc0YThlYjQ0NDk0M2FiMDk1YWJiCi1BdXRob3I6IFN0ZWZhbiBSb2VzZSA8c3JAZGVueC5kZT4KLURhdGU6CVR1ZSBBdWcgMTUgMTQ6MTU6NTEgMjAwNiArMDIwMAotCi0gICAgQWRkIEZQR0EgQWx0ZXJhIEN5Y2xvbmUgMiBzdXBwb3J0Ci0gICAgUGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIsIDE1IEF1ZyAyMDA2Ci0KLWNvbW1pdCBmZWNmMWM3ZTRkZTFiMjc3OWVkYzE4NzQyYjkxYzIyYmRjMzJiNjhiCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglNb24gQXVnIDE0IDE1OjMzOjM4IDIwMDYgLTA1MDAKLQotICAgIEZpeCBCQVQwIHRvIGFjdHVhbGx5IGJlIGNhY2hlYWJsZSwgbm9uLWd1YXJkZWQgYXMgZG9jdW1lbnRlZC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA0MGJjODM1NTlkYjU3NDU2ODE5MDlmZDczODJhZTUwOTU2N2UxMTZkCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgQXVnIDkgMTU6MzI6MTYgMjAwNiAtMDUwMAotCi0gICAgUmVtb3ZlZCBNUEM4NjQxSFBDTiBEVFMgc291cmNlIGZpbGUgZnJvbSBidWlsZC4KLSAgICBJdCBpcyBubyBsb25nZXIgbGlua2VkIGludG8gVS1Cb290OyBpdHMgc291cmNlcyBhcmUKLSAgICBub3cgbG9jYXRlZCBpbiB0aGUga2VybmVsIHRyZWUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzRjM2MwZTAxZGJmMWY4Y2MyYmQwOGRlOTJmMmI4OWJhODQ5MjFlYgotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyOCAxMDo0NzowMyAyMDA2IC0wNTAwCi0KLSAgICAqIFN3aXRjaGVkIGRlZmF1bHQgUENJIHNwZWVkIGZvciA4NTQwIEFEUyBiYWNrIHRvIDMzTUh6Ci0KLSAgICAqIEFkZGVkIGNvbW1lbnRzIGFuZCBhIHByaW50ZiB0byB3YXJuIHRoYXQgUENJLVggd29uJ3QKLSAgICAgIHdvcmsgYXQgMzNNSHoKLSAgICAgIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgYjZjNWUxMzczYjZlYTBiYjM3YTE4ZTRhZWVjZWMwMDYxM2QxY2QzOQotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyOCAxMDo0NjozNSAyMDA2IC0wNTAwCi0KLSAgICAqIEZpeGVkIGEgYnVnIHdoZXJlIDg1NTUgUENJIGNvZGUgdXNlZCB0aGUgb2xkIHZhcmlhYmxlIGFuZCBmdW5jdGlvbiBuYW1lcyBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJmMWRmZmZkOGMyNmY4ZWNkZDYzMGEwYWU0YzgzNGU3NTFlNGU0NTIKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDY6MTMgMjAwNiAtMDUwMAotCi0gICAgKiBBZGRlZCBWSUEgY29uZmlndXJhdGlvbiB0YWJsZQotCi0gICAgKiBBZGRlZCBzdXBwb3J0IGZvciBQQ0kyIG9uIENEUwotICAgICAgUGF0Y2ggYnkgQW5keSBGbGVtaW5nIDE3LU1hci0yMDA2Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjODhmOWZlNjZiNjQyNDdlNWI2YTM4NDEwYmEzMTVjYTI1NTk2ZDE2Ci1BdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI4IDEwOjQ1OjQxIDIwMDYgLTA1MDAKLQotICAgICogRml4ZWQgUENJIG1lbW9yeSBkZWZpbml0aW9ucyBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDk3MDc0ZWQ5NjU1MzA5YjY0MjMxYmMyY2VlNjlmZTg1Mzk5ZjgwNTUKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDU6MTcgMjAwNiAtMDUwMAotCi0gICAgKiBBZGRlZCBzdXBwb3J0IGZvciBpbml0aWFsaXppbmcgc2Vjb25kIFBDSSBidXMgb24gODV4eCBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGYwZTZmNTdmNzFiM2M0ZmRkMTMwMjhlYjAzYzNmM2U5MTkyNmRkYTIKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDQ6NDkgMjAwNiAtMDUwMAotCi0gICAgKiBBZGRlZCBQQ0ktWCAjZGVmaW5lcyBmb3IgUENJLVggaW5pdGlhbGl6YXRpb24gUGF0Y2ggYnkgQW5keSBGbGVtaW5nIG9uIDE3LU1hci0yMDA2Ci0KLSAgICBTaWduZWQtb2ZmLWJ5OiBBbmR5IEZsZW1pbmcgPGFmbGVtaW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBhNGUxMTU1OGI4MTBlZjJjZGRmZmRmN2I5ZDg2YmMxMTMwNDQxOTYwCi1BdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI4IDEwOjQ0OjIzIDIwMDYgLTA1MDAKLQotICAgICogTWFkZSBzdXJlIHRoZSBjb2RlIHdoaWNoIGRpc2FibGVzIHByZWZldGNoIGZvciBQQ0kgZGV2aWNlcyBzZXRzIHRoZSBzaXplIG9mIHRoZSBwcmVmZXRjaCByZWdpb24gdG8gMCBQYXRjaCBieSBBbmR5IEZsZW1pbmcgb24gMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDBlMTYzODdkYjFkNGFhY2Q1YmYzNWNiNmQ3YzE5NDI3NjVjMDM0N2IKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDM6MzYgMjAwNiAtMDUwMAotCi0gICAgKiBBZGQgRmxhdCBEZXYgVHJlZSBjb25zdHJ1Y3Rpb24gZm9yIE1QQzg1eHggQURTIGFuZCBDRFMgYm9hcmRzIFBhdGNoIGJ5IEpvbiBMb2VsaWdlciAxNy1KYW4tMjAwNgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDg1NWU2ZmIwNzNmOWQwNGZlNGE3ZjA2YzEwN2VjYmFjNjM0NGRkZDQKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDM6MDAgMjAwNiAtMDUwMAotCi0gICAgKiBSZW1vdmVkIHRoZSBvZnRyZWUuZHRzIGZvciBzdHh4dHggaW4gbGlnaHQgb2YgdGhlIGNoYW5nZXMgdG8gdGhlIGZsYXQgZGV2aWNlIHRyZWUgaGFuZGxpbmcgY29kZSBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Ci0KLWNvbW1pdCA1NDk4ZDkwMzEyYWFkOWY2YmRiZjA0Nzk4NjAyN2MzNWIwM2NkMTYzCi1BdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI4IDEwOjQyOjI0IDIwMDYgLTA1MDAKLQotICAgICogUGF0Y2ggdG8gbW9kaWZ5IGZ0X2J1aWxkLmMgdG8gdXBkYXRlIGZsYXQgZGV2aWNlIHRyZWVzIGluIHBsYWNlIFBhdGNoIGJ5IE1hdHRoZXcgTWNDbGludG9jayAyNi1KdW5lLTIwMDYKLQotY29tbWl0IDAyNjc3NjhlZGRjNWNhN2JjMTg2NWJjNDBjODY2ODI5YWM1ZWZiZmUKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDE6MzcgMjAwNiAtMDUwMAotCi0gICAgKiBNb2RpZnkgYm9vdG0gY29tbWFuZCB0byBzdXBwb3J0IGJvb3Rpbmcgd2l0aCBmbGF0IGRldmljZSB0cmVlcyBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Ci0KLWNvbW1pdCA4ZmM4YmQyY2M0NzliNmNkMTg4ZmRlZGU0MDEwZTBlMDUyOTcwYjhhCi1BdXRob3I6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEF1ZyA5IDE0OjMzOjUwIDIwMDYgKzAxMDAKLQotICAgIEFkZCBSYXBpZGlvIHN1cHBvcnQgZm9yIHRoZSBNUEM4NjQxSFBDTgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9obiBUcmFpbGwgPGpvaG4udHJhaWxsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5MWE0MTRjN2QxZmIwZWFjOTEyNTkyY2Q5OTViMzBjOWYyMzA0NWM5Ci1BdXRob3I6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEF1ZyA4IDExOjMyOjQzIDIwMDYgKzAxMDAKLQotICAgIEZpeCBjYXNsYXQgY2FsY3VsYXRpb24KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvaG4gVHJhaWxsIDxqb2huLnRyYWlsbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNzA5ZDMwNzNlNzQxNTMyNzhlNzkwNGE3MDgxOWJiZWY3ZGY1MGUxYQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEF1ZyAzIDE2OjE3OjU2IDIwMDYgLTA1MDAKLQotICAgIENvbnZlcnQgdG8gbWFjLWFkZHJlc3MgaW4gZXRoZXJuZXQgbm9kZXMuCi0KLWNvbW1pdCA3MTc0OGFmODMzY2ExMDE3ZWRmMTQxNWJlMzc2MzY2ZmYyOTM3ZDE3Ci1BdXRob3I6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDI4IDEyOjQxOjM1IDIwMDYgLTA0MDAKLQotICAgIENvcnJlY3QgdGhlIGlycSB2YWx1ZSBvZiBEVUFSVDIKLQotY29tbWl0IDljYjNlODgxNmFlNGQ4NTRlN2RjMjIxMjhjM2VlYTNkNzBiYjk4MmMKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMjggMTI6NDE6NDEgMjAwNiAtMDQwMAotCi0gICAgQ2hhbmdlIHRoZSBzcGFjZSBzaXplIG9mIFBFWCBJTyBpbiBSRUFETUUKLQotY29tbWl0IDIzOWRiMzdjOTRmN2E5Mjk0MWM0NDY1ZmVjZWI4NjdjNjA5MjQxYzUKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBKdWwgMjggMTI6NDE6MTggMjAwNiAtMDQwMAotCi0gICAgTW92ZSBnZXRfYm9hcmRfc3lzX2NsayB0byBib2FyZCBkaXJlY3RvcnkKLQotY29tbWl0IDQ5MjkwMGI5ODU0MzlmYmNlMWExMThhZmRlMWUzNWRlZjg3MGRiMDMKLUF1dGhvcjogSm9obiBUcmFpbGwgPGpvaG4udHJhaWxsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDI4IDA5OjAzOjU0IDIwMDYgKzAxMDAKLQotICAgIEZpeCA4NjQxSFBDTiBwb2xsdXRpb24KLQotY29tbWl0IDUxNWFiOGE2MmU4NTc0ZTJiYWJjNmU4ZGNjNDM1NDRhZDIyMWM1YjIKLUF1dGhvcjogSm9obiBUcmFpbGwgPGpvaG4udHJhaWxsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglGcmkgSnVsIDI4IDA4OjE2OjA2IDIwMDYgKzAxMDAKLQotICAgIEZpeCA4NjQxSFBDTiB0aW1lYmFzZQotCi1jb21taXQgYzg2MzYwYjgzMGYxZWVjZDdhNzIyMDg1NzVkZGU0ZjU3ODc5ZmFlYQotQXV0aG9yOiBaaGFuZyBXZWkgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCAyOCAwMDowMTozNCAyMDA2ICswODAwCi0KLSAgICBGaXhlZCBPRiBkZXZpY2UgdHJlZSBvZiBtcGM4Nnh4aHBjbiBib2FyZC4KLQotICAgIFRoZSBjaGFuZ2VzIHdvcmtzIGluIHdpdGgga2VybmVsIGlycSBtYXBwaW5nIHJld29yay4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFpoYW5nIFdlaSA8d2VpLnpoYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZWEzZjI4ZDI4NTk0MmJmM2Y3YWIzMzljZTg1MTc4ZGVkNTQ0MjI1Ci1BdXRob3I6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVsIDEyIDEwOjQ4OjA1IDIwMDYgLTA0MDAKLQotICAgIEFkZCBzdXBwb3J0IGZvciByZWFkaW5nIGFuZCB3cml0aW5nIG1hYyBhZGRyZXNzZXMgdG8gb3IgZnJvbSBJRCBFRVBST00uCi0KLSAgICBBZGRlZCBjb2RlIGZvciByZWFkaW5nIGFuZCB3cml0aW5nIE1hYyBhZGRyZXNzZXMgdG8vZnJvbSBJRCBFRVBST00oMHg1NykuCi0gICAgV2l0aCBhdHRhY2hlZCBwYXRjaCwgd2UgY2FuIHVzZSBjb21tYW5kICJtYWMvbWFjIHJlYWQvbWFjIHNhdmUvIgotICAgIHRvIHJlYWQgYW5kIHdyaXRlIEVFUFJPTSB1bmRlciB1LWJvb3QgcHJvbXB0LgotCi0gICAgVS1ib290IHdpbGwgY2FsY3VsYXRlIHRoZSBjaGVja3N1bSBvZiBFRVBST00gd2hpbGUgYm9vdHVwLAotICAgIGlmIGl0IGlzIHJpZ2h0LCB0aGVuIHUtYm9vdCB3aWxsIGNoZWNrIHdoZXRoZXIgdGhlIG1hYyBhZGRyZXNzCi0gICAgb2YgZVRTRUMwLzEvMi8zIGlzIGF2YWlsYWxiZSAobm9uLXplcm8pLgotCi0gICAgSWYgdGhlcmUgaXMgbWFjIGFkZHJlc3MgYXZhaWxhYmUgaW4gRUVQUk9NLCB1LWJvb3Qgd2lsbCB1c2UgaXQsCi0gICAgb3RoZXJld2lzZSwgdS1ib290IHdpbGwgdXNlIHRoZSBtYWMgYWRkcmVzcyBkZWZpbmVkIGluCi0gICAgTVBDODY0MUhQQ04uaC4gVGhpcyBtYXRjaGVzIHRoZSByZXF1aXJlbWVudCB0byBzZXQgdW5pcXVlIG1hYyBhZGRyZXNzCi0gICAgZm9yIGVhY2ggVFNFQyBwb3J0LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBTaWduZWQtb2ZmLWJ5OiBZb3JrIFN1biA8eW9ya3N1bkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmNiMjhlNzYzNDE1ZTBlNGU2NmIwZjQ1ODQyZDE1NTdhZTE5OGU1ZQotQXV0aG9yOiBKaW4gWmhlbmd4aW9uZyA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUaHUgSnVsIDEzIDEwOjM1OjEwIDIwMDYgLTA1MDAKLQotICAgIEZpeGVkIGluaXRyZCBpc3N1ZSBieSBkZWZpbmUgYmlnIFJBTQotCi0gICAgU2lnbmVkLW9mZi1ieTpKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZTZjZDJhMTc4NWQ3NGVjM2QzMGE4NmYxY2IzNjBiZThkZTQ3ODE1MQotQXV0aG9yOiBKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJRnJpIEp1bCA3IDEwOjAxOjQ1IDIwMDYgLTA1MDAKLQotICAgIFdlIG1hZGUgYSB1LWJvb3QgcGF0Y2ggdG8gZml4IHRoZSBoYW5nIHVwIGlzc3VlCi0gICAgd2hlbiBib290aW5nIGZpbGVzeXN0ZW0gZnJvbSByYW1kaXNrLgotCi0gICAgU2lnbmVkLW9mZi1ieTpKYXNvbiBKaW4gPEphc29uLmppbkBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzg0MzNjY2M1ODUwZWU3MDU0OWFmMGIyYmM1YjkyMDM1NWVmNTM4OAotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyOCAxMDo0NzowMyAyMDA2IC0wNTAwCi0KLSAgICAqIFN3aXRjaGVkIGRlZmF1bHQgUENJIHNwZWVkIGZvciA4NTQwIEFEUyBiYWNrIHRvIDMzTUh6Ci0gICAgKiBBZGRlZCBjb21tZW50cyBhbmQgYSBwcmludGYgdG8gd2FybiB0aGF0IFBDSS1YIHdvbid0Ci0gICAgICB3b3JrIGF0IDMzTUh6Ci0gICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGU0YzJhMGViMGMzZTNmZmJmODI0ODAwMTg0ZWU0MmJkYzk5ZDViMTkKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDY6MzUgMjAwNiAtMDUwMAotCi0gICAgKiBGaXhlZCBhIGJ1ZyB3aGVyZSA4NTU1IFBDSSBjb2RlIHVzZWQgdGhlIG9sZCB2YXJpYWJsZSBhbmQKLSAgICAgIGZ1bmN0aW9uIG5hbWVzCi0gICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGNiZmM3Y2U3NTZiODhlYjI2ZTU1MzdiYzdiNjI1YzQ0NWM2ZGNmYWMKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDY6MTMgMjAwNiAtMDUwMAotCi0gICAgKiBBZGRlZCBWSUEgY29uZmlndXJhdGlvbiB0YWJsZQotICAgICogQWRkZWQgc3VwcG9ydCBmb3IgUENJMiBvbiBDRFMKLSAgICAgIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgNTJjN2E2OGI4ZDU4N2ViY2Y1YTZiMDUxYjU4YjNkM2ZmYTM3N2RkYwotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyOCAxMDo0NTo0MSAyMDA2IC0wNTAwCi0KLSAgICAqIEZpeGVkIFBDSSBtZW1vcnkgZGVmaW5pdGlvbnMKLSAgICAgIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyAxNy1NYXItMjAwNgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMDg3NDU0NjA5ZTQ3Mjk1NDQzYWY3OTNhMjgyY2RkY2Q5MWE1ZjQ5YwotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyOCAxMDo0NToxNyAyMDA2IC0wNTAwCi0KLSAgICAqIEFkZGVkIHN1cHBvcnQgZm9yIGluaXRpYWxpemluZyBzZWNvbmQgUENJIGJ1cyBvbiA4NXh4Ci0gICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGI2MzZhYWViNmZkNTE2YTQ0MmZiNjExYmJlZWRkZjMwNzdhNjg3ZmIKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDQ6NDkgMjAwNiAtMDUwMAotCi0gICAgKiBBZGRlZCBQQ0ktWCAjZGVmaW5lcyBmb3IgUENJLVggaW5pdGlhbGl6YXRpb24KLSAgICAgIFBhdGNoIGJ5IEFuZHkgRmxlbWluZyBvbiAxNy1NYXItMjAwNgotCi0gICAgU2lnbmVkLW9mZi1ieTogQW5keSBGbGVtaW5nIDxhZmxlbWluZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMjBhYmJjNmZmZmExMTU2OTAxMDdjYzk0MmM3YWJmODRiZGMwM2ExYgotQXV0aG9yOiBNYXR0aGV3IE1jQ2xpbnRvY2sgPG1zbUBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyOCAxMDo0NDoyMyAyMDA2IC0wNTAwCi0KLSAgICAqIE1hZGUgc3VyZSB0aGUgY29kZSB3aGljaCBkaXNhYmxlcyBwcmVmZXRjaCBmb3IgUENJIGRldmljZXMKLSAgICAgIHNldHMgdGhlIHNpemUgb2YgdGhlIHByZWZldGNoIHJlZ2lvbiB0byAwCi0gICAgICBQYXRjaCBieSBBbmR5IEZsZW1pbmcgb24gMTctTWFyLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEFuZHkgRmxlbWluZyA8YWZsZW1pbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDQwZDVmYTM1ZDAyZGYyMjU4MDU5M2JmMDAzOWFiMTczMzY3ZThlZjAKLUF1dGhvcjogTWF0dGhldyBNY0NsaW50b2NrIDxtc21AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVdlZCBKdW4gMjggMTA6NDM6MzYgMjAwNiAtMDUwMAotCi0gICAgKiBBZGQgRmxhdCBEZXYgVHJlZSBjb25zdHJ1Y3Rpb24gZm9yIE1QQzg1eHggQURTIGFuZCBDRFMgYm9hcmRzCi0gICAgICBQYXRjaCBieSBKb24gTG9lbGlnZXIgMTctSmFuLTIwMDYKLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZTdlOGIwY2I1YTBjNDlkYzE4MDA3NWI5NmRmMjk2YTg5M2JmMTQ2Ci1BdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI4IDEwOjQzOjAwIDIwMDYgLTA1MDAKLQotICAgICogUmVtb3ZlZCB0aGUgb2Z0cmVlLmR0cyBmb3Igc3R4eHR4IGluIGxpZ2h0IG9mIHRoZSBjaGFuZ2VzCi0gICAgICB0byB0aGUgZmxhdCBkZXZpY2UgdHJlZSBoYW5kbGluZyBjb2RlCi0gICAgICBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Ci0KLWNvbW1pdCAxYjM4MGVjMjI1NjY1ZTczOTU5Njc3ZjM4OTNkYzY1OGM1OTI1ZTA1Ci1BdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI4IDEwOjQyOjI0IDIwMDYgLTA1MDAKLQotICAgICogUGF0Y2ggdG8gbW9kaWZ5IGZ0X2J1aWxkLmMgdG8gdXBkYXRlIGZsYXQgZGV2aWNlIHRyZWVzIGluIHBsYWNlCi0gICAgICBQYXRjaCBieSBNYXR0aGV3IE1jQ2xpbnRvY2sgMjYtSnVuZS0yMDA2Ci0KLWNvbW1pdCA5OGE5YzRkNDY4YTk0MmEwOWViZTg5NzliZWM1MDgwMTdmM2U0NDYyCi1BdXRob3I6IE1hdHRoZXcgTWNDbGludG9jayA8bXNtQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgSnVuIDI4IDEwOjQxOjM3IDIwMDYgLTA1MDAKLQotICAgICogTW9kaWZ5IGJvb3RtIGNvbW1hbmQgdG8gc3VwcG9ydCBib290aW5nIHdpdGggZmxhdCBkZXZpY2UgdHJlZXMKLSAgICAgIFBhdGNoIGJ5IE1hdHRoZXcgTWNDbGludG9jayAyNi1KdW5lLTIwMDYKLQotY29tbWl0IGRhMDEyYWI2NjFmZDRhYjE2OWRkN2I5YjMyMjAxYTRkZjYyY2YzNGEKLUF1dGhvcjogSmluIFpoZW5neGlvbmcgPEphc29uLkppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEp1biAyOCAwODo0Mzo1NiAyMDA2IC0wNTAwCi0KLSAgICBDaGFuZ2UgSWQgdG8gc3ltYm9saWMgbmFtZSBmb3IgUlRMODEzOQotCi0gICAgU2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5qaW5AZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGJjMDljZjNjMmJmYjhkNTRjNjU5Y2JiMzMyZjc5ZDA5NTA5ODJmZDAKLUF1dGhvcjogSmluIFpoZW5neGlvbmctUjY0MTg4IDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdW4gMjcgMTg6MTI6MTAgMjAwNiArMDgwMAotCi0gICAgRml4IFJUTDgxMzkgaW4gYmlnIGVuZGlhbgotCi0gICAgc2lnbmVkLW9mZi1ieTogSmFzb24gSmluIDxKYXNvbi5KaW5AZnJlZXNjYWxlLmNvbT4KLSAgICBzaWduZWQtb2ZmLWJ5OiBXZWkgWmhhbmcgPHdlaS56aGFuZ0BmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZmNmYjlhNTc5NDdmYzIwM2I5OWZlODFhYjA1NzhmNzI4NjI2MWY5ZgotQXV0aG9yOiBKaW4gWmhlbmd4aW9uZy1SNjQxODggPEphc29uLkppbkBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIEp1biAyNyAxODoxMjoyMyAyMDA2ICswODAwCi0KLSAgICBGaXggVHNlYyBidWcgd2hlbiBubyBsaW5rCi0KLSAgICAgV2hlbiB0ZnRwIGEgbm9uLWV4aXN0IGZpbGUgZnJvbSB0aGUgdGZ0cCBzZXJ2ZXIsIHUtYm9vdCB3aWxsIGNoZWNrCi0gICAgIHRoZSBsaW5rIG9mIGFsbCBldGggcG9ydC4gVGhlIG9yaWdpbmFsIGZpbGUgd2lsbCByZXR1cm4gd3JvbmcgbGluawotICAgICBzdGF0ZSBvbiB0aGUgbm8gbGluayBwb3J0cy4KLQotICAgIHNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiZDIyYzJiOTc1MTRmYmZiMGUwM2JkOWM3MmIzNDQ1ZTRkYmQ1N2UyCi1BdXRob3I6IEppbiBaaGVuZ3hpb25nLVI2NDE4OCA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDI3IDE4OjEyOjAyIDIwMDYgKzA4MDAKLQotICAgIEZpeCBidWcgZm9yIGlvX2JhciBzaXplIGR1cmluZyBwY2kgc2NhbgotCi0gICAgRHVyaW5nIHRoZSBwY2kgc2NhbiBwcm9jZXNzLCBTb21lIGRldmljZXMgcmV0dXJuIGJhcl9yZXBvbnNlIHdpdGggdGhlCi0gICAgaGlnaGVzdCBieXRlcyAwLCBzdWNoIGFzIHRoZSBwY2kgYnJpZGdlIGluIHVsaTE1NzUgcmV0dXJuIGJhcl9yZXNwb25zZQotICAgIHdpdGggMHhmZmZmZmYsIFNvIHRoZSBiYXJfc2l6ZSBzaG91bGQgYmUgbWFudWFsbHkgc2V0IHVuZGVyIDY0Sy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8amFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBmYTdkYjljMzc3YmMyMzUzYTE3YmYxZDM4MWQ2NWE2YzQxODcyOGYwCi1BdXRob3I6IEppbiBaaGVuZ3hpb25nLVI2NDE4OCA8SmFzb24uSmluQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDI3IDE4OjExOjU0IDIwMDYgKzA4MDAKLQotICAgIEVuYWJsZSBQQ0lFMSBmb3IgTVBDODY0MUhQQ04gYm9hcmQKLQotICAgIFNpZ25lZC1vZmYtYnk6IEphc29uIEppbiA8SmFzb24uamluQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCA5OWQ3MGUzYTQ3YWZmYjliYWUwNDFhMmNhZWNlN2NkNTE2ZTIxM2IzCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJTW9uIEp1biAyNiAxMTowNjowMCAyMDA2ICswMjAwCi0KLSAgICBNb3JlIGNvZGUgY2xlYW51cAotCi1jb21taXQgNjg0NjIzY2U5MmM1ZmQzMmU3ZGIyZDZlMDE2OTQ1YTY3YzVmZmFiYQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVGh1IEp1biAyMiAwODo1MTo0NiAyMDA2IC0wNTAwCi0KLSAgICBGaXggYnVnIGluIDg2NDFocGNuIHJlc2V0IGNvbW1hbmQgd2l0aCBubyBhcmdzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxoYWl5aW5nLndhbmdAZnJlZXNjYWxlLmNvbT4KLSAgICBBY2tlZC1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDhiZTQyOWE1ZGRiZjBlYmUyZDk0MTc0YmE1OGZjZmM3YTI0Mjg1ZGMKLUF1dGhvcjogWmhhbmcgV2VpIDx3ZWkuemhhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBKdW4gMjAgMTc6NDc6MTUgMjAwNiArMDgwMAotCi0gICAgUmV3b3JrZWQgSVJRIG1hcHBpbmcgaW4gT0YtdHJlZS4KLQotY29tbWl0IDBlNGMyYTE3Y2EzNDAwMWVkMzZkMjU5ZjEzY2I4OGFkYTQ2MTFhOGMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBKdW4gMTUgMjE6MzM6MzcgMjAwNiAtMDUwMAotCi0gICAgRG8gbm90IGVuYWJsZSBhZGRyZXNzIHRyYW5zbGF0aW9uIG9uIHNlY29uZGFyeSBDUFVzLgotICAgIERvIG5vdCBzZXQgdXAgQkFUcyBvbiBzZWNvbmRhcnkgQ1BVcy4gIExldCBMaW51eCBkbyB0aGUgbmFzdHkuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgMzg2ZWRhMDIyNDczMzk0YWQ4ZjM2Yjg2ZjJiZGM5YjRjYjgxNjI5MQotQXV0aG9yOiBXb2xmZ2FuZyBEZW5rIDx3ZEBwb2xsdXguZGVueC5kZT4KLURhdGU6CVdlZCBKdW4gMTQgMTg6MTQ6NTYgMjAwNiArMDIwMAotCi0gICAgQ29kZSBjbGVhbnVwCi0KLWNvbW1pdCAxNmM4ZDVlNzZhZTBmNzhmMzlhNjA2MDg1NzRhZGZlMGZlYjljYzcwCi1BdXRob3I6IFdvbGZnYW5nIERlbmsgPHdkQHBvbGx1eC5kZW54LmRlPgotRGF0ZToJV2VkIEp1biAxNCAxNzo0NTo1MyAyMDA2ICswMjAwCi0KLSAgICBWYXJpb3VzIFVTQiByZWxhdGVkIHBhdGNoZXMKLSAgICAtIEFkZCBzdXBwb3J0IGZvciBtcGM4eHggVVNCIGRldmljZS4KLSAgICAtIEFkZCBzdXBwb3J0IGZvciBDb21tb24gRGV2aWNlIENsYXNzIC0gQWJzdHJhY3QgQ29udHJvbCBNb2RlbCBVU0IgY29uc29sZS4KLSAgICAtIEFkZCBzdXBwb3J0IGZvciBmbG93IGNvbnRyb2wgaW4gVVNCIHNsYXZlIGRldmljZXMuCi0gICAgLSBBZGQgc3VwcG9ydCBmb3Igc3dpdGNoaW5nIGJldHdlZW4gZ3NlcmlhbCBhbmQgY2RjX2FjbSB1c2luZyBlbnZpcm9ubWVudC4KLSAgICAtIE1pbm9yIGNoYW5nZXMgdG8gdXNiZGNvcmVfb21hcDE1MTAuYyB1c2JkY29yZV9vbWFwMTUxMC5oCi0gICAgLSBVcGRhdGUgdXNiY29yZSBzbGlnaHRseSB0byBlYXNlIGhvc3QgZW51bWVyYXRpb24uCi0gICAgLSBGaXggbm9uLXBvcnRhYmxlIGVuZGlhbiBwcm9ibGVtcyBpbiB1c2JkY29yZSBhbmQgdXNiZGNvcmVfZXAwLgotICAgIC0gQWRkIEFkZGVyVVNCX2NvbmZpZyBhcyBhIGRlZmNvbmZpZyB0byBlbmFibGUgdXNhZ2Ugb2YgdGhlIFVTQiBjb25zb2xlCi0gICAgICBieSBkZWZhdWx0IHdpdGggdGhlIEFkZGVyODd4IFUtQm9vdCBwb3J0LgotICAgIFBhdGNoZXMgYnkgQnJ5YW4gTydEb25vZ2h1ZSA8Ym9kb25vZ2h1ZUBjb2RlaGVybWl0LmllPiwgMjkgTWF5IDIwMDYKLQotY29tbWl0IDhlY2M5NzE2MThmNTYwMjlhZDk5ZDM1MTZmOGIyOTdhNmVkNTg5NzEKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBKdW4gNyAxMDo1Mzo1NSAyMDA2IC0wNTAwCi0KLSAgICBGaXggYSBnZXRfYm9hcmRfc3lzX2NsaygpIHVzZS1iZWZvcmUtZGVmIHdhcm5pbmcuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotCi1jb21taXQgZDliZjQ4NThmY2E1YWE0ZDY1MWIyODMyNzBmNzdkYTcyZWJhZGZkNQotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJV2VkIEp1biA3IDEwOjUyOjQ5IDIwMDYgLTA1MDAKLQotICAgIEFsbG93IERUQyBwYXRoIHRvIGJlIHBhc3NlZCBpbi4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci0KLWNvbW1pdCBjODNhZTllYTZkOTNhYmJlNzUxYmY4YTMzOTYyMzZhMDg0ZTU2Zjg3Ci1BdXRob3I6IEhhaXlpbmcgV2FuZyA8aGFpeWluZy53YW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgSnVuIDYgMTY6NTQ6MjkgMjAwNiAtMDQwMAotCi0gICAgTW9kaWZ5IHRoZSBJUlEgb2YgRFVBUlQyCi0KLWNvbW1pdCBjOTM0ZjY1NWY5YWVjYTcwYTVjNWY4OGI0NjVkOWU5ZDU3YThkMjJlCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgTWF5IDMxIDEzOjU1OjM1IDIwMDYgLTA1MDAKLQotICAgIFJldmlldyBjbGVhbnVwcy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBjYjU5NjVmYjk1Yjc3YTQ5ZjRlNmFmOTUyNDhlMGM4NDlmNGFmMDNlCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgTWF5IDMxIDEyOjQ0OjQ0IDIwMDYgLTA1MDAKLQotICAgIFdoaXRlIHNwYWNlIGNsZWFudXAuCi0gICAgU29tZSA4MC1jb2x1bW4gY2xlYW51cHMuCi0gICAgQ29udmVydCBwcmludGYoKSB0byBwdXRzKCkgd2hlcmUgcG9zc2libGUuCi0gICAgVXNlICNpbmNsdWRlICJzcGRfc2RyYW0uaCIgYXMgbmVlZGVkLgotICAgIEVuaGFuY2VkIHJlc2V0IGNvbW1hbmQgdXNhZ2UgbWVzc2FnZSBhIGJpdC4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCAzZDVjNWJlNTQ3NDQ1ZGQzYmQyZWI3MzY4ZDgwZGYwM2VhNDM3OTcwCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgTWF5IDMxIDExOjM5OjM0IDIwMDYgLTA1MDAKLQotICAgIFJlbW92ZWQgdW5uZWVkZWQgbG9jYWxfYnVzX2luaXQoKSBmcm9tIDg2NDFIUENOIGJvYXJkLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDRkM2Q3MjljMTZjMzkyZDI5ODJkMzI2NmI2NTlkMzMzYzkyNzY5N2QKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CVdlZCBNYXkgMzEgMTE6MjQ6MjggMjAwNiAtMDUwMAotCi0gICAgTW92ZWQgbXBjODY0MWhwY25fYm9hcmRfcmVzZXQoKSBvdXQgb2YgY3B1LyBpbnRvIGJvYXJkLy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBiMmE5NDFkZTA2MDM1MGFkMTU4NzhkODIxOTgyNWY0OTUwZTliYjhlCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglXZWQgTWF5IDMxIDEwOjA3OjI4IDIwMDYgLTA1MDAKLQotICAgIFJlbW92ZSBkZWFkIGRlYnVnIGNvZGUuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotCi1jb21taXQgMTI2YWE3MGYxMGJhM2QyMGUwYTZmNGQzMjMyODI1MDUxM2I3Nzc3MAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJVHVlIE1heSAzMCAxNzo0NzowMCAyMDA2IC0wNTAwCi0KLSAgICBNb3ZlIG1wYzg2eHggUElYSVMgY29kZSB0byBib2FyZCBkaXJlY3RvcnkKLQotICAgIEZpcnN0IGN1dCBhdCBtb3ZpbmcgdGhlIFBJWElTIHBsYXRmb3JtIGNvZGUgb3V0IG9mCi0gICAgdGhlIDg2eHggY3B1IGRpcmVjdG9yeSBhbmQgaW50byBib2FyZC9tcGM4NjQxaHBjbgotICAgIHdoZXJlIGl0IGJlbG9uZ3MuCi0KLSAgICBTaWduZWQtb2ZmLWJ5OiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotCi1jb21taXQgZGRmODNhMmZjZWYxYTY3MGM0NWZjNTg1MTE5ZGNjMWZlMDYyYzRhOQotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJVHVlIE1heSAzMCAxNjo1NjoxNCAyMDA2ICswMjAwCi0KLSAgICBTdXBwb3J0IGdlbmVyaWMgT0hDSSBzdXBwb3J0IGZvciB0aGUgczNjMjR4MCBjcHUuCi0KLWNvbW1pdCAzOGNlZTEyZGNmY2MyNTczNzFjOTAxYzdlMTNlNThlY2FiMGEzNWQ4Ci1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWF5IDMwIDA5OjEwOjMyIDIwMDYgLTA1MDAKLQotICAgIEltcHJvdmUgInJlc2V0IiBjb21tYW5kJ3MgaW50ZXJhY3Rpb24gd2l0aCB3YXRjaGRvZy4KLQotCSJyZXNldCBhbHRiYW5rIiB3aWxsIHJlc2V0IGFub3RoZXIgYmFuayBXSVRIT1VUIHdhdGNoIGRvZyB0aW1lciBlbmFibGVkCi0JInJlc2V0IGFsdGJhbmsgd2QiIHdpbGwgcmVzZXQgYW5vdGhlciBiYW5rIFdJVEggd2F0Y2ggZG9nIGVuYWJsZWQKLQkiZGlzd2QiIHdpbGwgZGlzYWJsZSB3YXRjaCBkb2cgYWZ0ZXIgdS1ib290IGJvb3RzIHVwIHN1Y2Nlc3NmdWxseQotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IDcwMjA1ZTVhNmRkYzg1MjhiMTFkYjllYjRkM2ZhMDIwOWQ5ZmNlMmEKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVR1ZSBNYXkgMzAgMDg6NTE6MTkgMjAwNiAtMDUwMAotCi0gICAgRml4IHR3byBTRFJBTSBzZXR1cCBidWdzLgotCi0JRml4IEVDQyBzZXR1cCBidWcuCi0JRW5hYmxlIDFULzJUIGJhc2VkIG9uIG51bWJlciBvZiBESU1NcyBwcmVzZW50LgotCi0gICAgU2lnbmVkLW9mZi1ieTogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLQotY29tbWl0IGQxMWZlYzUwMTUzMzRkZWIyMDEwZTM2Y2UwMGJiMTE4Y2M1NDI5YTUKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXkgMjYgMTA6MjQ6NDggMjAwNiAtMDUwMAotCi0gICAgQWRkIGZpcnN0IGRyYWZ0IG9mIHRoZSBNUEM4NjQxSFBDTiBkb2MvUkVBRE1FLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLQotY29tbWl0IGVkNDVkNmM5MzBiNTkzOTcxOGE4N2VlMTJlMjVjZjlhMDU5NzhkNGEKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXkgMjYgMTA6MTM6MDQgMjAwNiAtMDUwMAotCi0gICAgQWRkZWQgcGNpQDgwMDAgYmxvY2suCi0gICAgVXBkYXRlZCBldGhlcm5ldCBpbnRlcnJ1cHQgbWFwcGluZ3MgKG1vdmVkIHVwIDQ4KS4KLSAgICBDbGVhbmVkIHVwIGEgZmV3IGNvbW1lbnRzLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLQotY29tbWl0IDMwMzNlYmIyMGZkN2MzNzJjN2JjYTNjOTk1NWE0NjkyYmIyMjQwYjcKLUF1dGhvcjogSGFpeWluZyBXYW5nIDxIYWl5aW5nLldhbmdAZnJlZXNjYWxlLmNvbT4KLURhdGU6CUZyaSBNYXkgMjYgMTA6MDE6MTYgMjAwNiAtMDUwMAotCi0gICAgQWxsb3cgYXJncyBvbiByZXNldCBjb21tYW5kLgotCi0gICAgU2lnbmVkLW9mZi1ieTogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLQotY29tbWl0IDMwMWYxYWEzODRkMGVkY2FlNmEyMmZkOWFkYjkzM2FkNzE2OTVlY2MKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CVR1ZSBNYXkgMjMgMTM6Mzg6MzUgMjAwNiArMDIwMAotCi0gICAgQ2hhbmdlZCB0aGUgbXAydXNiIChhdDkxcm05MjAwKSBib2FyZCB0byB1c2UgdGhlIGdlbmVyaWMgT0hDSSBkcml2ZXIuIFNvbWUKLSAgICBmaXhlcyB0byB0aGUgbGF0dGVyLgotCi1jb21taXQgMjRlMzc2NDVlNzM3OGIyMGZhOGYyMGUyOTk2YzhmYjhlOTBjNzBjOQotQXV0aG9yOiBNYXJrdXMgS2xvdHpidWVjaGVyIDxta0BkZW54LmRlPgotRGF0ZToJVHVlIE1heSAyMyAxMDozMzoxMSAyMDA2ICswMjAwCi0KLSAgICBNb3JlIGNsZWFudXAgZm9yIHRoZSBkZWx0YSBib2FyZCBhbmQgdGhlIGdlbmVyaWMgdXNiX29oY2kgZHJpdmVyLiBBZGRlZAotICAgIENGR19VU0JfQk9BUkRfSU5JVCBhbmQgQ0ZHX1VTQl9DUFVfSU5JVCBmb3IgZW5hYmxpbmcgYm9hcmQgYW5kIGNwdSBzcGVjaWZpYwotICAgIGluaXRpYWxpemF0aW9uIGFuZCBjbGVhbnVwIGhvb2tzIHJlc3BlY3RpdmVseS4KLQotY29tbWl0IDNlMzI2ZWNlOWViYTgxODRmNWQ0OGFhNGZiODc3NjBhOGY2ZjBmMTAKLUF1dGhvcjogTWFya3VzIEtsb3R6YnVlY2hlciA8bWtAZGVueC5kZT4KLURhdGU6CU1vbiBNYXkgMjIgMTY6MzM6NTQgMjAwNiArMDIwMAotCi0gICAgVGhpcyBwYXRjaCBhZGRzIFVTQiBzdG9yYWdlIHN1cHBvcnQgZm9yIHRoZSBkZWx0YSBib2FyZC4gVGhpcyBpcyB0aGUgZmlyc3QKLSAgICBib2FyZCB0byBtYWtlIHVzZSBvZiBhIGdlbmVyaWMgT0hDSSBkcml2ZXIsIHRoYXQgY2FsbHMgaG9va3MgZm9yIGJvYXJkCi0gICAgZGVwZW5kYW50IGluaXRpYWxpemF0aW9uLgotCi1jb21taXQgMTRlMzcwODFmZjNjYWM3ZWJlNmU5MzgzNjUyMzQyOTg1M2I2YjI5MgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJRnJpIE1heSAxOSAxMzoyODozOSAyMDA2IC0wNTAwCi0KLSAgICBDaGFuZ2UgYXJiaXRyYXRpb24gdG8gcm91bmQtcm9iaW4gZm9yIFNNUCBsaW51eC4KLQotY29tbWl0IDlhNjU1ODc2ZTU5OTViZTgwZjQ5MDU0ZTI1MDk1MDBlODcxZTRkM2EKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAamRsLmNvbT4KLURhdGU6CUZyaSBNYXkgMTkgMTM6MjY6MzQgMjAwNiAtMDUwMAotCi0gICAgRW5hYmxlIGR1YWwgRERSIGNvbnRyb2xsZXJzIGFuZCBpbnRlcmxlYXZpbmcuCi0KLWNvbW1pdCA1ODZkMWQ1YWJkM2U1MjVmMWUxZDliODFlNWE2MWE0ZGE2YjJmYTNjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGpkbC5jb20+Ci1EYXRlOglGcmkgTWF5IDE5IDEzOjIyOjQ0IDIwMDYgLTA1MDAKLQotICAgIFVwZGF0ZSA4Nnh4IGFkZHJlc3MgbWFwIGFuZCBMQVdCQVJzLgotCi1jb21taXQgY2NjY2U1ZDA1ODFiYjBiYTQ2MDI3OTlhNGI1MTEyZTU4ZDE1NzljYgotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJRnJpIE1heSAxOSAxMzoxNDoxNSAyMDA2IC0wNTAwCi0KLSAgICBSZW1vdmUgTDIgQ2FjaGUgaW52YWxpZGF0ZSBwb2xsaW5nLgotCi1jb21taXQgZjM1ZWM2OGZiMDY2Y2VjMGUzNjI5NGJmZTA3ZGVjMmQ0ZThhZDNhOAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBqZGwuY29tPgotRGF0ZToJRnJpIE1heSAxOSAxMjozMzowOSAyMDA2IC0wNTAwCi0KLSAgICBFbmFibGUgMm5kIENQVSBhbmQgSTJDLgotCi1jb21taXQgYmY2OTBkY2I1MTJkMzRjNGZjZWVjMGViMWU1YzBlODhhOWRiNWQ1NAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJTW9uIE1heSAxNSAwNzoyNjo1NiAyMDA2IC0wNTAwCi0KLSAgICBVcGRhdGUgaW50ZXJydXB0IG1hcHBpbmcuCi0KLWNvbW1pdCA2Y2ZlYTMzNDc3YjA0YjYzZWQ0NzM4NmVkMTYyOTUyOTQ4NGMzM2JhCi1BdXRob3I6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDEwIDA5OjM4OjA2IDIwMDYgLTA1MDAKLQotICAgIFJlbW92ZSB1bm5lZWRlZCBJTklUX1JBTV9MT0NLIGNhY2hlIHR3aWRkbGluZy4KLSAgICBDb3JyZWN0bHkgdHJhY2tzIHIyOSBhcyBnbG9iYWwgZGF0YSBwb2ludGVyIG5vdy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IEhhaXlpbmcgV2FuZyA8SGFpeWluZy5XYW5nQGZyZWVzY2FsZS5jb20+Ci0KLWNvbW1pdCBkNGRkMzE3YjU4YzEyNmEyYTdlNzNmNDc2NGVjYzFhN2M5N2Y4NzZjCi1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglXZWQgTWF5IDEwIDA5OjMzOjA3IDIwMDYgLTA1MDAKLQotICAgIFJlbW92ZSB1bm5lY2Vzc2FyeSBmbGFzaC5jIGZpbGUuCi0KLWNvbW1pdCAxOGI2YzhjZDhhZjZjYzdmMzUxODBjZWRjNGFkYjMyMzZjYzFhMWI4Ci1BdXRob3I6IEpvbiBMb2VsaWdlciA8amRsQGZyZWVzY2FsZS5jb20+Ci1EYXRlOglUdWUgTWF5IDkgMDg6MjM6NDkgMjAwNiAtMDUwMAotCi0gICAgR2V0IE1QQzg2NDFIUENOIGZsYXNoIGltYWdlcyB3b3JraW5nLgotCi0JRW5hYmxlIHRoZSBDRkkgZHJpdmVyLgotCVJlbW92ZSBib2d1cyBMQVdCQVI3IGNydWZ0LgotCVVzZSBjb3JyZWN0IFRFWFRfQkFTRSwgRml4dXAgbG9hZCBzY3JpcHQuCi0JRW5hYmxlIFNQRCBFRVBST00gZHVyaW5nIEREUiBzZXR1cC4KLQlVc2UgZ2VuZXJpYyBSRkMgMTkxOCBJUCBhZGRyZXNzZXMgYnkgZGVmYXVsdC4KLQotY29tbWl0IDVjOWVmYjM2YTZiNTQzMTQyM2Y1Mjg4OGEwZTNiNGI1MTVmZTdlY2EKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBcHIgMjcgMTA6MTU6MTYgMjAwNiAtMDUwMAotCi0gICAgQ2xlYW51cCB3aGl0ZXNwYWNlcyBhbmQgc3R5bGUgaXNzdWVzLgotICAgIFJlbW92ZWQgLy8tc3R5bGUgY29tbWVudHMuCi0gICAgVXNlIDgwLWNvbHVtbiBsaW5lcy4KLSAgICBSZW1vdmUgdHJhaWxpbmcgd2hpdGVzcGFjZS4KLSAgICBSZW1vdmUgZGVhZCBjb2RlIGFuZCBkZWJ1ZyBjcnVmdC4KLQotY29tbWl0IGEyMzIwYTZiZjgxMTNhMDk1NDRjNDJkMTYwZDEwYWM2OWQwNDlhMDMKLUF1dGhvcjogSm9uIExvZWxpZ2VyIDxqZGxAZnJlZXNjYWxlLmNvbT4KLURhdGU6CVRodSBBcHIgMjcgMDg6MjI6MzkgMjAwNiAtMDUwMAotCi0gICAgUmV2ZXJ0IGJhZCBQQ0kgcHJlZmV0Y2ggbGltaXQgY2hhbmdlLgotCi1jb21taXQgZGViYjczNTRkMWVhNGY2OTQxNTQ4MThkZjVlNWI1MjNmNWMxY2MxZAotQXV0aG9yOiBKb24gTG9lbGlnZXIgPGpkbEBmcmVlc2NhbGUuY29tPgotRGF0ZToJV2VkIEFwciAyNiAxNzo1ODo1NiAyMDA2IC0wNTAwCi0KLSAgICBJbml0aWFsIHN1cHBvcnQgZm9yIE1QQzg2NDEgSFBDTiBib2FyZC4KZGlmZiAtLWdpdCBhL0NIQU5HRUxPRy1iZWZvcmUtVS1Cb290LTEuMS41IGIvQ0hBTkdFTE9HLWJlZm9yZS1VLUJvb3QtMS4xLjUKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0MDQxNDguLjAwMDAwMDAKLS0tIGEvQ0hBTkdFTE9HLWJlZm9yZS1VLUJvb3QtMS4xLjUKKysrIC9kZXYvbnVsbApAQCAtMSw1NjA3ICswLDAgQEAKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNoYW5nZXMgZm9yIFUtQm9vdCAxLjEuNToKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKiBDbGVhbnVwIGNvbXBpbGUgd2FybmluZ3MuIFByZXBhcmUgZm9yIHJlbGVhc2UgMS4xLjUKLQotKiBGaXggY29tcGlsZSBwcm9ibGVtIGluIGluY2x1ZGUvY29uZmlncy9lcDgyeHhtLmgKLSAgKG11c3QgaGF2ZSBuZXZlciBiZWVuIHRlc3RlZCBiZWZvcmUhKQotCi0qIE1DQzIwMDogRml4IHVuaW5pdGlhbGl6ZWQgdmFyaWFibGUgcHJvYmxlbSBpbiBMQ0QgZHJpdmVyCi0KLSogQWRkIGJvYXJkL2NwdSBzcGVjaWZpYyBOQU5EIGNoaXAgc2VsZWN0IGZ1bmN0aW9uIHRvIDQ0MCBOREZDCi0gIEJhc2VkIG9uIGlkZWEgYW5kIGltcGxlbWVudGF0aW9uIGZyb20gSmVmZiBNYW5uCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjAgT2N0IDIwMDYKLQotKiBNYWtlIDR4eCBib290dXAgbWVzc2FnZSBzaG9ydGVyIG9uIDQ0MEVQeC9HUnggcGxhdGZvcm1zCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTggT2N0IDIwMDYKLQotKiBBZGQgKHByZWxpbWluYXJ5KSBzdXBwb3J0IGZvciBWMzhCIGJvYXJkCi0KLSogUFBDNDA1RVA6IEFkZCBzdXBwb3J0IGZvciBib2FyZCBjb25maWd1cmF0aW9uIG9mIENQQzBfUENJIHJlZ2lzdGVyCi0gIFRoaXMgaXMgbmVlZGVkIHRvIGJlIGFibGUgdG8gY29uZmlndXJlIFBlcldFKi9QQ0lfSU5UKiBwaW4gYXMgUGVyV0UqCi0gIFBhdGNoIGJ5IFRvbHVuYXkgT3JrdW4sIDA3IEFwciAyMDA2Ci0KLSogUFBDNDA1RVA6IEFkZCBDRkdfR1BJTzBfT1IsIENGR19HUElPMF9PRFIgdG8gc2V0dXAgR1BJTyBjb21wbGV0ZWx5LgotICAtIEFkZCBjb25maWd1cmF0aW9uIG9mIE9wZW4gRHJhaW4gR1BJTyBPdXRwdXQgc2VsZWN0aW9uCi0gIC0gQWRkIGNvbmZpZ3VyYXRpb24gb2YgaW5pdGlhbCB2YWx1ZSBvZiBHUElPIG91dHB1dCBwaW5zCi0gIFBhdGNoIGJ5IFRvbHVuYXkgT3JrdW4sIDA3IEFwciAyMDA2Ci0KLSogRml4IHNwZWxsaW5nOyBtaW5vciBjb2RlIGNsZWFudXAuCi0KLSogRml4IEpGRlMyIGNvbXBpbGF0aW9uIHByb2JsZW0KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxMiBPY3QgMjAwNgotCi0qIENsZWFudXAgb2YgTkFORCB1cGRhdGUgcGF0Y2ggKHJlbW92ZSBjaGFuZ2Vsb2cgZnJvbSBjbWRfbmFuZC5jKQotICBQYXRjaCBieSBHdWlkbyBDbGFzc2VuLCAxMCBPY3QgMjAwNgotCi0qIFNldmVyYWwgaW1wcm92ZW1lbnRzIHRvIHRoZSBuZXcgTkFORCBzdWJzeXN0ZW06Ci0gIC0gSkZGUzIgcmVsYXRlZCBjb21tYW5kcyBpbXBsZW1lbnRlZCBpbiBtdGQtdXRpbHMgc3R5bGUKLSAgLSBTdXBwb3J0IGZvciBiYWQgYmxvY2tzCi0gIC0gQmFkIGJsb2NrIHRlc3RpbmcgY29tbWFuZHMKLSAgLSBOQU5EIGxvY2sgY29tbWFuZHMKLSAgUGxlYXNlIHRha2UgYSBsb29rIGF0IGRvYy9SRUFETUUubmFuZCBmb3IgbW9yZSBkZXRhaWxzCi0gIFBhdGNoIGJ5IEd1aWRvIENsYXNzZW4sIDEwIE9jdCAyMDA2Ci0KLSogRGVmaW5lIElIX0NQVV9BVlIzMgotICBNYWtlIGl0IHBvc3NpYmxlIHRvIGdlbmVyYXRlIEFWUjMyIHVJbWFnZSBmaWxlcyB3aXRoIG1raW1hZ2UgYW5kCi0gIG1ha2UgY21kX2Jvb3RtIHJlY29nbml6ZSB0aGVtLgotICBQYXRjaCBieSBIYWF2YXJkIFNraW5uZW1vZW4sIDIyIFNlcCAyMDA2Ci0KLSogRml4IGJ1ZmZlciBvdmVyZmxvdyBwcm9ibGVtIGluIGZ0X2J1aWxkLmMKLSAgUGF0Y2ggYnkgRnJlZHJpayBSb3ViZXJ0LCAwOSBPY3QgMjAwNgotCi0qIE1ha2UgYm9vdHAgaW1wbGVtZW50YXRpb24gUkZDMzA0NiBjb21wbGlhbnQKLSAgUGF0Y2ggYnkgSm9ha2ltIExhcnNzb24sIDI3IEp1biAyMDA2Ci0KLSogVFFNNTIwMDogcGVyZm9ybSBQT1NUIG1lbW9yeSB0ZXN0IG9ubHkgb24gU1RLNTJ4eCBjYXJyaWVyIGJvYXJkLgotICAoYW5kIHRoZW4gb25seSBpZiBQU0M2XzMgaXMgcmVhZCBhcyAiMSIgd2hlbiBib290aW5nKS4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMjEgSnVuIDIwMDYKLQotKiBNb3ZlICJhciIgZmxhZ3MgdG8gY29uZmlnLm1rIHRvIGFsbG93IGZvciBzaWxlbnQgIm1ha2UgLXMiCi0gIEJhc2VkIG9uIHBhdGNoIGJ5IE1pa2UgRnJ5c2luZ2VyLCAyMCBKdW4gMjAwNgotCi0qIENvZGluZyBzdHlsZSBjbGVhbnVwCi0KLSogQWRkIHN1cHBvcnQgZm9yIEVQODJ4eE0gYm9hcmRzCi0gIFBhdGNoIGJ5IEFhcm9uIFNlbGxzLCAyMCBKdW4gMjAwNgotCi0qIEZpeCBjb21tZW50cyBpbiBpbmNsdWRlL3BwYzQ0MC5oCi0gIFBhdGNoIGJ5IE1hcnRpbiBIaWNrcywgMTYgSnVuIDIwMDYKLQotKiBVcGRhdGUgZm9yIENBTTUyMDAgYm9hcmQ6Ci0gIC0gTWFwIGluIGEgYWRkaXRpb25hbCBjaGlwIHNlbGVjdHMgQ1M0IGFuZCBDUzUuCi0gIC0gTW9kaWZ5IHRoZSBwb3J0IGNvbmZpZ3JhdGlvbiwgY29uZmlndXJlIHNpeCBVQVJUcyBhbmQgbm8gUENJLAotICAgIEFUQSBhbmQgVVNCLgotICAtIEFkZCBjdXN0b20gZmxhc2ggZHJpdmVyIHRvIGhhbmRsZSBzcGVjaWZpYyBieXRlIHN3YXBwaW5nCi0KLSogRml4IFRMQiBzZXR1cCBmb3IgT2NvdGVhIGJvYXJkCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMzAgU2VwIDIwMDYKLQotKiBGaXggcmVzZXQgcHJvYmxlbSBpbiBzZXF1b2lhIHNkcmFtIGluaXQgY29kZQotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDIzIFNlcCAyMDA2Ci0KLSogRGlzYWJsZSBhdXRvYm9vdCBhYm9ydCBmb3IgRk8zMDAgd2hlbiBzaWxlbnQgbW9kZSBpcyBlbmFibGVkCi0gIChhY2NvcmRpbmcgdG8gUzEgc3dpdGNoIHNldHRpbmcpLgotCi0qIENsZWFudXAgZXhhbXBsZXMgYmluYXJpZXMKLQotKiBBZGQgc3VwcG9ydCBmb3IgQU1DQyBSYWluaWVyIFBQWDQ0MEdSeCBldmFsIGJvYXJkCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTMgU2VwIDIwMDYKLQotKiBBZGQgTkFORCBlbnZpcm9ubWVudCBzdXBwb3J0IGZvciBQUEM0NDBFUHggU2VxdW9pYSBOQU5EIGJvb3QgY29uZmlnCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTIgU2VwIDIwMDYKLQotKiBVcGRhdGUgTkFORCBib290IGRvY3VtZW50YXRpb24KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxMiBTZXAgMjAwNgotCi0qIEZpeCBhbGlnbm1lbnQgcHJvYmxlbSBpbiAibXRkcGFydHMiIGNvbW1hbmQKLQotKiBBZGQgZG9jdW1lbnRhdGlvbiBvbiB0aGUgbGF0ZXN0IGJ1aWxkIGVudmlyb25tZW50IGV4dGVuc2lvbnMgdG8KLSAgdGhlIFJFQURNRSBmaWxlLgotCi0qIFJlbW92ZSBkZWFkIGNvZGUgKGkybyBhbmQgZG1hKSBmcm9tIGNwdS9tcGM4MjR4L2RyaXZlcnMvIGRpcmVjdG9yeS4KLQotKiBGaXggTE9HX0RJUiBkaXJlY3RvcnkgY3JlYXRpb24gZXJyb3IuCi0gIEFkZCBzdXBwb3J0IGZvciBhdXRvbWF0aWMgY3JlYXRpb24gb2YgQlVJTERfRElSIGRpcmVjdG9yeS4KLQotKiBGaXggYnVpbGQgcHJvYmxlbSBjcHUvcHBjNHh4L25kZmMuYwotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IFNlcCAyMDA2Ci0KLSogRml4IGJ1aWxkIHByb2JsZW0gd2l0aCBDUENJNDQwCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDcgU2VwIDIwMDYKLQotKiBDaGFuZ2UgWWVsbG93c3RvbmUgdG8gdXNlIENGSSB3cml0ZSBidWZmZXIKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwNyBTZXAgMjAwNgotCi0qIEFkZCBzdXBwb3J0IGZvciBBTUNDIFNlcXVvaWEgUFBDNDQwRVB4IGV2YWwgYm9hcmQKLSAgLSBBZGQgc3VwcG9ydCBmb3IgUFBDNDQwRVB4ICYgUFBDNDQwR1J4Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIFBQQzQ0MEVQKHgpL0dSKHgpIE5BTkQgY29udHJvbGxlcgotICAgIGluIGNwdS9wcGM0eHggZGlyZWN0b3J5Ci0gIC0gQWRkIE5BTkQgYm9vdCBmdW5jdGlvbmFsaXR5IGZvciBTZXF1b2lhIGJvYXJkLAotICAgIHBsZWFzZSBzZWUgZG9jL1JFQURNRS5uYW5kLWJvb3QtcHBjNDQwIGZvciBkZXRhaWxzCi0gIC0gVGhpcyBTZXF1b2lhIE5BTkQgaW1hZ2UgZG9lc24ndCBzdXBwb3J0IGVudmlyb25tZW50Ci0gICAgaW4gTkFORCBmb3Igbm93LiBUaGlzIHdpbGwgYmUgYWRkZWQgaW4gYSBzaG9ydCB3aGlsZS4KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwNyBTZXAgMjAwNgotCi0qIEZpeCBta2ltYWdlIC1sIGJ1ZyB3aXRoIG11bHRpZmlsZSBpbWFnZXMgb24gNjRiaXQgcGxhdGZvcm1zCi0gIFBhdGNoIGJ5IERhdmlkIFVwZGVncmFmZiwgMDYgU2VwIDIwMDYKLQotKiBGaXggYnVpbGQgcHJvYmxlbXMgb24gc29yY2VyeSBib2FyZC4KLQotKiBGaXggY29sZGZpcmUgYnVpbGQgcHJvYmxlbXMuCi0gIFBhdGNoIGJ5IE1hcmlhbiBCYWxha293aWN6LCAwMSBTZXAgMjAwNgotCi0qIEFkZCBzdXBwb3J0IGZvciBhIHNhdmluZyBidWlsZCBvYmplY3RzIGluIGEgc2VwYXJhdGUgZGlyZWN0b3J5LgotICBNb2RpZmljYXRpb25zIGFyZSBiYXNlZCBvbiB0aGUgTGludXgga2VybmVsIGFwcHJvYWNoIGFuZCBzdXBwb3J0Ci0gIHR3byB1c2UgY2FzZXM6Ci0gIDEpIEFkZCBPPSB0byB0aGUgbWFrZSBjb21tYW5kIGxpbmUgJ21ha2UgTz0vdG1wL2J1aWxkIGFsbCcKLSAgMikgU2V0IGVudmlyb25lbWVudCB2YXJpYWJsZSBCVUlMRF9ESVIgdG8gcG9pbnQgdG8gdGhlIGRlc2lyZWQgbG9jYXRpb24KLQknZXhwb3J0IEJVSUxEX0RJUj0vdG1wL2J1aWxkJwotCSdtYWtlJwotICBUaGUgc2Vjb25kIGFwcHJvYWNoIGNhbiBhbHNvIGJlIHVzZWQgd2l0aCBhIE1BS0VBTEwgc2NyaXB0Ci0JJ2V4cG9ydCBCVUlMRF9ESVI9L3RtcC9idWlsZCcKLQknLi9NQUtFQUxMJwotICBDb21tYW5kIGxpbmUgJ089JyBzZXR0aW5nIG92ZXJyaWRlcyB0aGUgQlVJTERfRElSIGVudmlyb25lbnQgdmFyaWFibGUuCi0gIFdoZW4gbm9uZSBvZiB0aGUgYWJvdmUgbWV0aG9kcyBpcyB1c2VkIHRoZSBsb2NhbCBidWlsZCBpcyBwZXJmb3JtZWQKLSAgYW5kIHRoZSBvYmplY3QgZmlsZXMgYXJlIHBsYWNlZCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4KLQotKiBSZW1vdmUgdGhlIGJvYXJkL25ldHN0YXIvY3JjaXQgYmluYXJ5IGZyb20gZ2l0IHJlcG9zaXRvcnkuCi0KLSogRml4IHRvb2xzL3VwZGF0ZXIgYnVpbGQgZXJyb3IuCi0KLSogRml4IHRvb2xzL2Vhc3lsb2dvIGJ1aWxkIGVycm9yLgotCi0qIEZpeGVkIHByb2JsZW1zIG9uIFBSUzIwMCBib2FyZCBjYXVzZWQgYnkgYWRkaW5nIHNwbGFzaCBzY3JlZW4gb24gTUNDMjAwCi0KLSogRXh0ZW5kZWQgUkVBRE1FIGVudHJ5IG9uIGNvZGluZyBzdHlsZQotCi0qIEFkZGVkIGFub3RoZXIgZXhhbXBsZSBzaG93aW5nIHNpbXBsZSBpbnRlcnJ1cHQgaW50ZXJjZXB0aW9uLgotCi0qIEFkZGVkIHNpbXBsZV9zdHJ0b3VsKCksIGdldGVudigpIGFuZCBzZXRlbnYoKSB0byB0aGUgZXhwb3J0ZWQgZnVuY3Rpb25zLgotICBBbHNvIGJ1bXBlZCB1cCBBQkkgdmVyc2lvbiB0byByZWZsZWN0IHRoaXMgY2hhbmdlLgotCi0qIEFkZGVkIGludGVycnVwdCBoYW5kbGluZyBjYXBhYmlsaXRpZXMgZm9yIG1wYzV4eHggcHJvY2Vzc29ycy4KLSAgQWxzbyBhZGRlZCBMaW51eCBsaWtlIEJVRygpIG1hY3Jvcy4KLQotKiBDb2RpbmcgU3R5bGUgY2xlYW51cC4KLSAgUGF0Y2ggYnkgU3RlZmFubyBCYWJpYywgMzEgQXVnIDIwMDYKLQotKiBBZGQgc3BsYXNoc2NyZWVuIHN1cHBvcnQgZm9yIE1DQzIwMCBib2FyZC4KLQotKiBNYWtlIHRoZSBzZXJpYWwgZHJpdmVyIGZyYW1ld29yayB3b3JrIHdpdGggQ09ORklHX1NFUklBTF9NVUxUSQotICBlbmFibGVkCi0KLSogUENJZSBlbmRwb2ludCBzdXBwb3J0IGZvciBBTUNDIFl1Y2NhIDQ0MFNQZSBib2FyZAotICBQYXRjaCBieSBUaXJ1bWFsYSBSIE1hcnJpLCAyNiBBdWcgMjAwNgotCi0qIEltcHJvdmUgRElNTSBkZXRlY3Rpb24gZm9yIEFNQ0MgWXVjY2EgNDQwU1BlIGJvYXJkCi0gIEltcHJvdmVkIHRoZSBtZW1vcnkgRElNTSBkZXRlY3Rpb24gZm9yIHRoZSBZdWNjYSA0NDBTUGUgYm9hcmQgZm9yCi0gIHRoZSBjYXNlIHdoZXJlIGEgbWVtb3J5IERJTU0gaXMgZmFsc2VseSBkZXRlY3RlZCBhcyBwcmVzZW50LgotICBUaGlzIGlzc3VlIGlzIHNlZW4gb24gc29tZSBBTUNDIFl1Y2NhIDQ0MFNQZSB2YWxpZGF0aW9uIGJvYXJkcyBpZgotICBvbmx5IG9uZSA1MTJNQiBtZW1vcnkgRElNTSBpcyBpbnN0YWxsZWQsIGkuZS4gRElNTSBzbG90IDAgaXMKLSAgcG9wdWxhdGVkIGFuZCBESU1NIHNsb3QgMSBpcyBlbXB0eS4gIEluIHRoaXMgY2FzZSwgVS1Cb290IGRvZXMKLSAgbm90IGNvcnJlY3RseSBkZXRlY3QgdGhhdCB0aGVyZSBpcyBvbmx5IG9uZSBESU1NIG1lbW9yeSBtb2R1bGUKLSAgaW5zdGFsbGVkIGFuZCB3aWxsIGZhbHNlbHkgZGV0ZWN0IHR3byBESU1NIG1lbW9yeSBtb2R1bGVzIGFyZQotICBwcmVzZW50IGFuZCB0aGVyZWZvcmUgVS1Cb290IHdpbGwgbm90IGNhbGN1bGF0ZSB0aGUgY29ycmVjdCBhbW91bnQKLSAgb2YgdG90YWwgbWVtb3J5IGFuZCB1LWJvb3Qgd2lsbCBub3QgYm9vdGluZyB1cC4KLSAgUGF0Y2ggYnkgQWRhbSBHcmFoYW0sIDI0IEF1ZyAyMDA2Ci0KLSogRml4IHR5cG8uCi0KLSogQ29kZSBjbGVhbnVwCi0KLSogVXBkYXRlIGZvciBNQ0MyMDAgLyBQUlMyMDAgYm9hcmRzOgotICAtIGF1dG8tYWRqdXN0IGNvbnNvbGUgZGV2aWNlIGZvciBMaW51eC4KLSAgLSBmaXggdHlwb3MuCi0KLSogQWRkIGEgZml4IGZvciBhIGJ1Z2d5IFVTQiBkZXZpY2Ugb24gdGhlIEZPMzAwIGJvYXJkLgotCi0qIFVwZGF0ZXMgZm9yIE1DQzIwMCAvIFBSUzIwMCBib2FyZHM6Ci0gIC0gc3VwcG9ydCBmb3IgY29uZmlndXJhdGlvbnMgd2l0aCBTRFJBTSBvciBERFIgbWVtb3J5LAotICAtIHN1cHBvcnQgZm9yIGhpZ2hib290IGFuZCBsb3dib290Ci0gIC0gYWRqdXN0aW5nIGVudmlyb25tZW50IGRlZmluaXRpb25zCi0KLSogQWRkIHN1cHBvcnQgZm9yIFdUSyBGTzMwMCBib2FyZCAoVFFNNTIwMCBiYXNlZCkuCi0KLSogRml4IFRRTTgzNHggaGFuZy4KLQotKiBVcGRhdGUgZm9yIFNDNTIwIGJvYXJkLgotICBQYXRjaCBieSBEYXZpZCBVcGRlZ3JhZmYsIDAyIERlYyAyMDA1Ci0KLSogRml4ZWQgY29tbW9uLmggc3BlbGxpbmcgZXJyb3IuCi0gIFBhdGNoIGJ5IENvcnkgVHVzYXIsIDMwIE5vdiAyMDA1Ci0KLSogRml4IHR5cG8uCi0gIFBhdGNoIGJ5IEFuZHJlYXMgRW5nZWwsIDI4IE5vdiAyMDA1Ci0KLSogRml4IGZhdGxvYWQgY29tbWFuZCBvbiBGQVQzMiBmb3JtYXR0ZWQgcGFydGl0aW9ucy4KLSAgUGF0Y2ggYnkgSm9hY2hpbSBKYWVnZXIsIDE4IE5vdiAyMDA1Ci0KLSogRml4IGRyaXZlcnMvZG05MDAwLmMgd2hlbiBjb25maWd1cmVkIGluIDMyIGJpdCBtb2RlLgotICBQYXRjaCBieSBFcmljIEJlbmFyZCwgMTcgTm92IDIwMDUKLQotKiBDbGVhbnVwIGRlYnVnIGNvZGUgZm9yIHl1Y2NhIGJvYXJkLgotCi0qIE1DQzIwMDogcmVzdHJpY3QgYWRkcmVzc2FibGUgZmxhc2ggc3BhY2UgdG8gMzIgTUIKLQotKiBBZGQgZGVidWcgY29uc29sZSBvbiBDT00xMiBmb3IgTUNDMjAwIGJvYXJkCi0KLSogRml4IGNvbnRyb2wtYyBoYW5kaW5nIGluIENPTkZJR19DTURMSU5FX0VESVRJTkcKLSAgUHJvcGVybHkgcGFzcyBicmVhayBjb2RlIGJhY2sgZnJvbSByZWFkbGluZS4KLSAgUGF0Y2ggYnkgUm9nZXIgQmxvZmVsZCwgMzEgSnVsIDIwMDYKLQotKiBBZGQgY29tbWFuZGxpbmUgaGlzdG9yeSBzdXBwb3J0IHRvIGFsbCBBTUNDIGV2YWwgYm9hcmRzCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDcgQXVnIDIwMDYKLQotKiBBZGQgTWFjcm9uaXggTVhMVjMyMFQgZmxhc2ggc3VwcG9ydCBmb3IgQU1DQyBCYW1ib28KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwNyBBdWcgMjAwNgotCi0qIENoYW5nZSAibWlpIGluZm8iIHRvIG5vdCBwcmludCBhbiBlcnJvciB1cG9uIG1pc3NpbmcgUEhZIGF0IGFkZHJlc3MKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwNyBBdWcgMjAwNgotCi0qIEZpeCBQQ0ktRXhwcmVzcyBvbiBQUEM0NDBTUGUgcmV2LiBBLgotCi0qIEZpeCBwcmVib290IG1lc3NhZ2Ugb24gVFFNODV4eCBhZnRlciBzd2l0Y2hpbmcgdG8gaHVzaCBwYXJzZXIuCi0KLSogQWRhcHQgVFFNODV4eCByYW1kaXNrIGFkZHJlc3MgdG8gTGludXgga2VybmVsIG1lbW9yeSBtYXAKLQotKiBBZGQgaW5pdGlhbCBzdXBwb3J0IGZvciBQQ0ktRXhwcmVzcyBvbiBQUEM0NDBTUGUgKFl1Y2NhIGJvYXJkKS4KLQotKiBGaXggY29tcGlsZXIgd2FybmluZyBmb3IgVFJBQiBib2FyZC4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMDcgQXVnIDIwMDYKLQotKiBQcmV2ZW50IFVTQiBjb21tYW5kcyBmcm9tIHdvcmtpbmcgd2hlbiBVU0IgaXMgc3RvcHBlZC4KLQotKiBBZGQgcnVkaW1lbnRhcnkgaGFuZGxpbmcgb2YgYWx0ZXJuYXRlIHNldHRpbmdzIG9mIFVTQiBpbnRlcmZhY2VzLgotICBUaGlzIGlzIGluIG9yZGVyIHRvIGZpeCBpc3N1ZXMgd2l0aCBzb21lIFVTQiBzdGlja3MgdGltaW5nIG91dAotICBkdXJpbmcgaW5pdGlhbGl6YXRpb24uIFNvbWUgY29kZSByZWFkYWJpbGl0eSBpbXByb3ZlbWVudHMuCi0KLSogUFBDNDQwIEREUiBzZXR1cDogU2V0IFNEUkFNMF9DRkcwW1BNVV09MCBmb3IgYmVzdCBwZXJmb3JtYW5jZQotICBBTUNDIHN1Z2dlc3RlZCB0byBzZXQgdGhlIFBNVSBiaXQgdG8gMCBmb3IgYmVzdCBwZXJmb3JtYWNlIG9uCi0gIHRoZSBQUEM0NDAgRERSIGNvbnRyb2xsZXIuCi0gIFBsZWFzZSBzZWUgZG9jL1JFQURNRS40NDAtRERSLXBlcmZvcm1hbmNlIGZvciBkZXRhaWxzLgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDI4IEp1bCAyMDA2Ci0KLSogQU1DQyBiYW1ib28gKDQ0MEVQKSBVLUJvb3QgaW1hZ2UgcmVkdWNlZCB0byAzODRrYnl0ZQotICBQbGVhc2Ugc2VlIGRvYy9SRUFETUUuYmFtYm9vIGZvciBkZXRhaWxzLgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDI3IEp1bCAyMDA2Ci0KLSogRml4IENPTkZJR19DTURMSU5FX0VESVRJTkcgaW1wbGVtZW50YXRpb24KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyNyBKdWwgMjAwNgotCi0qIEZpeCBwcmVib290IG1lc3NhZ2Ugb24gVFFNNTIwMCBhZnRlciBzd2l0Y2hpbmcgdG8gaHVzaCBwYXJzZXIuCi0KLSogTUNDMjAwOiBzZXQgZGVmYXVsdCBjb25maWd1cmF0aW9uIHRvIGxvd19ib290IEREUiwKLSAgYW5kIHN1cHBvcnQgZm9yIGNvbmZpZ3VyYWJsZSBvcHRpb25zIGhpZ2hfYm9vdCBhbmQvb3IgU0RSQU0uCi0KLSogQWRkIHN1cHBvcnQgZm9yIDI1NiBNQiBTRFJBTSBvbiBDUFU4NwotICBQYXRjaCBieSBKb3NlZiBXYWduZXIsIDI1IE5vdiAyMDA1Ci0KLSogQWRkIGNvbmZpZ3VyYXRpb24gZm9yIGNhbTUyMDAgYm9hcmQgKGJhc2VkIG9uIFRRTTUyMDBTKS4KLQotKiBNb3JlIGNvZGUgY2xlYW51cAotCi0qIERpc2FibGVkIGt2bWUwODAgYm9hcmQgaW4gTUFLRUFMTCBiZWNhdXNlIG9mIGJ1aWxkIHByb2JsZW1zLgotCi0qIENvZGUgY2xlYW51cAotCi0qIFVwZGF0ZSBOZXRTdGFyIGJvYXJkCi0gIFBhdGNoIGJ5IExhZGlzbGF2IE1pY2hsLCAwMyBOb3YgMjAwNQotCi0qIE1ha2UgY29kZSBiZXR0ZXIgcmVhZGFibGUuCi0gIFBhdGNoIGJ5IExhZGlzbGF2IE1pY2hsLCAxNCBTZXAgMjAwNQotCi0qIEVuYWJsZSBpbml0cmQgQVRBRyBmb3IgeG0yNTAgYm9hcmQuCi0gIFBhdGNoIGJ5IEpvc2VmIFdhZ25lciwgMDUgU2VwIDIwMDUKLQotKiBBZGQgcmVhZGxpbmUgY21kbGluZS1lZGl0aW5nIGV4dGVuc2lvbgotICBQYXRjaCBieSBKaW5IdWEgTHVvLCAwMSBTZXAgMjAwNQotCi0qIEFkZCBzdXBwb3J0IGZvciBmcmllbmRseS1hcm0gU0JDLTI0MTBYIGJvYXJkCi0gIFBhdGNoIGJ5IEppbkh1YSBMdW8sIDAxIFNlcCAyMDA1Ci0KLSogRml4IG11bHRpLXBhcnQgaW1hZ2Ugc3VwcG9ydCBvbiBpMzg2IHBsYXRmb3JtLgotICBQYXRjaCBieSBEYXZpZCBVcGRlZ3JhZmYsIDE5IEF1ZyAyMDA1Ci0KLSogQWRkIHN1cHBvcnQgZm9yIEtWTUUwODAgYm9hcmQKLSAgUGF0Y2ggYnkgU2FuZ21vb24gS2ltLCAxOCBBdWcgMjAwNQotCi0qIEZpeCBNSVBTIExFIGJ1aWxkIHByb2JsZW0KLSAgUGF0Y2ggYnkgTWF0ZWogS3VwbGplbiwgMTAgQXVnIDIwMDUKLQotKiBDaGVjayBhcmd1bWVudCBjb3VudCBpbiAibWlpIiBjb21tYW5kLgotICBQcm9ibGVtIHBvaW50ZWQgb3V0IGJ5IEFuZHJldyBEeWVyLCAxMyBKdW4gMjAwNQotCi0qIENsZWFudXAgVFFNNTIwMCBib2FyZCBjb25maWd1cmF0aW9uczoKLSAgLSBtYWtlIGhpZ2hib290IGNvbmZpZ3VyYXRpb25zIHVzZSBlbnZpcm9ubWVudCBhdCBoaWdoIGVuZCwgdG9vLAotICAgIHRvIGF2b2lkIGZsYXNoIGZyYWdtZW50YXRpb24KLSAgLSBhbHdheXMgdXNlIHJlZHVuZGFuZCBlbnZpcm9ubWVudAotICAtIGRvbid0IGVuYWJsZSB2aWRlbyBjb2RlIGZvciBtb2R1bGVzIHdpdGhvdXQgZ3JhcGhpY3MgY29udHJvbGxlcgotICAtIHByb3ZpZGUgdXNlZnVsICh0aG91Z2ggZGlmZmVyZW50KSBtdGRwYXJ0cyBzZXR0aW5ncwotICAtIGdldCByaWQgb2YgQ09ORklHX0NTX0FVVE9DT05GIHdoaWNoIHdhcyBhbHdheXMgc2V0IGFueXdheQotCi0qIEV4dGVuZCBta2NvbmZpZyB0b29sIHRvIHByaW50IG1vcmUgdXNlZnVsIHRhcmdldCBuYW1lCi0KLSogQWRkIHN1cHBvcnQgZm9yIGhpZ2gtYm9vdCBvbiBUUU01MjAwIGFuZCBUUU01MjAwUyBib2FyZHMuCi0gIEhpbnQ6IHRoZSBDUExEIG9uIHRoZSBUUU01MjAwIG11c3QgYmUgcHJvZ3JhbW1lZCB3aXRoIGEgc29mdHdhcmUKLSAgdmVyc2lvbiBzdXBwb3J0aW5nIHRoZSBoaWdoIGJvb3Qgb3B0aW9uISBUaGUgbmV3IFRRTTUyMDBTIGlzCi0gIGFscmVhZHkgc3VwcG9ydGluZyB0aGlzIG9wdGlvbi4gT24gdGhlIFRRTTUyMDAgdGhpcyBvcHRpb24gd2lsbCBiZQotICBzdXBwb3J0ZWQgaW4gY29uZmlndXJhdGlvbnMgd2l0aCBNUEM1MjAwIHJldiBCIHByb2Nlc3NvcnMuCi0gIFRvIGFjdHVhbGx5ICJoaWdoIGJvb3QiLCBzZXQganVtcGVyIFgzMCBvbiB0aGUgU1RLNTJ4eC4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMTIgSnVsIDIwMDYKLQotKiBBZGQgc3VwcG9ydCBmb3IgbmV3IFRRTTUyMDAgcmV2aXNpb25zCi0gIC0gU3VwcG9ydCBmb3IgVFFNNTIwMFMgKHNob3J0IHZlcnNpb24gd2l0aG91dCBncmFwaGljIGNvbnRyb2xsZXIpCi0gIC0gU3VwcG9ydCBmb3IgbW9kdWxlcyB3aXRoICdOJyB0eXBlIFMyOUdMMTI4TiBTcGFuc2lvbiBmbGFzaGVzCi0gICAgKHJlcXVpcmVzIGNoYW5nZXMgdG8gZmxhc2ggbGF5b3V0KQotICAtIFN1cHBvcnQgZm9yIE1QQzUyMDBCIGNwdSAobW9zdGx5IHN1cHBvcnQgZm9yIHNlY29uZCBTRFJBTSBiYW5rKQotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAwNyBKdWwgMjAwNgotCi0qIEZpeCBzdXBwb3J0IGZvciBQUy8yIGtleWJvYXJkIG9uIFRRTTg1eHggYm9hcmRzCi0gIFRoZSBQUy8yIGtleW9iYXJkIGRyaXZlciBmb3IgdGhlIFRRTTg1eHggbW9kdWxlcyBvbmx5IHN1cHBvcnRzIHRoZQotICBpbnRlcm5hbCBEVUFSVCBvZiB0aGUgTVBDODV4eCBDUFUuIFNpbmNlIHRoZSBNUEM4NTYwIGRvZXNuJ3QKLSAgaW5jbHVkZSBhIERVQVJULCB0aGUgVFFNODU2MCBtb2R1bGVzIGNhbid0IGJlIHVzZWQgd2l0aCB0aGUgUFMvMgotICBrZXlib2FyZCBjb250cm9sbGVyIG9uIHRoZSBTVEs4NXh4IGJvYXJkLgotICBUaGUgUFMvMiBrZXlib2FyZCBkcml2ZXIgc2hvdWxkIHdvcmsgd2l0aCB0aGUgbW9kdWxlcyBUUU04NTQwLAotICBUUU04NTQxIGFuZCBUUU04NTU1LCBidXQgaXQgb25seSBoYXMgYmVlbiB0ZXN0ZWQgb24gYSBUUU04NTQwLCB5ZXQuCi0gIE1ha2Ugc3VyZSB0aGUgUFMvMiBjb250cm9sbGVyIG9uIHRoZSBTVEs4NXh4IGlzIHByb2dyYW1tZWQuIEp1bXBlcgotICBzZXR0aW5nczogWDY2IDEtMiwgOS0xMDsgWDYxIDItMwotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAyMSBKdW4gMjAwNgotCi0qIEFkanVzdCBSVEMgY2VudHVyeSBoYW5kbGluZyBvbiBTVEs1Mnh4IGJvYXJkIHRvIG1hdGNoIExpbnV4IGRyaXZlci4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMTIgSnVuIDIwMDYKLQotKiBBZGp1c3QgZmlsZW5hbWVzIGZvciBVU0IgdXBkYXRlIGltYWdlcyBvbiBUUkFCIGJvYXJkLgotICBEdXJpbmcgYW4gYXV0b21hdGljIHVwZGF0ZSB2aWEgVVNCIHN0aWNrLCBVLUJvb3Qgc2VhcmNoZXMgZm9yCi0gIGltYWdlcyB3aXRoIHRoZSBuYW1lICJmaXJtd2FyZS5pbWciIGFuZCAia2VybmVsLmltZyIuIFRoaXMgbmFtZXMKLSAgYXJlIG5vdyBjaGFuZ2VkIHRvICJmaXJtd18wMS5pbWciIGFuZCAia2VybmxfMDEuaW1nIi4gVGhpcyBpcyBkb25lLAotICB0byBwcmV2ZW50IHVwZGF0ZXMgb2YgbmV3IGJvYXJkcyAod2l0aCB0aGUgbmV3IG1hY3JvbmljcyAiYyIgc3RlcAotICBmbGFzaGVzKSB3aXRoIG9sZCwgaW5jb21wYXRpYmxlIGZpcm13YXJlIG9yIGtlcm5lbCB2ZXJzaW9ucy4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMjEgSnVuIDIwMDYKLQotKiBCdWdmaXggaW4gVkZEIHJvdXRpbmUgb24gVFJBQiBib2FyZC4KLSAgTWFrZSBzdXJlIHVwcGVyIGxleHQgcGl4ZWwgY2FuIGJlIHNldCB0byBibHVlLCB0b28KLSAgKHNvIGZhciBvbmx5IHJlZCB3YXMgcG9zc2libGUpLgotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAxNSBGZWIgMjAwNgotCi0qIEVuYWJsZSBidWZmZXJlZCBmbGFzaCB3cml0ZXMgZm9yIFRCNTIwMCBib2FyZC4KLQotKiBGaXggc29tZSBidWdzIGluIFRSQUIgYm9hcmQgZmxhc2ggZHJpdmVyLgotICAtIGluY3JlYXNlIENGR19GTEFTSF9FUkFTRV9UT1VUIGZyb20gMiB0byAxNSBzZWNvbmRzCi0gIC0gdXNlIENGR19GTEFTSF9XUklURV9UT1VUIGZvciBwcm9ncmFtbWluZyBpbnN0ZWFkIG9mIENGR19GTEFTSF9FUkFTRV9UT1VUCi0gIC0gcmVtb3ZlICJVbmxvY2sgQnlwYXNzIiBtb2RlLCBiZWNhdXNlIG1hY3Jvbml4IGZsYXNoZXMgZG8gbm90IHN1cHBvcnQKLSAgICB0aGlzIG1vZGUgb2ZmaWNpYWxseQotICAtIGZpeCBmbGFzaCByZXNldCBjb21tYW5kIGZyb20gMHgwMEZGIHRvIDB4MDBGMC4gMHgwMEZGIGlzIG9ubHkgc3BlY2lmaWVkCi0gICAgZm9yIEludGVsIGNvbXBhdGlibGUgZmxhc2hlcywgbm90IGZvciBBTUQgY29tcGF0aWJsZS4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMTUgRmViIDIwMDYKLQotKiBBZGQgYWRkaXRpb25hbCBlcnJvciBtZXNzYWdlcyB0byBmbGFzaCBkcml2ZXIgb24gVFJBQiBib2FyZAotICAoZm9yIGVyYXNlIGVycm9ycyBhbmQgdGltZW91dCBlcnJvcnMpCi0gIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDE0IEZlYiAyMDA2Ci0KLSogQWRkIHN1cHBvcnQgZm9yIFRCNTIwMCBib2FyZAotICBUaGUgVEI1MjAwICgiVGlueWJveCIpIGlzIGEgc21hbGwgYmFzZWJvYXJkIGZvciB0aGUgVFFNNTIwMCBtb2R1bGUKLSAgaW50ZWdyYXRlZCBpbiBhIGxpdHRsZSBhbHVtaW5pdW0gY2FzZS4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgOCBKdW4gMjAwNgotCi0qIEVuYWJsZSBidWZmZXJlZCBmbGFzaCB3cml0ZXMgZm9yIFRRTTUyMDAgYm9hcmQuCi0KLSogRml4IHByb2JsZW1zIHdpdGggU2FuRGlzayBDb3Jwb3JhdGlvbiBDcnV6ZXIgTWljcm8gVVNCIG1lbW9yeSBzdGljay4KLQotKiBBZGQgc3VwcG9ydCBmb3IgVFFNODg1RCBib2FyZC4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMjAgTWFyIDIwMDYKLQotKiBGaXggRkVDIGluaXRpYWxpc2F0aW9uOiBBbGwgTUlJIGNvbmZpZ3VyYXRpb24gaXMgZG9uZSB2aWEgRkVDMQotICByZWdpc3RlcnMsIGJ1dCBNSUlfU1BFRUQgd2FzIGNvbmZpZ3VyZWQgYWNjb3JkaW5nIHRvIEZFQyB1c2VkLiBTbwotICBpZiBvbmx5IEZFQzIgd2FzIHVzZWQsIHRoaXMgY2F1c2VkIHRoZSByZWFsIE1JSV9TUEVFRCByZWdpc3RlciBpbgotICBGRUMxIHRvIHN0YXkgdW5pbml0YWxpc2VkLCBsZXFhZGluZyB0byAibWlpX3NlbmQgU1RVQ0shIiBtZXNzYWdlcy4KLSAgRml4OiBhbHdheXMgY29uZmlndXJlIE1JSV9TUEVFRCBvbiBGRUMxIG9ubHkuCi0gIFBhdGNoIGJ5IE1hcmt1cyBLbG90emJ1ZWNoZXIsIDEyIEp1bCAyMDA2Ci0KLSogQWRkIHN1cHBvcnQgZm9yIFNQQzE5MjAgYm9hcmQuCi0gIFBhdGNoIGJ5IE1hcmt1cyBLbG90emJ1ZWNoZXIsIDEyIEp1bCAyMDA2Ci0KLSogTUNDMjAwIGJvYXJkOiBzdXBwb3J0IGNvbnNvbGUgb24gYW55IG9uZSBvZiB0aGUgUXVhZCBVQVJUIHBvcnRzLgotCi0qIEZpeCBlcnJvciBpbiBmbGFzaCBwcm90ZWN0aW9uIGNhbGN1bGF0aW9uIG9uIE1DQzIwMCBib2FyZC4KLQotKiBNYWpvciBQQ01DSUEgQ2xlYW51cCB0byBtYWtlIGNvZGUgYmV0dGVyIHJlYWRhYmxlIGFuZCBtYWludGFpbmFibGUuCi0gIE5vdGVzOgotICAtIEJvYXJkLWRlcGVuZGVuZCBjb2RlIGZvciBSUFhMSVRFIGFuZCBSUFhDTEFTU0lDLWJhc2VkIGJvYXJkcwotICAgIHBsYWNlZCB0byB0aGUgZHJpdmVycy9ycHhfcG1jaWEuYyBmaWxlIHRvIGF2b2lkIGR1cGxpY2F0aW9uLgotICAgIFNhbWUgZm9yIFRRTTh4eC1iYXNlZCBib2FyZHMgKGRyaXZlcnMvdHFtOHh4X3BtY2lhLmMpLgotICAtIGRyaXZlcnMvaTgyMzY1LmMgaGFzIGJlZW4gc3BsaXQgaW50byB0d28gcGFydHMgbG9jYXRlZCBhdAotICAgIGJvYXJkL2F0Yy90aTExM3guYyBhbmQgYm9hcmQvY3BjNDUvcGQ2NzI5MC5jIChBVEMgYW5kIENQQzQ1IGFyZQotICAgIHRoZSBvbmx5IGJvYXJkcyB1c2luZyBDT05GSUdfODIzNjUpLgotICAtIENoYW5nZXMgd2VyZSB0ZXN0ZWQgZm9yIGNsZWFuIGJ1aWxkIGFuZCAqdmVyeSogKmZldyogYm9hcmRzLgotCi0qIEZpeCB0aW1lciBwcm9ibGVtcyBvbiBBTUNDIHl1Y2NhIGJvYXJkLgotICBTZXQgVGltZXIgQ2xvY2sgU2VsZWN0IHRvIHVzZSBDUFUgY2xvY2sgYXMgYSB0aW1lciBpbnB1dCBzb3VyY2UuCi0KLSogQnJpbmcgeXVjY2EgY29uZmlnIG1vcmUgaW4gbGluZSB3aXRoIG90aGVyIEFNQ0MgYm9hcmRzLgotCi0qIEFkZCBBTUNDIGJhbWJvbyBib2FyZCB0byBNQUtFQUxMIGJ1aWxkIHNjcmlwdC4KLQotKiBGaXggQU1DQyBiYW1ib28gZXZhbCBib2FyZCBjb21waWxhdGlvbiBlcnJvcnMuCi0KLSogQWRkIHN5c3RlbSBtZW1vcnkgdG8gdGhlIFBDSSByZWdpb24gbGlzdCBmb3IgQU1DQyBQUEM0NHggQ1BVcy4KLSAgRW5hYmxlZCBpdCBmb3IgWXVjY2EgYm9hcmQuCi0KLSogQ2xlYW51cCBjb25maWcgZmlsZSBhbmQgYm9vdHVwIG91dHB1dCBmb3IgWXVjY2EgYm9hcmQuCi0KLSogRml4IENPTkZJR180NDBfR1ggZGVmaW5lIHVzYWdlLgotCi0qIFJlbW92ZSBhdXRvZ2VuZXJhdGVkIGJtcF9sb2dvLmggZmlsZS4KLQotKiBBZGQgc3VwcG9ydCBmb3IgQU1DQyA0NDBTUGUgQ1BVIGJhc2VkIGV2YWwgYm9hcmQgKFl1Y2NhKS4KLQotKiBDYWxsIHNlcmlhbF9pbml0aWFsaXplKCkgYmVmb3JlIGZpcnN0IGRlYnVnKCkgaXMgdXNlZC4KLQotKiBDb2RlIGNsZWFudXAKLQotKiBWYXJpb3VzIFVTQiByZWxhdGVkIHBhdGNoZXMKLSAgLSBBZGQgc3VwcG9ydCBmb3IgbXBjOHh4IFVTQiBkZXZpY2UuCi0gIC0gQWRkIHN1cHBvcnQgZm9yIENvbW1vbiBEZXZpY2UgQ2xhc3MgLSBBYnN0cmFjdCBDb250cm9sIE1vZGVsIFVTQiBjb25zb2xlLgotICAtIEFkZCBzdXBwb3J0IGZvciBmbG93IGNvbnRyb2wgaW4gVVNCIHNsYXZlIGRldmljZXMuCi0gIC0gQWRkIHN1cHBvcnQgZm9yIHN3aXRjaGluZyBiZXR3ZWVuIGdzZXJpYWwgYW5kIGNkY19hY20gdXNpbmcgZW52aXJvbm1lbnQuCi0gIC0gTWlub3IgY2hhbmdlcyB0byB1c2JkY29yZV9vbWFwMTUxMC5jIHVzYmRjb3JlX29tYXAxNTEwLmgKLSAgLSBVcGRhdGUgdXNiY29yZSBzbGlnaHRseSB0byBlYXNlIGhvc3QgZW51bWVyYXRpb24uCi0gIC0gRml4IG5vbi1wb3J0YWJsZSBlbmRpYW4gcHJvYmxlbXMgaW4gdXNiZGNvcmUgYW5kIHVzYmRjb3JlX2VwMC4KLSAgLSBBZGQgQWRkZXJVU0JfY29uZmlnIGFzIGEgZGVmY29uZmlnIHRvIGVuYWJsZSB1c2FnZSBvZiB0aGUgVVNCIGNvbnNvbGUKLSAgICBieSBkZWZhdWx0IHdpdGggdGhlIEFkZGVyODd4IFUtQm9vdCBwb3J0LgotICBQYXRjaCBieSBCcnlhbiBPJ0Rvbm9naHVlIDxib2Rvbm9naHVlQGNvZGVoZXJtaXQuaWU+LCAyOSBNYXkgMjAwNgotCi0qIENsZWFudXAgdHJhYiBib2FyZCBmb3IgR0NDLTQueAotCi0qIFZvaWNlQmx1ZSB1cGRhdGU6IHVzZSBuZXcgTVREIGZsYXNoIHBhcnRpdGlvbmluZyBtZXRob2RzLCB1c2UgbW9yZQotICByZWFzb25hYmxlIFRFWFRfQkFTRSwgdXBkYXRlIGRlZmF1bHQgZW52aXJvbm1lbnQgYW5kIGVuYWJsZSBrZXllZAotICBhdXRvYm9vdC4KLSAgUGF0Y2ggYnkgTGFkaXNsYXYgTWljaGwsIDE2LiBBdWcgMjAwNQotCi0qIEFkZCBmb3Jnb3R0ZW4gY2hhbmdlcyBmb3IgdGhlIFBMRUIgMiBCb2FyZC4KLSAgUGF0Y2ggYnkgRGF2aWQgU25vd2RvbiwgMTMuIEF1ZyAyMDA1Ci0KLSogQWRkIHN1cHBvcnQgZm9yIHdyUFBNQzd4eC83NHh4IGJvYXJkcwotICBQYXRjaCBieSBSaWNoYXJkIERhbnRlciwgMTIgQXVnIDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgZ3RoMiBib2FyZAotICBQYXRjaCBieSBUaG9tYXMgTGFuZ2UsIEF1ZyAxMSAyMDA1Ci0KLSogQWRkIHN1cHBvcnQgZm9yIENPTkZJR19TRVJJQUxfTVVMVEkgb24gTVBDNXh4eAotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCA4IEp1biAyMDA2Ci0KLSAgVGhpcyBwYXRjaCBzdXBwb3J0cyB0d28gc2VyaWFsIGNvbnNvbGVzIG9uIGJvYXJkcyB3aXRoCi0gIGEgTVBDNXh4eCBDUFUuIFRoZSBjb25zb2xlIGNhbiBiZSBzd2l0Y2hlZCBhdCBydW50aW1lCi0gIGJ5IHNldHRpbmcgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIHRvIHRoZSBkZXNpcmVkIHNlcmlhbAotICBpbnRlcmZhY2UgKHNlcmlhbDAgb3Igc2VyaWFsMSkuIFRoZSBQU0NzIHRvIGJlIHVzZWQgYXMKLSAgY29uc29sZSBwb3J0IGFyZSBkZWZpbmRlZCBieSBDT05GSUdfUFNDX0NPTlNPTEUKLSAgYW5kIENPTkZJR19QU0NfQ09OU09MRTIuCi0gIFNlZSBSRUFETUUuc2VyaWFsX211bHRpIGZvciBkZXRhaWxzLgotCi0qIEJ1Z2ZpeCBpbiBJMkMgaW5pdGlhbGlzYXRpb24gb24gUzNDMjQwMC4KLSAgSWYgdGhlIGJ1cyBpcyBibG9ja2VkIGJlY2F1c2Ugb2YgYSBwcmV2aW91c2x5IGludGVycnVwdGVkCi0gIHRyYW5zZmVyLCB1cCB0byBlbGV2ZW4gY2xvY2tzIGFyZSBnZW5lcmF0ZWQgb24gdGhlIEkyQ1NDTAotICBsaW5lIHRvIGNvbXBsZXRlIHRoZSB0cmFuc2ZlciBhbmQgdG8gZnJlZSB0aGUgYnVzLgotICBXaXRoIHRoaXMgZml4IHBpbiBJMkNTQ0wgKFBHNikgaXMgcmVhbGx5IGNvbmZpZ3VyZWQgYXMgR1BJTwotICBzbyB0aGUgY2xvY2sgcHVsc2VzIGFyZSByZWFsbHkgZ2VuZXJhdGVkLgotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAwNCBBcHIgMjAwNgotCi0qIEZpeCBERFI2IGVycmF0YSBvbiBUUU04MzR4IGJvYXJkcwotICBQYXRjaCBieSBUaG9tYXMgV2FlaG5lciwgMDcgTWFyIDIwMDYKLQotKiBSZW1vdmUgb2Jzb2xldGUgZmxhc2ggZHJpdmVyIGJvYXJkL3RxbTUyMDAvZmxhc2guYwotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAxMSBKYW4gMjAwNgotCi0qIFVwZGF0ZSBjb25maWd1cmF0aW9uIGZvciBDTUMtUFUyIGJvYXJkCi0gIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDE3IE5vdiAyMDA1Ci0KLSogQWRkIHN1cHBvcnQgZm9yIFBTLzIga2V5Ym9hcmQgb24gVFFNODV4eCBib2FyZAotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAwNyBOb3YgMjAwNQotCi0gIFRlc3RlZCBvbiBhIFNUSzg1WFggYmFzZWJvYXJkLiBNYWtlIHN1cmUgdGhlIFBTLzIgY29udHJvbGxlcgotICBoYXMgYmVlbiBwcm9ncmFtbWVkLiBKdW1wZXIgU2V0dGluZ3M6IFg2NiAxLTIsIDktMTA7IFg2MSAyLTMKLQotKiBGaXggVFJBQiBjaGFubmVsIHN3aXRjaGluZyBkZWxheSBmb3IgdHJhYl9ma3QuYmluIHN0YW5kYWxvbmUgYXBwbGlrYXRpb24KLSAgSW4gdHNjMjAwMF9yZWFkX2NoYW5uZWwoKSB0aGUgZGVsYXkgYWZ0ZXIgc2V0dGluZyB0aGUgbXVsdGlwbGV4ZXIKLSAgdG8gYSB0ZW1wZXJhdHVyZSBjaGFubmVsIGlzIGluY3JlYXNlZCBmcm9tIDEsNSBtcyB0byAxMCBtcy4gVGhpcwotICBpcyB0byBhbGxvdyB0aGUgbXVsdGlwbGV4ZXIgaW5wdXRzIHRvIHN0YWJpbGl6ZSBhZnRlciBodWdlIHN0ZXBzCi0gIG9mIHRoZSBpbnB1dCBzaWduYWwgbGV2ZWwuCi0gIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDA4IE5vdiAyMDA1Ci0KLSogQWRqdXN0IFRRTTUyMDAgbWFrZSB0YXJnZXRzCi0gIE1ha2UgdGhlIGF1dG9tYXRpYyBDUyBjb25maWd1cmF0aW9uIHRoZSBkZWZhdWx0LgotICBUaGUgZGVkaWNhdGVkIGNvbmZpZ3VyYXRpb25zIENPTkZJR19UUU01MjAwX0FBLCBDT05GSUdfVFFNNTIwMF9BQgotICBhbmQgQ09ORklHX1RRTTUyMDBfQUMgYXJlIHJlbW92ZWQuCi0gICJUUU01MjAwX2NvbmZpZyIgaXMgbm93IHRoZSBkZWZhdWx0IGZvciBTVEs1MlhYLjIwMCBiYXNlIGJvYXJkcy4KLSAgT24gYSBTVEs1MlhYLjEwMCBiYXNlIGJvYXJkICJUUU01MjAwX1NUSzEwMF9jb25maWciIG11c3QgYmUgdXNlZC4KLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMDcgTm92IDIwMDUKLQotKiBGaXggc2V0dGluZyBvZiBlbnZpcm9ubWVudCB2YXJpYWJsZSAidmVyIiBvbiB0cmFiIGJvYXJkCi0gIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAidmVyIiBpcyBub3cgc2V0IGJlZm9yZQotICBkb19hdXRvX3VwZGF0ZSgpIGlzIGNhbGxlZCwgc28gdGhhdCAidmVyIiBjYW4gYmUgdXNlZAotICBpbiBVU0IgdXBkYXRlIHNjcmlwdHMuCi0gIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDI3IE9jdCAyMDA1Ci0KLSogRml4IHdyb25nIHVzYWdlIG9mIHVkZWxheSgpIGluIGxlZF9ibGluaygpIG9uIHRyYWIgYm9hcmQKLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMjcgT2N0IDIwMDUKLQotKiBGaXggdWRlbGF5IGJ1ZyBpbiB2ZmQuYyBmb3IgdHJhYiBib2FyZAotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAyNyBPY3QgMjAwNQotCi0qIERpc2FibGUgSkZGUzIgc3VwcG9ydCBmb3IgdHJhYiBib2FyZAotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAyNyBPY3QgMjAwNQotCi0qIENoYW5nZSBtdGRwYXJ0cyBkZWZpbml0aW9uIG9uIHRyYWIgYm9hcmQgdG8gbWF0Y2ggY3VycmVudCBmbGFzaCBtYXAKLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMjcgT2N0IDIwMDUKLQotKiBGaXggbWVtb3J5IGluaXQgcHJvYmxlbXMgb24gTUNDMjAwIGJvYXJkCi0KLSogRml4IEl4RXRoREIuaCB0byBjb21waWxlIGFnYWluCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTQgSnVuIDIwMDYKLQotKiBNaW5vciBjbGVhbnVwIGZvciBQQ1M0NDBFUCBib2FyZAotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDEzIEp1biAyMDA2Ci0KLSogQWRkIE1DRjUyODIgc3VwcG9ydCAod2l0aG91dCBwcmVsb2FkZXIpCi0gIHJlbG9jYXRlIGljaGFjaGVfU3RhdGUgdG8gcmFtCi0gIHUtYm9vdCBjYW4gcnVuIGZyb20gaW50ZXJuYWwgZmxhc2gKLSAgQWRkIEVCK01DRi1FVjEyMyBib2FyZCBzdXBwb3J0LgotICBBZGQgbTY4ayBCb2FyZHMgdG8gTUFLRUFMTAotICBQYXRjaCBmcm9tIEplbnMgU2NoYXJzaWcsIDA4IEF1ZyAyMDA1Ci0KLSogTmlvcyBJSSAtIEFkZCBBbHRlcmEgRVAxQzIwLCBFUDFTMTAgYW5kIEVQMVM0MCBib2FyZHMKLSAgUGF0Y2ggYnkgU2NvdHQgTWNOdXR0LCAwOCBKdW4gMjAwNgotCi0qIE5pb3MgSUkgLSBBZGQgRVBDUyBDb250cm9sbGVyIGJvb3Ryb20gd29yay1hcm91bmQKLSAgLVdoZW4gYm9vdGluZyBmcm9tIGFuIGVwY3MgY29udHJvbGxlciwgdGhlIGVwY3MgYm9vdHJvbSBtYXkgbGVhdmUgdGhlCi0gIHNsYXZlIHNlbGVjdCBpbiBhbiBhc3NlcnRlZCBzdGF0ZSBjYXVzaW5nIHNvZnQgcmVzZXQgaGFuZy4gVGhpcwotICBwYXRjaCBlbnN1cmVzIHNsYXZlIHNlbGVjdCBpcyBuZWdhdGVkIGF0IHJlc2V0LgotICBQYXRjaCBieSBTY290dCBNY051dHQsIDA4IEp1biAyMDA2Ci0KLSogVXBkYXRlIFBLMUMyMCBib2FyZAotICAtVXBkYXRlIGJhc2UgYWRkcmVzc2VzIGZvciBzdGFuZGFyZCBjb25maWd1cmF0aW9uCi0gIC1FbGltaW5hdGUgdXNlIG9mIENBQ0hFX0JZUEFTUyBpbiBib2FyZCBjb2RlCi0gIFBhdGNoIGJ5IFNjb3R0IE1jTnV0dCwgMDggSnVuIDIwMDYKLQotKiBOaW9zIElJIC0gRml4IEkvTyBNYWNyb3MgYW5kIG1pbmktYXBwIHN0dWJzCi0gIC1GaXggYXNtL2lvLmggbWFjcm9zCi0gIC1FbGltaW5hdGUgdXNlIG9mIENBQ0hFX0JZUEFTUyBpbiBjcHUgY29kZQotICAtRWxpbWluYXRlIGFzc2VtYmxlciB3YXJuaW5ncwotICAtRml4IG1pbmktYXBwIHN0dWJzIGFuZCBmb3JjZSBubyBzbWFsbCBkYXRhCi0gIFBhdGNoIGJ5IFNjb3R0IE1jTnV0dCwgMDggSnVuIDIwMDYKLQotKiBGaXggVS1Cb290IGVudmlyb25tZW50IHNlY3RvciBwcm90ZWN0aW9uIG9uIE1DQzIwMCBib2FyZAotCi0qIE1pbm9yIGNsZWFudXAgZm9yIFBDUzQ0MEVQIGJvYXJkCi0KLSogVXBkYXRlIFBDUzQ0MEVQIHBvcnQgdG8gZml0IGludG8gb25lIGZsYXNoIGRldmljZSAoaW5jbC4gZW52aXJvbm1lbnQpCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDYgSnVuIDIwMDYKLQotKiBBZGQgc3VwcG9ydCBmb3IgUENTNDQwRVAgYm9hcmQKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwMiBKdW4gMjAwNgotCi0qIEZpeCBleGFtcGxlcy9NYWtlZmlsZTsgc29tZSBidWlsZCB0YXJnZXRzIHdlcmUgbG9zdAotCi0qIEZpeCB3YXRjaGRvZyBoYW5kbGluZyBpbiBDRkkgZmxhc2ggZHJpdmVyCi0gIEp1c3QgdXNlIHVkZWxheSgpIHdoZW4gd2FpdGluZyBmb3Igc3RhdHVzIGNoYW5nZXMgd2hpY2ggd2lsbAotICBpbXBsaWNpdGVseSB0cmlnZ2VyIHRoZSB3YXRjaGRvZy4KLQotKiBGaXggUENJIHRvIG1lbW9yeSB3aW5kb3cgc2l6ZSBwcm9ibGVtcyBvbiBQTTgyeCBib2FyZHMKLSAgV2UgdXNlIHRoZSAiYXV0b21hdGljIiBtb2RlIHRoYXQgd2FzIHVzZWQgZm9yICB0aGUgIE1QQzgyNjZBRFMgIGFuZAotICBNUEM4MjcyIGJvYXJkcy4gRXZlbnR1YWxseSB0aGlzIHNob3VsZCBiZSB1c2VkIG9uIGFsbCBib2FyZHM/XQotICBQYXRjaCBieSBXb2xmZ2FuZyBHcmFuZGVnZ2VyLCAxNyBKYW4gMjAwNgotCi0qIENvcnJlY3QgR1BJTyBzZXR1cCAoVUFSVDEvSVJRJ3MpIG9uIHlvc2VtaXRlICYgeWVsbG93c3RvbmUKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyOSBNYXkgMjAwNgotCi0qIFVwZGF0ZSBJbnRlbCBJWFA0eHggc3VwcG9ydAotICAtIEFkZCBJWFA0eHggTlBFIGV0aGVybmV0IE1BQyBzdXBwb3J0Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIEludGVsIElYRFBHNDI1IGJvYXJkCi0gIC0gQWRkIHN1cHBvcnQgZm9yIFByb2RyaXZlIFBETkIzIGJvYXJkCi0gIC0gQWRkIElSUSBzdXBwb3J0Ci0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjMgTWF5IDIwMDYKLQotKiBGaXggcHJvYmxlbSBpbiBQVlIgZGV0ZWN0aW9uIGZvciA0NDBHUgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE4IE1heSAyMDA2Ci0KLSogRml4IGdjYyAzLjQueCBBRkxBR1Mgc2V0dGluZyBmb3IgbTY4ayBwbGF0Zm9ybS4KLQotKiBFbmFibGUgYXV0b2Jvb3QgZm9yIE01MjcxRVZCIGJvYXJkLgotCi0qIENoYW5nZWQgZGVmYXVsdCByYW1kaXNrIGFkZHIgaW4geW9zZW1pdGUveWVsbG93c3RvbmUgcG9ydHMKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxNSBNYXkgMjAwNgotCi0qIEZpeCBQQ01DSUEgc3VwcG9ydCBvbiB2aXJ0bGFiMgotCi0qIEFkZCBzdXBwb3J0IGZvciBWaXJ0TGFiMiBib2FyZAotICAobmVlZGVkIGJlY2F1c2Ugb2YgZGlmZmVyZW5jZXMgaW4gdGhlIFBDTUNJQSBoYXJkd2FyZSkuCi0KLSogTWlub3IgY2xlYW51cC4KLQotKiBVcGRhdGUgeW9zZW1pdGUgY29uZmlndXJhdGlvbiB0byBlbmFibGUgZmxhc2ggd3JpdGUgYnVmZmVyIHN1cHBvcnQKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxMCBNYXkgMjAwNgotCi0qIEZpeCBjb21waWxlIHdhcm5pbmdzIGluIGNvbW1vbi94eXpNb2RlbS5jCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTAgTWF5IDIwMDYKLQotKiBBZGQgc3VwcG9ydCBmb3IgQU1DQyA0NDBFUCBSZXYgQyBhbmQgNDQwR1IgUmV2IEIKLSAgUGF0Y2ggYnkgSm9obiBPdGtlbiwgMDggTWF5IDIwMDYKLQotKiBPTUFQIDU5MTIvT1NLOiB1cGRhdGUgRU1JRlMgQ1MxIHRpbWluZ3M6Ci0gIFByb2JsZW1zIGhhdmUgYmVlbiBzZWVuIGluIHRoZSBsaW51eCBrZXJuZWwncyBzbWM5MXggbmV0d29yayBkcml2ZXIKLSAgZHVlIHRvIGltcHJvcGVyIGJ1cyB0aW1pbmdzLiAgVGhlIGxhdGVzdCAyLjYgT01BUCBrZXJuZWxzIGN1cnJlbnRseQotICBoYXZlIGEgd29ya2Fyb3VuZCwgYnV0IHRoaXMgZml4IGJlbG9uZ3MgaW4gdS1ib290LgotICBQYXRjaCBieSBLZXZpbiBIaWxtYW4sIDEzIE9jdCAyMDA1Ci0KLSogRml4IFJFR19NUFVfTE9BRF9USU1FUiBkZWZpbml0aW9uIGluIG11bHRpcGxlIE9NQVAgcG9ydHMKLSAgUGF0Y2ggYnkgSGlyb2tpIEthbWluYWdhLCAxMSBNYXIgMjAwNgotCi0qIFVwZGF0ZSBvbWFwNTkxMm9zayBib2FyZCBzdXBwb3J0Ci0gIC0gRml4IE9NQVAgc3VwcG9ydCB0aGF0IG9tYXA1OTEyb3NrIGNvbXBpbGVzIGluIGN1cnJlbnQgc291cmNlIHRyZWUKLSAgLSBVcGRhdGUgd2l0aCBjb2RlIGZyb20gImh0dHA6Ly9vbWFwLnNwZWN0cnVtZGlnaXRhbC5jb20vb3NrNTkxMiIKLSAgICB0byBmaXggcHJvYmxlbXMgd2l0aCBERFIgaW5pdGlhbGl6YXRpb24KLSAgLSBGaXggdGltZXIgc2V0dXAKLSAgLSBVc2UgQ0ZJIGZsYXNoIGRyaXZlciBhbmQgc3VwcG9ydCBjb21wbGV0ZSAzMk1CIG9mIG9uYm9hcmQgZmxhc2gKLSAgLSBBZGQgInByaW50X2NwdWluZm8oKSIgYW5kICJjaGVja2JvYXJkKCkiIGZ1bmN0aW9ucyB0byBkaXNwbGF5Ci0gICAgQ1BVICh3aXRoIGZyZXF1ZW5jeSkgYW5kIEJvYXJkIGluZm9zCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTAgTWF5IDIwMDYKLQotKiBGaXggd2F0Y2hkb2cgaXNzdWVzIGZvciBDb2xkRmlyZSBib2FyZHMuCi0KLSogQWRkIE01MjcxRVZCIGJvYXJkIHN1cHBvcnQuCi0KLSogTWFrZSBSNTIwMCBzcGVjaWZpYyBsb3cgbGV2ZWwgaW5pdGlhbGl6YXRpb24gYm9hcmQgY29uZGl0aW9uYWwuCi0KLSogVXBkYXRlIENQVSB0YXJnZXQgaWRlbnRpZmljYXRpb24gc3RyaW5ncyBmb3IgQ29sZEZpcmUgZmFtaWx5LgotCi0qIFVwZGF0ZSByZWdpc3RlciBkZWZpbml0aW9ucyBmb3IgTUNGNTI3MS4KLQotKiBGaXggc2VyaWFsIGNvbnNvbGUgc3VwcG9ydCBmb3IgTUNGNTI3MS4KLQotKiBGaXhlcyBmb3IgZ2NjIDMuNCBiYXNlZCBtNjhrIHRvb2xjaGFpbiwKLSAgYmFzZWQgb24gcGF0Y2ggYnkgSmF0ZSBTdWpqYXZhbmljaC4KLQotKiBGaXggbG93Ym9vdCBzdXBwb3J0IG9uIE1DQzIwMCBib2FyZAotCi0qIE1lcmdlZCBNUEM4MzQ5QURTIGFuZCBNUEM4MzQ5RU1EUyBwb3J0cyBpbnRvIE1QQzgzNDlFTURTIHBvcnQ6Ci0gIC0gUmVtb3ZlZCBNUEM4MzQ5QURTIHBvcnQKLSAgLSBBZGRlZCBQQ0kgc3VwcG9ydCB0byBNUEM4MzQ5QURTCi0gIC0gcmV3b3JrZWQgbWVtb3J5IG1hcCB0byBhbGxvdyBtYXBwaW5nIG9mIGFsbCByZWdpb25zIHdpdGggQkFUcwotICBQYXRjaCBieSBLdW1hciBHYWxhLCAyMCBBcHIgMjAwNgotCi0qIENvZGluZyBTdHlsZSBjbGVhbnVwCi0KLSogV3JpdGUgUlRDIHNlY29uZHMgZmlyc3QgdG8gbWFpbnRhaW4gc2V0dGluZ3MgaW50ZWdyaXR5IHBlcgotICBNYXhpbS9EYWxsYXMgRFMxMzA2IGRhdGEgc2hlZXQuCi0gIFBhdGNoIGJ5IEFsYW4gSi4gTHVzZSwgMDIgTWF5IDIwMDYKLQotKiBTY2hlZHVsZWQgZm9yIHJlbW92YWw6IHN0cm5pY21wKCkgd2hpY2ggaXMgdW51c2VkCi0KLSogVXBkYXRlIGZvciBJbnRlbCBNb25haGFucyBib2FyZHM6Ci0gIC0gc3VwcG9ydCBmb3IgbWFnaWMga2V5IGRldGVjdGlvbiBhbmQgaGFuZGxpbmcgb24gZGVsdGEgYm9hcmQKLSAgLSBOQU5EIHN1cHBvcnQgZm9yIHp5bG9uaXRlIGJvYXJkICsgc29tZSBtaW5vciBjbGVhbnVwCi0KLSogRGVjbGFyZSBsb2FkX3NlcmlhbF95bW9kZW0oKSB3aGVuIHVzaW5nIENGR19DTURfTE9BREIuCi0gIFBhdGNoIGJ5IEpvbiBMb2VsaWdlciwgMDEgTWF5IDIwMDYKLQotKiBGaXhlZCBoYW5kbGluZyBvZiBiYWQgY2hlY2tzdW1zIHdpdGggIm1raW1hZ2UgLWwiCi0KLSogQWRkZWQgc3VwcG9ydCBmb3IgQkMzNDUwIGJvYXJkCi0gIFBhdGNoIGJ5IFN0ZWZhbiBTdHJvYmwsIDIxIE9jdCAyMDA1Ci0KLSogVXBkYXRlIGZvciBOQzY1MCBib2FyZDoKLSAgLSBTdXBwb3J0IHJldjEgYW5kIHJldjIgaGFyZHdhcmUKLSAgLSBhZGFwdCB0byBuZXcgTkFORCBsYXllcgotICAtIGFkZCBDUDg1MCBjb25maWd1cmF0aW9uIGJhc2VkIG9uIE5DNjUwCi0KLSogTVBDNTIwMDogZW5hYmxlIHNub29waW5nIG9mIERNQSB0cmFuc2FjdGlvbnMgb24gWExCIGV2ZW4gaWYgbm8gUENJCi0gIGlzIGNvbmZpZ3VyZWQ7IG90aHJ3aXNlIERNQSBhY2Nlc3NlcyBhcmVuJ3QgY2FjaGUgY29oZXJlbnQgd2hpY2gKLSAgY2F1c2VzIGZvciBleGFtcGxlIFVTQiB0byBmYWlsLgotCi0qIFNvbWUgY29kZSBjbGVhbnVwCi0KLSogRml4IGRiYXUxeDAwIGJvYXJkcyBicm9rZW4gYnkgZGJhdTE1NTAgcGF0Y2gKLSAgUExMOnMgd2VyZSBub3Qgc2V0IGZvciBib2FyZHMgb3RoZXIgdGhhbiAxNTUwLgotICBGbGFzaCBDRkkgY2F1c2VkIGNhcmQgdG8gaGFuZyBkdWUgdG8gdW5kZWZpbmVkIENGR19GTEFTSF9CQU5LU19MSVNULgotICBEZWZhdWx0IGJvb3QgaXMgbm93IGJvb3RwIGZvciBjYXJkcyBvdGhlciB0aGFuIDE1NTAuCi0gIFBhdGNoIGJ5IFRob21hcyBMYW5nZSwgMTAgQXVnIDIwMDUKLQotKiBGaXhlcyBjb21tb24vY21kX2ZsYXNoLmM6Ci0gIC0gZml4IHNvbWUgY29tcGlsZXIvcGFyc2VyIGVycm9yLCBpZiB1c2luZyBtNjhrIHRvb2wgY2hhaW4KLSAgLSBvcHRpY2FsIGZpeCBmb3IgcHJvdGVjdCBvbi9vZmYgYWxsIG1lc3NhZ2VzLCBpZiB1c2luZyBtb3JlCi0gICAgdGhlbiBvbmUgYmFuawotICBQYXRjaCBieSBKZW5zIFNjaGFyc2lnLCAyOCBKdWwgMjAwNQotCi0qIEZpeCBRdWFkIFVBUlQgbWFwcGluZyBvbiBNQ0MyMDAgYm9hcmQgZHVlIHRvIG5ldyBIVyByZXZpc2lvbgotCi0qIEZpeCBKRkZTMiBzdXBwb3J0IGZvciBsZWdhY3kgTkFORCBkcml2ZXIuCi0KLSogUmVtb3ZlIGRlcGVuZGVuY2llcyBiZXR3ZWVuIERvQyBjb2RlIGFuZCBvbGQgbGVnYWN5IE5BTkQgZHJpdmVyLgotCi0qIEZpeCBQTTgyOF9QQ0kgdGFyZ2V0LCBmb3Igd2hpY2ggUENJIHdhcyAqbm90KiBjb25maWd1cmVkIGluLgotCi0qIEZpeCBMaXRlNTIwMEIgc3VwcG9ydDogaW5pdGlhbGl6ZSBTRGVsYXkgcmVnaXN0ZXIKLSAgU2VlIEZyZWVzY2FsZSdzIEFOMzIyMSAiTVBDNTIwMEIgU0RSQU0gSW5pdGlhbGl6YXRpb24gYW5kCi0gIENvbmZpZ3VyYXRpb24iLCAzLjMuMSBTRGVsYXktLU1CQVIgKyAweDAxOTAKLQotKiBDaGFuZ2VzL2ZpeGVzIGZvciBkcml2ZXJzL2NmaV9mbGFzaC5jOgotCi0gIC0gQWRkIEludGVsIGxlZ2FjeSBsb2NrL3VubG9jayBzdXBwb3J0IHRvIGNvbW1vbiBDRkkgZHJpdmVyCi0KLSAgICBPbiBzb21lIEludGVsIGZsYXNoJ3MgKGUuZy4gSW50ZWwgSjMpIGxlZ2FjeSB1bmxvY2tpbmcgaXMKLSAgICBzdXBwb3J0ZWQsIG1lYW5pbmcgdGhhdCB1bmxvY2tpbmcgb2Ygb25lIHNlY3RvciB3aWxsIHVubG9jawotICAgIGFsbCBzZWN0b3JzIG9mIHRoaXMgYmFuay4gVXNpbmcgdGhpcyBmZWF0dXJlLCB1bmxvY2tpbmcKLSAgICBvZiBhbGwgc2VjdG9ycyB1cG9uIHN0YXJ0dXAgKHZpYSBlbnYgdmFyICJ1bmxvY2s9eWVzIikgd2lsbAotICAgIGdldCBtdWNoIGZhc3Rlci4KLQotICAtIEZpeGVkIHByb2JsZW0gd2l0aCBtdWx0aXBsZSByZWFkcyBvZiBlbnZyb25tZW50IHZhcmlhYmxlCi0gICAgInVubG9jayIgYXMgcG9pbnRlZCBvdXQgYnkgUmVpbmhhcmQgQXJsdCAmIEFuZGVycyBMYXJzZW4uCi0KLSAgLSBSZW1vdmVkIHVud2FudGVkIGxpbmVmZWVkcyBmcm9tICJwcm90ZWN0IiBjb21tYW5kIHdoZW4KLSAgICBDRkdfRkxBU0hfUFJPVEVDVElPTiBpcyBlbmFibGVkLgotCi0gIC0gQ2hhbmdlZCBwM3A0MDAgYm9hcmQgdG8gdXNlIENGR19GTEFTSF9QUk9URUNUSU9OCi0KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwMSBBcHIgMjAwNgotCi0qIENoYW5nZXMvZml4ZXMgZm9yIGRyaXZlcnMvY2ZpX2ZsYXNoLmM6Ci0gIC0gQ29ycmVjdGx5IGhhbmRsZSB0aGUgY2FzZXMgd2hlcmUgQ0ZHX0haICE9IDEwMDAgKHNldmVyYWwKLSAgICBYU2NhbGUtYmFzZWQgYm9hcmRzKQotICAtIEZpeCB0aGUgdGltZW91dCBjYWxjdWxhdGlvbiBvZiBidWZmZXJlZCB3cml0ZXMgKG9mZiBieSBhCi0gICAgZmFjdG9yIG9mIDEwMDApCi0gIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDMxIE1hciAyMDA2Ci0KLSogVXBkYXRlcyB0byBjb21tb24gUFBDNHh4IG9uYm9hcmQgKEREUilTRFJBTSBpbml0IGNvZGUgKDQwNSBhbmQgNDQwKQotCi0gIDQwNSBTRFJBTTogLSBUaGUgU0RSQU0gcGFyYW1ldGVycyBjYW4gbm93IGJlIGRlZmluZWQgaW4gdGhlIGJvYXJkCi0JICAgICAgIGNvbmZpZyBmaWxlIGFuZCB0aGUgNDA1IFNEUkFNIGNvbnRyb2xsZXIgdmFsdWVzIHdpbGwKLQkgICAgICAgYmUgY2FsY3VsYXRlZCB1cG9uIGJvb3R1cCAoc2VlIFBQQ2hhbWVsZW9uRVZCKS4KLQkgICAgICAgV2hlbiB0aG9zZSBzZXR0aW5ncyBhcmUgbm90IGRlZmluZWQgaW4gdGhlIGJvYXJkCi0JICAgICAgIGNvbmZpZyBmaWxlLCB0aGUgcmVnaXN0ZXIgc2V0dXAgd2lsbCBiZSBhcyBpdCBpcyBub3csCi0JICAgICAgIHNvIHRoaXMgaW1wbGVtZW50YXRpb24gc2hvdWxkIG5vdCBicmVhayBhbnkgY3VycmVudAotCSAgICAgICBkZXNpZ24gdXNpbmcgdGhpcyBjb2RlLgotCi0JICAgICAgIFRoYW5rcyB0byBBbmRyZWEgTWFyc29uIGZyb20gREFWRSBmb3IgdGhpcyBwYXRjaC4KLQotICA0NDAgRERSOiAgIC0gQWRkZWQgZnVuY3Rpb24gc2RyYW1fdHIxX3NldCB0byBhdXRvIGNhbGN1bGF0ZSB0aGUKLQkgICAgICAgVFIxIHZhbHVlIGZvciB0aGUgRERSLgotCSAgICAgLSBBZGRlZCBFQ0Mgc3VwcG9ydCAoc2VlIHAzcDQ0MCkuCi0KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxNyBNYXIgMjAwNgotCi0qIEZpeCBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUIGRlcGVuZGVuY3kgaW4gY3B1L2FybTkyMHQvc3RhcnQuUwotICBQYXRjaCBieSBQZXRlciBNZW56ZWJhY2gsIDEzIE9jdCAyMDA1IFtETlgjMjAwNjA0MDE0MjAwMDQ3M10KLQotKiBBZGQgc3VwcG9ydCBmb3IgeW1vZGVtIHByb3RvY29sIGRvd25sb2FkCi0gIFBhdGNoIGJ5IFN0ZWZhbm8gQmFiaWMsIDI5IE1hciAyMDA2Ci0KLSogTWVtb3J5IE1hcCBVcGRhdGUgZm9yIERlbHRhIGJvYXJkOiBVLUJvb3QgaXMgYXQgMHg4MDAwMDAwMC0weDg0MDAwMDAwCi0gIE1lcmdlIGZyb20gTWFya3VzIEtsb3R6YvxjaGVyJ3MgcmVwbywgMDEgQXByIDIwMDYKLQotKiBHQ0MtNC54IGZpeGVzOiBjbGVhbiB1cCBnbG9iYWwgZGF0YSBwb2ludGVyIGluaXRpYWxpemF0aW9uIGZvciBhbGwKLSAgYm9hcmRzCi0KLSogVXBkYXRlIGZvciBEZWx0YSBib2FyZDoKLSAgLSByZWR1bmRhbnQgTkFORCBlbnZpcm9ubWVudAotICAtIG1pc2MgTW9uYWhhbnMgY2xlYW51cHMgKHJlbW92ZSBkZWFkIGNvZGUgZXRjLikKLSAgLSBEQTkwMzAgSW5pdGlhbGl6YXRpb247IHNvbWUgbWluaW1hbCBjaGFuZ2VzIHRvIFBYQSBJMkMgZHJpdmVyIHRvCi0gICAgbWFrZSBpdCB3b3JrIHdpdGggdGhlIE1vbmFoYW5zLgotICAtIE1ha2UgTW9uYWhhbnMgY2xvY2sgZnJlcXVlbmN5IGNvbmZpZ3VyYWJsZSB1c2luZwotICAgIENGR19NT05BSEFOU19SVU5fTU9ERV9PU0NfUkFUSU8gYW5kCi0gICAgQ0ZHX01PTkFIQU5TX1RVUkJPX1JVTl9NT0RFX1JBVElPLgotICBNZXJnZSBmcm9tIE1hcmt1cyBLbG90emL8Y2hlcidzIHJlcG8sIDI1IE1hciAyMDA2Ci0KLSogRW5hYmxlIFF1YWQgVUFSVCBvbSBNQ0MyMDAgYm9hcmQuCi0KLSogQ2xlYW51cCBNQ0MyMDAgYm9hcmQgY29uZmlndXJhdGlvbjsgb21pdCBub24tZXhpc3RlbnQgc3R1ZmYuCi0KLSogQWRkIHN1cHBvcnQgZm9yIE1QQzg1OS84NjYgUmV2LiBBLjAKLQotKiBBZGQgY29tbWFuZCBmb3IgaGFuZGxpbmcgRERSIEVDQyByZWdpc3RlcnMgb24gTVBDODM0OUVFIE1EUyBib2FyZC4KLQotKiBGaXggRERSIEVDQyBiaXQgZGVmaW5pdGlvbnMgZm9yIE1QQzgzeHguCi0KLSogQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgTVBDODM0OUUgTURTIGJvYXJkLgotCi0qIEFkZCBzdXBwb3J0IGZvciBFQ0MgRERSIGluaXRpYWxpemF0aW9uIG9uIE1QQzgzeHguCi0KLSogQWRkIERNQSBzdXBwb3J0IGZvciBNUEM4M3h4LgotCi0qIEFkZCBzeW5jIGluIGRvX3Jlc2V0KCkgcm91dGluZSBmb3IgTVBDODN4eCBhZnRlciBSUFIgcmVnaXN0ZXIKLSAgd2FzIHdyaXR0ZW4gdG8uIEl0IGlzIG5lZWQgb24gc29tZSB0YXJnZXRzIHdoZW4gQkFUIHRyYW5zbGF0aW9uCi0gIGlzIGVuYWJsZWQuCi0KLSogQWRkIGJpdCBkZWZpbml0aW9ucyBmb3IgTVBDODN4eCBERFIgY29udHJvbGxlciByZWdpc3RlcnMuCi0KLSogQWRkIERjYnooKSwgRGNiaSgpIGFuZCBEY2JmKCkgcm91dGluZXMgZm9yIE1QQzgzeHguCi0KLSogQ29ycmVjdCBzaGlmdCBvZmZzZXRzIGluIGljYWNoZV9zdGF0dXMgYW5kIGRjYWNoZV9zdGF0dXMgZm9yIE1QQzgzeHguCi0KLSogQWRkIHN1cHBvcnQgZm9yIERTMTM3NCBSVEMgY2hpcC4KLQotKiBBZGQgc3VwcG9ydCBmb3IgTGl0ZTUyMDBCIGJvYXJkLgotICBQYXRjaCBieSAgUGF0Y2ggYnkgSm9zZSBNYXJpYSAoVHhlbWEpIExvcGV6LCAxNiBKYW4gMjAwNgotCi0qIEFwcGx5IFNvQyBjb25jZXB0IHRvIGFybTkyNmVqcyBDUFVzLCBpLmUuIG1vdmUgdGhlIFNvQyBzcGVjaWZpYwotICB0aW1lciBhbmQgY3B1X3Jlc2V0IGNvZGUgZnJvbSBjcHUvJChDUFUpIGludG8gdGhlIG5ldwotICBjcHUvJChDUFUpLyQoU09DKSBkaXJlY3RvcmllcwotICBQYXRjaCBieSBBbmRyZWFzIEVuZ2VsLCAxMyBNYXIgMjAwNgotCi0qIENoYW5nZSBtYXggc2l6ZSBvZiB1bmNvbXByZXNzZWQgdUltYWdlJ3MgdG8gOE1CeXRlIGFuZCBhZGQKLSAgQ0ZHX0JPT1RNX0xFTiB0byBhZGp1c3QgdGhpcyBzZXR0aW5nLgotCi0gIEFzIG1lbnRpb25lZCBieSBSb2JpbiBHZXR6IG9uIDIwMDUtMDUtMjQgdGhlIHNpemUgb2YgdW5jb21wcmVzc2VkCi0gIHVJbWFnZXMgd2FzIHJlc3RyaWN0ZWQgdG8gNE1CeXRlcy4gVGhpcyBkZWZhdWx0IHNpemUgaXMgbm93Ci0gIGluY3JlYXNlZCB0byA4TWJ5dGVzIGFuZCBjYW4gYmUgb3ZlcnJpZGVkIGJ5IHNldHRpbmcgQ0ZHX0JPT1RNX0xFTgotICBpbiB0aGUgYm9hcmQgY29uZmlnIGZpbGUuCi0KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxMyBNYXIgMjAwNgotCi0qIEZpeCBwcm9ibGVtIHdpdGggdXBkYXRlZCBQQ0kgY29kZSBpbiBjcHUvcHBjNHh4LzQwNWdwX3BjaS5jCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTMgTWFyIDIwMDYKLQotKiBjcHUvcHBjNHh4L3N0YXJ0LlMgOiBleGNlcHRpb25zIGFyZSBlbmFibGVkIGFmdGVyIHJlbG9jYXRpb24KLSAgUGF0Y2ggYnkgQ2VkcmljIFZpbmNlbnQsIDA2IEp1bCAyMDA1Ci0KLSogYXUxeDAwX2V0aC5jOiBjaGVjayBtYWxsb2MgcmV0dXJuIHZhbHVlIGFuZCBhYm9ydCBpZiBpdCBmYWlsZWQKLSAgUGF0Y2ggYnkgQW5kcmV3IER5ZXIsIDI2IEp1bCAyMDA1Ci0KLSogQ2hhbmdlIHRoZSBzZXF1ZW5jZSBvZiBldmVudHMgaW4gc29mdF9pMmMuYzpzZW5kX2FjaygpIHRvIGtlZXAgZnJvbQotICBpbmNvcnJlY3RseSBnZW5lcmF0aW5nIHN0YXJ0L3N0b3AgY29uZGl0aW9ucyBvbiB0aGUgYnVzLgotICBQYXRjaCBieSBBbmRyZXcgRHllciwgMjYgSnVsIDIwMDUKLQotKiBGaXggYnVnIGluIFtpZF1jYWNoZV9zdGF0dXMgY29tbWFuZHMgZm9yIE1QQzg1eHggcHJvY2Vzc29yczsKLSAgc2hvdWxkIGxvb2sgYXQgTFNCIG9mIEwxQ1NSbiByZWdpc3RlcnMgdG8gZGV0ZXJtaW5lIGlmIEwxIGNhY2hlIGlzCi0gIGVuYWJsZWQsIG5vdCB0aGUgTVNCLgotICBQYXRjaCBieSBNdXJyYXkgSmVuc2VuLCAxOSBKdWwgMjAwNQotCi0qIEZpeCBhcnJheSBvdmVyZmxvdyB3aXRoIGZ3X3NldGVudiBvbiB1bmluaXRpYWxpc2VkIGVudmlyb25tZW50Ci0gIFBhdGNoIGJ5IE11cnJheSBKZW5zZW4sIDE1IEp1bCAyMDA1Ci0KLSogQWRkIHN1cHBvcnQgZm9yIEVtYmVkZGVkUGxhbmV0IEVQODh4IGJvYXJkcwotICBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAxMyBKdWwgMjAwNQotCi0qIFJlbW92ZSBib2FyZCBzcGVjaWZpYyBjb25maWd1cmF0aW9uIGluY2x1ZGVzIGZyb20gdGhlIGNvbW1vbiB4aWxpbngKLSAgZXRoZXJuZXQgYW5kIGlpYyBhZGFwdGVyIGNvZGUuCi0gIFBhdGNoIGJ5IE1pY2hhZWwgTGliZXNraW5kLCAxMiBKdWwgMjAwNQotCi0qIEFkZCBOYXQgU2VtaSBEUDgzODY1IFBIWSBzdXBwb3J0IHRvIE1QQzg1eHggVFNFQyBkcml2ZXIKLSAgUGF0Y2ggYnkgTXVycmF5IEplbnNlbiwgMDggSnVsIDIwMDUKLQotKiBBZGQgKHNvbWUpIGRlZmluaXRpb25zIGZvciB0aGUgTVBDODV4eCBsb2NhbCBidXMgY29udHJvbGxlcgotICBQYXRjaCBieSBNdXJyYXkgSmVuc2VuLCAwOCBKdWwgMjAwNQotCi0qIEFkZCBDUE0yIEkvTyBwaW4gZnVuY3Rpb25zIGZvciBNUEM4NXh4IHByb2Nlc3NvcnMKLSAgUGF0Y2ggYnkgTXVycmF5IEplbnNlbiwgMDggSnVsIDIwMDUKLQotKiBGaXggY29tcGlsZSBwcm9ibGVtCi0KLSogQWRkZWQgUENJIHN1cHBvcnQgZm9yIE1QQzgzNDlBRFMgYm9hcmQKLSAgUGF0Y2ggYnkgS3VtYXIgR2FsYSAxMSBKYW4gMjAwNgotCi0qIEVuYWJsZSBhZGRyZXNzIHRyYW5zbGF0aW9uIG9uIE1QQzgzeHgKLSAgUGF0Y2ggYnkgS3VtYXIgR2FsYSwgMTAgRmViIDIwMDYKLQotKiBEZWNvcHVsZWQgc2V0dGluZyBvZiBPUi9CUiBhbmQgTEJMQVdCQVIvTEJMQVdBUiBvbiBNUEM4M3h4Ci0gIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDI1IEphbiAyMDA2Ci0KLSogRml4ZWQgZGVmaW5lcyBmb3IgTVBDODN4eCBTSUNSTCByZWdpc3RlciB0byBtYXRjaCBjdXJyZW50IHNwZWNzCi0gIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDIzIEphbiAyMDA2Ci0KLSogT25seSBkaXNhYmxlIHRoZSBNUEM4M3h4IHdhdGNoZG9nIGlmIGl0cyBlbmFibGVkIG91dCBvZiByZXNldC4KLSAgSWYgaXRzIGRpc2FibGVkIG91dCBvZiByZXNldCBTVyBjYW4gbGF0ZXIgZW5hYmxlIGl0IGlmIHNvIGRlc2lyZWQKLSAgUGF0Y2ggYnkgS3VtYXIgR2FsYSwgMTEgSmFuIDIwMDYKLQotKiBBbGxvdyBjb25maWcgb2YgR1BJTyBkaXJlY3Rpb24gJiBkYXRhIHJlZ2lzdGVycyBhdCBib290IG9uIDgzeHgKLSAgUGF0Y2ggYnkgS3VtYXIgR2FsYSwgMTEgSmFuIDIwMDYKLQotKiBFbmFibGUgdGltZSBoYW5kbGluZyBvbiA4M3h4Ci0gIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDExIEphbiAyMDA2Ci0KLSogTWFrZSBTeXN0ZW0gSU8gQ29uZmlnIFJlZ2lzdGVycyBib2FyZCBjb25maWd1cmFibGUgb24gTVBDODN4eAotICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgotCi0qIEZpeGVkIFBDSSBpbmRpcmVjdCBjb25maWcgb3BzIHRvIGhhbmRsZSBtdWx0aXBsZSBQQ0kgY29udHJvbGxlcnMKLSAgV2UgbmVlZCB0byBhZGp1c3QgdGhlIGJ1cyBudW1iZXIgd2UgYXJlIHRyeWluZyB0byBhY2Nlc3MgYmFzZWQKLSAgb24gd2hpY2ggUENJIGNvbnRyb2xsZXIgaXRzIG9uCi0gIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDEyIEphbiAyMDA2Ci0KLSogUmVwb3J0IGJhY2sgUENJIGJ1cyB3aGVuIGRvaW5nIHRhYmxlIGJhc2VkIGRldmljZSBjb25maWcKLSAgUGF0Y2ggYnkgS3VtYXIgR2FsYSwgMTEgSmFuIDIwMDYKLQotKiBBZGRlZCBzdXBwb3J0IGZvciBQQ0kgcHJlZmV0Y2hhYmxlIHJlZ2lvbiBhbmQgQkFScwotICBJZiBhIGhvc3QgY29udHJvbGxlciBzZXRzIHVwIGEgcmVnaW9uIGFzIHByZWZldGNoYWJsZSBhbmQKLSAgYSBkZXZpY2UncyBCQVIgZGVub3RlcyBpdCBhcyBwcmVmZXRjaGFibGUsIGFsbG9jYXRlIHRoZQotICBCQVIgaW50byB0aGUgcHJlZmV0Y2ggcmVnaW9uLgotCi0gIElmIGEgQkFSIGlzIHByZWZldGNoYWJsZSBhbmQgbm8gcHJlZmV0Y2hhYmxlIHJlZ2lvbiBoYXMKLSAgYmVlbiBzZXR1cCBieSB0aGUgY29udHJvbGxlciB3ZSBmYWxsIGJhY2sgdG8gYWxsb2NhdGluZwotICB0aGUgQkFSIGludG8gdGhlIG5vcm1hbGx5IG1lbW9yeSByZWdpb24uCi0gIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDExIEphbiAyMDA2Ci0KLSogQWRkIGhlbHBlciBmdW5jdGlvbiBmb3IgZ2VuZXJpYyBmbGF0IGRldmljZSB0cmVlIGZpeHVwcyBmb3IgbXBjODN4eAotICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgotCi0qIEFkZCBzdXBwb3J0IGZvciBwYXNzaW5nIGluaXRyZCBpbmZvcm1hdGlvbiB2aWEgZmxhdCBkZXZpY2UgdHJlZQotICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgotCi0qIEFkZGVkIE9GX1NURE9VVF9QQVRIIGFuZCBPRl9TT0MKLQotICBPRl9TVERPVVRfUEFUSCBzcGVjaWZpZXMgdGhlIHBhdGggdG8gdGhlIGRldmljZSB0aGUga2VybmVsIGNhbiB1c2UKLSAgZm9yIGNvbnNvbGUgb3V0cHV0Ci0KLSAgT0ZfU09DIHNwZWNpZmllcyB0aGUgcHJvcGVyIG5hbWUgb2YgdGhlIFNPQyBub2RlIGlmIG9uZSBleGlzdHMuCi0gIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDExIEphbiAyMDA2Ci0KLSogQWxsb3cgYm9hcmQgY29kZSB0byBmaXh1cCB0aGUgZmxhdCBkZXZpY2UgdHJlZSBiZWZvcmUgYm9vdGluZyBhIGtlcm5lbAotICBQYXRjaCBieSBLdW1hciBHYWxhLCAxMSBKYW4gMjAwNgotCi0qIEFkZGVkIENPTkZJR18gb3B0aW9ucyBmb3IgYmRfdCBhbmQgZW52IGluIGZsYXQgZGV2IHRyZWUKLQotCUNPTkZJR19PRl9IQVNfQkRfVCB3aWxsIHB1dCBhIGNvcHkgb2YgdGhlIGJkX3QKLQlpbnRvIHRoZSByZXN1bHRpbmcgZmxhdCBkZXZpY2UgdHJlZS4KLQotCUNPTkZJR19PRl9IQVNfVUJPT1RfRU5WIHdpbGwgY29weSB0aGUgZW52aXJvbm1lbnQKLQl2YXJpYWJsZXMgZnJvbSB1LWJvb3QgaW50byB0aGUgZmxhdCBkZXZpY2UgdHJlZQotCi0gIFBhdGNoIGJ5IEt1bWFyIEdhbGEsIDExIEphbiAyMDA2Ci0KLSogQWRkIHN1cHBvcnQgZm9yIHRoZSBESENQIHZlbmRvciBvcHRpb25hbCBib290ZmlsZSAoIzY3KS4KLSAgSWdub3JlcyB0aGUgdmVuZG9yIFRGVFAgc2VydmVyIG5hbWUgb3B0aW9uICgjNjYpLgotICBQYXRjaCBieSBNdXJyYXkgSmVuc2VuLCAzMCBKdW4gMjAwNQotCi0qIEZpeCBhIEhXIHRpbWluZyBpc3N1ZSBvbiA4NTQ4IENEUyBmb3IgZVRTRUMgMyBpbiBSR01JSSBtb2RlCi0gIFBhdGNoIGJ5IEFuZHkgRmxlbWluZywgMTQgSnVuIDIwMDUKLQotKiBGaXggYmFkIHJlZ2lzdGVyIGRlZmluaXRpb25zIGZvciBMVFg5NzEgUEhZIG9uIE1QQzg1eHggYm9hcmRzLgotICBQYXRjaCBieSBHZXJoYXJkIEphZWdlciwgMjEgSnVuIDIwMDUKLQotKiBBZGQgbmV0Y29uc29sZSBhbmQgc29tZSBtb3JlIGNvbW1hbmRzIHRvIFJQWGxpdGVfRFcgYm9hcmQKLSAgUGF0Y2ggYnkgU2FtIFNvbmcsIDE5IEp1biAyMDA1Ci0KLSogRml4IGJhZCBkZWNsYXJhdGlvbiBvbiBwY2lfY2ZnZnVuY19ub3RoaW5nCi0gIFBhdGNoIGJ5IFNhbSBTb25nLCAxOSBKdW4gMjAwNQotCi0qIEFkanVzdCAiZWNobyIgYXMgYSBkZWZhdWx0IGNvbW1hbmQKLSAgUGF0Y2ggYnkgU2FtIFNvbmcsIDE5IEp1biAyMDA1Ci0KLSogRml4IFBDSURGIGNhbGN1bGF0aW9uIGluIGNwdS9tcGM4MjYwL3NwZWVkLmMgZm9yIE1QQzgyODBFQwotICBQYXRjaCBieSBLb2tIb3cgVGVoLCAxNiBKdW4gMjAwNQotCi0qIEFkZCBjcmMgb2YgZGF0YSB0byBqZmZzMiAoaW4gamZmczJfMXBhc3NfYnVpbGRfbGlzdHMoKSkuCi0gIFBhdGNoIGJ5IFJpY2sgQnJvbnNvbiwgMTUgSnVuIDIwMDUKLQotKiBDb2RpbmcgU3R5bGUgY2xlYW51cAotCi0qIEF2b2lkIGRlcmVmZXJlbmNpbmcgTlVMTCBpbiBmaW5kX2NtZCgpIGlmIG5vIHZhbGlkIGNvbW1hbmRzIHdlcmUgZm91bmQKLSAgUGF0Y2ggYnkgQW5kcmV3IER5ZXIsIDEzIEp1biAyMDA1Ci0KLSogQWRkIEFESSBCbGFja2ZpbiBzdXBwb3J0Ci0gIC0gYWRkIHN1cHBvcnQgZm9yIEFuYWxvZyBEZXZpY2VzIEJsYWNrZmluIEJGNTMzIENQVQotICAtIGFkZCBzdXBwb3J0IGZvciB0aGUgQURJIEJGNTMzIFN0YW1wIHVDbGludXggYm9hcmQKLSAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIEFESSBCRjUzMyBFWktpdCBib2FyZAotICBQYXRjaGVzIGJ5IFJpY2hhcmQgS2xpbmdsZXIsIDExIEp1biAyMDA1Ci0KLSogQWRkIGxvYWRzIG9mIG50b2hsKCkgaW4gaW1hZ2UgaGVhZGVyIGhhbmRsaW5nCi0gIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDEwIEp1biAyMDA1Ci0KLSogU3dpdGNoIE1QQzg2eEFEUyBhbmQgTVBDODg1QURTIGJvYXJkcyB0byB1c2UgY3B1Y2xrIGVudmlyb25tZW50Ci0gIHZhcmlhYmxlIHRvIHNldCBjbG9jawotICBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAwNSBKdW4gMjAwNQotCi0qIFJQWGxpdGUgY29uZmlndXJhdGlvbiBmaXhlcwotICAtIFVzZSBjb3JyZWN0IGZsYXNoIHNlY3RvciBzaXplCi0gIC0gVXNlIGNvcnJlY3QgbWVtb3J5IHRlc3QgZW5kIGFkZHJlc3MKLSAgLSBBZGQgc3VwcG9ydCBmb3IgYnppcDIgY29tcHJlc3Npb24KLSAgLSBWYXJpb3VzIHNtYWxsIGZpeGVzCi0gIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDA1IEp1biAyMDA1Ci0KLSogTWVtb3J5IGNvbmZpZ3VyYXRpb24gY2hhbmdlcyBmb3IgWlBDLjE5MDAgYm9hcmQKLSAgLSBGaXggU0RSQU0gdGltaW5nIG9uIGJvdGggbG9jYWwgYnVzIGFuZCA2MHggYnVzCi0gIC0gQWRkIHN1cHBvcnQgZm9yIHNlY29uZCBmbGFzaCBiYW5rIChTSU1NKQotICAtIENoYW5nZSBib290IGZsYXNoIGJhc2UKLSAgUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMDUgSnVuIDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgQWRkZXIgYm9hcmRzIHdpdGggMTZNQiBTRFJBTTsKLSAgYWRkIHN1cHBvcnQgZm9yIHNlY29uZCBGRUMgb24gQWRkZXI4N3ggYm9hcmQuCi0gIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDA1IEp1biAyMDA1Ci0KLSogRml4IGNvbmRpdGlvbmFsIGZvciBpbmNsdWRpbmcga3M4Njk1ZXRoIGRyaXZlcgotICBQYXRjaCBieSBHcmVnIFVuZ2VyZXIsIDA0IEp1biAyMDA1Ci0KLSogRml4IE1ha2VmaWxlOiBpbmNsdWRlIGNvbmZpZy5tayBvbmx5IGFmdGVyIENST1NTX0NPTVBJTEUgaXMgZGVmaW5lZAotICBQYXRjaCBieSBGcmllZHJpY2ggTG9iZW5zdG9jaywgMDIgSnVuIDIwMDUKLQotKiBGaXggY29tbWVudCBpbiBjb21tb24vc29mdF9pMmMuYwotICBQYXRjaGVzIGJ5IFBldGVyIEtvcnNnYWFyZC9Ub2x1bmF5IE9ya3VuLCAyNiBNYXkgMjAwNQotCi0qIENsZWFudXAgY29tcGlsZXIgd2FybmluZ3MuCi0gIFBhdGNoIGJ5IEdyZWcgVW5nZXJlciwgMjEgTWF5IDIwMDUKLQotKiBXb3JkIGFsaWdubWVudCBmaXhlcyBmb3Igd29yZCBhbGlnbmVkIE5TMTY1NTAgVUFSVAotICBQYXRjaCBieSBKZWFuLVBhdWwgU2FtYW4sIDAxIE1hciAyMDA1Ci0KLSAgRml4ZXMgYnVnIHdpdGggVUFSVCB0aGF0IG9ubHkgc3VwcG9ydHMgd29yZCBhbGlnbmVkIGFjY2VzczogcmVtb3ZlZAotICAiX19hdHRyaWJ1dGVfXyAoKHBhY2tlZCkpOyIgZm9yICIoQ0ZHX05TMTY1NTBfUkVHX1NJWkUgPT0gNCkiIHNvbWUKLSAgKGJyb2tlbiEpIHZlcnNpb25zIG9mIEdDQyBnZW5lcmF0ZSBieXRlIGFjY2Vzc2VzIHdoZW4gZW5jb3VudGVyaW5nCi0gIHRoZSBwYWNrZWQgYXR0cmlidXRlIHJlZ2FyZGxlc3MgaWYgdGhlIHN0cnVjdCBpcyBhbHJlYWR5IGNvcnJlY3RseQotICBhbGlnbmVkIGZvciBhIHBsYXRmb3JtLiBQZXJpcGhlcmFscyB0aGF0IGNhbiBvbmx5IGhhbmRsZSB3b3JkCi0gIGFsaWduZWQgYWNjZXNzIHdvbid0IHdvcmsgcHJvcGVybHkgd2hlbiBhY2Nlc3NlZCB3aXRoIGJ5dGUgYWNjZXNzLgotICBUaGUgc3RydWN0IE5TMTY1NTAgaXMgYWxyZWFkeSB3b3JkIGFsaWduZWQgZm9yIFJFR19TSVpFID0gNCwgc28KLSAgdGhlcmUgaXMgbm8gbmVlZCB0byBwYWNrZWQgdGhlIHN0cnVjdCBpbiB0aGF0IGNhc2UuCi0KLSogRml4IGJlaGF2aW91ciBpZiBnYXRld2F5aXAgaXMgbm90IHNldAotICBQYXRjaCBieSBSb2JpbiBHaWxrcywgMjMgRGVjIDIwMDQKLQotKiBGaXggY2xlYW51cCBmb3IgbmV0c3RhcnQgYm9hcmQuCi0gIFJlbW92ZSBidWlsZCByZXN1bHRzIGZyb20gcmVwb3NpdG9yeQotCi0qIFNvbWUgY29kZSBjbGVhbnVwIGZvciBHQ0MgNC54Ci0KLSogRml4ZXMgdG8gc3VwcG9ydCBlbnZpcm9ubWVudCBpbiBOQU5EIGZsYXNoOwotICBlbmFibGUgTkFORCBmbGFzaCBiYXNlZCBlbnZpcm9ubWVudCBmb3IgZGVsdGEgYm9hcmQuCi0KLSogQWRkIHN1cHBvcnQgZm9yIEludGVsIE1vbmFoYW5zIENQVSBvbiBaeWxvbml0ZSBhbmQgRGVsdGEgYm9hcmRzCi0gIChUaGlzIGlzIFdvcmsgaW4gUHJvZ3Jlc3MhKQotCi0qIEFkZCBzdXBwb3J0IGZvciBUUU04MjYwLUFJIGJvYXJkcy4KLQotKiBNaW5vciBjb2RlIGNsZWFudXAKLQotKiBNZXJnZSB0aGUgbmV3IE5BTkQgY29kZSAodGVzdGluZy1OQU5EIGJyYWNoKTsgc2VlIGRvYy9SRUFETUUubmFuZAotICBSZXdyaXRlIG9mIE5BTkQgY29kZSBiYXNlZCBvbiB3aGF0IGlzIGluIDIuNi4xMiBMaW51eCBrZXJuZWwKLSAgUGF0Y2ggYnkgTGFkaXNsYXYgTWljaGwsIDI5IEp1biAyMDA1Ci0KLSogQWRkIGxvd2Jvb3QgdGFyZ2V0IHRvIG1jYzIwMCBib2FyZAotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDQgTWFyIDIwMDYKLQotKiBGaXggcHJvYmxlbSB3aXRoIGZsYXNoX2dldF9zaXplKCkgZnJvbSBDRkkgZHJpdmVyIHVwZGF0ZQotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDEgTWFyIDIwMDYKLQotKiBNYWtlIENGR19OT19GTEFTSCB3b3JrIG9uIEFSTSBzeXN0ZW1zCi0gIFBhdGNoIGJ5IE1hcmt1cyBLbG90emJ1ZWNoZXIsIDI3IEZlYiAyMDA2Ci0KLSogVXBkYXRlIG1jYzIwMCBjb25maWc6IERpc2FibGUgUENJIGFuZCBEb0MsIHVzZSAxMzMgTUh6IElQQiBjbG9jaywKLSAgdXNlIGh1c2ggc2hlbGwuCi0KLSogQ29udmVydCBtY2MyMDAgdG8gdXNlIGNvbW1vbiBDRkkgZmxhc2ggZHJpdmVyCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjggRmViIDIwMDYKLQotKiBBZGQgZW52LXZhcmlhYmxlICJ1bmxvY2siIHRvIGhhbmRsZSBpbml0aWFsIHN0YXRlIG9mIHNlY3RvcnMKLSAgKGxvY2tlZC91bmxvY2tlZCkuCi0KLSAgT25seSB0aGUgVS1Cb290IGltYWdlIGFuZCBpdCdzIGVudmlyb25tZW50IGlzIHByb3RlY3RlZCwKLSAgYWxsIG90aGVyIHNlY3RvcnMgYXJlIHVucHJvdGVjdGVkICh1bmxvY2tlZCkgaWYgZmxhc2gKLSAgaGFyZHdhcmUgcHJvdGVjdGlvbiBpcyB1c2VkIChDRkdfRkxBU0hfUFJPVEVDVElPTikgYW5kCi0gIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSAidW5sb2NrIiBpcyBzZXQgdG8gInllcyIuCi0KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyOCBGZWIgMjAwNgotCi0qIFVwZGF0ZSBkcml2ZXJzL2NmaV9mbGFzaC5jOgotICAtIGZpbmRfc2VjdG9yKCkgY2FsbGVkIGluIGJvdGggdmVyc2lvbnMgb2YgZmxhc2hfd3JpdGVfY2Zpd29yZCgpCi0gIFBhdGNoIGJ5IFBldGVyIFBlYXJzZSwgMjd0aCBGZWIgMjAwNgotCi0qIENGSSBzdXBwb3J0IGZvciBhIHg4L3gxNiBBTUQvU3BhbnNpb24gZmxhc2ggY29uZmlndXJlZCBpbiB4OCBtb2RlCi0gIFBhdGNoIGJ5IEpvc2UgTWFyaWEgTG9wZXosIDE2IEphbiAyMDA2Ci0KLSogQWRkIHN1cHBvcnQgZm9yIEFNRC9TcGFuc2lvbiBGbGFzaGVzIGluIGZsYXNoX3dyaXRlX2NmaWJ1ZmZlcgotICBQYXRjaCBieSBBbGV4IEJhc3RvcyBhbmQgVGhvbWFzIFNjaGFlZmVyLCAyMDA1LTA4LTI5Ci0KLSogQ2hhbmdlcy9maXhlcyBmb3IgZHJpdmVycy9jZmlfZmxhc2guYzoKLSAgV2UgKnNob3VsZCogY2hlY2sgaWYgdGhlcmUgYXJlIGFueSBlcnJvciBiaXRzIGlmIHRoZSBwcmV2aW91cyBjYWxsCi0gIHJldHVybmVkIEVSUl9PSyAoT3RoZXJ3aXNlIHdlIHdpbGwgaGF2ZSBvdXRwdXQgYW4gZXJyb3IgbWVzc2FnZSBpbgotICBmbGFzaF9zdGF0dXNfY2hlY2soKSBhbHJlYWR5LikgIFRoZSBvcmlnaW5hbCBjb2RlIHdvdWxkIG9ubHkgY2hlY2sgZm9yCi0gIGVycm9yIGJpdHMgaWYgZmxhc2hfc3RhdHVzX2NoZWNrKCkgcmV0dXJucyBFUlJfVElNRU9VVC4KLSAgUGF0Y2ggYnkgTWFyY3VzIEhhbGwsIDIzIEF1ZyAyMDA1Ci0KLSogQ2hhbmdlcy9maXhlcyBmb3IgZHJpdmVycy9jZmlfZmxhc2guYzoKLSAgLSBBZGQgQ0ZHX0ZMQVNIX1BST1RFQ1RfQ0xFQVIgb24gZHJpdmVycy9jZmlfZmxhc2guYwotICAtIFByb2hpYml0IGJ1ZmZlciB3cml0ZSB3aGVuIGJ1ZmZlcl9zaXplIGlzIDEgb24gZHJpdmVycy9jZmlfZmxhc2guYwotICBQYXRjaCBieSBTYW5nbW9vbiBLaW0sIDE5IEF1ZyAyMDA1Ci0KLSogRml4ZXMgZm9yIGRyaXZlcnMvY2ZpX2ZsYXNoLmM6Ci0gIC0gRml4IHdyb25nIHRpbWVvdXQgdmFsdWUgdXNhZ2UgaW4gZmxhc2hfc3RhdHVzX2NoZWNrKCkKLSAgLSBSb3VuZCB3cml0ZV90b3V0IHVwIHdoZW4gY29udmVydGluZyB0byBtc2VjIGluIGZsYXNoX2dldF9zaXplKCkKLSAgLSBSZW1vdmUgY2xlYXJpbmcgZmxhc2ggc3RhdHVzIGF0IHRoZSBlbmQgb2YgZmxhc2hfd3JpdGVfY2ZpYnVmZmVyKCkKLSAgICB3aGljaCBzZXRzIEludGVsIDI4RjY0MEozIGZsYXNoIGJhY2sgdG8gY29tbWFuZCBtb2RlIG9uIENTQjQ3MgotICBQYXRjaCBieSBUb2x1bmF5IE9ya3VuLCAwMiBKdWx5IDIwMDUKLQotKiBBZGQgYmFzaWMgc3VwcG9ydCBmb3IgdGhlIFNNTUFDTzQgQm9hcmQgZnJvbSBQYW5EYUNvbS4KLSAgUGF0Y2ggYnkgSGVpa28gU2Nob2NoZXIsIDIwIEZlYiAyMDA2Ci0KLSogQWRkIEdJVCB2ZXJzaW9uIGluZm9ybWF0aW9uIChjb21taWQgSUQpIHRvIHVudGFnZ2VkIFUtQm9vdCB2ZXJzaW9ucwotCi0gIEFzIGRvbmUgaW4gdGhlIGxpbnV4IGtlcm5lbCwgdGhlIFUtQm9vdCB2ZXJzaW9uIChVX0JPT1RfVkVSU0lPTikKLSAgb2YgYWxsIHVucmVsZWFzZWQgKHVudGFnZ2VkKSBVLUJvb3QgaW1hZ2VzIHdpbGwgYmUgYXV0b21hdGljYWxseQotICBleHRlbmRlZCB1cG9uIGNvbXBpbGV0aW1lIHdpdGggYSBwYXJ0IG9mIHRoZSBHSVQgY29tbWl0IElEIGFuZAotICBwb3NzaWJseSB3aXRoICJkaXJ0eSIgaWYgdW5jb21taXRlZCBjaGFuZ2VzIGFyZSBkZXRlY3RlZC4KLQotICBIZXJlIGFuIGV4YW1wbGUgZm9yIHRoZSByZXN1bHRpbmcgdmVyc2lvbjoKLSAgIlUtQm9vdCAxLjEuNC1nMzQ1N2FjMTgtZGlydHkiCi0KLSAgVGhlIHZlcnNpb24gaXMgbm93IG1haW50YWluZWQgaW4gdGhlIHRvcGxldmVsIE1ha2VmaWxlIGFuZCB0aGUKLSAgdmVyc2lvbiBoZWFkZXJzIGFyZSBhdXRvZ2VuZXJhdGVkLgotCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgOSBGZWIgMjAwNgotCi0qIFVwZGF0ZSBkZWZhdWx0IGVudmlyb25tZW50IGZvciBJTktBNHgwMCBib2FyZC4KLQotKiBDb252ZXJ0IENQQ0k3NTAgdG8gdXNlIGNvbW1vbiBDRkkgZmxhc2ggZHJpdmVyCi0gIFBhdGNoIGJ5IFJlaW5oYXJkIEFybHQsIDggRmViIDIwMDYKLQotKiBWYXJpb3VzIGNoYW5nZXMgdG8gZXNkIEhINDA1IGJvYXJkIHNwZWNpZmljIGZpbGVzCi0gIFBhdGNoIGJ5IE1hdHRoaWFzIEZ1Y2hzLCAwNyBGZWIgMjAwNgotCi0qIENsZWFudXAgVS1Cb290IGJvb3QgbWVzc2FnZXMgb24gQVJNLgotCi0gIFRvIG1hdGNoIHRoZSBVLUJvb3QgdXNlciBpbnRlcmZhY2Ugb24gQVJNIHBsYXRmb3JtcyB0byB0aGUgVS1Cb290Ci0gIHN0YW5kYXJkIChhcyBvbiBQUEMgcGxhdGZvcm1zKSwgc29tZSBtZXNzYWdlcyB3aXRoIGRlYnVnIGNoYXJhY3RlcgotICBhcmUgcmVtb3ZlZCBmcm9tIHRoZSBkZWZhdWx0IFUtQm9vdCBidWlsZC4KLSAgRW5hYmxlIERFQlVHIGZvciBsaWJfYXJtL2JvYXJkLmMgdG8gZW5hYmxlIGRlYnVnIG1lc3NhZ2VzLgotICBOZXcgQ09ORklHX0RJU1BMQVlfQ1BVSU5GTyBhbmQgQ09ORklHX0RJU1BMQVlfQk9BUkRJTkZPIG9wdGlvbnMuCi0gIFBhdGNoCSBieSBTdGVmYW4gUm9lc2UsIDI0IEphbiAyMDA2Ci0KLSogRml4IHZhcmlvdXMgY29tcGlsZXIgd2FybmluZ3Mgb24gcHBjNHh4IGJ1aWxkcyAoRUxESyA0LjApCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTggSmFuIDIwMDYKLQotKiBBZGQgVkdBIHN1cHBvcnQgKENUNjkwMDApIHRvIENQQ0k3NTAgYm9hcmQuCi0gIEluc2VydCBtaXNzaW5nIF9fbGUzMl90b19jcHUoKSBmb3IgZmlsZXNpemUgaW4gZXh0MmZzX3JlYWRfZmlsZSgpLgotICBQYXRjaCBieSBSZWluaGFyZCBBcmx0LCAzMCBEZWMgMjAwNQotCi0qIFBNQzQwNSBhbmQgQ1BDSTQwNTogTW92ZWQgY29uZmlndXJhdGlvbiBvZiBwY2kgcmVzb3VyY2VzCi0gIGludG8gY29uZmlnIGZpbGUuCi0gIFBNQzQwNSBhbmQgQ1BDSTJEUDogQWRkZWQgZmlybXdhcmUgZG93bmxvYWQgYW5kIGJvb3RpbmcgdmlhIHBjaS4KLSAgUGF0Y2ggYnkgTWF0dGhpYXMgRnVjaHMsIDIwIERlYyAyMDA1Ci0KLSogQWRkIENvbGRGaXJlIHRhcmdldHMgdG8gTUFLRUFMTCBzY3JpcHQKLSAgUGF0Y2ggYnkgWmFjaGFyeSBMYW5kYXUsIDI2IEphbiAyMDA2Ci0KLSogQWRkIHN1cHBvcnQgZm9yIHI1MjAwIGJvYXJkCi0gIFBhdGNoIGJ5IFphY2hhcnkgTGFuZGF1LCAyNiBKYW4gMjAwNgotCi0qIEFkZCBzdXBwb3J0IGZvciBGcmVlc2NhbGUgTTUyNzEgcHJvY2Vzc29yCi0gIFBhdGNoIGJ5IFphY2hhcnkgTGFuZGF1LCAyNiBKYW4gMjAwNgotCi0qIEZpeCAyOEYyNTZKM0Egc3VwcG9ydCBvbiBQTTUyMCBib2FyZAotICAod2l0aG91dCBiYW5rLXN3aXRjaGluZyBvbmx5IDMyIE1CIGNhbiBiZSBhY2Nlc3NlZCkKLQotKiBGaXggbWtpbWFnZSBidWcgd2l0aCBtdWx0aWZpbGUgaW1hZ2VzIGNyZWF0ZWQgb24gNjQgYml0IHN5c3RlbXMuCi0KLSogQWRkIHN1cHBvcnQgZm9yIDI4RjI1NkozQSBmbGFzaCAoPT4gNjQgTUIpIG9uIFBNNTIwIGJvYXJkCi0KLSogRml4IGNvbXBpbGVyIHByb2JsZW0gd2l0aCBhdDkxcm05MjAwZGsgYm9hcmQuCi0gIFBhdGNoIGJ5IEV1Z2VuIEJpZ3osIDE5IERlYyAyMDA1Ci0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNoYW5nZXMgZm9yIFUtQm9vdCAxLjEuNDoKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKiBDaGFuZ2VzIHRvIFllbGxvd3N0b25lICYgWW9zZW1pdGUgNDQwRVAvR1IgZXZhbCBib2FyZHM6Ci0gIC0gQ2hhbmdlZCBHUElPIHNldHVwIHRvIGVuYWJsZSBhbm90aGVyIGFkZHJlc3MgbGluZSBpbiBvcmRlciB0bwotICAgIGFkZHJlc3MgNjRNIG9mIEZMQVNILgotICAtIEFkZGVkIGZ1bmN0aW9uIHNkcmFtX3RyMV9zZXQgdG8gYXV0byBjYWxjdWxhdGUgdGhlIHRyMSB2YWx1ZSBmb3IKLSAgICB0aGUgRERSLgotICBQYXRjaCBieSBTdGV2ZW4gQmxha2VzbGVlLCAxMiBEZWMgMjAwNQotCi0qIE1QQzUyMDA6ICBTZXQgUENJIHJldHJ5IGNvdW50ZXIgdG8gMCA9IGluZmluaXRlIHJldHJ5OwotICBUaGUgZGVmYXVsdCBvZiAyNTUgaXMgdG9vIHNob3J0IGZvciBzbG93IGRldmljZXMuCi0gIFBhdGNoIGJ5IE1hcnRpbiBOeWtvZHltLCAxMiBEZWMgMjAwNQotCi0qIENoYW5nZSBwb3J0IGNvbmZpZ3VyYXRpb24gZm9yIE8yRE5UIChDT0RFQzEgb24gUFNDMSkuCi0KLSogRml4IHJlZ2lzdGVyIGZvciBQQ0kgYXN5bmMgbW9kZSBvbiBQUEM0NDBFUAotICBQYXRjaCBieSBZb3VuZ2NodWwgQmFuZywgMDggRGVjIDIwMDUKLQotKiBGaXggVS1Cb290IGxpbmtpbmcgcHJvYmxlbXMgKGFkZCAuZWhfZnJhbWUgc2VnbWVudCB0byBsaW5rZXIgc2NyaXB0KQotICBUaGlzIHNlZ21lbnQgbWF5IGJlIHJlcXVpcmVkIGJ5IHNvbWUgbGliZ2NjLmEgZnVuY3Rpb25zCi0gIChsaWtlIF91ZGl2ZGkzKS4KLQotKiBGaXggRFBSQU0gb2Zmc2V0L3NpemUgZm9yIE1QQzg1NDEvODU1NS4KLSAgU2ltcGxpZnkgVFFNODV4eCBNYWtlZmlsZSBoYW5kbGluZy4KLQotKiBGaXggZGF0YSBvdmVyZmxvdyAodHlwbz8pIGluIHJ0Yy9kczEzMDIuYwotCi0qIEZpeCBVLUJvb3QgY29tcGlsYXRpb24gZm9yIE1JUFMgYm9hcmRzIHVzaW5nIEVMREsgNC4wCi0KLSogQWRkIHN1cHBvcnQgZm9yIFRRTTg1NDEvODU1NSBib2FyZHMsIFRRTTg1eHggc3VwcG9ydCByZXdvcmtlZDoKLSAgLSBTdXBwb3J0IGZvciBUUU04NTQxLzg1NTUgYm9hcmRzIGFkZGVkLgotICAtIENvbXBsZXRlIHJld29yayBvZiBUUU04NTQwLzg1NjAgc3VwcG9ydC4KLSAgLSBDb21tb24gVFFNODV4eCBjb2RlIG5vdyBzdXBwb3J0cyBhbGwgY3VycmVudCBUUU04NXh4IHBsYXRmb3JtcwotICAgIChUUU04NTQwLzg1NDEvODU1NS84NTYwKS4KLSAgLSBERFIgU0RSQU0gc2l6ZSBkZXRlY3Rpb24gYWRkZWQuCi0gIC0gQ0FTIGxhdGVuY3kgZGVmYXVsdCB2YWx1ZXMgY2FuIGJlIG92ZXJ3cml0dGVuIGJ5IHNldHRpbmcgInNlcmlhbCMiCi0gICAgdG8gZS5nLiAiQUJDMDAwMSBjYXNsPTI1IiAtPiBDQVMgbGF0ZW5jeSAyLjUgd2lsbCBiZSB1c2VkLgotICAgIElmIHByb2JsZW1zIGFyZSBkZXRlY3RlZCB3aXRoIHRoaXMgbm9uIGRlZmF1bHQgQ0FTIGxhdGVuY3ksCi0gICAgdGhlIGRlZmF1bHQgdmFsdWVzIHdpbGwgYmUgdXNlZCBpbnN0ZWFkLgotICAtIEZsYXNoIHNpemUgZGV0ZWN0aW9uIGFkZGVkLgotICAtIE1vdmVkIEZDQyBldGhlcm5ldCBkcml2ZXIgaW5pdGlhbGl6YXRpb24gYmVoaW5kIFRTRUMgZHJpdmVyIGluaXQKLSAgICAtPiBUU0VDIGlzIGZpcnN0IGRldmljZS4KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAzMCBOb3YgMjAwNQotCi0qIEFkZCBzdXBwb3J0IGZvciBBTUNDIDQ0MFNQLCBhZGQgc3VwcG9ydCBmb3IgQU1DQyBMdWFuIDQ0MFNQIGV2YWwgYm9hcmQuCi0gIFBhdGNoIGJ5IEpvaG4gT3RrZW4sIDIzIE5vdiAyMDA1Ci0KLSogQ2hhbmdlZCBQUEM0NHggc3RhcnR1cCBtZXNzYWdlIChjcHUgaW5mbywgc3BlZWQuLi4pIHRvIGNvbW1vbiBzdHlsZToKLSAgT24gUFBDNDR4IHBsYXRmb3JtcywgdGhlIHN0YXJ0dXAgbWVzc2FnZSBnZW5lcmF0ZWQgaW4gImNwdS5jIiBvbmx5Ci0gIGNvbXByaXNlZCB0aGUgcHBjIHR5cGUgYW5kIHJldmlzaW9uIGJ1dCBub3QgYWRkaXRpb25hbCBpbmZvcm1hdGlvbgotICBsaWtlIHNwZWVkIGV0Yy4gVGhvc2Ugc3BlZWQgaW5mb3Mgd2hlcmUgcHJpbnRlZCBpbiB0aGUgYm9hcmQgc3BlY2lmaWMKLSAgY29kZS4gVGhpcyBuZXcgaW1wbGVtZW50YXRpb24gbm93IHByaW50cyBhbGwgQ1BVIGluZm9zIGluIHRoZSBjb21tb24KLSAgY3B1IHNwZWNpZmljIGNvZGUuIE5vIGJvYXJkIHNwZWNpZmljIGNvZGUgaXMgbmVlZGVkIGFueW1vcmUgYW5kCi0gIHRoZXJlZm9yZSByZW1vdmVkIGZyb20gYWxsIGN1cnJlbnQgNDR4IGltcGxlbWVudGF0aW9ucy4KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyNyBOb3YgMjAwNQotCi0qIEFkanVzdCBUUU04MzR4IFBIWSBhZGRyZXNzZXMgZm9yIGxhdGVzdCBoYXJkd2FyZSByZXZpc2lvbi4KLQotKiBJbmNyZWFzZSBtYWxsb2MgYXJlbmEgb24gVFFNNTIwMCBib2FyZCB0byAyNTYga0IuCi0gIFdpdGggNjQga2IgdW5pZm9ybSBmbGFzaCBzZWN0b3Igc2l6ZSB0aGUgb2xkIHZhbHVlIG9mIDEyOCBrQiB3YXMKLSAgdG9vIHNtYWxsLgotCi0qIEZpeCBtaWlwaHkgZ2xvYmFsIGRhdGEgaW5pdGlhbGl6YXRpb24gKHByb2JsZW0gb24gNHh4IGJvYXJkcyB3aGVuCi0gIG5vIGV0aGFkZHIgaXMgYXNzaWduZWQpLiBJbml0aWFsaXphdGlvbiBtb3ZlZCBmcm9tCi0gIG1paXBoeV9yZWdpc3RlcigpIHRvIGV0aF9pbml0aWFsaXplKCkuCi0KLSAgQmFzZWQgb24gaW5pdGlhbCBwYXRjaCBmb3IgNHh4IHBsYXRmb3JtIGJ5IE1hdHRoaWFzIEZ1Y2hzLgotCi0qIFJlbW92ZSB1bm5uZWNlc3NhcnkgI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+IGZyb20gaW5jbHVkZS9hc20tKi91LWJvb3QuaAotCi0qIEFsbG93IHVzZSBvZiBpbmNsdWRlL2ltYWdlLmggYW5kIGluY2x1ZGUvYXNtLSovdS1ib290LmggaW4gcHJvcHJpZXRhcnkgY29kZS4KLSAgVGhlIENPUFlJTkcgZmlsZSB3YXMgZXh0ZW5kZWQgdG8gbWFrZSBjbGVhciB0aGF0IHRoZXNlIGZpbGVzIGNhbiBiZQotICB1c2VkIGluIG5vbi1HUEwgY29kZSwgdG9vLgotICBBbHNvLCBhIGNvcnJlc3BvbmRpbmcgbm90ZSB3YXMgcGxhY2VkIGluIHRoZSBoZWFkZXJzIG9mIHRoZSBhZmZlY3RlZCBmaWxlcy4KLQotKiBBZGQgc3VwcG9ydCBmb3IgUHJvZHJpdmUgUDNQNDQwIGJvYXJkOgotICAtIEFkZGVkIG9uYm9hcmQgUFBDNDQwIEREUiBhdXRvZGV0ZWN0aW9uIGluIGNwdS9wcGMvc2RyYW0uYwotICAtIENGR19GTEFTSF9RVUlFVF9URVNUIGFkZGVkIHRvIHVzZSB0aGUgY29tbW9uIENGSSBkcml2ZXIKLSAgICBmb3IgYmFuayBhdXRvZGV0ZWN0aW9uCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjIgTm92IDIwMDUKLQotKiBDaGFuZ2UgYWxsICckKC4uLiknIHZhcmlhYmxlIHJlZmVyZW5jZXMgaW50byAnJHsuLi59JwotICB3aGljaCBtYWtlcyB0aGUgZW52aXJvbm1lbnQgY29tcGF0aWJsZSB3aXRoIHRoZSBodXNoIHNoZWxsLgotICBXQVJOSU5HOiBTdXBwb3J0IGZvciB0aGUgb2xkICckKC4uLiknIHN5bnRheCB3aWxsIGJlCi0gIGRpc2NvbnRpbnVlZCBpbiBhIGxhdGVyIHZlcnNpb24uCi0KLSogTWlub3IgY2hhbmdlcyB0byBpbml0IGZsYWdzIGluIFRRTTgzNHggUENJLgotCi0qIEZpeCBCYW1ib28gRERSIFNEUkFNIGluaXRpYWxpemF0aW9uIChwcm9ibGVtIHdpdGggb25ib2FyZCBTRFJBTSkKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxNSBOb3YgMjAwNQotCi0qIE5ldyBQUEMgNDA1RVAgYm9hcmQgYWRkZWQ6IENNUzcwMAotICBBZGRlZCBDT05GSUdfTkVUX01VTFRJIGZvciBWT000MDUgYm9hcmQuCi0gIEFkZGVkIHJlc2V0X3BoeSgpIGZvciBWT000MDUgYm9hcmQuCi0gIFBhdGNoIGJ5IE1hdHRoaWFzIEZ1Y2hzLCAwOSBOb3YgMjAwNQotCi0qIFVwZGF0ZWQgUENJIG1hcHBpbmcgZm9yIGVzZCBDUENJMkRQIGJvYXJkLgotICBBZGQgc3VwcG9ydCBmb3IgZXJyb3IgTEVELgotICBQYXRjaCBieSBNYXR0aGlhcyBGdWNocywgMDcgTm92IDIwMDUKLQotKiBGaXggTVBDODV4eCBQQ0kgc3VwcG9ydCAocGNpX3JlZ2lzdGVyX2hvc2UoKSBiZWZvcmUgcGNpIGNvbmZpZyBhY2Nlc3MpCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDcgTm92IDIwMDUKLQotKiBDb3JyZWN0IFBQQyBUaW1lYmFzZSByZWdpc3RlciBkZWZpbml0aW9ucyAoU1BSTl9UQlJMLi4uKQotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA3IE5vdiAyMDA1Ci0KLSogQWRqdXN0IGJkLT5iaV9mbGFzaHN0YXJ0IG9uIFllbGxvd3N0b25lICYgWW9zZW1pdGUgdG8gY29ycmVjdCBzaXplCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDUgTm92IDIwMDUKLQotKiBBZGRpdGlvbmFsIGZpeCBmb3IgZXh0ZXJuYWwgSVJRIGNvbmZpZyBvbiBZZWxsb3dzdG9uZSAmIFlvc2VtaXRlCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDMgTm92IDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgT2NvdGVhIHBhc3MgMyB3aXRoIDQ0MEdYIFJldi4gRgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDAxIE5vdiAyMDA1Ci0KLSogRml4IGV4dGVybmFsIElSUSBjb25maWd1cmF0aW9uIG9uIFllbGxvd3N0b25lICYgWW9zZW1pdGUKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyOCBPY3QgMjAwNQotCi0qIEFkZCBzdXBwb3J0IGZvciBtdWx0aXBsZSBQSFlzLgotICBUZXN0ZWQgb24gdGhlIGZvbGxvd2luZyBib2FyZHM6Ci0JY21jcHUyCSAgICAoYXQ5MXJtOTIwMC9ldGhlci5jKQotCVBQQ2hhbWVsZW9uIChwcGM0eHgvNHh4X2VuZXQuYykKLQl5dWtvbgkgICAgKG1wYzgyMjAvZmVjLmMpCi0JdWMxMDAJICAgIChtcGM4eHgvZmVjLmMpCi0JdHFtODM0eAkgICAgKG1wYzgzNHgvdHNlYy5jKSB3aXRoIEVFUFJPMTAwCi0JbGl0ZTUyMDAgICAgKG1wYzV4eHgvZmVjLmMpIHdpdGggRUVQUk8xMDAgY2FyZCAoZHJpdmVycy9lZXBybzEwMC5jKQotICBNYWluIGNoYW5nZXMgaW5jbHVkZToKLSAgY29tbW9uL21paXBoeXV0aWwuYwotICAtIG1paXBoeV9yZWdpc3RlciByb3V0aW5lIHdhcyBhZGRlZCB0byBhbGxvdyBtdWx0aXBsZSBQSFlzIHRvIGJlIHJlZ2lzdGVyZWQKLSAgLSBtaWlwaHlfcmVhZCBhbmQgbWlpcGh5X3dyaXRlIGFyZSBub3cgZGVmaW5lZCBpbiB0aGlzIGZpbGUsIGFuZAotICAgIHJlcXVpcmUgYWRkaXRpb25hbCBhcmd1bWVudCAoY2hhciAqZGV2bmFtZSkKLSAgLSBvdGhlciBtaWlwaHlfKiByb3V0aW5lcyBhbHNvIHJlcXVpcmUgYWRkaXRpb25hbCBkZXZpY2UgbmFtZSBhcmd1bWVudAotICAuLi9saWJfaTM4Ni9ib2FyZC5jCi0gIC4uL2xpYl9wcGMvYm9hcmQuYwotICBDYWxsaW5nIHJlc2V0X3BoeSgpIHdhcyBtb3ZlZCB0byBiZSBleGVjdXRlZCAqYWZ0ZXIqIGV0aF9pbml0aWFsaXplKCkuCi0gIFRoaXMgaXMgbmVjZXNzYXJ5IGFzIG5vdyBzb21lIG9mIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgcmVzZXRfcGh5KCkKLSAgbWF5IG5lZWQgdG8gdXNlIG1paXBoeV9yZXNldCgpIHdoaWNoIGlzIG5vdCBhbGxvd2VkIGJlZm9yZSBldGhfaW5pdGlhbGl6ZSgpCi0gIGFzIGV0aF9pbml0aWFsaXplIHJlZ2lzdGVycyBhbGwgcmVxdWlyZWQgbWlpcGh5Xyogcm91dGluZXMuCi0gIFRlc3RlZCBvbiBJUDg2MCBhbmQgUEhZIGluaXRpYWxpemVzIHByb3Blcmx5IGFmdGVyIHRoaXMgY2hhbmdlLgotCi0qIENvcnJlY3QgaW5jbHVkZXMgZm9yIGZsYXQgdHJlZSBidWlsZGVyLgotCi0qIEZpeCBjb25mbGljdGluZyB0eXBlcyAoZmxhc2hfd3JpdGUoKSkgaW4gdHJhYiBhdXRvX3VwZGF0ZS5jLgotCi0qIEFkZCBQQ0kgc3VwcG9ydCBmb3IgdGhlIFRRTTgzNHggYm9hcmQuCi0KLSogQWRkIG1pc3NpbmcgNHh4IGJvYXJkIHRvIE1BS0VBTEwKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyMCBPY3QgMjAwNQotCi0qIEZpeCBjb25mbGljdGluZyB0eXBlcyAoZmxhc2hfd3JpdGUoKSkgaW4gZXNkIGF1dG9fdXBkYXRlLmMKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyMCBPY3QgMjAwNQotCi0qIEZpeCBwcm9ibGVtIHdpdGggc2xlZXAgaW4gTmV0Q29uc29sZSAodXNlIGdldF90aW1lcigpKQotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDIwIE9jdCAyMDA1Ci0KLSogQWRkIE5ldENvbnNvbGUgU3VwcG9ydCBmb3IgQU1DQyBldmFsIGJvYXJkcwotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDIwIE9jdCAyMDA1Ci0KLSogRml4IE5ldENvbnNvbGUgc3VwcG9ydCBvbiA0eHggKG9ubHkgcHJpbnQgZXRoIGxpbmsgb24gMXN0IHRyYW5zZmVyKQotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE4IE9jdCAyMDA1Ci0KLSogQWRkIGZhdCAmIGV4dDIgc3VwcG9ydCB0byBBTUNDIDQ0MEVQIGJvYXJkcyBZb3NlbWl0ZSAmIEJhbWJvby4KLSAgRml4IGlkZW50YXRpb24gb24gZXh0MmxzIGhlbHAgZW50cnkuCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTQgT2N0IDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgVFFNODM0eCBib2FyZHMuCi0gIENsZWFudXAuCi0KLSogQ2xlYW51cCBmb3IgR0NDLTQueAotCi0qIEFkZCBkb2N1bWVudGF0aW9uIGZvciBPcGVuIEZpcm13YXJlIEZsYXQgVHJlZSBhbmQgdXNhZ2UuCi0gIFBhdGNoIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAxMyBPY3QgMjAwNQotCi0qIEFkZCBtaXNzaW5nIGZpbGVzIGZvciBQYW50ZWxpcyBBbnRvbmlvdSdzIHBhdGNoCi0gIFBhdGNoIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAwNCBTZXAgMjAwNQotCi0qIEZpeCBwcm9ibGVtIGluIHBwYzR4eCBldGgtZHJpdmVyIHdpdGhvdXQgZXRoYWRkciAob25seSB3aXRob3V0Ci0gIENPTkZJR19ORVRfTVVMVEkgc2V0KQotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDEwIE9jdCAyMDA1Ci0KLSogRml4IGd6aXAgYm1wIHN1cHBvcnQgKHRlc3QgaWYgbWFsbG9jIGZhaWxzLCB3YXJuaW5nIHdoZW4gdHJ1bmNhdGVkKS4KLSAgSW5jcmVhc2UgQ0ZHX1ZJREVPX0xPR09fTUFYX1NJWkUgb24gSEg0MDUgYm9hcmQuCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDcgT2N0IDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgT0YgZmxhdCB0cmVlIGZvciB0aGUgU1RYdGMgYm9hcmQuCi0gIFBhdGNoIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAwNCBTZXAgMjAwNQotCi0qIFN1cHBvcnQgcGFzc2luZyBvZiBPRiBmbGF0IHRyZWVzIHRvIHRoZSBrZXJuZWwuCi0gIFBhdGNoIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAwNCBTZXAgMjAwNQotCi0qIENsZWFudXAKLQotKiBBZGQgc3VwcG9ydCBmb3IgTmV0U2lsaWNvbiBOUzc1MjAgcHJvY2Vzc29yLgotICBQYXRjaCBieSBBcnQgU2hpcGtvd3NraSwgMTIgTWF5IDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgQVAxMDAwIGJvYXJkLgotICBQYXRjaCBieSBKYW1lcyBNYWNBdWxheSwgMDcgT2N0IDIwMDUKLQotKiBFbGltaW5hdGUgaGFyZC1jb2RlZCBhZGRyZXNzIG9mIEV0aGVybmV0IHRyYW5zZmVyIGJ1ZmZlciBvbiBhdDkxcm05MjAwCi0gIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDA3IE9jdCAyMDA1Ci0KLSAgVGhlIEF0bWVsIGVycmF0YSAjMTEgc3RhdGVzIHRoYXQgdGhlIHRyYW5zZmVyIGJ1ZmZlciBkZXNjcmlwdG9yCi0gIHRhYmxlIG11c3QgYmUgYWxpZ25lZCBvbiBhIDE2LXdvcmQgYm91bmRhcnkuIEFzIGl0IHR1cm5lZCBvdXQsIHRoaXMKLSAgaXMgaW5zdWZmaWNpZW50IC0gaXQgc2VlbXMgdGhlIHRhYmxlIG11c3QgYmUgYWxpZ25lZCBvbiBhIGJvdW5kYXJ5Ci0gIGF0IGxlYXN0IGFzIGxhcmdlIGFzIHRoZSB0YWJsZSBpdHNlbGYgKGluIExpbnV4IHRoaXMgaXMgbm90IGFuCi0gIGlzc3VlIC0gdGhlIHRhYmxlIGlzIGFsaWduZWQgb24gYSBQQUdFX1NJWkUgKDQwOTYpIGJvdW5kYXJ5KS4KLQotKiBGaXhlZCBjb21waWxhdGlvbiBmb3IgQVJNIHdoZW4gdXNpbmcgYSAoc3RhbmRhcmQpIGhhcmQtRlAgdG9vbGNoYWluCi0gIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDA3IE9jdCAyMDA1Ci0KLSogQ2xlYW51cCB3YXJuaW5ncyBmb3IgY3B1L2FybTcyMHQgJiBjcHUvYXJtMTEzNiBmaWxlcy4KLSAgc2VkIHRoZSBsaW5rZXIgc2NyaXB0cywgcmF0aGVyIHRoYW4gcHJlLXByb2Nlc3MgdGhlbS4KLSAgUGF0Y2ggYnkgUGV0ZXIgUGVhcnNlLCAwNyBPY3QgMjAwNQotCi0qIFVwZGF0ZSBtYWtlIHRhcmdldCBmb3IgQVJNIHN1cHBvcnRlZCBib2FyZHMuCi0gIFVzZSBsb3dsZXZlbF9pbml0KCkgaW5zdGVhZCBvZiBwbGF0Zm9ybXNldHVwKCkgW3JlbmFtZV0uCi0gIFBhdGNoIGJ5IFBldGVyIFBlYXJzZSwgMDYgT2N0IDIwMDUKLQotKiBGaXggYm9vdGluZyBmcm9tIHNlcmlhbCBkYXRhZmxhc2ggb24gQVQ5MVJNOTIwMAotICBQYXRjaCBieSBQZXRlciBNZW56ZWJhY2gsIDI5IEF1ZyAyMDA1Ci0KLSogQWRkIEpGRlMyIHN1cHBvcnQgZm9yIFRSQUIgYm9hcmQKLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMjUgQXVnIDIwMDUKLQotKiBSZW1vdmUgdW5uZWNlc3NhcnkgZGVwZW5kZW5jeSBvZiBuZXRjb25zb2xlIG9uIENPTkZJR19ORVRfTVVMVEkKLSAgUGF0Y2ggYnkgTWFyY3VzIEhhbGwsIDI0IEF1ZyAyMDA1Ci0KLSogRml4IHRoZSBtYWNoaW5lLWlkIG9mIHRoZSBDb2dlbnQgY3NiNjM3IGJvYXJkCi0gIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDA1IE9jdCAyMDA1Ci0KLSogQ29tcGxldGUgc3VwcG9ydCBmb3IgdGhlIEt3aWtCeXRlIEtCOTIweCBib2FyZHMKLSAgUGF0Y2ggYnkgQW5kZXJzIExhcnNlbiwgMDUgT2N0IDIwMDUKLQotKiBTZXQgdGhlIEFUOTFSTTkyMDAgY2xvY2sgdG8gYXN5bmNocm9ub3VzIG1vZGUKLSAgUGF0Y2ggYnkgQW5kZXJzIExhcnNlbiwgMDMgTWF5IDIwMDUKLQotKiBTZXQgdGhlIEFUOTFSTTkyMDAgY2xvY2sgdG8gc3luY2hyb25vdXMgbW9kZQotICBQYXRjaCBieSBBbmRlcnMgTGFyc2VuLCAyOSBBcHIgMjAwNQotCi0qIEFkZCBzdXBwb3J0IGZvciBDb2dlbnQgY3NiNjM3Ci0gIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDI5IEFwciAyMDA1Ci0KLSogRml4IGRtOTE2MS5jIGluaXRpYWxpemF0aW9uCi0gIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDI5IEFwciAyMDA1Ci0KLSogRml4IHByb2JsZW1zIGludHJvZHVjZWQgYnkgUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMDIgTWFyIDIwMDUKLSAgKDhlMmJlNTFkZThkZDAzYzFjZTRkMDZjYmIxOGFkMDYxMzNkNDdjZDUpCi0KLSogTW92ZSBkbTkxNjEuYyBhbmQgbHh0OTcyLmMgaW50byBjcHUvYXJtOTIwdC9hdDkxcm05MjAwCi0gIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDI5IEFwciAyMDA1Ci0KLSogRml4IGRldmljZSBwYXJ0aXRpb24gaW50aWFsaXphdGlvbiBmb3IgU3lzdGVtQUNFIGRpc2tzLgotICBQYXRjaCBieSBTdGVwaGVuIFdpbGxpYW1zLCAyOCBBcHIgMjAwNQotCi0qIEFkZGVkIHN1cHBvcnQgZm9yIEt3aWtCeXRlIEtCOTIweCBib2FyZHMgKGJhc2VkIG9uIEFUOTFSTTkyMDApCi0gIFBhdGNoIGJ5IE1hdHQgPz8gPGtiOTIwMF9kZXZAa3dpa2J5dGUuY29tPiwgMjcgQXByIDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgUzI5R0wwNjRNLVIzIGZsYXNoIGNoaXAgb24geHNlbmdpbmUgYm9hcmQKLSAgUGF0Y2ggYnkgS3VydCBTdHJlbWVyY2gsIDE4IEFwciAyMDA1Ci0KLSogRTUwMCB1cGRhdGU6IHJlcG9pbnQgSVZQUiB0byBSQU0gd2hlbiBjb2RlIGlzIHJlbG9jYXRlZAotICBQYXRjaCBieSBLeWxvIEdpbnNiZXJnLCAxMyBBcHIgMjAwNQotCi0qIEZpeCBsb29wIGVuZCB0ZXN0IGluIGxpYl9nZW5lcmljL3N0cmluZy5jOnN0cnN3YWIoKQotICBQYXRjaCBieSBBbmRyZXcgRHllciwgT2N0b2JlciAxMCwgMjAwNQotICBTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgRHllciA8YW1keWVyQGdtYWlsLmNvbT4KLQotKiBDbGVhbnVwCi0KLSogVXBkYXRlIEFSTSBJbnRlZ3JhdG9yIGJvYXJkczoKLSAgQ29ycmVjdCBhZGRlc3NpbmcgZXJyb3JzIGluIHBsYXRmb3JtIGZpbGVzLgotICBTcGxpdCBvZmYgY29tbW9uIGNvcmUgbW9kdWxlIGRhdGEgZnJvbSBJbnRlZ3JhdG9yIGhlYWRlciBmaWxlcyB0bwotICBpbmNsdWRlL2FybWNvcmVtb2R1bGUuaC4KLSAgUGF0Y2ggYnkgUGV0ZXIgUGVhcnNlLCAwNCBPY3QgMjAwNQotCi0qIE1ha2Ugc3VyZSBvbmx5IHN1cHBvcnRlZCBjb21waWxlciBvcHRpb25zIGFyZSB1c2VkCi0gIEltcG9ydCAiY2Mtb3B0aW9uIiBzaGVsbCBmdW5jdGlvbiBmcm9tIGtlcm5lbCBhbmQKLSAgdXNlIGl0IHRvIGdldCB0aGUgY29ycmVjdCBBUk0gR0NDIG9wdGlvbnMgZm9yIGluZGl2aWR1YWwgQ1BVcwotICBQYXRjaCBieSBQZXRlciBQZWFyc2UsIDMwIEp1biAyMDA1Ci0KLSogRml4IDQ0MEdSIHRvIHByaW50IGNvcnJlY3QgY3B1IHJldmlzaW9uCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDQgT2N0IDIwMDUKLQotKiBDaGFuZ2UgYm9hcmQgbWVzc2FnZSBvbiBBTUNDIFlvc2VtaXRlICYgWWVsbG93c3RvbmUgdG8gY29tbW9uIHN0eWxlCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDMgT2N0IDIwMDUKLQotKiBGaXggY29tcGlsZXIgd2FybmluZwotCi0qIEZpeCBGRUMgUEhZIGFkZHJlc3NlcyBmb3IgVFFNODV4eCBib2FyZHMKLQotKiBGaXggdW5pbml0aWFsaXplZCB2YXJpYWJsZSBwcm9ibGVtIGluIGh1c2ggc2hlbGwKLSAgUGF0Y2ggYnkgTGFycyBSb3N0b2NrLCAyNiBTZXAgMjAwNQotCi0qIFVuZG8gY2hhbmdlIG9mIGY2ZTIwZmM2Y2EuLi4gdG8gaW5jbHVkZS9jb25maWdzL3RyYWIuaAotICAoTXVzdCBoYXZlIGJlZW4gYW4gYWNjaWRlbnQ/KQotCi0qIEFkZCBzdXBwb3J0IGZvciBBVDkxUk05MjAwIE9IQ0kgQ29udHJvbGxlci4KLSAgUGF0Y2ggYnkgRXJpYyBCZW5hcmQsIDA3IEFwciAyMDA1Ci0KLSogVXBkYXRlIEFSTSBtYWNoLXR5cGVzLmgKLSAgUGF0Y2ggYnkgRXJpYyBCZW5hcmQsIDA3IEFwciAyMDA1Ci0KLSogQWRkIHN1cHBvcnQgZm9yIE1QMlVTQiBib2FyZC4KLSAgUGF0Y2ggYnkgRXJpYyBCZW5hcmQsIDA3IEFwciAyMDA1Ci0KLSogQWRkIGJvYXJkIHN1cHBvcnQgZm9yIGFybWFkaWxsbyBIVDEwNzAKLSAgUGF0Y2ggYnkgUm93ZWwgQXRpZW56YSwgMDYgQXByIDIwMDUKLQotKiBTZWNvbmQgRXRoZXJuZXQgYWRkcmVzcyBlbmFibGVkIGZvciBNUEM4ODVBRFMgYW5kIE1QQzgyNzJBRFMuCi0gIFBhdGNoIGJ5IFZpdGFseSBCb3JkdWcsIDMwIE1hciAyMDA1Ci0KLSogQWRkIGlvcHNldCBjb21tYW5kIG9uIG1wYzh4eAotICBQYXRjaCBieSBEYW5pZWwgRWlzZW5odXQsIDI1IE1hciAyMDA1Ci0KLSogQWRkIHN1cHBvcnQgZm9yIE1JSSBpbiBlZXBybzEwMCBkcml2ZXIuCi0gIFBhdGNoIGJ5IEdsZWIgTmF0YXBvdiwgMjEgTWFyIDIwMDUKLQotKiBGaXhlcyB0byB0aGUgTHViYm9jayAoUFhBIDI1eCkgc3VwcG9ydDoKLSAgLSBSZXNvbHZlIHRoZSBGSVhNRSB3aXRoIHJlc3BlY3QgdG8gc2F2aW5nIHRoZSB1LWJvb3QgZW52aXJvbm1lbnQuCi0gIC0gTWFrZSB0aGUgZGVmYXVsdCBsb2FkIGFkZHJlc3MgbGFuZCBpbiByZWFsIG1lbW9yeS4KLSAgLSBGaXggbGFuOTFjOTYgU01DX3tpbixvdXR9e2IsdyxsfSgpIG1hY3JvcwotICBQYXRjaCBieSBEYXZpZCBCcm93bmVsbCwgMTAgTWFyIDIwMDUKLQotKiBBZGQgQmFyY28gU3RyZWFtaW5nIFZpZGVvIENhcmQgKFNWQykgYW5kIFNhbXBsZSBDb21wcmVzcyBOZXR3b3JrIChTQ04pIGJvYXJkCi0gIFBhdGNoIGJ5IE1hcmMgTGVlbWFuLCAwNCBNYXIgMjAwNQotCi0qIE9NQVAyNDJ4IEg0IGJvYXJkIHVwZGF0ZQotICAtIGZpeCBmb3IgRVMyIGRpZmZlcmVuY2VzLgotICAtIHN3aXRjaCB0byB1c2luZyB0aGUgY2ZpX2ZsYXNoIGRyaXZlci4KLSAgLSBmaXggU1JBTSBidWlsZCBhZGRyZXNzLgotICAtIGZpeCBmb3IgR1AgZGV2aWNlIG9wZXJhdGlvbi4KLSAgLSB1bmxvY2sgU1JBTSBmb3IgR1AgZGV2aWNlcy4KLSAgLSBkaXNwbGF5IG1vcmUgZGV2aWNlIGluZm9ybWF0aW9uLgotICAtIGZpeCBwb3RlbnRpYWwgZGVhZGxvY2sgaW4gb21hcDI0eHhfaTJjIGRyaXZlci4KLSAgLSBmaXggRExMIGxvYWQgdmFsdWVzIHRvIG1hdGNoIGRwbGxvdXQqMSBvcGVyYXRpb24uCi0gIC0gZml4IDJuZCBjaGlwIHNlbGVjdCBpbml0IGZvciBjb21ibyBERFIgZGV2aWNlLgotICAtIGFkZCBzdXBwb3J0IGZvciBDRkkgSW50ZWwgMjhGMjU2TDE4IG9uIEg0IGJvYXJkLgotICBQYXRjaCBieSBSaWNoYXJkIFdvb2RydWZmLCAwMyBNYXIgMjAwNQotCi0qIEZpeCBmb3JtYXRpbmcgaW4gaW5jbHVkZS9hc20tYXJtL2FyY2gtYXQ5MXJtOTIwMC9BVDkxUk05MjAwLmgKLSAgUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMDIgTWFyIDIwMDUKLQotKiBGaXggdHlwbyBpbiBldGguYwotICBQYXRjaCBieSBBcmEgQXZhbmVzeWFuLCAyNCBGZWIgMjAwNQotCi0qIFJlbW92ZSB1bm5lZWRlZCAjaW5jbHVkZSA8bWFsbG9jLmg+Ci0gIFBhdGNoIGJ5IExhZGlzbGF2IE1pY2hsLCAyMiBGZWIgMjAwNQotCi0qIEFkZCBjcmFtZnMgc3VwcG9ydCBmb3IgbTY4awotICBQYXRjaCBieSBaYWNoYXJ5IExhbmRhdSwgMjEgRmViIDIwMDUKLQotKiBVcGRhdGUgZXA4MjYwOiBGaXggZmxhc2ggdGltZW91dHM7IGltcHJvdmUgY2xvY2sgcmVzb2x1dGlvbiBmb3IgZmFzdGVyIFVBUlRzCi0gIFBhdGNoIGJ5IEplZmYgQW5naWVsc2tpLCAyMSBGZWIgMjAwNQotCi0qIEZpeCBhdTF4MDBfc2VyaWFsIGJhdWQgcmF0ZSBjYWxjdWxhdGlvbjoKLSAgcmVtb3ZlIGhhcmRjb2RlZCBjcHUgY2xvY2sgZGl2aXNvciBhbmQgdXNlIHJlZ2lzdGVyIGluc3RlYWQ7Ci0gIHJvdW5kIHVwIGluc3RlYWQgb2YgdHJ1bmNhdGUKLSAgUGF0Y2ggYnkgQW5kcmV3IER5ZXIsIDE1IEZlYiAyMDA1Ci0KLSogQWRkIFhpbGlueCBTcGFydGFuMyBmYW1pbHkgRlBHQSBzdXBwb3J0Ci0gIFBhdGNoIGJ5IEt1cnQgU3RyZW1lcmNoLCAxNCBGZWIgMjAwNQotCi0qIEZpeCBkcml2ZXJzL2NmaV9mbGFzaC5jOiB1c2UgaW5mby0+cmVzZXRfY21kIGluc3RlYWQgb2YgRkxBU0hfQ01EX1JFU0VUCi0gIFBhdGNoIGJ5IFphY2hhcnkgTGFuZGF1LCAxMSBGZWIgMjAwNQotCi0qIEZpeCBWT0g0MDUgU3VwcG9ydAotICBQYXRjaCBieSBNYXR0aGlhcyBGdWNocywgMjUgU2VwIDIwMDUKLQotKiBBZGRlZCBzdXBwb3J0IGZvciBQQ0kgYnJpZGdlIG9uIE1QQzgyNzJBRFMKLSAgUGF0Y2ggYnkgVml0YWx5IEJvcmR1ZywgRmViIDA5IDIwMDUKLQotKiBVcGRhdGUgbXVsdGljb3JlIENNOVhYIHN1cHBvcnQgZm9yIEludGVncmF0b3IgQVAgdG8gYWxsb3cgYm9vdGluZyBmcm9tIGZsYXNoCi0gIFBhdGNoIGJ5IEplYW4tUGF1bCBTYW1hbiwgOCBGZWIgMjAwNQotCi0qIEZpeCBzdHJzd2FiKCkgdG8gcmVsaWFibHkgZmluZCBlbmQgb2Ygc3RyaW5nCi0gIFBhdGNoIGJ5IEFuZHJldyBEeWVyLCAwOCBGZWIgMjAwNQotCi0qIEZpeCB0eXBvcyBpbiBpbmNsdWRlL3BwYzQ0MC5oCi0gIFBhdGNoIGJ5IEFuZHJldyBFIE1pbGVza2ksIDA0IEZlYiAyMDA1Ci0KLSogQWRkIFZpYnJlbiAod2FzIEFjY2VsZW50KSBQWEEyNTUgSURQIFN1cHBvcnQKLSAgUGF0Y2ggYnkgQ2xpZmYgQnJha2UsIDA0IEZlYiAyMDA1Ci0KLSogRml4IHRvb2xzL2JtcF9sb2dvLmMgdXNpbmcgaW5jb3JyZWN0IG9mZnNldCB0byBwaXhlbCBkYXRhCi0gIFBhdGNoIGJ5IEFuZHJldyBEeWVyLCAzMSBKYW4gMjAwNQotCi0qIEFkZCBBUk05NDZFIGNwdSBhbmQgY29yZSBtb2R1bGUgdGFyZ2V0czsgcmVtYXAgbWVtb3J5IHRvIDB4MDAwMDAwMDAKLSAgUGF0Y2ggYnkgUGV0ZXIgUGVhcnNlLCAyIEZlYiAyMDA1Ci0KLSogRml4IGVycm9yIGhhbmRsaW5nIGluIHRvb2xzL2Vudi9md19lbnYuYwotICBQYXRjaCBieSBBcmEgQXZhbmVzeWFuLCAwMSBGZWIgMjAwNQotCi0qIEZpeCBNR1Q1MTAwIFBTQyBiYXVkcmF0ZSBjYWxjdWxhdGlvbgotICBQYXRjaCBieSBTZWJhc3RpYW4gU2NoYXUsIDI3IEphbiAyMDA1Ci0KLSogT01BUDI0MnggZml4IGZvciBHUCBkZXZpY2UgYm9vdGluZwotICAtIEFkZCBTUkFNIHVubG9jayBmb3IgR1AgZGV2aWNlcy4KLSAgLSBDaGFuZ2UgRERSIERMTCB1bmxvY2sgdmFsdWUgdG8gYWxsb3cgRFBMTG91dCoxIG9wZXJhdGlvbi4KLSAgUGF0Y2hlcyBieSBSaWNoYXJkIFdvb2RydWZmLCAyMSBKYW4gMjAwNToKLQotKiBBZGQgc3VwcG9ydCBmb3IgQU1EJ3MgUGIxeDAwIGV2YWwgYm9hcmQ7Ci0gIGFkZCBNSUkgcm91dGluZXMgdG8gdGhlIGF1MXgwMCBldGhlcm5ldCBkcml2ZXI7Ci0gIGFkZCBVU0Igb2hjaSBkcml2ZXIgKHdvcmsgaW4gcHJvZ3Jlc3MpCi0gIFBhdGNoIGJ5IFRob21hcyBTYWlsZXIsIDIwIEphbiAyMDA1Ci0KLSogVXBkYXRlIG9tYXA1OTEyb3NrIGJvYXJkCi0gIFVzZSBkcml2ZXJzL2NmaV9mbGFzaC5jIGluc3RlYWQgb2YgcHJpdmF0ZSBmbGFzaCBkcml2ZXI7Ci0gIFJlbW92ZSBoYXJkY29kZWQgcGVyc29uYWxpemVkIHNldHRpbmdzIGZyb20gb21hcDU5MTJvc2suaDsKLSAgRml4IHNwYWNpbmcgd2l0aCAoUk8pIG1hcmtzIGluICdmbGluZm8nIG91dHB1dC4KLSAgUGF0Y2ggYnkgTWljaGFlbCBCZW5kemljaywgMTQgSmFuIDIwMDUKLQotKiBGaXggd2FybmluZ3MgZm9yIFBDSSBjb2RlIG9uIGl4cAotICBQYXRjaCBieSBKb2UgPGxneHVlQHlhaG9vLmNvbT4sIDEzIEphbiAyMDA1Ci0KLSogdmlydGV4MiBmaXggZm9yIGJvZ3VzIGRvd25sb2FkIGVycm9yIG1lc3NhZ2VzCi0gIFRoZSB2aXJ0ZXgyIEZQR0EgZG93bmxvYWQgY29kZSB3YXRjaGVzIGZvciBpbml0IGdvaW5nIGFjdGl2ZSBkdXJpbmcKLSAgYSBkb3dubG9hZCBvZiBjb25maWcgZGF0YSBhcyBhbiBlcnJvciBjb25kaXRpb24uIGluaXQgYWxzbyBnb2VzCi0gIGFjdGl2ZSBhZnRlciBhIGNvbmZpZ3VyYXRpb24gaXMgZmluaXNoZWQgaW4gY29uY2VydCB3aXRoIHRoZSBkb25lCi0gIHNpZ25hbC4gU28gZmFyLCB0aGUgY29kZSBkb2VzIG5vdCBjaGVjayBmb3IgZG9uZSBhY3RpdmUgdW50aWwgYWxsCi0gIG9mIHRoZSBjb25maWd1cmF0aW9uIGRhdGEgaXMgc2VudC4gSWYgY29uZmlndXJhdGlvbiBkYXRhIGhhcyBhIGZldwotICBleHRyYSBwYWQgYnl0ZXMgYXQgdGhlIGVuZCwgdGhpcyB3b3VsZCBjYXVzZSBhbiBlcnJvciBtZXNzYWdlIGV2ZW4KLSAgdGhvdWdoIHRoZSBkb3dubG9hZCBoYWQgc3VjZWVkZWQuCi0gIE5PVEU6IHZpcnRleDIgc2xhdmUgc2VyaWFsIGFuZCBzcGFydGFuMiB2ZXJzaW9ucyBtYXkgc3RpbGwgaGF2ZSB0aGUKLSAgc2FtZSBwcm9ibGVtLgotICBQYXRjaCBieSBBbmRyZXcgRHllciwgMTIgSmFuIDIwMDUKLQotKiBPcHRpbWl6ZSBmbGFzaF9tYWtlX2NtZCBpbiBkcml2ZXJzL2NmaV9mbGFzaC5jIGZvciBsaXR0bGUgZW5kaWFuCi0gIEZpeCAiV0FSTklORzogZmxhc2hfbWFrZV9jbWQ6IHVuc3VwcHBvcnRlZCBMaXR0bGVFbmRpYW4gbW9kZSIKLSAgbWVzc2FnZSB3aGVuIHByb2JpbmcgZm9yIG5vbmV4aXN0ZW50IGZsYXNoIGluIGxpdHRsZSBlbmRpYW4gbW9kZS4KLSAgQXMgYSBzaWRlIGVmZmVjdCBtb3JlIGVmZmljaWVudCBhbmQgc21hbGxlciBjb2RlIGlzIGdlbmVyYXRlZCwKLSAgd2hpY2ggaXMgYWx3YXlzIGEgR29vZCBUaGluZyAoVE0pLgotICBQYXRjaCBieSBMYWRpc2xhdiBNaWNobCwgMjQgU2VwIDIwMDUKLQotKiBVcGRhdGUgZm9yIFRGVFAgdXNpbmcgYSBmaXhlZCBVRFAgcG9ydAotICBVc2UgdGhlIGFwcHJvdmVkIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzLiBBZGRlZCAidGZ0cGRzdHAiIHRvCi0gIGFsbG93IHBvcnRzIG90aGVyIHRoYW4gNjkgcGVyIFRvbHVuYXkgT3JrdW4ncyByZWNvbW1lbmRhdGlvbi4KLSAgUGF0Y2ggYnkgSmVycnkgVmFuIEJhcmVuLCAxMiBKYW4gMjAwNQotCi0qIEFsbG93IHRvIGZvcmNlIFRGVFAgdG8gdXNlIGEgZml4ZWQgVURQIHBvcnQKLSAgKEFkZCBhIGNvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19URlRQX1BPUlQgYW5kIG9wdGlvbmFsIGVudgotICB2YXJpYWJsZSB0ZnRwcG9ydCkKLSAgUGF0Y2ggYnkgSmVycnkgVmFuIEJhcmVuLCAxMCBKYW4gMjAwNQotCi0qIEZpeCBldGhlcm5ldCB0aW1lb3V0cyBvbiBkYmF1MTU1MCBhbmQgb3RoZXIgYXUxeDAwIHN5c3RlbXMKLSAgUGF0Y2ggYnkgTGVpZiBMaW5kaG9sbSwgMjkgRGVjIDIwMDQKLQotKiBDbGVhbnVwOiBmaXggYnJva2VuIGJ1aWxkcwotCi0qIEZpeCBQSFkgYWRkcmVzcyBhcmd1bWVudCBwYXNzaW5nIHdpdGggbWlpIGluZm8gY29tbWFuZAotICBQYXRjaCBieSBBbmRyZXcgRHllciwgMjggRGVjIDIwMDQKLQotKiBDbGVhbnVwIChQUEM0eHggaXMgQU1DQyBub3cpCi0KLSogZXNkIENQQ0kyRFAgYm9hcmQgYWRkZWQKLSAgUGF0Y2ggYnkgTWF0dGhpYXMgRnVjaHMsIDIyIFNlcCAyMDA1Ci0KLSogZXNkIFBNQzQwNSBib2FyZCB1cGRhdGVkCi0gIFBhdGNoIGJ5IE1hdHRoaWFzIEZ1Y2hzLCAyMiBTZXAgMjAwNQotCi0qIEFkZCBTTTUwMSBzdXBwb3J0IHRvIEhINDA1IGJvYXJkLgotICBBZGQgc3VwcG9ydCBmb3IgZ3ppcCBjb21wcmVzc2VkIGJtcCdzIChDT05GSUdfVklERU9fQk1QX0daSVApLgotICBBZGQgc3VwcG9ydCBmb3IgZWVwcm9tIHdyaXRlLWVuYWJsZSAoQ0ZHX0VFUFJPTV9XUkVOKS4KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyMiBTZXAgMjAwNQotCi0qIEZpeCBhdXRvbmVnb3RpYXRpb24gaW4gdHNlYyBldGhlcm5ldCBkcml2ZXIKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyMSBTZXAgMjAwNQotCi0qIEZpeCBidWcgaW4gYXV0b191cGRhdGUgKHRyYWIgYm9hcmQpCi0gIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDE2IFNlcCAyMDA1Ci0KLSogRml4IGNvbXB1dGF0aW9uIG9mIGZyYW1lYnVmZmVyIHBhbGV0dGUgZm9yIDhicHAgTENEIGJpdG1hcHMKLSAgUGF0Y2ggYnkgRnJhbmNlc2NvIE1hbmRyYWNjaSwgMTYgU2VwIDIwMDUKLQotKiBVcGRhdGUgY29uZmlndXJhdGlvbiBmb3IgSU5LQTR4MCBib2FyZAotCi0qIFVwZGF0ZSBjb25maWd1cmF0aW9uIGZvciBQTTg1NCBib2FyZAotICBCYXNlZCBvbiBwYXRjaCBieSBSLiBMb2VmZmwsIDIwIEp1bCAyMDA1Ci0KLSogQWRkIFBDSSBzdXBwb3J0IHRvIFRRTTg1NDAgYW5kIFRRTTg1NjAgYm9hcmRzCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTUgU2VwIDIwMDUKLQotKiBVcGRhdGUgQU1DQyBZb3NlbWl0ZSB0byBnZXQgYSBjb25zaXN0ZW50IHNldHVwIGZvciBhbGwgQU1DQyBldmFsCi0gIGJvYXJkcyAoYmF1ZHJhdGUsIGVudmlyb25tZW50Li4uKS4gRmxhc2ggZHJpdmVyIGZpeGVkLgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE1IFNlcCAyMDA1Ci0KLSogRml4IHByb2JsZW0gaW4gNDQwR1AgZXRoZXJuZXQgZHJpdmVyIChlYm9ueSkuIEFkZCBzdXBwb3J0IGZvciAybmQKLSAgZXRoZXJuZXQgcG9ydCBvbiBlYm9ueS4KLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCA3IFNlcCAyMDA1Ci0KLSogQWRkZWQgc3VwcG9ydCBmb3IgbXRkZGV2bnVtIGFuZCBtdGRkZXZuYW1lIHZhcmlhYmxlcyAobXRkcGFydHMgY29tbWFuZCkKLQotKiBDaGFuZ2UgZGVmYXVsdCBjb25zb2xlIGJhdWQgcmF0ZSBmb3Igc3R4eHRjIGJvYXJkCi0KLSogQWRkIEkyQyBzdXBwb3J0IHRvIFRRTTg1NDAgYW5kIFRRTTg1NjAgYm9hcmRzIChFRVBST00sIFJUQywgTE03NS1EVFQpLgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDMxIEF1ZyAyMDA1Ci0KLSogRml4IGRlZmF1bHQgY29tbWFuZCBzZXQgKGRvbid0IGluY2x1ZGUgQ0ZHX0NNRF9ESVNQTEFZIGNvbW1hbmQpCi0gIFBhdGNoIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAwMiBTZXAgMjAwNQotCi0qIENsZWFudXAKLQotKiBFbmFibGUgU003MTIgZHJpdmVyIHN1cHBvcnQgZm9yIEhNSTEwMDEgYm9hcmQuCi0KLSogRml4IHByb2JsZW1zIHdpdGggbGQgdmVyc2lvbiAyLjE2IChkb3Qgb3V0c2lkZSBzZWN0aW9ucyBwcm9ibGVtKQotICBQb2ludGVkIG91dCBieSBHZXJoYXJkIEphZWdlciwgMzEgQXVnIDIwMDU7Ci0gIGNmLiBodHRwOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAwNS0wOC9tc2cwMDQxMi5odG1sCi0KLSogUHJlcGFyZSBVLUJvb3QgZm9yIGdjYy00Lng6IGZpeCBnbG9iYWwgZGF0YSBwb2ludGVyIGluaXRpYWxpemF0aW9uCi0KLSogQWRqdXN0IENTMyB0aW1pbmdzIG9uIEhNSTEwMDEgYm9hcmQgZm9yIGRvdCBtYXRyaXggZGlzcGxheSB1bmRlciBMaW51eAotCi0qIEFkZCBrZXlib2FyZCBhbmQgZG90IG1hdHJpeCBkaXNwbGF5IHN1cHBvcnQgZm9yIEhNSTEwMDEgYm9hcmQuCi0KLSogUHJlcGFyZSBVLUJvb3QgZm9yIGdjYy00LngKLQotKiBGaXhlZCBCYW1ib28gcG9ydCB0byBlbmFibGUgcnVubmluZyB3aXRob3V0IEREUi1ESU1NCi0gIChCYW1ib28gaGFzIGFsc28gNjRNQiBvbmJvYXJkIEREUikKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyNCBBdWcgMjAwNQotCi0qIE1lcmdlZCA0MDVncF9lbmV0LmMgYW5kIDQ0MGd4X2VuZXQuYyB0byBnZW5lcmljIDR4eF9lbmV0LmMKLSAgbm93IGhhbmRsaW5nIGFsbCA0eHggY3B1J3MKLSAgUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxNiBBdWcgMjAwNQotCi0qIEZpeCBtYWtlIGRlcGVuZGVuY2llcyBmb3IgYXQ5MXJtOTIwMCBhbmQga3M4Njk1IGNwdXMKLSAgUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMjMgQXVnIDIwMDUKLQotKiBBZGQgSkZGUzIgc3VwcG9ydCBmb3IgVFFNNTIwMCBib2FyZAotCi0qIEFkZCBlc2QgY3BjaTUyMDAgYW5kIHBmNTIwMCBib2FyZHMKLSAgUGF0Y2ggYnkgUmVpbmhhcmQgQXJsdCwgMjIgQXVnIDIwMDUKLQotKiBGaXggc3lzY2xvY2sgZm9yIFRRTTg1NDAgYW5kIFRRTTg1NjAgYm9hcmRzCi0gIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDI1IEp1bCAyMDA1Ci0KLSogSW5pdGlhbGl6ZSBzZXJpYWwjIGFuZCBldGhhZGRyIGZyb20gbWFudWZhY3R1cmVyIGRhdGEgaW4gRUVQUk9NIG9uIENNQy1QVTIKLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMDggSnVuIDIwMDUKLQotKiBBZGQgbmV3IGJvYXJkIHNwZWNpZmljIGNvbW1hbmRzIGZvciBUUU01MjAwL1NUSzUyWFgKLSAgLSBTb3VuZCBjb21tYW5kcyAoYmVlcCwgd2F2LCBzb3VuZCkKLSAgLSBUZXN0IGNvbW1hbmRzIChsZWQsIGNhbiwgYmFja2xpZ2h0LCByczIzMikKLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMDIgTWF5IDIwMDUKLQotKiBDaGFuZ2UgbWFpbiBjbG9jayBvbiBDTUMtUFUyIGJvYXJkIGZyb20gMjA3IE1IeiB0byAxNzkgTUh6Ci0gIGJlY2F1c2Ugb2YgYSBidWcgaW4gdGhlIEFUOTFSTTkyMDAgQ1BVIFBMTAotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAyMiBBcHIgMjAwNQotCi0qIEFkZCBhdXRvbWF0aWMgSFcgZGV0ZWN0aW9uIGZvciBhbm90aGVyIENNQ19QVTIgdmFyaWFudAotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAyMCBBcHIgMjAwNQotCi0qIFJlbW92ZSBDT05GSUdfQVQ5MVJNOTIwMERLIGluIENNQy1QVTIgY29uZmlndXJhdGlvbgotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAxOSBBcHIgMjAwNQotCi0qIEZpeCBpbml0aWFsaXphdGlvbiBwcm9ibGVtIG9uIFRRTTUyMDAgd2l0aG91dCBTTTUwMQotICBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAwOCBBcHIgMjAwNQotCi0qIEFkZCBSVEMgc3VwcG9ydCBmb3IgU1RLNTJYWC4yMDAKLSAgUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMDcgQXByIDIwMDUKLQotKiBBZGQgc3VwcG9ydCBmb3IgSUZNIG8yZG50IGJvYXJkCi0KLSogRW5hYmxlIFBDSSBvbiBobWkxMDAxIGJvYXJkCi0KLSogRml4IHJldHVybiB2YWx1ZXMgb2YgdGhlIGpmZnMyIGNvbW1hbmRzIGxzL2ZzbG9hZC9mc2luZm8sCi0gIHNvIHdlIGNhbiB1c2UgdGhlbSB0bywgZS5nLiwgY2hlY2sgdGhlIGV4aXN0ZW5jZSBvZiBhIGZpbGUgd2l0aAotICAiaWYgbHMgZm9vOyB0aGVuIHRoaXM7IGVsc2UgdGhhdDsgZmkiIGluIHRoZSBodXNoIHNoZWxsCi0gIFBhdGNoIGJ5IEFuZHJlYXMgRW5nZWwsIDE2IEF1Z3VzdCAyMDA1Ci0KLSogQ29kaW5nIHN0eWxlIGNsZWFudXAKLQotKiBBZGQgc3VwcG9ydCBmb3IgU2lsaWNvbiBUdXJua2V5IGVYcHJlc3MgWFRjIChtcGM4N3gvODh4KSBib2FyZC4KLSAgUGF0Y2ggYnkgRGFuIE1hbGVrIGFuZCBQYW50ZWxpcyBBbnRvbmlvdSwgMTUgQXVnIDIwMDUKLQotKiBDaGVjayByZXR1cm4gdmFsdWUgb2YgbWFsbG9jIGluIDQ0MGd4X2VuZXQuYwotICBQYXRjaCBieSBUcmF2aXMgQi4gU2F3eWVyLCAxOCBKdWwgMjAwNQotCi0qIEFkZCBTYW5kYnVyc3QgTWV0cm9ib3ggYW5kIFNhbmRidXJzdCBLYXJlZiBib2FyZCBzdXBwb3J0IHBhY2thZ2VzLgotICBTZWNvbmQgc2VyaWFsIHBvcnQgb24gNDQwR1ggbm93IGRlZmluZWQgYXMgYSBzeXN0ZW0gZGV2aWNlLgotICBBZGQgJ1Nob3J0IEV0Y2gnIGNvZGUgZm9yIENpY2FkYSBQSFkgd2l0aGluIDQ0MGd4X2VuZXQuYwotICBQYXRjaCBieSBUcmF2aXMgQi4gU2F3eWVyLCAxMiBKdWwgMjAwNQotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMS4xLjM6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogTWlub3IgY29kZSBjbGVhbnVwCi0KLSogQWRkIGZvcmdvdHRlbiBuZXcgZmlscyBmcm9tIGxhdGVzdCBWb2ljZUJsdWUgdXBkYXRlCi0KLSogTWFrZSBib290cmV0cnkgZmVhdHVyZSB3b3JrIHdpdGggaHVzaCBzaGVsbC4KLSAgQ2F2ZWF0OiB0aGlzIGN1cnJlbnRseSAqcmVxdWlyZXMqIENPTkZJR19SRVNFVF9UT19SRVRSWSB0byBiZSBzZXQsIHRvby4KLSAgUGF0Y2ggYnkgQW5kcmVhcyBFbmdlbCwgMTkgSnVsIDIwMDUKLQotKiBVcGRhdGUgSHltb2QgQm9hcmQgRGF0YWJhc2UgUEhQIGNvZGUgaW4gInRvb2xzIiBkaXJlY3RvcnkKLSAgUGF0Y2ggYnkgTXVycmF5IEplbnNlbiwgMDEgSnVsIDIwMDUKLQotKiBNYWtlICJ0ciIgY29tbWFuZCB1c2UgUE9TSVggY29tcGxpYW50OyBleHBvcnQgSE9TVE9TIG1ha2UgdmFyaWFibGUKLSAgUGF0Y2ggYnkgTXVycmF5IEplbnNlbiwgMzAgSnVuIDIwMDUKLQotKiBGaXggTXVycmF5IEplbnNlbidzIG1haWwgYWRkcmVzcy4KLSAgUGF0Y2ggYnkgTXVycmF5IEplbnNlbiwgMzAgSnVuIDIwMDUKLQotKiBQcmVzZXJ2ZSBQSFlfQk1DUiBkdXJpbmcgYSBzb2Z0IHJlc2V0LgotICBQYXRjaCBieSBDYXJsIFJpZWNoZXJzLCAyNCBKdW4gMjAwNQotCi0qIFZvaWNlQmx1ZSB1cGRhdGU6IGVlcHJvbSB0b29sIGNhbiBhbHNvIHN0b3JlIGZpcm13YXJlIHZlcnNpb24gbm93LgotICBlZXByb20uYmluIGlzIHJ1bmFibGUgYnkganVtcGluZyBhdCBsb2FkIGFkZHJlc3MuCi0gIFBhdGNoIGJ5IExhZGlzbGF2IE1pY2hsLCAyMyBNYXkgMjAwNQotCi0qIE1vdmUgdGhlIEFUOTFSTTkyMDBESyB0byB0aGUgQVJNIFN5c3RlbXMgbGlzdC4KLSAgUGF0Y2ggYnkgQW5kZXJzIExhcnNlbiwgMjYgQXByIDIwMDUKLQotKiBFbGltaW5hdGUgY2FsbHMgb2YgQVJNIGxpYmdjYy5hIGhlbHBlciBmdW5jdGlvbnMgX2RpdnNpMyBhbmQgX21vZHNpMwotICBQYXRjaCBieSBBbmRlcnMgTGFyc2VuLCAyNiBBcHIgMjAwNQotCi0qIG1lYXN1cmVfZ2NsaygpIGlzIG5lZWRlZCB3aGVuIERFQlVHIGlzIGVuYWJsZWQKLSAgUGF0Y2ggYnkgQnJ5YW4gTydEb25vZ2h1ZSwgMjUgQXByIDIwMDUKLQotKiBBZGQgVVBELUNoZWNrc3VtIGNvZGUsIGZpeCBwcm9ibGVtIGluIG5ldC5jIChyZXR1cm4gaW5zdGVhZCBvZiBicmVhaykKLSAgUGF0Y2ggYnkgUmVpbmhhcmQgQXJsdCwgMTIgQXVnIDIwMDUKLQotKiBlc2QgUENJNDA1IGJvYXJkIHVwZGF0ZWQKLSAgUGF0Y2ggYnkgTWF0dGhpYXMgRnVjaHMsIDI4IEp1bCAyMDA1Ci0KLSogZXNkIFdVSDQwNSBhbmQgRFU0MDUgYm9hcmQgdXBkYXRlZAotICBQYXRjaCBieSBNYXR0aGlhcyBGdWNocywgMjcgSnVsIDIwMDUKLQotKiBGaXggcHJvYmxlbSBpbiBjbWRfbmFuZC5jIChvbmx5IHdoZW4gZGVmaW5lZCBDRkdfTkFORF9TS0lQX0JBRF9ET1RfSSkKLSAgUGF0Y2ggYnkgTWF0dGhpYXMgRnVjaHMsIDQgTWF5IDIwMDUKLQotKiBVcGRhdGUgQU1DQyBZb3NlbWl0ZSB0byBnZXQgYSBjb25zaXN0ZW50IHNldHVwIGZvciBhbGwgQU1DQyBldmFsCi0gIGJvYXJkcyAoYmF1ZHJhdGUsIGVudmlyb25tZW50Li4uKS4gRmxhc2ggZHJpdmVyIGZpeGVkLgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDExIEF1ZyAyMDA1Ci0KLSogQ2hhbmdlZCBBTUNDIEJ1YmluZ2EgKDQwNUVQKSBjb25maWd1cmF0aW9uIHRvIHN1cHBvcnQgMm5kIGV0aCBwb3J0Ci0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTEgQXVnIDIwMDUKLQotKiBBZGQgTkFORCBGTEFTSCBzdXBwb3J0IGZvciBBTUNDIEJhbWJvbyA0NDBFUCBldmFsIGJvYXJkCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTEgQXVnIDIwMDUKLQotKiBBZGQgY29uZmlndXJhdGlvbiBmb3IgSUZNIEFFViBGSUZPIGJvYXJkLgotICBNaW5vciBjb2Rpbmcgc3R5bGUgY2xlYW51cC4KLQotKiBBZGQgY29uZmlndXJhdGlvbiBmb3IgSUZNIFNQSSBldmFsIGJvYXJkCi0KLSogRml4IENvbXBhY3RGbGFzaCBwcm9ibGVtIG9uIEhNSTEwMDEgYm9hcmQKLQotKiBNYWtlIG5ldyAibXRkcGFydHMiIGNvZGUgYnVpbGQgd2l0aCBvbGRlciBjb21waWxlcnMKLSAgUGF0Y2ggYnkgQW5kcmVhIFNjaWFuLCAwOSBBdWcgMjAwNQotCi0qIENoYW5nZWQgQ09ORklHXzQ0MF9HWCwgQ09ORklHXzQ0MF9FUCBhbmQgQ09ORklHXzQ0MF9HUiBvcHRpb25zIHRvCi0gIENPTkZJR180NEdYLCBDT05GSUdfNDQwRVAgYW5kIENPTkZJR180NDBHUiBmb3IgYSBjb25zaXN0ZW50IGRlc2lnbgotICB3aXRoIHRoZSA0MDUgZGVmaW5lcyBhbmQgdGhlIGxpbnV4IGtlcm5lbCBkZWZpbmVzLgotICBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA4IEF1ZyAyMDA1Ci0KLSogRml4IGNvbXBpbGVyIHdhcm5pbmdzIHdpdGggb2xkZXIgR0NDIHZlcnNpb25zCi0KLSogQWRkIGNvbW1vbiAod2l0aCBMaW51eCkgTVREIHBhcnRpdGlvbiBzY2hlbWUgYW5kICJtdGRwYXJ0cyIgY29tbWFuZAotCi0gIE9sZCwgb2Jzb2xldGUgYW5kIGR1cGxpY2F0ZWQgY29kZSB3YXMgY2xlYW5lZCB1cCBhbmQgcmVwbGFjZSBieSB0aGUKLSAgbmV3IHBhcnRpdGlvbmluZyBtZXRob2QuIFRoZXJlIGFyZSB0d28gcG9zc2libGUgYXBwcm9hY2hlcyBub3c6Ci0KLSAgVGhlIGZpcnN0IG9uZSBpcyB0byBkZWZpbmUgYSBzaW5nbGUsIHN0YXRpYyBwYXJ0aXRpb246Ci0KLSAgI3VuZGVmIENPTkZJR19KRkZTMl9DTURMSU5FCi0gICNkZWZpbmUgQ09ORklHX0pGRlMyX0RFVgkJICJub3IwIgotICAjZGVmaW5lIENPTkZJR19KRkZTMl9QQVJUX1NJWkUJIDB4RkZGRkZGRkYJLyogdXNlIHdob2xlIGRldmljZSAqLwotICAjZGVmaW5lIENPTkZJR19KRkZTMl9QQVJUX1NJWkUJIDB4MDAxMDAwMDAJLyogdXNlIDFNQiAqLwotICAjZGVmaW5lIENPTkZJR19KRkZTMl9QQVJUX09GRlNFVAkgMHgwMDAwMDAwMAotCi0gIFRoZSBzZWNvbmQgbWV0aG9kIHVzZXMgdGhlIG10ZHBhcnRzIGNvbW1hbmQgbGluZSBvcHRpb24gYW5kIGR5bmFtaWMKLSAgcGFydGl0aW9uaW5nOgotCi0gIC8qIG10ZHBhcnRzIGNvbW1hbmQgbGluZSBzdXBwb3J0ICovCi0gICNkZWZpbmUgQ09ORklHX0pGRlMyX0NNRExJTkUKLSAgI2RlZmluZSBNVERJRFNfREVGQVVMVAkgIm5vcjE9enVtYS0xLG5vcjI9enVtYS0yIgotICAjZGVmaW5lIE1URFBBUlRTX0RFRkFVTFQJICJtdGRwYXJ0cz16dW1hLTE6LShqZmZzMiksenVtYS0yOi0odXNlcikiCi0KLSAgQ29tbWFuZCBsaW5lIG9mIGNvdXJzZSBwcm9kdWNlcyBiaWdnZXIgaW1hZ2VzLCBhbmQgbWF5IGJlIGluYXBwcm9wcmlhdGUKLSAgZm9yIHNvbWUgdGFyZ2V0cywgc28gYnkgZGVmYXVsdCBpdCdzIG9mZi4KLQotKiBGaXggYnVpbGQgcHJvYmxlbXMgZm9yIFBNODU2IEJvYXJkCi0KLSogRml4IHNpZ24gZXh0ZW5zaW9uIGJ1ZyBpbiAnZnBnYSBsb2FkYicgY29tbWFuZDsKLSAgbWFrZSAnZnBnYSBsb2FkYicgYWx3YXlzIHByaW50IHRoZSBmaWxlIGhlYWRlciBpbmZvCi0gIFBhdGNoIGJ5IEFuZHJldyBEeWVyLCAxMSBKYW4gMjAwNQotCi0qIEZpeCBlcnJvcnMgdGhhdCBvY2N1ciB3aGVuIGFjY2Vzc2luZyBTeXN0ZW1BQ0UgQ0YKLSAgUGF0Y2ggYnkgSmVmZiBBbmdpZWxza2ksIDA5IEphbiAyMDA1Ci0KLSogRG9jdW1lbnQgc3dpdGNoaW5nIGJldHdlZW4gVS1Cb290IGFuZCBQbGFuZXRDb3JlIG9uIFJQWGxpdGUKLSAgYnkgU2FtIFNvbmcsIDI0IERlYyAyMDA0Ci0KLSogRml4IFBvd2VyUVVJQ0MgSUkgbWFzayBkZXRlY3Rpb24uCi0gIFBhdGNoIGJ5IEV1Z2VuZSBTdXJvdmVnaW4sIDIwIERlYyAyMDA0Ci0KLSogQWRkIHN1cHBvcnQgZm9yIEFsdGVyYSBOSU9TIERLMUMyMCBib2FyZAotICBQYXRjaCBieSBTaGxvbW8gS3V0LCAxMyBEZWMgMjAwNAotCi0qIEFkZCBzdXBwb3J0IGZvciBlcDgyNDggYm9hcmQKLSAgUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMTIgRGVjIDIwMDQKLQotICBNaW5vciBjb2RlIGNsZWFudXAuCi0KLSogRml4IGJhdWRyYXRlIHNldHRpbmcgZm9yIEtHREIgb24gTVBDODI2MAotICBQYXRjaCBieSBIb0ppbiwgMTEgRGVjIDIwMDQKLQotKiBGaXggJ21paSBoZWxwJyB0ZXh0IGZvcm1hdHRpbmcKLSAgUGF0Y2ggYnkgQ29yeSBUdXNhciwgMTAgRGVjIDIwMDQKLQotKiBGaXggcmV0dXJuIGNvZGUgb2YgTkZTIGNvbW1hbmQKLSAgUGF0Y2ggYnkgSGlyb3NoaSBJdG8sIDExIERlYyAyMDA0Ci0KLSogRml4IHR5cG8KLQotKiBGaXggY29tcGlsZXIgd2FybmluZ3MgaW4gY3B1L3BwYzR4eC91c2JkZXYuYwotICBQYXRjaCBieSBTdGV2ZW4gQmxha2VzbGVlLCAwNCBBdWcgMjAwNQotCi0qIEFkZCBzdXBwb3J0IGZvciBBTUNDIEJhbWJvbyBQUEM0NDBFUCBldmFsIGJvYXJkCi0gIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDQgQXVnIDIwMDUKLQotKiBQYXRjaCBieSBKb24gTG9lbGlnZXIKLSAgRml4IHN0eWxlIGlzc3VlcyBwcmltYXJpbHkgaW4gODV4eCBhbmQgODN4eCBib2FyZHMuCi0gICAgLSBDKysgY29tbWVudHMKLSAgICAtIFRyYWlsaW5nIHdoaXRlIHNwYWNlCi0gICAgLSBJbmRlbnRhdGlvbiBub3QgYnkgVEFCCi0gICAgLSBFeGNlc3NpdmUgYW1vdW50IG9mIGVtcHR5IGxpbmVzCi0gICAgLSBUcmFpbGluZyBlbXB0eSBsaW5lcwotCi0qIFBhdGNoIGJ5IFJvbiBBbGRlciwgMTEgSnVsIDIwMDUKLSAgICBBZGQgWGlhbmdodWEgWGlhbyBhbmQgTHVuc2hlbmcgV2FuZydzIHN1cHBvcnQgZm9yIHRoZQotICAgIEdEQSBNUEM4NTQwIEVWQUwgYm9hcmQuCi0KLSogUGF0Y2ggYnkgRXJhbiBMaWJlcnR5Ci0gIEFkZCBzdXBwb3J0IGZvciB0aGUgRnJlZXNjYWxlIE1QQzgzNDlBRFMgYm9hcmQuCi0KLSogUGF0Y2ggYnkgSm9uIExvZWxpZ2VyLCAyNSBKdWwgMjAwNQotICBNb3ZlIHRoZSBUU0VDIGRyaXZlciBvdXQgb2YgY3B1L21wYzg1eHggYXMgaXQgd2lsbCBiZSBzaGFyZWQKLSAgYnkgdGhlIHVwY29taW5nIG1wYzgzeHggZmFtaWx5IGFzIHdlbGwuCi0KLSogUGF0Y2ggYnkgSm9uIExvZWxpZ2VyLCAwNSBNYXkgMjAwNQotICBJbXBsZW1lbnRlZCBzdXBwb3J0IGZvciBNUEM4NTQ4Q0RTIGJvYXJkLgotICBBZGRlZCBERFIgSUkgc3VwcG9ydCBiYXNlZCBvbiBTUEQgdmFsdWVzIGZvciBNUEM4NXh4IGJvYXJkcy4KLSAgVGhpcyByb2xsLXVwIHBhdGNoIGFsc28gaW5jbHVkZXMgYnVnZmllcyBmb3IgdGhlIHByZXZpb3VzbHkKLSAgcHVibGlzaGVkIHBhdGNoZXM6Ci0gICAgRERSSUkgQ1BPLCBwcmUgZVRTRUMsIDg1NDggTEJJVSwgQW5keSdzIFRTRUMsIGVUU0VDIDMmNCBJL08KLQotKiBQYXRjaCBieSBKb24gTG9lbGlnZXIsIDEwIEZlYiAyMDA1Ci0gIEFkZCBjb25maWcgb3B0aW9uIENPTkZJR19IQVNfRkVDIGNhbGxpbmcgb3V0IDg1NDAgRkVDIGZlYXR1cmVzLgotCi0qIFBhdGNoIGJ5IEpvbiBMb2VsaWdlciwgS3VtYXIgR2FsYSwgMDggRmViIDIwMDUKLSAgRm9yIE1QQzg1eHhDRFM6Ci0gICAgQWRkcyBSZWxheGVkIFRpbWluZyBUUkxYIGJpdCB0byBGTEFTSCBPUnggcmVncyB0byBhbGxvdwotICAgIGZvciBmYXN0ZXIgZmxhc2ggcGFydHMuCi0gICAgQWRkIGRvY3VtZW50YXRpb24gZm9yIEJSL09SIGZvciBGTEFTSC4KLQotKiBQYXRjaCBieSBKb24gTG9lbGlnZXIgMDggRmViIDIwMDUKLSAgRGV0ZXJtaW5lIEwyIENhY2hlIHNpemUgZHluYW1pY2FsbHkgb24gODVYWCBib2FyZHMuCi0KLSogUGF0Y2ggYnkgSm9uIExvZWxpZ2VyLCBLdW1hciBHYWxhIDA4IEZlYiAyMDA1Ci0gIC0gQ29udmVydCB0aGUgQ1BNMiBiYXNlZCBmdW5jdGlvbmFsaXR5IHRvIHVzZSBuZXcgQ09ORklHX0NQTTIKLSAgICBvcHRpb24gcmF0aGVyIHRoYW4gYSBteXJpYWQgb2YgQ09ORklHX01QQzg1NjAtbGlrZSB2YXJpYW50cy4KLSAgICBBcHBsaWVzIHRvIE1QQzg1eHggYW5kIE1QQzgyNjAgYm9hcmRzLCBpbmNsdWRlcyBzdHhncDMgYW5kIHNiYzg1NjAuCi0gICAgRWxpbWluYXRlcyB0aGUgQ09ORklHX01QQzg1NjAgb3B0aW9uIGVudGlyZWx5LiAgRGlzdHJpYnV0ZXMgdGhlCi0gICAgbmV3IENPTkZJR19DUE0yIG9wdGlvbiB0byBlYWNoIDgyNjAgYm9hcmQuCi0KLSogQWRkIHN1cHBvcnQgZm9yIE1pY3JvU3lzIFBNODU2IGJvYXJkCi0gIFBhdGNoIGJ5IEpvc2VmIFdhZ25lciwgMDMgQXVnIDIwMDUKLQotKiBNaW5vciBmaXhlcyB0byBQTTg1NCBib2FyZAotICBQYXRjaCBieSBKb3NlZiBXYWduZXIsIDAzIEF1ZyAyMDA1Ci0KLSogQWRqdXN0IGNvbmZpZ3VyYXRpb24gb2YgWEVOSUFYIGJvYXJkCi0gIChjaGlwIHNlbGVjdCBhbmQgR1BJTyByZXF1aXJlZCBmb3IgVVNCIG9wZXJhdGlvbikKLQotKiBGaXggdHlwb3MgaW4gY3B1Lzg1eHgvc3RhcnQuUyB3aGljaCBjYXVzZWQgRGF0YVRMQiBleGNlcHRpb24gdG8gYmUKLSAgcm91dGVkIHRvIHRoZSBXYXRjaGRvZyBoYW5kbGVyCi0gIFBhdGNoIGJ5IEV1Z2VuZSBTdXJvdmVnaW4sIDE4IEp1biAyMDA1Ci0KLSogKHJlKWVuYWJsZWQgc2NzaSBjb21tYW5kcyBkb19zY3NpKCkgYW5kIGRvX3Njc2lib290KCkKLSAgUGF0Y2ggYnkgRGVuaXMgUGV0ZXIsIDA2IERlYyAyMDA0Ci0KLSogRml4IGVuZGlhbmVzcyBwcm9ibGVtIGluIFRGVFAgLyBORlMgZGVmYXVsdCBmaWxlbmFtZXMKLSAgUGF0Y2ggYnkgSGlyb3NoaSBJdG8sIDA2IERlYyAyMDA0Ci0KLSogSWdub3JlIGJyb2FkY2FzdCBzdGF0dXMgYml0IGluIHJlY2VpdmVkIGZyYW1lcyBpbiA4MjYwIEZDQyBldGhlcm5ldAotICBsb29wYmFjayB0ZXN0IGNvZGUKLSAgUGF0Y2ggYnkgTXVycmF5IEplbnNlbiwgMTggSnVsIDIwMDUKLQotKiBGaXggdHlwbyBpbiBta2NvbmZpZyBzY3JpcHQgKHVzZWQgPT0gaW5zdGVhZCBvZiA9KQotICBQYXRjaCBieSBNdXJyYXkgSmVuc2VuLCAxOCBKdWwgMjAwNQotCi0qIENsZWFudXAgYnVpbGQgcHJvYmxlbXMgb24gNjQgYml0IGJ1aWxkIGhvc3RzCi0KLSogVXBkYXRlIE1BSU5UQUlORVJTIGZpbGUKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDAxIEF1ZyAyMDA1OgotICAtIE1ham9yIGNsZWFudXAgZm9yIEFNQ0MgZXZhbCBib2FyZHMgV2FsbnV0LCBCdWJpbmdhLCBFYm9ueSwgT2NvdGVhCi0gICAgKGZvcm1lciBJQk0gZXZhbCBib2FyZCkuIFBsZWFzZSBzZWUgImRvYy9SRUFETUUuQU1DQy1ldmFsLWJvYXJkcy1jbGVhbnVwIgotICAgIGZvciBkZXRhaWxzLgotICAtIFN5Y2Ftb3JlIChQUEM0MDVHUHIpIGV2YWwgYm9hcmQgYWRkZWQgKFdhbG51dCBwb3J0IGlzIGV4dGVuZGVkCi0gICAgdG8gcnVuIG9uIGJvdGggNDA1R1AgYW5kIDQwNUdQciBldmFsIGJvYXJkcykuCi0KLSogUGF0Y2ggYnkgU3RldmVuIEJsYWtlc2xlZSwgMjcgSnVsIDIwMDU6Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIEFNQ0MgUFBDNDQwRVAvR1IuCi0gIC0gQWRkIHN1cHBvcnQgZm9yIEFNQ0MgWW9zZW1pdGUgUFBDNDQwRVAgZXZhbCBib2FyZC4KLSAgLSBBZGQgc3VwcG9ydCBmb3IgQU1DQyBZZWxsb3dzdG9uZSBQUEM0NDBHUiBldmFsIGJvYXJkLgotCi0qIE1pbm9yIGZpeGVzIGZvciBQUENoYW1lbGVvbiBCb2FyZDoKLSAgLSBmaXggYWxpZ25tZW50IG9mIE5BTkQgc2l6ZQotICAtIG1ha2UgY29kZSBkbyB3aGF0IHRoZSBjb21tZW50IHNheXMKLQotKiBJbXBsZW1lbnQgaC93IHNlY3RvciBwcm90ZWN0aW9uIHN0YXR1cyBzeW5jaHJvbml6YXRpb24gYXQgYm9vdC4KLSAgVGhlIGNvZGUgaXMgcHJvdmlkZWQgZm9yLCBhbmQgd2FzIHRlc3RlZCBvbiwgdGhlIFl1a29uL0FsYXNrYQotICBhbmQgUE01MjAgYm9hcmRzIG9ubHkuCi0KLSAgQSBidWcgaW4gZmxhc2hfcmVhbF9wcm90ZWN0KCkgZm9yIHRoZSBZdWtvbiBib2FyZCB3YXMgZml4ZWQgYnkKLSAgYWRkaW5nIGEgZnVuY3Rpb24gdGhhdCB0ZWxscyBpZiB0d28gYmFua3MgYXJlIG9uIG9uZSBmbGFzaCBjaGlwLgotCi0qIEZpeCBzeXNtb24gUE9TVCBwcm9ibGVtOiBjaGVjayBJMkMgZXJyb3IgY29kZXMKLSAgVGhpcyBmaXhlcyBhIHByb2JsZW0gb2YgZGlzcGxheWluZyBib2d1cyB2b2x0YWdlcyB3aGVuIHRoZSB2b2x0YWdlcwotICBhcmUgc28gbG93IHRoYXQgdGhlIEkyQyBkZXZpY2VzIHN0YXJ0IGZhaWxpbmcgd2hpbGUgdGhlIHJlc3Qgb2YgdGhlCi0gIHN5c3RlbSBrZWVwcyBydW5uaW5nLgotCi0qIFBhdGNoIGJ5IENlZHJpYyBWaW5jZW50LCA2IEp1bCAyMDA1OgotICBGaXggQ0ZHX0NNRF9TRVRHRVREQ1IgaGFuZGxpbmcgaW4gImNvbW1vbi9jbWRfZGNyLmMiCi0KLSogUGF0Y2ggYnkgSm9uIExvZWxpZ2VyLCAyMCBKdWwgMjAwNToKLSAgQWRkIG1pc3NpbmcgUENJIElPIHBvcnQgZGVmaW5pdGlvbnMuCi0KLSogQWRkIENvbXBhY3RGbGFzaCBzdXBwb3J0IGZvciBITUkxMDAxIGJvYXJkLgotCi0qIEFkanVzdCBwcmludGVkIGJvYXJkIElEIGZvciBMV01PTiBib2FyZC4KLQotKiBGaXggbG93LWxldmVsIE9IQ0kgdHJhbnNmZXJzIGZvciBBUk05MjB0IGFuZCBNUEM1eHh4Ci0KLSogQWRkIG5ldyBhcmd1bWVudCBmb3JtYXQgZm9yIGZsYXNoIGNvbW1hbmRzIHRvIGFsbG93IGZvciB1c2FnZSBsaWtlCi0gICJlcmFzZSAkKGFkZHIpICskKGZpbGVzaXplKSIsIGkuIGUuIGEgc2l6ZSBhcmd1bWVudCBjYW4gYmUgdXNlZCBhbmQKLSAgVS1Cb290IHdpbGwgYXV0b21hdGljaWFsbHkgZmluZCB0aGUgZW5kIG9mIHRoZSBjb3JyZXNwb25kaW5nIHNlY3Rvci4KLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDUgSnVsIDIwMDU6Ci0gIFVwZGF0ZSB1YzEwMCBib2FyZCBQSFkgc2V0dXAKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDEgSnVsIDIwMDU6Ci0gIEZpeCBQSFkgYWRkcmVzcyBmb3IgQ0FUY2VudGVyIGJvYXJkIChub3cgY29ycmVjdCEpCi0KLSogUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAzMCBKdW4gMjAwNToKLSAgRml4IFBIWSBhZGRyZXNzZXMgZm9yIFBQQ2hhbWVsZW9uIGFuZCBDQVRjZW50ZXIgYm9hcmRzCi0gIENoYW5nZSBNQUlOVEFJTkVSIGZvciBtb3N0IGVzZCBib2FyZHMKLQotKiBQYXRjaCBieSBEZXRsZXYgWnVuZGVsLCAzMCBKdW4gMjAwNToKLSAgRml4IExDRCBsb2dvIGZvciBsd21vbiBib2FyZCB3aGljaCBnb3QgbG9zdCBpbiB0aGUgbWVyZ2Ugb2YgOHh4IGFuZCBQWEEgTENEIGNvZGUKLQotKiBGaXggYmF1ZHJhdGUgY2FsY3VsYXRpb24gcHJvYmxlbSBvbiBNUEM1MjAwIHN5c3RlbXMKLQotKiBBZGQgRUVQUk9NIGFuZCBSVEMgc3VwcG9ydCBmb3IgSE1JMTAwMSBib2FyZAotCi0qIFBhdGNoIGJ5IERldGxldiBadW5kZWwsIDIwIEp1biAyMDA1OgotICBGaXggaW5pdGlhbGl6YXRpb24gb2YgbG93IGFjdGl2ZSBHUElPIHBpbnMgb24gaW5rYTR4MCBib2FyZAotCi0qIEVuYWJsZSByZWR1bmRhbnQgZW52aXJvbm1lbnQsIGRpc2FibGUgSFcgZmxhc2ggcHJvdGVjdGlvbiBvZgotICBITUkxMDAxIGJvYXJkCi0KLSogUGF0Y2ggYnkgVHJhdmlzIFNhd3llciwgMTAgSnVuIDIwMDU6Ci0gIEluaXRpYWxpemUgYWxsb2NhdGVkIGRldiBhbmQgcHJpdmF0ZSBodyBzdHJ1Y3R1cmVzCi0gIGFmdGVyIHRoZWlyIHJlc3BlY3RpdmUgYWxsb2NhdGlvbiBpbiA0NDBneF9lbmV0LmMKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAxMCBKdW4gMjAwNToKLSAgRml4IGJ5dGVvcmRlciBwcm9ibGVtcyB3aXRoIHNlY29uZCBhcmd1bWVudCBvZiAiYm9vdG0iIHdpdGgKLSAgc3RhbmRhbG9uZSBpbWFnZXM7Ci0KLSogQWRkIHN1cHBvcnQgZm9yIEhNSTEwMDEgYm9hcmQKLQotKiBEaXNhYmxlICJkYXRlIiBhbmQgInNudHAiIGNvbW1hbmRzIG9uIFRRTTg2Nk0KLQotKiBGaXggd2F0Y2hkb2cgcmVzZXQgcHJvYmxlbXMgb24gTFdNT04gYm9hcmQKLQotKiBQYXRjaCBieSBKdWVyZ2VuIFNlbGVudCwgMTcgTWF5IDIwMDU6Ci0gIEFkZCBzdXBwb3J0IGZvciBGdW5rd2VyayBWb1ZQTiBnYXRld2F5IG1vZHVsZS4KLQotKiBDbGVhbnVwIGRlYnVnIGNvZGUgZm9yIE1QQzgyMjAgRkVDIGRyaXZlcgotCi0qIEV4dGVuZCBidXJzdCBtb2RlIFJBTSB0ZXN0IHByb2dyYW0gdG8gdGFrZSBhIGxvb3AgY291bnQKLSAgKDAgPSBpbmZpbml0ZSkKLQotKiBVc2UgQ09ORklHX0RSSVZFUl9LUzg2OTVFVEggdG8gZW5hYmxlIEtTODY5NSBldGhlcm5ldCBkcml2ZXIgb24KLSAgdGhvc2UgYm9hcmRzIHRoYXQgdXNlIGl0LgotCi0qIFBhdGNoZXMgYnkgR3JlZyBVbmdlcmVyLCAxOSBNYXkgMjAwNToKLSAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIEtTODY5NVAgKEFSTSA5MjIgYmFzZWQpIENQVQotICAtIGFkZCBzdXBwb3J0IGZvciB0aGUgT3BlbkdlYXIgQ000MDA4LCBDTTQxMTYgYW5kIENNNDE0OCBib2FyZHMKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAxOSBNYXkgMjAwNToKLSAgQWRkIHN1cHBvcnQgZm9yIENPTkZJR19TRVJJQUxfVEFHIG9uIEFSTSBib2FyZHMKLQotKiBBZGQgUENJIHN1cHBvcnQgZm9yIFNvcmNlcnkgYm9hcmQuCi0gIENvZGUgY2xlYW51cCAoZXNwZWNpYWxseSBTb3JjZXJ5IC8gQWxhc2thIC8gWXVrb24gc2VyaWFsIGRyaXZlcikuCi0KLSogRml4IGNvbXBpbGUgcHJvYmxlbXMgY2F1c2VkIGJ5IG5ldyBidXJzdCBtb2RlIFNEUkFNIHRlc3Q7Ci0gIG1ha2UgcG9ydCBwaW5zIHRvIHRyaWdnZXIgbG9naWMgYW5hbHl6ZXIgY29uZmlndXJhYmxlCi0KLSogRml4IHRpbWVyIGhhbmRsaW5nIG9uIE1QQzg1eHggc3lzdGVtcwotCi0qIEZpeCBkZWJ1ZyBjb2RlIGluIG9tYXA1OTEyb3NrIGZsYXNoIGRyaXZlcgotCi0qIEFkZCBzdXBwb3J0IGZvciBNUEM4MjQ3IGJhc2VkICJJRFM4MjQ3IiBib2FyZC4KLQotKiBBZGQgc3VwcG9ydCBmb3IgMiB4IFRTRUMgaW50ZXJmYWNlcyBvbiB0aGUgVFFNODU0MCBib2FyZC4KLQotKiBPbiBMV01PTiB3ZSBtdXN0IHVzZSB0aGUgd2F0Y2hkb2cgdG8gcmVzZXQgdGhlIGJvYXJkIGFzIHRoZSBDUFUKLSAgZ2VuZXJlYXRlZCBIUkVTRVQgcHVsc2UgaXMgdG9vIHNob3J0IHRvIHJlc2V0IHRoZSBleHRlcm5hbAotICBjaXJjdWl0cnkuCi0KLSogQWRkIHRlc3QgdG9vbCB0byBleGVyY2lzZSBTRFJBTSBhY2Nlc3NlcyBpbiBidXJzdCBtb2RlCi0gIChhcyBzdGFuZGFsb25lIHByb2dyYW0sIE1QQzh4eC9Qb3dlclBDIG9ubHkpCi0KLSogSW5jcmVhc2UgQ0ZHX01PTklUT1JfTEVOIGZvciBSYXR0bGVyIGJvYXJkIHRvIG1hdGNoIGFjdHVhbCBjb2RlCi0gIHNpemUuCi0KLSogTWFqb3IgdXBhdGUgb2YgSkZGUzIgY29kZTsgbm93IGluIHN5bmMgd2l0aCBzbmFwc2hvdCBvZiBNVEQgQ1ZTIG9mCi0gIE1hcmNoIDEzLCAyMDA1KTsgbmV3IGNvbmZpZ3VyYXRpb24gb3B0aW9uIENPTkZJR19KRkZTMl9MWk9fTFpBUkkKLSAgYWRkZWQgdG8gc3VwcG9ydCBMWk8gYW5kIExaQVJJIGNvbXByZXNzaW9uIG1vZGVzICh1bmRlZmluZWQgYnkKLSAgZGVmYXVsdCkuCi0KLSogRml4IHByb2JsZW0gd2l0aCBzeW1ib2xpYyBsaW5rcyBpbiBKRkZTMiBjb2RlLgotCi0qIFVzZSBsaW5rZXIgQVNTRVJUIHN0YXRlbWVudCB0byBwcmV2ZW50IHVuZGV0ZWN0ZWQgb3ZlcmxhcHBpbmcgb2YKLSAgc2VjdGlvbnMgb24gUFBDaGFtZWxlb24gYm9hcmQ7IG90aGVyIGJvYXJkcyBtaWdodCB1c2UgdGhpcywgdG9vLgotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMDMgTWF5IDIwMDU6Ci0gIFVwZGF0ZSBmb3IgUDNHNAotICBGaXggcHJvYmxlbXMgaW4gY21kX3VuaXZlcnNlLmMKLQotKiBQYXRjaCBieSBNYXR0aGlhcyBGdWNocywgMDMgTWF5IDIwMDU6Ci0gIEFkZGVkIG1pc3NpbmcgdmFyaWFibGUgZGVjbGFyYXRpb24gaW4gY21kX25hbmQuYwotICBNb2RpZmllZCBDRkdfUENJX1BUTTFNUyBpbiBjb25maWdzL1BMVTQwNS5oIHRvIG1hcCAxMjhNQiByYW0KLQotKiBGaXggSU5LQTR4MDogdXNlIENTMSBhcyBncGlvX3drdXBfNiBvdXRwdXQKLQotKiBGaXggYnVnIGluIHRoZSBTRFJBTSBpbml0aWFsaXphdGlvbiBjb2RlIGZvciBjYW5tYiwgSWNlQ3ViZSBhbmQKLSAgUE01MjAgYm9hcmRzLgotICBGaXggUEhZIGFkZHJlc3MgZm9yIGNhbm1iIGJvYXJkLgotCi0qIENsZWFudXAgc2VyaWFsIGNvbnNvbGUgYmF1ZHJhdGUgY2FsY3VsYXRpb24gb24gQVQ5MVJNOTIwMDsKLSAgZ2V0IHJpZCBvZiBvYnNvbGV0ZSBDRkdfQVQ5MUNfQlJHUl9ESVZJU09SIGRlZmluaXRpb24KLQotKiBQYXRjaCBieSBNYXR0aGlhcyBGdWNocywgMTggQXByIDIwMDU6Ci0gIE1ha2UgUENJIHRhcmdldCBhZGRyZXNzIHNwYWNlcyBvbiBQTUM0MDUgYW5kIENQQ0k0MDUgYm9hcmRzCi0gIGNvbmZpZ3VyYWJsZSB2aWEgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0KLSogQXV0by1zaXplIFJBTSBvbiBjYW5tYiBib2FyZC4KLQotKiBBZGQgc3VwcG9ydCBmb3IgY2FubWIgYm9hcmQKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDEzIEFwciAyMDA1OgotICBVcGRhdGUgZm9yIGVzZCBhcGM0MDUKLQotKiBGaXhlcyBmb3IgVFFNODU2MCBib2FyZDoKLSAgLSBmaXggY2xvY2sgcmF0ZXMKLSAgLSByZW1vdmUgZGVidWcgbWVzc2FnZXMKLSAgLSBmaXggZmxhc2ggc2VjdG9yIHByb3RlY3Rpb24KLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAwNyBBcHIgMjAwNToKLSAgQWRkIGkyY19yZWdfd3JpdGUoKSBhbmQgaTJjX3JlZ193cml0ZSgpIGZvciBhdDkxcm05MjAwIEkyQwotCi0qIFBhdGNoZXMgYnkgU3RldmVuIFNjaG9seiwgMDcgQXByIDIwMDU6Ci0gIEZpeCBjb21waWxlciB3YXJuaW5nIGluIGFsdGVyYS5jCi0gIEZpeCB3YXJuaW5nIGluIGNwdS9hcm05MjB0L2F0OTFybTkyMDAvaTJjLmMKLQotKiBQYXRjaCBieSBMYWRpc2xhdiBNaWNobCwgMDYgQXByIDIwMDU6Ci0gIEZpeCB2b2ljZWJsdWUgY29uZmlndXJhdGlvbi4KLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA2IEFwciAyMDA1OgotICBVcGRhdGVzIGZvciBPQ09URUEgYm9hcmQ6Ci0gIC0gQ2hhbmdlZCBVLUJvb3Qgc2l6ZSBmcm9tIDUxMmtCeXRlIHRvIDI1NmtCeXRlCi0gIC0gRml4ZWQgZmxhc2ggZHJpdmVyIHRvIHN1cHBvcnQgYm9vdCBmcm9tIHNvbGRlcmVkIHVzZXIgZmxhc2gKLSAgLSBBZGRlZCBSRUFETUUgZm9yIHN3aXRjaCBmcm9tIFBJQlMgZmlybXdhcmUgdG8gVS1Cb290Ci0KLSogUGF0Y2ggYnkgVHJhdmlzIFNhd3llciwgMDUgQXByIDIwMDU6Ci0gIC0gQ2hhbmdlIHRpbWVyIGZyZXF1ZW5jeSBmb3IgcHBjIDQ0MCBmcm9tIDEwIG1zIHRvIDEgbXMuCi0gICAgUHJvYmxlbSBmb3VuZCBieSBBbmRyZXcgV296bmlhay4KLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAwNiBBcHIgMjAwNToKLSAgLSBjcmVhdGluZyBTb0Mgc3ViZGlyIGZvciBBdG1lbCBBVDkxUk05MjAwIGNwdS9hcm05MjB0L2F0OTFybTkyMDAKLSAgLSBtb3ZpbmcgY29kZSBvdXQgb2YgY3B1L2F0OTFybTkyMDAgaW50byBjcHUvYXJtOTIwdC9hdDkxcm05MjAwCi0KLSogUGF0Y2hlcyBieSBSb2JlcnQgV2hhbGV5LCAyOSBOb3YgMjAwNDoKLSAgLSB1cGRhdGUgdGhlIHB4YS1yZWdzLmggZmlsZSBmb3IgUFhBMjd4IGNoaXBzCi0gIC0gYWRkIFBYQTI3eCBiYXNlZCBBRFNWSVggYm9hcmQKLSAgLSBhZGQgc3VwcG9ydCBmb3IgTU1DIG9uIFBYQTI3eCBwcm9jZXNzb3JzCi0KLSogUGF0Y2ggYnkgQW5kcmV3IEUuIE1pbGVza2ksIDI4IE5vdiAyMDA0OgotICBGaXggUFBDNHh4IFNQRCBTRFJBTSBkZXRlY3Rpb24gYnVnCi0KLSogUGF0Y2ggYnkgSGlyb3NoaSBJdG8sIDI2IE5vdiAyMDA0OgotICBGaXggbG9naWMgb2YgInRlc3QgLXoiIGFuZCAidGVzdCAtbiIgY29tbWFuZHMKLQotKiBQYXRjaCBieSBMYWRpc2xhdiBNaWNobCwgMDUgQXByIDIwMDU6Ci0gIEFkZCBzdXBwb3J0IGZvciBWb2ljZUJsdWUgYm9hcmQuCi0KLSogUGF0Y2ggYnkgTGFkaXNsYXYgTWljaGwsIDA1IEFwciAyMDA1OgotICBGaXggbmV0Ym9vdF9jb21tb24oKSBwcm90b3R5cGVzLgotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDA1IEFwciAyMDA1OgotICBVc2UgaS5NWCB3YXRjaGRvZyB0aW1lciBmb3IgcmVzZXRfY3B1KCkKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAwNSBBcHIgMjAwNToKLSAgTW92ZSByZXNldF9jcHUoKSBvdXQgb2YgY3B1L2FybTkyMHQvc3RhcnQuUyBpbnRvIHRoZSBTb0Mgc3BlY2lmaWMKLSAgc3ViZGlyZWN0b3JpZXMgY3B1L2FybTkyMHQvaW14LyBhbmQgY3B1L2FybTkyMHQvczNjMjR4MC8KLSAgKG5vdyBpbiBpbnRlcnVwdHMuYykKLQotKiBBZGQgc3VwcG9ydCBmb3IgTVBDODIyMCBiYXNlZCAic29yY2VyeSIgYm9hcmQuCi0KLSogQWRkIHN1cHBvcnQgZm9yIFRRTTg1NjAgYm9hcmQuCi0KLSogQWRkIEZFQyBzdXBwb3J0IGZvciBUUU04NTQwIGJvYXJkLgotICBJbnRlcmZhY2VzIGFyZSBuYW1lZCBhcyBmb2xsb3dzOiAiRU5FVDEiIC0gVFNFQzIsICJFTkVUMiIgLSBGRUMKLQotKiBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAwNCBBcHIgMjAwNToKLSAgVXBkYXRlIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmb3IgQ01DX1BVMiBib2FyZC4KLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAwNCBBcHIgMjAwNToKLSAgLSByZW1vdmUgYWxsIHJlZmVyZW5jZXMgdG8gQ09ORklHX0lOSVRfQ1JJVElDQUwgZm9yIEFSTSBiYXNlZCBib2FyZHMKLSAgLSBpbnRyb2R1Y2UgdHdvIG5ldyBjb25maWd1cmF0aW9uIG9wdGlvbnMgaW5zdGVhZDoKLSAgICBDT05GSUdfU0tJUF9MT1dMRVZFTF9JTklUIGFuZCBDT05GSUdfU0tJUF9SRUxPQ0FURV9VQk9PVAotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDA0IEFwciAyMDA1OgotICBNYWtlIHN1cmUgdGhhdCBNRElPIGNsb2NrIGRvZXMgbm90IGV4Y2VlZCAyLjUgTUh6IG9uIEFUOTEKLQotKiBGaXggdGltZXIgY29kZSBmb3IgQVJNIHN5c3RlbXM6IG1ha2Ugc3VyZSB0aGF0IHVkZWxheSgpIGRvZXMgbm90Ci0gIHJlc2V0IHRpbWVycyBzbyBpdCdzIHNhdmUgdG8gdXNlIHVkZWxheSgpIGluIHRpbWVvdXQgY29kZS4KLQotKiBQYXRjaCBieSBNYXRoaWFzIEv8c3RlciwgMjMgTm92IDIwMDQ6Ci0gIGFkZCB1ZGVsYXkgc3VwcG9ydCBmb3IgdGhlIG1jZjUyODIgY3B1Ci0KLSogUGF0Y2ggYnkgVG9sdW5heSBPcmt1biwgMTYgTm92ZW1iZXIgMjAwNDoKLSAgZml4IGluY29ycmVjdCBvbmJvYXJkIFhpbGlueCBDUExEIGJhc2UgYWRkcmVzcwotCi0qIFBhdGNoIGJ5IEplcnJ5IFZhbiBCYXJlbiwgMDggTm92IDIwMDQ6Ci0gIC0gQWRkIGxvdy1ib290IG9wdGlvbiBmb3IgTVBDODI2MEFEUyBib2FyZCAoaWYgbG93Ym9vdCBpcyBzZWxlY3RlZCwKLSAgICB0aGUganVtcGVyIGZvciB0aGUgSFJDVyBzb3VyY2Ugc2hvdWxkIHNlbGVjdCBmbGFzaC4gSWYgbG93Ym9vdCBpcwotICAgIG5vdCBzZWxlY3RlZCwgdGhlIGp1bXBlciBmb3IgdGhlIEhSQ1cgc291cmNlIHNob3VsZCBzZWxlY3QgdGhlCi0gICAgQkNTUi4KLSAgLSBjaGFuZ2UgZGVmYXVsdCBsb2FkIGJhc2UgYWRkcmVzcyB0byAweDAwNDAwMDAwCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMDggTm92IDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBBbmFsb2d1ZSAmIE1pY3JvIFJhdHRsZXIgYm9hcmRzLgotICBUZXN0ZWQgb24gUmF0dGxlcjgyNDguCi0KLSogUGF0Y2ggYnkgQW5kcmUgUmVuYXVkLCAwOCBOb3YgMjAwNDoKLSAgRml4IHdhdGNoZG9nIHN1cHBvcnQgaW4gY29tbW9uL2xjZC5jCi0KLSogUGF0Y2ggYnkgTWFyYyBMZWVtYW4sIDA1IE5vdiAyMDAzOgotICBFbmFibGUgYWxsIDQgUENNQlJXIGJ1ZmZlcnMgZm9yIHRoZSBNUEM4MjQ1IHByb2Nlc3NvciBzaW5jZSB0aGUgQ1BVCi0gIGJ1ZyBvbmx5IGFmZmVjdHMgdGhlIFhQQzgyNDUgcHJvY2Vzc29ycwotCi0qIFBhdGNoZXMgYnkgSm9zZWYgV2FnbmVyLCAyOSBPY3QgMjAwNDoKLSAgLSBBZGQgc3VwcG9ydCBmb3IgTWljcm9TeXMgQ1BVODcgYm9hcmQKLSAgLSBBZGQgc3VwcG9ydCBmb3IgTWljcm9TeXMgUE04NTQgYm9hcmQKLQotKiBQYXRjaCBieSBKaWFuIFpoYW5nLCAwMiBOb3YgMjAwNDoKLSAgQWRkIDE2LWJpdCBOQU5EIHN1cHBvcnQKLQotKiBQYXRjaCBieSBTY290dCBNY051dHQsIDAxIE5vdiAyMDA0OgotICBBZGQgbWlzc2luZyBOSU9TL05JT1MyIHN1cHBvcnQgZm9yICJpbWluZm8iIGNvbW1hbmQKLQotKiBQYXRjaCBieSBEZXRsZXYgWnVuZGVsLCAyOSBPY3QgMjAwNDoKLSAgQWRkIG1pc3NpbmcgTklPUy9OSU9TMiBzdXBwb3J0IGZvciAibWtpbWFnZSIgdG9vbC4KLQotKiBQYXRjaCBieSBEYXZpZCBBZGFpciwgMjcgT2N0IDIwMDQ6Ci0gIEFkZCBtaXNzaW5nIDQ0MEdYIFNEUkFNIENvbnRyb2xsZXIgcmVzZXQKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAyNSBPY3QgMjAwNDoKLSAgRGVjbGFyZSByZXNldF9jcHUoKSBpbiBpbmNsdWRlL2NvbW1vbi5oIGluc3RlYWQgbG9jYWxseQotCi0qIFBhdGNoIGJ5IFl1c2RpIFNhbnRvc28sIDIyIE9jdCAyMDA0OgotICAtIEFkZCBzdXBwb3J0IGZvciBISURERU5fRFJBR09OIGJvYXJkCi0gIC0gZml4IGVuZGlhbmVzcyBwcm9ibGVtIGluIGRyaXZlci9ydGwxODM5LmMKLQotKiBQYXRjaCBieSBBbGxlbiBDdXJ0aXMsIDIxIE9jdCAyMDA0OgotICBzdXBwb3J0IG11bHRpcGxlIHNlcmlhbCBwb3J0cwotCi0qIFBhdGNoIGJ5IFJpY2hhcmQgS2xpbmdsZXIsIDAzIEFwciAyMDA1OgotICBBZGQgY2FsbCB0byBldGhfaGFsdCgpIGluIG5ldC9uZXQuYyB3aGVuIGNhbGxlZCBmdW5jdGlvbnMgZmFpbAotICBhZnRlciBldGhfaW5pdCgpIGhhcyBiZWVuIGNhbGxlZC4KLQotKiBQYXRjaCBieSBTYW0gU29uZywgMyBBcHJpbCAyMDA1OgotICAtIFVwZGF0ZSBSRUFETUUuTmV0Y29uc29sZQotICAtIFVwZGF0ZSBSRUFETUUKLQotKiBQcmVwYXJlIGZvciBTb0MgcmV3b3JrIG9mIEFSTSBjb2RlOgotICAtIHJlbmFtZSBDT05GSUdfQk9PVEJJTkZVTkMgaW50byAgQ09ORklHX0lOSVRfQ1JJVElDQUwKLSAgLSByZW5hbWUgbWVtc2V0dXAgaW50byBsb3dsZXZlbF9pbml0IChmdW5jdGlvbiBuYW1lIGFuZCBzb3VyY2UgZmlsZXMpCi0gIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDAzIEFwciAyMDA1OgotICAtIGNyZWF0ZSBTb0Mgc3BlY2lmaWMgZGlyZWN0b3JpZXMgaW5jbHVkZS9hc20tYXJtL2FyY2gtaW14IGFuZAotICAgIGluY2x1ZGUvYXNtLWFybS9hcmNoLXMzYzI0eDAKLQotKiBGaXggcHJvYmxlbXMgd2l0aCBTTlRQIHN1cHBvcnQ7Ci0gIGVuYWJsZSBTTlRQIHN1cHBvcnQgaW4gc29tZSBib2FyZHMuCi0KLSogUGF0Y2hlcyBieSBNYXJ0aW4gS3JhdXNlLCAwMSBBcHIgMjAwNToKLSAgLSBGaXggZmxhc2ggZXJhc2UgdGltZW91dCBvbiBDTUNfUFUyCi0gIC0gQWRkIGF1dG9tYXRpYyBIVyBkZXRlY3Rpb24gZm9yIENNQ19QVTIgYW5kIENNQ19CQVNJQwotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDEzIE1hcmNoIDIwMDU6Ci0gIGZpeCBjYWNoZSBlbmFibGluZyBmb3IgQVQ5MVJNOTIwMAotCi0qIFBhdGNoIGJ5IE1hc2FtaSBLb21peWEsIDMwIE1hciAyMDA1OgotICBhZGQgU05UUCBzdXBwb3J0IGFuZCBleHBhbmQgdGltZSBzZXJ2ZXIgYW5kIHRpbWUgb2Zmc2V0IGZpZWxkcyBvZgotICBESENQIHN1cHBvcnQuIFNlZSBkb2MvUkVBRE1FLlNOVFAKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAxMyBEZWMgMjAwNDoKLSAgRml4IGJ1ZyBpbiBhdDkxcm05MjAgZXRoZXJuZXQgZHJpdmVyCi0KLSogUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMTMgRGVjIDIwMDQ6Ci0gIFJlbW92ZSBkdXBsaWNhdGVkIGNvZGUgYnkgbWVyZ2luZyBtZW1zZXR1cC5TIGZpbGVzIGZvcgotICBhdDkxcm05MjAwIGJvYXJkcyBpbnRvIG9uZSBjcHUvYXQ5MXJtOTIwMC9sb3dsZXZlbC5TCi0KLSogUGF0Y2ggYnkgRGV0bGV2IFp1bmRlbCwgMzEgTWFyIDIwMDU6Ci0gIENsZWFudXAgZHVwbGljYXRlIGRlZmluaXRpb24gb2Ygb3ZlcndyaXRlX2NvbnNvbGUoKQotCi0qIFVwZGF0ZSBUUU01MjAwIGNvbmZpZ3VyYXRpb247Ci0gIHByZXBhcmUgZm9yIFJldi4gMjAwIHN0YXJ0ZXIga2l0IGJvYXJkcwotCi0qIFBhdGNoIGJ5IFNjb3R0IE1jTnV0dCwgMjEgT2N0IDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBOaW9zLUlJIEVQQ1MgQ29udHJvbGxlciBjb3JlLgotCi0qIFBhdGNoIGJ5IFNjb3R0IE1jTnV0dCwgMjAgT2N0IDIwMDQ6Ci0gIE5pb3MtSUkgY2xlYW51cHM6Ci0gIC0gQWRkIHN5c2lkIGNvbW1hbmQgKE5pb3MtSUkgb25seSkuCi0gIC0gTG9jYXRlIGRlZmF1bHQgZXhjZXB0aW9uIHRyYW1wb2xpbmUgYXQgcHJvcGVyIG9mZnNldC4KLSAgLSBJbXBsZW1lbnQgSS9PIHJvdXRpbmVzIChyZWFkYiwgd3JpdGViLCBldGMpCi0gIC0gSW1wbGVtZW50IGRvX2Jvb3RtX2xpbnV4Ci0KLSogUGF0Y2hlcyBieSBNYXJ0aW4gS3JhdXNlLCAyMiBNYXIgMjAwNToKLSAgLSB1c2UgVFFNNTIwMF9hdXRvIGFzIE1BS0VBTEwgdGFyZ2V0IGZvciBUUU01MjAwIHN5c3RlbXMKLSAgLSBhZGQgc3VwcG9ydCBmb3IgU001MDEgZ3JhcGhpY3MgY29udHJvbGxlcgotICAtIGFkZCBzdXBwb3J0IGZvciBncmFwaGljIGNvbnNvbGUgb24gVFFNNTIwMAotICAtIGFkZCBzdXBwb3J0IGZvciBUUU01MjAwIFJldiAyMDAKLSAgLSBjbGVhbnVwLCBmaXggdHlwbyBpbiBpbmNsdWRlL2NvbmZpZ3MvVFFNNTIwMC5oCi0KLSogUGF0Y2ggYnkgTWFuZnJlZCBCYXJhbCwgMTcgTWFyIDIwMDU6Ci0gIEZpeCB0eXBvCi0KLSogRml4IFJUQyBjb25maWd1cmF0aW9uIGZvciBQUENoYW1lbGVvbiBib2FyZAotCi0qIENsZWFudXAsIGZpeCB0eXBvIGluIGluY2x1ZGUvY29uZmlncy9UUU01MjAwLmgKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE2IE1hciAyMDA1OgotICBVcGRhdGUgZm9yIGVzZCBhdXRvX3VwZGF0ZSBhbmQgaGg0MDUgYm9hcmQKLQotKiBBZGFwdCBmb3IgVS1Cb290IGltYWdlIHNpemUgKG5ldyBmZWF0dXJlcyBlbmFibGVkKSBvbiBUUU01MjAwCi0KLSogVXBkYXRlIGNvZGUgZm9yIFRRTTg1NDAgYm9hcmQgKGFuZCA4NXh4IGluIGdlbmVyYWwpOgotICAtIENoYW5nZSB0aGUgbmFtZSBvZiB0aGUgRXRoZXJuZXQgZHJpdmVyOiBNT1RPIEVORVQgLT4gRU5FVAotICAtIFJlZm9ybWF0IGJvb3QgbWVzc2FnZXMKLSAgLSBFbmFibGUgcmVkdW5kYW50IGVudmlyb25tZW50Ci0gIC0gUmVwbGFjZSB0aGUgLU8yIG9wdGltaXphdGlvbiBmbGFnIHdpdGggLW1uby1zdHJpbmcKLQotKiBQYXRjaCBieSBEYXZpZCBCcm93bmVsbCwgMTAgTWFyIDIwMDU6Ci0gIFJlc3RvcmUgY29weXJpZ2h0IHN0YXRlbWVudHMgaW4gT0hDSSBkcml2ZXJzLgotCi0qIEFkZCBzdXBwb3J0IGZvciBUUU04NTQwIGJvYXJkCi0KLSogUGF0Y2ggYnkgRGV0bGV2IFp1bmRlbCwgMTQgTWFyIDIwMDU6Ci0gIE5DNjUwOiBjaGFuZ2VkIE5BTkQgZmxhc2ggYWRkcmVzc2luZyB0byB1c2luZyBVUE1CCi0KLSogUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxNCBNYXIgMjAwNToKLSAgVXBkYXRlIGZvciBlc2Qgdm9oNDA1IGZwZ2EgaW1hZ2UKLQotKiBJTktBNHgwOiBBbGxvdyBpbml0aWFsaXphdGlvbiBvZiBMQ0QgYmFja2xpZ2h0IGRpbW1pbmcgZnJvbQotICAiYnJpZ2h0bmVzcyIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSogQWRkIHBvcnQgaW5pdGlhbGl6YXRpb24gZm9yIGRpZ2l0YWwgSS9PIG9uIElOS0E0eDAKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDAxIE1hciAyMDA1OgotICBVcGRhdGUgZm9yIGVzZCBib2FyZHMgZHA0MDUgYW5kIGh1YjQwNQotCi0qIEZpeCBnZXRfcGFydGl0aW9uX2luZm8oKSBwYXJhbWV0ZXIgZXJyb3IgaW4gYWxsIG90aGVyIGNhbGxzCi0gIChjb21tb24vY21kX2lkZS5jLCBjb21tb24vY21kX3JlaXNlci5jLCBjb21tb24vY21kX3Njc2kuYykuCi0KLSogRW5hYmxlIFVTQiBhbmQgSURFIHN1cHBvcnQgZm9yIElOS0E0eDAgYm9hcmQKLQotKiBQYXRjaCBieSBBbmRyZXcgRHllciwgMjggRmViIDIwMDU6Ci0gIGZpeCBleHQybG9hZCBwYXNzaW5nIGFuIGluY29ycmVjdCBwb2ludGVyIHRvIGdldF9wYXJ0aXRpb25faW5mbygpCi0gIHJlc3VsdGluZyBpbiBsb2FkIGZhaWx1cmUgZm9yIGRldmljZXMgb3RoZXIgdGhhbiAwCi0KLSogQWRkIHN1cHBvcnQgZm9yIFNSQU0gYW5kIDIgeCBRdWFkIFVBUlRzIG9uIElOS0E0eDAgYm9hcmQKLQotKiBDbGVhbnVwIFVTQiBhbmQgcGFydGl0aW9uIGRlZmluZXMKLQotKiBBZGQgc3VwcG9ydCBmb3IgZXh0MiBmaWxlc3lzdGVtcyBhbmQgaW1hZ2UgdGltZXN0YW1wcyB0byBUUU01MjAwIGJvYXJkCi0KLSogQWRkIHJlc2V0IGNvZGUgZm9yIENvcmFsLVAgb24gSU5LQTR4MCBib2FyZAotCi0qIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDI4IEp1biAyMDA0OgotICBVcGRhdGUgZm9yIFRSQUIgYm9hcmQuCi0KLSogRml4IHNvbWUgbWlzc2luZyAidm9sYXRpbGUicyBpbiBNUEM1eHh4IEZFQyBkcml2ZXIKLQotKiBGaXggY2lycnVzIHZvbHRhZ2UgZGV0ZWN0aW9uIChmb3IgQ1BDNDUpCi0KLSogRml4IGJ5dGVvcmRlciBwcm9ibGVtIGluIHVzYmJvb3QgYW5kIHNjc2lib290IGNvbW1hbmRzLgotCi0qIFBhdGNoIGJ5IENhanVzIEhhaG4sIDA0IEZlYiAyMDA1OgotICAtIGRvbid0IGluc2lzdCBvbiBsZWFkaW5nICcvJyBmb3IgZmlsZW5hbWUgaW4gZXh0MmxvYWQKLSAgLSBzZXQgZGVmYXVsdCBwYXJ0aXRpb24gdG8gdXNlZnVsIHZhbHVlICgxKSBpbiBleHQybG9hZAotCi0qIFBhdGNoIGJ5IEFuZHJldyBEeWVyLCAwOCBKYW4gMjAwNToKLSAgZml4IHdyb25nIHJldHVybiBjb2RlcyBpbiBleHQyIGNvZGUKLQotKiBSZW1vdmVkICctLW5vLXdhcm4tbWlzbWF0Y2gnIG9wdGlvbiBmcm9tIE1ha2VmaWxlLiBUaGlzIG9wdGlvbgotICBtYWtlcyAnbGQnIHRvIG92ZXJsb29rIGJpbmFyeSBvYmplY3RzIGNvbXBhdGliaWxpdHkuCi0KLSogTW92ZWQgJChQTEFURk9STV9MSUJTKSBmcm9tIHRoZSBsaWJyYXJ5IGdyb3VwICgtLXN0YXJ0LWdyb3VwIC4uLgotICAtLWVuZC1ncm91cCkgb3V0c2lkZSBvZiB0aGUgZ3JvdXAuIFRoaXMgd2lsbCBtYWtlICdsZCcgdG8gZG8KLSAgX211bHRpcGxlXyBzZWFyY2ggaW4gdGhlIGxpYnJhcnkgZ3JvdXAgd2hlbiByZXNvbHZpbmcgc3ltYm9sCi0gIHJlZmVyZW5jZXMgYW5kIGRvIG9ubHkgYSBfc2luZ2xlXyBzZWFjaCBpbiBsaWJnY2MuYSBhZnRlciB0aGUgZ3JvdXAKLSAgc2VhcmNoLgotCi0qIEZpeCBzdGFiaWxpdHkgcHJvYmxlbXMgb24gQ1BDNDUgYm9hcmQgYWdhaW4uCi0KLSogTWFrZSBpbWFnZSBkZXRlY3Rpb24gZm9yIGRpc2tib290IC8gdXNiYm9vdCAvIHNjc2lib290IG1vcmUgcm9idXN0Ci0gIChhbHNvIGNoZWNrIGhlYWRlciBjaGVja3N1bSkKLQotKiBVcGRhdGUgQ1BDNDUgYm9hcmQgY29uZmlndXJhdGlvbi4KLQotKiBBZGQgVVNCIGFuZCBQQ0kgc3VwcG9ydCBmb3IgSU5LQTR4MCBib2FyZAotCi0qIEZpeCBJREUgc3RhYmlsaXR5IHByb2JsZW1zIG9uIENQQzQ1IGJvYXJkIChuZWVkcyAyIHggRUlFSU8pLgotCi0qIENvZGUgY2xlYW51cAotCi0qIFBhdGNoIGJ5IFJvYmluIEdldHosIDEzIE9jdCAyMDA0OgotICBBZGQgc3RhbmRhbG9uZSBhcHBsaWNhdGlvbiB0byBjaGFuZ2UgU01DOTFDMTExIE1BQyBhZGRyZXNzZXMsCi0gIHNlZSBleGFtcGxlcy9SRUFETUUuc21jOTExMTFfZWVwcm9tCi0KLSogUGF0Y2ggYnkgWGlhb2dlbmcgKFNoYXduKSBKaW4sIDEyIE9jdCAyMDA0OgotICBGaXggRmxhc2ggc3VwcG9ydCBmb3IgQVJNIEludGVncmF0b3IgQ1AuCi0KLSogUGF0Y2ggYnkgUmljaGFyZCBXb29kcnVmZiwgMTAgSmFuIDIwMDU6Ci0gIFVwZGF0ZSBzdXBwb3J0IGZvciBPTUFQMjQyMCAoQVJNMTEpIGFuZCBINCBib2FyZDoKLSAgbyBjbGVhbiB1cCBhbmQgYWRkIG5ldyB0eXBlcyB0byBINCBtZW1vcnkgcHJvYmUgY29kZS4KLSAgbyBmaXggdG8gd29yayB3aXRoIGludGVybmFsIGJvb3QuCi0gIG8gYWRkZWQgUFJDTSBjb25maWcgSUlJIG9wZXJhdGlvbi4KLSAgbyBmaXggbWFyZ2luYWwgZmxhc2ggdGltaW5ncy4KLSAgbyBhZGQgcmV2aXNvbiBBVEFHIHVzYWdlLgotICBvIGVuYWJsZSB2b2x0YWdlIHNjYWxpbmcgYXQgcG93ZXIgY2hpcC4KLSAgbyBmaXggY29tcGlsZSBlcnJvciBmb3IgaTJjLgotCi0qIEZpeCBuZXR3b3JrIHByb2JsZW0gKGVycm9yIHdoZW4gcmVjZWl2aW5nIG11bHRpcGxlIEFSUCBwYWNrZXRzKQotCi0qIFBhdGNoIGJ5IERhbmllbCBQb2lyb3QsIDEyIE9jdCAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgV2luZCBSaXZlciBzYmM0MDUgYm9hcmQKLQotKiBQYXRjaCBieSBSYWluZXIgQnJlc3RhbiwgMTIgT2N0IDIwMDQ6Ci0gIE1ha2UgZXhhbXBsZXMvTWFrZWZpbGUgbW9yZSByb2J1c3QKLQotKiBQYXRjaCBieSBTYW0gU29uZywgMTEgT2N0b2JlciAyMDA0OgotICAtIEFkZCBSRVNFVC9QUkVCT09UL0FVVE9CT09UIHN1cHBvcnQgZm9yIFJQWGxpdGVfRFcgYm9hcmQKLSAgLSBBZGp1c3QgQ1BVOkJVUyBmcmVxdWVuY3kgcmF0aW8gMToxIHdoZW4gY29yZSBmcmVxdWVuY3kKLSAgICBsZXNzIHRoYW4gNTBNSHoKLQotKiBQYXRjaCBieSBTYW0gU29uZywgMTAgT2N0IDIwMDQ6Ci0gIEZpeCBhIHBhcmFtZXRlciBlcnJvciBpbiBydW5fY29tbWFuZCgpIGluIG1haW4uYwotCi0qIFBhdGNoIGJ5IFJpY2hhcmQgV29vZHJ1ZmYsIDAxIE9jdCAyMDA0OgotICBhZGQgc3VwcG9ydCBmb3IgdGhlIFRJIE9NQVAyNDIwIHByb2Nlc3NvciBhbmQgaXRzIEg0IHJlZmVyZW5jZQotICBib2FyZAotCi0qIFBhdGNoIGJ5IENocmlzdGlhbiBQZWxsZWdyaW4sIDI0IFNlcCAyMDA0OgotICBBZGRlZCBzdXBwb3J0IGZvciBORTIwMDAgY29tcGF0aWJsZSAoRFA4MzkwLCBEUDgzOTAyKSBOSUNzLgotCi0qIFBhdGNoIGJ5IExlaWYgTGluZGhvbG0sIDIzIFNlcCAyMDA0OgotICBhZGQgc3VwcG9ydCBmb3IgdGhlIEFNRCBkYjE1NTAgYm9hcmQKLQotKiBQYXRjaCBieSBUcmF2aXMgU2F3eWVyLCAxNSBTZXAgMjAwNDoKLSAgQWRkIENPTkZJR19TRVJJQUxfTVVMVEkgc3VwcG9ydCBmb3IgcHBjNHh4LAotICB1cGRhdGUgUkVBRE1FLnNlcmlhbF9tdWx0aQotCi0qIFBhdGNoZXMgYnkgRGF2aWQgU25vd2RvbiwgMDcgU2VwIDIwMDQ6Ci0gIC0gYWRkIHUtYm9vdC5oZXggdGFyZ2V0IGluIHRoZSB0b3AgbGV2ZWwgTWFrZWZpbGUKLSAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIFVOU1cvTklDVEEgUExFQiAyIGJvYXJkIChwbGViMikKLSAgLSB1c2UgLW10dW5lPXhzY2FsZSBhbmQgLW1hcmNoPWFybXY1IG9wdGlvbnMgZm9yIFBYQQotCi0qIFBhdGNoIGJ5IEZsb3JpYW4gU2NobG90ZSwgMDggU2VwIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBTZW5UZWMtQ09CUkE1MjcyLWJvYXJkIChDb2xkRmlyZSkuCi0KLSogUGF0Y2ggYnkgR2xlYiBOYXRhcG92LCAwNyBTZXAgMjAwNDoKLSAgbXBjODI0eDogc2V0IFBDSSBsYXRlbmN5IHRpbWVyIHRvIGEgc2FuZSB2YWx1ZQotICAoaXMgMCBhZnRlciByZXNldCkuCi0KLSogUGF0Y2ggYnkgS3VydCBTdHJlbWVyY2gsIDAzIFNlcCAyMDA0OgotICBBZGQgYml0c3RyZWFtIGNvbmZpZ3VyYXRpb24gb3B0aW9uIGZvciBmcGdhIGNvbW1hbmQgKFhpbGlueCBvbmx5KS4KLQotKiBQYXRjaCBieSBLdXJ0IFN0cmVtZXJjaCwgMDMgU2VwIDIwMDQ6Ci0gIEFkZCBYaWxpbnggU3BhcnRhbjJFIGZhbWlseSBGUEdBIHN1cHBvcnQKLQotKiBQYXRjaCBieSBKZWZmIEFuZ2llbHNraSwgMDIgU2VwIDIwMDQ6Ci0gIEFkZCBBZGRlZCBzdXBwb3J0IGZvciBIMiByZXZpc2lvbiBvZiB0aGUgRVA4MjYwIGJvYXJkLgotICBGaXhlZCBmb3JtYXR0aW5nIGZvciBzb21lIG9mIHRoZSBFUDgyNjAgcmVsYXRlZCBzb3VyY2UgZmlsZXMuCi0KLSogUGF0Y2ggYnkgSm9uIExvZWxpZ2VyLCAwMiBTZXAgMjAwNDoKLSAgUmVzZXQgbW9uaXRvciBzaXplIGJhY2sgdG8gMjU2IHNvIGVudmlyb25tZW50IGNhbiBiZSB3cml0dGVuCi0gIHRvIGZsYXNoIG9uIE1QQzg1eHggQURTIGFuZCBDRFMgcmVsZWFzZXMuCi0KLSogUGF0Y2ggYnkgUGFvbG8gQnJvZ2dpbmksIDAyIFNlcCAyMDA0OgotICBNYWtlIEJTUyBjbGVhcmluZyBvbiBBUk0gc3lzdGVtcyBtb3JlIHJvYnVzdAotCi0qIFBhdGNoIGJ5IFl1ZSBIdSBhbmQgSm9lLCAwMSBTZXAgMjAwNDoKLSAgLSBhZGQgUENJIHN1cHBvcnQgZm9yIGl4cDQyNTsKLSAgLSBhZGQgRUVQUk8xMDAgc3VwcG9yIHRmb3IgaXhkcDQyNSBib2FyZC4KLQotKiBGaXggcHJvYmxlbSB3aXRoIHByb3RlY3RlZCBzZWN0b3IgZGV0ZWN0aW9uIGluIGRyaXZlci9jZmlfZmxhc2guYwotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMS4xLjI6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogQ29kZSBjbGVhbnVwLCBtb3N0bHkgZm9yIEdDQy0zLjMueAotCi0qIENsZWFudXAgY29uZnVzaW5nIHVzZSBvZiBDT05GSUdfRVRIKkFERFIgLSB1c3QgaGlzIG9ubHkgdG8KLSAgcHJlLWRlZmluZSBhIE1BQyBhZGRyZXNzOyB1c2UgQ09ORklHX0hBU19FVEgqIHRvIGVuYWJsZSBzdXBwb3J0IGZvcgotICBhZGRpdGlvbmFsIGV0aGVybmV0IGFkZHJlc3Nlcy4KLQotKiBDbGVhbnVwIGRyaXZlcnMvaTgyMzY1LmMgLSBhdm9pZCBkdXBsaWNhdGlvbiBvZiBjb2RlCi0KLSogRml4IGJvZ3VzICJjYW5ub3Qgc3BhbiBhY3Jvc3MgYmFua3MiIGZsYXNoIGVycm9yIG1lc3NhZ2UKLQotKiBDb2RlIGNsZWFudXAKLQotKiBBZGQgc3VwcG9ydCBmb3IgQ29tcGFjdEZsYXNoIGZvciB0aGUgQ1BDNDUgQm9hcmQuCi0KLSogRml4IHByb2JsZW1zIHdpdGggQ01DX1BVMiBmbGFzaCBkcml2ZXIuCi0KLSogQ2xlYW51cDoKLSAgLSBhdm9pZCB0cmlncmFwaCB3YXJuaW5nIGluIGZzL2V4dDIvZXh0MmZzLmMKLSAgLSByZW5hbWUgVUMxMDAgLT4gdWMxMDAKLQotKiBBZGQgc3VwcG9ydCBmb3IgVUMxMDAgYm9hcmQKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE2IERleiAyMDA0OgotICAtIGV4dDJmcyBzdXBwb3J0IGFkZGVkCi0gIC0gVHVuZHJhIHVuaXZlcnNlIHN1cHBvcnQgYWRkZWQKLSAgLSBDb2xkRmlyZSBNQ0Y1MjQ5IHN1cHBvcnQgYWRkZWQgKG5vIHByZWxvYWRlciBuZWVkZWQhKQotICAtIE1DRjUyNDkgYm9hcmQgVEFTUkVHIGFkZGVkCi0gIC0gUFBDIGJvYXJkcyBhZGRlZDogQVBDNDA1LCBDUENJNDA1RFQsIENQQ0k3NTAsIEcyMDAwLCBISDQwNSwKLSAgICBWT000MDUsIFdVSDQwNQotICAtIHNvbWUgZXNkIGJvYXJkcyB1cGRhdGVkCi0gIC0gbWVtb3J5IGNvbW1hbmRzICJtZGMiIGFuZCAibXdjIiBhZGRlZCBmb3IgY3ljbGljIHJlYWQvd3JpdGUKLSAgICAoQ09ORklHX01YX0NZQ0xJQywgc2VlIFJFQURNRSBmb3IgZnVydGhlciBkZXNjcmlwdGlvbikKLQotKiBBZGQgc3VwcG9ydCBmb3IgSU5LQTRYMCBib2FyZAotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDEyIERlYyAyMDA0OgotICBGaXggdHlwbyBpbiBBVDkxIG1lbW9yeSBzZXR1cC4KLQotKiBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAyNyBPY3QgMjAwNDoKLSAgLSBhZGQgc3VwcG9ydCBmb3IgIlNUSzUyeHgiIGJvYXJkIChpbmNsdWRpbmcgUFMvMiBtdWx0aXBsZXhlcikKLSAgLSBhZGQgaGFyZHdhcmUgZGV0ZWN0aW9uIGZvciBUUU01MjAwCi0KLSogQ2xlYW4gdXAgQ01DIFBVMiBmbGFzaCBkcml2ZXIKLQotKiBVcGRhdGUgTUFJTlRBSU5FUlMgZmlsZQotCi0qIEZpeCBidWcgaW4gTVBDODIzIExDRCBkcml2ZXIKLQotKiBGaXggdWRlbGF5KCkgb24gQVQ5MVJNOTIwMCBmb3IgZGVsYXlzIDwgMSBtcy4KLQotKiBFbmFibGUgbG9uZyBoZWxwIG9uIENNQyBQVTIgYm9hcmQ7Ci0gIGZpeCByZXNldCBpc3N1ZTsKLSAgaW5jcmVhc2UgQ1BVIHNwZWVkIGZyb20gMTc5IHRvIDIwNyBNSHouCi0KLSogRml4IHNtYzkxMTExIGV0aGVybmV0IGRyaXZlciBmb3IgWGFlbmlheCBib2FyZCAobmVlZCB0byBoYW5kbGUKLSAgdW5hbGlnbmVkIHRhaWwgcGFydCBzcGVjaWFsbHkpLgotCi0qIFVwZGF0ZSBmb3IgQVQ5MVJNOTIwMERLIGFuZCBDTUNfUFUyIGJvYXJkczoKLSAgLSBFbmFibGUgYm9vdGluZyBkaXJlY3RseSBmcm9tIGZsYXNoCi0gIC0gZml4IENNQ19QVTIgZmxhc2ggZHJpdmVyCi0KLSogRml4IG1raW1hZ2UgdXNhZ2UgbWVzc2FnZQotCi0qIE1hcCBTUkFNIG9uIE5DNjUwIGJvYXJkCi0KLSogV29yayBhcm91bmQgZm9yIEV0aGVybmV0IHByb2JsZW1zIG9uIFhhZW5pYXggYm9hcmQKLQotKiBQYXRjaCBieSBUc2lDaHVuZyBMaWV3LCAyMyBTZXAgMjAwNDoKLSAgLSBhZGQgc3VwcG9ydCBmb3IgTVBDODIyMCBDUFUKLSAgLSBBZGQgc3VwcG9ydCBmb3IgQWxhc2thIGFuZCBZdWtvbiBib2FyZHMKLQotKiBGaXggY29uZmlndXJhdGlvbiBmb3IgRVJJQyBib2FyZCAobmVlZHMgbW9yZSByb29tKQotCi0qIEFkanVzdCBNSVBTIGNvbXBpbGVyIG9wdGlvbnMgYXQgcnVuLXRpbWUgZGVwZW5kaW5nIG9uIHRvb2xzIHZlcnNpb24KLSAgKCItbWFyY2g9NGtjIC1tdHVuZT00a2MgLVdhLC1taXBzX2FsbG93X2JyYW5jaF90b191bmRlZmluZWQiIGZvciBuZXcsCi0gICItbWNwdT00a2MiIGZvciBvbGQgdG9vbHMpCi0KLSogQWRkIHBhc3Npbmcgb2YgdGhlIGNvbW1hbmQgbGluZSBhbmQgbWVtb3J5IHNpemUgaW5mb3JtYXRpb24gdG8gIHRoZQotICBrZXJuZWwgb24geGFlbmlheCBib2FyZC4KLQotKiBFbmFibGUgTkFORCBmbGFzaCBzdXBwb3J0IGZvciBOQzY1MCBib2FyZC4KLQotKiBQYXRjaCBieSBUaG9tYXMgTGFuZ2UgMDcgT2N0IDIwMDQ6Ci0gIFVwZGF0ZWQgUkVBRE1FIGZvciBEQkF1MXgwMCBib2FyZHMgdG8gbWF0Y2ggY3VycmVudCBzdGF0dXMKLQotKiBQYXRjaCBieSBQaGlsaXBwZSBSb2JpbiwgMjggU2VwdCAyMDA0OgotICBGaXggRmxhc2ggc3VwcG9ydCBmb3IgVmVyc2F0aWxlLgotCi0qIFBhdGNoIGJ5IFJvZ2VyIEJsb2ZlbGQsIDE2IFNlcCAyMDA0OgotICBGaXggdGltZW91dCBmb3IgREhDUCBjb21tYW5kIHJldHJ5Ci0KLSogUGF0Y2ggYnkgUGFudGVsaXMgQW50b25pb3UsIDE0IFNlcCAyMDA0OgotICBGaXggZWFybHkgc2VyaWFsIGhhbmcgd2hlbiBDT05GSUdfU0VSSUFMX01VTFRJIGlzIGRlZmluZWQuCi0KLSogUGF0Y2ggYnkgUGFudGVsaXMgQW50b25pb3UsIDE0IFNlcCAyMDA0OgotICBLaWNrIHdhdGNoZG9nIHdoZW4gYnotZGVjb21wcmVzc2luZwotCi0qIEZpeCBDRkdfSFogcHJvYmxlbXMgb24gQVQ5MVJNOTIwMCBzeXN0ZW1zCi0gIFtSZW1lbWJlcjogQ0ZHX0haIHNob3VsZCBiZSAxMDAwIG9uIEFMTCBzeXN0ZW1zIV0KLQotKiBQYXRjaCBieSBHcmlkaXNoIFNobG9taSwgMzAgQXVnIDIwMDQ6Ci0gIC0gQWRkIHN1cHBvcnQgdG8gcmV2QSB2ZXJzaW9uIG9mIFBRMjcgYW5kIFBRMjdFLgotICAtIFJldmVydGVkIE1QQzgyNjBBRFMgYmF1ZHJhdGUgYmFjayB0byBvcmlnaW5hbCAxMTUyMDAKLQotKiBQYXRjaCBieSBIb2ppbiwgMTcgU2VwIDIwMDQ6Ci0gIEZpeCB0eXBvIGluIGNmaV9mbGFzaC5jCi0KLSogUGF0Y2ggYnkgTWFyayBKb25hcywgMDkgU2VwdGVtYmVyIDIwMDQ6Ci0gIG10ZXN0J3MgZGF0YSBsaW5lIHRlc3QgKHdpdGggQ0ZHX0FMVF9NRU1URVNUIHNldCkgcmV0dXJuZWQgYSB3cm9uZwotICBlcnJvciBtZXNzYWdlCi0KLSogUGF0Y2ggYnkgTWFyayBKb25hcywgMzEgQXVndXN0IDIwMDQ6Ci0gIEFkZGVkIG9wdGlvbiBDRkdfWExCX1BJUEVMSU5JTkcgdG8gZW5hYmxlIFhMQiBwaXBlbGluaW5nLiBUaGlzCi0gIGltcHJvdmVzIEZUUCBwZXJmb3JtYW5jZSBmb3IgTVBDNTIwMCBzeXN0ZW1zLiBFbmFibGVkIGZvciBJY2VDdWJlCi0gIGJ5IGRlZmF1bHQuCi0KLSogUGF0Y2ggYnkgTWljaGFlbCBCZW5kemljaywgMzAgQXVnIDIwMDQ6Ci0gIC0gSW1wcm92ZSBwbGF0Zm9ybS5TIGNvZGUgZm9yIG9tYXAxNTEwaW5uIHRoYXQgZGV0ZWN0cyB3aGV0aGVyIGNvZGUKLSAgICBpcyBydW5uaW5nIGZyb20gU0RSQU0gb3Igbm90LiBQYXRjaCBhbGxvd3MgU0RSQU0gdG8gYmUgY29uZmlndXJlZAotICAgIGlmIGNvZGUgaXMgcnVubmluZyBvdXQgb2YgU1JBTSBhdCAweDIwMDAwMDAwLgotCi0qIFBhdGNoIGJ5IEZyZWRlcmljayBLbGF0dCwgMzAgQXVnIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciB0aGUgV2luZCBSaXZlciBTQkM4NTQwL1NCQzg1NjAgYm9hcmRzCi0KLSogQ29uZmlndXJlIFNYMSBib2FyZCB0byB1c2UgZHJpdmVycy9jZmlfZmxhc2guYwotCi0qIFBhdGNoZXMgYnkgTWljaGFlbCBCZW5kemljaywgMzAgQXVnIDIwMDQ6Ci0gIC0gQ29uZmlndXJlIG9tYXAxNTEwaW5uIGJvYXJkIHRvIHVzZSBkcml2ZXJzL2NmaV9mbGFzaC5jCi0gIC0gTWFrZSBkcml2ZXJzL2NmaV9mbGFzaC5jIHByb3RlY3QgZW52aXJvbm1lbnQgYW5kIHJlZHVuZGFudAotICAgIGVudmlyb25tZW50LgotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDIzIEp1biAyMDA0OgotICAtIEFkZCBzY3JpcHQgKHRvb2xzL2ltZzJicmVjLnNoKSB0byBwcm9ncmFtbSBVLUJvb3QgaW50bwotICAgIChTeW5jaClGbGFzaCB1c2luZyB0aGUgQm9vdHN0cmFwIE1vZGUgb2YgdGhlIE1DOTMyOE1YMS9MCi0KLSogUGF0Y2hlcyBieSBTY290dCBNY051dHQsIDI0IEF1ZyAyMDA0OgotICAtIEFkZCBzdXBwb3J0IGZvciBBbHRlcmEgTmlvcy1JSSBwcm9jZXNzb3JzLgotICAtIEFkZCBzdXBwb3J0IGZvciBQc3llbnQgUENJLTU0NDEgYm9hcmQuCi0gIC0gQWRkIHN1cHBvcnQgZm9yIFBzeWVudCBQSzFDMjAgYm9hcmQuCi0KLSogUGF0Y2hlcyBieSBKb24gTG9lbGlnZXIsIDI0IEF1ZyAyMDA0OgotICAtIEFkZCBzdXBwb3J0IGZvciB0aGUgTVBDODU0MSBhbmQgTVBDODU1NSBDRFMgYm9hcmRzCi0gIC0gQ2xlYW51cCBldGg/YWRkciBoYW5kbGluZzogbWFrZSBkZXBlbmRlbnQgb24gQ09ORklHX0VUSD9BRERSCi0gIC0gQ29udmVydCBNUEM4NXh4QURTIHRvIHVzZSBjb21tb24gQ0ZJIGZsYXNoIGRyaXZlcgotICAtIEZpeCBQQ0kgd2luZG93IG9uIE1QQzg1eHg7IHJlbW92ZSB1bm5lZWRlZCBQQ0kgaW5pdGlhbGl6YXRpb24KLSAgICBmcm9tIGJvYXJkX2Vhcmx5X2luaXRfZigpCi0gIC0gUHJvdmlkZSBTVyB3b3JrYXJvdW5kIGZvciBQQ0kgaW5pdGlhbGl6YXRpb24gb24gODV4eCBDRFMKLQotKiBQYXRjaGVzIGJ5IEdlb3JnZSBHLiBEYXZpcywgMjQgQXVnIDIwMDQ6Ci0gIC0gRW5hYmxlIHJhbWRpc2svaW5pdHJkIHRhZ2dlZCBwYXJhbSBzdXBwb3J0IGZvciBvbWFwMTYxMGgyX2NvbmZpZwotICAtIFJlbW92ZSBzdGF0aWMgbmV0d29yayBzZXR1cCBkZWZhdWx0cyBmcm9tIG14MWFkc19jb25maWcKLSAgLSB1cGRhdGUgQVJNIGJvYXJkcyB0byB1c2UgY29uc3RhbnRzIGZyb20gbWFjaC10eXBlcy5oCi0KLSogUGF0Y2ggYnkgR2FyeSBKZW5uZWpvaG4sIDA0IE9jdCAyMDA0OgotICAtIGZpeCBJMkMgb24gYXQ5MXJtOTIwMAotICAtIGFkZCBzdXBwb3J0IGZvciBSaWNvaCBSUzVDMzcyQSBSVEMKLQotKiBQYXRjaCBieSBHYXJ5IEplbm5lam9obiwgMDEgT2N0IDIwMDQ6Ci0gIC0gYWRkIHN1cHBvcnQgZm9yIENNQyBQVTIgYm9hcmQKLSAgLSBhZGQgc3VwcG9ydCBmb3IgSTJDIG9uIGF0OTFybTkyMDAKLQotKiBQYXRjaCBieSBHYXJ5IEplbm5lam9obiwgMjggU2VwIDIwMDQ6Ci0gIGZpeCBiYXVkcmF0ZSBoYW5kbGluZyBvbiBhdDkxcm05MjAwCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMjIgQXVnIDIwMDQ6Ci0gIC0gcmVtb3ZlIFpQQy4xOTAwIGJvYXJkLXNwZWNpZmljIGZsYXNoIGRyaXZlcjsKLSAgICBzd2l0Y2ggdGhlIHBvcnQgdG8gZ2VuZXJpYyBDRkkgZHJpdmVyOwotICAtIHBvcnQgY2xlYW4tdXAKLQotKiBQYXRjaCBieSBIaW5rbyBLb2NldmFyLCAyMSBBdWcgMjAwNDoKLSAgQWRkIGNhbGNfZmJzaXplKCkgZnVuY3Rpb24gdXNlZCB3aXRoIFZJREVPTEZCX1RBRyBvbiBUUkFCCi0KLSogQ2xlYW4gdXAgdG9vbHMvYm1wX2xvZ28uYyB0byBub3QgYWRkIHRyYWlsaW5nIHdoaXRlIHNwYWNlCi0KLSogUGF0Y2ggYnkgSGlua28gS29jZXZhciwgMjEgQXVnIDIwMDQ6Ci0gIC0gR3JvdXAgY29tbW9uIGZyYW1lYnVmZmVyIGZ1bmN0aW9ucyBpbiBjb21tb24vbGNkLmMKLSAgLSBHcm91cCBjb21tb24gZnJhbWVidWZmZXIgbWFjcm9zIGFuZCAjZGVmaW5lcyBpbiBpbmNsdWRlL2xjZC5oCi0gIC0gUHJvdmlkZSBjYWxjX2Zic2l6ZSgpIGZvciB2aWRlbyBBVEFHCi0KLSogUGF0Y2ggYnkgU2FtIFNvbmcsIDIxIEF1Z3VzdCAyMDA0OgotICAtIEZpeCBhIHR5cG8gaW4gUkVBRE1FCi0gIC0gQWxpZ24gIihSTykiIG91dHB1dCBmb3IgImZsaW5mbyIgYWZ0ZXIgInByb3RlY3Qgb24iCi0gIC0gQWRkIFJFU0VUIHN1cHBvcnQgZm9yIFJQWGxpdGVfRFcgYm9hcmQ7IGFkanVzdCBDUFU6QlVTIGZyZXF1ZW5jeQotICAgIHJhdGlvIDE6MSB3aGVuIGNvcmUgZnJlcXVlbmN5IGxlc3MgdGhhbiA1ME1IegotCi0qIFBhdGNoZXMgYnkgSGlua28gS29jZXZhciwgMjEgQXVnIDIwMDQ6Ci0gIC0gZml4IHNvbWUgInVzZSBvZiBsYWJlbCBhdCBlbmQgb2YgY29tcG91bmQgc3RhdGVtZW50IiB3YXJuaW5ncwotICAtIERlZmluZSB0eXBlIG9mIExDRCBwYW5lbCBvbiBsdWJib2NrIGJvYXJkIGlmIENPTkZJR19MQ0QgaXMgdXNlZAotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDE2IEF1ZyAyMDA0OgotICAtIEludHJvZHVjaW5nIHRoZSBjb25jZXB0IG9mIFNvQ3MgIi4vY3B1LyQoQ1BVKS8kKFNPQykiCi0gIC0gY3JlYXRpbmcgc3ViZGlycyBmb3IgU29DcyAuL2NwdS9hcm05MjB0L2lteCBhbmQgLi9jcHUvYXJtOTIwdC9zM2MyNHgwCi0gIC0gbW92aW5nIFNvQyBzcGVjaWZpYyBjb2RlIG91dCBvZiBjcHUvYXJtOTIwdC8gaW50byBjcHUvYXJtOTIwdC8kKFNPQykvCi0gIC0gbW92aW5nIGRyaXZlcnMvczNjMjR4MF9pMmMuYyBhbmQgZHJpdmVycy9zZXJpYWxfaW14LmMgb3V0IG9mIGRyaXZlcnMvCi0gICAgaW50byBjcHUvYXJtOTIwdC8kKFNPQykvCi0KLSogUGF0Y2hlcyBieSBTZWFuIENoYW5nLCAwOSBBdWcgMjAwNDoKLSAgLSBBZGRlZCBzdXBwb3J0IGZvciBib3RoIDggYW5kIDE2IGJpdCBtb2RlIGFjY2VzcyB0byBTeXN0ZW0gQUNFIENGCi0gICAgdGhyb3VnaCBNUFUuCi0gIC0gRml4ZWQgbWlzc2luZyBTeXN0ZW0gQUNFIENGIGRldmljZSBkdXJpbmcgZ2V0IEZBVCBwYXJ0aXRpb24gaW5mbwotICAgIGluIGZhdF9yZWdpc3Rlcl9kZXZpY2UgZnVuY3Rpb24uCi0gIC0gRW5hYmxlZCBTeXN0ZW0gQUNFIENGIHN1cHBvcnQgb24gTUwzMDAuCi0KLSogUGF0Y2ggYnkgU2VhbiBDaGFuZywgMDkgQXVnIDIwMDQ6Ci0gIFN5bmNoIGRlZmluZXMgZm9yIHNhdmVlbnYgYW5kIGRvX3NhdmVlbnYgZnVuY3Rpb25zIHNvIHRoZXkgZ2V0Ci0gIGNvbXBpbGVkIHVuZGVyIHRoZSBzYW1lIHN0YXRlbWVudC4KLQotKiBQYXRjaCBieSBTZWFuIENoYW5nLCAwOSBBdWcgMjAwNDoKLSAgLSBBZGRlZCBJMkMgc3VwcG9ydCBmb3IgTUwzMDAuCi0gIC0gQWRkZWQgc3VwcG9ydCBmb3IgTUwzMDAgdG8gcmVhZCBvdXQgaXRzIGVudmlyb25tZW50IGluZm9ybWF0aW9uCi0gICAgc3RvcmVkIG9uIHRoZSBFRVBST00uCi0gIC0gQWRkZWQgc3VwcG9ydCB0byB1c2UgYm9hcmQgc3BlY2lmaWMgcGFyYW1ldGVycyBhcyBwYXJ0IG9mCi0gICAgVS1Cb290J3MgZW52aXJvbm1lbnQgaW5mb3JtYXRpb24uCi0gIC0gVXBkYXRlZCBNTEQgZmlsZXMgdG8gc3VwcG9ydCBjb25maWd1cmF0aW9uIGZvciBuZXcgZmVhdHVyZXMKLSAgICBhYm92ZS4KLQotKiBQYXRjaGVzIGJ5IFRyYXZpcyBTYXd5ZXIsIDA1IEF1ZyAyMDA0OgotICAtIFJlbW92ZSBpbmNvcnJlY3QgYnJpZGdlIHNldHRpbmdzIGZvciBldGggZ3JvdXAgNgotICAtIEFkZCBjYWxsIHRvIHNldHVwIGJyaWRnZSBpbiBwcGNfNDQweF9ldGhfaW5pdGlhbGl6ZQotICAtIEZpeCBwcGNfNDQweF9ldGhfaW5pdCB0byByZXNldCB0aGUgcGh5IG9ubHkgaWYgaXRzIHRoZQotICAgIGZpcnN0IHRpbWUgdGhyb3VnaCwgb3RoZXJ3aXNlLCBqdXN0IGNoZWNrIHRoZSBwaHkgZm9yIHRoZQotICAgIGF1dG9uZWdvdGlhdGVkIHNwZWVkL2R1cGxleC4gIFRoaXMgYWxsb3dzIHRoZSB1c2Ugb2YgbmV0Y29uc29sZQotICAtIG9ubHkgcHJpbnQgdGhlIHNwZWVkL2R1cGxleCB0aGUgZmlyc3QgdGltZSB0aGUgcGh5IGlzIHJlc2V0LgotCi0qIFBhdGNoIGJ5IFNobG9tbyBLdXQsIDI5IE1hciAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgTUtTIEluc3RydW1lbnRzICJRdWFudHVtIiBib2FyZAotCi0qIEZpeCBidWlsZCBwcm9ibGVtIHdpdGggQ29nZW50IGJvYXJkczsKLSAgYXZvaWQgdXNpbmcgPGFzbS9ieXRlb3JkZXIuaD4gd2hlbiB1c2luZyB0aGUgaG9zdCBjb21waWxlcgotCi0qIFBhdGNoIGJ5IEdhbmFwYXRoaSBDLCAwNCBBdWcgMjAwNDoKLSAgRml4IE5GUyB0aW1lb3V0IGlzc3VlCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMTkgSnVsIDIwMDQ6Ci0gIC0gRml4IGhvc3QgdG9vbHMgYnVpbGRpbmcgaW4gQ3lnd2luIGVudmlyb25tZW50Ci0gIC0gRml4IGhlYWRlciBmaWxlcyBzZWFyY2ggb3JkZXIgZm9yIGhvc3QgdG9vbHMKLQotKiBQYXRjaCBieSBUb20gQXJtaXN0ZWFkLCAxOSBKdWwgMjAwNDoKLSAgRml4IGtnZGIuUyBzdXBwb3J0IGZvciA3NHh4Xzc1eCBjcHUKLQotKiBQYXRjaCBieSBKb24gTG9lbGlnZXIsIDE1IEp1bCAyMDA0OgotICBGaXggTVBDODV4eCBJMkMgZHJpdmVyCi0KLSogRml4IHByb2JsZW1zIHdpdGggQ0RST00gZHJpdmUgYXMgc2xhdmUgZGV2aWNlIG9uIExpdGU1MjAwIElERSBidXMuCi0KLSogUGF0Y2ggYnkgU3RlcGhlbiBXaWxsaWFtcywgMTUgSnVseSAyMDA0Ci0gIFNldCB0aGUgUENJIGNsYXNzIGNvZGUgZm9yIEpTRSBib2FyZCBhcyBwYXJ0IG9mIFBDSSBpbnRlcmZhY2Ugc2V0dXAKLQotKiBQYXRjaCBieSBNaWNoYWVsIEJlbmR6aWNrLCAxNSBKdWwgMjAwNDoKLSAgRml4IHByb2JsZW0gd2l0aCB3cml0ZXMgd2l0aCBvZGQgc2l6ZXMgaW4gZHJpdmVycy9jZmlfZmxhc2guYyB3aGVuCi0gIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFIGlzIHNldAotCi0qIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDEzIEp1bCAyMDA0OgotICBBbGxvdyBjbG9jayBzZXR0aW5nIG9uIE1QQzg2Ni9NUEM4ODUgc2VyaWVzIGNoaXBzIGFjY29yZGluZyB0bwotICBlbnZpcm9ubWVudCB2YXJpYWJsZSBgY3B1Y2xrJwotCi0qIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDIwIEFwciAyMDA0OgotICBSZW1vdmUgdW5uZWNlc3NhcnkgcmVkZWZpbmUgb2YgQ1BNX0RBVEFPTkxZX1NJWkUgZm9yIE1QQzgyNngKLQotKiBQYXRjaCBieSBWaW5jZW50IER1YmV5LCAyNCBTZXAgMjAwNDoKLSAgQWRkIHN1cHBvcnQgZm9yIHhhZW5pYXggYm9hcmQKLQotKiBBZGQgY29tbWVudCBhYm91dCBub24tR1BMIGNoYXJhY3RlciBvZiBzdGFuZGFsb25lIGFwcGxpY2F0aW9ucyB0bwotICBDT1BZSU5HIGZpbGUKLQotKiBGaXggRkVDIGV0aGVybmV0IHByb2JsZW0gb24gTlNDVSBib2FyZC4KLQotKiBQYXRjaCBieSBHYXJ5IEplbm5lam9obiwgMDkgU2VwIDIwMDQ6Ci0gIGFsbG93IHRvIHVzZSBVU0FSVDEgYXMgY29uc29sZSBwb3J0IG9uIGF0OTFybTkyMDBkayBib2FyZHMKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE2IFNlcCAyMDA0OgotICBVcGRhdGUgQVI0MDUgYm9hcmQuCi0KLSogRml4IFN5c0NsayBoYW5kbGluZyBmb3IgUFBDaGFtZWxlb24gYW5kIENBVGNlbnRlciBib2FyZHMKLQotKiBQYXRjaCBieSBEZXRsZXYgWnVuZGVsLCAwOCBTZXAgMjAwNDoKLSAgVXBkYXRlIGV0YWdzIGJ1aWxkIHRhcmdldAotCi0qIEltcHJvdmUgTmV0Q29uc29sZSBzdXBwb3J0OiBhZGQgc3VwcG9ydCBmb3IgYnJvYWRjYXN0IGRlc3RpbmF0aW9uCi0gIGFkZHJlc3MgYW5kIGJ1ZmZlcmVkIGlucHV0LgotCi0qIENsZWFudXAgY29tcGlsZXIgd2FybmluZ3MgZm9yIEdDQyAzLjMueCBhbmQgbGF0ZXIKLQotKiBGaXggcHJvYmxlbSBpbiBjbWRfamZmczIuYyBpbnRyb2R1Y2VkIGJ5IENGR19KRkZTX1NJTkdMRV9QQVJUIHBhdGNoCi0KLSogQWRkIHN1cHBvcnQgZm9yIElEUyAiTkM2NTAiIGJvYXJkCi0KLSogQWRkIGF1dG9tYXRpYyB1cGRhdGUgc3VwcG9ydCBmb3IgTFdNT04gYm9hcmQKLQotKiBDbGVhciBCbG9jayBMb2NrLUJpdHMgd2hlbiBlcmFzaW5nIGZsYXNoIG9uIExXTU9OIGJvYXJkLgotCi0qIEZpeCByZXR1cm4gY29kZSBvZiAiZmF0bG9hZCIgY29tbWFuZAotCi0qIEVuYWJsZSBNU0RPUy9WRkFUIGZpbGVzeXN0ZW0gc3VwcG9ydCBmb3IgTFdNT04gYm9hcmQKLQotKiBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAwMyBBdWcgMjAwNDoKLSAgY2hhbmdlIHRpbWluZyBmb3IgU001MDEgZ3JhcGhpY3MgY29udHJvbGxlciBvbiBUUU01MjAwIG1vZHVsZQotCi0qIFBhdGNoIGJ5IE1hcmsgSm9uYXMsIDEzIEp1bHkgMjAwNDoKLSAgLSBUb3RhbDUyMDAgTENEIG5vdyBydW4gaW4gbGl0dGxlIGVuZGlhbiBtb2RlLiBFbmRpYW5lc3MgY29udmVyc2lvbgotICAgIGlzIGRvbmUgaW4gaGFyZHdhcmUuCi0gIC0gUmVtb3ZlZCBsYXN0IHJlZmVyZW5jZSB0byAiY29uc29sZSIgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLSogUGF0Y2hlcyBieSBMYXJzIE11bmNoLCAxMiBKdWwgMjAwNDoKLSAgLSBtb3ZlIGF0NDUuYyB0byBib2FyZC9hdDkxcm05MjAwZGsvIHNpbmNlIHRoaXMgaXMgYXQ5MXJtOTIwMGRrCi0gICAgYm9hcmQgc3BlY2lmaWMKLSAgLSBzcGxpdCBvdXQgdGhlIExYVDk3MUEgUEhZIGZyb20gbnNfOTc1MF9ldGguaAotICAtIHNwbGl0IHRoZSBkbTkxNjEgcGh5IHBhcnQgb3V0IG9mIGF0OTFybTkyMDBfZXRoZXIuYwotCi0qIFBhdGNoIGJ5IEFuZHJlYXMgRW5nZWwsIDEyIEp1bCAyMDA0OgotICBSZXBsYWNlZCBoYXJkY29kZWQgUEwwMTEgY2xvY2sgZnJlcXVlbmN5IHdpdGggY29uZmlnIHZhcmlhYmxlLgotICBGaXhlZCB3cm9uZyBDT05GSUdfQ01EX0RGTCBkb2MuCi0KLSogUGF0Y2ggYnkgVGhvbWFzIFZpZWh3ZWdlciwgMDkgSnVuIDIwMDQ6Ci0gIG1ha2UgaXQgcG9zc2libGUgdG8gcmVtb3ZlIGNocGFydCB3aGVuIHRoZXJlIGlzIG9ubHkgb25lIHBhcnRpdGlvbgotCi0qIEFkZCBzdXBwb3J0IGZvciBjb25zb2xlIG92ZXIgVURQIChjb21wYXRpYmxlIHRvIEluZ28gTW9sbmFyJ3MKLSAgbmV0Y29uc29sZSBwYXRjaCB1bmRlciBMaW51eCkKLQotKiBQYXRjaCBieSBKb24gTG9lbGlnZXIsIDE2IEp1bCAyMDA0OgotICAtIHN1cHBvcnQgbGFyZ2VyIEREUiBtZW1vcmllcyB1cCB0byAyRyBvbiB0aGUgUEM4NTQwLzg1NjBBRFMgYW5kCi0gICAgU1RYR1AzIGJvYXJkcwotICAtIE1hZGUgTVBDODU0MC84NTYwQURTIGJlIDMzTWh6IFBDSSBieSBkZWZhdWx0LgotICAtIFJlbW92ZWQgbW9sZHkgQ09ORklHX1JBTV9BU19GTEFTSCwgQ0ZHX0ZMQVNIX1BPUlRfV0lEVEhfMTYKLSAgICBhbmQgQ09ORklHX0wyX0lOSVRfUkFNIG9wdGlvbnMuCi0gIC0gUmVmYWN0b3IgTG9jYWwgQnVzIGluaXRpYWxpemF0aW9uIG91dCBvZiBTRFJBTSBzZXR1cC4KLSAgLSBSZS1pbXBsZW1lbnQgbmV3IHZlcnNpb24gb2YgTEJDMTEvRERSMTEgZXJyYXRhIHdvcmthcm91bmRzLgotICAtIE1vdmVkIGJvYXJkIHNwZWNpZmljIFBDSSBpbml0IHBhcnRzIG91dCBvZiBDUFUgZGlyZWN0b3J5LgotICAtIEFkZGVkIFRMQiBlbnRyeSBmb3IgUENJLTEgSU8gTWVtb3J5Ci0gIC0gVXBkYXRlZCBSRUFETUUubXBjODV4eGFkcwotCi0qIFBhdGNoIGJ5IFNhc2NoYSBIYXVlciwgMjggSnVuOgotICAtIGFkZCBnZW5lcmljIHN1cHBvcnQgZm9yIE1vdG9yb2xhIGkuTVggYXJjaGl0ZWN0dXJlCi0gIC0gYWRkIHN1cHBvcnQgZm9yIG14MWFkcywgbXgxZnMyIGFuZCBzY2I5MzI4IGJvYXJkcwotCi0qIFBhdGNoZXMgYnkgTWFyYyBMZWVtYW4sIDIzIEp1bCAyMDA0OgotICAtIEFkZCBkZWZpbmUgZm9yIHRoZSBQQ0kvTWVtb3J5IEJ1ZmZlciBDb25maWd1cmF0aW9uIFJlZ2lzdGVyCi0gIC0gY29ycmVjdGVkIGNvbW1lbnRzIGluIGNwdS9tcGM4MjR4L2NwdV9pbml0LmMKLQotKiBBZGQgc3VwcG9ydCBmb3IgbXVsdGlwbGUgc2VyaWFsIGludGVyZmFjZXMKLSAgKGZvciBleGFtcGxlIHRvIGFsbG93IG1vZGVtIGRpYWwtaW4gLyBkaWFsLW91dCkKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDE1IEp1bCAyMDA0OgotICBjcHUvcHBjNHh4L3NkcmFtLmMgcmV3cml0dGVuIG5vdyB1c2luZyBnZXRfcmFtX3NpemUoKQotCi0qIEZpeCBOU0NVIGNvbmZpZzsgYWRkIGV0aGVybmV0IHdha2V1cCBjb2RlLgotCi0qIEFkZCBsaW5rIGZvciBwcmVsb2FkZXIgZm9yIE1vdG9yb2xhIENvbGRGaXJlIHRvIFJFQURNRS5tNjhrCi0KLSogUGF0Y2ggYnkgTWljaGFlbCBCZW5kemljaywgMTIgSnVsIDIwMDQ6Ci0gIGZpeCBvdXRwdXQgZm9ybWF0dGluZyBpbiBkcml2ZXJzL2NmaV9mbGFzaC5jCi0KLSogUGF0Y2ggYnkgTWFyayBKb25hcywgMDIgSnVsIDIwMDQ6Ci0gIEZpeCBsb3dib290IChhZ2Fpbikgb24gTVBDNXh4eAotCi0qIFBhdGNoIGJ5IEN1cnQgQnJ1bmUsIDA3IEp1bCAyMDA0OgotICByZWxvY2F0ZSBleGNlcHRpb24gdmVjdG9ycyBvbiBhcm03MjB0IGlmIG5lZWRlZAotCi0qIFBhdGNoIGJ5IEdlb3JnZSBHLiBEYXZpcywgMDYgSnVsIDIwMDQ6Ci0gIC0gdXBkYXRlIG1hY2gtdHlwZXMuaCB0byBsYXRlc3QgYXJtLmxpbnV4Lm9yZy51ayBtYXN0ZXIgbGlzdAotICAtIFNldCBjb3JyZWN0IE9NQVAxNjEwIGJpX2FyY2hfbnVtYmVyIGZvciBidWlsZCB0YXJnZXQKLQotKiBQYXRjaCBieSBDdXJ0IEJydW5lLCAwNiBKdWwgMjAwNDoKLSAgZXZiNDUxMDogYWRkIHN1cHBvcnQgZm9yIHRpbWVyIGludGVycnVwdDsgY2xlYW51cAotCi0qIFBhdGNoIGJ5IERhbiBQb2lyb3QsIDA2IEp1bCAyMDA0OgotICBGaXggc2JjODI2MCBlbnZpcm9ubWVudCB2YXJpYWJsZXMKLQotKiBDbGVhbnVwIHJlZHVuZGFuZCAiY29uc29sZSIgZW52aXJvbm1lbnQgdmFyaWFibGUKLQotKiBQYXRjaCBieSBNYXJrIEpvbmFzLCAwNSBKdWwgMjAwNDoKLSAgYWRkIHN1cHBvcnQgZm9yIHRoZSBUb3RhbDUxMDAncyBhbmQgVG90YWw1MjAwJ3MgTENEIHNjcmVlbgotCi0qIFBhdGNoZXMgYnkgRGFuIEVpc2VuaHV0LCAwMSBKdWwgMjAwNDoKLSAgLSBSRUFETUUgZml4ZXMuCi0gIC0gTW92ZSBkb2MyMDAwLmggaW5jbHVkZSB0byBwcmV2ZW50IGNvbXBpbGVyIHdhcm5pbmcgb24gc29tZSBib2FyZHMKLQotKiBQYXRjaCBieSBNYXJrIEpvbmFzLCAwMSBKdWwgMjAwNDoKLSAgQWRkZWQgc3VwcG9ydCBmb3IgVG90YWw1MTAwIGFuZCBUb3RhbDUyMDAgKFJldi4xIGFuZCBSZXYuMikKLSAgTUdUNTEwMCBhbmQgTVBDNTIwMCBiYXNlZCBGcmVlc2NhbGUgcGxhdGZvcm1zLgotCi0qIFBhdGNoIGJ5IFBoaWxpcHBlIFJvYmluLCAwMSBKdWwgMjAwNDoKLSAgQWRkIGluaXRpYWxpemF0aW9uIGZvciBJbnRlZ3JhdG9yIGFuZCB2ZXJzYXRpbGUgYm9hcmQgZmlsZXMuCi0KLSogUGF0Y2ggYnkgSGlua28gS29jZXZhciwgMDEgSnVuIDIwMDQ6Ci0gIEZpeCBWRkQgRkIgYWxsb2NhdGlvbiwgYWRkIExDRCBGQiBhbGxvY2F0aW9uIG9uIEFSTQotCi0qIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDMwIEp1biAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgVFFNNTIwMCBib2FyZAotCi0qIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDI5IEp1biAyMDA0OgotICBBZGQgbG9vcHcgY29tbWFuZDogaW5maW5pdGUgd3JpdGUgbG9vcCBvbiBhZGRyZXNzIHJhbmdlCi0KLSogUGF0Y2hlcyBieSBZYXN1c2hpIFNob2ppLCAyOSBKdW4gMjAwNDoKLSAgLSBhZGQgZW1wdHkgaW5jbHVkZS9hc20tbWljcm9ibGF6ZS9wcm9jZXNzb3IuaAotICAtIGFkZCB0byBDUkVESVRTIGFuZCBNQUlOVEFJTkVSUwotICAtIGFkZCBnZCBpbml0aWFsaXphdGlvbgotICAtIGFkZCBNaWNyb0JsYXplIGFuZCBTVVpBS1UgYm9hcmQgdG8gTUFLRUFMTCBzY3JpcHQKLSAgLSBhZGQgcmVzZXQgc3VwcG9ydCBmb3IgU1VaQUtVCi0gIC0gYWRkIGZsdXNoX2NhY2hlKCkgZm9yIE1pY3JvQmxhemUKLSAgLSBhZGQgQ0ZHX0ZMQVNIX1NJWkUgdG8gaW5jbHVkZS9jb25maWdzL3N1emFrdS5oIHNpbmNlIHdlIGhhdmUgZml4ZWQKLSAgICBzaXplIGZsYXNoIG1lbW9yeSBvbiBTVVpBS1UKLQotKiBQYXRjaCBieSBQcmFrYXNoIEt1bWFyLCAyNyBKdW4gMjAwNDoKLSAgQWRkIHN1cHBvcnQgZm9yIHRoZSBQWEEyNTAgYmFzZWQgSW50cmluc3ljIENlcmYgYm9hcmQuCi0KLSogUGF0Y2ggYnkgWWFzdXNoaSBTaG9qaSwgMjcgSnVuIDIwMDQ6Ci0gIGZpeCBjb21tZW50IGluIGluY2x1ZGUvY29tbW9uLmgKLQotKiBSZW5hbWUgU0JDODU2MCBpbnRvIHNiYzg1NjAgZm9yIGNvbnNpc3RlbmN5Ci0KLSogUGF0Y2ggYnkgRGFuaWVsIFBvaXJvdCwgMjQgSnVuIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBXaW5kIFJpdmVyJ3Mgc2JjODI0MCBib2FyZAotCi0qIFBhdGNoZXMgYnkgWWFzdXNoaSBTaG9qaSwgMjYgSnVuIDIwMDQ6Ci0gIC0gZHJpdmVycy9zZXJpYWxfeHVhcnRsaXRlLmM6IGZpeCAicmV0dXJuIDAiIGluIHZvaWQgZnVuY3Rpb24KLSAgLSBhZGQgbWljcm9ibGF6ZSBzdXBwb3J0IHRvIG1raW1hZ2UgdG9vbAotCi0qIFBhdGNoIGJ5IEZyZWQgS2xhdHQsIDI1IEp1biAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgV2luZFJpdmVyJ3Mgc2JjODU2MCBib2FyZAotCi0qIFBhdGNoIGJ5IE5pY29sYXMgTGFjcmVzc29ubmllcmUsIDI0IEp1biAyMDA0Ci0gIFNtYWxsIEJ1Z3MgZml4ZXMgZm9yICJhdDkxcm05MjAwZGsiIGJvYXJkOgotICAtIFRpbWluZyBtb2RpZmljYXRpb25zIGZvciBTUEkgRGF0YUZsYXNoIGFjY2VzcwotICAtIEZpeCBOQU5EIGZsYXNoIGRldGVjdGlvbiBidWcKLQotKiBQYXRjaCBieSBOaWNvbGFzIExhY3Jlc3Nvbm5pZXJlLCAyNCBKdW4gMjAwNDoKLSAgQWRkIFN1cHBvcnQgZm9yIEZsYXNoIEFUNDlCVjY0MTYgZm9yIEFUOTFSTTkyMDBESyBib2FyZAotCi0qIFBhdGNoIGJ5IEpvbiBMb2VsaWdlciwgMTcgSnVuZSAyMDA0OgotICBDb21wbGV0aW9uIG9mIHRoZSA4NTQwQURTLzg1NjBBRFMgdXBkYXRlczoKLSAgRml4IHNvbWUgUENJIGFuZCBSYXBpZCBJL08gbWVtb3J5IG1hcHMsCi0gIEluaXRpYWxpemUgYm90aCBUU0VDIDEgYW5kIDIsCi0gIEluaXRpYWxpemUgU0RSQU0KLSAgVXBkYXRlIE1BSU5UQUlORVIgZm9yIDg1eHggYm9hcmRzIGFuZCBSRUFETUUubXBjODV4eGFkcwotCi0qIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDE2IEp1biAyMDA0OgotICBSZW1vdmUgb2Jzb2xldGUgQWRkZXJJSSBwb3J0IHdoaWNoIHdhcyBzdXBlcnNlZGVkIGJ5IHVuaWZpZWQKLSAgQWRkZXJJSS9BZGRlcjg3eCBwb3J0Ci0KLSogUGF0Y2ggYnkgTGFkaXNsYXYgTWljaGwsIDE2IEp1biAyMDA0OgotICBGaXggZ2NjLTMuMy4zIHdhcm5pbmdzIGZvciBzbWM5MTExMS5jCi0KLSogUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAwMiBKdWwgMjAwNDoKLSAgLSBGaXggYnVnIGluIDQwNSBldGhlcm5ldCBkcml2ZXI7IGFsbG9jYXRlZCBkYXRhIG5vdCBjbGVhcmVkIQotICAtIEZpeCBwcm9ibGVtIGluIDQwNSBpMmMgZHJpdmVyOyBkb24ndCB0cnkgdG8gcHJpbnQgd2l0aG91dCBjb25zb2xlIQotCi0qIFBhdGNoIGJ5IFBhdWwgUnVobGFuZCwgMTEgSnVuIDIwMDQ6Ci0gIFJlbW92ZSBkZWJ1ZyBjb2RlIGZyb20gJ2JvYXJkL2xwZDdhNDB4L2ZsYXNoLmMnCi0KLSogUGF0Y2ggYnkgQW5kcmVhIE1hcnNvbiwgMTEgSnVuIDIwMDQ6Ci0gIFVwZGF0ZSBmb3IgUFBDaGFtZWxlb24gYm9hcmQ6Ci0gIC0gc3VwcG9ydCBmb3IgU3lzQ2xrIEAgMjVNSHoKLSAgLSBzdXBwb3J0IGZvciBTaWxpY29uIE1vdGlvbiBTTTcxMiBWR0EgY29udHJvbGxlcgotICAtIHNvbWUgY2xlYW4gdXBzCi0KLSogUGF0Y2hlcyBieSBSaWNoYXJkIFdvb2RydWZmLCAxMCBKdW4gMjAwNDoKLSAgLSBmaXggcHJvYmxlbXMgd2l0aCBleGFtcGxlcy9zdHVicy5jIGZvciBHQ0MgPj0gMy40Ci0gIC0gZml4IHByb2JsZW1zIHdpdGggZ2QgaW5pdGlhbGl6YXRpb24KLQotKiBQYXRjaCBieSBDdXJ0IEJydW5lLCAxNyBNYXkgMjAwNDoKLSAgLSBBZGQgc3VwcG9ydCBmb3IgU2Ftc3VuZyBTM0M0NTEwQiBDUFUgKEFSTTd0ZG1pIGJhc2VkIFNvQykKLSAgLSBBZGQgc3VwcG9ydCBmb3IgRVNQRC1JbmMuIEVWQjQ1MTAgQm9hcmQKLQotKiBQYXRjaCBieSBNYXJjIExlZW1hbiwgMTEgTWF5IDIwMDQ6Ci0gIEZpeCBmb3IgTVBDODI0NSAtIHJlYWRpbmcgUFBDIE1lbW9yeSBmcm9tIGFub3RoZXIgZGV2aWNlIHdpdGggdGhlCi0gIFBQQyBhcyBQQ0kgdGFyZ2V0IGRldmljZSBjb3JydXB0cyBkYXRhIGR1ZSB0byBpbnRlcmVuYWwgaGFyZHdhcmUKLSAgYnVmZmVyaW5nLgotCi0qIEZpeCAiY2xzIiBjb21tYW5kIHdoZW4gdXNlZCB3aXRoIHNwbGFzaCBzY3JlZW4KLQotKiBJbmNyZWFzZSBORlMgZG93bmxvYWQgdGltZW91dCAobm93IDEgbWluIC0gMTAgc2VjIGlzIHRvIHNob3J0IGZvciBhCi0gIHNsb3cgZG93bmxvYWQgb2YgYSBiaWcgaW1hZ2UpCi0KLSogQWRkICJjbHMiIGZ1bmN0aW9uIHRvIE1QQzgyMyBMQ0QgZHJpdmVyIHNvIHdlIGNhbiByZWluaXRpYWxpemUgdGhlCi0gIGRpc3BsYXkgZXZlbiBhZnRlciBzaG93aW5nIGEgYml0bWFwCi0KLSogUGF0Y2ggYnkgSm9zZWYgV2FnbmVyLCAwNCBKdW4gMjAwNDoKLSAgLSBERFIgUmFtIHN1cHBvcnQgZm9yIFBNNTIwIChNUEM1MjAwKQotICAtIHN1cHBvcnQgZm9yIGRpZmZlcmVudCBmbGFzaCB0eXBlcyAoUE01MjApCi0gIC0gVVNCIC8gSURFIC8gQ0YtQ2FyZCAvIERpc2tPbkNoaXAgc3VwcG9ydCBmb3IgUE01MjAKLSAgLSA4IGJpdCBib290IHJvbSBzdXBwb3J0IGZvciBQTTUyMC9DRTUyMAotICAtIEFkZCBhdXRvIFNEUkFNIG1vZHVsZSBkZXRlY3Rpb24gZm9yIE1pY3JvU3lzIENQQzQ1IGJvYXJkIChNUEM4MjQ1KQotICAtIEkyQyBhbmQgUlRDIHN1cHBvcnQgZm9yIENQQzQ1Ci0gIC0gc3VwcG9ydCBvZiBuZXcgZmxhc2ggdHlwZSAoMjhGMTYwQzNUKSBmb3IgQ1BDNDUKLQotKiBGaXggZmxhc2ggcGFyYW1ldGVycyBwYXNzZWQgdG8gTGludXggZm9yIFBQQ2hhbWVsZW9uIGJvYXJkCi0KLSogUmVtb3ZlIGV0aF9pbml0KCkgZnJvbSBsaWJfYXJtL2JvYXJkLmM7IGl0J3MgZG9uZSBpbiBuZXQubmV0LmMuCi0KLSogUGF0Y2ggYnkgUGF1bCBSdWhsYW5kLCAxMCBKdW4gMjAwNDoKLSAgZml4IHN1cHBvcnQgZm9yIExvZ2ljIFNESy1MSDdBNDA0IGJvYXJkIGFuZCBjbGVhbiB1cCB0aGUKLSAgTEg3QTQwNCByZWdpc3RlciBtYWNyb3MuCi0KLSogUGF0Y2ggYnkgTWF0dGhldyBNY0NsaW50b2NrLCAxMCBKdW4gMjAwNDoKLSAgTW9kaWZ5IGNvZGUgdG8gc2VsZWN0IGNvcnJlY3Qgc2VyaWFsIGNsb2NrIG9uIFNhbmRwb2ludDgyNDUKLQotKiBQYXRjaCBieSBSb2JlcnQgU2Nod2ViZWwsIDEwIEp1biAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgSW50ZWwgSzMgc3RyYXRhIGZsYXNoLgotCi0qIFBhdGNoIGJ5IFRob21hcyBCcmFuZCwgMTAgSnVuIDIwMDQ6Ci0gIEZpeCAibG9hZHMiIGNvbW1hbmQgb24gREsxUzEwIGJvYXJkCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMDkgSnVuIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciA4TUIgZmxhc2ggU0lNTSBhbmQgSkZGUzIgZmlsZSBzeXN0ZW0gb24KLSAgTW90b3JvbGEgRkFEUyBib2FyZCBhbmQgaXRzIGRlcml2YXRpdmVzIChNUEM4NnhBRFMsIE1QQzg4NUFEUykuCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMDkgSnVuIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBBbmFsb2d1ZSZNaWNybyBBZGRlcjg3eCBhbmQgdGhlIG9sZGVyIEFkZGVySUkgYm9hcmQuCi0KLSogUGF0Y2ggYnkgTWluZy1MZW4gV3UsIDA5IEp1biAyMDA0OgotICBBZGQgc3VwcHBvcnQgZm9yIE1DOTMyOCAoRGFyZ29uYmFsbCkgQ1BVIGFuZCBNb3Rvcm9sYSBNWDFBRFMgYm9hcmQKLQotKiBQYXRjaCBieSBTYW0gU29uZywgMDkgSnVuIDIwMDQ6Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIFJQWGxpdGVfRFcgYm9hcmQKLSAgLSBVcGRhdGUgRkxBU0ggZHJpdmVyIGZvciA0KkFNMjlETDMyM0RCOTBWSQotICAtIEFkZCBvcHRpb24gY29uZmlndXJhdGlvbiBvZiBDRkdfRU5WX0lTX0lOX05WUkFNIG9uIFJQWGxpdGVfRFcgYm9hcmQKLQotKiBQYXRjaCBieSBNYXJrIEpvbmFzLCAwOCBKdW5lIDIwMDQ6Ci0gIC0gTWFrZSBNUEM1MjAwIGJvYXJkcyBldmFsdWF0ZSB0aGUgU1ZSIHRvIHByaW50IHByb2Nlc3NvciBuYW1lIGFuZAotICAgIHZlcnNpb24gaW4gY2hlY2tjcHUoKSAoY3B1L21wYzV4eHgvY3B1LmMpLgotCi0qIFBhdGNoIGJ5IEthaS1Vd2UgQmxvZW0sIDA2IE1heSAyMDA0OgotICBGaXggZW5kaWFuZXNzIHByb2JsZW0gaW4gY3JhbWZzIGNvZGUKLQotKiBQYXRjaCBieSBUb20gQXJtaXN0ZWFkLCAwNCBKdW4gMjAwNDoKLSAgQWRkIHN1cHBvcnQgZm9yIE1BWDY5MDAgUlRDCi0KLSogUGF0Y2hlcyBieSBMYWRpc2xhdiBNaWNobCwgMDMgSnVuIDIwMDQ6Ci0gIC0gZml4IGNmaV9mbGFzaC5jIG9uIExFIHN5c3RlbXMKLSAgLSBsZXQgJ21ha2UgbXJwcm9wZXInIGRlbGV0ZSB1LWJvb3QuaW1nIGFzIHdlbGwKLSAgLSB0dXJuIHByaW50ZiBpbnRvIGRlYnVnIGluIGNmaV9mbGFzaC5jCi0KLSogUGF0Y2ggYnkgS3VydCBTdHJlbWVyY2gsIDI4IE1heSAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgRXh5cyBYU0VuZ2luZSBib2FyZAotCi0qIFBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDI3IE1heSAyMDA0OgotICBGaXggYSBNUEM1eHh4IEkyQyB0aW1pbmcgaXNzdWUgaW4gaTJjX3Byb2JlKCkuCi0KLSogUGF0Y2ggYnkgTGVpZiBMaW5kaG9sbSwgMjcgTWF5IDIwMDQ6Ci0gIEZpeCBib2FyZF9pbml0X2YoKSBmb3IgZGJhdTF4MDAgYm9hcmQuCi0KLSogUGF0Y2ggYnkgSW1yZSBEZWFrLCAyNiBNYXkgMjAwNDoKLSAgT24gT01BUDE2MTAgcGxhdGZvcm1zIGNoZWNrIGlmIGJvb3RpbmcgZnJvbSBSQU0oQ1MwKSBvciBmbGFzaChDUzMpLgotICBTZXQgZmxhc2ggYmFzZSBhY2NvcmRpbmdseSwgYW5kIGRlY2lkZSB3aGV0aGVyIHRvIGRvIG9yIHNraXAgYm9hcmQKLSAgc3BlY2lmaWMgc2V0dXAgc3RlcHMuCi0KLSogUGF0Y2ggYnkgSm9zZWYgQmF1bWdhcnRuZXIsIDI2IE1heSAyMDA0OgotICBBZGQgbWlzc2luZyBkZWZpbmUgaW4gaW5jbHVkZS9hc20tbTY4ay9nbG9iYWxfZGF0YS5oCi0KLSogUGF0Y2ggYnkgSm9zZWYgQmF1bWdhcnRuZXIsIDI1IE1heSAyMDA0OgotICBBZGQgbWlzc2luZyBmdW5jdGlvbnMgZ2V0X3RpY2tzKCkgYW5kIGdldF90YmNsaygpIGluIGxpYl9tNjhrL3RpbWUuYwotCi0qIFBhdGNoIGJ5IFBhdWwgUnVobGFuZCwgMjQgTWF5IDIwMDQ6Ci0gIGZpeCBTRFJBTSBpbml0aWFsaXphdGlvbiBmb3IgTFBEN0E0MDAgYm9hcmQuCi0KLSogUGF0Y2ggYnkgSmlhbiBaaGFuZywgMjAgTWF5IDIwMDQ6Ci0gIGFkZCBzdXBwb3J0IGZvciBlbnZpcm9ubWVudCBpbiBOQU5EIGZsYXNoCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMjAgTWF5IDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBJbnRlcnBoYXNlIGlTUEFOIGJvYXJkcy4KLQotKiBQYXRjaGVzIGJ5IFBhdWwgUnVobGFuZCwgMTcgTWF5IDIwMDQ6Ci0gIC0gQWRkIEkvTyBmdW5jdGlvbnMgdG8gdGhlIHNtYzkxMTExIGV0aGVybmV0IGRyaXZlciB0byBzdXBwb3J0IHRoZQotICAgIExvZ2ljIExQRDdBNDB4IGJvYXJkcy4KLSAgLSBBZGQgc3VwcG9ydCBmb3IgdGhlIExvZ2ljIFpvb20gTEg3QTQweCBiYXNlZCBTREsgYm9hcmQocyksCi0gICAgc3BlY2lmaWNhbGx5IHRoZSBMUEQ3QTQwMC4KLQotKiBQYXRjaGVzIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMTUgTWF5IDIwMDQ6Ci0gIC0gY2FsbCBNQUMgYWRkcmVzcyByZWFkaW5nIGNvZGUgYWxzbyBmb3IgU01TQzkxQzExMTsKLSAgLSBtYWtlIFNNU0M5MUMxMTEgdGltZW91dCBjb25maWd1cmFibGUsIHJlbW92ZSBkdXBsaWNhdGUgY29kZQotICAtIGZpeCBnZXRfdGltZXIoKSBmb3IgUFhBCi0gIC0gdXBkYXRlIGRvYy9SRUFETUUuSkZGUzIKLSAgLSB1c2UgImJvb3RmaWxlIiBlbnYgdmFyaWFibGUgYWxzbyBmb3IgamZmczIKLQotKiBQYXRjaCBieSBUb2x1bmF5IE9ya3VuLCAxNCBNYXkgMjAwNDoKLSAgQWRkIHN1cHBvcnQgZm9yIENvZ2VudCBDU0I0NzIgYm9hcmQgKDhNQiBGbGFzaCBSZXYpCi0KLSogUGF0Y2ggYnkgVGhvbWFzIFZpZWh3ZWdlciwgMTQgTWF5IDIwMDQ6Ci0gIC0gZmxhc2guaDogbW9yZSBmbGFzaCB0eXBlcyBhZGRlZAotICAtIGltbWFwXzgyNjAuaDogc29tZSBiaXRzIGFkZGVkICh1c2VmdWwgZm9yIFJNSUkpCi0gIC0gY21kX2NvbmluZm8uYzogdHlwbyBjb3JyZWN0ZWQsIHByaW50ZiAtPiBwdXRzCi0gIC0gcmVkdWNlZCBzaXplIGJ5IHJlcGxhY2luZyBzcGFjZXMgd2l0aCB0YWIKLQotKiBQYXRjaCBieSBSb2JlcnQgU2Nod2ViZWwsIDEzIE1heSAyMDA0OgotICBBZGQgJ2ltZ2V4dHJhY3QnIGNvbW1hbmQ6IGV4dHJhY3Qgb25lIHBhcnQgb2YgYSBtdWx0aSBmaWxlIGltYWdlLgotCi0qIFBhdGNoZXMgYnkgSm9uIExvZWxpZ2VyLCAxMSBNYXkgMjAwNDoKLSAgRHluYW1pY2FsbHkgaGFuZGxlIFJFVjEgYW5kIFJFVjIgTVBDODV4eCBwYXJ0cy4KLSAgICAoSm9uIExvZWxpZ2VyLCAxMC1NYXktMjAwNCkuCi0gIE5ldyBjb25zaXN0ZW50IG1lbW9yeSBtYXAgYW5kIExvY2FsIEFjY2VzcyBXaW5kb3cgYWNyb3NzIE1QQzg1eHggbGluZS4KLSAgTmV3IENDU1JCQVIgYXQgMHhFMDAwXzAwMDAgbm93LgotICBBZGQgUkFQSUQgSS9PIG1lbW9yeSBtYXAuCi0gIE5ldyBtZW1vcnkgbWFwIGluIFJFQURNRS5NUEM4NXh4YWRzCi0gICAgKEt1bWFyIEdhbGEsIDEwLU1heS0yMDA0KQotICBCZXR0ZXIgYm9hcmQgYW5kIENQVSBpZGVudGlmaWNhdGlvbiBvbiBNUEM4NXh4IGJvYXJkcyBhdCBib290LgotICAgIChKb24gTG9lbGlnZXIsIDEwLU1heS0yMDA0KQotICBTRFJBTSBjbG9jayBjb250cm9sIGZpeGVzIG9uIE1QQzg1NDBBRFMgJiBNUEM4NTYwIGJvYXJkcy4KLSAgU29tZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIE1QQzg1NDBBRFMgJiBNUEM4NTYwQURTIGNsZWFuZWQgdXAuCi0gICAgKEppbSBSb2JlcnRzb24sIDEwLU1heS0yMDA0KQotICBSZXdyaXRlIG9mIHRoZSBNUEM4NXh4IFRocmVlIFNwZWVkIEV0aGVybmV0IENvbnRyb2xsZXIgKFRTRUMpIGRyaXZlci4KLSAgU3VwcG9ydHMgbXVsdGlwbGUgUEhZcy4KLSAgICAoQW5keSBGbGVtaW5nLCAxMC1NYXktMjAwNCkKLSAgU29tZSBSRUFETUUuTVBDODV4eGFkcyB1cGRhdGVzLgotICAgIChLdW1hciBHYWxhLCAxMC1NYXktMjAwNCkKLSAgQ29weXJpZ2h0IHVwZGF0ZXMgZm9yICJGcmVlc2NhbGUiCi0gICAgKEFuZHkgRmxlbWluZywgMTAtTWF5LTIwMDQpCi0KLSogUGF0Y2ggYnkgU3RlcGhlbiBXaWxsaWFtcywgMTEgTWF5IDIwMDQ6Ci0gIEFkZCBmbGFzaCBzdXBwb3J0IGZvciBTVCBNMjlXMDQwQgotICBSZWR1Y2UgSlNFIHNwZWNpZmljIGZsYXNoLmMgdG8gcmVtb3ZlIGRlYWQgY29kZS4KLQotKiBQYXRjaCBieSBNYXJrdXMgUGlldHJlaywgMDQgTWF5IDIwMDQ6Ci0gIEZpeCBjbGVhcl9ic3MgY29kZSBmb3IgQVJNIHN5c3RlbXMgKGFsbCBleGNlcHQgczNjNDRiMCB3aGljaAotICBkb2Vzbid0IGNsZWFyIEJTUyBhdCBhbGw/KQotCi0qIEZpeCAicGluZyIgcHJvYmxlbSBvbiBJTkMtSVAgYm9hcmQuIFN0cmFuZ2UgcHJvYmxlbToKLSAgU29tZXRpbWVzIHRoZSBzdG9yZSB3b3JkIGluc3RydWN0aW9uIGhhbmdzIHdoaWxlIHdyaXRpbmcgdG8gb25lIG9mCi0gIHRoZSBTd2l0Y2ggcmVnaXN0ZXJzLCBidXQgb25seSBpZiB0aGUgbmV4dCBpbnN0cnVjdGlvbiBpcyAxNi1ieXRlCi0gIGFsaWduZWQuIE1vdmluZyB0aGUgaW5zdHJ1Y3Rpb24gaW50byBhIHNlcGFyYXRlIGZ1bmN0aW9uIHNvbWVob3cKLSAgbWFrZXMgdGhlIHByb2JsZW0gZ28gYXdheS4KLQotKiBQYXRjaCBieSBSaXNoaSBCaGF0dGFjaGFyeWEsIDA4IE1heSAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgVEkgT01BUDU5MTIgT1NLIEJvYXJkCi0KLSogUGF0Y2ggYnkgU2FtIFNvbmcgTWF5LCAwNyBNYXkgMjAwNDoKLSAgRml4IHR5cG8gb2YgVVBNIHRhYmxlIGZvciBybXUgYm9hcmQKLQotKiBQYXRjaCBieSBQYW50ZWxpcyBBbnRvbmlvdSwgMDUgTWF5IDIwMDQ6Ci0gIC0gSW50cmFjb20gYm9hcmQgdXBkYXRlLgotICAtIEFkZCBDb2RlYyBQT1NULgotCi0qIEFkZCBzdXBwb3J0IGZvciB0aGUgc2Vjb25kIEV0aGVybmV0IGludGVyZmFjZSBmb3IgdGhlICdQUENoYW1lbGVvbicKLSAgYm9hcmQuCi0KLSogUGF0Y2ggYnkgRGF2ZSBQZXZlcmxleSwgMzAgQXByIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBPTUFQNzMwIFBlcnNldXMyIERldmVsb3BtZW50IGJvYXJkCi0KLSogUGF0Y2ggYnkgQWxhbiBKLiBMdXNlLCAyOSBBcHIgMjAwNDoKLSAgRml4IGZsYXNoIGNoaXAtc2VsZWN0IChPUjApIG9wdGlvbiByZWdpc3RlciBzZXR0aW5nIG9uIEZBRFMgYm9hcmRzLgotCi0qIFBhdGNoIGJ5IEFsYW4gSi4gTHVzZSwgMjkgQXByIDIwMDQ6Ci0gIFJlcG9ydCBNSUkgbmV0d29yayBzcGVlZCBhbmQgZHVwbGV4IHNldHRpbmcgcHJvcGVybHkgd2hlbgotICBhdXRvLW5lZ290aWF0ZSBpcyBub3QgZW5hYmxlZC4KLQotKiBQYXRjaCBieSBKYXJyZXR0IFJlZGQsIDI5IEFwciAyMDA0OgotICBGaXggaGFuZyBvbiByZXNldCBvbiBPY290ZWEgYm9hcmQgZHVlIHRvIGZsYXNoIGluIHdyb25nIG1vZGUuCi0KLSogUGF0Y2ggYnkgRGF2ZSBQZXZlcmxleSwgMjkgQXByIDIwMDQ6Ci0gIGFkZCBNQUMgYWRkcmVzcyBkZXRlY3Rpb24gdG8gc21jOTExMTEgZHJpdmVyCi0KLSogUGF0Y2ggYnkgRGF2aWQgTfxsbGVyLCAyOCBBcHIgMjAwNDoKLSAgZml4IHR5cG8gaW4gbGliX2FybS9ib2FyZC5jCi0KLSogUGF0Y2ggYnkgVG9sdW5heSBPcmt1biwgMjAgQXByIDIwMDQ6Ci0gIC0gUkVBRE1FIHVwZGF0ZTogYWRkIENPTkZJR19DU0IyNzIgYW5kIGNzYjI3Ml9jb25maWcKLSAgLSBhZGQgZGVzY3JpcHRpb25zIGZvciBzb21lIE1JSS9QSFkgb3B0aW9ucywgQ09ORklHX0kyQ0ZBU1QsIGFuZAotICAgIGkyY2Zhc3QgZW52aXJvbm1lbnQgdmFyaWFibGUKLQotKiBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAxOSBBcHIgMjAwNDoKLSAgLSBSZW5hbWUgRFVFVF9BRFMgdG8gTVBDODg1QURTCi0gIC0gUmVuYW1lIENPTkZJR19EVUVUIHRvIENPTkZJR19NUEM4ODVfRkFNSUxZCi0gIC0gUmVuYW1lIENPTkZJR184NjZfZXRfYWwgdG8gQ09ORklHX01QQzg2Nl9GQU1JTFkKLSAgLSBDbGVhbiB1cCBGQURTIGZhbWlseSBwb3J0IHRvIHVzZSB0aGUgbmV3IGRlZmluZXMKLQotKiBGaXggUENJIHN1cHBvcnQgb24gQ1BDNDUgYm9hcmQKLQotKiBQYXRjaCBieSBTY290dCBNY051dHQsIDI1IEFwciAyMDA0OgotICBBZGQgTmlvcyBHREIvSlRBRyBDb25zb2xlIHN1cHBvcnQ6Ci0gIC0gQWRkIHN0dWJzIHRvIHN1cHBvcnQgZ2RiIHZpYSBKVEFHLgotICAtIEFkZCBzdXBwb3J0IGZvciBjb25zb2xlIG92ZXIgSlRBRy4KLSAgLSBNaW5vciBjbGVhbnVwLgotCi0qIEFkZCBzdXBwb3J0IGZvciBDQVRjZW50ZXIgYm9hcmQgKGJhc2VkIG9uIFBQQ2hhbWVsZW9uIE1FIG1vZHVsZSkKLQotKiBQYXRjaCBieSBLbGF1cyBIZXlkZWNrLCAxMiBNYXkgMjAwNDoKLSAgVXNpbmcgZXh0ZXJuYWwgd2F0Y2hkb2cgZm9yIEtVUDQgYm9hcmRzIGluIG1wYzh4eC9jcHUuYzsKLSAgbG9hZF9zZXJudW1fZXRoYWRkcigpIGZvciBLVVA0IGJvYXJkcyBpbiBsaWJfcHBjL2JvYXJkLmM7Ci0gIHZhcmlvdXMgY2hhbmdlcyB0byBLVVA0IGJvYXJkIHNwZWNpZmljIGZpbGVzCi0KLSogRml4IG1pbm9yIG5ldHdvcmsgcHJvYmxlbSBvbiBNUEM1MjAwOiBuZWVkIHNvbWUgZGVsYXkgYmV0d2VlbgotICByZXNldHRpbmcgdGhlIFBIWSBhbmQgc2VuZGluZyB0aGUgZmlyc3QgcGFja2V0LiBJbXBsZW1lbnRlZCBpbiBhCi0gICJuYXR1cmFsIiB3YXkgYnkgaW52b2tpbmcgdGhlIFBIWSByZXNldCBhbmQgaW5pdGlhbGl6YXRpb24gY29kZQotICBvbmx5IG9uY2UgYWZ0ZXIgcG93ZXIgb24gdnMuIGVhY2ggdGltZSB0aGUgaW50ZXJmYWNlIGlzIGJyb3VnaHQgdXAuCi0KLSogQWRkIHNvbWUgbGltaXRlZCBzdXBwb3J0IGZvciBsb3ctc3BlZWQgZGV2aWNlcyB0byBTTDgxMSBVU0IgY29udHJvbGxlcgotICAoYXQgbGVhc3QgInVzYiByZXNldCIgbm93IHBhc3NlcyBzdWNjZXNzZnVsbHkgYW5kICJ1c2IgaW5mbyIgZGlzcGxheXMKLSAgY29ycmVjdCBpbmZvcm1hdGlvbikKLQotKiBDaGFuZ2UgaW5pdCBzZXF1ZW5jZSBmb3IgbXVsdGlwbGUgbmV0d29yayBpbnRlcmZhY2VzOiBpbml0aWFsaXplCi0gIG9uLWNoaXAgaW50ZXJmYWNlcyBiZWZvcmUgZXh0ZXJuYWwgY2FyZHMuCi0KLSogRml4IG1lbW9yeSBsZWFrIGluIHRoZSBOQU5ELXNwZWNpZmljIEpGRlMyIGNvZGUKLQotKiBGaXggU0w4MTEgVVNCIGNvbnRyb2xsZXIgd2hlbiBhdHRhY2hlZCB0byBhIFVTQiBodWIKLQotKiBGaXggY29uZmlnIG9wdGlvbiBzcGVsbGluZyBpbiBQTTUyMCBjb25maWcgZmlsZQotCi0qIEZpeCBQSFkgZGlzY292ZXJ5IHByb2JsZW0gaW4gY3B1L21wYzh4eC9mZWMuYyAoaW50cm9kdWNlZCBieQotICBwYXRjaGVzIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAzMCBNYXIgMjAwNCkKLQotKiBGaXggbWlub3IgTkFORCBKRkZTMiByZWxhdGVkIGlzc3VlCi0KLSogRml4ZXMgZm9yIFNMODExIFVTQiBjb250cm9sbGVyOgotICAtIGltcGxlbWVudCB3b3JrYXJvdW5kIGZvciBicm9rZW4gbWVtb3J5IHN0aWNrCi0gIC0gaW1wcm92ZSBlcnJvciBoYW5kbGluZwotCi0qIEluY3JlYXNlIHBhY2tldCBzZW5kIHRpbWVvdXQgdG8gMSBtcyBpbiBjcHUvbXBjOHh4L3NjYy5jIHRvIGJldHRlcgotICBjb3BlIHdpdGggY29uZ2VzdGVkIG5ldHdvcmtzLgotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMS4xLjE6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogUGF0Y2ggYnkgVHJhdmlzIFNhd3llciwgMjMgQXByIDIwMDQ6Ci0gIEZpeCBWU0MvQ0lTIDgyMDEgcGh5IGRlc2NyYW1ibGVyIGludGVyb3BlcmFiaWxpdHkgdGltaW5nIGR1ZSB0bwotICBlcnJhdGEgZnJvbSBWaXRlc3NlIFNlbWljb25kdWN0b3IuCi0KLSogUGF0Y2ggYnkgUGhpbGlwcGUgUm9iaW4sIDIyIEFwciAyMDA0OgotICBGaXggZXRoZXJuZXQgY29uZmlndXJhdGlvbiBmb3IgInZlcnNhdGlsZSIgYm9hcmQKLQotKiBQYXRjaCBieSBLc2hpdGlqIEd1cHRhLCAyMSBBcHIgMjAwNDoKLSAgUmVtb3ZlIGJ1c3kgbG9vcCBhbmQgdXNlIE1QVSB0aW1lciBmciB1c2xlZXAoKSBvbiBPTUFQMTUxMC8xNjEwIGJvYXJkcwotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDI0IEZlYiAyMDA0OgotICBGaXggYSBidWcgaW4gQVQ5MVJNOTIwMCBldGhlcm5ldCBkcml2ZXI6Ci0gIFRoZSBNSUkgaW50ZXJmYWNlIGlzIG5vdyBpbml0aWFsaXplZCBiZWZvcmUgYWNjZXNzaW5nIHRoZSBQSFkuCi0KLSogUGF0Y2ggYnkgSm9obiBLZXJsLCAxOSBBcHIgMjAwNDoKLSAgVXNlIFUtYm9vdCdzIG1paXBoeS5oIGZvciBQSFkgcmVnaXN0ZXIgbmFtZXMsIHJhdGhlciB0aGFuCi0gIGludHJvZHVjaW5nIGEgbmV3IGhlYWRlciBmaWxlLgotCi0qIFVwZGF0ZSBwY2lfaWRzLmggZnJvbSBsaW51eC0yLjQuMjYKLQotKiBQYXRjaCBieSBNYXNhbWkgS29taXlhLCAxOSBBcHIgMjAwNDoKLSAgRml4IHByb2JsZW0gY2F1c2UgYnkgVkxBTiBmdW5jdGlvbiBvbiBsaXR0bGUgZW5kaWFuIGFyY2hpdGVjdHVyZQotICB3aXRob3V0IFZMQU4gZW52aXJvbm1lbnQKLQotKiBDbGVhbiB1cCB0aGUgVFFNOHh4X1lZTUh6IGNvbmZpZ3VyYXRpb25zOyBhbGxvdyB0byB1c2UgdGhlIHNhbWUKLSAgYmluYXJ5IGltYWdlIGZvciBhbGwgY2xvY2sgZnJlcXVlbmNpZXMuIEltcGxlbWVudCBydW4tdGltZQotICBvcHRpbWl6YXRpb24gb2YgZmxhc2ggYWNjZXNzIHRpbWluZyBiYXNlZCBvbiB0aGUgYWN0dWFsIGJ1cwotICBmcmVxdWVuY3kuCi0KLSogTW9kaWZ5IEtVUDRYIGJvYXJkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIFNMODExIGRyaXZlciBmb3IgVVNCIG1lbW9yeQotICBzdGlja3MgKGluY2x1ZGluZyBGQVQgLyBWRkFUIGZpbGVzeXN0ZW0gc3VwcG9ydCkKLQotKiBBZGQgU0w4MTEgSG9zdCBDb250cm9sbGVyIEludGVyZmFjZSBkcml2ZXIgZm9yIFVTQgotCi0qIEFkZCBDRkdfSTJDX0VFUFJPTV9BRERSX09WRVJGTE9XIGRlc3JpcHRpb24gdG8gUkVBRE1FCi0KLSogUGF0Y2ggYnkgUGFudGVsaXMgQW50b25pb3UsIDE5IEFwciAyMDA0OgotICBBbGxvdyB0byB1c2Ugc2hlbGwgc3R5bGUgc3ludGF4IChpLiBlLiAke3Zhcn0gKSB3aXRoIHN0YW5kYXJkIHBhcnNlci4KLSAgTWlub3IgcGF0Y2hlcyBmb3IgSW50cmFjb20gYm9hcmRzLgotCi0qIFBhdGNoIGJ5IENocmlzdGlhbiBQZWxsLCAxOSBBcHIgMjAwNDoKLSAgY2xlYW51cCBzdXBwb3J0IGZvciBDRi9JREUgb24gUENNQ0lBIGZvciBQWEEyNVgKLQotKiBUZW1wb3JhcmlseSBkaXNhYmxlZCBKb2huIEtlcmwncyBleHRlbmRlZCBNSUkgY29tbWFuZCBjb2RlIGJlY2F1c2UKLSAgIm1paXZhbHMuaCIgaXMgbWlzc2luZwotCi0qIFBhdGNoZXMgYnkgTWFyayBKb25hcywgMTMgQXByIDIwMDQ6Ci0gIC0gUmVtb3ZlIENTMCBjaGlwIHNlbGVjdCB0aW1pbmcgc2V0dGluZyBmcm9tIGNwdS9tcGM1eHh4L3N0YXJ0LlMKLSAgLSBBZGQgc3luYyBpbnN0cnVjdGlvbnMgdG8gSWNlQ3ViZSBTRFJBTSBpbml0IGNvZGUKLSAgLSBNb3ZlIFNEUkFNIGNoaXAgY29uc3RhbnRzIGludG8gc2VwZXJhdGUgaW5jbHVkZSBmaWxlcwotICAtIFVuaWZ5IEREUiBhbmQgU0RSIGluaXRpYWxpemF0aW9uIGNvZGUKLSAgLSBVbmlmeSBhbGwgSWNlQ3ViZSAoTGl0ZTV4eHgpIHRhcmdldCBuYW1lcwotCi0qIFBhdGNoIGJ5IEpvaG4gS2VybCwgMTYgQXByIDIwMDQ6Ci0gIEVuYWJsZSByYW5nZXMgaW4gbWlpIGNvbW1hbmQsIGUuZy4gbWlpIHJlYWQgMC0xZiAwIG9yCi0gIG1paSByZWFkIDQtNyAxOC0xYS4gIEFsc28gYWRkIG1paSBkdW1wIHN1YmNvbW1hbmQgZm9yCi0gIHByZXR0eS1wcmludGluZyBzdGFuZGFyZCByZWdzIDAtNS4KLQotKiBQYXRjaCBieSAgU3RlcGhlbiBXaWxsaWFtcywgMTYgQXByaWwgMjAwNDoKLSAgZml4IHR5cG8gaW4gSlNFLmg7IHVwZGF0ZSBNQUlOVEFJTkVSUwotCi0qIFBhdGNoIGJ5IE1hdHRoZXcgUy4gTWNDbGludG9jaywgMTQgQXByIDIwMDQ6Ci0gIGZpeCBpbml0ZHJhbSBmdW5jdGlvbiBmb3IgdXR4ODI0NSBib2FyZAotCi0qIFBhdGNoIGJ5IE1hcmt1cyBQaWV0cmVrLCAxNCBBcHIgMjAwNDoKLSAgdXNlIEFUQUdfSU5JVFJEMiBpbnN0ZWFkIG9mIGRlcHJlY2F0ZWQgQVRBR19JTklUUkQgdGFnCi0KLSogUGF0Y2ggYnkgUmVpbmhhcmQgTWV5ZXIsIDE4IEFwciAyMDA0OgotICBwcm92aWRlIHRoZSBJREUgUmVzZXQgRnVuY3Rpb24gZm9yIEVNSyA1MjAwIGJvYXJkcwotCi0qIFBhdGNoIGJ5IE1hc2FtaSBLb21peWEsIDEyIEFwciAyMDA0OgotICBmaXggcGNpX2hvc2Vfd3JpdGVfY29uZmlnX3tieXRlLHdvcmR9X3ZpYV9kd29yZCBwcm9ibGVtcwotCi0qIFBhdGNoIGJ5IFNhbmdtb29uIEtpbSwgMTIgQXByIDIwMDQ6Ci0gIFVwZGF0ZSBtYXggUkFNIHNpemUgZm9yIGRlYnJpcyBib2FyZAotCi0qIFBhdGNoIGJ5IFRyYXZpcyBTYXd5ZXIsIDA4IEFwciAyMDA0OgotICBBZGQgVExCIGVudHJ5IGZvciBzZWNvbmQgRElNTSBzbG90IG9uIG9jb3RlYQotCi0qIFBhdGNoIGJ5IE1hc2FtaSBLb21peWEsIDA4IEFwciAyMDA0OgotICBhZGQgUlRMODE2OSBuZXR3b3JrIGRyaXZlcgotCi0qIFBhdGNoIGJ5IERhbiBNYWxlaywgMDcgQXByIDIwMDQ6Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIFJQQy9TVHggR1AzLCBNb3Rvcm9sYSA4NTYwIGJvYXJkCi0gIC0gVXBkYXRlIDg1eHggVFNFQyBkcml2ZXIgc28gaXQgc2VhcmNoZXMgTUlJIGZvciBmaXJzdCBhdmFpbGFibGUgUEhZCi0gICAgYW5kIHVzZXMgdGhhdCBvbmUuCi0gIC0gQWRkIGZ1bmN0aW9ucyB0byBzdXBwb3J0IGNvbnNvbGUgTUlJIGNvbW1hbmRzLgotCi0qIFBhdGNoIGJ5IFRvbHVuYXkgT3JrdW4sIDA3IEFwciAyMDA0OgotICBNb3ZlIGluaXRpYWxpemF0aW9uIG9mIGJpX2lpY19mYXN0W10KLSAgZnJvbSBib2FyZF9pbml0X2YoKSB0byBib2FyZF9pbml0X3IoKQotCi0qIFBhdGNoIGJ5IFlhc3VzaGkgU2hvamksIDA3IEFwciAyMDA0OgotICBDbGVhbnVwIG1pY3JvYmxhemUgcG9ydAotCi0qIFBhdGNoIGJ5IFNhbmdtb29uIEtpbSwgMDcgQXByIDIwMDQ6Ci0gIEFkZCBhdXRvIFNEUkFNIG1vZHVsZSBkZXRlY3Rpb24gZm9yIERlYnJpcyBib2FyZAotCi0qIFBhdGNoIGJ5IFJ1bmUgVG9yZ2Vyc2VuLCAwNiBBcHIgMjAwNDoKLSAgLSBGaXggc29tZSBQQ0kgcHJvYmxlbXMgb24gdGhlIE1QQzgyNjZBRFMgYm9hcmQKLSAgLSBGaXggdGhlIGxvY2F0aW9uIG9mIHNvbWUgUENJIGVudHJpZXMgaW4gdGhlIGltbWFwIHN0cnVjdHVyZQotCi0qIFBhdGNoIGJ5IFlhc3VzaGkgU2hvamksIDA3IEFwciAyMDA0OgotICAtIGFkZCBzdXBwb3J0IGZvciBtaWNyb2JsYXplIHByb2Nlc3NvcnMKLSAgLSBhZGQgc3VwcG9ydCBmb3IgQXRtYXJrVGVjaG5vICJzdXpha3UiIGJvYXJkCi0KLSogQ29uZmlndXJlIFBQQ2hhbWVsZW9uIGJvYXJkIHRvIHVzZSByZWR1bmRhbmQgZW52aXJvbm1lbnQgaW4gZmxhc2gKLQotKiBDb25maWd1cmUgUFBDaGFtZWxlb24gYm9hcmQgdG8gdXNlIEpGRlMyIE5BTkQgc3VwcG9ydC4KLQotKiBBZGRlZCBzdXBwb3J0IGZvciBKRkZTMiBmaWxlc3lzdGVtIChyZWFkLW9ubHkpIG9uIHRvcCBvZiBOQU5EIGZsYXNoCi0KLSogUGF0Y2ggYnkgUnVuZSBUb3JnZXJzZW4sIDE2IEFwciAyMDA0OgotICBMQkE0OCBmaXhlcwotCi0qIFBhdGNoZXMgYnkgUGFudGVsaXMgQW50b25pb3UsIDE2IEFwciAyMDA0OgotICAtIGFkZCBzdXBwb3J0IGZvciBhIG5ldyB2ZXJzaW9uIG9mIGFuIEludHJhY29tIGJvYXJkIGFuZCBmaXgKLSAgICB2YXJpb3VzIG90aGVyIHRoaW5ncyBvbiBvdGhlcnMuCi0gIC0gYWRkIHZlcmlmeSBzdXBwb3J0IHRvIHRoZSBjcmMzMiBjb21tYW5kIChkZWZpbmUKLSAgICBDT05GSUdfQ1JDMzJfVkVSSUZZIHRvIGVuYWJsZSBpdCkKLSAgLSBmaXggRkVDIGRyaXZlciBmb3IgTVBDOHh4IHN5c3RlbXM6Ci0gICAgMS4gZml4IGNvbXBpbGF0aW9uIHByb2JsZW1zIGZvciBib2FyZHMgdGhhdCB1c2UgZHluYW1pYwotICAgICAgIGFsbG9jYXRpb24gb2YgRFBSQU0KLSAgICAyLiBzaHV0IGRvd24gRkVDIGFmdGVyIG5ldHdvcmsgdHJhbnNmZXJzCi0gIC0gSFVTSCBwYXJzZXIgZml4ZXM6Ci0gICAgMS4gQSBuZXcgdGVzdCBjb21tYW5kIHdhcyBhZGRlZC4gVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmVyc2lvbiBvZgotICAgICAgIHRoZSBvbmUgaW4gdGhlIGJvdXJuZSBzaGVsbC4KLSAgICAyLiBBIG5ldyBleGl0IGNvbW1hbmQgd2FzIGFkZGVkIHdoaWNoIHRlcm1pbmF0ZXMgdGhlIGN1cnJlbnQKLSAgICAgICBleGVjdXRpbmcgc2NyaXB0LgotICAgIDMuIEZpeGVkIGhhbmRpbmcgb2YgJD8gKGV4aXQgY29kZSBvZiBsYXN0IGV4ZWN1dGVkIGNvbW1hbmQpCi0gIC0gRml4IHNvbWUgY29tcGlsZSBwcm9ibGVtczsKLSAgICBhZGQgIm9uY2UiIGZ1bmN0aW9uYWxpdHkgZm9yIHRoZSBuZXRyZXRyeSB2YXJpYWJsZQotCi0qIFBhdGNoIGJ5IEdlb3JnZSBHLiBEYXZpcywgMDIgQXByIDIwMDQ6Ci0gIGFkZCBzdXBwb3J0IGZvciBJbnRlbCBBc3NhYmV0IGJvYXJkCi0KLSogUGF0Y2ggYnkgU3RlcGhlbiBXaWxsaWFtcywgMDEgQXByIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBQaWN0dXJlIEVsZW1lbnRzIEpTRSBib2FyZAotCi0qIFBhdGNoIGJ5IENocmlzdGlhbiBQZWxsLCAwMSBBcHIgMjAwNDoKLSAgQWRkIENvbXBhY3RGbGFzaCBzdXBwb3J0IGZvciBQWEEgc3lzdGVtcy4KLQotKiBQYXRjaGVzIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAzMCBNYXIgMjAwNDoKLSAgLSBhZGQgYXV0by1jb21wbGV0ZSBzdXBwb3J0IHRvIHRoZSBVLUJvb3QgQ0xJCi0gIC0gYWRkIHN1cHBvcnQgZm9yIE5FVFRBIGFuZCBORVRQSE9ORSBib2FyZHM7IGZpeCBORVRWSUEgYm9hcmQKLSAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIEVwc29uIDE1Nnggc2VyaWVzIG9mIGdyYXBoaWNhbCBkaXNwbGF5cwotICAgIChUaGVzZSBkaXNwbGF5cyBhcmUgc2VyaWFsIGFuZCBub3Qgc3VpdGFibGUgZm9yIHVzaW5nIGEgbm9ybWFsCi0gICAgZnJhbWVidWZmZXIgY29uc29sZSBvbiB0aGVtKQotICAtIGFkZCBpbmZyYXN0cnVjdHVyZSBuZWVkZWQgaW4gb3JkZXIgdG8gUE9TVCBhbnkgRFNQcyBpbiBhIGJvYXJkCi0gIC0gaW1wcm92ZSBhbmQgZml4IHZhcmlvdXMgdGhpbmdzIGluIHRoZSBNUEM4eHggRkVDIGRyaXZlcjoKLSAgICAxLiBUaGUgbmV3IDg3eCBhbmQgODh4IHNlcmllcyBvZiBwcm9jZXNzb3JzIGhhdmUgdHdvIEZFQ3MsCi0gICAgICAgYW5kIHRoZSBuZXcgZHJpdmVyIHN1cHBvcnRzIHRoZW0gYm90aC4KLSAgICAyLiBBbm90aGVyIGNoYW5nZSBpbiB0aGUgODd4Lzg4eCBzZXJpZXMgaXMgc3VwcG9ydCBmb3IKLSAgICAgICB0aGUgUk1JSSAoUmVkdWNlZCBNSUkpIGludGVyZmFjZS4gSG93ZXZlciBudW1lcm91cwotICAgICAgIGNoYW5nZXMgYXJlIG5lZWRlZCB0byBtYWtlIGl0IHdvcmsgc2luY2UgdGhlIFBIWXMKLSAgICAgICBhcmUgY29ubmVjdGVkIHRvIHRoZSBzYW1lIGxpbmVzLiBUaGF0IG1lYW5zIHRoYXQKLSAgICAgICB5b3UgaGF2ZSB0byBhZGRyZXNzIHRoZW0gY29ycmVjdGx5IG92ZXIgdGhlIE1JSQotICAgICAgIGludGVyZmFjZS4KLSAgICAzLiBXZSBub3cgY29ycmVjdGx5IG1hdGNoIHRoZSBNSUkvUk1JSSBpbnRlcmZhY2UKLSAgICAgICBjb25maWd1cmF0aW9uIHRvIHdoYXQgdGhlIFBIWSByZXBvcnRzLgotICAtIEZpeCBwcm9ibGVtIHdoZW4gcmVhZGluZ3RoZSBNSUkgc3RhdHVzIHJlZ2lzdGVyLiBEdWUgdG8gdGhlCi0gICAgaW50ZXJuYWwgZGVzaWduIG9mIG1hbnkgUEhZcyB5b3UgaGF2ZSB0byByZWFkIHRoZSByZWdpc3RlcgotICAgIHR3aWNlLiBUaGUgcHJvYmxlbSBpcyBtb3JlIGFwcGFyZW50IGluIDEwTWJpdCBtb2RlLgotICAtIGFkZCBuZXcgbW9kZSAiLmpmZnMycyIgZm9yIHJlYWRpbmcgZnJvbSBhIE5BTkQgZGV2aWNlOiBpdCBqdXN0Ci0gICAgc2tpcHMgb3ZlciBiYWQgYmxvY2tzLgotICAtIGFkZCBuZXR3b3JraW5nIHN1cHBvcnQgZm9yIFZMQU5zICg4MDIuMXEpLCBhbmQgQ0RQIChDaXNjbwotICAgIERpc2NvdmVyeSBQcm90b2NvbCkKLSAgLSBzb21lIG1pbm9yIHBhdGNoZXMgLyBjbGVhbnVwCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMjggTWFyIDIwMDQ6Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIE1QQzgyNzIgZmFtaWx5IGluY2x1ZGluZyBNUEM4MjQ3LzgyNDgvODI3MS84MjcyCi0gIC0gQWRkIHN1cHBvcnQgZm9yIE1QQzgyNzJBRFMgZXZhbHVhdGlvbiBib2FyZCAoYW5vdGhlciBmbGF2b3VyIG9mIE1QQzgyNjBBRFMpCi0gIC0gQ2hhbmdlIGNvbmZpZ3VyYXRpb24gbWV0aG9kIGZvciBNUEM4MjYwQURTIGZhbWlseQotCi0qIGFkZCBzdGFydHVwIGNvZGUgdG8gY2xlYXIgdGhlIEJTUyBvZiBzdGFuZGFsb25lIGFwcGxpY2F0aW9ucwotCi0qIEZpeCBpZiAvIGVsaWYgaGFuZGxpbmcgYnVnIGluIEhVU0ggc2hlbGwKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDEuMS4wOgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIFBhdGNoIGJ5IE1hcmsgSm9uYXM6IFJlbW92ZSBjb25maWcudG1wIGZpbGVzIG9ubHkgd2hlbgotICB1bmNvbmZpZ3VyaW5nIHRoZSBib2FyZAotCi0qIEFkYXB0IFJNVSBib2FyZCBmb3IgYmlnZ2VyIGZsYXNoIG1lbW9yeQotCi0qIFBhdGNoIGJ5IEtsYXVzIEhleWRlY2ssIDEzIE1hciAyMDAzOgotICBBZGQgc3VwcG9ydCBmb3IgS1VQNFggQm9hcmQKLQotKiBQYXRjaCBieSBQYXZlbCBCYXJ0dXNlaywgMjEgTWFyIDIwMDQKLSAgQWRkIFJlaXNlcmZzIHN1cHBvcnQKLQotKiBQYXRjaCBieSBIaW5rbyBLb2NldmFyLCAyMCBNYXIgMjAwNAotICAtIEFkZCBhdXRvLXJlbGVhc2UgZm9yIFNNU0MgTEFOOTFjMTExIGRyaXZlcgotICAtIEFkZCBzYXZlL3Jlc3RvcmUgb2YgUFRSIGFuZCBQTlIgcmVncyBhcyBzdWdnZXN0ZWQgaW4gZGF0YXNoZWV0Ci0KLSogUGF0Y2ggYnkgU3RlcGhlbiBXaWxsaWFtcywgMTkgTWFyY2ggMjAwNAotICBJbmNyZWFzZSBzcGVlZCBvZiBzZWN0b3IgcmVhZHMgZnJvbSBTeXN0ZW1BQ0UsCi0gIHNob3J0ZW4gcG9sbCB0aW1lb3V0IGFuZCByZW1vdmUgYSB1c2VsZXNzIHJlc2V0Ci0KLSogUGF0Y2ggYnkgVG9sdW5heSBPcmt1biwgMTkgTWFyIDIwMDQ6Ci0gIE1ha2UgR2lnRSBQSFkgMTAwME1icHMgU3BlZWQvRHVwbGV4IGRldGVjdGlvbiBjb25kaXRpb25hbAotICAoQ09ORklHX1BIWV9HSUdFKQotCi0qIFBhdGNoIGJ5IEJyYWQgS2VtcCwgMTggTWFyIDIwMDQ6Ci0gIHByZXZlbnQgbWFjaGluZSBjaGVja3MgZHVyaW5nIGEgUENJIHNjYW4KLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAxOCBNYXIgMjAwNDoKLSAgRml4IHN0cmluZyBjbGVhbmluZyBpbiBJREUgaWRlbnRpZmljYXRpb24KLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAxOCBNYXIgMjAwNDoKLSAgLSBVbmlmeSB2aWRlbyBtb2RlIGhhbmRsaW5nIGZvciBDaGlwcyAmIFRlY2hub2xvZ2llcyA2OTAwMCBWaWRlbwotICAgIGNoaXAgYW5kIFNpbGljb24gTW90aW9uIFNNSSA3MTIvNzEwLzgxMCBWaWRlbyBjaGlwCi0gIC0gQWRkIHNlbGVjdGlvbiBvZiB0aGUgdmlkZW8gb3V0cHV0IChDUlQgb3IgTENEKSB2aWEgJ3ZpZGVvb3V0JwotICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGZvciB0aGUgU2lsaWNvbiBNb3Rpb24KLSAgLSBSRUFETUUgdXBkYXRlCi0KLSogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMTggTWFyIDIwMDQ6Ci0gIGluY2x1ZGUvY29tbW9uLmggdHlwbyBmaXgKLQotKiBQYXRjaGVzIGJ5IFRvbHVuYXkgT3JrdW4sIDE3IE1hciAyMDA0OgotICAtIEFkZCBzdXBwb3J0IGZvciBiZC0+YmlfaWljX2Zhc3RbXSBpbml0aWFsaXphdGlvbiB2aWEgZW52aXJvbm1lbnQKLSAgICB2YXJpYWJsZSAiaTJjZmFzdCIgKENPTkZJR19JMkNGQVNUKQotICAtIEFkZCAiaTJjZmFzdCIgdS1ib290IGVudmlyb25tZW50IHZhcmlhYmxlIHN1cHBvcnQgZm9yIGNzYjI3MgotCi0qIFBhdGNoIGJ5IENhcmwgUmllY2hlcnMsIDE3IE1hciAyMDA0OgotICBJZ25vcmUgJ1wwJyBjaGFyYWN0ZXJzIGluIGNvbnNvbGUgaW5wdXQgZm9yIHVzZSB3aXRoIHRlbG5ldCBhbmQKLSAgdGVsY28gcGFkcy4KLQotKiBQYXRjaCBieSBMZW9uIEt1a292ZWMsIDE3IE1hciAyMDA0OgotICB0eXBvIGZpeCBmb3Igc3Ryc3dhYiBwcm90b3R5cGUgI2lmZGVmCi0KLSogUGF0Y2hlcyBieSBUaG9tYXMgVmllaHdlZ2VyLCAxNiBNYXIgMjAwNDoKLSAgLSBzaG93IFBDSSBjbG9jayBmcmVxdWVuY3kgb24gTVBDODI2MCBzeXN0ZW1zCi0gIC0gYWRkIEZDQ19QU01SX1JNSUkgZmxhZyBmb3IgSGlQNyBwcm9jZXNzb3JzCi0gIC0gaW4gZG9famZmczJfZnNsb2FkKCksIHRha2UgbG9hZCBhZGRyZXNzIGZyb20gbG9hZF9hZGRyIGlmIG5vdCBzZXQKLSAgICBleHBsaWNpdCwgdXBkYXRlIGxvYWRfYWRkciBvdGhlcndpc2UKLSAgLSByZXBsYWNlZCBwcmludGYgYnkgcHV0Yy9wdXRzIHdoZW4gbm8gZm9ybWF0dGluZyBpcyBuZWVkZWQKLSAgICAoc21hbGxlciBjb2RlIHNpemUsIGZhc3RlciBleGVjdXRpb24pCi0KLSogUGF0Y2ggYnkgUGhpbGxpcHBlIFJvYmluLCAxNiBNYXIgMjAwNDoKLSAgYXZvaWQgZGVyZWZlcmVuY2luZyBOVUxMIHBvaW50ZXIgaW4gbGliX2FybS9hcm1saW51eC5jCi0KLSogUGF0Y2ggYnkgU3RlcGhlbiBXaWxsaWFtcywgMTUgTWFyIDIwMDQ6Ci0gIEZpeCBDT05GSUdfU0VSSUFMX1NPRlRXQVJFX0ZJRk8gZG9jdW1lbnRhdGlvbgotCi0qIFBhdGNoIGJ5IFRvbHVuYXkgT3JrdW4sIDE1IE1hciAyMDA0OgotICBJbml0aWFsaXplIGJpX29wYmZyZXEgdG8gcmVhbCBPUEIgZnJlcXVlbmN5IHZpYSBnZXRfT1BCX2ZyZXEoKQotCi0qIFBhdGNoIGJ5IFRyYXZpcyBTYXd5ZXIsIDE1IE1hciAyMDA0OgotICBVcGRhdGUgQ1JFRElUUyAmIE1BSU5UQUlORVJTIGZpbGVzIGZvciBQUEM0NDBHWCAmIE9jb3RlYSBwb3J0Ci0KLSogQWRkIHN0YXJ0LXVwIGRlbGF5IHRvIG1ha2Ugc3VyZSBwb3dlciBoYXMgc3RhYmlsaXplZCBiZWZvcmUKLSAgYXR0ZW1wdGluZyB0byBzd2l0Y2ggb24gVVNCIG9uIFNYMSBib2FyZC4KLQotKiBQYXRjaCBieSBKb3NlZiBXYWduZXIsIDE4IE1hciAyMDA0OgotICAtIEFkZCBzdXBwb3J0IGZvciBNaWNyb1N5cyBYTTI1MCBib2FyZCAoUFhBMjU1KQotICAtIEFkZCBzdXBwb3J0IGZvciBNaWNyb1N5cyBQTTgyOCBib2FyZCAoTVBDODI4MCkKLSAgLSBBZGQgc3VwcG9ydCBmb3IgMzIgTUIgRmxhc2ggb24gUE04MjUvODI2Ci0gIC0gbmV3IFNEUkFNIHJlZnJlc2ggcmF0ZSBmb3IgUE04MjUvUE04MjYKLSAgLSBhZGRlZCBzdXBwb3J0IGZvciBNaWNyb1N5cyBQTTUyMCAoTVBDNTIwMCkKLSAgLSByZXBsYWNlZCBRdWVyeSBieSBJZGVudGlmeSBjb21tYW5kIGluIENQVTg2L2ZsYXNoLmMKLSAgICB0byBzdXBwb3J0IDI4RjE2MEYzQgotCi0qIEZpeCB3cmFwIGFyb3VuZCBwcm9ibGVtIHdpdGggdWRlbGF5KCkgb24gQVJNOTIwVAotCi0qIEFkZCBzdXBwb3J0IGZvciBNYWNyb25peCBmbGFzaCBvbiBUUkFCIGJvYXJkCi0KLSogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMTUgTWFyIDIwMDQ6Ci0gIEZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gSURFIGlkZW50aWZpY2F0aW9uCi0KLSogRml4IHBvd2VyLW9mZiBvZiBMQ0QgZm9yIG91dC1vZi1iYW5kIHRlbXBlcmF0dXJlcyBvbiBMV01PTiBib2FyZAotCi0qIFJlbW92ZSByZWR1bmRhbmQgI2RlZmluZSBpbiBJY2VDdWJlLmgKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAyNyBGZWIgMjAwNDoKLSAgLSBBZGRpbmcgZ2V0X3RpY2tzKCkgYW5kIGdldF90YmNsaygpIGZvciBBVDkxUk05MjAwCi0gIC0gTWFueSB3aGl0ZSBzcGFjZSBmaXhlcyBpbiBjcHUvYXQ5MXJtOTIwMC9pbnRlcnJ1cHRzLmMKLQotKiBQYXRjaGVzIGJ5IFN0ZXZlbiBTY2hvbHosIDIwIEZlYiAyMDA0OgotICBzb21lIGNsZWFudXAgaW4gQVQ5MVJNOTIwMCByZWxhdGVkIGNvZGUKLQotKiBQYXRjaGVzIGJ5IFRyYXZpcyBTYXd5ZXIsIDEyIE1hciAyMDA0OgotICAtIEZpeCBHaWdhYml0IEV0aGVybmV0IHN1cHBvcnQgZm9yIDQ0MEdYCi0gIC0gQWRkIEdpZ2FiaXQgRXRoZXJuZXQgU3VwcG9ydCB0byBNSUkgUEhZIHV0aWxpdGllcwotCi0qIFBhdGNoIGJ5IEJyYWQgS2VtcCwgMTIgTWFyIDIwMDQ6Ci0gIEZpeGVzIGZvciBkcml2ZXJzL2NmaV9mbGFzaC5jOgotICAtIEJldHRlciBzdXBwb3J0IGZvciB4OC94MTYgaW1wbGVtZW50YXRpb25zCi0gIC0gQWRkZWQgZmFpbHVyZSBmb3IgQU1EIGNoaXBzIGF0dGVtcHRpbmcgdG8gdXNlIENGR19GTEFTSF9VU0VfQlVGRkVSX1dSSVRFCi0gIC0gQWRkZWQgZGVmaW5lcyBmb3IgQU1EIGNvbW1hbmQgYW5kIGFkZHJlc3MgY29uc3RhbnRzCi0KLSogUGF0Y2ggYnkgTGVvbiBLdWtvdmVjLCAxMiBNYXIgMjAwNDoKLSAgRml4IGdldF9kZW50ZnJvbWRpcigpIHRvIGNvcnJlY3RseSBoYW5kbGUgZGVsZXRlZCBkZW50cmllcwotCi0qIFBhdGNoIGJ5IEdlb3JnZSBHLiBEYXZpcywgMTEgTWFyIDIwMDQ6Ci0gIFJlbW92ZSBoYXJkIGNvZGVkIG5ldHdvcmsgc2V0dGluZ3MgaW4gVEkgT01BUDE2MTAgSDIKLSAgZGVmYXVsdCBib2FyZCBjb25maWcKLQotKiBQYXRjaCBieSBHZW9yZ2UgRy4gRGF2aXMsIDExIE1hciAyMDA0OgotICBhZGQgc3VwcG9ydCBmb3IgQURTIEdyYXBoaWNzQ2xpZW50KyBib2FyZC4KLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAxMSBNYXIgMjAwNDoKLSAgLSBhZGQgYml0bWFwIGNvbW1hbmQgYW5kIHNwbGFzaCBzY3JlZW4gc3VwcG9ydCBpbiBjZmIgY29uc29sZQotICAtIGFkZCBbb3B0aW9uYWxdIG9yaWdpbiBpbiB0aGUgYml0bWFwIGRpc3BsYXkgY29tbWFuZAotCi0qIFBhdGNoIGJ5IFRyYXZpcyBTYXd5ZXIsIDExIE1hciAyMDA0OgotICBGaXggb2NvdGVhIGJvYXJkIGVhcmx5IGluaXQgaW50ZXJydXB0IHNldHVwLgotCi0qIFBhdGNoIGJ5IFRob21hcyBWaWVod2VnZXIsIDExIE1hciAyMDA0OgotICBSZW1vdmUgcmVkdW5kYW5kIGNvZGU7IGFkZCAgUENJLXNwZWNpZmljIGJpdHMgdG8gaW5jbHVkZS9tcGM4MjYwLmgKLQotKiBQYXRjaCBieSBTdGVwaGFuIExpbnosIDA5IE1hciAyMDA0Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIHRoZSBTU1YgQUROUC9FU0MxIChOaW9zIFNvZnRjb3JlKQotCi0qIFBhdGNoIGJ5IEdlb3JnZSBHLiBEYXZpcywgOSBNYXIgMjAwNDoKLSAgZml4IHJlY2VudCBidWlsZCBmYWlsdXJlIGZvciBTQTExMDAgdGFyZ2V0Ci0KLSogUGF0Y2ggYnkgVHJhdmlzIFNhd3llciwgMDkgTWFyIDIwMDQ6Ci0gIFN1cHBvcnQgbmF0aXZlIGludGVycnVwdCBtb2RlIGZvciB0aGUgSUJNNDQwR1guCi0gIFByZXZpb3VzbHkgaXQgd2FzIHJ1bm5pbmcgaW4gNDQwR1AgY29tcGF0aWJpbGl0eSBtb2RlLgotCi0qIFBhdGNoIGJ5IFBoaWxpcHBlIFJvYmluLCAwOSBNYXIgMjAwNDoKLSAgQWRkZWQgQVJNIEludGVncmF0b3IgQVAsIENQIGFuZCBWZXJzYXRpbGUgUEI5MjZFSi1TIFJlZmVyZW5jZQotICBQbGF0Zm9ybSBzdXBwb3J0LgotCi0qIFBhdGNoIGJ5IE1hc2FtaSBLb21peWEsIDA4IE1hciAyMDA0OgotICBEb24ndCBvdmVyd3JpdGUgc2VydmVyIElQIGFkZHJlc3Mgb3IgYm9vdCBmaWxlIG5hbWUKLSAgd2hlbiB0aGUgYm9vdCBzZXJ2ZXIgZG9lcyBub3QgcmV0dXJuIHZhbHVlcwotCi0qIFBhdGNoIGJ5IFRvbHVuYXkgT3JrdW4sIDUgTWFyIDIwMDQ6Ci0gIFJlbW92ZWQgY29tcGlsZSB0aW1lIHJlc3RyaWN0aW9uIG9uIENGR19JMkNfU1BFRUQgZm9yIERTMTMzOCBSVEMKLQotKiBQYXRjaCBieSBUb2x1bmF5IE9ya3VuLCA1IE1hciAyMDA0OgotICBGaXggZWFybHkgYm9hcmQgaW5pdGlhbGl6YXRpb24gZm9yIENvZ2VudCBDU0IyNzIgYm9hcmQKLQotKiBQYXRjaCBieSBFZCBPa2Vyc29uLCAzIE1hciAyMDA0OgotICBmaXggQ0ZJIGZsYXNoIHdyaXRlcyBmb3IgbGl0dGxlIGVuZGlhbiBzeXN0ZW1zCi0KLSogUGF0Y2ggYnkgUmVpbmhhcmQgTWV5ZXIsIDAxIE1hciAyMDA0OgotICBnZW5lcmFsaXplIFVTQiBhbmQgSURFIHN1cHBvcnQgZm9yIE1QQzUyMDAgd2l0aCBhY2NvcmRpbmcKLSAgY2hhbmdlcyB0byBJY2VDdWJlLmggYW5kIFRPUDUyMDAuaAotICBhZGQgQW0yOUxWMjU2IDI1NiBNQml0IEZMQVNIIHN1cHBvcnQgZm9yIFRPUDUyMDAgYm9hcmRzCi0gIGFkZCBpbmZvIGFib3V0IFVTQiBhbmQgSURFIHRvIFJFQURNRQotCi0qIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDQgTWFyIDIwMDQ6Ci0gIEZpeCBwcm9ibGVtcyB3aXRoIEdDQyAzLjMueCB3aGljaCBjaGFuZ2VkIGhhbmRsaW5nIG9mIGdsb2JhbAotICB2YXJpYWJsZXMgZXhwbGljaXRseSBpbml0aWFsaXplZCB0byB6ZXJvIChub3cgaW4gLmJzcyBpbnN0ZWFkIG9mCi0gIC5kYXRhIGFzIGJlZm9yZSkuCi0KLSogUGF0Y2ggYnkgTGVvbiBLdWtvdmVjLCAwMiBNYXIgMjAwNDoKLSAgYWRkIHN0cnN3YWIoKSB0byBmaXggSURFIExCQSBjYXBhY2l0eSwgZmlybXdhcmUgYW5kIG1vZGVsIG51bWJlcnMKLSAgb24gbGl0dGxlIGVuZGlhbiBtYWNoaW5lcwotCi0qIFBhdGNoIGJ5IE1hc2FtaSBLb21peWEsIDAyIE1hciAyMDA0OgotICAtIFJlbW92ZSBnZXRfdGlja3MoKSBmcm9tIE5GUyBjb2RlCi0gIC0gQWRkIHZlcmlmaWNhdGlvbiBvZiBSUEMgdHJhbnNhY3Rpb24gSUQKLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAwMiBNYXIgMjAwNDoKLSAgY2xlYW51cCBmb3IgSURFIGFuZCBVU0IgZHJpdmVycyBmb3IgTVBDNTIwMAotCi0qIFBhdGNoIGJ5IFRyYXZpcyBTYXd5ZXIsIDAxIE1hciAyMDA0OgotICBPY290ZWE6Ci0gIC0gQWRkIElCTSBQUEM0NDBHWCBSZWYgUGxhdGZvcm0gc3VwcG9ydCAoT2NvdGVhKQotICAgIE9yaWdpbmFsIGNvZGUgYnkgUGF1bCBSZXlub2xkcyA8UGF1bFJleW5vbGRzQGxoc29sdXRpb25zLmNvbT4KLSAgICBBZGFwdGVkIHRvIFUtQm9vdCBhbmQgNDQwR1ggcG9ydAotICA0NDBneF9lbmV0LmM6Ci0gIC0gQWRkIGdyYWNpb3VzIGhhbmRsaW5nIG9mIGFsbCBFdGhlcm5ldCBQaW4gU2VsZWN0aW9ucyBmb3IgNDQwR1gKLSAgLSBBZGQgUkdNSUkgc2VsZWN0aW9uIGZvciBDaWNhZGEgQ0lTODIwMSBHaWdhYml0IFBIWQotICBwcGM0NDAuaDoKLSAgLSBBZGQgbmVlZGVkIGJpdCBkZWZpbml0aW9ucwotICAtIEZpeCBmb3JtYXR0aW5nCi0KLSogUGF0Y2ggYnkgQ2FybCBSaWVjaGVycywgMSBNYXIgMjAwNDoKLSAgQWRkIFBQQzQ0MEdYIHByYmR2MCBkaXZpZGVyIHRvIGZpeCBtZW1vcnkgY2xvY2sgY2FsY3VsYXRpb24uCi0KLSogUGF0Y2ggYnkgU3RlcGhhbiBMaW56LCAyNyBGZWIgMjAwNAotICAtIGF2b2lkIHByb2JsZW1zIGZvciB0YXJnZXRzIHdpdGhvdXQgTkZTIGRvd25sb2FkIHN1cHBvcnQKLQotKiBQYXRjaCBieSBSdW5lIFRvcmdlcnNlbiwgMjcgRmViIDIwMDQ6Ci0gIC0gQWRkZWQgTEJBNDggc3VwcG9ydCAoQ09ORklHX0xCQTQ4ICYgQ0ZHXzY0QklUX0xCQSkKLSAgLSBBZGRlZCBzdXBwb3J0IGZvciA2NGJpdCBwcmludGluZyBpbiB2c3ByaW50ZiAoQ0ZHXzY0QklUX1ZTUFJJTlRGKQotICAtIEFkZGVkIHN1cHBvcnQgZm9yIDY0Yml0IHN0cnRvdWwgKENGR182NEJJVF9TVFJUT1VMKQotCi0qIFBhdGNoIGJ5IE1hc2FtaSBLb21peWEsIDI3IEZlYiAyMDA0OgotICBGaXggcmFycGJvb3Q6IGFkZCBhdXRvbG9hZCBieSBORlMKLQotKiBQYXRjaCBieSBEYW4gRWlzZW5odXQsIDI2IEZlYiAyMDA0OgotICBmaXggZmxhc2hfd3JpdGUgcmV0dXJuIHZhbHVlIGluIHNhdmVlbnYKLQotKiBQYXRjaCBieSBTdGVwaGFuIExpbnosIDExIERlYyAyMDAzCi0gIGV4cGFuZCBjb25maWcubWsgdG8gYXZvaWQgdHJpZ3JhcGggd2FybmluZ3Mgb24gTklPUwotCi0qIFJlbmFtZSAiQk1TMjAwMyIgYm9hcmQgaW50byAiSE1JMTAiCi0KLSogU1gxIHBhdGNoZXM6IHVzZSAic2VyaWFsIyIgZm9yIFVTQiBzZXJpYWwgIzsgdXNlIHJlZHVuZGFuZCBlbnZpcm9ubWVudAotICBzdG9yYWdlOyBhdXRvLXNldCBjb25zb2xlIG9uIFVTQiBwb3J0ICh1c2luZyBwcmVib290IGNvbW1hbmQpCi0KLSogQWRkIHN1cHBvcnQgZm9yIFNYMSBtb2JpbGUgcGhvbmU7IGFkZCBzdXBwb3J0IGZvciBVU0ItYmFzZWQgY29uc29sZQotICAoZW5hYmxlIHdpdGggInNldGVudiBzdGRvdXQgdXNidHR5OyBzZXRlbnYgc3RkaW4gdXNidHR5IikKLQotKiBGaXggTE9XQk9PVCBjb25maWd1cmF0aW9uIGZvciBNUEM1MjAwIHdpdGggRERSIG1lbW9yeQotCi0qIEZpeCBTRFJBTSB0aW1pbmdzIGZvciBMSVRFNTIwMCAvIEljZUN1YmUgYm9hcmQKLQotKiBIYW5kbGUgQXV0aS1NRElYIC8gY29ubmVjdGlvbiBzdGF0dXMgZm9yIElOQ0EtSVAKLQotKiBGaXggVVNCIHByb2JsZW1zIHdoZW4gYXR0ZW1wdGluZyB0byByZWFkIDAgYnl0ZXMKLQotKiBQYXRjaCBieSBUcmF2aXMgU2F3eWVyLCAyNiBGZWIgMjAwNDoKLSAgRml4IGJyb2tlbiBjb21waWxlIGZvciBYUEVESVRFMUsgdGFyZ2V0LgotCi0qIFBhdGNoIGJ5IFN0ZXBoYW4gTGlueiwgMjYgRmViIDIwMDQ6Ci0gIEJ1ZyBmaXggZm9yIE5GUyBjb2RlIG9uIE5JT1MgdGFyZ2V0cwotCi0qIFBhdGNoIGJ5IFN0ZXBoZW4gV2lsbGlhbXMsIDI2IEZlYiAyMDA0OgotICBCcmVhayB1cCBTeXN0ZW1BQ0UgcmVhZHMgb2YgbGFyZ2UgYmxvY2sgY291bnRzCi0KLSogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMjYgRmViIDIwMDQKLSAgYWRkIElERSBzdXBwb3J0IGZvciBNUEM1MjAwCi0KLSogUGF0Y2ggYnkgTWFzYW1pIEtvbWl5YSwgMjYgRmViIDIwMDQ6Ci0gIGFkZCBhdXRvbG9hZCB2aWEgTkZTCi0KLSogUGF0Y2ggYnkgU3RlcGhlbiBXaWxsaWFtcwotICBVc2Ugb2YgQ09ORklHX1NFUklBTF9TT0ZUV0FSRV9GSUZPIGluIGJvYXJkLmMgY29uc2lzdGVudCB3aXRoIHVzZXMKLSAgZWxzZXdoZXJlIGluIHRoZSBzb3VyY2UuCi0KLSogUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMjUgRmViIDIwMDQ6Ci0gIC0gVGltZW91dHMgaW4gRlBHQSBjb2RlIHNob3VsZCBiZSBiYXNlZCBvbiBDRkdfSFoKLSAgLSBNaW5vciBjbGVhbnVwIGluIGNvZGUgZm9yIEFsdGVyYSBGUEdBIEFDRVgxSwotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDI1IEZlYiAyMDA0OgotICBDaGFuZ2VkICJEaXJlY3RvcnkgSGllcmFyY2h5IiBzZWN0aW9uIGluIFJFQURNRQotCi0qIFBhdGNoIGJ5IE1hc2FtaSBLb21peWEsIDI1IEZlYiAyMDA0OgotICBSZWR1Y2UgY29weSBjb3VudCBpbiBuZnNfcmVhZF9yZXBseSgpIG9mIE5GUyBjb2RlCi0KLSogUGF0Y2ggYnkgTWFya3VzIFBpZXRyZWssIDI0IEZlYiAyMDA0OgotICBOUzk3NTAgRGV2Qm9hcmQgYWRkZWQKLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAyNCBGZWIgMjAwNAotICBhZGQgVVNCIHN1cHBvcnQgZm9yIE1QQzUyMDAKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAyNCBGZWIgMjAwNDoKLSAgLSBmaXggTUlJIGNvbW1hbmRzIHRvIHVzZSB2YWx1ZXMgZnJvbSBsYXN0IGNvbW1hbmQKLQotKiBQYXRjaCBieSBUb3JzdGVuIERlbWtlLCAyNCBGZWIgMjAwNDoKLSAgQWRkIHN1cHBvcnQgZm9yIHRoZSBlWGFsaW9uIHBsYXRmb3JtIChTUFNXLTgyNDAsIEYtMzAsIEYtMzAwKQotCi0qIFBhdGNoIGJ5IFJhaHVsIFNoYW5iaGFnLCAxOSBGZWIgMjAwNDoKLSAgRml4ZXMgZm9yIGZvciBPTUFQMTYxMCBib2FyZDoKLSAgLSBzaGlmdCBzb21lIElSUSBzcGVjaWZpYyBjb2RlIHRvIHBsYXRmb3JtLlMgZmlsZQotICAtIHJlbW92ZSBkdXBsaWNhdGV3YXRjaGRvZyByZXNldCBjb2RlIGZyb20gc3RhcnQuUwotCi0qIE1ha2UgQXV0by1NRElYIFN1cHBvcnQgY29uZmlndXJhYmxlIG9uIElOQ0EtSVAgYm9hcmQKLQotKiBGaXggbGljZW5zZSBmb3IgbWtpbWFnZSB0b29sCi0KLSogUGF0Y2ggYnkgTWFzYW1pIEtvbWl5YSwgMjQgRmViIDIwMDQ6Ci0gIFVwZGF0ZSBOZXRCb290RmlsZVhmZXJTaXplIGluIE5GUyBjb2RlCi0KLSogUGF0Y2ggYnkgU2NvdHQgTWNOdXR0LCAyNCBGZWIgMjAwNDoKLSAgZml4IHBhY2tldCBsZW5ndGggaW4gTkZTIGNvZGUKLQotKiBQYXRjaCBieSBNYXNhbWkgS29taXksIDIyIEZlYiAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgTkZTIGZvciBmaWxlIGRvd25sb2FkCi0KLSogUGF0Y2ggYnkgQW5kcmVhIFNjaWFuLCAxNyBGZWIgMjAwNDoKLSAgQWRkIHN1cHBvcnQgZm9yIFMzQzQ0QjAgcHJvY2Vzc29yIGFuZCBEQVZFIEIyIGJvYXJkCi0KLSogUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMjAgRmViIDIwMDQ6Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIE1JSSBjb21tYW5kcyBvbiBBVDkxUk05MjAwIGJvYXJkcwotICAtIHNvbWUgY2xlYW51cCBpbiBBVDkxUk05MjAwIGV0aGVybmV0IGNvZGUKLQotKiBQYXRjaCBieSBQZXRlciBSeXNlciwgMjAgRmViIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciB0aGUgWGlsaW54IE1MMzAwIHBsYXRmb3JtCi0KLSogUGF0Y2ggYnkgU3RlcGhhbiBMaW56LCAxNyBGZWIgMjAwNDoKLSAgRml4IHdhdGNoZG9nIHN1cHBvcnQgZm9yIE5JT1MKLQotKiBQYXRjaCBieSBKb3NoIEZyeW1hbiwgMTYgRmViIDIwMDQ6Ci0gIEZpeCBieXRlLXN3YXBwaW5nIGZvciBjZmlfZmxhc2guYyBmb3IgZGlmZmVyZW50IGJ1cyB3aWR0aHMKLQotKiBQYXRjaCBieSBKb24gRGlla2VtYSwgMTQgSmViIDIwMDQ6Ci0gIFJlbW92ZSBkdXBsaWNhdGUgIkZQR0EgU3VwcG9ydCIgbm90ZXMgZnJvbSB0aGUgUkVBRE1FIGZpbGUKLQotKiBQYXRjaGVzIGJ5IFJlaW5oYXJkIE1leWVyLCAxNCBGZWIgMjAwNDoKLSAgLSB1cGRhdGUgYm9hcmQvZW1rIHRyZWU7IHVzZSBjb21tb24gZmxhc2ggZHJpdmVyCi0gIC0gQ29ycmVjdGVkIHRlc3RlZCBiaXRzIGluIG1hY2hpbmUgY2hlY2sgZXhjZXB0aW9uIGluIGNwdS9tcGM1eHh4L3RyYXBzLmMKLSAgICBbYWRhcHRlZCBmb3Igb3RoZXIgUFBDIENQVXMgLS0gd2RdCi0gIC0gQWRkZWQgc3VwcG9ydCBmb3IgdGhlIE00OFQwOCBvbiB0aGUgRVZBTDUyMDAgYm9hcmQgaW4gcnRjL21rNDh0NTkuYwotCi0qIFBhdGNoIGJ5IEpvbiBEaWVrZW1hLCAxMyBGZWIgMjAwNDoKLSAgQ2FsbCBzaG93X2Jvb3RfcHJvZ3Jlc3MoKSB3aGVuZXZlciBQT1NUICJGQUlMRUQiIGlzIHByaW50ZWQuCi0KLSogUGF0Y2ggYnkgTmlzaGFudCBLYW1hdCwgMTMgRmViIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBUSSBPTUFQMTYxMCBIMiBCb2FyZAotICBGaXhlcyBmb3IgY3B1L2FybTkyNmVqcy9pbnRlcnJ1cHQuYwotCShiYXNlZCBvbiBSaWNoYXJkIFdvb2RydWZmJ3MgcGF0Y2ggZm9yIGFybTkyNSwgMTYgT2N0IDAzKQotICBGaXggZm9yIGEgdGltZXIgYnVnIGluIE9NQVAxNjEwIElubm92YXRvcgotICBBZGQgc3VwcG9ydCBmb3IgQ1MwIChST00pL0NTMyAoRmxhc2gpIGJvb3QgaW4gT01BUDE2MTAgSW5ub3ZhdG9yIGFuZCBIMgotCi0qIFBhdGNoZXMgYnkgU3RlcGhhbiBMaW56LCAxMiBGZWIgMjAwNDoKLSAgLSBhZGQgc3VwcG9ydCBmb3IgTklPUyB0aW1lciB3aXRoIHZhcmlhYmxlIHBlcmlvZCBwcmVsb2FkIGNvdW50ZXIgdmFsdWUKLSAgLSBwcmVwYXJlIFBPU1QgZnJhbWV3b3JrIHN1cHBvcnQgZm9yIE5JT1MgdGFyZ2V0cwotCi0qIFBhdGNoIGJ5IERlbmlzIFBldGVyLCAxMSBGZWIgMjAwNDoKLSAgYWRkIFBPU1Qgc3VwcG9ydCBmb3IgdGhlIE1JUDQwNSBib2FyZAotCi0qIFBhdGNoIGJ5IExhdXJlbnQgTW9oaW4sIDEwIEZlYiAyMDA0OgotICBGaXggYnVmZmVyIG92ZXJmbG93IGluIGNvbW1vbi91c2IuYwotCi0qIFBhdGNoIGJ5IFRvbHVuYXkgT3JrdW4sIDEwIEZlYiAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgQ29nZW50IENTQjI3MiBib2FyZAotCi0qIFBhdGNoIGJ5IFRob21hcyBFbHN0ZSwgMTAgRmViIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBORVQrNTAgQ1BVIGFuZCBNb2RORVQ1MCBib2FyZAotCi0qIFBhdGNoIGJ5IFNhbSBTb25nLCAxMCBGZWIgMjAwNDoKLSAgRml4IHR5cG9zIGluIGNmaV9mbGFzaC5jCi0KLSogUGF0Y2ggYnkgTGVvbiBLdWtvdmVjLCAxMCBGZWIgMjAwNAotICBGaXhlZCBsb25nIGRpciBlbnRyeSBzbG90IGlkIGNhbGN1bGF0aW9uIGluIGdldF92ZmF0bmFtZQotCi0qIFBhdGNoIGJ5IFJvYmluIEdpbGtzLCAxMCBGZWIgMjAwNDoKLSAgYWRkICJpdGVzdCIgY29tbWFuZCAob3BlcmF0b3JzOiAtZXEsIC1uZSwgLWx0LCAtZ3QsIC1sZSwgLWdlLCA9PSwKLSAgIT0sIDw+LCA8LCA+LCA8PSwgPj0pCi0KLSogRml4IHByb2JsZW0gd2l0aCBzaWRlIGVmZmVjdHMgaW4gbWFjcm9zIGluIGluY2x1ZGUvdXNiLmgKLQotKiBQYXRjaCBieSBEYXZpZCBCZW5zb24sIDEzIE5vdiAyMDAzOgotICBidWcgODQxMzU4IC0gZml4IFRGVFAgZG93bmxvYWQgc2l6ZSBsaW1pdAotCi0qIEZpeGluZyBidWcgODUwNzY4OgotICBpbXByb3BlciBmbHVzaF9jYWNoZSgpIGluIGxvYWRfc2VyaWFsKCkKLQotKiBGaXhpbmcgYnVnIDgzNDk0MzoKLSAgTVBDODU0MCAtIG1pc3Npbmcgdm9sYXRpbGUgZGVjbGFyYXRpb25zCi0KLSogUGF0Y2ggYnkgU3RlcGhlbiBXaWxsaWFtcywgMDkgRmViIDIwMDQ6Ci0gIEFkZCBzdXBwb3J0IGZvciBYaWxpbnggU3lzdGVtQUNFIGNoaXA6Ci0gIC0gTmV3IGZpbGVzIGNvbW1vbi9jbWRfYWNlLmMgYW5kIGluY2x1ZGUvc3lzdGVtYWNlLmgKLSAgLSBIb29rIHN5c3RlbWFjZSBzdXBwb3J0IGludG8gY21kX2ZhdCBhbmQgdGhlIHBhcnRpdGlvbiBtYW5hZ2VyCi0KLSogUGF0Y2ggYnkgVHJhdmlzIFNhd3llciwgMDkgRmViIDIwMDQ6Ci0gIEFkZCBiaV9vcGJmcmVxICYgYmlfaWljX2Zhc3QgdG8gNDQwR1ggYmRfaW5mbyBhcyBuZWVkZWQgZm9yIExpbnV4Ci0KLSogUGF0Y2ggYnkgVHJhdmlzIFNhd3llciwgMDkgRmViIDIwMDQ6Ci0gIG8gNDQwR1g6Ci0gICAgLSBGaXggUENJIEluZGlyZWN0IGFjY2VzcyBmb3IgdHlwZSAxIGNvbmZpZyBjeWNsZXMgd2l0aCBwcGM0NDAuCi0gICAgLSBBZGQgcGh5bW9kZSBmb3IgNDQwIGVuZXQKLSAgICAtIGZpeCBwY2kgcHJlIGluaXQKLSAgbyBYUGVkaXRlMUs6Ci0gICAgLSBDaGFuZ2UgYm9hcmRfcHJlX2luaXQgdG8gYm9hcmRfZWFybHlfaW5pdF9mCi0gICAgLSBBZGQgdXNlciBmbGFzaCB0byBidXMgY29udHJvbGxlciBzZXR1cAotICAgIC0gRml4IHBjaSBwcmUgaW5pdAotICAgIC0gRml4IGlzX3BjaV9ob3N0IHRvIGNoZWNrIEdQSU8gZm9yIG1vbmFyY2ggYml0Ci0gICAgLSBGb3JjZSB4cGVkaXRlMWsgdG8gcGNpIGNvbnZlbnRpb25hbCBtb2RlICh2aWEgI2RlZmluZSBvcHRpb24pCi0KLSogUGF0Y2ggYnkgQnJhZCBLZW1wLCA0IEZlYiAyMDA0OgotICAtIGhhbmRsZSB0aGUgbWFjaGluZSBjaGVjayB0aGF0IGlzIGdlbmVyYXRlZCBkdXJpbmcgdGhlIFBDSSBzY2FucwotICAgIG9uIDgyeHggcHJvY2Vzc29ycy4KLSAgLSBkZWZpbmUgdGhlIHJlZ2lzdGVycyB1c2VkIGluIHRoZSBJTU1SIGJ5IHRoZSBQQ0kgc3Vic3lzdGVtLgotCi0qIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQsIDAzIEZlYiAyMDA0OgotICBjcHUvbXBjNXh4eC9zdGFydC5TOiBjb3B5IE1CQVIgaW50byBTUFIzMTEKLQotKiBQYXRjaCBieSBKZWZmIEFuZ2llbHNraSwgMDMgRmViIDIwMDQ6Ci0gIEZpeCBjb3B5ICYgcGFzdGUgZXJyb3IgaW4gY3B1L21wYzgyNjAvcGNpLmMKLQotKiBQYXRjaCBieSBSZWluaGFyZCBNZXllciwgMjQgSmFuIDIwMDQ6Ci0gIEZpeCB0eXBvIGluIGNwdS9tcGM1eHh4L3BjaV9tcGM1MjAwLmMKLQotKiBBZGQgQXV0by1NRElYIHN1cHBvcnQgZm9yIElOQ0EtSVAKLQotKiBTb21lIGNvZGUgY2xlYW51cAotCi0qIFBhdGNoIGJ5IEpvc2VmIEJhdW1nYXJ0bmVyLCAxMCBGZWIgMjAwNDoKLSAgRml4ZXMgZm9yIENvbGRGaXJlIHBvcnQKLQotKiBQYXRjaCBieSBCcmFkIEtlbXAsIDExIEZlYiAyMDA0OgotICBGaXggQ0ZJIGZsYXNoIGRyaXZlciBwcm9ibGVtcwotCi0qIE1ha2Ugc3VyZSB0byB1c2UgYSBidXMgY2xvY2sgZGl2aWRlciBvZiAyIG9ubHkgd2hlbiBydW5uaW5nIFRRTTh4eE0KLSAgbW9kdWxlcyBhdCBDUFUgY2xvY2sgZnJlcXVlbmNpZXMgYWJvdmUgNjYgTUh6LgotCi0qIE9wdGltaXplIGZsYXNoIHByb2dyYW1taW5nIHNwZWVkIGZvciBMV01PTiAoYnkgYW5vdGhlciAxMDAlIDotKQotCi0qIFBhdGNoIGJ5IEppYW4gWmhhbmcsIDMgRmViIDIwMDQ6Ci0gIC0gQ2hhbmdlZCB0aGUgaW5jb3JyZWN0IEZBVDEyQlVGU0laRQotICAtIGRhdGFfYmVnaW4gaW4gZnNkYXRhIGNhbiBiZSBuZWdhdGl2ZS4gQ2hhbmdlZCBpdCB0byBiZSBzaG9ydC4KLQotKiBQYXRjaGVzIGJ5IFN0ZXBoYW4gTGlueiwgMzAgSmFuIDIwMDQ6Ci0gIDE6IC0gYm9hcmQvYWx0ZXJhL2NvbW1vbi9mbGFzaC5jOmZsYXNoX2VyYXNlKCk6Ci0gICAgICAgbyBhbGxvdyBpbnRlcnJ1cHRzIGJlZm9yIGdldF90aW1lcigpIGNhbGwKLSAgICAgICBvIGNoZWNrLXVwIGVhY2ggZXJhc2VkIHNlY3RvciBhbmQgYXZvaWQgdW5leHBlY3RlZCB0aW1lb3V0cwotICAgICAtIGJvYXJkL2FsdGVyYS9kazFjMjAvZGsxczEwLmM6Ym9hcmRfZWFybHlfaW5pdF9mKCk6Ci0gICAgICAgbyBlbmNsb3NlIHNldmVuc2VnX3NldCgpIGluIGNwcCBjb25kaXRpb24KLSAgICAgLSByZW1vdmUgdGhlIEFTTUkgY29uZmlndXJhdGlvbiBmb3IgREsxUzEwX3N0YW5kYXJkXzMyIChuZXZlciBwcmVzZW50KQotICAgICAtIGZpeCBzb21lIHR5cGVkIGluIG1pc3Rha2VzIGluIHRoZSBOSU9TIGRvY3VtZW50YXRpb24KLSAgMjogLSBzcGxpdCBESzFDMjAgY29uZmlndXJhdGlvbiBpbnRvIHNldmVyYWwgaGVhZGVyIGZpbGVzOgotICAgICAgIG8gdHdvIG5ldyBmaWxlcyBmb3IgZWFjaCBOSU9TIENQVSBkZXNjcmlwdGlvbgotICAgICAgIG8gVS1Cb290IHJlbGF0ZWQgcGFydCBpcyByZW1haW5pbmcgaW4gREsxQzIwLmgKLSAgMzogLSBzcGxpdCBESzFTMTAgY29uZmlndXJhdGlvbiBpbnRvIHNldmVyYWwgaGVhZGVyIGZpbGVzOgotICAgICAgIG8gdHdvIG5ldyBmaWxlcyBmb3IgZWFjaCBOSU9TIENQVSBkZXNjcmlwdGlvbgotICAgICAgIG8gVS1Cb290IHJlbGF0ZWQgcGFydCBpcyByZW1haW5pbmcgaW4gREsxUzEwLmgKLSAgNDogLSBBZGQgc3VwcG9ydCBmb3IgdGhlIE1pY3JvdHJvbml4IExpbnV4IERldmVsb3BtZW50IEtpdAotICAgICAgIE5JT1MgQ1BVIGNvbmZpZ3VyYXRpb24gYXQgdGhlIEFsdGVyYSBOaW9zIERldmVsb3BtZW50IEtpdCwKLSAgICAgICBTdHJhdGl4IEVkaXRpb24gKERLLTFTMTApCi0gIDU6IC0gQWRkIGRvY3VtZW50YXRpb24gZm9yIHRoZSBBbHRlcmEgTmlvcyBEZXZlbG9wbWVudCBLaXQsCi0gICAgICAgU3RyYXRpeCBFZGl0aW9uIChESy0xUzEwKQotICA2OiAtIEFkZCBzdXBwb3J0IGZvciB0aGUgTmlvcyBTZXJpYWwgUGVyaXBoYXJlbCBJbnRlcmZhY2UgKFNQSSkKLSAgICAgICAobWFzdGVyIG9ubHkpCi0gIDc6IC0gQWRkIHN1cHBvcnQgZm9yIHRoZSBjb21tb24gVS1Cb290IFNQSSBmcmFtZXdvcmsgYXQKLSAgICAgICBSVEMgZHJpdmVyIERTMTMwNgotCi0qIFBhdGNoIGJ5IFJhaHVsIFNoYW5iaGFnLCAyOCBKYW4gMjAwNDoKLSAgRml4IGZsYXNoIHByb3RlY3Rpb24vbG9ja2luZyBoYW5kbGluZyBmb3IgT01BUDE2MTAgaW5ub3ZhdG9yIGJvYXJkLgotCi0qIFBhdGNoIGJ5IFJvbGYgUGV1a2VydCwgMjggSmFuIDIwMDQ6Ci0gIGZpeCBmbGFzaCB3cml0ZSBwcm9ibGVtcyBvbiBDU0IyMjYgYm9hcmQgKHdyaXRlIHdpdGggMzIgYml0IGJ1cyB3aWR0aCkKLQotKiBQYXRjaGVzIGJ5IE1hcmsgSm9uYXMsIDE2IEphbiAyMDA0OgotICAtIGZpeCByb3VuZGluZyBlcnJvciB3aGVuIGNhbGN1bGF0aW5nIGJhdWRyYXRlcyBmb3IgTVBDNTIwMCBQU0NzCi0gIC0gbWFrZSBzdXJlIENGR19SQU1CT09UIGFuZCBDRkdfTE9XQk9PVCBhcmUgbm90IGVuYWJsZWQgYXQgdGhlIHNhbWUKLSAgICB0aW1lIHdoaWNoIGlzIG5vdCBzdXBwb3J0ZWQKLQotKiBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAyNiBKYW4gMjAwNDoKLSAgQWxsb3cgYnppcDIgY29tcHJlc3Npb24gZm9yIHNtYWxsIG1lbW9yeSBmb290cHJpbnQgYm9hcmRzCi0KLSogUGF0Y2ggYnkgQnJhZCBLZW1wLCAyMSBKYW4gMjAwNDoKLSAgQWRkIHN1cHBvcnQgZm9yIENGSSBmbGFzaCBkcml2ZXIgZm9yIGJvdGggdGhlIEludGVsIGFuZCB0aGUgQU1ECi0gIGNvbW1hbmQgc2V0cy4KLQotKiBQYXRjaCBieSBUcmF2aXMgU2F3eWVyLCAyMCBKYW4gMjAwNDoKLSAgRml4IHBjaSBicmlkZ2UgYXV0byBlbnVtZXJhdGlvbiBvZiBzaWJsaW5nIHAycCBicmlkZ2VzLgotCi0qIFBhdGNoIGJ5IFRvbHVuYXkgT3JrdW4sIDEyIEphbiAyMDA0OgotICBBZGQgc29tZSBkZWxheXMgYXMgbmVlZGVkIGZvciBJbnRlbCBMWFQ5NzFBIFBIWSBzdXBwb3J0Ci0KLSogUGF0Y2hlcyBieSBTdGVwaGFuIExpbnosIDA5IEphbiAyMDA0OgotICAtIGF2b2lkIHdhcm5pbmc6IHVudXNlZCB2YXJpYWJsZSBgcGlvcCcgaW4gYm9hcmQvYWx0ZXJhL2NvbW1vbi9zZXZlbnNlZy5jCi0gIC0gbWFrZSBESzFDMjAgYm9hcmQgY29uZmlndXJhdGlvbiByZWxhdGVkIHRvIEFTTUkgY29uZm9ybSB0bwotICAgIGRvY3VtZW50YXRpb24KLQotKiBQYXRjaCBieSBBbmRlcnMgTGFyc2VuLCAwOSBKYW4gMjAwNDoKLQotICBBUk0gbWVtb3J5IGxheW91dCBmaXhlczogdGhlIGFib3J0LXN0YWNrIGlzIG5vdyBzZXQgdXAgaW4gdGhlCi0gIGNvcnJlY3QgUkFNIGFyZWEsIGFuZCB0aGUgQlNTIGlzIHplcm9lZCBvdXQgYXMgaXQgc2hvdWxkIGJlLgotCi0gIEZ1cnRoZXJtb3JlLCB0aGUgbWFnaWMgdmFyaWFibGVzICdhcm1ib290X2VuZCcgYW5kICdhcm1ib290X2VuZF9kYXRhJwotICBvZiB0aGUgbGlua2VyIHNjcmlwdHMgYXJlIHJlcGxhY2VkIGJ5ICdfX2Jzc19zdGFydCcgYW5kICdfZW5kJywKLSAgcmVzcC4sIHdoaWNoIGlzIGEgZnVydGhlciBzdGVwIHRvIGVsaW1pbmF0ZSB1bm5lY2Vzc2FyeSBkaWZmZXJlbmNlcwotICBiZXR3ZWVuIHRoZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQ1BVIGFyY2hpdGVjdHVyZXMuCi0KLSogUGF0Y2ggYnkgbGlhbmcgYSBsZWksIDkgSmFuIDIwMDQ6Ci0gIEZpeCBJbnRlbCAyOEYxMjhKMyBJRCBpbiBpbmNsdWRlL2ZsYXNoLmgKLQotKiBQYXRjaCBieSBNYXNhbWkgS29taXlhLCAwOSBKYW4gMjAwNDoKLSAgYWRkIHN1cHBvcnQgZm9yIFRCMDIyOSBib2FyZCAoTkVDIFZSNDEzMSBNSVBTIHByb2Nlc3NvcikKLQotKiBQYXRjaCBieSBMZW9uIEt1a292ZWMsIDEyIERlYyAyMDAzOgotICBjaGFuZ2VkIGV4dGVybiBfX2lubGluZV9fIGludG8gc3RhdGljIF9faW5saW5lX18gaW4KLSAgaW5jbHVkZS9saW51eC9ieXRlb3JkZXIvc3dhYi5oCi0KLSogUGF0Y2ggYnkgVHJhdmlzIFNhd3llciwgMzAgRGVjIDIwMDM6Ci0gIEFkZCBzdXBwb3J0IGZvciBJQk0gUFBDNDQwR1guIE11bHRpcGxlIEVNQUMgRXRoZXJuZXQgZGV2aWNlcywKLSAgc2VsZWN0IE1ESSBwb3J0IGJhc2VkIG9uIGVuYWJsZWQgRU1BQyBkZXZpY2UuCi0gIEFkZCBzdXBwb3J0IGZvciBYRVMgSW5jIDxodHRwOi8vd3d3Lnhlcy1pbmMuY29tPiBYUGVkaXRlMTAwMCA0NDBHWAotICBiYXNlIFByUE1DIGJvYXJkLgotCi0qIFBhdGNoIGJ5IFdvbHRlciBLYW1waHVpcywgMTUgRGVjIDIwMDM6Ci0gIG1hZGUgQ09ORklHX1NJTEVOVF9DT05TT0xFIHVzYWJsZSBvbiBhbGwgYXJjaGl0ZWN0dXJlcwotCi0qIERpc2FibGUgZGF0ZSBjb21tYW5kIG9uIFRRTTg2Nk0gLSB0aGVyZSBpcyBubyBSVEMgb24gTVBDODY2Ci0KLSogRml4IHZhcmlhYmxlIENQVSBjbG9jayBmb3IgTVBDODU5Lzg2NiBzeXN0ZW1zIGZvciBsb3cgQ1BVIGNsb2NrcwotCi0qIEltcGxlbWVudCBhZGFwdGl2ZSBTRFJBTSB0aW1pbmcgY29uZmlndXJhdGlvbiBiYXNlZCBvbiBhY3R1YWwgQ1BVCi0gIGNsb2NrIGZyZXF1ZW5jeSBmb3IgSU5DQS1JUDsgZml4IHByb2JsZW0gd2l0aCBib2FyZCBoYW5naW5nIHdoZW4KLSAgc3dpdGNoaW5nIGZyb20gMTUwTUh6IHRvIDEwME1IegotCi0qIEFkZCBQQ01DSUEgQ1Mgc3VwcG9ydCBmb3IgQk1TMjAwMyBib2FyZAotCi0qIEFkZCB2YXJpYWJsZSBDUFUgY2xvY2sgZm9yIE1QQzg1OS84NjYgc3lzdGVtcyAoc28gZmFyIG9ubHkgVFFNODY2TSk6Ci0gIHNlZSBkb2MvUkVBRE1FLk1QQzg2NiBmb3IgZGV0YWlsczsKLSAgaW1wbGVtZW50IHdvcmthcm91bmQgZm9yICJTSVU0IiBhbmQgIlNJVTkiIHNpbGljb24gYnVncyBvbiBNUEM4NjY7Ci0gIGNhbGN1bGF0ZSBDUFUgY2xvY2sgZnJlcXVlbmN5IGZyb20gUExMIHJlZ2lzdGVyIHZhbHVlcy4KLQotKiBBZGQgc3VwcG9ydCBmb3IgMTI4IE1CIFJBTSBvbiBUUU04eHhML00gbW9kdWxlcwotCi0qIEZpeCBQUy8yIGtleWJvYXJkIHByb2JsZW0gY2F1c2VkIGJ5IHN0YXRpY2FsbHkgaW5pdGlhbGl6ZWQgdmFyaWFibGUKLSAgcG9pbnRpbmcgdG8gYSBsb2NhdGlvbiBpbiBmbGFzaAotCi0qIEZpeCBJTkNBLUlQIGNsb2NrIGNhbGN1bGF0aW9uOiA0MDAvMyA9IDEzMy4zIE1Ieiwgbm90IDEzMC4KLQotKiBUaGUgUFMvMiBtdXggb24gdGhlIEJNUzIwMDMgYm9hcmQgbmVlZHMgNDUwIG1zIGFmdGVyIHBvd2VyIG9uCi0gIGJlZm9yZSB3ZSBjYW4gYWNjZXNzIGl0OyBhZGQgZGVsYXkgaW4gY2FzZSB3ZSBhcmUgZmFzdGVyICh3aXRoIG5vCi0gIENGIGNhcmQgaW5zZXJ0ZWQpCi0KLSogQ2xlYW51cCBvZiBzb21lIGluaXQgZnVuY3Rpb25zCi0KLSogTWFrZSBzdXJlIFNDQyBFdGhlcm5ldCBpcyBhbHdheXMgc3RvcHBlZCBieSB0aGUgdGltZSB3ZSBib290IExpbnV4Ci0gIHRvIGF2b2lkIExpbnV4IGNyYXNoZXMgYnkgZWFybHkgcGFja2V0cyBjb21pbmcgaW4uCi0KLSogQWNjZWxlcmF0ZSBmbGFzaCBhY2Nlc3NlcyBvbiBMV01PTiBib2FyZCBieSB1c2luZyBidWZmZXJlZCB3cml0ZXMKLQotKiBGaXggdHlwbyBpbiBNYWtlZmlsZTsKLSAgZml4IHByb2JsZW0gd2l0aCBQQVJUTlVNIGRldGVjdGlvbgotCi0qIFBhdGNoIGJ5IFJlaW5oYXJkIE1leWVyLCAwOSBKYW4gMjAwNDoKLSAgLSBhZGQgUlRDIHN1cHBvcnQgZm9yIE1QQzUyMDAgYmFzZWQgYm9hcmRzIChyZXF1aXJlcyBSVENfWFRBTCkKLQotKiBBZGQgc3VwcG9ydCBmb3IgSURFIExFRCBvbiBCTVMyMDAzIGJvYXJkCi0gIChleGNsdXNpdmUgd2l0aCBzdGF0dXMgTEVEISkKLQotKiBBZGQgc3VwcG9ydCBmb3IgUFMvMiBrZXlib2FyZCAodXNlZCB3aXRoIFBTLzIgbXVsdGlwbGV4b3Igb24KLSAgQk1TMjAwMyBib2FyZCkKLQotKiBQYXRjaGVzIGJ5IFJlaW5oYXJkIE1leWVyLCA0IEphbiAyMDA0ICsgNyBKYW4gMjAwNDoKLSAgQWRkIGNvbW1vbiBmaWxlcyBmb3IgImVtayIgYm9hcmRzCi0KLSogQWRkIGEgY29tbW9uIGdldF9yYW1fc2l6ZSgpIGZ1bmN0aW9uIGFuZCBtb2RpZnkgdGhlIHRoZQotICBib2FyZC1zcGVjaWZpYyBmaWxlcyB0byBpbnZva2UgdGhhdCBjb21tb24gaW1wbGVtZW50YXRpb24uCi0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNoYW5nZXMgZm9yIFUtQm9vdCAxLjAuMToKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKiBTZXQgZGVmYXVsdCBjbG9jayBmb3IgSU5DQS1JUCB0byAxNTAgTUh6Ci0KLSogTWFrZSBCTVMyMDAzIHVzZSBhIHNlcGFyYXRlIGNvbmZpZyBmaWxlIHRvIGF2b2lkICNpZmRlZiBtZXNzOwotICBhZGQgSTJDIHN1cHBvcnQ7IGFkZCBzdXBwb3J0IGZvciBEUzEzMzcgUlRDCi0KLSogQWRkIENvbXBhY3RGbGFzaCBzdXBwb3J0ICBmb3IgQk1TMjAwMyBib2FyZAotCi0qIEFkZCBzdXBwb3J0IGZvciBzdGF0dXMgTEVEIG9uIEJNUzIwMDMgYm9hcmQKLQotKiBQYXRjaCBieSBTY290dCBNY051dHQsIDAyIEphbiAyMDA0OgotICBBZGQgc3VwcG9ydCBmb3IgdGhlIE5pb3MgQWN0aXZlIFNlcmlhbCBNZW1vcnkgSW50ZXJmYWNlIChBU01JKQotICBvbiBDeWNsb25lIGRldmljZXMKLQotKiBQYXRjaCBieSBBbmRyZWEgTWFyc29uLCAxNiBEZWMgMjAwMzoKLSAgQWRkIHN1cHBvcnQgZm9yIHRoZSBQUENoYW1lbGVvbiBNRSBhbmQgSEkgbW9kdWxlcwotCi0qIFBhdGNoIGJ5IFl1bGkgQmFyY29oZW4sIDIyIERlYyAyMDAzOgotICBBZGQgc3VwcG9ydCBmb3IgTW90b3JvbGEgRFVFVCBBRFMgYm9hcmQgKE1QQzg3eC84OHgpCi0KLSogUGF0Y2ggYnkgUm9iZXJ0IFNjaHdlYmVsLCAxNSBEZWMgMjAwMzoKLSAgYWRkIHN1cHBvcnQgZm9yIGNyYW1mcyAodXNlcyBKRkZTMiBjb21tYW5kIGludGVyZmFjZSkKLQotKiBQYXRjaGVzIGJ5IFN0ZXBoYW4gTGlueiwgMTEgRGVjIDIwMDM6Ci0gIC0gbW9yZSBkb2N1bWVudGF0aW9uIGZvciBOSU9TIHBvcnQKLSAgLSBuZXcgc3RydWN0IG5pb3NfcGlvX3QsIHN0cnVjdCBuaW9zX3NwaV90Ci0gIC0gUmVjb25maWd1cmF0aW9uIGZvciBOSU9TIERldmVsb3BtZW50IEtpdCBESzFDMjA6Ci0gICAgbyBtb3ZlIGJvYXJkIHJlbGF0ZWQgY29kZSBmcm9tIGJvYXJkL2RrMWMyMAotICAgICAgdG8gYm9hcmQvYWx0ZXJhL2RrMWMyMAotICAgIG8gY3JlYXRlIGEgbmV3IGNvbW1vbiBzb3VyY2UgcGF0aCBib2FyZC9hbHRlcmEvY29tbW9uCi0gICAgICBhbmQgbW92ZSBnZW5lcmljIGZsYXNoIGFjY2VzcyBzdHVmZiBpbnRvIGl0Ci0gICAgbyBjaGFuZ2UvZXhwYW5kIGNvbmZpZ3VyYXRpb24gZmlsZSBESzFDMjAuaAotICAtIEFkZCBzdXBwb3J0IGZvciBOSU9TIERldmVsb3BtZW50IEtpdCBESzFTMTAKLSAgLSBBZGQgc3RhdHVzIExFRCBzdXBwb3J0IGZvciBOSU9TIHN5c3RlbXMKLSAgLSBBZGQgZHVhbCA3LXNlZ21lbnQgTEVEIHN1cHBvcnQgZm9yIEFsdGVyYSBOSU9TIERldktpdHMKLQotKiBQYXRjaCBieSBSb25lbiBTaGl0cml0LCAxMCBEZWMgMjAwMzoKLSAgQWRkIHN1cHBvcnQgZm9yIHRoZSBNYXJ2ZWxsIERCNjQzNjAgLyBEQjY0NDYwIGRldmVsb3BtZW50IGJvYXJkcwotCi0qIFBhdGNoIGJ5IERldGxldiBadW5kZWwsIDEwIERlYyAyMDAzOgotICBmaXggZGVwZW5kZW5jeSBwcm9ibGVtIGluIGV4YW1wbGVzL01ha2VmaWxlCi0KLSogUGF0Y2ggYnkgRGVuaXMgUGV0ZXIsIDggRGVjIDIwMDMKLSAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIFBBVEkgYm9hcmQgKE1QQzU1NSkKLSAgLSBhZGQgU1BJIHN1cHBvcnQgZm9yIHRoZSBNUEM1eHgKLQotKiBQYXRjaCBieSBBbmRlcnMgTGFyc2VuLCAwOCBEZWMgMjAwMzoKLSAgYWRkIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBDT05GSUdfU0VSSUFMX1RBRyBhbmQgQ09ORklHX1JFVklTSU9OX1RBRwotICB0byBwYXNzIEFUQUdfU0VSSUFMIGFuZCBBVEFHX1JFVklTSU9OLCByZXNwLiwgdG8gdGhlIEFSTSB0YXJnZXQ7Ci0gIGNsZWFudXAgc29tZSByZWR1bmRhbmQgI2RlZmluZXMKLQotKiBQYXRjaCBieSBBbmRy6SBTY2h3YXJ6LCA4IERlYyAyMDAzOgotICBmaXhlcyBmb3IgRGF2aWNvbSBETTkxMDJBIEV0aGVybmV0IENoaXAgKCNkZWZpbmUgQ09ORklHX1RVTElQX0ZJWF9EQVZJQ09NKToKLSAgLSBUWCBhbmQgUlggZGVza3JpcHRvcnMgbXVzdCBiZSBxdWFkLXdvcmQgYWxpZ25lZAotICAtIGRvZXMgbm90IHdvcmsgd2l0aCBvbmx5IG9uZSBUWCBkZXNrcmlwdG9yCi0gIC0gc3RhbmRhcmQgcmVzZXQgbWV0aG9kIGRvZXMgbm90IHdvcmsKLQotKiBQYXRjaCBieSBNYXNhbWkgS29taXlhLCAwOCBEZWMgMjAwMzoKLSAgYWRkIFJUTDgxMzkgZXRoZXJuZXQgZHJpdmVyCi0KLSogUGF0Y2hlcyBieSBFZCBPa2Vyc29uLCAwNyBEZWMgMjAwMzoKLSAgLSBmaXggZXRoZXJuZXQgZm9yIHRoZSBBVTF4MDAgcHJvY2Vzc29ycyBpbiBsaXR0bGUtZW5kaWFuIG1vZGUuCi0gIC0gZXh0ZW5kIG1lbXNldHVwLlMgZm9yIHRoZSBBVTF4MDAgcHJvY2Vzc29ycyBpbiBCRSBhbmQgTEUgbW9kZXMKLQotKiBNaW5vciBjb2RlIGNsZWFudXAgKGNvZGluZyBzdHlsZSkKLQotKiBQYXRjaCBieSBSZWluaGFyZCBNZXllciwgMzAgRGVjIDIwMDM6Ci0gIC0gY3B1L21wYzV4eHgvZmVjLmM6IGFkZGVkIENPTkZJR19QSFlfQUREUiwgYWRkZWQgQ09ORklHX1BIWV9UWVBFLAotICAtIGFkZGVkIENPTkZJR19QSFlfQUREUiB0byBpbmNsdWRlL2NvbmZpZ3MvSWNlQ3ViZS5oLAotICAtIHR1cm5lZCBkZWJ1ZyBwcmludCBvZiBQSFkgcmVnaXN0ZXJzIGludG8gYSBmdW5jdGlvbiAoY2FsbGVkIGluIHR3byBwbGFjZXMpCi0gIC0gYWRkZWQgc3VwcG9ydCBmb3IgRU1LIE1QQzUyMDAgYmFzZWQgbW9kdWxlcwotCi0qIEZpeCBNUEM4eHggUExQUkNSX01GRF9TSElGVCB0eXBvCi0KLSogQWRkIHN1cHBvcnQgZm9yIFRRTTg2Nk0gbW9kdWxlcwotCi0qIEZpeGVzIGZvciBUUU04NTVNIHdpdGggNCBNQiBmbGFzaCAoQW0yOURMMTYzID0gX25vXyBtaXJyb3IgYml0IGZsYXNoKQotCi0qIEZpeCBhIGZldyBjb21waWxlciB3YXJuaW5ncwotCi0qIFBhdGNoIGJ5IFJlaW5oYXJkIE1leWVyLCAyOCBEZWMgMjAwMzoKLSAgQWRkIGluaXRpYWwgc3VwcG9ydCBmb3IgVE9QNTIwMCBib2FyZAotCi0qIE1ha2UgQ1BVIGNsb2NrIG9uIElDQS1JUCBib2FyZCBjb250cm9sbGFibGUgYnkgYSAiY3B1Y2xrIgotICBlbnZpcm9ubWVudCB2YXJpYWJsZSB3aGljaCBjYW4gc2V0IHRvICIxMDAiLCAiMTMzIiwgb3IgIjE1MCIuIFRoZQotICBDUFUgY2xvY2sgd2lsbCBiZSBjb25maWd1cmVkIGFjY29yZGluZ2x5IHVwb24gbmV4dCByZWJvb3QuIE90aGVyCi0gIHZhbHVlcyBhcmUgaWdub3JlZC4gSW4gY2FzZSBvZiBhbiBpbnZhbGlkIG9yIHVuZGVmaW5lZCAiY3B1Y2xrIgotICB2YWx1ZSwgdGhlIGNvbXBpbGUtdGltZSBkZWZhdWx0IENQVSBjbG9jayBzcGVlZCB3aWxsIGJlIHVzZWQuCi0KLSogRW5hYmxlIFF1YWQtVUFSVCBvbiBCTVMyMDAzIGJvYXJkIChpbml0aWFsaXplIHRoZSBQQ01DSUEgbWVtb3J5Ci0gIHdpbmRvdyB0aGF0IGlzIHVzZWQgdG8gYWNjZXNzIHRoZSBVQVJUIHJlZ2lzdGVycyBieSB0aGUgTGludXggZHJpdmVyKQotCi0qIFBhdGNoIGJ5IFJlaW5oYXJkIE1leWVyLCAyMCBEZWMgMjAwMzoKLSAgRml4IGNsb2NrIGNhbGN1bGF0aW9uIGZvciB0aGUgTVBDNTIwMCBmb3IgaGlnaGVyIGNsb2NrIGZyZXF1ZW5jaWVzCi0gIChhYm92ZSAyKiozMiAvIDEwID0gNDI5LjUgTUh6KS4KLQotKiBGaXggQ09ORklHX1BMTF9QQ0lfVE9fTUVNX01VTFRJUExJRVIgZGl2aWRlciBlcnJvciBpbiBTUDgyNDAgY29uZmlndXJhdGlvbgotCi0qIEZpeCBJY2VDdWJlIENMS0lOIGNvbmZpZ3VyYXRpb24gKGl0J3MgMzMuMDAwMDAwTUh6KQotCi0qIEFkZCBuZXcgY29uZmlndXJhdGlvbiBmb3IgSWNlQ3ViZSBib2FyZCB3aXRoIEREUiBtZW1vcnkKLQotKiBVcGRhdGUgVFJBQiBtZW1vcnkgY29uZmlndXJhdGlvbnMKLQotKiBBZGQgSkZGUzIgc3VwcG9ydCBmb3IgSU5DQS1JUCBib2FyZAotCi0qIFBhdGNoIGJ5IEJpbGwgSGFyZ2VuLCAwOSBEZWMgMjAwMzoKLSAgLSBCVUJJTkdBNDA1RVA6IGNoYW5nZWQgZmxhc2ggZHJpdmVyIHRvIHByb3RlY3QgdG9wIHNlY3RvciBjb250YWluaW5nCi0gICAgZmlyc3QgaW5zdHJ1Y3Rpb24uCi0gIC0gQlVCSU5HQTQwNUVQOiBjb25maWd1cmVkICJlZXByb20iIGNvbW1hbmQgdG8gYWNjZXNzIGJvb3QgY29uZmlnIEVFUFJPTS4KLSAgLSBCVUJJTkdBNDA1RVA6IGZpeGVkIFBMTCBpbml0IChpbml0IGNoaXAgc2VsZWN0cyBiZWZvcmUgRlBHQS9OVlJBTSBhY2Nlc3MpLgotICAtIDQwNUVQOiBmaXhlZCBTUEQtYmFzZWQgU0RSQU0gaW5pdCAob25seSB1c2UgYmFua3MgMCBhbmQgMSkuCi0gIC0gNDA1RVA6IGFkZGVkL2ZpeGVkIHN1cHBvcnQgZm9yICJyZWdpbmZvIiBjb21tYW5kLgotICAtIDR4eDogcmVtb3ZlZCBzcHVyaW91cyBNSUkgZXJyb3IgbWVzc2FnZXMgb24gIm1paSBpbmZvIiBjb21tYW5kLgotCi0qIFBhdGNoIGJ5IEJlcm5oYXJkIEt1aG4sIDI4IE5vdiAyMDAzOgotICBhZGQgc3VwcG9ydCBmb3IgQ29sZEZpcmUgQ1BVCi0gIGFkZCBzdXBwb3J0IGZvciBNb3Rvcm9sYSBNNTI3MkMzIGFuZCBNNTI4MkVWQiBib2FyZHMKLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAyNCBOb3YgMjAwMzoKLSAgLSBhZGQgYSByZXR1cm4gdmFsdWUgZm9yIHRoZSBmcGdhIGNvbW1hbmQKLSAgLSBhZGQgaWRlX3ByZWluaXQoKSBmdW5jdGlvbiBjYWxsZWQgaW4gaWRlX2luaXQgaWYgQ09ORklHX0lERV9QUkVJTklUCi0gICAgaXMgZGVmaW5lZC4gSWYgaWRlX3ByZWluaXQgZmFpbHMsIGlkZV9pbml0IGlzIGFib3J0ZWQuCi0gIC0gZml4IGFuIGVuZGlhbmVzcyBwcm9ibGVtIGluIGZhdC5oCi0KLSogUGF0Y2ggYnkgV29sdGVyIEthbXBodWlzLCAwNSBEZWMgMjAwMzoKLSAgQWRkIHN1cHBvcnQgZm9yIFNOTUMncyBRUzg1MC9RUzgyMy9RUzg2MFQgYm9hcmRzCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMyBEZWMgMjAwMzoKLSAgInJldml2ZSIgVS1Cb290IHN1cHBvcnQgZm9yIG9sZCBNb3Rvcm9sYSBNUEM4NjBBRFMgYm9hcmQKLQotKiBQYXRjaCBieSBDYW0oaWxvPyksIDAzIERlYyAyMDAzOgotICBtYWtlIGV4YW1wbGVzIGJ1aWxkIGV2ZW4gd2l0aCBicm9rZW4gTW9udGF2aXN0YSBvYmpjb3B5Ci0KLSogUGF0Y2ggYnkgUGF2ZWwgQmFydHVzZWssIDI3IE5vdiAyMDAzOgotICBmaXggY29udmVyc2lvbiBwcm9ibGVtIHdpdGggImJvb3RyZXRyeSIgZXZpcm9ubWVudCB2YXJpYWJsZQotCi0qIFBhdGNoIGJ5IEFuZHJlIFNjaHdhcnosIDI0IE5vdiAyMDAzOgotICBhZGQgc3VwcG9ydCBmb3IgbXZibHVlIChtdkJsdWVMWU5YIGFuZCBtdkJsdWVCT1gpIGJvYXJkcwotCi0qIFBhdGNoIGJ5IFBhdmVsIEJhcnR1c2VrLCAyMSBOb3YgMjAwMzoKLSAgc2V0IFpNSUkgYnJpZGdlIHNwZWVkIG9uIDQ0MAotCi0qIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDE3IE5vdiAyMDAzOgotICBGaXggbWlzbWF0Y2hlZCAjaWZkZWYgLyAjZW5kaWYgaW4gaW5jbHVkZS9hc20tYXJtL2FyY2gtcHhhL2hhcmR3YXJlLmgKLQotKiBQYXRjaGVzIGJ5IERhdmlkIE38bGxlciwgMTQgTm92IDIwMDM6Ci0gIC0gYm9hcmQvbXBsL2NvbW1vbi9jb21tb25fdXRpbC5jCi0gICAgKiBpbXBsZW1lbnQgc3VwcG9ydCBmb3IgQlpJUDIgY29tcHJlc3NlZCBpbWFnZXMKLSAgICAqIHZhcmlvdXMgY2xlYW51cHMgKHByaW50ZiAtPiBwdXRzLCAuLi4pCi0gIC0gYm9hcmQvbXBsL2NvbW1vbi9mbGFzaC5jCi0gICAgKiByZXBvcnQgY29ycmVjdCBlcnJvcnMgdG8gdXBwZXIgbGF5ZXJzCi0gICAgKiBjaGVjayB0aGUgZXJhc2UgZmFpbCBhbmQgVlBQIGxvdyBiaXRzIGluIHN0YXR1cyByZWcKLSAgLSBib2FyZC9tcGwvdmNtYTkvY21kX3ZjbWE5LmMKLSAgLSBib2FyZC9tcGwvdmNtYTkvZmxhc2guYwotICAgICogdmFyaW91cyBjbGVhbnVwcyAocHJpbnRmIC0+IHB1dHMsIC4uLikKLSAgLSBjb21tb24vY21kX3VzYi5jCi0gICAgKiBmaXggdHlwbyBpbiBjb21tZW50Ci0gIC0gY3B1L2FybTkyMHQvdXNiX29oY2kuYwotICAgICogc3VwcG9ydCBmb3IgUzNDMjQxMCBpcyBtaXNzaW5nIGluICNpZiBsaW5lCi0gIC0gZHJpdmVycy9jczg5MDAuYwotICAgICogcmVpbml0IHNvbWUgcmVnaXN0ZXJzIGluIGNhc2Ugb2YgZXJyb3IgKGNhYmxlIG1pc3NpbmcsIC4uLikKLSAgLSBmcy9mYXQvZmF0LmMKLSAgICAqIHN1cHBvcnQgZm9yIFVTQi9NTUMgZGV2aWNlcyBpcyBtaXNzaW5nIGluICNpZiBsaW5lCi0gIC0gaW5jbHVkZS9jb25maWdzL01JUDQwNS5oCi0gIC0gaW5jbHVkZS9jb25maWdzL1BJUDQwNS5oCi0gICAgKiBlbmFibGUgQlpJUDIgc3VwcG9ydAotICAgICogZW5sYXJnZSBtYWxsb2Mgc3BhY2UgdG8gMU1pQiBiZWNhdXNlIG9mIEJaSVAyIHN1cHBvcnQKLSAgLSBpbmNsdWRlL2NvbmZpZ3MvVkNNQTkuaAotICAgICogZW5hYmxlIEJaSVAyIHN1cHBvcnQKLSAgICAqIGVubGFyZ2UgbWFsbG9jIHNwYWNlIHRvIDFNaUIgYmVjYXVzZSBvZiBCWklQMiBzdXBwb3J0Ci0gICAgKiBlbmFibGUgVVNCIHN1cHBvcnQKLSAgLSBsaWJfYXJtL2FybWxpbnV4LmMKLSAgICAqIGNoYW5nZSBjYWxsaW5nIGNvbnZlbnRpb24gb2YgQVJNIExpbnV4IGtlcm5lbCBhcwotICAgICAgZGVzY3JpYmVkIG9uIGh0dHA6Ly93d3cuYXJtLmxpbnV4Lm9yZy51ay9kZXZlbG9wZXIvYm9vdGluZy5waHAKLQotKiBQYXRjaCBieSBUaG9tYXMgTGFuZ2UsIDE0IE5vdiAyMDAzOgotICBTcGxpdCBkYmF1MXgwMCBpbnRvIGRiYXUxMDAwLCBkYmF1MTEwMCBhbmQgZGJhdTE1MDAgY29uZmlncyB0bwotICBzdXBwb3J0IGFsbCB0aGVzZSBBTUQgYm9hcmRzLgotCi0qIFBhdGNoIGJ5IFRob21hcyBMYW5nZSwgMTQgTm92IDIwMDM6Ci0gIFdvcmthcm91bmQgZm9yIG1pcHMgYXUxeDAwIHBoeXNpY2FsIG1lbW9yeSBhY2Nlc3NlcyAodGhlIGF1MXgwMAotICB1c2VzIGEgMzYgYml0IGJ1cyBpbnRlcm5hbGx5IGFuZCBjYW5ub3QgYWNjZXNzIHBoeXNpY2FsIG1lbW9yeQotICBkaXJlY3RseS4gVXNlIHRoZSB1bmNhY2hlZCBTRFJBTSBhZGRyZXNzIGluc3RlYWQgb2YgdGhlIHBoeXNpY2FsCi0gIG9uZS4pCi0KLSogUGF0Y2ggYnkgWHVlIExpZ29uZyAoSm9lKSwgMTMgTm92IDIwMDM6Ci0gIGFkZCBSZWFsdGVrIDgwMTkgZXRoZXJuZXQgZHJpdmVyCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMTMgTm92IDIwMDM6Ci0gIE1QQzgyNnhBRFMvUFEyRkFEUyAgY2xlYW51cAotCi0qIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDEyIE5vdiAyMDAzOgotICBVcGRhdGUgUkVBRE1FIHRvIG1hcmsgdGhlIFBPUlRJTyBjb21tYW5kcyBub24tc3RhbmRhcmQKLQotKiBQYXRjaCBieSBOaWNvbGFzIExhY3Jlc3Nvbm5p6HJlLCAxMiBOb3YgMjAwMzoKLSAgdXBkYXRlIGZvciBmb3IgQXRtZWwgQVQ5MVJNOTIwMERLIGRldmVsb3BtZW50IGtpdDoKLSAgLSBzdXBwb3J0IGZvciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgaW4gRGF0YUZsYXNoCi0gIC0gQXRtZWwgRGF0YUZsYXNoIEFUNDVEQjEyODIgc3VwcG9ydAotCi0qIFBhdGNoIGJ5IEplZmYgQ2FyciwgMTEgTm92IDIwMDM6Ci0gIGFkZCBzdXBwb3J0IGZvciBuZXcgdmVyc2lvbiBvZiA4MjcwIHByb2Nlc3NvcnMKLQotKiBQYXRjaGVzIGJ5IEdlb3JnZSBHLiBEYXZpcywgMDUgTm92IDIwMDM6Ci0gIC0gb25seSBwYXNzIHRoZSBBUk0gbGludXggaW5pdHJkIHRhZyB0byB0aGUga2VybmVsIHdoZW4gYW4gaW5pdHJkCi0gICAgaXMgYWN0dWFsbHkgcHJlc2VudAotICAtIHVwZGF0ZSBvbWFwMTUxMGlubiBjb25maWd1cmF0aW9uIGZpbGUKLQotKiBQYXRjaGVzIGJ5IFN0ZXBoYW4gTGlueiwgMyBOb3YgMjAwMzoKLSAgLSBtb3JlIGVuZGlhbmVzcyBmaXhlcyBmb3IgTEFOOTFDMTExIGRyaXZlcgotICAtIENGR19IWiBjb25maWd1cmF0aW9uIHBhdGNoIGZvciBOSU9TIEN5Y2xvbmUgYm9hcmQKLQotKiBQYXRjaCBieSBTdGVwaGFuIExpbnosIDI4IE9jdCAyMDAzOgotICBmaXggUEhZX0lOVF9SRUcgdnMuIFBIWV9NQVNLX1JFRyBidWcgaW4gZHJpdmVycy9zbWM5MTExMS5jCi0KLSogUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMjAgT2N0IDIwMDM6Ci0gIC0gbWFrZSAibWlpIGluZm8gPGFkZHI+IiBzaG93IGluZm9yIGZvciBQSFkgYXQgImFkZHIiIG9ubHkKLSAgLSBFbmRpYW4gZml4IGZvciBtaWlwaHlfaW5mbygpCi0KLSogUGF0Y2ggYnkgR2xlYiBOYXRhcG92LCAxOSBTZXAgMjAwMzoKLSAgTW92ZSBtb3N0IG9mIHRoZSB0aW1lciBpbnRlcnJ1cHQgcmVsYXRlZCBQUEMgY29kZSB0byBwcGNfbGliL2ludGVycnVwdHMuYwotCi0qIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDE3IFNlcCAyMDAzOgotICBCcmluZyBBUk0gbWVtb3J5IGxheW91dCBpbiBzeW5jIHdpdGggdGhlIGRvY3VtZW50YXRpb246Ci0gIHN0YWNrIGFuZCBtYWxsb2MtaGVhcCBhcmUgbm93IGxvY2F0ZWQgX2JlbG93XyB0aGUgVS1Cb290IGNvZGUKLQotKiBBY2NlbGVyYXRlIGJvb3Rpbmcgb24gVFJBQiBib2FyZDogcmVhZCBhbmQgY2hlY2sgIGF1dG91cGRhdGUJaW1hZ2UKLSAgaGVhZGVycyBmaXJzdCBpbnN0ZWFkIG9mIGFsd2F5cyByZWFkaW5nIHRoZSB3aG9sZSBpbWFnZXMuCi0KLSogRml4IHR5cGUgaW4gTVBDNVhYWCBjb2RlIChwb2ludGVkIG91dCBieSBWaWN0b3IgV3JlbikKLQotKiBFbmFibGVkIHBhc3N3b3JkIGNoZWNrIG9uIFJNVSBib2FyZAotCi0qIEZpeCBjb25maWd1cmF0aW9uIHByb2JsZW0gd2l0aCBJY2VDdWJlIGluIExPV0JPT1QgY29uZmlndXJhdGlvbjoKLSAgZW52cmlvbm1lbnQgZ290IGVtYmVkZGVkLCBjb3JydXB0aW5nIHRoZSBpbWFnZSBsYXlvdXQuCi0KLSogRml4IE5FQyBkaXNwbGF5IG5hbWVzIChpdCdzIDY0NDAgW2ZvciA2NDB4NDgwXSwgbm90IDY2NDApLgotCi0qIEFkZGVkIEJNUzIwMDMgYm9hcmQKLSAgYWRkIHN1cHBvcnQgZm9yIE5FQyBOTDY0NDhCQzMzLTU0LiAxMC40IiwgNjQweDQ4MCBURlQgZGlzcGxheQotCi0qIEZpeCBmbGFzaCBkcml2ZXIgZm9yIFRSQUIgYm9hcmQgKG11c3QgdXNlIFVubG9jayBCeXBhc3MgUmVzZXQKLSAgY29tbWFuZCB0byBleGl0IFVubG9jayBCeXBhc3MgTW9kZSk7IGFkanVzdCB0aW1pbmdzIGZvciBmbGFzaCwgU1JBTQotICBhbmQgQ1BMRAotCi0qIFVzZSAiLWZQSUMiIGluc3RlYWQgb2YgIi1tcmVsb2NhdGFibGUiIHRvIHByZXZlbnQgcHJvYmxlbXMgd2l0aAotICByZWNlbnQgdG9vbHMKLQotKiBBZGQgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIHRvICdpbWxzJyBjb21tYW5kCi0KLSogQWRkIGJkX2luZm8gZmllbGRzIG5lZWRlZCBmb3IgNHh4IExpbnV4IEkyQyBkcml2ZXIKLQotKiBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCA0IE5vdi4gMjAwMzoKLSAgRml4IGVycm9yIGluIGNtZF92ZmQuYyAoVFJBQiBib2FyZDogInZmZCAvMSIgc2hvd3Mgbm93IG9ubHkgb25lIEJpdG1hcCkKLQotKiBQcmludCB1c2VkIG5ldHdvcmsgaW50ZXJmYWNlIHdoZW4gQ09ORklHX05FVF9NVUxUSSBpcyBzZXQKLQotKiBQYXRjaCBieSBCZXJuaGFyZCBLdWhuLCAyOCBPY3QgMjAwMzoKLSAgQWRkIGxvdyBib290IHN1cHBvcnQgZm9yIE1QQzUyMDAKLQotKiBGaXggcHJvYmxlbSB3aXRoIGR1YWwgUENNQ0lBIHN1cHBvcnQgKE5TQ1UpCi0KLSogRml4IE1QQzUyMDAgSTJDIGluaXRpYWxpemF0aW9uIGZ1bmN0aW9uCi0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNoYW5nZXMgZm9yIFUtQm9vdCAxLjAuMDoKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKiBGaXggcGFyYW1ldGVyIHBhc3NpbmcgdG8gc3RhbmRhbG9uZSBpbWFnZXMgd2l0aCBib290bSBjb21tYW5kCi0KLSogUGF0Y2ggYnkgS3lsZSBIYXJyaXMsIDMwIE9jdCAyMDAzOgotICBGaXggYnVpbGQgZXJyb3JzIGZvciBpeGRwNDI1IGJvYXJkCi0KLSogUGF0Y2ggYnkgRGF2aWQgTS4gSG9ybiwgMjkgT2N0IDIwMDM6Ci0gIEZpeGVzIHRvIGJ1aWxkIHVuZGVyIENZR1dJTgotCi0qIEdldCBJY2VDdWJlIE1HVDUxMDAgd29ya2luZyAoYWdhaW4pCi0KLSogRml4IHByb2JsZW1zIGluIG1lbW9yeSB0ZXN0IG9uIHNvbWUgYm9hcmRzICh3aGljaCB3YXMgbm90Ci0gIG5vbi1kZXN0cnVjdGl2ZSBhcyBpbnRlbmRlZCkKLQotKiBQYXRjaCBieSBHYXJ5IEplbm5lam9obiwgMjggT2N0IDIwMDM6Ci0gIENoYW5nZSBmcy9mYXQvZmF0LmMgdG8gcHV0IEkvTyBidWZmZXJzIGluIEJTUyBpbnN0ZWFkIG9uIHRoZSBzdGFjawotICB0byBwcmV2ZW50IHN0YWNrIG92ZXJmbG93IG9uIEFSTSBzeXN0ZW1zCi0KLSogUGF0Y2ggYnkgU3RlcGhhbiBMaW56LCAyOCBPY3QgMjAwMzoKLSAgZml4IGluaXQgc2VxdWVuY2UgZXJyb3IgZm9yIE5JT1MgcG9ydAotCi0qIEFsbG93IGxvd2VyY2FzZSBzcGVsbGluZyBmb3IgSWNlQ3ViZV81MjAwOyBzdXBwb3J0IE1QQzUyMDBMSVRFIG5hbWUKLQotKiBBZGQgQ09ORklHX1ZFUlNJT05fVkFSSUFCTEUgdG8gVFJBQiBjb25maWd1cmF0aW9uCi0KLSogUGF0Y2ggYnkgWGlhbyBYaWFuZ2h1YSwgMjMgT2N0IDIwMDM6Ci0gIHNtYWxsIHBhdGNoIGZvciBtcGM4NXh4Ci0KLSogRml4IHNtYWxsIHByb2JsZW0gaW4gTVBDNTIwMCBJMkMgZHJpdmVyCi0KLSogRml4IEZDQzMgc3VwcG9ydCBvbiBBVEMgYm9hcmQKLQotKiBDb3JyZWN0IGhlYWRlciBwcmludGluZyBmb3IgbXVsdGktaW1hZ2UgZmlsZXMgaW4gZG9fYm9vdG0oKQotCi0qIE1ha2UgQ09ORklHX1NJTEVOVF9DT05TT0xFIHdvcmsgd2l0aCBDT05GSUdfQVVUT0JPT1RfS0VZRUQKLQotKiBGaXggUENJIHByb2JsZW1zIG9uIFBQQ2hhbWVsZW9uIGJvYXJkCi0KLSogUGF0Y2ggYnkgU3RldmVuIFNjaG9seiwgMTggT2N0IDIwMDM6Ci0gIEZpeCBBVDkxUk05MjAwIGV0aGVybmV0IGRyaXZlcgotCi0qIFBhdGNoIGJ5IE55ZSBMaXUsIDE3IE9jdCAyMDAzOgotICBGaXggdHlwbyBpbiBpbmNsdWRlL21wYzh4eC5oCi0KLSogUGF0Y2ggYnkgUmljaGFyZCBXb29kcnVmZiwgMTYgT2N0IDAzOgotICBGaXhlcyBmb3IgY3B1L2FybTkyNS9pbnRlcnJ1cHQuYwotICAtIEluaXRpYWxpemUgdGltZXN0YW1wICYgbGFzdGRlYyB2YXJzLgotICAtIGZpeCB0aW1lc3RhbXAgb3ZlcmZsb3dzLgotICAtIGZpeCBsYXN0ZGVjIG92ZXJmbG93LgotICAtIHNtYXJ0ZXIgbm9ybWFsaXphdGlvbiB0byBhbGxvdyB1ZGVsYXkoKSBiZWxvdyAxbXMgdG8gd29yay4KLQotKiBQYXRjaCBieSBTY290dCBNY051dHQsIDE2IE9jdAotICBhZGQgbmV0d29ya2luZyBzdXBwb3J0IGZvciB0aGUgQWx0ZXJhIE5pb3MgRGV2ZWxvcG1lbnQgS2l0LAotICBDeWNsb25lIEVkaXRpb24gKERLLTFDMjApCi0KLSogUGF0Y2ggYnkgSm9uIERpZWtlbWEsIDE0IE9jdCAyMDAzOgotICBhZGQgaGludCBhYm91dCBkb2MvUkVBRE1FLnNpbGVudCB0byBSRUFETUUgZmlsZQotCi0qIEFkZCBDb21wYWN0Rmxhc2ggc3VwcG9ydCBmb3IgTlNDVQotCi0qIEZpeCBQQ0kgcHJvYmxlbXMgb24gUFBDaGFtZWxlb25FVkIKLQotKiBUUkFCIGF1dG8tdXBkYXRlOiBCYXNlIGRlY2lzaW9uIGlmIHdlIGhhdmUgdG8gc3RyaXAgdGhlIGltYWdlCi0gIGhlYWRlciBvbiBpbWFnZSB0eXBlIGFzIGVuY29kZWQgaW4gdGhlIGhlYWRlcgotICAoaW5jbHVkZSBpbWFnZSB0eXBlIHBhdGNoIGJ5IE1hcnRpbiBLcmF1c2UsIDE3IE9jdCAyMDAzKQotCi0qIFBhdGNoZXMgYnkgWGlhbmdodWEgWGlhbywgMTUgT2N0IDIwMDM6Ci0KLSAgLSBBZGRlZCBNb3Rvcm9sYSBDUFUgODU0MC84NTYwIHN1cHBvcnQgKGNwdS84NXh4KQotICAtIEFkZGVkIE1vdG9yb2xhIE1QQzg1NDBBRFMgYm9hcmQgc3VwcG9ydCAoYm9hcmQvbXBjODU0MGFkcykKLSAgLSBBZGRlZCBNb3Rvcm9sYSBNUEM4NTYwQURTIGJvYXJkIHN1cHBvcnQgKGJvYXJkL21wYzg1NjBhZHMpCi0KLSogRml4IGZsYXNoIHRpbWluZ3Mgb24gVFJBQiBib2FyZAotCi0qIE1ha2Ugc3VyZSBIVVNIIGlzIGluaXRpYWxpemVkIGZvciBydW5uaW5nIGF1dG8tdXBkYXRlIHNjcmlwdHMKLQotKiBNYWtlIDUyMDAgcmVzZXQgY29tbWFuZCBfcmVhbGx5XyByZXNldCB0aGUgYm9hcmQsIHdpdGhvdXQgcnVubmluZwotICBhbnkgb3RoZXIgY29kZSBhZnRlciBpdAotCi0qIEZpeCBlcnJvcnMgd2l0aCBmbGFzaCBlcmFzZSB3aGVuIHJhbmdlIHNwYW5zCWFjcm9zcyBiYW5rcwotICB0aGF0IGFyZSBtYXBwZWQgaW4gcmV2ZXJzZSBvcmRlcgotCi0qIEZpeCBmbGFzaCBtYXBwaW5nIGFuZCBkaXNwbGF5IG9uIFAzRzQgYm9hcmQKLQotKiBQYXRjaCBieSBLeWxlIEhhcnJpcywgMTUgSnVsIDIwMDM6Ci0gIC0gYWRkIHN1cHBvcnQgZm9yIEludGVsIElYUDQyNSBDUFUKLSAgLSBhZGQgc3VwcG9ydCBmb3IgSVhEUDQyNSBldmFsIGJvYXJkCi0KLSogQWRkZWQgY29uZmlnIG9wdGlvbiBDT05GSUdfU0lMRU5UX0NPTlNPTEUuICBTZWUgZG9jL1JFQURNRS5zaWxlbnQKLSAgZm9yIG1vcmUgaW5mb3JtYXRpb24KLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAxMCBPY3QgMjAwMwotICAtIEFkZCBzdXBwb3J0IGZvciBBbHRlcmEgRlBHQSBBQ0VYMUsKLQotKiBQYXRjaGVzIGJ5IFRob21hcyBMYW5nZSwgMDkgT2N0IDIwMDM6Ci0gIC0gZml4IGNtZF9pZGUuYyBmb3Igbm9uIHBwYyBib2FyZHMgKHJlYWQvd3JpdGUgZnVuY3Rpb25zIGRpZCBub3QKLSAgICBhZGQgQVRBIGJhc2UgYWRkcmVzcykKLSAgLSBmaXggZm9yIHNoYW5ub24gYm9hcmQKLSAgLSAjaWZkZWYgQ09ORklHX0lERV84eHhfRElSRUNUIHNvbWUgb3RoZXJ3aXNlIHVudXNlZCBjb2RlCi0gIC0gRW5kaWFuIHN3YXAgQVRBIGlkZW50aXR5IGZvciBhbGwgYmlnIGVuZGlhbiBDUFVzLCBub3QganVzdCBQUEMKLSAgLSBNSVBTIG9ubHk6IE5ldyBvcHRpb24gQ09ORklHX01FTVNJWkVfSU5fQllURVMgZm9yIHBhc3NpbmcgbWVtc2l6ZQotICAgIGFyZ3MgdG8gbGludXgKLSAgLSBhZGQgc3VwcG9ydCBmb3IgZGJhdTF4MDAgYm9hcmQgKE1JUFMzMikKLQotKiBQYXRjaCBieSBTYW5nbW9vbiBLaW0sIDA3IE9jdCAyMDAzOgotICBhZGQgc3VwcG9ydCBmb3IgZGVicmlzIGJvYXJkCi0KLSogUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMDkgT2N0IDIwMDM6Ci0gIEZpeGVzIGZvciBUUkFCIGJvYXJkCi0gIC0gL2JvYXJkL3RyYWIvcnM0ODUuYzogY29ycmVjdCBiYXVkcmF0ZQotICAtIC9ib2FyZC90cmFiL2NtZF90cmFiLmM6IGJ1ZyBmaXggZm9yIHByb2JsZW0gd2l0aCB0aW1lciBvdmVyZmxvdyBpbgotICAgIHVkZWxheSgpOyBmaXggc29tZSB0aW1pbmcgcHJvYmxlbXMgd2l0aCBhZGMgY29udHJvbGxlcgotICAtIC9ib2FyZC90cmFiL3RyYWJfZmt0LmM6IGFkZCBuZXcgY29tbWFuZHM6IGdhaW4sIGVlcHJvbSBhbmQgcG93ZXI7Ci0gICAgbW9kaWZ5IGNvbW1hbmRzOiB0b3VjaCBhbmQgYnV6emVyCi0KLSogRGlzYWJsZSBDT05GSUdfU1VQUE9SVF9WRkFUIHdoZW4gdXNlZCB3aXRoIENPTkZJR19BVVRPX1VQREFURQotICAocXVpY2sgJiBkaXJ0eSB3b3JrYXJvdW5kIGZvciByb2d1ZSBwb2ludGVyIHByb2JsZW0gaW4gZ2V0X3ZmYXRuYW1lKCkpOwotICBVc2UgZGlyZWN0IGZ1bmN0aW9uIGNhbGxzIGZvciBhdXRvX3VwZGF0ZSBpbnN0ZWFkIG9mIGh1c2ggY29tbWFuZHMKLQotKiBQYXRjaCBieSBTY290dCBNY051dHQsIDA0IE9jdCAyMDAzOgotICAtIGFkZCBzdXBwb3J0IGZvciBBbHRlcmEgTmlvcy0zMiBDUFUKLSAgLSBhZGQgc3VwcG9ydCBmb3IgTmlvcyBDeWNsb25lIERldmVsb3BtZW50IEtpdCAoREstMUMyMCkKLQotKiBQYXRjaCBieSBTdGV2ZW4gU2Nob2x6LCAyOSBTZXAgMjAwMzoKLSAgLSBBIHNlY29uZCBwYXJhbWV0ZXIgZm9yIGJvb3RtIG92ZXJ3cml0ZXMgdGhlIGxvYWQgYWRkcmVzcyBmb3IKLSAgICAiU3RhbmRhbG9uZSBBcHBsaWNhdGlvbiIgaW1hZ2VzLgotICAtIGJvb3RtIHNldHMgZW52aXJvbm1lbnQgdmFyaWFibGUgImZpbGVzaXplIiB0byB0aGUgcmVzdWx0aW5nCi0gICAgKHVuY29tcHJlc3NlZCkgZGF0YSBsZW5ndGggZm9yICJTdGFuZGFsb25lIEFwcGxpY2F0aW9uIiBpbWFnZXMKLSAgICB3aGVuIGF1dG9zdGFydCBpcyBzZXQgdG8gIm5vIi4gTm93IHlvdSBjYW4gZG8gc29tZXRoaW5nIGxpa2UKLQlpZiBib290bSAkZnBnYWRhdGEgJHNvbWVfZnJlZV9yYW0gOyB0aGVuCi0JCWZwZ2EgbG9hZCAwICRzb21lX2ZyZWVfcmFtICRmaWxlc2l6ZQotCWZpCi0KLSogUGF0Y2ggYnkgRGVuaXMgUGV0ZXIsIDI1IFNlcHQgMjAwMzoKLSAgYWRkIHN1cHBvcnQgZm9yIHRoZSBNSVA0MDUgUmV2LiBDIGJvYXJkCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMjUgU2VwIDIwMDM6Ci0gIGFkZCBzdXBwb3J0IGZvciBaZXBoeXIgRW5naW5lZXJpbmcgWlBDLjE5MDAgYm9hcmQKLQotKiBQYXRjaCBieSBBbmRlcnMgTGFyc2VuLCAyMyBTZXAgMjAwMzoKLSAgYWRkIENNRF9QT1JUSU8gdG8gQ0ZHX0NNRF9OT05TVEQgKGNvbW1hbmRzIGluIHF1ZXN0aW9uIGFyZSBvbmx5Ci0gIGltcGxlbWVudGVkIGZvciB0aGUgeDg2IGFyY2hpdGVjdHVyZSkKLQotKiBQYXRjaCBieSBTYW5nbW9vbiBLaW0sIDIzIFNlcCAyMDAzOgotICBmaXggcGxsX3BjaV90b19tZW1fbXVsdGlwbGllciB0YWJsZSBmb3IgTVBDODI0NQotCi0qIFBhdGNoIGJ5IEFuZGVycyBMYXJzZW4sIDIyIFNlcCAyMDAzOgotICBlbmFibGUgdGltZWQgYXV0b2Jvb3Qgb24gUFhBCi0KLSogUGF0Y2ggYnkgRGF2aWQgTfxsbGVyLCAyMiBTZXAgMjAwMzoKLSAgLSBhZGQgJChDRkxBR1MpIHRvICItcHJpbnQtbGliZ2NjLWZpbGVuYW1lIiBzbyBjb21waWxlciBkcml2ZXIKLSAgICByZXR1cm5zIGNvcnJlY3QgbGliZ2NjIGZpbGUgcGF0aAotICAtICJsYXRlbmN5IiByZWR1Y3Rpb24gb2YgYnVzeS1sb29wIHdhaXRpbmcgdG8gaW1wcm92ZSAiVS1Cb290IiBib290Ci0gICAgdGltZSBvbiBzM2MyNHgwIHN5c3RlbXMKLQotKiBQYXRjaCBieSBKb24gRGlla2VtYSwgMTkgU2VwIDIwMDM6Ci0gIC0gQWRkIENGR19GQVVMVF9FQ0hPX0xJTktfRE9XTiBvcHRpb24gdG8gZWNobyB0aGUgaW52ZXJ0ZWQgRXRoZXJuZXQKLSAgICBsaW5rIHN0YXRlIHRvIHRoZSBmYXVsdCBMRUQuCi0gIC0gSW4gTmV0TG9vcCwgbWFrZSB0aGUgRmF1bHQgTEVEIHJlZmxlY3QgdGhlIGxpbmsgc3RhdHVzLiAgVGhlIGxpbmsKLSAgICBzdGF0dXMgZ2V0cyB1cGRhdGVkIG9uIGVudHJ5LCBhbmQgb24gdGltZW91dHMuCi0KLSogUGF0Y2ggYnkgQW5kZXJzIExhcnNlbiwgMTggU2VwIDIwMDM6Ci0gIGFsbG93IG1raW1hZ2UgdG8gYnVpbGQgYW5kIHJ1biBvbiBDeWd3aW4taG9zdGVkIHN5c3RlbXMKLQotKiBQYXRjaCBieSBGcmFuayBN/GxsZXIsIDE4IFNlcCAyMDAzOgotICB1c2UgYmlfaW50ZnJlcSBpbnN0ZWFkIG9mIGJpX2J1c2ZyZXEgdG8gY29tcHV0ZSBmZWNfbWlpX3NwZWVkIGluCi0gIGNwdS9tcGM4eHgvZmVjLmMKLQotKiBQYXRjaCBieSBQYW50ZWxpcyBBbnRvbmlvdSwgMTYgU2VwIDIwMDM6Ci0gIGFkZCB0b29sIHRvIGNvbXB1dGUgZmlsZWRzIGluIHRoZSBQTFBSQ1IgcmVnaXN0ZXIgZm9yIE1QQzg2eAotCi0qIFVzZSBJSF9UWVBFX0ZJTEVTWVNURU0gZm9yIFRSQUIgImRpc2siIGltYWdlcy4KLQotKiBGaXggYnVpbGQgcHJvYmxlbXMgdW5kZXIgRnJlZUJTRAotCi0qIEFkZCBnZW5lcmljIGZpbGVzeXN0ZW0gaW1hZ2UgdHlwZQotCi0qIE1ha2UgZmF0bG9hZCBzZXQgZmlsZXNpemUgZW52aXJvbm1lbnQgdmFyaWFibGUKLQotKiBlbmFibGUgYmFzaWMgLyBtZWRpdW0gLyBoaWdoLWVuZCBjb25maWd1cmF0aW9ucyBmb3IgUFBDaGFtZWxlb25FVkIKLSAgYm9hcmQ7IGZpeCBOQU5EIGNvZGUKLQotKiBlbmFibGUgVEZUUCBjbGllbnQgY29kZSB0byBzcGVjaWZ5IHRvIHRoZSBzZXJ2ZXIgdGhlIGRlc2lyZWQKLSAgdGltZW91dCB2YWx1ZSAoc2VlIFJGQy0yMzQ5KQotCi0qIEltcHJvdmUgU0RSQU0gc2V0dXAgZm9yIFRSQUIgYm9hcmQKLQotKiBTdXBwcmVzcyBhbGwgb3V0cHV0IHdpdGggc3BsYXNoc2NyZWVuIGNvbmZpZ3VyZWQgb25seSBpZiAic3BsYXNoaW1hZ2UiCi0gIGlzIHNldAotCi0qIEZpeCBwcm9ibGVtcyB3aXRoIEkyQyBzdXBwb3J0IGZvciBtcGM1MjAwCi0KLSogQWRhcHQgVFJBQiBjb25maWd1cmF0aW9uIGFuZCBhdXRvX3VwZGF0ZSB0byBuZXcgbWVtb3J5IGxheW91dAotCi0qIEFkZCBjb25maWd1cmF0aW9uIGZvciB3dGsgYm9hcmQKLQotKiBBZGQgc3VwcG9ydCBmb3IgdGhlIFNoYXJwIExRMDY1VDlEUjUxVSBMQ0QgZGlzcGxheQotCi0qIFBhdGNoIGJ5IFJ1bmUgVG9yZ2Vyc2VuLCAxNyBTZXAgMjAwMzoKLSAgLSBGaXhlcyBmb3IgTVBDODI2NiBkZWZhdWx0IGNvbmZpZwotICAtIEFsbG93IGV0aF9sb29wYmFja190ZXN0KCkgb24gODI2MCB0byB1c2UgYSBzdWJzZXQgb2YgdGhlIEZDQydzCi0KLSogUGF0Y2hlcyBieSBKb24gRGlla2VtYSwgMTcgU2VwIDIwMDM6Ci0gIC0gdXBkYXRlIFJFQURNRSAoU0hPV19CT09UX1BST0dSRVNTIHZhbHVlcyBmb3IgY21kX25hbmQuYyBhbmQKLSAgICBlbnZfY29tbW9uLmMpCi0gIC0gc2JjODI2MCB0d2Vha3MKLSAgLSBhZGp1c3QgImhlbHAiIG91dHB1dAotCi0qIFBhdGNoZXMgYnkgQW5kZXJzIExhcnNlbiwgMTcgU2VwIDIwMDM6Ci0gIC0gZml4IHNwZWxsaW5nIGVycm9ycwotICAtIHNldCBHRF9GTEdfREVWSU5JVCBmbGFnIG9ubHkgYWZ0ZXIgZGV2aWNlIGZ1bmN0aW9uIHBvaW50ZXJzCi0gICAgYXJlIHZhbGlkCi0gIC0gQWxsb3cgQ0ZHX0FMVF9NRU1URVNUIG9uIHN5c3RlbXMgd2hlcmUgYWRkcmVzcyB6ZXJvIGlzbid0Ci0gICAgd3JpdGVhYmxlCi0gIC0gZW5hYmxlIDMucmQgVUFSVCAoU1QtVUFSVCkgb24gUFhBKFhTY2FsZSkgQ1BVcwotICAtIHRyaWdnZXIgd2F0Y2hkb2cgd2hpbGUgd2FpdGluZyBpbiBzZXJpYWwgZHJpdmVyCi0KLSogQWRkIGF1dG8tdXBkYXRlIGNvZGUgZm9yIFRSQUIgYm9hcmQgdXNpbmcgVVNCIG1lbW9yeSBzdGlja3MsCi0gIHN1cHBvcnQgbmV3IGNvbmZpZ3VyYXRpb24gd2l0aCBtb3JlIG1lbW9yeQotCi0qIGRpc2FibGUgTVBDNTIwMCBidXMgcGlwZWxpbmluZyBhcyB3b3JrYXJvdW5kIGZvciBidXMgY29udGVudGlvbgotCi0qIE1vZGlmeSBYTEIgYXJiaXRlciBwcmlvcml0aWVzIG9uIE1QQzUyMDAgc28gYWxsIGRldmljZXMgdXNlIHNhbWUKLSAgcHJpb3JpdHk7IGNvbmZpZ3VyZSBjcml0aWNhbCBpbnRlcnJ1cHRzIHRvIGJlIGhhbmRsZWQgbGlrZSBleHRlcm5hbAotICBpbnRlcnJ1cHRzCi0KLSogTWFrZSBJUEIgY2xvY2sgb24gTUdUNTEwMC9NUEM1MjAwIGNvbmZpZ3VyYWJsZSBpbiBib2FyZCBjb25maWcgZmlsZTsKLSAgZ28gYmFjayB0byA2NiBNSHogZm9yIHN0YWJpbGl0eQotCi0qIFBhdGNoZXMgYnkgSm9uIERpZWtlbWEsIDE1IFNlcCAyMDAzOgotICAtIGFkZCBkZXNjcmlwdGlvbiBmb3IgbWlzc2luZyBDRkdfQ01EXyogZW50cmllcyBpbiB0aGUgUkVBRE1FIGZpbGUKLSAgLSBzYWNzbmcgdHdlYWtzCi0KLSogUGF0Y2ggYnkgR2xlYiBOYXRhcG92LCAxNCBTZXAgMjAwMzoKLSAgZW5hYmxlIHdhdGNoZG9nIHN1cHBvcnQgZm9yIGFsbCBNUEM4MjR4IGJvYXJkcyB0aGF0IGhhdmUgYSB3YXRjaGRvZwotCi0qIE9uIE1QQzUyMDAsIHJlc3RyaWN0IEZFQyB0byBhIG1heGltdW0gb2YgMTAgTWJwcyB0byB3b3JrIGFyb3VuZCB0aGUKLSAgIk5vbi1vY3RldCBBbGlnbmVkIEZyYW1lIiBlcnJvcnMgd2Ugc2VlIGF0IDEwMCBNYnBzCi0KLSogUGF0Y2ggYnkgU2hhcmFkIEd1cHRhLCAxNCBTZXAgMjAwMzoKLSAgZml4IFNQUiBudW1iZXJzIGZvciB1cHBlciBCQVQgcmVnaXN0ZXIgKFtJRF1CQVRbNC03XVtVTF0pCi0KLSogUGF0Y2ggYnkgbGxhbmRyZSwgMTEgU2VwIDIwMDM6Ci0gIHVwZGF0ZSBjb25maWd1cmF0aW9uIGZvciBQUENoYW1lbGVvbkVWQiBib2FyZAotCi0qIFBhdGNoIGJ5IERhdmlkIE38bGxlciwgMTMgU2VwIDIwMDM6Ci0gIHZhcmlvdXMgY2hhbmdlcyB0byBWQ01BOSBib2FyZCBzcGVjaWZpYyBmaWxlcwotCi0qIEFkZCBJMkMgc3VwcG9ydCBmb3IgTUdUNTEwMCAvIE1QQzUyMDAKLQotKiBQYXRjaCBieSBSdW5lIFRvcmdlcnNlbiwgMTEgU2VwIDIwMDM6Ci0gIENoYW5nZWQgZGVmYXVsdCBtZW1vcnkgb3B0aW9uIG9uIE1QQzgyNjZBRFMgdG8gTk9UIGJlIFBhZ2UgQmFzZWQKLSAgSW50ZXJsZWF2ZSwgc2luY2UgdGhpcyBkb2Vzbid0IHdvcmsgdmVyeSB3ZWxsIHdpdGggdGhlIHN0YW5kYXJkCi0gIDE2TUIgRElNTQotCi0qIFBhdGNoIGJ5IEdlb3JnZSBHLiBEYXZpcywgMTIgU2VwIDIwMDM6Ci0gIGZpeCBNYWtlZmlsZSBzZXR0aW5ncyBmb3Igc2s5OCBkcml2ZXIKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDEyIFNlcCAyMDAzOgotICAtIG5ldyBib2FyZHMgYWRkZWQ6IERQNDA1LCBIVUI0MDUsIFBMVTQwNSwgVk9INDA1Ci0gIC0gc29tZSBlc2QgYm9hcmRzIHVwZGF0ZWQKLSAgLSBjcHUvcHBjNHh4L3NkcmFtLmM6IGRpc2FibGUgbWVtb3J5IGNvbnRyb2xsZXIgYmVmb3JlIHNldHRpbmcKLSAgICBmaXJzdCB2YWx1ZXMKLSAgLSBjcHUvcHBjNHh4LzQwNV9wY2kuYzogc2V0IHZlbmRvciBpZCBvbiBQUEM0MDVFUCBzeXN0ZW1zCi0KLSogUGF0Y2ggYnkgTWFydGluIEtyYXVzZSwgMTEgU2VwIDIwMDM6Ci0gIGFkZCBidXJuLWluIHRlc3RzIGZvciBUUkFCIGJvYXJkCi0KLSogRW5hYmxlIGluc3RydWN0aW9uIGNhY2hlIG9uIE1QQzUyMDAgYm9hcmQKLQotKiBQYXRjaCBieSBEZW5pcyBQZXRlciwgMTEgU2VwIDIwMDM6Ci0gIC0gZml4IFVTQiBkYXRhIHBvaW50ZXIgYXNzaWdubWVudCBmb3IgYnVsayBvbmx5IHRyYW5zZmVyLgotICAtIHByZXZlbnQgdG8gZGlzcGxheSBlcmFzZWQgZGlyZWN0b3JpZXMgaW4gRkFUIGZpbGVzeXN0ZW0uCi0KLSogQ2hhbmdlIG91dHB1dCBmb3JtYXQgZm9yIE5BTkQgZmxhc2ggLSBtYWtlIGl0IGxvb2sgbGlrZSBmb3Igb3RoZXIKLSAgbWVtb3J5LCB0b28KLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDAuNC44OgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIEFkZCBJMkMgYW5kIFJUQyBzdXBwb3J0IGZvciBSTVUgYm9hcmQKLQotKiBQYXRjaGVzIGJ5IERlbmlzIFBldGVyLCA5IFNlcCAyMDAzOgotICBhZGQgRkFUIHN1cHBvcnQgZm9yIElERSwgU0NTSSBhbmQgVVNCCi0KLSogUGF0Y2hlcyBieSBHbGViIE5hdGFwb3YsIDIgU2VwIDIwMDM6Ci0gIC0gY2xlYW51cCBvZiBQT1NUIGNvZGUgZm9yIHVuc3VwcG9ydGVkIGFyY2hpdGVjdHVyZXMKLSAgLSBNUEM4MjR4IGxvY2tzIHdheTAgb2YgZGF0YSBjYWNoZSBmb3IgdXNlIGFzIGluaXRpYWwgUkFNOwotICAgIHRoaXMgcGF0Y2ggdW5sb2NrcyBpdCBhZnRlciByZWxvY2F0aW9uIHRvIFJBTSBhbmQgaW52YWxpZGF0ZXMKLSAgICB0aGUgbG9ja2VkIGVudHJpZXMuCi0KLSogUGF0Y2ggYnkgR2xlYiBOYXRhcG92LCAzMCBBdWcgMjAwMzoKLSAgbmV3IEkyQyBkcml2ZXIgZm9yIG1wYzEwNyBicmlkZ2UuIE5vdyB3b3JrcyBmcm9tIGZsYXNoLgotCi0qIFBhdGNoIGJ5IERhdmUgRWxsaXMsIDExIEF1ZyAyMDAzOgotICAtIEpGRlMyOiBmaXggdHlwbyBpbiBjb21tb24vY21kX2pmZnMyLmMKLSAgLSBKRkZTMjogZml4IENGR19KRkZTMl9TT1JUX0ZSQUdNRU5UUyBvcHRpb24KLSAgLSBKRkZTMjogcmVtb3ZlIG5vZGUgdmVyc2lvbiAwIHdhcm5pbmcKLSAgLSBKRkZTMjogYWNjZXB0IEpGRlMyIFBBRERJTkcgbm9kZXMKLSAgLSBTWE5JODU1VDogYWRkIEFNMjlMVjgwMCBzdXBwb3J0Ci0gIC0gU1hOSTg1NVQ6IG1vdmUgZW52aXJvbm1lbnQgZnJvbSBFRVBST00gdG8gZmxhc2gKLSAgLSBTWE5JODU1VDogYm9vdCBmcm9tIEpGRlMyIGluIE5PUiBvciBOQU5EIGZsYXNoCi0KLSogUGF0Y2ggYnkgQmlsbCBIYXJnZW4sIDExIEF1ZyAyMDAzOgotICBmaXhlcyBmb3IgSTJDIG9uIE1QQzgyNDAKLSAgLSBmaXggaTJjX3dyaXRlIHJvdXRpbmUKLSAgLSBmaXggaXByb2JlIGNvbW1hbmQKLSAgLSBlbGltaW5hdGVzIHVzZSBvZiBnbG9iYWwgdmFyaWFibGVzLCBwbHVzIGRlYWQgY29kZSwgY2xlYW51cC4KLQotKiBBZGQgc3VwcG9ydCBmb3IgVVNCIE1hc3MgU3RvcmFnZSBEZXZpY2VzIChCQkIpCi0gICh0ZXN0ZWQgd2l0aCBVU0IgbWVtb3J5IHN0aWNrcyBvbmx5KQotCi0qIEF2b2lkIGZsaWNrZXIgb24gVFJBQidzIFZGRAotCi0qIEFkZCBzdXBwb3J0IGZvciBTSzk4eHggZHJpdmVyCi0KLSogQWRkIFBDSSBzdXBwb3J0IGZvciBTTDgyNDUgYm9hcmQKLQotKiBTdXBwb3J0IEljZUN1YmUgYm9hcmQgY29uZmlndXJhdGlvbnMgd2l0aCAxIHggQU1EIEFNMjlMVjA2NSAoOCBNQikKLSAgb3IgMSB4IEFNMjlMVjY1MiAodHdvIExWMDY1IGluIG9uZSBjaGlwID0gMTYgTUIpOwotICBSdW4gSVBCIGF0IDEzMyBNaHo7IGFkanVzdCB0aGUgTUlJIGNsb2NrIGZyZXF1ZW5jeSBhY2NvcmRpbmdseQotCi0qIFNldCBCUkdfQ0xLIG9uIFBNODI1LzgyNiB0byA2NE1IeiAoVkNPX09VVCAvIDQsIGluc3RlYWQgb2YgMTYJIE1IeikKLSAgdG8gYWxsb3cgZm9yIG1vcmUgYWNjdXJhdGUgYmF1ZHJhdGUgc2V0dGluZ3MKLSAgKGVycm9yIG5vdyAwLjclIGF0IDExNSBrYnBzLCBpbnN0ZWFkIG9mIDMuNSUgYmVmb3JlKQotCi0qIFBhdGNoIGJ5IEFuZHJlYXMgTW9ociwgNCBTZXAgMjAwMzoKLSAgRml4IGEgbG90IG9mIHNwZWxsaW5nIGVycm9ycwotCi0qIEFkZCBzdXBwb3J0IGZvciBQUENoYW1lbGVvbiBFdmFsIEJvYXJkCi0KLSogQWRkIHN1cHBvcnQgZm9yIFAzRzQgYm9hcmQKLQotKiBGaXggcHJvYmxlbSB3aXRoIE1HVDUxMDAgRkVDIGRyaXZlcjogYWRkICJlYXJseSIgTUFDIGFkZHJlc3MKLSAgaW5pdGlhbGl6YXRpb24KLQotKiBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCA3IEF1ZyAyMDAzOgotICBjaGVjayBCQ1NSIHRvIGRldGVjdCBpZiB0aGUgYm9hcmQgaXMgY29uZmlndXJlZCBpbiBQQ0kgbW9kZQotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMC40Ljc6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogUGF0Y2ggYnkgUmFnaHUgS3Jpc2huYXByYXNhZCwgNyBBdWcgMjAwMzoKLSAgYWRkIHN1cHBvcnQgZm9yIEFkZGVyIElJIE1QQzg1MlQgbW9kdWxlCi0KLSogUGF0Y2ggYnkgR2VvcmdlIEcuIERhdmlzLCAxOSBBdWcgMjAwMzoKLSAgZml4IFRJIElubm92YXRvci9PTUFQMTUxMCBwaW4gY29uZmlncwotCi0qIFBhdGNoZXMgYnkgS3NoaXRpaiwgMTggQXVnIDIwMDMKLSAgLSBhZGQgc3VwcG9ydCBmb3IgYXJtOTI2ZWpzIGNwdSBjb3JlCi0gIC0gYWRkIHN1cHBvcnQgZm9yIFRJIE9NQVAgMTYxMCBJbm5vdmF0b3IgQm9hcmQKLQotKiBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAxNCBBdWcgMjAwMzoKLSAgYWRkIHN1cHBvcnQgZm9yIGJ6aXAyIHVuY29tcHJlc3Npb24KLQotKiBBZGQgR0NDIGxpYnJhcnkgdG8gZXhhbXBsZXMvTWFrZWZpbGUgc28gR0NDIHV0aWxpdHkgZnVuY3Rpb25zIHdpbGwKLSAgYmUgcmVzb2x2ZWQsIHRvbwotCi0qIEFkZCBJMkMgYW5kIFJUQyBzdXBwb3J0IGZvciBSTVUgYm9hcmQgdXNpbmcgc29mdHdhcmUgSTJDIGRyaXZlcgotICAoYmVjYXVzZSBvZiBiZXR0ZXIgcmVzcG9uc2UgdG8gaXByb2JlIGNvbW1hbmQpOyBmaXggcHJvYmxlbSB3aXRoCi0gICJyZXNldCIgY29tbWFuZAotCi0qIFBhdGNoIGJ5IE1hdHRoaWFzIEZ1Y2hzLCAyOCBBdWcgMjAwMzoKLSAgQWRkZWQgQ09ORklHX0JPT1RQX0ROUzIgYW5kIENPTkZJR19CT09UUF9TRU5EX0hPU1ROQU1FIHRvCi0gIENPTkZJR19CT09UUF9NQUtTIChzZWUgUkVBRE1FKS4KLQotKiBGaXggSUNVODYyIGVudmlyb25tZW50IHByb2JsZW0KLQotKiBGaXggUkFNIHNpemUgZGV0ZWN0aW9uIGZvciBSTVUgYm9hcmQKLQotKiBJbXBsZW1lbnQgInJlc2V0IiBmb3IgTUdUNTEwMC9NUEM1MjAwIHN5c3RlbXMKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDAuNC42OgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIE1ha2UgRXRoZXJuZXQgYXV0b25lZ290aWF0aW9uIG9uIElOQ0EtSVAgd29yayBmb3IgYWxsIGNsb2NrIHJhdGVzOwotICBhbGxvdyBzZWxlY3Rpb24gb2YgY2xvY2sgZnJlcXVlbmN5IGFzICJtYWtlIiB0YXJnZXQKLQotKiBJbXBsZW1lbnQgbWVtb3J5IGF1dG9zaXppbmcgY29kZSBmb3IgSWNlQ3ViZSBib2FyZHMKLQotKiBDb25maWd1cmUgbmV0d29yayBwb3J0IG9uIElOQ0EtSVAgZm9yIGF1dG9uZWdvdGlhdGlvbgotCi0qIEZpeCBvdmVyZmxvdyBwcm9ibGVtIGluIG5ldHdvcmsgdGltZW91dCBjb2RlCi0KLSogUGF0Y2ggYnkgUmljaGFyZCBXb29kcnVmZiwgOCBBdWcgMjAwMzoKLSAgQWxsb3cgY3JjMzIgdG8gYmUgdXNlZCBhdCBhZGRyZXNzIDB4MDAwIChjcmMzMl9ub19jb21wLCB0b28pLgotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMC40LjU6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogVXBkYXRlIGZvciBUUU0gYm9hcmQgZGVmYXVsdHM6Ci0gIGRpc2FibGUgY2xvY2tzX2luX21oeiwgZW5hYmxlIGJvb3QgY291bnQgbGltaXQKLQotKiBSZW1vdmVkIHRvb2xzL2dkYiBmcm9tICJtYWtlIGFsbCIgdGFyZ2V0LiAgQWRkZWQgbWFrZSB0YXJnZXQgImdkYnRvb2xzIgotICBpbiB0b3BsZXZlbCBkaXJlY3RvcnkgaW5zdGVhZC4gIFJlbW92ZWQgYXN0ZXN0LmMgZnJvbSB0b29scy9nZGIgYmVjYXVzZQotICBpdCBpcyBubyBsb25nZXIgcmVsZXZhbnQuCi0KLSogRml4IFBDSSBzdXBwb3J0IGZvciBNUEM1MjAwIC8gSWNlQ3ViZSBCb2FyZAotCi0qIE1hcCBJU1AxMzYyIFVTQiBPVEcgY29udHJvbGxlciBmb3IgTlNDVSBib2FyZAotCi0qIFBhdGNoIGJ5IEJyYWQgUGFya2VyLCAwMiBBdWcgMjAwMzoKLSAgZml4IHNjNTIwX2NkcCBwcm9ibGVtcwotCi0qIEltcGxlbWVudCBCb290IEN5Y2xlIERldGVjdGlvbiAoUmVxLiAyLjMgb2YgT1NETCBDR0wgUmVxaXJlbWVudHMpCi0KLSogQWxsb3cgZXJhc2UgY29tbWFuZCB0byBjcm9zcyBmbGFzaCBiYW5rIGJvdW5kYXJpZXMKLQotKiBQYXRjaCBieSBTY290dCBNY051dHQsIDIxIEp1bCAyMDAzOgotICBBZGQgc3VwcG9ydCBmb3IgTHludXhXb3JrcyBLZXJuZWwgRG93bmxvYWRhYmxlIEltYWdlcyAoS0RJcykuCi0gIEJvdGggTHlueE9TIGFuZCBCbHVlQ2F0IGxpbnV4IEtESXMgYXJlIHN1cHBvcnRlZC4KLQotKiBQYXRjaCBieSBSaWNoYXJkIFdvb2RydWZmLCAyNSBKdWwgMjAwMzoKLSAgdXNlIG1vcmUgcmVsaWFibGUgcmVzZXQgZm9yIE9NQVAvOTI1VAotCi0qIFBhdGNoIGJ5IE55ZSBMaXUsIDI1IEp1bCAyMDAzOgotICBmaXggdHlwbyBpbiBtcGM4eHguaAotCi0qIFBhdGNoIGJ5IFJpY2hhcmQgV29vZHJ1ZmYsIDI0IEp1bCAyMDAzOgotICBGaXhlcyBmb3IgY21kX25hbmQuYzoKLSAgLSBGaXhlZCBudWxsIGRlcmVmZXJlY2Ugd2hpY2ggY291bGQgcmVzdWx0IGluIGluY29ycmVjdCBFQ0MgdmFsdWVzLgotICAtIEFkZGVkIHN1cHBvcnQgZm9yIGRldmljZXMgd2l0aCBubyBSZWFkeS9CdXN5IHNpZ25hbCBob29rZWQgdXAuCi0gIC0gQWRkZWQgT01BUDE1MTAgcmVhZC93cml0ZSBwcm90ZWN0IGhhbmRsaW5nLgotICAtIEZpeGVkIG5hbmQuaCdzIEVDQ1BPUy4gQSBjb25mbGljdCBleGlzdGVkIHdpdGggUE9TNSBhbmQgYmFkYmxvY2sKLSAgICBmb3Igbm9uLUpGRlMyLgotICAtIFN3aXRjaGVkIGRlZmF1bHQgRUNDIHRvIGJlIEpGRlMyLgotCi0qIEFsbG93IGNyYzMyIHRvIGJlIHVzZWQgYXQgYWRkcmVzcyAweDAwMAotCi0qIFByb3ZpZGUgY29uc2lzdGVudCBpbnRlcmZhY2UgdG8gc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMgdG8gYWNjZXNzCi0gIHRoZSAnZ2xvYmFsX2RhdGEnIHN0cnVjdHVyZQotICBQcm92aWRlIGEgZG9jL1JFQURNRS5zdGFuZGFsb25lIG1vcmUgdXNlZnVsIHRvIHVzZXJzL2RldmVsb3BlcnMuCi0KLSogTWFrZSBJY2VDdWJlIE1HVDUxMDAgRkVDIGRyaXZlciB3b3JrCi0KLSogSW1wbGVtZW50IG5ldyBtZWNoYW5pc20gdG8gZXhwb3J0IFUtQm9vdCdzIGZ1bmN0aW9ucyB0byBzdGFuZGFsb25lCi0gIGFwcGxpY2F0aW9uczogaW5zdGVhZCBvZiB1c2luZyAoUFBDLXNwZWNpZmljKSBzeXN0ZW0gY2FsbHMgd2Ugbm93Ci0gIHVzZSBhIGp1bXAgdGFibGU7IHBsZWFzZSBzZWUgZG9jL1JFQURNRS5zdGFuZGFsb25lIGZvciBkZXRhaWxzCi0KLSogUGF0Y2ggYnkgRGF2ZSBXZXN0d29vZCwgMjQgSnVsIDIwMDM6Ci0gIGFkZGVkIHN1cHBvcnQgZm9yIFVuaXR5IE9TIChhIHByb3ByaWV0YXJ5IE9TKQotCi0qIFBhdGNoIGJ5IERldGxldiBadW5kZWwsIDIzIEp1bCAyMDAzOgotICBhZGQgImltbHMiIGNvbW1hbmQgdG8gcHJpbnQgZmxhc2ggdGFibGUgb2YgY29udGVudHMKLQotKiBGaXggY29sZCBib290IGRldGVjdGlvbiBmb3IgbG9nIGJ1ZmZlciByZXNldAotCi0qIFJldHVybiBlcnJvciBmb3IgaW52YWxpZCBsZW5ndGggc3BlY2lmaWVycyB3aXRoICJjcC5YIiBldGMuCi0KLSogRml4IHN0YXJ0dXAgcHJvYmxlbSBvbiBNSVBTCi0KLSogQWxsb3cgZm9yIENPTkZJR19TUExBU0hfU0NSRUVOIGV2ZW4gd2hlbiBubyBleHBsaWNpdAotICBiaXRtYXAgc3VwcG9ydCBpcyBjb25maWd1cmVkCi0KLSogUGF0Y2ggYnkgQmlsbCBIYXJnZW4sIDE4IEp1bCAyMDAzOgotICAtIGZpeCBlbmRpbmFuZXNzIHByb2JsZW0gaW4gY3B1L21wYzgyNHgvZHJpdmVycy9pMmMvaTJjMS5jCi0KLSogUGF0Y2ggYnkgRGVuaXMgUGV0ZXIsIDE4IEp1bCAyMDAzOgotICAtIGZpeCBtZW1vcnkgY29uZmlndXJhdGlvbiBmb3IgTUlQNDA1VAotICAtIGZpeCBwcmludG91dCBvZiBiYXVkcmF0ZSBmb3IgImxvYWRiIDxsb2FkYWRkcj4gPGJhdWRyYXRlPiIKLQotKiBDbGVhbnVwIG9mIFRRTTgyeHggY29uZmlndXJhdGlvbnM7IHVzZSAib2ZmaWNpYWwiIGJvYXJkIHR5cGVzCi0gIHRvIG1ha2Ugc2VsZWN0aW9uIGVhc2llci4KLQotKiBQYXRjaCBieSBNYXJ0aW4gS3JhdXNlLCAxNyBKdWwgMjAwMzoKLSAgYWRkIGRlbGF5IHRvIGdldCBJMkMgd29ya2luZyB3aXRoICJpbW0iIGNvbW1hbmQgYW5kIHMzYzI0eDBfaTJjLmMKLQotKiBQYXRjaCBieSBSaWNoYXJkIFdvb2RydWZmLCAxNyBKdWx5IDAzOgotICAtIEZpeGVkIGJ1ZyBpbiBPTUFQMTUxMCBiYXVkIHJhdGUgZGl2aXNvciBzZXR0aW5ncy4KLQotKiBQYXRjaCBieSBOeWUgTGl1LCAxNiBKdWx5IDIwMDM6Ci0gIE1QQzg2MEZBRFMgZml4ZXM6Ci0gIC0gYWRkIE1QQzg2eEFEUyBzdXBwb3J0ICh1c2VzIE1QQzg2eEFEUy5oKQotICAtIGFkZCA4NjZQL1QgY29yZSBzdXBwb3J0IChhbHNvIE1QQzg1OVQvTVBDODU5RFNML01QQzg1MlQpCi0gICAgbyBQTFBSQ1IgY2hhbmdlcwotICAgIG8gQlJHIGNoYW5nZXMgKEVYVEFML1hUQUwgcmVzdHJpY3RlZCB0byAxME1IeikKLSAgICBvIGRvbid0IHRydXN0IGdjbGsoKSBzb2Z0d2FyZSBtZWFzdXJlbWVudCBieSBkZWZhdWx0LCBkZXBlbmQgb24KLSAgICAgIENPTkZJR184eHhfR0NMS19GUkVRCi0gIC0gYWRkIERSQU0gU0lNTSBub3QgaW5zdGFsbGVkIGRldGVjdGlvbgotICAtIHVzZSBtb3JlICJjb3JyZWN0IiBTRFJBTSBpbml0aWFsaXphdGlvbiBzZXF1ZW5jZQotICAtIGFsbG93IGRpZmZlcmVudCBTRFJBTSBzaXplcyAoOHh4QURTIGhhcyA4TSkKLSAgLSBkZWZhdWx0IERFUiBpcyAwCi0gIC0gcmVtb3ZlIHVudXNlZCBNQU1SIGRlZmluZXMgZnJvbSBGQURTODYwVC5oIChhbGwgZG9uZSBpbiBmYWRzLmMpCi0gIC0gcmVuYW1lIE1BTVIvTUJNUiBkZWZpbmVzIHRvIGJlIG1vcmUgY29uc2lzdGVudC4gU2hvdWxkIGV2ZW50dWFsbHkKLSAgICBiZSBtZXJnZWQgaW50byBNeE1SIHRvIGJldHRlciByZWZsZWN0IHRoZSBQb3dlclFVSUNDIGRhdGFzaGVldC4KLQotKiBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAxNiBKdWwgMjAwMzoKLSAgc3VwcG9ydCBuZXcgTW90b3JvbGEgUFEyRkFEUy1aVSBldmFsdWF0aW9uIGJvYXJkIHdoaWNoIHJlcGxhY2VkCi0gIE1QQzgyNjBBRFMgYW5kIE1QQzgyNjZBRFMKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDAuNC40OgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIEFkZCBzdXBwb3J0IGZvciBJY2VDdWJlIGJvYXJkICh3aXRoIE1HVDUxMDAgYW5kIE1QQzUyMDAgQ1BVcykKLQotKiBBZGQgc3VwcG9ydCBmb3IgTUdUNTEwMCBhbmQgTVBDNTIwMCBwcm9jZXNzb3JzCi0KLSogUGF0Y2ggYnkgTHV0eiBEZW5uaWcsIDE1IEp1bCAyMDAzOgotICB1cGRhdGUgZm9yIFIzNjBNUEkgYm9hcmQKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDAuNC4zOgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIFBhdGNoZXMgYnkgS3NoaXRpaiwgMDQgSnVsIDIwMDMKLSAgLSBhZGRlZCBzdXBwb3J0IGZvciBhcm05MjV0IGNwdSBjb3JlCi0gIC0gYWRkZWQgc3VwcG9ydCBmb3IgVEkgT01BUCAxNTEwIElubm92YXRvciBCb2FyZAotCi0qIFBhdGNoZXMgYnkgTWFydGluIEtyYXVzZSwgMTQgSnVsIDIwMDM6Ci0gIC0gYWRkIEkyQyBzdXBwb3J0IGZvciBzM2MyNDAwIHN5c3RlbXMgKHRyYWIgYm9hcmQpCi0gIC0gKHJlLSkgYWRkICJwaW5nIiB0byBjb21tYW5kIHRhYmxlCi0KLSogRml4IGhhbmRsaW5nIG9mICJzbG93IiBQT1NUIHJvdXRpbmVzCi0KLSogUGF0Y2hlcyBieSBZdWxpIEJhcmNvaGVuLCAxMyBKdWwgMjAwMzoKLSAgLSBDb3JyZWN0IGZsYXNoIGFuZCBKRkZTMiBzdXBwb3J0IGZvciBNUEM4MjYwQURTCi0gIC0gZml4IFBWUiB2YWx1ZXMgYW5kIGNsb2NrIGdlbmVyYXRpb24gZm9yIFBvd2VyUVVJQ0MgSUkgZmFtaWx5Ci0gICAgKDgyNzAvODI3NS84MjgwKQotCi0qIFBhdGNoIGJ5IEJlcm5oYXJkIEt1aG4sIDA4IEp1bCAyMDAzOgotICAtIGFkZCBzdXBwb3J0IGZvciBNNjhLIHRhcmdldHMKLQotKiBQYXRjaCBieSBLZW4gQ2hvdSwgMyBKdWw6Ci0gIC0gRml4IFBDSSBjb25maWcgdGFibGUgZm9yIEEzMDAwCi0gIC0gRml4IGlvYmFzZSBmb3IgbmF0c2VtaS5jCi0gICAgKFBDSV9CQVNFX0FERFJFU1NfMCBpcyB0aGUgSU8gYmFzZSByZWdpc3RlciBmb3IgRFA4MzgxNSkKLQotKiBBbGxvdyB0byBlbmFibGUgInNsb3ciIFBPU1Qgcm91dGluZXMgYnkga2V5IHByZXNzIG9uIHBvd2VyLW9uCi0qIEZpeCB0ZW1wZXJhdHVyZSBkZXBlbmRlbmQgc3dpdGNoaW5nIG9mIExDRCBiYWNrbGlnaHQgb24gTFdNT04KLSogVHdlYWsgb3V0cHV0IGZvcm1hdCBmb3IgTFdNT04KLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDExIEp1bCAyMDAzOgotICAtIEZpeCBidWcgaW4gQ09ORklHX1ZFUlNJT05fVkFSSUFCTEUuCi0gIC0gQVI0MDUgY29uZmlnIHVwZGF0ZWQuCi0gIC0gT0NSVEMvT1JTRzogYnNwIGNvbW1hbmQgYWRkZWQuCi0gIC0gQVNINDA1IGJzcCB1cGRhdGUuCi0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUNoYW5nZXMgZm9yIFUtQm9vdCAwLjQuMjoKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLQotKiBBZGQgc3VwcG9ydCBmb3IgTlNDVSBib2FyZAotCi0qIEFkZCBzdXBwb3J0IGZvciBUUU04MjNNLCBUUU04NTBNLCBUUU04NTVNIGFuZCBUUU04NjBNIG1vZHVsZXMKLQotKiBBZGQgc3VwcG9ydCBmb3IgQW0yOUxWMTYwTUwsIEFtMjlMVjMyME1MLCBhbmQgQW0yOUxWNjQwTUwKLSAgbWlycm9yIGJpdCBmbGFzaCBvbiBUUU04eHhNIG1vZHVsZXMKLQotKiBQYXRjaCBieSBLZW5uZXRoIEpvaGFuc3NvbiwgMzAgSnVuIDIwMDM6Ci0gIGdldCByaWQgb2YgTUtfQ01EX0VOVFJZIG1hY3JvOyB1cGRhdGUgZG9jL1JFQURNRS5jb21tYW5kCi0KLSogUGF0Y2ggYnkgU2ViIEphbWVzLCAzMCBKdW4gMjAwMzoKLSAgSW1wcm92ZSBkb2N1bWVudGF0aW9uIG9mIEkyQyBjb25maWd1cmF0aW9uIGluIFJFQURNRQotCi0qIEZpeCBwcm9ibGVtcyB3aXRoIHByZXZpb3VzIGxvZyBidWZmZXIgImZpeGVzIgotCi0qIEZpeCBtaW5vciBoZWxwIHRleHQgaXNzdWVzCi0KLSogImxvZyBhcHBlbmQiIGRpZCBub3QgYXBwZW5kIGEgbmV3bGluZQotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMC40LjE6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogRml4IHNvbWUgbWlzc2luZyBjb21tYW5kcywgY2xlYW51cCBoZWFkZXIgZmlsZXMKLSAgKGF1dG9zY3JpcHQsIGJtcCwgYnNwLCBmYXQsIG1tYywgbmFuZCwgcG9ydGlvLCAuLi4pCi0KLSogUmV3cml0ZSBjb21tYW5kIGxvb2t1cCBhbmQgaGVscCBjb21tYW5kIChmaXggcHJvYmxlbXMgd2l0aCBidWJibGUKLSAgc29ydCB3aGVuIHNvcnRpbmcgY29tbWFuZCBuYW1lIGxpc3QpLiBNaW5vciBjbGVhbnVwIGhlcmUgYW5kIHRoZXJlLgotCi0qIE1lcmdlIGZyb20gInN0YWJsZSBicmFuY2giLCB0YWcgTEFCRUxfMjAwM18wNl8yOF8xODAwLXN0YWJsZToKLSAgLSBBbGxvdyB0byBjYWxsIHN5c21vbiBmdW5jdGlvbiBpbnRlcmFjdGl2ZWx5Ci0gIC0gUElDIG9uIExXTU9OIGJvYXJkIG5lZWRzIGRlbGF5IGFmdGVyIHBvd2VyLW9uCi0gIC0gQWRkIG1pc3NpbmcgUlNSIGRlZmluaXRpb25zIGZvciBNUEM4eHgKLSAgLSBJbXByb3ZlIGxvZyBidWZmZXIgaGFuZGxpbmc6IGd1YXJhbnRlZSBjbGVhbiByZXNldCBhZnRlciBwb3dlci1vbgotICAtIEFkZCBzdXBwb3J0IGZvciBFWEJJVEdFTiBib2FyZCAoYWthICJnZW5pZSIpCi0gIC0gQWRkIHN1cHBvcnQgZm9yIFNMODI0NSBib2FyZAotCi0qIENvZGUgY2xlYW51cDoKLSAgLSByZW1vdmUgdHJhaWxpbmcgd2hpdGUgc3BhY2UsIHRyYWlsaW5nIGVtcHR5IGxpbmVzLCBDKysgY29tbWVudHMsIGV0Yy4KLSAgLSBzcGxpdCBjbWRfYm9vdC5jIChzZXBhcmF0ZSBjbWRfYmRpbmZvLmMgYW5kIGNtZF9sb2FkLmMpCi0KLSogUGF0Y2hlcyBieSBLZW5uZXRoIEpvaGFuc3NvbiwgMjUgSnVuIDIwMDM6Ci0gIC0gbWFqb3IgcmV3b3JrIG9mIGNvbW1hbmQgc3RydWN0dXJlCi0gICAgKHdvcmsgZG9uZSBtb3N0bHkgYnkgTWljaGFsIENlbmRyb3dza2kgYW5kIEpvYWtpbSBLcmlzdGlhbnNlbikKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDAuNC4wOgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIFBhdGNoZXMgYnkgUm9iZXJ0IFNjaHdlYmVsLCAyNiBKdW4gMjAwMzoKLSAgLSBjc2IyMjYgY29uZmlndXJhdGlvbiB1cGRhdGVkCi0gIC0gY3JlZGl0cyBmb3IgbG9nb2RsIHBvcnQgdXBkYXRlZAotICAtIGlubm9rb20gY29uZmlndXJhdGlvbiB1cGRhdGVkCi0gIC0gbG9nb2RsIHRyZWUgdXBkYXRlLCBzdGlsbCB3aXRoIGNvZGluZyBzdHlsZSBpbmNvbnNpc3RlbmNpZXMKLSAgLSBhZGRlZCBPQ00gZm9yIHBwYzQwNSB3YXJuaW5nIHRvIFJFQURNRQotCi0qIFBhdGNoIGJ5IFBhbnRlbGlzIEFudG9uaW91LCAyNSBKdW4gMjAwMzoKLSAgdXBkYXRlIE5ldFZpYSB3aXRoIFYyIGJvYXJkIHN1cHBvcnQKLQotKiBIZWFkZXIgZmlsZSBjbGVhbnVwIGZvciBBUk0KLQotKiBQYXRjaCBieSBNdXJyYXkgSmVuc2VuLCAyNCBKdW4gMjAwMzoKLSAgLSBtYWtlIHN1cmUgdG8gdXNlIG9ubHkgVS1ib290IHByb3ZpZGVkIGhlYWRlciBmaWxlcwotICAtIGZpeCBwcm9ibGVtcyB3aXRoICIucm9kYXRhLnN0cjEuNCIgc2VjdGlvbiBhcyB1c2VkIGJ5IEdDQy0zLngKLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDI0IEp1biAyMDAzOgotICAtIFVwZGF0ZSBlc2QgQVNINDA1IGJvYXJkIGZpbGVzLgotICAtIFVwZGF0ZSBlc2QgREFTQV9TSU0gY29uZmlnIGZpbGUuCi0gIC0gQWRkIHBpbmcgY29tbWFuZCB0byBzb21lIGVzZCBib2FyZHMuCi0KLSogUGF0Y2ggYnkgWXVsaSBCYXJjb2hlbiwgMjMgSnVuIDIwMDM6Ci0gIFVwZGF0ZSBmb3IgTVBDODI2MEFEUyBib2FyZAotCi0qIFBhdGNoIGJ5IE11cnJheSBKZW5zZW4sIDIzIEp1biAyMDAzOgotICAtIGNsZWFudXAgb2YgR0NDIDMueCBjb21waWxlciB3YXJuaW5ncwotCi0qIFBhdGNoIGJ5IFJ1bmUgVG9yZ2Vyc2VuLCA0IEp1biAyMDAzOgotICBhZGQgbGFyZ2UgbWVtb3J5IHN1cHBvcnQgZm9yIE1QQzgyNjZBRFMgYm9hcmQKLQotKiBQYXRjaCBieSBSaWNoYXJkIFdvb2RydWZmLCAxOSBKdW5lIDAzOgotICAtIEVuYWJsZWQgc3RhbmRhcmQgdS1ib290IGRldmljZSBhYnN0cmFjdGlvbiBmb3IgQVJNCi0gIC0gRW5hYmxlZCBjb25zb2xlIGRldmljZSBmb3IgQVJNCi0gIC0gSW5pdGlsaXplZCBiaV9iYXVkcmF0ZSBmb3IgQVJNCi0KLSogUGF0Y2ggYnkgQmlsbCBIYXJnZW4sIDIzIEFwciAyMDAzOgotICBmaXggYnl0ZSBvcmRlciBmb3IgODI0eCBJMkMgYWRkcmVzc2VzICh3cml0ZSBvcCkKLQotKiBQYXRjaCBieSBNdXJyYXkgSmVuc2VuLCAyMCBKdW4gMjAwMzoKLSAgLSBoeW1vZCB1cGRhdGUKLSAgLSBjbGVhbnVwIChlc3BlY2lhbGx5IGZvciBnY2MtMy54IGNvbXBpbGVycykKLQotKiBQYXRjaCBieSBUb20gR3VpbGxpYW1zLCAyMCBKdW4gMjAwMzoKLSAgYWRkZWQgQ09ORklHXzc1MEZYIHN1cHBvcnQgZm9yIElCTSA3NTBGWCBwcm9jZXNzb3JzCi0KLSogUGF0Y2ggYnkgRGV2aW4gQ3J1bWIsIDAyIEFwciAyMDAzOgotICBGaXggY2xvY2sgZGl2aWRlciByb3VuZGluZyBwcm9ibGVtIGluIGRyaXZlcnMvc2VyaWFsLmMKLQotKiBQYXRjaCBieSBSaWNoYXJkIFdvb2RydWZmLCAxOSBKdW5lIDAzOgotICAtIEZpeGVkIHNtYzkxYzExMSBkcml2ZXIgdG8gc3luYyB3aXRoIHRoZSB1LWJvb3QgZW52aXJvbm1lbnQKLSAgICAoZHJpdmVyL3NtYzkxYzExMS5jKS4KLSAgLSBBZGRlZCBldGhfaW5pdCBlcnJvciByZXR1cm4gY2hlY2sgaW4gTmV0TG9vcCAobmV0L25ldC5jKS4KLQotKiBQYXRjaCBieSBLZW4gQ2hvdSwgMTkgSnVuZSAyMDAzOgotICBBZGRlZCBzdXBwb3J0IGZvciBBMzAwMCBTQkMgYm9hcmQgKEFydGlzIE1pY3Jvc3lzdGVtcyBJbmMuKQotCi0qIFBhdGNoZXMgYnkgTXVycmF5IEplbnNlbiwgMTcgSnVuIDIwMDM6Ci0gIC0gSHltb2QgYm9hcmQgZGF0YWJhc2UgbW9kczogYWRkICJ3aG8iIGZpZWxkIGFuZCBuZXcgeGlsaW54IGNoaXAgdHlwZXMKLSAgLSBwcm92aWRlIG5ldyAiaW5pdF9jbWRfdGltZW91dCgpIiBmdW5jdGlvbiBzbyBjb2RlIGV4dGVybmFsIHRvCi0gICAgImNvbW1vbi9tYWluLmMiIGNhbiB1c2UgdGhlICJyZXNldF9jbWRfdGltZW91dCgpIiBmdW5jdGlvbiBiZWZvcmUKLSAgICBlbnRlcmluZyB0aGUgbWFpbiBsb29wCi0gIC0gYWRkIERUVCBzdXBwb3J0IGZvciBhZG0xMDIxIChuZXcgZmlsZSBkdHQvYWRtMTAyMS5jOyBjb25maWcKLSAgICBzbGlnaHRseSBkaWZmZXJlbnQuIHNlZSBpbmNsdWRlL2NvbmZpZ3MvaHltb2QuaCBmb3IgYW4gZXhhbXBsZQotICAgIChyZXF1aXJlcyBDT05GSUdfRFRUX0FETTEwMjEsIENPTkZJR19EVFRfU0VOU09SUywgYW5kCi0gICAgQ0ZHX0RUVF9BRE0xMDIxIGRlZmluZWQpCi0gIC0gYWRkIG5ldyAiZWVwcm9tX3Byb2JlKCkiIGZ1bmN0aW9uIHdoaWNoIGhhcyBzaW1pbGFyIGFyZ3MgYW5kCi0gICAgYmVoYXZlcyBpbiBhIHNpbWlsYXIgd2F5IHRvICJlZXByb21fcmVhZCgpIiBldGMuCi0gIC0gYWRkIDgyNjAgRkNDIGV0aGVybmV0IGxvb3BiYWNrIGNvZGUgKG5ldyAiZXRoX2xvb3BiYWNrX3Rlc3QoKSIKLSAgICBmdW5jdGlvbiB3aGljaCBpcyBlbmFibGVkIGJ5IGRlZmluaW5nIENPTkZJR19FVEhFUl9MT09QQkFDS19URVNUKQotICAtIGdkYnRvb2xzIGNvcHlyaWdodCB1cGRhdGUKLSAgLSBlbnN1cmUgdGhhdCBzZXRfbXNyKCkgZXhlY3V0ZXMgdGhlICJzeW5jIiBhbmQgImlzeW5jIiBpbnN0cnVjdGlvbnMKLSAgICBhZnRlciB0aGUgIm10bXNyIiBpbnN0cnVjdGlvbiBpbiBjcHUvbXBjODI2MC9pbnRlcnJ1cHRzLmMKLSAgLSA4MjYwIEkvTyBwb3J0cyBmaXg6IE9wZW4gRHJhaW4gc2hvdWxkIGJlIHNldCBsYXN0IHdoZW4gY29uZmlndXJpbmcKLSAgLSBhZGQgU0lVIElSUSBkZWZpbmVzIGZvciA4MjYwCi0gIC0gYWxsb3cgTERTQ1JJUFQgb3ZlcnJpZGUgYW5kIE9CSkNGTEFHUyBpbml0aWFsaXphdGlvbjogY2hhbmdlIHRvCi0gICAgY29uZmlnLm1rIHRvIGFsbG93IGJvYXJkIGNvbmZpZ3VyYXRpb25zIHRvIG92ZXJyaWRlIHRoZSBHTlUKLSAgICBsaW5rZXIgc2NyaXB0LCBzZWxlY3RlZCB2aWEgdGhlIExEU0NSSVBULCBtYWtlIHZhcmlhYmxlLCBhbmQgdG8KLSAgICBnaXZlIGFuIGluaXRpYWwgdmFsdWUgdG8gdGhlIE9CSkNGTEFHUyBtYWtlIHZhcmlhYmxlCi0gIC0gODI2MCBpMmMgZW5oYW5jZW1lbnQ6Ci0gICAgbyBjb3JyZWN0bHkgZXh0ZW5kcyB0aGUgdGltZW91dCBkZXBlbmRpbmcgb24gdGhlIHNpemUgb2YgYWxsCi0gICAgICBxdWV1ZWQgbWVzc2FnZXMgZm9yIGJvdGggdHJhbnNtaXQgYW5kIHJlY2VpdmUKLSAgICBvIHdpbGwgbm90IGNvbnRpbnVlIHdpdGggcmVjZWl2ZSBpZiB0cmFuc21pdCB0aW1lcyBvdXQKLSAgICBvIGVuc3VyZXMgdGhhdCB0aGUgZXJyb3IgY2FsbGJhY2sgaXMgZG9uZSBmb3IgYWxsIHF1ZXVlZCB0eAotICAgICAgYW5kIHJ4IG1lc3NhZ2VzCi0gICAgbyBjb3JyZWN0bHkgZGV0ZWN0cyBib3RoIHR4IGFuZCByeCB0aW1lb3V0cywgb25seSBkZWxpdmVycyBvbmUgdG8KLSAgICAgIHRoZSBjYWxsYmFjaywgYW5kIGRvZXMgbm90IG92ZXJ3cml0ZSBhbiBlYXJsaWVyIGVycm9yCi0gICAgbyBsb2dpYyBpbiBpMmNfcHJvYmUgbm93IGNvcnJlY3QKLSAgLSBhZGQgInZwcmludGYoKSIgZnVuY3Rpb24gc28gdGhhdCAicGFuaWMoKSIgZnVuY3Rpb24gY2FuIGJlCi0gICAgdGVjaG5pY2FsbHkgY29ycmVjdAotICAtIG1hbnkgSHltb2QgYm9hcmQgY2hhbmdlcwotCi0qIFBhdGNoZXMgYnkgUm9iZXJ0IFNjaHdlYmVsLCAxNCBKdW4gMjAwMzoKLSAgLSBhZGQgc3VwcG9ydCBmb3IgTG9nb3Ryb25pYyBETCBkYXRhbG9nZ2VyIGJvYXJkCi0gIC0gY2xlYW51cCBzZXJpYWwgbGluZSBhZnRlciBrZXJtaXQgYmluYXJ5IGRvd25sb2FkCi0gIC0gYWRkIGRlYnVnWCBtYWNybyAoZGVidWcgbGV2ZWwgc3VwcG9ydCkKLSAgLSB1cGRhdGUgbWFjaC10eXBlcy5oIHRvIGxhdGVzdCBhcm0ubGludXgub3JnLnVrIG1hc3RlciBsaXN0LgotCi0qIFBhdGNoZXMgYnkgRGF2aWQgTfxsbGVyLCAxMiBKdW4gMjAwMzoKLSAgLSByZXdyaXRlIG9mIHRoZSBTM0MyNFgwIHJlZ2lzdGVyIGRlZmluaXRpb25zIHN0dWZmCi0gIC0gImRyaXZlciIgZm9yIHRoZSBidWlsdC1pbiBTM0MyNFgwIFJUQwotCi0qIFBhdGNoZXMgYnkgWXVsaSBCYXJjb2hlbiwgMTIgSnVuIDIwMDM6Ci0gIC0gQWRkIE1JSSBzdXBwb3J0IGFuZCBFdGhlcm5ldCBQSFkgaW5pdGlhbGl6YXRpb24gZm9yIE1QQzgyNjBBRFMgYm9hcmQKLSAgLSBGaXggaW5jb3JyZWN0IFNJVU1DUiBpbml0aWFsaXNhdGlvbiBjYXVzZWQgYnkgd3JvbmcgSGFyZCBSZXNldAotICAgIGNvbmZpZ3VyYXRpb24gd29yZCBzdXBwbGllZCBieSBGUEdBIG9uIHNvbWUgTVBDODI2MEFEUyBib2FyZHMKLQotKiBQYXRjaCBieSBQYW50ZWxpcyBBbnRvbmlvdSwgMTAgSnVuIDIwMDM6Ci0gIFVuaWZ5IHN0YXR1cyBMRUQgaW50ZXJmYWNlCi0KLSogQWRkIHN1cHBvcnQgZm9yIERTMTI4ODcgUlRDOyBhZGQgUlRDIHN1cHBvcnQgZm9yIEFUQyBib2FyZAotCi0qIFBhdGNoIGJ5IE5pY29sYXMgTGFjcmVzc29ubmllcmUsIDExIEp1biAyMDAzOgotICBNb2RpZmljYXRpb25zIGZvciBBdG1lbCBBVDkxUk05MjAwREsgQVJNOTIwVCBiYXNlZCBkZXZlbG9wbWVudCBraXQKLSAgLSBBZGQgQXRtZWwgRGF0YUZsYXNoIHN1cHBvcnQgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcuCi0gIC0gQWRkIHBvc3NpYmlsaXR5IHRvIGJvb3QgYSBMaW51eCBmcm9tIERhdGFGbGFzaCB3aXRoIEJPT1RNIGNvbW1hbmQuCi0gIC0gQWRkIEZsYXNoIGRldGVjdGlvbiBvbiBBdG1lbCBBVDkxUk05MjAwREsKLSAgICAoYmV0d2VlbiBBdG1lbCBBVDQ5QlYxNjE0IGFuZCBBVDQ5QlYxNjE0QSBmbGFzaGVzKQotICAtIFJlcGxhY2Ugb2xkIEV0aGVybmV0IFBIWSBsYXllciBmdW5jdGlvbnMKLSAgLSBDaGFuZ2UgbGluayBhZGRyZXNzCi0KLSogUGF0Y2ggYnkgRnJhbmsgU21pdGgsIDkgSnVuIDIwMDM6Ci0gIHVzZSBDUklUX0VYQ0VQVElPTiBmb3IgbWFjaGluZSBjaGVjayBvbiA0eHgKLQotKiBQYXRjaCBieSBEZXRsZXYgWnVuZGVsLCAxMyBKdW4gMjAwMzoKLSAgYWRkZWQgaW1wbGVtZW50YXRpb24gb2YgdGhlICJjYXJpbmZvIiBjb21tYW5kIGluIGNtZF9pbW1hcC5jCi0KLSogRml4IENPTkZJR19ORVRfTVVMVEkgc3VwcG9ydCBpbiBpbmNsdWRlL25ldC5oCi0KLSogUGF0Y2hlcyBieSBLeWxlIEhhcnJpcywgMTMgTWFyIDIwMDM6Ci0gIC0gQWRkIEZBVCBwYXJ0aXRpb24gc3VwcG9ydAotICAtIEFkZCBjb21tYW5kIHN1cHBvcnQgZm9yIEZBVAotICAtIEFkZCBjb21tYW5kIHN1cHBvcnQgZm9yIE1NQwotICAtLS0tCi0gIC0gQWRkIEludGVsIFBYQSBzdXBwb3J0IGZvciB2aWRlbwotICAtIEFkZCBJbnRlbCBQWEEgc3VwcG9ydCBmb3IgTU1DCi0gIC0tLS0KLSAgLSBFbmFibGUgTU1DIGFuZCBGQVQgZm9yIGx1YmJvY2sgYm9hcmQKLSAgLSBPdGhlciBtaXNjIGNoYW5nZXMgZm9yIGx1YmJvY2sgYm9hcmQKLQotKiBQYXRjaCBieSBSb2JlcnQgU2Nod2ViZWwsIEFwcmlsIDAyLCAyMDAzOgotICBmaXggZm9yIFNNU0M5MTExMSBkcml2ZXIKLQotKiBQYXRjaCBieSBWbGFkaW1pciBHdXJldmljaCwgMDQgSnVuIDIwMDM6Ci0gIG1ha2UgcHBjNDA1IGV0aGVybmV0IGRyaXZlciBjb21wYXRpYmxlIHdpdGggQ09ORklHX05FVF9NVUxUSSBvcHRpb24KLQotKiBQYXRjaCBieSBTdGVmYW4gUm9lc2UsIDA1IEp1biAyMDAzOgotICAtIFBQQzR4eDogRml4IGJ1ZyBmb3IgaW5pdGlhbCBzdGFjayBpbiBkYXRhIGNhY2hlIGFzIHBvaW50ZWQgb3V0IGJ5Ci0gICAgVGhvbWFzIFNjaGFlZmVyICh0c2NoYWVmZXJAZ2lnYS1zdHJlYW0uZGUpLiBOb3cgaW5pdGFsIHN0YWNrIGluCi0gICAgZGF0YSBjYWNoZSBjYW4gYmUgdXNlZCBldmVuIGlmIHRoZSBjaGlwIHNlbGVjdCBpcyBpbiB1c2UuCi0gIC0gQ0ZHX1JYX0VUSF9CVUZGRVIgYWRkZWQgdG8gc2V0IHRoZSBldGhlcm5ldCByZWNlaXZlIGJ1ZmZlciBjb3VudAotICAgIChzZWUgUkVBRE1FIGZvciBmdXJ0aGVyIGRlc2NyaXB0aW9uKS4KLSAgLSBDaGFuZ2VkIGNvbmZpZyBmaWxlcyBvZiBDT05GSUdfRUVQUk8xMDAgYm9hcmRzIHRvIHVzZSB0aGUKLSAgICBDRkdfUlhfRVRIX0JVRkZFUiBkZWZpbmUuCi0KLSogQWRkIHN1cHBvcnQgZm9yIFJNVSBib2FyZAotCi0qIEFkZCBzdXBwb3J0IGZvciBUUU04NjJMIGF0IDEwMC81MCBNSHoKLQotKiBQYXRjaCBieSBQYW50ZWxpcyBBbnRvbmlvdSwgMDIgSnVuIDIwMDM6Ci0gIG1ham9yIHJlY29uc3RydWN0aW9uIG9mIG5ldHdvcmtpbmcgY29kZTsKLSAgYWRkICJwaW5nIiBzdXBwb3J0IChvdXRnb2luZyBvbmx5ISkKLQotKiBQYXRjaCBieSBEZW5pcyBQZXRlciwgMDQgSnVuZSAyMDAzOgotICBhZGQgc3VwcG9ydCBmb3IgdGhlIE1JUDQwNVQgYm9hcmQKLQotKiBQYXRjaGVzIGJ5IFVkaSBGaW5rZWxzdGVpbiwgMiBKdW5lIDIwMDM6Ci0gIC0gQWRkZWQgc3VwcG9ydCBmb3IgY3VzdG9tIGtleWJvYXJkcywgaW5pdGlhbGl6ZWQgYnkgZGVmaW5pbmcgYQotICAgIGJvYXJkLXNwZWNpZmljIGRydl9rZXlib2FyZF9pbml0IGFzIHdlbGwgYXMgZGVmaW5pbmcgQ09ORklHX0tFWUJPQVJEIC4KLSAgLSBBZGRlZCBzdXBwb3J0IGZvciB0aGUgUkJDODIzIGJvYXJkLgotICAtIGNwdS9tcGM4eHgvbGNkLmMgbm93IGF1dG9tYXRpY2FsbHkgY2FsY3VsYXRlcyB0aGUKLSAgICBIb3Jpem9udGFsIFBpeGVsIENvdW50IGZpZWxkLgotCi0qIEZpeCBhbGlnbm1lbnQgcHJvYmxlbSBpbiBCT09UUCAoZGhjcF9sZWFzZXRpbWUgb3B0aW9uKQotICBbcG9pbnRlZCBvdXQgYnkgTmljb2xhcyBMYWNyZXNzb25uaehyZSwgMiBKdW4gMjAwM10KLQotKiBQYXRjaCBieSBNYXJrIFJha2VzLCAxNCBNYXkgMjAwMzoKLSAgYWRkIHN1cHBvcnQgZm9yIEludGVsIGUxMDAwIGdpZyBjYXJkcy4KLQotKiBQYXRjaCBieSBOeWUgTGl1LCAzIEp1biAyMDAzOgotICBmaXggY3JpdGljYWwgdHlwbyBpbiBNQU1SIGRlZmluaXRpb24gKGluY2x1ZGUvbXBjOHh4LmgpCi0KLSogRml4IHJlcXVpcmVtZW50IHRvIGFsaWduIFUtQm9vdCBpbWFnZSBvbiAxNiBrQiBib3VuZGFyaWVzIG9uIFBQQy4KLQotKiBQYXRjaCBieSBLbGF1cyBIZXlkZWNrLCAyIEp1biAyMDAzCi0gIE1pbm9yIGNoYW5nZXMgZm9yIEtVUDRLIGNvbmZpZ3VyYXRpb24KLQotKiBQYXRjaCBieSBNYXJjIFNpbmdlciwgMjkgTWF5IDIwMDM6Ci0gIEZpeGVkIHJhcnAgYm9vdCBtZXRob2QgZm9yIElBMzIgYW5kIG90aGVyIGxpdHRsZS1lbmRpYW4gQ1BVcy4KLQotKiBQYXRjaCBieSBNYXJjIFNpbmdlciwgMjggTWF5IDIwMDM6Ci0gIEFkZGVkIHBvcnQgSS9PIGNvbW1hbmRzLgotCi0qIFBhdGNoIGJ5IE1hdHRoZXcgTWNDbGludG9jaywgMjggTWF5IDIwMDMKLSAgLSBjcHUvbXBjODI0eC9zdGFydC5TOiBmaXggcmVsb2NhdGlvbiBjb2RlIHdoZW4gYm9vdGluZyBmcm9tIFJBTQotICAtIG1pbm9yIHBhdGNoZXMgZm9yIHV0eDgyNDUKLQotKiBQYXRjaCBieSBEYW5pZWwgRW5nc3Ry9m0sIDI4IE1heSAyMDAzOgotICB4ODYgdXBkYXRlCi0KLSogUGF0Y2ggYnkgRGF2ZSBFbGxpcywgOSBNYXkgMjAwMyArIDI3IE1heSAyMDAzOgotICBhZGQgbmFuZCBmbGFzaCBzdXBwb3J0IHRvIFNYTkk4NTVUIGNvbmZpZ3VyYXRpb24KLSAgZml4L2V4dGVuZCBuYW5kIGZsYXNoIHN1cHBvcnQ6Ci0gIC0gZml4ICduYW5kIGVyYXNlJyBjb21tYW5kIHNvIGRvZXMgbm90IGVyYXNlIGJhZCBibG9ja3MKLSAgLSBmaXggJ25hbmQgd3JpdGUnIGNvbW1hbmQgc28gZG9lcyBub3Qgd3JpdGUgdG8gYmFkIGJsb2NrcwotICAtIGZpeCBuYW5kX3Byb2JlKCkgc28gaGFuZGxlcyBubyBmbGFzaCBkZXRlY3RlZCBwcm9wZXJseQotICAtIGFkZCBkb2MvUkVBRE1FLm5hbmQKLSAgLSBhZGQgLmpmZnMyIGFuZCAub29iIG9wdGlvbnMgdG8gbmFuZCByZWFkL3dyaXRlCi0gIC0gYWRkICduYW5kIGJhZCcgY29tbWFuZCB0byBsaXN0IGJhZCBibG9ja3MKLSAgLSBhZGQgJ2NsZWFuJyBvcHRpb24gdG8gJ25hbmQgZXJhc2UnIHRvIHdyaXRlIEpGRlMyIGNsZWFuIG1hcmtlcnMKLSAgLSBtYWtlIE5BTkQgcmVhZC93cml0ZSBmYXN0ZXIKLQotKiBQYXRjaCBieSBSdW5lIFRvcmdlcnNlbiwgMjMgTWF5IDIwMDM6Ci0gIFVwZGF0ZSBmb3IgTVBDODI2NkFEUyBib2FyZAotCi0qIEdldCAobW9zdGx5KSByaWQgb2YgQ0ZHX01PTklUT1JfTEVOIGRlZmluaXRpb247IGNvbXB1dGUgcmVhbCBsZW5ndGgKLSAgaW5zdGVhZCBDRkdfTU9OSVRPUl9MRU4gaXMgbm93IG9ubHkgdXNlZCB0byBkZXRlcm1pbmUJIF9hdF9jb21waWxlXwotICBfdGltZV8gICghKSBpZiB0aGUgZW52aXJvbm1lbnQgaXMgZW1iZWRkZWQgd2l0aGluIHRoZSBVLUJvb3QgaW1hZ2UsCi0gIG9yIGluIGEgc2VwYXJhdGUgZmxhc2ggc2VjdG9yLgotCi0qIENsZWFudXAgQ0ZHX0RFUiAjZGVmaW5lcyBpbiBjb25maWcgZmlsZXMgKHdkIG1haW50YWluZWQgb25seSkKLQotKiBGaXggZGF0YSBhYm9ydCBleGNlcHRpb24gaGFuZGxpbmcgZm9yIGFybTkyMHQgQ1BVCi0KLSogRml4IGFsaWdubWVudCBwcm9ibGVtcyB3aXRoIGZsYXNoIGRyaXZlciBmb3IgVFJBQiBib2FyZAotCi0qIFBhdGNoIGJ5IERvbmFsZCBXaGl0ZSwgMjEgTWF5IDIwMDM6Ci0gIGZpeCBjYWxjdWxhdGlvbiBvZiBiYXNlIGFkZHJlc3MgaW4gcGNpX2hvc2VfY29uZmlnX2RldmljZSgpCi0KLSogRml4IGJ1ZyBpbiBjb21tYW5kIGxpbmUgcGFyc2luZzogImNtZDE7Y21kMiIgaXMgc3VwcG9zZWQgdG8gYWx3YXlzCi0gIGV4ZWN1dGUgImNtZDIiLCBldmVuIGlmICJjbWQxIiBmYWlscy4gTm90ZSB0aGF0IHRoaXMgaXMgZGlmZmVyZW50Ci0gIHRvICJydW4gdmFyMSB2YXIyIiB3aGVyZSB0aGUgY29udGVudHMgb2YgInZhcjIiIHdpbGwgTk9UIGJlCi0gIGV4ZWN1dGVkIHdoZW4gYSBjb21tYW5kIGluICJ2YXIxIiBmYWlscy4KLQotKiBBZGQgemVyby1jb3B5IHJhbWRpc2sgc3VwcG9ydCAocmVxdWlyZXMgY29ycmVzcG9uZGluZyBrZXJuZWwgc3VwcG9ydCEpCi0KLSogUGF0Y2ggYnkgS3lsZSBIYXJyaXMsIDIwIE1heSAyMDAzOgotICBJbiBwcmVwYXJhdGlvbiBmb3IgYW4gaXhwIHBvcnQsIHJlbmFtZSBjcHUveHNjYWxlIGFuZCBhcmNoLXhzY2FsZQotICBpbnRvIGNwdS9weGEgYW5kIGFyY2gtcHhhLgotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjMgTWF5IDIwMDM6Ci0gIC0gSUJNIFBQQzQwNUVQIHBvcnQgYWRkZWQuCi0gIC0gQ09ORklHX1VBUlQxX0NPTlNPTEUgYWRkZWQuIElmIGRlZmluZWQgaW50ZXJuYWwgVUFSVDEgKGFuZCBub3QKLSAgICBVQVJUMCkgaXMgdXNlZCBhcyBkZWZhdWx0IFUtQm9vdCBjb25zb2xlLiBQUEM0eHggb25seSEKLSAgLSBlc2QgQVNINDA1IGJvYXJkIGFkZGVkIChQUEM0MDVFUCBiYXNlZCkuCi0gIC0gQlVCSU5HQTQwNUVQIGJvYXJkIGFkZGVkIChQUEM0MDVFUCBiYXNlZCAtIElCTSBFdmFsIEJvYXJkKS4KLSAgLSBlc2QgQ1BDSTQwNUFCIGJvYXJkIGFkZGVkLgotICAtIGVzZCBQTUM0MDUgYm9hcmQgYWRkZWQuCi0gIC0gVXBkYXRlIG9mIHNvbWUgZXNkIGJvYXJkcy4KLQotKiBQYXRjaCBieSBEZW5pcyBQZXRlciwgMTkgTWFpIDIwMDM6Ci0gIGFkZCBzdXBwb3J0IGZvciB0aGUgTUlQNDA1LTMgYm9hcmQKLQotKiBQYXRjaCBieSBEYXZlIEVsbGlzLCAyMiBNYXkgMjAwMzoKLSAgRml4IHByb2JsZW0gd2l0aCBvbmx5IHBhcnRpYWxseSBjbGVhcmVkIC5ic3Mgc2VnbWVudAotCi0qIFBhdGNoIGJ5IFJ1bmUgVG9yZ2Vyc2VuLCAxMiBNYXkgMjAwMzoKLSAgZ2V0IFBDSSB0byB3b3JrIG9uIGEgTVBDODI2NkFEUyBib2FyZDsgaW5jb3Jwb3JhdGUgY2hhbmdlIHRvCi0gIGNwdS9tcGM4MjYwL3BjaS5jIHRvIGVuYWJsZSBvdmVycmlkZXMgb2YgUENJIG1lbW9yeSBwYXJhbWV0ZXJzCi0KLSogUGF0Y2ggYnkgTnllIExpdSwgMSBNYXkgMjAwMzoKLSAgbWlub3IgcGF0Y2hlcyBmb3IgdGhlIEZBRFM4eHgKLQotKiBQYXRjaCBieSBUaG9tYXMgU2No5GZlciwgMjggQXByIDIwMDM6Ci0gIEZpeCBTUEQgaGFuZGxpbmcgZm9yIDI1NiBFQ0MgRElNTSBvbiBXYWxudXQKLQotKiBBZGQgc3VwcG9ydCBmb3IgYXJiaXRyYXJ5IGJpdG1hcHMgZm9yIFRSQUIncwlWRkQgY29tbWFuZDsKLSAgYWxsb3cgdG8gcGFzcyBib290IGJpdG1hcCBhZGRyZXNzZXMgaW4gZW52aXJvbm1lbnQgdmFyaWFibGVzOwotICBhbGxvdyBmb3IgemVybyBib290IGRlbGF5Ci0KLSogUGF0Y2ggYnkgQ2hyaXN0aWFuIEdlad9pbmdlciwgMTkgTWF5IDIwMDI6Ci0gIE9uIFRSQUI6IHdhaXQgdW50aWwgdGhlIGR1bW15IGJ5dGUgaGFzIGJlZW4gY29tcGxldGVseSBzZW50Ci0KLSogUGF0Y2ggYnkgRGF2aWQgVXBkZWdyYWZmLCAyMiBBcHIgMjAwMzoKLSAgdXBkYXRlIGZvciBDcmF5TDEgYm9hcmQKLQotKiBQYXRjaCBieSBQYW50ZWxpcyBBbnRvbmlvdSwgMjEgQXByIDIwMDM6Ci0gIGFkZCBib290IHN1cHBvcnQgZm9yIEFSVE9TIChhIHByb3ByaWV0YXJ5IE9TKQotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDExIEFwciAyMDAzOgotICBBZGQgc3VwcG9ydCBmb3IgUlRDIERTMTMzOAotCi0qIFBhdGNoIGJ5IFJvZCBCb3ljZSwgMjQgSmFuIDIwMDM6Ci0gIEZpeCBjb3VudGluZyBvZiBleHRlbmRlZCBwYXJ0aXRpb25zIGluIGRpc2tib290IGNvbW1hbmQKLQotKiBQYXRjaCBieSBDaHJpc3RvcGhlIExpbmRoZWltZXIsIDIwIE1heSAyMDAzOgotICBhbGxvdyB0aGUgdXNlIG9mIENGR19MT0FEUyB3aGVuIENGR19OT19GTEFTSCBpcyBzZXQKLQotKiBGaXggU0RSQU0gdGltaW5nIG9uIFB1cnBsZSBib2FyZAotCi0qIEFkZCBzdXBwb3J0IGZvciBDb21wYWN0Rmxhc2ggb24gQVRDIGJvYXJkCi0gIChpbmNsdWRlcyBzdXBwb3J0IGZvciBJbnRlbCA4MjM2NSBhbmQgY29tcGF0aWJsZSBQQyBDYXJkIGNvbnRyb2xsZXJzLAotICBhbmQgWWVudGEtY29tcGF0aWJsZSBQQ0ktdG8tQ2FyZEJ1cyBjb250cm9sbGVycykKLQotKiBQYXRjaCBieSBNYXRoaWpzIEhhYXJtYW4sIDA4IE1heSAyMDAzOgotICBBZGQgbGFuOTFjOTYgZHJpdmVyICh0ZXN0ZWQgb24gTHViYm9jayBhbmQgY3VzdG9tIFBYQTI1MCBib2FyZCBvbmx5KQotCi0qIEZpeCBwcm9ibGVtIHdpdGggdXNhZ2Ugb2YgInRydWUiICh1bmRlZmluZWQgaW4gY3VycmVudCB2ZXJzaW9ucyBvZiBiZmQuaCkKLQotKiBBZGQgc3VwcG9ydCBmb3IgUHJvbWVzcyBBVEMgYm9hcmQKLQotKiBQYXRjaCBieSBLZWl0aCBPdXR3YXRlciwgMjggQXByIDIwMDM6Ci0gIC0gTWlzY2VsbGFuZW91cyBjb3JyZWN0aW9ucyBhbmQgYWRkaXRpb25zIHRvIEdFTjg2MFQgYm9hcmQgc3BlY2lmaWMgY29kZS4KLSAgLSBBZGRlZCBHRU44NjBfU0MgdmFyaWFudCB0byBHRU44NjBULgotICAtIE1pc2NlbGxhbmVvdXMgY29ycmVjdGlvbnMgdG8gR0VOODYwVCBkb2N1bWVudGF0aW9uLgotICAtIENvcnJlY3QgZHVwbGljYXRlIGVudHJ5IGluIFUtQm9vdCBDUkVESVRTIGZpbGUuCi0gIC0gQWRkIEdFTjg2MFRfU0MgZW50cnkgaW4gTUFJTlRBSU5FUlMgZmlsZS4KLSAgLSBVcGRhdGUgQ1JFRElUUyBmaWxlIHdpdGggR0VOODYwVF9TQyBpbmZvLgotCi0qIFVwZGF0ZSBTbWl0aHMgQWVyb3NwYWNlIGFkZHJlc3NlcyBpbiBNQUlOVEFJTkVSUyBmaWxlCi0KLSogRml4IGVycm9yIGhhbmRsaW5nIGluIGh1c2gncyB2ZXJzaW9uIG9mICJydW4iIGNvbW1hbmQKLQotKiBMV01PTiBleHRlbnNpb25zOgotICAtIFNwbGFzaHNjcmVlbiBzdXBwb3J0Ci0gIC0gbW9kZW0gc3VwcG9ydAotICAtIHN5c21vbiBzdXBwb3J0Ci0gIC0gdGVtcGVyYXR1cmUgZGVwZW5kZW5kIGVuYWJsaW5nIG9mIExDRAotCi0qIEFsbG93IGJvb3RpbmcgZnJvbSBvbGQgIlBQQ0Jvb3QiIGRpc2sgcGFydGl0aW9ucwotCi0qIEFkZCBzdXBwb3J0IGZvciBUUU04MjU1IEJvYXJkIC8gTVBDODI1NSBDUFUKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDAuMy4xOgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIE1ha2Ugc3VyZSBCbG9jayBMb2NrIEJpdHMgZ2V0IGNsZWFyZWQgaW4gUjM2ME1QSSBmbGFzaCBkcml2ZXIKLQotKiBNUEM4MjMgTENEIGRyaXZlcjogRmlsbCBjb2xvciBtYXAgYmFja3dhcmRzLCB0byBhbGxvdyBmb3Igc3RlYWR5Ci0gIGRpc3BsYXkgd2hlbiBMaW51eCB0YWtlcyBvdmVyCi0KLSogUGF0Y2ggYnkgRXJ3aW4gUm9sLCAyNyBGZWIgMjAwMzoKLSAgQWRkIHN1cHBvcnQgZm9yIFJURU1TICh0aGlzIHRpbWUgZm9yIHJlYWwpLgotCi0qIEFkZCBzdXBwb3J0IGZvciAiYm1wIGluZm8iIGFuZCAiYm1wIGRpc3BsYXkiIGNvbW1hbmRzIHRvIGxvYWQKLSAgYml0bWFwIGltYWdlczsgdGhpcyBjYW4gYmUgdXNlZCAoZm9yIGV4YW1wbGUgaW4gYSAicHJlYm9vdCIKLSAgY29tbWFuZCkgdG8gZGlzcGxheSBhIHNwbGFzaCBzY3JlZW4gdmVyeSBxdWlja2x5IGFmdGVyIHBvd2Vyb24uCi0KLSogQWRkIHN1cHBvcnQgZm9yIDEzMyBNSHogY2xvY2sgb24gSU5DQS1JUCBib2FyZAotCi0qIFBhdGNoIGJ5IEx1dHogRGVubmlnLCAxMCBBcHIgMjAwMzoKLSAgVXBkYXRlIGZvciBSMzYwTVBJIGJvYXJkCi0KLSogQWRkIG5ldyBtZWFuaW5nIHRvICJhdXRvc3RhcnQiIGVudmlyb25tZW50IHZhcmlhYmxlOgotICBJZiBzZXQgdG8gIm5vIiwgYSBzdGFuZGFsb25lIGltYWdlIHBhc3NlZCB0byB0aGUKLSAgImJvb3RtIiBjb21tYW5kIHdpbGwgYmUgY29waWVkIHRvIHRoZSBsb2FkIGFkZHJlc3MKLSAgKGFuZCBldmVudHVhbGx5IHVuY29tcHJlc3NlZCksIGJ1dCBOT1QgYmUgc3RhcnRlZC4KLSAgVGhpcyBjYW4gYmUgdXNlZCB0byBsb2FkIGFuZCB1bmNvbXByZXNzIGFyYml0cmFyeQotICBkYXRhLgotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTAgQXByIDIwMDM6Ci0gIENoYW5nZWQgREhDUCBjbGllbnQgdG8gdXNlIElQIGFkZHJlc3MgZnJvbSBzZXJ2ZXIgb3B0aW9uIGZpZWxkICM1NAotICBmcm9tIHRoZSBPRkZFUiBwYWNrZXQgaW4gdGhlIHNlcnZlciBvcHRpb24gZmllbGQgIzU0IGluIHRoZSBSRVFVRVNUCi0gIHBhY2tldC4gVGhpcyBmaXhlcyBhIHByb2JsZW0gdXNpbmcgYSBXaW5kb3dzIDIwMDAgREhDUCBzZXJ2ZXIsCi0gIHdoZXJlIHRoZSBESENQLXNlcnZlciBpcyBub3QgdGhlIFRGVFAtc2VydmVyLgotCi0qIFNldCBtYXggYnJpZ2h0bmVzcyBmb3IgTU4xMTIzNiBkaXNwbGF5cyBvbiBUUkFCIGJvYXJkCi0KLSogQWRkIHN1cHBvcnQgZm9yIFRRTTg2MkwgbW9kdWxlcwotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMC4zLjA6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogUGF0Y2ggYnkgQXJ1biBEaGFyYW5rYXIsIDQgQXByIDIwMDM6Ci0gIEFkZCBJRE1BIGV4YW1wbGUgY29kZSAodGVzdGVkIG9uIDgyNjAgb25seSkKLQotKiBBZGQgc3VwcG9ydCBmb3IgUHVycGxlIEJvYXJkIChNSVBTNjQgNUtjKQotCi0qIEFkZCBzdXBwb3J0IGZvciBNSVBTNjQgNUtjIENQVXMKLQotKiBGaXggbWlzc2luZyBzZXR0aW5nIG9mICJsb2FkYWRkciIgYW5kICJib290ZmlsZSIgb24gQVJNIGFuZCBNSVBTCi0KLSogUGF0Y2ggYnkgRGVuaXMgUGV0ZXIsIDA0IEFwciAyMDAzOgotICAtIHVwZGF0ZSBNSVA0MDUtNCBib2FyZAotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgNCBBcHIgMjAwMzoKLSAgLSBVLUJvb3QgdmVyc2lvbiBlbnZpcm9ubWVudCB2YXJpYWJsZSAidmVyIiBhZGRlZAotICAgIChDT05GSUdfVkVSU0lPTl9WQVJJQUJMRSkuCi0gIC0gQ2hhbmdlZCBQUEM0MDVHUHIgdmVyc2lvbiBmcm9tIEEgdG8gQi4KLSAgLSBDaGFuZ2VkIENQQ0k0MDUgdG8gdXNlIENUUyBpbnN0ZWFkIG9mIERTUiBvbiBQUEM0MDUgVUFSVDEuCi0KLSogUGF0Y2hlcyBieSBEZW5pcyBQZXRlciwgMDMgQXByaWwgMjAwMzoKLSAgLSBmaXggUENJIElSUXMgb24gTVBMIGJvYXJkcwotICAtIGZpeCB0d28gbW9yZSB1bi1yZWxvY2F0ZWQgcG9pbnRlciBwcm9ibGVtcwotCi0qIEZpeCBiZWhhdmlvdXIgb2YgInJ1biIgY29tbWFuZDoKLSAgLSBwcmludCBlcnJvciBtZXNzYWdlIGl2IHZhcmlhYmxlIGRvZXMgbm90IGV4aXN0Ci0gIC0gdGVybWluYXRlIHByb2Nlc3Npbmcgb2YgYXJndW1lbnRzIGluIGNhc2Ugb2YgZXJyb3IKLQotKiBQYXRjaGVzIGJ5IFBldGVyIEZpZ3VsaSwgMTAgTWFyIDIwMDMKLSAgLSBBZGQgc3VwcG9ydCBmb3IgQlRVQVJUIG9uIFBYQSBwbGF0Zm9ybQotICAtIEFkZCBzdXBwb3J0IGZvciBXRVAgRVAyNTAgKFBYQSkgYm9hcmQKLQotKiBGaXggZmxhc2ggcHJvYmxlbXMgb24gSU5DQS1JUDsgYWRkIHRvb2wgdG8gYWxsb3cgYnJ1bmluZyBpbWFnZXMgIHRvCi0gIGZsYXNoIHVzaW5nIGEgQkRJMjAwMAotCi0qIEltcGxlbWVudCBmaXggZm9yIEkyQyBFZGdlIENvbmRpdGlvbnMgcHJvYmxlbSBmb3IgYWxsIGJvYXJkcyB0aGF0Ci0gIHVzZSB0aGUgYml0LWJhbmdpbmcgZHJpdmVyIChjb21tb24vc29mdF9pMmMuYykKLQotKiBQYXRjaCBieSBNYXJ0aW4gV2luaXN0b2VyZmVyLCAyMyBNYXIgMjAwMwotICAtIEFkZCBwb3J0IHRvIE1QQzU1NS81NTYgbWljcm9jb250cm9sbGVycwotICAtIEFkZCBzdXBwb3J0IGZvciBjbWkgY3VzdG9tZXIgYm9hcmQgd2l0aAotICAgIEludGVsIDI4RjEyOEozQSwgMjhGMzIwSjNBIG9yIDI4RjY0MEozQSBmbGFzaC4KLQotKiBQYXRjaCBieSBSaWNrIEJyb25zb24sIDI4IE1hciAyMDAzOgotICAtIGZpeCBjb21tb24vY21kX25hbmQuYwotCi0qIFBhdGNoIGJ5IEFydW4gRGhhcmFua2FyLCAyNCBNYXIgMjAwMzoKLSAgLSBhZGQgdGhyZWFkcyAvIHNjaGVkdWxlciBleGFtcGxlIGNvZGUKLQotKiBBZGQgcGF0Y2hlcyBieSBSb2JlcnQgU2Nod2ViZWwsIDMxIE1hciAyMDAzOgotICAtIGFkZCBjdHJsLWMgc3VwcG9ydCBmb3Iga2VybWl0IGRvd25sb2FkCi0gIC0gYWxpZ24gYmRpbmZvIG91dHB1dCBvbiBBUk0KLSAgLSBjc2IyMjYgYm9hcmQ6IGJyaW5nIGluIHN5bmMgd2l0aCBpbm5va29tL21lbXNldHVwLlMKLSAgLSBjc2IyMjYgYm9hcmQ6IGZpeCBNRFJFRlIgaGFuZGxpbmcKLSAgLSBtaXNjIGRvYyBmaXhlcyAvIGV4dGVuc2lvbnMKLSAgLSBpbm5va29tIGJvYXJkOiBjbGVhbnVwLCBNRFJFRlIgZml4IGluIG1lbXNldHVwLlMsIGNvbmZpZyB1cGRhdGUKLSAgLSBhZGQgQk9PVF9QUk9HUkVTUyB0byBhcm1saW51eC5jCi0KLSogQWRkIENQVSBJRCwgdmVyc2lvbiwgYW5kIGNsb2NrIHNwZWVkIGZvciBJTkNBLUlQCi0KLSogUGF0Y2hlcyBieSBEYXZlIEVsbGlzLCAxOCBNYXIgMjAwMyBmb3IgU1hOSTg1NVQgYm9hcmQ6Ci0gIC0gZml4IFNSQU0gYW5kIFNEUkFNIG1lbW9yeSBzaXppbmcKLSAgLSBhZGQgc3RhdHVzIExFRCBzdXBwb3J0Ci0gIC0gYWRkIE1BQyBhZGRyZXNzIGZvciBzZWNvbmQgKFNDQzEpIGV0aGVybmV0IHBvcnQKLQotKiBVcGRhdGUgZGVmYXVsdCBlbnZpcm9ubWVudCBmb3IgVFFNODI2MCBib2FyZAotCi0qIFBhdGNoIGJ5IFJpY2sgQnJvbnNvbiwgMTYgTWFyIDIwMDM6Ci0gIC0gQWRkIE5BTkQgZmxhc2ggc3VwcG9ydCBmb3IgcmVhZGluZywgd3JpdGluZywgYW5kIGVyYXNpbmcgTkFORAotICAgIGZsYXNoIChjZXJ0YWluIGZvcm1zIG9mIHdoaWNoIGFyZSBjYWxsZWQgU21hcnRNZWRpYSkuCi0gIC0gQWRkIHN1cHBvcnQgZm9yIEF0bWVsIEFUOTFSTTkyMDBESyBBUk05MjBUIGJhc2VkIGRldmVsb3BtZW50IGtpdC4KLQotKiBQYXRjaGVzIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMTkgTWFyIDIwMDM6Ci0gIC0gdXNlIGFybS1saW51eC1nY2MgYXMgZGVmYXVsdCBjb21waWxlciBmb3IgQVJNCi0gIC0gZml4IGkyYyBmaXh1cCBjb2RlCi0gIC0gZml4IG1pc3NpbmcgYmF1ZHJhdGUgc2V0dGluZwotICAtIGFkZGVkICRsb2FkYWRkciAvIENGR19MT0FEX0FERFIgc3VwcG9ydCB0byBsb2FkYgotICAtIG1vdmVkICJpZ25vcmluZyB0cmFpbGluZyBjaGFyYWN0ZXJzIiBfYmVmb3JlXyB1LWJvb3Qgd2FudHMgdG8KLSAgICBwcmludCBvdXQgZGlhZ25vc3RpY3MgbWVzc2FnZXM7IHJlbW92ZXMgYm9ndXMgY2hhcmFjdGVycyBhdCB0aGUKLSAgICBlbmQgb2YgdHJhbnNtaXNzaW9uCi0KLSogUGF0Y2ggYnkgSm9obiBaaGFuLCAxOCBNYXIgMjAwMzoKLSAgQWRkIHN1cHBvcnQgZm9yIFNpbm9WZWUgTWljcm9zeXN0ZW1zIFNDOHh4IGJvYXJkcwotCi0qIFBhdGNoIGJ5IFJvbGYgT2ZmZXJtYW5ucywgMjEgTWFyIDIwMDM6Ci0gIHBvcnRlZCB0aGUgZG5wMTExMCByZWxhdGVkIGNoYW5nZXMgZnJvbSB0aGUgY3VycmVudCBhcm1ib290IGN2cyB0bwotICBjdXJyZW50IHUtYm9vdCBjdnMuIHNtYzkxMTExIGRvZXMgbm90IHdvcmsuIHByb2JsZW0gbWFya2VkIGluCi0gIHNtYzkxMTExLmMsIGdyZXAgZm9yICJGSVhNRSIuCi0KLSogUGF0Y2ggYnkgQnJpYW4gQXVsZCwgMjUgTWFyIDIwMDM6Ci0gIEFkZCBzdXBwb3J0IGZvciBTVE0gZmxhc2ggY2hpcHMgb24gZWJvbnkgYm9hcmQKLQotKiBBZGQgUENJIHN1cHBvcnQgZm9yIE1QQzgyNTAgQm9hcmRzIChQTTgyNSBtb2R1bGUpCi0KLSogUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAyNSBNYXIgMjAwMzoKLSAgLSBQQ0k0MDUgdXBkYXRlLgotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMjAgTWFyIDIwMDM6Ci0gIC0gQ1BDSTQwNTIgdXBkYXRlIChzdXBwb3J0IGZvciByZXZpc2lvbiAzKS4KLSAgLSBTZXQgZWRnZSBjb25kaXRpb25pbmcgY2lyY3VpdHJ5IG9uIFBQQzQwNUdQciBmb3IgY29tcGF0aWJpbGl0eQotICAgIHRvIGV4aXN0aW5nIFBQQzQwNUdQIGRlc2lnbnMuCi0gIC0gQ2xpcCB1ZGl2IHRvIDUgYml0cyBvbiBQUEM0MDUgKHNlcmlhbC5jKS4KLQotKiBFeHRlbmQgSU5DQUlQIGJvYXJkIHN1cHBvcnQ6Ci0gIC0gYWRkIGF1dG9tYXRpYyBSQU0gc2l6ZSBkZXRlY3Rpb24KLSAgLSBhZGQgImJkaW5mbyIgY29tbWFuZAotICAtIHBhc3MgZmxhc2ggYWRkcmVzcyBhbmQgc2l6ZSB0byBMaW51eCBrZXJuZWwKLSAgLSBzd2l0Y2ggdG8gMTUwIE1IeiBjbG9jawotCi0qIEF2b2lkIGZsaWNrZXIgb24gdGhlIFRSQUIncyBWRkQgYnkgc3luY2hyb25pemluZyB0aGUgZW5hYmxlIHdpdGgKLSAgdGhlIEhTWU5DL1ZTWU5DLiBSZXF1aXJlcyBuZXcgQ1BMRCBjb2RlIChWZXJzaW9uIDEwMSBmb3IgUmV2LiAxMDAKLSAgYm9hcmRzLCB2ZXJzaW9uIDE1MyBmb3IgUmV2LiAyMDAgYm9hcmRzKS4KLQotKiBQYXRjaCBieSBWbGFkaW1pciBHdXJldmljaCwgMTIgTWFyIDIwMDM6Ci0gIEZpeCByZWxvY2F0aW9uIHByb2JsZW0gb2Ygc3RhdGljYWxseSBpbml0aWFsaXplZCBzdHJpbmcgcG9pbnRlcnMKLSAgaW4gY29tbW9uL2NtZF9wY2kuYwotCi0qIFBhdGNoIGJ5IEthaS1Vd2UgQmz2bSwgMTIgTWFyIDIwMDM6Ci0gIENsZWFudXAgJiBidWcgZml4ZXMgZm9yIEpGRlMyIGNvZGU6Ci0gIC0gdGhlIG1lbW9yeSBtYW5nZW1lbnQgd2FzIGJyb2tlbi4gSXQgY2F1c2VkIGhhdm9jIG9uIG1hbGxvYyBieQotICAgIHdyaXRpbmcgYmV5b25kIHRoZSBibG9jayBib3VuZGFyaWVzLgotICAtIHRoZSBsZW5ndGggY2FsY3VsYXRpb24gZm9yIGZpbGVzIHdhcyB3cm9uZywgc29tZXRpbWVzIHJlc3VsdGluZwotICAgIGluIHNob3J0IGZpbGUgcmVhZHMuCi0gIC0gZGF0YSBjb3B5aW5nIG5vdyBvcHRpb25hbGx5IHRha2VzIGZyYWdtZW50IHZlcnNpb24gbnVtYmVycyBpbnRvCi0gICAgYWNjb3VudCwgdG8gYXZvaWQgY29weWluZyBmcm9tIG9sZGVyIGRhdGEuCi0gIFNlZSBkb2MvUkVBRE1FLkpGRlMyIGZvciBkZXRhaWxzLgotCi0qIFBhdGNoIGJ5IEpvc2VmIFdhZ25lciwgMTIgTWFyIDIwMDM6Ci0gIC0gMTYvMzIgTUIgYW5kIDUwLzgwIE1IeiBzdXBwb3J0IHdpdGggYXV0by1kZXRlY3Rpb24gZm9yIElQODYwCi0gIC0gRVRIMDUgYW5kIEJFREJVRyBzdXBwb3J0IGZvciBDVTgyNAotICAtIGFkZGVkIHN1cHBvcnQgZm9yIE1pY3JvU3lzIENQQzQ1Ci0gIC0gbmV3IEJPT1RST00vRkxBU0gwIGFuZCBET0MgYmFzZSBmb3IgUE04MjYKLQotKiBQYXRjaCBieSBSb2JlcnQgU2Nod2ViZWwsIDEyIE1hciAyMDAzOgotICBGaXggdGhlIGNocGFydCBjb21tYW5kIG9uIGlubm9rb20gYm9hcmQKLQotKiBOYW1lIGNsZWFudXA6Ci0gIG12IGluY2x1ZGUvYXNtLWkzODYvcHBjYm9vdC1pMzg2LmggaW5jbHVkZS9hc20taTM4Ni91LWJvb3QtaTM4Ni5oCi0gIHMvUFBDQm9vdC9VLUJvb3QvIGluIHNvbWUgZmlsZXMKLSAgcy9wSW1hZ2UvdUltYWdlLyAgaW4gc29tZSBmaWxlcwotCi0qIFBhdGNoIGJ5IERldGxldiBadW5kZWwsIDE1IEphbiAyMDAzOgotICBGaXggJycgY29tbWFuZCBsaW5lIHF1b3RpbmcKLQotKiBQYXRjaCBieSBUaGUgTEVPWCB0ZWFtLCAxOSBKYW4gMjAwMzoKLSAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIEVMUFQ4NjAgYm9hcmQKLSAgLSBhZGQgc3VwcG9ydCBmb3IgRGFsbGFzIGRzMTY0eCBSVEMKLQotKiBQYXRjaGVzIGJ5IERhdmlkIE38bGxlciwgMzEgSmFuIDIwMDM6Ci0gIC0gbWluaW1hbCBzZXR1cCBmb3IgQ2FyZEJ1cyBicmlkZ2VzCi0gIC0gYWRkIEVFUFJPTSByZWFkL3dyaXRlIHN1cHBvcnQgaW4gdGhlIENTODkwMCBkcml2ZXIKLSAgLSBhZGQgc3VwcG9ydCBmb3IgdGhlIGJ1aWx0aW4gSTJDIGNvbnRyb2xsZXIgaW4gdGhlIFNhbXN1bmcgczNjMjR4MCBjaGlwcwotICAtIGFkZCBzdXBwb3J0IGZvciBNUEwncyBWQ01BOSAoU2Ftc3VuZyBzM2MyNDEwIGJhc2VkKSBib2FyZAotCi0qIFBhdGNoIGJ5IFN0ZXZlbiBTY2hvbHosIDA0IEZlYiAyMDAzOgotICBhZGQgc3VwcG9ydCBmb3IgUlRDIERTMTMwNwotCi0qIFBhdGNoIGJ5IFJlaW5oYXJkIE1leWVyLCA1IEZlYiAyMDAzOgotICBmaXggUExQUkNSL1NDQ1IgaW5pdCBzZXF1ZW5jZSBvbiA4eHggdG8gYWxsb3cgZm9yCi0gIGNoYW5nZXMgb2YgRUJERiBieSBzb2Z0d2FyZQotCi0qIFBhdGNoIGJ5IFZsYWRpbWlyIEd1cmV2aWNoLCAwNyBGZWIgMjAwMzoKLSAgIkFQSS1jb21wYXRpYmlsaXR5IHBhdGNoIiBmb3IgNHh4IEkyQyBkcml2ZXIKLQotKiBUUkFCIGZpeGVzIC8gZXh0ZW5zaW9uczoKLSAgLSBSZXN0b3JlIFZGRCBicmlnaHRuZXNzIGFzIHNhdmVkIGluIGVudmlyb25tZW50Ci0gIC0gYWRkIHN1cHBvcnQgZm9yIEZ1aml0c3UgZmxhc2hlcwotICAtIG1ha2Ugc3VyZSBib3RoIGJ1enplcnMgYXJlIHR1cm5lZCBvZmYgKGRyaXZlIGxvdyBsZXZlbCkKLQotKiBQYXRjaGVzIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMDYgTWFyIDIwMDM6Ci0gIC0gZml4IGJ1ZyBpbiBCT09UUCBjb2RlIChtdXN0IHVzZSBOZXRDb3B5SVApCi0gIC0gdXBkYXRlIG9mIENTQjIyNiBwb3J0Ci0gIC0gY2xlYXIgQlNTIHNlZ21lbnQgb24gWFNjYWxlCi0gIC0gYWRkZWQgc3VwcG9ydCBmb3IgaTJjX2luaXRfYm9hcmQoKSBmdW5jdGlvbgotICAtIHVwZGF0ZSB0byB0aGUgSW5ub2tvbSBwbGF0dGZvcm0KLQotKiBFeHRlbmQgc3VwcG9ydCBmb3IgcmVkdW5kYW5kIGVudmlyb25tZW50cyBmb3IgY29uZmlndXJhdGlvbnMgd2hlcmUKLSAgZW52aXJvbm1lbnQgc2l6ZSA8IHNlY3RvciBzaXplCi0KLSogUGF0Y2ggYnkgUnVuZSBUb3JnZXJzZW4sIDEzIEZlYiAyMDAzOgotICBBZGQgc3VwcG9ydCBmb3IgTW90b3JvbGEgTVBDODI2NkFEUyBib2FyZAotCi0qIFBhdGNoIGJ5IEt5bGUgSGFycmlzLCAxOSBGZWIgMjAwMzoKLSAgcGF0Y2hlcyBmb3IgdGhlIEludGVsIGx1YmJvY2sgYm9hcmQ6Ci0gIG1lbXNldHVwLlMgLSBnZW5lcmFsIGNsZWFudXAgKGJhc2VkIG9uIFJvYmVydCdzIGNzYjIyNiBjb2RlKQotICBmbGFzaC5jIC0gb3ZlcmhhdWwsIGFjdHVhbGx5IHdvcmtzIG5vdwotICBsdWJib2NrLmMgLSBmaXggaW5pdCBmdW5jcyB0byByZXR1cm4gcHJvcGVyIHZhbHVlCi0KLSogUGF0Y2ggYnkgS2VubmV0aCBKb2hhbnNzb24sIDI2IEZlYiAyMDAzOgotICAtIEZpeGVkIG9mZiBieSBvbmUgaW4gUkZUQSBjYWxjdWxhdGlvbi4KLSAgLSBObyBuZWVkIHRvIGFib3J0IHdoZW4gTERGIGlzIGxvd2VyIHRoYW4gd2UgY2FuIHByb2dyYW0gaXQncyBvbmx5Ci0gICAgbWluaW11bSB0aW1pbmcgc28gY2xhbXAgaXQgdG8gd2hhdCB3ZSBjYW4gZG8uCi0gIC0gVGFrZXMgZnVuY3Rpb24gcG9pbnRlciB0byBmdW5jdGlvbiBmb3IgcmVhZGluZyB0aGUgc3BkX252cmFtLiBVc2VmdWxsCi0gICAgZm9yIGZha2luZyBkYXRhIG9yIGhhcmRjb2RlIGEgbW9kdWxlIHdpdGhvdXQgdGhlIG52cmFtLgotICAtIGZpeCBvdGhlciB1c2VyIGZvciBhYm92ZSBjaGFuZ2UKLSAgLSBmaXggc29tZSBjb21tZW50cy4KLQotKiBQYXRjaGVzIGJ5IEJyaWFuIFdhaXRlLCAyNiBGZWIgMjAwMzoKLSAgLSBmaXggcG9ydCBmb3IgZXZiNjQyNjAgYm9hcmQKLSAgLSBmaXggUENJIGZvciBldmI2NDI2MCBib2FyZAotICAtIGZpeCBQQ0kgc2NhbgotCi0qIFBhdGNoIGJ5IFJlaW5oYXJkIE1leWVyLCAxIE1hciAyMDAzOgotICBBZGQgc3VwcG9ydCBmb3IgRU1LIFRPUDg2MCBNb2R1bGUKLQotKiBQYXRjaCBieSBZdWxpIEJhcmNvaGVuLCAwMiBNYXIgMjAwMzoKLSAgQWRkIFNQRCBFRVBST00gc3VwcG9ydCBmb3IgTVBDODI2MEFEUyBib2FyZAotCi0qIFBhdGNoIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMjEgSmFuIDIwMDM6Ci0gIC0gQWRkIHN1cHBvcnQgZm9yIElubm9rb20gYm9hcmQKLSAgLSBEb24ndCBjb21wbGFpbiBpZiAiaW5zdGFsbCIgZmFpbHMKLSAgLSBSRUFETUUgY2xlYW51cCAocmVtb3ZlIGR1cGxpY2F0ZWQgbGluZXMpCi0gIC0gVXBkYXRlIFBYQSBoZWFkZXIgZmlsZXMKLQotKiBBZGQgZG9jdW1lbnRhdGlvbiBmb3IgZXhpc3RpbmcgUE9TVCBjb2RlIChkb2MvUkVBRE1FLlBPU1QpCi0KLSogUGF0Y2ggYnkgTGF1ZG5leSBSZW4sIDE1IEphbiAyMDAzOgotICBGaXggaGFuZGxpbmcgb2YgcmVkdW5kYW5kIGVudmlyb25tZW50IGluICJ0b29scy9lbnZjcmMuYyIKLQotKiBQYXRjaCBieSBEZXRsZXYgWnVuZGVsLCAyOCBGZWIgMjAwMzoKLSAgQWRkIGJlZGJ1ZyBzdXBwb3J0IGZvciA4MjR4IHN5c3RlbXMKLQotKiBBZGQgc3VwcG9ydCBmb3IgMTYgTUIgZmxhc2ggY29uZmlndXJhdGlvbiBvZiBUUkFCIGJvYXJkCi0KLSogUGF0Y2ggYnkgRXJ3aW4gUm9sLCAyNyBGZWIgMjAwMzoKLSAgQWRkIHN1cHBvcnQgZm9yIFJURU1TCi0KLSogQWRkIGltYWdlIGluZm9ybWF0aW9uIHRvIFJFQURNRQotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTggRmViIDIwMDM6Ci0gIENQQ0lJU0VSNCBjb25maWd1cmF0aW9uIHVwZGF0ZWQuCi0KLSogUGF0Y2ggYnkgU3RlZmFuIFJvZXNlLCAxNyBGZWIgMjAwMzoKLSAgRml4ZWQgYnVnIGluIGV4dC4gc2VyaWFsIGNsb2NrIHNldHVwIG9uIFBQQzQwNSAoc2luY2UgUFBDNDQwIHBvcnQpLgotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTMgRmViIDIwMDM6Ci0gIEFkZCAicGNpZGVsYXkiIGVudmlyb25tZW50IHZhcmlhYmxlIChpbiBtcywgZW5hYmxlZCB2aWEKLSAgQ09ORklHX1BDSV9CT09UREVMQVkpLgotICBQQ0kgc3BlYyAyLjIgZGVmaW5lcywgdGhhdCBhIHBjaSB0YXJnZXQgaGFzIDJeMjUgcGNpIGNsb2NrcyBhZnRlcgotICBSU1QjIHRvIHJlc3BvbmQgdG8gY29uZmlndXJhdGlvbiBjeWNsZXMgKDMzTUh6IC0+IDFzKS4KLQotKiBGaXggZHVhbCBQQ01DSUEgc2xvdCBzdXBwb3J0ICh3aGVuIHJ1bm5pbmcgd2l0aCBqdXN0IG9uZQotICBzbG90IHBvcHVsYXRlZCkKLQotKiBBZGQgVkZEIHR5cGUgZGV0ZWN0aW9uIHRvIHRyYWIgYm9hcmQKLQotKiBleHRlbmQgZHJpdmVycy9jczg5MDAuYyBkcml2ZXIgdG8gc3luY2hyb25pemUJIGV0aGFkZHIgIGVudmlyb25tZW50Ci0gIHZhcmlhYmxlIHdpdGggdmFsdWUgaW4gdGhlIEVFUFJPTQotCi0qIFBhdGNoIGJ5IFN0ZWZhbiBSb2VzZSwgMTAgRmViIDIwMDM6Ci0gIEFkZCBzdXBwb3J0IGZvciA0TUIgYW5kIDEyOE1CIG9uYm9hcmQgU0RSQU0gKGNwdS9wcGM0eHgvc2RyYW0uYykKLQotKiBBZGQgc3VwcG9ydCBmb3IgTUlQUzMyIDRLYyBDUFVzCi0KLSogQWRkIHN1cHBvcnQgZm9yIElOQ0EtSVAgQm9hcmQKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotQ2hhbmdlcyBmb3IgVS1Cb290IDAuMi4yOgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotCi0qIEFkZCBkdWFsIGV0aGVybmV0IHN1cHBvcnQgb24gUE04MjYKLQotKiBBZGQgc3VwcG9ydCBmb3IgTFhUOTcxIFBIWSBvbiBQTTgyNgotCi0qIFBhdGNoIGJ5IFRvcmQgQW5kZXJzc29uLCAxNiBKYW4gMjAwMzoKLSAgRml4IGZsYXNoIHNlY3RvciBjb3VudCBmb3IgVFFNOHh4TAotCi0qIEZpeCBJMkMgRUVQUk9NIHByb2JsZW0gb24gSUNVODYyIGJvYXJkICh3b3VsZCBvbmx5IHdyaXRlIHRoZSBmaXJzdAotICAxNiBieXRlcyBvdXQgb2YgZWFjaCAzMiBieXRlIGJsb2NrKQotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMC4yLjE6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogQWRkIHN1cHBvcnQgZm9yIFYzNyBib2FyZAotICAocGF0Y2ggYnkgSvNuIEJlbmVkaWt0c3NvbiwgMTEgRGVjIDIwMDIpCi0KLSogVXBkYXRlIGJhdWRyYXRlIGluIGJkX2luZm8gd2hlbiBpdCBnZXRzIGNoYW5nZWQKLQotKiBBZGQgd2F0Y2hkb2cgdHJpZ2dlciBwb2ludHMgd2hpbGUgd2FpdGluZyBmb3Igc2VyaWFsIHBvcnQKLSAgKHNvIGZhciBvbmx5IDh4eCAtLSBuZWVkZWQgb24gTFdNT04gd2l0aCAxMDBtcyB3YXRjaGRvZykKLQotKiBJbXByb3ZlIGNvbW1hbmQgbGluZSB0b29sIHRvIGFjY2VzcyB0aGUgVS1Cb290J3MgZW52aXJvbm1lbnQKLSAgKGZpZ3VyYXRpb24gb2YgdGhlIHV0aWxpdHksIHVzaW5nIGEgY29uZmlnIGZpbGUpCi0KLSogQWRkIHNpbmdsZSBxdW90ZSBzdXBwb3J0IGZvciAob2xkKSBjb21tYW5kIGxpbmUgcGFyc2VyCi0KLSogU3dpdGNoIExXTU9OIGJvYXJkIGRlZmF1bHQgY29uZmlnIGZyb20gRlJBTSB0byBFRVBST007Ci0gIGluIFBPU1QsIEVFUFJPTSBzaG93cyB1cCBvbiA4IGFkZHJlc3NlcwotCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci1DaGFuZ2VzIGZvciBVLUJvb3QgMC4yLjA6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLSogVXNlIDEtYnl0ZS1yZWFkIGluc3RlYWQgb2YgLXdyaXRlIGZvciBpcHJvYmUoKSBmdW5jdGlvbgotICBBZGQgaTJjIGNvbW1hbmRzIHRvIFBNODI2IGNvbmZpZwotCi0qIGV4dGVuZCBJMkMgUE9TVCBjb2RlOiBjaGVjayBmb3IgbGlzdCBvbiBrbm93biBhZGRyZXNzZXMKLQotKiBJbXByb3ZlIGxvZyBidWZmZXIgY29kZTsgdXNlICJsb2dsZXZlbCIgdG8gZGVjaWRlIHdoaWNoIG1lc3NhZ2VzCi0gIHRvIGxvZyBvbiB0aGUgY29uc29sZSwgdG9vIChsaWtlIGluIExpbnV4KTsgZ2V0IHJpZCBvZiAibG9nc3RhcnQiCi0KLSogQWRkIGNvbW1hbmQgbGluZSB0b29sIHRvIGFjY2VzcyB0aGUgVS1Cb290J3MgZW52aXJvbm1lbnQKLSAgKGJvYXJkLXNwZWNpZmljIGZvciBUUkFCIG5vdywgdG8gYmUgZml4ZWQgbGF0ZXIpCi0KLSogUGF0Y2ggYnkgSGFucy1Kb2VyZyBGcmllZGVuLCAwNiBEZWMgMjAwMgotICBGaXggbWlzYyBwcm9ibGVtcyB3aXRoIEFtaWdhT25lIHN1cHBvcnQKLQotKiBQYXRjaCBieSBDaHJpcyBIYWxsaW5hbiwgMyBEZWMgMjAwMjoKLSAgbWlub3IgY2xlYW51cCB0byB0aGUgTVBDODI0NSBFUElDIGRyaXZlcgotCi0qIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQgLCAyOCBOb3YgMjAwMgotICBBZGQgc3VwcG9ydCBmb3IgZXh0ZXJuYWwgKFNJVSkgaW50ZXJydXB0cyBvbiBNUEM4eHgKLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0ICwgMjggTm92IDIwMDIKLSAgRml4IG5lc3RlZCBzeXNjYWxscyBidWcgaW4gc3RhbmRhbG9uZSBhcHBsaWNhdGlvbnMKLQotKiBQYXRjaCBieSBEYXZpZCBN/GxsZXIsIDI3IE5vdiAyMDAyOgotICBmaXggb3V0cHV0IG9mICJwY2lpbmZvIiBjb21tYW5kIGZvciBDYXJkQnVzIGJyaWRnZSBkZXZpY2VzLgotCi0qIEZpeCBidWcgaW4gVFFNODI2MCBib2FyZCBkZXRlY3Rpb24gLSBib2FyZHMgZ290IHN0dWNrIHdoZW4gYm9hcmQgSUQKLSAgd2FzIG5vdCByZWFkYWJsZQotCi0qIEFkZCBMRUQgaW5kaWNhdGlvbiBmb3IgSURFIGFjdGl2aXR5IG9uIEtVUDRLIGJvYXJkCi0KLSogRml4IHN0YXJ0dXAgcHJvYmxlbXMgd2l0aCBWRkQgZGlzcGxheSBvbiBUUkFCCi0KLSogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMjAgTm92IDIwMDIKLSAgQWRkIGRyaXZlciBmb3IgRXBzb24gU0VEMTM4MDYgZ3JhcGhpYyBjb250cm9sbGVyLgotICBBZGQgc3VwcG9ydCBmb3IgQk1QIGxvZ29zIGluIGNmYl9jb25zb2xlIGRyaXZlci4KLQotKiBBZGRlZCBzdXBwb3J0IGZvciBib3RoIFBDTUNJQSBzbG90cyAoYXQgdGhlIHNhbWUgdGltZSEpIG9uIE1QQzh4eAotCi0qIFBhdGNoIGJ5IFJvZCBCb3ljZSwgMjEgTm92IDIwMDI6Ci0gIGZpeCBQQ01DSUEgb24gTUJYOHh4IGJvYXJkCi0KLSogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCAsIDIxIE5vdiAyMDAyCi0gIEFkZCBDRkdfQ1BNX1BPU1RfV09SRF9BRERSIHRvIG1ha2UgdGhlIG9mZnNldCBvZiB0aGUKLSAgYm9vdG1vZGUgd29yZCBpbiBEUFJBTSBjb25maWd1cmFibGUKLQotKiBQYXRjaCBieSBEYW5pZWwgRW5nc3Ry9m0sIDE4IE5vdiAyMDAyOgotICBGaXhlcyBmb3IgeDg2IHBvcnQgKG1vc3RseSBzdHJpbmdzIGlzc3VlcykKLQotKiBQYXRjaCBieSBLZW4gQ2hvdSwgMTggTm92IDIwMDI6Ci0gIEZpeCBmb3IgbmF0c2VtaSBOSUMgY2FyZHMgKERQODM4MTUpCi0KLSogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMTkgTm92IDIwMDI6Ci0gIGZpeCBhIGJ1ZyBmb3IgdGhlIE1JSSBjb25maWd1cmF0aW9uLCBhbmQgc29tZSB3YXJuaW5ncwotCi0qIFBhdGNoIGJ5IFRob21hcyBGcmllZGVuLCAxMyBOb3YgMjAwMjoKLSAgQWRkIGNvZGUgZm9yIEFtaWdhT25lIGJvYXJkCi0gIChwcmVsaW1pbmFyeSBtZXJnZSB0byBVLUJvb3QsIHN0aWxsIFdJUCkKLQotKiBQYXRjaCBieSBKb24gRGlla2VtYSwgMTIgTm92IDIwMDI6Ci0gIC0gQWRkaW5nIFVSTCBmb3IgSUVFRSBPVUkgbG9va3VwCi0gIC0gTWFraW5nIHRoZSBhdXRvYm9vdCAjZGVmaW5lcyBkZXBlbmRlbnQgb24gQ09ORklHX0FVVE9CT09UX0tFWUVECi0gICAgYmVpbmcgZGVmaW5lZC4KLSAgLSBJbiB0aGUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUyAjZGVmaW5lLCB0aGUgcm9vdC1vbi1pbml0cmQgYW5kCi0gICAgcm9vdC1vbi1uZnMgbWFjcm9zIGFyZSBkZXNpZ25lZCB0byBzd2l0Y2ggaG93IHRoZSBkZWZhdWx0IGJvb3QKLSAgICBtZXRob2QgZ2V0cyBkZWZpbmVkLgotCi0qIFBhdGNoIGJ5IERhbmllbCBFbmdzdHL2bSwgMTMgTm92IDIwMDI6Ci0gIEFkZCBzdXBwb3J0IGZvciBpMzg2IGFyY2hpdGVjdHVyZSBhbmQgQU1EIFNDNTIwIGJvYXJkCi0KLSogUGF0Y2ggYnkgUGllcnJlIEF1YmVydCwgMTIgTm92IDIwMDI6Ci0gIEFkZCBzdXBwb3J0IGZvciBET1MgZmlsZXN5c3RlbSBhbmQgYm9vdGluZyBmcm9tIERPUyBmbG9wcHkgZGlzawotCi0qIFBhdGNoIGJ5IEppbSBTYW5kb3osIDA3IE5vdiAyMDAyOgotICBJbmNyZWFzZSBudW1iZXIgb2YgbmV0d29yayBSWCBidWZmZXJzIChQS1RCVUZTUlggaW4KLSAgImluY2x1ZGUvbmV0LmgiKSBmb3IgRUVQUk8xMDAgYmFzZWQgYm9hcmRzIChlc3BlY2lhbGx5IFNQODI0MCkKLSAgd2hpY2ggc2hvd2VkICJSZWNlaXZlciBpcyBub3QgcmVhZHkiIGVycm9ycyB3aGVuIFUtQm9vdCB3YXMKLSAgcHJvY2Vzc2luZyB0aGUgcmVjZWl2ZSBidWZmZXJzIHNsb3dlciB0aGFuIHRoZSBuZXR3b3JrIGNvbnRyb2xsZXIKLSAgd2FzIGZpbGxpbmcgdGhlbS4KLQotKiBQYXRjaCBieSBBbmRyZWFzIE9iZXJyaXR0ZXIsIDA5IE5vdiAyMDAyOgotICBDaGFuZ2UgYmVoYXZpb3VyIG9mIE5ldExvb3AoKTogcmV0dXJuIC0xIGZvciBlcnJvcnMsIGZpbGVzaXplCi0gIG90aGVyd2lzZTsgcmV0dXJuIGNvZGUgMCBpcyB2YWxpZCBhbiBtZWFucyBubyBmaWxlIGxvYWRlZCAtIGluIHRoaXMKLSAgY2FzZSB0aGUgZW52aXJvbm1lbnQgc3RpbGwgZ2V0cyB1cGRhdGVkIQotCi0qIFBhdGNoZXMgYnkgSm9uIERpZWtlbWEsIDkgTm92IDIwMDI6Ci0gIC0gaW1wcm92ZSBBREMvREFDIGNsb2NraW5nIG9uIHRoZSBTQUNTbmcgYm9hcmQgdG8gYWxpZ24KLSAgICB0aGUgZmFpbGluZyBlZGdlcyBvZiBMUkNMSyBhbmQgU0NMSwotICAtIHNiYzgyNjAgY29uZmlndXJhdGlvbiB0d2Vha3MKLSAgLSBhZGQgc3RhdHVzIExFRCBzdXBwb3J0IGZvciA4Mnh4IHN5c3RlbXMKLSAgLSB3aXJlIHNzcGkvc3NwbyBjb21tYW5kcyBpbnRvIGNvbW1hbmQgaGFuZGxlcjsgaW1wcm92ZWQgZXJyb3IKLSAgICBoYW5kbGVyaW5nCi0gIC0gYWRkIHRpbWVzdGFtcCBzdXBwb3J0IGFuZCBhbHRlcm5hdGUgbWVtb3J5IHRlc3QgdG8gdGhlCi0gICAgU0FDU25nIGNvbmZpZ3VyYXRpb24KLQotKiBQYXRjaCBieSBWaW5jZSBIdXNvdnNreSwgNyBOb3YgMjAwMjoKLSAgQWRkICItbiIgdG8gbGlua2VyIG9wdGlvbnMgdG8gZ2V0IHJpZCBvZiAiTm90IGVub3VnaCByb29tIGZvcgotICBwcm9ncmFtIGhlYWRlcnMiIHByb2JsZW0KLQotKiBQYXRjaCBieSBEYXZpZCBN/GxsZXIsIDA1IE5vdiAyMDAyCi0gIFJlbmFtZSBDT05GSUdfUExMX0lOUFVUX0ZSRVEgdG8gQ09ORklHX1NZU19DTEtfRlJFUQotICBzbyB3ZSBjYW4gdXNlIGFuIGFscmVhZHkgZXhpc3RpbmcgbmFtZQotCi0qIFBhdGNoIGJ5IFBpZXJyZSBBdWJlcnQsIDA1IE5vdiAyMDAyCi0gIEhhcmR3YXJlIHJlbGF0aWVkIGltcHJvdm1lbnRzIGluIEZEQyBib290IGNvZGUKLQotKiBQYXRjaCBieSBIb2xnZXIgU2NodXJpZywgNSBOb3YgMjAwMjoKLSAgTWFrZSB0aGUgUFhBIHJlYWxseSBjaGFuZ2UgaXQncyBmcmVxdWVuY3kKLQotKiBQYXRjaCBieSBQaWVycmUgQXViZXJ0LCAwNSBOb3YgMjAwMgotICBBZGQgc3VwcG9ydCBmb3Igc2xhdmUgc2VyaWFsIFNwYXJ0YW4gMiBGUEdBcwotCi0qIEZpeCB1bmluaXRpYWxpemVkIG1lbW9yeSAoTUFDCSBhZGRyZXNzKSAgaW4gIDh4eCAgU0NDL0ZFQyAgZXRoZXJuZXQKLSAgZHJpdmVycwotCi0qIEFkZCBzdXBwb3J0IGZvciBsb2cgYnVmZmVyIHdoaWNoIGNhbiBiZSBwYXNzZWQgdG8gTGludXgga2VybmVsJ3MKLSAgc3lzbG9nIG1lY2hhbmlzbTsgdXNlZCBlc3BlY2lhbGx5IGZvciBQT1NUIHJlc3VsdHMuCi0KLSogUGF0Y2ggYnkgS2xhdXMgSGV5ZGVjaywgMzEgT2N0IDIwMDI6Ci0gIEFkZCBpbml0aWFsIHN1cHBvcnQgZm9yIGt1cDRrIGJvYXJkCi0KLSogUGF0Y2ggYnkgUm9iZXJ0IFNjaHdlYmVsLCAwNCBOb3YgMjAwMjoKLSAgLSB1c2Ugd2F0Y2hkb2cgdG8gcmVzZXQgUFhBMjUwIHN5c3RlbXMKLSAgLSBhZGRlZCBwcm9ncmVzcyBjYWxsYmFja3MgdG8gKHNvbWUgb2YgdGhlKSBBUk0gY29kZQotICAtIHVwZGF0ZSBmb3IgQ29nZW50IENTQjIyNiBib2FyZAotCi0qIEFkZCBzdXBwb3J0IGZvciBGUFM4NjAgYm9hcmQKLQotKiBQYXRjaCBieSBHdWlsbGF1bWUgQWxleGFuZHJlLCwgMDQgTm92IDIwMDI6Ci0gIEltcHJvdmUgUENJIGFjY2VzcyBvbiAzMi1iaXRzIENvbXBhY3QgUENJIGJ1cwotCi0qIEZpeCBtZGVsYXkoKSBvbiBUUkFCIC0gdGhpcyB3YXMgc3RpbGwgdGhlIGRlYnVnZ2luZyB2ZXJzaW9uIHdpdGgKLSAgc2Vjb25kcyBpbnN0ZWFkIG9mIG1zLgotCi0qIFBhdGNoIGJ5IFJvYmVydCBTY2h3ZWJlbCwgMSBOb3YgMjAwMjoKLSAgWFNjYWxlIHJlbGF0ZWQgY2xlYW51cCAoYWZmZWN0cyBhbGwgQVJNIGJvYXJkcykKLQotKiBDbGVhbnVwIG9mIG5hbWVzIGFuZCBSRUFETUUuCi0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLU5vdGVzIGZvciBVLUJvb3QgMC4xLjA6Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoaXMgaXMgdGhlIGluaXRpYWwgdmVyc2lvbiBvZiAiRGFzIFUtQm9vdCIsIHRoZSBVbml2ZXJzYWwgQm9vdCBMb2FkZXIuCi0KLUl0IGlzIGJhc2VkIG9uIHZlcnNpb24gMi4wLjAgKHRoZSAiSGFsbG93ZWVuIFJlbGVhc2UiKSBvZiBQUENCb290LgotRm9yIGluZm9ybWF0aW9uIGFib3V0IHRoZSBoaXN0b3J5IG9mIHRoZSBwcm9qZWN0IHBsZWFzZSBzZWUgdGhlCi1QUENCb290IHByb2plY3QgcGFnZSBhdCBodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3BwY2Jvb3QKLQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQpkaWZmIC0tZ2l0IGEvTUFLRUFMTCBiL01BS0VBTEwKaW5kZXggMjEzMzU1OS4uYjM0YWUzMyAxMDA3NTUKLS0tIGEvTUFLRUFMTAorKysgYi9NQUtFQUxMCkBAIC00MjgsNiArNDI4LDcgQEAKIAlQMjAyMFJEQl9OQU5ECVwKIAlQMjAyMFJEQl9TRENBUkQJXAogCVAyMDIwUkRCX1NQSUZMQVNICVwKKwlQNDA4MERTCQlcCiAJUE04NTQJCVwKIAlQTTg1NgkJXAogCXNiYzg1NDAJCVwKZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKaW5kZXggOWNlYTA2OS4uNGYxY2IxYiAxMDA2NDQKLS0tIGEvTWFrZWZpbGUKKysrIGIvTWFrZWZpbGUKQEAgLTE3ODgsNiArMTc4OCw3IEBACiBQMjAxMFJEQl9OQU5EX2NvbmZpZyBcCiBQMjAxMFJEQl9TRENBUkRfY29uZmlnIFwKIFAyMDEwUkRCX1NQSUZMQVNIX2NvbmZpZyBcCitQMjAyMERTX0REUjJfY29uZmlnIFwKIFAyMDIwUkRCX2NvbmZpZyBcCiBQMjAyMFJEQl9OQU5EX2NvbmZpZyBcCiBQMjAyMFJEQl9TRENBUkRfY29uZmlnIFwKZGlmZiAtLWdpdCBhL1JFQURNRSBiL1JFQURNRQppbmRleCBjOWZiMjg0Li5iNmJmNDUxIDEwMDY0NAotLS0gYS9SRUFETUUKKysrIGIvUkVBRE1FCkBAIC0yNTcyLDcgKzI1NzIsNyBAQAogCiBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBlbnZpcm9ubWVudCBpcyByZWFkLW9ubHkgdW50aWwgdGhlIG1vbml0b3IKIGhhcyBiZWVuIHJlbG9jYXRlZCB0byBSQU0gYW5kIGEgUkFNIGNvcHkgb2YgdGhlIGVudmlyb25tZW50IGhhcyBiZWVuCi1jcmVhdGVkOyBhbHNvLCB3aGVuIHVzaW5nIEVFUFJPTSB5b3Ugd2lsbCBoYXZlIHRvIHVzZSBnZXRlbnZfcigpCitjcmVhdGVkOyBhbHNvLCB3aGVuIHVzaW5nIEVFUFJPTSB5b3Ugd2lsbCBoYXZlIHRvIHVzZSBnZXRlbnZfZigpCiB1bnRpbCB0aGVuIHRvIHJlYWQgZW52aXJvbm1lbnQgdmFyaWFibGVzLgogCiBUaGUgZW52aXJvbm1lbnQgaXMgcHJvdGVjdGVkIGJ5IGEgQ1JDMzIgY2hlY2tzdW0uIEJlZm9yZSB0aGUgbW9uaXRvcgpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vY3B1L2FybXY3L29tYXAtY29tbW9uL3RpbWVyLmMgYi9hcmNoL2FybS9jcHUvYXJtdjcvb21hcC1jb21tb24vdGltZXIuYwppbmRleCA2OWUyODVmLi42YjhjZjdiIDEwMDY0NAotLS0gYS9hcmNoL2FybS9jcHUvYXJtdjcvb21hcC1jb21tb24vdGltZXIuYworKysgYi9hcmNoL2FybS9jcHUvYXJtdjcvb21hcC1jb21tb24vdGltZXIuYwpAQCAtNDEsMTIgKzQxLDggQEAKIAogLyoKICAqIE5vdGhpbmcgcmVhbGx5IHRvIGRvIHdpdGggaW50ZXJydXB0cywganVzdCBzdGFydHMgdXAgYSBjb3VudGVyLgotICogV2UgcnVuIHRoZSBjb3VudGVyIHdpdGggMTNNSHosIGRpdmlkZWQgYnkgOCwgcmVzdWx0aW5nIGluIHRpbWVyCi0gKiBmcmVxdWVuY3kgb2YgMS42MjVNSHouIFdpdGggMzJiaXQgY291bnRlciByZWdpc3RlciwgY291bnRlcgotICogb3ZlcmZsb3dzIGluIH40NG1pbgogICovCiAKLS8qIDEzTUh6IC8gOCA9IDEuNjI1TUh6ICovCiAjZGVmaW5lIFRJTUVSX0NMT0NLCShWX1NDTEsgLyAoMiA8PCBDT05GSUdfU1lTX1BUVikpCiAjZGVmaW5lIFRJTUVSX0xPQURfVkFMCTB4ZmZmZmZmZmYKIApAQCAtODQsMTEgKzgwLDYgQEAKIC8qIGRlbGF5IHggdXNlY29uZHMgKi8KIHZvaWQgX191ZGVsYXkodW5zaWduZWQgbG9uZyB1c2VjKQogewotI2lmIGRlZmluZWQoQ09ORklHX09NQVA0NFhYKQotCS8qIFRPRE8gdGVtcG9yYXJ5IGhhY2sgdW50aWwgT01BUDQgY2xvY2sgc2V0dXAgcm91dGluZXMgYXJlIHByZXNlbnQgKi8KLQlpZiAodXNlYyA+IDEwMDApCi0JCXVzZWMgPSB1c2VjLzEwMDA7Ci0jZW5kaWYKIAlsb25nIHRtbyA9IHVzZWMgKiAoVElNRVJfQ0xPQ0sgLyAxMDAwKSAvIDEwMDA7CiAJdW5zaWduZWQgbG9uZyBub3csIGxhc3QgPSByZWFkbCgmdGltZXJfYmFzZS0+dGNycik7CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2NwdS9hcm12Ny9vbWFwNC9ib2FyZC5jIGIvYXJjaC9hcm0vY3B1L2FybXY3L29tYXA0L2JvYXJkLmMKaW5kZXggNWJmNzE3My4uMmU4MGQxZiAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vY3B1L2FybXY3L29tYXA0L2JvYXJkLmMKKysrIGIvYXJjaC9hcm0vY3B1L2FybXY3L29tYXA0L2JvYXJkLmMKQEAgLTg4LDMgKzg4LDE0IEBACiAJcmV0dXJuIDA7CiB9CiAKKy8qCisqIFRoaXMgZnVuY3Rpb24gaXMgY2FsbGVkIGJ5IHN0YXJ0X2FybWJvb3QuIFlvdSBjYW4gcmVsaWFibHkgdXNlIHN0YXRpYworKiBkYXRhLiBBbnkgYm9vdC10aW1lIGZ1bmN0aW9uIHRoYXQgcmVxdWlyZSBzdGF0aWMgZGF0YSBzaG91bGQgYmUKKyogY2FsbGVkIGZyb20gaGVyZQorKi8KK2ludCBhcmNoX2NwdV9pbml0KHZvaWQpCit7CisJc2V0X211eGNvbmZfcmVncygpOworCXJldHVybiAwOworfQorCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXAzL2NwdS5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1vbWFwMy9jcHUuaAppbmRleCBjMDcyYzI3Li4zOTBiMDA3IDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXAzL2NwdS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtb21hcDMvY3B1LmgKQEAgLTQ4Myw0ICs0ODMsNyBAQAogI2RlZmluZSBJMkNfQkFTRTIJCShPTUFQMzRYWF9DT1JFX0w0X0lPX0JBU0UgKyAweDcyMDAwKQogI2RlZmluZSBJMkNfQkFTRTMJCShPTUFQMzRYWF9DT1JFX0w0X0lPX0JBU0UgKyAweDYwMDAwKQogCisvKiBNVVNCIGJhc2UgKi8KKyNkZWZpbmUgTVVTQl9CQVNFCQkoT01BUDM0WFhfQ09SRV9MNF9JT19CQVNFICsgMHhBQjAwMCkKKwogI2VuZGlmIC8qIF9DUFVfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1vbWFwMy9pMmMuaCBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtb21hcDMvaTJjLmgKaW5kZXggN2E0YTczYS4uZDJlNzQ4OCAxMDA2NDQKLS0tIGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1vbWFwMy9pMmMuaAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXAzL2kyYy5oCkBAIC0zNCw3ICszNCw5IEBACiAJdW5zaWduZWQgc2hvcnQgc3RhdDsJLyogMHgwOCAqLwogCXVuc2lnbmVkIHNob3J0IHJlczM7CiAJdW5zaWduZWQgc2hvcnQgaXY7CS8qIDB4MEMgKi8KLQl1bnNpZ25lZCBzaG9ydCByZXM0WzNdOworCXVuc2lnbmVkIHNob3J0IHJlczQ7CisJdW5zaWduZWQgc2hvcnQgc3lzczsJLyogMHgxMCAqLworCXVuc2lnbmVkIHNob3J0IHJlczRhOwogCXVuc2lnbmVkIHNob3J0IGJ1ZjsJLyogMHgxNCAqLwogCXVuc2lnbmVkIHNob3J0IHJlczU7CiAJdW5zaWduZWQgc2hvcnQgY250OwkvKiAweDE4ICovCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXA0L2NwdS5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1vbWFwNC9jcHUuaAppbmRleCBjMDU2Yjk1Li43ZDU3NDhhIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXA0L2NwdS5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtb21hcDQvY3B1LmgKQEAgLTEzOSw0ICsxMzksNyBAQAogI2RlZmluZSBJMkNfQkFTRTIJCShPTUFQNDRYWF9MNF9QRVJfQkFTRSArIDB4NzIwMDApCiAjZGVmaW5lIEkyQ19CQVNFMwkJKE9NQVA0NFhYX0w0X1BFUl9CQVNFICsgMHg2MDAwMCkKIAorLyogTVVTQiBiYXNlICovCisjZGVmaW5lIE1VU0JfQkFTRQkJKE9NQVA0NFhYX0w0X0NPUkVfQkFTRSArIDB4QUIwMDApCisKICNlbmRpZiAvKiBfQ1BVX0ggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtb21hcDQvbXV4X29tYXA0LmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXA0L211eF9vbWFwNC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAxOTU3NGIKLS0tIC9kZXYvbnVsbAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXA0L211eF9vbWFwNC5oCkBAIC0wLDAgKzEsMzQ0IEBACisvKgorICogKEMpIENvcHlyaWdodCAyMDA0LTIwMDkKKyAqIFRleGFzIEluc3RydW1lbnRzIEluY29ycG9yYXRlZAorICogUmljaGFyZCBXb29kcnVmZgkJPHItd29vZHJ1ZmYyQHRpLmNvbT4KKyAqIEFuZWVzaCBWCQkJPGFuZWVzaEB0aS5jb20+CisgKiBCYWxhamkgS3Jpc2huYW1vb3J0aHkJPGJhbGFqaXRrQHRpLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisjaWZuZGVmIF9NVVhfT01BUDRfSF8KKyNkZWZpbmUgX01VWF9PTUFQNF9IXworCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKK3N0cnVjdCBwYWRfY29uZl9lbnRyeSB7CisKKwl1MTYgb2Zmc2V0OworCisJdTE2IHZhbDsKKworfSBfX2F0dHJpYnV0ZV9fICgocGFja2VkKSk7CisKKyNpZmRlZiBDT05GSUdfT0ZGX1BBRENPTkYKKyNkZWZpbmUgT0ZGX1BEICAgICAgICAgICgxIDw8IDEyKQorI2RlZmluZSBPRkZfUFUgICAgICAgICAgKDMgPDwgMTIpCisjZGVmaW5lIE9GRl9PVVRfUFREICAgICAoMCA8PCAxMCkKKyNkZWZpbmUgT0ZGX09VVF9QVFUgICAgICgyIDw8IDEwKQorI2RlZmluZSBPRkZfSU4gICAgICAgICAgKDEgPDwgMTApCisjZGVmaW5lIE9GRl9PVVQgICAgICAgICAoMCA8PCAxMCkKKyNkZWZpbmUgT0ZGX0VOICAgICAgICAgICgxIDw8IDkpCisjZWxzZQorI2RlZmluZSBPRkZfUEQgICAgICAgICAgKDAgPDwgMTIpCisjZGVmaW5lIE9GRl9QVSAgICAgICAgICAoMCA8PCAxMikKKyNkZWZpbmUgT0ZGX09VVF9QVEQgICAgICgwIDw8IDEwKQorI2RlZmluZSBPRkZfT1VUX1BUVSAgICAgKDAgPDwgMTApCisjZGVmaW5lIE9GRl9JTiAgICAgICAgICAoMCA8PCAxMCkKKyNkZWZpbmUgT0ZGX09VVCAgICAgICAgICgwIDw8IDEwKQorI2RlZmluZSBPRkZfRU4gICAgICAgICAgKDAgPDwgOSkKKyNlbmRpZgorCisjZGVmaW5lIElFTiAgICAgICAgICAgICAoMSA8PCA4KQorI2RlZmluZSBJRElTICAgICAgICAgICAgKDAgPDwgOCkKKyNkZWZpbmUgUFRVICAgICAgICAgICAgICgzIDw8IDMpCisjZGVmaW5lIFBURCAgICAgICAgICAgICAoMSA8PCAzKQorI2RlZmluZSBFTiAgICAgICAgICAgICAgKDEgPDwgMykKKyNkZWZpbmUgRElTICAgICAgICAgICAgICgwIDw8IDMpCisKKyNkZWZpbmUgTTAgICAgICAgICAgICAgIDAKKyNkZWZpbmUgTTEgICAgICAgICAgICAgIDEKKyNkZWZpbmUgTTIgICAgICAgICAgICAgIDIKKyNkZWZpbmUgTTMgICAgICAgICAgICAgIDMKKyNkZWZpbmUgTTQgICAgICAgICAgICAgIDQKKyNkZWZpbmUgTTUgICAgICAgICAgICAgIDUKKyNkZWZpbmUgTTYgICAgICAgICAgICAgIDYKKyNkZWZpbmUgTTcgICAgICAgICAgICAgIDcKKworI2RlZmluZSBTQUZFX01PREUJTTcKKworI2lmZGVmIENPTkZJR19PRkZfUEFEQ09ORgorI2RlZmluZSBPRkZfSU5fUEQgICAgICAgKE9GRl9QRCB8IE9GRl9JTiB8IE9GRl9FTikKKyNkZWZpbmUgT0ZGX0lOX1BVICAgICAgIChPRkZfUFUgfCBPRkZfSU4gfCBPRkZfRU4pCisjZGVmaW5lIE9GRl9PVVRfUEQgICAgICAoT0ZGX09VVF9QVEQgfCBPRkZfT1VUIHwgT0ZGX0VOKQorI2RlZmluZSBPRkZfT1VUX1BVICAgICAgKE9GRl9PVVRfUFRVIHwgT0ZGX09VVCB8IE9GRl9FTikKKyNlbHNlCisjZGVmaW5lIE9GRl9JTl9QRCAgICAgICAwCisjZGVmaW5lIE9GRl9JTl9QVSAgICAgICAwCisjZGVmaW5lIE9GRl9PVVRfUEQgICAgICAwCisjZGVmaW5lIE9GRl9PVVRfUFUgICAgICAwCisjZW5kaWYKKworI2RlZmluZSBDT1JFX1JFVklTSU9OCQkweDAwMDAKKyNkZWZpbmUgQ09SRV9IV0lORk8JCTB4MDAwNAorI2RlZmluZSBDT1JFX1NZU0NPTkZJRwkJMHgwMDEwCisjZGVmaW5lIEdQTUNfQUQwCQkweDAwNDAKKyNkZWZpbmUgR1BNQ19BRDEJCTB4MDA0MgorI2RlZmluZSBHUE1DX0FEMgkJMHgwMDQ0CisjZGVmaW5lIEdQTUNfQUQzCQkweDAwNDYKKyNkZWZpbmUgR1BNQ19BRDQJCTB4MDA0OAorI2RlZmluZSBHUE1DX0FENQkJMHgwMDRBCisjZGVmaW5lIEdQTUNfQUQ2CQkweDAwNEMKKyNkZWZpbmUgR1BNQ19BRDcJCTB4MDA0RQorI2RlZmluZSBHUE1DX0FEOAkJMHgwMDUwCisjZGVmaW5lIEdQTUNfQUQ5CQkweDAwNTIKKyNkZWZpbmUgR1BNQ19BRDEwCQkweDAwNTQKKyNkZWZpbmUgR1BNQ19BRDExCQkweDAwNTYKKyNkZWZpbmUgR1BNQ19BRDEyCQkweDAwNTgKKyNkZWZpbmUgR1BNQ19BRDEzCQkweDAwNUEKKyNkZWZpbmUgR1BNQ19BRDE0CQkweDAwNUMKKyNkZWZpbmUgR1BNQ19BRDE1CQkweDAwNUUKKyNkZWZpbmUgR1BNQ19BMTYJCTB4MDA2MAorI2RlZmluZSBHUE1DX0ExNwkJMHgwMDYyCisjZGVmaW5lIEdQTUNfQTE4CQkweDAwNjQKKyNkZWZpbmUgR1BNQ19BMTkJCTB4MDA2NgorI2RlZmluZSBHUE1DX0EyMAkJMHgwMDY4CisjZGVmaW5lIEdQTUNfQTIxCQkweDAwNkEKKyNkZWZpbmUgR1BNQ19BMjIJCTB4MDA2QworI2RlZmluZSBHUE1DX0EyMwkJMHgwMDZFCisjZGVmaW5lIEdQTUNfQTI0CQkweDAwNzAKKyNkZWZpbmUgR1BNQ19BMjUJCTB4MDA3MgorI2RlZmluZSBHUE1DX05DUzAJCTB4MDA3NAorI2RlZmluZSBHUE1DX05DUzEJCTB4MDA3NgorI2RlZmluZSBHUE1DX05DUzIJCTB4MDA3OAorI2RlZmluZSBHUE1DX05DUzMJCTB4MDA3QQorI2RlZmluZSBHUE1DX05XUAkJMHgwMDdDCisjZGVmaW5lIEdQTUNfQ0xLCQkweDAwN0UKKyNkZWZpbmUgR1BNQ19OQURWX0FMRQkJMHgwMDgwCisjZGVmaW5lIEdQTUNfTk9FCQkweDAwODIKKyNkZWZpbmUgR1BNQ19OV0UJCTB4MDA4NAorI2RlZmluZSBHUE1DX05CRTBfQ0xFCQkweDAwODYKKyNkZWZpbmUgR1BNQ19OQkUxCQkweDAwODgKKyNkZWZpbmUgR1BNQ19XQUlUMAkJMHgwMDhBCisjZGVmaW5lIEdQTUNfV0FJVDEJCTB4MDA4QworI2RlZmluZSBDMkNfREFUQTExCQkweDAwOEUKKyNkZWZpbmUgQzJDX0RBVEExMgkJMHgwMDkwCisjZGVmaW5lIEMyQ19EQVRBMTMJCTB4MDA5MgorI2RlZmluZSBDMkNfREFUQTE0CQkweDAwOTQKKyNkZWZpbmUgQzJDX0RBVEExNQkJMHgwMDk2CisjZGVmaW5lIEhETUlfSFBECQkweDAwOTgKKyNkZWZpbmUgSERNSV9DRUMJCTB4MDA5QQorI2RlZmluZSBIRE1JX0REQ19TQ0wJCTB4MDA5QworI2RlZmluZSBIRE1JX0REQ19TREEJCTB4MDA5RQorI2RlZmluZSBDU0kyMV9EWDAJCTB4MDBBMAorI2RlZmluZSBDU0kyMV9EWTAJCTB4MDBBMgorI2RlZmluZSBDU0kyMV9EWDEJCTB4MDBBNAorI2RlZmluZSBDU0kyMV9EWTEJCTB4MDBBNgorI2RlZmluZSBDU0kyMV9EWDIJCTB4MDBBOAorI2RlZmluZSBDU0kyMV9EWTIJCTB4MDBBQQorI2RlZmluZSBDU0kyMV9EWDMJCTB4MDBBQworI2RlZmluZSBDU0kyMV9EWTMJCTB4MDBBRQorI2RlZmluZSBDU0kyMV9EWDQJCTB4MDBCMAorI2RlZmluZSBDU0kyMV9EWTQJCTB4MDBCMgorI2RlZmluZSBDU0kyMl9EWDAJCTB4MDBCNAorI2RlZmluZSBDU0kyMl9EWTAJCTB4MDBCNgorI2RlZmluZSBDU0kyMl9EWDEJCTB4MDBCOAorI2RlZmluZSBDU0kyMl9EWTEJCTB4MDBCQQorI2RlZmluZSBDQU1fU0hVVFRFUgkJMHgwMEJDCisjZGVmaW5lIENBTV9TVFJPQkUJCTB4MDBCRQorI2RlZmluZSBDQU1fR0xPQkFMUkVTRVQJCTB4MDBDMAorI2RlZmluZSBVU0JCMV9VTFBJVExMX0NMSwkweDAwQzIKKyNkZWZpbmUgVVNCQjFfVUxQSVRMTF9TVFAJMHgwMEM0CisjZGVmaW5lIFVTQkIxX1VMUElUTExfRElSCTB4MDBDNgorI2RlZmluZSBVU0JCMV9VTFBJVExMX05YVAkweDAwQzgKKyNkZWZpbmUgVVNCQjFfVUxQSVRMTF9EQVQwCTB4MDBDQQorI2RlZmluZSBVU0JCMV9VTFBJVExMX0RBVDEJMHgwMENDCisjZGVmaW5lIFVTQkIxX1VMUElUTExfREFUMgkweDAwQ0UKKyNkZWZpbmUgVVNCQjFfVUxQSVRMTF9EQVQzCTB4MDBEMAorI2RlZmluZSBVU0JCMV9VTFBJVExMX0RBVDQJMHgwMEQyCisjZGVmaW5lIFVTQkIxX1VMUElUTExfREFUNQkweDAwRDQKKyNkZWZpbmUgVVNCQjFfVUxQSVRMTF9EQVQ2CTB4MDBENgorI2RlZmluZSBVU0JCMV9VTFBJVExMX0RBVDcJMHgwMEQ4CisjZGVmaW5lIFVTQkIxX0hTSUNfREFUQQkJMHgwMERBCisjZGVmaW5lIFVTQkIxX0hTSUNfU1RST0JFCTB4MDBEQworI2RlZmluZSBVU0JDMV9JQ1VTQl9EUAkJMHgwMERFCisjZGVmaW5lIFVTQkMxX0lDVVNCX0RNCQkweDAwRTAKKyNkZWZpbmUgU0RNTUMxX0NMSwkJMHgwMEUyCisjZGVmaW5lIFNETU1DMV9DTUQJCTB4MDBFNAorI2RlZmluZSBTRE1NQzFfREFUMAkJMHgwMEU2CisjZGVmaW5lIFNETU1DMV9EQVQxCQkweDAwRTgKKyNkZWZpbmUgU0RNTUMxX0RBVDIJCTB4MDBFQQorI2RlZmluZSBTRE1NQzFfREFUMwkJMHgwMEVDCisjZGVmaW5lIFNETU1DMV9EQVQ0CQkweDAwRUUKKyNkZWZpbmUgU0RNTUMxX0RBVDUJCTB4MDBGMAorI2RlZmluZSBTRE1NQzFfREFUNgkJMHgwMEYyCisjZGVmaW5lIFNETU1DMV9EQVQ3CQkweDAwRjQKKyNkZWZpbmUgQUJFX01DQlNQMl9DTEtYCQkweDAwRjYKKyNkZWZpbmUgQUJFX01DQlNQMl9EUgkJMHgwMEY4CisjZGVmaW5lIEFCRV9NQ0JTUDJfRFgJCTB4MDBGQQorI2RlZmluZSBBQkVfTUNCU1AyX0ZTWAkJMHgwMEZDCisjZGVmaW5lIEFCRV9NQ0JTUDFfQ0xLWAkJMHgwMEZFCisjZGVmaW5lIEFCRV9NQ0JTUDFfRFIJCTB4MDEwMAorI2RlZmluZSBBQkVfTUNCU1AxX0RYCQkweDAxMDIKKyNkZWZpbmUgQUJFX01DQlNQMV9GU1gJCTB4MDEwNAorI2RlZmluZSBBQkVfUERNX1VMX0RBVEEJCTB4MDEwNgorI2RlZmluZSBBQkVfUERNX0RMX0RBVEEJCTB4MDEwOAorI2RlZmluZSBBQkVfUERNX0ZSQU1FCQkweDAxMEEKKyNkZWZpbmUgQUJFX1BETV9MQl9DTEsJCTB4MDEwQworI2RlZmluZSBBQkVfQ0xLUwkJMHgwMTBFCisjZGVmaW5lIEFCRV9ETUlDX0NMSzEJCTB4MDExMAorI2RlZmluZSBBQkVfRE1JQ19ESU4xCQkweDAxMTIKKyNkZWZpbmUgQUJFX0RNSUNfRElOMgkJMHgwMTE0CisjZGVmaW5lIEFCRV9ETUlDX0RJTjMJCTB4MDExNgorI2RlZmluZSBVQVJUMl9DVFMJCTB4MDExOAorI2RlZmluZSBVQVJUMl9SVFMJCTB4MDExQQorI2RlZmluZSBVQVJUMl9SWAkJMHgwMTFDCisjZGVmaW5lIFVBUlQyX1RYCQkweDAxMUUKKyNkZWZpbmUgSERRX1NJTwkJCTB4MDEyMAorI2RlZmluZSBJMkMxX1NDTAkJMHgwMTIyCisjZGVmaW5lIEkyQzFfU0RBCQkweDAxMjQKKyNkZWZpbmUgSTJDMl9TQ0wJCTB4MDEyNgorI2RlZmluZSBJMkMyX1NEQQkJMHgwMTI4CisjZGVmaW5lIEkyQzNfU0NMCQkweDAxMkEKKyNkZWZpbmUgSTJDM19TREEJCTB4MDEyQworI2RlZmluZSBJMkM0X1NDTAkJMHgwMTJFCisjZGVmaW5lIEkyQzRfU0RBCQkweDAxMzAKKyNkZWZpbmUgTUNTUEkxX0NMSwkJMHgwMTMyCisjZGVmaW5lIE1DU1BJMV9TT01JCQkweDAxMzQKKyNkZWZpbmUgTUNTUEkxX1NJTU8JCTB4MDEzNgorI2RlZmluZSBNQ1NQSTFfQ1MwCQkweDAxMzgKKyNkZWZpbmUgTUNTUEkxX0NTMQkJMHgwMTNBCisjZGVmaW5lIE1DU1BJMV9DUzIJCTB4MDEzQworI2RlZmluZSBNQ1NQSTFfQ1MzCQkweDAxM0UKKyNkZWZpbmUgVUFSVDNfQ1RTX1JDVFgJCTB4MDE0MAorI2RlZmluZSBVQVJUM19SVFNfU0QJCTB4MDE0MgorI2RlZmluZSBVQVJUM19SWF9JUlJYCQkweDAxNDQKKyNkZWZpbmUgVUFSVDNfVFhfSVJUWAkJMHgwMTQ2CisjZGVmaW5lIFNETU1DNV9DTEsJCTB4MDE0OAorI2RlZmluZSBTRE1NQzVfQ01ECQkweDAxNEEKKyNkZWZpbmUgU0RNTUM1X0RBVDAJCTB4MDE0QworI2RlZmluZSBTRE1NQzVfREFUMQkJMHgwMTRFCisjZGVmaW5lIFNETU1DNV9EQVQyCQkweDAxNTAKKyNkZWZpbmUgU0RNTUM1X0RBVDMJCTB4MDE1MgorI2RlZmluZSBNQ1NQSTRfQ0xLCQkweDAxNTQKKyNkZWZpbmUgTUNTUEk0X1NJTU8JCTB4MDE1NgorI2RlZmluZSBNQ1NQSTRfU09NSQkJMHgwMTU4CisjZGVmaW5lIE1DU1BJNF9DUzAJCTB4MDE1QQorI2RlZmluZSBVQVJUNF9SWAkJMHgwMTVDCisjZGVmaW5lIFVBUlQ0X1RYCQkweDAxNUUKKyNkZWZpbmUgVVNCQjJfVUxQSVRMTF9DTEsJMHgwMTYwCisjZGVmaW5lIFVTQkIyX1VMUElUTExfU1RQCTB4MDE2MgorI2RlZmluZSBVU0JCMl9VTFBJVExMX0RJUgkweDAxNjQKKyNkZWZpbmUgVVNCQjJfVUxQSVRMTF9OWFQJMHgwMTY2CisjZGVmaW5lIFVTQkIyX1VMUElUTExfREFUMAkweDAxNjgKKyNkZWZpbmUgVVNCQjJfVUxQSVRMTF9EQVQxCTB4MDE2QQorI2RlZmluZSBVU0JCMl9VTFBJVExMX0RBVDIJMHgwMTZDCisjZGVmaW5lIFVTQkIyX1VMUElUTExfREFUMwkweDAxNkUKKyNkZWZpbmUgVVNCQjJfVUxQSVRMTF9EQVQ0CTB4MDE3MAorI2RlZmluZSBVU0JCMl9VTFBJVExMX0RBVDUJMHgwMTcyCisjZGVmaW5lIFVTQkIyX1VMUElUTExfREFUNgkweDAxNzQKKyNkZWZpbmUgVVNCQjJfVUxQSVRMTF9EQVQ3CTB4MDE3NgorI2RlZmluZSBVU0JCMl9IU0lDX0RBVEEJCTB4MDE3OAorI2RlZmluZSBVU0JCMl9IU0lDX1NUUk9CRQkweDAxN0EKKyNkZWZpbmUgVU5JUFJPX1RYMAkJMHgwMTdDCisjZGVmaW5lIFVOSVBST19UWTAJCTB4MDE3RQorI2RlZmluZSBVTklQUk9fVFgxCQkweDAxODAKKyNkZWZpbmUgVU5JUFJPX1RZMQkJMHgwMTgyCisjZGVmaW5lIFVOSVBST19UWDIJCTB4MDE4NAorI2RlZmluZSBVTklQUk9fVFkyCQkweDAxODYKKyNkZWZpbmUgVU5JUFJPX1JYMAkJMHgwMTg4CisjZGVmaW5lIFVOSVBST19SWTAJCTB4MDE4QQorI2RlZmluZSBVTklQUk9fUlgxCQkweDAxOEMKKyNkZWZpbmUgVU5JUFJPX1JZMQkJMHgwMThFCisjZGVmaW5lIFVOSVBST19SWDIJCTB4MDE5MAorI2RlZmluZSBVTklQUk9fUlkyCQkweDAxOTIKKyNkZWZpbmUgVVNCQTBfT1RHX0NFCQkweDAxOTQKKyNkZWZpbmUgVVNCQTBfT1RHX0RQCQkweDAxOTYKKyNkZWZpbmUgVVNCQTBfT1RHX0RNCQkweDAxOTgKKyNkZWZpbmUgRlJFRl9DTEsxX09VVAkJMHgwMTlBCisjZGVmaW5lIEZSRUZfQ0xLMl9PVVQJCTB4MDE5QworI2RlZmluZSBTWVNfTklSUTEJCTB4MDE5RQorI2RlZmluZSBTWVNfTklSUTIJCTB4MDFBMAorI2RlZmluZSBTWVNfQk9PVDAJCTB4MDFBMgorI2RlZmluZSBTWVNfQk9PVDEJCTB4MDFBNAorI2RlZmluZSBTWVNfQk9PVDIJCTB4MDFBNgorI2RlZmluZSBTWVNfQk9PVDMJCTB4MDFBOAorI2RlZmluZSBTWVNfQk9PVDQJCTB4MDFBQQorI2RlZmluZSBTWVNfQk9PVDUJCTB4MDFBQworI2RlZmluZSBEUE1fRU1VMAkJMHgwMUFFCisjZGVmaW5lIERQTV9FTVUxCQkweDAxQjAKKyNkZWZpbmUgRFBNX0VNVTIJCTB4MDFCMgorI2RlZmluZSBEUE1fRU1VMwkJMHgwMUI0CisjZGVmaW5lIERQTV9FTVU0CQkweDAxQjYKKyNkZWZpbmUgRFBNX0VNVTUJCTB4MDFCOAorI2RlZmluZSBEUE1fRU1VNgkJMHgwMUJBCisjZGVmaW5lIERQTV9FTVU3CQkweDAxQkMKKyNkZWZpbmUgRFBNX0VNVTgJCTB4MDFCRQorI2RlZmluZSBEUE1fRU1VOQkJMHgwMUMwCisjZGVmaW5lIERQTV9FTVUxMAkJMHgwMUMyCisjZGVmaW5lIERQTV9FTVUxMQkJMHgwMUM0CisjZGVmaW5lIERQTV9FTVUxMgkJMHgwMUM2CisjZGVmaW5lIERQTV9FTVUxMwkJMHgwMUM4CisjZGVmaW5lIERQTV9FTVUxNAkJMHgwMUNBCisjZGVmaW5lIERQTV9FTVUxNQkJMHgwMUNDCisjZGVmaW5lIERQTV9FTVUxNgkJMHgwMUNFCisjZGVmaW5lIERQTV9FTVUxNwkJMHgwMUQwCisjZGVmaW5lIERQTV9FTVUxOAkJMHgwMUQyCisjZGVmaW5lIERQTV9FTVUxOQkJMHgwMUQ0CisjZGVmaW5lIFdBS0VVUEVWRU5UXzAJCTB4MDFEOAorI2RlZmluZSBXQUtFVVBFVkVOVF8xCQkweDAxREMKKyNkZWZpbmUgV0FLRVVQRVZFTlRfMgkJMHgwMUUwCisjZGVmaW5lIFdBS0VVUEVWRU5UXzMJCTB4MDFFNAorI2RlZmluZSBXQUtFVVBFVkVOVF80CQkweDAxRTgKKyNkZWZpbmUgV0FLRVVQRVZFTlRfNQkJMHgwMUVDCisjZGVmaW5lIFdBS0VVUEVWRU5UXzYJCTB4MDFGMAorCisjZGVmaW5lIFdLVVBfUkVWSVNJT04JCTB4MDAwMAorI2RlZmluZSBXS1VQX0hXSU5GTwkJMHgwMDA0CisjZGVmaW5lIFdLVVBfU1lTQ09ORklHCQkweDAwMTAKKyNkZWZpbmUgUEFEMF9TSU1fSU8JCTB4MDA0MAorI2RlZmluZSBQQUQxX1NJTV9DTEsJCTB4MDA0MgorI2RlZmluZSBQQUQwX1NJTV9SRVNFVAkJMHgwMDQ0CisjZGVmaW5lIFBBRDFfU0lNX0NECQkweDAwNDYKKyNkZWZpbmUgUEFEMF9TSU1fUFdSQ1RSTAkJMHgwMDQ4CisjZGVmaW5lIFBBRDFfU1JfU0NMCQkweDAwNEEKKyNkZWZpbmUgUEFEMF9TUl9TREEJCTB4MDA0QworI2RlZmluZSBQQUQxX0ZSRUZfWFRBTF9JTgkJMHgwMDRFCisjZGVmaW5lIFBBRDBfRlJFRl9TTElDRVJfSU4JMHgwMDUwCisjZGVmaW5lIFBBRDFfRlJFRl9DTEtfSU9SRVEJMHgwMDUyCisjZGVmaW5lIFBBRDBfRlJFRl9DTEswX09VVAkJMHgwMDU0CisjZGVmaW5lIFBBRDFfRlJFRl9DTEszX1JFUQkJMHgwMDU2CisjZGVmaW5lIFBBRDBfRlJFRl9DTEszX09VVAkJMHgwMDU4CisjZGVmaW5lIFBBRDFfRlJFRl9DTEs0X1JFUQkJMHgwMDVBCisjZGVmaW5lIFBBRDBfRlJFRl9DTEs0X09VVAkJMHgwMDVDCisjZGVmaW5lIFBBRDFfU1lTXzMySwkJMHgwMDVFCisjZGVmaW5lIFBBRDBfU1lTX05SRVNQV1JPTgkJMHgwMDYwCisjZGVmaW5lIFBBRDFfU1lTX05SRVNXQVJNCQkweDAwNjIKKyNkZWZpbmUgUEFEMF9TWVNfUFdSX1JFUQkJMHgwMDY0CisjZGVmaW5lIFBBRDFfU1lTX1BXUk9OX1JFU0VUCTB4MDA2NgorI2RlZmluZSBQQUQwX1NZU19CT09UNgkJMHgwMDY4CisjZGVmaW5lIFBBRDFfU1lTX0JPT1Q3CQkweDAwNkEKKyNkZWZpbmUgUEFEMF9KVEFHX05UUlNUCQkweDAwNkMKKyNkZWZpbmUgUEFEMV9KVEFHX1RDSwkJMHgwMDZECisjZGVmaW5lIFBBRDBfSlRBR19SVENLCQkweDAwNzAKKyNkZWZpbmUgUEFEMV9KVEFHX1RNU19UTVNDCQkweDAwNzIKKyNkZWZpbmUgUEFEMF9KVEFHX1RESQkJMHgwMDc0CisjZGVmaW5lIFBBRDFfSlRBR19URE8JCTB4MDA3NgorI2RlZmluZSBQQURDT05GX1dBS0VVUEVWRU5UXzAJMHgwMDdDCisjZGVmaW5lIENPTlRST0xfU01BUlQxTk9QTUlPX1BBRENPTkZfMAkJMHgwNUEwCisjZGVmaW5lIENPTlRST0xfU01BUlQxTk9QTUlPX1BBRENPTkZfMQkJMHgwNUE0CisjZGVmaW5lIFBBRENPTkZfTU9ERQkJMHgwNUE4CisjZGVmaW5lIENPTlRST0xfWFRBTF9PU0NJTExBVE9SCQkJMHgwNUFDCisjZGVmaW5lIENPTlRST0xfQ09OVFJPTF9JMkNfMgkJCTB4MDYwNAorI2RlZmluZSBDT05UUk9MX0NPTlRST0xfSlRBRwkJCTB4MDYwOAorI2RlZmluZSBDT05UUk9MX0NPTlRST0xfU1lTCQkJMHgwNjBDCisjZGVmaW5lIENPTlRST0xfU1BBUkVfUlcJCTB4MDYxNAorI2RlZmluZSBDT05UUk9MX1NQQVJFX1IJCTB4MDYxOAorI2RlZmluZSBDT05UUk9MX1NQQVJFX1JfQzAJCTB4MDYxQworCisjZW5kaWYgLyogX01VWF9PTUFQNF9IXyAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1vbWFwNC9vbWFwNC5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1vbWFwNC9vbWFwNC5oCmluZGV4IDUyNDNlYTguLjc5ZmYyMmMgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtb21hcDQvb21hcDQuaAorKysgYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXA0L29tYXA0LmgKQEAgLTQ0LDYgKzQ0LDggQEAKIAogLyogQ09OVFJPTCAqLwogI2RlZmluZSBDVFJMX0JBU0UJCShPTUFQNDRYWF9MNF9DT1JFX0JBU0UgKyAweDIwMDApCisjZGVmaW5lIENPTlRST0xfUEFEQ09ORl9DT1JFCShPTUFQNDRYWF9MNF9DT1JFX0JBU0UgKyAweDEwMDAwMCkKKyNkZWZpbmUgQ09OVFJPTF9QQURDT05GX1dLVVAJKE9NQVA0NFhYX0w0X0NPUkVfQkFTRSArIDB4MzFFMDAwKQogCiAvKiBVQVJUICovCiAjZGVmaW5lIFVBUlQxX0JBU0UJCShPTUFQNDRYWF9MNF9QRVJfQkFTRSArIDB4NmEwMDApCmRpZmYgLS1naXQgYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXA0L3N5c19wcm90by5oIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vYXJjaC1vbWFwNC9zeXNfcHJvdG8uaAppbmRleCBjNmZhYjAwLi5hZDBjNjQwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9pbmNsdWRlL2FzbS9hcmNoLW9tYXA0L3N5c19wcm90by5oCisrKyBiL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2FyY2gtb21hcDQvc3lzX3Byb3RvLmgKQEAgLTMyLDYgKzMyLDcgQEAKIHZvaWQgd2F0Y2hkb2dfaW5pdCh2b2lkKTsKIHUzMiBnZXRfZGV2aWNlX3R5cGUodm9pZCk7CiB2b2lkIGludmFsaWRhdGVfZGNhY2hlKHUzMik7Cit2b2lkIHNldF9tdXhjb25mX3JlZ3Modm9pZCk7CiAKIGV4dGVybiBjb25zdCBzdHJ1Y3Qgb21hcF9zeXNpbmZvIHN5c2luZm87CiAKZGlmZiAtLWdpdCBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2lvLmggYi9hcmNoL2FybS9pbmNsdWRlL2FzbS9pby5oCmluZGV4IGU4ZjNlYjEuLmZmMTUxOGUgMTAwNjQ0Ci0tLSBhL2FyY2gvYXJtL2luY2x1ZGUvYXNtL2lvLmgKKysrIGIvYXJjaC9hcm0vaW5jbHVkZS9hc20vaW8uaApAQCAtNzUsMTMgKzc1LDQ3IEBACiAjZGVmaW5lIF9fYXJjaF9wdXR3KHYsYSkJCSgqKHZvbGF0aWxlIHVuc2lnbmVkIHNob3J0ICopKGEpID0gKHYpKQogI2RlZmluZSBfX2FyY2hfcHV0bCh2LGEpCQkoKih2b2xhdGlsZSB1bnNpZ25lZCBpbnQgKikoYSkgPSAodikpCiAKLWV4dGVybiB2b2lkIF9fcmF3X3dyaXRlc2IodW5zaWduZWQgaW50IGFkZHIsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBieXRlbGVuKTsKLWV4dGVybiB2b2lkIF9fcmF3X3dyaXRlc3codW5zaWduZWQgaW50IGFkZHIsIGNvbnN0IHZvaWQgKmRhdGEsIGludCB3b3JkbGVuKTsKLWV4dGVybiB2b2lkIF9fcmF3X3dyaXRlc2wodW5zaWduZWQgaW50IGFkZHIsIGNvbnN0IHZvaWQgKmRhdGEsIGludCBsb25nbGVuKTsKK2V4dGVybiBpbmxpbmUgdm9pZCBfX3Jhd193cml0ZXNiKHVuc2lnbmVkIGludCBhZGRyLCBjb25zdCB2b2lkICpkYXRhLCBpbnQgYnl0ZWxlbikKK3sKKwl1aW50OF90ICpidWYgPSAodWludDhfdCAqKWRhdGE7CisJd2hpbGUoYnl0ZWxlbi0tKQorCQlfX2FyY2hfcHV0YigqYnVmKyssIGFkZHIpOworfQogCi1leHRlcm4gdm9pZCBfX3Jhd19yZWFkc2IodW5zaWduZWQgaW50IGFkZHIsIHZvaWQgKmRhdGEsIGludCBieXRlbGVuKTsKLWV4dGVybiB2b2lkIF9fcmF3X3JlYWRzdyh1bnNpZ25lZCBpbnQgYWRkciwgdm9pZCAqZGF0YSwgaW50IHdvcmRsZW4pOwotZXh0ZXJuIHZvaWQgX19yYXdfcmVhZHNsKHVuc2lnbmVkIGludCBhZGRyLCB2b2lkICpkYXRhLCBpbnQgbG9uZ2xlbik7CitleHRlcm4gaW5saW5lIHZvaWQgX19yYXdfd3JpdGVzdyh1bnNpZ25lZCBpbnQgYWRkciwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IHdvcmRsZW4pCit7CisJdWludDE2X3QgKmJ1ZiA9ICh1aW50MTZfdCAqKWRhdGE7CisJd2hpbGUod29yZGxlbi0tKQorCQlfX2FyY2hfcHV0dygqYnVmKyssIGFkZHIpOworfQorCitleHRlcm4gaW5saW5lIHZvaWQgX19yYXdfd3JpdGVzbCh1bnNpZ25lZCBpbnQgYWRkciwgY29uc3Qgdm9pZCAqZGF0YSwgaW50IGxvbmdsZW4pCit7CisJdWludDMyX3QgKmJ1ZiA9ICh1aW50MzJfdCAqKWRhdGE7CisJd2hpbGUobG9uZ2xlbi0tKQorCQlfX2FyY2hfcHV0bCgqYnVmKyssIGFkZHIpOworfQorCitleHRlcm4gaW5saW5lIHZvaWQgX19yYXdfcmVhZHNiKHVuc2lnbmVkIGludCBhZGRyLCB2b2lkICpkYXRhLCBpbnQgYnl0ZWxlbikKK3sKKwl1aW50OF90ICpidWYgPSAodWludDhfdCAqKWRhdGE7CisJd2hpbGUoYnl0ZWxlbi0tKQorCQkqYnVmKysgPSBfX2FyY2hfZ2V0YihhZGRyKTsKK30KKworZXh0ZXJuIGlubGluZSB2b2lkIF9fcmF3X3JlYWRzdyh1bnNpZ25lZCBpbnQgYWRkciwgdm9pZCAqZGF0YSwgaW50IHdvcmRsZW4pCit7CisJdWludDE2X3QgKmJ1ZiA9ICh1aW50MTZfdCAqKWRhdGE7CisJd2hpbGUod29yZGxlbi0tKQorCQkqYnVmKysgPSBfX2FyY2hfZ2V0dyhhZGRyKTsKK30KKworZXh0ZXJuIGlubGluZSB2b2lkIF9fcmF3X3JlYWRzbCh1bnNpZ25lZCBpbnQgYWRkciwgdm9pZCAqZGF0YSwgaW50IGxvbmdsZW4pCit7CisJdWludDMyX3QgKmJ1ZiA9ICh1aW50MzJfdCAqKWRhdGE7CisJd2hpbGUobG9uZ2xlbi0tKQorCQkqYnVmKysgPSBfX2FyY2hfZ2V0bChhZGRyKTsKK30KIAogI2RlZmluZSBfX3Jhd193cml0ZWIodixhKQkJX19hcmNoX3B1dGIodixhKQogI2RlZmluZSBfX3Jhd193cml0ZXcodixhKQkJX19hcmNoX3B1dHcodixhKQpkaWZmIC0tZ2l0IGEvYXJjaC9hcm0vbGliL2JvYXJkLmMgYi9hcmNoL2FybS9saWIvYm9hcmQuYwppbmRleCBmNTY2MGE5Li41NDUxOWIwIDEwMDY0NAotLS0gYS9hcmNoL2FybS9saWIvYm9hcmQuYworKysgYi9hcmNoL2FybS9saWIvYm9hcmQuYwpAQCAtMTI1LDcgKzEyNSw3IEBACiBzdGF0aWMgaW50IGluaXRfYmF1ZHJhdGUgKHZvaWQpCiB7CiAJY2hhciB0bXBbNjRdOwkvKiBsb25nIGVub3VnaCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzICovCi0JaW50IGkgPSBnZXRlbnZfciAoImJhdWRyYXRlIiwgdG1wLCBzaXplb2YgKHRtcCkpOworCWludCBpID0gZ2V0ZW52X2YoImJhdWRyYXRlIiwgdG1wLCBzaXplb2YgKHRtcCkpOwogCWdkLT5iZC0+YmlfYmF1ZHJhdGUgPSBnZC0+YmF1ZHJhdGUgPSAoaSA+IDApCiAJCQk/IChpbnQpIHNpbXBsZV9zdHJ0b3VsICh0bXAsIE5VTEwsIDEwKQogCQkJOiBDT05GSUdfQkFVRFJBVEU7CmRpZmYgLS1naXQgYS9hcmNoL2F2cjMyL2xpYi9ib2FyZC5jIGIvYXJjaC9hdnIzMi9saWIvYm9hcmQuYwppbmRleCAyNTRhZWNmLi45ZTc0MWQyIDEwMDY0NAotLS0gYS9hcmNoL2F2cjMyL2xpYi9ib2FyZC5jCisrKyBiL2FyY2gvYXZyMzIvbGliL2JvYXJkLmMKQEAgLTEwMiw3ICsxMDIsNyBAQAogCWNoYXIgdG1wWzY0XTsKIAlpbnQgaTsKIAotCWkgPSBnZXRlbnZfcigiYmF1ZHJhdGUiLCB0bXAsIHNpemVvZih0bXApKTsKKwlpID0gZ2V0ZW52X2YoImJhdWRyYXRlIiwgdG1wLCBzaXplb2YodG1wKSk7CiAJaWYgKGkgPiAwKSB7CiAJCWdkLT5iYXVkcmF0ZSA9IHNpbXBsZV9zdHJ0b3VsKHRtcCwgTlVMTCwgMTApOwogCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2NwdS9jbWRfZ3Bpby5jIGIvYXJjaC9ibGFja2Zpbi9jcHUvY21kX2dwaW8uYwppbmRleCA5ZTUwNWI2Li40NDMwYzkwIDEwMDY0NAotLS0gYS9hcmNoL2JsYWNrZmluL2NwdS9jbWRfZ3Bpby5jCisrKyBiL2FyY2gvYmxhY2tmaW4vY3B1L2NtZF9ncGlvLmMKQEAgLTI2LDExICsyNiw5IEBACiAJCXJldHVybiAwOwogCX0KIAotCWlmIChhcmdjICE9IDMpIHsKKwlpZiAoYXJnYyAhPSAzKQogIHNob3dfdXNhZ2U6Ci0JCXByaW50ZigiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKLQkJcmV0dXJuIDE7Ci0JfQorCQlyZXR1cm4gY21kX3VzYWdlKGNtZHRwKTsKIAogCS8qIHBhcnNlIHRoZSBiZWhhdmlvciAqLwogCXVsb25nIHN1Yl9jbWQ7CmRpZmYgLS1naXQgYS9hcmNoL2JsYWNrZmluL2NwdS9qdGFnLWNvbnNvbGUuYyBiL2FyY2gvYmxhY2tmaW4vY3B1L2p0YWctY29uc29sZS5jCmluZGV4IDFjZDYxOWYuLmUwZjI5NzUgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vY3B1L2p0YWctY29uc29sZS5jCisrKyBiL2FyY2gvYmxhY2tmaW4vY3B1L2p0YWctY29uc29sZS5jCkBAIC0xLDQ5ICsxLDExNiBAQAogLyoKICAqIGp0YWctY29uc29sZS5jIC0gY29uc29sZSBkcml2ZXIgb3ZlciBCbGFja2ZpbiBKVEFHCiAgKgotICogQ29weXJpZ2h0IChjKSAyMDA4IEFuYWxvZyBEZXZpY2VzIEluYy4KKyAqIENvcHlyaWdodCAoYykgMjAwOC0yMDEwIEFuYWxvZyBEZXZpY2VzIEluYy4KICAqCiAgKiBMaWNlbnNlZCB1bmRlciB0aGUgR1BMLTIgb3IgbGF0ZXIuCiAgKi8KIAogI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPG1hbGxvYy5oPgogI2luY2x1ZGUgPHN0ZGlvX2Rldi5oPgogI2luY2x1ZGUgPGFzbS9ibGFja2Zpbi5oPgogCisjaWZkZWYgREVCVUcKKyMgZGVmaW5lIGRwcmludGYoLi4uKSBzZXJpYWxfcHJpbnRmKF9fVkFfQVJHU19fKQorI2Vsc2UKKyMgZGVmaW5lIGRwcmludGYoLi4uKSBkbyB7IGlmICgwKSBwcmludGYoX19WQV9BUkdTX18pOyB9IHdoaWxlICgwKQorI2VuZGlmCisKK3N0YXRpYyBpbmxpbmUgdm9pZCBkcHJpbnRmX2RlY29kZShjb25zdCBjaGFyICpzLCB1aW50MzJfdCBsZW4pCit7CisJdWludDMyX3QgaTsKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpCisJCWlmIChzW2ldIDwgMHgyMCB8fCBzW2ldID49IDB4N2YpCisJCQlkcHJpbnRmKCJcXCVvIiwgc1tpXSk7CisJCWVsc2UKKwkJCWRwcmludGYoIiVjIiwgc1tpXSk7Cit9CisKK3N0YXRpYyBpbmxpbmUgdWludDMyX3QgYmZpbl93cml0ZV9lbXVkYXQodWludDMyX3QgZW11ZGF0KQoreworCV9fYXNtX18gX192b2xhdGlsZV9fKCJlbXVkYXQgPSAlMDsiIDogOiAiZCIoZW11ZGF0KSk7CisJcmV0dXJuIGVtdWRhdDsKK30KKworc3RhdGljIGlubGluZSB1aW50MzJfdCBiZmluX3JlYWRfZW11ZGF0KHZvaWQpCit7CisJdWludDMyX3QgZW11ZGF0OworCV9fYXNtX18gX192b2xhdGlsZV9fKCIlMCA9IGVtdWRhdDsiIDogIj1kIihlbXVkYXQpKTsKKwlyZXR1cm4gZW11ZGF0OworfQorCiAjaWZuZGVmIENPTkZJR19KVEFHX0NPTlNPTEVfVElNRU9VVAogIyBkZWZpbmUgQ09ORklHX0pUQUdfQ09OU09MRV9USU1FT1VUIDUwMAogI2VuZGlmCiAKIC8qIFRoZSBCbGFja2ZpbiB0ZW5kcyB0byBiZSBtdWNoIG11Y2ggZmFzdGVyIHRoYW4gdGhlIEpUQUcgaGFyZHdhcmUuICovCi1zdGF0aWMgdm9pZCBqdGFnX3dyaXRlX2VtdWRhdCh1aW50MzJfdCBlbXVkYXQpCitzdGF0aWMgYm9vbCBqdGFnX3dyaXRlX2VtdWRhdCh1aW50MzJfdCBlbXVkYXQpCiB7CiAJc3RhdGljIGJvb2wgb3ZlcmZsb3dlZCA9IGZhbHNlOwogCXVsb25nIHRpbWVvdXQgPSBnZXRfdGltZXIoMCkgKyBDT05GSUdfSlRBR19DT05TT0xFX1RJTUVPVVQ7CiAJd2hpbGUgKGJmaW5fcmVhZF9EQkdTVEFUKCkgJiAweDEpIHsKIAkJaWYgKG92ZXJmbG93ZWQpCi0JCQlyZXR1cm47CisJCQlyZXR1cm4gb3ZlcmZsb3dlZDsKIAkJaWYgKHRpbWVvdXQgPCBnZXRfdGltZXIoMCkpCiAJCQlvdmVyZmxvd2VkID0gdHJ1ZTsKIAl9CiAJb3ZlcmZsb3dlZCA9IGZhbHNlOwotCV9fYXNtX18gX192b2xhdGlsZV9fKCJlbXVkYXQgPSAlMDsiIDogOiAiZCIoZW11ZGF0KSk7CisJYmZpbl93cml0ZV9lbXVkYXQoZW11ZGF0KTsKKwlyZXR1cm4gb3ZlcmZsb3dlZDsKIH0KIC8qIFRyYW5zbWl0IGEgYnVmZmVyLiAgVGhlIGZvcm1hdCBpczoKICAqIFszMmJpdCBsZW5ndGhdW2FjdHVhbCBkYXRhXQogICovCi1zdGF0aWMgdm9pZCBqdGFnX3NlbmQoY29uc3QgY2hhciAqYywgdWludDMyX3QgbGVuKQorc3RhdGljIHZvaWQganRhZ19zZW5kKGNvbnN0IGNoYXIgKnJhd19zdHIsIHVpbnQzMl90IGxlbikKIHsKLQl1aW50MzJfdCBpOworCWNvbnN0IGNoYXIgKmNvb2tlZF9zdHI7CisJdWludDMyX3QgaSwgZXg7CiAKIAlpZiAobGVuID09IDApCiAJCXJldHVybjsKIAorCS8qIFVnaCwgbmVlZCB0byBvdXRwdXQgXHIgYWZ0ZXIgXG4gKi8KKwlleCA9IDA7CisJZm9yIChpID0gMDsgaSA8IGxlbjsgKytpKQorCQlpZiAocmF3X3N0cltpXSA9PSAnXG4nKQorCQkJKytleDsKKwlpZiAoZXgpIHsKKwkJY2hhciAqYyA9IG1hbGxvYyhsZW4gKyBleCk7CisJCWNvb2tlZF9zdHIgPSBjOworCQlmb3IgKGkgPSAwOyBpIDwgbGVuOyArK2kpIHsKKwkJCSpjKysgPSByYXdfc3RyW2ldOworCQkJaWYgKHJhd19zdHJbaV0gPT0gJ1xuJykKKwkJCQkqYysrID0gJ1xyJzsKKwkJfQorCQlsZW4gKz0gZXg7CisJfSBlbHNlCisJCWNvb2tlZF9zdHIgPSByYXdfc3RyOworCisJZHByaW50ZigiJXMoXCIiLCBfX2Z1bmNfXyk7CisJZHByaW50Zl9kZWNvZGUoY29va2VkX3N0ciwgbGVuKTsKKwlkcHJpbnRmKCJcIiwgJWkpXG4iLCBsZW4pOworCiAJLyogRmlyc3Qgc2VuZCB0aGUgbGVuZ3RoICovCi0JanRhZ193cml0ZV9lbXVkYXQobGVuKTsKKwlpZiAoanRhZ193cml0ZV9lbXVkYXQobGVuKSkKKwkJZ290byBkb25lOwogCiAJLyogVGhlbiBzZW5kIHRoZSBkYXRhICovCi0JZm9yIChpID0gMDsgaSA8IGxlbjsgaSArPSA0KQotCQlqdGFnX3dyaXRlX2VtdWRhdCgoY1tpXSA8PCAwKSB8IChjW2krMV0gPDwgOCkgfCAoY1tpKzJdIDw8IDE2KSB8IChjW2krM10gPDwgMjQpKTsKKwlmb3IgKGkgPSAwOyBpIDwgbGVuOyBpICs9IDQpIHsKKwkJdWludDMyX3QgZW11ZGF0ID0KKwkJCShjb29rZWRfc3RyW2kgKyAwXSA8PCAgMCkgfAorCQkJKGNvb2tlZF9zdHJbaSArIDFdIDw8ICA4KSB8CisJCQkoY29va2VkX3N0cltpICsgMl0gPDwgMTYpIHwKKwkJCShjb29rZWRfc3RyW2kgKyAzXSA8PCAyNCk7CisJCWlmIChqdGFnX3dyaXRlX2VtdWRhdChlbXVkYXQpKSB7CisJCQliZmluX3dyaXRlX2VtdWRhdCgwKTsKKwkJCWdvdG8gZG9uZTsKKwkJfQorCX0KKworIGRvbmU6CisJaWYgKGNvb2tlZF9zdHIgIT0gcmF3X3N0cikKKwkJZnJlZSgoY2hhciAqKWNvb2tlZF9zdHIpOwogfQogc3RhdGljIHZvaWQganRhZ19wdXRjKGNvbnN0IGNoYXIgYykKIHsKQEAgLTU5LDcgKzEyNiwxMCBAQAogLyogTG93ZXIgbGF5ZXJzIHdhbnQgdG8ga25vdyB3aGVuIGp0YWcgaGFzIGRhdGEgKi8KIHN0YXRpYyBpbnQganRhZ190c3RjX2RiZyh2b2lkKQogewotCXJldHVybiAoYmZpbl9yZWFkX0RCR1NUQVQoKSAmIDB4Mik7CisJaW50IHJldCA9IChiZmluX3JlYWRfREJHU1RBVCgpICYgMHgyKTsKKwlpZiAocmV0KQorCQlkcHJpbnRmKCIlczogcmV0OiVpXG4iLCBfX2Z1bmNfXywgcmV0KTsKKwlyZXR1cm4gcmV0OwogfQogCiAvKiBIaWdoZXIgbGF5ZXJzIHdhbnQgdG8ga25vdyB3aGVuIGFueSBkYXRhIGlzIGF2YWlsYWJsZSAqLwpAQCAtNzcsNiArMTQ3LDkgQEAKIAlpbnQgcmV0OwogCXVpbnQzMl90IGVtdWRhdDsKIAorCWRwcmludGYoIiVzOiBpbmxlbjolenUgbGVmdGxlbjolenUgbGVmdDoleFxuIiwgX19mdW5jX18sCisJCWluYm91bmRfbGVuLCBsZWZ0b3ZlcnNfbGVuLCBsZWZ0b3ZlcnMpOworCiAJLyogc2VlIGlmIGFueSBkYXRhIGlzIGxlZnQgb3ZlciAqLwogCWlmIChsZWZ0b3ZlcnNfbGVuKSB7CiAJCS0tbGVmdG92ZXJzX2xlbjsKQEAgLTg4LDcgKzE2MSw3IEBACiAJLyogd2FpdCBmb3IgbmV3IGRhdGEgISAqLwogCXdoaWxlICghanRhZ190c3RjX2RiZygpKQogCQljb250aW51ZTsKLQlfX2FzbV9fKCIlMCA9IGVtdWRhdDsiIDogIj1kIihlbXVkYXQpKTsKKwllbXVkYXQgPSBiZmluX3JlYWRfZW11ZGF0KCk7CiAKIAlpZiAoaW5ib3VuZF9sZW4gPT0gMCkgewogCQkvKiBncmFiIHRoZSBsZW5ndGggKi8KZGlmZiAtLWdpdCBhL2FyY2gvYmxhY2tmaW4vbGliL2JvYXJkLmMgYi9hcmNoL2JsYWNrZmluL2xpYi9ib2FyZC5jCmluZGV4IDRlOWJiMTkuLjJkMzIzMGMgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vbGliL2JvYXJkLmMKKysrIGIvYXJjaC9ibGFja2Zpbi9saWIvYm9hcmQuYwpAQCAtNjQsNyArNjQsNyBAQAogc3RhdGljIGludCBpbml0X2JhdWRyYXRlKHZvaWQpCiB7CiAJY2hhciBiYXVkcmF0ZVsxNV07Ci0JaW50IGkgPSBnZXRlbnZfcigiYmF1ZHJhdGUiLCBiYXVkcmF0ZSwgc2l6ZW9mKGJhdWRyYXRlKSk7CisJaW50IGkgPSBnZXRlbnZfZigiYmF1ZHJhdGUiLCBiYXVkcmF0ZSwgc2l6ZW9mKGJhdWRyYXRlKSk7CiAJZ2QtPmJkLT5iaV9iYXVkcmF0ZSA9IGdkLT5iYXVkcmF0ZSA9IChpID4gMCkKIAkgICAgPyBzaW1wbGVfc3RydG91bChiYXVkcmF0ZSwgTlVMTCwgMTApCiAJICAgIDogQ09ORklHX0JBVURSQVRFOwpkaWZmIC0tZ2l0IGEvYXJjaC9ibGFja2Zpbi9saWIvcG9zdC5jIGIvYXJjaC9ibGFja2Zpbi9saWIvcG9zdC5jCmluZGV4IGZhZjZiOTYuLmJkNmFhZjUgMTAwNjQ0Ci0tLSBhL2FyY2gvYmxhY2tmaW4vbGliL3Bvc3QuYworKysgYi9hcmNoL2JsYWNrZmluL2xpYi9wb3N0LmMKQEAgLTE2OCw3ICsxNjgsNyBAQAogCX0KIAogCWZvciAoaSA9IDA7IGkgPCB2YXJudW07IGkrKykgewotCQlpZiAoZ2V0ZW52X3IodmFyW2ldLCBsaXN0LCBzaXplb2YobGlzdCkpIDw9IDApCisJCWlmIChnZXRlbnZfZih2YXJbaV0sIGxpc3QsIHNpemVvZihsaXN0KSkgPD0gMCkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAoaiA9IDA7IGogPCBwb3N0X2xpc3Rfc2l6ZTsgaisrKSB7CmRpZmYgLS1naXQgYS9hcmNoL2kzODYvbGliL2JvYXJkLmMgYi9hcmNoL2kzODYvbGliL2JvYXJkLmMKaW5kZXggMGFkYzY2NC4uNjg0Y2RiOCAxMDA2NDQKLS0tIGEvYXJjaC9pMzg2L2xpYi9ib2FyZC5jCisrKyBiL2FyY2gvaTM4Ni9saWIvYm9hcmQuYwpAQCAtNjksNyArNjksNyBAQAogc3RhdGljIGludCBpbml0X2JhdWRyYXRlICh2b2lkKQogewogCWNoYXIgdG1wWzY0XTsJLyogbG9uZyBlbm91Z2ggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotCWludCBpID0gZ2V0ZW52X3IoImJhdWRyYXRlIiwgdG1wLCA2NCk7CisJaW50IGkgPSBnZXRlbnZfZigiYmF1ZHJhdGUiLCB0bXAsIDY0KTsKIAogCWdkLT5iYXVkcmF0ZSA9IChpICE9IDApCiAJCQk/IChpbnQpIHNpbXBsZV9zdHJ0b3VsICh0bXAsIE5VTEwsIDEwKQpkaWZmIC0tZ2l0IGEvYXJjaC9tNjhrL2xpYi9ib2FyZC5jIGIvYXJjaC9tNjhrL2xpYi9ib2FyZC5jCmluZGV4IDczMjAyM2QuLmIyNTQwNzkgMTAwNjQ0Ci0tLSBhL2FyY2gvbTY4ay9saWIvYm9hcmQuYworKysgYi9hcmNoL202OGsvbGliL2JvYXJkLmMKQEAgLTEzNCw3ICsxMzQsNyBAQAogc3RhdGljIGludCBpbml0X2JhdWRyYXRlICh2b2lkKQogewogCWNoYXIgdG1wWzY0XTsJLyogbG9uZyBlbm91Z2ggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotCWludCBpID0gZ2V0ZW52X3IgKCJiYXVkcmF0ZSIsIHRtcCwgc2l6ZW9mICh0bXApKTsKKwlpbnQgaSA9IGdldGVudl9mKCJiYXVkcmF0ZSIsIHRtcCwgc2l6ZW9mICh0bXApKTsKIAogCWdkLT5iYXVkcmF0ZSA9IChpID4gMCkKIAkJCT8gKGludCkgc2ltcGxlX3N0cnRvdWwgKHRtcCwgTlVMTCwgMTApCkBAIC0yNzgsNyArMjc4LDcgQEAKIAkvKgogCSAqIHJlc2VydmUgcHJvdGVjdGVkIFJBTQogCSAqLwotCWkgPSBnZXRlbnZfciAoInByYW0iLCB0bXAsIHNpemVvZiAodG1wKSk7CisJaSA9IGdldGVudl9mKCJwcmFtIiwgdG1wLCBzaXplb2YgKHRtcCkpOwogCXJlZyA9IChpID4gMCkgPyBzaW1wbGVfc3RydG91bCAodG1wLCBOVUxMLCAxMCkgOiBDT05GSUdfUFJBTTsKIAlhZGRyIC09IChyZWcgPDwgMTApOwkJLyogc2l6ZSBpcyBpbiBrQiAqLwogCWRlYnVnICgiUmVzZXJ2aW5nICVsZGsgZm9yIHByb3RlY3RlZCBSQU0gYXQgJTA4bHhcbiIsIHJlZywgYWRkcik7CkBAIC01NDksNyArNTQ5LDcgQEAKIAkgKiBGaWxsIGluIG1pc3NpbmcgZmllbGRzIG9mIGJkX2luZm8uCiAJICogV2UgZG8gdGhpcyBoZXJlLCB3aGVyZSB3ZSBoYXZlICJub3JtYWwiIGFjY2VzcyB0byB0aGUKIAkgKiBlbnZpcm9ubWVudDsgd2UgdXNlZCB0byBkbyB0aGlzIHN0aWxsIHJ1bm5pbmcgZnJvbSBST00sCi0JICogd2hlcmUgaGFkIHRvIHVzZSBnZXRlbnZfcigpLCB3aGljaCBjYW4gYmUgcHJldHR5IHNsb3cgd2hlbgorCSAqIHdoZXJlIGhhZCB0byB1c2UgZ2V0ZW52X2YoKSwgd2hpY2ggY2FuIGJlIHByZXR0eSBzbG93IHdoZW4KIAkgKiB0aGUgZW52aXJvbm1lbnQgaXMgaW4gRUVQUk9NLgogCSAqLwogCWJkLT5iaV9pcF9hZGRyID0gZ2V0ZW52X0lQYWRkciAoImlwYWRkciIpOwpkaWZmIC0tZ2l0IGEvYXJjaC9taXBzL2NwdS9pbmNhaXBfY2xvY2suYyBiL2FyY2gvbWlwcy9jcHUvaW5jYWlwX2Nsb2NrLmMKaW5kZXggZmMyYzYyMS4uYjY1ZGZlMCAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2NwdS9pbmNhaXBfY2xvY2suYworKysgYi9hcmNoL21pcHMvY3B1L2luY2FpcF9jbG9jay5jCkBAIC0xMDUsNyArMTA1LDcgQEAKIAljaGFyIHRtcFs2NF07CiAJdWxvbmcgY3B1Y2xrOwogCi0JaWYgKGdldGVudl9yICgiY3B1Y2xrIiwgdG1wLCBzaXplb2YgKHRtcCkpID4gMCkgeworCWlmIChnZXRlbnZfZigiY3B1Y2xrIiwgdG1wLCBzaXplb2YgKHRtcCkpID4gMCkgewogCQljcHVjbGsgPSBzaW1wbGVfc3RydG91bCAodG1wLCBOVUxMLCAxMCkgKiAxMDAwMDAwOwogCQljZ3VfaW5pdCAoY3B1Y2xrKTsKIAkJZWJ1X2luaXQgKGNwdWNsayk7CmRpZmYgLS1naXQgYS9hcmNoL21pcHMvbGliL2JvYXJkLmMgYi9hcmNoL21pcHMvbGliL2JvYXJkLmMKaW5kZXggYjJkMTEzZS4uYWI0YTE3YyAxMDA2NDQKLS0tIGEvYXJjaC9taXBzL2xpYi9ib2FyZC5jCisrKyBiL2FyY2gvbWlwcy9saWIvYm9hcmQuYwpAQCAtMTE0LDcgKzExNCw3IEBACiBzdGF0aWMgaW50IGluaXRfYmF1ZHJhdGUgKHZvaWQpCiB7CiAJY2hhciB0bXBbNjRdOwkvKiBsb25nIGVub3VnaCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzICovCi0JaW50IGkgPSBnZXRlbnZfciAoImJhdWRyYXRlIiwgdG1wLCBzaXplb2YgKHRtcCkpOworCWludCBpID0gZ2V0ZW52X2YoImJhdWRyYXRlIiwgdG1wLCBzaXplb2YgKHRtcCkpOwogCiAJZ2QtPmJhdWRyYXRlID0gKGkgPiAwKQogCQkJPyAoaW50KSBzaW1wbGVfc3RydG91bCAodG1wLCBOVUxMLCAxMCkKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9NYWtlZmlsZSBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9NYWtlZmlsZQppbmRleCBmZTg1MWYxLi5iN2MwMjcyIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvTWFrZWZpbGUKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L01ha2VmaWxlCkBAIC02NCwxMiArNjQsMjAgQEAKIAogQ09CSlMtJChDT05GSUdfQ1BNMikJKz0gZXRoZXJfZmNjLm8KIENPQkpTLSQoQ09ORklHX09GX0xJQkZEVCkgKz0gZmR0Lm8KK0NPQkpTLSQoQ09ORklHX0ZTTF9DT1JFTkVUKSArPSBsaW9kbi5vCiBDT0JKUy0kKENPTkZJR19NUCkJKz0gbXAubwogQ09CSlMtJChDT05GSUdfTVBDODUzNikgKz0gbXBjODUzNl9zZXJkZXMubwogQ09CSlMtJChDT05GSUdfUDEwMjIpCSs9IHAxMDIyX3NlcmRlcy5vCiBDT0JKUy0kKENPTkZJR19QQ0kpCSs9IHBjaS5vCitDT0JKUy0kKENPTkZJR19GU0xfQ09SRU5FVCkgKz0gcG9ydGFscy5vCisKKyMgdmFyaW91cyBTb0Mgc3BlY2lmaWMgYXNzaWdubWVudHMKK0NPQkpTLSQoQ09ORklHX1BQQ19QNDA4MCkgKz0gcDQwODBfaWRzLm8KKwogQ09CSlMtJChDT05GSUdfUUUpCSs9IHFlX2lvLm8KIENPQkpTLSQoQ09ORklHX0NQTTIpCSs9IHNlcmlhbF9zY2MubworQ09CSlMtJChDT05GSUdfRlNMX0NPUkVORVQpICs9IGZzbF9jb3JlbmV0X3NlcmRlcy5vCitDT0JKUy0kKENPTkZJR19QUENfUDQwODApICs9IHA0MDgwX3NlcmRlcy5vCiAKIENPQkpTCT0gJChDT0JKUy15KQogQ09CSlMJKz0gY3B1Lm8KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9jbWRfZXJyYXRhLmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvY21kX2VycmF0YS5jCmluZGV4IGQ3ODM1YzguLmQ3M2YzZDcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9jbWRfZXJyYXRhLmMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2NtZF9lcnJhdGEuYwpAQCAtNDEsNiArNDEsMTIgQEAKIAl9CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoQ09ORklHX1NZU19QNDA4MF9FUlJBVFVNX1NFUkRFUzgpCisJcHV0cygiV29yay1hcm91bmQgZm9yIEVycmF0dW0gU0VSREVTOCBlbmFibGVkXG4iKTsKKyNlbmRpZgorI2lmIGRlZmluZWQoQ09ORklHX1NZU19QNDA4MF9FUlJBVFVNX0NQVTIyKQorCXB1dHMoIldvcmstYXJvdW5kIGZvciBFcnJhdHVtIENQVTIyIGVuYWJsZWRcbiIpOworI2VuZGlmCiAJcmV0dXJuIDA7CiB9CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9jcHVfaW5pdC5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2NwdV9pbml0LmMKaW5kZXggNWQ1YjRjMi4uMmMzYmU2ZCAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2NwdV9pbml0LmMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2NwdV9pbml0LmMKQEAgLTMyLDYgKzMyLDcgQEAKICNpbmNsdWRlIDxpb3BvcnRzLmg+CiAjaW5jbHVkZSA8c2F0YS5oPgogI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9jYWNoZS5oPgogI2luY2x1ZGUgPGFzbS9tbXUuaD4KICNpbmNsdWRlIDxhc20vZnNsX2xhdy5oPgogI2luY2x1ZGUgPGFzbS9mc2xfc2VyZGVzLmg+CkBAIC0xMjcsNiArMTI4LDQ0IEBACiB9CiAjZW5kaWYKIAorI2lmZGVmIENPTkZJR19TWVNfRlNMX0NQQworc3RhdGljIHZvaWQgZW5hYmxlX2NwYyh2b2lkKQoreworCWludCBpOworCXUzMiBzaXplID0gMDsKKworCWNwY19jb3JlbmV0X3QgKmNwYyA9IChjcGNfY29yZW5ldF90ICopQ09ORklHX1NZU19GU0xfQ1BDX0FERFI7CisKKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX1NZU19OVU1fQ1BDOyBpKyssIGNwYysrKSB7CisJCXUzMiBjcGNjZmcwID0gaW5fYmUzMigmY3BjLT5jcGNjZmcwKTsKKwkJc2l6ZSArPSBDUENfQ0ZHMF9TWl9LKGNwY2NmZzApOworCisJCW91dF9iZTMyKCZjcGMtPmNwY2NzcjAsIENQQ19DU1IwX0NFIHwgQ1BDX0NTUjBfUEUpOworCQkvKiBSZWFkIGJhY2sgdG8gc3luYyB3cml0ZSAqLworCQlpbl9iZTMyKCZjcGMtPmNwY2NzcjApOworCisJfQorCisJcHJpbnRmKCJDb3JlbmV0IFBsYXRmb3JtIENhY2hlOiAlZCBLQiBlbmFibGVkXG4iLCBzaXplKTsKK30KKwordm9pZCBpbnZhbGlkYXRlX2NwYyh2b2lkKQoreworCWludCBpOworCWNwY19jb3JlbmV0X3QgKmNwYyA9IChjcGNfY29yZW5ldF90ICopQ09ORklHX1NZU19GU0xfQ1BDX0FERFI7CisKKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX1NZU19OVU1fQ1BDOyBpKyssIGNwYysrKSB7CisJCS8qIEZsYXNoIGludmFsaWRhdGUgdGhlIENQQyBhbmQgY2xlYXIgYWxsIHRoZSBsb2NrcyAqLworCQlvdXRfYmUzMigmY3BjLT5jcGNjc3IwLCBDUENfQ1NSMF9GSSB8IENQQ19DU1IwX0xGQyk7CisJCXdoaWxlIChpbl9iZTMyKCZjcGMtPmNwY2NzcjApICYgKENQQ19DU1IwX0ZJIHwgQ1BDX0NTUjBfTEZDKSkKKwkJCTsKKwl9Cit9CisjZWxzZQorI2RlZmluZSBlbmFibGVfY3BjKCkKKyNkZWZpbmUgaW52YWxpZGF0ZV9jcGMoKQorI2VuZGlmIC8qIENPTkZJR19TWVNfRlNMX0NQQyAqLworCiAvKgogICogQnJlYXRoZSBzb21lIGxpZmUgaW50byB0aGUgQ1BVLi4uCiAgKgpAQCAtMTg4LDYgKzIyNyw5IEBACiAJY29yZW5ldF90Yl9pbml0KCk7CiAjZW5kaWYKIAlpbml0X3VzZWRfdGxiX2NhbXMoKTsKKworCS8qIEludmFsaWRhdGUgdGhlIENQQyBiZWZvcmUgRERSIGdldHMgZW5hYmxlZCAqLworCWludmFsaWRhdGVfY3BjKCk7CiB9CiAKIApAQCAtMTk4LDEzICsyNDAsMTggQEAKICAqIHVzZSB0aGUgc2FtZSBiaXQtZW5jb2RpbmcgYXMgdGhlIG9sZGVyIDg1NTUsIGV0YywgcGFydHMuCiAgKgogICovCi0KIGludCBjcHVfaW5pdF9yKHZvaWQpCiB7CiAjaWZkZWYgQ09ORklHX1NZU19MQkNfTENSUgogCXZvbGF0aWxlIGZzbF9sYmNfdCAqbGJjID0gTEJDX0JBU0VfQUREUjsKICNlbmRpZgogCisjaWYgZGVmaW5lZChDT05GSUdfU1lTX1A0MDgwX0VSUkFUVU1fQ1BVMjIpCisJZmx1c2hfZGNhY2hlKCk7CisJbXRzcHIoTDFDU1IyLCAobWZzcHIoTDFDU1IyKSB8IEwxQ1NSMl9EQ1dTKSk7CisJc3luYygpOworI2VuZGlmCisKIAlwdXRzICgiTDI6ICAgICIpOwogCiAjaWYgZGVmaW5lZChDT05GSUdfTDJfQ0FDSEUpCkBAIC0zMTksNiArMzY2LDkgQEAKICNlbHNlCiAJcHV0cygiZGlzYWJsZWRcbiIpOwogI2VuZGlmCisKKwllbmFibGVfY3BjKCk7CisKICNpZmRlZiBDT05GSUdfUUUKIAl1aW50IHFlX2Jhc2UgPSBDT05GSUdfU1lTX0lNTVIgKyAweDAwMDgwMDAwOyAvKiBRRSBpbW1yIGJhc2UgKi8KIAlxZV9pbml0KHFlX2Jhc2UpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2Rkci1nZW4zLmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvZGRyLWdlbjMuYwppbmRleCAwNjkxY2E0Li5lNDZkY2I3IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvZGRyLWdlbjMuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvZGRyLWdlbjMuYwpAQCAtMzMsNiArMzMsOCBAQAogCQlyZXR1cm47CiAJfQogCisJb3V0X2JlMzIoJmRkci0+ZW9yLCByZWdzLT5kZHJfZW9yKTsKKwogCWZvciAoaSA9IDA7IGkgPCBDT05GSUdfQ0hJUF9TRUxFQ1RTX1BFUl9DVFJMOyBpKyspIHsKIAkJaWYgKGkgPT0gMCkgewogCQkJb3V0X2JlMzIoJmRkci0+Y3MwX2JuZHMsIHJlZ3MtPmNzW2ldLmJuZHMpOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2ZkdC5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2ZkdC5jCmluZGV4IDkzMjQ2NmUuLjhlN2I4MjcgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9mZHQuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvZmR0LmMKQEAgLTI4LDYgKzI4LDggQEAKICNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgogI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KICNpbmNsdWRlIDxsaW51eC9jdHlwZS5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorI2luY2x1ZGUgPGFzbS9mc2xfcG9ydGFscy5oPgogI2lmZGVmIENPTkZJR19GU0xfRVNESEMKICNpbmNsdWRlIDxmc2xfZXNkaGMuaD4KICNlbmRpZgpAQCAtODAsNyArODIsMzAgQEAKIH0KICNlbmRpZgogCisjaWZkZWYgQ09ORklHX1NZU19GU0xfQ1BDCitzdGF0aWMgaW5saW5lIHZvaWQgZnRfZml4dXBfbDNjYWNoZSh2b2lkICpibG9iLCBpbnQgb2ZmKQoreworCXUzMiBsaW5lX3NpemUsIG51bV93YXlzLCBzaXplLCBudW1fc2V0czsKKwljcGNfY29yZW5ldF90ICpjcGMgPSAodm9pZCAqKUNPTkZJR19TWVNfRlNMX0NQQ19BRERSOworCXUzMiBjZmcwID0gaW5fYmUzMigmY3BjLT5jcGNjZmcwKTsKKworCXNpemUgPSBDUENfQ0ZHMF9TWl9LKGNmZzApICogMTAyNCAqIENPTkZJR19TWVNfTlVNX0NQQzsKKwludW1fd2F5cyA9IENQQ19DRkcwX05VTV9XQVlTKGNmZzApOworCWxpbmVfc2l6ZSA9IENQQ19DRkcwX0xJTkVfU1ooY2ZnMCk7CisJbnVtX3NldHMgPSBzaXplIC8gKGxpbmVfc2l6ZSAqIG51bV93YXlzKTsKKworCWZkdF9zZXRwcm9wKGJsb2IsIG9mZiwgImNhY2hlLXVuaWZpZWQiLCBOVUxMLCAwKTsKKwlmZHRfc2V0cHJvcF9jZWxsKGJsb2IsIG9mZiwgImNhY2hlLWJsb2NrLXNpemUiLCBsaW5lX3NpemUpOworCWZkdF9zZXRwcm9wX2NlbGwoYmxvYiwgb2ZmLCAiY2FjaGUtc2l6ZSIsIHNpemUpOworCWZkdF9zZXRwcm9wX2NlbGwoYmxvYiwgb2ZmLCAiY2FjaGUtc2V0cyIsIG51bV9zZXRzKTsKKwlmZHRfc2V0cHJvcF9jZWxsKGJsb2IsIG9mZiwgImNhY2hlLWxldmVsIiwgMyk7CisjaWZkZWYgQ09ORklHX1NZU19DQUNIRV9TVEFTSElORworCWZkdF9zZXRwcm9wX2NlbGwoYmxvYiwgb2ZmLCAiY2FjaGUtc3Rhc2gtaWQiLCAxKTsKKyNlbmRpZgorfQorI2Vsc2UKICNkZWZpbmUgZnRfZml4dXBfbDNjYWNoZSh4LCB5KQorI2VuZGlmCiAKICNpZiBkZWZpbmVkKENPTkZJR19MMl9DQUNIRSkKIC8qIHJldHVybiBzaXplIGluIGtpbG9ieXRlcyAqLwpAQCAtNDIyLDQgKzQ0NywxOCBAQAogI2VuZGlmCiAKIAlmdF9maXh1cF9kcGFhX2Nsa3MoYmxvYik7CisKKyNpZiBkZWZpbmVkKENPTkZJR19TWVNfQk1BTl9NRU1fUEhZUykKKwlmZHRfcG9ydGFsKGJsb2IsICJmc2wsYm1hbi1wb3J0YWwiLCAiYm1hbi1wb3J0YWxzIiwKKwkJCSh1NjQpQ09ORklHX1NZU19CTUFOX01FTV9QSFlTLAorCQkJQ09ORklHX1NZU19CTUFOX01FTV9TSVpFKTsKKyNlbmRpZgorCisjaWYgZGVmaW5lZChDT05GSUdfU1lTX1FNQU5fTUVNX1BIWVMpCisJZmR0X3BvcnRhbChibG9iLCAiZnNsLHFtYW4tcG9ydGFsIiwgInFtYW4tcG9ydGFscyIsCisJCQkodTY0KUNPTkZJR19TWVNfUU1BTl9NRU1fUEhZUywKKwkJCUNPTkZJR19TWVNfUU1BTl9NRU1fU0laRSk7CisKKwlmZHRfZml4dXBfcXBvcnRhbHMoYmxvYik7CisjZW5kaWYKIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9mc2xfY29yZW5ldF9zZXJkZXMuYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9mc2xfY29yZW5ldF9zZXJkZXMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YmNmOTFhCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2ZzbF9jb3JlbmV0X3NlcmRlcy5jCkBAIC0wLDAgKzEsNDk1IEBACisvKgorICogQ29weXJpZ2h0IDIwMDktMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpZmRlZiBDT05GSUdfU1lTX1A0MDgwX0VSUkFUVU1fU0VSREVTOAorI2luY2x1ZGUgPGh3Y29uZmlnLmg+CisjZW5kaWYKKyNpbmNsdWRlIDxhc20vZnNsX3NlcmRlcy5oPgorI2luY2x1ZGUgPGFzbS9pbW1hcF84NXh4Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9mc2xfbGF3Lmg+CisjaW5jbHVkZSAiZnNsX2NvcmVuZXRfc2VyZGVzLmgiCisKK3N0YXRpYyB1MzIgc2VyZGVzX3BydGNsX21hcDsKKworI2lmZGVmIERFQlVHCitzdGF0aWMgY29uc3QgY2hhciAqc2VyZGVzX3BydGNsX3N0cltdID0geworCVtOT05FXSA9ICJOQSIsCisJW1BDSUUxXSA9ICJQQ0lFMSIsCisJW1BDSUUyXSA9ICJQQ0lFMiIsCisJW1BDSUUzXSA9ICJQQ0lFMyIsCisJW1BDSUU0XSA9ICJQQ0lFNCIsCisJW1NBVEExXSA9ICJTQVRBMSIsCisJW1NBVEEyXSA9ICJTQVRBMiIsCisJW1NSSU8xXSA9ICJTUklPMSIsCisJW1NSSU8yXSA9ICJTUklPMiIsCisJW1NHTUlJX0ZNMV9EVFNFQzFdID0gIlNHTUlJX0ZNMV9EVFNFQzEiLAorCVtTR01JSV9GTTFfRFRTRUMyXSA9ICJTR01JSV9GTTFfRFRTRUMyIiwKKwlbU0dNSUlfRk0xX0RUU0VDM10gPSAiU0dNSUlfRk0xX0RUU0VDMyIsCisJW1NHTUlJX0ZNMV9EVFNFQzRdID0gIlNHTUlJX0ZNMV9EVFNFQzQiLAorCVtTR01JSV9GTTFfRFRTRUM1XSA9ICJTR01JSV9GTTFfRFRTRUM1IiwKKwlbU0dNSUlfRk0yX0RUU0VDMV0gPSAiU0dNSUlfRk0yX0RUU0VDMSIsCisJW1NHTUlJX0ZNMl9EVFNFQzJdID0gIlNHTUlJX0ZNMl9EVFNFQzIiLAorCVtTR01JSV9GTTJfRFRTRUMzXSA9ICJTR01JSV9GTTJfRFRTRUMzIiwKKwlbU0dNSUlfRk0yX0RUU0VDNF0gPSAiU0dNSUlfRk0yX0RUU0VDNCIsCisJW1hBVUlfRk0xXSA9ICJYQVVJX0ZNMSIsCisJW1hBVUlfRk0yXSA9ICJYQVVJX0ZNMiIsCisJW0FVUk9SQV0gPSAiREVCVUciLAorfTsKKyNlbmRpZgorCitzdGF0aWMgY29uc3Qgc3RydWN0IHsKKwlpbnQgaWR4OworCXVuc2lnbmVkIGludCBscGQ7IC8qIFJDVyBsYW5lIHBvd2VyZG93biBiaXQgKi8KKwlpbnQgYmFuazsKK30gbGFuZXNbU1JEU19NQVhfTEFORVNdID0geworCXsgMCwgMTUyLCBGU0xfU1JEU19CQU5LXzEgfSwKKwl7IDEsIDE1MywgRlNMX1NSRFNfQkFOS18xIH0sCisJeyAyLCAxNTQsIEZTTF9TUkRTX0JBTktfMSB9LAorCXsgMywgMTU1LCBGU0xfU1JEU19CQU5LXzEgfSwKKwl7IDQsIDE1NiwgRlNMX1NSRFNfQkFOS18xIH0sCisJeyA1LCAxNTcsIEZTTF9TUkRTX0JBTktfMSB9LAorCXsgNiwgMTU4LCBGU0xfU1JEU19CQU5LXzEgfSwKKwl7IDcsIDE1OSwgRlNMX1NSRFNfQkFOS18xIH0sCisJeyA4LCAxNjAsIEZTTF9TUkRTX0JBTktfMSB9LAorCXsgOSwgMTYxLCBGU0xfU1JEU19CQU5LXzEgfSwKKwl7IDE2LCAxNjIsIEZTTF9TUkRTX0JBTktfMiB9LAorCXsgMTcsIDE2MywgRlNMX1NSRFNfQkFOS18yIH0sCisJeyAxOCwgMTY0LCBGU0xfU1JEU19CQU5LXzIgfSwKKwl7IDE5LCAxNjUsIEZTTF9TUkRTX0JBTktfMiB9LAorCXsgMjAsIDE3MCwgRlNMX1NSRFNfQkFOS18zIH0sCisJeyAyMSwgMTcxLCBGU0xfU1JEU19CQU5LXzMgfSwKKwl7IDIyLCAxNzIsIEZTTF9TUkRTX0JBTktfMyB9LAorCXsgMjMsIDE3MywgRlNMX1NSRFNfQkFOS18zIH0sCit9OworCitpbnQgc2VyZGVzX2dldF9sYW5lX2lkeChpbnQgbGFuZSkKK3sKKwlyZXR1cm4gbGFuZXNbbGFuZV0uaWR4OworfQorCitpbnQgc2VyZGVzX2dldF9iYW5rKGludCBsYW5lKQoreworCXJldHVybiBsYW5lc1tsYW5lXS5iYW5rOworfQorCitpbnQgc2VyZGVzX2xhbmVfZW5hYmxlZChpbnQgbGFuZSkKK3sKKwljY3NyX2d1cl90ICpndXIgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfR1VUU19BRERSKTsKKwlzZXJkZXNfY29yZW5ldF90ICpyZWdzID0gKHZvaWQgKilDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX1NFUkRFU19BRERSOworCisJaW50IGJhbmsgPSBsYW5lc1tsYW5lXS5iYW5rOworCWludCB3b3JkID0gbGFuZXNbbGFuZV0ubHBkIC8gMzI7CisJaW50IGJpdCA9IGxhbmVzW2xhbmVdLmxwZCAlIDMyOworCisJaWYgKGluX2JlMzIoJnJlZ3MtPmJhbmtbYmFua10ucnN0Y3RsKSAmIFNSRFNfUlNUQ1RMX1NEUEQpCisJCXJldHVybiAwOworCisjaWZkZWYgQ09ORklHX1NZU19QNDA4MF9FUlJBVFVNX1NFUkRFUzgKKwlpZiAoIUlTX1NWUl9SRVYoZ2V0X3N2cigpLCAxLCAwKSkKKwkJaWYgKGJhbmsgPiAwKQorCQkJcmV0dXJuICEoc3Jkc19scGRfYltiYW5rXSAmCisJCQkJCSg4ID4+IChsYW5lIC0gKDYgKyA0ICogYmFuaykpKSk7CisjZW5kaWYKKworCXJldHVybiAhKGluX2JlMzIoJmd1ci0+cmN3c3Jbd29yZF0pICYgKDB4ODAwMDAwMDAgPj4gYml0KSk7Cit9CisKK2ludCBpc19zZXJkZXNfY29uZmlndXJlZChlbnVtIHNyZHNfcHJ0Y2wgZGV2aWNlKQoreworCWNjc3JfZ3VyX3QgKmd1ciA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9HVVRTX0FERFIpOworCisJLyogSXMgc2VyZGVzIGVuYWJsZWQgYXQgYWxsPyAqLworCWlmICghKGluX2JlMzIoJmd1ci0+cmN3c3JbNV0pICYgRlNMX0NPUkVORVRfUkNXU1I1X1NSRFNfRU4pKQorCQlyZXR1cm4gMDsKKworCXJldHVybiAoMSA8PCBkZXZpY2UpICYgc2VyZGVzX3BydGNsX21hcDsKK30KKworI2lmbmRlZiBDT05GSUdfU1lTX0RDU1JCQVJfUEhZUworI2RlZmluZSBDT05GSUdfU1lTX0RDU1JCQVJfUEhZUwkweDgwMDAwMDAwIC8qIE11c3QgYmUgMUdCLWFsaWduZWQgZm9yIHJldjEuMCAqLworI2RlZmluZSBDT05GSUdfU1lTX0RDU1JCQVIJMHg4MDAwMDAwMAorI2RlZmluZSBfX0RDU1JfTk9UX0RFRklORURfQllfQ09ORklHCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TWVNfUDQwODBfRVJSQVRVTV9TRVJERVM4CitzdGF0aWMgdm9pZCBlbmFibGVfYmFuayhjY3NyX2d1cl90ICpndXIsIGludCBiYW5rKQoreworCXUzMiByY3c1OworCisJLyoKKwkgKiBFbmFibGUgdGhlIGxhbmVzIFNSRFNfTFBEX0JuLiAgVGhlIFJDVyBiaXRzIGFyZSByZWFkLW9ubHkgaW4KKwkgKiBDQ1NSLCBhbmQgcmVhZC93cml0ZSBpbiBEU0NSLgorCSAqLworCXJjdzUgPSBpbl9iZTMyKGd1ci0+cmN3c3IgKyA1KTsKKwlpZiAoYmFuayA9PSBGU0xfU1JEU19CQU5LXzIpIHsKKwkJcmN3NSAmPSB+RlNMX0NPUkVORVRfUkNXU1JuX1NSRFNfTFBEX0IyOworCQlyY3c1IHw9IHNyZHNfbHBkX2JbYmFua10gPDwgMjY7CisJfSBlbHNlIGlmIChiYW5rID09IEZTTF9TUkRTX0JBTktfMykgeworCQlyY3c1ICY9IH5GU0xfQ09SRU5FVF9SQ1dTUm5fU1JEU19MUERfQjM7CisJCXJjdzUgfD0gc3Jkc19scGRfYltiYW5rXSA8PCAxODsKKwl9IGVsc2UgeworCQlwcmludGYoIlNFUkRFUzogZW5hYmxlX2Jhbms6IGJhZCBiYW5rICVkXG4iLCBiYW5rICsgMSk7CisJCXJldHVybjsKKwl9CisKKwkvKiBTZWUgc2ltaWxhciBjb2RlIGluIGNwdS9tcGM4NXh4L2NwdV9pbml0LmMgZm9yIGFuIGV4cGxhbmF0aW9uCisJICogb2YgdGhlIERDU1IgbWFwcGluZy4KKwkgKi8KKwl7CisjaWZkZWYgX19EQ1NSX05PVF9ERUZJTkVEX0JZX0NPTkZJRworCQlzdHJ1Y3QgbGF3X2VudHJ5IGxhdyA9IGZpbmRfbGF3KENPTkZJR19TWVNfRENTUkJBUl9QSFlTKTsKKwkJaW50IGxhd19pbmRleDsKKwkJaWYgKGxhdy5pbmRleCA9PSAtMSkKKwkJCWxhd19pbmRleCA9IHNldF9uZXh0X2xhdyhDT05GSUdfU1lTX0RDU1JCQVJfUEhZUywKKwkJCQkJCSBMQVdfU0laRV8xTSwgTEFXX1RSR1RfSUZfRENTUik7CisJCWVsc2UKKwkJCXNldF9sYXcobGF3LmluZGV4LCBDT05GSUdfU1lTX0RDU1JCQVJfUEhZUywgTEFXX1NJWkVfMU0sCisJCQkJTEFXX1RSR1RfSUZfRENTUik7CisjZW5kaWYKKwkJdTMyICpwID0gKHZvaWQgKilDT05GSUdfU1lTX0RDU1JCQVIgKyAweDIwMTE0OworCQlvdXRfYmUzMihwLCByY3c1KTsKKyNpZmRlZiBfX0RDU1JfTk9UX0RFRklORURfQllfQ09ORklHCisJCWlmIChsYXcuaW5kZXggPT0gLTEpCisJCQlkaXNhYmxlX2xhdyhsYXdfaW5kZXgpOworCQllbHNlCisJCQlzZXRfbGF3KGxhdy5pbmRleCwgbGF3LmFkZHIsIGxhdy5zaXplLCBsYXcudHJndF9pZCk7CisjZW5kaWYKKwl9Cit9CisKKy8qCisgKiBUbyBhdm9pZCBwcm9ibGVtcyB3aXRoIGNsb2NrIGppdHRlciwgcmV2IDIgcDQwODAgdXNlcyB0aGUgcGxsIGZyb20KKyAqIGJhbmsgMyB0byBjbG9jayBiYW5rcyAyIGFuZCAzLCBhcyB3ZWxsIGFzIGEgbGltaXRlZCBzZWxlY3Rpb24gb2YKKyAqIHByb3RvY29sIGNvbmZpZ3VyYXRpb25zLiAgVGhpcyByZXF1aXJlcyB0aGF0IGJhbmtzIDIgYW5kIDMncyBsYW5lcyBiZQorICogZGlzYWJsZWQgaW4gdGhlIFJDVywgYW5kIGVuYWJsZWQgd2l0aCBzb21lIGZpeHVwIGhlcmUgdG8gcmUtZW5hYmxlCisgKiB0aGVtLCBhbmQgdG8gY29uZmlndXJlIGJhbmsgMidzIGNsb2NrIHBhcmFtZXRlcnMgaW4gYmFuayAzJ3MgcGxsIGluCisgKiBjYXNlcyB3aGVyZSB0aGV5IGRpZmZlci4KKyAqLworc3RhdGljIHZvaWQgcDQwODBfZXJyYXR1bV9zZXJkZXM4KHNlcmRlc19jb3JlbmV0X3QgKnJlZ3MsIGNjc3JfZ3VyX3QgKmd1ciwKKwkJCQkgIHUzMiBkZXZkaXNyLCB1MzIgZGV2ZGlzcjIsIGludCBjZmcpCit7CisJaW50IHNyZHNfcmF0aW9fYjI7CisJaW50IHJmY2tfc2VsOworCisJLyoKKwkgKiBUaGUgZGlzYWJsZWQgbGFuZXMgb2YgYmFuayAyIHdpbGwgY2F1c2UgdGhlIGFzc29jaWF0ZWQKKwkgKiBsb2dpYyBibG9ja3MgdG8gYmUgZGlzYWJsZWQgaW4gREVWRElTUi4gIFdlIHJldmVyc2UgdGhhdCBoZXJlLgorCSAqCisJICogTm90ZSB0aGF0IG5vcm1hbGx5IGl0IGlzIG5vdCBwZXJtaXR0ZWQgdG8gY2xlYXIgREVWRElTUiBiaXRzCisJICogb25jZSB0aGUgZGV2aWNlIGhhcyBiZWVuIGRpc2FibGVkLCBidXQgdGhlIGhhcmR3YXJlIHBlb3BsZQorCSAqIHNheSB0aGF0IHRoaXMgc3BlY2lhbCBjYXNlIGlzIE9LLgorCSAqLworCWNscmJpdHNfYmUzMigmZ3VyLT5kZXZkaXNyLCBkZXZkaXNyKTsKKwljbHJiaXRzX2JlMzIoJmd1ci0+ZGV2ZGlzcjIsIGRldmRpc3IyKTsKKworCS8qCisJICogU29tZSBwcm90b2NvbHMgcmVxdWlyZSBzcGVjaWFsIGhhbmRsaW5nLiAgVGhlcmUgYXJlIGEgZmV3CisJICogYWRkaXRpb25hbCBwcm90b2NvbCBjb25maWd1cmF0aW9ucyB0aGF0IGNhbiBiZSB1c2VkLCB3aGljaCBhcmUKKwkgKiBub3QgbGlzdGVkIGhlcmUuICBTZWUgYXBwIG5vdGUgNDA2NSBmb3Igc3VwcG9ydGVkIHByb3RvY29sCisJICogY29uZmlndXJhdGlvbnMuCisJICovCisJc3dpdGNoIChjZmcpIHsKKwljYXNlIDB4MTk6CisJCS8qCisJCSAqIEJhbmsgMiBoYXMgUENJZSB3aGljaCB3YW50cyBCV1NFTCAtLSB0ZWxsIGJhbmsgMydzIFBMTC4KKwkJICogU0dNSUkgb24gYmFuayAzIHNob3VsZCBzdGlsbCBiZSB1c2FibGUuCisJCSAqLworCQlzZXRiaXRzX2JlMzIoJnJlZ3MtPmJhbmtbRlNMX1NSRFNfQkFOS18zXS5wbGxjcjEsCisJCQkgICAgIFNSRFNfUExMQ1IxX1BMTF9CV1NFTCk7CisKKwkJZW5hYmxlX2JhbmsoZ3VyLCBGU0xfU1JEU19CQU5LXzMpOworCQlicmVhazsKKworCWNhc2UgMHgwZjoKKwljYXNlIDB4MTA6CisJCS8qCisJCSAqIEJhbmtzIDIgKFhBVUkpIGFuZCAzIChTR01JSSkgaGF2ZSBkaWZmZXJlbnQgY2xvY2tpbmcKKwkJICogcmVxdWlyZW1lbnRzIGluIHRoZXNlIGNvbmZpZ3VyYXRpb25zLiAgQmFuayAzIGNhbm5vdAorCQkgKiBiZSB1c2VkIGFuZCBzaG91bGQgaGF2ZSBpdHMgbGFuZXMgKGJ1dCBub3QgdGhlIGJhbmsKKwkJICogaXRzZWxmKSBkaXNhYmxlZCBpbiB0aGUgUkNXLiAgV2Ugc2V0IHVwIGJhbmsgMydzIHBsbAorCQkgKiBmb3IgYmFuayAyJ3MgbmVlZHMgaGVyZS4KKwkJICovCisJCXNyZHNfcmF0aW9fYjIgPSAoaW5fYmUzMigmZ3VyLT5yY3dzcls0XSkgPj4gMTMpICYgNzsKKworCQkvKiBEZXRlcm1pbmUgcmVmY2xvY2sgZnJvbSBYQVVJIHJhdGlvICovCisJCXN3aXRjaCAoc3Jkc19yYXRpb19iMikgeworCQljYXNlIDE6IC8qIDIwOjEgKi8KKwkJCXJmY2tfc2VsID0gU1JEU19QTExDUjBfUkZDS19TRUxfMTU2XzI1OworCQkJYnJlYWs7CisJCWNhc2UgMjogLyogMjU6MSAqLworCQkJcmZja19zZWwgPSBTUkRTX1BMTENSMF9SRkNLX1NFTF8xMjU7CisJCQlicmVhazsKKwkJZGVmYXVsdDoKKwkJCXByaW50ZigiU0VSREVTOiBiYWQgU1JEU19SQVRJT19CMiAlZFxuIiwKKwkJCSAgICAgICBzcmRzX3JhdGlvX2IyKTsKKwkJCXJldHVybjsKKwkJfQorCisJCWNscnNldGJpdHNfYmUzMigmcmVncy0+YmFua1tGU0xfU1JEU19CQU5LXzNdLnBsbGNyMCwKKwkJCQlTUkRTX1BMTENSMF9SRkNLX1NFTF9NQVNLLCByZmNrX3NlbCk7CisKKwkJY2xyc2V0Yml0c19iZTMyKCZyZWdzLT5iYW5rW0ZTTF9TUkRTX0JBTktfM10ucGxsY3IwLAorCQkJCVNSRFNfUExMQ1IwX0ZSQVRFX1NFTF9NQVNLLAorCQkJCVNSRFNfUExMQ1IwX0ZSQVRFX1NFTF82XzI1KTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJZW5hYmxlX2JhbmsoZ3VyLCBGU0xfU1JEU19CQU5LXzMpOworCX0KKworfQorI2VuZGlmCisKK3ZvaWQgZnNsX3NlcmRlc19pbml0KHZvaWQpCit7CisJY2Nzcl9ndXJfdCAqZ3VyID0gKHZvaWQgKikoQ09ORklHX1NZU19NUEM4NXh4X0dVVFNfQUREUik7CisJaW50IGNmZzsKKwlzZXJkZXNfY29yZW5ldF90ICpzcmRzX3JlZ3M7CisJaW50IGxhbmUsIGJhbmssIGlkeDsKKwllbnVtIHNyZHNfcHJ0Y2wgbGFuZV9wcnRjbDsKKwlsb25nIGxvbmcgZW5kX3RpY2s7CisJaW50IGhhdmVfYmFua1tTUkRTX01BWF9CQU5LXSA9IHt9OworI2lmZGVmIENPTkZJR19TWVNfUDQwODBfRVJSQVRVTV9TRVJERVM4CisJdTMyIHNlcmRlczhfZGV2ZGlzciA9IDA7CisJdTMyIHNlcmRlczhfZGV2ZGlzcjIgPSAwOworCWNoYXIgc3Jkc19scGRfb3B0WzE2XTsKKwljb25zdCBjaGFyICpzcmRzX2xwZF9hcmc7CisJc2l6ZV90IGFyZ2xlbjsKKyNlbmRpZgorCisJLyogSXMgc2VyZGVzIGVuYWJsZWQgYXQgYWxsPyAqLworCWlmICghKGluX2JlMzIoJmd1ci0+cmN3c3JbNV0pICYgRlNMX0NPUkVORVRfUkNXU1I1X1NSRFNfRU4pKQorCQlyZXR1cm47CisKKwlzcmRzX3JlZ3MgPSAodm9pZCAqKShDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX1NFUkRFU19BRERSKTsKKwljZmcgPSAoaW5fYmUzMigmZ3VyLT5yY3dzcls0XSkgJiBGU0xfQ09SRU5FVF9SQ1dTUjRfU1JEU19QUlRDTCkgPj4gMjY7CisJZGVidWcoIlVzaW5nIFNFUkRFUyBjb25maWd1cmF0aW9uIDB4JXgsIGxhbmUgc2V0dGluZ3M6XG4iLCBjZmcpOworCisJaWYgKCFpc19zZXJkZXNfcHJ0Y2xfdmFsaWQoY2ZnKSkgeworCQlwcmludGYoIlNFUkRFU1tQUlRDTF0gPSAweCV4IGlzIG5vdCB2YWxpZFxuIiwgY2ZnKTsKKwkJcmV0dXJuOworCX0KKworI2lmZGVmIENPTkZJR19TWVNfUDQwODBfRVJSQVRVTV9TRVJERVM4CisJaWYgKCFJU19TVlJfUkVWKGdldF9zdnIoKSwgMSwgMCkpCisJCWZvciAoYmFuayA9IDE7IGJhbmsgPCBBUlJBWV9TSVpFKHNyZHNfbHBkX2IpOyBiYW5rKyspIHsKKwkJCXNwcmludGYoc3Jkc19scGRfb3B0LCAiZnNsX3NyZHNfbHBkX2IldSIsIGJhbmsgKyAxKTsKKwkJCXNyZHNfbHBkX2FyZyA9IGh3Y29uZmlnX3N1YmFyZygic2VyZGVzIiwgc3Jkc19scGRfb3B0LAorCQkJCQkJICAgICAgICZhcmdsZW4pOworCQkJaWYgKHNyZHNfbHBkX2FyZykKKwkJCQlzcmRzX2xwZF9iW2JhbmtdID0gc2ltcGxlX3N0cnRvdWwoc3Jkc19scGRfYXJnLAorCQkJCQkJCQkgIE5VTEwsIDApOworCQl9CisjZW5kaWYKKworCS8qIExvb2sgZm9yIGJhbmtzIHdpdGggYWxsIGxhbmVzIGRpc2FibGVkLCBhbmQgcG93ZXIgZG93biB0aGUgYmFuay4gKi8KKwlmb3IgKGxhbmUgPSAwOyBsYW5lIDwgU1JEU19NQVhfTEFORVM7IGxhbmUrKykgeworCQllbnVtIHNyZHNfcHJ0Y2wgbGFuZV9wcnRjbCA9IHNlcmRlc19nZXRfcHJ0Y2woY2ZnLCBsYW5lKTsKKwkJaWYgKHNlcmRlc19sYW5lX2VuYWJsZWQobGFuZSkpIHsKKwkJCWhhdmVfYmFua1tzZXJkZXNfZ2V0X2JhbmsobGFuZSldID0gMTsKKwkJCXNlcmRlc19wcnRjbF9tYXAgfD0gKDEgPDwgbGFuZV9wcnRjbCk7CisJCX0KKwl9CisKKyNpZmRlZiBDT05GSUdfU1lTX1A0MDgwX0VSUkFUVU1fU0VSREVTOAorCWlmIChJU19TVlJfUkVWKGdldF9zdnIoKSwgMSwgMCkpIHsKKwkJLyogQXQgbGVhc3Qgb25lIGJhbmsgbXVzdCBiZSBkaXNhYmxlZCBkdWUgdG8gU0VSREVTOC4gIElmCisJCSAqIG5vIGJhbmsgaXMgZm91bmQgdG8gYmUgZGlzYWJsZWQgYmFzZWQgb24gbGFuZQorCQkgKiBkaXNhYmxlcywgZGlzYWJsZSBiYW5rIDMgYmVjYXVzZSB3ZSBjYW4ndCB0dXJuIG9mZiBpdHMKKwkJICogbGFuZXMgaW4gdGhlIFJDVyB3aXRob3V0IGRpc2FibGluZyBNRElPIGR1ZSB0byBlcnJhdHVtCisJCSAqIEdFTjguCisJCSAqCisJCSAqIFRoaXMgbWVhbnMgdGhhdCBpZiB5b3UgYXJlIHJlbHlpbmcgb24gYmFuayAzIGJlaW5nCisJCSAqIGRpc2FibGVkIHRvIGF2b2lkIFNFUkRFUzgsIGluIHNvbWUgY2FzZXMgeW91IGNhbm5vdAorCQkgKiBhbHNvIGRpc2FibGUgYWxsIGxhbmVzIG9mIGFub3RoZXIgYmFuaywgb3IgZWxzZSBiYW5rCisJCSAqIDMgd29uJ3QgYmUgZGlzYWJsZWQsIGxlYXZpbmcgeW91IHdpdGggYSBjb25maWd1cmF0aW9uCisJCSAqIHRoYXQgaXNuJ3QgdmFsaWQgYWNjb3JkaW5nIHRvIFNFUkRFUzggKGUuZy4gaWYgYmFua3MKKwkJICogMiBhbmQgMyBoYXZlIHRoZSBzYW1lIGNsb2NrLCBhbmQgYmFuayAxIGlzIGRpc2FibGVkCisJCSAqIGluc3RlYWQgb2YgMykuCisJCSAqLworCQlmb3IgKGJhbmsgPSAwOyBiYW5rIDwgU1JEU19NQVhfQkFOSzsgYmFuaysrKSB7CisJCQlpZiAoIWhhdmVfYmFua1tiYW5rXSkKKwkJCQlicmVhazsKKwkJfQorCisJCWlmIChiYW5rID09IFNSRFNfTUFYX0JBTkspCisJCQloYXZlX2JhbmtbRlNMX1NSRFNfQkFOS18zXSA9IDA7CisJfSBlbHNlIHsKKwkJaWYgKGhhdmVfYmFua1tGU0xfU1JEU19CQU5LXzJdKQorCQkJaGF2ZV9iYW5rW0ZTTF9TUkRTX0JBTktfM10gPSAxOworCX0KKyNlbmRpZgorCisJZm9yIChiYW5rID0gMDsgYmFuayA8IFNSRFNfTUFYX0JBTks7IGJhbmsrKykgeworCQlpZiAoIWhhdmVfYmFua1tiYW5rXSkgeworCQkJcHJpbnRmKCJTRVJERVM6IGJhbmsgJWQgZGlzYWJsZWRcbiIsIGJhbmsgKyAxKTsKKwkJCXNldGJpdHNfYmUzMigmc3Jkc19yZWdzLT5iYW5rW2JhbmtdLnJzdGN0bCwKKwkJCQkgICAgIFNSRFNfUlNUQ1RMX1NEUEQpOworCQl9CisJfQorCisJZm9yIChsYW5lID0gMDsgbGFuZSA8IFNSRFNfTUFYX0xBTkVTOyBsYW5lKyspIHsKKwkJaWR4ID0gc2VyZGVzX2dldF9sYW5lX2lkeChsYW5lKTsKKwkJbGFuZV9wcnRjbCA9IHNlcmRlc19nZXRfcHJ0Y2woY2ZnLCBsYW5lKTsKKworI2lmZGVmIERFQlVHCisJCXN3aXRjaCAobGFuZSkgeworCQljYXNlIDA6CisJCQlwdXRzKCJCYW5rMTogIik7CisJCQlicmVhazsKKwkJY2FzZSAxMDoKKwkJCXB1dHMoIlxuQmFuazI6ICIpOworCQkJYnJlYWs7CisJCWNhc2UgMTQ6CisJCQlwdXRzKCJcbkJhbmszOiAiKTsKKwkJCWJyZWFrOworCQlkZWZhdWx0OgorCQkJYnJlYWs7CisJCX0KKworCQlwcmludGYoIiVzICIsIHNlcmRlc19wcnRjbF9zdHJbbGFuZV9wcnRjbF0pOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU1lTX1A0MDgwX0VSUkFUVU1fU0VSREVTOAorCQlzd2l0Y2ggKGxhbmVfcHJ0Y2wpIHsKKwkJY2FzZSBQQ0lFMToKKwkJY2FzZSBQQ0lFMjoKKwkJY2FzZSBQQ0lFMzoKKwkJCXNlcmRlczhfZGV2ZGlzciB8PSBGU0xfQ09SRU5FVF9ERVZESVNSX1BDSUUxID4+CisJCQkJCSAgIChsYW5lX3BydGNsIC0gUENJRTEpOworCQkJYnJlYWs7CisJCWNhc2UgU1JJTzE6CisJCWNhc2UgU1JJTzI6CisJCQlzZXJkZXM4X2RldmRpc3IgfD0gRlNMX0NPUkVORVRfREVWRElTUl9TUklPMSA+PgorCQkJCQkgICAobGFuZV9wcnRjbCAtIFNSSU8xKTsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMV9EVFNFQzE6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMSB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzFfMTsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMV9EVFNFQzI6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMSB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzFfMjsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMV9EVFNFQzM6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMSB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzFfMzsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMV9EVFNFQzQ6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMSB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzFfNDsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMl9EVFNFQzE6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMiB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzJfMTsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMl9EVFNFQzI6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMiB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzJfMjsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMl9EVFNFQzM6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMiB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzJfMzsKKwkJCWJyZWFrOworCQljYXNlIFNHTUlJX0ZNMl9EVFNFQzQ6CisJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMiB8CisJCQkJCSAgICBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzJfNDsKKwkJCWJyZWFrOworCQljYXNlIFhBVUlfRk0xOgorCQljYXNlIFhBVUlfRk0yOgorCQkJaWYgKGxhbmVfcHJ0Y2wgPT0gWEFVSV9GTTEpCisJCQkJc2VyZGVzOF9kZXZkaXNyMiB8PSBGU0xfQ09SRU5FVF9ERVZESVNSMl9GTTEJfAorCQkJCQkJICAgIEZTTF9DT1JFTkVUX0RFVkRJU1IyXzEwR0VDMTsKKwkJCWVsc2UKKwkJCQlzZXJkZXM4X2RldmRpc3IyIHw9IEZTTF9DT1JFTkVUX0RFVkRJU1IyX0ZNMgl8CisJCQkJCQkgICAgRlNMX0NPUkVORVRfREVWRElTUjJfMTBHRUMyOworCQkJYnJlYWs7CisJCWNhc2UgQVVST1JBOgorCQkJYnJlYWs7CisJCWRlZmF1bHQ6CisJCQlicmVhazsKKwkJfQorCisjZW5kaWYKKwl9CisKKyNpZmRlZiBERUJVRworCXB1dHMoIlxuIik7CisjZW5kaWYKKworCWZvciAoaWR4ID0gMDsgaWR4IDwgU1JEU19NQVhfQkFOSzsgaWR4KyspIHsKKwkJdTMyIHJzdGN0bDsKKworCQliYW5rID0gaWR4OworCisjaWZkZWYgQ09ORklHX1NZU19QNDA4MF9FUlJBVFVNX1NFUkRFUzgKKwkJaWYgKCFJU19TVlJfUkVWKGdldF9zdnIoKSwgMSwgMCkpIHsKKwkJCS8qCisJCQkgKiBDaGFuZ2UgYmFuayBpbml0IG9yZGVyIHRvIDAsIDIsIDEsIHNvIHRoYXQgdGhlCisJCQkgKiB0aGlyZCBiYW5rJ3MgUExMIGlzIGVzdGFibGlzaGVkIGJlZm9yZSB3ZQorCQkJICogc3RhcnQgdGhlIHNlY29uZCBiYW5rIHdoaWNoIHNoYXJlcyB0aGUgdGhpcmQKKwkJCSAqIGJhbmsncyBQTEwuCisJCQkgKi8KKworCQkJaWYgKGlkeCA9PSAxKQorCQkJCWJhbmsgPSBGU0xfU1JEU19CQU5LXzM7CisJCQllbHNlIGlmIChpZHggPT0gMikKKwkJCQliYW5rID0gRlNMX1NSRFNfQkFOS18yOworCQl9CisjZW5kaWYKKworCQkvKiBTa2lwIGRpc2FibGVkIGJhbmtzICovCisJCWlmICghaGF2ZV9iYW5rW2JhbmtdKQorCQkJY29udGludWU7CisKKyNpZmRlZiBDT05GSUdfU1lTX1A0MDgwX0VSUkFUVU1fU0VSREVTOAorCQlpZiAoIUlTX1NWUl9SRVYoZ2V0X3N2cigpLCAxLCAwKSkgeworCQkJaWYgKGlkeCA9PSAxKSB7CisJCQkJcDQwODBfZXJyYXR1bV9zZXJkZXM4KHNyZHNfcmVncywgZ3VyLAorCQkJCQkJICAgICAgc2VyZGVzOF9kZXZkaXNyLAorCQkJCQkJICAgICAgc2VyZGVzOF9kZXZkaXNyMiwgY2ZnKTsKKwkJCX0gZWxzZSBpZiAoaWR4ID09IDIpIHsKKwkJCQllbmFibGVfYmFuayhndXIsIEZTTF9TUkRTX0JBTktfMik7CisJCQl9CisJCX0KKyNlbmRpZgorCisJCS8qIHJlc2V0IGJhbmtzIGZvciBlcnJhdGEgKi8KKwkJc2V0Yml0c19iZTMyKCZzcmRzX3JlZ3MtPmJhbmtbYmFua10ucnN0Y3RsLCBTUkRTX1JTVENUTF9SU1QpOworCisJCS8qIHdhaXQgZm9yIHJlc2V0IGNvbXBsZXRlIG9yIDEtc2Vjb25kIHRpbWVvdXQgKi8KKwkJZW5kX3RpY2sgPSB1c2VjMnRpY2tzKDEwMDAwMDApICsgZ2V0X3RpY2tzKCk7CisJCWRvIHsKKwkJCXJzdGN0bCA9IGluX2JlMzIoJnNyZHNfcmVncy0+YmFua1tiYW5rXS5yc3RjdGwpOworCQkJaWYgKHJzdGN0bCAmIFNSRFNfUlNUQ1RMX1JTVERPTkUpCisJCQkJYnJlYWs7CisJCX0gd2hpbGUgKGVuZF90aWNrID4gZ2V0X3RpY2tzKCkpOworCisJCWlmICghKHJzdGN0bCAmIFNSRFNfUlNUQ1RMX1JTVERPTkUpKSB7CisJCQlwcmludGYoIlNFUkRFUzogdGltZW91dCByZXNldHRpbmcgYmFuayAlZFxuIiwKKwkJCSAgICAgICBiYW5rICsgMSk7CisJCQljb250aW51ZTsKKwkJfQorCX0KK30KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9mc2xfY29yZW5ldF9zZXJkZXMuaCBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9mc2xfY29yZW5ldF9zZXJkZXMuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmQ3NzFlCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2ZzbF9jb3JlbmV0X3NlcmRlcy5oCkBAIC0wLDAgKzEsNDQgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOS0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogQXV0aG9yOiBSb3kgWmFuZyA8dGllLWZlaS56YW5nQGZyZWVzY2FsZS5jb20+CisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0ZTTF9DT1JFTkVUX1NFUkRFU19ICisjZGVmaW5lIF9fRlNMX0NPUkVORVRfU0VSREVTX0gKKworI2RlZmluZSBTUkRTX01BWF9MQU5FUwkJMTgKKyNkZWZpbmUgU1JEU19NQVhfQkFOSwkJMworCitlbnVtIHNyZHNfYmFuayB7CisJRlNMX1NSRFNfQkFOS18xICA9IDAsCisJRlNMX1NSRFNfQkFOS18yICA9IDEsCisJRlNMX1NSRFNfQkFOS18zICA9IDIsCit9OworCitpbnQgaXNfc2VyZGVzX3BydGNsX3ZhbGlkKHUzMiBwcnRjbCk7CitpbnQgc2VyZGVzX2dldF9sYW5lX2lkeChpbnQgbGFuZSk7CitpbnQgc2VyZGVzX2dldF9iYW5rKGludCBsYW5lKTsKK2ludCBzZXJkZXNfbGFuZV9lbmFibGVkKGludCBsYW5lKTsKK2VudW0gc3Jkc19wcnRjbCBzZXJkZXNfZ2V0X3BydGNsKGludCBjZmcsIGludCBsYW5lKTsKKworI2lmZGVmIENPTkZJR19TWVNfUDQwODBfRVJSQVRVTV9TRVJERVM4CitleHRlcm4gdWludDE2X3Qgc3Jkc19scGRfYltTUkRTX01BWF9CQU5LXTsKKyNlbmRpZgorCisjZW5kaWYgLyogX19GU0xfQ09SRU5FVF9TRVJERVNfSCAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2xpb2RuLmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvbGlvZG4uYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZDE5MDk0Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L2xpb2RuLmMKQEAgLTAsMCArMSwxODcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOC0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8bGliZmR0Lmg+CisjaW5jbHVkZSA8ZmR0X3N1cHBvcnQuaD4KKworI2luY2x1ZGUgPGFzbS9pbW1hcF84NXh4Lmg+CisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9mc2xfcG9ydGFscy5oPgorI2luY2x1ZGUgPGFzbS9mc2xfbGlvZG4uaD4KKworaW50IGdldF9kcGFhX2xpb2RuKGVudW0gZnNsX2RwYWFfZGV2IGRwYWFfZGV2LCB1MzIgKmxpb2RucywgaW50IGxpb2RuX29mZnNldCkKK3sKKwlsaW9kbnNbMF0gPSBsaW9kbl9iYXNlc1tkcGFhX2Rldl0uaWRbMF0gKyBsaW9kbl9vZmZzZXQ7CisKKwlpZiAobGlvZG5fYmFzZXNbZHBhYV9kZXZdLm51bV9pZHMgPT0gMikKKwkJbGlvZG5zWzFdID0gbGlvZG5fYmFzZXNbZHBhYV9kZXZdLmlkWzFdICsgbGlvZG5fb2Zmc2V0OworCisJcmV0dXJuIGxpb2RuX2Jhc2VzW2RwYWFfZGV2XS5udW1faWRzOworfQorCitzdGF0aWMgdm9pZCBzZXRfbGlvZG4oc3RydWN0IGxpb2RuX2lkX3RhYmxlICp0YmwsIGludCBzaXplKQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKykgeworCQl1MzIgbGlvZG47CisJCWlmICh0YmxbaV0ubnVtX2lkcyA9PSAyKSB7CisJCQlsaW9kbiA9ICh0YmxbaV0uaWRbMF0gPDwgMTYpIHwgdGJsW2ldLmlkWzFdOworCQl9IGVsc2UgeworCQkJbGlvZG4gPSB0YmxbaV0uaWRbMF07CisJCX0KKworCQlvdXRfYmUzMigodm9sYXRpbGUgdTMyICopKHRibFtpXS5yZWdfb2Zmc2V0KSwgbGlvZG4pOworCX0KK30KKworc3RhdGljIHZvaWQgc2V0dXBfc2VjX2xpb2RuX2Jhc2Uodm9pZCkKK3sKKwljY3NyX3NlY190ICpzZWMgPSAodm9pZCAqKUNPTkZJR19TWVNfRlNMX1NFQ19BRERSOworCXUzMiBiYXNlOworCisJaWYgKCFJU19FX1BST0NFU1NPUihnZXRfc3ZyKCkpKQorCQlyZXR1cm47CisKKwkvKiBRSUxDUltRU0xPTV0gKi8KKwlvdXRfYmUzMigmc2VjLT5xaWxjcl9tcywgMHgzZmY8PDE2KTsKKworCWJhc2UgPSAobGlvZG5fYmFzZXNbRlNMX0hXX1BPUlRBTF9TRUNdLmlkWzBdIDw8IDE2KSB8CisJCWxpb2RuX2Jhc2VzW0ZTTF9IV19QT1JUQUxfU0VDXS5pZFsxXTsKKworCW91dF9iZTMyKCZzZWMtPnFpbGNyX2xzLCBiYXNlKTsKK30KKworI2lmZGVmIENPTkZJR19TWVNfRFBBQV9GTUFOCitzdGF0aWMgdm9pZCBzZXR1cF9mbWFuX2xpb2RuX2Jhc2UoZW51bSBmc2xfZHBhYV9kZXYgZGV2LAorCQkJCSAgc3RydWN0IGxpb2RuX2lkX3RhYmxlICp0YmwsIGludCBzaXplKQoreworCWludCBpOworCWNjc3JfZm1hbl90ICpmbTsKKwl1MzIgYmFzZTsKKworCXN3aXRjaChkZXYpIHsKKwljYXNlIEZTTF9IV19QT1JUQUxfRk1BTjE6CisJCWZtID0gKHZvaWQgKilDT05GSUdfU1lTX0ZTTF9GTTFfQUREUjsKKwkJYnJlYWs7CisKKyNpZiAoQ09ORklHX1NZU19OVU1fRk1BTiA9PSAyKQorCWNhc2UgRlNMX0hXX1BPUlRBTF9GTUFOMjoKKwkJZm0gPSAodm9pZCAqKUNPTkZJR19TWVNfRlNMX0ZNMl9BRERSOworCQlicmVhazsKKyNlbmRpZgorCWRlZmF1bHQ6CisJCXByaW50ZigiRXJyb3I6IEludmFsaWQgZGV2aWNlIHR5cGUgdG8gJXNcbiIsIF9fRlVOQ1RJT05fXyk7CisJCXJldHVybiA7CisJfQorCisJYmFzZSA9IChsaW9kbl9iYXNlc1tkZXZdLmlkWzBdIDw8IDE2KSB8IGxpb2RuX2Jhc2VzW2Rldl0uaWRbMF07CisKKwkvKiBzZXR1cCBhbGwgYmFzZXMgdGhlIHNhbWUgKi8KKwlmb3IgKGkgPSAwOyBpIDwgMzI7IGkrKykgeworCQlvdXRfYmUzMigmZm0tPmZtX2RtYS5mbWRtcGxyW2ldLCBiYXNlKTsKKwl9CisKKwkvKiB1cGRhdGUgdGJsIHRvIC4uLiAqLworCWZvciAoaSA9IDA7IGkgPCBzaXplOyBpKyspCisJCXRibFtpXS5pZFswXSArPSBsaW9kbl9iYXNlc1tkZXZdLmlkWzBdOworfQorI2VuZGlmCisKK3N0YXRpYyB2b2lkIHNldHVwX3BtZV9saW9kbl9iYXNlKHZvaWQpCit7CisjaWZkZWYgQ09ORklHX1NZU19EUEFBX1BNRQorCWNjc3JfcG1lX3QgKnBtZSA9ICh2b2lkICopQ09ORklHX1NZU19GU0xfQ09SRU5FVF9QTUVfQUREUjsKKwl1MzIgYmFzZSA9IChsaW9kbl9iYXNlc1tGU0xfSFdfUE9SVEFMX1BNRV0uaWRbMF0gPDwgMTYpIHwKKwkJCWxpb2RuX2Jhc2VzW0ZTTF9IV19QT1JUQUxfUE1FXS5pZFsxXTsKKworCW91dF9iZTMyKCZwbWUtPmxpb2RuYnIsIGJhc2UpOworI2VuZGlmCit9CisKK3ZvaWQgc2V0X2xpb2Rucyh2b2lkKQoreworCS8qIHNldHVwIGdlbmVyYWwgbGlvZG4gb2Zmc2V0cyAqLworCXNldF9saW9kbihsaW9kbl90YmwsIGxpb2RuX3RibF9zeik7CisKKwkvKiBzZXR1cCBTRUMgYmxvY2sgbGlvZG4gYmFzZXMgJiBvZmZzZXRzIGlmIHdlIGhhdmUgb25lICovCisJaWYgKElTX0VfUFJPQ0VTU09SKGdldF9zdnIoKSkpIHsKKwkJc2V0X2xpb2RuKHNlY19saW9kbl90YmwsIHNlY19saW9kbl90Ymxfc3opOworCQlzZXR1cF9zZWNfbGlvZG5fYmFzZSgpOworCX0KKworCS8qIHNldHVwIEZNQU4gYmxvY2socykgbGlvZG4gYmFzZXMgJiBvZmZzZXRzIGlmIHdlIGhhdmUgb25lICovCisjaWZkZWYgQ09ORklHX1NZU19EUEFBX0ZNQU4KKwlzZXRfbGlvZG4oZm1hbjFfbGlvZG5fdGJsLCBmbWFuMV9saW9kbl90Ymxfc3opOworCXNldHVwX2ZtYW5fbGlvZG5fYmFzZShGU0xfSFdfUE9SVEFMX0ZNQU4xLCBmbWFuMV9saW9kbl90YmwsCisJCQkJZm1hbjFfbGlvZG5fdGJsX3N6KTsKKworI2lmIChDT05GSUdfU1lTX05VTV9GTUFOID09IDIpCisJc2V0X2xpb2RuKGZtYW4yX2xpb2RuX3RibCwgZm1hbjJfbGlvZG5fdGJsX3N6KTsKKwlzZXR1cF9mbWFuX2xpb2RuX2Jhc2UoRlNMX0hXX1BPUlRBTF9GTUFOMiwgZm1hbjJfbGlvZG5fdGJsLAorCQkJCWZtYW4yX2xpb2RuX3RibF9zeik7CisjZW5kaWYKKyNlbmRpZgorCS8qIHNldHVwIFBNRSBsaW9kbiBiYXNlICovCisJc2V0dXBfcG1lX2xpb2RuX2Jhc2UoKTsKK30KKworc3RhdGljIHZvaWQgZmR0X2ZpeHVwX2xpb2RuX3RibCh2b2lkICpibG9iLCBzdHJ1Y3QgbGlvZG5faWRfdGFibGUgKnRibCwgaW50IHN6KQoreworCWludCBpOworCisJZm9yIChpID0gMDsgaSA8IHN6OyBpKyspIHsKKwkJaW50IG9mZjsKKworCQlpZiAodGJsW2ldLmNvbXBhdCA9PSBOVUxMKQorCQkJY29udGludWU7CisKKwkJb2ZmID0gZmR0X25vZGVfb2Zmc2V0X2J5X2NvbXBhdF9yZWcoYmxvYiwKKwkJCQl0YmxbaV0uY29tcGF0LCB0YmxbaV0uY29tcGF0X29mZnNldCk7CisJCWlmIChvZmYgPj0gMCkgeworCQkJb2ZmID0gZmR0X3NldHByb3AoYmxvYiwgb2ZmLCAiZnNsLGxpb2RuIiwKKwkJCQkmdGJsW2ldLmlkWzBdLAorCQkJCXNpemVvZih1MzIpICogdGJsW2ldLm51bV9pZHMpOworCQkJaWYgKG9mZiA+IDApCisJCQkJcHJpbnRmKCJXQVJOSU5HIHVuYWJsZSB0byBzZXQgZnNsLGxpb2RuIGZvciAiCisJCQkJCSIlczogJXNcbiIsCisJCQkJCXRibFtpXS5jb21wYXQsIGZkdF9zdHJlcnJvcihvZmYpKTsKKwkJfSBlbHNlIHsKKwkJCWRlYnVnKCJXQVJOSU5HOiBjb3VsZCBub3Qgc2V0IGZzbCxsaW9kbiBmb3IgJXM6ICVzLlxuIiwKKwkJCQkJdGJsW2ldLmNvbXBhdCwgZmR0X3N0cmVycm9yKG9mZikpOworCQl9CisJfQorfQorCit2b2lkIGZkdF9maXh1cF9saW9kbih2b2lkICpibG9iKQoreworCWZkdF9maXh1cF9saW9kbl90YmwoYmxvYiwgbGlvZG5fdGJsLCBsaW9kbl90Ymxfc3opOworI2lmZGVmIENPTkZJR19TWVNfRFBBQV9GTUFOCisJZmR0X2ZpeHVwX2xpb2RuX3RibChibG9iLCBmbWFuMV9saW9kbl90YmwsIGZtYW4xX2xpb2RuX3RibF9zeik7CisjaWYgKENPTkZJR19TWVNfTlVNX0ZNQU4gPT0gMikKKwlmZHRfZml4dXBfbGlvZG5fdGJsKGJsb2IsIGZtYW4yX2xpb2RuX3RibCwgZm1hbjJfbGlvZG5fdGJsX3N6KTsKKyNlbmRpZgorI2VuZGlmCisJZmR0X2ZpeHVwX2xpb2RuX3RibChibG9iLCBzZWNfbGlvZG5fdGJsLCBzZWNfbGlvZG5fdGJsX3N6KTsKK30KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9wNDA4MF9pZHMuYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9wNDA4MF9pZHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zODYxMTQ2Ci0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3A0MDgwX2lkcy5jCkBAIC0wLDAgKzEsMTE1IEBACisvKgorICogQ29weXJpZ2h0IDIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9wb3J0YWxzLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9saW9kbi5oPgorCitzdHJ1Y3QgcXBvcnRhbF9pbmZvIHFwX2luZm9bQ09ORklHX1NZU19RTUFOX05VTV9QT1JUQUxTXSA9IHsKKwkvKiBkcXJyIGxpb2RuLCBmcmFtZSBkYXRhIGxpb2RuLCBsaW9kbiBvZmYsIHNkZXN0ICovCisJU0VUX1FQX0lORk8oIDEsICAyLCAgMSwgMCksCisJU0VUX1FQX0lORk8oIDMsICA0LCAgMiwgMSksCisJU0VUX1FQX0lORk8oIDUsICA2LCAgMywgMiksCisJU0VUX1FQX0lORk8oIDcsICA4LCAgNCwgMyksCisJU0VUX1FQX0lORk8oIDksIDEwLCAgNSwgNCksCisJU0VUX1FQX0lORk8oMTEsIDEyLCAgNiwgNSksCisJU0VUX1FQX0lORk8oMTMsIDE0LCAgNywgNiksCisJU0VUX1FQX0lORk8oMTUsIDE2LCAgOCwgNyksCisJU0VUX1FQX0lORk8oMTcsIDE4LCAgOSwgMCksIC8qIGZvciBub3cgc2Rlc3QgdG8gMCAqLworCVNFVF9RUF9JTkZPKDE5LCAyMCwgMTAsIDApLCAvKiBmb3Igbm93IHNkZXN0IHRvIDAgKi8KK307CisKK3N0cnVjdCBsaW9kbl9pZF90YWJsZSBsaW9kbl90YmxbXSA9IHsKKwlTRVRfVVNCX0xJT0ROKDEsICJmc2wtdXNiMi1tcGgiLCAxMjcpLAorCVNFVF9VU0JfTElPRE4oMiwgImZzbC11c2IyLWRyIiwgMTU3KSwKKworCVNFVF9TREhDX0xJT0ROKDEsIDE1NiksCisKKwlTRVRfUENJX0xJT0ROKDEsIDE5MyksCisJU0VUX1BDSV9MSU9ETigyLCAxOTQpLAorCVNFVF9QQ0lfTElPRE4oMywgMTk1KSwKKworCVNFVF9ETUFfTElPRE4oMSwgMTk2KSwKKwlTRVRfRE1BX0xJT0ROKDIsIDE5NyksCisKKwlTRVRfR1VUU19MSU9ETigiZnNsLHJhcGlkaW8tZGVsdGEiLCAxOTgsIHJpbzFsaW9kbnIsIDApLAorCVNFVF9HVVRTX0xJT0ROKE5VTEwsIDE5OSwgcmlvMmxpb2RuciwgMCksCisJU0VUX0dVVFNfTElPRE4oTlVMTCwgMjAwLCBybXVsaW9kbnIsIDApLAorCisJU0VUX1FNQU5fTElPRE4oMzEpLAorCVNFVF9CTUFOX0xJT0ROKDMyKSwKKwlTRVRfUE1FX0xJT0ROKDEyOCksCit9OworCisjaWZkZWYgQ09ORklHX1NZU19EUEFBX0ZNQU4KK3N0cnVjdCBsaW9kbl9pZF90YWJsZSBmbWFuMV9saW9kbl90YmxbXSA9IHsKKwlTRVRfRk1BTl9SWF8xR19MSU9ETigxLCAwLCAxMSksCisJU0VUX0ZNQU5fUlhfMUdfTElPRE4oMSwgMSwgMTIpLAorCVNFVF9GTUFOX1JYXzFHX0xJT0ROKDEsIDIsIDEzKSwKKwlTRVRfRk1BTl9SWF8xR19MSU9ETigxLCAzLCAxNCksCisJU0VUX0ZNQU5fUlhfMTBHX0xJT0ROKDEsIDAsIDE1KSwKK307CisKKyNpZiAoQ09ORklHX1NZU19OVU1fRk1BTiA9PSAyKQorc3RydWN0IGxpb2RuX2lkX3RhYmxlIGZtYW4yX2xpb2RuX3RibFtdID0geworCVNFVF9GTUFOX1JYXzFHX0xJT0ROKDIsIDAsIDE2KSwKKwlTRVRfRk1BTl9SWF8xR19MSU9ETigyLCAxLCAxNyksCisJU0VUX0ZNQU5fUlhfMUdfTElPRE4oMiwgMiwgMTgpLAorCVNFVF9GTUFOX1JYXzFHX0xJT0ROKDIsIDMsIDE5KSwKKwlTRVRfRk1BTl9SWF8xMEdfTElPRE4oMiwgMCwgMjApLAorfTsKKyNlbmRpZgorI2VuZGlmCisKK3N0cnVjdCBsaW9kbl9pZF90YWJsZSBzZWNfbGlvZG5fdGJsW10gPSB7CisJU0VUX1NFQ19KUV9MSU9ETl9FTlRSWSgwLCAxNDYsIDE1NCksCisJU0VUX1NFQ19KUV9MSU9ETl9FTlRSWSgxLCAxNDcsIDE1NSksCisJU0VUX1NFQ19KUV9MSU9ETl9FTlRSWSgyLCAxNzgsIDE4NiksCisJU0VUX1NFQ19KUV9MSU9ETl9FTlRSWSgzLCAxNzksIDE4NyksCisJU0VUX1NFQ19SVElDX0xJT0ROX0VOVFJZKGEsIDE0NCksCisJU0VUX1NFQ19SVElDX0xJT0ROX0VOVFJZKGIsIDE0NSksCisJU0VUX1NFQ19SVElDX0xJT0ROX0VOVFJZKGMsIDE3NiksCisJU0VUX1NFQ19SVElDX0xJT0ROX0VOVFJZKGQsIDE3NyksCisJU0VUX1NFQ19ERUNPX0xJT0ROX0VOVFJZKDAsIDEyOSwgMTYxKSwKKwlTRVRfU0VDX0RFQ09fTElPRE5fRU5UUlkoMSwgMTMwLCAxNjIpLAorCVNFVF9TRUNfREVDT19MSU9ETl9FTlRSWSgyLCAxMzEsIDE2MyksCisJU0VUX1NFQ19ERUNPX0xJT0ROX0VOVFJZKDMsIDEzMiwgMTY0KSwKKwlTRVRfU0VDX0RFQ09fTElPRE5fRU5UUlkoNCwgMTMzLCAxNjUpLAorfTsKKworc3RydWN0IGxpb2RuX2lkX3RhYmxlIGxpb2RuX2Jhc2VzW10gPSB7CisJW0ZTTF9IV19QT1JUQUxfU0VDXSAgPSBTRVRfTElPRE5fQkFTRV8yKDk2LCAxMDYpLAorI2lmZGVmIENPTkZJR19TWVNfRFBBQV9GTUFOCisJW0ZTTF9IV19QT1JUQUxfRk1BTjFdID0gU0VUX0xJT0ROX0JBU0VfMSgzMiksCisjaWYgKENPTkZJR19TWVNfTlVNX0ZNQU4gPT0gMikKKwlbRlNMX0hXX1BPUlRBTF9GTUFOMl0gPSBTRVRfTElPRE5fQkFTRV8xKDY0KSwKKyNlbmRpZgorI2VuZGlmCisjaWZkZWYgQ09ORklHX1NZU19EUEFBX1BNRQorCVtGU0xfSFdfUE9SVEFMX1BNRV0gICA9IFNFVF9MSU9ETl9CQVNFXzIoMTE2LCAxMzMpLAorI2VuZGlmCit9OworCitpbnQgbGlvZG5fdGJsX3N6ID0gQVJSQVlfU0laRShsaW9kbl90YmwpOworaW50IGZtYW4xX2xpb2RuX3RibF9zeiA9IEFSUkFZX1NJWkUoZm1hbjFfbGlvZG5fdGJsKTsKK2ludCBmbWFuMl9saW9kbl90Ymxfc3ogPSBBUlJBWV9TSVpFKGZtYW4yX2xpb2RuX3RibCk7CitpbnQgc2VjX2xpb2RuX3RibF9zeiA9IEFSUkFZX1NJWkUoc2VjX2xpb2RuX3RibCk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvcDQwODBfc2VyZGVzLmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvcDQwODBfc2VyZGVzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODdiZDc5NQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9wNDA4MF9zZXJkZXMuYwpAQCAtMCwwICsxLDk4IEBACisvKgorICogQ29weXJpZ2h0IDIwMDktMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vZnNsX3NlcmRlcy5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlICJmc2xfY29yZW5ldF9zZXJkZXMuaCIKKworc3RhdGljIHU4IHNlcmRlc19jZmdfdGJsW11bU1JEU19NQVhfTEFORVNdID0geworCVsweDJdID0ge1BDSUUxLCBQQ0lFMSwgUENJRTEsIFBDSUUxLCBQQ0lFMSwgUENJRTEsIFBDSUUxLCBQQ0lFMSwKKwkJQVVST1JBLCBBVVJPUkEsIFhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLAorCQlYQVVJX0ZNMSwgWEFVSV9GTTEsIFhBVUlfRk0xLCBYQVVJX0ZNMX0sCisJWzB4NV0gPSB7UENJRTEsIFBDSUUxLCBQQ0lFMSwgUENJRTEsIFBDSUUyLCBQQ0lFMiwgUENJRTIsIFBDSUUyLAorCQlBVVJPUkEsIEFVUk9SQSwgWEFVSV9GTTIsIFhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsCisJCVhBVUlfRk0xLCBYQVVJX0ZNMSwgWEFVSV9GTTEsIFhBVUlfRk0xfSwKKwlbMHg4XSA9IHtQQ0lFMSwgUENJRTEsIFBDSUUzLCBQQ0lFMywgUENJRTIsIFBDSUUyLCBQQ0lFMiwgUENJRTIsCisJCUFVUk9SQSwgQVVST1JBLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLCBYQVVJX0ZNMiwKKwkJWEFVSV9GTTEsIFhBVUlfRk0xLCBYQVVJX0ZNMSwgWEFVSV9GTTF9LAorCVsweGRdID0ge1BDSUUxLCBQQ0lFMSwgUENJRTEsIFBDSUUxLCBQQ0lFMiwgUENJRTIsIFNHTUlJX0ZNMl9EVFNFQzMsCisJCVNHTUlJX0ZNMl9EVFNFQzQsIEFVUk9SQSwgQVVST1JBLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLAorCQlYQVVJX0ZNMiwgWEFVSV9GTTEsIFhBVUlfRk0xLCBYQVVJX0ZNMSwgWEFVSV9GTTF9LAorCVsweGVdID0ge1BDSUUxLCBQQ0lFMSwgUENJRTMsIFBDSUUzLCBQQ0lFMiwgUENJRTIsIFNHTUlJX0ZNMl9EVFNFQzMsCisJCVNHTUlJX0ZNMl9EVFNFQzQsIEFVUk9SQSwgQVVST1JBLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLAorCQlYQVVJX0ZNMiwgWEFVSV9GTTEsIFhBVUlfRk0xLCBYQVVJX0ZNMSwgWEFVSV9GTTF9LAorCVsweGZdID0ge1BDSUUxLCBQQ0lFMSwgUENJRTEsIFBDSUUxLCBTR01JSV9GTTJfRFRTRUMxLCBTR01JSV9GTTJfRFRTRUMyLAorCQlTR01JSV9GTTJfRFRTRUMzLCBTR01JSV9GTTJfRFRTRUM0LCBBVVJPUkEsIEFVUk9SQSwgWEFVSV9GTTIsCisJCVhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIE5PTkUsIE5PTkUsIE5PTkUsIE5PTkV9LAorCVsweDEwXSA9IHtQQ0lFMSwgUENJRTEsIFBDSUUzLCBQQ0lFMywgU0dNSUlfRk0yX0RUU0VDMSwKKwkJU0dNSUlfRk0yX0RUU0VDMiwgU0dNSUlfRk0yX0RUU0VDMywgU0dNSUlfRk0yX0RUU0VDNCwKKwkJQVVST1JBLCBBVVJPUkEsIFhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLAorCQlOT05FLCBOT05FLCBOT05FLCBOT05FfSwKKwlbMHgxM10gPSB7U1JJTzIsIFNSSU8yLCBTUklPMiwgU1JJTzIsIFNSSU8xLCBTUklPMSwgU1JJTzEsIFNSSU8xLAorCQlBVVJPUkEsIEFVUk9SQSwgWEFVSV9GTTIsIFhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsCisJCVhBVUlfRk0xLCBYQVVJX0ZNMSwgWEFVSV9GTTEsIFhBVUlfRk0xfSwKKwlbMHgxNl0gPSB7U1JJTzIsIFNSSU8yLCBTUklPMiwgU1JJTzIsIFNSSU8xLCBTUklPMSwgU1JJTzEsIFNSSU8xLAorCQlBVVJPUkEsIEFVUk9SQSwgU0dNSUlfRk0yX0RUU0VDMSwgU0dNSUlfRk0yX0RUU0VDMiwKKwkJU0dNSUlfRk0yX0RUU0VDMywgU0dNSUlfRk0yX0RUU0VDNCwgU0dNSUlfRk0xX0RUU0VDMSwKKwkJU0dNSUlfRk0xX0RUU0VDMiwgU0dNSUlfRk0xX0RUU0VDMywgU0dNSUlfRk0xX0RUU0VDNH0sCisJWzB4MTldID0ge1NSSU8yLCBTUklPMiwgU1JJTzIsIFNSSU8yLCBTUklPMSwgU1JJTzEsIFNSSU8xLCBTUklPMSwKKwkJQVVST1JBLCBBVVJPUkEsIFBDSUUzLCBQQ0lFMywgUENJRTMsIFBDSUUzLCBTR01JSV9GTTFfRFRTRUMxLAorCQlTR01JSV9GTTFfRFRTRUMyLCBTR01JSV9GTTFfRFRTRUMzLCBTR01JSV9GTTFfRFRTRUM0fSwKKwlbMHgxZF0gPSB7UENJRTEsIFBDSUUxLCBQQ0lFMywgUENJRTMsIE5PTkUsIFNSSU8yLCBOT05FLCBTUklPMSwKKwkJQVVST1JBLCBBVVJPUkEsIFhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLAorCQlYQVVJX0ZNMSwgWEFVSV9GTTEsIFhBVUlfRk0xLCBYQVVJX0ZNMX0sCisJWzB4MjJdID0ge1BDSUUxLCBQQ0lFMSwgUENJRTEsIFBDSUUxLCBTUklPMSwgU1JJTzEsIFNSSU8xLCBTUklPMSwKKwkJQVVST1JBLCBBVVJPUkEsIFhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLAorCQlYQVVJX0ZNMSwgWEFVSV9GTTEsIFhBVUlfRk0xLCBYQVVJX0ZNMX0sCisJWzB4MjVdID0ge1BDSUUxLCBQQ0lFMSwgUENJRTMsIFBDSUUzLCBTUklPMSwgU1JJTzEsIFNSSU8xLCBTUklPMSwKKwkJQVVST1JBLCBBVVJPUkEsIFhBVUlfRk0yLCBYQVVJX0ZNMiwgWEFVSV9GTTIsIFhBVUlfRk0yLAorCQlYQVVJX0ZNMSwgWEFVSV9GTTEsIFhBVUlfRk0xLCBYQVVJX0ZNMX0sCit9OworCisjaWZkZWYgQ09ORklHX1NZU19QNDA4MF9FUlJBVFVNX1NFUkRFUzgKK3VpbnQxNl90IHNyZHNfbHBkX2JbU1JEU19NQVhfQkFOS107CisjZW5kaWYKKworZW51bSBzcmRzX3BydGNsIHNlcmRlc19nZXRfcHJ0Y2woaW50IGNmZywgaW50IGxhbmUpCit7CisJaWYgKCFzZXJkZXNfbGFuZV9lbmFibGVkKGxhbmUpKQorCQlyZXR1cm4gTk9ORTsKKworCXJldHVybiBzZXJkZXNfY2ZnX3RibFtjZmddW2xhbmVdOworfQorCitpbnQgaXNfc2VyZGVzX3BydGNsX3ZhbGlkKHUzMiBwcnRjbCkgeworCWludCBpOworCisJaWYgKHBydGNsID4gQVJSQVlfU0laRShzZXJkZXNfY2ZnX3RibCkpCisJCXJldHVybiAwOworCisJZm9yIChpID0gMDsgaSA8IFNSRFNfTUFYX0xBTkVTOyBpKyspIHsKKwkJaWYgKHNlcmRlc19jZmdfdGJsW3BydGNsXVtpXSAhPSBOT05FKQorCQkJcmV0dXJuIDE7CisJfQorCisJcmV0dXJuIDA7Cit9CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvcG9ydGFscy5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3BvcnRhbHMuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMWFlYzZlCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3BvcnRhbHMuYwpAQCAtMCwwICsxLDIzOCBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxsaWJmZHQuaD4KKyNpbmNsdWRlIDxmZHRfc3VwcG9ydC5oPgorCisjaW5jbHVkZSA8YXNtL3Byb2Nlc3Nvci5oPgorI2luY2x1ZGUgPGFzbS9pby5oPgorCisjaW5jbHVkZSA8YXNtL2ZzbF9wb3J0YWxzLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9saW9kbi5oPgorCitzdGF0aWMgY2Nzcl9xbWFuX3QgKnFtYW4gPSAodm9pZCAqKUNPTkZJR19TWVNfRlNMX0NPUkVORVRfUU1BTl9BRERSOworCit2b2lkIHNldHVwX3BvcnRhbHModm9pZCkKK3sKKwlpbnQgaTsKKworCS8qIFNldCB0aGUgUW1hbiBpbml0aWF0b3IgQkFSIHRvIG1hdGNoIHRoZSBMQVcgKGZvciBEUVJSIHN0YXNoaW5nKSAqLworI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisJb3V0X2JlMzIoJnFtYW4tPnFjc3BfYmFyZSwgKHUzMikoQ09ORklHX1NZU19RTUFOX01FTV9QSFlTID4+IDMyKSk7CisjZW5kaWYKKwlvdXRfYmUzMigmcW1hbi0+cWNzcF9iYXIsICh1MzIpQ09ORklHX1NZU19RTUFOX01FTV9QSFlTKTsKKworCWZvciAoaSA9IDA7IGkgPCBDT05GSUdfU1lTX1FNQU5fTlVNX1BPUlRBTFM7IGkrKykgeworCQl1OCBzZGVzdCA9IHFwX2luZm9baV0uc2Rlc3Q7CisJCXUxNiBmbGlvZG4gPSBxcF9pbmZvW2ldLmZsaW9kbjsKKwkJdTE2IGRsaW9kbiA9IHFwX2luZm9baV0uZGxpb2RuOworCQl1MTYgbGlvZG5fb2ZmID0gcXBfaW5mb1tpXS5saW9kbl9vZmZzZXQ7CisKKwkJb3V0X2JlMzIoJnFtYW4tPnFjc3BbaV0ucWNzcF9saW9fY2ZnLCAobGlvZG5fb2ZmIDw8IDE2KSB8CisJCQkJCWRsaW9kbik7CisJCS8qIHNldCBmcmFtZSBsaW9kbiAqLworCQlvdXRfYmUzMigmcW1hbi0+cWNzcFtpXS5xY3NwX2lvX2NmZywgKHNkZXN0IDw8IDE2KSB8IGZsaW9kbik7CisJfQorfQorCisvKiBVcGRhdGUgcG9ydGFsIGNvbnRhaW50ZXIgdG8gbWF0Y2ggTEFXIHNldHVwIG9mIHBvcnRhbCBpbiBwaHkgbWFwICovCit2b2lkIGZkdF9wb3J0YWwodm9pZCAqYmxvYiwgY29uc3QgY2hhciAqY29tcGF0LCBjb25zdCBjaGFyICpjb250YWluZXIsCisJCQl1NjQgYWRkciwgdTMyIHNpemUpCit7CisJaW50IG9mZjsKKworCW9mZiA9IGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRpYmxlKGJsb2IsIC0xLCBjb21wYXQpOworCWlmIChvZmYgPCAwKQorCQlyZXR1cm4gOworCisJb2ZmID0gZmR0X3BhcmVudF9vZmZzZXQoYmxvYiwgb2ZmKTsKKwkvKiBpZiBub24temVybyBhc3N1bWUgd2UgaGF2ZSBhIGNvbnRhaW5lciAqLworCWlmIChvZmYgPiAwKSB7CisJCWNoYXIgYnVmWzYwXTsKKwkJY29uc3QgY2hhciAqcCwgKm5hbWU7CisJCXUzMiAqcmFuZ2U7CisJCWludCBsZW47CisKKwkJLyogZml4dXAgcmFuZ2VzICovCisJCXJhbmdlID0gZmR0X2dldHByb3BfdyhibG9iLCBvZmYsICJyYW5nZXMiLCAmbGVuKTsKKwkJaWYgKHJhbmdlID09IE5VTEwpIHsKKwkJCXByaW50ZigiRVJST1I6IGNvbnRhaW5lciBmb3IgJXMgaGFzIG5vIHJhbmdlcyIsIGNvbXBhdCk7CisJCQlyZXR1cm4gOworCQl9CisKKwkJcmFuZ2VbMF0gPSAwOworCQlpZiAobGVuID09IDE2KSB7CisJCQlyYW5nZVsxXSA9IGFkZHIgPj4gMzI7CisJCQlyYW5nZVsyXSA9IGFkZHIgJiAweGZmZmZmZmZmOworCQkJcmFuZ2VbM10gPSBzaXplOworCQl9IGVsc2UgeworCQkJcmFuZ2VbMV0gPSBhZGRyICYgMHhmZmZmZmZmZjsKKwkJCXJhbmdlWzJdID0gc2l6ZTsKKwkJfQorCQlmZHRfc2V0cHJvcF9pbnBsYWNlKGJsb2IsIG9mZiwgInJhbmdlcyIsIHJhbmdlLCBsZW4pOworCisJCS8qIGZpeHVwIHRoZSBuYW1lICovCisJCW5hbWUgPSBmZHRfZ2V0X25hbWUoYmxvYiwgb2ZmLCAmbGVuKTsKKwkJcCA9IG1lbWNocihuYW1lLCAnQCcsIGxlbik7CisKKwkJaWYgKHApCisJCQlsZW4gPSBwIC0gbmFtZTsKKworCQkvKiBpZiB3ZSBhcmUgZ2l2ZW4gYSBjb250YWluZXIgbmFtZSBjaGVjayBpdAorCQkgKiBhZ2FpbnN0IHdoYXQgd2UgZm91bmQsIGlmIGl0IGRvZXNudCBtYXRjaCBleGl0IG91dCAqLworCQlpZiAoY29udGFpbmVyICYmIChtZW1jbXAoY29udGFpbmVyLCBuYW1lLCBsZW4pKSkgeworCQkJcHJpbnRmKCJXQVJOSU5HOiBjb250YWluZXIgbmFtZXMgZGlkbid0IG1hdGNoICVzICVzXG4iLAorCQkJCWNvbnRhaW5lciwgbmFtZSk7CisJCQlyZXR1cm4gOworCQl9CisKKwkJbWVtY3B5KCZidWYsIG5hbWUsIGxlbik7CisJCWxlbiArPSBzcHJpbnRmKCZidWZbbGVuXSwgIkAlbGx4IiwgYWRkcik7CisJCWZkdF9zZXRfbmFtZShibG9iLCBvZmYsIGJ1Zik7CisJCXJldHVybiA7CisJfQorCisJcHJpbnRmKCJFUlJPUjogJXMgaXNuJ3QgaW4gYSBjb250YWluZXIuICBOb3Qgc3VwcG9ydGVkXG4iLCBjb21wYXQpOworfQorCitzdGF0aWMgaW50IGZkdF9xcG9ydGFsKHZvaWQgKmJsb2IsIGludCBvZmYsIGludCBpZCwgY2hhciAqbmFtZSwKKwkJICAgICAgIGVudW0gZnNsX2RwYWFfZGV2IGRldiwgaW50IGNyZWF0ZSkKK3sKKwlpbnQgY2hpbGRvZmYsIGRldl9vZmYsIG51bSwgcmV0ID0gMDsKKwl1aW50MzJfdCBkZXZfaGFuZGxlOworCXUzMiBsaW9kbnNbMl07CisKKwljaGlsZG9mZiA9IGZkdF9zdWJub2RlX29mZnNldChibG9iLCBvZmYsIG5hbWUpOworCWlmIChjcmVhdGUpIHsKKwkJaWYgKGNoaWxkb2ZmIDw9IDApCisJCQljaGlsZG9mZiA9IGZkdF9hZGRfc3Vibm9kZShibG9iLCBvZmYsIG5hbWUpOworCisJCWlmIChjaGlsZG9mZiA+IDApIHsKKwkJCWNoYXIgaGFuZGxlWzY0XSwgKnA7CisKKwkJCXN0cm5jcHkoaGFuZGxlLCBuYW1lLCBzaXplb2YoaGFuZGxlKSk7CisJCQlwID0gc3RyY2hyKGhhbmRsZSwgJ0AnKTsKKwkJCWlmICghc3RybmNtcChuYW1lLCAiZm1hbiIsIDQpKSB7CisJCQkJKnAgPSAqKHAgKyAxKTsKKwkJCQlwKys7CisJCQl9CisJCQkqcCA9ICdcMCc7CisKKwkJCWRldl9vZmYgPSBmZHRfcGF0aF9vZmZzZXQoYmxvYiwgaGFuZGxlKTsKKwkJCWlmIChkZXZfb2ZmIDwgMCkKKwkJCQlyZXR1cm4gZGV2X29mZjsKKworCQkJZGV2X2hhbmRsZSA9IGZkdF9nZXRfcGhhbmRsZShibG9iLCBkZXZfb2ZmKTsKKwkJCWlmIChkZXZfaGFuZGxlIDw9IDApIHsKKwkJCQlkZXZfaGFuZGxlID0gZmR0X2FsbG9jX3BoYW5kbGUoYmxvYik7CisJCQkJZmR0X3NldHByb3BfY2VsbChibG9iLCBkZXZfb2ZmLAorCQkJCQkibGludXgscGhhbmRsZSIsIGRldl9oYW5kbGUpOworCQkJfQorCisJCQlyZXQgPSBmZHRfc2V0cHJvcChibG9iLCBjaGlsZG9mZiwgImRldi1oYW5kbGUiLAorCQkJCQkgICZkZXZfaGFuZGxlLCBzaXplb2YoZGV2X2hhbmRsZSkpOworCQkJaWYgKHJldCA8IDApCisJCQkJcmV0dXJuIHJldDsKKworCQkJbnVtID0gZ2V0X2RwYWFfbGlvZG4oZGV2LCAmbGlvZG5zWzBdLCBpZCk7CisJCQlyZXQgPSBmZHRfc2V0cHJvcChibG9iLCBjaGlsZG9mZiwgImZzbCxsaW9kbiIsCisJCQkJCSAgJmxpb2Ruc1swXSwgc2l6ZW9mKHUzMikgKiBudW0pOworCQl9IGVsc2UgeworCQkJcmV0dXJuIGNoaWxkb2ZmOworCQl9CisJfSBlbHNlIHsKKwkJaWYgKGNoaWxkb2ZmID4gMCkKKwkJCXJldCA9IGZkdF9kZWxfbm9kZShibG9iLCBjaGlsZG9mZik7CisJfQorCisJcmV0dXJuIHJldDsKK30KKwordm9pZCBmZHRfZml4dXBfcXBvcnRhbHModm9pZCAqYmxvYikKK3sKKwlpbnQgb2ZmLCBlcnI7CisJdW5zaWduZWQgaW50IG1haiwgbWluOworCXUzMiByZXZfMSA9IGluX2JlMzIoJnFtYW4tPmlwX3Jldl8xKTsKKwljaGFyIGNvbXBhdFs2NF07CisJaW50IGNvbXBhdF9sZW47CisKKwltYWogPSAocmV2XzEgPj4gOCkgJiAweGZmOworCW1pbiA9IHJldl8xICYgMHhmZjsKKworCWNvbXBhdF9sZW4gPSBzcHJpbnRmKGNvbXBhdCwgImZzbCxxbWFuLXBvcnRhbC0ldS4ldSIsIG1haiwgbWluKSArIDE7CisJY29tcGF0X2xlbiArPSBzcHJpbnRmKGNvbXBhdCArIGNvbXBhdF9sZW4sICJmc2wscW1hbi1wb3J0YWwiKSArIDE7CisKKwlvZmYgPSBmZHRfbm9kZV9vZmZzZXRfYnlfY29tcGF0aWJsZShibG9iLCAtMSwgImZzbCxxbWFuLXBvcnRhbCIpOworCXdoaWxlIChvZmYgIT0gLUZEVF9FUlJfTk9URk9VTkQpIHsKKwkJdTMyIGxpb2Ruc1syXTsKKwkJY29uc3QgaW50ICpjaSA9IGZkdF9nZXRwcm9wKGJsb2IsIG9mZiwgImNlbGwtaW5kZXgiLCBOVUxMKTsKKwkJaW50IGosIGkgPSAqY2k7CisKKwkJZXJyID0gZmR0X3NldHByb3AoYmxvYiwgb2ZmLCAiY29tcGF0aWJsZSIsIGNvbXBhdCwgY29tcGF0X2xlbik7CisJCWlmIChlcnIgPCAwKQorCQkJZ290byBlcnI7CisKKwkJbGlvZG5zWzBdID0gcXBfaW5mb1tpXS5kbGlvZG47CisJCWxpb2Ruc1sxXSA9IHFwX2luZm9baV0uZmxpb2RuOworCisJCWVyciA9IGZkdF9zZXRwcm9wKGJsb2IsIG9mZiwgImZzbCxsaW9kbiIsCisJCQkJICAmbGlvZG5zLCBzaXplb2YodTMyKSAqIDIpOworCQlpZiAoZXJyIDwgMCkKKwkJCWdvdG8gZXJyOworCisJCWkrKzsKKworCQllcnIgPSBmZHRfcXBvcnRhbChibG9iLCBvZmYsIGksICJjcnlwdG9AMCIsIEZTTF9IV19QT1JUQUxfU0VDLAorCQkJCSAgSVNfRV9QUk9DRVNTT1IoZ2V0X3N2cigpKSk7CisJCWlmIChlcnIgPCAwKQorCQkJZ290byBlcnI7CisKKyNpZmRlZiBDT05GSUdfU1lTX0RQQUFfUE1FCisJCWVyciA9IGZkdF9xcG9ydGFsKGJsb2IsIG9mZiwgaSwgInBtZUAwIiwgRlNMX0hXX1BPUlRBTF9QTUUsIDEpOworCQlpZiAoZXJyIDwgMCkKKwkJCWdvdG8gZXJyOworI2Vsc2UKKwkJZmR0X3Fwb3J0YWwoYmxvYiwgb2ZmLCBpLCAicG1lQDAiLCBGU0xfSFdfUE9SVEFMX1BNRSwgMCk7CisjZW5kaWYKKyNpZmRlZiBDT05GSUdfU1lTX0RQQUFfRk1BTgorCQlmb3IgKGogPSAwOyBqIDwgQ09ORklHX1NZU19OVU1fRk1BTjsgaisrKSB7CisJCQljaGFyIG5hbWVbXSA9ICJmbWFuQDAiOworCisJCQluYW1lW3NpemVvZihuYW1lKSAtIDJdID0gJzAnICsgajsKKwkJCWVyciA9IGZkdF9xcG9ydGFsKGJsb2IsIG9mZiwgaSwgbmFtZSwKKwkJCQkJICBGU0xfSFdfUE9SVEFMX0ZNQU4xICsgaiwgMSk7CisJCQlpZiAoZXJyIDwgMCkKKwkJCQlnb3RvIGVycjsKKwkJfQorI2VuZGlmCisKK2VycjoKKwkJaWYgKGVyciA8IDApIHsKKwkJCXByaW50ZigiRVJST1I6IHVuYWJsZSB0byBjcmVhdGUgcHJvcHMgZm9yICVzOiAlc1xuIiwKKwkJCQlmZHRfZ2V0X25hbWUoYmxvYiwgb2ZmLCBOVUxMKSwgZmR0X3N0cmVycm9yKGVycikpOworCQkJcmV0dXJuOworCQl9CisKKwkJb2ZmID0gZmR0X25vZGVfb2Zmc2V0X2J5X2NvbXBhdGlibGUoYmxvYiwgb2ZmLCAiZnNsLHFtYW4tcG9ydGFsIik7CisJfQorfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3JlbGVhc2UuUyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9yZWxlYXNlLlMKaW5kZXggMGI1YjlkYS4uNTNjZWZhZiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4NXh4L3JlbGVhc2UuUworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvcmVsZWFzZS5TCkBAIC0xMzYsNiArMTM2LDEyIEBACiAJbXRzcHIJTDFDU1IyLHI4CiAjZW5kaWYKIAorI2lmIGRlZmluZWQoQ09ORklHX1NZU19QNDA4MF9FUlJBVFVNX0NQVTIyKQorCW1mc3ByCXI4LEwxQ1NSMgorCW9yaXMJcjgscjgsKEwxQ1NSMl9EQ1dTKUBoCisJbXRzcHIJTDFDU1IyLHI4CisjZW5kaWYKKwogI2lmZGVmIENPTkZJR19CQUNLU0lERV9MMl9DQUNIRQogCS8qIEVuYWJsZS9pbnZhbGlkYXRlIHRoZSBMMiBjYWNoZSAqLwogCW1zeW5jCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzg1eHgvc3RhcnQuUyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9zdGFydC5TCmluZGV4IGIzY2I1NmEuLjMyNzhiMTAgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9zdGFydC5TCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjODV4eC9zdGFydC5TCkBAIC0zMzAsOCArMzMwLDE4IEBACiAJbGlzICAgICByOCxGU0xfQk9PS0VfTUFTMihDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIsIDApQGgKIAlvcmkgICAgIHI4LHI4LEZTTF9CT09LRV9NQVMyKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiwgMClAbAogCisjaWYgZGVmaW5lZChDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZU19MT1cpICYmIFwKKyAgICBkZWZpbmVkKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTX0hJR0gpCisJbGlzICAgICByOSxGU0xfQk9PS0VfTUFTMyhDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZU19MT1csIDAsCisJCQkJKE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSKSlAaAorCW9yaSAgICAgcjkscjksRlNMX0JPT0tFX01BUzMoQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfTE9XLCAwLAorCQkJCShNQVMzX1NYfE1BUzNfU1d8TUFTM19TUikpQGwKKwlsaSAgICAgIHIxMCxDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZU19ISUdICisJbXRzcHIJTUFTNyxyMTAKKyNlbHNlCiAJbGlzICAgICByOSxGU0xfQk9PS0VfTUFTMyhDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIsIDAsIChNQVMzX1NYfE1BUzNfU1d8TUFTM19TUikpQGgKIAlvcmkgICAgIHI5LHI5LEZTTF9CT09LRV9NQVMzKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiwgMCwgKE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSKSlAbAorI2VuZGlmCiAKIAltdHNwciAgIE1BUzAscjYKIAltdHNwciAgIE1BUzEscjcKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4L3NwZWVkLmMgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eC9zcGVlZC5jCmluZGV4IGYzMDlmMjkuLjZlMTNlNWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4L3NwZWVkLmMKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHgvc3BlZWQuYwpAQCAtMjY2LDcgKzI2Niw3IEBACiAJbG9uZwkJICBjcHVjbGsgPSAwOwogCWxvbmcJCSAgc2Njcl9yZWc7CiAKLQlpZiAoZ2V0ZW52X3IgKCJjcHVjbGsiLCB0bXAsIHNpemVvZiAodG1wKSkgPiAwKQorCWlmIChnZXRlbnZfZigiY3B1Y2xrIiwgdG1wLCBzaXplb2YgKHRtcCkpID4gMCkKIAkJY3B1Y2xrID0gc2ltcGxlX3N0cnRvdWwgKHRtcCwgTlVMTCwgMTApICogMTAwMDAwMDsKIAogCWlmICgoQ09ORklHX1NZU184eHhfQ1BVQ0xLX01JTiA+IGNwdWNsaykgfHwgKENPTkZJR19TWVNfOHh4X0NQVUNMS19NQVggPCBjcHVjbGspKQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2NwdS5jIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2NwdS5jCmluZGV4IGRjM2RhMTYuLjk3YTk0ZjQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9jcHUuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvY3B1LmMKQEAgLTExMCw4ICsxMTAsMTQgQEAKIH0KIAogaW50IGNwdV9udW1jb3JlcygpIHsKLQlzdHJ1Y3QgY3B1X3R5cGUgKmNwdTsKLQljcHUgPSBnZC0+Y3B1OworCWNjc3JfcGljX3QgX19pb21lbSAqcGljID0gKHZvaWQgKilDT05GSUdfU1lTX01QQzg1eHhfUElDX0FERFI7CisJc3RydWN0IGNwdV90eXBlICpjcHUgPSBnZC0+Y3B1OworCisJLyogYmV0dGVyIHRvIHF1ZXJ5IGZlYXR1cmUgcmVwb3J0aW5nIHJlZ2lzdGVyIHRoYW4ganVzdCBhc3N1bWUgMSAqLworCWlmIChjcHUgPT0gJmNwdV90eXBlX3Vua25vd24pCisJCXJldHVybiAoKGluX2JlMzIoJnBpYy0+ZnJyKSAmIE1QQzg1eHhfUElDRlJSX05DUFVfTUFTSykgPj4KKwkJCU1QQzg1eHhfUElDRlJSX05DUFVfU0hJRlQpICsgMTsKKwogCXJldHVybiBjcHUtPm51bV9jb3JlczsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9jb21tb25fdGltaW5nX3BhcmFtcy5oIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9jb21tb25fdGltaW5nX3BhcmFtcy5oCmluZGV4IDVhZWE1MTcuLjA2NzA2ZWQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvY29tbW9uX3RpbWluZ19wYXJhbXMuaAorKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL2NvbW1vbl90aW1pbmdfcGFyYW1zLmgKQEAgLTQ4LDYgKzQ4LDkgQEAKIAogCXVuc2lnbmVkIGxvbmcgbG9uZyB0b3RhbF9tZW07CiAJdW5zaWduZWQgbG9uZyBsb25nIGJhc2VfYWRkcmVzczsKKworCS8qIEREUjMgUkRJTU0gKi8KKwl1bnNpZ25lZCBjaGFyIHJjd1sxNl07CS8qIFJlZ2lzdGVyIENvbnRyb2wgV29yZCAwLTE1ICovCiB9IGNvbW1vbl90aW1pbmdfcGFyYW1zX3Q7CiAKICNlbmRpZgpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9jdHJsX3JlZ3MuYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvY3RybF9yZWdzLmMKaW5kZXggNGEyODJiYy4uZGNjYjdhYSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9jdHJsX3JlZ3MuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL2N0cmxfcmVncy5jCkBAIC05Myw3ICs5Myw3IEBACiB9CiAKIC8qIENoaXAgU2VsZWN0IENvbmZpZ3VyYXRpb24gKENTbl9DT05GSUcpICovCi1zdGF0aWMgdm9pZCBzZXRfY3NuX2NvbmZpZyhpbnQgaSwgZnNsX2Rkcl9jZmdfcmVnc190ICpkZHIsCitzdGF0aWMgdm9pZCBzZXRfY3NuX2NvbmZpZyhpbnQgZGltbV9udW1iZXIsIGludCBpLCBmc2xfZGRyX2NmZ19yZWdzX3QgKmRkciwKIAkJCSAgICAgICBjb25zdCBtZW1jdGxfb3B0aW9uc190ICpwb3B0cywKIAkJCSAgICAgICBjb25zdCBkaW1tX3BhcmFtc190ICpkaW1tX3BhcmFtcykKIHsKQEAgLTEwNiwyOCArMTA2LDQ5IEBACiAJdW5zaWduZWQgaW50IGJhX2JpdHNfY3NfbiA9IDA7IC8qIE51bSBvZiBiYW5rIGJpdHMgZm9yIFNEUkFNIG9uIENTbiAqLwogCXVuc2lnbmVkIGludCByb3dfYml0c19jc19uID0gMDsgLyogTnVtIG9mIHJvdyBiaXRzIGZvciBTRFJBTSBvbiBDU24gKi8KIAl1bnNpZ25lZCBpbnQgY29sX2JpdHNfY3NfbiA9IDA7IC8qIE51bSBvZiBvY2wgYml0cyBmb3IgU0RSQU0gb24gQ1NuICovCisJaW50IGdvX2NvbmZpZyA9IDA7CiAKIAkvKiBDb21wdXRlIENTX0NPTkZJRyBvbmx5IGZvciBleGlzdGluZyByYW5rcyBvZiBlYWNoIERJTU0uICAqLwotCWlmICgoKChpJjEpID09IDApCi0JICAgICYmIChkaW1tX3BhcmFtc1tpLzJdLm5fcmFua3MgPT0gMSkpCi0JICAgIHx8IChkaW1tX3BhcmFtc1tpLzJdLm5fcmFua3MgPT0gMikpIHsKLQkJdW5zaWduZWQgaW50IG5fYmFua3NfcGVyX3NkcmFtX2RldmljZTsKLQkJY3Nfbl9lbiA9IDE7Ci0JCWlmIChpID09IDApIHsKKwlzd2l0Y2ggKGkpIHsKKwljYXNlIDA6CisJCWlmIChkaW1tX3BhcmFtc1tkaW1tX251bWJlcl0ubl9yYW5rcyA+IDApIHsKKwkJCWdvX2NvbmZpZyA9IDE7CiAJCQkvKiBUaGVzZSBmaWVsZHMgb25seSBhdmFpbGFibGUgaW4gQ1MwX0NPTkZJRyAqLwogCQkJaW50bHZfZW4gPSBwb3B0cy0+bWVtY3RsX2ludGVybGVhdmluZzsKIAkJCWludGx2X2N0bCA9IHBvcHRzLT5tZW1jdGxfaW50ZXJsZWF2aW5nX21vZGU7CiAJCX0KKwkJYnJlYWs7CisJY2FzZSAxOgorCQlpZiAoKGRpbW1fbnVtYmVyID09IDAgJiYgZGltbV9wYXJhbXNbMF0ubl9yYW5rcyA+IDEpIHx8IFwKKwkJICAgIChkaW1tX251bWJlciA9PSAxICYmIGRpbW1fcGFyYW1zWzFdLm5fcmFua3MgPiAwKSkKKwkJCWdvX2NvbmZpZyA9IDE7CisJCWJyZWFrOworCWNhc2UgMjoKKwkJaWYgKChkaW1tX251bWJlciA9PSAwICYmIGRpbW1fcGFyYW1zWzBdLm5fcmFua3MgPiAyKSB8fCBcCisJCSAgIChkaW1tX251bWJlciA+IDEgJiYgZGltbV9wYXJhbXNbZGltbV9udW1iZXJdLm5fcmFua3MgPiAwKSkKKwkJCWdvX2NvbmZpZyA9IDE7CisJCWJyZWFrOworCWNhc2UgMzoKKwkJaWYgKChkaW1tX251bWJlciA9PSAwICYmIGRpbW1fcGFyYW1zWzBdLm5fcmFua3MgPiAzKSB8fCBcCisJCSAgICAoZGltbV9udW1iZXIgPT0gMSAmJiBkaW1tX3BhcmFtc1sxXS5uX3JhbmtzID4gMSkgfHwgXAorCQkgICAgKGRpbW1fbnVtYmVyID09IDMgJiYgZGltbV9wYXJhbXNbM10ubl9yYW5rcyA+IDApKQorCQkJZ29fY29uZmlnID0gMTsKKwkJYnJlYWs7CisJZGVmYXVsdDoKKwkJYnJlYWs7CisJfQorCWlmIChnb19jb25maWcpIHsKKwkJdW5zaWduZWQgaW50IG5fYmFua3NfcGVyX3NkcmFtX2RldmljZTsKKwkJY3Nfbl9lbiA9IDE7CiAJCWFwX25fZW4gPSBwb3B0cy0+Y3NfbG9jYWxfb3B0c1tpXS5hdXRvX3ByZWNoYXJnZTsKIAkJb2R0X3JkX2NmZyA9IHBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF9yZF9jZmc7CiAJCW9kdF93cl9jZmcgPSBwb3B0cy0+Y3NfbG9jYWxfb3B0c1tpXS5vZHRfd3JfY2ZnOwogCQluX2JhbmtzX3Blcl9zZHJhbV9kZXZpY2UKLQkJCT0gZGltbV9wYXJhbXNbaS8yXS5uX2JhbmtzX3Blcl9zZHJhbV9kZXZpY2U7CisJCQk9IGRpbW1fcGFyYW1zW2RpbW1fbnVtYmVyXS5uX2JhbmtzX3Blcl9zZHJhbV9kZXZpY2U7CiAJCWJhX2JpdHNfY3NfbiA9IF9faWxvZzIobl9iYW5rc19wZXJfc2RyYW1fZGV2aWNlKSAtIDI7Ci0JCXJvd19iaXRzX2NzX24gPSBkaW1tX3BhcmFtc1tpLzJdLm5fcm93X2FkZHIgLSAxMjsKLQkJY29sX2JpdHNfY3NfbiA9IGRpbW1fcGFyYW1zW2kvMl0ubl9jb2xfYWRkciAtIDg7CisJCXJvd19iaXRzX2NzX24gPSBkaW1tX3BhcmFtc1tkaW1tX251bWJlcl0ubl9yb3dfYWRkciAtIDEyOworCQljb2xfYml0c19jc19uID0gZGltbV9wYXJhbXNbZGltbV9udW1iZXJdLm5fY29sX2FkZHIgLSA4OwogCX0KLQogCWRkci0+Y3NbaV0uY29uZmlnID0gKDAKIAkJfCAoKGNzX25fZW4gJiAweDEpIDw8IDMxKQogCQl8ICgoaW50bHZfZW4gJiAweDMpIDw8IDI5KQpAQCAtMTc4LDcgKzE5OSw3IEBACiAJdW5zaWduZWQgY2hhciBhY3RfcGRfZXhpdF9tY2xrOwogCS8qIFByZWNoYXJnZSBwb3dlcmRvd24gZXhpdCB0aW1pbmcgKHRYUCkuICovCiAJdW5zaWduZWQgY2hhciBwcmVfcGRfZXhpdF9tY2xrOwotCS8qIFByZWNoYXJnZSBwb3dlcmRvd24gZXhpdCB0aW1pbmcgKHRBWFBEKS4gKi8KKwkvKiBPRFQgcG93ZXJkb3duIGV4aXQgdGltaW5nICh0QVhQRCkuICovCiAJdW5zaWduZWQgY2hhciB0YXhwZF9tY2xrOwogCS8qIE1vZGUgcmVnaXN0ZXIgc2V0IGN5Y2xlIHRpbWUgKHRNUkQpLiAqLwogCXVuc2lnbmVkIGNoYXIgdG1yZF9tY2xrOwpAQCAtMTkwLDEzICsyMTEsMTMgQEAKIAkgKiB3ZSB1c2UgdGhlIHRYUCBpbnN0ZWFkIG9mIGl0LgogCSAqIHRYUD1tYXgoM25DSywgNy41bnMpIGZvciBERFIzLgogCSAqIHNwZWMgaGFzIG5vdCB0aGUgdEFYUEQsIHdlIHVzZQotCSAqIHRBWFBEPTgsIG5lZWQgZGVzaWduIHRvIGNvbmZpcm0uCisJICogdEFYUEQ9MSwgbmVlZCBkZXNpZ24gdG8gY29uZmlybS4KIAkgKi8KIAlpbnQgdFhQID0gbWF4KChnZXRfbWVtb3J5X2Nsa19wZXJpb2RfcHMoKSAqIDMpLCA3NTAwKTsgLyogdW5pdD1wcyAqLwogCWFjdF9wZF9leGl0X21jbGsgPSBwaWNvc190b19tY2xrKHRYUCk7CiAJLyogTW9kZSByZWdpc3RlciBNUjBbQTEyXSBpcyAnMScgLSBmYXN0IGV4aXQgKi8KIAlwcmVfcGRfZXhpdF9tY2xrID0gYWN0X3BkX2V4aXRfbWNsazsKLQl0YXhwZF9tY2xrID0gODsKKwl0YXhwZF9tY2xrID0gMTsKIAl0bXJkX21jbGsgPSA0OwogCS8qIHNldCB0aGUgdHVybmFyb3VuZCB0aW1lICovCiAJdHJ3dF9tY2xrID0gMTsKQEAgLTQyNyw2ICs0NDgsMzUgQEAKIAlkZWJ1ZygiRlNMRERSOiB0aW1pbmdfY2ZnXzIgPSAweCUwOHhcbiIsIGRkci0+dGltaW5nX2NmZ18yKTsKIH0KIAorLyogRERSIFNEUkFNIFJlZ2lzdGVyIENvbnRyb2wgV29yZCAqLworc3RhdGljIHZvaWQgc2V0X2Rkcl9zZHJhbV9yY3coZnNsX2Rkcl9jZmdfcmVnc190ICpkZHIsCisJCQkgICAgICAgY29uc3QgY29tbW9uX3RpbWluZ19wYXJhbXNfdCAqY29tbW9uX2RpbW0pCit7CisJaWYgKGNvbW1vbl9kaW1tLT5hbGxfRElNTXNfcmVnaXN0ZXJlZAorCQkmJiAhY29tbW9uX2RpbW0tPmFsbF9ESU1Nc191bmJ1ZmZlcmVkKSB7CisJCWRkci0+ZGRyX3NkcmFtX3Jjd18xID0KKwkJCWNvbW1vbl9kaW1tLT5yY3dbMF0gPDwgMjggfCBcCisJCQljb21tb25fZGltbS0+cmN3WzFdIDw8IDI0IHwgXAorCQkJY29tbW9uX2RpbW0tPnJjd1syXSA8PCAyMCB8IFwKKwkJCWNvbW1vbl9kaW1tLT5yY3dbM10gPDwgMTYgfCBcCisJCQljb21tb25fZGltbS0+cmN3WzRdIDw8IDEyIHwgXAorCQkJY29tbW9uX2RpbW0tPnJjd1s1XSA8PCA4IHwgXAorCQkJY29tbW9uX2RpbW0tPnJjd1s2XSA8PCA0IHwgXAorCQkJY29tbW9uX2RpbW0tPnJjd1s3XTsKKwkJZGRyLT5kZHJfc2RyYW1fcmN3XzIgPQorCQkJY29tbW9uX2RpbW0tPnJjd1s4XSA8PCAyOCB8IFwKKwkJCWNvbW1vbl9kaW1tLT5yY3dbOV0gPDwgMjQgfCBcCisJCQljb21tb25fZGltbS0+cmN3WzEwXSA8PCAyMCB8IFwKKwkJCWNvbW1vbl9kaW1tLT5yY3dbMTFdIDw8IDE2IHwgXAorCQkJY29tbW9uX2RpbW0tPnJjd1sxMl0gPDwgMTIgfCBcCisJCQljb21tb25fZGltbS0+cmN3WzEzXSA8PCA4IHwgXAorCQkJY29tbW9uX2RpbW0tPnJjd1sxNF0gPDwgNCB8IFwKKwkJCWNvbW1vbl9kaW1tLT5yY3dbMTVdOworCQlkZWJ1ZygiRlNMRERSOiBkZHJfc2RyYW1fcmN3XzEgPSAweCUwOHhcbiIsIGRkci0+ZGRyX3NkcmFtX3Jjd18xKTsKKwkJZGVidWcoIkZTTEREUjogZGRyX3NkcmFtX3Jjd18yID0gMHglMDh4XG4iLCBkZHItPmRkcl9zZHJhbV9yY3dfMik7CisJfQorfQorCiAvKiBERFIgU0RSQU0gY29udHJvbCBjb25maWd1cmF0aW9uIChERFJfU0RSQU1fQ0ZHKSAqLwogc3RhdGljIHZvaWQgc2V0X2Rkcl9zZHJhbV9jZmcoZnNsX2Rkcl9jZmdfcmVnc190ICpkZHIsCiAJCQkgICAgICAgY29uc3QgbWVtY3RsX29wdGlvbnNfdCAqcG9wdHMsCkBAIC01MjEsNiArNTcxLDcgQEAKIAl1bnNpZ25lZCBpbnQgZF9pbml0OwkJLyogRFJBTSBkYXRhIGluaXRpYWxpemF0aW9uICovCiAJdW5zaWduZWQgaW50IHJjd19lbiA9IDA7CS8qIFJlZ2lzdGVyIENvbnRyb2wgV29yZCBFbmFibGUgKi8KIAl1bnNpZ25lZCBpbnQgbWRfZW4gPSAwOwkJLyogTWlycm9yZWQgRElNTSBFbmFibGUgKi8KKwl1bnNpZ25lZCBpbnQgcWRfZW4gPSAwOwkJLyogcXVhZC1yYW5rIERJTU0gRW5hYmxlICovCiAKIAlkbGxfcnN0X2RpcyA9IDE7CS8qIE1ha2UgdGhpcyBjb25maWd1cmFibGUgKi8KIAlkcXNfY2ZnID0gcG9wdHMtPkRRU19jb25maWc7CkBAIC01NjIsNiArNjEzLDcgQEAKICNpZiBkZWZpbmVkKENPTkZJR19GU0xfRERSMykKIAltZF9lbiA9IHBvcHRzLT5taXJyb3JlZF9kaW1tOwogI2VuZGlmCisJcWRfZW4gPSBwb3B0cy0+cXVhZF9yYW5rX3ByZXNlbnQgPyAxIDogMDsKIAlkZHItPmRkcl9zZHJhbV9jZmdfMiA9ICgwCiAJCXwgKChmcmNfc3IgJiAweDEpIDw8IDMxKQogCQl8ICgoc3JfaWUgJiAweDEpIDw8IDMwKQpAQCAtNTY5LDYgKzYyMSw3IEBACiAJCXwgKChkcXNfY2ZnICYgMHgzKSA8PCAyNikKIAkJfCAoKG9kdF9jZmcgJiAweDMpIDw8IDIxKQogCQl8ICgobnVtX3ByICYgMHhmKSA8PCAxMikKKwkJfCAocWRfZW4gPDwgOSkKIAkJfCAoKG9iY19jZmcgJiAweDEpIDw8IDYpCiAJCXwgKChhcF9lbiAmIDB4MSkgPDwgNSkKIAkJfCAoKGRfaW5pdCAmIDB4MSkgPDwgNCkKQEAgLTkxNCw2ICs5NjcsNyBAQAogCiAJY2xrX2FkanVzdCA9IHBvcHRzLT5jbGtfYWRqdXN0OwogCWRkci0+ZGRyX3NkcmFtX2Nsa19jbnRsID0gKGNsa19hZGp1c3QgJiAweEYpIDw8IDIzOworCWRlYnVnKCJGU0xERFI6IGNsa19jbnRsID0gMHglMDh4XG4iLCBkZHItPmRkcl9zZHJhbV9jbGtfY250bCk7CiB9CiAKIC8qIEREUiBJbml0aWFsaXphdGlvbiBBZGRyZXNzIChERFJfSU5JVF9BRERSKSAqLwpAQCAtOTc3LDkgKzEwMzEsOSBAQAogCXVuc2lnbmVkIGludCB3b2R0X29mZiA9IDA7CS8qIFdyaXRlIHRvIE9EVCBvZmYgKi8KIAogI2lmIGRlZmluZWQoQ09ORklHX0ZTTF9ERFIzKQotCXJvZHRfb24gPSAzOwkvKiAgMiBjbG9ja3MgKi8KKwlyb2R0X29uID0gMjsJLyogIDIgY2xvY2tzICovCiAJcm9kdF9vZmYgPSA0OwkvKiAgNCBjbG9ja3MgKi8KLQl3b2R0X29uID0gMjsJLyogIDEgY2xvY2tzICovCisJd29kdF9vbiA9IDE7CS8qICAxIGNsb2NrcyAqLwogCXdvZHRfb2ZmID0gNDsJLyogIDQgY2xvY2tzICovCiAjZW5kaWYKIApAQCAtMTA1Miw5ICsxMTA2LDkgQEAKIAkJLyoKIAkJICogV3JpdGUgbGV2ZWxpbmcgcmVwZXRpdGlvbiB0aW1lCiAJCSAqIGF0IGxlYXN0IHRXTE8gKyA2IGNsb2NrcyBjbG9ja3MKLQkJICogd2Ugc2V0IGl0IDMyCisJCSAqIHdlIHNldCBpdCA2NAogCQkgKi8KLQkJd3Jsdmxfd2xyID0gMHg1OworCQl3cmx2bF93bHIgPSAweDY7CiAJCS8qCiAJCSAqIFdyaXRlIGxldmVsaW5nIHN0YXJ0IHRpbWUKIAkJICogVGhlIHZhbHVlIHVzZSBmb3IgdGhlIERRU19BREpVU1QgZm9yIHRoZSBmaXJzdCBzYW1wbGUKQEAgLTEwODksNTIgKzExNDMsMTIgQEAKIAlkZHItPmRkcl9zcl9jbnRyID0gKHNyX2l0ICYgMHhGKSA8PCAxNjsKIH0KIAotLyogRERSIFNEUkFNIFJlZ2lzdGVyIENvbnRyb2wgV29yZCAxIChERFJfU0RSQU1fUkNXXzEpICovCi1zdGF0aWMgdm9pZCBzZXRfZGRyX3NkcmFtX3Jjd18xKGZzbF9kZHJfY2ZnX3JlZ3NfdCAqZGRyKQorc3RhdGljIHZvaWQgc2V0X2Rkcl9lb3IoZnNsX2Rkcl9jZmdfcmVnc190ICpkZHIsIGNvbnN0IG1lbWN0bF9vcHRpb25zX3QgKnBvcHRzKQogewotCXVuc2lnbmVkIGludCByY3cwID0gMDsJLyogUkNXMDogUmVnaXN0ZXIgQ29udHJvbCBXb3JkIDAgKi8KLQl1bnNpZ25lZCBpbnQgcmN3MSA9IDA7CS8qIFJDVzE6IFJlZ2lzdGVyIENvbnRyb2wgV29yZCAxICovCi0JdW5zaWduZWQgaW50IHJjdzIgPSAwOwkvKiBSQ1cyOiBSZWdpc3RlciBDb250cm9sIFdvcmQgMiAqLwotCXVuc2lnbmVkIGludCByY3czID0gMDsJLyogUkNXMzogUmVnaXN0ZXIgQ29udHJvbCBXb3JkIDMgKi8KLQl1bnNpZ25lZCBpbnQgcmN3NCA9IDA7CS8qIFJDVzQ6IFJlZ2lzdGVyIENvbnRyb2wgV29yZCA0ICovCi0JdW5zaWduZWQgaW50IHJjdzUgPSAwOwkvKiBSQ1c1OiBSZWdpc3RlciBDb250cm9sIFdvcmQgNSAqLwotCXVuc2lnbmVkIGludCByY3c2ID0gMDsJLyogUkNXNjogUmVnaXN0ZXIgQ29udHJvbCBXb3JkIDYgKi8KLQl1bnNpZ25lZCBpbnQgcmN3NyA9IDA7CS8qIFJDVzc6IFJlZ2lzdGVyIENvbnRyb2wgV29yZCA3ICovCi0KLQlkZHItPmRkcl9zZHJhbV9yY3dfMSA9ICgwCi0JCQkJfCAoKHJjdzAgJiAweEYpIDw8IDI4KQotCQkJCXwgKChyY3cxICYgMHhGKSA8PCAyNCkKLQkJCQl8ICgocmN3MiAmIDB4RikgPDwgMjApCi0JCQkJfCAoKHJjdzMgJiAweEYpIDw8IDE2KQotCQkJCXwgKChyY3c0ICYgMHhGKSA8PCAxMikKLQkJCQl8ICgocmN3NSAmIDB4RikgPDwgOCkKLQkJCQl8ICgocmN3NiAmIDB4RikgPDwgNCkKLQkJCQl8ICgocmN3NyAmIDB4RikgPDwgMCkKLQkJCQkpOwotfQotCi0vKiBERFIgU0RSQU0gUmVnaXN0ZXIgQ29udHJvbCBXb3JkIDIgKEREUl9TRFJBTV9SQ1dfMikgKi8KLXN0YXRpYyB2b2lkIHNldF9kZHJfc2RyYW1fcmN3XzIoZnNsX2Rkcl9jZmdfcmVnc190ICpkZHIpCi17Ci0JdW5zaWduZWQgaW50IHJjdzggPSAwOwkvKiBSQ1cwOiBSZWdpc3RlciBDb250cm9sIFdvcmQgOCAqLwotCXVuc2lnbmVkIGludCByY3c5ID0gMDsJLyogUkNXMTogUmVnaXN0ZXIgQ29udHJvbCBXb3JkIDkgKi8KLQl1bnNpZ25lZCBpbnQgcmN3MTAgPSAwOwkvKiBSQ1cyOiBSZWdpc3RlciBDb250cm9sIFdvcmQgMTAgKi8KLQl1bnNpZ25lZCBpbnQgcmN3MTEgPSAwOwkvKiBSQ1czOiBSZWdpc3RlciBDb250cm9sIFdvcmQgMTEgKi8KLQl1bnNpZ25lZCBpbnQgcmN3MTIgPSAwOwkvKiBSQ1c0OiBSZWdpc3RlciBDb250cm9sIFdvcmQgMTIgKi8KLQl1bnNpZ25lZCBpbnQgcmN3MTMgPSAwOwkvKiBSQ1c1OiBSZWdpc3RlciBDb250cm9sIFdvcmQgMTMgKi8KLQl1bnNpZ25lZCBpbnQgcmN3MTQgPSAwOwkvKiBSQ1c2OiBSZWdpc3RlciBDb250cm9sIFdvcmQgMTQgKi8KLQl1bnNpZ25lZCBpbnQgcmN3MTUgPSAwOwkvKiBSQ1c3OiBSZWdpc3RlciBDb250cm9sIFdvcmQgMTUgKi8KLQotCWRkci0+ZGRyX3NkcmFtX3Jjd18yID0gKDAKLQkJCQl8ICgocmN3OCAmIDB4RikgPDwgMjgpCi0JCQkJfCAoKHJjdzkgJiAweEYpIDw8IDI0KQotCQkJCXwgKChyY3cxMCAmIDB4RikgPDwgMjApCi0JCQkJfCAoKHJjdzExICYgMHhGKSA8PCAxNikKLQkJCQl8ICgocmN3MTIgJiAweEYpIDw8IDEyKQotCQkJCXwgKChyY3cxMyAmIDB4RikgPDwgOCkKLQkJCQl8ICgocmN3MTQgJiAweEYpIDw8IDQpCi0JCQkJfCAoKHJjdzE1ICYgMHhGKSA8PCAwKQotCQkJCSk7CisJaWYgKHBvcHRzLT5hZGRyX2hhc2gpIHsKKwkJZGRyLT5kZHJfZW9yID0gMHg0MDAwMDAwMDsJLyogYWRkcmVzcyBoYXNoIGVuYWJsZSAqLworCQlwdXRzKCJBZGRlc3MgaGFzaGluZyBlbmFibGVkLlxuIik7CisJfQogfQogCiB1bnNpZ25lZCBpbnQKQEAgLTEyMDEsMzcgKzEyMTUsNjMgQEAKIAkvKiBDaGlwIFNlbGVjdCBNZW1vcnkgQm91bmRzIChDU25fQk5EUykgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX0NISVBfU0VMRUNUU19QRVJfQ1RSTDsgaSsrKSB7CiAJCXVuc2lnbmVkIGxvbmcgbG9uZyBlYSA9IDAsIHNhID0gMDsKKwkJdW5zaWduZWQgaW50IGNzX3Blcl9kaW1tCisJCQk9IENPTkZJR19DSElQX1NFTEVDVFNfUEVSX0NUUkwgLyBDT05GSUdfRElNTV9TTE9UU19QRVJfQ1RMUjsKKwkJdW5zaWduZWQgaW50IGRpbW1fbnVtYmVyCisJCQk9IGkgLyBjc19wZXJfZGltbTsKKwkJdW5zaWduZWQgbG9uZyBsb25nIHJhbmtfZGVuc2l0eQorCQkJPSBkaW1tX3BhcmFtc1tkaW1tX251bWJlcl0ucmFua19kZW5zaXR5OwogCi0JCWlmIChwb3B0cy0+YmFfaW50bHZfY3RsICYmIChpID4gMCkgJiYKLQkJCSgocG9wdHMtPmJhX2ludGx2X2N0bCAmIDB4NjApICE9IEZTTF9ERFJfQ1MyX0NTMyApKSB7Ci0JCQkvKiBEb24ndCBzZXQgdXAgYm91bmRhcmllcyBmb3Igb3RoZXIgQ1MKLQkJCSAqIG90aGVyIHRoYW4gQ1MwLCBpZiBiYW5rIGludGVybGVhdmluZwotCQkJICogaXMgZW5hYmxlZCBhbmQgbm90IENTMitDUzMgaW50ZXJsZWF2ZWQuCisJCWlmICgoKGkgPT0gMSkgJiYgKHBvcHRzLT5iYV9pbnRsdl9jdGwgJiBGU0xfRERSX0NTMF9DUzEpKSB8fAorCQkJKChpID09IDIpICYmIChwb3B0cy0+YmFfaW50bHZfY3RsICYgMHgwNCkpIHx8CisJCQkoKGkgPT0gMykgJiYgKHBvcHRzLT5iYV9pbnRsdl9jdGwgJiBGU0xfRERSX0NTMl9DUzMpKSkgeworCQkJLyoKKwkJCSAqIERvbid0IHNldCB1cCBib3VuZGFyaWVzIGZvciB1bnVzZWQgQ1MKKwkJCSAqIGNzMSBmb3IgY3MwX2NzMSwgY3MwX2NzMV9hbmRfY3MyX2NzMywgY3MwX2NzMV9jczJfY3MzCisJCQkgKiBjczIgZm9yIGNzMF9jczFfY3MyX2NzMworCQkJICogY3MzIGZvciBjczJfY3MzLCBjczBfY3MxX2FuZF9jczJfY3MzLCBjczBfY3MxX2NzMl9jczMKIAkJCSAqIEJ1dCB3ZSBuZWVkIHRvIHNldCB0aGUgT0RUX1JEX0NGRyBhbmQKIAkJCSAqIE9EVF9XUl9DRkcgZm9yIENTMV9DT05GSUcgaGVyZS4KIAkJCSAqLwotCQkJc2V0X2Nzbl9jb25maWcoaSwgZGRyLCBwb3B0cywgZGltbV9wYXJhbXMpOwotCQkJYnJlYWs7CisJCQlzZXRfY3NuX2NvbmZpZyhkaW1tX251bWJlciwgaSwgZGRyLCBwb3B0cywgZGltbV9wYXJhbXMpOworCQkJY29udGludWU7CiAJCX0KLQotCQlpZiAoZGltbV9wYXJhbXNbaS8yXS5uX3JhbmtzID09IDApIHsKKwkJaWYgKGRpbW1fcGFyYW1zW2RpbW1fbnVtYmVyXS5uX3JhbmtzID09IDApIHsKIAkJCWRlYnVnKCJTa2lwcGluZyBzZXR1cCBvZiBDUyV1ICIKLQkJCQkiYmVjYXVzZSBuX3JhbmtzIG9uIERJTU0gJXUgaXMgMFxuIiwgaSwgaS8yKTsKKwkJCQkiYmVjYXVzZSBuX3JhbmtzIG9uIERJTU0gJXUgaXMgMFxuIiwgaSwgZGltbV9udW1iZXIpOwogCQkJY29udGludWU7CiAJCX0KIAkJaWYgKHBvcHRzLT5tZW1jdGxfaW50ZXJsZWF2aW5nICYmIHBvcHRzLT5iYV9pbnRsdl9jdGwpIHsKIAkJCS8qCiAJCQkgKiBUaGlzIHdvcmtzIHN1cGVyYmFuayAyQ1MKLQkJCSAqIFRoZXJlIGFyZSAyIG1lbW9yeSBjb250cm9sbGVycyBjb25maWd1cmVkCisJCQkgKiBUaGVyZSBhcmUgMiBvciBtb3JlIG1lbW9yeSBjb250cm9sbGVycyBjb25maWd1cmVkCiAJCQkgKiBpZGVudGljYWxseSwgbWVtb3J5IGlzIGludGVybGVhdmVkIGJldHdlZW4gdGhlbSwKIAkJCSAqIGFuZCBlYWNoIGNvbnRyb2xsZXIgdXNlcyByYW5rIGludGVybGVhdmluZyB3aXRoaW4KIAkJCSAqIGl0c2VsZi4gVGhlcmVmb3JlIHRoZSBzdGFydGluZyBhbmQgZW5kaW5nIGFkZHJlc3MKIAkJCSAqIG9uIGVhY2ggY29udHJvbGxlciBpcyB0d2ljZSB0aGUgYW1vdW50IHByZXNlbnQgb24KIAkJCSAqIGVhY2ggY29udHJvbGxlci4KIAkJCSAqLwotCQkJdW5zaWduZWQgbG9uZyBsb25nIHJhbmtfZGVuc2l0eQotCQkJCQk9IGRpbW1fcGFyYW1zWzBdLmNhcGFjaXR5OwotCQkJZWEgPSAoMiAqIChyYW5rX2RlbnNpdHkgPj4gZGJ3X2NhcF9hZGopKSAtIDE7CisJCQl1bnNpZ25lZCBsb25nIGxvbmcgY3Rscl9kZW5zaXR5ID0gMDsKKwkJCXN3aXRjaCAocG9wdHMtPmJhX2ludGx2X2N0bCAmIEZTTF9ERFJfQ1MwX0NTMV9DUzJfQ1MzKSB7CisJCQljYXNlIEZTTF9ERFJfQ1MwX0NTMToKKwkJCWNhc2UgRlNMX0REUl9DUzBfQ1MxX0FORF9DUzJfQ1MzOgorCQkJCWN0bHJfZGVuc2l0eSA9IGRpbW1fcGFyYW1zWzBdLnJhbmtfZGVuc2l0eSAqIDI7CisJCQkJYnJlYWs7CisJCQljYXNlIEZTTF9ERFJfQ1MyX0NTMzoKKwkJCQljdGxyX2RlbnNpdHkgPSBkaW1tX3BhcmFtc1swXS5yYW5rX2RlbnNpdHk7CisJCQkJYnJlYWs7CisJCQljYXNlIEZTTF9ERFJfQ1MwX0NTMV9DUzJfQ1MzOgorCQkJCS8qCisJCQkJICogVGhlIGZvdXIgQ1MgaW50ZXJsZWF2aW5nIHNob3VsZCBoYXZlIGJlZW4gdmVyaWZpZWQgYnkKKwkJCQkgKiBwb3B1bGF0ZV9tZW1jdGxfb3B0aW9ucygpCisJCQkJICovCisJCQkJY3Rscl9kZW5zaXR5ID0gZGltbV9wYXJhbXNbMF0ucmFua19kZW5zaXR5ICogNDsKKwkJCQlicmVhazsKKwkJCWRlZmF1bHQ6CisJCQkJYnJlYWs7CisJCQl9CisJCQllYSA9IChDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUyAqCisJCQkJKGN0bHJfZGVuc2l0eSA+PiBkYndfY2FwX2FkaikpIC0gMTsKIAkJfQogCQllbHNlIGlmICghcG9wdHMtPm1lbWN0bF9pbnRlcmxlYXZpbmcgJiYgcG9wdHMtPmJhX2ludGx2X2N0bCkgewogCQkJLyoKQEAgLTEyNDMsOCArMTI4Myw2IEBACiAJCQkgKiBjb250cm9sbGVyIG5lZWRzIHRvIGJlIHByb2dyYW1tZWQgaW50byBpdHMKIAkJCSAqIHJlc3BlY3RpdmUgQ1MwX0JORFMuCiAJCQkgKi8KLQkJCXVuc2lnbmVkIGxvbmcgbG9uZyByYW5rX2RlbnNpdHkKLQkJCQkJCT0gZGltbV9wYXJhbXNbaS8yXS5yYW5rX2RlbnNpdHk7CiAJCQlzd2l0Y2ggKHBvcHRzLT5iYV9pbnRsdl9jdGwgJiBGU0xfRERSX0NTMF9DUzFfQ1MyX0NTMykgewogCQkJY2FzZSBGU0xfRERSX0NTMF9DUzFfQ1MyX0NTMzoKIAkJCQkvKiBDUzArQ1MxK0NTMitDUzMgaW50ZXJsZWF2aW5nLCBvbmx5IENTMF9DTkRTCkBAIC0xMjU3LDkgKzEyOTUsMTMgQEAKIAkJCQkvKiBDUzArQ1MxIGFuZCBDUzIrQ1MzIGludGVybGVhdmluZywgQ1MwX0NORFMKIAkJCQkgKiBhbmQgQ1MyX0NORFMgbmVlZCB0byBiZSBzZXQuCiAJCQkJICovCi0JCQkJaWYgKCEoaSYxKSkgewotCQkJCQlzYSA9IGRpbW1fcGFyYW1zW2kvMl0uYmFzZV9hZGRyZXNzOwotCQkJCQllYSA9IHNhICsgKGkgKiAocmFua19kZW5zaXR5ID4+CisJCQkJaWYgKChpID09IDIpICYmIChkaW1tX251bWJlciA9PSAwKSkgeworCQkJCQlzYSA9IGRpbW1fcGFyYW1zW2RpbW1fbnVtYmVyXS5iYXNlX2FkZHJlc3MgKworCQkJCQkgICAgICAyICogKHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2Fkaik7CisJCQkJCWVhID0gc2EgKyAyICogKHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2FkaikgLSAxOworCQkJCX0gZWxzZSB7CisJCQkJCXNhID0gZGltbV9wYXJhbXNbZGltbV9udW1iZXJdLmJhc2VfYWRkcmVzczsKKwkJCQkJZWEgPSBzYSArICgyICogKHJhbmtfZGVuc2l0eSA+PgogCQkJCQkJZGJ3X2NhcF9hZGopKSAtIDE7CiAJCQkJfQogCQkJCWJyZWFrOwpAQCAtMTI2NywxNiArMTMwOSwzMSBAQAogCQkJCS8qIENTMCtDUzEgaW50ZXJsZWF2aW5nLCBDUzBfQ05EUyBuZWVkcwogCQkJCSAqIHRvIGJlIHNldAogCQkJCSAqLwotCQkJCXNhID0gY29tbW9uX2RpbW0tPmJhc2VfYWRkcmVzczsKLQkJCQllYSA9IHNhICsgKDIgKiAocmFua19kZW5zaXR5ID4+IGRid19jYXBfYWRqKSktMTsKKwkJCQlpZiAoZGltbV9wYXJhbXNbZGltbV9udW1iZXJdLm5fcmFua3MgPiAoaSAlIGNzX3Blcl9kaW1tKSkgeworCQkJCQlzYSA9IGRpbW1fcGFyYW1zW2RpbW1fbnVtYmVyXS5iYXNlX2FkZHJlc3M7CisJCQkJCWVhID0gc2EgKyAocmFua19kZW5zaXR5ID4+IGRid19jYXBfYWRqKSAtIDE7CisJCQkJCXNhICs9IChpICUgY3NfcGVyX2RpbW0pICogKHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2Fkaik7CisJCQkJCWVhICs9IChpICUgY3NfcGVyX2RpbW0pICogKHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2Fkaik7CisJCQkJfSBlbHNlIHsKKwkJCQkJc2EgPSAwOworCQkJCQllYSA9IDA7CisJCQkJfQorCQkJCWlmIChpID09IDApCisJCQkJCWVhICs9IChyYW5rX2RlbnNpdHkgPj4gZGJ3X2NhcF9hZGopOwogCQkJCWJyZWFrOwogCQkJY2FzZSBGU0xfRERSX0NTMl9DUzM6CiAJCQkJLyogQ1MyK0NTMyBpbnRlcmxlYXZpbmcqLwotCQkJCWlmIChpID09IDIpIHsKLQkJCQkJc2EgPSBkaW1tX3BhcmFtc1tpLzJdLmJhc2VfYWRkcmVzczsKLQkJCQkJZWEgPSBzYSArICgyICogKHJhbmtfZGVuc2l0eSA+PgotCQkJCQkJZGJ3X2NhcF9hZGopKSAtIDE7CisJCQkJaWYgKGRpbW1fcGFyYW1zW2RpbW1fbnVtYmVyXS5uX3JhbmtzID4gKGkgJSBjc19wZXJfZGltbSkpIHsKKwkJCQkJc2EgPSBkaW1tX3BhcmFtc1tkaW1tX251bWJlcl0uYmFzZV9hZGRyZXNzOworCQkJCQllYSA9IHNhICsgKHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2FkaikgLSAxOworCQkJCQlzYSArPSAoaSAlIGNzX3Blcl9kaW1tKSAqIChyYW5rX2RlbnNpdHkgPj4gZGJ3X2NhcF9hZGopOworCQkJCQllYSArPSAoaSAlIGNzX3Blcl9kaW1tKSAqIChyYW5rX2RlbnNpdHkgPj4gZGJ3X2NhcF9hZGopOworCQkJCX0gZWxzZSB7CisJCQkJCXNhID0gMDsKKwkJCQkJZWEgPSAwOwogCQkJCX0KKwkJCQlpZiAoaSA9PSAyKQorCQkJCQllYSArPSAocmFua19kZW5zaXR5ID4+IGRid19jYXBfYWRqKTsKIAkJCQlicmVhazsKIAkJCWRlZmF1bHQ6ICAvKiBObyBiYW5rKGNoaXAtc2VsZWN0KSBpbnRlcmxlYXZpbmcgKi8KIAkJCQlicmVhazsKQEAgLTEyOTIsOCArMTM0OSw2IEBACiAJCQkgKiBtZW1vcnkgaW4gdGhlIHR3byBDUzAgcmFua3MuCiAJCQkgKi8KIAkJCWlmIChpID09IDApIHsKLQkJCQl1bnNpZ25lZCBsb25nIGxvbmcgcmFua19kZW5zaXR5Ci0JCQkJCQk9IGRpbW1fcGFyYW1zWzBdLnJhbmtfZGVuc2l0eTsKIAkJCQllYSA9ICgyICogKHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2FkaikpIC0gMTsKIAkJCX0KIApAQCAtMTMwMywyMCArMTM1OCwxNCBAQAogCQkJICogTm8gcmFuayBpbnRlcmxlYXZpbmcgYW5kIG5vIG1lbW9yeSBjb250cm9sbGVyCiAJCQkgKiBpbnRlcmxlYXZpbmcuCiAJCQkgKi8KLQkJCXVuc2lnbmVkIGxvbmcgbG9uZyByYW5rX2RlbnNpdHkKLQkJCQkJCT0gZGltbV9wYXJhbXNbaS8yXS5yYW5rX2RlbnNpdHk7Ci0JCQlzYSA9IGRpbW1fcGFyYW1zW2kvMl0uYmFzZV9hZGRyZXNzOworCQkJc2EgPSBkaW1tX3BhcmFtc1tkaW1tX251bWJlcl0uYmFzZV9hZGRyZXNzOwogCQkJZWEgPSBzYSArIChyYW5rX2RlbnNpdHkgPj4gZGJ3X2NhcF9hZGopIC0gMTsKLQkJCWlmIChpJjEpIHsKLQkJCQlpZiAoKGRpbW1fcGFyYW1zW2kvMl0ubl9yYW5rcyA9PSAxKSkgewotCQkJCQkvKiBPZGQgY2hpcCBzZWxlY3QsIHNpbmdsZS1yYW5rIGRpbW0gKi8KLQkJCQkJc2EgPSAwOwotCQkJCQllYSA9IDA7Ci0JCQkJfSBlbHNlIHsKLQkJCQkJLyogT2RkIGNoaXAgc2VsZWN0LCBkdWFsLXJhbmsgRElNTSAqLwotCQkJCQlzYSArPSByYW5rX2RlbnNpdHkgPj4gZGJ3X2NhcF9hZGo7Ci0JCQkJCWVhICs9IHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2FkajsKLQkJCQl9CisJCQlpZiAoZGltbV9wYXJhbXNbZGltbV9udW1iZXJdLm5fcmFua3MgPiAoaSAlIGNzX3Blcl9kaW1tKSkgeworCQkJCXNhICs9IChpICUgY3NfcGVyX2RpbW0pICogKHJhbmtfZGVuc2l0eSA+PiBkYndfY2FwX2Fkaik7CisJCQkJZWEgKz0gKGkgJSBjc19wZXJfZGltbSkgKiAocmFua19kZW5zaXR5ID4+IGRid19jYXBfYWRqKTsKKwkJCX0gZWxzZSB7CisJCQkJc2EgPSAwOworCQkJCWVhID0gMDsKIAkJCX0KIAkJfQogCkBAIC0xMzI5LDEwICsxMzc4LDEyIEBACiAJCQkpOwogCiAJCWRlYnVnKCJGU0xERFI6IGNzWyVkXV9ibmRzID0gMHglMDh4XG4iLCBpLCBkZHItPmNzW2ldLmJuZHMpOwotCQlzZXRfY3NuX2NvbmZpZyhpLCBkZHIsIHBvcHRzLCBkaW1tX3BhcmFtcyk7CisJCXNldF9jc25fY29uZmlnKGRpbW1fbnVtYmVyLCBpLCBkZHIsIHBvcHRzLCBkaW1tX3BhcmFtcyk7CiAJCXNldF9jc25fY29uZmlnXzIoaSwgZGRyKTsKIAl9CiAKKwlzZXRfZGRyX2VvcihkZHIsIHBvcHRzKTsKKwogI2lmICFkZWZpbmVkKENPTkZJR19GU0xfRERSMSkKIAlzZXRfdGltaW5nX2NmZ18wKGRkcik7CiAjZW5kaWYKQEAgLTEzNjEsOCArMTQxMiw3IEBACiAKIAlzZXRfZGRyX3NyX2NudHIoZGRyLCBzcl9pdCk7CiAKLQlzZXRfZGRyX3NkcmFtX3Jjd18xKGRkcik7Ci0Jc2V0X2Rkcl9zZHJhbV9yY3dfMihkZHIpOworCXNldF9kZHJfc2RyYW1fcmN3KGRkciwgY29tbW9uX2RpbW0pOwogCiAJcmV0dXJuIGNoZWNrX2ZzbF9tZW1jdGxfY29uZmlnX3JlZ3MoZGRyKTsKIH0KZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvZGRyLmggYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL2Rkci5oCmluZGV4IGYxMjIwNzUuLjk4YWNiOGQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvZGRyLmgKKysrIGIvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9kZHIuaApAQCAtNzMsNiArNzMsNyBAQAogCQkJCW1lbWN0bF9vcHRpb25zX3QgKnBvcHRzLAogCQkJCWRpbW1fcGFyYW1zX3QgKnBkaW1tLAogCQkJCXVuc2lnbmVkIGludCBjdHJsX251bSk7CitleHRlcm4gdm9pZCBjaGVja19pbnRlcmxlYXZpbmdfb3B0aW9ucyhmc2xfZGRyX2luZm9fdCAqcGluZm8pOwogCiBleHRlcm4gdW5zaWduZWQgaW50IG1jbGtfdG9fcGljb3ModW5zaWduZWQgaW50IG1jbGspOwogZXh0ZXJuIHVuc2lnbmVkIGludCBnZXRfbWVtb3J5X2Nsa19wZXJpb2RfcHModm9pZCk7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL2RkcjNfZGltbV9wYXJhbXMuYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvZGRyM19kaW1tX3BhcmFtcy5jCmluZGV4IGQ0MTk5YmEuLjI5Y2VhNTMgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvZGRyM19kaW1tX3BhcmFtcy5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvZGRyM19kaW1tX3BhcmFtcy5jCkBAIC05MCw2ICs5MCw3IEBACiB7CiAJdW5zaWduZWQgaW50IHJldHZhbDsKIAl1bnNpZ25lZCBpbnQgbXRiX3BzOworCWludCBpOwogCiAJaWYgKHNwZC0+bWVtX3R5cGUpIHsKIAkJaWYgKHNwZC0+bWVtX3R5cGUgIT0gU1BEX01FTVRZUEVfRERSMykgewpAQCAtMTMxLDggKzEzMiwxMSBAQAogCWNhc2UgMHgwMToJLyogUkRJTU0gKi8KIAljYXNlIDB4MDU6CS8qIE1pbmktUkRJTU0gKi8KIAkJcGRpbW0tPnJlZ2lzdGVyZWRfZGltbSA9IDE7IC8qIHJlZ2lzdGVyIGJ1ZmZlcmVkICovCisJCWZvciAoaSA9IDA7IGkgPCAxNjsgaSArPSAyKSB7CisJCQlwZGltbS0+cmN3W2ldID0gc3BkLT5tb2Rfc2VjdGlvbi5yZWdpc3RlcmVkLnJjd1tpLzJdICYgMHgwRjsKKwkJCXBkaW1tLT5yY3dbaSsxXSA9IChzcGQtPm1vZF9zZWN0aW9uLnJlZ2lzdGVyZWQucmN3W2kvMl0gPj4gNCkgJiAweDBGOworCQl9CiAJCWJyZWFrOwotCiAJY2FzZSAweDAyOgkvKiBVRElNTSAqLwogCWNhc2UgMHgwMzoJLyogU08tRElNTSAqLwogCWNhc2UgMHgwNDoJLyogTWljcm8tRElNTSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9sY19jb21tb25fZGltbV9wYXJhbXMuYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvbGNfY29tbW9uX2RpbW1fcGFyYW1zLmMKaW5kZXggZTg4OGUzZS4uMDI5ZTU2NiAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2NwdS9tcGM4eHh4L2Rkci9sY19jb21tb25fZGltbV9wYXJhbXMuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL2xjX2NvbW1vbl9kaW1tX3BhcmFtcy5jCkBAIC03Niw3ICs3Niw3IEBACiAJCQkJICAgICAgY29tbW9uX3RpbWluZ19wYXJhbXNfdCAqb3V0cGRpbW0sCiAJCQkJICAgICAgdW5zaWduZWQgaW50IG51bWJlcl9vZl9kaW1tcykKIHsKLQl1bnNpZ25lZCBpbnQgaTsKKwl1bnNpZ25lZCBpbnQgaSwgajsKIAogCXVuc2lnbmVkIGludCB0Q0ttaW5fWF9wcyA9IDA7CiAJdW5zaWduZWQgaW50IHRDS21heF9wcyA9IDB4RkZGRkZGRkY7CkBAIC05OCw3ICs5OCw3IEBACiAJdW5zaWduZWQgaW50IHREUVNRX21heF9wcyA9IDA7CiAJdW5zaWduZWQgaW50IHRRSFNfcHMgPSAwOwogCi0JdW5zaWduZWQgaW50IHRlbXAxLCB0ZW1wMjsKKwl1bnNpZ25lZCBpbnQgdGVtcDEsIHRlbXAyLCB0ZW1wMzsKIAl1bnNpZ25lZCBpbnQgYWRkaXRpdmVfbGF0ZW5jeSA9IDA7CiAjaWYgIWRlZmluZWQoQ09ORklHX0ZTTF9ERFIzKQogCWNvbnN0IHVuc2lnbmVkIGludCBtY2xrX3BzID0gZ2V0X21lbW9yeV9jbGtfcGVyaW9kX3BzKCk7CkBAIC0xMTgsNiArMTE4LDE4IEBACiAJCQl0ZW1wMSsrOwogCQkJY29udGludWU7CiAJCX0KKwkJaWYgKGRpbW1fcGFyYW1zW2ldLm5fcmFua3MgPT0gNCAmJiBpICE9IDApIHsKKwkJCXByaW50ZigiRm91bmQgUXVhZC1yYW5rIERJTU0gaW4gd3JvbmcgYmFuaywgaWdub3JlZC4iCisJCQkJIiBTb2Z0d2FyZSBtYXkgbm90IHJ1biBhcyBleHBlY3RlZC5cbiIpOworCQkJdGVtcDErKzsKKwkJCWNvbnRpbnVlOworCQl9CisJCWlmIChkaW1tX3BhcmFtc1tpXS5uX3JhbmtzID09IDQgJiYgXAorCQkgIENPTkZJR19DSElQX1NFTEVDVFNfUEVSX0NUUkwvQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFIgPCA0KSB7CisJCQlwcmludGYoIkZvdW5kIFF1YWQtcmFuayBESU1NLCBub3QgYWJsZSB0byBzdXBwb3J0LiIpOworCQkJdGVtcDErKzsKKwkJCWNvbnRpbnVlOworCQl9CiAKIAkJLyoKIAkJICogRmluZCBtaW5pbXVtIHRDS21heF9wcyB0byBmaW5kIGZhc3Rlc3Qgc2xvdyBzcGVlZCwKQEAgLTIxOSw2ICsyMzEsMjAgQEAKIAkJCQkiRElNTXMgZGV0ZWN0ZWQhXG4iKTsKIAl9CiAKKwl0ZW1wMSA9IDA7CisJaWYgKG91dHBkaW1tLT5hbGxfRElNTXNfcmVnaXN0ZXJlZCkKKwkJZm9yIChqID0gMDsgaiA8IDE2OyBqKyspIHsKKwkJCW91dHBkaW1tLT5yY3dbal0gPSBkaW1tX3BhcmFtc1swXS5yY3dbal07CisJCQlmb3IgKGkgPSAxOyBpIDwgbnVtYmVyX29mX2RpbW1zOyBpKyspCisJCQkJaWYgKGRpbW1fcGFyYW1zW2ldLnJjd1tqXSAhPSBkaW1tX3BhcmFtc1swXS5yY3dbal0pIHsKKwkJCQkJdGVtcDMgPSAxOworCQkJCQlicmVhazsKKwkJCQl9CisJCX0KKworCWlmICh0ZW1wMSAhPSAwKQorCQlwcmludGYoIkVSUk9SOiBNaXggZGlmZmVyZW50IFJESU1NIGRldGVjdGVkIVxuIik7CisKICNpZiBkZWZpbmVkKENPTkZJR19GU0xfRERSMykKIAlpZiAoY29tcHV0ZV9jYXNfbGF0ZW5jeV9kZHIzKGRpbW1fcGFyYW1zLCBvdXRwZGltbSwgbnVtYmVyX29mX2RpbW1zKSkKIAkJcmV0dXJuIDE7CmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL21haW4uYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvbWFpbi5jCmluZGV4IGZhYTFhZjkuLjZkNTgyZTkgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvbWFpbi5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvbWFpbi5jCkBAIC0xMDAsOCArMTAwLDggQEAKIAogaW50IHN0ZXBfYXNzaWduX2FkZHJlc3Nlcyhmc2xfZGRyX2luZm9fdCAqcGluZm8sCiAJCQkgIHVuc2lnbmVkIGludCBkYndfY2FwX2FkaltdLAotCQkJICB1bnNpZ25lZCBpbnQgKm1lbWN0bF9pbnRlcmxlYXZpbmcsCi0JCQkgIHVuc2lnbmVkIGludCAqcmFua19pbnRlcmxlYXZpbmcpCisJCQkgIHVuc2lnbmVkIGludCAqYWxsX21lbWN0bF9pbnRlcmxlYXZpbmcsCisJCQkgIHVuc2lnbmVkIGludCAqYWxsX2N0bHJfcmFua19pbnRlcmxlYXZpbmcpCiB7CiAJaW50IGksIGo7CiAKQEAgLTE1MiwzMCArMTUyLDMwIEBACiAJCX0KIAl9CiAKLQkvKgotCSAqIENoZWNrIGlmIGFsbCBjb250cm9sbGVycyBhcmUgY29uZmlndXJlZCBmb3IgbWVtb3J5Ci0JICogY29udHJvbGxlciBpbnRlcmxlYXZpbmcuCi0JICovCiAJaiA9IDA7Ci0JZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTOyBpKyspIHsKLQkJaWYgKHBpbmZvLT5tZW1jdGxfb3B0c1tpXS5tZW1jdGxfaW50ZXJsZWF2aW5nKSB7CisJZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTOyBpKyspCisJCWlmIChwaW5mby0+bWVtY3RsX29wdHNbaV0ubWVtY3RsX2ludGVybGVhdmluZykKIAkJCWorKzsKLQkJfQotCX0KLQlpZiAoaiA9PSAyKQotCQkqbWVtY3RsX2ludGVybGVhdmluZyA9IDE7CisJLyoKKwkgKiBOb3Qgc3VwcG9ydCBsZXNzIHRoYW4gYWxsIG1lbW9yeSBjb250cm9sbGVycyBpbnRlcmxlYXZpbmcKKwkgKiBpZiBtb3JlIHRoYW4gdHdvIGNvbnRyb2xsZXJzCisJICovCisJaWYgKGogPT0gQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlMpCisJCSphbGxfbWVtY3RsX2ludGVybGVhdmluZyA9IDE7CiAKIAkvKiBDaGVjayB0aGF0IGFsbCBjb250cm9sbGVycyBhcmUgcmFuayBpbnRlcmxlYXZpbmcuICovCiAJaiA9IDA7Ci0JZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTOyBpKyspIHsKLQkJaWYgKHBpbmZvLT5tZW1jdGxfb3B0c1tpXS5iYV9pbnRsdl9jdGwpIHsKKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlM7IGkrKykKKwkJaWYgKHBpbmZvLT5tZW1jdGxfb3B0c1tpXS5iYV9pbnRsdl9jdGwpCiAJCQlqKys7Ci0JCX0KLQl9Ci0JaWYgKGogPT0gMikKLQkJKnJhbmtfaW50ZXJsZWF2aW5nID0gMTsKKwkvKgorCSAqIEFsbCBtZW1vcnkgY29udHJvbGxlcnMgbXVzdCBiZSBwb3B1bGF0ZWQgdG8gcXVhbGlmeSBmb3IKKwkgKiBhbGwgY29udHJvbGxlciByYW5rIGludGVybGVhdmluZworCSAqLworCSBpZiAoaiA9PSBDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUykKKwkJKmFsbF9jdGxyX3JhbmtfaW50ZXJsZWF2aW5nID0gMTsKIAotCWlmICgqbWVtY3RsX2ludGVybGVhdmluZykgeworCWlmICgqYWxsX21lbWN0bF9pbnRlcmxlYXZpbmcpIHsKIAkJdW5zaWduZWQgbG9uZyBsb25nIGFkZHIsIHRvdGFsX21lbV9wZXJfY3RsciA9IDA7CiAJCS8qCiAJCSAqIElmIGludGVybGVhdmluZyBiZXR3ZWVuIG1lbW9yeSBjb250cm9sbGVycywKQEAgLTMxNiw3ICszMTYsNyBAQAogCQkJCQkmcGluZm8tPm1lbWN0bF9vcHRzW2ldLAogCQkJCQlwaW5mby0+ZGltbV9wYXJhbXNbaV0sIGkpOwogCQl9Ci0KKwkJY2hlY2tfaW50ZXJsZWF2aW5nX29wdGlvbnMocGluZm8pOwogCWNhc2UgU1RFUF9BU1NJR05fQUREUkVTU0VTOgogCQkvKiBTVEVQIDU6ICBBc3NpZ24gYWRkcmVzc2VzIHRvIGNoaXAgc2VsZWN0cyAqLwogCQlzdGVwX2Fzc2lnbl9hZGRyZXNzZXMocGluZm8sCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvY3B1L21wYzh4eHgvZGRyL29wdGlvbnMuYyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvb3B0aW9ucy5jCmluZGV4IDQ2NzMxYzguLjc3NGMwZTQgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvb3B0aW9ucy5jCisrKyBiL2FyY2gvcG93ZXJwYy9jcHUvbXBjOHh4eC9kZHIvb3B0aW9ucy5jCkBAIC04LDYgKzgsNyBAQAogICovCiAKICNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxod2NvbmZpZy5oPgogI2luY2x1ZGUgPGFzbS9mc2xfZGRyX3NkcmFtLmg+CiAKICNpbmNsdWRlICJkZHIuaCIKQEAgLTIzLDcgKzI0LDYgQEAKIAkJCXVuc2lnbmVkIGludCBjdHJsX251bSkKIHsKIAl1bnNpZ25lZCBpbnQgaTsKLQljb25zdCBjaGFyICpwOwogCiAJLyogQ2hpcCBzZWxlY3Qgb3B0aW9ucy4gKi8KIApAQCAtMjA0LDYgKzIwNCw3IEBACiAJICogbWVldCB0aGUgdFFEU1MgdW5kZXIgZGlmZmVyZW50IGxvYWRpbmcuCiAJICovCiAJcG9wdHMtPndybHZsX2VuID0gMTsKKwlwb3B0cy0+enFfZW4gPSAxOwogCXBvcHRzLT53cmx2bF9vdmVycmlkZSA9IDA7CiAjZW5kaWYKIApAQCAtMjEyLDc4ICsyMTMsMTI4IEBACiAJICogUGxlYXNlIHJlZmVyIHRvIGRvYy9SRUFETUUuZnNsLWRkciBmb3IgdGhlIGRldGFpbC4KIAkgKgogCSAqIElmIG1lbW9yeSBjb250cm9sbGVyIGludGVybGVhdmluZyBpcyBlbmFibGVkLCB0aGVuIHRoZSBkYXRhCi0JICogYnVzIHdpZHRocyBtdXN0IGJlIHByb2dyYW1tZWQgaWRlbnRpY2FsbHkgZm9yIHRoZSAyIG1lbW9yeQotCSAqIGNvbnRyb2xsZXJzLgorCSAqIGJ1cyB3aWR0aHMgbXVzdCBiZSBwcm9ncmFtbWVkIGlkZW50aWNhbGx5IGZvciBhbGwgbWVtb3J5IGNvbnRyb2xsZXJzLgogCSAqCi0JICogWFhYOiBBdHRlbXB0IHRvIHNldCBib3RoIGNvbnRyb2xsZXJzIHRvIHRoZSBzYW1lIGNoaXAgc2VsZWN0CisJICogWFhYOiBBdHRlbXB0IHRvIHNldCBhbGwgY29udHJvbGxlcnMgdG8gdGhlIHNhbWUgY2hpcCBzZWxlY3QKIAkgKiBpbnRlcmxlYXZpbmcgbW9kZS4gSXQgd2lsbCBkbyBhIGJlc3QgZWZmb3J0IHRvIGdldCB0aGUKIAkgKiByZXF1ZXN0ZWQgcmFua3MgaW50ZXJsZWF2ZWQgdG9nZXRoZXIgc3VjaCB0aGF0IHRoZSByZXN1bHQKIAkgKiBzaG91bGQgYmUgYSBzdWJzZXQgb2YgdGhlIHJlcXVlc3RlZCBjb25maWd1cmF0aW9uLgogCSAqLwogI2lmIChDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUyA+IDEpCi0JaWYgKChwID0gZ2V0ZW52KCJtZW1jdGxfaW50bHZfY3RsIikpICE9IE5VTEwpIHsKKwlpZiAoaHdjb25maWdfc3ViKCJmc2xfZGRyIiwgImN0bHJfaW50bHYiKSkgewogCQlpZiAocGRpbW1bMF0ubl9yYW5rcyA9PSAwKSB7Ci0JCQlwcmludGYoIlRoZXJlIGlzIG5vIHJhbmsgb24gQ1MwLiBCZWNhdXNlIG9ubHkgcmFuayBvbiAiCi0JCQkJIkNTMCBhbmQgcmFua3MgY2hpcC1zZWxlY3QgaW50ZXJsZWF2ZWQgd2l0aCBDUzAiCisJCQlwcmludGYoIlRoZXJlIGlzIG5vIHJhbmsgb24gQ1MwIGZvciBjb250cm9sbGVyICVkLiBCZWNhdXNlIG9ubHkiCisJCQkJIiByYW5rIG9uIENTMCBhbmQgcmFua3MgY2hpcC1zZWxlY3QgaW50ZXJsZWF2ZWQgd2l0aCBDUzAiCiAJCQkJIiBhcmUgY29udHJvbGxlciBpbnRlcmxlYXZlZCwgZm9yY2Ugbm9uIG1lbW9yeSAiCi0JCQkJImNvbnRyb2xsZXIgaW50ZXJsZWF2aW5nXG4iKTsKKwkJCQkiY29udHJvbGxlciBpbnRlcmxlYXZpbmdcbiIsIGN0cmxfbnVtKTsKIAkJCXBvcHRzLT5tZW1jdGxfaW50ZXJsZWF2aW5nID0gMDsKIAkJfSBlbHNlIHsKIAkJCXBvcHRzLT5tZW1jdGxfaW50ZXJsZWF2aW5nID0gMTsKLQkJCWlmIChzdHJjbXAocCwgImNhY2hlbGluZSIpID09IDApCisJCQkvKgorCQkJICogdGVzdCBudWxsIGZpcnN0LiBpZiBDT05GSUdfSFdDT05GSUcgaXMgbm90IGRlZmluZWQKKwkJCSAqIGh3Y29uZmlnX2FyZ19jbXAgcmV0dXJucyBub24temVybworCQkJICovCisJCQlpZiAoaHdjb25maWdfc3ViYXJnX2NtcCgiZnNsX2RkciIsICJjdGxyX2ludGx2IiwgIm51bGwiKSkgeworCQkJCXBvcHRzLT5tZW1jdGxfaW50ZXJsZWF2aW5nID0gMDsKKwkJCQlkZWJ1ZygibWVtb3J5IGNvbnRyb2xsZXIgaW50ZXJsZWF2aW5nIGRpc2FibGVkLlxuIik7CisJCQl9IGVsc2UgaWYgKGh3Y29uZmlnX3N1YmFyZ19jbXAoImZzbF9kZHIiLCAiY3Rscl9pbnRsdiIsICJjYWNoZWxpbmUiKSkKIAkJCQlwb3B0cy0+bWVtY3RsX2ludGVybGVhdmluZ19tb2RlID0KIAkJCQkJRlNMX0REUl9DQUNIRV9MSU5FX0lOVEVSTEVBVklORzsKLQkJCWVsc2UgaWYgKHN0cmNtcChwLCAicGFnZSIpID09IDApCisJCQllbHNlIGlmIChod2NvbmZpZ19zdWJhcmdfY21wKCJmc2xfZGRyIiwgImN0bHJfaW50bHYiLCAicGFnZSIpKQogCQkJCXBvcHRzLT5tZW1jdGxfaW50ZXJsZWF2aW5nX21vZGUgPQogCQkJCQlGU0xfRERSX1BBR0VfSU5URVJMRUFWSU5HOwotCQkJZWxzZSBpZiAoc3RyY21wKHAsICJiYW5rIikgPT0gMCkKKwkJCWVsc2UgaWYgKGh3Y29uZmlnX3N1YmFyZ19jbXAoImZzbF9kZHIiLCAiY3Rscl9pbnRsdiIsICJiYW5rIikpCiAJCQkJcG9wdHMtPm1lbWN0bF9pbnRlcmxlYXZpbmdfbW9kZSA9CiAJCQkJCUZTTF9ERFJfQkFOS19JTlRFUkxFQVZJTkc7Ci0JCQllbHNlIGlmIChzdHJjbXAocCwgInN1cGVyYmFuayIpID09IDApCisJCQllbHNlIGlmIChod2NvbmZpZ19zdWJhcmdfY21wKCJmc2xfZGRyIiwgImN0bHJfaW50bHYiLCAic3VwZXJiYW5rIikpCiAJCQkJcG9wdHMtPm1lbWN0bF9pbnRlcmxlYXZpbmdfbW9kZSA9CiAJCQkJCUZTTF9ERFJfU1VQRVJCQU5LX0lOVEVSTEVBVklORzsKLQkJCWVsc2UKLQkJCQlwb3B0cy0+bWVtY3RsX2ludGVybGVhdmluZ19tb2RlID0KLQkJCQkJCXNpbXBsZV9zdHJ0b3VsKHAsIE5VTEwsIDApOworCQkJZWxzZSB7CisJCQkJcG9wdHMtPm1lbWN0bF9pbnRlcmxlYXZpbmcgPSAwOworCQkJCXByaW50ZigiaHdjb25maWcgaGFzIHVucmVjb2duaXplZCBwYXJhbWV0ZXIgZm9yIGN0bHJfaW50bHYuXG4iKTsKKwkJCX0KIAkJfQogCX0KICNlbmRpZgotCi0JaWYoICgocCA9IGdldGVudigiYmFfaW50bHZfY3RsIikpICE9IE5VTEwpICYmCisJaWYgKChod2NvbmZpZ19zdWIoImZzbF9kZHIiLCAiYmFua19pbnRsdiIpKSAmJgogCQkoQ09ORklHX0NISVBfU0VMRUNUU19QRVJfQ1RSTCA+IDEpKSB7Ci0JCWlmIChzdHJjbXAocCwgImNzMF9jczEiKSA9PSAwKQorCQkvKiB0ZXN0IG51bGwgZmlyc3QuIGlmIENPTkZJR19IV0NPTkZJRyBpcyBub3QgZGVmaW5lZCwKKwkJICogaHdjb25maWdfYXJnX2NtcCByZXR1cm5zIG5vbi16ZXJvICovCisJCWlmIChod2NvbmZpZ19zdWJhcmdfY21wKCJmc2xfZGRyIiwgImJhbmtfaW50bHYiLCAibnVsbCIpKQorCQkJZGVidWcoImJhbmsgaW50ZXJsZWF2aW5nIGRpc2FibGVkLlxuIik7CisJCWVsc2UgaWYgKGh3Y29uZmlnX3N1YmFyZ19jbXAoImZzbF9kZHIiLCAiYmFua19pbnRsdiIsICJjczBfY3MxIikpCiAJCQlwb3B0cy0+YmFfaW50bHZfY3RsID0gRlNMX0REUl9DUzBfQ1MxOwotCQllbHNlIGlmIChzdHJjbXAocCwgImNzMl9jczMiKSA9PSAwKQorCQllbHNlIGlmIChod2NvbmZpZ19zdWJhcmdfY21wKCJmc2xfZGRyIiwgImJhbmtfaW50bHYiLCAiY3MyX2NzMyIpKQogCQkJcG9wdHMtPmJhX2ludGx2X2N0bCA9IEZTTF9ERFJfQ1MyX0NTMzsKLQkJZWxzZSBpZiAoc3RyY21wKHAsICJjczBfY3MxX2FuZF9jczJfY3MzIikgPT0gMCkKKwkJZWxzZSBpZiAoaHdjb25maWdfc3ViYXJnX2NtcCgiZnNsX2RkciIsICJiYW5rX2ludGx2IiwgImNzMF9jczFfYW5kX2NzMl9jczMiKSkKIAkJCXBvcHRzLT5iYV9pbnRsdl9jdGwgPSBGU0xfRERSX0NTMF9DUzFfQU5EX0NTMl9DUzM7Ci0JCWVsc2UgaWYgKHN0cmNtcChwLCAiY3MwX2NzMV9jczJfY3MzIikgPT0gMCkKKwkJZWxzZSBpZiAoaHdjb25maWdfc3ViYXJnX2NtcCgiZnNsX2RkciIsICJiYW5rX2ludGx2IiwgImNzMF9jczFfY3MyX2NzMyIpKQogCQkJcG9wdHMtPmJhX2ludGx2X2N0bCA9IEZTTF9ERFJfQ1MwX0NTMV9DUzJfQ1MzOwogCQllbHNlCi0JCQlwb3B0cy0+YmFfaW50bHZfY3RsID0gc2ltcGxlX3N0cnRvdWwocCwgTlVMTCwgMCk7Ci0KKwkJCXByaW50ZigiaHdjb25maWcgaGFzIHVucmVjb2duaXplZCBwYXJhbWV0ZXIgZm9yIGJhbmtfaW50bHYuXG4iKTsKIAkJc3dpdGNoIChwb3B0cy0+YmFfaW50bHZfY3RsICYgRlNMX0REUl9DUzBfQ1MxX0NTMl9DUzMpIHsKIAkJY2FzZSBGU0xfRERSX0NTMF9DUzFfQ1MyX0NTMzoKLQkJY2FzZSBGU0xfRERSX0NTMF9DUzE6Ci0JCQlpZiAocGRpbW1bMF0ubl9yYW5rcyAhPSAyKSB7CisjaWYgKENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSID09IDEpCisJCQlpZiAocGRpbW1bMF0ubl9yYW5rcyA8IDQpIHsKIAkJCQlwb3B0cy0+YmFfaW50bHZfY3RsID0gMDsKIAkJCQlwcmludGYoIk5vdCBlbm91Z2ggYmFuayhjaGlwLXNlbGVjdCkgZm9yICIKLQkJCQkJIkNTMCtDUzEsIGZvcmNlIG5vbi1pbnRlcmxlYXZpbmchXG4iKTsKKwkJCQkJIkNTMCtDUzErQ1MyK0NTMyBvbiBjb250cm9sbGVyICVkLCAiCisJCQkJCSJmb3JjZSBub24taW50ZXJsZWF2aW5nIVxuIiwgY3RybF9udW0pOworCQkJfQorI2VsaWYgKENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSID09IDIpCisJCQlpZiAoKHBkaW1tWzBdLm5fcmFua3MgPCAyKSAmJiAocGRpbW1bMV0ubl9yYW5rcyA8IDIpKSB7CisJCQkJcG9wdHMtPmJhX2ludGx2X2N0bCA9IDA7CisJCQkJcHJpbnRmKCJOb3QgZW5vdWdoIGJhbmsoY2hpcC1zZWxlY3QpIGZvciAiCisJCQkJCSJDUzArQ1MxK0NTMitDUzMgb24gY29udHJvbGxlciAlZCwgIgorCQkJCQkiZm9yY2Ugbm9uLWludGVybGVhdmluZyFcbiIsIGN0cmxfbnVtKTsKKwkJCX0KKwkJCWlmIChwZGltbVswXS5jYXBhY2l0eSAhPSBwZGltbVsxXS5jYXBhY2l0eSkgeworCQkJCXBvcHRzLT5iYV9pbnRsdl9jdGwgPSAwOworCQkJCXByaW50ZigiTm90IGlkZW50aWNhbCBESU1NIHNpemUgZm9yICIKKwkJCQkJIkNTMCtDUzErQ1MyK0NTMyBvbiBjb250cm9sbGVyICVkLCAiCisJCQkJCSJmb3JjZSBub24taW50ZXJsZWF2aW5nIVxuIiwgY3RybF9udW0pOworCQkJfQorI2VuZGlmCisJCQlicmVhazsKKwkJY2FzZSBGU0xfRERSX0NTMF9DUzE6CisJCQlpZiAocGRpbW1bMF0ubl9yYW5rcyA8IDIpIHsKKwkJCQlwb3B0cy0+YmFfaW50bHZfY3RsID0gMDsKKwkJCQlwcmludGYoIk5vdCBlbm91Z2ggYmFuayhjaGlwLXNlbGVjdCkgZm9yICIKKwkJCQkJIkNTMCtDUzEgb24gY29udHJvbGxlciAlZCwgIgorCQkJCQkiZm9yY2Ugbm9uLWludGVybGVhdmluZyFcbiIsIGN0cmxfbnVtKTsKIAkJCX0KIAkJCWJyZWFrOwogCQljYXNlIEZTTF9ERFJfQ1MyX0NTMzoKLQkJCWlmIChwZGltbVsxXS5uX3JhbmtzICE9Mil7CisjaWYgKENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSID09IDEpCisJCQlpZiAocGRpbW1bMF0ubl9yYW5rcyA8IDQpIHsKIAkJCQlwb3B0cy0+YmFfaW50bHZfY3RsID0gMDsKLQkJCQlwcmludGYoIk5vdCBlbm91Z2ggYmFuayhDUykgZm9yIENTMitDUzMsICIKLQkJCQkJImZvcmNlIG5vbi1pbnRlcmxlYXZpbmchXG4iKTsKKwkJCQlwcmludGYoIk5vdCBlbm91Z2ggYmFuayhjaGlwLXNlbGVjdCkgZm9yIENTMitDUzMgIgorCQkJCQkib24gY29udHJvbGxlciAlZCwgZm9yY2Ugbm9uLWludGVybGVhdmluZyFcbiIsIGN0cmxfbnVtKTsKIAkJCX0KKyNlbGlmIChDT05GSUdfRElNTV9TTE9UU19QRVJfQ1RMUiA9PSAyKQorCQkJaWYgKHBkaW1tWzFdLm5fcmFua3MgPCAyKSB7CisJCQkJcG9wdHMtPmJhX2ludGx2X2N0bCA9IDA7CisJCQkJcHJpbnRmKCJOb3QgZW5vdWdoIGJhbmsoY2hpcC1zZWxlY3QpIGZvciBDUzIrQ1MzICIKKwkJCQkJIm9uIGNvbnRyb2xsZXIgJWQsIGZvcmNlIG5vbi1pbnRlcmxlYXZpbmchXG4iLCBjdHJsX251bSk7CisJCQl9CisjZW5kaWYKIAkJCWJyZWFrOwogCQljYXNlIEZTTF9ERFJfQ1MwX0NTMV9BTkRfQ1MyX0NTMzoKLQkJCWlmICgocGRpbW1bMF0ubl9yYW5rcyAhPSAyKXx8KHBkaW1tWzFdLm5fcmFua3MgIT0gMikpIHsKKyNpZiAoQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFIgPT0gMSkKKwkJCWlmIChwZGltbVswXS5uX3JhbmtzIDwgNCkgewogCQkJCXBvcHRzLT5iYV9pbnRsdl9jdGwgPSAwOwotCQkJCXByaW50ZigiTm90IGVub3VnaCBiYW5rKENTKSBmb3IgQ1MwK0NTMSBvciAiCi0JCQkJCSJDUzIrQ1MzLCBmb3JjZSBub24taW50ZXJsZWF2aW5nIVxuIik7CisJCQkJcHJpbnRmKCJOb3QgZW5vdWdoIGJhbmsoQ1MpIGZvciBDUzArQ1MxIGFuZCAiCisJCQkJCSJDUzIrQ1MzIG9uIGNvbnRyb2xsZXIgJWQsICIKKwkJCQkJImZvcmNlIG5vbi1pbnRlcmxlYXZpbmchXG4iLCBjdHJsX251bSk7CiAJCQl9CisjZWxpZiAoQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFIgPT0gMikKKwkJCWlmICgocGRpbW1bMF0ubl9yYW5rcyA8IDIpIHx8IChwZGltbVsxXS5uX3JhbmtzIDwgMikpIHsKKwkJCQlwb3B0cy0+YmFfaW50bHZfY3RsID0gMDsKKwkJCQlwcmludGYoIk5vdCBlbm91Z2ggYmFuayhDUykgZm9yIENTMCtDUzEgYW5kICIKKwkJCQkJIkNTMitDUzMgb24gY29udHJvbGxlciAlZCwgIgorCQkJCQkiZm9yY2Ugbm9uLWludGVybGVhdmluZyFcbiIsIGN0cmxfbnVtKTsKKwkJCX0KKyNlbmRpZgogCQkJYnJlYWs7CiAJCWRlZmF1bHQ6CiAJCQlwb3B0cy0+YmFfaW50bHZfY3RsID0gMDsKQEAgLTI5MSw3ICszNDIsNDggQEAKIAkJfQogCX0KIAorCWlmIChod2NvbmZpZ19zdWIoImZzbF9kZHIiLCAiYWRkcl9oYXNoIikpIHsKKwkJaWYgKGh3Y29uZmlnX3N1YmFyZ19jbXAoImZzbF9kZHIiLCAiYWRkcl9oYXNoIiwgIm51bGwiKSkKKwkJCXBvcHRzLT5hZGRyX2hhc2ggPSAwOworCQllbHNlIGlmIChod2NvbmZpZ19zdWJhcmdfY21wKCJmc2xfZGRyIiwgImFkZHJfaGFzaCIsICJ0cnVlIikpCisJCQlwb3B0cy0+YWRkcl9oYXNoID0gMTsKKwl9CisKKwlpZiAocGRpbW1bMF0ubl9yYW5rcyA9PSA0KQorCQlwb3B0cy0+cXVhZF9yYW5rX3ByZXNlbnQgPSAxOworCiAJZnNsX2Rkcl9ib2FyZF9vcHRpb25zKHBvcHRzLCBwZGltbSwgY3RybF9udW0pOwogCiAJcmV0dXJuIDA7CiB9CisKK3ZvaWQgY2hlY2tfaW50ZXJsZWF2aW5nX29wdGlvbnMoZnNsX2Rkcl9pbmZvX3QgKnBpbmZvKQoreworCWludCBpLCBqLCBjaGVja19uX3JhbmtzLCBpbnRsdl9maXhlZCA9IDA7CisJdW5zaWduZWQgbG9uZyBsb25nIGNoZWNrX3JhbmtfZGVuc2l0eTsKKwkvKgorCSAqIENoZWNrIGlmIGFsbCBjb250cm9sbGVycyBhcmUgY29uZmlndXJlZCBmb3IgbWVtb3J5CisJICogY29udHJvbGxlciBpbnRlcmxlYXZpbmcuIElkZW50aWNhbCBkaW1tcyBhcmUgcmVjb21tZW5kZWQuIEF0IGxlYXN0CisJICogdGhlIHNpemUgc2hvdWxkIGJlIGNoZWNrZWQuCisJICovCisJaiA9IDA7CisJY2hlY2tfbl9yYW5rcyA9IHBpbmZvLT5kaW1tX3BhcmFtc1swXVswXS5uX3JhbmtzOworCWNoZWNrX3JhbmtfZGVuc2l0eSA9IHBpbmZvLT5kaW1tX3BhcmFtc1swXVswXS5yYW5rX2RlbnNpdHk7CisJZm9yIChpID0gMDsgaSA8IENPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTOyBpKyspIHsKKwkJaWYgKChwaW5mby0+bWVtY3RsX29wdHNbaV0ubWVtY3RsX2ludGVybGVhdmluZykgJiYgXAorCQkgICAgKGNoZWNrX3JhbmtfZGVuc2l0eSA9PSBwaW5mby0+ZGltbV9wYXJhbXNbaV1bMF0ucmFua19kZW5zaXR5KSAmJiBcCisJCSAgICAoY2hlY2tfbl9yYW5rcyA9PSBwaW5mby0+ZGltbV9wYXJhbXNbaV1bMF0ubl9yYW5rcykpIHsKKwkJCWorKzsKKwkJfQorCX0KKwlpZiAoaiAhPSBDT05GSUdfTlVNX0REUl9DT05UUk9MTEVSUykgeworCQlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlM7IGkrKykKKwkJCWlmIChwaW5mby0+bWVtY3RsX29wdHNbaV0ubWVtY3RsX2ludGVybGVhdmluZykgeworCQkJCXBpbmZvLT5tZW1jdGxfb3B0c1tpXS5tZW1jdGxfaW50ZXJsZWF2aW5nID0gMDsKKwkJCQlpbnRsdl9maXhlZCA9IDE7CisJCQl9CisJCWlmIChpbnRsdl9maXhlZCkKKwkJCXByaW50ZigiTm90IGFsbCBESU1NcyBhcmUgaWRlbnRpY2FsIGluIHNpemUuICIKKwkJCQkiTWVtb3J5IGNvbnRyb2xsZXIgaW50ZXJsZWF2aW5nIGRpc2FibGVkLlxuIik7CisJfQorfQpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvNHh4X2libV9kZHIyX2F1dG9jYWxpYi5jIGIvYXJjaC9wb3dlcnBjL2NwdS9wcGM0eHgvNHh4X2libV9kZHIyX2F1dG9jYWxpYi5jCmluZGV4IDJmZWU5OTUuLjJjZmMzN2YgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9jcHUvcHBjNHh4LzR4eF9pYm1fZGRyMl9hdXRvY2FsaWIuYworKysgYi9hcmNoL3Bvd2VycGMvY3B1L3BwYzR4eC80eHhfaWJtX2RkcjJfYXV0b2NhbGliLmMKQEAgLTk4NSw3ICs5ODUsNyBAQAogCXB1dHMoc3RyKTsKIAogI2lmIGRlZmluZWQoREVCVUdfUFBDNHh4X0REUl9BVVRPQ0FMSUJSQVRJT04pCi0JaSA9IGdldGVudl9yKCJhdXRvY2FsaWIiLCB0bXAsIHNpemVvZih0bXApKTsKKwlpID0gZ2V0ZW52X2YoImF1dG9jYWxpYiIsIHRtcCwgc2l6ZW9mKHRtcCkpOwogCWlmIChpIDwgMCkKIAkJc3RyY3B5KHRtcCwgQ09ORklHX0FVVE9DQUxJQik7CiAKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfZGRyX2RpbW1fcGFyYW1zLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2Rkcl9kaW1tX3BhcmFtcy5oCmluZGV4IDU1OTIzZTAuLmJlODI2MDIgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfZGRyX2RpbW1fcGFyYW1zLmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9kZHJfZGltbV9wYXJhbXMuaApAQCAtODEsNiArODEsOSBAQAogCXVuc2lnbmVkIGludCB0UlRQX3BzOwkvKiBieXRlIDM4LCBzcGQtPnRydHAgKi8KIAl1bnNpZ25lZCBpbnQgdERRU1FfbWF4X3BzOwkvKiBieXRlIDQ0LCBzcGQtPnRkcXNxICovCiAJdW5zaWduZWQgaW50IHRRSFNfcHM7CS8qIGJ5dGUgNDUsIHNwZC0+dHFocyAqLworCisJLyogRERSMyBSRElNTSAqLworCXVuc2lnbmVkIGNoYXIgcmN3WzE2XTsJLyogUmVnaXN0ZXIgQ29udHJvbCBXb3JkIDAtMTUgKi8KIH0gZGltbV9wYXJhbXNfdDsKIAogZXh0ZXJuIHVuc2lnbmVkIGludCBkZHJfY29tcHV0ZV9kaW1tX3BhcmFtZXRlcnMoCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2Rkcl9zZHJhbS5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9kZHJfc2RyYW0uaAppbmRleCAwMjkyMGRiLi5kNTc2ZWI4IDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2Rkcl9zZHJhbS5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfZGRyX3NkcmFtLmgKQEAgLTExOSw2ICsxMTksNyBAQAogCXVuc2lnbmVkIGludCBkZHJfc3JfY250cjsKIAl1bnNpZ25lZCBpbnQgZGRyX3NkcmFtX3Jjd18xOwogCXVuc2lnbmVkIGludCBkZHJfc2RyYW1fcmN3XzI7CisJdW5zaWduZWQgaW50IGRkcl9lb3I7CiB9IGZzbF9kZHJfY2ZnX3JlZ3NfdDsKIAogdHlwZWRlZiBzdHJ1Y3QgbWVtY3RsX29wdGlvbnNfcGFydGlhbF9zIHsKQEAgLTE1Niw2ICsxNTcsNyBAQAogCXVuc2lnbmVkIGludCBtZW1jdGxfaW50ZXJsZWF2aW5nOwogCXVuc2lnbmVkIGludCBtZW1jdGxfaW50ZXJsZWF2aW5nX21vZGU7CiAJdW5zaWduZWQgaW50IGJhX2ludGx2X2N0bDsKKwl1bnNpZ25lZCBpbnQgYWRkcl9oYXNoOwogCiAJLyogT3BlcmF0aW9uYWwgbW9kZSBwYXJhbWV0ZXJzICovCiAJdW5zaWduZWQgaW50IEVDQ19tb2RlOwkgLyogVXNlIEVDQz8gKi8KQEAgLTE3Miw2ICsxNzQsNyBAQAogCXVuc2lnbmVkIGludCBPVEZfYnVyc3RfY2hvcF9lbjsKIAkvKiBtaXJyaW9yIERJTU1zIGZvciBERFIzICovCiAJdW5zaWduZWQgaW50IG1pcnJvcmVkX2RpbW07CisJdW5zaWduZWQgaW50IHF1YWRfcmFua19wcmVzZW50OwogCiAJLyogR2xvYmFsIFRpbWluZyBQYXJhbWV0ZXJzICovCiAJdW5zaWduZWQgaW50IGNhc19sYXRlbmN5X292ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9mbWFuLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2ZtYW4uaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzAxZmZjCi0tLSAvZGV2L251bGwKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9mbWFuLmgKQEAgLTAsMCArMSwyMTIgQEAKKy8qCisgKiBNUEM4NXh4IEludGVybmFsIE1lbW9yeSBNYXAKKyAqCisgKiBDb3B5cmlnaHQgMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2lmbmRlZiBfX0ZTTF9GTUFOX0hfXworI2RlZmluZSBfX0ZTTF9GTUFOX0hfXworCisjaW5jbHVkZSA8YXNtL3R5cGVzLmg+CisKK3R5cGVkZWYgc3RydWN0IGZtX2JtaV9jb21tb24geworCXUzMglmbWJtX2luaXQ7CS8qIEJNSSBpbml0aWFsaXphdGlvbiAqLworCXUzMglmbWJtX2NmZzE7CS8qIEJNSSBjb25maWd1cmF0aW9uMSAqLworCXUzMglmbWJtX2NmZzI7CS8qIEJNSSBjb25maWd1cmF0aW9uMiAqLworCXUzMglyZXMwWzB4NV07CisJdTMyCWZtYm1faWV2cjsJLyogaW50ZXJydXB0IGV2ZW50IHJlZ2lzdGVyICovCisJdTMyCWZtYm1faWVyOwkvKiBpbnRlcnJ1cHQgZW5hYmxlIHJlZ2lzdGVyICovCisJdTMyCWZtYm1faWZyOwkvKiBpbnRlcnJ1cHQgZm9yY2UgcmVnaXN0ZXIgKi8KKwl1MzIJcmVzMVsweDVdOworCXUzMglmbWJtX2FyYlsweDhdOwkvKiBCTUkgYXJiaXRyYXRpb24gKi8KKwl1MzIJcmVzMlsweDI4XTsKKwl1MzIJZm1ibV9nZGU7CS8qIGdsb2JhbCBkZWJ1ZyBlbmFibGUgKi8KKwl1MzIJZm1ibV9wcFsweDNmXTsJLyogQk1JIHBvcnQgcGFyYW1ldGVycyAqLworCXUzMglyZXMzOworCXUzMglmbWJtX3Bmc1sweDNmXTsJLyogQk1JIHBvcnQgRklGTyBzaXplICovCisJdTMyCXJlczQ7CisJdTMyCWZtYm1fcHBpZFsweDNmXTsvKiBwb3J0IHBhcnRpdGlvbiBJRCAqLworfSBmbV9ibWlfY29tbW9uX3Q7CisKK3R5cGVkZWYgc3RydWN0IGZtX3FtaV9jb21tb24geworCXUzMglmbXFtX2djOwkvKiBnZW5lcmFsIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8KKwl1MzIJcmVzMDsKKwl1MzIJZm1xbV9laWU7CS8qIGVycm9yIGludGVycnVwdCBldmVudCByZWdpc3RlciAqLworCXUzMglmbXFtX2VpZW47CS8qIGVycm9yIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIgKi8KKwl1MzIJZm1xbV9laWY7CS8qIGVycm9yIGludGVycnVwdCBmb3JjZSByZWdpc3RlciAqLworCXUzMglmbXFtX2llOwkvKiBpbnRlcnJ1cHQgZXZlbnQgcmVnaXN0ZXIgKi8KKwl1MzIJZm1xbV9pZW47CS8qIGludGVycnVwdCBlbmFibGUgcmVnaXN0ZXIgKi8KKwl1MzIJZm1xbV9pZjsJLyogaW50ZXJydXB0IGZvcmNlIHJlZ2lzdGVyICovCisJdTMyCWZtcW1fZ3M7CS8qIGdsb2JhbCBzdGF0dXMgcmVnaXN0ZXIgKi8KKwl1MzIJZm1xbV90czsJLyogdGFzayBzdGF0dXMgcmVnaXN0ZXIgKi8KKwl1MzIJZm1xbV9ldGZjOwkvKiBlbnF1ZXVlIHRvdGFsIGZyYW1lIGNvdW50ZXIgKi8KKwl1MzIJZm1xbV9kdGZjOwkvKiBkZXF1ZXVlIHRvdGFsIGZyYW1lIGNvdW50ZXIgKi8KKwl1MzIJZm1xbV9kYzA7CS8qIGRlcXVldWUgY291bnRlciAwICovCisJdTMyCWZtcW1fZGMxOwkvKiBkZXF1ZXVlIGNvdW50ZXIgMSAqLworCXUzMglmbXFtX2RjMjsJLyogZGVxdWV1ZSBjb3VudGVyIDIgKi8KKwl1MzIJZm1xbV9kYzM7CS8qIGRlcXVldWUgY291bnRlciAzICovCisJdTMyCWZtcW1fZGZub2M7CS8qIGRlcXVldWUgRlFJRCBub3Qgb3ZlcnJpZGUgY291bnRlciAqLworCXUzMglmbXFtX2RmY2M7CS8qIGRlcXVldWUgRlFJRCBmcm9tIGNvbnRleHQgY291bnRlciAqLworCXUzMglmbXFtX2RmZmM7CS8qIGRlcXVldWUgRlFJRCBmcm9tIEZEIGNvdW50ZXIgKi8KKwl1MzIJZm1xbV9kY2M7CS8qIGRlcXVldWUgY29uZmlybSBjb3VudGVyICovCisJdTMyCXJlczFbMHhjXTsKKwl1MzIJZm1xbV9kdHJjOwkvKiBkZWJ1ZyB0cmFwIGNvbmZpZ3VyYXRpb24gcmVnaXN0ZXIgKi8KKwl1MzIJZm1xbV9lZmRkZDsJLyogZW5xdWV1ZSBmcmFtZSBkZXNjcmlwdG9yIGR5bmFtaWMgZGVidWcgKi8KKwl1MzIJcmVzM1sweDJdOworCXUzMglyZXM0WzB4ZGNdOwkvKiBtaXNzaW5nIGRlYnVnIHJlZ3MgKi8KK30gZm1fcW1pX2NvbW1vbl90OworCit0eXBlZGVmIHN0cnVjdCBmbV9ibWkgeworCXU4CXJlc1sxMDI0XTsKK30gZm1fYm1pX3Q7CisKK3R5cGVkZWYgc3RydWN0IGZtX3FtaSB7CisJdTgJcmVzWzEwMjRdOworfSBmbV9xbWlfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZm1fcGFyc2VyIHsKKwl1OAlyZXNbMTAyNF07Cit9IGZtX3BhcnNlcl90OworCit0eXBlZGVmIHN0cnVjdCBmbV9wb2xpY2VyIHsKKwl1OAlyZXNbNCoxMDI0XTsKK30gZm1fcG9saWNlcl90OworCit0eXBlZGVmIHN0cnVjdCBmbV9rZXlnZW4geworCXU4CXJlc1s0KjEwMjRdOworfSBmbV9rZXlnZW5fdDsKKwordHlwZWRlZiBzdHJ1Y3QgZm1fZG1hIHsKKwl1MzIJZm1kbXNyOwkJLyogc3RhdHVzIHJlZ2lzdGVyICovCisJdTMyCWZtZG1tcjsJCS8qIG1vZGUgcmVnaXN0ZXIgKi8KKwl1MzIJZm1kbXRyOwkJLyogYnVzIHRocmVzaG9sZCByZWdpc3RlciAqLworCXUzMglmbWRtaHk7CQkvKiBidXMgaHlzdGVyZXNpcyByZWdpc3RlciAqLworCXUzMglmbWRtc2V0cjsJLyogU09TIGVtZXJnZW5jeSB0aHJlc2hvbGQgcmVnaXN0ZXIgKi8KKwl1MzIJZm1kbXRhaDsJLyogdHJhbnNmZXIgYnVzIGFkZHJlc3MgaGlnaCByZWdpc3RlciAqLworCXUzMglmbWRtdGFsOwkvKiB0cmFuc2ZlciBidXMgYWRkcmVzcyBsb3cgcmVnaXN0ZXIgKi8KKwl1MzIJZm1kbXRjaWQ7CS8qIHRyYW5zZmVyIGJ1cyBjb21tdW5pY2F0aW9uIElEIHJlZ2lzdGVyICovCisJdTMyCWZtZG1yYTsJCS8qIERNQSBidXMgaW50ZXJuYWwgcmFtIGFkZHJlc3MgcmVnaXN0ZXIgKi8KKwl1MzIJZm1kbXJkOwkJLyogRE1BIGJ1cyBpbnRlcm5hbCByYW0gZGF0YSByZWdpc3RlciAqLworCXUzMglyZXMwWzB4Yl07CisJdTMyCWZtZG1kY3I7CS8qIGRlYnVnIGNvdW50ZXIgKi8KKwl1MzIJZm1kbWVtc3I7CS8qIGVtcmdlbmN5IHNtb290aGVyIHJlZ2lzdGVyICovCisJdTMyCXJlczE7CisJdTMyCWZtZG1wbHJbMzJdOwkvKiBGTSBETUEgUElELUxJT0ROICMgcmVnaXN0ZXIgKi8KKwl1MzIJcmVzWzB4M2M4XTsKK30gZm1fZG1hX3Q7CisKK3R5cGVkZWYgc3RydWN0IGZtX2ZwbSB7CisJdTMyCWZwbXRuYzsJCS8qIFROVU0gY29udHJvbCAqLworCXUzMglmcG1wcmM7CQkvKiBQb3J0X0lEIGNvbnRyb2wgKi8KKwl1MzIJcmVzMDsKKwl1MzIJZnBtZmxjOwkJLyogZmx1c2ggY29udHJvbCAqLworCXUzMglmcG1kaXMxOwkvKiBkaXNwYXRjaCB0aHJlc2hvbGRzMSAqLworCXUzMglmcG1kaXMyOwkvKiBkaXNwYXRjaCB0aHJlc2hvbGRzMiAqLworCXUzMglmbWVwaTsJCS8qIGVycm9yIHBlbmRpbmcgaW50ZXJydXB0cyAqLworCXUzMglmbXJpZTsJCS8qIHJhbXMgaW50ZXJydXB0IGVuYWJsZSAqLworCXUzMglmcG1mY2V2ZW50WzB4NF07LyogRk1hbiBjb250cm9sbGVyIGV2ZW50IDAtMyAqLworCXUzMglyZXMxWzB4NF07CisJdTMyCWZwbWZjbWFza1sweDRdOwkvKiBGTWFuIGNvbnRyb2xsZXIgbWFzayAwLTMgKi8KKwl1MzIJcmVzMlsweDRdOworCXUzMglmcG10c2MxOwkvKiB0aW1lc3RhbXAgY29udHJvbDEgKi8KKwl1MzIJZnBtdHNjMjsJLyogdGltZXN0YW1wIGNvbnRyb2wyICovCisJdTMyCWZwbXRzcDsJCS8qIHRpbWUgc3RhbXAgKi8KKwl1MzIJZnBtdHNmOwkJLyogdGltZSBzdGFtcCBmcmFjdGlvbiAqLworCXUzMglmcG1yY3I7CQkvKiByYW1zIGNvbnRyb2wgYW5kIGV2ZW50ICovCisJdTMyCXJlczNbMHgzXTsKKwl1MzIJZnBtZHJkWzB4NF07CS8qIGRhdGFfcmFtIGRhdGEgMC0zICovCisJdTMyCXJlczRbMHhjXTsKKwl1MzIJZnBtZHJhOwkJLyogZGF0YSByYW0gYWNjZXNzICovCisJdTMyCWZtX2lwX3Jldl8xOwkvKiBJUCBibG9jayByZXZpc2lvbiAxICovCisJdTMyCWZtX2lwX3Jldl8yOwkvKiBJUCBibG9jayByZXZpc2lvbiAyICovCisJdTMyCWZtcnN0YzsJCS8qIHJlc2V0IGNvbW1hbmQgKi8KKwl1MzIJZm1jbGQ7CQkvKiBjbGFzc2lmaWVyIGRlYnVnIGNvbnRyb2wgKi8KKwl1MzIJZm1ucGk7CQkvKiBub3JtYWwgcGVuZGluZyBpbnRlcnJ1cHRzICovCisJdTMyCXJlczU7CisJdTMyCWZtbmVlOwkJLyogZXZlbnQgYW5kIGVuYWJsZSAqLworCXUzMglmcG1jZXZbMHg0XTsJLyogQ1BVIGV2ZW50IDAtMyAqLworCXUzMglyZXM2WzB4NF07CisJdTMyCWZtZnBfcHNbMHg0MF07CS8qIHBvcnQgc3RhdHVzICovCisJdTMyCXJlczdbMHgyNjBdOworCXUzMglmcG10c1sweDgwXTsJLyogdGFzayBzdGF0dXMgKi8KKwl1MzIJcmVzOFsweGEwXTsKK30gZm1fZnBtX3Q7CisKK3R5cGVkZWYgc3RydWN0IGZtX2ltZW0geworCXU4CXJlc1s0KjEwMjRdOworfSBmbV9pbWVtX3Q7CisKK3R5cGVkZWYgc3RydWN0IGZtX3NvZnRfcGFyc2VyIHsKKwl1OAlyZXNbNCoxMDI0XTsKK30gZm1fc29mdF9wYXJzZXJfdDsKKwordHlwZWRlZiBzdHJ1Y3QgZm1fZHRlc2MgeworCXU4CXJlc1s0KjEwMjRdOworfSBmbV9kdHNlY190OworCit0eXBlZGVmIHN0cnVjdCBmbV9tZGlvIHsKKwl1OAlyZXNbNCoxMDI0XTsKK30gZm1fbWRpb190OworCit0eXBlZGVmIHN0cnVjdCBmbV8xMGdlYyB7CisJdTgJcmVzWzQqMTAyNF07Cit9IGZtXzEwZ2VjX3Q7CisKK3R5cGVkZWYgc3RydWN0IGZtXzEwZ2VjX21kaW8geworCXU4CXJlc1s0KjEwMjRdOworfSBmbV8xMGdlY19tZGlvX3Q7CisKK3R5cGVkZWYgc3RydWN0IGZtXzE1ODggeworCXU4CXJlc1s0KjEwMjRdOworfSBmbV8xNTg4X3Q7CisKK3R5cGVkZWYgc3RydWN0IGNjc3JfZm1hbiB7CisJdTgJCQltdXJhbVsweDgwMDAwXTsKKwlmbV9ibWlfY29tbW9uX3QJCWZtX2JtaV9jb21tb247CisJZm1fcW1pX2NvbW1vbl90CQlmbV9xbWlfY29tbW9uOworCXU4CQkJcmVzMFsyMDQ4XTsKKwlzdHJ1Y3QgeworCQlmbV9ibWlfdAlmbV9ibWk7CisJCWZtX3FtaV90CWZtX3FtaTsKKwkJZm1fcGFyc2VyX3QJZm1fcGFyc2VyOworCQl1OAkJcmVzWzEwMjRdOworCX0gcG9ydFs2M107CisJZm1fcG9saWNlcl90CQlmbV9wb2xpY2VyOworCWZtX2tleWdlbl90CQlmbV9rZXlnZW47CisJZm1fZG1hX3QJCWZtX2RtYTsKKwlmbV9mcG1fdAkJZm1fZnBtOworCWZtX2ltZW1fdAkJZm1faW1lbTsKKwl1OAkJCXJlczFbOCoxMDI0XTsKKwlmbV9zb2Z0X3BhcnNlcl90CWZtX3NvZnRfcGFyc2VyOworCXU4CQkJcmVzMls5NioxMDI0XTsKKwlzdHJ1Y3QgeworCQlmbV9kdHNlY190CWZtX2R0ZXNjOworCQlmbV9tZGlvX3QJZm1fbWRpbzsKKwl9IG1hY1s0XTsKKwl1OAkJCXJlczNbMzIqMTAyNF07CisJZm1fMTBnZWNfdAkJZm1fMTBnZWM7CisJZm1fMTBnZWNfbWRpb190CQlmbV8xMGdlY19tZGlvOworCXU4CQkJcmVzNFs0OCoxMDI0XTsKKwlmbV8xNTg4X3QJCWZtXzE1ODg7CisJdTgJCQlyZXM1WzQqMTAyNF07Cit9IGNjc3JfZm1hbl90OworCisjZW5kaWYgLypfX0ZTTF9GTUFOX0hfXyovCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2xhdy5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9sYXcuaAppbmRleCAxMmJhMWE2Li4wZTI1NWZmIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2xhdy5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfbGF3LmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogQ29weXJpZ2h0IDIwMDgtMjAwOSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICogQ29weXJpZ2h0IDIwMDgtMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgogICoKICAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKICAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCkBAIC01NCw2ICs1NCw3IEBACiAJTEFXX1RSR1RfSUZfUENJRV8xID0gMHgwMCwKIAlMQVdfVFJHVF9JRl9QQ0lFXzIgPSAweDAxLAogCUxBV19UUkdUX0lGX1BDSUVfMyA9IDB4MDIsCisJTEFXX1RSR1RfSUZfUENJRV80ID0gMHgwMywKIAlMQVdfVFJHVF9JRl9SSU9fMSA9IDB4MDgsCiAJTEFXX1RSR1RfSUZfUklPXzIgPSAweDA5LAogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2xpb2RuLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX2xpb2RuLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWNkYzk5YQotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfbGlvZG4uaApAQCAtMCwwICsxLDE0MiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX0ZTTF9MSU9ETl9IXworI2RlZmluZSBfRlNMX0xJT0ROX0hfCisKKyNpbmNsdWRlIDxhc20vdHlwZXMuaD4KKworc3RydWN0IGxpb2RuX2lkX3RhYmxlIHsKKwljb25zdCBjaGFyICogY29tcGF0OworCXUzMiBpZFsyXTsKKwl1OCBudW1faWRzOworCXBoeXNfYWRkcl90IGNvbXBhdF9vZmZzZXQ7CisJdW5zaWduZWQgbG9uZyByZWdfb2Zmc2V0OworfTsKKworZXh0ZXJuIHUzMiBnZXRfcHBpZF9saW9kbihpbnQgcHBpZF90YmxfaWR4LCBpbnQgcHBpZCk7CitleHRlcm4gdm9pZCBzZXRfbGlvZG5zKHZvaWQpOworZXh0ZXJuIHZvaWQgZmR0X2ZpeHVwX2xpb2RuKHZvaWQgKmJsb2IpOworCisjZGVmaW5lIFNFVF9MSU9ETl9CQVNFXzEoaWRBKSBcCisJeyAuaWQgPSB7IGlkQSB9LCAubnVtX2lkcyA9IDEsIH0KKworI2RlZmluZSBTRVRfTElPRE5fQkFTRV8yKGlkQSwgaWRCKSBcCisJeyAuaWQgPSB7IGlkQSwgaWRCIH0sIC5udW1faWRzID0gMiB9CisKKyNkZWZpbmUgU0VUX0xJT0ROX0VOVFJZXzEobmFtZSwgaWRBLCBvZmYsIGNvbXBhdG9mZikgXAorCXsgLmNvbXBhdCA9IG5hbWUsIFwKKwkgIC5pZCA9IHsgaWRBIH0sIC5udW1faWRzID0gMSwgXAorCSAgLnJlZ19vZmZzZXQgPSBvZmYgKyBDT05GSUdfU1lTX0NDU1JCQVIsIFwKKwkgIC5jb21wYXRfb2Zmc2V0ID0gY29tcGF0b2ZmICsgQ09ORklHX1NZU19DQ1NSQkFSX1BIWVMsIFwKKwl9CisKKyNkZWZpbmUgU0VUX0xJT0ROX0VOVFJZXzIobmFtZSwgaWRBLCBpZEIsIG9mZiwgY29tcGF0b2ZmKSBcCisJeyAuY29tcGF0ID0gbmFtZSwgXAorCSAgLmlkID0geyBpZEEsIGlkQiB9LCAubnVtX2lkcyA9IDIsIFwKKwkgIC5yZWdfb2Zmc2V0ID0gb2ZmICsgQ09ORklHX1NZU19DQ1NSQkFSLCBcCisJICAuY29tcGF0X29mZnNldCA9IGNvbXBhdG9mZiArIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTLCBcCisJfQorCisjZGVmaW5lIFNFVF9HVVRTX0xJT0ROKGNvbXBhdCwgbGlvZG4sIG5hbWUsIGNvbXBhdG9mZikgXAorCVNFVF9MSU9ETl9FTlRSWV8xKGNvbXBhdCwgbGlvZG4sIFwKKwkJb2Zmc2V0b2YoY2Nzcl9ndXJfdCwgbmFtZSkgKyBDT05GSUdfU1lTX01QQzg1eHhfR1VUU19PRkZTRVQsIFwKKwkJY29tcGF0b2ZmKQorCisjZGVmaW5lIFNFVF9VU0JfTElPRE4odXNiTnVtLCBjb21wYXQsIGxpb2RuKSBcCisJU0VUX0dVVFNfTElPRE4oY29tcGF0LCBsaW9kbiwgdXNiIyN1c2JOdW0jI2xpb2RucixcCisJCUNPTkZJR19TWVNfTVBDODV4eF9VU0IjI3VzYk51bSMjX09GRlNFVCkKKworI2RlZmluZSBTRVRfU0FUQV9MSU9ETihzYXRhTnVtLCBsaW9kbikgXAorCVNFVF9HVVRTX0xJT0ROKCJmc2wscHEtc2F0YS12MiIsIGxpb2RuLCBzYXRhIyNzYXRhTnVtIyNsaW9kbnIsXAorCQlDT05GSUdfU1lTX01QQzg1eHhfU0FUQSMjc2F0YU51bSMjX09GRlNFVCkKKworI2RlZmluZSBTRVRfUENJX0xJT0ROKHBjaU51bSwgbGlvZG4pIFwKKwlTRVRfR1VUU19MSU9ETigiZnNsLHA0MDgwLXBjaWUiLCBsaW9kbiwgcGV4IyNwY2lOdW0jI2xpb2RucixcCisJCUNPTkZJR19TWVNfTVBDODV4eF9QQ0lFIyNwY2lOdW0jI19PRkZTRVQpCisKKy8qIHJlZyBub2RlcyBmb3IgRE1BIHN0YXJ0IEAgMHgzMDAgKi8KKyNkZWZpbmUgU0VUX0RNQV9MSU9ETihkbWFOdW0sIGxpb2RuKSBcCisJU0VUX0dVVFNfTElPRE4oImZzbCxlbG9wbHVzLWRtYSIsIGxpb2RuLCBkbWEjI2RtYU51bSMjbGlvZG5yLFwKKwkJQ09ORklHX1NZU19NUEM4NXh4X0RNQSMjZG1hTnVtIyNfT0ZGU0VUICsgMHgzMDApCisKKyNkZWZpbmUgU0VUX1NESENfTElPRE4oc2RoY051bSwgbGlvZG4pIFwKKwlTRVRfR1VUU19MSU9ETigiZnNsLGVzZGhjIiwgbGlvZG4sIHNkbW1jIyNzZGhjTnVtIyNsaW9kbnIsXAorCQlDT05GSUdfU1lTX01QQzg1eHhfRVNESENfT0ZGU0VUKQorCisjZGVmaW5lIFNFVF9RTUFOX0xJT0ROKGxpb2RuKSBcCisJU0VUX0xJT0ROX0VOVFJZXzEoImZzbCxxbWFuIiwgbGlvZG4sIG9mZnNldG9mKGNjc3JfcW1hbl90LCBsaW9kbnIpICsgXAorCQlDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX1FNQU5fT0ZGU0VULCBcCisJCUNPTkZJR19TWVNfRlNMX0NPUkVORVRfUU1BTl9PRkZTRVQpCisKKyNkZWZpbmUgU0VUX0JNQU5fTElPRE4obGlvZG4pIFwKKwlTRVRfTElPRE5fRU5UUllfMSgiZnNsLGJtYW4iLCBsaW9kbiwgb2Zmc2V0b2YoY2Nzcl9ibWFuX3QsIGxpb2RucikgKyBcCisJCUNPTkZJR19TWVNfRlNMX0NPUkVORVRfQk1BTl9PRkZTRVQsIFwKKwkJQ09ORklHX1NZU19GU0xfQ09SRU5FVF9CTUFOX09GRlNFVCkKKworI2RlZmluZSBTRVRfUE1FX0xJT0ROKGxpb2RuKSBcCisJU0VUX0xJT0ROX0VOVFJZXzEoImZzbCxwbWUiLCBsaW9kbiwgb2Zmc2V0b2YoY2Nzcl9wbWVfdCwgbGlvZG5yKSArIFwKKwkJQ09ORklHX1NZU19GU0xfQ09SRU5FVF9QTUVfT0ZGU0VULCBcCisJCUNPTkZJR19TWVNfRlNMX0NPUkVORVRfUE1FX09GRlNFVCkKKworLyogLTEgZnJvbSBwb3J0SUQgZHVlIHRvIGhvdyBpbW1hcCBoYXMgdGhlIHJlZ2lzdGVycyAqLworI2RlZmluZSBGTV9QUElEX1JYX1BPUlRfT0ZGU0VUKGZtTnVtLCBwb3J0SUQpIFwKKwlDT05GSUdfU1lTX0ZTTF9GTSMjZm1OdW0jI19PRkZTRVQgKyBcCisJb2Zmc2V0b2Yoc3RydWN0IGNjc3JfZm1hbiwgZm1fYm1pX2NvbW1vbi5mbWJtX3BwaWRbcG9ydElEIC0gMV0pCisKKy8qIGVuZXROdW0gaXMgMCwgMSwgMi4uLiBzbyB3ZSArIDggZm9yIDFnIHRvIGdldCB0byBIVyBQb3J0IElEICovCisjZGVmaW5lIFNFVF9GTUFOX1JYXzFHX0xJT0ROKGZtTnVtLCBlbmV0TnVtLCBsaW9kbikgXAorCVNFVF9MSU9ETl9FTlRSWV8xKCJmc2wsZm1hbi1wb3J0LTFnLXJ4IiwgbGlvZG4sIFwKKwkJRk1fUFBJRF9SWF9QT1JUX09GRlNFVChmbU51bSwgZW5ldE51bSArIDgpLCBcCisJCUNPTkZJR19TWVNfRlNMX0ZNIyNmbU51bSMjX1JYIyNlbmV0TnVtIyNfMUdfT0ZGU0VUKSBcCisKKy8qIGVuZXROdW0gaXMgMCwgMSwgMi4uLiBzbyB3ZSArIDE2IGZvciAxMGcgdG8gZ2V0IHRvIEhXIFBvcnQgSUQgKi8KKyNkZWZpbmUgU0VUX0ZNQU5fUlhfMTBHX0xJT0ROKGZtTnVtLCBlbmV0TnVtLCBsaW9kbikgXAorCVNFVF9MSU9ETl9FTlRSWV8xKCJmc2wsZm1hbi1wb3J0LTEwZy1yeCIsIGxpb2RuLCBcCisJCUZNX1BQSURfUlhfUE9SVF9PRkZTRVQoZm1OdW0sIGVuZXROdW0gKyAxNiksIFwKKwkJQ09ORklHX1NZU19GU0xfRk0jI2ZtTnVtIyNfUlgjI2VuZXROdW0jI18xMEdfT0ZGU0VUKSBcCisKKyNkZWZpbmUgU0VUX1NFQ19KUV9MSU9ETl9FTlRSWShqcU51bSwgbGlvZG5BLCBsaW9kbkIpIFwKKwlTRVRfTElPRE5fRU5UUllfMigiZnNsLHNlYzQuMC1qb2ItcXVldWUiLCBsaW9kbkEsIGxpb2RuQixcCisJCW9mZnNldG9mKGNjc3Jfc2VjX3QsIGpxbGlvZG5yW2pxTnVtXS5scykgKyBcCisJCUNPTkZJR19TWVNfRlNMX1NFQ19PRkZTRVQsIFwKKwkJQ09ORklHX1NZU19GU0xfU0VDX09GRlNFVCArIDB4MTAwMCArIDB4MTAwMCAqIGpxTnVtKQorCisvKiBUaGlzIGlzIGEgYml0IGV2aWwgc2luY2Ugd2UgdHJlYXQgcnRpYyBwYXJhbSBhcyBib3RoIGEgc3RyaW5nICYgaGV4IHZhbHVlICovCisjZGVmaW5lIFNFVF9TRUNfUlRJQ19MSU9ETl9FTlRSWShydGljLCBsaW9kbkEpIFwKKwlTRVRfTElPRE5fRU5UUllfMSgiZnNsLHNlYzQuMC1ydGljLW1lbW9yeSIsIFwKKwkJbGlvZG5BLAlcCisJCW9mZnNldG9mKGNjc3Jfc2VjX3QsIHJ0aWNsaW9kbnJbMHgjI3J0aWMtMHhhXS5scykgKyBcCisJCUNPTkZJR19TWVNfRlNMX1NFQ19PRkZTRVQsIFwKKwkJQ09ORklHX1NZU19GU0xfU0VDX09GRlNFVCArIDB4NjEwMCArIDB4MjAgKiAoMHgjI3J0aWMtMHhhKSkKKworI2RlZmluZSBTRVRfU0VDX0RFQ09fTElPRE5fRU5UUlkobnVtLCBsaW9kbkEsIGxpb2RuQikgXAorCVNFVF9MSU9ETl9FTlRSWV8yKE5VTEwsIGxpb2RuQSwgbGlvZG5CLCBcCisJCW9mZnNldG9mKGNjc3Jfc2VjX3QsIGRlY29saW9kbnJbbnVtXS5scykgKyBcCisJCUNPTkZJR19TWVNfRlNMX1NFQ19PRkZTRVQsIDApCisKK2V4dGVybiBzdHJ1Y3QgbGlvZG5faWRfdGFibGUgbGlvZG5fdGJsW10sIGxpb2RuX2Jhc2VzW10sIHNlY19saW9kbl90YmxbXTsKK2V4dGVybiBzdHJ1Y3QgbGlvZG5faWRfdGFibGUgZm1hbjFfbGlvZG5fdGJsW10sIGZtYW4yX2xpb2RuX3RibFtdOworZXh0ZXJuIGludCBsaW9kbl90Ymxfc3osIHNlY19saW9kbl90Ymxfc3o7CitleHRlcm4gaW50IGZtYW4xX2xpb2RuX3RibF9zeiwgZm1hbjJfbGlvZG5fdGJsX3N6OworCisjZW5kaWYKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfcG9ydGFscy5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9wb3J0YWxzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2IzMjkyNwotLS0gL2Rldi9udWxsCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfcG9ydGFscy5oCkBAIC0wLDAgKzEsNTkgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOS0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaWZuZGVmIF9GU0xfUE9SVEFMU19IXworI2RlZmluZSBfRlNMX1BPUlRBTFNfSF8KKworLyogZW50cmllcyBtdXN0IGJlIGluIG9yZGVyIGFuZCBjb250aWd1b3VzICovCitlbnVtIGZzbF9kcGFhX2RldiB7CisJRlNMX0hXX1BPUlRBTF9TRUMsCisjaWZkZWYgQ09ORklHX1NZU19EUEFBX0ZNQU4KKwlGU0xfSFdfUE9SVEFMX0ZNQU4xLAorI2lmIChDT05GSUdfU1lTX05VTV9GTUFOID09IDIpCisJRlNMX0hXX1BPUlRBTF9GTUFOMiwKKyNlbmRpZgorI2VuZGlmCisjaWZkZWYgQ09ORklHX1NZU19EUEFBX1BNRQorCUZTTF9IV19QT1JUQUxfUE1FLAorI2VuZGlmCit9OworCitzdHJ1Y3QgcXBvcnRhbF9pbmZvIHsKKwl1MTYJZGxpb2RuOwkvKiBEUVJSIExJT0ROICovCisJdTE2CWZsaW9kbjsJLyogZnJhbWUgZGF0YSBMSU9ETiAqLworCXUxNglsaW9kbl9vZmZzZXQ7CisJdTgJc2Rlc3Q7Cit9OworCisjZGVmaW5lIFNFVF9RUF9JTkZPKGRxcnIsIGZkYXRhLCBvZmYsIGRlc3QpIFwKKwl7IC5kbGlvZG4gPSBkcXJyLCAuZmxpb2RuID0gZmRhdGEsIC5saW9kbl9vZmZzZXQgPSBvZmYsIC5zZGVzdCA9IGRlc3QgfQorCitleHRlcm4gaW50IGdldF9kcGFhX2xpb2RuKGVudW0gZnNsX2RwYWFfZGV2IGRwYWFfZGV2LAorCQkJICB1MzIgKmxpb2RucywgaW50IGxpb2RuX29mZnNldCk7CitleHRlcm4gdm9pZCBzZXR1cF9wb3J0YWxzKHZvaWQpOworZXh0ZXJuIHZvaWQgZmR0X2ZpeHVwX3Fwb3J0YWxzKHZvaWQgKmJsb2IpOworCitleHRlcm4gc3RydWN0IHFwb3J0YWxfaW5mbyBxcF9pbmZvW107CitleHRlcm4gdm9pZCBmZHRfcG9ydGFsKHZvaWQgKmJsb2IsIGNvbnN0IGNoYXIgKmNvbXBhdCwgY29uc3QgY2hhciAqY29udGFpbmVyLAorCQkJdTY0IGFkZHIsIHUzMiBzaXplKTsKKworI2VuZGlmCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX3NlcmRlcy5oIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ZzbF9zZXJkZXMuaAppbmRleCBjNzg3N2I5Li44NTUxOGViIDEwMDY0NAotLS0gYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vZnNsX3NlcmRlcy5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9mc2xfc2VyZGVzLmgKQEAgLTMyLDggKzMyLDE1IEBACiAJU0FUQTIsCiAJU1JJTzEsCiAJU1JJTzIsCi0JU0dNSUlfRk0xLAotCVNHTUlJX0ZNMiwKKwlTR01JSV9GTTFfRFRTRUMxLAorCVNHTUlJX0ZNMV9EVFNFQzIsCisJU0dNSUlfRk0xX0RUU0VDMywKKwlTR01JSV9GTTFfRFRTRUM0LAorCVNHTUlJX0ZNMV9EVFNFQzUsCisJU0dNSUlfRk0yX0RUU0VDMSwKKwlTR01JSV9GTTJfRFRTRUMyLAorCVNHTUlJX0ZNMl9EVFNFQzMsCisJU0dNSUlfRk0yX0RUU0VDNCwKIAlTR01JSV9UU0VDMSwKIAlTR01JSV9UU0VDMiwKIAlTR01JSV9UU0VDMywKZGlmZiAtLWdpdCBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9pbW1hcF84NXh4LmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vaW1tYXBfODV4eC5oCmluZGV4IGIxZDIxOWIuLmMxMzgyYzggMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9pbW1hcF84NXh4LmgKKysrIGIvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL2ltbWFwXzg1eHguaApAQCAtMzIsNiArMzIsNyBAQAogI2luY2x1ZGUgPGFzbS9mc2xfZG1hLmg+CiAjaW5jbHVkZSA8YXNtL2ZzbF9pMmMuaD4KICNpbmNsdWRlIDxhc20vZnNsX2xiYy5oPgorI2luY2x1ZGUgPGFzbS9mc2xfZm1hbi5oPgogCiB0eXBlZGVmIHN0cnVjdCBjY3NyX2xvY2FsIHsKIAl1MzIJY2NzcmJhcmg7CS8qIENDU1IgQmFzZSBBZGRyIEhpZ2ggKi8KQEAgLTE3Miw3ICsxNzMsMTcgQEAKIAl1MzIJZGRyX3NyX2NudHI7CQkvKiBzZWxmIHJlZnJlc2ggY291bnRlciAqLwogCXUzMglkZHJfc2RyYW1fcmN3XzE7CS8qIENvbnRyb2wgV29yZHMgMSAqLwogCXUzMglkZHJfc2RyYW1fcmN3XzI7CS8qIENvbnRyb2wgV29yZHMgMiAqLwotCXU4CXJlczhfMWJbMjQ1Nl07CisJdTgJcmVnXzFhYls4XTsKKwl1MzIJZGRyX3dybHZsX2NudGxfMjsJLyogd3JpdGUgbGV2ZWxpbmcgY29udHJvbCAyICovCisJdTMyCWRkcl93cmx2bF9jbnRsXzM7CS8qIHdyaXRlIGxldmVsaW5nIGNvbnRyb2wgMyAqLworCXU4CXJlczhfMWJbMTA0XTsKKwl1MzIJc2RyYW1fbW9kZV8zOwkJLyogU0RSQU0gTW9kZSBDb25maWd1cmF0aW9uIDMgKi8KKwl1MzIJc2RyYW1fbW9kZV80OwkJLyogU0RSQU0gTW9kZSBDb25maWd1cmF0aW9uIDQgKi8KKwl1MzIJc2RyYW1fbW9kZV81OwkJLyogU0RSQU0gTW9kZSBDb25maWd1cmF0aW9uIDUgKi8KKwl1MzIJc2RyYW1fbW9kZV82OwkJLyogU0RSQU0gTW9kZSBDb25maWd1cmF0aW9uIDYgKi8KKwl1MzIJc2RyYW1fbW9kZV83OwkJLyogU0RSQU0gTW9kZSBDb25maWd1cmF0aW9uIDcgKi8KKwl1MzIJc2RyYW1fbW9kZV84OwkJLyogU0RSQU0gTW9kZSBDb25maWd1cmF0aW9uIDggKi8KKwl1OAlyZXM4XzFiYVsweDkwOF07CiAJdTMyCWRkcl9kc3IxOwkJLyogRGVidWcgU3RhdHVzIDEgKi8KIAl1MzIJZGRyX2RzcjI7CQkvKiBEZWJ1ZyBTdGF0dXMgMiAqLwogCXUzMglkZHJfY2RyMTsJCS8qIENvbnRyb2wgRHJpdmVyIDEgKi8KQEAgLTE4MCw3ICsxOTEsMjEgQEAKIAl1OAlyZXM4XzFjWzIwMF07CiAJdTMyCWlwX3JldjE7CQkvKiBJUCBCbG9jayBSZXZpc2lvbiAxICovCiAJdTMyCWlwX3JldjI7CQkvKiBJUCBCbG9jayBSZXZpc2lvbiAyICovCi0JdTgJcmVzOF8yWzUxMl07CisJdTMyCWVvcjsJCQkvKiBFbmhhbmNlZCBPcHRpbWl6YXRpb24gUmVnaXN0ZXIgKi8KKwl1OAlyZXM4XzJbMjUyXTsKKwl1MzIJbXRjcjsJCQkvKiBNZW1vcnkgVGVzdCBDb250cm9sIFJlZ2lzdGVyICovCisJdTgJcmVzOF8zWzI4XTsKKwl1MzIJbXRwMTsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDEgKi8KKwl1MzIJbXRwMjsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDIgKi8KKwl1MzIJbXRwMzsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDMgKi8KKwl1MzIJbXRwNDsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDQgKi8KKwl1MzIJbXRwNTsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDUgKi8KKwl1MzIJbXRwNjsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDYgKi8KKwl1MzIJbXRwNzsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDcgKi8KKwl1MzIJbXRwODsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDggKi8KKwl1MzIJbXRwOTsJCQkvKiBNZW1vcnkgVGVzdCBQYXR0ZXJuIDkgKi8KKwl1MzIJbXRwMTA7CQkJLyogTWVtb3J5IFRlc3QgUGF0dGVybiAxMCAqLworCXU4CXJlczhfNFsxODRdOwogCXUzMglkYXRhX2Vycl9pbmplY3RfaGk7CS8qIERhdGEgUGF0aCBFcnIgSW5qZWN0aW9uIE1hc2sgSGlnaCAqLwogCXUzMglkYXRhX2Vycl9pbmplY3RfbG87CS8qIERhdGEgUGF0aCBFcnIgSW5qZWN0aW9uIE1hc2sgTG93ICovCiAJdTMyCWVjY19lcnJfaW5qZWN0OwkJLyogRGF0YSBQYXRoIEVyciBJbmplY3Rpb24gTWFzayBFQ0MgKi8KQEAgLTIxOCw2ICsyNDMsOSBAQAogCXU4CXJlczEyWzE4NF07CiB9IGNjc3JfZGRyX3Q7CiAKKyNkZWZpbmUgRERSX0VPUl9SRF9CRFdfT1BUX0RJUwkweDgwMDAwMDAwIC8qIFJlYWQgQkRXIE9wdC4gZGlzYWJsZSAqLworI2RlZmluZSBERFJfRU9SX0FERFJfSEFTSF9FTgkweDQwMDAwMDAwIC8qIEFkZHJlc3MgaGFzaCBlbmFibGVkICovCisKIC8qIEkyQyBSZWdpc3RlcnMgKi8KIHR5cGVkZWYgc3RydWN0IGNjc3JfaTJjIHsKIAlzdHJ1Y3QgZnNsX2kyYwlpMmNbMV07CkBAIC03MzIsNiArNzYwLDggQEAKIAl1MzIJZW9pOwkJLyogRW5kIE9mIElSUSAqLwogCXU4CXJlczlbMzkxNl07CiAJdTMyCWZycjsJCS8qIEZlYXR1cmUgUmVwb3J0aW5nICovCisjZGVmaW5lIE1QQzg1eHhfUElDRlJSX05DUFVfTUFTSwkweDAwMDAxZjAwCisjZGVmaW5lIE1QQzg1eHhfUElDRlJSX05DUFVfU0hJRlQJOAogCXU4CXJlczEwWzI4XTsKIAl1MzIJZ2NyOwkJLyogR2xvYmFsIENvbmZpZ3VyYXRpb24gKi8KICNkZWZpbmUgTVBDODV4eF9QSUNHQ1JfUlNUCTB4ODAwMDAwMDAKQEAgLTE2MDksNiArMTYzOSw3IEBACiAjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1JfUENJRTEJMHg4MDAwMDAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSX1BDSUUyCTB4NDAwMDAwMDAKICNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUl9QQ0lFMwkweDIwMDAwMDAwCisjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1JfUENJRTQJMHgxMDAwMDAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSX1JNVQkJMHgwODAwMDAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSX1NSSU8xCTB4MDQwMDAwMDAKICNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUl9TUklPMgkweDAyMDAwMDAwCkBAIC0xNjE4LDYgKzE2NDksOCBAQAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSX0REUjIJMHgwMDA4MDAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSX0RCRwkJMHgwMDAxMDAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSX05BTAkJMHgwMDAwODAwMAorI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSX1NBVEExCTB4MDAwMDQwMDAKKyNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUl9TQVRBMgkweDAwMDAyMDAwCiAjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1JfRUxCQwkweDAwMDAxMDAwCiAjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1JfVVNCMQkweDAwMDAwODAwCiAjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1JfVVNCMgkweDAwMDAwNDAwCkBAIC0xNjM4LDEyICsxNjcxLDE0IEBACiAjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1IyX0RUU0VDMV8yCTB4MDA0MDAwMDAKICNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUjJfRFRTRUMxXzMJMHgwMDIwMDAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzFfNAkweDAwMTAwMDAwCisjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1IyX0RUU0VDMV81CTB4MDAwODAwMDAKICNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUjJfRk0yCTB4MDAwMjAwMDAKICNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUjJfMTBHRUMyCTB4MDAwMTAwMDAKICNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUjJfRFRTRUMyXzEJMHgwMDAwODAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9ERVZESVNSMl9EVFNFQzJfMgkweDAwMDA0MDAwCiAjZGVmaW5lIEZTTF9DT1JFTkVUX0RFVkRJU1IyX0RUU0VDMl8zCTB4MDAwMDIwMDAKICNkZWZpbmUgRlNMX0NPUkVORVRfREVWRElTUjJfRFRTRUMyXzQJMHgwMDAwMTAwMAorI2RlZmluZSBGU0xfQ09SRU5FVF9OVU1fREVWRElTUgkJMgogCXU4CXJlczdbOF07CiAJdTMyCXBvd21ndGNzcjsJLyogUG93ZXIgbWFuYWdlbWVudCBzdGF0dXMgJiBjb250cm9sICovCiAJdTgJcmVzOFsxMl07CkBAIC0xNjcyLDkgKzE3MDcsMTggQEAKICNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1I1X0REUl9TWU5DCQkweDAwMDAwMDgwCiAjZGVmaW5lIEZTTF9DT1JFTkVUX1JDV1NSNV9ERFJfU1lOQ19TSElGVAkJIDcKICNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1I1X1NSRFNfRU4JCTB4MDAwMDIwMDAKKyNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1JuX1NSRFNfTFBEX0IyCQkweDNjMDAwMDAwIC8qIGJpdHMgMTYyLi4xNjUgKi8KKyNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1JuX1NSRFNfTFBEX0IzCQkweDAwM2MwMDAwIC8qIGJpdHMgMTcwLi4xNzMgKi8KICNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1I3X01DS19UT19QTEFUX1JBVAkweDAwNDAwMDAwCiAjZGVmaW5lIEZTTF9DT1JFTkVUX1JDV1NSOF9IT1NUX0FHVF9CMQkJMHgwMGUwMDAwMAogI2RlZmluZSBGU0xfQ09SRU5FVF9SQ1dTUjhfSE9TVF9BR1RfQjIJCTB4MDAxMDAwMDAKKyNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1IxMV9FQzEJCQkweDAwYzAwMDAwIC8qIGJpdHMgMzYwLi4zNjEgKi8KKyNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1IxMV9FQzFfRk0xX0RUU0VDMQkweDAwMDAwMDAwCisjZGVmaW5lIEZTTF9DT1JFTkVUX1JDV1NSMTFfRUMxX0ZNMV9VU0IxCTB4MDA4MDAwMDAKKyNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1IxMV9FQzIJCQkweDAwMWMwMDAwIC8qIGJpdHMgMzYzLi4zNjUgKi8KKyNkZWZpbmUgRlNMX0NPUkVORVRfUkNXU1IxMV9FQzJfRk0yX0RUU0VDMQkweDAwMDAwMDAwCisjZGVmaW5lIEZTTF9DT1JFTkVUX1JDV1NSMTFfRUMyX0ZNMV9EVFNFQzIJMHgwMDA4MDAwMAorI2RlZmluZSBGU0xfQ09SRU5FVF9SQ1dTUjExX0VDMl9VU0IyCQkweDAwMTAwMDAwCiAJdTgJcmVzMThbMTkyXTsKIAl1MzIJc2NyYXRjaHJ3WzRdOwkvKiBTY3JhdGNoIFJlYWQvV3JpdGUgKi8KIAl1OAlyZXMxOVsyNDBdOwpAQCAtMTY5OCwxMCArMTc0MiwxNSBAQAogCXUzMglzZG1tYzJsaW9kbnI7CS8qIFNEL01NQyAyIExJT0ROICovCiAJdTMyCXNkbW1jM2xpb2RucjsJLyogU0QvTU1DIDMgTElPRE4gKi8KIAl1MzIJc2RtbWM0bGlvZG5yOwkvKiBTRC9NTUMgNCBMSU9ETiAqLwotCXUzMglybXVsaW9kbnI7CS8qIFJJTyBNZXNzYWdlIFVuaXQgTElPRE4gKi8KLQl1MzIJcmR1bGlvZG5yOwkvKiBSSU8gRG9vcmJlbGwgVW5pdCBMSU9ETiAqLwotCXUzMglycHd1bGlvZG5yOwkvKiBSSU8gUG9ydCBXcml0ZSBVbml0IExJT0ROICovCi0JdTgJcmVzMjJbNTJdOworCXUzMglyaW8xbWFpbnRsaW9kbnI7LyogUklPIDEgTWFpbnRlbmFuY2UgTElPRE4gKi8KKwl1MzIJcmlvMm1haW50bGlvZG5yOy8qIFJJTyAyIE1haW50ZW5hbmNlIExJT0ROICovCisJdTMyCXJpbzNtYWludGxpb2RucjsvKiBSSU8gMyBNYWludGVuYW5jZSBMSU9ETiAqLworCXUzMglyaW80bWFpbnRsaW9kbnI7LyogUklPIDQgTWFpbnRlbmFuY2UgTElPRE4gKi8KKwl1MzIJc2F0YTFsaW9kbnI7CS8qIFNBVEEgMSBMSU9ETiAqLworCXUzMglzYXRhMmxpb2RucjsJLyogU0FUQSAyIExJT0ROICovCisJdTMyCXNhdGEzbGlvZG5yOwkvKiBTQVRBIDMgTElPRE4gKi8KKwl1MzIJc2F0YTRsaW9kbnI7CS8qIFNBVEEgNCBMSU9ETiAqLworCXU4CXJlczIyWzMyXTsKIAl1MzIJZG1hMWxpb2RucjsJLyogRE1BIDEgTElPRE4gKi8KIAl1MzIJZG1hMmxpb2RucjsJLyogRE1BIDIgTElPRE4gKi8KIAl1MzIJZG1hM2xpb2RucjsJLyogRE1BIDMgTElPRE4gKi8KQEAgLTE3MzYsNiArMTc4NSwxMiBAQAogCXU4CXJlczM3WzM4MF07CiB9IGNjc3JfZ3VyX3Q7CiAKKy8qCisgKiBPbiBwNDA4MCB3ZSBoYXZlIGFuIExJT0ROIGZvciBtc2cgdW5pdCAocm11KSBidXQgbm90IG1haW50ZW5hbmNlCisgKiBldmVyeXRoaW5nIGFmdGVyIGhhcyBSTWFuIHRodXMgbXNnIHVuaXQgTElPRE4gaXMgdXNlZCBmb3IgbWFpbnRlbmFuY2UKKyAqLworI2RlZmluZSBybXVsaW9kbnIgcmlvMW1haW50bGlvZG5yCisKIHR5cGVkZWYgc3RydWN0IGNjc3JfY2xrIHsKIAl1MzIJY2xrYzBjc3I7CS8qIENvcmUgMCBDbG9jayBjb250cm9sL3N0YXR1cyAqLwogCXU4CXJlczFbMHgxY107CkBAIC0yMDA0LDM4ICsyMDU5LDEyNSBAQAogLyogU2VjdXJpdHkgRW5naW5lIEJsb2NrIChNUyA9IE1vc3QgU2lnLiwgTFMgPSBMZWFzdCBTaWcuKSAqLwogI2lmIENPTkZJR19TWVNfRlNMX1NFQ19DT01QQVQgPj0gNAogdHlwZWRlZiBzdHJ1Y3QgY2Nzcl9zZWMgewotCXU4CXJlczFbMHhmYTBdOworCXUzMglyZXMwOworCXUzMgltY2ZncjsJCS8qIE1hc3RlciBDRkcgUmVnaXN0ZXIgKi8KKwl1OAlyZXMxWzB4OF07CisJc3RydWN0IHsKKwkJdTMyCW1zOwkvKiBKb2IgUmluZyBMSU9ETiBSZWdpc3RlciwgTVMgKi8KKwkJdTMyCWxzOwkvKiBKb2IgUmluZyBMSU9ETiBSZWdpc3RlciwgTFMgKi8KKwl9IGpxbGlvZG5yWzRdOworCXU4CXJlczJbMHgzMF07CisJc3RydWN0IHsKKwkJdTMyCW1zOwkvKiBSVElDIExJT0ROIFJlZ2lzdGVyLCBNUyAqLworCQl1MzIJbHM7CS8qIFJUSUMgTElPRE4gUmVnaXN0ZXIsIExTICovCisJfSBydGljbGlvZG5yWzRdOworCXU4CXJlczNbMHgxY107CisJdTMyCWRlY29ycjsJCS8qIERFQ08gUmVxdWVzdCBSZWdpc3RlciAqLworCXN0cnVjdCB7CisJCXUzMgltczsJLyogREVDTyBMSU9ETiBSZWdpc3RlciwgTVMgKi8KKwkJdTMyCWxzOwkvKiBERUNPIExJT0ROIFJlZ2lzdGVyLCBMUyAqLworCX0gZGVjb2xpb2Rucls1XTsKKwl1OAlyZXM0WzB4NThdOworCXUzMglkYXI7CQkvKiBERUNPIEF2YWlsIFJlZ2lzdGVyICovCisJdTMyCWRycjsJCS8qIERFQ08gUmVzZXQgUmVnaXN0ZXIgKi8KKwl1OAlyZXM1WzB4ZTc4XTsKIAl1MzIJY3Jucl9tczsJLyogQ0hBIFJldmlzaW9uIE51bWJlciBSZWdpc3RlciwgTVMgKi8KIAl1MzIJY3Jucl9sczsJLyogQ0hBIFJldmlzaW9uIE51bWJlciBSZWdpc3RlciwgTFMgKi8KIAl1MzIJY3Rwcl9tczsJLyogQ29tcGlsZSBUaW1lIFBhcmFtZXRlcnMgUmVnaXN0ZXIsIE1TICovCi0jZGVmaW5lIFNFQ19DVFBSX01TX0FYSV9MSU9ETgkJMHgwODAwMDAwMAotI2RlZmluZSBTRUNfQ1RQUl9NU19RSQkJCTB4MDIwMDAwMDAKIAl1MzIJY3Rwcl9sczsJLyogQ29tcGlsZSBUaW1lIFBhcmFtZXRlcnMgUmVnaXN0ZXIsIExTICovCi0JdTgJcmVzMlsweDEwXTsKKwl1OAlyZXM2WzB4MTBdOwogCXUzMglmYXJfbXM7CQkvKiBGYXVsdCBBZGRyZXNzIFJlZ2lzdGVyLCBNUyAqLwogCXUzMglmYXJfbHM7CQkvKiBGYXVsdCBBZGRyZXNzIFJlZ2lzdGVyLCBMUyAqLwogCXUzMglmYWxyOwkJLyogRmF1bHQgQWRkcmVzcyBMSU9ETiBSZWdpc3RlciAqLwogCXUzMglmYWRyOwkJLyogRmF1bHQgQWRkcmVzcyBEZXRhaWwgUmVnaXN0ZXIgKi8KLQl1OAlyZXMzWzB4NF07CisJdTgJcmVzN1sweDRdOwogCXUzMgljc3RhOwkJLyogQ0FBTSBTdGF0dXMgUmVnaXN0ZXIgKi8KLQl1OAlyZXM0WzB4OF07CisJdTgJcmVzOFsweDhdOwogCXUzMglydmlkOwkJLyogUnVuIFRpbWUgSW50ZWdyaXR5IENoZWNraW5nIFZlcnNpb24gSUQgUmVnLiovCi0jZGVmaW5lIFNFQ19SVklEX01BCQkJMHgwZjAwMDAwMAogCXUzMgljY2J2aWQ7CQkvKiBDSEEgQ2x1c3RlciBCbG9jayBWZXJzaW9uIElEIFJlZ2lzdGVyICovCiAJdTMyCWNoYXZpZF9tczsJLyogQ0hBIFZlcnNpb24gSUQgUmVnaXN0ZXIsIE1TICovCiAJdTMyCWNoYXZpZF9sczsJLyogQ0hBIFZlcnNpb24gSUQgUmVnaXN0ZXIsIExTICovCiAJdTMyCWNoYW51bV9tczsJLyogQ0hBIE51bWJlciBSZWdpc3RlciwgTVMgKi8KKwl1MzIJY2hhbnVtX2xzOwkvKiBDSEEgTnVtYmVyIFJlZ2lzdGVyLCBMUyAqLworCXUzMglzZWN2aWRfbXM7CS8qIFNFQyBWZXJzaW9uIElEIFJlZ2lzdGVyLCBNUyAqLworCXUzMglzZWN2aWRfbHM7CS8qIFNFQyBWZXJzaW9uIElEIFJlZ2lzdGVyLCBMUyAqLworCXU4CXJlczlbMHg2MDIwXTsKKwl1MzIJcWlsY3JfbXM7CS8qIFF1ZXVlIEludGVyZmFjZSBMSU9ETiBDRkcgUmVnaXN0ZXIsIE1TICovCisJdTMyCXFpbGNyX2xzOwkvKiBRdWV1ZSBJbnRlcmZhY2UgTElPRE4gQ0ZHIFJlZ2lzdGVyLCBMUyAqLworCXU4CXJlczEwWzB4OGZkOF07Cit9IGNjc3Jfc2VjX3Q7CisKKyNkZWZpbmUgU0VDX0NUUFJfTVNfQVhJX0xJT0ROCQkweDA4MDAwMDAwCisjZGVmaW5lIFNFQ19DVFBSX01TX1FJCQkJMHgwMjAwMDAwMAorI2RlZmluZSBTRUNfUlZJRF9NQQkJCTB4MGYwMDAwMDAKICNkZWZpbmUgU0VDX0NIQU5VTV9NU19KUU5VTV9NQVNLCTB4ZjAwMDAwMDAKICNkZWZpbmUgU0VDX0NIQU5VTV9NU19KUU5VTV9TSElGVAkyOAogI2RlZmluZSBTRUNfQ0hBTlVNX01TX0RFQ09OVU1fTUFTSwkweDBmMDAwMDAwCiAjZGVmaW5lIFNFQ19DSEFOVU1fTVNfREVDT05VTV9TSElGVAkyNAotCXUzMgljaGFudW1fbHM7CS8qIENIQSBOdW1iZXIgUmVnaXN0ZXIsIExTICovCi0JdTMyCWNhYW12aWRfbXM7CS8qIENBQU0gVmVyc2lvbiBJRCBSZWdpc3RlciwgTVMgKi8KLQl1MzIJY2FhbXZpZF9sczsJLyogQ0FBTSBWZXJzaW9uIElEIFJlZ2lzdGVyLCBMUyAqLwotCXU4CXJlczVbMHhmMDAwXTsKLX0gY2Nzcl9zZWNfdDsKICNlbmRpZgogCit0eXBlZGVmIHN0cnVjdCBjY3NyX3FtYW4geworCXN0cnVjdCB7CisJCXUzMglxY3NwX2xpb19jZmc7CS8qIDB4MCAtIFNXIFBvcnRhbCBuIExJTyBjZmcgKi8KKwkJdTMyCXFjc3BfaW9fY2ZnOwkvKiAweDQgLSBTVyBQb3J0YWwgbiBJTyBjZmcgKi8KKwkJdTMyCXJlczsKKwkJdTMyCXFjc3BfZGRfY2ZnOwkvKiAweGMgLSBTVyBQb3J0YWwgbiBEeW5hbWljIERlYnVnIGNmZyAqLworCX0gcWNzcFszMl07CisKKwkvKiBOb3QgYWN0dWFsbHkgcmVzZXJ2ZWQsIGJ1dCBpcnJlbGV2YW50IHRvIHUtYm9vdCAqLworCXU4CXJlc1sweGJmOCAtIDB4MjAwXTsKKwl1MzIJaXBfcmV2XzE7CisJdTMyCWlwX3Jldl8yOworCXUzMglmcWRfYmFyZTsJLyogRlFEIEV4dGVuZGVkIEJhc2UgQWRkciBSZWdpc3RlciAqLworCXUzMglmcWRfYmFyOwkvKiBGUUQgQmFzZSBBZGRyIFJlZ2lzdGVyICovCisJdTgJcmVzMVsweDhdOworCXUzMglmcWRfYXI7CQkvKiBGUUQgQXR0cmlidXRlcyBSZWdpc3RlciAqLworCXU4CXJlczJbMHhjXTsKKwl1MzIJcGZkcl9iYXJlOwkvKiBQRkRSIEV4dGVuZGVkIEJhc2UgQWRkciBSZWdpc3RlciAqLworCXUzMglwZmRyX2JhcjsJLyogUEZEUiBCYXNlIEFkZHIgUmVnaXN0ZXIgKi8KKwl1OAlyZXMzWzB4OF07CisJdTMyCXBmZHJfYXI7CS8qIFBGRFIgQXR0cmlidXRlcyBSZWdpc3RlciAqLworCXU4CXJlczRbMHg0Y107CisJdTMyCXFjc3BfYmFyZTsJLyogUUNTUCBFeHRlbmRlZCBCYXNlIEFkZHIgUmVnaXN0ZXIgKi8KKwl1MzIJcWNzcF9iYXI7CS8qIFFDU1AgQmFzZSBBZGRyIFJlZ2lzdGVyICovCisJdTgJcmVzNVsweDc4XTsKKwl1MzIJY2lfc2NoZWRfY2ZnOwkvKiBJbml0aWF0b3IgU2NoZWR1bGluZyBDb25maWd1cmF0aW9uICovCisJdTMyCXNyY2lkcjsJCS8qIFNvdXJjZSBJRCBSZWdpc3RlciAqLworCXUzMglsaW9kbnI7CQkvKiBMSU9ETiBSZWdpc3RlciAqLworCXU4CXJlczZbNF07CisJdTMyCWNpX3JsbV9jZmc7CS8qIEluaXRpYXRvciBSZWFkIExhdGVuY3kgTW9uaXRvciBDZmcgKi8KKwl1MzIJY2lfcmxtX2F2ZzsJLyogSW5pdGlhdG9yIFJlYWQgTGF0ZW5jeSBNb25pdG9yIEF2ZyAqLworCXU4CXJlczdbMHgyZThdOworfSBjY3NyX3FtYW5fdDsKKwordHlwZWRlZiBzdHJ1Y3QgY2Nzcl9ibWFuIHsKKwkvKiBOb3QgYWN0dWFsbHkgcmVzZXJ2ZWQsIGJ1dCBpcnJlbGV2YW50IHRvIHUtYm9vdCAqLworCXU4CXJlc1sweGJmOF07CisJdTMyCWlwX3Jldl8xOworCXUzMglpcF9yZXZfMjsKKwl1MzIJZmJwcl9iYXJlOwkvKiBGQlBSIEV4dGVuZGVkIEJhc2UgQWRkciBSZWdpc3RlciAqLworCXUzMglmYnByX2JhcjsJLyogRkJQUiBCYXNlIEFkZHIgUmVnaXN0ZXIgKi8KKwl1OAlyZXMxWzB4OF07CisJdTMyCWZicHJfYXI7CS8qIEZCUFIgQXR0cmlidXRlcyBSZWdpc3RlciAqLworCXU4CXJlczJbMHhmMF07CisJdTMyCXNyY2lkcjsJCS8qIFNvdXJjZSBJRCBSZWdpc3RlciAqLworCXUzMglsaW9kbnI7CQkvKiBMSU9ETiBSZWdpc3RlciAqLworCXU4CXJlczdbMHgyZjRdOworfSBjY3NyX2JtYW5fdDsKKwordHlwZWRlZiBzdHJ1Y3QgY2Nzcl9wbWUgeworCXU4CXJlczBbMHg4MDRdOworCXUzMglsaW9kbmJyOwkvKiBMSU9ETiBCYXNlIFJlZ2lzdGVyICovCisJdTgJcmVzMVsweDFmOF07CisJdTMyCXNyY2lkcjsJCS8qIFNvdXJjZSBJRCBSZWdpc3RlciAqLworCXU4CXJlczJbOF07CisJdTMyCWxpb2RucjsJCS8qIExJT0ROIFJlZ2lzdGVyICovCisJdTgJcmVzM1sweDFlOF07CisJdTMyCXBtX2lwX3Jldl8xOwkvKiBQTUUgSVAgQmxvY2sgUmV2aXNpb24gUmVnIDEqLworCXUzMglwbV9pcF9yZXZfMjsJLyogUE1FIElQIEJsb2NrIFJldmlzaW9uIFJlZyAxKi8KKwl1OAlyZXM0WzB4NDAwXTsKK30gY2Nzcl9wbWVfdDsKKwogI2lmZGVmIENPTkZJR19GU0xfQ09SRU5FVAogI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX0NDTV9PRkZTRVQJMHgwMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9ERFJfT0ZGU0VUCQkweDgwMDAKQEAgLTIwNDQsMTYgKzIxODYsNDEgQEAKICNkZWZpbmUgQ09ORklHX1NZU19GU0xfQ09SRU5FVF9SQ1BNX09GRlNFVAkweEUyMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfRlNMX0NPUkVORVRfU0VSREVTX09GRlNFVAkweEVBMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfRlNMX0NQQ19PRkZTRVQJCTB4MTAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19NUEM4NXh4X0RNQV9PRkZTRVQJCTB4MTAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9ETUExX09GRlNFVAkJMHgxMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NUEM4NXh4X0RNQTJfT0ZGU0VUCQkweDEwMTAwMAorI2RlZmluZSBDT05GSUdfU1lTX01QQzg1eHhfRE1BX09GRlNFVAkJQ09ORklHX1NZU19NUEM4NXh4X0RNQTFfT0ZGU0VUCiAjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9FU1BJX09GRlNFVAkJMHgxMTAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NUEM4NXh4X0VTREhDX09GRlNFVAkJMHgxMTQwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NUEM4NXh4X0xCQ19PRkZTRVQJCTB4MTI0MDAwCiAjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9HUElPX09GRlNFVAkJMHgxMzAwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19NUEM4NXh4X1VTQl9PRkZTRVQJCTB4MjEwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9QQ0lFMV9PRkZTRVQJCTB4MjAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9QQ0lFMl9PRkZTRVQJCTB4MjAxMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9QQ0lFM19PRkZTRVQJCTB4MjAyMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9QQ0lFNF9PRkZTRVQJCTB4MjAzMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9VU0IxX09GRlNFVAkJMHgyMTAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19NUEM4NXh4X1VTQjJfT0ZGU0VUCQkweDIxMTAwMAorI2RlZmluZSBDT05GSUdfU1lTX01QQzg1eHhfVVNCX09GRlNFVAkJQ09ORklHX1NZU19NUEM4NXh4X1VTQjFfT0ZGU0VUCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9TQVRBMV9PRkZTRVQJCTB4MjIwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9TQVRBMl9PRkZTRVQJCTB4MjIxMDAwCiAjZGVmaW5lIENPTkZJR19TWVNfRlNMX1NFQ19PRkZTRVQJCTB4MzAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0NPUkVORVRfUE1FX09GRlNFVAkweDMxNjAwMAogI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX1FNQU5fT0ZGU0VUCTB4MzE4MDAwCiAjZGVmaW5lIENPTkZJR19TWVNfRlNMX0NPUkVORVRfQk1BTl9PRkZTRVQJMHgzMWEwMDAKLSNkZWZpbmUgQ09ORklHX1NZU19UU0VDMV9PRkZTRVQJCQkweDRlMDAwMCAvKiBGTTFARFRTRUMwICovCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9PRkZTRVQJCTB4NDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9SWDBfMUdfT0ZGU0VUCTB4NDg4MDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9SWDFfMUdfT0ZGU0VUCTB4NDg5MDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9SWDJfMUdfT0ZGU0VUCTB4NDhhMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9SWDNfMUdfT0ZGU0VUCTB4NDhiMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9SWDRfMUdfT0ZGU0VUCTB4NDhjMDAwCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9SWDBfMTBHX09GRlNFVAkweDQ5MDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTFfRFRTRUMxX09GRlNFVAkweDRlMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfT0ZGU0VUCQkweDUwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfUlgwXzFHX09GRlNFVAkweDU4ODAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfUlgxXzFHX09GRlNFVAkweDU4OTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfUlgyXzFHX09GRlNFVAkweDU4YTAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfUlgzXzFHX09GRlNFVAkweDU4YjAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfUlg0XzFHX09GRlNFVAkweDU4YzAwMAorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfUlgwXzEwR19PRkZTRVQJMHg1OTAwMDAKICNlbHNlCiAjZGVmaW5lIENPTkZJR19TWVNfTVBDODV4eF9FQ01fT0ZGU0VUCQkweDAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19NUEM4NXh4X0REUl9PRkZTRVQJCTB4MjAwMApAQCAtMjA5OCw2ICsyMjY1LDggQEAKIAkoQ09ORklHX1NZU19JTU1SICsgQ09ORklHX1NZU19GU0xfQ09SRU5FVF9RTUFOX09GRlNFVCkKICNkZWZpbmUgQ09ORklHX1NZU19GU0xfQ09SRU5FVF9CTUFOX0FERFIgXAogCShDT05GSUdfU1lTX0lNTVIgKyBDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX0JNQU5fT0ZGU0VUKQorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX1BNRV9BRERSIFwKKwkoQ09ORklHX1NZU19JTU1SICsgQ09ORklHX1NZU19GU0xfQ09SRU5FVF9QTUVfT0ZGU0VUKQogI2RlZmluZSBDT05GSUdfU1lTX01QQzg1eHhfR1VUU19BRERSIFwKIAkoQ09ORklHX1NZU19JTU1SICsgQ09ORklHX1NZU19NUEM4NXh4X0dVVFNfT0ZGU0VUKQogI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX0NDTV9BRERSIFwKQEAgLTIxNDYsNiArMjMxNSwxMiBAQAogCShDT05GSUdfU1lTX0lNTVIgKyBDT05GSUdfU1lTX01QQzg1eHhfVVNCX09GRlNFVCkKICNkZWZpbmUgQ09ORklHX1NZU19GU0xfU0VDX0FERFIgXAogCShDT05GSUdfU1lTX0lNTVIgKyBDT05GSUdfU1lTX0ZTTF9TRUNfT0ZGU0VUKQorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTFfQUREUiBcCisJKENPTkZJR19TWVNfSU1NUiArIENPTkZJR19TWVNfRlNMX0ZNMV9PRkZTRVQpCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0ZNMV9EVFNFQzFfQUREUiBcCisJKENPTkZJR19TWVNfSU1NUiArIENPTkZJR19TWVNfRlNMX0ZNMV9EVFNFQzFfT0ZGU0VUKQorI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9GTTJfQUREUiBcCisJKENPTkZJR19TWVNfSU1NUiArIENPTkZJR19TWVNfRlNMX0ZNMl9PRkZTRVQpCiAKICNkZWZpbmUgQ09ORklHX1NZU19QQ0kxX0FERFIgXAogCShDT05GSUdfU1lTX0lNTVIgKyBDT05GSUdfU1lTX01QQzg1eHhfUENJMV9PRkZTRVQpCkBAIC0yMTU3LDYgKzIzMzIsOCBAQAogCShDT05GSUdfU1lTX0lNTVIgKyBDT05GSUdfU1lTX01QQzg1eHhfUENJRTJfT0ZGU0VUKQogI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0FERFIgXAogCShDT05GSUdfU1lTX0lNTVIgKyBDT05GSUdfU1lTX01QQzg1eHhfUENJRTNfT0ZGU0VUKQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUU0X0FERFIgXAorCShDT05GSUdfU1lTX0lNTVIgKyBDT05GSUdfU1lTX01QQzg1eHhfUENJRTRfT0ZGU0VUKQogCiAjZGVmaW5lIFRTRUNfQkFTRV9BRERSCQkoQ09ORklHX1NZU19JTU1SICsgQ09ORklHX1NZU19UU0VDMV9PRkZTRVQpCiAjZGVmaW5lIE1ESU9fQkFTRV9BRERSCQkoQ09ORklHX1NZU19JTU1SICsgQ09ORklHX1NZU19NRElPMV9PRkZTRVQpCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmggYi9hcmNoL3Bvd2VycGMvaW5jbHVkZS9hc20vcHJvY2Vzc29yLmgKaW5kZXggODlmMjgzYS4uODRhMWUyZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2luY2x1ZGUvYXNtL3Byb2Nlc3Nvci5oCisrKyBiL2FyY2gvcG93ZXJwYy9pbmNsdWRlL2FzbS9wcm9jZXNzb3IuaApAQCAtNDk1LDYgKzQ5NSw3IEBACiAjZGVmaW5lICAgTDFDU1IxX0lDRkkJCTB4MDAwMDAwMDIJLyogSW5zdHJ1Y3Rpb24gQ2FjaGUgRmxhc2ggSW52YWxpZGF0ZSAqLwogI2RlZmluZSAgIEwxQ1NSMV9JQ0UJCTB4MDAwMDAwMDEJLyogSW5zdHJ1Y3Rpb24gQ2FjaGUgRW5hYmxlICovCiAjZGVmaW5lIFNQUk5fTDFDU1IyCTB4MjVlCS8qIEwxIERhdGEgQ2FjaGUgQ29udHJvbCBhbmQgU3RhdHVzIFJlZ2lzdGVyIDIgKi8KKyNkZWZpbmUgICBMMUNTUjJfRENXUwkJMHg0MDAwMDAwMAkvKiBEYXRhIENhY2hlIFdyaXRlIFNoYWRvdyAqLwogI2RlZmluZSBTUFJOX0wyQ1NSMAkweDNmOQkvKiBMMiBEYXRhIENhY2hlIENvbnRyb2wgYW5kIFN0YXR1cyBSZWdpc3RlciAwICovCiAjZGVmaW5lICAgTDJDU1IwX0wyRQkJMHg4MDAwMDAwMAkvKiBMMiBDYWNoZSBFbmFibGUgKi8KICNkZWZpbmUgICBMMkNTUjBfTDJQRQkJMHg0MDAwMDAwMAkvKiBMMiBDYWNoZSBQYXJpdHkvRUNDIEVuYWJsZSAqLwpkaWZmIC0tZ2l0IGEvYXJjaC9wb3dlcnBjL2xpYi9ib2FyZC5jIGIvYXJjaC9wb3dlcnBjL2xpYi9ib2FyZC5jCmluZGV4IDdiMDlmYjUuLjBlMDBkODYgMTAwNjQ0Ci0tLSBhL2FyY2gvcG93ZXJwYy9saWIvYm9hcmQuYworKysgYi9hcmNoL3Bvd2VycGMvbGliL2JvYXJkLmMKQEAgLTE2OSw3ICsxNjksNyBAQAogc3RhdGljIGludCBpbml0X2JhdWRyYXRlICh2b2lkKQogewogCWNoYXIgdG1wWzY0XTsJLyogbG9uZyBlbm91Z2ggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotCWludCBpID0gZ2V0ZW52X3IgKCJiYXVkcmF0ZSIsIHRtcCwgc2l6ZW9mICh0bXApKTsKKwlpbnQgaSA9IGdldGVudl9mKCJiYXVkcmF0ZSIsIHRtcCwgc2l6ZW9mICh0bXApKTsKIAogCWdkLT5iYXVkcmF0ZSA9IChpID4gMCkKIAkJCT8gKGludCkgc2ltcGxlX3N0cnRvdWwgKHRtcCwgTlVMTCwgMTApCkBAIC00NDIsNyArNDQyLDcgQEAKIAkvKgogCSAqIHJlc2VydmUgcHJvdGVjdGVkIFJBTQogCSAqLwotCWkgPSBnZXRlbnZfciAoInByYW0iLCAoY2hhciAqKXRtcCwgc2l6ZW9mICh0bXApKTsKKwlpID0gZ2V0ZW52X2YoInByYW0iLCAoY2hhciAqKXRtcCwgc2l6ZW9mICh0bXApKTsKIAlyZWcgPSAoaSA+IDApID8gc2ltcGxlX3N0cnRvdWwgKChjb25zdCBjaGFyICopdG1wLCBOVUxMLCAxMCkgOiBDT05GSUdfUFJBTTsKIAlhZGRyIC09IChyZWcgPDwgMTApOwkJLyogc2l6ZSBpcyBpbiBrQiAqLwogCWRlYnVnICgiUmVzZXJ2aW5nICVsZGsgZm9yIHByb3RlY3RlZCBSQU0gYXQgJTA4bHhcbiIsIHJlZywgYWRkcik7CkBAIC03OTAsNyArNzkwLDcgQEAKIAkgKiBGaWxsIGluIG1pc3NpbmcgZmllbGRzIG9mIGJkX2luZm8uCiAJICogV2UgZG8gdGhpcyBoZXJlLCB3aGVyZSB3ZSBoYXZlICJub3JtYWwiIGFjY2VzcyB0byB0aGUKIAkgKiBlbnZpcm9ubWVudDsgd2UgdXNlZCB0byBkbyB0aGlzIHN0aWxsIHJ1bm5pbmcgZnJvbSBST00sCi0JICogd2hlcmUgaGFkIHRvIHVzZSBnZXRlbnZfcigpLCB3aGljaCBjYW4gYmUgcHJldHR5IHNsb3cgd2hlbgorCSAqIHdoZXJlIGhhZCB0byB1c2UgZ2V0ZW52X2YoKSwgd2hpY2ggY2FuIGJlIHByZXR0eSBzbG93IHdoZW4KIAkgKiB0aGUgZW52aXJvbm1lbnQgaXMgaW4gRUVQUk9NLgogCSAqLwogCmRpZmYgLS1naXQgYS9hcmNoL3Bvd2VycGMvbGliL2Jvb3RtLmMgYi9hcmNoL3Bvd2VycGMvbGliL2Jvb3RtLmMKaW5kZXggMzA2NDEyMS4uNGMzZTJmZSAxMDA2NDQKLS0tIGEvYXJjaC9wb3dlcnBjL2xpYi9ib290bS5jCisrKyBiL2FyY2gvcG93ZXJwYy9saWIvYm9vdG0uYwpAQCAtMjUzLDcgKzI1Myw3IEBACiAJaWYgKHJldCkKIAkJcmV0dXJuIHJldDsKIAotI2lmIGRlZmluZWQoQ09ORklHX09GX0xJQkZEVCkKKyNpZiBkZWZpbmVkKENPTkZJR19PRl9MSUJGRFQpICYmIGRlZmluZWQoQ09ORklHX1NZU19CT09UTUFQU1opCiAJcmV0ID0gYm9vdF9yZWxvY2F0ZV9mZHQobG1iLCBib290bWFwX2Jhc2UsIG9mX2ZsYXRfdHJlZSwgJm9mX3NpemUpOwogCWlmIChyZXQpCiAJCXJldHVybiByZXQ7CkBAIC0yOTIsNyArMjkyLDcgQEAKIAkJaWYgKCppbml0cmRfc3RhcnQgJiYgKmluaXRyZF9lbmQpCiAJCQlmZHRfaW5pdHJkKCpvZl9mbGF0X3RyZWUsICppbml0cmRfc3RhcnQsICppbml0cmRfZW5kLCAxKTsKIAl9Ci0jZW5kaWYJLyogQ09ORklHX09GX0xJQkZEVCAqLworI2VuZGlmCS8qIENPTkZJR19PRl9MSUJGRFQgJiYgQ09ORklHX1NZU19CT09UTUFQU1ogKi8KIAlyZXR1cm4gMDsKIH0KIApkaWZmIC0tZ2l0IGEvYXJjaC9zcGFyYy9saWIvYm9hcmQuYyBiL2FyY2gvc3BhcmMvbGliL2JvYXJkLmMKaW5kZXggYjc3NmMyMS4uNGY2OTcwOSAxMDA2NDQKLS0tIGEvYXJjaC9zcGFyYy9saWIvYm9hcmQuYworKysgYi9hcmNoL3NwYXJjL2xpYi9ib2FyZC5jCkBAIC04OCw3ICs4OCw3IEBACiBzdGF0aWMgaW50IGluaXRfYmF1ZHJhdGUodm9pZCkKIHsKIAljaGFyIHRtcFs2NF07CQkvKiBsb25nIGVub3VnaCBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzICovCi0JaW50IGkgPSBnZXRlbnZfcigiYmF1ZHJhdGUiLCB0bXAsIHNpemVvZih0bXApKTsKKwlpbnQgaSA9IGdldGVudl9mKCJiYXVkcmF0ZSIsIHRtcCwgc2l6ZW9mKHRtcCkpOwogCiAJZ2QtPmJhdWRyYXRlID0gKGkgPiAwKQogCSAgICA/IChpbnQpc2ltcGxlX3N0cnRvdWwodG1wLCBOVUxMLCAxMCkKZGlmZiAtLWdpdCBhL2JvYXJkL01hcnZlbGwvZGI2NDM2MC9tdl9ldGguYyBiL2JvYXJkL01hcnZlbGwvZGI2NDM2MC9tdl9ldGguYwppbmRleCBkMWFjMGM1Li4zMDMwNGIwIDEwMDY0NAotLS0gYS9ib2FyZC9NYXJ2ZWxsL2RiNjQzNjAvbXZfZXRoLmMKKysrIGIvYm9hcmQvTWFydmVsbC9kYjY0MzYwL212X2V0aC5jCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAkJCXJldHVybjsKIAkJfQogCi0JCXRlbXAgPSBnZXRlbnZfciAocywgYnVmLCBzaXplb2YgKGJ1ZikpOworCQl0ZW1wID0gZ2V0ZW52X2YocywgYnVmLCBzaXplb2YgKGJ1ZikpOwogCQlzID0gKHRlbXAgPiAwKSA/IGJ1ZiA6IE5VTEw7CiAKICNpZmRlZiBERUJVRwpAQCAtMzUxLDcgKzM1MSw3IEBACiAJCQlyZXR1cm47CiAJCX0KIAotCQl0ZW1wID0gZ2V0ZW52X3IgKHMsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKKwkJdGVtcCA9IGdldGVudl9mKHMsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKIAkJcyA9ICh0ZW1wID4gMCkgPyBidWYgOiBOVUxMOwogCiAjaWZkZWYgREVCVUcKZGlmZiAtLWdpdCBhL2JvYXJkL01hcnZlbGwvZGI2NDQ2MC9tdl9ldGguYyBiL2JvYXJkL01hcnZlbGwvZGI2NDQ2MC9tdl9ldGguYwppbmRleCA1OGI2M2EzLi5jZDlkNWE0IDEwMDY0NAotLS0gYS9ib2FyZC9NYXJ2ZWxsL2RiNjQ0NjAvbXZfZXRoLmMKKysrIGIvYm9hcmQvTWFydmVsbC9kYjY0NDYwL212X2V0aC5jCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAkJCXJldHVybjsKIAkJfQogCi0JCXRlbXAgPSBnZXRlbnZfciAocywgYnVmLCBzaXplb2YgKGJ1ZikpOworCQl0ZW1wID0gZ2V0ZW52X2YocywgYnVmLCBzaXplb2YgKGJ1ZikpOwogCQlzID0gKHRlbXAgPiAwKSA/IGJ1ZiA6IE5VTEw7CiAKICNpZmRlZiBERUJVRwpAQCAtMzUwLDcgKzM1MCw3IEBACiAJCQlyZXR1cm47CiAJCX0KIAotCQl0ZW1wID0gZ2V0ZW52X3IgKHMsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKKwkJdGVtcCA9IGdldGVudl9mKHMsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKIAkJcyA9ICh0ZW1wID4gMCkgPyBidWYgOiBOVUxMOwogCiAjaWZkZWYgREVCVUcKZGlmZiAtLWdpdCBhL2JvYXJkL2F2bmV0L2Z4MTJtbS9meDEybW0uYyBiL2JvYXJkL2F2bmV0L2Z4MTJtbS9meDEybW0uYwppbmRleCA0ODU4NjQ1Li5lNjcxYTdiIDEwMDY0NAotLS0gYS9ib2FyZC9hdm5ldC9meDEybW0vZngxMm1tLmMKKysrIGIvYm9hcmQvYXZuZXQvZngxMm1tL2Z4MTJtbS5jCkBAIC0zNCw3ICszNCw3IEBACiB7CiAJY2hhciB0bXBbNjRdOwogCWNoYXIgKnMsICplOwotCWludCBpID0gZ2V0ZW52X3IoInNlcmlhbCIsIHRtcCwgc2l6ZW9mKHRtcCkpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCIsIHRtcCwgc2l6ZW9mKHRtcCkpOwogCiAJaWYgKGkgPCAwKSB7CiAJCXByaW50ZigiQXZuZXQgVmlydGV4NCBGWDEyIHdpdGggbm8gc2VyaWFsICMiKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2NvbGlicmlfcHhhMjcwL01ha2VmaWxlIGIvYm9hcmQvY29saWJyaV9weGEyNzAvTWFrZWZpbGUKaW5kZXggNDRkNzNjYy4uYWU1NzBlMSAxMDA2NDQKLS0tIGEvYm9hcmQvY29saWJyaV9weGEyNzAvTWFrZWZpbGUKKysrIGIvYm9hcmQvY29saWJyaV9weGEyNzAvTWFrZWZpbGUKQEAgLTIxLDI1ICsyMSwyOSBAQAogCiBpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKIAotTElCCT0gbGliJChCT0FSRCkuYQorTElCCT0gJChvYmopbGliJChCT0FSRCkuYQogCi1PQkpTCTo9IGNvbGlicmlfcHhhMjcwLm8KK0NPQkpTCTo9IGNvbGlicmlfcHhhMjcwLm8KIFNPQkpTCTo9IGxvd2xldmVsX2luaXQubwogCi0kKExJQik6CSQoT0JKUykgJChTT0JKUykKLQkkKEFSKSBjcnYgJEAgJChPQkpTKSAkKFNPQkpTKQorU1JDUwk6PSAkKFNPQkpTOi5vPS5TKSAkKENPQkpTOi5vPS5jKQorT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUykpCitTT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChTT0JKUykpCisKKyQoTElCKToJJChvYmopLmRlcGVuZCAkKE9CSlMpICQoU09CSlMpCisJJChBUikgJChBUkZMQUdTKSAkQCAkKE9CSlMpICQoU09CSlMpCiAKIGNsZWFuOgogCXJtIC1mICQoU09CSlMpICQoT0JKUykKIAogZGlzdGNsZWFuOgljbGVhbgotCXJtIC1mICQoTElCKSBjb3JlICouYmFrIC5kZXBlbmQKKwlybSAtZiAkKExJQikgY29yZSAqLmJhayAkKG9iaikuZGVwZW5kCiAKICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKIAotLmRlcGVuZDoJTWFrZWZpbGUgJChTT0JKUzoubz0uUykgJChPQkpTOi5vPS5jKQotCQkkKENDKSAtTSAkKENQUEZMQUdTKSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpID4gJEAKKyMgZGVmaW5lcyAkKG9iaikuZGVwZW5kIHRhcmdldAoraW5jbHVkZSAkKFNSQ1RSRUUpL3J1bGVzLm1rCiAKLS1pbmNsdWRlIC5kZXBlbmQKK3NpbmNsdWRlICQob2JqKS5kZXBlbmQKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYm9hcmQvY29saWJyaV9weGEyNzAvY29saWJyaV9weGEyNzAuYyBiL2JvYXJkL2NvbGlicmlfcHhhMjcwL2NvbGlicmlfcHhhMjcwLmMKaW5kZXggZDM4MjJmMC4uODRlYzM4ZSAxMDA2NDQKLS0tIGEvYm9hcmQvY29saWJyaV9weGEyNzAvY29saWJyaV9weGEyNzAuYworKysgYi9ib2FyZC9jb2xpYnJpX3B4YTI3MC9jb2xpYnJpX3B4YTI3MC5jCkBAIC0yMSw2ICsyMSw3IEBACiAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPG5ldGRldi5oPgogCiBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvY3JheS9MMS9MMS5jIGIvYm9hcmQvY3JheS9MMS9MMS5jCmluZGV4IDE2NTZlOGEuLjMzZjIwODkgMTAwNjQ0Ci0tLSBhL2JvYXJkL2NyYXkvTDEvTDEuYworKysgYi9ib2FyZC9jcmF5L0wxL0wxLmMKQEAgLTI0NSw3ICsyNDUsNyBAQAogCXVpbnQgKnBlbmQgPSAodWludCAqKSBMMV9NRU1TSVpFOwogCXVpbnQgKnA7CiAKLQlpZiAoZ2V0ZW52X3IoImJvb3RlZCIsTlVMTCwwKSA8PSAwKQorCWlmIChnZXRlbnZfZigiYm9vdGVkIixOVUxMLDApIDw9IDApCiAJewogCQlwcmludGYgKCJ0ZXN0ZHJhbS4uIik7CiAJLypBQSovCmRpZmYgLS1naXQgYS9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL1BQQ2hhbWVsZW9uRVZCLmMgYi9ib2FyZC9kYXZlL1BQQ2hhbWVsZW9uRVZCL1BQQ2hhbWVsZW9uRVZCLmMKaW5kZXggNmJjNzBlZi4uOGUyNjk5NiAxMDA2NDQKLS0tIGEvYm9hcmQvZGF2ZS9QUENoYW1lbGVvbkVWQi9QUENoYW1lbGVvbkVWQi5jCisrKyBiL2JvYXJkL2RhdmUvUFBDaGFtZWxlb25FVkIvUFBDaGFtZWxlb25FVkIuYwpAQCAtMTgzLDcgKzE4Myw3IEBACiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvYWRjaW9wL2FkY2lvcC5jIGIvYm9hcmQvZXNkL2FkY2lvcC9hZGNpb3AuYwppbmRleCA2M2FhZjJjLi44ZTAwNzg1IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvYWRjaW9wL2FkY2lvcC5jCisrKyBiL2JvYXJkL2VzZC9hZGNpb3AvYWRjaW9wLmMKQEAgLTYyLDcgKzYyLDcgQEAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mIChzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2FwYzQwNS9hcGM0MDUuYyBiL2JvYXJkL2VzZC9hcGM0MDUvYXBjNDA1LmMKaW5kZXggYjU4YzFlYi4uNTY0ZWUwMCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2FwYzQwNS9hcGM0MDUuYworKysgYi9ib2FyZC9lc2QvYXBjNDA1L2FwYzQwNS5jCkBAIC00MDQsNyArNDA0LDcgQEAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIAogCXB1dHMgKCJCb2FyZDogIik7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9hcjQwNS9hcjQwNS5jIGIvYm9hcmQvZXNkL2FyNDA1L2FyNDA1LmMKaW5kZXggMjFiMjQzMi4uODg3OWZhZiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2FyNDA1L2FyNDA1LmMKKysrIGIvYm9hcmQvZXNkL2FyNDA1L2FyNDA1LmMKQEAgLTE1MSw3ICsxNTEsNyBAQAogCWludCBpbmRleDsKIAlpbnQgbGVuOwogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mIChzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOwogCWNvbnN0IHVuc2lnbmVkIGNoYXIgKmZwZ2E7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2FzaDQwNS9hc2g0MDUuYyBiL2JvYXJkL2VzZC9hc2g0MDUvYXNoNDA1LmMKaW5kZXggMDNjNDA5OC4uZWEyODA5MCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2FzaDQwNS9hc2g0MDUuYworKysgYi9ib2FyZC9lc2QvYXNoNDA1L2FzaDQwNS5jCkBAIC0xNzMsNyArMTczLDcgQEAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIAogCXB1dHMgKCJCb2FyZDogIik7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jYW5idC9jYW5idC5jIGIvYm9hcmQvZXNkL2NhbmJ0L2NhbmJ0LmMKaW5kZXggYmZlYzU0OC4uMGQyZDdmMSAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NhbmJ0L2NhbmJ0LmMKKysrIGIvYm9hcmQvZXNkL2NhbmJ0L2NhbmJ0LmMKQEAgLTE1Nyw3ICsxNTcsNyBAQAogCWludCBpbmRleDsKIAlpbnQgbGVuOwogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mIChzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NtczcwMC9jbXM3MDAuYyBiL2JvYXJkL2VzZC9jbXM3MDAvY21zNzAwLmMKaW5kZXggMjAzNDZlMS4uZGNkNDlkNCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NtczcwMC9jbXM3MDAuYworKysgYi9ib2FyZC9lc2QvY21zNzAwL2NtczcwMC5jCkBAIC05Niw3ICs5Niw3IEBACiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCi0JaWYgKGdldGVudl9yKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSkgID09IC0xKSB7CisJaWYgKGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSkgID09IC0xKSB7CiAJCXB1dHMgKCIjIyMgTm8gSFcgSUQgLSBhc3N1bWluZyBDTVM3MDAiKTsKIAl9IGVsc2UgewogCQlwdXRzKHN0cik7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTJkcC9jcGNpMmRwLmMgYi9ib2FyZC9lc2QvY3BjaTJkcC9jcGNpMmRwLmMKaW5kZXggMDA0NTZhNy4uZWNmY2Y1OSAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2NwY2kyZHAvY3BjaTJkcC5jCisrKyBiL2JvYXJkL2VzZC9jcGNpMmRwL2NwY2kyZHAuYwpAQCAtOTQsNyArOTQsNyBAQAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2NwY2k0MDUvY3BjaTQwNS5jIGIvYm9hcmQvZXNkL2NwY2k0MDUvY3BjaTQwNS5jCmluZGV4IDUxZDMzNTUuLjUxZTEwZmQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNDA1L2NwY2k0MDUuYworKysgYi9ib2FyZC9lc2QvY3BjaTQwNS9jcGNpNDA1LmMKQEAgLTQxNiw3ICs0MTYsNyBAQAogCWludCBsZW47CiAjZW5kaWYKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfcigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIAl1bnNpZ25lZCBzaG9ydCB2ZXI7CiAKIAlwdXRzKCJCb2FyZDogIik7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvY3BjaTc1MC9tdl9ldGguYyBiL2JvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5jCmluZGV4IGRlZGY3MzQuLjc4MWFkMjMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5jCisrKyBiL2JvYXJkL2VzZC9jcGNpNzUwL212X2V0aC5jCkBAIC0yNDgsNyArMjQ4LDcgQEAKIAkJCXJldHVybjsKIAkJfQogCi0JCXRlbXAgPSBnZXRlbnZfciAocywgYnVmLCBzaXplb2YgKGJ1ZikpOworCQl0ZW1wID0gZ2V0ZW52X2YocywgYnVmLCBzaXplb2YgKGJ1ZikpOwogCQlzID0gKHRlbXAgPiAwKSA/IGJ1ZiA6IE5VTEw7CiAKICNpZmRlZiBERUJVRwpAQCAtMzUyLDcgKzM1Miw3IEBACiAJCQlyZXR1cm47CiAJCX0KIAotCQl0ZW1wID0gZ2V0ZW52X3IgKHMsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKKwkJdGVtcCA9IGdldGVudl9mKHMsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKIAkJcyA9ICh0ZW1wID4gMCkgPyBidWYgOiBOVUxMOwogCiAjaWZkZWYgREVCVUcKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9jcGNpaXNlcjQvY3BjaWlzZXI0LmMgYi9ib2FyZC9lc2QvY3BjaWlzZXI0L2NwY2lpc2VyNC5jCmluZGV4IGRjZWE1MGUuLjEwYTQwYmUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9jcGNpaXNlcjQvY3BjaWlzZXI0LmMKKysrIGIvYm9hcmQvZXNkL2NwY2lpc2VyNC9jcGNpaXNlcjQuYwpAQCAtMTUzLDcgKzE1Myw3IEBACiAJaW50IGluZGV4OwogCWludCBsZW47CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZiAoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvZGFzYV9zaW0vZGFzYV9zaW0uYyBiL2JvYXJkL2VzZC9kYXNhX3NpbS9kYXNhX3NpbS5jCmluZGV4IDEyNzM3NGIuLmU3Zjc1NGMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9kYXNhX3NpbS9kYXNhX3NpbS5jCisrKyBiL2JvYXJkL2VzZC9kYXNhX3NpbS9kYXNhX3NpbS5jCkBAIC0xNjgsNyArMTY4LDcgQEAKIAlpbnQgaW5kZXg7CiAJaW50IGxlbjsKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZiAoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mIChzdHIpKTsKIAlpbnQgZnBnYTsKIAl1bnNpZ25lZCBzaG9ydCB2YWw7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9kcDQwNS9kcDQwNS5jIGIvYm9hcmQvZXNkL2RwNDA1L2RwNDA1LmMKaW5kZXggMjI4YTU3MC4uNTg3ODA5MiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2RwNDA1L2RwNDA1LmMKKysrIGIvYm9hcmQvZXNkL2RwNDA1L2RwNDA1LmMKQEAgLTg2LDcgKzg2LDcgQEAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIAl1bnNpZ25lZCBjaGFyIHRyYW5zWzE2XSA9IHsweDAsMHg4LDB4NCwweGMsMHgyLDB4YSwweDYsMHhlLAogCQkJCSAgIDB4MSwweDksMHg1LDB4ZCwweDMsMHhiLDB4NywweGZ9OwogCXVuc2lnbmVkIGNoYXIgaWQxLCBpZDIsIHJldjsKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9kdTQwNS9kdTQwNS5jIGIvYm9hcmQvZXNkL2R1NDA1L2R1NDA1LmMKaW5kZXggYWE3ZWU5Mi4uZTBmYWE3NyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL2R1NDA1L2R1NDA1LmMKKysrIGIvYm9hcmQvZXNkL2R1NDA1L2R1NDA1LmMKQEAgLTE2Myw3ICsxNjMsNyBAQAogCWludCBpbmRleDsKIAlpbnQgbGVuOwogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mIChzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2R1NDQwL2R1NDQwLmMgYi9ib2FyZC9lc2QvZHU0NDAvZHU0NDAuYwppbmRleCBiYTNjOTdjLi5hZDI1NWY5IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvZHU0NDAvZHU0NDAuYworKysgYi9ib2FyZC9lc2QvZHU0NDAvZHU0NDAuYwpAQCAtMzUwLDcgKzM1MCw3IEBACiAKIAlwdXRzKCJCb2FyZDogRFU0NDAiKTsKIAotCWlmIChnZXRlbnZfcigic2VyaWFsIyIsIHNlcm5vLCBzaXplb2Yoc2Vybm8pKSA+IDApIHsKKwlpZiAoZ2V0ZW52X2YoInNlcmlhbCMiLCBzZXJubywgc2l6ZW9mKHNlcm5vKSkgPiAwKSB7CiAJCXB1dHMoIiwgc2VyaWFsIyAiKTsKIAkJcHV0cyhzZXJubyk7CiAJfQpkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL2hoNDA1L2hoNDA1LmMgYi9ib2FyZC9lc2QvaGg0MDUvaGg0MDUuYwppbmRleCBjYTc4NjhjLi5jNWU5NTE0IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvaGg0MDUvaGg0MDUuYworKysgYi9ib2FyZC9lc2QvaGg0MDUvaGg0MDUuYwpAQCAtNjUwLDcgKzY1MCw3IEBACiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCkBAIC02NjAsNyArNjYwLDcgQEAKIAkJcHV0cyhzdHIpOwogCX0KIAotCWlmIChnZXRlbnZfcigiYmRfdHlwZSIsIHN0ciwgc2l6ZW9mKHN0cikpICE9IC0xKSB7CisJaWYgKGdldGVudl9mKCJiZF90eXBlIiwgc3RyLCBzaXplb2Yoc3RyKSkgIT0gLTEpIHsKIAkJcHJpbnRmKCIgKCVzIiwgc3RyKTsKIAl9IGVsc2UgewogCQlwdXRzKCIgKE1pc3NpbmcgYmRfdHlwZSEiKTsKQEAgLTc4MCw3ICs3ODAsNyBAQAogewogCWNoYXIgc3RyWzY0XTsKIAljaGFyIHN0cjJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IoInNlcmlhbCMiLCBzdHIyLCBzaXplb2Yoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0cjIsIHNpemVvZihzdHIpKTsKIAogCWlmIChsaW5lX251bWJlciA9PSAxKSB7CiAJCXNwcmludGYoc3RyLCAiIEJvYXJkOiAiKTsKQEAgLTc5MSw3ICs3OTEsNyBAQAogCQkJc3RyY2F0KHN0ciwgc3RyMik7CiAJCX0KIAotCQlpZiAoZ2V0ZW52X3IoImJkX3R5cGUiLCBzdHIyLCBzaXplb2Yoc3RyMikpICE9IC0xKSB7CisJCWlmIChnZXRlbnZfZigiYmRfdHlwZSIsIHN0cjIsIHNpemVvZihzdHIyKSkgIT0gLTEpIHsKIAkJCXN0cmNhdChzdHIsICIgKCIpOwogCQkJc3RyY2F0KHN0ciwgc3RyMik7CiAJCX0gZWxzZSB7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvaHViNDA1L2h1YjQwNS5jIGIvYm9hcmQvZXNkL2h1YjQwNS9odWI0MDUuYwppbmRleCAyYTJjNDM0Li5kMTdjNDE1IDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvaHViNDA1L2h1YjQwNS5jCisrKyBiL2JvYXJkL2VzZC9odWI0MDUvaHViNDA1LmMKQEAgLTE5Niw3ICsxOTYsNyBAQAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApAQCAtMjA2LDcgKzIwNiw3IEBACiAJCXB1dHMoc3RyKTsKIAl9CiAKLQlpZiAoZ2V0ZW52X3IoImJkX3R5cGUiLCBzdHIsIHNpemVvZihzdHIpKSAhPSAtMSkgeworCWlmIChnZXRlbnZfZigiYmRfdHlwZSIsIHN0ciwgc2l6ZW9mKHN0cikpICE9IC0xKSB7CiAJCXByaW50ZigiICglcyIsIHN0cik7CiAJfSBlbHNlIHsKIAkJcHV0cygiIChNaXNzaW5nIGJkX3R5cGUhIik7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvbWVlc2MvbWVlc2MuYyBiL2JvYXJkL2VzZC9tZWVzYy9tZWVzYy5jCmluZGV4IGExYjY2Y2IuLjY5NGJkNzQgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9tZWVzYy9tZWVzYy5jCisrKyBiL2JvYXJkL2VzZC9tZWVzYy9tZWVzYy5jCkBAIC0xODQsNyArMTg0LDcgQEAKIAkJcHV0cygiQm9hcmQ6IEV0aGVyQ0FOLzIgR2F0ZXdheSIpOwogCQlicmVhazsKIAl9Ci0JaWYgKGdldGVudl9yKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSkgPiAwKSB7CisJaWYgKGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSkgPiAwKSB7CiAJCXB1dHMoIiwgc2VyaWFsIyAiKTsKIAkJcHV0cyhzdHIpOwogCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9vY3J0Yy9vY3J0Yy5jIGIvYm9hcmQvZXNkL29jcnRjL29jcnRjLmMKaW5kZXggYWI5MDllNS4uMjRjOTJlMyAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL29jcnRjL29jcnRjLmMKKysrIGIvYm9hcmQvZXNkL29jcnRjL29jcnRjLmMKQEAgLTY4LDcgKzY4LDcgQEAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mIChzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL290YzU3MC9vdGM1NzAuYyBiL2JvYXJkL2VzZC9vdGM1NzAvb3RjNTcwLmMKaW5kZXggMDdkOWM2Mi4uNDEwZDhiNCAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL290YzU3MC9vdGM1NzAuYworKysgYi9ib2FyZC9lc2Qvb3RjNTcwL290YzU3MC5jCkBAIC0yNTgsNyArMjU4LDcgQEAKIAljaGFyIHN0clszMl07CiAKIAlwdXRzKCJCb2FyZDogZXNkIEFSTTkgSE1JIFBhbmVsIC0gT1RDNTcwIik7Ci0JaWYgKGdldGVudl9yKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSkgPiAwKSB7CisJaWYgKGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSkgPiAwKSB7CiAJCXB1dHMoIiwgc2VyaWFsIyAiKTsKIAkJcHV0cyhzdHIpOwogCX0KQEAgLTMwOCw3ICszMDgsNyBAQAogCiAJcHJpbnRmKCJVU0FSVDA6ICIpOwogCi0JaWYgKGdldGVudl9yKCJ1c2FydDAiLCBzdHIsIHNpemVvZihzdHIpKSA9PSAtMSkgeworCWlmIChnZXRlbnZfZigidXNhcnQwIiwgc3RyLCBzaXplb2Yoc3RyKSkgPT0gLTEpIHsKIAkJcHJpbnRmKCJObyBlbnRyeSAtIGFzc3VtaW5nIDEtd2lyZVxuIik7CiAJCS8qIENUUyBwaW4sIHdvcmtzIGFzIG1vZGUgc2VsZWN0IHBpbiAoMCA9IDEtd2lyZTsgMSA9IFJTNDg1KSAqLwogCQlhdDkxX3NldF9waW9fb3V0cHV0KEFUOTFfUElPX1BPUlRBLCAyOSwgMCk7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2QvcGNpNDA1L3BjaTQwNS5jIGIvYm9hcmQvZXNkL3BjaTQwNS9wY2k0MDUuYwppbmRleCBiMGQ3NjYzLi5kZDk3YzdhIDEwMDY0NAotLS0gYS9ib2FyZC9lc2QvcGNpNDA1L3BjaTQwNS5jCisrKyBiL2JvYXJkL2VzZC9wY2k0MDUvcGNpNDA1LmMKQEAgLTI5OCw3ICsyOTgsNyBAQAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3BsdTQwNS9wbHU0MDUuYyBiL2JvYXJkL2VzZC9wbHU0MDUvcGx1NDA1LmMKaW5kZXggM2E4YTRjZi4uYjY4ZmZhZiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3BsdTQwNS9wbHU0MDUuYworKysgYi9ib2FyZC9lc2QvcGx1NDA1L3BsdTQwNS5jCkBAIC0yNDAsNyArMjQwLDcgQEAKIGludCBjaGVja2JvYXJkKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CiAKIAlwdXRzKCJCb2FyZDogIik7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC9wbWM0MDUvcG1jNDA1LmMgYi9ib2FyZC9lc2QvcG1jNDA1L3BtYzQwNS5jCmluZGV4IGU3NDE1ZTQuLjAzMTQzZmUgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC9wbWM0MDUvcG1jNDA1LmMKKysrIGIvYm9hcmQvZXNkL3BtYzQwNS9wbWM0MDUuYwpAQCAtMTIzLDcgKzEyMyw3IEBACiB7CiAJdWxvbmcgdmFsOwogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZXNkL3ZvaDQwNS92b2g0MDUuYyBiL2JvYXJkL2VzZC92b2g0MDUvdm9oNDA1LmMKaW5kZXggNmVkNDkzZS4uZGEyNTIxMiAxMDA2NDQKLS0tIGEvYm9hcmQvZXNkL3ZvaDQwNS92b2g0MDUuYworKysgYi9ib2FyZC9lc2Qvdm9oNDA1L3ZvaDQwNS5jCkBAIC0yNzEsNyArMjcxLDcgQEAKIGludCBjaGVja2JvYXJkICh2b2lkKQogewogCWNoYXIgc3RyWzY0XTsKLQlpbnQgaSA9IGdldGVudl9yICgic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKIAogCXB1dHMgKCJCb2FyZDogIik7CiAKQEAgLTI4MSw3ICsyODEsNyBAQAogCQlwdXRzKHN0cik7CiAJfQogCi0JaWYgKGdldGVudl9yKCJiZF90eXBlIiwgc3RyLCBzaXplb2Yoc3RyKSkgIT0gLTEpIHsKKwlpZiAoZ2V0ZW52X2YoImJkX3R5cGUiLCBzdHIsIHNpemVvZihzdHIpKSAhPSAtMSkgewogCQlwcmludGYoIiAoJXMpIiwgc3RyKTsKIAl9IGVsc2UgewogCQlwdXRzKCIgKE1pc3NpbmcgYmRfdHlwZSEpIik7CmRpZmYgLS1naXQgYS9ib2FyZC9lc2Qvdm9tNDA1L3ZvbTQwNS5jIGIvYm9hcmQvZXNkL3ZvbTQwNS92b200MDUuYwppbmRleCBkZTM1MDM2Li5mNjY1YTNlIDEwMDY0NAotLS0gYS9ib2FyZC9lc2Qvdm9tNDA1L3ZvbTQwNS5jCisrKyBiL2JvYXJkL2VzZC92b200MDUvdm9tNDA1LmMKQEAgLTEyMSw3ICsxMjEsNyBAQAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOwogCWludCBmbGFzaGNudDsKIAlpbnQgZGVsYXk7CiAJdTggKmxlZF9yZWcgPSAodTggKikoQ0FOX0JBICsgMHgxMDAwKTsKZGlmZiAtLWdpdCBhL2JvYXJkL2VzZC93dWg0MDUvd3VoNDA1LmMgYi9ib2FyZC9lc2Qvd3VoNDA1L3d1aDQwNS5jCmluZGV4IDcwNGNkMDIuLjVhNjUxMzMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2VzZC93dWg0MDUvd3VoNDA1LmMKKysrIGIvYm9hcmQvZXNkL3d1aDQwNS93dWg0MDUuYwpAQCAtMTczLDcgKzE3Myw3IEBACiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCmRpZmYgLS1naXQgYS9ib2FyZC9ldmI2NDI2MC9ldGguYyBiL2JvYXJkL2V2YjY0MjYwL2V0aC5jCmluZGV4IGNhOGJhYjUuLjhkMWI2MDYgMTAwNjQ0Ci0tLSBhL2JvYXJkL2V2YjY0MjYwL2V0aC5jCisrKyBiL2JvYXJkL2V2YjY0MjYwL2V0aC5jCkBAIC03MDgsNyArNzA4LDcgQEAKIAkJCQlyZXR1cm47CiAJCX0KIAotCQl0ZW1wID0gZ2V0ZW52X3IgKHMsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCQl0ZW1wID0gZ2V0ZW52X2YocywgYnVmLCBzaXplb2YoYnVmKSk7CiAJCXMgPSAodGVtcCA+IDApID8gYnVmIDogTlVMTDsKIAogI2lmZGVmIERFQlVHCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL01ha2VmaWxlIGIvYm9hcmQvZnJlZXNjYWxlL2NvbW1vbi9NYWtlZmlsZQppbmRleCAyZDQ4ZDdlLi5mOTMwNDVmIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvY29tbW9uL01ha2VmaWxlCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9jb21tb24vTWFrZWZpbGUKQEAgLTQ2LDYgKzQ2LDcgQEAKIENPQkpTLSQoQ09ORklHX01QQzg1NzJEUykJKz0gaWNzMzA3X2Nsay5vCiBDT0JKUy0kKENPTkZJR19QMTAyMkRTKQkJKz0gaWNzMzA3X2Nsay5vCiBDT0JKUy0kKENPTkZJR19QMjAyMERTKQkJKz0gaWNzMzA3X2Nsay5vCitDT0JKUy0kKENPTkZJR19QNDA4MERTKQkJKz0gaWNzMzA3X2Nsay5vCiAKIFNSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUy15Oi5vPS5jKQogT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUy15KSkKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL01ha2VmaWxlIGIvYm9hcmQvZnJlZXNjYWxlL2NvcmVuZXRfZHMvTWFrZWZpbGUKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFhNzI1NQotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL01ha2VmaWxlCkBAIC0wLDAgKzEsNTUgQEAKKyMKKyMgQ29weXJpZ2h0IDIwMDctMjAwOSBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorIyAoQykgQ29weXJpZ2h0IDIwMDEtMjAwNgorIyBXb2xmZ2FuZyBEZW5rLCBERU5YIFNvZnR3YXJlIEVuZ2luZWVyaW5nLCB3ZEBkZW54LmRlLgorIworIyBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworIyBwcm9qZWN0LgorIworIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisjIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisjIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisjIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorIworIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorIworIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorIyBNQSAwMjExMS0xMzA3IFVTQQorIworCitpbmNsdWRlICQoVE9QRElSKS9jb25maWcubWsKKworTElCCT0gJChvYmopbGliJChCT0FSRCkuYQorCitDT0JKUy15CSs9ICQoQk9BUkQpLm8KK0NPQkpTLSQoQ09ORklHX0REUl9TUEQpCSs9IGRkci5vCitDT0JKUy0kKENPTkZJR19QQ0kpCSs9IHBjaS5vCitDT0JKUy15CSs9IGxhdy5vCitDT0JKUy15CSs9IHRsYi5vCisKK1NSQ1MJOj0gJChTT0JKUzoubz0uUykgJChDT0JKUy15Oi5vPS5jKQorT0JKUwk6PSAkKGFkZHByZWZpeCAkKG9iaiksJChDT0JKUy15KSkKK1NPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKKworJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykKKworY2xlYW46CisJcm0gLWYgJChPQkpTKSAkKFNPQkpTKQorCitkaXN0Y2xlYW46CWNsZWFuCisJcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgLmRlcGVuZAorCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisKKyMgZGVmaW5lcyAkKG9iaikuZGVwZW5kIHRhcmdldAoraW5jbHVkZSAkKFNSQ1RSRUUpL3J1bGVzLm1rCisKK3NpbmNsdWRlICQob2JqKS5kZXBlbmQKKworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL2NvcmVuZXRfZHMvY29uZmlnLm1rIGIvYm9hcmQvZnJlZXNjYWxlL2NvcmVuZXRfZHMvY29uZmlnLm1rCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyZGIyNGUKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9jb25maWcubWsKQEAgLTAsMCArMSwzMCBAQAorIworIyBDb3B5cmlnaHQgMjAwNy0yMDA5IEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisjCisjIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisjIHByb2plY3QuCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyMgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyMgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisjCisjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisjIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisjCisjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisjIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisjIE1BIDAyMTExLTEzMDcgVVNBCisjCisKKyMKKyMgUDQwODBEUyBib2FyZAorIworaWZuZGVmIFRFWFRfQkFTRQorVEVYVF9CQVNFID0gMHhlZmY4MDAwMAorZW5kaWYKKworUkVTRVRfVkVDVE9SX0FERFJFU1MgPSAweGVmZmZmZmZjCmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9jb3JlbmV0X2RzLmMgYi9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9jb3JlbmV0X2RzLmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NkZWZiMwotLS0gL2Rldi9udWxsCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2NvcmVuZXRfZHMuYwpAQCAtMCwwICsxLDI1OSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8bmV0ZGV2Lmg+CisjaW5jbHVkZSA8YXNtL21tdS5oPgorI2luY2x1ZGUgPGFzbS9wcm9jZXNzb3IuaD4KKyNpbmNsdWRlIDxhc20vY2FjaGUuaD4KKyNpbmNsdWRlIDxhc20vaW1tYXBfODV4eC5oPgorI2luY2x1ZGUgPGFzbS9mc2xfbGF3Lmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9kZHJfc2RyYW0uaD4KKyNpbmNsdWRlIDxhc20vZnNsX3NlcmRlcy5oPgorI2luY2x1ZGUgPGFzbS9mc2xfcG9ydGFscy5oPgorI2luY2x1ZGUgPGFzbS9mc2xfbGlvZG4uaD4KKworZXh0ZXJuIHZvaWQgcGNpX29mX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKTsKKworI2luY2x1ZGUgIi4uL2NvbW1vbi9uZ3BpeGlzLmgiCisKK0RFQ0xBUkVfR0xPQkFMX0RBVEFfUFRSOworCit2b2lkIGNwdV9tcF9sbWJfcmVzZXJ2ZShzdHJ1Y3QgbG1iICpsbWIpOworCitpbnQgY2hlY2tib2FyZCAodm9pZCkKK3sKKwl1OCBzdzsKKwlzdHJ1Y3QgY3B1X3R5cGUgKmNwdSA9IGdkLT5jcHU7CisKKwlwcmludGYoIkJvYXJkOiAlc0RTLCAiLCBjcHUtPm5hbWUpOworCXByaW50ZigiU3lzIElEOiAweCUwMngsIFN5cyBWZXI6IDB4JTAyeCwgRlBHQSBWZXI6IDB4JTAyeCwgIiwKKwkJaW5fOCgmcGl4aXMtPmlkKSwgaW5fOCgmcGl4aXMtPmFyY2gpLCBpbl84KCZwaXhpcy0+c2N2ZXIpKTsKKworCXN3ID0gaW5fOCgmUElYSVNfU1coUElYSVNfTEJNQVBfU1dJVENIKSk7CisJc3cgPSAoc3cgJiBQSVhJU19MQk1BUF9NQVNLKSA+PiBQSVhJU19MQk1BUF9TSElGVDsKKworCWlmIChzdyA8IDB4OCkKKwkJcHJpbnRmKCJ2QmFuazogJWRcbiIsIHN3KTsKKwllbHNlIGlmIChzdyA9PSAweDgpCisJCXB1dHMoIlByb21qZXRcbiIpOworCWVsc2UgaWYgKHN3ID09IDB4OSkKKwkJcHV0cygiTkFORFxuIik7CisJZWxzZQorCQlwcmludGYoImludmFsaWQgc2V0dGluZyBvZiBTVyV1XG4iLCBQSVhJU19MQk1BUF9TV0lUQ0gpOworCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKwlwdXRzKCIzNi1iaXQgQWRkcmVzc2luZ1xuIik7CisjZW5kaWYKKworCS8qIERpc3BsYXkgdGhlIGFjdHVhbCBTRVJERVMgcmVmZXJlbmNlIGNsb2NrcyBhcyBjb25maWd1cmVkIGJ5IHRoZQorCSAqIGRpcCBzd2l0Y2hlcyBvbiB0aGUgYm9hcmQuICBOb3RlIHRoYXQgdGhlIFNXeCByZWdpc3RlcnMgY291bGQKKwkgKiB0ZWNobmljYWxseSBiZSBzZXQgdG8gZm9yY2UgdGhlIHJlZmVyZW5jZSBjbG9ja3MgdG8gbWF0Y2ggdGhlCisJICogdmFsdWVzIHRoYXQgdGhlIFNFUkRFUyBleHBlY3RzIChvciB2aWNlIHZlcnNhKS4gIEZvciBub3csIGhvd2V2ZXIsCisJICogd2UganVzdCBkaXNwbGF5IGJvdGggdmFsdWVzIGFuZCBob3BlIHRoZSB1c2VyIG5vdGljZXMgd2hlbiB0aGV5CisJICogZG9uJ3QgbWF0Y2guCisJICovCisJcHV0cygiU0VSREVTIFJlZmVyZW5jZSBDbG9ja3M6ICIpOworCXN3ID0gaW5fOCgmUElYSVNfU1coMykpOworCXByaW50ZigiQmFuazE9JXVNSHogIiwgKHN3ICYgMHg0MCkgPyAxMjUgOiAxMDApOworCXByaW50ZigiQmFuazI9JXNNSHogIiwgKHN3ICYgMHgyMCkgPyAiMTU2LjI1IiA6ICIxMjUiKTsKKwlwcmludGYoIkJhbmszPSVzTUh6XG4iLCAoc3cgJiAweDEwKSA/ICIxNTYuMjUiIDogIjEyNSIpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBib2FyZF9lYXJseV9pbml0X2Yodm9pZCkKK3sKKwl2b2xhdGlsZSBjY3NyX2d1cl90ICpndXIgPSAodm9pZCAqKShDT05GSUdfU1lTX01QQzg1eHhfR1VUU19BRERSKTsKKworCS8qCisJICogUDQwODAgRFMgYm9hcmQgb25seSB1c2VzIHRoZSBERFIxX01DSzAvMyBhbmQgRERSMl9NQ0swLzMKKwkgKiBkaXNhYmxlIHRoZSBERFIxX01DSzEvMi80LzUgYW5kIEREUjJfTUNLMS8yLzQvNSB0byByZWR1Y2UKKwkgKiB0aGUgbm9pc2UgaW50cm9kdWNlZCBieSB0aGVzZSB1bnRlcm1pbmF0ZWQgYW5kIHVudXNlZCBjbG9jayBwYWlycy4KKwkgKi8KKwlzZXRiaXRzX2JlMzIoJmd1ci0+ZGRyY2xrZHIsIDB4MDAxQjAwMUIpOworCisJcmV0dXJuIDA7Cit9CisKK2ludCBib2FyZF9lYXJseV9pbml0X3Iodm9pZCkKK3sKKwljb25zdCB1bnNpZ25lZCBpbnQgZmxhc2hiYXNlID0gQ09ORklHX1NZU19GTEFTSF9CQVNFOworCWNvbnN0IHU4IGZsYXNoX2VzZWwgPSBmaW5kX3RsYl9pZHgoKHZvaWQgKilmbGFzaGJhc2UsIDEpOworCisJLyoKKwkgKiBSZW1hcCBCb290IGZsYXNoICsgUFJPTUpFVCByZWdpb24gdG8gY2FjaGluZy1pbmhpYml0ZWQKKwkgKiBzbyB0aGF0IGZsYXNoIGNhbiBiZSBlcmFzZWQgcHJvcGVybHkuCisJICovCisKKwkvKiBGbHVzaCBkLWNhY2hlIGFuZCBpbnZhbGlkYXRlIGktY2FjaGUgb2YgYW55IEZMQVNIIGRhdGEgKi8KKwlmbHVzaF9kY2FjaGUoKTsKKwlpbnZhbGlkYXRlX2ljYWNoZSgpOworCisJLyogaW52YWxpZGF0ZSBleGlzdGluZyBUTEIgZW50cnkgZm9yIGZsYXNoICsgcHJvbWpldCAqLworCWRpc2FibGVfdGxiKGZsYXNoX2VzZWwpOworCisJc2V0X3RsYigxLCBmbGFzaGJhc2UsIENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTLAkvKiB0bGIsIGVwbiwgcnBuICovCisJCQlNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywJLyogcGVybXMsIHdpbWdlICovCisJCQkwLCBmbGFzaF9lc2VsLCBCT09LRV9QQUdFU1pfMjU2TSwgMSk7CS8qIHRzLCBlc2VsLCB0c2l6ZSwgaXByb3QgKi8KKworCXNldF9saW9kbnMoKTsKKwlzZXR1cF9wb3J0YWxzKCk7CisKKyNpZmRlZiBDT05GSUdfU1JJTzEKKwlpZiAoaXNfc2VyZGVzX2NvbmZpZ3VyZWQoU1JJTzEpKSB7CisJCXNldF9uZXh0X2xhdyhDT05GSUdfU1lTX1JJTzFfTUVNX1BIWVMsIExBV19TSVpFXzI1Nk0sCisJCQkJTEFXX1RSR1RfSUZfUklPXzEpOworCX0gZWxzZSB7CisJCXByaW50ZiAoIiAgICBTUklPMTogZGlzYWJsZWRcbiIpOworCX0KKyNlbHNlCisJc2V0Yml0c19iZTMyKCZndXItPmRldmRpc3IsIEZTTF9DT1JFTkVUX0RFVkRJU1JfU1JJTzEpOyAvKiBkaXNhYmxlICovCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19TUklPMgorCWlmIChpc19zZXJkZXNfY29uZmlndXJlZChTUklPMikpIHsKKwkJc2V0X25leHRfbGF3KENPTkZJR19TWVNfUklPMl9NRU1fUEhZUywgTEFXX1NJWkVfMjU2TSwKKwkJCQlMQVdfVFJHVF9JRl9SSU9fMik7CisJfSBlbHNlIHsKKwkJcHJpbnRmICgiICAgIFNSSU8yOiBkaXNhYmxlZFxuIik7CisJfQorI2Vsc2UKKwlzZXRiaXRzX2JlMzIoJmd1ci0+ZGV2ZGlzciwgRlNMX0NPUkVORVRfREVWRElTUl9TUklPMik7IC8qIGRpc2FibGUgKi8KKyNlbmRpZgorCisJcmV0dXJuIDA7Cit9CisKK3N0YXRpYyBjb25zdCBjaGFyICpzZXJkZXNfY2xvY2tfdG9fc3RyaW5nKHUzMiBjbG9jaykKK3sKKwlzd2l0Y2goY2xvY2spIHsKKwljYXNlIFNSRFNfUExMQ1IwX1JGQ0tfU0VMXzEwMDoKKwkJcmV0dXJuICIxMDAiOworCWNhc2UgU1JEU19QTExDUjBfUkZDS19TRUxfMTI1OgorCQlyZXR1cm4gIjEyNSI7CisJY2FzZSBTUkRTX1BMTENSMF9SRkNLX1NFTF8xNTZfMjU6CisJCXJldHVybiAiMTU2LjI1IjsKKwlkZWZhdWx0OgorCQlyZXR1cm4gIj8/PyI7CisJfQorfQorCisjZGVmaW5lIE5VTV9TUkRTX0JBTktTCTMKKworaW50IG1pc2NfaW5pdF9yKHZvaWQpCit7CisJc2VyZGVzX2NvcmVuZXRfdCAqc3Jkc19yZWdzID0gKHZvaWQgKilDT05GSUdfU1lTX0ZTTF9DT1JFTkVUX1NFUkRFU19BRERSOworCXUzMiBhY3R1YWxbTlVNX1NSRFNfQkFOS1NdOworCXVuc2lnbmVkIGludCBpOworCXU4IHN3MzsKKworCS8qIFdhcm4gaWYgdGhlIGV4cGVjdGVkIFNFUkRFUyByZWZlcmVuY2UgY2xvY2tzIGRvbid0IG1hdGNoIHRoZQorCSAqIGFjdHVhbCByZWZlcmVuY2UgY2xvY2tzLiAgVGhpcyBuZWVkcyB0byBiZSBkb25lIGFmdGVyIGNhbGxpbmcKKwkgKiBwNDA4MF9lcnJhdHVtX3NlcmRlczgoKSwgc2luY2UgdGhhdCBmdW5jdGlvbiBtYXkgbW9kaWZ5IHRoZSBjbG9ja3MuCisJICovCisJc3czID0gaW5fOCgmUElYSVNfU1coMykpOworCWFjdHVhbFswXSA9IChzdzMgJiAweDQwKSA/CisJCVNSRFNfUExMQ1IwX1JGQ0tfU0VMXzEyNSA6IFNSRFNfUExMQ1IwX1JGQ0tfU0VMXzEwMDsKKwlhY3R1YWxbMV0gPSAoc3czICYgMHgyMCkgPworCQlTUkRTX1BMTENSMF9SRkNLX1NFTF8xNTZfMjUgOiBTUkRTX1BMTENSMF9SRkNLX1NFTF8xMjU7CisJYWN0dWFsWzJdID0gKHN3MyAmIDB4MTApID8KKwkJU1JEU19QTExDUjBfUkZDS19TRUxfMTU2XzI1IDogU1JEU19QTExDUjBfUkZDS19TRUxfMTI1OworCisJZm9yIChpID0gMDsgaSA8IE5VTV9TUkRTX0JBTktTOyBpKyspIHsKKwkJdTMyIGV4cGVjdGVkID0gc3Jkc19yZWdzLT5iYW5rW2ldLnBsbGNyMCAmIFNSRFNfUExMQ1IwX1JGQ0tfU0VMX01BU0s7CisJCWlmIChleHBlY3RlZCAhPSBhY3R1YWxbaV0pIHsKKwkJCXByaW50ZigiV2FybmluZzogU0VSREVTIGJhbmsgJXUgZXhwZWN0cyByZWZlcmVuY2UgY2xvY2siCisJCQkgICAgICAgIiAlc01IeiwgYnV0IGFjdHVhbCBpcyAlc01IelxuIiwgaSArIDEsCisJCQkgICAgICAgc2VyZGVzX2Nsb2NrX3RvX3N0cmluZyhleHBlY3RlZCksCisJCQkgICAgICAgc2VyZGVzX2Nsb2NrX3RvX3N0cmluZyhhY3R1YWxbaV0pKTsKKwkJfQorCX0KKworCXJldHVybiAwOworfQorCitwaHlzX3NpemVfdCBpbml0ZHJhbShpbnQgYm9hcmRfdHlwZSkKK3sKKwlwaHlzX3NpemVfdCBkcmFtX3NpemU7CisKKwlwdXRzKCJJbml0aWFsaXppbmcuLi4uXG4iKTsKKworCWRyYW1fc2l6ZSA9IGZzbF9kZHJfc2RyYW0oKTsKKworCXNldHVwX2Rkcl90bGJzKGRyYW1fc2l6ZSAvIDB4MTAwMDAwKTsKKworCXB1dHMoIiAgICBERFI6ICIpOworCXJldHVybiBkcmFtX3NpemU7Cit9CisKKyNpZmRlZiBDT05GSUdfTVAKK3ZvaWQgYm9hcmRfbG1iX3Jlc2VydmUoc3RydWN0IGxtYiAqbG1iKQoreworCWNwdV9tcF9sbWJfcmVzZXJ2ZShsbWIpOworfQorI2VuZGlmCisKK3ZvaWQgZnRfc3Jpb19zZXR1cCh2b2lkICpibG9iKQoreworI2lmZGVmIENPTkZJR19TUklPMQorCWlmICghaXNfc2VyZGVzX2NvbmZpZ3VyZWQoU1JJTzEpKSB7CisJCWZkdF9kZWxfbm9kZV9hbmRfYWxpYXMoYmxvYiwgInJpbzAiKTsKKwl9CisjZWxzZQorCWZkdF9kZWxfbm9kZV9hbmRfYWxpYXMoYmxvYiwgInJpbzAiKTsKKyNlbmRpZgorI2lmZGVmIENPTkZJR19TUklPMgorCWlmICghaXNfc2VyZGVzX2NvbmZpZ3VyZWQoU1JJTzIpKSB7CisJCWZkdF9kZWxfbm9kZV9hbmRfYWxpYXMoYmxvYiwgInJpbzEiKTsKKwl9CisjZWxzZQorCWZkdF9kZWxfbm9kZV9hbmRfYWxpYXMoYmxvYiwgInJpbzEiKTsKKyNlbmRpZgorfQorCit2b2lkIGZ0X2JvYXJkX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworCXBoeXNfYWRkcl90IGJhc2U7CisJcGh5c19zaXplX3Qgc2l6ZTsKKworCWZ0X2NwdV9zZXR1cChibG9iLCBiZCk7CisKKwlmdF9zcmlvX3NldHVwKGJsb2IpOworCisJYmFzZSA9IGdldGVudl9ib290bV9sb3coKTsKKwlzaXplID0gZ2V0ZW52X2Jvb3RtX3NpemUoKTsKKworCWZkdF9maXh1cF9tZW1vcnkoYmxvYiwgKHU2NCliYXNlLCAodTY0KXNpemUpOworCisjaWZkZWYgQ09ORklHX1BDSQorCXBjaV9vZl9zZXR1cChibG9iLCBiZCk7CisjZW5kaWYKKworCWZkdF9maXh1cF9saW9kbihibG9iKTsKK30KKworaW50IGJvYXJkX2V0aF9pbml0KGJkX3QgKmJpcykKK3sKKwlyZXR1cm4gcGNpX2V0aF9pbml0KGJpcyk7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9kZHIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2Rkci5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyYjJiNGYKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9kZHIuYwpAQCAtMCwwICsxLDE3NiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogVmVyc2lvbiAyIGFzIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLgorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxpMmMuaD4KKworI2luY2x1ZGUgPGFzbS9mc2xfZGRyX3NkcmFtLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9kZHJfZGltbV9wYXJhbXMuaD4KKworc3RhdGljIHZvaWQgZ2V0X3NwZChkZHIzX3NwZF9lZXByb21fdCAqc3BkLCB1bnNpZ25lZCBjaGFyIGkyY19hZGRyZXNzKQoreworCWludCByZXQ7CisKKwlyZXQgPSBpMmNfcmVhZChpMmNfYWRkcmVzcywgMCwgMSwgKHVjaGFyICopc3BkLCBzaXplb2YoZGRyM19zcGRfZWVwcm9tX3QpKTsKKwlpZiAocmV0KSB7CisJCWRlYnVnKCJERFI6IGZhaWxlZCB0byByZWFkIFNQRCBmcm9tIGFkZHJlc3MgJXVcbiIsIGkyY19hZGRyZXNzKTsKKwkJbWVtc2V0KHNwZCwgMCwgc2l6ZW9mKGRkcjNfc3BkX2VlcHJvbV90KSk7CisJfQorfQorCit1bnNpZ25lZCBpbnQgZnNsX2Rkcl9nZXRfbWVtX2RhdGFfcmF0ZSh2b2lkKQoreworCXJldHVybiBnZXRfZGRyX2ZyZXEoMCk7Cit9CisKK3ZvaWQgZnNsX2Rkcl9nZXRfc3BkKGRkcjNfc3BkX2VlcHJvbV90ICpjdHJsX2RpbW1zX3NwZCwKKwkJICAgICAgdW5zaWduZWQgaW50IGN0cmxfbnVtKQoreworCXVuc2lnbmVkIGludCBpOworCXVuc2lnbmVkIGludCBpMmNfYWRkcmVzcyA9IDA7CisKKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFI7IGkrKykgeworCQlpZiAoY3RybF9udW0gPT0gMCAmJiBpID09IDApCisJCQlpMmNfYWRkcmVzcyA9IFNQRF9FRVBST01fQUREUkVTUzE7CisJCWVsc2UgaWYgKGN0cmxfbnVtID09IDEgJiYgaSA9PSAwKQorCQkJaTJjX2FkZHJlc3MgPSBTUERfRUVQUk9NX0FERFJFU1MyOworCisJCWdldF9zcGQoJihjdHJsX2RpbW1zX3NwZFtpXSksIGkyY19hZGRyZXNzKTsKKwl9Cit9CisKK3R5cGVkZWYgc3RydWN0IHsKKwl1MzIgZGF0YXJhdGVfbWh6X2xvdzsKKwl1MzIgZGF0YXJhdGVfbWh6X2hpZ2g7CisJdTMyIG5fcmFua3M7CisJdTMyIGNsa19hZGp1c3Q7CisJdTMyIGNwbzsKKwl1MzIgd3JpdGVfZGF0YV9kZWxheTsKKwl1MzIgZm9yY2VfMlQ7Cit9IGJvYXJkX3NwZWNpZmljX3BhcmFtZXRlcnNfdDsKKworLyogcmFuZ2VzIGZvciBwYXJhbWV0ZXJzOgorICogIHdyX2RhdGFfZGVsYXkgPSAwLTYKKyAqICBjbGsgYWRqdXN0ID0gMC04CisgKiAgY3BvIDItMHgxRSAoMzApCisgKi8KKworCisvKiBYWFg6IHRoZXNlIHZhbHVlcyBuZWVkIHRvIGJlIGNoZWNrZWQgZm9yIGFsbCBpbnRlcmxlYXZpbmcgbW9kZXMuICAqLworLyogWFhYOiBObyByZWxpYWJsZSBkdWFsLXJhbmsgODAwIE1IeiBzZXR0aW5nIGhhcyBiZWVuIGZvdW5kLiAgSXQgbWF5CisgKiAgICAgIHNlZW0gcmVsaWFibGUsIGJ1dCBlcnJvcnMgd2lsbCBhcHBlYXIgd2hlbiBtZW1vcnkgaW50ZW5zaXZlCisgKiAgICAgIHByb2dyYW0gaXMgcnVuLiAqLworLyogWFhYOiBTaW5nbGUgcmFuayBhdCA4MDAgTUh6IGlzIE9LLiAgKi8KK2NvbnN0IGJvYXJkX3NwZWNpZmljX3BhcmFtZXRlcnNfdCBib2FyZF9zcGVjaWZpY19wYXJhbWV0ZXJzW11bMjBdID0geworCXsKKwkvKiAJbWVtb3J5IGNvbnRyb2xsZXIgMCAJCQkqLworCS8qCSAgbG98ICBoaXwgIG51bXwgIGNsa3wgY3BvfHdyZGF0YXwyVAkqLworCS8qCSBtaHp8IG1oenxyYW5rc3xhZGpzdHwgICAgfCBkZWxheXwJKi8KKwkJeyAgMCwgMzMzLCAgICAyLCAgICA2LCAgIDcsICAgIDMsICAwfSwKKwkJezMzNCwgNDAwLCAgICAyLCAgICA2LCAgIDksICAgIDMsICAwfSwKKwkJezQwMSwgNTQ5LCAgICAyLCAgICA2LCAgMTEsICAgIDMsICAwfSwKKwkJezU1MCwgNjgwLCAgICAyLCAgICAxLCAgMTAsICAgIDUsICAwfSwKKwkJezY4MSwgODUwLCAgICAyLCAgICAxLCAgMTIsICAgIDUsICAwfSwKKwkJezg1MSwgMTA1MCwgICAyLCAgICAxLCAgMTIsICAgIDUsICAwfSwKKwkJezEwNTEsIDEyNTAsICAyLCAgICAxLCAgMTUsICAgIDQsICAwfSwKKwkJezEyNTEsIDEzNTAsICAyLCAgICAxLCAgMTUsICAgIDQsICAwfSwKKwkJeyAgMCwgMzMzLCAgICAxLCAgICA2LCAgIDcsICAgIDMsICAwfSwKKwkJezMzNCwgNDAwLCAgICAxLCAgICA2LCAgIDksICAgIDMsICAwfSwKKwkJezQwMSwgNTQ5LCAgICAxLCAgICA2LCAgMTEsICAgIDMsICAwfSwKKwkJezU1MCwgNjgwLCAgICAxLCAgICAxLCAgMTAsICAgIDUsICAwfSwKKwkJezY4MSwgODUwLCAgICAxLCAgICAxLCAgMTIsICAgIDUsICAwfQorCX0sCisKKwl7CisJLyoJbWVtb3J5IGNvbnRyb2xsZXIgMQkJCSovCisJLyoJICBsb3wgIGhpfCAgbnVtfCAgY2xrfCBjcG98d3JkYXRhfDJUCSovCisJLyoJIG1oenwgbWh6fHJhbmtzfGFkanN0fCAgICB8IGRlbGF5fAkqLworCQl7ICAwLCAzMzMsICAgIDIsICAgICA2LCAgNywgICAgMywgIDB9LAorCQl7MzM0LCA0MDAsICAgIDIsICAgICA2LCAgOSwgICAgMywgIDB9LAorCQl7NDAxLCA1NDksICAgIDIsICAgICA2LCAxMSwgICAgMywgIDB9LAorCQl7NTUwLCA2ODAsICAgIDIsICAgICAxLCAxMSwgICAgNiwgIDB9LAorCQl7NjgxLCA4NTAsICAgIDIsICAgICAxLCAxMywgICAgNiwgIDB9LAorCQl7ODUxLCAxMDUwLCAgIDIsICAgICAxLCAxMywgICAgNiwgIDB9LAorCQl7MTA1MSwgMTI1MCwgIDIsICAgICAxLCAxNSwgICAgNCwgIDB9LAorCQl7MTI1MSwgMTM1MCwgIDIsICAgICAxLCAxNSwgICAgNCwgIDB9LAorCQl7ICAwLCAzMzMsICAgIDEsICAgICA2LCAgNywgICAgMywgIDB9LAorCQl7MzM0LCA0MDAsICAgIDEsICAgICA2LCAgOSwgICAgMywgIDB9LAorCQl7NDAxLCA1NDksICAgIDEsICAgICA2LCAxMSwgICAgMywgIDB9LAorCQl7NTUwLCA2ODAsICAgIDEsICAgICAxLCAxMSwgICAgNiwgIDB9LAorCQl7NjgxLCA4NTAsICAgIDEsICAgICAxLCAxMywgICAgNiwgIDB9CisJfQorfTsKKwordm9pZCBmc2xfZGRyX2JvYXJkX29wdGlvbnMobWVtY3RsX29wdGlvbnNfdCAqcG9wdHMsCisJCQkJZGltbV9wYXJhbXNfdCAqcGRpbW0sCisJCQkJdW5zaWduZWQgaW50IGN0cmxfbnVtKQoreworCWNvbnN0IGJvYXJkX3NwZWNpZmljX3BhcmFtZXRlcnNfdCAqcGJzcCA9CisJCQkJJihib2FyZF9zcGVjaWZpY19wYXJhbWV0ZXJzW2N0cmxfbnVtXVswXSk7CisJdTMyIG51bV9wYXJhbXMgPSBzaXplb2YoYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVyc1tjdHJsX251bV0pIC8KKwkJCQlzaXplb2YoYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVyc1swXVswXSk7CisJdTMyIGk7CisJdWxvbmcgZGRyX2ZyZXE7CisKKwkvKiBzZXQgb2R0X3JkX2NmZyBhbmQgb2R0X3dyX2NmZy4gSWYgdGhlIHRoZXJlIGlzIG9ubHkgb25lIGRpbW0gaW4KKwkgKiB0aGF0IGNvbnRyb2xsZXIsIHNldCBvZHRfd3JfY2ZnIHRvIDQgZm9yIENTMCwgYW5kIDAgdG8gQ1MxLiBJZgorCSAqIHRoZXJlIGFyZSB0d28gZGltbXMgaW4gdGhlIGNvbnRyb2xsZXIsIHNldCBvZHRfcmRfY2ZnIHRvIDMgYW5kCisJICogb2R0X3dyX2NmZyB0byAzIGZvciB0aGUgZXZlbiBDUywgMCBmb3IgdGhlIG9kZCBDUy4KKwkgKi8KKwlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX0NISVBfU0VMRUNUU19QRVJfQ1RSTDsgaSsrKSB7CisJCWlmIChpJjEpIHsJLyogb2RkIENTICovCisJCQlwb3B0cy0+Y3NfbG9jYWxfb3B0c1tpXS5vZHRfcmRfY2ZnID0gMDsKKwkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF93cl9jZmcgPSAxOworCQl9IGVsc2UgewkvKiBldmVuIENTICovCisJCQlpZiAoQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFIgPT0gMSkgeworCQkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF9yZF9jZmcgPSAwOworCQkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF93cl9jZmcgPSAxOworCQkJfSBlbHNlIGlmIChDT05GSUdfRElNTV9TTE9UU19QRVJfQ1RMUiA9PSAyKSB7CisJCQlwb3B0cy0+Y3NfbG9jYWxfb3B0c1tpXS5vZHRfcmRfY2ZnID0gMzsKKwkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF93cl9jZmcgPSAzOworCQkJfQorCQl9CisJfQorCisJLyogR2V0IGNsa19hZGp1c3QsIGNwbywgd3JpdGVfZGF0YV9kZWxheSwyVCwgYWNjb3JkaW5nIHRvIHRoZSBib2FyZCBkZHIKKwkgKiBmcmVxZW5jeSBhbmQgbl9iYW5rcyBzcGVjaWZpZWQgaW4gYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVycyB0YWJsZS4KKwkgKi8KKwlkZHJfZnJlcSA9IGdldF9kZHJfZnJlcSgwKSAvIDEwMDAwMDA7CisJZm9yIChpID0gMDsgaSA8IG51bV9wYXJhbXM7IGkrKykgeworCQlpZiAoZGRyX2ZyZXEgPj0gcGJzcC0+ZGF0YXJhdGVfbWh6X2xvdyAmJgorCQkgICAgZGRyX2ZyZXEgPD0gcGJzcC0+ZGF0YXJhdGVfbWh6X2hpZ2ggJiYKKwkJICAgIHBkaW1tLT5uX3JhbmtzID09IHBic3AtPm5fcmFua3MpIHsKKwkJCXBvcHRzLT5jcG9fb3ZlcnJpZGUgPSAweGZmOyAvKiBmb3JjZSBhdXRvIENQTyBjYWxpYnJhdGlvbiAqLworCQkJcG9wdHMtPndyaXRlX2RhdGFfZGVsYXkgPSAyOworCQkJcG9wdHMtPmNsa19hZGp1c3QgPSA1OyAvKiBGb3JjZSB2YWx1ZSB0byBiZSA1LzggY2xvY2sgY3ljbGUgKi8KKwkJCXBvcHRzLT50d29UX2VuID0gcGJzcC0+Zm9yY2VfMlQ7CisJCX0KKwkJcGJzcCsrOworCX0KKworCS8qCisJICogRmFjdG9ycyB0byBjb25zaWRlciBmb3IgaGFsZi1zdHJlbmd0aCBkcml2ZXIgZW5hYmxlOgorCSAqCS0gbnVtYmVyIG9mIERJTU1zIGluc3RhbGxlZAorCSAqLworCXBvcHRzLT5oYWxmX3N0cmVuZ3RoX2RyaXZlcl9lbmFibGUgPSAwOworCS8qCisJICogV3JpdGUgbGV2ZWxpbmcgb3ZlcnJpZGUKKwkgKi8KKwlwb3B0cy0+d3Jsdmxfb3ZlcnJpZGUgPSAxOworCXBvcHRzLT53cmx2bF9zYW1wbGUgPSAweGE7CisJcG9wdHMtPndybHZsX3N0YXJ0ID0gMHg3OworCS8qCisJICogUnR0IGFuZCBSdHRfV1Igb3ZlcnJpZGUKKwkgKi8KKwlwb3B0cy0+cnR0X292ZXJyaWRlID0gMTsKKwlwb3B0cy0+cnR0X292ZXJyaWRlX3ZhbHVlID0gRERSM19SVFRfMTIwX09ITTsKKwlwb3B0cy0+cnR0X3dyX292ZXJyaWRlX3ZhbHVlID0gMDsgLyogUnR0X1dSPSBkeW5hbWljIE9EVCBvZmYgKi8KKworCS8qIEVuYWJsZSBaUSBjYWxpYnJhdGlvbiAqLworCXBvcHRzLT56cV9lbiA9IDE7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9sYXcuYyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL2xhdy5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYjRiOTcKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9sYXcuYwpAQCAtMCwwICsxLDQwIEBACisvKgorICogQ29weXJpZ2h0IDIwMDgtMjAxMCBGcmVlc2NhbGUgU2VtaWNvbmR1Y3RvciwgSW5jLgorICoKKyAqIChDKSBDb3B5cmlnaHQgMjAwMAorICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisjaW5jbHVkZSA8Y29tbW9uLmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9sYXcuaD4KKyNpbmNsdWRlIDxhc20vbW11Lmg+CisKK3N0cnVjdCBsYXdfZW50cnkgbGF3X3RhYmxlW10gPSB7CisJU0VUX0xBVyhDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUywgTEFXX1NJWkVfMjU2TSwgTEFXX1RSR1RfSUZfTEJDKSwKKwlTRVRfTEFXKENPTkZJR19TWVNfQk1BTl9NRU1fUEhZUywgTEFXX1NJWkVfMk0sIExBV19UUkdUX0lGX0JNQU4pLAorCVNFVF9MQVcoQ09ORklHX1NZU19RTUFOX01FTV9QSFlTLCBMQVdfU0laRV8yTSwgTEFXX1RSR1RfSUZfUU1BTiksCisJU0VUX0xBVyhQSVhJU19CQVNFX1BIWVMsIExBV19TSVpFXzRLLCBMQVdfVFJHVF9JRl9MQkMpLAorI2lmZGVmIENPTkZJR19TWVNfRENTUkJBUl9QSFlTCisJU0VUX0xBVyhDT05GSUdfU1lTX0RDU1JCQVJfUEhZUywgTEFXX1NJWkVfNE0sIExBV19UUkdUX0lGX0RDU1IpLAorI2VuZGlmCit9OworCitpbnQgbnVtX2xhd19lbnRyaWVzID0gQVJSQVlfU0laRShsYXdfdGFibGUpOwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL2NvcmVuZXRfZHMvcGNpLmMgYi9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy9wY2kuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTk0ZTM2Ci0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvZnJlZXNjYWxlL2NvcmVuZXRfZHMvcGNpLmMKQEAgLTAsMCArMSwxMjcgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwNy0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGNvbW1hbmQuaD4KKyNpbmNsdWRlIDxwY2kuaD4KKyNpbmNsdWRlIDxhc20vZnNsX3BjaS5oPgorI2luY2x1ZGUgPGxpYmZkdC5oPgorI2luY2x1ZGUgPGZkdF9zdXBwb3J0Lmg+CisjaW5jbHVkZSA8YXNtL2ZzbF9zZXJkZXMuaD4KKworI2lmZGVmIENPTkZJR19QQ0lFMQorc3RhdGljIHN0cnVjdCBwY2lfY29udHJvbGxlciBwY2llMV9ob3NlOworI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfUENJRTIKK3N0YXRpYyBzdHJ1Y3QgcGNpX2NvbnRyb2xsZXIgcGNpZTJfaG9zZTsKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1BDSUUzCitzdGF0aWMgc3RydWN0IHBjaV9jb250cm9sbGVyIHBjaWUzX2hvc2U7CisjZW5kaWYKKwordm9pZCBwY2lfaW5pdF9ib2FyZCh2b2lkKQoreworCXZvbGF0aWxlIGNjc3JfZ3VyX3QgKmd1ciA9ICh2b2lkICopKENPTkZJR19TWVNfTVBDODV4eF9HVVRTX0FERFIpOworCXN0cnVjdCBmc2xfcGNpX2luZm8gcGNpX2luZm9bM107CisJdTMyIGRldmRpc3I7CisJaW50IGZpcnN0X2ZyZWVfYnVzbm8gPSAwOworCWludCBudW0gPSAwOworCisJaW50IHBjaWVfZXAsIHBjaWVfY29uZmlndXJlZDsKKworCWRldmRpc3IgPSBpbl9iZTMyKCZndXItPmRldmRpc3IpOworCisJZGVidWcgKCIgICBwY2lfaW5pdF9ib2FyZDogZGV2ZGlzcj0leFxuIiwgZGV2ZGlzcik7CisKKyNpZmRlZiBDT05GSUdfUENJRTEKKwlwY2llX2NvbmZpZ3VyZWQgPSBpc19zZXJkZXNfY29uZmlndXJlZChQQ0lFMSk7CisKKwlpZiAocGNpZV9jb25maWd1cmVkICYmICEoZGV2ZGlzciAmIEZTTF9DT1JFTkVUX0RFVkRJU1JfUENJRTEpKSB7CisJCXNldF9uZXh0X2xhdyhDT05GSUdfU1lTX1BDSUUxX01FTV9QSFlTLCBMQVdfU0laRV81MTJNLAorCQkJCUxBV19UUkdUX0lGX1BDSUVfMSk7CisJCXNldF9uZXh0X2xhdyhDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMsIExBV19TSVpFXzY0SywKKwkJCQlMQVdfVFJHVF9JRl9QQ0lFXzEpOworCQlTRVRfU1REX1BDSUVfSU5GTyhwY2lfaW5mb1tudW1dLCAxKTsKKwkJcGNpZV9lcCA9IGZzbF9zZXR1cF9ob3NlKCZwY2llMV9ob3NlLCBwY2lfaW5mb1tudW1dLnJlZ3MpOworCQlwcmludGYoIiAgICBQQ0lFMSBjb25uZWN0ZWQgdG8gU2xvdCAxIGFzICVzIChiYXNlIGFkZHIgJWx4KVxuIiwKKwkJCQlwY2llX2VwID8gIkVuZCBQb2ludCIgOiAiUm9vdCBDb21wbGV4IiwKKwkJCQlwY2lfaW5mb1tudW1dLnJlZ3MpOworCQlmaXJzdF9mcmVlX2J1c25vID0gZnNsX3BjaV9pbml0X3BvcnQoJnBjaV9pbmZvW251bSsrXSwKKwkJCQkmcGNpZTFfaG9zZSwgZmlyc3RfZnJlZV9idXNubyk7CisJfSBlbHNlIHsKKwkJcHJpbnRmICgiICAgIFBDSUUxOiBkaXNhYmxlZFxuIik7CisJfQorI2Vsc2UKKwlzZXRiaXRzX2JlMzIoJmd1ci0+ZGV2ZGlzciwgRlNMX0NPUkVORVRfREVWRElTUl9QQ0lFMSk7IC8qIGRpc2FibGUgKi8KKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX1BDSUUyCisJcGNpZV9jb25maWd1cmVkID0gaXNfc2VyZGVzX2NvbmZpZ3VyZWQoUENJRTIpOworCisJaWYgKHBjaWVfY29uZmlndXJlZCAmJiAhKGRldmRpc3IgJiBGU0xfQ09SRU5FVF9ERVZESVNSX1BDSUUyKSkgeworCQlzZXRfbmV4dF9sYXcoQ09ORklHX1NZU19QQ0lFMl9NRU1fUEhZUywgTEFXX1NJWkVfNTEyTSwKKwkJCQlMQVdfVFJHVF9JRl9QQ0lFXzIpOworCQlzZXRfbmV4dF9sYXcoQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTLCBMQVdfU0laRV82NEssCisJCQkJTEFXX1RSR1RfSUZfUENJRV8yKTsKKwkJU0VUX1NURF9QQ0lFX0lORk8ocGNpX2luZm9bbnVtXSwgMik7CisJCXBjaWVfZXAgPSBmc2xfc2V0dXBfaG9zZSgmcGNpZTJfaG9zZSwgcGNpX2luZm9bbnVtXS5yZWdzKTsKKwkJcHJpbnRmKCIgICAgUENJRTIgY29ubmVjdGVkIHRvIFNsb3QgMyBhcyAlcyAoYmFzZSBhZGRyICVseClcbiIsCisJCQkJcGNpZV9lcCA/ICJFbmQgUG9pbnQiIDogIlJvb3QgQ29tcGxleCIsCisJCQkJcGNpX2luZm9bbnVtXS5yZWdzKTsKKwkJZmlyc3RfZnJlZV9idXNubyA9IGZzbF9wY2lfaW5pdF9wb3J0KCZwY2lfaW5mb1tudW0rK10sCisJCQkJJnBjaWUyX2hvc2UsIGZpcnN0X2ZyZWVfYnVzbm8pOworCX0gZWxzZSB7CisJCXByaW50ZiAoIiAgICBQQ0lFMjogZGlzYWJsZWRcbiIpOworCX0KKyNlbHNlCisJc2V0Yml0c19iZTMyKCZndXItPmRldmRpc3IsIEZTTF9DT1JFTkVUX0RFVkRJU1JfUENJRTIpOyAvKiBkaXNhYmxlICovCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19QQ0lFMworCXBjaWVfY29uZmlndXJlZCA9IGlzX3NlcmRlc19jb25maWd1cmVkKFBDSUUzKTsKKworCWlmIChwY2llX2NvbmZpZ3VyZWQgJiYgIShkZXZkaXNyICYgRlNMX0NPUkVORVRfREVWRElTUl9QQ0lFMykpIHsKKwkJc2V0X25leHRfbGF3KENPTkZJR19TWVNfUENJRTNfTUVNX1BIWVMsIExBV19TSVpFXzUxMk0sCisJCQkJTEFXX1RSR1RfSUZfUENJRV8zKTsKKwkJc2V0X25leHRfbGF3KENPTkZJR19TWVNfUENJRTNfSU9fUEhZUywgTEFXX1NJWkVfNjRLLAorCQkJCUxBV19UUkdUX0lGX1BDSUVfMyk7CisJCVNFVF9TVERfUENJRV9JTkZPKHBjaV9pbmZvW251bV0sIDMpOworCQlwY2llX2VwID0gZnNsX3NldHVwX2hvc2UoJnBjaWUzX2hvc2UsIHBjaV9pbmZvW251bV0ucmVncyk7CisJCXByaW50ZigiICAgIFBDSUUzIGNvbm5lY3RlZCB0byBTbG90IDIgYXMgJXMgKGJhc2UgYWRkciAlbHgpXG4iLAorCQkJCXBjaWVfZXAgPyAiRW5kIFBvaW50IiA6ICJSb290IENvbXBsZXgiLAorCQkJCXBjaV9pbmZvW251bV0ucmVncyk7CisJCWZpcnN0X2ZyZWVfYnVzbm8gPSBmc2xfcGNpX2luaXRfcG9ydCgmcGNpX2luZm9bbnVtKytdLAorCQkJCSZwY2llM19ob3NlLCBmaXJzdF9mcmVlX2J1c25vKTsKKwl9IGVsc2UgeworCQlwcmludGYgKCIgICAgUENJRTM6IGRpc2FibGVkXG4iKTsKKwl9CisjZWxzZQorCXNldGJpdHNfYmUzMigmZ3VyLT5kZXZkaXNyLCBGU0xfQ09SRU5FVF9ERVZESVNSX1BDSUUzKTsgLyogZGlzYWJsZSAqLworI2VuZGlmCit9CisKK3ZvaWQgcGNpX29mX3NldHVwKHZvaWQgKmJsb2IsIGJkX3QgKmJkKQoreworCUZUX0ZTTF9QQ0lfU0VUVVA7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy90bGIuYyBiL2JvYXJkL2ZyZWVzY2FsZS9jb3JlbmV0X2RzL3RsYi5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFhZTA0MTYKLS0tIC9kZXYvbnVsbAorKysgYi9ib2FyZC9mcmVlc2NhbGUvY29yZW5ldF9kcy90bGIuYwpAQCAtMCwwICsxLDExMiBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA4LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiAoQykgQ29weXJpZ2h0IDIwMDAKKyAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisgKiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorICoKKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisgKiBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorICogRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwKKyAqIE1BIDAyMTExLTEzMDcgVVNBCisgKi8KKworI2luY2x1ZGUgPGNvbW1vbi5oPgorI2luY2x1ZGUgPGFzbS9tbXUuaD4KKworc3RydWN0IGZzbF9lX3RsYl9lbnRyeSB0bGJfdGFibGVbXSA9IHsKKwkvKiBUTEIgMCAtIGZvciB0ZW1wIHN0YWNrIGluIGNhY2hlICovCisJU0VUX1RMQl9FTlRSWSgwLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIsCisJCSAgICAgIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTLAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKKwkJICAgICAgMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKKwlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDQgKiAxMDI0LAorCQkgICAgICBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZUyArIDQgKiAxMDI0LAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKKwkJICAgICAgMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKKwlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDggKiAxMDI0LAorCQkgICAgICBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZUyArIDggKiAxMDI0LAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKKwkJICAgICAgMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKKwlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDEyICogMTAyNCwKKwkJICAgICAgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVMgKyAxMiAqIDEwMjQsCisJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCAwLAorCQkgICAgICAwLCAwLCBCT09LRV9QQUdFU1pfNEssIDApLAorCisJU0VUX1RMQl9FTlRSWSgwLCBQSVhJU19CQVNFLCBQSVhJU19CQVNFX1BIWVMsCisJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkgICAgICAwLCAwLCBCT09LRV9QQUdFU1pfNEssIDApLAorCisJLyogVExCIDEgKi8KKwkvKiAqSSoqKiAtIENvdmVycyBib290IHBhZ2UgKi8KKwlTRVRfVExCX0VOVFJZKDEsIDB4ZmZmZmYwMDAsIDB4ZmZmZmYwMDAsCisJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkgICAgICAwLCAwLCBCT09LRV9QQUdFU1pfNEssIDEpLAorCisJLyogKkkqRyogLSBDQ1NSQkFSICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0NDU1JCQVIsIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTLAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJICAgICAgMCwgMSwgQk9PS0VfUEFHRVNaXzE2TSwgMSksCisKKwkvKiAqSSpHKiAtIEZsYXNoLCBsb2NhbGJ1cyAqLworCS8qIFRoaXMgd2lsbCBiZSBjaGFuZ2VkIHRvICpJKkcqIGFmdGVyIHJlbG9jYXRpb24gdG8gUkFNLiAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19GTEFTSF9CQVNFLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUywKKwkJICAgICAgTUFTM19TWHxNQVMzX1NSLCBNQVMyX1d8TUFTMl9HLAorCQkgICAgICAwLCAyLCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCisKKwkvKiAqSSpHKiAtIFBDSSAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFMV9NRU1fVklSVCwgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUywKKwkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCSAgICAgIDAsIDMsIEJPT0tFX1BBR0VTWl8xRywgMSksCisKKwkvKiAqSSpHKiAtIFBDSSAqLworCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19QQ0lFMV9NRU1fVklSVCArIDB4NDAwMDAwMDAsCisJCSAgICAgIENPTkZJR19TWVNfUENJRTFfTUVNX1BIWVMgKyAweDQwMDAwMDAwLAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJICAgICAgMCwgNCwgQk9PS0VfUEFHRVNaXzI1Nk0sIDEpLAorCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1BDSUUxX01FTV9WSVJUICsgMHg1MDAwMDAwMCwKKwkJICAgICAgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUyArIDB4NTAwMDAwMDAsCisJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCBNQVMyX0l8TUFTMl9HLAorCQkgICAgICAwLCA1LCBCT09LRV9QQUdFU1pfMjU2TSwgMSksCisKKwkvKiAqSSpHKiAtIFBDSSBJL08gKi8KKwlTRVRfVExCX0VOVFJZKDEsIENPTkZJR19TWVNfUENJRTFfSU9fVklSVCwgQ09ORklHX1NZU19QQ0lFMV9JT19QSFlTLAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJICAgICAgMCwgNiwgQk9PS0VfUEFHRVNaXzI1NkssIDEpLAorCisJLyogQm1hbi9RbWFuICovCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0JNQU5fTUVNX0JBU0UsIENPTkZJR19TWVNfQk1BTl9NRU1fUEhZUywKKwkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIDAsCisJCSAgICAgIDAsIDksIEJPT0tFX1BBR0VTWl8xTSwgMSksCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0JNQU5fTUVNX0JBU0UgKyAweDAwMTAwMDAwLAorCQkgICAgICBDT05GSUdfU1lTX0JNQU5fTUVNX1BIWVMgKyAweDAwMTAwMDAwLAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJICAgICAgMCwgMTAsIEJPT0tFX1BBR0VTWl8xTSwgMSksCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX1FNQU5fTUVNX0JBU0UsIENPTkZJR19TWVNfUU1BTl9NRU1fUEhZUywKKwkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIDAsCisJCSAgICAgIDAsIDExLCBCT09LRV9QQUdFU1pfMU0sIDEpLAorCVNFVF9UTEJfRU5UUlkoMSwgQ09ORklHX1NZU19RTUFOX01FTV9CQVNFICsgMHgwMDEwMDAwMCwKKwkJICAgICAgQ09ORklHX1NZU19RTUFOX01FTV9QSFlTICsgMHgwMDEwMDAwMCwKKwkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIE1BUzJfSXxNQVMyX0csCisJCSAgICAgIDAsIDEyLCBCT09LRV9QQUdFU1pfMU0sIDEpLAorI2lmZGVmIENPTkZJR19TWVNfRENTUkJBUl9QSFlTCisJU0VUX1RMQl9FTlRSWSgxLCBDT05GSUdfU1lTX0RDU1JCQVIsIENPTkZJR19TWVNfRENTUkJBUl9QSFlTLAorCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgTUFTMl9JfE1BUzJfRywKKwkJICAgICAgMCwgMTMsIEJPT0tFX1BBR0VTWl80TSwgMSksCisjZW5kaWYKK307CisKK2ludCBudW1fdGxiX2VudHJpZXMgPSBBUlJBWV9TSVpFKHRsYl90YWJsZSk7CmRpZmYgLS1naXQgYS9ib2FyZC9mcmVlc2NhbGUvbXBjODY0MWhwY24vbXBjODY0MWhwY24uYyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjQxaHBjbi9tcGM4NjQxaHBjbi5jCmluZGV4IGQ4NmNhMTIuLmZlZTMxMGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjQxaHBjbi9tcGM4NjQxaHBjbi5jCisrKyBiL2JvYXJkL2ZyZWVzY2FsZS9tcGM4NjQxaHBjbi9tcGM4NjQxaHBjbi5jCkBAIC02MCw2ICs2MCw4IEBACiAJcmV0dXJuIDA7CiB9CiAKK2NvbnN0IGNoYXIgKmJvYXJkX2h3Y29uZmlnID0gImZvbzpiYXI9YmF6IjsKK2NvbnN0IGNoYXIgKmNwdV9od2NvbmZpZyA9ICJmb286YmFyPWJheiI7CiAKIHBoeXNfc2l6ZV90CiBpbml0ZHJhbShpbnQgYm9hcmRfdHlwZSkKZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9wMjAyMGRzL2Rkci5jIGIvYm9hcmQvZnJlZXNjYWxlL3AyMDIwZHMvZGRyLmMKaW5kZXggYjljMGNiMi4uMzBkNjQwZiAxMDA2NDQKLS0tIGEvYm9hcmQvZnJlZXNjYWxlL3AyMDIwZHMvZGRyLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL3AyMDIwZHMvZGRyLmMKQEAgLTEyLDcgKzEyLDcgQEAKICNpbmNsdWRlIDxhc20vZnNsX2Rkcl9zZHJhbS5oPgogI2luY2x1ZGUgPGFzbS9mc2xfZGRyX2RpbW1fcGFyYW1zLmg+CiAKLXN0YXRpYyB2b2lkIGdldF9zcGQoZGRyM19zcGRfZWVwcm9tX3QgKnNwZCwgdW5zaWduZWQgY2hhciBpMmNfYWRkcmVzcykKK3N0YXRpYyB2b2lkIGdldF9zcGQoZ2VuZXJpY19zcGRfZWVwcm9tX3QgKnNwZCwgdW5zaWduZWQgY2hhciBpMmNfYWRkcmVzcykKIHsKIAlpMmNfcmVhZChpMmNfYWRkcmVzcywgMCwgMSwgKHVjaGFyICopc3BkLCBzaXplb2YoZGRyM19zcGRfZWVwcm9tX3QpKTsKIH0KQEAgLTIyLDcgKzIyLDcgQEAKIAlyZXR1cm4gZ2V0X2Rkcl9mcmVxKDApOwogfQogCi12b2lkIGZzbF9kZHJfZ2V0X3NwZChkZHIzX3NwZF9lZXByb21fdCAqY3RybF9kaW1tc19zcGQsCit2b2lkIGZzbF9kZHJfZ2V0X3NwZChnZW5lcmljX3NwZF9lZXByb21fdCAqY3RybF9kaW1tc19zcGQsCiAJCSAgICAgIHVuc2lnbmVkIGludCBjdHJsX251bSkKIHsKIAl1bnNpZ25lZCBpbnQgaTsKQEAgLTUxLDI3ICs1MSwyNiBAQAogICogIGNwbyAyLTB4MUUgKDMwKQogICovCiAKLQotLyogWFhYOiB0aGVzZSB2YWx1ZXMgbmVlZCB0byBiZSBjaGVja2VkIGZvciBhbGwgaW50ZXJsZWF2aW5nIG1vZGVzLiAgKi8KLS8qIFhYWDogTm8gcmVsaWFibGUgZHVhbC1yYW5rIDgwMCBNSHogc2V0dGluZyBoYXMgYmVlbiBmb3VuZC4gIEl0IG1heQotICogICAgICBzZWVtIHJlbGlhYmxlLCBidXQgZXJyb3JzIHdpbGwgYXBwZWFyIHdoZW4gbWVtb3J5IGludGVuc2l2ZQotICogICAgICBwcm9ncmFtIGlzIHJ1bi4gKi8KLS8qIFhYWDogU2luZ2xlIHJhbmsgYXQgODAwIE1IeiBpcyBPSy4gICovCiBjb25zdCBib2FyZF9zcGVjaWZpY19wYXJhbWV0ZXJzX3QgYm9hcmRfc3BlY2lmaWNfcGFyYW1ldGVyc1tdWzIwXSA9IHsKIAl7CiAJLyogCW1lbW9yeSBjb250cm9sbGVyIDAgCQkJKi8KIAkvKgkgIGxvfCAgaGl8ICBudW18ICBjbGt8IGNwb3x3cmRhdGF8MlQJKi8KIAkvKgkgbWh6fCBtaHp8cmFua3N8YWRqc3R8ICAgIHwgZGVsYXl8CSovCi0JCXsgIDAsIDMzMywgICAgMiwgICAgNiwgICA3LCAgICAzLCAgMH0sCi0JCXszMzQsIDQwMCwgICAgMiwgICAgNiwgICA5LCAgICAzLCAgMH0sCi0JCXs0MDEsIDU0OSwgICAgMiwgICAgNiwgIDExLCAgICAzLCAgMH0sCi0JCXs1NTAsIDY4MCwgICAgMiwgICAgMSwgIDEwLCAgICA1LCAgMH0sCi0JCXs2ODEsIDg1MCwgICAgMiwgICAgMSwgIDEyLCAgICA1LCAgMX0sCi0JCXsgIDAsIDMzMywgICAgMSwgICAgNiwgICA3LCAgICAzLCAgMH0sCi0JCXszMzQsIDQwMCwgICAgMSwgICAgNiwgICA5LCAgICAzLCAgMH0sCi0JCXs0MDEsIDU0OSwgICAgMSwgICAgNiwgIDExLCAgICAzLCAgMH0sCi0JCXs1NTAsIDY4MCwgICAgMSwgICAgMSwgIDEwLCAgICA1LCAgMH0sCi0JCXs2ODEsIDg1MCwgICAgMSwgICAgMSwgIDEyLCAgICA1LCAgMH0KKyNpZmRlZiBDT05GSUdfRlNMX0REUjIKKwkJeyAgMCwgMzMzLCAgICAyLCAgICA0LCAgIDB4MWYsICAgIDIsICAwfSwKKwkJezMzNCwgNDAwLCAgICAyLCAgICA0LCAgIDB4MWYsICAgIDIsICAwfSwKKwkJezQwMSwgNTQ5LCAgICAyLCAgICA0LCAgIDB4MWYsICAgIDIsICAwfSwKKwkJezU1MCwgNjgwLCAgICAyLCAgICA0LCAgIDB4MWYsICAgIDMsICAwfSwKKwkJezY4MSwgODUwLCAgICAyLCAgICA0LCAgIDB4MWYsICAgIDQsICAwfSwKKwkJeyAgMCwgMzMzLCAgICAxLCAgICA0LCAgIDB4MWYsICAgIDIsICAwfSwKKwkJezMzNCwgNDAwLCAgICAxLCAgICA0LCAgIDB4MWYsICAgIDIsICAwfSwKKwkJezQwMSwgNTQ5LCAgICAxLCAgICA0LCAgIDB4MWYsICAgIDIsICAwfSwKKwkJezU1MCwgNjgwLCAgICAxLCAgICA0LCAgIDB4MWYsICAgIDMsICAwfSwKKwkJezY4MSwgODUwLCAgICAxLCAgICA0LCAgIDB4MWYsICAgIDQsICAwfQorI2Vsc2UKKwkJeyAgMCwgODUwLCAgICAyLCAgICA0LCAgIDB4MWYsICAgIDQsICAwfSwKKwkJeyAgMCwgODUwLCAgICAxLCAgICA0LCAgIDB4MWYsICAgIDQsICAwfQorI2VuZGlmCiAJfSwKIH07CiAKQEAgLTkyLDE4ICs5MSw4IEBACiAJICogb2R0X3dyX2NmZyB0byAzIGZvciB0aGUgZXZlbiBDUywgMCBmb3IgdGhlIG9kZCBDUy4KIAkgKi8KIAlmb3IgKGkgPSAwOyBpIDwgQ09ORklHX0NISVBfU0VMRUNUU19QRVJfQ1RSTDsgaSsrKSB7Ci0JCWlmIChpJjEpIHsJLyogb2RkIENTICovCiAJCQlwb3B0cy0+Y3NfbG9jYWxfb3B0c1tpXS5vZHRfcmRfY2ZnID0gMDsKLQkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF93cl9jZmcgPSAwOwotCQl9IGVsc2UgewkvKiBldmVuIENTICovCi0JCQlpZiAoQ09ORklHX0RJTU1fU0xPVFNfUEVSX0NUTFIgPT0gMSkgewotCQkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF9yZF9jZmcgPSAwOwotCQkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF93cl9jZmcgPSA0OwotCQkJfSBlbHNlIGlmIChDT05GSUdfRElNTV9TTE9UU19QRVJfQ1RMUiA9PSAyKSB7Ci0JCQkJcG9wdHMtPmNzX2xvY2FsX29wdHNbaV0ub2R0X3JkX2NmZyA9IDM7Ci0JCQkJcG9wdHMtPmNzX2xvY2FsX29wdHNbaV0ub2R0X3dyX2NmZyA9IDM7Ci0JCQl9Ci0JCX0KKwkJCXBvcHRzLT5jc19sb2NhbF9vcHRzW2ldLm9kdF93cl9jZmcgPSAxOwogCX0KIAogCS8qIEdldCBjbGtfYWRqdXN0LCBjcG8sIHdyaXRlX2RhdGFfZGVsYXksMlQsIGFjY29yZGluZyB0byB0aGUgYm9hcmQgZGRyCkBAIC0xMjcsNCArMTE2LDEzIEBACiAJICoJLSBudW1iZXIgb2YgRElNTXMgaW5zdGFsbGVkCiAJICovCiAJcG9wdHMtPmhhbGZfc3RyZW5ndGhfZHJpdmVyX2VuYWJsZSA9IDA7CisJcG9wdHMtPndybHZsX2VuID0gMTsKKwkvKiBXcml0ZSBsZXZlbGluZyBvdmVycmlkZSAqLworCXBvcHRzLT53cmx2bF9vdmVycmlkZSA9IDE7CisJcG9wdHMtPndybHZsX3NhbXBsZSA9IDB4YTsKKwlwb3B0cy0+d3Jsdmxfc3RhcnQgPSAweDc7CisJLyogUnR0IGFuZCBSdHRfV1Igb3ZlcnJpZGUgKi8KKwlwb3B0cy0+cnR0X292ZXJyaWRlID0gMTsKKwlwb3B0cy0+cnR0X292ZXJyaWRlX3ZhbHVlID0gRERSM19SVFRfMTIwX09ITTsKKwlwb3B0cy0+cnR0X3dyX292ZXJyaWRlX3ZhbHVlID0gMDsgLyogUnR0X1dSPSBkeW5hbWljIE9EVCBvZmYgKi8KIH0KZGlmZiAtLWdpdCBhL2JvYXJkL2ZyZWVzY2FsZS9wMjAyMGRzL3AyMDIwZHMuYyBiL2JvYXJkL2ZyZWVzY2FsZS9wMjAyMGRzL3AyMDIwZHMuYwppbmRleCAzZmQxYjM0Li42MDhmZjkxIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvcDIwMjBkcy9wMjAyMGRzLmMKKysrIGIvYm9hcmQvZnJlZXNjYWxlL3AyMDIwZHMvcDIwMjBkcy5jCkBAIC02OSwxMyArNjksMTYgQEAKIAlyZXR1cm4gMDsKIH0KIAorY29uc3QgY2hhciAqYm9hcmRfaHdjb25maWcgPSAiZm9vOmJhcj1iYXoiOworY29uc3QgY2hhciAqY3B1X2h3Y29uZmlnID0gImZvbzpiYXI9YmF6IjsKKwogcGh5c19zaXplX3QgaW5pdGRyYW0oaW50IGJvYXJkX3R5cGUpCiB7CiAJcGh5c19zaXplX3QgZHJhbV9zaXplID0gMDsKIAogCXB1dHMoIkluaXRpYWxpemluZy4uLi4iKTsKIAotI2lmZGVmIENPTkZJR19TUERfRUVQUk9NCisjaWZkZWYgQ09ORklHX0REUl9TUEQKIAlkcmFtX3NpemUgPSBmc2xfZGRyX3NkcmFtKCk7CiAjZWxzZQogCWRyYW1fc2l6ZSA9IGZpeGVkX3NkcmFtKCk7CkBAIC05NCw3ICs5Nyw3IEBACiAJcmV0dXJuIGRyYW1fc2l6ZTsKIH0KIAotI2lmICFkZWZpbmVkKENPTkZJR19TUERfRUVQUk9NKQorI2lmICFkZWZpbmVkKENPTkZJR19ERFJfU1BEKQogLyoKICAqIEZpeGVkIHNkcmFtIGluaXQgLS0gZG9lc24ndCB1c2Ugc2VyaWFsIHByZXNlbmNlIGRldGVjdC4KICAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQvZnJlZXNjYWxlL3AyMDIwZHMvdGxiLmMgYi9ib2FyZC9mcmVlc2NhbGUvcDIwMjBkcy90bGIuYwppbmRleCAzNmFkMDg2Li44MjRiM2IyIDEwMDY0NAotLS0gYS9ib2FyZC9mcmVlc2NhbGUvcDIwMjBkcy90bGIuYworKysgYi9ib2FyZC9mcmVlc2NhbGUvcDIwMjBkcy90bGIuYwpAQCAtMjgsMTkgKzI4LDE5IEBACiAKIHN0cnVjdCBmc2xfZV90bGJfZW50cnkgdGxiX3RhYmxlW10gPSB7CiAJLyogVExCIDAgLSBmb3IgdGVtcCBzdGFjayBpbiBjYWNoZSAqLwotCVNFVF9UTEJfRU5UUlkoMCwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIsCisJU0VUX1RMQl9FTlRSWSgwLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTLAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKIAkJICAgICAgMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKIAlTRVRfVExCX0VOVFJZKDAsIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUiArIDQgKiAxMDI0LAotCQkgICAgICBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyA0ICogMTAyNCwKKwkJICAgICAgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVMgKyA0ICogMTAyNCwKIAkJICAgICAgTUFTM19TWHxNQVMzX1NXfE1BUzNfU1IsIDAsCiAJCSAgICAgIDAsIDAsIEJPT0tFX1BBR0VTWl80SywgMCksCiAJU0VUX1RMQl9FTlRSWSgwLCBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyA4ICogMTAyNCwKLQkJICAgICAgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgOCAqIDEwMjQsCisJCSAgICAgIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTICsgOCAqIDEwMjQsCiAJCSAgICAgIE1BUzNfU1h8TUFTM19TV3xNQVMzX1NSLCAwLAogCQkgICAgICAwLCAwLCBCT09LRV9QQUdFU1pfNEssIDApLAogCVNFVF9UTEJfRU5UUlkoMCwgQ09ORklHX1NZU19JTklUX1JBTV9BRERSICsgMTIgKiAxMDI0LAotCQkgICAgICBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIgKyAxMiAqIDEwMjQsCisJCSAgICAgIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTICsgMTIgKiAxMDI0LAogCQkgICAgICBNQVMzX1NYfE1BUzNfU1d8TUFTM19TUiwgMCwKIAkJICAgICAgMCwgMCwgQk9PS0VfUEFHRVNaXzRLLCAwKSwKIApkaWZmIC0tZ2l0IGEvYm9hcmQvZzIwMDAvZzIwMDAuYyBiL2JvYXJkL2cyMDAwL2cyMDAwLmMKaW5kZXggOGIxNWU1MS4uNzEzYjY5OSAxMDA2NDQKLS0tIGEvYm9hcmQvZzIwMDAvZzIwMDAuYworKysgYi9ib2FyZC9nMjAwMC9nMjAwMC5jCkBAIC05MSw3ICs5MSw3IEBACiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCmRpZmYgLS1naXQgYS9ib2FyZC9nZW44NjB0L2dlbjg2MHQuYyBiL2JvYXJkL2dlbjg2MHQvZ2VuODYwdC5jCmluZGV4IGIzN2EwZjIuLmQxNzU4NTggMTAwNjQ0Ci0tLSBhL2JvYXJkL2dlbjg2MHQvZ2VuODYwdC5jCisrKyBiL2JvYXJkL2dlbjg2MHQvZ2VuODYwdC5jCkBAIC0xMzIsNyArMTMyLDcgQEAKIAljaGFyIGJ1Zls2NF07CiAJaW50IGk7CiAKLQlpID0gZ2V0ZW52X3IgKCJib2FyZF9pZCIsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKKwlpID0gZ2V0ZW52X2YoImJvYXJkX2lkIiwgYnVmLCBzaXplb2YgKGJ1ZikpOwogCXMgPSAoaSA+IDApID8gYnVmIDogTlVMTDsKIAogCWlmIChzKSB7CkBAIC0xNDEsNyArMTQxLDcgQEAKIAkJcHJpbnRmICgiPHVua25vd24+ICIpOwogCX0KIAotCWkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBidWYsIHNpemVvZiAoYnVmKSk7CisJaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgYnVmLCBzaXplb2YgKGJ1ZikpOwogCXMgPSAoaSA+IDApID8gYnVmIDogTlVMTDsKIAogCWlmIChzKSB7CkBAIC0yNzYsNyArMjc2LDcgQEAKIAkvKgogCSAqIFJlYWQgdGhlIGVudmlyb25tZW50IHRvIHNlZSB3aGF0IHRvIGRvIHdpdGggdGhlIGJlZXBlcgogCSAqLwotCWkgPSBnZXRlbnZfciAoImJlZXBlciIsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKKwlpID0gZ2V0ZW52X2YoImJlZXBlciIsIGJ1Ziwgc2l6ZW9mIChidWYpKTsKIAlpZiAoaSA+IDApIHsKIAkJZG9fYmVlcGVyIChidWYpOwogCX0KZGlmZiAtLWdpdCBhL2JvYXJkL2lua2E0eDAvaW5rYTR4MC5jIGIvYm9hcmQvaW5rYTR4MC9pbmthNHgwLmMKaW5kZXggMjdiNzllYy4uZmM0OThkNiAxMDA2NDQKLS0tIGEvYm9hcmQvaW5rYTR4MC9pbmthNHgwLmMKKysrIGIvYm9hcmQvaW5rYTR4MC9pbmthNHgwLmMKQEAgLTE4Nyw3ICsxODcsNyBAQAogCWNoYXIgdG1wWzEwXTsKIAlpbnQgaSwgYnI7CiAKLQlpID0gZ2V0ZW52X3IoImJyaWdodG5lc3MiLCB0bXAsIHNpemVvZih0bXApKTsKKwlpID0gZ2V0ZW52X2YoImJyaWdodG5lc3MiLCB0bXAsIHNpemVvZih0bXApKTsKIAliciA9IChpID4gMCkKIAkJPyAoaW50KSBzaW1wbGVfc3RydG91bCAodG1wLCBOVUxMLCAxMCkKIAkJOiBDT05GSUdfU1lTX0JSSUdIVE5FU1M7CmRpZmYgLS1naXQgYS9ib2FyZC9pcDg2MC9pcDg2MC5jIGIvYm9hcmQvaXA4NjAvaXA4NjAuYwppbmRleCBlMmExODUxLi5hZGZmMmIyIDEwMDY0NAotLS0gYS9ib2FyZC9pcDg2MC9pcDg2MC5jCisrKyBiL2JvYXJkL2lwODYwL2lwODYwLmMKQEAgLTExNCw3ICsxMTQsNyBAQAogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIAotCWkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCAoY2hhciAqKWJ1Ziwgc2l6ZW9mIChidWYpKTsKKwlpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCAoY2hhciAqKWJ1Ziwgc2l6ZW9mIChidWYpKTsKIAlzID0gKGkgPiAwKSA/IGJ1ZiA6IE5VTEw7CiAKIAlpZiAoIXMgfHwgc3RybmNtcCAoKGNoYXIgKilzLCAiSVA4NjAiLCA1KSkgewpkaWZmIC0tZ2l0IGEvYm9hcmQva3VwL2NvbW1vbi9rdXAuYyBiL2JvYXJkL2t1cC9jb21tb24va3VwLmMKaW5kZXggMjQxOGQ1OS4uMzgyNTlhNSAxMDA2NDQKLS0tIGEvYm9hcmQva3VwL2NvbW1vbi9rdXAuYworKysgYi9ib2FyZC9rdXAvY29tbW9uL2t1cC5jCkBAIC0yNCw0OSArMjQsNjEgQEAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxtcGM4eHguaD4KICNpbmNsdWRlICJrdXAuaCIKKyNpbmNsdWRlIDxhc20vaW8uaD4KIAotaW50IG1pc2NfaW5pdF9mICh2b2lkKQorCitpbnQgbWlzY19pbml0X2Yodm9pZCkKIHsKIAl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENPTkZJR19TWVNfSU1NUjsKIAl2b2xhdGlsZSBzeXNjb25mOHh4X3QgKnNpdSA9ICZpbW1hcC0+aW1fc2l1X2NvbmY7CiAKLQl3aGlsZSAoc2l1LT5zY19zaXBlbmQgJiAweDIwMDAwMDAwKSB7Ci0JCS8qIHByaW50Zigid2FpdGluZyBmb3IgNVYgVkNDXG4iKTsgKi8KLQkJOworCXdoaWxlIChpbl9iZTMyKCZzaXUtPnNjX3NpcGVuZCkgJiAweDIwMDAwMDAwKSB7CisJCWRlYnVnKCJ3YWl0aW5nIGZvciA1ViBWQ0NcbiIpOwogCX0KIAogCS8qIFJTMjMyIC8gUlM0ODUgZGVmYXVsdCBpcyBSUzIzMiAqLwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGF0ICY9IH4oUEFfUlM0ODUpOwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3BhcGFyICY9IH4oUEFfUlM0ODUpOwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3Bhb2RyICY9IH4oUEFfUlM0ODUpOwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGlyIHw9IChQQV9SUzQ4NSk7CisJY2xyYml0c19iZTE2KCZpbW1hcC0+aW1faW9wb3J0LmlvcF9wYWRhdCwgUEFfUlM0ODUpOworCWNscmJpdHNfYmUxNigmaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFwYXIsIFBBX1JTNDg1KTsKKwljbHJiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3Bhb2RyLCBQQV9SUzQ4NSk7CisJc2V0Yml0c19iZTE2KCZpbW1hcC0+aW1faW9wb3J0LmlvcF9wYWRpciwgUEFfUlM0ODUpOworCisJLyogSU8gUmVzZXQgbWluIDEgbXNlYyAqLworCXNldGJpdHNfYmUxNigmaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFkYXQsCisJCQkJIChQQV9SRVNFVF9JT18wMSB8IFBBX1JFU0VUX0lPXzAyKSk7CisJY2xyYml0c19iZTE2KCZpbW1hcC0+aW1faW9wb3J0LmlvcF9wYXBhciwKKwkJCQkgKFBBX1JFU0VUX0lPXzAxIHwgUEFfUkVTRVRfSU9fMDIpKTsKKwljbHJiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3Bhb2RyLAorCQkJCSAoUEFfUkVTRVRfSU9fMDEgfCBQQV9SRVNFVF9JT18wMikpOworCXNldGJpdHNfYmUxNigmaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFkaXIsCisJCQkJIChQQV9SRVNFVF9JT18wMSB8IFBBX1JFU0VUX0lPXzAyKSk7CisJdWRlbGF5KDEwMDApOworCWNscmJpdHNfYmUxNigmaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFkYXQsCisJCQkJIChQQV9SRVNFVF9JT18wMSB8IFBBX1JFU0VUX0lPXzAyKSk7CiAJcmV0dXJuICgwKTsKIH0KIAotCiAjaWZkZWYgQ09ORklHX0lERV9MRUQKLXZvaWQgaWRlX2xlZCAodWNoYXIgbGVkLCB1Y2hhciBzdGF0dXMpCit2b2lkIGlkZV9sZWQodWNoYXIgbGVkLCB1Y2hhciBzdGF0dXMpCiB7CiAJdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7CiAKIAkvKiBXZSBoYXZlIG9uZSBsZWQgZm9yIGJvdGggcGNtY2lhIHNsb3RzICovCi0JaWYgKHN0YXR1cykgewkJLyogbGVkIG9uICovCi0JCWltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGF0ICY9IH4oUEFfTEVEX1lFTExPVyk7Ci0JfSBlbHNlIHsKLQkJaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFkYXQgfD0gKFBBX0xFRF9ZRUxMT1cpOwotCX0KKwlpZiAoc3RhdHVzKQorCQljbHJiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGF0LCBQQV9MRURfWUVMTE9XKTsKKwllbHNlCisJCXNldGJpdHNfYmUxNigmaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFkYXQsIFBBX0xFRF9ZRUxMT1cpOwogfQogI2VuZGlmCiAKLXZvaWQgcG93ZXJvbl9rZXkgKHZvaWQpCit2b2lkIHBvd2Vyb25fa2V5KHZvaWQpCiB7CiAJdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7CiAKLQlpbW1hcC0+aW1faW9wb3J0LmlvcF9wY3BhciAmPSB+KFBDX1NXSVRDSDEpOwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3BjZGlyICY9IH4oUENfU1dJVENIMSk7CisJY2xyYml0c19iZTE2KCZpbW1hcC0+aW1faW9wb3J0LmlvcF9wY3BhciwgUENfU1dJVENIMSk7CisJY2xyYml0c19iZTE2KCZpbW1hcC0+aW1faW9wb3J0LmlvcF9wY2RpciwgUENfU1dJVENIMSk7CiAKLQlpZiAoaW1tYXAtPmltX2lvcG9ydC5pb3BfcGNkYXQgJiAoUENfU1dJVENIMSkpCi0JCXNldGVudiAoImtleTEiLCAib2ZmIik7CisJaWYgKGluX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BjZGF0KSAmIChQQ19TV0lUQ0gxKSkKKwkJc2V0ZW52KCJrZXkxIiwgIm9mZiIpOwogCWVsc2UKLQkJc2V0ZW52ICgia2V5MSIsICJvbiIpOworCQlzZXRlbnYoImtleTEiLCAib24iKTsKIH0KZGlmZiAtLWdpdCBhL2JvYXJkL2t1cC9jb21tb24va3VwLmggYi9ib2FyZC9rdXAvY29tbW9uL2t1cC5oCmluZGV4IGI3MzYyODMuLjQ1NTg0OGMgMTAwNjQ0Ci0tLSBhL2JvYXJkL2t1cC9jb21tb24va3VwLmgKKysrIGIvYm9hcmQva3VwL2NvbW1vbi9rdXAuaApAQCAtMjQsMjMgKzI0LDMzIEBACiAjaWZuZGVmIF9fS1VQX0gKICNkZWZpbmUgX19LVVBfSAogCi0jZGVmaW5lIFBBXzggICAgICAgMHgwMDgwCi0jZGVmaW5lIFBBXzExICAgICAgMHgwMDEwCi0jZGVmaW5lIFBBXzEyICAgICAgMHgwMDA4CisjZGVmaW5lIFBBXzgJMHgwMDgwCisjZGVmaW5lIFBBXzkJMHgwMDQwCisjZGVmaW5lIFBBXzEwCTB4MDAyMAorI2RlZmluZSBQQV8xMQkweDAwMTAKKyNkZWZpbmUgUEFfMTIJMHgwMDA4CiAKLSNkZWZpbmUgUEJfMTQgICAgICAweDAwMDIwMDAwCi0jZGVmaW5lIFBCXzE3ICAgICAgMHgwMDAwNDAwMAorI2RlZmluZSBQQl8xNAkweDAwMDIwMDAwCisjZGVmaW5lIFBCXzE1CTB4MDAwMTAwMDAKKyNkZWZpbmUgUEJfMTYJMHgwMDAwODAwMAorI2RlZmluZSBQQl8xNwkweDAwMDA0MDAwCiAKLSNkZWZpbmUgUENfOSAgICAgICAweDAwNDAKKyNkZWZpbmUgUENfNAkweDA4MDAKKyNkZWZpbmUgUENfNQkweDA0MDAKKyNkZWZpbmUgUENfOQkweDAwNDAKIAotI2RlZmluZSBQQV9SUzQ4NSAgICAgICAgICAgICAgICAgUEFfMTEgICAvKiBTQ0MxOiAwPVJTMjMyIDE9UlM0ODUgKi8KLSNkZWZpbmUgUEFfTEVEX1lFTExPVyAgICAgICAgICAgIFBBXzgKLSNkZWZpbmUgQlBfVVNCX1ZDQyAgICAgICAgICAgICAgIFBCXzE0ICAgLyogVkNDIGZvciBVU0IgZGV2aWNlcyAwPXZjYyBvbiwgMT12Y2Mgb2ZmKi8KLSNkZWZpbmUgUEJfTENEX1BXTQkgICAgICAgICBQQl8xNwkgLyogUEIgMTcgKi8KLSNkZWZpbmUgUENfU1dJVENIMSAgICAgICAgICAgICAgIFBDXzkgICAgLyogUmVib290IHN3aXRjaCAqLworI2RlZmluZSBQQV9SUzQ4NQlQQV8xMQkvKiBTQ0MxOiAwPVJTMjMyIDE9UlM0ODUgKi8KKyNkZWZpbmUgUEFfTEVEX1lFTExPVwlQQV84CisjZGVmaW5lIFBBX1JFU0VUX0lPXzAxCVBBXzkJLyogUmVzZXQgbGVmdCBJTyAqLworI2RlZmluZSBQQV9SRVNFVF9JT18wMglQQV8xMAkvKiBSZXNldCByaWdodCBJTyAqLworI2RlZmluZSBQQl9QUk9HX0lPXzAxCVBCXzE1CS8qIFByb2dyYW0gbGVmdCBJTyAqLworI2RlZmluZSBQQl9QUk9HX0lPXzAyCVBCXzE2CS8qIFByb2dyYW0gcmlnaHQgSU8gKi8KKyNkZWZpbmUgQlBfVVNCX1ZDQwlQQl8xNAkvKiBWQ0MgZm9yIFVTQiBkZXZpY2VzIDA9dmNjIG9uLCAxPXZjYyBvZmYgKi8KKyNkZWZpbmUgUEJfTENEX1BXTQlQQl8xNwkvKiBQQiAxNyAqLworI2RlZmluZSBQQ19TV0lUQ0gxCVBDXzkJLyogUmVib290IHN3aXRjaCAqLwogCi1leHRlcm4gdm9pZCBwb3dlcm9uX2tleSAodm9pZCk7CiAKK2V4dGVybiB2b2lkIHBvd2Vyb25fa2V5KHZvaWQpOwogZXh0ZXJuIHZvaWQgbG9hZF9zZXJudW1fZXRoYWRkcih2b2lkKTsKIAogI2VuZGlmCS8qIF9fS1VQX0ggKi8KZGlmZiAtLWdpdCBhL2JvYXJkL2t1cC9rdXA0ay9rdXA0ay5jIGIvYm9hcmQva3VwL2t1cDRrL2t1cDRrLmMKaW5kZXggOThmNWY1YS4uMjY3ODIxYyAxMDA2NDQKLS0tIGEvYm9hcmQva3VwL2t1cDRrL2t1cDRrLmMKKysrIGIvYm9hcmQva3VwL2t1cDRrL2t1cDRrLmMKQEAgLTIzLDM1ICsyMywyMCBAQAogICovCiAKICNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxjb21tYW5kLmg+CisjaW5jbHVkZSA8bGliZmR0Lmg+CiAjaW5jbHVkZSA8bXBjOHh4Lmg+CisjaW5jbHVkZSA8aHdjb25maWcuaD4KKyNpbmNsdWRlIDxpMmMuaD4KICNpbmNsdWRlICIuLi9jb21tb24va3VwLmgiCi0jaWZkZWYgQ09ORklHX0tVUDRLX0xPR08KLSAgICNpbmNsdWRlICJzMWQxMzcwNi5oIgotI2VuZGlmCisjaW5jbHVkZSA8YXNtL2lvLmg+CisKK3N0YXRpYyB1bnNpZ25lZCBjaGFyIHN3YXBieXRlKHVuc2lnbmVkIGNoYXIgYyk7CitzdGF0aWMgaW50IHJlYWRfZGlhZyh2b2lkKTsKIAogREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CiAKLSN1bmRlZiBERUJVRwotI2lmZGVmICBERUJVRwotIyBkZWZpbmUgZGVidWdrKGZtdCxhcmdzLi4uKSAgICBwcmludGYoZm10ICwjI2FyZ3MpCi0jZWxzZQotIyBkZWZpbmUgZGVidWdrKGZtdCxhcmdzLi4uKQotI2VuZGlmCi0KLXR5cGVkZWYgc3RydWN0IHsKLQl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICpWbWVtQWRkcjsKLQl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICpSZWdBZGRyOwotfSBGQl9JTkZPX1MxRDEzeHh4OwotCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotI2lmZGVmIENPTkZJR19LVVA0S19MT0dPCi12b2lkIGxjZF9sb2dvKGJkX3QgKmJkKTsKLSNlbmRpZgotCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCiAKICNkZWZpbmUJX05PVF9VU0VEXwkweEZGRkZGRkZGCiAKQEAgLTYwLDcgKzQ1LDcgQEAKIAkgKiBTaW5nbGUgUmVhZC4gKE9mZnNldCAwIGluIFVQTUEgUkFNKQogCSAqLwogCTB4MUYwN0ZDMDQsIDB4RUVBRUZDMDQsIDB4MTFBREZDMDQsIDB4RUZCQkJDMDAsCi0JMHgxRkY3N0M0NywgLyogbGFzdCAqLworCTB4MUZGNzdDNDcsCQkvKiBsYXN0ICovCiAKIAkvKgogCSAqIFNEUkFNIEluaXRpYWxpemF0aW9uIChvZmZzZXQgNSBpbiBVUE1BIFJBTSkKQEAgLTcwLDI4ICs1NSwyOCBAQAogCSAqIHNlcXVlbmNlLCB3aGljaCBpcyBleGVjdXRlZCBieSBhIFJVTiBjb21tYW5kLgogCSAqCiAJICovCi0JCSAgICAweDFGRjc3QzM1LCAweEVGRUFCQzM0LCAweDFGQjU3QzM1LCAvKiBsYXN0ICovCisJMHgxRkY3N0MzNSwgMHhFRkVBQkMzNCwgMHgxRkI1N0MzNSwJLyogbGFzdCAqLwogCiAJLyoKIAkgKiBCdXJzdCBSZWFkLiAoT2Zmc2V0IDggaW4gVVBNQSBSQU0pCiAJICovCiAJMHgxRjA3RkMwNCwgMHhFRUFFRkMwNCwgMHgxMEFERkMwNCwgMHhGMEFGRkMwMCwKLQkweEYwQUZGQzAwLCAweEYxQUZGQzAwLCAweEVGQkJCQzAwLCAweDFGRjc3QzQ3LCAvKiBsYXN0ICovCisJMHhGMEFGRkMwMCwgMHhGMUFGRkMwMCwgMHhFRkJCQkMwMCwgMHgxRkY3N0M0NywJLyogbGFzdCAqLwogCV9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sCiAJX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywKIAogCS8qCiAJICogU2luZ2xlIFdyaXRlLiAoT2Zmc2V0IDE4IGluIFVQTUEgUkFNKQogCSAqLwotCTB4MUYyN0ZDMDQsIDB4RUVBRUJDMDAsIDB4MDFCOTNDMDQsIDB4MUZGNzdDNDcsIC8qIGxhc3QgKi8KKwkweDFGMjdGQzA0LCAweEVFQUVCQzAwLCAweDAxQjkzQzA0LCAweDFGRjc3QzQ3LAkvKiBsYXN0ICovCiAJX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywKIAogCS8qCiAJICogQnVyc3QgV3JpdGUuIChPZmZzZXQgMjAgaW4gVVBNQSBSQU0pCiAJICovCiAJMHgxRjA3RkMwNCwgMHhFRUFFQkMwMCwgMHgxMEFEN0MwMCwgMHhGMEFGRkMwMCwKLQkweEYwQUZGQzAwLCAweEUxQkJCQzA0LCAweDFGRjc3QzQ3LCAvKiBsYXN0ICovCi0JCQkJCSAgICBfTk9UX1VTRURfLAorCTB4RjBBRkZDMDAsIDB4RTFCQkJDMDQsIDB4MUZGNzdDNDcsCS8qIGxhc3QgKi8KKwlfTk9UX1VTRURfLAogCV9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sCiAJX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywKIApAQCAtOTksMTU2ICs4NCwxNjkgQEAKIAkgKiBSZWZyZXNoICAoT2Zmc2V0IDMwIGluIFVQTUEgUkFNKQogCSAqLwogCTB4MUZGNUZDODQsIDB4RkZGRkZDMDQsIDB4RkZGRkZDMDQsIDB4RkZGRkZDMDQsCi0JMHhGRkZGRkM4NCwgMHhGRkZGRkMwNywgLyogbGFzdCAqLwotCQkJCV9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sCisJMHhGRkZGRkM4NCwgMHhGRkZGRkMwNywJLyogbGFzdCAqLworCV9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sCiAJX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywKIAogCS8qCiAJICogRXhjZXB0aW9uLiAoT2Zmc2V0IDNjIGluIFVQTUEgUkFNKQogCSAqLwotCTB4N0ZGRkZDMDcsIC8qIGxhc3QgKi8KLQkJICAgIF9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sIF9OT1RfVVNFRF8sCisJMHg3RkZGRkMwNywJCS8qIGxhc3QgKi8KKwlfTk9UX1VTRURfLCBfTk9UX1VTRURfLCBfTk9UX1VTRURfLAogfTsKIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwotCisvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLwogCiAvKgogICogQ2hlY2sgQm9hcmQgSWRlbnRpdHk6CiAgKi8KIAotaW50IGNoZWNrYm9hcmQgKHZvaWQpCitpbnQgY2hlY2tib2FyZCh2b2lkKQogewogCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKikgQ09ORklHX1NZU19JTU1SOwotCXVjaGFyICpsYXRjaCxyZXYsbW9kOworCXVjaGFyIHJldixtb2QsdG1wLHBjZixha19yZXYsYWtfbW9kOwogCiAJLyoKIAkgKiBJbml0IENoaXBTZWxlY3QgIzQgKENBTiArIEhXLUxhdGNoKQogCSAqLwotCWltbWFwLT5pbV9tZW1jdGwubWVtY19vcjQgPSAweEZGRkY4OTI2OwotCWltbWFwLT5pbV9tZW1jdGwubWVtY19icjQgPSAweDkwMDAwNDAxOwotCV9fYXNtX18gKCJlaWVpbyIpOwotCWxhdGNoPSh1Y2hhciAqKTB4OTAwMDAyMDA7Ci0JcmV2ID0gKCpsYXRjaCAmIDB4RjgpID4+IDM7Ci0JbW9kPSgqbGF0Y2ggJiAweDAzKTsKLQlwcmludGYgKCJCb2FyZDogS1VQNEsgUmV2ICVkLiVkXG4iLHJldixtb2QpOwotCXJldHVybiAoMCk7CisJb3V0X2JlMzIoJmltbWFwLT5pbV9tZW1jdGwubWVtY19vcjQsIENPTkZJR19TWVNfT1I0KTsKKwlvdXRfYmUzMigmaW1tYXAtPmltX21lbWN0bC5tZW1jX2JyNCwgQ09ORklHX1NZU19CUjQpOworCisJLyoKKwkgKiBJbml0IENoaXBTZWxlY3QgIzUgKFMxRDEzNzY4KQorCSAqLworCW91dF9iZTMyKCZpbW1hcC0+aW1fbWVtY3RsLm1lbWNfb3I1LCBDT05GSUdfU1lTX09SNSk7CisJb3V0X2JlMzIoJmltbWFwLT5pbV9tZW1jdGwubWVtY19icjUsIENPTkZJR19TWVNfQlI1KTsKKworCXRtcCA9IHN3YXBieXRlKGluXzgoKHVuc2lnbmVkIGNoYXIqKSBMQVRDSF9BRERSKSk7CisJcmV2ID0gKHRtcCAmIDB4RjgpID4+IDM7CisJbW9kID0gKHRtcCAmIDB4MDcpOworCisJaTJjX2luaXQoQ09ORklHX1NZU19JMkNfU1BFRUQsIENPTkZJR19TWVNfSTJDX1NMQVZFKTsKKworCWlmIChyZWFkX2RpYWcoKSkKKwkJZ2QtPmZsYWdzICY9IH5HRF9GTEdfU0lMRU5UOworCisJcHJpbnRmKCJCb2FyZDogS1VQNEsgUmV2ICVkLiVkIEFLOiIscmV2LG1vZCk7CisJLyoKKwkgKiBUSSBBcHBsaWNhdGlvbiByZXBvcnQ6IEJlZm9yZSB1c2luZyB0aGUgSU8gYXMgYW4gaW5wdXQsCisJICogYSBoaWdoIG11c3QgYmUgd3JpdHRlbiB0byB0aGUgSU8gZmlyc3QKKwkgKi8KKwlwY2YgPSAweEZGOworCWkyY193cml0ZSgweDIxLCAwLCAwICwgJnBjZiwgMSk7CisJaWYgKGkyY19yZWFkKDB4MjEsIDAsIDAsICZwY2YsIDEpKSB7CisJCXB1dHMoIm4vYVxuIik7CisJfSBlbHNlIHsKKwkJYWtfcmV2ID0gKHBjZiAmIDB4RjgpID4+IDM7CisJCWFrX21vZCA9IChwY2YgJiAweDA3KTsKKwkJcHJpbnRmKCIlZC4lZFxuIiwgYWtfcmV2LCBha19tb2QpOworCX0KKwlyZXR1cm4gMDsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotcGh5c19zaXplX3QgaW5pdGRyYW0gKGludCBib2FyZF90eXBlKQorCitwaHlzX3NpemVfdCBpbml0ZHJhbShpbnQgYm9hcmRfdHlwZSkKIHsKIAl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENPTkZJR19TWVNfSU1NUjsKIAl2b2xhdGlsZSBtZW1jdGw4eHhfdCAqbWVtY3RsID0gJmltbWFwLT5pbV9tZW1jdGw7Ci0JbG9uZyBpbnQgc2l6ZV9iMCA9IDA7Ci0JbG9uZyBpbnQgc2l6ZV9iMSA9IDA7Ci0JbG9uZyBpbnQgc2l6ZV9iMiA9IDA7Ci0KLQl1cG1jb25maWcgKFVQTUEsICh1aW50ICopIHNkcmFtX3RhYmxlLAotCQkJIHNpemVvZiAoc2RyYW1fdGFibGUpIC8gc2l6ZW9mICh1aW50KSk7CisJbG9uZyBpbnQgc2l6ZSA9IDA7CisJdWNoYXIgKmxhdGNoLHJldixtb2QsdG1wOwogCiAJLyoKLQkgKiBQcmVsaW1pbmFyeSBwcmVzY2FsZXIgZm9yIHJlZnJlc2ggKGRlcGVuZHMgb24gbnVtYmVyIG9mCi0JICogYmFua3MpOiBUaGlzIHZhbHVlIGlzIHNlbGVjdGVkIGZvciBmb3VyIGN5Y2xlcyBldmVyeSA2Mi40IHVzCi0JICogd2l0aCB0d28gU0RSQU0gYmFua3Mgb3IgZm91ciBjeWNsZXMgZXZlcnkgMzEuMiB1cyB3aXRoIG9uZQotCSAqIGJhbmsuIEl0IHdpbGwgYmUgYWRqdXN0ZWQgYWZ0ZXIgbWVtb3J5IHNpemluZy4KKwkgKiBJbml0IENoaXBTZWxlY3QgIzQgKENBTiArIEhXLUxhdGNoKSB0byBkZXRlcm1pbmUgSGFyZHdhcmUgUmV2aXNpb24KKwkgKiBSZXYgMS4uNiAtPiA0OCBNQiBSQU07ICAgUmV2ID49IDcgLT4gOTYgTUIKIAkgKi8KLQltZW1jdGwtPm1lbWNfbXB0cHIgPSBDT05GSUdfU1lTX01QVFBSOworCW91dF9iZTMyKCZpbW1hcC0+aW1fbWVtY3RsLm1lbWNfb3I0LCBDT05GSUdfU1lTX09SNCk7CisJb3V0X2JlMzIoJmltbWFwLT5pbV9tZW1jdGwubWVtY19icjQsIENPTkZJR19TWVNfQlI0KTsKIAotCW1lbWN0bC0+bWVtY19tYXIgPSAweDAwMDAwMDg4OworCWxhdGNoID0gKHVjaGFyICopMHg5MDAwMDIwMDsKKwl0bXAgPSBzd2FwYnl0ZSgqbGF0Y2gpOworCXJldiA9ICh0bXAgJiAweEY4KSA+PiAzOworCW1vZCA9ICh0bXAgJiAweDA3KTsKIAotCS8qCi0JICogTWFwIGNvbnRyb2xsZXIgYmFua3MgMSBhbmQgMiB0byB0aGUgU0RSQU0gYmFua3MgMiBhbmQgMyBhdAotCSAqIHByZWxpbWluYXJ5IGFkZHJlc3NlcyAtIHRoZXNlIGhhdmUgdG8gYmUgbW9kaWZpZWQgYWZ0ZXIgdGhlCi0JICogU0RSQU0gc2l6ZSBoYXMgYmVlbiBkZXRlcm1pbmVkLgotCSAqLwotLyoJbWVtY3RsLT5tZW1jX29yMSA9IENPTkZJR19TWVNfT1IxX1BSRUxJTTsJKi8KLS8qCW1lbWN0bC0+bWVtY19icjEgPSBDT05GSUdfU1lTX0JSMV9QUkVMSU07CSovCisJdXBtY29uZmlnKFVQTUEsICh1aW50ICopIHNkcmFtX3RhYmxlLAorCQkgICBzaXplb2YgKHNkcmFtX3RhYmxlKSAvIHNpemVvZiAodWludCkpOwogCi0vKgltZW1jdGwtPm1lbWNfb3IyID0gQ09ORklHX1NZU19PUjJfUFJFTElNOwkqLwotLyoJbWVtY3RsLT5tZW1jX2JyMiA9IENPTkZJR19TWVNfQlIyX1BSRUxJTTsJKi8KKwlvdXRfYmUxNigmbWVtY3RsLT5tZW1jX21wdHByLCBDT05GSUdfU1lTX01QVFBSKTsKIAorCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWFyLCAweDAwMDAwMDg4KTsKKwkvKiBubyByZWZyZXNoIHlldCAqLworCWlmKHJldiA+PSA3KSB7CisJCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWFtciwKKwkJCQkgQ09ORklHX1NZU19NQU1SXzlDT0wgJiAofihNQU1SX1BUQUUpKSk7CisJfSBlbHNlIHsKKwkJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tYW1yLAorCQkJCSBDT05GSUdfU1lTX01BTVJfOENPTCAmICh+KE1BTVJfUFRBRSkpKTsKKwl9CiAKLQltZW1jdGwtPm1lbWNfbWFtciA9IENPTkZJR19TWVNfTUFNUiAmICh+KE1BTVJfUFRBRSkpOwkvKiBubyByZWZyZXNoIHlldCAqLwotCi0JdWRlbGF5ICgyMDApOworCXVkZWxheSgyMDApOwogCiAJLyogcGVyZm9ybSBTRFJBTSBpbml0aWFsaXpzYXRpb24gc2VxdWVuY2UgKi8KIAotCW1lbWN0bC0+bWVtY19tY3IgPSAweDgwMDAyMTA1OwkvKiBTRFJBTSBiYW5rIDAgKi8KLQl1ZGVsYXkgKDEpOwotCW1lbWN0bC0+bWVtY19tY3IgPSAweDgwMDAyODMwOwkvKiBTRFJBTSBiYW5rIDAgLSBleGVjdXRlIHR3aWNlICovCi0JdWRlbGF5ICgxKTsKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwMjEwNjsJLyogU0RSQU0gYmFuayAwIC0gUlVOIE1SUyBQYXR0ZXJuIGZyb20gbG9jIDYgKi8KLQl1ZGVsYXkgKDEpOworCS8qIFNEUkFNIGJhbmsgMCAqLworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWNyLCAweDgwMDAyMTA1KTsKKwl1ZGVsYXkoMSk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tY3IsIDB4ODAwMDI4MzApOyAvKiBleGVjdXRlIHR3aWNlICovCisJdWRlbGF5KDEpOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWNyLCAweDgwMDAyMTA2KTsgLyogUlVOIE1SUyBQYXR0ZXJuIGZyb20gbG9jIDYgKi8KKwl1ZGVsYXkoMSk7CiAKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwNDEwNTsJLyogU0RSQU0gYmFuayAxICovCi0JdWRlbGF5ICgxKTsKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwNDgzMDsJLyogU0RSQU0gYmFuayAxIC0gZXhlY3V0ZSB0d2ljZSAqLwotCXVkZWxheSAoMSk7Ci0JbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDQxMDY7CS8qIFNEUkFNIGJhbmsgMSAtIFJVTiBNUlMgUGF0dGVybiBmcm9tIGxvYyA2ICovCi0JdWRlbGF5ICgxKTsKKwkvKiBTRFJBTSBiYW5rIDEgKi8KKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwNDEwNSk7CisJdWRlbGF5KDEpOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWNyLCAweDgwMDA0ODMwKTsgLyogZXhlY3V0ZSB0d2ljZSAqLworCXVkZWxheSgxKTsKKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwNDEwNik7IC8qIFJVTiBNUlMgUGF0dGVybiBmcm9tIGxvYyA2ICovCisJdWRlbGF5KDEpOwogCi0JbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDYxMDU7CS8qIFNEUkFNIGJhbmsgMiAqLwotCXVkZWxheSAoMSk7Ci0JbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDY4MzA7CS8qIFNEUkFNIGJhbmsgMiAtIGV4ZWN1dGUgdHdpY2UgKi8KLQl1ZGVsYXkgKDEpOwotCW1lbWN0bC0+bWVtY19tY3IgPSAweDgwMDA2MTA2OwkvKiBTRFJBTSBiYW5rIDIgLSBSVU4gTVJTIFBhdHRlcm4gZnJvbSBsb2MgNiAqLwotCXVkZWxheSAoMSk7CisJLyogU0RSQU0gYmFuayAyICovCisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tY3IsIDB4ODAwMDYxMDUpOworCXVkZWxheSgxKTsKKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwNjgzMCk7IC8qIGV4ZWN1dGUgdHdpY2UgKi8KKwl1ZGVsYXkoMSk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tY3IsIDB4ODAwMDYxMDYpOyAvKiBSVU4gTVJTIFBhdHRlcm4gZnJvbSBsb2MgNiAqLworCXVkZWxheSgxKTsKIAotCW1lbWN0bC0+bWVtY19tYW1yIHw9IE1BTVJfUFRBRTsJLyogZW5hYmxlIHJlZnJlc2ggKi8KLQl1ZGVsYXkgKDEwMDApOworCXNldGJpdHNfYmUzMigmbWVtY3RsLT5tZW1jX21hbXIsIE1BTVJfUFRBRSk7IC8qIGVuYWJsZSByZWZyZXNoICovCisJdWRlbGF5KDEwMDApOwogCi0jaWYgMAkJCQkJCQkvKiAzIHggOE1CICovCi0Jc2l6ZV9iMCA9IDB4MDA4MDAwMDA7Ci0Jc2l6ZV9iMSA9IDB4MDA4MDAwMDA7Ci0Jc2l6ZV9iMiA9IDB4MDA4MDAwMDA7Ci0JbWVtY3RsLT5tZW1jX21wdHByID0gQ09ORklHX1NZU19NUFRQUjsKLQl1ZGVsYXkgKDEwMDApOwotCW1lbWN0bC0+bWVtY19vcjEgPSAweEZGODAwQTAwOwotCW1lbWN0bC0+bWVtY19icjEgPSAweDAwMDAwMDgxOwotCW1lbWN0bC0+bWVtY19vcjIgPSAweEZGMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjIgPSAweDAwODAwMDgxOwotCW1lbWN0bC0+bWVtY19vcjMgPSAweEZFMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjMgPSAweDAxMDAwMDgxOwotI2Vsc2UJCQkJCQkJLyogMyB4IDE2IE1CICovCi0Jc2l6ZV9iMCA9IDB4MDEwMDAwMDA7Ci0Jc2l6ZV9iMSA9IDB4MDEwMDAwMDA7Ci0Jc2l6ZV9iMiA9IDB4MDEwMDAwMDA7Ci0JbWVtY3RsLT5tZW1jX21wdHByID0gQ09ORklHX1NZU19NUFRQUjsKLQl1ZGVsYXkgKDEwMDApOwotCW1lbWN0bC0+bWVtY19vcjEgPSAweEZGMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjEgPSAweDAwMDAwMDgxOwotCW1lbWN0bC0+bWVtY19vcjIgPSAweEZFMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjIgPSAweDAxMDAwMDgxOwotCW1lbWN0bC0+bWVtY19vcjMgPSAweEZDMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjMgPSAweDAyMDAwMDgxOwotI2VuZGlmCi0KLQl1ZGVsYXkgKDEwMDAwKTsKLQotCXJldHVybiAoc2l6ZV9iMCArIHNpemVfYjEgKyBzaXplX2IyKTsKKwlvdXRfYmUxNigmbWVtY3RsLT5tZW1jX21wdHByLCBDT05GSUdfU1lTX01QVFBSKTsKKwl1ZGVsYXkoMTAwMCk7CisJaWYocmV2ID49IDcpIHsKKwkJc2l6ZSA9IDMyICogMyAqIDEwMjQgKiAxMDI0OworCQlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX29yMSwgQ09ORklHX1NZU19PUjFfOUNPTCk7CisJCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfYnIxLCBDT05GSUdfU1lTX0JSMV85Q09MKTsKKwkJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19vcjIsIENPTkZJR19TWVNfT1IyXzlDT0wpOworCQlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX2JyMiwgQ09ORklHX1NZU19CUjJfOUNPTCk7CisJCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfb3IzLCBDT05GSUdfU1lTX09SM185Q09MKTsKKwkJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19icjMsIENPTkZJR19TWVNfQlIzXzlDT0wpOworCX0gZWxzZSB7CisJCXNpemUgPSAxNiAqIDMgKiAxMDI0ICogMTAyNDsKKwkJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19vcjEsIENPTkZJR19TWVNfT1IxXzhDT0wpOworCQlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX2JyMSwgQ09ORklHX1NZU19CUjFfOENPTCk7CisJCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfb3IyLCBDT05GSUdfU1lTX09SMl84Q09MKTsKKwkJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19icjIsIENPTkZJR19TWVNfQlIyXzhDT0wpOworCQlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX29yMywgQ09ORklHX1NZU19PUjNfOENPTCk7CisJCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfYnIzLCBDT05GSUdfU1lTX0JSM184Q09MKTsKKwl9CisJcmV0dXJuIChzaXplKTsKIH0KIAotLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLyogLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotaW50IG1pc2NfaW5pdF9yICh2b2lkKQorCitpbnQgbWlzY19pbml0X3Iodm9pZCkKIHsKLSNpZmRlZiBDT05GSUdfU1RBVFVTX0xFRAogCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKikgQ09ORklHX1NZU19JTU1SOwotI2VuZGlmCi0jaWZkZWYgQ09ORklHX0tVUDRLX0xPR08KLQliZF90ICpiZCA9IGdkLT5iZDsKIAotCWxjZF9sb2dvIChiZCk7Ci0jZW5kaWYJCQkJCQkJLyogQ09ORklHX0tVUDRLX0xPR08gKi8KICNpZmRlZiBDT05GSUdfSURFX0xFRAogCS8qIENvbmZpZ3VyZSBQQTggYXMgb3V0cHV0IHBvcnQgKi8KLQlpbW1hcC0+aW1faW9wb3J0LmlvcF9wYWRpciB8PSAweDgwOwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3Bhb2RyIHw9IDB4ODA7Ci0JaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFwYXIgJj0gfjB4ODA7Ci0JaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFkYXQgfD0gMHg4MDsJLyogdHVybiBpdCBvZmYgKi8KKwlzZXRiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGlyLCBQQV84KTsKKwlzZXRiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3Bhb2RyLCBQQV84KTsKKwljbHJiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BhcGFyLCBQQV84KTsKKwlzZXRiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGF0LCBQQV84KTsgLyogdHVybiBpdCBvZmYgKi8KICNlbmRpZgogCWxvYWRfc2VybnVtX2V0aGFkZHIoKTsKIAlzZXRlbnYoImh3IiwiNGsiKTsKQEAgLTI1NiwxNDkgKzI1NCw1MSBAQAogCXJldHVybiAoMCk7CiB9CiAKLSNpZmRlZiBDT05GSUdfS1VQNEtfTE9HTwogCi0KLXZvaWQgbGNkX2xvZ28gKGJkX3QgKiBiZCkKK3N0YXRpYyBpbnQgcmVhZF9kaWFnKHZvaWQpCiB7Ci0JRkJfSU5GT19TMUQxM3h4eCBmYl9pbmZvOwotCVMxRF9JTkRFWCBzMWRSZWc7Ci0JUzFEX1ZBTFVFIHMxZFZhbHVlOwotCXZvbGF0aWxlIGltbWFwX3QgKmltbXIgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7Ci0Jdm9sYXRpbGUgbWVtY3RsOHh4X3QgKm1lbWN0bDsKLQl1c2hvcnQgaTsKLQl1Y2hhciAqZmI7Ci0JaW50IHJzLCBncywgYnM7Ci0JaW50IHIgPSA4LCBnID0gOCwgYiA9IDQ7Ci0JaW50IHIxLCBnMSwgYjE7Ci0JaW50IG47Ci0JY2hhciB0bXBbNjRdOwkJLyogbG9uZyBlbm91Z2ggZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyAqLwotCWludCB0ZnQgPSAwOworCWludCBkaWFnOworCWltbWFwX3QgKmltbXIgPSAoaW1tYXBfdCAqKUNPTkZJR19TWVNfSU1NUjsKIAotCWltbXItPmltX2NwbS5jcF9wYnBhciAmPSB+KFBCX0xDRF9QV00pOwotCWltbXItPmltX2NwbS5jcF9wYm9kciAmPSB+KFBCX0xDRF9QV00pOwotCWltbXItPmltX2NwbS5jcF9wYmRhdCAmPSB+KFBCX0xDRF9QV00pOwkvKiBzZXQgdG8gMCA9IGVuYWJsZWQgKi8KLQlpbW1yLT5pbV9jcG0uY3BfcGJkaXIgfD0gKFBCX0xDRF9QV00pOwotCi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0vKiBJbml0aWFsaXplIHRoZSBjaGlwIGFuZCB0aGUgZnJhbWUgYnVmZmVyIGRyaXZlci4gKi8KLS8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQltZW1jdGwgPSAmaW1tci0+aW1fbWVtY3RsOwotCi0KLQkvKgotCSAqIEluaXQgQ2hpcFNlbGVjdCAjNSAoUzFEMTM3NjgpCi0JICovCi0JbWVtY3RsLT5tZW1jX29yNSA9IDB4RkZDMDA3RjA7CS8qIDQgTUIgIDE3IFdTIG9yIGV4dGVybmVsIFRBICovCi0JbWVtY3RsLT5tZW1jX2JyNSA9IDB4ODAwODA4MDE7CS8qIFN0YXJ0IGF0IDB4ODAwODAwMDAgKi8KLQlfX2FzbV9fICgiZWllaW8iKTsKLQotCWZiX2luZm8uVm1lbUFkZHIgPSAodW5zaWduZWQgY2hhciAqKSAoUzFEX1BIWVNJQ0FMX1ZNRU1fQUREUik7Ci0JZmJfaW5mby5SZWdBZGRyID0gKHVuc2lnbmVkIGNoYXIgKikgKFMxRF9QSFlTSUNBTF9SRUdfQUREUik7Ci0KLQlpZiAoKCgoUzFEX1ZBTFVFICopIGZiX2luZm8uUmVnQWRkcilbMF0gIT0gMHgyOCkKLQkgICAgfHwgKCgoUzFEX1ZBTFVFICopIGZiX2luZm8uUmVnQWRkcilbMV0gIT0gMHgxNCkpIHsKLQkJcHJpbnRmICgiV2FybmluZzpMQ0QgQ29udHJvbGxlciBTMUQxMzcwNiBub3QgZm91bmRcbiIpOwotCQlzZXRlbnYgKCJsY2QiLCAibm9uZSIpOwotCQlyZXR1cm47Ci0JfQotCi0KLQlmb3IgKGkgPSAwOyBpIDwgc2l6ZW9mKGFTMURSZWdzX3ByZWxpbW4pIC8gc2l6ZW9mKGFTMURSZWdzX3ByZWxpbW5bMF0pOyBpKyspIHsKLQkJczFkUmVnID0gYVMxRFJlZ3NfcHJlbGltbltpXS5JbmRleDsKLQkJczFkVmFsdWUgPSBhUzFEUmVnc19wcmVsaW1uW2ldLlZhbHVlOwotCQlkZWJ1Z2sgKCJzMTM3NjggcmVnOiAlMDJ4IHZhbHVlOiAlMDJ4XG4iLAotCQkJYVMxRFJlZ3NfcHJlbGltbltpXS5JbmRleCwgYVMxRFJlZ3NfcHJlbGltbltpXS5WYWx1ZSk7Ci0JCSgoUzFEX1ZBTFVFICopIGZiX2luZm8uUmVnQWRkcilbczFkUmVnIC8gc2l6ZW9mIChTMURfVkFMVUUpXSA9Ci0JCQlzMWRWYWx1ZTsKLQl9Ci0KLQotCW4gPSBnZXRlbnZfciAoImxjZCIsIHRtcCwgc2l6ZW9mICh0bXApKTsKLQlpZiAobiA+IDApIHsKLQkJaWYgKCFzdHJjbXAgKCJ0ZnQiLCB0bXApKQotCQkJdGZ0ID0gMTsKKwljbHJiaXRzX2JlMTYoJmltbXItPmltX2lvcG9ydC5pb3BfcGNkaXIsIFBDXzQpOwkvKiBpbnB1dCAqLworCWNscmJpdHNfYmUxNigmaW1tci0+aW1faW9wb3J0LmlvcF9wY3BhciwgUENfNCk7CS8qIGdwaW8gKi8KKwlzZXRiaXRzX2JlMTYoJmltbXItPmltX2lvcG9ydC5pb3BfcGNkaXIsIFBDXzUpOwkvKiBvdXRwdXQgKi8KKwljbHJiaXRzX2JlMTYoJmltbXItPmltX2lvcG9ydC5pb3BfcGNwYXIsIFBDXzQpOwkvKiBncGlvICovCisJc2V0Yml0c19iZTE2KCZpbW1yLT5pbV9pb3BvcnQuaW9wX3BjZGF0LCBQQ181KTsJLyogMSAqLworCXVkZWxheSg1MDApOworCWlmIChpbl9iZTE2KCZpbW1yLT5pbV9pb3BvcnQuaW9wX3BjZGF0KSAmIFBDXzQpIHsKKwkJY2xyYml0c19iZTE2KCZpbW1yLT5pbV9pb3BvcnQuaW9wX3BjZGF0LCBQQ181KTsvKiAwICovCisJCXVkZWxheSg1MDApOworCQlpZihpbl9iZTE2KCZpbW1yLT5pbV9pb3BvcnQuaW9wX3BjZGF0KSAmIFBDXzQpCisJCQlkaWFnID0gMDsKIAkJZWxzZQotCQkJdGZ0ID0gMDsKLQl9Ci0jaWYgMAotCWlmICgoKFMxRF9WQUxVRSAqKSBmYl9pbmZvLlJlZ0FkZHIpWzB4QUNdICYgMHgwNCkKLQkJdGZ0ID0gMDsKLQllbHNlCi0JCXRmdCA9IDE7Ci0jZW5kaWYKLQotCWRlYnVnayAoIlBvcnQ9MHglMDJ4IC0+IFRGVD0lZFxuIiwgdGZ0LAotCQkoKFMxRF9WQUxVRSAqKSBmYl9pbmZvLlJlZ0FkZHIpWzB4QUNdKTsKLQotCS8qIGluaXQgY29udHJvbGxlciAqLwotCWlmICghdGZ0KSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoYVMxRFJlZ3Nfc3RuKSAvIHNpemVvZihhUzFEUmVnc19zdG5bMF0pOyBpKyspIHsKLQkJCXMxZFJlZyA9IGFTMURSZWdzX3N0bltpXS5JbmRleDsKLQkJCXMxZFZhbHVlID0gYVMxRFJlZ3Nfc3RuW2ldLlZhbHVlOwotCQkJZGVidWdrICgiczEzNzY4IHJlZzogJTAyeCB2YWx1ZTogJTAyeFxuIiwKLQkJCQlhUzFEUmVnc19zdG5baV0uSW5kZXgsCi0JCQkJYVMxRFJlZ3Nfc3RuW2ldLlZhbHVlKTsKLQkJCSgoUzFEX1ZBTFVFICopIGZiX2luZm8uUmVnQWRkcilbczFkUmVnIC8gc2l6ZW9mKFMxRF9WQUxVRSldID0KLQkJCQlzMWRWYWx1ZTsKLQkJfQotCQluID0gZ2V0ZW52X3IgKCJjb250cmFzdCIsIHRtcCwgc2l6ZW9mICh0bXApKTsKLQkJKChTMURfVkFMVUUgKikgZmJfaW5mby5SZWdBZGRyKVsweEIzXSA9Ci0JCQkobiA+IDApID8gKHVjaGFyKSBzaW1wbGVfc3RydG91bCAodG1wLCBOVUxMLCAxMCkgKiAyNTUgLyAxMDAgOiAweEEwOwotCQlzd2l0Y2ggKGJkLT5iaV9idXNmcmVxKSB7Ci0JCWNhc2UgNDAwMDAwMDA6Ci0JCQkoKFMxRF9WQUxVRSAqKSBmYl9pbmZvLlJlZ0FkZHIpWzB4MDVdID0gMHgzMjsKLQkJCSgoUzFEX1ZBTFVFICopIGZiX2luZm8uUmVnQWRkcilbMHgxMl0gPSAweDQxOwotCQkJYnJlYWs7Ci0JCWNhc2UgNDgwMDAwMDA6Ci0JCQkoKFMxRF9WQUxVRSAqKSBmYl9pbmZvLlJlZ0FkZHIpWzB4MDVdID0gMHgyMjsKLQkJCSgoUzFEX1ZBTFVFICopIGZiX2luZm8uUmVnQWRkcilbMHgxMl0gPSAweDM0OwotCQkJYnJlYWs7Ci0JCWRlZmF1bHQ6Ci0JCQlwcmludGYgKCJLVVA0SyBTMUQxOiB1bmtub3duIGJ1c2ZyZXF1ZW5jeTogJWxkIGFzc3VtaW5nIDY0IE1IelxuIiwgYmQtPmJpX2J1c2ZyZXEpOwotCQljYXNlIDY0MDAwMDAwOgotCQkJKChTMURfVkFMVUUgKikgZmJfaW5mby5SZWdBZGRyKVsweDA1XSA9IDB4MzI7Ci0JCQkoKFMxRF9WQUxVRSAqKSBmYl9pbmZvLlJlZ0FkZHIpWzB4MTJdID0gMHg2NjsKLQkJCWJyZWFrOwotCQl9Ci0JCS8qICAgc2V0ZW52KCJsY2QiLCJzdG4iKTsgKi8KKwkJCWRpYWcgPSAxOwogCX0gZWxzZSB7Ci0JCWZvciAoaSA9IDA7IGkgPCBzaXplb2YoYVMxRFJlZ3NfdGZ0KSAvIHNpemVvZihhUzFEUmVnc190ZnRbMF0pOyBpKyspIHsKLQkJCXMxZFJlZyA9IGFTMURSZWdzX3RmdFtpXS5JbmRleDsKLQkJCXMxZFZhbHVlID0gYVMxRFJlZ3NfdGZ0W2ldLlZhbHVlOwotCQkJZGVidWdrICgiczEzNzY4IHJlZzogJTAyeCB2YWx1ZTogJTAyeFxuIiwKLQkJCQlhUzFEUmVnc190ZnRbaV0uSW5kZXgsCi0JCQkJYVMxRFJlZ3NfdGZ0W2ldLlZhbHVlKTsKLQkJCSgoUzFEX1ZBTFVFICopIGZiX2luZm8uUmVnQWRkcilbczFkUmVnIC8gc2l6ZW9mIChTMURfVkFMVUUpXSA9Ci0JCQkJczFkVmFsdWU7Ci0JCX0KLQotCQlzd2l0Y2ggKGJkLT5iaV9idXNmcmVxKSB7Ci0JCWRlZmF1bHQ6Ci0JCQlwcmludGYgKCJLVVA0SyBTMUQxOiB1bmtub3duIGJ1c2ZyZXF1ZW5jeTogJWxkIGFzc3VtaW5nIDY0IE1IelxuIiwgYmQtPmJpX2J1c2ZyZXEpOwotCQljYXNlIDQwMDAwMDAwOgotCQkJKChTMURfVkFMVUUgKikgZmJfaW5mby5SZWdBZGRyKVsweDA1XSA9IDB4NDI7Ci0JCQkoKFMxRF9WQUxVRSAqKSBmYl9pbmZvLlJlZ0FkZHIpWzB4MTJdID0gMHgzMDsKLQkJCWJyZWFrOwotCQl9Ci0JCS8qIHNldGVudigibGNkIiwidGZ0Iik7ICovCisJCWRpYWcgPSAwOwogCX0KLQotCS8qIGNyZWF0ZSBhbmQgc2V0IGNvbG9ybWFwICovCi0JcnMgPSAyNTYgLyAociAtIDEpOwotCWdzID0gMjU2IC8gKGcgLSAxKTsKLQlicyA9IDI1NiAvIChiIC0gMSk7Ci0JZm9yIChpID0gMDsgaSA8IDI1NjsgaSsrKSB7Ci0JCXIxID0gKHJzICogKChpIC8gKGcgKiBiKSkgJSByKSkgKiAyNTU7Ci0JCWcxID0gKGdzICogKChpIC8gYikgJSBnKSkgKiAyNTU7Ci0JCWIxID0gKGJzICogKChpKSAlIGIpKSAqIDI1NTsKLQkJZGVidWdrICgiJWQgJTA0eCAlMDR4ICUwNHhcbiIsIGksIHIxID4+IDQsIGcxID4+IDQsIGIxID4+IDQpOwotCQlTMURfV1JJVEVfUEFMRVRURSAoZmJfaW5mby5SZWdBZGRyLCBpLCAocjEgPj4gNCksIChnMSA+PiA0KSwKLQkJCQkgICAoYjEgPj4gNCkpOwotCX0KLQotCS8qIGNvcHkgYml0bWFwICovCi0JZmIgPSAodWNoYXIgKikgKGZiX2luZm8uVm1lbUFkZHIpOwotCW1lbWNweSAoZmIsICh1Y2hhciAqKSBDT05GSUdfS1VQNEtfTE9HTywgMzIwICogMjQwKTsKKwljbHJiaXRzX2JlMTYoJmltbXItPmltX2lvcG9ydC5pb3BfcGNkaXIsIFBDXzUpOwkvKiBpbnB1dCAqLworCXJldHVybiAoZGlhZyk7CiB9Ci0jZW5kaWYJLyogQ09ORklHX0tVUDRLX0xPR08gKi8KKworc3RhdGljIHVuc2lnbmVkIGNoYXIgc3dhcGJ5dGUodW5zaWduZWQgY2hhciBjKQoreworCXVuc2lnbmVkIGNoYXIgcmVzdWx0ID0gMDsKKwlpbnQgaSA9IDA7CisKKwlmb3IoaSA9IDA7IGkgPCA4OyArK2kpIHsKKwkJcmVzdWx0ID0gcmVzdWx0IDw8IDE7CisJCXJlc3VsdCB8PSAoYyAmIDEpOworCQljID0gYyA+PiAxOworCX0KKwlyZXR1cm4gcmVzdWx0OworfQorCisvKgorICogRGV2aWNlIFRyZWUgU3VwcG9ydAorICovCisjaWYgZGVmaW5lZChDT05GSUdfT0ZfQk9BUkRfU0VUVVApICYmIGRlZmluZWQoQ09ORklHX09GX0xJQkZEVCkKK3ZvaWQgZnRfYm9hcmRfc2V0dXAodm9pZCAqYmxvYiwgYmRfdCAqYmQpCit7CisJZnRfY3B1X3NldHVwKGJsb2IsIGJkKTsKK30KKyNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19PRl9CT0FSRF9TRVRVUCkgJiYgZGVmaW5lZChDT05GSUdfT0ZfTElCRkRUKSAqLwpkaWZmIC0tZ2l0IGEvYm9hcmQva3VwL2t1cDRrL3MxZDEzNzA2LmggYi9ib2FyZC9rdXAva3VwNGsvczFkMTM3MDYuaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Q1ZWNjYy4uMDAwMDAwMAotLS0gYS9ib2FyZC9rdXAva3VwNGsvczFkMTM3MDYuaAorKysgL2Rldi9udWxsCkBAIC0xLDE3NCArMCwwIEBACi0vKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLS8qICovCi0vKiAgRmlsZSBnZW5lcmF0ZWQgYnkgUzFEMTM3MDZDRkcuRVhFICovCi0vKiAqLwotLyogIENvcHlyaWdodCAoYykgMjAwMCwyMDAxIEVwc29uIFJlc2VhcmNoIGFuZCBEZXZlbG9wbWVudCwgSW5jLiAqLwotLyogIEFsbCByaWdodHMgcmVzZXJ2ZWQuICovCi0vKiAqLwotLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLS8qIFBhbmVsOiAzMjB4MjQweDhicHAgNzBIeiBDb2xvciBTaW5nbGUgU1ROIDgtYml0IChQQ0xLPTYuMjUwTUh6KSAoRm9ybWF0IDIpICovCi0KLSNkZWZpbmUgUzFEX0RJU1BMQVlfV0lEVEggICAgICAgICAgIDMyMAotI2RlZmluZSBTMURfRElTUExBWV9IRUlHSFQgICAgICAgICAgMjQwCi0jZGVmaW5lIFMxRF9ESVNQTEFZX0JQUCAgICAgICAgICAgICA4Ci0jZGVmaW5lIFMxRF9ESVNQTEFZX1NDQU5MSU5FX0JZVEVTICAzMjAKLSNkZWZpbmUgUzFEX1BIWVNJQ0FMX1ZNRU1fQUREUiAgICAgIDB4ODAwQTAwMDBMCi0jZGVmaW5lIFMxRF9QSFlTSUNBTF9WTUVNX1NJWkUgICAgICAweDE0MDAwTAotI2RlZmluZSBTMURfUEhZU0lDQUxfUkVHX0FERFIgICAgICAgMHg4MDA4MDAwMEwKLSNkZWZpbmUgUzFEX1BIWVNJQ0FMX1JFR19TSVpFICAgICAgIDB4MTAwCi0jZGVmaW5lIFMxRF9ESVNQTEFZX1BDTEsgICAgICAgICAgICA2MjUwCi0jZGVmaW5lIFMxRF9QQUxFVFRFX1NJWkUgICAgICAgICAgICAyNTYKLSNkZWZpbmUgUzFEX1JFR0RFTEFZT0ZGICAgICAgICAgICAgIDB4RkZGRQotI2RlZmluZSBTMURfUkVHREVMQVlPTiAgICAgICAgICAgICAgMHhGRkZGCi0KLSNkZWZpbmUgUzFEX1dSSVRFX1BBTEVUVEUocCxpLHIsZyxiKSAgXAoteyAgXAotICAgICgodm9sYXRpbGUgUzFEX1ZBTFVFKikocCkpWzB4MEEvc2l6ZW9mKFMxRF9WQUxVRSldID0gKFMxRF9WQUxVRSkoKHIpPj40KTsgIFwKLSAgICAoKHZvbGF0aWxlIFMxRF9WQUxVRSopKHApKVsweDA5L3NpemVvZihTMURfVkFMVUUpXSA9IChTMURfVkFMVUUpKChnKT4+NCk7ICBcCi0gICAgKCh2b2xhdGlsZSBTMURfVkFMVUUqKShwKSlbMHgwOC9zaXplb2YoUzFEX1ZBTFVFKV0gPSAoUzFEX1ZBTFVFKSgoYik+PjQpOyAgXAotICAgICgodm9sYXRpbGUgUzFEX1ZBTFVFKikocCkpWzB4MEIvc2l6ZW9mKFMxRF9WQUxVRSldID0gKFMxRF9WQUxVRSkoaSk7ICBcCi19Ci0KLSNkZWZpbmUgUzFEX1JFQURfUEFMRVRURShwLGkscixnLGIpICBcCi17ICBcCi0gICAgKCh2b2xhdGlsZSBTMURfVkFMVUUqKShwKSlbMHgwRi9zaXplb2YoUzFEX1ZBTFVFKV0gPSAoUzFEX1ZBTFVFKShpKTsgIFwKLSAgICByID0gKCh2b2xhdGlsZSBTMURfVkFMVUUqKShwKSlbMHgwRS9zaXplb2YoUzFEX1ZBTFVFKV07ICBcCi0gICAgZyA9ICgodm9sYXRpbGUgUzFEX1ZBTFVFKikocCkpWzB4MEQvc2l6ZW9mKFMxRF9WQUxVRSldOyAgXAotICAgIGIgPSAoKHZvbGF0aWxlIFMxRF9WQUxVRSopKHApKVsweDBDL3NpemVvZihTMURfVkFMVUUpXTsgIFwKLX0KLQotdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBTMURfSU5ERVg7Ci10eXBlZGVmIHVuc2lnbmVkIGNoYXIgIFMxRF9WQUxVRTsKLQotCi10eXBlZGVmIHN0cnVjdAotewotICAgIFMxRF9JTkRFWCBJbmRleDsKLSAgICBTMURfVkFMVUUgVmFsdWU7Ci19IFMxRF9SRUdTOwotCi0KLXN0YXRpYyBTMURfUkVHUyBhUzFEUmVnc19wcmVsaW1uW10gPQotewotICAgIHsweDEwLDB4MDB9LCAgIC8qIFBBTkVMIFR5cGUgUmVnaXN0ZXIgKi8KLSAgICB7MHhBOCwweDAwfSwgICAvKiBHUElPIENvbmZpZyBSZWdpc3RlciAwICovCi0gICAgezB4QTksMHg4MH0sICAgLyogR1BJTyBDb25maWcgUmVnaXN0ZXIgMSAqLwotCi19OwotCi1zdGF0aWMgUzFEX1JFR1MgYVMxRFJlZ3Nfc3RuW10gPQotewotICAgIHsweDA0LDB4MTB9LCAgIC8qIEJVU0NMSyBNRU1DTEsgQ29uZmlnIFJlZ2lzdGVyICovCi0gICAgezB4MTAsMHhEMH0sICAgLyogUEFORUwgVHlwZSBSZWdpc3RlciAqLwotICAgIHsweDExLDB4MDB9LCAgIC8qIE1PRCBSYXRlIFJlZ2lzdGVyICovCi0gICAgezB4MTQsMHgyN30sICAgLyogSG9yaXpvbnRhbCBEaXNwbGF5IFBlcmlvZCBSZWdpc3RlciAqLwotICAgIHsweDE2LDB4MDB9LCAgIC8qIEhvcml6b250YWwgRGlzcGxheSBQZXJpb2QgU3RhcnQgUG9zIFJlZ2lzdGVyIDAgKi8KLSAgICB7MHgxNywweDAwfSwgICAvKiBIb3Jpem9udGFsIERpc3BsYXkgUGVyaW9kIFN0YXJ0IFBvcyBSZWdpc3RlciAxICovCi0gICAgezB4MTgsMHhGMH0sICAgLyogVmVydGljYWwgVG90YWwgUmVnaXN0ZXIgMCAqLwotICAgIHsweDE5LDB4MDB9LCAgIC8qIFZlcnRpY2FsIFRvdGFsIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHgxQywweEVGfSwgICAvKiBWZXJ0aWNhbCBEaXNwbGF5IFBlcmlvZCBSZWdpc3RlciAwICovCi0gICAgezB4MUQsMHgwMH0sICAgLyogVmVydGljYWwgRGlzcGxheSBQZXJpb2QgUmVnaXN0ZXIgMSAqLwotICAgIHsweDFFLDB4MDB9LCAgIC8qIFZlcnRpY2FsIERpc3BsYXkgUGVyaW9kIFN0YXJ0IFBvcyBSZWdpc3RlciAwICovCi0gICAgezB4MUYsMHgwMH0sICAgLyogVmVydGljYWwgRGlzcGxheSBQZXJpb2QgU3RhcnQgUG9zIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHgyMCwweDg3fSwgICAvKiBIb3Jpem9udGFsIFN5bmMgUHVsc2UgV2lkdGggUmVnaXN0ZXIgKi8KLSAgICB7MHgyMiwweDAwfSwgICAvKiBIb3Jpem9udGFsIFN5bmMgUHVsc2UgU3RhcnQgUG9zIFJlZ2lzdGVyIDAgKi8KLSAgICB7MHgyMywweDAwfSwgICAvKiBIb3Jpem9udGFsIFN5bmMgUHVsc2UgU3RhcnQgUG9zIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHgyNCwweDgwfSwgICAvKiBWZXJ0aWNhbCBTeW5jIFB1bHNlIFdpZHRoIFJlZ2lzdGVyICovCi0gICAgezB4MjYsMHgwMX0sICAgLyogVmVydGljYWwgU3luYyBQdWxzZSBTdGFydCBQb3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDI3LDB4MDB9LCAgIC8qIFZlcnRpY2FsIFN5bmMgUHVsc2UgU3RhcnQgUG9zIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHg3MCwweDgzfSwgICAvKiBEaXNwbGF5IE1vZGUgUmVnaXN0ZXIgKi8KLSAgICB7MHg3MSwweDAwfSwgICAvKiBTcGVjaWFsIEVmZmVjdHMgUmVnaXN0ZXIgKi8KLSAgICB7MHg3NCwweDAwfSwgICAvKiBNYWluIFdpbmRvdyBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDc1LDB4MDB9LCAgIC8qIE1haW4gV2luZG93IERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAxICovCi0gICAgezB4NzYsMHgwMH0sICAgLyogTWFpbiBXaW5kb3cgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDIgKi8KLSAgICB7MHg3OCwweDUwfSwgICAvKiBNYWluIFdpbmRvdyBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAwICovCi0gICAgezB4NzksMHgwMH0sICAgLyogTWFpbiBXaW5kb3cgQWRkcmVzcyBPZmZzZXQgUmVnaXN0ZXIgMSAqLwotICAgIHsweDdDLDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDAgKi8KLSAgICB7MHg3RCwweDAwfSwgICAvKiBTdWIgV2luZG93IERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAxICovCi0gICAgezB4N0UsMHgwMH0sICAgLyogU3ViIFdpbmRvdyBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMiAqLwotICAgIHsweDgwLDB4NTB9LCAgIC8qIFN1YiBXaW5kb3cgQWRkcmVzcyBPZmZzZXQgUmVnaXN0ZXIgMCAqLwotICAgIHsweDgxLDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgQWRkcmVzcyBPZmZzZXQgUmVnaXN0ZXIgMSAqLwotICAgIHsweDg0LDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgWCBTdGFydCBQb3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDg1LDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgWCBTdGFydCBQb3MgUmVnaXN0ZXIgMSAqLwotICAgIHsweDg4LDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgWSBTdGFydCBQb3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDg5LDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgWSBTdGFydCBQb3MgUmVnaXN0ZXIgMSAqLwotICAgIHsweDhDLDB4NEZ9LCAgIC8qIFN1YiBXaW5kb3cgWCBFbmQgUG9zIFJlZ2lzdGVyIDAgKi8KLSAgICB7MHg4RCwweDAwfSwgICAvKiBTdWIgV2luZG93IFggRW5kIFBvcyBSZWdpc3RlciAxICovCi0gICAgezB4OTAsMHhFRn0sICAgLyogU3ViIFdpbmRvdyBZIEVuZCBQb3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDkxLDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgWSBFbmQgUG9zIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHhBMCwweDAwfSwgICAvKiBQb3dlciBTYXZlIENvbmZpZyBSZWdpc3RlciAqLwotICAgIHsweEExLDB4MDB9LCAgIC8qIENQVSBBY2Nlc3MgQ29udHJvbCBSZWdpc3RlciAqLwotICAgIHsweEEyLDB4MDB9LCAgIC8qIFNvZnR3YXJlIFJlc2V0IFJlZ2lzdGVyICovCi0gICAgezB4QTMsMHgwMH0sICAgLyogQklHIEVuZGlhbiBTdXBwb3J0IFJlZ2lzdGVyICovCi0gICAgezB4QTQsMHgwMH0sICAgLyogU2NyYXRjaCBQYWQgUmVnaXN0ZXIgMCAqLwotICAgIHsweEE1LDB4MDB9LCAgIC8qIFNjcmF0Y2ggUGFkIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHhBOCwweDAxfSwgICAvKiBHUElPIENvbmZpZyBSZWdpc3RlciAwICovCi0gICAgezB4QTksMHg4MH0sICAgLyogR1BJTyBDb25maWcgUmVnaXN0ZXIgMSAqLwotICAgIHsweEFDLDB4MDF9LCAgIC8qIEdQSU8gU3RhdHVzIENvbnRyb2wgUmVnaXN0ZXIgMCAqLwotICAgIHsweEFELDB4MDB9LCAgIC8qIEdQSU8gU3RhdHVzIENvbnRyb2wgUmVnaXN0ZXIgMSAqLwotICAgIHsweEIwLDB4MTB9LCAgIC8qIFBXTSBDViBDbG9jayBDb250cm9sIFJlZ2lzdGVyICovCi0gICAgezB4QjEsMHg4MH0sICAgLyogUFdNIENWIENsb2NrIENvbmZpZyBSZWdpc3RlciAqLwotICAgIHsweEIyLDB4MDB9LCAgIC8qIENWIENsb2NrIEJ1cnN0IExlbmd0aCBSZWdpc3RlciAqLwotICAgIHsweEFELDB4ODB9LCAgIC8qIHJlc2V0IHNlcSAqLwotICAgIHsweDcwLDB4MDN9LAotfTsKLQotc3RhdGljIFMxRF9SRUdTIGFTMURSZWdzX3RmdFtdID0KLXsKLSAgICB7MHgwNCwweDEwfSwgICAvKiBCVVNDTEsgTUVNQ0xLIENvbmZpZyBSZWdpc3RlciAqLwotICAgIHsweDA1LDB4NDJ9LCAgIC8qIFBDTEsgQ29uZmlnICBSZWdpc3RlciAqLwotICAgIHsweDEwLDB4NjF9LCAgIC8qIFBBTkVMIFR5cGUgUmVnaXN0ZXIgKi8KLSAgICB7MHgxMSwweDAwfSwgICAvKiBNT0QgUmF0ZSBSZWdpc3RlciAqLwotICAgIHsweDEyLDB4MzB9LCAgIC8qIEhvcml6b250YWwgVG90YWwgUmVnaXN0ZXIgKi8KLSAgICB7MHgxNCwweDI3fSwgICAvKiBIb3Jpem9udGFsIERpc3BsYXkgUGVyaW9kIFJlZ2lzdGVyICovCi0gICAgezB4MTYsMHgxMX0sICAgLyogSG9yaXpvbnRhbCBEaXNwbGF5IFBlcmlvZCBTdGFydCBQb3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDE3LDB4MDB9LCAgIC8qIEhvcml6b250YWwgRGlzcGxheSBQZXJpb2QgU3RhcnQgUG9zIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHgxOCwweEZBfSwgICAvKiBWZXJ0aWNhbCBUb3RhbCBSZWdpc3RlciAwICovCi0gICAgezB4MTksMHgwMH0sICAgLyogVmVydGljYWwgVG90YWwgUmVnaXN0ZXIgMSAqLwotICAgIHsweDFDLDB4RUZ9LCAgIC8qIFZlcnRpY2FsIERpc3BsYXkgUGVyaW9kIFJlZ2lzdGVyIDAgKi8KLSAgICB7MHgxRCwweDAwfSwgICAvKiBWZXJ0aWNhbCBEaXNwbGF5IFBlcmlvZCBSZWdpc3RlciAxICovCi0gICAgezB4MUUsMHgwMH0sICAgLyogVmVydGljYWwgRGlzcGxheSBQZXJpb2QgU3RhcnQgUG9zIFJlZ2lzdGVyIDAgKi8KLSAgICB7MHgxRiwweDAwfSwgICAvKiBWZXJ0aWNhbCBEaXNwbGF5IFBlcmlvZCBTdGFydCBQb3MgUmVnaXN0ZXIgMSAqLwotICAgIHsweDIwLDB4MDd9LCAgIC8qIEhvcml6b250YWwgU3luYyBQdWxzZSBXaWR0aCBSZWdpc3RlciAqLwotICAgIHsweDIyLDB4MDB9LCAgIC8qIEhvcml6b250YWwgU3luYyBQdWxzZSBTdGFydCBQb3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDIzLDB4MDB9LCAgIC8qIEhvcml6b250YWwgU3luYyBQdWxzZSBTdGFydCBQb3MgUmVnaXN0ZXIgMSAqLwotICAgIHsweDI0LDB4MDB9LCAgIC8qIFZlcnRpY2FsIFN5bmMgUHVsc2UgV2lkdGggUmVnaXN0ZXIgKi8KLSAgICB7MHgyNiwweDAwfSwgICAvKiBWZXJ0aWNhbCBTeW5jIFB1bHNlIFN0YXJ0IFBvcyBSZWdpc3RlciAwICovCi0gICAgezB4MjcsMHgwMH0sICAgLyogVmVydGljYWwgU3luYyBQdWxzZSBTdGFydCBQb3MgUmVnaXN0ZXIgMSAqLwotICAgIHsweDcwLDB4MDN9LCAgIC8qIERpc3BsYXkgTW9kZSBSZWdpc3RlciAqLwotICAgIHsweDcxLDB4MDB9LCAgIC8qIFNwZWNpYWwgRWZmZWN0cyBSZWdpc3RlciAqLwotICAgIHsweDc0LDB4MDB9LCAgIC8qIE1haW4gV2luZG93IERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAwICovCi0gICAgezB4NzUsMHgwMH0sICAgLyogTWFpbiBXaW5kb3cgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHg3NiwweDAwfSwgICAvKiBNYWluIFdpbmRvdyBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMiAqLwotICAgIHsweDc4LDB4NTB9LCAgIC8qIE1haW4gV2luZG93IEFkZHJlc3MgT2Zmc2V0IFJlZ2lzdGVyIDAgKi8KLSAgICB7MHg3OSwweDAwfSwgICAvKiBNYWluIFdpbmRvdyBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAxICovCi0gICAgezB4N0MsMHgwMH0sICAgLyogU3ViIFdpbmRvdyBEaXNwbGF5IFN0YXJ0IEFkZHJlc3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDdELDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgRGlzcGxheSBTdGFydCBBZGRyZXNzIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHg3RSwweDAwfSwgICAvKiBTdWIgV2luZG93IERpc3BsYXkgU3RhcnQgQWRkcmVzcyBSZWdpc3RlciAyICovCi0gICAgezB4ODAsMHg1MH0sICAgLyogU3ViIFdpbmRvdyBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAwICovCi0gICAgezB4ODEsMHgwMH0sICAgLyogU3ViIFdpbmRvdyBBZGRyZXNzIE9mZnNldCBSZWdpc3RlciAxICovCi0gICAgezB4ODQsMHgwMH0sICAgLyogU3ViIFdpbmRvdyBYIFN0YXJ0IFBvcyBSZWdpc3RlciAwICovCi0gICAgezB4ODUsMHgwMH0sICAgLyogU3ViIFdpbmRvdyBYIFN0YXJ0IFBvcyBSZWdpc3RlciAxICovCi0gICAgezB4ODgsMHgwMH0sICAgLyogU3ViIFdpbmRvdyBZIFN0YXJ0IFBvcyBSZWdpc3RlciAwICovCi0gICAgezB4ODksMHgwMH0sICAgLyogU3ViIFdpbmRvdyBZIFN0YXJ0IFBvcyBSZWdpc3RlciAxICovCi0gICAgezB4OEMsMHg0Rn0sICAgLyogU3ViIFdpbmRvdyBYIEVuZCBQb3MgUmVnaXN0ZXIgMCAqLwotICAgIHsweDhELDB4MDB9LCAgIC8qIFN1YiBXaW5kb3cgWCBFbmQgUG9zIFJlZ2lzdGVyIDEgKi8KLSAgICB7MHg5MCwweEVGfSwgICAvKiBTdWIgV2luZG93IFkgRW5kIFBvcyBSZWdpc3RlciAwICovCi0gICAgezB4OTEsMHgwMH0sICAgLyogU3ViIFdpbmRvdyBZIEVuZCBQb3MgUmVnaXN0ZXIgMSAqLwotICAgIHsweEEwLDB4MDB9LCAgIC8qIFBvd2VyIFNhdmUgQ29uZmlnIFJlZ2lzdGVyICovCi0gICAgezB4QTEsMHgwMH0sICAgLyogQ1BVIEFjY2VzcyBDb250cm9sIFJlZ2lzdGVyICovCi0gICAgezB4QTIsMHgwMH0sICAgLyogU29mdHdhcmUgUmVzZXQgUmVnaXN0ZXIgKi8KLSAgICB7MHhBMywweDAwfSwgICAvKiBCSUcgRW5kaWFuIFN1cHBvcnQgUmVnaXN0ZXIgKi8KLSAgICB7MHhBNCwweDAwfSwgICAvKiBTY3JhdGNoIFBhZCBSZWdpc3RlciAwICovCi0gICAgezB4QTUsMHgwMH0sICAgLyogU2NyYXRjaCBQYWQgUmVnaXN0ZXIgMSAqLwotICAgIHsweEE4LDB4MDF9LCAgIC8qIEdQSU8gQ29uZmlnIFJlZ2lzdGVyIDAgKi8KLSAgICB7MHhBOSwweDgwfSwgICAvKiBHUElPIENvbmZpZyBSZWdpc3RlciAxICovCi0gICAgezB4QUMsMHgwMX0sICAgLyogR1BJTyBTdGF0dXMgQ29udHJvbCBSZWdpc3RlciAwICovCi0gICAgezB4QUQsMHgwMH0sICAgLyogR1BJTyBTdGF0dXMgQ29udHJvbCBSZWdpc3RlciAxICovCi0gICAgezB4QjAsMHgxMH0sICAgLyogUFdNIENWIENsb2NrIENvbnRyb2wgUmVnaXN0ZXIgKi8KLSAgICB7MHhCMSwweDgwfSwgICAvKiBQV00gQ1YgQ2xvY2sgQ29uZmlnIFJlZ2lzdGVyICovCi0gICAgezB4QjIsMHgwMH0sICAgLyogQ1YgQ2xvY2sgQnVyc3QgTGVuZ3RoIFJlZ2lzdGVyICovCi0gICAgezB4QUQsMHg4MH0sICAgLyogcmVzZXQgc2VxICovCi0gICAgezB4NzAsMHgwM30sCi19OwpkaWZmIC0tZ2l0IGEvYm9hcmQva3VwL2t1cDR4L2t1cDR4LmMgYi9ib2FyZC9rdXAva3VwNHgva3VwNHguYwppbmRleCA2NWEyMjJiLi4xNjg2ZWZmIDEwMDY0NAotLS0gYS9ib2FyZC9rdXAva3VwNHgva3VwNHguYworKysgYi9ib2FyZC9rdXAva3VwNHgva3VwNHguYwpAQCAtMjYsMjggKzI2LDggQEAKICNpbmNsdWRlIDxtcGM4eHguaD4KICNpbmNsdWRlIDxwb3N0Lmg+CiAjaW5jbHVkZSAiLi4vY29tbW9uL2t1cC5oIgotI2lmZGVmIENPTkZJR19LVVA0S19MT0dPCi0vKiAjaW5jbHVkZSAiczFkMTM3MDYuaCIgKi8KLSNlbmRpZgorI2luY2x1ZGUgPGFzbS9pby5oPgogCi0jZGVmaW5lIEtVUDRYX1VTQgotCi0KLXR5cGVkZWYgc3RydWN0IHsKLQl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICpWbWVtQWRkcjsKLQl2b2xhdGlsZSB1bnNpZ25lZCBjaGFyICpSZWdBZGRyOwotfSBGQl9JTkZPX1MxRDEzeHh4OwotCi0vKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCi0KLWludCB1c2JfaW5pdF9rdXA0eCAodm9pZCk7Ci0KLQotI2lmZGVmIENPTkZJR19LVVA0S19MT0dPCi12b2lkIGxjZF9sb2dvIChiZF90ICogYmQpOwotI2VuZGlmCi0KLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogI2RlZmluZQlfTk9UX1VTRURfCTB4RkZGRkZGRkYKIApAQCAtMTA2LDIwNyArODYsMTE2IEBACiAJX05PVF9VU0VEXywgX05PVF9VU0VEXywgX05PVF9VU0VEXywKIH07CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAogLyoKICAqIENoZWNrIEJvYXJkIElkZW50aXR5OgogICovCiAKLWludCBjaGVja2JvYXJkICh2b2lkKQoraW50IGNoZWNrYm9hcmQodm9pZCkKIHsKIAl2b2xhdGlsZSBpbW1hcF90ICppbW1hcCA9IChpbW1hcF90ICopIENPTkZJR19TWVNfSU1NUjsKIAl2b2xhdGlsZSBtZW1jdGw4eHhfdCAqbWVtY3RsID0gJmltbWFwLT5pbV9tZW1jdGw7Ci0Jdm9sYXRpbGUgdWNoYXIgKmxhdGNoOwotCXVjaGFyIHJldiwgbW9kOworCXVjaGFyIGxhdGNoLCByZXYsIG1vZDsKIAogCS8qCiAJICogSW5pdCBDaGlwU2VsZWN0ICM0IChDQU4gKyBIVy1MYXRjaCkKIAkgKi8KLQltZW1jdGwtPm1lbWNfb3I0ID0gMHhGRkZGODkyNjsKLQltZW1jdGwtPm1lbWNfYnI0ID0gMHg5MDAwMDQwMTsKLQlfX2FzbV9fICgiZWllaW8iKTsKLQlsYXRjaCA9ICh2b2xhdGlsZSB1Y2hhciAqKSAweDkwMDAwMjAwOwotCXJldiA9ICgqbGF0Y2ggJiAweEY4KSA+PiAzOwotCW1vZCA9ICgqbGF0Y2ggJiAweDAzKTsKLQlwcmludGYgKCJCb2FyZDogS1VQNFggUmV2ICVkLiVkXG4iLHJldixtb2QpOwotCXJldHVybiAoMCk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19vcjQsIDB4RkZGRjg5MjYpOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfYnI0LCAweDkwMDAwNDAxKTsKKworCWxhdGNoID0gaW5fOCggKHVuc2lnbmVkIGNoYXIgKikgTEFUQ0hfQUREUik7CisJcmV2ID0gKGxhdGNoICYgMHhGOCkgPj4gMzsKKwltb2QgPSAobGF0Y2ggJiAweDAzKTsKKworCXByaW50ZigiQm9hcmQ6IEtVUDRYIFJldiAlZC4lZFxuIiwgcmV2LCBtb2QpOworCisJcmV0dXJuIDA7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KIAotcGh5c19zaXplX3QgaW5pdGRyYW0gKGludCBib2FyZF90eXBlKQorcGh5c19zaXplX3QgaW5pdGRyYW0oaW50IGJvYXJkX3R5cGUpCiB7CiAJdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7CiAJdm9sYXRpbGUgbWVtY3RsOHh4X3QgKm1lbWN0bCA9ICZpbW1hcC0+aW1fbWVtY3RsOwotCWxvbmcgaW50IHNpemVfYjAgPSAwOwotCWxvbmcgaW50IHNpemVfYjEgPSAwOwotCWxvbmcgaW50IHNpemVfYjIgPSAwOwotCWxvbmcgaW50IHNpemVfYjMgPSAwOwogCi0JdXBtY29uZmlnIChVUE1BLCAodWludCAqKSBzZHJhbV90YWJsZSwKKwl1cG1jb25maWcoVVBNQSwgKHVpbnQgKikgc2RyYW1fdGFibGUsCiAJCSAgIHNpemVvZiAoc2RyYW1fdGFibGUpIC8gc2l6ZW9mICh1aW50KSk7Ci0JLyoKLQkgKiBQcmVsaW1pbmFyeSBwcmVzY2FsZXIgZm9yIHJlZnJlc2ggKGRlcGVuZHMgb24gbnVtYmVyIG9mCi0JICogYmFua3MpOiBUaGlzIHZhbHVlIGlzIHNlbGVjdGVkIGZvciBmb3VyIGN5Y2xlcyBldmVyeSA2Mi40IHVzCi0JICogd2l0aCB0d28gU0RSQU0gYmFua3Mgb3IgZm91ciBjeWNsZXMgZXZlcnkgMzEuMiB1cyB3aXRoIG9uZQotCSAqIGJhbmsuIEl0IHdpbGwgYmUgYWRqdXN0ZWQgYWZ0ZXIgbWVtb3J5IHNpemluZy4KLQkgKi8KLQltZW1jdGwtPm1lbWNfbXB0cHIgPSBDT05GSUdfU1lTX01QVFBSOwogCi0JbWVtY3RsLT5tZW1jX21hciA9IDB4MDAwMDAwODg7CisJb3V0X2JlMTYoJm1lbWN0bC0+bWVtY19tcHRwciwgQ09ORklHX1NZU19NUFRQUik7CiAKLQkvKgotCSAqIE1hcCBjb250cm9sbGVyIGJhbmtzIDEgYW5kIDIgdG8gdGhlIFNEUkFNIGJhbmtzIDIgYW5kIDMgYXQKLQkgKiBwcmVsaW1pbmFyeSBhZGRyZXNzZXMgLSB0aGVzZSBoYXZlIHRvIGJlIG1vZGlmaWVkIGFmdGVyIHRoZQotCSAqIFNEUkFNIHNpemUgaGFzIGJlZW4gZGV0ZXJtaW5lZC4KLQkgKi8KLS8qCW1lbWN0bC0+bWVtY19vcjEgPSBDT05GSUdfU1lTX09SMV9QUkVMSU07CSovCi0vKgltZW1jdGwtPm1lbWNfYnIxID0gQ09ORklHX1NZU19CUjFfUFJFTElNOwkqLworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWFyLCAweDAwMDAwMDg4KTsKIAotLyoJbWVtY3RsLT5tZW1jX29yMiA9IENPTkZJR19TWVNfT1IyX1BSRUxJTTsJKi8KLS8qCW1lbWN0bC0+bWVtY19icjIgPSBDT05GSUdfU1lTX0JSMl9QUkVMSU07CSovCisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tYW1yLAorCQkgQ09ORklHX1NZU19NQU1SICYgKH4oTUFNUl9QVEFFKSkpOyAvKiBubyByZWZyZXNoIHlldCAqLwogCi0JbWVtY3RsLT5tZW1jX21hbXIgPSBDT05GSUdfU1lTX01BTVIgJiAofihNQU1SX1BUQUUpKTsJLyogbm8gcmVmcmVzaCB5ZXQgKi8KLQotCXVkZWxheSAoMjAwKTsKKwl1ZGVsYXkoMjAwKTsKIAogCS8qIHBlcmZvcm0gU0RSQU0gaW5pdGlhbGl6c2F0aW9uIHNlcXVlbmNlICovCiAKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwMjEwNTsJLyogU0RSQU0gYmFuayAwICovCi0JdWRlbGF5ICgxKTsKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwMjgzMDsJLyogU0RSQU0gYmFuayAwIC0gZXhlY3V0ZSB0d2ljZSAqLwotCXVkZWxheSAoMSk7Ci0JbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDIxMDY7CS8qIFNEUkFNIGJhbmsgMCAtIFJVTiBNUlMgUGF0dGVybiBmcm9tIGxvYyA2ICovCi0JdWRlbGF5ICgxKTsKKwkvKiBTRFJBTSBiYW5rIDAgKi8KKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwMjEwNSk7CisJdWRlbGF5KDEpOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWNyLCAweDgwMDAyODMwKTsgLyogZXhlY3V0ZSB0d2ljZSAqLworCXVkZWxheSgxKTsKKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwMjEwNik7IC8qIFJVTiBNUlMgUGF0dGVybiBmcm9tIGxvYyA2ICovCisJdWRlbGF5KDEpOwogCi0JbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDQxMDU7CS8qIFNEUkFNIGJhbmsgMSAqLwotCXVkZWxheSAoMSk7Ci0JbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMDQ4MzA7CS8qIFNEUkFNIGJhbmsgMSAtIGV4ZWN1dGUgdHdpY2UgKi8KLQl1ZGVsYXkgKDEpOwotCW1lbWN0bC0+bWVtY19tY3IgPSAweDgwMDA0MTA2OwkvKiBTRFJBTSBiYW5rIDEgLSBSVU4gTVJTIFBhdHRlcm4gZnJvbSBsb2MgNiAqLwotCXVkZWxheSAoMSk7CisJLyogU0RSQU0gYmFuayAxICovCisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tY3IsIDB4ODAwMDQxMDUpOworCXVkZWxheSgxKTsKKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwNDgzMCk7IC8qIGV4ZWN1dGUgdHdpY2UgKi8KKwl1ZGVsYXkoMSk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tY3IsIDB4ODAwMDQxMDYpOyAvKiBSVU4gTVJTIFBhdHRlcm4gZnJvbSBsb2MgNiAqLworCXVkZWxheSgxKTsKIAotCW1lbWN0bC0+bWVtY19tY3IgPSAweDgwMDA2MTA1OwkvKiBTRFJBTSBiYW5rIDIgKi8KLQl1ZGVsYXkgKDEpOwotCW1lbWN0bC0+bWVtY19tY3IgPSAweDgwMDA2ODMwOwkvKiBTRFJBTSBiYW5rIDIgLSBleGVjdXRlIHR3aWNlICovCi0JdWRlbGF5ICgxKTsKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwNjEwNjsJLyogU0RSQU0gYmFuayAyIC0gUlVOIE1SUyBQYXR0ZXJuIGZyb20gbG9jIDYgKi8KLQl1ZGVsYXkgKDEpOworCS8qIFNEUkFNIGJhbmsgMiAqLworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWNyLCAweDgwMDA2MTA1KTsKKwl1ZGVsYXkoMSk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19tY3IsIDB4ODAwMDY4MzApOyAvKiBleGVjdXRlIHR3aWNlICovCisJdWRlbGF5KDEpOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWNyLCAweDgwMDA2MTA2KTsgLyogUlVOIE1SUyBQYXR0ZXJuIGZyb20gbG9jIDYgKi8KKwl1ZGVsYXkoMSk7CiAKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwQzEwNTsJLyogU0RSQU0gYmFuayAyICovCi0JdWRlbGF5ICgxKTsKLQltZW1jdGwtPm1lbWNfbWNyID0gMHg4MDAwQzgzMDsJLyogU0RSQU0gYmFuayAyIC0gZXhlY3V0ZSB0d2ljZSAqLwotCXVkZWxheSAoMSk7Ci0JbWVtY3RsLT5tZW1jX21jciA9IDB4ODAwMEMxMDY7CS8qIFNEUkFNIGJhbmsgMiAtIFJVTiBNUlMgUGF0dGVybiBmcm9tIGxvYyA2ICovCi0JdWRlbGF5ICgxKTsKKwkvKiBTRFJBTSBiYW5rIDMgKi8KKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwQzEwNSk7CisJdWRlbGF5KDEpOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfbWNyLCAweDgwMDBDODMwKTsgLyogZXhlY3V0ZSB0d2ljZSAqLworCXVkZWxheSgxKTsKKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX21jciwgMHg4MDAwQzEwNik7IC8qIFJVTiBNUlMgUGF0dGVybiBmcm9tIGxvYyA2ICovCisJdWRlbGF5KDEpOwogCi0JbWVtY3RsLT5tZW1jX21hbXIgfD0gTUFNUl9QVEFFOwkvKiBlbmFibGUgcmVmcmVzaCAqLwotCXVkZWxheSAoMTAwMCk7Ci0jaWYgMAkJCQkvKiA0IHggOE1CICovCi0Jc2l6ZV9iMCA9IDB4MDA4MDAwMDA7Ci0Jc2l6ZV9iMSA9IDB4MDA4MDAwMDA7Ci0Jc2l6ZV9iMiA9IDB4MDA4MDAwMDA7Ci0Jc2l6ZV9iMyA9IDB4MDA4MDAwMDA7Ci0JbWVtY3RsLT5tZW1jX21wdHByID0gQ09ORklHX1NZU19NUFRQUjsKLQl1ZGVsYXkgKDEwMDApOwotCW1lbWN0bC0+bWVtY19vcjEgPSAweEZGODAwQTAwOwotCW1lbWN0bC0+bWVtY19icjEgPSAweDAwMDAwMDgxOwotCW1lbWN0bC0+bWVtY19vcjIgPSAweEZGMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjIgPSAweDAwODAwMDgxOwotCW1lbWN0bC0+bWVtY19vcjMgPSAweEZFMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjMgPSAweDAxMDAwMDgxOwotCW1lbWN0bC0+bWVtY19vcjYgPSAweEZFMDAwQTAwOwotCW1lbWN0bC0+bWVtY19icjYgPSAweDAxODAwMDgxOwotI2Vsc2UgIC8qIDQgeCAxNiBNQiAqLwotCXNpemVfYjAgPSAweDAxMDAwMDAwOwotCXNpemVfYjEgPSAweDAxMDAwMDAwOwotCXNpemVfYjIgPSAweDAxMDAwMDAwOwotCXNpemVfYjMgPSAweDAxMDAwMDAwOwotCW1lbWN0bC0+bWVtY19tcHRwciA9IENPTkZJR19TWVNfTVBUUFI7Ci0JdWRlbGF5ICgxMDAwKTsKLQltZW1jdGwtPm1lbWNfb3IxID0gMHhGRjAwMEEwMDsKLQltZW1jdGwtPm1lbWNfYnIxID0gMHgwMDAwMDA4MTsKLQltZW1jdGwtPm1lbWNfb3IyID0gMHhGRTAwMEEwMDsKLQltZW1jdGwtPm1lbWNfYnIyID0gMHgwMTAwMDA4MTsKLQltZW1jdGwtPm1lbWNfb3IzID0gMHhGRDAwMEEwMDsKLQltZW1jdGwtPm1lbWNfYnIzID0gMHgwMjAwMDA4MTsKLQltZW1jdGwtPm1lbWNfb3I2ID0gMHhGQzAwMEEwMDsKLQltZW1jdGwtPm1lbWNfYnI2ID0gMHgwMzAwMDA4MTsKLSNlbmRpZgotCXVkZWxheSAoMTAwMDApOworCXNldGJpdHNfYmUzMigmbWVtY3RsLT5tZW1jX21hbXIsIE1BTVJfUFRBRSk7IC8qIGVuYWJsZSByZWZyZXNoICovCiAKLQlyZXR1cm4gKHNpemVfYjAgKyBzaXplX2IxICsgc2l6ZV9iMiArIHNpemVfYjMpOworCXVkZWxheSgxMDAwKTsKKwkvKiA0IHggMTYgTUIgKi8KKwlvdXRfYmUxNigmbWVtY3RsLT5tZW1jX21wdHByLCBDT05GSUdfU1lTX01QVFBSKTsKKwl1ZGVsYXkoMTAwMCk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19vcjEsIDB4RkYwMDBBMDApOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfYnIxLCAweDAwMDAwMDgxKTsKKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX29yMiwgMHhGRTAwMEEwMCk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19icjIsIDB4MDEwMDAwODEpOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfb3IzLCAweEZEMDAwQTAwKTsKKwlvdXRfYmUzMigmbWVtY3RsLT5tZW1jX2JyMywgMHgwMjAwMDA4MSk7CisJb3V0X2JlMzIoJm1lbWN0bC0+bWVtY19vcjYsIDB4RkMwMDBBMDApOworCW91dF9iZTMyKCZtZW1jdGwtPm1lbWNfYnI2LCAweDAzMDAwMDgxKTsKKwl1ZGVsYXkoMTAwMDApOworCisJcmV0dXJuICg0ICogMTYgKiAxMDI0ICogMTAyNCk7CiB9CiAKLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0gKi8KLQotLyoKLSAqIENoZWNrIG1lbW9yeSByYW5nZSBmb3IgdmFsaWQgUkFNLiBBIHNpbXBsZSBtZW1vcnkgdGVzdCBkZXRlcm1pbmVzCi0gKiB0aGUgYWN0dWFsbHkgYXZhaWxhYmxlIFJBTSBzaXplIGJldHdlZW4gYWRkcmVzc2VzIGBiYXNlJyBhbmQKLSAqIGBiYXNlICsgbWF4c2l6ZScuIFNvbWUgKG5vdCBhbGwpIGhhcmR3YXJlIGVycm9ycyBhcmUgZGV0ZWN0ZWQ6Ci0gKiAtIHNob3J0IGJldHdlZW4gYWRkcmVzcyBsaW5lcwotICogLSBzaG9ydCBiZXR3ZWVuIGRhdGEgbGluZXMKLSAqLwotI2lmIDAKLXN0YXRpYyBsb25nIGludCBkcmFtX3NpemUgKGxvbmcgaW50IG1hbXJfdmFsdWUsIGxvbmcgaW50ICpiYXNlLAotCQkJICAgbG9uZyBpbnQgbWF4c2l6ZSkKK2ludCBtaXNjX2luaXRfcih2b2lkKQogewogCXZvbGF0aWxlIGltbWFwX3QgKmltbWFwID0gKGltbWFwX3QgKikgQ09ORklHX1NZU19JTU1SOwotCXZvbGF0aWxlIG1lbWN0bDh4eF90ICptZW1jdGwgPSAmaW1tYXAtPmltX21lbWN0bDsKLQl2b2xhdGlsZSBsb25nIGludCAqYWRkcjsKLQl1bG9uZyBjbnQsIHZhbDsKLQl1bG9uZyBzYXZlWzMyXTsJCS8qIHRvIG1ha2UgdGVzdCBub24tZGVzdHJ1Y3RpdmUgKi8KLQl1bnNpZ25lZCBjaGFyIGkgPSAwOwogCi0JbWVtY3RsLT5tZW1jX21hbXIgPSBtYW1yX3ZhbHVlOwotCi0JZm9yIChjbnQgPSBtYXhzaXplIC8gc2l6ZW9mIChsb25nKTsgY250ID4gMDsgY250ID4+PSAxKSB7Ci0JCWFkZHIgPSBiYXNlICsgY250OwkvKiBwb2ludGVyIGFyaXRoISAqLwotCi0JCXNhdmVbaSsrXSA9ICphZGRyOwotCQkqYWRkciA9IH5jbnQ7Ci0JfQotCi0JLyogd3JpdGUgMCB0byBiYXNlIGFkZHJlc3MgKi8KLQlhZGRyID0gYmFzZTsKLQlzYXZlW2ldID0gKmFkZHI7Ci0JKmFkZHIgPSAwOwotCi0JLyogY2hlY2sgYXQgYmFzZSBhZGRyZXNzICovCi0JaWYgKCh2YWwgPSAqYWRkcikgIT0gMCkgewotCQkqYWRkciA9IHNhdmVbaV07Ci0JCXJldHVybiAoMCk7Ci0JfQotCi0JZm9yIChjbnQgPSAxOyBjbnQgPD0gbWF4c2l6ZSAvIHNpemVvZiAobG9uZyk7IGNudCA8PD0gMSkgewotCQlhZGRyID0gYmFzZSArIGNudDsJLyogcG9pbnRlciBhcml0aCEgKi8KLQotCQl2YWwgPSAqYWRkcjsKLQkJKmFkZHIgPSBzYXZlWy0taV07Ci0KLQkJaWYgKHZhbCAhPSAofmNudCkpIHsKLQkJCXJldHVybiAoY250ICogc2l6ZW9mIChsb25nKSk7Ci0JCX0KLQl9Ci0JcmV0dXJuIChtYXhzaXplKTsKLX0KLSNlbmRpZgotCi1pbnQgbWlzY19pbml0X3IgKHZvaWQpCi17Ci0Jdm9sYXRpbGUgaW1tYXBfdCAqaW1tYXAgPSAoaW1tYXBfdCAqKSBDT05GSUdfU1lTX0lNTVI7CiAjaWZkZWYgQ09ORklHX0lERV9MRUQKIAkvKiBDb25maWd1cmUgUEE4IGFzIG91dHB1dCBwb3J0ICovCi0JaW1tYXAtPmltX2lvcG9ydC5pb3BfcGFkaXIgfD0gMHg4MDsKLQlpbW1hcC0+aW1faW9wb3J0LmlvcF9wYW9kciB8PSAweDgwOwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3BhcGFyICY9IH4weDgwOwotCWltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGF0IHw9IDB4ODA7CS8qIHR1cm4gaXQgb2ZmICovCi0jZW5kaWYKLSNpZmRlZiBLVVA0WF9VU0IKLQl1c2JfaW5pdF9rdXA0eCAoKTsKKwlzZXRiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGlyLCBQQV84KTsKKwlzZXRiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3Bhb2RyLCBQQV84KTsKKwljbHJiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BhcGFyLCBQQV84KTsKKwlzZXRiaXRzX2JlMTYoJmltbWFwLT5pbV9pb3BvcnQuaW9wX3BhZGF0LCBQQV84KTsgLyogdHVybiBpdCBvZmYgKi8KICNlbmRpZgogCWxvYWRfc2VybnVtX2V0aGFkZHIoKTsKLQlzZXRlbnYgKCJodyIsICI0eCIpOwotCXBvd2Vyb25fa2V5ICgpOwotCXJldHVybiAoMCk7CisJc2V0ZW52KCJodyIsICI0eCIpOworCXBvd2Vyb25fa2V5KCk7CisJcmV0dXJuIDA7CiB9CmRpZmYgLS1naXQgYS9ib2FyZC9tcGwvY29tbW9uL2NvbW1vbl91dGlsLmMgYi9ib2FyZC9tcGwvY29tbW9uL2NvbW1vbl91dGlsLmMKaW5kZXggYjQzNDNkOC4uNjI0YzcwOCAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL2NvbW1vbi9jb21tb25fdXRpbC5jCisrKyBiL2JvYXJkL21wbC9jb21tb24vY29tbW9uX3V0aWwuYwpAQCAtMjg0LDEzICsyODQsMTMgQEAKIAkJfQogCX0KIAltZW1jcHkoYmFjay5zaWduYXR1cmUsIk1QTFwwIiw0KTsKLQlpID0gZ2V0ZW52X3IoInNlcmlhbCMiLGJhY2suc2VyaWFsX25hbWUsMTYpOworCWkgPSBnZXRlbnZfZigic2VyaWFsIyIsYmFjay5zZXJpYWxfbmFtZSwxNik7CiAJaWYoaSA8IDApIHsKIAkJcHV0cygiTm90IHBvc3NpYmxlIHRvIHdyaXRlIEJhY2t1cFxuIik7CiAJCXJldHVybjsKIAl9CiAJYmFjay5zZXJpYWxfbmFtZVsxNl09MDsKLQlpID0gZ2V0ZW52X3IoImV0aGFkZHIiLGJhY2suZXRoX2FkZHIsMjApOworCWkgPSBnZXRlbnZfZigiZXRoYWRkciIsYmFjay5ldGhfYWRkciwyMCk7CiAJaWYoaSA8IDApIHsKIAkJcHV0cygiTm90IHBvc3NpYmxlIHRvIHdyaXRlIEJhY2t1cFxuIik7CiAJCXJldHVybjsKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9jb21tb24vbWVtdHN0LmMgYi9ib2FyZC9tcGwvY29tbW9uL21lbXRzdC5jCmluZGV4IDkyYzMzYmEuLjY4OTczZjkgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9jb21tb24vbWVtdHN0LmMKKysrIGIvYm9hcmQvbXBsL2NvbW1vbi9tZW10c3QuYwpAQCAtMjksNyArMjksNyBAQAogCXVuc2lnbmVkIGNoYXIgc1szMl07CiAJaW50IGk7CiAKLQlpID0gZ2V0ZW52X3IgKCJ0ZXN0bWVtIiwgcywgMzIpOworCWkgPSBnZXRlbnZfZigidGVzdG1lbSIsIHMsIDMyKTsKIAlpZiAoaSAhPSAwKSB7CiAJCWkgPSAoaW50KSBzaW1wbGVfc3RydG91bCAocywgTlVMTCwgMTApOwogCQlpZiAoKGkgPiAwKSAmJiAoaSA8IDB4ZikpIHsKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9taXA0MDUvbWlwNDA1LmMgYi9ib2FyZC9tcGwvbWlwNDA1L21pcDQwNS5jCmluZGV4IGFmM2E5OGEuLjc0MDBjYTYgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9taXA0MDUvbWlwNDA1LmMKKysrIGIvYm9hcmQvbXBsL21pcDQwNS9taXA0MDUuYwpAQCAtNTg5LDcgKzU4OSw3IEBACiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCWdldF9wY2JyZXZfdmFyKCZiYywmdmFyKTsKLQlpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgKGNoYXIgKilzLCAzMik7CisJaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgKGNoYXIgKilzLCAzMik7CiAJaWYgKChpID09IDApIHx8IHN0cm5jbXAgKChjaGFyICopcywgQk9BUkRfTkFNRSxzaXplb2YoQk9BUkRfTkFNRSkpKSB7CiAJCWdldF9iYWNrdXBfdmFsdWVzIChiKTsKIAkJaWYgKHN0cm5jbXAgKGItPnNpZ25hdHVyZSwgIk1QTFwwIiwgNCkgIT0gMCkgewpkaWZmIC0tZ2l0IGEvYm9hcmQvbXBsL3BhdGkvcGF0aS5jIGIvYm9hcmQvbXBsL3BhdGkvcGF0aS5jCmluZGV4IGUxMmJjNDIuLjdmMTE2NGEgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9wYXRpL3BhdGkuYworKysgYi9ib2FyZC9tcGwvcGF0aS9wYXRpLmMKQEAgLTM1Myw3ICszNTMsNyBAQAogCXB1dHMgKCJcbkJvYXJkOiAiKTsKIAlyZWc9aW4zMihQTERfQ09ORklHX0JBU0UrUExEX0JPQVJEX1RJTUlORyk7CiAJcmV2PShjaGFyKShTWVNDTlRSX0JSRVYocmVnKSsnQScpOwotCWkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzLCAzMik7CisJaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgcywgMzIpOwogCWlmICgoaSA9PSAtMSkpIHsKIAkJcHV0cyAoIiMjIyBObyBIVyBJRCAtIGFzc3VtaW5nICIgQk9BUkRfTkFNRSk7CiAJCXByaW50ZigiIFJldi4gJWNcbiIscmV2KTsKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC9waXA0MDUvcGlwNDA1LmMgYi9ib2FyZC9tcGwvcGlwNDA1L3BpcDQwNS5jCmluZGV4IDc5MmVjY2MuLjdiNDhjMDYgMTAwNjQ0Ci0tLSBhL2JvYXJkL21wbC9waXA0MDUvcGlwNDA1LmMKKysrIGIvYm9hcmQvbXBsL3BpcDQwNS9waXA0MDUuYwpAQCAtNTc5LDcgKzU3OSw3IEBACiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCi0JaSA9IGdldGVudl9yICgic2VyaWFsIyIsIChjaGFyICopcywgMzIpOworCWkgPSBnZXRlbnZfZigic2VyaWFsIyIsIChjaGFyICopcywgMzIpOwogCWlmICgoaSA9PSAwKSB8fCBzdHJuY21wICgoY2hhciAqKXMsICJQSVA0MDUiLCA2KSkgewogCQlnZXRfYmFja3VwX3ZhbHVlcyAoYik7CiAJCWlmIChzdHJuY21wIChiLT5zaWduYXR1cmUsICJNUExcMCIsIDQpICE9IDApIHsKZGlmZiAtLWdpdCBhL2JvYXJkL21wbC92Y21hOS92Y21hOS5jIGIvYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmMKaW5kZXggMTgzNTY3Ny4uZWFlZWM4MiAxMDA2NDQKLS0tIGEvYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmMKKysrIGIvYm9hcmQvbXBsL3ZjbWE5L3ZjbWE5LmMKQEAgLTI5NSw3ICsyOTUsNyBAQAogCWludCBpOwogCWJhY2t1cF90ICpiID0gKGJhY2t1cF90ICopIHM7CiAKLQlpID0gZ2V0ZW52X3IoInNlcmlhbCMiLCBzLCAzMik7CisJaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgcywgMzIpOwogCWlmICgoaSA8IDApIHx8IHN0cm5jbXAgKHMsICJWQ01BOSIsIDUpKSB7CiAJCWdldF9iYWNrdXBfdmFsdWVzIChiKTsKIAkJaWYgKHN0cm5jbXAgKGItPnNpZ25hdHVyZSwgIk1QTFwwIiwgNCkgIT0gMCkgewpAQCAtMzQwLDcgKzM0MCw3IEBACiAJY2hhciBzWzUwXTsKIAlpbnQgaTsKIAotCWlmICgoaSA9IGdldGVudl9yKCJzZXJpYWwjIiwgcywgMzIpKSA8IDApIHsKKwlpZiAoKGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHMsIDMyKSkgPCAwKSB7CiAJCXB1dHMgKCIjIyMgTm8gSFcgSUQgLSBhc3N1bWluZyBWQ01BOSIpOwogCQlwcmludGYoImkgJWQiLCBpKjI0KTsKIAl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvYm9hcmQvcHBtYzgyNjAvcHBtYzgyNjAuYyBiL2JvYXJkL3BwbWM4MjYwL3BwbWM4MjYwLmMKaW5kZXggMTgwOGFiZC4uYmYwMTg4YyAxMDA2NDQKLS0tIGEvYm9hcmQvcHBtYzgyNjAvcHBtYzgyNjAuYworKysgYi9ib2FyZC9wcG1jODI2MC9wcG1jODI2MC5jCkBAIC0yODUsNyArMjg1LDcgQEAKIAlpbnQgcmVzOwogCiAJaWYgKChkcyAhPSAwKSAmJiAoZHMgIT0gMHhmZikpIHsKLQkJcmVzID0gZ2V0ZW52X3IgKCJldGhhZGRyIiwgKGNoYXIgKil0bXAsIHNpemVvZiAodG1wKSk7CisJCXJlcyA9IGdldGVudl9mKCJldGhhZGRyIiwgKGNoYXIgKil0bXAsIHNpemVvZiAodG1wKSk7CiAJCWlmIChyZXMgPiAwKSB7CiAJCQlzcyA9ICgoZHMgPj4gNCkgJiAweDBmKTsKIAkJCXNzICs9IHNzIDwgMHgwYSA/ICcwJyA6ICgnYScgLSAxMCk7CmRpZmYgLS1naXQgYS9ib2FyZC9wcm9kcml2ZS9wM214L212X2V0aC5jIGIvYm9hcmQvcHJvZHJpdmUvcDNteC9tdl9ldGguYwppbmRleCA4ZmNjMTU1Li5lNjc1OTZiIDEwMDY0NAotLS0gYS9ib2FyZC9wcm9kcml2ZS9wM214L212X2V0aC5jCisrKyBiL2JvYXJkL3Byb2RyaXZlL3AzbXgvbXZfZXRoLmMKQEAgLTI5OCw3ICsyOTgsNyBAQAogCQkJcmV0dXJuOwogCQl9CiAKLQkJdGVtcCA9IGdldGVudl9yIChzLCBidWYsIHNpemVvZiAoYnVmKSk7CisJCXRlbXAgPSBnZXRlbnZfZihzLCBidWYsIHNpemVvZiAoYnVmKSk7CiAJCXMgPSAodGVtcCA+IDApID8gYnVmIDogTlVMTDsKIAogI2lmZGVmIERFQlVHCkBAIC0zOTcsNyArMzk3LDcgQEAKIAkJCXJldHVybjsKIAkJfQogCi0JCXRlbXAgPSBnZXRlbnZfciAocywgYnVmLCBzaXplb2YgKGJ1ZikpOworCQl0ZW1wID0gZ2V0ZW52X2YocywgYnVmLCBzaXplb2YgKGJ1ZikpOwogCQlzID0gKHRlbXAgPiAwKSA/IGJ1ZiA6IE5VTEw7CiAKICNpZmRlZiBERUJVRwpkaWZmIC0tZ2l0IGEvYm9hcmQvcHVycGxlL2ZsYXNoLmMgYi9ib2FyZC9wdXJwbGUvZmxhc2guYwppbmRleCAzN2M3YmVjLi41Y2VlMzVlIDEwMDY0NAotLS0gYS9ib2FyZC9wdXJwbGUvZmxhc2guYworKysgYi9ib2FyZC9wdXJwbGUvZmxhc2guYwpAQCAtNDQ4LDcgKzQ0OCw2IEBACiAJRlBXViAqYWRkcjsKIAlpbnQgZmxhZywgcHJvdCwgc2VjdDsKIAl1bG9uZyBzdGFydCwgbm93LCBsYXN0OwotCWludCByY29kZSA9IDA7CiAJRlVOQ1BUUl9XUiBhYnNFbnRyeTsKIAogCWxvYWRfY21kKElOX1JBTV9DTURfV1JJVEUpOwpAQCAtNDkwLDcgKzQ4OSw3IEBACiAJbGFzdCAgPSBnZXRfdGltZXIoMCk7CiAKIAkvKiBTdGFydCBlcmFzZSBvbiB1bnByb3RlY3RlZCBzZWN0b3JzICovCi0JZm9yIChzZWN0ID0gc19maXJzdDsgc2VjdDw9c19sYXN0ICYmIHJjb2RlID09IDA7IHNlY3QrKykgeworCWZvciAoc2VjdCA9IHNfZmlyc3Q7IHNlY3Q8PXNfbGFzdDsgc2VjdCsrKSB7CiAKIAkJaWYgKGluZm8tPnByb3RlY3Rbc2VjdF0gIT0gMCkJLyogcHJvdGVjdGVkLCBza2lwIGl0ICovCiAJCQljb250aW51ZTsKQEAgLTUyMyw3ICs1MjIsNyBAQAogCX0KIAogCXByaW50ZiAoIiBkb25lXG4iKTsKLQlyZXR1cm4gcmNvZGU7CisJcmV0dXJuIDA7CiB9CiAKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KZGlmZiAtLWdpdCBhL2JvYXJkL3NiYzQwNS9zYmM0MDUuYyBiL2JvYXJkL3NiYzQwNS9zYmM0MDUuYwppbmRleCA3NGU2MjA0Li4zM2I0ZDExIDEwMDY0NAotLS0gYS9ib2FyZC9zYmM0MDUvc2JjNDA1LmMKKysrIGIvYm9hcmQvc2JjNDA1L3NiYzQwNS5jCkBAIC03OSw3ICs3OSw3IEBACiBpbnQgY2hlY2tib2FyZCAodm9pZCkKIHsKIAljaGFyIHN0cls2NF07Ci0JaW50IGkgPSBnZXRlbnZfciAoInNlcmlhbCMiLCBzdHIsIHNpemVvZihzdHIpKTsKKwlpbnQgaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCmRpZmYgLS1naXQgYS9ib2FyZC9zYmM4MjYwL3NiYzgyNjAuYyBiL2JvYXJkL3NiYzgyNjAvc2JjODI2MC5jCmluZGV4IGY1ZjIzYmUuLjMzY2UxYTQgMTAwNjQ0Ci0tLSBhL2JvYXJkL3NiYzgyNjAvc2JjODI2MC5jCisrKyBiL2JvYXJkL3NiYzgyNjAvc2JjODI2MC5jCkBAIC0yNjcsNyArMjY3LDcgQEAKIAlpbnQgcmVzOwogCiAJaWYgKChkcyAhPSAwKSAmJiAoZHMgIT0gMHhmZikpIHsKLQkJcmVzID0gZ2V0ZW52X3IgKCJldGhhZGRyIiwgdG1wLCBzaXplb2YgKHRtcCkpOworCQlyZXMgPSBnZXRlbnZfZigiZXRoYWRkciIsIHRtcCwgc2l6ZW9mICh0bXApKTsKIAkJaWYgKHJlcyA+IDApIHsKIAkJCXNzID0gKChkcyA+PiA0KSAmIDB4MGYpOwogCQkJc3MgKz0gc3MgPCAweDBhID8gJzAnIDogKCdhJyAtIDEwKTsKZGlmZiAtLWdpdCBhL2JvYXJkL3NpZW1lbnMvQ0NNL2NjbS5jIGIvYm9hcmQvc2llbWVucy9DQ00vY2NtLmMKaW5kZXggODA1M2RhNC4uZTkxY2ViMCAxMDA2NDQKLS0tIGEvYm9hcmQvc2llbWVucy9DQ00vY2NtLmMKKysrIGIvYm9hcmQvc2llbWVucy9DQ00vY2NtLmMKQEAgLTEwMiw3ICsxMDIsNyBAQAogICAgIHVuc2lnbmVkIGNoYXIgKnM7CiAgICAgdW5zaWduZWQgY2hhciBidWZbNjRdOwogCi0gICAgcyA9IChnZXRlbnZfciAoInNlcmlhbCMiLCAoY2hhciAqKSZidWYsIHNpemVvZihidWYpKSA+IDApID8gYnVmIDogTlVMTDsKKyAgICBzID0gKGdldGVudl9mKCJzZXJpYWwjIiwgKGNoYXIgKikmYnVmLCBzaXplb2YoYnVmKSkgPiAwKSA/IGJ1ZiA6IE5VTEw7CiAKICAgICBwdXRzICgiQm9hcmQ6IFNpZW1lbnMgQ0NNIik7CiAKZGlmZiAtLWdpdCBhL2JvYXJkL3NpZW1lbnMvU0NNL3NjbS5jIGIvYm9hcmQvc2llbWVucy9TQ00vc2NtLmMKaW5kZXggZTA2MTFmZS4uOTI2ZTQ5MSAxMDA2NDQKLS0tIGEvYm9hcmQvc2llbWVucy9TQ00vc2NtLmMKKysrIGIvYm9hcmQvc2llbWVucy9TQ00vc2NtLmMKQEAgLTIwOSw3ICsyMDksNyBAQAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZiAoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCmRpZmYgLS1naXQgYS9ib2FyZC9zbm1jL3FzODUwL3FzODUwLmMgYi9ib2FyZC9zbm1jL3FzODUwL3FzODUwLmMKaW5kZXggY2M4ZWFhZC4uNDNmNzQ5NSAxMDA2NDQKLS0tIGEvYm9hcmQvc25tYy9xczg1MC9xczg1MC5jCisrKyBiL2JvYXJkL3NubWMvcXM4NTAvcXM4NTAuYwpAQCAtMTAwLDcgKzEwMCw3IEBACiAJY2hhciBidWZbNjRdOwogCWludCBpOwogCi0JaSA9IGdldGVudl9yKCJzZXJpYWwjIiwgYnVmLCBzaXplb2YoYnVmKSk7CisJaSA9IGdldGVudl9mKCJzZXJpYWwjIiwgYnVmLCBzaXplb2YoYnVmKSk7CiAJcyA9IChpPjApID8gYnVmIDogTlVMTDsKIAogCWlmICghcyB8fCBzdHJuY21wKHMsIEJPQVJEX0lERU5USVRZLCA1KSkgewpkaWZmIC0tZ2l0IGEvYm9hcmQvc25tYy9xczg2MHQvcXM4NjB0LmMgYi9ib2FyZC9zbm1jL3FzODYwdC9xczg2MHQuYwppbmRleCBiMjcyZDgwLi5mYTg4NzA3IDEwMDY0NAotLS0gYS9ib2FyZC9zbm1jL3FzODYwdC9xczg2MHQuYworKysgYi9ib2FyZC9zbm1jL3FzODYwdC9xczg2MHQuYwpAQCAtOTMsNyArOTMsNyBAQAogCWNoYXIgYnVmWzY0XTsKIAlpbnQgaTsKIAotCWkgPSBnZXRlbnZfcigic2VyaWFsIyIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworCWkgPSBnZXRlbnZfZigic2VyaWFsIyIsIGJ1Ziwgc2l6ZW9mKGJ1ZikpOwogCXMgPSAoaT4wKSA/IGJ1ZiA6IE5VTEw7CiAKIAlpZiAoIXMgfHwgc3RybmNtcChzLCAiUVM4NjBUIiwgNikpIHsKZGlmZiAtLWdpdCBhL2JvYXJkL3RpL3BhbmRhL3BhbmRhLmMgYi9ib2FyZC90aS9wYW5kYS9wYW5kYS5jCmluZGV4IDkxN2JiZWMuLjFiODE1M2IgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RpL3BhbmRhL3BhbmRhLmMKKysrIGIvYm9hcmQvdGkvcGFuZGEvcGFuZGEuYwpAQCAtMjQsNiArMjQsOCBAQAogI2luY2x1ZGUgPGNvbW1vbi5oPgogI2luY2x1ZGUgPGFzbS9hcmNoL3N5c19wcm90by5oPgogCisjaW5jbHVkZSAicGFuZGEuaCIKKwogREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CiAKIGNvbnN0IHN0cnVjdCBvbWFwX3N5c2luZm8gc3lzaW5mbyA9IHsKQEAgLTYxLDMgKzYzLDI3IEBACiB7CiAJcmV0dXJuIDA7CiB9CisKK3ZvaWQgZG9fc2V0X211eCh1MzIgYmFzZSwgc3RydWN0IHBhZF9jb25mX2VudHJ5IGNvbnN0ICphcnJheSwgaW50IHNpemUpCit7CisJaW50IGk7CisJc3RydWN0IHBhZF9jb25mX2VudHJ5ICpwYWQgPSAoc3RydWN0IHBhZF9jb25mX2VudHJ5ICopIGFycmF5OworCisJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKywgcGFkKyspCisJCXdyaXRldyhwYWQtPnZhbCwgYmFzZSArIHBhZC0+b2Zmc2V0KTsKK30KKworLyoqCisgKiBAYnJpZWYgc2V0X211eGNvbmZfcmVncyBTZXR0aW5nIHVwIHRoZSBjb25maWd1cmF0aW9uIE11eCByZWdpc3RlcnMKKyAqIHNwZWNpZmljIHRvIHRoZSBib2FyZC4KKyAqLwordm9pZCBzZXRfbXV4Y29uZl9yZWdzKHZvaWQpCit7CisJZG9fc2V0X211eChDT05UUk9MX1BBRENPTkZfQ09SRSwgY29yZV9wYWRjb25mX2FycmF5LAorCQkgICBzaXplb2YoY29yZV9wYWRjb25mX2FycmF5KSAvCisJCSAgIHNpemVvZihzdHJ1Y3QgcGFkX2NvbmZfZW50cnkpKTsKKworCWRvX3NldF9tdXgoQ09OVFJPTF9QQURDT05GX1dLVVAsIHdrdXBfcGFkY29uZl9hcnJheSwKKwkJICAgc2l6ZW9mKHdrdXBfcGFkY29uZl9hcnJheSkgLworCQkgICBzaXplb2Yoc3RydWN0IHBhZF9jb25mX2VudHJ5KSk7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC90aS9wYW5kYS9wYW5kYS5oIGIvYm9hcmQvdGkvcGFuZGEvcGFuZGEuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjZhNmIxCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvdGkvcGFuZGEvcGFuZGEuaApAQCAtMCwwICsxLDI2NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkLCA8d3d3LnRpLmNvbT4KKyAqCisgKglCYWxhamkgS3Jpc2huYW1vb3J0aHkJPGJhbGFqaXRrQHRpLmNvbT4KKyAqCUFuZWVzaCBWCQk8YW5lZXNoQHRpLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX1BBTkRBX0hfCisjZGVmaW5lIF9QQU5EQV9IXworCisjaW5jbHVkZSA8YXNtL2lvLmg+CisjaW5jbHVkZSA8YXNtL2FyY2gvbXV4X29tYXA0Lmg+CisKK2NvbnN0IHN0cnVjdCBwYWRfY29uZl9lbnRyeSBjb3JlX3BhZGNvbmZfYXJyYXlbXSA9IHsKKwl7R1BNQ19BRDAsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBzZG1tYzJfZGF0MCAqLworCXtHUE1DX0FEMSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sIAkvKiBzZG1tYzJfZGF0MSAqLworCXtHUE1DX0FEMiwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIHNkbW1jMl9kYXQyICovCisJe0dQTUNfQUQzLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyogc2RtbWMyX2RhdDMgKi8KKwl7R1BNQ19BRDQsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBzZG1tYzJfZGF0NCAqLworCXtHUE1DX0FENSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIHNkbW1jMl9kYXQ1ICovCisJe0dQTUNfQUQ2LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyogc2RtbWMyX2RhdDYgKi8KKwl7R1BNQ19BRDcsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBzZG1tYzJfZGF0NyAqLworCXtHUE1DX0FEOCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0zKX0sCS8qIGdwaW9fMzIgKi8KKwl7R1BNQ19BRDksIChQVFUgfCBJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb18zMyAqLworCXtHUE1DX0FEMTAsIChQVFUgfCBJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb18zNCAqLworCXtHUE1DX0FEMTEsIChQVFUgfCBJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb18zNSAqLworCXtHUE1DX0FEMTIsIChQVFUgfCBJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb18zNiAqLworCXtHUE1DX0FEMTMsIChQVEQgfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfT1VUX1BURCB8IE0zKX0sCS8qIGdwaW9fMzcgKi8KKwl7R1BNQ19BRDE0LCAoUFREIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX09VVF9QVEQgfCBNMyl9LAkvKiBncGlvXzM4ICovCisJe0dQTUNfQUQxNSwgKFBURCB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9PVVRfUFREIHwgTTMpfSwJLyogZ3Bpb18zOSAqLworCXtHUE1DX0ExNiwgKE0zKX0sCQkJCQkJLyogZ3Bpb180MCAqLworCXtHUE1DX0ExNywgKFBURCB8IE0zKX0sCQkJCQkJLyogZ3Bpb180MSAqLworCXtHUE1DX0ExOCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIGtwZF9yb3c2ICovCisJe0dQTUNfQTE5LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyoga3BkX3JvdzcgKi8KKwl7R1BNQ19BMjAsIChJRU4gfCBNMyl9LAkJCQkJCS8qIGdwaW9fNDQgKi8KKwl7R1BNQ19BMjEsIChNMyl9LAkJCQkJCS8qIGdwaW9fNDUgKi8KKwl7R1BNQ19BMjIsIChPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkJCS8qIGtwZF9jb2w2ICovCisJe0dQTUNfQTIzLCAoT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJCQkvKiBrcGRfY29sNyAqLworCXtHUE1DX0EyNCwgKFBURCB8IE0zKX0sCQkJCQkJLyogZ3Bpb180OCAqLworCXtHUE1DX0EyNSwgKFBURCB8IE0zKX0sCQkJCQkJLyogZ3Bpb180OSAqLworCXtHUE1DX05DUzAsIChNMyl9LAkJCQkJCS8qIGdwaW9fNTAgKi8KKwl7R1BNQ19OQ1MxLCAoSUVOIHwgTTMpfSwJCQkJCS8qIGdwaW9fNTEgKi8KKwl7R1BNQ19OQ1MyLCAoSUVOIHwgTTMpfSwJCQkJCS8qIGdwaW9fNTIgKi8KKwl7R1BNQ19OQ1MzLCAoSUVOIHwgTTMpfSwJCQkJCS8qIGdwaW9fNTMgKi8KKwl7R1BNQ19OV1AsIChNMyl9LAkJCQkJCS8qIGdwaW9fNTQgKi8KKwl7R1BNQ19DTEssIChQVEQgfCBNMyl9LAkJCQkJCS8qIGdwaW9fNTUgKi8KKwl7R1BNQ19OQURWX0FMRSwgKE0zKX0sCQkJCQkJLyogZ3Bpb181NiAqLworCXtHUE1DX05PRSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9PVVRfUFREIHwgTTEpfSwJCS8qIHNkbW1jMl9jbGsgKi8KKwl7R1BNQ19OV0UsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBzZG1tYzJfY21kICovCisJe0dQTUNfTkJFMF9DTEUsIChNMyl9LAkJCQkJCS8qIGdwaW9fNTkgKi8KKwl7R1BNQ19OQkUxLCAoUFREIHwgTTMpfSwJCQkJCS8qIGdwaW9fNjAgKi8KKwl7R1BNQ19XQUlUMCwgKFBUVSB8IElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzYxICovCisJe0dQTUNfV0FJVDEsIChJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb182MiAqLworCXtDMkNfREFUQTExLCAoUFREIHwgTTMpfSwJCQkJCS8qIGdwaW9fMTAwICovCisJe0MyQ19EQVRBMTIsIChNMSl9LAkJCQkJCS8qIGRzaTFfdGUwICovCisJe0MyQ19EQVRBMTMsIChQVEQgfCBNMyl9LAkJCQkJLyogZ3Bpb18xMDIgKi8KKwl7QzJDX0RBVEExNCwgKE0xKX0sCQkJCQkJLyogZHNpMl90ZTAgKi8KKwl7QzJDX0RBVEExNSwgKFBURCB8IE0zKX0sCQkJCQkvKiBncGlvXzEwNCAqLworCXtIRE1JX0hQRCwgKE0wKX0sCQkJCQkJLyogaGRtaV9ocGQgKi8KKwl7SERNSV9DRUMsIChNMCl9LAkJCQkJCS8qIGhkbWlfY2VjICovCisJe0hETUlfRERDX1NDTCwgKFBUVSB8IE0wKX0sCQkJCQkvKiBoZG1pX2RkY19zY2wgKi8KKwl7SERNSV9ERENfU0RBLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJLyogaGRtaV9kZGNfc2RhICovCisJe0NTSTIxX0RYMCwgKElFTiB8IE0wKX0sCQkJCQkvKiBjc2kyMV9keDAgKi8KKwl7Q1NJMjFfRFkwLCAoSUVOIHwgTTApfSwJCQkJCS8qIGNzaTIxX2R5MCAqLworCXtDU0kyMV9EWDEsIChJRU4gfCBNMCl9LAkJCQkJLyogY3NpMjFfZHgxICovCisJe0NTSTIxX0RZMSwgKElFTiB8IE0wKX0sCQkJCQkvKiBjc2kyMV9keTEgKi8KKwl7Q1NJMjFfRFgyLCAoSUVOIHwgTTApfSwJCQkJCS8qIGNzaTIxX2R4MiAqLworCXtDU0kyMV9EWTIsIChJRU4gfCBNMCl9LAkJCQkJLyogY3NpMjFfZHkyICovCisJe0NTSTIxX0RYMywgKFBURCB8IE03KX0sCQkJCQkvKiBjc2kyMV9keDMgKi8KKwl7Q1NJMjFfRFkzLCAoUFREIHwgTTcpfSwJCQkJCS8qIGNzaTIxX2R5MyAqLworCXtDU0kyMV9EWDQsIChQVEQgfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNNyl9LAkJLyogY3NpMjFfZHg0ICovCisJe0NTSTIxX0RZNCwgKFBURCB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE03KX0sCQkvKiBjc2kyMV9keTQgKi8KKwl7Q1NJMjJfRFgwLCAoSUVOIHwgTTApfSwJCQkJCS8qIGNzaTIyX2R4MCAqLworCXtDU0kyMl9EWTAsIChJRU4gfCBNMCl9LAkJCQkJLyogY3NpMjJfZHkwICovCisJe0NTSTIyX0RYMSwgKElFTiB8IE0wKX0sCQkJCQkvKiBjc2kyMl9keDEgKi8KKwl7Q1NJMjJfRFkxLCAoSUVOIHwgTTApfSwJCQkJCS8qIGNzaTIyX2R5MSAqLworCXtDQU1fU0hVVFRFUiwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9PVVRfUFREIHwgTTApfSwJCS8qIGNhbV9zaHV0dGVyICovCisJe0NBTV9TVFJPQkUsIChPRkZfRU4gfCBPRkZfUEQgfCBPRkZfT1VUX1BURCB8IE0wKX0sCQkvKiBjYW1fc3Ryb2JlICovCisJe0NBTV9HTE9CQUxSRVNFVCwgKFBURCB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9PVVRfUFREIHwgTTMpfSwJLyogZ3Bpb184MyAqLworCXtVU0JCMV9VTFBJVExMX0NMSywgKFBURCB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE00KX0sLyogdXNiYjFfdWxwaXBoeV9jbGsgKi8KKwl7VVNCQjFfVUxQSVRMTF9TVFAsIChPRkZfRU4gfCBPRkZfT1VUX1BURCB8IE00KX0sCQkvKiB1c2JiMV91bHBpcGh5X3N0cCAqLworCXtVU0JCMV9VTFBJVExMX0RJUiwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE00KX0sCS8qIHVzYmIxX3VscGlwaHlfZGlyICovCisJe1VTQkIxX1VMUElUTExfTlhULCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9ueHQgKi8KKwl7VVNCQjFfVUxQSVRMTF9EQVQwLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9kYXQwICovCisJe1VTQkIxX1VMUElUTExfREFUMSwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE00KX0sCS8qIHVzYmIxX3VscGlwaHlfZGF0MSAqLworCXtVU0JCMV9VTFBJVExMX0RBVDIsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNNCl9LAkvKiB1c2JiMV91bHBpcGh5X2RhdDIgKi8KKwl7VVNCQjFfVUxQSVRMTF9EQVQzLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9kYXQzICovCisJe1VTQkIxX1VMUElUTExfREFUNCwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE00KX0sCS8qIHVzYmIxX3VscGlwaHlfZGF0NCAqLworCXtVU0JCMV9VTFBJVExMX0RBVDUsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNNCl9LAkvKiB1c2JiMV91bHBpcGh5X2RhdDUgKi8KKwl7VVNCQjFfVUxQSVRMTF9EQVQ2LCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9kYXQ2ICovCisJe1VTQkIxX1VMUElUTExfREFUNywgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE00KX0sCS8qIHVzYmIxX3VscGlwaHlfZGF0NyAqLworCXtVU0JCMV9IU0lDX0RBVEEsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiB1c2JiMV9oc2ljX2RhdGEgKi8KKwl7VVNCQjFfSFNJQ19TVFJPQkUsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiB1c2JiMV9oc2ljX3N0cm9iZSAqLworCXtVU0JDMV9JQ1VTQl9EUCwgKElFTiB8IE0wKX0sCQkJCQkvKiB1c2JjMV9pY3VzYl9kcCAqLworCXtVU0JDMV9JQ1VTQl9ETSwgKElFTiB8IE0wKX0sCQkJCQkvKiB1c2JjMV9pY3VzYl9kbSAqLworCXtTRE1NQzFfQ0xLLCAoUFRVIHwgT0ZGX0VOIHwgT0ZGX09VVF9QVEQgfCBNMCl9LAkJLyogc2RtbWMxX2NsayAqLworCXtTRE1NQzFfQ01ELCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWMxX2NtZCAqLworCXtTRE1NQzFfREFUMCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jMV9kYXQwICovCisJe1NETU1DMV9EQVQxLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWMxX2RhdDEgKi8KKwl7U0RNTUMxX0RBVDIsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzFfZGF0MiAqLworCXtTRE1NQzFfREFUMywgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jMV9kYXQzICovCisJe1NETU1DMV9EQVQ0LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWMxX2RhdDQgKi8KKwl7U0RNTUMxX0RBVDUsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzFfZGF0NSAqLworCXtTRE1NQzFfREFUNiwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jMV9kYXQ2ICovCisJe1NETU1DMV9EQVQ3LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWMxX2RhdDcgKi8KKwl7QUJFX01DQlNQMl9DTEtYLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogYWJlX21jYnNwMl9jbGt4ICovCisJe0FCRV9NQ0JTUDJfRFIsIChJRU4gfCBPRkZfRU4gfCBPRkZfT1VUX1BURCB8IE0wKX0sCQkvKiBhYmVfbWNic3AyX2RyICovCisJe0FCRV9NQ0JTUDJfRFgsIChPRkZfRU4gfCBPRkZfT1VUX1BURCB8IE0wKX0sCQkJLyogYWJlX21jYnNwMl9keCAqLworCXtBQkVfTUNCU1AyX0ZTWCwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIGFiZV9tY2JzcDJfZnN4ICovCisJe0FCRV9NQ0JTUDFfQ0xLWCwgKElFTiB8IE0xKX0sCQkJCQkvKiBhYmVfc2xpbWJ1czFfY2xvY2sgKi8KKwl7QUJFX01DQlNQMV9EUiwgKElFTiB8IE0xKX0sCQkJCQkvKiBhYmVfc2xpbWJ1czFfZGF0YSAqLworCXtBQkVfTUNCU1AxX0RYLCAoT0ZGX0VOIHwgT0ZGX09VVF9QVEQgfCBNMCl9LAkJCS8qIGFiZV9tY2JzcDFfZHggKi8KKwl7QUJFX01DQlNQMV9GU1gsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBhYmVfbWNic3AxX2ZzeCAqLworCXtBQkVfUERNX1VMX0RBVEEsIChQVEQgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBhYmVfcGRtX3VsX2RhdGEgKi8KKwl7QUJFX1BETV9ETF9EQVRBLCAoUFREIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogYWJlX3BkbV9kbF9kYXRhICovCisJe0FCRV9QRE1fRlJBTUUsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBhYmVfcGRtX2ZyYW1lICovCisJe0FCRV9QRE1fTEJfQ0xLLCAoUFREIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogYWJlX3BkbV9sYl9jbGsgKi8KKwl7QUJFX0NMS1MsIChQVEQgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBhYmVfY2xrcyAqLworCXtBQkVfRE1JQ19DTEsxLCAoTTApfSwJCQkJCQkvKiBhYmVfZG1pY19jbGsxICovCisJe0FCRV9ETUlDX0RJTjEsIChJRU4gfCBNMCl9LAkJCQkJLyogYWJlX2RtaWNfZGluMSAqLworCXtBQkVfRE1JQ19ESU4yLCAoSUVOIHwgTTApfSwJCQkJCS8qIGFiZV9kbWljX2RpbjIgKi8KKwl7QUJFX0RNSUNfRElOMywgKElFTiB8IE0wKX0sCQkJCQkvKiBhYmVfZG1pY19kaW4zICovCisJe1VBUlQyX0NUUywgKFBUVSB8IElFTiB8IE0wKX0sCQkJCQkvKiB1YXJ0Ml9jdHMgKi8KKwl7VUFSVDJfUlRTLCAoTTApfSwJCQkJCQkvKiB1YXJ0Ml9ydHMgKi8KKwl7VUFSVDJfUlgsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogdWFydDJfcnggKi8KKwl7VUFSVDJfVFgsIChNMCl9LAkJCQkJCS8qIHVhcnQyX3R4ICovCisJe0hEUV9TSU8sIChNMyl9LAkJCQkJCS8qIGdwaW9fMTI3ICovCisJe0kyQzFfU0NMLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzFfc2NsICovCisJe0kyQzFfU0RBLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzFfc2RhICovCisJe0kyQzJfU0NMLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzJfc2NsICovCisJe0kyQzJfU0RBLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzJfc2RhICovCisJe0kyQzNfU0NMLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzNfc2NsICovCisJe0kyQzNfU0RBLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzNfc2RhICovCisJe0kyQzRfU0NMLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzRfc2NsICovCisJe0kyQzRfU0RBLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIGkyYzRfc2RhICovCisJe01DU1BJMV9DTEssIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkJLyogbWNzcGkxX2NsayAqLworCXtNQ1NQSTFfU09NSSwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCQkvKiBtY3NwaTFfc29taSAqLworCXtNQ1NQSTFfU0lNTywgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCQkvKiBtY3NwaTFfc2ltbyAqLworCXtNQ1NQSTFfQ1MwLCAoUFREIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogbWNzcGkxX2NzMCAqLworCXtNQ1NQSTFfQ1MxLCAoUFREIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTMpfSwJLyogbWNzcGkxX2NzMSAqLworCXtNQ1NQSTFfQ1MyLCAoUFRVIHwgT0ZGX0VOIHwgT0ZGX09VVF9QVFUgfCBNMyl9LAkJLyogZ3Bpb18xMzkgKi8KKwl7TUNTUEkxX0NTMywgKFBUVSB8IElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzE0MCAqLworCXtVQVJUM19DVFNfUkNUWCwgKFBUVSB8IElFTiB8IE0wKX0sCQkJCS8qIHVhcnQzX3R4ICovCisJe1VBUlQzX1JUU19TRCwgKE0wKX0sCQkJCQkJLyogdWFydDNfcnRzX3NkICovCisJe1VBUlQzX1JYX0lSUlgsIChJRU4gfCBNMCl9LAkJCQkJLyogdWFydDNfcnggKi8KKwl7VUFSVDNfVFhfSVJUWCwgKE0wKX0sCQkJCQkJLyogdWFydDNfdHggKi8KKwl7U0RNTUM1X0NMSywgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9PVVRfUFREIHwgTTApfSwJCS8qIHNkbW1jNV9jbGsgKi8KKwl7U0RNTUM1X0NNRCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jNV9jbWQgKi8KKwl7U0RNTUM1X0RBVDAsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzVfZGF0MCAqLworCXtTRE1NQzVfREFUMSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jNV9kYXQxICovCisJe1NETU1DNV9EQVQyLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWM1X2RhdDIgKi8KKwl7U0RNTUM1X0RBVDMsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzVfZGF0MyAqLworCXtNQ1NQSTRfQ0xLLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJCS8qIG1jc3BpNF9jbGsgKi8KKwl7TUNTUEk0X1NJTU8sIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkJLyogbWNzcGk0X3NpbW8gKi8KKwl7TUNTUEk0X1NPTUksIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkJLyogbWNzcGk0X3NvbWkgKi8KKwl7TUNTUEk0X0NTMCwgKFBURCB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIG1jc3BpNF9jczAgKi8KKwl7VUFSVDRfUlgsIChJRU4gfCBNMCl9LAkJCQkJCS8qIHVhcnQ0X3J4ICovCisJe1VBUlQ0X1RYLCAoTTApfSwJCQkJCQkvKiB1YXJ0NF90eCAqLworCXtVU0JCMl9VTFBJVExMX0NMSywgKElFTiB8IE0zKX0sCQkJCS8qIGdwaW9fMTU3ICovCisJe1VTQkIyX1VMUElUTExfU1RQLCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGEyMyAqLworCXtVU0JCMl9VTFBJVExMX0RJUiwgKElFTiB8IE01KX0sCQkJCS8qIGRpc3BjMl9kYXRhMjIgKi8KKwl7VVNCQjJfVUxQSVRMTF9OWFQsIChJRU4gfCBNNSl9LAkJCQkvKiBkaXNwYzJfZGF0YTIxICovCisJe1VTQkIyX1VMUElUTExfREFUMCwgKElFTiB8IE01KX0sCQkJCS8qIGRpc3BjMl9kYXRhMjAgKi8KKwl7VVNCQjJfVUxQSVRMTF9EQVQxLCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGExOSAqLworCXtVU0JCMl9VTFBJVExMX0RBVDIsIChJRU4gfCBNNSl9LAkJCQkvKiBkaXNwYzJfZGF0YTE4ICovCisJe1VTQkIyX1VMUElUTExfREFUMywgKElFTiB8IE01KX0sCQkJCS8qIGRpc3BjMl9kYXRhMTUgKi8KKwl7VVNCQjJfVUxQSVRMTF9EQVQ0LCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGExNCAqLworCXtVU0JCMl9VTFBJVExMX0RBVDUsIChJRU4gfCBNNSl9LAkJCQkvKiBkaXNwYzJfZGF0YTEzICovCisJe1VTQkIyX1VMUElUTExfREFUNiwgKElFTiB8IE01KX0sCQkJCS8qIGRpc3BjMl9kYXRhMTIgKi8KKwl7VVNCQjJfVUxQSVRMTF9EQVQ3LCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGExMSAqLworCXtVU0JCMl9IU0lDX0RBVEEsIChQVEQgfCBPRkZfRU4gfCBPRkZfT1VUX1BUVSB8IE0zKX0sCQkvKiBncGlvXzE2OSAqLworCXtVU0JCMl9IU0lDX1NUUk9CRSwgKFBURCB8IE9GRl9FTiB8IE9GRl9PVVRfUFRVIHwgTTMpfSwJCS8qIGdwaW9fMTcwICovCisJe1VOSVBST19UWDAsIChPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkJCS8qIGtwZF9jb2wwICovCisJe1VOSVBST19UWTAsIChPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkJCS8qIGtwZF9jb2wxICovCisJe1VOSVBST19UWDEsIChPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkJCS8qIGtwZF9jb2wyICovCisJe1VOSVBST19UWTEsIChPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkJCS8qIGtwZF9jb2wzICovCisJe1VOSVBST19UWDIsIChQVEQgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMyl9LAkvKiBncGlvXzAgKi8KKwl7VU5JUFJPX1RZMiwgKFBURCB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0zKX0sCS8qIGdwaW9fMSAqLworCXtVTklQUk9fUlgwLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyoga3BkX3JvdzAgKi8KKwl7VU5JUFJPX1JZMCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIGtwZF9yb3cxICovCisJe1VOSVBST19SWDEsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBrcGRfcm93MiAqLworCXtVTklQUk9fUlkxLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyoga3BkX3JvdzMgKi8KKwl7VU5JUFJPX1JYMiwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIGtwZF9yb3c0ICovCisJe1VOSVBST19SWTIsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBrcGRfcm93NSAqLworCXtVU0JBMF9PVEdfQ0UsIChQVEQgfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfT1VUX1BURCB8IE0wKX0sCS8qIHVzYmEwX290Z19jZSAqLworCXtVU0JBMF9PVEdfRFAsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkJLyogdXNiYTBfb3RnX2RwICovCisJe1VTQkEwX09UR19ETSwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCQkvKiB1c2JhMF9vdGdfZG0gKi8KKwl7RlJFRl9DTEsxX09VVCwgKE0wKX0sCQkJCQkJLyogZnJlZl9jbGsxX291dCAqLworCXtGUkVGX0NMSzJfT1VULCAoTTApfSwJCQkJCQkvKiBmcmVmX2NsazJfb3V0ICovCisJe1NZU19OSVJRMSwgKFBUVSB8IElFTiB8IE0wKX0sCQkJCQkvKiBzeXNfbmlycTEgKi8KKwl7U1lTX05JUlEyLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIHN5c19uaXJxMiAqLworCXtTWVNfQk9PVDAsIChQVFUgfCBJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb18xODQgKi8KKwl7U1lTX0JPT1QxLCAoTTMpfSwJCQkJCQkvKiBncGlvXzE4NSAqLworCXtTWVNfQk9PVDIsIChQVEQgfCBJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb18xODYgKi8KKwl7U1lTX0JPT1QzLCAoTTMpfSwJCQkJCQkvKiBncGlvXzE4NyAqLworCXtTWVNfQk9PVDQsIChNMyl9LAkJCQkJCS8qIGdwaW9fMTg4ICovCisJe1NZU19CT09UNSwgKFBURCB8IElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzE4OSAqLworCXtEUE1fRU1VMCwgKElFTiB8IE0wKX0sCQkJCQkJLyogZHBtX2VtdTAgKi8KKwl7RFBNX0VNVTEsIChJRU4gfCBNMCl9LAkJCQkJCS8qIGRwbV9lbXUxICovCisJe0RQTV9FTVUyLCAoSUVOIHwgTTApfSwJCQkJCQkvKiBkcG1fZW11MiAqLworCXtEUE1fRU1VMywgKElFTiB8IE01KX0sCQkJCQkJLyogZGlzcGMyX2RhdGExMCAqLworCXtEUE1fRU1VNCwgKElFTiB8IE01KX0sCQkJCQkJLyogZGlzcGMyX2RhdGE5ICovCisJe0RQTV9FTVU1LCAoSUVOIHwgTTUpfSwJCQkJCQkvKiBkaXNwYzJfZGF0YTE2ICovCisJe0RQTV9FTVU2LCAoSUVOIHwgTTUpfSwJCQkJCQkvKiBkaXNwYzJfZGF0YTE3ICovCisJe0RQTV9FTVU3LCAoSUVOIHwgTTUpfSwJCQkJCQkvKiBkaXNwYzJfaHN5bmMgKi8KKwl7RFBNX0VNVTgsIChJRU4gfCBNNSl9LAkJCQkJCS8qIGRpc3BjMl9wY2xrICovCisJe0RQTV9FTVU5LCAoSUVOIHwgTTUpfSwJCQkJCQkvKiBkaXNwYzJfdnN5bmMgKi8KKwl7RFBNX0VNVTEwLCAoSUVOIHwgTTUpfSwJCQkJCS8qIGRpc3BjMl9kZSAqLworCXtEUE1fRU1VMTEsIChJRU4gfCBNNSl9LAkJCQkJLyogZGlzcGMyX2RhdGE4ICovCisJe0RQTV9FTVUxMiwgKElFTiB8IE01KX0sCQkJCQkvKiBkaXNwYzJfZGF0YTcgKi8KKwl7RFBNX0VNVTEzLCAoSUVOIHwgTTUpfSwJCQkJCS8qIGRpc3BjMl9kYXRhNiAqLworCXtEUE1fRU1VMTQsIChJRU4gfCBNNSl9LAkJCQkJLyogZGlzcGMyX2RhdGE1ICovCisJe0RQTV9FTVUxNSwgKElFTiB8IE01KX0sCQkJCQkvKiBkaXNwYzJfZGF0YTQgKi8KKwl7RFBNX0VNVTE2LCAoSUVOIHwgTTUpfSwJCQkJCS8qIGRpc3BjMl9kYXRhMyAqLworCXtEUE1fRU1VMTcsIChJRU4gfCBNNSl9LAkJCQkJLyogZGlzcGMyX2RhdGEyICovCisJe0RQTV9FTVUxOCwgKElFTiB8IE01KX0sCQkJCQkvKiBkaXNwYzJfZGF0YTEgKi8KKwl7RFBNX0VNVTE5LCAoSUVOIHwgTTUpfSwJCQkJCS8qIGRpc3BjMl9kYXRhMCAqLworfTsKKworY29uc3Qgc3RydWN0IHBhZF9jb25mX2VudHJ5IHdrdXBfcGFkY29uZl9hcnJheVtdID0geworCXtQQUQwX1NJTV9JTywgKElFTiB8IE0wKX0sCQkvKiBzaW1faW8gKi8KKwl7UEFEMV9TSU1fQ0xLLCAoTTApfSwJCQkvKiBzaW1fY2xrICovCisJe1BBRDBfU0lNX1JFU0VULCAoTTApfSwJCQkvKiBzaW1fcmVzZXQgKi8KKwl7UEFEMV9TSU1fQ0QsIChQVFUgfCBJRU4gfCBNMCl9LAkvKiBzaW1fY2QgKi8KKwl7UEFEMF9TSU1fUFdSQ1RSTCwgKE0wKX0sCQkvKiBzaW1fcHdyY3RybCAqLworCXtQQUQxX1NSX1NDTCwgKFBUVSB8IElFTiB8IE0wKX0sCS8qIHNyX3NjbCAqLworCXtQQUQwX1NSX1NEQSwgKFBUVSB8IElFTiB8IE0wKX0sCS8qIHNyX3NkYSAqLworCXtQQUQxX0ZSRUZfWFRBTF9JTiwgKE0wKX0sCQkvKiAjICovCisJe1BBRDBfRlJFRl9TTElDRVJfSU4sIChNMCl9LAkJLyogZnJlZl9zbGljZXJfaW4gKi8KKwl7UEFEMV9GUkVGX0NMS19JT1JFUSwgKE0wKX0sCQkvKiBmcmVmX2Nsa19pb3JlcSAqLworCXtQQUQwX0ZSRUZfQ0xLMF9PVVQsIChNMil9LAkJLyogc3lzX2RybV9tc2VjdXJlICovCisJe1BBRDFfRlJFRl9DTEszX1JFUSwgKFBUVSB8IElFTiB8IE0wKX0sCS8qICMgKi8KKwl7UEFEMF9GUkVGX0NMSzNfT1VULCAoTTApfSwJCS8qIGZyZWZfY2xrM19vdXQgKi8KKwl7UEFEMV9GUkVGX0NMSzRfUkVRLCAoUFRVIHwgSUVOIHwgTTApfSwJLyogIyAqLworCXtQQUQwX0ZSRUZfQ0xLNF9PVVQsIChNMCl9LAkJLyogIyAqLworCXtQQUQxX1NZU18zMkssIChJRU4gfCBNMCl9LAkJLyogc3lzXzMyayAqLworCXtQQUQwX1NZU19OUkVTUFdST04sIChNMCl9LAkJLyogc3lzX25yZXNwd3JvbiAqLworCXtQQUQxX1NZU19OUkVTV0FSTSwgKE0wKX0sCQkvKiBzeXNfbnJlc3dhcm0gKi8KKwl7UEFEMF9TWVNfUFdSX1JFUSwgKFBUVSB8IE0wKX0sCQkvKiBzeXNfcHdyX3JlcSAqLworCXtQQUQxX1NZU19QV1JPTl9SRVNFVCwgKE0zKX0sCQkvKiBncGlvX3drMjkgKi8KKwl7UEFEMF9TWVNfQk9PVDYsIChJRU4gfCBNMyl9LAkJLyogZ3Bpb193azkgKi8KKwl7UEFEMV9TWVNfQk9PVDcsIChJRU4gfCBNMyl9LAkJLyogZ3Bpb193azEwICovCit9OworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYm9hcmQvdGkvc2RwNDQzMC9zZHAuYyBiL2JvYXJkL3RpL3NkcDQ0MzAvc2RwLmMKaW5kZXggOGVkNzg3My4uNzAzOWJkNSAxMDA2NDQKLS0tIGEvYm9hcmQvdGkvc2RwNDQzMC9zZHAuYworKysgYi9ib2FyZC90aS9zZHA0NDMwL3NkcC5jCkBAIC0yNSw2ICsyNSw4IEBACiAjaW5jbHVkZSA8Y29tbW9uLmg+CiAjaW5jbHVkZSA8YXNtL2FyY2gvc3lzX3Byb3RvLmg+CiAKKyNpbmNsdWRlICJzZHAuaCIKKwogREVDTEFSRV9HTE9CQUxfREFUQV9QVFI7CiAKIGNvbnN0IHN0cnVjdCBvbWFwX3N5c2luZm8gc3lzaW5mbyA9IHsKQEAgLTYyLDMgKzY0LDI3IEBACiB7CiAJcmV0dXJuIDA7CiB9CisKK3ZvaWQgZG9fc2V0X211eCh1MzIgYmFzZSwgc3RydWN0IHBhZF9jb25mX2VudHJ5IGNvbnN0ICphcnJheSwgaW50IHNpemUpCit7CisJaW50IGk7CisJc3RydWN0IHBhZF9jb25mX2VudHJ5ICpwYWQgPSAoc3RydWN0IHBhZF9jb25mX2VudHJ5ICopIGFycmF5OworCisJZm9yIChpID0gMDsgaSA8IHNpemU7IGkrKywgcGFkKyspCisJCXdyaXRldyhwYWQtPnZhbCwgYmFzZSArIHBhZC0+b2Zmc2V0KTsKK30KKworLyoqCisgKiBAYnJpZWYgc2V0X211eGNvbmZfcmVncyBTZXR0aW5nIHVwIHRoZSBjb25maWd1cmF0aW9uIE11eCByZWdpc3RlcnMKKyAqIHNwZWNpZmljIHRvIHRoZSBib2FyZC4KKyAqLwordm9pZCBzZXRfbXV4Y29uZl9yZWdzKHZvaWQpCit7CisJZG9fc2V0X211eChDT05UUk9MX1BBRENPTkZfQ09SRSwgY29yZV9wYWRjb25mX2FycmF5LAorCQkgICBzaXplb2YoY29yZV9wYWRjb25mX2FycmF5KSAvCisJCSAgIHNpemVvZihzdHJ1Y3QgcGFkX2NvbmZfZW50cnkpKTsKKworCWRvX3NldF9tdXgoQ09OVFJPTF9QQURDT05GX1dLVVAsIHdrdXBfcGFkY29uZl9hcnJheSwKKwkJICAgc2l6ZW9mKHdrdXBfcGFkY29uZl9hcnJheSkgLworCQkgICBzaXplb2Yoc3RydWN0IHBhZF9jb25mX2VudHJ5KSk7Cit9CmRpZmYgLS1naXQgYS9ib2FyZC90aS9zZHA0NDMwL3NkcC5oIGIvYm9hcmQvdGkvc2RwNDQzMC9zZHAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDNlM2QzCi0tLSAvZGV2L251bGwKKysrIGIvYm9hcmQvdGkvc2RwNDQzMC9zZHAuaApAQCAtMCwwICsxLDI2NSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogVGV4YXMgSW5zdHJ1bWVudHMgSW5jb3Jwb3JhdGVkLCA8d3d3LnRpLmNvbT4KKyAqCisgKglCYWxhamkgS3Jpc2huYW1vb3J0aHkJPGJhbGFqaXRrQHRpLmNvbT4KKyAqCUFuZWVzaCBWCQk8YW5lZXNoQHRpLmNvbT4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpZm5kZWYgX1NEUF9IXworI2RlZmluZSBfU0RQX0hfCisKKyNpbmNsdWRlIDxhc20vaW8uaD4KKyNpbmNsdWRlIDxhc20vYXJjaC9tdXhfb21hcDQuaD4KKworY29uc3Qgc3RydWN0IHBhZF9jb25mX2VudHJ5IGNvcmVfcGFkY29uZl9hcnJheVtdID0geworCXtHUE1DX0FEMCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIHNkbW1jMl9kYXQwICovCisJe0dQTUNfQUQxLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwgCS8qIHNkbW1jMl9kYXQxICovCisJe0dQTUNfQUQyLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyogc2RtbWMyX2RhdDIgKi8KKwl7R1BNQ19BRDMsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBzZG1tYzJfZGF0MyAqLworCXtHUE1DX0FENCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIHNkbW1jMl9kYXQ0ICovCisJe0dQTUNfQUQ1LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyogc2RtbWMyX2RhdDUgKi8KKwl7R1BNQ19BRDYsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBzZG1tYzJfZGF0NiAqLworCXtHUE1DX0FENywgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIHNkbW1jMl9kYXQ3ICovCisJe0dQTUNfQUQ4LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTMpfSwJLyogZ3Bpb18zMiAqLworCXtHUE1DX0FEOSwgKFBUVSB8IElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzMzICovCisJe0dQTUNfQUQxMCwgKFBUVSB8IElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzM0ICovCisJe0dQTUNfQUQxMSwgKFBUVSB8IElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzM1ICovCisJe0dQTUNfQUQxMiwgKFBUVSB8IElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzM2ICovCisJe0dQTUNfQUQxMywgKFBURCB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9PVVRfUFREIHwgTTMpfSwJLyogZ3Bpb18zNyAqLworCXtHUE1DX0FEMTQsIChQVEQgfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfT1VUX1BURCB8IE0zKX0sCS8qIGdwaW9fMzggKi8KKwl7R1BNQ19BRDE1LCAoUFREIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX09VVF9QVEQgfCBNMyl9LAkvKiBncGlvXzM5ICovCisJe0dQTUNfQTE2LCAoTTMpfSwJCQkJCQkvKiBncGlvXzQwICovCisJe0dQTUNfQTE3LCAoUFREIHwgTTMpfSwJCQkJCQkvKiBncGlvXzQxICovCisJe0dQTUNfQTE4LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyoga3BkX3JvdzYgKi8KKwl7R1BNQ19BMTksIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBrcGRfcm93NyAqLworCXtHUE1DX0EyMCwgKElFTiB8IE0zKX0sCQkJCQkJLyogZ3Bpb180NCAqLworCXtHUE1DX0EyMSwgKE0zKX0sCQkJCQkJLyogZ3Bpb180NSAqLworCXtHUE1DX0EyMiwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCQkJLyoga3BkX2NvbDYgKi8KKwl7R1BNQ19BMjMsIChPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkJCS8qIGtwZF9jb2w3ICovCisJe0dQTUNfQTI0LCAoUFREIHwgTTMpfSwJCQkJCQkvKiBncGlvXzQ4ICovCisJe0dQTUNfQTI1LCAoUFREIHwgTTMpfSwJCQkJCQkvKiBncGlvXzQ5ICovCisJe0dQTUNfTkNTMCwgKE0zKX0sCQkJCQkJLyogZ3Bpb181MCAqLworCXtHUE1DX05DUzEsIChJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb181MSAqLworCXtHUE1DX05DUzIsIChJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb181MiAqLworCXtHUE1DX05DUzMsIChJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb181MyAqLworCXtHUE1DX05XUCwgKE0zKX0sCQkJCQkJLyogZ3Bpb181NCAqLworCXtHUE1DX0NMSywgKFBURCB8IE0zKX0sCQkJCQkJLyogZ3Bpb181NSAqLworCXtHUE1DX05BRFZfQUxFLCAoTTMpfSwJCQkJCQkvKiBncGlvXzU2ICovCisJe0dQTUNfTk9FLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX09VVF9QVEQgfCBNMSl9LAkJLyogc2RtbWMyX2NsayAqLworCXtHUE1DX05XRSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIHNkbW1jMl9jbWQgKi8KKwl7R1BNQ19OQkUwX0NMRSwgKE0zKX0sCQkJCQkJLyogZ3Bpb181OSAqLworCXtHUE1DX05CRTEsIChQVEQgfCBNMyl9LAkJCQkJLyogZ3Bpb182MCAqLworCXtHUE1DX1dBSVQwLCAoUFRVIHwgSUVOIHwgTTMpfSwJCQkJCS8qIGdwaW9fNjEgKi8KKwl7R1BNQ19XQUlUMSwgKElFTiB8IE0zKX0sCQkJCQkvKiBncGlvXzYyICovCisJe0MyQ19EQVRBMTEsIChQVEQgfCBNMyl9LAkJCQkJLyogZ3Bpb18xMDAgKi8KKwl7QzJDX0RBVEExMiwgKE0xKX0sCQkJCQkJLyogZHNpMV90ZTAgKi8KKwl7QzJDX0RBVEExMywgKFBURCB8IE0zKX0sCQkJCQkvKiBncGlvXzEwMiAqLworCXtDMkNfREFUQTE0LCAoTTEpfSwJCQkJCQkvKiBkc2kyX3RlMCAqLworCXtDMkNfREFUQTE1LCAoUFREIHwgTTMpfSwJCQkJCS8qIGdwaW9fMTA0ICovCisJe0hETUlfSFBELCAoTTApfSwJCQkJCQkvKiBoZG1pX2hwZCAqLworCXtIRE1JX0NFQywgKE0wKX0sCQkJCQkJLyogaGRtaV9jZWMgKi8KKwl7SERNSV9ERENfU0NMLCAoUFRVIHwgTTApfSwJCQkJCS8qIGhkbWlfZGRjX3NjbCAqLworCXtIRE1JX0REQ19TREEsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkvKiBoZG1pX2RkY19zZGEgKi8KKwl7Q1NJMjFfRFgwLCAoSUVOIHwgTTApfSwJCQkJCS8qIGNzaTIxX2R4MCAqLworCXtDU0kyMV9EWTAsIChJRU4gfCBNMCl9LAkJCQkJLyogY3NpMjFfZHkwICovCisJe0NTSTIxX0RYMSwgKElFTiB8IE0wKX0sCQkJCQkvKiBjc2kyMV9keDEgKi8KKwl7Q1NJMjFfRFkxLCAoSUVOIHwgTTApfSwJCQkJCS8qIGNzaTIxX2R5MSAqLworCXtDU0kyMV9EWDIsIChJRU4gfCBNMCl9LAkJCQkJLyogY3NpMjFfZHgyICovCisJe0NTSTIxX0RZMiwgKElFTiB8IE0wKX0sCQkJCQkvKiBjc2kyMV9keTIgKi8KKwl7Q1NJMjFfRFgzLCAoUFREIHwgTTcpfSwJCQkJCS8qIGNzaTIxX2R4MyAqLworCXtDU0kyMV9EWTMsIChQVEQgfCBNNyl9LAkJCQkJLyogY3NpMjFfZHkzICovCisJe0NTSTIxX0RYNCwgKFBURCB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE03KX0sCQkvKiBjc2kyMV9keDQgKi8KKwl7Q1NJMjFfRFk0LCAoUFREIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTcpfSwJCS8qIGNzaTIxX2R5NCAqLworCXtDU0kyMl9EWDAsIChJRU4gfCBNMCl9LAkJCQkJLyogY3NpMjJfZHgwICovCisJe0NTSTIyX0RZMCwgKElFTiB8IE0wKX0sCQkJCQkvKiBjc2kyMl9keTAgKi8KKwl7Q1NJMjJfRFgxLCAoSUVOIHwgTTApfSwJCQkJCS8qIGNzaTIyX2R4MSAqLworCXtDU0kyMl9EWTEsIChJRU4gfCBNMCl9LAkJCQkJLyogY3NpMjJfZHkxICovCisJe0NBTV9TSFVUVEVSLCAoT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX09VVF9QVEQgfCBNMCl9LAkJLyogY2FtX3NodXR0ZXIgKi8KKwl7Q0FNX1NUUk9CRSwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9PVVRfUFREIHwgTTApfSwJCS8qIGNhbV9zdHJvYmUgKi8KKwl7Q0FNX0dMT0JBTFJFU0VULCAoUFREIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX09VVF9QVEQgfCBNMyl9LAkvKiBncGlvXzgzICovCisJe1VTQkIxX1VMUElUTExfQ0xLLCAoUFREIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwvKiB1c2JiMV91bHBpcGh5X2NsayAqLworCXtVU0JCMV9VTFBJVExMX1NUUCwgKE9GRl9FTiB8IE9GRl9PVVRfUFREIHwgTTQpfSwJCS8qIHVzYmIxX3VscGlwaHlfc3RwICovCisJe1VTQkIxX1VMUElUTExfRElSLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9kaXIgKi8KKwl7VVNCQjFfVUxQSVRMTF9OWFQsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNNCl9LAkvKiB1c2JiMV91bHBpcGh5X254dCAqLworCXtVU0JCMV9VTFBJVExMX0RBVDAsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNNCl9LAkvKiB1c2JiMV91bHBpcGh5X2RhdDAgKi8KKwl7VVNCQjFfVUxQSVRMTF9EQVQxLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9kYXQxICovCisJe1VTQkIxX1VMUElUTExfREFUMiwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE00KX0sCS8qIHVzYmIxX3VscGlwaHlfZGF0MiAqLworCXtVU0JCMV9VTFBJVExMX0RBVDMsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNNCl9LAkvKiB1c2JiMV91bHBpcGh5X2RhdDMgKi8KKwl7VVNCQjFfVUxQSVRMTF9EQVQ0LCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9kYXQ0ICovCisJe1VTQkIxX1VMUElUTExfREFUNSwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE00KX0sCS8qIHVzYmIxX3VscGlwaHlfZGF0NSAqLworCXtVU0JCMV9VTFBJVExMX0RBVDYsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNNCl9LAkvKiB1c2JiMV91bHBpcGh5X2RhdDYgKi8KKwl7VVNCQjFfVUxQSVRMTF9EQVQ3LCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTQpfSwJLyogdXNiYjFfdWxwaXBoeV9kYXQ3ICovCisJe1VTQkIxX0hTSUNfREFUQSwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHVzYmIxX2hzaWNfZGF0YSAqLworCXtVU0JCMV9IU0lDX1NUUk9CRSwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHVzYmIxX2hzaWNfc3Ryb2JlICovCisJe1VTQkMxX0lDVVNCX0RQLCAoSUVOIHwgTTApfSwJCQkJCS8qIHVzYmMxX2ljdXNiX2RwICovCisJe1VTQkMxX0lDVVNCX0RNLCAoSUVOIHwgTTApfSwJCQkJCS8qIHVzYmMxX2ljdXNiX2RtICovCisJe1NETU1DMV9DTEssIChQVFUgfCBPRkZfRU4gfCBPRkZfT1VUX1BURCB8IE0wKX0sCQkvKiBzZG1tYzFfY2xrICovCisJe1NETU1DMV9DTUQsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzFfY21kICovCisJe1NETU1DMV9EQVQwLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWMxX2RhdDAgKi8KKwl7U0RNTUMxX0RBVDEsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzFfZGF0MSAqLworCXtTRE1NQzFfREFUMiwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jMV9kYXQyICovCisJe1NETU1DMV9EQVQzLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWMxX2RhdDMgKi8KKwl7U0RNTUMxX0RBVDQsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzFfZGF0NCAqLworCXtTRE1NQzFfREFUNSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jMV9kYXQ1ICovCisJe1NETU1DMV9EQVQ2LCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWMxX2RhdDYgKi8KKwl7U0RNTUMxX0RBVDcsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzFfZGF0NyAqLworCXtBQkVfTUNCU1AyX0NMS1gsIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBhYmVfbWNic3AyX2Nsa3ggKi8KKwl7QUJFX01DQlNQMl9EUiwgKElFTiB8IE9GRl9FTiB8IE9GRl9PVVRfUFREIHwgTTApfSwJCS8qIGFiZV9tY2JzcDJfZHIgKi8KKwl7QUJFX01DQlNQMl9EWCwgKE9GRl9FTiB8IE9GRl9PVVRfUFREIHwgTTApfSwJCQkvKiBhYmVfbWNic3AyX2R4ICovCisJe0FCRV9NQ0JTUDJfRlNYLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogYWJlX21jYnNwMl9mc3ggKi8KKwl7QUJFX01DQlNQMV9DTEtYLCAoSUVOIHwgTTEpfSwJCQkJCS8qIGFiZV9zbGltYnVzMV9jbG9jayAqLworCXtBQkVfTUNCU1AxX0RSLCAoSUVOIHwgTTEpfSwJCQkJCS8qIGFiZV9zbGltYnVzMV9kYXRhICovCisJe0FCRV9NQ0JTUDFfRFgsIChPRkZfRU4gfCBPRkZfT1VUX1BURCB8IE0wKX0sCQkJLyogYWJlX21jYnNwMV9keCAqLworCXtBQkVfTUNCU1AxX0ZTWCwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIGFiZV9tY2JzcDFfZnN4ICovCisJe0FCRV9QRE1fVUxfREFUQSwgKFBURCB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIGFiZV9wZG1fdWxfZGF0YSAqLworCXtBQkVfUERNX0RMX0RBVEEsIChQVEQgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBhYmVfcGRtX2RsX2RhdGEgKi8KKwl7QUJFX1BETV9GUkFNRSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIGFiZV9wZG1fZnJhbWUgKi8KKwl7QUJFX1BETV9MQl9DTEssIChQVEQgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBhYmVfcGRtX2xiX2NsayAqLworCXtBQkVfQ0xLUywgKFBURCB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIGFiZV9jbGtzICovCisJe0FCRV9ETUlDX0NMSzEsIChNMCl9LAkJCQkJCS8qIGFiZV9kbWljX2NsazEgKi8KKwl7QUJFX0RNSUNfRElOMSwgKElFTiB8IE0wKX0sCQkJCQkvKiBhYmVfZG1pY19kaW4xICovCisJe0FCRV9ETUlDX0RJTjIsIChJRU4gfCBNMCl9LAkJCQkJLyogYWJlX2RtaWNfZGluMiAqLworCXtBQkVfRE1JQ19ESU4zLCAoSUVOIHwgTTApfSwJCQkJCS8qIGFiZV9kbWljX2RpbjMgKi8KKwl7VUFSVDJfQ1RTLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJCS8qIHVhcnQyX2N0cyAqLworCXtVQVJUMl9SVFMsIChNMCl9LAkJCQkJCS8qIHVhcnQyX3J0cyAqLworCXtVQVJUMl9SWCwgKFBUVSB8IElFTiB8IE0wKX0sCQkJCQkvKiB1YXJ0Ml9yeCAqLworCXtVQVJUMl9UWCwgKE0wKX0sCQkJCQkJLyogdWFydDJfdHggKi8KKwl7SERRX1NJTywgKE0zKX0sCQkJCQkJLyogZ3Bpb18xMjcgKi8KKwl7STJDMV9TQ0wsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjMV9zY2wgKi8KKwl7STJDMV9TREEsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjMV9zZGEgKi8KKwl7STJDMl9TQ0wsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjMl9zY2wgKi8KKwl7STJDMl9TREEsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjMl9zZGEgKi8KKwl7STJDM19TQ0wsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjM19zY2wgKi8KKwl7STJDM19TREEsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjM19zZGEgKi8KKwl7STJDNF9TQ0wsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjNF9zY2wgKi8KKwl7STJDNF9TREEsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogaTJjNF9zZGEgKi8KKwl7TUNTUEkxX0NMSywgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCQkvKiBtY3NwaTFfY2xrICovCisJe01DU1BJMV9TT01JLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJCS8qIG1jc3BpMV9zb21pICovCisJe01DU1BJMV9TSU1PLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJCS8qIG1jc3BpMV9zaW1vICovCisJe01DU1BJMV9DUzAsIChQVEQgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBtY3NwaTFfY3MwICovCisJe01DU1BJMV9DUzEsIChQVEQgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMyl9LAkvKiBtY3NwaTFfY3MxICovCisJe01DU1BJMV9DUzIsIChQVFUgfCBPRkZfRU4gfCBPRkZfT1VUX1BUVSB8IE0zKX0sCQkvKiBncGlvXzEzOSAqLworCXtNQ1NQSTFfQ1MzLCAoUFRVIHwgSUVOIHwgTTMpfSwJCQkJCS8qIGdwaW9fMTQwICovCisJe1VBUlQzX0NUU19SQ1RYLCAoUFRVIHwgSUVOIHwgTTApfSwJCQkJLyogdWFydDNfdHggKi8KKwl7VUFSVDNfUlRTX1NELCAoTTApfSwJCQkJCQkvKiB1YXJ0M19ydHNfc2QgKi8KKwl7VUFSVDNfUlhfSVJSWCwgKElFTiB8IE0wKX0sCQkJCQkvKiB1YXJ0M19yeCAqLworCXtVQVJUM19UWF9JUlRYLCAoTTApfSwJCQkJCQkvKiB1YXJ0M190eCAqLworCXtTRE1NQzVfQ0xLLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX09VVF9QVEQgfCBNMCl9LAkJLyogc2RtbWM1X2NsayAqLworCXtTRE1NQzVfQ01ELCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWM1X2NtZCAqLworCXtTRE1NQzVfREFUMCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jNV9kYXQwICovCisJe1NETU1DNV9EQVQxLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogc2RtbWM1X2RhdDEgKi8KKwl7U0RNTUM1X0RBVDIsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkvKiBzZG1tYzVfZGF0MiAqLworCXtTRE1NQzVfREFUMywgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCS8qIHNkbW1jNV9kYXQzICovCisJe01DU1BJNF9DTEssIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkJLyogbWNzcGk0X2NsayAqLworCXtNQ1NQSTRfU0lNTywgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCQkvKiBtY3NwaTRfc2ltbyAqLworCXtNQ1NQSTRfU09NSSwgKElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0wKX0sCQkvKiBtY3NwaTRfc29taSAqLworCXtNQ1NQSTRfQ1MwLCAoUFREIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJLyogbWNzcGk0X2NzMCAqLworCXtVQVJUNF9SWCwgKElFTiB8IE0wKX0sCQkJCQkJLyogdWFydDRfcnggKi8KKwl7VUFSVDRfVFgsIChNMCl9LAkJCQkJCS8qIHVhcnQ0X3R4ICovCisJe1VTQkIyX1VMUElUTExfQ0xLLCAoSUVOIHwgTTMpfSwJCQkJLyogZ3Bpb18xNTcgKi8KKwl7VVNCQjJfVUxQSVRMTF9TVFAsIChJRU4gfCBNNSl9LAkJCQkvKiBkaXNwYzJfZGF0YTIzICovCisJe1VTQkIyX1VMUElUTExfRElSLCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGEyMiAqLworCXtVU0JCMl9VTFBJVExMX05YVCwgKElFTiB8IE01KX0sCQkJCS8qIGRpc3BjMl9kYXRhMjEgKi8KKwl7VVNCQjJfVUxQSVRMTF9EQVQwLCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGEyMCAqLworCXtVU0JCMl9VTFBJVExMX0RBVDEsIChJRU4gfCBNNSl9LAkJCQkvKiBkaXNwYzJfZGF0YTE5ICovCisJe1VTQkIyX1VMUElUTExfREFUMiwgKElFTiB8IE01KX0sCQkJCS8qIGRpc3BjMl9kYXRhMTggKi8KKwl7VVNCQjJfVUxQSVRMTF9EQVQzLCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGExNSAqLworCXtVU0JCMl9VTFBJVExMX0RBVDQsIChJRU4gfCBNNSl9LAkJCQkvKiBkaXNwYzJfZGF0YTE0ICovCisJe1VTQkIyX1VMUElUTExfREFUNSwgKElFTiB8IE01KX0sCQkJCS8qIGRpc3BjMl9kYXRhMTMgKi8KKwl7VVNCQjJfVUxQSVRMTF9EQVQ2LCAoSUVOIHwgTTUpfSwJCQkJLyogZGlzcGMyX2RhdGExMiAqLworCXtVU0JCMl9VTFBJVExMX0RBVDcsIChJRU4gfCBNNSl9LAkJCQkvKiBkaXNwYzJfZGF0YTExICovCisJe1VTQkIyX0hTSUNfREFUQSwgKFBURCB8IE9GRl9FTiB8IE9GRl9PVVRfUFRVIHwgTTMpfSwJCS8qIGdwaW9fMTY5ICovCisJe1VTQkIyX0hTSUNfU1RST0JFLCAoUFREIHwgT0ZGX0VOIHwgT0ZGX09VVF9QVFUgfCBNMyl9LAkJLyogZ3Bpb18xNzAgKi8KKwl7VU5JUFJPX1RYMCwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCQkJLyoga3BkX2NvbDAgKi8KKwl7VU5JUFJPX1RZMCwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCQkJLyoga3BkX2NvbDEgKi8KKwl7VU5JUFJPX1RYMSwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCQkJLyoga3BkX2NvbDIgKi8KKwl7VU5JUFJPX1RZMSwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCQkJLyoga3BkX2NvbDMgKi8KKwl7VU5JUFJPX1RYMiwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCQkJLyoga3BkX2NvbDQgKi8KKwl7VU5JUFJPX1RZMiwgKE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCQkJLyoga3BkX2NvbDUgKi8KKwl7VU5JUFJPX1JYMCwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIGtwZF9yb3cwICovCisJe1VOSVBST19SWTAsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBrcGRfcm93MSAqLworCXtVTklQUk9fUlgxLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyoga3BkX3JvdzIgKi8KKwl7VU5JUFJPX1JZMSwgKFBUVSB8IElFTiB8IE9GRl9FTiB8IE9GRl9QRCB8IE9GRl9JTiB8IE0xKX0sCS8qIGtwZF9yb3czICovCisJe1VOSVBST19SWDIsIChQVFUgfCBJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMSl9LAkvKiBrcGRfcm93NCAqLworCXtVTklQUk9fUlkyLCAoUFRVIHwgSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTEpfSwJLyoga3BkX3JvdzUgKi8KKwl7VVNCQTBfT1RHX0NFLCAoUFREIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX09VVF9QVEQgfCBNMCl9LAkvKiB1c2JhMF9vdGdfY2UgKi8KKwl7VVNCQTBfT1RHX0RQLCAoSUVOIHwgT0ZGX0VOIHwgT0ZGX1BEIHwgT0ZGX0lOIHwgTTApfSwJCS8qIHVzYmEwX290Z19kcCAqLworCXtVU0JBMF9PVEdfRE0sIChJRU4gfCBPRkZfRU4gfCBPRkZfUEQgfCBPRkZfSU4gfCBNMCl9LAkJLyogdXNiYTBfb3RnX2RtICovCisJe0ZSRUZfQ0xLMV9PVVQsIChNMCl9LAkJCQkJCS8qIGZyZWZfY2xrMV9vdXQgKi8KKwl7RlJFRl9DTEsyX09VVCwgKE0wKX0sCQkJCQkJLyogZnJlZl9jbGsyX291dCAqLworCXtTWVNfTklSUTEsIChQVFUgfCBJRU4gfCBNMCl9LAkJCQkJLyogc3lzX25pcnExICovCisJe1NZU19OSVJRMiwgKFBUVSB8IElFTiB8IE0wKX0sCQkJCQkvKiBzeXNfbmlycTIgKi8KKwl7U1lTX0JPT1QwLCAoUFRVIHwgSUVOIHwgTTMpfSwJCQkJCS8qIGdwaW9fMTg0ICovCisJe1NZU19CT09UMSwgKE0zKX0sCQkJCQkJLyogZ3Bpb18xODUgKi8KKwl7U1lTX0JPT1QyLCAoUFREIHwgSUVOIHwgTTMpfSwJCQkJCS8qIGdwaW9fMTg2ICovCisJe1NZU19CT09UMywgKE0zKX0sCQkJCQkJLyogZ3Bpb18xODcgKi8KKwl7U1lTX0JPT1Q0LCAoTTMpfSwJCQkJCQkvKiBncGlvXzE4OCAqLworCXtTWVNfQk9PVDUsIChQVEQgfCBJRU4gfCBNMyl9LAkJCQkJLyogZ3Bpb18xODkgKi8KKwl7RFBNX0VNVTAsIChJRU4gfCBNMCl9LAkJCQkJCS8qIGRwbV9lbXUwICovCisJe0RQTV9FTVUxLCAoSUVOIHwgTTApfSwJCQkJCQkvKiBkcG1fZW11MSAqLworCXtEUE1fRU1VMiwgKElFTiB8IE0wKX0sCQkJCQkJLyogZHBtX2VtdTIgKi8KKwl7RFBNX0VNVTMsIChJRU4gfCBNNSl9LAkJCQkJCS8qIGRpc3BjMl9kYXRhMTAgKi8KKwl7RFBNX0VNVTQsIChJRU4gfCBNNSl9LAkJCQkJCS8qIGRpc3BjMl9kYXRhOSAqLworCXtEUE1fRU1VNSwgKElFTiB8IE01KX0sCQkJCQkJLyogZGlzcGMyX2RhdGExNiAqLworCXtEUE1fRU1VNiwgKElFTiB8IE01KX0sCQkJCQkJLyogZGlzcGMyX2RhdGExNyAqLworCXtEUE1fRU1VNywgKElFTiB8IE01KX0sCQkJCQkJLyogZGlzcGMyX2hzeW5jICovCisJe0RQTV9FTVU4LCAoSUVOIHwgTTUpfSwJCQkJCQkvKiBkaXNwYzJfcGNsayAqLworCXtEUE1fRU1VOSwgKElFTiB8IE01KX0sCQkJCQkJLyogZGlzcGMyX3ZzeW5jICovCisJe0RQTV9FTVUxMCwgKElFTiB8IE01KX0sCQkJCQkvKiBkaXNwYzJfZGUgKi8KKwl7RFBNX0VNVTExLCAoSUVOIHwgTTUpfSwJCQkJCS8qIGRpc3BjMl9kYXRhOCAqLworCXtEUE1fRU1VMTIsIChJRU4gfCBNNSl9LAkJCQkJLyogZGlzcGMyX2RhdGE3ICovCisJe0RQTV9FTVUxMywgKElFTiB8IE01KX0sCQkJCQkvKiBkaXNwYzJfZGF0YTYgKi8KKwl7RFBNX0VNVTE0LCAoSUVOIHwgTTUpfSwJCQkJCS8qIGRpc3BjMl9kYXRhNSAqLworCXtEUE1fRU1VMTUsIChJRU4gfCBNNSl9LAkJCQkJLyogZGlzcGMyX2RhdGE0ICovCisJe0RQTV9FTVUxNiwgKE0zKX0sCQkJCQkJLyogZ3Bpb18yNyAqLworCXtEUE1fRU1VMTcsIChJRU4gfCBNNSl9LAkJCQkJLyogZGlzcGMyX2RhdGEyICovCisJe0RQTV9FTVUxOCwgKElFTiB8IE01KX0sCQkJCQkvKiBkaXNwYzJfZGF0YTEgKi8KKwl7RFBNX0VNVTE5LCAoSUVOIHwgTTUpfSwJCQkJCS8qIGRpc3BjMl9kYXRhMCAqLworfTsKKworY29uc3Qgc3RydWN0IHBhZF9jb25mX2VudHJ5IHdrdXBfcGFkY29uZl9hcnJheVtdID0geworCXtQQUQwX1NJTV9JTywgKElFTiB8IE0wKX0sCQkvKiBzaW1faW8gKi8KKwl7UEFEMV9TSU1fQ0xLLCAoTTApfSwJCQkvKiBzaW1fY2xrICovCisJe1BBRDBfU0lNX1JFU0VULCAoTTApfSwJCQkvKiBzaW1fcmVzZXQgKi8KKwl7UEFEMV9TSU1fQ0QsIChQVFUgfCBJRU4gfCBNMCl9LAkvKiBzaW1fY2QgKi8KKwl7UEFEMF9TSU1fUFdSQ1RSTCwgKE0wKX0sCQkvKiBzaW1fcHdyY3RybCAqLworCXtQQUQxX1NSX1NDTCwgKFBUVSB8IElFTiB8IE0wKX0sCS8qIHNyX3NjbCAqLworCXtQQUQwX1NSX1NEQSwgKFBUVSB8IElFTiB8IE0wKX0sCS8qIHNyX3NkYSAqLworCXtQQUQxX0ZSRUZfWFRBTF9JTiwgKE0wKX0sCQkvKiAjICovCisJe1BBRDBfRlJFRl9TTElDRVJfSU4sIChNMCl9LAkJLyogZnJlZl9zbGljZXJfaW4gKi8KKwl7UEFEMV9GUkVGX0NMS19JT1JFUSwgKE0wKX0sCQkvKiBmcmVmX2Nsa19pb3JlcSAqLworCXtQQUQwX0ZSRUZfQ0xLMF9PVVQsIChNMil9LAkJLyogc3lzX2RybV9tc2VjdXJlICovCisJe1BBRDFfRlJFRl9DTEszX1JFUSwgKFBUVSB8IElFTiB8IE0wKX0sCS8qICMgKi8KKwl7UEFEMF9GUkVGX0NMSzNfT1VULCAoTTApfSwJCS8qIGZyZWZfY2xrM19vdXQgKi8KKwl7UEFEMV9GUkVGX0NMSzRfUkVRLCAoUFRVIHwgSUVOIHwgTTApfSwJLyogIyAqLworCXtQQUQwX0ZSRUZfQ0xLNF9PVVQsIChNMCl9LAkJLyogIyAqLworCXtQQUQxX1NZU18zMkssIChJRU4gfCBNMCl9LAkJLyogc3lzXzMyayAqLworCXtQQUQwX1NZU19OUkVTUFdST04sIChNMCl9LAkJLyogc3lzX25yZXNwd3JvbiAqLworCXtQQUQxX1NZU19OUkVTV0FSTSwgKE0wKX0sCQkvKiBzeXNfbnJlc3dhcm0gKi8KKwl7UEFEMF9TWVNfUFdSX1JFUSwgKFBUVSB8IE0wKX0sCQkvKiBzeXNfcHdyX3JlcSAqLworCXtQQUQxX1NZU19QV1JPTl9SRVNFVCwgKE0zKX0sCQkvKiBncGlvX3drMjkgKi8KKwl7UEFEMF9TWVNfQk9PVDYsIChJRU4gfCBNMyl9LAkJLyogZ3Bpb193azkgKi8KKwl7UEFEMV9TWVNfQk9PVDcsIChJRU4gfCBNMyl9LAkJLyogZ3Bpb193azEwICovCit9OworCisjZW5kaWYKKwpkaWZmIC0tZ2l0IGEvYm9hcmQvdHFjL3RxbTgyNjAvdHFtODI2MC5jIGIvYm9hcmQvdHFjL3RxbTgyNjAvdHFtODI2MC5jCmluZGV4IDMwMzk5OTkuLjk1MDczYjggMTAwNjQ0Ci0tLSBhL2JvYXJkL3RxYy90cW04MjYwL3RxbTgyNjAuYworKysgYi9ib2FyZC90cWMvdHFtODI2MC90cW04MjYwLmMKQEAgLTE5Niw3ICsxOTYsNyBAQAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2YgKHN0cikpOworCWludCBpID0gZ2V0ZW52X2YoInNlcmlhbCMiLCBzdHIsIHNpemVvZiAoc3RyKSk7CiAKIAlwdXRzICgiQm9hcmQ6ICIpOwogCmRpZmYgLS1naXQgYS9ib2FyZC90cmFiL3RyYWIuYyBiL2JvYXJkL3RyYWIvdHJhYi5jCmluZGV4IDEyZmUxMjAuLjgyOGZhY2QgMTAwNjQ0Ci0tLSBhL2JvYXJkL3RyYWIvdHJhYi5jCisrKyBiL2JvYXJkL3RyYWIvdHJhYi5jCkBAIC00MTQsNyArNDE0LDcgQEAKIAlzcGlfaW5pdCgpOwogCXRzYzIwMDBfd3JpdGUoMSwgMiwgMHgwKTsgLyogUG93ZXIgdXAgREFDICovCiAKLQlpID0gZ2V0ZW52X3IoImJyaWdodG5lc3MiLCB0bXAsIHNpemVvZih0bXApKTsKKwlpID0gZ2V0ZW52X2YoImJyaWdodG5lc3MiLCB0bXAsIHNpemVvZih0bXApKTsKIAliciA9IChpID4gMCkKIAkJPyAoaW50KSBzaW1wbGVfc3RydG91bCAodG1wLCBOVUxMLCAxMCkKIAkJOiBDT05GSUdfU1lTX0JSSUdIVE5FU1M7CmRpZmYgLS1naXQgYS9ib2FyZC91YzEwMC91YzEwMC5jIGIvYm9hcmQvdWMxMDAvdWMxMDAuYwppbmRleCA0ZGJhMjkwLi5iZGVlNGRlIDEwMDY0NAotLS0gYS9ib2FyZC91YzEwMC91YzEwMC5jCisrKyBiL2JvYXJkL3VjMTAwL3VjMTAwLmMKQEAgLTE1MCw3ICsxNTAsNyBAQAogaW50IGNoZWNrYm9hcmQgKHZvaWQpCiB7CiAJY2hhciBzdHJbNjRdOwotCWludCBpID0gZ2V0ZW52X3IgKCJzZXJpYWwjIiwgc3RyLCBzaXplb2Yoc3RyKSk7CisJaW50IGkgPSBnZXRlbnZfZigic2VyaWFsIyIsIHN0ciwgc2l6ZW9mKHN0cikpOwogCiAJcHV0cyAoIkJvYXJkOiAiKTsKIApkaWZmIC0tZ2l0IGEvYm9hcmQvdnBhYzI3MC9NYWtlZmlsZSBiL2JvYXJkL3ZwYWMyNzAvTWFrZWZpbGUKaW5kZXggMGYzZWFjZC4uYzZmNGM3YyAxMDA2NDQKLS0tIGEvYm9hcmQvdnBhYzI3MC9NYWtlZmlsZQorKysgYi9ib2FyZC92cGFjMjcwL01ha2VmaWxlCkBAIC0yNCwyNSArMjQsMjkgQEAKIAogaW5jbHVkZSAkKFRPUERJUikvY29uZmlnLm1rCiAKLUxJQgk9IGxpYiQoQk9BUkQpLmEKK0xJQgk9ICQob2JqKWxpYiQoQk9BUkQpLmEKIAotT0JKUwk6PSB2cGFjMjcwLm8KK0NPQkpTCTo9IHZwYWMyNzAubwogU09CSlMJOj0gbG93bGV2ZWxfaW5pdC5vCiAKLSQoTElCKToJJChPQkpTKSAkKFNPQkpTKQotCSQoQVIpIGNydiAkQCAkKE9CSlMpICQoU09CSlMpCitTUkNTCTo9ICQoU09CSlM6Lm89LlMpICQoQ09CSlM6Lm89LmMpCitPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKENPQkpTKSkKK1NPQkpTCTo9ICQoYWRkcHJlZml4ICQob2JqKSwkKFNPQkpTKSkKKworJChMSUIpOgkkKG9iaikuZGVwZW5kICQoT0JKUykgJChTT0JKUykKKwkkKEFSKSAkKEFSRkxBR1MpICRAICQoT0JKUykgJChTT0JKUykKIAogY2xlYW46CiAJcm0gLWYgJChTT0JKUykgJChPQkpTKQogCiBkaXN0Y2xlYW46CWNsZWFuCi0Jcm0gLWYgJChMSUIpIGNvcmUgKi5iYWsgLmRlcGVuZAorCXJtIC1mICQoTElCKSBjb3JlICouYmFrICQob2JqKS5kZXBlbmQKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwogCi0uZGVwZW5kOglNYWtlZmlsZSAkKFNPQkpTOi5vPS5TKSAkKE9CSlM6Lm89LmMpCi0JCSQoQ0MpIC1NICQoQ1BQRkxBR1MpICQoU09CSlM6Lm89LlMpICQoT0JKUzoubz0uYykgPiAkQAorIyBkZWZpbmVzICQob2JqKS5kZXBlbmQgdGFyZ2V0CitpbmNsdWRlICQoU1JDVFJFRSkvcnVsZXMubWsKIAotLWluY2x1ZGUgLmRlcGVuZAorc2luY2x1ZGUgJChvYmopLmRlcGVuZAogCiAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCmRpZmYgLS1naXQgYS9ib2FyZC92cGFjMjcwL3ZwYWMyNzAuYyBiL2JvYXJkL3ZwYWMyNzAvdnBhYzI3MC5jCmluZGV4IDQ4ZTkzYWIuLjE4ZTQ3ZTIgMTAwNjQ0Ci0tLSBhL2JvYXJkL3ZwYWMyNzAvdnBhYzI3MC5jCisrKyBiL2JvYXJkL3ZwYWMyNzAvdnBhYzI3MC5jCkBAIC0zMCw2ICszMCw3IEBACiAKICNpbmNsdWRlIDxjb21tb24uaD4KICNpbmNsdWRlIDxhc20vYXJjaC9oYXJkd2FyZS5oPgorI2luY2x1ZGUgPG5ldGRldi5oPgogCiBERUNMQVJFX0dMT0JBTF9EQVRBX1BUUjsKIApkaWZmIC0tZ2l0IGEvYm9hcmRzLmNmZyBiL2JvYXJkcy5jZmcKaW5kZXggYjgyZjUzMC4uNjljNjg5NyAxMDA2NDQKLS0tIGEvYm9hcmRzLmNmZworKysgYi9ib2FyZHMuY2ZnCkBAIC0xNjAsNyArMTYwLDcgQEAKIGttc3VweDQJCXBvd2VycGMJbXBjOHh4CQlrbTh4eAkJa2V5bWlsZQogbWdzdXZkCQlwb3dlcnBjCW1wYzh4eAkJa204eHgJCWtleW1pbGUKIEtVUDRLCQlwb3dlcnBjCW1wYzh4eAkJa3VwNGsJCWt1cAotS1VQNFgJCXBvd2VycGMJbXBjOHh4CQlrdXA0awkJa3VwCitLVVA0WAkJcG93ZXJwYwltcGM4eHgJCWt1cDR4CQlrdXAKIEVMUFQ4NjAJCXBvd2VycGMJbXBjOHh4CQllbHB0ODYwCQlMRU9YCiBDQ00JCXBvd2VycGMJbXBjOHh4CQktCQlzaWVtZW5zCiBJQUQyMTAJCXBvd2VycGMJbXBjOHh4CQktCQlzaWVtZW5zCkBAIC0zNDMsNiArMzQzLDcgQEAKIE1QQzg1NDREUwlwb3dlcnBjCW1wYzg1eHgJCW1wYzg1NDRkcwlmcmVlc2NhbGUKIE1QQzg1NjBBRFMJcG93ZXJwYwltcGM4NXh4CQltcGM4NTYwYWRzCWZyZWVzY2FsZQogTVBDODU2OE1EUwlwb3dlcnBjCW1wYzg1eHgJCW1wYzg1NjhtZHMJZnJlZXNjYWxlCitQNDA4MERTCQlwb3dlcnBjCW1wYzg1eHgJCWNvcmVuZXRfZHMJZnJlZXNjYWxlCiBYUEVESVRFNTIwMAlwb3dlcnBjCW1wYzg1eHgJCXhwZWRpdGU1MjAwCXhlcwogWFBFRElURTUzNzAJcG93ZXJwYwltcGM4NXh4CQl4cGVkaXRlNTM3MAl4ZXMKIFAxMDIyRFMJCXBvd2VycGMJbXBjODV4eAkJcDEwMjJkcwkJZnJlZXNjYWxlCmRpZmYgLS1naXQgYS9jb21tb24vY21kX2FtYmFwcC5jIGIvY29tbW9uL2NtZF9hbWJhcHAuYwppbmRleCAyODNjNDMzLi5mYTdkN2UyIDEwMDY0NAotLS0gYS9jb21tb24vY21kX2FtYmFwcC5jCisrKyBiL2NvbW1vbi9jbWRfYW1iYXBwLmMKQEAgLTI3Miw3ICsyNzIsOCBAQAogCXJldHVybiAwOwogfQogCi1VX0JPT1RfQ01EKGFtYmFwcCwgMSwgMSwgZG9fYW1iYXBwX3ByaW50LAorVV9CT09UX0NNRCgKKwlhbWJhcHAsIDEsIDEsIGRvX2FtYmFwcF9wcmludCwKIAkibGlzdCBBTUJBIFBsdWcmUGxheSBpbmZvcm1hdGlvbiIsCiAJImFtYmFwcFxuIgogCSIgICAgLSBsaXN0cyBBTUJBIChBSEIgJiBBUEIpIFBsdWcmUGxheSBkZXZpY2VzIHByZXNlbnQgb24gdGhlIHN5c3RlbSIKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfYm9vdGxkci5jIGIvY29tbW9uL2NtZF9ib290bGRyLmMKaW5kZXggYzdmMTRkOS4uNTM1YjkzMSAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9ib290bGRyLmMKKysrIGIvY29tbW9uL2NtZF9ib290bGRyLmMKQEAgLTE2Nyw3ICsxNjcsOCBAQAogCXJldHVybiAwOwogfQogCi1VX0JPT1RfQ01EKGJvb3RsZHIsIDIsIDAsIGRvX2Jvb3RsZHIsCitVX0JPT1RfQ01EKAorCWJvb3RsZHIsIDIsIDAsIGRvX2Jvb3RsZHIsCiAJImJvb3QgbGRyIGltYWdlIGZyb20gbWVtb3J5IiwKIAkiW2FkZHJdXG4iCiAJIiIKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfYm9vdG0uYyBiL2NvbW1vbi9jbWRfYm9vdG0uYwppbmRleCBhZGZhNmNkLi40YzZlZDQ4IDEwMDY0NAotLS0gYS9jb21tb24vY21kX2Jvb3RtLmMKKysrIGIvY29tbW9uL2NtZF9ib290bS5jCkBAIC0zMzMsNiArMzMzLDkgQEAKIAl1bG9uZyBpbWFnZV9zdGFydCA9IG9zLmltYWdlX3N0YXJ0OwogCXVsb25nIGltYWdlX2xlbiA9IG9zLmltYWdlX2xlbjsKIAl1aW50IHVuY19sZW4gPSBDT05GSUdfU1lTX0JPT1RNX0xFTjsKKyNpZiBkZWZpbmVkKENPTkZJR19MWk1BKSB8fCBkZWZpbmVkKENPTkZJR19MWk8pCisJaW50IHJldDsKKyNlbmRpZiAvKiBkZWZpbmVkKENPTkZJR19MWk1BKSB8fCBkZWZpbmVkKENPTkZJR19MWk8pICovCiAKIAljb25zdCBjaGFyICp0eXBlX25hbWUgPSBnZW5pbWdfZ2V0X3R5cGVfbmFtZSAob3MudHlwZSk7CiAKQEAgLTM4NiwxMiArMzg5LDE0IEBACiAJCWJyZWFrOwogI2VuZGlmIC8qIENPTkZJR19CWklQMiAqLwogI2lmZGVmIENPTkZJR19MWk1BCi0JY2FzZSBJSF9DT01QX0xaTUE6CisJY2FzZSBJSF9DT01QX0xaTUE6IHsKKwkJU2l6ZVQgbHptYV9sZW4gPSB1bmNfbGVuOwogCQlwcmludGYgKCIgICBVbmNvbXByZXNzaW5nICVzIC4uLiAiLCB0eXBlX25hbWUpOwogCi0JCWludCByZXQgPSBsem1hQnVmZlRvQnVmZkRlY29tcHJlc3MoCi0JCQkodW5zaWduZWQgY2hhciAqKWxvYWQsICZ1bmNfbGVuLAorCQlyZXQgPSBsem1hQnVmZlRvQnVmZkRlY29tcHJlc3MoCisJCQkodW5zaWduZWQgY2hhciAqKWxvYWQsICZsem1hX2xlbiwKIAkJCSh1bnNpZ25lZCBjaGFyICopaW1hZ2Vfc3RhcnQsIGltYWdlX2xlbik7CisJCXVuY19sZW4gPSBsem1hX2xlbjsKIAkJaWYgKHJldCAhPSBTWl9PSykgewogCQkJcHJpbnRmICgiTFpNQTogdW5jb21wcmVzcyBvciBvdmVyd3JpdGUgZXJyb3IgJWQgIgogCQkJCSItIG11c3QgUkVTRVQgYm9hcmQgdG8gcmVjb3ZlclxuIiwgcmV0KTsKQEAgLTQwMCwxMiArNDA1LDEzIEBACiAJCX0KIAkJKmxvYWRfZW5kID0gbG9hZCArIHVuY19sZW47CiAJCWJyZWFrOworCX0KICNlbmRpZiAvKiBDT05GSUdfTFpNQSAqLwogI2lmZGVmIENPTkZJR19MWk8KIAljYXNlIElIX0NPTVBfTFpPOgogCQlwcmludGYgKCIgICBVbmNvbXByZXNzaW5nICVzIC4uLiAiLCB0eXBlX25hbWUpOwogCi0JCWludCByZXQgPSBsem9wX2RlY29tcHJlc3MoKGNvbnN0IHVuc2lnbmVkIGNoYXIgKilpbWFnZV9zdGFydCwKKwkJcmV0ID0gbHpvcF9kZWNvbXByZXNzKChjb25zdCB1bnNpZ25lZCBjaGFyICopaW1hZ2Vfc3RhcnQsCiAJCQkJCSAgaW1hZ2VfbGVuLCAodW5zaWduZWQgY2hhciAqKWxvYWQsCiAJCQkJCSAgJnVuY19sZW4pOwogCQlpZiAocmV0ICE9IExaT19FX09LKSB7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX2NwbGJpbmZvLmMgYi9jb21tb24vY21kX2NwbGJpbmZvLmMKaW5kZXggZmM2YWJmZi4uYWI1YjNiNSAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9jcGxiaW5mby5jCisrKyBiL2NvbW1vbi9jbWRfY3BsYmluZm8uYwpAQCAtNTMsNyArNTMsOCBAQAogCXJldHVybiAwOwogfQogCi1VX0JPT1RfQ01EKGNwbGJpbmZvLCAxLCAwLCBkb19jcGxiaW5mbywKK1VfQk9PVF9DTUQoCisJY3BsYmluZm8sIDEsIDAsIGRvX2NwbGJpbmZvLAogCSJkaXNwbGF5IGN1cnJlbnQgQ1BMQiB0YWJsZXMiLAogCSIiCiApOwpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9jcmFtZnMuYyBiL2NvbW1vbi9jbWRfY3JhbWZzLmMKaW5kZXggYWIxMDQ1MC4uOGM4NmRjNSAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9jcmFtZnMuYworKysgYi9jb21tb24vY21kX2NyYW1mcy5jCkBAIC0xOTksMTQgKzE5OSwxNCBAQAogLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KIFVfQk9PVF9DTUQoCiAJY3JhbWZzbG9hZCwJMywJMCwJZG9fY3JhbWZzX2xvYWQsCi0JImNyYW1mc2xvYWRcdC0gbG9hZCBiaW5hcnkgZmlsZSBmcm9tIGEgZmlsZXN5c3RlbSBpbWFnZSIsCisJImxvYWQgYmluYXJ5IGZpbGUgZnJvbSBhIGZpbGVzeXN0ZW0gaW1hZ2UiLAogCSJbIG9mZiBdIFsgZmlsZW5hbWUgXVxuIgogCSIgICAgLSBsb2FkIGJpbmFyeSBmaWxlIGZyb20gYWRkcmVzcyAnY3JhbWZzYWRkcidcbiIKIAkiICAgICAgd2l0aCBvZmZzZXQgJ29mZidcbiIKICk7CiBVX0JPT1RfQ01EKAogCWNyYW1mc2xzLAkyLAkxLAlkb19jcmFtZnNfbHMsCi0JImNyYW1mc2xzXHQtIGxpc3QgZmlsZXMgaW4gYSBkaXJlY3RvcnkgKGRlZmF1bHQgLykiLAorCSJsaXN0IGZpbGVzIGluIGEgZGlyZWN0b3J5IChkZWZhdWx0IC8pIiwKIAkiWyBkaXJlY3RvcnkgXVxuIgogCSIgICAgLSBsaXN0IGZpbGVzIGluIGEgZGlyZWN0b3J5LlxuIgogKTsKZGlmZiAtLWdpdCBhL2NvbW1vbi9jbWRfZGF0YWZsYXNoX21tY19tdXguYyBiL2NvbW1vbi9jbWRfZGF0YWZsYXNoX21tY19tdXguYwppbmRleCBkZTRlNjc2Li4xNjc4ZDZlIDEwMDY0NAotLS0gYS9jb21tb24vY21kX2RhdGFmbGFzaF9tbWNfbXV4LmMKKysrIGIvY29tbW9uL2NtZF9kYXRhZmxhc2hfbW1jX211eC5jCkBAIC00MSw4ICs0MSw3IEBACiAJCQlBVDkxRl9HZXRNdXhTdGF0dXMgKCkgPyAiTU1DIiA6ICJTUEkiKTsKIAkJcmV0dXJuIDA7CiAJZGVmYXVsdDoKLQkJcHJpbnRmICgiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKLQkJcmV0dXJuIDE7CisJCXJldHVybiBjbWRfdXNhZ2UoY21kdHApOwogCX0KIAlyZXR1cm4gMDsKIH0KQEAgLTU5LDcgKzU4LDcgQEAKIAogVV9CT09UX0NNRCgKIAlkYXRhZmxhc2hfbW1jX211eCwgMiwgMSwgZG9fZGF0YWZsYXNoX21tY19tdXgsCi0JImRhdGFmbGFzaF9tbWNfbXV4XHQtIGVuYWJsZSBvciBkaXNhYmxlIE1NQyBvciBTUElcbiIsCisJImVuYWJsZSBvciBkaXNhYmxlIE1NQyBvciBTUElcbiIsCiAJIlttbWMsIHNwaV1cbiIKIAkiICAgIC0gZW5hYmxlIG9yIGRpc2FibGUgTU1DIG9yIFNQSSIKICk7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX2xpY2Vuc2UuYyBiL2NvbW1vbi9jbWRfbGljZW5zZS5jCmluZGV4IDkwZmQ1N2UuLjcwNjQ1ZDUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfbGljZW5zZS5jCisrKyBiL2NvbW1vbi9jbWRfbGljZW5zZS5jCkBAIC00OSw3ICs0OSw4IEBACiAJcmV0dXJuIDA7CiB9CiAKLVVfQk9PVF9DTUQobGljZW5zZSwgMSwgMSwgZG9fbGljZW5zZSwKK1VfQk9PVF9DTUQoCisJbGljZW5zZSwgMSwgMSwgZG9fbGljZW5zZSwKIAkicHJpbnQgR1BMIGxpY2Vuc2UgdGV4dCIsCiAJIiIKICk7CmRpZmYgLS1naXQgYS9jb21tb24vY21kX21nZGlzay5jIGIvY29tbW9uL2NtZF9tZ2Rpc2suYwppbmRleCBjMmQ1MjE3Li5kOTlhZjJkIDEwMDY0NAotLS0gYS9jb21tb24vY21kX21nZGlzay5jCisrKyBiL2NvbW1vbi9jbWRfbWdkaXNrLmMKQEAgLTU0LDE1ICs1NCwxNCBAQAogCQkJcmV0dXJuIDE7CiAJCWJyZWFrOwogCWRlZmF1bHQ6Ci0JCXByaW50ZigiVXNhZ2U6XG4lc1xuIiwgY21kdHAtPnVzYWdlKTsKLQkJcmV0dXJuIDE7CisJCXJldHVybiBjbWRfdXNhZ2UoY21kdHApOwogCX0KIAlyZXR1cm4gMDsKIH0KIAogVV9CT09UX0NNRCgKIAltZ2QsCTUsCTAsCWRvX21nX2Rpc2tfY21kLAotCSJtZ2QgICAgIC0gbWdpbmUgbVtnXWZsYXNoIGNvbW1hbmRcbiIsCisJIm1naW5lIG1bZ11mbGFzaCBjb21tYW5kXG4iLAogCSI6IG1naW5lIG1mbGFzaCBJTyBtb2RlIChkaXNrKSBjb21tYW5kXG4iCiAJIiAgICAtIGluaXRpYWxpemUgOiBtZ2QgaW5pdFxuIgogCSIgICAgLSByYW5kb20gcmVhZCA6IG1nZCByZWFkIFtmcm9tXSBbdG9dIFtzaXplXVxuIgpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9tbWMuYyBiL2NvbW1vbi9jbWRfbW1jLmMKaW5kZXggZTVmNWU5NC4uYTZlZDZhOCAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9tbWMuYworKysgYi9jb21tb24vY21kX21tYy5jCkBAIC0xMzAsOCArMTMwLDExIEBACiAJcmV0dXJuIDA7CiB9CiAKLVVfQk9PVF9DTUQobW1jaW5mbywgMiwgMCwgZG9fbW1jaW5mbywKLQkibW1jaW5mbyA8ZGV2IG51bT4tLSBkaXNwbGF5IE1NQyBpbmZvIiwKK1VfQk9PVF9DTUQoCisJbW1jaW5mbywgMiwgMCwgZG9fbW1jaW5mbywKKwkiZGlzcGxheSBNTUMgaW5mbyIsCisJIjxkZXYgbnVtPlxuCisgICAgICAgICIgICAgLSBkZXZpY2UgbnVtYmVyIG9mIHRoZSBkZXZpY2UgdG8gZGlzbGF5IGluZm8gb2ZcbiIKIAkiIgogKTsKIApkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9uYW5kLmMgYi9jb21tb24vY21kX25hbmQuYwppbmRleCAwZjQ3YTI1Li4zZjFkMDc3IDEwMDY0NAotLS0gYS9jb21tb24vY21kX25hbmQuYworKysgYi9jb21tb24vY21kX25hbmQuYwpAQCAtNTc5LDcgKzU3OSw4IEBACiAJcmV0dXJuIGNtZF91c2FnZShjbWR0cCk7CiB9CiAKLVVfQk9PVF9DTUQobmFuZCwgQ09ORklHX1NZU19NQVhBUkdTLCAxLCBkb19uYW5kLAorVV9CT09UX0NNRCgKKwluYW5kLCBDT05GSUdfU1lTX01BWEFSR1MsIDEsIGRvX25hbmQsCiAJIk5BTkQgc3ViLXN5c3RlbSIsCiAJImluZm8gLSBzaG93IGF2YWlsYWJsZSBOQU5EIGRldmljZXNcbiIKIAkibmFuZCBkZXZpY2UgW2Rldl0gLSBzaG93IG9yIHNldCBjdXJyZW50IGRldmljZVxuIgpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9udmVkaXQuYyBiL2NvbW1vbi9jbWRfbnZlZGl0LmMKaW5kZXggMTE5ODk1NC4uZmQ1MzIwZCAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF9udmVkaXQuYworKysgYi9jb21tb24vY21kX252ZWRpdC5jCkBAIC01NDMsNyArNTQzLDcgQEAKIAlyZXR1cm4gKE5VTEwpOwogfQogCi1pbnQgZ2V0ZW52X3IgKGNoYXIgKm5hbWUsIGNoYXIgKmJ1ZiwgdW5zaWduZWQgbGVuKQoraW50IGdldGVudl9mKGNoYXIgKm5hbWUsIGNoYXIgKmJ1ZiwgdW5zaWduZWQgbGVuKQogewogCWludCBpLCBueHQ7CiAKQEAgLTU1NywxMyArNTU3LDE5IEBACiAJCX0KIAkJaWYgKCh2YWw9ZW52bWF0Y2goKHVjaGFyICopbmFtZSwgaSkpIDwgMCkKIAkJCWNvbnRpbnVlOworCiAJCS8qIGZvdW5kOyBjb3B5IG91dCAqLwotCQluID0gMDsKLQkJd2hpbGUgKChsZW4gPiBuKyspICYmICgqYnVmKysgPSBlbnZfZ2V0X2NoYXIodmFsKyspKSAhPSAnXDAnKQotCQkJOwotCQlpZiAobGVuID09IG4pCi0JCQkqYnVmID0gJ1wwJzsKLQkJcmV0dXJuIChuKTsKKwkJZm9yIChuPTA7IG48bGVuOyArK24sICsrYnVmKSB7CisJCQlpZiAoKCpidWYgPSBlbnZfZ2V0X2NoYXIodmFsKyspKSA9PSAnXDAnKQorCQkJCXJldHVybiBuOworCQl9CisKKwkJaWYgKG4pCisJCQkqLS1idWYgPSAnXDAnOworCisJCXByaW50ZigiZW52X2J1ZiB0b28gc21hbGwgWyVkXVxuIiwgbGVuKTsKKworCQlyZXR1cm4gbjsKIAl9CiAJcmV0dXJuICgtMSk7CiB9CmRpZmYgLS1naXQgYS9jb21tb24vY21kX290cC5jIGIvY29tbW9uL2NtZF9vdHAuYwppbmRleCA0M2Y3YzY5Li41NmYwOGUwIDEwMDY0NAotLS0gYS9jb21tb24vY21kX290cC5jCisrKyBiL2NvbW1vbi9jbWRfb3RwLmMKQEAgLTIyMyw3ICsyMjMsOCBAQAogCXJldHVybiByZXQ7CiB9CiAKLVVfQk9PVF9DTUQob3RwLCA3LCAwLCBkb19vdHAsCitVX0JPT1RfQ01EKAorCW90cCwgNywgMCwgZG9fb3RwLAogCSJPbmUtVGltZS1Qcm9ncmFtbWFibGUgc3ViLXN5c3RlbSIsCiAJInJlYWQgPGFkZHI+IDxwYWdlPiBbY291bnRdIFtoYWxmXVxuIgogCSIgLSByZWFkICdjb3VudCcgaGFsZi1wYWdlcyBzdGFydGluZyBhdCAncGFnZScgKG9mZnNldCAnaGFsZicpIHRvICdhZGRyJ1xuIgpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9zcGlib290bGRyLmMgYi9jb21tb24vY21kX3NwaWJvb3RsZHIuYwppbmRleCA2OGFhNjE4Li5jYTc2ZGRlIDEwMDY0NAotLS0gYS9jb21tb24vY21kX3NwaWJvb3RsZHIuYworKysgYi9jb21tb24vY21kX3NwaWJvb3RsZHIuYwpAQCAtMzAsNyArMzAsOCBAQAogCXJldHVybiBiZnJvbV9TcGlCb290KGFkZHIsIEJGTEFHX1BFUklQSEVSQUwgfCA0LCAwLCBOVUxMKTsKIH0KIAotVV9CT09UX0NNRChzcGlib290bGRyLCAyLCAwLCBkb19zcGlib290bGRyLAorVV9CT09UX0NNRCgKKwlzcGlib290bGRyLCAyLCAwLCBkb19zcGlib290bGRyLAogCSJib290IGxkciBpbWFnZSBmcm9tIHNwaSIsCiAJIltvZmZzZXRdXG4iCiAJIiAgICAtIGJvb3QgbGRyIGltYWdlIHN0b3JlZCBhdCBvZmZzZXQgaW50byBzcGlcbiIpOwpkaWZmIC0tZ2l0IGEvY29tbW9uL2NtZF9zdHJpbmdzLmMgYi9jb21tb24vY21kX3N0cmluZ3MuYwppbmRleCAxNDRhNmMxLi4yOTg2MzI0IDEwMDY0NAotLS0gYS9jb21tb24vY21kX3N0cmluZ3MuYworKysgYi9jb21tb24vY21kX3N0cmluZ3MuYwpAQCAtMzgsNyArMzgsOCBAQAogCXJldHVybiAwOwogfQogCi1VX0JPT1RfQ01EKHN0cmluZ3MsIDMsIDEsIGRvX3N0cmluZ3MsCitVX0JPT1RfQ01EKAorCXN0cmluZ3MsIDMsIDEsIGRvX3N0cmluZ3MsCiAJImRpc3BsYXkgc3RyaW5ncyIsCiAJIjxhZGRyPiBbYnl0ZSBjb3VudF1cbiIKIAkiICAgIC0gZGlzcGxheSBzdHJpbmdzIGF0IDxhZGRyPiBmb3IgYXQgbGVhc3QgW2J5dGUgY291bnRdIG9yIGZpcnN0IGRvdWJsZSBOVUwiCmRpZmYgLS1naXQgYS9jb21tb24vY21kX3ViaS5jIGIvY29tbW9uL2NtZF91YmkuYwppbmRleCA3N2NhMGE1Li43NjkyYWM3IDEwMDY0NAotLS0gYS9jb21tb24vY21kX3ViaS5jCisrKyBiL2NvbW1vbi9jbWRfdWJpLmMKQEAgLTU5OCw3ICs1OTgsOCBAQAogCXJldHVybiAtMTsKIH0KIAotVV9CT09UX0NNRCh1YmksIDYsIDEsIGRvX3ViaSwKK1VfQk9PVF9DTUQoCisJdWJpLCA2LCAxLCBkb191YmksCiAJInViaSBjb21tYW5kcyIsCiAJInBhcnQgW3BhcnRdIFtvZmZzZXRdXG4iCiAJCSIgLSBTaG93IG9yIHNldCBjdXJyZW50IHBhcnRpdGlvbiAod2l0aCBvcHRpb25hbCBWSUQiCmRpZmYgLS1naXQgYS9jb21tb24vY21kX3ViaWZzLmMgYi9jb21tb24vY21kX3ViaWZzLmMKaW5kZXggMmNhYjc5My4uYTBlYzE4NCAxMDA2NDQKLS0tIGEvY29tbW9uL2NtZF91Ymlmcy5jCisrKyBiL2NvbW1vbi9jbWRfdWJpZnMuYwpAQCAtMTMxLDEzICsxMzEsMTUgQEAKIAkiICAgIC0gbW91bnQgJ3ZvbHVtZS1uYW1lJyB2b2x1bWUiCiApOwogCi1VX0JPT1RfQ01EKHViaWZzbHMsIDIsIDAsIGRvX3ViaWZzX2xzLAorVV9CT09UX0NNRCgKKwl1Ymlmc2xzLCAyLCAwLCBkb191Ymlmc19scywKIAkibGlzdCBmaWxlcyBpbiBhIGRpcmVjdG9yeSIsCiAJIltkaXJlY3RvcnldXG4iCiAJIiAgICAtIGxpc3QgZmlsZXMgaW4gYSAnZGlyZWN0b3J5JyAoZGVmYXVsdCAnLycpIgogKTsKIAotVV9CT09UX0NNRCh1Ymlmc2xvYWQsIDQsIDAsIGRvX3ViaWZzX2xvYWQsCitVX0JPT1RfQ01EKAorCXViaWZzbG9hZCwgNCwgMCwgZG9fdWJpZnNfbG9hZCwKIAkibG9hZCBmaWxlIGZyb20gYW4gVUJJRlMgZmlsZXN5c3RlbSIsCiAJIjxhZGRyPiA8ZmlsZW5hbWU+IFtieXRlc11cbiIKIAkiICAgIC0gbG9hZCBmaWxlICdmaWxlbmFtZScgdG8gYWRkcmVzcyAnYWRkciciCmRpZmYgLS1naXQgYS9jb21tb24vY21kX3hpbWcuYyBiL2NvbW1vbi9jbWRfeGltZy5jCmluZGV4IDhhMmNmODMuLmRjZWI5NzUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9jbWRfeGltZy5jCisrKyBiL2NvbW1vbi9jbWRfeGltZy5jCkBAIC0yNjIsNyArMjYyLDggQEAKIAlyZXR1cm4gMDsKIH0KIAotVV9CT09UX0NNRChpbXh0cmFjdCwgNCwgMSwgZG9faW1nZXh0cmFjdCwKK1VfQk9PVF9DTUQoCisJaW14dHJhY3QsIDQsIDEsIGRvX2ltZ2V4dHJhY3QsCiAJImV4dHJhY3QgYSBwYXJ0IG9mIGEgbXVsdGktaW1hZ2UiLAogCSJhZGRyIHBhcnQgW2Rlc3RdXG4iCiAJIiAgICAtIGV4dHJhY3QgPHBhcnQ+IGZyb20gbGVnYWN5IGltYWdlIGF0IDxhZGRyPiBhbmQgY29weSB0byA8ZGVzdD4iCmRpZmYgLS1naXQgYS9jb21tb24vZmR0X3N1cHBvcnQuYyBiL2NvbW1vbi9mZHRfc3VwcG9ydC5jCmluZGV4IDcxOGI2MzUuLjMzMzM2YmUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9mZHRfc3VwcG9ydC5jCisrKyBiL2NvbW1vbi9mZHRfc3VwcG9ydC5jCkBAIC00OTgsMTEgKzQ5OCwxMiBAQAogCiAJLyoKIAkgKiBDYWxjdWxhdGUgdGhlIGFjdHVhbCBzaXplIG9mIHRoZSBmZHQKLQkgKiBwbHVzIHRoZSBzaXplIG5lZWRlZCBmb3IgdHdvIGZkdF9hZGRfbWVtX3Jzdiwgb25lCi0JICogZm9yIHRoZSBmZHQgaXRzZWxmIGFuZCBvbmUgZm9yIGEgcG9zc2libGUgaW5pdHJkCisJICogcGx1cyB0aGUgc2l6ZSBuZWVkZWQgZm9yIDUgZmR0X2FkZF9tZW1fcnN2LCBvbmUKKwkgKiBmb3IgdGhlIGZkdCBpdHNlbGYgYW5kIDQgZm9yIGEgcG9zc2libGUgaW5pdHJkCisJICogKChpbml0cmQtc3RhcnQgKyBpbml0cmQtZW5kKSAqIDIgKG5hbWUgJiB2YWx1ZSkpCiAJICovCiAJYWN0dWFsc2l6ZSA9IGZkdF9vZmZfZHRfc3RyaW5ncyhibG9iKSArCi0JCWZkdF9zaXplX2R0X3N0cmluZ3MoYmxvYikgKyAyKnNpemVvZihzdHJ1Y3QgZmR0X3Jlc2VydmVfZW50cnkpOworCQlmZHRfc2l6ZV9kdF9zdHJpbmdzKGJsb2IpICsgNSAqIHNpemVvZihzdHJ1Y3QgZmR0X3Jlc2VydmVfZW50cnkpOwogCiAJLyogTWFrZSBpdCBzbyB0aGUgZmR0IGVuZHMgb24gYSBwYWdlIGJvdW5kYXJ5ICovCiAJYWN0dWFsc2l6ZSA9IEFMSUdOKGFjdHVhbHNpemUgKyAoKHVpbnQpYmxvYiAmIDB4ZmZmKSwgMHgxMDAwKTsKQEAgLTExNTEsNCArMTE1MiwyMiBAQAogCXJldHVybiAtRkRUX0VSUl9OT1RGT1VORDsKIH0KIAorLyoqCisgKiBmZHRfYWxsb2NfcGhhbmRsZTogUmV0dXJuIG5leHQgZnJlZSBwaGFuZGxlIHZhbHVlCisgKgorICogQGJsb2I6IHB0ciB0byBkZXZpY2UgdHJlZQorICovCitpbnQgZmR0X2FsbG9jX3BoYW5kbGUodm9pZCAqYmxvYikKK3sKKwlpbnQgb2Zmc2V0LCBsZW4sIHBoYW5kbGUgPSAwOworCWNvbnN0IHUzMiAqdmFsOwogCisJZm9yIChvZmZzZXQgPSBmZHRfbmV4dF9ub2RlKGJsb2IsIC0xLCBOVUxMKTsgb2Zmc2V0ID49IDA7CisJICAgICBvZmZzZXQgPSBmZHRfbmV4dF9ub2RlKGJsb2IsIG9mZnNldCwgTlVMTCkpIHsKKwkJdmFsID0gZmR0X2dldHByb3AoYmxvYiwgb2Zmc2V0LCAibGludXgscGhhbmRsZSIsICZsZW4pOworCQlpZiAodmFsKQorCQkJcGhhbmRsZSA9IG1heCgqdmFsLCBwaGFuZGxlKTsKKwl9CisKKwlyZXR1cm4gcGhhbmRsZSArIDE7Cit9CmRpZmYgLS1naXQgYS9jb21tb24vZmxhc2guYyBiL2NvbW1vbi9mbGFzaC5jCmluZGV4IGViNGIyZjUuLjY4Mzk3OGUgMTAwNjQ0Ci0tLSBhL2NvbW1vbi9mbGFzaC5jCisrKyBiL2NvbW1vbi9mbGFzaC5jCkBAIC00MywxNSArNDMsMTggQEAKIHZvaWQKIGZsYXNoX3Byb3RlY3QgKGludCBmbGFnLCB1bG9uZyBmcm9tLCB1bG9uZyB0bywgZmxhc2hfaW5mb190ICppbmZvKQogewotCXVsb25nIGJfZW5kID0gaW5mby0+c3RhcnRbMF0gKyBpbmZvLT5zaXplIC0gMTsJLyogYmFuayBlbmQgYWRkcmVzcyAqLwotCXNob3J0IHNfZW5kID0gaW5mby0+c2VjdG9yX2NvdW50IC0gMTsJLyogaW5kZXggb2YgbGFzdCBzZWN0b3IgKi8KKwl1bG9uZyBiX2VuZDsKKwlzaG9ydCBzX2VuZDsKIAlpbnQgaTsKIAogCS8qIERvIG5vdGhpbmcgaWYgaW5wdXQgZGF0YSBpcyBiYWQuICovCi0JaWYgKGluZm8tPnNlY3Rvcl9jb3VudCA9PSAwIHx8IGluZm8tPnNpemUgPT0gMCB8fCB0byA8IGZyb20pIHsKKwlpZiAoIWluZm8gfHwgaW5mby0+c2VjdG9yX2NvdW50ID09IDAgfHwgaW5mby0+c2l6ZSA9PSAwIHx8IHRvIDwgZnJvbSkgewogCQlyZXR1cm47CiAJfQogCisJc19lbmQgPSBpbmZvLT5zZWN0b3JfY291bnQgLSAxOwkvKiBpbmRleCBvZiBsYXN0IHNlY3RvciAqLworCWJfZW5kID0gaW5mby0+c3RhcnRbMF0gKyBpbmZvLT5zaXplIC0gMTsJLyogYmFuayBlbmQgYWRkcmVzcyAqLworCiAJZGVidWcgKCJmbGFzaF9wcm90ZWN0ICVzOiBmcm9tIDB4JTA4bFggdG8gMHglMDhsWFxuIiwKIAkJKGZsYWcgJiBGTEFHX1BST1RFQ1RfU0VUKSA/ICJPTiIgOgogCQkJKGZsYWcgJiBGTEFHX1BST1RFQ1RfQ0xFQVIpID8gIk9GRiIgOiAiPz8/IiwKZGlmZiAtLWdpdCBhL2NvbW1vbi9pbWFnZS5jIGIvY29tbW9uL2ltYWdlLmMKaW5kZXggNmQ4ODMzZS4uZmNiOTM4YiAxMDA2NDQKLS0tIGEvY29tbW9uL2ltYWdlLmMKKysrIGIvY29tbW9uL2ltYWdlLmMKQEAgLTQzMywxNyArNDMzLDIzIEBACiAKIHBoeXNfc2l6ZV90IGdldGVudl9ib290bV9zaXplKHZvaWQpCiB7CisJcGh5c19zaXplX3QgdG1wOwogCWNoYXIgKnMgPSBnZXRlbnYgKCJib290bV9zaXplIik7CiAJaWYgKHMpIHsKLQkJcGh5c19zaXplX3QgdG1wOwogCQl0bXAgPSAocGh5c19zaXplX3Qpc2ltcGxlX3N0cnRvdWxsIChzLCBOVUxMLCAxNik7CiAJCXJldHVybiB0bXA7CiAJfQorCXMgPSBnZXRlbnYoImJvb3RtX2xvdyIpOworCWlmIChzKQorCQl0bXAgPSAocGh5c19zaXplX3Qpc2ltcGxlX3N0cnRvdWxsIChzLCBOVUxMLCAxNik7CisJZWxzZQorCQl0bXAgPSAwOworCiAKICNpZiBkZWZpbmVkKENPTkZJR19BUk0pCi0JcmV0dXJuIGdkLT5iZC0+YmlfZHJhbVswXS5zaXplOworCXJldHVybiBnZC0+YmQtPmJpX2RyYW1bMF0uc2l6ZSAtIHRtcDsKICNlbHNlCi0JcmV0dXJuIGdkLT5iZC0+YmlfbWVtc2l6ZTsKKwlyZXR1cm4gZ2QtPmJkLT5iaV9tZW1zaXplIC0gdG1wOwogI2VuZGlmCiB9CiAKQEAgLTExNzgsNiArMTE4NCw3IEBACiAgKiAgICAgIDAgLSBzdWNjZXNzCiAgKiAgICAgIDEgLSBmYWlsdXJlCiAgKi8KKyNpZiBkZWZpbmVkKENPTkZJR19TWVNfQk9PVE1BUFNaKQogaW50IGJvb3RfcmVsb2NhdGVfZmR0IChzdHJ1Y3QgbG1iICpsbWIsIHVsb25nIGJvb3RtYXBfYmFzZSwKIAkJY2hhciAqKm9mX2ZsYXRfdHJlZSwgdWxvbmcgKm9mX3NpemUpCiB7CkBAIC0xMjU3LDYgKzEyNjQsNyBAQAogZXJyb3I6CiAJcmV0dXJuIDE7CiB9CisjZW5kaWYgLyogQ09ORklHX1NZU19CT09UTUFQU1ogKi8KIAogLyoqCiAgKiBib290X2dldF9mZHQgLSBtYWluIGZkdCBoYW5kbGluZyByb3V0aW5lCmRpZmYgLS1naXQgYS9jb21tb24vbWFpbi5jIGIvY29tbW9uL21haW4uYwppbmRleCA1NGVmNzllLi44ZDU0OGRiIDEwMDY0NAotLS0gYS9jb21tb24vbWFpbi5jCisrKyBiL2NvbW1vbi9tYWluLmMKQEAgLTY0MywxMiArNjQzLDEwIEBACiAKICNkZWZpbmUgRVJBU0VfVE9fRU9MKCkgewkJCQlcCiAJaWYgKG51bSA8IGVvbF9udW0pIHsJCQkJXAotCQlpbnQgdG1wOwkJCQlcCi0JCWZvciAodG1wID0gbnVtOyB0bXAgPCBlb2xfbnVtOyB0bXArKykJXAotCQkJZ2V0Y21kX3B1dGNoKCcgJyk7CQlcCi0JCXdoaWxlICh0bXAtLSA+IG51bSkJCQlcCisJCXByaW50ZigiJSpzIiwgKGludCkoZW9sX251bSAtIG51bSksICIiKTsgXAorCQlkbyB7CQkJCQlcCiAJCQlnZXRjbWRfcHV0Y2goQ1RMX0JBQ0tTUEFDRSk7CVwKLQkJZW9sX251bSA9IG51bTsJCQkJXAorCQl9IHdoaWxlICgtLWVvbF9udW0gPiBudW0pOwkJXAogCX0JCQkJCQlcCiB9CiAKZGlmZiAtLWdpdCBhL2NvbmZpZy5tayBiL2NvbmZpZy5tawppbmRleCBiY2RhNzc2Li5lYjk1MDkzIDEwMDY0NAotLS0gYS9jb25maWcubWsKKysrIGIvY29uZmlnLm1rCkBAIC02OCwxMyArNjgsMTMgQEAKIERBUldJTl9NQUpPUl9WRVJTSU9OCT0gJChzaGVsbCBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IGN1dCAtZiAxIC1kICcuJykKIERBUldJTl9NSU5PUl9WRVJTSU9OCT0gJChzaGVsbCBzd192ZXJzIC1wcm9kdWN0VmVyc2lvbiB8IGN1dCAtZiAyIC1kICcuJykKIAotYmVmb3JlLXNub3ctbGVvcGFyZAk9ICQoc2hlbGwgaWYgWyAkKERBUldJTl9NQUpPUl9WRVJTSU9OKSAtbGUgMTAgLWEgXAotCSQoREFSV0lOX01JTk9SX1ZFUlNJT04pIC1sZSA1IF0gOyB0aGVuIGVjaG8gIiQoMSkiOyBlbHNlIGVjaG8gIiQoMikiOyBmaSA7KQorb3NfeF9iZWZvcmUJPSAkKHNoZWxsIGlmIFsgJChEQVJXSU5fTUFKT1JfVkVSU0lPTikgLWxlICQoMSkgLWEgXAorCSQoREFSV0lOX01JTk9SX1ZFUlNJT04pIC1sZSAkKDIpIF0gOyB0aGVuIGVjaG8gIiQoMykiOyBlbHNlIGVjaG8gIiQoNCkiOyBmaSA7KQogCiAjIFNub3cgTGVvcGFyZHMgYnVpbGQgZW52aXJvbm1lbnQgaGFzIG5vIGxvbmdlciByZXN0cmljdGlvbnMgYXMgZGVzY3JpYmVkIGFib3ZlCi1IT1NUQ0MJCSA9ICQoY2FsbCBiZWZvcmUtc25vdy1sZW9wYXJkLCAiY2MiLCAiZ2NjIikKLUhPU1RDRkxBR1MJKz0gJChjYWxsIGJlZm9yZS1zbm93LWxlb3BhcmQsICItdHJhZGl0aW9uYWwtY3BwIikKLUhPU1RMREZMQUdTCSs9ICQoY2FsbCBiZWZvcmUtc25vdy1sZW9wYXJkLCAiLW11bHRpcGx5X2RlZmluZWQgc3VwcHJlc3MiKQorSE9TVENDCQkgPSAkKGNhbGwgb3NfeF9iZWZvcmUsIDEwLCA1LCAiY2MiLCAiZ2NjIikKK0hPU1RDRkxBR1MJKz0gJChjYWxsIG9zX3hfYmVmb3JlLCAxMCwgNCwgIi10cmFkaXRpb25hbC1jcHAiKQorSE9TVExERkxBR1MJKz0gJChjYWxsIG9zX3hfYmVmb3JlLCAxMCwgNSwgIi1tdWx0aXBseV9kZWZpbmVkIHN1cHByZXNzIikKIGVsc2UKIEhPU1RDQwkJPSBnY2MKIGVuZGlmCmRpZmYgLS1naXQgYS9kb2MvUkVBRE1FLmZzbC1kZHIgYi9kb2MvUkVBRE1FLmZzbC1kZHIKaW5kZXggOWMyMjI0Zi4uZTEwOGEwZCAxMDA2NDQKLS0tIGEvZG9jL1JFQURNRS5mc2wtZGRyCisrKyBiL2RvYy9SRUFETUUuZnNsLWRkcgpAQCAtMjcsNDMgKzI3LDYwIEBACiAgZnJvbSBlYWNoIGNvbnRyb2xsZXIuIHtDUzIrQ1MzfSBvbiBlYWNoIGNvbnRyb2xsZXIgYXJlIG9ubHkgcmFuawogIGludGVybGVhdmVkIG9uIHRoYXQgY29udHJvbGxlci4KIAorIEZvciBtZW1vcnkgY29udHJvbGxlciBpbnRlcmxlYXZpbmcsIGlkZW50aWNhbCBESU1NcyBhcmUgc3VnZ2VzdGVkLiBTb2Z0d2FyZQorIGRvZXNuJ3QgY2hlY2sgdGhlIHNpemUgb3Igb3JnYW5pemF0aW9uIG9mIGludGVybGVhdmVkIERJTU1zLgorCiBUaGUgd2F5cyB0byBjb25maWd1cmUgdGhlIGRkciBpbnRlcmxlYXZpbmcgbW9kZQogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogMS4gSW4gYm9hcmQgaGVhZGVyIGZpbGUoZS5nLk1QQzg1NzJEUy5oKSwgYWRkIGRlZmF1bHQgaW50ZXJsZWF2aW5nIHNldHRpbmcKICAgIHVuZGVyICJDT05GSUdfRVhUUkFfRU5WX1NFVFRJTkdTIiwgbGlrZToKIAkjZGVmaW5lIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJXAotCSAibWVtY3RsX2ludGx2X2N0bD0yXDAiCQkJCQkJXAorCSAiaHdjb25maWc9ZnNsX2RkcjpjdGxyX2ludGx2PWJhbmsiCQkJXAogCSAuLi4uLi4KIAogMi4gUnVuIHUtYm9vdCAic2V0ZW52IiBjb21tYW5kIHRvIGNvbmZpZ3VyZSB0aGUgbWVtb3J5IGludGVybGVhdmluZyBtb2RlLgogICAgRWl0aGVyIG51bWVyaWNhbCBvciBzdHJpbmcgdmFsdWUgaXMgYWNjZXB0ZWQuCiAKICAgIyBkaXNhYmxlIG1lbW9yeSBjb250cm9sbGVyIGludGVybGVhdmluZwotICBzZXRlbnYgbWVtY3RsX2ludGx2X2N0bAorICBzZXRlbnYgaHdjb25maWcgImZzbF9kZHI6Y3Rscl9pbnRsdj1udWxsIgogCiAgICMgY2FjaGVsaW5lIGludGVybGVhdmluZwotICBzZXRlbnYgbWVtY3RsX2ludGx2X2N0bCAwIG9yIHNldGVudiBtZW1jdGxfaW50bHZfY3RsIGNhY2hlbGluZQorICBzZXRlbnYgaHdjb25maWcgImZzbF9kZHI6Y3Rscl9pbnRsdj1jYWNoZWxpbmUiCiAKICAgIyBwYWdlIGludGVybGVhdmluZwotICBzZXRlbnYgbWVtY3RsX2ludGx2X2N0bCAxIG9yIHNldGVudiBtZW1jdGxfaW50bHZfY3RsIHBhZ2UKKyAgc2V0ZW52IGh3Y29uZmlnICJmc2xfZGRyOmN0bHJfaW50bHY9cGFnZSIKIAogICAjIGJhbmsgaW50ZXJsZWF2aW5nCi0gIHNldGVudiBtZW1jdGxfaW50bHZfY3RsIDIgb3Igc2V0ZW52IG1lbWN0bF9pbnRsdl9jdGwgYmFuaworICBzZXRlbnYgaHdjb25maWcgImZzbF9kZHI6Y3Rscl9pbnRsdj1iYW5rIgogCiAgICMgc3VwZXJiYW5rCi0gIHNldGVudiBtZW1jdGxfaW50bHZfY3RsIDMgb3Igc2V0ZW52IG1lbWN0bF9pbnRsdl9jdGwgc3VwZXJiYW5rCisgIHNldGVudiBod2NvbmZpZyAiZnNsX2RkcjpjdGxyX2ludGx2PXN1cGVyYmFuayIKIAogICAjIGRpc2FibGUgYmFuayAoY2hpcC1zZWxlY3QpIGludGVybGVhdmluZwotICBzZXRlbnYgYmFfaW50bHZfY3RsCisgIHNldGVudiBod2NvbmZpZyAiZnNsX2RkcjpiYW5rX2ludGx2PW51bGwiCiAKICAgIyBiYW5rKGNoaXAtc2VsZWN0KSBpbnRlcmxlYXZpbmcgY3MwK2NzMQotICBzZXRlbnYgYmFfaW50bHZfY3RsIDB4NDAgb3Igc2V0ZW52IGJhX2ludGx2X2N0bCBjczBfY3MxCisgIHNldGVudiBod2NvbmZpZyAiZnNsX2RkcjpiYW5rX2ludGx2PWNzMF9jczEiCiAKICAgIyBiYW5rKGNoaXAtc2VsZWN0KSBpbnRlcmxlYXZpbmcgY3MyK2NzMwotICBzZXRlbnYgYmFfaW50bHZfY3RsIDB4MjAgb3Igc2V0ZW52IGJhX2ludGx2X2N0bCBjczJfY3MzCisgIHNldGVudiBod2NvbmZpZyAiZnNsX2RkcjpiYW5rX2ludGx2PWNzMl9jczMiCiAKICAgIyBiYW5rKGNoaXAtc2VsZWN0KSBpbnRlcmxlYXZpbmcgKGNzMCtjczEpIGFuZCAoY3MyK2NzMykgICgyeDIpCi0gIHNldGVudiBiYV9pbnRsdl9jdGwgMHg2MCBvciBzZXRlbnYgYmFfaW50bHZfY3RsIGNzMF9jczFfYW5kX2NzMl9jczMKKyAgc2V0ZW52IGh3Y29uZmlnICJmc2xfZGRyOmJhbmtfaW50bHY9Y3MwX2NzMV9hbmRfY3MyX2NzMyIKIAogICAjIGJhbmsoY2hpcC1zZWxlY3QpIGludGVybGVhdmluZyAoY3MwK2NzMStjczIrY3MzKSAoNHgxKQotICBzZXRlbnYgYmFfaW50bHZfY3RsIDB4MDQgb3Igc2V0ZW52IGJhX2ludGx2X2N0bCBjczBfY3MxX2NzMl9jczMKKyAgc2V0ZW52IGh3Y29uZmlnICJmc2xfZGRyOmJhbmtfaW50bHY9Y3MwX2NzMV9jczJfY3MzIgorCitNZW1vcnkgY29udHJvbGxlciBhZGRyZXNzIGhhc2hpbmcKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KK0lmIHRoZSBERFIgY29udHJvbGxlciBzdXBwb3J0cyBhZGRyZXNzIGhhc2hpbmcsIGl0IGNhbiBiZSBlbmFibGVkIGJ5IGh3Y29uZmlnLgorCitTeW50YXggaXM6Citod2NvbmZpZz1mc2xfZGRyOmFkZHJfaGFzaD10cnVlCisKK0NvbWJpbmF0aW9uIG9mIGh3Y29uZmlnCis9PT09PT09PT09PT09PT09PT09PT09PQorSHdjb25maWcgY2FuIGJlIGNvbWJpbmVkIHdpdGggbXVsdGlwbGUgcGFyYW1ldGVycywgZm9yIGV4YW1wbGUsIG9uIGEgc3VwcG9ydGVkCitwbGF0Zm9ybQorCitod2NvbmZpZz1mc2xfZGRyOmFkZHJfaGFzaD10cnVlLGN0bHJfaW50bHY9Y2FjaGVsaW5lLGJhbmtfaW50bHY9Y3MwX2NzMV9jczJfY3MzCmRpZmYgLS1naXQgYS9kb2MvbWtpbWFnZS4xIGIvZG9jL21raW1hZ2UuMQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OTg1ZjVhCi0tLSAvZGV2L251bGwKKysrIGIvZG9jL21raW1hZ2UuMQpAQCAtMCwwICsxLDExOCBAQAorLlRIIE1LSU1BR0UgMSAiMjAxMC0wNS0xNiIKKworLlNIIE5BTUUKK21raW1hZ2UgXC0gR2VuZXJhdGUgaW1hZ2UgZm9yIFUtQm9vdAorLlNIIFNZTk9QU0lTCisuQiBta2ltYWdlCisuUkIgW1xmSW9wdGlvbnNcZlBdCisuU0ggIkRFU0NSSVBUSU9OIgorVGhlCisuQiBta2ltYWdlCitjb21tYW5kIGlzIHVzZWQgdG8gY3JlYXRlIGltYWdlcyBmb3IgdXNlIHdpdGggdGhlIFUtQm9vdCBib290IGxvYWRlci4KK1RoZXMgZWltYWdlcyBjYW4gY29udGFpbiB0aGUgbGludXgga2VybmVsLCBkZXZpY2UgdHJlZSBibG9iLCByb290IGZpbGUKK3N5c3RlbSBpbWFnZSwgZmlybXdhcmUgaW1hZ2VzIGV0Yy4sIGVpdGhlciBzZXBhcmF0ZSBvciBjb21iaW5lZC4KKworLkIgbWtpbWFnZQorc3VwcG9ydHMgdHdvIGRpZmZlcmVudCBmb3JtYXRzOgorCitUaGUgb2xkLAorLkkgbGVnYWN5IGltYWdlCitmb3JtYXQgY29uY2F0ZW5hdGVzIHRoZSBpbmRpdmlkdWFsIHBhcnRzIChmb3IgZXhhbXBsZSwga2VybmVsIGltYWdlLAorZGV2aWNlIHRyZWUgYmxvYiBhbmQgcmFtZGlzayBpbWFnZSkgYW5kIGFkZHMgYSA2NCBieXRlcyBoZWFkZXIKK2NvbnRhaW5pbmcgaW5mb3JtYXRpb24gYWJvdXQgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgb3BlcmF0aW5nIHN5c3RlbSwKK2ltYWdlIHR5cGUsIGNvbXByZXNzaW9uIG1ldGhvZCwgZW50cnkgcG9pbnRzLCB0aW1lIHN0YW1wLCBjaGVja3N1bXMsCitldGMuCisKK1RoZSBuZXcsCisuSSBGSVQgKEZsYXR0ZW5lZCBJbWFnZSBUcmVlKSBmb3JtYXQKK2FsbG93cyBmb3IgbW9yZSBmbGV4aWJpbGl0eSBpbiBoYW5kbGluZyBpbWFnZXMgb2YgdmFyaW91cyBhbmQgYWxzbworZW5oYW5jZXMgaW50ZWdyaXR5IHByb3RlY3Rpb24gb2YgaW1hZ2VzIHdpdGggc3Ryb25nZXIgY2hlY2tzdW1zLgorCisuU0ggIk9QVElPTlMiCisKKy5CIExpc3QgaW1hZ2UgaW5mb3JtYXRpb246CisKKy5UUAorLkJJICJcLWwgWyIgInVpbWFnZSBmaWxlIG5hbWUiICJdIgorbWtpbWFnZSBsaXN0cyB0aGUgaW5mb3JtYXRpb24gY29udGFpbmVkIGluIHRoZSBoZWFkZXIgb2YgYW4gZXhpc3RpbmcgVS1Cb290IGltYWdlLgorCisuUAorLkIgQ3JlYXRlIG9sZCBsZWdhY3kgaW1hZ2U6CisKKy5UUAorLkJJICJcLUEgWyIgImFyY2hpdGVjdHVyZSIgIl0iCitTZXQgYXJjaGl0ZWN0dXJlLiBQYXNzIC1oIGFzIHRoZSBhcmNoaXRlY3R1cmUgdG8gc2VlIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLgorCisuVFAKKy5CSSAiXC1PIFsiICJvcyIgIl0iCitTZXQgb3BlcmF0aW5nIHN5c3RlbS4gYm9vdG0gY29tbWFuZCBvZiB1LWJvb3QgY2hhbmdlcyBib290IG1ldGhvZCBieSBvcyB0eXBlLgorUGFzcyAtaCBhcyB0aGUgT1MgdG8gc2VlIHRoZSBsaXN0IG9mIHN1cHBvcnRlZCBPUy4KKworLlRQCisuQkkgIlwtVCBbIiAiaW1hZ2UgdHlwZSIgIl0iCitTZXQgaW1hZ2UgdHlwZS4KK1Bhc3MgLWggYXMgdGhlIGltYWdlIHRvIHNlZSB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgaW1hZ2UgdHlwZS4KKworLlRQCisuQkkgIlwtQyBbIiAiY29tcHJlc3Npb24gdHlwZSIgIl0iCitTZXQgY29tcHJlc3Npb24gdHlwZS4KK1Bhc3MgLWggYXMgdGhlIGNvbXByZXNzaW9uIHRvIHNlZSB0aGUgbGlzdCBvZiBzdXBwb3J0ZWQgY29tcHJlc3Npb24gdHlwZS4KKworLlRQCisuQkkgIlwtYSBbIiAibG9hZCBhZGRlc3MiICJdIgorU2V0IGxvYWQgYWRkcmVzcyB3aXRoIGEgaGV4IG51bWJlci4KKworLlRQCisuQkkgIlwtZSBbIiAiZW50cnkgcG9pbnQiICJdIgorU2V0IGVudHJ5IHBvaW50IHdpdGggYSBoZXggbnVtYmVyLgorCisuVFAKKy5CSSAiXC1uIFsiICJpbWFnZSBuYW1lIiAiXSIKK1NldCBpbWFnZSBuYW1lIHRvICdpbWFnZSBuYW1lJy4KKworLlRQCisuQkkgIlwtZCBbIiAiaW1hZ2UgZGF0YSBmaWxlIiAiXSIKK1VzZSBpbWFnZSBkYXRhIGZyb20gJ2ltYWdlIGRhdGEgZmlsZScuCisKKy5UUAorLkJJICJcLXgiCitTZXQgWElQIChleGVjdXRlIGluIHBsYWNlKSBmbGFnLgorCisuUAorLkIgQ3JlYXRlIEZJVCBpbWFnZToKKworLlRQCisuQkkgIlwtRCAiZHRjIG9wdGlvbiIKK1Byb3ZpZGUgc3BlY2lhbCBvcHRpb25zIHRvIHRoZSBkZXZpY2UgdHJlZSBjb21waWxlciB0aGF0IGlzIHVzZWQgdG8KK2NyZWF0ZSB0aGUgaW1hZ2UuCisKKy5UUAorLkJJICJcLWYgImZpdC1pbWFnZS5pdHMiCitJbWFnZSB0cmVlIHNvdXJjZSBmaW5lIHRoYXQgZGVzY2JyZXMgdGhlIHN0cnVjdHVyZSBhbmQgY29udGVudHMgb2YgdGhlCitGSVQgaW1hZ2UuCisKKy5TSCBFWE1BUExFUworCitMaXN0IGltYWdlIGluZm9ybWF0aW9uOgorLm5mCisuQiBta2ltYWdlIC1sIHVJbWFnZQorLmZpCisuUAorQ3JlYXRlIGxlZ2FjeSBpbWFnZSB3aXRoIGNvbXByZXNzZWQgUG93ZXJQQyBMaW51eCBrZXJuZWw6CisubmYKKy5CIG1raW1hZ2UgLUEgcG93ZXJwYyAtTyBsaW51eCAtVCBrZXJuZWwgLUMgZ3ppcCBcXFxcCisuYnIKKy5CIC1hIDAgLWUgMCAtbiBMaW51eCAtZCB2bWxpbnV4Lmd6IHVJbWFnZQorLmZpCisuUAorQ3JlYXRlIEZJVCBpbWFnZSB3aXRoIGNvbXByZXNzZWQgUG93ZXJQQyBMaW51eCBrZXJuZWw6CisubmYKKy5CIG1raW1hZ2UgLWYga2VybmVsLml0cyBrZXJuZWwuaXRiCisuZmkKKworLlNIIEhPTUVQQUdFCitodHRwOi8vd3d3LmRlbnguZGUvd2lraS9VLUJvb3QvV2ViSG9tZQorLlBQCisuU0ggQVVUSE9SCitUaGlzIG1hbnVhbCBwYWdlIHdhcyB3cml0dGVuIGJ5IE5vYnVoaXJvIEl3YW1hdHN1IDxpd2FtYXRzdUBuaWdhdXJpLm9yZz4KK2FuZCBXb2xmZ2FuZyBEZW5rIDx3ZEBkZW54LmRlPgpkaWZmIC0tZ2l0IGEvZHJpdmVycy9pMmMvb21hcDI0eHhfaTJjLmMgYi9kcml2ZXJzL2kyYy9vbWFwMjR4eF9pMmMuYwppbmRleCAzMjU2MTMzLi43Yzk4ZjE1IDEwMDY0NAotLS0gYS9kcml2ZXJzL2kyYy9vbWFwMjR4eF9pMmMuYworKysgYi9kcml2ZXJzL2kyYy9vbWFwMjR4eF9pMmMuYwpAQCAtMjcsNiArMjcsOCBAQAogCiAjaW5jbHVkZSAib21hcDI0eHhfaTJjLmgiCiAKKyNkZWZpbmUgSTJDX1RJTUVPVVQJMTAKKwogc3RhdGljIHZvaWQgd2FpdF9mb3JfYmIgKHZvaWQpOwogc3RhdGljIHUxNiB3YWl0X2Zvcl9waW4gKHZvaWQpOwogc3RhdGljIHZvaWQgZmx1c2hfZmlmbyh2b2lkKTsKQEAgLTQxLDYgKzQzLDcgQEAKIAlpbnQgcHNjLCBmc3NjbGwsIGZzc2NsaDsKIAlpbnQgaHNzY2xsID0gMCwgaHNzY2xoID0gMDsKIAl1MzIgc2NsbCwgc2NsaDsKKwlpbnQgdGltZW91dCA9IEkyQ19USU1FT1VUOwogCiAJLyogT25seSBoYW5kbGUgc3RhbmRhcmQsIGZhc3QgYW5kIGhpZ2ggc3BlZWRzICovCiAJaWYgKChzcGVlZCAhPSBPTUFQX0kyQ19TVEFOREFSRCkgJiYKQEAgLTEwMiwxNSArMTA1LDI0IEBACiAJCXNjbGggPSAodW5zaWduZWQgaW50KWZzc2NsaDsKIAl9CiAKLQl3cml0ZXcoMHgyLCAmaTJjX2Jhc2UtPnN5c2MpOyAvKiBmb3IgRVMyIGFmdGVyIHNvZnQgcmVzZXQgKi8KLQl1ZGVsYXkoMTAwMCk7Ci0Jd3JpdGV3KDB4MCwgJmkyY19iYXNlLT5zeXNjKTsgLyogd2lsbCBwcm9iYWJseSBzZWxmIGNsZWFyIGJ1dCAqLwotCiAJaWYgKHJlYWR3ICgmaTJjX2Jhc2UtPmNvbikgJiBJMkNfQ09OX0VOKSB7CiAJCXdyaXRldyAoMCwgJmkyY19iYXNlLT5jb24pOwogCQl1ZGVsYXkgKDUwMDAwKTsKIAl9CiAKKwl3cml0ZXcoMHgyLCAmaTJjX2Jhc2UtPnN5c2MpOyAvKiBmb3IgRVMyIGFmdGVyIHNvZnQgcmVzZXQgKi8KKwl1ZGVsYXkoMTAwMCk7CisKKwl3cml0ZXcoSTJDX0NPTl9FTiwgJmkyY19iYXNlLT5jb24pOworCXdoaWxlICghKHJlYWR3KCZpMmNfYmFzZS0+c3lzcykgJiBJMkNfU1lTU19SRE9ORSkgJiYgdGltZW91dC0tKSB7CisJCWlmICh0aW1lb3V0IDw9IDApIHsKKwkJCXByaW50ZigiRVJST1I6IFRpbWVvdXQgaW4gc29mdC1yZXNldFxuIik7CisJCQlyZXR1cm47CisJCX0KKwkJdWRlbGF5KDEwMDApOworCX0KKworCXdyaXRldygwLCAmaTJjX2Jhc2UtPmNvbik7CiAJd3JpdGV3KHBzYywgJmkyY19iYXNlLT5wc2MpOwogCXdyaXRldyhzY2xsLCAmaTJjX2Jhc2UtPnNjbGwpOwogCXdyaXRldyhzY2xoLCAmaTJjX2Jhc2UtPnNjbGgpOwpAQCAtMTU5LDE1ICsxNzEsMTQgQEAKIAl9CiAKIAlpZiAoIWkyY19lcnJvcikgewotCQkvKiBmcmVlIGJ1cywgb3RoZXJ3aXNlIHdlIGNhbid0IHVzZSBhIGNvbWJpbmVkIHRyYW5zY3Rpb24gKi8KLQkJd3JpdGV3ICgwLCAmaTJjX2Jhc2UtPmNvbik7Ci0JCXdoaWxlIChyZWFkdyAoJmkyY19iYXNlLT5zdGF0KSB8fCAocmVhZHcgKCZpMmNfYmFzZS0+Y29uKSAmIEkyQ19DT05fTVNUKSkgeworCQl3cml0ZXcgKEkyQ19DT05fRU4sICZpMmNfYmFzZS0+Y29uKTsKKwkJd2hpbGUgKHJlYWR3KCZpMmNfYmFzZS0+c3RhdCkgJgorCQkJKEkyQ19TVEFUX1hSRFkgfCBJMkNfU1RBVF9BUkRZKSkgewogCQkJdWRlbGF5ICgxMDAwMCk7CiAJCQkvKiBIYXZlIHRvIGNsZWFyIHBlbmRpbmcgaW50ZXJydXB0IHRvIGNsZWFyIEkyQ19TVEFUICovCiAJCQl3cml0ZXcgKDB4RkZGRiwgJmkyY19iYXNlLT5zdGF0KTsKIAkJfQogCi0JCXdhaXRfZm9yX2JiICgpOwogCQkvKiBzZXQgc2xhdmUgYWRkcmVzcyAqLwogCQl3cml0ZXcgKGRldmFkZHIsICZpMmNfYmFzZS0+c2EpOwogCQkvKiByZWFkIG9uZSBieXRlIGZyb20gc2xhdmUgKi8KQEAgLTE5MSw4ICsyMDIsOCBAQAogCiAJCWlmICghaTJjX2Vycm9yKSB7CiAJCQl3cml0ZXcgKEkyQ19DT05fRU4sICZpMmNfYmFzZS0+Y29uKTsKLQkJCXdoaWxlIChyZWFkdyAoJmkyY19iYXNlLT5zdGF0KQotCQkJICAgICAgIHx8IChyZWFkdyAoJmkyY19iYXNlLT5jb24pICYgSTJDX0NPTl9NU1QpKSB7CisJCQl3aGlsZSAocmVhZHcgKCZpMmNfYmFzZS0+c3RhdCkgJgorCQkJCShJMkNfU1RBVF9SUkRZIHwgSTJDX1NUQVRfQVJEWSkpIHsKIAkJCQl1ZGVsYXkgKDEwMDAwKTsKIAkJCQl3cml0ZXcgKDB4RkZGRiwgJmkyY19iYXNlLT5zdGF0KTsKIAkJCX0KZGlmZiAtLWdpdCBhL2RyaXZlcnMvaTJjL29tYXAyNHh4X2kyYy5oIGIvZHJpdmVycy9pMmMvb21hcDI0eHhfaTJjLmgKaW5kZXggOTJhMzQxNi4uNjUwZTMzYSAxMDA2NDQKLS0tIGEvZHJpdmVycy9pMmMvb21hcDI0eHhfaTJjLmgKKysrIGIvZHJpdmVycy9pMmMvb21hcDI0eHhfaTJjLmgKQEAgLTg1LDYgKzg1LDEwIEBACiAjZGVmaW5lIEkyQ19TWVNURVNUX1NEQV9JCSgxIDw8IDEpICAvKiBTREEgbGluZSBzZW5zZSBpbnB1dCB2YWx1ZSAqLwogI2RlZmluZSBJMkNfU1lTVEVTVF9TREFfTwkoMSA8PCAwKSAgLyogU0RBIGxpbmUgZHJpdmUgb3V0cHV0IHZhbHVlICovCiAKKy8qIEkyQyBTeXN0ZW0gU3RhdHVzIFJlZ2lzdGVyIChJMkNfU1lTUyk6ICovCisKKyNkZWZpbmUgSTJDX1NZU1NfUkRPTkUgICAgICAgICAgKDEgPDwgMCkgIC8qIEludGVybmVsIHJlc2V0IG1vbml0b3JpbmcgKi8KKwogI2RlZmluZSBJMkNfU0NMTF9TQ0xMCQkwCiAjZGVmaW5lIEkyQ19TQ0xMX1NDTExfTQkJMHhGRgogI2RlZmluZSBJMkNfU0NMTF9IU1NDTEwJCTgKZGlmZiAtLWdpdCBhL2RyaXZlcnMvbXRkL2NmaV9mbGFzaC5jIGIvZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMKaW5kZXggMzI2N2M1ZC4uMmQwOWNhZiAxMDA2NDQKLS0tIGEvZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMKKysrIGIvZHJpdmVycy9tdGQvY2ZpX2ZsYXNoLmMKQEAgLTE5OTMsNyArMTk5Myw3IEBACiAjaWZkZWYgQ09ORklHX1NZU19GTEFTSF9QUk9URUNUSU9OCiAJLyogcmVhZCBlbnZpcm9ubWVudCBmcm9tIEVFUFJPTSAqLwogCWNoYXIgc1s2NF07Ci0JZ2V0ZW52X3IgKCJ1bmxvY2siLCBzLCBzaXplb2YocykpOworCWdldGVudl9mKCJ1bmxvY2siLCBzLCBzaXplb2YocykpOwogI2VuZGlmCiAKICNkZWZpbmUgQkFOS19CQVNFKGkpCSgoKHBoeXNfYWRkcl90IFtDRklfTUFYX0ZMQVNIX0JBTktTXSlDT05GSUdfU1lTX0ZMQVNIX0JBTktTX0xJU1QpW2ldKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9uZXQvbXBjNXh4eF9mZWMuYyBiL2RyaXZlcnMvbmV0L21wYzV4eHhfZmVjLmMKaW5kZXggMTY4MWUyNi4uNGExYzhlNiAxMDA2NDQKLS0tIGEvZHJpdmVycy9uZXQvbXBjNXh4eF9mZWMuYworKysgYi9kcml2ZXJzL25ldC9tcGM1eHh4X2ZlYy5jCkBAIC05MTMsNyArOTEzLDcgQEAKIAlkZXYtPnNlbmQgPSBtcGM1eHh4X2ZlY19zZW5kOwogCWRldi0+cmVjdiA9IG1wYzV4eHhfZmVjX3JlY3Y7CiAKLQlzcHJpbnRmKGRldi0+bmFtZSwgIkZFQyBFVEhFUk5FVCIpOworCXNwcmludGYoZGV2LT5uYW1lLCAiRkVDIik7CiAJZXRoX3JlZ2lzdGVyKGRldik7CiAKICNpZiBkZWZpbmVkKENPTkZJR19NSUkpIHx8IGRlZmluZWQoQ09ORklHX0NNRF9NSUkpCmRpZmYgLS1naXQgYS9kcml2ZXJzL3Bvd2VyL01ha2VmaWxlIGIvZHJpdmVycy9wb3dlci9NYWtlZmlsZQppbmRleCBkZDA2NTE0Li5kYjUzMTczIDEwMDY0NAotLS0gYS9kcml2ZXJzL3Bvd2VyL01ha2VmaWxlCisrKyBiL2RyaXZlcnMvcG93ZXIvTWFrZWZpbGUKQEAgLTI2LDYgKzI2LDcgQEAKIExJQiAJOj0gJChvYmopbGlicG93ZXIuYQogCiBDT0JKUy0kKENPTkZJR19UV0w0MDMwX1BPV0VSKQkrPSB0d2w0MDMwLm8KK0NPQkpTLSQoQ09ORklHX1RXTDYwMzBfUE9XRVIpCSs9IHR3bDYwMzAubwogCiBDT0JKUwk6PSAkKENPQkpTLXkpCiBTUkNTIAk6PSAkKENPQkpTOi5vPS5jKQpkaWZmIC0tZ2l0IGEvZHJpdmVycy9wb3dlci90d2w2MDMwLmMgYi9kcml2ZXJzL3Bvd2VyL3R3bDYwMzAuYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjFkYTZiCi0tLSAvZGV2L251bGwKKysrIGIvZHJpdmVycy9wb3dlci90d2w2MDMwLmMKQEAgLTAsMCArMSw3OCBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogVGV4YXMgSW5zdHJ1bWVudHMsIDx3d3cudGkuY29tPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisjaW5jbHVkZSA8Y29uZmlnLmg+CisjaWZkZWYgQ09ORklHX1RXTDYwMzBfUE9XRVIKKworI2luY2x1ZGUgPHR3bDYwMzAuaD4KKworLyogRnVuY3Rpb25zIHRvIHJlYWQgYW5kIHdyaXRlIGZyb20gVFdMNjAzMCAqLworc3RhdGljIGlubGluZSBpbnQgdHdsNjAzMF9pMmNfd3JpdGVfdTgodTggY2hpcF9ubywgdTggdmFsLCB1OCByZWcpCit7CisJcmV0dXJuIGkyY193cml0ZShjaGlwX25vLCByZWcsIDEsICZ2YWwsIDEpOworfQorCitzdGF0aWMgaW5saW5lIGludCB0d2w2MDMwX2kyY19yZWFkX3U4KHU4IGNoaXBfbm8sIHU4ICp2YWwsIHU4IHJlZykKK3sKKwlyZXR1cm4gaTJjX3JlYWQoY2hpcF9ubywgcmVnLCAxLCB2YWwsIDEpOworfQorCit2b2lkIHR3bDYwMzBfc3RhcnRfdXNiX2NoYXJnaW5nKHZvaWQpCit7CisJdHdsNjAzMF9pMmNfd3JpdGVfdTgoVFdMNjAzMF9DSElQX0NIQVJHRVIsIENIQVJHRVJVU0JfVklDSFJHXzE1MDAsCisJCQkJCQkJQ0hBUkdFUlVTQl9WSUNIUkcpOworCXR3bDYwMzBfaTJjX3dyaXRlX3U4KFRXTDYwMzBfQ0hJUF9DSEFSR0VSLCBDSEFSR0VSVVNCX0NJTl9MSU1JVF9OT05FLAorCQkJCQkJCUNIQVJHRVJVU0JfQ0lOTElNSVQpOworCXR3bDYwMzBfaTJjX3dyaXRlX3U4KFRXTDYwMzBfQ0hJUF9DSEFSR0VSLCBNQkFUX1RFTVAsCisJCQkJCQkJQ09OVFJPTExFUl9JTlRfTUFTSyk7CisJdHdsNjAzMF9pMmNfd3JpdGVfdTgoVFdMNjAzMF9DSElQX0NIQVJHRVIsIE1BU0tfTUNIQVJHRVJVU0JfVEhNUkVHLAorCQkJCQkJCUNIQVJHRVJVU0JfSU5UX01BU0spOworCXR3bDYwMzBfaTJjX3dyaXRlX3U4KFRXTDYwMzBfQ0hJUF9DSEFSR0VSLCBDSEFSR0VSVVNCX1ZPUkVHXzRQMCwKKwkJCQkJCQlDSEFSR0VSVVNCX1ZPUkVHKTsKKwl0d2w2MDMwX2kyY193cml0ZV91OChUV0w2MDMwX0NISVBfQ0hBUkdFUiwgQ0hBUkdFUlVTQl9DVFJMMl9WSVRFUk1fMTAwLAorCQkJCQkJCUNIQVJHRVJVU0JfQ1RSTDIpOworCS8qIEVuYWJsZSBVU0IgY2hhcmdpbmcgKi8KKwl0d2w2MDMwX2kyY193cml0ZV91OChUV0w2MDMwX0NISVBfQ0hBUkdFUiwgQ09OVFJPTExFUl9DVFJMMV9FTl9DSEFSR0VSLAorCQkJCQkJCUNPTlRST0xMRVJfQ1RSTDEpOworCXJldHVybjsKK30KKwordm9pZCB0d2w2MDMwX2luaXRfYmF0dGVyeV9jaGFyZ2luZyh2b2lkKQoreworCXR3bDYwMzBfc3RhcnRfdXNiX2NoYXJnaW5nKCk7CisJcmV0dXJuOworfQorCit2b2lkIHR3bDYwMzBfdXNiX2RldmljZV9zZXR0aW5ncygpCit7CisJdTggZGF0YSA9IDA7CisKKwkvKiBTZWxlY3QgQVBQIEdyb3VwIGFuZCBzZXQgc3RhdGUgdG8gT04gKi8KKwl0d2w2MDMwX2kyY193cml0ZV91OChUV0w2MDMwX0NISVBfUE0sIDB4MjEsIFZVU0JfQ0ZHX1NUQVRFKTsKKworCXR3bDYwMzBfaTJjX3JlYWRfdTgoVFdMNjAzMF9DSElQX1BNLCAmZGF0YSwgTUlTQzIpOworCWRhdGEgfD0gMHgxMDsKKworCS8qIFNlbGVjdCB0aGUgaW5wdXQgc3VwcGx5IGZvciBWQlVTIHJlZ3VsYXRvciAqLworCXR3bDYwMzBfaTJjX3dyaXRlX3U4KFRXTDYwMzBfQ0hJUF9QTSwgZGF0YSwgTUlTQzIpOworfQorI2VuZGlmCmRpZmYgLS1naXQgYS9kcml2ZXJzL3VzYi9tdXNiL29tYXAzLmMgYi9kcml2ZXJzL3VzYi9tdXNiL29tYXAzLmMKaW5kZXggYTk4MzU1Mi4uYzc4NzZlZCAxMDA2NDQKLS0tIGEvZHJpdmVycy91c2IvbXVzYi9vbWFwMy5jCisrKyBiL2RyaXZlcnMvdXNiL211c2Ivb21hcDMuYwpAQCAtMzEsNiArMzEsNyBAQAogICovCiAKICNpbmNsdWRlIDx0d2w0MDMwLmg+CisjaW5jbHVkZSA8dHdsNjAzMC5oPgogI2luY2x1ZGUgIm9tYXAzLmgiCiAKIHN0YXRpYyBpbnQgcGxhdGZvcm1fbmVlZHNfaW5pdGlhbGl6YXRpb24gPSAxOwpAQCAtNjUsNyArNjYsMTIgQEAKIAogI2RlZmluZSBPTUFQM19PVEdfU1lTU1RBVFVTX1JFU0VURE9ORQkJCTB4MDAwMQogCisvKiBPTUFQNDQzMCBoYXMgYW4gaW50ZXJuYWwgUEhZLCB1c2UgaXQgKi8KKyNpZmRlZiBDT05GSUdfT01BUDQ0MzAKKyNkZWZpbmUgT01BUDNfT1RHX0lOVEVSRlNFTF9PTUFQCQkJMHgwMDAwCisjZWxzZQogI2RlZmluZSBPTUFQM19PVEdfSU5URVJGU0VMX09NQVAJCQkweDAwMDEKKyNlbmRpZgogCiAjZGVmaW5lIE9NQVAzX09UR19GT1JDRVNUREJZX1NUQU5EQlkJCQkweDAwMDEKIApAQCAtMTA1LDYgKzExMSwxMSBAQAogCQkJZ290byBlbmQ7CiAJCX0KICNlbmRpZgorCisjaWZkZWYgQ09ORklHX1RXTDYwMzBfUE9XRVIKKwkJdHdsNjAzMF91c2JfZGV2aWNlX3NldHRpbmdzKCk7CisjZW5kaWYKKwogCQlvdGcgPSAoc3RydWN0IG9tYXAzX290Z19yZWdzICopT01BUDNfT1RHX0JBU0U7CiAKIAkJLyogU2V0IE9URyB0byBhbHdheXMgYmUgb24gKi8KQEAgLTEyMiw2ICsxMzMsMTEgQEAKICNpZmRlZiBDT05GSUdfT01BUDNfRVZNCiAJCW11c2JfY2ZnLmV4dHZidXMgPSBvbWFwM19ldm1fbmVlZF9leHR2YnVzKCk7CiAjZW5kaWYKKworI2lmZGVmIENPTkZJR19PTUFQNDQzMAorCQl1MzIgKnVzYm90Z2hzX2NvbnRyb2wgPSAodTMyICopKENUUkxfQkFTRSArIDB4MzNDKTsKKwkJKnVzYm90Z2hzX2NvbnRyb2wgPSAweDE1OworI2VuZGlmCiAJCXBsYXRmb3JtX25lZWRzX2luaXRpYWxpemF0aW9uID0gMDsKIAl9CiAKZGlmZiAtLWdpdCBhL2RyaXZlcnMvdXNiL211c2Ivb21hcDMuaCBiL2RyaXZlcnMvdXNiL211c2Ivb21hcDMuaAppbmRleCAyODg2ZDdlLi5iMmFjZGY0IDEwMDY0NAotLS0gYS9kcml2ZXJzL3VzYi9tdXNiL29tYXAzLmgKKysrIGIvZHJpdmVycy91c2IvbXVzYi9vbWFwMy5oCkBAIC0zMSwxMCArMzEsMTEgQEAKICNpZm5kZWYgX01VU0JfT01BUDNfSF8KICNkZWZpbmUgX01VU0JfT01BUDNfSF8KIAorI2luY2x1ZGUgPGFzbS9hcmNoL2NwdS5oPgogI2luY2x1ZGUgIm11c2JfY29yZS5oIgogCiAvKiBCYXNlIGFkZHJlc3Mgb2YgTVVTQiByZWdpc3RlcnMgKi8KLSNkZWZpbmUgTUVOVE9SX1VTQjBfQkFTRSAoT01BUDM0WFhfQ09SRV9MNF9JT19CQVNFICsgMHhBQjAwMCkKKyNkZWZpbmUgTUVOVE9SX1VTQjBfQkFTRSBNVVNCX0JBU0UKIAogLyogQmFzZSBhZGRyZXNzIG9mIE9URyByZWdpc3RlcnMgKi8KICNkZWZpbmUgT01BUDNfT1RHX0JBU0UgKE1FTlRPUl9VU0IwX0JBU0UgKyAweDQwMCkKZGlmZiAtLWdpdCBhL2ZzL2V4dDIvZXh0MmZzLmMgYi9mcy9leHQyL2V4dDJmcy5jCmluZGV4IDRiMzkxZDYuLmE4OGNmODcgMTAwNjQ0Ci0tLSBhL2ZzL2V4dDIvZXh0MmZzLmMKKysrIGIvZnMvZXh0Mi9leHQyZnMuYwpAQCAtMzY0LDcgKzM2NCw3IEBACiAJCQlpbmRpcjJfc2l6ZSA9IGJsa3N6OwogCQl9CiAJCWlmICgoX19sZTMyX3RvX2NwdSAoaW5kaXIxX2Jsb2NrW3JibG9jayAvIHBlcmJsb2NrXSkgPDwKLQkJICAgICBsb2cyX2Jsa3N6KSAhPSBpbmRpcjFfYmxrbm8pIHsKKwkJICAgICBsb2cyX2Jsa3N6KSAhPSBpbmRpcjJfYmxrbm8pIHsKIAkJCXN0YXR1cyA9IGV4dDJmc19kZXZyZWFkIChfX2xlMzJfdG9fY3B1KGluZGlyMV9ibG9ja1tyYmxvY2sgLyBwZXJibG9ja10pIDw8IGxvZzJfYmxrc3osCiAJCQkJCQkgMCwgYmxrc3osCiAJCQkJCQkgKGNoYXIgKikgaW5kaXIyX2Jsb2NrKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29tbW9uLmggYi9pbmNsdWRlL2NvbW1vbi5oCmluZGV4IGVkZGVjMjIuLjZhNzllYzIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29tbW9uLmgKKysrIGIvaW5jbHVkZS9jb21tb24uaApAQCAtMjU2LDcgKzI1Niw3IEBACiB2b2lkCWVudl9yZWxvY2F0ZSAodm9pZCk7CiBpbnQJZW52bWF0Y2ggICAgICh1Y2hhciAqLCBpbnQpOwogY2hhcgkqZ2V0ZW52CSAgICAgKGNoYXIgKik7Ci1pbnQJZ2V0ZW52X3IgICAgIChjaGFyICpuYW1lLCBjaGFyICpidWYsIHVuc2lnbmVkIGxlbik7CitpbnQJZ2V0ZW52X2YgICAgIChjaGFyICpuYW1lLCBjaGFyICpidWYsIHVuc2lnbmVkIGxlbik7CiBpbnQJc2F2ZWVudgkgICAgICh2b2lkKTsKICNpZmRlZiBDT05GSUdfUFBDCQkvKiBBUk0gdmVyc2lvbiB0byBiZSBmaXhlZCEgKi8KIGludCBpbmxpbmUgc2V0ZW52ICAgKGNoYXIgKiwgY2hhciAqKTsKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9LVVA0Sy5oIGIvaW5jbHVkZS9jb25maWdzL0tVUDRLLmgKaW5kZXggYTgyOTk4NC4uMTRkNDEyZCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0tVUDRLLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0tVUDRLLmgKQEAgLTEsNSArMSw1IEBACiAvKgotICogKEMpIENvcHlyaWdodCAyMDAwLTIwMDUKKyAgKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAxMAogICogV29sZmdhbmcgRGVuaywgREVOWCBTb2Z0d2FyZSBFbmdpbmVlcmluZywgd2RAZGVueC5kZS4KICAqIEtsYXVzIEhleWRlY2ssIEtpZWJhY2sgJiBQZXRlciBHbWJIICYgQ28gS0csIGhleWRlY2tAa2llYmFjay1wZXRlci5kZQogICoKQEAgLTQyLDQ2ICs0Miw0NiBAQAogI3VuZGVmCUNPTkZJR184eHhfQ09OU19TTUMyCiAjdW5kZWYJQ09ORklHXzh4eF9DT05TX05PTkUKICNkZWZpbmUgQ09ORklHX0JBVURSQVRFCQkxMTUyMDAJLyogY29uc29sZSBiYXVkcmF0ZQkJKi8KLSNpZiAwCi0jZGVmaW5lIENPTkZJR19CT09UREVMQVkJLTEJLyogYXV0b2Jvb3QgZGlzYWJsZWQJCSovCi0jZWxzZQogI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTEJLyogYXV0b2Jvb3QgYWZ0ZXIgMSBzZWNvbmQJKi8KLSNlbmRpZgogCiAjZGVmaW5lIENPTkZJR19CT0FSRF9UWVBFUwkxCS8qIHN1cHBvcnQgYm9hcmQgdHlwZXMJCSovCiAKLQogI3VuZGVmCUNPTkZJR19CT09UQVJHUwogCi0KICNkZWZpbmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUwkJCQkJCVwKLSJzbG90X2FfYm9vdD1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L2hkYTIgaXA9b2ZmOyIJCQkJXAotICJydW4gYWRkaHc7IGRpc2tib290IDIwMDAwMCAwOjE7IGJvb3RtIDIwMDAwMFwwIgkJCQlcCi0ic2xvdF9iX2Jvb3Q9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9oZGEyIGlwPW9mZjsiCQkJCVwKLSAicnVuIGFkZGh3OyBkaXNrYm9vdCAyMDAwMDAgMjoxOyBib290bSAyMDAwMDBcMCIJCQkJXAotIm5mc19ib290PWRoY3A7IHJ1biBuZnNhcmdzIGFkZGlwIGFkZGh3OyBib290bSAyMDAwMDBcMCIJCQlcCisic2xvdF9hX2Jvb3Q9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9zZGEyIGlwPW9mZjsiCQkJCVwKKyAicnVuIGFkZGh3OyBtdy5iIDQwMDAwMCAwMCA4MDsgZGlza2Jvb3QgNDAwMDAwIDA6MTsgYm9vdG0gNDAwMDAwXDAiICAgICAgICAgICAgXAorInNsb3RfYl9ib290PXNldGVudiBib290YXJncyByb290PS9kZXYvc2RhMiBpcD1vZmY7IgkJCQlcCisgInJ1biBhZGRodzsgbXcuYiA0MDAwMDAgMDAgODA7IGRpc2tib290IDQwMDAwMCAyOjE7IGJvb3RtIDQwMDAwMFwwIiAgICAgICAgICAgIFwKKyJuZnNfYm9vdD1tdy5iIDQwMDAwMCAwMCA4MDsgZGhjcDsgcnVuIG5mc2FyZ3MgYWRkaXAgYWRkaHc7IGJvb3RtIDQwMDAwMFwwIglcCisiZmF0X2Jvb3Q9bXcuYiA0MDAwMDAgMDAgODA7IGZhdGxvYWQgaWRlIDI6MSA0MDAwMDAgc3QuYmluOyBydW4gYWRkaHc7CQlcCisgYm9vdG0gNDAwMDAwIFwwIgkJCQkJCQkJXAogInBhbmljX2Jvb3Q9ZWNobyBObyBCb290ZGV2aWNlICEhISByZXNldFwwIgkJCQkJXAotIm5mc2FyZ3M9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9uZnMgcncgbmZzcm9vdD0ke3NlcnZlcmlwfToke3Jvb3RwYXRofVwwIglcCisibmZzYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyBuZnNyb290PSR7cm9vdHBhdGh9XDAiCQlcCiAicmFtYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3JhbSByd1wwIgkJCQkJXAotImFkZGlwPXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSBpcD0ke2lwYWRkcn06JHtzZXJ2ZXJpcH06JHtnYXRld2F5aXB9IglcCisiYWRkaXA9c2V0ZW52IGJvb3RhcmdzICR7Ym9vdGFyZ3N9IGlwPSR7aXBhZGRyfTo6JHtnYXRld2F5aXB9IgkJCVwKICAiOiR7bmV0bWFza306JHtob3N0bmFtZX06JHtuZXRkZXZ9Om9mZlwwIgkJCQkJXAotImFkZGh3PXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSBodz0ke2h3fSBrZXkxPSR7a2V5MX0gcGFuaWM9MVwwIgkJXAorImFkZGh3PXNldGVudiBib290YXJncyAke2Jvb3RhcmdzfSAke210ZHBhcnRzfSBjb25zb2xlPSR7Y29uc29sZX0gJHtkZWJ1Z30JXAorIGh3PSR7aHd9IGtleTE9JHtrZXkxfSBwYW5pYz0xIG1lbT0ke21lbX1cMCIJCQkJCVwKKyJjb25zb2xlPXR0eUNQTTAsMTE1MjAwXDAiCQkJCQkJCVwKICJuZXRkZXY9ZXRoMFwwIgkJCQkJCQkJCVwKLSJjb250cmFzdD01NVwwIgkJCQkJCQkJCVwKKyJjb250cmFzdD0yMFwwIgkJCQkJCQkJCVwKICJzaWxlbnQ9MVwwIgkJCQkJCQkJCVwKKyJtdGRwYXJ0cz0iIE1URFBBUlRTX0RFRkFVTFQgIlwwIgkJCQkJCVwKICJsb2FkPXRmdHAgMjAwMDAwIGJvb3Rsb2FkZXItNGsuYml0bWFwO3RmdHAgMTAwMDAwIGJvb3Rsb2FkZXItNGsuYmluXDAiCQlcCi0idXBkYXRlPXByb3RlY3Qgb2ZmIDE6MC03O2VyYSAxOjAtNztjcC5iIDEwMDAwMCA0MDAwMDAwMCAke2ZpbGVzaXplfTsiCQlcCisidXBkYXRlPXByb3RlY3Qgb2ZmIDE6MC05O2VyYSAxOjAtOTtjcC5iIDEwMDAwMCA0MDAwMDAwMCAke2ZpbGVzaXplfTsiCQlcCiAgImNwLmIgMjAwMDAwIDQwMDUwMDAwIDE0MDAwXDAiCiAKICNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5EICBcCi0gICAgInJ1biBzbG90X2FfYm9vdDtydW4gc2xvdF9iX2Jvb3Q7cnVuIG5mc19ib290O3J1biBwYW5pY19ib290IgorICAgICJydW4gZmF0X2Jvb3Q7cnVuIHNsb3RfYl9ib290O3J1biBzbG90X2FfYm9vdDtydW4gbmZzX2Jvb3Q7cnVuIHBhbmljX2Jvb3QiCiAKKyNkZWZpbmUgQ09ORklHX1BSRUJPT1QJInNldGVudiBwcmVib290OyBzYXZlZW52IgogCiAjZGVmaW5lIENPTkZJR19NSVNDX0lOSVRfUgkxCiAjZGVmaW5lIENPTkZJR19NSVNDX0lOSVRfRgkxCiAKICNkZWZpbmUgQ09ORklHX0xPQURTX0VDSE8JMQkvKiBlY2hvIG9uIGZvciBzZXJpYWwgZG93bmxvYWQJKi8KLSN1bmRlZglDT05GSUdfU1lTX0xPQURTX0JBVURfQ0hBTkdFCQkvKiBkb24ndCBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UJKi8KKyN1bmRlZglDT05GSUdfU1lTX0xPQURTX0JBVURfQ0hBTkdFCS8qIGRvbid0IGFsbG93IGJhdWRyYXRlIGNoYW5nZQkqLwogCiAjZGVmaW5lCUNPTkZJR19XQVRDSERPRwkxCQkvKiB3YXRjaGRvZyBlbmFibGVkCQkqLwogCkBAIC05OCwxOSArOTgsMTcgQEAKICNkZWZpbmUgQ09ORklHX0JPT1RQX0JPT1RQQVRICiAjZGVmaW5lIENPTkZJR19CT09UUF9CT09URklMRVNJWkUKIAotCiAjZGVmaW5lIENPTkZJR19NQUNfUEFSVElUSU9OCiAjZGVmaW5lIENPTkZJR19ET1NfUEFSVElUSU9OCiAKLQogLyoKICAqIGVuYWJsZSBJMkMgYW5kIHNlbGVjdCB0aGUgaGFyZHdhcmUvc29mdHdhcmUgZHJpdmVyCiAgKi8KLSN1bmRlZglDT05GSUdfSEFSRF9JMkMJCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0CSovCi0jZGVmaW5lCUNPTkZJR19TT0ZUX0kyQyAgICAgICAgIDEJLyogSTJDIGJpdC1iYW5nZWQJCSovCisjdW5kZWYJQ09ORklHX0hBUkRfSTJDCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0CSovCisjZGVmaW5lCUNPTkZJR19TT0ZUX0kyQyAgICAgICAgIC8qIEkyQyBiaXQtYmFuZ2VkCQkqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfSTJDX1NQRUVECQk5MzAwMAkvKiA5MyBrSHogaXMgc3VwcG9zZWQgdG8gd29yawkqLwotI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TTEFWRQkJMHhGRQorI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TUEVFRAk5MzAwMAkvKiA5MyBrSHogaXMgc3VwcG9zZWQgdG8gd29yayAqLworI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TTEFWRQkweEZFCiAKICNpZmRlZiBDT05GSUdfU09GVF9JMkMKIC8qCkBAIC0xMzAsMTQgKzEyOCwxMiBAQAogI2RlZmluZSBJMkNfREVMQVkJdWRlbGF5KDIpCS8qIDEvNCBJMkMgY2xvY2sgZHVyYXRpb24gKi8KICNlbmRpZgkvKiBDT05GSUdfU09GVF9JMkMgKi8KIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBJMkMgQ29uZmlndXJhdGlvbgogICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19JMkNfUElDSU9fQUREUgkweDIxCS8qIFBDRjg1NzQgSU8gRXhwYW5kZXIJCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0kyQ19SVENfQUREUgkweDUxCS8qIFBDRjg1NjMgUlRDCQkJCSovCi0KKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUElDSU9fQUREUgkweDIxCS8qIFBDRjg1NzQgSU8gRXhwYW5kZXIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfUlRDX0FERFIJCTB4NTEJLyogUENGODU2MyBSVEMgKi8KIAogLyogTGlzdCBvZiBJMkMgYWRkcmVzc2VzIHRvIGJlIHZlcmlmaWVkIGJ5IFBPU1QgKi8KIApAQCAtMTQ1LDI3ICsxNDEsMTMgQEAKIAkJCUNPTkZJR19TWVNfSTJDX1JUQ19BRERSLAlcCiAJCQl9CiAKLQogI2RlZmluZSBDT05GSUdfUlRDX1BDRjg1NjMJCS8qIHVzZSBQaGlsaXBzIFBDRjg1NjMgUlRDCSovCiAKICNkZWZpbmUgQ09ORklHX1NZU19ESVNDT1ZFUl9QSFkKICNkZWZpbmUgQ09ORklHX01JSQogCi0jaWYgMAotI2RlZmluZSBDT05GSUdfRVRIQUREUiAgICAgICAgICAgICAgICAgIDAwOjBCOjY0OjAwOjAwOjAwIC8qIG91ciBPVUkgZnJvbSBJRUVFICovCi0jZW5kaWYKLSNkZWZpbmUgQ09ORklHX0tVUDRLX0xPR08gICAgICAgICAgICAgICAweDQwMDUwMDAwICAvKiBBZGRyZXNzIG9mIGxvZ28gYml0bWFwICovCi0KIC8qIERlZmluZSB0byBhbGxvdyB0aGUgdXNlciB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCi0jaWYgMQotLyogUE9TVCBzdXBwb3J0ICovCi0KLSNkZWZpbmUgQ09ORklHX1BPU1QJCShDT05GSUdfU1lTX1BPU1RfQ1BVCSAgIHwgXAotCQkJCSBDT05GSUdfU1lTX1BPU1RfUlRDCSAgIHwgXAotCQkJCSBDT05GSUdfU1lTX1BPU1RfSTJDKQotI2VuZGlmCi0KIAogLyoKICAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgpAQCAtMTc2LDcgKzE1OCw5IEBACiAjZGVmaW5lIENPTkZJR19DTURfREhDUAogI2RlZmluZSBDT05GSUdfQ01EX0kyQwogI2RlZmluZSBDT05GSUdfQ01EX0lERQorI2RlZmluZSBDT05GSUdfQ01EX01JSQogI2RlZmluZSBDT05GSUdfQ01EX05GUworI2RlZmluZSBDT05GSUdfQ01EX0ZBVAogI2RlZmluZSBDT05GSUdfQ01EX1NOVFAKIAogI2lmZGVmIENPTkZJR19QT1NUCkBAIC0xOTEsMTggKzE3NSwyMSBAQAogI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQogI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQkxMDI0CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLwogI2Vsc2UKLSNkZWZpbmUgQ09ORklHX1NZU19DQlNJWkUJMjU2CQkvKiBDb25zb2xlIEkvTyBCdWZmZXIgU2l6ZQkqLworI2RlZmluZSBDT05GSUdfU1lTX0NCU0laRQk1MTIJCS8qIENvbnNvbGUgSS9PIEJ1ZmZlciBTaXplCSovCiAjZW5kaWYKLSNkZWZpbmUgQ09ORklHX1NZU19QQlNJWkUgKENPTkZJR19TWVNfQ0JTSVpFK3NpemVvZihDT05GSUdfU1lTX1BST01QVCkrMTYpIC8qIFByaW50IEJ1ZmZlciBTaXplICovCisvKiBQcmludCBCdWZmZXIgU2l6ZSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BCU0laRSAoQ09ORklHX1NZU19DQlNJWkUrc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSsxNikKICNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncwkqLwogI2RlZmluZSBDT05GSUdfU1lTX0JBUkdTSVpFCUNPTkZJR19TWVNfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUJKi8KIAotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfU1RBUlQJMHgwMDA0MDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbgkqLwotI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDAwMkMwMDAwMAkvKiA0IC4uLiA0NCBNQiBpbiBEUkFNCSovCisjZGVmaW5lIENPTkZJR19TWVNfTUVNVEVTVF9TVEFSVAkweDAwMDQwMDAwMAkvKiBtZW10ZXN0IHdvcmtzIG9uICAgICAqLworI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDAwNUMwMDAwMAkvKiA0IC4uLiA5MiBNQiBpbiBEUkFNICAqLworI2RlZmluZSBDT05GSUdfU1lTX0FMVF9NRU1URVNUIDEKKyNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NDUkFUQ0gJMHg5MDAwMDIwMAkvKiB1c2luZyBsYXRjaCBhcyBzY3JhdGNoIHJlZ2lzdGVyICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJCTB4MjAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCisjZGVmaW5lIENPTkZJR19TWVNfTE9BRF9BRERSCQkweDQwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfSFoJCTEwMDAJCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19IWgkJCTEwMDAJCS8qIGRlY3JlbWVudGVyIGZyZXE6IDEgbXMgdGlja3MgKi8KIAogI2RlZmluZSBDT05GSUdfU1lTX0JBVURSQVRFX1RBQkxFCXsgOTYwMCwgMTkyMDAsIDM4NDAwLCAxMTUyMDAgfQogCkBAIC0yNTksMTkgKzI0NiwyMiBAQAogI2RlZmluZSBDT05GSUdfRU5WX1NJWkUJCTB4MTAwMAkvKiBUb3RhbCBTaXplIG9mIEVudmlyb25tZW50IFNlY3RvcgkqLwogI2RlZmluZSBDT05GSUdfRU5WX1NFQ1RfU0laRQkweDEwMDAwCiAKLS8qIEFkZHJlc3MgYW5kIHNpemUgb2YgUmVkdW5kYW50IEVudmlyb25tZW50IFNlY3RvcgkqLwotI2lmIDAKLSNkZWZpbmUgQ09ORklHX0VOVl9PRkZTRVRfUkVEVU5ECShDT05GSUdfRU5WX09GRlNFVCtDT05GSUdfRU5WX1NJWkUpCi0jZGVmaW5lIENPTkZJR19FTlZfU0laRV9SRURVTkQJKENPTkZJR19FTlZfU0laRSkKLSNlbmRpZgorLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICogRHluYW1pYyBNVEQgcGFydGl0aW9uIHN1cHBvcnQKKyAqLworI2RlZmluZSBNVERQQVJUU19ERUZBVUxUCSJtdGRwYXJ0cz00MDAwMDAwMC5mbGFzaDoyNTZrKHUtYm9vdCksIglcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNjRrKGVudiksIgkJXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjEyOGsoc3BsYXNoKSwiCQlcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiNTEyayhldGMpLCIJCVwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICI2NGsoaHctaW5mbykiCisKIC8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KICAqIEhhcmR3YXJlIEluZm9ybWF0aW9uIEJsb2NrCiAgKi8KLSNpZiAxCiAjZGVmaW5lIENPTkZJR19TWVNfSFdJTkZPX09GRlNFVAkweDAwMEYwMDAwCS8qIG9mZnNldCBvZiBIVyBJbmZvIGJsb2NrICovCiAjZGVmaW5lIENPTkZJR19TWVNfSFdJTkZPX1NJWkUJCTB4MDAwMDAxMDAJLyogc2l6ZSAgIG9mIEhXIEluZm8gYmxvY2sgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19IV0lORk9fTUFHSUMJMHg0QjI2NTAwRAkvKiAnSyZQPENSPicgKi8KLSNlbmRpZgorI2RlZmluZSBDT05GSUdfU1lTX0hXSU5GT19NQUdJQwkweDRCMjY1MDBECQkvKiAnSyZQPENSPicgKi8KKwogLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQogICogQ2FjaGUgQ29uZmlndXJhdGlvbgogICovCkBAIC0yODYsMTIgKzI3Niw3IEBACiAgKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTb2Z0d2FyZSAmIEJ1cyBNb25pdG9yIFRpbWVyIG1heCwgQnVzIE1vbml0b3IgZW5hYmxlLCBTVyBXYXRjaGRvZyBmcmVlemUKICAqLwotI2lmIDAgJiYgZGVmaW5lZChDT05GSUdfV0FUQ0hET0cpICAgICAgIC8qIEtVUCB1c2VzIGV4dGVybmFsIFRQUzM3MDUgV0QgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19TWVBDUgkoU1lQQ1JfU1dUQyB8IFNZUENSX0JNVCB8IFNZUENSX0JNRSB8IFNZUENSX1NXRiB8IFwKLQkJCSBTWVBDUl9TV0UgIHwgU1lQQ1JfU1dSSXwgU1lQQ1JfU1dQKQotI2Vsc2UKICNkZWZpbmUgQ09ORklHX1NZU19TWVBDUgkoU1lQQ1JfU1dUQyB8IFNZUENSX0JNVCB8IFNZUENSX0JNRSB8IFNZUENSX1NXRiB8IFNZUENSX1NXUCkKLSNlbmRpZgogCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKiBTSVVNQ1IgLSBTSVUgTW9kdWxlIENvbmZpZ3VyYXRpb24JCQkJMTEtNgpAQCAtMzkxLDcgKzM3Niw2IEBACiAvKiBPZmZzZXQgZm9yIGFsdGVybmF0ZSByZWdpc3RlcnMJKi8KICNkZWZpbmUgQ09ORklHX1NZU19BVEFfQUxUX09GRlNFVAkweDAxMDAKIAotCiAvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgKgogICotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQpAQCAtNDE2LDE4ICs0MDAsMjAgQEAKIC8qCiAgKiBGTEFTSCB0aW1pbmc6CiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19PUl9USU1JTkdfRkxBU0gJKE9SX0FDU19ESVYxICB8IE9SX1RSTFggfCBPUl9DU05UX1NBTSB8IFwKLQkJCQkgT1JfU0NZXzJfQ0xLIHwgT1JfRUhUUiB8IE9SX0JJKQorI2RlZmluZSBDT05GSUdfU1lTX09SX1RJTUlOR19GTEFTSAkoT1JfQUNTX0RJVjIgIHwgT1JfQ1NOVF9TQU0gfCBcCisJCQkJIE9SX1NDWV81X0NMSyB8IE9SX0VIVFIgfCBPUl9CSSkKIAotI2RlZmluZSBDT05GSUdfU1lTX09SMF9SRU1BUAkoQ09ORklHX1NZU19SRU1BUF9PUl9BTSAgfCBDT05GSUdfU1lTX09SX1RJTUlOR19GTEFTSCkKLSNkZWZpbmUgQ09ORklHX1NZU19PUjBfUFJFTElNCShDT05GSUdfU1lTX1BSRUxJTV9PUl9BTSB8IENPTkZJR19TWVNfT1JfVElNSU5HX0ZMQVNIKQotI2RlZmluZSBDT05GSUdfU1lTX0JSMF9QUkVMSU0JKChGTEFTSF9CQVNFMF9QUkVMSU0gJiBCUl9CQV9NU0spIHwgQlJfUFNfMTYgfCBCUl9WICkKKyNkZWZpbmUgQ09ORklHX1NZU19PUjBfUkVNQVAgXAorCShDT05GSUdfU1lTX1JFTUFQX09SX0FNICB8IENPTkZJR19TWVNfT1JfVElNSU5HX0ZMQVNIKQorI2RlZmluZSBDT05GSUdfU1lTX09SMF9QUkVMSU0gXAorCShDT05GSUdfU1lTX1BSRUxJTV9PUl9BTSB8IENPTkZJR19TWVNfT1JfVElNSU5HX0ZMQVNIKQorI2RlZmluZSBDT05GSUdfU1lTX0JSMF9QUkVMSU0gXAorCSgoRkxBU0hfQkFTRTBfUFJFTElNICYgQlJfQkFfTVNLKSB8IEJSX1BTXzE2IHwgQlJfViApCiAKIAogLyogU0RSQU0gdGltaW5nOiBNdWx0aXBsZXhlZCBhZGRyZXNzZXMsIEdQTDUgb3V0cHV0IHRvIEdQTDVfQSAoZG9uJ3QgY2FyZSkJKi8KICNkZWZpbmUgQ09ORklHX1NZU19PUl9USU1JTkdfU0RSQU0JMHgwMDAwMEEwMAogCi0KIC8qCiAgKiBNZW1vcnkgUGVyaW9kaWMgVGltZXIgUHJlc2NhbGVyCiAgKgpAQCAtNDc1LDcgKzQ2MSwzOSBAQAogLyoKICAqIE1BTVIgc2V0dGluZ3MgZm9yIFNEUkFNCiAgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19NQU1SIDB4ODA4MDIxMTQKKworLyogOCBjb2x1bW4gU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQU1SXzhDT0wgMHg2ODgwMjExNAorLyogOSBjb2x1bW4gU0RSQU0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQU1SXzlDT0wgMHg2ODkwNDExNAorCisvKgorICogQ2hpcCBTZWxlY3RzCisgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19PUjAKKyNkZWZpbmUgQ09ORklHX1NZU19CUjAKKworI2RlZmluZSBDT05GSUdfU1lTX09SMV84Q09MIDB4RkYwMDBBMDAKKyNkZWZpbmUgQ09ORklHX1NZU19CUjFfOENPTCAweDAwMDAwMDgxCisjZGVmaW5lIENPTkZJR19TWVNfT1IyXzhDT0wgMHhGRTAwMEEwMAorI2RlZmluZSBDT05GSUdfU1lTX0JSMl84Q09MIDB4MDEwMDAwODEKKyNkZWZpbmUgQ09ORklHX1NZU19PUjNfOENPTCAweEZDMDAwQTAwCisjZGVmaW5lIENPTkZJR19TWVNfQlIzXzhDT0wgMHgwMjAwMDA4MQorCisjZGVmaW5lIENPTkZJR19TWVNfT1IxXzlDT0wgMHhGRTAwMEEwMAorI2RlZmluZSBDT05GSUdfU1lTX0JSMV85Q09MIDB4MDAwMDAwODEKKyNkZWZpbmUgQ09ORklHX1NZU19PUjJfOUNPTCAweEZFMDAwQTAwCisjZGVmaW5lIENPTkZJR19TWVNfQlIyXzlDT0wgMHgwMjAwMDA4MQorI2RlZmluZSBDT05GSUdfU1lTX09SM185Q09MIDB4RkUwMDBBMDAKKyNkZWZpbmUgQ09ORklHX1NZU19CUjNfOUNPTCAweDA0MDAwMDgxCisKKyNkZWZpbmUgQ09ORklHX1NZU19PUjQgMHhGRkZGODkyNgorI2RlZmluZSBDT05GSUdfU1lTX0JSNCAweDkwMDAwNDAxCisKKyNkZWZpbmUgQ09ORklHX1NZU19PUjUgMHhGRkMwMDdGMCAgLyogRVBTT046IDQgTUIgIDE3IFdTIG9yIGV4dGVybmVsIFRBICovCisjZGVmaW5lIENPTkZJR19TWVNfQlI1IDB4ODAwODA4MDEgIC8qIFN0YXJ0IGF0IDB4ODAwODAwMDAgKi8KKworI2RlZmluZSBMQVRDSF9BRERSIDB4OTAwMDAyMDAKIAogLyoKICAqIEludGVybmFsIERlZmluaXRpb25zCkBAIC00ODcsMTEgKzUwNSwxNCBAQAogCiAKICNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0tFWUVECQkvKiB1c2Uga2V5IHN0cmluZ3MgdG8gc3RvcCBhdXRvYm9vdCAqLwotI2lmIDAKLSNkZWZpbmUgQ09ORklHX0FVVE9CT09UX1BST01QVAkJXAotCSJCb290ZSBpbiAlZCBTZWt1bmRlbiAtIHN0b3AgbWl0IFwiMlwiXG4iLCBib290ZGVsYXkKLSNlbmRpZgotI2RlZmluZSBDT05GSUdfQVVUT0JPT1RfU1RPUF9TVFIJIi4iIC8qIGVhc3kgdG8gc3RvcCBmb3Igbm93ICovCi0jZGVmaW5lIENPTkZJR19TSUxFTlRfQ09OU09MRQkxCisjZGVmaW5lIENPTkZJR19BVVRPQk9PVF9TVE9QX1NUUgkiLiIKKyNkZWZpbmUgQ09ORklHX1NJTEVOVF9DT05TT0xFCQkxCisjZGVmaW5lIENPTkZJR19TWVNfREVWSUNFX05VTExERVYJMSAgICAgICAvKiBlbmJsZSBudWxsIGRldmljZSAgICAgICAgICAgICovCisjZGVmaW5lIENPTkZJR19WRVJTSU9OX1ZBUklBQkxFCQkxCisKKy8qIHBhc3Mgb3BlbiBmaXJtd2FyZSBmbGF0IHRyZWUgKi8KKyNkZWZpbmUgQ09ORklHX09GX0xJQkZEVAkxCisjZGVmaW5lIENPTkZJR19PRl9CT0FSRF9TRVRVUAkxCiAKICNlbmRpZgkvKiBfX0NPTkZJR19IICovCisKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9LVVA0WC5oIGIvaW5jbHVkZS9jb25maWdzL0tVUDRYLmgKaW5kZXggYmU2ZGZkYS4uYWI1MzVlMSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL0tVUDRYLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL0tVUDRYLmgKQEAgLTM1LDIzICszNSwyMCBAQAogICogKGVhc3kgdG8gY2hhbmdlKQogICovCiAKLSNkZWZpbmUgQ09ORklHX01QQzg1OVQJCTEJLyogVGhpcyBpcyBhIE1QQzg1OVQgQ1BVCQkqLwotI2RlZmluZSBDT05GSUdfS1VQNFgJCTEJLyogLi4ub24gYSBLVVA0WCBtb2R1bGUJCQkqLworI2RlZmluZSBDT05GSUdfTVBDODU5VAkJMQkvKiBUaGlzIGlzIGEgTVBDODU5VCBDUFUJKi8KKyNkZWZpbmUgQ09ORklHX0tVUDRYCQkxCS8qIC4uLm9uIGEgS1VQNFggbW9kdWxlCQkqLwogCi0jZGVmaW5lIENPTkZJR184eHhfQ09OU19TTUMxCTEJLyogQ29uc29sZSBpcyBvbiBTTUMxCQkJKi8KKyNkZWZpbmUgQ09ORklHXzh4eF9DT05TX1NNQzEJMQkvKiBDb25zb2xlIGlzIG9uIFNNQzEJCSovCiAjdW5kZWYJQ09ORklHXzh4eF9DT05TX1NNQzIKICN1bmRlZglDT05GSUdfOHh4X0NPTlNfTk9ORQotI2RlZmluZSBDT05GSUdfQkFVRFJBVEUJCTExNTIwMAkvKiBjb25zb2xlIGJhdWRyYXRlCQkJKi8KLSNpZiAwCi0jZGVmaW5lIENPTkZJR19CT09UREVMQVkJLTEJLyogYXV0b2Jvb3QgZGlzYWJsZWQJCQkqLwotI2Vsc2UKLSNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkxCS8qIGF1dG9ib290IGFmdGVyIDEgc2Vjb25kCQkqLwotI2VuZGlmCisjZGVmaW5lIENPTkZJR19CQVVEUkFURQkJMTE1MjAwCS8qIGNvbnNvbGUgYmF1ZHJhdGUJCSovCiAKLSNkZWZpbmUgQ09ORklHX0JPQVJEX1RZUEVTCTEJLyogc3VwcG9ydCBib2FyZCB0eXBlcwkJCSovCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJMQkvKiBhdXRvYm9vdCBhZnRlciAxIHNlY29uZAkqLwogCi0jZGVmaW5lIENPTkZJR19TWVNfOFhYX0ZBQ1QJCTgJLyogTXVsdGlwbHkgYnkgOAkJCSovCi0jZGVmaW5lIENPTkZJR19TWVNfOFhYX1hJTgkJMTYwMDAwMDAJLyogMTYgTUh6IGluCQkJKi8KKyNkZWZpbmUgQ09ORklHX0JPQVJEX1RZUEVTCTEJLyogc3VwcG9ydCBib2FyZCB0eXBlcwkJKi8KKworI2RlZmluZSBDT05GSUdfU1lTXzhYWF9GQUNUCQk4CS8qIE11bHRpcGx5IGJ5IDgJKi8KKyNkZWZpbmUgQ09ORklHX1NZU184WFhfWElOCQkxNjAwMDAwMAkvKiAxNiBNSHogaW4JKi8KIAogCiAjZGVmaW5lIE1QQzhYWF9IWiAoKENPTkZJR19TWVNfOFhYX1hJTikgKiAoQ09ORklHX1NZU184WFhfRkFDVCkpCkBAIC02Nyw5ICs2NCw5IEBACiAjZGVmaW5lIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJCQlcCiAic2xvdF9hX2Jvb3Q9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9oZGEyIGlwPW9mZjsiCQkJCVwKICAgInJ1biBhZGRodztkaXNrYm9vdCAyMDAwMDAgMDoxO2Jvb3RtIDIwMDAwMFwwIgkJCQlcCi0idXNiX2Jvb3Q9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9zZGEyIGlwPW9mZjtcCi0gcnVuIGFkZGh3OyBzbGVlcCAyOyB1c2IgcmVzZXQ7IHVzYiBzY2FuOyB1c2Jib290IDIwMDAwMCAwOjE7XAotIHVzYiBzdG9wOyBib290bSAyMDAwMDBcMCIgICAgICBcCisidXNiX2Jvb3Q9c2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9zZGEyIGlwPW9mZjsJCQkJXAorIHJ1biBhZGRodzsgc2xlZXAgMjsgdXNiIHJlc2V0OyB1c2Igc2NhbjsgdXNiYm9vdCAyMDAwMDAgMDoxOwkJCVwKKyB1c2Igc3RvcDsgYm9vdG0gMjAwMDAwXDAiCQkJCQkJCVwKICJuZnNfYm9vdD1kaGNwO3J1biBuZnNhcmdzIGFkZGlwIGFkZGh3O2Jvb3RtIDIwMDAwMFwwIgkJCQlcCiAicGFuaWNfYm9vdD1lY2hvIE5vIEJvb3RkZXZpY2UgISEhIHJlc2V0XDAiCQkJCQlcCiAibmZzYXJncz1zZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyBuZnNyb290PSR7c2VydmVyaXB9OiR7cm9vdHBhdGh9XDAiCVwKQEAgLTg0LDE0ICs4MSwxNCBAQAogICJjcC5iIDIwMDAwMCA0MDA0MDAwMCAxNDAwMFwwIgogCiAjZGVmaW5lIENPTkZJR19CT09UQ09NTUFORCAgXAotICAgICJydW4gdXNiX2Jvb3Q7cnVuX3Nsb3RfYV9ib290O3J1biBuZnNfYm9vdDtydW4gcGFuaWNfYm9vdCIKKyAgICAicnVuIHVzYl9ib290O3J1biBzbG90X2FfYm9vdDtydW4gbmZzX2Jvb3Q7cnVuIHBhbmljX2Jvb3QiCiAKIAogI2RlZmluZSBDT05GSUdfTUlTQ19JTklUX1IJMQogI2RlZmluZSBDT05GSUdfTUlTQ19JTklUX0YJMQogCiAjZGVmaW5lIENPTkZJR19MT0FEU19FQ0hPCTEJLyogZWNobyBvbiBmb3Igc2VyaWFsIGRvd25sb2FkCSovCi0jdW5kZWYJQ09ORklHX1NZU19MT0FEU19CQVVEX0NIQU5HRQkJLyogZG9uJ3QgYWxsb3cgYmF1ZHJhdGUgY2hhbmdlCSovCisjdW5kZWYJQ09ORklHX1NZU19MT0FEU19CQVVEX0NIQU5HRQkvKiBkb24ndCBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UJKi8KIAogI2RlZmluZQlDT05GSUdfV0FUQ0hET0cJCTEJLyogd2F0Y2hkb2cgZW5hYmxlZAkJKi8KIApAQCAtMTQ0LDggKzE0MSw4IEBACiAgKiBJMkMgQ29uZmlndXJhdGlvbgogICovCiAKLSNkZWZpbmUgQ09ORklHX1NZU19JMkNfUElDSU9fQUREUgkweDIxCS8qIFBDRjg1NzQgSU8gRXhwYW5kZXIJCQkqLwotI2RlZmluZSBDT05GSUdfU1lTX0kyQ19SVENfQUREUgkweDUxCS8qIFBDRjg1NjMgUlRDCQkJCSovCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1BJQ0lPX0FERFIJMHgyMQkvKiBQQ0Y4NTc0IElPIEV4cGFuZGVyCSovCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX1JUQ19BRERSCTB4NTEJLyogUENGODU2MyBSVEMJCQkqLwogCiAKIC8qIExpc3Qgb2YgSTJDIGFkZHJlc3NlcyB0byBiZSB2ZXJpZmllZCBieSBQT1NUICovCkBAIC0xNjAsMjIgKzE1NywxNiBAQAogI2RlZmluZSBDT05GSUdfU1lTX0RJU0NPVkVSX1BIWQogI2RlZmluZSBDT05GSUdfTUlJCiAKLSNpZiAwCi0jZGVmaW5lIENPTkZJR19FVEhBRERSICAgICAgICAgICAgICAgICAgMDA6MEI6NjQ6ODA6MDA6MDAgLyogb3VyIE9VSSBmcm9tIElFRUUgKi8KLSNlbmRpZgogI3VuZGVmIENPTkZJR19LVVA0S19MT0dPCiAKIC8qIERlZmluZSB0byBhbGxvdyB0aGUgdXNlciB0byBvdmVyd3JpdGUgc2VyaWFsIGFuZCBldGhhZGRyICovCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCiAKIAotI2lmIDEKIC8qIFBPU1Qgc3VwcG9ydCAqLwotCiAjZGVmaW5lIENPTkZJR19QT1NUCQkoQ09ORklHX1NZU19QT1NUX0NQVQkgICB8IFwKIAkJCQkgQ09ORklHX1NZU19QT1NUX1JUQwkgICB8IFwKIAkJCQkgQ09ORklHX1NZU19QT1NUX0kyQykKLSNlbmRpZgogCiAKIC8qCkBAIC00MjYsOSArNDE3LDEyIEBACiAjZGVmaW5lIENPTkZJR19TWVNfT1JfVElNSU5HX0ZMQVNICShPUl9BQ1NfRElWMSAgfCBPUl9UUkxYIHwgT1JfQ1NOVF9TQU0gfCBcCiAJCQkJIE9SX1NDWV8yX0NMSyB8IE9SX0VIVFIgfCBPUl9CSSkKIAotI2RlZmluZSBDT05GSUdfU1lTX09SMF9SRU1BUAkoQ09ORklHX1NZU19SRU1BUF9PUl9BTSAgfCBDT05GSUdfU1lTX09SX1RJTUlOR19GTEFTSCkKLSNkZWZpbmUgQ09ORklHX1NZU19PUjBfUFJFTElNCShDT05GSUdfU1lTX1BSRUxJTV9PUl9BTSB8IENPTkZJR19TWVNfT1JfVElNSU5HX0ZMQVNIKQotI2RlZmluZSBDT05GSUdfU1lTX0JSMF9QUkVMSU0JKChGTEFTSF9CQVNFMF9QUkVMSU0gJiBCUl9CQV9NU0spIHwgQlJfUFNfMTYgfCBCUl9WICkKKyNkZWZpbmUgQ09ORklHX1NZU19PUjBfUkVNQVAgXAorCQkoQ09ORklHX1NZU19SRU1BUF9PUl9BTSAgfCBDT05GSUdfU1lTX09SX1RJTUlOR19GTEFTSCkKKyNkZWZpbmUgQ09ORklHX1NZU19PUjBfUFJFTElNIFwKKwkJKENPTkZJR19TWVNfUFJFTElNX09SX0FNIHwgQ09ORklHX1NZU19PUl9USU1JTkdfRkxBU0gpCisjZGVmaW5lIENPTkZJR19TWVNfQlIwX1BSRUxJTSBcCisJCSgoRkxBU0hfQkFTRTBfUFJFTElNICYgQlJfQkFfTVNLKSB8IEJSX1BTXzE2IHwgQlJfViApCiAKIAogLyogU0RSQU0gdGltaW5nOiBNdWx0aXBsZXhlZCBhZGRyZXNzZXMsIEdQTDUgb3V0cHV0IHRvIEdQTDVfQSAoZG9uJ3QgY2FyZSkJKi8KQEAgLTQ0NCw2ICs0MzgsMTUgQEAKIAogCiAvKgorICogQ2hpcCBTZWxlY3RzCisgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX09SNCAweEZGRkY4OTI2CisjZGVmaW5lIENPTkZJR19TWVNfQlI0IDB4OTAwMDA0MDEKKworI2RlZmluZSBMQVRDSF9BRERSIDB4OTAwMDAyMDAKKworLyoKICAqIEludGVybmFsIERlZmluaXRpb25zCiAgKgogICogQm9vdCBGbGFncwpAQCAtNDUzLDEwICs0NTYsNyBAQAogCiAKICNkZWZpbmUgQ09ORklHX0FVVE9CT09UX0tFWUVECQkvKiB1c2Uga2V5IHN0cmluZ3MgdG8gc3RvcCBhdXRvYm9vdAkqLwotI2lmIDAKLSNkZWZpbmUgQ09ORklHX0FVVE9CT09UX1BST01QVAkJXAotCSJCb290ZSBpbiAlZCBTZWt1bmRlbiAtIHN0b3AgbWl0IFwiMlwiXG4iLCBib290ZGVsYXkKLSNlbmRpZgorCiAjZGVmaW5lIENPTkZJR19BVVRPQk9PVF9TVE9QX1NUUgkiLiIJLyogZWFzeSB0byBzdG9wIGZvciBub3cJCSovCiAjZGVmaW5lIENPTkZJR19TSUxFTlRfQ09OU09MRQkxCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTM2RFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTM2RFMuaAppbmRleCA4OTBhNmM5Li4yYTNjMDU4IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODUzNkRTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1MzZEUy5oCkBAIC02ODcsNiArNjg3LDcgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KICNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19BVVRPX0NPTVBMRVRFCQkJLyogYWRkIGF1dG9jb21wbGV0aW9uIHN1cHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MEFEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NDBBRFMuaAppbmRleCA3OGJiNzRiLi41NzdjMjc2IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MEFEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQwQURTLmgKQEAgLTM5OCw3ICszOTgsOCBAQAogICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkqLwotI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkvKiBDb21tYW5kLWxpbmUgZWRpdGluZyAqLworI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkweDIwMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDFDRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQxQ0RTLmgKaW5kZXggYWU0ZmJhOC4uODc5N2IzMCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDFDRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0MUNEUy5oCkBAIC00MTYsNyArNDE2LDggQEAKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KLSNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19BVVRPX0NPTVBMRVRFCQkJLyogYWRkIGF1dG9jb21wbGV0aW9uIHN1cHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0NERTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0NERTLmgKaW5kZXggOTZmZDAyNC4uZDFhYzMyZiAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDREUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQ0RFMuaApAQCAtNDMxLDcgKzQzMSw4IEBACiAgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CSovCi0jZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCQkvKiBDb21tYW5kLWxpbmUgZWRpdGluZyAqLworI2RlZmluZSBDT05GSUdfQVVUT19DT01QTEVURQkJCS8qIGFkZCBhdXRvY29tcGxldGlvbiBzdXBwb3J0ICovCiAjZGVmaW5lIENPTkZJR19TWVNfTE9BRF9BRERSCTB4MjAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLwogI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDhDRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTQ4Q0RTLmgKaW5kZXggMjM1OTRhNy4uMzNmNDlmNSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL01QQzg1NDhDRFMuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU0OENEUy5oCkBAIC00NzEsNyArNDcxLDggQEAKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KLSNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19BVVRPX0NPTVBMRVRFCQkJLyogYWRkIGF1dG9jb21wbGV0aW9uIHN1cHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU1NUNEUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NTVDRFMuaAppbmRleCA1MDExZTVhLi4wZjcxZjExIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU1NUNEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTU1Q0RTLmgKQEAgLTQxNCw3ICs0MTQsOCBAQAogICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkqLwotI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkvKiBDb21tYW5kLWxpbmUgZWRpdGluZyAqLworI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkweDIwMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KICNpZiBkZWZpbmVkKENPTkZJR19DTURfS0dEQikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTYwQURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2MEFEUy5oCmluZGV4IDk4Njc3ZTUuLjMxNzQwZmQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTYwQURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjBBRFMuaApAQCAtNDM4LDcgKzQzOCw4IEBACiAgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CSovCi0jZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCQkvKiBDb21tYW5kLWxpbmUgZWRpdGluZyAqLworI2RlZmluZSBDT05GSUdfQVVUT19DT01QTEVURQkJCS8qIGFkZCBhdXRvY29tcGxldGlvbiBzdXBwb3J0ICovCiAjZGVmaW5lIENPTkZJR19TWVNfTE9BRF9BRERSCTB4MTAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLwogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OE1EUy5oIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjhNRFMuaAppbmRleCBiYzZjNWM3Li5lYTdhMTM0IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OE1EUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTY4TURTLmgKQEAgLTQzMSw3ICs0MzEsOCBAQAogICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkqLwotI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkvKiBDb21tYW5kLWxpbmUgZWRpdGluZyAqLworI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkweDIwMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KICNpZiBkZWZpbmVkKENPTkZJR19DTURfS0dEQikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTY5TURTLmggYi9pbmNsdWRlL2NvbmZpZ3MvTVBDODU2OU1EUy5oCmluZGV4IDkyYzJiNDkuLmY2OWI2NTAgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTY5TURTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NjlNRFMuaApAQCAtNTYwLDggKzU2MCw5IEBACiAvKgogICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucwogICovCi0jZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CSovCi0jZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkqLworI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkweDIwMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KICNpZiBkZWZpbmVkKENPTkZJR19DTURfS0dEQikKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9NUEM4NTcyRFMuaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NTcyRFMuaAppbmRleCA1MWU1ZDA2Li4wODE2NjFlIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODU3MkRTLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL01QQzg1NzJEUy5oCkBAIC01ODEsNyArNTgxLDggQEAKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KLSNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19BVVRPX0NPTVBMRVRFCQkJLyogYWRkIGF1dG9jb21wbGV0aW9uIHN1cHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvTVBDODY0MUhQQ04uaCBiL2luY2x1ZGUvY29uZmlncy9NUEM4NjQxSFBDTi5oCmluZGV4IDBkMWY3NzkuLjk3NGNiNmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9NUEM4NjQxSFBDTi5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9NUEM4NjQxSFBDTi5oCkBAIC0xMjIsNiArMTIyLDggQEAKICNkZWZpbmUgQ09ORklHX1NZU19DQ1NSQkFSX1BIWVMJCUNPTkZJR19TWVNfQ0NTUkJBUl9QSFlTX0xPVwogI2VuZGlmCiAKKyNkZWZpbmUgQ09ORklHX0hXQ09ORklHCS8qIHVzZSBod2NvbmZpZyB0byBjb250cm9sIG1lbW9yeSBpbnRlcmxlYXZpbmcgKi8KKwogLyoKICAqIEREUiBTZXR1cAogICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUDEwMjJEUy5oIGIvaW5jbHVkZS9jb25maWdzL1AxMDIyRFMuaAppbmRleCBmOWQxMmY1Li5kY2FjYTJiIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUDEwMjJEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QMTAyMkRTLmgKQEAgLTM2Niw2ICszNjYsNyBAQAogICovCiAjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkqLwogI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkweDIwMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KICNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KICNpZmRlZiBDT05GSUdfQ01EX0tHREIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9QMV9QMl9SREIuaCBiL2luY2x1ZGUvY29uZmlncy9QMV9QMl9SREIuaAppbmRleCBmY2EzY2RkLi43ZTkwMWUxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUDFfUDJfUkRCLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL1AxX1AyX1JEQi5oCkBAIC01MTgsNiArNTE4LDcgQEAKICAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KICNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19BVVRPX0NPTVBMRVRFCQkJLyogYWRkIGF1dG9jb21wbGV0aW9uIHN1cHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCiAjaWYgZGVmaW5lZChDT05GSUdfQ01EX0tHREIpCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvUDIwMjBEUy5oIGIvaW5jbHVkZS9jb25maWdzL1AyMDIwRFMuaAppbmRleCBiZjJhY2JmLi43OWNlMmMwIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvUDIwMjBEUy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9QMjAyMERTLmgKQEAgLTkyLDcgKzkyLDExIEBACiAKIC8qIEREUiBTZXR1cCAqLwogI2RlZmluZSBDT05GSUdfVkVSWV9CSUdfUkFNCisjaWZkZWYgQ09ORklHX01LX0REUjIKKyNkZWZpbmUgQ09ORklHX0ZTTF9ERFIyCisjZWxzZQogI2RlZmluZSBDT05GSUdfRlNMX0REUjMJCTEKKyNlbmRpZgogI3VuZGVmIENPTkZJR19GU0xfRERSX0lOVEVSQUNUSVZFCiAKIC8qIEVDQyB3aWxsIGJlIGVuYWJsZWQgYmFzZWQgb24gcGVyZl9tb2RlIGVudmlyb25tZW50IHZhcmlhYmxlICovCkBAIC0xMDksNiArMTEzLDcgQEAKICNkZWZpbmUgQ09ORklHX0NISVBfU0VMRUNUU19QRVJfQ1RSTAkyCiAKIC8qIEkyQyBhZGRyZXNzZXMgb2YgU1BEIEVFUFJPTXMgKi8KKyNkZWZpbmUgQ09ORklHX0REUl9TUEQKICNkZWZpbmUgQ09ORklHX1NZU19TUERfQlVTX05VTQkJMAkvKiBTUEQgRUVQUk9NIGxvY2F0ZWQgb24gSTJDIGJ1cyAwICovCiAjZGVmaW5lIFNQRF9FRVBST01fQUREUkVTUzEJMHg1MQkvKiBDVExSIDAgRElNTSAwICovCiAKQEAgLTIyOCw2ICsyMzMsNyBAQAogCiAjZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX1IJLyogY2FsbCBib2FyZF9lYXJseV9pbml0X3IgZnVuY3Rpb24gKi8KIAorI2RlZmluZSBDT05GSUdfSFdDT05GSUcJCQkvKiBlbmFibGUgaHdjb25maWcgKi8KICNkZWZpbmUgQ09ORklHX0ZTTF9OR1BJWElTCQkvKiB1c2UgY29tbW9uIG5nUElYSVMgY29kZSAqLwogCiAjaWZkZWYgQ09ORklHX0ZTTF9OR1BJWElTCkBAIC0yNDksNiArMjU1LDE4IEBACiAKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCTEKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSCTB4ZmZkMDAwMDAJLyogSW5pdGlhbCBMMSBhZGRyZXNzICovCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfSElHSCAweGYKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfTE9XIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgorLyogVGhlIGFzc2VtYmxlciBkb2Vzbid0IGxpa2UgdHlwZWNhc3QgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVMgXAorCSgoQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfSElHSCAqIDF1bGwgPDwgMzIpIHwgXAorCSAgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfTE9XKQorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVMJQ09ORklHX1NZU19JTklUX1JBTV9BRERSIC8qIEluaXRpYWwgTDEgYWRkcmVzcyAqLworI2RlZmluZSBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZU19ISUdIIDAKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfTE9XIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTCisjZW5kaWYKICNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9FTkQJMHgwMDAwNDAwMAkvKiBFbmQgb2YgdXNlZCBhcmVhIGluIFJBTSAqLwogCiAjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRQkxMjgJLyogbnVtIGJ5dGVzIGluaXRpYWwgZGF0YSAqLwpAQCAtNTY3LDcgKzU4NSw4IEBACiAgKiBNaXNjZWxsYW5lb3VzIGNvbmZpZ3VyYWJsZSBvcHRpb25zCiAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT05HSEVMUAkJCS8qIHVuZGVmIHRvIHNhdmUgbWVtb3J5CSovCi0jZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCS8qIENvbW1hbmQtbGluZSBlZGl0aW5nICovCisjZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJCQkvKiBDb21tYW5kLWxpbmUgZWRpdGluZyAqLworI2RlZmluZSBDT05GSUdfQVVUT19DT01QTEVURQkJCS8qIGFkZCBhdXRvY29tcGxldGlvbiBzdXBwb3J0ICovCiAjZGVmaW5lIENPTkZJR19TWVNfTE9BRF9BRERSCTB4MjAwMDAwMAkvKiBkZWZhdWx0IGxvYWQgYWRkcmVzcyAqLwogI2RlZmluZSBDT05GSUdfU1lTX1BST01QVAkiPT4gIgkJLyogTW9uaXRvciBDb21tYW5kIFByb21wdCAqLwogI2lmIGRlZmluZWQoQ09ORklHX0NNRF9LR0RCKQpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1A0MDgwRFMuaCBiL2luY2x1ZGUvY29uZmlncy9QNDA4MERTLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODc3MDNjOQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9QNDA4MERTLmgKQEAgLTAsMCArMSwzOSBAQAorLyoKKyAqIENvcHlyaWdodCAyMDA5LTIwMTAgRnJlZXNjYWxlIFNlbWljb25kdWN0b3IsIEluYy4KKyAqCisgKiBTZWUgZmlsZSBDUkVESVRTIGZvciBsaXN0IG9mIHBlb3BsZSB3aG8gY29udHJpYnV0ZWQgdG8gdGhpcworICogcHJvamVjdC4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisgKiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcworICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKKyAqIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKyAqIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKy8qCisgKiBQNDA4MCBEUyBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUKKyAqLworI2RlZmluZSBDT05GSUdfUDQwODBEUworI2RlZmluZSBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfUFBDX1A0MDgwCisjZGVmaW5lIENPTkZJR19TWVNfTlVNX0ZNQU4JCTIKKyNkZWZpbmUgQ09ORklHX1NZU19OVU1fRk0xX0RUU0VDCTQKKyNkZWZpbmUgQ09ORklHX1NZU19OVU1fRk0yX0RUU0VDCTQKKyNkZWZpbmUgQ09ORklHX1NZU19OVU1fRk0xXzEwR0VDCTEKKyNkZWZpbmUgQ09ORklHX1NZU19OVU1fRk0yXzEwR0VDCTEKKyNkZWZpbmUgQ09ORklHX05VTV9ERFJfQ09OVFJPTExFUlMJMgorCisjZGVmaW5lIENPTkZJR19TWVNfUDQwODBfRVJSQVRVTV9DUFUyMgorI2RlZmluZSBDT05GSUdfU1lTX1A0MDgwX0VSUkFUVU1fU0VSREVTOAorCisjaW5jbHVkZSAiY29yZW5ldF9kcy5oIgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1RRTTg1eHguaCBiL2luY2x1ZGUvY29uZmlncy9UUU04NXh4LmgKaW5kZXggZDhmMjYwMi4uYWJiYWYzOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL1RRTTg1eHguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvVFFNODV4eC5oCkBAIC0yODAsNiArMjgwLDcgQEAKIAl7MzAwLCA2MDAsIDEyMDAsIDI0MDAsIDQ4MDAsIDk2MDAsIDE5MjAwLCAzODQwMCwgMTE1MjAwfQogCiAjZGVmaW5lIENPTkZJR19DTURMSU5FX0VESVRJTkcJMQkvKiBhZGQgY29tbWFuZCBsaW5lIGhpc3RvcnkJKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJMQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0hVU0hfUEFSU0VSCQkxCS8qIFVzZSB0aGUgSFVTSCBwYXJzZXIJCSovCiAjaWZkZWYJQ09ORklHX1NZU19IVVNIX1BBUlNFUgogI2RlZmluZQlDT05GSUdfU1lTX1BST01QVF9IVVNIX1BTMgkiPiAiCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvWFBFRElURTUyMDAuaCBiL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTIwMC5oCmluZGV4IDgzYWVmZmQuLjFmYmU0ZmIgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTIwMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9YUEVESVRFNTIwMC5oCkBAIC0zNTEsNiArMzUxLDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19CQVJHU0laRQlDT05GSUdfU1lTX0NCU0laRQkvKiBCb290IEFyZ3VtZW50IEJ1ZmZlciBTaXplICovCiAjZGVmaW5lIENPTkZJR19TWVNfSFoJCTEwMDAJCS8qIGRlY3JlbWVudGVyIGZyZXE6IDFtcyB0aWNrcyAqLwogI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCTEJCS8qIGFkZCBjb21tYW5kIGxpbmUgaGlzdG9yeQkqLworI2RlZmluZSBDT05GSUdfQVVUT19DT01QTEVURQkxCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfTE9BREFERFIJCTB4MTAwMDAwMAkvKiBkZWZhdWx0IGxvY2F0aW9uIGZvciB0ZnRwIGFuZCBib290bSAqLwogI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTMJCS8qIC0xIGRpc2FibGVzIGF1dG8tYm9vdCAqLwogI2RlZmluZSBDT05GSUdfUEFOSUNfSEFORwkJCS8qIGRvIG5vdCByZXNldCBib2FyZCBvbiBwYW5pYyAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL1hQRURJVEU1MzcwLmggYi9pbmNsdWRlL2NvbmZpZ3MvWFBFRElURTUzNzAuaAppbmRleCBmYzRhOTg2Li44MjI1ZmZmIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvWFBFRElURTUzNzAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvWFBFRElURTUzNzAuaApAQCAtNDA5LDYgKzQwOSw3IEBACiAjZGVmaW5lIENPTkZJR19TWVNfQkFSR1NJWkUJQ09ORklHX1NZU19DQlNJWkUJLyogQm9vdCBBcmd1bWVudCBCdWZmZXIgU2l6ZSAqLwogI2RlZmluZSBDT05GSUdfU1lTX0haCQkxMDAwCQkvKiBkZWNyZW1lbnRlciBmcmVxOiAxbXMgdGlja3MgKi8KICNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkxCQkvKiBhZGQgY29tbWFuZCBsaW5lIGhpc3RvcnkJKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJMQkJLyogYWRkIGF1dG9jb21wbGV0aW9uIHN1cHBvcnQgKi8KICNkZWZpbmUgQ09ORklHX0xPQURBRERSCQkweDEwMDAwMDAJLyogZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGZ0cCBhbmQgYm9vdG0gKi8KICNkZWZpbmUgQ09ORklHX0JPT1RERUxBWQkzCQkvKiAtMSBkaXNhYmxlcyBhdXRvLWJvb3QgKi8KICNkZWZpbmUgQ09ORklHX1BBTklDX0hBTkcJCQkvKiBkbyBub3QgcmVzZXQgYm9hcmQgb24gcGFuaWMgKi8KZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9iZjUzMy1lemtpdC5oIGIvaW5jbHVkZS9jb25maWdzL2JmNTMzLWV6a2l0LmgKaW5kZXggMzdhNzA1OS4uOTVkM2FmYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2JmNTMzLWV6a2l0LmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2JmNTMzLWV6a2l0LmgKQEAgLTk0LDQ5ICs5NCwxMCBAQAogCiAvKgogICogSTJDIFNldHRpbmdzCi0gKiBCeSBkZWZhdWx0IFBGMSBpcyB1c2VkIGFzIFNEQSBhbmQgUEYwIGFzIFNDTCBvbiB0aGUgU3RhbXAgYm9hcmQKICAqLwogI2RlZmluZSBDT05GSUdfU09GVF9JMkMKLSNpZmRlZiBDT05GSUdfU09GVF9JMkMKLSNkZWZpbmUgUEZfU0NMIFBGMAotI2RlZmluZSBQRl9TREEgUEYxCi0jZGVmaW5lIEkyQ19JTklUIFwKLQlkbyB7IFwKLQkJKnBGSU9fRElSIHw9IFBGX1NDTDsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX0FDVElWRSBcCi0JZG8geyBcCi0JCSpwRklPX0RJUiB8PSBQRl9TREE7IFwKLQkJKnBGSU9fSU5FTiAmPSB+UEZfU0RBOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfVFJJU1RBVEUgXAotCWRvIHsgXAotCQkqcEZJT19ESVIgJj0gflBGX1NEQTsgXAotCQkqcEZJT19JTkVOIHw9IFBGX1NEQTsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX1JFQUQgKCgqcEZJT19GTEFHX0QgJiBQRl9TREEpICE9IDApCi0jZGVmaW5lIEkyQ19TREEoYml0KSBcCi0JZG8geyBcCi0JCWlmIChiaXQpIFwKLQkJCSpwRklPX0ZMQUdfUyA9IFBGX1NEQTsgXAotCQllbHNlIFwKLQkJCSpwRklPX0ZMQUdfQyA9IFBGX1NEQTsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX1NDTChiaXQpIFwKLQlkbyB7IFwKLQkJaWYgKGJpdCkgXAotCQkJKnBGSU9fRkxBR19TID0gUEZfU0NMOyBcCi0JCWVsc2UgXAotCQkJKnBGSU9fRkxBR19DID0gUEZfU0NMOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfREVMQVkJCXVkZWxheSg1KQkvKiAxLzQgSTJDIGNsb2NrIGR1cmF0aW9uICovCi0KLSNlbmRpZgorI2RlZmluZSBDT05GSUdfU09GVF9JMkNfR1BJT19TQ0wgR1BJT19QRjAKKyNkZWZpbmUgQ09ORklHX1NPRlRfSTJDX0dQSU9fU0RBIEdQSU9fUEYxCiAKIAogLyoKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9iZjUzMy1zdGFtcC5oIGIvaW5jbHVkZS9jb25maWdzL2JmNTMzLXN0YW1wLmgKaW5kZXggMDJjOGJjMy4uZjM5YmZlZSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2JmNTMzLXN0YW1wLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL2JmNTMzLXN0YW1wLmgKQEAgLTEzOCw0OSArMTM4LDEwIEBACiAKIC8qCiAgKiBJMkMgU2V0dGluZ3MKLSAqIEJ5IGRlZmF1bHQgUEYyIGlzIHVzZWQgYXMgU0RBIGFuZCBQRjMgYXMgU0NMIG9uIHRoZSBTdGFtcCBib2FyZAogICovCiAjZGVmaW5lIENPTkZJR19TT0ZUX0kyQwotI2lmZGVmIENPTkZJR19TT0ZUX0kyQwotI2RlZmluZSBQRl9TQ0wgUEYzCi0jZGVmaW5lIFBGX1NEQSBQRjIKLSNkZWZpbmUgSTJDX0lOSVQgXAotCWRvIHsgXAotCQkqcEZJT19ESVIgfD0gUEZfU0NMOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfQUNUSVZFIFwKLQlkbyB7IFwKLQkJKnBGSU9fRElSIHw9IFBGX1NEQTsgXAotCQkqcEZJT19JTkVOICY9IH5QRl9TREE7IFwKLQkJU1NZTkMoKTsgXAotCX0gd2hpbGUgKDApCi0jZGVmaW5lIEkyQ19UUklTVEFURSBcCi0JZG8geyBcCi0JCSpwRklPX0RJUiAmPSB+UEZfU0RBOyBcCi0JCSpwRklPX0lORU4gfD0gUEZfU0RBOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfUkVBRCAoKCpwRklPX0ZMQUdfRCAmIFBGX1NEQSkgIT0gMCkKLSNkZWZpbmUgSTJDX1NEQShiaXQpIFwKLQlkbyB7IFwKLQkJaWYgKGJpdCkgXAotCQkJKnBGSU9fRkxBR19TID0gUEZfU0RBOyBcCi0JCWVsc2UgXAotCQkJKnBGSU9fRkxBR19DID0gUEZfU0RBOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfU0NMKGJpdCkgXAotCWRvIHsgXAotCQlpZiAoYml0KSBcCi0JCQkqcEZJT19GTEFHX1MgPSBQRl9TQ0w7IFwKLQkJZWxzZSBcCi0JCQkqcEZJT19GTEFHX0MgPSBQRl9TQ0w7IFwKLQkJU1NZTkMoKTsgXAotCX0gd2hpbGUgKDApCi0jZGVmaW5lIEkyQ19ERUxBWQkJdWRlbGF5KDUpCS8qIDEvNCBJMkMgY2xvY2sgZHVyYXRpb24gKi8KLQotI2VuZGlmCisjZGVmaW5lIENPTkZJR19TT0ZUX0kyQ19HUElPX1NDTCBHUElPX1BGMworI2RlZmluZSBDT05GSUdfU09GVF9JMkNfR1BJT19TREEgR1BJT19QRjIKIAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JmNTYxLWV6a2l0LmggYi9pbmNsdWRlL2NvbmZpZ3MvYmY1NjEtZXpraXQuaAppbmRleCAwMzZiZmU0Li40ZTI5M2I1IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvYmY1NjEtZXpraXQuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmY1NjEtZXpraXQuaApAQCAtMTEyLDQ2ICsxMTIsOCBAQAogICogSTJDIFNldHRpbmdzCiAgKi8KICNkZWZpbmUgQ09ORklHX1NPRlRfSTJDCi0jaWZkZWYgQ09ORklHX1NPRlRfSTJDCi0jZGVmaW5lIFBGX1NDTCBQRjAKLSNkZWZpbmUgUEZfU0RBIFBGMQotI2RlZmluZSBJMkNfSU5JVCBcCi0JZG8geyBcCi0JCSpwRklPMF9ESVIgfD0gUEZfU0NMOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfQUNUSVZFIFwKLQlkbyB7IFwKLQkJKnBGSU8wX0RJUiB8PSBQRl9TREE7IFwKLQkJKnBGSU8wX0lORU4gJj0gflBGX1NEQTsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX1RSSVNUQVRFIFwKLQlkbyB7IFwKLQkJKnBGSU8wX0RJUiAmPSB+UEZfU0RBOyBcCi0JCSpwRklPMF9JTkVOIHw9IFBGX1NEQTsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX1JFQUQgKCgqcEZJTzBfRkxBR19EICYgUEZfU0RBKSAhPSAwKQotI2RlZmluZSBJMkNfU0RBKGJpdCkgXAotCWRvIHsgXAotCQlpZiAoYml0KSBcCi0JCQkqcEZJTzBfRkxBR19TID0gUEZfU0RBOyBcCi0JCWVsc2UgXAotCQkJKnBGSU8wX0ZMQUdfQyA9IFBGX1NEQTsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX1NDTChiaXQpIFwKLQlkbyB7IFwKLQkJaWYgKGJpdCkgXAotCQkJKnBGSU8wX0ZMQUdfUyA9IFBGX1NDTDsgXAotCQllbHNlIFwKLQkJCSpwRklPMF9GTEFHX0MgPSBQRl9TQ0w7IFwKLQkJU1NZTkMoKTsgXAotCX0gd2hpbGUgKDApCi0jZGVmaW5lIEkyQ19ERUxBWQkJdWRlbGF5KDUpCS8qIDEvNCBJMkMgY2xvY2sgZHVyYXRpb24gKi8KLQotI2VuZGlmCisjZGVmaW5lIENPTkZJR19TT0ZUX0kyQ19HUElPX1NDTCBHUElPX1BGMAorI2RlZmluZSBDT05GSUdfU09GVF9JMkNfR1BJT19TREEgR1BJT19QRjEKIAogCiAvKgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JmaW5fYWRpX2NvbW1vbi5oIGIvaW5jbHVkZS9jb25maWdzL2JmaW5fYWRpX2NvbW1vbi5oCmluZGV4IDkwMWEzMmYuLjQ0NzYyNjggMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9iZmluX2FkaV9jb21tb24uaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmZpbl9hZGlfY29tbW9uLmgKQEAgLTY4LDYgKzY4LDcgQEAKICMgZW5kaWYKICMgaWYgZGVmaW5lZChDT05GSUdfSEFSRF9JMkMpIHx8IGRlZmluZWQoQ09ORklHX1NPRlRfSTJDKQogIyAgZGVmaW5lIENPTkZJR19DTURfSTJDCisjICBkZWZpbmUgQ09ORklHX1NPRlRfSTJDX1JFQURfUkVQRUFURURfU1RBUlQKICMgZW5kaWYKICMgaWZkZWYgQ09ORklHX1NZU19OT19GTEFTSAogIyAgdW5kZWYgQ09ORklHX0NNRF9GTEFTSApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2JsYWNrc3RhbXAuaCBiL2luY2x1ZGUvY29uZmlncy9ibGFja3N0YW1wLmgKaW5kZXggYWEzMzkzMy4uODVmMDhlYSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL2JsYWNrc3RhbXAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvYmxhY2tzdGFtcC5oCkBAIC0yMDYsMzIgKzIwNiw4IEBACiAgKiB0aGVtIHlldC4gWW91IGNhbiAoYW5kIHByb2JhYmx5IHNob3VsZCkgY2hhbmdlIHRoZXNlIHZhbHVlcyEKICAqLwogI2lmZGVmIENPTkZJR19TT0ZUX0kyQwotCi0jZGVmaW5lIFBGX1NDTAkJCVBGOQotI2RlZmluZSBQRl9TREEJCQlQRjgKLQotI2RlZmluZSBJMkNfSU5JVCAgICAgICBkbyB7ICpwRklPX0RJUiB8PSBQRl9TQ0w7IFNTWU5DKCk7IH0gd2hpbGUgKDApCi0jZGVmaW5lIEkyQ19BQ1RJVkUgICAgIGRvIHsgKnBGSU9fRElSIHw9IFBGX1NEQTsgKnBGSU9fSU5FTiAmPSB+UEZfU0RBOyBTU1lOQygpOyB9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfVFJJU1RBVEUgICBkbyB7ICpwRklPX0RJUiAmPSB+UEZfU0RBOyAqcEZJT19JTkVOIHw9IFBGX1NEQTsgU1NZTkMoKTsgfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX1JFQUQgICAgICAgKCgqcEZJT19GTEFHX0QgJiBQRl9TREEpICE9IDApCi0jZGVmaW5lIEkyQ19TREEoYml0KSBcCi0JZG8geyBcCi0JCWlmIChiaXQpIFwKLQkJCSpwRklPX0ZMQUdfUyA9IFBGX1NEQTsgXAotCQllbHNlIFwKLQkJCSpwRklPX0ZMQUdfQyA9IFBGX1NEQTsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX1NDTChiaXQpIFwKLQlkbyB7IFwKLQkJaWYgKGJpdCkgXAotCQkJKnBGSU9fRkxBR19TID0gUEZfU0NMOyBcCi0JCWVsc2UgXAotCQkJKnBGSU9fRkxBR19DID0gUEZfU0NMOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfREVMQVkJCXVkZWxheSg1KQkvKiAxLzQgSTJDIGNsb2NrIGR1cmF0aW9uICovCi0KKyNkZWZpbmUgQ09ORklHX1NPRlRfSTJDX0dQSU9fU0NMIEdQSU9fUEY5CisjZGVmaW5lIENPTkZJR19TT0ZUX0kyQ19HUElPX1NEQSBHUElPX1BGOAogI2RlZmluZSBDT05GSUdfU1lTX0kyQ19TUEVFRAkJNTAwMDAKICNkZWZpbmUgQ09ORklHX1NZU19JMkNfU0xBVkUJCTB4RkUKICNlbmRpZgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL2NvcmVuZXRfZHMuaCBiL2luY2x1ZGUvY29uZmlncy9jb3JlbmV0X2RzLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGQ2MDlkYQotLS0gL2Rldi9udWxsCisrKyBiL2luY2x1ZGUvY29uZmlncy9jb3JlbmV0X2RzLmgKQEAgLTAsMCArMSw2NTMgQEAKKy8qCisgKiBDb3B5cmlnaHQgMjAwOS0yMDEwIEZyZWVzY2FsZSBTZW1pY29uZHVjdG9yLCBJbmMuCisgKgorICogU2VlIGZpbGUgQ1JFRElUUyBmb3IgbGlzdCBvZiBwZW9wbGUgd2hvIGNvbnRyaWJ1dGVkIHRvIHRoaXMKKyAqIHByb2plY3QuCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgorICogbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKKyAqIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCisgKiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKyAqCisgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCisgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuIFNlZSB0aGUKKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisgKgorICogWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKyAqIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisgKiBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLAorICogTUEgMDIxMTEtMTMwNyBVU0EKKyAqLworCisvKgorICogQ29yZW5ldCBEUyBzdHlsZSBib2FyZCBjb25maWd1cmF0aW9uIGZpbGUKKyAqLworI2lmbmRlZiBfX0NPTkZJR19ICisjZGVmaW5lIF9fQ09ORklHX0gKKworI2luY2x1ZGUgIi4uL2JvYXJkL2ZyZWVzY2FsZS9jb21tb24vaWNzMzA3X2Nsay5oIgorCisvKiBIaWdoIExldmVsIENvbmZpZ3VyYXRpb24gT3B0aW9ucyAqLworI2RlZmluZSBDT05GSUdfQk9PS0UKKyNkZWZpbmUgQ09ORklHX0U1MDAJCQkvKiBCT09LRSBlNTAwIGZhbWlseSAqLworI2RlZmluZSBDT05GSUdfRTUwME1DCQkJLyogQk9PS0UgZTUwMG1jIGZhbWlseSAqLworI2RlZmluZSBDT05GSUdfU1lTX0JPT0szRV9IVgkJLyogQ2F0ZWdvcnkgRS5IViBzdXBwb3J0ZWQgKi8KKyNkZWZpbmUgQ09ORklHX01QQzg1eHgJCQkvKiBNUEM4NXh4L1BRMyBwbGF0Zm9ybSAqLworI2RlZmluZSBDT05GSUdfRlNMX0NPUkVORVQJCS8qIEZyZWVzY2FsZSBDb3JlTmV0IHBsYXRmb3JtICovCisjZGVmaW5lIENPTkZJR19NUAkJCS8qIHN1cHBvcnQgbXVsdGlwbGUgcHJvY2Vzc29ycyAqLworCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0NQQwkJLyogQ29yZW5ldCBQbGF0Zm9ybSBDYWNoZSAqLworI2RlZmluZSBDT05GSUdfU1lTX05VTV9DUEMJCUNPTkZJR19OVU1fRERSX0NPTlRST0xMRVJTCisjZGVmaW5lIENPTkZJR19GU0xfRUxCQwkJCS8qIEhhcyBFbmhhbmNlZCBsb2NhbGJ1cyBjb250cm9sbGVyICovCisjZGVmaW5lIENPTkZJR19QQ0kJCQkvKiBFbmFibGUgUENJL1BDSUUgKi8KKyNkZWZpbmUgQ09ORklHX1BDSUUxCQkJLyogUENJRSBjb250cm9sZXIgMSAqLworI2RlZmluZSBDT05GSUdfUENJRTIJCQkvKiBQQ0lFIGNvbnRyb2xlciAyICovCisjZGVmaW5lIENPTkZJR19QQ0lFMwkJCS8qIFBDSUUgY29udHJvbGVyIDMgKi8KKyNkZWZpbmUgQ09ORklHX0ZTTF9QQ0lfSU5JVAkJLyogVXNlIGNvbW1vbiBGU0wgaW5pdCBjb2RlICovCisjZGVmaW5lIENPTkZJR19TWVNfUENJXzY0QklUCQkvKiBlbmFibGUgNjQtYml0IFBDSSByZXNvdXJjZXMgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19IQVNfU0VSREVTCQkvKiBoYXMgU0VSREVTICovCisKKyNkZWZpbmUgQ09ORklHX1NSSU8xCQkJLyogU1JJTyBwb3J0IDEgKi8KKyNkZWZpbmUgQ09ORklHX1NSSU8yCQkJLyogU1JJTyBwb3J0IDIgKi8KKworI2RlZmluZSBDT05GSUdfRlNMX0xBVwkJCS8qIFVzZSBjb21tb24gRlNMIGluaXQgY29kZSAqLworCisjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCisKKyNpZmRlZiBDT05GSUdfU1lTX05PX0ZMQVNICisjZGVmaW5lIENPTkZJR19FTlZfSVNfTk9XSEVSRQorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX0VOVl9JU19JTl9GTEFTSAorI2RlZmluZSBDT05GSUdfRkxBU0hfQ0ZJX0RSSVZFUgorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0NGSQorI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1NZU19DTEtfRlJFUQlnZXRfYm9hcmRfc3lzX2NsaygpIC8qIHN5c2NsayBmb3IgTVBDODV4eCAqLworI2RlZmluZSBDT05GSUdfSUNTMzA3X1JFRkNMS19IWgkzMzMzMzAwMCAgLyogSUNTMzA3IGNsb2NrIGNoaXAgcmVmIGZyZXEgKi8KKworLyoKKyAqIFRoZXNlIGNhbiBiZSB0b2dnbGVkIGZvciBwZXJmb3JtYW5jZSBhbmFseXNpcywgb3RoZXJ3aXNlIHVzZSBkZWZhdWx0LgorICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0FDSEVfU1RBU0hJTkcKKyNkZWZpbmUgQ09ORklHX0JBQ0tTSURFX0wyX0NBQ0hFCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9MMkNTUjAJCUwyQ1NSMF9MMkUKKyNkZWZpbmUgQ09ORklHX0JUQgkJCS8qIHRvZ2dsZSBicmFuY2ggcHJlZGl0aW9uICovCisvLyNkZWZpbmUJQ09ORklHX0REUl9FQ0MKKyNpZmRlZiBDT05GSUdfRERSX0VDQworI2RlZmluZSBDT05GSUdfRUNDX0lOSVRfVklBX0REUkNPTlRST0xMRVIKKyNkZWZpbmUgQ09ORklHX01FTV9JTklUX1ZBTFVFCQkweGRlYWRiZWVmCisjZW5kaWYKKworI2RlZmluZSBDT05GSUdfRU5BQkxFXzM2QklUX1BIWVMKKworI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19BRERSX01BUAorI2RlZmluZSBDT05GSUdfU1lTX05VTV9BRERSX01BUAkJNjQJLyogbnVtYmVyIG9mIFRMQjEgZW50cmllcyAqLworI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1NZU19NRU1URVNUX1NUQVJUCTB4MDAyMDAwMDAJLyogbWVtdGVzdCB3b3JrcyBvbiAqLworI2RlZmluZSBDT05GSUdfU1lTX01FTVRFU1RfRU5ECQkweDAwNDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfQUxUX01FTVRFU1QKKyNkZWZpbmUgQ09ORklHX1BBTklDX0hBTkcJLyogZG8gbm90IHJlc2V0IGJvYXJkIG9uIHBhbmljICovCisKKy8qCisgKiBCYXNlIGFkZHJlc3NlcyAtLSBOb3RlIHRoZXNlIGFyZSBlZmZlY3RpdmUgYWRkcmVzc2VzIHdoZXJlIHRoZQorICogYWN0dWFsIHJlc291cmNlcyBnZXQgbWFwcGVkIChub3QgcGh5c2ljYWwgYWRkcmVzc2VzKQorICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0NTUkJBUl9ERUZBVUxUCTB4ZmUwMDAwMDAJLyogQ0NTUkJBUiBEZWZhdWx0ICovCisjZGVmaW5lIENPTkZJR19TWVNfQ0NTUkJBUgkJMHhmZTAwMDAwMAkvKiByZWxvY2F0ZWQgQ0NTUkJBUiAqLworI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTCQkweGZmZTAwMDAwMHVsbAkvKiBwaHlzaWNhbCBhZGRyIG9mIENDU1JCQVIgKi8KKyNlbHNlCisjZGVmaW5lIENPTkZJR19TWVNfQ0NTUkJBUl9QSFlTCUNPTkZJR19TWVNfQ0NTUkJBUgkvKiBwaHlzaWNhbCBhZGRyIG9mIENDU1JCQVIgKi8KKyNlbmRpZgorI2RlZmluZSBDT05GSUdfU1lTX0lNTVIJCUNPTkZJR19TWVNfQ0NTUkJBUgkvKiBQUUlJIHVzZXMgQ09ORklHX1NZU19JTU1SICovCisKKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX0RDU1JCQVIJCTB4ZjAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19EQ1NSQkFSX1BIWVMJCTB4ZjAwMDAwMDAwdWxsCisjZW5kaWYKKworLyogRUVQUk9NICovCisjZGVmaW5lIENPTkZJR19JRF9FRVBST00KKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfRUVQUk9NX05YSUQKKyNkZWZpbmUgQ09ORklHX1NZU19FRVBST01fQlVTX05VTQkwCisjZGVmaW5lIENPTkZJR19TWVNfSTJDX0VFUFJPTV9BRERSCTB4NTcKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfRUVQUk9NX0FERFJfTEVOCTEKKworLyoKKyAqIEREUiBTZXR1cAorICovCisjZGVmaW5lIENPTkZJR19WRVJZX0JJR19SQU0KKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRQkweDAwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fQkFTRQkJQ09ORklHX1NZU19ERFJfU0RSQU1fQkFTRQorCisjZGVmaW5lIENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSCTEKKyNkZWZpbmUgQ09ORklHX0NISVBfU0VMRUNUU19QRVJfQ1RSTAkoMiAqIENPTkZJR19ESU1NX1NMT1RTX1BFUl9DVExSKQorCisjZGVmaW5lIENPTkZJR19ERFJfU1BECisjZGVmaW5lIENPTkZJR19GU0xfRERSMworCisjaWZkZWYgQ09ORklHX0REUl9TUEQKKyNkZWZpbmUgQ09ORklHX1NZU19TUERfQlVTX05VTQkxCisjZGVmaW5lIFNQRF9FRVBST01fQUREUkVTUzEJMHg1MQorI2RlZmluZSBTUERfRUVQUk9NX0FERFJFU1MyCTB4NTIKKyNlbHNlCisjZGVmaW5lIENPTkZJR19TWVNfU0RSQU1fU0laRQkJNDA5NgorCisjZGVmaW5lIENPTkZJR19TWVNfRERSX0NTMF9CTkRTCQkweDAwMDAwMDNmCisjZGVmaW5lIENPTkZJR19TWVNfRERSX0NTMV9CTkRTCQkweDAwNDAwMDdmCisjZGVmaW5lIENPTkZJR19TWVNfRERSX0NTMF9DT05GSUcJMHg4MDAxNDIwMgorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DUzFfQ09ORklHCTB4ODAwMTQyMDIKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzMJCTB4MDEwMzEwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzAJCTB4NTU0NDA4MDQKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzEJCTB4NzQ3MTNhNjYKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfVElNSU5HXzIJCTB4MGZiODkxMWIKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfTU9ERV8xCQkweDAwNDIxODUwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX01PREVfMgkJMHgwMDEwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9NT0RFX0NUUkwJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9JTlRFUlZBTAkJMHgxMDQwMDEwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9EQVRBX0lOSVQJMHhkZWFkYmVlZgorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DTEtfQ1RSTAkJMHgwMzAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfNAkJMHgwMDIyMDAwMQorI2RlZmluZSBDT05GSUdfU1lTX0REUl9USU1JTkdfNQkJMHgwMzQwMTUwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9aUV9DTlRMCQkweDg5MDgwNjAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwJMHg4NjU1YTYwOAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9DT05UUk9MCQkweGM3MDQ4MDAwCisjZGVmaW5lIENPTkZJR19TWVNfRERSX0NPTlRST0wyCQkweDI0NDAwMDExCisjZGVmaW5lIENPTkZJR19TWVNfRERSX0NEUjEJCTB4MDAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfQ0RSMgkJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9FUlJfSU5UX0VOCTB4MDAwMDAwMGQKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfRVJSX0RJUwkJMHgwMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX0REUl9TQkUJCTB4MDAwMTAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19ERFJfREVCVUdfMTgJCTB4NDAxMDA0MDAKKworI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MwX0JORFMJMHgwMDgwMDBiZgorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MxX0JORFMJMHgwMEMwMDBmZgorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfQ1MwX0NPTkZJRwlDT05GSUdfU1lTX0REUl9DUzBfQ09ORklHCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9DUzFfQ09ORklHCUNPTkZJR19TWVNfRERSX0NTMV9DT05GSUcKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX1RJTUlOR18zCUNPTkZJR19TWVNfRERSX1RJTUlOR18zCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9USU1JTkdfMAlDT05GSUdfU1lTX0REUl9USU1JTkdfMAorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfVElNSU5HXzEJQ09ORklHX1NZU19ERFJfVElNSU5HXzEKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX1RJTUlOR18yCUNPTkZJR19TWVNfRERSX1RJTUlOR18yCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9NT0RFXzEJCUNPTkZJR19TWVNfRERSX01PREVfMQorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfTU9ERV8yCQlDT05GSUdfU1lTX0REUl9NT0RFXzIKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX01PREVfQ1RSTAlDT05GSUdfU1lTX0REUl9NT0RFX0NUUkwKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0lOVEVSVkFMCUNPTkZJR19TWVNfRERSX0lOVEVSVkFMCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9EQVRBX0lOSVQJQ09ORklHX1NZU19ERFJfREFUQV9JTklUCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9DTEtfQ1RSTAlDT05GSUdfU1lTX0REUl9DTEtfQ1RSTAorI2RlZmluZSBDT05GSUdfU1lTX0REUjJfVElNSU5HXzQJQ09ORklHX1NZU19ERFJfVElNSU5HXzQKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX1RJTUlOR181CUNPTkZJR19TWVNfRERSX1RJTUlOR181CisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9aUV9DTlRMCQlDT05GSUdfU1lTX0REUl9aUV9DTlRMCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9XUkxWTF9DTlRMCUNPTkZJR19TWVNfRERSX1dSTFZMX0NOVEwKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NPTlRST0wJCUNPTkZJR19TWVNfRERSX0NPTlRST0wKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0NPTlRST0wyCUNPTkZJR19TWVNfRERSX0NPTlRST0wyCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9DRFIxCQlDT05GSUdfU1lTX0REUl9DRFIxCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9DRFIyCQlDT05GSUdfU1lTX0REUl9DRFIyCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9FUlJfSU5UX0VOCUNPTkZJR19TWVNfRERSX0VSUl9JTlRfRU4KKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX0VSUl9ESVMJCUNPTkZJR19TWVNfRERSX0VSUl9ESVMKKyNkZWZpbmUgQ09ORklHX1NZU19ERFIyX1NCRQkJQ09ORklHX1NZU19ERFJfU0JFCisjZGVmaW5lIENPTkZJR19TWVNfRERSMl9ERUJVR18xOAlDT05GSUdfU1lTX0REUl9ERUJVR18xOAorCisjZW5kaWYKKworLyoKKyAqIExvY2FsIEJ1cyBEZWZpbml0aW9ucworICovCisKKy8qIFNldCB0aGUgbG9jYWwgYnVzIGNsb2NrIDEvOCBvZiBwbGF0Zm9ybSBjbG9jayAqLworI2RlZmluZSBDT05GSUdfU1lTX0xCQ19MQ1JSCQlMQ1JSX0NMS0RJVl84CisKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFCQkweGUwMDAwMDAwCS8qIFN0YXJ0IG9mIFByb21KZXQgKi8KKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUwkweGZlMDAwMDAwMHVsbAorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9CQVNFX1BIWVMJQ09ORklHX1NZU19GTEFTSF9CQVNFCisjZW5kaWYKKworI2RlZmluZSBDT05GSUdfU1lTX0JSMF9QUkVMSU0gXAorCShCUl9QSFlTX0FERFIoKENPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTICsgMHg4MDAwMDAwKSkgfCBcCisJIEJSX1BTXzE2IHwgQlJfVikKKyNkZWZpbmUgQ09ORklHX1NZU19PUjBfUFJFTElNCSgoMHhmODAwMGZmNyAmIH5PUl9HUENNX1NDWSAmIH5PUl9HUENNX0VIVFIpIFwKKwkJCQkJfCBPUl9HUENNX1NDWV84IHwgT1JfR1BDTV9FSFRSX0NMRUFSKQorCisjZGVmaW5lIENPTkZJR19TWVNfQlIxX1BSRUxJTSBcCisJKEJSX1BIWVNfQUREUihDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZUykgfCBCUl9QU18xNiB8IEJSX1YpCisjZGVmaW5lIENPTkZJR19TWVNfT1IxX1BSRUxJTQkweGY4MDAwZmY3CisKKyNkZWZpbmUgQ09ORklHX0ZTTF9OR1BJWElTCQkvKiB1c2UgY29tbW9uIG5nUElYSVMgY29kZSAqLworI2RlZmluZSBQSVhJU19CQVNFCQkweGZmZGYwMDAwCS8qIFBJWElTIHJlZ2lzdGVycyAqLworI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIFBJWElTX0JBU0VfUEhZUwkJMHhmZmZkZjAwMDB1bGwKKyNlbHNlCisjZGVmaW5lIFBJWElTX0JBU0VfUEhZUwkJUElYSVNfQkFTRQorI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1NZU19CUjNfUFJFTElNCShCUl9QSFlTX0FERFIoUElYSVNfQkFTRV9QSFlTKSB8IEJSX1BTXzggfCBCUl9WKQorI2RlZmluZSBDT05GSUdfU1lTX09SM19QUkVMSU0JMHhmZmZmZWZmNwkvKiAzMktCIGJ1dCBvbmx5IDRrIG1hcHBlZCAqLworCisjZGVmaW5lIFBJWElTX0xCTUFQX1NXSVRDSAk3CisjZGVmaW5lIFBJWElTX0xCTUFQX01BU0sJMHhmMAorI2RlZmluZSBQSVhJU19MQk1BUF9TSElGVAk0CisjZGVmaW5lIFBJWElTX0xCTUFQX0FMVEJBTksJMHg0MAorCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfUVVJRVRfVEVTVAorI2RlZmluZSBDT05GSUdfRkxBU0hfU0hPV19QUk9HUkVTUyAJNDUgLyogY291bnQgZG93biBmcm9tIDQ1LzU6IDkuLjEgKi8KKworI2RlZmluZSBDT05GSUdfU1lTX01BWF9GTEFTSF9CQU5LUwkyCQkvKiBudW1iZXIgb2YgYmFua3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQVhfRkxBU0hfU0VDVAkxMDI0CQkvKiBzZWN0b3JzIHBlciBkZXZpY2UgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FUkFTRV9UT1VUCTYwMDAwCQkvKiBGbGFzaCBFcmFzZSBUaW1lb3V0IChtcykgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9XUklURV9UT1VUCTUwMAkJLyogRmxhc2ggV3JpdGUgVGltZW91dCAobXMpICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19NT05JVE9SX0JBU0UJCVRFWFRfQkFTRQkvKiBzdGFydCBvZiBtb25pdG9yICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19GTEFTSF9FTVBUWV9JTkZPCisjZGVmaW5lIENPTkZJR19TWVNfRkxBU0hfQU1EX0NIRUNLX0RRNworI2RlZmluZSBDT05GSUdfU1lTX0ZMQVNIX0JBTktTX0xJU1QJe0NPTkZJR19TWVNfRkxBU0hfQkFTRV9QSFlTICsgMHg4MDAwMDAwLCBDT05GSUdfU1lTX0ZMQVNIX0JBU0VfUEhZU30KKworI2RlZmluZSBDT05GSUdfQk9BUkRfRUFSTFlfSU5JVF9GCisjZGVmaW5lIENPTkZJR19CT0FSRF9FQVJMWV9JTklUX1IJLyogY2FsbCBib2FyZF9lYXJseV9pbml0X3IgZnVuY3Rpb24gKi8KKyNkZWZpbmUgQ09ORklHX01JU0NfSU5JVF9SCisKKyNkZWZpbmUgQ09ORklHX0hXQ09ORklHCisKKy8qIGRlZmluZSB0byB1c2UgTDEgYXMgaW5pdGlhbCBzdGFjayAqLworI2RlZmluZSBDT05GSUdfTDFfSU5JVF9SQU0KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9MT0NLCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUgkweGZkZDAwMDAwCS8qIEluaXRpYWwgTDEgYWRkcmVzcyAqLworI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTX0hJR0ggMHhmCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTX0xPVyBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFIKKy8qIFRoZSBhc3NlbWJsZXIgZG9lc24ndCBsaWtlIHR5cGVjYXN0ICovCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTIFwKKwkoKENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTX0hJR0ggKiAxdWxsIDw8IDMyKSB8IFwKKwkgIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTX0xPVykKKyNlbHNlCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTCUNPTkZJR19TWVNfSU5JVF9SQU1fQUREUiAvKiBJbml0aWFsIEwxIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1JBTV9BRERSX1BIWVNfSElHSCAwCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fQUREUl9QSFlTX0xPVyBDT05GSUdfU1lTX0lOSVRfUkFNX0FERFJfUEhZUworI2VuZGlmCisjZGVmaW5lIENPTkZJR19TWVNfSU5JVF9SQU1fRU5ECQkweDAwMDA0MDAwCS8qIEVuZCBvZiB1c2VkIGFyZWEgaW4gUkFNICovCisKKyNkZWZpbmUgQ09ORklHX1NZU19HQkxfREFUQV9TSVpFCTEyOAkvKiBudW0gYnl0ZXMgaW5pdGlhbCBkYXRhICovCisjZGVmaW5lIENPTkZJR19TWVNfR0JMX0RBVEFfT0ZGU0VUCShDT05GSUdfU1lTX0lOSVRfUkFNX0VORCAtIENPTkZJR19TWVNfR0JMX0RBVEFfU0laRSkKKyNkZWZpbmUgQ09ORklHX1NZU19JTklUX1NQX09GRlNFVAlDT05GSUdfU1lTX0dCTF9EQVRBX09GRlNFVAorCisjZGVmaW5lIENPTkZJR19TWVNfTU9OSVRPUl9MRU4JCSg1MTIgKiAxMDI0KQorI2RlZmluZSBDT05GSUdfU1lTX01BTExPQ19MRU4JCSgxMDI0ICogMTAyNCkJLyogUmVzZXJ2ZWQgZm9yIG1hbGxvYyAqLworCisvKiBTZXJpYWwgUG9ydCAtIGNvbnRyb2xsZWQgb24gYm9hcmQgd2l0aCBqdW1wZXIgSjgKKyAqIG9wZW4gLSBpbmRleCAyCisgKiBzaG9ydGVkIC0gaW5kZXggMQorICovCisjZGVmaW5lIENPTkZJR19DT05TX0lOREVYCTEKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9TRVJJQUwKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX1JFR19TSVpFCTEKKyNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NMSwkJKGdldF9idXNfZnJlcSgwKS8yKQorCisjZGVmaW5lIENPTkZJR19TWVNfQkFVRFJBVEVfVEFCTEUJXAorCXszMDAsIDYwMCwgMTIwMCwgMjQwMCwgNDgwMCwgOTYwMCwgMTkyMDAsIDM4NDAwLCA1NzYwMCwgMTE1MjAwfQorCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00xCShDT05GSUdfU1lTX0NDU1JCQVIrMHgxMUM1MDApCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00yCShDT05GSUdfU1lTX0NDU1JCQVIrMHgxMUM2MDApCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT00zCShDT05GSUdfU1lTX0NDU1JCQVIrMHgxMUQ1MDApCisjZGVmaW5lIENPTkZJR19TWVNfTlMxNjU1MF9DT000CShDT05GSUdfU1lTX0NDU1JCQVIrMHgxMUQ2MDApCisKKy8qIFVzZSB0aGUgSFVTSCBwYXJzZXIgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19IVVNIX1BBUlNFUgorI2RlZmluZSBDT05GSUdfU1lTX1BST01QVF9IVVNIX1BTMiAiPiAiCisKKy8qIHBhc3Mgb3BlbiBmaXJtd2FyZSBmbGF0IHRyZWUgKi8KKyNkZWZpbmUgQ09ORklHX09GX0xJQkZEVAorI2RlZmluZSBDT05GSUdfT0ZfQk9BUkRfU0VUVVAKKyNkZWZpbmUgQ09ORklHX09GX1NURE9VVF9WSUFfQUxJQVMKKworLyogbmV3IHVJbWFnZSBmb3JtYXQgc3VwcG9ydCAqLworI2RlZmluZSBDT05GSUdfRklUCisjZGVmaW5lIENPTkZJR19GSVRfVkVSQk9TRQkvKiBlbmFibGUgZml0X2Zvcm1hdF97ZXJyb3Isd2FybmluZ30oKSAqLworCisvKiBJMkMgKi8KKyNkZWZpbmUgQ09ORklHX0ZTTF9JMkMJCS8qIFVzZSBGU0wgY29tbW9uIEkyQyBkcml2ZXIgKi8KKyNkZWZpbmUgQ09ORklHX0hBUkRfSTJDCQkvKiBJMkMgd2l0aCBoYXJkd2FyZSBzdXBwb3J0ICovCisjZGVmaW5lIENPTkZJR19JMkNfTVVMVElfQlVTCisjZGVmaW5lIENPTkZJR19JMkNfQ01EX1RSRUUKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfU1BFRUQJCTQwMDAwMAkvKiBJMkMgc3BlZWQgYW5kIHNsYXZlIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfU0xBVkUJCTB4N0YKKyNkZWZpbmUgQ09ORklHX1NZU19JMkNfT0ZGU0VUCQkweDExODAwMAorI2RlZmluZSBDT05GSUdfU1lTX0kyQzJfT0ZGU0VUCQkweDExODEwMAorCisvKgorICogUmFwaWRJTworICovCisjZGVmaW5lIENPTkZJR19TWVNfUklPMV9NRU1fVklSVAkweGEwMDAwMDAwCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19SSU8xX01FTV9QSFlTCTB4YzIwMDAwMDAwdWxsCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX1JJTzFfTUVNX1BIWVMJMHhhMDAwMDAwMAorI2VuZGlmCisjZGVmaW5lIENPTkZJR19TWVNfUklPMV9NRU1fU0laRQkweDEwMDAwMDAwCS8qIDI1Nk0gKi8KKworI2RlZmluZSBDT05GSUdfU1lTX1JJTzJfTUVNX1ZJUlQJMHhiMDAwMDAwMAorI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfUklPMl9NRU1fUEhZUwkweGMzMDAwMDAwMHVsbAorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19SSU8yX01FTV9QSFlTCTB4YjAwMDAwMDAKKyNlbmRpZgorI2RlZmluZSBDT05GSUdfU1lTX1JJTzJfTUVNX1NJWkUJMHgxMDAwMDAwMAkvKiAyNTZNICovCisKKy8qCisgKiBHZW5lcmFsIFBDSQorICogTWVtb3J5IHNwYWNlIGlzIG1hcHBlZCAxLTEsIGJ1dCBJL08gc3BhY2UgbXVzdCBzdGFydCBmcm9tIDAuCisgKi8KKworLyogY29udHJvbGxlciAxLCBkaXJlY3QgdG8gdWxpLCB0Z3RpZCAzLCBCYXNlIGFkZHJlc3MgMjAwMDAgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fVklSVAkweDgwMDAwMDAwCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4ZTAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwkweGMwMDAwMDAwMHVsbAorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fQlVTCTB4ODAwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fUEhZUwkweDgwMDAwMDAwCisjZW5kaWYKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9NRU1fU0laRQkweDIwMDAwMDAwCS8qIDUxMk0gKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19WSVJUCTB4ZjgwMDAwMDAKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19CVVMJCTB4MDAwMDAwMDAKKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUxX0lPX1BIWVMJMHhmZjgwMDAwMDB1bGwKKyNlbHNlCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTFfSU9fUEhZUwkweGY4MDAwMDAwCisjZW5kaWYKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMV9JT19TSVpFCTB4MDAwMTAwMDAJLyogNjRrICovCisKKy8qIGNvbnRyb2xsZXIgMiwgU2xvdCAyLCB0Z3RpZCAyLCBCYXNlIGFkZHJlc3MgMjAxMDAwICovCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1ZJUlQJMHhhMDAwMDAwMAorI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUwkweGUwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJMHhjMjAwMDAwMDB1bGwKKyNlbHNlCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX0JVUwkweGEwMDAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1BIWVMJMHhhMDAwMDAwMAorI2VuZGlmCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfTUVNX1NJWkUJMHgyMDAwMDAwMAkvKiA1MTJNICovCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fVklSVAkweGY4MDEwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fQlVTCQkweDAwMDAwMDAwCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFMl9JT19QSFlTCTB4ZmY4MDEwMDAwdWxsCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUyX0lPX1BIWVMJMHhmODAxMDAwMAorI2VuZGlmCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTJfSU9fU0laRQkweDAwMDEwMDAwCS8qIDY0ayAqLworCisvKiBjb250cm9sbGVyIDMsIFNsb3QgMSwgdGd0aWQgMSwgQmFzZSBhZGRyZXNzIDIwMjAwMCAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9WSVJUCTB4ZTAwMDAwMDAKKyNpZmRlZiBDT05GSUdfUEhZU182NEJJVAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9CVVMJMHhlMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTCTB4YzQwMDAwMDAwdWxsCisjZWxzZQorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9CVVMJMHhjMDAwMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9QSFlTCTB4YzAwMDAwMDAKKyNlbmRpZgorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX01FTV9TSVpFCTB4MjAwMDAwMDAJLyogNTEyTSAqLworI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX1ZJUlQJMHhmODAyMDAwMAorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX0JVUwkJMHgwMDAwMDAwMAorI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfUENJRTNfSU9fUEhZUwkweGZmODAyMDAwMHVsbAorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19QQ0lFM19JT19QSFlTCTB4ZjgwMjAwMDAKKyNlbmRpZgorI2RlZmluZSBDT05GSUdfU1lTX1BDSUUzX0lPX1NJWkUJMHgwMDAxMDAwMAkvKiA2NGsgKi8KKworLyogUW1hbi9CbWFuICovCisjZGVmaW5lIENPTkZJR19TWVNfQk1BTl9OVU1fUE9SVEFMUwkxMAorI2RlZmluZSBDT05GSUdfU1lTX0JNQU5fTUVNX0JBU0UJMHhmNDAwMDAwMAorI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfQk1BTl9NRU1fUEhZUwkweGZmNDAwMDAwMHVsbAorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19CTUFOX01FTV9QSFlTCUNPTkZJR19TWVNfQk1BTl9NRU1fQkFTRQorI2VuZGlmCisjZGVmaW5lIENPTkZJR19TWVNfQk1BTl9NRU1fU0laRQkweDAwMjAwMDAwCisjZGVmaW5lIENPTkZJR19TWVNfUU1BTl9OVU1fUE9SVEFMUwkxMAorI2RlZmluZSBDT05GSUdfU1lTX1FNQU5fTUVNX0JBU0UJMHhmNDIwMDAwMAorI2lmZGVmIENPTkZJR19QSFlTXzY0QklUCisjZGVmaW5lIENPTkZJR19TWVNfUU1BTl9NRU1fUEhZUwkweGZmNDIwMDAwMHVsbAorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19RTUFOX01FTV9QSFlTCUNPTkZJR19TWVNfUU1BTl9NRU1fQkFTRQorI2VuZGlmCisjZGVmaW5lIENPTkZJR19TWVNfUU1BTl9NRU1fU0laRQkweDAwMjAwMDAwCisKKyNkZWZpbmUgQ09ORklHX1NZU19EUEFBX0ZNQU4KKyNkZWZpbmUgQ09ORklHX1NZU19EUEFBX1BNRQorLyogRGVmYXVsdCBhZGRyZXNzIG9mIG1pY3JvY29kZSBmb3IgdGhlIExpbnV4IEZtYW4gZHJpdmVyICovCisjZGVmaW5lIENPTkZJR19TWVNfRk1BTl9GV19BRERSCQkweEVGMDAwMDAwCisjaWZkZWYgQ09ORklHX1BIWVNfNjRCSVQKKyNkZWZpbmUgQ09ORklHX1NZU19GTUFOX0ZXX0FERFJfUEhZUwkweEZFRjAwMDAwMFVMTAorI2Vsc2UKKyNkZWZpbmUgQ09ORklHX1NZU19GTUFOX0ZXX0FERFJfUEhZUwlDT05GSUdfU1lTX0ZNQU5fRldfQUREUgorI2VuZGlmCisKKyNpZmRlZiBDT05GSUdfU1lTX0RQQUFfRk1BTgorI2RlZmluZSBDT05GSUdfRk1BTl9FTkVUCisjZW5kaWYKKworI2lmZGVmIENPTkZJR19QQ0kKKworLypQQ0lFIHZpZGVvIGNhcmQgdXNlZCovCisjZGVmaW5lIFZJREVPX0lPX09GRlNFVAkJQ09ORklHX1NZU19QQ0lFMV9JT19WSVJUCisKKy8qIHZpZGVvICovCisjZGVmaW5lIENPTkZJR19WSURFTworCisjaWZkZWYgQ09ORklHX1ZJREVPCisjZGVmaW5lIENPTkZJR19CSU9TRU1VCisjZGVmaW5lIENPTkZJR19DRkJfQ09OU09MRQorI2RlZmluZSBDT05GSUdfVklERU9fU1dfQ1VSU09SCisjZGVmaW5lIENPTkZJR19WR0FfQVNfU0lOR0xFX0RFVklDRQorI2RlZmluZSBDT05GSUdfQVRJX1JBREVPTl9GQgorI2RlZmluZSBDT05GSUdfVklERU9fTE9HTworI2RlZmluZSBDT05GSUdfU1lTX0lTQV9JT19CQVNFX0FERFJFU1MgVklERU9fSU9fT0ZGU0VUCisjZW5kaWYKKworI2RlZmluZSBDT05GSUdfTkVUX01VTFRJCisjZGVmaW5lIENPTkZJR19QQ0lfUE5QCQkJLyogZG8gcGNpIHBsdWctYW5kLXBsYXkgKi8KKyNkZWZpbmUgQ09ORklHX0UxMDAwCisKKyNpZm5kZWYgQ09ORklHX1BDSV9QTlAKKyNkZWZpbmUgUENJX0VORVQwX0lPQUREUgkJQ09ORklHX1NZU19QQ0kxX0lPX0JVUworI2RlZmluZSBQQ0lfRU5FVDBfTUVNQUREUgkJQ09ORklHX1NZU19QQ0kxX0lPX0JVUworI2RlZmluZSBQQ0lfSURTRUxfTlVNQkVSCQkweDExCS8qIElEU0VMID0gQUQxMSAqLworI2VuZGlmCisKKyNkZWZpbmUgQ09ORklHX1BDSV9TQ0FOX1NIT1cJCS8qIHNob3cgcGNpIGRldmljZXMgb24gc3RhcnR1cCAqLworI2RlZmluZSBDT05GSUdfRE9TX1BBUlRJVElPTgorI2VuZGlmCS8qIENPTkZJR19QQ0kgKi8KKworLyogU0FUQSAqLworI2lmZGVmIENPTkZJR19GU0xfU0FUQV9WMgorI2RlZmluZSBDT05GSUdfTElCQVRBCisjZGVmaW5lIENPTkZJR19GU0xfU0FUQQorCisjZGVmaW5lIENPTkZJR19TWVNfU0FUQV9NQVhfREVWSUNFCTIKKyNkZWZpbmUgQ09ORklHX1NBVEExCisjZGVmaW5lIENPTkZJR19TWVNfU0FUQTEJCUNPTkZJR19TWVNfTVBDODV4eF9TQVRBMV9BRERSCisjZGVmaW5lIENPTkZJR19TWVNfU0FUQTFfRkxBR1MJCUZMQUdTX0RNQQorI2RlZmluZSBDT05GSUdfU0FUQTIKKyNkZWZpbmUgQ09ORklHX1NZU19TQVRBMgkJQ09ORklHX1NZU19NUEM4NXh4X1NBVEEyX0FERFIKKyNkZWZpbmUgQ09ORklHX1NZU19TQVRBMl9GTEFHUwkJRkxBR1NfRE1BCisKKyNkZWZpbmUgQ09ORklHX0xCQTQ4CisjZGVmaW5lIENPTkZJR19DTURfU0FUQQorI2RlZmluZSBDT05GSUdfRE9TX1BBUlRJVElPTgorI2RlZmluZSBDT05GSUdfQ01EX0VYVDIKKyNlbmRpZgorCisjaWZkZWYgQ09ORklHX0ZNQU5fRU5FVAorI2RlZmluZSBDT05GSUdfU1lTX0ZNMV9EVFNFQzFfUEhZX0FERFIJMHgxYworI2RlZmluZSBDT05GSUdfU1lTX0ZNMV9EVFNFQzJfUEhZX0FERFIJMHgxZAorI2RlZmluZSBDT05GSUdfU1lTX0ZNMV9EVFNFQzNfUEhZX0FERFIJMHgxZQorI2RlZmluZSBDT05GSUdfU1lTX0ZNMV9EVFNFQzRfUEhZX0FERFIJMHgxZgorI2RlZmluZSBDT05GSUdfU1lTX0ZNMV8xMEdFQzFfUEhZX0FERFIJNAorCisjaWYgKENPTkZJR19TWVNfTlVNX0ZNQU4gPT0gMikKKyNkZWZpbmUgQ09ORklHX1NZU19GTTJfRFRTRUMxX1BIWV9BRERSCTB4MWMKKyNkZWZpbmUgQ09ORklHX1NZU19GTTJfRFRTRUMyX1BIWV9BRERSCTB4MWQKKyNkZWZpbmUgQ09ORklHX1NZU19GTTJfRFRTRUMzX1BIWV9BRERSCTB4MWUKKyNkZWZpbmUgQ09ORklHX1NZU19GTTJfRFRTRUM0X1BIWV9BRERSCTB4MWYKKyNkZWZpbmUgQ09ORklHX1NZU19GTTJfMTBHRUMxX1BIWV9BRERSCTAKKyNlbmRpZgorCisjZGVmaW5lIENPTkZJR19TWVNfVEJJUEFfVkFMVUUJOAorI2RlZmluZSBDT05GSUdfTUlJCQkvKiBNSUkgUEhZIG1hbmFnZW1lbnQgKi8KKyNkZWZpbmUgQ09ORklHX0VUSFBSSU1FCQkiRk0xQERUU0VDMSIKKyNkZWZpbmUgQ09ORklHX1BIWV9HSUdFCQkvKiBJbmNsdWRlIEdiRSBzcGVlZC9kdXBsZXggZGV0ZWN0aW9uICovCisjZW5kaWYKKworLyoKKyAqIEVudmlyb25tZW50CisgKi8KKyNkZWZpbmUgQ09ORklHX0VOVl9BRERSCQkoQ09ORklHX1NZU19NT05JVE9SX0JBU0UgLSBDT05GSUdfRU5WX1NFQ1RfU0laRSkKKyNkZWZpbmUgQ09ORklHX0VOVl9TSVpFCQkweDIwMDAKKyNkZWZpbmUgQ09ORklHX0VOVl9TRUNUX1NJWkUJMHgyMDAwMCAvKiAxMjhLIChvbmUgc2VjdG9yKSAqLworCisjZGVmaW5lIENPTkZJR19MT0FEU19FQ0hPCQkvKiBlY2hvIG9uIGZvciBzZXJpYWwgZG93bmxvYWQgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19MT0FEU19CQVVEX0NIQU5HRQkvKiBhbGxvdyBiYXVkcmF0ZSBjaGFuZ2UgKi8KKworLyoKKyAqIENvbW1hbmQgbGluZSBjb25maWd1cmF0aW9uLgorICovCisjaW5jbHVkZSA8Y29uZmlnX2NtZF9kZWZhdWx0Lmg+CisKKyNkZWZpbmUgQ09ORklHX0NNRF9FTEYKKyNkZWZpbmUgQ09ORklHX0NNRF9FUlJBVEEKKyNkZWZpbmUgQ09ORklHX0NNRF9JUlEKKyNkZWZpbmUgQ09ORklHX0NNRF9JMkMKKyNkZWZpbmUgQ09ORklHX0NNRF9NSUkKKyNkZWZpbmUgQ09ORklHX0NNRF9QSU5HCisjZGVmaW5lIENPTkZJR19DTURfU0VURVhQUgorCisjaWZkZWYgQ09ORklHX1BDSQorI2RlZmluZSBDT05GSUdfQ01EX1BDSQorI2RlZmluZSBDT05GSUdfQ01EX05FVAorI2VuZGlmCisKKy8qCisqIFVTQgorKi8KKyNkZWZpbmUgQ09ORklHX0NNRF9VU0IKKyNkZWZpbmUgQ09ORklHX1VTQl9TVE9SQUdFCisjZGVmaW5lIENPTkZJR19VU0JfRUhDSQorI2RlZmluZSBDT05GSUdfVVNCX0VIQ0lfRlNMCisjZGVmaW5lIENPTkZJR19FSENJX0hDRF9JTklUX0FGVEVSX1JFU0VUCisjZGVmaW5lIENPTkZJR19DTURfRVhUMgorCisjZGVmaW5lIENPTkZJR19NTUMKKworI2lmZGVmIENPTkZJR19NTUMKKyNkZWZpbmUgQ09ORklHX0ZTTF9FU0RIQworI2RlZmluZSBDT05GSUdfU1lTX0ZTTF9FU0RIQ19BRERSICAgICAgIENPTkZJR19TWVNfTVBDODV4eF9FU0RIQ19BRERSCisjZGVmaW5lIENPTkZJR19TWVNfRlNMX0VTREhDX0JST0tFTl9USU1FT1VUCisjZGVmaW5lIENPTkZJR19DTURfTU1DCisjZGVmaW5lIENPTkZJR19HRU5FUklDX01NQworI2RlZmluZSBDT05GSUdfQ01EX0VYVDIKKyNkZWZpbmUgQ09ORklHX0NNRF9GQVQKKyNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04KKyNlbmRpZgorCisvKgorICogTWlzY2VsbGFuZW91cyBjb25maWd1cmFibGUgb3B0aW9ucworICovCisjZGVmaW5lIENPTkZJR19TWVNfTE9OR0hFTFAJCQkvKiB1bmRlZiB0byBzYXZlIG1lbW9yeQkqLworI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkJLyogQ29tbWFuZC1saW5lIGVkaXRpbmcgKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLworI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkweDIwMDAwMDAJLyogZGVmYXVsdCBsb2FkIGFkZHJlc3MgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFQJIj0+ICIJCS8qIE1vbml0b3IgQ29tbWFuZCBQcm9tcHQgKi8KKyNpZmRlZiBDT05GSUdfQ01EX0tHREIKKyNkZWZpbmUgQ09ORklHX1NZU19DQlNJWkUJMTAyNAkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgKi8KKyNlbHNlCisjZGVmaW5lIENPTkZJR19TWVNfQ0JTSVpFCTI1NgkJLyogQ29uc29sZSBJL08gQnVmZmVyIFNpemUgKi8KKyNlbmRpZgorI2RlZmluZSBDT05GSUdfU1lTX1BCU0laRSAoQ09ORklHX1NZU19DQlNJWkUrc2l6ZW9mKENPTkZJR19TWVNfUFJPTVBUKSsxNikgLyogUHJpbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19NQVhBUkdTCTE2CQkvKiBtYXggbnVtYmVyIG9mIGNvbW1hbmQgYXJncyAqLworI2RlZmluZSBDT05GSUdfU1lTX0JBUkdTSVpFCUNPTkZJR19TWVNfQ0JTSVpFCS8qIEJvb3QgQXJndW1lbnQgQnVmZmVyIFNpemUgKi8KKyNkZWZpbmUgQ09ORklHX1NZU19IWgkJMTAwMAkJLyogZGVjcmVtZW50ZXIgZnJlcTogMW1zIHRpY2tzICovCisKKy8qCisgKiBGb3IgYm9vdGluZyBMaW51eCwgdGhlIGJvYXJkIGluZm8gYW5kIGNvbW1hbmQgbGluZSBkYXRhCisgKiBoYXZlIHRvIGJlIGluIHRoZSBmaXJzdCAxNiBNQiBvZiBtZW1vcnksIHNpbmNlIHRoaXMgaXMKKyAqIHRoZSBtYXhpbXVtIG1hcHBlZCBieSB0aGUgTGludXgga2VybmVsIGR1cmluZyBpbml0aWFsaXphdGlvbi4KKyAqLworI2RlZmluZSBDT05GSUdfU1lTX0JPT1RNQVBTWgkoMTYgPDwgMjApCS8qIEluaXRpYWwgTWVtb3J5IG1hcCBmb3IgTGludXgqLworCisvKgorICogSW50ZXJuYWwgRGVmaW5pdGlvbnMKKyAqCisgKiBCb290IEZsYWdzCisgKi8KKyNkZWZpbmUgQk9PVEZMQUdfQ09MRAkweDAxCQkvKiBOb3JtYWwgUG93ZXItT246IEJvb3QgZnJvbSBGTEFTSCAqLworI2RlZmluZSBCT09URkxBR19XQVJNCTB4MDIJCS8qIFNvZnR3YXJlIHJlYm9vdCAqLworCisjaWZkZWYgQ09ORklHX0NNRF9LR0RCCisjZGVmaW5lIENPTkZJR19LR0RCX0JBVURSQVRFCTIzMDQwMAkvKiBzcGVlZCB0byBydW4ga2dkYiBzZXJpYWwgcG9ydCAqLworI2RlZmluZSBDT05GSUdfS0dEQl9TRVJfSU5ERVgJMgkvKiB3aGljaCBzZXJpYWwgcG9ydCB0byB1c2UgKi8KKyNlbmRpZgorCisvKgorICogRW52aXJvbm1lbnQgQ29uZmlndXJhdGlvbgorICovCisjZGVmaW5lIENPTkZJR19ST09UUEFUSAkJL29wdC9uZnNyb290CisjZGVmaW5lIENPTkZJR19CT09URklMRQkJdUltYWdlCisjZGVmaW5lIENPTkZJR19VQk9PVFBBVEgJdS1ib290LmJpbgkvKiBVLUJvb3QgaW1hZ2Ugb24gVEZUUCBzZXJ2ZXIgKi8KKworLyogZGVmYXVsdCBsb2NhdGlvbiBmb3IgdGZ0cCBhbmQgYm9vdG0gKi8KKyNkZWZpbmUgQ09ORklHX0xPQURBRERSCQkxMDAwMDAwCisKKyNkZWZpbmUgQ09ORklHX0JPT1RERUxBWSAJMTAJLyogLTEgZGlzYWJsZXMgYXV0by1ib290ICovCisKKyNkZWZpbmUgQ09ORklHX0JBVURSQVRFCTExNTIwMAorCisjZGVmaW5lCUNPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MJCQkJXAorCSJuZXRkZXY9ZXRoMFwwIgkJCQkJCVwKKwkidWJvb3Q9IiBNS19TVFIoQ09ORklHX1VCT09UUEFUSCkgIlwwIgkJCVwKKwkidGZ0cGZsYXNoPXRmdHBib290ICRsb2FkYWRkciAkdWJvb3Q7ICIJCQlcCisJInByb3RlY3Qgb2ZmICIgTUtfU1RSKFRFWFRfQkFTRSkgIiArJGZpbGVzaXplOyAiCVwKKwkiZXJhc2UgIiBNS19TVFIoVEVYVF9CQVNFKSAiICskZmlsZXNpemU7ICIJCVwKKwkiY3AuYiAkbG9hZGFkZHIgIiBNS19TVFIoVEVYVF9CQVNFKSAiICRmaWxlc2l6ZTsgIglcCisJInByb3RlY3Qgb24gIiBNS19TVFIoVEVYVF9CQVNFKSAiICskZmlsZXNpemU7ICIJCVwKKwkiY21wLmIgJGxvYWRhZGRyICIgTUtfU1RSKFRFWFRfQkFTRSkgIiAkZmlsZXNpemVcMCIJXAorCSJjb25zb2xlZGV2PXR0eVMwXDAiCQkJCQlcCisJInJhbWRpc2thZGRyPTIwMDAwMDBcMCIJCQkJCVwKKwkicmFtZGlza2ZpbGU9cDQwODBkcy9yYW1kaXNrLnVib290XDAiCQkJXAorCSJmZHRhZGRyPWMwMDAwMFwwIgkJCQkJXAorCSJmZHRmaWxlPXA0MDgwZHMvcDQwODBkcy5kdGJcMCIJCQkJXAorCSJiZGV2PXNkYTNcMCIJCQkJCQlcCisJImM9ZmZlXDAiCQkJCQkJXAorCSJmbWFuX3Vjb2RlPSJNS19TVFIoQ09ORklHX1NZU19GTUFOX0ZXX0FERFJfUEhZUykiXDAiCisKKyNkZWZpbmUgQ09ORklHX0hEQk9PVAkJCQkJXAorCSJzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2LyRiZGV2IHJ3ICIJCVwKKwkiY29uc29sZT0kY29uc29sZWRldiwkYmF1ZHJhdGUgJG90aGJvb3RhcmdzOyIJXAorCSJ0ZnRwICRsb2FkYWRkciAkYm9vdGZpbGU7IgkJCVwKKwkidGZ0cCAkZmR0YWRkciAkZmR0ZmlsZTsiCQkJXAorCSJib290bSAkbG9hZGFkZHIgLSAkZmR0YWRkciIKKworI2RlZmluZSBDT05GSUdfTkZTQk9PVENPTU1BTkQJCQlcCisJInNldGVudiBib290YXJncyByb290PS9kZXYvbmZzIHJ3ICIJXAorCSJuZnNyb290PSRzZXJ2ZXJpcDokcm9vdHBhdGggIgkJXAorCSJpcD0kaXBhZGRyOiRzZXJ2ZXJpcDokZ2F0ZXdheWlwOiRuZXRtYXNrOiRob3N0bmFtZTokbmV0ZGV2Om9mZiAiIFwKKwkiY29uc29sZT0kY29uc29sZWRldiwkYmF1ZHJhdGUgJG90aGJvb3RhcmdzOyIJXAorCSJ0ZnRwICRsb2FkYWRkciAkYm9vdGZpbGU7IgkJXAorCSJ0ZnRwICRmZHRhZGRyICRmZHRmaWxlOyIJCVwKKwkiYm9vdG0gJGxvYWRhZGRyIC0gJGZkdGFkZHIiCisKKyNkZWZpbmUgQ09ORklHX1JBTUJPT1RDT01NQU5ECQkJCVwKKwkic2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9yYW0gcncgIgkJXAorCSJjb25zb2xlPSRjb25zb2xlZGV2LCRiYXVkcmF0ZSAkb3RoYm9vdGFyZ3M7IglcCisJInRmdHAgJHJhbWRpc2thZGRyICRyYW1kaXNrZmlsZTsiCQlcCisJInRmdHAgJGxvYWRhZGRyICRib290ZmlsZTsiCQkJXAorCSJ0ZnRwICRmZHRhZGRyICRmZHRmaWxlOyIJCQlcCisJImJvb3RtICRsb2FkYWRkciAkcmFtZGlza2FkZHIgJGZkdGFkZHIiCisKKyNkZWZpbmUgQ09ORklHX0JPT1RDT01NQU5ECQlDT05GSUdfSERCT09UCisKKyNlbmRpZgkvKiBfX0NPTkZJR19IICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3MvaWJmLWRzcDU2MS5oIGIvaW5jbHVkZS9jb25maWdzL2liZi1kc3A1NjEuaAppbmRleCAyYzBhMjYzLi41M2I1MTk3IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3MvaWJmLWRzcDU2MS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9pYmYtZHNwNTYxLmgKQEAgLTExMiwzMyArMTEyLDggQEAKICAqIEkyQyBTZXR0aW5ncwogICovCiAjZGVmaW5lIENPTkZJR19TT0ZUX0kyQwkJMQotI2RlZmluZSBQRl9TQ0wJCQkweDEvKlBGMCovCi0jZGVmaW5lIFBGX1NEQQkJCTB4Mi8qUEYxKi8KLQotI2lmZGVmIENPTkZJR19TT0ZUX0kyQwotI2RlZmluZSBJMkNfSU5JVCAgICAgICBkbyB7ICpwRklPMF9ESVIgfD0gUEZfU0NMOyBTU1lOQygpOyB9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfQUNUSVZFICAgICBkbyB7ICpwRklPMF9ESVIgfD0gUEZfU0RBOyAqcEZJTzBfSU5FTiAmPSB+UEZfU0RBOyBTU1lOQygpOyB9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfVFJJU1RBVEUgICBkbyB7ICpwRklPMF9ESVIgJj0gflBGX1NEQTsgKnBGSU8wX0lORU4gfD0gUEZfU0RBOyBTU1lOQygpOyB9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfUkVBRCAgICAgICAoKCpwRklPMF9GTEFHX0QgJiBQRl9TREEpICE9IDApCi0jZGVmaW5lIEkyQ19TREEoYml0KSBcCi0JZG8geyBcCi0JCWlmIChiaXQpIFwKLQkJCSpwRklPMF9GTEFHX1MgPSBQRl9TREE7IFwKLQkJZWxzZSBcCi0JCQkqcEZJTzBfRkxBR19DID0gUEZfU0RBOyBcCi0JCVNTWU5DKCk7IFwKLQl9IHdoaWxlICgwKQotI2RlZmluZSBJMkNfU0NMKGJpdCkgXAotCWRvIHsgXAotCQlpZiAoYml0KSBcCi0JCQkqcEZJTzBfRkxBR19TID0gUEZfU0NMOyBcCi0JCWVsc2UgXAotCQkJKnBGSU8wX0ZMQUdfQyA9IFBGX1NDTDsgXAotCQlTU1lOQygpOyBcCi0JfSB3aGlsZSAoMCkKLSNkZWZpbmUgSTJDX0RFTEFZCQl1ZGVsYXkoNSkJLyogMS80IEkyQyBjbG9jayBkdXJhdGlvbiAqLwotCi0jZW5kaWYKKyNkZWZpbmUgQ09ORklHX1NPRlRfSTJDX0dQSU9fU0NMIEdQSU9fUEYwCisjZGVmaW5lIENPTkZJR19TT0ZUX0kyQ19HUElPX1NEQSBHUElPX1BGMQogCiAKIC8qCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDRfcGFuZGEuaCBiL2luY2x1ZGUvY29uZmlncy9vbWFwNF9wYW5kYS5oCmluZGV4IGIxZTQwYTMuLmEwZDI3YTQgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9vbWFwNF9wYW5kYS5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwNF9wYW5kYS5oCkBAIC0zNSw2ICszNSw3IEBACiAjZGVmaW5lIENPTkZJR19PTUFQNDRYWAkJMQkvKiB3aGljaCBpcyBhIDQ0WFggKi8KICNkZWZpbmUgQ09ORklHX09NQVA0NDMwCQkxCS8qIHdoaWNoIGlzIGluIGEgNDQzMCAqLwogI2RlZmluZSBDT05GSUdfUEFOREEJCTEJLyogd29ya2luZyB3aXRoIFBhbmRhICovCisjZGVmaW5lIENPTkZJR19BUkNIX0NQVV9JTklUCiAKIC8qIEdldCBDUFUgZGVmcyAqLwogI2luY2x1ZGUgPGFzbS9hcmNoL2NwdS5oPgpAQCAtMTAyLDEyICsxMDMsMjkgQEAKICNkZWZpbmUgQ09ORklHX0RSSVZFUl9PTUFQMzRYWF9JMkMJMQogI2RlZmluZSBDT05GSUdfSTJDX01VTFRJX0JVUwkJMQogCisvKiBUV0w2MDMwICovCisjZGVmaW5lIENPTkZJR19UV0w2MDMwX1BPV0VSCQkxCisKIC8qIE1NQyAqLwogI2RlZmluZSBDT05GSUdfTU1DCQkJMQogI2RlZmluZSBDT05GSUdfT01BUDNfTU1DCQkxCiAjZGVmaW5lIENPTkZJR19TWVNfTU1DX1NFVF9ERVYJCTEKICNkZWZpbmUgQ09ORklHX0RPU19QQVJUSVRJT04JCTEKIAorLyogVVNCICovCisjZGVmaW5lIENPTkZJR19NVVNCX1VEQwkJCTEKKyNkZWZpbmUgQ09ORklHX1VTQl9PTUFQMwkJMQorCisvKiBVU0IgZGV2aWNlIGNvbmZpZ3VyYXRpb24gKi8KKyNkZWZpbmUgQ09ORklHX1VTQl9ERVZJQ0UJCTEKKyNkZWZpbmUgQ09ORklHX1VTQl9UVFkJCQkxCisjZGVmaW5lIENPTkZJR19TWVNfQ09OU09MRV9JU19JTl9FTlYJMQorLyogQ2hhbmdlIHRoZXNlIHRvIHN1aXQgeW91ciBuZWVkcyAqLworI2RlZmluZSBDT05GSUdfVVNCRF9WRU5ET1JJRAkJMHgwNDUxCisjZGVmaW5lIENPTkZJR19VU0JEX1BST0RVQ1RJRAkJMHg1Njc4CisjZGVmaW5lIENPTkZJR19VU0JEX01BTlVGQUNUVVJFUgkiVGV4YXMgSW5zdHJ1bWVudHMiCisjZGVmaW5lIENPTkZJR19VU0JEX1BST0RVQ1RfTkFNRQkiT01BUDQgUGFuZGEiCisKIC8qIEZsYXNoICovCiAjZGVmaW5lIENPTkZJR19TWVNfTk9fRkxBU0gJMQogCkBAIC0xMzUsMTYgKzE1MywyMSBAQAogICogRW52aXJvbm1lbnQgc2V0dXAKICAqLwogCisjZGVmaW5lIENPTkZJR19CT09UREVMQVkJMworCiAvKiBhbGxvdyBvdmVyd3JpdGluZyBzZXJpYWwgY29uZmlnIGFuZCBldGhhZGRyICovCiAjZGVmaW5lIENPTkZJR19FTlZfT1ZFUldSSVRFCiAKICNkZWZpbmUgQ09ORklHX0VYVFJBX0VOVl9TRVRUSU5HUyBcCiAJImxvYWRhZGRyPTB4ODIwMDAwMDBcMCIgXAogCSJjb25zb2xlPXR0eVMyLDExNTIwMG44XDAiIFwKKwkidXNidHR5PWNkY19hY21cMCIgXAorCSJ2cmFtPTE2TVwwIiBcCiAJIm1tY2Rldj0xXDAiIFwKIAkibW1jcm9vdD0vZGV2L21tY2JsazBwMiByd1wwIiBcCiAJIm1tY3Jvb3Rmc3R5cGU9ZXh0MyByb290d2FpdFwwIiBcCiAJIm1tY2FyZ3M9c2V0ZW52IGJvb3RhcmdzIGNvbnNvbGU9JHtjb25zb2xlfSAiIFwKKwkJInZyYW09JHt2cmFtfSAiIFwKIAkJInJvb3Q9JHttbWNyb290fSAiIFwKIAkJInJvb3Rmc3R5cGU9JHttbWNyb290ZnN0eXBlfVwwIiBcCiAJImxvYWRib290c2NyaXB0PWZhdGxvYWQgbW1jICR7bW1jZGV2fSAke2xvYWRhZGRyfSBib290LnNjclwwIiBcCkBAIC0xNjIsNyArMTg1LDYgQEAKIAkJImVsc2UgIiBcCiAJCQkiaWYgcnVuIGxvYWR1aW1hZ2U7IHRoZW4gIiBcCiAJCQkJInJ1biBtbWNib290OyAiIFwKLQkJCSJlbHNlIHJ1biBuYW5kYm9vdDsgIiBcCiAJCQkiZmk7ICIgXAogCQkiZmk7ICIgXAogCSJmaSIKQEAgLTE5NSw3ICsyMTcsNyBAQAogI2RlZmluZSBDT05GSUdfU1lTX0xPQURfQUREUgkJMHg4MDAwMDAwMAogCiAvKiBVc2UgR2VuZXJhbCBwdXJwb3NlIHRpbWVyIDEgKi8KLSNkZWZpbmUgQ09ORklHX1NZU19USU1FUkJBU0UJCUdQVDFfQkFTRQorI2RlZmluZSBDT05GSUdfU1lTX1RJTUVSQkFTRQkJR1BUMl9CQVNFCiAjZGVmaW5lIENPTkZJR19TWVNfUFRWCQkJMgkvKiBEaXZpc29yOiAyXihQVFYrMSkgPT4gOCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0haCQkJMTAwMAogCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDRfc2RwNDQzMC5oIGIvaW5jbHVkZS9jb25maWdzL29tYXA0X3NkcDQ0MzAuaAppbmRleCA4MTIxNTU0Li5kNTQzOWY5IDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvb21hcDRfc2RwNDQzMC5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9vbWFwNF9zZHA0NDMwLmgKQEAgLTM2LDYgKzM2LDcgQEAKICNkZWZpbmUgQ09ORklHX09NQVA0NFhYCQkxCS8qIHdoaWNoIGlzIGEgNDRYWCAqLwogI2RlZmluZSBDT05GSUdfT01BUDQ0MzAJCTEJLyogd2hpY2ggaXMgaW4gYSA0NDMwICovCiAjZGVmaW5lIENPTkZJR180NDMwU0RQCQkxCS8qIHdvcmtpbmcgd2l0aCBTRFAgKi8KKyNkZWZpbmUgQ09ORklHX0FSQ0hfQ1BVX0lOSVQKIAogLyogR2V0IENQVSBkZWZzICovCiAjaW5jbHVkZSA8YXNtL2FyY2gvY3B1Lmg+CkBAIC0xMDMsMTIgKzEwNCwyOSBAQAogI2RlZmluZSBDT05GSUdfRFJJVkVSX09NQVAzNFhYX0kyQwkxCiAjZGVmaW5lIENPTkZJR19JMkNfTVVMVElfQlVTCQkxCiAKKy8qIFRXTDYwMzAgKi8KKyNkZWZpbmUgQ09ORklHX1RXTDYwMzBfUE9XRVIJCTEKKwogLyogTU1DICovCiAjZGVmaW5lIENPTkZJR19NTUMJCQkxCiAjZGVmaW5lIENPTkZJR19PTUFQM19NTUMJCTEKICNkZWZpbmUgQ09ORklHX1NZU19NTUNfU0VUX0RFVgkJMQogI2RlZmluZSBDT05GSUdfRE9TX1BBUlRJVElPTgkJMQogCisvKiBVU0IgKi8KKyNkZWZpbmUgQ09ORklHX01VU0JfVURDCQkJMQorI2RlZmluZSBDT05GSUdfVVNCX09NQVAzCQkxCisKKy8qIFVTQiBkZXZpY2UgY29uZmlndXJhdGlvbiAqLworI2RlZmluZSBDT05GSUdfVVNCX0RFVklDRQkJMQorI2RlZmluZSBDT05GSUdfVVNCX1RUWQkJCTEKKyNkZWZpbmUgQ09ORklHX1NZU19DT05TT0xFX0lTX0lOX0VOVgkxCisvKiBDaGFuZ2UgdGhlc2UgdG8gc3VpdCB5b3VyIG5lZWRzICovCisjZGVmaW5lIENPTkZJR19VU0JEX1ZFTkRPUklECQkweDA0NTEKKyNkZWZpbmUgQ09ORklHX1VTQkRfUFJPRFVDVElECQkweDU2NzgKKyNkZWZpbmUgQ09ORklHX1VTQkRfTUFOVUZBQ1RVUkVSCSJUZXhhcyBJbnN0cnVtZW50cyIKKyNkZWZpbmUgQ09ORklHX1VTQkRfUFJPRFVDVF9OQU1FCSJTRFA0NDMwIgorCiAvKiBGbGFzaCAqLwogI2RlZmluZSBDT05GSUdfU1lTX05PX0ZMQVNICTEKIApAQCAtMTM2LDE2ICsxNTQsMjEgQEAKICAqIEVudmlyb25tZW50IHNldHVwCiAgKi8KIAorI2RlZmluZSBDT05GSUdfQk9PVERFTEFZCTMKKwogLyogYWxsb3cgb3ZlcndyaXRpbmcgc2VyaWFsIGNvbmZpZyBhbmQgZXRoYWRkciAqLwogI2RlZmluZSBDT05GSUdfRU5WX09WRVJXUklURQogCiAjZGVmaW5lIENPTkZJR19FWFRSQV9FTlZfU0VUVElOR1MgXAogCSJsb2FkYWRkcj0weDgyMDAwMDAwXDAiIFwKIAkiY29uc29sZT10dHlTMiwxMTUyMDBuOFwwIiBcCisJInVzYnR0eT1jZGNfYWNtXDAiIFwKKwkidnJhbT0xNk1cMCIgXAogCSJtbWNkZXY9MVwwIiBcCiAJIm1tY3Jvb3Q9L2Rldi9tbWNibGswcDIgcndcMCIgXAogCSJtbWNyb290ZnN0eXBlPWV4dDMgcm9vdHdhaXRcMCIgXAogCSJtbWNhcmdzPXNldGVudiBib290YXJncyBjb25zb2xlPSR7Y29uc29sZX0gIiBcCisJCSJ2cmFtPSR7dnJhbX0gIiBcCiAJCSJyb290PSR7bW1jcm9vdH0gIiBcCiAJCSJyb290ZnN0eXBlPSR7bW1jcm9vdGZzdHlwZX1cMCIgXAogCSJsb2FkYm9vdHNjcmlwdD1mYXRsb2FkIG1tYyAke21tY2Rldn0gJHtsb2FkYWRkcn0gYm9vdC5zY3JcMCIgXApAQCAtMTYzLDcgKzE4Niw2IEBACiAJCSJlbHNlICIgXAogCQkJImlmIHJ1biBsb2FkdWltYWdlOyB0aGVuICIgXAogCQkJCSJydW4gbW1jYm9vdDsgIiBcCi0JCQkiZWxzZSBydW4gbmFuZGJvb3Q7ICIgXAogCQkJImZpOyAiIFwKIAkJImZpOyAiIFwKIAkiZmkiCkBAIC0xOTYsNyArMjE4LDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJCTB4ODAwMDAwMDAKIAogLyogVXNlIEdlbmVyYWwgcHVycG9zZSB0aW1lciAxICovCi0jZGVmaW5lIENPTkZJR19TWVNfVElNRVJCQVNFCQlHUFQxX0JBU0UKKyNkZWZpbmUgQ09ORklHX1NZU19USU1FUkJBU0UJCUdQVDJfQkFTRQogI2RlZmluZSBDT05GSUdfU1lTX1BUVgkJCTIJLyogRGl2aXNvcjogMl4oUFRWKzEpID0+IDggKi8KICNkZWZpbmUgQ09ORklHX1NZU19IWgkJCTEwMDAKIApkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3NiYzg1NDguaCBiL2luY2x1ZGUvY29uZmlncy9zYmM4NTQ4LmgKaW5kZXggYzhiOGQwZC4uNTY0ZjY2MSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3NiYzg1NDguaAorKysgYi9pbmNsdWRlL2NvbmZpZ3Mvc2JjODU0OC5oCkBAIC00OTYsNiArNDk2LDcgQEAKICAqIE1pc2NlbGxhbmVvdXMgY29uZmlndXJhYmxlIG9wdGlvbnMKICAqLwogI2RlZmluZSBDT05GSUdfQ01ETElORV9FRElUSU5HCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkgKi8KKyNkZWZpbmUgQ09ORklHX0FVVE9fQ09NUExFVEUJCQkvKiBhZGQgYXV0b2NvbXBsZXRpb24gc3VwcG9ydCAqLwogI2RlZmluZSBDT05GSUdfU1lTX0xPTkdIRUxQCQkJLyogdW5kZWYgdG8gc2F2ZSBtZW1vcnkJKi8KICNkZWZpbmUgQ09ORklHX1NZU19MT0FEX0FERFIJMHgyMDAwMDAwCS8qIGRlZmF1bHQgbG9hZCBhZGRyZXNzICovCiAjZGVmaW5lIENPTkZJR19TWVNfUFJPTVBUCSI9PiAiCQkvKiBNb25pdG9yIENvbW1hbmQgUHJvbXB0ICovCmRpZmYgLS1naXQgYS9pbmNsdWRlL2NvbmZpZ3Mvc29jcmF0ZXMuaCBiL2luY2x1ZGUvY29uZmlncy9zb2NyYXRlcy5oCmluZGV4IGFkNzAxMDkuLmFmMWUxOWUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvY29uZmlncy9zb2NyYXRlcy5oCisrKyBiL2luY2x1ZGUvY29uZmlncy9zb2NyYXRlcy5oCkBAIC0yMzMsNiArMjMzLDcgQEAKIAl7MzAwLCA2MDAsIDEyMDAsIDI0MDAsIDQ4MDAsIDk2MDAsIDE5MjAwLCAzODQwMCwxMTUyMDB9CiAKICNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkxCS8qIGFkZCBjb21tYW5kIGxpbmUgaGlzdG9yeQkqLworI2RlZmluZSBDT05GSUdfQVVUT19DT01QTEVURQkxCS8qIGFkZCBhdXRvY29tcGxldGlvbiBzdXBwb3J0ICovCiAjZGVmaW5lIENPTkZJR19TWVNfSFVTSF9QQVJTRVIJCTEJLyogVXNlIHRoZSBIVVNIIHBhcnNlcgkJKi8KICNpZmRlZglDT05GSUdfU1lTX0hVU0hfUEFSU0VSCiAjZGVmaW5lCUNPTkZJR19TWVNfUFJPTVBUX0hVU0hfUFMyCSI+ICIKZGlmZiAtLWdpdCBhL2luY2x1ZGUvY29uZmlncy9zdHhzc2EuaCBiL2luY2x1ZGUvY29uZmlncy9zdHhzc2EuaAppbmRleCAzNjNmN2I0Li41N2JiOGQxIDEwMDY0NAotLS0gYS9pbmNsdWRlL2NvbmZpZ3Mvc3R4c3NhLmgKKysrIGIvaW5jbHVkZS9jb25maWdzL3N0eHNzYS5oCkBAIC0xODksNiArMTg5LDcgQEAKICNkZWZpbmUgQ09ORklHX1NZU19OUzE2NTUwX0NPTTIJKENPTkZJR19TWVNfQ0NTUkJBUisweDQ2MDApCiAKICNkZWZpbmUgQ09ORklHX0NNRExJTkVfRURJVElORwkxCS8qIGFkZCBjb21tYW5kIGxpbmUgaGlzdG9yeQkqLworI2RlZmluZSBDT05GSUdfQVVUT19DT01QTEVURQkxCS8qIGFkZCBhdXRvY29tcGxldGlvbiBzdXBwb3J0ICAgKi8KICNkZWZpbmUgQ09ORklHX1NZU19IVVNIX1BBUlNFUgkJMQkvKiBVc2UgdGhlIEhVU0ggcGFyc2VyCQkqLwogI2lmZGVmCUNPTkZJR19TWVNfSFVTSF9QQVJTRVIKICNkZWZpbmUgQ09ORklHX1NZU19QUk9NUFRfSFVTSF9QUzIgIj4gIgpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jb25maWdzL3ZwYWMyNzAuaCBiL2luY2x1ZGUvY29uZmlncy92cGFjMjcwLmgKaW5kZXggNmQwMjk5NS4uZDNlMjJkOSAxMDA2NDQKLS0tIGEvaW5jbHVkZS9jb25maWdzL3ZwYWMyNzAuaAorKysgYi9pbmNsdWRlL2NvbmZpZ3MvdnBhYzI3MC5oCkBAIC0yMjgsNiArMjI4LDggQEAKICN1bmRlZglDT05GSUdfSURFX0xFRAogI3VuZGVmCUNPTkZJR19JREVfUkVTRVQKIAorI2RlZmluZQlfX2lvCisKICNkZWZpbmUgQ09ORklHX1NZU19JREVfTUFYQlVTCQkxCiAjZGVmaW5lIENPTkZJR19TWVNfSURFX01BWERFVklDRQkxCiAKZGlmZiAtLWdpdCBhL2luY2x1ZGUvZGRyX3NwZC5oIGIvaW5jbHVkZS9kZHJfc3BkLmgKaW5kZXggMTA0MDJjNS4uNzEwZTUyOCAxMDA2NDQKLS0tIGEvaW5jbHVkZS9kZHJfc3BkLmgKKysrIGIvaW5jbHVkZS9kZHJfc3BkLmgKQEAgLTI0Myw2ICsyNDMsMjAgQEAKIAkJCXVuc2lnbmVkIGNoYXIgbW9kX3RoaWNrbmVzczsKIAkJCS8qIDYyIChSZWdpc3RlcmVkKSBSZWZlcmVuY2UgUmF3IENhcmQgVXNlZCAqLwogCQkJdW5zaWduZWQgY2hhciByZWZfcmF3X2NhcmQ7CisJCQkvKiA2MyBESU1NIE1vZHVsZSBBdHRyaWJ1dGVzICovCisJCQl1bnNpZ25lZCBjaGFyIG1vZHVfYXR0cjsKKwkJCS8qIDY0IFJESU1NIFRoZXJtYWwgSGVhdCBTcHJlYWRlciBTb2x1dGlvbiAqLworCQkJdW5zaWduZWQgY2hhciB0aGVybWFsOworCQkJLyogNjUgUmVnaXN0ZXIgTWFudWZhY3R1cmVyIElEIENvZGUsIExlYXN0IFNpZ25pZmljYW50IEJ5dGUgKi8KKwkJCXVuc2lnbmVkIGNoYXIgcmVnX2lkX2xvOworCQkJLyogNjYgUmVnaXN0ZXIgTWFudWZhY3R1cmVyIElEIENvZGUsIE1vc3QgU2lnbmlmaWNhbnQgQnl0ZSAqLworCQkJdW5zaWduZWQgY2hhciByZWdfaWRfaGk7CisJCQkvKiA2NyBSZWdpc3RlciBSZXZpc2lvbiBOdW1iZXIgKi8KKwkJCXVuc2lnbmVkIGNoYXIgcmVnX3JldjsKKwkJCS8qIDY4IFJlZ2lzdGVyIFR5cGUgKi8KKwkJCXVuc2lnbmVkIGNoYXIgcmVnX3R5cGU7CisJCQkvKiA2OS03NiBSQzEsMyw1Li4uMTUgKE1TIE5pYmJsZSkgLyBSQzAsMiw0Li4uMTQgKExTIE5pYmJsZSkgKi8KKwkJCXVuc2lnbmVkIGNoYXIgcmN3WzhdOwogCQl9IHJlZ2lzdGVyZWQ7CiAJCXVuc2lnbmVkIGNoYXIgdWNbNTddOyAvKiA2MC0xMTYgTW9kdWxlLVNwZWNpZmljIFNlY3Rpb24gKi8KIAl9IG1vZF9zZWN0aW9uOwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS9mZHRfc3VwcG9ydC5oIGIvaW5jbHVkZS9mZHRfc3VwcG9ydC5oCmluZGV4IDU0YWY5ZmUuLjg3MWVmNDUgMTAwNjQ0Ci0tLSBhL2luY2x1ZGUvZmR0X3N1cHBvcnQuaAorKysgYi9pbmNsdWRlL2ZkdF9zdXBwb3J0LmgKQEAgLTg2LDYgKzg2LDcgQEAKIHU2NCBmZHRfdHJhbnNsYXRlX2FkZHJlc3Modm9pZCAqYmxvYiwgaW50IG5vZGVfb2Zmc2V0LCBjb25zdCB1MzIgKmluX2FkZHIpOwogaW50IGZkdF9ub2RlX29mZnNldF9ieV9jb21wYXRfcmVnKHZvaWQgKmJsb2IsIGNvbnN0IGNoYXIgKmNvbXBhdCwKIAkJCQkJcGh5c19hZGRyX3QgY29tcGF0X29mZik7CitpbnQgZmR0X2FsbG9jX3BoYW5kbGUodm9pZCAqYmxvYik7CiAKICNlbmRpZiAvKiBpZmRlZiBDT05GSUdfT0ZfTElCRkRUICovCiAjZW5kaWYgLyogaWZuZGVmIF9fRkRUX1NVUFBPUlRfSCAqLwpkaWZmIC0tZ2l0IGEvaW5jbHVkZS90d2w2MDMwLmggYi9pbmNsdWRlL3R3bDYwMzAuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDkyM2FiCi0tLSAvZGV2L251bGwKKysrIGIvaW5jbHVkZS90d2w2MDMwLmgKQEAgLTAsMCArMSw5MSBAQAorLyoKKyAqIChDKSBDb3B5cmlnaHQgMjAxMAorICogVGV4YXMgSW5zdHJ1bWVudHMsIDx3d3cudGkuY29tPgorICoKKyAqIFNlZSBmaWxlIENSRURJVFMgZm9yIGxpc3Qgb2YgcGVvcGxlIHdobyBjb250cmlidXRlZCB0byB0aGlzCisgKiBwcm9qZWN0LgorICoKKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKyAqIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCisgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgorICogdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisgKgorICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisgKiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKyAqCisgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorICogYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKyAqIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sCisgKiBNQSAwMjExMS0xMzA3IFVTQQorICovCisKKyNpbmNsdWRlIDxjb21tb24uaD4KKyNpbmNsdWRlIDxpMmMuaD4KKworLyogSTJDIGNoaXAgYWRkcmVzc2VzICovCisjZGVmaW5lIFRXTDYwMzBfQ0hJUF9QTQkJMHg0OAorCisjZGVmaW5lIFRXTDYwMzBfQ0hJUF9VU0IJMHg0OQorI2RlZmluZSBUV0w2MDMwX0NISVBfQURDCTB4NDkKKyNkZWZpbmUgVFdMNjAzMF9DSElQX0NIQVJHRVIJMHg0OQorI2RlZmluZSBUV0w2MDMwX0NISVBfUFdNCTB4NDkKKworLyogQmF0dGVyeSBDSEFSR0VSIFJFR0lTVEVSUyAqLworI2RlZmluZSBDT05UUk9MTEVSX0lOVF9NQVNLCTB4RTAKKyNkZWZpbmUgQ09OVFJPTExFUl9DVFJMMQkweEUxCisjZGVmaW5lIENPTlRST0xMRVJfV0RHCQkweEUyCisjZGVmaW5lIENPTlRST0xMRVJfU1RBVDEJMHhFMworI2RlZmluZSBDSEFSR0VSVVNCX0lOVF9TVEFUVVMJMHhFNAorI2RlZmluZSBDSEFSR0VSVVNCX0lOVF9NQVNLCTB4RTUKKyNkZWZpbmUgQ0hBUkdFUlVTQl9TVEFUVVNfSU5UMQkweEU2CisjZGVmaW5lIENIQVJHRVJVU0JfU1RBVFVTX0lOVDIJMHhFNworI2RlZmluZSBDSEFSR0VSVVNCX0NUUkwxCTB4RTgKKyNkZWZpbmUgQ0hBUkdFUlVTQl9DVFJMMgkweEU5CisjZGVmaW5lIENIQVJHRVJVU0JfQ1RSTDMJMHhFQQorI2RlZmluZSBDSEFSR0VSVVNCX1NUQVQxCTB4RUIKKyNkZWZpbmUgQ0hBUkdFUlVTQl9WT1JFRwkweEVDCisjZGVmaW5lIENIQVJHRVJVU0JfVklDSFJHCTB4RUQKKyNkZWZpbmUgQ0hBUkdFUlVTQl9DSU5MSU1JVAkweEVFCisjZGVmaW5lIENIQVJHRVJVU0JfQ1RSTExJTUlUMQkweEVGCisKKy8qIENIQVJHRVJVU0JfVklDSFJHICovCisjZGVmaW5lIENIQVJHRVJVU0JfVklDSFJHXzUwMAkJMHg0CisjZGVmaW5lIENIQVJHRVJVU0JfVklDSFJHXzE1MDAJCTB4RQorLyogQ0hBUkdFUlVTQl9DSU5MSU1JVCAqLworI2RlZmluZSBDSEFSR0VSVVNCX0NJTl9MSU1JVF8xMDAJMHgxCisjZGVmaW5lIENIQVJHRVJVU0JfQ0lOX0xJTUlUXzMwMAkweDUKKyNkZWZpbmUgQ0hBUkdFUlVTQl9DSU5fTElNSVRfNTAwCTB4OQorI2RlZmluZSBDSEFSR0VSVVNCX0NJTl9MSU1JVF9OT05FCTB4RgorLyogQ09OVFJPTExFUl9JTlRfTUFTSyAqLworI2RlZmluZSBNVkFDX0ZBVUxUCQkoMSA8PCA2KQorI2RlZmluZSBNQUNfRU9DCQkJKDEgPDwgNSkKKyNkZWZpbmUgTUJBVF9SRU1PVkVECQkoMSA8PCA0KQorI2RlZmluZSBNRkFVTFRfV0RHCQkoMSA8PCAzKQorI2RlZmluZSBNQkFUX1RFTVAJCSgxIDw8IDIpCisjZGVmaW5lIE1WQlVTX0RFVAkJKDEgPDwgMSkKKyNkZWZpbmUgTVZBQ19ERVQJCSgxIDw8IDApCisvKiBDSEFSR0VSVVNCX0lOVF9NQVNLICovCisjZGVmaW5lIE1BU0tfTUNVUlJFTlRfVEVSTQkJKDEgPDwgMykKKyNkZWZpbmUgTUFTS19NQ0hBUkdFUlVTQl9TVEFUCQkoMSA8PCAyKQorI2RlZmluZSBNQVNLX01DSEFSR0VSVVNCX1RITVJFRwkJKDEgPDwgMSkKKyNkZWZpbmUgTUFTS19NQ0hBUkdFUlVTQl9GQVVMVAkJKDEgPDwgMCkKKy8qIENIQVJHRVJVU0JfVk9SRUcgKi8KKyNkZWZpbmUgQ0hBUkdFUlVTQl9WT1JFR18zUDUyCQkweDAxCisjZGVmaW5lIENIQVJHRVJVU0JfVk9SRUdfNFAwCQkweDE5CisjZGVmaW5lIENIQVJHRVJVU0JfVk9SRUdfNFAyCQkweDIzCisjZGVmaW5lIENIQVJHRVJVU0JfVk9SRUdfNFA3NgkJMHgzRgorLyogQ0hBUkdFUlVTQl9DVFJMMiAqLworI2RlZmluZSBDSEFSR0VSVVNCX0NUUkwyX1ZJVEVSTV81MAkoMCA8PCA1KQorI2RlZmluZSBDSEFSR0VSVVNCX0NUUkwyX1ZJVEVSTV8xMDAJKDEgPDwgNSkKKyNkZWZpbmUgQ0hBUkdFUlVTQl9DVFJMMl9WSVRFUk1fMTUwCSgyIDw8IDUpCisvKiBDT05UUk9MTEVSX0NUUkwxICovCisjZGVmaW5lIENPTlRST0xMRVJfQ1RSTDFfRU5fQ0hBUkdFUgkoMSA8PCA0KQorI2RlZmluZSBDT05UUk9MTEVSX0NUUkwxX1NFTF9DSEFSR0VSCSgxIDw8IDMpCisKKyNkZWZpbmUgVlVTQl9DRkdfU1RBVEUJCTB4QTIKKyNkZWZpbmUgTUlTQzIJCQkweEU1CisKK3ZvaWQgdHdsNjAzMF9pbml0X2JhdHRlcnlfY2hhcmdpbmcodm9pZCk7Cit2b2lkIHR3bDYwMzBfdXNiX2RldmljZV9zZXR0aW5ncyh2b2lkKTsKZGlmZiAtLWdpdCBhL2xpYi9kaXNwbGF5X29wdGlvbnMuYyBiL2xpYi9kaXNwbGF5X29wdGlvbnMuYwppbmRleCBhNzExNDI1Li4yMDMxOWU2IDEwMDY0NAotLS0gYS9saWIvZGlzcGxheV9vcHRpb25zLmMKKysrIGIvbGliL2Rpc3BsYXlfb3B0aW9ucy5jCkBAIC0xMDEsNyArMTAxLDcgQEAKICNkZWZpbmUgREVGQVVMVF9MSU5FX0xFTkdUSF9CWVRFUyAoMTYpCiBpbnQgcHJpbnRfYnVmZmVyICh1bG9uZyBhZGRyLCB2b2lkKiBkYXRhLCB1aW50IHdpZHRoLCB1aW50IGNvdW50LCB1aW50IGxpbmVsZW4pCiB7Ci0JdWludDhfdCBsaW5lYnVmW01BWF9MSU5FX0xFTkdUSF9CWVRFU107CisJdWludDhfdCBsaW5lYnVmW01BWF9MSU5FX0xFTkdUSF9CWVRFUyArIDFdOwogCXVpbnQzMl90ICp1aXAgPSAodm9pZCopbGluZWJ1ZjsKIAl1aW50MTZfdCAqdXNwID0gKHZvaWQqKWxpbmVidWY7CiAJdWludDhfdCAqdWNwID0gKHZvaWQqKWxpbmVidWY7CkBAIC0xMjEsMjQgKzEyMSwyMyBAQAogCiAJCS8qIENvcHkgZnJvbSBtZW1vcnkgaW50byBsaW5lYnVmIGFuZCBwcmludCBoZXggdmFsdWVzICovCiAJCWZvciAoaSA9IDA7IGkgPCBsaW5lbGVuOyBpKyspIHsKLQkJCWlmICh3aWR0aCA9PSA0KSB7Ci0JCQkJdWlwW2ldID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKWRhdGE7Ci0JCQkJcHJpbnRmKCIgJTA4eCIsIHVpcFtpXSk7Ci0JCQl9IGVsc2UgaWYgKHdpZHRoID09IDIpIHsKLQkJCQl1c3BbaV0gPSAqKHZvbGF0aWxlIHVpbnQxNl90ICopZGF0YTsKLQkJCQlwcmludGYoIiAlMDR4IiwgdXNwW2ldKTsKLQkJCX0gZWxzZSB7Ci0JCQkJdWNwW2ldID0gKih2b2xhdGlsZSB1aW50OF90ICopZGF0YTsKLQkJCQlwcmludGYoIiAlMDJ4IiwgdWNwW2ldKTsKLQkJCX0KKwkJCXVpbnQzMl90IHg7CisJCQlpZiAod2lkdGggPT0gNCkKKwkJCQl4ID0gdWlwW2ldID0gKih2b2xhdGlsZSB1aW50MzJfdCAqKWRhdGE7CisJCQllbHNlIGlmICh3aWR0aCA9PSAyKQorCQkJCXggPSB1c3BbaV0gPSAqKHZvbGF0aWxlIHVpbnQxNl90ICopZGF0YTsKKwkJCWVsc2UKKwkJCQl4ID0gdWNwW2ldID0gKih2b2xhdGlsZSB1aW50OF90ICopZGF0YTsKKwkJCXByaW50ZigiICUwKngiLCB3aWR0aCAqIDIsIHgpOwogCQkJZGF0YSArPSB3aWR0aDsKIAkJfQogCiAJCS8qIFByaW50IGRhdGEgaW4gQVNDSUkgY2hhcmFjdGVycyAqLwotCQlwdXRzKCIgICAgIik7CiAJCWZvciAoaSA9IDA7IGkgPCBsaW5lbGVuICogd2lkdGg7IGkrKykKLQkJCXB1dGMoaXNwcmludCh1Y3BbaV0pICYmICh1Y3BbaV0gPCAweDgwKSA/IHVjcFtpXSA6ICcuJyk7Ci0JCXB1dGMgKCdcbicpOworCQkJaWYgKCFpc3ByaW50KHVjcFtpXSkgfHwgdWNwW2ldID49IDB4ODApCisJCQkJdWNwW2ldID0gJy4nOworCQl1Y3BbaV0gPSAnXDAnOworCQlwcmludGYoIiAgICAlc1xuIiwgdWNwKTsKIAogCQkvKiB1cGRhdGUgcmVmZXJlbmNlcyAqLwogCQlhZGRyICs9IGxpbmVsZW4gKiB3aWR0aDsKZGlmZiAtLWdpdCBhL3Bvc3QvcG9zdC5jIGIvcG9zdC9wb3N0LmMKaW5kZXggMDBlODM1My4uOGE5ZmQwZCAxMDA2NDQKLS0tIGEvcG9zdC9wb3N0LmMKKysrIGIvcG9zdC9wb3N0LmMKQEAgLTE4Nyw3ICsxODcsNyBAQAogCX0KIAogCWZvciAoaSA9IDA7IGkgPCB2YXJudW07IGkrKykgewotCQlpZiAoZ2V0ZW52X3IgKHZhcltpXSwgbGlzdCwgc2l6ZW9mIChsaXN0KSkgPD0gMCkKKwkJaWYgKGdldGVudl9mKHZhcltpXSwgbGlzdCwgc2l6ZW9mIChsaXN0KSkgPD0gMCkKIAkJCWNvbnRpbnVlOwogCiAJCWZvciAoaiA9IDA7IGogPCBwb3N0X2xpc3Rfc2l6ZTsgaisrKSB7CmRpZmYgLS1naXQgYS9zbmFwc2hvdC5jb21taXQgYi9zbmFwc2hvdC5jb21taXQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQyNjMwOQotLS0gL2Rldi9udWxsCisrKyBiL3NuYXBzaG90LmNvbW1pdApAQCAtMCwwICsxIEBACiskRm9ybWF0OiVIICAlY0QkCmRpZmYgLS1naXQgYS90b29scy9lbnYvZndfZW52LmMgYi90b29scy9lbnYvZndfZW52LmMKaW5kZXggMDRmM2JmMC4uOGZmNzA1MiAxMDA2NDQKLS0tIGEvdG9vbHMvZW52L2Z3X2Vudi5jCisrKyBiL3Rvb2xzL2Vudi9md19lbnYuYwpAQCAtMSw1ICsxLDUgQEAKIC8qCi0gKiAoQykgQ29weXJpZ2h0IDIwMDAtMjAwOAorICogKEMpIENvcHlyaWdodCAyMDAwLTIwMTAKICAqIFdvbGZnYW5nIERlbmssIERFTlggU29mdHdhcmUgRW5naW5lZXJpbmcsIHdkQGRlbnguZGUuCiAgKgogICogKEMpIENvcHlyaWdodCAyMDA4CkBAIC04OTksNyArODk5LDEwIEBACiBzdGF0aWMgaW50IGZsYXNoX2ZsYWdfb2Jzb2xldGUgKGludCBkZXYsIGludCBmZCwgb2ZmX3Qgb2Zmc2V0KQogewogCWludCByYzsKKwlzdHJ1Y3QgZXJhc2VfaW5mb191c2VyIGVyYXNlOwogCisJZXJhc2Uuc3RhcnQgID0gREVWT0ZGU0VUIChkZXYpOworCWVyYXNlLmxlbmd0aCA9IERFVkVTSVpFIChkZXYpOwogCS8qIFRoaXMgcmVsaWVzIG9uIHRoZSBmYWN0LCB0aGF0IG9ic29sZXRlX2ZsYWcgPT0gMCAqLwogCXJjID0gbHNlZWsgKGZkLCBvZmZzZXQsIFNFRUtfU0VUKTsKIAlpZiAocmMgPCAwKSB7CkBAIC05MDcsNyArOTEwLDkgQEAKIAkJCSBERVZOQU1FIChkZXYpKTsKIAkJcmV0dXJuIHJjOwogCX0KKwlpb2N0bCAoZmQsIE1FTVVOTE9DSywgJmVyYXNlKTsKIAlyYyA9IHdyaXRlIChmZCwgJm9ic29sZXRlX2ZsYWcsIHNpemVvZiAob2Jzb2xldGVfZmxhZykpOworCWlvY3RsIChmZCwgTUVNTE9DSywgJmVyYXNlKTsKIAlpZiAocmMgPCAwKQogCQlwZXJyb3IgKCJDb3VsZCBub3Qgc2V0IG9ic29sZXRlIGZsYWciKTsKIApkaWZmIC0tZ2l0IGEvdG9vbHMvanRhZ2NvbnNvbGUgYi90b29scy9qdGFnY29uc29sZQppbmRleCAyNDE5OGM4Li5kNDA0ZmFjIDEwMDc1NQotLS0gYS90b29scy9qdGFnY29uc29sZQorKysgYi90b29scy9qdGFnY29uc29sZQpAQCAtMzEsOSArMzEsOSBAQAogCXVzYWdlICJJbnZhbGlkIG51bWJlciBvZiBhcmd1bWVudHMiCiBmaQogCi10cmFwICJzdHR5IGljYW5vbiBlY2hvIGludHIgXkMiIDAgMiAzIDUgMTAgMTMgMTUKK3RyYXAgInN0dHkgaWNhbm9uIGVjaG8gb3Bvc3QgaW50ciBeQyIgMCAyIDMgNSAxMCAxMyAxNQogZWNobyAiTk9URTogdGhlIGludGVycnVwdCBzaWduYWwgKG5vcm1hbGx5IF5DKSBoYXMgYmVlbiByZW1hcHBlZCB0byBeVCIKIAotc3R0eSAtaWNhbm9uIC1lY2hvIGludHIgXlQKK3N0dHkgLWljYW5vbiAtZWNobyAtb3Bvc3QgaW50ciBeVAogbmMgJHtpcH0gJHtwb3J0fQogZXhpdCAwCg==